{"version":3,"file":"externals/ais-ux-bundle/index.min.js","mappings":"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,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAC1B,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACtF,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACtF,OAAU,IAAM,OAAU,IAC1B,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU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AAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,KACtf,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IACnf,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IACvf,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAA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A,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAGWuhb,EAAMvhb,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGWqsT,EAAarsT,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOWwhb,EAAgBxhb,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGWyhb,EAASzhb,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKW0hb,EAAmB1hb,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGWgvD,EAAOhvD,EAAO,CAAC,UCpRfo+S,EAAOp+S,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,SAGW+pC,EAAM/pC,EAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGWssT,EAAStsT,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,UAGW2hb,EAAM3hb,EAAO,CACxB,aACA,SACA,cACA,YACA,gBC9WW4hb,EAAgB73H,EAAK,6BACrB83H,EAAW93H,EAAK,yBAChB+3H,EAAc/3H,EAAK,iBACnBg4H,EAAYh4H,EAAK,gCACjBi4H,EAAYj4H,EAAK,kBACjBk4H,EAAiBl4H,EAC5B,oGAEWm4H,EAAoBn4H,EAAK,yBACzBo4H,EAAkBp4H,EAC7B,+DAEWq4H,EAAer4H,EAAK,WACpBmkV,EAAiBnkV,EAAK,4B,+LCmBnC,MAAMokV,GACK,EADLA,GAGE,EAHFA,GAOoB,EAPpBA,GAQK,EARLA,GASM,EAMN7rN,GAAY,WAChB,MAAyB,oBAAXpvb,OAAyB,KAAOA,MAChD,EAilDA,IAAAqvb,GA/gDA,SAASC,IAAgD,IAAhCtvb,EAAqBK,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAA+ub,KAC5C,MAAMjjZ,EAAwBzjB,GAAqB4ma,EAAgB5ma,GAMnE,GAJAyjB,EAAU/9B,QAAU,QAEpB+9B,EAAU2qR,QAAU,IAGjB92T,IACAA,EAAOwb,UACRxb,EAAOwb,SAASxD,WAAaijoB,KAC5Bj7oB,EAAOmxD,QAMR,OAFAhlB,EAAU46Q,aAAc,EAEjB56Q,EAGT,I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AAQ,8CAEVmogB,KAAM,CACJF,QAAS,yCACThogB,KAAM,sDACND,OAAQ,8CAGZv7J,SAAU,CACRJ,IAAK,CACH4jqB,QAAS,UACThogB,KAAM,qBACND,OAAQ,cAEVkogB,IAAK,CACHD,QAAS,oBACThogB,KAAM,gCACND,OAAQ,wBAEVmogB,KAAM,CACJF,QAAS,mBACThogB,KAAM,gCACND,OAAQ,wBAGZt7J,YAAa,CACXr9F,KAAM,QACN6mF,MAAO,CACL+5qB,QAAS,kBACThogB,KAAM,6BACND,OAAQ,uBAGZr7J,iBAAkB,CAChBN,IAAK,CACH4jqB,QAAS,+BACThogB,KAAM,0CACND,OAAQ,mCAEVkogB,IAAK,CACHD,QAAS,yCACThogB,KAAM,qDACND,OAAQ,6CAEVmogB,KAAM,CACJF,QAAS,wCACThogB,KAAM,qDACND,OAAQ,6CAGZp7J,SAAU,CACRP,IAAK,CACH4jqB,QAAS,SACThogB,KAAM,oBACND,OAAQ,aAEVkogB,IAAK,CACHD,QAAS,mBACThogB,KAAM,+BACND,OAAQ,uBAEVmogB,KAAM,CACJF,QAAS,kBACThogB,KAAM,+BACND,OAAQ,uBAGZn7J,YAAa,CACXR,IAAK,CACH4jqB,QAAS,kCACThogB,KAAM,6CACND,OAAQ,sCAEVkogB,IAAK,CACHD,QAAS,4CACThogB,KAAM,wDACND,OAAQ,gDAEVmogB,KAAM,CACJF,QAAS,2CACThogB,KAAM,wDACND,OAAQ,gDAGZl7J,OAAQ,CACNT,IAAK,CACH4jqB,QAAS,SACThogB,KAAM,oBACND,OAAQ,aAEVkogB,IAAK,CACHD,QAAS,mBACThogB,KAAM,+BACND,OAAQ,uBAEVmogB,KAAM,CACJF,QAAS,kBACThogB,KAAM,+BACND,OAAQ,uBAGZj7J,MAAO,CACLV,IAAK,CACH4jqB,QAAS,MACThogB,KAAM,iBACND,OAAQ,UAEVkogB,IAAK,CACHD,QAAS,gBACThogB,KAAM,0BACND,OAAQ,oBAEVmogB,KAAM,CACJF,QAAS,mBACThogB,KAAM,0BACND,OAAQ,wBAGZh7J,YAAa,CACXX,IAAK,CACH4jqB,QAAS,oCACThogB,KAAM,+CACND,OAAQ,wCAEVkogB,IAAK,CACHD,QAAS,8CACThogB,KAAM,wDACND,OAAQ,kDAEVmogB,KAAM,CACJF,QAAS,mDACThogB,KAAM,wDACND,OAAQ,wDAGZ/6J,OAAQ,CACNZ,IAAK,CACH4jqB,QAAS,WACThogB,KAAM,sBACND,OAAQ,eAEVkogB,IAAK,CACHD,QAAS,qBACThogB,KAAM,+BACND,OAAQ,yBAEVmogB,KAAM,CACJF,QAAS,0BACThogB,KAAM,+BACND,OAAQ,+BAGZ96J,aAAc,CACZb,IAAK,CACH4jqB,QAAS,yCACThogB,KAAM,qDACND,OAAQ,6CAEVkogB,IAAK,CACHD,QAAS,oDACThogB,KAAM,8DACND,OAAQ,wDAEVmogB,KAAM,CACJF,QAAS,yDACThogB,KAAM,8DACND,OAAQ,8DAGZ76J,QAAS,CACPd,IAAK,CACH4jqB,QAAS,gBACThogB,KAAM,4BACND,OAAQ,oBAEVkogB,IAAK,CACHD,QAAS,2BACThogB,KAAM,qCACND,OAAQ,+BAEVmogB,KAAM,CACJF,QAAS,gCACThogB,KAAM,qCACND,OAAQ,qCAGZ56J,YAAa,CACXf,IAAK,CACH4jqB,QAAS,+BACThogB,KAAM,2CACND,OAAQ,mCAEVkogB,IAAK,CACHD,QAAS,0CACThogB,KAAM,oDACND,OAAQ,8CAEVmogB,KAAM,CACJF,QAAS,+CACThogB,KAAM,oDACND,OAAQ,oDAGZ36J,OAAQ,CACNhB,IAAK,CACH4jqB,QAAS,MACThogB,KAAM,kBACND,OAAQ,UAEVkogB,IAAK,CACHD,QAAS,iBACThogB,KAAM,2BACND,OAAQ,qBAEVmogB,KAAM,CACJF,QAAS,sBACThogB,KAAM,2BACND,OAAQ,2BAGZ16J,WAAY,CACVjB,IAAK,CACH4jqB,QAAS,uBACThogB,KAAM,mCACND,OAAQ,2BAEVkogB,IAAK,CACHD,QAAS,kCACThogB,KAAM,4CACND,OAAQ,sCAEVmogB,KAAM,CACJF,QAAS,uCACThogB,KAAM,4CACND,OAAQ,4CAGZz6J,aAAc,CACZlB,IAAK,CACH4jq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vBluyB,UAAWipC,aAAAA,sBAAsBob,KAElC,CACCtkD,KAAM,+BACNrW,MAAO4izB,cAAcuB,EAAmBvljB,YACxCtoP,UAAWipC,aAAAA,sBAAsBob,KAElC,CACCtkD,KAAM,2BACNrW,OAAO,EACPsW,UAAWipC,aAAAA,sBAAsBob,KAElC,CACCtkD,KAAM,0BACNrW,MAAOskzB,EACPhuyB,UAAWipC,aAAAA,sBAAsBob,MAInCupvB,EAAgB1/yB,KACf,CACC6R,KAAM,+BACNrW,MAAOwjzB,mBACPltyB,UAAWipC,aAAAA,sBAAsBob,KAElC,CACCtkD,KAAM,sBACNrW,MAAO,KACPsW,UAAWipC,aAAAA,sBAAsBob,KAElC,CACCtkD,KAAM,2BACNrW,OAAO,EACPsW,UAAWipC,aAAAA,sBAAsBob,KAIrC,KAAO,CAEN,IAAI+1B,EAAe,GACf7Z,GAAY,EAChB,OAHkBstuB,aAAkB,EAAlBA,EAAoBv2wB,MAIrC,IAAK,QACJ8iD,EAAeuytB,qBACf,MACD,IAAK,QACJvytB,EAAesytB,oBACf,MACD,IAAK,QACL,IAAK,QACL,IAAK,QACJtytB,EAAewytB,mBACf,MACD,QACCxytB,EAAeqytB,oBACflsuB,GAAY,EAGdqtuB,EAAgB1/yB,KACf,CACC6R,KAAM,+BACNrW,MAAO0wF,EACPp6E,UAAWipC,aAAAA,sBAAsBob,KAElC,CACCtkD,KAAM,sBACNrW,MAAO,KACPsW,UAAWipC,aAAAA,sBAAsBob,KAElC,CACCtkD,KAAM,2BACNrW,MAAO62E,EACPvgE,UAAWipC,aAAAA,sBAAsBob,KAGpC,CAEAllD,EAAYyuyB,IAGAO,8BAAgCA,CAC5C73qB,EACA9zH,EACArD,EACAivyB,KAGA,IAAIR,EAAkB,CACrB,CACC7tyB,KAAM,sBACNrW,MAAO,KACPsW,UAAWipC,aAAAA,sBAAsBob,KAElC,CACCtkD,KAAM,+BACNrW,OAAO,EACPsW,UAAWipC,aAAAA,sBAAsBob,KAElC,CACCtkD,KAAM,2BACNrW,OAAO,EACPsW,UAAWipC,aAAAA,sBAAsBob,MAGnC,GAAKiyE,EAAM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AMtgK,KAAKuxT,WACdv1T,KAAKo41B,mBAAoB,EACzBp41B,KAAKmY,SAASm/0B,kBAAkBE,eAElC,CACD,CAGCx31B,KAAKo41B,mBACLp41B,KAAKi41B,mBAAqBj41B,KAAKg41B,UAAU751B,OAEzC6B,KAAKo51B,oBAELp51B,KAAKq51B,sBAEP,GAAC,CAAA/31B,IAAA,uBAAAjC,MAED,YACMW,KAAKm41B,cAAgBn41B,KAAKi41B,kBAAoBj41B,KAAKg41B,UAAU751B,SACjE6B,KAAKm41B,cAAe,EACpBn41B,KAAKs51B,aAEP,GAAC,CAAAh41B,IAAA,aAAAjC,MAED,WAEC,GAAIW,KAAKi41B,mBAAqBj41B,KAAKg41B,UAAU751B,OAK5C,OAJA6B,KAAKm41B,cAAe,OAChBn41B,KAAKo41B,mBACRp41B,KAAKo51B,qBAOHp51B,KAAKu41B,kBAAoBv41B,KAAKoy1B,mBACjCpy1B,KAAKu51B,qBAKNv51B,KAAKtB,QAAUsB,KAAKg41B,UAAUh41B,KAAKi41B,mBACnCj41B,KAAKi41B,oBAELj41B,KAAK8U,YAAY,KAAM,CACtBa,UAAW,MACXD,KAAM,aAAa1V,KAAK831B,wCACxBz41B,MAAOW,KAAKtB,OACZkX,cAAc,KAIf5V,KAAKw51B,uBAELrl0B,WAAW,IAAMn0B,KAAKs51B,aAAct51B,KAAKw41B,cAC1C,GAAC,CAAAl31B,IAAA,oBAAAjC,MAED,WACCW,KAAKm41B,cAAe,EACpBn41B,KAAKsu1B,oBAAqB,EAEtBtu1B,KAAKu41B,kBAERv41B,KAAKi51B,kBAGNj51B,KAAK8U,YAAY,KAAM,CACtBa,UAAW,MACXD,KAAM,aAAa1V,KAAK831B,6CACxBz41B,OAAO,EACPuW,cAAc,KAIf5V,KAAKw51B,sBACN,GAAC,CAAAl41B,IAAA,oBAAAjC,MAED,WAMC,GAJAW,KAAKm41B,cAAe,EACpBn41B,KAAKi41B,kBAAoBj41B,KAAKg41B,UAAU751B,OACxC6B,KAAKsu1B,oBAAqB,EAEtBtu1B,KAAKu41B,iBAAkB,CAC1B,MAAMkB,EAAez51B,KAAKs41B,YACxBhr1B,MAAM,EAAGtN,KAAKg41B,UAAU751B,QACxB4tB,KAAK,IACP/rB,KAAKtB,OAAS+61B,CACf,MACCz51B,KAAKtB,OAASsB,KAAKg41B,UAAUjs0B,KAAK,IAGnC/rB,KAAK8U,YAAY,KAAM,CACtBa,UAAW,MACXD,KAAM,aAAa1V,KAAK831B,wCACxBz41B,MAAOW,KAAKtB,OACZkX,cAAc,KAGf5V,KAAKo51B,mBACN,GAAC,CAAA931B,IAAA,uBAAAjC,MAED,WAEC,GAAIW,KAAKoy1B,mBAAoB,OAC7B,IAAKpy1B,KAAK0mzB,YAAa,OAMF1mzB,KAAK0mzB,YAAY7gyB,aACjB7lB,KAAK0mzB,YAAYvmyB,aACc,IAGnDngB,KAAKoy1B,oBAAqB,EAC1Bpy1B,KAAK8U,YAAY,KAAM,CACtBa,UAAW,MACXD,KAAM,aAAa1V,KAAK831B,6CACxBz41B,OAAO,EACPuW,cAAc,KAGjB,GAAC,CAAAtU,IAAA,kBAAAjC,MAED,WACC,IAAKW,KAAKs41B,YAAYn61B,OAAQ,OAG9B,MAAMs71B,EAAez51B,KAAKs41B,YACxBhr1B,MAAM,EAAGtN,KAAKg41B,UAAU751B,QACxB4tB,KAAK,IACP/rB,KAAKtB,OAAS+61B,EAEdz51B,KAAK8U,YAAY,KAAM,CACtBa,UAAW,MACXD,KAAM,aAAa1V,KAAK831B,wCACxBz41B,MAAOW,KAAKtB,OACZkX,cAAc,IAEhB,GAAC,CAAAtU,IAAA,sBAAAjC,MAED,SAAoBq61B,GAAc,IAAAC,EACjC,MAAMx4zB,GACe,QAApBw4zB,EAAA351B,KAAKyU,MAAMU,iBAAS,IAAAwk1B,GAAgC,QAAhCA,EAApBA,EAAuB351B,KAAK831B,gCAAwB,IAAA6B,OAAA,EAApDA,EACGtH,yBAA0B,CAAC,EACzBuH,EAAMlv1B,kBAAA,GAAQy2B,EAAau4zB,GAOjC,OANA151B,KAAK8U,YAAY,KAAM,CACtBa,UAAW,QACXD,KAAM,aAAa1V,KAAK831B,iDACxBz41B,MAAOu61B,EACPhk1B,cAAc,KAERgk1B,CACR,GAAC,CAAAt41B,IAAA,gBAAAjC,MAED,SAAcihB,GAEbtgB,KAAK0mzB,YAAcpmyB,EACnBtgB,KAAK8U,YAAY,KAAM,CACtBa,UAAW,MACXD,KAAM,UACNrW,MAAOihB,EACP1K,cAAc,IAEhB,GAAC,CAAAtU,IAAA,qBAAAjC,MAED,SAAmBm+D,GAElB,OAAOA,EAAK78D,MADE,oBACc,EAC7B,IAAC,CA/R6B,GCG/B,MAAQwT,oBAAmB,uCAAEF,2BAA0BA,+CAAKK,aAAAA,YAE5D,SAASul1B,mBAAmB77xB,GAC3B,IAAK,MAAM7kB,KAAOr7C,OAAOwwB,OAAO0vC,GAAW,KAAA87xB,EAC1C,MAAMC,EAAkB5gzB,SAAS,QAAN2gzB,EAAH3gzB,EAAKn1C,YAAI,IAAA811B,OAAA,EAATA,EAAWC,gBACnC,GAAIA,EAAiB,OAAOA,CAC7B,CACA,OAAO,IACR,CAEA,MAAMC,kCAAoCzv1B,IAQpC,IARqC,SAC1C4N,EAAQ,YACRrD,EAAW,MACXL,EAAK,SACLupD,EAAQ,wBACR85xB,EAAuB,iCACvBC,EAAgC,iBAChCkC,GACA1v1B,EACA,MAAM4n1B,EAAqB,IAAI0F,mBAAmB,CACjD1/0B,WACArD,cACAL,QACAqj1B,0BACAC,mCACAkC,qBAKD,OAFA9H,EAAmB+H,iBAAiBl8xB,GAE7B,CACNroD,UAAW,MACXD,KAAM,aAAaoi1B,uBACnBz41B,MAAO8y1B,IAII2F,wBAA0B,YAEvC,oBACCl71B,KAAMk71B,wBACN7h1B,aAAc,CACbk80B,mBAAoB,KACpBD,cAAe,GACf5D,oBAAoB,EACpB5gzB,UAAU,EACV6qzB,kBAAkB,EAClBnG,oBAAoB,EACpB2H,gBAAiB,KACjBrpK,UAAW,CAAC,EACZ4hK,yBAA0B,GAC1BtvJ,gBAAiB,IAElB7srB,eAAgB,CACf,CAAChC,wCAAmB2B,GAAiD,IAA/C,SAAEqC,EAAQ,YAAErD,EAAW,WAAErY,EAAU,OAAEsZ,GAAQD,EAClE,MACCE,SAAS,QAAE3Q,EAAU,CAAC,IACnB0Q,GACE,iCACLgi1B,EAAmC,GAAE,iBACrCkC,GAAmB,GAChB501B,EAEJ,KAAKyhC,EAAAA,OAAAA,SAAQrqC,EAAWuhE,UAAW,CAClClpD,EAAYsB,IAAe,IAAd,MAAE3B,GAAO2B,EACrB,OAAO4j1B,kCAAkC,CACxC7h1B,WACArD,cACAL,QACAupD,SAAUvhE,EAAWuhE,SACrB85xB,wBACAC,mCACAkC,uBAIF,MAAMF,EAAkBF,mBAAmBp91B,EAAWuhE,UAClD+7xB,GACHjl1B,EAAY,KAAM,CACjBa,UAAW,MACXD,KAAM,aAAaoi1B,0CACnBz41B,MAAO061B,EACPnk1B,cAAc,IAGjB,CACD,EAEA,CAAC3B,+CAA0BqC,GAA4C,IAA1C,SAAE6B,EAAQ,OAAEpC,EAAM,YAAEjB,EAAW,MAAEL,GAAO6B,EACpE,MACCN,SAAS,KAAEpZ,EAAI,MAAEyC,EAAK,cAAEg3C,EAAa,QAAEhxC,IACpC0Q,GACE,iCACLgi1B,EAAgC,iBAChCkC,GAAmB,GAChB501B,EAEJ,GACU,aAATzI,KACCkqC,EAAAA,OAAAA,SAAQznC,MACRwjD,EAAAA,OAAAA,SAAQxM,EAAeh3C,GACvB,KAAAy1B,EACD,MAAMql0B,EAAqBN,mBAAmBx61B,GACxC+61B,EACU,QADQtl0B,EACvBrgB,EAAMU,iBAAS,IAAA2f,GAA2B,QAA3BA,EAAfA,EAAkBgj0B,gCAAwB,IAAAhj0B,OAAA,EAA1CA,EAA4Cil0B,gBAE7C,GAAII,GAAsBA,IAAuBC,EAEhDtl1B,EAAY,IAAM,CACjB,CACCa,UAAW,MACXD,KAAM,aAAaoi1B,6CACnBz41B,MAAO,MAER,CACCsW,UAAW,MACXD,KAAM,aAAaoi1B,wCACnBz41B,MAAO,IAER,CACCsW,UAAW,MACXD,KAAM,aAAaoi1B,6CACnBz41B,OAAO,GAER,CACCsW,UAAW,MACXD,KAAM,aAAaoi1B,mCACnBz41B,OAAO,GAER,CACCsW,UAAW,MACXD,KAAM,aAAaoi1B,oCACnBz41B,MAAO,IAER,CACCsW,UAAW,MACXD,KAAM,aAAaoi1B,2CACnBz41B,OAAO,GAER,CACCsW,UAAW,MACXD,KAAM,aAAaoi1B,6CACnBz41B,OAAO,GAER,CACCsW,UAAW,MACXD,KAAM,aAAaoi1B,0CACnBz41B,MAAO861B,EACPvk1B,cAAc,KAKhBd,EAAY6B,IAAA,IAAC,MAAElC,GAAOkC,EAAA,OACrBqj1B,kCAAkC,CACjC7h1B,WACArD,cACAL,QACAupD,SAAU3+D,EACVy41B,wBACAC,mCACAkC,2BAGI,KAAA7j0B,EAEN,MAAMy7S,EACU,QADDz7S,EACd3hB,EAAMU,iBAAS,IAAAihB,GAA2B,QAA3BA,EAAfA,EAAkB0h0B,gCAAwB,IAAA1h0B,OAAA,EAA1CA,EAA4C+7zB,mBACzCtghB,GAEHA,EAAUqohB,iBAAiB761B,GAEvBA,EAAMu51B,eACT/mhB,EAAUwohB,oBAAoBh71B,EAAMu51B,gBAGrC9j1B,EAAY8B,IAAA,IAAC,MAAEnC,GAAOmC,EAAA,OACrBoj1B,kCAAkC,CACjC7h1B,WACArD,cACAL,QACAupD,SAAU3+D,EACVy41B,wBACAC,mCACAkC,sBAIJ,CACD,CACD,EAEA,CAAC3C,kBAAkBE,eAAajw0B,GAAmB,IAAjB,YAAEzS,GAAayS,EAEhDzS,EAAY,KAAM,CACjBa,UAAW,MACXD,KAAM,aAAaoi1B,2CACnBz41B,OAAO,IAET,EAEA,CAAC4gqB,2CAAuB/tnB,GAA+B,IAA7B,SAAE/5B,EAAQ,OAAEpC,EAAM,MAAEtB,GAAOy9B,EAEpD,MACCl8B,SAAS,SAAEm9qB,IACRp9qB,GAEHtZ,YAAY,MAAEs9Q,IACXtlQ,EACa,sBAAb0+qB,EACHh7qB,EAASm/0B,kBAAkBI,qBACJ,sBAAbvkK,IACVh7qB,EAASm/0B,kBAAkBK,qBAC3Bx/0B,EAASiy0B,yBAA0B,CAClCr00B,OAAQ,CACP+xE,cAAe,CAAC,GAEjBiyL,UAGH,EAEA,CAACu9kB,kBAAkBI,qBAAmBvlzB,GAAmB,IAAjB,YAAEr9B,GAAaq9B,EACtDr9B,EAAY,KAAM,CACjBa,UAAW,MACXD,KAAM,aAAaoi1B,mCACnBz41B,OAAO,IAET,EAEA,CAACi41B,kBAAkBK,qBAAmBnlzB,GAAmB,IAAjB,YAAE19B,GAAa09B,EACtD19B,EAAY,KAAM,CACjBa,UAAW,MACXD,KAAM,aAAaoi1B,mCACnBz41B,OAAO,IAET,KCtLD8U,oBAAmB,uCACnBF,2BAA0B,8CAC1B2D,yBAAwB,wCACxB1D,wBAAuBA,wCACpBI,aAAAA,YAMEgm1B,YAAc,WAAgC,MAAK,oHAAzBv41B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,0BAYhC,EAEGs/b,UAAY,0OAeZk5Z,WAAa,4GASbC,UAAY,kEAKZC,wBAA0B,oGAI1BF,mBACAC,sBAIOE,gBAAkB,s9BAIrBJ,YAAY,8CAIlBj5Z,gBACAo5Z,8BAGEE,qBAAuB,CAC5Bt2rB,KAAAA,CAAMvlJ,GACL,MAAM,QAAEkyM,GAAYlyM,GACd,KAAEpS,GAASskN,EAAQ,GAsBzB,OAAAtmN,kBAAA,GACIoU,EAAO,CACVkyM,QAAS,CAAAtmN,kBAAA,GAEJsmN,EAAQ,GAAE,CACbtkN,KAAM,CACLgu1B,gBAAehw1B,kBAAA,GAEXgC,EAAK,GAAE,CACV2xpB,aA9BgB,CACpB,QACA,OACA,UACA,QACA,aACA,QACA,SACA,kBACA,cACA,oBACA,gBACA,kBACA,aACA,oBACA,SACA,4BACA,WACA,+BACA,YAaG3xpB,EAAK,GACLA,EAAK,GACLA,EAAK,GAAEhC,kBAAA,GAEHgC,EAAK,GAAE,CACVqJ,OAAMrL,kBAAA,GACFgC,EAAK,GAAGqJ,OAAM,CACjBC,QAAOtL,kBAAA,GACHgC,EAAK,GAAGqJ,OAAOC,kBAQ1B,GAOD,SAAS4k1B,yBAAyBhqK,EAAciqK,GAAW,IAAAC,EACrDD,KAAa/zzB,EAAAA,OAAAA,SAAQ8ppB,SAAwB,QAAZkqK,EAAZlqK,EAAc6/J,kBAAU,IAAAqK,OAAA,EAAxBA,EAA0BlmxB,UACpDg8mB,EAAa6/J,WAAW77wB,QAAQv/D,QAAQU,IACnCA,SAAAA,EAAQ+xE,gBAAkB/xE,EAAO+xE,cAAc1/C,MAClDryB,EAAO+xE,cAAc1/C,IAAMyyzB,IAG9B,CAEA,uDACC,CAAC18I,4BAAqB,CACrBnmsB,OAAQs80B,oBACRrv0B,iBAAiB,GAElB,CAACmwvB,mCAA4B,CAC5Bp9vB,OAAQ080B,oBACRzv0B,iBAAiB,GAElB,CAACoj0B,qBAAsB,CACtBrw0B,OAAQ080B,oBACRzv0B,iBAAiB,GAElB,CAACg7oB,iCAA0B,CAC1BjopB,OAAQg90B,qBACR/v0B,iBAAiB,GAElB,CAACi7oB,mCAA4B,CAC5BlopB,OAAQ+L,IACP,MAAM,GAAE1J,IAAOhW,EAAAA,OAAAA,KAAI0f,EAAW,wBAAyB,IACjD5L,GAAW9T,EAAAA,OAAAA,KAAI0f,EAAW,YACtB,YAAN1J,GACHlC,EAASmy0B,wBAAyB,CACjCn3J,UAAU9urB,EAAAA,OAAAA,KAAI0f,EAAW,0BAA2B,IACpD1kB,OAAOgF,EAAAA,OAAAA,KAAI0f,EAAW,2BAIzBkB,iBAAiB,GAElB,CAACql0B,yBAA0B,CAC1Bty0B,OAAQk80B,wBACRjv0B,iBAAiB,GAElB,CAACsj0B,sBAAuB,CACvBvw0B,OAAQo80B,oBACRnv0B,iBAAiB,GAElB,CAACwj0B,4BAA6B,CAC7Bzw0B,OAAQk90B,sBACRjw0B,iBAAiB,GAElB,CAAC9Q,wCAAsB,CACtB6D,OAAQ870B,yBACR7u0B,iBAAiB,GAElB,CAACrN,yCAA2B,CAC3BI,OAAQi80B,4BACRhv0B,iBAAiB,GAElB,CAAChR,+CAA6B,CAC7B+D,OAAQs2zB,uCACRrpzB,iBAAiB,GAElB,CAACuj0B,mBAAoB,CACpBxw0B,OAAQi+0B,mBACRhx0B,iBAAiB,GAElB,CAACk7oB,+BAAwB,CACxBnopB,OAAQs80B,oBACRrv0B,iBAAiB,GAElB,CAAC0gyB,4BAAqB,CACrB3tyB,OAAQi90B,yBACRhw0B,iBAAiB,GAElB,CAACik0B,iBAAex+0B,kBAAA,GACZus1B,gBAAe,CAClBp2K,aAAc,CAAC85K,sBACf110B,iBAAiB,IAElB,CAACkk0B,gCAAiC,CACjCnx0B,OAAQs+0B,eACRrx0B,iBAAiB,GAElB,CAACmk0B,kCAAmC,CACnCpx0B,OAAQo90B,wBACRnw0B,iBAAiB,GAElB,CAACok0B,+BAAgC,CAChCrx0B,OAAQu+0B,cACRtx0B,iBAAiB,GAElB,CAACqk0B,wBAAsB5+0B,kBAAA,GACnBys1B,sBAAqB,CACxBly0B,iBAAiB,IAElB,CAACsk0B,gCAAiC,CACjCvx0B,OAAQs+0B,eACRrx0B,iBAAiB,GAElB,CAACuk0B,gCAAiC,CACjCxx0B,OAAQw+0B,uBACRvx0B,iBAAiB,GAElB,CAACwk0B,8BAA+B,CAC/Bzx0B,OAAQu+0B,cACRtx0B,iBAAiB,GAElB,CAACyk0B,uBAAqBh/0B,kBAAA,GAClB0s1B,mBAAkB,CACrBny0B,iBAAiB,IAElB,CAAC0k0B,+BAAgC,CAChC3x0B,OAAQs+0B,eACRrx0B,iBAAiB,GAElB,CAAC2k0B,+BAAgC,CAChC5x0B,OAAQ8+0B,2BACR7x0B,iBAAiB,GAElB,CAAC4k0B,6BAA8B,CAC9B7x0B,OAAQu+0B,cACRtx0B,iBAAiB,GAElB,CAAC6k0B,oBAAkBp/0B,kBAAA,GACf2s1B,uBAAsB,CACzBpy0B,iBAAiB,IAElB,CAAC8k0B,4BAA6B,CAC7B/x0B,OAAQs+0B,eACRrx0B,iBAAiB,GAElB,CAAC+k0B,4BAA6B,CAC7Bhy0B,OAAQg/0B,wBACR/x0B,iBAAiB,GAElB,CAACgl0B,0BAA2B,CAC3Bjy0B,OAAQu+0B,cACRtx0B,iBAAiB,GAElB,CAACol0B,oBAAqB,CACrBry0B,OAAQ+L,IACP,MAAM,GAAE1J,IAAOhW,EAAAA,OAAAA,KAAI0f,EAAW,wBAAyB,MAOzD,CAACwm0B,kBAAmB,CACnBvy0B,OAAQw80B,yBAET,CAACtg1B,wCAAuB3J,GAA0B,IAAAww1B,EAAAC,EAAA,IAAxB,MAAEvm1B,EAAK,YAAEK,GAAavK,EAC/C,MAAM,WACL9N,EAAU,UACV0Y,EAAS,QACT0urB,EAAO,iCACPI,GACGxvrB,EACJ,IAAKovrB,EAAS,OAEd,MAAM,SACL7loB,EAAQ,UACR0ynB,EAAS,OACTqB,EAAM,eACNsS,EAAc,YACdlrB,GACG18qB,GACE,cAAEm81B,GAAkB56xB,GAAY,CAAC,EACjCq0xB,EACLl90B,SAAoC,QAA3B4l1B,EAAT5l1B,EAAY2i1B,gCAAwB,IAAAiD,OAAA,EAApCA,EAAsC1I,uBACjC/D,EACLn50B,SAAoC,QAA3B6l1B,EAAT7l1B,EAAY2i1B,gCAAwB,IAAAkD,OAAA,EAApCA,EAAsC1M,mBAGjC3qJ,EACL7R,cAAcC,MAAYjrpB,EAAAA,OAAAA,SAAQ4ppB,KAAc5ppB,EAAAA,OAAAA,SAAQk3B,GACnDi9xB,EAAsBt3J,EACzBjT,GACAkoK,aAAa,EAAbA,EAAeloK,YAAa,CAAC,EAC1BwqK,EAAkBv3J,EACrBM,EACAouJ,EACH,KAAIvrzB,EAAAA,OAAAA,SAAQm0zB,MACRn0zB,EAAAA,OAAAA,SAAQo0zB,KAGPv3J,GAAiC2qJ,KAGtCzqJ,EACErmrB,iBACA,gJAEAnI,QAAQC,IACR,MAAM47oB,EAAQ57oB,EAAGgM,UAAU,GACrB3d,EAAU7F,OAAO4F,KAAKw31B,GAAiB950B,KAC5C7K,IAAC,IAAA4k1B,EAAAC,EAAA,OACkB,QAAlBD,EAAAD,EAAgB3k1B,UAAE,IAAA4k1B,OAAA,EAAlBA,EAAoB1pK,iBAAkBvgC,IACpB,QAAlBkqM,EAAAF,EAAgB3k1B,UAAE,IAAA6k1B,OAAA,EAAlBA,EAAoBrqK,UAAW7/B,IAEjC,IAAKvtpB,EAAS,OACd,MAAM031B,EAAWH,EAAgBv31B,IAE3B,YAAEktrB,EAAW,OAAEl6pB,EAAM,eAAEm5zB,GAAmBuL,EAC1CC,EAAap+0B,SAASC,cAAc,oBASxC,IAAAo+0B,EAJF,GAJAD,EAAW7x1B,MAAQktB,EACnB2k0B,EAAWniL,YAAcA,EAIxB0X,IAAgBpC,eAAeC,IAC/BmC,IAAgBpC,eAAeE,mBAC/BkC,IAAgBpC,eAAeG,WAE/B0sK,EAAWnM,WAAat+J,EACxByqK,EAAWt31B,KAEV,QAFcu31B,EAAGN,EACjBxsK,eAAeC,WACf,IAAA6sK,OAAA,EAFiBA,EAEf7qK,UAAUtvqB,KACZyL,IAAKA,aAAC,EAADA,EAAG4kqB,iBAAkBvgC,IAASrkoB,aAAC,EAADA,EAAGkkqB,UAAW7/B,QAE5C,GAAI2/B,IAAgBpC,eAAeI,QAAS,KAAA2sK,EAClDF,EAAWnM,WAAa1gK,eAAeI,QACvCysK,EAAWxL,eAAiBA,EAC5BwL,EAAWj3J,eAAiBA,EAC5Bi3J,EAAWt31B,KAEV,QAFcw31B,EAAGP,EACjBxsK,eAAeI,gBACf,IAAA2sK,OAAA,EAFiBA,EAEf9qK,UAAUtvqB,KACZyL,IAAC,IAAA4u0B,EAAA,OAAgB,QAAZA,EAAA5u0B,EAAE4j0B,kBAAU,IAAAgL,GAAO,QAAPA,EAAZA,EAAc1hlB,aAAK,IAAA0hlB,OAAA,EAAnBA,EAAsB,qBAAsBvqM,IAE7CioB,GACJyhL,yBAAyBU,EAAWt31B,KAAMq31B,EAASjzzB,IAErD,MAAO,GAAIyopB,IAAgBpC,eAAeK,OAAQ,KAAA4sK,EACjDJ,EAAWnM,WAAa1gK,eAAeK,OACvCwsK,EAAWt31B,KAEV,QAFc031B,EAAGT,EACjBxsK,eAAeK,eACf,IAAA4sK,OAAA,EAFiBA,EAEfhrK,UAAUtvqB,KAAKyL,IAAC,IAAA8u0B,EAAA,OAAgB,QAAZA,EAAA9u0B,EAAE4j0B,kBAAU,IAAAkL,GAAO,QAAPA,EAAZA,EAAc5hlB,aAAK,IAAA4hlB,OAAA,EAAnBA,EAAqB5qK,UAAW7/B,GACxD,MAAO,GAAI2/B,IAAgBpC,eAAeO,MAAO,KAAA4sK,EAChDN,EAAWnM,WAAa1gK,eAAeO,MACvCssK,EAAWt31B,KAEV,QAFc431B,EAAGX,EACjBxsK,eAAeO,cACf,IAAA4sK,OAAA,EAFiBA,EAEflrK,UAAUtvqB,KACZyL,IAAC,IAAAgv0B,EAAA,OAAgB,QAAZA,EAAAhv0B,EAAE4j0B,kBAAU,IAAAoL,GAAO,QAAPA,EAAZA,EAAc9hlB,aAAK,IAAA8hlB,OAAA,EAAnBA,EAAsB,qBAAsB3qM,GAEnD,MAAO,GAAI2/B,IAAgBpC,eAAeM,GAAI,KAAA+sK,EAE7CR,EAAWnM,WAAa1gK,eAAeM,GACvCusK,EAAWt31B,KAEV,QAFc831B,EAAGb,EACjBxsK,eAAeM,WACf,IAAA+sK,OAAA,EAFiBA,EAEfprK,UAAUtvqB,KAAKyL,IAAC,IAAAkv0B,EAAA,OAAgB,QAAZA,EAAAlv0B,EAAE4j0B,kBAAU,IAAAsL,GAAO,QAAPA,EAAZA,EAAchilB,aAAK,IAAAgilB,OAAA,EAAnBA,EAAqBhrK,UAAW7/B,GACxD,MAAO,GAAI2/B,IAAgBpC,eAAeQ,MAAO,KAAA+sK,EAChDV,EAAWnM,WAAa1gK,eAAeQ,MACvCqsK,EAAWt31B,KAEV,QAFcg41B,EAAGf,EACjBxsK,eAAeQ,cACf,IAAA+sK,OAAA,EAFiBA,EAEftrK,UAAUtvqB,KAAKyL,IAAC,IAAAov0B,EAAA,OAAgB,QAAZA,EAAApv0B,EAAE4j0B,kBAAU,IAAAwL,GAAO,QAAPA,EAAZA,EAAclilB,aAAK,IAAAkilB,OAAA,EAAnBA,EAAqBlrK,UAAW7/B,GACxD,KAAO,IAAI2/B,IAAgBpC,eAAeS,mBAUzC,MAAM,IAAIxvrB,MAAM,0BAA0BmxrB,KAVmB,IAAAqrK,EAC7DZ,EAAWnM,WAAa1gK,eAAeS,mBACvCosK,EAAWt31B,KAEV,QAFck41B,EAAGjB,EACjBxsK,eAAeS,2BACf,IAAAgtK,OAAA,EAFiBA,EAEfxrK,UAAUtvqB,KACZyL,IAAC,IAAAsv0B,EAAAC,EAAA,OACY,QAAZD,EAAAtv0B,EAAE4j0B,kBAAU,IAAA0L,GAAO,QAAPA,EAAZA,EAAcpilB,aAAK,IAAAoilB,OAAA,EAAnBA,EAAsB,qBAAsBjrM,IAChC,QAAZkrM,EAAAvv0B,EAAE4j0B,kBAAU,IAAA2L,OAAA,EAAZA,EAAclrM,SAAUA,GAI3B,CAEA57oB,EAAG2iD,YAAYqjyB,KAGb33J,GAA8B,CAMjC,IAAKE,EAAS,OAKd/urB,EAAY,CACXqvrB,iCAJoBN,EAAQh+qB,aACRg+qB,EAAQ1jrB,aACuB,GAIrD,CACD,GCheYlK,0BAAe,CAC3Bom1B,yBAAyB,EACzBvQ,cAAe,EACfE,oBAAoB,EACpBC,eAAgB,GAChBgB,cAAe,GACfp6J,WAAY,KACZ4Q,gBAAgB,EAChBC,sBAAsB,EACtBwkJ,aAAc,GACdoU,WAAW,EACXC,iBAAiB,EACjBxU,YAAa,CACZnr1B,KAAM,GACNuwC,MAAO,GACPsozB,MAAO,GACPr30B,OAAQ,GACR6p0B,iBAAkB,CACjB7hI,eAAgB,CAAC,EACjBoF,kBAAmB,CAAC,IAGtBw8H,4BAA4B,EAC5BgM,0BAA2B,KAC3BnwJ,QAAS,KACTI,iCAAkC,CAAC,EACnCjB,gBAAiB,GACjBkB,wBAAyB,GACzBE,iCAAiC,EACjCD,kCAAkC,IC+CnC5hrB,EAAAA,aAAAA,qBAAoB,+BAAgC,CACnDC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,sCACJ/M,aAAcA,0BACdxZ,WAAY,CAKXm4E,QAAS,CACRlyD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAORg6Q,MAAO,CACNr3P,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAORo7G,WAAY,CACXz4F,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRimsB,mBAAoB,CACnBtjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3BkjrB,uBAAwB,CACvBrjrB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORgzE,QAAS,CACRrwD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQR8lsB,gBAAiB,CAChBnjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAO3BpjB,OAAQ,CACPijB,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAGRs21B,cAAe,CACd3z0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAGRgzqB,UAAW,CACVrwpB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRmmsB,gBAAiB,CAChBxjrB,QAAS,CACRyjrB,YAAa,GACblzoB,MAAOm3nB,YAERxnqB,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACX0psB,YAAa,CACZpmsB,KAAM,SAEPkzD,MAAO,CACNlzD,KAAM,SACN8iB,KAAM,CAACwnqB,SAAUD,WAAYE,sBAmBjCp6qB,YAAa,CACZwS,QAAS,GACTE,OAAQ,CACP4rB,MAAO,CACN,CACCzuC,KAAM,UAEP,CACCA,KAAM,aASVmu1B,cAAe,CACdxr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORit1B,gBAAiB,CAChBtq0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAGhCujpB,UAAW,CACVhuqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAGhCmijB,YAAa,CACZ5skB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAOhCghzB,2BAA4B,CAC3Bzr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR2yrB,gBAAiB,CAChBhwqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR4yrB,oBAAqB,CACpBjwqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR6yrB,kBAAmB,CAClBlwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORkmsB,mBAAoB,CACnBvjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+yrB,cAAe,CACdpwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAMRgzrB,iBAAkB,CACjBrwqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAMRgyrB,OAAQ,CACPrvqB,QAASinqB,mBAASC,UAClBhnqB,OAAQ,CACP7iB,KAAM,WAMR0L,SAAU,CACTiX,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORqmsB,iBAAkB,CACjB1jrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORqe,OAAQ,CACPsE,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR+lsB,SAAU,CACTpjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAGRi+D,SAAU,CACTt7C,QAAS,CAAC,GAKX2hrB,eAAgB,CACf3hrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQRuksB,YAAa,CACZ5hrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,aAIToW,eAAc,gDACdmN,OAAM,qBACNnO,UAAW,CACV,CACCsiB,SAAUC,IAAAA,GAEX,CACCD,SAAUgyoB,YACVpkqB,QAAS,CACRst1B,YAAa,eAAe5oK,kCAG9BpooB,wBAAAA,EACAp+B,qBAAAA,GACA,CACCkU,SAAU+k0B,mBACVn31B,QAAS,CACR0y1B,iCAAkC,QCrbtC,MAAM/00B,gBAAOzY,IAAmB,IAAlB,UAAEmmrB,GAAWnmrB,EAa1B,KAAKu8B,EAAAA,OAAAA,SAAQ4ppB,GACZ,OACCvzqB,EAAAA,kCAAAA,eAAA,YACCA,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,kCACdlhB,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,gBAAgBwupB,cAC/B6D,EAAUnlrB,IAAIuK,IAAA,IAAC,OAAEsI,GAAQtI,EAAA,OAjBZo50B,EAiB2B9w0B,GAf3CjB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,2CACdlhB,EAAAA,kCAAAA,eAAA,aACC08B,KAAKgJ,EAAAA,OAAAA,SAAQqsyB,EAAa,YAAcM,2BAAaC,2BACrDvw0B,MAAO,GACP49B,IAAK,MACLjS,IAAI,UAPUqkzB,WAuBnB,2BCpBMls0B,eAAOzY,IAAA,IAAC,QACbwoE,EAAO,OACPtzE,EAAM,YACNyQ,EAAW,SACXqkpB,EAAQ,eACRkvC,EAAc,YACd3urB,EAAW,MACXilQ,EAAK,SACLymG,EAAQ,SACRslV,EAAQ,OACR/T,EAAM,SACNtmrB,EAAQ,UACRilrB,EAAS,gBACT+rK,GACAly1B,EAAA,OACA4S,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,yBAAyB,EACzB,UAAWsxoB,KAGZp3oB,EAAAA,kCAAAA,eAAA,QAAM,qBAAgBkhB,UAAU,sBAC9Bo+zB,GAED1qK,IAAWpI,mBAASE,KACpB1sqB,EAAAA,kCAAAA,eAAA,YACCA,EAAAA,kCAAAA,eAACg8oB,iBAAM,CACNpmlB,QACiC,SAAhCgnM,EAAM,sBACHk0a,2BACA9trB,KAAKG,MAAMmL,GAAU,GAAG0hC,MAE5B04pB,gBAAiBpY,WAAW/0nB,GAC5B4qoB,QAAM,EACNwC,SAAUA,EACVtlV,SAAUA,KAEXrjW,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,qCACmB,SAAhC07O,EAAM,sBACJ0wkB,4BAA4Bh/0B,GAC5BtL,KAAKG,MAAMmL,GAAU,GAAG7O,QAI7BugB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,+BACbyI,EAAAA,OAAAA,SAAQrnC,GAAU,MAClB0d,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,6BACdlhB,EAAAA,kCAAAA,eAACmprB,gBAAM,CAAC7msB,OAAQA,EAAQ80pB,SAAUA,EAAU+uC,QAAM,MAGpDnmrB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,uCACdlhB,EAAAA,kCAAAA,eAACg8oB,iBAAM,CACNpmlB,QAASA,EACT8ynB,gBAAiBpY,WAAW/0nB,GAC5B4qoB,QAAM,EACNwC,SAAUA,EACVtlV,SAAUA,KAEXrjW,EAAAA,kCAAAA,eAACoprB,qBAAW,CACXr2rB,YAAaA,EACbqkpB,SAAUA,EACVkvC,eAAgBA,EAChB3urB,YAAaA,EACbwurB,QAAM,KAEPnmrB,EAAAA,kCAAAA,eAACu/0B,WAAM,CAACp5J,QAAM,EAACvpb,MAAOA,EAAMA,MAAO22a,UAAWA,QAOnD,yBC5EM1tqB,4CAAOA,CAACvO,EAAKlK,KAAgC,IAA9B,YAAEuK,EAAW,SAAEqD,GAAU5N,EAC7C,MACC9N,YAAY,SAAE83pB,EAAQ,SAAE5qkB,EAAQ,OAAEoomB,EAAM,SAAEtmrB,GAC1C0J,WAAW,WAAEim0B,GAAY,eACzB33I,EAAc,aACdykJ,EAAY,YACZH,GACGtz0B,GACE,WAAEhY,GAAegY,EACjB+rW,EAAW46d,EAAWuX,YAE5B,OACCx10B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,yBAAyB,EACzB,UAAWsxoB,EACX,UAAW5qkB,EACX,cAAc,GAEf5vE,KAAK,SACL2hB,SAAU,EACV,WAAUkgB,KACTzjC,EAASqy0B,kBAAiB9/0B,kBAAA,GAAOjO,KAElC,aAAYyL,IACPA,EAAM+kC,OAAS85nB,kBAAQtyQ,OAASvsZ,EAAM+kC,OAAS85nB,kBAAQC,QAC1D9+pB,EAAMgQ,iBACNC,EAASqy0B,kBAAiB9/0B,kBAAA,GAAOjO,QAInC0gB,EAAAA,kCAAAA,eAACw/0B,UAASjy1B,kBAAA,GACLjO,EAAU,CACdgnsB,eAAgBA,EAChBykJ,aAAcA,EACdH,YAAaA,EACbjz0B,YAAaA,EACb0rW,SAAUA,EACVuxU,OAAQA,EACRtmrB,SAAUA,EACVq6rB,UAAQ,OAMZ,oFCsBAvjrB,EAAAA,aAAAA,qBAAoB,oCAAqC,CACxDC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,uCACJvmB,WAAY,CAKXm4E,QAAS,CACRlyD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAORg6Q,MAAO,CACNr3P,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAORo7G,WAAY,CACXz4F,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRimsB,mBAAoB,CACnBtjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3BkjrB,uBAAwB,CACvBrjrB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORgzE,QAAS,CACRrwD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQR8lsB,gBAAiB,CAChBnjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAO3BpjB,OAAQ,CACPijB,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAGRs21B,cAAe,CACd3z0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAGRgzqB,UAAW,CACVrwpB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRmmsB,gBAAiB,CAChBxjrB,QAAS,CACRyjrB,YAAa,GACblzoB,MAAOm3nB,YAERxnqB,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACX0psB,YAAa,CACZpmsB,KAAM,SAEPkzD,MAAO,CACNlzD,KAAM,SACN8iB,KAAM,CAACwnqB,SAAUD,WAAYE,sBAmBjCp6qB,YAAa,CACZwS,QAAS,GACTE,OAAQ,CACP4rB,MAAO,CACN,CACCzuC,KAAM,UAEP,CACCA,KAAM,aASVmu1B,cAAe,CACdxr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORit1B,gBAAiB,CAChBtq0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAOhCghzB,2BAA4B,CAC3Bzr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR2yrB,gBAAiB,CAChBhwqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR4yrB,oBAAqB,CACpBjwqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR6yrB,kBAAmB,CAClBlwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORkmsB,mBAAoB,CACnBvjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+yrB,cAAe,CACdpwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAMRgzrB,iBAAkB,CACjBrwqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAMRgyrB,OAAQ,CACPrvqB,QAASinqB,mBAASC,UAClBhnqB,OAAQ,CACP7iB,KAAM,WAMR0L,SAAU,CACTiX,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAMR681B,oBAAqB,CACpBl60B,QAAS,GACTE,OAAQ,CACP6M,MAAO,CACN1Z,OAAQ,SACR610B,eAAgB,SAChBD,QAAS,SACTl2lB,MAAO,YAQV2wc,iBAAkB,CACjB1jrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORqe,OAAQ,CACPsE,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR081B,gBAAiB,CAChB/50B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR+lsB,SAAU,CACTpjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR4pF,SAAU,CACTjnE,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAIR2wrB,UAAW,CACVhuqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAGhCmijB,YAAa,CACZ5skB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,aAIjC7pB,OAAM,qBACNnO,UAAW,CACV,CACCsiB,SAAUC,IAAAA,GAEX,CACCD,SAAUgyoB,YACVpkqB,QAAS,CACRst1B,YAAa,eAAe5oK,kCAG9BpooB,wBAAAA,EACAp+B,qBAAAA,MC1aF,MAAMs50B,wBAA0B,EAC1BzyK,iBAAa,aACbC,eAAW,WAEJyyK,uBAAyBA,CAACrg2B,EAAY+jX,KAClD,MAAM,WACLrlQ,EAAU,uBACV4qlB,EAAsB,OACtBzopB,EAAM,WACNy/yB,EAAU,QACVhqxB,EAAO,mBACPiqxB,EAAkB,qBAClBC,EAAoB,QACpBroxB,EAAO,MACPmlM,EAAK,uBACLmjlB,EAAsB,uBACtBC,EAAsB,uBACtBC,EAAsB,uBACtBC,EAAsB,yBACtBC,EAAwB,yBACxBC,EAAwB,wBACxBC,EAAuB,wBACvBC,EAAuB,cACvBvP,EAAa,gBACblB,EAAkBhkK,mCAAkC,mBACpDgd,EAAkB,gBAClBH,EAAe,oBACf+mJ,EAAmB,2BACnBuB,EAA0B,SAC1B55L,EAAQ,YACR4kB,EAAW,SACX2sB,EAAQ,SACRn8mB,GACGltF,EAEJ,IAAIw2D,EAAQm3nB,iBACR+b,EAAc,GAEd+2J,GACH/2J,EAAYtisB,KAAK,CAChBspC,MAAO+vzB,EACP791B,MAAO891B,IAILC,GACHj3J,EAAYtisB,KAAK,CAChBspC,MAAOiwzB,EACP/91B,MAAOg+1B,IAILC,GACHn3J,EAAYtisB,KAAK,CAChBspC,MAAOmwzB,EACPj+1B,MAAOk+1B,IAILC,GACHr3J,EAAYtisB,KAAK,CAChBspC,MAAOqwzB,EACPn+1B,MAAOo+1B,IAILj9e,IACHvtT,EAAQo3nB,eACR8b,EAAcA,EAAY74rB,MAAM,EAAGuv1B,0BAGpC,MAAMa,GAAoBv5xB,EAAAA,OAAAA,SAAQ,CAAC64xB,EAAoBC,IAEvD,MAAO,CACNroxB,UACAmlM,QACA0ilB,gBAAiB1ilB,EAAMA,MACvB5+J,aACA4qlB,yBACAhznB,UACAtzE,OAAQ,CACPM,KAAM,SACNV,MAAOi+C,EACPR,IAAKigzB,GAEN7s1B,YAAa,CACZnQ,KAAM,UACNuuB,OAAQov0B,GAETx3J,gBAAiB,CAChBC,cACAlzoB,SAEDi7xB,gBACAlB,gBAAiB7jK,kCAAkCnmK,OAAOr1gB,SACzDosQ,EAAMA,OAEJizkB,EACA,GACHhnJ,qBACAH,kBACA+mJ,sBACAuB,6BACA55L,WACA4kB,cACA2sB,WACApT,gBAAiBpJ,cACjB3/lB,WACAgpmB,oBAAqBnJ,sBACrBuI,OAAQpI,SAASC,YCnHb5mqB,qCAAOvO,IACZ,MAAM,WACLhY,EACA0Y,WAAW,WAAEim0B,IACV3m0B,GACE,SAAEqxrB,GAAarpsB,EACf+jX,EAAW46d,EAAWuX,YACtBgL,EAAab,uBAAuBrg2B,EAAY+jX,GACtD,OAAIslV,GACI3orB,EAAAA,kCAAAA,eAAA,oCAAuCwg1B,IAEvCxg1B,EAAAA,kCAAAA,eAAA,+BAAkCwg1B,IAI3C,sECmCAp70B,EAAAA,aAAAA,qBAAoB,6BAA8B,CACjDC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,gCACJ/M,aAAc,CACbi6B,QAAS,KACTknD,KAAM,MAEP36F,WAAY,CAKX0+G,WAAY,CACXz4F,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRgmsB,uBAAwB,CACvBrjrB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRu9C,OAAQ,CACP56B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WASRg91B,WAAY,CACXr60B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORgzE,QAAS,CACRrwD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORi91B,mBAAoB,CACnBt60B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORk91B,qBAAsB,CACrBv60B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORm91B,uBAAwB,CACvBx60B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORo91B,uBAAwB,CACvBz60B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORq91B,uBAAwB,CACvB160B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORs91B,uBAAwB,CACvB360B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORu91B,yBAA0B,CACzB560B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORw91B,yBAA0B,CACzB760B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORy91B,wBAAyB,CACxB960B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR091B,wBAAyB,CACxB/60B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQR60E,QAAS,CACRlyD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAORg6Q,MAAO,CACNr3P,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORmu1B,cAAe,CACdxr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORit1B,gBAAiB,CAChBtq0B,QAASsmqB,mCACTpmqB,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAQhC64pB,mBAAoB,CACnBtjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3BgjrB,gBAAiB,CAChBnjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3B+p0B,oBAAqB,CACpBlq0B,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAO3Bsr0B,2BAA4B,CAC3Bzr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+lsB,SAAU,CACTpjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR4pF,SAAU,CACTjnE,SAAS,IAGXvN,UAAW,CACV,CACCsiB,SAAUgyoB,YACVpkqB,QAAS,CACRst1B,YAAa,0BC7UjB,MAAMiL,iBAAmBzivB,IACxBr0E,EAAAA,OAAAA,SAAQq0E,GAAcA,GAAa94F,EAAAA,iBAAAA,GAAE,uBAAwB84F,GAExD0ivB,WAAargyB,IAClB,IAAIK,WAAYC,gBAAgBN,EAAM,aAAa19C,gBACjD2pB,YAEUq0zB,qBAAuBrh2B,IAAc,IAAAsh2B,EACjD,MAAM,WACL5ivB,EAAU,QACVpoC,EAAO,YACP7iE,EAAW,QACX0kE,EAAO,MACPmlM,EAAK,cACLm0kB,EAAa,gBACblB,EAAkBjkK,4BAA2B,mBAC7Cid,EAAkB,gBAClBH,EAAe,oBACf+mJ,EAAmB,2BACnBuB,EAA0B,SAC1B55L,EAAQ,YACR4kB,EAAW,kBACXyZ,EAAiB,cACjBE,EAAa,UACbkrK,EAAS,iBACTjrK,EAAgB,YAChBkrK,EAAW,SACXn4J,EAAQ,SACRn8mB,EAAQ,eACRykwB,EAAc,UACd19J,EAAS,YACTphG,GACG7ylB,EACEyh2B,EAAsBN,iBAAiBC,WAAW1ivB,IAClDp7G,EAAmB,QAAfg+1B,EAAGhklB,aAAK,EAALA,EAAOA,aAAK,IAAAgklB,EAAAA,EAAI,GACvBI,GAAwBr3zB,EAAAA,OAAAA,SAAQm3zB,IAElCn3zB,EAAAA,OAAAA,SAAQk3zB,GAET10K,cADA,GAAGD,mBAAmB20K,IAFtBC,EAOH,OAFCp7yB,EAAAA,OAAAA,UAAQx+C,EAAAA,OAAAA,KAAI01Q,EAAO,sBAAuB,IAAK,cAC/Cl3N,EAAAA,OAAAA,UAAQx+C,EAAAA,OAAAA,KAAI01Q,EAAO,wBAAyB,IAAK,SAwC1C,KAtCA,CACNnlM,UACAmlM,QACA0ilB,gBAAiBtyK,eACjBhvkB,WAAY+ivB,EACZnrxB,UACA7iE,YAAa,CACZnQ,KAAM,OACNuuB,OAAQ,CAACpe,IAEVg+0B,gBACAlB,gBACC7jK,kCAAkCnjgB,GAAGr4K,SAAS5N,IAC9CA,EAAKymB,cAAc7Y,SAAS+7qB,IACzBsjK,EACA,GACJhnJ,qBACAH,kBACA+mJ,sBACAuB,6BACA55L,WACA4kB,cACA2sB,WACApT,gBAAiByrK,EACjBxrK,oBAAqBnJ,sBACrBoJ,oBACAqT,oBAAoB,EACpBnT,gBACAC,iBAAkB8qK,WAAW9qK,GAC7BhB,OAAQpI,SAASC,UACjBwc,kBAAkB,EAClBz8mB,WACAvrE,OAAQ+8F,EACRizuB,iBACA19J,YACAphG,gBCzFGtskB,mCAAOA,CAACvO,EAAKlK,KAAmB,IAAjB,SAAE4N,GAAU5N,EAChC,MAAM,WACL9N,EACA0Y,WAAW,WAAEim0B,IACV3m0B,GACE,SAAEqxrB,GAAarpsB,EACf+jX,EAAW46d,EAAWuX,YACtByL,EAAeN,qBAAqBrh2B,EAAY0b,GACtD,OAAI2trB,IAAatlV,GACTrjW,EAAAA,kCAAAA,eAAA,oCAAuCih1B,IAEvCjh1B,EAAAA,kCAAAA,eAAA,+BAAkCih1B,IAG3C,kECKA770B,EAAAA,aAAAA,qBAAoB,2BAA4B,CAC/CC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,8BACJvmB,WAAY,CAOX0+G,WAAY,CACXz4F,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORgzE,QAAS,CACRrwD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORmQ,YAAa,CACZwS,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQR60E,QAAS,CACRlyD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAOR2wrB,UAAW,CACVhuqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAOhCmijB,YAAa,CACZ5skB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAOhC/uB,OAAQ,CACPsE,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORg6Q,MAAO,CACNr3P,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORmu1B,cAAe,CACdxr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORit1B,gBAAiB,CAChBtq0B,QAASqmqB,4BACTnmqB,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAQhC64pB,mBAAoB,CACnBtjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3BgjrB,gBAAiB,CAChBnjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3B+p0B,oBAAqB,CACpBlq0B,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAO3Bsr0B,2BAA4B,CAC3Bzr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR6yrB,kBAAmB,CAClBlwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+yrB,cAAe,CACdpwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORi+1B,UAAW,CACVt70B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAMRgzrB,iBAAkB,CACjBrwqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAMRk+1B,YAAa,CACZv70B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR+lsB,SAAU,CACTpjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR4pF,SAAU,CACTjnE,SAAS,IAGXvN,UAAW,CACV,CACCsiB,SAAUgyoB,YACVpkqB,QAAS,CACRst1B,YAAa,eAAe5oK,2BCpQzB,MAAMs0K,0BAA4B5h2B,IACxC,MAAM,WACL0+G,EAAU,OACV17G,EAAM,WACN6+1B,EAAU,SACVC,EAAQ,QACRxrxB,EAAO,mBACPiqxB,EAAkB,qBAClBC,EAAoB,QACpBroxB,EAAO,MACPmlM,EAAK,cACLm0kB,EAAa,gBACblB,EAAkB/jK,iCAAgC,mBAClD+c,EAAkB,gBAClBH,EAAe,oBACf+mJ,EAAmB,2BACnBuB,EAA0B,SAC1B55L,EAAQ,YACR4kB,EAAW,eACXi1K,EAAc,SACdtoJ,EAAQ,SACRn8mB,GACGltF,EAEEih2B,GAAoBv5xB,EAAAA,OAAAA,SAAQ,CAAC64xB,EAAoBC,IAEvD,MAAO,CACNroxB,UACAmlM,QACA24a,gBACiB,iCAAhB34a,EAAMA,MACHkwa,6BACA,GACJ0I,oBACiB,iCAAhB54a,EAAMA,MACH,qBACA,GACJ0ilB,gBAAiBzyK,aACjB7ukB,aACApoC,UACAtzE,OAAQ,CACPM,KAAMu+1B,EACNj/1B,MAAOI,EACPq9C,IAAKyhzB,GAENru1B,YAAa,CACZnQ,KAAM,UACNuuB,OAAQov0B,GAETxP,gBACAlB,gBAAiB7jK,kCAAkC30G,QAAQ7mkB,SAC1DosQ,EAAMA,OAEJizkB,EACA,GACHhnJ,qBACAH,kBACA+mJ,sBACAuB,6BACA55L,WACA4kB,cACA2sB,WACAn8mB,WACAoomB,OAAQpI,SAASC,UACjBwkK,mBCtEIpr0B,wCAAOA,CAACvO,EAAKlK,KAAmB,IAAjB,SAAE4N,GAAU5N,EAChC,MAAM,WACL9N,EACA0Y,WAAW,WAAEim0B,IACV3m0B,GACE,SAAEqxrB,GAAarpsB,EACf+jX,EAAW46d,EAAWuX,YACtB6L,EAAgBH,0BAA0B5h2B,EAAY0b,GAC5D,OAAI2trB,IAAatlV,GACTrjW,EAAAA,kCAAAA,eAAA,oCAAuCqh1B,IAEvCrh1B,EAAAA,kCAAAA,eAAA,+BAAkCqh1B,IAI3C,4ECqBAj80B,EAAAA,aAAAA,qBAAoB,gCAAiC,CACpDS,KAAI,mCACJ/M,aAAc,CACbi6B,QAAS,KACTknD,KAAM,MAEP36F,WAAY,CAKX0+G,WAAY,CACXz4F,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRN,OAAQ,CACPijB,QAAS,sBACTE,OAAQ,CACP7iB,KAAM,WAORu+1B,WAAY,CACX570B,QAAS,OACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,OAAQ,WAOjB070B,SAAU,CACT770B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORgzE,QAAS,CACRrwD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORi91B,mBAAoB,CACnBt60B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRk91B,qBAAsB,CACrBv60B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQR60E,QAAS,CACRlyD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAORg6Q,MAAO,CACNr3P,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAORmu1B,cAAe,CACdxr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORit1B,gBAAiB,CAChBtq0B,QAASumqB,iCACTrmqB,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAQhC64pB,mBAAoB,CACnBtjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3BgjrB,gBAAiB,CAChBnjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3B+p0B,oBAAqB,CACpBlq0B,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAO3Bsr0B,2BAA4B,CAC3Bzr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+lsB,SAAU,CACTpjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR4pF,SAAU,CACTjnE,SAAS,IAGXvN,UAAW,CACV,CACCsiB,SAAUgyoB,YACVpkqB,QAAS,CACRst1B,YAAa,eAAe5oK,2BCjPzB,MAAM00K,sBAAwBhi2B,IACpC,MAAM,QACLm4E,EAAO,MACPmlM,EAAK,cACLm0kB,EAAa,gBACblB,EAAkB9jK,6BAA4B,cAC9C4J,EAAa,kBACbF,EAAiB,2BACjBu7J,EAA0B,SAC1B55L,EAAQ,YACR4kB,EAAW,SACX1tqB,EAAQ,cACR4q1B,EAAa,UACbtjL,EAAS,SACT+yB,EAAQ,SACRn8mB,GACGltF,EAEJ,IAAIi2rB,EAAkB,GAClBC,EAAsB,GAC1B,MAAMojK,EAAiB511B,KAAKG,MAAMmL,GAClC,IAAK,IAAI3M,EAAI,EAAGA,EAAIi31B,EAAe531B,OAAQW,IACtCi31B,EAAej31B,GAAG4/1B,MACrBhsK,EAAkBnJ,qBAClBoJ,EAAsBnJ,uBAIxB,MAAO,CACN50mB,UACAmlM,QACA0ilB,gBAAiBvyK,gBACjBz+qB,SAAUA,EACVyi1B,gBACAp7J,gBACAF,oBACAo6J,gBAAiB7jK,kCAAkCC,IAAIz7qB,SAASosQ,EAAMA,OACnEizkB,EACA,GACHt6J,gBAAiBA,EACjBC,oBAAqBA,EACrBw7J,6BACA55L,WACA4kB,cACAk9K,gBACAtjL,YACApplB,WACAm8mB,WACA/T,OAAQpI,SAASE,MCtDb7mqB,oCAAOA,CAACvO,EAAKlK,KAAmB,IAAjB,SAAE4N,GAAU5N,EAChC,MAAM,WACL9N,EACA0Y,WAAW,WAAEim0B,IACV3m0B,GACE,SAAEqxrB,GAAarpsB,EACfki2B,EAAYF,sBAAsBhi2B,EAAY0b,GAC9CqoW,EAAW46d,EAAWuX,YAC5B,OAAI7sJ,IAAatlV,GACTrjW,EAAAA,kCAAAA,eAAA,oCAAuCwh1B,IAEvCxh1B,EAAAA,kCAAAA,eAAA,+BAAkCwh1B,IAI3C,oECSAp80B,EAAAA,aAAAA,qBAAoB,4BAA6B,CAChDC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,+BACJvmB,WAAY,CACXs2qB,UAAW,CACVrwpB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAGRs21B,cAAe,CACd3z0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAGR0L,SAAU,CACTiX,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAGR60E,QAAS,CACRlyD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAORg6Q,MAAO,CACNr3P,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORmu1B,cAAe,CACdxr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORit1B,gBAAiB,CAChBtq0B,QAASwmqB,6BACTtmqB,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAOhCghzB,2BAA4B,CAC3Bzr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+yrB,cAAe,CACdpwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR6yrB,kBAAmB,CAClBlwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+lsB,SAAU,CACTpjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR4pF,SAAU,CACTjnE,SAAS,IAGXvN,UAAW,CACV,CACCsiB,SAAUgyoB,YACVpkqB,QAAS,CACRst1B,YAAa,eAAe5oK,2BCxJhC,MAAM8zK,iBAAargyB,IAClB,IAAIK,WAAYC,gBAAgBN,EAAM,aAAa19C,gBACjD2pB,YAEUm1zB,8BAAgCni2B,IAC5C,MAAM,QACLs2E,EAAO,YACP7iE,EAAW,QACX0kE,EAAO,MACPmlM,EAAK,cACLm0kB,EAAa,gBACblB,EAAe,gBACfnnJ,EAAe,oBACf+mJ,EAAmB,2BACnBuB,EAA0B,SAC1B55L,EAAQ,YACR4kB,EAAW,kBACXyZ,EAAiB,cACjBE,EAAa,iBACbC,EAAgB,YAChBkrK,EAAW,SACXn4J,EAAQ,SACRn8mB,EAAQ,eACRykwB,EAAc,UACd19J,EAAS,YACTphG,EAAW,SACXtxhB,GACGvhE,EACE0h2B,GACJr3zB,EAAAA,OAAAA,SAAQm3zB,IAAgC,cAAhBA,EAEtBx0K,yBADAw0K,EAEJ,MAAO,CACNrpxB,UACAmlM,QACA0ilB,gBAAiB1ilB,EAAMA,MACvBhnM,UACA7iE,YAAa,CACZnQ,KAAM,OACNuuB,OAAQ,CAACpe,IAEVg+0B,gBACAlB,kBACAnnJ,kBACA+mJ,sBACAuB,6BACA55L,WACA4kB,cACA2sB,WACApT,gBAAiByrK,EACjBxrK,oBAAqBnJ,sBACrBoJ,oBACAE,gBACAC,iBAAkB8qK,iBAAW9qK,GAC7BhB,OAAQpI,SAASG,YACjBsc,kBAAkB,EAClBz8mB,WACAykwB,iBACA19J,YACAphG,cACAtxhB,aChEIh7C,4CAAOA,CAACvO,EAAKlK,KAAmB,IAAjB,SAAE4N,GAAU5N,EAChC,MAAM,WACL9N,EACA0Y,WAAW,WAAEim0B,IACV3m0B,GACE,SAAEqxrB,GAAarpsB,EACf+jX,EAAW46d,EAAWuX,YACtByL,EAAeQ,8BAA8Bni2B,EAAY0b,GAC/D,OAAI2trB,IAAatlV,GACTrjW,EAAAA,kCAAAA,eAAA,oCAAuCih1B,IAEvCjh1B,EAAAA,kCAAAA,eAAA,+BAAkCih1B,IAG3C,oFCGA770B,EAAAA,aAAAA,qBAAoB,oCAAqC,CACxDC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,uCACJvmB,WAAY,CAKXuhE,SAAU,CACTt7C,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAORgzE,QAAS,CACRrwD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORmQ,YAAa,CACZwS,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQR60E,QAAS,CACRlyD,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAOR2wrB,UAAW,CACVhuqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAOhCmijB,YAAa,CACZ5skB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAOhC/uB,OAAQ,CACPsE,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORg6Q,MAAO,CACNr3P,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORmu1B,cAAe,CACdxr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORit1B,gBAAiB,CAChBtq0B,QAASqmqB,4BACTnmqB,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CAAEpV,GAAI,SAAU8yB,MAAO,YAQhC04pB,gBAAiB,CAChBnjrB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3B+p0B,oBAAqB,CACpBlq0B,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAO3Bsr0B,2BAA4B,CAC3Bzr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR6yrB,kBAAmB,CAClBlwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+yrB,cAAe,CACdpwqB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAMRgzrB,iBAAkB,CACjBrwqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAMRk+1B,YAAa,CACZv70B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR+lsB,SAAU,CACTpjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR4pF,SAAU,CACTjnE,SAAS,IAGXvN,UAAW,CACV,CACCsiB,SAAUgyoB,YACVpkqB,QAAS,CACRst1B,YAAa,eAAe5oK,2BCjPzB,MAAM2b,OAAS,SACTF,KAAO,OACPC,MAAQ,QACRo5J,aAAe,mBACfC,WAAa,IACbC,YAAc,IACdC,WAAa,IACbC,kBAAoB,IACpBC,yBAA2B,OAE3B3U,2BAAmB,mBACnBjC,6BAAqB,qBACrBroL,6DAA0B,0BAC1BC,+DAA4B,4BAE5Bi/L,oBAAsB,UACtBjxK,gBAAQ,QACRkxK,gBAAkB,kBAClBC,YAAc,cAGdC,WACZ,0FACYC,SAAW,UAEX52L,uDAAmBtmpB,EAAAA,iBAAAA,GAAE,cACrBm90B,gBAAkB,EAClB//M,qBAAYp9nB,EAAAA,iBAAAA,GAAE,aACdsrqB,0BAAkB,CAC9BC,YAAa,4BACbC,SAAU,oBAEE4xK,kBAAoB,CAChCC,SAAU,UACVC,SAAU,gBACVC,eAAgB,qBAChBC,cAAe,gBACf95L,aAAc,eACd+5L,aAAc,gBAOFr0K,oCAA4B,CACxC,CAAEpxqB,GAAI,IAAK8yB,MAAO,KAClB,CAAE9yB,GAAI,IAAK8yB,MAAO,KAClB,CAAE9yB,GAAI,IAAK8yB,MAAO,KAClB,CAAE9yB,GAAI,IAAK8yB,MAAO,KAClB,CAAE9yB,GAAI,SAAU8yB,OAAO9qB,EAAAA,iBAAAA,GAAE,0BAGb090B,kBAAoB,CAChCC,MAAO,QACPC,MAAO,SAGKC,kBAAoB,CAChC,CAAE/yzB,MAAO,iBAAkB9tC,MAAO,kBAClC,CAAE8tC,MAAO,iBAAkB9tC,MAAO,kBAClC,CAAE8tC,MAAO,mBAAoB9tC,MAAO,oBACpC,CAAE8tC,MAAO,kBAAmB9tC,MAAO,mBACnC,CAAE8tC,MAAO,kBAAmB9tC,MAAO,mBACnC,CAAE8tC,MAAO,iBAAkB9tC,MAAO,kBAClC,CAAE8tC,MAAO,mBAAoB9tC,MAAO,oBACpC,CAAE8tC,MAAO,mBAAoB9tC,MAAO,oBACpC,CAAE8tC,MAAO,kBAAmB9tC,MAAO,mBACnC,CAAE8tC,MAAO,iBAAkB9tC,MAAO,mBAGtB8g2B,mBAAqB,CACjCh9J,QAAS,UACTi9J,OAAQ,UAEIv9K,oBAAY,CACxB6K,GAAI,KACJh1nB,GAAI,KACJC,GAAI,KACJF,GAAI,KACJ4nyB,GAAI,MAEQC,wBAA0B,0BAC1BC,6BAA+B,+BAC/BC,qBAAuB,wBACvBC,cAAep+0B,EAAAA,iBAAAA,GAAE,mBACjBq+0B,aAAe,eACfC,yBAA0Bt+0B,EAAAA,iBAAAA,GAAE,mBAC5Bu+0B,YAAav+0B,EAAAA,iBAAAA,GAAE,QACfw+0B,KAAO,OACPC,KAAO,OACPC,OAAS,QACTC,MAAO3+0B,EAAAA,iBAAAA,GAAE,QACT4+0B,kBAAmB5+0B,EAAAA,iBAAAA,GAAE,oBACrB6+0B,uBAAyB,yBCpFhCC,gBAAkBA,CAAC3jyB,EAAMn/B,KAC1ByI,EAAAA,OAAAA,SAAQ02B,GAAc,MAEzBrgD,EAAAA,kCAAAA,eAAA,0BACCgwB,MAAOqwB,EACPn+D,MAAM,GACNg/B,UAAWA,EACX62nB,WAAS,IAKNksM,yBAA2BA,CAAC5jyB,EAAMn/B,KACnCyI,EAAAA,OAAAA,SAAQ02B,GAAc,MAEzBrgD,EAAAA,kCAAAA,eAAA,QAAM,cAAY,SACjBA,EAAAA,kCAAAA,eAAA,0BACCgwB,MAAOqwB,EACPn+D,MAAM,GACNg/B,UAAWA,EACX62nB,WAAS,KAMPmsM,eAAiBA,CAACx0zB,EAAMgzC,KAC7B1iE,EAAAA,kCAAAA,eAAA,YACCkhB,UAAU,kCACVwO,KAAMA,GAAQgyzB,aACdt61B,KAAMs7E,EACN3yC,QAAQ,aAIJiuE,WAAa5wG,IAUb,IAVc,mBACnB+21B,EAAkB,mBAClBC,EAAkB,qBAClBC,EAAoB,gBACpBC,EAAe,2BACftT,EAA0B,mBAC1BuT,EAAkB,KAClB70zB,EAAI,SACJgzC,EAAQ,SACR8hxB,GACAp31B,EACA,MACMq31B,EAAkB,6BAGlBC,GAAc5m1B,EAAAA,OAAAA,QACnB,CACCkm1B,gBAAgBG,EAAoBM,GACpCT,gBAAgBI,EAAoBK,GACpCT,gBAAgBK,EAAsBI,IAEtCp01B,GAAMA,GAGFs01B,GAAuB7+yB,EAAAA,OAAAA,SAAQ4+yB,EAAa,CAACxi2B,EAAOoK,EAAOmE,IAChEA,EAAMzP,OAAS,IAAMsL,EAClB,CAACpK,EAAO+h2B,yBAfM,OAEK,yCAcnB/h2B,GAEE0i2B,EACLlixB,IAAagjmB,oBAAUpqnB,GAAK4oyB,eAAex0zB,EAAMgzC,GAAY,KACxDqe,GAAOp3D,EAAAA,OAAAA,SAAQg7zB,GAAwB,GAAK,QAElD,OACC3k1B,EAAAA,kCAAAA,eAAA,OACCw4B,SAAS,KACTtX,UAAW,kBAAkB6/D,KAC5BwjwB,EAAqB,YAAc,OAEpCvk1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wCACZsj0B,EAA0B,KAAfI,EACZD,GAED3T,GACAhx0B,EAAAA,kCAAAA,eAAA,gBACCkhB,UAAU,oCACV5O,MAAOg8pB,oCACP9zqB,OAAO,SACP0yC,aAAahoC,EAAAA,iBAAAA,GAAE,YACf6qB,QAAQ,YACR3oC,KAAK,KACLg5C,gBAAgBl7B,EAAAA,iBAAAA,GAAE,iCAClB,oBAAmBo/0B,IAEjB,OAKP,+B,oDC7FA,MAAMO,gBAAkBC,IACvB,MAAMC,EAAevl2B,IACpBA,EAAEwL,OAAOsX,MAAMoc,QAAU,QAG1B,OAAIom0B,GAAYA,EAAS9j2B,OAAS,GAEhCgf,EAAAA,kCAAAA,eAAA,OACC,WAAU+k1B,EACVrozB,IAAKoozB,EACL5j0B,UAAU,eACVye,IAAI,GACJ,cAAY,SAIR,MAGFukzB,sBAAiBA,CAACx0zB,EAAMgzC,EAAUsixB,EAAYC,KAClDt7zB,EAAAA,OAAAA,SAAQq7zB,IAQRhl1B,EAAAA,kCAAAA,eAAA,YACCw4B,SAAS,KACTzI,QAAQ,WACRL,KAAMA,GAAQgyzB,aACdt61B,KAAMs7E,GAAYgjmB,oBAAUlqnB,GAC5B,cAAY,UAZbx7C,EAAAA,kCAAAA,eAAA,2BACC08B,IAAKsozB,EACLhj1B,OAAQij1B,EACRlj1B,MAAOkj1B,EACP,cAAY,SAYTC,iBAAmBA,CAACC,EAAWvF,EAAYl9wB,EAAU0ixB,KAC1Dpl1B,EAAAA,kCAAAA,eAAA,cACCw4B,SAAS,KACT,YAAW2szB,EACX/91B,KAAMg+1B,EAAc1/K,oBAAUw9K,GAAKxgxB,GAAsBgjmB,oBAAUnqnB,GACnE,YAAWqkyB,IAIPyF,kBAAoBvuZ,IACzB,MAAM,UACL8kO,EAAS,SACTkpL,EAAQ,KACRp1zB,EAAI,UACJy1zB,EAAS,WACTvF,EAAU,SACV4E,EAAQ,SACR9hxB,EAAQ,YACR0ixB,EAAW,WACXJ,EAAU,eACVC,GACGnuZ,EACJ,GAAI0tZ,EACH,OAAO,KAGR,IAAIc,EACJ,GAAIF,IAAe1/yB,EAAAA,OAAAA,SAAQk2nB,EAAW0sB,OACrCg9J,EAAgBpB,sBAAeb,qBAAsB3gxB,QAErD,OAAQk5lB,GACP,KAAK0sB,MACJg9J,EAAgBT,gBAAgBC,GAChC,MACD,KAAKz8J,KACJi9J,EAAgBpB,sBACfx0zB,EACAgzC,EACAsixB,EACAC,GAED,MACD,KAAK18J,OACJ+8J,EAAgBJ,iBACfC,EACAvF,EACAl9wB,EACA0ixB,GAED,MACD,QACCE,EAAgBpB,wBAMnB,OADsB,OAAlBoB,IAAwBA,EAAgBpB,sBAAex0zB,EAAMgzC,IAC1D4ixB,GAGFhj2B,OAAS8K,IAWT,IAXU,UACfwuqB,EAAS,SACTkpL,EAAQ,KACRp1zB,EAAI,UACJy1zB,EAAS,WACTvF,EAAU,SACV4E,EAAQ,SACR9hxB,EAAQ,YACR0ixB,GAAc,EAAK,WACnBJ,EAAU,eACVC,GACA731B,EACA,MAYMk41B,EAAgBD,kBAZI,CACzBzpL,YACAkpL,WACAp1zB,OACAy1zB,YACAvF,aACA4E,WACA9hxB,WACA0ixB,cACAJ,aACAC,mBAGD,OAAIK,GAEFtl1B,EAAAA,kCAAAA,eAAA,OACCw4B,SAAS,KACT1yB,MAAO,CACN,uBAAuB,EACvB,gBAAiBs/0B,GAElBxo1B,KAAK,gBAEJ0o1B,GAKG,MAGR,uBC9IaC,yBAA2BC,IACvC,IAAI77zB,EAAAA,OAAAA,SAAQ67zB,GAAW,OAAOA,EAK9B,OAHwBA,EACtBpq0B,QAAQ,eAAgB+m0B,YACxB/m0B,QAAQ,iBAAkBgn0B,WAIhBqD,oBAAsBD,IAClC,IAAI77zB,EAAAA,OAAAA,SAAQ67zB,GAAW,OAAOA,EAM9B,OAH6BA,EAC3Bpq0B,QAAQ,eAAgB,IACxBA,QAAQ,iBAAkB,KAKhBsq0B,aAAeF,IAC3B,IAAI77zB,EAAAA,OAAAA,SAAQ67zB,GAAW,OAAOA,EAG9B,OADsBA,EAASpq0B,QAAQ,gBAAiB,KAI5Cuq0B,eAAiB/6zB,IACzBjB,EAAAA,OAAAA,SAAQiB,GAAiB,IAAI7jC,IAE1B,IAAIA,IACV6jC,EAAQx8B,IAAIynE,GAAU,CAACA,EAAO2hgB,UAAW3hgB,EAAO23lB,gBAIrCo4L,yBAA2BA,CAACrpC,EAAYvqtB,KACpD,IAAIroE,EAAAA,OAAAA,SAAQ4yxB,GAAa,MAAO,GAChC,MAAM,QAAE3xxB,EAAO,MAAE4pB,EAAK,KAAE6L,EAAI,IAAEp1B,EAAG,MAAE8onB,EAAK,MAAEz7Z,GAAUikkB,EAC9C+nB,EAAaqhB,eAAe/6zB,GAE5Bi7zB,EAAUvhB,EAAWp90B,IAAIo71B,kBAAkBC,UAC3C3mL,EAAY0oK,EAAWp90B,IAAIo71B,kBAAkBG,gBAC7C/yzB,EAAO40yB,EAAWp90B,IAAIo71B,kBAAkBE,UACxCsD,EAAcxhB,EAAWp90B,IAAIo71B,kBAAkBK,cAC/C91L,EAAcy3K,EAAWp90B,IAAIo71B,kBAAkBI,eAC/C91L,EAAc03K,EAAWp90B,IAAIo71B,kBAAkB15L,cAqBrD,MAnBc,CACbm9L,WAAY/D,oBACZxlC,UAAWhowB,EACXwxyB,uBAAwBxxyB,EACxByxyB,sBAAuB5lyB,EACvB6lyB,aAAcJ,EACdK,aAAcv5L,EACdw5L,cAAev5L,EACfhuW,QAASgniB,EACTQ,mBAAoBzqL,EACpB0qL,cAAe52zB,EACf62zB,eAAgBt7zB,EAChBu7zB,eAAgBx0vB,EAChBsmJ,MAAOA,EACPy7Z,MAAOA,EACP6/B,OAAQ7/B,EACR9onB,IAAKA,EACLroC,KAAMmurB,kBC3EKknF,sCAA4B,4BAC5Bj1G,kCAAwB,wBACxByjM,wBAA0B,yBAC1BC,eAAiB,4BACjBxE,oBAAc,cAGdyE,wCACZ,6DACYC,wBACZ,qDACYC,iCACZ,qDACYC,kBAAoB,0CACpBC,mBACZ,+CCEK31zB,OAAShkC,IAcT,IAdU,WACf451B,EAAU,cACVC,EAAa,YACbhnzB,EAAW,aACXinzB,EAAY,QACZru1B,EAAO,UACPq+B,EAAS,mBACTitzB,EAAkB,mBAClBC,EAAkB,qBAClBC,EAAoB,eACpB1R,EAAc,YACdxrJ,EAAW,KACX/5qB,EAAI,SACJpS,GACA5N,EACA,MAAM8skB,EAAY,QAAQ8sR,UACpBz3nB,GAAe3+L,EAAAA,kCAAAA,oCACpBF,UAAAA,EAAUC,SAASupiB,IAEditR,EAAqB,mBAAmBF,IACxCG,GAAoBz9zB,EAAAA,OAAAA,SAAQuN,GAC/BwuzB,aAAasB,GACb9vzB,EACGmwzB,GAAmB3hzB,EAAAA,OAAAA,SAAQityB,EAAgBgR,MA6B3C2D,GACLtn1B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,sBAAsB,EACtB,CAACqh1B,IAAqB,GAEvB,uBAEAnn1B,EAAAA,kCAAAA,eAAA,iBACCkhB,UAAU,aACV9T,MAAMuc,EAAAA,OAAAA,SAAQvc,GAAQ,qBAAuBA,EAC7C4iB,MAAOu/L,EACPx/L,QAAQ,UACR3oC,KAAMs+qB,oBAAUnqnB,GAChBtb,YAAaA,EACb,oBAAmBpnC,EACnB,eA3CsB9N,IAEP,SAAhBk1C,GACApnC,GACiB,IAAjB9N,EAAMklC,UACLtG,EAAAA,OAAAA,SAAQvc,IAETpS,EAAS,KACD,CACNpY,KAAMs/1B,oBACNrp1B,cAkCD,cA5BoB0u1B,KACF,SAAhBtnzB,GAA0BpnC,KAAY8wB,EAAAA,OAAAA,SAAQvc,IACjDpS,EAAS,KACD,CACNpY,KAAM4k2B,uDAAAA,aACN3u1B,cAwBD84B,cAAahI,EAAAA,OAAAA,SAAQvc,IAAgB+5qB,IAErCkgK,GACArn1B,EAAAA,kCAAAA,eAAA,qBACC0vB,KAAK,eACLM,MAAOyzzB,WACPr81B,KAAK,KACL2oC,QAAQ,YACR,kBAAiBuzzB,aACjB,cAAa,CAAErzzB,OAAQ,CAAE,aAAcqzzB,eACvCnzzB,MAAI,EACJ,oBAAmB,CAClBvtC,KAAM8g2B,KACN9q1B,OAAQC,KAGP,KACHqu1B,IAAiB//J,GACjBnnrB,EAAAA,kCAAAA,eAAA,qBACCkhB,UAAU,yBACVwO,KAAK,0BACLK,QAAQ,YACRI,MAAI,EACJ/oC,KAAK,KACL,cAAa,CACZ6oC,OAAQ,CACP,cAAc/qB,EAAAA,iBAAAA,GACb,sCACAi/0B,EACAC,EACAC,EACA+C,KAIH,kBAAiBA,EAAoB,IAAM5D,wBAC3C,oBAAmB3q1B,IAEjB,MAKN,OAAOmH,EAAAA,kCAAAA,eAAA,WAAMsn1B,IAGd,uBClIMv01B,YAAc3F,IAAsD,IAArD,QAAEkqd,EAAO,gBAAEmwY,EAAe,mBAAEC,GAAoBt61B,EACpE,IAAIu8B,EAAAA,OAAAA,SAAQ2tb,GAAU,OAAO,KAE7B,MAAM23C,EAAc,QAAQ33C,UACtBqwY,GAAiB/2zB,EAAAA,kCAAAA,oCAAmCq+d,GAE1D,OACCjvf,EAAAA,kCAAAA,eAAA,OACC,qBACAkhB,UAAW,kCAAkCum0B,IAC5CC,EAAqB,6BAA+B,MAGpDC,IAKJ,iCChBMC,mBAAqB,SAC1BC,EACA/4tB,GAEI,IADJg5tB,EAAoBlj2B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,IAAAA,UAAA,GAEpB,MAAM0zD,EACLuvyB,EAAY73zB,SAAS8+F,KAAUnlG,EAAAA,OAAAA,SAAQmlG,EAAM+4tB,EAAY73zB,QACpD2wwB,EACLknD,EAAY3l2B,SAAS4sI,KAAUnlG,EAAAA,OAAAA,SAAQmlG,EAAM+4tB,EAAY3l2B,QAC1D,OAAO4l2B,EAAuBxvyB,GAAYqovB,EAAWrovB,GAAYqovB,CAClE,EAEMonD,wBAA0B,SAACj5tB,GAAwC,IAAjCg5tB,EAAoBlj2B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,IAAAA,UAAA,GAC3D,MAAMoj2B,EAAe,GAWrB,OAVAjF,kBAAkB7q1B,QAAQ+v1B,IACrBL,mBAAmBK,EAASn5tB,EAAOg5tB,IACtCE,EAAath2B,KAAK,CACjB,CACCspC,MAAO8+F,EAAMm5tB,EAAQj4zB,OACrB9tC,MAAO4sI,EAAMm5tB,EAAQ/l2B,YAKlB8l2B,CACR,EAEME,uBAAyBp5tB,IAC9B,MAAM,qBAAEg5tB,GAAyBh5tB,EAC3Bq5tB,EAAgBJ,wBAAwBj5tB,EAAOg5tB,GAC/Cxl1B,EAAQ,CACbI,SAAa,IAAMyl1B,EAAcnn2B,OAAvB,IACVon2B,UAAW,YAINC,EAAgBF,EAAc/51B,IAAI,CAAClM,EAAOoK,KAC/C0T,EAAAA,kCAAAA,eAAA,OAAKsC,MAAOA,EAAO4e,UAAU,sCAC5BlhB,EAAAA,kCAAAA,eAAA,2BACC81C,MAAM,mBACNyjC,UAAU,IACVjnE,MAAO610B,EAAc771B,GACrBlF,KAAK,KACL2wpB,WAAS,MAMZ,OACC/3oB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wBACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,gCAAgCmn0B,KAK5CC,sBAAwBx5tB,IAC7B,MAAM,qBAAEy5tB,EAAoB,qBAAET,GAAyBh5tB,EACjDq5tB,EAAgBJ,wBAAwBj5tB,EAAOg5tB,GAC/C3hY,EAAiB,GAsBvB,OArBAgiY,EAAcjw1B,QAAQ,CAACmd,EAAQmz0B,KAC1BA,EAAO,KAAM7+zB,EAAAA,OAAAA,SAAQ4+zB,IACxBpiY,EAAez/d,MACdsZ,EAAAA,kCAAAA,eAAA,QAAM,cAAY,SACjBA,EAAAA,kCAAAA,eAAA,0BACCkhB,UAAU,iCACV8O,MAAOu4zB,EACPxwM,WAAS,MAKb5xL,EAAez/d,MACdsZ,EAAAA,kCAAAA,eAAA,0BACCgwB,MAAO3a,EAAO,GAAG2a,MACjB9tC,MAAOmzB,EAAO,GAAGnzB,MACjB61pB,WAAS,QAMX/3oB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wBACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,+BAA+Bilc,KAK3CsiY,WAAa35tB,IAClB,MAAM,gBAAE45tB,GAAoB55tB,EACtB65tB,GAAYh/zB,EAAAA,OAAAA,SAAQ++zB,GACvB1F,mBAAmBC,OACnByF,EAEH,IAAIE,EAAe,KAMnB,OALID,IAAc3F,mBAAmBh9J,QACpC4iK,EAAeV,uBAAuBp5tB,GAC5B65tB,IAAc3F,mBAAmBC,SAC3C2F,EAAeN,sBAAsBx5tB,IAE/B85tB,GAGR,+BCzGM34zB,cAAS7iC,IAAiC,IAAhC,iBAAEy71B,EAAgB,MAAEjslB,GAAOxvQ,EAC1C,IACCu8B,EAAAA,OAAAA,SAAQk/zB,KACRl/zB,EAAAA,OAAAA,SAAQizO,MACP51Q,EAAAA,OAAAA,KAAI6h2B,EAAkB,SAEvB,OAAO,KAGR,MAAMC,EAAoB,CAAElw1B,OAAQiw1B,EAAkBjslB,SAEtD,OACC58P,EAAAA,kCAAAA,eAAA,mBACCkhB,UAAU,iCACV8O,MAAO64zB,EAAiB74zB,MACxB5oC,KAAK,KACL2oC,QAAQ,YACR,oBAAmB+4zB,EACnB,qBAKH,8BCFMC,YAAc99zB,IACnB,MAAM+9zB,GAAez7zB,EAAAA,2BAAAA,IAAatC,GAIlC,YAHqBrjC,IAAjBoh2B,GACHtp2B,QAAQ0E,KAAK,wCAAyC6mC,GAEhD+9zB,GAGFzsC,WAAanvzB,IAOb,IAPc,YACnB+klB,EAAW,uBACX82Q,EAAsB,SACtBj3vB,EAAQ,SACRh3F,EAAQ,oBACRku1B,EAAmB,8BACnBC,GACA/71B,EACA,MAAMg81B,IACJz/zB,EAAAA,OAAAA,SAAQwojB,IAAgBA,EAAYnxlB,OAASqh2B,gBAC3ClwQ,EAAYnxlB,OAASqh2B,gBACrB,EACE74M,EAAqB4/M,EAAsB,EAC3CC,EACL7/M,GAAsBy/M,EACnB3mN,qBACAp9nB,EAAAA,iBAAAA,GAAE,kBAAmBkk1B,GACnBE,EAAoBL,EACvB92Q,EACAA,EAAYhilB,MAAM,EAAGky1B,iBAElB34M,EAAiBF,GACtBxpoB,EAAAA,kCAAAA,eAAA,mBACCkhB,UAAU,qCACV8O,MAAOq5zB,EACPt5zB,QAAQ,WACR3oC,KAAMs+qB,oBAAUpqnB,GAChB,oBAAmB,CAClB14D,KAAMwg2B,gCAGL,KAqFJ,OACCpj1B,EAAAA,kCAAAA,eAAA,YACCA,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wBACboo0B,EAAkBl71B,IAAImuzB,GAtFHA,KACtB,MAAM,QAAE3xxB,EAAO,MAAE4pB,EAAK,IAAEvpB,EAAG,MAAE8onB,EAAK,MAAEz7Z,GAAUikkB,EACxC+nB,EAAaqhB,eAAe/6zB,GAC5B8E,EAAO40yB,EAAWp90B,IAAIo71B,kBAAkBE,UACxC+G,EAAwB9D,oBAAoBjxyB,GAClD,IAAIg1yB,EAAgBv+zB,EAChBw+zB,EAAcx+zB,EAClB,GAAIk+zB,EAA+B,CAClC,MAAMv8L,EAAc03K,EAAWp90B,IAAIo71B,kBAAkB15L,cAC/CiE,EAAcy3K,EAAWp90B,IAAIo71B,kBAAkBI,eAC/Cx3zB,EAAU,GAAGD,0BAA4B2hoB,uBAAiCC,IAChF28L,EAAgB,GAAGt+zB,UAAgBg+zB,IACnCO,EAAc,GAAGv+zB,cAClB,MAAWg+zB,IACVM,EAAgB,+CAAiDz1M,GAIlE,OACC/zoB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,uBACdlhB,EAAAA,kCAAAA,eAAA,YACCkhB,UAAU,kCACVwO,MAAO/F,EAAAA,OAAAA,SAAQ+F,GAAe8gpB,0BAAgBC,YAAvB/gpB,EACvBtoC,KAAMs+qB,oBAAUnqnB,MAEjBv7C,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,6BACdlhB,EAAAA,kCAAAA,eAAA,KACC,WAAUy+B,KACTzjC,EAAS,KACD,CACNpY,KAAMgk2B,wBACN/t1B,QAAS,CACR8xE,cAAe,CACd2tK,QACAy7Z,QACA9onB,OAED2xO,MAAOgplB,yBAAyBrpC,EAAYvqtB,GAC5CpvG,KAAMmurB,qBAKV7vpB,UAAU,wCACV9T,KAAM270B,YAAYS,GAClB53zB,UAAUs3zB,EACVl+1B,OAAQk+1B,EAAsB,SAAW,SAExCK,IAEFvp1B,EAAAA,kCAAAA,eAAA,KACC,WAAUy+B,KACTzjC,EAAS,KACD,CACNpY,KAAMik2B,iCACNhu1B,QAAS,CACR8xE,cAAe,CACd2tK,QACAy7Z,QACA9onB,OAED2xO,MAAOgplB,yBAAyBrpC,EAAYvqtB,GAC5CpvG,KAAMmurB,qBAKV7vpB,UAAU,wCACV9T,KAAM270B,YAAYU,GAClB73zB,UAAQ,IAER5xB,EAAAA,kCAAAA,eAAA,YACCkhB,UAAU,6CACVwO,KAAM8gpB,0BAAgBE,SACtBtprB,KAAMs+qB,oBAAUpqnB,SAYkBouyB,CAAentC,IACnD7yK,KAML,+BC/IMigN,kBAAoBA,CAACry1B,EAAO0D,KACjC,MACC1b,YAAY,YAAE6ylB,EAAW,SAAEngf,IACxB16F,EA8CJ,OACC0I,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,YACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,2BACbixjB,EAAY/jlB,IAAImuzB,GAhDGA,KACtB,MAAM,QAAE3xxB,EAAO,MAAE4pB,EAAK,IAAEvpB,EAAG,MAAE8onB,EAAK,MAAEz7Z,GAAUikkB,EAExC7sxB,EADai2zB,eAAe/6zB,GACV1jC,IAAIo71B,kBAAkBE,UAGxC30Q,EAAS,+CAAiDkmE,EAEhE,OACC/zoB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,uBACdlhB,EAAAA,kCAAAA,eAAA,YACCkhB,UAAU,0CACVwO,MAAO/F,EAAAA,OAAAA,SAAQ+F,GAAe8gpB,0BAAgBC,YAAvB/gpB,EACvBtoC,KAAMs+qB,oBAAUnqnB,MAEjBv7C,EAAAA,kCAAAA,eAAA,aACCA,EAAAA,kCAAAA,eAAA,KACC,WAAUy+B,KACTzjC,EAAS,KACD,CACNpY,KAAMgk2B,wBACN/t1B,QAAS,CACR8xE,cAAe,CACd2tK,QACAy7Z,QACA9onB,OAED2xO,MAAOgplB,yBAAyBrpC,EAAYvqtB,GAC5CpvG,KAAMmurB,qBAKV7vpB,UAAU,wCACV9T,KAAMygkB,EACN7ilB,OAAO,UAEN061B,aAAalxyB,OAWek1yB,CAAentC,OAKlD,6C,qKCpEAn3yB,EAAAA,aAAAA,qBAAoB,oCAAqC,CACxDS,KAAI,2BACJvmB,WAAY,CACX6ylB,YAAa,CACZ5skB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,WAGRovG,SAAU,CACTzsF,QAAS,GACTE,OAAQ,CACP7iB,KAAM,YAITujB,OAAMA,8CChBP,MAAMyj1B,mBAAqBA,CAACzl2B,EAAKjC,KAE/B8d,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,gCACd/8B,EAAIwoC,OAAO,GAAGjS,cAAgBv2B,EAAIgM,MAAM,GAAG,KAAGjO,EAC9CiC,IAAQy/1B,SACR5j1B,EAAAA,kCAAAA,eAAA,qBACCkhB,UAAU,+BACVwO,KAAK,gBACLK,QAAQ,WACR3oC,KAAK,KACLg5C,eAAgByjzB,KAChB1zzB,MAAI,EACJqS,aAAW,EACX,WAAU/D,IAAMhU,UAAUo6gB,UAAUglT,UAAU3n2B,KAG/CiC,IAAQ2/1B,mBACR9j1B,EAAAA,kCAAAA,eAAA,qBACCkhB,UAAU,+BACVwO,KAAK,0BACLK,QAAQ,WACR3oC,KAAK,KACLg5C,eAAgB0jzB,iBAChB3zzB,MAAI,EACJqS,aAAW,EACX,WAAU/D,IACTl6C,OAAOoG,KACN,sDAAsDzI,IACtD,aASDkH,MAAQgE,IAAqB,IAApB,YAAE081B,GAAa181B,EAC7B,OAAIu8B,EAAAA,OAAAA,SAAQmg0B,GAAqB,MAEhC9p1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,0BACbvgC,OAAOkO,QAAQi71B,GAAa171B,IAAIuK,IAAA,IAAExU,EAAKjC,GAAMyW,EAAA,OAC7Cix1B,mBAAmBzl2B,EAAKjC,OAM5B,qBC3BM6n2B,aAAe381B,IAAyB,IAAA481B,EAAA,IAAxB,MAAE1y1B,EAAK,SAAE0D,GAAU5N,EACxC,MACC9N,YAAY,mBACX6k2B,EAAkB,mBAClBC,EAAkB,qBAClBC,EAAoB,eACpB4F,EAAc,UACdruL,EAAS,SACTkpL,EAAQ,KACRp1zB,EAAI,UACJy1zB,EAAS,WACTvF,EAAU,MACVpryB,EAAK,WACLwyyB,EAAU,UACV9vzB,EAAS,QACTogb,EAAO,YACP4yY,EAAW,iBACXrB,EAAgB,MAChBjslB,EAAK,cACLqqlB,EAAa,gBACbQ,EAAe,2BACfzW,EAA0B,SAC1BtuwB,EAAQ,SACR8hxB,EAAQ,aACR0C,EAAY,kBACZiD,EAAiB,YACjB/E,EAAW,gBACXgF,EAAe,eACfztM,EAAc,YACdmtM,EAAW,SACXjvX,EAAQ,iBACRwvX,EAAgB,WAChBrF,EAAU,eACVC,EAAc,oBACdiE,EAAmB,8BACnBC,EAA6B,YAC7BhiK,EAAW,sBACXmjK,EAAqB,eACrBC,EAAc,mBACdC,EAAkB,sBAClBC,EAAqB,KACrBr90B,EAAI,YACJ4upB,GACA,sBACD0uL,EAAqB,uBACrBzB,GACG3x1B,EAEEqz1B,IAAkBhh0B,EAAAA,OAAAA,SAAQug0B,MAAiBvg0B,EAAAA,OAAAA,SAAQizO,GACnD38N,GACJ+wyB,GAA8B2Z,EAAiB,QAAU,OAGrDC,EAAY5uL,OAAcp0qB,EAAYwlB,IAAQwvP,aAAK,EAALA,EAAO2plB,gBACrD1t1B,EAAU8x1B,EAAiB,CAAE/x1B,OAAQsx1B,EAAattlB,SAAU,MAC1D4plB,eAAgBx0vB,GAAa4qK,EAE/BiulB,GAAiBlh0B,EAAAA,OAAAA,SAAQq9zB,GAA2BxyyB,EAAbwyyB,EACvC8D,EAAgBR,EACnB7E,oBAAoBnuY,GACpBiuY,yBAAyBjuY,GACtByzY,EAAcT,EACjB7E,oBAAoBoF,GACpBtF,yBAAyBsF,GACtB76zB,IAAQrG,EAAAA,OAAAA,SAAQuN,GAAawuzB,aAAamF,GAAiB3zzB,EAE3D8zzB,GACL7G,GAAsBC,GAAsBC,EACvC4G,IAAYjr1B,EAAAA,kCAAAA,eAACkr1B,oBAAe5z1B,EAAMhY,YAExC,IAAI8M,IAASu9B,EAAAA,OAAAA,SAAQwg0B,GAA+C,GAA1B/i2B,EAAAA,OAAAA,MAAK+i2B,GAC3CxX,GAAiB8X,GACjB9g0B,EAAAA,OAAAA,SAAQizO,KACW,QAApBotlB,EAAAptlB,EAAMuulB,sBAAc,IAAAnB,OAAA,EAApBA,EAAsB3g1B,iBAAkB060B,uBAEvC,QADA,QAEAp6zB,EAAAA,OAAAA,SAAQizO,GAET,QADAA,EAAMyqlB,iBAET,MAAM+D,KAAezh0B,EAAAA,OAAAA,SAAQmg0B,GAM7B,OACC9p1B,EAAAA,kCAAAA,eAAA,YACCw0C,MAAM,GACNptD,KAAMg+1B,EAAc,KAAO,KAC3Bt/0B,MAAO,CACN,qBAAqB,EACrB,mBAAoBs/0B,EACpB,iBAAkBzoM,GAEnB18mB,YAAY,SAEZjgC,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,wBAAwB,EACxB,mBAAoByk1B,EACpB,uBAAwBC,KAGzBxq1B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,sBAAsB,EACtB,cAAes/0B,EACf,aAAcgG,GACd,YAAa5G,IAAa3pX,IAG1Bn4Z,IAAagjmB,oBAAUpqnB,KACvBt7C,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,yBAAyB,EACzB,mBAAoBkl1B,GACpB,iBAAkB5F,KAGnBpl1B,EAAAA,kCAAAA,eAACmprB,gBAAM,CACNvtB,UAAWA,EACXkpL,SAAUA,EACVp1zB,KAAMA,EACNy1zB,UAAWA,EACXvF,WAAYA,EACZl9wB,SAAU0ixB,EAAc1/K,oBAAUnqnB,GAAKmnB,EACvC8hxB,SAAUA,EACVY,YAAaA,EACbJ,WAAYA,EACZC,eAAgBA,MAInBjl1B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,0BAA0B,EAC1B,aAAcs/0B,IAGbA,EAeE,MAdHpl1B,EAAAA,kCAAAA,eAACgmT,oBAAU,CACVm+hB,mBAAoBA,EACpBC,mBAAoBA,EACpBC,qBAAsBA,EACtBC,gBAAiBzr1B,EACjBm40B,2BAA4BA,EAC5BthzB,KAAMA,EACNgzC,SAAUA,EACV6hxB,oBAAqBC,EACrBA,SAAUA,EACV0C,aAAcA,EACd4C,YAAaA,EACb9C,WAAYh3zB,MAGdhwB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,iBACdlhB,EAAAA,kCAAAA,eAACg8oB,gBAAM,CACNl3mB,YAAU,EACVkizB,WAAY5B,EAAcyF,EAAgBE,EAC1C9D,cAAe7B,EAAc,KAAO6B,EACpC7B,YAAaA,EACbnlzB,YAAaA,EACbkkzB,mBAAoBA,EACpBC,mBAAoBA,EACpBC,qBAAsBA,EACtB6C,aAAcA,EACdru1B,QAASA,EACT850B,eAAgBA,GAChBxrJ,YAAaA,EACbmjK,sBAAuBA,EACvBl90B,KAAMw90B,EACN5v1B,SAAUA,IAEViv1B,IAAmBrH,kBAAkBC,OAAUuC,EAE5C,MADHpl1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,yBAAyB+p0B,IAEvCb,EAOE,MANHpq1B,EAAAA,kCAAAA,eAACoprB,qBAAW,CACX9xO,QAAS8tY,EAAc9tY,EAAUwzY,EACjCrD,gBAAiBA,EACjBC,qBAAqB/9zB,EAAAA,OAAAA,SAAQmg0B,GAC7BQ,sBAAuBA,MAI1Btq1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,0BACb+o0B,IAAmBrH,kBAAkBE,OAAUsC,EAE7C,KADA6F,GAGD7F,GAEGz7zB,EAAAA,OAAAA,SAAQwg0B,GAsCT,MArCHnq1B,EAAAA,kCAAAA,eAAA,eACCy/D,gBAAgB,OAChBjoE,OAAQkz1B,EACRhh0B,UAAW,CACV,CAAE1+B,OAAQ,eAAgB0pB,QAAS,aACnC,CAAE1pB,OAAQ,YAAa0pB,QAAS,iBAEjC,oBAAmB,CAClB9xB,KAAMug2B,wBACNvmlB,WAGD58P,EAAAA,kCAAAA,eAAA,mBACCkhB,UAAU,oCACV,aAAW,oBACX8O,MAAO5jC,GACPhF,KAAK,KACL2oC,QAAQ,YACR,kBACA,oBAAmB,CAClBntC,KAAMug2B,wBACNvmlB,SAED3+P,KAAK,aAEN+B,EAAAA,kCAAAA,eAAA,YACC/B,KAAK,UACL7W,KAAK,KACL64C,YAAY,OACZg6nB,YAAU,IAEVj6pB,EAAAA,kCAAAA,eAAA,qCACCmykB,YAAag4Q,EACbn4vB,SAAUA,OAnCbhyF,EAAAA,kCAAAA,eAACqr1B,gBAAM,CAACxC,iBAAkBA,EAAkBjslB,MAAOA,MAyCnDjzO,EAAAA,OAAAA,SAAQwg0B,IAAuB/E,EAS7B,MARHpl1B,EAAAA,kCAAAA,eAACsr1B,oBAAU,CACVn5Q,YAAag4Q,EACblB,uBAAwBA,EACxBj3vB,SAAUA,EACVh3F,SAAUA,EACVku1B,oBAAqBA,EACrBC,8BAA+BA,MAKlCkB,GAAoBxvX,IAAauqX,IACjCpl1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,4BACdlhB,EAAAA,kCAAAA,eAAA,OACC,WAtKgBxgB,IACrBA,EAAEwL,OAAOsX,MAAMoc,QAAU,QAsKpBge,IAAKyozB,GAAaL,EAClBnlzB,IAAKigzB,GAAc8F,aAAamF,GAChC3p0B,UAAU,oBAKbkq0B,IAAcpr1B,EAAAA,kCAAAA,eAACur1B,eAAK,CAACzB,YAAaA,IAAkB,OAIxD,iCAAgBxy1B,EAAKqB,KAAmB,IAAjB,SAAEqC,GAAUrC,EAClC,OAAOqH,EAAAA,kCAAAA,eAAC+p1B,aAAY,CAACzy1B,MAAOA,EAAO0D,SAAUA,GAC7C,GC1MDoK,EAAAA,aAAAA,qBAAoB,6BAA8B,CACjDC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,gCACJ/M,aAAc,CACb4x1B,uBAAuB,EACvBzB,wBAAwB,GAEzB3p2B,WAAY,CAKXk1D,MAAO,CACNjvC,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORok2B,WAAY,CACXzh1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORg5qB,UAAW,CACVr2pB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORki2B,SAAU,CACTv/0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR8sC,KAAM,CACLnqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR8/E,SAAU,CACTn9D,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAO3By/0B,UAAW,CACV5/0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORg91B,WAAY,CACXr60B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR00d,QAAS,CACR/xc,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR8l2B,gBAAiB,CAChBnj1B,QAAS,SACTE,OAAQ,CACP7iB,KAAM,WAQR2l2B,qBAAsB,CACrBhj1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORqn2B,eAAgB,CACf1k1B,QAAS,QACTE,OAAQ,CACP7iB,KAAM,WAOR4o2B,eAAgB,CACfjm1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR6o2B,eAAgB,CACflm1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR8o2B,eAAgB,CACfnm1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR+o2B,eAAgB,CACfpm1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORgp2B,iBAAkB,CACjBrm1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORip2B,iBAAkB,CACjBtm1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORkp2B,gBAAiB,CAChBvm1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORmp2B,gBAAiB,CAChBxm1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORop2B,gBAAiB,CAChBzm1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORqp2B,gBAAiB,CAChB1m1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORsp2B,eAAgB,CACf3m1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORup2B,eAAgB,CACf5m1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORwp2B,iBAAkB,CACjB7m1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORyp2B,iBAAkB,CACjB9m1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR0p2B,iBAAkB,CACjB/m1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR2p2B,iBAAkB,CACjBhn1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR4p2B,gBAAiB,CAChBjn1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR6p2B,gBAAiB,CAChBln1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR8p2B,eAAgB,CACfnn1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR+p2B,eAAgB,CACfpn1B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORsn2B,YAAa,CACZ3k1B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAORim2B,iBAAkB,CACjBtj1B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAQRuh2B,mBAAoB,CACnB5+0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRwh2B,mBAAoB,CACnB7+0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRyh2B,qBAAsB,CACrB9+0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRs0C,UAAW,CACV3xB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WASRqk2B,cAAe,CACd1h1B,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAS3B+h1B,gBAAiB,CAChBli1B,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAO3Bk3P,MAAO,CACNr3P,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAQRou1B,2BAA4B,CAC3Bzr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQRkl2B,qBAAsB,CACrBvi1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR4h2B,SAAU,CACTj/0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORsk2B,aAAc,CACb3h1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORuvlB,YAAa,CACZ5skB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,WAMRun2B,kBAAmB,CAClB1+zB,QAAAA,CAAQr+B,GAAkC,IAA/B9N,YAAY,YAAE6ylB,IAAe/klB,EACvC,OAAIu8B,EAAAA,OAAAA,SAAQwojB,GAAqB,GAC1BnvlB,KAAKG,MAAMgvlB,EACnB,GAMDizQ,YAAa,CACZ7/0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORwn2B,gBAAiB,CAChB7k1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+5pB,eAAgB,CACfp3oB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAKRkn2B,YAAa,CACZvk1B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAORuksB,YAAa,CACZ5hrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORyk2B,iBAAkB,CACjB9h1B,QAAS,QACTE,OAAQ,CACP7iB,KAAM,WAORi4e,SAAU,CACTpvc,QAAAA,CAAQ9yB,GAA0C,IAAvCrZ,YAAY,SAAEwl2B,EAAQ,UAAEK,IAAaxs1B,EAC/C,QAAQgxB,EAAAA,OAAAA,SAAQm7zB,MAAcn7zB,EAAAA,OAAAA,SAAQw7zB,EACvC,GAMDkF,iBAAkB,CACjB9k1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORoi2B,WAAY,CACXz/0B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORqi2B,eAAgB,CACf1/0B,QAASw80B,yBACTt80B,OAAQ,CACP7iB,KAAM,WAORsm2B,oBAAqB,CACpB3j1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORum2B,8BAA+B,CAC9B5j1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR0n2B,sBAAuB,CACtB/k1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORwqB,KAAM,CACL7H,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR2n2B,eAAgB,CACfhl1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR4n2B,mBAAoB,CACnBjl1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR6n2B,sBAAuB,CACtBll1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,aAIToW,eAAgB,CACf,CAAC+ppB,gEAAyB9ppB,GAOvB,IAPyB,SAC3B+B,EAAQ,WACR1b,EACAsZ,QACCC,SAAS,OAAED,EAAM,MAAEgkQ,EAAK,KAAEh6Q,IAC1B,YACD+U,GACAsB,EACA,GAAIrW,GAAQug2B,wBACXxr1B,EAAY,CACX+y1B,uBAAuB,IAExB1v1B,EAAmC,CAAE9Y,OAAO,SACtC,GAAIU,GAAQ8g2B,KAAM,CACxB,MAAM,2BAAE1S,GAA+B1x1B,GAEtC0x1B,GACAh20B,EAAS8r1B,kBAAmB,CAC3BlqlB,MAAO,CACNhkQ,UAEDhW,KANW2g2B,cAQd,KAAO,CACN,MAAM,2BAAEvS,GAA+B1x1B,EACjCsD,EAAOq/1B,iBACZjR,GACAh20B,EAASmw0B,6BAAoB,CAC5Bvy0B,SACAgkQ,MAAKrvQ,kBAAA,CACJw41B,WAAY/D,qBACTpllB,EAAK,CACRh6Q,SAEDA,QAEH,CACD,EACA,CAACkgqB,8DAA0B3ppB,IAQrB,IARsB,SAC3B6B,EAAQ,WACR1b,EACAgY,OAAO,uBAAE2x1B,GACTrw1B,QACCC,SAAS,OAAED,EAAM,MAAEgkQ,EAAK,KAAEh6Q,IAC1B,YACD+U,GACAwB,EACA,MAAM,2BAAE630B,GAA+B1x1B,EACvC,GAAIsD,GAAQ8g2B,KAAM,CACjB,MAAM,2BAAE1S,GAA+B1x1B,GAEtC0x1B,GACAh20B,EAAS8r1B,kBAAmB,CAC3BlqlB,MAAO,CACNhkQ,UAEDhW,KANW2g2B,cAQd,CACI3g2B,IAASwg2B,6BACZzr1B,EAAY,CAAEsx1B,wBAAyBA,KAEtCjY,GACAh20B,EAASmw0B,6BAAoB,CAC5Bvy0B,SACAgkQ,MAAKrvQ,kBAAA,CACJw41B,WAAY/D,qBACTpllB,MAKR,CAACq7f,uCAA4Bz+vB,IAIvB,IAJwB,SAC7BwB,EAAQ,WACR1b,EACAsZ,QAAQ,QAAEC,IACVW,EACA,MAAM,2BAAEw30B,GAA+B1x1B,EACvC0x1B,GACCh20B,EAAS2r1B,wCAAiC9t1B,IAE5C,CAACmqpB,mCAAwBvppB,IAA8B,IAA7B,SAAEuB,EAAQ,WAAE1b,GAAYma,EACjD,MAAM,2BACLu30B,EAA0B,MAC1Bp0kB,EAAK,YACLstlB,EAAW,YACX9E,EAAW,YACXj+J,EAAW,KACX/5qB,EAAI,YACJ4upB,GACG18qB,EACEsr2B,EAAY5uL,OAAcp0qB,EAAYwlB,IAAQwvP,aAAK,EAALA,EAAO2plB,gBACrD3j2B,EAAOwi2B,GAAej+J,EAAc86J,gBAAkBlxK,gBACtD45K,IAAkBhh0B,EAAAA,OAAAA,SAAQug0B,MAAiBvg0B,EAAAA,OAAAA,SAAQizO,IAExDo0kB,GACAh20B,EAASmw0B,6BAAoB,CAC5Bvy0B,OAAQ+x1B,EAAcp91B,kBAAA,GACd281B,EAAa,CAAA980B,KAAMw90B,IACxB,CAAEx90B,KAAMw90B,GACXhulB,MAAKrvQ,kBAAA,CACJw41B,WAAY/D,qBACTpllB,EAAK,CACRh6Q,SAEDA,UAGH,CAACs/1B,qBAAc930B,IAA8B,IAA7B,SAAEpP,EAAQ,WAAE1b,GAAY8qB,EACvC,MAAM,2BACL4m0B,EAA0B,MAC1Bp0kB,EAAK,YACLstlB,EAAW,KACX980B,EAAI,YACJ4upB,GACG18qB,EACEsr2B,EAAY5uL,OAAcp0qB,EAAYwlB,IAAQwvP,aAAK,EAALA,EAAO2plB,gBACrD3j2B,EAAOgq2B,YACPjC,IAAkBhh0B,EAAAA,OAAAA,SAAQug0B,MAAiBvg0B,EAAAA,OAAAA,SAAQizO,IAExDo0kB,GACAh20B,EAASmw0B,6BAAoB,CAC5Bvy0B,OAAQ+x1B,EAAcp91B,kBAAA,GACd281B,EAAa,CAAA980B,KAAMw90B,IACxB,CAAEx90B,KAAMw90B,GACXhulB,MAAKrvQ,kBAAA,CACJw41B,WAAY/D,qBACTpllB,EAAK,CACRh6Q,SAEDA,WAIJmlB,WAAY,CAIX4+0B,gCAAiC,CAChClh1B,OAAQ,CACP7iB,KAAM,WAOR,qDAAsD,CACrD6iB,OAAQ,CACP7iB,KAAM,YAITujB,OAAM,4CACNnO,UAAW,CAAC,CAAEsiB,SAAUC,IAAAA,GAAeiqB,wBAAAA,EAAoBp+B,qBAAAA,MCp5BrD,MAAMym1B,UAAY,OACZC,UAAY,OACZC,MAAQ,QACRC,YAAa9n1B,EAAAA,iBAAAA,GAAE,WACf+n1B,cAAe/n1B,EAAAA,iBAAAA,GAAE,UACjBgo1B,cAAeho1B,EAAAA,iBAAAA,GAAE,WACjBio1B,KAAO,WACP/zH,eAAO,OAEPg0H,SAAW,GACXC,kBAAoB,EACpBC,kBAAoB,EACpBC,mBAAqB,GACrBC,eAAiB,IACjBC,sBAAwB,IACxBC,iBAAkBxo1B,EAAAA,iBAAAA,GAAE,0BACpByo1B,oBAAqBzo1B,EAAAA,iBAAAA,GAAE,+DACvB0o1B,wBAA0B,IAC1BC,8BAAgC,IAChCC,wBAA0B,kBAC1BC,qBAAsB7o1B,EAAAA,iBAAAA,GAAE,WACxB8o1B,qBAAuB,CAChCC,eAAe,EACfC,cAAc,EACdC,iBAAiB,EACjBC,qBAAqB,EACrBC,WAAW,EACXC,WAAW,EACXC,cAAe,EACfC,kBAAmB,EACnBC,aAAc,EACdC,iBAAkBnB,oBAGToB,mBAAqB,qBACrBC,sBAAwB,wBACxB7rM,qDAA4B,4BAC5B8rM,sCAAwC,wCACxCC,uCAAyC,yCACzCC,yCAA2C,2CAE3C92F,oCAA4B,4BAC5B+2F,iCAAmC,mCACnCC,mBAAqB,qBACrBC,kCAAoC,oCACpCC,iCAAmC,mCACnCC,8BAAgC,gCAChCC,2BAA6B,6BAC7BC,qBAAuB,8BC7C9BC,YAAarq1B,EAAAA,iBAAAA,GAAE,iCAAkCsq1B,YAAatq1B,EAAAA,iBAAAA,GAAE,iCACzDuq1B,cAAgB,SAAC7s2B,EAAMmgD,GAAyB,IAAf/S,EAAKprC,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,GAGrD,MAAO,CACN,aAAc,IAHS+kC,EAAAA,OAAAA,SAAQqG,GAAS,GAAK,IAAG9qB,EAAAA,iBAAAA,GAAE8qB,SAGfptC,IAASiq2B,UAAY0C,WAAaC,aACrE,eAAgBzszB,EAASriD,WAE3B,EAEA,4BAAe0M,IAAqC,IAAlC9N,YAAY,KAAEumB,EAAI,MAAEmqB,IAAS5iC,EAK9C,OAHIyY,IAASgn1B,WAAahn1B,IAASin1B,YAClCjn1B,EAAOin1B,YAGP9s1B,EAAAA,kCAAAA,eAAA,YACCA,EAAAA,kCAAAA,eAAA,qBACC5Y,KAAK,KACL2oC,QAASlqB,IAASgn1B,UAAY,UAAY,YAC1C,oBAAmB,CAAEhn1B,KAAMgn1B,WAC3Bn9zB,KAAK,iBACL,kBAAiB6/zB,WACjB,cAAaE,cAAc5C,UAAWhn1B,IAASgn1B,UAAW78zB,MAE3DhwB,EAAAA,kCAAAA,eAAA,qBACC5Y,KAAK,KACL2oC,QAASlqB,IAASin1B,UAAY,UAAY,YAC1C,oBAAmB,CAAEjn1B,KAAMin1B,WAC3Bp9zB,KAAK,YACL,kBAAiB8/zB,WACjB,cAAaC,cAAc3C,UAAWjn1B,IAASin1B,UAAW98zB,KAI7D,GCnCD5qB,EAAAA,aAAAA,qBAAoB,yBAA0B,CAC7CC,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,6BAELvmB,WAAY,CACXumB,KAAM,CACLN,QAASun1B,WAEV98zB,MAAO,CACNzqB,QAAS,KAGXvM,eAAgB,CACf,CAAC+ppB,sDAA4B31pB,IAAmE,IAAlE,iBAAEquB,EAAkB7iB,QAAUC,SAAS,KAAEgN,IAAQ,SAAE7K,GAAU5N,EAC1FquB,EAAiB,CAAE5V,SACnB7K,EAAS4z1B,sBAAuB,CAAE/o1B,KAAMA,QCnBpC,MAAM6p1B,gBAAmB3n2B,IAE/B,IAAIG,EAAUH,EAAOG,QAAUH,EAAOG,QAAUH,EAMhD,OAJAG,EAAUA,EAAQ4V,OAAQokE,GAAWA,EAAOlyC,SAAUrG,EAAAA,OAAAA,SAAQu4C,EAAOlyC,QAAQ5hC,IAAK8zE,GAAM30E,kBAAA,GACnF20E,EAAQ,CAAAhlE,GAAIglE,EAAO0xmB,QAAU1xmB,EAAOhlE,MAGlCnV,EAAOG,QAAOqF,kBAAA,GAAQxF,EAAQ,CAAAG,YAAW,CAAEA,YAGtCqrgB,cAAiB6qJ,GACtBA,SAE2B,IAAjCA,EAAevwoB,OAAO7sB,OCLlB2u2B,gBAAmBzn2B,GAAYA,EAAQkG,IAAKyvmB,GAAGtwmB,kBAAA,GAAUswmB,EAAK,CAAA7tkB,OAAO9qB,EAAAA,iBAAAA,GAAE24lB,EAAI7tkB,UAE3E4/zB,YAAe9guB,IACpB,MAAM,SAAEkqiB,EAAUjxqB,QAAQ,QAAEmmyB,EAAO,QAAEhmyB,EAAO,KAAE2d,EAAI,eAAEu4oB,GAAgB,MAAEpunB,GAAU8+F,EAGhF,KAAIkqiB,KAAYrvoB,EAAAA,OAAAA,SAAQzhC,KAKlBgmyB,IAAW5ooB,EAAAA,OAAAA,WAAUjhK,OAAO6pyB,MAAc6+D,MAAhD,CAIA,GAAI/zL,EAAU,CACb,IAAI18Y,GAAkBp1R,EAAAA,OAAAA,KAAIgB,EAAQ,GAAI,MAGjCqrgB,cAAc6qJ,KAClB9hY,EAAkB8hY,GAGnB,MAAMl9nB,EAAY,kBAAiBmkI,EAAAA,OAAAA,WAAUr1H,KAC7C,OACChwB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAaA,IACjBlhB,EAAAA,kCAAAA,eAAA,0BAAwBgwB,MAAOA,KAC/BhwB,EAAAA,kCAAAA,eAAA,gBACCsS,MAAOq90B,gBAAgBzn2B,GACvBsS,OAAO,SACP,iBAAgB,CAAC8hR,GACjBl1R,KAAK,KACL2oC,QAAQ,YACR,cAAa,CAAE,aAAcC,KAIjC,CAEA,OACChwB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,kBACdlhB,EAAAA,kCAAAA,eAAA,0BAAwBgwB,MAAOA,KAC/BhwB,EAAAA,kCAAAA,eAAA,0BAAwB6F,KAAMA,EAAMmqB,MAAO,GAAGA,cA7BhD,GAkCD,yBAAgB14B,IACf,MAAM,aAAEu41B,EAAY,aAAEC,EAAY,WAAEC,EAAU,WAAEC,EAAU,eAAE5xM,GAAmB9mpB,EAAMhY,WAErF,IAAI2w2B,EAAkB1i2B,kBAAA,GAClBui2B,EAAY,CACf5hE,SAAU8hE,EACV5xM,mBAGD,OACCp+oB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,qBACdlhB,EAAAA,kCAAAA,eAAC4v1B,YAAW,CAAC5/zB,MAAOi9zB,aAAcll2B,OAAQko2B,EAAoBj3L,UAAU,KACxEh5pB,EAAAA,kCAAAA,eAAC4v1B,YAAW,CAAC5/zB,MAAOg9zB,WAAYjl2B,OAAQgo2B,EAAY/2L,UAAU,KAC9Dh5pB,EAAAA,kCAAAA,eAAC4v1B,YAAW,CAAC5/zB,MAAOk9zB,aAAcnl2B,OAAQ8n2B,IAG5C,E,8HClEDzq1B,EAAAA,aAAAA,qBAAoB,sBAAuB,CAC1CC,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,0BAELM,OAAM,+BACN7mB,WAAY,CACXuw2B,aAAc,CACbtq1B,QAAS,CACR2oxB,SAAS,EACTroxB,KAAMin1B,YAGRiD,WAAY,CACXxq1B,QAAS,CACR2oxB,SAAS,EACThmyB,QAAS,KAGX4n2B,aAAc,CACbvq1B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,YAIT+5B,cAAAA,CAAerlB,GACd,MAAM,WAAEy41B,EAAYD,cAAc,aAAEA,EAAY,WAAEE,EAAU,eAAE5xM,IAAqB9mpB,EAAMhY,WACnFA,EAAUiO,kBAAA,GACZ+J,EAAMhY,WAAU,CACnByw2B,WAAYL,gBAAgBK,GAC5BD,aAAcJ,gBAAgBI,GAC9BE,aACA5xM,mBAED,OAAA7wpB,kBAAA,GAAY+J,EAAO,CAAAhY,cACpB,EACA0Y,UAAW,CACV,CACCsiB,SAAUC,IAAAA,MC5Cb,kCAAentB,EAA6D4N,KAAa,IAAxE1b,YAAY,QAAEsrC,EAAO,aAAEsl0B,EAAY,MAAE/oC,EAAK,WAAEsK,IAAark0B,EACzE,MAAM+i2B,EAAiB,+BAA+Bvl0B,IAChDwl0B,EAAgB,sBAAsB3+B,IACtCvyvB,EAAiB,IAAI12D,gBAAemB,EAAAA,OAAAA,UAAU9a,IACnD,IAAK,MAAMD,KAASC,EAAS,CAC5B,MAAMwh2B,EAAczh2B,EAAM6Z,YAAY1G,MACtC/G,EAASs01B,qBAAsB,CAACe,eACjC,GACE5C,wBAEG6C,EAAY,CACjB,oBAAuB,UAAU1l0B,aAAmB5rB,KAAKsmB,MAAM4q0B,eAGhE,OAEClw1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAWiv0B,EAAgB7t1B,MAAOgu1B,EAAWni1B,KAAM,CACvDyrS,OAAQjhT,IAAA,IAAC,IAACwK,GAAIxK,EAAA,OAAKumE,EAAet2D,QAAQzF,IAC1C45B,QAAS9jC,IAAA,IAAC,IAACkK,GAAIlK,EAAA,OAAKimE,EAAen2D,UAAU5F,MAG5CgkzB,EAAM/4zB,IAAIoj0B,IAAQxxzB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAWkv0B,GAAe,IAAE5+B,EAAK,MAK3D,E,oICxBDpszB,EAAAA,aAAAA,qBAAoB,wBAAyB,CAC5CC,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,4BAELM,OAAM,iCACN7mB,WAAY,CACX6n0B,MAAO,CACN5hzB,QAAS,IAEVkszB,WAAY,CACXlszB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,QAGrBwq1B,aAAc,CACb3q1B,QAAS,IACTE,OAAQ,CACP7iB,KAAM,WAGRgoC,QAAS,CACRrlB,QAAS,EACTE,OAAQ,CACP7iB,KAAM,YAITsuyB,eAAgB55xB,IACf,MAAM,QAACszB,GAAWtzB,EAAMhY,WAClBA,EAAUiO,kBAAA,GACZ+J,EAAMhY,WAAU,CACnBsrC,QAASA,IAEV,OAAAr9B,kBAAA,GAAW+J,EAAO,CAAAhY,kBCzCpB,iCAAe8N,IAA2C,IAAzC9N,YAAY,MAAE6n0B,EAAK,aAAE+oC,IAAe9i2B,EACpD,MAEMkj2B,EAAY,CACjB,oBAAuB,oBAAoBtx1B,KAAKsmB,MAAM4q0B,eAGvD,OAEClw1B,EAAAA,kCAAAA,eAAA,MAAIkhB,UARkB,8CAQS5e,MAAOgu1B,GACnCnpC,EAAM/4zB,IAAIoj0B,IAASxxzB,EAAAA,kCAAAA,eAAA,MAAIkhB,UAAU,sBAAsBswyB,IAI3D,E,oICRDpszB,EAAAA,aAAAA,qBAAoB,wBAAyB,CAC5CC,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,4BAELM,OAAM,iCACN7mB,WAAY,CACX6n0B,MAAO,CACN5hzB,QAAS,IAEV2q1B,aAAc,CACb3q1B,QAASio1B,eACT/n1B,OAAQ,CACP7iB,KAAM,c,qICCV,MACC6X,yBAAwB,gDACxB0c,mBAAkB,0CAClBlgB,uBAAsB,8CACtBH,2BAA0B,kDAC1Bu/B,kCAAiCA,0DAC9Bl/B,aAAAA,YAEEyd,YAAcA,CAACjd,EAAaygG,EAAMj0G,KACvC,MAAMos2B,EAAWps2B,EAAM,EACvBwT,EAAY,CACXY,KAAM,iBACNC,UAAW,MACXtW,MAAO,CAACi0C,IAAKiiE,EAAM1jF,SAASxP,EAAAA,iBAAAA,GAAE,WAAYqr1B,GAAW/41B,QAAQ,MAIzD0c,YAAevc,IACpBA,EAAY,CACXY,KAAM,iBACNC,UAAW,MACXtW,MAAO,CAACi0C,IAAK,KAAMzhB,QAAS,GAAIld,QAAQ,MAIpCg51B,qBAAuBA,CAAC/B,EAAcgC,IACvChC,EAAe,EACX,EAEJA,GAAgBgC,EACZA,EAAa,EAEdhC,EAGFiC,wBAA0BA,CAC/BC,EACAC,EACAH,KAEA,MAAMI,EAAkBD,EAAqB,EAE7C,GAAIrg2B,MAAMog2B,IAAsC,KAAnBA,EAC5B,OAAOzr1B,EAAAA,iBAAAA,GACN,yCACA2r1B,EACAJ,GAIF,MAAMK,EAAkBhu1B,OAAO6t1B,GAE/B,OAAIG,EAAkB,GAAKA,GAAmBL,GACtCvr1B,EAAAA,iBAAAA,GACN,iDACA2r1B,EACAJ,IAIKvr1B,EAAAA,iBAAAA,GAAE,8BAA+B2r1B,EAAiBJ,IAGpD7ryB,qCAAgBA,CAACplE,EAAGwb,EAAUyz1B,EAAcgC,KACjD,MAAM,IAACts2B,EAAG,OAAE6G,GAAUxL,EAEtB,GAAY,UAAR2E,EAAiB,CACpB,MAAMws2B,EAAiB3l2B,EAAO9I,MAAM2rB,OAC9Bij1B,EACLvg2B,MAAMog2B,IAAqC,IAAlBA,EACtBlC,EACA3r1B,OAAO6t1B,EAAiB,GACtBC,EAAqBJ,qBAC1BM,EACAL,GAEK9+G,EAAkB++G,wBACvBC,EACAC,EACAH,GAGDzl2B,EAAO9I,MAAQ0u2B,EAAqB,EAEpC511B,EAAS,2CAA4C,CACpD9Y,MAAO0u2B,IAGR511B,EAASq7B,yDAAmC,CAC3CxqC,QAAS8lvB,EACT/uvB,KAAM,UAER,GAGKiiD,kCAAaA,CAACrlD,EAAGmY,EAAa821B,EAAcgC,KACjD,MAAM,OAACzl2B,GAAUxL,EACXgmE,EAAax6D,EAAO9I,MAAM2rB,QAG/Btd,MAAMi1D,IACS,KAAfA,GACAA,GAAc,GACdA,EAAairyB,KAEbjx2B,EAAEwL,OAAO9I,MAAQus2B,EAAe,GAGjC921B,EAAY,CAAC8sD,UAAU,KAGlBssyB,WAAa3j2B,IAAyD,IAAxD,IAACjJ,EAAG,SAAE4+C,EAAQ,SAAE/nC,EAAQ,YAAErD,EAAW,YAAE0tC,GAAYj4C,EACtE,MAAMmj2B,EAAWps2B,EAAM,EACjB6s2B,GAAY99zB,EAAAA,kCAAAA,aAClB,OACClzB,EAAAA,kCAAAA,eAAA,UACC7b,IAAKA,EACLvB,KAAK,SACLuzC,IAAK66zB,EACLlr1B,MAAO,CACN,iCAAiC,EACjC,cAAei9B,GAEhB,cAAY79B,EAAAA,iBAAAA,GAAE,WAAYqr1B,GAC1B,eAAcxtzB,EAAW,OAAS,QAClC,cAAa5+C,EACb,WAAUs6C,KACTzjC,EAAS,KACD,CACNpY,KAAM,2CACNiW,QAAS,CACR3W,MAAOiC,MAKV6yB,WAAW,KACVg60B,EAAU18zB,QAAQv6B,SAChB,KAEJ,gBAAgBva,IACf,MAAM44G,EAAO54G,EAAEwL,QACfipB,EAAAA,gBAAAA,GAASoxB,EAAa,IAAMzwB,YAAYjd,EAAaygG,EAAMj0G,KAE5D,aAAa3E,IACZ,MAAM44G,EAAO54G,EAAEwL,QACfipB,EAAAA,gBAAAA,GAASoxB,EAAa,IAAMzwB,YAAYjd,EAAaygG,EAAMj0G,KAE5D,gBAAe6xC,MACd/hB,EAAAA,gBAAAA,GAASoxB,EAAa,IAAMnxB,YAAYvc,KAEzC,cAAau+B,MACZjiB,EAAAA,gBAAAA,GAASoxB,EAAa,IAAMnxB,YAAYvc,OAGzCqI,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,uBAAuB,cAAY,qBACjDqv0B,KAMCU,YAAcA,CAAC7xuB,EAAOsvuB,EAAkBD,EAAcyC,KAC3D,IACI3xR,EAAUvviB,EADVsviB,EAAamvR,EAAeC,EAAmB,EAmBnD,OAbCnvR,EAHAmvR,EAAmBtvuB,IAClBqvuB,EAAe,GAAKC,EAAmBtvuB,EAE7BA,GAECqvuB,EAAe,GAAKC,EAIhC1+zB,EADGkh0B,IAEiB,IAAV9xuB,GACFl6G,EAAAA,iBAAAA,GAAE,sBAEFA,EAAAA,iBAAAA,GAAE,yBAA0Bo6jB,EAAYC,EAAUngd,KAI1Dp/G,EAAAA,kCAAAA,eAAA,KAAGkhB,UAAU,4CACZlhB,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,uBAAuB,cAAY,oBACjD8O,KAMCmh0B,wBAA0BA,CAAChl1B,EAAOsk1B,KACrBlw0B,EAAAA,2BAAAA,IAAY,CAC7BI,aAAcxU,EAAM,4CACpBsU,UAAWtU,EAAM,wCACjBuU,WAAYvU,EAAM,yCAClBwE,SAAU,GAAGxE,EAAM,2CAA2CsE,OAC9D+P,WAAYrU,EAAM,0CAEZ+tuB,CAAUu2G,EAAW/v2B,YAGvBmlB,4BAAOA,CAACvO,EAAKqB,KAA8B,IAA5B,SAACqC,EAAQ,YAAErD,GAAYgB,EAC3C,MAAM,MACLymH,EAAK,aACLqvuB,EAAY,UACZ2C,EAAS,gBACTC,EAAe,cACfpD,EAAa,iBACbO,EAAgB,aAChBD,EAAY,aACZL,EAAY,kBACZoD,EAAiB,gBACjBnD,EAAe,oBACfC,EAAmB,UACnBC,EAAS,iBACTK,EAAgB,aAChB6C,EAAY,cACZC,EAAa,WACbN,EAAU,cACVO,EAAa,WACb7h0B,EAAU,MACVrxB,GACGjH,EAAMhY,YAEJ,SAACmlE,GAAYntD,EAEbm51B,EAAae,GAAiBxy1B,KAAK8f,KAAKsgG,EAAQsvuB,GAEtD,IAAIgD,EAAuBlB,qBAAqB/B,EAAcgC,GAE1DkB,EAAoB,IAAVvyuB,GAAwC,IAAzBsyuB,GAA6C,IAAfjB,EAEvDmB,EAAmB,IAAVxyuB,GAAesyuB,IAAyBjB,EAAa,EAElE,MAAMoB,EAAmB7y1B,KAAKsmB,MAAMis0B,EAAe,GAEnD,IAAIO,EAMHA,EAHAJ,EAAuBG,GAAoB,GAC3CpB,EAAac,EAEW,EAIxBG,EACAjB,EAAac,EAAeM,EAEJpB,EAAac,EAEbG,EAAuBG,EAGhD,MAAME,EAAuB/y1B,KAAKkE,IACjC4u1B,EAAwBP,EAAe,EACvCd,EAAa,GAGRuB,EAAkC,YAApBX,EACdY,EAAgC,UAApBZ,EA2MlB,OACCrx1B,EAAAA,kCAAAA,eAAA,MAAAzS,kBAAA,CACCuY,MAAO,CACN,0BAA0B,EAC1B,iBACCuo1B,GACAJ,GACAC,GACAC,GACAC,EACD,oBAAqBC,GAAaD,EAClC,sBAAuBkD,GAExB,cAAYps1B,EAAAA,iBAAAA,GAAE,gBACVqY,EAAAA,2BAAAA,IAAqBqS,EAAY,eAEnCy+zB,OAECzm2B,EADAqp2B,YAAY7xuB,EAAOsvuB,EAAkBgD,EAAsBR,IAE9Dlx1B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,gCAAgC,EAChC,kBAAmBuo1B,GAAaD,EAChC,kBAAmBC,GAAaD,EAChC,oBAAqB6D,IAGpBhE,OAAoCrm2B,GAlOvCoY,EAAAA,kCAAAA,eAAA,qBACCkhB,UAAU,uCACV,cAAY,cACZwO,KAAK,2BACLS,MAAI,EACJJ,QAAQ,WACR,mBAAiB7qB,EAAAA,iBAAAA,GAAE,cACnB3N,SAAUo61B,EACV,cAAa,CAAC1h0B,OAAQ,CAAC,cAAc/qB,EAAAA,iBAAAA,GAAE,gBACvC,oBAAmB,CAClBkzF,KAAM,KAyNLo2vB,OAA0C5m2B,EAnNpBsq2B,MAC1B,MAAMC,EAAWR,EAAU,EAAID,EAAuB,EAEtD,OACC1x1B,EAAAA,kCAAAA,eAAA,qBACCkhB,UAAU,uCACV,cAAY,iBACZwO,KAAK,sBACLS,MAAI,EACJJ,QAAQ,WACR,mBAAiB7qB,EAAAA,iBAAAA,GAAE,iBACnB3N,SAAUo61B,EACV,cAAa,CACZ1h0B,OAAQ,CACP,aAAc0h0B,GACXzs1B,EAAAA,iBAAAA,GAAE,kBACFA,EAAAA,iBAAAA,GAAE,qBAAsBit1B,EAAW,KAGxC,oBAAmB,CAClB/5vB,KAAM+5vB,MA+LcD,IACnB/D,GAAmB6D,EA1LEI,MACzB,IAAIC,EAAc,GAElB,IAAK,IAAI1w2B,EAAImw2B,EAAuBnw2B,EAAIow2B,EAAuB,EAAGpw2B,IACjE0w2B,EAAY3r2B,KACXqq2B,WAAW,CACV5s2B,IAAKxC,EACLohD,SAAUphD,IAAM+v2B,EAChB121B,WACArD,cACA4G,WAKH,OACCyB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,mBACbmx0B,GACDry1B,EAAAA,kCAAAA,eAAA,eACC9C,GAAG,UACH,mBACA1F,OAAQF,EAAMugpB,eAAergpB,OAC7B,aAAYF,EAAMugpB,eAAe1hnB,IACjCzhB,QAASpd,EAAMugpB,eAAenjoB,QAC9BM,MAAO,CAACyxD,KAAM,EAAGC,KAAM,OAkKW0rxB,QAAsBxq2B,GACvDum2B,GAAmB8D,EA7JAK,MACvB,MAAMphzB,EAAY,cAAc3yC,IAC1Bg01B,EAAkB,eAAeh01B,IAEjCi01B,GAAgBtt1B,EAAAA,iBAAAA,GACrB,CACC4qB,KAAM,wCACNjkC,QAAS,kBACTojC,QACC,mEAEF,CAACwh0B,eAGF,OACCzw1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,2CACdlhB,EAAAA,kCAAAA,eAAA,SACC9C,GAAI,cAAcqB,UAClB2iB,UAAU,qCACV8xB,QAAS9B,IAETlxC,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,yBAAwBhc,EAAAA,iBAAAA,GAAE,WAE3ClF,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,qCAAqC,EACrC,YAAa2+C,KAGdzkD,EAAAA,kCAAAA,eAAA,SACC9C,GAAIg0C,EACJ,mBAAkBqhzB,EAClB9y2B,KAAM,sBAAsB8e,IAC5B3b,KAAK,SACLuqD,aAAa,MACbjsB,UAAU,sCACV,WAAU6X,IAAMphC,EAAY,CAAC8sD,UAAU,IACvC,aAAa15D,GACZ65D,qCAAc75D,EAAOiQ,EAAU021B,EAAsBjB,GAEtD,UAAU1l2B,GACT85C,kCAAW95C,EAAO4M,EAAa+51B,EAAsBjB,GAEtDvu2B,MAAOwv2B,EAAuB,MAGhC1x1B,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,uBAAuBhkB,GAAIq11B,GACzCC,KA8G+BF,QAAoB1q2B,EACnD2m2B,OAAkC3m2B,EAzGhB6q2B,MACtB,MAAMC,EAAWd,EAASF,EAAuBA,EAAuB,EAExE,OACC1x1B,EAAAA,kCAAAA,eAAA,qBACCkhB,UAAU,uCACV,cAAY,aACZwO,KAAK,oBACLS,MAAI,EACJJ,QAAQ,WACR,mBAAiB7qB,EAAAA,iBAAAA,GAAE,aACnB3N,SAAUq61B,EACV,cAAa,CACZ3h0B,OAAQ,CACP,aAAc2h0B,GACX1s1B,EAAAA,iBAAAA,GAAE,cACFA,EAAAA,iBAAAA,GAAE,iBAAkBwt1B,EAAW,KAGpC,oBAAmB,CAClBt6vB,KAAMs6vB,MAqFUD,GACfvE,OAAkCtm2B,GA9ErCoY,EAAAA,kCAAAA,eAAA,qBACCkhB,UAAU,uCACV,cAAY,aACZwO,KAAK,yBACLS,MAAI,EACJJ,QAAQ,WACR,mBAAiB7qB,EAAAA,iBAAAA,GAAE,aACnB3N,SAAUq61B,EACV,cAAa,CAAC3h0B,OAAQ,CAAC,cAAc/qB,EAAAA,iBAAAA,GAAE,eACvC,oBAAmB,CAClBkzF,KAAMq4vB,EAAa,MAsEnBrC,OAECxm2B,EAlEyB+q2B,EAACvB,EAAW1C,KACzC,MAAMkE,EAAkBxB,EAAUhj2B,IAAKhH,IAC/B,CAAC8V,GAAI,GAAG9V,IAAQ4oC,MAAO,GAAG5oC,OAGlC,OACC4Y,EAAAA,kCAAAA,eAAA,gBACC,cAAY,oBACZsS,MAAOsg1B,EACP1x0B,UAAU,kCACV6O,QAAQ,YACR,kBACAmd,YAAakkzB,EAAU,GACvB,iBAAgB,CAAC/s2B,OAAOqq2B,IACxB1+zB,MAAOyh0B,IAAiBvs1B,EAAAA,iBAAAA,GAAE,oBAC1B,aAAW,KACX,iBAAe,QACf,kBAAiB,CAChB2P,SAAU,CACT,qBACA,qBACA,oBACA,4BAGFsb,MAAI,KAwCFwi0B,CAAsBvB,EAAW1C,MA8BvCx9zB,EAAAA,6BAAAA,IAAsB,yBAA0B,CAC/C5xC,WAAY,CAMXiy2B,aAAc,CAAC9r1B,OAAQ,CAAC7iB,KAAM,UAAWqvC,QAAS,GAAI1sB,QAAS,GAQ/D65G,MAAO,CACN35G,OAAQ,CAAC7iB,KAAM,UAAWqvC,QAAS,IAQpCw8zB,aAAc,CACbxz0B,YAAY,EACZxV,OAAQ,CAAC7iB,KAAM,UAAWqvC,QAAS,GACnC1sB,QAAS,GASVst1B,mBAAoB,CAACtt1B,SAAS,EAAOE,OAAQ,CAAC7iB,KAAM,YAOpDyu2B,gBAAiB,CAChB9r1B,QAAS,UACTE,OAAQ,CAAC7iB,KAAM,SAAU8iB,KAAM,CAAC,UAAW,WAO5C2o1B,UAAW,CAAC5o1B,OAAQ,CAAC7iB,KAAM,YAO3Bqr2B,cAAe,CAACxo1B,OAAQ,CAAC7iB,KAAM,YAO/B4r2B,iBAAkB,CAAC/o1B,OAAQ,CAAC7iB,KAAM,YAOlC2r2B,aAAc,CAAC9o1B,OAAQ,CAAC7iB,KAAM,YAO9Bsr2B,aAAc,CAACzo1B,OAAQ,CAAC7iB,KAAM,YAO9Bur2B,gBAAiB,CAAC1o1B,OAAQ,CAAC7iB,KAAM,YASjCwr2B,oBAAqB,CAAC3o1B,OAAQ,CAAC7iB,KAAM,YAOrC0u2B,kBAAmB,CAAC7r1B,OAAQ,CAAC7iB,KAAM,YAOnCwu2B,UAAW,CACVh6zB,UAAU,EACV3xB,OAAQ,CAAC7iB,KAAM,QAAS0vB,MAAO,CAAC1vB,KAAM,YACtC2iB,QAAS,CAAC,GAAI,GAAI,GAAI,MAQvBmp1B,iBAAkB,CACjBzz0B,YAAY,EACZxV,OAAQ,CAAC7iB,KAAM,WACf2iB,QAAS,IASVut1B,uBAAwB,CAACvt1B,SAAS,EAAOE,OAAQ,CAAC7iB,KAAM,YAOxD4u2B,cAAe,CAAC/r1B,OAAQ,CAAC7iB,KAAM,YAO/B6u2B,cAAe,CAAChs1B,OAAQ,CAAC7iB,KAAM,WAM/Bsu2B,WAAY,CAACzr1B,OAAQ,CAAC7iB,KAAM,WAe5BgtC,WAAY,CACXiC,aAAa,EACbpsB,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACXyga,WAAY3xX,oBAAAA,IAEbF,sBAAsB,KAIzBp1B,aAAc,CAIb++oB,eAAgB,CAAC1hnB,IAAK,KAAMzhB,QAAS,GAAIld,QAAQ,GAIjDitD,UAAU,GAEXzrD,eAAczL,kBAAA,IACV+5E,EAAAA,gBAAAA,IAA2BpzD,aAAY,CAC1C,CAACzZ,iDAA2BxB,IAA+B,IAA9B,KAACvB,EAAI,WAAEpY,EAAU,MAAEgY,GAAM2B,EACrD,GAAmC,UAA/B3Z,EAAW+x2B,gBACd,OAGD,MAAM,MAACll1B,GAAS7U,EAAMU,WAChB,MAAConH,EAAK,UAAEgyuB,EAAS,cAAEI,GAAiBly2B,EACpCyz2B,EAAc3B,EAAUpw2B,OAAS,EAAIge,KAAKkE,OAAOku1B,GAAa,EAC9DX,EAAae,GAAiBxy1B,KAAK8f,KAAKsgG,EAAQ2zuB,GAChDC,EAAuB7B,wBAAwBhl1B,EAAOsk1B,GACtDhtzB,EAAc/rC,EAAKU,WAAWC,cACnC,wCAEGorC,IACHA,EAAYnhC,MAAMo2B,WAAa,GAAGs6zB,QAGpC,CAAC770B,2CAAqBhe,IAAwB,IAAvB,KAACzB,EAAI,WAAEpY,GAAW6Z,EACxC,MAAM,gBAACk41B,GAAmB/x2B,EACpB6tF,EAAWz1E,EAAKU,WAAWonB,cAEjC,GAAI2tD,SAAAA,EAAU51E,SAAU,CACvB,MAAM+qD,EACe,UAApB+uyB,EACG351B,EAAKU,WAAWC,cAChB,wCAEAX,EAAKU,WAAWC,cAAc,sBAE9BiqD,GACHA,EAAYvoD,OAEd,GAED,CAAC9C,+CAAyBuC,IAAkB,IAAjB,WAACla,GAAWka,EACtC,MAAM6rC,EAAc/lD,EAAWif,OAC/BwV,EAAAA,gBAAAA,IAAWsxB,IAEZ,CAACvuC,mDAA0B2C,GAAsB,IAApB,SAACuB,EAAQ,OAAEpC,GAAOa,EAC9C,MAAM,KAACha,EAAI,MAAEyC,EAAK,cAAEg3C,GAAiBtgC,EAAOC,QAC/B,UAATpZ,GAAoByC,EAAQg3C,GAC/Bl+B,EAAS,KACD,CACNpY,KAAM,2CACNiW,QAAS,CAAC3W,MAAO,KAIrB,EACA,4BAA2BkoB,GAAqB,IAApB,OAACxR,EAAM,SAAEoC,GAASoP,EAC7CpP,EAAS,KAAM,CACdpY,KAAM,2CACNiW,QAAS,CACR3W,MAAO0W,EAAOC,QAAQu/F,QAGzB,EACA,kCAAmCrjE,IAAwB,IAAvB,SAAC/5B,EAAQ,OAAEpC,GAAOm8B,EACrD/5B,EAAS,KACD,CACNpY,KAAM,gDACNiW,QAAS,CAAC3W,MAAO4gB,OAAOlK,EAAOC,QAAQ3W,MAAM,QAG/C8Y,EAAS,KACD,CACNpY,KAAM,2CACNiW,QAAS,CAAC3W,MAAO,SAKrB6lB,WAAY,CAOX,2CAA4C,CAC3CtC,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACX4C,MAAO,CAACU,KAAM,cAKlBoV,UAAW,CACV,CAACsiB,SAAUib,mBAAAA,IACX,CACCjb,SAAUkb,mBAAAA,EACVttC,QAAS,CACRoqB,MAAO,CACN,2CACA,uCACA,wCACA,wCACA,8CAKJnM,OAAM,kCACNN,KAAIA,8B,qQCz0BL,MAAOpmB,GAAAA,gCAAMkT,GAAAA,oCAAWsD,2DAClB2sB,oCAAYr+B,OAAOu2C,iCACxBv2C,OAAOu2C,kCAAoC,CAAC,EACxClY,oCAASnjC,mCACbmjC,oCAASnjC,iCAAQkT,oCCPX,MAAMs81B,6BAAqB,qBACrBgE,wBAA0B,gCCEjCC,0CACL,qDACKC,oDACL,qDACKC,iDACL,kDAUYC,eAAiBA,CAAC371B,EAAM471B,EAAiB77xB,KACrD,GAAI67xB,EAAiB,KAAAzs1B,EACpB,MAAMyL,GAA6C,QAArCzL,EAAAnP,EAAKU,WAAWC,cAAc,eAAO,IAAAwO,OAAA,EAArCA,EAAuCtH,kBAAmB,GAExE,IAAK,MAAMqT,KAAQN,EAClBM,EAAK0g1B,GAAmB77xB,CAE1B,GAQY87xB,uBAAyBC,GAC9BA,EACL5h2B,OAAO,CAACyb,EAAK7W,IACN6W,EAAIja,OAAOoD,EAAaiJ,UAC7B,IACFrR,IAAI2iH,GAAMA,EAAGn4G,QACbkF,OAAOizG,GAAMA,EAAG0ivB,0BAChBrl2B,IAAI2iH,GAAMA,EAAGu/tB,cAGH30E,4CAAwBh6vB,IACpC,MACC/I,QACCC,SAAS,KAACpZ,EAAI,MAAEyC,EAAK,cAAEg3C,IACvB,WACD55C,EAAU,KACVoY,GACGiK,EAEJ,IACW,cAATliB,GAAiC,uBAATA,IACzByC,KACCwjD,EAAAA,OAAAA,SAAQxjD,EAAOg3C,GACf,CACD,MAAM,mBACLs6zB,EACAE,WAAW,gBAACJ,IACTh02B,EAEEq02B,EAAyBC,0BAA0Bjy1B,GACzD,IAAIgoB,EAAAA,OAAAA,SAAQgq0B,GACX,OAGD,GAAa,uBAATl02B,IAAiCkqC,EAAAA,OAAAA,SAAQ6p0B,GAC5C,OAID,MAAMK,EAAWN,uBAAuBC,GAGxC,IAAKK,EAAS7y2B,OAIb,YADAqy2B,eAAe371B,EAAM471B,EAAiBE,GAIvCM,0BAA0Bny1B,EAASky1B,EAAUF,EAC9C,GAGKG,0BAA4BA,CAACny1B,EAASky1B,EAAU1i1B,KACrD,MACCvY,QACCC,SAAS,MAAC3W,EAAK,cAAEg3C,IACjB,SACDl+B,EACA1D,OAAO,wBAACy81B,EAA0B,CAAC,GACnCz02B,YAAY,mBACXk02B,EACAE,WAAW,YAAC9mM,EAAW,kBAAEonM,EAAiB,WAAEC,EAAU,MAAE37mB,EAAK,gBAAEg7mB,IAC/D,KACD571B,GACGiK,GAEE,yBAACuy1B,EAAwB,oBAAEC,GAAuBhj1B,EACxD,GAAIgj1B,EAUH,YARAn51B,EAASk41B,0CAA2C,CACnDW,WACAO,aAAcF,EACd57mB,QACAs0a,cACAonM,oBACAC,eAIF,IAAItq0B,EAAAA,OAAAA,SAAQoq0B,KAA4Bpq0B,EAAAA,OAAAA,SAAQuP,GAI/C,YADAm6zB,eAAe371B,EAAM471B,EAAiBE,GAIvC,IAAI,qBAACa,GAAwBlj1B,EACxBkj1B,EAAqBrz2B,SAAQqz2B,EAAuBny2B,EAAMoy2B,iBAAmB,IAElFC,yBACCV,EACAQ,EACAN,EACA,IAAIP,GACJ971B,EACA471B,IAIIM,0BAA4Bjy1B,IACjC,MACC/I,QACCC,SAAS,MAAC3W,EAAK,cAAEg3C,IAElB55C,YACCo02B,WAAW,aAACU,EAAe,KAE5B981B,OAAO,wBAACy81B,EAA0B,CAAC,GAAE,YACrCp81B,GACGgK,EAEJ,IAAIuy1B,EAA2B,GAC3BG,EAAuB,GACvBF,GAAsB,EAE1B,OACExq0B,EAAAA,OAAAA,SAAQuP,KACPwM,EAAAA,OAAAA,SAAQxjD,EAAM0qqB,YAAa1znB,EAAc0znB,eACzClnnB,EAAAA,OAAAA,SAAQxjD,EAAM8x2B,kBAAmB96zB,EAAc86zB,qBAC/CtuzB,EAAAA,OAAAA,SAAQxjD,EAAMo2P,MAAOp/M,EAAco/M,SACnC5yM,EAAAA,OAAAA,SAAQxjD,EAAMky2B,aAAcl7zB,EAAck7zB,eAIjC1uzB,EAAAA,OAAAA,SAAQxjD,EAAMsy2B,YAAat7zB,EAAcs7zB,eAIzC9uzB,EAAAA,OAAAA,SAAQxjD,EAAM+x2B,WAAY/6zB,EAAc+6zB,YAGnD/x2B,EAAMuy2B,eACNvy2B,EAAMwy2B,iBACLhvzB,EAAAA,OAAAA,SAAQxjD,EAAMuy2B,cAAev7zB,EAAcu7zB,gBAC5Cvy2B,EAAMwy2B,cAAc1z2B,QAKpBqz2B,EAAuBny2B,EAAMwy2B,eAAiB,GAC9CR,EAA2BG,EAC3BF,EAAsBD,EAAyBlz2B,SACpC0kD,EAAAA,OAAAA,SAAQxjD,EAAMoy2B,gBAAiBp7zB,EAAco7zB,mBAGxDD,EAAuBny2B,EAAMoy2B,iBAAmB,GAMhDJ,EAA2BS,qBAAqBP,EAAcL,GAC9DI,EAAsBE,EAAqBrz2B,QAAUkz2B,EAAyBlz2B,QAvB9Emz2B,GAAsB,EA0BhB,CAACD,2BAA0BG,uBAAsBF,yBA7BvDx81B,EAAY,CAACo81B,wBAAyB,CAAC,IAChC,CAAC,GAJD,CAAC,GAmCGY,qBAAuBA,CAACP,EAAcL,IAC3Cpz2B,OAAO4F,KAAKwt2B,GAAyB/y2B,QACzCs6F,EAAAA,OAAAA,YAAW84wB,EAAczz2B,OAAO4F,MAAK0d,EAAAA,OAAAA,MAAK8v1B,KAC1CK,EAeEG,yBAA2B,WAO5B,IALJD,EAAe1v2B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,GAClBmv2B,EAAuBnv2B,UAAA5D,OAAA,EAAA4D,UAAA,QAAAgD,EACvB4r2B,EAAkB5u2B,UAAA5D,OAAA,EAAA4D,UAAA,QAAAgD,EAClB8P,EAAI9S,UAAA5D,OAAA,EAAA4D,UAAA,QAAAgD,EACJ0r2B,EAAe1u2B,UAAA5D,OAAA,EAAA4D,UAAA,QAAAgD,EAEXq5c,GAAU,GAPNr8c,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,IAUFsT,QAAQ081B,IAIhB,MAAMC,IAAcP,EAAgBtz2B,QACjCsz2B,EAAgB7psB,MAAMqqsB,IACtB5t2B,EAAAA,OAAAA,KAAI6s2B,EAAyB,GAAGa,KAAWE,KAAY,IAK1DtB,EAAqBA,EAAmBpl2B,IAAI2iH,GAC3CxjH,kBAAA,GACIwjH,EAAE,CACLtxG,SAAUsxG,EAAGtxG,SAASrR,IAAI2m2B,GACrBA,EAAW731B,KAAO031B,IAEpBG,EAAWn81B,SACT5R,EAAAA,OAAAA,KAAI+t2B,EAAWn81B,OAAQ,YACxBm81B,EAAWn81B,OAAOq0F,UAAY4nwB,EAU1BE,GARL9zZ,GAAU,EAEV1zc,kBAAA,GACIwn2B,EAAU,CACbn81B,OAAMrL,kBAAA,GAAMwn2B,EAAWn81B,OAAQ,CAAAq0F,QAAS4nwB,aAU3C5zZ,GAEHoyZ,eAAe371B,EAAM471B,EAAiBE,EAExC,EAoCMwB,2BAA6B74yB,GAClCA,EAAQ/tD,IAAI6m2B,IACX,MAAMC,EAAUD,EAAgBE,cAAc/m2B,IAAIgn2B,IAAO,CACxD,CAACA,EAAIvrE,aAAcurE,EAAIty2B,UAIxB,MAAO,CAAC,CAACmy2B,EAAgBL,SAAUj02B,OAAOumB,OAAO,CAAC,KAAMgu1B,MAG7CG,gCAAkCjo2B,IASzC,IAT0C,OAC/CwL,EACAtZ,YAAY,mBACXk02B,EACAE,WAAW,gBAACY,EAAe,WAAEL,EAAU,gBAAEX,IACzC,YACD371B,EACAL,OAAO,wBAACy81B,GAAwB,KAChCr81B,GACAtK,EACA,MAAMko2B,GAAsBpu2B,EAAAA,OAAAA,KAC3B0R,EACA,kFACA,IAIK281B,EAA2BP,2BAA2BM,GAGtDE,GAAwB18vB,EAAAA,OAAAA,OAC7Bi7vB,EACApz2B,OAAOumB,OAAO,CAAC,KAAMqu1B,IAGtB591B,EAAY,CAACo81B,wBAAyByB,IAEtC,MAAM3B,EAAWN,uBAAuBC,GAIlCiC,EAAmB902B,OAAOumB,OAAO,CAAC,KAAMqu1B,GACxCG,EACLzB,IAAeK,EAAgBtz2B,OAC5BL,OAAO4F,KAAKkv2B,GAAkBz02B,OAC7BL,OAAO4F,MAAK0d,EAAAA,OAAAA,MAAKwx1B,IACjB,GACDnB,EAEJC,yBACCV,EACA6B,EACAF,EACA,IAAIhC,GACJ971B,EACA471B,IAIIqC,sBAAwB,0fAejBC,4BAA6B53N,EAAAA,+BAAAA,qBAAoB23N,sBAAuB,CACpFz0M,aAAc,CACb,WACA,eACA,QACA,cACA,oBACA,cAED1jnB,kBAAmB21zB,oDACnB11zB,gBAAiB21zB,mDCvXLyC,cAAgBho2B,UAC5B,GAAKynE,EACL,OAAOiokB,EAAAA,yBAAAA,yBAAwB,CAACjokB,IAAe5wE,KAAKwwQ,GAC5CA,ICJI4gmB,mBAAqB,EAGrBC,kBAAoB/2N,eAAAA,GAAUC,MAErC+2N,KAAO,qBAEPC,WAAa,CAClBC,KAAM,oBACNC,MAAO,qBACPjryB,KAAM,oBACNkryB,aAAc,4BACdzqK,QAAS,4BAGJ0qK,4BAA8B,CACnC,+BAAgCJ,WAAWC,KAC3C,uCAAwCD,WAAWE,OAS9CG,eAAiB,SACtB1v1B,GAGI,IAFJ2v1B,EAAS3x2B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAGkx2B,mBACZU,EAAQ5x2B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAGmx2B,kBAEX,IACC,IAAI3izB,EAAW03D,EAEf,IAAI5jH,EAAAA,OAAAA,KAAI0f,EAAW,wBAAyB,CAC3C,MACC/N,SACCD,QAAQ,eAAC691B,EAAc,aAAEnmB,EAAY,GAAEpz0B,EAAE,KAAEzd,EAAI,MAAEuwC,GACjD4sO,OAAO,UAAC46T,EAAS,eAAEu2N,EAAc,MAAEz1iB,EAAK,UAAE4jb,KAExCt1pB,EAAUhO,OAEdw6C,EAAYsjzB,aAAa9v1B,EAAUhO,QAEnCkyG,EAAU,CACT6rvB,iBAAkBF,GAAkC,GACpDj/R,UAAWA,GAAwB,GACnCo/R,WAAY7oE,GAAkC,GAC9C/9vB,QACAvwC,OACAs0pB,MAAO72oB,GAAUoz0B,EACjBh4lB,MAAOA,GAAgB4jb,EACvBt5qB,KAAMoz2B,KAER,KAAO,CACN,MACCn91B,SACCD,QAAQ,eAAC691B,KAEP7v1B,EAAUhO,OAEdw6C,EAAYqjzB,EAEZ3rvB,EAAU,CACTloH,KAAMoz2B,KAER,EAEAvxkB,EAAAA,eAAAA,IACC79Q,EACAwsC,EAAS7lD,kBAAA,GAELu9G,GAEJ,CACCn1D,MAAO4gzB,EACP3z2B,KAAM4z2B,GAGT,CAAE,MAAOhqgB,GACR,CAEF,EAEMkqgB,aAAe991B,IACpB,MACCC,SACC+jQ,OAAO,SAACy3C,KAENz7S,EAEJ,GAAIy7S,EACH,MAAiB,YAAbA,EACI4hjB,WAAW/qyB,KAEX+qyB,WAAWG,aAEb,CACN,IAAIS,EACJ,IACCA,EAAkBj+1B,EAAOhB,KAAK7M,MAAMkP,eAAe,GAAGyF,QACvD,CAAE,MAAO8sV,GACR9sW,QAAQ0E,KAAK,wCACd,CACA,OAAO8C,EAAAA,OAAAA,KAAImv2B,4BAA6BQ,EAAiBZ,WAAWtqK,QACrE,GAGD,+BCpGO70rB,2BAA0B,mCAAE2D,yBAAwBA,kCAAItD,aAAAA,YAClD+71B,kDACZ,qDACYC,4DACZ,qDACYC,yDACZ,kDAEYjoB,2BAAqB,qBACrB2rB,iCAAmC,4CACnCC,kCAAoC,6CACpCC,iCAAmC,4CACnCC,+BAAiC,0CACjCC,gCAAkC,2CAClChI,0CAAoC,6CACpCC,yCAAmC,4CAEnCgI,yCAA2C,oCAC3CC,wCAA0C,mCAC1CC,wCAA0C,mCAC1CC,6CAA+C,wCAE/CC,6BAA+B,+BAC/BC,qDACZ,uDACKC,oBAAsB,sBAEfC,cAAgB,gBAChBC,iBAAmB,mBACnBC,gBAAkB,kBAClBC,cAAgB,gBAChBC,cAAgB,gBAChBC,kBAAoB,oBAC3BC,kBAAoB,+CACpBC,8BAAgC,CAAC,gBACjCC,+BAAiC,CAAC,iBAClCC,8BAAgC,CACrC,QACA,SACA,SACA,gBACA,QACA,iBACA,cACA,qBAIKC,iBAAmBx7lB,IACxB,IAAIy7lB,EAAe,CAAC,EAChB1iyB,GAASzuE,EAAAA,OAAAA,KAAI01Q,EAAO,UAMxB,OALIjnM,KACE1lE,EAAAA,OAAAA,SAAQ0lE,KAASA,EAASh1E,OAAOwwB,OAAOwkD,IAC7C0iyB,EAAe,CAAC1iyB,WAGjBpoE,kBAAA,GACIqvQ,EAAK,CACRm3Y,MAAOn3Y,EAAM0uhB,YAAc,KAAO1uhB,EAAMm3Y,OAASn3Y,EAAMithB,aACpDwuE,IAICC,eAAiBA,CAAC1/1B,EAAQgkQ,KAAU,CACzC0zkB,aAAc130B,EAAO030B,aACrBioB,cAAe37lB,EAAMtkB,OAASskB,EAAMs/Z,UACpCr1qB,MAAMorD,EAAAA,OAAAA,MAAKmmzB,iBAAiBx7lB,GAAQu7lB,iCAM/BK,qBAAuBA,CAACx91B,EAAUpC,EAAQgkQ,EAAOt9Q,KACtD,MAAM,WAACq6qB,EAAU,eAAE88L,EAAc,cAAE9rxB,EAAa,aAAE2lwB,GAAgB130B,GAC5D,iBAAC6/1B,GAAmB,GAASn52B,EAEnC,GAAIq6qB,IAAei+L,iBAAmBj+L,IAAeo+L,kBAC/CU,EAGJz91B,EACCi01B,6BACA,CACCyJ,oBAAqBjC,EACrBkC,gBAAiBhuxB,EACjBiuxB,oBAAqBj/L,GAEtB,CACC,CAACs5L,yBAA0B,CAC1B4F,oBAAqBvoB,KAXxBt10B,EAASy71B,EAAgB9rxB,QAgBpB,GAAIgvlB,IAAem+L,cACzB981B,EAASk81B,gCAAiCoB,eAAe1/1B,EAAQgkQ,SAC3D,GAAI+8Z,IAAek+L,cAAe,CACxC,MAAM,WAAC180B,EAAU,aAAEm1zB,EAAY,aAAEwoB,GAAgBlg2B,EACjDoC,EAASw81B,qDAAsD,CAC9Dr80B,aACAm1zB,eACAwoB,eACAl8lB,SAEF,GAGKm8lB,cAAgB3r2B,IAAoC,IAAnC,OAACwL,EAAM,WAAEtZ,EAAU,SAAE0b,GAAS5N,EACpD,MAAM,wBAAC4r2B,GAA2B152B,EAClC,IAAK052B,EAAyB,OAAOh+1B,EACrC,MAAMi+1B,EAAoBtg2B,IAA6B,IAA5B,KAAC/V,EAAI,OAAEoI,EAAM,QAAEgjD,GAAQr1C,EACjD,MAAO,CAAC/V,OAAMoI,SAAQgjD,aAGtBp2C,MAAM,YAACsh2B,EAAcD,EAAkBrg2B,EAAOhB,KAAK7M,SAChD6N,EAWJ,MAAO,CAACnZ,EAAMoZ,EAASjB,IAASoD,EAASvb,EAVpB052B,EAAC152B,EAAMoZ,IAC3BpZ,IAASwv2B,6BAAkB1h2B,kBAAA,GAErBsL,EAAO,CACV8/1B,gBAAepr2B,kBAAA,GACXsL,EAAQ8/1B,gBAAe,CAC1BO,kBACA3r2B,kBAAA,GAEGsL,EAAS,CAAAqg2B,gBAC8BC,CAAa152B,EAAMoZ,GAAUjB,IAGhEwh2B,SAAWxy1B,IACvB,MACChO,QACCC,SAAS,MAAC+jQ,EAAK,OAAEhkQ,IACjB,WACDtZ,GACGsnB,GACE,qBAACyy1B,GAAwBzg2B,EAE/B091B,eAAe1v1B,GACf,MAAM5L,EAAW+91B,cAAcny1B,GAE1Byy1B,GAAsBb,qBAAqBx91B,EAAUpC,EAAQgkQ,EAAOt9Q,GAEzE0b,EAAS871B,iCAAkC,CAC1Cl6lB,QACAhkQ,SACA0g2B,oBAAqBD,KAIjBE,sBAAwB,SAACv+1B,GAAwC,IAA9Bw+1B,EAAoB502B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,GAC/D,IAAK402B,EAAqBx42B,OAAQ,OAElC,MAAMkyc,EAAgBsma,EAAqB5n2B,OAAO,CAAC6n2B,EAAgBxg2B,KAAmB,IAAjB,KAACrW,EAAI,KAAEy9D,GAAKpnD,EAChF,OAAKonD,EAEE,IACHo5yB,EACH,CACC722B,OACAiJ,QAASw0D,IANOo5yB,GAShB,IACCvma,EAAclyc,QACjBga,EAAS,oBAAqB,CAC7Bk4b,iBAEH,EAQawma,qBAAuBvg2B,IAAgC,IAA9BP,QAAQ,QAACC,GAAQ,MAAEvB,GAAM6B,EAC9D,MAAM,MAACyjQ,GAAStlQ,GACV,cAACwyxB,GAAiBlthB,GAEnB1hQ,EAAAA,OAAAA,YAAW4uxB,IAEhBA,EAAav8xB,kBAAC,CAAC,EACXsL,EAAO,CACVpZ,KAAMoZ,EAAQpZ,MAAQm9Q,EAAMn9Q,SAI9B,kBACC,CAAC0r1B,4BAAqB,CACrBtw0B,OAAQu+1B,SACRtx1B,iBAAiB,GAElB,CAACgv1B,kCAAmC,CACnCj81B,OAAQrB,IAAqC,IAApC,YAAC7B,EAAW,OAAEiB,EAAM,SAAEoC,GAASxB,EACvC,MAAOZ,OAAQ+g2B,EAAa,MAAE/8lB,EAAK,oBAAE08lB,GAAuB1g2B,EAAOC,QAC7D2uwB,GACJmyF,EAAcC,iBACmB,oCAAlCD,EAAcC,iBACdl5e,eAAex5X,IAAIyy2B,EAAcC,iBAC5BC,EAAgB,CACrBjh2B,OAAQ+g2B,EACR/8lB,QACA08lB,sBACAn12B,IAAK8B,KAAKC,OAEPshxB,EACH7vwB,EAAYki2B,GAEZhE,cAAc8D,EAAcC,iBAAiBl12B,KAAKo12B,IACjDni2B,EAAYki2B,KAId7+1B,EAASq81B,wCAAyCz+1B,EAAOC,UAE1DiP,iBAAiB,GAElB,CAACiv1B,mCAAoC,CACpCl81B,OAAQpB,IAAA,IAAEnC,OAAO,OAACsB,EAAM,MAAEgkQ,GAAM,SAAE5hQ,EAAQ,WAAE1b,GAAWma,EAAA,OACtD++1B,qBAAqBx91B,EAAUpC,EAAQgkQ,EAAOt9Q,IAC/CwoB,iBAAiB,GAElB,CAACkv1B,kCAAmC,CACnCn81B,OAAQuP,IAAmB,IAAlB,YAACzS,GAAYyS,EACrBzS,EAAY,CACXiB,OAAQ,KACRgkQ,MAAO,QAGT90P,iBAAiB,GAElB,CAACov1B,iCAA+B3p2B,kBAAA,IAC5B8vC,EAAAA,4BAAAA,kBAAiB26zB,kBAAmB,CACtCl7zB,OAAQ,OACR6jR,QAAS,CAAC,qCAAqC,GAC/CmrV,YAAaosN,+BACb7+yB,WAAY4+yB,8BACZtpM,UAAW,OACXnxnB,kBAAmB0xzB,0CACnBzxzB,gBAAiB0xzB,2CAChB,CACFrn1B,iBAAiB,IAElB,CAACon1B,2CAAoC,CACpCr01B,OAAQk6B,IAA6D,IAA3Dz9B,OAAQsB,OAAQmh2B,EAAW,MAAEn9lB,GAAM,SAAE5hQ,EAAQ,OAAEpC,GAAOm8B,EAC/D,MAAM,SAACil0B,EAAQ,OAAEjk1B,IAAU7uB,EAAAA,OAAAA,KAAI0R,EAAQ,iBAAkB,CAAC,GAC1D,GAAIoh2B,EAAU,CACS,UAAlBA,EAASp32B,MAEZlD,QAAQ0E,KAAK,0BAA2B412B,GAGzC,MAAM,MAAC1hnB,EAAK,OAAEs7b,EAAM,MAAE15X,GAAS8/iB,EAASC,eACjC3hnB,MAAO6tmB,EAAcvyK,OAAQwyK,GAAiBrw0B,GAAU,CAAC,EAEhE/a,EAASs81B,6CAA4C/p2B,kBAAA,CACpD+qP,QACAs7b,UACI15X,EACD,CACAA,SAEA,CAAC,EACAisiB,EACD,CACAA,gBAEA,CAAC,EACAC,EACD,CACAA,iBAEA,CAAC,GAEN,CAEApr1B,EAAS,qBAET,MAAMw+1B,GAAuBty2B,EAAAA,OAAAA,KAAI0R,EAAQ,gCAAiC,IAC1E2g2B,sBAAsBv+1B,EAAUw+1B,GAEhCx+1B,EAASm81B,yCAAwC5p2B,kBAAA,GAC7CqL,EAAOC,QAAO,CACjBD,OAAQmh2B,EACRn9lB,YAGF90P,iBAAiB,GAElB,CAACqn1B,0CAAmC,CACnCt01B,OAAQm6B,IAA6D,IAA3D19B,OAAQsB,OAAQmh2B,EAAW,MAAEn9lB,GAAM,SAAE5hQ,EAAQ,OAAEpC,GAAOo8B,EAC3DnpC,GAAU3E,EAAAA,OAAAA,KAAI0R,EAAQ,6BAA8B,IACxD,IAAK/M,EAAS,CACb,MAAM/I,GAASoE,EAAAA,OAAAA,KAAI0R,EAAQ,sBAAuB,CAAC,GAC7Cm7oB,EAAQpzpB,OAAO4F,KAAKzD,GAAQ,GAClC+I,GAAU3E,EAAAA,OAAAA,KAAIpE,EAAQ,GAAGixpB,6BAAkC,GAC5D,CAEIlopB,GACHmP,EAAS,oBAAqB,CAC7Bk4b,cAAe,CACd,CACCtwc,KAAM,QACNiJ,cAKJ,MAAM2t2B,GAAuBty2B,EAAAA,OAAAA,KAAI0R,EAAQ,qCAAsC,IAC/E2g2B,sBAAsBv+1B,EAAUw+1B,GAEhCx+1B,EAASo81B,wCAAuC7p2B,kBAAA,GAC5CqL,EAAOC,QAAO,CACjBD,OAAQmh2B,EACRn9lB,YAGF90P,iBAAiB,GAElB,CAACmv1B,gCAAiC,CACjCp81B,OAAQw6B,IAAmB,IAAlB,YAAC19B,GAAY09B,EACrB19B,EAAY,CACX2h2B,qBAAqB,KAGvBxx1B,iBAAiB,GAElB,CAACyv1B,8BAA+B,CAC/B181B,OAAQ6+B,IAAc,IAAb,OAAC9gC,GAAO8gC,EAChB,MACC7gC,SAAS,IAACoyB,IACPryB,EAEAqyB,GAAK1mC,OAAOoG,KAAKsgC,EAAK,WAE3BnjB,iBAAiB,GAElB,CAAC4v1B,eAAgB,CAChB781B,OAAQ6+1B,qBACR5x1B,iBAAiB,GAIlB,CAAC2v1B,qBAAsB,CACtB581B,OAAQA,OACRiN,iBAAiB,GAElB,CAAChR,oCAA6B6K,IAC7B,MACCriB,YAAY,gCAAC462B,GAAkC,IAC5Cv41B,EACAu41B,GACHv+F,4CAAsBh6vB,IAGxB,CAACux1B,mDAAyC3l2B,kBAAA,GACtCqo2B,2BAA0B,CAC7B9t1B,iBAAiB,IAElB,CAACqr1B,6DAAsDv5zB,IAOjD,IAPkD,OACvDhhC,EAAM,SACNoC,EAAQ,WACR1b,EAAU,YACVqY,EAAW,MACXL,EAAK,KACLI,GACAkiC,EACAy7zB,gCAAgC,CAACz81B,SAAQoC,WAAU1b,aAAYqY,cAAaL,QAAOI,UAEpF,CAAC071B,0DAAmDv5zB,IAAc,IAAb,OAACjhC,GAAOihC,EAC5Dn6C,QAAQC,MAAM,oCAAqCiZ,EAAOC,QAAQ4nT,SAEnE,CAAChmT,kCAA2Bq/B,IAOtB,IAPuB,KAC5BpiC,EACApY,YAAY,UACXo02B,EAAY,CAAC,EAAC,mBACdF,EAAqB,GAAE,gCACvB0G,GAAkC,IAEnCpg0B,EACA,GAAIog0B,EAAiC,CAEpC,MAAM,gBAAC5G,EAAkB,IAAMI,EAC/BL,eAAe371B,EAAM471B,EAAiBE,EACvC,KCtYKp9zB,uBAAsBA,gCAAIj/B,aAAAA,YAE3Bgj2B,mBAAqB,wCACrBC,6BAA+B,gDAC/BC,2BAA6B,8DAC7BC,yBAA2B,4DAC3BC,kBAAoB,oBACpBC,0BAA4B,4BAC5BC,0BAA4B,4BAC5BC,6BAA+B,0DAC/BC,4BAA8B,qDAE9BC,yBAA2B,2DAC3BC,yBAA2B,2DAC3BC,sBAAwB,wDAEjBC,sBAAwB3t2B,IAA+B,IAA9B,OAACwL,EAAM,SAAEoC,EAAQ,MAAE1D,GAAMlK,EAC9D,MAAM,aAACygyB,GAAgBv2xB,EAAMhY,WACvB4C,EAAQ2ryB,GACX3myB,EAAAA,OAAAA,KAAI0R,EAAQ,wCACZ1R,EAAAA,OAAAA,KAAI0R,EAAQ,4BACToi2B,EAAa,CAClBv72B,MAAMyH,EAAAA,OAAAA,KAAIoQ,EAAO,kBAAmB,IACpCpV,QACAsrqB,cAActmqB,EAAAA,OAAAA,KAAI0R,EAAQ,iCAAkC,IAC5DoiyB,eAAgB,CAAClN,gBAAgB5myB,EAAAA,OAAAA,KAAI0R,EAAQ,8BAE9CoC,EAAS081B,cAAesD,IAGZC,gCAAkCti2B,IAA4C,IAA3C,OAACC,EAAM,SAAEoC,EAAQ,MAAE1D,EAAK,YAAEK,GAAYgB,EACrF,MAAMqi2B,EAAa,CAClBv72B,MAAMyH,EAAAA,OAAAA,KAAIoQ,EAAO,kBAAmB,IACpCpV,OAAOgF,EAAAA,OAAAA,KAAI0R,EAAQ,gBAAiB,IACpC40pB,cAActmqB,EAAAA,OAAAA,KAAI0R,EAAQ,uBAAwB,KAEnD,GAAmC,eAA/BtB,EAAMhY,WAAW0qyB,UACpBhvxB,EAAS081B,cAAesD,GACxBhg2B,EAASq/1B,gCACH,CACN,MAAM7h2B,EAAY,CACjBA,UAAW,QAGZ,KADmBtR,EAAAA,OAAAA,KAAI0R,EAAQ,sBAAsB,GACpC,CAChB,MAAMtM,EAAQgL,EAAM0uC,cAAc9jD,MAAMN,QAAQo52B,EAAW942B,OAC3D,IAAe,IAAXoK,EACH,OAED3L,OAAOumB,OAAO1O,EAAW,CAACA,UAAW,SAAU5I,MAAOtD,EAAOg3uB,YAAa,GAC3E,CACA3ruB,EAAY,CAAApK,kBAAA,CAEVgL,KAAM,sBACNrW,OAAOgF,EAAAA,OAAAA,KAAI0R,EAAQ,gBAAiB,KACjCJ,GAASjL,kBAAA,CAGZgL,KAAM,mCACNrW,OAAOgF,EAAAA,OAAAA,KAAI0R,EAAQ,uBAAwB,KACxCJ,IAGN,GAGY0i2B,uBAAyBji2B,IAAuB,IAAtB,SAAC+B,EAAQ,MAAE1D,GAAM2B,EACvD,MAAM,cAAC+sC,GAAiB1uC,EACxB,GAAmC,IAA/B0uC,EAAc9jD,MAAMlB,OAEvB,YADAga,EAASq/1B,4BAGV,MAAMW,EAAa,CAClBv72B,MAAMyH,EAAAA,OAAAA,KAAIoQ,EAAO,kBAAmB,IACpCpV,MAAO8jD,EAAc9jD,MAAM0sB,KAAK,KAChC4+oB,aAAcxnnB,EAAcm1zB,oBAG7Bng2B,EAAS081B,cAAesD,GACxBhg2B,EAASq/1B,6BAGJe,iBAAmBji2B,IAAmB,IAAlB,YAACxB,GAAYwB,EACtCxB,EAAY,CACXiO,QAAQ,EACRogC,cAAe,CAAC9jD,MAAO,GAAIi52B,mBAAoB,OAI3CE,gBAAkB,ilBAuBXtqC,oCAA8Bv3zB,IAIrC,IAHLla,YAAY,UAACk4kB,EAAS,UAAE0kG,EAAS,YAAE2tH,EAAW,kBAAEuB,EAAiB,cAAEG,EAAa,WAAEmC,GAAW,SAC7F1yxB,EAAQ,YACRrD,GACA6B,EACA,MAAMyc,GAAa/uB,EAAAA,OAAAA,KAAIwmyB,EAAY,aAAc,IAC3C4tE,GAAiBr31B,EAAAA,OAAAA,MAAKgS,EAAYzuB,GAAgB,gBAAXA,EAAE/H,MAI/C,QAHwCmI,IAAnB0z2B,GAAgE,SAAzBA,EAAep52B,MAGzD,CAQjB8Y,EAASu/1B,kBAPO,CACf5zlB,MAAO6wT,EACPl/U,MAAO4jb,EACP0X,OAAQi2G,EACR0xE,mBAAoBnwE,EACpBowE,eAAgBjwE,GAEoB,CAACzjxB,iBAAiB,IACvD9M,EAAS4/1B,yBAA0B,CAACl+1B,QAAS,oCAC9C,MACC/E,EAAY,CACX8j2B,oBAAoB,EACpBC,cAAc,IAEf1g2B,EAAS4/1B,yBAA0B,CAACl+1B,QAAS,yCAI/C,0BACC,CAACy91B,oBAAqB,CACrBt/1B,OAAQ+L,IACPm01B,sBAAsBn01B,GACtBw01B,iBAAiBx01B,IAElBkB,iBAAiB,GAElB,CAACsy1B,8BAA+B,CAC/Bv/1B,OAAQog2B,gCACRnz1B,iBAAiB,GAElB,CAACuy1B,4BAA6B,CAC7Bx/1B,OAAQug2B,iBACRtz1B,iBAAiB,GAElB,CAACwy1B,0BAA2B,CAC3Bz/1B,OAAQqg2B,uBACRpz1B,iBAAiB,GAElB,uBAAwBsz1B,iBACxB,CAAChl0B,gCAAyB26xB,oCAC1B,CAACwpC,oBAAoBv8N,EAAAA,+BAAAA,qBAAoBq9N,gBAAiB,CACzDn6M,aAAc,CAAC,QAAS,QAAS,SAAU,qBAAsB,kBACjE1jnB,kBAAmBg9zB,0BACnB/8zB,gBAAiBg9zB,4BAElB,CAACD,2BAA4B/g2B,IAA2B,IAA1B,YAAC9B,EAAW,OAAEiB,GAAOa,EAClD,MAAM,QAACZ,GAAWD,EAClB,GAAIC,EAAQ4nT,OAAOz/T,OAAS,EAAG,CAC9B,MAAM+G,GAASb,EAAAA,OAAAA,KAAI2R,EAAS6h2B,8BACtBiB,GAAmBz02B,EAAAA,OAAAA,KAAI2R,EAAS8h2B,6BACtChj2B,EAAY,CACX8j2B,oBAAoB,EACpBG,iBAAkB7z2B,EAClB8z2B,SAAUF,EAAmBA,EAAiBE,SAAW,MAE3D,MACClk2B,EAAY,CACX8j2B,oBAAoB,EACpBG,iBAAkB,CAAC,KAItB,CAACnB,2BAA4Brw1B,IAAmB,IAAlB,YAACzS,GAAYyS,EAC1CzS,EAAY,CACX8j2B,oBAAoB,EACpBG,iBAAkB,CAAC,KAGrB,CAAChB,2BAA2B7yF,EAAAA,yBAAAA,gEAA4B,CACvDvquB,kBAAmBq9zB,yBACnBp9zB,gBAAiBq9zB,wBAElB,CAACD,0BAA2B,CAC3Bhg2B,OAAQk6B,IAAmB,IAAlB,YAACp9B,GAAYo9B,EACrBp9B,EAAY,CACXmk2B,kBAAkB,KAGpBh01B,iBAAiB,GAElB,CAACgz1B,uBAAwB,CACxBjg2B,OAAQm6B,IAAmB,IAAlB,YAACr9B,GAAYq9B,EACrBt1C,QAAQC,MAAM,4BACdgY,EAAY,CACXmk2B,kBAAkB,KAGpBh01B,iBAAiB,I,+YClMZroB,GAAAA,eAAMkT,GAAAA,mBAAW+rC,kCAClB9b,mBAAYr+B,OAAOu2C,iCACxBv2C,OAAOu2C,kCAAoC,CAAC,EACxClY,mBAASnjC,kBACbmjC,mBAASnjC,gBAAQkT,mBAGlB,MACCgM,oBAAmB,8BACnB7H,2BAA0B,qCAC1B2D,yBAAwB,mCACxBxD,uBAAsBA,kCACnBE,aAAAA,YAEE4k2B,sBAAwBA,CAACrk2B,EAAMpY,KAAe,IAAA082B,EAAAC,EACnD,MAAM7h2B,GAAgBN,EAAAA,2BAAAA,IAAkBpC,GACxC,GAAK0C,UAAAA,EAAepZ,OAAQ,OAC5B,MAAMmZ,EAAuBC,GAAcA,aAAa,EAAbA,EAAepZ,QAAS,GACnE,GAAqD,YAAjDmZ,SAA6B,QAAT6h2B,EAApB7h2B,EAAsBuC,eAAO,IAAAs/1B,OAAA,EAA7BA,EAA+B3y1B,gBAEO,KAAtC/pB,SAAyB,QAAf282B,EAAV382B,EAAYu9vB,qBAAa,IAAAo/G,OAAA,EAAzBA,EAA2Bj72B,QAAc,KAAA8lB,EAC5C,MAAM5M,EAAwBE,EAAc,GACtCoxB,EAAMzrB,SAASC,cAAc,OACnCwrB,EAAItvB,aAAa,WAAY,KAC7BsvB,EAAItvB,aAAa,cAAe,QAChCsvB,EAAItvB,aAAa,KAAM,wBACvBsvB,EAAItvB,aAAa,QAAS,wBAC1BxE,SAAgB,QAAZoP,EAAJpP,EAAMU,kBAAU,IAAA0O,GAAhBA,EAAkBK,YAAYqkB,GAC9BA,EAAI7xB,iBAAiB,QAAS,KAC7BO,SAAAA,EAAuBH,SAEzB,GAEKmi2B,gBAAkBA,CAACh/1B,EAAIlC,EAAUmh2B,KACtC/8xB,2BAAAA,GAAY7wE,IAAI,CACf2O,KACAhE,OAAQ,CAAC,WACT/W,SAAW4I,IACQ,WAAdA,EAAM5G,KAAoBg42B,GAE9Bnh2B,EAAS,KACD,CACNpY,KAAM,uBACNiW,QAAS,CAAC3W,OAAO,GACjB0V,KAAM,CAACsxB,OAAQ,qBAOdkz0B,kBAAoBA,CAACD,EAAcnh2B,KACxC,IAAImh2B,EAGJ,OACCn81B,EAAAA,kCAAAA,eAAA,qBACC9C,GAAG,yBACHgkB,UAAU,0BACVwO,KAAK,aACLK,QAAQ,WACR3oC,KAAK,KACL,kBACA+oC,MAAI,EACJ,cAAa,CAAC,cAAcjrB,EAAAA,iBAAAA,GAAE,iBAC9B,mBAAiBA,EAAAA,iBAAAA,GAAE,gBACnB,WAAUu5B,KACTzjC,EAAS,KACD,CACNpY,KAAM,uBACNiW,QAAS,CAAC3W,OAAO,GACjB0V,KAAM,CAACsxB,OAAQ,uBAQfmz0B,0BAA6B3k2B,IAAS,IAAA2P,EAC3C,MAAMi11B,EAAY5k2B,SAAgB,QAAZ2P,EAAJ3P,EAAMU,kBAAU,IAAAiP,OAAA,EAAhBA,EAAkBhP,cAAc,mBAC7Cik2B,IACDA,EAAUt51B,eAAiBs51B,EAAU5z1B,aACxC4z1B,EAAUpg2B,aAAa,WAAY,GAEnCog2B,EAAUhk2B,gBAAgB,cAItBq0C,uBAAeA,CACpBtH,EACA+rrB,EACAz7qB,EACA4mzB,EACAJ,EACAnh2B,KAEA,IAAKo2tB,EACJ,OAGD,MAAMr7qB,EAAe,IAAIJ,IACzB,OACC31C,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,oBACbk70B,kBAAkBD,EAAcnh2B,IACjCgF,EAAAA,kCAAAA,eAAC+1C,EAAY,CACZ74C,GAAI,gBAAgBmoC,IACpBnkB,UAAU,oBACV,sBAECkwsB,KAMCusB,uBAAeA,CAACd,EAAe7hvB,KACpC,KAAI2uB,EAAAA,OAAAA,SAAQkztB,GACZ,OACC78uB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,oBACbq8tB,8BAAoBV,EAAe7hvB,KAKjCuivB,8BAAsBA,CAACV,EAAe7hvB,IACpC6hvB,EACLzuvB,IAAKou2B,IACL,MAAM,QACLzs0B,EAAO,MACPC,EAAK,KACLG,EAAI,SACJ54B,EAAQ,eACR6oC,EAAc,gBACds3B,EAAe,WACf9nC,EAAU,KACVF,EAAI,UACJ8B,EAAS,QACTC,GACG+q0B,EAEE1/G,EAAc,CACnB57tB,UAAW,0BACX6O,UACAC,QACAz4B,WACAm4B,OACA8B,YACAC,UACA2O,iBACAxQ,aACA,WAAY6O,KACPlnC,GAEJyD,EAAS,KACD,CACNpY,KAAM80E,GAAmB,kCACzB7+D,QAAS,CACRD,OAAQ4j2B,EAIRA,qBAOL,OAAOrs0B,GACNnwB,EAAAA,kCAAAA,eAAA,kBAAqB88uB,IAErB98uB,EAAAA,kCAAAA,eAAA,aAAgB88uB,KAGjBhmtB,UAGGjxB,eAAOA,CAACvO,EAAKlK,KAAiB,IAAf,SAAC4N,GAAS5N,EAC9B,MAAM,cAACmv2B,GAAiBjl2B,GAClB,KACLlQ,EAAI,WACJq12B,EAAU,aACVN,EAAY,YACZ/qI,EAAW,aACXsrI,EAAY,QACZho1B,EAAO,iBACPio1B,EAAgB,OAChBnl2B,EAAM,YACNgrC,EAAW,cACXq6sB,EAAa,WACbjttB,EAAU,WACVgt0B,EAAU,MACVr+1B,EAAK,YACLs+1B,GACGvl2B,EAAMhY,WAEV,IAAIw92B,EACHL,GAAcA,EAAWz61B,QAAUy61B,EAAW161B,MAC3C,CACA,8BAA+B061B,EAAWz61B,OAC1C,6BAA8By61B,EAAW161B,OAEzC,KACJ,MAAMg71B,EAAaD,EAAc,SAAW112B,EAE5C,OACC4Y,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,qBAAqB,EACrB,eAAgB+21B,GAEjB5qpB,QAASz6M,EACT,eAAehY,IACCA,EACbya,eACAgK,KAAM5H,IAAI,IAAA2g2B,EAAA,OAAK3g2B,SAAe,QAAX2g2B,EAAJ3g2B,EAAM8H,iBAAS,IAAA641B,OAAA,EAAfA,EAAiB541B,SAAS,uBAC9B5kB,EAAEub,oBAGhBiF,EAAAA,kCAAAA,eAAA,MAAAzS,kBAAA,CACCqP,KAAK,SACL,kBAAiB,gBAAgB2B,IACjC+D,MAAOw61B,IACHv/0B,EAAAA,2BAAAA,IAAqBqS,EAAY,UAAS,CAC9C9pB,MAAO,CACN,aAAa,EACb,CAAC,IAAMi31B,GAAaA,EACpB,YAAevl2B,EACf,iBAAkBol2B,MAGnB581B,EAAAA,kCAAAA,eAAA,MAAAzS,kBAAA,CACCuY,MAAO,CAAC,oBAAoB,EAAM,eAAgB08B,GAClD5lC,KAAK,aACD2gB,EAAAA,2BAAAA,IAAqBqS,EAAY,aAEpC+c,uBACApuC,EACA6ytB,EACAsrI,EACAH,EACAJ,EACAnh2B,IAEDgF,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,kBAAkB,EAClB,gBAAiB621B,IAGhBvrI,OAECxpuB,EADAw02B,kBAAkBD,EAAcnh2B,IAEnCgF,EAAAA,kCAAAA,eAAA,QACC,gBAAgBxgB,IACf,MAAMkY,GAAOyd,EAAAA,2BAAAA,IAAkB31B,EAAEy1B,eACjCon1B,0BAA0B3k2B,KAG1Bgd,GAAU1U,EAAAA,kCAAAA,eAAA,KAAGkhB,UAAU,eAAexM,QAAe9sB,IAGvD+1vB,uBAAad,EAAe7hvB,QAkClCk2B,EAAAA,6BAAAA,IAAsB,YAAa,CAClC5xC,WAAY,CAQX8H,KAAM,CACLme,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,aAAc,YAWzC+21B,WAAY,CACXh31B,OAAQ,CACP7iB,KAAM,SACNof,OAAQ,CACPo1B,UAAU,EACV3xB,OAAQ,CAAC7iB,KAAM,WAEhBmf,MAAO,CACNq1B,UAAU,EACV3xB,OAAQ,CAAC7iB,KAAM,aASlB4U,OAAQ,CACP+N,SAAS,EACT0V,YAAY,EACZxV,OAAQ,CAAC7iB,KAAM,YAWhBu52B,aAAc,CAAC521B,SAAS,EAAOE,OAAQ,CAAC7iB,KAAM,YAY9CglB,gBAAiB,CAChBnC,OAAQ,CACP7iB,KAAM,SACNokB,gBAAiB,CAChBzB,SAAS,EACTE,OAAQ,CAAC7iB,KAAM,YAEhB4e,kBAAmB,CAClB+D,QAAS,IACTE,OAAQ,CAAC7iB,KAAM,WAEhB8e,mBAAoB,CACnB6D,QAAS,IACTE,OAAQ,CAAC7iB,KAAM,WAEhB2e,kBAAmB,CAClBkE,OAAQ,CAAC7iB,KAAM,WAEhB6e,mBAAoB,CACnBgE,OAAQ,CAAC7iB,KAAM,aAQlBwuuB,YAAa,CAAC3rtB,OAAQ,CAAC7iB,KAAM,WAK7B852B,aAAc,CACbn31B,QAAS,EACTE,OAAQ,CAAC7iB,KAAM,SAAU8iB,KAAM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAQhDgP,QAAS,CAACjP,OAAQ,CAAC7iB,KAAM,WAKzB4/C,YAAa,CAACj9B,SAAS,EAAOE,OAAQ,CAAC7iB,KAAM,YAM7C+52B,iBAAkB,CAACp31B,SAAS,EAAOE,OAAQ,CAAC7iB,KAAM,YASlDi6vB,cAAe,CACdt3uB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CACN1vB,KAAM,SACNtD,WAAY,CACX0wC,MAAO,CAACptC,KAAM,UACdmtC,QAAS,CAACntC,KAAM,UAChB2U,SAAU,CAAC3U,KAAM,WACjBw9C,eAAgB,CAACx9C,KAAM,UACvButC,KAAM,CAACvtC,KAAM,WACb8sC,KAAM,CAAC9sC,KAAM,UACb4uC,UAAW,CAAC5uC,KAAM,UAClB6uC,QAAS,CAAC7uC,KAAM,UAChB80E,gBAAiB,CAAC90E,KAAM,UACxBgtC,WAAY,CACXhtC,KAAM,SACNtD,WAAY,CACX2wC,OAAQlC,oBAAAA,IAETG,sBAAsB,OAmB3B0B,WAAY,CACXiC,aAAa,EACbpsB,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACXs1c,OAAQ7ma,oBAAAA,GACRhuB,SAAUguB,oBAAAA,IAEXG,sBAAsB,IAQxB0u0B,WAAY,CACXr31B,SAAS,EACTE,OAAQ,CAAC7iB,KAAM,YAMhBi62B,YAAa,CACZt31B,SAAS,EACTE,OAAQ,CAAC7iB,KAAM,aAGjBmlB,WAAY,CAOX,kCAAmC,CAAC,EASpC,uBAAwB,CAAC,EAOzB,0BAA2B,CAC1BtC,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACXyiB,MAAO,CAACnf,KAAM,UACdof,OAAQ,CAACpf,KAAM,UACfsf,KAAM,CAACtf,KAAM,UACbqf,IAAK,CAACrf,KAAM,aAQf,sBAAuB,CAAC,GAEzBwc,MAAO,CAMN8iC,YAAa,CAAC,GAEfppC,aAAc,CACb6B,UAAW,KACX4h2B,cAAe,MAEhBvj2B,eAAgB,CACf,CAAC2F,+BAAsBhG,IAMjB,IANkB,KACvBjB,EAAI,WACJpY,EAAU,SACV0b,EAAQ,OACRpC,EAAM,YACNjB,GACAgB,EACA,MAAM,GAACuE,GAAMtE,EAAOhB,MACd,aAACuk2B,GAAgB782B,EAEnBA,EAAWkY,SACd0k2B,gBAAgBh/1B,EAAIlC,EAAUmh2B,GAC9BE,0BAA0B3k2B,IAI3BC,EAAY,CAAC4k2B,cADZ7k2B,EAAKmR,YAAYxQ,cAAc,yBAGjC,CAACoC,oCAA2BxB,IAA0C,IAAzC,KAACvB,EAAI,WAAEpY,EAAU,OAAEsZ,EAAM,SAAEoC,GAAS/B,EAChE,MAAM,qBAACwvvB,GAAwB7vvB,EAAOhB,KACjC6wvB,IACLszG,sBAAsBrk2B,EAAMpY,GAC5B0b,EAAS,yBAEV,CAAClE,sCAA6BqC,IAA0C,IAAzC,WAAC7Z,EAAU,OAAEsZ,EAAM,SAAEoC,EAAQ,KAAEtD,GAAKyB,EAClE,MACCN,SAAS,KAACpZ,EAAI,MAAEyC,EAAK,cAAEg3C,GACvBthC,MAAM,GAACsF,IACJtE,GAEE,aAACuj2B,GAAgB782B,EAOf,IAAA292B,EAeNC,EApBW,WAATz92B,IACCyC,GACHg62B,gBAAgBh/1B,EAAIlC,EAAUmh2B,GAC9BJ,sBAAsBrk2B,EAAMpY,GAC5B+82B,0BAA0B3k2B,KAE1BA,SAAgB,QAAZul2B,EAAJvl2B,EAAMU,kBAAU,IAAA6k2B,GAAwC,QAAxCA,EAAhBA,EAAkB5k2B,cAAc,gCAAwB,IAAA4k2B,GAAxDA,EAA0Dp60B,SAC1Du8C,2BAAAA,GAAYv8C,OAAO3lB,KAOX,kBAATzd,IACCiY,EAAKmR,YACJxQ,cAAc,sBACdoF,QAAQ,mBACRy7B,IAAkBh3C,GAClBA,GAASg3C,GAAiBh3C,EAAMlB,OAASk4C,EAAcl4C,UAE/B,QAA1Bk82B,GAAApj2B,EAAAA,2BAAAA,IAAkBpC,GAAM,UAAE,IAAAwl2B,GAA1BA,EAA4Bnj2B,UAG9B,CAAC9C,kCAAyBuC,IAAkB,IAAjB,WAACla,GAAWka,EAClCla,EAAWkY,QAAQ4nE,2BAAAA,GAAYv8C,OAAOvjC,EAAWif,QAEtD,wBAA2B,CAC1BuJ,iBAAiB,EACjBjN,OAAQpB,IAAyC,IAAvCb,QAAQ,QAACC,GAAQ,SAAEmC,EAAQ,KAAEtD,GAAK+B,EAC3C4i2B,0BAA0B3k2B,GAC1BsD,EAAS,0BAAyBzN,kBAAA,GAAMsL,OAI3Cb,UAAW,CACV,CACCsiB,SAAUib,mBAAAA,GACVrtC,QAAS,CAAC4S,MAAM,IAEjB,CAACwf,SAAU6i1B,mBAAAA,EAAej12B,QAAS,CAAC2X,MAAO,cAC3C,CACCya,SAAU8i1B,uBAAAA,EACVl12B,QAAS,CACRoZ,aAAc,oBACdknB,UAAW,qBACXzhB,mBAAoBqD,IAAkB,IAAjB,WAAC9qB,GAAW8qB,EAChC,OAAO9qB,EAAWsoB,iBAEnBzf,cAAe,CACd6e,iBAAiB,EACjBxF,kBAAmB,IACnBE,mBAAoB,IACpBH,kBAAmB,KACnBE,mBAAoB,QAIvB,CAAC6Y,SAAUkqB,wBAAAA,GACX,CAAClqB,SAAUlU,qBAAAA,KAEZD,OAAM,qBACNN,KAAIA,iBCxpBL,MAAMw31B,gBAAkB,WACvB,QAA2Bz12B,IAAvBrD,OAAOi8Z,YAA2B,OAAOj8Z,OAAOg8Z,YAEpD,MADqD,gBAA/BxgZ,SAAS4of,YAAc,IACvB5of,SAAS4C,gBAAgB4hB,UAAYxkB,SAAS6M,KAAK2X,SAC1E,EAEM+40B,WAAa,WAClB,MAAMC,EAAc,CACnB740B,UAAW,SACX7P,SAAU,QACV5S,IAAK,IAJ2Brd,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,MAKnCsd,KAAM,MACNH,MAAO,QAERphB,OAAOumB,OAAOnH,SAAS6M,KAAKtK,MAAOi71B,EACpC,EAEMC,aAAe,WAAqB,IAAZlp1B,EAAM1vB,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,EACtCoyB,WAAW,KACVjX,SAAS6M,KAAKtU,gBAAgB,SAC9B/T,OAAOqnX,SAAS,EAAGt3V,IACjB,GACJ,EAEMmp1B,aAAej+2B,IACN,WAAVA,EAAE2E,KACL3E,EAAEsoB,mBAIJ,eAAgBxoB,EAAYmgB,KACtBngB,EAAWkY,QACfgm2B,aAAaH,mBAGdC,WAAWD,oBAGVr91B,EAAAA,kCAAAA,eAAA,YAAAzS,kBAAA,GAAejO,EAAU,CAAE,aAAYm+2B,aAAc,qBACnDh+1B,ICrCEi+1B,4DACL,8DACKC,0DACL,4DAEKlmyB,aAAU,CACf,CACCznC,OAAO9qB,EAAAA,iBAAAA,GAAE,SACT6qB,QAAS,UACTqQ,gBAAgBl7B,EAAAA,iBAAAA,GAAE,SAClBirB,MAAM,EACNunC,gBAAiBgmyB,6DAElB,CACC1t0B,OAAO9qB,EAAAA,iBAAAA,GAAE,OACT6qB,QAAS,UACTqQ,gBAAgBl7B,EAAAA,iBAAAA,GAAE,OAClBwyD,gBAAiBimyB,4DAIbC,mBAAqB9uuB,IAC1B,MAAM,UACL0oc,EAAS,eACTu2N,EAAc,UACd7xH,EAAS,iBACT0/L,EAAgB,eAChBiC,EAAc,eACd3yE,EAAc,SACd2wE,EAAQ,YACRiC,EAAW,YACXz4zB,EAAW,MACXrV,EAAK,YACL65vB,EAAW,kBACXuB,EAAiB,cACjBG,EAAa,yBACb8C,EAAwB,mBACxBD,EAAkB,aAClBP,EAAY,MACZlwoB,GACG7uB,EACEt0H,EAASsj2B,EAAc,QAAU,SACvC,OACC991B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAW280B,GACdjC,EAAiBtwjB,aACjBtrS,EAAAA,kCAAAA,eAAA,oCACCk8pB,UAAWA,EACX1kG,UAAWA,EACXu2N,eAAgBA,EAChB7C,eAAgBA,EAChBC,eAAgBywE,EAAiBh10B,YACjCg10B,iBAAkBA,EAClBC,SAAUA,EACV3hjB,MAAO0hjB,EAAiBl7pB,YACxBlmM,OAAQA,KAGTwF,EAAAA,kCAAAA,eAAA,uCACC,eAAc,GAAGqlC,kBACjBs4G,MAAOA,GAAS,KAChB,kBAAiB0woB,EACjB,aAAYr+vB,EACZ,gBAAe65vB,EACfljhB,MAAO6wT,EACPl/U,MAAO4jb,EACPkvH,kBAAmBA,EACnBG,cAAeA,EACf6C,mBAAoBA,EACpB2vE,aAAchwE,EACdF,aAAcA,MAOnB,0BAAezgyB,IAsBT,IArBL9N,YAAY,UACXk4kB,EAAS,UACT0kG,EAAS,YACT2tH,EAAW,MACX75vB,EAAK,kBACLo7vB,EAAiB,cACjBG,EAAa,YACblmvB,EAAW,eACX0ovB,EAAc,mBACdK,GAAqB,EAAK,yBAC1BC,GAA2B,EAAK,eAChCnD,EAAc,UACdlB,EAAS,aACT6D,EAAY,MACZlwoB,GACA,OACD/3I,EAAM,iBACNk21B,EAAgB,mBAChBL,EAAkB,iBAClBG,EAAgB,SAChBC,GACAzu2B,EACA,MAAOk+S,YAAaowjB,GAAgBE,EAC9BkC,EAA4B,eAAd9zE,EACdg0E,EAAgBtC,GAAgBoC,EAChCjhH,EAAgBmhH,EAAgBvmyB,kBAAU7vE,EAC1C0uD,EAAYmlzB,GAAsBK,EAElCmC,EAAoB74zB,IACzB,MAAM84zB,EAAY,GAAG94zB,cACrB,OAAI44zB,EAAsB,GAAGE,gBACzBJ,EAAoB,GAAGI,UACpBA,GAGFpvuB,EAAQ,CACb0oc,YACA0kG,YACA6xH,iBACA7C,iBACA7lvB,cACArV,QACA65vB,cACAuB,oBACAG,gBACA6C,qBACAC,2BACAR,eACAlwoB,QACAi+sB,mBACAC,WACAiC,cACAD,eAAgBnC,EAAeuC,EAAkB,QAAU,kBAG5D,OACCj+1B,EAAAA,kCAAAA,eAACm+1B,cAAK,CACL3m2B,OAAQoO,EACRxe,KAAK,KACL,eAAc4oC,EACd,eAAc,GAAGqV,UACjBw3sB,cAAeA,GACdvmsB,GACAt2C,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAW+80B,EAAkB,YACjCj+1B,EAAAA,kCAAAA,eAAA,oBAGD491B,mBAAmB9uuB,GAItB,ECjJYsvuB,oCAAsC,mCAEnDh51B,EAAAA,aAAAA,qBAAoBg51B,oCAAqC,CACxD/41B,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,2BAEL/M,aAAc,CACb8M,QAAQ,EACR611B,oBAAoB,EACpBK,kBAAkB,EAClBF,iBAAkB,CAAC,EACnB51zB,cAAe,CAAC9jD,MAAO,GAAIi52B,mBAAoB,KAEhD772B,WAAY,CACXk4kB,UAAW,GACX0kG,UAAW,GACX2tH,YAAa,GACb75vB,MAAO,GACPo7vB,kBAAmB,GACnBG,cAAe,GACf5pxB,QAAS,GACTg8I,MAAO,GACPt4G,YAAa,GACb0ovB,eAAgB,GAChBM,yBAA0B,GAC1BD,mBAAoB,GACpBV,WAAY,CAAC,EACbxC,eAAgB,GAChBC,eAAgB,GAChBgD,mBAAoB,GACpBN,aAAc,GACd7D,UAAW,IAEZ7jxB,OAAQ7D,eACRtJ,eAAcA,2BCxCf,MAAM5B,uCAAgB,2BAEhB4B,wCAAiB,CACtB,CAACi21B,8BAAqB7h2B,IAAwB,IAAvB,OAACwL,EAAM,SAAEoC,GAAS5N,EACxC,MACCyL,SACC6/1B,oBAAqBv90B,EAAa,GAClCw90B,gBAAiBhuxB,EAAgB,CAAC,EAClCziF,SAAS,UAACm3F,EAAS,QAAE9nC,EAAU,IAAM,CAAC,GACnC,CAAC,EACL3/C,MAAO,CAACq71B,yBAA0BoL,EAAU,CAAC,GAAK,CAAC,GAChDzl2B,GAEAuiB,IAAgBjgB,EAAAA,OAAAA,YAAWmkF,KAAcA,EAAUzmF,KACtDoC,EAASmgB,EAAYwvD,EAAe,CACnC,CAACsoxB,yBAAuB1l2B,kBAAA,GAAO8w2B,EAAS,CAAAC,6BAA6B,MAGtE/mzB,EAAQr/C,QAAQy4C,IACf31C,EAAS21C,EAAOg6B,EAAe,CAC9B,CAACsoxB,yBAAuB1l2B,kBAAA,GAAO8w2B,EAAS,CAAAC,6BAA6B,WAO7DC,yBAA2B,CACvC9+2B,KAAM2X,uCACN4B,eAAcA,yCC7BTwl2B,MAAQ,CACbC,SAAUA,KAAM,EAChBC,QAASC,YACTC,QAASC,YACTC,YAAaC,gBACbC,SAAUC,aACV,IAAKC,WACL,IAAKC,gBACL,KAAMC,wBACNC,GAAIC,OACJ,SAAUC,UACVC,KAAMC,SACN,IAAKC,aACL,KAAMC,qBACNC,WAAYC,eACZ,KAAMC,cACN,WAAYC,YACZC,OAAQC,WACRC,QAASC,cACTC,WAAYC,eACZC,SAAUC,qBACVC,SAAUC,kBACVC,mBAAoBC,6BACpBC,mBAAoBC,2BA2BRC,mBAAqBA,CAACC,EAAiBnkmB,KAC9CmkmB,GAA8C,IAA3BA,EAAgB//2B,QAEjC+/2B,EACLnv2B,OAAOov2B,gBAAiB,IACxB5y2B,IAAIosT,GAAQA,EAAK5oT,OAAOqv2B,WAAY,KACpC9x1B,KAAK+x1B,GACLA,EAAMz2sB,MAAMy2sB,GACXA,EAAM/x1B,KAAK/hB,IAA8B,IAA7B,MAACu5Q,EAAK,SAAEppH,EAAQ,MAAEr7J,GAAMkL,EACnC,OAAa,MAATu5Q,GAA0B,MAATzkR,GACds82B,MAAMjhtB,GAAUopH,EAAOzkR,EAAO06Q,OAM7BukmB,6BAA+B,SAACC,GAAmC,IAAfxkmB,EAAKh4Q,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACzE,IAAI+kC,EAAAA,OAAAA,SAAQy30B,KAAuBz30B,EAAAA,OAAAA,SAAQizO,GAAQ,OAAO,EAE1D,MAAMykmB,EAAqB1g3B,OAAO4F,KAAKq2Q,IAAU,GAC3C0kmB,EAAsBD,EAAmBjz2B,IAAIjK,GAAOy4Q,EAAMz4Q,IAChE,IAAIrB,GAAS,EAEb,IACC,MAAMy+2B,EAAkB,IAAInuxB,SAASiuxB,EAAoB,WAAWD,OACpEt+2B,EAASy+2B,EAAgBr32B,MAAMq32B,EAAiBD,EACjD,CAAE,MAAO9h3B,GACRE,QAAQC,MAAM,6EACdD,QAAQC,MAAMH,EACf,CACA,OAAOsD,CACR,EAiCA,SAASk+2B,gBAAgB/M,EAAYz5iB,EAAM74T,GAC1C,MAAM,SAAC6/2B,GAAYhnjB,EAGnB,OAFIgnjB,GAAkB,IAAN7/2B,EAASsy2B,EAAWvt2B,KAAK,CAAC8zT,IACrCy5iB,EAAWA,EAAWjz2B,OAAS,GAAG0F,KAAK8zT,GACrCy5iB,CACR,CAEA,SAASgN,WAAWhN,EAAYz5iB,EAAM74T,GACrC,MAAM,GAAC63K,GAAMghJ,EAGb,OAFKhhJ,GAAY,IAAN73K,EACNsy2B,EAAWA,EAAWjz2B,OAAS,GAAG0F,KAAK8zT,GADxBy5iB,EAAWvt2B,KAAK,CAAC8zT,IAE9By5iB,CACR,CAGA,SAASiL,WAAWv4lB,EAAOzkR,EAAO06Q,GACjC,OAAOv4Q,OAAOu4Q,EAAM+J,MAAYtiR,OAAOnC,EACxC,CAEA,SAAS492B,cAAcn5lB,EAAOzkR,EAAO06Q,GACpC,OAAQsimB,WAAWv4lB,EAAOzkR,EAAO06Q,EAClC,CAEA,SAASqjmB,WAAWt5lB,EAAOzkR,EAAO06Q,GACjC,OAAOA,EAAM+J,KAAW/J,EAAM16Q,EAC/B,CAEA,SAASi+2B,cAAcx5lB,EAAOzkR,EAAO06Q,GACpC,OAAQqjmB,WAAWt5lB,EAAOzkR,EAAO06Q,EAClC,CAEA,SAASiimB,YAAYl4lB,EAAOzkR,EAAO06Q,GAClC,OAAOmimB,gBAAgBp4lB,EAAOzkR,EAAO06Q,EACtC,CAEA,SAASijmB,eAAel5lB,EAAOzkR,EAAO06Q,GACrC,OAAQiimB,YAAYl4lB,EAAOzkR,EAAO06Q,EACnC,CAGA,SAASyjmB,eAAe15lB,EAAOzkR,EAAO06Q,GACrC,OAAOv4Q,OAAOu4Q,EAAM+J,IAAQlgR,WAAWpC,OAAOnC,GAC/C,CAEA,SAAS+82B,aAAat4lB,EAAOzkR,EAAO06Q,GACnC,OAAOv4Q,OAAOu4Q,EAAM+J,IAAQ9zP,SAASxuB,OAAOnC,GAC7C,CAEA,SAASu92B,SAAS94lB,EAAOzkR,EAAO06Q,GAC/B,OAAOv4Q,OAAOu4Q,EAAM+J,IAAQn2Q,SAASnM,OAAOnC,GAC7C,CAEA,SAAS692B,YAAYp5lB,EAAOzkR,EAAO06Q,GAClC,OAAQ6imB,SAAS94lB,EAAOzkR,EAAO06Q,EAChC,CAEA,SAASmimB,gBAAgBp4lB,EAAOzkR,EAAO06Q,GACtC,MAAwB,KAAjBA,EAAM+J,IAAkC,OAAjB/J,EAAM+J,EACrC,CAEA,SAAS24lB,OAAO34lB,EAAOzkR,EAAO06Q,GAC7B,OAAOv4Q,OAAOnC,GACZgtB,MAAM,KACNC,KAAK6sB,GAAOkj0B,WAAWv4lB,EAAO3qO,EAAK4gO,GACtC,CAEA,SAAS2imB,UAAU54lB,EAAOzkR,EAAO06Q,GAChC,OAAQ0imB,OAAO34lB,EAAOzkR,EAAO06Q,EAC9B,CAGA,SAASuimB,gBAAgBx4lB,EAAOzkR,EAAO06Q,GACtC,OAAOA,EAAM+J,GAASzkR,CACvB,CAEA,SAASk92B,wBAAwBz4lB,EAAOzkR,EAAO06Q,GAC9C,OAAOA,EAAM+J,IAAUzkR,CACxB,CAEA,SAASw92B,aAAa/4lB,EAAOzkR,EAAO06Q,GACnC,OAAOA,EAAM+J,GAASzkR,CACvB,CAEA,SAASy92B,qBAAqBh5lB,EAAOzkR,EAAO06Q,GAC3C,OAAOA,EAAM+J,IAAUzkR,CACxB,CAEA,SAASy82B,YAAYh4lB,EAAOzkR,EAAO06Q,GAClC,MAAM6kmB,EAAOv/2B,EAAMgtB,MAAM,KACzB,OACCkw1B,wBAAwBz4lB,EAAO86lB,EAAK,GAAI7kmB,IACxC+imB,qBAAqBh5lB,EAAO86lB,EAAK,GAAI7kmB,EAEvC,CAGA,SAAS2jmB,qBAAqB55lB,EAAOzkR,EAAO06Q,GAC3C,OAAOA,EAAM+J,GAAS/J,EAAM16Q,EAC7B,CAEA,SAASu+2B,kBAAkB95lB,EAAOzkR,EAAO06Q,GACxC,OAAOA,EAAM+J,GAAS/J,EAAM16Q,EAC7B,CAEA,SAASy+2B,6BAA6Bh6lB,EAAOzkR,EAAO06Q,GACnD,OAAOA,EAAM+J,IAAU/J,EAAM16Q,EAC9B,CAEA,SAAS2+2B,0BAA0Bl6lB,EAAOzkR,EAAO06Q,GAChD,OAAOA,EAAM+J,IAAU/J,EAAM16Q,EAC9B,C,uDChOe,SAASuiS,MAAM79Q,EAAWwsC,GAA0B,IAAfkgB,EAAQ1uE,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC/D,MAAM,KACL8S,EACAkB,QAAQ,KAAChB,EAAO,CAAC,GACjBtY,YAAY,MAACif,EAAQ,KAClBqI,EACE+pE,GAAgBwtjB,EAAAA,wBAAAA,kBAAiBvmoB,IAAS2G,GAChD0yE,EAAAA,wBAAAA,MAAKv5E,EAAMi5E,EAAev9B,EAAWkgB,EAAU,cAChD,CCeA,MAAMouyB,mBAAqB,yBACrBC,gBAAkB,WAClBC,iBAAmB,QAEnBtp1B,SAAWskP,IAChB,MAAMilmB,GAAiBnnuB,EAAAA,OAAAA,OAAM22e,4BAAN32e,CAAkBkiI,GAEzC,OAAO37O,IACN,KAAK3D,EAAAA,OAAAA,UAAS2D,MAAYyqB,EAAAA,OAAAA,UAASkxN,GAAQ,OAAO37O,EAGlD,MAAM6g1B,EAAeJ,mBAAmBtlzB,KAAKn7B,GACvCi+D,EAAgB4ixB,EAAeA,EAAa,GAAK,KACjDC,EAAaD,EAAeA,EAAa,GAAK,KAOpD,OAJAJ,mBAAmBhg1B,UAAY,EAI3Bog1B,GAAgB5ixB,EAAcl+F,SAAWigC,EAAOjgC,OAC5C6g3B,EAAe5g1B,EAAQ8g1B,GAAY,IAKpC3m1B,EAAAA,OAAAA,SAAQ6F,EAAQyg1B,mBAAoBG,KAI7C,SAASxwP,4BAAWz0W,EAAOj6Q,EAAKgkR,GAA+B,IAAxBq7lB,IAAep92B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,KAAAA,UAAA,GACrD,MAAMT,EAAMwiR,EAAM94P,OACZyvV,GAAcp2W,EAAAA,OAAAA,KAAI01Q,EAAOz4Q,GAE/B,GAAI692B,IAAmBt2zB,EAAAA,OAAAA,UAAS4xT,MAAiBrtW,EAAAA,OAAAA,SAAQqtW,GAAc,OAAOn5W,EAC9E,QAAoByD,IAAhB01W,EAA2B,OAAOA,EAItC,OAFan5W,EAAI+qB,MAAM,KAEX,KAAM0tP,EAAQ,GAAKj6Q,CAChC,CAEA,MAAMs/2B,oBAAsBA,CAAC//2B,EAAOgg3B,KAC9Bhn2B,EAAAA,OAAAA,YAAWgn2B,GACZly2B,MAAMC,QAAQ/N,IAAekM,EAAAA,OAAAA,KAAIlM,EAAO0wB,GAAQqv1B,oBAAoBrv1B,EAAMsv1B,KAC1Ex2zB,EAAAA,OAAAA,UAASxpD,IACL45B,EAAAA,OAAAA,WAAU55B,EAAOig3B,GAAeF,oBAAoBE,EAAaD,IAElEA,EAAUhg3B,GALkB,KAmB9Bkg3B,mBAAqB7p2B,IAC1B,IAAKA,EAAM,MAAO,GAMlB,OAJ2B6iB,EAAAA,OAAAA,SAAQ7iB,EAAMop2B,gBAAiB,CAAClk1B,EAAGnxB,IACtD,IAAIA,MAGc8uB,QAAQ,KAAM,MAGnCin1B,eAAiBA,CAACzp2B,EAAQsp2B,KAC/B,KAAKx2zB,EAAAA,OAAAA,UAAS9yC,MAAYsC,EAAAA,OAAAA,YAAWgn2B,GAAY,OAAO,KAGxD,MAAM,MACLly0B,EAAK,QACLzsB,EAAO,iBACP++1B,EAAgB,cAChB33xB,EAAa,gBACbo2xB,EAAe,WACfwB,EAAU,wBACVC,EAAuB,UACvBtr0B,EAAY,IACTt+B,EAmBE6p2B,EAbmBC,EAACC,EAAiBhtyB,KAC1C,MAAM98D,EAAOtL,kBAAA,GACTo12B,GAQJ,OALAzq2B,EAAAA,OAAAA,SAAQy9D,EAAQvoE,IAAmB,IAAlB,KAAC3N,EAAI,MAAEyC,GAAMkL,EAC7B,MAAMmL,EAAO6p2B,mBAAmB3i3B,IAChCwH,EAAAA,OAAAA,KAAI4R,EAASN,EAAMrW,KAGb2W,GAGc6p2B,CAAiB/3xB,GAjBZv8E,EAAAA,OAAAA,KAAIm02B,EAAYp0sB,GAC1C8zsB,oBAAoB9zsB,EAAU+zsB,KAkB/B,OAAA302B,kBAAA,GACIqL,EAAM,CACTo3B,MAAOky0B,EAAUly0B,GACjBzsB,QAAS2+1B,EAAU3+1B,GACnB2zB,UAAWgr0B,EAAUhr0B,GACrBor0B,iBAAkBL,oBAAoBK,EAAkBJ,GACxDv3xB,cAAes3xB,oBAAoBQ,EAAeP,GAClDnB,iBAAiB3y2B,EAAAA,OAAAA,KAAI2y2B,EAAiB5ujB,GACrC8vjB,oBAAoB9vjB,EAAW+vjB,IAEhCM,wBAAyBN,EAAUM,MAQ/BI,UAAYrx1B,IACjB,IAAIm6B,EAAAA,OAAAA,UAASn6B,GAAa,OAAOA,EACjC,KAAK+L,EAAAA,OAAAA,UAAS/L,GAAa,MAAO,CAAC,EAEnC,IACC,OAAOvuB,KAAKG,MAAMouB,GAAc,KACjC,CAAE,MAAO/xB,GACR,MAAO,CACNA,EAAG,kBAAkB+xB,IAEvB,GAGKsx1B,sBAAwBjq2B,IAC7B,MAAMkq2B,GAAkB572B,EAAAA,OAAAA,KAAI0R,EAAQ,gBAAiB,CAAC,GAChDmq2B,GAAqB772B,EAAAA,OAAAA,KAAI0R,EAAQ,mBAAoB,CAAC,GAEtDoq2B,EAAgBJ,UAAUE,GAC1BG,EAAmBL,UAAUG,GAEnC,OAAAx12B,kBAAA,GACIqL,EAAM,CACT+xE,cAAeq4xB,EACfV,iBAAkBW,KAIdC,sBAAwBvg3B,GACZi/2B,iBAAiBt+2B,KAAKX,GAE/BA,EAAIy4B,QAAQwm1B,iBAAkB,IAAI/z1B,OAElClrB,EAIHwg3B,iBAAmBA,CAAC1ryB,EAASmlM,EAAOwmmB,KACzC,MAAMlB,EAAY5p1B,SAASskP,GAC3B,OAAOnlM,EACL7lE,OAAO,CAAC0E,EAAasC,KACrB,MAAM,MAACo3B,EAAK,QAAEzsB,EAAO,wBAAE8/1B,GAA2Bzq2B,EAC5C0q2B,EAAS/12B,kBAAA,GACXqL,EAAM,CACT2K,QAASA,GAAWysB,IAGfuz0B,EAAeV,sBAAsBS,GACrCE,EAAkBnB,eAAekB,EAAcrB,GASrD,GAPImB,GAA2C,IAAhBzmmB,EAAMxwQ,QAEpCo32B,EAAgBxz0B,MAAQkz0B,sBAAsBM,EAAgBxz0B,OAC9Dwz0B,EAAgBjg2B,QAAU2/1B,sBAAsBM,EAAgBjg2B,SAChEig2B,EAAgBts0B,UAAYgs0B,sBAAsBM,EAAgBts0B,YAG/Dks0B,EAAa,CAChB,MAAM,UAACx81B,EAAY,CAAC,EAAC,UAAEwsC,EAAY,mBAAkB,KAAEx7C,EAAO,CAAC,GAAKwr2B,EACpExr2B,EAAK4r2B,gBAAkBA,EACvB5r2B,EAAK2r2B,aAAeA,EACpB9+kB,MAAM79Q,EAAWwsC,EAAWx7C,EAC7B,CAOA,OALCkp2B,mBAAmB0C,EAAgBzC,gBAAiBnkmB,IACpDukmB,6BAA6BqC,EAAgBhB,wBAAyB5lmB,IAE3DtmQ,EAAY5P,KAAK882B,GAEtBlt2B,GACL,IACF/O,KAAK,CAACk82B,EAASC,IAAYD,EAAQnglB,MAAQoglB,EAAQpglB,QAGhDqglB,gBAAkBA,CAAClsyB,EAASmlM,KACjC,MAAMslmB,EAAY5p1B,SAASskP,GAC3B,OAAOnlM,EACL7lE,OAAO,CAAC0E,EAAasC,KACrBA,EAAO2K,QAAU3K,EAAO2K,SAAW3K,EAAOo3B,MAE1C,MAAMuz0B,EAAeV,sBAAsBjq2B,GACrC4q2B,EAAkBnB,eAAekB,EAAcrB,GAIrD,OAFA5r2B,EAAY5P,KAAK882B,GAEVlt2B,GACL,IACF/O,KAAK,CAACk82B,EAASC,IAAYD,EAAQnglB,MAAQoglB,EAAQpglB,QA+BzCsglB,YAAcA,CAACnsyB,EAASmlM,EAAOwmmB,KACvCz50B,EAAAA,OAAAA,SAAQ8tC,GAAiBA,EAEtB0ryB,iBAAiB1ryB,EAASmlM,EAAOwmmB,GAG5BS,aAAeA,CAACpsyB,EAASmlM,IACjCjzO,QAAQ8tC,GAAiBA,EAEtBksyB,gBAAgBlsyB,EAASmlM,GChRpBknmB,cAAgB,eAChBC,iBAAmB,iBACnBC,cAAgB,eAChBC,gBAAkB,iBAClBC,MAAQ,QACRC,QAAU,UACVC,aAAe,cACfrM,oCAAoB,oBACpBsM,aAAe,+BACfC,qBACZ,8EACYC,mBAAqB,yCACrBC,KAAO,OACPC,MAAQ,QACRxO,6BAAa,YACbyO,MAAQ,QACRvO,MAAQ,QACRp1D,6BAAa,YACbm1D,KAAO,OACPnnN,GAAK,KACLD,MAAQ,QACR5jlB,KAAO,OACPy5yB,MAAQ,QACRC,UAAY,eACZC,KAAO,OACPC,OAAS,SACTC,OAAS,SACTC,QAAU,UACVC,WAAa,aACb7O,aAAe,eACf8O,OAAS,SACTC,OAAS,SACTnP,uBAAO,OACPoP,MAAQ,QACRC,eAAiB,iBAEjBC,uBAAyB,CACrCb,MACAD,KACArO,MACAD,KACAhryB,KACAkryB,aACAiP,gBAEYE,OAAS,CACrB,CAACd,OAAQ,CACR,CAAC11N,IAAK,mCACN,CAACD,QAAQ5poB,EAAAA,iBAAAA,GAAE,gBAEZ,CAACs/1B,MAAO,CACP,CAACz1N,IAAK,mCACN,CAACD,QAAQ5poB,EAAAA,iBAAAA,GAAE,eAEZ,CAACix1B,OAAQ,CACR,CAACpnN,IAAK,mCACN,CAACD,QAAQ5poB,EAAAA,iBAAAA,GAAE,gBAEZ,CAACgx1B,MAAO,CACP,CAACnnN,IAAK,mCACN,CAACD,QAAQ5poB,EAAAA,iBAAAA,GAAE,eAEZ,CAACgmD,MAAO,CACP,CAAC6jlB,IAAK,mCACN,CAACD,QAAQ5poB,EAAAA,iBAAAA,GAAE,eAEZ,CAACkx1B,cAAe,CACf,CAACrnN,IAAK,mCACN,CAACD,QAAQ5poB,EAAAA,iBAAAA,GAAE,uBAEZ,CAACmg2B,gBAAiB,CACjB,CAACt2N,IAAK,mCACN,CAACD,QAAQ5poB,EAAAA,iBAAAA,GAAE,0BAIPsg2B,iBAAmBtj3B,IAAU+N,EAAAA,OAAAA,SAAQ/N,GAASgi3B,aAAehi3B,EAE7Duj3B,iBAAmB,eAAChuyB,EAAO7yE,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,GAAIg4Q,EAAKh4Q,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OACjD+kC,EAAAA,OAAAA,SAAQ8tC,KAAY9tC,EAAAA,OAAAA,SAAQ8tC,EAAQ,MAAO9tC,EAAAA,OAAAA,SAAQizO,EAAM,EAEpD8omB,kBAAoB9omB,IACzBjzO,EAAAA,OAAAA,SAAQizO,EAAM+omB,aAAmE,IAArDL,uBAAuB1j3B,QAAQg7Q,EAAM+omB,WAC9DpB,mBACA,KAEEqB,gBAAkBzh3B,IAAO,CAAE,CAAC0g3B,MAAO1g3B,EAAK,CAAC2qpB,QAAQrpf,EAAAA,OAAAA,WAAUthK,KAE3D0h3B,kBAAoB,SAAC3j3B,EAAOiC,GAAG,IAAEunD,EAAQ9mD,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,IAAAA,UAAA,GAAQ,OAAA2I,kBAAA,GACnDq42B,gBAAgBzh3B,GAAI,CACvB,CAAC48yB,8BAAar1vB,EAAW,OAAS85zB,iBAAiBtj3B,GACnD,CAAC0i3B,WAAY,CACZ,CAACM,QAAM332B,kBAAA,CACN,CAACyo2B,wBAAOwP,iBAAiBtj3B,IACrBwpD,GAAY,CAAC,CAACu5zB,YAAa,CAAC,MAEjC,EAGIa,gBAAkBA,CAAC5j3B,EAAOiC,IAAGoJ,kBAAA,GAC/Bq42B,gBAAgBzh3B,GAAI,CACvB,CAACih3B,OAAQlj3B,IAGJ6j3B,YAAcA,CAAC7j3B,EAAOiC,EAAK6h3B,KAChC,GAAIA,IAAgBt6zB,EAAAA,OAAAA,UAASxpD,GAAQ,CACpC,MAAM6I,EAAQ862B,kBAAkB3j3B,EAAOiC,GAAK,IAE3C8h3B,cACCxg2B,QAAQ,WAACnmB,KAEPyL,EAKJ,OAHA8/J,EAAAA,OAAAA,QAAO3oK,EAAO,CAACyrB,EAAGvU,KACjB9Z,EAAW8Z,GAAK2s2B,YAAYp41B,EAAGvU,EAAG4s2B,KAE5Bj72B,CACR,CACA,OAAOi72B,EAAeH,kBAAkB3j3B,EAAOiC,GAAO2h3B,gBAAgB5j3B,EAAOiC,IAgBjE+h3B,UAAY,SAAC551B,GAA8B,IAAzB051B,EAAYph3B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,IAAAA,UAAA,GAC1C,MAAMs7B,EAAM,GACZ,OAAIyJ,EAAAA,OAAAA,SAAQrd,KAEZu+I,EAAAA,OAAAA,QAAOv+I,EAAK,CAACpqB,EAAOiC,KACnB+7B,EAAIx5B,KAAKq/2B,YAAY7j3B,EAAOiC,EAAK6h3B,MAHT9l1B,CAM1B,EA8Baim1B,sBAAwB1uyB,IACpC,MAAMv3C,EAAM,GACZ,IAAK,IAAItnB,KAAU6+D,EAAS,CAC3B,MAAM,WAACkimB,EAAU,cAAEhvlB,GAAiB/xE,EAEpC,GAAI+gqB,IAAeo+L,oCAAnB,CACA,GAAIyN,iBAAiB76xB,KAAmBw6xB,OACvC,MAAM,IAAI5i3B,MAAM8h3B,aAAeC,sBAEhCpk1B,EAAIx5B,KAAK,CACR,CAACqopB,KAAK7npB,EAAAA,OAAAA,KAAI0R,EAAQor2B,cAAe,IACjC,CAAC/N,+BAAa/u2B,EAAAA,OAAAA,KAAI0R,EAAQqr2B,gBAAiB,IAC3C,CAACn1N,QAAQ5npB,EAAAA,OAAAA,KAAI0R,EAAQk2oB,MAAO,IAC5B,CAACm2N,YAAaiB,UAAUv7xB,GAAe,IARM,CAU/C,CACA,OAAOzqD,GAiBKkm1B,mBAAqBxpmB,IAC1B,CACN,CAAC+nmB,OAAQY,OAAO3omB,EAAM+omB,WACtB,CAAC7B,eAAgB,CAAC,CAAC/0N,KAAK7npB,EAAAA,OAAAA,KAAI01Q,EAAOmnmB,iBAAkB,KACrD,CAACK,cAAe8B,UAAUtpmB,KA4CfypmB,kBAAoBA,CAAC5uyB,EAASmlM,KAC1C,GAAI6omB,iBAAiBhuyB,EAASmlM,GAAQ,OAAO,KAE7C,KAAKjzO,EAAAA,OAAAA,SAAQ+70B,kBAAkB9omB,IAAS,MAAM,IAAIr6Q,MAAM8h3B,aAAeE,oBAEvE,MAAO,CACN+B,gBAAiBF,mBAAmBxpmB,GACpC2pmB,oBAAqBJ,sBAAsB1uyB,KChQ7C,4BACC,kCAAmCrqE,IAA+B,IAA9B,MAACkK,EAAK,SAAE0D,EAAQ,OAAEpC,GAAOxL,EAG3B4N,GAFb9T,EAAAA,OAAAA,KAAIoQ,EAAO,0BAA2B,OACtCpQ,EAAAA,OAAAA,KAAI0R,EAAQ,uBAAwB,eACdm+1B,kCAC5BC,kCAEdh81B,EAASi81B,iCAEV,uBAAwBt+1B,IAAgB,IAAf,SAACqC,GAASrC,EAClCqC,EAASg81B,kCACTh81B,EAASi81B,kCCfLuP,cAAgB5t2B,GAAU,CAC/B,CACCm3B,QAAS,mBACTC,MAAOp3B,EAAOo3B,QAAS9qB,EAAAA,iBAAAA,GAAE,YAE1B,CACC6qB,QAAS,YACTC,OAAO9qB,EAAAA,iBAAAA,GAAE,YAIX,wBAAe9X,IAA+C,IAA7C9N,YAAY,KAACmnF,EAAI,OAAE7tE,EAAM,YAAEysC,IAAaj4C,EACxD,IAAKwL,EAAQ,OAAO,KAEpB,MAAM+/D,EAAU6tyB,cAAc5t2B,GACxB/M,EAAU+M,EAAO6t2B,oBAAsB7t2B,EAAO6t2B,qBAAsBvh2B,EAAAA,iBAAAA,GAAE,kBAE5E,OACClF,EAAAA,kCAAAA,eAACm+1B,cAAK,CACL,eAAc,GAAG94zB,uBACjB7tC,OAAQivE,EACR,gBAAcvhE,EAAAA,iBAAAA,GAAE,gBAChB,iBAAgByzD,IAChB34D,EAAAA,kCAAAA,eAAA,SAAInU,GAGN,ECvBY662B,+BAAiC,qCAE9Cth2B,EAAAA,aAAAA,qBAAoBsh2B,+BAAgC,CACnDrh2B,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,yBAELvmB,WAAY,CACXsZ,OAAQ,CAAC,EACT6tE,MAAM,EACNphC,YAAa,IAEdrsC,eAAcA,6BCbf,oBAAe5L,IAA+C,IAA9C,MAACwvQ,EAAK,OAAEhkQ,EAAM,IAAEzU,EAAG,oBAAEm12B,GAAoBls2B,EACxD,MAAM,WAACusqB,EAAU,gBAAEigM,EAAe,iBAAE0I,GAAoB1p2B,GAAU,CAAC,EAE7D+t2B,EAAgBhtM,IAAeg+L,iBAC/BiP,EAAkBhN,EAClB9quB,EAAKvhI,kBAAA,GACPqvQ,EACA0lmB,GAGJ,OACCti2B,EAAAA,kCAAAA,eAAC41B,kCAAAA,SAAQ,MACR51B,EAAAA,kCAAAA,eAAA,cACEs51B,GAAuBqN,GAAiBC,GACzC5m2B,EAAAA,kCAAAA,eAAC4m2B,EAAer52B,kBAAA,CAACqyE,OAAK,EAACz7E,IAAKA,GAAS2qI,EAAK,CAAE8tI,MAAOA,KAChD,KACH08lB,GACAt51B,EAAAA,kCAAAA,eAAA,qCACCpH,OAAQA,EACR6tE,KAAM6yxB,EACN15xB,OAAK,IAEH,KAGN,ECxBYinyB,sBAAwB,2BAmBrCzh2B,EAAAA,aAAAA,qBAAoByh2B,sBAAuB,CAC1Cxh2B,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,eAEL/M,aAAc,CACbF,OAAQ,CAAC,EACTgkQ,MAAO,CAAC,EACRz4Q,IAAK,KACLm12B,qBAAqB,EACrBvF,wBAAyB,CAAC,GAE3Bz02B,WAAY,CAKXm52B,iBAAkB,CACjBhz1B,OAAQ,CACP7iB,KAAM,WAEP2iB,SAAS,GAKV201B,gCAAiC,CAChCz01B,OAAQ,CACP7iB,KAAM,WAEP2iB,SAAS,GA8BVyz1B,wBAAyB,CACxBvz1B,OAAQ,CACP7iB,KAAM,WAEP2iB,SAAS,GAOViu1B,mBAAoB,CACnB/t1B,OAAQ,CACP7iB,KAAM,SAEP2iB,QAAS,GACTssB,aAAa,GAkBd6h0B,UAAW,CACVju1B,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CAOXs9Q,MAAO,CACNn3P,OAAQ,CACP7iB,KAAM,UAEP2iB,QAAS,IAOV6u1B,aAAc,CACb3u1B,OAAQ,CACP7iB,KAAM,SAEP2iB,QAAS,IAQV0u1B,WAAY,CACXxu1B,OAAQ,CACP7iB,KAAM,UAEP2iB,QAAS,IAOV+u1B,gBAAiB,CAChB7u1B,OAAQ,CACP7iB,KAAM,SAEP2iB,QAAS,IAOVmv1B,cAAe,CACdjv1B,OAAQ,CACP7iB,KAAM,SAEP2iB,QAAS,IAOVkv1B,cAAe,CACdhv1B,OAAQ,CACP7iB,KAAM,UAEP2iB,QAAS,IAOViv1B,YAAa,CACZ/u1B,OAAQ,CACP7iB,KAAM,UAEP2iB,QAAS,CAAC,GAOX+t1B,gBAAiB,CAChB7t1B,OAAQ,CACP7iB,KAAM,UAEP2iB,QAAS,IAOV+yO,MAAO,CACN7yO,OAAQ,CACP7iB,KAAM,UAEP2iB,QAAS,IAOVqnpB,YAAa,CACZnnpB,OAAQ,CACP7iB,KAAM,UAEP2iB,QAAS,IAOVyu1B,kBAAmB,CAClBvu1B,OAAQ,CACP7iB,KAAM,UAEP2iB,QAAS,MAIZA,QAAS,CAAC,EACVssB,aAAa,IAGf74B,eAAc,iBACd+O,WAAY,CAKX++1B,kBAAmB,CAAC,EAKpBC,kBAAmB,CAAC,KCpQtB,MAAMC,WAAa,yBACbC,kBAAoB,0BAEbC,eAAiB,kBACjBC,mBAAoBnrO,EAAAA,wBAAAA,IAAwBgrO,WAAY,CACpEvn3B,KAAMyn3B,eACNzq1B,UAAW51B,IAAQK,EAAAA,OAAAA,KAAIL,EAAMog3B,kBAAmB,QCLjD,SAASn8E,iBAAW9uvB,GACnB,OAAe,IAARA,GAAwB,SAARA,CACxB,CAEO,MAAMor0B,gBAAkBA,CAAC3vyB,EAASuytB,KACjCzooB,EAAAA,OAAAA,OAAM9pF,GACX35D,OAAOlF,GAAUA,EAAO+tQ,QAAUqjhB,GAClC99nB,IAAI,GACJhlK,IAAI,UAAW,IACfhF,QAWGml3B,4BAA8B,CACnCC,IAAKtv2B,IACJ,MAAMuv2B,GAAkBprO,EAAAA,wBAAAA,IAAgB,CAACnkoB,aAAYkv2B,eAAgB,CAAC,GACtE,MACgD,UAA/Chg3B,EAAAA,OAAAA,KAAIqg3B,EAAiB,YAAa,WAClCrg3B,EAAAA,OAAAA,KAAIqg3B,EAAiB,SAAU,QAKnB,SAASC,kBAA2D,IAA3C,MAAC5qmB,EAAK,OAAEhkQ,EAAM,SAAE4/b,EAAQ,UAAExgc,GAAUpT,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC/E,SAAK8mD,EAAAA,OAAAA,UAAS9yC,OAIVA,EAAOo6D,iBAAiBrpC,EAAAA,OAAAA,SAAQizO,EAAM16Q,YAItC0W,EAAO6u2B,yBAA0B/7zB,EAAAA,OAAAA,UAAS8sZ,IAAaA,EAAS8yV,iBAIhE1yxB,EAAO8u2B,mBAAoB58E,iBAAWluhB,EAAMv4N,cAK/CzrC,EAAO+u2B,aACPzs2B,EAAAA,OAAAA,YAAWms2B,4BAA4Bzu2B,EAAO+u2B,eAC7CN,4BAA4Bzu2B,EAAO+u2B,YAAY3v2B,MAMlD,CCvDO,MAAM4v2B,uCAAyC,yCACzCC,uCAAyC,yCACzCC,qCAAuC,uCACvCC,yCAA2C,qCAElDC,sBACL,6GACKC,4BAA8B,ylCA4C9BC,oBAAqBlqO,EAAAA,+BAAAA,qBAAoBiqO,4BAA6B,CAC3E/mN,aAAc,CAAC,YAAa,QAAS,qBACrC1jnB,kBAAmBqq0B,uCACnBpq0B,gBAAiBqq0B,uCAGlB,wBACC,CAACF,wCAAyCM,mBAE1C,CAACL,wCAAyCz62B,IAAuC,IAAtC,iBAACquB,EAAgB,MAAEnkB,EAAK,OAAEsB,GAAOxL,EAC3E,MAAM,QAACyL,EAAO,KAAEjB,GAAQgB,GAEvBtZ,YAAY,MAACs9Q,IACVtlQ,EAIEnT,EAFsC,YADnB+C,EAAAA,OAAAA,KAAI0Q,EAAM,+BAGNglQ,EAAMothB,UAAYpthB,EAAM46T,UAC/C2wS,GAAwBjh3B,EAAAA,OAAAA,KAAI2R,EAASmv2B,uBAE3Cvs1B,EAAiB,CAChB0s1B,sBAAuBf,gBAAgBe,EAAuBhk3B,MAIhE,CAAC2j3B,sCAAuCnv2B,IAAwB,IAAvB,iBAAC8iB,GAAiB9iB,EAC1D8iB,EAAiB,CAChB0s1B,sBAAuB,O,yHC3EnB,MAAMC,OAASh72B,IAAoC,IAAnC,OAACwL,EAAM,SAAEoC,EAAQ,MAAE4hQ,EAAK,IAAEz4Q,GAAIiJ,EACpD,MAQMi72B,EAAmB,CACxBhi0B,OAAQ,2BACR42f,MAAO,gBACP,cAAe,wBAKV,MAACjtgB,EAAK,QAAEzsB,GAAW3K,EAEnB82B,EAJUA,IAAQ240B,EAAiB340B,IAASA,EAIrCisoB,CAAQ/iqB,EAAO82B,MAE5B,OACC1vB,EAAAA,kCAAAA,eAAA,oBAAAzS,kBAAA,GACMpJ,EAAM,CAACA,OAAO,CAAC,EAAC,CACrBgsC,MAAI,EACJ,cAAa,CACZ,aAAc5sB,GAAWysB,EACzB,mBAAoB4sO,EAAM4wZ,cACvBtopB,EAAAA,iBAAAA,GAAE,kBAAmB03P,EAAM5sO,MAAO4sO,EAAM4wZ,eACxCtopB,EAAAA,iBAAAA,GAAE,YAAa03P,EAAM5sO,QAEzBN,KAAMA,EACN,WA/Bc,WAAY,IAAXlwC,EAACoF,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrBpF,EAAEub,iBACF,MAAM/P,EAASxL,EAAEwL,QACX,QAACgjD,EAAO,KAAEprD,GAAQpD,EAExBwb,EAAS,qBAAsB,CAACpC,SAAQgkQ,SAD3B5xQ,EAAS,CAACku2B,YAAa,CAAClrzB,UAASprD,OAAMoI,WAAW,CAAC,EAEjE,EA0BE5D,KAAK,KACL,kBAAiBmc,EACjBwsB,QAAQ,eAKLlqB,yBAAOA,CAACvO,EAAKqB,KAAiB,IAAf,SAACqC,GAASrC,EAC9B,MAAM,UAACX,EAAS,YAAEqtC,EAAW,WAAE/lD,GAAcgY,GACvC,MAACslQ,EAAK,QAAEnlM,EAAO,sBAAE0wyB,EAAqB,SAAE3va,GAAYl5c,EAEpDgp3B,GACLh9sB,EAAAA,OAAAA,QAAO7zF,MAAa9tC,EAAAA,OAAAA,SAAQw+0B,GAAyBA,EAAwB1wyB,EAExE8wyB,GAAgBp/sB,EAAAA,OAAAA,MAAKm/sB,EAAiB,GAetCE,EAAmB5E,YAAY2E,EAAe3rmB,EAdhC,CACnBh2P,UAAW,CACVlP,KAAM,CACL2tC,cACAn8B,cAAe,wCAEhBtQ,OAAQ,CAAC,EACTtZ,cAED8zD,UAAW,6BACXx7C,KAAM,CACLglQ,WAIF,OAAOxuQ,EAAAA,OAAAA,KAAIo62B,EAAkB5v2B,GACvB4u2B,gBAAgB,CAAC5qmB,QAAOhkQ,SAAQ4/b,WAAUxgc,eAIxCgI,EAAAA,kCAAAA,eAACoo2B,OAAM,CAACjk3B,IAAKyU,EAAOnZ,KAAMm9Q,MAAOA,EAAOhkQ,OAAQA,EAAQoC,SAAUA,IAHjE,OAOV,oDCvEOo7B,uBAAsBA,uCAAIj/B,aAAAA,YAE3Bsx2B,WAAaA,CAAC7rmB,EAAO8rmB,KAC1B,MAAM,UAACxsM,EAAY,SAAU2tH,YAAa91I,EAAQ,MAAQn3Y,EAG1D,MAAO,CACNs/Z,YACAnoB,QACAs7C,mBALyB/xqB,EAAAA,OAAAA,UAASor1B,GAAiBA,EAAgB,OAUxDC,iCAAmC,uCCpBzC,SAASn9E,qBAA6B,IAAfhzV,EAAQ5zc,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAGzC,OAAK4zc,EAASpyc,eAAe,iBACtBoyc,EAASizV,cAAe,EAChC,EDiBArmxB,EAAAA,aAAAA,qBAAoBuj2B,iCAAkC,CACrD9i2B,KAAI,0BACJM,OAAM,8BACN7mB,WAAY,CACXs9Q,MAAO,CACNr3P,QAAS,CAAC,GAEXkyD,QAAS,CACRlyD,QAAS,MAEVizb,SAAU,CACTjzb,QAAS,CAAC,GAEX4i2B,sBAAuB,CACtB5i2B,QAAS,MAEVqoxB,wBAAyB,CACxBroxB,SAAS,IAGXvN,UAAW,CAACmv2B,kBAAmB7qO,wBAAAA,IAC/BtjoB,eAAczL,kBAAA,CACb,CAAC6oC,uCAAyB,CACzBv7B,OAAQzN,IAAmC,IAAlC,SAAC4N,EAAQ,WAAE1b,EAAU,MAAEgY,GAAMlK,EACrC,MAAM,QAACqqE,EAAO,MAAEmlM,EAAK,wBAAEgxhB,GAA2BtuyB,GAC5C,cAACop3B,GAAiBpx2B,EAAMU,WAG1BszJ,EAAAA,OAAAA,QAAO7zF,IAAYm2tB,GACtB5yxB,EACC4s2B,uCACAa,WAAW7rmB,EAAO8rmB,OAInB1v2B,0BClDL,MAAM6M,gBAAOzY,IAAkB,IAAjB,WAAC9N,GAAW8N,EACzB,MAAM,SAACorc,GAAYl5c,EACbmsyB,EAAcD,mBAAchzV,GAElC,OACCx4b,EAAAA,kCAAAA,eAAA,2BACC,sBAAqByrxB,EACrB,8BAA6BA,IAC7BzrxB,EAAAA,kCAAAA,eAAA,uCAA0C1gB,KAK7C,2BClBasp3B,yBAA2B,+BAExCxj2B,EAAAA,aAAAA,qBAAoBwj2B,yBAA0B,CAC7Cvj2B,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,YAELvmB,WAAY,CACXs9Q,MAAO,CACNr3P,QAAS,CAAC,GAEXkyD,QAAS,CACRlyD,QAAS,MAEVizb,SAAU,CACTjzb,QAAS,CAAC,GAEXqoxB,wBAAyB,CACxBroxB,SAAS,MCfL,MAAM2rxB,qBAAiB55xB,IAC7B,MAAM,MAAEk9C,EAAK,aAAEg6vB,EAAY,KAAE3nzB,EAAI,eAAEgi3B,GAAmBvx2B,EAAMhY,WACtDA,EAAUiO,kBAAA,GACZ+J,EAAMhY,WAAU,CACnBk1D,OAAOtvC,EAAAA,iBAAAA,IAAEwpJ,EAAAA,OAAAA,UAASl6G,EAAO,CAAC,OAAU,MACpCg6vB,cAAc9/oB,EAAAA,OAAAA,UAAS8/oB,EAAc,CAAE,OAAU,MACjD3nzB,OACAgi3B,eAAgBA,EAAiBxb,kBAAoBA,kBAAmBwb,IAEzE,OAAAt72B,kBAAA,GAAW+J,EAAO,CAAAhY,gBAGNwp3B,mBAAqBA,CAACzY,EAAawY,EAAgBt+C,KAC/D,IAAK8lC,EAAa,OAAOwY,EACzB,MAAMjoR,EAAa5hlB,KAAKkE,IAAI2l2B,EAAgB7p2B,KAAKsmB,MAAM+q0B,EAAY9lC,IAEnE,OAD8B3pO,EAAW2pO,GAAe3pO,EAAW,GAAGwsQ,UACvCiD,EAAczvQ,EAAaA,EAAW,GAGzDmoR,mBAAqBA,CAACC,EAAYp+0B,KAI9C,GAAIo+0B,EAAa,GAAKA,EAAap+0B,EAAU,EAAG,CAE/C,OADiB7mB,WAAWil2B,IAAejl2B,WAAW6mB,GAAW7mB,WAAWil2B,GAAcjl2B,WAAW6mB,GAEtG,CACA,OAAO,GAGKq+0B,kCAAoCzV,IAChD,IAAI7p0B,EAAAA,OAAAA,SAAQ6p0B,GAAqB,MAAO,CAAC,EAEzC,MAAM0V,EAAWtF,YAAYpQ,GAC7B,OAAO6S,kBAAkB6C,EAAU,CAACvD,UAAWnB,QAAU,CAAC,GAG9C2E,uBAAyBA,CAAC7p3B,EAAY8p3B,EAAiBC,KACnE,MAAMC,GAAOtp2B,EAAAA,kCAAAA,eAACup2B,WAAU,MAClBC,EAAkBC,0BACxB,OAAOL,GAAgBpp2B,EAAAA,kCAAAA,eAACqp2B,EAAe972B,kBAAA,CAAC+72B,KAAMA,EAAME,gBAAiBA,GAAqBlq3B,MAI9Eoq3B,qBAAwBA,CAACpq3B,EAAY8p3B,EAAiBC,KAClE,MAAM,aAAC76D,EAAY,iBAAEm7D,EAAgB,uBAAEC,GAA0Btq3B,EAC3Dgq3B,GAAQtp2B,EAAAA,kCAAAA,eAAA,oCACb41D,QAAS,CAAC5lC,MAAOw+wB,EAAc74vB,MAAOi0zB,GACtCl11B,QAASi11B,EACTzuzB,aAAa,YAEd,IAAIsuzB,EAAkBC,0BACtB,OAAOL,GAAgBpp2B,EAAAA,kCAAAA,eAACqp2B,EAAe972B,kBAAA,CAAC+72B,KAAMA,EAAME,gBAAiBA,GAAqBlq3B,MAGrFiq3B,WAAa9r1B,IAEjBzd,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,6BACdlhB,EAAAA,kCAAAA,eAAA,cAAYgwB,MAAO+9zB,uBAKhB0b,wBAA0Bhs1B,IAC/B,IAAI+r1B,EAAej82B,kBAAA,GAAOyg2B,sBAG1B,OAFAwb,EAAgBjb,cAAgB,EAChCib,EAAgBhb,kBAAoB,EAC7Bgb,GCzEKK,eAAiB9iG,IACxBA,GAAkB/2wB,MAAMC,QAAQ82wB,KACrCxpI,EAAAA,yBAAAA,yBAAwBwpI,GAAerixB,KAAKwwQ,IAC3Cx1Q,QAAQ2tC,IAAI,sBAAwB6nO,EAAMtmP,KAAK,SCDpC7lB,QAAWlC,IACvB,MAAMij3B,GAAoBrgtB,EAAAA,OAAAA,OAAKr7J,EAAAA,OAAAA,KAAIvH,EAAO+rB,GAASA,EAAKy6I,WAExD,OADAw8sB,eAAeC,IACR172B,EAAAA,OAAAA,KAAIvH,EAAO+rB,IACV5S,EAAAA,kCAAAA,eAAC4S,EAAKy6I,SAAaz6I,EAAK0g0B,cCNpBy2B,cAAgBlj3B,GACrBuH,IAAIvH,EAAO+rB,GACV5S,cAAC4S,EAAKy6I,SAAaz6I,EAAK0g0B,aCO3B81B,gBAAmBvj2B,IAAS7F,EAAAA,kCAAAA,eAAA,2BAAyB,sBAAoB,GAAO6F,GAEhFwj2B,gBAAkBj82B,IAAA,IAAC,MAAEonD,EAAK,kBAAEw1zB,EAAiB,kBAAEC,EAAiB,WAAEC,EAAU,YAAExywB,EAAW,WAAEq4vB,EAAU,aAAED,EAAY,KAAEwZ,EAAI,gBAAEE,EAAe,uBAAEW,GAAwB/82B,EAAA,OACzK4S,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,8BACdlhB,EAAAA,kCAAAA,eAACoq2B,cAAa,CAAC51zB,MAAOA,EAAOw1zB,kBAAmBA,EAAmBC,kBAAmBA,KACtFjq2B,EAAAA,kCAAAA,eAACqq2B,eAAc,CACdxa,aAAe,CAAE,QAAYqa,EAAa,KAASxywB,GACnDq4vB,WAAYA,EACZD,aAAcA,IAEbwZ,GACFtp2B,EAAAA,kCAAAA,eAACsq2B,eAAc,CACdH,uBAAwBA,EACxBX,gBAAiBA,MAKdY,cAAgBzx2B,IAAmD,IAAlD,MAAC67C,EAAK,kBAAEw1zB,EAAiB,kBAAEC,GAAkBtx2B,EACnE,GAAI67C,EACH,OACCx0C,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wBACdlhB,EAAAA,kCAAAA,eAAA,eAAagwB,MAAOwkB,EAAOmB,MAAOq0zB,EAAmBj60B,QAASk60B,EAAmBr0zB,YAAY,WAM3Fy0zB,eAAiBpx2B,IAA8C,IAA7C,aAAC421B,EAAY,WAAEE,EAAU,aAAED,GAAa721B,EAC/D,GAAI421B,EAAa3hE,SAAW6hE,EAAW7hE,UAAY4hE,EAAaE,WAC/D,OACChw1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,yBACdlhB,EAAAA,kCAAAA,eAAA,uBACC6v1B,aAAcA,EACdE,WAAYA,EACZD,aAAcA,MAObwa,eAAiBnx2B,IAAiD,IAAhD,uBAAEgx2B,EAAsB,gBAAEX,GAAiBrw2B,EAClE,IAAKgx2B,EACJ,OACCnq2B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,iCACdlhB,EAAAA,kCAAAA,eAAA,yBAA4Bwp2B,KAMhC,mBAAgBly2B,EAAKkC,KAAiB,IAAf,SAACwB,GAASxB,EAChC,MAAM,YAACk+F,EAAW,KAAE7wG,EAAI,WAAE4q0B,EAAU,eAAEo3C,EAAc,aAAE3Y,EAAY,WAAEF,EAAU,oBAAEua,EAAmB,uBAAEJ,GAA2B7y2B,EAAMhY,WACtI,IAAI8+pB,EAAiB,GACjBosN,GAAwB,EAC5B,MAAM1a,GAAgBnm0B,EAAAA,OAAAA,SAAQ9iC,GAAyC,GAAhCA,EAAK4j3B,mBAAqB,GAEjErsN,GAAkBz0nB,EAAAA,OAAAA,SAAQ9iC,GAAuC,GAA9BA,EAAK6j3B,iBAAmB,GAE3DF,EAAwB1a,EAAa3g1B,KAAKrR,GAAUA,EAAO81qB,SAAWx1B,GACjEosN,IACJpsN,GAAkBz0nB,EAAAA,OAAAA,SAAQmm0B,GAAmD,GAAnCjp2B,EAAK4j3B,kBAAkB,GAAG72L,QAGrE,MAAMt0rB,EAAUiO,kBAAA,GACZ+J,EAAMhY,WAAU,CACnBww2B,aAAc,CAAEA,eAAcE,aAAY5xM,oBAG3C,GAAImsN,EACH,OAAOpB,uBAAuB7p3B,EAAY8p3B,gBAAiBC,iBAG5D,IAAI1/0B,EAAAA,OAAAA,SAAQ9iC,KAAUmJ,MAAMC,QAAQpJ,EAAKyrB,SAAWzrB,EAAKyrB,MAAMtxB,OAC9D,OAAO0o3B,qBAAqBpq3B,EAAY8p3B,gBAAiBC,iBAG1D,IAAI/oM,EAAYv3qB,QAAQlC,EAAKyrB,OAC7B,MAAMq41B,EAAW9j3B,EAAK+j3B,UAAWC,EAAahk3B,EAAKik3B,YAC7Clg1B,EAAUk+0B,mBAAmBxx2B,EAAM+41B,YAAawY,EAAgB3Y,GAEtE,IAAIia,IAA2Btj3B,EAAKkk3B,cAAgBrzwB,GAAem1vB,WAAage,GAAa,EAAG,CAC/F,IAAIG,EAAqBjC,mBAAmBzoM,EAAUt/qB,OAAQ4pC,GAC9D,GAAI+/0B,EAAWK,EAEd,OADAhw2B,EAAU6z1B,sCAAuC,CAAE,SAAYmc,IACxD7B,uBAAuB7p3B,EAAY8p3B,gBAAiBC,gBAE7D,CAEA,IAWIC,GAXA,YAAC2B,GAAe3z2B,EAChBky2B,EAAej82B,kBAAA,GAAOyg2B,sBAW1B,GAVAwb,EAAgB9a,iBAAmBic,EACnCnB,EAAgB/a,aAAeoc,GAAc,EAAI,EAAKA,EAAa,EAChErB,EAAgBpqvB,QAAOoqvB,EAAgBpqvB,WAAQx3H,IAE9Cf,EAAKyrB,MAAMtxB,OAAU2p3B,GAAY9j3B,EAAKkk3B,gBACzCvB,EAAgB9a,iBAAmBic,EACnCnB,EAAgBpqvB,MAAQurvB,GAAYM,EAAYjq3B,OAAS,IAItD02G,IAAgBm1vB,UAAW,CAC9B,IAAItiC,EAAYijC,kBACV7j0B,EAAAA,OAAAA,SAAQum0B,IAAiBlx1B,KAAKsmB,MAAM4q0B,GAAgB1C,kBACzDjjC,EAAY2lC,GAEb5vL,EAAUpoqB,QAAQ0a,IACjBA,EAAK/rB,KAAKioI,MAAMp3B,YAAc,SAE/B4xwB,GAAOtp2B,EAAAA,kCAAAA,eAAA,yBAAuBmnzB,MAAO7mJ,EAAWmxJ,WAAYA,EAAY7myB,QAASA,EAASsl0B,aAAc3lC,GACzG,MACCjqJ,EAAUpoqB,QAAQ0a,IACjBA,EAAK/rB,KAAKioI,MAAMp3B,YAAc,SAE/B4xwB,GAAOtp2B,EAAAA,kCAAAA,eAAA,yBAAuBmnzB,MAAO7mJ,EAAW4vL,aAAc1C,iBAE/D,OAAO4b,iBAAgBpp2B,EAAAA,kCAAAA,eAACqp2B,gBAAe972B,kBAAA,CAAC+72B,KAAMA,EAAME,gBAAiBA,GAAqBlq3B,IAC1F,E,qGC1HM,MAAM0Z,oCAAiB,CAC7B,CAAC411B,uBAAwBxh2B,IAAyD,IAAxD,iBAAEquB,EAAkB7iB,QAAUC,SAAS,KAAEgN,KAAUzY,EAC5EquB,EAAiB,CAACi8E,YAAa7xF,KAEhC,CAAC1O,aAAAA,YAAYJ,yBAA0B4B,IAA8C,IAA5CC,QAASC,SAAS,KAACnB,IAAM,YAAEC,GAAYgB,EAK9D,iBADAjB,EAAKgF,SAErBhF,EAAK4K,MAAMssS,eAAe,aAI3Bj3S,EAAY,CAAC041B,YADO341B,EAAK8L,wBAAwBzB,SAGlD,CAAC5K,aAAAA,YAAYggB,oBAAqBle,IAA8C,IAA5CL,QAASC,SAAS,KAACnB,IAAM,YAAEC,GAAYsB,EAMzD,iBADAvB,EAAKgF,SAErBhF,EAAK4K,MAAMssS,eAAe,aAI3Bj3S,EAAY,CAAC041B,YADO341B,EAAK8L,wBAAwBzB,SAGlD,CAAC5K,aAAAA,YAAYD,4BAA6BiC,IAA0B,IAAzB,MAAC7B,EAAK,YAAEK,GAAYwB,EAC9D,MAAM,KAACtS,GAAQyQ,EAAMhY,WACrB,IAAIqqC,EAAAA,OAAAA,SAAQ9iC,KAAUmJ,MAAMC,QAAQpJ,EAAKyrB,SAAWzrB,EAAKyrB,MAAMtxB,OAC9D,OAED,MAAMkq3B,EAAark3B,EAAKsk3B,YAAaN,EAAahk3B,EAAKik3B,YACvD,IAAI,YAACG,GAAe3z2B,EACfuz2B,GAAc,IACjBI,EAAYjq3B,OAAO,EACpBiq3B,EAAYvk3B,KAAK,SAEbuk3B,EAAYz62B,SAAS062B,IACzBD,EAAYvk3B,KAAKwk3B,IAGnB,CAACjc,oBAAqBz11B,IAAmC,IAAlC,SAACwB,EAAUpC,QAAQ,QAACC,IAASW,EACnDwB,EAASnC,EAAQ6/1B,oBAAqB7/1B,EAAQ8/1B,kBAE/C,CAAC5J,0CAA2Ct11B,IAAoD,IAAnD,KAAE/B,EAAI,OAAEkB,EAAM,SAAEoC,EAAQ,MAAE1D,EAAK,YAAEK,GAAa8B,EAC1F,MAAM,YAAEwx2B,GAAgB3z2B,GAClB,MAAEpV,GAAU0W,EAAOC,QACzB,IAAIgy2B,EAAa3o3B,GAEZA,GAAS+o3B,EAAYjq3B,OAAS,GAClC6p3B,EAAa,EACbI,EAAYjq3B,OAAS,GACZkB,GAA+B,GAAtB+o3B,EAAYjq3B,OAG9B6p3B,IAFAA,GAAY,EAKb,MAAMhy2B,EAAOtL,kBAAA,GAAOqL,EAAOC,QAAS,CAAAqy2B,WAAYD,EAAY/o3B,GAAQ2o3B,eACpE7v2B,EAAS8z1B,uCAAwCj21B,GAEjD,MACMuy2B,GAD6Blk3B,EAAAA,OAAAA,KAAIwQ,EAAM,wBACEW,cAAc,gDAC7D9T,OAAO0/B,OAAO,CAAChiB,IAAKmp2B,EAAY3+0B,UAAWnS,SAAU,YAEtD,CAACu00B,uCAAwCzk1B,IAA0B,IAAzB,OAAExR,EAAM,SAAEoC,GAAUoP,EAC7DpP,EAAS8z1B,uCAAwCl21B,EAAOC,UAEzD,CAACo/vB,qCAA4BljuB,IAA8C,IAA7C,OAAEn8B,EAAM,SAAEoC,EAAQ,MAAE1D,EAAK,YAAEK,GAAao9B,EAIrEp9B,EAAY,CACXY,KAAM,kBACNrW,MAJgBqL,kBAAA,GAAQ+J,EAAMky2B,gBAAiB,CAAA/a,aAAc,EAAGF,cAAc,EAAMC,kBAAkB,IAKtGh21B,UAAW,MACXC,cAAc,IAKfd,EAAY,CACXY,KAAM,cACN+quB,YAHuBhsuB,EAAM2z2B,YAAYjq3B,OAIzCwX,UAAW,SACXC,cAAc,IAEfd,EAAY,CACXY,KAAM,cACNrW,MAAO,OACPsW,UAAW,OACXC,cAAc,IAGf,MAAMI,EAAOtL,kBAAA,GAAOqL,EAAOC,QAAS,CAAAqy2B,WAAY,OAAQL,WAAY,IACpE7v2B,EAASg01B,iCAAkCn21B,IAE5C,CAACq21B,mCAAoCl6zB,IAAwC,IAAvC,SAAEh6B,EAAUpC,QAAQ,QAAEC,IAAWm8B,EACtEh6B,EAASo01B,8BAA+Bv21B,IAEzC,CAACs21B,kCAAmC95zB,IAAwC,IAAvC,SAAEr6B,EAAUpC,QAAQ,QAAEC,IAAWw8B,EACrEr6B,EAASq01B,2BAA4Bx21B,IAEtC,CAACy21B,sBAAuB51zB,IAAwC,IAAtC9gC,QAAQ,QAAEC,GAAS,YAAElB,GAAY+hC,EAC1D/hC,EAAY,CACX,KAAQ,cACR,MAASkB,EAAQw31B,YACjB,cAAe,OCnGlBjr1B,EAAAA,aAAAA,qBAAoB,eAAgB,CACnCC,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,mBAELM,OAAM,uBACN7mB,WAAY,CAKXk1D,MAAO,CACNjvC,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAORon3B,kBAAmB,CAClBzk2B,QAASqo1B,wBACTno1B,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAACko1B,wBAAyB,IAAK,IAAK,IAAK,IAAK,OAOtDqc,kBAAmB,CAClB1k2B,QAASuo1B,wBACTro1B,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CACL,iBACA,mBACAoo1B,wBACA,gBACA,kBACA,oBAQH8b,uBAAwB,CACvBrk2B,QAASso1B,8BACTpo1B,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,IAAKmo1B,8BAA+B,IAAK,IAAK,IAAK,OAO5Dr/C,aAAc,CACbjpyB,QAASmo1B,gBACTjo1B,OAAQ,CACP7iB,KAAM,WAOR+m3B,iBAAkB,CACjBpk2B,QAASoo1B,mBACTlo1B,OAAQ,CACP7iB,KAAM,WAOR6u0B,WAAY,CACXlszB,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,QAOrB7e,KAAM,CACL0e,QAAS,KACTE,OAAQ,CACP7iB,KAAM,WAORsn3B,WAAY,CACX3k2B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR80G,YAAa,CACZnyF,QAASun1B,UACTrn1B,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAACon1B,UAAWD,aAOpBkD,WAAY,CACXxq1B,QAAS,CACR2oxB,SAAS,EACThmyB,QAAS,IAEVud,OAAQ,CACP7iB,KAAM,WAQRim3B,eAAgB,CACftj2B,QAAS+n1B,kBACT7n1B,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,IAAK,IAAI,IAAK4n1B,kBAAkB,IAAKD,qBAO9C6C,aAAc,CACb3q1B,QAASio1B,eACT/n1B,OAAQ,CACP7iB,KAAM,WAOR2n3B,oBAAqB,CACpBhl2B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORot2B,WAAY,CACXzq1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORun3B,uBAAwB,CACvB5k2B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORyo3B,uBAAwB,CACvB5/0B,QAAAA,CAAQr+B,GAA2B,IAAxB9N,YAAY,KAAEuH,IAAQuG,EAChC,MAAMom2B,IAAsB7p0B,EAAAA,OAAAA,SAAQ9iC,IAASmJ,MAAMC,QAAQpJ,EAAKyk3B,aAAezk3B,EAAKyk3B,YAAc,GAClG,OAAOrC,kCAAkCzV,EAC1C,EACA/t1B,OAAQ,CACP7iB,KAAM,UAEP2o3B,YAAY,IAGd5l2B,gBAAeA,KACD,CACZ0q1B,YAAa,KACbmb,gBAAiBje,mBACjB0d,YAAa,KAGf/5E,eAAc,qBACdl4xB,eAAc,oCACd+O,WAAY,CAMX+m1B,uCAAwC,CAACrp1B,OAAQ,CAAC7iB,KAAM,WAMxDos2B,iCAAkC,CAAC,EAMnCI,8BAA+B,CAAC,EAMhCC,2BAA4B,CAAC,GAG9Br31B,UAAW,CACV,CACCsiB,SAAUC,IAAAA,M,6CC7Pb,MAAMkx1B,iBAAmBrmB,IACxBpl1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,mCACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,qDACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,gDACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wCAEhBlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,uCACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,yBACflhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,kCACdkk0B,EAAc,MAAOpl1B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,qCAMnCwq1B,yBAA2BA,CAAC3tM,EAAaqnL,KAC9Cpl1B,EAAAA,kCAAAA,eAAA,WACC8F,MAAO,CAAE,8BAA8B,EAAM,aAAcs/0B,IAE1D,IAAIp11B,MAAM+tqB,GAAa93pB,KAAKwl2B,iBAAiBrmB,IAAch31B,IAAIoj0B,IAC/DxxzB,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,mCAAmC,EACnC,aAAcs/0B,IAGd5zB,KAMC3rzB,iBAAOzY,IAAA,IAAC,YAAE2wqB,EAAW,YAAEqnL,GAAah41B,EAAA,OACzC4S,EAAAA,kCAAAA,eAAC41B,kCAAAA,SAAQ,MACR51B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,4BACbwq1B,yBAAyB3tM,EAAaqnL,MAK1C,6BC1CaumB,cAAgB,gBAGhBC,0BACZ,2CACY9U,yCACZ,mCACY9zM,0DAAwB,wBACxBuoL,0BACZ,iDACYC,2BACZ,kDACYC,oCACZ,2DACYogC,6BACZ,qDACYC,sBAAwB,wBACxBhpN,4DAA0B,0BAE1BipN,wBAA0B,kCAG1BC,yCACZ,wDACY7pN,wBAAkB,8CAClB8pN,kCACZ,iDACYC,4BACZ,2CAEYC,qCACZ,oDAEYC,iBACZ,6DAEYzlB,oEACZ,+CACY0lB,oBAAsB,0BAEtBC,6BACZ,qDACYC,2CACZ,2DAEYC,gCACZ,kCACYC,gCACZ,kCACYj2N,kCAA4B,4BAC5BC,oCAA8B,8BAC9BC,iCAA2B,2BAE3B6sM,qBAAe,0CACfmD,uBAAiB,6CAEjB57K,mCAA6B,4BAC7BE,kCACZ,mDACYC,iCACZ,kDAEYyhM,uBAAyB,yBACzBC,yBAA2B,2BAC3BC,sBAAwB,wBC7DxB1/L,mBAAW,WACX2/L,aAAe,EACfC,WAAa,EACbC,0BAA4B,EAC5BC,gCAAkC,EAElCC,mBAAqB,kBAErBC,iBAAmB,CAC/BC,iBAAiBjo2B,EAAAA,iBAAAA,GAAE,uBACnBko2B,4BAA4Blo2B,EAAAA,iBAAAA,GAAE,cAAe+n2B,oBAC7CI,gBAAgBno2B,EAAAA,iBAAAA,GAAE,wBAENoo2B,iBAAkBpo2B,EAAAA,iBAAAA,GAC9B,wEAGYqo2B,aAAe,QACfC,mBAAqB,cACrBr/N,iDAAahC,WAAaziZ,SAAS2iZ,KACnCohO,aAAe,eACfC,oBAAsB,sBACtBC,oBAAsB,sBACtBC,mBAAqB,qBACrBC,wBAA0B,0BAC1BC,kBAAoB,oBACpBC,4BAA8B,yBAC9BC,yBAA2B,QAC3B/rB,0BAAkB,kBAClBC,sBAAc,cACd+rB,qBAAuB,cACvBC,kBAAoB,WACpBC,0BAA4B,uCAC5BC,uBAAyB,eACzBC,eAAiB,cACjBC,YAAc,aACdC,sBAAwB,MACxBC,mBAAqB,SACrBC,oBAAsB,UAEtBC,aAAe,CAC3BC,eAAgB,UAChBC,cAAe,UAGHC,iBAAmB,CAC/BC,aAAc,eACdC,oBAAqB,sBACrBC,oBAAqB,oCACrBC,6BAA8B,uCAGlBC,wBAA0B,CACtCC,uBAAwB,6BACxBC,wBAAyB,sCAGbC,uBAAyB,WACzBC,uBAAyB,WACzBC,qBAAuB,WAEvBC,gBAAkB,qBAClBC,yBAA2B,8BAE3BC,UAAY,WACZC,cAAgB,cAChBC,iBAAmB,iBACnBC,iBAAmB,iBACnBC,aAAe,cACfC,qBAAuB,qBACvBC,iCACZ,uCACYC,wBAA0B,wBAE1BC,uCAAyC,+EAG1BF,oIAWfG,oBACZ,iDAEY5kN,yBAAiB,iBACjB6kN,sBAAwB,wBAExBC,yBAA0Bnr2B,EAAAA,iBAAAA,GACtC,6FAGYor2B,yBAA0Bpr2B,EAAAA,iBAAAA,GAAE,6BAE5Bqr2B,gBAAkB,kBAElBC,uBAAyB,CACrCC,SAAU,WACVtlC,mBAAoB,qBACpBK,mBAAoB,qBACpBklC,kBAAmB,oBACnBtgM,gBAAiB,kBACjBugM,iBAAkB,oBAGNC,eAAgB1r2B,EAAAA,iBAAAA,GAAE,YAGlB2r2B,4BAA8B,kBAC9BC,kBAAoB,cAIpBC,mBAAqB,0BAErBC,mBAAqB,CACjC,QACA,kBACA,QACA,SAEYC,mBAAqB,CACjCC,IAAK,kBACLC,QAAS,YAEGC,wBAA0B,CACtCC,aAAans2B,EAAAA,iBAAAA,GAAE,qBAGHypoB,4BAAoB,iIAWpB2iO,eAAiB,UACjBC,eAAiB,UAEjBt0N,wDAAoB,YACpBu0N,0BAA4B,EAC5BroM,gCAAwB,CACpCjsqB,GAAI+/oB,wDACJjtnB,OAAO9qB,EAAAA,iBAAAA,GAAE,kBAGGkkqB,mCAA0BlkqB,EAAAA,iBAAAA,GAAE,uBAE5Bus2B,0BAA4B,UAC5BC,sBAAwB,MACxBC,kCAAoC,kBAEpCnoM,6BAAqB,CACjC,CACCtsqB,GAAIu02B,0BACJzh1B,OAAO9qB,EAAAA,iBAAAA,GAAE,iBAEV,CACChI,GAAIw02B,sBACJ1h1B,OAAO9qB,EAAAA,iBAAAA,GAAE,eAEV,CACChI,GAAIy02B,kCACJ3h1B,OAAO9qB,EAAAA,iBAAAA,GAAE,+BAGEqkqB,4BAAmBrkqB,EAAAA,iBAAAA,GAAE,QACrBukqB,kCAAyBvkqB,EAAAA,iBAAAA,GAAE,uBAC3B0s2B,6BAA8B1s2B,EAAAA,iBAAAA,GAAE,kBAChC2s2B,2BAA4B3s2B,EAAAA,iBAAAA,GAAE,uBAC9B4s2B,sBAAuB5s2B,EAAAA,iBAAAA,GAAE,kBCrLzB6s2B,kBAAoB3l3B,IAChC8Y,EAAAA,iBAAAA,GACC,CACC4qB,KAAM,8BACNjkC,QAAS,8BACTojC,QAAS,oCAEV,CAAE7iC,MAAOA,IAGE4l3B,8BAAgCA,CAAC5l3B,EAAO40B,KACpD9b,EAAAA,iBAAAA,GACC,CACC4qB,KAAM,8BACNjkC,QAAS,mCACTojC,QAAS,mEAEV,CAAE7iC,MAAOA,EAAO40B,WAAYA,ICXxBix1B,sBAAwBA,KAE5Bjy2B,EAAAA,kCAAAA,eAAC41B,kCAAAA,SAAQ,MACR51B,EAAAA,kCAAAA,eAAA,eAAay/D,gBAAgB,OAAOzd,YAAU,IAC7ChiD,EAAAA,kCAAAA,eAAA,qBACC/B,KAAK,UACLijB,UAAU,4BACVwO,KAAK,sBACLS,MAAI,EACJ/oC,KAAK,KACLo7C,aAAW,EACX5S,WAAY,CACXK,OAAQ,CACP,aAAcqg1B,wBACd,gBAAiB,cAIpBtw2B,EAAAA,kCAAAA,eAAA,YACC/B,KAAK,UACL7W,KAAK,KACL64C,YAAY,OACZg6nB,YAAU,EACV,YAAU,SACVr9pB,KAAK,WAELoD,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,mCACbmv1B,4BAQP,4CChCM6B,UAAYA,CAAC13jB,EAAM23jB,KACxBny2B,EAAAA,kCAAAA,eAAA,iBACCgwB,MAAOwqR,EACPptS,KAAK,qBACL2iB,QAAQ,UACR,oBAAmB,CAClBn3B,OAAQ+y2B,cACRnxjB,QAED5qR,WAAY,CAAE,aAAc,GAAGui1B,IAAS33jB,OAIpC30S,uBAAOzY,IAQP,IARQ,WACb4zB,EAAU,oBACVox1B,EAAmB,oBACnBC,EAAmB,mBACnBC,EAAkB,SAClBl7N,EAAQ,YACR2mB,EAAW,eACXphB,GACAvvpB,EACA,IAAIu8B,EAAAA,OAAAA,SAAQ3I,KAAe2I,EAAAA,OAAAA,SAAQyo1B,GAAsB,OAAO,KAEhE,MAAMG,EAAoB,GACV,MAAfx0M,EACGg0M,kBAAkBh0M,GAClBmvM,iBAAiBC,mBAGfqF,GACLxy2B,EAAAA,kCAAAA,eAAA,YACE,KACDA,EAAAA,kCAAAA,eAACyy2B,sBAAqB,OAIxB,OAAIr7N,GAEFp3oB,EAAAA,kCAAAA,eAAA,aACCA,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,0BACdqx1B,GACDvy2B,EAAAA,kCAAAA,eAAA,UAAKoy2B,GACJI,IAEFxy2B,EAAAA,kCAAAA,eAAA,YACAA,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,4BACdgs1B,iBAAiBG,eAAgB,IACjC6E,UAAUlx1B,EAAYks1B,iBAAiBG,kBAMxC1wN,GAEF38oB,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAW,kCACfqx1B,GACDvy2B,EAAAA,kCAAAA,eAAA,UAAKoy2B,GACJI,GAEDxy2B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,0BACbgs1B,iBAAiBG,eAAgB,IACjC6E,UAAUlx1B,EAAYks1B,iBAAiBG,mBAO3Crt2B,EAAAA,kCAAAA,eAAA,YACCA,EAAAA,kCAAAA,eAAA,QACCkhB,UAAW,oCAAoCmx1B,KAE9CE,EACAL,WAAUht2B,EAAAA,iBAAAA,GAAEkt2B,GAAsBG,GAClCC,IAEFxy2B,EAAAA,kCAAAA,eAAA,YACAA,EAAAA,kCAAAA,eAAA,QACCkhB,UAAW,oCAAoCox1B,KAE9CpF,iBAAiBG,eAAgB,IACjC6E,UAAUlx1B,EAAYks1B,iBAAiBG,mBAM5C,yCCjGMqF,qBAAuBA,CAACtm3B,EAAO40B,IACpC,GAAGgx1B,8BAA8B5l3B,EAAO40B,KAEnC2x1B,mBAAqBvl3B,IAMrB,IANsB,SAC3BgqpB,EAAQ,YACR2mB,EAAW,WACX/8oB,EAAU,oBACVqx1B,EAAmB,eACnB11N,GACAvvpB,EACA,MAAMml3B,EAAoBG,qBACzB30M,EACCphB,EAA8B,GAAb37nB,GAGbwx1B,GACLxy2B,EAAAA,kCAAAA,eAAA,YACE,KACDA,EAAAA,kCAAAA,eAACyy2B,sBAAqB,OAIxB,OAAIr7N,GAEFp3oB,EAAAA,kCAAAA,eAAA,aACCA,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,0BACdqx1B,EACAC,IAMD71N,GAEF38oB,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,kCACdqx1B,GACDvy2B,EAAAA,kCAAAA,eAAA,UAAKghB,GACJwx1B,IAMHxy2B,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAW,oCAAoCmx1B,KACnDE,EACAC,IAIJ,sCCjDa5kc,6BAAaA,CAAChxN,EAAS+sd,KACnC,MAAMipM,EAAc,GACdC,EAAcly3B,OAAOumB,OAAO,CAAC,EAAGyiqB,GAWtC,OAVI35qB,MAAMC,QAAQ2sN,IAAYA,EAAQ57N,OAAS,GAC9C47N,EAAQ1kN,QAAQ9K,IAAsB,IAArB,MAAE2mpB,EAAK,MAAE/jnB,GAAO5iC,EAChC,MAAMvG,EAAO,CACZqW,GAAI62oB,EACJ/jnB,MAAOA,GAER4i1B,EAAYls3B,KAAKG,KAIZ,CAACgs3B,KAAgBD,IAGZ5oM,oCAAqBA,CAACptd,EAASqtd,EAAiBC,IACxDttd,GAAWA,EAAQ57N,OAAS,EAE3BkprB,GAAcA,EAAWlprB,OAAS,IAGnCkprB,EAAWjmqB,KAAK2O,GACTA,EAAK1V,KAAO0/M,EAAQ,IAIrBqtd,EAGFrtd,EAAQ,GAGTqtd,EC3BF6oM,iBAAmB1l3B,IAInB,IAJoB,YACzBgzpB,EAAW,oBACXG,EAAmB,wBACnBgqB,GACAn9qB,EACA,MAAMq9qB,EAAsB78P,6BAAWwyO,EAAa+oB,iCAC9CuB,EAAqBV,oCAC1BzpB,EACAtD,wDACAwtB,GASD,OACCzqqB,EAAAA,kCAAAA,eAAA,WAPyBogpB,IAER,OAAhBA,KAAyBz2nB,EAAAA,OAAAA,SAAQy2nB,IAAgBA,EAAYp/pB,OAAS,EAMrEmprB,CAAkB/pB,IAClBpgpB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,4BACdlhB,EAAAA,kCAAAA,eAAA,gBACCsS,MAAOm4pB,EACPzkoB,cAAe,CAAC0koB,GAChBlwqB,OAAO,SACPu1B,QAAQ,YACR3oC,KAAK,KACL+oC,MAAI,EACJiQ,eAAgBgpoB,kCAChBx5oB,WAAY,CACXl2B,QAAS,CACR,aAAc6wqB,IAGhB,oBAAmB,CAClBI,QAAQ,OAKX3qqB,EAAAA,kCAAAA,eAAC41B,kCAAAA,SAAQ,QAMb,8BC5CM/vB,YAAOzY,IAcP,IAdQ,WACb4zB,EAAU,oBACVox1B,EAAmB,oBACnBC,EAAmB,mBACnBC,EAAkB,SAClBl7N,EAAQ,kBACR27N,EAAiB,YACjBC,EAAW,YACXj1M,EAAW,gBACXk1M,EAAe,eACft2N,EAAc,YACdyD,EAAW,oBACXG,EAAmB,wBACnBgqB,GACAn9qB,EACA,MAAM8l3B,GACLlz2B,EAAAA,kCAAAA,eAAA,QACC8F,MAAO,CACN,eAAe,EACf,iCACCit2B,KAAsBpp1B,EAAAA,OAAAA,SAAQyo1B,GAC/B,oCACEW,KAAsBpp1B,EAAAA,OAAAA,SAAQyo1B,MAGjCpy2B,EAAAA,kCAAAA,eAAA,mBACCkhB,UAAW,wBACX95B,KAAK,KACL2oC,QAAQ,YACR,WAAS,0BACTC,MAAO8h1B,qBACP,oBAAmB,CAClBl52B,OAAQyz2B,oBACRzp3B,KAAMwt3B,0BAMJ+C,GACLnz2B,EAAAA,kCAAAA,eAACoz2B,aAAY,CACZhzN,YAAaA,EACbG,oBAAqBA,EACrBgqB,wBAAyBA,IAIrB8oM,GACLrz2B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,uBAAuBiy1B,GAGjCG,EAAoBlB,GACzBpy2B,EAAAA,kCAAAA,eAACuz2B,kBAAiB,CACjBvy1B,WAAYA,EACZox1B,oBAAqBA,EACrBC,oBAAqBA,EACrBC,mBAAoBA,EACpBl7N,SAAUA,EACV2mB,YAAaA,EACbk1M,gBAAiBA,EACjBt2N,eAAgBA,IAEd,KAEEg2N,EAAqBP,EAAsB,MAChDpy2B,EAAAA,kCAAAA,eAACwz2B,mBAAkB,CAClBp8N,SAAUA,EACV2mB,YAAaA,EACb/8oB,WAAYA,EACZqx1B,oBAAqBA,EACrBC,mBAAoBA,EACpB31N,eAAgBA,IAIlB,OAAKhznB,EAAAA,OAAAA,SAAQ3I,KAAgB2I,EAAAA,OAAAA,SAAQyo1B,GAuC9Bh7N,KAAaztnB,EAAAA,OAAAA,SAAQqp1B,IAC3Bhz2B,EAAAA,kCAAAA,eAAA,OACCkhB,UAAU,kCACVtkB,KAAK,UACL,aAAW,MAEXoD,EAAAA,kCAAAA,eAAA,QACC8F,MAAO,CACN,2BAA4Bit2B,EAC5B,sBAAuBA,EACvB,wCAAwC,IAGxCJ,EACAO,GAEDG,IAGFrz2B,EAAAA,kCAAAA,eAAA,OACCpD,KAAK,UACL,aAAW,IACXkJ,MAAO,CACN,4BAA4B,EAC5BkxF,OAAQogjB,EACR,kBAAmBuF,KAGpB38oB,EAAAA,kCAAAA,eAAA,QACC8F,MAAO,CACN,uCAAwCsxoB,IAGxCu7N,GAEDU,GAzEEj8N,GAEFp3oB,EAAAA,kCAAAA,eAAA,QACCpD,KAAK,UACL,aAAW,IACXkJ,MAAO,CACN,4BAA4B,EAC5BkxF,OAAQogjB,KAGTp3oB,EAAAA,kCAAAA,eAAA,QACC8F,MAAO,CACN,wCAAwC,IAGxCwt2B,EACAl8N,KAAaztnB,EAAAA,OAAAA,SAAQqp1B,IAAgBE,GAEtCG,IAMHrz2B,EAAAA,kCAAAA,eAAA,OACCpD,KAAK,UACL,aAAW,IACXkJ,MAAO,CACN,4BAA4B,EAC5B,kBAAmB62oB,IAGnB22N,EACAD,IA6CL,oDCnKMI,cAAgBrm3B,IAAyC,IAAxC,WAAE4zB,EAAU,SAAEo2nB,EAAQ,UAAEizB,GAAWj9qB,EACzD,OAAIgqpB,GAEFp3oB,EAAAA,kCAAAA,eAAA,OACCkhB,UAAU,4CACVtkB,KAAK,SACL,YAAU,WAEVoD,EAAAA,kCAAAA,eAAA,oCACCkyD,UAAU,oBACV0D,QAAS,CACR5lC,OAAO9qB,EAAAA,iBAAAA,GACNmlqB,EACG,wCACA,oBAEJ10nB,MAAO,KAERjhC,SAASxP,EAAAA,iBAAAA,GACRmlqB,EACG,4IACA,6BAEJnvnB,aAAa,wBAOhBl7C,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,iCACdlhB,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,YACdhc,EAAAA,iBAAAA,GAAE,gBACHlF,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,6BACbyI,EAAAA,OAAAA,SAAQ3I,GAAqC,GAAvB,MAAMA,OACxB,QACA9b,EAAAA,iBAAAA,GAAE,oBAEVlF,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,oCACdlhB,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,0CACdhc,EAAAA,iBAAAA,GAAE,uBAEJlF,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,8CACdlhB,EAAAA,kCAAAA,eAAA,oCACCkyD,UAAU,oBACV0D,QAAS,CACR5lC,OAAO9qB,EAAAA,iBAAAA,GAAE,uBAAwB8b,GACjC20B,MAAO,KAERjhC,SAASxP,EAAAA,iBAAAA,GACR,+IAEDg2C,aAAa,0BAQnB,iCC3DMw4zB,cAAgBtm3B,IAA+B,IAA9B,YAAEqxsB,EAAW,SAAEzjsB,GAAU5N,EAC/C,MAAMgkC,GAASlsB,EAAAA,iBAAAA,GACd,wFAED,OACClF,EAAAA,kCAAAA,eAAA,OACCkhB,UAAU,2CACVtkB,KAAK,SACL,YAAU,WAEVoD,EAAAA,kCAAAA,eAAA,UAAKoxB,IACLpxB,EAAAA,kCAAAA,eAAA,cACCgwB,OAAO9qB,EAAAA,iBAAAA,GAAE,WACT9d,KAAK,KACL2oC,QAAQ,YACR,WAAU0O,KACTzjC,EAAS4w2B,0BAA2B,CAAE1p3B,MAAOu8sB,EAAc,QAG7Dz+rB,EAAAA,kCAAAA,eAAA,oBACC2/B,IAAKvO,EACL8pB,aAAa,oBACb9zD,KAAK,SAMT,iCCjCMus3B,wBAA0BA,CAACC,EAAYC,KAC5C,GAAKD,UAAAA,EAAYtgC,WAAY,OAAOsgC,EASpC,OAPuBA,EAAWtgC,WAAWwgC,eAC1CF,EAAWtgC,WAAWwgC,eAAe5k2B,MAAM,KAC3C,IACYhX,QAAQyuQ,IACtB,MAAMotmB,EAAkBF,EAAiBD,EAAWtgC,WAAW3skB,IAC3DotmB,IAAiBH,EAAWtgC,WAAW3skB,GAASotmB,KAE9CH,GAGR,yCCPMI,oBAAsB,SAACC,GAAiC,IAAjBC,EAAOtv3B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACvD,MAAMm5Z,EAAWp9Z,OAAO4F,KAAK0t3B,GAC3Bn22B,OAAO3Z,GAAO6s3B,mBAAmBxg3B,SAASrM,IAC1CoD,KAAK,CAACC,EAAGC,IACJup3B,mBAAmBxg3B,SAAShJ,GAC5Bwp3B,mBAAmBxg3B,SAAS/I,GAC1Bup3B,mBAAmBpv3B,QAAQ4F,GAAKwp3B,mBAAmBpv3B,QAAQ6F,IADrB,EADD,GAI5CmK,OAAO,CAAC0a,EAAKnoB,KACTA,IAAQ8s3B,mBAAmBC,IAC9B5k2B,EAAI2k2B,mBAAmBE,SAAW8C,EAAe9v3B,GAEjDmoB,EAAInoB,GAAO8v3B,EAAe9v3B,GAEpBmoB,GACL,CAAC,GAQL,OANA3rB,OAAOkO,QAAQui3B,yBAAyBl52B,QAAQ9K,IAAyB,IAAvBu5Q,EAAOwtmB,GAAW/m3B,OAC5CxF,IAAnBss3B,EAAQvtmB,KACXo3I,EAASo2d,GAAcD,EAAQvtmB,MAI1Bo3I,CACR,EAEA,qCCNMl4Y,mBAAOzY,IAoBP,IApBQ,WACb4zB,EAAU,oBACVox1B,EAAmB,KACnBvr3B,EAAI,YACJ43sB,EAAW,kBACX21K,EAAiB,cACjBC,EAAa,SACbj9N,EAAQ,SACRp8oB,EAAQ,YACRoq1B,EAAW,eACXzoM,EAAc,UACd0tB,EAAS,uBACTiqM,EAAsB,4BACtBC,EAA2B,iBAC3BV,EAAgB,eAChBtpB,EAAc,YACdvuL,EAAW,sBACXyuL,EAAqB,eACrB+pB,EAAc,MACdpo3B,GACAgB,EACA,MAAMmh2B,GAAe5k0B,EAAAA,OAAAA,SAAQ0q1B,GACvB7lB,GAAmB7k0B,EAAAA,OAAAA,SAAQyq1B,GAC3BK,GAActqtB,EAAAA,OAAAA,WAAUtjK,GACxB6t3B,EACLto3B,GAASoo3B,EAAiBA,EAAiB,EAAIpo3B,EAAQ,EAExD,OAAKu9B,EAAAA,OAAAA,SAAQ8q1B,EAAYni2B,OAiGrB8h2B,GACIp02B,EAAAA,kCAAAA,eAAC0z2B,mBAAa,CAACj1K,YAAaA,EAAazjsB,SAAUA,KAI1DgF,EAAAA,kCAAAA,eAACyz2B,mBAAa,CACbzy1B,YACC2I,EAAAA,OAAAA,SAAQyo1B,GAAuBpx1B,EAAaox1B,EAE7Ch7N,SAAUA,EACVizB,UAAWA,KA1GZoqM,EAAYni2B,MAAMpa,QACjB,CAAC0a,EAAMtmB,KACLsmB,EAAK0g0B,WAAWo8B,WAAat4N,EAC7BxkoB,EAAK0g0B,WAAWq8B,eAAiBvqB,EACjCxy0B,EAAK0g0B,WAAWs8B,kBAAoBjzN,EACpC/poB,EAAK0g0B,WAAWu8B,kBAAoBtlB,EACpC330B,EAAK0g0B,WAAWw8B,cAAgB9zM,EAChCpppB,EAAK0g0B,WAAW28B,yBAA2BxlB,IAC3C9g0B,EAAAA,OAAAA,SAAQ2q1B,IAAT,MACCA,GAAAA,EAAyBho3B,KACxBsmB,EAAK0g0B,WAAWw9B,mBAAqBkD,iBACrCM,EAAuBho3B,GACvBsmB,IAEFtmB,IAAUoo3B,IACR9h2B,EAAK0g0B,WAAWy8B,sBAAwBxlB,KAK3CgqB,GACAV,GACAlz3B,OAAO4F,KAAKst3B,IAEZY,EAAYni2B,MAAMpa,QAAQ,CAAC0a,EAAMtmB,EAAO4zB,KACvCA,EAAI5zB,GAASqn3B,iBAAwB/g2B,EAAMih2B,MAK5C7z2B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,uCAAuC,EACvCkxF,OAAQogjB,EACR,aAAcuF,GAEf//oB,KAAK,SACL,aAAYg12B,6BAEXvnM,IAAcqnM,uBACd1x2B,EAAAA,kCAAAA,eAAA,OAAK9C,GAAG,gBAER8C,EAAAA,kCAAAA,eAAA,gBACCnZ,KAAM4t3B,EACNvK,YAAY,EACZC,wBAAsB,EACtBna,YAAU,EACVt4vB,YAAY,OACZ6ywB,qBAAqB,EACrB,cAAa,CACZ,aAAcsH,8BAIjB7x2B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,yCAA0Cs/0B,IAG1CA,GACApl1B,EAAAA,kCAAAA,eAAA,iBACCgwB,MAAO4g1B,cACPxj2B,KAAK,qBACL2iB,QAAQ,WACR,oBAAmB,CAClBn3B,OAAQkz2B,sBACRtxjB,MAAM7wR,EAAAA,OAAAA,SAAQyo1B,GACXpx1B,EACAox1B,GAEJ3g1B,QAASs/0B,sBAGV/w2B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,wCAAwC,KAGzC9F,EAAAA,kCAAAA,eAAA,0BACCiu1B,eAAa,EACbC,cAAY,EACZC,iBAAe,EACfC,qBAAmB,EACnBC,WAAS,EACTG,iBAAkBA,EAClBD,aAAcA,EACdE,aAAchwJ,EACdo0J,oBAAkB,SAwB1B,iCCvJM8hB,SAAW9t3B,IAAQ8iC,EAAAA,OAAAA,SAAQ9iC,KAAS8iC,EAAAA,OAAAA,SAAQ9iC,EAAKyrB,OAEjDzM,sCAAOA,CAACvO,EAAKlK,KAAmB,IAAjB,SAAE4N,GAAU5N,EAChC,MACC9N,YAAY,UACXg3D,EAAS,qBACTs+zB,EAAoB,cACpBC,EAAa,cACbC,EAAa,YACbr2K,EAAW,oBACX4zK,EAAmB,mBACnBC,EAAkB,SAClBl7N,EAAQ,kBACR27N,EAAiB,YACjBC,EAAW,YACX5tB,EAAW,eACXzoM,EAAc,UACd0tB,EAAS,4BACTkqM,EAA2B,YAC3Bn0N,EAAW,oBACXG,EAAmB,sBACnBkqM,EAAqB,YACrBzuL,GACA,kBACD+4M,EAAiB,iBACjBlB,EAAgB,wBAChBtpM,EAAuB,eACvBggL,GACGjz1B,EAGCq92B,SAASG,WAAuBA,EAAcxJ,YAC9CqJ,SAASE,WAAuBA,EAAcvJ,YAEnD,MAAM,WACLtq1B,EAAU,oBACVox1B,EAAmB,kBACnBgC,EAAiB,cACjBC,EAAa,gBACbpB,EAAe,UACf+B,EAAS,eACTR,EAAc,MACdpo3B,GACGwo3B,EAEEK,GACJN,SAASE,IAAkBD,EAAqBM,gBAElD,IAAIZ,EAAyB,GACkB,IAAAa,EAA3C9qM,IAAcwmM,8BACjByD,EACCM,SAAoC,QAAhBO,EAApBP,EAAsBQ,sBAAc,IAAAD,GAAQ,QAARA,EAApCA,EAAsC9u0B,cAAM,IAAA8u0B,OAAA,EAA5CA,EAA8CL,eAGhD,MAAMO,GACLr12B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,oBAAoB,EACpB,aAAcsxoB,KAGfp3oB,EAAAA,kCAAAA,eAAA,cAAY5Y,KAAK,QAInB,GAAIg+1B,EAAa,CAuChB,OArCCpl1B,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,4BAA4B,EAC5B,aAAcs/0B,IAGd9uyB,GAAay+zB,GACb/02B,EAAAA,kCAAAA,eAACs12B,YAAW,CACXv3M,YAAaivM,gCACb5nB,YAAaA,KAGdpl1B,EAAAA,kCAAAA,eAACu12B,cAAa,CACbv01B,WAAYA,EACZox1B,oBAAqBA,EACrBvr3B,KAAMiu3B,EACNr2K,YAAaA,EACb21K,kBAAmBA,EACnBC,cAAeA,EACfY,mBAAoBA,EACpB79N,SAAUA,EACVp8oB,SAAUA,EACVoq1B,YAAaA,EACb/6K,UAAWA,EACXiqM,uBAAwBA,EACxBC,4BAA6BA,EAC7BV,iBAAkBA,EAClB2B,sBAAuBZ,EACvBE,cAAeA,EACfD,cAAeA,EACftqB,eAAgBA,EAChBvuL,YAAaA,EACbyuL,sBAAuBA,IAM5B,CAEA,MAAMgrB,GACLz12B,EAAAA,kCAAAA,eAACu12B,cAAa,CACbv01B,WAAYA,EACZox1B,oBAAqBA,EACrBvr3B,KAAMiu3B,EACNr2K,YAAaA,EACb21K,kBAAmBA,EACnBC,cAAeA,EACfY,mBAAoBA,EACpB79N,SAAUA,EACVp8oB,SAAUA,EACVoq1B,YAAaA,EACb/6K,UAAWA,EACXiqM,uBAAwBA,EACxBC,4BAA6BA,EAC7BV,iBAAkBA,EAClB2B,sBAAuBZ,EACvBE,cAAeA,EACfD,cAAeA,EACftqB,eAAgBA,EAChBvuL,YAAaA,EACbyuL,sBAAuBA,EACvB+pB,eAAgBA,EAChBpo3B,MAAOA,IAQHsp3B,GACL112B,EAAAA,kCAAAA,eAAC41B,kCAAAA,SAAQ,KACP0gB,EACA++zB,GAEAr12B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,6BACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,oCACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,oBACZyI,EAAAA,OAAAA,SAAQmr1B,EAAcxi2B,OAgBpB,MAfHtS,EAAAA,kCAAAA,eAACg8oB,wCAAM,CACNh7nB,WAAYA,EACZox1B,oBAAqBA,EACrBC,oBAAqBA,EACrBC,mBAAoBA,EACpBl7N,SAAUA,EACV27N,kBAAmBA,EACnBC,YAAaA,EACb6B,cAAeA,EACf92M,YAAai3M,EACb/B,gBAAiBA,EACjB7yN,YAAaA,EACbG,oBAAqBA,EACrBgqB,wBAAyBA,KAG3BvqqB,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,wBACCsxoB,KAAaztnB,EAAAA,OAAAA,SAAQyo1B,GACtB,gBAAiBh7N,IAAYztnB,EAAAA,OAAAA,SAAQyo1B,KAGrCqD,OASFE,GACL312B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,4BACbo1B,EACA++zB,GAEAr12B,EAAAA,kCAAAA,eAAA,YACG2pB,EAAAA,OAAAA,SAAQmr1B,EAAcxi2B,OAepB,MAdHtS,EAAAA,kCAAAA,eAACg8oB,wCAAM,CACNh7nB,WAAYA,EACZox1B,oBAAqBA,EACrBC,oBAAqBA,EACrBC,mBAAoBA,EACpBl7N,SAAUA,EACV2mB,YAAai3M,EACb/B,gBAAiBA,EACjBt2N,eAAgBA,EAChByD,YAAaA,EACbG,oBAAqBA,EACrBgqB,wBAAyBA,EACzBF,UAAWA,KAGbrqqB,EAAAA,kCAAAA,eAACu12B,cAAa,CACbv01B,WAAYA,EACZox1B,oBAAqBA,EACrBvr3B,KAAMiu3B,EACNr2K,YAAaA,EACb21K,kBAAmBA,EACnBC,cAAeA,EACfY,mBAAoBA,EACpB79N,SAAUA,EACVp8oB,SAAUA,EACVoq1B,YAAaA,EACbzoM,eAAgBA,EAChB0tB,UAAWA,EACXiqM,uBAAwBA,EACxBC,4BAA6BA,EAC7BV,iBAAkBA,EAClB2B,sBAAuBZ,EACvBE,cAAeA,EACfD,cAAeA,EACftqB,eAAgBA,EAChBvuL,YAAaA,EACbyuL,sBAAuBA,EACvB+pB,eAAgBA,EAChBpo3B,MAAOA,MAOZ,OAAOgrpB,EAAWs+N,EAAsBC,GAGzC,uE,iKCjPA,MAAM1M,oDAAoCzV,IACrC7p0B,EAAAA,OAAAA,SAAQ6p0B,GAA4B,CAAC,EAGxC6S,kBAAkBzC,YAAYpQ,GAAqB,CAClDmS,UAAWnB,QACN,CAAC,EAIT,sECfMhkN,kCAAgB,CACrB5T,UAAAA,CAAWnB,EAAalqX,EAAesrX,EAAY9kpB,GAClDokpB,WAAaS,WAAWnB,EAAalqX,EAAesrX,EAAY9kpB,EACjE,GAGD,kFCLM6t3B,gBAAkBh5mB,IACvB,MAAMi5mB,EAAc,GACdC,GAAens1B,EAAAA,OAAAA,SAAQizO,EAAMm5mB,qBAChC,GACAn5mB,EAAMm5mB,oBAAoB7m2B,MAAM,KAyBnC,QAxB4Bya,EAAAA,OAAAA,SAAQizO,EAAMo5mB,4BACvC,GACAp5mB,EAAMo5mB,2BAA2B9m2B,MAAM,MAEtBhX,QAAQ8/0B,GAC3B69B,EAAYnv3B,KAAK,CAChBuv3B,UAAW/G,wBAAwBE,wBACnC8G,aAAc,CACb,eAAgBt5mB,EAAM57O,WACtB,mBAAoBg3zB,MAKvB89B,EAAa592B,QAAQ8/0B,GACpB69B,EAAYnv3B,KAAK,CAChBuv3B,UAAW/G,wBAAwBC,uBACnC+G,aAAc,CACb,eAAgBt5mB,EAAM57O,WACtB,mBAAoBg3zB,MAKhB69B,GAGKM,wBAA0Bv5mB,IACb,CACxBw5mB,YAAa,CACZH,UAAWpH,iBAAiBC,aAC5BoH,aAAc,CACb,eAAgBt5mB,EAAM57O,WACtB,gBAAiB47O,EAAMy5mB,iBACvB,iBAAkBz5mB,EAAM05mB,cACxB,2BAA4Btz3B,KAAKC,UAAU25Q,EAAM25mB,0BAGnDV,YAAaD,gBAAgBh5mB,KAMlB45mB,8BAAgC55mB,IACnB,CACxBw5mB,YAAa,CACZH,UAAWpH,iBAAiBE,oBAC5BmH,aAAc,CACb,eAAgBt5mB,EAAM57O,WACtB,iBAAkB3e,SAASu6P,EAAM65mB,oBAAqB,IACtD,SAAU75mB,EAAM85mB,SAChB,iBAAkB95mB,EAAM5sO,MACxB,mBAAoB4sO,EAAM0/Z,cAG5Bu5M,YAAaD,gBAAgBh5mB,KAMlB+5mB,8BAAgC/5mB,IACnB,CACxBw5mB,YAAa,CACZH,UAAWpH,iBAAiBG,oBAC5BkH,aAAc,CACb,eAAgBt5mB,EAAM57O,WACtB,cAAe47O,EAAMg6mB,SACrB,uBAAwBh6mB,EAAM85mB,SAC9B,sBAAuB95mB,EAAMi6mB,iBAC7B,uBAAwBj6mB,EAAMzhP,WAC9B,0BAA2ByhP,EAAMo5a,WAGnC6/L,YAAaD,gBAAgBh5mB,KAMlBk6mB,6BAA+Bl6mB,IAClB,CACxBw5mB,YAAa,CACZH,UAAWpH,iBAAiBI,6BAC5BiH,aAAc,CACb,eAAgBt5mB,EAAM57O,WACtB,cAAe47O,EAAMg6mB,SACrB,uBAAwBh6mB,EAAM85mB,SAC9B,sBAAuB95mB,EAAMi6mB,iBAC7B,uBAAwBj6mB,EAAMzhP,WAC9B,0BAA2ByhP,EAAMo5a,WAGnC6/L,YAAa,KCvBTkB,oBAAsBA,CAC3Bt4K,EACAu4K,EACAC,EACAC,IAEIz4K,EAAcu4K,EAAoBC,EAC/BC,EAGKC,4BAA8B/p3B,IAKrC,IALsC,OAC3CwL,EAAM,SACNoC,EAAQ,WACR1b,EAAU,YACVqY,GACAvK,EACA,MACCwn3B,sBAAsB,kBAAER,EAAiB,cAAEC,GAAe,YAC1D51K,GACGn/sB,GAGHuZ,SAAS,MAAE3W,IACR0W,EAGJjB,EAAY,CAAEy/2B,YAAuB,IAAVl13B,EAAa6y3B,mBAAmB,IAE3D/52B,EAASgx2B,yCAA0C,CAClDqL,gBAAiBN,oBAChBt4K,EACAv8sB,EACAky3B,EACAC,MAKGiD,qBAAuB16mB,IAC5B,MAAM26mB,GACL7x0B,EAAAA,OAAAA,SAAQk3N,EAAMtkB,MAAO21nB,wBACrBvo0B,EAAAA,OAAAA,SAAQk3N,EAAMtkB,MAAO61nB,2BAEtB,IAAIn+0B,EAAQun1B,EACT36mB,EAAMn9Q,KACNm9Q,EAAM61kB,mBACN71kB,EAAM7pQ,aACN6pQ,EAAMn9Q,MACNm9Q,EAAM4/iB,WACN,GAeH,OAbIxsxB,GAASug1B,gBAAgBjt3B,KAAK0sC,KACjCA,EAAQA,EAAM5U,QAAQm11B,gBAAiB,KAIpC3zmB,EAAMoplB,yBAA2BuxB,IACpCvn1B,EAAQ4sO,EAAMoplB,uBACZ5q0B,QAAQm11B,gBAAiB,IACzBn11B,QAAQ,SAAU,KAClBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,MAGb4U,GAGFwn1B,4BAA8B56mB,GACT,MAA1BA,EAAM,iBAA2BA,EAAM,iBAAmBA,EAAMtkB,MAE3Dm/nB,sBAAwB76mB,GAC7BA,EAAM,mCACNA,EAAM,iBACNA,EAAM,iBAED86mB,sBAAwBA,CAAC96mB,EAAOt9Q,KACrC,MAAM,cAAEu13B,GAAkBv13B,EAK1B,OAJgBu13B,EAAcvi2B,MAAMmzB,UAAUky0B,IAC7C,IAAI5jO,EAAuBnspB,MAAfg1Q,EAAMm3Y,MAAqBn3Y,EAAMm3Y,MAAQn3Y,EAAMg3a,OAC3D,OAAO+jM,EAAarkC,WAAW12kB,MAAMg3a,QAAU7/B,IAE/B,GAGZ6jO,kBAAoBA,CAACh7mB,EAAOt9Q,KACjC,KAAKqqC,EAAAA,OAAAA,SAAQizO,EAAM4plB,gBAAiB,OAAO1j1B,OAAO85P,EAAM4plB,gBAExD,MAAM,qBAAEouB,EAAoB,cAAEE,GAAkBx13B,GAC1C,eAAEk13B,EAAc,YAAE/1K,GAAgBm2K,EAKxC,OADgCJ,EAAiB/1K,EAHvBq2K,EAAcxi2B,MAAMmzB,UAAUoy0B,GAChDA,EAAavkC,WAAW12kB,MAAMg3a,QAAUh3a,EAAMg3a,QAGD,GAIhDkkM,sBAAwBA,CAACl7mB,EAAOt9Q,KACrC,MAAM,cAAEw13B,GAAkBx13B,EAC1B,OAAOw13B,EAAcxi2B,MAAMmzB,UAAUoy0B,GAC7BA,EAAavkC,WAAW12kB,MAAMg3a,QAAUh3a,EAAMg3a,SAKjDmkM,gBAAkBz43B,IACvB,MAAM,cAAEw13B,GAAkBx13B,EAC1B,IAAIgzB,EAAQ,GACZ,KAAKqX,EAAAA,OAAAA,SAAQmr1B,aAAa,EAAbA,EAAexi2B,OAI3B,OAHAA,EAAQwi2B,EAAcxi2B,MAAMlkB,IAAItL,GACxBA,EAAOk13B,YAER1l2B,GAIH2l2B,2BAA6BA,CAACr/2B,EAAQtZ,KAC3C,MAAM,qBAAEs13B,EAAoB,sBAAEj0N,GAA0BrhqB,GAEvDuZ,SAAS,MAAE+jQ,EAAK,KAAEh6Q,IACfgW,EAEEoxwB,EAAepnxB,GAAcg6Q,EAAMh6Q,MAEnC,WACLo+B,EAAU,oBACVox1B,EAAmB,oBACnB2D,EAAmB,2BACnBC,GACGpB,EAEEsD,GAA0Bvu1B,EAAAA,OAAAA,SAC/Bir1B,EAAqBuD,wBAGhBA,EAA0BD,EAE7B,CAAC,EADDtD,EAAqBuD,uBAIlBC,EAAcx7mB,EAAMm3Y,OAAS,GAC7Bv6nB,EAASojP,EAAMpjP,QAAU,GACzBonoB,GAAaj3nB,EAAAA,OAAAA,SAAQyo1B,GAExBpx1B,EADAox1B,EAGH,IAAI91M,EAAc,GACdu6M,EAAmB,GACnBH,EAAW,GACXE,EAAW,GASf,OAPIh6mB,IACH0/Z,EAAck7M,4BAA4B56mB,GAC1Ci6mB,EAAmBY,sBAAsB76mB,GACzC85mB,EAAW95mB,EAAM85mB,UAAYp6M,EAAYlpqB,OAAO,IAAKwpQ,EAAMm3Y,OAE3D6iO,EAAWh6mB,EAAMA,OAAS,IAEpB,CACNg4mB,uBACAj0N,wBACA/jZ,QACAh6Q,KAAMonxB,EACNhpvB,aACA4/nB,YACA7Q,oBAAqBmoO,EAClB,GACAC,EAAuBpoO,oBAC1BsoO,iBAAkBH,EACf,GACAC,EAAuBE,iBAC1BC,oBAAqBJ,EAClB,GACAC,EAAuBG,oBAC1BvC,sBACAC,6BACAuC,4BArCkC,EAsClCH,cACA5+1B,SACA8ipB,cACAu6M,mBACAH,WACAE,WACA4B,OAAQN,EAA0B,GAAKC,EAAuBK,OAC9DC,UAAWP,EAA0B,GAAKC,EAAuBM,UACjEP,0BACAC,2BAIIO,iBAAmBA,CAAC5D,EAAeD,KACxC,IAAI8D,EAAqB,GACrBC,EAAqB,GACzB,MAAMC,EAAgBA,CAAC18zB,EAAS4pyB,IAC/B5pyB,EAAQ/tD,IAAIuK,IAAA,IAAG260B,YAAY,MAAE12kB,IAASjkQ,EAAA,OAAApL,kBAAA,CACrCur3B,SAAUl8mB,EAAMm3Y,MAChBmoB,UAAWt/Z,EAAM,kBAAoBA,EAAMtkB,MAC3CytmB,cACIA,IAAe2oB,aAAaE,eAAiB,CAChDgI,SAAUh6mB,EAAMA,UAenB,OAZKjzO,EAAAA,OAAAA,SAAQkr1B,KACZ+D,EAAqBC,EACpBhE,EACAnG,aAAaE,iBAGVjl1B,EAAAA,OAAAA,SAAQmr1B,KACZ6D,EAAqBE,EACpB/D,EACApG,aAAaC,iBAGR,IAAIiK,KAAuBD,IAG7BI,sBAAwBjE,IAC7B,MAAM34zB,EAAU,CAAC,EAUjB,OATKxyB,EAAAA,OAAAA,SAAQmr1B,IACZA,EAAc582B,QAAQ0a,IACrB,MACC0g0B,YAAY,MAAE12kB,IACXhqP,GACE,MAAE0lO,GAAUskB,EAClBzgN,EAAQm8L,IAAUn8L,EAAQm8L,IAAU,GAAK,IAGpCn8L,GAGF68zB,2BAA6BlE,IAClC,IAAImE,EAAmB,GACvB,KAAKtv1B,EAAAA,OAAAA,SAAQmr1B,GAAgB,CAC5B,MAAMj6tB,EAAUk+tB,sBAAsBjE,GACtCmE,EAAmBt43B,OAAO4F,KAAKs0J,GAASzsJ,IAAIjK,IAAO,CAClD+vpB,SAAU/vpB,EACV+03B,gBAAiBr+tB,EAAQ12J,KAE3B,CACA,OAAO803B,GAGFE,oBAAsBA,CAAC78M,EAAa05M,KACzC,MAAMoD,GAAWzv1B,EAAAA,OAAAA,SAAQqs1B,GAEtB,GADAA,EAA2B9m2B,MAAM,KAGpC,IAAImq2B,EAA0B,GAS9B,OARAD,EAAQlh3B,QAAQ8/0B,IACX17K,IAAgB2xM,sBAAwBj2B,EAAOxn1B,SAAS,WAC3D6o3B,EAA0BhL,eAChB/xM,IAAgB4xM,mBAAqBl2B,EAAOxn1B,SAAS,YAC/D6o3B,EAA0B/K,eAIrB+K,GAGFC,cAAgBA,CAACn9zB,EAASl7C,EAAQre,KACvC,IAAI223B,EAAY,EAYhB,OAXK5v1B,EAAAA,OAAAA,SAAQwyB,KACZo9zB,EAAYp9zB,EACV/tD,IAAI6K,IAAA,IAAGq60B,YAAY,MAAE12kB,IAAS3jQ,EAAA,MAAM,CACpCijqB,UAAWt/Z,EAAM,iBACjBg6mB,SAAUh6mB,EAAMA,SAEhB9+P,OACAhb,GAAUA,EAAOo5qB,YAAcj7pB,GAAUne,EAAO8z3B,SAASpm3B,SAAS5N,IACjE5B,QAGGu43B,GAGFC,wBAA0B3E,IAC/B,IAAI5p1B,EAAM,GAUV,OARA4p1B,EAAcvi2B,MAAMpa,QAAQ0a,IAC3B,MACC0g0B,YAAY,MAAE12kB,IACXhqP,GACA8yB,EAAAA,OAAAA,UAAQx+C,EAAAA,OAAAA,KAAI01Q,EAAO,sBAAuB,IAAK,cAClD3xO,EAAM2xO,EAAM,kBAGP3xO,GAGFwu1B,wBAA0B,SAC/B7g3B,EACAoC,EACA4hQ,EACAt9Q,EACAi53B,GAGI,IAFJpoC,EAAUvr1B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,IAAAA,UAAA,GACV803B,EAAY903B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEhB,MAAM+03B,EAAgB1B,2BAA2Br/2B,EAAQtZ,IACnD,sBACLqhqB,EAAqB,UACrBC,EAAS,oBACT7Q,EAAmB,iBACnBsoO,EAAgB,oBAChBC,EAAmB,YACnBF,EAAW,UACXwB,EAAS,OACTpg2B,EAAM,iBACNq91B,EAAgB,YAChBv6M,EAAW,SACXo6M,EAAQ,SACRE,EAAQ,OACR4B,EAAM,UACNC,EAAS,wBACTP,GACGyB,GAGH/E,sBAAsB,oBAAEmB,EAAmB,2BAAEC,IAC1C123B,EAEEqrF,EAAgB/xE,EAAOC,QAAQD,OAC/Bih3B,EACLlvyB,GAAiBA,EAAcgvlB,WAC5B,CACAA,WAAYhvlB,EAAcgvlB,WAC1Bqc,SAAUrrmB,EAAc2lwB,aACxBwpC,YAAanvyB,EAAc36C,OAE3B,CAAC,EAECqp1B,EAA0BF,oBAC/B78M,EACA05M,GAGK+D,EAAwBnh3B,EAAOC,QAAQkh3B,sBAC1Cnh3B,EAAOC,QAAQkh3B,sBACfrC,sBAAsB96mB,EAAOt9Q,GAC1B063B,EAAuBp9mB,EAAMq9mB,qBACnC,IAAIC,EAAc3s3B,kBAAA,CACjBozpB,wBACAC,YACAw3N,cACAwB,YACApg2B,SACAq91B,mBACAv6M,cACAo6M,WACAE,WACAyC,0BACAU,wBACAC,wBACGH,EACAH,GAGCxB,IACJgC,EAAc3s3B,kBAAA,GACV2s3B,EAAc,CACjBnqO,sBACAsoO,mBACAC,sBACAE,SACAC,eAIF,MAAM0B,EAAoB5s3B,kBAAA,GACtB2s3B,EAAc,CACjBl51B,WAAY4/nB,IAGTm1N,IACHoE,EAAqBpE,oBAAsBA,GAGxCoE,EAAqBL,cACxBK,EAAqBh/1B,WAAag/1B,EAAqBL,aAGxD,MAAMM,EAAmBjqC,EACtB2mC,6BAA6BqD,GAC7BxD,8BAA8BwD,GAE3BE,EAAY9s3B,kBAAA,GACdqL,EAAOC,QAAO,CACjBuh3B,mBACA7B,+BAGD/3N,gDAAc5T,WAAW+gO,oBAAqBx/N,iDAAY+rO,EAAgB,CACzEll2B,MAAO,EACPsl2B,kCAAkC,EAClCn43B,SAAUA,IAAM6Y,EAASix2B,kCAAmCoO,GAC5DzuO,YAAY,GAEd,EAEM2uO,8BAAgC39mB,IACrC,MAAM,sBACL+jZ,EAAqB,UACrBC,EAAS,cACTi0N,EAAa,cACbC,EAAa,oBACbiB,EAAmB,iBACnBM,EAAgB,cAChBC,EAAa,wBACbkE,EAAuB,4BACvBC,EAA2B,6BAC3BC,EAA4B,uBAC5BvC,GACGv7mB,EAEJ,IAAIjzO,EAAAA,OAAAA,SAAQwu1B,GAAyB,CACpC,MAAMwC,IAAoBhx1B,EAAAA,OAAAA,SAAQmr1B,GAC5B8F,IAAoBjx1B,EAAAA,OAAAA,SAAQkr1B,GAE5Bh82B,EAAU,CACf8npB,wBACAC,YACAk0N,cAAe4D,iBACd5D,EAAgBA,EAAcxi2B,MAAQ,GACtCui2B,EAAgBA,EAAcvi2B,MAAQ,IAEvCuo2B,uBAAwB7B,2BACvBlE,EAAgBA,EAAcxi2B,MAAQ,IAEvCyj2B,oBAAqBA,GAAuB,GAC5CM,mBACAsE,mBACAC,mBACAtE,cAAeA,GAAiB,KAChCkE,0BACAC,8BACAC,gCAGDl6N,gDAAc5T,WAAW6gO,aAAct/N,iDAAYt1oB,EACpD,MACCs/2B,EAAuB2C,YACrB,eAAgB3C,GAElB33N,gDAAc5T,WAAW6gO,aAAct/N,iDAAYgqO,IAI/C4C,2BAA6BA,CAAC//2B,EAAU4hQ,KAC7C,MAAM,UACLgkZ,EAAS,oBACTm1N,EAAmB,2BACnBC,EAA0B,iBAC1BK,EAAgB,cAChBC,EAAa,wBACbkE,EAAuB,4BACvBC,EAA2B,6BAC3BC,GACG99mB,EAQEw9mB,EAAmBjE,wBAAwB,CAChDn11B,WAAY4/nB,EACZm1N,sBACAC,6BACAK,mBACAC,gBACAC,uBAZ8B,CAC9BhqM,GAAIiuM,EACJQ,OAAQP,EACRQ,QAASP,KAYV1/2B,EAASkx2B,4BAA6B,CAAEkO,sBAE5Bc,qCAAuC/h3B,IAG9C,IAH+C,WACpD7Z,EAAU,SACV0b,GACA7B,EACA,MACCy72B,sBAAsB,WACrB5z1B,EAAU,oBACVox1B,EAAmB,oBACnB2D,EAAmB,2BACnBC,EAA0B,iBAC1BK,EAAgB,cAChBC,EAAa,uBACb6B,GACA,sBACDx3N,EAAqB,cACrBk0N,EAAa,cACbC,GACGx13B,EAEEshqB,GAAaj3nB,EAAAA,OAAAA,SAAQyo1B,GAExBpx1B,EADAox1B,EAGGoI,EAA0B3F,EAC7ByE,cACAzE,EAAcvi2B,MACd871B,uBACAG,uBAEA,EACGkM,EAA8B5F,EACjCyE,cAAczE,EAAcvi2B,MAAO471B,kBAAmBM,oBACtD,EACGkM,EAA+B7F,EAClCyE,cACAzE,EAAcvi2B,MACd271B,qBACAQ,qBAEA,EAEH8L,8BAA8B,CAC7B35N,YACAD,wBACAm0N,gBACAD,gBACAkB,sBACAM,mBACAC,gBACAkE,0BACAC,8BACAC,+BACAvC,2BAGD4C,2BAA2B//2B,EAAU,CACpC4lpB,YACAm1N,sBACAC,6BACAK,mBACAC,gBACAkE,0BACAC,8BACAC,kCAIWS,wBAA0B3h3B,IAAsC,IAArC,OAAEZ,EAAM,SAAEoC,EAAQ,WAAE1b,GAAYka,EACvE,MAAMmg3B,EAAgB1B,2BAA2Br/2B,EAAQtZ,IACnD,KACLsD,EAAI,MACJg6Q,EAAK,sBACL+jZ,EAAqB,UACrBC,EAAS,YACTw3N,EAAW,UACXwB,EAAY,GAAE,OACdpg2B,EAAM,oBACNu81B,EAAmB,2BACnBC,EAA0B,2BAC1BuC,EAA0B,oBAC1BxoO,EAAmB,iBACnBsoO,EAAgB,oBAChBC,EAAmB,SACnB5B,EAAQ,YACRp6M,EAAW,OACXk8M,EAAM,UACNC,EAAS,wBACTP,GACGyB,EAEJ,IAAK/g3B,EAAOC,QAAQ0/2B,2BACnB,IAAI7y0B,EAAAA,OAAAA,SAAQk3N,EAAMtkB,MAAOy1nB,6BACxB0L,wBACC7g3B,EACAoC,EACA4hQ,EACAt9Q,EACAi53B,QAEK,IACN7y0B,EAAAA,OAAAA,SAAQ9iD,EAAMor3B,4BACdto0B,EAAAA,OAAAA,SAAQ9iD,EAAMq/1B,6BACdv8yB,EAAAA,OAAAA,SAAQ9iD,EAAMs/1B,uBACb,KAAAk5B,EACD,MAAMC,EAAYz+mB,EAAM3xO,KAAO,GACzB+E,EAAQsn1B,qBAAqB16mB,GAE7B65mB,EAAsByB,EACzBp12B,OAAO85P,EAAM4plB,gBAAkB,GAC/BoxB,kBAAkBh7mB,EAAOt9Q,IAEtB,QAAEuZ,GAAYD,EACpB,IACCA,QAAQ,KAAEnZ,EAAI,eAAEg32B,EAAc,cAAE9rxB,EAAa,aAAE2lwB,IAC5Cz30B,EAEA+zpB,EAAc,GACdC,EAAc,GAGdyP,IAAgB/Q,2BACnBsB,EAAcjwZ,EAAMwplB,cACpBx5L,EAAchwZ,EAAMuplB,aACpBx7wB,EAAap9E,kBAAA,GACTo9E,EAAa,CAChBiilB,cACAC,iBAGF,MAAM3kJ,EAAa,CAClB/sf,WAAY17B,EACZ673B,iBAAkB7kB,EAClB8kB,mBAAoBjrC,EACpB3lwB,gBACAv9D,KAAMvU,SAAe,QAARui3B,EAAPvi3B,EAASD,cAAM,IAAAwi3B,OAAA,EAAfA,EAAiBhu2B,MAIlBgt2B,EAAmB5D,8BAA8B,CACtDx11B,WAAY4/nB,EACZD,wBACA+1N,WACA1m1B,QACAssoB,cACAm6M,sBACAV,sBACAC,+BAGKwF,EAAyBju3B,kBAAA,GAC3BqL,EAAOC,QAAO,CACjBuh3B,mBACA7B,6BACArxB,cAAcxhzB,EAAAA,OAAAA,SAAQ9iD,EAAMq/1B,2BAC5BztyB,MAAOxkB,IAGRwwnB,gDAAc5T,WACb8gO,oBACAv/N,iDACA,CACCwS,wBACAC,YACA7Q,sBACAsoO,mBACAC,sBACAF,cACAwB,YACApg2B,SACAq91B,iBAAkB7m1B,EAClBssoB,cACA++M,YACAI,YAAY/10B,EAAAA,OAAAA,SAAQ9iD,EAAMs/1B,uBACvBsrB,mBACAD,aACHmO,YAAajF,EACbC,WACAxuW,aACAswW,SACAC,aAED,CACCzj2B,MAAO,EACPsl2B,kCAAkC,EAClCn43B,SAAUA,IACT6Y,EACCix2B,kCACAuP,GAEF5vO,YAAY,GAGf,MACC5woB,EAASix2B,kCAAmCrz2B,EAAOC,UAKzC8i3B,sBAAwBli3B,IAA0B,IAAzB,OAAEb,EAAM,SAAEoC,GAAUvB,EACzD,MAAM,QAAEZ,GAAYD,EAEhBC,EAAQD,SAAW+y2B,cACtB3w2B,EAASmnpB,wBAAiB,CAAEnhoB,WAAYnoB,EAAQ2hT,OACtC3hT,EAAQD,SAAWmz2B,wBAC7B/w2B,EAAS+w2B,wBAAyBlz2B,GACxBA,EAAQD,SAAWkz2B,sBAC7B9w2B,EAASmx2B,qCAAsC,CAC9Cnr1B,WAAYnoB,EAAQ2hT,OAGrB96T,QAAQ0E,KAAK,iDAIFw33B,wBAA0Bxx2B,IAA0B,IAAzB,OAAExR,EAAM,SAAEoC,GAAUoP,EAC3D,MAAM,QAAEvR,GAAYD,EACpBoC,EAAS2r1B,gCAAiC9t1B,IAG9B8iwB,8BAAwB5muB,IAK/B,IALgC,OACrCn8B,EAAM,SACNoC,EAAQ,WACR1b,EAAU,YACVqY,GACAo9B,EACA,MACCl8B,SAAS,KAAEpZ,EAAI,MAAEyC,EAAK,cAAEg3C,IACrBtgC,EAEJ,OAAQnZ,GACP,IAAK,uBAAwB,KAAAo83B,EAAAC,EAAAC,EAC5B,MACCnH,sBAAsB,WACrB5z1B,EAAU,cACVqz1B,EAAa,kBACbD,EAAiB,YACjB31K,EAAW,uBACX05K,IAEE743B,EAEJ,IAAIqqC,EAAAA,OAAAA,SAAQ3I,GAAa,SAOvB0kB,EAAAA,OAAAA,SAAQxjD,EAAM8+B,WAAYkY,EAAclY,cACxC0kB,EAAAA,OAAAA,SAAQxjD,EAAM8+B,WAAYkY,EAAclY,eACvC0kB,EAAAA,OAAAA,SACAxjD,EAAMkw3B,oBACNl50B,EAAck50B,qBAGhB8I,qCAAqC,CAAE573B,aAAY0b,cAElD0qC,EAAAA,OAAAA,SACAyy0B,aAAsB,EAAtBA,EAAwBpoO,oBACY,QADO8rO,EAC3C3i1B,EAAci/0B,8BAAsB,IAAA0D,OAAA,EAApCA,EAAsC9rO,uBAEtCrqmB,EAAAA,OAAAA,SACAyy0B,aAAsB,EAAtBA,EAAwBE,iBACY,QADIyD,EACxC5i1B,EAAci/0B,8BAAsB,IAAA2D,OAAA,EAApCA,EAAsCzD,mBAKtC3y0B,EAAAA,OAAAA,SACAyy0B,aAAsB,EAAtBA,EAAwBG,oBACY,QADOyD,EAC3C7i1B,EAAci/0B,8BAAsB,IAAA4D,OAAA,EAApCA,EAAsCzD,sBAKtC5y0B,EAAAA,OAAAA,SAAQ2u0B,EAAen70B,EAAcm70B,iBACrC1q1B,EAAAA,OAAAA,SAAQyq1B,KACR1u0B,EAAAA,OAAAA,SAAQ+4pB,EAAavlqB,EAAculqB,cAEpCu9K,qBAAqB,CAAE183B,eANvB283B,eAAe,CAAE383B,eAPjB483B,gBAAgB,CAAE583B,eAenB,KACD,CACA,IAAK,YACJqY,EAAY,CAAEo92B,kBAAmB7y3B,IACjC,MAED,IAAK,gBAAiB,CACrB,MAAM,4BAAEqy3B,GAAgCj13B,EACpCi13B,GACHv52B,EAASwx2B,gCAEX,IAIW2P,sBAAwBnn1B,IAA4B,IAA3B,OAAEp8B,EAAM,WAAEtZ,GAAY01C,EAC3D,MAAM,YAAEg+0B,GAAgB1z3B,GAEvBuZ,SAAS,KAAEjW,IACRgW,EACAhW,IAASwt3B,uBACZ7r3B,OAAOoG,KAAKqo3B,EAAa,WAIdtkC,uBAAiBr5yB,IAAsC,IAArC,OAAEz8B,EAAM,SAAEoC,EAAQ,WAAE1b,GAAY+1C,EAC9D,MACCx8B,SACCD,QAAQ,MAAE1W,EAAK,OAAEq2X,GAAQ,MACzB37G,IAEEhkQ,EAEEg+2B,EAAWh6mB,EAAMA,OAAS,SAI1Bw/mB,EAAsB,CAC3BziN,WAAY41M,qBACZv5L,SAAU,GAAG4gM,KAHb103B,EAAQ,EAAImt3B,uBAAyBC,kCAIrCwK,YAAavhgB,EACbyhgB,qBAAsBp9mB,EAAMq9mB,sBAG7BR,wBACC7g3B,EACAoC,EACA4hQ,EACAt9Q,GACA,GACA,EACA883B,IAIWC,oBAAsB3i1B,IAAsC,IAArC,OAAE9gC,EAAM,SAAEoC,EAAQ,WAAE1b,GAAYo6C,EACnE,MACC7gC,SAAS,cAAEkg1B,EAAa,MAAEn8kB,IACvBhkQ,EAEEwj3B,EAAsB,CAC3BziN,WAAY61M,gBACZx5L,SAAU,qBACV8jM,YAAa/gC,EAAct51B,MAG5Bg63B,wBACC7g3B,EACAoC,EACA4hQ,EACAt9Q,GACA,GACA,EACA883B,IAIWE,sBAAwB1i1B,IAAsC,IAArC,OAAEhhC,EAAM,SAAEoC,EAAQ,WAAE1b,GAAYs6C,EACrE,MACC/gC,SAAS,MAAE+jQ,EAAK,YAAEgukB,IACfhy0B,EAEEwj3B,EAAsB,CAC3BziN,WAAY81M,yBACZz5L,SAAU,8BACV8jM,YAAalvC,EAAYnr1B,MAG1Bg63B,wBACC7g3B,EACAoC,EACA4hQ,EACAt9Q,GACA,GACA,EACA883B,IAIIF,gBAAkBri1B,IAAoB,IAAnB,WAAEv6C,GAAYu6C,EACtC,MACC+60B,sBAAsB,uBAAEuD,IACrB743B,GAEFqqC,EAAAA,OAAAA,SAAQwu1B,KACRA,EAAuB2C,YACrB,eAAgB3C,GAEnB33N,gDAAc5T,WACbghO,mBACAz/N,iDACAgqO,EACA,CAAEmC,kCAAkC,KAKjC0B,qBAAuBli1B,IAAoB,IAAnB,WAAEx6C,GAAYw6C,EAC3C,MACC860B,sBAAsB,uBAAEuD,IACrB743B,GAEFqqC,EAAAA,OAAAA,SAAQwu1B,KACRA,EAAuB2C,YACrB,eAAgB3C,GAEnB33N,gDAAc5T,WACbihO,wBACA1/N,iDACAgqO,EACA,CAAEmC,kCAAkC,KAKjC2B,eAAiBli1B,IAAoB,IAAnB,WAAEz6C,GAAYy6C,EACrC,MACC660B,sBAAsB,uBAAEuD,IACrB743B,GAEFqqC,EAAAA,OAAAA,SAAQwu1B,KACRA,EAAuB2C,YACrB,eAAgB3C,GAEnB33N,gDAAc5T,WACbkhO,kBACA3/N,iDACAgqO,EACA,CAAEmC,kCAAkC,KAK1BiC,8BAAgCvi1B,IAIvC,IAJwC,OAC7CphC,EAAM,SACNoC,EAAQ,WACR1b,GACA06C,EACA,MAAM2/0B,EAAgB1B,2BAA2Br/2B,EAAQtZ,IACnD,MACLs9Q,EAAK,sBACL+jZ,EAAqB,UACrBC,EAAS,YACTw3N,EAAW,UACXwB,EAAY,GAAE,OACdpg2B,EAAM,oBACNu81B,EAAmB,2BACnBC,EAA0B,2BAC1BuC,EAA0B,oBAC1BxoO,EAAmB,iBACnBsoO,EAAgB,oBAChBC,EAAmB,SACnB5B,EAAQ,YACRp6M,EAAW,OACXk8M,EAAM,UACNC,EAAS,wBACTP,GACGyB,EAEE0B,EAAYz+mB,EAAM3xO,KAAO,GACzB+E,EAAQsn1B,qBAAqB16mB,GAE7B65mB,EAAsByB,EACzBp12B,OAAO85P,EAAM4plB,gBAAkB,GAC/BoxB,kBAAkBh7mB,EAAOt9Q,GAE5B,IACCuZ,SAAS,cAAE8xE,IACR/xE,EAEJ,MAAMsvgB,EAAa,CAClBv9b,cAAap9E,kBAAA,GACTo9E,EAAa,CAChBiilB,YAAahwZ,EAAMuplB,aACnBt5L,YAAajwZ,EAAMwplB,iBAKfg0B,EAAmB5D,8BAA8B,CACtDx11B,WAAY4/nB,EACZD,wBACA+1N,WACA1m1B,QACAssoB,cACAm6M,sBACAV,sBACAC,+BAGKwF,EAAyBju3B,kBAAA,GAC3BqL,EAAOC,QAAO,CACjBuh3B,mBACA7B,6BACArxB,cAAc,IAGf1mM,gDAAc5T,WACb8gO,oBACAv/N,iDACA,CACCwS,wBACAC,YACA7Q,sBACAsoO,mBACAC,sBACAF,cACAwB,YACApg2B,SACAq91B,iBAAkB7m1B,EAClBssoB,cACA++M,YACAI,WAAYlO,aACZmO,YAAajF,EACbC,WACAxuW,aACAswW,SACAC,aAED,CACCzj2B,MAAO,EACPsl2B,kCAAkC,EAClCn43B,SAAUA,IACT6Y,EACCux2B,2CACAiP,GAEF5vO,YAAY,KAKF4wO,6BAA+B512B,IAC3C,MAAM,OAAEhO,EAAM,SAAEoC,EAAQ,WAAE1b,GAAesnB,GAGxC/N,SAAS,MAAE+jQ,IACRhkQ,EAIEwj3B,EAAsB,CAC3BziN,WAAY,kBACZqc,SAAU,GAJMp5a,EAAMA,OAAS,2BAK/Bo9mB,qBAAsBp9mB,EAAMq9mB,sBAG7BR,wBACC7g3B,EACAoC,EACA4hQ,EACAt9Q,GACA,GACA,EACA883B,IAIWK,+BAAiC712B,IAC7C,MAAM,OAAEhO,EAAM,SAAEoC,EAAQ,WAAE1b,GAAesnB,GAGxC/N,SAAS,MAAE+jQ,IACRhkQ,EAIEwj3B,EAAsB,CAC3BziN,WAAY,mBACZqc,SAAU,GAJMp5a,EAAMA,OAAS,4BAK/Bo9mB,qBAAsBp9mB,EAAMq9mB,sBAG7BR,wBACC7g3B,EACAoC,EACA4hQ,EACAt9Q,GACA,GACA,EACA883B,IAIWM,qCAAuC912B,IACnD,MAAM,OAAEhO,GAAWgO,GAElB/N,SAAS,oBAAE8j3B,IACR/j3B,EACA+j3B,IAAwBnM,uBAAuBC,SAClD/hC,uBAAe9n0B,GAEf+12B,IAAwBnM,uBAAuBrlC,mBAE/CgwC,wBAAwBv02B,GACd+12B,IAAwBnM,uBAAuBE,kBACzD4L,sBAAsB112B,GAEtB+12B,IAAwBnM,uBAAuBhlC,mBAE/C6wC,oBAAoBz12B,GACV+12B,IAAwBnM,uBAAuBpgM,gBACzDosM,6BAA6B512B,GACnB+12B,IAAwBnM,uBAAuBG,kBACzD8L,+BAA+B712B,IAI3Bg22B,2BAA6Bt93B,IAClC,MAAM,cAAEu13B,GAAkBv13B,EAO1B,MALsB,CACrBqrF,cAAe,CACd1/C,IAHUuu1B,wBAAwB3E,MASxBgI,4BAA8B5i1B,IAA8B,IAA7B,SAAEj/B,EAAQ,WAAE1b,GAAY26C,EACnE,MAAMrhC,EAASgk3B,2BAA2Bt93B,GAC1C0b,EAASix2B,kCAAmC,CAC3Crz2B,SACAsu1B,cAAc,KAIHngN,gEAA8B5smB,IAA8B,IAA7B,WAAE76C,EAAU,SAAE0b,GAAUm/B,EACnE,MAAM,4BAAEo60B,GAAgCj13B,EACpCi13B,GAA6Bv52B,EAASwx2B,iCAC1Cxx2B,EAAS0x2B,yBAGG3rN,sCAAgC3mnB,IAA8B,IAA7B,SAAEp/B,EAAQ,WAAE1b,GAAY86C,EACrE,MAAM,cAAE060B,GAAkBx13B,EAC1B,IAAI6xB,EAAS,IACRwY,EAAAA,OAAAA,SAAQmr1B,aAAa,EAAbA,EAAexi2B,SAC3BnB,EAAS2j2B,EAAcxi2B,MAAMlkB,IAAItL,IAChC,MAAMgx3B,EAAiBhx3B,EAAOww1B,WAAWwgC,eACtChx3B,EAAOww1B,WAAWwgC,eAAe5k2B,MAAM,KACvC,GACG85qB,EAAc,GAIpB,OAHA8qL,EAAe572B,QAAQyuQ,GACtBqib,EAAYtisB,KAAK5D,EAAOww1B,WAAW3skB,KAE7Bqib,IAER73qB,EAASA,EAAO6voB,OAChB7voB,EAASA,EAAOrT,OAAO,CAACte,EAAGmC,IAAMnC,GAAK2xB,EAAOvvB,QAAQpC,KAAOmC,GACxDwvB,EAAOnwB,OAAS,GACnBga,EAASyx2B,gCAAiC,CAAEt71B,aAKlC8voB,iCAA0BjjB,EAAAA,+BAAAA,qBAAoB2Q,4BAAmB,CAC7EuS,aAAc,CAAC,UACfC,gBAAiB3K,kCACjBh5mB,kBAAmBi5mB,oCACnBh5mB,gBAAiBi5mB,mCAGL0K,wCAAkC/mnB,IAGzC,IAFLzhC,QAAQ,QAAEC,GAAS,YACnBlB,GACA0iC,EACA,MAAM,OAAEomR,EAAS,IAAO5nT,EAExB,GAAI4nT,EAAOz/T,OAEV,YADAtB,QAAQC,MAAM,kDAAmD8gU,GAIlE,MAAM,YAAE4gW,GAAgBxopB,EAAQhS,KAAKy6pB,kBAKrC3ppB,EAAY,CAAEk82B,iBAJWxyN,EAAYzvpB,OACpC,CAACxD,EAAKke,KAAUle,EAAIke,EAAInoB,KAAOmoB,EAAIzgB,QAAUuC,GAC7C,CAAC,MAKUmzpB,qCAA+B5mnB,IAAgB,IAAf,OAAE/hC,GAAQ+hC,EACtDj7C,QAAQC,MAAM,6BAA8BiZ,EAAOC,UAGvCik3B,sBAAwBli1B,IAAsC,IAAAmi1B,EAAA,IAArC,OAAEnk3B,EAAM,WAAEtZ,EAAU,SAAE0b,GAAU4/B,EACrE,MACC/hC,SAAS,MAAE+jQ,IACRhkQ,GACE,qBAAEg82B,GAAyBt13B,EAC3Bs2qB,EAAYg/M,aAAoB,EAApBA,EAAsB5z1B,WAClC10B,EAAQwr3B,sBAAsBl7mB,SAAa,QAARmgnB,EAALngnB,EAAOhkQ,cAAM,IAAAmk3B,OAAA,EAAbA,EAAengnB,MAAOt9Q,GACpD093B,EAAcjF,gBAAgBz43B,GAEpC0b,EAAS0r1B,uBAAgB,CACxBu2B,UAAW3L,eACX17M,UAAWA,EACXsnN,UAAW,CACVC,gBAAiB,CAChBC,eAAgB,CACfxI,wBAEDyI,uBAAwB,CACvB/q2B,MAAO0q2B,GAERM,uBAAwB,CACvBhr2B,MAAO,MAIVuznB,aAAc,CACbjjpB,KAAM2u3B,eACNjl3B,MAAOA,MAKGix3B,uBAAyB1i1B,IAAuC,IAAtC,OAAEjiC,EAAM,YAAEjB,EAAW,SAAEqD,GAAU6/B,EACvE,MAAMhiC,EAAUD,EAAOC,QACnBA,SAAAA,EAASuy1B,YACZoyB,4BAA4B,CAC3B5k3B,SACAjB,cACAqD,aAESnC,SAAAA,EAAS8xqB,QACnB8yM,2BAA2B,CAC1B7k3B,SACAjB,cACAqD,cAKUwi3B,4BAA8B3gT,IAIrC,IAJsC,OAC3CjkkB,EAAM,YACNjB,EAAW,SACXqD,GACA6hkB,EACA,MACChkkB,SACC+Z,MAAM,GAAE1V,KAENtE,EACJjB,EAAY,CACX+l3B,kBAAmBxg3B,IAEpBlC,EAASiwqB,iCAA0B,CAClCI,aAAcnuqB,KAIHug3B,2BAA6BjgT,IAIpC,IAJqC,OAC1C5kkB,EAAM,YACNjB,EAAW,SACXqD,GACAwikB,EACA,MACC3kkB,SACC+Z,MAAM,GAAE1V,EAAE,MAAE8yB,GAAO,OACnB26oB,IAEE/xqB,EAEJ,IAAK+xqB,EAAQ,OAGb,MAAMS,EAAgBporB,KAAKC,UAC1Bia,IAAOs02B,0BAA4B,GAAK,CAACt02B,IAG1CvF,EAAY,CACX4yqB,wBAAyBv6oB,IAG1Bh1B,EAASgwqB,kCAA2B,CACnC5sB,eAAgBgtB,KAILuyM,2BAA4B3/O,EAAAA,+BAAAA,qBACxCkyO,uCACA,CACC1y0B,kBAAmBmv0B,yBACnBlv0B,gBAAiBmv0B,wBAINgR,4BAA8BjhT,IAA6B,IAA5B,OAAE/jkB,EAAM,YAAEjB,GAAaglkB,EAClE,MAAM91kB,EAAO+R,EAAOC,QACdsjD,GAAUj1D,EAAAA,OAAAA,KAAIL,EAAMsp3B,oBAAqB,IACzC0N,GAAgB323B,EAAAA,OAAAA,KAAIi1D,EAAS,kBAAmB,SACtDxkD,EAAY,CACX4y1B,eAAkC,SAAlBszB,IAA8C,IAAlBA,KAIjCC,yBAA2BnuS,IAAgB,IAAf,OAAE/2kB,GAAQ+2kB,EAClDjwlB,QAAQC,MACP,oCAAoCqw3B,qCACpCp32B,EAAOC,WChxCRu9B,uBAAsB,mDACtBt/B,2BAA0B,uDAC1BE,oBAAmBA,iDAChBG,aAAAA,aAsHJiO,EAAAA,aAAAA,qBAAoB,8BAA+B,CAClDC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,iCACJM,OAAM,2CACNnO,UAAW,CAAC,CAAEsiB,SAAUC,IAAAA,IACxBzhB,aAAc,CACb48qB,WAAY,KACZypK,UAAW,GACXl0zB,IAAK,GACLms1B,aAAa,EACbrC,mBAAmB,EACnBlB,iBAAkB,CAAC,EACnBtpM,wBAAyBpB,gCAAsBn5oB,MAC/Cu6zB,gBAAgB,GAEjBjr2B,WAAY,CAKXs13B,qBAAsB,CACrBrv2B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACX0hC,WAAY,CAAEzb,QAAS,GAAI3iB,KAAM,UACjCwv3B,oBAAqB,CAAE7s2B,QAAS,GAAI3iB,KAAM,UAC1Cwx3B,kBAAmB,CAAE7u2B,QAAS,GAAI3iB,KAAM,UACxCyx3B,cAAe,CAAE9u2B,QAAS,GAAI3iB,KAAM,UACpC67sB,YAAa,CAAEl5rB,QAAS,GAAI3iB,KAAM,UAClCmz3B,oBAAqB,CAAExw2B,QAAS,GAAI3iB,KAAM,UAC1Coz3B,2BAA4B,CAAEzw2B,QAAS,GAAI3iB,KAAM,UACjDyz3B,iBAAkB,CAAE9w2B,QAAS,GAAI3iB,KAAM,UACvCu13B,uBAAwB,CAAE5y2B,QAAS,CAAC,EAAG3iB,KAAM,aAQhD0zD,UAAW,CACV/wC,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORiy3B,cAAe,CACdtv2B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAORky3B,cAAe,CACdvv2B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WASRw9pB,YAAa,CACZ76oB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UASR29pB,oBAAqB,CACpBh7oB,QAAS,CAAC03oB,yDACVx3oB,OAAQ,CACP7iB,KAAM,UASR67sB,YAAa,CACZhzqB,QAAAA,CAAQr+B,GAA2C,IAAxC9N,YAAY,qBAAEs13B,IAAwBxn3B,EAChD,MAAM,kBACLgn3B,EAAiB,cACjBC,EAAa,YACb51K,GACGm2K,EACJ,OAAmB,MAAfn2K,EACIA,EAGiB,MAArB21K,GAA8C,MAAjBC,EACzBxH,aAGDC,UACR,GAMDnsN,sBAAuB,CACtBp7oB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRyo3B,uBAAwB,CACvB5/0B,QAAAA,CAAQ9yB,GAAmD,IAAhDrZ,YAAY,cAAEw13B,EAAa,cAAED,IAAiBl82B,EACxD,MAAMol3B,IACJp01B,EAAAA,OAAAA,SAAQmr1B,IAAkB9k3B,MAAMC,QAAQ6k3B,EAAcxJ,aACpDwJ,EAAcxJ,YACd,GAEE0S,IACJr01B,EAAAA,OAAAA,SAAQkr1B,IAAkB7k3B,MAAMC,QAAQ4k3B,EAAcvJ,aACpDuJ,EAAcvJ,YACd,GAEE2S,GAASv0tB,EAAAA,OAAAA,QACd,IACIq0tB,KACAC,GAEJ,gBAGD,OAAO/U,kBAAkCgV,EAC1C,EACA1S,YAAY,GAMb8G,oBAAqB,CACpB9s2B,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAO3B4s2B,mBAAoB,CACnB/s2B,QAAS,KACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,KAAM,QAQ3BsspB,sBAAuB,CACtBzspB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQRow3B,YAAa,CACZzt2B,QAAS,IAMV242B,sBAAuB,CACtB342B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORu73B,4BAA6B,CAC5B542B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORou1B,2BAA4B,CAC3Bzr0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORmw3B,kBAAmB,CAClBxt2B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORwi2B,YAAa,CACZ7/0B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+5pB,eAAgB,CACfp3oB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAURynrB,UAAW,CACV9kqB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAOR2x3B,4BAA6B,CAC5Bhv2B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR6n2B,sBAAuB,CACtBll1B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,aAIToW,eAAgB,CACf,CAACo9B,oDAAyB2wmB,gEAC1B,CAAC6kO,2BAA4B,CAC5B/w2B,OAAQs82B,4BACRrv2B,iBAAiB,GAElB,CAACgv1B,0CAAmC,CACnCj81B,OAAQsg3B,wBACRrz2B,iBAAiB,GAElB,CAACk7oB,2DAAwB,CACxBnopB,OAAQ8g3B,sBACR7z2B,iBAAiB,GAElB,CAAC9Q,iDAAmBiC,GAA4B,IAA1B,WAAE3Z,EAAU,SAAE0b,GAAU/B,EAC7C,MAAM,qBAAE272B,GAAyBt13B,GAC5BqqC,EAAAA,OAAAA,SAAQir1B,IACZsG,qCAAqC,CAAE573B,aAAY0b,YAErD,EACA,CAAClE,wDAA6B6kwB,8BAC9B,CAAC4vE,2BAAoB,CACpB1w0B,OAAQ6z0B,uBACR5m0B,iBAAiB,GAElB,CAACuk2B,qBAAsB,CACtBxx2B,OAAQsh3B,sBACRr02B,iBAAiB,GAElB,CAACwk2B,8BAA+B,CAC/Bzx2B,OAAQ0h3B,8BACRz02B,iBAAiB,GAElB,CAAC0j0B,4BAAqB,CACrB3w0B,OAAQwh3B,oBACRv02B,iBAAiB,GAElB,CAAC2j0B,qCAA8B,CAC9B5w0B,OAAQyh3B,sBACRx02B,iBAAiB,GAElB,CAAC+j2B,8BAA+B,CAC/Bhx2B,OAAQ6h3B,qCACR502B,iBAAiB,GAElB,CAACik2B,yBAA0B,CAC1Blx2B,OAAQgi3B,4BACR/02B,iBAAiB,GAElB,CAAC0k2B,iCAAkC,CAClC3x2B,OAAQkmpB,sCACRj5oB,iBAAiB,GAElB,CAAC2k2B,iCAAkCxrN,gCACnC,CAACxK,qCAA8B,CAC9B57oB,OAAQumpB,wCACRt5oB,iBAAiB,GAElB,CAAC4uoB,kCAA2B,CAC3B77oB,OAAQ0mpB,qCACRz5oB,iBAAiB,GAElB,CAACy70B,sBAAe,CACf1o1B,OAAQii3B,sBACRh12B,iBAAiB,GAElB,CAACgjqB,oCAA6B,CAC7BjwqB,OAAQ0i3B,uBACRz12B,iBAAiB,GAElB,CAAC4k2B,wBAAyBiR,0BAC1B,CAAChR,0BAA2B,CAC3B9x2B,OAAQ+i3B,4BACR912B,iBAAiB,GAElB,CAAC8k2B,uBAAwB,CACxB/x2B,OAAQij3B,yBACRh22B,iBAAiB,IAGnBC,WAAY,CAKXik2B,yCAA0C,CACzCvm2B,OAAQ,CACP7iB,KAAM,WAORu/pB,gBAAiB,CAChB18oB,OAAQ,CACP7iB,KAAM,WAORqp3B,kCAAmC,CAClCxm2B,OAAQ,CACP7iB,KAAM,WAOR+j2B,gCAAiC,CAChClh1B,OAAQ,CACP7iB,KAAM,WAORup3B,qCAAsC,CACrC1m2B,OAAQ,CACP7iB,KAAM,WAOR,2DAA4D,CAC3D6iB,OAAQ,CACP7iB,KAAM,WAQR,6CAA8C,CAC7C6iB,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACX293B,UAAW,CAAEr63B,KAAM,UACnBgzqB,UAAW,CAAEhzqB,KAAM,UACnBs63B,UAAW,CAAEt63B,KAAM,UACnBijpB,aAAc,CAAEjjpB,KAAM,aAWzB,mDAAoD,CACnD6iB,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACX8+pB,eAAgB,CAAEx7pB,KAAM,gB,gCC3oBhBw73B,WAAahx3B,IAA2B,IAA1B,QAAEsP,GAAmBtP,EAAP0hI,EAAKzhI,uCAAAD,EAAAE,eAC7C,MAAMm1E,EAAU/lE,EAEhB,OAAOsD,EAAAA,kCAAAA,eAACyiE,EAAYqsD,IAGfjpH,oDAAOvO,IACZ,MACChY,YAAY,YAAE++3B,EAAW,UAAEhwyB,IACxB/2E,EAEEw3H,EAAKvhI,kBAAA,GACP8w3B,GAGJ,OACCr+2B,EAAAA,kCAAAA,eAAA,YACCA,EAAAA,kCAAAA,eAACo+2B,WAAU7w3B,kBAAA,CAACmP,QAAS2xE,GAAeygD,MAKvC,oGCpBA1pH,EAAAA,aAAAA,qBAAoB,4CAA6C,CAChEC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,+CACJM,OAAM,2CACN7mB,WAAY,CAKX++3B,YAAa,CACZ942B,QAAS,CAAC,GAMX8oE,UAAW,CACV9oE,QAAS,OCpBL,MAAMqnqB,mDAAqB,QAErB0xM,wBAAyBp52B,EAAAA,iBAAAA,GACrC,mGAGYq52B,mBAAoBr52B,EAAAA,iBAAAA,GAAE,qBAEtBs52B,UAAY,KACZC,0BAA2Bv52B,EAAAA,iBAAAA,GAAE,wBAC7Bw52B,+BAAgCx52B,EAAAA,iBAAAA,GAC5C,GAAGs52B,kDAESG,6BAA8Bz52B,EAAAA,iBAAAA,GAAE,wBAChC052B,qBAAsB152B,EAAAA,iBAAAA,GAClC,8EAGYsr2B,iCAAyB,CACrCC,SAAU,WACVtlC,mBAAoB,qBACpBK,mBAAoB,qBACpBklC,kBAAmB,oBACnBtgM,gBAAiB,kBACjBugM,iBAAkB,oBAGNkO,wCAA0C,CACtDC,QAAQ552B,EAAAA,iBAAAA,GAAE,2BACV652B,QAAQ752B,EAAAA,iBAAAA,GAAE,0BACV852B,QAAQ952B,EAAAA,iBAAAA,GAAE,yBACV+52B,QAAQ/52B,EAAAA,iBAAAA,GAAE,4BACVg62B,QAAQh62B,EAAAA,iBAAAA,GAAE,2BACVi62B,QAAQj62B,EAAAA,iBAAAA,GAAE,2BAGEk62B,iBAAmB,CAC/BC,wBAAwBn62B,EAAAA,iBAAAA,GAAE,2BAGdo62B,sBAAwB,WAExBC,yBAA2B,wBAE3BjuM,yBAAiB,CAC7BC,GAAI,KACJG,QAAS,UACTC,OAAQ,SACRE,MAAO,QACPD,GAAI,KACJE,MAAO,WACPC,mBAAoB,sBAGfzG,wBAAgB,eAChBC,uBAAe,eACfC,8BAAsB,2BAEf6jM,iCAAyB,WACzBC,iCAAyB,WACzBC,+BAAuB,WAEvB3jM,sCAA8B,CAC1C,CAAE1uqB,GAAIouqB,wBAAet7oB,OAAO9qB,EAAAA,iBAAAA,GAAE,oCAC9B,CAAEhI,GAAIquqB,uBAAcv7oB,OAAO9qB,EAAAA,iBAAAA,GAAE,kCAC7B,CAAEhI,GAAIsuqB,8BAAqBx7oB,OAAO9qB,EAAAA,iBAAAA,GAAE,qCAGxBkmpB,oBAAY,sBACZo0N,eAAgBt62B,EAAAA,iBAAAA,GAC5B,kKAEYu62B,WAAa,OACbC,YAAc,UC9DrBC,WAAavy3B,IAA2B,IAA1B,UAAEkpD,GAAY,GAAOlpD,EACxC,OACC4S,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,0BACdlhB,EAAAA,kCAAAA,eAAA,YAAU0vB,KAAK,qBAAqBtoC,KAAK,KAAK09C,WAAW,SAAS,OAEjEwR,GACAt2C,EAAAA,kCAAAA,eAAA,aACCA,EAAAA,kCAAAA,eAAA,eAASkF,EAAAA,iBAAAA,GAAE062B,gDAAAA,YAAY,QACtBlB,gCAGF1+2B,EAAAA,kCAAAA,eAAA,YACEy+2B,yBAAyB,QAAMz+2B,EAAAA,kCAAAA,eAAA,eAASkF,EAAAA,iBAAAA,GAAE062B,gDAAAA,cAE3C,QAEF5/2B,EAAAA,kCAAAA,eAAA,qBACC0vB,KAAK,sBACL0Q,eAAgBk+0B,uBAChBnu1B,MAAI,EACJ/oC,KAAK,KACLo7C,aAAW,EACX5S,WAAY,CACXK,OAAQ,CAAE,aAAcsu1B,wBAO7B,+B,iHC3CA,MAAMsB,eAAiBA,KAErB7/2B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,sBACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,+BACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wBACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wBAEhBlhB,EAAAA,kCAAAA,eAAA,YACAA,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wBACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wBAEhBlhB,EAAAA,kCAAAA,eAAA,YACAA,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,wBACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,yBAOpB,8CClBa4+1B,KAAO,kBACPC,oBAAqB762B,EAAAA,iBAAAA,GAAE,gBACvB862B,qBAAsB962B,EAAAA,iBAAAA,GAAE,aAAa462B,iBCE5CG,kBAAoB7y3B,IAAA,IACzB8y3B,WAAYzg4B,EAAI,MAChBs0pB,EACAosO,YAAaC,EACbC,kBAAmBtt3B,EACnBut3B,eAAgBC,EAChBC,gBAAiBC,GACjBrz3B,EAAA,OACA4S,EAAAA,kCAAAA,eAAA,cACCkhB,UAAU,eACV8O,MAAOvwC,EACPswC,QAAQ,YACR3oC,KAAK,KACLg5C,eAAgBrtC,EAChB,oBAAmB,CAClBtT,OACAs0pB,QACAz7Z,MAAO8noB,EACPG,aACAE,SAAuB,SAAbA,MAKP562B,2BAAOvO,IACZ,MACChY,YAAY,OAAEoh4B,EAAM,WAAEC,EAAU,UAAErq0B,IAC/Bh/C,EAEEsp3B,GACL5g3B,EAAAA,kCAAAA,eAAA,OAAK8F,MAAO,CAAE,oBAAoB,EAAM,WAAY662B,IAClDA,GACA3g3B,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAU,sBAAsB6+1B,qBAEtC//2B,EAAAA,kCAAAA,eAAA,aACCA,EAAAA,kCAAAA,eAAA,YACC0vB,KAAK,0BACLtoC,KAAK,KACL09C,WAAW,SACV,OACKk70B,sBAGThg3B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,kBAAkBw/1B,EAAOty3B,IAAI6x3B,qBAI9C,OAAO3p0B,GACNt2C,EAAAA,kCAAAA,eAAA,OAAK8F,MAAO,CAAE,eAAe,EAAM,WAAYwwC,KAC9Ct2C,EAAAA,kCAAAA,eAAC6g3B,+BAAc,OAEbF,GACH3g3B,EAAAA,kCAAAA,eAAA,OAAK8F,MAAO,CAAE,eAAe,IAAS862B,GAEtCA,GAIF,iDChEa5/K,4CAAqB,qBACrB8/K,cAAgB,uCCC7B,iCACC,CAAC9/K,6CAAqB,CACrBnmsB,OAAQzN,IAA0B,IAAzB,OAAEwL,EAAM,SAAEoC,GAAU5N,EAC5B,MAAM,QAAEyL,GAAYD,EACpBoC,EAAS8l3B,cAAejo3B,IAEzBiP,iBAAiB,KCHnB1C,EAAAA,aAAAA,qBAAoB,mBAAoB,CACvCS,KAAI,sBACJvmB,WAAY,CAKXoh4B,OAAQ,CACPn72B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAOR0zD,UAAW,CACV/wC,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAQR+93B,WAAY,CACXp72B,SAAS,IAGXvM,eAAc,gCACdmN,OAAM,2BACN4B,WAAY,CAKX,uCAAwC,CACvCtC,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACXG,KAAM,CAAEmD,KAAM,UACdmxpB,MAAO,CAAEnxpB,KAAM,UACf01P,MAAO,CAAE11P,KAAM,UACf293B,WAAY,CAAE393B,KAAM,UACpB693B,SAAU,CAAE793B,KAAM,iB,gIClDhB,MAAMgqrB,mDAAqB,QACrBK,qBAAa,aACbC,yCAAW,WACX6zM,UAAW772B,EAAAA,iBAAAA,GAAE,YACb872B,SAAW,GACXC,mBAAqB,EACrBC,0BAA4B,gBAC5BztE,8BAAqBvuyB,EAAAA,iBAAAA,GAAE,YAEvBi82B,eAAgBj82B,EAAAA,iBAAAA,GAAE,0BAClB6o1B,+BAAsB7o1B,EAAAA,iBAAAA,GAAE,WACxBk82B,sBAAwB,EACxBC,mBAAqB,IACrBC,gBAAkB,KAClB9zB,yBAAiB,IACjBI,kCAA0B,IAC1BE,kCAA0B,mBAG1BhrM,wDAA0B,0BAC1By+N,8BAAgC,gCAEhCtyB,mDAAqB,qBAErBC,4CACZ,oCACYC,2CACZ,mCACYqyB,8BAAgC,gCAChCC,2BAA6B,6BClB7BvwF,2CAAiB55xB,IAC7B,MAAM,OACLkqD,EAAM,MACNhN,EAAK,cACLkt0B,EAAa,KACb763B,EAAI,kBACJ863B,GACGrq3B,EAAMhY,WAEJgzB,IAASqX,EAAAA,OAAAA,SAAQ9iC,IAASmJ,MAAMC,QAAQpJ,EAAKyrB,OAASzrB,EAAKyrB,MAAQ,GACnEhzB,EAAUiO,kBAAA,GACZ+J,EAAMhY,WAAU,CACnBkiE,QAAQ8jG,EAAAA,OAAAA,WAAU9jG,GAClBhN,OAAOtvC,EAAAA,iBAAAA,IAAEwpJ,EAAAA,OAAAA,UAASl6G,EAAO,CAAExzD,OAAQ,MACnC0g4B,eAAehztB,EAAAA,OAAAA,UAASgztB,EAAe,CAAE1g4B,OAAQ,MACjD4g4B,eAAgBj41B,EAAAA,OAAAA,SAAQrX,GAA0B,GAAjBvpB,QAAQupB,GACzCqv2B,kBAAmB3i3B,KAAKiE,IAAI0+2B,EAAmBN,sBAEhD,OAAA9z3B,kBAAA,GAAY+J,EAAO,CAAAhY,gBAGP2p3B,wCAAoCzV,IAChD,IAAI7p0B,EAAAA,OAAAA,SAAQ6p0B,GAAqB,MAAO,CAAC,EAEzC,MAAM0V,EAAWtF,YAAYpQ,GAC7B,OAAO6S,kBAAkB6C,EAAU,CAAEvD,UAAWnB,QAAW,CAAC,GAUhDqd,sBAAwB,WAAqB,IAApBvi4B,EAAUsF,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACnD,MAAMk93B,EAA4B/92B,YACjC7c,EAAAA,OAAAA,KAAI5H,EAAY,4BAA6B8h4B,wBAExCQ,GAAgB163B,EAAAA,OAAAA,KAAI5H,EAAY,gBAAiB,IACjDyi4B,EAAsBH,GAAiBA,EAAc5g4B,OACrDgh4B,IAAcr41B,EAAAA,OAAAA,UAAQziC,EAAAA,OAAAA,KAAI5H,EAAY,gBAAiB,CAAC,IAC9D,OAAOyi4B,GAAuBD,GAA6BE,CAC5D,ECtDA,uBACCC,OAAQ,SACRC,mBAAoB,mBACpBC,eAAgB,gBAChBC,cAAe,eACfC,gBAAiB,iBACjBC,YAAa,aACbr1M,WAAY,WACZs1M,UAAW,YACXC,sBAAuB,sBACvBC,WAAY,aACZC,sBAAuB,sBACvBj5zB,MAAO,KACPD,OAAQ,KACRq7yB,KAAM,OACN7jY,KAAM,OACNnkb,IAAK,MACL8l0B,iBAAkB,kBAClBC,QAAS,UACTC,YAAa,cACbC,eAAgB,gBAChBC,sBAAuB,sBACvBC,IAAK,MACLC,MAAO,iBACPC,kBAAmB,mBACnBC,iBAAkB,kBAClBC,0BAA2B,0BAG3BC,yBAA0B,gCAC1BC,oBAAqB,2BACrBC,+BAAgC,sCAChCC,8BAA+B,4CAC/BC,mBAAoB,0BACpBC,cAAe,qBACfC,iBAAkB,wBAClBC,sBAAuB,6BACvBC,yBAA0B,gCAC1BC,qBAAsB,4BACtBhhO,wBAAyB,0BACzBC,0BAA2B,4BAC3BmwH,eAAgB,6BAChB6wG,yBAA0B,uCAC1BC,yBAA0B,gCAC1BC,wBAAyB,+BACzBC,0BAA2B,iCAG3BC,sBAAsB,wBACtBC,uBAAuB,0BAGvBC,MAAO,QACPC,OAAQ,SACRC,gBAAiBr/2B,EAAAA,iBAAAA,GAAE,YACnBs/2B,gBAAiB,kBACjBC,gBAAiB,kBACjBC,uBAAwB,yBACxBC,eAAgB,iBAChBC,iBAAkB,mBAClBpgJ,SAAU,WACVqgJ,YAAa,cACbC,SAAU,WACVC,YAAa,cACbC,KAAM,OACN38L,KAAM,OACN48L,YAAa,cACbC,aAAc,eACdC,UAAW,YACXriP,SAAU,WACVsiP,KAAM,OACNC,YAAa,cACbC,cAAe,gBACfC,MAAO,cACPC,gBAAiB,WAGjBC,eAAgB,iBAChBC,SAAU,WACVC,gBAAiB,kBACjBp5O,MAAO,QACPq5O,gBAAiB,kBACjBC,YAAa,cACbC,cAAe,gBACfC,QAAS,UACTC,kBAAmB,oBACnBC,QAAS,UACTC,YAAa,cACbC,aAAc,eAGdC,mBAAmBlh3B,EAAAA,iBAAAA,GAAE,yBAGrB052B,qBAAqB152B,EAAAA,iBAAAA,GAAE,2CAGvBmh3B,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,SAAU,WAGVC,eAAgB,GAChBC,kBAAmB,GACnBC,mBAAoB,GAGpBC,gBAAiB,uBACjBxtJ,MAAMl0tB,EAAAA,iBAAAA,GAAE,QACR2h3B,SAAS3h3B,EAAAA,iBAAAA,GAAE,yBACXo/tB,UAAUp/tB,EAAAA,iBAAAA,GAAE,YACZ4h3B,UAAU5h3B,EAAAA,iBAAAA,GAAE,0BACZ6h3B,iBAAkB,qBAClBC,aAAa9h3B,EAAAA,iBAAAA,GAAE,oBACf+h3B,YAAY/h3B,EAAAA,iBAAAA,GAAE,mBACdgi3B,WAAa,eACbC,UAAW,cAGXC,MAAQ,QACRC,KAAM,OAGNC,YAAa,cACbC,aAAc,eACdC,aAAc,eACdC,OAAQ,SAGRC,KAAM,OACNC,QAAS,UAGTC,cAAe,cACfC,uBAAwB,yBACxBC,oBAAqB,sBAGrBC,oBAAqB,mBAGrB5jB,QAAS,UACTnh3B,KAAM,OACNgl4B,QAAS,UACT7iB,OAAQ,SAGR8iB,kBAAmB,oBACnBC,YAAa,cACbC,aAAc,cAGdC,cAAe,IACfC,cAAe,IACfC,cAAe,IACfC,cAAe,IACfC,cAAe,IACfC,cAAe,IAGfC,eAAgB,iBAChBC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,cAAe,gBACfC,gBAAiB,kBACjBC,eAAgB,iBAGhBvxe,KAAM,OACNC,MAAO,QAGP2rP,UAAW,QACX40D,WAAY,YACZF,YAAa,aAGbkxL,iCAAkC,EAGlCC,oBAAqB,qBACrBC,gBAAiB,gBACjBC,oBAAqB,qBCzLtB,IAAI,uBAAI743B,IAAO,IAAID,EAAI,CAAC,EAAgC,OAA7BupB,oBAAoBC,EAAExpB,EAAGC,GAAWD,GAC3D,cAAIA,GAAK,IAAMA,EACnB,MAAM,qCAA+B,uBAAE,CAAE,IAAS,KAC7C,MAAMypB,EAAYsv2B,wFAAwF7j3B,SAAW6j3B,wFAAwFpv2B,WAGtM,OAAIF,EACHsv2B,wFAAiG,QAAEli4B,IAIpGki4B,wFAAwFli4B,KAAOki4B,wFAAiG,SAAKA,wFAAiG,QAAEli4B,OCC9Smi4B,mBAAqBh7yB,IAC1B,MAAMi7yB,EAAgBjt3B,IACrB,IAAI7N,EAAQ6N,EAAKu+C,YAGjB,QAA2BhzD,IAAvByU,EAAKgqE,cAA6B,CACrC,MAAMyoD,EAAQzyH,EAAKgqE,gBACfyoD,GACHnuI,OAAO4F,KAAKuoI,GAAO52H,QAAQ/T,IACtBkY,EAAKlY,KACRqK,EAAMrK,GAAOkY,EAAKlY,KAKtB,MACCqK,EAAQ6N,EAAKu+C,WAAU,GAIxB,GAAIv+C,EAAKoD,SAASze,OAAS,EAC1B,IAAK,MAAMwoD,KAASntC,EAAKoD,SACxBjR,EAAM2Y,YAAYmi3B,EAAc9/0B,IAElC,OAAOh7C,GAGR,OAAO863B,EAAcj7yB,IAQhBk7yB,sBAAwBA,CAACl7yB,EAAW93E,EAAWyzC,KAChDqkC,EAAUvyE,aAAavF,IAC1B83E,EAAUnyE,aAAa3F,EAAW83E,EAAUvyE,aAAavF,GAAayzC,IAQlEw/0B,eAAiBA,CAACjgxB,EAAWv/D,KAClCu/0B,sBAAsBhgxB,EAAW,KAAMv/D,GACvCu/0B,sBAAsBhgxB,EAAW,SAAUv/D,GAC3Cu/0B,sBAAsBhgxB,EAAW,eAAgBv/D,GACjDu/D,EAAUrtG,aAAa,WAAY,QACnCqtG,EAAUrtG,aAAa,WAAY,OAQvBut3B,eAAiBA,CAACC,EAAUC,KACxC,IAAIx2wB,GAAO,EAoBX,OAnBAw2wB,EAAoBpq3B,gBAAgBrH,QAAQ,CAACmE,EAAM/P,EAAOmE,KACzD,GAAsC,SAAlC4L,EAAKP,aAAa,YAAwB,KAAA8t3B,EAAAC,EAC7C,MAAMC,GAAqC,QAAvBF,EAAAvt3B,EAAKP,aAAa,aAAK,IAAA8t3B,OAAA,EAAvBA,EAAyBp53B,SAAS,WAA4C,QAArCq53B,EAAIxt3B,EAAKP,aAAa,uBAAe,IAAA+t3B,OAAA,EAAjCA,EAAmCr53B,SAAS,SACvGu53B,EAAgBt53B,EAAMg1C,UAAUu+Q,GACpC,GAAGA,EAASloT,aAAa,cAAkBO,EAAKP,aAAa,OAC7D,GAAGkoT,EAASloT,aAAa,eAAmBO,EAAKP,aAAa,OAC9D,GAAGkoT,EAASloT,aAAa,wBAA4BO,EAAKP,aAAa,iBACvE,GAAGkoT,EAASloT,aAAa,yBAA6BO,EAAKP,aAAa,iBAE1E,GAAKgu3B,GAAeC,EAAgBz93B,IAAYw93B,GAAeC,EAAgBz93B,EAAQ,CACtF6mH,GAAO,EACP,MAAMyrK,EAAUnuR,EAAMs53B,GAAeC,mBACrCN,EAASzp3B,aAAaxP,EAAMs53B,GAAgB1t3B,GAC5Cqt3B,EAASzp3B,aAAa5D,EAAMuiR,GAC5BnuR,EAAMs53B,GAAezx3B,gBAAgB,YACrC7H,EAAMs53B,GAAezx3B,gBAAgB,UACtC,CACD,IAEM66G,GASK82wB,iBAAmBA,CAACP,EAAUC,KAM1CF,eAAeC,EAAUC,GAEzB,IAAIO,GAAU,EAOd,OANAP,EAAoBpq3B,gBAAgBrH,QAAQmE,IACL,SAAlCA,EAAKP,aAAa,cACrBou3B,GAAU,EACVR,EAAShr3B,YAAYrC,MAGhB6t3B,GAQKC,eAAiBA,CAAC32vB,EAAYwwL,EAAUh6Q,IAY7CwpF,EAAW11H,OAAQuwE,GAXN+7yB,EAAC/7yB,EAAW21O,EAAUh6Q,IAC1B,SAAXA,GAAgC,UAAXA,EAChBqkC,EAAUvyE,aAAa,QAAU,GAAGkoT,EAASloT,aAAa,QAAQkuC,KACxEqkC,EAAUvyE,aAAa,kBAAoB,GAAGkoT,EAASloT,aAAa,kBAAkBkuC,IAGjFqkC,EAAUvyE,aAAa,QAAU,GAAGkoT,EAASloT,aAAa,aAChEuyE,EAAUvyE,aAAa,QAAU,GAAGkoT,EAASloT,aAAa,cAC1DuyE,EAAUvyE,aAAa,kBAAoB,GAAGkoT,EAASloT,aAAa,uBACpEuyE,EAAUvyE,aAAa,kBAAoB,GAAGkoT,EAASloT,aAAa,uBAEhCsu3B,CAAY/7yB,EAAW21O,EAAUh6Q,IAQ5Dqg1B,iBAAmB,SAACV,EAAqBW,EAAaC,EAAaC,EAAaC,GAAoC,IAArBzmE,EAAQp/zB,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,IAAAA,UAAA,GACnH,MAAM8k4B,EAAWC,EAAoB1r2B,cAAcvmB,KAC7Cgz3B,EAAgBf,EAAoBpq3B,gBAAgBzB,OAAOzB,IAAI,IAAAsu3B,EAAA,MAA4B,UAAd,QAAVA,EAAAtu3B,EAAKiG,aAAK,IAAAqo3B,OAAA,EAAVA,EAAYjs2B,WACrF,IAAIks2B,GAAkB,EAGtB,GAAIL,IAAgB762B,sBAAEo42B,oBAAqB,CAG1C,GAAI9jE,EACH,OAAO4mE,EAGR,MAAMC,EAAoBxB,mBAAmBiB,EAAYA,EAAYtp4B,OAAS,IAC9Ewo4B,eAAeqB,EAAmB,QAClCnB,EAASvr1B,QAAQ0s1B,GAGjB,MAAMC,EAAqBzB,mBAAmBiB,EAAY,IAC1Dd,eAAesB,EAAoB,SACnCpB,EAASvi3B,YAAY2j3B,GAErBF,GAAkB,CAEnB,MAEC,GAAIJ,IAAgB962B,sBAAEu42B,kBAAmB,CAMxC,IAAI8C,EAAW,GACXC,EAAU,GACVC,EAAkB,EAClBC,EAAa,GACjB,MAAMv7G,EAAkB86G,EAAgB/62B,sBAAEg32B,kBAAoBh32B,sBAAE+22B,eAChE,IAAK,IAAI3ozB,EAAM,EAAGA,EAAMwszB,EAAYtp4B,OAAQ88E,IAC3CmtzB,GAAmBX,EAAYxszB,GAAKn1D,YAEhCsi3B,EAAkBt7G,IACE,GAAnBo7G,EAAS/p4B,SACZ+p4B,EAAW,IAAIG,IAEhBD,EAAkBX,EAAYxszB,GAAKn1D,YACnCui3B,EAAa,IAEdD,GAAmBv72B,sBAAEi32B,mBACrBuE,EAAWxk4B,KAAKo3E,GAEjBktzB,EAAU,IAAIE,GAGVlnE,GACHimE,iBAAiBP,EAAUC,GAE5B,IAAK,IAAI7rzB,EAAMktzB,EAAQA,EAAQhq4B,OAAS,GAAI88E,GAAOktzB,EAAQ,GAAK,EAAGltzB,IAAO,CACzE,MAAMyrC,EAAY8/wB,mBAAmBiB,EAAYxszB,IACjD0rzB,eAAejgxB,EAAW,QAC1BmgxB,EAASvr1B,QAAQorE,EAClB,CAEA,IAAK,IAAIzrC,EAAMitzB,EAAS,GAAIjtzB,GAAOitzB,EAASA,EAAS/p4B,OAAS,GAAK,EAAG88E,IAAO,CAC5E,MAAMyrC,EAAY8/wB,mBAAmBiB,EAAYxszB,IACjD0rzB,eAAejgxB,EAAW,SAC1BmgxB,EAASvi3B,YAAYoiG,EACtB,CAEAqhxB,GAAkB,CACnB,KAAO,CAQN,IAAK5mE,EAAU,CACd,IAAK,IAAIlmvB,EAAMwszB,EAAYtp4B,OAAS,EAAG88E,GAAOwszB,EAAYtp4B,OAAS,EAAG88E,IAAO,CAC5E,MAAMyrC,EAAY8/wB,mBAAmBiB,EAAYxszB,IACjD0rzB,eAAejgxB,EAAW,QAC1BmgxB,EAASvr1B,QAAQorE,EAClB,CACAqhxB,GAAkB,CACnB,CAEA,IAAIj7G,EAAkB86G,EAAgB/62B,sBAAEg32B,kBACxC,IAAK,MAAMyE,KAAcb,EAAa,CACrC,IAAKtmE,GAA0E,IAA9DmmE,eAAeO,EAAeS,EAAY,SAASnq4B,OAAc,CACjF,MAAMuoH,EAAY8/wB,mBAAmB8B,GACrC3B,eAAejgxB,EAAW,SAC1BmgxB,EAASvi3B,YAAYoiG,GACrBqhxB,GAAkB,CACnB,CAGA,GADAj7G,GAAoBw7G,EAAWxi3B,YAAc+G,sBAAEi32B,mBAC3Ch3G,EAAkB,EACrB,KACF,CAED,CAID,OAAOi7G,CACR,EAEaQ,uBAAyB53vB,GAAcA,EAAW11H,OAAOuwE,IAAS,IAAAg9yB,EAAAC,EAAA,OAAiC,QAA5BD,EAAAh9yB,EAAUvyE,aAAa,aAAK,IAAAuv3B,OAAA,EAA5BA,EAA8B763B,SAAS,WAAiD,QAA1C863B,EAAIj9yB,EAAUvyE,aAAa,uBAAe,IAAAwv3B,OAAA,EAAtCA,EAAwC963B,SAAS,WAC1K+63B,qBAAuB/3vB,GAAcA,EAAW11H,OAAOuwE,IAAS,IAAAm9yB,EAAAC,EAAA,OAAiC,QAA5BD,EAAAn9yB,EAAUvyE,aAAa,aAAK,IAAA0v3B,OAAA,EAA5BA,EAA8Bh73B,SAAS,YAAkD,QAA1Ci73B,EAAIp9yB,EAAUvyE,aAAa,uBAAe,IAAA2v3B,OAAA,EAAtCA,EAAwCj73B,SAAS,YAEzKk73B,cAAgBA,CAACC,EAAYn4vB,IAAem4vB,EAAWv93B,IAAIm7G,GAAaiqB,EAAWvvH,KAAKoqE,GAAck7B,EAAUztG,aAAa,QAAU,GAAGuyE,EAAUvyE,aAAa,aAC1KytG,EAAUztG,aAAa,QAAU,GAAGuyE,EAAUvyE,aAAa,cAC3DytG,EAAUztG,aAAa,kBAAoB,GAAGuyE,EAAUvyE,aAAa,uBACrEytG,EAAUztG,aAAa,kBAAoB,GAAGuyE,EAAUvyE,aAAa,yBAE5D8v3B,eAAiBA,CAACp4vB,EAAYm2vB,EAAqBhy3B,KAG/D,GAFqB67H,EAAWrkH,KAAKk/D,GAAoD,SAAvCA,EAAUvyE,aAAa,aAEvD,CACjB,MAAM4t3B,EAAWC,EAAoB1r2B,cAAcvmB,KACnDC,EAAY,CAACY,KAAM,aAAcrW,OAAO,EAAMsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,IAG9E,IAAK,MAAM41E,KAAamlD,EACvB,GAAInlD,EAAUvyE,aAAa,YAAa,CAEvC,MAAM+v3B,EAAoBlC,EAAoBpq3B,gBAAgB0E,KAAK5H,GAAS,GAAGA,EAAKP,aAAa,cAAkBuyE,EAAUvyE,aAAa,OACvI,GAAGO,EAAKP,aAAa,eAAmBuyE,EAAUvyE,aAAa,OAC/D,GAAGO,EAAKP,aAAa,wBAA4BuyE,EAAUvyE,aAAa,iBACxE,GAAGO,EAAKP,aAAa,yBAA6BuyE,EAAUvyE,aAAa,iBACtE8iR,EAAUitmB,EAAkB7B,mBAClCN,EAASzp3B,aAAa4r3B,EAAmBx9yB,GACzCq7yB,EAASzp3B,aAAaouE,EAAWuwM,GAG7BitmB,EAAkB/v3B,aAAa,YAClC+v3B,EAAkBvz3B,gBAAgB,WAClCuz3B,EAAkBvz3B,gBAAgB,cAElCuz3B,EAAkB3v3B,aAAa,UAAW,QAC1C2v3B,EAAkB3v3B,aAAa,WAAY,MAG7C,CAEF,GCxRY4v3B,iBAAmB3z3B,MAASA,GAA0B,OAApBA,EAAGi1B,cAOrC2+1B,gBAAkBA,CAACzB,EAAaC,EAAayB,EAAgBvB,KACzE,IAAI1o3B,EAAQ,EACZ,IAAK,MAAMoB,KAAOmn3B,EACbC,IAAgB762B,sBAAEo42B,oBACrB/l3B,GAAS0o3B,EAET1o3B,GAASoB,EAAIwF,YAAc+G,sBAAEi32B,mBAK/B,OAHI4D,IAAgB762B,sBAAEm42B,wBAA0BmE,IAC/Cjq3B,GAAS2N,sBAAEi32B,oBAEL5k3B,GAWKkq3B,oBAAsB,SAAC303B,EAAO403B,GAA2C,IAA3BC,IAAevn4B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,KAAAA,UAAA,GACzE,MAAM,iBACLwn4B,EAAgB,oBAChBzC,GACGry3B,EAEE+03B,EAAmB,GACzB,GAA4B,OAAxB1C,EACH,OAAO0C,EAGR,MAAM3B,EAAgBf,EAAoBpq3B,gBAAgBzB,OAAOzB,IAAI,IAAAsu3B,EAAA,MAA4B,UAAd,QAAVA,EAAAtu3B,EAAKiG,aAAK,IAAAqo3B,OAAA,EAAVA,EAAYjs2B,WACrF,GAA6B,IAAzBgs2B,EAAc1p4B,OACjB,OAAOqr4B,EAER,IAAIC,EAAe,EACfC,EAAc,EAClB,KAAOD,EAAe5B,EAAc1p4B,OAAQsr4B,IAAgB,CAC3D,MAAMj+yB,EAAYq8yB,EAAc4B,GAE1BE,EAAkBD,EAExB,GADAA,GAFuBl+yB,EAAU1lE,YAAc5E,WAAWsqE,EAAU/rE,MAAMmrC,aAAe,GAAK1pC,WAAWsqE,EAAU/rE,MAAMqrC,YAAc,GAGnI4+0B,EAAcL,EAAgB,EAC7BC,GAAmBK,GAAmBN,IACzCG,EAAiB3l4B,KAAK2nF,GACvB,KACD,CACD,CAEA,IAAIo+yB,EAAmBF,EAAcL,EACrC,MAAMhiR,EAAakiR,EAAiBzj3B,YAGpC,IADA2j3B,IACOA,EAAe5B,EAAc1p4B,OAAQsr4B,IAAgB,CAC3D,MAAMj+yB,EAAYq8yB,EAAc4B,GAC1BI,EAAiBr+yB,EAAU1lE,YAAc5E,WAAWsqE,EAAU/rE,MAAMmrC,aAAe,GAAK1pC,WAAWsqE,EAAU/rE,MAAMqrC,YAAc,GACvI,GAAI8+0B,EAAmBC,EAAiBxiR,EAAY,CAC/CiiR,GACHE,EAAiB3l4B,KAAK2nF,GACvB,KACD,CACAo+yB,GAAoBC,EACpBL,EAAiB3l4B,KAAK2nF,EACvB,CAEA,OAAOg+yB,CACR,EAOaM,yBAA2BrC,IAAgBA,EAAYn72B,KAAKk/D,GAAuC,IAA1BA,EAAU1lE,aAOnFik3B,oBAAsB,SAACt13B,EAAOK,EAAa3W,GAA+D,IAAvDg9R,EAAUp5R,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG8qB,sBAAE812B,gBAAiBqH,IAAWjo4B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,KAAAA,UAAA,GAC1G,MAAM,oBAAC+k4B,EAAmB,YAAEY,EAAajr4B,YAAY,IAACwiB,EAAG,eAAEkq3B,IAAmB103B,EAG9E,IAAK003B,GAAkBzB,IAAgB762B,sBAAEm42B,wBAA0BgF,EAAa,CAC/E,MAAMR,EAAmBJ,oBAAoB303B,EAAOtW,GACpD4q4B,eAAeS,EAAkB1C,EAAqBhy3B,EACvD,CAEA,MAAMupC,EAAap/B,IAAQ4N,sBAAEsz2B,IAAO,GAAK,IACzC2G,EAAoBrn3B,MAAM07Q,WAAaA,EACvC2rmB,EAAoBrn3B,MAAMma,UAAY,aAAaykB,IAAYlgD,MAChE,EAEa8r4B,eAAiBnD,IAC7B,IAAIuC,EAAiB,EACrB,MAAMa,EAAapD,EAAoBrn3B,MAAMma,UAAUj5B,MAAM,SAI7D,OAHmB,OAAfup4B,IACHb,EAAiBlt3B,KAAK+tB,IAAI1qB,SAAS0q3B,EAAW,MAExCb,GAsCKc,oBAAsB113B,IAClC,MAAM,iBACL803B,EAAgB,oBAChBzC,EAAmB,aACnBsD,EAAY,YACZ3C,EAAW,YACXC,EACAjr4B,YAAY,YACXkr4B,EAAW,eACXwB,IAEE103B,EACE413B,EAAa,GACbzC,EAAgB2B,EAAiBzj3B,YACjCwk3B,EAAepB,gBAAgBzB,EAAaC,EAAayB,EAAgBvB,GAE/E,IAAIvurB,EAAY,EAChB,IAAK8vrB,EACJ,GAAIzB,IAAgB762B,sBAAEo42B,oBACrB5rrB,EAAYuurB,MACR,CACJ,MAAM2C,EAAqBhC,uBAAuBzB,EAAoBpq3B,iBACtEms3B,cAAc0B,EAAoBzD,EAAoBpq3B,iBAAiBrH,QAAQm2E,IAC9E6tH,GAAa7tH,EAAU1lE,YAAc+G,sBAAEi32B,oBAEzC,CAID,GAAIwG,GAAgB1C,EACnB,MAAO,CAAC,CACPvurB,UAAW,EACXxnL,QAAS,IAKX,GAAI612B,IAAgB762B,sBAAEo42B,oBACrB,IAAK,IAAIhqzB,EAAM,EAAGA,EAAMmvzB,EAAcnvzB,IAAO,CAC5C,MAAMuvzB,EAAY,CACjBnxrB,YACAxnL,QAASopD,GAEVovzB,EAAWxm4B,KAAK2m4B,GAGhBnxrB,GAAauurB,CACd,KACM,CACN,IAAI6C,EAAsB,EAC1B,IAAK,IAAIxvzB,EAAM,EAAGA,EAAMmvzB,KAEnBK,GAAuBL,GAFUnvzB,IAAO,CAK5C,MAAMuvzB,EAAY,CACjBnxrB,YACAxnL,QAAS442B,GAKV,GAHAJ,EAAWxm4B,KAAK2m4B,GAGZrB,GACH,GAAY,IAARluzB,EAAW,CACd,KAAIo+H,EAAYxsL,sBAAEg32B,kBAAoByG,EAAe1C,GAEhD,CAEJyC,EAAWpvzB,GAAKo+H,UAAYixrB,EAAe1C,EAC3C,KACD,CALCyC,EAAWpvzB,GAAKo+H,UAAYA,EAAYxsL,sBAAEg32B,iBAM5C,OAEAwG,EAAWpvzB,GAAKo+H,UAAYA,EAAYxsL,sBAAEg32B,kBAI3C,GAAI8D,IAAgB962B,sBAAEw42B,YACrBhsrB,GAAaourB,EAAYxszB,GAAKn1D,YAAc+G,sBAAEi32B,mBAC9C2G,QAEM,CACN,IAAIrC,EAAkB,EACtB,KAA0BqC,EAAsBL,EAAcK,IAAuB,CACpFrC,GAAmBX,EAAYgD,GAAqB3k3B,YACpD,IAAI4k3B,EAAatC,EAKjB,GAJY,IAARntzB,GAAckuzB,IACjBuB,GAAc792B,sBAAEg32B,mBAGb6G,GAAc9C,EAAgB/62B,sBAAE+22B,eAEnC,MAEDvqrB,GAAaourB,EAAYgD,GAAqB3k3B,YAAc+G,sBAAEi32B,mBAC9DsE,GAAmBv72B,sBAAEi32B,kBACtB,CACD,CACD,CACD,CAGA,IAAKqF,GAAkBkB,EAAWls4B,OAAS,EAAG,CAC7C,MAAMws4B,EAAiBN,EAAW,GAC5BO,EAAgBP,EAAWA,EAAWls4B,OAAS,GAEjDup4B,IAAgB762B,sBAAEo42B,qBACrB0F,EAAeE,cAAgBD,EAAcvxrB,UAAYuurB,EACzDgD,EAAcC,cAAgB,IAE9BF,EAAeE,cAAgBF,EAAetxrB,UAAYixrB,EAC1DM,EAAcC,cAAgBD,EAAcvxrB,UAAYixrB,EAG1D,CAEA,OAAOD,GAGD,SAASS,gBAAgBr23B,EAAOK,EAAaqD,GACnD,MACC1b,YAAY,iBAACsu4B,EAAgB,gBAAEC,EAAe,gBAAEC,IAC7Cx23B,EAEJ,IAAI,qBACHy23B,GACGz23B,EAECs23B,IAAoBE,GAAmBC,IAAyBr+2B,sBAAEs52B,kCAGvE+E,EAAuB341B,YAAY,KAClCp6B,EAAS0U,sBAAEg02B,cAAe,CAACsK,gBAAiBt+2B,sBAAE+nY,SAC5Co2e,GAEHl23B,EAAY,CACXY,KAAM,uBACNrW,MAAO6r4B,EACPv13B,UAAWkX,sBAAEmtC,IACbpkD,cAAc,IAEhB,CAEO,SAASw13B,eAAe323B,EAAOK,GACrC,MAAM,qBAACo23B,GAAwBz23B,EAC3By23B,IAAyBr+2B,sBAAEs52B,kCAE/Bl01B,cAAci51B,GAEdp23B,EAAY,CACXY,KAAM,uBAAwBrW,MAAOwtB,sBAAEs52B,gCAAiCxw3B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,IAE1G,CAEO,SAASy13B,cAAcF,GAC7B,IAAIr0N,EAAa,KACjB,OAAQq0N,GACP,KAAKt+2B,sBAAE+nY,MACNkiR,EAAa,uBACb,MACD,KAAKjqpB,sBAAE8nY,KACNmiR,EAAa,sBACb,MACD,KAAKjqpB,sBAAE6y2B,UACN5oN,EAAa,qBAKf,OAAOA,CACR,CCnTA,MAAMw0N,qBAAuBA,CAAC9/yB,EAAW9gC,EAAQ7qC,KAChD2rE,EAAU/rE,MAAMirC,OAASA,EAGrB8gC,EAAU1lE,YAAcjG,GAC3B2rE,EAAU/rE,MAAMI,SAAW,GAAGA,MAG1B2rE,EAAU/rE,MAAM6lC,UAAYkmC,EAAU1lE,YAAcjG,IACvD2rE,EAAU/rE,MAAM6lC,SAAW,GAAGzlC,QAI3B2rE,EAAU/rE,MAAMI,WACnB2rE,EAAU/rE,MAAMI,SAAW,GAAGA,QAS3B0r3B,UAAYA,CAAC7kxB,EAAWl7B,KAC7Bk7B,EAAUjnG,MAAMirC,OAAS8gC,EAAU/rE,MAAMirC,OACrC8gC,EAAU/rE,MAAMI,WACnB6mG,EAAUjnG,MAAMI,SAAW2rE,EAAU/rE,MAAMI,UACxC2rE,EAAU/rE,MAAM6lC,WACnBohE,EAAUjnG,MAAM6lC,SAAWkmC,EAAU/rE,MAAM6lC,WAQhCkm1B,oBAAsB/23B,IAClC,MAAM,oBAACqy3B,EAAmB,iBAAEyC,EAAgB,YAAE9B,EAAW,YAAEC,EAAajr4B,YAAY,eAAC0s4B,EAAc,IAAElq3B,IAAQxK,EACvGk8H,EAAam2vB,EAAoBpq3B,gBAAgBzB,OAAOzB,IAAI,IAAAsu3B,EAAA,MAA4B,UAAd,QAAVA,EAAAtu3B,EAAKiG,aAAK,IAAAqo3B,OAAA,EAAVA,EAAYjs2B,WAElF,IAAK,IAAIo/C,EAAM,EAAGA,EAAMwszB,EAAYtp4B,OAAQ88E,IAAO,CAClD,GAAqC,IAAjCwszB,EAAYxszB,GAAKn1D,YACpB,OAAO,EAER,IAAI4kC,EAAS,IACT7qC,EAAW0p3B,EAAiBzj3B,YAAe,EAAI+G,sBAAEg32B,kBAErD,GAAI6D,IAAgB762B,sBAAEo42B,qBAKrB,GAJApl3B,EAAW0p3B,EAAiBzj3B,YAE5B2h3B,EAAYxszB,GAAKx7D,MAAMI,SAAW,GAAGA,MAEA,SAAjC4n3B,EAAYxszB,GAAKx7D,MAAMP,MAAkB,CAC5C,MAAMus3B,GAAelC,EAAiBzj3B,YAAc2h3B,EAAYxszB,GAAKn1D,aAAe,EAChF2l3B,EAAc,IACjB/g1B,EAAS,KAAK+g1B,MAChB,OAEWtC,GAAkBluzB,IAAQwszB,EAAYtp4B,OAAS,IAEzDusD,EADGzrC,IAAQ4N,sBAAEsz2B,IACJ,SAAStz2B,sBAAEi32B,uBAEX,KAAKj32B,sBAAEi32B,6BAGlBwH,qBAAqB7D,EAAYxszB,GAAMvwB,EAAQ7qC,GAS1Csp3B,GACJ7B,eAAe32vB,EAAY82vB,EAAYxszB,IAAM5lE,QAAQqxG,IACpD6kxB,UAAU7kxB,EAAW+gxB,EAAYxszB,KAGpC,CAEA,OAAO,GAYKywzB,gBAAkB,SAACj33B,EAAOK,EAAaqD,GAAqC,IAA3Bwz3B,EAAc5p4B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,IAAAA,UAAA,GAC3E,MAAM,sBACL6p4B,EAAqB,iBACrBrC,EAAgB,oBAChBzC,EAAmB,YACnBW,EAAW,aACX2C,EAAY,WACZyB,EAAU,YACVnE,EAAW,cACXoE,EACArv4B,YAAY,eACX0s4B,EAAc,YACdxB,IAEElz3B,EAEJ,GAA4B,OAAxBqy3B,IAAiCgF,EACpC,OAED,GAAID,EAEH,YADA/23B,EAAY,CAACY,KAAM,aAAcrW,OAAO,EAAOsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,IAIhF,GAAIg23B,EAGH,OAFA923B,EAAY,CAACY,KAAM,wBAAyBrW,OAAO,EAAOsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,SAC1FuC,EAAS0U,sBAAE8z2B,+BAKZ,MAAMoL,EAAiB,GACvB,IAAIC,EAAkB,EAC6B,IAA/ClF,EAAoBpq3B,gBAAgBve,SACvC2o4B,EAAoBrn3B,MAAM07Q,WAAatuQ,sBAAE812B,gBACzCmE,EAAoBpq3B,gBAAgBrH,QAAQmE,IAAQ,IAAAyy3B,EAC9Czy3B,EAAKP,aAAa,aAAuC,UAAd,QAAVgz3B,EAAAzy3B,EAAKiG,aAAK,IAAAws3B,OAAA,EAAVA,EAAYpw2B,UACjDkw2B,EAAelo4B,KAAK2V,KAGtBwy3B,EAAkBD,EAAe5t4B,QAGlC4t4B,EAAe123B,QAAQ,CAACmE,EAAMyhE,KAC7B,MAAMixzB,EAAsBA,KAC3B/z3B,EAAS0U,sBAAEo02B,qBAAsB,CAACzn3B,OAAMyhE,SAGrCzhE,EAAK2y3B,4BACR3y3B,EAAK9C,oBAAoB,UAAW8C,EAAK2y3B,4BAE1C3y3B,EAAK1C,iBAAiB,UAAWo13B,GACjC1y3B,EAAK2y3B,2BAA6BD,IAInC,IAAIE,GAAiB,EACrB,GAAIhC,IAAiB4B,EACpBI,GAAiB,OAEjB,IAAK,IAAItt4B,EAAI,EAAGA,EAAI2o4B,EAAYtp4B,OAAQW,IACvC,IAAK2o4B,EAAY3o4B,GAAGg6sB,WAAWizL,EAAejt4B,IAAK,CAClDst4B,GAAiB,EACjB,KACD,CAIF,IAAKtC,yBAAyBiC,GAK7B,YAJA532B,WAAW,KACVhc,EAAS0U,sBAAE+z2B,qBACT,KAMJ,MACMyL,EADenD,gBAAgB6C,EAAgBrE,EAAayB,EAAgBI,EAAiBzj3B,cAC5Dyj3B,EAAiBzj3B,YAQxD,GANAhR,EAAY,CACX,CAACY,KAAM,eAAgBrW,MAAO2s4B,EAAiBr23B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GAC/E,CAACF,KAAM,cAAerW,MAAO0s4B,EAAgBp23B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GAC7E,CAACF,KAAMmX,sBAAEy52B,oBAAqBjn4B,OAAO,EAAMsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAGxE+13B,GAAkBS,EAAgB,CACrC,IAAIE,GAAkB,EAEtB,MAAMzF,EAAWC,EAAoB1r2B,cAAcvmB,KACnDy33B,EAAkBlF,iBAAiBP,EAAUC,GAGxCqC,GAAmBkD,IAEvB7E,iBAAiBV,EAAqBiF,EAAgBrE,EAAaC,EAAa4B,EAAiBzj3B,aACjGwm3B,GAAkB,GAQdA,GACJn03B,EAAS0U,sBAAEm02B,yBACb,MAEC7o3B,EAAS0U,sBAAEm02B,0BAEZ7o3B,EAAS0U,sBAAEk02B,sBACZ,EAQawL,gBAAkBA,CAAC933B,EAAOmkB,EAAkB9jB,EAAaqD,KACrE,MAAM,oBAAC2u3B,EAAmB,aAAE7hqB,EAAY,WAAEunqB,EAAY/v4B,YAAY,cAACgw4B,IAAkBh43B,EAGrF,IAAK+23B,oBAAoB/23B,GAKxB,YAJA0f,WAAW,KACVhc,EAAS0U,sBAAEm02B,2BACT,KAMJ,MAAMqJ,EAAaF,oBAAoB113B,GAGvC,IAAIu0vB,EAAgB,EACpB,GAAIqhI,EAAWls4B,OAAS,EAAG,CAC1B,MAAM6zB,EAAWw62B,EAAavnqB,EAAewnqB,EAC7CzjI,EAAgBh3uB,EACZA,GAAYq42B,EAAWls4B,OAC1B6qwB,EAAgBqhI,EAAWls4B,OAAS,EAC5B6zB,EAAW,IACnBg3uB,EAAc,EAChB,CAeA,GAbAl0vB,EAAY,CACX,CAACY,KAAMmX,sBAAE+y2B,WAAYvg4B,MAAOgr4B,EAAY103B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GACxE,CAACF,KAAMmX,sBAAE0y2B,cAAelg4B,MAAO2pwB,EAAerzvB,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GAC9E,CAACF,KAAMmX,sBAAE4y2B,YAAapg4B,MAASgr4B,EAAWls4B,OAAS,EAAKwX,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAI7D,OAAxBkx3B,GAAsD,IAAtBuD,EAAWls4B,QAC9C4r4B,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWrhI,GAAe3vjB,YAAaxsL,sBAAEsxd,MAErFhme,EAAS0U,sBAAE6z2B,+BAAgC,CAAC8J,UAAWxhI,EAAe0jI,cAAerC,EAAWls4B,UAGxE,IAApBsW,EAAMk43B,YAAwBl43B,EAAM413B,WAAWls4B,OAAS,GAA4B,IAAvBsW,EAAM213B,cAAqB,CAC3F,MAAM35zB,EAAW,CAChB9e,QAASl9C,EAAMhY,WAAWmw4B,cAC1BC,aAAcp43B,EAAMhY,WAAWow4B,aAC/BC,cAAer43B,EAAMhY,WAAWqw4B,cAChCC,SAAUt43B,EAAMhY,WAAWsw4B,SAC3BC,WAAYv43B,EAAMhY,WAAWuw4B,SAC7BtF,YAAajz3B,EAAMhY,WAAWir4B,YAC9BC,YAAalz3B,EAAMhY,WAAWkr4B,YAC9BwB,eAAgB103B,EAAMhY,WAAW0s4B,eACjC8D,SAAUx43B,EAAMhY,WAAWww4B,SAC3BC,wBAAyBz43B,EAAMhY,WAAWyw4B,wBAC1CC,gBAAiB143B,EAAMhY,WAAW0w4B,gBAClCC,kBAAmB343B,EAAMhY,WAAW2w4B,kBACpCC,mBAAoB543B,EAAMhY,WAAW4w4B,mBACrCC,YAAa743B,EAAMhY,WAAW6w4B,YAC9BC,cAAe943B,EAAMhY,WAAW8w4B,cAChCC,iBAAkB/43B,EAAMhY,WAAW+w4B,iBACnCf,cAAeh43B,EAAMhY,WAAWgw4B,cAChCrC,aAAc313B,EAAM213B,aACpBqD,mBAAoBh53B,EAAM413B,WAAWls4B,OACrC8mO,aAAcxwN,EAAMwwN,cAErB9sN,EAAS0U,sBAAEwjwB,eAAgB,CAAC9/tB,UAAW1jC,sBAAEy02B,sBAAuB7wzB,aAChE37D,EAAY,CACX,CAACY,KAAM,YAAarW,OAAO,EAAMsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,IAEnE,GCrRY833B,sBAAwBA,CAACj53B,EAAOK,EAAaqD,KACzD,MAAM,iBACLox3B,EAAgB,oBAChBzC,EAAmB,YACnBW,EACAxiqB,aAAciiqB,EACdmD,WAAYsD,EAAkB,YAC9BjG,EACAjr4B,YAAY,eACX0s4B,EAAc,YACdxB,IAEElz3B,EAEEm53B,EAAmB1E,gBAAgBzB,EAAaC,EAAayB,EAAgBI,EAAiBzj3B,aAGpG0l3B,oBAAoB/23B,GAEpB,MACMo53B,EAAgBD,IADM1E,gBAAgBzB,EAAaC,EAAayB,EAAgBI,EAAiBzj3B,aAGjGuk3B,EAAaF,oBAAoB113B,GACvC,IAAIqhd,EAAWoxa,EACXpxa,GAAYu0a,EAAWls4B,SAC1B23d,EAAWu0a,EAAWls4B,OAAS,GAE5Bks4B,EAAWls4B,OAAS,EAGnBup4B,IAAgB762B,sBAAEo42B,oBACrB8E,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWv0a,GAAUz8Q,YAAaxsL,sBAAEsxd,MAGpD,IAAlB+oZ,GAAuBA,IAAkByG,EAAmBxv4B,OAAS,GAAM23d,GAAYu0a,EAAWls4B,OAAS,GACpH23d,EAAWu0a,EAAWls4B,OAAS,EAC/B4r4B,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWv0a,GAAUz8Q,YAAaxsL,sBAAEsxd,QAGrE0vZ,GAIFlG,IAAgB962B,sBAAEu42B,mBAAqB6E,eAAenD,KAAyBuD,EAAWv0a,GAAUz8Q,YAH5G0wrB,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWv0a,GAAUz8Q,YAAaxsL,sBAAEsxd,OAWhFroB,EAAW,EACXi0a,oBAAoBt13B,EAAOK,EAAa,EAAG+X,sBAAEsxd,OAG9Crpe,EAAY,CACX,CAACY,KAAMmX,sBAAE+y2B,WAAYvg4B,MAAOgr4B,EAAY103B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GACxE,CAACF,KAAMmX,sBAAE0y2B,cAAelg4B,MAAOy2d,EAAUngd,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAG1EuC,EAAS0U,sBAAE6z2B,+BAAgC,CAAC8J,UAAW10a,EAAU42a,cAAerC,EAAWls4B,UAU/E2v4B,aAAeA,CAACr53B,EAAOK,EAAaqD,EAAU03B,EAAWlwB,KACrE,MAAM,oBACLmn3B,EAAmB,YACnBW,EAAW,YACXC,EACAjr4B,YAAY,eACX0s4B,EAAc,YACdxB,IAEElz3B,EAEE613B,EAAepB,gBAAgBzB,EAAaC,EAAayB,EAAgBxp3B,GAG/E,GAAIA,EAAekwB,EAAW,CAE7B,GAAIy61B,EAAe3q3B,GAAgB2q3B,EAAez61B,IAE5Cs51B,EAAgB,CACpB,MAAMtC,EAAWC,EAAoB1r2B,cAAcvmB,KAInD,YAHAuy3B,iBAAiBP,EAAUC,EAI5B,CAID,IAAKqC,GAAkB3B,iBAAiBV,EAAqBW,EAAaC,EAAaC,EAAaho3B,GAAc,GAEjH,YADA7K,EAAY,CAACY,KAAM,wBAAyBrW,OAAO,EAAMsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GAK3F,MAAO,GAAI003B,EAAe3q3B,GAAgB2q3B,EAAez61B,IAIlDs51B,EAIJ,YAHA3B,iBAAiBV,EAAqBW,EAAaC,EAAaC,EAAaho3B,GAAc,GAQ9F+t3B,sBAAsBj53B,EAAOK,EAAaqD,GAI1CrD,EAAY,CAACY,KAAMmX,sBAAEgz2B,sBAAuBxg4B,OAAO,EAAOsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KCnIrFm43B,sBAAwBA,CAACl53B,EAAMs23B,EAAiBhC,EAAgB1/3B,EAAO4g4B,KACxElB,GACCt03B,EAAKU,WAAWonB,gBAAkB9nB,EAAKU,WAAWC,cAAc,IAAIqX,sBAAE202B,SAAS2J,yBAC9EA,IAAoBt+2B,sBAAE8nY,KACX,IAAVlrZ,GAEH0qB,WAAW,KACVtf,EAAKU,WAAWC,cAAc,IAAIqX,sBAAE202B,SAAS302B,sBAAE+nY,2BAA2B19Y,SACxE,KAGAzN,IAAU4g4B,EAAWls4B,OAAS,GAEjCg2B,WAAW,KACVtf,EAAKU,WAAWC,cAAc,IAAIqX,sBAAE202B,SAAS302B,sBAAE8nY,0BAA0Bz9Y,SACvE,OAYK823B,aAAeA,CAAC7C,EAAiBt23B,EAAMJ,EAAOK,EAAaqD,EAAU2+pB,KAEjF,MAAM,WACLuzN,EAAU,oBAAE4D,EACZhpqB,aAAciiqB,EACdzq4B,YAAY,eAAC0s4B,EAAc,iBAAE4B,IAC1Bt23B,EACEg8D,EAAW,CAChB1wE,KAA0B,SAApBor4B,EAA6B,WAAa,OAChD+C,SAAQz53B,EAAMhY,WAAW0s4B,gBAAiB,kBAI3C,GAAI8E,EACH,OAED,IAAIn4a,EAAWoxa,EACXiH,GAAmB,EAEnBhD,IAAoBt+2B,sBAAE+nY,OACzBkhE,IACIA,GAAYu0a,EAAWls4B,SACtB4s4B,IAAqB5B,GACxBrza,EAAW,EACXq4a,GAAmB,EACnB19zB,EAASy9zB,QAAS,GAElBp4a,EAAWu0a,EAAWls4B,OAAS,KAIjC23d,IACIA,EAAW,IACVqza,EACHrza,EAAW,GAEXA,EAAWu0a,EAAWls4B,OAAS,EAC/Bgw4B,GAAmB,EACnB19zB,EAASy9zB,QAAS,KAKjBC,EACHpE,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWv0a,GAAU+0a,gBAAiBh+2B,sBAAE812B,iBAAiB,GAEpGoH,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWv0a,GAAUz8Q,aAEjEvkM,EAAY,CACX,CAACY,KAAMmX,sBAAE0y2B,cAAelg4B,MAAOy2d,EAAUngd,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GACzE,CAACF,KAAMmX,sBAAEgz2B,sBAAuBxg4B,OAAO,EAAMsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAG9EuC,EAAS0U,sBAAE6z2B,+BAAgC,CAAC8J,UAAW10a,EAAU42a,cAAerC,EAAWls4B,OAAQ24qB,eACnG3+pB,EAAS0U,sBAAEwjwB,eAAgB,CAAC9/tB,UAAW1jC,sBAAE002B,uBAAwB9wzB,aAEjEs9zB,sBAAsBl53B,EAAMs23B,EAAiBhC,EAAgBrza,EAAUu0a,IAQ3D+D,uBAAyBA,CAACr43B,EAAQtB,EAAOK,EAAaqD,EAAU2+pB,KAC5E,MAAO9gqB,SAAS,oBAACq43B,EAAmB,cAAEC,IAAkBv43B,GAClD,WACLs03B,EAAU,oBAAE4D,GACTx53B,EAMAw53B,IAGJlE,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWgE,GAAqBh1rB,aAE3EvkM,EAAY,CACX,CAACY,KAAMmX,sBAAE0y2B,cAAelg4B,MAAOgv4B,EAAqB143B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GACpF,CAACF,KAAMmX,sBAAEgz2B,sBAAuBxg4B,OAAO,EAAMsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAG9EuC,EAAS0U,sBAAE6z2B,+BAAgC,CAAC8J,UAAW6D,EAAqB3B,cAAerC,EAAWls4B,OAAQ24qB,eAE9G3+pB,EAAS0U,sBAAEwjwB,eAAgB,CAAC9/tB,UAAW1jC,sBAAE002B,uBAAwB9wzB,SAjBhD,CAChB1wE,KAAM,mBAkBHuu4B,GACHn23B,EAAS0U,sBAAEq02B,yBAA0B,CAACoN,oBAS3BC,oBAAsBA,CAACp23B,EAAU1D,EAAOK,KACpD,MAAM,iBACLy03B,EAAgB,WAChBc,EAAU,aAAEplqB,EAAcxoO,YAAY,eAAC0s4B,IACpC103B,EAEsB,IAAtB413B,EAAWls4B,QAUfg2B,WAAW,KAILg12B,GAAoC,IAAjBlkqB,GAAsBA,IAAiBolqB,EAAWls4B,OAAS,GAClF4r4B,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWplqB,GAAc5rB,YAAaxsL,sBAAEsxd,MAOpFrpe,EAAY,CAACY,KAAMmX,sBAAEgz2B,sBAAuBxg4B,OAAO,EAAOsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,IAO1F2z3B,EAAiBjo3B,UAAU0e,OAAOnT,sBAAEy12B,YAClC,MAQSkM,YAAcA,CAACC,EAAYx/P,EAAUy/P,EAAW753B,EAAMJ,EAAOK,EAAaqD,KACtF,MAAM,iBACLox3B,EAAgB,aAAEtkqB,EAAY,WAAEolqB,EAChC5t4B,YAAY,eAAC0s4B,IACV103B,EAEJ,GAAIw6nB,IAAaw/P,IAAeC,EAC/B,OAED,IAAIvD,EAAkBt+2B,sBAAE+nY,MAMxB,GAJIq6O,EAAWw/P,IACdtD,EAAkBt+2B,sBAAE8nY,MAGjBw0e,IAAqC,IAAjBlkqB,GAAsBkmqB,IAAoBt+2B,sBAAE8nY,MAClE1vL,IAAiBolqB,EAAWls4B,OAAS,GAAKgt4B,IAAoBt+2B,sBAAE+nY,OACjE,OAGD20e,EAAiBjo3B,UAAU5V,IAAImhB,sBAAEy12B,WAEjC,MAAMxrN,EAAau0N,cAAcF,GACjC6C,aAAa7C,EAAiBt23B,EAAMJ,EAAOK,EAAaqD,EAAU2+pB,ICnMtD63N,wBAA0BA,CAAC953B,EAAMsD,EAAUrD,KACvD,IAAKD,EACJ,OAAO,KAER,MAcMke,EAAW,IAAIiD,qBAdOhqB,IACvBA,EAAQsgB,KAAKvgB,GAASA,EAAMkqB,kBAC/BnhB,EAAY,KAAM,CACjBY,KAAMmX,sBAAEw52B,gBACRhn4B,OAAO,EACPsW,UAAWkX,sBAAEmtC,IACbpkD,cAAc,KAEfuC,EAAS,KAAM,CACdpY,KAAM8sB,sBAAE+z2B,yBAQX,OAFA7t2B,EAAShN,QAAQlR,GAEVke,GAMK672B,mBAAsB772B,IAC9BA,GACHA,EAASixD,eCJVloE,oBAAmB,gDACnB5H,wBAAuB,oDACvBD,2BAA0B,uDAC1BG,uBAAsB,mDACtBo/B,kCAAiCA,+DAC9Bl/B,aAAAA,YAEEu63B,WAAaA,IAAMnt4B,OAAO8xO,kBAAoB,EAE9Cs7pB,kBAAoBA,CAACh63B,EAAa4y3B,IACnCmH,cACH/53B,EAAY,CACX,CAACY,KAAMmX,sBAAEk42B,cAAe1l4B,MAAOwtB,sBAAEo42B,oBAAqBtv3B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAEhFiX,sBAAEo42B,sBAEVnw3B,EAAY,CACX,CAACY,KAAMmX,sBAAEk42B,cAAe1l4B,MAAOqo4B,EAAa/x3B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAEtE8x3B,GAIKvx3B,2CAAiB,CAC7B,CAAC2F,iDAAsB,CACtB9D,MAAAA,CAAMzN,GAAyD,IAAxD,KAACsK,EAAI,MAAEJ,EAAK,SAAE0D,EAAQ,iBAAEygB,EAAgB,YAAE9jB,GAAYvK,EAC5D,MAAM,iBAACwg4B,EAAgB,gBAAEE,GAAmBx23B,EAAMhY,WAC9Csu4B,IACHny2B,EAAiB,CAChBuw2B,gBAAgB,IAEZ8B,GACJ9y3B,EAAS0U,sBAAEs02B,2BAIb,MAAM4N,EAAqBJ,wBAAwB953B,EAAMsD,EAAUrD,GAI7Dg33B,EAAgB7C,iBAAiBp03B,GAEvCC,EAAY,CACX,CAACY,KAAMmX,sBAAEu52B,oBAAqB/m4B,MAAO0v4B,EAAoBp53B,UAAWkX,sBAAEmtC,IAAKpkD,aAAck23B,GACzF,CAACp23B,KAAMmX,sBAAEw52B,gBAAiBhn4B,MAAOys4B,EAAen23B,UAAWkX,sBAAEmtC,IAAKpkD,aAAck23B,IAElF,GAED,CAAC533B,qDAA0B,CAC1B8D,MAAAA,CAAMlC,GAAiC,IAAhC,MAACrB,EAAK,YAAEK,EAAW,SAAEqD,GAASrC,EACpC,MAAM,iBAACyz3B,EAAgB,cAAE3B,EAAenr4B,YAAY,iBAACuy4B,EAAgB,YAAEtH,IAAgBjz3B,EAEnF803B,GAAsC,IAAlB3B,GAAuBA,IAAkB2B,EAAiBzj3B,cACjFhR,EAAY,CAACY,KAAMmX,sBAAEyy2B,eAAgBjg4B,MAAOkq4B,EAAiBzj3B,YAAanQ,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,IACtGo53B,IACHv63B,EAAMiz3B,YAAcoH,kBAAkBh63B,EAAa4y3B,IAEpDgE,gBAAgBj33B,EAAOK,EAAaqD,IAIf,IAAlByv3B,GAAuBA,IAAkB2B,EAAiBzj3B,aAAgD,IAAjCyj3B,EAAiBzj3B,cACzFkp3B,IACHv63B,EAAMiz3B,YAAcoH,kBAAkBh63B,EAAa4y3B,IAEpD5y3B,EAAY,CAACY,KAAMmX,sBAAEyy2B,eAAgBjg4B,MAAOkq4B,EAAiBzj3B,YAAanQ,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,IAC1Gk43B,aAAar53B,EAAOK,EAAaqD,EAAUyv3B,EAAe2B,EAAiBzj3B,aAG7E,GAED,CAAC7R,wDAA6B,CAC7B+D,MAAAA,CAAM5B,GAA2D,IAA1D,OAACL,EAAM,MAAEtB,EAAK,YAAEK,EAAW,SAAEqD,EAAQ,iBAAEygB,GAAiBxiB,EAC9D,MAAM643B,GAAkB5q4B,EAAAA,qCAAAA,KAAI0R,EAAOC,QAAS6W,sBAAEm11B,OACxC,iBACLunB,EAAgB,oBAAEzC,EAAmB,YAAEW,EACvChr4B,YAAY,uBAACyy4B,EAAsB,eAAE/F,EAAc,YAAExB,EAAW,iBAAEqH,EAAkBtH,YAAayH,EAAe,gBAAElE,IAC/Gx23B,EAEJ,GAAIw63B,IAAoBpi3B,sBAAE0z2B,0BAA2B,CAEpD,MAAMsG,EAAWC,EAAoB1r2B,cAAcvmB,KACnDuy3B,iBAAiBP,EAAUC,GAG3BU,iBAAiBV,EAAqBW,EAAa0H,EAAiBxH,EAAa4B,EAAiBzj3B,YACnG,CAgEA,GA7DImp3B,IAAoBpi3B,sBAAE2y2B,iBAAmByP,IAAoBpi3B,sBAAEk42B,eAC/DkK,IAAoBpi3B,sBAAEy42B,cAAgB2J,IAAoBpi3B,sBAAEq42B,sBAEtC,OAArBqE,GACHA,EAAiBjo3B,UAAU0e,OAAOnT,sBAAEy12B,WAEjC2M,IAAoBpi3B,sBAAE2y2B,iBAAmByP,IAAoBpi3B,sBAAEy42B,cAC9DwB,GAA+D,IAAxCmD,eAAenD,KACzCA,EAAoBrn3B,MAAM07Q,WAAatuQ,sBAAEsxd,KACzC2oZ,EAAoBrn3B,MAAMma,UAAY,kBAGvC9kB,EAAY,CACXmwN,aAAc,EACdgpqB,qBAAqB,MAGlBe,EACHF,kBAAkBh63B,EAAaq63B,GAE/Br63B,EAAY,CACX,CAACY,KAAM,cAAerW,MAAO8v4B,EAAiBx53B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAGhFd,EAAY,CACXm53B,qBAAqB,KAInBgB,IAAoBpi3B,sBAAE2y2B,iBAAoB2J,GAC7CvC,eAAeE,EAAoB1r2B,cAAcvmB,KAAMiy3B,GAExD4E,gBAAgBj33B,EAAOK,EAAaqD,EAAW823B,IAAoBpi3B,sBAAE2y2B,kBAAoB2J,IAGtF8F,IAAoBpi3B,sBAAEwz2B,oBACrBtq3B,EAAOC,QAAQ3W,OAClBu5B,EAAiB,CAChBuw2B,gBAAgB,IAKhBhx3B,EAHI8y3B,EAGKp+2B,sBAAEu02B,wBAFFv02B,sBAAEs02B,4BAIZvo2B,EAAiB,CAChBuw2B,gBAAgB,IAEjBhx3B,EAAS0U,sBAAEu02B,2BAKT6N,IAAoBpi3B,sBAAEyz2B,mBACpBvq3B,EAAOC,QAAQ3W,MAGnB8Y,EAAS0U,sBAAEu02B,yBAFXjp3B,EAAS0U,sBAAEs02B,2BAMT8N,IAAoBpi3B,sBAAEoz2B,gBAAkBiP,EAAwB,CACnE,MAAMp5a,EAAW//c,EAAOC,QAAQ3W,OAC1B,WAACgr4B,EAAU,oBAAE4D,GAAuBx53B,GACrCw53B,GAAuB5D,EAAWls4B,OAAS,GAAK23d,GAAY,GAAKA,EAAWu0a,EAAWls4B,SAC3F4r4B,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWv0a,GAAUz8Q,YAAaxsL,sBAAEsxd,MAC/Erpe,EAAY,CACX,CAACY,KAAMmX,sBAAE0y2B,cAAelg4B,MAAOy2d,EAAUngd,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GACzE,CAACF,KAAMmX,sBAAEgz2B,sBAAuBxg4B,OAAO,EAAOsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAGjF,CACD,GAED,CAACiX,sBAAEg02B,eAAgB,CAClB572B,iBAAiB,EACjBjN,MAAAA,CAAM1B,GAA+C,IAA9C,OAACP,EAAM,MAAEtB,EAAK,KAAEI,EAAI,YAAEC,EAAW,SAAEqD,GAAS7B,EAClD,MAAON,SAAS,gBAACm13B,IAAoBp13B,EACrCi43B,aAAa7C,EAAiBt23B,EAAMJ,EAAOK,EAAaqD,EACzD,GAED,CAAC0U,sBAAEqzoB,2BAA4B,CAC9BlopB,MAAAA,CAAMrB,GAAiE,IAAhE,OAACZ,EAAM,MAAEtB,EAAK,KAAEI,EAAI,YAAEC,EAAW,SAAEqD,EAAQ,iBAAEygB,GAAiBjiB,EACpE,MAAM,aAACsuN,EAAY,WAAEolqB,GAAc513B,GAC7B,gBAACw23B,GAAmBx23B,EAAMhY,YACzBuZ,SAAS,iBAACuz3B,EAAgB,gBAAE4B,EAAe,iBAAEiE,IAAqBr53B,EAEzE,GAAIq53B,IAAqBvi3B,sBAAE032B,OAAS6K,IAAqBvi3B,sBAAE232B,KAM1D,OALA5r2B,EAAiB,CAChBqy2B,iBAAkBA,IAEnB9y3B,EAAS0U,sBAAEw02B,0BAA2B,CAACtisB,UAAWkssB,EAAiBT,UAAWvlqB,EAAcynqB,cAAerC,EAAWls4B,cACtH4X,EAAOkP,kBAIR,MAAM6xpB,EAAau0N,cAAcF,GAG7B5B,GAAoB4B,IAEvB5B,EAAiBjo3B,UAAU5V,IAAImhB,sBAAEy12B,WACjC0L,aAAa7C,EAAiBt23B,EAAMJ,EAAOK,EAAaqD,EAAU2+pB,GAClE/gqB,EAAOkP,kBAET,GAED,CAAC4H,sBAAE2z2B,0BAA2B,CAC7Bv72B,iBAAiB,EACjBjN,MAAAA,CAAMpB,GAAyC,IAAxC,OAACb,EAAM,MAAEtB,EAAK,YAAEK,EAAW,SAAEqD,GAASvB,EAC5C,MAAMkgqB,EAAau0N,cAAcx+2B,sBAAE6y2B,WACnC0O,uBAAuBr43B,EAAQtB,EAAOK,EAAaqD,EAAU2+pB,EAC9D,GAED,CAACjqpB,sBAAEk02B,uBAAwB,CAC1B972B,iBAAiB,EACjBjN,MAAAA,CAAMuP,GAAiC,IAAhC,SAACpP,EAAQ,MAAE1D,EAAK,YAAEK,GAAYyS,EACpCgn3B,oBAAoBp23B,EAAU1D,EAAOK,EACtC,GAED,CAAC+X,sBAAE8z2B,+BAAgC,CAClC172B,iBAAiB,EACjBjN,MAAAA,CAAMk6B,GAAiC,IAAhC,SAAC/5B,EAAQ,MAAE1D,EAAK,YAAEK,GAAYo9B,EACpCw71B,sBAAsBj53B,EAAOK,EAAaqD,EAC3C,GAED,CAAC0U,sBAAE+z2B,oBAAqB,CACvB372B,iBAAiB,EACjBjN,MAAAA,CAAMm6B,GAAiC,IAAhC,SAACh6B,EAAQ,MAAE1D,EAAK,YAAEK,GAAYq9B,EACpCu51B,gBAAgBj33B,EAAOK,EAAaqD,EACrC,GAED,CAAC0U,sBAAEi02B,kBAAmB,CACrB772B,iBAAiB,EACjBjN,MAAAA,CAAMw6B,GAA+C,IAA9C,OAACz8B,EAAM,MAAEtB,EAAK,KAAEI,EAAI,YAAEC,EAAW,SAAEqD,GAASq6B,EAClD,MAAM,WAACi81B,EAAU,UAAEC,GAAaj63B,GACzBuB,SAAS,SAACi5nB,IAAal5nB,EAC9By43B,YAAYC,EAAYx/P,EAAUy/P,EAAW753B,EAAMJ,EAAOK,EAAaqD,GACvErD,EAAY,CAACY,KAAM,YAAarW,OAAO,EAAOsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GAC/E,GAED,CAACiX,sBAAEm02B,0BAA2B,CAC7B/72B,iBAAiB,EACjBjN,MAAAA,CAAM6+B,GAAoD,IAAlD,MAACpiC,EAAK,iBAAEmkB,EAAgB,YAAE9jB,EAAW,SAAEqD,GAAS0+B,EACvD011B,gBAAgB933B,EAAOmkB,EAAkB9jB,EAAaqD,EACvD,GAED,CAAC0U,sBAAEozoB,yBAA0B,CAC5BjopB,MAAAA,CAAM++B,GAAqB,IAApB,OAAChhC,EAAM,SAAEoC,GAAS4+B,EACxB,MAAM05B,EAAW,CAChB1wE,KAAM,eAGP,GAAIgW,EAAOhB,KAAKg9B,SAAU,CACzB,MAAM,UAACy5C,GAAaz1E,EAAOhB,KAAKg9B,SAC5By5C,IAAc3+D,sBAAEmz2B,cACnBjq3B,EAAOkP,kBACP9M,EAAS0U,sBAAE4z2B,qBACXto3B,EAAS0U,sBAAEwjwB,eAAgB,CAAC9/tB,UAAW1jC,sBAAE002B,uBAAwB9wzB,aAEnE,CACD,GAED,CAAC5jD,sBAAEwjwB,gBAAgB,CAClBprwB,iBAAiB,EACjBjN,MAAAA,CAAO+L,GACN,MACChO,QACCC,SAAS,SAACy6D,EAAQ,UAAElgB,KAElBxsC,GACJ69Q,EAAAA,eAAAA,IAAM79Q,EAAWwsC,EAAWkgB,EAC7B,GAED,CAAC5jD,sBAAEq02B,0BAA0B,CAC5Bj82B,iBAAiB,EACjBjN,MAAAA,CAAO+L,GACN,MACChO,QACCC,SAAS,cAACs43B,KAERvq3B,EACJuq3B,EAAcp33B,OACf,GAED,CAAC2V,sBAAEo02B,sBAAsB,CACxBh82B,iBAAiB,EACjBjN,MAAAA,CAAO+L,GACN,MACChO,QACCC,SAAS,KAACwD,EAAI,IAAEyhE,IAChB,MACDxmE,EAAK,YAAEK,EAAW,SAAEqD,GACjB4L,GACE,WAACsm3B,EAAU,iBAAEd,EAAgB,aAAEtkqB,GACjCxwN,EACE+03B,EAAmBJ,oBAAoB303B,EAAO413B,EAAWplqB,GAAc5rB,WAAW,GACxF,IAAIg2rB,EAAe,EACnB,KAAOA,EAAehF,EAAWls4B,OAAS,GAAKks4B,EAAWgF,EAAe,GAAGx92B,SAAWopD,GACtFo0zB,GAAgB,EAEZ7F,EAAiB773B,SAAS6L,KAC9B+v3B,EAAiBjo3B,UAAU5V,IAAImhB,sBAAEy12B,WAEjCyH,oBAAoBt13B,EAAOK,EAAa,GAAGu13B,EAAWgF,GAAch2rB,aAEpEvkM,EAAY,CACX,CAACY,KAAMmX,sBAAE0y2B,cAAelg4B,MAAOgw4B,EAAc153B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,GAC7E,CAACF,KAAMmX,sBAAEgz2B,sBAAuBxg4B,OAAO,EAAMsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAE9EuC,EAAS0U,sBAAE6z2B,+BAAgC,CAAC8J,UAAW6E,EAAc3C,cAAerC,EAAWls4B,SAC/Fga,EAAS0U,sBAAEwjwB,eAAgB,CAAC9/tB,UAAW1jC,sBAAE002B,uBAAwB9wzB,SAAU,CAAC1wE,KAAM,eAEpF,GAED,CAAC8sB,sBAAEs02B,0BAA2B,CAC7Bl82B,iBAAiB,EACjBjN,MAAAA,CAAMg/B,GAAiC,IAAhC,SAAC7+B,EAAQ,MAAE1D,EAAK,YAAEK,GAAYkiC,EACpC8z1B,gBAAgBr23B,EAAOK,EAAaqD,EACrC,GAED,CAAC0U,sBAAE6z2B,gCAAiC,CACnC1o3B,MAAAA,CAAMi/B,GAA4B,IAA3B,SAAC9+B,EAAQ,MAAE1D,EAAK,OAAEsB,GAAOkhC,EAE3BlhC,EAAOC,QAAQ8gqB,YAClB3+pB,EAASq7B,8DAAmC,CAC3CxqC,QAASyL,EAAMiz3B,cAAgB762B,sBAAEo42B,qBACjC5i3B,EAAAA,iBAAAA,GAAE,qCAAsCtM,EAAOC,QAAQw03B,UAAY,EAAGz03B,EAAOC,QAAQ023B,gBACrFrq3B,EAAAA,iBAAAA,GAAE,kDAAmDtM,EAAOC,QAAQw03B,UAAY,EAAGz03B,EAAOC,QAAQ023B,eAClG3s4B,KAAM,UAGT,GAGD,CAAC8sB,sBAAEu02B,yBAA0B,CAC5Bn82B,iBAAiB,EACjBjN,MAAAA,CAAMk/B,GAAuB,IAAtB,MAACziC,EAAK,YAAEK,GAAYoiC,EAC1Bk01B,eAAe323B,EAAOK,EACvB,GAED,CAACV,oDAAyB,CACzB4D,MAAAA,CAAMm/B,GAAU,IAAT,MAAC1iC,GAAM0iC,EACb,MAAM,mBAAC431B,GAAsBt63B,EAC7Bm63B,mBAAmBG,EACpB,IC3WW943B,8BAAe,CAC3B213B,uBAAuB,EACvBrC,iBAAkB,KAClB3B,cAAe,EACfd,oBAAqB,KACrBsD,aAAc,EACd3C,YAAa,GACbxiqB,aAAc,EACd0nqB,WAAW,EACX58yB,aAAc,KACds6yB,WAAY,GACZwB,YAAY,EACZoC,qBAAqB,EACrBzB,YAAY,EACZiC,WAAY,EACZvD,qBAAsBr+2B,sBAAEs52B,gCACxB2F,eAAe,EACfwD,mBAAmB,EACnBP,mBAAoB,M,yFCjBd,MAAMQ,cAAgBA,CAAC963B,EAAO0D,KACpC,MAAM,WACLky3B,EAAU,aAAEplqB,EAAY,iBAAEskqB,EAAgB,YAAE7B,EAC5Cjr4B,YAAY,iBAAC+w4B,IACV/43B,EAEE+63B,EAAoBA,CAACv0zB,EAAKgqJ,EAAcqpqB,KACzCrzzB,IAAQgqJ,IAEXskqB,EAAiBjo3B,UAAU5V,IAAImhB,sBAAEy12B,WACjCnq3B,EAAS0U,sBAAE2z2B,yBAA0B,CAAC6N,oBAAqBpzzB,EAAKqzzB,oBAKlE,GAAId,EACH,MAAO,GAGR,GAAInD,EAAWls4B,QAAU,GAAKks4B,EAAWls4B,OAAS,GACjD,MAAO,GAER,MAAMsxB,EAAQ,GACd,IAAK,IAAIwrD,EAAM,EAAGA,EAAMovzB,EAAWls4B,SAAU88E,EAAK,CACjD,MAAMw0zB,EAAc,GAAG5i3B,sBAAE6y2B,YAAYzkzB,EAAM,IACrC9tC,EAAQu61B,IAAgB762B,sBAAEo42B,qBAC/B5i3B,EAAAA,iBAAAA,GAAE,kCAAmC44D,EAAM,EAAGovzB,EAAWls4B,SACzDkkB,EAAAA,iBAAAA,GAAE,+CAAgD44D,EAAM,EAAGovzB,EAAWls4B,QACvEsxB,EAAM5rB,MACLsZ,EAAAA,kCAAAA,eAAA,OAAK7b,IAAKmu4B,EAAap13B,GAAIo13B,IAC1Bty3B,EAAAA,kCAAAA,eAAA,UACCkhB,UAAW48C,IAAQgqJ,EAAep4M,sBAAEoznB,SAAW,GAC/C,aAAY9ymB,EACZ,eAAc8tC,IAAQgqJ,EAAe,OAAS,QAC9CtzK,MAAOxkB,EACP,WAAUyO,KACT4z1B,EAAkBv0zB,EAAKgqJ,IAExB,aAAY/8N,IACX,GAAIA,EAAM5G,MAAQurB,sBAAE0znB,UACnBivP,EAAkBv0zB,EAAKgqJ,QACnB,GAAI/8N,EAAM5G,MAAQurB,sBAAEsorB,YAAcjtsB,EAAM5G,MAAQurB,sBAAEoorB,YAAa,CACnE,MAAMy6L,EAASxn4B,EAAMC,OAAOu0B,cAAcA,cACpCiz2B,GAAW1qqB,GAAgB/8N,EAAM5G,MAAQurB,sBAAEoorB,YAAc,GAAK,GAAKo1L,EAAWls4B,QAAUks4B,EAAWls4B,OACnGmw4B,EAAgBoB,EAAOl63B,cAAc,IAAIqX,sBAAE6y2B,YAAYiQ,EAAU,cACvEH,EAAkBG,EAAS1qqB,EAAcqpqB,EAC1C,MAKL,CAEA,OAAOnx3B,EAAAA,kCAAAA,eAAA,OAAK,cAAYkF,EAAAA,iBAAAA,GAAE,oBAAqBoN,ICtD1Cmg3B,qBAAuBA,CAACn73B,EAAOo73B,KACpC,MAAM,aAAC5qqB,EAAY,WAAEolqB,EAAY5t4B,YAAY,eAAC0s4B,EAAc,YAAEmE,IAAgB743B,EAG9E,IAAK003B,EACJ,OAAOt82B,sBAAE012B,KAEV,IAAIuN,GAAY,EAMhB,OAJCA,EADGD,IAAchj3B,sBAAE8nY,KACW,IAAjB1vL,EAEAA,IAAiBolqB,EAAWls4B,OAAS,EAE9C2x4B,EAGDxC,IAAgBzg3B,sBAAE+32B,OACd/32B,sBAAEs12B,KAEHt12B,sBAAE80tB,SALD90tB,sBAAE012B,MAQEwN,sBAAwBt73B,IACpC,MAAM,aAAC213B,EAAY,WAAEC,EAAU,iBAAEd,EAAkB9s4B,YAAY,YAAC6w4B,EAAW,gBAAE0C,EAAe,SAAE/C,EAAQ,gBAAEE,EAAe,wBAAED,EAAuB,kBAAEE,EAAiB,mBAAEC,IAAuB543B,EAG5L,GAAqB,IAAjB213B,GAAsBC,EAAWls4B,QAAU,EAC9C,MAAO,GAER,MAAM8x4B,EAAmBL,qBAAqBn73B,EAAOoY,sBAAE8nY,MACjDu7e,EAAoBN,qBAAqBn73B,EAAOoY,sBAAE+nY,OAExD,IAAIu7e,EAAiB,CACpB5r4B,KAAM,KACN+oC,KAAM,OACNJ,QAAS,UACTyS,YAAa,OACbthB,UAAU,cAYX,OATI6u2B,IACHiD,EAAczl4B,kBAAA,GAAOyl4B,EAAmBhD,GAEpCG,EAAY3/3B,SAAS,YACxBwi4B,EAAexw1B,YAAc,UAM9BxiC,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAW,GAAGxR,sBAAE402B,UAAU6L,MAC9Bnw3B,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAW,GAAGxR,sBAAE202B,SAAS302B,sBAAE8nY,QAAQ24e,KAAe0C,EAAkB,UAAY,iBAAiBC,MACtG9y3B,EAAAA,kCAAAA,eAAA,oBAAAzS,kBAAA,GACKyl4B,EAAc,CAClBtj2B,KAAMqg2B,EAA0BE,EAAoB,GAAGvg3B,sBAAEk32B,mBAAmBkJ,IAC5E1v1B,eAAgB1wB,sBAAEo32B,SAClBvv3B,SAAUu73B,IAAqBpj3B,sBAAE80tB,SACjC50sB,WAAY,CACXK,OAAM1iC,kBAAA,CACL,aAAcmiB,sBAAEo32B,UACZgM,IAAqBpj3B,sBAAE80tB,UAAY,CAAC,gBAAiB,UAG3D,oBAAmB,CAClBwpJ,gBAAiBt+2B,sBAAE8nY,KACnB40e,yBAIHps3B,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAW,GAAGxR,sBAAE202B,SAAS302B,sBAAE+nY,SAAS04e,KAAe4C,MACxD/y3B,EAAAA,kCAAAA,eAAA,oBAAAzS,kBAAA,GACKyl4B,EAAc,CAClBtj2B,KAAMqg2B,EAA0BG,EAAqB,GAAGxg3B,sBAAEq32B,oBAAoB+I,IAC9E1v1B,eAAgB1wB,sBAAEm32B,QAClBtv3B,SAAUw73B,IAAsBrj3B,sBAAE80tB,SAClC50sB,WAAY,CACXK,OAAM1iC,kBAAA,CACL,aAAcmiB,sBAAEm32B,SACZkM,IAAsBrj3B,sBAAE80tB,UAAY,CAAC,gBAAiB,UAG5D,oBAAmB,CAClBwpJ,gBAAiBt+2B,sBAAE+nY,MACnB20e,0BCvEA6G,UAAY373B,IACjB,MAAOhY,YAAY,UAAC4z4B,EAAS,cAAEzD,IAAkBn43B,EACjD,QAAS473B,GAA6C,IAAhCzD,EAAc5h3B,OAAO7sB,SAGtCmy4B,aAAe773B,IACpB,MAAOhY,YAAY,cAACmw4B,EAAa,oBAAE2D,EAAmB,WAAEC,EAAU,cAAE1D,EAAa,aAAED,EAAY,YAAE4D,IAAgBh83B,EAEjH,IAAK273B,UAAU373B,GACd,OAAQ0I,EAAAA,kCAAAA,eAAA,OAAK9C,GAAIwS,sBAAE412B,cAAepk2B,UAAWxR,sBAAE412B,gBAEhD,MAAMiO,EAAQD,EAAYtj2B,OAAQhwB,EAAAA,kCAAAA,eAAA,yBAAuB9C,GAAIwS,sBAAE612B,MAAOrk2B,UAAWxR,sBAAE612B,MAAOv11B,MAAOsj2B,EAAYtj2B,MAAO0lC,MAAO49zB,EAAY59zB,MAAO3lC,QAASuj2B,EAAYvj2B,UAAa,KAEhL,OACC/vB,EAAAA,kCAAAA,eAAA,OAAK9C,GAAIwS,sBAAE412B,cAAepk2B,UAAW,GAAGxR,sBAAE412B,iBAAiBqK,MAC1D3v3B,EAAAA,kCAAAA,eAAA,eAAakhB,UAAWxR,sBAAEuz2B,MAAOjz1B,MAAOy/1B,EAAe950B,MAAO090B,EAAYtj2B,QAAS2/1B,EAAc750B,SAAUu90B,EAAqBx90B,aAAa,IAC5I290B,IAKEC,eAAiBl83B,IACtB,MAAOhY,YAAY,SAACsw4B,EAAQ,SAAE6D,EAAQ,SAAE5D,IAAav43B,EACrD,QAASs43B,IAAc6D,IAAa5D,IAG/B6D,kBAAoBp83B,IACzB,MAAOhY,YAAY,SAACm04B,EAAQ,SAAE5D,IAAav43B,EAE3C,OAAKk83B,eAAel83B,IAInB0I,EAAAA,kCAAAA,eAAA,QAAMkhB,UAAW,GAAGxR,sBAAEq12B,gBACrB/k3B,EAAAA,kCAAAA,eAAA,mBACCgwB,MAAOyj2B,GAAWvu3B,EAAAA,iBAAAA,GAAEuu3B,GAAY,GAChC,WAAU5D,GAAY,GACtB9/1B,QAASrgB,sBAAE622B,UACXn/3B,KAAMsoB,sBAAE85C,OACRtoC,UAAWxR,sBAAEuy2B,OACbz/0B,aAAa,EACb5S,WAAY,CAACK,OAAQ,CAAC,uBAAwB,SAC9C,iBAAgB,CAACo+C,UAAW3+D,sBAAEmz2B,gBAZzB,IAkBH8Q,cAAgBr83B,IACrB,MAAOhY,YAAY,cAACqw4B,IAAkBr43B,EACtC,OAAK273B,UAAU373B,IAAWk83B,eAAel83B,IAIxC0I,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAW,GAAGxR,sBAAE+02B,4BAA4BkL,KAC/CwD,aAAa773B,GACbo83B,kBAAkBp83B,KALb0I,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAWxR,sBAAEg12B,0BAUrB1mB,cAAgBA,CAAC1m2B,EAAO0D,KAC7B,MAAM,aAACiy3B,EAAY,WAAEC,EAAY5t4B,YAAY,YAAC6w4B,IAAgB743B,EAC9D,IAAIs83B,EAAmB,GAAGlk3B,sBAAE+y2B,cAAc0N,IAI1C,OAHIA,IAAgBzg3B,sBAAE+32B,QAAWwF,EAAe,GAAKC,EAAWls4B,OAAS,IACxE4y4B,GAAoB,IAAIlk3B,sBAAE212B,gBAG1Brl3B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAWxR,sBAAE802B,kBACjBxk3B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAW0y2B,GAAmBxB,cAAc963B,EAAO0D,MAKrD643B,kBAAoBv83B,IACzB,MAAM,gBACLw83B,EAAe,kBACfC,EAAiB,uBACjBC,EAAsB,WACtBX,GACG/73B,EAAMhY,WAGJo92B,EAAgB22B,IAAe3j3B,sBAAE+42B,cAAgBpm3B,SAASgx3B,GAAchx3B,SAASgx3B,GAAc,EACrG,OACCrz3B,EAAAA,kCAAAA,eAAA,oCACCkhB,UAAWxR,sBAAEm12B,YACbjvzB,QAAS,CAAC5lC,MAAO8j2B,EAAiBn+0B,MAAO+mzB,GACzCho1B,QAASq/2B,EACT7h0B,UAAWxiD,sBAAEu9pB,WACb/xnB,aAAc840B,KAKXnu3B,sBAAOA,CAACvO,EAAKlK,KAGb,IAHe,SACpB4N,EAAQ,YACRrD,GACAvK,EACA,MAAM,oBACLu83B,EAAmB,aACnBsD,EAAY,aACZnlqB,EAAY,WACZolqB,EAAU,kBACViF,EACA7y4B,YAAY,eACX0s4B,EAAc,cACdoE,EAAa,SACbN,EAAQ,wBACRC,EAAuB,iBACvBnC,EAAgB,gBAChBiF,EAAe,gBACf/E,IAEEx23B,EAEJ,IAAIuvL,GAAamlsB,EACjB,GAA4B,OAAxBrC,GAAgCsD,EAAe,EAAG,CACrDpmsB,EAAa8isB,EAAoBpq3B,gBAAgBzB,OAAOzB,IAAI,IAAAsu3B,EAAA,MAA4B,UAAd,QAAVA,EAAAtu3B,EAAKiG,aAAK,IAAAqo3B,OAAA,EAAVA,EAAYjs2B,WAAoB19B,OAASis4B,EACzG,MAAMG,EAAqBhC,uBAAuBzB,EAAoBpq3B,iBAChE003B,EAAmB1I,qBAAqB5B,EAAoBpq3B,iBAC5D203B,EAAyBvK,EAAoBpq3B,gBAAgBve,OAEnE2o4B,EAAoBpq3B,gBAAgBrH,QAAQ,CAACmE,EAAK/P,KAEjD,KAAqB,QAAjB+P,EAAKK,SAAmD,OAA9BL,EAAKP,aAAa,SAI3Csx3B,EAAmBj+2B,KAAKo6F,GAAaA,EAAUztG,aAAa,QAAUO,EAAKP,aAAa,QACxFm43B,EAAiB9k3B,KAAKo6F,GAAaA,EAAUztG,aAAa,QAAUO,EAAKP,aAAa,QAAQ,CAElG,IAAIwx3B,EAEHA,EADoC,SAAjCjx3B,EAAKP,aAAa,WACCo43B,EAAyBD,EAAiBjz4B,OAASos4B,EAAmBps4B,OAEtEsL,EAAQ,EAAI8g4B,EAAmBps4B,OAEtD,MAAMmz4B,EAAwB933B,EAAKP,aAAa,cAC1Cs43B,GAAwBlv3B,EAAAA,iBAAAA,GAAE,iBAAiBoo3B,QAA0BL,KAG7C,OAA1BkH,EACH933B,EAAKH,aAAa,aAAck43B,GAEvBD,EAAsB3j4B,SAAS4j4B,IACxC/33B,EAAKH,aAAa,aAAc,GAAGi43B,MAA0BC,IAC/D,GAEF,CAEA,MAAMC,EAAqBxtsB,GAAcihC,EAAe,EAAMsoqB,EAAgB1g3B,sBAAEsxd,KAC1EszZ,EAAsBztsB,GAAcihC,EAAeolqB,EAAWls4B,OAAS,EAAMov4B,EAAgB1g3B,sBAAEsxd,KAC/FuzZ,GAAWrv3B,EAAAA,iBAAAA,GAAE,wBAAyB+n3B,GAEtCuH,EAAiBvB,UAAU373B,GAASoY,sBAAE412B,cAAgB,GAE5D,OACCtl3B,EAAAA,kCAAAA,eAAC41B,kCAAAA,SAAQ,MACR51B,EAAAA,kCAAAA,eAAA,WAASkhB,UAAWxR,sBAAEk12B,iBAAkB,aAAYl12B,sBAAE602B,eACrD,uBAAsBgQ,EAAU,kBAAiBC,GAChDb,cAAcr83B,GACb663B,GAAsC,IAAjBlF,EAAsB4G,kBAAkBv83B,GAAS,IACxE0I,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAWxR,sBAAEi12B,eACjBxu1B,IAAKi21B,IACJz03B,EACC,CAACY,KAAMmX,sBAAEwy2B,mBAAoBhg4B,MAAOkq4B,EAAkB5z3B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAGxF,gBAAejZ,IACdmY,EACC,CAACY,KAAM,aAAcrW,MAAO1C,EAAEu1G,eAAe,GAAGzwF,QAAS9L,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAE3F,cAAajZ,IACZwb,EAAS0U,sBAAEi02B,iBAAkB,CAAC7xP,SAAUtyoB,EAAEu1G,eAAe,GAAGzwF,WAE7D,eAAcmw3B,KACb983B,EACC,CAACY,KAAM,YAAarW,OAAO,EAAMsW,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,OAGnEuH,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAW,GAAGxR,sBAAEo12B,YAAYp12B,sBAAE8nY,QAAQ68e,OAC3Cr03B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAW,GAAGxR,sBAAEo12B,YAAYp12B,sBAAE+nY,SAAS68e,MAC3C1G,GAAmB5t3B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAW,sBAAqB2x2B,EAAkB,UAAY,iBACtF7y3B,EAAAA,kCAAAA,eAAA,qBACC0vB,KAAM,GAAIo+1B,EAAiCp+2B,sBAAEy32B,UAAjBz32B,sBAAEw32B,cAA4B6I,EAA0B,OAASD,IAC7F//1B,QAAQ,UACRI,MAAM,EACN/oC,KAAK,KACL,gBAAc,EACd,cAAa,CAAC6oC,OAAQ,CAAC,aAAe691B,EAAkCp+2B,sBAAEu32B,WAAlBv32B,sBAAEs32B,cAC1D,kBAAkB8G,EAAkCp+2B,sBAAEu32B,WAAlBv32B,sBAAEs32B,YACtC,oBAAmB,CAClBiL,iBAAmBnE,EAA4Bp+2B,sBAAE232B,KAAZ332B,sBAAE032B,UAGjC,GACRwL,sBAAsBt73B,EAAO0D,IAC9BgF,EAAAA,kCAAAA,eAAA,QAAMvgB,KAAMiwB,sBAAEkz2B,QAAS1h2B,UAAU,oBAChCiV,IAAKwz1B,IACJhy3B,EACC,CAACY,KAAMmX,sBAAEqz2B,sBAAuB7g4B,MAAOyn4B,EAAqBnx3B,UAAWkX,sBAAEmtC,IAAKpkD,cAAc,KAE9F,gBAAe4sE,KACdrqE,EAAS0U,sBAAE+z2B,qBAEZ,mBAAkBiR,KACjB153B,EAAS0U,sBAAEk02B,2BAMb5lB,cAAc1m2B,EAAO0D,MAM1B,uCClMA,aAAeoK,EAAAA,aAAAA,qBAAoB,cAAe,CACjD9lB,WAAY,CAQX4z4B,UAAW,CACV3t3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UAQVsrB,cAAe,CACdlq3B,QAAS,QACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,SAQVmuB,YAAa,CACZ/t3B,QAAS,CAACyqB,MAAO,GAAI0lC,MAAO,MAAO3lC,QAAS,YAC5CtqB,OAAQ,CACP7iB,KAAM8sB,sBAAE1sB,OAQVow4B,oBAAqB,CACpB7t3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UASVkvB,WAAY,CACX9t3B,QAASmK,sBAAE242B,cACX5i3B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,OACRz/1B,KAAM,CAACgK,sBAAE042B,cACR142B,sBAAE242B,cACF342B,sBAAE442B,cACF542B,sBAAE642B,cACF742B,sBAAE842B,cACF942B,sBAAE+42B,iBAULiH,aAAc,CACbnq3B,QAASmK,sBAAEk52B,gBACXnj3B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,OACRz/1B,KAAM,CAACgK,sBAAEg52B,eACRh52B,sBAAEi52B,iBACFj52B,sBAAEk52B,gBACFl52B,sBAAEm52B,cACFn52B,sBAAEo52B,gBACFp52B,sBAAEq52B,kBAYL4G,cAAe,CACdpq3B,QAASmK,sBAAE8nY,KACX/xY,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,OACRz/1B,KAAM,CAACgK,sBAAE8nY,KAAM9nY,sBAAE+nY,SAUnBm4e,SAAU,CACTrq3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UAQV0rB,SAAU,CACTtq3B,QAAS,GACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,SAQVsuB,SAAU,CACTlu3B,QAAS,GACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,SAQV2uB,gBAAiB,CAChBvu3B,QAASmK,sBAAE022B,kBACX3g3B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,SAQV4uB,kBAAmB,CAClBxu3B,QAASmK,sBAAEkv2B,oBACXn52B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,SAQV6uB,uBAAwB,CACvBzu3B,QAAQmK,sBAAEi22B,gBACVlg3B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,OACRz/1B,KAAM,CACLgK,sBAAE+12B,eACF/12B,sBAAEg22B,SACFh22B,sBAAEi22B,gBACFj22B,sBAAE68nB,MACF78nB,sBAAEk22B,gBACFl22B,sBAAEm22B,YACFn22B,sBAAEo22B,cACFp22B,sBAAEq22B,QACFr22B,sBAAEs22B,kBACFt22B,sBAAEu22B,QACFv22B,sBAAEw22B,YACFx22B,sBAAEy22B,gBASLoE,YAAa,CACZhl3B,QAASmK,sBAAEm42B,uBACXpi3B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,OACRz/1B,KAAM,CAACgK,sBAAEm42B,uBAAwBn42B,sBAAEo42B,uBAQrC0C,YAAa,CACZjl3B,QAASmK,sBAAEw42B,YACXzi3B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,OACRz/1B,KAAM,CAACgK,sBAAEu42B,kBAAmBv42B,sBAAEw42B,eAUhC8D,eAAgB,CACfzm3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UAYVgsB,YAAa,CACZ5q3B,QAASmK,sBAAE+32B,OACXhi3B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,OACRz/1B,KAAM,CAACgK,sBAAE+32B,OAAQ/32B,sBAAE432B,YAAa532B,sBAAE632B,aAAc732B,sBAAE832B,gBAQpD4I,cAAe,CACd7q3B,QAASmK,sBAAE422B,QACX7g3B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,OACRz/1B,KAAM,CAACgK,sBAAE422B,QAAS522B,sBAAE622B,UAAW722B,sBAAE822B,SAAU922B,sBAAE222B,KAAM322B,sBAAEsxd,QASvD8uZ,SAAU,CACTvq3B,QAASmK,sBAAEg42B,KACXji3B,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,OACRz/1B,KAAM,CAACgK,sBAAEg42B,KAAMh42B,sBAAEi42B,WAQnBoI,wBAAyB,CACxBxq3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UAQV6rB,gBAAiB,CAChBzq3B,QAAS,CACR4qB,MAAM,EACNqS,aAAa,EACbp7C,KAAM,MAEPqe,OAAQ,CAAC7iB,KAAM,WAOhBqt4B,kBAAmB,CAClB1q3B,QAAS,4BACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,SAQV+qB,mBAAoB,CACnB3q3B,QAAS,0BACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,SAUVkrB,iBAAkB,CACjB9q3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UAQVmrB,cAAe,CACd/p3B,QAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEs42B,UAQV+J,uBAAwB,CACvBxs3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UASV0tB,iBAAkB,CACjBts3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UASVypB,iBAAkB,CACjBro3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UASV0uB,gBAAiB,CAChBtt3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,UASVwwB,wBAAyB,CACxBpv3B,QAAS,GACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy11B,SAQV0oB,gBAAiB,CAChBto3B,QAAS,IACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEs42B,UASV8F,gBAAiB,CAChBvo3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM8sB,sBAAEy01B,WAIXx+1B,eAAAA,CAAevY,GAAe,IAAd,WAAC9N,GAAW8N,EAC3B,OAAAG,kBAAA,GACIuL,8BAAY,CACfyx3B,YAAajr4B,EAAWir4B,aAE1B,EACAvx3B,eAAc,2CACdqM,SAAU,CACTziB,KAAM0iB,kCAAAA,QACNO,KAAIA,kBAELM,OAAM,mBACNnO,UAAW,CACV,CACCsiB,SAAUgb,oBAAAA,GAEX,CACChb,SAAUC,IAAAA,IAGZnb,MAAO,CAINsV,QAAS,CAAC,K,uHCrdZ,MACCja,yBAAwB,2CACxB3D,2BAA0B,6CAC1BqgB,mBAAkB,qCAClBkf,kCAAiCA,qDAC9Bl/B,aAAAA,YAEEisD,WAAa,CAAC,EAEduC,kCAAkBA,CAAC95D,EAASmP,KACjCgc,WAAW,IACVhc,EAASq7B,oDAAmC,CAC3CxqC,UACAjJ,KAAM,SACNikyB,gBAAgB,MAKbyoB,4BAAah9xB,GACXA,EAAMlkB,IAAIhB,IAAA,IAAC,MAAC4iC,GAAM5iC,EAAA,OAAK4iC,IAGzBwvoB,WAAaA,KACdz/pB,SAASkyM,SAGT1tN,OAAO0sC,WAAW,oCAAoCxzB,QAMrDoI,uBAAQvO,IACb,MAAM,aAACs93B,EAAY,cAAEC,GAAiBv93B,GAChC,IAAC8mC,GAAO9mC,EAAMhY,WAEpB,OACC0gB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,sBACdlhB,EAAAA,kCAAAA,eAAA,aAAQ,4BAA4Bo+B,MACpCp+B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,4BACb2z2B,IACA703B,EAAAA,kCAAAA,eAAA,OACC7b,IAAI,WACJ+8B,UAAU,oCACV,cAAY,SAEZlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,gCAAgC2z2B,KAGjD703B,EAAAA,kCAAAA,eAAA,OAAK7b,IAAI,UAAU+8B,UAAU,qCAC5BlhB,EAAAA,kCAAAA,eAAA,OACCkhB,UAAU,+BACV,qBACA,UAAU1hC,IACiC,OAAtCA,EAAEwL,OAAO8Q,aAAa,aACzBtc,EAAEwL,OAAOsN,gBAAgB,cAI1Bs83B,QA6BP1j2B,EAAAA,6BAAAA,IAAsB,oBAAqB,CAC1C5xC,WAAY,CAaXgzB,MAAO,CACN8kB,UAAU,EACV3xB,OAAQ,CACP7iB,KAAM,QACN0vB,MAAO,CACN1vB,KAAM,SACNtD,WAAY,CACX0wC,MAAO,CAACptC,KAAM,SAAUorC,cAAc,IAEvCoJ,SAAU,CAAC,YAYdgH,IAAK,CACJ74B,QAAS,GACTE,OAAQ,CAAC7iB,KAAM,WAYhBm5E,cAAe,CACdx2D,QAAS,QACTE,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,QAAS,MAAO,WAI1BC,eAAAA,CAAehN,GAAe,IAAd,WAACrZ,GAAWqZ,EAC3B,MAAO,CAAC82jB,OAAQ6/O,4BAAUhwzB,EAAWgzB,OACtC,EACAtZ,eAAgB,CACf,CAACyB,4CAA2B,CAC3BI,MAAAA,CAAM5B,GAAyB,IAAxB,WAAC3Z,EAAU,SAAE0b,GAAS/B,EAC5B,MAAM,cAAC8iE,EAAa,MAAEzpD,GAAShzB,EACzBw14B,EAAiB,CAAC,QAAS,OAAOtk4B,SAASurE,GAC3Cg5zB,EAAiBzlF,4BAAUh9xB,GAAO,GACpCwi3B,GAAkBC,GACrBpv0B,kCAAgBov0B,EAAgB/53B,EAElC,GAED,CAAClE,8CAA6B,CAC7B+D,MAAAA,CAAM1B,GAA8C,IAA7C,OAACP,EAAM,SAAEoC,EAAQ,WAAE1b,EAAU,YAAEqY,GAAYwB,EACjD,MAAM,cAAC4iE,EAAa,MAAEzpD,GAAShzB,GACzB,KAACG,GAAQmZ,EAAOC,QACtB,GAAa,UAATpZ,EAAkB,CACrB,MAAMu14B,EAAa1lF,4BAAUh9xB,GACvByi3B,EAAiBC,EAAW,GAC5BF,EAAiB,CAAC,QAAS,OAAOtk4B,SAASurE,GACjDpkE,EAAY,CAAC83jB,OAAQulU,IACjBF,GAAkBC,GACrBpv0B,kCAAgBov0B,EAAgB/53B,EAElC,CACD,GAED,CAACmc,sCAAqB,CACrBtc,MAAAA,CAAMrB,GAAwC,IAAvC,OAACZ,EAAM,SAAEoC,EAAQ,WAAE1b,EAAU,MAAEgY,GAAMkC,EAC3C,MAAO2f,oBAAqB8vB,GAAarwC,EAAOC,SAC1C,OAAC42jB,EAAM,cAAEolU,EAAa,aAAED,GAAgBt93B,EAExC293B,IAAiBvv1B,EAAAA,OAAAA,SAAQ+phB,EAAQxmhB,EAAUwmhB,QAC3CylU,EAAuBL,IAAkB5r1B,EAAU4r1B,cACnDM,EAAsBP,IAAiB3r1B,EAAU2r1B,aACjDQ,EAAgB51N,aAEhB61N,EACLR,GAAiBK,GAAwBE,EAEpCE,EACJH,IAAwBC,GACxBF,IAAyBL,GAAiBO,EAExCH,IACHj63B,EAAS,8CACTic,aAAamsC,WAAW9jE,EAAWif,QAC/BkxjB,EAAOzukB,OAAS,IACnBoiE,WAAW9jE,EAAWif,OAASyY,WAAW,KACzChc,EAAS,0BACP,OAIDq63B,GACHr63B,EAAS,mBAGNs63B,IACHt63B,EAAS,gCACTA,EAAS,6BAEX,GAED,4BAA6B,CAC5BH,MAAAA,CAAMpB,GAA0B,IAAzB,SAACuB,EAAQ,KAAEtD,EAAI,MAAEJ,GAAMmC,EAC7BqL,sBAAsB,KACrB,MAAM,kBAACoT,GAAqB5gB,EAAMU,UAAUohB,WACtCvB,EAAOngB,EAAKU,WAAWC,cAAc,qBACrCkL,EAAU7L,EAAKU,WAAWC,cAAc,eACxCosD,EAAW5sC,EAAKpa,QAAQ,UACxB+mD,EAAW3sC,EAAKpa,QAAQ,UAgB9B,GAbAoa,EAAKlG,cAAc,IAAI4j3B,WAAW,cAG9B192B,EAAK/b,aAAa,kBAAoB2oD,GAAYD,IACrD3sC,EAAK3b,aAAa,eAAgB5E,EAAMs93B,cACxC553B,EAAS,wBAAyB,CAAChQ,OAAQ6sB,EAAM7C,MAAO,KAC9CzR,SAAAA,EAAS/L,SACnB+L,EAAQ/L,QAAS,EACjBqgB,EAAK3b,aAAa,eAAgB,KAClClB,EAAS,wBAAyB,CAAChQ,OAAQ6sB,EAAM7C,MAAO,KAIrDkD,EAAmB,CACtB,MAAM,YAACvP,EAAW,YAAEoP,GAAeF,EACblP,EAAcoP,EAAc,GAEjDF,EAAK3b,aAAa,gCAAiC,QACnD2b,EAAK3b,aAAa,WAAY,MACpBuoD,GACV5sC,EAAK3b,aAAa,gCAAiC,QACnD2b,EAAK3b,aAAa,WAAY,QAE9B2b,EAAKvf,gBAAgB,iCACrBuf,EAAKvf,gBAAgB,YAEvB,MACCuf,EAAKvf,gBAAgB,iCACrBuf,EAAKvf,gBAAgB,aAGxB,GAED,6CAA8C,CAC7CuC,MAAAA,CAAMuP,GAA6B,IAA5B,KAAC1S,EAAI,MAAEJ,EAAK,YAAEK,GAAYyS,EAChC,MACMor3B,EAAY993B,EAAKU,WAAWC,cADX,6BAGvB,IADkBm93B,aAAS,EAATA,EAAWC,gBAAgBz04B,QAAS,EAErD,OAGD,GADiCsW,EAAMs93B,eAAiBt93B,EAAMm4jB,OAAO,GAMpE,YAJA93jB,EAAY,CACXk93B,cAAer1N,aAAeloqB,EAAMs93B,kBAAeht4B,EACnDgt4B,aAAct93B,EAAMm4jB,OAAO,UAI4B7nkB,IAAxB0P,EAAMu93B,eAEtCl93B,EAAY,CACXk93B,mBAAejt4B,GAIlB,GAED,kBAAmB,CAClBiT,MAAAA,CAAMk6B,GAAmB,IAAlB,SAAC/5B,EAAQ,KAAEtD,GAAKq9B,EACtB,MAMM+nJ,EADYplL,EAAKU,WAAWC,cADX,6BAEAq93B,QAAQ,CANlB,CAACj52B,UAAW,oBACd,CAACA,UAAW,SAKoB,CAAC8V,SAJ3B,IAIqCoj2B,OAHvC,iCAIf74sB,EAAKnjL,iBAAiB,SAAU,KAC/BmjL,EAAK7oF,SACLj5F,EAAS,+CAEX,GAED,wBAAyB,CACxBH,MAAAA,CAAMm6B,GAA6C,IAA5C,SAACh6B,EAAQ,WAAE1b,EAAU,MAAEgY,EAAK,YAAEK,GAAYq9B,EAChD,MAAMy6hB,EAAS,IAAIn4jB,EAAMm4jB,QACzBA,EAAO/okB,KAAK+okB,EAAOvwiB,SACnBvnB,EAAY,CAAC83jB,WAEb,MAAMqlU,EAA8C,QAA7Bx14B,EAAWy8E,cAC5B65zB,EAAanmU,EAAO,GACtBqlU,GAAkBc,GACrBjw0B,kCAAgBiw0B,EAAY563B,EAE9B,IAGF6K,KAAI,uBACJM,OAAM,6BACNnO,UAAW,CAAC,CAACsiB,SAAUkqB,wBAAAA,GAAqB,CAAClqB,SAAUlU,qBAAAA,O,iPC5TxD,MAAO3mB,GAAAA,2BAAMkT,GAAAA,+BAAWsD,sDAClB2sB,+BAAYr+B,OAAOu2C,iCACxBv2C,OAAOu2C,kCAAoC,CAAC,EACxClY,+BAASnjC,8BACbmjC,+BAASnjC,4BAAQkT,+B,iDCHlB,MAAMkj4B,yBAA2BA,KAE/B713B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,iDACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,WACdlhB,EAAAA,kCAAAA,eAAA,iBACC28B,MAAI,EACJC,UAAQ,EACRF,IAAI,iFAEL18B,EAAAA,kCAAAA,eAAA,qBACCsS,MAAO,CACN,CAAE0d,MAAO6u1B,wCAAwCC,QACjD,CAAE9u1B,MAAO6u1B,wCAAwCE,QACjD,CAAE/u1B,MAAO6u1B,wCAAwCG,QACjD,CAAEhv1B,MAAO6u1B,wCAAwCI,QACjD,CAAEjv1B,MAAO6u1B,wCAAwCK,QACjD,CAAElv1B,MAAO6u1B,wCAAwCM,aAIpDn/2B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,oBACdlhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,mBACflhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,mBACflhB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,oBAMnB,mDCdMqo1B,gBAAaA,KAEjBvp2B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAU,6BACdlhB,EAAAA,kCAAAA,eAAA,cAAYgwB,OAAO9qB,EAAAA,iBAAAA,GAAE6o1B,kCAKlB+nC,aAAe1o4B,IAAA,IAAC,cAAEs03B,GAAet03B,EAAA,OACtC4S,EAAAA,kCAAAA,eAAA,oCACC41D,QAAS,CAAC,EACVlhD,QAASgt2B,EACTxm0B,aAAa,aAIT660B,YAAcp93B,IAQd,IARe,cACpBip3B,EAAa,cACbF,EAAa,iBACbsU,EAAgB,qBAChBC,EAAoB,oBACpBC,EAAmB,cACnBC,EAAa,qBACbC,GACAz93B,EACA,GAAIu93B,EAAqB,OAAOl23B,EAAAA,kCAAAA,eAACup2B,gBAAU,MAE3C,IAAI5/0B,EAAAA,OAAAA,SAAQi41B,GACX,OAAO5h3B,EAAAA,kCAAAA,eAAC813B,aAAY,CAACpU,cAAeA,IAGrC,MAAMxg2B,EAAa802B,EAEhB,GADA,yBAAyBC,IAE5B,OAAKts2B,EAAAA,OAAAA,SAAQws2B,GAQNvU,EAAcxz3B,IAAIoj0B,IAAQxxzB,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAWA,GAAYswyB,KAP5DowD,EAAc1p3B,QAAQ,CAACs5zB,EAAMll0B,KAE5Bkl0B,EAAK3q0B,KAAKioI,MAAMtiD,SAAW4pzB,IAAyB9p4B,EACpDkl0B,EAAK3q0B,KAAKioI,MAAM7wH,KAAO,aAEjB+B,EAAAA,kCAAAA,eAAA,cAAiBm23B,EAAgBvU,KAKpCxY,qBAAkBvj2B,IACvB7F,EAAAA,kCAAAA,eAAA,2BAAyB,yBAAoB6F,GAG9C,2BAAevO,IACd,MAAM,MACLk9C,EAAK,OACLgN,EAAM,cACNkg0B,EAAa,cACbE,EAAa,qBACbqU,EAAoB,MACpBI,EAAK,oBACLH,EAAmB,cACnBC,EAAa,SACb/+O,EAAQ,YACR4kB,EAAW,qBACXo6N,EAAoB,eACpBE,EAAc,UACdhg1B,EAAS,SACTuK,EAAQ,eACRqmoB,GACG5vrB,EAAMhY,YAET0Y,WAAW,WAAEim0B,IACV3m0B,EACE+rW,EAAW46d,EAAWuX,YACtBwgD,EAAmBx00B,IAAW0rnB,yCAC9B5opB,EAAM+x2B,EAAQ,GAAK,OAKnBE,EAAqB,CAAC,yBAJZ3U,GAAiBA,EAAc5g4B,OAAS,EAAI,GAAK,YAC5C6g4B,sBAAsBvq3B,EAAMhY,YAC9C,iBACA,IAEDwe,OAAOs3C,SACPxmC,KAAK,KACDsoB,EAAYsd,GAASi/vB,6BACrB9+H,EAAsD,iBAAtCztrB,EAAAA,OAAAA,KAAIov4B,EAAgB,SAAU,IAEpD,OAAOltB,sBAENpp2B,EAAAA,kCAAAA,eAAA,OACCkhB,UAAU,wBACVpb,MAAO,CACN,WAAYwwC,EACZ,UAAW+sT,EACX,aAAc+zS,IAGd9gmB,GACAt2C,EAAAA,kCAAAA,eAAC613B,0BAAwB,OAEzB713B,EAAAA,kCAAAA,eAAC41B,kCAAAA,SAAQ,KACP++oB,IACA30qB,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,uBAAuB,KAGxB9F,EAAAA,kCAAAA,eAAA,+BAAAzS,kBAAA,GACK+o4B,EAAc,CAClBl/O,SAAUA,EACV4kB,YAAaA,EACbn7mB,SAAUA,EACVqmoB,eAAgBA,OAIjB7jV,IAAasxU,GAAiBitM,EAAc5g4B,OAAS,IACtDgf,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,uBAAuB,KAGxB9F,EAAAA,kCAAAA,eAAA,+BAAAzS,kBAAA,GACK+o4B,EAAc,CAClBl/O,SAAUA,EACV4kB,YAAaA,EACbn7mB,SAAUA,EACVqmoB,eAAgBA,MAIlB7jV,IAAasxU,GAA0C,IAAzBitM,EAAc5g4B,SAC5Cgf,EAAAA,kCAAAA,eAAA,OACC8F,MAAO,CACN,uBAAuB,KAGxB9F,EAAAA,kCAAAA,eAAA,+BAAAzS,kBAAA,GACK+o4B,EAAc,CAClBl/O,SAAUA,EACV4kB,YAAaA,EACbn7mB,SAAUA,EACVqmoB,eAAgBA,MAIlB06L,EAAc5g4B,OAAS,IAAM2zrB,IAC7B30qB,EAAAA,kCAAAA,eAAA,OACCkhB,UAAW,8BAA8BsgC,KAAUl9B,KAClD8ynB,EAAW,aAAe,OAE3B,aAAYlgnB,IAEZl3B,EAAAA,kCAAAA,eAAA,OAAKkhB,UAAWq12B,IACfv23B,EAAAA,kCAAAA,eAAC+13B,YAAW,CACXnU,cAAeA,EACfF,cAAeA,EACfsU,iBAAkBA,EAClBC,qBAAsBA,EACtBC,oBAAqBA,EACrBC,cAAeA,EACfC,qBAAsBA,QAU9B,EC1LY/oD,0BACZ,iDAEYmpD,uBACZ,kDAEYC,yBAA2B,CACvCC,qBAAsB,uBACtBC,uBAAwB,yBACxBC,oBAAqB,sBACrBC,iBAAkB,mBAClBC,0BAA2B,6BAGfC,qDACZ,uDACYC,oBAAsB,sBAEtBC,6BACZ,sDAEYC,sBACZ,8CAEY3rD,gDACZ,iDAEY4rD,2BACZ,uCACYtrB,qCACZ,qDACY/U,+DACZ,mCACYsgC,+BACZ,2CACY5rD,iDACZ,kDACYklC,kBACZ,2DACYzE,0CACZ,iDACYorB,yBAA2B,2BAC3BrqD,+BACZ,sDACYC,iCACZ,wDAEYqqD,mCACZ,+C,0DCxCM,MAAM362B,eAAiB,SAACmyG,EAAOlsI,GAA2B,IAArBygX,EAAQz+W,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,IAAAA,UAAA,GACnD,OAAQhC,GACP,IAAK,6BACJ,OAAO+81B,uBAAuB7wtB,EAAOu0O,GACtC,IAAK,2BACJ,OAAOs9e,qBAAqB7xtB,GAC7B,IAAK,gCACJ,OAAOoytB,0BAA0BpytB,GAClC,IAAK,4BACJ,OAAOwytB,sBAAsBxytB,GAC9B,IAAK,oCACJ,OAAO2ytB,8BAA8B3ytB,GAExC,ECnBau/uB,yBAAiB,cACjBC,sBAAc,aAEdL,+BAAuB,cACvBC,4BAAoB,WAEpBW,2BAAmB,CAC/BG,oBAAqB,oCACrBC,6BAA8B,uCAGlBC,kCAA0B,CACtCC,uBAAwB,6BACxBC,wBAAyB,sCAGbjhO,6BAAahC,WAAaziZ,SAAS2iZ,KACnCshO,8BAAsB,sBACtByB,wBAA0B,0BClBjC5uN,oCAAgB,CACrB5T,UAAAA,CAAWnB,EAAalqX,EAAesrX,EAAY9kpB,GAClDokpB,WAAaS,WAAWnB,EAAalqX,EAAesrX,EAAY9kpB,EACjE,GAGD,0DCUawv4B,gCAAkCpf,IAC9C33N,sBAAc5T,WACbwiO,wBACAjhO,6BACAgqO,EACA,CAAEvsO,YAAY,KAIH4rP,qBAAuBA,CAAC56nB,EAAOtlQ,KAC3C,MAAM,sBAAEmg4B,GAA0Bng4B,EAC5By8oB,EAAQn3Y,EAAMm3Y,MAAQn3Y,EAAMm3Y,MAAQn3Y,EAAMg3a,OAOhD,OANc6jN,EAAsBnl3B,MAAMmzB,UAAUky0B,IAClCA,EAAarkC,WAAW12kB,MAAMm3Y,MAC5C4jO,EAAarkC,WAAW12kB,MAAMm3Y,MAC9B4jO,EAAarkC,WAAW12kB,MAAMg3a,SACd7/B,GAEH,GAGL2jP,uBAAyB,SACrC9+3B,EACAoC,EACA1D,EACAhY,GAGI,IAFJ6w1B,EAAUvr1B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,IAAAA,UAAA,GACV803B,EAAY903B,UAAA5D,OAAA,QAAA4G,IAAAhD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEhB,MAAM+03B,EAAgB1B,gCAA2Br/2B,EAAQtZ,EAAYgY,IAC/D,sBACLqppB,EAAqB,UACrBC,EAAS,oBACT7Q,EAAmB,iBACnBsoO,EAAgB,oBAChBC,EAAmB,YACnBF,EAAW,UACXwB,EAAS,OACTpg2B,EAAM,iBACNq91B,EAAgB,YAChBv6M,EAAW,SACXo6M,EAAQ,SACRE,EAAQ,OACR4B,EAAM,UACNC,EAAS,wBACTP,EAAuB,MACvBt7mB,GACG+8mB,GAGH/E,sBAAsB,oBAAEmB,EAAmB,2BAAEC,IAC1C123B,EAEEqrF,EAAgB/xE,EAAOC,QAAQD,OAC/Bih3B,EACLlvyB,GAAiBA,EAAcgvlB,WAC5B,CACAA,WAAYhvlB,EAAcgvlB,WAC1Bqc,SAAUrrmB,EAAc2lwB,aACxBwpC,YAAanvyB,EAAc36C,OAE3B,CAAC,EAECqp1B,EAA0BF,yBAC/B78M,EACA05M,GAGKgE,EAAuBp9mB,EAAMq9mB,qBACnC,IAAIC,EAAc3s3B,kBAAA,CACjBozpB,wBACAC,YACAw3N,cACAwB,YACApg2B,SACAq91B,mBACAv6M,cACAo6M,WACAE,WACAyC,0BACAW,wBACGH,EACAH,GAGCxB,IACJgC,EAAc3s3B,kBAAA,GACV2s3B,EAAc,CACjBnqO,sBACAsoO,mBACAC,sBACAE,SACAC,eAIGtoC,IACJ+pC,EAAeqF,0BAA4BiY,qBAC1C56nB,EACAtlQ,IAIF,MAAM6i3B,EAAoB5s3B,kBAAA,GACtB2s3B,EAAc,CACjBl51B,WAAY4/nB,IAGTm1N,IACHoE,EAAqBpE,oBAAsBA,GAGxCoE,EAAqBL,cACxBK,EAAqBh/1B,WAAag/1B,EAAqBL,aAGxD,MAAMM,EAAmBjqC,EACtBwnD,8BAA8Bxd,GAC9Byd,+BAA+Bzd,GAE5BE,EAAY9s3B,kBAAA,GACdqL,EAAOC,QAAO,CACjBuh3B,qBAGD55N,sBAAc5T,WAAW+gO,8BAAqBx/N,6BAAY+rO,EAAgB,CACzEll2B,MAAO,EACPsl2B,kCAAkC,EAClCn43B,SAAUA,IAAM6Y,EAASix2B,0CAAmCoO,GAC5DzuO,YAAY,GAEd,EAEM4rO,iCAA8BA,CAAC7syB,EAAeiyL,IAC/CjyL,GAAiBA,EAAc2tK,MAC3B3tK,EAAc2tK,MAEW,MAA1BskB,EAAM,iBAA2BA,EAAM,iBAAmBA,EAAMtkB,MAGlEm/nB,2BAAwBA,CAAC76mB,EAAOjyL,EAAerzE,KAEpD,IAAI04B,EACH4sO,EAAM,mCACNA,EAAM,iBACNA,EAAM,iBACP,KAAKjzO,EAAAA,OAAAA,SAAQqG,GAAQ,OAAOA,EAG5B,KACErG,EAAAA,OAAAA,SAAQghD,IACT,WAAYA,KACXhhD,EAAAA,OAAAA,SAAQizO,IACT,sBAAuBA,EACtB,CACD,MAAM,OAAEg3a,GAAWjpmB,EAEbuzwB,EADgBl71B,KAAKG,MAAMy5Q,EAAM,sBACR34P,KAAKi60B,GAAYA,EAAStqK,SAAWA,GACpE,GAAIsqK,EACH,OAAOA,EAASzL,iBAElB,CAGA,GACCn70B,EAAMug4B,4BACLlu2B,EAAAA,OAAAA,SAAQryB,EAAMug4B,yBAAyBvl3B,OACvC,CACD,MAAMwl3B,EAAexg4B,EAAMug4B,yBAAyBvl3B,MAAMrO,KACzD2O,GACkD,aAAjDA,EAAK0g0B,WAAW12kB,MAAM,wBACtBhqP,EAAK0g0B,WAAW12kB,MAAM,mBAAqBjyL,EAAc2tK,OACzD1lO,EAAK0g0B,WAAW12kB,MAAM,oBAAsBjyL,EAAcopkB,OAE5D,GAAI+jP,EACH,OAAOA,EAAaxkD,WAAW12kB,MAAM,gBAGtC,MAAMm7nB,EAAuBzg4B,EAAMug4B,yBAAyBvl3B,MAAMrO,KACjE2O,GACkD,aAAjDA,EAAK0g0B,WAAW12kB,MAAM,0BACpB,kBAAmBhqP,EAAK0g0B,WAAW12kB,QAEvC,GAAIm7nB,EAAsB,CACzB,MAGM75C,EAHgBl71B,KAAKG,MAC1B404B,EAAqBzkD,WAAW12kB,MAAM,sBAER34P,KAC9Bi60B,GAAYA,EAAStqK,SAAWjpmB,EAAcipmB,QAE/C,GAAIsqK,EACH,OAAOA,EAASzL,iBAElB,CACD,CAEA,MAAO,IAGF0mC,yBAAsBA,CAAC78M,EAAa05M,KACzC,MAAMoD,GAAWzv1B,EAAAA,OAAAA,SAAQqs1B,GAEtB,GADAA,EAA2B9m2B,MAAM,KAGpC,IAAImq2B,EAA0B,GAS9B,OARAD,EAAQlh3B,QAAQ8/0B,IACX17K,IAAgB2xM,gCAAwBj2B,EAAOxn1B,SAAS,WAC3D6o3B,EAA0BhL,yBAChB/xM,IAAgB4xM,6BAAqBl2B,EAAOxn1B,SAAS,YAC/D6o3B,EAA0B/K,yBAIrB+K,GAGFpB,gCAA6BA,CAACr/2B,EAAQtZ,EAAYgY,KACvD,MAAM,qBAAEs92B,EAAoB,sBAAEj0N,GAA0BrhqB,GAEvDuZ,SAAS,MACR+jQ,EAAK,KACLh6Q,EACAgW,QAAQ,cAAE+xE,KAER/xE,EAEEoxwB,EAAepnxB,GAAcg6Q,EAAMh6Q,MAEnC,WACLo+B,EAAU,oBACVox1B,EAAmB,2BACnB4D,GACGpB,EAEEsD,GAA0Bvu1B,EAAAA,OAAAA,SAC/Bir1B,EAAqBuD,wBAGhBA,EAA0BD,EAE7B,CAAC,EADDtD,EAAqBuD,uBAGlBC,GACLztyB,aAAa,EAAbA,EAAeipmB,UAAUjpmB,aAAa,EAAbA,EAAeopkB,QAASn3Y,EAAMm3Y,OAAS,GAC3Dv6nB,EAASojP,EAAMpjP,QAAU,GACzBonoB,GAAaj3nB,EAAAA,OAAAA,SAAQyo1B,GAExBpx1B,EADAox1B,EAGH,IAAI91M,EAAc,GACdu6M,EAAmB,GACnBH,EAAW,GACXE,EAAW,GAQf,OAPIh6mB,IACH0/Z,EAAck7M,iCAA4B7syB,EAAeiyL,GACzDi6mB,EAAmBY,2BAAsB76mB,EAAOjyL,EAAerzE,GAC/Do/2B,EAAW95mB,EAAM85mB,UAAYp6M,EAAYlpqB,OAAO,IAAKwpQ,EAAMm3Y,OAE3D6iO,EAAWh6mB,EAAMA,OAAS,IAEpB,CACNg4mB,uBACAj0N,wBACA/jZ,QACAh6Q,KAAMonxB,EACNhpvB,aACA4/nB,YACA7Q,oBAAqBmoO,EAClB,GACAC,EAAuBpoO,oBAC1BsoO,iBAAkBH,EACf,GACAC,EAAuBE,iBAC1BC,oBAAqBJ,EAClB,GACAC,EAAuBG,oBAC1BtC,6BACAoC,cACA5+1B,SACA8ipB,cACAu6M,mBACAH,WACAE,WACA4B,OAAQN,EAA0B,GAAKC,EAAuBK,OAC9DC,UAAWP,EAA0B,GAAKC,EAAuBM,UACjEP,0BACAC,2BAIIwf,8BAAgC/6nB,IACZ,CACxBw5mB,YAAa,CACZH,UAAWpH,2BAAiBI,6BAC5BiH,aAAc,CACb,eAAgBt5mB,EAAM57O,WACtB,cAAe47O,EAAMg6mB,SACrB,uBAAwBh6mB,EAAM85mB,SAC9B,sBAAuB95mB,EAAMi6mB,iBAC7B,uBAAwBj6mB,EAAMzhP,WAC9B,0BAA2ByhP,EAAMo5a,WAGnC6/L,YAAa,KAMTD,qBAAkBh5mB,IACvB,MAAMi5mB,EAAc,GAepB,QAd4Bls1B,EAAAA,OAAAA,SAAQizO,EAAMo5mB,4BACvC,GACAp5mB,EAAMo5mB,2BAA2B9m2B,MAAM,MAEtBhX,QAAQ8/0B,GAC3B69B,EAAYnv3B,KAAK,CAChBuv3B,UAAW/G,kCAAwBE,wBACnC8G,aAAc,CACb,eAAgBt5mB,EAAM57O,WACtB,mBAAoBg3zB,MAKhB69B,GAGF+hB,+BAAiCh7nB,IACb,CACxBw5mB,YAAa,CACZH,UAAWpH,2BAAiBG,oBAC5BkH,aAAc,CACb,eAAgBt5mB,EAAM57O,WACtB,cAAe47O,EAAMg6mB,SACrB,uBAAwBh6mB,EAAM85mB,SAC9B,sBAAuB95mB,EAAMi6mB,iBAC7B,uBAAwBj6mB,EAAMzhP,WAC9B,0BAA2ByhP,EAAMo5a,WAGnC6/L,YAAaD,qBAAgBh5mB,KCtWlBo7nB,kBAAoBA,CAACnx4B,EAAMgS,EAASvZ,KAChD,IAAI293B,EAAY,GACZjiB,EAAa,CAAC,EACdp42B,EAAO,GACP0J,EAAQ,GACR2r4B,EAAgB,GACpB,IAAItu2B,EAAAA,OAAAA,SAAQ9iC,GACX,OAAOm02B,EAER,MAAM,qBAAE4Z,GAAyBt13B,EACZ,oBAAjBuZ,EAAQjW,OACXq63B,EAAY,WACZr63B,EAAO,YAGa,kBAAjBiW,EAAQjW,OACXq63B,EAAY,UACZr63B,EAAO,SACPq14B,GAAgB/w4B,EAAAA,OAAAA,KAAI2R,EAAS,mBAAoB,KAGlD,MAAMq/3B,EAAkB,CACvB5l3B,MAAO,IAuCR,OApCAzrB,EAAKyrB,MAAMpa,QAAQ,CAAC2D,EAASla,KAC5B,IAAIw24B,EAASx34B,OAAOumB,OAAO,CAAC,GAAGhgB,EAAAA,OAAAA,KAAI2U,EAAS,aAAc,CAAC,IACvDu83B,GAAclx4B,EAAAA,OAAAA,KAAIix4B,EAAO7kD,WAAW12kB,MAAO,SAAU,KAGvDjzO,EAAAA,OAAAA,SAAQsu2B,KACRtu2B,EAAAA,OAAAA,SAAQyu2B,IACTA,IAAgBH,IAEhB3r4B,EAAQ3K,EAAI,GAEbu24B,EAAgB5l3B,MAAM5rB,KAAKyx4B,KAG5Bn9B,EAAa,CACZiiB,UAAWA,EACXrnN,UAAWg/M,EAAqB5z1B,WAChCk81B,UAAW,CACVC,gBAAiB,CAChBC,eAAgB,CACfxI,wBAEDyI,uBAAwB,CACvB/q2B,MAAO,IAERgr2B,uBAAsB/v3B,kBAAA,GAClB2q4B,KAKNryP,aAAc,CACbv5oB,MAAOA,EACP1J,KAAMA,IAGDo42B,ICxBA3k0B,kCAAiCA,2CAAKl/B,aAAAA,YAExCkh4B,kBAAoB/l3B,GACCA,EAAMxU,OAAO8U,IAEtC,MAAM0l3B,IAA2Bpx4B,EAAAA,OAAAA,KAChC0rB,EAAK0g0B,WAAW12kB,MAChB,sBACA,IACCpsQ,SAAS8u3B,uBAELiZ,GACL7y1B,EAAAA,OAAAA,UACCx+C,EAAAA,OAAAA,KAAI0rB,EAAK0g0B,WAAW12kB,MAAO,sBAAuB,IAClD0inB,yBAED550B,EAAAA,OAAAA,UAAQx+C,EAAAA,OAAAA,KAAI0rB,EAAK0g0B,WAAW12kB,MAAO,wBAAyB,IAAK,QAClE,OAAO07nB,GAA2BC,IAMvBC,qBAAuBpr4B,IAAoC,IAAnC,MAAEkK,EAAK,OAAEsB,EAAM,YAAEjB,GAAavK,EAClE,MAAQyL,QAASi2H,GAAUl2H,EAE3BjB,EAAY,CACXy+3B,qBAAsB9+3B,EAAMmg4B,sBAAsBnl3B,MAAMmzB,UACvD7yB,GAAQA,EAAK0g0B,WAAW12kB,MAAMm3Y,QAAUjlhB,EAAM8tI,MAAMm3Y,SAItDp8oB,EAAY,CAAE2+3B,eAAgBxnwB,KAGlB6ntB,iCAA2B/v0B,IACvC,MAAM,SAAE5L,EAAQ,WAAE1b,EAAU,MAAEgY,EAAK,YAAEK,GAAgBiP,GAC/C,qBAAEgu2B,EAAoB,UAAE6jB,GAAcn54B,GAEvCqqC,EAAAA,OAAAA,SAAQir1B,GAeZ552B,EAASq7B,0CAAmC,CAC3CxqC,QAASuz3B,iBAAiBC,uBAC1Bz83B,KAAM,SACNikyB,gBAAgB,KAjBjB6xG,0CACC9jB,EACAj92B,GAEDgh4B,qCAAqC/x3B,GAChC6x3B,GACJG,uCAAuC,CACtCt54B,aACA0b,WACA1D,QACAK,kBAYEg9qB,sBAAgB2oM,GACdA,EAAuBhr2B,MAAMnD,KACnCyD,GAA0B,sCAAlBA,EAAKy6I,UAITqruB,0CAA4CA,CACjD9jB,EACAj92B,KAGIpT,OAAOs04B,6CACVt04B,OAAOs04B,2CAA6C,IAGrDlh4B,EAAY,CACXil1B,gBAAiBg4B,aAAoB,EAApBA,EAAsBkkB,uBACvCj40B,SAAU,CAAC,EACXk40B,gBAAgB,KAIZC,iBAAmBA,CAACC,EAAc7hP,EAAU4kB,KACjD,KAAKryoB,EAAAA,OAAAA,SAAQsv2B,MAAkBtv2B,EAAAA,OAAAA,SAAQsv2B,EAAa3m3B,OAAQ,CAC3D,MAAM4m3B,GAAkB/uuB,EAAAA,OAAAA,WAAU8uuB,GAMlC,OALAC,EAAgB5m3B,MAAMpa,QAAQ0a,IAC7BA,EAAK0g0B,WAAWl8L,SAAWA,EAC3BxkoB,EAAK0g0B,WAAWt3K,YAAcA,IAE/Bk9N,EAAgB5m3B,MAAQ+l3B,kBAAkBa,EAAgB5m3B,OACnD4m3B,CACR,CACA,OAAOD,GAGK9nE,6DAAiCvqzB,IAC7C,MAAM,OACLhO,EAAM,WACNtZ,EAAU,SACV0b,EAAQ,MACR1D,EAAK,YACLK,EAAW,iBACX8jB,GACG7U,GAEH/N,SAAS,KAAEpZ,EAAI,MAAEyC,IACd0W,GACE,8BAAEug4B,GAAkC7h4B,GAEzCs92B,sBAAsB,6BAAEwkB,EAA4B,gBAAElkB,IACnD513B,EACS,yBAATG,GACHi54B,0CAA0Cx24B,EAAOyV,GACjDgh4B,qCAAqC/x3B,GACjCwy3B,GAAgCD,EACnCP,uCAAuC,CACtCt54B,aACA0b,WACA1D,QACAK,iBAIDA,EAAY,CAAE0h4B,0BAA2BnkB,IAErCA,EACHl62B,EAASq7B,0CAAmC,CAC3CxqC,QAASuz3B,iBAAiBC,uBAC1Bz83B,KAAM,SACNikyB,gBAAgB,IAGjByyG,+BAA+B,CAAEh64B,aAAY0b,WAAUrD,kBAGtC,6BAATlY,GAAuCyC,IAKjDyV,EAAY,CACX8/3B,sBAAuB,KACvBnB,eAAgB,KAChBF,qBAAsB,EACtBiD,2BAA2B,EAC3BE,+BAA+B,EAC/BC,kBAAkB,EAClBT,gBAAgB,IAEjBt92B,EAAiB,CAChBg+2B,0BAA0B,IAE3Bz+3B,EAASq7B,0CAAmC,CAC3CxqC,QAASuz3B,iBAAiBC,uBAC1Bz83B,KAAM,SACNikyB,gBAAgB,MAKN6yG,qBAAuB9y3B,IACnC,MAAM,OAAEhO,GAAWgO,GACb,QAAE/N,GAAYD,GACd,YAAE+g4B,GAAgB9g4B,EAClBgC,GAASijoB,EAAAA,2BAAAA,6BAA4B67P,EAAa,CACvDC,2BAA4BnD,yBAAyBC,qBACrDmD,6BACCpD,yBAAyBE,uBAC1BmD,0BAA2BrD,yBAAyBG,oBACpDmD,0BAA2BtD,yBAAyBI,iBACpDmD,+BACCvD,yBAAyBK,4BAE3Bj83B,EAAOA,UAAUA,EAAOtL,KAAMqX,IAGlBqz3B,kBAAoBC,IAChCA,EAAiB3y4B,KAAK,CAAC4y4B,EAAKC,IAE1B/33B,SAAS833B,EAAI7mD,WAAW12kB,MAAM0mB,OAC9BjhR,SAAS+33B,EAAI9mD,WAAW12kB,MAAM0mB,SAKpBg2mB,+BAAiC3g4B,IAIxC,IAJyC,WAC9CrZ,EAAU,SACV0b,EAAQ,YACRrD,GACAgB,EACA,MACCi82B,sBAAsB,gBAAEM,EAAe,WAAEl01B,EAAU,oBAAEox1B,GAAqB,aAC1E6mB,EAAY,SACZ7hP,EAAQ,YACR4kB,GACG18qB,EAGJ,GAAI413B,EAAiB,OAErB,IAAIgkB,EAAkBF,iBAAiBC,EAAc7hP,EAAU4kB,GAC/D,IAAKk9N,IAAmBvv2B,EAAAA,OAAAA,SAAQuv2B,EAAgB5m3B,OAAQ,OAExD,MAAM8srB,EAAc,CAAC,EACrB,GAAIzqB,sBAAcukN,GAAkB,CACnC,MAAMmB,GAAclwuB,EAAAA,OAAAA,WAAU+uuB,GAC9B95L,EAAYy4L,yBAA2BwC,EACvCj7L,EAAYq4L,sBAAqBlq4B,kBAAA,GAC7B2r4B,EAAe,CAClB5m3B,MAAOgo3B,sCACNpB,EAAgB5m3B,OACfyQ,OAAO,KAGVm22B,EAAgB5m3B,MAAMyQ,OAAO,EAC9B,MACCk32B,kBAAkBf,EAAgB5m3B,OAClC8srB,EAAYq4L,sBAAwByB,EAGrC,IACC95L,EAAYk3L,eAAiB352B,eAC5Bu82B,EAAgB5m3B,MAAM,GAAGgh0B,WACzB4lD,EAAgB5m3B,MAAM,GAAG+6I,SAE3B,CAAE,MAAO7tK,GACRE,QAAQ0E,KAAK,8CAA+C5E,EAC7D,CAEAwb,EAASq7B,0CAAmC,CAC3CxqC,SAASqZ,EAAAA,iBAAAA,GACR,WAAWg03B,EAAgB5m3B,MAAMtxB,gCACjCox3B,GAA4Cpx1B,GAE7Cp+B,KAAM,SACNikyB,gBAAgB,IAGjBlvxB,EAAYynsB,IAGAw5L,uCAAyC3/3B,IAKhD,IALiD,WACtD3Z,EAAU,SACV0b,EAAQ,MACR1D,EAAK,YACLK,GACAsB,EACA,MACC272B,sBAAsB,6BAAEwkB,EAA4B,gBAAElkB,IACnD513B,GACE,8BAAE654B,GAAkC7h4B,GAGxCqyB,EAAAA,OAAAA,SAAQwv2B,IACTA,GAAiCC,GAEjCp+3B,EAASw73B,uBAAwB,CAChCmD,YAAaR,EACb1l3B,WAAW,IAIb,MAAMg9qB,EAAe,CACpB0oM,8BAA+BC,EAC/BhD,qBAAsB,EACtBiD,0BAA2BnkB,GAI5BokB,+BAA+B,CAAEh64B,aAAY0b,WAAUrD,gBAEvDA,EAAY84rB,GAEX2oM,GAAgCD,IAC/Bxv2B,EAAAA,OAAAA,SAAQyv2B,IAETp+3B,EAASw73B,uBAAwB,CAChCmD,YAAaP,EACb3l3B,WAAW,KAKR8m3B,qBAAuB3z3B,IAC5B,MAAM,YAAEjP,EAAW,WAAErY,GAAesnB,GAC9B,SAAEwwoB,EAAQ,YAAE4kB,GAAgB18qB,EAC5Bg+3B,EAAyB,CAC9Bhr2B,MAAO,CACN,CACC+6I,SAAU,oCACVimrB,WAAY,CACX19J,iBACC,iFACDrC,UAAW,KACXkC,kBAAmB,OACnBr+B,SAAUA,EACV4kB,YAAaA,EACbyzK,oBAAqB,KACrB95J,cAAe,OACf6kN,eAAgB5uN,sCAChBmlK,cAAe,OACfpoJ,SAAU,OACVm4J,YAAax0K,2CAAAA,yBACb1va,MAAO,CACNg3a,OAAQ,mCACR,iBAAkB,mCAClB7/B,MAAO,mCACPkmO,qBAAsB,mCACtBr9mB,MAAO,oCACPtkB,MAAO,0BAER7gL,QAAS,OAMPgj0B,EAAoB992B,eACzB2g2B,EAAuBhr2B,MAAM,GAAGgh0B,WAChCgqC,EAAuBhr2B,MAAM,GAAG+6I,UAGjC11J,EAAY,KACJ,CACN8/3B,sBAAuBna,EACvBgZ,eAAgBmE,EAChBpB,2BAA2B,EAC3BG,kBAAkB,MAKfc,sCAAwCho3B,IAC7C,GAAIA,GAASA,EAAMtxB,QAAU,EAAG,OAAOsxB,EACvC,IAAIu2E,EAAQv2E,EAAM,GAClB,MAAMoo3B,EAAkB,CACvB,CAACppN,yBAAeC,IAAK,CACpBgC,UAAW,IAEZ,CAACjC,yBAAeI,SAAU,CACzB6B,UAAW,IAEZ,CAACjC,yBAAeK,QAAS,CACxB4B,UAAW,IAEZ,CAACjC,yBAAeO,OAAQ,CACvB0B,UAAW,IAEZ,CAACjC,yBAAeM,IAAK,CACpB2B,UAAW,IAEZ,CAACjC,yBAAeQ,OAAQ,CACvByB,UAAW,IAEZ,CAACjC,yBAAeS,oBAAqB,CACpCwB,UAAW,KAGb,IAAIonN,EAAe9xyB,EAAMyqvB,WAAW77wB,SAAW,GAC/C,IAAK,IAAI91E,EAAI,EAAGA,EAAI2wB,EAAMtxB,OAAQW,IAAK,CACtC,IAAIok2B,GAAa7+1B,EAAAA,OAAAA,KAAIorB,EAAM3wB,GAAG2x1B,WAAW12kB,MAAO,sBAAuB,IACnEtkB,GAAQpxP,EAAAA,OAAAA,KAAIorB,EAAM3wB,GAAG2x1B,WAAW12kB,MAAO,gBAAiB,IACxDo1kB,GAAa9q1B,EAAAA,OAAAA,KAAIorB,EAAM3wB,GAAG2x1B,WAAW12kB,MAAO,sBAAuB,IACvE,IAAIl3N,EAAAA,OAAAA,SAAQqgzB,EAAY,YAAa,CACpC,IAAI60C,GAAUzwuB,EAAAA,OAAAA,WAAU73I,EAAM3wB,IAC1Bk54B,GAAwB3z4B,EAAAA,OAAAA,KAC3BorB,EAAM3wB,GAAG2x1B,WACT,+BAEI3pzB,EAAAA,OAAAA,SAAQkx2B,IAIFn11B,EAAAA,OAAAA,SAAQssyB,EAAY1gK,yBAAeS,oBAC7C2oN,EAAgBppN,yBAAeS,oBAAoBwB,UAAU7srB,KAC5Dk04B,GAGa,gBAAVtipB,EACHoipB,EAAgBppN,yBAAeI,SAAS6B,UAAU7srB,KAAKk04B,GACnC,aAAVtipB,EACVoipB,EAAgBppN,yBAAeK,QAAQ4B,UAAU7srB,KAAKk04B,GAClC,qBAAVtipB,EACVoipB,EAAgBppN,yBAAeO,OAAO0B,UAAU7srB,KAAKk04B,GAE3C,iBAAVtipB,GACU,yBAAVA,EAEAoipB,EAAgBppN,yBAAeQ,OAAOyB,UAAU7srB,KAAKk04B,GAErDF,EAAgBppN,yBAAeM,IAAI2B,UAAU7srB,KAAKk04B,GApBnDF,EAAgBppN,yBAAeC,IAAIgC,UAAU7srB,QACzC1D,KAAKG,MAAMmvB,EAAM3wB,GAAG2x1B,WAAW//J,WAAa,MAsBlD,CAGD,CAKA,OAHA1qlB,EAAMyqvB,WAAW//J,UAAYmnN,EAC7B7xyB,EAAMyqvB,WAAW77wB,QAAUkj0B,EAEpBro3B,GAGFwo3B,oBAAsBl03B,IAC3B,MAAM,YAAEjP,EAAW,OAAEiB,EAAM,MAAEtB,GAAUsP,GACjC,gBAAEg20B,GAAoBtl1B,GACtB,QAAEuB,GAAYD,EAEhBC,EAAQhS,KAAK+11B,kBAAoBA,GACpCjl1B,EAAYwB,IAAe,IAAd,MAAE7B,GAAO6B,EACrB,MAAM3K,GAAQ27J,EAAAA,OAAAA,WAAU7yJ,GAExB,OADA9I,EAAMqyD,SAAShoD,EAAQhS,KAAKk04B,gBAAkBli4B,EACvC,CACNL,UAAW,QACXD,KAAM,WACNrW,MAAOsM,EAAMqyD,aAMJm60B,8BAAgCni4B,IAAW,IAAAoi4B,EAAAC,EAAAC,EACvD,MAAMC,EAAqC,QAAfH,EAAGpi4B,EAAQhS,YAAI,IAAAo04B,OAAA,EAAZA,EAAcr+C,gBACvCm+C,EAA6B,QAAfG,EAAGri4B,EAAQhS,YAAI,IAAAq04B,OAAA,EAAZA,EAAcH,eAEhCx24B,OAAOs04B,6CACXt04B,OAAOs04B,2CAA6C,IAGrD,MAAMwC,EAAmB924B,OAAOs04B,2CAG/BwC,EAAiBr64B,OAAS,IACP,QAAnBm64B,EAAAE,EAAiB,UAAE,IAAAF,GAAM,QAANA,EAAnBA,EAAqBt04B,YAAI,IAAAs04B,OAAA,EAAzBA,EAA2Bv+C,mBAAoBw+C,IAI/C724B,OAAOs04B,2CAA6C,IAGrDt04B,OAAOs04B,2CAA2Cny4B,KAAI6G,kBAAC,CAAC,EACpDsL,EAAO,CACVg4E,UAAW5qF,KAAKC,MAChB604B,qBAIWO,yBAA2B103B,IAAa,IAAA203B,EAAAC,EACpD,MAAM,OAAE5i4B,EAAM,MAAEtB,EAAK,WAAEhY,GAAesnB,GAChC,QAAE/N,GAAYD,GACd,8BACL6i4B,EAAgC,GAAE,qBAClC7mB,GACGt13B,GACE,uBAAEw54B,GAA2BlkB,EAmBjC,IAAA8mB,GAlBFV,8BAA8Bni4B,GAE1BvB,EAAMii4B,+BACT754B,QAAQ0J,MACP,sFAAsFqy4B,cAKvFE,YAAY/03B,IAKZky3B,KACa,QADSyC,EACrB1i4B,EAAQhS,YAAI,IAAA004B,GAAgB,QAAhBA,EAAZA,EAAcne,sBAAc,IAAAme,GAAsB,QAAtBA,EAA5BA,EAA8B3mB,4BAAoB,IAAA2mB,OAAA,EAAlDA,EACGzC,yBACJA,KAAuC,QAAjB0C,EAAK3i4B,EAAQhS,YAAI,IAAA204B,OAAA,EAAZA,EAAc5+C,oBAEP,eAAlB,QAAZ8+C,EAAA7i4B,EAAQhS,YAAI,IAAA604B,OAAA,EAAZA,EAAc3/C,cACjBw+C,qBAAqB3z3B,GACrBk03B,oBAAoBl03B,IAEpBg13B,0BAA0Bh13B,MAKhBg13B,0BAA4Bh13B,IAAa,IAAAi13B,EAAAC,EAAAC,EACrD,MAAM,OACLnj4B,EAAM,WACNtZ,EAAU,SACV0b,EAAQ,MACR1D,EAAK,YACLK,EAAW,iBACX8jB,GACG7U,GAEE,QAAE/N,GAAYD,EACdkg4B,EACLjg4B,SAAa,QAANgj4B,EAAPhj4B,EAAShS,YAAI,IAAAg14B,OAAA,EAAbA,EAAeze,eAAexI,qBAAqBkkB,uBACpD,IAAIxb,GAAyBzk3B,SAAa,QAANij4B,EAAPjj4B,EAAShS,YAAI,IAAAi14B,OAAA,EAAbA,EAAexe,yBAA0B,CAAC,EACnE0e,EACHnj4B,SAAa,QAANkj4B,EAAPlj4B,EAAShS,YAAI,IAAAk14B,GAAuD,QAAvDA,EAAbA,EAAe3e,eAAexI,qBAAqBqnB,yBAAiB,IAAAF,OAAA,EAApEA,EACGG,SACJ,MAAM,8BACLT,EAA6B,SAC7BrkP,EAAQ,YACR4kB,EAAW,qBACX44M,GACGt13B,GACE,0BACL+54B,EAAyB,iBACzBG,EAAgB,gBAChB58C,GACGtl1B,GACE,gBACL492B,EAAe,oBACf9C,EAAmB,WACnBpx1B,GACG4z1B,EAIJ,GAFA+mB,YAAY/03B,IAGqB,IAAhCo13B,GACgC,SAAhCA,EAMD,GAAIxC,GAAoBV,IAA2Bl8C,EAAiB,KAAAu/C,EACnExk4B,EAAY6B,IAAe,IAAd,MAAElC,GAAOkC,EACrB,MAAMi3rB,EAAe,CACpB,CACCj4rB,UAAW,MACXD,KAAM,4BACNrW,OAAO,IAGHsM,GAAQ27J,EAAAA,OAAAA,WAAU7yJ,GACxB,KAAKqyB,EAAAA,OAAAA,SAAQ2z1B,GAAyB,CACrC,MAAM+c,GAAclwuB,EAAAA,OAAAA,WAAUmztB,GAE9B,GADA9u3B,EAAMqp4B,yBAA2BwC,IAC5B1w2B,EAAAA,OAAAA,SAAQ2z1B,EAAuBhr2B,OAAQ,CAC3CtX,EAASq7B,0CAAmC,CAC3CxqC,SAASqZ,EAAAA,iBAAAA,GACR,8CACAkt2B,GAA4Cpx1B,GAE7Cp+B,KAAM,SACNikyB,gBAAgB,IAGjB,MAAMu1G,EAAkB9B,sCACvBhd,EAAuBhr2B,OACtB,GAAGgh0B,WACL9k1B,EAAMqyD,SAAwB,cAAIu70B,EAClC3rM,EAAa/psB,KAAK,CACjB8R,UAAW,QACXD,KAAM,WACNrW,MAAOsM,EAAMqyD,WAEd4voB,EAAa/psB,KAAK,CACjB8R,UAAW,MACXD,KAAM,2BACNrW,MAAOsM,EAAMqp4B,2BAEVuE,EAAgBxmN,kBACnB6a,EAAa/psB,KAAK,CACjB8R,UAAW,MACXD,KAAM,iBACNrW,MAAKqL,kBAAA,GACDiB,EAAM8n4B,eAAc,CACvB1gN,iBAAkBwmN,EAAgBxmN,oBAItC,CACD,CACA,OAAO6a,IAER,MAAM0nL,EACLt/2B,SAAa,QAANsj4B,EAAPtj4B,EAAShS,YAAI,IAAAs14B,GAAgB,QAAhBA,EAAbA,EAAe/e,sBAAc,IAAA+e,GAAsB,QAAtBA,EAA7BA,EAA+BvnB,4BAAoB,IAAAunB,OAAA,EAAnDA,EACGhkB,uBACJof,gCAAgCpf,EACjC,KAAO,CACN,MAAM1nL,EAAe,CACpB4oM,2BAA2B,GAE5B,IACEnkB,GACD4jB,GAA0BlkB,EAAqBkkB,uBAS/C,YAPAp54B,QAAQ0J,MACP,+CAA+C0v4B,UAC9C5jB,EACG,iDAAiDN,EAAqBkkB,yBACtE,sFAMN,IAAKO,EAA2B,CAC/B,MAAMgD,GAAUn14B,EAAAA,OAAAA,KAAIo23B,EAAwB,QAAS,IAAIt83B,OAMzD,YALAtB,QAAQ0J,MACP,YAAYiz4B,GAAW,wBACX,GAAXA,EAAe,GAAK,mFAC2DZ,YAGlF,CAEA,IAAI9x2B,EAAAA,OAAAA,SAAQ2z1B,GAOX,OAJA593B,QAAQ0E,KACP,kJAEDuT,EAAY84rB,GAIb6sL,EAAuBhr2B,MAAMpa,QAAQ0a,IACpCA,EAAK0g0B,WAAqB,UAAI,IAE/B,MAAM+mD,GAAclwuB,EAAAA,OAAAA,WAAUmztB,GAC9B7sL,EAAaonM,yBAA2BwC,EACxC,MAAMiC,EAAwB3nN,sBAAc2oM,GAmBC,IAAAif,EAjB7C,GAAID,KAA0B3y2B,EAAAA,OAAAA,SAAQ2z1B,EAAuBhr2B,OAC5Dm+qB,EAAagnM,sBAAqBlq4B,kBAAA,GAC9B+v3B,EAAsB,CACzBhr2B,MAAOgo3B,sCACNhd,EAAuBhr2B,OACtBniB,MAAM,KAET6K,EAASq7B,0CAAmC,CAC3CxqC,SAASqZ,EAAAA,iBAAAA,GACR,8CACAkt2B,GAA4Cpx1B,GAE7Cp+B,KAAM,SACNikyB,gBAAgB,SAIjB,GADAp2F,EAAagnM,sBAAwBna,IAChC3z1B,EAAAA,OAAAA,SAAQ2z1B,EAAuBhr2B,OACnCtX,EAASq7B,0CAAmC,CAC3CxqC,SAASqZ,EAAAA,iBAAAA,GACR,qCAC4B,QADQq33B,EACpCjf,EAAuBhr2B,aAAK,IAAAiq3B,OAAA,EAA5BA,EAA8Bv74B,OAC9Box3B,GAA4Cpx1B,GAE7Cp+B,KAAM,SACNikyB,gBAAgB,IAKnB,KAAKl9vB,EAAAA,OAAAA,SAAQ2z1B,EAAuBhr2B,OAAQ,CAQ3C,GAPAgr2B,EAAuBhr2B,MAAMpa,QAAQ0a,IACpCA,EAAK0g0B,WAAWl8L,SAAWA,EAC3BxkoB,EAAK0g0B,WAAWt3K,YAAcA,IAE/BshN,EAAuBhr2B,MAAQ+l3B,kBAC9B/a,EAAuBhr2B,OAEpBgr2B,EAAuBhr2B,MAAMtxB,OAAS,EACzC,IACC,MAAMy54B,EAAoB992B,eACzB2g2B,EAAuBhr2B,MAAM,GAAGgh0B,WAChCgqC,EAAuBhr2B,MAAM,GAAG+6I,UAEjCojiB,EAAa6lM,eAAiBmE,CAC/B,CAAE,MAAOj74B,GACRE,QAAQC,MACP,2DACAH,EAEF,CAID,IAAK884B,GAAyBhf,EAAuBhr2B,MAAMtxB,OAAS,EAAG,KAAAw74B,EACtE,MAAMrkB,EACLt/2B,SAAa,QAAN2j4B,EAAP3j4B,EAAShS,YAAI,IAAA214B,GAAgB,QAAhBA,EAAbA,EAAepf,sBAAc,IAAAof,GAAsB,QAAtBA,EAA7BA,EAA+B5nB,4BAAoB,IAAA4nB,OAAA,EAAnDA,EACGrkB,uBACJof,gCAAgCpf,EACjC,CACD,CACAxg3B,EAAY84rB,EACb,MAtKCh1qB,EAAiB,CAAEg+2B,0BAA0B,KAyKlCgD,0BAA4Bhj4B,IAAsC,IAArC,OAAEb,EAAM,SAAEoC,EAAQ,WAAE1b,GAAYma,EACzE,MAAM,QAAEZ,GAAYD,GACd,yBAAEi/3B,GAA6Bv44B,EAE/Bo94B,EAAY1E,kBACjBH,EACAh/3B,EACAvZ,IAEIqqC,EAAAA,OAAAA,SAAQku2B,GAGZn44B,QAAQ0E,KACP,iGAHD4W,EAASm83B,2BAA4BuF,IAQ1BC,wCAA0C/13B,IACtD,MAAM,OAAEhO,EAAM,SAAEoC,EAAQ,WAAE1b,EAAU,MAAEgY,GAAUsP,GAG/C/N,SAAS,MAAE+jQ,IACRhkQ,EAIEwj3B,EAAsB,CAC3BziN,WAAY,kBACZqc,SAAU,GAJMp5a,EAAMA,OAAS,2BAK/Bo9mB,qBAAsBp9mB,EAAMq9mB,sBAG7Byd,uBACC9+3B,EACAoC,EACA1D,EACAhY,GACA,EACA883B,IAIIwgB,0CAA4Ch23B,IACjD,MAAM,OAAEhO,EAAM,SAAEoC,EAAQ,WAAE1b,EAAU,MAAEgY,GAAUsP,GAG/C/N,SAAS,MAAE+jQ,IACRhkQ,EAIEwj3B,EAAsB,CAC3BziN,WAAY,mBACZqc,SAAU,GAJMp5a,EAAMA,OAAS,4BAK/Bo9mB,qBAAsBp9mB,EAAMq9mB,sBAG7Byd,uBACC9+3B,EACAoC,EACA1D,EACAhY,GACA,EACA883B,IAIWygB,oCAAsCj23B,IAClD,MAAM,OAAEhO,EAAM,SAAEoC,EAAQ,MAAE1D,EAAK,WAAEhY,GAAesnB,GAC1C,gBAAEk23B,GAAoBx94B,EACxBw94B,EACHC,sBACCnk4B,EACAoC,EACA1D,EACAk52B,iCAAuBpgM,iBAGxBusN,wCAAwC/13B,IAI7Bo23B,sCAAwCp23B,IACpD,MAAM,OAAEhO,EAAM,SAAEoC,EAAQ,MAAE1D,EAAK,WAAEhY,GAAesnB,GAC1C,gBAAEk23B,GAAoBx94B,EACxBw94B,EACHC,sBACCnk4B,EACAoC,EACA1D,EACAk52B,iCAAuBG,kBAGxBisB,0CAA0Ch23B,IAItCm23B,sBAAwBA,CAACnk4B,EAAQoC,EAAU1D,EAAO1U,KACvD,MAAM,QAAEiW,GAAYD,EACpBC,EAAQ0m3B,0BAA4BiY,qBACnC3+3B,EAAQ+jQ,MACRtlQ,GAED0D,EAAS6w2B,qCAA4Bt+2B,kBAAA,CACpCov3B,oBAAqB/53B,GAClBiW,KAIQsi3B,gCAA0B/w2B,IAKjC,IALkC,OACvCxR,EAAM,SACNoC,EAAQ,MACR1D,EAAK,WACLhY,GACA8qB,EACA,MAAM,gBAAE0y3B,GAAoBx94B,EACxBw94B,EACHC,sBACCnk4B,EACAoC,EACA1D,EACAk52B,iCAAuBrlC,oBAGxBusD,uBAAuB9+3B,EAAQoC,EAAU1D,EAAOhY,IAIrCov1B,6CAAiB9n0B,IAC7B,MAAM,OAAEhO,EAAM,SAAEoC,EAAQ,MAAE1D,EAAK,WAAEhY,GAAesnB,GAC1C,gBAAEk23B,GAAoBx94B,EACxBw94B,EACHC,sBACCnk4B,EACAoC,EACA1D,EACAk52B,iCAAuBC,UAGxBwsB,yBAAyBr23B,IAIrBq23B,yBAA2Br23B,IAChC,MAAM,OAAEhO,EAAM,SAAEoC,EAAQ,WAAE1b,EAAU,MAAEgY,GAAUsP,GAG/C/N,SACCD,QAAQ,MAAE1W,EAAK,OAAEq2X,GAAQ,MACzB37G,IAEEhkQ,EAEEg+2B,EAAWh6mB,EAAMA,OAAS,SAI1Bw/mB,EAAsB,CAC3BziN,WAAY41M,+BACZv5L,SAAU,GAAG4gM,KAHb103B,EAAQ,EAAImt3B,iCAAyBC,4CAIrCwK,YAAavhgB,EACbyhgB,qBAAsBp9mB,EAAMq9mB,sBAG7Byd,uBACC9+3B,EACAoC,EACA1D,EACAhY,GACA,EACA883B,IAIW8gB,uBAAyBno2B,IAAiC,IAAhC,OAAEn8B,EAAM,SAAEoC,EAAQ,MAAE1D,GAAOy9B,EACjEgo2B,sBACCnk4B,EACAoC,EACA1D,EACAk52B,iCAAuBhlC,qBAIZ2xD,sBAAwBno2B,IAAiC,IAAhC,OAAEp8B,EAAM,SAAEoC,EAAQ,MAAE1D,GAAO09B,EAChE+n2B,sBACCnk4B,EACAoC,EACA1D,EACAk52B,iCAAuBE,oBASZioB,qCAAuC/x3B,IACnD,MAAM,SAAE5L,EAAQ,WAAE1b,EAAU,YAAEqY,GAAgBiP,GACxC,8BAAE603B,GAAkCn84B,EAI1C,GAFAq84B,YAAY/03B,GAER603B,EAAgC,EAAG,CACtC,MAAM2B,EAAUpm3B,WACfhc,IACCA,EAASi83B,+BAEsB,IAAhCwE,EACAzg4B,GAEDrD,EAAY,CAAE0l4B,yBAA0BD,GACzC,GAGYzB,YAAc/03B,IAC1B,MAAM,MAAEtP,EAAK,YAAEK,GAAgBiP,GACzB,yBAAEy23B,GAA6B/l4B,EACjC+l4B,IACHpm3B,aAAaom3B,GACb1l4B,EAAY,CACX0l4B,yBAA0B,KAC1B9D,+BAA+B,MAKrB+D,6BAA+Bjo2B,IAA4B,IAA3B,MAAE/9B,EAAK,YAAEK,GAAa09B,EAClE,MAAM,0BAAEgk2B,GAA8B/h4B,EAClC+h4B,IACH354B,QAAQ0J,MACP,iKAEDuO,EAAY,CACX0h4B,2BAA2B,EAC3BgE,yBAA0B,KAC1B9D,+BAA+B,MAKrBgE,aAAe7j2B,IAA6B,IAA5B,OAAE9gC,EAAM,YAAEjB,GAAa+hC,EACnD,MACC7gC,SACCD,QAAQ,KAAEhW,KAERgW,EAEAhW,IAAS883B,aACZ/n3B,EAAY,CAAEoh4B,gBAAgB,KAInByE,kBAAoB523B,IAChC,MAAM,OAAEhO,GAAWgO,EAEby/R,EAAUztS,EAAOC,QAAQwtS,QACzBxrS,GAASgjoB,EAAAA,2BAAAA,wBAAuBx3V,GACtCxrS,EAAOA,UAAUA,EAAOtL,KAAMqX,KC77B/BxB,EAAAA,aAAAA,qBAAoB,wBAAyB,CAC5CC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,2BACJvmB,WAAY,CAKXk1D,MAAO,CACNjvC,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAQR4+D,OAAQ,CACPj8C,QAAS0nqB,qBACTxnqB,OAAQ,CACP7iB,KAAM,WAOR8+3B,cAAe,CACdn82B,QAAS472B,cACT172B,OAAQ,CACP7iB,KAAM,WAORsz4B,oBAAqB,CACpB3w3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORiE,KAAM,CACL0e,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAQRk/3B,0BAA2B,CAC1Bv82B,QAAS672B,sBACT372B,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,OAOlCi82B,kBAAmB,CAClBp82B,QAAS872B,mBACT572B,OAAQ,CACP7iB,KAAM,WAQRqz4B,qBAAsB,CACrB1w3B,QAAS+72B,gBACT772B,OAAQ,CACP7iB,KAAM,SACN8iB,KAAM,CAAC,KAAM,KAAM,QASrB2w3B,MAAO,CACN9w3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORyo3B,uBAAwB,CACvB9l2B,QAAS,CAAC,EACVkmB,QAAAA,CAAQr+B,GAA2B,IAAxB9N,YAAY,KAAEuH,IAAQuG,EAChC,MAAMom2B,IACJ7p0B,EAAAA,OAAAA,SAAQ9iC,IAASmJ,MAAMC,QAAQpJ,EAAKyk3B,aAClCzk3B,EAAKyk3B,YACL,GACJ,OAAOrC,wCAAkCzV,EAC1C,EACA/t1B,OAAQ,CACP7iB,KAAM,UAEP2o3B,YAAY,GAMb4qB,cAAe,CACd5w3B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR0zD,UAAW,CACV/wC,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORwz4B,qBAAsB,CACrB7w3B,QAAS,GAMV+w3B,eAAgB,CACf/w3B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAGRi+D,SAAU,CACTt7C,QAAS,CAAC,GAEXqv2B,qBAAsB,CACrBrv2B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACX0hC,WAAY,CAAEzb,QAAS,GAAI3iB,KAAM,UACjCwv3B,oBAAqB,CAAE7s2B,QAAS,GAAI3iB,KAAM,UAC1Cwx3B,kBAAmB,CAAE7u2B,QAAS,GAAI3iB,KAAM,UACxCyx3B,cAAe,CAAE9u2B,QAAS,GAAI3iB,KAAM,UACpC67sB,YAAa,CAAEl5rB,QAAS,GAAI3iB,KAAM,UAClCmz3B,oBAAqB,CAAExw2B,QAAS,GAAI3iB,KAAM,UAC1Coz3B,2BAA4B,CAAEzw2B,QAAS,GAAI3iB,KAAM,UACjDyz3B,iBAAkB,CAAE9w2B,QAAS,GAAI3iB,KAAM,UACvCu13B,uBAAwB,CAAE5y2B,QAAS,CAAC,EAAG3iB,KAAM,aAIhDi14B,yBAA0B,CACzBty3B,QAAS,CAAC,GAEX2hrB,eAAgB,CACf3hrB,SAAS,IAGXY,OAAM,gCACN+qxB,eAAc,2CACdp4xB,aAAc,CACbu31B,YAAa,MAEdr31B,eAAgB,CACf,CAAC8ppB,yDAA0BnqpB,IAAkB,IAAjB,SAAEqC,GAAUrC,EACvCqC,EAASum3B,gCAEV,CAACpq3B,aAAAA,YAAYggB,oBAAqBle,IAK5B,IAJLL,QACCC,SAAS,KAAEnB,IACX,YACDC,GACAsB,EAEAtB,EAAY,CAAE041B,YADM341B,EAAK8L,wBAAwBzB,SAGlD,CAAC5K,aAAAA,YAAYJ,yBAA0BoC,IAKjC,IAJLP,QACCC,SAAS,KAAEnB,IACX,YACDC,GACAwB,EAEAxB,EAAY,CAAE041B,YADM341B,EAAK8L,wBAAwBzB,SAGlD,CAACkt1B,oDAAqBz11B,IAAuC,IAAtC,SAAEwB,EAAUpC,QAAQ,QAAEC,IAAWW,EACvDwB,EAASnC,EAAQ6/1B,oBAAqB7/1B,EAAQ8/1B,kBAE/C,CAACzJ,6CAAoCz11B,IAG/B,IAHgC,SACrCuB,EACApC,QAAQ,QAAEC,IACVY,EACAuB,EAASwm3B,8BAA+B3o3B,IAEzC,CAACs21B,4CAAmC/k1B,IAAuC,IAAtC,SAAEpP,EAAUpC,QAAQ,QAAEC,IAAWuR,EACrEpP,EAASym3B,2BAA4B5o3B,IAEtC,CAACq+3B,uBAAwB,CACxBr83B,OAAQ4h4B,0BACR303B,iBAAiB,IAGnBC,WAAY,CAMXw52B,8BAA+B,CAAC,EAMhCC,8BAA+B,CAAC,EAMhCC,2BAA4B,CAAC,GAE9Bzp3B,UAAW,CACV,CACCsiB,SAAUgyoB,YACVpkqB,QAAS,CACRst1B,YAAa,eAAe5oK,2DC1ShC,MAAM/mqB,gCAAOvO,IACZ,MACChY,YAAY,SACX83pB,EAAQ,YACR4kB,EAAW,OACX0kN,EAAM,gBACN+c,EAAe,yBACfC,EAAwB,WACxBC,EAAU,eACVC,EAAc,qBACdhpB,EAAoB,eACpB1tL,EAAc,yBACduyM,EAAwB,UACxBhB,EAAS,kBACToF,GAED7l4B,WAAW,WAAEim0B,GAAY,eACzBq4D,EAAc,qBACdF,EAAoB,sBACpBqB,EAAqB,0BACrB4B,EAAyB,SACzBx40B,EAAQ,yBACRg30B,EAAwB,eACxBkB,GACGzh4B,EAEEwm4B,EACLJ,GAA4BrE,EACvB0E,EAAgBL,EAChBM,IAA0Br02B,EAAAA,OAAAA,UAC/BziC,EAAAA,OAAAA,KAAIuw4B,EAAuB,QAAS,KAK/BtB,EAAgB,CACrB8H,gBAAgB,EAChB5N,iBAJgBpyD,EAAWuX,YAK3Bo6C,UAAU,EACVsD,WAAW,EACXlH,gBAAgB,GAKXkS,EAAsBL,IAC1BG,GAA0BF,KAC1B993B,EAAAA,kCAAAA,eAAA,OACCkhB,UAAU,mBACVpb,MAAO,CACN,eAAgB633B,IAAeF,GAAmBM,MAGnD/93B,EAAAA,kCAAAA,eAAA,yBACCm+3B,iBAAiB,GACjBt34B,KAAM4w4B,EACNxB,qBAAqB,KACrBC,qBAAqB,EACrBC,cAAeA,EACfG,eAAgBA,EAChBl/O,SAAUA,EACV4kB,YAAaA,EACb1lnB,UAAWwn1B,EACX1H,qBAAsBA,EACtBv10B,SAAUA,EACV+zzB,qBAAsBA,EACtBijB,yBAA0BA,EAC1B3wM,eAAgBA,KAKdk3M,EAAeT,IAAeF,GAAmBM,KACtD/93B,EAAAA,kCAAAA,eAAA,oBACC0g3B,OAAQA,EACRC,WAAYqd,EACZ1n1B,UAAWyn1B,IAIPM,GACLr+3B,EAAAA,kCAAAA,eAAC41B,kCAAAA,SAAQ,KACPgo2B,IAAmBI,GAA0BF,KAC7C993B,EAAAA,kCAAAA,eAACs+3B,oBAAU,CAACho1B,UAAWwn1B,KAExB993B,EAAAA,kCAAAA,eAAA,OACCkhB,UAAU,wBAIVpb,MAAO,CACN,WACG233B,IAAoBC,IACrBM,IACAL,IAGFO,EACAE,IAKEG,GACLv+3B,EAAAA,kCAAAA,eAAA,aACC+uB,OAAQ0w1B,WACR/v1B,KAAM07nB,oBACN12oB,QAAS8q2B,cACT5m3B,OAAQ,CAAEhW,KAAM883B,aAChB,oBAII8e,EACLT,GACAD,GACAL,GACAO,EAED,OACCh+3B,EAAAA,kCAAAA,eAAA,OACCkhB,UAAU,sBACVpb,MAAO,CACN,YAAY233B,GAAqBM,GAAkBD,KAGnDrF,IAAaz43B,EAAAA,kCAAAA,eAAA,qCACby53B,GACGV,GAAkBwF,EACnBC,GAAkBH,IAKxB,2D,gIC7IO,MAAMI,8BAAgCrr1B,GAAazxC,IACzD,MAAM,UAAEiF,GAAcjF,GAChB,MAAErK,EAAK,YAAEK,EAAW,OAAEiB,GAAWgO,GACjC,4BAAE833B,GAAgCpn4B,EAExC,GAAI87C,IAAcoj1B,uBAAwB,CACzC,MAAM,QAAE393B,GAAYD,EACpB,IAAKC,EAAQ4a,UACZ,MAEF,CAEA,MAAMo9D,EAAY5qF,KAAKC,MAUvB,GARAyR,EAAY,CACX+m4B,4BAA2Bnx4B,kBAAA,GACvBmx4B,EAA2B,CAC9B,CAACtr1B,GAAYy9B,MAMdz9B,IAAcqj1B,yBAAyBE,wBACvCvj1B,IAAcqj1B,yBAAyBG,oBACtC,CACD,MAAM+H,EAAiBpx4B,kBAAA,GACnBmx4B,EAA2B,CAC9B,CAACtr1B,GAAYy9B,IAGR+tzB,EAAaD,EAAkBnI,wBAC/BqI,EACLF,EAAkBlI,yBAAyBC,sBACtCoI,EACLH,EAAkBlI,yBAAyBE,wBACtCoI,EACLJ,EAAkBlI,yBAAyBG,qBAE5C,GAAIgI,GAAcC,IAAgBC,GAAiBC,GAAa,CAC/D,MAAMC,EAAwBH,EAAcD,EAEtC7v2B,EAAS+v2B,EACZ,yBACA,sBACGG,GAJiBH,GAAiBC,GAISF,EAEjDn/4B,QAAQ0J,MACP,kDAAkD414B,gCAAoDjw2B,KAAUkw2B,OAGjHtn4B,EAAY,CACX+m4B,4BAA6B,CAAC,GAEhC,CACD,CAEA,OAAO/83B,ICrBA3K,oBAAmB,yDAAEF,2BAA0BA,iEAAKK,aAAAA,YAE5D,sCACC,CAACH,0DAAsB,CACtB6D,OAAQ870B,iCACR7u0B,iBAAiB,GAElB,CAAChR,iEAA6B,CAC7B+D,OAAQs2zB,6DACRrpzB,iBAAiB,GAElB,CAACyj0B,iDAAoB,CACpB1w0B,OAAQ6z0B,6CACR5m0B,iBAAiB,GAElB,CAACgv1B,gEAAmC,CACnCj81B,OAAQsg3B,gCACRrz2B,iBAAiB,GAElB,CAAC0j0B,kDAAqB,CACrB3w0B,OAAQqi4B,uBACRp13B,iBAAiB,GAElB,CAAC4o2B,mBAAoB,CACpB712B,OAAQsi4B,sBACRr13B,iBAAiB,GAElB,CAACul0B,2BAAoB,CACpBxy0B,OAAQ293B,qBACR1w3B,iBAAiB,GAElB,CAACov3B,uBAAwB,CACxBr83B,OAAQ4h4B,0BACR303B,iBAAiB,GAElB,CAACkl0B,gCAAyB,CACzBny0B,OAAQgi4B,oCACR/03B,iBAAiB,GAElB,CAACml0B,kCAA2B,CAC3Bpy0B,OAAQmi4B,sCACRl13B,iBAAiB,GAElB,CAAC0u3B,wBAAyB,CACzB373B,OAAQ6+3B,qBACRh2N,aAAc,CAAC+6N,8BAA8BjI,yBAC7C1u3B,iBAAiB,GAElB,CAACuv3B,0BAA2B,CAC3Bx83B,OAAQ0i4B,aACRz13B,iBAAiB,GAElB,CAAC2u3B,yBAAyBC,sBAAuB,CAChD773B,OAAQ+L,IACP,MAAM,OAAEhO,GAAWgO,GACb,QAAE/N,GAAYD,EACpBlZ,QAAQ0J,MAAM,qCAAsCyP,IAErD6qqB,aAAc,CACb+6N,8BACChI,yBAAyBC,uBAG3B5u3B,iBAAiB,GAElB,CAAC2u3B,yBAAyBE,wBAAyB,CAClD973B,OAAQzN,IAAsC,IAArC,OAAEwL,EAAM,SAAEoC,EAAQ,WAAE1b,GAAY8N,EACxC1N,QAAQ0J,MAAM,uCAAwCwP,GACtDoC,EAASg83B,oBAAqB,CAC7B8B,uBACCx54B,EAAWs13B,qBAAqBkkB,uBACjCzylB,QAAS/mT,EAAWs13B,qBAAqBwkB,+BAE1Cp+3B,EAASs83B,qCAEV5zN,aAAc,CACb+6N,8BACChI,yBAAyBE,yBAG3B7u3B,iBAAiB,GAElB,CAAC2u3B,yBAAyBG,qBAAsB,CAC/C/73B,OAAQ+L,IACP,MAAM,YAAEjP,EAAW,OAAEiB,GAAWgO,GAC1B,QAAE/N,GAAYD,EACpBlZ,QAAQC,MAAM,oCAAqCkZ,GACnDlB,EAAY,CACXwh4B,8BAA+B,GAC/BE,2BAA2B,EAC3BG,kBAAkB,KAGpB91N,aAAc,CACb+6N,8BACChI,yBAAyBG,sBAG3B9u3B,iBAAiB,GAElB,CAAC2u3B,yBAAyBI,kBAAmB,CAC5Ch83B,OAAQyg4B,yBACRxz3B,iBAAiB,GAElB,CAAC2u3B,yBAAyBK,2BAA4B,CACrDj83B,OAAQ+L,IACPlnB,QAAQ0J,MAAM,0CAA2Cwd,KAG3D,CAACqw3B,8BAA+B,CAC/Bp83B,OAAQyi4B,6BACRx13B,iBAAiB,GAElB,CAACiv3B,sDAAuD,CACvDl83B,OAAQyg4B,yBACRxz3B,iBAAiB,GAElB,CAACkv3B,qBAAsB,CACtBn83B,OAAQ2i4B,kBACR113B,iBAAiB,KCpJnB1C,EAAAA,aAAAA,qBAAoB,wBAAyB,CAC5CC,SAAU,CAAEziB,KAAM0iB,kCAAAA,SAClBO,KAAI,2BACJ/M,aAAc,CACbs93B,qBAAsB,EACtB+C,8BAA+B,GAC/B1B,sBAAuB,CAAC,EACxBnB,eAAgB,CAAC,EACjB+C,2BAA2B,EAC3BgE,yBAA0B,KAC1Bx80B,SAAU,CAAC,EACX240B,kBAAkB,EAClB3B,yBAA0B,CAAC,EAC3Bj7C,gBAAiB,KACjBm8C,gBAAgB,EAChBQ,+BAA+B,EAC/BmF,4BAA6B,CAAC,GAE/Bv43B,OAAM,gCACNnN,eAAc,qCACd1Z,WAAY,CAKX254B,aAAc,CACb1z3B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,WAQRw0pB,SAAU,CACT7xoB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAORo5qB,YAAa,CACZz2pB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR864B,yBAA0B,CACzBn43B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR+lsB,SAAU,CACTpjrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR893B,OAAQ,CACPn72B,QAAS,GACTE,OAAQ,CACP7iB,KAAM,UAOR664B,gBAAiB,CAChBhy2B,QAAAA,CAAQr+B,GAA6B,IAA1B9N,YAAY,OAAEoh4B,IAAUtz3B,EAClC,QAAQu8B,EAAAA,OAAAA,SAAQ+21B,EACjB,GAKDwe,qBAAsB,CACrBzz2B,QAAAA,CAAQ9yB,GAAmC,IAAAwm4B,EAAA,IAAhC7/4B,YAAY,aAAE254B,IAAgBtg4B,EACxC,OAAOsg4B,SAAmB,QAAPkG,EAAZlG,EAAc3m3B,aAAK,IAAA6s3B,OAAA,EAAnBA,EAAqBjn4B,QAC3B0a,GAASA,EAAK0g0B,WAAqB,UAAI,EAEzC,GAKD0qD,uBAAwB,CACvBvy2B,QAAAA,CAAQxyB,GAAmC,IAAhC3Z,YAAY,aAAE254B,IAAgBhg4B,EACxC,QAAQ0wB,EAAAA,OAAAA,SAAQsv2B,EAAa3m3B,MAC9B,GAMDsi2B,qBAAsB,CACrBrv2B,QAAS,CAAC,EACVE,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACX0hC,WAAY,CAAEzb,QAAS,GAAI3iB,KAAM,UACjCwv3B,oBAAqB,CAAE7s2B,QAAS,GAAI3iB,KAAM,UAC1Cwx3B,kBAAmB,CAAE7u2B,QAAS,GAAI3iB,KAAM,UACxCyx3B,cAAe,CAAE9u2B,QAAS,GAAI3iB,KAAM,UACpC67sB,YAAa,CAAEl5rB,QAAS,GAAI3iB,KAAM,UAClCmz3B,oBAAqB,CAAExw2B,QAAS,GAAI3iB,KAAM,UAC1Coz3B,2BAA4B,CAAEzw2B,QAAS,GAAI3iB,KAAM,UACjDyz3B,iBAAkB,CAAE9w2B,QAAS,GAAI3iB,KAAM,UACvCu13B,uBAAwB,CAAE5y2B,QAAS,CAAC,EAAG3iB,KAAM,aAQhD+9pB,sBAAuB,CACtBp7oB,QAAS,GACTE,OAAQ,CACP7iB,KAAM,WAMR+64B,WAAY,CACXp43B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAMRg74B,eAAgB,CACfr43B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAMR644B,8BAA+B,CAC9Bl23B,SAAU,EACVE,OAAQ,CACP7iB,KAAM,WAMRsksB,eAAgB,CACf3hrB,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAURk64B,gBAAiB,CAChBv33B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR624B,yBAA0B,CACzBl03B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAOR614B,UAAW,CACVlz3B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,YAMRi74B,kBAAmB,CAClBt43B,SAAS,EACTE,OAAQ,CACP7iB,KAAM,aAIToV,UAAW,CACV,CACCsiB,SAAUgyoB,YACVpkqB,QAAS,CACRst1B,YAAa,eAAe5oK,yDAI/B7kqB,WAAY,CAKX,uCAAwC,CACvCtC,OAAQ,CACP7iB,KAAM,SACNtD,WAAY,CACXy0pB,MAAO,CAAEnxpB,KAAM,UACf01P,MAAO,CAAE11P,KAAM,UACfw84B,OAAQ,CACPx84B,KAAM,SACNtD,WAAY,CACX+tK,SAAU,CAAEzqK,KAAM,UAClB0w1B,WAAY,CACX1w1B,KAAM,SACNtD,WAAY,CACXk1D,MAAO,CAAE5xD,KAAM,UACfo7G,WAAY,CAAEp7G,KAAM,UACpBklD,MAAO,CAAEllD,KAAM,UACfwuC,OAAQ,CAAExuC,KAAM,UAChBmQ,YAAa,CAAEnQ,KAAM,UACrBg6Q,MAAO,CACNh6Q,KAAM,SACNtD,WAAY,CACX,mBAAoB,CAAEsD,KAAM,UAC5B,eAAgB,CAAEA,KAAM,UACxB,kBAAmB,CAAEA,KAAM,UAC3B,gBAAiB,CAAEA,KAAM,UACzB,4BAA6B,CAAEA,KAAM,UACrC,iBAAkB,CAAEA,KAAM,UAC1B,gBAAiB,CAAEA,KAAM,UACzBg6Q,MAAO,CAAEh6Q,KAAM,UACfmxpB,MAAO,CAAEnxpB,KAAM,UACfgxrB,OAAQ,CAAEhxrB,KAAM,UAChB01P,MAAO,CAAE11P,KAAM,sBC/Q1B2B,OAAO864B,0BAA0B500B,sBAAAA;AAAA,oBAAAA","sources":["webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/createBlob.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/serializer.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/normalizeKey.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/isWebStorageValid.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/runCallback.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/getCallback.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/constants.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/evictions/lru.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/evictions/ttl.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/evictions/evictionPolicies.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/getKeyPrefix.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/adapters/localStorage.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/adapters/IndexedDBCache.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/adapters/indexedDB.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/adapters/sessionStorage.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/adapters/cacheAPI.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/adapters/InMemoryCache.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/adapters/inMemory.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/stats/cacheStatsProxyHandler.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/isArray.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/extend.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/includes.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/runTwoCallbacks.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/cacheVersion.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/setGlobalCacheStats.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/utils/sumObjectsByKey.js","webpack:///@devsnc/library-unified-cache/24.0.8/src/cache/unifiedCache.js","webpack:///@servicenow/behavior-defer/28.0.46/src/defer.js","webpack:///@servicenow/behavior-focus/28.0.46/src/utils/get-focusable-nodes.js","webpack:///@servicenow/behavior-focus/28.0.46/src/utils/handle-focus.js","webpack:///@servicenow/behavior-focus/28.0.46/src/focus.js","webpack:///@servicenow/behavior-focus/28.0.46/src/utils/handle-tab-keydown.js","webpack:///@servicenow/behavior-modal/28.0.46/src/utils/constants.js","webpack:///@servicenow/behavior-modal/28.0.46/src/utils/update-elements.js","webpack:///@servicenow/behavior-modal/28.0.46/src/utils/tree-origin-node.js","webpack:///@servicenow/behavior-modal/28.0.46/src/modal.js","webpack:///@servicenow/behavior-resizable/28.0.46/src/components/utils/index.js","webpack:///@servicenow/behavior-resizable/28.0.46/src/components/resizable-target.js","webpack:///@servicenow/behavior-resizable/28.0.46/src/resizable.js","webpack:///@servicenow/behavior-resize/28.0.46/src/resize.js","webpack:///@servicenow/behavior-rtl/28.0.46/src/rtl.js","webpack:///@devsnc/library-uxf/src/factory/constants.js","webpack:///@servicenow/behavior-theme/28.0.46/src/hooks/index.js","webpack:///@servicenow/behavior-theme/28.0.46/src/hooks/globals.js","webpack:///@servicenow/behavior-theme/28.0.46/src/hooks/system.colors.js","webpack:///@servicenow/behavior-theme/28.0.46/src/hooks/datavis.colors.js","webpack:///@servicenow/behavior-theme/28.0.46/src/hooks/categories.js","webpack:///@servicenow/behavior-theme/28.0.46/src/hooks/systemTokens.js","webpack:///@servicenow/behavior-theme/28.0.46/src/theme.js","webpack:///@servicenow/behavior-theme/28.0.46/src/behavior.js","webpack:///@servicenow/behavior-tooltip/28.0.46/src/utils/constants.js","webpack:///@servicenow/behavior-tooltip/28.0.46/src/utils/get-tooltip.js","webpack:///@servicenow/behavior-tooltip/28.0.46/src/utils/scheduler.js","webpack:///@servicenow/behavior-tooltip/28.0.46/src/utils/register.js","webpack:///@servicenow/behavior-tooltip/28.0.46/src/tooltip.js","webpack:///@devsnc/uxf-runtime-utils/24.1.1/src/whenScreenMacroponentIdle/whenScreenMacroponentIdle.js","webpack:///@servicenow/behavior-truncation/28.0.46/src/truncation.js","webpack:///@servicenow/behavior-truncation/28.0.46/src/index.js","webpack:///@servicenow/library-enhanced-element/28.0.46/src/cast.js","webpack:///external module \"/uxasset/externals/@servicenow/ui-effect-update-state/index.jsdbx\"","webpack:///@servicenow/library-enhanced-element/28.0.46/src/locals.js","webpack:///@servicenow/library-enhanced-element/28.0.46/src/default-behaviors.js","webpack:///@servicenow/library-enhanced-element/28.0.46/src/constant-case.js","webpack:///@servicenow/library-enhanced-element/28.0.46/src/manageable-properties.js","webpack:///@servicenow/library-enhanced-element/28.0.46/src/scoped-action-name.js","webpack:///@servicenow/library-enhanced-element/28.0.46/src/on-render.js","webpack:///@servicenow/library-enhanced-element/28.0.46/src/create-enhanced-element.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/directional-keys.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/extension-split.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/filter-aria-attributes.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/to-array.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/find-tabbable-nodes.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/get-active-element.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/get-shadow-root-host.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/make-redispatch-effect.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/measure-text-factory.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/text-transform.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/measure-text.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/match-search-term.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/layer-events.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/dom-purify-config.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/dimensions.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/get-axis-info.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/content-area.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/content.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/content-styles.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/overlap.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/constrain.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/to-size-value.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/calculate-fit.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/content-area-styles.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/fit-info.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/fit/normalize-position.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/resolve-fit-properties.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/ariaLiveConstants.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/browser.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/get-column-styles.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/to-embeddable-url.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/get-caret-coordinates.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/sanitize-href.js","webpack:///@servicenow/library-enhanced-utils/28.0.46/src/index.js","webpack:///@servicenow/library-schemas/28.0.46/src/aria-config.js","webpack:///@servicenow/now-alert/src/utils/content-is-overset.js","webpack:///@servicenow/now-alert/src/utils/get-computed-overset-height.js","webpack:///@servicenow/now-alert/src/now-alert.js","webpack:///@servicenow/now-alert/src/utils/handle-resize.js","webpack:///@servicenow/now-alert/src/now-alert-list.js","webpack:///@servicenow/now-alert/src/index.js","webpack:///@servicenow/now-animation/src/utils/index.js","webpack:///@servicenow/now-animation/src/utils/theme-animation.js","webpack:///@servicenow/now-animation/src/now-animation.js","webpack:///@servicenow/now-avatar/src/now-avatar.js","webpack:///@servicenow/now-button/src/behaviors/index.js","webpack:///@servicenow/now-button/src/now-button.js","webpack:///@servicenow/now-button/src/now-button-bare.js","webpack:///@servicenow/now-button/src/now-button-iconic.js","webpack:///@servicenow/now-button/src/now-button-stateful.js","webpack:///@servicenow/now-button/src/now-button-circular.js","webpack:///@servicenow/now-button/src/index.js","webpack:///@servicenow/now-checkbox/src/now-checkbox.js","webpack:///@servicenow/now-checkbox/src/index.js","webpack:///@servicenow/now-collapse/src/now-collapse.js","webpack:///@servicenow/now-collapse/src/now-collapse-trigger.js","webpack:///@servicenow/now-collapse/src/index.js","webpack:///@servicenow/now-dropdown/src/utils/elements.js","webpack:///@servicenow/now-dropdown/src/utils/helpers.js","webpack:///@servicenow/now-dropdown/src/utils/focus.js","webpack:///@servicenow/now-dropdown/src/schemas/dropdown-list-schema.js","webpack:///@servicenow/now-dropdown/src/behavior-screen-reader/screen-reader.js","webpack:///@servicenow/now-dropdown/src/now-dropdown-list.js","webpack:///@servicenow/behavior-fit/28.0.46/src/fit-info/dimensions.js","webpack:///@servicenow/behavior-fit/28.0.46/src/fit-info/normalize-position.js","webpack:///@servicenow/behavior-fit/28.0.46/src/fit-info/calculate-fit.js","webpack:///@servicenow/behavior-fit/28.0.46/src/fit-info/fit-info.js","webpack:///@servicenow/behavior-fit/28.0.46/src/behavior/fit.js","webpack:///@servicenow/behavior-fit/28.0.46/src/schemas/fit-schema.js","webpack:///@servicenow/now-dropdown/src/now-dropdown.js","webpack:///@servicenow/now-dropdown/src/panel-outside-scroll.js","webpack:///@servicenow/now-dropdown/src/schemas/dropdown-schema.js","webpack:///@servicenow/now-dropdown/src/now-dropdown-panel.js","webpack:///@servicenow/now-dropdown/src/now-dropdown-custom-target.js","webpack:///@servicenow/now-dropdown/src/index.js","webpack:///@servicenow/now-heading/src/now-heading.js","webpack:///@servicenow/now-heading/src/index.js","webpack:///@servicenow/now-icon/src/utils/cache.js","webpack:///@servicenow/now-icon/src/utils/import-icon-set.js","webpack:///@servicenow/now-icon/src/utils/maps.js","webpack:///@servicenow/now-icon/src/utils/decode-icon.js","webpack:///@servicenow/now-icon/src/now-icon.js","webpack:///@servicenow/now-icon/src/utils/localize-presence.js","webpack:///@servicenow/now-icon/src/now-icon-presence.js","webpack:///@servicenow/now-icon/src/now-icon-animated.js","webpack:///@servicenow/now-icon/src/index.js","webpack:///@servicenow/now-illustration/src/maps.js","webpack:///@servicenow/now-illustration/src/themeable-illustration/index.js","webpack:///@servicenow/now-illustration/src/utils/shared-effect-http.js","webpack:///@servicenow/now-illustration/src/inline-svg/coral-no-data.js","webpack:///@servicenow/now-illustration/src/inline-svg/polaris-no-data.js","webpack:///@servicenow/now-illustration/src/now-illustration.js","webpack:///@servicenow/now-illustration/src/now-illustration-custom.js","webpack:///@servicenow/now-illustration/src/index.js","webpack:///@servicenow/now-input/src/form-field/render-form-field-messages.js","webpack:///@servicenow/now-input/src/form-field/render-form-field-label.js","webpack:///@servicenow/now-input/src/utils/helper.js","webpack:///@servicenow/now-input/src/schemas/messages-schema.js","webpack:///@servicenow/now-input/src/utils/ipaddress.js","webpack:///@servicenow/now-input/src/schemas/field-layout-schema.js","webpack:///@servicenow/now-input/src/now-input.js","webpack:///@servicenow/now-input/src/now-input-password.js","webpack:///@servicenow/now-input/src/now-input-phone.js","webpack:///@servicenow/now-input/src/now-input-url.js","webpack:///@servicenow/now-input/src/index.js","webpack:///@servicenow/now-list/src/now-list/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/actionableMessage/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/currency/currencyConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/dateTime/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/fieldConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/icon/iconConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/number/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/pills/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/url/urlConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/url/urlTranslatedConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/personCellType/personCellConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/pillsCellType/pillsCellConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/rowCellConstants.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/columnDefinitions/alignmentTypes/alignmentTypes.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/columnDefinitions/columnDefinitions.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/columnDefinitions/columnTypes/columnTypes.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/columnDefinitions/columnTypes/typeSpecificSchemas.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/columnDefinitions/galleryConfig/galleryConfig.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/columnDefinitions/sortTypes/sortTypes.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/overlayDefinition/defaultOverlaysConfigConsts.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/overlayDefinition/overlayConfigConsts.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/overlayDefinition/overlayDefinition.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/popoverDefinition/popoverDefinition.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/rowDefinitions/rowAlignments/rowAlignment.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/rowDefinitions/rowConfigConsts.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/rowDefinitions/rowDefinitions.js","webpack:///@servicenow/now-list/src/now-list/typeSchemas/rowDefinitions/rowTypes/rowTypes.js","webpack:///@servicenow/now-loader/src/utils/helper.js","webpack:///@servicenow/now-loader/src/now-loader.js","webpack:///@servicenow/now-loader/src/now-loader-custom.js","webpack:///@servicenow/now-loader/src/now-loader-skeleton.js","webpack:///@servicenow/now-loader/src/index.js","webpack:///@servicenow/now-popover/src/utils/tail.js","webpack:///@servicenow/now-popover/src/utils/dom.js","webpack:///@servicenow/now-popover/src/utils/global-event-listener.js","webpack:///@servicenow/now-popover/src/utils/observer.js","webpack:///@servicenow/now-popover/src/now-popover.js","webpack:///@servicenow/now-popover/src/utils/scroll-listener.js","webpack:///@servicenow/now-popover/src/now-popover-panel.js","webpack:///@servicenow/now-popover/src/index.js","webpack:///@servicenow/now-progress-bar/src/now-progress-bar.js","webpack:///@servicenow/now-progress-bar/src/index.js","webpack:///@servicenow/now-radio-buttons/src/now-radio-buttons.js","webpack:///@servicenow/now-radio-buttons/src/index.js","webpack:///@servicenow/now-message/src/now-message.js","webpack:///@servicenow/now-message/src/index.js","webpack:///@servicenow/now-template-message/src/now-template-message-empty-state.js","webpack:///@servicenow/now-template-message/src/index.js","webpack:///@servicenow/now-text-link/src/now-text-link.js","webpack:///@servicenow/now-text-link/src/index.js","webpack:///@servicenow/now-textarea/src/utils/helper.js","webpack:///@servicenow/now-textarea/src/now-textarea.js","webpack:///@servicenow/now-textarea/src/index.js","webpack:///@servicenow/now-tooltip/src/utils/dom.js","webpack:///@servicenow/now-tooltip/src/now-tooltip.js","webpack:///@servicenow/now-tooltip/src/utils/scroll-listener.js","webpack:///@servicenow/now-tooltip/src/index.js","webpack:///@servicenow/now-tooltip/src/scheduler/store.js","webpack:///@servicenow/now-tooltip/src/scheduler/index.js","webpack:///@servicenow/now-trigger-library/src/helpers/constants.js","webpack:///@devsnc/snowdash/28.0.31/src/get.js","webpack:///@devsnc/snowdash/28.0.31/src/isEmpty.js","webpack:///@devsnc/snowdash/28.0.31/src/isEqual.js","webpack:///@devsnc/snowdash/28.0.31/src/noop.js","webpack:///@devsnc/snowdash/28.0.31/src/set.js","webpack:///@devsnc/snowdash/28.0.31/src/partial.js","webpack:///@servicenow/now-trigger-library/src/helpers/getLogger.js","webpack:///@servicenow/now-trigger-library/src/helpers/supportedPlatforms.js","webpack:///@servicenow/now-trigger-library/src/helpers/cacheInstance.js","webpack:///@servicenow/now-trigger-library/src/helpers/dedupeShortcuts.js","webpack:///@servicenow/now-trigger-library/src/helpers/keyFormatter.js","webpack:///@servicenow/now-trigger-library/src/helpers/domHelpers.js","webpack:///@servicenow/now-trigger-library/src/contextManager.js","webpack:///@servicenow/now-trigger-library/src/helpers/querySelectors.js","webpack:///@servicenow/now-trigger-library/src/componentRegistry.js","webpack:///@servicenow/now-trigger-library/src/shortcutsState.js","webpack:///@servicenow/now-trigger-library/src/ApplicableComponentAdapter.js","webpack:///@devsnc/snowdash/28.0.31/src/isNil.js","webpack:///@servicenow/now-trigger-library/src/helpers/ActionStateQueue.js","webpack:///@servicenow/now-trigger-library/src/landmarkEngine.js","webpack:///@servicenow/now-trigger-library/src/shortcutRegistry.js","webpack:///@servicenow/now-trigger-library/src/trackUsageShortcutHandler.js","webpack:///@servicenow/now-trigger-library/src/shortcutEngine.js","webpack:///@servicenow/now-trigger-library/src/overrideRegistry.js","webpack:///call-bind-apply-helpers/1.0.2/actualApply.js","webpack:///call-bind-apply-helpers/1.0.2/functionApply.js","webpack:///call-bind-apply-helpers/1.0.2/functionCall.js","webpack:///call-bind-apply-helpers/1.0.2/index.js","webpack:///call-bind-apply-helpers/1.0.2/reflectApply.js","webpack:///call-bound/1.0.4/index.js","webpack:///classnames/2.3.1/index.js","webpack:///css-loader/6.7.1/dist/runtime/api.js","webpack:///css-loader/6.7.1/dist/runtime/noSourceMaps.js","webpack:///date-fns/2.22.1/_lib/addLeadingZeros/index.js","webpack:///date-fns/2.22.1/_lib/assign/index.js","webpack:///date-fns/2.22.1/_lib/cloneObject/index.js","webpack:///date-fns/2.22.1/_lib/format/formatters/index.js","webpack:///date-fns/2.22.1/_lib/format/lightFormatters/index.js","webpack:///date-fns/2.22.1/_lib/format/longFormatters/index.js","webpack:///date-fns/2.22.1/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///date-fns/2.22.1/_lib/getUTCDayOfYear/index.js","webpack:///date-fns/2.22.1/_lib/getUTCISOWeek/index.js","webpack:///date-fns/2.22.1/_lib/getUTCISOWeekYear/index.js","webpack:///date-fns/2.22.1/_lib/getUTCWeek/index.js","webpack:///date-fns/2.22.1/_lib/getUTCWeekYear/index.js","webpack:///date-fns/2.22.1/_lib/protectedTokens/index.js","webpack:///date-fns/2.22.1/_lib/requiredArgs/index.js","webpack:///date-fns/2.22.1/_lib/startOfUTCISOWeek/index.js","webpack:///date-fns/2.22.1/_lib/startOfUTCISOWeekYear/index.js","webpack:///date-fns/2.22.1/_lib/startOfUTCWeek/index.js","webpack:///date-fns/2.22.1/_lib/startOfUTCWeekYear/index.js","webpack:///date-fns/2.22.1/_lib/toInteger/index.js","webpack:///date-fns/2.22.1/addMilliseconds/index.js","webpack:///date-fns/2.22.1/format/index.js","webpack:///date-fns/2.22.1/isValid/index.js","webpack:///date-fns/2.22.1/locale/_lib/buildFormatLongFn/index.js","webpack:///date-fns/2.22.1/locale/_lib/buildLocalizeFn/index.js","webpack:///date-fns/2.22.1/locale/_lib/buildMatchFn/index.js","webpack:///date-fns/2.22.1/locale/_lib/buildMatchPatternFn/index.js","webpack:///date-fns/2.22.1/locale/en-US/_lib/formatDistance/index.js","webpack:///date-fns/2.22.1/locale/en-US/_lib/formatLong/index.js","webpack:///date-fns/2.22.1/locale/en-US/_lib/formatRelative/index.js","webpack:///date-fns/2.22.1/locale/en-US/_lib/localize/index.js","webpack:///date-fns/2.22.1/locale/en-US/_lib/match/index.js","webpack:///date-fns/2.22.1/locale/en-US/index.js","webpack:///date-fns/2.22.1/subMilliseconds/index.js","webpack:///date-fns/2.22.1/toDate/index.js","webpack:///date-fns/2.30.0/_lib/addLeadingZeros/index.js","webpack:///date-fns/2.30.0/_lib/defaultLocale/index.js","webpack:///date-fns/2.30.0/_lib/defaultOptions/index.js","webpack:///date-fns/2.30.0/_lib/format/formatters/index.js","webpack:///date-fns/2.30.0/_lib/format/lightFormatters/index.js","webpack:///date-fns/2.30.0/_lib/format/longFormatters/index.js","webpack:///date-fns/2.30.0/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///date-fns/2.30.0/_lib/getUTCDayOfYear/index.js","webpack:///date-fns/2.30.0/_lib/getUTCISOWeek/index.js","webpack:///date-fns/2.30.0/_lib/getUTCISOWeekYear/index.js","webpack:///date-fns/2.30.0/_lib/getUTCWeek/index.js","webpack:///date-fns/2.30.0/_lib/getUTCWeekYear/index.js","webpack:///date-fns/2.30.0/_lib/protectedTokens/index.js","webpack:///date-fns/2.30.0/_lib/requiredArgs/index.js","webpack:///date-fns/2.30.0/_lib/startOfUTCISOWeek/index.js","webpack:///date-fns/2.30.0/_lib/startOfUTCISOWeekYear/index.js","webpack:///date-fns/2.30.0/_lib/startOfUTCWeek/index.js","webpack:///date-fns/2.30.0/_lib/startOfUTCWeekYear/index.js","webpack:///date-fns/2.30.0/_lib/toInteger/index.js","webpack:///date-fns/2.30.0/addMilliseconds/index.js","webpack:///date-fns/2.30.0/format/index.js","webpack:///date-fns/2.30.0/isDate/index.js","webpack:///date-fns/2.30.0/isValid/index.js","webpack:///date-fns/2.30.0/locale/_lib/buildFormatLongFn/index.js","webpack:///date-fns/2.30.0/locale/_lib/buildLocalizeFn/index.js","webpack:///date-fns/2.30.0/locale/_lib/buildMatchFn/index.js","webpack:///date-fns/2.30.0/locale/_lib/buildMatchPatternFn/index.js","webpack:///date-fns/2.30.0/locale/en-US/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/locale/en-US/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/locale/en-US/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/locale/en-US/_lib/localize/index.js","webpack:///date-fns/2.30.0/locale/en-US/_lib/match/index.js","webpack:///date-fns/2.30.0/locale/en-US/index.js","webpack:///date-fns/2.30.0/subMilliseconds/index.js","webpack:///date-fns/2.30.0/toDate/index.js","webpack:///dunder-proto/1.0.1/get.js","webpack:///es-define-property/1.0.1/index.js","webpack:///es-errors/1.3.0/eval.js","webpack:///es-errors/1.3.0/index.js","webpack:///es-errors/1.3.0/range.js","webpack:///es-errors/1.3.0/ref.js","webpack:///es-errors/1.3.0/syntax.js","webpack:///es-errors/1.3.0/type.js","webpack:///es-errors/1.3.0/uri.js","webpack:///es-object-atoms/1.1.1/index.js","webpack:///function-bind/1.1.2/implementation.js","webpack:///function-bind/1.1.2/index.js","webpack:///get-intrinsic/1.3.0/index.js","webpack:///get-proto/1.0.1/Object.getPrototypeOf.js","webpack:///get-proto/1.0.1/Reflect.getPrototypeOf.js","webpack:///get-proto/1.0.1/index.js","webpack:///gopd/1.2.0/gOPD.js","webpack:///gopd/1.2.0/index.js","webpack:///has-symbols/1.1.0/index.js","webpack:///has-symbols/1.1.0/shams.js","webpack:///hasown/2.0.2/index.js","webpack:///ais-ux-components/30.5.2/apps/node_modules/browser-pack-flat/_prelude","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/Interactable.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/scope.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/interactions.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/InteractStatic.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/isWindow.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/window.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/is.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/actions/drag.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/arr.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/domObjects.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/browser.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/clone.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/domUtils.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/pointerExtend.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/hypot.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/pointerUtils.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/events.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/extend.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/normalizeListeners.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/Eventable.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/rect.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/getOriginXY.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/raf.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/BaseEvent.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/defaultOptions.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/InteractEvent.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/InteractableSet.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/PointerInfo.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/Interaction.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/interactablePreventDefault.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/core/interactionFinder.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/actions/drop/DropEvent.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/actions/drop/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/actions/gesture.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/actions/resize.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/actions/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/arrange/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/auto-scroll/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/auto-start/InteractableMethods.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/auto-start/base.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/auto-start/dragAxis.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/auto-start/hold.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/auto-start/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/clone/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/dev-tools/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/Modification.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/base.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/offset/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/inertia/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/interact/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/snappers/edgeTarget.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/snappers/elements.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/snappers/grid.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/snappers/all.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/snappers/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/aspectRatio.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/avoid.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/restrict/pointer.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/restrict/edges.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/restrict/rect.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/restrict/size.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/rubberband.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/snap/pointer.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/snap/size.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/snap/edges.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/spring.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/transform.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/all.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/modifiers/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/pointer-events/PointerEvent.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/pointer-events/base.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/pointer-events/holdRepeat.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/pointer-events/interactableTargets.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/pointer-events/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/reflow/index.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/displace.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/utils/exchange.ts","webpack:///ais-ux-components/30.5.2/apps/@interactjs/interactjs/index.ts","webpack:///index.ts","webpack:///ais-ux-components/30.5.2/apps/node_modules/browser-pack-flat/_postlude","webpack:///lodash/4.18.1/_Hash.js","webpack:///lodash/4.18.1/_ListCache.js","webpack:///lodash/4.18.1/_Map.js","webpack:///lodash/4.18.1/_MapCache.js","webpack:///lodash/4.18.1/_Symbol.js","webpack:///lodash/4.18.1/_apply.js","webpack:///lodash/4.18.1/_arrayMap.js","webpack:///lodash/4.18.1/_arrayPush.js","webpack:///lodash/4.18.1/_assignValue.js","webpack:///lodash/4.18.1/_assocIndexOf.js","webpack:///lodash/4.18.1/_baseAssignValue.js","webpack:///lodash/4.18.1/_baseFlatten.js","webpack:///lodash/4.18.1/_baseGet.js","webpack:///lodash/4.18.1/_baseGetTag.js","webpack:///lodash/4.18.1/_baseHasIn.js","webpack:///lodash/4.18.1/_baseIsArguments.js","webpack:///lodash/4.18.1/_baseIsNative.js","webpack:///lodash/4.18.1/_basePick.js","webpack:///lodash/4.18.1/_basePickBy.js","webpack:///lodash/4.18.1/_baseSet.js","webpack:///lodash/4.18.1/_baseSetToString.js","webpack:///lodash/4.18.1/_baseToString.js","webpack:///lodash/4.18.1/_castPath.js","webpack:///lodash/4.18.1/_coreJsData.js","webpack:///lodash/4.18.1/_defineProperty.js","webpack:///lodash/4.18.1/_flatRest.js","webpack:///lodash/4.18.1/_freeGlobal.js","webpack:///lodash/4.18.1/_getMapData.js","webpack:///lodash/4.18.1/_getNative.js","webpack:///lodash/4.18.1/_getRawTag.js","webpack:///lodash/4.18.1/_getValue.js","webpack:///lodash/4.18.1/_hasPath.js","webpack:///lodash/4.18.1/_hashClear.js","webpack:///lodash/4.18.1/_hashDelete.js","webpack:///lodash/4.18.1/_hashGet.js","webpack:///lodash/4.18.1/_hashHas.js","webpack:///lodash/4.18.1/_hashSet.js","webpack:///lodash/4.18.1/_isFlattenable.js","webpack:///lodash/4.18.1/_isIndex.js","webpack:///lodash/4.18.1/_isKey.js","webpack:///lodash/4.18.1/_isKeyable.js","webpack:///lodash/4.18.1/_isMasked.js","webpack:///lodash/4.18.1/_listCacheClear.js","webpack:///lodash/4.18.1/_listCacheDelete.js","webpack:///lodash/4.18.1/_listCacheGet.js","webpack:///lodash/4.18.1/_listCacheHas.js","webpack:///lodash/4.18.1/_listCacheSet.js","webpack:///lodash/4.18.1/_mapCacheClear.js","webpack:///lodash/4.18.1/_mapCacheDelete.js","webpack:///lodash/4.18.1/_mapCacheGet.js","webpack:///lodash/4.18.1/_mapCacheHas.js","webpack:///lodash/4.18.1/_mapCacheSet.js","webpack:///lodash/4.18.1/_memoizeCapped.js","webpack:///lodash/4.18.1/_nativeCreate.js","webpack:///lodash/4.18.1/_objectToString.js","webpack:///lodash/4.18.1/_overRest.js","webpack:///lodash/4.18.1/_root.js","webpack:///lodash/4.18.1/_setToString.js","webpack:///lodash/4.18.1/_shortOut.js","webpack:///lodash/4.18.1/_stringToPath.js","webpack:///lodash/4.18.1/_toKey.js","webpack:///lodash/4.18.1/_toSource.js","webpack:///lodash/4.18.1/constant.js","webpack:///lodash/4.18.1/eq.js","webpack:///lodash/4.18.1/flatten.js","webpack:///lodash/4.18.1/fp.js","webpack:///lodash/4.18.1/fp/_baseConvert.js","webpack:///lodash/4.18.1/fp/_mapping.js","webpack:///lodash/4.18.1/fp/placeholder.js","webpack:///lodash/4.18.1/hasIn.js","webpack:///lodash/4.18.1/identity.js","webpack:///lodash/4.18.1/isArguments.js","webpack:///lodash/4.18.1/isArray.js","webpack:///lodash/4.18.1/isFunction.js","webpack:///lodash/4.18.1/isLength.js","webpack:///lodash/4.18.1/isObject.js","webpack:///lodash/4.18.1/isObjectLike.js","webpack:///lodash/4.18.1/isSymbol.js","webpack:///lodash/4.18.1/lodash.js","webpack:///lodash/4.18.1/lodash.min.js","webpack:///lodash/4.18.1/memoize.js","webpack:///lodash/4.18.1/pick.js","webpack:///lodash/4.18.1/toString.js","webpack:///lottie-web/5.12.2/build/player/lottie.js","webpack:///math-intrinsics/1.1.0/abs.js","webpack:///math-intrinsics/1.1.0/floor.js","webpack:///math-intrinsics/1.1.0/isNaN.js","webpack:///math-intrinsics/1.1.0/max.js","webpack:///math-intrinsics/1.1.0/min.js","webpack:///math-intrinsics/1.1.0/pow.js","webpack:///math-intrinsics/1.1.0/round.js","webpack:///math-intrinsics/1.1.0/sign.js","webpack:///moment/2.30.1/locale/af.js","webpack:///moment/2.30.1/locale/ar-dz.js","webpack:///moment/2.30.1/locale/ar-kw.js","webpack:///moment/2.30.1/locale/ar-ly.js","webpack:///moment/2.30.1/locale/ar-ma.js","webpack:///moment/2.30.1/locale/ar-ps.js","webpack:///moment/2.30.1/locale/ar-sa.js","webpack:///moment/2.30.1/locale/ar-tn.js","webpack:///moment/2.30.1/locale/ar.js","webpack:///moment/2.30.1/locale/az.js","webpack:///moment/2.30.1/locale/be.js","webpack:///moment/2.30.1/locale/bg.js","webpack:///moment/2.30.1/locale/bm.js","webpack:///moment/2.30.1/locale/bn-bd.js","webpack:///moment/2.30.1/locale/bn.js","webpack:///moment/2.30.1/locale/bo.js","webpack:///moment/2.30.1/locale/br.js","webpack:///moment/2.30.1/locale/bs.js","webpack:///moment/2.30.1/locale/ca.js","webpack:///moment/2.30.1/locale/cs.js","webpack:///moment/2.30.1/locale/cv.js","webpack:///moment/2.30.1/locale/cy.js","webpack:///moment/2.30.1/locale/da.js","webpack:///moment/2.30.1/locale/de-at.js","webpack:///moment/2.30.1/locale/de-ch.js","webpack:///moment/2.30.1/locale/de.js","webpack:///moment/2.30.1/locale/dv.js","webpack:///moment/2.30.1/locale/el.js","webpack:///moment/2.30.1/locale/en-au.js","webpack:///moment/2.30.1/locale/en-ca.js","webpack:///moment/2.30.1/locale/en-gb.js","webpack:///moment/2.30.1/locale/en-ie.js","webpack:///moment/2.30.1/locale/en-il.js","webpack:///moment/2.30.1/locale/en-in.js","webpack:///moment/2.30.1/locale/en-nz.js","webpack:///moment/2.30.1/locale/en-sg.js","webpack:///moment/2.30.1/locale/eo.js","webpack:///moment/2.30.1/locale/es-do.js","webpack:///moment/2.30.1/locale/es-mx.js","webpack:///moment/2.30.1/locale/es-us.js","webpack:///moment/2.30.1/locale/es.js","webpack:///moment/2.30.1/locale/et.js","webpack:///moment/2.30.1/locale/eu.js","webpack:///moment/2.30.1/locale/fa.js","webpack:///moment/2.30.1/locale/fi.js","webpack:///moment/2.30.1/locale/fil.js","webpack:///moment/2.30.1/locale/fo.js","webpack:///moment/2.30.1/locale/fr-ca.js","webpack:///moment/2.30.1/locale/fr-ch.js","webpack:///moment/2.30.1/locale/fr.js","webpack:///moment/2.30.1/locale/fy.js","webpack:///moment/2.30.1/locale/ga.js","webpack:///moment/2.30.1/locale/gd.js","webpack:///moment/2.30.1/locale/gl.js","webpack:///moment/2.30.1/locale/gom-deva.js","webpack:///moment/2.30.1/locale/gom-latn.js","webpack:///moment/2.30.1/locale/gu.js","webpack:///moment/2.30.1/locale/he.js","webpack:///moment/2.30.1/locale/hi.js","webpack:///moment/2.30.1/locale/hr.js","webpack:///moment/2.30.1/locale/hu.js","webpack:///moment/2.30.1/locale/hy-am.js","webpack:///moment/2.30.1/locale/id.js","webpack:///moment/2.30.1/locale/is.js","webpack:///moment/2.30.1/locale/it-ch.js","webpack:///moment/2.30.1/locale/it.js","webpack:///moment/2.30.1/locale/ja.js","webpack:///moment/2.30.1/locale/jv.js","webpack:///moment/2.30.1/locale/ka.js","webpack:///moment/2.30.1/locale/kk.js","webpack:///moment/2.30.1/locale/km.js","webpack:///moment/2.30.1/locale/kn.js","webpack:///moment/2.30.1/locale/ko.js","webpack:///moment/2.30.1/locale/ku-kmr.js","webpack:///moment/2.30.1/locale/ku.js","webpack:///moment/2.30.1/locale/ky.js","webpack:///moment/2.30.1/locale/lb.js","webpack:///moment/2.30.1/locale/lo.js","webpack:///moment/2.30.1/locale/lt.js","webpack:///moment/2.30.1/locale/lv.js","webpack:///moment/2.30.1/locale/me.js","webpack:///moment/2.30.1/locale/mi.js","webpack:///moment/2.30.1/locale/mk.js","webpack:///moment/2.30.1/locale/ml.js","webpack:///moment/2.30.1/locale/mn.js","webpack:///moment/2.30.1/locale/mr.js","webpack:///moment/2.30.1/locale/ms-my.js","webpack:///moment/2.30.1/locale/ms.js","webpack:///moment/2.30.1/locale/mt.js","webpack:///moment/2.30.1/locale/my.js","webpack:///moment/2.30.1/locale/nb.js","webpack:///moment/2.30.1/locale/ne.js","webpack:///moment/2.30.1/locale/nl-be.js","webpack:///moment/2.30.1/locale/nl.js","webpack:///moment/2.30.1/locale/nn.js","webpack:///moment/2.30.1/locale/oc-lnc.js","webpack:///moment/2.30.1/locale/pa-in.js","webpack:///moment/2.30.1/locale/pl.js","webpack:///moment/2.30.1/locale/pt-br.js","webpack:///moment/2.30.1/locale/pt.js","webpack:///moment/2.30.1/locale/ro.js","webpack:///moment/2.30.1/locale/ru.js","webpack:///moment/2.30.1/locale/sd.js","webpack:///moment/2.30.1/locale/se.js","webpack:///moment/2.30.1/locale/si.js","webpack:///moment/2.30.1/locale/sk.js","webpack:///moment/2.30.1/locale/sl.js","webpack:///moment/2.30.1/locale/sq.js","webpack:///moment/2.30.1/locale/sr-cyrl.js","webpack:///moment/2.30.1/locale/sr.js","webpack:///moment/2.30.1/locale/ss.js","webpack:///moment/2.30.1/locale/sv.js","webpack:///moment/2.30.1/locale/sw.js","webpack:///moment/2.30.1/locale/ta.js","webpack:///moment/2.30.1/locale/te.js","webpack:///moment/2.30.1/locale/tet.js","webpack:///moment/2.30.1/locale/tg.js","webpack:///moment/2.30.1/locale/th.js","webpack:///moment/2.30.1/locale/tk.js","webpack:///moment/2.30.1/locale/tl-ph.js","webpack:///moment/2.30.1/locale/tlh.js","webpack:///moment/2.30.1/locale/tr.js","webpack:///moment/2.30.1/locale/tzl.js","webpack:///moment/2.30.1/locale/tzm-latn.js","webpack:///moment/2.30.1/locale/tzm.js","webpack:///moment/2.30.1/locale/ug-cn.js","webpack:///moment/2.30.1/locale/uk.js","webpack:///moment/2.30.1/locale/ur.js","webpack:///moment/2.30.1/locale/uz-latn.js","webpack:///moment/2.30.1/locale/uz.js","webpack:///moment/2.30.1/locale/vi.js","webpack:///moment/2.30.1/locale/x-pseudo.js","webpack:///moment/2.30.1/locale/yo.js","webpack:///moment/2.30.1/locale/zh-cn.js","webpack:///moment/2.30.1/locale/zh-hk.js","webpack:///moment/2.30.1/locale/zh-mo.js","webpack:///moment/2.30.1/locale/zh-tw.js","webpack:///moment/2.30.1/moment.js","webpack:///object-assign/4.1.1/index.js","webpack:///object-inspect/1.13.4/index.js","webpack:///path-to-regexp/3.0.0/index.js","webpack:///prop-types/15.7.2/factoryWithThrowingShims.js","webpack:///prop-types/15.7.2/index.js","webpack:///prop-types/15.7.2/lib/ReactPropTypesSecret.js","webpack:///qs/6.11.0/lib/formats.js","webpack:///qs/6.11.0/lib/index.js","webpack:///qs/6.11.0/lib/parse.js","webpack:///qs/6.11.0/lib/stringify.js","webpack:///qs/6.11.0/lib/utils.js","webpack:///react-dom/cjs/react-dom.production.min.js","webpack:///react-dom/index.js","webpack:///react/cjs/react.production.min.js","webpack:///react/index.js","webpack:///resize-observer-polyfill/1.5.1/dist/ResizeObserver.es.js","webpack:///scheduler/0.19.1/cjs/scheduler.production.min.js","webpack:///scheduler/0.19.1/index.js","webpack:///side-channel-list/1.0.0/index.js","webpack:///side-channel-map/1.0.1/index.js","webpack:///side-channel-weakmap/1.0.2/index.js","webpack:///side-channel/1.1.0/index.js","webpack:///sn-tinymce/28.0.6/js/tinymce/plugins/powerpaste/plugin.full.js","webpack:///sn-tinymce/28.0.6/js/tinymce/tinymce.full.js","webpack:///sn-translate/src/index.js","webpack:///sn-ux-core/27.0.1/src/context/userPrefs.js","webpack:///sn-ux-core/27.0.1/src/context/sysProps.js","webpack:///sn-ux-core/27.0.1/src/context/constants.js","webpack:///sn-canvas-common/26.0.33/src/behaviors/render-skip/renderSkipBehavior.js","webpack:///sn-canvas-common/26.0.33/src/experienceConfigs/get-experience-config.js","webpack:///sn-uxpage-presource/23.0.1/src/getPageSettings.js","webpack:///sn-uxpage-presource/23.0.1/src/getProperty.js","webpack:///sn-uxpage-presource/23.0.1/src/createPreSourceBehavior.js","webpack:///sn-uxpage-presource/23.0.1/src/user.behaviors.js","webpack:///string-template/1.0.0/index.js","webpack:///uuid/7.0.3/dist/esm-browser/bytesToUuid.js","webpack:///uuid/7.0.3/dist/esm-browser/rng.js","webpack:///uuid/7.0.3/dist/esm-browser/v4.js","webpack:///@devsnc/sn-hierarchical-select/src/index.scss","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-desktop/index.scss","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-desktop/scss/onboardingPopover.scss","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-mobile/index.scss","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/scss/index.scss","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/scss/index.scss","webpack:///@devsnc/sn-search-genius-card-assist/src/scss/contents/aboutPopover.scss","webpack:///@devsnc/sn-search-genius-card-assist/src/scss/index.scss","webpack:///@devsnc/sn-search-genius-card-assist/src/styles.scss","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/styles/index.scss","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/scss/index.scss","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-gr-carousel/sn-search-gr-carousel.scss","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-topics/sn-search-topics.scss","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/sn-search-top-results.scss","webpack:///@devsnc/sn-tab-filter/src/scss/index.scss","webpack:///@devsnc/sass-form-controls-common/28.0.7-pi.1/_customLabel.scss","webpack:///@devsnc/sn-carousel/src/sn-carousel/carousel.scss","webpack:///@devsnc/sn-declarative-actions/src/field/field-renderer/view.scss","webpack:///@devsnc/sn-declarative-actions/src/reference-search/view.scss","webpack:///@devsnc/sn-list-commons/src/components/ariaLiveRegion/ariaLiveRegion.scss","webpack:///@devsnc/sn-recommendations-helper/src/sn-recommendations-helper/recommendations-helper.scss","webpack:///@devsnc/sn-record-control-wrapper/src/controlwrapper.scss","webpack:///@devsnc/sn-record-control-wrapper/src/legacy-files/controlwrapper.scss","webpack:///@devsnc/sn-record-control/src/style.scss","webpack:///@devsnc/sn-record-input/src/input.scss","webpack:///@servicenow/behavior-resizable/28.0.46/src/components/_resizable-target.scss","webpack:///@servicenow/now-alert/src/_now-alert-list.scss","webpack:///@servicenow/now-alert/src/_now-alert.scss","webpack:///@servicenow/now-avatar/src/_now-avatar.scss","webpack:///@servicenow/now-badge/src/_now-badge.scss","webpack:///@servicenow/now-button/src/_now-button-bare.scss","webpack:///@servicenow/now-button/src/_now-button-circular.scss","webpack:///@servicenow/now-button/src/_now-button-iconic.scss","webpack:///@servicenow/now-button/src/_now-button-stateful.scss","webpack:///@servicenow/now-button/src/_now-button.scss","webpack:///@servicenow/now-card/src/_now-card-actions.scss","webpack:///@servicenow/now-card/src/_now-card-divider.scss","webpack:///@servicenow/now-card/src/_now-card-footer.scss","webpack:///@servicenow/now-card/src/_now-card-header.scss","webpack:///@servicenow/now-card/src/_now-card.scss","webpack:///@servicenow/now-carousel-text/src/_now-carousel-text.scss","webpack:///@servicenow/now-checkbox/src/_now-checkbox.scss","webpack:///@servicenow/now-collapse/src/_now-collapse.scss","webpack:///@servicenow/now-data-set/src/components/now-data-set/now-data-set.scss","webpack:///@servicenow/now-data-set/src/components/sn-data-set-toolbar/__sn-data-set-toolbar.scss","webpack:///@servicenow/now-data-set/src/components/sn-data-set-view-grid/__sn-data-set-view-grid.scss","webpack:///@servicenow/now-data-set/src/components/sn-data-set-view-list/__sn-data-set-view-list.scss","webpack:///@servicenow/now-date-time/src/_now-date-time-calendar.scss","webpack:///@servicenow/now-date-time/src/_now-date-time-interval.scss","webpack:///@servicenow/now-date-time/src/_now-date-time.scss","webpack:///@servicenow/now-date-time/src/_now-input-date-time.scss","webpack:///@servicenow/now-date-time/src/presets/_now-date-time-presets.scss","webpack:///@servicenow/now-dropdown/src/_now-dropdown-list.scss","webpack:///@servicenow/now-dropdown/src/_now-dropdown-panel.scss","webpack:///@servicenow/now-dropdown/src/_now-dropdown.scss","webpack:///@servicenow/now-heading/src/_now-heading.scss","webpack:///@servicenow/now-highlighted-value/src/_now-highlighted-value.scss","webpack:///@servicenow/now-icon/src/_now-icon-animated.scss","webpack:///@servicenow/now-icon/src/_now-icon.scss","webpack:///@servicenow/now-illustration/src/_now-illustration-custom.scss","webpack:///@servicenow/now-illustration/src/_now-illustration.scss","webpack:///@servicenow/now-image/src/_now-image.scss","webpack:///@servicenow/now-input/src/_now-input-password.scss","webpack:///@servicenow/now-input/src/_now-input-phone.scss","webpack:///@servicenow/now-input/src/_now-input-url.scss","webpack:///@servicenow/now-input/src/_now-input.scss","webpack:///@servicenow/now-input/src/form-field/_popover-content.scss","webpack:///@servicenow/now-label-value/src/_now-label-value-inline.scss","webpack:///@servicenow/now-label-value/src/_now-label-value-stacked.scss","webpack:///@servicenow/now-label-value/src/_now-label-value-tabbed.scss","webpack:///@servicenow/now-list/src/now-list/main.scss","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryView.scss","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/truncatedTextMore/styles.scss","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/popoverCellEditorContent.scss","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverChoiceColumnFilterContent/popoverChoiceColumnFilterContent.scss","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCustomContent/popoverCustomContent.scss","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverListContent/popoverListContent.scss","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverTextContent/popoverTextContent.scss","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableHeaders/tableHeaderCell/columnHeaderClone.scss","webpack:///@servicenow/now-list/src/now-list/shared/views/timeAgoDisplay/timeAgoDisplay.scss","webpack:///@servicenow/now-loader/src/_now-loader-custom.scss","webpack:///@servicenow/now-loader/src/_now-loader-skeleton.scss","webpack:///@servicenow/now-loader/src/_now-loader.scss","webpack:///@servicenow/now-message/src/_now-message.scss","webpack:///@servicenow/now-modal/src/_now-modal.scss","webpack:///@servicenow/now-pagination-control/src/_now-pagination-control.scss","webpack:///@servicenow/now-pill/src/_now-pill.scss","webpack:///@servicenow/now-popover/src/_now-popover-panel.scss","webpack:///@servicenow/now-progress-bar/src/_now-progress-bar.scss","webpack:///@servicenow/now-radio-buttons/src/_now-radio-buttons.scss","webpack:///@servicenow/now-record-html-editor/src/html.scss","webpack:///@servicenow/now-select/src/_now-select.scss","webpack:///@servicenow/now-tabs/src/_now-tabs-vertical.scss","webpack:///@servicenow/now-tabs/src/_now-tabs.scss","webpack:///@servicenow/now-template-message/src/_now-template-message-empty-state.scss","webpack:///@servicenow/now-text-link/src/_now-text-link.scss","webpack:///@servicenow/now-textarea/src/_now-textarea.scss","webpack:///@servicenow/now-tooltip/src/_now-tooltip.scss","webpack:///@servicenow/now-typeahead/src/_now-typeahead.scss","webpack:///moment/2.30.1/locale|sync|/^\\.\\/.*$","webpack:///../../components/sn-hierarchical-select/src/index.scss?10cc","webpack:///../../components/sn-search-combobox/src/sn-search-combobox-desktop/index.scss?427b","webpack:///../../components/sn-search-combobox/src/sn-search-combobox-desktop/scss/onboardingPopover.scss?2273","webpack:///../../components/sn-search-combobox/src/sn-search-combobox-mobile/index.scss?8cd9","webpack:///../../components/sn-search-facets/src/sn-search-facets-desktop/scss/index.scss?060c","webpack:///../../components/sn-search-facets/src/sn-search-facets-mobile/scss/index.scss?dba1","webpack:///../../components/sn-search-genius-card-assist/src/scss/contents/aboutPopover.scss?cf81","webpack:///../../components/sn-search-genius-card-assist/src/scss/index.scss?a445","webpack:///../../components/sn-search-genius-card-assist/src/styles.scss?da27","webpack:///../../components/sn-search-result-evam-card/src/sn-search-result-evam-card/styles/index.scss?3faa","webpack:///../../components/sn-search-results-container/src/sn-search-results-container/scss/index.scss?7a67","webpack:///../../components/sn-search-top-results/src/sn-search-top-results/components/sn-search-gr-carousel/sn-search-gr-carousel.scss?73d4","webpack:///../../components/sn-search-top-results/src/sn-search-top-results/components/sn-search-topics/sn-search-topics.scss?03dd","webpack:///../../components/sn-search-top-results/src/sn-search-top-results/sn-search-top-results.scss?9ddd","webpack:///../../components/sn-tab-filter/src/scss/index.scss?73cc","webpack:///../../node_modules/.pnpm/@devsnc+sass-form-controls-common@28.0.7-pi.1/node_modules/@devsnc/sass-form-controls-common/_customLabel.scss?ef12","webpack:///../../node_modules/.pnpm/@devsnc+sn-carousel@28.0.2/node_modules/@devsnc/sn-carousel/src/sn-carousel/carousel.scss?ed73","webpack:///../../node_modules/.pnpm/@devsnc+sn-declarative-actions@28.0.1/node_modules/@devsnc/sn-declarative-actions/src/field/field-renderer/view.scss?34d8","webpack:///../../node_modules/.pnpm/@devsnc+sn-declarative-actions@28.0.1/node_modules/@devsnc/sn-declarative-actions/src/reference-search/view.scss?6c93","webpack:///../../node_modules/.pnpm/@devsnc+sn-list-commons@25.0.0/node_modules/@devsnc/sn-list-commons/src/components/ariaLiveRegion/ariaLiveRegion.scss?b6b9","webpack:///../../node_modules/.pnpm/@devsnc+sn-recommendations-helper@28.0.7-pi.1_@servicenow+now-tooltip@28.0.14/node_modules/@devsnc/sn-recommendations-helper/src/sn-recommendations-helper/recommendations-helper.scss?74ec","webpack:///../../node_modules/.pnpm/@devsnc+sn-record-control-wrapper@28.0.7-pi.1/node_modules/@devsnc/sn-record-control-wrapper/src/controlwrapper.scss?8b1b","webpack:///../../node_modules/.pnpm/@devsnc+sn-record-control-wrapper@28.0.7-pi.1/node_modules/@devsnc/sn-record-control-wrapper/src/legacy-files/controlwrapper.scss?1a00","webpack:///../../node_modules/.pnpm/@devsnc+sn-record-control@28.0.7-pi.1/node_modules/@devsnc/sn-record-control/src/style.scss?fdc2","webpack:///../../node_modules/.pnpm/@devsnc+sn-record-input@28.0.7-pi.1_@servicenow+now-tooltip@28.0.14/node_modules/@devsnc/sn-record-input/src/input.scss?0d37","webpack:///../../node_modules/.pnpm/@servicenow+behavior-resizable@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/behavior-resizable/src/components/_resizable-target.scss?460c","webpack:///../../node_modules/.pnpm/@servicenow+now-alert@28.0.46/node_modules/@servicenow/now-alert/src/_now-alert-list.scss?1863","webpack:///../../node_modules/.pnpm/@servicenow+now-alert@28.0.46/node_modules/@servicenow/now-alert/src/_now-alert.scss?2d07","webpack:///../../node_modules/.pnpm/@servicenow+now-avatar@28.0.46/node_modules/@servicenow/now-avatar/src/_now-avatar.scss?ce06","webpack:///../../node_modules/.pnpm/@servicenow+now-badge@28.0.46/node_modules/@servicenow/now-badge/src/_now-badge.scss?7133","webpack:///../../node_modules/.pnpm/@servicenow+now-button@28.0.46/node_modules/@servicenow/now-button/src/_now-button-bare.scss?bf18","webpack:///../../node_modules/.pnpm/@servicenow+now-button@28.0.46/node_modules/@servicenow/now-button/src/_now-button-circular.scss?b941","webpack:///../../node_modules/.pnpm/@servicenow+now-button@28.0.46/node_modules/@servicenow/now-button/src/_now-button-iconic.scss?8f35","webpack:///../../node_modules/.pnpm/@servicenow+now-button@28.0.46/node_modules/@servicenow/now-button/src/_now-button-stateful.scss?4e07","webpack:///../../node_modules/.pnpm/@servicenow+now-button@28.0.46/node_modules/@servicenow/now-button/src/_now-button.scss?ac4e","webpack:///../../node_modules/.pnpm/@servicenow+now-card@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-card/src/_now-card-actions.scss?6a2f","webpack:///../../node_modules/.pnpm/@servicenow+now-card@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-card/src/_now-card-divider.scss?4845","webpack:///../../node_modules/.pnpm/@servicenow+now-card@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-card/src/_now-card-footer.scss?4675","webpack:///../../node_modules/.pnpm/@servicenow+now-card@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-card/src/_now-card-header.scss?ce3d","webpack:///../../node_modules/.pnpm/@servicenow+now-card@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-card/src/_now-card.scss?853e","webpack:///../../node_modules/.pnpm/@servicenow+now-carousel-text@28.0.46/node_modules/@servicenow/now-carousel-text/src/_now-carousel-text.scss?56f0","webpack:///../../node_modules/.pnpm/@servicenow+now-checkbox@28.0.14_@servicenow+now-tooltip@28.0.14/node_modules/@servicenow/now-checkbox/src/_now-checkbox.scss?ba4a","webpack:///../../node_modules/.pnpm/@servicenow+now-collapse@28.0.46/node_modules/@servicenow/now-collapse/src/_now-collapse.scss?07e2","webpack:///../../node_modules/.pnpm/@servicenow+now-data-set@28.0.11_@servicenow+now-tooltip@28.0.46_enzyme@3.11.0/node_modules/@servicenow/now-data-set/src/components/now-data-set/now-data-set.scss?02dc","webpack:///../../node_modules/.pnpm/@servicenow+now-data-set@28.0.11_@servicenow+now-tooltip@28.0.46_enzyme@3.11.0/node_modules/@servicenow/now-data-set/src/components/sn-data-set-toolbar/__sn-data-set-toolbar.scss?65d6","webpack:///../../node_modules/.pnpm/@servicenow+now-data-set@28.0.11_@servicenow+now-tooltip@28.0.46_enzyme@3.11.0/node_modules/@servicenow/now-data-set/src/components/sn-data-set-view-grid/__sn-data-set-view-grid.scss?a27b","webpack:///../../node_modules/.pnpm/@servicenow+now-data-set@28.0.11_@servicenow+now-tooltip@28.0.46_enzyme@3.11.0/node_modules/@servicenow/now-data-set/src/components/sn-data-set-view-list/__sn-data-set-view-list.scss?9acc","webpack:///../../node_modules/.pnpm/@servicenow+now-date-time@28.0.14/node_modules/@servicenow/now-date-time/src/_now-date-time-calendar.scss?b1cd","webpack:///../../node_modules/.pnpm/@servicenow+now-date-time@28.0.14/node_modules/@servicenow/now-date-time/src/_now-date-time-interval.scss?cd94","webpack:///../../node_modules/.pnpm/@servicenow+now-date-time@28.0.14/node_modules/@servicenow/now-date-time/src/_now-date-time.scss?9897","webpack:///../../node_modules/.pnpm/@servicenow+now-date-time@28.0.14/node_modules/@servicenow/now-date-time/src/_now-input-date-time.scss?5f91","webpack:///../../node_modules/.pnpm/@servicenow+now-date-time@28.0.14/node_modules/@servicenow/now-date-time/src/presets/_now-date-time-presets.scss?dcd7","webpack:///../../node_modules/.pnpm/@servicenow+now-dropdown@28.0.46/node_modules/@servicenow/now-dropdown/src/_now-dropdown-list.scss?a802","webpack:///../../node_modules/.pnpm/@servicenow+now-dropdown@28.0.46/node_modules/@servicenow/now-dropdown/src/_now-dropdown-panel.scss?7ce5","webpack:///../../node_modules/.pnpm/@servicenow+now-dropdown@28.0.46/node_modules/@servicenow/now-dropdown/src/_now-dropdown.scss?f479","webpack:///../../node_modules/.pnpm/@servicenow+now-heading@28.0.46/node_modules/@servicenow/now-heading/src/_now-heading.scss?bba1","webpack:///../../node_modules/.pnpm/@servicenow+now-highlighted-value@28.0.46/node_modules/@servicenow/now-highlighted-value/src/_now-highlighted-value.scss?e7a5","webpack:///../../node_modules/.pnpm/@servicenow+now-icon@28.0.46/node_modules/@servicenow/now-icon/src/_now-icon-animated.scss?0e34","webpack:///../../node_modules/.pnpm/@servicenow+now-icon@28.0.46/node_modules/@servicenow/now-icon/src/_now-icon.scss?8187","webpack:///../../node_modules/.pnpm/@servicenow+now-illustration@28.0.46/node_modules/@servicenow/now-illustration/src/_now-illustration-custom.scss?7f7b","webpack:///../../node_modules/.pnpm/@servicenow+now-illustration@28.0.46/node_modules/@servicenow/now-illustration/src/_now-illustration.scss?dbc9","webpack:///../../node_modules/.pnpm/@servicenow+now-image@28.0.46/node_modules/@servicenow/now-image/src/_now-image.scss?7dfd","webpack:///../../node_modules/.pnpm/@servicenow+now-input@28.0.46/node_modules/@servicenow/now-input/src/_now-input-password.scss?23b9","webpack:///../../node_modules/.pnpm/@servicenow+now-input@28.0.46/node_modules/@servicenow/now-input/src/_now-input-phone.scss?39cf","webpack:///../../node_modules/.pnpm/@servicenow+now-input@28.0.46/node_modules/@servicenow/now-input/src/_now-input-url.scss?732b","webpack:///../../node_modules/.pnpm/@servicenow+now-input@28.0.46/node_modules/@servicenow/now-input/src/_now-input.scss?e757","webpack:///../../node_modules/.pnpm/@servicenow+now-input@28.0.46/node_modules/@servicenow/now-input/src/form-field/_popover-content.scss?2488","webpack:///../../node_modules/.pnpm/@servicenow+now-label-value@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-label-value/src/_now-label-value-inline.scss?b678","webpack:///../../node_modules/.pnpm/@servicenow+now-label-value@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-label-value/src/_now-label-value-stacked.scss?54c0","webpack:///../../node_modules/.pnpm/@servicenow+now-label-value@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-label-value/src/_now-label-value-tabbed.scss?c0bf","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/main.scss?39f4","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/now-list-gallery/views/galleryView.scss?cb3e","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/now-list-gallery/views/truncatedTextMore/styles.scss?3f87","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/popoverCellEditorContent.scss?5a39","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/shared/views/popover/popoverChoiceColumnFilterContent/popoverChoiceColumnFilterContent.scss?9688","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/shared/views/popover/popoverCustomContent/popoverCustomContent.scss?4fde","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/shared/views/popover/popoverListContent/popoverListContent.scss?274d","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/shared/views/popover/popoverTextContent/popoverTextContent.scss?cf5b","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/shared/views/table/tableHeaders/tableHeaderCell/columnHeaderClone.scss?8abe","webpack:///../../node_modules/.pnpm/@servicenow+now-list@28.0.15_encoding@0.1.13/node_modules/@servicenow/now-list/src/now-list/shared/views/timeAgoDisplay/timeAgoDisplay.scss?4263","webpack:///../../node_modules/.pnpm/@servicenow+now-loader@28.0.46/node_modules/@servicenow/now-loader/src/_now-loader-custom.scss?e7cc","webpack:///../../node_modules/.pnpm/@servicenow+now-loader@28.0.46/node_modules/@servicenow/now-loader/src/_now-loader-skeleton.scss?43e0","webpack:///../../node_modules/.pnpm/@servicenow+now-loader@28.0.46/node_modules/@servicenow/now-loader/src/_now-loader.scss?2849","webpack:///../../node_modules/.pnpm/@servicenow+now-message@28.0.46/node_modules/@servicenow/now-message/src/_now-message.scss?0d11","webpack:///../../node_modules/.pnpm/@servicenow+now-modal@28.0.46/node_modules/@servicenow/now-modal/src/_now-modal.scss?52f9","webpack:///../../node_modules/.pnpm/@servicenow+now-pagination-control@28.0.46/node_modules/@servicenow/now-pagination-control/src/_now-pagination-control.scss?42a0","webpack:///../../node_modules/.pnpm/@servicenow+now-pill@28.0.46/node_modules/@servicenow/now-pill/src/_now-pill.scss?f346","webpack:///../../node_modules/.pnpm/@servicenow+now-popover@28.0.46/node_modules/@servicenow/now-popover/src/_now-popover-panel.scss?73a9","webpack:///../../node_modules/.pnpm/@servicenow+now-progress-bar@28.0.46/node_modules/@servicenow/now-progress-bar/src/_now-progress-bar.scss?b9c2","webpack:///../../node_modules/.pnpm/@servicenow+now-radio-buttons@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-radio-buttons/src/_now-radio-buttons.scss?a20c","webpack:///../../node_modules/.pnpm/@servicenow+now-record-html-editor@28.0.7-pi.1_@servicenow+now-tooltip@28.0.14/node_modules/@servicenow/now-record-html-editor/src/html.scss?0342","webpack:///../../node_modules/.pnpm/@servicenow+now-select@28.0.46_@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-select/src/_now-select.scss?670a","webpack:///../../node_modules/.pnpm/@servicenow+now-tabs@28.0.46/node_modules/@servicenow/now-tabs/src/_now-tabs-vertical.scss?700c","webpack:///../../node_modules/.pnpm/@servicenow+now-tabs@28.0.46/node_modules/@servicenow/now-tabs/src/_now-tabs.scss?bdfd","webpack:///../../node_modules/.pnpm/@servicenow+now-template-message@28.0.46/node_modules/@servicenow/now-template-message/src/_now-template-message-empty-state.scss?e3e7","webpack:///../../node_modules/.pnpm/@servicenow+now-text-link@28.0.46/node_modules/@servicenow/now-text-link/src/_now-text-link.scss?1e0a","webpack:///../../node_modules/.pnpm/@servicenow+now-textarea@28.0.10_@servicenow+now-tooltip@28.0.14/node_modules/@servicenow/now-textarea/src/_now-textarea.scss?2a82","webpack:///../../node_modules/.pnpm/@servicenow+now-tooltip@28.0.46/node_modules/@servicenow/now-tooltip/src/_now-tooltip.scss?97f5","webpack:///../../node_modules/.pnpm/@servicenow+now-typeahead@28.0.14/node_modules/@servicenow/now-typeahead/src/_now-typeahead.scss?0d8f","webpack:///external module \"/uxasset/externals/@devsnc/library-uxf/index.jsdbx\"","webpack:///external module \"/uxasset/externals/@servicenow/ui-config/index.jsdbx\"","webpack:///external module \"/uxasset/externals/@servicenow/ui-core/index.jsdbx\"","webpack:///external module \"/uxasset/externals/@servicenow/ui-effect-amb/index.jsdbx\"","webpack:///external module \"/uxasset/externals/@servicenow/ui-effect-graphql/index.jsdbx\"","webpack:///external module \"/uxasset/externals/@servicenow/ui-effect-http/index.jsdbx\"","webpack:///external module \"/uxasset/externals/@servicenow/ui-metrics/index.jsdbx\"","webpack:///external module \"/uxasset/externals/@servicenow/ui-renderer-snabbdom/index.jsdbx\"","webpack:///@babel/runtime/7.25.7/helpers/assertThisInitialized.js","webpack:///@babel/runtime/7.25.7/helpers/classCallCheck.js","webpack:///@babel/runtime/7.25.7/helpers/construct.js","webpack:///@babel/runtime/7.25.7/helpers/createClass.js","webpack:///@babel/runtime/7.25.7/helpers/defineProperty.js","webpack:///@babel/runtime/7.25.7/helpers/extends.js","webpack:///@babel/runtime/7.25.7/helpers/getPrototypeOf.js","webpack:///@babel/runtime/7.25.7/helpers/inherits.js","webpack:///@babel/runtime/7.25.7/helpers/interopRequireDefault.js","webpack:///@babel/runtime/7.25.7/helpers/isNativeFunction.js","webpack:///@babel/runtime/7.25.7/helpers/isNativeReflectConstruct.js","webpack:///@babel/runtime/7.25.7/helpers/objectWithoutPropertiesLoose.js","webpack:///@babel/runtime/7.25.7/helpers/possibleConstructorReturn.js","webpack:///@babel/runtime/7.25.7/helpers/setPrototypeOf.js","webpack:///@babel/runtime/7.25.7/helpers/toPrimitive.js","webpack:///@babel/runtime/7.25.7/helpers/toPropertyKey.js","webpack:///@babel/runtime/7.25.7/helpers/typeof.js","webpack:///@babel/runtime/7.25.7/helpers/wrapNativeSuper.js","webpack:///@devsnc/ux-metrics/src/constants.js","webpack:///@devsnc/ux-metrics/src/track.js","webpack:///@devsnc/ux-metrics/src/index.js","webpack:///ais-ux-components/30.5.2/apps/src/utils.ts","webpack:///ais-ux-components/30.5.2/apps/src/tags.ts","webpack:///ais-ux-components/30.5.2/apps/src/attrs.ts","webpack:///ais-ux-components/30.5.2/apps/src/regexp.ts","webpack:///ais-ux-components/30.5.2/apps/src/purify.ts","webpack:///webpack/bootstrap","webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/load script","webpack:///webpack/runtime/amd options","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///@servicenow/behavior-key-binding/28.0.46/src/key-binding.js","webpack:///@devsnc/sn-hierarchical-select/src/constants.js","webpack:///@devsnc/sn-hierarchical-select/src/actions.js","webpack:///@devsnc/sn-hierarchical-select/src/utils.js","webpack:///@devsnc/sn-hierarchical-select/src/effects.js","webpack:///@devsnc/sn-hierarchical-select/src/actionHandlers.js","webpack:///@devsnc/sn-hierarchical-select/src/treeMode/views/TreeExpandButton.js","webpack:///@devsnc/sn-hierarchical-select/src/views/Link.js","webpack:///@devsnc/sn-hierarchical-select/src/views/Checkbox.js","webpack:///@devsnc/sn-hierarchical-select/src/treeMode/views/TreeItem.js","webpack:///@devsnc/sn-hierarchical-select/src/views/Item.js","webpack:///@devsnc/sn-hierarchical-select/src/treeMode/utils/treeClassName.js","webpack:///@devsnc/sn-hierarchical-select/src/views/Tree.js","webpack:///@devsnc/sn-hierarchical-select/src/view.js","webpack:///@devsnc/sn-hierarchical-select/src/index.js","webpack:///sn-signals/19.1.2/src/user.js","webpack:///sn-signals/19.1.2/src/queue.js","webpack:///sn-signals/19.1.2/src/signals.js","webpack:///sn-signals/19.1.2/index.js","webpack:///@devsnc/sn-search-facets/src/common/constants.js","webpack:///@devsnc/sn-search-facets/src/common/utils.js","webpack:///@devsnc/sn-search-facets/src/common/view/Facet.js","webpack:///@devsnc/sn-search-facets/src/common/view/Divider.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/actions.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/view/ExpandButton.js","webpack:///@devsnc/sn-search-facets/src/common/actions.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/view/Accordion.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/view/Panel.js","webpack:///@servicenow/now-pill/src/now-pill.js","webpack:///@servicenow/now-label-value/src/now-label-value-inline.js","webpack:///@servicenow/now-label-value/src/utils/to-extension.js","webpack:///@servicenow/now-label-value/src/utils/normalize-values.js","webpack:///@servicenow/now-highlighted-value/src/now-highlighted-value.js","webpack:///@servicenow/now-label-value/src/utils/render-value.js","webpack:///@servicenow/now-label-value/src/schemas/label-value-schema.js","webpack:///@servicenow/now-label-value/src/now-label-value-stacked.js","webpack:///@servicenow/now-label-value/src/now-label-value-tabbed.js","webpack:///@servicenow/now-label-value/src/index.js","webpack:///@devsnc/sn-search-facets/src/common/view/AppliedFacets.js","webpack:///@devsnc/sn-search-facets/src/common/view/Loader.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/view/PanelList.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/view/Header.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/view/DesktopView.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/effects.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/constants.js","webpack:///@devsnc/sn-search-facets/src/common/effects.js","webpack:///@devsnc/sn-search-facets/src/common/actionHandlers.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/actionHandlers.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-desktop/sn-search-facets-desktop.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/actions.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/view/ExpandButton.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/view/Filters.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/view/Panel.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/view/PanelList.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/view/RootHeader.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/view/CategoryHeader.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/view/Header.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/view/MobileView.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/effects.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/actionHandlers.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets-mobile/sn-search-facets-mobile.js","webpack:///@devsnc/sn-search-facets/src/view.js","webpack:///@devsnc/sn-search-facets/src/common/signalTracker.js","webpack:///@devsnc/sn-search-facets/src/sn-search-facets.js","webpack:///@servicenow/behavior-media-query/28.0.46/src/media-query.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/onboardingPopoverUtil.js","webpack:///@devsnc/sn-search-combobox/src/common/actions/index.js","webpack:///@devsnc/sn-search-combobox/src/common/constants/index.js","webpack:///@devsnc/sn-search-combobox/src/common/view/sn-search-onboarding-popover.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/signalTracker.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/parseNavItem.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/keyboardNavigation.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/exactMatch.js","webpack:///@devsnc/sn-search-combobox/src/common/effects/dismissOnboardingPopoverEffects.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/highlight.js","webpack:///@devsnc/sn-search-combobox/src/common/effects/inputEffects.js","webpack:///@devsnc/sn-search-combobox/src/common/view/Input.js","webpack:///@servicenow/now-card/src/now-card-actions.js","webpack:///@servicenow/now-card/src/now-card-footer.js","webpack:///@servicenow/now-card/src/now-card-header.js","webpack:///@servicenow/now-card/src/now-card-divider.js","webpack:///@servicenow/now-card/src/now-card.js","webpack:///@servicenow/now-card/src/index.js","webpack:///@devsnc/sn-search-combobox/src/common/view/PopoverItems/PopoverItem.js","webpack:///@devsnc/sn-search-combobox/src/common/view/PopoverItems/SearchTerm.js","webpack:///@devsnc/sn-search-combobox/src/common/view/PopoverItems/SectionHeader.js","webpack:///@devsnc/sn-search-combobox/src/common/view/PopoverItems/UserHistory.js","webpack:///@devsnc/sn-search-combobox/src/common/view/PopoverItems/InstanceHistory.js","webpack:///@devsnc/sn-search-combobox/src/common/view/ariaLiveContainer.js","webpack:///@devsnc/sn-search-combobox/src/common/view/PopoverItems/Navigation.js","webpack:///@devsnc/sn-search-combobox/src/common/view/PopoverItems/PopoverFooter.js","webpack:///@devsnc/sn-search-combobox/src/common/view/PopoverItems/index.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/resultItemsUtil.js","webpack:///@devsnc/sn-search-combobox/src/common/view/PopoverItems/Utterances.js","webpack:///@devsnc/sn-search-combobox/src/common/view/Popover.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-mobile/view/MobileStartViewInHeader.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-desktop/view/Combobox.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/transformSuggestionResponse.js","webpack:///@devsnc/sn-search-combobox/src/common/effects/suggestionEffects.js","webpack:///@devsnc/sn-search-combobox/src/common/effects/clearSearchEffects.js","webpack:///@devsnc/sn-search-combobox/src/common/effects/fitEffects.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/interceptor.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/effectProxy.js","webpack:///@devsnc/sn-search-combobox/src/common/effects/contextDropdownEffects.js","webpack:///@devsnc/sn-search-combobox/src/common/utils/transformExactMatchResponse.js","webpack:///@devsnc/sn-search-combobox/src/common/effects/exactMatchEffects.js","webpack:///@devsnc/sn-search-combobox/src/common/effects/displayOnboardingPopoeverEffects.js","webpack:///@devsnc/sn-search-combobox/src/common/actionHandlers/index.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-desktop/index.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-mobile/view/MobileInput.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-mobile/view/MobileStartViewInPage.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-mobile/view/Combobox.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-mobile/effects/inputEffects.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-mobile/actionHandlers/index.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox-mobile/index.js","webpack:///@devsnc/sn-search-combobox/src/view.js","webpack:///@devsnc/sn-search-combobox/src/sn-search-combobox.js","webpack:///@servicenow/now-tabs/src/schemas/tabs-schema.js","webpack:///@servicenow/now-tabs/src/now-tabs.js","webpack:///@servicenow/now-tabs/src/now-tabs-vertical.js","webpack:///@servicenow/now-tabs/src/index.js","webpack:///@devsnc/sn-tab-filter/src/constants.js","webpack:///@devsnc/sn-tab-filter/src/utils.js","webpack:///@devsnc/sn-tab-filter/src/view.js","webpack:///@devsnc/sn-tab-filter/src/actions.js","webpack:///@devsnc/sn-tab-filter/src/effects.js","webpack:///@devsnc/sn-tab-filter/src/sn-tab-filter.js","webpack:///@devsnc/sn-search-genius-cards/src/constants.js","webpack:///@devsnc/sn-search-genius-card-assist/src/constants.js","webpack:///@devsnc/sn-search-genius-card-assist/src/common/streaming/utils.js","webpack:///@devsnc/sn-search-genius-card-assist/src/sections/heading.js","webpack:///ais-ux-components/30.5.2/apps/src/defaults.ts","webpack:///ais-ux-components/30.5.2/apps/src/rules.ts","webpack:///ais-ux-components/30.5.2/apps/src/helpers.ts","webpack:///ais-ux-components/30.5.2/apps/src/Tokenizer.ts","webpack:///ais-ux-components/30.5.2/apps/src/Lexer.ts","webpack:///ais-ux-components/30.5.2/apps/src/Renderer.ts","webpack:///ais-ux-components/30.5.2/apps/src/TextRenderer.ts","webpack:///ais-ux-components/30.5.2/apps/src/Parser.ts","webpack:///ais-ux-components/30.5.2/apps/src/Hooks.ts","webpack:///ais-ux-components/30.5.2/apps/src/Instance.ts","webpack:///ais-ux-components/30.5.2/apps/src/marked.ts","webpack:///@devsnc/sn-search-genius-card-assist/src/common/popover/view-records-popover.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/description.js","webpack:///@servicenow/now-image/src/now-image.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/marker.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/heading.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/identifier.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/labelValues.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/bodyAiSearch.js","webpack:///sn-component-timeago/src/snTimeago/SnDateTimeWordService.js","webpack:///sn-component-timeago/src/snTimeago/SnTimerService.js","webpack:///sn-component-timeago/src/snTimeago/SnTimeAgo.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/logger.js","webpack:///@servicenow/now-list/src/now-list/behaviors/actionableMessageBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/actionableMessageBehavior/actionableMessageBehavior.js","webpack:///@devsnc/sn-list-commons/src/components/ariaLiveRegion/ariaLiveRegion.js","webpack:///@devsnc/sn-list-commons/src/behaviors/ariaLive/constants.js","webpack:///@devsnc/sn-list-commons/src/behaviors/ariaLive/actionHandlers.js","webpack:///@devsnc/sn-list-commons/src/behaviors/ariaLive/ariaLiveBehavior.js","webpack:///@devsnc/sn-list-commons/src/behaviors/uiBuilder/actionHandlers.js","webpack:///@devsnc/sn-list-commons/src/behaviors/uiBuilder/constants.js","webpack:///@devsnc/sn-list-commons/src/behaviors/uiBuilder/uiBuilderBehavior.js","webpack:///@devsnc/sn-list-commons/src/behaviors/uiBuilder/utils.js","webpack:///@devsnc/sn-list-commons/src/behaviors/userPreferences/actionHandlers.js","webpack:///@devsnc/sn-list-commons/src/behaviors/userPreferences/userPreferencesBehavior.js","webpack:///@devsnc/sn-list-commons/src/utils/logger.js","webpack:///@devsnc/sn-list-commons/src/behaviors/intersectionObserverBehavior/constants.js","webpack:///@devsnc/sn-list-commons/src/behaviors/intersectionObserverBehavior/selectors.js","webpack:///@devsnc/sn-list-commons/src/behaviors/intersectionObserverBehavior/index.js","webpack:///@devsnc/sn-list-commons/src/utils/focusUtility.js","webpack:///@servicenow/now-list/src/now-list/resources/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowGroupingBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/keyboardNavBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/keyboardNavBehavior/utils.js","webpack:///@servicenow/now-list/src/now-list/behaviors/keyboardNavBehavior/keyboardNavHelpers.js","webpack:///@servicenow/now-list/src/now-list/behaviors/popoverBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/cellEditingBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/cellEditingBehavior/cellEditingBehavior.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableHeaders/columnFilteringCell/columnFilteringConsts.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/selectors/featureFlagSelectors.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/selectors/rowSelectors.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/selectors/columnSelectors.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnBehavior/columnBehavior.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/constants.js","webpack:///@servicenow/now-list/src/now-list/commons/dom-utils.js","webpack:///@servicenow/now-list/src/now-list/commons/utils/directions.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/core/helpers.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/core/auto-scroll.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/core/class.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/core/clone.js","webpack:///@servicenow/now-list/src/now-list/commons/utils/rectangle.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/core/placeholder.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/core/index.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/adapters/keyboard/visual-next.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/adapters/keyboard/keyboard-adapter.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/adapters/mouse-and-touch/cancel-sort.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/adapters/mouse-and-touch/dropzone-notifier.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/adapters/mouse-and-touch/interactjs-adapter.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/sortable.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/behavior.js","webpack:///@servicenow/now-list/src/now-list/commons/sortable/index.js","webpack:///@servicenow/now-list/src/now-list/commons/resize/constants.js","webpack:///@servicenow/now-list/src/now-list/commons/resize/shared.js","webpack:///@servicenow/now-list/src/now-list/commons/resize/interactjs.js","webpack:///@servicenow/now-list/src/now-list/commons/resize/keyboard.js","webpack:///@servicenow/now-list/src/now-list/commons/resize/resizingBehavior.js","webpack:///@servicenow/now-list/src/now-list/commons/resize/index.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnDragDropBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/shared/fakeNowIcon.js","webpack:///@servicenow/now-list/src/now-list/shared/views/shared/dragHandle.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableHeaders/tableHeaderCell/columnHeaderClone.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnDragDropBehavior/columnDragDropUtils.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnDragDropBehavior/columnDragDropEffects.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnDragDropBehavior/nowSortableOptions.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnDragDropBehavior/columnDragDropBehavior.js","webpack:///date-fns/2.22.1/esm/_lib/requiredArgs/index.js","webpack:///date-fns/2.22.1/esm/toDate/index.js","webpack:///date-fns/2.22.1/esm/getTime/index.js","webpack:///date-fns/2.22.1/esm/getUnixTime/index.js","webpack:///date-fns-tz/1.3.6/esm/_lib/tzTokenizeDate/index.js","webpack:///date-fns-tz/1.3.6/esm/_lib/newDateUTC/index.js","webpack:///date-fns-tz/1.3.6/esm/_lib/tzParseTimezone/index.js","webpack:///date-fns-tz/1.3.6/esm/_lib/tzPattern/index.js","webpack:///date-fns-tz/1.3.6/esm/toDate/index.js","webpack:///date-fns-tz/1.3.6/esm/zonedTimeToUtc/index.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverChoiceColumnFilterContent/popoverChoiceColumnFilterConsts.js","webpack:///date-fns/2.22.1/esm/_lib/toInteger/index.js","webpack:///date-fns/2.22.1/esm/fromUnixTime/index.js","webpack:///date-fns-tz/1.3.6/esm/_lib/tzIntlTimeZoneName/index.js","webpack:///date-fns-tz/1.3.6/esm/format/formatters/index.js","webpack:///date-fns-tz/1.3.6/esm/format/index.js","webpack:///date-fns-tz/1.3.6/esm/utcToZonedTime/index.js","webpack:///date-fns-tz/1.3.6/esm/formatInTimeZone/index.js","webpack:///@servicenow/library-date-time/28.0.14/src/utils/constants.js","webpack:///date-fns/2.22.1/esm/isValid/index.js","webpack:///date-fns/2.22.1/esm/_lib/addLeadingZeros/index.js","webpack:///date-fns/2.22.1/esm/formatISO/index.js","webpack:///date-fns/2.22.1/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///date-fns/2.22.1/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///date-fns/2.22.1/esm/locale/en-US/_lib/formatLong/index.js","webpack:///date-fns/2.22.1/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///date-fns/2.22.1/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///date-fns/2.22.1/esm/locale/en-US/_lib/localize/index.js","webpack:///date-fns/2.22.1/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///date-fns/2.22.1/esm/locale/_lib/buildMatchFn/index.js","webpack:///date-fns/2.22.1/esm/locale/en-US/_lib/match/index.js","webpack:///date-fns/2.22.1/esm/locale/en-US/index.js","webpack:///date-fns/2.22.1/esm/addMilliseconds/index.js","webpack:///date-fns/2.22.1/esm/subMilliseconds/index.js","webpack:///date-fns/2.22.1/esm/_lib/assign/index.js","webpack:///date-fns/2.22.1/esm/_lib/format/longFormatters/index.js","webpack:///date-fns/2.22.1/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///date-fns/2.22.1/esm/_lib/protectedTokens/index.js","webpack:///date-fns/2.22.1/esm/_lib/startOfUTCWeek/index.js","webpack:///date-fns/2.22.1/esm/_lib/getUTCWeekYear/index.js","webpack:///date-fns/2.22.1/esm/_lib/setUTCDay/index.js","webpack:///date-fns/2.22.1/esm/_lib/setUTCISODay/index.js","webpack:///date-fns/2.22.1/esm/_lib/startOfUTCISOWeek/index.js","webpack:///date-fns/2.22.1/esm/_lib/getUTCISOWeekYear/index.js","webpack:///date-fns/2.22.1/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///date-fns/2.22.1/esm/_lib/getUTCISOWeek/index.js","webpack:///date-fns/2.22.1/esm/_lib/setUTCISOWeek/index.js","webpack:///date-fns/2.22.1/esm/_lib/startOfUTCWeekYear/index.js","webpack:///date-fns/2.22.1/esm/_lib/getUTCWeek/index.js","webpack:///date-fns/2.22.1/esm/_lib/setUTCWeek/index.js","webpack:///date-fns/2.22.1/esm/parse/_lib/parsers/index.js","webpack:///date-fns/2.22.1/esm/parse/index.js","webpack:///date-fns/2.22.1/esm/isMatch/index.js","webpack:///date-fns/2.22.1/esm/_lib/format/lightFormatters/index.js","webpack:///date-fns/2.22.1/esm/_lib/getUTCDayOfYear/index.js","webpack:///date-fns/2.22.1/esm/_lib/format/formatters/index.js","webpack:///date-fns/2.22.1/esm/format/index.js","webpack:///date-fns-tz/2.0.1/esm/_lib/tzTokenizeDate/index.js","webpack:///date-fns-tz/2.0.1/esm/_lib/newDateUTC/index.js","webpack:///date-fns-tz/2.0.1/esm/_lib/tzParseTimezone/index.js","webpack:///date-fns-tz/2.0.1/esm/_lib/tzPattern/index.js","webpack:///date-fns-tz/2.0.1/esm/toDate/index.js","webpack:///date-fns-tz/2.0.1/esm/zonedTimeToUtc/index.js","webpack:///date-fns-tz/2.0.1/esm/_lib/tzIntlTimeZoneName/index.js","webpack:///date-fns-tz/2.0.1/esm/format/formatters/index.js","webpack:///date-fns-tz/2.0.1/esm/format/index.js","webpack:///date-fns-tz/2.0.1/esm/utcToZonedTime/index.js","webpack:///date-fns-tz/2.0.1/esm/formatInTimeZone/index.js","webpack:///date-fns/2.30.0/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///date-fns/2.30.0/esm/locale/en-US/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///date-fns/2.30.0/esm/locale/en-US/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/_lib/buildMatchFn/index.js","webpack:///date-fns/2.30.0/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///date-fns/2.30.0/esm/locale/en-US/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/en-US/index.js","webpack:///@servicenow/library-date-time/28.0.14/src/utils/date.js","webpack:///@servicenow/library-date-time/28.0.14/src/utils/is-type-to-format-valid.js","webpack:///@servicenow/library-date-time/28.0.14/src/context/locale-context.js","webpack:///@servicenow/library-date-time/28.0.14/src/context/timezone-context.js","webpack:///@servicenow/library-date-time/28.0.14/src/utils/error-messages.js","webpack:///@servicenow/now-date-time/src/utils/constants.js","webpack:///date-fns/2.22.1/esm/addDays/index.js","webpack:///date-fns/2.22.1/esm/addMonths/index.js","webpack:///date-fns/2.22.1/esm/add/index.js","webpack:///date-fns/2.22.1/esm/subDays/index.js","webpack:///date-fns/2.22.1/esm/subMonths/index.js","webpack:///date-fns/2.22.1/esm/sub/index.js","webpack:///date-fns/2.22.1/esm/getDaysInMonth/index.js","webpack:///date-fns/2.22.1/esm/setMonth/index.js","webpack:///date-fns/2.22.1/esm/set/index.js","webpack:///@servicenow/now-date-time/src/utils/date-actions.js","webpack:///@servicenow/now-date-time/src/utils/create-date-item.js","webpack:///date-fns/2.22.1/esm/compareAsc/index.js","webpack:///date-fns/2.22.1/esm/getYear/index.js","webpack:///date-fns/2.22.1/esm/getMonth/index.js","webpack:///date-fns/2.22.1/esm/getQuarter/index.js","webpack:///date-fns/2.22.1/esm/startOfWeek/index.js","webpack:///date-fns/2.22.1/esm/getWeekYear/index.js","webpack:///date-fns/2.22.1/esm/startOfWeekYear/index.js","webpack:///date-fns/2.22.1/esm/getWeek/index.js","webpack:///date-fns/2.22.1/esm/isBefore/index.js","webpack:///date-fns/2.22.1/esm/getDate/index.js","webpack:///date-fns/2.22.1/esm/startOfISOWeek/index.js","webpack:///date-fns/2.22.1/esm/getISOWeekYear/index.js","webpack:///date-fns/2.22.1/esm/startOfISOWeekYear/index.js","webpack:///date-fns/2.22.1/esm/getISOWeek/index.js","webpack:///date-fns/2.22.1/esm/addWeeks/index.js","webpack:///date-fns/2.22.1/esm/eachWeekOfInterval/index.js","webpack:///date-fns/2.22.1/esm/differenceInCalendarWeeks/index.js","webpack:///date-fns/2.22.1/esm/lastDayOfMonth/index.js","webpack:///date-fns/2.22.1/esm/startOfMonth/index.js","webpack:///date-fns/2.22.1/esm/getWeeksInMonth/index.js","webpack:///date-fns/2.22.1/esm/lastDayOfWeek/index.js","webpack:///date-fns/2.22.1/esm/eachDayOfInterval/index.js","webpack:///date-fns/2.22.1/esm/getDay/index.js","webpack:///date-fns/2.22.1/esm/isWithinInterval/index.js","webpack:///date-fns/2.22.1/esm/isEqual/index.js","webpack:///date-fns/2.22.1/esm/getOverlappingDaysInIntervals/index.js","webpack:///date-fns/2.22.1/esm/isAfter/index.js","webpack:///@servicenow/now-date-time/src/reducers/set-states.js","webpack:///@servicenow/now-date-time/src/reducers/get-date-items.js","webpack:///date-fns/2.22.1/esm/eachMonthOfInterval/index.js","webpack:///@servicenow/now-date-time/src/reducers/get-month-items.js","webpack:///date-fns/2.22.1/esm/eachYearOfInterval/index.js","webpack:///@servicenow/now-date-time/src/reducers/get-year-items.js","webpack:///@servicenow/now-date-time/src/reducers/get-week-items.js","webpack:///date-fns/2.22.1/esm/parseISO/index.js","webpack:///date-fns/2.22.1/esm/addQuarters/index.js","webpack:///date-fns/2.22.1/esm/startOfQuarter/index.js","webpack:///date-fns/2.22.1/esm/eachQuarterOfInterval/index.js","webpack:///@servicenow/now-date-time/src/reducers/get-quarter-items.js","webpack:///@servicenow/now-date-time/src/reducers/items-reducer.js","webpack:///@servicenow/now-date-time/src/utils/event-handlers.js","webpack:///date-fns/2.22.1/esm/isDate/index.js","webpack:///date-fns/2.22.1/esm/subQuarters/index.js","webpack:///date-fns/2.22.1/esm/min/index.js","webpack:///date-fns/2.22.1/esm/max/index.js","webpack:///@servicenow/now-date-time/src/views/render-date-controls.js","webpack:///@servicenow/now-date-time/src/views/render-controls.js","webpack:///@servicenow/now-date-time/src/views/render-items.js","webpack:///@servicenow/now-date-time/src/schemas/index.js","webpack:///@servicenow/now-date-time/src/now-date-time-calendar.js","webpack:///@servicenow/now-date-time/src/utils/helper.js","webpack:///@servicenow/now-date-time/src/now-input-date-time.js","webpack:///@servicenow/now-date-time/src/actions/now-date-time-calendar.js","webpack:///@servicenow/now-date-time/src/actions/now-input-date-time.js","webpack:///date-fns/2.30.0/esm/locale/cs/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/cs/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/cs/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/cs/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/cs/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/cs/index.js","webpack:///date-fns/2.30.0/esm/locale/da/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/da/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/da/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/da/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/da/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/da/index.js","webpack:///date-fns/2.30.0/esm/locale/de/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/de/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/de/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/de/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/de/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/de/index.js","webpack:///date-fns/2.30.0/esm/locale/en-IN/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/en-IN/index.js","webpack:///date-fns/2.30.0/esm/locale/en-GB/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/en-IE/index.js","webpack:///date-fns/2.30.0/esm/locale/en-GB/index.js","webpack:///date-fns/2.30.0/esm/locale/es/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/es/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/es/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/es/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/es/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/es/index.js","webpack:///date-fns/2.30.0/esm/locale/et/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/et/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/et/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/et/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/et/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/et/index.js","webpack:///date-fns/2.30.0/esm/locale/fi/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/fi/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/fi/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/fi/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/fi/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/fi/index.js","webpack:///date-fns/2.30.0/esm/locale/fr/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/fr/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/fr/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/fr/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/fr-CA/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/fr-CA/index.js","webpack:///date-fns/2.30.0/esm/locale/fr/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/fr/index.js","webpack:///date-fns/2.30.0/esm/locale/he/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/he/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/he/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/he/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/he/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/he/index.js","webpack:///date-fns/2.30.0/esm/locale/hu/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/hu/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/hu/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/hu/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/hu/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/hu/index.js","webpack:///date-fns/2.30.0/esm/locale/it/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/it/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/_lib/requiredArgs/index.js","webpack:///@babel/runtime/7.25.7/helpers/esm/typeof.js","webpack:///date-fns/2.30.0/esm/toDate/index.js","webpack:///date-fns/2.30.0/esm/_lib/toInteger/index.js","webpack:///date-fns/2.30.0/esm/_lib/defaultOptions/index.js","webpack:///date-fns/2.30.0/esm/_lib/startOfUTCWeek/index.js","webpack:///date-fns/2.30.0/esm/_lib/isSameUTCWeek/index.js","webpack:///date-fns/2.30.0/esm/locale/it/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/it/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/it/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/it/index.js","webpack:///date-fns/2.30.0/esm/locale/ja/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/ja/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/ja/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/ja/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/ja/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/ja/index.js","webpack:///date-fns/2.30.0/esm/locale/ko/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/ko/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/ko/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/ko/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/ko/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/ko/index.js","webpack:///date-fns/2.30.0/esm/locale/nn/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/nn/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/nn/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/nn/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/nn/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/nn/index.js","webpack:///date-fns/2.30.0/esm/locale/pl/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/pl/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/pl/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/pl/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/pl/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/pl/index.js","webpack:///date-fns/2.30.0/esm/locale/pt-BR/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/pt-BR/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/pt-BR/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/pt-BR/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/pt-BR/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/pt-BR/index.js","webpack:///date-fns/2.30.0/esm/locale/pt/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/pt/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/pt/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/pt/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/pt/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/pt/index.js","webpack:///date-fns/2.30.0/esm/locale/ru/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/ru/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/ru/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/ru/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/ru/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/ru/index.js","webpack:///date-fns/2.30.0/esm/locale/sv/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/sv/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/sv/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/sv/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/sv/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/sv/index.js","webpack:///date-fns/2.30.0/esm/locale/th/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/th/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/th/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/th/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/th/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/th/index.js","webpack:///date-fns/2.30.0/esm/locale/tr/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/tr/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/tr/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/tr/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/tr/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/tr/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-CN/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-CN/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-CN/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-CN/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-CN/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-CN/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-TW/_lib/formatDistance/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-TW/_lib/formatLong/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-TW/_lib/formatRelative/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-TW/_lib/localize/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-TW/_lib/match/index.js","webpack:///date-fns/2.30.0/esm/locale/zh-TW/index.js","webpack:///@servicenow/now-date-time/src/locales/index.js","webpack:///@servicenow/now-date-time/src/actions/lifecycle.js","webpack:///@servicenow/now-date-time/src/actions/now-popover.js","webpack:///@servicenow/now-date-time/src/actions/index.js","webpack:///@servicenow/now-date-time/src/now-date-time.js","webpack:///date-fns/2.22.1/esm/startOfDay/index.js","webpack:///date-fns/2.22.1/esm/startOfYear/index.js","webpack:///date-fns/2.22.1/esm/startOfHour/index.js","webpack:///date-fns/2.22.1/esm/startOfMinute/index.js","webpack:///date-fns/2.22.1/esm/startOfSecond/index.js","webpack:///date-fns/2.22.1/esm/endOfWeek/index.js","webpack:///date-fns/2.22.1/esm/endOfMonth/index.js","webpack:///date-fns/2.22.1/esm/endOfQuarter/index.js","webpack:///date-fns/2.22.1/esm/endOfYear/index.js","webpack:///date-fns/2.22.1/esm/endOfHour/index.js","webpack:///date-fns/2.22.1/esm/endOfMinute/index.js","webpack:///date-fns/2.22.1/esm/endOfSecond/index.js","webpack:///@servicenow/now-date-time/src/presets/date-fns-lookup.js","webpack:///date-fns/2.22.1/esm/addSeconds/index.js","webpack:///date-fns/2.22.1/esm/addMinutes/index.js","webpack:///date-fns/2.22.1/esm/addHours/index.js","webpack:///date-fns/2.22.1/esm/endOfDay/index.js","webpack:///@servicenow/now-date-time/src/presets/index.js","webpack:///@servicenow/now-date-time/src/presets/now-date-time-presets.js","webpack:///@servicenow/now-date-time/src/now-date-time-interval.js","webpack:///@servicenow/now-select/src/now-select.js","webpack:///@servicenow/now-select/src/index.js","webpack:///@servicenow/now-list/src/now-list/behaviors/componentLoaderBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/intersectionObserverBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/intersectionObserverBehavior/selectors.js","webpack:///@servicenow/now-list/src/now-list/behaviors/intersectionObserverBehavior/intersectionObserverBehavior.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/customLoader.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/dateTimeUtils.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/boolean/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableHeaders/columnFilteringCell/columnFilteringCell.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnFilteringBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnFilteringBehavior/columnFilteringBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnHeaderClickBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnHeaderClickBehavior/columnHeaderClickBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnWidthBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnResizeBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnResizeBehavior/columnResizeBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/columnWidthBehavior/columnWidthBehavior.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/selectors/overlaySelectors.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/selectors/popoverSelectors.js","webpack:///@servicenow/now-list/src/now-list/behaviors/componentLoaderBehavior/componentLoaderBehaviorUtils.js","webpack:///@servicenow/now-list/src/now-list/behaviors/componentLoaderBehavior/componentLoaderBehavior.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/selectors/cellSelectors.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverListContent/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/contextActionsBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/contextActionsBehavior/contextActionsBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/customCellDynamicActionBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/customCellDynamicActionBehavior/utils.js","webpack:///@servicenow/now-list/src/now-list/behaviors/customCellDynamicActionBehavior/customCellDynamicActionBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/keyboardNavBehavior/keyboardNavEffects.js","webpack:///@servicenow/now-list/src/now-list/behaviors/keyboardNavBehavior/keyboardNavBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/keyboardNavBehavior/index.js","webpack:///@servicenow/now-list/src/now-list/behaviors/linkBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/linkBehavior/linkBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowDragDropBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowSelectionBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/metricsBehavior/metricsBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/overlayBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/overlayBehavior/overlayBehavior.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/eventListeners.js","webpack:///@servicenow/now-list/src/now-list/behaviors/popoverBehavior/popoverBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowBehavior/rowBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowDragDropBehavior/dragDropPlaceholders.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowDragDropBehavior/sortableOptions.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowDragDropBehavior/rowDragDropBehavior.js","webpack:///@servicenow/now-list/src/now-list/shared/behaviors/actionConstants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowGroupingBehavior/rowGroupingBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowHighlightedBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowHighlightedBehavior/rowHighlightedHelpers.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowHighlightedBehavior/rowHighlightedBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/rowSelectionBehavior/rowSelectionBehavior.js","webpack:///@servicenow/now-list/src/now-list/behaviors/virtualizedListBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/behaviors/virtualizedListBehavior/virtualizedObserverUtils.js","webpack:///@servicenow/now-list/src/now-list/behaviors/virtualizedListBehavior/virtualizedObserver.js","webpack:///@servicenow/now-list/src/now-list/behaviors/virtualizedListBehavior/virtualizedListBehaviorUtils.js","webpack:///@servicenow/now-list/src/now-list/behaviors/virtualizedListBehavior/virtualizedListBehavior.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/constants/actionConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/person/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/behaviors/bridgeBehavior/bridgeEventMapping.js","webpack:///@servicenow/now-list/src/now-list/shared/behaviors/bridgeBehavior/bridgeBehavior.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/hiddenControls.js","webpack:///@servicenow/now-list/src/now-list/shared/views/floatingTarget/floatingTarget.js","webpack:///@servicenow/now-list/src/now-list/shared/views/overlay/overlay.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/actions.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/action.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverStringCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverCurrencyCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverBooleanCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverDateTimeCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverNumberCellEditorContent.js","webpack:///@servicenow/now-typeahead/src/utils/typeahead.js","webpack:///@servicenow/now-typeahead/src/utils/debounce-dispatch.js","webpack:///@servicenow/now-typeahead/src/now-typeahead.js","webpack:///@servicenow/now-typeahead/src/utils/pill-focus.js","webpack:///@servicenow/now-typeahead/src/now-typeahead-multi.js","webpack:///@servicenow/now-typeahead/src/index.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverPillsCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverChoiceCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverUrlCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverLinkCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverIconCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverPersonCellEditorContent.js","webpack:///sn-tinymce/28.0.6/index.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/propTypes/SeismicComponent.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/schemas/index.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/propTypes/SeismicComponentBase.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/propTypes/SeismicControlledFieldProps.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/propTypes/index.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/escapeSeismicSpecialSymbols.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/field.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/declarativeActions.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/dom.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/outside-scroll.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/shallowEqual.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/constants.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/transformMessages.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/time.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/seismicPropertiesHelper.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/property.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/transformFieldName.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/renderCustomHighlightedLabel.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/renderHighlightedLabel.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/renderDecorations.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/utils/inhouseLodash.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/validations/datetime.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/referenceUtils/index.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/upgradeCompatibility/ComponentBase.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/upgradeCompatibility/ControlledField.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/upgradeCompatibility/FocusWatcher.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/upgradeCompatibility/ShadyDOMEventFixer.js","webpack:///sn-custom-create-element/21.0.0/src/camelCase.js","webpack:///sn-custom-create-element/21.0.0/src/constants.js","webpack:///sn-custom-create-element/21.0.0/src/ariaRefHelpers.js","webpack:///sn-custom-create-element/21.0.0/src/index.js","webpack:///external module \"/uxasset/externals/@servicenow/ui-renderer-react/index.jsdbx\"","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/upgradeCompatibility/renderHighlightedValueReact.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/upgradeCompatibility/forwardProperties.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/upgradeCompatibility/withValueChangeCallbacks.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/upgradeCompatibility/index.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/withValueChangeCallbacks.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/withValueChangeCallbacksBehavior.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/withStateBehavior.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/checkAutoFocus.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/helperContentSeismicRenderer.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/initialValue.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/trackBehavior.js","webpack:///@servicenow/behavior-dynamic-translation/25.0.1/src/constants.js","webpack:///@servicenow/behavior-dynamic-translation/25.0.1/src/utilities.js","webpack:///@servicenow/behavior-dynamic-translation/25.0.1/src/actions/isEnabledActions.js","webpack:///@servicenow/behavior-dynamic-translation/25.0.1/src/behaviors/isEnabledBehavior.js","webpack:///@servicenow/behavior-dynamic-translation/25.0.1/src/actions/detectionActions.js","webpack:///@servicenow/behavior-dynamic-translation/25.0.1/src/behaviors/detectionBehavior.js","webpack:///@servicenow/behavior-dynamic-translation/25.0.1/src/actions/translationActions.js","webpack:///@servicenow/behavior-dynamic-translation/25.0.1/src/behaviors/translationBehavior.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/behaviours/dynamic-translation/constants.js","webpack:///@servicenow/now-rich-text/src/now-rich-text.js","webpack:///@devsnc/sn-controls-common/28.0.7-pi.1/src/behaviours/dynamic-translation/dynamicTranslationBehaviour.js","webpack:///@devsnc/sn-record-nowassist/src/constants/index.js","webpack:///@devsnc/sn-record-nowassist/src/utils/index.js","webpack:///@devsnc/sn-record-nowassist/src/renderNowAssistContextMenu.js","webpack:///@devsnc/sn-record-nowassist/src/nowAssistActionsBehavior.js","webpack:///@devsnc/sn-recommendations-helper/src/sn-recommendations-helper/constants.js","webpack:///@devsnc/sn-recommendations-helper/src/sn-recommendations-helper/index.js","webpack:///@devsnc/sn-record-input/src/CharacterCounter.js","webpack:///@devsnc/sn-record-input/src/Input.js","webpack:///@devsnc/sn-record-input/src/SNInput.js","webpack:///@devsnc/sn-record-control-wrapper/src/ControlWrapper.js","webpack:///@devsnc/sn-record-control-wrapper/src/FieldMessages.js","webpack:///@devsnc/sn-record-control-wrapper/src/legacy-files/formFieldHelperReact.js","webpack:///@devsnc/sn-record-control-wrapper/src/legacy-files/LabelReact.js","webpack:///@devsnc/sn-record-control-wrapper/src/legacy-files/FieldMessagesReact.js","webpack:///@devsnc/sn-record-control-wrapper/src/legacy-files/ControlWrapperReact.js","webpack:///@devsnc/sn-record-input/src/SNInputGroup.js","webpack:///@devsnc/sn-record-input/src/behaviors/trackBootstrapBehavior.js","webpack:///@devsnc/sn-record-input/src/index.js","webpack:///@devsnc/sn-record-control/src/view.js","webpack:///@devsnc/sn-record-control/src/actionHandlers.js","webpack:///@devsnc/sn-record-control/src/index.js","webpack:///@servicenow/now-record-html-editor/src/constants.js","webpack:///@servicenow/now-record-html-editor/src/TinyMCEEditor.js","webpack:///@servicenow/now-record-html-editor/src/DetectDarkness.js","webpack:///@servicenow/now-record-html-editor/src/TinyMCEThemeBehaviors.js","webpack:///@servicenow/now-record-html-editor/src/importTiny.js","webpack:///@servicenow/now-record-html-editor/src/TinyMCEV5CompatibleMode/constants.js","webpack:///@servicenow/now-record-html-editor/src/TinyMCEV5CompatibleMode/utils.js","webpack:///@servicenow/now-record-html-editor/src/TinyMCEV5CompatibleMode/index.js","webpack:///@servicenow/now-record-html-editor/src/NowAssistContextMenu/index.js","webpack:///@servicenow/now-record-html-editor/src/Utils.js","webpack:///@servicenow/now-record-html-editor/src/effects.js","webpack:///@servicenow/now-record-html-editor/src/index.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/cellEditorTypes/popoverHTMLCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCellEditContent/popoverCellEditorContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverTextContent/constants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverTextContent/actions.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverTextContent/popoverTextContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverListContent/actions.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverListContent/popoverListContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCustomContent/action.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverCustomContent/popoverCustomContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverChoiceColumnFilterContent/popoverChoiceColumnFilterHelpers.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popoverChoiceColumnFilterContent/popoverChoiceColumnFilterContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/popover/popover.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/behaviors/galleryCardInteractionBehavior/galleryCardInteractionBehavior.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/layoutConstants.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/utils/galleryCardUtils.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/utils/galleryDefaultConfig.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/behaviors/galleryDataBehavior/galleryDataBehavior.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/behaviors/galleryGroupedBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/behaviors/galleryGroupedBehavior/galleryGroupedBehavior.js","webpack:///@servicenow/now-list/src/now-list/shared/KeyboardContants.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/behaviors/galleryKeyboardNavbehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/utils/gallerykeyboardNavigationUtils.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/behaviors/galleryKeyboardNavbehavior/galleryKeyboardNavbehavior.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/behaviors/virtualizedGalleryBehavior/constants.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/behaviors/virtualizedGalleryBehavior/virtualizationObserver.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/behaviors/virtualizedGalleryBehavior/virtualizedGalleryBehavior.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/properties.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/actionableMessage/actionableMessage.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/tooltipUtil.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/mobileUtils.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/truncationUtils.js","webpack:///@servicenow/now-list/src/now-list/shared/views/shared/cellIconContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/fieldContentConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/fieldUtil.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/boolean/boolean.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/number/number.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/cellContentConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/cellContentUtils.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/string/string.js","webpack:///@servicenow/now-list/src/now-list/shared/views/timeAgoDisplay/timeAgoDisplay.js","webpack:///@servicenow/now-list/src/now-list/shared/views/timeAgoDisplay/index.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/dateTime/dateTime.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/currency/currency.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/icon/icon.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/link/link.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/url/url.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/choice/choice.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/html/html.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/percentComplete/percentComplete.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/person/person.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/pills/pills.js","webpack:///@servicenow/now-list/src/now-list/shared/views/fields/customComponent/customComponent.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryCardField.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/truncatedTextMore/constants.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/truncatedTextMore/view.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/truncatedTextMore/index.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryCardBody.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryCardHeader.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryCardItem.js","webpack:///@servicenow/now-list/src/now-list/shared/views/groupActions.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryLayouts/galleryCardViewGrouped.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryLayouts/galleryCardViewDefault.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryLayouts/galleryCardViewVirtualized.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryLayouts/groupedViewToggle.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/views/galleryView.js","webpack:///@servicenow/now-list/src/now-list/now-list-gallery/index.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/wrapCellContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/colGroups/colGroups.js","webpack:///@servicenow/now-badge/src/now-badge.js","webpack:///@servicenow/now-list/src/now-list/shared/utils/shadeAlternateRows.js","webpack:///@servicenow/now-list/src/now-list/shared/views/shared/groupBadgeCellContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/shared/groupToggleCellContent.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/groupedRowUtils.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/imageCellType/imageCellType.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/personCellType/personCellType.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/pillsCellType/pillsCellType.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/rowActionsCellType/rowActionsCellType.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/rowDragCellType/rowDragCellType.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/rowSelectionCellType/rowSelectionCellType.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/rowCell/rowCell.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableRow/tableRow.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableBody/tableBody.js","webpack:///@servicenow/now-list/src/now-list/shared/views/actionableMessage/actionableMessage.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableFooters/tableFooter.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableHeaders/columnFilteringToggleButton.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableHeaders/tableHeaderCell/tableHeaderCellConstants.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableHeaders/tableHeaderCell/tableHeaderCell.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/tableHeaders/tableHeader.js","webpack:///@servicenow/now-list/src/now-list/shared/views/table/table.js","webpack:///@servicenow/now-list/src/now-list/index.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/listResult.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/divider.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/bodyNLQ.js","webpack:///@devsnc/sn-search-genius-card-assist/src/actions.js","webpack:///@devsnc/sn-search-genius-card-assist/src/utils.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/bodyMultiTableNLQ.js","webpack:///@devsnc/sn-search-genius-card-assist/src/sections/body.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/sn-search-genius-about-popover.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/feedbackButtonSet.js","webpack:///@devsnc/sn-search-genius-card-assist/src/sections/footer.js","webpack:///@devsnc/sn-search-genius-card-assist/src/common/popover/sn-search-citation-popover-content.js","webpack:///@devsnc/sn-search-genius-card-assist/src/common/popover/citation-popover.js","webpack:///@devsnc/sn-search-genius-card-assist/src/common/streaming/view.js","webpack:///@devsnc/sn-search-genius-card-assist/src/view.js","webpack:///@devsnc/sn-search-genius-card-assist/src/effects.js","webpack:///@devsnc/sn-search-genius-card-assist/src/common/streaming/actions.js","webpack:///@devsnc/sn-search-genius-card-assist/src/common/streaming/processor.js","webpack:///@devsnc/sn-search-genius-card-assist/src/common/streaming/streaming-behavior.js","webpack:///@devsnc/sn-search-genius-card-assist/src/actionHandlers.js","webpack:///@devsnc/sn-search-genius-card-assist/src/common/initialState.js","webpack:///@devsnc/sn-search-genius-card-assist/src/sn-search-genius-card-assist.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/miniFooter.js","webpack:///@devsnc/sn-search-genius-card-assist/src/contents/thumbnail.js","webpack:///@devsnc/sn-search-genius-card-assist/src/sn-search-genius-card-assist-mini/view.js","webpack:///@devsnc/sn-search-genius-card-assist/src/sn-search-genius-card-assist-mini/sn-search-genius-card-assist-mini.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-user-card/utils.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-user-card/view.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-user-card/sn-search-genius-user-card.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-qa-card/utils.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-qa-card/view.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-qa-card/sn-search-genius-qa-card.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-catalog-card/utils.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-catalog-card/view.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-catalog-card/sn-search-genius-catalog-card.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-nlq-card/utils.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-nlq-card/view.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-nlq-card/sn-search-genius-nlq-card.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-synthesized-card/utils.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-synthesized-card/view.js","webpack:///@devsnc/sn-search-genius-cards/src/sn-search-genius-synthesized-card/sn-search-genuis-synthesized-card.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/constants.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/identifier.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/marker.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/utils.js","webpack:///@devsnc/sn-search-result-evam-card/src/actions.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/header.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/description.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/labelValue.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/button.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/attachment.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/attachment_viewer.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/sn-search-attachment-view-popover.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/sections/debug.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/view.js","webpack:///@devsnc/sn-search-result-evam-card/src/sn-search-result-evam-card/index.js","webpack:///@servicenow/now-data-set/src/constants.js","webpack:///@servicenow/now-data-set/src/components/sn-data-set-viewtoggle/view.js","webpack:///@servicenow/now-data-set/src/components/sn-data-set-viewtoggle/index.js","webpack:///@servicenow/now-data-set/src/components/sn-data-set-toolbar/helper.js","webpack:///@servicenow/now-data-set/src/components/sn-data-set-toolbar/view.js","webpack:///@servicenow/now-data-set/src/components/sn-data-set-toolbar/index.js","webpack:///@servicenow/now-data-set/src/components/sn-data-set-view-grid/view.js","webpack:///@servicenow/now-data-set/src/components/sn-data-set-view-grid/index.js","webpack:///@servicenow/now-data-set/src/components/sn-data-set-view-list/view.js","webpack:///@servicenow/now-data-set/src/components/sn-data-set-view-list/index.js","webpack:///@servicenow/now-pagination-control/src/now-pagination-control.js","webpack:///@servicenow/now-pagination-control/src/index.js","webpack:///@devsnc/sn-declarative-actions/src/common/constants.js","webpack:///@devsnc/sn-declarative-actions/src/mediator/dynamicConditionsUtil.js","webpack:///@devsnc/sn-declarative-actions/src/utils/dynamicLoad.js","webpack:///@devsnc/sn-declarative-actions/src/utils/uxMetricsUtils.js","webpack:///@devsnc/sn-declarative-actions/src/mediator/actions.js","webpack:///@devsnc/sn-declarative-actions/src/reference-search/actions.js","webpack:///@servicenow/now-modal/src/now-modal.js","webpack:///@devsnc/sn-declarative-actions/src/modal-wrapper/index.js","webpack:///@devsnc/sn-declarative-actions/src/reference-search/view.js","webpack:///@devsnc/sn-declarative-actions/src/reference-search/index.js","webpack:///@devsnc/sn-declarative-actions/src/behaviors/daWrappedClickedBehavior/index.js","webpack:///@devsnc/sn-declarative-actions/src/common/conditionEvaluator.js","webpack:///@devsnc/sn-declarative-actions/src/utils/uiMetricsUtils.js","webpack:///@devsnc/sn-declarative-actions/src/common/transformActions.js","webpack:///@devsnc/sn-declarative-actions/src/common/contractGenerator.js","webpack:///@devsnc/sn-declarative-actions/src/mediator/confirmation-modal/actions.js","webpack:///@devsnc/sn-declarative-actions/src/mediator/confirmation-modal/view.js","webpack:///@devsnc/sn-declarative-actions/src/mediator/confirmation-modal/index.js","webpack:///@devsnc/sn-declarative-actions/src/mediator/view.js","webpack:///@devsnc/sn-declarative-actions/src/mediator/index.js","webpack:///@devsnc/sn-declarative-actions/src/field/field-renderer/behaviors.js","webpack:///@devsnc/sn-declarative-actions/src/field/field-renderer/utils.js","webpack:///@devsnc/sn-declarative-actions/src/field/field-renderer/actions.js","webpack:///@devsnc/sn-declarative-actions/src/field/field-renderer/view.js","webpack:///@devsnc/sn-declarative-actions/src/field/field-renderer/index.js","webpack:///@devsnc/sn-declarative-actions/src/field/view.js","webpack:///@devsnc/sn-declarative-actions/src/field/index.js","webpack:///@servicenow/now-data-set/src/components/now-data-set/utils.js","webpack:///@devsnc/sn-evam-resolver/26.0.0-webux.2/src/dynamicLoad.js","webpack:///@devsnc/sn-evam-resolver/26.0.0-webux.2/src/evamResolver.js","webpack:///@devsnc/sn-evam-resolver/26.0.0-webux.2/src/evamResolverStatic.js","webpack:///@servicenow/now-data-set/src/components/now-data-set/view.js","webpack:///@servicenow/now-data-set/src/components/now-data-set/actions.js","webpack:///@servicenow/now-data-set/src/components/now-data-set/index.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view/LoadingView.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/actions.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/constants.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/utils/headerUtils.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view/ResultCountDisclaimer.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view/SpellCheckMessage.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view/ResultCountMessage.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/utils/sortDropdownUtils.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view/SortDropdown.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view/Header.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view/NoResultsView.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view/EmptyPageView.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/utils/translationUtils.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/utils/rawResponseUtils.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view/SearchResults.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/view.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/utils/declarativeAction.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/utils/signalTracker.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/utils/analyticsModel.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/effects.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container/index.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container-admin-console/view.js","webpack:///@devsnc/sn-search-results-container/src/sn-search-results-container-admin-console/index.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/constants.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/contents/resultInfo.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/contents/loading-state/skeleton-loader/skeletonLoader.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-topics/constants.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-topics/view.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-topics/actions.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-topics/actionHandlers.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-topics/sn-search-topics.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-gr-carousel/constants.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-gr-carousel/utils.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-constants.js","webpack:///external module \"/uxasset/externals/@servicenow/ui-utils/index.jsdbx\"","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-duplicates.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-common.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-setup.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-resize.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-scroll.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-observers.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-action-handlers.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-initial-state.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-indicators.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-nav.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel-view.js","webpack:///@devsnc/sn-carousel/src/sn-carousel/sn-carousel.js","webpack:///@servicenow/now-carousel-text/src/now-carousel-text.js","webpack:///@servicenow/now-carousel-text/src/index.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/contents/loading-state/geniusResultsLoadingState.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-gr-carousel/view.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/actions.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/utils/transformProps.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/signals/constants.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/signals/signalTracker.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/signals/utils.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/utils/utils.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/effects.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/components/sn-search-gr-carousel/sn-search-gr-carousel.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/view.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/interceptors.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/actionHandlers.js","webpack:///@devsnc/sn-search-top-results/src/sn-search-top-results/sn-search-top-results.js","webpack:///ais-ux-bundle/src/__imaginary__/entry-wrapper.js"],"sourcesContent":["/**\n * Abstracts constructing a Blob object, so it also works in across\n * all modern browsers.\n *\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob\n *\n * @param parts\n * @param properties\n */\nfunction createBlob(parts, properties) {\n\tparts = parts || [];\n\tproperties = properties || {};\n\ttry {\n\t\treturn new Blob(parts, properties);\n\t} catch (e) {\n\t\tif (e.name !== 'TypeError') {\n\t\t\tconsole.error(\"Blob isn't supported! \");\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport default createBlob;\n","/* eslint-disable no-bitwise */\nimport createBlob from './createBlob';\n\n// TODO: move these constants later\n// The best way to save binary data in localStorage is serializing\n// it to Base64, it helps us to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nconst BASE_CHARS =\n\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nconst BLOB_TYPE_PREFIX = '~~nxui_unified_cache_type~';\nconst BLOB_TYPE_PREFIX_REGEX = /^~~nxui_unified_cache_type~([^~]+)~/;\n\nconst SERIALIZED_MARKER = '__nxui_sc__:';\nconst SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// let stack some pile of constants for the serializations!\nconst TYPE_ARRAYBUFFER = 'arbf';\nconst TYPE_BLOB = 'blob';\nconst TYPE_INT8ARRAY = 'si08';\nconst TYPE_UINT8ARRAY = 'ui08';\nconst TYPE_UINT8CLAMPEDARRAY = 'uic8';\nconst TYPE_INT16ARRAY = 'si16';\nconst TYPE_INT32ARRAY = 'si32';\nconst TYPE_UINT16ARRAY = 'ur16';\nconst TYPE_UINT32ARRAY = 'ui32';\nconst TYPE_FLOAT32ARRAY = 'fl32';\nconst TYPE_FLOAT64ARRAY = 'fl64';\nconst TYPE_SERIALIZED_MARKER_LENGTH =\n\tSERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nconst toString = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n\t// Fill the string into a ArrayBuffer.\n\tlet bufferLength = serializedString.length * 0.75;\n\tconst len = serializedString.length;\n\tlet p = 0;\n\tlet encoded1, encoded2, encoded3, encoded4;\n\n\tif (serializedString[serializedString.length - 1] === '=') {\n\t\tbufferLength--;\n\t\tif (serializedString[serializedString.length - 2] === '=') {\n\t\t\tbufferLength--;\n\t\t}\n\t}\n\n\tconst buffer = new ArrayBuffer(bufferLength);\n\tconst bytes = new Uint8Array(buffer);\n\n\tfor (let i = 0; i < len; i += 4) {\n\t\tencoded1 = BASE_CHARS.indexOf(serializedString[i]);\n\t\tencoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n\t\tencoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n\t\tencoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n\t\t/*jslint bitwise: true */\n\t\tbytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n\t\tbytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n\t\tbytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n\t}\n\treturn buffer;\n}\n\n// Converts a buffer to a string to browser storage,\n// serialized, in the unifiedCache library.\nfunction bufferToString(buffer) {\n\t// base64-arraybuffer\n\tconst bytes = new Uint8Array(buffer);\n\tlet base64String = '';\n\n\tfor (let i = 0; i < bytes.length; i += 3) {\n\t\tbase64String += BASE_CHARS[bytes[i] >> 2];\n\t\tbase64String += BASE_CHARS[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n\t\tbase64String +=\n\t\t\tBASE_CHARS[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n\t\tbase64String += BASE_CHARS[bytes[i + 2] & 63];\n\t}\n\n\tif (bytes.length % 3 === 2) {\n\t\tbase64String = base64String.substring(0, base64String.length - 1) + '=';\n\t} else if (bytes.length % 3 === 1) {\n\t\tbase64String = base64String.substring(0, base64String.length - 2) + '==';\n\t}\n\n\treturn base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we will be able to store binary data with localStorage.\n// TODO add more robust code to serialize all JS Object Types\nfunction serialize(value, callback) {\n\tlet valueType = '';\n\tif (value) {\n\t\tvalueType = toString.call(value);\n\t}\n\n\t// Cannot use `value instanceof ArrayBuffer` or such here, as these\n\t// checks fail when running the tests\n\tif (\n\t\tvalue &&\n\t\t(valueType === '[object ArrayBuffer]' ||\n\t\t\t(value.buffer && toString.call(value.buffer) === '[object ArrayBuffer]'))\n\t) {\n\t\t// Convert binary arrays to a string and prefix the string with\n\t\t// a special marker.\n\t\tlet buffer;\n\t\tlet marker = SERIALIZED_MARKER;\n\n\t\tif (value instanceof ArrayBuffer) {\n\t\t\tbuffer = value;\n\t\t\tmarker += TYPE_ARRAYBUFFER;\n\t\t} else {\n\t\t\tbuffer = value.buffer;\n\n\t\t\tif (valueType === '[object Int8Array]') {\n\t\t\t\tmarker += TYPE_INT8ARRAY;\n\t\t\t} else if (valueType === '[object Uint8Array]') {\n\t\t\t\tmarker += TYPE_UINT8ARRAY;\n\t\t\t} else if (valueType === '[object Uint8ClampedArray]') {\n\t\t\t\tmarker += TYPE_UINT8CLAMPEDARRAY;\n\t\t\t} else if (valueType === '[object Int16Array]') {\n\t\t\t\tmarker += TYPE_INT16ARRAY;\n\t\t\t} else if (valueType === '[object Uint16Array]') {\n\t\t\t\tmarker += TYPE_UINT16ARRAY;\n\t\t\t} else if (valueType === '[object Int32Array]') {\n\t\t\t\tmarker += TYPE_INT32ARRAY;\n\t\t\t} else if (valueType === '[object Uint32Array]') {\n\t\t\t\tmarker += TYPE_UINT32ARRAY;\n\t\t\t} else if (valueType === '[object Float32Array]') {\n\t\t\t\tmarker += TYPE_FLOAT32ARRAY;\n\t\t\t} else if (valueType === '[object Float64Array]') {\n\t\t\t\tmarker += TYPE_FLOAT64ARRAY;\n\t\t\t} else {\n\t\t\t\tcallback(new Error('Failed to get type for BinaryArray'));\n\t\t\t}\n\t\t}\n\n\t\tcallback(marker + bufferToString(buffer));\n\t} else if (valueType === '[object Blob]') {\n\t\t// Convert the blob to a binaryArray and then to a string.\n\t\tconst fileReader = new FileReader();\n\n\t\tfileReader.onload = function() {\n\t\t\t// Backwards-compatible prefix for the blob type.\n\t\t\tconst str =\n\t\t\t\tBLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n\t\t\tcallback(SERIALIZED_MARKER + TYPE_BLOB + str);\n\t\t};\n\n\t\tfileReader.readAsArrayBuffer(value);\n\t} else {\n\t\ttry {\n\t\t\tcallback(JSON.stringify(value));\n\t\t} catch (e) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\"Couldn't convert value into a JSON string: \", value);\n\n\t\t\tcallback(null, e);\n\t\t}\n\t}\n}\n\n//\n/**\n * Deserialize data that we've inserted into a value column/field.We place\n * special markers into our strings to mark them as encoded; treat it as a\n * meta field, but it's the only to keep localStorage support intact.\n *\n * Oftentimes this will just deserialize JSON content, but if we have a\n * special marker (SERIALIZED_MARKER, defined above), we will extract\n * some kind of arraybuffer/binary data/typed array out of the string.\n *\n * @param value\n * @returns {Float32Array|Uint8Array|Int8Array|Float64Array|Int32Array|module:buffer.Blob|Blob|Int16Array|Uint16Array|*|Uint32Array|Uint8ClampedArray}\n */\nfunction deserialize(value) {\n\t// haven't marked this string as being specially serialized\n\t// (i.e. something other than serialized JSON), we can just return it\n\tif (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n\t\treturn JSON.parse(value);\n\t}\n\n\t// below code deals with deserializing some kind of Blob or TypedArray.\n\t// First, we separate out the type of data we're dealing with from\n\t// the data itself.\n\tlet serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n\tconst type = value.substring(\n\t\tSERIALIZED_MARKER_LENGTH,\n\t\tTYPE_SERIALIZED_MARKER_LENGTH\n\t);\n\n\tlet blobType;\n\t// Blob type serialization strategy\n\tif (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n\t\tconst matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n\t\tblobType = matcher[1];\n\t\tserializedString = serializedString.substring(matcher[0].length);\n\t}\n\tconst buffer = stringToBuffer(serializedString);\n\n\t// Return the right type based on the code/type set during\n\t// serialization.\n\tswitch (type) {\n\t\tcase TYPE_ARRAYBUFFER:\n\t\t\treturn buffer;\n\t\tcase TYPE_BLOB:\n\t\t\treturn createBlob([buffer], {type: blobType});\n\t\tcase TYPE_INT8ARRAY:\n\t\t\treturn new Int8Array(buffer);\n\t\tcase TYPE_UINT8ARRAY:\n\t\t\treturn new Uint8Array(buffer);\n\t\tcase TYPE_UINT8CLAMPEDARRAY:\n\t\t\treturn new Uint8ClampedArray(buffer);\n\t\tcase TYPE_INT16ARRAY:\n\t\t\treturn new Int16Array(buffer);\n\t\tcase TYPE_UINT16ARRAY:\n\t\t\treturn new Uint16Array(buffer);\n\t\tcase TYPE_INT32ARRAY:\n\t\t\treturn new Int32Array(buffer);\n\t\tcase TYPE_UINT32ARRAY:\n\t\t\treturn new Uint32Array(buffer);\n\t\tcase TYPE_FLOAT32ARRAY:\n\t\t\treturn new Float32Array(buffer);\n\t\tcase TYPE_FLOAT64ARRAY:\n\t\t\treturn new Float64Array(buffer);\n\t\tdefault:\n\t\t\tthrow new Error('Unknown type: ' + type);\n\t}\n}\n\nconst serializer = {\n\tserialize,\n\tdeserialize,\n\tstringToBuffer: stringToBuffer,\n\tbufferToString: bufferToString\n};\n\nexport default serializer;\n","export default function normalizeKey(key) {\n\t// Cast the key to a string, as that's all we can set as a key.\n\tif (typeof key !== 'string') {\n\t\tconsole.warn(`${key} used as a key, but it is not a string.`);\n\t\tkey = String(key);\n\t}\n\n\treturn key;\n}\n","// detects whether web storage is both supported and available\nexport function isWebStorageValid(type) {\n\tlet storage;\n\ttry {\n\t\tstorage = window[type];\n\t\treturn (\n\t\t\ttypeof storage !== 'undefined' &&\n\t\t\t'setItem' in storage &&\n\t\t\t!!storage.setItem\n\t\t);\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\nexport default isWebStorageValid;\n","function runCallback(promise, callback) {\n\tif (callback) {\n\t\tpromise.then(\n\t\t\tfunction(result) {\n\t\t\t\tcallback(null, result);\n\t\t\t},\n\t\t\tfunction(error) {\n\t\t\t\tcallback(error);\n\t\t\t}\n\t\t);\n\t}\n}\n\nexport default runCallback;\n","export default function getCallback() {\n\tif (\n\t\targuments.length &&\n\t\ttypeof arguments[arguments.length - 1] === 'function'\n\t) {\n\t\treturn arguments[arguments.length - 1];\n\t}\n}\n","/**\n *\n * @constant {{SESSIONSTORAGE: Storage, LOCALSTORAGE: Storage}}\n */\nexport const STORAGE = {\n\tLOCALSTORAGE: window.localStorage,\n\tSESSIONSTORAGE: window.sessionStorage,\n\tCACHE_API: window.caches,\n\tINDEXEDDB: window.indexedDB\n};\n\nconst DEFAULT_TTL = 300000;\nlet ttl = DEFAULT_TTL;\n\nexport const KEY_DELIMITER = '__';\n\nexport const NXUI_UNIFIED_CACHE = 'nxui__unified_cache';\n\nexport const CACHE_VERSION = 'version';\n\nexport const STORAGE_KEYPREFIX = `${KEY_DELIMITER}${NXUI_UNIFIED_CACHE}${KEY_DELIMITER}`;\n\nexport const VERSION_KEY = `${STORAGE_KEYPREFIX}${CACHE_VERSION}`;\n\nexport function getTTL() {\n\treturn ttl;\n}\n\nexport function setTTL(newTtl = DEFAULT_TTL) {\n\tttl = newTtl;\n}\n\nexport const TTL_EXPIRED_ITEM_KEYWORD = '__uc__ttl_expired_item';\n","import {VERSION_KEY} from '../utils/constants';\n\n/**\n * Returns the current value associated with the given key, or null if the given key does not exist.\n * @param {string} key\n * @returns {string|null}\n */\nfunction getItem(key) {\n\tlet result = this.adapter.getItem(key);\n\tif (result == null) return null;\n\n\tresult = JSON.parse(result);\n\tresult.lastUsedTime = Date.now();\n\tthis.adapter.setItem(key, JSON.stringify(result));\n\n\treturn result.value;\n}\n\nfunction isLRUItem(result) {\n\treturn (\n\t\tObject.prototype.hasOwnProperty.call(result, 'value') &&\n\t\tObject.prototype.hasOwnProperty.call(result, 'instancePrefix') &&\n\t\tObject.prototype.hasOwnProperty.call(result, 'lastUsedTime')\n\t);\n}\n\nfunction removeItemsByInstance(adapter, instancePrefix) {\n\tif (instancePrefix === null) return;\n\n\tlet keys = [];\n\tfor (let i = 0; i < adapter.length; i++) {\n\t\tconst itemKey = adapter.key(i);\n\t\tif (itemKey.startsWith(instancePrefix)) {\n\t\t\tkeys.push(itemKey);\n\t\t}\n\t}\n\n\tfor (const key of keys) {\n\t\tadapter.removeItem(key);\n\t}\n}\n\nfunction createInstanceAccessMap(adapter, instancePrefix) {\n\t// Create a hash map instanceAccessMap to track the last used time of each instance except the instance of the current inserting item.\n\t// Each instance is identified by its instance prefix, i.e., key prefix.\n\tlet instanceAccessMap = new Map();\n\tfor (let i = 0; i < adapter.length; i++) {\n\t\tconst itemKey = adapter.key(i);\n\t\tif (itemKey === VERSION_KEY) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet result = adapter.getItem(itemKey);\n\t\tresult = JSON.parse(result);\n\n\t\tif (!isLRUItem(result)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// The instance of the current inserting item is considered as the most recently used instance\n\t\tif (result.instancePrefix === instancePrefix) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!instanceAccessMap.has(result.instancePrefix)) {\n\t\t\tinstanceAccessMap.set(result.instancePrefix, 0);\n\t\t}\n\n\t\tif (result.lastUsedTime > instanceAccessMap.get(result.instancePrefix)) {\n\t\t\tinstanceAccessMap.set(result.instancePrefix, result.lastUsedTime);\n\t\t}\n\t}\n\n\treturn instanceAccessMap;\n}\n\n/**\n * Wrap the value with a last used timestamp, a key prefix which identifies the instance that inserts the current item, and then sets the value of the pair \n * identified by key to value, creating a new key/value pair if none existed for key previously.\n *\n * If the new value couldn't be set due to a \"QuotaExceededError\" DOMException exception, remove all key/value pairs\n * from the least recently used instance, and then from the next least recently used instance until either the new value is set or no other LRU instance left.\n *\n * Throws a \"QuotaExceededError\" DOMException exception if the new value still couldn't be set.\n *\n * @param {string} keyPrefix \n * @param {string} key\n * @param {string} value\n\n */\nfunction setItem(keyPrefix, key, value) {\n\tconst data = {\n\t\tvalue: value,\n\t\tinstancePrefix: keyPrefix,\n\t\tlastUsedTime: Date.now()\n\t};\n\n\ttry {\n\t\tthis.adapter.setItem(keyPrefix + key, JSON.stringify(data));\n\t} catch (e) {\n\t\tif (e.name === 'QuotaExceededError') {\n\t\t\tlet instanceAccessMap = createInstanceAccessMap(this.adapter, keyPrefix);\n\n\t\t\t// if there is no other LRU instances, we should not evict any LRU items\n\t\t\tif (instanceAccessMap.size === 0) {\n\t\t\t\tthrow e;\n\t\t\t}\n\n\t\t\tlet instanceAccessArray = [];\n\t\t\tfor (const instancePrefix of instanceAccessMap.keys()) {\n\t\t\t\tinstanceAccessArray.push({\n\t\t\t\t\tinstancePrefix: instancePrefix,\n\t\t\t\t\tlastUsedTime: instanceAccessMap.get(instancePrefix)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet sorted = instanceAccessArray.sort(function(a, b) {\n\t\t\t\treturn a.lastUsedTime - b.lastUsedTime;\n\t\t\t});\n\n\t\t\tlet i = 0;\n\t\t\twhile (i < sorted.length) {\n\t\t\t\tremoveItemsByInstance(this.adapter, sorted[i].instancePrefix);\n\t\t\t\ti++;\n\t\t\t\ttry {\n\t\t\t\t\tthis.adapter.setItem(keyPrefix + key, JSON.stringify(data));\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e.name === 'QuotaExceededError' && i < sorted.length) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport default function(adapter) {\n\tconst lru = {\n\t\tadapter: adapter,\n\t\tgetItem: getItem,\n\t\tsetItem: setItem\n\t};\n\n\treturn lru;\n}\n","import {\n\tTTL_EXPIRED_ITEM_KEYWORD,\n\tVERSION_KEY,\n\tgetTTL\n} from '../utils/constants';\n\n/**\n * Returns the current value associated with the given key,\n * null if the given key does not exist,\n * or the 'TTL_EXPIRED_ITEM_KEYWORD' if the entry has already expired.\n *\n * @param {object} adapter\n * @param {string} key\n * @returns {string|null}\n */\nfunction getItem(adapter, key) {\n\tlet originalResult = adapter.getItem(key);\n\tif (originalResult == null) return null;\n\n\tlet result = JSON.parse(originalResult);\n\tif (\n\t\tObject.prototype.hasOwnProperty.call(result, 'value') &&\n\t\tObject.prototype.hasOwnProperty.call(result, 'expiry')\n\t) {\n\t\tvar now = Date.now();\n\t\tif (now > result.expiry) {\n\t\t\tadapter.removeItem(key);\n\t\t\treturn `\"${TTL_EXPIRED_ITEM_KEYWORD}\"`;\n\t\t}\n\t\treturn result.value;\n\t}\n\n\treturn originalResult;\n}\n\n/**\n * Wrap the value with an expiration timestamp, and then sets the value of the pair identified by key to value, creating a new\n * key/value pair if none existed for key previously.\n *\n * If the new value couldn't be set due to a \"QuotaExceededError\" DOMException exception, remove all expired key/value pairs\n * and set the new value again.\n *\n * Throws a \"QuotaExceededError\" DOMException exception if the new value still couldn't be set.\n *\n * @param {object} adapter\n * @param {string} key\n * @param {string} value\n * @param {number} time to live in milliseconds\n */\nfunction setItem(adapter, key, value, ttl = getTTL()) {\n\tfunction getKeysWithTTL() {\n\t\tconst length = adapter.length;\n\t\tlet keys = [];\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst itemKey = adapter.key(i);\n\t\t\tif (itemKey === VERSION_KEY) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet result = adapter.getItem(itemKey);\n\t\t\tresult = JSON.parse(result);\n\t\t\tif (\n\t\t\t\tObject.prototype.hasOwnProperty.call(result, 'value') &&\n\t\t\t\tObject.prototype.hasOwnProperty.call(result, 'expiry')\n\t\t\t) {\n\t\t\t\tkeys.push(itemKey);\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t}\n\n\tconst data = {\n\t\tvalue: value,\n\t\texpiry: Date.now() + ttl\n\t};\n\n\ttry {\n\t\tadapter.setItem(key, JSON.stringify(data));\n\t} catch (e) {\n\t\tif (e.name === 'QuotaExceededError') {\n\t\t\tlet keys = getKeysWithTTL();\n\t\t\tfor (const itemKey of keys) {\n\t\t\t\t//itemKey will be removed if it is expired\n\t\t\t\tgetItem(adapter, itemKey);\n\t\t\t}\n\n\t\t\tadapter.setItem(key, JSON.stringify(data));\n\t\t} else {\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nconst ttl = {\n\tgetItem: getItem,\n\tsetItem: setItem\n};\n\nexport default ttl;\n","import lru from './lru';\nimport ttl from './ttl';\n\n/**\n * Based on eviction policy of the merged adapter configuration, invoking the corresponding getItem(). No eviction policy is applied by default.\n * @param {string} adapter\n * @param {Object} config\n * @param {string} key\n * @returns {string|null}\n */\nfunction getItem(adapter, config, key) {\n\tconst evictionPolicy = config.evictionPolicy;\n\tlet result;\n\tswitch (evictionPolicy) {\n\t\tcase 'TTL':\n\t\t\tresult = ttl.getItem(adapter, key);\n\t\t\tbreak;\n\t\tcase 'LRU':\n\t\t\tresult = lru(adapter).getItem(key);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t//No eviction policy is applied by default.\n\t\t\tresult = adapter.getItem(key);\n\t}\n\treturn result;\n}\n\n/**\n * Based on eviction policy of the merged adapter configuration, invoking the corresponding setItem(). No eviction policy is applied by default.\n *\n * @param {string} adapter\n * @param {Object} config\n * @param {string} keyPrefix\n * @param {string} key\n * @param {string} value\n */\nfunction setItem(adapter, config, keyPrefix, key, value) {\n\tconst evictionPolicy = config.evictionPolicy;\n\tswitch (evictionPolicy) {\n\t\tcase 'TTL':\n\t\t\tttl.setItem(adapter, keyPrefix + key, value);\n\t\t\tbreak;\n\t\tcase 'LRU':\n\t\t\tlru(adapter).setItem(keyPrefix, key, value);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t//No eviction policy is applied by default.\n\t\t\tadapter.setItem(keyPrefix + key, value);\n\t}\n}\n\nconst evictionPolicies = {\n\tgetItem: getItem,\n\tsetItem: setItem\n};\n\nexport default evictionPolicies;\n","import {KEY_DELIMITER, NXUI_UNIFIED_CACHE} from './constants';\n\n/**\n * builds the key prefix and returns it.\n * @param {object} options - configuration\n * @param {object} defaultConfig - default configuration\n * @returns {string} key prefix\n * @private\n */\nfunction getKeyPrefix(options, defaultConfig) {\n\t// keyPrefix string __nxui__unified_cache__keyvaluepairs__\n\tlet keyPrefix = `${KEY_DELIMITER}${NXUI_UNIFIED_CACHE}${KEY_DELIMITER}${options.name}${KEY_DELIMITER}`;\n\n\t// when configuration's storeName is different than the\n\t// default configuration's storeName prepend the keyPrefix\n\t// to build the generated keyPrefix\n\tif (options.storeName !== defaultConfig.storeName) {\n\t\tkeyPrefix += `${options.storeName}${KEY_DELIMITER}`;\n\t}\n\n\treturn keyPrefix;\n}\n\nexport default getKeyPrefix;\n","import serializer from '../utils/serializer';\nimport normalizeKey from '../utils/normalizeKey';\nimport isWebStorageValid from '../utils/isWebStorageValid';\nimport runCallback from '../utils/runCallback';\nimport getCallback from '../utils/getCallback';\nimport {STORAGE, STORAGE_KEYPREFIX, VERSION_KEY} from '../utils/constants';\nimport evictionPolicies from '../evictions/evictionPolicies';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\n/**\n * @constant {Storage} LOCALSTORAGE - window object's localStorage property\n */\nconst {LOCALSTORAGE} = STORAGE;\n\n/**\n * Check if localStorage throws when saving an item\n * @param {string} type\n * @returns {boolean} true if localStorage is successfully able to set value, otherwise false\n */\nfunction checkIfWebStorageThrows(type) {\n\tconst storage = window[type];\n\tconst localStorageTestKey = '_UnifiedCache_Support_Test';\n\n\ttry {\n\t\tstorage.setItem(localStorageTestKey, true);\n\t\tstorage.removeItem(localStorageTestKey);\n\n\t\treturn false;\n\t} catch (e) {\n\t\treturn true;\n\t}\n}\n\n/**\n * Checks if localStorage is usable and allows to save an item.\n *\n * It covers the use cases like:\n *   - safari private browsing mode\n *   - the available quota for localStorage is 0 and there wasn't any saved items yet\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n *\n * @returns {boolean}\n * @private\n */\nfunction _isLocalStorageUsable() {\n\treturn !checkIfWebStorageThrows('localStorage') || LOCALSTORAGE.length > 0;\n}\n\n// Config the localStorage, using options set in the config.\nfunction _initStorage(options) {\n\tconst self = this;\n\tconst dbInfo = {};\n\tif (options) {\n\t\tfor (const i in options) {\n\t\t\tdbInfo[i] = options[i];\n\t\t}\n\t}\n\n\tdbInfo.keyPrefix = getKeyPrefix(options, self._defaultConfig);\n\n\tif (!_isLocalStorageUsable()) {\n\t\treturn Promise.reject();\n\t}\n\n\tself._dbInfo = dbInfo;\n\tdbInfo.serializer = serializer;\n\n\treturn Promise.resolve();\n}\n\nfunction _clear(dbInfo) {\n\tconst {keyPrefix} = dbInfo;\n\tconst storage = LOCALSTORAGE;\n\tfor (let i = storage.length - 1; i >= 0; i--) {\n\t\tconst key = storage.key(i);\n\n\t\tif (key.indexOf(keyPrefix) === 0) {\n\t\t\tstorage.removeItem(key);\n\t\t}\n\t}\n}\n\n/**\n * Remove all keys from the localStorage, effectively destroying\n * all data in the app's key/value\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction clear(callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\t_clear(self._dbInfo);\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Retrieve an item from the localStorage. Unlike the default indexedDB,\n * we don't modify return values at all. If a key's value\n * is `undefined`, we pass that value to the Promise.\n * @param {string} key\n * @param {function} callback\n * @returns {Promise<*>} promise for the value stored\n */\nfunction getItem(key, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tlet result = evictionPolicies.getItem(\n\t\t\tLOCALSTORAGE,\n\t\t\tself._config,\n\t\t\tdbInfo.keyPrefix + normalizeKey(key)\n\t\t);\n\n\t\t// If a result was found, parse it from the serialized\n\t\t// string into a JS object. If result isn't truthy, the key\n\t\t// is likely undefined and we'll pass it straight to the promise.\n\t\tif (result) {\n\t\t\tresult = dbInfo.serializer.deserialize(result);\n\t\t}\n\n\t\treturn result;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Set a key's value in localStorage.\n *\n * callback support to address use cases like:\n *   - user want to operate on that value only after\n *   they're sure about value is set to the localStorage\n *   e.g. save, or something like that on the current form page\n *\n * @param {string} key\n * @param {*} value\n * @param {function} callback\n * @returns {*}\n */\nfunction setItem(key, value, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\t// TODO how should we handle undefined value\n\t\t//  - save null for undefined value??\n\n\t\t// Save the original value to pass to the callback.\n\t\tconst originalValue = value;\n\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst dbInfo = self._dbInfo;\n\t\t\tdbInfo.serializer.serialize(value, function(value, error) {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tevictionPolicies.setItem(\n\t\t\t\t\t\t\tLOCALSTORAGE,\n\t\t\t\t\t\t\tself._config,\n\t\t\t\t\t\t\tdbInfo.keyPrefix,\n\t\t\t\t\t\t\tnormalizeKey(key),\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(originalValue);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// window.localStorage capacity exceeded.\n\t\t\t\t\t\t// TODO: Make this a specific error or\n\t\t\t\t\t\t//  a public event for page author to hook handlers on the page\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\te.name === 'QuotaExceededError' ||\n\t\t\t\t\t\t\te.name === 'NS_ERROR_DOM_QUOTA_REACHED'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treject(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * when passed a number n, returns the name of the nth key\n * in a given localStorage object.\n * @param {number} n\n * @param {function} callback\n * @returns {Promise<*>} promise for a string containing the name of the key.\n * If the index does not exist, null is returned.\n */\nfunction key(n, callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = LOCALSTORAGE.key(n);\n\t\t} catch (error) {\n\t\t\tresult = null;\n\t\t}\n\n\t\t// remove the prefix from the key, if a key is found.\n\t\tif (result) {\n\t\t\tresult = result.substring(dbInfo.keyPrefix.length);\n\t\t}\n\n\t\treturn result;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * gets the list of keys in localStorage.\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction keys(callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tconst length = LOCALSTORAGE.length;\n\t\tlet keys = [];\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst itemKey = LOCALSTORAGE.key(i);\n\t\t\tif (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n\t\t\t\tkeys.push(itemKey.substring(dbInfo.keyPrefix.length));\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * supply the number of keys in the localStorage\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction length(callback) {\n\tconst self = this;\n\tconst promise = self.keys().then(function(keys) {\n\t\treturn keys.length;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Remove an item from the localStorage.\n * @param {string} key\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction removeItem(key, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tLOCALSTORAGE.removeItem(dbInfo.keyPrefix + normalizeKey(key));\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Iterate over all items in the localStorage.\n * @param {function} iterator callback\n * @param {function} success callback\n * @returns {Promise<*>}\n */\nfunction iterate(iterator, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tconst keyPrefix = dbInfo.keyPrefix;\n\t\tconst keyPrefixLength = keyPrefix.length;\n\t\tconst length = LOCALSTORAGE.length;\n\n\t\t// use a dedicated iterator instead of the `i` variable below\n\t\t// so other keys we fetch in localStorage aren't counted in\n\t\t// the `iterationNumber` argument passed to the `iterate()`\n\t\tlet iterationNumber = 1;\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst key = LOCALSTORAGE.key(i);\n\t\t\tif (key.indexOf(keyPrefix) !== 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet value = LOCALSTORAGE.getItem(key);\n\n\t\t\t// If a result was found, parse it from the serialized\n\t\t\t// string into a JS object. If result isn't truthy, the\n\t\t\t// key is likely undefined and we'll pass it straight\n\t\t\t// to the iterator.\n\t\t\tif (value) {\n\t\t\t\tvalue = dbInfo.serializer.deserialize(value);\n\t\t\t}\n\n\t\t\tvalue = iterator(\n\t\t\t\tvalue,\n\t\t\t\tkey.substring(keyPrefixLength),\n\t\t\t\titerationNumber++\n\t\t\t);\n\n\t\t\tif (value !== void 0) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * drops the localStorage instance\n * @param {object} options\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction dropInstance(options, callback) {\n\tcallback = getCallback.apply(this, arguments);\n\toptions = (typeof options !== 'function' && options) || {};\n\tif (!options.name) {\n\t\tconst currentConfig = this.config();\n\t\toptions.name = options.name || currentConfig.name;\n\t\toptions.storeName = options.storeName || currentConfig.storeName;\n\t}\n\n\tconst self = this;\n\tlet promise;\n\tif (!options.name) {\n\t\tpromise = Promise.reject('Invalid arguments');\n\t} else {\n\t\tpromise = new Promise(function(resolve) {\n\t\t\tif (!options.storeName) {\n\t\t\t\tresolve(`${options.name}__`);\n\t\t\t} else {\n\t\t\t\tresolve(getKeyPrefix(options, self._defaultConfig));\n\t\t\t}\n\t\t}).then(function(keyPrefix) {\n\t\t\tfor (let i = LOCALSTORAGE.length - 1; i >= 0; i--) {\n\t\t\t\tconst key = LOCALSTORAGE.key(i);\n\n\t\t\t\tif (key.indexOf(keyPrefix) === 0) {\n\t\t\t\t\tLOCALSTORAGE.removeItem(key);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\nfunction _clearAllInstances() {\n\tfor (let i = LOCALSTORAGE.length - 1; i >= 0; i--) {\n\t\tconst key = LOCALSTORAGE.key(i);\n\t\tconsole.debug(`Clearing LocalStorage ${key}`);\n\n\t\tif (key.indexOf(STORAGE_KEYPREFIX) === 0) {\n\t\t\tLOCALSTORAGE.removeItem(key);\n\t\t}\n\n\t\tconsole.debug(`Cleared LocalStorage ${key}`);\n\t}\n}\n\nexport function getCacheVersion() {\n\treturn LOCALSTORAGE.getItem(VERSION_KEY);\n}\n\nexport function setCacheVersion(version) {\n\treturn LOCALSTORAGE.setItem(VERSION_KEY, version);\n}\n\nconst localStorage = {\n\t_adapter: 'localStorage',\n\t_initStorage: _initStorage,\n\t_support: isWebStorageValid('localStorage'),\n\t_clearAllInstances: _clearAllInstances,\n\titerate: iterate,\n\tgetItem: getItem,\n\tsetItem: setItem,\n\tremoveItem: removeItem,\n\tclear: clear,\n\tlength: length,\n\tkey: key,\n\tkeys: keys,\n\tdropInstance: dropInstance\n};\n\nexport default localStorage;\n","import {STORAGE_KEYPREFIX, STORAGE} from '../utils/constants';\n\nconst READ_ONLY = 'readonly';\nconst READ_WRITE = 'readwrite';\n\nconst {INDEXEDDB} = STORAGE;\n\nfunction initStorage() {\n\tconst self = this;\n\tif (!INDEXEDDB) {\n\t\treturn Promise.reject('IndexedDB not supported.');\n\t}\n\n\treturn _connectToDB(`${STORAGE_KEYPREFIX}${self.name}`).then(\n\t\t(db) => (self.db = db)\n\t);\n}\n\nfunction _connectToDB(database) {\n\ttry {\n\t\tconst openRequest = INDEXEDDB.open(database, 1);\n\t\topenRequest.onupgradeneeded = () =>\n\t\t\topenRequest.result.createObjectStore(STORAGE_KEYPREFIX);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\topenRequest.onsuccess = (event) => {\n\t\t\t\tresolve(event.target.result);\n\t\t\t};\n\n\t\t\topenRequest.onerror = (event) => reject(event.target.error);\n\t\t});\n\t} catch (indexedDBError) {\n\t\treturn Promise.reject(indexedDBError);\n\t}\n}\n\nfunction getObjectStore(indexedDBCache, mode = READ_ONLY) {\n\tconst transaction = indexedDBCache.db.transaction(STORAGE_KEYPREFIX, mode);\n\treturn transaction.objectStore(STORAGE_KEYPREFIX);\n}\n\nfunction processError(indexedDBRequestError) {\n\tconst error = {\n\t\tretryable: true,\n\t\tindexedDBErrorName: indexedDBRequestError.name,\n\t\tindexedDBErrorMessage: indexedDBRequestError.message\n\t};\n\n\t//TODO: Extract error codes so they can be reused if needed.\n\tswitch (indexedDBRequestError.name) {\n\t\tcase 'AbortError':\n\t\t\terror.name = 'ABORT';\n\t\t\terror.message = 'Transaction aborted.';\n\t\t\tbreak;\n\t\tcase 'ConstraintError':\n\t\t\terror.name = 'INDEX_ERROR';\n\t\t\terror.message = 'Index constraint violation.';\n\t\t\terror.retryable = false;\n\t\t\tbreak;\n\t\tcase 'QuotaExceededError':\n\t\t\terror.name = 'DISK_FULL';\n\t\t\terror.message = 'IndexedDB is full.';\n\t\t\tbreak;\n\t\tcase 'VersionError':\n\t\tcase 'InvalidStateError':\n\t\tcase 'NotFoundError':\n\t\t\terror.name = 'INVALID_DB';\n\t\t\terror.message = 'Database in an inconsistent state.';\n\t\t\terror.retryable = false;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\terror.name = 'UNKNOWN';\n\t\t\terror.message = 'Unknown IndexedDB error';\n\t\t\tbreak;\n\t}\n\n\treturn error;\n}\n\nfunction makeRequest(indexedDBCache, request, mode = READ_ONLY) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst objectStore = getObjectStore(indexedDBCache, mode);\n\t\tconst indexedDBRequest = request(objectStore);\n\t\tindexedDBRequest.onsuccess = (event) => resolve(event.target.result);\n\t\tindexedDBRequest.onerror = (event) => reject(event.target.error);\n\t}).catch((error) => {\n\t\tthrow processError(error);\n\t});\n}\n\nfunction getItem(key) {\n\treturn makeRequest(this, (objectStore) => objectStore.get(key));\n}\n\nfunction setItem(key, value) {\n\treturn makeRequest(\n\t\tthis,\n\t\t(objectStore) => objectStore.put(value, key),\n\t\tREAD_WRITE\n\t);\n}\n\nfunction removeItem(key) {\n\treturn makeRequest(\n\t\tthis,\n\t\t(objectStore) => objectStore.delete(key),\n\t\tREAD_WRITE\n\t);\n}\n\nfunction clear() {\n\treturn makeRequest(this, (objectStore) => objectStore.clear(), READ_WRITE);\n}\n\nfunction length() {\n\treturn makeRequest(this, (objectStore) => objectStore.count());\n}\n\nfunction keys() {\n\treturn makeRequest(this, (objectStore) => objectStore.getAllKeys());\n}\n\nfunction key(index) {\n\treturn this.keys().then((keys) => keys[index - 1]);\n}\n\nfunction iterate(iteratorCallback) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst objectStore = getObjectStore(this);\n\n\t\tlet i = 1;\n\t\tconst cursorRequest = objectStore.openCursor();\n\t\tcursorRequest.onsuccess = (event) => {\n\t\t\tconst cursor = event.target.result;\n\t\t\tif (cursor) {\n\t\t\t\titeratorCallback(cursor.key, cursor.value, i++);\n\t\t\t\tcursor.continue();\n\t\t\t} else {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t};\n\t\tcursorRequest.onerror = (event) => reject(event.target.error);\n\t}).catch((error) => {\n\t\tthrow processError(error);\n\t});\n}\n\n/**\n * Given a DB connection, start a new transaction and clear the cache.\n */\nfunction _clearDB(db) {\n\treturn new Promise((resolve, reject) => {\n\t\tconsole.debug(`Clearing IndexedDB ${db.name}`);\n\t\tconst transaction = db.transaction(STORAGE_KEYPREFIX, READ_WRITE);\n\t\tconst objectStore = transaction.objectStore(STORAGE_KEYPREFIX);\n\t\tconst clearRequest = objectStore.clear();\n\n\t\tclearRequest.onsuccess = () => {\n\t\t\tconsole.debug(`Cleared IndexedDB ${db.name}`);\n\t\t\tresolve();\n\t\t};\n\n\t\tclearRequest.onerror = (event) => {\n\t\t\tconsole.debug(`Error clearing IndexedDB ${db.name}`);\n\t\t\treject(event.target.error);\n\t\t};\n\t});\n}\n\nexport function _clearAllInstances() {\n\treturn indexedDB.databases().then((databases) => {\n\t\tconst clearPromises = [];\n\t\tfor (let i = databases.length - 1; i >= 0; i--) {\n\t\t\tconst database = databases[i].name;\n\t\t\tif (database.indexOf(STORAGE_KEYPREFIX) === 0) {\n\t\t\t\tclearPromises.push(_connectToDB(database).then((db) => _clearDB(db)));\n\t\t\t}\n\t\t}\n\n\t\treturn Promise.all(clearPromises);\n\t});\n}\n\nexport default function(name) {\n\tconst IndexedDBCache = {\n\t\tname: name,\n\n\t\tinitStorage: initStorage,\n\t\tgetItem: getItem,\n\t\tsetItem: setItem,\n\t\tremoveItem: removeItem,\n\t\tclear: clear,\n\t\tlength: length,\n\t\tkey: key,\n\t\tkeys: keys,\n\t\titerate: iterate\n\t};\n\n\t//Export internal functions if we are in test environment.\n\tif (typeof jest !== 'undefined') {\n\t\tIndexedDBCache.testing = {\n\t\t\tprocessError: processError,\n\t\t\tmakeRequest: makeRequest\n\t\t};\n\t}\n\n\treturn IndexedDBCache;\n}\n","import serializer from '../utils/serializer';\nimport runCallback from '../utils/runCallback';\nimport IndexedDBCache, {_clearAllInstances} from './IndexedDBCache';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\n/**\n *\n * @param {string} storeName The name to give to the database.\n * @param {array} options An object containing extra options to configure the cache\n * @returns A promise which is successful when the IndexedDB is initialized.\n */\nfunction initStorage({storeName = 'default', ...options}) {\n\tconst self = this;\n\tself._dbInfo = {\n\t\tserializer: serializer,\n\t\tindexedDBCache: IndexedDBCache(storeName),\n\t\tkeyPrefix: getKeyPrefix({storeName, ...options}, this._defaultConfig),\n\t\t...options\n\t};\n\n\treturn self._dbInfo.indexedDBCache.initStorage();\n}\n\n/**\n * Waits until the UnifiedCache is ready then calls the provided function.\n *\n * @param {UnifiedCache} unifiedCache The UnifiedCache instance to wait for\n * @param {function} callFunction The cache operation being called\n * @param {function} callback An optional callback function.\n * @returns a Promise from the callFunction\n */\nfunction makeDBCall(unifiedCache, callFunction, callback) {\n\tconst promise = unifiedCache\n\t\t.ready()\n\t\t.then(() => callFunction(unifiedCache._dbInfo.indexedDBCache));\n\trunCallback(promise, callback);\n\treturn promise;\n}\n\nfunction clear(callback) {\n\treturn makeDBCall(this, (indexedDBCache) => indexedDBCache.clear(), callback);\n}\n\nfunction getItem(key, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.getItem(key),\n\t\tcallback\n\t);\n}\n\nfunction setItem(key, value, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.setItem(key, value),\n\t\tcallback\n\t);\n}\n\nfunction removeItem(key, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.removeItem(key),\n\t\tcallback\n\t);\n}\n\nfunction key(index, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.key(index),\n\t\tcallback\n\t);\n}\n\nfunction keys(callback) {\n\treturn makeDBCall(this, (indexedDBCache) => indexedDBCache.keys(), callback);\n}\n\nfunction length(callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.length(),\n\t\tcallback\n\t);\n}\n\nfunction iterate(iterator, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.iterate(iterator),\n\t\tcallback\n\t);\n}\n\nconst indexedDB = {\n\t_adapter: 'indexedDB',\n\t_initStorage: initStorage,\n\t_clearAllInstances: _clearAllInstances,\n\titerate: iterate,\n\tgetItem: getItem,\n\tsetItem: setItem,\n\tremoveItem: removeItem,\n\tclear: clear,\n\tlength: length,\n\tkey: key,\n\tkeys: keys\n};\n\nexport default indexedDB;\n","import serializer from '../utils/serializer';\nimport normalizeKey from '../utils/normalizeKey';\nimport isWebStorageValid from '../utils/isWebStorageValid';\nimport runCallback from '../utils/runCallback';\nimport getCallback from '../utils/getCallback';\nimport {STORAGE_KEYPREFIX, STORAGE, VERSION_KEY} from '../utils/constants';\nimport evictionPolicies from '../evictions/evictionPolicies';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\n/**\n * @constant {Storage} SESSIONSTORAGE - window object's sessionStorage property\n */\nconst {SESSIONSTORAGE} = STORAGE;\n\n/**\n * Check if sessionStorage throws when saving an item\n * @param {string} type\n * @returns {boolean} true if sessionStorage is successfully able to set value, otherwise false\n */\nfunction checkIfWebStorageThrows(type) {\n\tconst storage = window[type];\n\tconst sessionStorageTestKey = '_UnifiedCache_Support_Test';\n\n\ttry {\n\t\tstorage.setItem(sessionStorageTestKey, true);\n\t\tstorage.removeItem(sessionStorageTestKey);\n\n\t\treturn false;\n\t} catch (e) {\n\t\treturn true;\n\t}\n}\n\n/**\n * Checks if sessionStorage is usable and allows to save an item.\n *\n * It covers the use cases like:\n *   - safari private browsing mode\n *   - the available quota for sessionStorage is 0 and there wasn't any saved items yet\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n *\n * @returns {boolean}\n * @private\n */\nfunction _isSessionStorageUsable() {\n\treturn (\n\t\t!checkIfWebStorageThrows('sessionStorage') || SESSIONSTORAGE.length > 0\n\t);\n}\n\n// Config the sessionStorage, using options set in the config.\nfunction _initStorage(options) {\n\tconst self = this;\n\tconst dbInfo = {};\n\tif (options) {\n\t\tfor (const i in options) {\n\t\t\tdbInfo[i] = options[i];\n\t\t}\n\t}\n\n\tdbInfo.keyPrefix = getKeyPrefix(options, self._defaultConfig);\n\n\tif (!_isSessionStorageUsable()) {\n\t\treturn Promise.reject();\n\t}\n\n\tself._dbInfo = dbInfo;\n\tdbInfo.serializer = serializer;\n\n\treturn Promise.resolve();\n}\n\n/**\n * Remove all keys from the sessionStorage, effectively destroying\n * all data in the app's key/value\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction clear(callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst {keyPrefix} = self._dbInfo;\n\t\tconst storage = SESSIONSTORAGE;\n\t\tfor (let i = storage.length - 1; i >= 0; i--) {\n\t\t\tconst key = storage.key(i);\n\n\t\t\tif (key.indexOf(keyPrefix) === 0) {\n\t\t\t\tstorage.removeItem(key);\n\t\t\t}\n\t\t}\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n/**\n * Retrieve an item from the sessionStorage. Unlike the default indexDB,\n * we don't modify return values at all. If a key's value\n * is `undefined`, we pass that value to the Promise.\n * @param {string} key\n * @param {function} callback\n * @returns {Promise<*>} promise for the value stored\n */\nfunction getItem(key, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tlet result = evictionPolicies.getItem(\n\t\t\tSESSIONSTORAGE,\n\t\t\tself._config,\n\t\t\tdbInfo.keyPrefix + normalizeKey(key)\n\t\t);\n\n\t\t// If a result was found, parse it from the serialized\n\t\t// string into a JS object. If result isn't truthy, the key\n\t\t// is likely undefined and we'll pass it straight to the promise.\n\t\tif (result) {\n\t\t\tresult = dbInfo.serializer.deserialize(result);\n\t\t}\n\n\t\treturn result;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Set a key's value in sessionStorage.\n *\n * callback support to address use cases like:\n *   - user want to operate on that value only after\n *   they're sure about value is set to the sessionStorage\n *   e.g. save, or something like that on the current form page\n *\n * @param {string} key\n * @param {*} value\n * @param {function} callback\n * @returns {*}\n */\nfunction setItem(key, value, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\t// TODO how should we handle undefined value\n\t\t//  - save null for undefined value??\n\n\t\t// Save the original value to pass to the callback.\n\t\tconst originalValue = value;\n\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst dbInfo = self._dbInfo;\n\t\t\tdbInfo.serializer.serialize(value, function(value, error) {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tevictionPolicies.setItem(\n\t\t\t\t\t\t\tSESSIONSTORAGE,\n\t\t\t\t\t\t\tself._config,\n\t\t\t\t\t\t\tdbInfo.keyPrefix,\n\t\t\t\t\t\t\tnormalizeKey(key),\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(originalValue);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// window.sessionStorage capacity exceeded.\n\t\t\t\t\t\t// TODO: Make this a specific error or\n\t\t\t\t\t\t//  a public event for page author to hook handlers on the page\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\te.name === 'QuotaExceededError' ||\n\t\t\t\t\t\t\te.name === 'NS_ERROR_DOM_QUOTA_REACHED'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treject(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * when passed a number n, returns the name of the nth key\n * in a given sessionStorage object.\n * @param {number} n\n * @param {function} callback\n * @returns {Promise<*>} promise for a string containing the name of the key.\n * If the index does not exist, null is returned.\n */\nfunction key(n, callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = SESSIONSTORAGE.key(n);\n\t\t} catch (error) {\n\t\t\tresult = null;\n\t\t}\n\n\t\t// remove the prefix from the key, if a key is found.\n\t\tif (result) {\n\t\t\tresult = result.substring(dbInfo.keyPrefix.length);\n\t\t}\n\n\t\treturn result;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * gets the list of keys in sessionStorage.\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction keys(callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tconst length = SESSIONSTORAGE.length;\n\t\tlet keys = [];\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst itemKey = SESSIONSTORAGE.key(i);\n\t\t\tif (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n\t\t\t\tkeys.push(itemKey.substring(dbInfo.keyPrefix.length));\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * supply the number of keys in the sessionStorage\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction length(callback) {\n\tconst self = this;\n\tconst promise = self.keys().then(function(keys) {\n\t\treturn keys.length;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Remove an item from the sessionStorage.\n * @param {string} key\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction removeItem(key, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tSESSIONSTORAGE.removeItem(dbInfo.keyPrefix + normalizeKey(key));\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Iterate over all items in the sessionStorage.\n * @param iterator\n * @param callback\n * @returns {Promise<*>}\n */\nfunction iterate(iterator, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tconst keyPrefix = dbInfo.keyPrefix;\n\t\tconst keyPrefixLength = keyPrefix.length;\n\t\tconst length = SESSIONSTORAGE.length;\n\n\t\t// use a dedicated iterator instead of the `i` variable below\n\t\t// so other keys we fetch in sessionStorage aren't counted in\n\t\t// the `iterationNumber` argument passed to the `iterate()`\n\t\tlet iterationNumber = 1;\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst key = SESSIONSTORAGE.key(i);\n\t\t\tif (key.indexOf(keyPrefix) !== 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet value = SESSIONSTORAGE.getItem(key);\n\n\t\t\t// If a result was found, parse it from the serialized\n\t\t\t// string into a JS object. If result isn't truthy, the\n\t\t\t// key is likely undefined and we'll pass it straight\n\t\t\t// to the iterator.\n\t\t\tif (value) {\n\t\t\t\tvalue = dbInfo.serializer.deserialize(value);\n\t\t\t}\n\n\t\t\tvalue = iterator(\n\t\t\t\tvalue,\n\t\t\t\tkey.substring(keyPrefixLength),\n\t\t\t\titerationNumber++\n\t\t\t);\n\n\t\t\tif (value !== void 0) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * drops the sessionStorage instance\n * @param {object} options\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction dropInstance(options, callback) {\n\tcallback = getCallback.apply(this, arguments);\n\toptions = (typeof options !== 'function' && options) || {};\n\tif (!options.name) {\n\t\tconst currentConfig = this.config();\n\t\toptions.name = options.name || currentConfig.name;\n\t\toptions.storeName = options.storeName || currentConfig.storeName;\n\t}\n\n\tconst self = this;\n\tlet promise;\n\tif (!options.name) {\n\t\tpromise = Promise.reject('Invalid arguments');\n\t} else {\n\t\tpromise = new Promise(function(resolve) {\n\t\t\tif (!options.storeName) {\n\t\t\t\tresolve(`${options.name}__`);\n\t\t\t} else {\n\t\t\t\tresolve(getKeyPrefix(options, self._defaultConfig));\n\t\t\t}\n\t\t}).then(function(keyPrefix) {\n\t\t\tfor (let i = SESSIONSTORAGE.length - 1; i >= 0; i--) {\n\t\t\t\tconst key = SESSIONSTORAGE.key(i);\n\n\t\t\t\tif (key.indexOf(keyPrefix) === 0) {\n\t\t\t\t\tSESSIONSTORAGE.removeItem(key);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\nfunction _clearAllInstances() {\n\tfor (let i = SESSIONSTORAGE.length - 1; i >= 0; i--) {\n\t\tconst key = SESSIONSTORAGE.key(i);\n\t\tconsole.debug(`Clearing SessionStorage ${key}`);\n\n\t\tif (key.indexOf(STORAGE_KEYPREFIX) === 0) {\n\t\t\tSESSIONSTORAGE.removeItem(key);\n\t\t}\n\n\t\tconsole.debug(`Cleared SessionStorage ${key}`);\n\t}\n}\n\nexport function getCacheVersion() {\n\treturn SESSIONSTORAGE.getItem(VERSION_KEY);\n}\n\nexport function setCacheVersion(version) {\n\treturn SESSIONSTORAGE.setItem(VERSION_KEY, version);\n}\n\nconst sessionStorage = {\n\t_adapter: 'sessionStorage',\n\t_initStorage: _initStorage,\n\t_support: isWebStorageValid('sessionStorage'),\n\t_clearAllInstances: _clearAllInstances,\n\titerate: iterate,\n\tgetItem: getItem,\n\tsetItem: setItem,\n\tremoveItem: removeItem,\n\tclear: clear,\n\tlength: length,\n\tkey: key,\n\tkeys: keys,\n\tdropInstance: dropInstance\n};\n\nexport default sessionStorage;\n","import {STORAGE_KEYPREFIX, STORAGE} from '../utils/constants';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\nconst {CACHE_API} = STORAGE;\n\n/**\n * Returns a Promise that resolves to true if the Cache Storage instance has been initialized.\n * Otherwise, it throws an Error.\n *\n * @param {object} options configuration used to initialize the Cache Storage instance\n * @return {Promise<boolean>}\n * @private\n */\nasync function _initStorage(options) {\n\ttry {\n\t\tthis._dbInfo = {\n\t\t\t...options,\n\t\t\tkeyPrefix: getKeyPrefix(options, this._defaultConfig)\n\t\t};\n\n\t\tthis._cacheStorage = await CACHE_API.open(this._dbInfo.keyPrefix);\n\t\treturn true;\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`InitError: Unable to initialize the Cache Storage instance - ${error}`\n\t\t);\n\t}\n}\n\n/**\n * Returns a Promise that resolves to the Response associated with the\n * first matching key in the Cache Storage instance.\n * If no match is found, the Promise resolves to undefined.\n *\n * @param {string|Request} key URL string, or a Request object containing the URL string\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<Response|undefined>}\n *\n */\nasync function getItem(key, callback) {\n\tconst fn = async () => {\n\t\tconst response = await this._cacheStorage.match(key);\n\t\tcallback?.(null, response);\n\t\treturn response;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n/**\n * Adds key/value pairs to the Cache Storage instance overwriting any key/value pair previously stored\n * in the cache that matches the key.\n *\n * If no 'value' is provided, it will fetch from the 'key' URL\n * and add the resulting response object to the cache.\n *\n * It will return a Promise that resolves to undefined upon successful addition.\n *\n * @param {string|Request} key The Request object or URL string that you want to add to the cache.\n * @param {Response} value The value you want to match up to the key.\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<undefined>}\n */\nasync function setItem(key, value, callback) {\n\tconst fn = async () => {\n\t\tif (value == null) {\n\t\t\tawait this._cacheStorage.add(key);\n\t\t} else {\n\t\t\tawait this._cacheStorage.put(key, value.clone());\n\t\t}\n\t\tcallback?.(null);\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Invokes the provider iterator function for every entry in the Cache Storage instance.\n *\n * @param {function} iterator function to invoke for every entry. The function is invoked with the following\n * arguments: key, value, index (starts at 1)\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<undefined>}\n */\nasync function iterate(iterator, callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tlet index = 1;\n\t\tfor (const request of requests) {\n\t\t\tconst response = await this._cacheStorage.match(request);\n\t\t\titerator(request, response, index++);\n\t\t}\n\t\tcallback?.(null);\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Find the entry whose key is the request, and if found, deletes the entry and returns a Promise that\n * resolves to true. If no Cache entry is found, the Promise resolves to false.\n *\n * @param {string|Request} key URL string, or a Request Object containing the URL string.\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<boolean>}\n */\nasync function removeItem(key, callback) {\n\tconst fn = async () => {\n\t\tconst isDeleted = this._cacheStorage.delete(key);\n\t\tcallback?.(null, isDeleted);\n\t\treturn isDeleted;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Removes all entries from the Cache Storage instance.\n * It will return a Promise that resolves to undefined upon successful\n * clearance.\n *\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<undefined>}\n */\nasync function clear(callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tconst promises = requests.map((request) =>\n\t\t\tthis._cacheStorage.delete(request)\n\t\t);\n\t\tawait Promise.all(promises);\n\t\tcallback?.(null);\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Returns a Promise that resolves to the number of entries in the Cache Storage instance.\n *\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<number>} Promise that resolves to the number of entries in the Cache Storage instance\n */\nasync function length(callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tconst length = requests.length;\n\t\tcallback?.(null, length);\n\t\treturn length;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Returns a Promise that resolves to the nth Request Object\n * representing the key in the Cache Storage instance\n *\n * @param {number} index An integer representing the number of the key you want to get the name of. This is a zero-based\n * index.\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<Request>} A Promise that resolves to a Request object. If Request Object does not exist, a null\n * is returned\n */\nasync function key(index, callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tconst request = requests[index] || null;\n\t\tcallback?.(null, request);\n\t\treturn request;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Returns a Promise that resolves to an array of Request objects representing the keys of the Cache Storage instance\n *\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<Request[]>}\n */\nasync function keys(callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tcallback?.(null, requests);\n\t\treturn requests;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Drops the Cache Storage instance.\n * Returns a Promise that resolves to true if the Cache Storage instance\n * was successfully deleted. Otherwise, the Promise resolves to false.\n *\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<boolean>}\n */\nasync function dropInstance(callback) {\n\tconst fn = async () => {\n\t\tconst isDeleted = await CACHE_API.delete(this._dbInfo.keyPrefix);\n\t\tcallback?.(null, isDeleted);\n\t\treturn isDeleted;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\nasync function _clearAllInstances() {\n\tconst keys = await CACHE_API.keys();\n\n\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\tconst key = keys[i];\n\t\tconsole.debug(`Clearing CacheAPI ${key}`);\n\t\tif (key.indexOf(STORAGE_KEYPREFIX) === 0) {\n\t\t\tconst cacheStorage = await CACHE_API.open(key);\n\t\t\tconst requests = await cacheStorage.keys();\n\t\t\tconst promises = requests.map((request) => cacheStorage.delete(request));\n\t\t\tawait Promise.all(promises);\n\t\t\tconsole.debug(`Cleared CacheAPI ${key}.`);\n\t\t}\n\t}\n}\n\n/**\n * Returns true if Cache Storage is supported by the current browser.\n * Otherwise, it returns false.\n *\n * @return {boolean}\n * @private\n */\nfunction _isCacheAPISupported() {\n\treturn 'caches' in self;\n}\n\nasync function _runOnReady(fn, callback) {\n\ttry {\n\t\tif (await this.ready()) {\n\t\t\treturn fn();\n\t\t}\n\t} catch (error) {\n\t\tcallback?.(error);\n\t\tthrow error;\n\t}\n}\n\nconst cacheAPI = {\n\t_adapter: 'cacheAPI',\n\t_initStorage,\n\t_support: _isCacheAPISupported(),\n\t_clearAllInstances,\n\titerate,\n\tgetItem,\n\tsetItem,\n\tremoveItem,\n\tclear,\n\tlength,\n\tkey,\n\tkeys,\n\tdropInstance\n};\n\nexport default cacheAPI;\n","function initStorage() {\n\tthis.cache = new Map();\n}\n\nfunction getItem(key) {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tconst value = self.cache.get(key);\n\t\tresolve(value ? value : null);\n\t});\n}\n\nfunction setItem(key, value) {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tself.cache.set(key, value);\n\t\tresolve();\n\t});\n}\n\nfunction removeItem(key) {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tself.cache.delete(key);\n\t\tresolve();\n\t});\n}\n\nfunction clear() {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tself.cache.clear();\n\t\tresolve();\n\t});\n}\n\nfunction length() {\n\tconst self = this;\n\treturn new Promise((resolve) => resolve(self.cache.size));\n}\n\nfunction key(keyIndex) {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tlet i = 1;\n\t\tfor (const key of self.cache.keys()) {\n\t\t\tif (i === keyIndex) {\n\t\t\t\tresolve(key);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\n\t\tresolve(null);\n\t});\n}\n\nfunction keys() {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tconst keys = [];\n\t\tfor (const key of self.cache.keys()) {\n\t\t\tkeys.push(key);\n\t\t}\n\n\t\tresolve(keys);\n\t});\n}\n\nfunction iterate(iteratorCallback) {\n\tconst self = this;\n\tnew Promise((resolve) => {\n\t\tlet i = 1;\n\t\tfor (const entry of self.cache.entries()) {\n\t\t\titeratorCallback?.(entry[0], entry[1], i);\n\t\t\ti++;\n\t\t}\n\n\t\tresolve();\n\t});\n}\n\nexport default function() {\n\tconst inMemoryCache = {\n\t\tinitStorage: initStorage,\n\t\tgetItem: getItem,\n\t\tsetItem: setItem,\n\t\tremoveItem: removeItem,\n\t\tclear: clear,\n\t\tlength: length,\n\t\tkey: key,\n\t\tkeys: keys,\n\t\titerate: iterate\n\t};\n\n\treturn inMemoryCache;\n}\n","import serializer from '../utils/serializer';\nimport runCallback from '../utils/runCallback';\nimport InMemoryCache from './InMemoryCache';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\n/**\n * @param {array} options An object containing extra options to configure the cache\n * @returns A promise which is always successful.\n */\nfunction initStorage(options) {\n\tthis._dbInfo = {\n\t\tserializer: serializer,\n\t\tinMemoryCache: InMemoryCache(),\n\t\tkeyPrefix: getKeyPrefix(options, this._defaultConfig),\n\t\t...options\n\t};\n\n\treturn this._dbInfo.inMemoryCache.initStorage();\n}\n\n/**\n * Waits until the UnifiedCache is ready then calls the provided function.\n *\n * @param {UnifiedCache} unifiedCache The UnifiedCache instance to wait for\n * @param {function} callFunction The cache operation being called\n * @param {function} callback An optional callback function.\n * @returns a Promise from the callFunction\n */\nfunction makeInMemoryCall(unifiedCache, callFunction, callback) {\n\tconst promise = unifiedCache\n\t\t.ready()\n\t\t.then(() => callFunction(unifiedCache._dbInfo.inMemoryCache));\n\trunCallback(promise, callback);\n\treturn promise;\n}\n\nfunction getItem(key, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.getItem(key),\n\t\tcallback\n\t);\n}\n\nfunction setItem(key, value, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.setItem(key, value),\n\t\tcallback\n\t);\n}\n\nfunction removeItem(key, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.removeItem(key),\n\t\tcallback\n\t);\n}\n\nfunction clear(callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.clear(),\n\t\tcallback\n\t);\n}\n\nfunction key(index, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.key(index),\n\t\tcallback\n\t);\n}\n\nfunction keys(callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.keys(),\n\t\tcallback\n\t);\n}\n\nfunction length(callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.length(),\n\t\tcallback\n\t);\n}\n\nfunction iterate(iterator, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.iterate(iterator),\n\t\tcallback\n\t);\n}\n\nconst inMemory = {\n\t_adapter: 'inMemory',\n\t_initStorage: initStorage,\n\titerate: iterate,\n\tgetItem: getItem,\n\tsetItem: setItem,\n\tremoveItem: removeItem,\n\tclear: clear,\n\tlength: length,\n\tkey: key,\n\tkeys: keys\n};\n\nexport default inMemory;\n","import {TTL_EXPIRED_ITEM_KEYWORD} from '../utils/constants';\n\nconst cacheStatsProxyHandler = {\n\tget(cacheInstance, prop) {\n\t\tif (prop === 'getItem') {\n\t\t\tconst originalMethod = cacheInstance[prop];\n\t\t\treturn new Proxy(originalMethod, {\n\t\t\t\tapply: async function(targetMethod, cacheInstanceProxy, args) {\n\t\t\t\t\tconst {_stats} = cacheInstanceProxy;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await targetMethod.apply(cacheInstanceProxy, args);\n\t\t\t\t\t\tif (result === TTL_EXPIRED_ITEM_KEYWORD) {\n\t\t\t\t\t\t\t_stats.stale++;\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t_stats.hit++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_stats.miss++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t_stats.error++;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (prop === 'setItem') {\n\t\t\tconst originalMethod = cacheInstance[prop];\n\t\t\treturn new Proxy(originalMethod, {\n\t\t\t\tapply: async function(targetMethod, cacheInstanceProxy, args) {\n\t\t\t\t\tconst {_stats} = cacheInstanceProxy;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst start = performance.now();\n\t\t\t\t\t\tconst result = await targetMethod.apply(cacheInstanceProxy, args);\n\t\t\t\t\t\tconst end = performance.now();\n\t\t\t\t\t\t_stats.buildTime += end - start;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t_stats.error++;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn cacheInstance[prop];\n\t}\n};\n\nexport default cacheStatsProxyHandler;\n","const isArray =\n\tArray.isArray ||\n\tfunction(arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n\nexport default isArray;\n","import isArray from './isArray';\n\nexport function extend() {\n\tfor (let i = 1; i < arguments.length; i++) {\n\t\tconst arg = arguments[i];\n\n\t\tif (arg) {\n\t\t\tfor (let key in arg) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(arg, key)) {\n\t\t\t\t\tif (isArray(arg[key])) {\n\t\t\t\t\t\targuments[0][key] = arg[key].slice();\n\t\t\t\t\t} else {\n\t\t\t\t\t\targuments[0][key] = arg[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn arguments[0];\n}\n\nexport default extend;\n","const sameValue = (x, y) =>\n\tx === y ||\n\t(typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));\n\nconst includes = (array, searchElement) => {\n\tconst len = array.length;\n\tlet i = 0;\n\twhile (i < len) {\n\t\tif (sameValue(array[i], searchElement)) {\n\t\t\treturn true;\n\t\t}\n\t\ti++;\n\t}\n\n\treturn false;\n};\n\nexport default includes;\n","function runTwoCallbacks(promise, callback, errorCallback) {\n\tif (typeof callback === 'function') {\n\t\tpromise.then(callback);\n\t}\n\n\tif (typeof errorCallback === 'function') {\n\t\tpromise.catch(errorCallback);\n\t}\n}\n\nexport default runTwoCallbacks;\n","/**\n * @returns The cache version returned from the server.\n */\nexport function getServerCacheVersion() {\n\tif (!window.NOW) {\n\t\treturn;\n\t}\n\n\treturn window.NOW.unifiedCacheVersion;\n}\n\n/**\n * Checks if the cache version matches the current version. If the current version is undefined,\n * then this always returns false. If the provided version is undefined, this always returns true.\n *\n * @param cacheVersion The current version of the cache in the browser\n * @returns true if the cacheVersion matches the cache version defined by the server.\n */\nexport function isCacheVersionOld(cacheVersion) {\n\tconst serverCacheVersion = getServerCacheVersion();\n\treturn (\n\t\t!cacheVersion || (serverCacheVersion && serverCacheVersion !== cacheVersion)\n\t);\n}\n","function buildGlobalCacheStats(getAggregateCacheStats, getAllCacheStats) {\n\treturn Object.freeze({\n\t\tgetAggregateCacheStats,\n\t\tgetAllCacheStats\n\t});\n}\n\nfunction checkIfUxGlobalsExists() {\n\treturn window && window.ux_globals;\n}\n\n/**\n * Adds the cache stats methods that we want to expose globally in window.ux_globals\n *\n * @param {{getAggregateCacheStats: function, getAllCacheStats: function}} globalCacheStats\n */\nfunction setGlobalCacheStats({getAggregateCacheStats, getAllCacheStats}) {\n\tconst cacheStats = buildGlobalCacheStats(\n\t\tgetAggregateCacheStats,\n\t\tgetAllCacheStats\n\t);\n\tif (checkIfUxGlobalsExists()) {\n\t\twindow.ux_globals.__uc__cacheStats = cacheStats;\n\t} else {\n\t\twindow.ux_globals = {__uc__cacheStats: cacheStats};\n\t}\n}\n\nexport default setGlobalCacheStats;\n","/**\n * Returns a new object containing the sum of the values for every key in objects.\n *\n * @param {...object} objects objects with number values\n * @return {object}\n */\nfunction sumObjectsByKey(...objects) {\n\treturn objects.reduce((obj1, obj2) => {\n\t\tfor (let key in obj2) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj2, key))\n\t\t\t\tobj1[key] = (obj1[key] || 0) + obj2[key];\n\t\t}\n\t\treturn obj1;\n\t}, {});\n}\n\nexport default sumObjectsByKey;\n","import localStorageAdapter, * as LocalStorage from './adapters/localStorage';\nimport indexedDBAdapter from './adapters/indexedDB';\nimport sessionStorageAdapter, * as SessionStorage from './adapters/sessionStorage';\nimport cacheAPIAdapter from './adapters/cacheAPI';\nimport inMemoryAdapter from './adapters/inMemory';\nimport cacheStatsProxyHandler from './stats/cacheStatsProxyHandler';\nimport extend from './utils/extend';\nimport includes from './utils/includes';\nimport runCallback from './utils/runCallback';\nimport runTwoCallbacks from './utils/runTwoCallbacks';\nimport serializer from './utils/serializer';\nimport {getServerCacheVersion, isCacheVersionOld} from './utils/cacheVersion';\nimport setGlobalCacheStats from './utils/setGlobalCacheStats';\nimport sumObjectsByKey from './utils/sumObjectsByKey';\n\n/**\n * All defined adapters are stored here when `defineAdapter()` is called.\n * These defined adapters are shared across all instances of UnifiedCache.\n *\n * @type {Object} all defined adapters\n */\nconst DefinedAdapters = {};\n\n/**\n * List of supported adapter mappings.\n *\n * @type {Object} mappings of supported adapters\n */\nconst AdapterSupport = {};\n\n/**\n * List of Default adapters.\n *\n * @type {Object} default adapters\n */\nconst DefaultAdapters = {\n\tLOCALSTORAGE: localStorageAdapter,\n\tSESSIONSTORAGE: sessionStorageAdapter,\n\tINDEXEDDB: indexedDBAdapter,\n\tCACHE_API: cacheAPIAdapter,\n\tIN_MEMORY: inMemoryAdapter\n};\n\nconst dropAllInstancesPromises = [];\n\nfunction clearStorageInstances(adapter) {\n\tif (adapter._clearAllInstances) {\n\t\ttry {\n\t\t\t//Only drop adapters that support it\n\t\t\tdropAllInstancesPromises.push(adapter._clearAllInstances());\n\t\t} catch (error) {\n\t\t\tconsole.error(`Failed to clear cache ${adapter._adapter}.`, error); //Errors shouldn't block the cache\n\t\t}\n\t}\n}\n\nconst cacheVersionCheck = new Promise((resolve) => {\n\ttry {\n\t\t//Drop all persistent adapters except sessionstorage\n\t\tconst browserCacheVersion = LocalStorage.getCacheVersion();\n\t\tif (isCacheVersionOld(browserCacheVersion)) {\n\t\t\tclearStorageInstances(localStorageAdapter);\n\t\t\tclearStorageInstances(indexedDBAdapter);\n\t\t\tclearStorageInstances(cacheAPIAdapter);\n\n\t\t\tLocalStorage.setCacheVersion(getServerCacheVersion());\n\t\t}\n\n\t\t//Sessionstorage is a special case because each browser tab is a separate sessionstorage\n\t\t//instance. We keep a version in each session storage to track when it needs to be cleared.\n\t\tconst sessionStorageVersion = SessionStorage.getCacheVersion();\n\t\tif (isCacheVersionOld(sessionStorageVersion)) {\n\t\t\tclearStorageInstances(sessionStorageAdapter);\n\n\t\t\tSessionStorage.setCacheVersion(getServerCacheVersion());\n\t\t}\n\n\t\t//To prevent using the cache before the clear is done, we want all drop operations to\n\t\t//complete.\n\t\tPromise.all(dropAllInstancesPromises)\n\t\t\t.then(() => resolve())\n\t\t\t.catch(() => resolve()); //Errors shouldn't block the cache\n\t} catch (error) {\n\t\tconsole.error('Failed to clear all caches');\n\t\tresolve(); //Errors shouldn't block the cache\n\t}\n});\n\n/**\n * Default adapter order.\n * @type {string[]}  adapter order\n */\nconst DefaultAdapterOrder = [DefaultAdapters.LOCALSTORAGE._adapter];\n\n/**\n * Default adapter configuration.\n * @type {{adapter: string[], name: string, description: string, storeName: string}} adapter configuration\n */\nconst DefaultConfig = {\n\tdescription: 'NextUI web application unified cache',\n\tadapter: DefaultAdapterOrder.slice(),\n\tname: 'UnifiedCache',\n\tstoreName: 'keyvaluepairs'\n\t//\n\t// TODO: should we add more configuration details\n\t//  - size (default DB size _under_ 5MB, as it's the highest size we can use without any prompt),\n\t//  - version (1.0), etc\n};\n\nconst DefaultStats = {\n\thit: 0,\n\tmiss: 0,\n\terror: 0,\n\tstale: 0,\n\tbuildTime: 0\n};\n\n/**\n * List of supported eviction policies.\n * @type {string[]}  eviction policies\n */\nconst EvictionPolicies = ['TTL', 'LRU'];\n\n/**\n * Optional adapter API method.\n * @type {string[]} optional API methods\n */\nconst OptionalAdapterMethods = ['dropInstance'];\n\n/**\n * Adapter API methods for the UnifiedCache library.\n * @type {string[]} api methods\n */\nconst LibraryMethods = [\n\t'clear',\n\t'getItem',\n\t'iterate',\n\t'key',\n\t'keys',\n\t'length',\n\t'removeItem',\n\t'setItem'\n].concat(OptionalAdapterMethods);\n\n/**\n * Calls the unifiedCache instance adapter API methods, once the\n * adapter initialization is done.\n *\n * @param {UnifiedCache} unifiedCacheInstance\n * @param {LibraryMethods} libraryMethod\n */\nfunction callWhenReady(unifiedCacheInstance, libraryMethod) {\n\tunifiedCacheInstance[libraryMethod] = function() {\n\t\tconst _args = arguments;\n\t\t// once the unifiedCache instance is initialized with adapter\n\t\t// and ready, call the adapter API method with parameters\n\t\treturn unifiedCacheInstance.ready().then(function() {\n\t\t\treturn unifiedCacheInstance[libraryMethod].apply(\n\t\t\t\tunifiedCacheInstance,\n\t\t\t\t_args\n\t\t\t);\n\t\t});\n\t};\n}\n\n/**\n * Validate the eviction policy of the user provided configuration options.\n *\n * @param {{adapter: string[], evictionPolicy: string, name: string, description: string, storeName: string}} options\n * @returns {boolean}\n */\nfunction validateEvictionPolicy(options) {\n\tif (!options) return true;\n\n\tif (!Object.prototype.hasOwnProperty.call(options, 'evictionPolicy'))\n\t\treturn true;\n\n\tif (EvictionPolicies.includes(options.evictionPolicy)) return true;\n\n\tconst error = new Error(\n\t\t'Eviction policy ' +\n\t\t\toptions.evictionPolicy +\n\t\t\t' is not supported. No eviction policy will be applied.'\n\t);\n\tconsole.warn(error);\n\treturn false;\n}\n\n/**\n * An unifiedCache object\n * @param {DefaultConfig} _defaultConfig - default adapter configuration\n * @param {Object} _config - merged adapter configuration\n * @param {Promise<*>} _adapterSet - promise indicating adapter initialization\n * @param {function} _initAdapter - function that initialized the adapter\n * @param {Promise<*>} _ready - promise indicating adapter is ready to use\n * @param {{adapter: string, description: string, keyPrefix: string, name: string, storeName: string, serializer: object}} _dbInfo - adapter store information\n */\nclass UnifiedCache {\n\tstatic cacheInstances = [];\n\n\t/**\n\t * Returns the aggregate stats for all unified cache instances.\n\t *\n\t * @return {object}\n\t */\n\tstatic getAggregateCacheStats() {\n\t\tconst stats = UnifiedCache.cacheInstances.reduce(\n\t\t\t(aggregateStats, cacheInstance) => {\n\t\t\t\treturn Object.entries(cacheInstance._stats).reduce(\n\t\t\t\t\t(accumulator, [attribute, currentValue]) => {\n\t\t\t\t\t\taccumulator[attribute] =\n\t\t\t\t\t\t\t(accumulator[attribute] || 0) + currentValue;\n\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t},\n\t\t\t\t\taggregateStats\n\t\t\t\t);\n\t\t\t},\n\t\t\t{}\n\t\t);\n\n\t\tconst {hit, miss} = stats;\n\t\treturn {\n\t\t\t...stats,\n\t\t\thitRate: hit / (hit + miss) || 0\n\t\t};\n\t}\n\n\t/**\n\t * Returns an object containing the stats for every unified cache namespace.\n\t *\n\t * @return {object}\n\t */\n\tstatic getAllCacheStats() {\n\t\treturn UnifiedCache.cacheInstances.reduce(\n\t\t\t(allCacheStats, cacheInstance) => {\n\t\t\t\tif (cacheInstance._dbInfo) {\n\t\t\t\t\tconst {adapter, keyPrefix} = cacheInstance._dbInfo;\n\t\t\t\t\tconst key = `${adapter}${keyPrefix}`;\n\t\t\t\t\tallCacheStats[key] = sumObjectsByKey(\n\t\t\t\t\t\tallCacheStats[key] || {},\n\t\t\t\t\t\tcacheInstance._stats\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn allCacheStats;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}\n\n\tconstructor(options) {\n\t\t// loop through the default adapters to define the\n\t\t// adapters in synchronous manner\n\t\tfor (let adapterTypeKey in DefaultAdapters) {\n\t\t\tif (\n\t\t\t\tObject.prototype.hasOwnProperty.call(DefaultAdapters, adapterTypeKey)\n\t\t\t) {\n\t\t\t\tconst adapter = DefaultAdapters[adapterTypeKey];\n\t\t\t\tconst adapterName = adapter._adapter;\n\t\t\t\tthis[adapterTypeKey] = adapterName;\n\n\t\t\t\tif (!DefinedAdapters[adapterName]) {\n\t\t\t\t\t// we don't need to wait for the promise,\n\t\t\t\t\t// since the default adapters can be defined\n\t\t\t\t\t// in a blocking manner\n\t\t\t\t\tthis.defineAdapter(adapter);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvalidateEvictionPolicy(options);\n\n\t\tthis._defaultConfig = extend({}, DefaultConfig);\n\t\tthis._stats = extend({}, DefaultStats);\n\t\tthis._config = extend({}, this._defaultConfig, options);\n\t\tthis._adapterSet = null;\n\t\tthis._initAdapter = null;\n\t\tthis._ready = false;\n\t\tthis._dbInfo = null;\n\n\t\tthis._wrapLibraryMethodsWithReady();\n\t\tthis.setAdapter(this._config.adapter).catch(() => {});\n\n\t\tconst unifiedCacheProxy = new Proxy(this, cacheStatsProxyHandler);\n\t\tUnifiedCache.cacheInstances.push(unifiedCacheProxy);\n\t\treturn unifiedCacheProxy;\n\t}\n\n\t/**\n\t * Set any config values for UnifiedCache; can be called anytime before\n\t * the first API call (e.g. `getItem`, `setItem`).\n\t * We loop through options so we don't overwrite existing config values.\n\t * @param {{adapter: string[], evictionPolicy: string, name: string, description: string, storeName: string}} options\n\t * @returns {Error|boolean|Promise<never>|*|null}\n\t */\n\tconfig(options) {\n\t\tvalidateEvictionPolicy(options);\n\t\t// If the options argument is an object, we use it to set values.\n\t\t// Otherwise, we return either a specified config value or all\n\t\t// config values.\n\t\tif (typeof options === 'object') {\n\t\t\t// If UnifiedCache is ready and fully initialized, we can't set\n\t\t\t// any new configuration values. Instead, we return an error.\n\t\t\tif (this._ready) {\n\t\t\t\treturn new Error(\n\t\t\t\t\t\"Can't call config() after UnifiedCache \" + 'has been used.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfor (let i in options) {\n\t\t\t\t// TODO: set additional configuration options like storeName, version etc.\n\t\t\t\tthis._config[i] = options[i];\n\t\t\t}\n\n\t\t\t// after all config options are set and\n\t\t\t// the adapter option is used, try setting it\n\t\t\tif ('adapter' in options && options.adapter) {\n\t\t\t\treturn this.setAdapter(this._config.adapter);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else if (typeof options === 'string') {\n\t\t\treturn this._config[options];\n\t\t} else {\n\t\t\treturn this._config;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the adapter in use.\n\t * @returns {string|null} adapter name in use or null during initialization\n\t * process or when unable to find adapter.\n\t */\n\tadapter() {\n\t\treturn this._adapter || null;\n\t}\n\n\t/**\n\t * Sets the adapter to the unifiedCache.\n\t * @param {string[]} adapters - list of adapter names\n\t * @param {function} callback - success callback\n\t * @param {function} errorCallback - error callback\n\t * @returns {null|Promise<never>|*}\n\t */\n\tsetAdapter(adapters, callback, errorCallback) {\n\t\tconst self = this;\n\t\tconst supportedAdapters = this._getSupportedAdapters(adapters);\n\n\t\tfunction setAdapterToConfig() {\n\t\t\tself._config.adapter = self.adapter();\n\t\t}\n\n\t\tfunction extendSelfWithAdapter(adapter) {\n\t\t\tself._extend(adapter);\n\t\t\tsetAdapterToConfig();\n\t\t\t// TODO initialize the indexedDB adapter when no adapter\n\t\t\t//  is passed to config\n\t\t\tself._ready = self._initStorage(self._config);\n\t\t\treturn self._ready;\n\t\t}\n\n\t\tfunction initAdapter(supportedAdapters) {\n\t\t\tlet currentAdapterIndex = 0;\n\t\t\treturn () => {\n\t\t\t\tfunction adapterPromiseLoop() {\n\t\t\t\t\twhile (currentAdapterIndex < supportedAdapters.length) {\n\t\t\t\t\t\tlet adapterName = supportedAdapters[currentAdapterIndex];\n\n\t\t\t\t\t\tself._dbInfo = null;\n\t\t\t\t\t\tself._ready = null;\n\n\t\t\t\t\t\tcurrentAdapterIndex++;\n\t\t\t\t\t\treturn self\n\t\t\t\t\t\t\t.getAdapter(adapterName)\n\t\t\t\t\t\t\t.then((adapter) => extendSelfWithAdapter(adapter))\n\t\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\t\tconsole.warn(error);\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch(adapterPromiseLoop);\n\t\t\t\t\t}\n\n\t\t\t\t\tsetAdapterToConfig();\n\t\t\t\t\tconst error = new Error('No available storage method found.');\n\t\t\t\t\tself._adapterSet = Promise.reject(error);\n\t\t\t\t\treturn self._adapterSet;\n\t\t\t\t}\n\n\t\t\t\treturn adapterPromiseLoop();\n\t\t\t};\n\t\t}\n\n\t\t// There might be a adapter initialization in progress\n\t\t// so wait for it to finish in order to avoid a possible\n\t\t// race condition to set _dbInfo\n\t\tconst oldAdapterSetDone =\n\t\t\tthis._adapterSet !== null\n\t\t\t\t? this._adapterSet.catch(() => Promise.resolve())\n\t\t\t\t: Promise.resolve();\n\n\t\tthis._adapterSet = oldAdapterSetDone\n\t\t\t.then(() => {\n\t\t\t\tconst adapterName = supportedAdapters[0];\n\t\t\t\tif (adapterName) {\n\t\t\t\t\tself._dbInfo = null;\n\t\t\t\t\tself._ready = null;\n\n\t\t\t\t\treturn self.getAdapter(adapterName).then((adapter) => {\n\t\t\t\t\t\tself._adapter = adapter._adapter;\n\t\t\t\t\t\tsetAdapterToConfig();\n\t\t\t\t\t\tself._wrapLibraryMethodsWithReady();\n\t\t\t\t\t\tself._initAdapter = initAdapter(supportedAdapters);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tsetAdapterToConfig();\n\t\t\t\tconst error = new Error('No available storage method found.');\n\t\t\t\tself._adapterSet = Promise.reject(error);\n\t\t\t\treturn self._adapterSet;\n\t\t\t});\n\n\t\trunTwoCallbacks(this._adapterSet, callback, errorCallback);\n\t\treturn this._adapterSet;\n\t}\n\n\t/**\n\t * Returns the name of the adapter being used, null during the\n\t * asynchronous adapter initialization process, or\n\t * null if the asynchronous adapter initialization process failed\n\t * to find a usable adapter.\n\t * @param {string} adapterName - adapter name\n\t * @param {function} callback - success callback\n\t * @param {function} errorCallback - error callback\n\t * @returns {Promise<unknown> | Promise<never>} promise for the defined adapter\n\t */\n\tgetAdapter(adapterName, callback, errorCallback) {\n\t\tconst getAdapterPromise = DefinedAdapters[adapterName]\n\t\t\t? Promise.resolve(DefinedAdapters[adapterName])\n\t\t\t: Promise.reject(new Error('Adapter not found.'));\n\n\t\trunTwoCallbacks(getAdapterPromise, callback, errorCallback);\n\n\t\treturn getAdapterPromise;\n\t}\n\n\t/**\n\t * Returns the serializer object containing the serialization\n\t * & deserialization methods.\n\t * @param {function} callback\n\t * @returns {Promise<{serialize: function, deserialize: function}>} a promise for serializer object\n\t */\n\tgetSerializer(callback) {\n\t\tconst serializerPromise = Promise.resolve(serializer);\n\t\trunTwoCallbacks(serializerPromise, callback);\n\t\treturn serializerPromise;\n\t}\n\n\t/**\n\t * Defines adapter for the {@link UnifiedCache} and ensures adapter in compliance\n\t * with the API methods contract.\n\t * @param {object} adapterObject - Adapter object with library methods and properties\n\t * @param {function} callback - success callback\n\t * @param {function} errorCallback - error callback\n\t * @returns {Promise<*>}\n\t */\n\tdefineAdapter(adapterObject, callback, errorCallback) {\n\t\tconst promise = new Promise(function(resolve, reject) {\n\t\t\ttry {\n\t\t\t\tconst adapterName = adapterObject._adapter;\n\t\t\t\tconst complianceError = new Error('Custom adapter not compliant');\n\n\t\t\t\t// Adapter name should be defined and not overlap with the\n\t\t\t\t// library-defined, default adapters.\n\t\t\t\tif (!adapterObject._adapter) {\n\t\t\t\t\treject(complianceError);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst adapterMethods = LibraryMethods.concat('_initStorage');\n\t\t\t\tfor (let i = 0, len = adapterMethods.length; i < len; i++) {\n\t\t\t\t\tconst adapterMethodName = adapterMethods[i];\n\n\t\t\t\t\t// when the property is there,\n\t\t\t\t\t// it should be a method even when optional\n\t\t\t\t\tconst isRequired = !includes(\n\t\t\t\t\t\tOptionalAdapterMethods,\n\t\t\t\t\t\tadapterMethodName\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\t(isRequired || adapterObject[adapterMethodName]) &&\n\t\t\t\t\t\ttypeof adapterObject[adapterMethodName] !== 'function'\n\t\t\t\t\t) {\n\t\t\t\t\t\treject(complianceError);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst configureMissingMethods = function() {\n\t\t\t\t\tconst methodNotImplementedFactory = function(methodName) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tconst error = new Error(\n\t\t\t\t\t\t\t\t`Method ${methodName} is not implemented by the current adapter`\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst promise = Promise.reject(error);\n\n\t\t\t\t\t\t\trunCallback(promise, arguments[arguments.length - 1]);\n\n\t\t\t\t\t\t\treturn promise;\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\n\t\t\t\t\tfor (let i = 0, len = OptionalAdapterMethods.length; i < len; i++) {\n\t\t\t\t\t\tconst optionalAdapterMethod = OptionalAdapterMethods[i];\n\t\t\t\t\t\tif (!adapterObject[optionalAdapterMethod]) {\n\t\t\t\t\t\t\tadapterObject[\n\t\t\t\t\t\t\t\toptionalAdapterMethod\n\t\t\t\t\t\t\t] = methodNotImplementedFactory(optionalAdapterMethod);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconfigureMissingMethods();\n\n\t\t\t\tconst setAdapterSupport = function(support) {\n\t\t\t\t\tif (DefinedAdapters[adapterName]) {\n\t\t\t\t\t\tconsole.info(`Redefining UnifiedCache adapter: ${adapterName}`);\n\t\t\t\t\t}\n\t\t\t\t\tDefinedAdapters[adapterName] = adapterObject;\n\t\t\t\t\tAdapterSupport[adapterName] = support;\n\t\t\t\t\t// don't use a then, so that we can define\n\t\t\t\t\t// adapters that have simple _support methods\n\t\t\t\t\t// in a blocking manner\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\n\t\t\t\tif ('_support' in adapterObject) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tadapterObject._support &&\n\t\t\t\t\t\ttypeof adapterObject._support === 'function'\n\t\t\t\t\t) {\n\t\t\t\t\t\tadapterObject._support().then(setAdapterSupport, reject);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetAdapterSupport(!!adapterObject._support);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsetAdapterSupport(true);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treject(e);\n\t\t\t}\n\t\t});\n\n\t\trunTwoCallbacks(promise, callback, errorCallback);\n\t\treturn promise;\n\t}\n\n\t/**\n\t * checks for adapter support and returns true if supported, otherwise false\n\t * @param {string} adapterName\n\t * @returns {boolean}\n\t */\n\tsupports(adapterName) {\n\t\treturn !!AdapterSupport[adapterName];\n\t}\n\n\t/**\n\t * ready determine whether the asynchronous adapter\n\t * initialization process has finished.\n\t * @param {function} callback\n\t * @returns {Promise<*>} a promise indicating adapter initialization\n\t */\n\tready(callback) {\n\t\tconst self = this;\n\n\t\t//When cache version check is done, then we can initialize the adapter.\n\t\tconst promise = cacheVersionCheck.then(() => {\n\t\t\treturn self._adapterSet.then(() => {\n\t\t\t\tif (self._ready === null) {\n\t\t\t\t\tself._ready = self._initAdapter();\n\t\t\t\t}\n\n\t\t\t\treturn self._ready;\n\t\t\t});\n\t\t});\n\n\t\trunTwoCallbacks(promise, callback, callback);\n\t\treturn promise;\n\t}\n\n\t/**\n\t * List of supported adapters\n\t * @param {string[]} adapters - list of available adapter names\n\t * @returns {string[]} list of supported adapter names\n\t * @private\n\t */\n\t_getSupportedAdapters(adapters) {\n\t\tconst supportedAdapters = [];\n\t\tfor (let i = 0, len = adapters.length; i < len; i++) {\n\t\t\tconst adapterName = adapters[i];\n\t\t\tif (this.supports(adapterName)) {\n\t\t\t\tsupportedAdapters.push(adapterName);\n\t\t\t}\n\t\t}\n\t\treturn supportedAdapters;\n\t}\n\n\t/**\n\t * extends the instance of unifiedCache with initialized\n\t * adapter API methods and properties\n\t * @param {object} libraryMethodsAndProperties\n\t * @private\n\t */\n\t_extend(libraryMethodsAndProperties) {\n\t\textend(this, libraryMethodsAndProperties);\n\t}\n\n\t/**\n\t * Includes adapter API methods to the UnifiedCache object and replaced\n\t * by the adapter API methods once initialized successfully.\n\t * @private\n\t */\n\t_wrapLibraryMethodsWithReady() {\n\t\t// Add a stub for each adapter API method that delays the call to the\n\t\t// corresponding adapter method until UnifiedCache is ready. These stubs\n\t\t// will be replaced by the adapter methods as soon as the adapter is\n\t\t// loaded, so there is no performance impact.\n\t\tfor (let i = 0, len = LibraryMethods.length; i < len; i++) {\n\t\t\tcallWhenReady(this, LibraryMethods[i]);\n\t\t}\n\t}\n\n\t/**\n\t * creates an instance of {@link UnifiedCache} and returns it.\n\t * @param {{adapter: string[], name: string, description: string, storeName: string}} options - configuration options\n\t * @returns {UnifiedCache} an instance of {@link UnifiedCache}\n\t */\n\tcreateInstance(options) {\n\t\treturn new UnifiedCache(options);\n\t}\n}\n\n/**\n * The actual UnifiedCache object that we expose as a module or via a global.\n * It's extended by pulling in one of our other libraries.\n * @type {UnifiedCache} unifiedCache object\n */\nconst unifiedCache = new UnifiedCache();\n\n// Add cache stats to window.ux_globals\nsetGlobalCacheStats({\n\tgetAggregateCacheStats: UnifiedCache.getAggregateCacheStats,\n\tgetAllCacheStats: UnifiedCache.getAllCacheStats\n});\n\nexport default unifiedCache;\n","import {actionTypes} from '@servicenow/ui-core';\n\nconst {\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_TREE_RENDERED,\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_RENDER_REQUESTED,\n} = actionTypes;\nconst BEHAVIOR_NAME = 'defer';\n\n/**\n * This behavior defers rendering of the 'target' component and specifies a trigger and event which will undefer and render the target.\n *\n * **Register behavior**\n *\n * After installation import the behavior at the top of your component JS file\n * and instantiate a new instance by passing required options object.\n *\n * See the **Getting Started** section below for configuration details.\n *\n * Finally register the deferBehavior in your component and add the 'defer' attribute to the 'target' element\n *\n * ```js\n * import deferBehavior from '@servicenow/behavior-defer';\n * ...\n *\n * createCustomElement('sn-example', {\n *   renderer: {\n *     type: snabbdom,\n *     view: (state) => {\n *     ...\n *     }\n *   },\n *   behaviors: [{behavior:deferBehavior, options: {\n *    events:[{type: 'onmouseenter', trigger: 'now-popover`, target:'now-dropdown-list'}]\n *   }]\n * });\n * ```\n *\n * See `example/sn-defer-example.js` for an example.\n *\n * **Configuration options**\n *\n * events (required): An array of objects that specify the event type, trigger and target\n * shouldUndefer (optional): A function that will be used to determine if the target should be undeferred.\n *\n * Configuration example:\n *\n * ```js\n * import deferBehavior from '@servicenow/behavior-defer';\n *\n * createCustomElement('sn-foo', {\n *   ...\n *   behaviors: [{\n *     behavior: deferBehavior,\n *     options: {\n *     \tevents: [{type: 'mouseenter', trigger: 'now-popover', target: 'now-dropdown-list'}],\n *     \tshouldUndefer: (target, {state, properties, meta, event}) => {\n *     \t\t//custom logic to determine if target should be undeferred\n *     \t\treturn meta.foo === 'foo';\n *    \t}\n *    }\n *   }]\n * });\n * ```\n *\n * **How it works**\n * When the event type is delevered to the trigger element the listener function which contains the `shouldUndefer` check is called. The target is undeferred when `shouldUndefer` returns true.\n *\n * **Component requirements**\n * Target must be a seismic component.\n *\n *\n * @seismicBehavior deferBehavior\n * @summary Defer rendering of configured target component.\n */\n\nconst shouldUndeferDefault = (target, {state, properties, event}) => {\n\t//deferEffect call\n\tif (!event.type) return state.opened || properties.opened;\n\n\t//mouse event triggered call\n\treturn !properties.disabled;\n};\n\nconst deferFn = (\n\thost,\n\tupdateState,\n\tstate,\n\tproperties,\n\tmeta,\n\tevent,\n\tshouldUndefer = shouldUndeferDefault,\n) => {\n\tconst updatedTargets = [];\n\tconst undeferred = [];\n\tconst targets = state.behaviors[BEHAVIOR_NAME].targets;\n\ttargets.forEach((target) => {\n\t\tif (shouldUndefer(target, {host, state, properties, meta, event})) {\n\t\t\tconst el = host.shadowRoot.querySelector(target);\n\t\t\tif (el) {\n\t\t\t\tel.removeAttribute('defer');\n\t\t\t\tundeferred.push({target, el});\n\t\t\t} else {\n\t\t\t\t//eslint-disable-next-line no-console\n\t\t\t\tconsole.warn('no selector found');\n\t\t\t}\n\t\t} else {\n\t\t\tupdatedTargets.push(target);\n\t\t}\n\t});\n\tupdateState({\n\t\tpath: `behaviors.${BEHAVIOR_NAME}.targets`,\n\t\tvalue: updatedTargets,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n\tupdateState({\n\t\tpath: `behaviors.${BEHAVIOR_NAME}.undeferred`,\n\t\tvalue: undeferred,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n};\n\nconst deferEffect = ({\n\tstate,\n\tupdateState,\n\thost,\n\tproperties,\n\taction: {payload, meta},\n}) => {\n\tconst {\n\t\toptions: {shouldUndefer},\n\t} = payload;\n\tdeferFn(host, updateState, state, properties, meta, {}, shouldUndefer);\n};\n\nexport default {\n\tname: BEHAVIOR_NAME,\n\tinitialState: {\n\t\tundeferred: [],\n\t\ttargets: [],\n\t\tlisteners: {},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_RENDER_REQUESTED]: ({\n\t\t\tupdateState,\n\t\t\taction: {\n\t\t\t\tpayload: {\n\t\t\t\t\toptions: {events},\n\t\t\t\t},\n\t\t\t},\n\t\t}) => {\n\t\t\tconst targets = [];\n\t\t\tevents.forEach((event) => {\n\t\t\t\ttargets.push(event.target);\n\t\t\t});\n\t\t\tupdateState({\n\t\t\t\tpath: `behaviors.${BEHAVIOR_NAME}.targets`,\n\t\t\t\tvalue: targets,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t});\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: deferEffect,\n\t\t[COMPONENT_TREE_RENDERED]: deferEffect,\n\t\t[COMPONENT_DISCONNECTED]: ({\n\t\t\tstate: {\n\t\t\t\tbehaviors: {[BEHAVIOR_NAME]: listeners = []},\n\t\t\t},\n\t\t}) => {\n\t\t\tfor (const k in listeners) {\n\t\t\t\tconst {listenerEl, listener} = listeners[k];\n\t\t\t\tif (listenerEl) listenerEl.removeEventListener(k, listener, false);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_CONNECTED]: ({\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t\thost,\n\t\t\taction: {\n\t\t\t\tpayload: {\n\t\t\t\t\toptions: {events, shouldUndefer},\n\t\t\t\t},\n\t\t\t\tmeta,\n\t\t\t},\n\t\t}) => {\n\t\t\tconst listeners = {};\n\t\t\tconst {properties} = state;\n\t\t\tevents.forEach(({type, trigger}) => {\n\t\t\t\tconst listenerEl = host.shadowRoot.querySelector(trigger);\n\t\t\t\tif (listenerEl) {\n\t\t\t\t\tconst listener = (e) => {\n\t\t\t\t\t\tdeferFn(\n\t\t\t\t\t\t\thost,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tproperties,\n\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tshouldUndefer,\n\t\t\t\t\t\t);\n\t\t\t\t\t};\n\t\t\t\t\tlistenerEl.addEventListener(type, listener, false);\n\t\t\t\t\tlisteners[`${trigger}_${type}`] = {listenerEl, listener};\n\n\t\t\t\t\tlistenerEl.addEventListener('keydown', listener, false);\n\t\t\t\t\tlisteners[`${trigger}_${type}_keydown`] = {listenerEl, listener};\n\t\t\t\t}\n\t\t\t});\n\t\t\tupdateState({\n\t\t\t\tpath: `behaviors.${BEHAVIOR_NAME}.listeners`,\n\t\t\t\tvalue: listeners,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t});\n\t\t},\n\t},\n};\n","import {findTabbableNodes} from '@servicenow/library-enhanced-utils';\n\n/**\n * Returns an object whose properties include relevant focusable elements.\n * @param {HTMLElement} host\n * @returns {{tabbableNodes: HTMLElement[], firstFocusableElement: HTMLElement, lastFocusableElement: HTMLElement}}\n */\nexport const getFocusableNodes = (host) => {\n\tconst tabbableNodes = findTabbableNodes(host);\n\tconst firstFocusableElement = tabbableNodes[0];\n\tconst lastFocusableElement = tabbableNodes[tabbableNodes.length - 1];\n\n\treturn {\n\t\ttabbableNodes,\n\t\tfirstFocusableElement,\n\t\tlastFocusableElement,\n\t};\n};\n","import {findTabbableNodes} from '@servicenow/library-enhanced-utils';\nimport {getFocusableNodes} from './get-focusable-nodes';\n\n/**\n * Synchronously focus the first node inside a host element.\n * @param {HTMLElement} host\n */\nexport const handleFocusFirstNode = (host) => {\n\tlet focusableNodes = findTabbableNodes(host);\n\n\t// Some components, like modeless dialog, don't have any built-in\n\t// nodes, so we shouldn't do anything if none are found.\n\tif (focusableNodes.length) {\n\t\treturn focusableNodes[0].focus();\n\t}\n};\n\nexport const handleFocusTrap = (event, host) => {\n\tconst path = event.composedPath();\n\tconst {firstFocusableElement, lastFocusableElement} = getFocusableNodes(host);\n\n\tif (path[0] !== firstFocusableElement && path[0] !== lastFocusableElement) {\n\t\treturn;\n\t}\n\n\tif (event.shiftKey) {\n\t\tif (path[0] === firstFocusableElement) {\n\t\t\tif (lastFocusableElement instanceof HTMLInputElement) {\n\t\t\t\tlastFocusableElement.select();\n\t\t\t} else {\n\t\t\t\tlastFocusableElement.focus();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\tif (path[0] === lastFocusableElement) {\n\t\t\tif (firstFocusableElement instanceof HTMLInputElement) {\n\t\t\t\tfirstFocusableElement.select();\n\t\t\t} else {\n\t\t\t\tfirstFocusableElement.focus();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import isFunction from 'lodash/isFunction';\nimport {getActiveElement} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {handleFocusFirstNode} from './utils/handle-focus';\nimport {handleTabKeydown} from './utils/handle-tab-keydown';\n\nconst BEHAVIOR_NAME = 'focus';\nconst {\n\tCOMPONENT_TREE_RENDERED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_DISCONNECTED,\n} = actionTypes;\n\nconst handleOpened = (host, updateState) => {\n\tconst triggerEl = getActiveElement();\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'triggerEl',\n\t\tvalue: triggerEl,\n\t\tshouldRender: false,\n\t});\n\n\thandleFocusFirstNode(host);\n};\n\nconst handleClosed = (triggerEl) => {\n\tif (!triggerEl) return;\n\ttriggerEl.focus();\n};\n\n/**\n * This behavior replaces the native `.focus()` method for the web component's\n * host element in order to allow delegation of focus to internal nodes.\n * By default, `.focus()` will delegate the event to the component's first\n * focusable node.\n *\n * Optionally, you can pass an object to the `options` key for the behavior to\n * further configure focus. See the README for more details. The accepted keys\n * are `focus` and `trap`.\n *\n * After installation, import the behavior at the top of your component JS file\n * and register it in your component behaviors list:\n *\n * ```js\n * import focusBehavior from '@servicenow/behavior-focus';\n *\n * createCustomElement('sn-example', {\n *   // ...\n *   behaviors: [{\n *     behavior: focusBehavior,\n *     options: {\n *       focus: function(host, dispatch) {\n *         // do something when .focus() is called on this component\n *       },\n *       // optionally add focus trapping\n *       trap: true\n *     }\n *   }]\n * });\n * ```\n *\n * @seismicBehavior focusBehavior\n * @summary Manages focus delegation for a web component\n */\nexport default {\n\tname: BEHAVIOR_NAME,\n\teventHandlers: [{events: ['keydown'], effect: handleTabKeydown}],\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY]: ({action, dispatch, host}) => {\n\t\t\tconst {options} = action.payload;\n\n\t\t\thost.focus = (focusOptions = {}) => {\n\t\t\t\treturn isFunction(options.focus)\n\t\t\t\t\t? options.focus(host, dispatch, focusOptions)\n\t\t\t\t\t: handleFocusFirstNode(host);\n\t\t\t};\n\t\t},\n\t\t[COMPONENT_TREE_RENDERED]: ({\n\t\t\taction,\n\t\t\tproperties,\n\t\t\thost,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {previousRenderProperties, options} = action.payload;\n\t\t\tif (!options.trap) return;\n\n\t\t\tconst {opened} = properties;\n\t\t\tif (opened !== previousRenderProperties.opened) {\n\t\t\t\treturn opened\n\t\t\t\t\t? handleOpened(host, updateState)\n\t\t\t\t\t: handleClosed(state.triggerEl);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({action, state, properties: {opened}}) => {\n\t\t\tconst {options} = action.payload;\n\t\t\tif (options.trap && opened) {\n\t\t\t\thandleClosed(state.triggerEl);\n\t\t\t}\n\t\t},\n\t},\n};\n","import {handleFocusTrap} from './handle-focus';\n\n/**\n * Effect callback in a `keydown` event handler.\n *\n * Needs to be used in `eventHandlers`:\n *\n * ```js\n * createCustomElement('my-tag', {\n * \teventHandlers: [\n * \t\t{\n * \t\t\tevents: 'keydown',\n * \t\t\teffect: handleTabKeyDown\n * \t\t}\n * \t],\n * \t// ...rest of config\n * });\n * ```\n *\n * @param {Object} coeffects - Callback in a `keydown` event handler.\n */\nexport const handleTabKeydown = ({action, host, properties}) => {\n\tconst {\n\t\tpayload: {event, options},\n\t} = action;\n\n\tif (!options.trap || event.key !== 'Tab' || !properties.opened) return;\n\n\tconst didFocus = handleFocusTrap(event, host);\n\tif (didFocus) action.preventDefault();\n};\n","export const AncestorMap = new Map();\nexport const ActionTypes = {SHOW: 'show', HIDE: 'hide'};\n","import {ActionTypes, AncestorMap} from './constants';\n\nconst BODY_TAG = 'BODY';\nconst ARIA_HIDDEN_ATTR = 'aria-hidden';\nconst HIDDEN_ATTR = 'hidden';\nconst INVISIBLE_TAGNAMES = ['SCRIPT', 'LINK', 'STYLE', 'TEMPLATE'];\nconst LANDMARK_TAGNAMES = [\n\t'ARTICLE',\n\t'ASIDE',\n\t'MAIN',\n\t'NAV',\n\t'SECTION',\n\t'FORM',\n];\nconst LANDMARK_ROLES = [\n\t'complementary',\n\t'contentinfo',\n\t'form',\n\t'banner',\n\t'main',\n\t'navigation',\n\t'region',\n];\n\nconst isInvisibleNode = (tagName) => INVISIBLE_TAGNAMES.indexOf(tagName) > -1;\n\nconst isLandmark = (element) => {\n\treturn (\n\t\tLANDMARK_TAGNAMES.indexOf(element.tagName) > -1 ||\n\t\tLANDMARK_ROLES.indexOf(element.role) > -1\n\t);\n};\n\nconst isAriaLiveRegion = (element) => element.hasAttribute('aria-live');\n\n/**\n * Sets a given element with `aria-hidden='true'`. If it\n * already has this attribute/value pair or has the `hidden`\n * attribute, a data attribute is set to ignore it when\n * the node needs to be unhidden later.\n * @param {HTMLElement} element\n */\nconst hideElement = (element) => {\n\tif (element.getAttribute(ARIA_HIDDEN_ATTR) === 'true') {\n\t\telement.dataset.behaviorModalIgnore = true;\n\t} else if (!element.hasAttribute(HIDDEN_ATTR)) {\n\t\telement.setAttribute(ARIA_HIDDEN_ATTR, 'true');\n\t}\n};\n\n/**\n * Removes a given element's `aria-hidden` attribute. If\n * a `data.behaviorModalIgnore` was added previously, it's removed.\n * @param {HTMLElement} element\n */\nconst showElement = (element) => {\n\tif (element.dataset.behaviorModalIgnore) {\n\t\tdelete element.dataset.behaviorModalIgnore;\n\t} else if (element.getAttribute(ARIA_HIDDEN_ATTR) === 'true') {\n\t\telement.removeAttribute(ARIA_HIDDEN_ATTR);\n\t}\n};\n\n/**\n * If true, the given `siblingNode` is a sibling to `node`.\n * It filters out invisible nodes. e.g. script, style, template\n * It also filters out ARIA live regions, which need to be visible to screen readers.\n * @param {Node} node\n * @param {Node} siblingNode\n * @returns {boolean}\n */\nconst isValidSibling = (node, siblingNode) => {\n\tif (\n\t\tsiblingNode.nodeType !== Node.ELEMENT_NODE ||\n\t\tsiblingNode === node ||\n\t\tisInvisibleNode(siblingNode.tagName) ||\n\t\tisAriaLiveRegion(siblingNode)\n\t) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\n/**\n * Returns an array of HTMLElement node siblings in the\n * given element's tree context, excluding the element.\n * @param {(HTMLElement|DocumentFragment)} element\n * @returns {HTMLElement[]}\n */\nconst getElementSiblings = (prevNode, node) => {\n\treturn Array.from(node.childNodes).filter((siblingNode) =>\n\t\tisValidSibling(prevNode, siblingNode),\n\t);\n};\n\n/**\n * If the node's parent has a shadow root, then the\n * current node is slotted. Traverse its corresponding\n * shadow root and hide or show its sibling shadow nodes.\n * @param {string} action - one of 'show' or 'hide'\n * @param {HTMLElement} node\n * @param {string} id - id of the origin host element\n */\nconst updateShadowRootElements = (node, action, id, slottedNodes) => {\n\tif (!node) return;\n\n\tconst parent = node.parentNode;\n\n\tif (parent && parent.shadowRoot) {\n\t\tconst shadowRoot = parent.shadowRoot;\n\t\tconst slot = node.assignedSlot;\n\n\t\tupdateElements(action, null, slot, id, shadowRoot, true, slottedNodes);\n\t}\n};\n\n/**\n * If an ancestor of the modal is a landmark element, we\n * need to set its role to 'none' to prevent focus from\n * reaching the landmark.\n * If the element has a `role` defined, we'll store it\n * in a data attribute.\n * @param {HTMLElement} element\n */\nconst unsetAncestorLandmark = (element) => {\n\tif (element.nodeType !== Node.ELEMENT_NODE || !isLandmark(element)) return;\n\n\tconst currentRole = element.getAttribute('role');\n\tif (currentRole) {\n\t\telement.dataset.behaviorModalAncestorRole = currentRole;\n\t} else {\n\t\telement.dataset.behaviorModalAncestorRole = true;\n\t}\n\n\telement.setAttribute('role', 'none');\n};\n\n/**\n * If an ancestor was flagged with a data attribute, add its\n * value back to the element role and remove the data attribute.\n * Otherwise,\n * @param {HTMLElement} element\n */\nconst restoreAncestorLandmark = (element) => {\n\tif (element.nodeType !== Node.ELEMENT_NODE) return;\n\n\tconst role = element.dataset.behaviorModalAncestorRole;\n\tif (role) {\n\t\tif (role !== 'true') {\n\t\t\telement.setAttribute('role', role);\n\t\t} else {\n\t\t\telement.removeAttribute('role');\n\t\t}\n\t\tdelete element.dataset.behaviorModalAncestorRole;\n\t}\n};\n\n/**\n * Returns a boolean indicating if a given ancestor node\n * matches the domLimit.\n * @param {Node} node\n * @param {(Node|string)} domLimit\n * @returns {boolean}\n */\nconst isDomLimit = (node, domLimit) => {\n\tconst limitReached =\n\t\ttypeof domLimit === 'string' && node.nodeType === Node.ELEMENT_NODE\n\t\t\t? node.matches(domLimit)\n\t\t\t: node === domLimit;\n\n\treturn limitReached || node.tagName === BODY_TAG;\n};\n\n/**\n * Uses the starting node to walk upwards through the tree, showing\n * or hiding all sibling nodes (including those in shadow roots).\n * @param {string} action - one of 'show' or 'hide'\n * @param {(HTMLElement|ShadowRoot)} prevNode\n * @param {(HTMLElement|ShadowRoot)} node\n * @param {string} id - id of the origin host element\n * @param {(Node|string)} domLimit\n * @param {boolean} isTreeOrigin - flag given if the current node is the originating host\n */\nexport const updateElements = (\n\taction,\n\tprevNode,\n\tnode,\n\tid,\n\tdomLimit,\n\tisTreeOrigin,\n\tslottedNodes,\n) => {\n\tconst parentNode = node.parentNode || node.host;\n\tlet limitReached = false;\n\n\t// There's no prevNode which means we're at the host or\n\t// at an element slot.\n\tif (isTreeOrigin) {\n\t\t// Move on to the next parent element\n\t\treturn updateElements(\n\t\t\taction,\n\t\t\tnode,\n\t\t\tparentNode,\n\t\t\tid,\n\t\t\tdomLimit,\n\t\t\tfalse,\n\t\t\tslottedNodes,\n\t\t);\n\t}\n\n\t// If a domLimit was given OR we are at the body element, we shouldn't\n\t// update any further.\n\tif (isDomLimit(node, domLimit)) {\n\t\tlimitReached = true;\n\t}\n\n\t// Get all sibling elements, excluding `node`\n\tconst elementSiblings = getElementSiblings(prevNode, node);\n\n\t// It's possible the current node is in a slotted context,\n\t// e.g. a modal slotted into a modal, or something similar.\n\t//\n\t// As a result we need to traverse its corresponding shadow root\n\t// and hide siblings up through the shadow root itself.\n\tupdateShadowRootElements(\n\t\tprevNode || elementSiblings[0],\n\t\taction,\n\t\tid,\n\t\tslottedNodes,\n\t);\n\n\t// Loop through all the siblings and hide them from screen readers.\n\tlet length = elementSiblings.length;\n\tif (action === ActionTypes.HIDE) {\n\t\tunsetAncestorLandmark(node);\n\t\tAncestorMap.get(id).push(node);\n\t\twhile (--length >= 0) {\n\t\t\tconst element = elementSiblings[length];\n\t\t\tconst scid = element.getAttribute('slot-content-id') || '-';\n\t\t\tif (!slottedNodes || !slottedNodes.has(scid)) hideElement(element);\n\t\t}\n\t} else if (action === ActionTypes.SHOW) {\n\t\trestoreAncestorLandmark(node);\n\t\twhile (--length >= 0) {\n\t\t\tshowElement(elementSiblings[length]);\n\t\t}\n\t}\n\n\t// Recursively update all siblings to our direct ancestor nodes.\n\t// Stops at the body element or the defined domLimit\n\tif (!limitReached) {\n\t\tupdateElements(action, node, parentNode, id, domLimit, false, slottedNodes);\n\t}\n};\n","import {AncestorMap} from './constants';\n\n/**\n * Creates a origin ref node alongside the host, so\n * in case the host is removed from the DOM while `opened`\n * is set, we can undo the DOM changes caused by this behavior.\n * @param {HTMLElement} hostEl\n * @param {Function} updateState\n */\nconst addTreeOriginNode = (hostEl, updateState) => {\n\tconst treeOriginRef = document.createElement('div');\n\ttreeOriginRef.id = 'modal-origin-' + hostEl.nowId;\n\thostEl.parentNode.insertBefore(treeOriginRef, hostEl);\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'treeOriginRef',\n\t\tvalue: treeOriginRef,\n\t\tshouldRender: false,\n\t});\n\treturn treeOriginRef;\n};\n\n/**\n * Removes the backup node and removes the ref from state.\n * @param {HTMLElement} treeOriginRef\n * @param {Function} updateState\n */\nconst removeTreeOriginNode = (treeOriginRef, updateState) => {\n\t// The dummy node may have already been removed\n\t// if a direct parent element was removed\n\tif (treeOriginRef.isConnected) {\n\t\ttreeOriginRef.parentNode.removeChild(treeOriginRef);\n\t}\n\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'treeOriginRef',\n\t\tvalue: null,\n\t\tshouldRender: false,\n\t});\n};\n\nconst removeArtifacts = (treeOriginRef, updateState, nowId) => {\n\tremoveTreeOriginNode(treeOriginRef, updateState);\n\tAncestorMap.delete(nowId);\n};\n\nexport {addTreeOriginNode, removeArtifacts};\n","import {actionTypes} from '@servicenow/ui-core';\nimport {updateElements} from './utils/update-elements';\nimport {AncestorMap, ActionTypes} from './utils/constants';\nimport {addTreeOriginNode, removeArtifacts} from './utils/tree-origin-node';\n\nconst {\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\nconst BEHAVIOR_NAME = 'modal';\nconst WATCH_PROPERTY_NAME_DEFAULT = 'opened';\n\n// Debug in development:\n// window.ancestors = AncestorMap;\n\n/**\n * Checks for the nearest DOM-connected ancestor\n * to the host if it happened to be removed from the\n * DOM while opened. This way we can restore the DOM\n * to its original state even if one of its direct\n * ancestors has been removed.\n * NOTE: This will never reach the document body.\n * @param {string} id - id of the origin host element\n * @returns {HTMLElement}\n */\nconst getNearestConnectedAncestor = (id) => {\n\tconst ancestors = AncestorMap.get(id);\n\n\tif (ancestors) {\n\t\tfor (const node of ancestors) {\n\t\t\tif (node.isConnected) return node;\n\t\t}\n\t}\n\n\treturn null;\n};\nlet slottedNodes = {};\n\nconst setSlotId = (compId, el) => {\n\tconst uid = Math.round(Math.random() * 100000);\n\tel.setAttribute('slot-content-id', uid);\n\tslottedNodes[compId].add(uid.toString());\n};\n\nconst setNodes = (compId, slots) => {\n\tif (!slottedNodes[compId]) slottedNodes[compId] = new Set();\n\tif (slots) {\n\t\tslots.forEach((slot) => {\n\t\t\tconst nodes = slot.assignedNodes({flatten: true});\n\t\t\tfor (let n in nodes) {\n\t\t\t\tif (!nodes[n].getAttribute('slot-content-id')) {\n\t\t\t\t\tsetSlotId(compId, nodes[n]);\n\t\t\t\t}\n\t\t\t\tconst children = nodes[n].childNodes;\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tif (children[i].nodeName === 'SLOT') {\n\t\t\t\t\t\tconst n = children[i].assignedNodes({flatten: true});\n\t\t\t\t\t\tsetSlotId(compId, n[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nconst initSlots = (hostEl) => {\n\tconst cid = hostEl.getAttribute('component-id');\n\tconst slots = hostEl.shadowRoot.querySelectorAll('slot');\n\tsetNodes(cid, slots);\n};\n\n/**\n * Kicks off hiding page elements from screen readers.\n * @param {HTMLElement} hostEl\n * @param {string} id - id of the origin host element\n */\nconst hidePageContent = (hostEl, id, updateState, limit) => {\n\tconst treeOriginRef = addTreeOriginNode(hostEl, updateState);\n\tconst cid = hostEl.getAttribute('component-id');\n\tif (!AncestorMap.has(id)) {\n\t\tAncestorMap.set(id, [treeOriginRef]);\n\t}\n\tupdateElements(\n\t\tActionTypes.HIDE,\n\t\tnull,\n\t\thostEl,\n\t\tid,\n\t\tlimit,\n\t\ttrue,\n\t\tslottedNodes[cid],\n\t);\n};\n\nexport default {\n\tname: BEHAVIOR_NAME,\n\tinitialState: {treeOriginRef: null},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: ({host, action, properties, updateState}) => {\n\t\t\tconst hostEl = action.meta.hoistHost || host;\n\t\t\tconst cid = hostEl.getAttribute('component-id');\n\t\t\tconst {options} = action.payload;\n\t\t\tconst watchPropertyName =\n\t\t\t\toptions.watchPropertyName || WATCH_PROPERTY_NAME_DEFAULT;\n\t\t\tif (properties[watchPropertyName]) {\n\t\t\t\tconst slots = hostEl.shadowRoot.querySelectorAll('slot');\n\t\t\t\tif (slots.length > 0) setNodes(cid, slots);\n\t\t\t\tconst {nowId} = properties;\n\t\t\t\thidePageContent(hostEl, nowId, updateState, options.limit);\n\t\t\t} else {\n\t\t\t\tinitSlots(hostEl);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\tupdateState,\n\t\t\taction,\n\t\t\thost,\n\t\t\tproperties: {nowId},\n\t\t\tstate: {treeOriginRef},\n\t\t}) => {\n\t\t\tconst {name, value, options} = action.payload;\n\t\t\tconst hostEl = action.meta.hoistHost || host;\n\t\t\tconst cid = hostEl.getAttribute('component-id');\n\t\t\tconst watchPropertyName =\n\t\t\t\toptions.watchPropertyName || WATCH_PROPERTY_NAME_DEFAULT;\n\t\t\tif (name === watchPropertyName) {\n\t\t\t\t//scenarios when UIB dynamically hoists content to modal slot when opened\n\t\t\t\tsetNodes(cid, hostEl.shadowRoot.querySelectorAll('slot'));\n\t\t\t\tif (value) {\n\t\t\t\t\thidePageContent(\n\t\t\t\t\t\thostEl,\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\toptions.limit,\n\t\t\t\t\t\tslottedNodes[cid],\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tupdateElements(\n\t\t\t\t\t\tActionTypes.SHOW,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\thostEl,\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\toptions.limit,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tslottedNodes[cid],\n\t\t\t\t\t);\n\t\t\t\t\tremoveArtifacts(treeOriginRef, updateState, nowId);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({\n\t\t\taction: {\n\t\t\t\tpayload: {options},\n\t\t\t},\n\t\t\thost,\n\t\t\tupdateState,\n\t\t\tproperties,\n\t\t\tstate: {treeOriginRef},\n\t\t}) => {\n\t\t\tconst cid = host.getAttribute('component-id');\n\t\t\tif (slottedNodes[cid]) delete slottedNodes[cid];\n\t\t\tconst {nowId} = properties;\n\t\t\tconst nearestConnectedAncestor = getNearestConnectedAncestor(nowId);\n\t\t\tconst watchPropertyName =\n\t\t\t\toptions.watchPropertyName || WATCH_PROPERTY_NAME_DEFAULT;\n\n\t\t\tif (properties[watchPropertyName] && nearestConnectedAncestor) {\n\t\t\t\t// host has been removed at this point,\n\t\t\t\t// so we need to use nearestConnectedAncestor\n\t\t\t\t// instead.\n\t\t\t\tupdateElements(\n\t\t\t\t\tActionTypes.SHOW,\n\t\t\t\t\tnull,\n\t\t\t\t\tnearestConnectedAncestor,\n\t\t\t\t\tnowId,\n\t\t\t\t\toptions.limit,\n\t\t\t\t\tnearestConnectedAncestor !== treeOriginRef ? false : true,\n\t\t\t\t);\n\t\t\t\tremoveArtifacts(treeOriginRef, updateState, nowId);\n\t\t\t}\n\t\t},\n\t},\n};\n","// normal flow restricts the directions that we can resize\nconst FLOW_NORMAL_EDGES = ['-bottom', '-right', '-bottom-right'];\n//flipped for RTL mode\nconst FLOW_NORMAL_EDGES_RTL = ['-bottom', '-left', '-bottom-left'];\n\n/**\n * Applies the calculated width, height, top, left position during a resize cycle\n * @param {Element} elm - target element to apply styles\n * @param {Object} param - this is the object param\n * @param {number|null} param.width - width to set the element\n * @param {number|null} param.height - height to set the element\n * @param {number|null} param.top - top position to set the element\n * @param {number|null} param.left - left position to set the element\n **/\nconst resize = (\n\telm,\n\t{width = null, height = null, top = null, left = null} = {},\n) => {\n\tif (width !== null) {\n\t\telm.style['max-width'] = '100%';\n\t\telm.style.width = `${width}px`;\n\t}\n\n\tif (height !== null) {\n\t\telm.style['max-height'] = '100%';\n\t\telm.style.height = `${height}px`;\n\t}\n\n\tif (top !== null || left !== null) {\n\t\telm.style['position'] = 'fixed';\n\t\tif (left !== null) elm.style.left = `${Math.max(left, 0)}px`;\n\t\tif (top !== null) elm.style.top = `${Math.max(top, 0)}px`;\n\t}\n};\n\n/**\n * Calculates the required size and position changes based on configuration\n * @param {Object} param - this is the object param\n * @param {String} param.source - the source edge of the container that is to be evaluated\n * @param {number} param.sourceWidth - the original width of the container\n * @param {number} param.sourceHeight - the original height of the container\n * @param {number} param.sourceTop - the original top position of the container\n * @param {number} param.sourceLeft - the original left position of the container\n * @param {Node}   param.resizeTarget - the resize target DOM element\n * @param {number} param.resizableMinHeight - the min height of the container\n * @param {number} param.resizableMinWidth - the min width of the container\n * @param {number} param.resizableMaxHeight - the min height of the container\n * @param {number} param.resizableMaxWidth - the max width of the container\n * @param {String} param.context - how the container flows within the page document\n * @param {number} param.deltaX - the distance moved in the X direction\n * @param {number} param.deltaY - the distance moved in the Y direction\n * @param {String} param.dir - the direction of the page\n */\nconst update = ({\n\tsource,\n\tsourceWidth,\n\tsourceHeight,\n\tsourceTop,\n\tsourceLeft,\n\tresizeTarget,\n\tresizableMaxWidth,\n\tresizableMinWidth,\n\tresizableMaxHeight,\n\tresizableMinHeight,\n\tcontext,\n\tdeltaX,\n\tdeltaY,\n\tdir,\n}) => {\n\tlet width = null;\n\tlet height = null;\n\tlet top = null;\n\tlet left = null;\n\tlet scale = 1;\n\n\t// normal document flow can only resize in the directions of standard to layout; down and to the right\n\tif (\n\t\tdir === 'ltr' &&\n\t\tcontext === 'normal' &&\n\t\t!FLOW_NORMAL_EDGES.includes(source)\n\t) {\n\t\treturn;\n\t}\n\t// this is flipped if in RTL mode\n\tif (\n\t\tdir === 'rtl' &&\n\t\tcontext === 'normal' &&\n\t\t!FLOW_NORMAL_EDGES_RTL.includes(source)\n\t) {\n\t\treturn;\n\t}\n\t// we need increase the scale if the conatiner is maintaing its position\n\t// relative to an area (IE: modal that is centered) versus a normal position or floating position\n\tif (context === 'fixed') scale = 2;\n\n\tconst currentLeft = parseInt(resizeTarget?.style?.left || sourceLeft, 10);\n\tconst currentTop = parseInt(resizeTarget?.style?.top || sourceTop, 10);\n\tconst currentWidth = parseInt(resizeTarget?.style?.width || sourceWidth, 10);\n\tconst currentHeight = parseInt(\n\t\tresizeTarget?.style?.height || sourceHeight,\n\t\t10,\n\t);\n\n\tswitch (source) {\n\t\tcase '-bottom':\n\t\t\theight = sourceHeight + scale * deltaY;\n\t\t\ttop = currentTop;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t\tcase '-top':\n\t\t\theight = sourceHeight - scale * deltaY;\n\t\t\ttop = sourceTop + deltaY;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t\tcase '-left':\n\t\t\twidth = sourceWidth - scale * deltaX;\n\t\t\tleft = sourceLeft + deltaX;\n\t\t\ttop = currentTop;\n\t\t\tbreak;\n\t\tcase '-right':\n\t\t\twidth = sourceWidth + scale * deltaX;\n\t\t\ttop = currentTop;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t\tcase '-bottom-left':\n\t\t\theight = sourceHeight + scale * deltaY;\n\t\t\twidth = sourceWidth - scale * deltaX;\n\t\t\tleft = sourceLeft + deltaX;\n\t\t\ttop = currentTop;\n\t\t\tbreak;\n\t\tcase '-top-left':\n\t\t\theight = sourceHeight - scale * deltaY;\n\t\t\twidth = sourceWidth - scale * deltaX;\n\t\t\ttop = sourceTop + deltaY;\n\t\t\tleft = sourceLeft + deltaX;\n\t\t\tbreak;\n\t\tcase '-bottom-right':\n\t\t\theight = sourceHeight + scale * deltaY;\n\t\t\twidth = sourceWidth + scale * deltaX;\n\t\t\ttop = currentTop;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t\tcase '-top-right':\n\t\t\theight = sourceHeight - scale * deltaY;\n\t\t\twidth = sourceWidth + scale * deltaX;\n\t\t\ttop = sourceTop + deltaY;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t}\n\n\tconst maxWidth = resizableMaxWidth ?? document.documentElement.clientWidth;\n\tconst maxHeight =\n\t\tresizableMaxHeight ??\n\t\t(context === 'document'\n\t\t\t? Number.MAX_SAFE_INTEGER\n\t\t\t: document.documentElement.clientHeight);\n\n\tif (width !== null) {\n\t\t// ensure width does not go beyond bounds of viewport\n\t\tif (\n\t\t\tcontext === 'float' &&\n\t\t\twidth + left > document.documentElement.clientWidth\n\t\t) {\n\t\t\twidth = document.documentElement.clientWidth - left;\n\t\t}\n\n\t\t// ensure width is confined to min and max ranges\n\t\tif (width < resizableMinWidth || width > maxWidth) {\n\t\t\twidth = Math.max(Math.min(width, maxWidth), resizableMinWidth);\n\n\t\t\t// only adjust left when sizing from left\n\t\t\tif (source.includes('left')) {\n\t\t\t\tleft = currentLeft + (currentWidth - width);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (height !== null) {\n\t\t// ensure height does not go beyond bounds of viewport\n\t\tif (height + top > document.documentElement.clientHeight) {\n\t\t\theight = document.documentElement.clientHeight - top;\n\t\t}\n\n\t\t// ensure height is confined to min and max ranges\n\t\tif (height < resizableMinHeight || height > maxHeight) {\n\t\t\theight = Math.max(Math.min(height, maxHeight), resizableMinHeight);\n\n\t\t\t// only adjust top when resizing from top\n\t\t\tif (source.includes('top')) {\n\t\t\t\ttop = currentTop + (currentHeight - height);\n\t\t\t}\n\t\t}\n\t}\n\n\t// zero out left/top if we're not floating\n\tif (context !== 'float') {\n\t\tleft = null;\n\t\ttop = null;\n\t}\n\n\tresize(resizeTarget, {width, height, top, left});\n};\n\nexport const emitEnd = (dispatch, {resizeTarget, updateState, tooltip}) => {\n\tconst {width, height, top, left} =\n\t\tresizeTarget?.getBoundingClientRect() ?? {};\n\tdispatch('PRIVATE#RESIZABLE_END', {width, height, top, left});\n\n\tupdateState({tooltip});\n};\n\n/**\n * Event handler for when mousedown occurs\n * @param {Event} e - mouse down event\n * @param {Object} args - configuration of the behavior\n */\nconst mouseResize = (e, args) => {\n\tconst {clientX: startX, clientY: startY} = e;\n\tconst {dispatch} = args;\n\tlet last = false;\n\n\tlet raf;\n\tconst handleMouseMove = (event) => {\n\t\tevent.preventDefault();\n\n\t\tif (raf) cancelAnimationFrame(raf);\n\n\t\traf = requestAnimationFrame(() => {\n\t\t\tconst {clientX, clientY} = event;\n\n\t\t\tupdate({\n\t\t\t\t...args,\n\t\t\t\tdeltaX: clientX - startX,\n\t\t\t\tdeltaY: clientY - startY,\n\t\t\t});\n\t\t\traf = null;\n\n\t\t\t// if last is true, then the requestAnimationFrame fired after the mouseup / contextmenu event\n\t\t\t// so we need to find our bounds and dispatch out\n\t\t\tif (last) {\n\t\t\t\temitEnd(dispatch, args);\n\t\t\t}\n\t\t});\n\t};\n\n\tconst unregisterMouseMove = (event) => {\n\t\t// if there is no pending requestAnimationFrame, we can dispatch the end event\n\t\tif (!raf) {\n\t\t\temitEnd(dispatch, args);\n\t\t}\n\t\tlast = true;\n\t\tdocument.removeEventListener('mousemove', handleMouseMove);\n\n\t\t// breaking mouse move can happen 2 different ways, so try to clean up both\n\t\tswitch (event.type) {\n\t\t\tcase 'mouseup':\n\t\t\t\treturn document.removeEventListener('contextmenu', unregisterMouseMove);\n\t\t\tcase 'contextmenu':\n\t\t\t\treturn document.removeEventListener('mouseup', unregisterMouseMove);\n\t\t}\n\t};\n\n\tdocument.addEventListener('mousemove', handleMouseMove);\n\tdocument.addEventListener('mouseup', unregisterMouseMove, {once: true});\n\tdocument.addEventListener('contextmenu', unregisterMouseMove, {once: true});\n};\n\n/**\n * Event handler for when keydown or mousedown occurs\n * @param {Event} e - mouse down event\n * @param {Object} args - configuration of the behavior\n */\nexport const startResize = (e, args) => {\n\tconst {resizeTarget, updateState} = args;\n\tconst {\n\t\twidth: sourceWidth,\n\t\theight: sourceHeight,\n\t\ttop: sourceTop,\n\t\tleft: sourceLeft,\n\t} = resizeTarget?.getBoundingClientRect() ?? {};\n\tlet source;\n\n\tupdateState({tooltip: ''});\n\n\tif (e.type === 'keydown') {\n\t\tlet deltaX = 20;\n\t\tlet deltaY = 20;\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tsource = e.shiftKey ? '-right' : '-left';\n\t\t\t\tdeltaX *= -1;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tsource = e.shiftKey ? '-left' : '-right';\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tsource = e.shiftKey ? '-bottom' : '-top';\n\t\t\t\tdeltaY *= -1;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tsource = e.shiftKey ? '-top' : '-bottom';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst modifier = parseFloat(args?.resizeTarget?.dataset?.modifier ?? 1);\n\t\tdeltaX = deltaX * (e.repeat ? modifier : 1);\n\t\tdeltaY = deltaY * (e.repeat ? modifier : 1);\n\n\t\tif (args.resizeTarget) {\n\t\t\targs.resizeTarget.dataset.modifier = e.repeat ? modifier + 1 : 1;\n\t\t}\n\n\t\treturn update({\n\t\t\t...args,\n\t\t\tsource,\n\t\t\tsourceWidth,\n\t\t\tsourceHeight,\n\t\t\tsourceTop,\n\t\t\tsourceLeft,\n\t\t\tdeltaX,\n\t\t\tdeltaY,\n\t\t});\n\t}\n\n\tsource = e\n\t\t.composedPath()\n\t\t.find((e) => e?.classList?.contains('now-resizable-target'))\n\t\t?.classList?.[2];\n\n\treturn mouseResize(e, {\n\t\t...args,\n\t\tsource,\n\t\tsourceWidth,\n\t\tsourceHeight,\n\t\tsourceTop,\n\t\tsourceLeft,\n\t\ttooltip: '',\n\t});\n};\n","import {createCustomElement} from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_resizable-target.scss';\nimport {t} from 'sn-translate';\nimport {emitEnd, startResize} from './utils';\nimport tooltipBehavior, {\n\tTOOLTIP_ADD_TARGET,\n\tTOOLTIP_REMOVE_TARGET,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\n\nconst TOOLTIP = t('Space or enter to resize.');\nconst ACTIVE_TOOLTIP = t(\n\t'Arrow keys increase size. Shift + Arrow keys decrease.',\n);\n\nconst view = ({active, tooltip, properties: {dir, context}}, {dispatch}) => {\n\treturn (\n\t\t<div class={{'now-resizable': true, 'is-active': active}}>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-inline': true,\n\t\t\t\t\t'-right': true,\n\t\t\t\t\t'-cursor': !(context === 'normal' && dir === 'rtl'),\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-inline': true,\n\t\t\t\t\t'-left': true,\n\t\t\t\t\t'-cursor': !(context === 'normal' && dir === 'ltr'),\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-block': true,\n\t\t\t\t\t'-top': true,\n\t\t\t\t\t'-cursor': context !== 'normal',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-block': true,\n\t\t\t\t\t'-bottom': true,\n\t\t\t\t\t'-cursor': true,\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-corner': true,\n\t\t\t\t\t'-top-left': true,\n\t\t\t\t\t'-cursor': context !== 'normal',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-corner': true,\n\t\t\t\t\t'-top-right': true,\n\t\t\t\t\t'-cursor': context !== 'normal',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-corner': true,\n\t\t\t\t\t'-bottom-left': dir === 'ltr',\n\t\t\t\t\t'-bottom-right': dir === 'rtl',\n\t\t\t\t\t'-cursor': context !== 'normal',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-corner': true,\n\t\t\t\t\t'-bottom-left': dir === 'rtl',\n\t\t\t\t\t'-bottom-right': dir === 'ltr',\n\t\t\t\t\t'-cursor': true,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-resizable-target-button': true,\n\t\t\t\t\t\t'is-selected': active,\n\t\t\t\t\t}}\n\t\t\t\t\tdata-tooltip={tooltip}\n\t\t\t\t\thook-insert={({elm: target}) => {\n\t\t\t\t\t\tdispatch(TOOLTIP_ADD_TARGET, {target});\n\t\t\t\t\t}}\n\t\t\t\t\thook-destroy={({elm: target}) => {\n\t\t\t\t\t\tdispatch(TOOLTIP_REMOVE_TARGET, {target});\n\t\t\t\t\t}}\n\t\t\t\t\taria-label={tooltip}\n\t\t\t\t\taria-pressed={active ? 'true' : 'false'}\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\tattr-width=\"12\"\n\t\t\t\t\t\tattr-height=\"12\"\n\t\t\t\t\t\tattr-viewBox=\"0 0 12 12\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\tattr-d=\"M10.8536 1.14645C11.0488 1.34171 11.0488 1.65829 10.8536 1.85355L1.85355 10.8536C1.65829 11.0488 1.34171 11.0488 1.14645 10.8536C0.951184 10.6583 0.951184 10.3417 1.14645 10.1464L10.1464 1.14645C10.3417 0.951184 10.6583 0.951184 10.8536 1.14645ZM10.8536 6.14645C11.0488 6.34171 11.0488 6.65829 10.8536 6.85355L6.85355 10.8536C6.65829 11.0488 6.34171 11.0488 6.14645 10.8536C5.95118 10.6583 5.95118 10.3417 6.14645 10.1464L10.1464 6.14645C10.3417 5.95118 10.6583 5.95118 10.8536 6.14645Z\"\n\t\t\t\t\t\t\tfill=\"black\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-resizable-target', {\n\trenderer: {type: snabbdom},\n\tproperties: {\n\t\tdir: {\n\t\t\tget default() {\n\t\t\t\treturn document.dir || 'ltr';\n\t\t\t},\n\t\t\treflect: true,\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\tcontext: {\n\t\t\tdefault: 'normal',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['normal', 'float', 'fixed'],\n\t\t\t},\n\t\t},\n\t\tresizeTarget: {default: null},\n\t\tresizableMaxWidth: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: ['integer', 'null'],\n\t\t\t},\n\t\t},\n\t\tresizableMaxHeight: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: ['integer', 'null'],\n\t\t\t},\n\t\t},\n\t\tresizableMinWidth: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: ['integer', 'null'],\n\t\t\t},\n\t\t},\n\t\tresizableMinHeight: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: ['integer', 'null'],\n\t\t\t},\n\t\t},\n\t},\n\tsetInitialState() {\n\t\treturn {\n\t\t\tactive: false,\n\t\t\ttooltip: TOOLTIP,\n\t\t};\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['mousedown'],\n\t\t\teffect({\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {event},\n\t\t\t\t},\n\t\t\t\tdispatch,\n\t\t\t\tproperties,\n\t\t\t\tupdateState,\n\t\t\t}) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst {\n\t\t\t\t\tcontext,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t\tdir,\n\t\t\t\t} = properties;\n\n\t\t\t\tstartResize(event, {\n\t\t\t\t\tcontext,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tdir,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tevents: ['keydown', 'keyup'],\n\t\t\teffect({\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {event},\n\t\t\t\t},\n\t\t\t\tdispatch,\n\t\t\t\tproperties,\n\t\t\t\tstate,\n\t\t\t\tupdateState,\n\t\t\t}) {\n\t\t\t\tconst {key} = event;\n\t\t\t\tconst {active} = state;\n\n\t\t\t\t// actuate the resizable beahvior\n\t\t\t\tif (['Enter', ' '].includes(key) && event.type === 'keydown') {\n\t\t\t\t\treturn updateState({\n\t\t\t\t\t\tactive: !active,\n\t\t\t\t\t\ttooltip: active ? TOOLTIP : ACTIVE_TOOLTIP,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// disable active state if they tab away or using escape\n\t\t\t\tif (active && ['Tab', 'Escape'].includes(key)) {\n\t\t\t\t\t// do not prevent default in this case as we want tab and escape to work\n\t\t\t\t\treturn updateState({\n\t\t\t\t\t\tactive: !active,\n\t\t\t\t\t\ttooltip: TOOLTIP,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!active ||\n\t\t\t\t\t!['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(key)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst {\n\t\t\t\t\tcontext,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t} = properties;\n\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\treturn emitEnd(dispatch, {\n\t\t\t\t\t\tresizeTarget,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\ttooltip: ACTIVE_TOOLTIP,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault(); // prevent scroll effects when we are trying to resize\n\t\t\t\tstartResize(event, {\n\t\t\t\t\tcontext,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t\tupdateState,\n\t\t\t\t\ttooltip: ACTIVE_TOOLTIP,\n\t\t\t\t});\n\n\t\t\t\t// TODO port over aria logic - probably should use new seismic aria live feature\n\t\t\t\t// @ui-core -> actionTypes -> ARIA_LIVE_REGION_UPDATE_REQUESTED -> disaptch({message, type})\n\t\t\t},\n\t\t},\n\t],\n\tview,\n\tstyles,\n\tbehaviors: [tooltipBehavior],\n});\n","import {actionTypes} from '@servicenow/ui-core';\nimport './components/resizable-target';\nconst {COMPONENT_DOM_TREE_READY, COMPONENT_PROPERTY_CHANGED} = actionTypes;\n\nconst DEFAULT_ENBALED = false;\nconst DEFAULT_MIN_WIDTH = 0;\nconst DEFAULT_MAX_WIDTH = null; // null means it will honor the viewport at the time of calc\nconst DEFAULT_MIN_HEIGHT = 0;\nconst DEFAULT_MAX_HEIGHT = null; // null means it will honor the viewport at the time of calc\nconst DEFAULT_CONTEXT = 'normal';\nlet RESIZABLE_TARGET_NODES = new Map();\n\nexport default {\n\tname: 'resizableBehavior',\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY]: (coeffects) => {\n\t\t\tconst {action, host} = coeffects;\n\t\t\tconst {resizeTarget: target, getResizableConfig} = action.payload.options;\n\n\t\t\tconst config = getResizableConfig ? getResizableConfig(coeffects) : null;\n\n\t\t\tlet {\n\t\t\t\tenableResizable = DEFAULT_ENBALED,\n\t\t\t\tcontext = DEFAULT_CONTEXT,\n\t\t\t\tresizableMaxWidth = DEFAULT_MAX_WIDTH,\n\t\t\t\tresizableMinWidth = DEFAULT_MIN_WIDTH,\n\t\t\t\tresizableMaxHeight = DEFAULT_MAX_HEIGHT,\n\t\t\t\tresizableMinHeight = DEFAULT_MIN_HEIGHT,\n\t\t\t} = config ?? {};\n\n\t\t\tif (!enableResizable) return;\n\n\t\t\tconst resizeTarget = host?.shadowRoot?.querySelector(target) ?? host;\n\n\t\t\tif (!resizeTarget) return;\n\n\t\t\tconst latestTargetNode = Object.assign(\n\t\t\t\tdocument.createElement('now-resizable-target'),\n\t\t\t\t{\n\t\t\t\t\tcontext,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t},\n\t\t\t);\n\t\t\tRESIZABLE_TARGET_NODES.set(host, latestTargetNode);\n\t\t\tresizeTarget.appendChild(latestTargetNode);\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: (coeffects) => {\n\t\t\tconst {action, host, properties} = coeffects;\n\t\t\tconst {resizeTarget: target} = action.payload.options;\n\t\t\tif (target !== '.now-modeless-dialog') return;\n\n\t\t\tconst resizeTarget = host?.shadowRoot?.querySelector(target) ?? host;\n\t\t\tconst isFullscreen = resizeTarget?.classList?.contains('is-fullscreen');\n\t\t\tconst resizeTargetNode = RESIZABLE_TARGET_NODES.get(host);\n\t\t\tconst shouldResize =\n\t\t\t\tproperties?.resizableConfig?.enableResizable ?? false;\n\n\t\t\tconst canResize = resizeTargetNode === resizeTarget.lastChild;\n\t\t\tif ((canResize && isFullscreen) || !shouldResize) {\n\t\t\t\tresizeTarget.removeChild(resizeTargetNode);\n\t\t\t} else if (!isFullscreen && resizeTargetNode && shouldResize) {\n\t\t\t\tresizeTarget.appendChild(resizeTargetNode);\n\t\t\t}\n\t\t},\n\t\t'PRIVATE#RESIZABLE_END': {\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the resize of the component has ended.\n\t\t * Payload contains a reference to the targets size and position.\n\t\t * @type {{width: number, height: number, left: number, top: number}}\n\t\t * @uib.description Dispatched when resize of the component has ended.\n\t\t */\n\t\t'PRIVATE#RESIZABLE_END': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\twidth: {type: 'number'},\n\t\t\t\t\theight: {type: 'number'},\n\t\t\t\t\tleft: {type: 'number'},\n\t\t\t\t\ttop: {type: 'number'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n};\n","import {actionTypes} from '@servicenow/ui-core';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\n\nconst {COMPONENT_DISCONNECTED, COMPONENT_RENDER_REQUESTED} = actionTypes;\nconst BEHAVIOR_NAME = 'resize';\nconst globalResizeBehaviorTimer =\n\tNumber(window?.ux_globals?.nds?.sysprops?.resize_timer) || 50;\n\nconst getTimerSysProps = (componentName) => {\n\tif (\n\t\t!window?.ux_globals?.nds?.sysprops?.[componentName]?.resize_timer ||\n\t\t!componentName\n\t) {\n\t\treturn null;\n\t}\n\treturn Number(window.ux_globals.nds.sysprops[componentName].resize_timer);\n};\n\n// exported for testing\nexport const CALLBACK = Symbol();\nexport const TARGET = Symbol();\n\nconst resize = new ResizeObserver((entries) => {\n\tfor (const entry of entries) {\n\t\tlet {\n\t\t\ttarget,\n\t\t\tcontentRect: {width, height},\n\t\t} = entry;\n\n\t\tif (target.clientHeight !== target.scrollHeight) {\n\t\t\twidth += target.offsetWidth - target.clientWidth;\n\t\t}\n\t\ttarget[CALLBACK]({width, height});\n\t}\n});\n\nconst getTimerFn = (type) => {\n\tswitch (type) {\n\t\tcase 'throttle':\n\t\t\treturn throttle;\n\t\tcase 'debounce':\n\t\tdefault:\n\t\t\treturn debounce;\n\t}\n};\n\nconst observe = ({host, options, dispatch}) => {\n\t// when hoisted, we want to observe the <seismic-hoist /> node rather\n\t// than the original host.\n\tlet target = host.nowRootNode.host;\n\tconst {resizeTarget} = options;\n\n\tif (resizeTarget) {\n\t\ttarget = host?.shadowRoot?.querySelector(resizeTarget);\n\t}\n\n\tif (host[TARGET] !== target) {\n\t\tunobserve(host);\n\t\thost[TARGET] = target;\n\n\t\tconst {type = 'debounce'} = options.timer || {};\n\t\t/**\n\t\t * following order of preference for the timer (ms)\n\t\t * - component sys property if defined, e.g. 'window.ux_globals?.nds.sysprops.['now-tabs'].resize_timer'\n\t\t * - value defined in behavior option, if given\n\t\t * - global timer sys property if defined, e.g. 'window.ux_globals?.nds.sysprops.resize_timer'\n\t\t * - default hardcoded: 50\n\t\t */\n\t\tconst componentName = (resizeTarget ? host : target)?.tagName.toLowerCase();\n\t\tconst componentTimerSysProp = getTimerSysProps(componentName);\n\t\tconst waitOption = options?.timer?.wait;\n\t\tlet resizeBehaviorTimer = componentTimerSysProp || waitOption;\n\t\tif (!resizeBehaviorTimer) {\n\t\t\tresizeBehaviorTimer = globalResizeBehaviorTimer;\n\t\t}\n\t\tconst timerFn = getTimerFn(type);\n\t\tconst dispatchSize = (payload) => {\n\t\t\tconst {shouldDispatch} = options;\n\t\t\tconst dispatchNeeded =\n\t\t\t\ttypeof shouldDispatch === 'function' ? shouldDispatch(payload) : true;\n\n\t\t\tif (dispatchNeeded) {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_RESIZE#ELEMENT_RESIZED',\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst leadTrailOptions = {};\n\n\t\tif (options && options.timer) {\n\t\t\t// only add them if provided to not override lodash defaults\n\t\t\t// eslint-disable-next-line no-prototype-builtins\n\t\t\tif (options.timer.hasOwnProperty('trailing')) {\n\t\t\t\tleadTrailOptions.trailing = options.timer.trailing;\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-prototype-builtins\n\t\t\tif (options.timer.hasOwnProperty('leading')) {\n\t\t\t\tleadTrailOptions.leading = options.timer.leading;\n\t\t\t}\n\t\t}\n\n\t\tif (options.preventRenderUntilSizeAvailable) {\n\t\t\t// don't debounce/throttle the first measurement\n\t\t\ttarget[CALLBACK] = (payload) => {\n\t\t\t\tdispatchSize(payload);\n\t\t\t\ttarget[CALLBACK] = timerFn(\n\t\t\t\t\tdispatchSize,\n\t\t\t\t\tresizeBehaviorTimer,\n\t\t\t\t\tleadTrailOptions,\n\t\t\t\t);\n\t\t\t};\n\t\t} else {\n\t\t\ttarget[CALLBACK] = timerFn(\n\t\t\t\tdispatchSize,\n\t\t\t\tresizeBehaviorTimer,\n\t\t\t\tleadTrailOptions,\n\t\t\t);\n\t\t}\n\t\tresize.observe(target);\n\t}\n};\n\nconst unobserve = (host) => {\n\tif (host[TARGET]) {\n\t\tresize.unobserve(host[TARGET]);\n\t\tdelete host[TARGET];\n\t}\n};\n\n/**\n * Determines whether the render is allowed given a size update and options (in particular preventRender)\n * @param {*} width\n * @param {*} height\n * @param {*} oldWidth\n * @param {*} oldHeight\n * @param {*} options\n * @returns true if update should render, false otherwise\n */\nconst isRenderAllowed = (width, height, oldWidth, oldHeight, options) => {\n\tlet shouldRender = true;\n\tconst prevent = options ? options.preventRender : false;\n\n\tif (prevent) {\n\t\tif (prevent === true) {\n\t\t\tshouldRender = false;\n\t\t} else if (typeof prevent === 'object') {\n\t\t\tif (prevent.width !== prevent.height) {\n\t\t\t\t// either width or height is prevented\n\t\t\t\tif (prevent.width) {\n\t\t\t\t\tshouldRender = height !== oldHeight;\n\t\t\t\t} else {\n\t\t\t\t\tshouldRender = width !== oldWidth;\n\t\t\t\t}\n\t\t\t} else if (prevent.width) {\n\t\t\t\t// both prevented\n\t\t\t\tshouldRender = false;\n\t\t\t} else {\n\t\t\t\t// both not prevented\n\t\t\t\tshouldRender = true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn shouldRender;\n};\n\n/**\n * This behavior measures the height and width of components dynamically and\n * adds those measurements to state. This helps components that need to know\n * their size to determine what to show/hide, and need to update dynamically.\n *\n * You probably don't need this behavior. See **This should be your last\n * resort** for details.\n *\n * See the **How it works** section below for restrictions and performance\n * details.\n *\n * **Register behavior**\n *\n * After installation import the behavior at the top of your component JS file\n * and register it in your component behaviors list:\n *\n * ```js\n * import resizeBehavior from '@servicenow/behavior-resize';\n *\n * createCustomElement('sn-example', {\n *   renderer: {\n *     type: snabbdom,\n *     view: (state) => {\n *       const {width, height} = state.behaviors.resize.size;\n *       // These will be `null` initially. When the component first attaches it'll\n *       // re-render with integer values in pixels (e.g. `width === 100`).\n *       // When the component's width is changed it'll re-render again with the\n *       // new integer values.\n *     }\n *   },\n *   behaviors: [{behavior: resizeBehavior}]\n * });\n * ```\n *\n * See `example/sn-example-resize.js` for a more complete example.\n *\n * **Configuration options**\n *\n * The following options can be used to configure the behavior\n *\n * - `[timer={}] (Object)` - configures the timer used debounce/throttle invocation of the resize observer\n * - `[timer.type=\"debounce\"] (string)` - the type of timer to use, \"debounce\" or \"throttle\"\n * - `[timer.wait=20] (number)` - milliseconds to delay invocation of observer\n * - `[timer.leading=true] (bool)` - Whether to invoke the debounced/throttle function on the leading edge. False by default for debounce, true by default for throttle\n * - `[timer.trailing=true] (bool)` - Whether to invoke the debounced/throttle function on the trailing edge. True by default. Note: If both leading and trailing options are true, func is invoked on the trailing edge of the timeout only if the function is invoked more than once during the wait timeout.\n * - `[componentManaged=false]` - if true then the behavior won't automatically observer/unobserve and the component is reponsible for turning it ON and OFF through `NOW_RESIZE#ENABLE` and 'NOW_RESIZE#DISABLE'\n * - `[preventRender=false] (bool or Object)` - if a boolean then true means that any size update in the state won't trigger a render. If an object then it can have `height` or `width` as a key, with a boolean value, to respectively prevent rendering on height and width size update\n * - `[preventRenderUntilSizeAvailable=false] (bool)` - when set to true the behavior will prevent the component from rendering until an initial size is available\n * - `[shouldDispatch] (function)` - when this function returns true, the behavior will dispatch ELEMENT_RESIZED action else not.\n * - `[resizeTarget] (string)` - a selector to query the target element to observe. If not provided, the host element is observed.\n * Configuration example:\n *\n * ```js\n * import resizeBehavior from '@servicenow/behavior-resize';\n *\n * createCustomElement('sn-foo', {\n *   ...\n *   behaviors: [{\n *     behavior: resizeBehavior,\n *     options: {timer: {type: 'throttle', wait: 200}}\n *   }]\n * });\n * ```\n *\n * **How it works**\n *\n * This behavior is based on the [ResizeObserver browser specification](https://www.google.com/search?q=resizeobserver&oq=resizeobserver&aqs=chrome.0.69i59l2j0l2j69i61j69i60.3313j0j7&sourceid=chrome&ie=UTF-8).\n * The behavior will use the browser's native ResizeObserver if the browser has\n * that feature.\n *\n * For older browsers, it falls back to using MutationObserver and dirty\n * checking to react to component size changes. It currently uses the\n * [resize-observer-polyfill](https://github.com/que-etc/resize-observer-polyfill)\n * for fallback, but we may change that out to improve performance in the\n * future. This is unlikely to break the API but may lead to slight timing\n * differences for older browsers only.\n *\n * **This should be your last resort**\n *\n * Measuring things is expensive. You probably don't need to use this behavior\n * to measure things. Try every other recourse before you use this behavior. Use\n * CSS media queries instead. Or use CSS flex/truncation behaviors to closely\n * simulate what you're trying to do. No matter how performant we try to make\n * this behavior, it'll always cause a performance hit when a lot of elements on\n * the page use it.\n *\n * **Component requirements**\n *\n * To use this behavior your component MUST meet the following criteria:\n *\n * - Its CSS `display` value can't be `inline` or `inline-*`. Use a non-inline\n * value like `block` or `flex`.\n * - It can't change its size dynamically based on its measured width/height if\n * in the flow of the document. When it renders in response to a width/height\n * change it can't change its size, otherwise it'll go into an infinite loop.\n * For example, if you want to truncate text based on the width of the\n * component, you should set the text container to a non-auto width and height\n * to ensure that the truncation doesn't cause a resize, which triggers another\n * truncation.\n * - It's nice if the component isn't usually stretched across the full viewport\n * width. If many components stretched across the full viewport width use this\n * behavior it can lead to jank and dropped frames when the user resizes the\n * browser or animates a page out of visibility.\n * - In the componentManaged resize behavior, if the behaviour is dynamically\n * added within the COMPONENT_CONNECTED lifecycle, the width and height might\n * not be accessible during the initial rendering of the view. This could result\n * in the component receiving null values for width/height since the behavior\n * may not be initialized prior to the view method being invoked.\n * Consequently, the component's rendering could be delayed, as the actual dimensions\n * will only be supplied by the resize behavior after some time has passed. To address\n * this issue, you may want to explicitly compute the width/height during the\n * COMPONENT_TREE_RENDERED lifecycle to prevent any delays in rendering the component.\n * For additional information, please refer to buildtools1/DEF0395251.\n *\n * @seismicBehavior resizeBehavior\n * @summary Measures the height/width of components and adds values to state\n */\nexport default {\n\tname: BEHAVIOR_NAME,\n\tinitialState: {\n\t\tsize: {\n\t\t\twidth: null,\n\t\t\theight: null,\n\t\t},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_RENDER_REQUESTED]: ({action, state, host, dispatch}) => {\n\t\t\tconst {options} = action.payload,\n\t\t\t\tcurrentWidth = state.behaviors[BEHAVIOR_NAME].size.width,\n\t\t\t\tcurrentHeight = state.behaviors[BEHAVIOR_NAME].size.height;\n\t\t\tif (!options.componentManaged) {\n\t\t\t\tobserve({host, options, dispatch});\n\t\t\t}\n\t\t\tif (\n\t\t\t\toptions.preventRenderUntilSizeAvailable &&\n\t\t\t\t!currentWidth &&\n\t\t\t\tcurrentWidth !== 0 &&\n\t\t\t\t!currentHeight &&\n\t\t\t\tcurrentHeight !== 0\n\t\t\t) {\n\t\t\t\taction.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({host, action}) => {\n\t\t\tif (!action.payload.options.componentManaged) {\n\t\t\t\tunobserve(host);\n\t\t\t}\n\t\t},\n\t\t'NOW_RESIZE#ENABLE': ({host, dispatch, action}) => {\n\t\t\tconst {options} = action.payload;\n\t\t\tobserve({host, dispatch, options});\n\t\t},\n\t\t'NOW_RESIZE#DISABLE': ({host}) => {\n\t\t\tunobserve(host);\n\t\t},\n\t\t'NOW_RESIZE#ELEMENT_RESIZED': {\n\t\t\t// ensure no parents get the action\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({updateState, action, state}) => {\n\t\t\t\tconst {width, height, options} = action.payload;\n\n\t\t\t\tlet shouldRender = isRenderAllowed(\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tstate.behaviors[BEHAVIOR_NAME].size.width,\n\t\t\t\t\tstate.behaviors[BEHAVIOR_NAME].size.height,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\n\t\t\t\tupdateState(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tpath: `behaviors.${BEHAVIOR_NAME}.size`,\n\t\t\t\t\t\tvalue: {width, height},\n\t\t\t\t\t\tshouldRender,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t},\n};\n","const BEHAVIOR_NAME = 'rtl';\n\n/**\n * This behavior helps style Now Design System components in right-to-left (RTL) layouts.\n * It sets the component host's `dir` attribute based on the `document.dir` of\n * its parent application. If `document.dir` is not explicitly defined, it will\n * set the component host's `dir` attribute to `'ltr'` by default.\n *\n * After installation import the behavior at the top of your component JS file\n * and register it in your component behaviors list:\n *\n * ```js\n * import rtlBehavior from '@servicenow/behavior-rtl';\n *\n * createCustomElement('sn-example', {\n *   // ...\n *   behaviors: [{behavior: rtlBehavior}]\n * });\n * ```\n *\n * For more information about styling RTL components, see the\n * [Design System internationalization guide](https://emotive.servicenow.com/develop/resources/i18n).\n *\n * @seismicBehavior rtlBehavior\n * @summary Sets the component host's `dir` attribute to support right-to-left layouts\n */\nexport default {\n\tname: BEHAVIOR_NAME,\n\tproperties: {\n\t\tdir: {\n\t\t\tget default() {\n\t\t\t\treturn document.dir || 'ltr';\n\t\t\t},\n\t\t\treflect: true,\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t},\n};\n","const JSON_LITERAL = 'JSON_LITERAL';\nconst SHORTHAND = 'SHORTHAND';\nconst CONTEXT_BINDING = 'CONTEXT_BINDING';\nconst STATE_BINDING = 'STATE_BINDING';\nconst ELEMENT_BINDING = 'ELEMENT_BINDING';\nconst DATA_CHAIN_BINDING = 'DATA_CHAIN_BINDING';\nconst DATA_OUTPUT_BINDING = 'DATA_OUTPUT_BINDING';\nconst EVENT_PAYLOAD_BINDING = 'EVENT_PAYLOAD_BINDING';\nconst VIEWPORT_BINDING = 'VIEWPORT_BINDING';\nconst REPEATER_ITEM_BINDING = 'REPEATER_ITEM_BINDING';\nconst ENV_BINDING = 'ENV_BINDING';\nconst CLIENT_TRANSFORM = 'CLIENT_TRANSFORM';\nexport const CLIENT_TRANSFORM_SCRIPT = 'CLIENT_TRANSFORM_SCRIPT';\nconst BINARY = 'BINARY';\nconst UNARY = 'UNARY';\nconst RUNTIME_INLINE_SCRIPT = 'RUNTIME_INLINE_SCRIPT';\nconst MAP_CONTAINER = 'MAP_CONTAINER';\nconst LIST_CONTAINER = 'LIST_CONTAINER';\nconst TRANSLATION_LITERAL = 'TRANSLATION_LITERAL';\nconst RT_CLIENT_RESPONSIVE_QUERY = 'RT_CLIENT_RESPONSIVE_QUERY';\nconst UXF_VIEWPORT_RENDER = 'UXF_VIEWPORT#RENDER';\nconst UXF_VIEWPORT_RENDER_BY_ID = 'UXF_VIEWPORT#RENDER_BY_ID';\nconst UXF_VIEWPORT_DISMISS = 'UXF_VIEWPORT#DISMISS';\nconst UXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED =\n\t'UXF_VIEWPORT#SCRIPTED_CONDITIONS_EVALUATION_REQUESTED';\nconst UXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED =\n\t'UXF_VIEWPORT#SCRIPTED_CONDITIONS_EVALUATION_COMPLETED';\nconst UXF_VIEWPORT_CALCULATE_ROUTES = 'UXF_VIEWPORT#CALCULATE_ROUTES';\nconst UXF_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED =\n\t'UXF_VIEWPORT#ROUTE_INITIALIZATION_COMPLETED';\nconst UXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED =\n\t'UXF_VIEWPORT#ROUTE_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED';\nconst UXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED =\n\t'UXF_VIEWPORT#ROUTE_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED';\nconst VIEWPORT_ROUTE_REQUESTED = 'VIEWPORT_ROUTE_REQUESTED';\nexport const SCREEN_INTERACTION_ID_UPDATE_REQUESTED =\n\t'UXR_INTERNAL#SCREEN_INTERACTION_ID_UPDATE_REQUESTED';\n\nexport const propertyTypes = {\n\tCONTEXT_BINDING,\n\tSTATE_BINDING,\n\tELEMENT_BINDING,\n\tJSON_LITERAL,\n\tSHORTHAND,\n\tDATA_CHAIN_BINDING,\n\tDATA_OUTPUT_BINDING,\n\tEVENT_PAYLOAD_BINDING,\n\tVIEWPORT_BINDING,\n\tREPEATER_ITEM_BINDING,\n\tCLIENT_TRANSFORM,\n\tCLIENT_TRANSFORM_SCRIPT,\n\tBINARY,\n\tUNARY,\n\tRUNTIME_INLINE_SCRIPT,\n\tMAP_CONTAINER,\n\tLIST_CONTAINER,\n\tTRANSLATION_LITERAL,\n\tRT_CLIENT_RESPONSIVE_QUERY,\n\tENV_BINDING\n};\n\nconst SCRIPT_EXEC_REQUESTED = 'UXF_INTERNAL#SCRIPT_EXEC_REQUESTED';\nconst MACROPONENT_STATE_UPDATED = 'UXF_INTERNAL#MACROPONENT_STATE_UPDATED';\nconst WRAPPED_EVENT_REDISPATCH = 'UXF_INTERNAL#WRAPPED_EVENT_REDISPATCH';\nconst CONTROLLER_PROP_RESOLVED = 'UXF_INTERNAL#CONTROLLER_PROP_RESOLVED';\nconst CONTROLLER_PROP_CHANGED = 'UXF_INTERNAL#CONTROLLER_PROP_CHANGED';\nconst CONTROLLER_NODE_INSERTED = 'UXF_INTERNAL#CONTROLLER_NODE_INSERTED';\nexport const UXF_INTERNAL_SCREEN_MACROPONENT_IDLE =\n\t'UXF_INTERNAL#SCREEN_MACROPONENT_IDLE';\n\n// emitted by a Controller that has a dependency, handled internally, sends relay to parent\nexport const UXF_INTERNAL_DEPENDENCY_OP_REQUESTED =\n\t'UXF_INTERNAL#DEPENDENCY_OP_REQUESTED';\n// emitted by Parent (from child Controller), via parentDispatch, invokes dependency Controller's DB OP\nexport const UXF_INTERNAL_DEPENDENCY_OP_REQUEST_RELAYED =\n\t'UXF_INTERNAL#DEPENDENCY_OP_REQUEST_RELAYED';\nexport const DEPENDENCY_RELAY_EVENTS_ALLOWED_FROM_SCRIPT = {\n\tUXF_INTERNAL_DEPENDENCY_OP_REQUESTED,\n\tUXF_INTERNAL_DEPENDENCY_OP_REQUEST_RELAYED\n};\n\nconst MACROPONENT_READY = 'MACROPONENT_READY';\nconst MACROPONENT_PROPERTY_CHANGED = 'MACROPONENT_PROPERTY_CHANGED';\nconst MACROPONENT_VIEWPORT_LOAD_REQUESTED =\n\t'MACROPONENT_VIEWPORT_LOAD_REQUESTED';\nconst MACROPONENT_VIEWPORT_LOAD_COMPLETED =\n\t'MACROPONENT_VIEWPORT_LOAD_COMPLETED';\nconst MACROPONENT_STATE_UPDATE_REQUESTED = 'MACROPONENT_STATE_UPDATE_REQUESTED';\nconst MACROPONENT_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED =\n\t'MACROPONENT_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED';\nconst HTTP_ERROR_OCCURRED = 'HTTP_ERROR_OCCURRED';\nconst MACROPONENT_PAGE_ERROR_OCCURRED = 'MACROPONENT_PAGE_ERROR_OCCURRED';\nconst TRACK_USAGE_REQUESTED = 'MACROPONENT_TRACK_USAGE_REQUESTED';\nconst MACROPONENT_POPOVER_OPEN_REQUESTED = 'MACROPONENT_POPOVER_OPEN_REQUESTED';\nconst MACROPONENT_POPOVER_ERROR_OCCURRED = 'MACROPONENT_POPOVER_ERROR_OCCURRED';\nconst MACROPONENT_POPOVER_ERROR_OCCURRED_DEPRECATED =\n\t'MACROPONENT_POPOVER_ERROR_OCCURRRED';\nconst OPEN_MODELESS_DIALOG = 'UXF#OPEN_DIALOG';\nconst CLOSE_MODELESS_DIALOG = 'UXF#CLOSE_DIALOG_ON_STAGE';\n\nconst MACROPONENT_FOCUSED = 'MACROPONENT_FOCUSED';\nconst MACROPONENT_FOCUS_ELEMENT_REQUESTED =\n\t'MACROPONENT_FOCUS_ELEMENT_REQUESTED';\nconst MACROPONENT_FOCUS_PARENT_REQUESTED = 'MACROPONENT_FOCUS_PARENT_REQUESTED';\n\nexport const UXF_TABSET_NON_VIEWPORT_CONTAINER_RENDER_REQUESTED =\n\t'UXF_TABSET_NON_VIEWPORT_CONTAINER_RENDER_REQUESTED';\n\nexport const UXF_MACROPONENT_OUTPUT_PROPERTY_UPDATED =\n\t'UXF_MACROPONENT#OUTPUT_PROPERTY_UPDATED';\n\nexport const MACROPONENT_DOMAIN_UPDATE_REQUESTED =\n\t'MACROPONENT_DOMAIN_UPDATE_REQUESTED';\n/**\n * actions handled by seismic - these are part of their public actions API\n * @see https://code.devsnc.com/dev/sn-seismic/blob/master/packages/core/src/utils/config/index.js\n * @see https://code.devsnc.com/dev/sn-seismic/blob/master/packages/core/src/accessibility/ariaLiveRegion.js\n */\nexport const SEISMIC_ARIA_LIVE_REGION_UPDATE_REQUESTED =\n\t'SEISMIC_ARIA_LIVE_REGION_UPDATE_REQUESTED';\nexport const publicSeismicActions = [SEISMIC_ARIA_LIVE_REGION_UPDATE_REQUESTED];\n\nexport const viewportActions = {\n\tUXF_VIEWPORT_RENDER,\n\tUXF_VIEWPORT_RENDER_BY_ID,\n\tUXF_VIEWPORT_DISMISS,\n\tUXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED,\n\tUXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED,\n\tUXF_VIEWPORT_CALCULATE_ROUTES,\n\tUXF_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED,\n\tUXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED,\n\tUXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED\n};\n\nexport const HEADLESS_VIEWPORT_COMPONENT_TAG = 'now-uxf-viewport';\nexport const HEADLESS_VIEWPORT_COMPONENT_PROP_VALUES = {\n\theadless: true\n};\n\nexport const internalActions = {\n\tSCRIPT_EXEC_REQUESTED,\n\tMACROPONENT_STATE_UPDATED,\n\tWRAPPED_EVENT_REDISPATCH,\n\tCONTROLLER_PROP_RESOLVED,\n\tCONTROLLER_PROP_CHANGED,\n\tCONTROLLER_NODE_INSERTED,\n\t...viewportActions\n};\n\nexport const componentViewportInternalActions = {\n\tVIEWPORT_ROUTE_REQUESTED\n};\n\nexport const MACROPONENT_FEATURES = {\n\tDATA_BROKERS: 'DATA_BROKERS',\n\tVIEWPORTS: 'VIEWPORTS',\n\tEVENT_MAPPING: 'EVENT_MAPPING'\n};\n\nexport const MACROPONENT_NODE_PROPERTIES = {\n\tDATA_BROKERS: 'dataBrokers',\n\tEVENT_MAPPINGS: 'eventMappings',\n\tIS_HEADLESS: 'isHeadless',\n\tIS_HERO: 'isHero',\n\tIS_HIDDEN: 'isHidden',\n\tIS_NON_DESTRUCTIVE: 'isNonDestructive',\n\tLAYOUT_JSON: 'layoutJson',\n\tNODE_ID: 'nodeId',\n\tPROPERTIES: 'properties',\n\tPROPERTY_VALUES: 'propertyValues',\n\tSHELL: 'shell',\n\tSLOT: 'slot',\n\tSLOT_META: 'slotMeta',\n\tSTATE_PROPERTIES: 'stateProperties',\n\tSTYLES: 'styles',\n\tTAG_NAME: 'tagName',\n\tTYPE: 'type'\n};\n\nexport const TABS_TYPE = {\n\tTEMPLATE: 'template'\n};\n\nexport const SLOT_TYPES = {\n\tTABS: 'tabs'\n};\n\nexport const UXF_META_PROP_NAME_PREFIX = 'now-uxf';\nexport const SELECTABLE_PROP_RESOLVER_PROP_NAME_PREFIX =\n\tUXF_META_PROP_NAME_PREFIX + '-spp';\n\nexport const DBK_NAMESPACE_PROP_NAME_PREFIX = UXF_META_PROP_NAME_PREFIX + '-db';\nexport const DBK_LIFECYCLE_FETCHING_KEY = 'fetching';\nexport const DBK_LIFECYCLE_FETCH_SUCCESS_KEY = 'fetch-success';\nexport const MODAL_SELECTED = 'MODAL_SELECTED';\nexport const MODAL_SELECTED_RELAY = 'MODAL_SELECTED_RELAY';\nexport const DA_WRAPPED_CLICKED = 'DA_WRAPPED_CLICKED';\n\n/**\n * Actions that the macroponent dispatches. Part of UXF's public API.\n * These don't bubble up and so far are limited to lifecycle-type actions.\n */\nexport const publicDispatchedActionNames = {\n\tMACROPONENT_READY,\n\tMACROPONENT_PROPERTY_CHANGED,\n\tMACROPONENT_VIEWPORT_LOAD_COMPLETED,\n\tMACROPONENT_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED,\n\tMACROPONENT_PAGE_ERROR_OCCURRED,\n\tMACROPONENT_POPOVER_ERROR_OCCURRED,\n\tMACROPONENT_POPOVER_ERROR_OCCURRED_DEPRECATED,\n\tMACROPONENT_FOCUSED,\n\tMACROPONENT_DOMAIN_UPDATE_REQUESTED\n};\n\n/**\n * Actions that the macroponent handles. Part of UXF's public API.\n */\nexport const publicActionHandlerNames = {\n\tMACROPONENT_STATE_UPDATE_REQUESTED,\n\tMACROPONENT_VIEWPORT_LOAD_REQUESTED,\n\tHTTP_ERROR_OCCURRED,\n\tTRACK_USAGE_REQUESTED,\n\tOPEN_MODELESS_DIALOG,\n\tCLOSE_MODELESS_DIALOG,\n\tMACROPONENT_POPOVER_OPEN_REQUESTED,\n\tMACROPONENT_FOCUS_ELEMENT_REQUESTED,\n\tMACROPONENT_FOCUS_PARENT_REQUESTED\n};\n\nexport const IS_INTERNAL_ACTION = Symbol('isUxfInternalAction');\n\nexport const IS_MACROPONENT_READY = Symbol('isReady');\n\nexport const MACROPONENT_INTERNAL_RESPONSIVE_STATE = Symbol(\n\t'nowUxfMacroponentResponsiveState'\n);\n\nexport const IS_SOURCED_FROM_SET_STATE = Symbol('isSourcedFromSetState');\nexport const IS_SOURCED_FROM_PERSISTED_STATE_CHANGE = Symbol(\n\t'isSourcedFromPersistedStateChange'\n);\n\nexport const SEISMIC_STATE_KEY_BEHAVIORS = 'behaviors';\n\nexport const CONTAINING_MACROPONENT_SYS_ID = Symbol(\n\t'DO_NOT_USE__uxfContainingMacropopnentSysId'\n);\n\nexport const COMPOSITION_ELEMENT_ID = Symbol('DO_NOT_USE__uxfCompositionElId');\n\nexport const REPEATER_ITEM = Symbol('repeaterItem');\n\nexport const SIGNAL_VIEWPORT_LOAD_COMPLETION = Symbol(\n\t'DO_NOT_USE__signalViewportLoadCompletion'\n);\n\nexport const SIGNAL_VIEWPORT_ROUTE_INITIALIZATION_COMPLETION = Symbol(\n\t'DO_NOT_USE__signalViewportRouteInitializationCompletion'\n);\n\nexport const SIGNAL_MACROPONENT_READY_STATE_UPDATED = Symbol(\n\t'DO_NOT_USE__signalMacroponentReadyStateUpdated'\n);\n\nexport const SIGNAL_MACROPONENT_READY_DISPATCHED = Symbol(\n\t'DO_NOT_USE__signalMacroponentReadyDispatched'\n);\n\nexport const SYMBOL_EVENT_MAPPING_SOURCE_IS_SCREEN_ACTION_TRANSFORMER = Symbol(\n\t'DO_NOT_USE__eventMappingSourceIsScreenActionTransformer'\n);\n\nexport const SYMBOL_EVENT_MAPPING_SOURCE_IS_FROM_SUB_PAGE = Symbol(\n\t'DO_NOT_USE__eventMappingSourceIsFromSubPage'\n);\nexport const SYMBOL_ORIGINATING_ELEMENT_ID_FOR_CONTROLLER_OP = Symbol(\n\t'DO_NOT_USE__originatingElementIdThatTriggeredControllerOp'\n);\n\nexport const CONTROLLER = 'CONTROLLER';\n\nexport const DATA_ELEMENT_ID = 'dataElemId';\n\nexport const MACROPONENT_ROOT_COMPONENT_ID = 'root';\n\nexport const CONTEXT_PROPS_IDENTIFIER = 'props';\n\nexport const APP_PROPS_IDENTIFIER = 'app';\n\nexport const STATE_IDENTIFIER = 'state';\n\nexport const SYS_PROPS_IDENTIFIER = 'sysprop';\n\nexport const DBK_OUTPUT_IDENTIFIER = 'output';\n\nexport const ELEMENTS_IDENTIFIER = 'elements';\n\nexport const DBK_LIFECYCLE_IDENTIFIER = 'lifecycle';\n\nexport const DBK_LIFECYCLE_FETCHING_IDENTIFIER = 'fetchInProgress';\n\nexport const DBK_LIFECYCLE_FETCH_SUCCESS_IDENTIFIER = 'lastFetchSucceeded';\n\nexport const SESSION = 'session';\n\nexport const UXF_VIEWPORT_SCREEN_TAG = 'sn-uxf-viewport-screen';\n\nexport const UXF_INTERNAL_EVENT_META = '__uxfMetaInternalOnlyDoNotUse';\n\nexport const UXF_THEME_UPDATED = '__DO_NOT_USE__UXF_INTERNAL#THEME_UPDATED';\n\nexport const LAYOUT_VERSION_3_0_0 = '3.0.0';\nexport const LAYOUT_VERSION_3_1_0 = '3.1.0';\n\nexport const META_PROP_NAME_APP_CONFIG_SYS_ID = 'nowUxfAppConfigSysId';\n\nexport const META_PROP_NAME_HYDRATION_KEY = 'nowUxfHydrationKey';\n\nexport const UXF_TYPE_VIEWPORT = 'VIEWPORT';\n\nexport const NOW_UXF_MODAL_VIEWPORT = 'now-uxf-modal-viewport';\n\nexport const NOW_UXF_TABSET = 'now-uxf-tab-set';\n\nexport const NOW_CONTEXTUAL_SIDEBAR = 'now-contextual-sidebar';\n\n// a collection of compontent tags that, when they are of\n// type \"VIEWPORT\", should not dispatch the UXF_VIEWPORT#RENDER_BY_ID\n// action when rendered. this is due to a race condition when attempting\n// to render a viewport that has not yet been initialized.\nexport const NOW_UXF_VIEWPORT_BLACKLIST = [\n\tNOW_UXF_MODAL_VIEWPORT,\n\tNOW_UXF_TABSET\n];\n\nexport const PRESET = 'preset';\n\nexport const HANDLING_SCOPE = '__uxfInternalHandlingScope__DO_NOT_USE';\nexport const UXF_INTERNAL_HANDLING_SCOPE_SAFETY = Symbol(HANDLING_SCOPE);\n\nexport const UXF_INTERNAL_RELAY_BY_SCREEN_ACTION_TRANSFORMER = Symbol(\n\t'__uxfInternalRelayByScreenActionTransformer__DO_NOT_USE'\n);\n\nexport const UXF_INTERNAL_ACTION_ORIGINATE = Symbol(\n\t'__uxfInternalActionOriginate__DO_NOT_USE'\n);\n\nexport const GLIDE_FORM_DATABROKER = 'dc6e87a5232200100e4bc50947bf654b';\n\nexport const META_PROP_NAME_STYLE_QUERIES = 'nowUxfStyleQueries';\n\nexport const META_PROP_NAME_PARENT_PAGE_COMPONENT_ID =\n\t'nowUxfParentPageComponentId';\nexport const META_PROP_NAME_PARENT_PAGE_MACROPONENT_SYS_ID =\n\t'nowUxfParentPageMacroponentSysId';\n\nexport const META_PROP_NAME_CONTROLLER_MAP = 'nowUxfControllerDependencyMap';\nexport const META_PROP_NAME_PARENT_CONTROLLER_DEPENDENCY_MAP =\n\t'nowUxfParentControllerDependencyMap';\nexport const META_PROP_NAME_SCREEN_CONTROLLER_MAP = 'nowUxfscreenControllerMap';\nexport const UXF_EXTENSION_POINT_SINGLE_CONTROLLER_DEPENDENCY_KEY =\n\t'controller';\n\nexport const INPUTS = 'inputs';\n\nexport const MACROPONENT_VALUE_UPDATED = 'SN_UXF#MACROPONENT_VALUE_UPDATED';\n\nexport const DEFAULT_LANG_CODE = 'en';\nexport const USER_PREF_LANG_HEADER = 'Now-User-Pref-Lang-Code';\n\nexport const MACROPONENT_TIME_TO_IDLE_MEASUREMENT_REQUESTED =\n\t'MACROPONENT_TIME_TO_IDLE_MEASUREMENT_REQUESTED';\nexport const MAX_WIDTH = 'max-width';\nexport const REFERENCE = 'reference';\n\nexport const PERSIST_STATE_CONSTANTS = {\n\tACTION_PERSIST_STATE: 'PERSIST_STATE',\n\tSINK_URL: 'URL',\n\tPERSIST_STATE_KEY: '_'\n};\nexport const META_PROP_NAME_PERSISTED_STATE = 'nowUxfPersistedState';\n\nexport const ATTR_PARENT_TAG = 'parent-tag';\nexport const NOW_UXF_PAGE = 'now-uxf-page';\n\nexport const SCREEN_ACTION_TRANSFORMER = 'screen-action-transformer';\n\nexport const ELEMENT_TYPES = {\n\tVIEWPORT: 'VIEWPORT',\n\tREPEATER: 'REPEATER'\n};\n\nconst PRIORITY = 'priority';\nconst LAZY = 'lazy';\n\nexport const renderStrategy = {\n\tPRIORITY,\n\tLAZY\n};\n","/*\n * # AUTO GENERATED\n *\n * The following hook definition files can be auto-generated by running the\n * command `.bin/theme-behavior-json` from the root of the design-system repo:\n *\n * - system.colors.js\n * - datavis.colors.js\n * - categories.js\n * - globals.js\n *\n * # COLOR HOOK SYNTAX\n *\n * Color hooks with initial do not inherit from other color hooks when not\n * defined in the application's theme. In the unlikely case they are not defined\n * in the theme they default to a real value (like #fff). They also don't have\n * different definitions for their light vs. dark theme.\n *\n * Color hooks with derived inherit from one or more other color hooks when\n * not defined in the application's theme. They generally (though not always)\n * have different definitions for light vs. dark theme.\n *\n * Examples:\n * - color.neutral0 --> #fff\n * - color.backgroundPrimary --[light]--> color.neutral0 --> #fff\n * - color.backgroundPrimary --[dark]---> color.neutral18 --> #161b1c\n */\n\nimport globals from './globals.js';\n// @TODO: Need dark derived, not just light derived. Using light for both\n// right now to simplify things. We don't strictly need dark theme in Quebec.\nimport systemColors from './system.colors.js';\nimport datavisColors from './datavis.colors.js';\nimport categories from './categories.js';\n\nexport default {\n\t...globals,\n\t...systemColors,\n\t...datavisColors,\n\t...categories,\n};\n","export default {\n\t\"--now-font-family\": {\n\t\t\"name\": \"fontFamily\",\n\t\t\"initial\": \"'Source Sans Pro', Arial, sans-serif\"\n\t},\n\t\"--now-font-size--lg\": {\n\t\t\"name\": \"fontSize.lg\",\n\t\t\"initial\": \"20px\"\n\t},\n\t\"--now-font-size--lg1\": {\n\t\t\"name\": \"fontSize.lg1\",\n\t\t\"initial\": \"24px\"\n\t},\n\t\"--now-font-size--lg2\": {\n\t\t\"name\": \"fontSize.lg2\",\n\t\t\"initial\": \"28px\"\n\t},\n\t\"--now-font-size--lg3\": {\n\t\t\"name\": \"fontSize.lg3\",\n\t\t\"initial\": \"32px\"\n\t},\n\t\"--now-font-size--md\": {\n\t\t\"name\": \"fontSize.md\",\n\t\t\"initial\": \"14px\"\n\t},\n\t\"--now-font-size--md1\": {\n\t\t\"name\": \"fontSize.md1\",\n\t\t\"initial\": \"16px\"\n\t},\n\t\"--now-font-size--md2\": {\n\t\t\"name\": \"fontSize.md2\",\n\t\t\"initial\": \"18px\"\n\t},\n\t\"--now-font-size--sm\": {\n\t\t\"name\": \"fontSize.sm\",\n\t\t\"initial\": \"12px\"\n\t},\n\t\"--now-font-size--xl\": {\n\t\t\"name\": \"fontSize.xl\",\n\t\t\"initial\": \"40px\"\n\t},\n\t\"--now-font-size--xl1\": {\n\t\t\"name\": \"fontSize.xl1\",\n\t\t\"initial\": \"48px\"\n\t},\n\t\"--now-font-size--xl2\": {\n\t\t\"name\": \"fontSize.xl2\",\n\t\t\"initial\": \"56px\"\n\t},\n\t\"--now-font-size--xl3\": {\n\t\t\"name\": \"fontSize.xl3\",\n\t\t\"initial\": \"64px\"\n\t},\n\t\"--now-font-size--xs\": {\n\t\t\"name\": \"fontSize.xs\",\n\t\t\"initial\": \"10px\"\n\t},\n\t\"$now-global-border-radius--lg\": {\n\t\t\"name\": \"global.borderRadius.lg\",\n\t\t\"initial\": \"8px\"\n\t},\n\t\"$now-global-border-radius--md\": {\n\t\t\"name\": \"global.borderRadius.md\",\n\t\t\"initial\": \"4px\"\n\t},\n\t\"$now-global-border-radius--sm\": {\n\t\t\"name\": \"global.borderRadius.sm\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"$now-global-drop-shadow--lg\": {\n\t\t\"name\": \"global.dropShadow.lg\",\n\t\t\"initial\": \"0 8px 12px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-drop-shadow--md\": {\n\t\t\"name\": \"global.dropShadow.md\",\n\t\t\"initial\": \"0 4px 8px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-drop-shadow--sm\": {\n\t\t\"name\": \"global.dropShadow.sm\",\n\t\t\"initial\": \"0 2px 4px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-drop-shadow--xl\": {\n\t\t\"name\": \"global.dropShadow.xl\",\n\t\t\"initial\": \"0 12px 16px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-drop-shadow--xxl\": {\n\t\t\"name\": \"global.dropShadow.xxl\",\n\t\t\"initial\": \"0 16px 24px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-font-size--lg\": {\n\t\t\"name\": \"global.fontSize.lg\",\n\t\t\"initial\": \"20px\"\n\t},\n\t\"$now-global-font-size--md\": {\n\t\t\"name\": \"global.fontSize.md\",\n\t\t\"initial\": \"16px\"\n\t},\n\t\"$now-global-font-size--sm\": {\n\t\t\"name\": \"global.fontSize.sm\",\n\t\t\"initial\": \"12px\"\n\t},\n\t\"$now-global-font-size--xl\": {\n\t\t\"name\": \"global.fontSize.xl\",\n\t\t\"initial\": \"24px\"\n\t},\n\t\"$now-global-font-size--xxl\": {\n\t\t\"name\": \"global.fontSize.xxl\",\n\t\t\"initial\": \"32px\"\n\t},\n\t\"$now-global-layer--modal\": {\n\t\t\"name\": \"global.layer.modal\",\n\t\t\"initial\": \"4000\"\n\t},\n\t\"$now-global-layer--nav\": {\n\t\t\"name\": \"global.layer.nav\",\n\t\t\"initial\": \"2000\"\n\t},\n\t\"$now-global-layer--notify\": {\n\t\t\"name\": \"global.layer.notify\",\n\t\t\"initial\": \"3000\"\n\t},\n\t\"$now-global-layer--temp\": {\n\t\t\"name\": \"global.layer.temp\",\n\t\t\"initial\": \"1000\"\n\t},\n\t\"$now-global-layer--tooltip\": {\n\t\t\"name\": \"global.layer.tooltip\",\n\t\t\"initial\": \"5000\"\n\t},\n\t\"$now-global-line-height\": {\n\t\t\"name\": \"global.lineHeight\",\n\t\t\"initial\": \"1.25\"\n\t},\n\t\"$now-global-line-height--sm\": {\n\t\t\"name\": \"global.lineHeightSm\",\n\t\t\"initial\": \"1.3333\"\n\t},\n\t\"$now-global-line-height-crop--after\": {\n\t\t\"name\": \"global.lineHeightCrop.after\",\n\t\t\"initial\": \"-0.125em\"\n\t},\n\t\"$now-global-line-height-crop--before\": {\n\t\t\"name\": \"global.lineHeightCrop.before\",\n\t\t\"initial\": \"-0.25em\"\n\t},\n\t\"$now-global-opacity--least\": {\n\t\t\"name\": \"global.opacity.least\",\n\t\t\"derived\": \"--now-opacity--least\"\n\t},\n\t\"$now-global-opacity--less\": {\n\t\t\"name\": \"global.opacity.less\",\n\t\t\"derived\": \"--now-opacity--less\"\n\t},\n\t\"$now-global-opacity--mid\": {\n\t\t\"name\": \"global.opacity.mid\",\n\t\t\"derived\": \"--now-opacity--mid\"\n\t},\n\t\"$now-global-opacity--more\": {\n\t\t\"name\": \"global.opacity.more\",\n\t\t\"derived\": \"--now-opacity--more\"\n\t},\n\t\"$now-global-opacity--most\": {\n\t\t\"name\": \"global.opacity.most\",\n\t\t\"derived\": \"--now-opacity--most\"\n\t},\n\t\"$now-global-scrollbar-width\": {\n\t\t\"name\": \"global.scrollbarWidth\",\n\t\t\"initial\": \"17px\"\n\t},\n\t\"$now-global-space--3xl\": {\n\t\t\"name\": \"global.space.3Xl\",\n\t\t\"initial\": \"40px\"\n\t},\n\t\"$now-global-space--lg\": {\n\t\t\"name\": \"global.space.lg\",\n\t\t\"initial\": \"16px\"\n\t},\n\t\"$now-global-space--md\": {\n\t\t\"name\": \"global.space.md\",\n\t\t\"initial\": \"12px\"\n\t},\n\t\"$now-global-space--sm\": {\n\t\t\"name\": \"global.space.sm\",\n\t\t\"initial\": \"8px\"\n\t},\n\t\"$now-global-space--xl\": {\n\t\t\"name\": \"global.space.xl\",\n\t\t\"initial\": \"24px\"\n\t},\n\t\"$now-global-space--xs\": {\n\t\t\"name\": \"global.space.xs\",\n\t\t\"initial\": \"4px\"\n\t},\n\t\"$now-global-space--xxl\": {\n\t\t\"name\": \"global.space.xxl\",\n\t\t\"initial\": \"32px\"\n\t},\n\t\"$now-global-space--xxs\": {\n\t\t\"name\": \"global.space.xxs\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-line-height-crop--after\": {\n\t\t\"name\": \"lineHeightCrop.after\",\n\t\t\"initial\": \"-0.125em\"\n\t},\n\t\"--now-line-height-crop--before\": {\n\t\t\"name\": \"lineHeightCrop.before\",\n\t\t\"initial\": \"-0.25em\"\n\t},\n\t\"--now-opacity--least\": {\n\t\t\"name\": \"opacity.least\",\n\t\t\"initial\": \"0.1\"\n\t},\n\t\"--now-opacity--less\": {\n\t\t\"name\": \"opacity.less\",\n\t\t\"initial\": \"0.25\"\n\t},\n\t\"--now-opacity--mid\": {\n\t\t\"name\": \"opacity.mid\",\n\t\t\"initial\": \"0.5\"\n\t},\n\t\"--now-opacity--more\": {\n\t\t\"name\": \"opacity.more\",\n\t\t\"initial\": \"0.65\"\n\t},\n\t\"--now-opacity--most\": {\n\t\t\"name\": \"opacity.most\",\n\t\t\"initial\": \"0.8\"\n\t}\n}","export default {\n\t\"--now-color_alert--critical-0\": {\n\t\t\"name\": \"color.alert.critical0\",\n\t\t\"initial\": \"241,206,205\"\n\t},\n\t\"--now-color_alert--critical-1\": {\n\t\t\"name\": \"color.alert.critical1\",\n\t\t\"initial\": \"221,133,129\"\n\t},\n\t\"--now-color_alert--critical-2\": {\n\t\t\"name\": \"color.alert.critical2\",\n\t\t\"initial\": \"200,60,54\"\n\t},\n\t\"--now-color_alert--critical-3\": {\n\t\t\"name\": \"color.alert.critical3\",\n\t\t\"initial\": \"160,48,43\"\n\t},\n\t\"--now-color_alert--critical-4\": {\n\t\t\"name\": \"color.alert.critical4\",\n\t\t\"initial\": \"120,36,32\"\n\t},\n\t\"--now-color_alert--critical-5\": {\n\t\t\"name\": \"color.alert.critical5\",\n\t\t\"initial\": \"80,24,22\"\n\t},\n\t\"--now-color_alert--high-0\": {\n\t\t\"name\": \"color.alert.high0\",\n\t\t\"initial\": \"247,228,200\"\n\t},\n\t\"--now-color_alert--high-1\": {\n\t\t\"name\": \"color.alert.high1\",\n\t\t\"initial\": \"234,186,117\"\n\t},\n\t\"--now-color_alert--high-2\": {\n\t\t\"name\": \"color.alert.high2\",\n\t\t\"initial\": \"221,145,34\"\n\t},\n\t\"--now-color_alert--high-3\": {\n\t\t\"name\": \"color.alert.high3\",\n\t\t\"initial\": \"177,116,27\"\n\t},\n\t\"--now-color_alert--high-4\": {\n\t\t\"name\": \"color.alert.high4\",\n\t\t\"initial\": \"133,87,20\"\n\t},\n\t\"--now-color_alert--high-5\": {\n\t\t\"name\": \"color.alert.high5\",\n\t\t\"initial\": \"88,58,14\"\n\t},\n\t\"--now-color_alert--info-0\": {\n\t\t\"name\": \"color.alert.info0\",\n\t\t\"initial\": \"195,221,240\"\n\t},\n\t\"--now-color_alert--info-1\": {\n\t\t\"name\": \"color.alert.info1\",\n\t\t\"initial\": \"104,171,218\"\n\t},\n\t\"--now-color_alert--info-2\": {\n\t\t\"name\": \"color.alert.info2\",\n\t\t\"initial\": \"14,120,196\"\n\t},\n\t\"--now-color_alert--info-3\": {\n\t\t\"name\": \"color.alert.info3\",\n\t\t\"initial\": \"11,96,157\"\n\t},\n\t\"--now-color_alert--info-4\": {\n\t\t\"name\": \"color.alert.info4\",\n\t\t\"initial\": \"8,72,118\"\n\t},\n\t\"--now-color_alert--info-5\": {\n\t\t\"name\": \"color.alert.info5\",\n\t\t\"initial\": \"6,48,78\"\n\t},\n\t\"--now-color_alert--low-0\": {\n\t\t\"name\": \"color.alert.low0\",\n\t\t\"initial\": \"217,217,217\"\n\t},\n\t\"--now-color_alert--low-1\": {\n\t\t\"name\": \"color.alert.low1\",\n\t\t\"initial\": \"159,159,159\"\n\t},\n\t\"--now-color_alert--low-2\": {\n\t\t\"name\": \"color.alert.low2\",\n\t\t\"initial\": \"102,102,102\"\n\t},\n\t\"--now-color_alert--low-3\": {\n\t\t\"name\": \"color.alert.low3\",\n\t\t\"initial\": \"82,82,82\"\n\t},\n\t\"--now-color_alert--low-4\": {\n\t\t\"name\": \"color.alert.low4\",\n\t\t\"initial\": \"61,61,61\"\n\t},\n\t\"--now-color_alert--low-5\": {\n\t\t\"name\": \"color.alert.low5\",\n\t\t\"initial\": \"41,41,41\"\n\t},\n\t\"--now-color_alert--moderate-0\": {\n\t\t\"name\": \"color.alert.moderate0\",\n\t\t\"initial\": \"212,213,243\"\n\t},\n\t\"--now-color_alert--moderate-1\": {\n\t\t\"name\": \"color.alert.moderate1\",\n\t\t\"initial\": \"148,149,225\"\n\t},\n\t\"--now-color_alert--moderate-2\": {\n\t\t\"name\": \"color.alert.moderate2\",\n\t\t\"initial\": \"84,86,207\"\n\t},\n\t\"--now-color_alert--moderate-3\": {\n\t\t\"name\": \"color.alert.moderate3\",\n\t\t\"initial\": \"67,69,166\"\n\t},\n\t\"--now-color_alert--moderate-4\": {\n\t\t\"name\": \"color.alert.moderate4\",\n\t\t\"initial\": \"50,52,124\"\n\t},\n\t\"--now-color_alert--moderate-5\": {\n\t\t\"name\": \"color.alert.moderate5\",\n\t\t\"initial\": \"34,34,83\"\n\t},\n\t\"--now-color_alert--positive-0\": {\n\t\t\"name\": \"color.alert.positive0\",\n\t\t\"initial\": \"201,224,202\"\n\t},\n\t\"--now-color_alert--positive-1\": {\n\t\t\"name\": \"color.alert.positive1\",\n\t\t\"initial\": \"119,178,123\"\n\t},\n\t\"--now-color_alert--positive-2\": {\n\t\t\"name\": \"color.alert.positive2\",\n\t\t\"initial\": \"37,131,43\"\n\t},\n\t\"--now-color_alert--positive-3\": {\n\t\t\"name\": \"color.alert.positive3\",\n\t\t\"initial\": \"30,105,34\"\n\t},\n\t\"--now-color_alert--positive-4\": {\n\t\t\"name\": \"color.alert.positive4\",\n\t\t\"initial\": \"22,79,26\"\n\t},\n\t\"--now-color_alert--positive-5\": {\n\t\t\"name\": \"color.alert.positive5\",\n\t\t\"initial\": \"15,52,17\"\n\t},\n\t\"--now-color_alert--warning-0\": {\n\t\t\"name\": \"color.alert.warning0\",\n\t\t\"initial\": \"244,240,191\"\n\t},\n\t\"--now-color_alert--warning-1\": {\n\t\t\"name\": \"color.alert.warning1\",\n\t\t\"initial\": \"227,218,96\"\n\t},\n\t\"--now-color_alert--warning-2\": {\n\t\t\"name\": \"color.alert.warning2\",\n\t\t\"initial\": \"210,195,0\"\n\t},\n\t\"--now-color_alert--warning-3\": {\n\t\t\"name\": \"color.alert.warning3\",\n\t\t\"initial\": \"198,185,22\"\n\t},\n\t\"--now-color_alert--warning-4\": {\n\t\t\"name\": \"color.alert.warning4\",\n\t\t\"initial\": \"149,139,17\"\n\t},\n\t\"--now-color_alert--warning-5\": {\n\t\t\"name\": \"color.alert.warning5\",\n\t\t\"initial\": \"99,92,11\"\n\t},\n\t\"--now-color_background--primary\": {\n\t\t\"name\": \"color.background.primary\",\n\t\t\"derived\": \"--now-color--neutral-0\"\n\t},\n\t\"--now-color_background--primary-actionable\": {\n\t\t\"name\": \"color.background.primaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-18\"\n\t},\n\t\"--now-color_background--secondary\": {\n\t\t\"name\": \"color.background.secondary\",\n\t\t\"derived\": \"--now-color--neutral-1\"\n\t},\n\t\"--now-color_background--secondary-actionable\": {\n\t\t\"name\": \"color.background.secondaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-15\"\n\t},\n\t\"--now-color_background--tertiary\": {\n\t\t\"name\": \"color.background.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-2\"\n\t},\n\t\"--now-color_background--tertiary-actionable\": {\n\t\t\"name\": \"color.background.tertiaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-12\"\n\t},\n\t\"--now-color_border--primary\": {\n\t\t\"name\": \"color.border.primary\",\n\t\t\"derived\": \"--now-color--neutral-7\"\n\t},\n\t\"--now-color_border--primary-actionable\": {\n\t\t\"name\": \"color.border.primaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-18\"\n\t},\n\t\"--now-color_border--secondary\": {\n\t\t\"name\": \"color.border.secondary\",\n\t\t\"derived\": \"--now-color--neutral-5\"\n\t},\n\t\"--now-color_border--secondary-actionable\": {\n\t\t\"name\": \"color.border.secondaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-15\"\n\t},\n\t\"--now-color_border--tertiary\": {\n\t\t\"name\": \"color.border.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-3\"\n\t},\n\t\"--now-color_border--tertiary-actionable\": {\n\t\t\"name\": \"color.border.tertiaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-12\"\n\t},\n\t\"--now-color_brand--neutral\": {\n\t\t\"name\": \"color.brand.neutral\",\n\t\t\"initial\": \"255,255,255\"\n\t},\n\t\"--now-color_brand--primary\": {\n\t\t\"name\": \"color.brand.primary\",\n\t\t\"initial\": \"41,62,64\"\n\t},\n\t\"--now-color_brand--secondary\": {\n\t\t\"name\": \"color.brand.secondary\",\n\t\t\"initial\": \"129,181,161\"\n\t},\n\t\"--now-color_chrome--brand-0\": {\n\t\t\"name\": \"color.chrome.brand0\",\n\t\t\"initial\": \"223,226,226\"\n\t},\n\t\"--now-color_chrome--brand-1\": {\n\t\t\"name\": \"color.chrome.brand1\",\n\t\t\"initial\": \"187,194,194\"\n\t},\n\t\"--now-color_chrome--brand-10\": {\n\t\t\"name\": \"color.chrome.brand10\",\n\t\t\"initial\": \"21,32,32\"\n\t},\n\t\"--now-color_chrome--brand-2\": {\n\t\t\"name\": \"color.chrome.brand2\",\n\t\t\"initial\": \"150,161,161\"\n\t},\n\t\"--now-color_chrome--brand-3\": {\n\t\t\"name\": \"color.chrome.brand3\",\n\t\t\"initial\": \"114,128,129\"\n\t},\n\t\"--now-color_chrome--brand-4\": {\n\t\t\"name\": \"color.chrome.brand4\",\n\t\t\"initial\": \"77,96,97\"\n\t},\n\t\"--now-color_chrome--brand-5\": {\n\t\t\"name\": \"color.chrome.brand5\",\n\t\t\"initial\": \"41,63,64\"\n\t},\n\t\"--now-color_chrome--brand-6\": {\n\t\t\"name\": \"color.chrome.brand6\",\n\t\t\"initial\": \"37,57,58\"\n\t},\n\t\"--now-color_chrome--brand-7\": {\n\t\t\"name\": \"color.chrome.brand7\",\n\t\t\"initial\": \"33,50,51\"\n\t},\n\t\"--now-color_chrome--brand-8\": {\n\t\t\"name\": \"color.chrome.brand8\",\n\t\t\"initial\": \"29,44,45\"\n\t},\n\t\"--now-color_chrome--brand-9\": {\n\t\t\"name\": \"color.chrome.brand9\",\n\t\t\"initial\": \"25,38,38\"\n\t},\n\t\"--now-color_chrome--divider-0\": {\n\t\t\"name\": \"color.chrome.divider0\",\n\t\t\"initial\": \"169,178,179\"\n\t},\n\t\"--now-color_chrome--divider-1\": {\n\t\t\"name\": \"color.chrome.divider1\",\n\t\t\"initial\": \"144,155,156\"\n\t},\n\t\"--now-color_chrome--divider-10\": {\n\t\t\"name\": \"color.chrome.divider10\",\n\t\t\"initial\": \"8,13,13\"\n\t},\n\t\"--now-color_chrome--divider-2\": {\n\t\t\"name\": \"color.chrome.divider2\",\n\t\t\"initial\": \"118,132,133\"\n\t},\n\t\"--now-color_chrome--divider-3\": {\n\t\t\"name\": \"color.chrome.divider3\",\n\t\t\"initial\": \"92,109,110\"\n\t},\n\t\"--now-color_chrome--divider-4\": {\n\t\t\"name\": \"color.chrome.divider4\",\n\t\t\"initial\": \"67,86,87\"\n\t},\n\t\"--now-color_chrome--divider-5\": {\n\t\t\"name\": \"color.chrome.divider5\",\n\t\t\"initial\": \"36,55,56\"\n\t},\n\t\"--now-color_chrome--divider-6\": {\n\t\t\"name\": \"color.chrome.divider6\",\n\t\t\"initial\": \"30,46,47\"\n\t},\n\t\"--now-color_chrome--divider-7\": {\n\t\t\"name\": \"color.chrome.divider7\",\n\t\t\"initial\": \"25,38,38\"\n\t},\n\t\"--now-color_chrome--divider-8\": {\n\t\t\"name\": \"color.chrome.divider8\",\n\t\t\"initial\": \"19,29,30\"\n\t},\n\t\"--now-color_chrome--divider-9\": {\n\t\t\"name\": \"color.chrome.divider9\",\n\t\t\"initial\": \"14,21,21\"\n\t},\n\t\"--now-color_divider--primary\": {\n\t\t\"name\": \"color.divider.primary\",\n\t\t\"derived\": \"--now-color--neutral-7\"\n\t},\n\t\"--now-color_divider--secondary\": {\n\t\t\"name\": \"color.divider.secondary\",\n\t\t\"derived\": \"--now-color--neutral-5\"\n\t},\n\t\"--now-color_divider--tertiary\": {\n\t\t\"name\": \"color.divider.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-3\"\n\t},\n\t\"--now-color_focus-ring\": {\n\t\t\"name\": \"color.focusRing\",\n\t\t\"derived\": \"--now-color--secondary-1\"\n\t},\n\t\"--now-color_focus-ring_shadow\": {\n\t\t\"name\": \"color.focusRing.shadow\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-color_grouped--blue-0\": {\n\t\t\"name\": \"color.grouped.blue0\",\n\t\t\"initial\": \"215,231,240\"\n\t},\n\t\"--now-color_grouped--blue-1\": {\n\t\t\"name\": \"color.grouped.blue1\",\n\t\t\"initial\": \"167,204,222\"\n\t},\n\t\"--now-color_grouped--blue-2\": {\n\t\t\"name\": \"color.grouped.blue2\",\n\t\t\"initial\": \"120,176,204\"\n\t},\n\t\"--now-color_grouped--blue-3\": {\n\t\t\"name\": \"color.grouped.blue3\",\n\t\t\"initial\": \"102,150,173\"\n\t},\n\t\"--now-color_grouped--blue-4\": {\n\t\t\"name\": \"color.grouped.blue4\",\n\t\t\"initial\": \"84,123,143\"\n\t},\n\t\"--now-color_grouped--blue-5\": {\n\t\t\"name\": \"color.grouped.blue5\",\n\t\t\"initial\": \"66,97,112\"\n\t},\n\t\"--now-color_grouped--brown-0\": {\n\t\t\"name\": \"color.grouped.brown0\",\n\t\t\"initial\": \"225,220,214\"\n\t},\n\t\"--now-color_grouped--brown-1\": {\n\t\t\"name\": \"color.grouped.brown1\",\n\t\t\"initial\": \"191,179,167\"\n\t},\n\t\"--now-color_grouped--brown-2\": {\n\t\t\"name\": \"color.grouped.brown2\",\n\t\t\"initial\": \"156,138,119\"\n\t},\n\t\"--now-color_grouped--brown-3\": {\n\t\t\"name\": \"color.grouped.brown3\",\n\t\t\"initial\": \"133,117,101\"\n\t},\n\t\"--now-color_grouped--brown-4\": {\n\t\t\"name\": \"color.grouped.brown4\",\n\t\t\"initial\": \"109,97,83\"\n\t},\n\t\"--now-color_grouped--brown-5\": {\n\t\t\"name\": \"color.grouped.brown5\",\n\t\t\"initial\": \"86,76,66\"\n\t},\n\t\"--now-color_grouped--gray-0\": {\n\t\t\"name\": \"color.grouped.gray0\",\n\t\t\"initial\": \"220,222,224\"\n\t},\n\t\"--now-color_grouped--gray-1\": {\n\t\t\"name\": \"color.grouped.gray1\",\n\t\t\"initial\": \"180,184,187\"\n\t},\n\t\"--now-color_grouped--gray-2\": {\n\t\t\"name\": \"color.grouped.gray2\",\n\t\t\"initial\": \"139,145,150\"\n\t},\n\t\"--now-color_grouped--gray-3\": {\n\t\t\"name\": \"color.grouped.gray3\",\n\t\t\"initial\": \"118,123,128\"\n\t},\n\t\"--now-color_grouped--gray-4\": {\n\t\t\"name\": \"color.grouped.gray4\",\n\t\t\"initial\": \"97,102,105\"\n\t},\n\t\"--now-color_grouped--gray-5\": {\n\t\t\"name\": \"color.grouped.gray5\",\n\t\t\"initial\": \"77,80,83\"\n\t},\n\t\"--now-color_grouped--green-0\": {\n\t\t\"name\": \"color.grouped.green0\",\n\t\t\"initial\": \"223,230,216\"\n\t},\n\t\"--now-color_grouped--green-1\": {\n\t\t\"name\": \"color.grouped.green1\",\n\t\t\"initial\": \"185,200,171\"\n\t},\n\t\"--now-color_grouped--green-2\": {\n\t\t\"name\": \"color.grouped.green2\",\n\t\t\"initial\": \"147,170,125\"\n\t},\n\t\"--now-color_grouped--green-3\": {\n\t\t\"name\": \"color.grouped.green3\",\n\t\t\"initial\": \"125,145,106\"\n\t},\n\t\"--now-color_grouped--green-4\": {\n\t\t\"name\": \"color.grouped.green4\",\n\t\t\"initial\": \"103,119,88\"\n\t},\n\t\"--now-color_grouped--green-5\": {\n\t\t\"name\": \"color.grouped.green5\",\n\t\t\"initial\": \"81,94,69\"\n\t},\n\t\"--now-color_grouped--green-yellow-0\": {\n\t\t\"name\": \"color.grouped.greenYellow0\",\n\t\t\"initial\": \"225,230,207\"\n\t},\n\t\"--now-color_grouped--green-yellow-1\": {\n\t\t\"name\": \"color.grouped.greenYellow1\",\n\t\t\"initial\": \"189,202,150\"\n\t},\n\t\"--now-color_grouped--green-yellow-2\": {\n\t\t\"name\": \"color.grouped.greenYellow2\",\n\t\t\"initial\": \"154,173,94\"\n\t},\n\t\"--now-color_grouped--green-yellow-3\": {\n\t\t\"name\": \"color.grouped.greenYellow3\",\n\t\t\"initial\": \"131,147,80\"\n\t},\n\t\"--now-color_grouped--green-yellow-4\": {\n\t\t\"name\": \"color.grouped.greenYellow4\",\n\t\t\"initial\": \"108,121,66\"\n\t},\n\t\"--now-color_grouped--green-yellow-5\": {\n\t\t\"name\": \"color.grouped.greenYellow5\",\n\t\t\"initial\": \"85,95,52\"\n\t},\n\t\"--now-color_grouped--magenta-0\": {\n\t\t\"name\": \"color.grouped.magenta0\",\n\t\t\"initial\": \"239,215,236\"\n\t},\n\t\"--now-color_grouped--magenta-1\": {\n\t\t\"name\": \"color.grouped.magenta1\",\n\t\t\"initial\": \"221,168,215\"\n\t},\n\t\"--now-color_grouped--magenta-2\": {\n\t\t\"name\": \"color.grouped.magenta2\",\n\t\t\"initial\": \"203,121,193\"\n\t},\n\t\"--now-color_grouped--magenta-3\": {\n\t\t\"name\": \"color.grouped.magenta3\",\n\t\t\"initial\": \"173,103,164\"\n\t},\n\t\"--now-color_grouped--magenta-4\": {\n\t\t\"name\": \"color.grouped.magenta4\",\n\t\t\"initial\": \"142,85,135\"\n\t},\n\t\"--now-color_grouped--magenta-5\": {\n\t\t\"name\": \"color.grouped.magenta5\",\n\t\t\"initial\": \"112,67,106\"\n\t},\n\t\"--now-color_grouped--orange-0\": {\n\t\t\"name\": \"color.grouped.orange0\",\n\t\t\"initial\": \"243,217,210\"\n\t},\n\t\"--now-color_grouped--orange-1\": {\n\t\t\"name\": \"color.grouped.orange1\",\n\t\t\"initial\": \"229,173,158\"\n\t},\n\t\"--now-color_grouped--orange-2\": {\n\t\t\"name\": \"color.grouped.orange2\",\n\t\t\"initial\": \"215,129,106\"\n\t},\n\t\"--now-color_grouped--orange-3\": {\n\t\t\"name\": \"color.grouped.orange3\",\n\t\t\"initial\": \"183,110,90\"\n\t},\n\t\"--now-color_grouped--orange-4\": {\n\t\t\"name\": \"color.grouped.orange4\",\n\t\t\"initial\": \"151,90,74\"\n\t},\n\t\"--now-color_grouped--orange-5\": {\n\t\t\"name\": \"color.grouped.orange5\",\n\t\t\"initial\": \"118,71,58\"\n\t},\n\t\"--now-color_grouped--pink-0\": {\n\t\t\"name\": \"color.grouped.pink0\",\n\t\t\"initial\": \"239,215,221\"\n\t},\n\t\"--now-color_grouped--pink-1\": {\n\t\t\"name\": \"color.grouped.pink1\",\n\t\t\"initial\": \"221,168,182\"\n\t},\n\t\"--now-color_grouped--pink-2\": {\n\t\t\"name\": \"color.grouped.pink2\",\n\t\t\"initial\": \"203,121,143\"\n\t},\n\t\"--now-color_grouped--pink-3\": {\n\t\t\"name\": \"color.grouped.pink3\",\n\t\t\"initial\": \"173,103,122\"\n\t},\n\t\"--now-color_grouped--pink-4\": {\n\t\t\"name\": \"color.grouped.pink4\",\n\t\t\"initial\": \"142,85,100\"\n\t},\n\t\"--now-color_grouped--pink-5\": {\n\t\t\"name\": \"color.grouped.pink5\",\n\t\t\"initial\": \"112,67,79\"\n\t},\n\t\"--now-color_grouped--purple-0\": {\n\t\t\"name\": \"color.grouped.purple0\",\n\t\t\"initial\": \"233,225,241\"\n\t},\n\t\"--now-color_grouped--purple-1\": {\n\t\t\"name\": \"color.grouped.purple1\",\n\t\t\"initial\": \"207,190,225\"\n\t},\n\t\"--now-color_grouped--purple-2\": {\n\t\t\"name\": \"color.grouped.purple2\",\n\t\t\"initial\": \"181,155,209\"\n\t},\n\t\"--now-color_grouped--purple-3\": {\n\t\t\"name\": \"color.grouped.purple3\",\n\t\t\"initial\": \"154,132,178\"\n\t},\n\t\"--now-color_grouped--purple-4\": {\n\t\t\"name\": \"color.grouped.purple4\",\n\t\t\"initial\": \"127,109,146\"\n\t},\n\t\"--now-color_grouped--purple-5\": {\n\t\t\"name\": \"color.grouped.purple5\",\n\t\t\"initial\": \"100,85,115\"\n\t},\n\t\"--now-color_grouped--teal-0\": {\n\t\t\"name\": \"color.grouped.teal0\",\n\t\t\"initial\": \"210,231,227\"\n\t},\n\t\"--now-color_grouped--teal-1\": {\n\t\t\"name\": \"color.grouped.teal1\",\n\t\t\"initial\": \"157,202,195\"\n\t},\n\t\"--now-color_grouped--teal-2\": {\n\t\t\"name\": \"color.grouped.teal2\",\n\t\t\"initial\": \"104,174,163\"\n\t},\n\t\"--now-color_grouped--teal-3\": {\n\t\t\"name\": \"color.grouped.teal3\",\n\t\t\"initial\": \"88,148,139\"\n\t},\n\t\"--now-color_grouped--teal-4\": {\n\t\t\"name\": \"color.grouped.teal4\",\n\t\t\"initial\": \"73,122,114\"\n\t},\n\t\"--now-color_grouped--teal-5\": {\n\t\t\"name\": \"color.grouped.teal5\",\n\t\t\"initial\": \"57,96,90\"\n\t},\n\t\"--now-color_grouped--yellow-0\": {\n\t\t\"name\": \"color.grouped.yellow0\",\n\t\t\"initial\": \"251,241,209\"\n\t},\n\t\"--now-color_grouped--yellow-1\": {\n\t\t\"name\": \"color.grouped.yellow1\",\n\t\t\"initial\": \"245,224,155\"\n\t},\n\t\"--now-color_grouped--yellow-2\": {\n\t\t\"name\": \"color.grouped.yellow2\",\n\t\t\"initial\": \"240,207,101\"\n\t},\n\t\"--now-color_grouped--yellow-3\": {\n\t\t\"name\": \"color.grouped.yellow3\",\n\t\t\"initial\": \"204,176,86\"\n\t},\n\t\"--now-color_grouped--yellow-4\": {\n\t\t\"name\": \"color.grouped.yellow4\",\n\t\t\"initial\": \"168,145,71\"\n\t},\n\t\"--now-color_grouped--yellow-5\": {\n\t\t\"name\": \"color.grouped.yellow5\",\n\t\t\"initial\": \"132,114,56\"\n\t},\n\t\"--now-color_presence--available\": {\n\t\t\"name\": \"color.presence.available\",\n\t\t\"initial\": \"75,166,107\"\n\t},\n\t\"--now-color_presence--away\": {\n\t\t\"name\": \"color.presence.away\",\n\t\t\"initial\": \"226,121,24\"\n\t},\n\t\"--now-color_presence--busy\": {\n\t\t\"name\": \"color.presence.busy\",\n\t\t\"initial\": \"234,60,16\"\n\t},\n\t\"--now-color_presence--offline\": {\n\t\t\"name\": \"color.presence.offline\",\n\t\t\"initial\": \"135,147,148\"\n\t},\n\t\"--now-color_selection--primary-0\": {\n\t\t\"name\": \"color.selection.primary0\",\n\t\t\"initial\": \"221,237,233\"\n\t},\n\t\"--now-color_selection--primary-1\": {\n\t\t\"name\": \"color.selection.primary1\",\n\t\t\"initial\": \"126,185,171\"\n\t},\n\t\"--now-color_selection--primary-2\": {\n\t\t\"name\": \"color.selection.primary2\",\n\t\t\"initial\": \"30,133,109\"\n\t},\n\t\"--now-color_selection--primary-3\": {\n\t\t\"name\": \"color.selection.primary3\",\n\t\t\"initial\": \"23,100,82\"\n\t},\n\t\"--now-color_selection--primary-4\": {\n\t\t\"name\": \"color.selection.primary4\",\n\t\t\"initial\": \"15,67,55\"\n\t},\n\t\"--now-color_selection--secondary-0\": {\n\t\t\"name\": \"color.selection.secondary0\",\n\t\t\"initial\": \"245,248,249\"\n\t},\n\t\"--now-color_selection--secondary-1\": {\n\t\t\"name\": \"color.selection.secondary1\",\n\t\t\"initial\": \"237,243,245\"\n\t},\n\t\"--now-color_selection--secondary-2\": {\n\t\t\"name\": \"color.selection.secondary2\",\n\t\t\"initial\": \"229,238,240\"\n\t},\n\t\"--now-color_selection--secondary-3\": {\n\t\t\"name\": \"color.selection.secondary3\",\n\t\t\"initial\": \"218,226,228\"\n\t},\n\t\"--now-color_selection--secondary-4\": {\n\t\t\"name\": \"color.selection.secondary4\",\n\t\t\"initial\": \"206,214,216\"\n\t},\n\t\"--now-color_surface--brand-1\": {\n\t\t\"name\": \"color.surface.brand1\",\n\t\t\"initial\": \"236,244,241\"\n\t},\n\t\"--now-color_surface--brand-2\": {\n\t\t\"name\": \"color.surface.brand2\",\n\t\t\"initial\": \"218,233,228\"\n\t},\n\t\"--now-color_surface--brand-3\": {\n\t\t\"name\": \"color.surface.brand3\",\n\t\t\"initial\": \"200,223,214\"\n\t},\n\t\"--now-color_surface--brand-4\": {\n\t\t\"name\": \"color.surface.brand4\",\n\t\t\"initial\": \"183,212,201\"\n\t},\n\t\"--now-color_surface--brand-5\": {\n\t\t\"name\": \"color.surface.brand5\",\n\t\t\"initial\": \"165,202,188\"\n\t},\n\t\"--now-color_surface--brand-6\": {\n\t\t\"name\": \"color.surface.brand6\",\n\t\t\"initial\": \"147,192,174\"\n\t},\n\t\"--now-color_surface--divider-1\": {\n\t\t\"name\": \"color.surface.divider1\",\n\t\t\"initial\": \"241,243,243\"\n\t},\n\t\"--now-color_surface--divider-2\": {\n\t\t\"name\": \"color.surface.divider2\",\n\t\t\"initial\": \"221,224,224\"\n\t},\n\t\"--now-color_surface--divider-3\": {\n\t\t\"name\": \"color.surface.divider3\",\n\t\t\"initial\": \"200,205,206\"\n\t},\n\t\"--now-color_surface--divider-4\": {\n\t\t\"name\": \"color.surface.divider4\",\n\t\t\"initial\": \"179,186,187\"\n\t},\n\t\"--now-color_surface--divider-5\": {\n\t\t\"name\": \"color.surface.divider5\",\n\t\t\"initial\": \"158,168,169\"\n\t},\n\t\"--now-color_surface--divider-6\": {\n\t\t\"name\": \"color.surface.divider6\",\n\t\t\"initial\": \"138,149,151\"\n\t},\n\t\"--now-color_surface--neutral-1\": {\n\t\t\"name\": \"color.surface.neutral1\",\n\t\t\"initial\": \"252,252,252\"\n\t},\n\t\"--now-color_surface--neutral-2\": {\n\t\t\"name\": \"color.surface.neutral2\",\n\t\t\"initial\": \"242,243,243\"\n\t},\n\t\"--now-color_surface--neutral-3\": {\n\t\t\"name\": \"color.surface.neutral3\",\n\t\t\"initial\": \"232,234,234\"\n\t},\n\t\"--now-color_surface--neutral-4\": {\n\t\t\"name\": \"color.surface.neutral4\",\n\t\t\"initial\": \"221,225,225\"\n\t},\n\t\"--now-color_surface--neutral-5\": {\n\t\t\"name\": \"color.surface.neutral5\",\n\t\t\"initial\": \"211,215,216\"\n\t},\n\t\"--now-color_surface--neutral-6\": {\n\t\t\"name\": \"color.surface.neutral6\",\n\t\t\"initial\": \"201,206,207\"\n\t},\n\t\"--now-color_text--primary\": {\n\t\t\"name\": \"color.text.primary\",\n\t\t\"derived\": \"--now-color--neutral-18\"\n\t},\n\t\"--now-color_text--primary-actionable\": {\n\t\t\"name\": \"color.text.primaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-0\"\n\t},\n\t\"--now-color_text--secondary\": {\n\t\t\"name\": \"color.text.secondary\",\n\t\t\"derived\": \"--now-color--neutral-15\"\n\t},\n\t\"--now-color_text--secondary-actionable\": {\n\t\t\"name\": \"color.text.secondaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-1\"\n\t},\n\t\"--now-color_text--tertiary\": {\n\t\t\"name\": \"color.text.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-12\"\n\t},\n\t\"--now-color_text--tertiary-actionable\": {\n\t\t\"name\": \"color.text.tertiaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-2\"\n\t},\n\t\"--now-color--focus-1\": {\n\t\t\"name\": \"color.focus1\",\n\t\t\"initial\": \"77,160,176\"\n\t},\n\t\"--now-color--focus-2\": {\n\t\t\"name\": \"color.focus2\",\n\t\t\"initial\": \"1,119,142\"\n\t},\n\t\"--now-color--focus-3\": {\n\t\t\"name\": \"color.focus3\",\n\t\t\"initial\": \"1,89,107\"\n\t},\n\t\"--now-color--interactive-0\": {\n\t\t\"name\": \"color.interactive0\",\n\t\t\"initial\": \"217,235,238\"\n\t},\n\t\"--now-color--interactive-1\": {\n\t\t\"name\": \"color.interactive1\",\n\t\t\"initial\": \"109,177,190\"\n\t},\n\t\"--now-color--interactive-2\": {\n\t\t\"name\": \"color.interactive2\",\n\t\t\"initial\": \"1,119,142\"\n\t},\n\t\"--now-color--interactive-3\": {\n\t\t\"name\": \"color.interactive3\",\n\t\t\"initial\": \"1,89,107\"\n\t},\n\t\"--now-color--interactive-4\": {\n\t\t\"name\": \"color.interactive4\",\n\t\t\"initial\": \"1,60,71\"\n\t},\n\t\"--now-color--link-1\": {\n\t\t\"name\": \"color.link1\",\n\t\t\"initial\": \"77,160,176\"\n\t},\n\t\"--now-color--link-2\": {\n\t\t\"name\": \"color.link2\",\n\t\t\"initial\": \"1,119,142\"\n\t},\n\t\"--now-color--link-3\": {\n\t\t\"name\": \"color.link3\",\n\t\t\"initial\": \"1,104,124\"\n\t},\n\t\"--now-color--link-4\": {\n\t\t\"name\": \"color.link4\",\n\t\t\"initial\": \"1,89,107\"\n\t},\n\t\"--now-color--neutral-0\": {\n\t\t\"name\": \"color.neutral0\",\n\t\t\"initial\": \"255,255,255\"\n\t},\n\t\"--now-color--neutral-1\": {\n\t\t\"name\": \"color.neutral1\",\n\t\t\"initial\": \"246,247,247\"\n\t},\n\t\"--now-color--neutral-10\": {\n\t\t\"name\": \"color.neutral10\",\n\t\t\"initial\": \"80,97,99\"\n\t},\n\t\"--now-color--neutral-11\": {\n\t\t\"name\": \"color.neutral11\",\n\t\t\"initial\": \"73,88,90\"\n\t},\n\t\"--now-color--neutral-12\": {\n\t\t\"name\": \"color.neutral12\",\n\t\t\"initial\": \"66,80,81\"\n\t},\n\t\"--now-color--neutral-13\": {\n\t\t\"name\": \"color.neutral13\",\n\t\t\"initial\": \"58,71,72\"\n\t},\n\t\"--now-color--neutral-14\": {\n\t\t\"name\": \"color.neutral14\",\n\t\t\"initial\": \"51,62,63\"\n\t},\n\t\"--now-color--neutral-15\": {\n\t\t\"name\": \"color.neutral15\",\n\t\t\"initial\": \"44,53,55\"\n\t},\n\t\"--now-color--neutral-16\": {\n\t\t\"name\": \"color.neutral16\",\n\t\t\"initial\": \"37,45,46\"\n\t},\n\t\"--now-color--neutral-17\": {\n\t\t\"name\": \"color.neutral17\",\n\t\t\"initial\": \"30,36,37\"\n\t},\n\t\"--now-color--neutral-18\": {\n\t\t\"name\": \"color.neutral18\",\n\t\t\"initial\": \"22,27,28\"\n\t},\n\t\"--now-color--neutral-19\": {\n\t\t\"name\": \"color.neutral19\",\n\t\t\"initial\": \"15,18,19\"\n\t},\n\t\"--now-color--neutral-2\": {\n\t\t\"name\": \"color.neutral2\",\n\t\t\"initial\": \"228,230,231\"\n\t},\n\t\"--now-color--neutral-20\": {\n\t\t\"name\": \"color.neutral20\",\n\t\t\"initial\": \"8,10,10\"\n\t},\n\t\"--now-color--neutral-21\": {\n\t\t\"name\": \"color.neutral21\",\n\t\t\"initial\": \"0,0,0\"\n\t},\n\t\"--now-color--neutral-3\": {\n\t\t\"name\": \"color.neutral3\",\n\t\t\"initial\": \"209,214,214\"\n\t},\n\t\"--now-color--neutral-4\": {\n\t\t\"name\": \"color.neutral4\",\n\t\t\"initial\": \"191,197,198\"\n\t},\n\t\"--now-color--neutral-5\": {\n\t\t\"name\": \"color.neutral5\",\n\t\t\"initial\": \"172,180,181\"\n\t},\n\t\"--now-color--neutral-6\": {\n\t\t\"name\": \"color.neutral6\",\n\t\t\"initial\": \"154,164,165\"\n\t},\n\t\"--now-color--neutral-7\": {\n\t\t\"name\": \"color.neutral7\",\n\t\t\"initial\": \"135,147,148\"\n\t},\n\t\"--now-color--neutral-8\": {\n\t\t\"name\": \"color.neutral8\",\n\t\t\"initial\": \"117,130,132\"\n\t},\n\t\"--now-color--neutral-9\": {\n\t\t\"name\": \"color.neutral9\",\n\t\t\"initial\": \"99,114,116\"\n\t},\n\t\"--now-color--primary-0\": {\n\t\t\"name\": \"color.primary0\",\n\t\t\"initial\": \"221,237,233\"\n\t},\n\t\"--now-color--primary-1\": {\n\t\t\"name\": \"color.primary1\",\n\t\t\"initial\": \"30,133,109\"\n\t},\n\t\"--now-color--primary-2\": {\n\t\t\"name\": \"color.primary2\",\n\t\t\"initial\": \"23,100,82\"\n\t},\n\t\"--now-color--primary-3\": {\n\t\t\"name\": \"color.primary3\",\n\t\t\"initial\": \"15,67,55\"\n\t},\n\t\"--now-color--secondary-0\": {\n\t\t\"name\": \"color.secondary0\",\n\t\t\"initial\": \"217,235,238\"\n\t},\n\t\"--now-color--secondary-1\": {\n\t\t\"name\": \"color.secondary1\",\n\t\t\"initial\": \"1,119,142\"\n\t},\n\t\"--now-color--secondary-2\": {\n\t\t\"name\": \"color.secondary2\",\n\t\t\"initial\": \"1,89,107\"\n\t},\n\t\"--now-color--secondary-3\": {\n\t\t\"name\": \"color.secondary3\",\n\t\t\"initial\": \"1,60,71\"\n\t}\n}","export default {\n\t\"--now-datavis_color_chart_fill\": {\n\t\t\"name\": \"datavis.color.chart.fill\",\n\t\t\"derived\": \"--now-color_alert--info-1\"\n\t},\n\t\"--now-datavis_color_chart--primary\": {\n\t\t\"name\": \"datavis.color.chart.primary\",\n\t\t\"derived\": \"--now-color--neutral-2\"\n\t},\n\t\"--now-datavis_color_chart--secondary\": {\n\t\t\"name\": \"datavis.color.chart.secondary\",\n\t\t\"derived\": \"--now-color--neutral-4\"\n\t},\n\t\"--now-datavis_color_chart--tertiary\": {\n\t\t\"name\": \"datavis.color.chart.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-7\"\n\t},\n\t\"--now-datavis_color_label--primary\": {\n\t\t\"name\": \"datavis.color.label.primary\",\n\t\t\"derived\": \"--now-color--neutral-18\"\n\t},\n\t\"--now-datavis_color_label--secondary\": {\n\t\t\"name\": \"datavis.color.label.secondary\",\n\t\t\"derived\": \"--now-color--neutral-9\"\n\t},\n\t\"--now-datavis_color_label--tertiary\": {\n\t\t\"name\": \"datavis.color.label.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-5\"\n\t},\n\t\"--now-datavis_color_layer_band--primary\": {\n\t\t\"name\": \"datavis.color.layer.band.primary\",\n\t\t\"derived\": \"--now-color_alert--high-1\"\n\t},\n\t\"--now-datavis_color_layer_band--secondary\": {\n\t\t\"name\": \"datavis.color.layer.band.secondary\",\n\t\t\"derived\": \"--now-color_alert--high-2\"\n\t},\n\t\"--now-datavis_color_layer--primary\": {\n\t\t\"name\": \"datavis.color.layer.primary\",\n\t\t\"derived\": \"--now-color--neutral-2\"\n\t},\n\t\"--now-datavis_color_layer--quad\": {\n\t\t\"name\": \"datavis.color.layer.quad\",\n\t\t\"derived\": \"--now-color--neutral-20\"\n\t},\n\t\"--now-datavis_color_layer--secondary\": {\n\t\t\"name\": \"datavis.color.layer.secondary\",\n\t\t\"derived\": \"--now-color--neutral-4\"\n\t},\n\t\"--now-datavis_color_layer--tertiary\": {\n\t\t\"name\": \"datavis.color.layer.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-5\"\n\t},\n\t\"--now-datavis_color_series_default\": {\n\t\t\"name\": \"datavis.color.series.default\",\n\t\t\"derived\": \"--now-datavis_color--qualitative-0\"\n\t},\n\t\"--now-datavis_color--accessibility-0\": {\n\t\t\"name\": \"datavis.color.accessibility0\",\n\t\t\"derived\": \"--now-color--neutral-0\"\n\t},\n\t\"--now-datavis_color--accessibility-10\": {\n\t\t\"name\": \"datavis.color.accessibility10\",\n\t\t\"derived\": \"--now-color--neutral-20\"\n\t},\n\t\"--now-datavis_color--accessibility-2\": {\n\t\t\"name\": \"datavis.color.accessibility2\",\n\t\t\"derived\": \"--now-color--neutral-4\"\n\t},\n\t\"--now-datavis_color--blue-0\": {\n\t\t\"name\": \"datavis.color.blue0\",\n\t\t\"initial\": \"210,229,244\"\n\t},\n\t\"--now-datavis_color--blue-1\": {\n\t\t\"name\": \"datavis.color.blue1\",\n\t\t\"initial\": \"182,212,237\"\n\t},\n\t\"--now-datavis_color--blue-10\": {\n\t\t\"name\": \"datavis.color.blue10\",\n\t\t\"initial\": \"30,59,82\"\n\t},\n\t\"--now-datavis_color--blue-2\": {\n\t\t\"name\": \"datavis.color.blue2\",\n\t\t\"initial\": \"158,197,230\"\n\t},\n\t\"--now-datavis_color--blue-3\": {\n\t\t\"name\": \"datavis.color.blue3\",\n\t\t\"initial\": \"129,181,223\"\n\t},\n\t\"--now-datavis_color--blue-4\": {\n\t\t\"name\": \"datavis.color.blue4\",\n\t\t\"initial\": \"105,166,216\"\n\t},\n\t\"--now-datavis_color--blue-5\": {\n\t\t\"name\": \"datavis.color.blue5\",\n\t\t\"initial\": \"77,149,209\"\n\t},\n\t\"--now-datavis_color--blue-6\": {\n\t\t\"name\": \"datavis.color.blue6\",\n\t\t\"initial\": \"66,131,184\"\n\t},\n\t\"--now-datavis_color--blue-7\": {\n\t\t\"name\": \"datavis.color.blue7\",\n\t\t\"initial\": \"58,115,161\"\n\t},\n\t\"--now-datavis_color--blue-8\": {\n\t\t\"name\": \"datavis.color.blue8\",\n\t\t\"initial\": \"50,95,134\"\n\t},\n\t\"--now-datavis_color--blue-9\": {\n\t\t\"name\": \"datavis.color.blue9\",\n\t\t\"initial\": \"40,77,108\"\n\t},\n\t\"--now-datavis_color--brown-0\": {\n\t\t\"name\": \"datavis.color.brown0\",\n\t\t\"initial\": \"236,219,213\"\n\t},\n\t\"--now-datavis_color--brown-1\": {\n\t\t\"name\": \"datavis.color.brown1\",\n\t\t\"initial\": \"223,195,185\"\n\t},\n\t\"--now-datavis_color--brown-10\": {\n\t\t\"name\": \"datavis.color.brown10\",\n\t\t\"initial\": \"69,42,33\"\n\t},\n\t\"--now-datavis_color--brown-2\": {\n\t\t\"name\": \"datavis.color.brown2\",\n\t\t\"initial\": \"212,174,161\"\n\t},\n\t\"--now-datavis_color--brown-3\": {\n\t\t\"name\": \"datavis.color.brown3\",\n\t\t\"initial\": \"198,151,134\"\n\t},\n\t\"--now-datavis_color--brown-4\": {\n\t\t\"name\": \"datavis.color.brown4\",\n\t\t\"initial\": \"186,130,109\"\n\t},\n\t\"--now-datavis_color--brown-5\": {\n\t\t\"name\": \"datavis.color.brown5\",\n\t\t\"initial\": \"176,108,84\"\n\t},\n\t\"--now-datavis_color--brown-6\": {\n\t\t\"name\": \"datavis.color.brown6\",\n\t\t\"initial\": \"156,95,73\"\n\t},\n\t\"--now-datavis_color--brown-7\": {\n\t\t\"name\": \"datavis.color.brown7\",\n\t\t\"initial\": \"132,81,62\"\n\t},\n\t\"--now-datavis_color--brown-8\": {\n\t\t\"name\": \"datavis.color.brown8\",\n\t\t\"initial\": \"111,68,52\"\n\t},\n\t\"--now-datavis_color--brown-9\": {\n\t\t\"name\": \"datavis.color.brown9\",\n\t\t\"initial\": \"90,55,42\"\n\t},\n\t\"--now-datavis_color--green-0\": {\n\t\t\"name\": \"datavis.color.green0\",\n\t\t\"initial\": \"208,231,211\"\n\t},\n\t\"--now-datavis_color--green-1\": {\n\t\t\"name\": \"datavis.color.green1\",\n\t\t\"initial\": \"181,217,184\"\n\t},\n\t\"--now-datavis_color--green-10\": {\n\t\t\"name\": \"datavis.color.green10\",\n\t\t\"initial\": \"28,63,31\"\n\t},\n\t\"--now-datavis_color--green-2\": {\n\t\t\"name\": \"datavis.color.green2\",\n\t\t\"initial\": \"154,203,159\"\n\t},\n\t\"--now-datavis_color--green-3\": {\n\t\t\"name\": \"datavis.color.green3\",\n\t\t\"initial\": \"127,189,133\"\n\t},\n\t\"--now-datavis_color--green-4\": {\n\t\t\"name\": \"datavis.color.green4\",\n\t\t\"initial\": \"100,175,108\"\n\t},\n\t\"--now-datavis_color--green-5\": {\n\t\t\"name\": \"datavis.color.green5\",\n\t\t\"initial\": \"73,162,82\"\n\t},\n\t\"--now-datavis_color--green-6\": {\n\t\t\"name\": \"datavis.color.green6\",\n\t\t\"initial\": \"62,142,70\"\n\t},\n\t\"--now-datavis_color--green-7\": {\n\t\t\"name\": \"datavis.color.green7\",\n\t\t\"initial\": \"55,123,62\"\n\t},\n\t\"--now-datavis_color--green-8\": {\n\t\t\"name\": \"datavis.color.green8\",\n\t\t\"initial\": \"46,102,51\"\n\t},\n\t\"--now-datavis_color--green-9\": {\n\t\t\"name\": \"datavis.color.green9\",\n\t\t\"initial\": \"37,85,42\"\n\t},\n\t\"--now-datavis_color--negative\": {\n\t\t\"name\": \"datavis.color.negative\",\n\t\t\"derived\": \"--now-color_alert--critical-3\"\n\t},\n\t\"--now-datavis_color--olive-0\": {\n\t\t\"name\": \"datavis.color.olive0\",\n\t\t\"initial\": \"226,231,208\"\n\t},\n\t\"--now-datavis_color--olive-1\": {\n\t\t\"name\": \"datavis.color.olive1\",\n\t\t\"initial\": \"210,217,181\"\n\t},\n\t\"--now-datavis_color--olive-10\": {\n\t\t\"name\": \"datavis.color.olive10\",\n\t\t\"initial\": \"56,63,28\"\n\t},\n\t\"--now-datavis_color--olive-2\": {\n\t\t\"name\": \"datavis.color.olive2\",\n\t\t\"initial\": \"193,203,154\"\n\t},\n\t\"--now-datavis_color--olive-3\": {\n\t\t\"name\": \"datavis.color.olive3\",\n\t\t\"initial\": \"176,189,127\"\n\t},\n\t\"--now-datavis_color--olive-4\": {\n\t\t\"name\": \"datavis.color.olive4\",\n\t\t\"initial\": \"159,175,100\"\n\t},\n\t\"--now-datavis_color--olive-5\": {\n\t\t\"name\": \"datavis.color.olive5\",\n\t\t\"initial\": \"143,162,73\"\n\t},\n\t\"--now-datavis_color--olive-6\": {\n\t\t\"name\": \"datavis.color.olive6\",\n\t\t\"initial\": \"125,142,62\"\n\t},\n\t\"--now-datavis_color--olive-7\": {\n\t\t\"name\": \"datavis.color.olive7\",\n\t\t\"initial\": \"108,123,55\"\n\t},\n\t\"--now-datavis_color--olive-8\": {\n\t\t\"name\": \"datavis.color.olive8\",\n\t\t\"initial\": \"90,102,46\"\n\t},\n\t\"--now-datavis_color--olive-9\": {\n\t\t\"name\": \"datavis.color.olive9\",\n\t\t\"initial\": \"75,85,37\"\n\t},\n\t\"--now-datavis_color--orange-0\": {\n\t\t\"name\": \"datavis.color.orange0\",\n\t\t\"initial\": \"250,226,209\"\n\t},\n\t\"--now-datavis_color--orange-1\": {\n\t\t\"name\": \"datavis.color.orange1\",\n\t\t\"initial\": \"247,209,182\"\n\t},\n\t\"--now-datavis_color--orange-10\": {\n\t\t\"name\": \"datavis.color.orange10\",\n\t\t\"initial\": \"94,56,28\"\n\t},\n\t\"--now-datavis_color--orange-2\": {\n\t\t\"name\": \"datavis.color.orange2\",\n\t\t\"initial\": \"244,190,153\"\n\t},\n\t\"--now-datavis_color--orange-3\": {\n\t\t\"name\": \"datavis.color.orange3\",\n\t\t\"initial\": \"241,172,126\"\n\t},\n\t\"--now-datavis_color--orange-4\": {\n\t\t\"name\": \"datavis.color.orange4\",\n\t\t\"initial\": \"238,154,99\"\n\t},\n\t\"--now-datavis_color--orange-5\": {\n\t\t\"name\": \"datavis.color.orange5\",\n\t\t\"initial\": \"235,137,71\"\n\t},\n\t\"--now-datavis_color--orange-6\": {\n\t\t\"name\": \"datavis.color.orange6\",\n\t\t\"initial\": \"207,123,63\"\n\t},\n\t\"--now-datavis_color--orange-7\": {\n\t\t\"name\": \"datavis.color.orange7\",\n\t\t\"initial\": \"177,104,53\"\n\t},\n\t\"--now-datavis_color--orange-8\": {\n\t\t\"name\": \"datavis.color.orange8\",\n\t\t\"initial\": \"149,88,45\"\n\t},\n\t\"--now-datavis_color--orange-9\": {\n\t\t\"name\": \"datavis.color.orange9\",\n\t\t\"initial\": \"122,71,36\"\n\t},\n\t\"--now-datavis_color--pink-0\": {\n\t\t\"name\": \"datavis.color.pink0\",\n\t\t\"initial\": \"246,213,246\"\n\t},\n\t\"--now-datavis_color--pink-1\": {\n\t\t\"name\": \"datavis.color.pink1\",\n\t\t\"initial\": \"240,188,240\"\n\t},\n\t\"--now-datavis_color--pink-10\": {\n\t\t\"name\": \"datavis.color.pink10\",\n\t\t\"initial\": \"88,34,88\"\n\t},\n\t\"--now-datavis_color--pink-2\": {\n\t\t\"name\": \"datavis.color.pink2\",\n\t\t\"initial\": \"235,162,235\"\n\t},\n\t\"--now-datavis_color--pink-3\": {\n\t\t\"name\": \"datavis.color.pink3\",\n\t\t\"initial\": \"228,134,228\"\n\t},\n\t\"--now-datavis_color--pink-4\": {\n\t\t\"name\": \"datavis.color.pink4\",\n\t\t\"initial\": \"224,108,224\"\n\t},\n\t\"--now-datavis_color--pink-5\": {\n\t\t\"name\": \"datavis.color.pink5\",\n\t\t\"initial\": \"217,84,217\"\n\t},\n\t\"--now-datavis_color--pink-6\": {\n\t\t\"name\": \"datavis.color.pink6\",\n\t\t\"initial\": \"191,74,191\"\n\t},\n\t\"--now-datavis_color--pink-7\": {\n\t\t\"name\": \"datavis.color.pink7\",\n\t\t\"initial\": \"165,64,165\"\n\t},\n\t\"--now-datavis_color--pink-8\": {\n\t\t\"name\": \"datavis.color.pink8\",\n\t\t\"initial\": \"140,54,140\"\n\t},\n\t\"--now-datavis_color--pink-9\": {\n\t\t\"name\": \"datavis.color.pink9\",\n\t\t\"initial\": \"114,44,114\"\n\t},\n\t\"--now-datavis_color--positive\": {\n\t\t\"name\": \"datavis.color.positive\",\n\t\t\"derived\": \"--now-color_alert--positive-3\"\n\t},\n\t\"--now-datavis_color--primary\": {\n\t\t\"name\": \"datavis.color.primary\",\n\t\t\"derived\": \"--now-color--neutral-0\"\n\t},\n\t\"--now-datavis_color--purple-0\": {\n\t\t\"name\": \"datavis.color.purple0\",\n\t\t\"initial\": \"216,216,238\"\n\t},\n\t\"--now-datavis_color--purple-1\": {\n\t\t\"name\": \"datavis.color.purple1\",\n\t\t\"initial\": \"190,190,228\"\n\t},\n\t\"--now-datavis_color--purple-10\": {\n\t\t\"name\": \"datavis.color.purple10\",\n\t\t\"initial\": \"38,38,75\"\n\t},\n\t\"--now-datavis_color--purple-2\": {\n\t\t\"name\": \"datavis.color.purple2\",\n\t\t\"initial\": \"166,165,217\"\n\t},\n\t\"--now-datavis_color--purple-3\": {\n\t\t\"name\": \"datavis.color.purple3\",\n\t\t\"initial\": \"145,144,208\"\n\t},\n\t\"--now-datavis_color--purple-4\": {\n\t\t\"name\": \"datavis.color.purple4\",\n\t\t\"initial\": \"120,118,198\"\n\t},\n\t\"--now-datavis_color--purple-5\": {\n\t\t\"name\": \"datavis.color.purple5\",\n\t\t\"initial\": \"95,93,187\"\n\t},\n\t\"--now-datavis_color--purple-6\": {\n\t\t\"name\": \"datavis.color.purple6\",\n\t\t\"initial\": \"85,84,166\"\n\t},\n\t\"--now-datavis_color--purple-7\": {\n\t\t\"name\": \"datavis.color.purple7\",\n\t\t\"initial\": \"73,72,142\"\n\t},\n\t\"--now-datavis_color--purple-8\": {\n\t\t\"name\": \"datavis.color.purple8\",\n\t\t\"initial\": \"60,60,119\"\n\t},\n\t\"--now-datavis_color--purple-9\": {\n\t\t\"name\": \"datavis.color.purple9\",\n\t\t\"initial\": \"50,50,98\"\n\t},\n\t\"--now-datavis_color--qualitative-0\": {\n\t\t\"name\": \"datavis.color.qualitative0\",\n\t\t\"derived\": \"--now-datavis_color--blue-5\"\n\t},\n\t\"--now-datavis_color--qualitative-1\": {\n\t\t\"name\": \"datavis.color.qualitative1\",\n\t\t\"derived\": \"--now-datavis_color--orange-3\"\n\t},\n\t\"--now-datavis_color--qualitative-10\": {\n\t\t\"name\": \"datavis.color.qualitative10\",\n\t\t\"derived\": \"--now-datavis_color--teal-5\"\n\t},\n\t\"--now-datavis_color--qualitative-11\": {\n\t\t\"name\": \"datavis.color.qualitative11\",\n\t\t\"derived\": \"--now-datavis_color--blue-4\"\n\t},\n\t\"--now-datavis_color--qualitative-12\": {\n\t\t\"name\": \"datavis.color.qualitative12\",\n\t\t\"derived\": \"--now-datavis_color--orange-2\"\n\t},\n\t\"--now-datavis_color--qualitative-13\": {\n\t\t\"name\": \"datavis.color.qualitative13\",\n\t\t\"derived\": \"--now-datavis_color--green-4\"\n\t},\n\t\"--now-datavis_color--qualitative-14\": {\n\t\t\"name\": \"datavis.color.qualitative14\",\n\t\t\"derived\": \"--now-datavis_color--pink-2\"\n\t},\n\t\"--now-datavis_color--qualitative-15\": {\n\t\t\"name\": \"datavis.color.qualitative15\",\n\t\t\"derived\": \"--now-datavis_color--brown-4\"\n\t},\n\t\"--now-datavis_color--qualitative-16\": {\n\t\t\"name\": \"datavis.color.qualitative16\",\n\t\t\"derived\": \"--now-datavis_color--violet-2\"\n\t},\n\t\"--now-datavis_color--qualitative-17\": {\n\t\t\"name\": \"datavis.color.qualitative17\",\n\t\t\"derived\": \"--now-datavis_color--yellow-green-4\"\n\t},\n\t\"--now-datavis_color--qualitative-18\": {\n\t\t\"name\": \"datavis.color.qualitative18\",\n\t\t\"derived\": \"--now-datavis_color--red-2\"\n\t},\n\t\"--now-datavis_color--qualitative-19\": {\n\t\t\"name\": \"datavis.color.qualitative19\",\n\t\t\"derived\": \"--now-datavis_color--purple-4\"\n\t},\n\t\"--now-datavis_color--qualitative-2\": {\n\t\t\"name\": \"datavis.color.qualitative2\",\n\t\t\"derived\": \"--now-datavis_color--green-5\"\n\t},\n\t\"--now-datavis_color--qualitative-20\": {\n\t\t\"name\": \"datavis.color.qualitative20\",\n\t\t\"derived\": \"--now-datavis_color--olive-2\"\n\t},\n\t\"--now-datavis_color--qualitative-21\": {\n\t\t\"name\": \"datavis.color.qualitative21\",\n\t\t\"derived\": \"--now-datavis_color--teal-4\"\n\t},\n\t\"--now-datavis_color--qualitative-22\": {\n\t\t\"name\": \"datavis.color.qualitative22\",\n\t\t\"derived\": \"--now-datavis_color--blue-8\"\n\t},\n\t\"--now-datavis_color--qualitative-23\": {\n\t\t\"name\": \"datavis.color.qualitative23\",\n\t\t\"derived\": \"--now-datavis_color--orange-6\"\n\t},\n\t\"--now-datavis_color--qualitative-24\": {\n\t\t\"name\": \"datavis.color.qualitative24\",\n\t\t\"derived\": \"--now-datavis_color--green-8\"\n\t},\n\t\"--now-datavis_color--qualitative-25\": {\n\t\t\"name\": \"datavis.color.qualitative25\",\n\t\t\"derived\": \"--now-datavis_color--pink-6\"\n\t},\n\t\"--now-datavis_color--qualitative-26\": {\n\t\t\"name\": \"datavis.color.qualitative26\",\n\t\t\"derived\": \"--now-datavis_color--brown-8\"\n\t},\n\t\"--now-datavis_color--qualitative-27\": {\n\t\t\"name\": \"datavis.color.qualitative27\",\n\t\t\"derived\": \"--now-datavis_color--violet-6\"\n\t},\n\t\"--now-datavis_color--qualitative-28\": {\n\t\t\"name\": \"datavis.color.qualitative28\",\n\t\t\"derived\": \"--now-datavis_color--yellow-green-8\"\n\t},\n\t\"--now-datavis_color--qualitative-29\": {\n\t\t\"name\": \"datavis.color.qualitative29\",\n\t\t\"derived\": \"--now-datavis_color--red-6\"\n\t},\n\t\"--now-datavis_color--qualitative-3\": {\n\t\t\"name\": \"datavis.color.qualitative3\",\n\t\t\"derived\": \"--now-datavis_color--pink-3\"\n\t},\n\t\"--now-datavis_color--qualitative-30\": {\n\t\t\"name\": \"datavis.color.qualitative30\",\n\t\t\"derived\": \"--now-datavis_color--purple-8\"\n\t},\n\t\"--now-datavis_color--qualitative-31\": {\n\t\t\"name\": \"datavis.color.qualitative31\",\n\t\t\"derived\": \"--now-datavis_color--olive-6\"\n\t},\n\t\"--now-datavis_color--qualitative-32\": {\n\t\t\"name\": \"datavis.color.qualitative32\",\n\t\t\"derived\": \"--now-datavis_color--teal-8\"\n\t},\n\t\"--now-datavis_color--qualitative-4\": {\n\t\t\"name\": \"datavis.color.qualitative4\",\n\t\t\"derived\": \"--now-datavis_color--brown-5\"\n\t},\n\t\"--now-datavis_color--qualitative-5\": {\n\t\t\"name\": \"datavis.color.qualitative5\",\n\t\t\"derived\": \"--now-datavis_color--violet-3\"\n\t},\n\t\"--now-datavis_color--qualitative-6\": {\n\t\t\"name\": \"datavis.color.qualitative6\",\n\t\t\"derived\": \"--now-datavis_color--yellow-green-5\"\n\t},\n\t\"--now-datavis_color--qualitative-7\": {\n\t\t\"name\": \"datavis.color.qualitative7\",\n\t\t\"derived\": \"--now-datavis_color--red-3\"\n\t},\n\t\"--now-datavis_color--qualitative-8\": {\n\t\t\"name\": \"datavis.color.qualitative8\",\n\t\t\"derived\": \"--now-datavis_color--purple-5\"\n\t},\n\t\"--now-datavis_color--qualitative-9\": {\n\t\t\"name\": \"datavis.color.qualitative9\",\n\t\t\"derived\": \"--now-datavis_color--olive-3\"\n\t},\n\t\"--now-datavis_color--red-0\": {\n\t\t\"name\": \"datavis.color.red0\",\n\t\t\"initial\": \"246,213,214\"\n\t},\n\t\"--now-datavis_color--red-1\": {\n\t\t\"name\": \"datavis.color.red1\",\n\t\t\"initial\": \"240,188,188\"\n\t},\n\t\"--now-datavis_color--red-10\": {\n\t\t\"name\": \"datavis.color.red10\",\n\t\t\"initial\": \"88,34,34\"\n\t},\n\t\"--now-datavis_color--red-2\": {\n\t\t\"name\": \"datavis.color.red2\",\n\t\t\"initial\": \"235,162,164\"\n\t},\n\t\"--now-datavis_color--red-3\": {\n\t\t\"name\": \"datavis.color.red3\",\n\t\t\"initial\": \"228,134,135\"\n\t},\n\t\"--now-datavis_color--red-4\": {\n\t\t\"name\": \"datavis.color.red4\",\n\t\t\"initial\": \"224,108,110\"\n\t},\n\t\"--now-datavis_color--red-5\": {\n\t\t\"name\": \"datavis.color.red5\",\n\t\t\"initial\": \"217,84,84\"\n\t},\n\t\"--now-datavis_color--red-6\": {\n\t\t\"name\": \"datavis.color.red6\",\n\t\t\"initial\": \"191,74,76\"\n\t},\n\t\"--now-datavis_color--red-7\": {\n\t\t\"name\": \"datavis.color.red7\",\n\t\t\"initial\": \"165,64,66\"\n\t},\n\t\"--now-datavis_color--red-8\": {\n\t\t\"name\": \"datavis.color.red8\",\n\t\t\"initial\": \"140,54,54\"\n\t},\n\t\"--now-datavis_color--red-9\": {\n\t\t\"name\": \"datavis.color.red9\",\n\t\t\"initial\": \"114,44,44\"\n\t},\n\t\"--now-datavis_color--teal-0\": {\n\t\t\"name\": \"datavis.color.teal0\",\n\t\t\"initial\": \"210,244,236\"\n\t},\n\t\"--now-datavis_color--teal-1\": {\n\t\t\"name\": \"datavis.color.teal1\",\n\t\t\"initial\": \"182,237,225\"\n\t},\n\t\"--now-datavis_color--teal-10\": {\n\t\t\"name\": \"datavis.color.teal10\",\n\t\t\"initial\": \"30,82,71\"\n\t},\n\t\"--now-datavis_color--teal-2\": {\n\t\t\"name\": \"datavis.color.teal2\",\n\t\t\"initial\": \"158,230,214\"\n\t},\n\t\"--now-datavis_color--teal-3\": {\n\t\t\"name\": \"datavis.color.teal3\",\n\t\t\"initial\": \"129,223,202\"\n\t},\n\t\"--now-datavis_color--teal-4\": {\n\t\t\"name\": \"datavis.color.teal4\",\n\t\t\"initial\": \"105,216,192\"\n\t},\n\t\"--now-datavis_color--teal-5\": {\n\t\t\"name\": \"datavis.color.teal5\",\n\t\t\"initial\": \"77,209,180\"\n\t},\n\t\"--now-datavis_color--teal-6\": {\n\t\t\"name\": \"datavis.color.teal6\",\n\t\t\"initial\": \"66,184,158\"\n\t},\n\t\"--now-datavis_color--teal-7\": {\n\t\t\"name\": \"datavis.color.teal7\",\n\t\t\"initial\": \"58,161,139\"\n\t},\n\t\"--now-datavis_color--teal-8\": {\n\t\t\"name\": \"datavis.color.teal8\",\n\t\t\"initial\": \"50,134,116\"\n\t},\n\t\"--now-datavis_color--teal-9\": {\n\t\t\"name\": \"datavis.color.teal9\",\n\t\t\"initial\": \"40,108,93\"\n\t},\n\t\"--now-datavis_color--violet-0\": {\n\t\t\"name\": \"datavis.color.violet0\",\n\t\t\"initial\": \"232,216,238\"\n\t},\n\t\"--now-datavis_color--violet-1\": {\n\t\t\"name\": \"datavis.color.violet1\",\n\t\t\"initial\": \"218,190,228\"\n\t},\n\t\"--now-datavis_color--violet-10\": {\n\t\t\"name\": \"datavis.color.violet10\",\n\t\t\"initial\": \"65,38,75\"\n\t},\n\t\"--now-datavis_color--violet-2\": {\n\t\t\"name\": \"datavis.color.violet2\",\n\t\t\"initial\": \"203,165,217\"\n\t},\n\t\"--now-datavis_color--violet-3\": {\n\t\t\"name\": \"datavis.color.violet3\",\n\t\t\"initial\": \"191,144,208\"\n\t},\n\t\"--now-datavis_color--violet-4\": {\n\t\t\"name\": \"datavis.color.violet4\",\n\t\t\"initial\": \"177,118,198\"\n\t},\n\t\"--now-datavis_color--violet-5\": {\n\t\t\"name\": \"datavis.color.violet5\",\n\t\t\"initial\": \"162,93,187\"\n\t},\n\t\"--now-datavis_color--violet-6\": {\n\t\t\"name\": \"datavis.color.violet6\",\n\t\t\"initial\": \"144,84,166\"\n\t},\n\t\"--now-datavis_color--violet-7\": {\n\t\t\"name\": \"datavis.color.violet7\",\n\t\t\"initial\": \"124,72,142\"\n\t},\n\t\"--now-datavis_color--violet-8\": {\n\t\t\"name\": \"datavis.color.violet8\",\n\t\t\"initial\": \"103,60,119\"\n\t},\n\t\"--now-datavis_color--violet-9\": {\n\t\t\"name\": \"datavis.color.violet9\",\n\t\t\"initial\": \"85,50,98\"\n\t},\n\t\"--now-datavis_color--yellow-0\": {\n\t\t\"name\": \"datavis.color.yellow0\",\n\t\t\"initial\": \"255,238,204\"\n\t},\n\t\"--now-datavis_color--yellow-1\": {\n\t\t\"name\": \"datavis.color.yellow1\",\n\t\t\"initial\": \"255,225,163\"\n\t},\n\t\"--now-datavis_color--yellow-10\": {\n\t\t\"name\": \"datavis.color.yellow10\",\n\t\t\"initial\": \"102,69,0\"\n\t},\n\t\"--now-datavis_color--yellow-2\": {\n\t\t\"name\": \"datavis.color.yellow2\",\n\t\t\"initial\": \"255,212,122\"\n\t},\n\t\"--now-datavis_color--yellow-3\": {\n\t\t\"name\": \"datavis.color.yellow3\",\n\t\t\"initial\": \"255,199,82\"\n\t},\n\t\"--now-datavis_color--yellow-4\": {\n\t\t\"name\": \"datavis.color.yellow4\",\n\t\t\"initial\": \"255,185,41\"\n\t},\n\t\"--now-datavis_color--yellow-5\": {\n\t\t\"name\": \"datavis.color.yellow5\",\n\t\t\"initial\": \"255,172,0\"\n\t},\n\t\"--now-datavis_color--yellow-6\": {\n\t\t\"name\": \"datavis.color.yellow6\",\n\t\t\"initial\": \"224,151,0\"\n\t},\n\t\"--now-datavis_color--yellow-7\": {\n\t\t\"name\": \"datavis.color.yellow7\",\n\t\t\"initial\": \"194,131,0\"\n\t},\n\t\"--now-datavis_color--yellow-8\": {\n\t\t\"name\": \"datavis.color.yellow8\",\n\t\t\"initial\": \"163,110,0\"\n\t},\n\t\"--now-datavis_color--yellow-9\": {\n\t\t\"name\": \"datavis.color.yellow9\",\n\t\t\"initial\": \"133,89,0\"\n\t},\n\t\"--now-datavis_color--yellow-green-0\": {\n\t\t\"name\": \"datavis.color.yellowGreen0\",\n\t\t\"initial\": \"238,245,204\"\n\t},\n\t\"--now-datavis_color--yellow-green-1\": {\n\t\t\"name\": \"datavis.color.yellowGreen1\",\n\t\t\"initial\": \"227,238,170\"\n\t},\n\t\"--now-datavis_color--yellow-green-10\": {\n\t\t\"name\": \"datavis.color.yellowGreen10\",\n\t\t\"initial\": \"74,86,16\"\n\t},\n\t\"--now-datavis_color--yellow-green-2\": {\n\t\t\"name\": \"datavis.color.yellowGreen2\",\n\t\t\"initial\": \"214,231,136\"\n\t},\n\t\"--now-datavis_color--yellow-green-3\": {\n\t\t\"name\": \"datavis.color.yellowGreen3\",\n\t\t\"initial\": \"206,226,105\"\n\t},\n\t\"--now-datavis_color--yellow-green-4\": {\n\t\t\"name\": \"datavis.color.yellowGreen4\",\n\t\t\"initial\": \"194,219,72\"\n\t},\n\t\"--now-datavis_color--yellow-green-5\": {\n\t\t\"name\": \"datavis.color.yellowGreen5\",\n\t\t\"initial\": \"185,214,41\"\n\t},\n\t\"--now-datavis_color--yellow-green-6\": {\n\t\t\"name\": \"datavis.color.yellowGreen6\",\n\t\t\"initial\": \"163,188,36\"\n\t},\n\t\"--now-datavis_color--yellow-green-7\": {\n\t\t\"name\": \"datavis.color.yellowGreen7\",\n\t\t\"initial\": \"139,163,31\"\n\t},\n\t\"--now-datavis_color--yellow-green-8\": {\n\t\t\"name\": \"datavis.color.yellowGreen8\",\n\t\t\"initial\": \"119,137,26\"\n\t},\n\t\"--now-datavis_color--yellow-green-9\": {\n\t\t\"name\": \"datavis.color.yellowGreen9\",\n\t\t\"initial\": \"95,111,21\"\n\t},\n\t\"--now-datavis_register_swatch--border-radius\": {\n\t\t\"name\": \"datavis.register.swatch.borderRadius\",\n\t\t\"initial\": \"0\"\n\t}\n}","export default {\n\t\"--now-actionable--border-radius\": {\n\t\t\"name\": \"actionable.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-actionable--border-width\": {\n\t\t\"name\": \"actionable.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-actionable--font-family\": {\n\t\t\"name\": \"actionable.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-actionable--font-size--lg\": {\n\t\t\"name\": \"actionable.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-actionable--font-size--md\": {\n\t\t\"name\": \"actionable.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-actionable--font-size--sm\": {\n\t\t\"name\": \"actionable.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-actionable--font-style\": {\n\t\t\"name\": \"actionable.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-actionable--font-weight\": {\n\t\t\"name\": \"actionable.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-actionable--opacity--disabled\": {\n\t\t\"name\": \"actionable.opacity.disabled\",\n\t\t\"derived\": \"--now-opacity--less\"\n\t},\n\t\"--now-actionable--text-transform\": {\n\t\t\"name\": \"actionable.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-container_body--font-size--md\": {\n\t\t\"name\": \"container.body.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-container_body--font-size--sm\": {\n\t\t\"name\": \"container.body.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-container_footer--font-size--md\": {\n\t\t\"name\": \"container.footer.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-container_footer--font-size--sm\": {\n\t\t\"name\": \"container.footer.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-container_header--font-size--lg\": {\n\t\t\"name\": \"container.header.fontSize.lg\",\n\t\t\"derived\": \"--now-display-type_header--font-size--lg\"\n\t},\n\t\"--now-container_header--font-size--lg1\": {\n\t\t\"name\": \"container.header.fontSize.lg1\",\n\t\t\"derived\": \"--now-display-type_header--font-size--lg1\"\n\t},\n\t\"--now-container_header--font-size--md\": {\n\t\t\"name\": \"container.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-container_header--font-size--sm\": {\n\t\t\"name\": \"container.header.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_header--font-size--sm\"\n\t},\n\t\"--now-container_subheader--font-size--md\": {\n\t\t\"name\": \"container.subheader.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_subheader--font-size--md\"\n\t},\n\t\"--now-container_subheader--font-size--sm\": {\n\t\t\"name\": \"container.subheader.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_subheader--font-size--sm\"\n\t},\n\t\"--now-container--border-color\": {\n\t\t\"name\": \"container.borderColor\",\n\t\t\"derived\": \"--now-color_border--tertiary\"\n\t},\n\t\"--now-container--border-radius\": {\n\t\t\"name\": \"container.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-container--border-width\": {\n\t\t\"name\": \"container.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-container--color\": {\n\t\t\"name\": \"container.color\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-container--font-family\": {\n\t\t\"name\": \"container.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-container--font-style\": {\n\t\t\"name\": \"container.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-container--font-weight\": {\n\t\t\"name\": \"container.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-container--text-transform\": {\n\t\t\"name\": \"container.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-display-type_header--font-size--lg\": {\n\t\t\"name\": \"displayType.header.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg\"\n\t},\n\t\"--now-display-type_header--font-size--lg1\": {\n\t\t\"name\": \"displayType.header.fontSize.lg1\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-display-type_header--font-size--lg2\": {\n\t\t\"name\": \"displayType.header.fontSize.lg2\",\n\t\t\"derived\": \"--now-font-size--lg2\"\n\t},\n\t\"--now-display-type_header--font-size--lg3\": {\n\t\t\"name\": \"displayType.header.fontSize.lg3\",\n\t\t\"derived\": \"--now-font-size--lg3\"\n\t},\n\t\"--now-display-type_header--font-size--md\": {\n\t\t\"name\": \"displayType.header.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-display-type_header--font-size--md1\": {\n\t\t\"name\": \"displayType.header.fontSize.md1\",\n\t\t\"derived\": \"--now-font-size--md2\"\n\t},\n\t\"--now-display-type_header--font-size--sm\": {\n\t\t\"name\": \"displayType.header.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-display-type_label--color\": {\n\t\t\"name\": \"displayType.label.color\",\n\t\t\"derived\": \"--now-color_text--tertiary\"\n\t},\n\t\"--now-display-type_label--font-family\": {\n\t\t\"name\": \"displayType.label.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type_label--font-size--md\": {\n\t\t\"name\": \"displayType.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-display-type_label--font-size--sm\": {\n\t\t\"name\": \"displayType.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-display-type_label--font-style\": {\n\t\t\"name\": \"displayType.label.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type_label--font-weight\": {\n\t\t\"name\": \"displayType.label.fontWeight\",\n\t\t\"derived\": \"--now-display-type--font-weight\"\n\t},\n\t\"--now-display-type_label--text-transform\": {\n\t\t\"name\": \"displayType.label.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type_subheader--font-size--md\": {\n\t\t\"name\": \"displayType.subheader.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-display-type_subheader--font-size--sm\": {\n\t\t\"name\": \"displayType.subheader.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-display-type_value--color\": {\n\t\t\"name\": \"displayType.value.color\",\n\t\t\"derived\": \"--now-display-type--color\"\n\t},\n\t\"--now-display-type_value--font-family\": {\n\t\t\"name\": \"displayType.value.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type_value--font-size--md\": {\n\t\t\"name\": \"displayType.value.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-display-type_value--font-size--sm\": {\n\t\t\"name\": \"displayType.value.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-display-type_value--font-style\": {\n\t\t\"name\": \"displayType.value.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type_value--font-weight\": {\n\t\t\"name\": \"displayType.value.fontWeight\",\n\t\t\"derived\": \"--now-display-type--font-weight\"\n\t},\n\t\"--now-display-type_value--text-transform\": {\n\t\t\"name\": \"displayType.value.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type--color\": {\n\t\t\"name\": \"displayType.color\",\n\t\t\"derived\": \"--now-color_text--primary\"\n\t},\n\t\"--now-display-type--font-family\": {\n\t\t\"name\": \"displayType.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-display-type--font-style\": {\n\t\t\"name\": \"displayType.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-display-type--font-weight\": {\n\t\t\"name\": \"displayType.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-display-type--header-primary--font-family\": {\n\t\t\"name\": \"displayType.headerPrimary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--primary--font-family\"\n\t},\n\t\"--now-display-type--header-primary--font-style\": {\n\t\t\"name\": \"displayType.headerPrimary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--primary--font-style\"\n\t},\n\t\"--now-display-type--header-primary--font-weight\": {\n\t\t\"name\": \"displayType.headerPrimary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--primary--font-weight\"\n\t},\n\t\"--now-display-type--header-primary--text-transform\": {\n\t\t\"name\": \"displayType.headerPrimary.textTransform\",\n\t\t\"derived\": \"--now-display-type--primary--text-transform\"\n\t},\n\t\"--now-display-type--header-secondary--font-family\": {\n\t\t\"name\": \"displayType.headerSecondary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--secondary--font-family\"\n\t},\n\t\"--now-display-type--header-secondary--font-style\": {\n\t\t\"name\": \"displayType.headerSecondary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--secondary--font-style\"\n\t},\n\t\"--now-display-type--header-secondary--font-weight\": {\n\t\t\"name\": \"displayType.headerSecondary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--secondary--font-weight\"\n\t},\n\t\"--now-display-type--header-secondary--text-transform\": {\n\t\t\"name\": \"displayType.headerSecondary.textTransform\",\n\t\t\"derived\": \"--now-display-type--secondary--text-transform\"\n\t},\n\t\"--now-display-type--header-tertiary--font-family\": {\n\t\t\"name\": \"displayType.headerTertiary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-family\"\n\t},\n\t\"--now-display-type--header-tertiary--font-style\": {\n\t\t\"name\": \"displayType.headerTertiary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-style\"\n\t},\n\t\"--now-display-type--header-tertiary--font-weight\": {\n\t\t\"name\": \"displayType.headerTertiary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-weight\"\n\t},\n\t\"--now-display-type--header-tertiary--text-transform\": {\n\t\t\"name\": \"displayType.headerTertiary.textTransform\",\n\t\t\"derived\": \"--now-display-type--tertiary--text-transform\"\n\t},\n\t\"--now-display-type--line-height-crop--after\": {\n\t\t\"name\": \"displayType.lineHeightCrop.after\",\n\t\t\"derived\": \"--now-line-height-crop--after\"\n\t},\n\t\"--now-display-type--line-height-crop--before\": {\n\t\t\"name\": \"displayType.lineHeightCrop.before\",\n\t\t\"derived\": \"--now-line-height-crop--before\"\n\t},\n\t\"--now-display-type--primary--color\": {\n\t\t\"name\": \"displayType.primary.color\",\n\t\t\"derived\": \"--now-display-type--color\"\n\t},\n\t\"--now-display-type--primary--font-family\": {\n\t\t\"name\": \"displayType.primary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type--primary--font-style\": {\n\t\t\"name\": \"displayType.primary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type--primary--font-weight\": {\n\t\t\"name\": \"displayType.primary.fontWeight\",\n\t\t\"initial\": \"600\"\n\t},\n\t\"--now-display-type--primary--text-transform\": {\n\t\t\"name\": \"displayType.primary.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type--secondary--color\": {\n\t\t\"name\": \"displayType.secondary.color\",\n\t\t\"derived\": \"--now-color_text--secondary\"\n\t},\n\t\"--now-display-type--secondary--font-family\": {\n\t\t\"name\": \"displayType.secondary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type--secondary--font-style\": {\n\t\t\"name\": \"displayType.secondary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type--secondary--font-weight\": {\n\t\t\"name\": \"displayType.secondary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--font-weight\"\n\t},\n\t\"--now-display-type--secondary--text-transform\": {\n\t\t\"name\": \"displayType.secondary.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type--tertiary--color\": {\n\t\t\"name\": \"displayType.tertiary.color\",\n\t\t\"derived\": \"--now-color_text--tertiary\"\n\t},\n\t\"--now-display-type--tertiary--font-family\": {\n\t\t\"name\": \"displayType.tertiary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type--tertiary--font-style\": {\n\t\t\"name\": \"displayType.tertiary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type--tertiary--font-weight\": {\n\t\t\"name\": \"displayType.tertiary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--font-weight\"\n\t},\n\t\"--now-display-type--tertiary--text-transform\": {\n\t\t\"name\": \"displayType.tertiary.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type--text-transform\": {\n\t\t\"name\": \"displayType.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-display-type--title-primary--font-family\": {\n\t\t\"name\": \"displayType.titlePrimary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--primary--font-family\"\n\t},\n\t\"--now-display-type--title-primary--font-style\": {\n\t\t\"name\": \"displayType.titlePrimary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--primary--font-style\"\n\t},\n\t\"--now-display-type--title-primary--font-weight\": {\n\t\t\"name\": \"displayType.titlePrimary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--primary--font-weight\"\n\t},\n\t\"--now-display-type--title-primary--text-transform\": {\n\t\t\"name\": \"displayType.titlePrimary.textTransform\",\n\t\t\"derived\": \"--now-display-type--primary--text-transform\"\n\t},\n\t\"--now-display-type--title-secondary--font-family\": {\n\t\t\"name\": \"displayType.titleSecondary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--secondary--font-family\"\n\t},\n\t\"--now-display-type--title-secondary--font-style\": {\n\t\t\"name\": \"displayType.titleSecondary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--secondary--font-style\"\n\t},\n\t\"--now-display-type--title-secondary--font-weight\": {\n\t\t\"name\": \"displayType.titleSecondary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--secondary--font-weight\"\n\t},\n\t\"--now-display-type--title-secondary--text-transform\": {\n\t\t\"name\": \"displayType.titleSecondary.textTransform\",\n\t\t\"derived\": \"--now-display-type--secondary--text-transform\"\n\t},\n\t\"--now-display-type--title-tertiary--font-family\": {\n\t\t\"name\": \"displayType.titleTertiary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-family\"\n\t},\n\t\"--now-display-type--title-tertiary--font-style\": {\n\t\t\"name\": \"displayType.titleTertiary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-style\"\n\t},\n\t\"--now-display-type--title-tertiary--font-weight\": {\n\t\t\"name\": \"displayType.titleTertiary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-weight\"\n\t},\n\t\"--now-display-type--title-tertiary--text-transform\": {\n\t\t\"name\": \"displayType.titleTertiary.textTransform\",\n\t\t\"derived\": \"--now-display-type--tertiary--text-transform\"\n\t},\n\t\"--now-form-control_handle--border-radius\": {\n\t\t\"name\": \"formControl.handle.borderRadius\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-form-control_handle--border-width\": {\n\t\t\"name\": \"formControl.handle.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-form-control_label--font-size--lg\": {\n\t\t\"name\": \"formControl.label.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-form-control_label--font-size--md\": {\n\t\t\"name\": \"formControl.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-form-control_label--font-size--sm\": {\n\t\t\"name\": \"formControl.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-form-control_label--font-size--xs\": {\n\t\t\"name\": \"formControl.label.fontSize.xs\",\n\t\t\"derived\": \"--now-font-size--xs\"\n\t},\n\t\"--now-form-control_message--font-size--sm\": {\n\t\t\"name\": \"formControl.message.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-form-control_track--border-radius\": {\n\t\t\"name\": \"formControl.track.borderRadius\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-form-control_track--border-width\": {\n\t\t\"name\": \"formControl.track.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-form-control_value--font-size--lg\": {\n\t\t\"name\": \"formControl.value.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-form-control_value--font-size--md\": {\n\t\t\"name\": \"formControl.value.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-form-control_value--font-size--sm\": {\n\t\t\"name\": \"formControl.value.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-form-control_value--font-size--xs\": {\n\t\t\"name\": \"formControl.value.fontSize.xs\",\n\t\t\"derived\": \"--now-font-size--xs\"\n\t},\n\t\"--now-form-control--border-radius\": {\n\t\t\"name\": \"formControl.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-form-control--border-width\": {\n\t\t\"name\": \"formControl.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-form-control--font-family\": {\n\t\t\"name\": \"formControl.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-form-control--font-style\": {\n\t\t\"name\": \"formControl.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-form-control--font-weight\": {\n\t\t\"name\": \"formControl.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-form-control--text-transform\": {\n\t\t\"name\": \"formControl.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-identifier_label--font-size--lg\": {\n\t\t\"name\": \"identifier.label.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg\"\n\t},\n\t\"--now-identifier_label--font-size--lg1\": {\n\t\t\"name\": \"identifier.label.fontSize.lg1\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-identifier_label--font-size--lg2\": {\n\t\t\"name\": \"identifier.label.fontSize.lg2\",\n\t\t\"derived\": \"--now-font-size--lg2\"\n\t},\n\t\"--now-identifier_label--font-size--lg3\": {\n\t\t\"name\": \"identifier.label.fontSize.lg3\",\n\t\t\"derived\": \"--now-font-size--lg3\"\n\t},\n\t\"--now-identifier_label--font-size--md\": {\n\t\t\"name\": \"identifier.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-identifier_label--font-size--sm\": {\n\t\t\"name\": \"identifier.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-identifier_label--font-size--xl3\": {\n\t\t\"name\": \"identifier.label.fontSize.xl3\",\n\t\t\"derived\": \"--now-font-size--xl3\"\n\t},\n\t\"--now-identifier_label--font-size--xs\": {\n\t\t\"name\": \"identifier.label.fontSize.xs\",\n\t\t\"derived\": \"--now-font-size--xs\"\n\t},\n\t\"--now-identifier--border-radius\": {\n\t\t\"name\": \"identifier.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-identifier--border-width\": {\n\t\t\"name\": \"identifier.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-identifier--font-family\": {\n\t\t\"name\": \"identifier.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-identifier--font-style\": {\n\t\t\"name\": \"identifier.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-identifier--font-weight\": {\n\t\t\"name\": \"identifier.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-identifier--text-transform\": {\n\t\t\"name\": \"identifier.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-indicator_label--font-size--lg\": {\n\t\t\"name\": \"indicator.label.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-indicator_label--font-size--md\": {\n\t\t\"name\": \"indicator.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-indicator_label--font-size--sm\": {\n\t\t\"name\": \"indicator.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-indicator--border-radius\": {\n\t\t\"name\": \"indicator.borderRadius\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-indicator--border-width\": {\n\t\t\"name\": \"indicator.borderWidth\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-indicator--font-family\": {\n\t\t\"name\": \"indicator.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-indicator--font-style\": {\n\t\t\"name\": \"indicator.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-indicator--font-weight\": {\n\t\t\"name\": \"indicator.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-indicator--text-transform\": {\n\t\t\"name\": \"indicator.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-loading_label--font-size--md\": {\n\t\t\"name\": \"loading.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-loading_label--font-size--sm\": {\n\t\t\"name\": \"loading.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-loading--border-radius\": {\n\t\t\"name\": \"loading.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-loading--border-width\": {\n\t\t\"name\": \"loading.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-loading--font-family\": {\n\t\t\"name\": \"loading.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-loading--font-style\": {\n\t\t\"name\": \"loading.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-loading--font-weight\": {\n\t\t\"name\": \"loading.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-loading--initial--background-color\": {\n\t\t\"name\": \"loading.initial.backgroundColor\",\n\t\t\"derived\": \"--now-color--primary-1\"\n\t},\n\t\"--now-loading--initial--border-color\": {\n\t\t\"name\": \"loading.initial.borderColor\",\n\t\t\"derived\": \"--now-color--primary-2\"\n\t},\n\t\"--now-loading--text-transform\": {\n\t\t\"name\": \"loading.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-menu_divider--color\": {\n\t\t\"name\": \"menu.divider.color\",\n\t\t\"derived\": \"--now-color_divider--tertiary\"\n\t},\n\t\"--now-menu_divider--width\": {\n\t\t\"name\": \"menu.divider.width\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-menu_field--font-size--md\": {\n\t\t\"name\": \"menu.field.fontSize.md\",\n\t\t\"derived\": \"--now-form-control_value--font-size--md\"\n\t},\n\t\"--now-menu_field--font-size--sm\": {\n\t\t\"name\": \"menu.field.fontSize.sm\",\n\t\t\"derived\": \"--now-form-control_value--font-size--sm\"\n\t},\n\t\"--now-menu_header--font-size--md\": {\n\t\t\"name\": \"menu.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-menu_header--font-size--sm\": {\n\t\t\"name\": \"menu.header.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_header--font-size--sm\"\n\t},\n\t\"--now-menu_heading--font-family\": {\n\t\t\"name\": \"menu.heading.fontFamily\",\n\t\t\"derived\": \"--now-menu--font-family\"\n\t},\n\t\"--now-menu_heading--font-style\": {\n\t\t\"name\": \"menu.heading.fontStyle\",\n\t\t\"derived\": \"--now-menu--font-style\"\n\t},\n\t\"--now-menu_heading--font-weight\": {\n\t\t\"name\": \"menu.heading.fontWeight\",\n\t\t\"derived\": \"--now-menu--font-weight\"\n\t},\n\t\"--now-menu_heading--text-transform\": {\n\t\t\"name\": \"menu.heading.textTransform\",\n\t\t\"derived\": \"--now-menu--text-transform\"\n\t},\n\t\"--now-menu_label--font-size--md\": {\n\t\t\"name\": \"menu.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-menu_label--font-size--sm\": {\n\t\t\"name\": \"menu.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-menu_search--font-family\": {\n\t\t\"name\": \"menu.search.fontFamily\",\n\t\t\"derived\": \"--now-menu--font-family\"\n\t},\n\t\"--now-menu_search--font-style\": {\n\t\t\"name\": \"menu.search.fontStyle\",\n\t\t\"derived\": \"--now-menu--font-style\"\n\t},\n\t\"--now-menu_search--font-weight\": {\n\t\t\"name\": \"menu.search.fontWeight\",\n\t\t\"derived\": \"--now-menu--font-weight\"\n\t},\n\t\"--now-menu_search--text-transform\": {\n\t\t\"name\": \"menu.search.textTransform\",\n\t\t\"derived\": \"--now-menu--text-transform\"\n\t},\n\t\"--now-menu_sublabel--font-family\": {\n\t\t\"name\": \"menu.sublabel.fontFamily\",\n\t\t\"derived\": \"--now-menu--font-family\"\n\t},\n\t\"--now-menu_sublabel--font-size--md\": {\n\t\t\"name\": \"menu.sublabel.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-menu_sublabel--font-size--sm\": {\n\t\t\"name\": \"menu.sublabel.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-menu_sublabel--font-style\": {\n\t\t\"name\": \"menu.sublabel.fontStyle\",\n\t\t\"derived\": \"--now-menu--font-style\"\n\t},\n\t\"--now-menu_sublabel--font-weight\": {\n\t\t\"name\": \"menu.sublabel.fontWeight\",\n\t\t\"derived\": \"--now-menu--font-weight\"\n\t},\n\t\"--now-menu_sublabel--text-transform\": {\n\t\t\"name\": \"menu.sublabel.textTransform\",\n\t\t\"derived\": \"--now-menu--text-transform\"\n\t},\n\t\"--now-menu--background-color\": {\n\t\t\"name\": \"menu.backgroundColor\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-menu--border-color\": {\n\t\t\"name\": \"menu.borderColor\",\n\t\t\"derived\": \"--now-color_border--primary\"\n\t},\n\t\"--now-menu--border-radius\": {\n\t\t\"name\": \"menu.borderRadius\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-menu--border-width\": {\n\t\t\"name\": \"menu.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-menu--font-family\": {\n\t\t\"name\": \"menu.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-menu--font-style\": {\n\t\t\"name\": \"menu.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-menu--font-weight\": {\n\t\t\"name\": \"menu.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-menu--text-transform\": {\n\t\t\"name\": \"menu.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-messaging_header--font-size--md\": {\n\t\t\"name\": \"messaging.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-messaging_message--font-size--md\": {\n\t\t\"name\": \"messaging.message.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-messaging--background-color\": {\n\t\t\"name\": \"messaging.backgroundColor\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-messaging--border-color\": {\n\t\t\"name\": \"messaging.borderColor\",\n\t\t\"derived\": \"--now-color_border--secondary\"\n\t},\n\t\"--now-messaging--border-radius\": {\n\t\t\"name\": \"messaging.borderRadius\",\n\t\t\"initial\": \"4px\"\n\t},\n\t\"--now-messaging--border-width\": {\n\t\t\"name\": \"messaging.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-messaging--font-family\": {\n\t\t\"name\": \"messaging.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-messaging--font-style\": {\n\t\t\"name\": \"messaging.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-messaging--font-weight\": {\n\t\t\"name\": \"messaging.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-messaging--text-transform\": {\n\t\t\"name\": \"messaging.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-navigation_label--font-size--md\": {\n\t\t\"name\": \"navigation.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-navigation_label--font-size--sm\": {\n\t\t\"name\": \"navigation.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-navigation_sublabel--font-size--md\": {\n\t\t\"name\": \"navigation.sublabel.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-navigation_sublabel--font-size--sm\": {\n\t\t\"name\": \"navigation.sublabel.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-navigation--font-family\": {\n\t\t\"name\": \"navigation.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-navigation--font-style\": {\n\t\t\"name\": \"navigation.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-navigation--font-weight\": {\n\t\t\"name\": \"navigation.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-navigation--text-transform\": {\n\t\t\"name\": \"navigation.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-view-control_header--font-size--lg\": {\n\t\t\"name\": \"viewControl.header.fontSize.lg\",\n\t\t\"derived\": \"--now-display-type_header--font-size--lg\"\n\t},\n\t\"--now-view-control_header--font-size--md\": {\n\t\t\"name\": \"viewControl.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-view-control_header--font-size--sm\": {\n\t\t\"name\": \"viewControl.header.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_header--font-size--sm\"\n\t},\n\t\"--now-view-control_label--font-size--md\": {\n\t\t\"name\": \"viewControl.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-view-control_label--font-size--sm\": {\n\t\t\"name\": \"viewControl.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-view-control_subheader--font-size--sm\": {\n\t\t\"name\": \"viewControl.subheader.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_subheader--font-size--sm\"\n\t},\n\t\"--now-view-control--border-radius\": {\n\t\t\"name\": \"viewControl.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-view-control--border-width\": {\n\t\t\"name\": \"viewControl.borderWidth\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-view-control--font-family\": {\n\t\t\"name\": \"viewControl.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-view-control--font-style\": {\n\t\t\"name\": \"viewControl.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-view-control--font-weight\": {\n\t\t\"name\": \"viewControl.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-view-control--text-transform\": {\n\t\t\"name\": \"viewControl.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-window_body--font-size--md\": {\n\t\t\"name\": \"window.body.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-window_body--font-size--sm\": {\n\t\t\"name\": \"window.body.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-window_header--font-size--lg\": {\n\t\t\"name\": \"window.header.fontSize.lg\",\n\t\t\"derived\": \"--now-display-type_header--font-size--lg\"\n\t},\n\t\"--now-window_header--font-size--md\": {\n\t\t\"name\": \"window.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-window_header--font-size--sm\": {\n\t\t\"name\": \"window.header.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_header--font-size--sm\"\n\t},\n\t\"--now-window--background-color\": {\n\t\t\"name\": \"window.backgroundColor\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-window--border-color\": {\n\t\t\"name\": \"window.borderColor\",\n\t\t\"derived\": \"--now-color_divider--secondary\"\n\t},\n\t\"--now-window--border-radius\": {\n\t\t\"name\": \"window.borderRadius\",\n\t\t\"initial\": \"4px\"\n\t},\n\t\"--now-window--border-width\": {\n\t\t\"name\": \"window.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-window--font-family\": {\n\t\t\"name\": \"window.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-window--font-style\": {\n\t\t\"name\": \"window.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-window--font-weight\": {\n\t\t\"name\": \"window.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-window--text-transform\": {\n\t\t\"name\": \"window.textTransform\",\n\t\t\"initial\": \"none\"\n\t}\n}","export default{\n    \"--now-actionable_divider--brand-primary--color\": {\n        \"name\": \"actionable.divider.brandPrimary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-primary--color--active\": {\n        \"name\": \"actionable.divider.brandPrimary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-primary--color--hover\": {\n        \"name\": \"actionable.divider.brandPrimary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-secondary--color\": {\n        \"name\": \"actionable.divider.brandSecondary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-secondary--color--active\": {\n        \"name\": \"actionable.divider.brandSecondary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-secondary--color--hover\": {\n        \"name\": \"actionable.divider.brandSecondary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-tertiary--color\": {\n        \"name\": \"actionable.divider.brandTertiary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-tertiary--color--active\": {\n        \"name\": \"actionable.divider.brandTertiary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-tertiary--color--hover\": {\n        \"name\": \"actionable.divider.brandTertiary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary--color\": {\n        \"name\": \"actionable.divider.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary--color--active\": {\n        \"name\": \"actionable.divider.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary--color--hover\": {\n        \"name\": \"actionable.divider.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-negative--color\": {\n        \"name\": \"actionable.divider.primaryNegative.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-negative--color--active\": {\n        \"name\": \"actionable.divider.primaryNegative.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-negative--color--hover\": {\n        \"name\": \"actionable.divider.primaryNegative.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-positive--color\": {\n        \"name\": \"actionable.divider.primaryPositive.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-positive--color--active\": {\n        \"name\": \"actionable.divider.primaryPositive.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-positive--color--hover\": {\n        \"name\": \"actionable.divider.primaryPositive.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--secondary--color\": {\n        \"name\": \"actionable.divider.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable_divider--secondary--color--active\": {\n        \"name\": \"actionable.divider.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_divider--secondary--color--hover\": {\n        \"name\": \"actionable.divider.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_divider--secondary-negative--color\": {\n        \"name\": \"actionable.divider.secondaryNegative.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable_divider--secondary-negative--color--active\": {\n        \"name\": \"actionable.divider.secondaryNegative.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable_divider--secondary-negative--color--hover\": {\n        \"name\": \"actionable.divider.secondaryNegative.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable_divider--secondary-positive--color\": {\n        \"name\": \"actionable.divider.secondaryPositive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable_divider--secondary-positive--color--active\": {\n        \"name\": \"actionable.divider.secondaryPositive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable_divider--secondary-positive--color--hover\": {\n        \"name\": \"actionable.divider.secondaryPositive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable_divider--tertiary--color\": {\n        \"name\": \"actionable.divider.tertiary.color\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-actionable_divider--tertiary--color--active\": {\n        \"name\": \"actionable.divider.tertiary.color.active\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-actionable_divider--tertiary--color--hover\": {\n        \"name\": \"actionable.divider.tertiary.color.hover\",\n        \"derived\": \"--now-color_border--secondary-actionable\"\n    },\n    \"--now-actionable_icon--brand-primary--color\": {\n        \"name\": \"actionable.icon.brandPrimary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-primary--color--active\": {\n        \"name\": \"actionable.icon.brandPrimary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-primary--color--hover\": {\n        \"name\": \"actionable.icon.brandPrimary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-secondary--color\": {\n        \"name\": \"actionable.icon.brandSecondary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-secondary--color--active\": {\n        \"name\": \"actionable.icon.brandSecondary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-secondary--color--hover\": {\n        \"name\": \"actionable.icon.brandSecondary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-tertiary--color\": {\n        \"name\": \"actionable.icon.brandTertiary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-tertiary--color--active\": {\n        \"name\": \"actionable.icon.brandTertiary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-tertiary--color--hover\": {\n        \"name\": \"actionable.icon.brandTertiary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary_bare--color\": {\n        \"name\": \"actionable.icon.primary.bare.color\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_icon--primary_bare--color--active\": {\n        \"name\": \"actionable.icon.primary.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_bare--color--hover\": {\n        \"name\": \"actionable.icon.primary.bare.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_bare--color--selected\": {\n        \"name\": \"actionable.icon.primary.bare.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_icon--primary_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primary.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primary.bare.color.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.primary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_icon--primary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.primary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary--color\": {\n        \"name\": \"actionable.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary--color--active\": {\n        \"name\": \"actionable.icon.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary--color--hover\": {\n        \"name\": \"actionable.icon.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-negative--color\": {\n        \"name\": \"actionable.icon.primaryNegative.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-negative--color--active\": {\n        \"name\": \"actionable.icon.primaryNegative.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-negative--color--hover\": {\n        \"name\": \"actionable.icon.primaryNegative.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-positive--color\": {\n        \"name\": \"actionable.icon.primaryPositive.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-positive--color--active\": {\n        \"name\": \"actionable.icon.primaryPositive.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-positive--color--hover\": {\n        \"name\": \"actionable.icon.primaryPositive.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--active\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--hover\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--selected\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection--color\": {\n        \"name\": \"actionable.icon.primarySelection.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection--color--active\": {\n        \"name\": \"actionable.icon.primarySelection.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection--color--hover\": {\n        \"name\": \"actionable.icon.primarySelection.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary_bare--color\": {\n        \"name\": \"actionable.icon.secondary.bare.color\",\n        \"derived\": \"--now-actionable_icon--secondary--color\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--active\": {\n        \"name\": \"actionable.icon.secondary.bare.color.active\",\n        \"derived\": \"--now-actionable_icon--secondary--color--active\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--hover\": {\n        \"name\": \"actionable.icon.secondary.bare.color.hover\",\n        \"derived\": \"--now-actionable_icon--secondary--color--hover\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondary.bare.color.selected\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondary.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--active\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondary.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--hover\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--selected\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--selected_active\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--selected_hover\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_icon--secondary--color\": {\n        \"name\": \"actionable.icon.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable_icon--secondary--color--active\": {\n        \"name\": \"actionable.icon.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_icon--secondary--color--hover\": {\n        \"name\": \"actionable.icon.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_icon--secondary-negative--color\": {\n        \"name\": \"actionable.icon.secondaryNegative.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable_icon--secondary-negative--color--active\": {\n        \"name\": \"actionable.icon.secondaryNegative.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable_icon--secondary-negative--color--hover\": {\n        \"name\": \"actionable.icon.secondaryNegative.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable_icon--secondary-positive--color\": {\n        \"name\": \"actionable.icon.secondaryPositive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable_icon--secondary-positive--color--active\": {\n        \"name\": \"actionable.icon.secondaryPositive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable_icon--secondary-positive--color--hover\": {\n        \"name\": \"actionable.icon.secondaryPositive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--active\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--hover\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection--color\": {\n        \"name\": \"actionable.icon.secondarySelection.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--secondary-selection--color--active\": {\n        \"name\": \"actionable.icon.secondarySelection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection--color--hover\": {\n        \"name\": \"actionable.icon.secondarySelection.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color\": {\n        \"name\": \"actionable.icon.tertiary.bare.color\",\n        \"derived\": \"--now-actionable_icon--tertiary--color\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--active\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.active\",\n        \"derived\": \"--now-actionable_icon--tertiary--color--active\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--hover\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.hover\",\n        \"derived\": \"--now-actionable_icon--tertiary--color--hover\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.selected\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--active\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--hover\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--selected\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--selected_active\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--selected_hover\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary--color\": {\n        \"name\": \"actionable.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_icon--tertiary--color--active\": {\n        \"name\": \"actionable.icon.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary--color--hover\": {\n        \"name\": \"actionable.icon.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--active\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection--color\": {\n        \"name\": \"actionable.icon.tertiarySelection.color\",\n        \"derived\": \"--now-actionable_icon--tertiary--color\"\n    },\n    \"--now-actionable_icon--tertiary-selection--color--active\": {\n        \"name\": \"actionable.icon.tertiarySelection.color.active\",\n        \"derived\": \"--now-actionable_icon--tertiary--color--active\"\n    },\n    \"--now-actionable_icon--tertiary-selection--color--hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.color.hover\",\n        \"derived\": \"--now-actionable_icon--tertiary--color--hover\"\n    },\n    \"--now-actionable_label--brand-primary--color\": {\n        \"name\": \"actionable.label.brandPrimary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-primary--color--active\": {\n        \"name\": \"actionable.label.brandPrimary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-primary--color--hover\": {\n        \"name\": \"actionable.label.brandPrimary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-secondary--color\": {\n        \"name\": \"actionable.label.brandSecondary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-secondary--color--active\": {\n        \"name\": \"actionable.label.brandSecondary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-secondary--color--hover\": {\n        \"name\": \"actionable.label.brandSecondary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-tertiary--color\": {\n        \"name\": \"actionable.label.brandTertiary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-tertiary--color--active\": {\n        \"name\": \"actionable.label.brandTertiary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-tertiary--color--hover\": {\n        \"name\": \"actionable.label.brandTertiary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary_bare--color\": {\n        \"name\": \"actionable.label.primary.bare.color\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_label--primary_bare--color--active\": {\n        \"name\": \"actionable.label.primary.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_bare--color--hover\": {\n        \"name\": \"actionable.label.primary.bare.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_bare--color--selected\": {\n        \"name\": \"actionable.label.primary.bare.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_label--primary_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primary.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primary.bare.color.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.primary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_label--primary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.primary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary--color\": {\n        \"name\": \"actionable.label.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary--color--active\": {\n        \"name\": \"actionable.label.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary--color--hover\": {\n        \"name\": \"actionable.label.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-negative--color\": {\n        \"name\": \"actionable.label.primaryNegative.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-negative--color--active\": {\n        \"name\": \"actionable.label.primaryNegative.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-negative--color--hover\": {\n        \"name\": \"actionable.label.primaryNegative.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-positive--color\": {\n        \"name\": \"actionable.label.primaryPositive.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-positive--color--active\": {\n        \"name\": \"actionable.label.primaryPositive.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-positive--color--hover\": {\n        \"name\": \"actionable.label.primaryPositive.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color\": {\n        \"name\": \"actionable.label.primarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--active\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--hover\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--selected\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection--color\": {\n        \"name\": \"actionable.label.primarySelection.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection--color--active\": {\n        \"name\": \"actionable.label.primarySelection.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection--color--hover\": {\n        \"name\": \"actionable.label.primarySelection.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary_bare--color\": {\n        \"name\": \"actionable.label.secondary.bare.color\",\n        \"derived\": \"--now-actionable_label--secondary--color\"\n    },\n    \"--now-actionable_label--secondary_bare--color--active\": {\n        \"name\": \"actionable.label.secondary.bare.color.active\",\n        \"derived\": \"--now-actionable_label--secondary--color--active\"\n    },\n    \"--now-actionable_label--secondary_bare--color--hover\": {\n        \"name\": \"actionable.label.secondary.bare.color.hover\",\n        \"derived\": \"--now-actionable_label--secondary--color--hover\"\n    },\n    \"--now-actionable_label--secondary_bare--color--selected\": {\n        \"name\": \"actionable.label.secondary.bare.color.selected\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color\"\n    },\n    \"--now-actionable_label--secondary_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondary.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--active\"\n    },\n    \"--now-actionable_label--secondary_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondary.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--hover\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_label--secondary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.secondary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--selected\"\n    },\n    \"--now-actionable_label--secondary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--selected_active\"\n    },\n    \"--now-actionable_label--secondary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--selected_hover\"\n    },\n    \"--now-actionable_label--secondary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.secondary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_label--secondary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_label--secondary--color\": {\n        \"name\": \"actionable.label.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable_label--secondary--color--active\": {\n        \"name\": \"actionable.label.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_label--secondary--color--hover\": {\n        \"name\": \"actionable.label.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_label--secondary-negative--color\": {\n        \"name\": \"actionable.label.secondaryNegative.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable_label--secondary-negative--color--active\": {\n        \"name\": \"actionable.label.secondaryNegative.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable_label--secondary-negative--color--hover\": {\n        \"name\": \"actionable.label.secondaryNegative.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable_label--secondary-positive--color\": {\n        \"name\": \"actionable.label.secondaryPositive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable_label--secondary-positive--color--active\": {\n        \"name\": \"actionable.label.secondaryPositive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable_label--secondary-positive--color--hover\": {\n        \"name\": \"actionable.label.secondaryPositive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--active\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--hover\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--selected\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection--color\": {\n        \"name\": \"actionable.label.secondarySelection.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--secondary-selection--color--active\": {\n        \"name\": \"actionable.label.secondarySelection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection--color--hover\": {\n        \"name\": \"actionable.label.secondarySelection.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary_bare--color\": {\n        \"name\": \"actionable.label.tertiary.bare.color\",\n        \"derived\": \"--now-actionable_label--tertiary--color\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--active\": {\n        \"name\": \"actionable.label.tertiary.bare.color.active\",\n        \"derived\": \"--now-actionable_label--tertiary--color--active\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--hover\": {\n        \"name\": \"actionable.label.tertiary.bare.color.hover\",\n        \"derived\": \"--now-actionable_label--tertiary--color--hover\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiary.bare.color.selected\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiary.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--active\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiary.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--hover\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--selected\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--selected_active\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--selected_hover\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary--color\": {\n        \"name\": \"actionable.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_label--tertiary--color--active\": {\n        \"name\": \"actionable.label.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary--color--hover\": {\n        \"name\": \"actionable.label.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--active\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--hover\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection--color\": {\n        \"name\": \"actionable.label.tertiarySelection.color\",\n        \"derived\": \"--now-actionable_label--tertiary--color\"\n    },\n    \"--now-actionable_label--tertiary-selection--color--active\": {\n        \"name\": \"actionable.label.tertiarySelection.color.active\",\n        \"derived\": \"--now-actionable_label--tertiary--color--active\"\n    },\n    \"--now-actionable_label--tertiary-selection--color--hover\": {\n        \"name\": \"actionable.label.tertiarySelection.color.hover\",\n        \"derived\": \"--now-actionable_label--tertiary--color--hover\"\n    },\n    \"--now-actionable_link_icon-end--primary--color\": {\n        \"name\": \"actionable.link.iconEnd.primary.color\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_icon-end--primary--color--active\": {\n        \"name\": \"actionable.link.iconEnd.primary.color.active\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_icon-end--primary--color--hover\": {\n        \"name\": \"actionable.link.iconEnd.primary.color.hover\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-end--secondary--color\": {\n        \"name\": \"actionable.link.iconEnd.secondary.color\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-end--secondary--color--active\": {\n        \"name\": \"actionable.link.iconEnd.secondary.color.active\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_icon-end--secondary--color--hover\": {\n        \"name\": \"actionable.link.iconEnd.secondary.color.hover\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_icon-end--tertiary--color\": {\n        \"name\": \"actionable.link.iconEnd.tertiary.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_icon-end--tertiary--color--active\": {\n        \"name\": \"actionable.link.iconEnd.tertiary.color.active\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-end--tertiary--color--hover\": {\n        \"name\": \"actionable.link.iconEnd.tertiary.color.hover\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_icon-start--primary--color\": {\n        \"name\": \"actionable.link.iconStart.primary.color\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_icon-start--primary--color--active\": {\n        \"name\": \"actionable.link.iconStart.primary.color.active\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_icon-start--primary--color--hover\": {\n        \"name\": \"actionable.link.iconStart.primary.color.hover\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-start--secondary--color\": {\n        \"name\": \"actionable.link.iconStart.secondary.color\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-start--secondary--color--active\": {\n        \"name\": \"actionable.link.iconStart.secondary.color.active\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_icon-start--secondary--color--hover\": {\n        \"name\": \"actionable.link.iconStart.secondary.color.hover\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_icon-start--tertiary--color\": {\n        \"name\": \"actionable.link.iconStart.tertiary.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_icon-start--tertiary--color--active\": {\n        \"name\": \"actionable.link.iconStart.tertiary.color.active\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-start--tertiary--color--hover\": {\n        \"name\": \"actionable.link.iconStart.tertiary.color.hover\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_label--primary--color\": {\n        \"name\": \"actionable.link.label.primary.color\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_label--primary--color--active\": {\n        \"name\": \"actionable.link.label.primary.color.active\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_label--primary--color--hover\": {\n        \"name\": \"actionable.link.label.primary.color.hover\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_label--secondary--color\": {\n        \"name\": \"actionable.link.label.secondary.color\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_label--secondary--color--active\": {\n        \"name\": \"actionable.link.label.secondary.color.active\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_label--secondary--color--hover\": {\n        \"name\": \"actionable.link.label.secondary.color.hover\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_label--tertiary--color\": {\n        \"name\": \"actionable.link.label.tertiary.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_label--tertiary--color--active\": {\n        \"name\": \"actionable.link.label.tertiary.color.active\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_label--tertiary--color--hover\": {\n        \"name\": \"actionable.link.label.tertiary.color.hover\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_trigger-icon--brand-primary--color\": {\n        \"name\": \"actionable.triggerIcon.brandPrimary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-primary--color--active\": {\n        \"name\": \"actionable.triggerIcon.brandPrimary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-primary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.brandPrimary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-secondary--color\": {\n        \"name\": \"actionable.triggerIcon.brandSecondary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-secondary--color--active\": {\n        \"name\": \"actionable.triggerIcon.brandSecondary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-secondary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.brandSecondary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-tertiary--color\": {\n        \"name\": \"actionable.triggerIcon.brandTertiary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-tertiary--color--active\": {\n        \"name\": \"actionable.triggerIcon.brandTertiary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-tertiary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.brandTertiary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary_bare--color\": {\n        \"name\": \"actionable.triggerIcon.primary.bare.color\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_trigger-icon--primary_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.primary.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primary.bare.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--primary_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.primary.highContrast.bare.color\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--primary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.primary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary--color\": {\n        \"name\": \"actionable.triggerIcon.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary--color--active\": {\n        \"name\": \"actionable.triggerIcon.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-negative--color\": {\n        \"name\": \"actionable.triggerIcon.primaryNegative.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-negative--color--active\": {\n        \"name\": \"actionable.triggerIcon.primaryNegative.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-negative--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primaryNegative.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-positive--color\": {\n        \"name\": \"actionable.triggerIcon.primaryPositive.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-positive--color--active\": {\n        \"name\": \"actionable.triggerIcon.primaryPositive.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-positive--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primaryPositive.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_bare--color\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection--color\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection--color--active\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--secondary_bare--color\": {\n        \"name\": \"actionable.triggerIcon.secondary.bare.color\",\n        \"derived\": \"--now-actionable_trigger-icon--secondary--color\"\n    },\n    \"--now-actionable_trigger-icon--secondary_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondary.bare.color.active\",\n        \"derived\": \"--now-actionable_trigger-icon--secondary--color--active\"\n    },\n    \"--now-actionable_trigger-icon--secondary_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondary.bare.color.hover\",\n        \"derived\": \"--now-actionable_trigger-icon--secondary--color--hover\"\n    },\n    \"--now-actionable_trigger-icon--secondary_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.secondary.highContrast.bare.color\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_trigger-icon--secondary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--secondary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary--color\": {\n        \"name\": \"actionable.triggerIcon.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable_trigger-icon--secondary--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_trigger-icon--secondary-negative--color\": {\n        \"name\": \"actionable.triggerIcon.secondaryNegative.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary-negative--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondaryNegative.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable_trigger-icon--secondary-negative--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondaryNegative.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-positive--color\": {\n        \"name\": \"actionable.triggerIcon.secondaryPositive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary-positive--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondaryPositive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable_trigger-icon--secondary-positive--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondaryPositive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_bare--color\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection--color\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_bare--color\": {\n        \"name\": \"actionable.triggerIcon.tertiary.bare.color\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiary.bare.color.active\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color--active\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiary.bare.color.hover\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color--hover\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.tertiary.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary--color\": {\n        \"name\": \"actionable.triggerIcon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_bare--color\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.bare.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection--color\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.color\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.color.active\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color--active\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.color.hover\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color--hover\"\n    },\n    \"--now-actionable--background-color-alpha\": {\n        \"name\": \"actionable.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-actionable--background-color-alpha--active\": {\n        \"name\": \"actionable.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-actionable--background-color-alpha--hover\": {\n        \"name\": \"actionable.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-actionable--background-color-alpha--selected\": {\n        \"name\": \"actionable.backgroundColorAlpha.selected\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-actionable--bare--border-color-alpha\": {\n        \"name\": \"actionable.bare.borderColorAlpha\",\n        \"derived\": \"--now-actionable--border-color-alpha\"\n    },\n    \"--now-actionable--bare--border-radius\": {\n        \"name\": \"actionable.bare.borderRadius\",\n        \"derived\": \"--now-actionable--border-radius\"\n    },\n    \"--now-actionable--bare--border-width\": {\n        \"name\": \"actionable.bare.borderWidth\",\n        \"derived\": \"--now-actionable--border-width\"\n    },\n    \"--now-actionable--bare--font-family\": {\n        \"name\": \"actionable.bare.fontFamily\",\n        \"derived\": \"--now-actionable--font-family\"\n    },\n    \"--now-actionable--bare--font-style\": {\n        \"name\": \"actionable.bare.fontStyle\",\n        \"derived\": \"--now-actionable--font-style\"\n    },\n    \"--now-actionable--bare--font-weight\": {\n        \"name\": \"actionable.bare.fontWeight\",\n        \"derived\": \"--now-actionable--font-weight\"\n    },\n    \"--now-actionable--bare--opacity--disabled\": {\n        \"name\": \"actionable.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--bare--text-transform\": {\n        \"name\": \"actionable.bare.textTransform\",\n        \"derived\": \"--now-actionable--text-transform\"\n    },\n    \"--now-actionable--border-color-alpha\": {\n        \"name\": \"actionable.borderColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-actionable--brand-primary--background-color\": {\n        \"name\": \"actionable.brandPrimary.backgroundColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--brand-primary--background-color--active\": {\n        \"name\": \"actionable.brandPrimary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--brand-primary--background-color--hover\": {\n        \"name\": \"actionable.brandPrimary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--brand-primary--border-color\": {\n        \"name\": \"actionable.brandPrimary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--brand-primary--border-color--active\": {\n        \"name\": \"actionable.brandPrimary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--brand-primary--border-color--hover\": {\n        \"name\": \"actionable.brandPrimary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--brand-primary--border-radius\": {\n        \"name\": \"actionable.brandPrimary.borderRadius\",\n        \"derived\": \"--now-actionable--contained_brand--border-radius\"\n    },\n    \"--now-actionable--brand-primary--border-width\": {\n        \"name\": \"actionable.brandPrimary.borderWidth\",\n        \"derived\": \"--now-actionable--contained_brand--border-width\"\n    },\n    \"--now-actionable--brand-primary--font-family\": {\n        \"name\": \"actionable.brandPrimary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--brand-primary--font-style\": {\n        \"name\": \"actionable.brandPrimary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--brand-primary--font-weight\": {\n        \"name\": \"actionable.brandPrimary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--brand-primary--opacity--disabled\": {\n        \"name\": \"actionable.brandPrimary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--brand-primary--text-transform\": {\n        \"name\": \"actionable.brandPrimary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--brand-secondary--background-color\": {\n        \"name\": \"actionable.brandSecondary.backgroundColor\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--brand-secondary--background-color--active\": {\n        \"name\": \"actionable.brandSecondary.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable--brand-secondary--background-color--hover\": {\n        \"name\": \"actionable.brandSecondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable--brand-secondary--border-color\": {\n        \"name\": \"actionable.brandSecondary.borderColor\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--brand-secondary--border-color--active\": {\n        \"name\": \"actionable.brandSecondary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable--brand-secondary--border-color--hover\": {\n        \"name\": \"actionable.brandSecondary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable--brand-secondary--border-radius\": {\n        \"name\": \"actionable.brandSecondary.borderRadius\",\n        \"derived\": \"--now-actionable--contained_brand--border-radius\"\n    },\n    \"--now-actionable--brand-secondary--border-width\": {\n        \"name\": \"actionable.brandSecondary.borderWidth\",\n        \"derived\": \"--now-actionable--contained_brand--border-width\"\n    },\n    \"--now-actionable--brand-secondary--font-family\": {\n        \"name\": \"actionable.brandSecondary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--brand-secondary--font-style\": {\n        \"name\": \"actionable.brandSecondary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--brand-secondary--font-weight\": {\n        \"name\": \"actionable.brandSecondary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--brand-secondary--opacity--disabled\": {\n        \"name\": \"actionable.brandSecondary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--brand-secondary--text-transform\": {\n        \"name\": \"actionable.brandSecondary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--brand-tertiary--background-color\": {\n        \"name\": \"actionable.brandTertiary.backgroundColor\",\n        \"derived\": \"--now-color_background--tertiary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--background-color--active\": {\n        \"name\": \"actionable.brandTertiary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--primary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--background-color--hover\": {\n        \"name\": \"actionable.brandTertiary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--border-color\": {\n        \"name\": \"actionable.brandTertiary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--border-color--active\": {\n        \"name\": \"actionable.brandTertiary.borderColor.active\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--border-color--hover\": {\n        \"name\": \"actionable.brandTertiary.borderColor.hover\",\n        \"derived\": \"--now-color_border--secondary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--border-radius\": {\n        \"name\": \"actionable.brandTertiary.borderRadius\",\n        \"derived\": \"--now-actionable--contained_brand--border-radius\"\n    },\n    \"--now-actionable--brand-tertiary--border-width\": {\n        \"name\": \"actionable.brandTertiary.borderWidth\",\n        \"derived\": \"--now-actionable--contained_brand--border-width\"\n    },\n    \"--now-actionable--brand-tertiary--font-family\": {\n        \"name\": \"actionable.brandTertiary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--brand-tertiary--font-style\": {\n        \"name\": \"actionable.brandTertiary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--brand-tertiary--font-weight\": {\n        \"name\": \"actionable.brandTertiary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--brand-tertiary--opacity--disabled\": {\n        \"name\": \"actionable.brandTertiary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--brand-tertiary--text-transform\": {\n        \"name\": \"actionable.brandTertiary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--color-alpha\": {\n        \"name\": \"actionable.colorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-actionable--contained_brand--border-radius\": {\n        \"name\": \"actionable.contained.brand.borderRadius\",\n        \"derived\": \"--now-actionable--border-radius\"\n    },\n    \"--now-actionable--contained_brand--border-width\": {\n        \"name\": \"actionable.contained.brand.borderWidth\",\n        \"initial\": \"0\"\n    },\n    \"--now-actionable--contained--border-radius\": {\n        \"name\": \"actionable.contained.borderRadius\",\n        \"derived\": \"--now-actionable--border-radius\"\n    },\n    \"--now-actionable--contained--border-width\": {\n        \"name\": \"actionable.contained.borderWidth\",\n        \"derived\": \"--now-actionable--border-width\"\n    },\n    \"--now-actionable--contained--font-family\": {\n        \"name\": \"actionable.contained.fontFamily\",\n        \"derived\": \"--now-actionable--font-family\"\n    },\n    \"--now-actionable--contained--font-style\": {\n        \"name\": \"actionable.contained.fontStyle\",\n        \"derived\": \"--now-actionable--font-style\"\n    },\n    \"--now-actionable--contained--font-weight\": {\n        \"name\": \"actionable.contained.fontWeight\",\n        \"derived\": \"--now-actionable--font-weight\"\n    },\n    \"--now-actionable--contained--opacity--disabled\": {\n        \"name\": \"actionable.contained.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--contained--text-transform\": {\n        \"name\": \"actionable.contained.textTransform\",\n        \"derived\": \"--now-actionable--text-transform\"\n    },\n    \"--now-actionable--divider--width\": {\n        \"name\": \"actionable.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-actionable--high-contrast--color-alpha\": {\n        \"name\": \"actionable.highContrast.colorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-actionable--iconic--border-color-alpha\": {\n        \"name\": \"actionable.iconic.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-actionable--primary_bare--background-color--active\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_bare--background-color--hover\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_bare--background-color--selected\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_bare--border-color--active\": {\n        \"name\": \"actionable.primary.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_bare--border-color--hover\": {\n        \"name\": \"actionable.primary.bare.borderColor.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_bare--border-color--selected\": {\n        \"name\": \"actionable.primary.bare.borderColor.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primary.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primary.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_bare--border-radius\": {\n        \"name\": \"actionable.primary.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-actionable--primary_bare--border-width\": {\n        \"name\": \"actionable.primary.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-actionable--primary_bare--font-family\": {\n        \"name\": \"actionable.primary.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--primary_bare--font-style\": {\n        \"name\": \"actionable.primary.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--primary_bare--font-weight\": {\n        \"name\": \"actionable.primary.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--primary_bare--opacity--disabled\": {\n        \"name\": \"actionable.primary.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--primary_bare--text-transform\": {\n        \"name\": \"actionable.primary.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.primary.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--primary_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.primary.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primary.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primary.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.primary.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primary.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primary.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary--background-color\": {\n        \"name\": \"actionable.primary.backgroundColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary--background-color--active\": {\n        \"name\": \"actionable.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary--background-color--hover\": {\n        \"name\": \"actionable.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary--border-color\": {\n        \"name\": \"actionable.primary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary--border-color--active\": {\n        \"name\": \"actionable.primary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary--border-color--hover\": {\n        \"name\": \"actionable.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary--border-radius\": {\n        \"name\": \"actionable.primary.borderRadius\",\n        \"derived\": \"--now-actionable--contained_brand--border-radius\"\n    },\n    \"--now-actionable--primary--border-width\": {\n        \"name\": \"actionable.primary.borderWidth\",\n        \"derived\": \"--now-actionable--contained_brand--border-width\"\n    },\n    \"--now-actionable--primary--font-family\": {\n        \"name\": \"actionable.primary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--primary--font-style\": {\n        \"name\": \"actionable.primary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--primary--font-weight\": {\n        \"name\": \"actionable.primary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--primary--opacity--disabled\": {\n        \"name\": \"actionable.primary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--primary--text-transform\": {\n        \"name\": \"actionable.primary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--primary-negative--background-color\": {\n        \"name\": \"actionable.primaryNegative.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--primary-negative--background-color--active\": {\n        \"name\": \"actionable.primaryNegative.backgroundColor.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable--primary-negative--background-color--hover\": {\n        \"name\": \"actionable.primaryNegative.backgroundColor.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable--primary-negative--border-color\": {\n        \"name\": \"actionable.primaryNegative.borderColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--primary-negative--border-color--active\": {\n        \"name\": \"actionable.primaryNegative.borderColor.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable--primary-negative--border-color--hover\": {\n        \"name\": \"actionable.primaryNegative.borderColor.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable--primary-negative--border-radius\": {\n        \"name\": \"actionable.primaryNegative.borderRadius\",\n        \"derived\": \"--now-actionable--primary--border-radius\"\n    },\n    \"--now-actionable--primary-negative--border-width\": {\n        \"name\": \"actionable.primaryNegative.borderWidth\",\n        \"derived\": \"--now-actionable--primary--border-width\"\n    },\n    \"--now-actionable--primary-negative--font-family\": {\n        \"name\": \"actionable.primaryNegative.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--primary-negative--font-style\": {\n        \"name\": \"actionable.primaryNegative.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--primary-negative--font-weight\": {\n        \"name\": \"actionable.primaryNegative.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--primary-negative--opacity--disabled\": {\n        \"name\": \"actionable.primaryNegative.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--primary-negative--text-transform\": {\n        \"name\": \"actionable.primaryNegative.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--primary-positive--background-color\": {\n        \"name\": \"actionable.primaryPositive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--primary-positive--background-color--active\": {\n        \"name\": \"actionable.primaryPositive.backgroundColor.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable--primary-positive--background-color--hover\": {\n        \"name\": \"actionable.primaryPositive.backgroundColor.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable--primary-positive--border-color\": {\n        \"name\": \"actionable.primaryPositive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--primary-positive--border-color--active\": {\n        \"name\": \"actionable.primaryPositive.borderColor.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable--primary-positive--border-color--hover\": {\n        \"name\": \"actionable.primaryPositive.borderColor.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable--primary-positive--border-radius\": {\n        \"name\": \"actionable.primaryPositive.borderRadius\",\n        \"derived\": \"--now-actionable--primary--border-radius\"\n    },\n    \"--now-actionable--primary-positive--border-width\": {\n        \"name\": \"actionable.primaryPositive.borderWidth\",\n        \"derived\": \"--now-actionable--primary--border-width\"\n    },\n    \"--now-actionable--primary-positive--font-family\": {\n        \"name\": \"actionable.primaryPositive.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--primary-positive--font-style\": {\n        \"name\": \"actionable.primaryPositive.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--primary-positive--font-weight\": {\n        \"name\": \"actionable.primaryPositive.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--primary-positive--opacity--disabled\": {\n        \"name\": \"actionable.primaryPositive.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--primary-positive--text-transform\": {\n        \"name\": \"actionable.primaryPositive.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--active\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--hover\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--selected\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--active\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--hover\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--selected\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_bare--border-radius\": {\n        \"name\": \"actionable.primarySelection.bare.borderRadius\",\n        \"derived\": \"--now-actionable--primary_bare--border-radius\"\n    },\n    \"--now-actionable--primary-selection_bare--border-width\": {\n        \"name\": \"actionable.primarySelection.bare.borderWidth\",\n        \"derived\": \"--now-actionable--primary_bare--border-width\"\n    },\n    \"--now-actionable--primary-selection_bare--font-family\": {\n        \"name\": \"actionable.primarySelection.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--primary-selection_bare--font-style\": {\n        \"name\": \"actionable.primarySelection.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--primary-selection_bare--font-weight\": {\n        \"name\": \"actionable.primarySelection.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--primary-selection_bare--opacity--disabled\": {\n        \"name\": \"actionable.primarySelection.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--primary-selection_bare--text-transform\": {\n        \"name\": \"actionable.primarySelection.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection--background-color\": {\n        \"name\": \"actionable.primarySelection.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection--background-color--active\": {\n        \"name\": \"actionable.primarySelection.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection--background-color--hover\": {\n        \"name\": \"actionable.primarySelection.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--primary-selection--border-color\": {\n        \"name\": \"actionable.primarySelection.borderColor\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection--border-color--active\": {\n        \"name\": \"actionable.primarySelection.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection--border-color--hover\": {\n        \"name\": \"actionable.primarySelection.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection--border-radius\": {\n        \"name\": \"actionable.primarySelection.borderRadius\",\n        \"derived\": \"--now-actionable--primary--border-radius\"\n    },\n    \"--now-actionable--primary-selection--border-width\": {\n        \"name\": \"actionable.primarySelection.borderWidth\",\n        \"derived\": \"--now-actionable--primary--border-width\"\n    },\n    \"--now-actionable--primary-selection--font-family\": {\n        \"name\": \"actionable.primarySelection.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--primary-selection--font-style\": {\n        \"name\": \"actionable.primarySelection.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--primary-selection--font-weight\": {\n        \"name\": \"actionable.primarySelection.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--primary-selection--opacity--disabled\": {\n        \"name\": \"actionable.primarySelection.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--primary-selection--text-transform\": {\n        \"name\": \"actionable.primarySelection.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--secondary_bare--background-color--active\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.active\",\n        \"derived\": \"--now-actionable--secondary--background-color--active\"\n    },\n    \"--now-actionable--secondary_bare--background-color--hover\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.hover\",\n        \"derived\": \"--now-actionable--secondary--background-color--hover\"\n    },\n    \"--now-actionable--secondary_bare--background-color--selected\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--secondary--background-color\"\n    },\n    \"--now-actionable--secondary_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--active\"\n    },\n    \"--now-actionable--secondary_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--hover\"\n    },\n    \"--now-actionable--secondary_bare--border-color--active\": {\n        \"name\": \"actionable.secondary.bare.borderColor.active\",\n        \"derived\": \"--now-actionable--secondary--border-color--active\"\n    },\n    \"--now-actionable--secondary_bare--border-color--hover\": {\n        \"name\": \"actionable.secondary.bare.borderColor.hover\",\n        \"derived\": \"--now-actionable--secondary--border-color--hover\"\n    },\n    \"--now-actionable--secondary_bare--border-color--selected\": {\n        \"name\": \"actionable.secondary.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--secondary--border-color\"\n    },\n    \"--now-actionable--secondary_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondary.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--active\"\n    },\n    \"--now-actionable--secondary_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondary.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--hover\"\n    },\n    \"--now-actionable--secondary_bare--border-radius\": {\n        \"name\": \"actionable.secondary.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-actionable--secondary_bare--border-width\": {\n        \"name\": \"actionable.secondary.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-actionable--secondary_bare--font-family\": {\n        \"name\": \"actionable.secondary.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--secondary_bare--font-style\": {\n        \"name\": \"actionable.secondary.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--secondary_bare--font-weight\": {\n        \"name\": \"actionable.secondary.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--secondary_bare--opacity--disabled\": {\n        \"name\": \"actionable.secondary.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--secondary_bare--text-transform\": {\n        \"name\": \"actionable.secondary.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--active\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--hover\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--active\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--hover\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.secondary.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.secondary.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondary.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.secondary.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondary.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--background-color--selected\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--border-color--selected\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--secondary--background-color\": {\n        \"name\": \"actionable.secondary.backgroundColor\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--secondary--background-color--active\": {\n        \"name\": \"actionable.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--secondary--background-color--hover\": {\n        \"name\": \"actionable.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--secondary--border-color\": {\n        \"name\": \"actionable.secondary.borderColor\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--secondary--border-color--active\": {\n        \"name\": \"actionable.secondary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable--secondary--border-color--hover\": {\n        \"name\": \"actionable.secondary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable--secondary--border-radius\": {\n        \"name\": \"actionable.secondary.borderRadius\",\n        \"derived\": \"--now-actionable--contained--border-radius\"\n    },\n    \"--now-actionable--secondary--border-width\": {\n        \"name\": \"actionable.secondary.borderWidth\",\n        \"derived\": \"--now-actionable--contained--border-width\"\n    },\n    \"--now-actionable--secondary--font-family\": {\n        \"name\": \"actionable.secondary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--secondary--font-style\": {\n        \"name\": \"actionable.secondary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--secondary--font-weight\": {\n        \"name\": \"actionable.secondary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--secondary--opacity--disabled\": {\n        \"name\": \"actionable.secondary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--secondary--text-transform\": {\n        \"name\": \"actionable.secondary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--secondary-negative--background-color\": {\n        \"name\": \"actionable.secondaryNegative.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-actionable--secondary-negative--background-color--active\": {\n        \"name\": \"actionable.secondaryNegative.backgroundColor.active\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--secondary-negative--background-color--hover\": {\n        \"name\": \"actionable.secondaryNegative.backgroundColor.hover\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--secondary-negative--border-color\": {\n        \"name\": \"actionable.secondaryNegative.borderColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--secondary-negative--border-color--active\": {\n        \"name\": \"actionable.secondaryNegative.borderColor.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable--secondary-negative--border-color--hover\": {\n        \"name\": \"actionable.secondaryNegative.borderColor.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable--secondary-negative--border-radius\": {\n        \"name\": \"actionable.secondaryNegative.borderRadius\",\n        \"derived\": \"--now-actionable--secondary--border-radius\"\n    },\n    \"--now-actionable--secondary-negative--border-width\": {\n        \"name\": \"actionable.secondaryNegative.borderWidth\",\n        \"derived\": \"--now-actionable--secondary--border-width\"\n    },\n    \"--now-actionable--secondary-negative--font-family\": {\n        \"name\": \"actionable.secondaryNegative.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--secondary-negative--font-style\": {\n        \"name\": \"actionable.secondaryNegative.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--secondary-negative--font-weight\": {\n        \"name\": \"actionable.secondaryNegative.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--secondary-negative--opacity--disabled\": {\n        \"name\": \"actionable.secondaryNegative.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-negative--text-transform\": {\n        \"name\": \"actionable.secondaryNegative.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--secondary-positive--background-color\": {\n        \"name\": \"actionable.secondaryPositive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--secondary-positive--background-color--active\": {\n        \"name\": \"actionable.secondaryPositive.backgroundColor.active\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--secondary-positive--background-color--hover\": {\n        \"name\": \"actionable.secondaryPositive.backgroundColor.hover\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--secondary-positive--border-color\": {\n        \"name\": \"actionable.secondaryPositive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--secondary-positive--border-color--active\": {\n        \"name\": \"actionable.secondaryPositive.borderColor.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable--secondary-positive--border-color--hover\": {\n        \"name\": \"actionable.secondaryPositive.borderColor.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable--secondary-positive--border-radius\": {\n        \"name\": \"actionable.secondaryPositive.borderRadius\",\n        \"derived\": \"--now-actionable--secondary--border-radius\"\n    },\n    \"--now-actionable--secondary-positive--border-width\": {\n        \"name\": \"actionable.secondaryPositive.borderWidth\",\n        \"derived\": \"--now-actionable--secondary--border-width\"\n    },\n    \"--now-actionable--secondary-positive--font-family\": {\n        \"name\": \"actionable.secondaryPositive.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--secondary-positive--font-style\": {\n        \"name\": \"actionable.secondaryPositive.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--secondary-positive--font-weight\": {\n        \"name\": \"actionable.secondaryPositive.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--secondary-positive--opacity--disabled\": {\n        \"name\": \"actionable.secondaryPositive.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-positive--text-transform\": {\n        \"name\": \"actionable.secondaryPositive.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--active\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--hover\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--selected\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--active\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--hover\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--selected\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-radius\": {\n        \"name\": \"actionable.secondarySelection.bare.borderRadius\",\n        \"derived\": \"--now-actionable--secondary_bare--border-radius\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-width\": {\n        \"name\": \"actionable.secondarySelection.bare.borderWidth\",\n        \"derived\": \"--now-actionable--secondary_bare--border-width\"\n    },\n    \"--now-actionable--secondary-selection_bare--font-family\": {\n        \"name\": \"actionable.secondarySelection.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--secondary-selection_bare--font-style\": {\n        \"name\": \"actionable.secondarySelection.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--secondary-selection_bare--font-weight\": {\n        \"name\": \"actionable.secondarySelection.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--secondary-selection_bare--opacity--disabled\": {\n        \"name\": \"actionable.secondarySelection.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-selection_bare--text-transform\": {\n        \"name\": \"actionable.secondarySelection.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection--background-color\": {\n        \"name\": \"actionable.secondarySelection.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection--background-color--active\": {\n        \"name\": \"actionable.secondarySelection.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection--background-color--hover\": {\n        \"name\": \"actionable.secondarySelection.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection--border-color\": {\n        \"name\": \"actionable.secondarySelection.borderColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection--border-color--active\": {\n        \"name\": \"actionable.secondarySelection.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection--border-color--hover\": {\n        \"name\": \"actionable.secondarySelection.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection--border-radius\": {\n        \"name\": \"actionable.secondarySelection.borderRadius\",\n        \"derived\": \"--now-actionable--secondary--border-radius\"\n    },\n    \"--now-actionable--secondary-selection--border-width\": {\n        \"name\": \"actionable.secondarySelection.borderWidth\",\n        \"derived\": \"--now-actionable--secondary--border-width\"\n    },\n    \"--now-actionable--secondary-selection--font-family\": {\n        \"name\": \"actionable.secondarySelection.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--secondary-selection--font-style\": {\n        \"name\": \"actionable.secondarySelection.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--secondary-selection--font-weight\": {\n        \"name\": \"actionable.secondarySelection.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--secondary-selection--opacity--disabled\": {\n        \"name\": \"actionable.secondarySelection.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-selection--text-transform\": {\n        \"name\": \"actionable.secondarySelection.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--active\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.active\",\n        \"derived\": \"--now-actionable--tertiary--background-color--active\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--hover\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.hover\",\n        \"derived\": \"--now-actionable--tertiary--background-color--hover\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--tertiary--background-color\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--active\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--hover\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--active\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.active\",\n        \"derived\": \"--now-actionable--tertiary--border-color--active\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--hover\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.hover\",\n        \"derived\": \"--now-actionable--tertiary--border-color--hover\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--tertiary--border-color\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--active\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--hover\"\n    },\n    \"--now-actionable--tertiary_bare--border-radius\": {\n        \"name\": \"actionable.tertiary.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-actionable--tertiary_bare--border-width\": {\n        \"name\": \"actionable.tertiary.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-actionable--tertiary_bare--font-family\": {\n        \"name\": \"actionable.tertiary.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--tertiary_bare--font-style\": {\n        \"name\": \"actionable.tertiary.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--tertiary_bare--font-weight\": {\n        \"name\": \"actionable.tertiary.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--tertiary_bare--opacity--disabled\": {\n        \"name\": \"actionable.tertiary.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary_bare--text-transform\": {\n        \"name\": \"actionable.tertiary.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--active\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--hover\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--active\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--hover\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--background-color--selected\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--border-color--selected\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary--background-color\": {\n        \"name\": \"actionable.tertiary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-actionable--tertiary--background-color--active\": {\n        \"name\": \"actionable.tertiary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-actionable--tertiary--background-color--hover\": {\n        \"name\": \"actionable.tertiary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-actionable--tertiary--border-color\": {\n        \"name\": \"actionable.tertiary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-actionable--tertiary--border-color--active\": {\n        \"name\": \"actionable.tertiary.borderColor.active\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-actionable--tertiary--border-color--hover\": {\n        \"name\": \"actionable.tertiary.borderColor.hover\",\n        \"derived\": \"--now-color_border--secondary-actionable\"\n    },\n    \"--now-actionable--tertiary--border-radius\": {\n        \"name\": \"actionable.tertiary.borderRadius\",\n        \"derived\": \"--now-actionable--contained--border-radius\"\n    },\n    \"--now-actionable--tertiary--border-width\": {\n        \"name\": \"actionable.tertiary.borderWidth\",\n        \"derived\": \"--now-actionable--contained--border-width\"\n    },\n    \"--now-actionable--tertiary--font-family\": {\n        \"name\": \"actionable.tertiary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--tertiary--font-style\": {\n        \"name\": \"actionable.tertiary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--tertiary--font-weight\": {\n        \"name\": \"actionable.tertiary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--tertiary--opacity--disabled\": {\n        \"name\": \"actionable.tertiary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary--text-transform\": {\n        \"name\": \"actionable.tertiary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--active\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--active\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-radius\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderRadius\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-radius\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-width\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderWidth\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-width\"\n    },\n    \"--now-actionable--tertiary-selection_bare--font-family\": {\n        \"name\": \"actionable.tertiarySelection.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--tertiary-selection_bare--font-style\": {\n        \"name\": \"actionable.tertiarySelection.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--tertiary-selection_bare--font-weight\": {\n        \"name\": \"actionable.tertiarySelection.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--tertiary-selection_bare--opacity--disabled\": {\n        \"name\": \"actionable.tertiarySelection.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary-selection_bare--text-transform\": {\n        \"name\": \"actionable.tertiarySelection.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection--background-color\": {\n        \"name\": \"actionable.tertiarySelection.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection--background-color--active\": {\n        \"name\": \"actionable.tertiarySelection.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection--background-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection--border-color\": {\n        \"name\": \"actionable.tertiarySelection.borderColor\",\n        \"derived\": \"--now-actionable--tertiary--border-color\"\n    },\n    \"--now-actionable--tertiary-selection--border-color--active\": {\n        \"name\": \"actionable.tertiarySelection.borderColor.active\",\n        \"derived\": \"--now-actionable--tertiary--border-color--active\"\n    },\n    \"--now-actionable--tertiary-selection--border-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.borderColor.hover\",\n        \"derived\": \"--now-actionable--tertiary--border-color--hover\"\n    },\n    \"--now-actionable--tertiary-selection--border-radius\": {\n        \"name\": \"actionable.tertiarySelection.borderRadius\",\n        \"derived\": \"--now-actionable--tertiary--border-radius\"\n    },\n    \"--now-actionable--tertiary-selection--border-width\": {\n        \"name\": \"actionable.tertiarySelection.borderWidth\",\n        \"derived\": \"--now-actionable--tertiary--border-width\"\n    },\n    \"--now-actionable--tertiary-selection--font-family\": {\n        \"name\": \"actionable.tertiarySelection.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--tertiary-selection--font-style\": {\n        \"name\": \"actionable.tertiarySelection.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--tertiary-selection--font-weight\": {\n        \"name\": \"actionable.tertiarySelection.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--tertiary-selection--opacity--disabled\": {\n        \"name\": \"actionable.tertiarySelection.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary-selection--text-transform\": {\n        \"name\": \"actionable.tertiarySelection.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--text-wrap\": {\n        \"name\": \"actionable.textWrap\",\n        \"initial\": \"normal\"\n    },\n    \"--now-container-card_divider--primary--color\": {\n        \"name\": \"containerCard.divider.primary.color\",\n        \"derived\": \"--now-color_divider--primary\"\n    },\n    \"--now-container-card_divider--primary--width\": {\n        \"name\": \"containerCard.divider.primary.width\",\n        \"derived\": \"--now-container-card_divider--width\"\n    },\n    \"--now-container-card_divider--secondary--color\": {\n        \"name\": \"containerCard.divider.secondary.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-container-card_divider--secondary--width\": {\n        \"name\": \"containerCard.divider.secondary.width\",\n        \"derived\": \"--now-container-card_divider--width\"\n    },\n    \"--now-container-card_divider--tertiary--color\": {\n        \"name\": \"containerCard.divider.tertiary.color\",\n        \"derived\": \"--now-color_divider--tertiary\"\n    },\n    \"--now-container-card_divider--tertiary--width\": {\n        \"name\": \"containerCard.divider.tertiary.width\",\n        \"derived\": \"--now-container-card_divider--width\"\n    },\n    \"--now-container-card_divider--width\": {\n        \"name\": \"containerCard.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-container-card_footer--font-family\": {\n        \"name\": \"containerCard.footer.fontFamily\",\n        \"derived\": \"--now-container--font-family\"\n    },\n    \"--now-container-card_footer--font-style\": {\n        \"name\": \"containerCard.footer.fontStyle\",\n        \"derived\": \"--now-container--font-style\"\n    },\n    \"--now-container-card_footer--font-weight\": {\n        \"name\": \"containerCard.footer.fontWeight\",\n        \"derived\": \"--now-container--font-weight\"\n    },\n    \"--now-container-card_footer--primary--color\": {\n        \"name\": \"containerCard.footer.primary.color\",\n        \"derived\": \"--now-display-type--primary--color\"\n    },\n    \"--now-container-card_footer--secondary--color\": {\n        \"name\": \"containerCard.footer.secondary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-container-card_footer--tertiary--color\": {\n        \"name\": \"containerCard.footer.tertiary.color\",\n        \"derived\": \"--now-display-type--tertiary--color\"\n    },\n    \"--now-container-card_footer--text-transform\": {\n        \"name\": \"containerCard.footer.textTransform\",\n        \"derived\": \"--now-container--text-transform\"\n    },\n    \"--now-container-card_header--font-family\": {\n        \"name\": \"containerCard.header.fontFamily\",\n        \"derived\": \"--now-display-type--head-primary--font-family\"\n    },\n    \"--now-container-card_header--font-style\": {\n        \"name\": \"containerCard.header.fontStyle\",\n        \"derived\": \"--now-display-type--head-primary--font-style\"\n    },\n    \"--now-container-card_header--font-weight\": {\n        \"name\": \"containerCard.header.fontWeight\",\n        \"derived\": \"--now-display-type--head-primary--font-weight\"\n    },\n    \"--now-container-card_header--primary--color\": {\n        \"name\": \"containerCard.header.primary.color\",\n        \"derived\": \"--now-display-type--primary--color\"\n    },\n    \"--now-container-card_header--secondary--color\": {\n        \"name\": \"containerCard.header.secondary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-container-card_header--tertiary--color\": {\n        \"name\": \"containerCard.header.tertiary.color\",\n        \"derived\": \"--now-display-type--tertiary--color\"\n    },\n    \"--now-container-card_header--text-transform\": {\n        \"name\": \"containerCard.header.textTransform\",\n        \"derived\": \"--now-display-type--head-primary--text-transform\"\n    },\n    \"--now-container-card_status--primary_blue--background-color\": {\n        \"name\": \"containerCard.status.primary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-4\"\n    },\n    \"--now-container-card_status--primary_brown--background-color\": {\n        \"name\": \"containerCard.status.primary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-4\"\n    },\n    \"--now-container-card_status--primary_critical--background-color\": {\n        \"name\": \"containerCard.status.primary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-container-card_status--primary_gray--background-color\": {\n        \"name\": \"containerCard.status.primary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-4\"\n    },\n    \"--now-container-card_status--primary_green--background-color\": {\n        \"name\": \"containerCard.status.primary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-4\"\n    },\n    \"--now-container-card_status--primary_green-yellow--background-color\": {\n        \"name\": \"containerCard.status.primary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-4\"\n    },\n    \"--now-container-card_status--primary_high--background-color\": {\n        \"name\": \"containerCard.status.primary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-2\"\n    },\n    \"--now-container-card_status--primary_info--background-color\": {\n        \"name\": \"containerCard.status.primary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-container-card_status--primary_low--background-color\": {\n        \"name\": \"containerCard.status.primary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-2\"\n    },\n    \"--now-container-card_status--primary_magenta--background-color\": {\n        \"name\": \"containerCard.status.primary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-4\"\n    },\n    \"--now-container-card_status--primary_moderate--background-color\": {\n        \"name\": \"containerCard.status.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-2\"\n    },\n    \"--now-container-card_status--primary_orange--background-color\": {\n        \"name\": \"containerCard.status.primary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-4\"\n    },\n    \"--now-container-card_status--primary_pink--background-color\": {\n        \"name\": \"containerCard.status.primary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-4\"\n    },\n    \"--now-container-card_status--primary_positive--background-color\": {\n        \"name\": \"containerCard.status.primary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-2\"\n    },\n    \"--now-container-card_status--primary_purple--background-color\": {\n        \"name\": \"containerCard.status.primary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-4\"\n    },\n    \"--now-container-card_status--primary_teal--background-color\": {\n        \"name\": \"containerCard.status.primary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-4\"\n    },\n    \"--now-container-card_status--primary_warning--background-color\": {\n        \"name\": \"containerCard.status.primary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-2\"\n    },\n    \"--now-container-card_status--primary_yellow--background-color\": {\n        \"name\": \"containerCard.status.primary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-4\"\n    },\n    \"--now-container-card_status--secondary_blue--background-color\": {\n        \"name\": \"containerCard.status.secondary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-1\"\n    },\n    \"--now-container-card_status--secondary_brown--background-color\": {\n        \"name\": \"containerCard.status.secondary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-1\"\n    },\n    \"--now-container-card_status--secondary_critical--background-color\": {\n        \"name\": \"containerCard.status.secondary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-container-card_status--secondary_gray--background-color\": {\n        \"name\": \"containerCard.status.secondary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-1\"\n    },\n    \"--now-container-card_status--secondary_green--background-color\": {\n        \"name\": \"containerCard.status.secondary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-1\"\n    },\n    \"--now-container-card_status--secondary_green-yellow--background-color\": {\n        \"name\": \"containerCard.status.secondary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-1\"\n    },\n    \"--now-container-card_status--secondary_high--background-color\": {\n        \"name\": \"containerCard.status.secondary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-1\"\n    },\n    \"--now-container-card_status--secondary_info--background-color\": {\n        \"name\": \"containerCard.status.secondary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-container-card_status--secondary_low--background-color\": {\n        \"name\": \"containerCard.status.secondary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-container-card_status--secondary_magenta--background-color\": {\n        \"name\": \"containerCard.status.secondary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-1\"\n    },\n    \"--now-container-card_status--secondary_moderate--background-color\": {\n        \"name\": \"containerCard.status.secondary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-1\"\n    },\n    \"--now-container-card_status--secondary_orange--background-color\": {\n        \"name\": \"containerCard.status.secondary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-1\"\n    },\n    \"--now-container-card_status--secondary_pink--background-color\": {\n        \"name\": \"containerCard.status.secondary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-1\"\n    },\n    \"--now-container-card_status--secondary_positive--background-color\": {\n        \"name\": \"containerCard.status.secondary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-container-card_status--secondary_purple--background-color\": {\n        \"name\": \"containerCard.status.secondary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-1\"\n    },\n    \"--now-container-card_status--secondary_teal--background-color\": {\n        \"name\": \"containerCard.status.secondary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-1\"\n    },\n    \"--now-container-card_status--secondary_warning--background-color\": {\n        \"name\": \"containerCard.status.secondary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-container-card_status--secondary_yellow--background-color\": {\n        \"name\": \"containerCard.status.secondary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-1\"\n    },\n    \"--now-container-card_status--tertiary_blue--background-color\": {\n        \"name\": \"containerCard.status.tertiary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-0\"\n    },\n    \"--now-container-card_status--tertiary_brown--background-color\": {\n        \"name\": \"containerCard.status.tertiary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-0\"\n    },\n    \"--now-container-card_status--tertiary_critical--background-color\": {\n        \"name\": \"containerCard.status.tertiary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-container-card_status--tertiary_gray--background-color\": {\n        \"name\": \"containerCard.status.tertiary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-0\"\n    },\n    \"--now-container-card_status--tertiary_green--background-color\": {\n        \"name\": \"containerCard.status.tertiary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-0\"\n    },\n    \"--now-container-card_status--tertiary_green-yellow--background-color\": {\n        \"name\": \"containerCard.status.tertiary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-0\"\n    },\n    \"--now-container-card_status--tertiary_high--background-color\": {\n        \"name\": \"containerCard.status.tertiary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-0\"\n    },\n    \"--now-container-card_status--tertiary_info--background-color\": {\n        \"name\": \"containerCard.status.tertiary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-0\"\n    },\n    \"--now-container-card_status--tertiary_low--background-color\": {\n        \"name\": \"containerCard.status.tertiary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-0\"\n    },\n    \"--now-container-card_status--tertiary_magenta--background-color\": {\n        \"name\": \"containerCard.status.tertiary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-0\"\n    },\n    \"--now-container-card_status--tertiary_moderate--background-color\": {\n        \"name\": \"containerCard.status.tertiary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-0\"\n    },\n    \"--now-container-card_status--tertiary_orange--background-color\": {\n        \"name\": \"containerCard.status.tertiary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-0\"\n    },\n    \"--now-container-card_status--tertiary_pink--background-color\": {\n        \"name\": \"containerCard.status.tertiary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-0\"\n    },\n    \"--now-container-card_status--tertiary_positive--background-color\": {\n        \"name\": \"containerCard.status.tertiary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-0\"\n    },\n    \"--now-container-card_status--tertiary_purple--background-color\": {\n        \"name\": \"containerCard.status.tertiary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-0\"\n    },\n    \"--now-container-card_status--tertiary_teal--background-color\": {\n        \"name\": \"containerCard.status.tertiary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-0\"\n    },\n    \"--now-container-card_status--tertiary_warning--background-color\": {\n        \"name\": \"containerCard.status.tertiary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-container-card_status--tertiary_yellow--background-color\": {\n        \"name\": \"containerCard.status.tertiary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-0\"\n    },\n    \"--now-container-card_subheader--font-family\": {\n        \"name\": \"containerCard.subheader.fontFamily\",\n        \"derived\": \"--now-display-type--title-primary--font-family\"\n    },\n    \"--now-container-card_subheader--font-style\": {\n        \"name\": \"containerCard.subheader.fontStyle\",\n        \"derived\": \"--now-display-type--title-primary--font-style\"\n    },\n    \"--now-container-card_subheader--font-weight\": {\n        \"name\": \"containerCard.subheader.fontWeight\",\n        \"derived\": \"--now-display-type--title-primary--font-weight\"\n    },\n    \"--now-container-card_subheader--primary--color\": {\n        \"name\": \"containerCard.subheader.primary.color\",\n        \"derived\": \"--now-container-card--primary--color\"\n    },\n    \"--now-container-card_subheader--secondary--color\": {\n        \"name\": \"containerCard.subheader.secondary.color\",\n        \"derived\": \"--now-container-card--secondary--color\"\n    },\n    \"--now-container-card_subheader--tertiary--color\": {\n        \"name\": \"containerCard.subheader.tertiary.color\",\n        \"derived\": \"--now-container-card--tertiary--color\"\n    },\n    \"--now-container-card_subheader--text-transform\": {\n        \"name\": \"containerCard.subheader.textTransform\",\n        \"derived\": \"--now-display-type--title-primary--text-transform\"\n    },\n    \"--now-container-card_tagline--font-family\": {\n        \"name\": \"containerCard.tagline.fontFamily\",\n        \"derived\": \"--now-container-card--font-family\"\n    },\n    \"--now-container-card_tagline--font-style\": {\n        \"name\": \"containerCard.tagline.fontStyle\",\n        \"derived\": \"--now-container-card--font-style\"\n    },\n    \"--now-container-card_tagline--font-weight\": {\n        \"name\": \"containerCard.tagline.fontWeight\",\n        \"derived\": \"--now-container-card--font-weight\"\n    },\n    \"--now-container-card_tagline--primary--color\": {\n        \"name\": \"containerCard.tagline.primary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-container-card_tagline--secondary--color\": {\n        \"name\": \"containerCard.tagline.secondary.color\",\n        \"derived\": \"--now-container-card--secondary--color\"\n    },\n    \"--now-container-card_tagline--tertiary--color\": {\n        \"name\": \"containerCard.tagline.tertiary.color\",\n        \"derived\": \"--now-container-card--tertiary--color\"\n    },\n    \"--now-container-card_tagline--text-transform\": {\n        \"name\": \"containerCard.tagline.textTransform\",\n        \"derived\": \"--now-container-card--text-transform\"\n    },\n    \"--now-container-card--actionable--border-radius\": {\n        \"name\": \"containerCard.actionable.borderRadius\",\n        \"derived\": \"--now-container-card--border-radius\"\n    },\n    \"--now-container-card--actionable--border-width\": {\n        \"name\": \"containerCard.actionable.borderWidth\",\n        \"derived\": \"--now-container-card--border-width\"\n    },\n    \"--now-container-card--actionable--border-width--active\": {\n        \"name\": \"containerCard.actionable.borderWidth.active\",\n        \"derived\": \"--now-container-card--actionable--border-width\"\n    },\n    \"--now-container-card--actionable--border-width--hover\": {\n        \"name\": \"containerCard.actionable.borderWidth.hover\",\n        \"derived\": \"--now-container-card--actionable--border-width\"\n    },\n    \"--now-container-card--actionable--border-width--selected\": {\n        \"name\": \"containerCard.actionable.borderWidth.selected\",\n        \"derived\": \"--now-container-card--actionable--border-width\"\n    },\n    \"--now-container-card--background-color\": {\n        \"name\": \"containerCard.backgroundColor\",\n        \"derived\": \"--now-container--color\"\n    },\n    \"--now-container-card--background-color-alpha\": {\n        \"name\": \"containerCard.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-container-card--border-color\": {\n        \"name\": \"containerCard.borderColor\",\n        \"derived\": \"--now-container--border-color\"\n    },\n    \"--now-container-card--border-radius\": {\n        \"name\": \"containerCard.borderRadius\",\n        \"derived\": \"--now-container--border-radius\"\n    },\n    \"--now-container-card--border-width\": {\n        \"name\": \"containerCard.borderWidth\",\n        \"derived\": \"--now-container--border-width\"\n    },\n    \"--now-container-card--font-family\": {\n        \"name\": \"containerCard.fontFamily\",\n        \"derived\": \"--now-container--font-family\"\n    },\n    \"--now-container-card--font-style\": {\n        \"name\": \"containerCard.fontStyle\",\n        \"derived\": \"--now-container--font-style\"\n    },\n    \"--now-container-card--font-weight\": {\n        \"name\": \"containerCard.fontWeight\",\n        \"derived\": \"--now-container--font-weight\"\n    },\n    \"--now-container-card--primary_actionable--background-color\": {\n        \"name\": \"containerCard.primary.actionable.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-container-card--primary_actionable--background-color--active\": {\n        \"name\": \"containerCard.primary.actionable.backgroundColor.active\",\n        \"derived\": \"--now-container-card--primary_actionable--background-color\"\n    },\n    \"--now-container-card--primary_actionable--background-color--hover\": {\n        \"name\": \"containerCard.primary.actionable.backgroundColor.hover\",\n        \"derived\": \"--now-container-card--primary_actionable--background-color\"\n    },\n    \"--now-container-card--primary_actionable--background-color--selected\": {\n        \"name\": \"containerCard.primary.actionable.backgroundColor.selected\",\n        \"derived\": \"--now-container-card--primary_actionable--background-color\"\n    },\n    \"--now-container-card--primary_actionable--border-color\": {\n        \"name\": \"containerCard.primary.actionable.borderColor\",\n        \"derived\": \"--now-color_border--tertiary\"\n    },\n    \"--now-container-card--primary_actionable--border-color--active\": {\n        \"name\": \"containerCard.primary.actionable.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-container-card--primary_actionable--border-color--hover\": {\n        \"name\": \"containerCard.primary.actionable.borderColor.hover\",\n        \"derived\": \"--now-color_border--secondary\"\n    },\n    \"--now-container-card--primary_actionable--border-color--selected\": {\n        \"name\": \"containerCard.primary.actionable.borderColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-container-card--primary_actionable--border-radius\": {\n        \"name\": \"containerCard.primary.actionable.borderRadius\",\n        \"derived\": \"--now-container-card--actionable--border-radius\"\n    },\n    \"--now-container-card--primary_actionable--border-width\": {\n        \"name\": \"containerCard.primary.actionable.borderWidth\",\n        \"derived\": \"--now-container-card--actionable--border-width\"\n    },\n    \"--now-container-card--primary_actionable--border-width--active\": {\n        \"name\": \"containerCard.primary.actionable.borderWidth.active\",\n        \"derived\": \"--now-container-card--actionable--border-width--active\"\n    },\n    \"--now-container-card--primary_actionable--border-width--hover\": {\n        \"name\": \"containerCard.primary.actionable.borderWidth.hover\",\n        \"derived\": \"--now-container-card--actionable--border-width--hover\"\n    },\n    \"--now-container-card--primary_actionable--border-width--selected\": {\n        \"name\": \"containerCard.primary.actionable.borderWidth.selected\",\n        \"derived\": \"--now-container-card--actionable--border-width--selected\"\n    },\n    \"--now-container-card--primary--background-color\": {\n        \"name\": \"containerCard.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-container-card--primary--border-color\": {\n        \"name\": \"containerCard.primary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary\"\n    },\n    \"--now-container-card--primary--border-radius\": {\n        \"name\": \"containerCard.primary.borderRadius\",\n        \"derived\": \"--now-container-card--border-radius\"\n    },\n    \"--now-container-card--primary--border-width\": {\n        \"name\": \"containerCard.primary.borderWidth\",\n        \"derived\": \"--now-container-card--border-width\"\n    },\n    \"--now-container-card--primary--color\": {\n        \"name\": \"containerCard.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-container-card--secondary--color\": {\n        \"name\": \"containerCard.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-container-card--tertiary--color\": {\n        \"name\": \"containerCard.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-container-card--text-transform\": {\n        \"name\": \"containerCard.textTransform\",\n        \"derived\": \"--now-container--text-transform\"\n    },\n    \"--now-display-type--body_label--color\": {\n        \"name\": \"displayType.body.label.color\",\n        \"derived\": \"--now-display-type_label--color\"\n    },\n    \"--now-display-type--body_label--font-family\": {\n        \"name\": \"displayType.body.label.fontFamily\",\n        \"derived\": \"--now-display-type_label--font-family\"\n    },\n    \"--now-display-type--body_label--font-style\": {\n        \"name\": \"displayType.body.label.fontStyle\",\n        \"derived\": \"--now-display-type_label--font-style\"\n    },\n    \"--now-display-type--body_label--font-weight\": {\n        \"name\": \"displayType.body.label.fontWeight\",\n        \"derived\": \"--now-display-type_label--font-weight\"\n    },\n    \"--now-display-type--body_label--text-transform\": {\n        \"name\": \"displayType.body.label.textTransform\",\n        \"derived\": \"--now-display-type_label--text-transform\"\n    },\n    \"--now-display-type--body_previous_delimiter--font-weight\": {\n        \"name\": \"displayType.body.previous.delimiter.fontWeight\",\n        \"initial\": \"600\"\n    },\n    \"--now-display-type--body_previous--color\": {\n        \"name\": \"displayType.body.previous.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-display-type--body_previous--font-style\": {\n        \"name\": \"displayType.body.previous.fontStyle\",\n        \"initial\": \"italic\"\n    },\n    \"--now-display-type--body_previous--font-weight\": {\n        \"name\": \"displayType.body.previous.fontWeight\",\n        \"initial\": \"normal\"\n    },\n    \"--now-display-type--body_previous--text-decoration\": {\n        \"name\": \"displayType.body.previous.textDecoration\",\n        \"initial\": \"line-through\"\n    },\n    \"--now-display-type--body_previous--text-transform\": {\n        \"name\": \"displayType.body.previous.textTransform\",\n        \"derived\": \"--now-display-type_value--text-transform\"\n    },\n    \"--now-display-type--body_value--color\": {\n        \"name\": \"displayType.body.value.color\",\n        \"derived\": \"--now-display-type_value--color\"\n    },\n    \"--now-display-type--body_value--font-family\": {\n        \"name\": \"displayType.body.value.fontFamily\",\n        \"derived\": \"--now-display-type_value--font-family\"\n    },\n    \"--now-display-type--body_value--font-style\": {\n        \"name\": \"displayType.body.value.fontStyle\",\n        \"derived\": \"--now-display-type_value--font-style\"\n    },\n    \"--now-display-type--body_value--font-weight\": {\n        \"name\": \"displayType.body.value.fontWeight\",\n        \"derived\": \"--now-display-type_value--font-weight\"\n    },\n    \"--now-display-type--body_value--text-transform\": {\n        \"name\": \"displayType.body.value.textTransform\",\n        \"derived\": \"--now-display-type_value--text-transform\"\n    },\n    \"--now-display-type--body-inline_label--color\": {\n        \"name\": \"displayType.bodyInline.label.color\",\n        \"derived\": \"--now-display-type--body-inline--color\"\n    },\n    \"--now-display-type--body-inline_label--font-family\": {\n        \"name\": \"displayType.bodyInline.label.fontFamily\",\n        \"derived\": \"--now-display-type--body_label--font-family\"\n    },\n    \"--now-display-type--body-inline_label--font-style\": {\n        \"name\": \"displayType.bodyInline.label.fontStyle\",\n        \"derived\": \"--now-display-type--body_label--font-style\"\n    },\n    \"--now-display-type--body-inline_label--font-weight\": {\n        \"name\": \"displayType.bodyInline.label.fontWeight\",\n        \"derived\": \"--now-display-type--body_label--font-weight\"\n    },\n    \"--now-display-type--body-inline_label--text-transform\": {\n        \"name\": \"displayType.bodyInline.label.textTransform\",\n        \"derived\": \"--now-display-type--body_label--text-transform\"\n    },\n    \"--now-display-type--body-inline_previous--color\": {\n        \"name\": \"displayType.bodyInline.previous.color\",\n        \"derived\": \"--now-display-type--body_previous--color\"\n    },\n    \"--now-display-type--body-inline_previous--font-style\": {\n        \"name\": \"displayType.bodyInline.previous.fontStyle\",\n        \"derived\": \"--now-display-type--body_previous--font-style\"\n    },\n    \"--now-display-type--body-inline_previous--font-weight\": {\n        \"name\": \"displayType.bodyInline.previous.fontWeight\",\n        \"derived\": \"--now-display-type--body_previous--font-weight\"\n    },\n    \"--now-display-type--body-inline_previous--text-decoration\": {\n        \"name\": \"displayType.bodyInline.previous.textDecoration\",\n        \"derived\": \"--now-display-type--body_previous--text-decoration\"\n    },\n    \"--now-display-type--body-inline_previous--text-transform\": {\n        \"name\": \"displayType.bodyInline.previous.textTransform\",\n        \"derived\": \"--now-display-type--body_previous--text-transform\"\n    },\n    \"--now-display-type--body-inline_value--color\": {\n        \"name\": \"displayType.bodyInline.value.color\",\n        \"derived\": \"--now-display-type--body-inline--color\"\n    },\n    \"--now-display-type--body-inline_value--font-family\": {\n        \"name\": \"displayType.bodyInline.value.fontFamily\",\n        \"derived\": \"--now-display-type--body_value--font-family\"\n    },\n    \"--now-display-type--body-inline_value--font-style\": {\n        \"name\": \"displayType.bodyInline.value.fontStyle\",\n        \"derived\": \"--now-display-type--body_value--font-style\"\n    },\n    \"--now-display-type--body-inline_value--font-weight\": {\n        \"name\": \"displayType.bodyInline.value.fontWeight\",\n        \"derived\": \"--now-display-type--body_value--font-weight\"\n    },\n    \"--now-display-type--body-inline_value--text-transform\": {\n        \"name\": \"displayType.bodyInline.value.textTransform\",\n        \"derived\": \"--now-display-type--body_value--text-transform\"\n    },\n    \"--now-display-type--body-inline--color\": {\n        \"name\": \"displayType.bodyInline.color\",\n        \"derived\": \"--now-display-type--body_label--color\"\n    },\n    \"--now-display-type--body-stacked_label--color\": {\n        \"name\": \"displayType.bodyStacked.label.color\",\n        \"derived\": \"--now-display-type--body_label--color\"\n    },\n    \"--now-display-type--body-stacked_label--font-family\": {\n        \"name\": \"displayType.bodyStacked.label.fontFamily\",\n        \"derived\": \"--now-display-type--body_label--font-family\"\n    },\n    \"--now-display-type--body-stacked_label--font-style\": {\n        \"name\": \"displayType.bodyStacked.label.fontStyle\",\n        \"derived\": \"--now-display-type--body_label--font-style\"\n    },\n    \"--now-display-type--body-stacked_label--font-weight\": {\n        \"name\": \"displayType.bodyStacked.label.fontWeight\",\n        \"derived\": \"--now-display-type--body_label--font-weight\"\n    },\n    \"--now-display-type--body-stacked_label--text-transform\": {\n        \"name\": \"displayType.bodyStacked.label.textTransform\",\n        \"derived\": \"--now-display-type--body_label--text-transform\"\n    },\n    \"--now-display-type--body-stacked_previous--color\": {\n        \"name\": \"displayType.bodyStacked.previous.color\",\n        \"derived\": \"--now-display-type--body_previous--color\"\n    },\n    \"--now-display-type--body-stacked_previous--font-style\": {\n        \"name\": \"displayType.bodyStacked.previous.fontStyle\",\n        \"derived\": \"--now-display-type--body_previous--font-style\"\n    },\n    \"--now-display-type--body-stacked_previous--font-weight\": {\n        \"name\": \"displayType.bodyStacked.previous.fontWeight\",\n        \"derived\": \"--now-display-type--body_previous--font-weight\"\n    },\n    \"--now-display-type--body-stacked_previous--text-decoration\": {\n        \"name\": \"displayType.bodyStacked.previous.textDecoration\",\n        \"derived\": \"--now-display-type--body_previous--text-decoration\"\n    },\n    \"--now-display-type--body-stacked_previous--text-transform\": {\n        \"name\": \"displayType.bodyStacked.previous.textTransform\",\n        \"derived\": \"--now-display-type--body_previous--text-transform\"\n    },\n    \"--now-display-type--body-stacked_value--color\": {\n        \"name\": \"displayType.bodyStacked.value.color\",\n        \"derived\": \"--now-display-type--body_value--color\"\n    },\n    \"--now-display-type--body-stacked_value--font-family\": {\n        \"name\": \"displayType.bodyStacked.value.fontFamily\",\n        \"derived\": \"--now-display-type--body_value--font-family\"\n    },\n    \"--now-display-type--body-stacked_value--font-style\": {\n        \"name\": \"displayType.bodyStacked.value.fontStyle\",\n        \"derived\": \"--now-display-type--body_value--font-style\"\n    },\n    \"--now-display-type--body-stacked_value--font-weight\": {\n        \"name\": \"displayType.bodyStacked.value.fontWeight\",\n        \"derived\": \"--now-display-type--body_value--font-weight\"\n    },\n    \"--now-display-type--body-stacked_value--text-transform\": {\n        \"name\": \"displayType.bodyStacked.value.textTransform\",\n        \"derived\": \"--now-display-type--body_value--text-transform\"\n    },\n    \"--now-display-type--body-tabbed_label--color\": {\n        \"name\": \"displayType.bodyTabbed.label.color\",\n        \"derived\": \"--now-display-type--body_label--color\"\n    },\n    \"--now-display-type--body-tabbed_label--font-family\": {\n        \"name\": \"displayType.bodyTabbed.label.fontFamily\",\n        \"derived\": \"--now-display-type--body_label--font-family\"\n    },\n    \"--now-display-type--body-tabbed_label--font-style\": {\n        \"name\": \"displayType.bodyTabbed.label.fontStyle\",\n        \"derived\": \"--now-display-type--body_label--font-style\"\n    },\n    \"--now-display-type--body-tabbed_label--font-weight\": {\n        \"name\": \"displayType.bodyTabbed.label.fontWeight\",\n        \"derived\": \"--now-display-type--body_label--font-weight\"\n    },\n    \"--now-display-type--body-tabbed_label--text-transform\": {\n        \"name\": \"displayType.bodyTabbed.label.textTransform\",\n        \"derived\": \"--now-display-type--body_label--text-transform\"\n    },\n    \"--now-display-type--body-tabbed_previous--color\": {\n        \"name\": \"displayType.bodyTabbed.previous.color\",\n        \"derived\": \"--now-display-type--body_previous--color\"\n    },\n    \"--now-display-type--body-tabbed_previous--font-style\": {\n        \"name\": \"displayType.bodyTabbed.previous.fontStyle\",\n        \"derived\": \"--now-display-type--body_previous--font-style\"\n    },\n    \"--now-display-type--body-tabbed_previous--font-weight\": {\n        \"name\": \"displayType.bodyTabbed.previous.fontWeight\",\n        \"derived\": \"--now-display-type--body_previous--font-weight\"\n    },\n    \"--now-display-type--body-tabbed_previous--text-decoration\": {\n        \"name\": \"displayType.bodyTabbed.previous.textDecoration\",\n        \"derived\": \"--now-display-type--body_previous--text-decoration\"\n    },\n    \"--now-display-type--body-tabbed_previous--text-transform\": {\n        \"name\": \"displayType.bodyTabbed.previous.textTransform\",\n        \"derived\": \"--now-display-type--body_previous--text-transform\"\n    },\n    \"--now-display-type--body-tabbed_value--color\": {\n        \"name\": \"displayType.bodyTabbed.value.color\",\n        \"derived\": \"--now-display-type--body_value--color\"\n    },\n    \"--now-display-type--body-tabbed_value--font-family\": {\n        \"name\": \"displayType.bodyTabbed.value.fontFamily\",\n        \"derived\": \"--now-display-type--body_value--font-family\"\n    },\n    \"--now-display-type--body-tabbed_value--font-style\": {\n        \"name\": \"displayType.bodyTabbed.value.fontStyle\",\n        \"derived\": \"--now-display-type--body_value--font-style\"\n    },\n    \"--now-display-type--body-tabbed_value--font-weight\": {\n        \"name\": \"displayType.bodyTabbed.value.fontWeight\",\n        \"derived\": \"--now-display-type--body_value--font-weight\"\n    },\n    \"--now-display-type--body-tabbed_value--text-transform\": {\n        \"name\": \"displayType.bodyTabbed.value.textTransform\",\n        \"derived\": \"--now-display-type--body_value--text-transform\"\n    },\n    \"--now-display-type--head-primary--color\": {\n        \"name\": \"displayType.headPrimary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-display-type--head-primary--font-family\": {\n        \"name\": \"displayType.headPrimary.fontFamily\",\n        \"derived\": \"--now-display-type--header-primary--font-family\"\n    },\n    \"--now-display-type--head-primary--font-style\": {\n        \"name\": \"displayType.headPrimary.fontStyle\",\n        \"derived\": \"--now-display-type--header-primary--font-style\"\n    },\n    \"--now-display-type--head-primary--font-weight\": {\n        \"name\": \"displayType.headPrimary.fontWeight\",\n        \"derived\": \"--now-display-type--header-primary--font-weight\"\n    },\n    \"--now-display-type--head-primary--text-transform\": {\n        \"name\": \"displayType.headPrimary.textTransform\",\n        \"derived\": \"--now-display-type--header-primary--text-transform\"\n    },\n    \"--now-display-type--head-secondary--color\": {\n        \"name\": \"displayType.headSecondary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-display-type--head-secondary--font-family\": {\n        \"name\": \"displayType.headSecondary.fontFamily\",\n        \"derived\": \"--now-display-type--header-secondary--font-family\"\n    },\n    \"--now-display-type--head-secondary--font-style\": {\n        \"name\": \"displayType.headSecondary.fontStyle\",\n        \"derived\": \"--now-display-type--header-secondary--font-style\"\n    },\n    \"--now-display-type--head-secondary--font-weight\": {\n        \"name\": \"displayType.headSecondary.fontWeight\",\n        \"derived\": \"--now-display-type--header-secondary--font-weight\"\n    },\n    \"--now-display-type--head-secondary--text-transform\": {\n        \"name\": \"displayType.headSecondary.textTransform\",\n        \"derived\": \"--now-display-type--header-secondary--text-transform\"\n    },\n    \"--now-display-type--head-tertiary--color\": {\n        \"name\": \"displayType.headTertiary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-display-type--head-tertiary--font-family\": {\n        \"name\": \"displayType.headTertiary.fontFamily\",\n        \"derived\": \"--now-display-type--header-tertiary--font-family\"\n    },\n    \"--now-display-type--head-tertiary--font-style\": {\n        \"name\": \"displayType.headTertiary.fontStyle\",\n        \"derived\": \"--now-display-type--header-tertiary--font-style\"\n    },\n    \"--now-display-type--head-tertiary--font-weight\": {\n        \"name\": \"displayType.headTertiary.fontWeight\",\n        \"derived\": \"--now-display-type--header-tertiary--font-weight\"\n    },\n    \"--now-display-type--head-tertiary--text-transform\": {\n        \"name\": \"displayType.headTertiary.textTransform\",\n        \"derived\": \"--now-display-type--header-tertiary--text-transform\"\n    },\n    \"--now-display-type--subhead-primary--color\": {\n        \"name\": \"displayType.subheadPrimary.color\",\n        \"derived\": \"--now-display-type--primary--color\"\n    },\n    \"--now-display-type--subhead-primary--font-family\": {\n        \"name\": \"displayType.subheadPrimary.fontFamily\",\n        \"derived\": \"--now-display-type--title-primary--font-family\"\n    },\n    \"--now-display-type--subhead-primary--font-style\": {\n        \"name\": \"displayType.subheadPrimary.fontStyle\",\n        \"derived\": \"--now-display-type--title-primary--font-style\"\n    },\n    \"--now-display-type--subhead-primary--font-weight\": {\n        \"name\": \"displayType.subheadPrimary.fontWeight\",\n        \"derived\": \"--now-display-type--title-primary--font-weight\"\n    },\n    \"--now-display-type--subhead-primary--text-transform\": {\n        \"name\": \"displayType.subheadPrimary.textTransform\",\n        \"derived\": \"--now-display-type--title-primary--text-transform\"\n    },\n    \"--now-display-type--subhead-secondary--color\": {\n        \"name\": \"displayType.subheadSecondary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-display-type--subhead-secondary--font-family\": {\n        \"name\": \"displayType.subheadSecondary.fontFamily\",\n        \"derived\": \"--now-display-type--title-secondary--font-family\"\n    },\n    \"--now-display-type--subhead-secondary--font-style\": {\n        \"name\": \"displayType.subheadSecondary.fontStyle\",\n        \"derived\": \"--now-display-type--title-secondary--font-style\"\n    },\n    \"--now-display-type--subhead-secondary--font-weight\": {\n        \"name\": \"displayType.subheadSecondary.fontWeight\",\n        \"derived\": \"--now-display-type--title-secondary--font-weight\"\n    },\n    \"--now-display-type--subhead-secondary--text-transform\": {\n        \"name\": \"displayType.subheadSecondary.textTransform\",\n        \"derived\": \"--now-display-type--title-secondary--text-transform\"\n    },\n    \"--now-display-type--subhead-tertiary--color\": {\n        \"name\": \"displayType.subheadTertiary.color\",\n        \"derived\": \"--now-display-type--tertiary--color\"\n    },\n    \"--now-display-type--subhead-tertiary--font-family\": {\n        \"name\": \"displayType.subheadTertiary.fontFamily\",\n        \"derived\": \"--now-display-type--title-tertiary--font-family\"\n    },\n    \"--now-display-type--subhead-tertiary--font-style\": {\n        \"name\": \"displayType.subheadTertiary.fontStyle\",\n        \"derived\": \"--now-display-type--title-tertiary--font-style\"\n    },\n    \"--now-display-type--subhead-tertiary--font-weight\": {\n        \"name\": \"displayType.subheadTertiary.fontWeight\",\n        \"derived\": \"--now-display-type--title-tertiary--font-weight\"\n    },\n    \"--now-display-type--subhead-tertiary--text-transform\": {\n        \"name\": \"displayType.subheadTertiary.textTransform\",\n        \"derived\": \"--now-display-type--title-tertiary--text-transform\"\n    },\n    \"--now-form-control_focus-halo--primary--border-width\": {\n        \"name\": \"formControl.focusHalo.primary.borderWidth\",\n        \"initial\": \"6px\"\n    },\n    \"--now-form-control_focus-halo--primary--color\": {\n        \"name\": \"formControl.focusHalo.primary.color\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control_focus-halo--primary--color--invalid\": {\n        \"name\": \"formControl.focusHalo.primary.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control_focus-halo--secondary--border-width\": {\n        \"name\": \"formControl.focusHalo.secondary.borderWidth\",\n        \"initial\": \"4px\"\n    },\n    \"--now-form-control_focus-halo--secondary--color\": {\n        \"name\": \"formControl.focusHalo.secondary.color\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control_focus-halo--secondary--color--invalid\": {\n        \"name\": \"formControl.focusHalo.secondary.color.invalid\",\n        \"derived\": \"--now-form-control_focus-halo--secondary--color\"\n    },\n    \"--now-form-control_focus-ring--primary--border-width\": {\n        \"name\": \"formControl.focusRing.primary.borderWidth\",\n        \"initial\": \"2px\"\n    },\n    \"--now-form-control_focus-ring--primary--color\": {\n        \"name\": \"formControl.focusRing.primary.color\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control_focus-ring--primary--color--invalid\": {\n        \"name\": \"formControl.focusRing.primary.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control_focus-ring--secondary--border-width\": {\n        \"name\": \"formControl.focusRing.secondary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control_focus-ring--secondary--color\": {\n        \"name\": \"formControl.focusRing.secondary.color\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control_focus-ring--secondary--color--invalid\": {\n        \"name\": \"formControl.focusRing.secondary.color.invalid\",\n        \"derived\": \"--now-form-control_focus-ring--secondary--color\"\n    },\n    \"--now-form-control_handle--background-color\": {\n        \"name\": \"formControl.handle.backgroundColor\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-form-control_handle--background-color--hover\": {\n        \"name\": \"formControl.handle.backgroundColor.hover\",\n        \"derived\": \"--now-color--neutral-3\"\n    },\n    \"--now-form-control_handle--background-color--selected\": {\n        \"name\": \"formControl.handle.backgroundColor.selected\",\n        \"derived\": \"--now-form-control_handle--background-color\"\n    },\n    \"--now-form-control_handle--background-color--selected_hover\": {\n        \"name\": \"formControl.handle.backgroundColor.selected.hover\",\n        \"derived\": \"--now-form-control_handle--background-color--hover\"\n    },\n    \"--now-form-control_handle--border-color\": {\n        \"name\": \"formControl.handle.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control_handle--border-color--hover\": {\n        \"name\": \"formControl.handle.borderColor.hover\",\n        \"derived\": \"--now-form-control_handle--border-color\"\n    },\n    \"--now-form-control_handle--border-color--selected\": {\n        \"name\": \"formControl.handle.borderColor.selected\",\n        \"derived\": \"--now-form-control_handle--border-color\"\n    },\n    \"--now-form-control_handle--border-color--selected_hover\": {\n        \"name\": \"formControl.handle.borderColor.selected.hover\",\n        \"derived\": \"--now-form-control_handle--border-color\"\n    },\n    \"--now-form-control_label_icon--color--invalid\": {\n        \"name\": \"formControl.label.icon.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control_label_icon--color--valid\": {\n        \"name\": \"formControl.label.icon.color.valid\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-form-control_label_icon--critical--color\": {\n        \"name\": \"formControl.label.icon.critical.color\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control_label_icon--primary--color\": {\n        \"name\": \"formControl.label.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_label_icon--secondary--color\": {\n        \"name\": \"formControl.label.icon.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-form-control_label_icon--tertiary--color\": {\n        \"name\": \"formControl.label.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_label_icon--warning--color\": {\n        \"name\": \"formControl.label.icon.warning.color\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-form-control_label--color--invalid\": {\n        \"name\": \"formControl.label.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control_label--color--valid\": {\n        \"name\": \"formControl.label.color.valid\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-form-control_label--critical--color\": {\n        \"name\": \"formControl.label.critical.color\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control_label--critical--font-family\": {\n        \"name\": \"formControl.label.critical.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--critical--font-style\": {\n        \"name\": \"formControl.label.critical.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--critical--font-weight\": {\n        \"name\": \"formControl.label.critical.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--critical--text-transform\": {\n        \"name\": \"formControl.label.critical.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--font-family\": {\n        \"name\": \"formControl.label.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_label--font-family--invalid\": {\n        \"name\": \"formControl.label.fontFamily.invalid\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--font-family--valid\": {\n        \"name\": \"formControl.label.fontFamily.valid\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--font-style\": {\n        \"name\": \"formControl.label.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_label--font-style--invalid\": {\n        \"name\": \"formControl.label.fontStyle.invalid\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--font-style--valid\": {\n        \"name\": \"formControl.label.fontStyle.valid\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--font-weight\": {\n        \"name\": \"formControl.label.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_label--font-weight--invalid\": {\n        \"name\": \"formControl.label.fontWeight.invalid\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--font-weight--valid\": {\n        \"name\": \"formControl.label.fontWeight.valid\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--primary--color\": {\n        \"name\": \"formControl.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_label--primary--font-family\": {\n        \"name\": \"formControl.label.primary.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--primary--font-style\": {\n        \"name\": \"formControl.label.primary.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--primary--font-weight\": {\n        \"name\": \"formControl.label.primary.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--primary--text-transform\": {\n        \"name\": \"formControl.label.primary.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--secondary--color\": {\n        \"name\": \"formControl.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-form-control_label--secondary--font-family\": {\n        \"name\": \"formControl.label.secondary.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--secondary--font-style\": {\n        \"name\": \"formControl.label.secondary.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--secondary--font-weight\": {\n        \"name\": \"formControl.label.secondary.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--secondary--text-transform\": {\n        \"name\": \"formControl.label.secondary.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--tertiary--color\": {\n        \"name\": \"formControl.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_label--tertiary--font-family\": {\n        \"name\": \"formControl.label.tertiary.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--tertiary--font-style\": {\n        \"name\": \"formControl.label.tertiary.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--tertiary--font-weight\": {\n        \"name\": \"formControl.label.tertiary.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--tertiary--text-transform\": {\n        \"name\": \"formControl.label.tertiary.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--text-transform\": {\n        \"name\": \"formControl.label.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_label--text-transform--invalid\": {\n        \"name\": \"formControl.label.textTransform.invalid\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--text-transform--valid\": {\n        \"name\": \"formControl.label.textTransform.valid\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--warning--color\": {\n        \"name\": \"formControl.label.warning.color\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-form-control_label--warning--font-family\": {\n        \"name\": \"formControl.label.warning.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--warning--font-style\": {\n        \"name\": \"formControl.label.warning.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--warning--font-weight\": {\n        \"name\": \"formControl.label.warning.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--warning--text-transform\": {\n        \"name\": \"formControl.label.warning.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_message_icon--critical--color\": {\n        \"name\": \"formControl.message.icon.critical.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message_icon--info--color\": {\n        \"name\": \"formControl.message.icon.info.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message_icon--positive--color\": {\n        \"name\": \"formControl.message.icon.positive.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message_icon--suggestion--color\": {\n        \"name\": \"formControl.message.icon.suggestion.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_message_icon--warning--color\": {\n        \"name\": \"formControl.message.icon.warning.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message--border-radius\": {\n        \"name\": \"formControl.message.borderRadius\",\n        \"initial\": \"2px\"\n    },\n    \"--now-form-control_message--border-width\": {\n        \"name\": \"formControl.message.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-form-control_message--critical--background-color\": {\n        \"name\": \"formControl.message.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control_message--critical--border-color\": {\n        \"name\": \"formControl.message.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-form-control_message--critical--color\": {\n        \"name\": \"formControl.message.critical.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message--font-family\": {\n        \"name\": \"formControl.message.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_message--font-style\": {\n        \"name\": \"formControl.message.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_message--font-weight\": {\n        \"name\": \"formControl.message.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_message--info--background-color\": {\n        \"name\": \"formControl.message.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-0\"\n    },\n    \"--now-form-control_message--info--border-color\": {\n        \"name\": \"formControl.message.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-form-control_message--info--color\": {\n        \"name\": \"formControl.message.info.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message--positive--background-color\": {\n        \"name\": \"formControl.message.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-0\"\n    },\n    \"--now-form-control_message--positive--border-color\": {\n        \"name\": \"formControl.message.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-form-control_message--positive--color\": {\n        \"name\": \"formControl.message.positive.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message--primary--background-color-alpha\": {\n        \"name\": \"formControl.message.primary.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-form-control_message--secondary--background-color-alpha\": {\n        \"name\": \"formControl.message.secondary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-form-control_message--suggestion--background-color\": {\n        \"name\": \"formControl.message.suggestion.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control_message--suggestion--border-color\": {\n        \"name\": \"formControl.message.suggestion.borderColor\",\n        \"derived\": \"--now-color_border--tertiary\"\n    },\n    \"--now-form-control_message--suggestion--color\": {\n        \"name\": \"formControl.message.suggestion.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_message--text-transform\": {\n        \"name\": \"formControl.message.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_message--warning--background-color\": {\n        \"name\": \"formControl.message.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-form-control_message--warning--border-color\": {\n        \"name\": \"formControl.message.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-form-control_message--warning--color\": {\n        \"name\": \"formControl.message.warning.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_track--background-color\": {\n        \"name\": \"formControl.track.backgroundColor\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control_track--background-color--hover\": {\n        \"name\": \"formControl.track.backgroundColor.hover\",\n        \"derived\": \"--now-form-control_track--background-color\"\n    },\n    \"--now-form-control_track--background-color--selected\": {\n        \"name\": \"formControl.track.backgroundColor.selected\",\n        \"derived\": \"--now-color--interactive-2\"\n    },\n    \"--now-form-control_track--background-color--selected_hover\": {\n        \"name\": \"formControl.track.backgroundColor.selected.hover\",\n        \"derived\": \"--now-form-control_track--background-color--selected\"\n    },\n    \"--now-form-control_track--border-color\": {\n        \"name\": \"formControl.track.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control_track--border-color--hover\": {\n        \"name\": \"formControl.track.borderColor.hover\",\n        \"derived\": \"--now-form-control_track--border-color\"\n    },\n    \"--now-form-control_track--border-color--selected\": {\n        \"name\": \"formControl.track.borderColor.selected\",\n        \"derived\": \"--now-color--interactive-4\"\n    },\n    \"--now-form-control_track--border-color--selected_hover\": {\n        \"name\": \"formControl.track.borderColor.selected.hover\",\n        \"derived\": \"--now-form-control_track--border-color--selected\"\n    },\n    \"--now-form-control_value_icon--color--invalid\": {\n        \"name\": \"formControl.value.icon.color.invalid\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value_icon--color--invalid_focus\": {\n        \"name\": \"formControl.value.icon.color.invalid.focus\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control_value_icon--color--invalid_hover\": {\n        \"name\": \"formControl.value.icon.color.invalid.hover\",\n        \"derived\": \"--now-form-control_value_icon--color--invalid\"\n    },\n    \"--now-form-control_value_icon--color--readonly\": {\n        \"name\": \"formControl.value.icon.color.readonly\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value_icon--placeholder_strong--color\": {\n        \"name\": \"formControl.value.icon.placeholder.strong.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value_icon--placeholder_strong--color--focus\": {\n        \"name\": \"formControl.value.icon.placeholder.strong.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--placeholder_strong--color\"\n    },\n    \"--now-form-control_value_icon--placeholder_strong--color--hover\": {\n        \"name\": \"formControl.value.icon.placeholder.strong.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--placeholder_strong--color\"\n    },\n    \"--now-form-control_value_icon--placeholder--color\": {\n        \"name\": \"formControl.value.icon.placeholder.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_value_icon--placeholder--color--focus\": {\n        \"name\": \"formControl.value.icon.placeholder.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--placeholder--color\"\n    },\n    \"--now-form-control_value_icon--placeholder--color--hover\": {\n        \"name\": \"formControl.value.icon.placeholder.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--placeholder--color\"\n    },\n    \"--now-form-control_value_icon--primary--color\": {\n        \"name\": \"formControl.value.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value_icon--primary--color--focus\": {\n        \"name\": \"formControl.value.icon.primary.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--primary--color\"\n    },\n    \"--now-form-control_value_icon--primary--color--hover\": {\n        \"name\": \"formControl.value.icon.primary.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--primary--color\"\n    },\n    \"--now-form-control_value_icon--secondary--color\": {\n        \"name\": \"formControl.value.icon.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-form-control_value_icon--secondary--color--focus\": {\n        \"name\": \"formControl.value.icon.secondary.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--secondary--color\"\n    },\n    \"--now-form-control_value_icon--secondary--color--hover\": {\n        \"name\": \"formControl.value.icon.secondary.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--secondary--color\"\n    },\n    \"--now-form-control_value_icon--tertiary--color\": {\n        \"name\": \"formControl.value.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_value_icon--tertiary--color--focus\": {\n        \"name\": \"formControl.value.icon.tertiary.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--tertiary--color\"\n    },\n    \"--now-form-control_value_icon--tertiary--color--hover\": {\n        \"name\": \"formControl.value.icon.tertiary.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--tertiary--color\"\n    },\n    \"--now-form-control_value--color--invalid\": {\n        \"name\": \"formControl.value.color.invalid\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value--color--invalid_focus\": {\n        \"name\": \"formControl.value.color.invalid.focus\",\n        \"derived\": \"--now-form-control_value--color--invalid\"\n    },\n    \"--now-form-control_value--color--invalid_hover\": {\n        \"name\": \"formControl.value.color.invalid.hover\",\n        \"derived\": \"--now-form-control_value--color--invalid\"\n    },\n    \"--now-form-control_value--color--readonly\": {\n        \"name\": \"formControl.value.color.readonly\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value--font-family--invalid\": {\n        \"name\": \"formControl.value.fontFamily.invalid\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--font-family--readonly\": {\n        \"name\": \"formControl.value.fontFamily.readonly\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--font-style--invalid\": {\n        \"name\": \"formControl.value.fontStyle.invalid\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--font-style--readonly\": {\n        \"name\": \"formControl.value.fontStyle.readonly\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--font-weight--invalid\": {\n        \"name\": \"formControl.value.fontWeight.invalid\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--font-weight--readonly\": {\n        \"name\": \"formControl.value.fontWeight.readonly\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--placeholder_strong--color\": {\n        \"name\": \"formControl.value.placeholder.strong.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value--placeholder_strong--color--focus\": {\n        \"name\": \"formControl.value.placeholder.strong.color.focus\",\n        \"derived\": \"--now-form-control_value--placeholder_strong--color\"\n    },\n    \"--now-form-control_value--placeholder_strong--color--hover\": {\n        \"name\": \"formControl.value.placeholder.strong.color.hover\",\n        \"derived\": \"--now-form-control_value--placeholder_strong--color\"\n    },\n    \"--now-form-control_value--placeholder--color\": {\n        \"name\": \"formControl.value.placeholder.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_value--placeholder--color--focus\": {\n        \"name\": \"formControl.value.placeholder.color.focus\",\n        \"derived\": \"--now-form-control_value--placeholder--color\"\n    },\n    \"--now-form-control_value--placeholder--color--hover\": {\n        \"name\": \"formControl.value.placeholder.color.hover\",\n        \"derived\": \"--now-form-control_value--placeholder--color\"\n    },\n    \"--now-form-control_value--placeholder--font-family\": {\n        \"name\": \"formControl.value.placeholder.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--placeholder--font-style\": {\n        \"name\": \"formControl.value.placeholder.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--placeholder--font-weight\": {\n        \"name\": \"formControl.value.placeholder.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--placeholder--text-transform\": {\n        \"name\": \"formControl.value.placeholder.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--primary--color\": {\n        \"name\": \"formControl.value.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value--primary--color--focus\": {\n        \"name\": \"formControl.value.primary.color.focus\",\n        \"derived\": \"--now-form-control_value--primary--color\"\n    },\n    \"--now-form-control_value--primary--color--hover\": {\n        \"name\": \"formControl.value.primary.color.hover\",\n        \"derived\": \"--now-form-control_value--primary--color\"\n    },\n    \"--now-form-control_value--primary--font-family\": {\n        \"name\": \"formControl.value.primary.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--primary--font-style\": {\n        \"name\": \"formControl.value.primary.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--primary--font-weight\": {\n        \"name\": \"formControl.value.primary.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--primary--text-transform\": {\n        \"name\": \"formControl.value.primary.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--secondary--color\": {\n        \"name\": \"formControl.value.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-form-control_value--secondary--color--focus\": {\n        \"name\": \"formControl.value.secondary.color.focus\",\n        \"derived\": \"--now-form-control_value--secondary--color\"\n    },\n    \"--now-form-control_value--secondary--color--hover\": {\n        \"name\": \"formControl.value.secondary.color.hover\",\n        \"derived\": \"--now-form-control_value--secondary--color\"\n    },\n    \"--now-form-control_value--secondary--font-family\": {\n        \"name\": \"formControl.value.secondary.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--secondary--font-style\": {\n        \"name\": \"formControl.value.secondary.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--secondary--font-weight\": {\n        \"name\": \"formControl.value.secondary.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--secondary--text-transform\": {\n        \"name\": \"formControl.value.secondary.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--selection--background-color\": {\n        \"name\": \"formControl.value.selection.backgroundColor\",\n        \"derived\": \"--now-color--focus-1\"\n    },\n    \"--now-form-control_value--selection--color\": {\n        \"name\": \"formControl.value.selection.color\",\n        \"derived\": \"--now-form-control_value--primary--color\"\n    },\n    \"--now-form-control_value--tertiary--color\": {\n        \"name\": \"formControl.value.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_value--tertiary--color--focus\": {\n        \"name\": \"formControl.value.tertiary.color.focus\",\n        \"derived\": \"--now-form-control_value--tertiary--color\"\n    },\n    \"--now-form-control_value--tertiary--color--hover\": {\n        \"name\": \"formControl.value.tertiary.color.hover\",\n        \"derived\": \"--now-form-control_value--tertiary--color\"\n    },\n    \"--now-form-control_value--tertiary--font-family\": {\n        \"name\": \"formControl.value.tertiary.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--tertiary--font-style\": {\n        \"name\": \"formControl.value.tertiary.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--tertiary--font-weight\": {\n        \"name\": \"formControl.value.tertiary.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--tertiary--text-transform\": {\n        \"name\": \"formControl.value.tertiary.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--text-transform--invalid\": {\n        \"name\": \"formControl.value.textTransform.invalid\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--text-transform--readonly\": {\n        \"name\": \"formControl.value.textTransform.readonly\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control--opacity--disabled\": {\n        \"name\": \"formControl.opacity.disabled\",\n        \"initial\": \"0.25\"\n    },\n    \"--now-form-control-input_inner-shadow--color-alpha\": {\n        \"name\": \"formControlInput.innerShadow.colorAlpha\",\n        \"initial\": \"0.1\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color\": {\n        \"name\": \"formControlInput.innerShadow.info.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--focus\": {\n        \"name\": \"formControlInput.innerShadow.info.color.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--info--color\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--hover\": {\n        \"name\": \"formControlInput.innerShadow.info.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--invalid\": {\n        \"name\": \"formControlInput.innerShadow.info.color.invalid\",\n        \"derived\": \"--now-form-control-input_inner-shadow--info--color\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--invalid_focus\": {\n        \"name\": \"formControlInput.innerShadow.info.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--info--color--invalid\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--invalid_hover\": {\n        \"name\": \"formControlInput.innerShadow.info.color.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color\": {\n        \"name\": \"formControlInput.innerShadow.positive.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--focus\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--positive--color\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--hover\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--invalid\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.invalid\",\n        \"derived\": \"--now-form-control-input_inner-shadow--positive--color\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--invalid_focus\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--positive--color--invalid\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--invalid_hover\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color\": {\n        \"name\": \"formControlInput.innerShadow.primary.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--focus\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--primary--color\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--hover\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--invalid\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.invalid\",\n        \"derived\": \"--now-form-control-input_inner-shadow--primary--color\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--invalid_focus\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--primary--color--invalid\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--invalid_hover\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--opened\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.opened\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color\": {\n        \"name\": \"formControlInput.innerShadow.warning.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--focus\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--warning--color\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--hover\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--invalid\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.invalid\",\n        \"derived\": \"--now-form-control-input_inner-shadow--warning--color\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--invalid_focus\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--warning--color--invalid\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--invalid_hover\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-form-control-input_trigger--primary--color\": {\n        \"name\": \"formControlInput.trigger.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control-input_trigger--primary--color--focus\": {\n        \"name\": \"formControlInput.trigger.primary.color.focus\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input_trigger--primary--color--hover\": {\n        \"name\": \"formControlInput.trigger.primary.color.hover\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input_trigger--primary--color--invalid\": {\n        \"name\": \"formControlInput.trigger.primary.color.invalid\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input_trigger--primary--color--invalid_focus\": {\n        \"name\": \"formControlInput.trigger.primary.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color--invalid\"\n    },\n    \"--now-form-control-input_trigger--primary--color--invalid_hover\": {\n        \"name\": \"formControlInput.trigger.primary.color.invalid.hover\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color--invalid\"\n    },\n    \"--now-form-control-input_trigger--primary--color--opened\": {\n        \"name\": \"formControlInput.trigger.primary.color.opened\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input_trigger--primary--color--readonly\": {\n        \"name\": \"formControlInput.trigger.primary.color.readonly\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input--background-color-alpha\": {\n        \"name\": \"formControlInput.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-form-control-input--info--background-color\": {\n        \"name\": \"formControlInput.info.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-0\"\n    },\n    \"--now-form-control-input--info--background-color--focus\": {\n        \"name\": \"formControlInput.info.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input--info--background-color\"\n    },\n    \"--now-form-control-input--info--background-color--hover\": {\n        \"name\": \"formControlInput.info.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--info--background-color--invalid\": {\n        \"name\": \"formControlInput.info.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input--info--background-color\"\n    },\n    \"--now-form-control-input--info--background-color--invalid_focus\": {\n        \"name\": \"formControlInput.info.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--info--background-color--invalid\"\n    },\n    \"--now-form-control-input--info--background-color--invalid_hover\": {\n        \"name\": \"formControlInput.info.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input--info--border-color\": {\n        \"name\": \"formControlInput.info.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input--info--border-color--focus\": {\n        \"name\": \"formControlInput.info.borderColor.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--info--border-color--hover\": {\n        \"name\": \"formControlInput.info.borderColor.hover\",\n        \"derived\": \"--now-form-control-input--info--border-color\"\n    },\n    \"--now-form-control-input--info--border-color--invalid\": {\n        \"name\": \"formControlInput.info.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input--info--border-color--invalid_focus\": {\n        \"name\": \"formControlInput.info.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--info--border-color--invalid\"\n    },\n    \"--now-form-control-input--info--border-color--invalid_hover\": {\n        \"name\": \"formControlInput.info.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input--info--border-color--invalid\"\n    },\n    \"--now-form-control-input--opacity--disabled\": {\n        \"name\": \"formControlInput.opacity.disabled\",\n        \"derived\": \"--now-form-control--opacity--disabled\"\n    },\n    \"--now-form-control-input--positive--background-color\": {\n        \"name\": \"formControlInput.positive.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-1\"\n    },\n    \"--now-form-control-input--positive--background-color--focus\": {\n        \"name\": \"formControlInput.positive.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input--positive--background-color\"\n    },\n    \"--now-form-control-input--positive--background-color--hover\": {\n        \"name\": \"formControlInput.positive.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--positive--background-color--invalid\": {\n        \"name\": \"formControlInput.positive.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input--positive--background-color\"\n    },\n    \"--now-form-control-input--positive--background-color--invalid_focus\": {\n        \"name\": \"formControlInput.positive.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--positive--background-color--invalid\"\n    },\n    \"--now-form-control-input--positive--background-color--invalid_hover\": {\n        \"name\": \"formControlInput.positive.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input--positive--border-color\": {\n        \"name\": \"formControlInput.positive.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input--positive--border-color--focus\": {\n        \"name\": \"formControlInput.positive.borderColor.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--positive--border-color--hover\": {\n        \"name\": \"formControlInput.positive.borderColor.hover\",\n        \"derived\": \"--now-form-control-input--positive--border-color\"\n    },\n    \"--now-form-control-input--positive--border-color--invalid\": {\n        \"name\": \"formControlInput.positive.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input--positive--border-color--invalid_focus\": {\n        \"name\": \"formControlInput.positive.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--positive--border-color--focus\"\n    },\n    \"--now-form-control-input--positive--border-color--invalid_hover\": {\n        \"name\": \"formControlInput.positive.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input--positive--border-color--invalid\"\n    },\n    \"--now-form-control-input--primary--background-color\": {\n        \"name\": \"formControlInput.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control-input--primary--background-color--focus\": {\n        \"name\": \"formControlInput.primary.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input--primary--background-color\"\n    },\n    \"--now-form-control-input--primary--background-color--hover\": {\n        \"name\": \"formControlInput.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--primary--background-color--invalid\": {\n        \"name\": \"formControlInput.primary.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input--primary--background-color\"\n    },\n    \"--now-form-control-input--primary--background-color--invalid_focus\": {\n        \"name\": \"formControlInput.primary.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--primary--background-color--invalid\"\n    },\n    \"--now-form-control-input--primary--background-color--invalid_hover\": {\n        \"name\": \"formControlInput.primary.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input--primary--background-color--invalid_readonly\": {\n        \"name\": \"formControlInput.primary.backgroundColor.invalid.readonly\",\n        \"derived\": \"--now-form-control-input--primary--background-color--readonly\"\n    },\n    \"--now-form-control-input--primary--background-color--opened\": {\n        \"name\": \"formControlInput.primary.backgroundColor.opened\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--primary--background-color--readonly\": {\n        \"name\": \"formControlInput.primary.backgroundColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input--primary--border-block-end-width\": {\n        \"name\": \"formControlInput.primary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control-input--primary--border-color\": {\n        \"name\": \"formControlInput.primary.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input--primary--border-color--focus\": {\n        \"name\": \"formControlInput.primary.borderColor.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--primary--border-color--hover\": {\n        \"name\": \"formControlInput.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input--primary--border-color--invalid\": {\n        \"name\": \"formControlInput.primary.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input--primary--border-color--invalid_focus\": {\n        \"name\": \"formControlInput.primary.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input--primary--border-color--invalid_hover\": {\n        \"name\": \"formControlInput.primary.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input--primary--border-color--invalid_readonly\": {\n        \"name\": \"formControlInput.primary.borderColor.invalid.readonly\",\n        \"derived\": \"--now-form-control-input--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input--primary--border-color--opened\": {\n        \"name\": \"formControlInput.primary.borderColor.opened\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--primary--border-color--readonly\": {\n        \"name\": \"formControlInput.primary.borderColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input--primary--border-radius\": {\n        \"name\": \"formControlInput.primary.borderRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-form-control-input--primary--border-width\": {\n        \"name\": \"formControlInput.primary.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-form-control-input--warning--background-color\": {\n        \"name\": \"formControlInput.warning.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-1\"\n    },\n    \"--now-form-control-input--warning--background-color--focus\": {\n        \"name\": \"formControlInput.warning.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input--warning--background-color\"\n    },\n    \"--now-form-control-input--warning--background-color--hover\": {\n        \"name\": \"formControlInput.warning.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--warning--background-color--invalid\": {\n        \"name\": \"formControlInput.warning.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input--warning--background-color\"\n    },\n    \"--now-form-control-input--warning--background-color--invalid_focus\": {\n        \"name\": \"formControlInput.warning.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--warning--background-color--invalid\"\n    },\n    \"--now-form-control-input--warning--background-color--invalid_hover\": {\n        \"name\": \"formControlInput.warning.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input--warning--border-color\": {\n        \"name\": \"formControlInput.warning.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input--warning--border-color--focus\": {\n        \"name\": \"formControlInput.warning.borderColor.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--warning--border-color--hover\": {\n        \"name\": \"formControlInput.warning.borderColor.hover\",\n        \"derived\": \"--now-form-control-input--warning--border-color\"\n    },\n    \"--now-form-control-input--warning--border-color--invalid\": {\n        \"name\": \"formControlInput.warning.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input--warning--border-color--invalid_focus\": {\n        \"name\": \"formControlInput.warning.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--warning--border-color--invalid\"\n    },\n    \"--now-form-control-input--warning--border-color--invalid_hover\": {\n        \"name\": \"formControlInput.warning.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input--warning--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--active\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.active\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--focus\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.focus\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--hover\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.hover\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--invalid\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.invalid\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--invalid_active\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--readonly\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.readonly\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--active\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.active\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--focus\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.focus\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--hover\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.hover\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--invalid\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--invalid_active\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--readonly\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.readonly\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color\"\n    },\n    \"--now-form-control-input-selection--opacity--disabled\": {\n        \"name\": \"formControlInputSelection.opacity.disabled\",\n        \"derived\": \"--now-form-control--opacity--disabled\"\n    },\n    \"--now-form-control-input-selection--primary--background-color\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--active\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--focus\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--hover\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--invalid\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--invalid_active\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.invalid.active\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--invalid\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--readonly\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_active\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--selected\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_focus\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--selected\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_hover\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_invalid\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.invalid\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_invalid_active\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_invalid_focus\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_invalid_hover\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_readonly\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.readonly\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--readonly\"\n    },\n    \"--now-form-control-input-selection--primary--border-color\": {\n        \"name\": \"formControlInputSelection.primary.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--active\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--focus\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.focus\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--hover\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--invalid\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--invalid_active\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--readonly\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_active\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--selected\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_focus\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_hover\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_invalid\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.invalid\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_invalid_active\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_invalid_focus\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.invalid.focus\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_invalid_hover\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_readonly\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.readonly\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--readonly\"\n    },\n    \"--now-form-control-input-selection--primary--border-radius\": {\n        \"name\": \"formControlInputSelection.primary.borderRadius\",\n        \"initial\": \"2px\"\n    },\n    \"--now-form-control-input-selection--primary--border-width\": {\n        \"name\": \"formControlInputSelection.primary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--active\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--focus\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.focus\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--hover\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--invalid\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--invalid_active\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.invalid.active\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--readonly\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_active\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.active\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--selected\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_focus\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--focus\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_hover\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--secondary-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_invalid\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.invalid\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--selected\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_invalid_active\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.invalid.active\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_invalid_focus\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--selected_focus\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_invalid_hover\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_readonly\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.readonly\",\n        \"derived\": \"--now-color--neutral-3\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--active\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--focus\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.focus\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--hover\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--invalid\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--invalid_active\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--readonly\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_active\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_focus\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.focus\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_hover\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_invalid\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_invalid_active\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_invalid_focus\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_invalid_hover\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_readonly\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.readonly\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color\"\n    },\n    \"--now-form-control-input-selection--secondary--border-radius\": {\n        \"name\": \"formControlInputSelection.secondary.borderRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-form-control-input-selection--secondary--border-width\": {\n        \"name\": \"formControlInputSelection.secondary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control-pill_action_icon--color\": {\n        \"name\": \"formControlPill.action.icon.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control-pill_action_icon--color--active\": {\n        \"name\": \"formControlPill.action.icon.color.active\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_action_icon--color--hover\": {\n        \"name\": \"formControlPill.action.icon.color.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_action_icon--color--selected\": {\n        \"name\": \"formControlPill.action.icon.color.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-form-control-pill_action_icon--color--selected_active\": {\n        \"name\": \"formControlPill.action.icon.color.selected.active\",\n        \"derived\": \"--now-form-control-pill_action_icon--color--selected\"\n    },\n    \"--now-form-control-pill_action_icon--color--selected_hover\": {\n        \"name\": \"formControlPill.action.icon.color.selected.hover\",\n        \"derived\": \"--now-form-control-pill_action_icon--color--selected\"\n    },\n    \"--now-form-control-pill_action--border-radius\": {\n        \"name\": \"formControlPill.action.borderRadius\",\n        \"initial\": \"16px\"\n    },\n    \"--now-form-control-pill_action--border-width\": {\n        \"name\": \"formControlPill.action.borderWidth\",\n        \"initial\": \"0\"\n    },\n    \"--now-form-control-pill_identifier_icon--color\": {\n        \"name\": \"formControlPill.identifier.icon.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--active\": {\n        \"name\": \"formControlPill.identifier.icon.color.active\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--hover\": {\n        \"name\": \"formControlPill.identifier.icon.color.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--selected\": {\n        \"name\": \"formControlPill.identifier.icon.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--selected_active\": {\n        \"name\": \"formControlPill.identifier.icon.color.selected.active\",\n        \"derived\": \"--now-form-control-pill_identifier_icon--color--selected\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--selected_hover\": {\n        \"name\": \"formControlPill.identifier.icon.color.selected.hover\",\n        \"derived\": \"--now-form-control-pill_identifier_icon--color--selected\"\n    },\n    \"--now-form-control-pill_identifier--background-color\": {\n        \"name\": \"formControlPill.identifier.backgroundColor\",\n        \"derived\": \"--now-form-control-pill--background-color\"\n    },\n    \"--now-form-control-pill_identifier--background-color--active\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.active\",\n        \"derived\": \"--now-form-control-pill--background-color--active\"\n    },\n    \"--now-form-control-pill_identifier--background-color--hover\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.hover\",\n        \"derived\": \"--now-form-control-pill--background-color--hover\"\n    },\n    \"--now-form-control-pill_identifier--background-color--selected\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-pill_identifier--background-color--selected_active\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.selected.active\",\n        \"derived\": \"--now-form-control-pill_identifier--background-color--selected\"\n    },\n    \"--now-form-control-pill_identifier--background-color--selected_hover\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.selected.hover\",\n        \"derived\": \"--now-form-control-pill_identifier--background-color--selected\"\n    },\n    \"--now-form-control-pill_identifier--border-color\": {\n        \"name\": \"formControlPill.identifier.borderColor\",\n        \"derived\": \"--now-color_border--secondary\"\n    },\n    \"--now-form-control-pill_identifier--border-color--active\": {\n        \"name\": \"formControlPill.identifier.borderColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_identifier--border-color--hover\": {\n        \"name\": \"formControlPill.identifier.borderColor.hover\",\n        \"derived\": \"--now-form-control-pill_identifier--border-color\"\n    },\n    \"--now-form-control-pill_identifier--border-color--selected\": {\n        \"name\": \"formControlPill.identifier.borderColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_identifier--border-color--selected_active\": {\n        \"name\": \"formControlPill.identifier.borderColor.selected.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-pill_identifier--border-color--selected_hover\": {\n        \"name\": \"formControlPill.identifier.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_label--color\": {\n        \"name\": \"formControlPill.label.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control-pill_label--color--active\": {\n        \"name\": \"formControlPill.label.color.active\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_label--color--hover\": {\n        \"name\": \"formControlPill.label.color.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_label--color--selected\": {\n        \"name\": \"formControlPill.label.color.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-form-control-pill_label--color--selected_active\": {\n        \"name\": \"formControlPill.label.color.selected.active\",\n        \"derived\": \"--now-form-control-pill_label--color--selected\"\n    },\n    \"--now-form-control-pill_label--color--selected_hover\": {\n        \"name\": \"formControlPill.label.color.selected.hover\",\n        \"derived\": \"--now-form-control-pill_label--color--selected\"\n    },\n    \"--now-form-control-pill--background-color\": {\n        \"name\": \"formControlPill.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control-pill--background-color--active\": {\n        \"name\": \"formControlPill.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-pill--background-color--hover\": {\n        \"name\": \"formControlPill.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-form-control-pill--background-color--selected\": {\n        \"name\": \"formControlPill.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill--background-color--selected_active\": {\n        \"name\": \"formControlPill.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-pill--background-color--selected_hover\": {\n        \"name\": \"formControlPill.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill--border-color\": {\n        \"name\": \"formControlPill.borderColor\",\n        \"derived\": \"--now-color_border--secondary\"\n    },\n    \"--now-form-control-pill--border-color--active\": {\n        \"name\": \"formControlPill.borderColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill--border-color--hover\": {\n        \"name\": \"formControlPill.borderColor.hover\",\n        \"derived\": \"--now-form-control-pill--border-color\"\n    },\n    \"--now-form-control-pill--border-color--selected\": {\n        \"name\": \"formControlPill.borderColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill--border-color--selected_active\": {\n        \"name\": \"formControlPill.borderColor.selected.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-pill--border-color--selected_hover\": {\n        \"name\": \"formControlPill.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill--border-radius\": {\n        \"name\": \"formControlPill.borderRadius\",\n        \"initial\": \"16px\"\n    },\n    \"--now-form-control-pill--border-width\": {\n        \"name\": \"formControlPill.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control-pill--font-family\": {\n        \"name\": \"formControlPill.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control-pill--font-style\": {\n        \"name\": \"formControlPill.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control-pill--font-weight\": {\n        \"name\": \"formControlPill.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control-pill--opacity--disabled\": {\n        \"name\": \"formControlPill.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-form-control-pill--text-transform\": {\n        \"name\": \"formControlPill.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-identifier-user_icon--color\": {\n        \"name\": \"identifierUser.icon.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-identifier-user_label--color\": {\n        \"name\": \"identifierUser.label.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-identifier-user--background-color\": {\n        \"name\": \"identifierUser.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-identifier-user--border-color\": {\n        \"name\": \"identifierUser.borderColor\",\n        \"derived\": \"--now-color_border--tertiary\"\n    },\n    \"--now-identifier-user--border-radius\": {\n        \"name\": \"identifierUser.borderRadius\",\n        \"initial\": \"50%\"\n    },\n    \"--now-identifier-user--border-width\": {\n        \"name\": \"identifierUser.borderWidth\",\n        \"derived\": \"--now-identifier--border-width\"\n    },\n    \"--now-identifier-user--font-family\": {\n        \"name\": \"identifierUser.fontFamily\",\n        \"derived\": \"--now-identifier--font-family\"\n    },\n    \"--now-identifier-user--font-style\": {\n        \"name\": \"identifierUser.fontStyle\",\n        \"derived\": \"--now-identifier--font-style\"\n    },\n    \"--now-identifier-user--font-weight\": {\n        \"name\": \"identifierUser.fontWeight\",\n        \"derived\": \"--now-identifier--font-weight\"\n    },\n    \"--now-identifier-user--text-transform\": {\n        \"name\": \"identifierUser.textTransform\",\n        \"initial\": \"uppercase\"\n    },\n    \"--now-indicator_icon--primary_blue--color\": {\n        \"name\": \"indicator.icon.primary.blue.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_brown--color\": {\n        \"name\": \"indicator.icon.primary.brown.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_critical--color\": {\n        \"name\": \"indicator.icon.primary.critical.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_gray--color\": {\n        \"name\": \"indicator.icon.primary.gray.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_green--color\": {\n        \"name\": \"indicator.icon.primary.green.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_green-yellow--color\": {\n        \"name\": \"indicator.icon.primary.greenYellow.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_high--color\": {\n        \"name\": \"indicator.icon.primary.high.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_info--color\": {\n        \"name\": \"indicator.icon.primary.info.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_low--color\": {\n        \"name\": \"indicator.icon.primary.low.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_magenta--color\": {\n        \"name\": \"indicator.icon.primary.magenta.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_moderate--color\": {\n        \"name\": \"indicator.icon.primary.moderate.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_orange--color\": {\n        \"name\": \"indicator.icon.primary.orange.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_pink--color\": {\n        \"name\": \"indicator.icon.primary.pink.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_positive--color\": {\n        \"name\": \"indicator.icon.primary.positive.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_purple--color\": {\n        \"name\": \"indicator.icon.primary.purple.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_teal--color\": {\n        \"name\": \"indicator.icon.primary.teal.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_warning--color\": {\n        \"name\": \"indicator.icon.primary.warning.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_yellow--color\": {\n        \"name\": \"indicator.icon.primary.yellow.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary--color\": {\n        \"name\": \"indicator.icon.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-indicator_icon--secondary_blue--color\": {\n        \"name\": \"indicator.icon.secondary.blue.color\",\n        \"derived\": \"--now-color_grouped--blue-5\"\n    },\n    \"--now-indicator_icon--secondary_brown--color\": {\n        \"name\": \"indicator.icon.secondary.brown.color\",\n        \"derived\": \"--now-color_grouped--brown-5\"\n    },\n    \"--now-indicator_icon--secondary_critical--color\": {\n        \"name\": \"indicator.icon.secondary.critical.color\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-indicator_icon--secondary_gray--color\": {\n        \"name\": \"indicator.icon.secondary.gray.color\",\n        \"derived\": \"--now-color_grouped--gray-5\"\n    },\n    \"--now-indicator_icon--secondary_green--color\": {\n        \"name\": \"indicator.icon.secondary.green.color\",\n        \"derived\": \"--now-color_grouped--green-5\"\n    },\n    \"--now-indicator_icon--secondary_green-yellow--color\": {\n        \"name\": \"indicator.icon.secondary.greenYellow.color\",\n        \"derived\": \"--now-color_grouped--green-yellow-5\"\n    },\n    \"--now-indicator_icon--secondary_high--color\": {\n        \"name\": \"indicator.icon.secondary.high.color\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-indicator_icon--secondary_info--color\": {\n        \"name\": \"indicator.icon.secondary.info.color\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-indicator_icon--secondary_low--color\": {\n        \"name\": \"indicator.icon.secondary.low.color\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-indicator_icon--secondary_magenta--color\": {\n        \"name\": \"indicator.icon.secondary.magenta.color\",\n        \"derived\": \"--now-color_grouped--magenta-5\"\n    },\n    \"--now-indicator_icon--secondary_moderate--color\": {\n        \"name\": \"indicator.icon.secondary.moderate.color\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-indicator_icon--secondary_orange--color\": {\n        \"name\": \"indicator.icon.secondary.orange.color\",\n        \"derived\": \"--now-color_grouped--orange-5\"\n    },\n    \"--now-indicator_icon--secondary_pink--color\": {\n        \"name\": \"indicator.icon.secondary.pink.color\",\n        \"derived\": \"--now-color_grouped--pink-5\"\n    },\n    \"--now-indicator_icon--secondary_positive--color\": {\n        \"name\": \"indicator.icon.secondary.positive.color\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-indicator_icon--secondary_purple--color\": {\n        \"name\": \"indicator.icon.secondary.purple.color\",\n        \"derived\": \"--now-color_grouped--purple-5\"\n    },\n    \"--now-indicator_icon--secondary_teal--color\": {\n        \"name\": \"indicator.icon.secondary.teal.color\",\n        \"derived\": \"--now-color_grouped--teal-5\"\n    },\n    \"--now-indicator_icon--secondary_warning--color\": {\n        \"name\": \"indicator.icon.secondary.warning.color\",\n        \"derived\": \"--now-color_alert--warning-4\"\n    },\n    \"--now-indicator_icon--secondary_yellow--color\": {\n        \"name\": \"indicator.icon.secondary.yellow.color\",\n        \"derived\": \"--now-color_grouped--yellow-5\"\n    },\n    \"--now-indicator_icon--secondary--color\": {\n        \"name\": \"indicator.icon.secondary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-indicator_icon--tertiary_blue--color\": {\n        \"name\": \"indicator.icon.tertiary.blue.color\",\n        \"derived\": \"--now-color_grouped--blue-4\"\n    },\n    \"--now-indicator_icon--tertiary_brown--color\": {\n        \"name\": \"indicator.icon.tertiary.brown.color\",\n        \"derived\": \"--now-color_grouped--brown-4\"\n    },\n    \"--now-indicator_icon--tertiary_critical--color\": {\n        \"name\": \"indicator.icon.tertiary.critical.color\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-indicator_icon--tertiary_gray--color\": {\n        \"name\": \"indicator.icon.tertiary.gray.color\",\n        \"derived\": \"--now-color_grouped--gray-4\"\n    },\n    \"--now-indicator_icon--tertiary_green--color\": {\n        \"name\": \"indicator.icon.tertiary.green.color\",\n        \"derived\": \"--now-color_grouped--green-4\"\n    },\n    \"--now-indicator_icon--tertiary_green-yellow--color\": {\n        \"name\": \"indicator.icon.tertiary.greenYellow.color\",\n        \"derived\": \"--now-color_grouped--green-yellow-4\"\n    },\n    \"--now-indicator_icon--tertiary_high--color\": {\n        \"name\": \"indicator.icon.tertiary.high.color\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-indicator_icon--tertiary_info--color\": {\n        \"name\": \"indicator.icon.tertiary.info.color\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-indicator_icon--tertiary_low--color\": {\n        \"name\": \"indicator.icon.tertiary.low.color\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-indicator_icon--tertiary_magenta--color\": {\n        \"name\": \"indicator.icon.tertiary.magenta.color\",\n        \"derived\": \"--now-color_grouped--magenta-4\"\n    },\n    \"--now-indicator_icon--tertiary_moderate--color\": {\n        \"name\": \"indicator.icon.tertiary.moderate.color\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-indicator_icon--tertiary_orange--color\": {\n        \"name\": \"indicator.icon.tertiary.orange.color\",\n        \"derived\": \"--now-color_grouped--orange-4\"\n    },\n    \"--now-indicator_icon--tertiary_pink--color\": {\n        \"name\": \"indicator.icon.tertiary.pink.color\",\n        \"derived\": \"--now-color_grouped--pink-4\"\n    },\n    \"--now-indicator_icon--tertiary_positive--color\": {\n        \"name\": \"indicator.icon.tertiary.positive.color\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-indicator_icon--tertiary_purple--color\": {\n        \"name\": \"indicator.icon.tertiary.purple.color\",\n        \"derived\": \"--now-color_grouped--purple-4\"\n    },\n    \"--now-indicator_icon--tertiary_teal--color\": {\n        \"name\": \"indicator.icon.tertiary.teal.color\",\n        \"derived\": \"--now-color_grouped--teal-4\"\n    },\n    \"--now-indicator_icon--tertiary_warning--color\": {\n        \"name\": \"indicator.icon.tertiary.warning.color\",\n        \"derived\": \"--now-color_alert--warning-4\"\n    },\n    \"--now-indicator_icon--tertiary_yellow--color\": {\n        \"name\": \"indicator.icon.tertiary.yellow.color\",\n        \"derived\": \"--now-color_grouped--yellow-4\"\n    },\n    \"--now-indicator_icon--tertiary--color\": {\n        \"name\": \"indicator.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-indicator_label--primary_blue--color\": {\n        \"name\": \"indicator.label.primary.blue.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_brown--color\": {\n        \"name\": \"indicator.label.primary.brown.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_critical--color\": {\n        \"name\": \"indicator.label.primary.critical.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_gray--color\": {\n        \"name\": \"indicator.label.primary.gray.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_green--color\": {\n        \"name\": \"indicator.label.primary.green.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_green-yellow--color\": {\n        \"name\": \"indicator.label.primary.greenYellow.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_high--color\": {\n        \"name\": \"indicator.label.primary.high.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_info--color\": {\n        \"name\": \"indicator.label.primary.info.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_low--color\": {\n        \"name\": \"indicator.label.primary.low.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_magenta--color\": {\n        \"name\": \"indicator.label.primary.magenta.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_moderate--color\": {\n        \"name\": \"indicator.label.primary.moderate.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_orange--color\": {\n        \"name\": \"indicator.label.primary.orange.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_pink--color\": {\n        \"name\": \"indicator.label.primary.pink.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_positive--color\": {\n        \"name\": \"indicator.label.primary.positive.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_purple--color\": {\n        \"name\": \"indicator.label.primary.purple.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_teal--color\": {\n        \"name\": \"indicator.label.primary.teal.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_warning--color\": {\n        \"name\": \"indicator.label.primary.warning.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_yellow--color\": {\n        \"name\": \"indicator.label.primary.yellow.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary--color\": {\n        \"name\": \"indicator.label.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-indicator_label--secondary_blue--color\": {\n        \"name\": \"indicator.label.secondary.blue.color\",\n        \"derived\": \"--now-color_grouped--blue-5\"\n    },\n    \"--now-indicator_label--secondary_brown--color\": {\n        \"name\": \"indicator.label.secondary.brown.color\",\n        \"derived\": \"--now-color_grouped--brown-5\"\n    },\n    \"--now-indicator_label--secondary_critical--color\": {\n        \"name\": \"indicator.label.secondary.critical.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_gray--color\": {\n        \"name\": \"indicator.label.secondary.gray.color\",\n        \"derived\": \"--now-color_grouped--gray-5\"\n    },\n    \"--now-indicator_label--secondary_green--color\": {\n        \"name\": \"indicator.label.secondary.green.color\",\n        \"derived\": \"--now-color_grouped--green-5\"\n    },\n    \"--now-indicator_label--secondary_green-yellow--color\": {\n        \"name\": \"indicator.label.secondary.greenYellow.color\",\n        \"derived\": \"--now-color_grouped--green-yellow-5\"\n    },\n    \"--now-indicator_label--secondary_high--color\": {\n        \"name\": \"indicator.label.secondary.high.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_info--color\": {\n        \"name\": \"indicator.label.secondary.info.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_low--color\": {\n        \"name\": \"indicator.label.secondary.low.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_magenta--color\": {\n        \"name\": \"indicator.label.secondary.magenta.color\",\n        \"derived\": \"--now-color_grouped--magenta-5\"\n    },\n    \"--now-indicator_label--secondary_moderate--color\": {\n        \"name\": \"indicator.label.secondary.moderate.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_orange--color\": {\n        \"name\": \"indicator.label.secondary.orange.color\",\n        \"derived\": \"--now-color_grouped--orange-5\"\n    },\n    \"--now-indicator_label--secondary_pink--color\": {\n        \"name\": \"indicator.label.secondary.pink.color\",\n        \"derived\": \"--now-color_grouped--pink-5\"\n    },\n    \"--now-indicator_label--secondary_positive--color\": {\n        \"name\": \"indicator.label.secondary.positive.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_purple--color\": {\n        \"name\": \"indicator.label.secondary.purple.color\",\n        \"derived\": \"--now-color_grouped--purple-5\"\n    },\n    \"--now-indicator_label--secondary_teal--color\": {\n        \"name\": \"indicator.label.secondary.teal.color\",\n        \"derived\": \"--now-color_grouped--teal-5\"\n    },\n    \"--now-indicator_label--secondary_warning--color\": {\n        \"name\": \"indicator.label.secondary.warning.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_yellow--color\": {\n        \"name\": \"indicator.label.secondary.yellow.color\",\n        \"derived\": \"--now-color_grouped--yellow-5\"\n    },\n    \"--now-indicator_label--secondary--color\": {\n        \"name\": \"indicator.label.secondary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-indicator_label--tertiary_blue--color\": {\n        \"name\": \"indicator.label.tertiary.blue.color\",\n        \"derived\": \"--now-color_grouped--blue-5\"\n    },\n    \"--now-indicator_label--tertiary_brown--color\": {\n        \"name\": \"indicator.label.tertiary.brown.color\",\n        \"derived\": \"--now-color_grouped--brown-5\"\n    },\n    \"--now-indicator_label--tertiary_critical--color\": {\n        \"name\": \"indicator.label.tertiary.critical.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_gray--color\": {\n        \"name\": \"indicator.label.tertiary.gray.color\",\n        \"derived\": \"--now-color_grouped--gray-5\"\n    },\n    \"--now-indicator_label--tertiary_green--color\": {\n        \"name\": \"indicator.label.tertiary.green.color\",\n        \"derived\": \"--now-color_grouped--green-5\"\n    },\n    \"--now-indicator_label--tertiary_green-yellow--color\": {\n        \"name\": \"indicator.label.tertiary.greenYellow.color\",\n        \"derived\": \"--now-color_grouped--green-yellow-5\"\n    },\n    \"--now-indicator_label--tertiary_high--color\": {\n        \"name\": \"indicator.label.tertiary.high.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_info--color\": {\n        \"name\": \"indicator.label.tertiary.info.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_low--color\": {\n        \"name\": \"indicator.label.tertiary.low.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_magenta--color\": {\n        \"name\": \"indicator.label.tertiary.magenta.color\",\n        \"derived\": \"--now-color_grouped--magenta-5\"\n    },\n    \"--now-indicator_label--tertiary_moderate--color\": {\n        \"name\": \"indicator.label.tertiary.moderate.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_orange--color\": {\n        \"name\": \"indicator.label.tertiary.orange.color\",\n        \"derived\": \"--now-color_grouped--orange-5\"\n    },\n    \"--now-indicator_label--tertiary_pink--color\": {\n        \"name\": \"indicator.label.tertiary.pink.color\",\n        \"derived\": \"--now-color_grouped--pink-5\"\n    },\n    \"--now-indicator_label--tertiary_positive--color\": {\n        \"name\": \"indicator.label.tertiary.positive.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_purple--color\": {\n        \"name\": \"indicator.label.tertiary.purple.color\",\n        \"derived\": \"--now-color_grouped--purple-5\"\n    },\n    \"--now-indicator_label--tertiary_teal--color\": {\n        \"name\": \"indicator.label.tertiary.teal.color\",\n        \"derived\": \"--now-color_grouped--teal-5\"\n    },\n    \"--now-indicator_label--tertiary_warning--color\": {\n        \"name\": \"indicator.label.tertiary.warning.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_yellow--color\": {\n        \"name\": \"indicator.label.tertiary.yellow.color\",\n        \"derived\": \"--now-color_grouped--yellow-5\"\n    },\n    \"--now-indicator_label--tertiary--color\": {\n        \"name\": \"indicator.label.tertiary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-indicator--primary_blue--background-color\": {\n        \"name\": \"indicator.primary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-2\"\n    },\n    \"--now-indicator--primary_blue--border-color\": {\n        \"name\": \"indicator.primary.blue.borderColor\",\n        \"derived\": \"--now-color_grouped--blue-3\"\n    },\n    \"--now-indicator--primary_brown--background-color\": {\n        \"name\": \"indicator.primary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-2\"\n    },\n    \"--now-indicator--primary_brown--border-color\": {\n        \"name\": \"indicator.primary.brown.borderColor\",\n        \"derived\": \"--now-color_grouped--brown-3\"\n    },\n    \"--now-indicator--primary_critical--background-color\": {\n        \"name\": \"indicator.primary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-indicator--primary_critical--border-color\": {\n        \"name\": \"indicator.primary.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-indicator--primary_gray--background-color\": {\n        \"name\": \"indicator.primary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-2\"\n    },\n    \"--now-indicator--primary_gray--border-color\": {\n        \"name\": \"indicator.primary.gray.borderColor\",\n        \"derived\": \"--now-color_grouped--gray-3\"\n    },\n    \"--now-indicator--primary_green--background-color\": {\n        \"name\": \"indicator.primary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-2\"\n    },\n    \"--now-indicator--primary_green--border-color\": {\n        \"name\": \"indicator.primary.green.borderColor\",\n        \"derived\": \"--now-color_grouped--green-3\"\n    },\n    \"--now-indicator--primary_green-yellow--background-color\": {\n        \"name\": \"indicator.primary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-2\"\n    },\n    \"--now-indicator--primary_green-yellow--border-color\": {\n        \"name\": \"indicator.primary.greenYellow.borderColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-3\"\n    },\n    \"--now-indicator--primary_high--background-color\": {\n        \"name\": \"indicator.primary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-2\"\n    },\n    \"--now-indicator--primary_high--border-color\": {\n        \"name\": \"indicator.primary.high.borderColor\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-indicator--primary_info--background-color\": {\n        \"name\": \"indicator.primary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-indicator--primary_info--border-color\": {\n        \"name\": \"indicator.primary.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-3\"\n    },\n    \"--now-indicator--primary_low--background-color\": {\n        \"name\": \"indicator.primary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-2\"\n    },\n    \"--now-indicator--primary_low--border-color\": {\n        \"name\": \"indicator.primary.low.borderColor\",\n        \"derived\": \"--now-color_alert--low-3\"\n    },\n    \"--now-indicator--primary_magenta--background-color\": {\n        \"name\": \"indicator.primary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-2\"\n    },\n    \"--now-indicator--primary_magenta--border-color\": {\n        \"name\": \"indicator.primary.magenta.borderColor\",\n        \"derived\": \"--now-color_grouped--magenta-3\"\n    },\n    \"--now-indicator--primary_moderate--background-color\": {\n        \"name\": \"indicator.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-2\"\n    },\n    \"--now-indicator--primary_moderate--border-color\": {\n        \"name\": \"indicator.primary.moderate.borderColor\",\n        \"derived\": \"--now-color_alert--moderate-3\"\n    },\n    \"--now-indicator--primary_orange--background-color\": {\n        \"name\": \"indicator.primary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-2\"\n    },\n    \"--now-indicator--primary_orange--border-color\": {\n        \"name\": \"indicator.primary.orange.borderColor\",\n        \"derived\": \"--now-color_grouped--orange-3\"\n    },\n    \"--now-indicator--primary_pink--background-color\": {\n        \"name\": \"indicator.primary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-2\"\n    },\n    \"--now-indicator--primary_pink--border-color\": {\n        \"name\": \"indicator.primary.pink.borderColor\",\n        \"derived\": \"--now-color_grouped--pink-3\"\n    },\n    \"--now-indicator--primary_positive--background-color\": {\n        \"name\": \"indicator.primary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-2\"\n    },\n    \"--now-indicator--primary_positive--border-color\": {\n        \"name\": \"indicator.primary.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-indicator--primary_purple--background-color\": {\n        \"name\": \"indicator.primary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-2\"\n    },\n    \"--now-indicator--primary_purple--border-color\": {\n        \"name\": \"indicator.primary.purple.borderColor\",\n        \"derived\": \"--now-color_grouped--purple-3\"\n    },\n    \"--now-indicator--primary_teal--background-color\": {\n        \"name\": \"indicator.primary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-2\"\n    },\n    \"--now-indicator--primary_teal--border-color\": {\n        \"name\": \"indicator.primary.teal.borderColor\",\n        \"derived\": \"--now-color_grouped--teal-3\"\n    },\n    \"--now-indicator--primary_warning--background-color\": {\n        \"name\": \"indicator.primary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-2\"\n    },\n    \"--now-indicator--primary_warning--border-color\": {\n        \"name\": \"indicator.primary.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-3\"\n    },\n    \"--now-indicator--primary_yellow--background-color\": {\n        \"name\": \"indicator.primary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-2\"\n    },\n    \"--now-indicator--primary_yellow--border-color\": {\n        \"name\": \"indicator.primary.yellow.borderColor\",\n        \"derived\": \"--now-color_grouped--yellow-3\"\n    },\n    \"--now-indicator--primary--border-radius\": {\n        \"name\": \"indicator.primary.borderRadius\",\n        \"derived\": \"--now-indicator--border-radius\"\n    },\n    \"--now-indicator--primary--border-width\": {\n        \"name\": \"indicator.primary.borderWidth\",\n        \"derived\": \"--now-indicator--border-width\"\n    },\n    \"--now-indicator--primary--font-family\": {\n        \"name\": \"indicator.primary.fontFamily\",\n        \"derived\": \"--now-indicator--font-family\"\n    },\n    \"--now-indicator--primary--font-style\": {\n        \"name\": \"indicator.primary.fontStyle\",\n        \"derived\": \"--now-indicator--font-style\"\n    },\n    \"--now-indicator--primary--font-weight\": {\n        \"name\": \"indicator.primary.fontWeight\",\n        \"derived\": \"--now-indicator--font-weight\"\n    },\n    \"--now-indicator--primary--text-transform\": {\n        \"name\": \"indicator.primary.textTransform\",\n        \"derived\": \"--now-indicator--text-transform\"\n    },\n    \"--now-indicator--secondary_blue--background-color\": {\n        \"name\": \"indicator.secondary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-1\"\n    },\n    \"--now-indicator--secondary_blue--border-color\": {\n        \"name\": \"indicator.secondary.blue.borderColor\",\n        \"derived\": \"--now-color_grouped--blue-2\"\n    },\n    \"--now-indicator--secondary_brown--background-color\": {\n        \"name\": \"indicator.secondary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-1\"\n    },\n    \"--now-indicator--secondary_brown--border-color\": {\n        \"name\": \"indicator.secondary.brown.borderColor\",\n        \"derived\": \"--now-color_grouped--brown-2\"\n    },\n    \"--now-indicator--secondary_critical--background-color\": {\n        \"name\": \"indicator.secondary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-indicator--secondary_critical--border-color\": {\n        \"name\": \"indicator.secondary.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-indicator--secondary_gray--background-color\": {\n        \"name\": \"indicator.secondary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-1\"\n    },\n    \"--now-indicator--secondary_gray--border-color\": {\n        \"name\": \"indicator.secondary.gray.borderColor\",\n        \"derived\": \"--now-color_grouped--gray-2\"\n    },\n    \"--now-indicator--secondary_green--background-color\": {\n        \"name\": \"indicator.secondary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-1\"\n    },\n    \"--now-indicator--secondary_green--border-color\": {\n        \"name\": \"indicator.secondary.green.borderColor\",\n        \"derived\": \"--now-color_grouped--green-2\"\n    },\n    \"--now-indicator--secondary_green-yellow--background-color\": {\n        \"name\": \"indicator.secondary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-1\"\n    },\n    \"--now-indicator--secondary_green-yellow--border-color\": {\n        \"name\": \"indicator.secondary.greenYellow.borderColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-2\"\n    },\n    \"--now-indicator--secondary_high--background-color\": {\n        \"name\": \"indicator.secondary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-1\"\n    },\n    \"--now-indicator--secondary_high--border-color\": {\n        \"name\": \"indicator.secondary.high.borderColor\",\n        \"derived\": \"--now-color_alert--high-2\"\n    },\n    \"--now-indicator--secondary_info--background-color\": {\n        \"name\": \"indicator.secondary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-indicator--secondary_info--border-color\": {\n        \"name\": \"indicator.secondary.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-indicator--secondary_low--background-color\": {\n        \"name\": \"indicator.secondary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-indicator--secondary_low--border-color\": {\n        \"name\": \"indicator.secondary.low.borderColor\",\n        \"derived\": \"--now-color_alert--low-2\"\n    },\n    \"--now-indicator--secondary_magenta--background-color\": {\n        \"name\": \"indicator.secondary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-1\"\n    },\n    \"--now-indicator--secondary_magenta--border-color\": {\n        \"name\": \"indicator.secondary.magenta.borderColor\",\n        \"derived\": \"--now-color_grouped--magenta-2\"\n    },\n    \"--now-indicator--secondary_moderate--background-color\": {\n        \"name\": \"indicator.secondary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-1\"\n    },\n    \"--now-indicator--secondary_moderate--border-color\": {\n        \"name\": \"indicator.secondary.moderate.borderColor\",\n        \"derived\": \"--now-color_alert--moderate-2\"\n    },\n    \"--now-indicator--secondary_orange--background-color\": {\n        \"name\": \"indicator.secondary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-1\"\n    },\n    \"--now-indicator--secondary_orange--border-color\": {\n        \"name\": \"indicator.secondary.orange.borderColor\",\n        \"derived\": \"--now-color_grouped--orange-2\"\n    },\n    \"--now-indicator--secondary_pink--background-color\": {\n        \"name\": \"indicator.secondary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-1\"\n    },\n    \"--now-indicator--secondary_pink--border-color\": {\n        \"name\": \"indicator.secondary.pink.borderColor\",\n        \"derived\": \"--now-color_grouped--pink-2\"\n    },\n    \"--now-indicator--secondary_positive--background-color\": {\n        \"name\": \"indicator.secondary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-indicator--secondary_positive--border-color\": {\n        \"name\": \"indicator.secondary.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-2\"\n    },\n    \"--now-indicator--secondary_purple--background-color\": {\n        \"name\": \"indicator.secondary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-1\"\n    },\n    \"--now-indicator--secondary_purple--border-color\": {\n        \"name\": \"indicator.secondary.purple.borderColor\",\n        \"derived\": \"--now-color_grouped--purple-2\"\n    },\n    \"--now-indicator--secondary_teal--background-color\": {\n        \"name\": \"indicator.secondary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-1\"\n    },\n    \"--now-indicator--secondary_teal--border-color\": {\n        \"name\": \"indicator.secondary.teal.borderColor\",\n        \"derived\": \"--now-color_grouped--teal-2\"\n    },\n    \"--now-indicator--secondary_warning--background-color\": {\n        \"name\": \"indicator.secondary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-indicator--secondary_warning--border-color\": {\n        \"name\": \"indicator.secondary.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-2\"\n    },\n    \"--now-indicator--secondary_yellow--background-color\": {\n        \"name\": \"indicator.secondary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-1\"\n    },\n    \"--now-indicator--secondary_yellow--border-color\": {\n        \"name\": \"indicator.secondary.yellow.borderColor\",\n        \"derived\": \"--now-color_grouped--yellow-2\"\n    },\n    \"--now-indicator--secondary--border-radius\": {\n        \"name\": \"indicator.secondary.borderRadius\",\n        \"derived\": \"--now-indicator--border-radius\"\n    },\n    \"--now-indicator--secondary--border-width\": {\n        \"name\": \"indicator.secondary.borderWidth\",\n        \"derived\": \"--now-indicator--border-width\"\n    },\n    \"--now-indicator--secondary--font-family\": {\n        \"name\": \"indicator.secondary.fontFamily\",\n        \"derived\": \"--now-indicator--font-family\"\n    },\n    \"--now-indicator--secondary--font-style\": {\n        \"name\": \"indicator.secondary.fontStyle\",\n        \"derived\": \"--now-indicator--font-style\"\n    },\n    \"--now-indicator--secondary--font-weight\": {\n        \"name\": \"indicator.secondary.fontWeight\",\n        \"derived\": \"--now-indicator--font-weight\"\n    },\n    \"--now-indicator--secondary--text-transform\": {\n        \"name\": \"indicator.secondary.textTransform\",\n        \"derived\": \"--now-indicator--text-transform\"\n    },\n    \"--now-indicator--tertiary_blue--background-color\": {\n        \"name\": \"indicator.tertiary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-0\"\n    },\n    \"--now-indicator--tertiary_blue--border-color\": {\n        \"name\": \"indicator.tertiary.blue.borderColor\",\n        \"derived\": \"--now-color_grouped--blue-1\"\n    },\n    \"--now-indicator--tertiary_brown--background-color\": {\n        \"name\": \"indicator.tertiary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-0\"\n    },\n    \"--now-indicator--tertiary_brown--border-color\": {\n        \"name\": \"indicator.tertiary.brown.borderColor\",\n        \"derived\": \"--now-color_grouped--brown-1\"\n    },\n    \"--now-indicator--tertiary_critical--background-color\": {\n        \"name\": \"indicator.tertiary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-indicator--tertiary_critical--border-color\": {\n        \"name\": \"indicator.tertiary.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-indicator--tertiary_gray--background-color\": {\n        \"name\": \"indicator.tertiary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-0\"\n    },\n    \"--now-indicator--tertiary_gray--border-color\": {\n        \"name\": \"indicator.tertiary.gray.borderColor\",\n        \"derived\": \"--now-color_grouped--gray-1\"\n    },\n    \"--now-indicator--tertiary_green--background-color\": {\n        \"name\": \"indicator.tertiary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-0\"\n    },\n    \"--now-indicator--tertiary_green--border-color\": {\n        \"name\": \"indicator.tertiary.green.borderColor\",\n        \"derived\": \"--now-color_grouped--green-1\"\n    },\n    \"--now-indicator--tertiary_green-yellow--background-color\": {\n        \"name\": \"indicator.tertiary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-0\"\n    },\n    \"--now-indicator--tertiary_green-yellow--border-color\": {\n        \"name\": \"indicator.tertiary.greenYellow.borderColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-1\"\n    },\n    \"--now-indicator--tertiary_high--background-color\": {\n        \"name\": \"indicator.tertiary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-0\"\n    },\n    \"--now-indicator--tertiary_high--border-color\": {\n        \"name\": \"indicator.tertiary.high.borderColor\",\n        \"derived\": \"--now-color_alert--high-1\"\n    },\n    \"--now-indicator--tertiary_info--background-color\": {\n        \"name\": \"indicator.tertiary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-0\"\n    },\n    \"--now-indicator--tertiary_info--border-color\": {\n        \"name\": \"indicator.tertiary.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-indicator--tertiary_low--background-color\": {\n        \"name\": \"indicator.tertiary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-0\"\n    },\n    \"--now-indicator--tertiary_low--border-color\": {\n        \"name\": \"indicator.tertiary.low.borderColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-indicator--tertiary_magenta--background-color\": {\n        \"name\": \"indicator.tertiary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-0\"\n    },\n    \"--now-indicator--tertiary_magenta--border-color\": {\n        \"name\": \"indicator.tertiary.magenta.borderColor\",\n        \"derived\": \"--now-color_grouped--magenta-1\"\n    },\n    \"--now-indicator--tertiary_moderate--background-color\": {\n        \"name\": \"indicator.tertiary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-0\"\n    },\n    \"--now-indicator--tertiary_moderate--border-color\": {\n        \"name\": \"indicator.tertiary.moderate.borderColor\",\n        \"derived\": \"--now-color_alert--moderate-1\"\n    },\n    \"--now-indicator--tertiary_orange--background-color\": {\n        \"name\": \"indicator.tertiary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-0\"\n    },\n    \"--now-indicator--tertiary_orange--border-color\": {\n        \"name\": \"indicator.tertiary.orange.borderColor\",\n        \"derived\": \"--now-color_grouped--orange-1\"\n    },\n    \"--now-indicator--tertiary_pink--background-color\": {\n        \"name\": \"indicator.tertiary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-0\"\n    },\n    \"--now-indicator--tertiary_pink--border-color\": {\n        \"name\": \"indicator.tertiary.pink.borderColor\",\n        \"derived\": \"--now-color_grouped--pink-1\"\n    },\n    \"--now-indicator--tertiary_positive--background-color\": {\n        \"name\": \"indicator.tertiary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-0\"\n    },\n    \"--now-indicator--tertiary_positive--border-color\": {\n        \"name\": \"indicator.tertiary.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-indicator--tertiary_purple--background-color\": {\n        \"name\": \"indicator.tertiary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-0\"\n    },\n    \"--now-indicator--tertiary_purple--border-color\": {\n        \"name\": \"indicator.tertiary.purple.borderColor\",\n        \"derived\": \"--now-color_grouped--purple-1\"\n    },\n    \"--now-indicator--tertiary_teal--background-color\": {\n        \"name\": \"indicator.tertiary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-0\"\n    },\n    \"--now-indicator--tertiary_teal--border-color\": {\n        \"name\": \"indicator.tertiary.teal.borderColor\",\n        \"derived\": \"--now-color_grouped--teal-1\"\n    },\n    \"--now-indicator--tertiary_warning--background-color\": {\n        \"name\": \"indicator.tertiary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-indicator--tertiary_warning--border-color\": {\n        \"name\": \"indicator.tertiary.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-indicator--tertiary_yellow--background-color\": {\n        \"name\": \"indicator.tertiary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-0\"\n    },\n    \"--now-indicator--tertiary_yellow--border-color\": {\n        \"name\": \"indicator.tertiary.yellow.borderColor\",\n        \"derived\": \"--now-color_grouped--yellow-1\"\n    },\n    \"--now-indicator--tertiary--border-radius\": {\n        \"name\": \"indicator.tertiary.borderRadius\",\n        \"derived\": \"--now-indicator--border-radius\"\n    },\n    \"--now-indicator--tertiary--border-width\": {\n        \"name\": \"indicator.tertiary.borderWidth\",\n        \"derived\": \"--now-indicator--border-width\"\n    },\n    \"--now-indicator--tertiary--font-family\": {\n        \"name\": \"indicator.tertiary.fontFamily\",\n        \"derived\": \"--now-indicator--font-family\"\n    },\n    \"--now-indicator--tertiary--font-style\": {\n        \"name\": \"indicator.tertiary.fontStyle\",\n        \"derived\": \"--now-indicator--font-style\"\n    },\n    \"--now-indicator--tertiary--font-weight\": {\n        \"name\": \"indicator.tertiary.fontWeight\",\n        \"derived\": \"--now-indicator--font-weight\"\n    },\n    \"--now-indicator--tertiary--text-transform\": {\n        \"name\": \"indicator.tertiary.textTransform\",\n        \"derived\": \"--now-indicator--text-transform\"\n    },\n    \"--now-loading_indicator--color\": {\n        \"name\": \"loading.indicator.color\",\n        \"derived\": \"--now-color--neutral-12\"\n    },\n    \"--now-loading_indicator--font-family\": {\n        \"name\": \"loading.indicator.fontFamily\",\n        \"derived\": \"--now-loading_label--primary--font-family\"\n    },\n    \"--now-loading_indicator--font-style\": {\n        \"name\": \"loading.indicator.fontStyle\",\n        \"derived\": \"--now-loading_label--primary--font-style\"\n    },\n    \"--now-loading_indicator--font-weight\": {\n        \"name\": \"loading.indicator.fontWeight\",\n        \"derived\": \"--now-loading_label--primary--font-weight\"\n    },\n    \"--now-loading_indicator--primary--color\": {\n        \"name\": \"loading.indicator.primary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-loading_indicator--text-transform\": {\n        \"name\": \"loading.indicator.textTransform\",\n        \"derived\": \"--now-loading_label--primary--text-transform\"\n    },\n    \"--now-loading_label--primary--color\": {\n        \"name\": \"loading.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-loading_label--primary--font-family\": {\n        \"name\": \"loading.label.primary.fontFamily\",\n        \"derived\": \"--now-loading--font-family\"\n    },\n    \"--now-loading_label--primary--font-style\": {\n        \"name\": \"loading.label.primary.fontStyle\",\n        \"derived\": \"--now-loading--font-style\"\n    },\n    \"--now-loading_label--primary--font-weight\": {\n        \"name\": \"loading.label.primary.fontWeight\",\n        \"derived\": \"--now-loading--font-weight\"\n    },\n    \"--now-loading_label--primary--text-transform\": {\n        \"name\": \"loading.label.primary.textTransform\",\n        \"derived\": \"--now-loading--text-transform\"\n    },\n    \"--now-loading_label--secondary--color\": {\n        \"name\": \"loading.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-loading_label--secondary--font-family\": {\n        \"name\": \"loading.label.secondary.fontFamily\",\n        \"derived\": \"--now-loading--font-family\"\n    },\n    \"--now-loading_label--secondary--font-style\": {\n        \"name\": \"loading.label.secondary.fontStyle\",\n        \"derived\": \"--now-loading--font-style\"\n    },\n    \"--now-loading_label--secondary--font-weight\": {\n        \"name\": \"loading.label.secondary.fontWeight\",\n        \"derived\": \"--now-loading--font-weight\"\n    },\n    \"--now-loading_label--secondary--text-transform\": {\n        \"name\": \"loading.label.secondary.textTransform\",\n        \"derived\": \"--now-loading--text-transform\"\n    },\n    \"--now-loading_label--tertiary--color\": {\n        \"name\": \"loading.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-loading_label--tertiary--font-family\": {\n        \"name\": \"loading.label.tertiary.fontFamily\",\n        \"derived\": \"--now-loading--font-family\"\n    },\n    \"--now-loading_label--tertiary--font-style\": {\n        \"name\": \"loading.label.tertiary.fontStyle\",\n        \"derived\": \"--now-loading--font-style\"\n    },\n    \"--now-loading_label--tertiary--font-weight\": {\n        \"name\": \"loading.label.tertiary.fontWeight\",\n        \"derived\": \"--now-loading--font-weight\"\n    },\n    \"--now-loading_label--tertiary--text-transform\": {\n        \"name\": \"loading.label.tertiary.textTransform\",\n        \"derived\": \"--now-loading--text-transform\"\n    },\n    \"--now-loading_placeholder--background-color\": {\n        \"name\": \"loading.placeholder.backgroundColor\",\n        \"derived\": \"--now-color_surface--neutral-4\"\n    },\n    \"--now-loading_progress_bar--alert--background-color\": {\n        \"name\": \"loading.progress.bar.alert.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-loading_progress_bar--alert--border-color\": {\n        \"name\": \"loading.progress.bar.alert.borderColor\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-loading_progress_bar--background-color\": {\n        \"name\": \"loading.progress.bar.backgroundColor\",\n        \"derived\": \"--now-loading--initial--background-color\"\n    },\n    \"--now-loading_progress_bar--border-color\": {\n        \"name\": \"loading.progress.bar.borderColor\",\n        \"derived\": \"--now-loading--initial--border-color\"\n    },\n    \"--now-loading_progress_bar--border-radius\": {\n        \"name\": \"loading.progress.bar.borderRadius\",\n        \"derived\": \"--now-loading--border-radius\"\n    },\n    \"--now-loading_progress_bar--border-width\": {\n        \"name\": \"loading.progress.bar.borderWidth\",\n        \"derived\": \"--now-loading--border-width\"\n    },\n    \"--now-loading_progress_bar--error--background-color\": {\n        \"name\": \"loading.progress.bar.error.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-loading_progress_bar--error--border-color\": {\n        \"name\": \"loading.progress.bar.error.borderColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-loading_progress_bar--gray--background-color\": {\n        \"name\": \"loading.progress.bar.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-2\"\n    },\n    \"--now-loading_progress_bar--gray--border-color\": {\n        \"name\": \"loading.progress.bar.gray.borderColor\",\n        \"derived\": \"--now-color_grouped--gray-3\"\n    },\n    \"--now-loading_progress_bar--green--background-color\": {\n        \"name\": \"loading.progress.bar.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-2\"\n    },\n    \"--now-loading_progress_bar--green--border-color\": {\n        \"name\": \"loading.progress.bar.green.borderColor\",\n        \"derived\": \"--now-color_grouped--green-3\"\n    },\n    \"--now-loading_progress_bar--inactive--background-color\": {\n        \"name\": \"loading.progress.bar.inactive.backgroundColor\",\n        \"derived\": \"--now-loading_progress_track--background-color\"\n    },\n    \"--now-loading_progress_bar--inactive--border-color\": {\n        \"name\": \"loading.progress.bar.inactive.borderColor\",\n        \"derived\": \"--now-color--neutral-11\"\n    },\n    \"--now-loading_progress_bar--orange--background-color\": {\n        \"name\": \"loading.progress.bar.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-2\"\n    },\n    \"--now-loading_progress_bar--orange--border-color\": {\n        \"name\": \"loading.progress.bar.orange.borderColor\",\n        \"derived\": \"--now-color_grouped--orange-3\"\n    },\n    \"--now-loading_progress_bar--pink--background-color\": {\n        \"name\": \"loading.progress.bar.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-2\"\n    },\n    \"--now-loading_progress_bar--pink--border-color\": {\n        \"name\": \"loading.progress.bar.pink.borderColor\",\n        \"derived\": \"--now-color_grouped--pink-3\"\n    },\n    \"--now-loading_progress_bar--positive--background-color\": {\n        \"name\": \"loading.progress.bar.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-loading_progress_bar--positive--border-color\": {\n        \"name\": \"loading.progress.bar.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-loading_progress_bar-marker--border-width\": {\n        \"name\": \"loading.progress.barMarker.borderWidth\",\n        \"initial\": \"2px\"\n    },\n    \"--now-loading_progress_bar-marker--color\": {\n        \"name\": \"loading.progress.barMarker.color\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-loading_progress_track--background-color\": {\n        \"name\": \"loading.progress.track.backgroundColor\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-loading_progress_track--border-color\": {\n        \"name\": \"loading.progress.track.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-loading_progress_track--border-radius\": {\n        \"name\": \"loading.progress.track.borderRadius\",\n        \"derived\": \"--now-loading--border-radius\"\n    },\n    \"--now-loading_progress_track--border-width\": {\n        \"name\": \"loading.progress.track.borderWidth\",\n        \"derived\": \"--now-loading--border-width\"\n    },\n    \"--now-loading_progress--font-family\": {\n        \"name\": \"loading.progress.fontFamily\",\n        \"derived\": \"--now-loading_label--primary--font-family\"\n    },\n    \"--now-loading_progress--font-style\": {\n        \"name\": \"loading.progress.fontStyle\",\n        \"derived\": \"--now-loading_label--primary--font-style\"\n    },\n    \"--now-loading_progress--font-weight\": {\n        \"name\": \"loading.progress.fontWeight\",\n        \"derived\": \"--now-loading_label--primary--font-weight\"\n    },\n    \"--now-loading_progress--text-transform\": {\n        \"name\": \"loading.progress.textTransform\",\n        \"derived\": \"--now-loading_label--primary--text-transform\"\n    },\n    \"--now-menu_container--primary--background-color\": {\n        \"name\": \"menu.container.primary.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu_container--primary--border-color\": {\n        \"name\": \"menu.container.primary.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu_container--primary--border-radius\": {\n        \"name\": \"menu.container.primary.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu_container--primary--border-width\": {\n        \"name\": \"menu.container.primary.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu_input_placeholder--primary--color\": {\n        \"name\": \"menu.input.placeholder.primary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu_input_value--primary--color\": {\n        \"name\": \"menu.input.value.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu_input--primary--background-color\": {\n        \"name\": \"menu.input.primary.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu_input--primary--background-color--hover\": {\n        \"name\": \"menu.input.primary.backgroundColor.hover\",\n        \"derived\": \"--now-form-control-input--primary--background-color--hover\"\n    },\n    \"--now-menu_input--primary--border-color\": {\n        \"name\": \"menu.input.primary.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu_input--primary--border-width\": {\n        \"name\": \"menu.input.primary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu_input--primary--font-family\": {\n        \"name\": \"menu.input.primary.fontFamily\",\n        \"derived\": \"--now-form-control_value--primary--font-family\"\n    },\n    \"--now-menu_input--primary--font-style\": {\n        \"name\": \"menu.input.primary.fontStyle\",\n        \"derived\": \"--now-form-control_value--primary--font-style\"\n    },\n    \"--now-menu_input--primary--font-weight\": {\n        \"name\": \"menu.input.primary.fontWeight\",\n        \"derived\": \"--now-form-control_value--primary--font-weight\"\n    },\n    \"--now-menu_input--primary--text-transform\": {\n        \"name\": \"menu.input.primary.textTransform\",\n        \"derived\": \"--now-form-control_value--primary--text-transform\"\n    },\n    \"--now-menu-contextual_container_label--primary--color\": {\n        \"name\": \"menuContextual.container.label.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-menu-contextual_container--primary--background-color\": {\n        \"name\": \"menuContextual.container.primary.backgroundColor\",\n        \"derived\": \"--now-color--neutral-19\"\n    },\n    \"--now-menu-contextual_container--primary--background-color-alpha\": {\n        \"name\": \"menuContextual.container.primary.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-contextual_container--primary--border-color\": {\n        \"name\": \"menuContextual.container.primary.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-contextual_container--primary--border-radius\": {\n        \"name\": \"menuContextual.container.primary.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-contextual_container--primary--border-width\": {\n        \"name\": \"menuContextual.container.primary.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-menu-contextual_container--primary--font-family\": {\n        \"name\": \"menuContextual.container.primary.fontFamily\",\n        \"derived\": \"--now-menu--font-family\"\n    },\n    \"--now-menu-contextual_container--primary--font-style\": {\n        \"name\": \"menuContextual.container.primary.fontStyle\",\n        \"derived\": \"--now-menu--font-style\"\n    },\n    \"--now-menu-contextual_container--primary--font-weight\": {\n        \"name\": \"menuContextual.container.primary.fontWeight\",\n        \"derived\": \"--now-menu--font-weight\"\n    },\n    \"--now-menu-contextual_container--primary--text-transform\": {\n        \"name\": \"menuContextual.container.primary.textTransform\",\n        \"derived\": \"--now-menu--text-transform\"\n    },\n    \"--now-menu-list_divider--primary--color\": {\n        \"name\": \"menuList.divider.primary.color\",\n        \"derived\": \"--now-color_divider--primary\"\n    },\n    \"--now-menu-list_divider--primary--width\": {\n        \"name\": \"menuList.divider.primary.width\",\n        \"derived\": \"--now-menu_divider--width\"\n    },\n    \"--now-menu-list_divider--secondary--color\": {\n        \"name\": \"menuList.divider.secondary.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-menu-list_divider--secondary--width\": {\n        \"name\": \"menuList.divider.secondary.width\",\n        \"derived\": \"--now-menu_divider--width\"\n    },\n    \"--now-menu-list_divider--tertiary--color\": {\n        \"name\": \"menuList.divider.tertiary.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-list_divider--tertiary--width\": {\n        \"name\": \"menuList.divider.tertiary.width\",\n        \"derived\": \"--now-menu_divider--width\"\n    },\n    \"--now-menu-list_header--primary--background-color\": {\n        \"name\": \"menuList.header.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-menu-list_header--primary--color\": {\n        \"name\": \"menuList.header.primary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu-list_header--primary--font-family\": {\n        \"name\": \"menuList.header.primary.fontFamily\",\n        \"derived\": \"--now-menu_heading--font-family\"\n    },\n    \"--now-menu-list_header--primary--font-style\": {\n        \"name\": \"menuList.header.primary.fontStyle\",\n        \"derived\": \"--now-menu_heading--font-style\"\n    },\n    \"--now-menu-list_header--primary--font-weight\": {\n        \"name\": \"menuList.header.primary.fontWeight\",\n        \"derived\": \"--now-menu_heading--font-weight\"\n    },\n    \"--now-menu-list_header--primary--text-transform\": {\n        \"name\": \"menuList.header.primary.textTransform\",\n        \"derived\": \"--now-menu_heading--text-transform\"\n    },\n    \"--now-menu-list_icon--primary--color\": {\n        \"name\": \"menuList.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-list_icon--primary--color--focus\": {\n        \"name\": \"menuList.icon.primary.color.focus\",\n        \"derived\": \"--now-menu-list_icon--primary--color\"\n    },\n    \"--now-menu-list_icon--primary--color--selected\": {\n        \"name\": \"menuList.icon.primary.color.selected\",\n        \"derived\": \"--now-menu-list_icon--primary--color\"\n    },\n    \"--now-menu-list_label--primary--background-color--highlighted\": {\n        \"name\": \"menuList.label.primary.backgroundColor.highlighted\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-menu-list_label--primary--color\": {\n        \"name\": \"menuList.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-list_label--primary--color--active\": {\n        \"name\": \"menuList.label.primary.color.active\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--disabled\": {\n        \"name\": \"menuList.label.primary.color.disabled\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--focus\": {\n        \"name\": \"menuList.label.primary.color.focus\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--highlighted\": {\n        \"name\": \"menuList.label.primary.color.highlighted\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--hover\": {\n        \"name\": \"menuList.label.primary.color.hover\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--selected\": {\n        \"name\": \"menuList.label.primary.color.selected\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--font-family\": {\n        \"name\": \"menuList.label.primary.fontFamily\",\n        \"derived\": \"--now-menu--font-family\"\n    },\n    \"--now-menu-list_label--primary--font-style\": {\n        \"name\": \"menuList.label.primary.fontStyle\",\n        \"derived\": \"--now-menu--font-style\"\n    },\n    \"--now-menu-list_label--primary--font-weight\": {\n        \"name\": \"menuList.label.primary.fontWeight\",\n        \"derived\": \"--now-menu--font-weight\"\n    },\n    \"--now-menu-list_label--primary--text-transform\": {\n        \"name\": \"menuList.label.primary.textTransform\",\n        \"derived\": \"--now-menu--text-transform\"\n    },\n    \"--now-menu-list_selection--primary--color\": {\n        \"name\": \"menuList.selection.primary.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-menu-list_selection--primary--color--focus\": {\n        \"name\": \"menuList.selection.primary.color.focus\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-menu-list_sublabel--primary--color\": {\n        \"name\": \"menuList.sublabel.primary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-list_sublabel--primary--color--focus\": {\n        \"name\": \"menuList.sublabel.primary.color.focus\",\n        \"derived\": \"--now-menu-list_sublabel--primary--color\"\n    },\n    \"--now-menu-list_sublabel--primary--color--selected\": {\n        \"name\": \"menuList.sublabel.primary.color.selected\",\n        \"derived\": \"--now-menu-list_sublabel--primary--color\"\n    },\n    \"--now-menu-list_sublabel--primary--font-family\": {\n        \"name\": \"menuList.sublabel.primary.fontFamily\",\n        \"derived\": \"--now-menu_sublabel--font-family\"\n    },\n    \"--now-menu-list_sublabel--primary--font-style\": {\n        \"name\": \"menuList.sublabel.primary.fontStyle\",\n        \"derived\": \"--now-menu_sublabel--font-style\"\n    },\n    \"--now-menu-list_sublabel--primary--font-weight\": {\n        \"name\": \"menuList.sublabel.primary.fontWeight\",\n        \"derived\": \"--now-menu_sublabel--font-weight\"\n    },\n    \"--now-menu-list_sublabel--primary--text-transform\": {\n        \"name\": \"menuList.sublabel.primary.textTransform\",\n        \"derived\": \"--now-menu_sublabel--text-transform\"\n    },\n    \"--now-menu-list--primary--background-color\": {\n        \"name\": \"menuList.primary.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-list--primary--background-color--active\": {\n        \"name\": \"menuList.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--interactive-0\"\n    },\n    \"--now-menu-list--primary--background-color--disabled\": {\n        \"name\": \"menuList.primary.backgroundColor.disabled\",\n        \"derived\": \"--now-menu-list--primary--background-color\"\n    },\n    \"--now-menu-list--primary--background-color--focus\": {\n        \"name\": \"menuList.primary.backgroundColor.focus\",\n        \"derived\": \"--now-color--interactive-0\"\n    },\n    \"--now-menu-list--primary--background-color--hover\": {\n        \"name\": \"menuList.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--interactive-0\"\n    },\n    \"--now-menu-list--primary--background-color--selected\": {\n        \"name\": \"menuList.primary.backgroundColor.selected\",\n        \"derived\": \"--now-menu-list--primary--background-color\"\n    },\n    \"--now-menu-list--primary--background-color-alpha--focus\": {\n        \"name\": \"menuList.primary.backgroundColorAlpha.focus\",\n        \"derived\": \"--now-opacity--mid\"\n    },\n    \"--now-menu-list--primary--opacity--disabled\": {\n        \"name\": \"menuList.primary.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-menu-picker_cell_header--background-color\": {\n        \"name\": \"menuPicker.cell.header.backgroundColor\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell_header--color\": {\n        \"name\": \"menuPicker.cell.header.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_cell_header--font-family\": {\n        \"name\": \"menuPicker.cell.header.fontFamily\",\n        \"derived\": \"--now-menu-picker_cell--font-family\"\n    },\n    \"--now-menu-picker_cell_header--font-style\": {\n        \"name\": \"menuPicker.cell.header.fontStyle\",\n        \"derived\": \"--now-menu-picker_cell--font-style\"\n    },\n    \"--now-menu-picker_cell_header--font-weight\": {\n        \"name\": \"menuPicker.cell.header.fontWeight\",\n        \"initial\": \"normal\"\n    },\n    \"--now-menu-picker_cell_header--text-transform\": {\n        \"name\": \"menuPicker.cell.header.textTransform\",\n        \"derived\": \"--now-menu-picker_cell--text-transform\"\n    },\n    \"--now-menu-picker_cell_label--color\": {\n        \"name\": \"menuPicker.cell.label.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_cell_label--color--active\": {\n        \"name\": \"menuPicker.cell.label.color.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--adjacent\": {\n        \"name\": \"menuPicker.cell.label.color.adjacent\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--adjacent_active\": {\n        \"name\": \"menuPicker.cell.label.color.adjacent.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--adjacent\"\n    },\n    \"--now-menu-picker_cell_label--color--adjacent_hover\": {\n        \"name\": \"menuPicker.cell.label.color.adjacent.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--adjacent\"\n    },\n    \"--now-menu-picker_cell_label--color--hover\": {\n        \"name\": \"menuPicker.cell.label.color.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--now\": {\n        \"name\": \"menuPicker.cell.label.color.now\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell_label--color--now_active\": {\n        \"name\": \"menuPicker.cell.label.color.now.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-menu-picker_cell_label--color--now_hover\": {\n        \"name\": \"menuPicker.cell.label.color.now.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-menu-picker_cell_label--color--preview\": {\n        \"name\": \"menuPicker.cell.label.color.preview\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--range\": {\n        \"name\": \"menuPicker.cell.label.color.range\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--range_active\": {\n        \"name\": \"menuPicker.cell.label.color.range.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--range\"\n    },\n    \"--now-menu-picker_cell_label--color--range_hover\": {\n        \"name\": \"menuPicker.cell.label.color.range.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--range\"\n    },\n    \"--now-menu-picker_cell_label--color--selected\": {\n        \"name\": \"menuPicker.cell.label.color.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_cell_label--color--selected_active\": {\n        \"name\": \"menuPicker.cell.label.color.selected.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--selected\"\n    },\n    \"--now-menu-picker_cell_label--color--selected_hover\": {\n        \"name\": \"menuPicker.cell.label.color.selected.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--selected\"\n    },\n    \"--now-menu-picker_cell_label--color--series-preview\": {\n        \"name\": \"menuPicker.cell.label.color.seriesPreview\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--series-preview_active\": {\n        \"name\": \"menuPicker.cell.label.color.seriesPreview.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--series-preview\"\n    },\n    \"--now-menu-picker_cell_label--color--series-preview_hover\": {\n        \"name\": \"menuPicker.cell.label.color.seriesPreview.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--series-preview\"\n    },\n    \"--now-menu-picker_cell_label--color--series-range\": {\n        \"name\": \"menuPicker.cell.label.color.seriesRange\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--series-range_active\": {\n        \"name\": \"menuPicker.cell.label.color.seriesRange.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--series-range\"\n    },\n    \"--now-menu-picker_cell_label--color--series-range_hover\": {\n        \"name\": \"menuPicker.cell.label.color.seriesRange.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--series-range\"\n    },\n    \"--now-menu-picker_cell--background-color\": {\n        \"name\": \"menuPicker.cell.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color--active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--adjacent\": {\n        \"name\": \"menuPicker.cell.backgroundColor.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color--adjacent_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.adjacent.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--adjacent_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.adjacent.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--now\": {\n        \"name\": \"menuPicker.cell.backgroundColor.now\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color--now_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.now.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--now_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.now.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--preview\": {\n        \"name\": \"menuPicker.cell.backgroundColor.preview\",\n        \"derived\": \"--now-color_selection--secondary-0\"\n    },\n    \"--now-menu-picker_cell--background-color--range\": {\n        \"name\": \"menuPicker.cell.backgroundColor.range\",\n        \"derived\": \"--now-color_selection--secondary-0\"\n    },\n    \"--now-menu-picker_cell--background-color--range_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.range.active\",\n        \"derived\": \"--now-color_selection--secondary-2\"\n    },\n    \"--now-menu-picker_cell--background-color--range_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.range.hover\",\n        \"derived\": \"--now-color_selection--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--selected\": {\n        \"name\": \"menuPicker.cell.backgroundColor.selected\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--selected_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-menu-picker_cell--background-color--selected_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-menu-picker_cell--background-color--series\": {\n        \"name\": \"menuPicker.cell.backgroundColor.series\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color--series-preview\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesPreview\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--series-preview_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesPreview.active\",\n        \"derived\": \"--now-menu-picker_cell--background-color--series-preview\"\n    },\n    \"--now-menu-picker_cell--background-color--series-preview_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesPreview.hover\",\n        \"derived\": \"--now-menu-picker_cell--background-color--series-preview\"\n    },\n    \"--now-menu-picker_cell--background-color--series-range\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesRange\",\n        \"derived\": \"--now-color--interactive-0\"\n    },\n    \"--now-menu-picker_cell--background-color--series-range_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesRange.active\",\n        \"derived\": \"--now-menu-picker_cell--background-color--series-range\"\n    },\n    \"--now-menu-picker_cell--background-color--series-range_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesRange.hover\",\n        \"derived\": \"--now-menu-picker_cell--background-color--series-range\"\n    },\n    \"--now-menu-picker_cell--background-color--week\": {\n        \"name\": \"menuPicker.cell.backgroundColor.week\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color-alpha--week\": {\n        \"name\": \"menuPicker.cell.backgroundColorAlpha.week\",\n        \"initial\": \"0\"\n    },\n    \"--now-menu-picker_cell--border-color\": {\n        \"name\": \"menuPicker.cell.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--active\": {\n        \"name\": \"menuPicker.cell.borderColor.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--adjacent\": {\n        \"name\": \"menuPicker.cell.borderColor.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--adjacent_active\": {\n        \"name\": \"menuPicker.cell.borderColor.adjacent.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--adjacent\"\n    },\n    \"--now-menu-picker_cell--border-color--adjacent_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.adjacent.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--adjacent\"\n    },\n    \"--now-menu-picker_cell--border-color--hover\": {\n        \"name\": \"menuPicker.cell.borderColor.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--now\": {\n        \"name\": \"menuPicker.cell.borderColor.now\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--border-color--now_active\": {\n        \"name\": \"menuPicker.cell.borderColor.now.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-menu-picker_cell--border-color--now_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.now.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-menu-picker_cell--border-color--preview\": {\n        \"name\": \"menuPicker.cell.borderColor.preview\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--range\": {\n        \"name\": \"menuPicker.cell.borderColor.range\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--range_active\": {\n        \"name\": \"menuPicker.cell.borderColor.range.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--range\"\n    },\n    \"--now-menu-picker_cell--border-color--range_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.range.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--range\"\n    },\n    \"--now-menu-picker_cell--border-color--selected\": {\n        \"name\": \"menuPicker.cell.borderColor.selected\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--selected_active\": {\n        \"name\": \"menuPicker.cell.borderColor.selected.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--selected\"\n    },\n    \"--now-menu-picker_cell--border-color--selected_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.selected.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--selected\"\n    },\n    \"--now-menu-picker_cell--border-color--series\": {\n        \"name\": \"menuPicker.cell.borderColor.series\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--series-preview\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesPreview\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--series-preview_active\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesPreview.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--series-preview\"\n    },\n    \"--now-menu-picker_cell--border-color--series-preview_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesPreview.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--series-preview\"\n    },\n    \"--now-menu-picker_cell--border-color--series-range\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesRange\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--series-range_active\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesRange.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--series-range\"\n    },\n    \"--now-menu-picker_cell--border-color--series-range_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesRange.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--series-range\"\n    },\n    \"--now-menu-picker_cell--border-radius\": {\n        \"name\": \"menuPicker.cell.borderRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-menu-picker_cell--border-radius--adjacent\": {\n        \"name\": \"menuPicker.cell.borderRadius.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--now\": {\n        \"name\": \"menuPicker.cell.borderRadius.now\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--preview\": {\n        \"name\": \"menuPicker.cell.borderRadius.preview\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--range\": {\n        \"name\": \"menuPicker.cell.borderRadius.range\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--selected\": {\n        \"name\": \"menuPicker.cell.borderRadius.selected\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--series\": {\n        \"name\": \"menuPicker.cell.borderRadius.series\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--series-preview\": {\n        \"name\": \"menuPicker.cell.borderRadius.seriesPreview\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--series-range\": {\n        \"name\": \"menuPicker.cell.borderRadius.seriesRange\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-width\": {\n        \"name\": \"menuPicker.cell.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-menu-picker_cell--border-width--adjacent\": {\n        \"name\": \"menuPicker.cell.borderWidth.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--now\": {\n        \"name\": \"menuPicker.cell.borderWidth.now\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_cell--border-width--preview\": {\n        \"name\": \"menuPicker.cell.borderWidth.preview\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--range\": {\n        \"name\": \"menuPicker.cell.borderWidth.range\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--selected\": {\n        \"name\": \"menuPicker.cell.borderWidth.selected\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--series\": {\n        \"name\": \"menuPicker.cell.borderWidth.series\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--series-preview\": {\n        \"name\": \"menuPicker.cell.borderWidth.seriesPreview\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--series-range\": {\n        \"name\": \"menuPicker.cell.borderWidth.seriesRange\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--color--series\": {\n        \"name\": \"menuPicker.cell.color.series\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_cell--color--week\": {\n        \"name\": \"menuPicker.cell.color.week\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_cell--font-family\": {\n        \"name\": \"menuPicker.cell.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_cell--font-family--adjacent\": {\n        \"name\": \"menuPicker.cell.fontFamily.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--font-family\"\n    },\n    \"--now-menu-picker_cell--font-family--week\": {\n        \"name\": \"menuPicker.cell.fontFamily.week\",\n        \"derived\": \"--now-menu-picker_cell--font-family\"\n    },\n    \"--now-menu-picker_cell--font-style\": {\n        \"name\": \"menuPicker.cell.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_cell--font-style--adjacent\": {\n        \"name\": \"menuPicker.cell.fontStyle.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--font-style\"\n    },\n    \"--now-menu-picker_cell--font-style--week\": {\n        \"name\": \"menuPicker.cell.fontStyle.week\",\n        \"derived\": \"--now-menu-picker_cell--font-style\"\n    },\n    \"--now-menu-picker_cell--font-weight\": {\n        \"name\": \"menuPicker.cell.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-menu-picker_cell--font-weight--adjacent\": {\n        \"name\": \"menuPicker.cell.fontWeight.adjacent\",\n        \"initial\": \"normal\"\n    },\n    \"--now-menu-picker_cell--font-weight--week\": {\n        \"name\": \"menuPicker.cell.fontWeight.week\",\n        \"derived\": \"--now-menu-picker_cell--font-weight\"\n    },\n    \"--now-menu-picker_cell--opacity--disabled\": {\n        \"name\": \"menuPicker.cell.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-menu-picker_cell--text-transform\": {\n        \"name\": \"menuPicker.cell.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_cell--text-transform--adjacent\": {\n        \"name\": \"menuPicker.cell.textTransform.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--text-transform\"\n    },\n    \"--now-menu-picker_cell--text-transform--week\": {\n        \"name\": \"menuPicker.cell.textTransform.week\",\n        \"derived\": \"--now-menu-picker_cell--text-transform\"\n    },\n    \"--now-menu-picker_container_divider--color\": {\n        \"name\": \"menuPicker.container.divider.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-picker_container_divider--width\": {\n        \"name\": \"menuPicker.container.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_container--background-color\": {\n        \"name\": \"menuPicker.container.backgroundColor\",\n        \"derived\": \"--now-menu_container--primary--background-color\"\n    },\n    \"--now-menu-picker_container--border-color\": {\n        \"name\": \"menuPicker.container.borderColor\",\n        \"derived\": \"--now-menu_container--primary--border-color\"\n    },\n    \"--now-menu-picker_container--border-radius\": {\n        \"name\": \"menuPicker.container.borderRadius\",\n        \"derived\": \"--now-menu_container--primary--border-radius\"\n    },\n    \"--now-menu-picker_container--border-width\": {\n        \"name\": \"menuPicker.container.borderWidth\",\n        \"derived\": \"--now-menu_container--primary--border-width\"\n    },\n    \"--now-menu-picker_footer_divider--color\": {\n        \"name\": \"menuPicker.footer.divider.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-picker_footer_divider--width\": {\n        \"name\": \"menuPicker.footer.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_footer--background-color\": {\n        \"name\": \"menuPicker.footer.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-picker_footer--font-family\": {\n        \"name\": \"menuPicker.footer.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_footer--font-style\": {\n        \"name\": \"menuPicker.footer.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_footer--font-weight\": {\n        \"name\": \"menuPicker.footer.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-menu-picker_footer--text-transform\": {\n        \"name\": \"menuPicker.footer.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_header_divider--primary--color\": {\n        \"name\": \"menuPicker.header.divider.primary.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-picker_header_divider--primary--width\": {\n        \"name\": \"menuPicker.header.divider.primary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_header_divider--secondary--color\": {\n        \"name\": \"menuPicker.header.divider.secondary.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-picker_header_divider--secondary--width\": {\n        \"name\": \"menuPicker.header.divider.secondary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_header--primary--background-color\": {\n        \"name\": \"menuPicker.header.primary.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-picker_header--primary--color\": {\n        \"name\": \"menuPicker.header.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_header--primary--font-family\": {\n        \"name\": \"menuPicker.header.primary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_header--primary--font-style\": {\n        \"name\": \"menuPicker.header.primary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_header--primary--font-weight\": {\n        \"name\": \"menuPicker.header.primary.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-menu-picker_header--primary--text-transform\": {\n        \"name\": \"menuPicker.header.primary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_header--secondary--background-color\": {\n        \"name\": \"menuPicker.header.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-menu-picker_header--secondary--color\": {\n        \"name\": \"menuPicker.header.secondary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu-picker_header--secondary--font-family\": {\n        \"name\": \"menuPicker.header.secondary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_header--secondary--font-style\": {\n        \"name\": \"menuPicker.header.secondary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_header--secondary--font-weight\": {\n        \"name\": \"menuPicker.header.secondary.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_header--secondary--text-transform\": {\n        \"name\": \"menuPicker.header.secondary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_item_label--primary--color\": {\n        \"name\": \"menuPicker.item.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_item_label--primary--color--focus\": {\n        \"name\": \"menuPicker.item.label.primary.color.focus\",\n        \"derived\": \"--now-menu-picker_item_label--primary--color\"\n    },\n    \"--now-menu-picker_item_label--primary--color--hover\": {\n        \"name\": \"menuPicker.item.label.primary.color.hover\",\n        \"derived\": \"--now-menu-picker_item_label--primary--color\"\n    },\n    \"--now-menu-picker_item_label--primary--color--selected\": {\n        \"name\": \"menuPicker.item.label.primary.color.selected\",\n        \"derived\": \"--now-menu-picker_item_label--primary--color\"\n    },\n    \"--now-menu-picker_item_label--secondary--color\": {\n        \"name\": \"menuPicker.item.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_item_label--secondary--color--focus\": {\n        \"name\": \"menuPicker.item.label.secondary.color.focus\",\n        \"derived\": \"--now-menu-picker_item_label--secondary--color\"\n    },\n    \"--now-menu-picker_item_label--secondary--color--hover\": {\n        \"name\": \"menuPicker.item.label.secondary.color.hover\",\n        \"derived\": \"--now-menu-picker_item_label--secondary--color\"\n    },\n    \"--now-menu-picker_item_label--secondary--color--selected\": {\n        \"name\": \"menuPicker.item.label.secondary.color.selected\",\n        \"derived\": \"--now-menu-picker_item_label--secondary--color\"\n    },\n    \"--now-menu-picker_item_label--tertiary--color\": {\n        \"name\": \"menuPicker.item.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu-picker_item_label--tertiary--color--focus\": {\n        \"name\": \"menuPicker.item.label.tertiary.color.focus\",\n        \"derived\": \"--now-menu-picker_item_label--tertiary--color\"\n    },\n    \"--now-menu-picker_item_label--tertiary--color--hover\": {\n        \"name\": \"menuPicker.item.label.tertiary.color.hover\",\n        \"derived\": \"--now-menu-picker_item_label--tertiary--color\"\n    },\n    \"--now-menu-picker_item_label--tertiary--color--selected\": {\n        \"name\": \"menuPicker.item.label.tertiary.color.selected\",\n        \"derived\": \"--now-menu-picker_item_label--tertiary--color\"\n    },\n    \"--now-menu-picker_item_selection--color\": {\n        \"name\": \"menuPicker.item.selection.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-menu-picker_item_selection--color--focus\": {\n        \"name\": \"menuPicker.item.selection.color.focus\",\n        \"derived\": \"--now-menu-picker_item_selection--color\"\n    },\n    \"--now-menu-picker_item_selection--color--hover\": {\n        \"name\": \"menuPicker.item.selection.color.hover\",\n        \"derived\": \"--now-menu-picker_item_selection--color\"\n    },\n    \"--now-menu-picker_item_selection--color--selected\": {\n        \"name\": \"menuPicker.item.selection.color.selected\",\n        \"derived\": \"--now-menu-picker_item_selection--color\"\n    },\n    \"--now-menu-picker_item--background-color\": {\n        \"name\": \"menuPicker.item.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-picker_item--background-color--hover\": {\n        \"name\": \"menuPicker.item.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--secondary-0\"\n    },\n    \"--now-menu-picker_item--background-color--selected\": {\n        \"name\": \"menuPicker.item.backgroundColor.selected\",\n        \"derived\": \"--now-menu-picker_item--background-color\"\n    },\n    \"--now-menu-picker_item--border-color\": {\n        \"name\": \"menuPicker.item.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_item--border-color--focus\": {\n        \"name\": \"menuPicker.item.borderColor.focus\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_item--border-color--hover\": {\n        \"name\": \"menuPicker.item.borderColor.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_item--border-color--selected\": {\n        \"name\": \"menuPicker.item.borderColor.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_item--border-radius\": {\n        \"name\": \"menuPicker.item.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_item--border-width\": {\n        \"name\": \"menuPicker.item.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_item--color-alpha--hover\": {\n        \"name\": \"menuPicker.item.colorAlpha.hover\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-picker_item--font-family\": {\n        \"name\": \"menuPicker.item.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_item--font-style\": {\n        \"name\": \"menuPicker.item.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_item--font-weight\": {\n        \"name\": \"menuPicker.item.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_item--text-transform\": {\n        \"name\": \"menuPicker.item.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_label--primary--color\": {\n        \"name\": \"menuPicker.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_label--primary--font-family\": {\n        \"name\": \"menuPicker.label.primary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_label--primary--font-style\": {\n        \"name\": \"menuPicker.label.primary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_label--primary--font-weight\": {\n        \"name\": \"menuPicker.label.primary.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_label--primary--text-transform\": {\n        \"name\": \"menuPicker.label.primary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_label--secondary--color\": {\n        \"name\": \"menuPicker.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_label--secondary--font-family\": {\n        \"name\": \"menuPicker.label.secondary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_label--secondary--font-style\": {\n        \"name\": \"menuPicker.label.secondary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_label--secondary--font-weight\": {\n        \"name\": \"menuPicker.label.secondary.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_label--secondary--text-transform\": {\n        \"name\": \"menuPicker.label.secondary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_label--tertiary--color\": {\n        \"name\": \"menuPicker.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu-picker_label--tertiary--font-family\": {\n        \"name\": \"menuPicker.label.tertiary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_label--tertiary--font-style\": {\n        \"name\": \"menuPicker.label.tertiary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_label--tertiary--font-weight\": {\n        \"name\": \"menuPicker.label.tertiary.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_label--tertiary--text-transform\": {\n        \"name\": \"menuPicker.label.tertiary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_select_item--border-color\": {\n        \"name\": \"menuPicker.select.item.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_select_item--border-radius\": {\n        \"name\": \"menuPicker.select.item.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_select_item--border-width\": {\n        \"name\": \"menuPicker.select.item.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_select_trigger--background-color--hover\": {\n        \"name\": \"menuPicker.select.trigger.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-menu-picker_select_trigger--border-color\": {\n        \"name\": \"menuPicker.select.trigger.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_select_trigger--border-color--focus\": {\n        \"name\": \"menuPicker.select.trigger.borderColor.focus\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-menu-picker_select_trigger--border-color--hover\": {\n        \"name\": \"menuPicker.select.trigger.borderColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-menu-picker_select_trigger--border-radius\": {\n        \"name\": \"menuPicker.select.trigger.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_select_trigger--border-width\": {\n        \"name\": \"menuPicker.select.trigger.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_status_icon--critical--color\": {\n        \"name\": \"menuPicker.status.icon.critical.color\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-menu-picker_status_icon--info--color\": {\n        \"name\": \"menuPicker.status.icon.info.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_status_icon--positive--color\": {\n        \"name\": \"menuPicker.status.icon.positive.color\",\n        \"derived\": \"--now-color_alert--positive-2\"\n    },\n    \"--now-menu-picker_track--border-radius\": {\n        \"name\": \"menuPicker.track.borderRadius\",\n        \"initial\": \"2px\"\n    },\n    \"--now-menu-picker_trigger_item--border-color\": {\n        \"name\": \"menuPicker.trigger.item.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_trigger_item--border-radius\": {\n        \"name\": \"menuPicker.trigger.item.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_trigger_item--border-width\": {\n        \"name\": \"menuPicker.trigger.item.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_trigger--border-color\": {\n        \"name\": \"menuPicker.trigger.borderColor\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_trigger--border-color--focus\": {\n        \"name\": \"menuPicker.trigger.borderColor.focus\",\n        \"derived\": \"--now-menu-picker_trigger--border-color\"\n    },\n    \"--now-menu-picker_trigger--border-color--hover\": {\n        \"name\": \"menuPicker.trigger.borderColor.hover\",\n        \"derived\": \"--now-menu-picker_trigger--border-color\"\n    },\n    \"--now-menu-picker_trigger--border-radius\": {\n        \"name\": \"menuPicker.trigger.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_trigger--border-width\": {\n        \"name\": \"menuPicker.trigger.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_trigger--font-family\": {\n        \"name\": \"menuPicker.trigger.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_trigger--font-style\": {\n        \"name\": \"menuPicker.trigger.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_trigger--font-weight\": {\n        \"name\": \"menuPicker.trigger.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_trigger--text-transform\": {\n        \"name\": \"menuPicker.trigger.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker--color-alpha\": {\n        \"name\": \"menuPicker.colorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-menu-picker--color-alpha--active\": {\n        \"name\": \"menuPicker.colorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-menu-picker--color-alpha--adjacent\": {\n        \"name\": \"menuPicker.colorAlpha.adjacent\",\n        \"initial\": \"0.6\"\n    },\n    \"--now-menu-picker--color-alpha--hover\": {\n        \"name\": \"menuPicker.colorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-menu-picker--color-alpha--preview\": {\n        \"name\": \"menuPicker.colorAlpha.preview\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-picker--color-alpha--range\": {\n        \"name\": \"menuPicker.colorAlpha.range\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-picker--color-alpha--selected\": {\n        \"name\": \"menuPicker.colorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-picker--color-alpha--series\": {\n        \"name\": \"menuPicker.colorAlpha.series\",\n        \"derived\": \"--now-menu-picker--color-alpha\"\n    },\n    \"--now-menu-picker--color-alpha--series-preview\": {\n        \"name\": \"menuPicker.colorAlpha.seriesPreview\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-menu-picker--font-family\": {\n        \"name\": \"menuPicker.fontFamily\",\n        \"derived\": \"--now-menu--font-family\"\n    },\n    \"--now-menu-picker--font-style\": {\n        \"name\": \"menuPicker.fontStyle\",\n        \"derived\": \"--now-menu--font-style\"\n    },\n    \"--now-menu-picker--font-weight\": {\n        \"name\": \"menuPicker.fontWeight\",\n        \"derived\": \"--now-menu--font-weight\"\n    },\n    \"--now-menu-picker--opacity--disabled\": {\n        \"name\": \"menuPicker.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-menu-picker--text-transform\": {\n        \"name\": \"menuPicker.textTransform\",\n        \"derived\": \"--now-menu--text-transform\"\n    },\n    \"--now-messaging_action_icon--primary_bare_critical--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.critical.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_critical--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.critical.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_critical--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.critical.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_high--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.high.color\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_high--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.high.color.active\",\n        \"derived\": \"--now-color_alert--high-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_high--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.high.color.hover\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_info--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.info.color\",\n        \"derived\": \"--now-color_alert--info-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_info--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.info.color.active\",\n        \"derived\": \"--now-color_alert--info-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_info--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.info.color.hover\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_low--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.low.color\",\n        \"derived\": \"--now-color_alert--low-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_low--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.low.color.active\",\n        \"derived\": \"--now-color_alert--low-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_low--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.low.color.hover\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_moderate--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.moderate.color\",\n        \"derived\": \"--now-color_alert--moderate-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_moderate--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.moderate.color.active\",\n        \"derived\": \"--now-color_alert--moderate-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_moderate--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.moderate.color.hover\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_positive--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.positive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_positive--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.positive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_positive--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.positive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_warning--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.warning.color\",\n        \"derived\": \"--now-color_alert--warning-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_warning--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.warning.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action_icon--primary_bare_warning--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.warning.color.hover\",\n        \"derived\": \"--now-color_alert--warning-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_action_icon--primary_bare--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.color.active\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_action_icon--primary_bare--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-messaging_action_label--primary_critical--color\": {\n        \"name\": \"messaging.action.label.primary.critical.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_critical--color--active\": {\n        \"name\": \"messaging.action.label.primary.critical.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_critical--color--hover\": {\n        \"name\": \"messaging.action.label.primary.critical.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_high--color\": {\n        \"name\": \"messaging.action.label.primary.high.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_high--color--active\": {\n        \"name\": \"messaging.action.label.primary.high.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_high--color--hover\": {\n        \"name\": \"messaging.action.label.primary.high.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_info--color\": {\n        \"name\": \"messaging.action.label.primary.info.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_info--color--active\": {\n        \"name\": \"messaging.action.label.primary.info.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_info--color--hover\": {\n        \"name\": \"messaging.action.label.primary.info.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_low--color\": {\n        \"name\": \"messaging.action.label.primary.low.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_low--color--active\": {\n        \"name\": \"messaging.action.label.primary.low.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_low--color--hover\": {\n        \"name\": \"messaging.action.label.primary.low.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_moderate--color\": {\n        \"name\": \"messaging.action.label.primary.moderate.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_moderate--color--active\": {\n        \"name\": \"messaging.action.label.primary.moderate.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_moderate--color--hover\": {\n        \"name\": \"messaging.action.label.primary.moderate.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_positive--color\": {\n        \"name\": \"messaging.action.label.primary.positive.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_positive--color--active\": {\n        \"name\": \"messaging.action.label.primary.positive.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_positive--color--hover\": {\n        \"name\": \"messaging.action.label.primary.positive.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_warning--color\": {\n        \"name\": \"messaging.action.label.primary.warning.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_warning--color--active\": {\n        \"name\": \"messaging.action.label.primary.warning.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_warning--color--hover\": {\n        \"name\": \"messaging.action.label.primary.warning.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary--color\": {\n        \"name\": \"messaging.action.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action_label--primary--color--active\": {\n        \"name\": \"messaging.action.label.primary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action_label--primary--color--hover\": {\n        \"name\": \"messaging.action.label.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action--primary_bare_critical--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.critical.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_critical--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.critical.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_critical--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.critical.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_critical--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.critical.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_critical--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.critical.borderColor.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-messaging_action--primary_bare_critical--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.critical.borderColor.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-messaging_action--primary_bare_critical--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.critical.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_critical--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.critical.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_high--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.high.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_high--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.high.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_high--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.high.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_high--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.high.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_high--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.high.borderColor.active\",\n        \"derived\": \"--now-color_alert--high-5\"\n    },\n    \"--now-messaging_action--primary_bare_high--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.high.borderColor.hover\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-messaging_action--primary_bare_high--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.high.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_high--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.high.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_info--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.info.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_info--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.info.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_info--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.info.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_info--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.info.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_info--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.info.borderColor.active\",\n        \"derived\": \"--now-color_alert--info-5\"\n    },\n    \"--now-messaging_action--primary_bare_info--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.info.borderColor.hover\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-messaging_action--primary_bare_info--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.info.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_info--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.info.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_low--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.low.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_low--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.low.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_low--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.low.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_low--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.low.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_low--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.low.borderColor.active\",\n        \"derived\": \"--now-color_alert--low-5\"\n    },\n    \"--now-messaging_action--primary_bare_low--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.low.borderColor.hover\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-messaging_action--primary_bare_low--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.low.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_low--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.low.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.moderate.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.moderate.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.moderate.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.moderate.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.moderate.borderColor.active\",\n        \"derived\": \"--now-color_alert--moderate-5\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.moderate.borderColor.hover\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.moderate.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.moderate.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_positive--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.positive.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_positive--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.positive.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_positive--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.positive.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_positive--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.positive.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_positive--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.positive.borderColor.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-messaging_action--primary_bare_positive--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.positive.borderColor.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-messaging_action--primary_bare_positive--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.positive.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_positive--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.positive.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_warning--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.warning.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_warning--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.warning.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_warning--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.warning.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_warning--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.warning.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_warning--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.warning.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action--primary_bare_warning--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.warning.borderColor.hover\",\n        \"derived\": \"--now-color_alert--warning-5\"\n    },\n    \"--now-messaging_action--primary_bare_warning--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.warning.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_warning--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.warning.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary_bare--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary_bare--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.backgroundColorAlpha.active\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary_bare--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.backgroundColorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary_bare--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_action--primary_bare--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.borderColor.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-messaging_action--primary_bare--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.bare.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-messaging_action--primary_bare--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.borderColorAlpha.active\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary_bare--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.borderColorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary_bare--border-radius\": {\n        \"name\": \"messaging.action.primary.bare.borderRadius\",\n        \"derived\": \"--now-messaging--border-radius\"\n    },\n    \"--now-messaging_action--primary_bare--border-width\": {\n        \"name\": \"messaging.action.primary.bare.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-messaging_action--primary_critical--background-color\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_critical--background-color--active\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_critical--background-color--hover\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_critical--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_critical--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_critical--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_critical--border-color\": {\n        \"name\": \"messaging.action.primary.critical.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_critical--border-color--active\": {\n        \"name\": \"messaging.action.primary.critical.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_critical--border-color--hover\": {\n        \"name\": \"messaging.action.primary.critical.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_critical--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.critical.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_critical--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.critical.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_critical--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.critical.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_high--background-color\": {\n        \"name\": \"messaging.action.primary.high.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_high--background-color--active\": {\n        \"name\": \"messaging.action.primary.high.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_high--background-color--hover\": {\n        \"name\": \"messaging.action.primary.high.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_high--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.high.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_high--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.high.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_high--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.high.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_high--border-color\": {\n        \"name\": \"messaging.action.primary.high.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_high--border-color--active\": {\n        \"name\": \"messaging.action.primary.high.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_high--border-color--hover\": {\n        \"name\": \"messaging.action.primary.high.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_high--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.high.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_high--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.high.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_high--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.high.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_info--background-color\": {\n        \"name\": \"messaging.action.primary.info.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_info--background-color--active\": {\n        \"name\": \"messaging.action.primary.info.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_info--background-color--hover\": {\n        \"name\": \"messaging.action.primary.info.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_info--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.info.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_info--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.info.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_info--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.info.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_info--border-color\": {\n        \"name\": \"messaging.action.primary.info.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_info--border-color--active\": {\n        \"name\": \"messaging.action.primary.info.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_info--border-color--hover\": {\n        \"name\": \"messaging.action.primary.info.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_info--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.info.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_info--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.info.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_info--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.info.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_low--background-color\": {\n        \"name\": \"messaging.action.primary.low.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_low--background-color--active\": {\n        \"name\": \"messaging.action.primary.low.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_low--background-color--hover\": {\n        \"name\": \"messaging.action.primary.low.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_low--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.low.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_low--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.low.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_low--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.low.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_low--border-color\": {\n        \"name\": \"messaging.action.primary.low.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_low--border-color--active\": {\n        \"name\": \"messaging.action.primary.low.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_low--border-color--hover\": {\n        \"name\": \"messaging.action.primary.low.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_low--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.low.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_low--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.low.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_low--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.low.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color--active\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color--hover\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color\": {\n        \"name\": \"messaging.action.primary.moderate.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color--active\": {\n        \"name\": \"messaging.action.primary.moderate.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color--hover\": {\n        \"name\": \"messaging.action.primary.moderate.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.moderate.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.moderate.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.moderate.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_positive--background-color\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_positive--background-color--active\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_positive--background-color--hover\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_positive--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_positive--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_positive--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_positive--border-color\": {\n        \"name\": \"messaging.action.primary.positive.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_positive--border-color--active\": {\n        \"name\": \"messaging.action.primary.positive.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_positive--border-color--hover\": {\n        \"name\": \"messaging.action.primary.positive.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_positive--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.positive.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_positive--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.positive.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_positive--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.positive.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_warning--background-color\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_warning--background-color--active\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_warning--background-color--hover\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_warning--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_warning--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_warning--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_warning--border-color\": {\n        \"name\": \"messaging.action.primary.warning.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_warning--border-color--active\": {\n        \"name\": \"messaging.action.primary.warning.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_warning--border-color--hover\": {\n        \"name\": \"messaging.action.primary.warning.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_warning--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.warning.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_warning--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.warning.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_warning--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.warning.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary--background-color\": {\n        \"name\": \"messaging.action.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary--background-color--active\": {\n        \"name\": \"messaging.action.primary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary--background-color--hover\": {\n        \"name\": \"messaging.action.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--more\"\n    },\n    \"--now-messaging_action--primary--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-messaging_action--primary--border-color\": {\n        \"name\": \"messaging.action.primary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-messaging_action--primary--border-color--active\": {\n        \"name\": \"messaging.action.primary.borderColor.active\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-messaging_action--primary--border-color--hover\": {\n        \"name\": \"messaging.action.primary.borderColor.hover\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-messaging_action--primary--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-messaging_action--primary--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.borderColorAlpha.active\",\n        \"initial\": \"1\"\n    },\n    \"--now-messaging_action--primary--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.borderColorAlpha.hover\",\n        \"initial\": \"1\"\n    },\n    \"--now-messaging_action--primary--border-radius\": {\n        \"name\": \"messaging.action.primary.borderRadius\",\n        \"derived\": \"--now-messaging--border-radius\"\n    },\n    \"--now-messaging_action--primary--border-width\": {\n        \"name\": \"messaging.action.primary.borderWidth\",\n        \"derived\": \"--now-messaging--border-width\"\n    },\n    \"--now-messaging_header--primary_critical--color\": {\n        \"name\": \"messaging.header.primary.critical.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_high--color\": {\n        \"name\": \"messaging.header.primary.high.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_info--color\": {\n        \"name\": \"messaging.header.primary.info.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_low--color\": {\n        \"name\": \"messaging.header.primary.low.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_moderate--color\": {\n        \"name\": \"messaging.header.primary.moderate.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_positive--color\": {\n        \"name\": \"messaging.header.primary.positive.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_warning--color\": {\n        \"name\": \"messaging.header.primary.warning.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary--font-family\": {\n        \"name\": \"messaging.header.primary.fontFamily\",\n        \"derived\": \"--now-messaging--font-family\"\n    },\n    \"--now-messaging_header--primary--font-style\": {\n        \"name\": \"messaging.header.primary.fontStyle\",\n        \"derived\": \"--now-messaging--font-style\"\n    },\n    \"--now-messaging_header--primary--font-weight\": {\n        \"name\": \"messaging.header.primary.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-messaging_header--primary--text-transform\": {\n        \"name\": \"messaging.header.primary.textTransform\",\n        \"derived\": \"--now-messaging--text-transform\"\n    },\n    \"--now-messaging_icon--primary_critical--color\": {\n        \"name\": \"messaging.icon.primary.critical.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_high--color\": {\n        \"name\": \"messaging.icon.primary.high.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_info--color\": {\n        \"name\": \"messaging.icon.primary.info.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_low--color\": {\n        \"name\": \"messaging.icon.primary.low.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_moderate--color\": {\n        \"name\": \"messaging.icon.primary.moderate.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_positive--color\": {\n        \"name\": \"messaging.icon.primary.positive.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_warning--color\": {\n        \"name\": \"messaging.icon.primary.warning.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary--color\": {\n        \"name\": \"messaging.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_icon--secondary--color\": {\n        \"name\": \"messaging.icon.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-messaging_icon--tertiary--color\": {\n        \"name\": \"messaging.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_label--primary--color\": {\n        \"name\": \"messaging.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_label--secondary--color\": {\n        \"name\": \"messaging.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-messaging_label--tertiary--color\": {\n        \"name\": \"messaging.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_link--primary--color\": {\n        \"name\": \"messaging.link.primary.color\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-messaging_link--primary--color--active\": {\n        \"name\": \"messaging.link.primary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_link--primary--color--hover\": {\n        \"name\": \"messaging.link.primary.color.hover\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-messaging_message--primary_critical--color\": {\n        \"name\": \"messaging.message.primary.critical.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_high--color\": {\n        \"name\": \"messaging.message.primary.high.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_info--color\": {\n        \"name\": \"messaging.message.primary.info.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_low--color\": {\n        \"name\": \"messaging.message.primary.low.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_moderate--color\": {\n        \"name\": \"messaging.message.primary.moderate.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_positive--color\": {\n        \"name\": \"messaging.message.primary.positive.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_warning--color\": {\n        \"name\": \"messaging.message.primary.warning.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary--font-family\": {\n        \"name\": \"messaging.message.primary.fontFamily\",\n        \"derived\": \"--now-messaging--font-family\"\n    },\n    \"--now-messaging_message--primary--font-style\": {\n        \"name\": \"messaging.message.primary.fontStyle\",\n        \"derived\": \"--now-messaging--font-style\"\n    },\n    \"--now-messaging_message--primary--font-weight\": {\n        \"name\": \"messaging.message.primary.fontWeight\",\n        \"derived\": \"--now-messaging--font-weight\"\n    },\n    \"--now-messaging_message--primary--text-transform\": {\n        \"name\": \"messaging.message.primary.textTransform\",\n        \"derived\": \"--now-messaging--text-transform\"\n    },\n    \"--now-messaging_progress-bar_label--primary_critical--color\": {\n        \"name\": \"messaging.progressBar.label.primary.critical.color\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_high--color\": {\n        \"name\": \"messaging.progressBar.label.primary.high.color\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_info--color\": {\n        \"name\": \"messaging.progressBar.label.primary.info.color\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_low--color\": {\n        \"name\": \"messaging.progressBar.label.primary.low.color\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_moderate--color\": {\n        \"name\": \"messaging.progressBar.label.primary.moderate.color\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_positive--color\": {\n        \"name\": \"messaging.progressBar.label.primary.positive.color\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_warning--color\": {\n        \"name\": \"messaging.progressBar.label.primary.warning.color\",\n        \"derived\": \"--now-color_alert--warning-5\"\n    },\n    \"--now-messaging_progress-bar--primary_critical--background-color\": {\n        \"name\": \"messaging.progressBar.primary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-messaging_progress-bar--primary_high--background-color\": {\n        \"name\": \"messaging.progressBar.primary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-messaging_progress-bar--primary_info--background-color\": {\n        \"name\": \"messaging.progressBar.primary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-messaging_progress-bar--primary_low--background-color\": {\n        \"name\": \"messaging.progressBar.primary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-messaging_progress-bar--primary_moderate--background-color\": {\n        \"name\": \"messaging.progressBar.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-messaging_progress-bar--primary_positive--background-color\": {\n        \"name\": \"messaging.progressBar.primary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-messaging_progress-bar--primary_warning--background-color\": {\n        \"name\": \"messaging.progressBar.primary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-5\"\n    },\n    \"--now-messaging--primary_critical--background-color\": {\n        \"name\": \"messaging.primary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-messaging--primary_critical--border-color\": {\n        \"name\": \"messaging.primary.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-messaging--primary_high--background-color\": {\n        \"name\": \"messaging.primary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-0\"\n    },\n    \"--now-messaging--primary_high--border-color\": {\n        \"name\": \"messaging.primary.high.borderColor\",\n        \"derived\": \"--now-color_alert--high-1\"\n    },\n    \"--now-messaging--primary_info--background-color\": {\n        \"name\": \"messaging.primary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-0\"\n    },\n    \"--now-messaging--primary_info--border-color\": {\n        \"name\": \"messaging.primary.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-messaging--primary_low--background-color\": {\n        \"name\": \"messaging.primary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-0\"\n    },\n    \"--now-messaging--primary_low--border-color\": {\n        \"name\": \"messaging.primary.low.borderColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-messaging--primary_moderate--background-color\": {\n        \"name\": \"messaging.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-0\"\n    },\n    \"--now-messaging--primary_moderate--border-color\": {\n        \"name\": \"messaging.primary.moderate.borderColor\",\n        \"derived\": \"--now-color_alert--moderate-1\"\n    },\n    \"--now-messaging--primary_positive--background-color\": {\n        \"name\": \"messaging.primary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-0\"\n    },\n    \"--now-messaging--primary_positive--border-color\": {\n        \"name\": \"messaging.primary.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-messaging--primary_warning--background-color\": {\n        \"name\": \"messaging.primary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-messaging--primary_warning--border-color\": {\n        \"name\": \"messaging.primary.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-messaging-controller_action_label--color\": {\n        \"name\": \"messagingController.action.label.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging-controller_action_label--color--active\": {\n        \"name\": \"messagingController.action.label.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging-controller_action_label--color--hover\": {\n        \"name\": \"messagingController.action.label.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging-controller_action--background-color\": {\n        \"name\": \"messagingController.action.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging-controller_action--background-color--active\": {\n        \"name\": \"messagingController.action.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging-controller_action--background-color--hover\": {\n        \"name\": \"messagingController.action.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging-controller_action--background-color-alpha\": {\n        \"name\": \"messagingController.action.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging-controller_action--background-color-alpha--active\": {\n        \"name\": \"messagingController.action.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging-controller_action--background-color-alpha--hover\": {\n        \"name\": \"messagingController.action.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging-controller_action--border-color\": {\n        \"name\": \"messagingController.action.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging-controller_action--border-color--active\": {\n        \"name\": \"messagingController.action.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging-controller_action--border-color--hover\": {\n        \"name\": \"messagingController.action.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging-controller_action--border-color-alpha\": {\n        \"name\": \"messagingController.action.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging-controller_action--border-color-alpha--active\": {\n        \"name\": \"messagingController.action.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging-controller_action--border-color-alpha--hover\": {\n        \"name\": \"messagingController.action.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging-controller_toggle_label--color\": {\n        \"name\": \"messagingController.toggle.label.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging-controller_toggle_label--color--active\": {\n        \"name\": \"messagingController.toggle.label.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging-controller_toggle_label--color--hover\": {\n        \"name\": \"messagingController.toggle.label.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging-controller_toggle--background-color\": {\n        \"name\": \"messagingController.toggle.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging-controller_toggle--background-color--active\": {\n        \"name\": \"messagingController.toggle.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging-controller_toggle--background-color--hover\": {\n        \"name\": \"messagingController.toggle.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging-controller_toggle--background-color-alpha\": {\n        \"name\": \"messagingController.toggle.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging-controller_toggle--background-color-alpha--active\": {\n        \"name\": \"messagingController.toggle.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging-controller_toggle--background-color-alpha--hover\": {\n        \"name\": \"messagingController.toggle.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging-controller_toggle--border-color\": {\n        \"name\": \"messagingController.toggle.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging-controller_toggle--border-color--active\": {\n        \"name\": \"messagingController.toggle.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging-controller_toggle--border-color--hover\": {\n        \"name\": \"messagingController.toggle.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging-controller_toggle--border-radius\": {\n        \"name\": \"messagingController.toggle.borderRadius\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-radius\"\n    },\n    \"--now-messaging-controller_toggle--border-width\": {\n        \"name\": \"messagingController.toggle.borderWidth\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-width\"\n    },\n    \"--now-messaging-controller--background-color\": {\n        \"name\": \"messagingController.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-0\"\n    },\n    \"--now-messaging-controller--border-color\": {\n        \"name\": \"messagingController.borderColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-messaging-controller--border-radius\": {\n        \"name\": \"messagingController.borderRadius\",\n        \"derived\": \"--now-messaging--border-radius\"\n    },\n    \"--now-messaging-controller--border-width\": {\n        \"name\": \"messagingController.borderWidth\",\n        \"derived\": \"--now-messaging--border-width\"\n    },\n    \"--now-messaging-controller--font-family\": {\n        \"name\": \"messagingController.fontFamily\",\n        \"derived\": \"--now-messaging--font-family\"\n    },\n    \"--now-messaging-controller--font-style\": {\n        \"name\": \"messagingController.fontStyle\",\n        \"derived\": \"--now-messaging--font-style\"\n    },\n    \"--now-messaging-controller--font-weight\": {\n        \"name\": \"messagingController.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-messaging-controller--text-transform\": {\n        \"name\": \"messagingController.textTransform\",\n        \"derived\": \"--now-messaging--text-transform\"\n    },\n    \"--now-navigation--primary--color\": {\n        \"name\": \"navigation.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-navigation--secondary--color\": {\n        \"name\": \"navigation.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-navigation--tertiary--color\": {\n        \"name\": \"navigation.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-navigation-page_tabs_container--primary--background-color\": {\n        \"name\": \"navigationPage.tabs.container.primary.backgroundColor\",\n        \"derived\": \"--now-navigation-page_tabs--primary--background-color\"\n    },\n    \"--now-navigation-page_tabs_container--primary--border-start-end-radius\": {\n        \"name\": \"navigationPage.tabs.container.primary.borderStartEndRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-page_tabs_container--primary--border-start-start-radius\": {\n        \"name\": \"navigationPage.tabs.container.primary.borderStartStartRadius\",\n        \"initial\": \"8px\"\n    },\n    \"--now-navigation-page_tabs_container--secondary--background-color\": {\n        \"name\": \"navigationPage.tabs.container.secondary.backgroundColor\",\n        \"derived\": \"--now-navigation-page_tabs--secondary--background-color\"\n    },\n    \"--now-navigation-page_tabs_parent--primary--background-color\": {\n        \"name\": \"navigationPage.tabs.parent.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-navigation-page_tabs--primary--background-color\": {\n        \"name\": \"navigationPage.tabs.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-navigation-page_tabs--primary--background-color--hover\": {\n        \"name\": \"navigationPage.tabs.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-navigation-page_tabs--primary--background-color--selected\": {\n        \"name\": \"navigationPage.tabs.primary.backgroundColor.selected\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-page_tabs--primary--border-start-end-radius\": {\n        \"name\": \"navigationPage.tabs.primary.borderStartEndRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-navigation-page_tabs--primary--border-start-start-radius\": {\n        \"name\": \"navigationPage.tabs.primary.borderStartStartRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-navigation-page_tabs--secondary--background-color\": {\n        \"name\": \"navigationPage.tabs.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-navigation-page_tabs--secondary--background-color--hover\": {\n        \"name\": \"navigationPage.tabs.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-navigation-page_tabs--secondary--background-color--selected\": {\n        \"name\": \"navigationPage.tabs.secondary.backgroundColor.selected\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-page_tabs--secondary--border-color--selected\": {\n        \"name\": \"navigationPage.tabs.secondary.borderColor.selected\",\n        \"derived\": \"--now-color_divider--primary\"\n    },\n    \"--now-navigation-page_tabs--secondary--border-start-end-radius\": {\n        \"name\": \"navigationPage.tabs.secondary.borderStartEndRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-navigation-page_tabs--secondary--border-start-start-radius\": {\n        \"name\": \"navigationPage.tabs.secondary.borderStartStartRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-navigation-page_tabs--secondary--border-width--selected\": {\n        \"name\": \"navigationPage.tabs.secondary.borderWidth.selected\",\n        \"initial\": \"1px\"\n    },\n    \"--now-navigation-path_dropdown--background-color--active\": {\n        \"name\": \"navigationPath.dropdown.backgroundColor.active\",\n        \"derived\": \"--now-color_background--tertiary-actionable\"\n    },\n    \"--now-navigation-path_dropdown--background-color--hover\": {\n        \"name\": \"navigationPath.dropdown.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--tertiary-actionable\"\n    },\n    \"--now-navigation-path_dropdown--background-color-alpha--active\": {\n        \"name\": \"navigationPath.dropdown.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-path_dropdown--background-color-alpha--hover\": {\n        \"name\": \"navigationPath.dropdown.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-navigation-path_dropdown--color\": {\n        \"name\": \"navigationPath.dropdown.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-path_dropdown--color--active\": {\n        \"name\": \"navigationPath.dropdown.color.active\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_dropdown--color--hover\": {\n        \"name\": \"navigationPath.dropdown.color.hover\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_icon--color\": {\n        \"name\": \"navigationPath.icon.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-path_icon--color--current\": {\n        \"name\": \"navigationPath.icon.color.current\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_icon--color--hover\": {\n        \"name\": \"navigationPath.icon.color.hover\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_label--color\": {\n        \"name\": \"navigationPath.label.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-path_label--color--current\": {\n        \"name\": \"navigationPath.label.color.current\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_label--color--hover\": {\n        \"name\": \"navigationPath.label.color.hover\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path--background-color\": {\n        \"name\": \"navigationPath.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-path--background-color--current\": {\n        \"name\": \"navigationPath.backgroundColor.current\",\n        \"derived\": \"--now-navigation-path--background-color\"\n    },\n    \"--now-navigation-path--background-color--hover\": {\n        \"name\": \"navigationPath.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-path--background-color\"\n    },\n    \"--now-navigation-path--background-color-alpha\": {\n        \"name\": \"navigationPath.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-path--background-color-alpha--current\": {\n        \"name\": \"navigationPath.backgroundColorAlpha.current\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-path--background-color-alpha--hover\": {\n        \"name\": \"navigationPath.backgroundColorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-path--font-family\": {\n        \"name\": \"navigationPath.fontFamily\",\n        \"derived\": \"--now-actionable--font-family\"\n    },\n    \"--now-navigation-path--font-style\": {\n        \"name\": \"navigationPath.fontStyle\",\n        \"derived\": \"--now-actionable--font-style\"\n    },\n    \"--now-navigation-path--font-weight\": {\n        \"name\": \"navigationPath.fontWeight\",\n        \"derived\": \"--now-actionable--font-weight\"\n    },\n    \"--now-navigation-path--font-weight--current\": {\n        \"name\": \"navigationPath.fontWeight.current\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-path--text-transform\": {\n        \"name\": \"navigationPath.textTransform\",\n        \"derived\": \"--now-actionable--text-transform\"\n    },\n    \"--now-navigation-progress_divider--color\": {\n        \"name\": \"navigationProgress.divider.color\",\n        \"derived\": \"--now-color_divider--tertiary\"\n    },\n    \"--now-navigation-progress_icon--current--color\": {\n        \"name\": \"navigationProgress.icon.current.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_icon--current--color--active\": {\n        \"name\": \"navigationProgress.icon.current.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_icon--current--color--hover\": {\n        \"name\": \"navigationProgress.icon.current.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_icon--done--color\": {\n        \"name\": \"navigationProgress.icon.done.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_icon--done--color--active\": {\n        \"name\": \"navigationProgress.icon.done.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_icon--done--color--hover\": {\n        \"name\": \"navigationProgress.icon.done.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_icon--none--color\": {\n        \"name\": \"navigationProgress.icon.none.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress_icon--none--color--active\": {\n        \"name\": \"navigationProgress.icon.none.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_icon--none--color--hover\": {\n        \"name\": \"navigationProgress.icon.none.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_icon--partial--color\": {\n        \"name\": \"navigationProgress.icon.partial.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress_icon--partial--color--active\": {\n        \"name\": \"navigationProgress.icon.partial.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_icon--partial--color--hover\": {\n        \"name\": \"navigationProgress.icon.partial.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--current--color\": {\n        \"name\": \"navigationProgress.label.current.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_label--current--color--active\": {\n        \"name\": \"navigationProgress.label.current.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_label--current--color--hover\": {\n        \"name\": \"navigationProgress.label.current.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--current--font-weight\": {\n        \"name\": \"navigationProgress.label.current.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-progress_label--done--color\": {\n        \"name\": \"navigationProgress.label.done.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_label--done--color--active\": {\n        \"name\": \"navigationProgress.label.done.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_label--done--color--hover\": {\n        \"name\": \"navigationProgress.label.done.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--done--font-weight\": {\n        \"name\": \"navigationProgress.label.done.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_label--font-family\": {\n        \"name\": \"navigationProgress.label.fontFamily\",\n        \"derived\": \"--now-navigation-progress--font-family\"\n    },\n    \"--now-navigation-progress_label--font-style\": {\n        \"name\": \"navigationProgress.label.fontStyle\",\n        \"derived\": \"--now-navigation-progress--font-style\"\n    },\n    \"--now-navigation-progress_label--font-weight\": {\n        \"name\": \"navigationProgress.label.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_label--none--color\": {\n        \"name\": \"navigationProgress.label.none.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_label--none--color--active\": {\n        \"name\": \"navigationProgress.label.none.color.active\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--none--color--hover\": {\n        \"name\": \"navigationProgress.label.none.color.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress_label--none--font-weight\": {\n        \"name\": \"navigationProgress.label.none.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_label--partial--color\": {\n        \"name\": \"navigationProgress.label.partial.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_label--partial--color--active\": {\n        \"name\": \"navigationProgress.label.partial.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_label--partial--color--hover\": {\n        \"name\": \"navigationProgress.label.partial.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--partial--font-weight\": {\n        \"name\": \"navigationProgress.label.partial.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_label--text-transform\": {\n        \"name\": \"navigationProgress.label.textTransform\",\n        \"derived\": \"--now-navigation-progress--text-transform\"\n    },\n    \"--now-navigation-progress_sublabel--current--color\": {\n        \"name\": \"navigationProgress.sublabel.current.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_sublabel--current--color--active\": {\n        \"name\": \"navigationProgress.sublabel.current.color.active\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-navigation-progress_sublabel--current--color--hover\": {\n        \"name\": \"navigationProgress.sublabel.current.color.hover\",\n        \"derived\": \"--now-navigation-progress_sublabel--current--color\"\n    },\n    \"--now-navigation-progress_sublabel--done--color\": {\n        \"name\": \"navigationProgress.sublabel.done.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_sublabel--done--color--active\": {\n        \"name\": \"navigationProgress.sublabel.done.color.active\",\n        \"derived\": \"--now-navigation-progress_sublabel--done--color\"\n    },\n    \"--now-navigation-progress_sublabel--done--color--hover\": {\n        \"name\": \"navigationProgress.sublabel.done.color.hover\",\n        \"derived\": \"--now-navigation-progress_sublabel--done--color\"\n    },\n    \"--now-navigation-progress_sublabel--font-family\": {\n        \"name\": \"navigationProgress.sublabel.fontFamily\",\n        \"derived\": \"--now-navigation-progress--font-family\"\n    },\n    \"--now-navigation-progress_sublabel--font-style\": {\n        \"name\": \"navigationProgress.sublabel.fontStyle\",\n        \"derived\": \"--now-navigation-progress--font-style\"\n    },\n    \"--now-navigation-progress_sublabel--font-weight\": {\n        \"name\": \"navigationProgress.sublabel.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_sublabel--none--color\": {\n        \"name\": \"navigationProgress.sublabel.none.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_sublabel--none--color--active\": {\n        \"name\": \"navigationProgress.sublabel.none.color.active\",\n        \"derived\": \"--now-navigation-progress_sublabel--none--color\"\n    },\n    \"--now-navigation-progress_sublabel--none--color--hover\": {\n        \"name\": \"navigationProgress.sublabel.none.color.hover\",\n        \"derived\": \"--now-navigation-progress_sublabel--none--color\"\n    },\n    \"--now-navigation-progress_sublabel--partial--color\": {\n        \"name\": \"navigationProgress.sublabel.partial.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_sublabel--partial--color--active\": {\n        \"name\": \"navigationProgress.sublabel.partial.color.active\",\n        \"derived\": \"--now-navigation-progress_sublabel--partial--color\"\n    },\n    \"--now-navigation-progress_sublabel--partial--color--hover\": {\n        \"name\": \"navigationProgress.sublabel.partial.color.hover\",\n        \"derived\": \"--now-navigation-progress_sublabel--partial--color\"\n    },\n    \"--now-navigation-progress_sublabel--text-transform\": {\n        \"name\": \"navigationProgress.sublabel.textTransform\",\n        \"derived\": \"--now-navigation-progress--text-transform\"\n    },\n    \"--now-navigation-progress--border-width\": {\n        \"name\": \"navigationProgress.borderWidth\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-progress--current--background-color\": {\n        \"name\": \"navigationProgress.current.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--current--background-color--active\": {\n        \"name\": \"navigationProgress.current.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--current--background-color--hover\": {\n        \"name\": \"navigationProgress.current.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--current--border-color\": {\n        \"name\": \"navigationProgress.current.borderColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--current--border-color--active\": {\n        \"name\": \"navigationProgress.current.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--current--border-color--hover\": {\n        \"name\": \"navigationProgress.current.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--current--border-width\": {\n        \"name\": \"navigationProgress.current.borderWidth\",\n        \"derived\": \"--now-navigation-progress--border-width\"\n    },\n    \"--now-navigation-progress--current--color\": {\n        \"name\": \"navigationProgress.current.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-navigation-progress--current--color--active\": {\n        \"name\": \"navigationProgress.current.color.active\",\n        \"derived\": \"--now-navigation-progress--current--color\"\n    },\n    \"--now-navigation-progress--current--color--hover\": {\n        \"name\": \"navigationProgress.current.color.hover\",\n        \"derived\": \"--now-navigation-progress--current--color\"\n    },\n    \"--now-navigation-progress--current--font-weight\": {\n        \"name\": \"navigationProgress.current.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-progress--done--background-color\": {\n        \"name\": \"navigationProgress.done.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-0\"\n    },\n    \"--now-navigation-progress--done--background-color--active\": {\n        \"name\": \"navigationProgress.done.backgroundColor.active\",\n        \"derived\": \"--now-navigation-progress--done--background-color\"\n    },\n    \"--now-navigation-progress--done--background-color--hover\": {\n        \"name\": \"navigationProgress.done.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-progress--done--background-color\"\n    },\n    \"--now-navigation-progress--done--border-color\": {\n        \"name\": \"navigationProgress.done.borderColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--done--border-color--active\": {\n        \"name\": \"navigationProgress.done.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--done--border-color--hover\": {\n        \"name\": \"navigationProgress.done.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--done--border-width\": {\n        \"name\": \"navigationProgress.done.borderWidth\",\n        \"derived\": \"--now-navigation-progress--border-width\"\n    },\n    \"--now-navigation-progress--done--color\": {\n        \"name\": \"navigationProgress.done.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--done--color--active\": {\n        \"name\": \"navigationProgress.done.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--done--color--hover\": {\n        \"name\": \"navigationProgress.done.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--done--font-weight\": {\n        \"name\": \"navigationProgress.done.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-progress--font-family\": {\n        \"name\": \"navigationProgress.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-progress--font-style\": {\n        \"name\": \"navigationProgress.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-progress--font-weight\": {\n        \"name\": \"navigationProgress.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-progress--none--background-color\": {\n        \"name\": \"navigationProgress.none.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-progress--none--background-color--active\": {\n        \"name\": \"navigationProgress.none.backgroundColor.active\",\n        \"derived\": \"--now-navigation-progress--none--background-color\"\n    },\n    \"--now-navigation-progress--none--background-color--hover\": {\n        \"name\": \"navigationProgress.none.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-progress--none--background-color\"\n    },\n    \"--now-navigation-progress--none--border-color\": {\n        \"name\": \"navigationProgress.none.borderColor\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress--none--border-color--active\": {\n        \"name\": \"navigationProgress.none.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--none--border-color--hover\": {\n        \"name\": \"navigationProgress.none.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--none--border-width\": {\n        \"name\": \"navigationProgress.none.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-navigation-progress--none--color\": {\n        \"name\": \"navigationProgress.none.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress--none--color--active\": {\n        \"name\": \"navigationProgress.none.color.active\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--none--color--hover\": {\n        \"name\": \"navigationProgress.none.color.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--none--font-weight\": {\n        \"name\": \"navigationProgress.none.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress--opacity--disabled\": {\n        \"name\": \"navigationProgress.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-progress--partial--background-color\": {\n        \"name\": \"navigationProgress.partial.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-progress--partial--background-color--active\": {\n        \"name\": \"navigationProgress.partial.backgroundColor.active\",\n        \"derived\": \"--now-navigation-progress--partial--background-color\"\n    },\n    \"--now-navigation-progress--partial--background-color--hover\": {\n        \"name\": \"navigationProgress.partial.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-progress--partial--background-color\"\n    },\n    \"--now-navigation-progress--partial--border-color\": {\n        \"name\": \"navigationProgress.partial.borderColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--partial--border-color--active\": {\n        \"name\": \"navigationProgress.partial.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--partial--border-color--hover\": {\n        \"name\": \"navigationProgress.partial.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--partial--border-width\": {\n        \"name\": \"navigationProgress.partial.borderWidth\",\n        \"derived\": \"--now-navigation-progress--border-width\"\n    },\n    \"--now-navigation-progress--partial--color\": {\n        \"name\": \"navigationProgress.partial.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--partial--color--active\": {\n        \"name\": \"navigationProgress.partial.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--partial--color--hover\": {\n        \"name\": \"navigationProgress.partial.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--partial--font-weight\": {\n        \"name\": \"navigationProgress.partial.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-progress--text-transform\": {\n        \"name\": \"navigationProgress.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tabs_container--background--border-radius\": {\n        \"name\": \"navigationTabs.container.background.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs_container--background--border-width\": {\n        \"name\": \"navigationTabs.container.background.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs_container--background-color\": {\n        \"name\": \"navigationTabs.container.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tabs_container--background-color-alpha\": {\n        \"name\": \"navigationTabs.container.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs_divider--color\": {\n        \"name\": \"navigationTabs.divider.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs_divider--width\": {\n        \"name\": \"navigationTabs.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-navigation-tabs_icon--color\": {\n        \"name\": \"navigationTabs.icon.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tabs_icon--color--active\": {\n        \"name\": \"navigationTabs.icon.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs_icon--color--hover\": {\n        \"name\": \"navigationTabs.icon.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-tabs_icon--color--selected\": {\n        \"name\": \"navigationTabs.icon.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs_label--color\": {\n        \"name\": \"navigationTabs.label.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tabs_label--color--active\": {\n        \"name\": \"navigationTabs.label.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs_label--color--hover\": {\n        \"name\": \"navigationTabs.label.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-tabs_label--color--selected\": {\n        \"name\": \"navigationTabs.label.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs--background-color\": {\n        \"name\": \"navigationTabs.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tabs--background-color--active\": {\n        \"name\": \"navigationTabs.backgroundColor.active\",\n        \"derived\": \"--now-navigation-tabs--background-color\"\n    },\n    \"--now-navigation-tabs--background-color--hover\": {\n        \"name\": \"navigationTabs.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-tabs--background-color\"\n    },\n    \"--now-navigation-tabs--background-color--selected\": {\n        \"name\": \"navigationTabs.backgroundColor.selected\",\n        \"derived\": \"--now-navigation-tabs--background-color\"\n    },\n    \"--now-navigation-tabs--background-color-alpha\": {\n        \"name\": \"navigationTabs.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs--background-color-alpha--active\": {\n        \"name\": \"navigationTabs.backgroundColorAlpha.active\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs--background-color-alpha--hover\": {\n        \"name\": \"navigationTabs.backgroundColorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs--background-color-alpha--selected\": {\n        \"name\": \"navigationTabs.backgroundColorAlpha.selected\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs--font-family\": {\n        \"name\": \"navigationTabs.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tabs--font-style\": {\n        \"name\": \"navigationTabs.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tabs--font-style--selected\": {\n        \"name\": \"navigationTabs.fontStyle.selected\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tabs--font-weight\": {\n        \"name\": \"navigationTabs.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tabs--font-weight--selected\": {\n        \"name\": \"navigationTabs.fontWeight.selected\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tabs--opacity--disabled\": {\n        \"name\": \"navigationTabs.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tabs--selection--border-radius\": {\n        \"name\": \"navigationTabs.selection.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs--selection--border-width\": {\n        \"name\": \"navigationTabs.selection.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs--selection--border-width--active\": {\n        \"name\": \"navigationTabs.selection.borderWidth.active\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs--selection--border-width--hover\": {\n        \"name\": \"navigationTabs.selection.borderWidth.hover\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs--selection--border-width--selected\": {\n        \"name\": \"navigationTabs.selection.borderWidth.selected\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs--selection--color\": {\n        \"name\": \"navigationTabs.selection.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs--selection--color--active\": {\n        \"name\": \"navigationTabs.selection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs--selection--color--hover\": {\n        \"name\": \"navigationTabs.selection.color.hover\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs--selection--color--selected\": {\n        \"name\": \"navigationTabs.selection.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs--selection--color-alpha\": {\n        \"name\": \"navigationTabs.selection.colorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs--selection--color-alpha--active\": {\n        \"name\": \"navigationTabs.selection.colorAlpha.active\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs--selection--color-alpha--hover\": {\n        \"name\": \"navigationTabs.selection.colorAlpha.hover\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs--selection--color-alpha--selected\": {\n        \"name\": \"navigationTabs.selection.colorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs--text-transform\": {\n        \"name\": \"navigationTabs.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tabs--text-transform--selected\": {\n        \"name\": \"navigationTabs.textTransform.selected\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tabs-vertical_container_icon--background-color\": {\n        \"name\": \"navigationTabsVertical.container.icon.backgroundColor\",\n        \"derived\": \"--now-navigation-tabs-vertical_container--background-color\"\n    },\n    \"--now-navigation-tabs-vertical_container_icon--border-radius\": {\n        \"name\": \"navigationTabsVertical.container.icon.borderRadius\",\n        \"initial\": \"50%\"\n    },\n    \"--now-navigation-tabs-vertical_container_icon--border-width\": {\n        \"name\": \"navigationTabsVertical.container.icon.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical_container--background-color\": {\n        \"name\": \"navigationTabsVertical.container.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tabs-vertical_container--background-color-alpha\": {\n        \"name\": \"navigationTabsVertical.container.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs-vertical_container--border-radius\": {\n        \"name\": \"navigationTabsVertical.container.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical_container--border-width\": {\n        \"name\": \"navigationTabsVertical.container.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical_divider--color\": {\n        \"name\": \"navigationTabsVertical.divider.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs-vertical_divider--width\": {\n        \"name\": \"navigationTabsVertical.divider.width\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical_icon--color\": {\n        \"name\": \"navigationTabsVertical.icon.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tabs-vertical_icon--color--active\": {\n        \"name\": \"navigationTabsVertical.icon.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs-vertical_icon--color--hover\": {\n        \"name\": \"navigationTabsVertical.icon.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-tabs-vertical_icon--color--selected\": {\n        \"name\": \"navigationTabsVertical.icon.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs-vertical_label--color\": {\n        \"name\": \"navigationTabsVertical.label.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tabs-vertical_label--color--active\": {\n        \"name\": \"navigationTabsVertical.label.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs-vertical_label--color--hover\": {\n        \"name\": \"navigationTabsVertical.label.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-tabs-vertical_label--color--selected\": {\n        \"name\": \"navigationTabsVertical.label.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs-vertical--background-color\": {\n        \"name\": \"navigationTabsVertical.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tabs-vertical--background-color--active\": {\n        \"name\": \"navigationTabsVertical.backgroundColor.active\",\n        \"derived\": \"--now-navigation-tabs-vertical--background-color\"\n    },\n    \"--now-navigation-tabs-vertical--background-color--hover\": {\n        \"name\": \"navigationTabsVertical.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-tabs-vertical--background-color\"\n    },\n    \"--now-navigation-tabs-vertical--background-color--selected\": {\n        \"name\": \"navigationTabsVertical.backgroundColor.selected\",\n        \"derived\": \"--now-navigation-tabs-vertical--background-color\"\n    },\n    \"--now-navigation-tabs-vertical--background-color-alpha\": {\n        \"name\": \"navigationTabsVertical.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs-vertical--background-color-alpha--active\": {\n        \"name\": \"navigationTabsVertical.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-navigation-tabs-vertical--background-color-alpha--hover\": {\n        \"name\": \"navigationTabsVertical.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--more\"\n    },\n    \"--now-navigation-tabs-vertical--background-color-alpha--selected\": {\n        \"name\": \"navigationTabsVertical.backgroundColorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs-vertical--font-family\": {\n        \"name\": \"navigationTabsVertical.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tabs-vertical--font-style\": {\n        \"name\": \"navigationTabsVertical.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tabs-vertical--font-style--selected\": {\n        \"name\": \"navigationTabsVertical.fontStyle.selected\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tabs-vertical--font-weight\": {\n        \"name\": \"navigationTabsVertical.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tabs-vertical--font-weight--selected\": {\n        \"name\": \"navigationTabsVertical.fontWeight.selected\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tabs-vertical--opacity--disabled\": {\n        \"name\": \"navigationTabsVertical.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-radius\": {\n        \"name\": \"navigationTabsVertical.selection.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-width\": {\n        \"name\": \"navigationTabsVertical.selection.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-width--active\": {\n        \"name\": \"navigationTabsVertical.selection.borderWidth.active\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-width--hover\": {\n        \"name\": \"navigationTabsVertical.selection.borderWidth.hover\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-width--selected\": {\n        \"name\": \"navigationTabsVertical.selection.borderWidth.selected\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color\": {\n        \"name\": \"navigationTabsVertical.selection.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color--active\": {\n        \"name\": \"navigationTabsVertical.selection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color--hover\": {\n        \"name\": \"navigationTabsVertical.selection.color.hover\",\n        \"derived\": \"--now-navigation-tabs-vertical--selection--color\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color--selected\": {\n        \"name\": \"navigationTabsVertical.selection.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color-alpha\": {\n        \"name\": \"navigationTabsVertical.selection.colorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color-alpha--active\": {\n        \"name\": \"navigationTabsVertical.selection.colorAlpha.active\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color-alpha--hover\": {\n        \"name\": \"navigationTabsVertical.selection.colorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color-alpha--selected\": {\n        \"name\": \"navigationTabsVertical.selection.colorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs-vertical--text-transform\": {\n        \"name\": \"navigationTabsVertical.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tabs-vertical--text-transform--selected\": {\n        \"name\": \"navigationTabsVertical.textTransform.selected\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tree_divider--color\": {\n        \"name\": \"navigationTree.divider.color\",\n        \"derived\": \"--now-color_divider--tertiary\"\n    },\n    \"--now-navigation-tree_dragdrop--background-color\": {\n        \"name\": \"navigationTree.dragdrop.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tree_dragdrop--color\": {\n        \"name\": \"navigationTree.dragdrop.color\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-navigation-tree_drop-target-parent--border-color\": {\n        \"name\": \"navigationTree.dropTargetParent.borderColor\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-navigation-tree_icon--color\": {\n        \"name\": \"navigationTree.icon.color\",\n        \"derived\": \"--now-navigation-tree_label--color\"\n    },\n    \"--now-navigation-tree_icon--color--error\": {\n        \"name\": \"navigationTree.icon.color.error\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-navigation-tree_icon--color--loading\": {\n        \"name\": \"navigationTree.icon.color.loading\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-navigation-tree_label--color\": {\n        \"name\": \"navigationTree.label.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tree_label--color--error\": {\n        \"name\": \"navigationTree.label.color.error\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-tree_label--color--hover\": {\n        \"name\": \"navigationTree.label.color.hover\",\n        \"derived\": \"--now-navigation-tree_label--color\"\n    },\n    \"--now-navigation-tree_label--color--loading\": {\n        \"name\": \"navigationTree.label.color.loading\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-navigation-tree_label--color--selected\": {\n        \"name\": \"navigationTree.label.color.selected\",\n        \"derived\": \"--now-navigation-tree_label--color\"\n    },\n    \"--now-navigation-tree_label--color--selected-child\": {\n        \"name\": \"navigationTree.label.color.selectedChild\",\n        \"derived\": \"--now-navigation-tree_label--color\"\n    },\n    \"--now-navigation-tree_placeholder_icon--color\": {\n        \"name\": \"navigationTree.placeholder.icon.color\",\n        \"derived\": \"--now-navigation-tree_placeholder--color\"\n    },\n    \"--now-navigation-tree_placeholder--color\": {\n        \"name\": \"navigationTree.placeholder.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tree_placeholder--color--active\": {\n        \"name\": \"navigationTree.placeholder.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-navigation-tree_placeholder--color--hover\": {\n        \"name\": \"navigationTree.placeholder.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-navigation-tree_placeholder--color--selected\": {\n        \"name\": \"navigationTree.placeholder.color.selected\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-navigation-tree_placeholder--font-family\": {\n        \"name\": \"navigationTree.placeholder.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tree_placeholder--font-style\": {\n        \"name\": \"navigationTree.placeholder.fontStyle\",\n        \"initial\": \"italic\"\n    },\n    \"--now-navigation-tree_placeholder--font-weight\": {\n        \"name\": \"navigationTree.placeholder.fontWeight\",\n        \"initial\": \"600\"\n    },\n    \"--now-navigation-tree_placeholder--text-transform\": {\n        \"name\": \"navigationTree.placeholder.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tree_sublabel--color\": {\n        \"name\": \"navigationTree.sublabel.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-tree_sublabel--font-family\": {\n        \"name\": \"navigationTree.sublabel.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tree_sublabel--font-style\": {\n        \"name\": \"navigationTree.sublabel.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tree_sublabel--font-weight\": {\n        \"name\": \"navigationTree.sublabel.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tree_sublabel--text-transform\": {\n        \"name\": \"navigationTree.sublabel.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tree_trigger-icon--background-color--active\": {\n        \"name\": \"navigationTree.triggerIcon.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-navigation-tree_trigger-icon--background-color--hover\": {\n        \"name\": \"navigationTree.triggerIcon.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-navigation-tree_trigger-icon--background-color-alpha--active\": {\n        \"name\": \"navigationTree.triggerIcon.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tree_trigger-icon--background-color-alpha--hover\": {\n        \"name\": \"navigationTree.triggerIcon.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-navigation-tree_trigger-icon--color\": {\n        \"name\": \"navigationTree.triggerIcon.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-tree_trigger-icon--color--active\": {\n        \"name\": \"navigationTree.triggerIcon.color.active\",\n        \"derived\": \"--now-navigation-tree_trigger-icon--color\"\n    },\n    \"--now-navigation-tree_trigger-icon--color--hover\": {\n        \"name\": \"navigationTree.triggerIcon.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-navigation-tree--background-color\": {\n        \"name\": \"navigationTree.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tree--background-color--hover\": {\n        \"name\": \"navigationTree.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-0\"\n    },\n    \"--now-navigation-tree--background-color--selected\": {\n        \"name\": \"navigationTree.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-0\"\n    },\n    \"--now-navigation-tree--background-color--selected-child\": {\n        \"name\": \"navigationTree.backgroundColor.selectedChild\",\n        \"derived\": \"--now-color--neutral-9\"\n    },\n    \"--now-navigation-tree--background-color-alpha\": {\n        \"name\": \"navigationTree.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tree--background-color-alpha--hover\": {\n        \"name\": \"navigationTree.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tree--background-color-alpha--selected\": {\n        \"name\": \"navigationTree.backgroundColorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tree--background-color-alpha--selected-child\": {\n        \"name\": \"navigationTree.backgroundColorAlpha.selectedChild\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-navigation-tree--font-family\": {\n        \"name\": \"navigationTree.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tree--font-style\": {\n        \"name\": \"navigationTree.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tree--font-weight\": {\n        \"name\": \"navigationTree.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tree--opacity--disabled\": {\n        \"name\": \"navigationTree.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tree--selection--background-color--selected\": {\n        \"name\": \"navigationTree.selection.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tree--selection--background-color--selected-child\": {\n        \"name\": \"navigationTree.selection.backgroundColor.selectedChild\",\n        \"derived\": \"--now-navigation-tree--selection--background-color--selected\"\n    },\n    \"--now-navigation-tree--text-transform\": {\n        \"name\": \"navigationTree.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-view-control_action_icon--primary--color\": {\n        \"name\": \"viewControl.action.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-view-control_action_icon--primary--color--active\": {\n        \"name\": \"viewControl.action.icon.primary.color.active\",\n        \"derived\": \"--now-view-control_action_icon--primary--color\"\n    },\n    \"--now-view-control_action_icon--primary--color--hover\": {\n        \"name\": \"viewControl.action.icon.primary.color.hover\",\n        \"derived\": \"--now-view-control_action_icon--primary--color\"\n    },\n    \"--now-view-control_action_icon--secondary--color\": {\n        \"name\": \"viewControl.action.icon.secondary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_action_icon--secondary--color--active\": {\n        \"name\": \"viewControl.action.icon.secondary.color.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_action_icon--secondary--color--hover\": {\n        \"name\": \"viewControl.action.icon.secondary.color.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_action_icon--tertiary--color\": {\n        \"name\": \"viewControl.action.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control_action_icon--tertiary--color--active\": {\n        \"name\": \"viewControl.action.icon.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_action_icon--tertiary--color--hover\": {\n        \"name\": \"viewControl.action.icon.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_action_label--bare_primary--color\": {\n        \"name\": \"viewControl.action.label.bare.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_action_label--bare_primary--color--active\": {\n        \"name\": \"viewControl.action.label.bare.primary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_action_label--bare_primary--color--hover\": {\n        \"name\": \"viewControl.action.label.bare.primary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_action_trigger-icon--bare_primary--color\": {\n        \"name\": \"viewControl.action.triggerIcon.bare.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_action_trigger-icon--bare_primary--color--active\": {\n        \"name\": \"viewControl.action.triggerIcon.bare.primary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_action_trigger-icon--bare_primary--color--hover\": {\n        \"name\": \"viewControl.action.triggerIcon.bare.primary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_action--bare_primary--background-color--active\": {\n        \"name\": \"viewControl.action.bare.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control_action--bare_primary--background-color--hover\": {\n        \"name\": \"viewControl.action.bare.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control_action--bare_primary--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.bare.primary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--bare--background-color-alpha--active\"\n    },\n    \"--now-view-control_action--bare_primary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.bare.primary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--bare--background-color-alpha--hover\"\n    },\n    \"--now-view-control_action--bare_primary--border-color--active\": {\n        \"name\": \"viewControl.action.bare.primary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_action--bare_primary--border-color--hover\": {\n        \"name\": \"viewControl.action.bare.primary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_action--bare_primary--border-color-alpha\": {\n        \"name\": \"viewControl.action.bare.primary.borderColorAlpha\",\n        \"derived\": \"--now-view-control_action--bare--border-color-alpha\"\n    },\n    \"--now-view-control_action--bare_primary--border-color-alpha--active\": {\n        \"name\": \"viewControl.action.bare.primary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--bare_primary--border-color-alpha\"\n    },\n    \"--now-view-control_action--bare_primary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.action.bare.primary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--bare_primary--border-color-alpha\"\n    },\n    \"--now-view-control_action--bare_primary--border-radius\": {\n        \"name\": \"viewControl.action.bare.primary.borderRadius\",\n        \"derived\": \"--now-view-control_action--border-radius\"\n    },\n    \"--now-view-control_action--bare_primary--border-width\": {\n        \"name\": \"viewControl.action.bare.primary.borderWidth\",\n        \"derived\": \"--now-view-control_action--border-width\"\n    },\n    \"--now-view-control_action--bare_primary--font-family\": {\n        \"name\": \"viewControl.action.bare.primary.fontFamily\",\n        \"derived\": \"--now-view-control_action--font-family\"\n    },\n    \"--now-view-control_action--bare_primary--font-style\": {\n        \"name\": \"viewControl.action.bare.primary.fontStyle\",\n        \"derived\": \"--now-view-control_action--font-style\"\n    },\n    \"--now-view-control_action--bare_primary--font-weight\": {\n        \"name\": \"viewControl.action.bare.primary.fontWeight\",\n        \"derived\": \"--now-view-control_action--font-weight\"\n    },\n    \"--now-view-control_action--bare_primary--text-transform\": {\n        \"name\": \"viewControl.action.bare.primary.textTransform\",\n        \"derived\": \"--now-view-control_action--text-transform\"\n    },\n    \"--now-view-control_action--bare--background-color-alpha\": {\n        \"name\": \"viewControl.action.bare.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--bare--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.bare.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--bare--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.bare.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-view-control_action--bare--border-color-alpha\": {\n        \"name\": \"viewControl.action.bare.borderColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--bare--border-radius\": {\n        \"name\": \"viewControl.action.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-view-control_action--bare--border-width\": {\n        \"name\": \"viewControl.action.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-view-control_action--border-radius\": {\n        \"name\": \"viewControl.action.borderRadius\",\n        \"derived\": \"--now-view-control--border-radius\"\n    },\n    \"--now-view-control_action--border-width\": {\n        \"name\": \"viewControl.action.borderWidth\",\n        \"derived\": \"--now-view-control--border-width\"\n    },\n    \"--now-view-control_action--contained--border-radius\": {\n        \"name\": \"viewControl.action.contained.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-view-control_action--contained--border-width\": {\n        \"name\": \"viewControl.action.contained.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-view-control_action--font-family\": {\n        \"name\": \"viewControl.action.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control_action--font-style\": {\n        \"name\": \"viewControl.action.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control_action--font-weight\": {\n        \"name\": \"viewControl.action.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control_action--primary--background-color\": {\n        \"name\": \"viewControl.action.primary.backgroundColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_action--primary--background-color--active\": {\n        \"name\": \"viewControl.action.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_action--primary--background-color--hover\": {\n        \"name\": \"viewControl.action.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_action--primary--background-color-alpha\": {\n        \"name\": \"viewControl.action.primary.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_action--primary--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.primary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--primary--background-color-alpha\"\n    },\n    \"--now-view-control_action--primary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.primary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--primary--background-color-alpha\"\n    },\n    \"--now-view-control_action--primary--border-color\": {\n        \"name\": \"viewControl.action.primary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_action--primary--border-color--active\": {\n        \"name\": \"viewControl.action.primary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_action--primary--border-color--hover\": {\n        \"name\": \"viewControl.action.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_action--primary--border-color-alpha\": {\n        \"name\": \"viewControl.action.primary.borderColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--primary--border-color-alpha--active\": {\n        \"name\": \"viewControl.action.primary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--primary--border-color-alpha\"\n    },\n    \"--now-view-control_action--primary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.action.primary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--primary--border-color-alpha\"\n    },\n    \"--now-view-control_action--primary--border-radius\": {\n        \"name\": \"viewControl.action.primary.borderRadius\",\n        \"derived\": \"--now-view-control_action--contained--border-radius\"\n    },\n    \"--now-view-control_action--primary--border-width\": {\n        \"name\": \"viewControl.action.primary.borderWidth\",\n        \"derived\": \"--now-view-control_action--contained--border-width\"\n    },\n    \"--now-view-control_action--primary--opacity--disabled\": {\n        \"name\": \"viewControl.action.primary.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--secondary--background-color\": {\n        \"name\": \"viewControl.action.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-view-control_action--secondary--background-color--active\": {\n        \"name\": \"viewControl.action.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-view-control_action--secondary--background-color--hover\": {\n        \"name\": \"viewControl.action.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-view-control_action--secondary--background-color-alpha\": {\n        \"name\": \"viewControl.action.secondary.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_action--secondary--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.secondary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--secondary--background-color-alpha\"\n    },\n    \"--now-view-control_action--secondary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.secondary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--secondary--background-color-alpha\"\n    },\n    \"--now-view-control_action--secondary--border-color\": {\n        \"name\": \"viewControl.action.secondary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_action--secondary--border-color--active\": {\n        \"name\": \"viewControl.action.secondary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_action--secondary--border-color--hover\": {\n        \"name\": \"viewControl.action.secondary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_action--secondary--border-color-alpha\": {\n        \"name\": \"viewControl.action.secondary.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_action--secondary--border-color-alpha--active\": {\n        \"name\": \"viewControl.action.secondary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_action--secondary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.action.secondary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_action--secondary--border-radius\": {\n        \"name\": \"viewControl.action.secondary.borderRadius\",\n        \"derived\": \"--now-view-control_action--contained--border-radius\"\n    },\n    \"--now-view-control_action--secondary--border-width\": {\n        \"name\": \"viewControl.action.secondary.borderWidth\",\n        \"derived\": \"--now-view-control_action--contained--border-width\"\n    },\n    \"--now-view-control_action--secondary--opacity--disabled\": {\n        \"name\": \"viewControl.action.secondary.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--tertiary--background-color\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-view-control_action--tertiary--background-color--active\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColor.active\",\n        \"derived\": \"--now-view-control_action--tertiary--background-color\"\n    },\n    \"--now-view-control_action--tertiary--background-color--hover\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColor.hover\",\n        \"derived\": \"--now-view-control_action--tertiary--background-color\"\n    },\n    \"--now-view-control_action--tertiary--background-color-alpha\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--tertiary--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--tertiary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-view-control_action--tertiary--border-color\": {\n        \"name\": \"viewControl.action.tertiary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-view-control_action--tertiary--border-color--active\": {\n        \"name\": \"viewControl.action.tertiary.borderColor.active\",\n        \"derived\": \"--now-color_border--secondary-actionable\"\n    },\n    \"--now-view-control_action--tertiary--border-color--hover\": {\n        \"name\": \"viewControl.action.tertiary.borderColor.hover\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-view-control_action--tertiary--border-color-alpha\": {\n        \"name\": \"viewControl.action.tertiary.borderColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--tertiary--border-color-alpha--active\": {\n        \"name\": \"viewControl.action.tertiary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--tertiary--border-color-alpha\"\n    },\n    \"--now-view-control_action--tertiary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.action.tertiary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--tertiary--border-color-alpha\"\n    },\n    \"--now-view-control_action--tertiary--border-radius\": {\n        \"name\": \"viewControl.action.tertiary.borderRadius\",\n        \"derived\": \"--now-view-control_action--bare--border-radius\"\n    },\n    \"--now-view-control_action--tertiary--border-width\": {\n        \"name\": \"viewControl.action.tertiary.borderWidth\",\n        \"derived\": \"--now-view-control_action--bare--border-width\"\n    },\n    \"--now-view-control_action--tertiary--opacity--disabled\": {\n        \"name\": \"viewControl.action.tertiary.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--text-transform\": {\n        \"name\": \"viewControl.action.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-view-control_header--font-family\": {\n        \"name\": \"viewControl.header.fontFamily\",\n        \"derived\": \"--now-display-type--header-primary--font-family\"\n    },\n    \"--now-view-control_header--font-style\": {\n        \"name\": \"viewControl.header.fontStyle\",\n        \"derived\": \"--now-display-type--header-primary--font-style\"\n    },\n    \"--now-view-control_header--font-weight\": {\n        \"name\": \"viewControl.header.fontWeight\",\n        \"derived\": \"--now-display-type--header-primary--font-weight\"\n    },\n    \"--now-view-control_header--primary--color\": {\n        \"name\": \"viewControl.header.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_header--secondary--color\": {\n        \"name\": \"viewControl.header.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_header--tertiary--color\": {\n        \"name\": \"viewControl.header.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control_header--text-transform\": {\n        \"name\": \"viewControl.header.textTransform\",\n        \"derived\": \"--now-display-type--header-primary--text-transform\"\n    },\n    \"--now-view-control_item_label--primary--color\": {\n        \"name\": \"viewControl.item.label.primary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_item_label--primary--color--active\": {\n        \"name\": \"viewControl.item.label.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-view-control_item_label--primary--color--hover\": {\n        \"name\": \"viewControl.item.label.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-view-control_item_label--primary--color--selected\": {\n        \"name\": \"viewControl.item.label.primary.color.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-view-control_item_label--primary--color--selected_active\": {\n        \"name\": \"viewControl.item.label.primary.color.selected.active\",\n        \"derived\": \"--now-view-control_item_label--primary--color--selected\"\n    },\n    \"--now-view-control_item_label--primary--color--selected_hover\": {\n        \"name\": \"viewControl.item.label.primary.color.selected.hover\",\n        \"derived\": \"--now-view-control_item_label--primary--color--selected\"\n    },\n    \"--now-view-control_item_label--primary--font-family\": {\n        \"name\": \"viewControl.item.label.primary.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control_item_label--primary--font-style\": {\n        \"name\": \"viewControl.item.label.primary.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control_item_label--primary--font-style--selected\": {\n        \"name\": \"viewControl.item.label.primary.fontStyle.selected\",\n        \"derived\": \"--now-view-control_item_label--primary--font-style\"\n    },\n    \"--now-view-control_item_label--primary--font-weight\": {\n        \"name\": \"viewControl.item.label.primary.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control_item_label--primary--font-weight--selected\": {\n        \"name\": \"viewControl.item.label.primary.fontWeight.selected\",\n        \"initial\": \"bold\"\n    },\n    \"--now-view-control_item_label--primary--text-transform\": {\n        \"name\": \"viewControl.item.label.primary.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-view-control_item_label--primary--text-transform--selected\": {\n        \"name\": \"viewControl.item.label.primary.textTransform.selected\",\n        \"derived\": \"--now-view-control_item_label--primary--text-transform\"\n    },\n    \"--now-view-control_item_label--secondary--color\": {\n        \"name\": \"viewControl.item.label.secondary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_item_label--secondary--color--active\": {\n        \"name\": \"viewControl.item.label.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_item_label--secondary--color--hover\": {\n        \"name\": \"viewControl.item.label.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_item_label--secondary--color--selected\": {\n        \"name\": \"viewControl.item.label.secondary.color.selected\",\n        \"derived\": \"--now-view-control_item_label--secondary--color\"\n    },\n    \"--now-view-control_item_label--secondary--color--selected_active\": {\n        \"name\": \"viewControl.item.label.secondary.color.selected.active\",\n        \"derived\": \"--now-view-control_item_label--secondary--color--active\"\n    },\n    \"--now-view-control_item_label--secondary--color--selected_hover\": {\n        \"name\": \"viewControl.item.label.secondary.color.selected.hover\",\n        \"derived\": \"--now-view-control_item_label--secondary--color--hover\"\n    },\n    \"--now-view-control_item_label--secondary--font-family\": {\n        \"name\": \"viewControl.item.label.secondary.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control_item_label--secondary--font-style\": {\n        \"name\": \"viewControl.item.label.secondary.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control_item_label--secondary--font-style--selected\": {\n        \"name\": \"viewControl.item.label.secondary.fontStyle.selected\",\n        \"derived\": \"--now-view-control_item_label--secondary--font-style\"\n    },\n    \"--now-view-control_item_label--secondary--font-weight\": {\n        \"name\": \"viewControl.item.label.secondary.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control_item_label--secondary--font-weight--selected\": {\n        \"name\": \"viewControl.item.label.secondary.fontWeight.selected\",\n        \"initial\": \"bold\"\n    },\n    \"--now-view-control_item_label--secondary--text-transform\": {\n        \"name\": \"viewControl.item.label.secondary.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-view-control_item_label--secondary--text-transform--selected\": {\n        \"name\": \"viewControl.item.label.secondary.textTransform.selected\",\n        \"derived\": \"--now-view-control_item_label--secondary--text-transform\"\n    },\n    \"--now-view-control_item--bare--border-radius\": {\n        \"name\": \"viewControl.item.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-view-control_item--bare--border-width\": {\n        \"name\": \"viewControl.item.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-view-control_item--border-radius\": {\n        \"name\": \"viewControl.item.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-view-control_item--border-width\": {\n        \"name\": \"viewControl.item.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-view-control_item--primary--background-color\": {\n        \"name\": \"viewControl.item.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-view-control_item--primary--background-color--active\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_item--primary--background-color--focus\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.focus\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_item--primary--background-color--hover\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_item--primary--background-color--selected\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_item--primary--background-color--selected_active\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.selected.active\",\n        \"derived\": \"--now-view-control_item--primary--background-color--selected\"\n    },\n    \"--now-view-control_item--primary--background-color--selected_hover\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.selected.hover\",\n        \"derived\": \"--now-view-control_item--primary--background-color--selected\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--active\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.active\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--focus\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.focus\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.hover\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--selected\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--selected_active\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.selected.active\",\n        \"derived\": \"--now-view-control_item--primary--background-color-alpha--selected\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--selected_hover\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.selected.hover\",\n        \"derived\": \"--now-view-control_item--primary--background-color-alpha--selected\"\n    },\n    \"--now-view-control_item--primary--border-color\": {\n        \"name\": \"viewControl.item.primary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_item--primary--border-color--active\": {\n        \"name\": \"viewControl.item.primary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_item--primary--border-color--focus\": {\n        \"name\": \"viewControl.item.primary.borderColor.focus\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_item--primary--border-color--hover\": {\n        \"name\": \"viewControl.item.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_item--primary--border-color--selected\": {\n        \"name\": \"viewControl.item.primary.borderColor.selected\",\n        \"derived\": \"--now-view-control_item--primary--border-color\"\n    },\n    \"--now-view-control_item--primary--border-color--selected_active\": {\n        \"name\": \"viewControl.item.primary.borderColor.selected.active\",\n        \"derived\": \"--now-view-control_item--primary--border-color--selected\"\n    },\n    \"--now-view-control_item--primary--border-color--selected_hover\": {\n        \"name\": \"viewControl.item.primary.borderColor.selected.hover\",\n        \"derived\": \"--now-view-control_item--primary--border-color--selected\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--active\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--focus\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.focus\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--selected\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.selected\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--selected_active\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.selected.active\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--selected_hover\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.selected.hover\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-radius\": {\n        \"name\": \"viewControl.item.primary.borderRadius\",\n        \"derived\": \"--now-view-control_item--border-radius\"\n    },\n    \"--now-view-control_item--primary--border-radius--selected\": {\n        \"name\": \"viewControl.item.primary.borderRadius.selected\",\n        \"derived\": \"--now-view-control_item--border-radius\"\n    },\n    \"--now-view-control_item--primary--border-width\": {\n        \"name\": \"viewControl.item.primary.borderWidth\",\n        \"derived\": \"--now-view-control--border-width\"\n    },\n    \"--now-view-control_item--primary--border-width--active\": {\n        \"name\": \"viewControl.item.primary.borderWidth.active\",\n        \"derived\": \"--now-view-control_item--primary--border-width\"\n    },\n    \"--now-view-control_item--primary--border-width--focus\": {\n        \"name\": \"viewControl.item.primary.borderWidth.focus\",\n        \"derived\": \"--now-view-control_item--primary--border-width\"\n    },\n    \"--now-view-control_item--primary--border-width--hover\": {\n        \"name\": \"viewControl.item.primary.borderWidth.hover\",\n        \"derived\": \"--now-view-control_item--primary--border-width\"\n    },\n    \"--now-view-control_item--primary--border-width--selected\": {\n        \"name\": \"viewControl.item.primary.borderWidth.selected\",\n        \"derived\": \"--now-view-control_item--primary--border-width\"\n    },\n    \"--now-view-control_item--secondary--background-color\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-view-control_item--secondary--background-color--active\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_item--secondary--background-color--focus\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.focus\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-view-control_item--secondary--background-color--hover\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_item--secondary--background-color--selected\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.selected\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-view-control_item--secondary--background-color--selected_active\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.selected.active\",\n        \"derived\": \"--now-view-control_item--secondary--background-color--selected\"\n    },\n    \"--now-view-control_item--secondary--background-color--selected_hover\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.selected.hover\",\n        \"derived\": \"--now-view-control_item--secondary--background-color--selected\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--active\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--focus\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.focus\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--selected\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--selected_active\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.selected.active\",\n        \"derived\": \"--now-view-control_item--secondary--background-color-alpha--selected\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--selected_hover\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.selected.hover\",\n        \"derived\": \"--now-view-control_item--secondary--background-color-alpha--selected\"\n    },\n    \"--now-view-control_item--secondary--border-color\": {\n        \"name\": \"viewControl.item.secondary.borderColor\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_item--secondary--border-color--active\": {\n        \"name\": \"viewControl.item.secondary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_item--secondary--border-color--focus\": {\n        \"name\": \"viewControl.item.secondary.borderColor.focus\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_item--secondary--border-color--hover\": {\n        \"name\": \"viewControl.item.secondary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_item--secondary--border-color--selected\": {\n        \"name\": \"viewControl.item.secondary.borderColor.selected\",\n        \"derived\": \"--now-view-control_item--secondary--border-color\"\n    },\n    \"--now-view-control_item--secondary--border-color--selected_active\": {\n        \"name\": \"viewControl.item.secondary.borderColor.selected.active\",\n        \"derived\": \"--now-view-control_item--secondary--border-color--selected\"\n    },\n    \"--now-view-control_item--secondary--border-color--selected_hover\": {\n        \"name\": \"viewControl.item.secondary.borderColor.selected.hover\",\n        \"derived\": \"--now-view-control_item--secondary--border-color--selected\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha\",\n        \"derived\": \"--now-view-control_action--bare--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--active\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--focus\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.focus\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--selected\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.selected\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--selected_active\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.selected.active\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--selected_hover\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.selected.hover\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-radius\": {\n        \"name\": \"viewControl.item.secondary.borderRadius\",\n        \"derived\": \"--now-view-control_item--border-radius\"\n    },\n    \"--now-view-control_item--secondary--border-radius--selected\": {\n        \"name\": \"viewControl.item.secondary.borderRadius.selected\",\n        \"derived\": \"--now-view-control_item--secondary--border-radius\"\n    },\n    \"--now-view-control_item--secondary--border-width\": {\n        \"name\": \"viewControl.item.secondary.borderWidth\",\n        \"derived\": \"--now-view-control_action--bare--border-width\"\n    },\n    \"--now-view-control_item--secondary--border-width--active\": {\n        \"name\": \"viewControl.item.secondary.borderWidth.active\",\n        \"derived\": \"--now-view-control_item--secondary--border-width\"\n    },\n    \"--now-view-control_item--secondary--border-width--focus\": {\n        \"name\": \"viewControl.item.secondary.borderWidth.focus\",\n        \"derived\": \"--now-view-control_item--secondary--border-width\"\n    },\n    \"--now-view-control_item--secondary--border-width--hover\": {\n        \"name\": \"viewControl.item.secondary.borderWidth.hover\",\n        \"derived\": \"--now-view-control_item--secondary--border-width\"\n    },\n    \"--now-view-control_item--secondary--border-width--selected\": {\n        \"name\": \"viewControl.item.secondary.borderWidth.selected\",\n        \"derived\": \"--now-view-control_item--secondary--border-width\"\n    },\n    \"--now-view-control_label--font-family\": {\n        \"name\": \"viewControl.label.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control_label--font-style\": {\n        \"name\": \"viewControl.label.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control_label--font-weight\": {\n        \"name\": \"viewControl.label.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control_label--primary--color\": {\n        \"name\": \"viewControl.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_label--secondary--color\": {\n        \"name\": \"viewControl.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_label--tertiary--color\": {\n        \"name\": \"viewControl.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control_label--text-transform\": {\n        \"name\": \"viewControl.label.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-view-control_subheader--font-family\": {\n        \"name\": \"viewControl.subheader.fontFamily\",\n        \"derived\": \"--now-display-type--title-primary--font-family\"\n    },\n    \"--now-view-control_subheader--font-style\": {\n        \"name\": \"viewControl.subheader.fontStyle\",\n        \"derived\": \"--now-display-type--title-primary--font-style\"\n    },\n    \"--now-view-control_subheader--font-weight\": {\n        \"name\": \"viewControl.subheader.fontWeight\",\n        \"derived\": \"--now-display-type--title-primary--font-weight\"\n    },\n    \"--now-view-control_subheader--primary--color\": {\n        \"name\": \"viewControl.subheader.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_subheader--secondary--color\": {\n        \"name\": \"viewControl.subheader.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_subheader--tertiary--color\": {\n        \"name\": \"viewControl.subheader.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control_subheader--text-transform\": {\n        \"name\": \"viewControl.subheader.textTransform\",\n        \"derived\": \"--now-display-type--title-primary--text-transform\"\n    },\n    \"--now-view-control--opacity--disabled\": {\n        \"name\": \"viewControl.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control-collapse_divider--primary--color\": {\n        \"name\": \"viewControlCollapse.divider.primary.color\",\n        \"derived\": \"--now-color_divider--primary\"\n    },\n    \"--now-view-control-collapse_divider--primary--width\": {\n        \"name\": \"viewControlCollapse.divider.primary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-view-control-collapse_divider--secondary--color\": {\n        \"name\": \"viewControlCollapse.divider.secondary.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-view-control-collapse_divider--secondary--width\": {\n        \"name\": \"viewControlCollapse.divider.secondary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-view-control-collapse_divider--tertiary--color\": {\n        \"name\": \"viewControlCollapse.divider.tertiary.color\",\n        \"derived\": \"--now-color_divider--tertiary\"\n    },\n    \"--now-view-control-collapse_divider--tertiary--width\": {\n        \"name\": \"viewControlCollapse.divider.tertiary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-view-control-collapse_header_icon--color\": {\n        \"name\": \"viewControlCollapse.header.icon.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_header_icon--color--hover\": {\n        \"name\": \"viewControlCollapse.header.icon.color.hover\",\n        \"derived\": \"--now-view-control-collapse_header_icon--color\"\n    },\n    \"--now-view-control-collapse_header--font-family\": {\n        \"name\": \"viewControlCollapse.header.fontFamily\",\n        \"derived\": \"--now-view-control_header--font-family\"\n    },\n    \"--now-view-control-collapse_header--font-style\": {\n        \"name\": \"viewControlCollapse.header.fontStyle\",\n        \"derived\": \"--now-view-control_header--font-style\"\n    },\n    \"--now-view-control-collapse_header--font-weight\": {\n        \"name\": \"viewControlCollapse.header.fontWeight\",\n        \"derived\": \"--now-view-control_header--font-weight\"\n    },\n    \"--now-view-control-collapse_header--primary--color\": {\n        \"name\": \"viewControlCollapse.header.primary.color\",\n        \"derived\": \"--now-view-control_header--primary--color\"\n    },\n    \"--now-view-control-collapse_header--primary--color--hover\": {\n        \"name\": \"viewControlCollapse.header.primary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_header--secondary--color\": {\n        \"name\": \"viewControlCollapse.header.secondary.color\",\n        \"derived\": \"--now-view-control_header--secondary--color\"\n    },\n    \"--now-view-control-collapse_header--secondary--color--hover\": {\n        \"name\": \"viewControlCollapse.header.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_header--tertiary--color\": {\n        \"name\": \"viewControlCollapse.header.tertiary.color\",\n        \"derived\": \"--now-view-control_header--tertiary--color\"\n    },\n    \"--now-view-control-collapse_header--tertiary--color--hover\": {\n        \"name\": \"viewControlCollapse.header.tertiary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_header--text-transform\": {\n        \"name\": \"viewControlCollapse.header.textTransform\",\n        \"derived\": \"--now-view-control_header--text-transform\"\n    },\n    \"--now-view-control-collapse_label--color\": {\n        \"name\": \"viewControlCollapse.label.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control-collapse_label--color--active\": {\n        \"name\": \"viewControlCollapse.label.color.active\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control-collapse_label--color--hover\": {\n        \"name\": \"viewControlCollapse.label.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_subheader--font-family\": {\n        \"name\": \"viewControlCollapse.subheader.fontFamily\",\n        \"derived\": \"--now-view-control_subheader--font-family\"\n    },\n    \"--now-view-control-collapse_subheader--font-style\": {\n        \"name\": \"viewControlCollapse.subheader.fontStyle\",\n        \"derived\": \"--now-view-control_subheader--font-style\"\n    },\n    \"--now-view-control-collapse_subheader--font-weight\": {\n        \"name\": \"viewControlCollapse.subheader.fontWeight\",\n        \"derived\": \"--now-view-control_subheader--font-weight\"\n    },\n    \"--now-view-control-collapse_subheader--primary--color\": {\n        \"name\": \"viewControlCollapse.subheader.primary.color\",\n        \"derived\": \"--now-view-control_subheader--primary--color\"\n    },\n    \"--now-view-control-collapse_subheader--primary--color--hover\": {\n        \"name\": \"viewControlCollapse.subheader.primary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_subheader--secondary--color\": {\n        \"name\": \"viewControlCollapse.subheader.secondary.color\",\n        \"derived\": \"--now-view-control_subheader--secondary--color\"\n    },\n    \"--now-view-control-collapse_subheader--secondary--color--hover\": {\n        \"name\": \"viewControlCollapse.subheader.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_subheader--tertiary--color\": {\n        \"name\": \"viewControlCollapse.subheader.tertiary.color\",\n        \"derived\": \"--now-view-control_subheader--tertiary--color\"\n    },\n    \"--now-view-control-collapse_subheader--tertiary--color--hover\": {\n        \"name\": \"viewControlCollapse.subheader.tertiary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_subheader--text-transform\": {\n        \"name\": \"viewControlCollapse.subheader.textTransform\",\n        \"derived\": \"--now-view-control_subheader--text-transform\"\n    },\n    \"--now-view-control-collapse_trigger-icon--color\": {\n        \"name\": \"viewControlCollapse.triggerIcon.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control-collapse_trigger-icon--color--hover\": {\n        \"name\": \"viewControlCollapse.triggerIcon.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse--font-family\": {\n        \"name\": \"viewControlCollapse.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control-collapse--font-style\": {\n        \"name\": \"viewControlCollapse.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control-collapse--font-weight\": {\n        \"name\": \"viewControlCollapse.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control-collapse--opacity--disabled\": {\n        \"name\": \"viewControlCollapse.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control-collapse--text-transform\": {\n        \"name\": \"viewControlCollapse.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-window_header_action-icon--primary_focus-ring--color\": {\n        \"name\": \"window.header.actionIcon.primary.focusRing.color\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-window_header_action-icon--primary--background-color--active\": {\n        \"name\": \"window.header.actionIcon.primary.backgroundColor.active\",\n        \"derived\": \"--now-color_chrome--brand-4\"\n    },\n    \"--now-window_header_action-icon--primary--background-color--hover\": {\n        \"name\": \"window.header.actionIcon.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color_chrome--brand-4\"\n    },\n    \"--now-window_header_action-icon--primary--background-color-alpha--active\": {\n        \"name\": \"window.header.actionIcon.primary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-window_header_action-icon--primary--background-color-alpha--hover\": {\n        \"name\": \"window.header.actionIcon.primary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-window_header_action-icon--primary--color\": {\n        \"name\": \"window.header.actionIcon.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-window_header_action-icon--primary--color--active\": {\n        \"name\": \"window.header.actionIcon.primary.color.active\",\n        \"derived\": \"--now-window_header_action-icon--primary--color\"\n    },\n    \"--now-window_header_action-icon--primary--color--hover\": {\n        \"name\": \"window.header.actionIcon.primary.color.hover\",\n        \"derived\": \"--now-window_header_action-icon--primary--color\"\n    },\n    \"--now-window_header_action-icon--secondary_focus-ring--color\": {\n        \"name\": \"window.header.actionIcon.secondary.focusRing.color\",\n        \"derived\": \"--now-color--focus-1\"\n    },\n    \"--now-window_header_action-icon--secondary--background-color--active\": {\n        \"name\": \"window.header.actionIcon.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color_chrome--brand-4\"\n    },\n    \"--now-window_header_action-icon--secondary--background-color--hover\": {\n        \"name\": \"window.header.actionIcon.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color_chrome--brand-4\"\n    },\n    \"--now-window_header_action-icon--secondary--background-color-alpha--active\": {\n        \"name\": \"window.header.actionIcon.secondary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-window_header_action-icon--secondary--background-color-alpha--hover\": {\n        \"name\": \"window.header.actionIcon.secondary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-window_header_action-icon--secondary--color\": {\n        \"name\": \"window.header.actionIcon.secondary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-window_header_action-icon--secondary--color--active\": {\n        \"name\": \"window.header.actionIcon.secondary.color.active\",\n        \"derived\": \"--now-window_header_action-icon--secondary--color\"\n    },\n    \"--now-window_header_action-icon--secondary--color--hover\": {\n        \"name\": \"window.header.actionIcon.secondary.color.hover\",\n        \"derived\": \"--now-window_header_action-icon--secondary--color\"\n    },\n    \"--now-window_header_action-icon--tertiary_focus-ring--color\": {\n        \"name\": \"window.header.actionIcon.tertiary.focusRing.color\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-window_header_action-icon--tertiary--background-color--active\": {\n        \"name\": \"window.header.actionIcon.tertiary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-window_header_action-icon--tertiary--background-color--hover\": {\n        \"name\": \"window.header.actionIcon.tertiary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-window_header_action-icon--tertiary--background-color-alpha--active\": {\n        \"name\": \"window.header.actionIcon.tertiary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-window_header_action-icon--tertiary--background-color-alpha--hover\": {\n        \"name\": \"window.header.actionIcon.tertiary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-window_header_action-icon--tertiary--color\": {\n        \"name\": \"window.header.actionIcon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-window_header_action-icon--tertiary--color--active\": {\n        \"name\": \"window.header.actionIcon.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-window_header_action-icon--tertiary--color--hover\": {\n        \"name\": \"window.header.actionIcon.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-window_header_icon--primary--color\": {\n        \"name\": \"window.header.icon.primary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-window_header_icon--secondary--color\": {\n        \"name\": \"window.header.icon.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-window_header_icon--tertiary--color\": {\n        \"name\": \"window.header.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-window_header_label--primary--color\": {\n        \"name\": \"window.header.label.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-window_header_label--secondary--color\": {\n        \"name\": \"window.header.label.secondary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-window_header_label--tertiary--color\": {\n        \"name\": \"window.header.label.tertiary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-window_header--font-family\": {\n        \"name\": \"window.header.fontFamily\",\n        \"derived\": \"--now-display-type--header-primary--font-family\"\n    },\n    \"--now-window_header--font-style\": {\n        \"name\": \"window.header.fontStyle\",\n        \"derived\": \"--now-display-type--header-primary--font-style\"\n    },\n    \"--now-window_header--font-weight\": {\n        \"name\": \"window.header.fontWeight\",\n        \"derived\": \"--now-display-type--header-primary--font-weight\"\n    },\n    \"--now-window_header--primary--background-color\": {\n        \"name\": \"window.header.primary.backgroundColor\",\n        \"derived\": \"--now-color_chrome--brand-10\"\n    },\n    \"--now-window_header--secondary--background-color\": {\n        \"name\": \"window.header.secondary.backgroundColor\",\n        \"derived\": \"--now-color_chrome--brand-5\"\n    },\n    \"--now-window_header--tertiary--background-color\": {\n        \"name\": \"window.header.tertiary.backgroundColor\",\n        \"derived\": \"--now-window--background-color\"\n    },\n    \"--now-window_header--text-transform\": {\n        \"name\": \"window.header.textTransform\",\n        \"derived\": \"--now-display-type--header-primary--text-transform\"\n    },\n    \"--now-window_overlay--background-color\": {\n        \"name\": \"window.overlay.backgroundColor\",\n        \"derived\": \"--now-color--neutral-21\"\n    },\n    \"--now-window_overlay--background-color-alpha\": {\n        \"name\": \"window.overlay.backgroundColorAlpha\",\n        \"derived\": \"--now-opacity--mid\"\n    },\n    \"--now-window--primary--background-color\": {\n        \"name\": \"window.primary.backgroundColor\",\n        \"derived\": \"--now-window--background-color\"\n    },\n    \"--now-window--primary--border-color\": {\n        \"name\": \"window.primary.borderColor\",\n        \"derived\": \"--now-window--border-color\"\n    },\n    \"--now-window--secondary--background-color\": {\n        \"name\": \"window.secondary.backgroundColor\",\n        \"derived\": \"--now-window--background-color\"\n    },\n    \"--now-window--secondary--border-color\": {\n        \"name\": \"window.secondary.borderColor\",\n        \"derived\": \"--now-window--border-color\"\n    },\n    \"--now-window--tertiary--background-color\": {\n        \"name\": \"window.tertiary.backgroundColor\",\n        \"derived\": \"--now-window--background-color\"\n    },\n    \"--now-window--tertiary--border-color\": {\n        \"name\": \"window.tertiary.borderColor\",\n        \"derived\": \"--now-window--border-color\"\n    }\n}","/* eslint-disable no-console */\nimport {UXF_THEME_UPDATED} from '@devsnc/library-uxf/src/factory/constants.js';\nimport baseHooks from './hooks';\nimport {get, set, has} from 'lodash';\nimport systemTokens from './hooks/systemTokens';\n\nconst INFO_DENSITY = {\n\tKEY: 'infodensity',\n\tCOMPACT: 'compact',\n\tDEFAULT: 'default',\n\tPROP: 'userPreferenceInfoDensity',\n};\nlet stashedProcessedValues = {};\nlet themeData = {};\nlet subscribers = new Map();\nconst cachedValues = new Map();\n\nfunction getCSSVariableNamesFromBase(base) {\n\tconst matches = Object.keys(themeData).filter(\n\t\t(key) => key.indexOf(base) === 0,\n\t);\n\treturn matches;\n}\nfunction extractKeys(obj) {\n\tconst keySet = new Set();\n\tfor (const key in obj) {\n\t\tkeySet.add(key);\n\t}\n\treturn keySet;\n}\nfunction setGlobalThemeData() {\n\tif (window?.ux_globals?.theme?.theme) {\n\t\tconst allThemeData = window.ux_globals.theme.theme;\n\t\tconst tokensToRemove = extractKeys(systemTokens);\n\t\tthemeData = {};\n\t\tfor (const key in allThemeData) {\n\t\t\tif (!tokensToRemove.has(key)) {\n\t\t\t\tthemeData[key] = allThemeData[key];\n\t\t\t}\n\t\t}\n\n\t\t// if it is undefined, assume we are in local dev and should fake a theme with sass vars on the page\n\t} else if (window.ux_globals === undefined) {\n\t\twindow.ux_globals = {theme: {theme: {}, parsedFromStyleSheets: true}};\n\t\t//this does not return list of variable names in :root\n\t\tconst styles = window.getComputedStyle(document.body);\n\t\t//need complete list to support css variable groups feature --now-colors*\n\t\tconst [varNames, overrides] = getCSSVariablesFromStyleSheet();\n\t\tfor (const name of varNames) {\n\t\t\twindow.ux_globals.theme.theme[name] =\n\t\t\t\toverrides[name] ?? styles.getPropertyValue(name).trim();\n\t\t}\n\t\tthemeData = window.ux_globals.theme.theme;\n\n\t\t// else we must be on an instance but there is no theme; fall back to defaults in the hooks.\n\t} else {\n\t\tthemeData = {};\n\t}\n}\nsetGlobalThemeData();\n\nfunction checkNextPath(hookName, unresolved, paths, nextPath, hasBeenResolved) {\n\t// if the path leads us to something already in our chain,\n\t// we have a problem\n\tif (paths.has(nextPath)) {\n\t\tconst joined = [hookName, ...paths].join(', ');\n\n\t\tconsole.error(`-[${joined}] forms a circular reference`);\n\t\treturn true;\n\t}\n\n\t// Make sure that the path exists somewhere\n\treturn !(hasBeenResolved || has(unresolved, nextPath));\n}\n\n//TODO: consolidate with @devsnc/analyser-theme, import not intended for production\nfunction isValidPixelString(value) {\n\treturn /^[0-9]+px$/.test(value) || value === '0';\n}\n//TODO: consolidate with @devsnc/analyser-theme, import not intended for production\nfunction isValidPercentString(value) {\n\treturn /^[0-9]{1,3}%$/.test(value);\n}\n\nfunction logFailure(name) {\n\tconsole.warn(`-${name} failed to resolve`);\n}\n\nfunction resolveDerivedHooks(hookName, hook, resolved, unresolved, paths) {\n\tconst derivedPath = get(hook, 'derived');\n\tconst hasBeenResolved = has(resolved, derivedPath);\n\tconst failure = checkNextPath(\n\t\thookName,\n\t\tunresolved,\n\t\tpaths,\n\t\tderivedPath,\n\t\thasBeenResolved,\n\t);\n\n\tif (failure) {\n\t\tlogFailure(hookName);\n\t\tsetVariable(resolved, hookName, hook, null);\n\t\treturn null;\n\t}\n\n\tpaths.add(hookName);\n\n\t// if we already know this derived, set it,\n\t// otherwise recursively walk the chain\n\tconst fbValue = hasBeenResolved\n\t\t? get(resolved, derivedPath)\n\t\t: resolveRemainingHooks(\n\t\t\t\tderivedPath,\n\t\t\t\tunresolved[derivedPath],\n\t\t\t\tresolved,\n\t\t\t\tunresolved,\n\t\t\t\tpaths,\n\t\t\t);\n\n\tif (!fbValue) {\n\t\tlogFailure(hookName);\n\t}\n\n\tpaths.delete(hookName);\n\tsetVariable(resolved, hookName, hook, fbValue);\n\treturn fbValue;\n}\n\nfunction createRemSizeObj(value) {\n\tconst rem = parseFloat(value);\n\tconst rootFontSize = parseInt(\n\t\twindow.getComputedStyle(document.documentElement).fontSize,\n\t\t10,\n\t);\n\treturn {\n\t\trem,\n\t\tpx: rem * rootFontSize,\n\t};\n}\n\nfunction createPxSizeObj(value) {\n\tconst px = parseFloat(value);\n\tconst rootFontSize = parseInt(\n\t\twindow.getComputedStyle(document.documentElement).fontSize,\n\t\t10,\n\t);\n\tif (rootFontSize <= 0) {\n\t\treturn {\n\t\t\tpx,\n\t\t\trem: px,\n\t\t};\n\t}\n\treturn {\n\t\tpx,\n\t\trem: px / rootFontSize,\n\t};\n}\n\nfunction isValidRemString(value) {\n\treturn /^[0-9]*.[0-9]*rem$/.test(value) || value === '0';\n}\n\nfunction isPxSize(value) {\n\treturn isValidPixelString(value) || isValidPercentString(value);\n}\nfunction isRemSize(value) {\n\treturn isValidRemString(value);\n}\n\nfunction processValue(value) {\n\tif (stashedProcessedValues[value]) {\n\t\treturn stashedProcessedValues[value];\n\t}\n\n\tconst schema = isValidRgbString(value)\n\t\t? 'color'\n\t\t: isPxSize(value)\n\t\t\t? 'pxSize'\n\t\t\t: isRemSize(value)\n\t\t\t\t? 'remSize'\n\t\t\t\t: false;\n\n\tif (!schema) {\n\t\treturn value;\n\t}\n\n\tif (schema === 'color') {\n\t\tconst c = createColorObj(value);\n\t\tstashedProcessedValues[value] = c;\n\t\treturn c;\n\t}\n\n\tif (schema === 'pxSize') {\n\t\tconst s = createPxSizeObj(value);\n\t\tstashedProcessedValues[value] = s;\n\t\treturn s;\n\t}\n\n\tif (schema === 'remSize') {\n\t\tconst s = createRemSizeObj(value);\n\t\tstashedProcessedValues[value] = s;\n\t\treturn s;\n\t}\n\n\treturn value;\n}\nfunction resolveRemainingHooks(\n\thookName,\n\thook,\n\tresolved,\n\tunresolved,\n\tpaths = new Set(),\n) {\n\t// hook is defined in the application theme\n\tif (hookName && themeData[hookName]) {\n\t\tconst value = resolveCSSVariable(hookName);\n\t\tsetVariable(resolved, hookName, hook, value);\n\t\treturn value;\n\t}\n\t// hook has a value\n\tif (has(hook, 'initial')) {\n\t\tconst value = processValue(hook.initial);\n\t\tsetVariable(resolved, hookName, hook, value);\n\t\treturn value;\n\t}\n\treturn resolveDerivedHooks(hookName, hook, resolved, unresolved, paths);\n}\nfunction isCSSVariable(name) {\n\treturn name.startsWith('--');\n}\nfunction processItems(items, hooks) {\n\tlet entries;\n\tlet result = [];\n\tfor (const item of items) {\n\t\tif (item.endsWith('*')) {\n\t\t\tconst base = item.slice(0, item.length - 1);\n\t\t\tif (isCSSVariable(base)) {\n\t\t\t\tconst matches = getCSSVariableNamesFromBase(base);\n\t\t\t\tresult = [...result, ...matches];\n\t\t\t} else {\n\t\t\t\tentries = entries || Object.entries(hooks);\n\t\t\t\tfor (const [h, v] of entries) {\n\t\t\t\t\tif (v.name.indexOf(base) === 0) {\n\t\t\t\t\t\tresult.push(h);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (item === INFO_DENSITY.KEY) {\n\t\t\tresult.push(item);\n\t\t} else {\n\t\t\tif (isCSSVariable(item)) {\n\t\t\t\tresult.push(item);\n\t\t\t} else {\n\t\t\t\tentries = entries || Object.entries(hooks);\n\t\t\t\tfor (const [h, v] of entries) {\n\t\t\t\t\tif (v.name === item) {\n\t\t\t\t\t\tresult.push(h);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n}\nfunction handler() {\n\tcachedValues.clear();\n\tsetGlobalThemeData();\n\tsubscribers.forEach(function (value, element) {\n\t\tif (localStorage.getItem('GLOBAL') !== null) {\n\t\t\tlocalStorage.removeItem('GLOBAL');\n\t\t}\n\t\tif (localStorage.getItem(element.tagName) !== null) {\n\t\t\tlocalStorage.removeItem(element.tagName);\n\t\t}\n\t\tconst {config, fn} = value;\n\t\tconst values = getValues(element, config);\n\t\tfn(element.localName, values);\n\t});\n}\nfunction safeJsonParse(jsonString, fallback = null) {\n\tif (!jsonString || typeof jsonString !== 'string') {\n\t\treturn fallback;\n\t}\n\n\ttry {\n\t\treturn JSON.parse(jsonString);\n\t} catch (e) {\n\t\treturn fallback;\n\t}\n}\n\nfunction setVariable(resolved, hookName, {name}, value) {\n\tconst val = value ? JSON.stringify(value) : value;\n\tconst parsedValue = safeJsonParse(val, value);\n\tset(resolved, hookName, parsedValue);\n\tset(resolved, name, parsedValue);\n}\n\nfunction getCSSVariablesFromStyleSheet() {\n\tconst headacheVals = new Set(['inherit', 'initial', 'unset']);\n\tconst troublesomeDefs = {};\n\tconst stylesheets = Array.from(document.styleSheets).filter(\n\t\t(sheet) => sheet.href === null,\n\t);\n\tconst root = stylesheets.reduce(\n\t\t(acc, sheet) =>\n\t\t\t(acc = [\n\t\t\t\t...acc,\n\t\t\t\t...Array.from(sheet.cssRules).reduce((def, rule) => {\n\t\t\t\t\tif (rule.selectorText !== ':root') {\n\t\t\t\t\t\treturn def;\n\t\t\t\t\t}\n\t\t\t\t\tconst vars = Array.from(rule.style).filter((n) => n.startsWith('--'));\n\n\t\t\t\t\tfor (const v of vars) {\n\t\t\t\t\t\tif (headacheVals.has(rule.style.getPropertyValue(v).trim())) {\n\t\t\t\t\t\t\ttroublesomeDefs[v] = rule.style.getPropertyValue(v).trim();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [...def, ...vars];\n\t\t\t\t}, []),\n\t\t\t]),\n\t\t[],\n\t);\n\treturn [root, troublesomeDefs];\n}\nfunction __donotuse_temporary_isInUIBStage(element) {\n\tif (typeof element.dispatchEvent != 'function') return false;\n\n\tconst uibID = 'sn-uxf-renderer-theme-with-overrides';\n\tconst time = Date.now();\n\tconst str = Math.random().toString(36).substring(2, 15);\n\tconst uniqueEventName = `check_if_uib_stage_${time}_${str}`;\n\tlet isUIBStage = false;\n\tconst fn = (evt) => {\n\t\tconst nodes = evt.composedPath();\n\t\tfor (const n of nodes) {\n\t\t\tif (n.nodeType === 1 && n.getAttribute('id') === uibID) {\n\t\t\t\tisUIBStage = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n\n\tconst e = new CustomEvent(uniqueEventName, {\n\t\tcomposed: true,\n\t\tbubbles: true,\n\t\tcancelable: true,\n\t});\n\tdocument.addEventListener(uniqueEventName, fn, {once: true});\n\telement.dispatchEvent(e);\n\treturn isUIBStage;\n}\n\n//TODO: consolidate with @devsnc/analyser-theme/src/utils/color\nfunction createColorObj(value) {\n\tconst [rs, gs, bs] = value.split(',');\n\tconst r = Number(rs) / 255;\n\tconst g = Number(gs) / 255;\n\tconst b = Number(bs) / 255;\n\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\n\tlet h = 0,\n\t\ts = 0,\n\t\tl = ((max + min) / 2) * 100;\n\n\tif (delta !== 0) {\n\t\ts = l > 50 ? (delta / (2 - max - min)) * 100 : (delta / (max + min)) * 100;\n\n\t\tswitch (max) {\n\t\t\tcase r:\n\t\t\t\th = (g - b) / delta;\n\t\t\t\tbreak;\n\n\t\t\tcase g:\n\t\t\t\th = 2 + (b - r) / delta;\n\t\t\t\tbreak;\n\n\t\t\tcase b:\n\t\t\t\th = 4 + (r - g) / delta;\n\t\t\t\tbreak;\n\t\t}\n\n\t\th = h < 0 ? h * 60 + 360 : h * 60;\n\t}\n\n\th = Math.round(h);\n\ts = Math.round(s);\n\tl = Math.round(l);\n\treturn {\n\t\thsl: `hsl(${h},${s}%,${l}%)`,\n\t\thslValues: `${h},${s}%,${l}%`,\n\t\trgb: `rgb(${rs},${gs},${bs})`,\n\t\trgbValues: `${rs},${gs},${bs}`,\n\t};\n}\n//taken from @devsnc/analyser-theme, import not intended for production\n//TODO: have analyzer-theme import from @servicenow/behavior-theme ?\nfunction isValidRgbString(value) {\n\treturn (\n\t\t/^[0-9]{1,3}[ ]?,[ ]?[0-9]{1,3}[ ]?,[ ]?[0-9]{1,3}$/.test(value) &&\n\t\t!value.split(',').some((v) => parseInt(v) > 255)\n\t);\n}\n\nexport function getValues(element, config = {}) {\n\tif (!element) {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\tconsole.warn('getValues must be called with an HTMLElement');\n\t\t}\n\t\treturn;\n\t}\n\n\tconst themeId = window?.ux_globals?.theme?.themeOptions?.themeId || '';\n\tconst {items} = config;\n\tconst isGlobal = !items?.length;\n\t// Set a key for each component or Global for all the elements which doesnt have any items\n\t// This is to avoid multiple calls to getValues for the same element\n\t// and to cache the values for the element\n\tconst key = isGlobal ? 'GLOBAL' : (element?.tagName ?? 'DOCUMENT');\n\n\t// Check memory cache(fastest)\n\tconst memoryCached = cachedValues.get(key);\n\tif (memoryCached?.themeId === themeId) {\n\t\treturn memoryCached?.data;\n\t}\n\t// Check localStorage\n\tconst localCached = localStorage.getItem(key);\n\tif (localCached) {\n\t\tconst parsed = safeJsonParse(localCached);\n\t\tif (parsed?.themeId === themeId) {\n\t\t\tcachedValues.set(key, parsed);\n\t\t\treturn parsed?.data;\n\t\t}\n\t}\n\n\tconst requestedItems = items?.length\n\t\t? processItems(items, baseHooks)\n\t\t: new Set([...Object.keys(baseHooks), ...Object.keys(themeData)]);\n\n\tconst resolvedHooks = resolveHooks(baseHooks, requestedItems, element);\n\tconst cacheObject = {data: resolvedHooks, themeId};\n\tlocalStorage.setItem(key, JSON.stringify(cacheObject));\n\tcachedValues.set(key, cacheObject);\n\n\treturn resolvedHooks;\n}\n/**\n * Resolves all hooks to values defined in the application theme or to derived\n * if no value or inherited value is defined.\n * @param {Object[]} hooks - Hook definitions\n * @param {Object} themeData - Object containing application theme values\n */\nfunction resolveHooks(hooks, items, element) {\n\tconst resolved = {};\n\t// Then keep iterating over the unresolved list and recursively resolve each entry.\n\tfor (const item of items) {\n\t\tif (has(resolved, item)) continue;\n\n\t\tif (themeData[item]) {\n\t\t\tconst value = resolveCSSVariable(item);\n\t\t\t// We have to do this to avoid circular references\n\t\t\t// in the resolved object.\n\t\t\tconst val = value ? JSON.stringify(value) : value;\n\t\t\tconst parsedValue = safeJsonParse(val, value);\n\t\t\tset(resolved, item, parsedValue);\n\t\t\tif (hooks[item] && hooks[item]?.name) {\n\t\t\t\t// required to fix DEF0479038\n\t\t\t\tif (hooks[item].name === 'color.focusRing.shadow') {\n\t\t\t\t\tset(resolved, 'color.focusRingShadow', value);\n\t\t\t\t} else {\n\t\t\t\t\tset(resolved, hooks[item].name, parsedValue);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (item === INFO_DENSITY.KEY) {\n\t\t\t\tlet themeOptions;\n\t\t\t\tif (\n\t\t\t\t\twindow?.__donotuse_temporary_uib_stage_theme?.themeOptions &&\n\t\t\t\t\t__donotuse_temporary_isInUIBStage(element)\n\t\t\t\t) {\n\t\t\t\t\tthemeOptions =\n\t\t\t\t\t\twindow.__donotuse_temporary_uib_stage_theme.themeOptions;\n\t\t\t\t} else if (window?.ux_globals?.theme?.themeOptions) {\n\t\t\t\t\tthemeOptions = window.ux_globals.theme.themeOptions;\n\t\t\t\t} else {\n\t\t\t\t\tthemeOptions = {};\n\t\t\t\t}\n\t\t\t\tconst mode = themeOptions[INFO_DENSITY.PROP] || INFO_DENSITY.DEFAULT;\n\t\t\t\tset(resolved, item, mode);\n\t\t\t} else if (!hooks[item]) {\n\t\t\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\t\t\tconsole.warn(`${item} does not exist`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresolveRemainingHooks(item, hooks[item], resolved, hooks);\n\t\t\t}\n\t\t}\n\t}\n\treturn resolved;\n}\n\nfunction resolveCSSVariable(cssVariableName, circular = new Set()) {\n\tconst value = themeData[cssVariableName];\n\tif (!value) {\n\t\treturn console.warn(\n\t\t\t`the css variable: ${cssVariableName} does not exist in themeData`,\n\t\t);\n\t}\n\tif (isCSSVariable(value)) {\n\t\tif (circular.has(value)) {\n\t\t\tconst joined = [cssVariableName, ...circular].join(', ');\n\t\t\treturn console.error(`${joined} forms a circular reference`);\n\t\t}\n\t\tcircular.add(value);\n\t\treturn resolveCSSVariable(value, circular);\n\t}\n\n\treturn processValue(value);\n}\n\n//TODO: consolidate with @devsnc/analyser-theme/src/utils/color\nfunction listen() {\n\tdocument.removeEventListener(UXF_THEME_UPDATED, handler);\n\tdocument.addEventListener(UXF_THEME_UPDATED, handler);\n}\n\nexport function subscribe(...args) {\n\tlisten();\n\tlet element, config, fn;\n\tif (args.length === 2) {\n\t\telement = args[0];\n\t\tconfig = {};\n\t\tfn = args[1];\n\t}\n\tif (args.length === 3) {\n\t\telement = args[0];\n\t\tconfig = args[1];\n\t\tfn = args[2];\n\t}\n\n\tif (!config || !fn) {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\tconsole.error(\n\t\t\t\t`subscribe must be called with one of the following: subscribe(function) or subscribe(element, function), or subscribe(element, config, function)`,\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\n\tif (subscribers.has(element)) {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\tconsole.warn(\n\t\t\t\t'Cannot call subscribe on an element with an active subscription, each element should subscribe only once',\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\t/*\n\tThis function seems to be redundant as its getting called twice.\n\tFirst setInitialState gets called, which calls getValues. Then COMPONENT_CONNECTED is triggered\n\twhich calls subscribe, which calls getValues again.What it does it it triggers PRIVATE#THEME_CHANGED and sets the state.\n\tBut the state has already been set with the same values in setInitialState.So this will cause unnecessary re-renders.\n\tFor now just to be safe, i've added a flag where it will not re-render but will still dispatch the event.\n\t*/\n\t//call fn with initial theme values\n\tconst values = getValues(element, config);\n\tfn(element.localName, values, false);\n\n\t// add to the subscribers list to notify of future updates\n\tsubscribers.set(element, {config, fn});\n}\nexport function unsubscribe(element) {\n\tif (subscribers.has(element)) {\n\t\tsubscribers.delete(element);\n\t} else {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\tconsole.warn(\n\t\t\t\t'Cannot call unsubscribe on an element without an active subscription',\n\t\t\t);\n\t\t}\n\t}\n}\n","import {actionTypes} from '@servicenow/ui-core';\nimport {getValues, subscribe, unsubscribe} from './theme';\n\nconst {COMPONENT_CONNECTED, COMPONENT_DISCONNECTED} = actionTypes;\nconst BEHAVIOR_NAME = 'theme';\n\n//higher order function to make host available to callback\nconst wrapper = (host, updateState) => {\n\treturn (name, values, shouldRender = true) => {\n\t\tif (host.localName === name) {\n\t\t\thost.dispatch('PRIVATE#THEME_CHANGED');\n\t\t\tupdateState(() => {\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: `behaviors.${BEHAVIOR_NAME}`,\n\t\t\t\t\tvalue: values,\n\t\t\t\t\tshouldRender: shouldRender,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n};\n\nexport default {\n\tname: BEHAVIOR_NAME,\n\tsetInitialState: ({host, options}) => {\n\t\treturn getValues(host, options);\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: ({updateState, host, action: {payload}}) => {\n\t\t\tconst config = payload.options;\n\t\t\tsubscribe(host, config, wrapper(host, updateState));\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({host}) => {\n\t\t\tunsubscribe(host);\n\t\t},\n\t\t'PRIVATE#THEME_CHANGED': {\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n","export const TOOLTIP_ID = 'behavior-tooltip';\nexport const BEHAVIOR_NAME = 'tooltip';\nexport const TOOLTIP_ADD_TARGET = 'BEHAVIOR_TOOLTIP#ADD_TARGET';\nexport const TOOLTIP_REMOVE_TARGET = 'BEHAVIOR_TOOLTIP#REMOVE_TARGET';\nexport const TOOLTIP_SHOW = 'BEHAVIOR_TOOLTIP#SHOW';\nexport const TOOLTIP_HIDE = 'BEHAVIOR_TOOLTIP#HIDE';\n","/**\n * This deep import is the result of drivers sharing the exports of this file.\n * Removing the deep import will cause the entire tooltip component\n * to be imported in drivers which will fail seismic driver generation.\n *\n * TL;DR removing this deep import will cause downstream failures\n * in driver generation.\n */\nimport {schedule, unschedule} from '@servicenow/now-tooltip/src/scheduler';\nimport {hideTooltip} from './scheduler';\nimport {TOOLTIP_ID} from './constants';\n\n/**\n * Cancels hiding the tooltip if tooltip\n * is opened when triggered.\n * @param {Event}\n */\nconst handleMouseEnter = ({target}) => {\n\tif (!target.opened) return;\n\tunschedule(target.nowId);\n};\n\n/**\n * Schedules hiding the tooltip if tooltip\n * is opened when triggered.\n * @param {Event}\n */\nconst handleMouseLeave = ({target}) => {\n\tif (!target.opened) return;\n\tschedule(target.nowId, () => hideTooltip(target));\n};\n\n/**\n * Returns a singleton tooltip in a shadow root if it exists, and null otherwise.\n * @param {ShadowRoot} root\n */\nexport function getExistingTooltip(root) {\n\treturn root.querySelector(`#${TOOLTIP_ID}`);\n}\n\n/**\n * Creates or returns a singleton tooltip in a shadow root.\n * @param {ShadowRoot} root\n */\nexport function getTooltip(root) {\n\tlet tooltip = getExistingTooltip(root);\n\n\tif (!tooltip) {\n\t\ttooltip = document.createElement('now-tooltip');\n\t\ttooltip.id = TOOLTIP_ID;\n\t\ttooltip.addEventListener('mouseenter', handleMouseEnter);\n\t\ttooltip.addEventListener('mouseleave', handleMouseLeave);\n\t\troot.appendChild(tooltip);\n\t}\n\n\treturn tooltip;\n}\n\n/**\n * Get the tooltip offset from the target element.\n * @param {HTMLElement} target\n */\nexport function getTooltipOffset(target) {\n\tconst defaultOffset = 8;\n\tconst offset = target.dataset.tooltipoffset\n\t\t? target.dataset.tooltipoffset.split(',')\n\t\t: [];\n\tif (offset.length === 1) {\n\t\tconst offsetValue = Number(offset[0]);\n\t\tif (offsetValue >= 0) return offsetValue;\n\t}\n\treturn defaultOffset;\n}\n","/**\n * This deep import is the result of drivers sharing the exports of this file.\n * Removing the deep import will cause the entire tooltip component\n * to be imported in drivers which will fail seismic driver generation.\n *\n * TL;DR removing this deep import will cause downstream failures\n * in driver generation.\n */\nimport {schedule} from '@servicenow/now-tooltip/src/scheduler';\nimport {getShadowRootHost} from '@servicenow/library-enhanced-utils';\nimport {TOOLTIP_ID} from './constants';\nimport {getTooltip, getTooltipOffset} from './get-tooltip';\n\nlet shouldHideTooltip = true;\n\n/**\n * Unsets properties on the tooltip.\n * @param {HTMLElement} tooltip\n */\nconst hideTooltip = (tooltip) => {\n\tif (shouldHideTooltip) {\n\t\ttooltip.opened = false;\n\t\ttooltip.content = '';\n\t\ttooltip.targetRef = null;\n\t}\n};\n\n/**\n * Sets properties on the tooltip\n * @param {HTMLElement} tooltip\n */\nconst showTooltip = (tooltip, target) => {\n\tconst position = target.dataset.tooltipposition\n\t\t? target.dataset.tooltipposition.split(',')\n\t\t: [];\n\tconst content = target.dataset.tooltip;\n\tif (position.length) {\n\t\ttooltip.position = position;\n\t}\n\ttooltip.offset = getTooltipOffset(target);\n\ttooltip.opened = true;\n\ttooltip.content = content;\n\ttooltip.targetRef = target;\n};\n\n/**\n * Schedules the behavior's tooltip to open.\n * @param {Event} event\n */\nconst scheduleTooltipOpen = (event, delay) => {\n\tconst target = event.currentTarget;\n\tconst content = target.dataset.tooltip;\n\tconst ariadescribedby = target.dataset.ariadescribedby;\n\n\tif (content) {\n\t\tconst tooltip = getTooltip(getShadowRootHost(target).shadowRoot);\n\n\t\tif (ariadescribedby !== content) {\n\t\t\ttarget.setAttribute('aria-describedby', TOOLTIP_ID);\n\t\t}\n\n\t\tif (delay === 0) {\n\t\t\tshowTooltip(tooltip, target);\n\t\t} else {\n\t\t\tschedule(tooltip.nowId, () => showTooltip(tooltip, target), delay);\n\t\t}\n\t\tconst tooltipEvent = new CustomEvent('scheduleTooltip', {\n\t\t\tdetail: {\n\t\t\t\topened: true,\n\t\t\t},\n\t\t});\n\n\t\tconst host = getShadowRootHost(target);\n\t\tif (host) {\n\t\t\thost.dispatchEvent(tooltipEvent);\n\t\t}\n\t}\n};\n\n/**\n * Schedules the behavior's tooltip to close.\n * @param {Event} event\n */\nconst scheduleTooltipClose = (event, delay) => {\n\tconst target = event.currentTarget;\n\tif (!target.dataset.tooltip) return;\n\n\tconst host = getShadowRootHost(target);\n\n\tif (!host) return;\n\n\tconst shadowRoot = host.shadowRoot;\n\tconst tooltip = getTooltip(shadowRoot);\n\ttarget.removeAttribute('aria-describedby');\n\tconst hoistedTooltip = document.querySelector('#behavior-tooltip');\n\tif (\n\t\thoistedTooltip &&\n\t\thoistedTooltip.getAttribute('target-for') ===\n\t\t\t`now-tooltip[component-id=\"${tooltip.nowId}\"]`\n\t) {\n\t\tconst tooltipSpan = hoistedTooltip.shadowRoot.querySelector('.now-tooltip');\n\t\ttooltipSpan.addEventListener('mouseenter', () => {\n\t\t\tshouldHideTooltip = false;\n\t\t});\n\t\ttooltipSpan.addEventListener('mouseleave', () => {\n\t\t\tshouldHideTooltip = true;\n\t\t});\n\t}\n\tif (delay === 0) {\n\t\thideTooltip(tooltip);\n\t} else {\n\t\tschedule(tooltip.nowId, () => hideTooltip(tooltip), delay);\n\t}\n\tconst tooltipEvent = new CustomEvent('scheduleTooltip', {\n\t\tdetail: {\n\t\t\topened: false,\n\t\t},\n\t});\n\thost.dispatchEvent(tooltipEvent);\n};\n\nexport {scheduleTooltipOpen, scheduleTooltipClose, hideTooltip};\n","import {scheduleTooltipOpen, scheduleTooltipClose} from './scheduler.js';\nimport {getExistingTooltip, getTooltipOffset} from '../utils/get-tooltip';\nimport {getShadowRootHost} from '@servicenow/library-enhanced-utils';\n\nconst EventTargetMap = new WeakMap();\n\n/**\n * Adds target to registration map.\n * @param {HTMLElement} target\n */\nfunction targetRegistered(target) {\n\treturn EventTargetMap.has(target);\n}\n\n/**\n * Destroys trigger element. All events are removed.\n * @param {HTMLElement} target\n */\nfunction unregisterTarget(target) {\n\tEventTargetMap.delete(target);\n\ttarget.removeEventListener('mouseenter', scheduleTooltipOpen, true);\n\ttarget.removeEventListener('focusin', scheduleTooltipOpen, true);\n\ttarget.removeEventListener('mouseleave', scheduleTooltipClose, true);\n\ttarget.removeEventListener('focusout', scheduleTooltipClose, true);\n}\n\n/**\n * Used as a callback for a Mutation Observer instance. Whenever the observer reports specific\n * DOM mutations it is set to watch for on a target node, update the tooltip element's data\n * correspondingly.\n * @param {MutationRecord} records\n * @returns\n */\nconst updateTooltipOnTargetAttributeChange = (records) => {\n\tfor (const record of records) {\n\t\tconst target = getShadowRootHost(record.target);\n\t\tif (!target) {\n\t\t\treturn;\n\t\t}\n\t\tconst tooltip = getExistingTooltip(target.shadowRoot);\n\t\t// If no tooltip exists, there is no tooltip data to update\n\t\tif (!tooltip) {\n\t\t\treturn;\n\t\t}\n\t\tif (record.attributeName === 'data-tooltip') {\n\t\t\ttooltip.content = record.target.dataset.tooltip;\n\t\t}\n\n\t\tif (record.attributeName === 'data-tooltipposition') {\n\t\t\tconst position = record.target.dataset.tooltipposition.split(',');\n\t\t\tif (position.length) {\n\t\t\t\ttooltip.position = position;\n\t\t\t}\n\t\t}\n\t\tif (record.attributeName === 'data-tooltipoffset') {\n\t\t\ttooltip.offset = getTooltipOffset(record.target);\n\t\t}\n\t}\n};\n\n// Creates a new MutationObserver instance so that we can track changes to a target's DOM,\n// and consequently update the tooltip content that is dependent on these changes\nconst observer = new MutationObserver(updateTooltipOnTargetAttributeChange);\n\n/**\n * Creates a new tooltip trigger element and appends it.\n * Attaches tooltip show/hide events to the trigger and content.\n * If a trigger already exists, nothing happens.\n * @param {HTMLElement} target\n */\nfunction registerTarget(target) {\n\tEventTargetMap.set(target, true);\n\ttarget.addEventListener('mouseenter', scheduleTooltipOpen, true);\n\ttarget.addEventListener('focusin', scheduleTooltipOpen, true);\n\ttarget.addEventListener('mouseleave', scheduleTooltipClose, true);\n\ttarget.addEventListener('focusout', scheduleTooltipClose, true);\n\n\t// Listens for changes filtered by specific attributes on the target element\n\tobserver.observe(target, {\n\t\tattributes: true,\n\t\tattributeFilter: [\n\t\t\t'data-tooltip',\n\t\t\t'data-tooltipposition',\n\t\t\t'data-tooltipoffset',\n\t\t],\n\t});\n}\n\nexport {targetRegistered, unregisterTarget, registerTarget};\n","import {\n\tregisterTarget,\n\tunregisterTarget,\n\ttargetRegistered,\n\tscheduleTooltipOpen,\n\tscheduleTooltipClose,\n\tBEHAVIOR_NAME,\n\tTOOLTIP_ADD_TARGET,\n\tTOOLTIP_REMOVE_TARGET,\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from './utils';\n\nexport default {\n\tname: BEHAVIOR_NAME,\n\tactionHandlers: {\n\t\t[TOOLTIP_ADD_TARGET]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}}) => {\n\t\t\t\tconst {target} = payload;\n\t\t\t\tif (!target || targetRegistered(target)) return;\n\t\t\t\tregisterTarget(target);\n\t\t\t},\n\t\t},\n\t\t[TOOLTIP_REMOVE_TARGET]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}}) => {\n\t\t\t\tconst {target} = payload;\n\t\t\t\tif (!target || !targetRegistered(target)) return;\n\t\t\t\tunregisterTarget(target);\n\t\t\t},\n\t\t},\n\t\t[TOOLTIP_SHOW]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}}) => {\n\t\t\t\tconst {target, delay} = payload;\n\t\t\t\tif (!target) return;\n\t\t\t\tscheduleTooltipOpen({currentTarget: target}, delay);\n\t\t\t},\n\t\t},\n\t\t[TOOLTIP_HIDE]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}}) => {\n\t\t\t\tconst {target, delay} = payload;\n\t\t\t\tif (!target) return;\n\t\t\t\tscheduleTooltipClose({currentTarget: target}, delay);\n\t\t\t},\n\t\t},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['scheduleTooltip'],\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tevent: {\n\t\t\t\t\t\t\tdetail: {opened},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdispatch,\n\t\t\t}) => {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\t\t\tpayload: {value: opened, target: 'target'},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t],\n};\n","function getUxfSysProp(name, defaultValue) {\n\treturn window?.ux_globals?.libuxf?.sysprops?.[name] ?? defaultValue;\n}\n\nconst MIN_THRESHOLD_FOR_PAGE_LOAD_SCREEN_MACROPONENT_IDLE_MAX_WAIT_MS = parseInt(\n\tgetUxfSysProp(\n\t\t'glide.uxf.lib.timeout.screen_macroponent_page_load_min_threshold_ms',\n\t\t4000\n\t)\n);\n\nconst QUEUED_PROMISE_RESOLVERS = [];\n\nlet SCREEN_MACROPONENT_IDLE = false;\n\nexport function signalPageLoadComplete() {\n\tif (SCREEN_MACROPONENT_IDLE) return;\n\n\tfor (const promiseResolver of QUEUED_PROMISE_RESOLVERS) {\n\t\tpromiseResolver();\n\t}\n\n\tQUEUED_PROMISE_RESOLVERS.length = 0;\n\tSCREEN_MACROPONENT_IDLE = true;\n}\n\ndocument.addEventListener(\n\t'__DO_NOT_USE__UXF_INTERNAL#SCREEN_MACROPONENT_IDLE_TIMESTAMP_MARKED',\n\tsignalPageLoadComplete,\n\t{once: true}\n);\n\nexport function whenScreenMacroponentIdleDuringPageLoad({maxWait = 0} = {}) {\n\tif (SCREEN_MACROPONENT_IDLE) return Promise.resolve();\n\n\tmaxWait =\n\t\tmaxWait > MIN_THRESHOLD_FOR_PAGE_LOAD_SCREEN_MACROPONENT_IDLE_MAX_WAIT_MS\n\t\t\t? maxWait\n\t\t\t: MIN_THRESHOLD_FOR_PAGE_LOAD_SCREEN_MACROPONENT_IDLE_MAX_WAIT_MS;\n\n\treturn new Promise((resolve) => {\n\t\tlet timedOut = false;\n\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\ttimedOut = true;\n\t\t\tresolve();\n\t\t}, maxWait);\n\n\t\tQUEUED_PROMISE_RESOLVERS.push(() => {\n\t\t\tif (timedOut) return;\n\n\t\t\tclearTimeout(timeoutId);\n\t\t\tresolve();\n\t\t});\n\t});\n}\n","const BEHAVIOR_NAME = 'truncation';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {whenScreenMacroponentIdleDuringPageLoad} from '@devsnc/uxf-runtime-utils';\nimport {getUserPrefContext} from 'sn-ux-core';\n\nconst {COMPONENT_RENDERED, COMPONENT_CONNECTED, COMPONENT_PROPERTY_CHANGED} =\n\tactionTypes;\nimport {\n\tTOOLTIP_ADD_TARGET,\n\tTOOLTIP_REMOVE_TARGET,\n} from '@servicenow/behavior-tooltip';\n\nconst ACTION_EVALUATE = 'BEHAVIOR_TRUNCATION#EVALUATE';\nconst ACTION_REEVALUATE = 'BEHAVIOR_TRUNCATION#REEVALUATE';\nconst dataAttributes = {\n\tignoreTabIndex: 'data-truncationignoretabindex',\n\tforceTooltip: 'data-truncationforcetooltip',\n\ttext: 'data-truncationtext',\n};\n\nlet a11yTx;\n\nconst defaultPosition = [\n\t'top-center bottom-center',\n\t'bottom-center top-center',\n\t'center-end center-start',\n\t'center-start center-end',\n\t'top-end top-start',\n\t'bottom-end bottom-start',\n\t'top-start top-end',\n\t'bottom-start bottom-end',\n];\n\nconst extractBehaviorState = (state) => state?.behaviors?.[BEHAVIOR_NAME] ?? {};\n\nconst findAllTruncationElements = (root = document) => {\n\t// Finds all the truncation elements in the component, but not within child components\n\tconst selector = '[data-truncation]';\n\n\tif (root.shadowRoot) root = root.shadowRoot;\n\n\treturn root.querySelectorAll(selector);\n};\n\nconst isOverflowing = (elem) => {\n\tconst {offsetHeight, scrollHeight, offsetWidth, scrollWidth} = elem;\n\tconst forceTooltip = elem.getAttribute(dataAttributes.forceTooltip);\n\treturn (\n\t\toffsetHeight - scrollHeight < 0 ||\n\t\toffsetWidth - scrollWidth < 0 ||\n\t\t!!forceTooltip\n\t);\n};\n\nconst applyTruncation = (elem, state) => {\n\tconst {truncationEnabled} = extractBehaviorState(state);\n\tif (!elem.hasAttribute('data-tooltipposition')) {\n\t\telem.setAttribute('data-tooltipposition', defaultPosition);\n\t}\n\telem.setAttribute(\n\t\t'data-tooltip',\n\t\telem.getAttribute(dataAttributes.text) || elem.innerText,\n\t);\n\tif (truncationEnabled) {\n\t\telem.addEventListener('focus', updateTooltipText);\n\t\tif (!elem.getAttribute(dataAttributes.ignoreTabIndex)) {\n\t\t\telem.setAttribute('tabindex', 0);\n\t\t}\n\t}\n\telem.addEventListener('mouseover', updateTooltipText);\n};\n// if the text of an element changes the tooltip will now display the new value\nconst updateTooltipText = (event) => {\n\tconst {target} = event;\n\ttarget.setAttribute(\n\t\t'data-tooltip',\n\t\ttarget.getAttribute(dataAttributes.text) || target.innerText,\n\t);\n};\n\nconst removeTruncation = (elem) => {\n\tif (!elem.getAttribute(dataAttributes.ignoreTabIndex)) {\n\t\telem.removeAttribute('tabindex');\n\t}\n\telem.removeAttribute('data-tooltip');\n\telem.removeEventListener('mouseover', updateTooltipText);\n\telem.removeEventListener('focus', updateTooltipText);\n};\n\nconst evaluate = ({host, state, dispatch}) => {\n\tconst {truncatedElements, truncationEnabled} = extractBehaviorState(state);\n\tconst targets = findAllTruncationElements(host);\n\n\ttargets.forEach((target) => {\n\t\t// batching these in a requestAnimationFrame to prevent reflows from isOverflowing\n\t\twindow.requestAnimationFrame(() => {\n\t\t\tif (truncationEnabled) {\n\t\t\t\tif (isOverflowing(target)) {\n\t\t\t\t\tif (!truncatedElements.has(target)) {\n\t\t\t\t\t\tapplyTruncation(target, state);\n\t\t\t\t\t\ttruncatedElements.set(target, true);\n\t\t\t\t\t\tdispatch(TOOLTIP_ADD_TARGET, {target});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (truncatedElements.has(target)) {\n\t\t\t\t\t\tremoveTruncation(target);\n\t\t\t\t\t\ttruncatedElements.delete(target);\n\t\t\t\t\t\tdispatch(TOOLTIP_REMOVE_TARGET, {target});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst mouseoverListener = (event) => {\n\t\t\t\t\tconst {target} = event;\n\t\t\t\t\tif (isOverflowing(target)) {\n\t\t\t\t\t\tapplyTruncation(target, state);\n\t\t\t\t\t\tdispatch(TOOLTIP_ADD_TARGET, {target});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tremoveTruncation(target);\n\t\t\t\t\t\tdispatch(TOOLTIP_REMOVE_TARGET, {target});\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// the mouseoverListener function is defined here so it has access to the dispatch.\n\t\t\t\t// Due to it being defined here, it would be seen as a new function every time\n\t\t\t\t// the evaluate function is called, so it will not automatically de-dupe the\n\t\t\t\t// event listener. To prevent multiple event listeners being added, a\n\t\t\t\t// data attribute is being added to the elements to indicate that they have\n\t\t\t\t// already been given the event listener\n\t\t\t\tif (!target.hasAttribute('data-truncationmouseover')) {\n\t\t\t\t\ttarget.addEventListener('mouseover', mouseoverListener);\n\t\t\t\t\ttarget.setAttribute('data-truncationmouseover', true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n};\n\nexport default {\n\tname: BEHAVIOR_NAME,\n\tproperties: {},\n\tinitialState: {\n\t\ttruncatedElements: new WeakMap(),\n\t},\n\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: {\n\t\t\teffect: async (coeffects) => {\n\t\t\t\tconst {host, dispatch, state, context} = coeffects;\n\t\t\t\tif (a11yTx === undefined) {\n\t\t\t\t\ta11yTx = getUserPrefContext(\n\t\t\t\t\t\t'glide.ui.accessibility.show_truncated_text',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst userPrefVal = a11yTx ? context?.[a11yTx] : false;\n\n\t\t\t\tconst truncationEnabled =\n\t\t\t\t\tstate.__enableTruncation__ || userPrefVal === 'true';\n\n\t\t\t\tif (!truncationEnabled) return;\n\n\t\t\t\tconst observer = new IntersectionObserver((entries) => {\n\t\t\t\t\tif (entries[0].isIntersecting) {\n\t\t\t\t\t\twhenScreenMacroponentIdleDuringPageLoad().then(() => {\n\t\t\t\t\t\t\tdispatch(ACTION_EVALUATE);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tobserver.observe(host);\n\t\t\t},\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: (coeffects) => {\n\t\t\t\tconst {properties, action, state, context} = coeffects;\n\t\t\t\tconst {name} = action.payload;\n\t\t\t\tconst {blockRenderEval} = properties;\n\n\t\t\t\tconst userPrefVal = a11yTx ? context?.[a11yTx] : false;\n\n\t\t\t\tconst truncationEnabled =\n\t\t\t\t\tstate.__enableTruncation__ || userPrefVal === 'true';\n\n\t\t\t\tif (\n\t\t\t\t\tname == 'evaluateTruncation' &&\n\t\t\t\t\ttruncationEnabled &&\n\t\t\t\t\tblockRenderEval\n\t\t\t\t) {\n\t\t\t\t\t// if the evaluateTruncation property is changed it will already\n\t\t\t\t\t// trigger a rerender, so we only want to run this in the event\n\t\t\t\t\t// that it's being used while the on-render evaluation is blocked\n\t\t\t\t\twhenScreenMacroponentIdleDuringPageLoad().then(() => {\n\t\t\t\t\t\tevaluate(coeffects);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[ACTION_EVALUATE]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: (coeffects) => {\n\t\t\t\tevaluate(coeffects);\n\t\t\t},\n\t\t},\n\t\t[ACTION_REEVALUATE]: {\n\t\t\teffect: (coeffects) => {\n\t\t\t\tconst {properties} = coeffects;\n\t\t\t\tconst {blockRenderEval} = properties;\n\t\t\t\tif (!blockRenderEval) {\n\t\t\t\t\tevaluate(coeffects);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[COMPONENT_RENDERED]: {\n\t\t\teffect: async ({dispatch, updateState, state, context, action}) => {\n\t\t\t\tconst {\n\t\t\t\t\tpayload: {previousRenderState},\n\t\t\t\t} = action;\n\t\t\t\tif (\n\t\t\t\t\tpreviousRenderState?.behaviors?.truncation === undefined ||\n\t\t\t\t\tstate.behaviors?.truncation?.truncationEnabled !==\n\t\t\t\t\t\tpreviousRenderState.behaviors?.truncation?.truncationEnabled\n\t\t\t\t) {\n\t\t\t\t\tconst userPrefVal = a11yTx ? context?.[a11yTx] : false;\n\n\t\t\t\t\tconst truncationEnabled =\n\t\t\t\t\t\tstate.__enableTruncation__ || userPrefVal === 'true';\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tpath: 'behaviors.truncation.truncationEnabled',\n\t\t\t\t\t\tvalue: truncationEnabled,\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t});\n\n\t\t\t\t\twhenScreenMacroponentIdleDuringPageLoad().then(() => {\n\t\t\t\t\t\tdispatch(ACTION_EVALUATE);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n};\n","import {default as truncationBehavior} from './truncation';\nexport default truncationBehavior;\n","import get from 'lodash/get';\n\nconst castJSON = (properties, prop) => {\n\tif (typeof properties[prop] !== 'string') {\n\t\treturn properties;\n\t}\n\tlet value;\n\ttry {\n\t\tvalue = JSON.parse(properties[prop]);\n\t} catch (e) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(`The attribute ${prop} is not valid JSON:`, e);\n\t\tvalue = {};\n\t}\n\treturn {\n\t\t...properties,\n\t\t[prop]: value,\n\t};\n};\n\nconst castJSONorString = (properties, prop) => {\n\tif (typeof properties[prop] !== 'string') {\n\t\treturn properties;\n\t}\n\tlet value;\n\ttry {\n\t\tvalue = JSON.parse(properties[prop]);\n\t\treturn {\n\t\t\t...properties,\n\t\t\t[prop]: value,\n\t\t};\n\t} catch (e) {\n\t\treturn properties;\n\t}\n};\n\nconst castNumber = (properties, prop) => {\n\tif (typeof properties[prop] !== 'string') {\n\t\treturn properties;\n\t}\n\tif (isNaN(properties[prop])) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(`The attribute ${prop} is not a number.`);\n\t\treturn properties;\n\t}\n\treturn {\n\t\t...properties,\n\t\t[prop]: Number(properties[prop]),\n\t};\n};\n\nconst castFunctions = {\n\tarray: castJSON,\n\tobject: castJSON,\n\tnumber: castNumber,\n\tobjectOrString: castJSONorString,\n};\n\nexport const extendWithCast = (baseConfig) => {\n\tconst baseTransformProps = get(\n\t\tbaseConfig,\n\t\t['renderer', 'transformProps'],\n\t\t(state) => state,\n\t);\n\n\tconst properties = baseConfig.properties || {};\n\tconst transforms = Object.keys(properties).reduce((acc, key) => {\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tif (properties[key].hasOwnProperty('cast')) {\n\t\t\tconst transform = castFunctions[properties[key].cast];\n\t\t\tacc = [...acc, (properties) => transform(properties, key)];\n\t\t}\n\t\treturn acc;\n\t}, []);\n\n\treturn {\n\t\t...baseConfig,\n\t\trenderer: {\n\t\t\t...baseConfig.renderer,\n\t\t\ttransformProps: (state) => {\n\t\t\t\tconst properties = transforms.reduce(\n\t\t\t\t\t(acc, fn) => fn(acc),\n\t\t\t\t\tstate.properties,\n\t\t\t\t);\n\t\t\t\treturn baseTransformProps({...state, properties: {...properties}});\n\t\t\t},\n\t\t},\n\t};\n};\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"createUpdateStateEffect\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__.__esModule\n\t\t\t\t\tif (cjsModule && 'createUpdateStateEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"].createUpdateStateEffect;\n\t\t\t\t\t} else if ('createUpdateStateEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__.createUpdateStateEffect || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__[\"default\"].createUpdateStateEffect;\n\t\t\t\t} });","import {createUpdateStateEffect} from '@servicenow/ui-effect-update-state';\n\nexport const localsSetEffectHandler = createUpdateStateEffect(\n\t(state, action) => {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\t/* eslint-disable-next-line no-console */\n\t\t\tconsole.warn(\n\t\t\t\t'`locals` from @devsnc/library-enhanced-element is deprecated. Please migrate to using `updateState` helper method from @servicenow/ui-core.',\n\t\t\t);\n\t\t}\n\n\t\tconst {payload} = action;\n\t\treturn {\n\t\t\t...state,\n\t\t\tlocals: {\n\t\t\t\t...state.locals,\n\t\t\t\t...payload,\n\t\t\t},\n\t\t};\n\t},\n);\n\nexport const extendWithLocals = (baseConfig) => {\n\tconst localsConfig = baseConfig.locals || {};\n\tconst locals = Object.keys(localsConfig).reduce(\n\t\t(acc, key) => ({\n\t\t\t...acc,\n\t\t\t[key]: localsConfig[key].default,\n\t\t}),\n\t\t{},\n\t);\n\n\treturn {\n\t\t...baseConfig,\n\t\tactionHandlers: {\n\t\t\tLOCALS_SET: {\n\t\t\t\t...localsSetEffectHandler,\n\t\t\t\tstopPropagation: true,\n\t\t\t},\n\t\t\t...baseConfig.actionHandlers,\n\t\t},\n\t\tinitialState: {\n\t\t\tlocals,\n\t\t\tproperties: {},\n\t\t\t...baseConfig.initialState,\n\t\t},\n\t};\n};\n","import rtlBehavior from '@servicenow/behavior-rtl';\n\nexport const extendWithDefaultBehaviors = (baseConfig) => {\n\treturn {\n\t\t...baseConfig,\n\t\tbehaviors: [...(baseConfig.behaviors || []), {behavior: rtlBehavior}],\n\t};\n};\n","export default (value) => {\n\tconst casedValue = value\n\t\t.replace(/([A-Z][a-z]+)/g, ' $&')\n\t\t.toUpperCase()\n\t\t.replace(/[ ]/g, '_');\n\n\treturn casedValue[0] === '_' ? casedValue.substring(1) : casedValue;\n};\n","import makeScopedActionName from './scoped-action-name';\nimport reduce from 'lodash/reduce';\nimport forEach from 'lodash/forEach';\nimport omit from 'lodash/omit';\nimport mapValues from 'lodash/mapValues';\nimport get from 'lodash/get';\nimport constantCase from './constant-case';\n\nconst toManagedPropName = (propName) =>\n\t'manage' + propName[0].toUpperCase() + propName.slice(1);\n\nconst omitManagedKey = (descriptor) => omit(descriptor, 'manageable');\n\n/* Extracted from https://code.devsnc.com/dev/sn-seismic/blob/5aff3fb9bc51ada3bc487f78a5d3b02c04bf410b/packages/core/src/utils/combinePropertyDefs.js */\nconst getComponentProperties = (config) => {\n\tconst {properties = {}, behaviors = []} = config;\n\n\treturn reduce(\n\t\tbehaviors,\n\t\t(acc, behavior) => {\n\t\t\tconst properties = get(\n\t\t\t\tbehavior,\n\t\t\t\t'behavior.properties',\n\t\t\t\tget(behavior, 'properties', {}),\n\t\t\t);\n\n\t\t\tforEach(properties, (value, key) => {\n\t\t\t\tacc[key] = value;\n\t\t\t});\n\n\t\t\treturn acc;\n\t\t},\n\t\t{...properties},\n\t);\n};\n\nexport const extendWithManageableProperties = (tagName, baseConfig) => {\n\tconst properties = getComponentProperties(baseConfig);\n\n\tconst propNamesToManage = Object.keys(properties).reduce((acc, propName) => {\n\t\tif (properties[propName].manageable) {\n\t\t\tacc.push(propName);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tif (!propNamesToManage.length) {\n\t\treturn baseConfig;\n\t}\n\n\tconst managedActions = propNamesToManage.reduce((acc, propName) => {\n\t\tconst actionName = makeScopedActionName(\n\t\t\ttagName,\n\t\t\tconstantCase(propName) + '_SET',\n\t\t);\n\t\tconst managedPropName = toManagedPropName(propName);\n\t\tconst actionHandler = ({host, state, action, updateProperties}) => {\n\t\t\tlet value = action.payload.value;\n\t\t\tconst isPropertySelector =\n\t\t\t\ttypeof value === 'string' && value[0] === '@' && value.indexOf('/') > 0;\n\n\t\t\tconst isManaged = state.properties[managedPropName];\n\t\t\t// if a component is a descendant of itself, need to make sure that SET\n\t\t\t// actions from the child don't change the property of the parent\n\t\t\tconst isActionForCurrentHost = host.nowId === action.meta.id;\n\n\t\t\tif (isManaged || !isActionForCurrentHost) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Here we're escaping the value to prevent selectable properties from\n\t\t\t * intercepting and overriding the original value. Managed properties\n\t\t\t * need to be escaped by the customer.\n\t\t\t *\n\t\t\t * This only happens when the value matches the pattern: '@abc/def'\n\t\t\t */\n\t\t\tif (isPropertySelector) {\n\t\t\t\tvalue = `\\\\${value}`;\n\t\t\t}\n\n\t\t\tupdateProperties({[propName]: value});\n\t\t};\n\t\tacc[actionName] = actionHandler;\n\t\treturn acc;\n\t}, {});\n\n\tconst managedProperties = propNamesToManage.reduce((acc, propName) => {\n\t\tacc[toManagedPropName(propName)] = {};\n\t\treturn acc;\n\t}, {});\n\n\treturn {\n\t\t...baseConfig,\n\t\tactionHandlers: {\n\t\t\t...managedActions,\n\t\t\t...baseConfig.actionHandlers,\n\t\t},\n\t\tproperties: {\n\t\t\t...managedProperties,\n\t\t\t...mapValues(baseConfig.properties, omitManagedKey),\n\t\t},\n\t};\n};\n","export default function makeScopedActionName(tagName, actionName) {\n\treturn tagName.toUpperCase().replace(/-/g, '_') + '#' + actionName;\n}\n","import get from 'lodash/get';\n\nconst getOnRenderFns = (config) => {\n\tconst fns = [];\n\tif (config.onRender) {\n\t\tfns.push(config.onRender);\n\t}\n\tconst behaviors = config.behaviors || [];\n\tfor (let behavior of behaviors) {\n\t\tconst onRender = get(\n\t\t\tbehavior,\n\t\t\t`behavior.onRender`,\n\t\t\tget(behavior, 'onRender', null),\n\t\t);\n\t\tif (onRender) {\n\t\t\tfns.push(onRender);\n\t\t}\n\t}\n\treturn fns;\n};\n\nexport const extendWithOnRender = (baseConfig) => {\n\tconst onRenderFns = getOnRenderFns(baseConfig);\n\n\tif (onRenderFns.length === 0) {\n\t\treturn baseConfig;\n\t}\n\tif (process.env.NODE_ENV === 'development') {\n\t\t/* eslint-disable-next-line no-console */\n\t\tconsole.error(\n\t\t\t'`onRender()` from @devsnc/library-enhanced-element is not supported. Please migrate to using `actionTypes.COMPONENT_RENDERED` lifecycle method from @servicenow/ui-core.',\n\t\t);\n\t}\n\n\treturn baseConfig;\n};\n","import {\n\tcreateCustomElement,\n\tcreatePresentationalCustomElement,\n} from '@servicenow/ui-core';\nimport {extendWithLocals} from './locals';\nimport {extendWithCast} from './cast';\nimport {extendWithDefaultBehaviors} from './default-behaviors';\nimport {extendWithManageableProperties} from './manageable-properties';\nimport {extendWithOnRender} from './on-render';\n\nconst createEnhancedElement = (name, baseConfig = {}) => {\n\tlet {presentational, ...mergedConfig} = baseConfig;\n\n\tif (presentational) {\n\t\tmergedConfig = extendWithDefaultBehaviors(mergedConfig);\n\t\tcreatePresentationalCustomElement(name, mergedConfig);\n\t} else {\n\t\tmergedConfig = extendWithCast(baseConfig);\n\t\tmergedConfig = extendWithLocals(mergedConfig);\n\t\tmergedConfig = extendWithDefaultBehaviors(mergedConfig);\n\t\tmergedConfig = extendWithManageableProperties(name, mergedConfig);\n\t\tmergedConfig = extendWithOnRender(mergedConfig);\n\t\tcreateCustomElement(name, mergedConfig);\n\t}\n};\n\nexport default createEnhancedElement;\n","/**\n * Returns if a provided key normally moves focus or selection.\n * @param {String} key - key name from a keyboard event\n * @returns {Boolean}\n */\nexport const isDirectionalKey = (key) => {\n\treturn [\n\t\t'ArrowRight',\n\t\t'ArrowLeft',\n\t\t'ArrowUp',\n\t\t'ArrowDown',\n\t\t'Home',\n\t\t'End',\n\t].includes(key);\n};\n\n/**\n * Returns if a provided key normally moves focus or selection forward / to the next item.\n * If provided, it will also respect the current document direction (ltr or rtl).\n * @param {String} key - key name from a keyboard event\n * @param {String} dir - document direction\n * @param {Boolean} supportDown - whether down should also be supported\n * @returns {Boolean}\n */\nexport const isNextKey = (key, dir, supportDown) => {\n\treturn (\n\t\t(dir !== 'rtl' && key === 'ArrowRight') ||\n\t\t(dir === 'rtl' && key === 'ArrowLeft') ||\n\t\t(supportDown && key === 'ArrowDown')\n\t);\n};\n\n/**\n * Returns if a provided key normally moves focus or selection backward / to the previous item.\n * If provided, it will also respect the current document direction (ltr or rtl).\n * @param {String} key - key name from a keyboard event\n * @param {String} dir - document direction\n * @param {Boolean} supportUp - whether up should also be supported\n * @returns {Boolean}\n */\nexport const isPreviousKey = (key, dir, supportUp) => {\n\treturn (\n\t\t(dir !== 'rtl' && key === 'ArrowLeft') ||\n\t\t(dir === 'rtl' && key === 'ArrowRight') ||\n\t\t(supportUp && key === 'ArrowUp')\n\t);\n};\n","import isString from 'lodash/isString';\n\n/**\n * Splits a string at each hyphen, returning an object where each key is the\n * split substring (prefixed with a hyphen) and the value is the substring.\n * @param {*} value - string to split\n * @returns {Object}\n */\nexport const extensionSplit = (value) => {\n\tif (!isString(value)) {\n\t\treturn {};\n\t}\n\n\treturn value.split('-').reduce((acc, v) => {\n\t\tacc['-' + v] = v;\n\t\treturn acc;\n\t}, {});\n};\n","import {pickBy} from 'lodash';\n\n/**\n * Take in an obj and return only keys that start with `aria-` or match `role`\n * @param {*} obj - object mapping aria attributes to the corresponding value\n * @returns {Object}\n */\nexport const filterAriaAttributes = (obj, key) => {\n\tif (!obj || typeof obj !== 'object' || !Object.keys(obj).length) {\n\t\treturn {};\n\t}\n\t// backwards compatibility for the old config-aria pattern\n\tif (!obj[key]) {\n\t\treturn pickBy(obj, (_, attr) => /^aria-\\w+/i.test(attr));\n\t}\n\treturn pickBy(\n\t\tobj[key],\n\t\t(_, attr) => /^aria-\\w+/i.test(attr) || attr === 'role',\n\t);\n};\n\nexport const filterAriaAttributesOld = (obj) =>\n\tpickBy(obj, (_, key) => /^aria-\\w+/i.test(key));\n","/**\n * Ensures the given value is an array\n * For `null` and `undefined`: return an empty array.\n * For a value that is already an array: return that array as-is.\n * If the value is iterable, return Array.from() (except for strings)\n * For any other value: return an array containing only that value.\n *\n * @param {*} maybeArray - value to make an array out of\n * @returns {Array}\n */\nexport const toArray = (maybeArray) => {\n\tif (maybeArray === null || maybeArray === undefined) {\n\t\treturn [];\n\t}\n\tif (Array.isArray(maybeArray)) return maybeArray;\n\tif (typeof maybeArray !== 'string' && maybeArray[Symbol.iterator]) {\n\t\treturn Array.from(maybeArray);\n\t}\n\treturn [maybeArray];\n};\n","import {toArray} from './to-array';\n\n/**\n * The following helper methods to find focusable elements are copied from Polymer\n * with modifications.\n * https://github.com/PolymerElements/iron-overlay-behavior/blob/master/iron-focusables-helper.js\n * License:\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt The complete set of contributors may be\n * found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\n * part of the polymer project is also subject to an additional IP rights grant\n * found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Returns if a element is focusable.\n * @param {HTMLElement} element\n * @return {boolean}\n */\n\nexport const isFocusable = (element) => {\n\t// From http://stackoverflow.com/a/1600194/4228703:\n\t// There isn't a definite list, it's up to the browser. The only\n\t// standard we have is DOM Level 2 HTML\n\t// https://www.w3.org/TR/DOM-Level-2-HTML/html.html, according to which the\n\t// only elements that have a focus() method are HTMLInputElement,\n\t// HTMLSelectElement, HTMLTextAreaElement and HTMLAnchorElement. This\n\t// notably omits HTMLButtonElement and HTMLAreaElement. Referring to these\n\t// tests with tabbables in different browsers\n\t// http://allyjs.io/data-tables/focusable.html\n\tif (element.nodeType !== Node.ELEMENT_NODE) {\n\t\treturn false;\n\t}\n\tif (hasInertAncestor(element)) {\n\t\treturn false;\n\t}\n\t// Elements that cannot be focused if they have [disabled] attribute.\n\tif (\n\t\telement.matches(\n\t\t\t'input:not([type=\"radio\"]), select, textarea, button, object',\n\t\t)\n\t) {\n\t\treturn element.matches(':not([disabled])');\n\t}\n\t// Radio buttons are special snowflakes\n\tif (element.matches('input[type=\"radio\"]:not([disabled])')) {\n\t\t// If it is checked and not disabled, it should be focusable\n\t\tif (element.checked) {\n\t\t\treturn true;\n\t\t}\n\t\t// If no radio buttons in the set are checked, the first enabled one is focusable\n\t\telse {\n\t\t\tconst name = element.getAttribute('name');\n\t\t\tconst allEnabledRadiosInSet = element\n\t\t\t\t.getRootNode()\n\t\t\t\t.querySelectorAll(\n\t\t\t\t\t`input[type=\"radio\"][name=\"${name}\"]:not([disabled])`,\n\t\t\t\t);\n\t\t\tconst isFirstInSet = element === allEnabledRadiosInSet[0];\n\t\t\tconst noneChecked = !toArray(allEnabledRadiosInSet).some(\n\t\t\t\t(radio) => radio.checked,\n\t\t\t);\n\t\t\treturn isFirstInSet && noneChecked;\n\t\t}\n\t}\n\t// Elements that can be focused even if they have [disabled] attribute.\n\treturn element.matches(\n\t\t'a[href], area[href], iframe, [tabindex], [contentEditable]',\n\t);\n};\n\n/**\n * @param {Node} node\n * @return {HTMLCollection}\n */\nconst getNormalizedChildren = (node) => {\n\tlet children;\n\tif (node.localName === 'slot') {\n\t\tchildren = node.assignedNodes({flatten: true});\n\t} else {\n\t\t// Use shadow root if possible, will check for distributed nodes.\n\t\tchildren = (node.nowRootNode || node.shadowRoot || node).children;\n\t}\n\n\treturn children ? Array.prototype.slice.call(children) : [];\n};\n\n/**\n * Returns the normalized element tabindex. If not focusable, returns -1.\n * It checks for the attribute \"tabindex\" instead of the element property\n * `tabIndex` since browsers assign different values to it.\n * e.g. in Firefox `<div contenteditable>` has `tabIndex = -1`\n * @param {!HTMLElement} element\n * @return {!number}\n */\nconst normalizedTabIndex = (element) => {\n\tif (isFocusable(element)) {\n\t\tconst tabIndex = element.getAttribute('tabindex') || 0;\n\t\treturn Number(tabIndex);\n\t}\n\treturn -1;\n};\n\n/**\n * Returns false if the element has `visibility: hidden` or `display: none`\n * @param {HTMLElement} element\n * @return {boolean}\n */\nconst isVisible = (element) => {\n\t// Check inline style first to save a re-flow. If looks good, check also\n\t// computed style.\n\tlet style = element.style;\n\tif (style.visibility !== 'hidden' && style.display !== 'none') {\n\t\tstyle = window.getComputedStyle(element);\n\t\treturn style.visibility !== 'hidden' && style.display !== 'none';\n\t}\n\treturn false;\n};\n\n/**\n * Sorts an array of tabbable elements by tabindex. Returns a new array.\n * @param {HTMLElement[]} tabbables\n * @return {HTMLElement[]}\n */\nconst sortByTabIndex = (tabbables) => {\n\t// Implement a merge sort as Array.prototype.sort does a non-stable sort\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\n\tconst len = tabbables.length;\n\tif (len < 2) {\n\t\treturn tabbables;\n\t}\n\tconst pivot = Math.ceil(len / 2);\n\tconst left = sortByTabIndex(tabbables.slice(0, pivot));\n\tconst right = sortByTabIndex(tabbables.slice(pivot));\n\treturn mergeSortByTabIndex(left, right);\n};\n\n/**\n * Merge sort iterator, merges the two arrays into one, sorted by tab index.\n * @param {HTMLElement[]} left\n * @param {HTMLElement[]} right\n * @return {HTMLElement[]}\n */\nconst mergeSortByTabIndex = (left, right) => {\n\tconst result = [];\n\twhile (left.length > 0 && right.length > 0) {\n\t\tif (hasLowerTabOrder(left[0], right[0])) {\n\t\t\tresult.push(right.shift());\n\t\t} else {\n\t\t\tresult.push(left.shift());\n\t\t}\n\t}\n\n\treturn result.concat(left, right);\n};\n\n/**\n * Returns if element `a` has lower tab order compared to element `b`\n * (both elements are assumed to be focusable and tabbable).\n * Elements with tabindex = 0 have lower tab order compared to elements\n * with tabindex > 0.\n * If both have same tabindex, it returns false.\n * @param {HTMLElement} a\n * @param {HTMLElement} b\n * @return {boolean}\n */\nconst hasLowerTabOrder = (a, b) => {\n\t// Normalize tabIndexes\n\t// e.g. in Firefox `<div contenteditable>` has `tabIndex = -1`\n\tconst ati = Math.max(a.tabIndex, 0);\n\tconst bti = Math.max(b.tabIndex, 0);\n\treturn ati === 0 || bti === 0 ? bti > ati : ati > bti;\n};\n\n/**\n * Recursively searches children of the parent node. Return a list of tabbable\n * nodes sorted by tabIndex. Includes the parent node in the list if it is tabbable.\n * @param {Node} node The starting point for the search\n * @param {HTMLElement[]} result\n * @return {boolean}\n */\nexport const findTabbableNodes = (node) => {\n\tconst tabbableNodes = [];\n\tlet needsSort = false;\n\tlet queue = [node];\n\n\twhile (queue.length) {\n\t\tconst el = queue.shift();\n\t\t// If not an element or not visible, no need to explore children.\n\t\tif (el.nodeType !== Node.ELEMENT_NODE || !isVisible(el)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst tabIndex = normalizedTabIndex(el);\n\t\tif (tabIndex > 0) {\n\t\t\tneedsSort = true;\n\t\t}\n\t\tif (tabIndex >= 0) {\n\t\t\ttabbableNodes.push(el);\n\t\t}\n\t\tconst children = getNormalizedChildren(el);\n\t\tqueue = [...children, ...queue];\n\t}\n\n\treturn needsSort ? sortByTabIndex(tabbableNodes) : tabbableNodes;\n};\n\n/**\n * Recursively searches parents of the node. Return true if any of the ancestors have the inert attribute.\n * @param {HTMLElement} element\n * @returns {boolean}\n */\nconst hasInertAncestor = (element) => {\n\twhile (element) {\n\t\tif (element.hasAttribute('inert')) {\n\t\t\treturn true;\n\t\t}\n\t\telement = element.parentElement;\n\t}\n\treturn false;\n};\n","/**\n * Returns the currently focused element, recursing through shadow roots.\n * @param {HTMLElement} active - reference to focused element\n * @returns {HTMLElement}\n */\nexport const getActiveElement = (active = document.activeElement) => {\n\tif (active.shadowRoot && active.shadowRoot.activeElement) {\n\t\treturn getActiveElement(active.shadowRoot.activeElement);\n\t}\n\tif (active.contentDocument && active.contentDocument.activeElement) {\n\t\treturn getActiveElement(active.contentDocument.activeElement);\n\t}\n\treturn active;\n};\n","/**\n * Returns the shadow root that `node` belongs to, or null if it is not in a\n * shadow root.\n * @param {HTMLElement} node\n * @returns {(HTMLElement|null)}\n */\nexport const getShadowRootHost = (node) => {\n\tif (node.parentNode instanceof ShadowRoot) {\n\t\treturn node.parentNode.host;\n\t}\n\tif (node.parentElement) {\n\t\treturn getShadowRootHost(node.parentElement);\n\t}\n\treturn null;\n};\n","/**\n * Creates a new Seismic action dispatch with the type specified\n * in `newActionType`, passing along the original `action.payload`.\n * @param {string} newActionType - name to be used for the redispatched action\n * @returns {function}\n */\nexport const makeRedispatchEffect =\n\t(newActionType) =>\n\t({action, dispatch}) =>\n\t\tdispatch(() => {\n\t\t\treturn {\n\t\t\t\ttype: newActionType,\n\t\t\t\tpayload: {...(action.payload || {})},\n\t\t\t};\n\t\t});\n","let fontToMeasureFn = new Map();\n\nconst createMeasureFn = (font) => {\n\tconst canvas = document.createElement('canvas');\n\tconst ctx = canvas.getContext('2d');\n\tcanvas.width = 100;\n\tcanvas.height = 100;\n\tctx.font = font;\n\treturn (text) => ctx.measureText(text).width;\n};\n\n/**\n * Returns a measurement function based on the font size and font face passed.\n * The function that is returned by the factory can be used to determine the\n * width (in pixels) of a given string, e.g.\n * ```js\n *   const mt = measureTextFactory('16px Source Sans Pro, sans-serif');\n *   const width = mt('Foo');\n * ```\n * @param {string} font - e.g. '16px Source Sans Pro,sans-serif'\n * @returns {function}\n */\nexport const measureTextFactory = (font) => {\n\tif (fontToMeasureFn.has(font)) {\n\t\treturn fontToMeasureFn.get(font);\n\t}\n\tconst measureFn = createMeasureFn(font);\n\tfontToMeasureFn.set(font, measureFn);\n\treturn measureFn;\n};\n","export const textTransform = {\n\tUPPERCASE: 'uppercase',\n\tLOWERCASE: 'lowercase',\n\tCAPITALIZE: 'capitalize',\n\ttransform(mode, str) {\n\t\tif (mode === this.LOWERCASE) return this.toLowerCase(str);\n\t\tif (mode === this.UPPERCASE) return this.toUpperCase(str);\n\t\tif (mode === this.CAPITALIZE) return this.capitalize(str);\n\t\treturn str;\n\t},\n\ttoUpperCase(str = '') {\n\t\treturn str.toUpperCase() || '';\n\t},\n\ttoLowerCase(str = '') {\n\t\treturn str.toLowerCase() || '';\n\t},\n\tcapitalize(str) {\n\t\tconst s = str.trim();\n\t\tif (!s) return '';\n\n\t\tlet arr = [];\n\t\tif (s.indexOf(' ')) arr = s.split(' ');\n\t\tif (!arr.length) arr = [s];\n\n\t\tconst arr2 = [];\n\t\tarr.forEach((word) => {\n\t\t\tlet a = [];\n\t\t\tif (word.indexOf('-') > -1) {\n\t\t\t\tconst sub = word.split('-');\n\t\t\t\tsub.forEach((w) => {\n\t\t\t\t\ta.push(w.replace(/^\\w/, (c2) => c2.toUpperCase()));\n\t\t\t\t});\n\t\t\t\tarr2.push(a.join('-'));\n\t\t\t} else {\n\t\t\t\tarr2.push(word.replace(/^\\w/, (c) => c.toUpperCase()));\n\t\t\t}\n\t\t});\n\t\treturn arr2.join(' ');\n\t},\n};\n","import {textTransform} from './text-transform';\n\nexport const measureText = ({\n\tfontWeight,\n\tfontSize,\n\tfontStyle,\n\tfontFamily,\n\ttxtTransform,\n}) => {\n\tconst canvas = document.createElement('canvas');\n\tconst ctx = canvas.getContext('2d');\n\tconst font = `${fontStyle || ''} ${\n\t\tfontWeight || '400'\n\t} ${fontSize} ${fontFamily}`;\n\tctx.font = font;\n\treturn (str) => {\n\t\tconst s = textTransform.transform(txtTransform, str);\n\t\treturn Math.ceil(ctx.measureText(s).width);\n\t};\n};\n","/**\n * Replaces occurrence of `searchTerm` found in `string` with styled DOM\n * nodes.\n *\n * @param searchTerm {string} - The substring to look for within the larger\n * `string`\n * @param string {string} - The input string to search in.\n * @param className {string} - The class to use when styling matching sections of the string\n * @param options {Options} - options to change how this function finds matches\n *\n * @typedef {Object} Options - optional configuration to customize how this function finds matches\n * @property {boolean} caseSensitive - If true, highlighting is case-sensitive\n * @property {\"beginning\"|\"all\"|\"first\"} location - Where matches can be located in the string.\n * - \"beginning\": only matches if the string starts with the searchTerm\n * - \"all\": match all occurrences of the searchTerm anywhere in the string\n * - \"first\": only matches the first occurrence of the searchTerm, but can be found anywhere in the string\n * @property {string} tag - What tag to wrap matched values\n *\n * @returns {Array<string|VDomNode>} - the minimal amount of data needed\n * to render correctly. This may be a string literal (no matches found), or an\n * array of mixed strings + vdom nodes.\n */\nexport function matchSearchTerm(\n\tsearchTerm,\n\tstring,\n\tclassName,\n\t{location = 'beginning', caseSensitive = false, tag: Tag = 'mark'} = {},\n) {\n\tif (!searchTerm) {\n\t\treturn string;\n\t}\n\n\tconst searchWithCase = caseSensitive ? searchTerm : searchTerm.toLowerCase();\n\tconst stringWithCase = caseSensitive ? string : string.toLowerCase();\n\n\t// elements in this array will be a mix of types. String literals for the\n\t// non-highlighted portitions and snabbdom nodes for the highlighted\n\t// portions. snabbdom is perfectly happy rendering this array as children.\n\tconst result = [];\n\n\tconst highlightLength = searchTerm.length;\n\n\tlet lastIndex = 0;\n\tlet nextIndex = 0;\n\twhile (\n\t\t(nextIndex = stringWithCase.indexOf(searchWithCase, lastIndex)) !== -1\n\t) {\n\t\t// `beginning` location must match at just the start of the string\n\t\tif (nextIndex > 0 && location === 'beginning') {\n\t\t\tbreak;\n\t\t}\n\n\t\t// lastIndex = beginning of string OR where the previous highlighted string ended\n\t\t// nextIndex = where the next highlight string starts\n\t\t//\n\t\t// if these two values are not equal, it means there is non-highlighted\n\t\t// content that we need to deal with.\n\t\t//\n\t\t// e.g.: on the first iteration\n\t\t//\n\t\t//       searchTerm = \"world\"\n\t\t//       label = \"hello world\"\n\t\t//                │     │\n\t\t//      lastIndex ┘     └ nextIndex\n\t\t//\n\t\t// Need to push the prefix \"hello \" into the result.\n\t\tif (nextIndex > lastIndex) {\n\t\t\tresult.push(string.slice(lastIndex, nextIndex));\n\t\t}\n\n\t\tconst highlight = (\n\t\t\t<Tag className={className}>\n\t\t\t\t{string.slice(nextIndex, nextIndex + highlightLength)}\n\t\t\t</Tag>\n\t\t);\n\t\tresult.push(highlight);\n\n\t\tlastIndex = nextIndex + highlightLength;\n\n\t\tif (location !== 'all') {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (result.length === 0) {\n\t\treturn string;\n\t}\n\n\t// content between the last highlight and end of the string\n\tif (lastIndex !== string.length) {\n\t\tresult.push(string.slice(lastIndex));\n\t}\n\n\treturn result;\n}\n","/**\n * The event object.\n * @typedef EventObject\n * @property {string} type\n */\n\n/**\n * The event callback.\n * @callback EventCallback\n * @param {EventObject} event\n */\n\n/**\n * An object representing a layering component.\n * @typedef {Object} Layer\n * @property {string} id - The id associated with the layer element\n * @property {Array} events - The types of events to create global listeners for.\n * @property {EventCallback} callback - The function to be called when a stack event is triggered.\n */\n\nif (typeof window.___NDS_LAYER_EVENTS___ === 'undefined') {\n\tconst propertyConfig = {\n\t\tenumerable: false,\n\t\tconfigurable: false,\n\t\twritable: false,\n\t};\n\tconst LSValue = [];\n\tObject.defineProperty(LSValue, 'registry', {\n\t\t...propertyConfig,\n\t\tvalue: {},\n\t});\n\t// NOTES no matter how many times layer events gets loaded, there is only one window\n\tObject.defineProperty(window, '___NDS_LAYER_EVENTS___', {\n\t\t...propertyConfig,\n\t\tvalue: LSValue,\n\t});\n}\n\n/**\n * Return the stack of layer objects. This is a reference, not a copy.\n * @returns {Layer[]}\n */\nconst getStack = () => window.___NDS_LAYER_EVENTS___ || [];\n\n/**\n * Returns whether a layer with given id is currently the top of the stack.\n * @param {number} id\n * @returns {boolean}\n */\nconst isTopLayer = (id) => {\n\tconst stack = getStack();\n\treturn id === stack[stack.length - 1]?.id;\n};\n\n/**\n * Returns true if a there is a layer with matching id.\n * @param {string} id\n * @returns {boolean}\n */\nconst layerExists = (id) => getStack().some((layer) => layer.id === id);\n\n/**\n * Umbrella handler for all stack-related events.\n * @param {EventCallback} event\n */\nconst handleEvent = (event) => {\n\tconst stack = getStack();\n\n\t// Multiple instances/versions of this utility can leave behind remnant listeners.\n\t// The listener should unsubscribe itself if there are no layers.\n\tif (!stack.length) {\n\t\treturn window.removeEventListener(event.type, handleEvent, true);\n\t}\n\n\tconst topLayer = stack[stack.length - 1];\n\tif (topLayer.events.includes(event.type)) {\n\t\ttopLayer.callback(event);\n\t}\n};\n\n/**\n * Check if a given layer object is safe to use.\n * @param {Layer}\n */\nconst isValidLayer = (layer) => {\n\treturn (\n\t\tObject.keys(layer).length &&\n\t\tArray.isArray(layer.events) &&\n\t\tlayer.events.length &&\n\t\ttypeof layer.callback === 'function' &&\n\t\ttypeof layer.id === 'string' &&\n\t\t!layerExists(layer.id)\n\t);\n};\n\n/**\n * A reducer function to handle LayerStack state mutations.\n * @param {string} type - the type of action to perform.\n * @param {string[]} events - the events to update.\n */\nconst registryReducer = (type, events) => {\n\tif (type === 'add') {\n\t\tevents.forEach((eventType) => {\n\t\t\tconst stack = getStack();\n\t\t\tconst count = stack.registry[eventType];\n\t\t\tif (!count) {\n\t\t\t\twindow.addEventListener(eventType, handleEvent, true);\n\t\t\t\tstack.registry[eventType] = 1;\n\t\t\t} else {\n\t\t\t\tstack.registry[eventType] = count + 1;\n\t\t\t}\n\t\t});\n\t} else if (type === 'remove') {\n\t\tevents.forEach((eventType) => {\n\t\t\tconst stack = getStack();\n\t\t\tconst count = stack.registry[eventType];\n\t\t\tif (count === 1) {\n\t\t\t\tdelete stack.registry[eventType];\n\t\t\t\twindow.removeEventListener(eventType, handleEvent, true);\n\t\t\t} else {\n\t\t\t\tstack.registry[eventType] = count - 1;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/**\n * Adds a new layer to the stack.\n * @param {Layer} layer\n */\nconst add = (layer = {}) => {\n\tif (!isValidLayer(layer)) return;\n\tregistryReducer('add', layer.events);\n\tgetStack().push(layer);\n};\n\n/**\n * Given a matching id, removes the specified layer from the stack.\n * @param {string} id\n */\nconst remove = (id) => {\n\tconst stack = getStack();\n\n\tif (!stack.length || typeof id !== 'string') {\n\t\treturn;\n\t}\n\n\tconst topLayer = stack[stack.length - 1];\n\n\tif (topLayer.id === id) {\n\t\tconst layer = stack.pop();\n\t\tregistryReducer('remove', layer.events);\n\t} else {\n\t\tfor (let i = stack.length - 1; i >= 0; i--) {\n\t\t\tconst layer = stack[i];\n\t\t\tif (layer.id === id) {\n\t\t\t\tstack.splice(i, 1);\n\t\t\t\tregistryReducer('remove', layer.events);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default {remove, add, isTopLayer};\n","/**\n * Standard configuration object for DOMPurify library used across NDS components.\n */\nexport const domPurifyConfig = {\n\tFORCE_BODY: true, // makes sure that <style> tags aren't stripped\n\tCUSTOM_ELEMENT_HANDLING: {\n\t\ttagNameCheck: /(^now-)|(^sn-)/, // allows now-* and sn-* custom elements to be used\n\t\tattributeNameCheck: () => {\n\t\t\t// allows any custom properties / attributes to be set on now-* and sn-* tags\n\t\t\treturn true;\n\t\t},\n\t},\n\tADD_ATTR: ['target'],\n\tFORBID_ATTR: ['method', 'action'],\n};\n","function canScroll(overflow) {\n\treturn overflow === 'auto' || overflow === 'hidden';\n}\n\n/**\n * Caches the result of a `getDimensions()` call so that it won't be\n * recalculated again later. Useful to ensure that getBoundingClientRect is\n * not called multiple times in a row when multiple fit positions are\n * evaluated in a row.\n * @param {Dimensions} dim\n * @return {{getDimensions: Function}}\n */\nexport function cacheDimensions(dim) {\n\treturn {\n\t\tgetDimensions: () => dim,\n\t};\n}\n\n/**\n * Gets the dimensions of a HTMLElement or gets the manually specified and/or\n * cached dimensions of a DimensionsReference.\n * @param {(HTMLElement|DimensionsReference)} node\n * @return {Dimensions}\n */\nexport function getDimensions(node) {\n\tif (\n\t\t!(node instanceof HTMLElement) &&\n\t\ttypeof node.getDimensions === 'function'\n\t) {\n\t\treturn node.getDimensions();\n\t}\n\tif (\n\t\tnode === window ||\n\t\tnode === document.documentElement ||\n\t\tnode === document.body\n\t) {\n\t\treturn {\n\t\t\ttop: 0,\n\t\t\tright: document.documentElement.clientWidth,\n\t\t\tbottom: document.documentElement.clientHeight,\n\t\t\tleft: 0,\n\t\t\twidth: document.documentElement.clientWidth,\n\t\t\theight: document.documentElement.clientHeight,\n\t\t\texisting: {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t},\n\t\t\tscroll: {\n\t\t\t\tblock: window.scrollY,\n\t\t\t\tinline: window.scrollX,\n\t\t\t\theight: document.documentElement.scrollHeight,\n\t\t\t\twidth: document.documentElement.scrollWidth,\n\t\t\t},\n\t\t};\n\t}\n\n\t// the fractional part of the getBoundingClientRect() values may cause\n\t// subtle differences to the rendered position after fit is run, which can\n\t// be pretty noticeable if we're constantly updating the fit position on\n\t// scroll. Rounding here helps to avoid this jitteriness.\n\tconst box = node.getBoundingClientRect();\n\tconst top = Math.round(box.top);\n\tconst right = Math.round(box.right);\n\tconst bottom = Math.round(box.bottom);\n\tconst left = Math.round(box.left);\n\tconst width = Math.ceil(box.width); // DEF0502291: Prefer larger width with fractional pixels to prevent characters from wrapping into next line.\n\tconst height = Math.round(box.height);\n\tconst {scrollWidth, scrollHeight, scrollTop, scrollLeft} = node;\n\tconst style = window.getComputedStyle(node);\n\treturn {\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\tleft,\n\t\twidth,\n\t\theight,\n\t\texisting: {\n\t\t\ttop: parseInt(style.top, 10) || 0,\n\t\t\tleft: parseInt(style.left, 10) || 0,\n\t\t},\n\t\tscroll: {\n\t\t\t// scrollWidth/height might be smaller than the getBoundingClientRect\n\t\t\t// reported values because scrollWidth/height returns rounded, whole\n\t\t\t// numbers and getBoundingClientRect returns fractions. However, we treat\n\t\t\t// these scroll properties as the largest possible size that the node can\n\t\t\t// take up, so we want to guarantee that these properties are always at\n\t\t\t// least the size of the getBoundingClientRect width/height.\n\t\t\twidth: canScroll(style.overflowX) ? Math.max(scrollWidth, width) : width,\n\t\t\theight: canScroll(style.overflowY)\n\t\t\t\t? Math.max(scrollHeight, height)\n\t\t\t\t: height,\n\t\t\tblock: scrollTop,\n\t\t\tinline: scrollLeft,\n\t\t},\n\t};\n}\n","/**\n * Returns directional information for the given axis.\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {{topOrLeft: string, bottomOrRight: string, widthOrHeight: string}}\n */\nexport default function getAxisInfo(axis) {\n\treturn {\n\t\ttopOrLeft: axis === 'block' ? 'top' : 'left',\n\t\tbottomOrRight: axis === 'block' ? 'bottom' : 'right',\n\t\twidthOrHeight: axis === 'block' ? 'height' : 'width',\n\t};\n}\n","import getAxisInfo from './get-axis-info';\n\n/**\n * Calculates either the height or width based on the target and content\n * position and dimensions.\n * @param {Dimensions} targetDimensions - Target dimensions object plus offsets\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} targetPosition - Logical target position\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {number} - the calculated width or height of the content area\n */\nexport function calculateContentAreaLength(\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontainerDimensions,\n\ttargetPosition,\n\tcontentPosition,\n\taxis,\n) {\n\tconst {topOrLeft, widthOrHeight} = getAxisInfo(axis);\n\n\t// edge case: if centered content is bigger than the container, we want\n\t// contentArea to fill the entire container.\n\tif (\n\t\tcontentPosition === 'center' &&\n\t\tcontentDimensions[widthOrHeight] >=\n\t\t\tcontainerDimensions.scroll[widthOrHeight]\n\t) {\n\t\treturn containerDimensions.scroll[widthOrHeight];\n\t}\n\n\tconst targetOffsetContainerTopOrLeft =\n\t\ttargetDimensions[topOrLeft] -\n\t\tcontainerDimensions[topOrLeft] +\n\t\tcontainerDimensions.scroll[axis];\n\n\t// Initial length is the distance between the top/left of the container and\n\t// the target\n\tlet length = targetOffsetContainerTopOrLeft;\n\n\t// Adjust a little bit based on the alignment of the target\n\tif (targetPosition === 'center') {\n\t\tlength += targetDimensions[widthOrHeight] / 2;\n\t} else if (targetPosition === 'bottom' || targetPosition === 'end') {\n\t\tlength += targetDimensions[widthOrHeight];\n\t}\n\n\t// For start/center positions, we want contentArea to grow down/right from\n\t// the target, so we really need whatever space is remaining compared to above\n\tif (\n\t\tcontentPosition === 'top' ||\n\t\tcontentPosition === 'start' ||\n\t\tcontentPosition === 'center'\n\t) {\n\t\tlength = containerDimensions.scroll[widthOrHeight] - length;\n\n\t\t// Centered is a little special: we want to keep 50% of the content on\n\t\t// either side of the target\n\t\tif (contentPosition === 'center') {\n\t\t\tlength += contentDimensions[widthOrHeight] / 2;\n\t\t}\n\t}\n\n\t// ensure contentArea is never bigger than the container, and is always\n\t// a whole number.\n\treturn Math.floor(\n\t\tMath.min(length, containerDimensions.scroll[widthOrHeight]),\n\t);\n}\n\n/**\n * Calculates either the top or left offset based on the target and content\n * positions and dimensions.\n * @param {Dimensions} targetDimensions - Target dimensions object plus offsets\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} targetPosition - Logical target position\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {number} - the calculated offset top or left of the content area\n */\nexport function calculateContentAreaOffset(\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontainerDimensions,\n\ttargetPosition,\n\tcontentPosition,\n\taxis,\n) {\n\tconst {topOrLeft, widthOrHeight} = getAxisInfo(axis);\n\n\t// With absolute positioning, contentArea could start at any point inside the\n\t// container. Need to figure out the amount to shift the contentArea so that\n\t// it aligns to the container properly.\n\t//\n\t// Start by figuring out how to get the contentArea position to align\n\t// to the top/start of the container:\n\tlet calcOffset =\n\t\t// Start with container's current position\n\t\tcontainerDimensions[topOrLeft] -\n\t\t// Add the scrolling offset. Dimensions values are relative to the\n\t\t// viewport, which doesn't know about any scrolling offset introduced by an\n\t\t// overflow'able container.\n\t\tcontainerDimensions.scroll[axis];\n\n\t// If contentArea is already stretched to be as big as the container, then we don't\n\t// need to do any other adjusting.\n\tif (\n\t\tcontentAreaDimensions[widthOrHeight] <\n\t\tcontainerDimensions.scroll[widthOrHeight]\n\t) {\n\t\t// When content is top or start aligned, the content area starts at the\n\t\t// target position and grows towards the bottom/end of the container. Need\n\t\t// to increase the `calcOffset` by however much the target offset is.\n\t\t//\n\t\t// We'll skip over this adjustment in the case where content is bottom/end\n\t\t// aligned, because in these cases the contentArea starts at the top/start\n\t\t// point of the container, which we already figured out above.\n\t\tif (\n\t\t\tcontentPosition === 'top' ||\n\t\t\tcontentPosition === 'start' ||\n\t\t\tcontentPosition === 'center'\n\t\t) {\n\t\t\tcalcOffset +=\n\t\t\t\ttargetDimensions[topOrLeft] -\n\t\t\t\tcontainerDimensions[topOrLeft] +\n\t\t\t\tcontainerDimensions.scroll[axis];\n\n\t\t\t// Centered is a little special: we want to keep 50% of the content on\n\t\t\t// either side of the target\n\t\t\tif (contentPosition === 'center') {\n\t\t\t\tcalcOffset -= contentDimensions[widthOrHeight] / 2;\n\t\t\t}\n\n\t\t\t// Adjust a little bit based on the alignment of the target\n\t\t\tif (targetPosition === 'center') {\n\t\t\t\tcalcOffset += targetDimensions[widthOrHeight] / 2;\n\t\t\t} else if (targetPosition === 'bottom' || targetPosition === 'end') {\n\t\t\t\tcalcOffset += targetDimensions[widthOrHeight];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn Math.floor(calcOffset);\n}\n\n/**\n * Calculates a new dimensions object that describes the desired contentArea\n * size and position after it is placed relative to the target.\n * @param {Dimensions} targetDimensions - Target dimensions object plus offsets\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} targetPosition - Logical target position\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @return {Dimensions} - a new content area dimensions object\n */\nexport default function calculateContentAreaDimensions(\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontainerDimensions,\n\ttargetPosition,\n\tcontentPosition,\n) {\n\tconst [targetPositionBlock, targetPositionInline] = targetPosition;\n\tconst [contentPositionBlock, contentPositionInline] = contentPosition;\n\n\tconst nextContentAreaDimensions = {...contentAreaDimensions};\n\tnextContentAreaDimensions.width = calculateContentAreaLength(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPositionInline,\n\t\tcontentPositionInline,\n\t\t'inline',\n\t);\n\n\tnextContentAreaDimensions.height = calculateContentAreaLength(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPositionBlock,\n\t\tcontentPositionBlock,\n\t\t'block',\n\t);\n\n\tnextContentAreaDimensions.left = calculateContentAreaOffset(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tnextContentAreaDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPositionInline,\n\t\tcontentPositionInline,\n\t\t'inline',\n\t);\n\n\tnextContentAreaDimensions.top = calculateContentAreaOffset(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tnextContentAreaDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPositionBlock,\n\t\tcontentPositionBlock,\n\t\t'block',\n\t);\n\n\tnextContentAreaDimensions.right =\n\t\tnextContentAreaDimensions.left + nextContentAreaDimensions.width;\n\tnextContentAreaDimensions.bottom =\n\t\tnextContentAreaDimensions.top + nextContentAreaDimensions.height;\n\n\treturn nextContentAreaDimensions;\n}\n","import getAxisInfo from './get-axis-info';\n\n/**\n * Calculates either the top or left coordinate for the content based on where\n * it would exist when placed in the new content area.\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {number} - the calculated offset top or left of the content area\n */\nexport function calculateContentOffset(\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontentPosition,\n\taxis,\n) {\n\tconst {topOrLeft, bottomOrRight, widthOrHeight} = getAxisInfo(axis);\n\tif (\n\t\tcontentPosition === 'top' ||\n\t\tcontentPosition === 'start' ||\n\t\tcontentPosition === 'center'\n\t) {\n\t\treturn contentAreaDimensions[topOrLeft];\n\t}\n\n\treturn (\n\t\tcontentAreaDimensions[bottomOrRight] - contentDimensions[widthOrHeight]\n\t);\n}\n\n/**\n * Calculates a new content dimensions object that describes where\n * the content would be after being placed inside the (correctly-positioned)\n * content area.\n *\n * Note that these values aren't necessarily the final values where content is\n * going to be rendered. It is the point where content would be if there were\n * no other boundaries (from the viewport, container, or both). This is useful\n * later to determine how much of the content will be visible and rank this\n * position against others in `getBestFitInfo`.\n *\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {Dimensions} - the updated content dimensions object as if it were placed\n * in a correctly-positioned contentArea and not bounded by any other containing object.\n */\nexport default function calculateContentDimensions(\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontentPosition,\n) {\n\tconst [contentPositionBlock, contentPositionInline] = contentPosition;\n\n\tconst nextContentDimensions = {...contentDimensions};\n\n\tnextContentDimensions.top = calculateContentOffset(\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t\tcontentPositionBlock,\n\t\t'block',\n\t);\n\n\tnextContentDimensions.left = calculateContentOffset(\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t\tcontentPositionInline,\n\t\t'inline',\n\t);\n\n\tnextContentDimensions.bottom =\n\t\tnextContentDimensions.top + contentDimensions.height;\n\tnextContentDimensions.right =\n\t\tnextContentDimensions.left + contentDimensions.width;\n\n\treturn nextContentDimensions;\n}\n","/**\n * Calculates constrain styles based on developer-specified configuration.\n */\nexport function getConstrainStyles(constrain) {\n\treturn Object.entries(constrain).reduce((result, [key, value]) => {\n\t\tresult[key] = `${value}px`;\n\t\treturn result;\n\t}, {});\n}\n\n/**\n * Calculates and returns styles to be applied to the content.\n * @param {Object} contentStyles - Other content styles to apply\n * @param {Object} contentPosition - position of content\n * @return {Object}\n */\nexport function addCSSProperties(contentStyles, contentPosition) {\n\tconst isBottomAligned = contentPosition[0] === 'bottom';\n\tconst isEndAligned = contentPosition[1] === 'end';\n\n\treturn {\n\t\t...contentStyles,\n\t\ttop: isBottomAligned ? 'unset' : '0px',\n\t\tbottom: isBottomAligned ? '0px' : 'unset',\n\t\tleft: isEndAligned ? 'unset' : '0px',\n\t\tright: isEndAligned ? '0px' : 'unset',\n\t\tposition: 'absolute',\n\t\tpointerEvents: 'initial',\n\t};\n}\n\n/**\n * Calculates and returns styles to be applied to the content.\n * @param {Position} contentPosition - Logical position for the content\n * @param {Constrain} constrain - normalized contrain configuration object\n * @return {Object} a set of CSS properties that should be applied to the\n * content element.\n */\nexport default function calculateContentStyles(contentPosition, constrain) {\n\tconst contentStyles = getConstrainStyles(constrain);\n\treturn addCSSProperties(contentStyles, contentPosition);\n}\n","/**\n * Restricts the content dimensions to the given bounding dimensions object\n * and returns both the ratio of overlap and the new dimensions.\n *\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} boundingDimensions - container dimensions or viewport dimensions, depending\n * on which bounding element to compare to.\n * @returns {{ratio: number, dimensions: Dimensions}}\n */\nexport function restrictToBoundingBox(contentDimensions, boundingDimensions) {\n\tconst fullyVisible =\n\t\tcontentDimensions.top >= boundingDimensions.top &&\n\t\tcontentDimensions.right <= boundingDimensions.right &&\n\t\tcontentDimensions.bottom <= boundingDimensions.bottom &&\n\t\tcontentDimensions.left >= boundingDimensions.left;\n\n\tif (fullyVisible) {\n\t\treturn {\n\t\t\tratio: 1,\n\t\t\tdimensions: contentDimensions,\n\t\t};\n\t}\n\n\tconst visibleDimensions = {\n\t\t...contentDimensions,\n\t\tleft: Math.max(contentDimensions.left, boundingDimensions.left),\n\t\tright: Math.min(contentDimensions.right, boundingDimensions.right),\n\t\tbottom: Math.min(contentDimensions.bottom, boundingDimensions.bottom),\n\t\ttop: Math.max(contentDimensions.top, boundingDimensions.top),\n\t};\n\n\tvisibleDimensions.width = visibleDimensions.right - visibleDimensions.left;\n\tvisibleDimensions.height = visibleDimensions.bottom - visibleDimensions.top;\n\tconst actualArea = visibleDimensions.width * visibleDimensions.height;\n\tconst wantedArea = contentDimensions.width * contentDimensions.height;\n\n\treturn {\n\t\tratio: actualArea / wantedArea,\n\t\tdimensions: visibleDimensions,\n\t};\n}\n\n/**\n * Calculates how much of the content would actually be viewable for the\n * given container and viewport.\n *\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {Dimensions} viewportDimensions - Viewport dimensions object\n *\n * @typedef {Object} Overlap an object describing how much the content overlaps\n * with other boundary containers\n * @param {object} overlapRatios Object containing overlap ratios for the\n * container and viewport.\n * @param {number} overlapRatios.container The ratio of content that overlaps with the\n * container element. If the content completely fits in the container, this\n * value will be `1`. If the content falls off the container, this value will\n * be between 0 and 1.\n * @param {number} overlapRatios.viewport The ratio of content that overlaps with the\n * viewport element. If the content completely fits in the viewport, this\n * value will be `1`. If the content falls off the container, this value will\n * be between 0 and 1.\n * @param {Dimensions} visibleContentDimensions Updated content dimensions that\n * are bounded by the container. If the content fits completely in the container,\n * these dimensions will be identical to the original content dimensions. If the content\n * falls out of the container, then this dimensions object will be the overlap between\n * the content and the container.\n * @return {Overlap}\n */\nexport default function calculateOverlap(\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tviewportDimensions,\n) {\n\tconst contentInContainer = restrictToBoundingBox(\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t);\n\tconst contentInViewport = restrictToBoundingBox(\n\t\tcontentDimensions,\n\t\tviewportDimensions,\n\t);\n\n\treturn {\n\t\toverlapRatios: {\n\t\t\tcontainer: contentInContainer.ratio,\n\t\t\tviewport: contentInViewport.ratio,\n\t\t},\n\t\tvisibleContentDimensions: contentInContainer.dimensions,\n\t};\n}\n","import toSizeValue from './to-size-value';\n\n/**\n * Returns the dimension direction for a given constrain\n * key.\n * @returns {(\"width\"|\"height\"|null)} returns \"width\" for width-related keys,\n * \"height\" for height-related keys, and null for any invalid key\n */\nexport function getDimensionForConstrainKey(key) {\n\tif (['width', 'minWidth', 'maxWidth'].includes(key)) {\n\t\treturn 'width';\n\t}\n\n\tif (['height', 'minHeight', 'maxHeight'].includes(key)) {\n\t\treturn 'height';\n\t}\n\n\treturn null;\n}\n\n/**\n * Normalizes a constrain configuration by mapping all special keywords\n * (`auto`, `target`), etc to resolved numerical values. Also drops\n * any property keys that are not valid\n *\n * @param {Constrain} constrain - constrain object before normalization\n * @param {Dimensions} targetDimensions - target dimensions object\n * @param {Dimensions} contentDimensions - content dimensions object\n */\nexport function normalizeConstrain(\n\tconstrain,\n\ttargetDimensions,\n\tcontentDimensions,\n) {\n\treturn Object.entries(constrain).reduce((result, [key, constraint]) => {\n\t\tconst widthOrHeight = getDimensionForConstrainKey(key);\n\t\tif (widthOrHeight) {\n\t\t\tresult[key] = toSizeValue(\n\t\t\t\tcontentDimensions.scroll[widthOrHeight],\n\t\t\t\ttargetDimensions[widthOrHeight],\n\t\t\t\tconstraint,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}, {});\n}\n\n/**\n * Returns a new dimensions object with the constrain values applied.\n *\n * @param {Constrain} normalizedConstrain - constrain object after normalization\n * @param {Dimensions} dimensions - dimensions object to apply constrain to\n */\nexport function applyConstrain(normalizedConstrain, dimensions) {\n\tconst newDimensions = Object.entries(normalizedConstrain).reduce(\n\t\t(result, [key, value]) => {\n\t\t\tconst widthOrHeight = getDimensionForConstrainKey(key);\n\t\t\tif (key.startsWith('min')) {\n\t\t\t\tresult[widthOrHeight] = Math.max(dimensions[widthOrHeight], value);\n\t\t\t} else if (key.startsWith('max')) {\n\t\t\t\tresult[widthOrHeight] = Math.min(dimensions[widthOrHeight], value);\n\t\t\t} else {\n\t\t\t\tresult[widthOrHeight] = value;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t\t{...dimensions},\n\t);\n\n\tnewDimensions.bottom = newDimensions.top + newDimensions.height;\n\tnewDimensions.right = newDimensions.left + newDimensions.width;\n\n\treturn newDimensions;\n}\n","/**\n * Calculates special values of `constrain`\n */\nexport default function toSizeValue(contentValue, targetValue, constrainValue) {\n\tif (constrainValue === 'auto') {\n\t\treturn contentValue;\n\t}\n\tif (constrainValue === 'target') {\n\t\treturn targetValue;\n\t}\n\tif (typeof constrainValue === 'number') {\n\t\treturn constrainValue;\n\t}\n\tthrow new Error('Sizing value is not valid');\n}\n","import calculateContentAreaDimensions from './content-area';\nimport calculateContentAreaStyles from './content-area-styles';\nimport calculateContentDimensions from './content';\nimport calculateContentStyles from './content-styles';\nimport calculateOverlap from './overlap';\nimport {normalizeConstrain, applyConstrain} from './constrain';\n\n/**\n * Offset used to take an array of 6 values.\n * If someone passes in 6 values we will take the last four and apply them to the normOffset.\n * The functionality of this has not changed from V1.\n * We not longer support the first two values of the 6 value array. They didn't work as intended.\n * Instead we will convert the old two values to our new one value.\n */\nconst makeOffsetBackwardsCompatible = (offset) => {\n\tif (offset.length === 6) {\n\t\treturn offset.slice(2, 6);\n\t} else {\n\t\treturn offset.find((element) => element > 0);\n\t}\n};\n\n/**\n * Normalizes the offset format into `[top, end, bottom, start]`\n */\nconst normalizeOffset = (offset, targetPosition, contentPosition) => {\n\tlet value = offset;\n\tif (Array.isArray(offset)) {\n\t\tconst backwardCompatibleOffset = makeOffsetBackwardsCompatible(offset);\n\t\tif (Array.isArray(backwardCompatibleOffset)) {\n\t\t\treturn backwardCompatibleOffset;\n\t\t} else {\n\t\t\tvalue = backwardCompatibleOffset;\n\t\t}\n\t}\n\n\tlet calcOffset = [value, value, value, value];\n\tif (targetPosition[0] === contentPosition[0]) {\n\t\tcalcOffset[0] = 0;\n\t\tcalcOffset[2] = 0;\n\t}\n\tif (targetPosition[1] === contentPosition[1]) {\n\t\tcalcOffset[1] = 0;\n\t\tcalcOffset[3] = 0;\n\t}\n\treturn calcOffset;\n};\n\n/**\n * Adds the offset to the target dimensions for positioning\n * @param {Dimensions} targetDimensions - Target dimensions\n * @param {Array<number>} normOffset - normalized offset into `[top, right, bottom, left]` format\n * @returns {Dimensions} - new dimensions with the normalized offset added in\n */\nfunction addOffsetPaddingToDimensions(targetDimensions, normOffset) {\n\tconst [top = 0, right = 0, bottom = 0, left = 0] = normOffset;\n\treturn {\n\t\t...targetDimensions,\n\t\ttop: targetDimensions.top - top,\n\t\tright: targetDimensions.right + right,\n\t\tbottom: targetDimensions.bottom + bottom,\n\t\tleft: targetDimensions.left - left,\n\t\twidth: targetDimensions.width + left + right,\n\t\theight: targetDimensions.height + top + bottom,\n\t};\n}\n\n/**\n * Calculates dimensions for the content area and position of the content.\n * Returns the styles for the content area and the content, as well as a ratio\n * of how much of the content has been adjusted and/or is hidden by scrolling.\n * @param {Dimensions} targetDimensions - Target dimensions object\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {Dimensions} viewportDimensions - Viewport dimensions object\n * @param {Origin[]} targetPosition\n * @param {Origin[]} contentPosition\n * @param {number} offset - Amount to offset content from the target\n * @param {Constrain} constrain - Constrain configuration\n */\nexport default function calculateFit(\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontainerDimensions,\n\tviewportDimensions,\n\ttargetPosition,\n\tcontentPosition,\n\toffset,\n\tconstrain,\n) {\n\tconst normOffset = normalizeOffset(offset, targetPosition, contentPosition);\n\tconst normConstrain = normalizeConstrain(\n\t\tconstrain,\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t);\n\n\tconst constrainedContentDimensions = applyConstrain(\n\t\tnormConstrain,\n\t\tcontentDimensions,\n\t);\n\n\tconst paddedTargetDimensions = addOffsetPaddingToDimensions(\n\t\ttargetDimensions,\n\t\tnormOffset,\n\t);\n\n\tconst nextContentAreaDimensions = calculateContentAreaDimensions(\n\t\tpaddedTargetDimensions,\n\t\tconstrainedContentDimensions,\n\t\tcontentAreaDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t);\n\n\t// updated content dimensions and overlap is only used to determine how much\n\t// of the content is actually going to be visible. We'll compare these values\n\t// when determining the best fit. These values are not necessary to calculate\n\t// the final CSS for the content element.\n\n\tconst nextContentDimensions = calculateContentDimensions(\n\t\tconstrainedContentDimensions,\n\t\tnextContentAreaDimensions,\n\t\tcontentPosition,\n\t);\n\n\tconst {visibleContentDimensions, overlapRatios} = calculateOverlap(\n\t\tnextContentDimensions,\n\t\tnextContentAreaDimensions,\n\t\tviewportDimensions,\n\t);\n\n\tconst contentAreaStyles = calculateContentAreaStyles(\n\t\tcontentAreaDimensions,\n\t\tnextContentAreaDimensions,\n\t);\n\tconst contentStyles = calculateContentStyles(contentPosition, normConstrain);\n\n\treturn {\n\t\tstyle: {\n\t\t\tcontentArea: contentAreaStyles,\n\t\t\tcontent: contentStyles,\n\t\t},\n\t\tdimensions: {\n\t\t\ttarget: targetDimensions,\n\t\t\tcontent: visibleContentDimensions,\n\t\t\tcontentArea: nextContentAreaDimensions,\n\t\t\tcontainer: containerDimensions,\n\t\t},\n\t\toverlapRatios,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t};\n}\n","/**\n * Creates an object of CSS properties to be applied to the contentArea element\n * @param {Dimensions} contentAreaDimensions - the current contentArea dimensions object,\n * before any fit calculations have been applied.\n * @param {Dimensions} nextContentAreaDimensions - the new contentArea dimensions object,\n * after all fit calculations have been applied.\n * @returns {Object} CSS properties that should be applied to contentArea.\n */\nexport default function calculateContentAreaStyles(\n\tcontentAreaDimensions,\n\tnextContentAreaDimensions,\n) {\n\t// determine the distance we need to move the old contentArea to correctly\n\t// match the new contentArea. Since we're going to be setting these as inline\n\t// styles, we need to make sure we also consider any existing inline style\n\t// values for top and left, as these will get overwritten:\n\t//\n\t//\tExample, if we have the following, relative to the top of the page:\n\t//\n\t//\t\t<div id=\"content-area\" style=\"top: 20px; left: 20px\" />\n\t//\n\t//  And we want to position this contentArea to start at point (30, 30),\n\t//  our dimensions objects look like:\n\t//\n\t//\t\t    contentAreaDimensions = { top: 20, left: 20 };\n\t//\t\tnextContentAreaDimensions = { top: 30, left: 30 };\n\t//\n\t//  If we don't account for the existing inline styles, we would assume that\n\t//  we only need to move the contentArea 10px top and left, so we'd result\n\t//  in:\n\t//\n\t//\t\t<div id=\"content-area\" style=\"top: 10px; left: 10px\" />\n\t//\n\t//\twhich is not correct. We need to make sure we also factor in the existing\n\t//\t20px top/left that the contentArea started with. These values are tracked\n\t//\tin the `existing` property of a dimensions object:\n\tconst top =\n\t\tnextContentAreaDimensions.top -\n\t\tcontentAreaDimensions.top +\n\t\tcontentAreaDimensions.existing.top;\n\tconst left =\n\t\tnextContentAreaDimensions.left -\n\t\tcontentAreaDimensions.left +\n\t\tcontentAreaDimensions.existing.left;\n\treturn {\n\t\ttop: `${top}px`,\n\t\tleft: `${left}px`,\n\t\twidth: `${nextContentAreaDimensions.width}px`,\n\t\theight: `${nextContentAreaDimensions.height}px`,\n\t\tposition: 'absolute',\n\t\tpointerEvents: 'none',\n\t};\n}\n","import {getDimensions, cacheDimensions} from './dimensions';\nimport calculateFit from './calculate-fit';\n\nexport function sortCandidates(a, b) {\n\tconst viewportOverlapDifference =\n\t\tb.overlapRatios.viewport - a.overlapRatios.viewport;\n\n\t// first priority is to pick the position that fits the most content within\n\t// the viewport: we want the content to be immediately visible. If multiple\n\t// positions can fit the same amount of content in the viewport, then as a\n\t// tie-breaker we'll use the position that fits more within the container (to\n\t// minimize how much scrolling of the content is necessary).\n\tif (viewportOverlapDifference === 0) {\n\t\tconst containerOverlapDifference =\n\t\t\tb.overlapRatios.container - a.overlapRatios.container;\n\n\t\treturn containerOverlapDifference;\n\t}\n\n\treturn viewportOverlapDifference;\n}\n\n/**\n * Calculates the fit styles for the content with only one possible position.\n * @param {HTMLElement} target - Reference to element the content is positioned beside\n * @param {HTMLElement} content - Reference to positioned element\n * @param {HTMLElement} [container=window] - Reference to element content should fit within\n * @param {string[][]} - Desired position of content relative to target, e.g. [[\"top\", \"start\"], [\"bottom\", \"end\"]]\n * @param {number} [offset=0] - Amount to offset content from the target\n * @param {{height: number, width: number, minHeight: number, maxHeight: number, minWidth: number, maxWidth: number}} constrain - Constrains or sets the size of the content\n * @return {FitInfo}\n */\nexport function getFitInfo({\n\ttarget,\n\tcontent,\n\tcontentArea,\n\tcontainer = window,\n\tviewport = window,\n\tposition,\n\toffset = 0,\n\tconstrain = {},\n}) {\n\tconst targetDimensions = getDimensions(target);\n\tconst contentDimensions = getDimensions(content);\n\tconst containerDimensions = getDimensions(container);\n\tconst contentAreaDimensions = getDimensions(contentArea);\n\tconst viewportDimensions = getDimensions(viewport);\n\tconst [targetPosition, contentPosition] = position;\n\treturn calculateFit(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t\tcontainerDimensions,\n\t\tviewportDimensions,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t\toffset,\n\t\tconstrain,\n\t);\n}\n\n/**\n * Calculates the best fit styles for the content based on multiple possible\n * positions. Returns the fit info for the first position that completely fits.\n * If no position completely fits, returns the position that fits the most.\n * @param {HTMLElement} target - Reference to element the content is positioned beside\n * @param {HTMLElement} content - Reference to positioned element\n * @param {HTMLElement} [container=window] - Reference to element content should fit within\n * @param {string[][][]}- Desired positions of content relative to target in order of preferences, e.g. [[[\"bottom\", \"start\"],[\"top\", \"start\"]], [[\"top\", \"start\"], [\"bottom\", \"start\"]]]\n * @param {number} [offset=0] - Amount to offset content from the target\n * @param {{height: number, width: number, minHeight: number, maxHeight: number, minWidth: number, maxWidth: number}} constrain - Constrains or sets the size of the content\n * @return {FitInfo}\n */\nexport function getBestFitInfo({\n\ttarget,\n\tcontent,\n\tcontentArea,\n\tcontainer = window,\n\tviewport = window,\n\tpositions,\n\toffset = 0,\n\tconstrain = {},\n}) {\n\tconst targetDimensions = cacheDimensions(getDimensions(target));\n\tconst contentDimensions = cacheDimensions(getDimensions(content));\n\tconst contentAreaDimensions = cacheDimensions(getDimensions(contentArea));\n\tconst containerDimensions = cacheDimensions(getDimensions(container));\n\tconst viewportDimensions = cacheDimensions(getDimensions(viewport));\n\tconst candidates = [];\n\tfor (const pos of positions) {\n\t\tconst info = getFitInfo({\n\t\t\ttarget: targetDimensions,\n\t\t\tcontent: contentDimensions,\n\t\t\tcontainer: containerDimensions,\n\t\t\tcontentArea: contentAreaDimensions,\n\t\t\tviewport: viewportDimensions,\n\t\t\tposition: pos,\n\t\t\toffset,\n\t\t\tconstrain,\n\t\t});\n\n\t\t// Entire content fits in this position, no need to try other options\n\t\tif (\n\t\t\tinfo.overlapRatios.container === 1 &&\n\t\t\tinfo.overlapRatios.viewport === 1\n\t\t) {\n\t\t\treturn info;\n\t\t}\n\n\t\tcandidates.push(info);\n\t}\n\n\t/* Sort to find highest visible ratio, aka the one that fits the most content */\n\tcandidates.sort(sortCandidates);\n\n\treturn candidates[0];\n}\n","const normalizeOrigin = (origin, dir) =>\n\torigin\n\t\t.replace(/-(start|end|left|right)$/, (match, group) => {\n\t\t\tconst isStart = group === 'start' || group === 'left';\n\n\t\t\tif (dir === 'rtl') {\n\t\t\t\treturn isStart ? '-end' : '-start';\n\t\t\t}\n\n\t\t\treturn isStart ? '-start' : '-end';\n\t\t})\n\t\t.split('-');\n\nconst toMatchingOrigin = ([vertical, horizontal]) => {\n\t// If vertical is center, flip the horizontal position\n\tif (vertical === 'center') {\n\t\treturn horizontal === 'start' ? ['center', 'end'] : ['center', 'start'];\n\t}\n\t// Otherwise flip the vertical position\n\treturn vertical === 'top' ? ['bottom', horizontal] : ['top', horizontal];\n};\n\nconst RE_POSITION_LONG =\n\t/^(top|bottom|center)-(left|right|start|end|center) (top|bottom|center)-(left|right|start|end|center)$/;\nconst RE_POSITION_SHORT = /^(top|bottom|center)-(left|right|start|end|center)$/;\n\n/**\n * Normalizes a position based on the following rules:\n * - if a position shorthand is provided, expands it to the full position (e.g. \"bottom-start\" > \"bottom-start top-start\")\n * - normalizes direction-specific inline properties to logical properties (e.g. \"bottom-right top-left\" > \"bottom-end top-start\")\n * - splits the normalized position into two arrays of origins (e.g. \"bottom-end top-start\" > [[\"bottom\", \"end\"], [\"top\", \"start\"]])\n * @param {string} position - Shorthand position (\"bottom-start\") or full position (\"bottom-right top-left\")\n * @return {Array<Origin[]>}\n */\nexport default function normalizePosition(position, dir) {\n\tif (RE_POSITION_LONG.test(position)) {\n\t\tconst [targetOrigin, contentOrigin] = position.split(' ');\n\t\treturn [\n\t\t\tnormalizeOrigin(targetOrigin, dir),\n\t\t\tnormalizeOrigin(contentOrigin, dir),\n\t\t];\n\t}\n\tif (RE_POSITION_SHORT.test(position)) {\n\t\tconst targetOrigin = normalizeOrigin(position, dir);\n\t\tconst contentOrigin = toMatchingOrigin(targetOrigin);\n\t\treturn [targetOrigin, contentOrigin];\n\t}\n\tthrow new Error(`${position} is not a valid position`);\n}\n","import isEmpty from 'lodash/isEmpty';\nimport isString from 'lodash/isString';\nimport isNumber from 'lodash/isNumber';\nimport isArray from 'lodash/isArray';\nimport mapValues from 'lodash/mapValues';\nimport normalizePosition from './fit/normalize-position';\n\nfunction positionToFitShorthand(position) {\n\tif (isString(position)) {\n\t\treturn position;\n\t}\n\n\tconst target = position.trigger || position.target;\n\tif (position.content) {\n\t\treturn `${target} ${position.content}`;\n\t}\n\n\treturn target;\n}\n\n/**\n * Popovers with tails default to centered positions.\n * Popovers without tails default to being aligned on some axis.\n */\nfunction resolvePosition(hideTail, positions, dir) {\n\t// Always prefer the positions provided by the consumer\n\tif (Array.isArray(positions) && !isEmpty(positions)) {\n\t\tpositions = positions.map(positionToFitShorthand);\n\t} else {\n\t\tpositions = hideTail\n\t\t\t? [\n\t\t\t\t\t'bottom-start top-start',\n\t\t\t\t\t'bottom-end top-end',\n\n\t\t\t\t\t'top-start bottom-start',\n\t\t\t\t\t'top-end bottom-end',\n\n\t\t\t\t\t'top-end top-start',\n\t\t\t\t\t'bottom-end bottom-start',\n\n\t\t\t\t\t'top-start top-end',\n\t\t\t\t\t'bottom-start bottom-end',\n\t\t\t\t]\n\t\t\t: [\n\t\t\t\t\t'top-center bottom-center',\n\t\t\t\t\t'bottom-center top-center',\n\t\t\t\t\t'center-end center-start',\n\t\t\t\t\t'center-start center-end',\n\t\t\t\t];\n\t}\n\n\treturn positions.map((position) => normalizePosition(position, dir));\n}\n\nfunction resolveOffset(hideTail, offset) {\n\tif (isNumber(offset) || isArray(offset)) {\n\t\treturn offset;\n\t}\n\treturn hideTail ? 0 : 12;\n}\n\nfunction resolveConstrain(constrain) {\n\treturn mapValues(constrain, (value) =>\n\t\tvalue === 'trigger' ? 'target' : value,\n\t);\n}\n\n/**\n * Compute properties that are important for fit, based on both the properties\n * that are passed in to the component and sane defaults which are different\n * whether or not we're rendering a tail.\n */\nexport function resolveFitProperties({\n\thideTail,\n\tpositions,\n\tconstrain,\n\toffset,\n\tdir,\n}) {\n\treturn {\n\t\tpositions: resolvePosition(hideTail, positions, dir),\n\t\toffset: resolveOffset(hideTail, offset),\n\t\tconstrain: resolveConstrain(constrain),\n\t};\n}\n","export const ariaLivePoliteness = {POLITE: 'polite', ASSERTIVE: 'assertive'};\n","export const isDesktopSafari = () =>\n\t/Version\\/([0-9._]+).*Safari/.test(navigator.userAgent);\n","export const getColumnStyles = (columns) => {\n\tif (columns?.length < 3) return {};\n\tconst customColumn = columns?.map((c) => `minmax(0, ${c})`)?.join(' ') ?? '';\n\treturn customColumn ? {'grid-template-columns': customColumn} : {};\n};\n","import {getEmbeddableBaseUrl} from '@servicenow/ui-config';\n\n/**\n * Given a URL, determines if the URL is relative or absolute.\n * If relative, uses the Seismic Config object to fetch the base URL and prepend it.\n * @param {string} url\n * @returns {string}\n */\nexport const toEmbeddableUrl = (url) => {\n\tif (url.indexOf('://') > 0 || url.indexOf('//') === 0) {\n\t\treturn url;\n\t}\n\tlet baseUrl = getEmbeddableBaseUrl();\n\tif (!baseUrl) {\n\t\treturn url;\n\t}\n\t// Try to avoid `//` problems\n\tif (url.indexOf('/') === 0) {\n\t\turl = url.substring(1);\n\t}\n\tif (baseUrl.lastIndexOf('/') === baseUrl.length - 1) {\n\t\tbaseUrl = baseUrl.substring(0, baseUrl.length - 1);\n\t}\n\treturn `${baseUrl}/${url}`;\n};\n","/**\n * The MIT License (MIT)\n * Copyright (c) 2015 Jonathan Ong me@jongleberry.com\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * https://github.com/component/textarea-caret-position/blob/master/index.js\n */\n\n// We'll copy the properties below into the mirror div.\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nvar properties = [\n\t'direction', // RTL support\n\t'boxSizing',\n\t'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n\t'height',\n\t'overflowX',\n\t'overflowY', // copy the scrollbar for IE\n\n\t'borderTopWidth',\n\t'borderRightWidth',\n\t'borderBottomWidth',\n\t'borderLeftWidth',\n\t'borderStyle',\n\n\t'paddingTop',\n\t'paddingRight',\n\t'paddingBottom',\n\t'paddingLeft',\n\n\t// https://developer.mozilla.org/en-US/docs/Web/CSS/font\n\t'fontStyle',\n\t'fontVariant',\n\t'fontWeight',\n\t'fontStretch',\n\t'fontSize',\n\t'fontSizeAdjust',\n\t'lineHeight',\n\t'fontFamily',\n\n\t'textAlign',\n\t'textTransform',\n\t'textIndent',\n\t'textDecoration', // might not make a difference, but better be safe\n\n\t'letterSpacing',\n\t'wordSpacing',\n\n\t'tabSize',\n\t'MozTabSize',\n];\n\nvar isBrowser = typeof window !== 'undefined';\n// var isFirefox = isBrowser && window.mozInnerScreenX != null;\n\nexport const getCaretCoordinates = (\n\telement,\n\tposition,\n\toptions,\n\tevent,\n\tprevCaretPos,\n) => {\n\tif (!isBrowser) {\n\t\tthrow new Error(\n\t\t\t'textarea-caret-position#getCaretCoordinates should only be called in a browser',\n\t\t);\n\t}\n\n\tvar debug = (options && options.debug) || false;\n\tif (debug) {\n\t\tvar el = document.querySelector(\n\t\t\t'#input-textarea-caret-position-mirror-div',\n\t\t);\n\t\tif (el) el.parentNode.removeChild(el);\n\t}\n\n\t// The mirror div will replicate the textarea's style\n\tvar div = document.createElement('div');\n\tdiv.id = 'input-textarea-caret-position-mirror-div';\n\tdocument.body.appendChild(div);\n\n\tvar style = div.style;\n\tvar computed = window.getComputedStyle\n\t\t? window.getComputedStyle(element)\n\t\t: element.currentStyle; // currentStyle for IE < 9\n\tvar isInput = element.nodeName === 'INPUT';\n\n\t// Default textarea styles\n\tstyle.whiteSpace = 'pre-wrap';\n\tif (!isInput) style.wordWrap = 'break-word'; // only for textarea-s\n\tif (isInput) style.whiteSpace = 'nowrap'; // only for inputs\n\n\t// Position off-screen\n\tstyle.position = 'absolute'; // required to return coordinates properly\n\tif (!debug) style.visibility = 'hidden'; // not 'display: none' because we want rendering\n\n\t// Transfer the element's properties to the div\n\tproperties.forEach(function (prop) {\n\t\tif (isInput && prop === 'lineHeight') {\n\t\t\t// Special case for <input>s because text is rendered centered and line height may be != height\n\t\t\tif (computed.boxSizing === 'border-box') {\n\t\t\t\tvar height = parseInt(computed.height);\n\t\t\t\tvar outerHeight =\n\t\t\t\t\tparseInt(computed.paddingTop) +\n\t\t\t\t\tparseInt(computed.paddingBottom) +\n\t\t\t\t\tparseInt(computed.borderTopWidth) +\n\t\t\t\t\tparseInt(computed.borderBottomWidth);\n\t\t\t\tvar targetHeight = outerHeight + parseInt(computed.lineHeight);\n\t\t\t\tif (height > targetHeight) {\n\t\t\t\t\tstyle.lineHeight = height - outerHeight + 'px';\n\t\t\t\t} else if (height === targetHeight) {\n\t\t\t\t\tstyle.lineHeight = computed.lineHeight;\n\t\t\t\t} else {\n\t\t\t\t\tstyle.lineHeight = 0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstyle.lineHeight = computed.height;\n\t\t\t}\n\t\t} else {\n\t\t\tstyle[prop] = computed[prop];\n\t\t}\n\t});\n\n\tstyle.overflow = computed.overflow;\n\tdiv.dir = 'ltr';\n\tdiv.textContent = element.value.substring(0, position);\n\t// The second special handling for input type=\"text\" vs textarea:\n\t// spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n\t// TODO: there's still a bug here, the positioning gets off if contents contain newlines [Randy]\n\tif (isInput) div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n\n\tvar span = document.createElement('span');\n\t// Wrapping must be replicated *exactly*, including when a long word gets\n\t// onto the next line, with whitespace at the end of the line before (#7).\n\t// The  *only* reliable way to do that is to copy the *entire* rest of the\n\t// textarea's content into the <span> created at the caret position.\n\t// For inputs, just '.' would be enough, but no need to bother.\n\tspan.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n\tlet coordinates;\n\tif (document.dir !== 'rtl') {\n\t\tdiv.appendChild(span);\n\t\tcoordinates = {\n\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\tinline: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n\t\t\theight: parseInt(computed['lineHeight']),\n\t\t};\n\t\tif (\n\t\t\tevent &&\n\t\t\tevent.type === 'mouseup' &&\n\t\t\telement.value.charAt(position - 1) === ' '\n\t\t) {\n\t\t\tconst mouseX = event.clientX - element.getBoundingClientRect().x;\n\t\t\tif (\n\t\t\t\tmouseX - coordinates.inline >\n\t\t\t\telement.getBoundingClientRect().width - mouseX\n\t\t\t) {\n\t\t\t\tspan.textContent = element.value.substring(position - 1) || '.';\n\t\t\t\tlet updatedCoords = {\n\t\t\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\t\t\tinline: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n\t\t\t\t\theight: parseInt(computed['lineHeight']),\n\t\t\t\t};\n\t\t\t\treturn updatedCoords;\n\t\t\t}\n\t\t} else if (\n\t\t\tevent &&\n\t\t\tevent.type === 'keyup' &&\n\t\t\t(event.key === 'ArrowDown' || event.key === 'ArrowUp') &&\n\t\t\tprevCaretPos &&\n\t\t\telement.value.charAt(position - 1) === ' '\n\t\t) {\n\t\t\tspan.textContent = element.value.substring(position - 1) || '.';\n\t\t\tlet updatedCoords = {\n\t\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\t\tinline: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n\t\t\t\theight: parseInt(computed['lineHeight']),\n\t\t\t};\n\t\t\tconst inlineDiff = Math.abs(prevCaretPos.inline - coordinates.inline);\n\t\t\tconst updateDiff = Math.abs(prevCaretPos.inline - updatedCoords.inline);\n\t\t\tif (inlineDiff === 0) {\n\t\t\t\t//at the start of the line\n\t\t\t\treturn coordinates;\n\t\t\t} else if (updateDiff < inlineDiff) {\n\t\t\t\treturn updatedCoords; //avoid going back to the start of the line\n\t\t\t} else {\n\t\t\t\treturn coordinates;\n\t\t\t}\n\t\t} else if (\n\t\t\tevent &&\n\t\t\tevent.type === 'keyup' &&\n\t\t\tevent.key === 'Meta' &&\n\t\t\telement.value.charAt(position - 1) === ' ' &&\n\t\t\tprevCaretPos\n\t\t) {\n\t\t\tspan.textContent = element.value.substring(position - 1) || '.';\n\t\t\tlet updatedCoords = {\n\t\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\t\tinline: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n\t\t\t\theight: parseInt(computed['lineHeight']),\n\t\t\t};\n\t\t\tif (updatedCoords.top !== prevCaretPos.top) {\n\t\t\t\treturn coordinates;\n\t\t\t} else {\n\t\t\t\treturn updatedCoords;\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// RTL wasn't working correctly for Chrome and Safari, so going with a different approach from\n\t\t// https://phuoc.ng/collection/mirror-a-text-area/calculate-the-coordinates-of-the-current-cursor-in-a-text-area/\n\t\t// The setup is mostly the same, but we use a span with a non-breaking space to simulate the caret and then use getBoundingClientRect\n\t\t// to get the coordinates for the inline position\n\t\tlet caretEl = document.createElement('span');\n\t\tcaretEl.innerHTML = '&nbsp;';\n\t\tdiv.appendChild(caretEl);\n\t\tdiv.appendChild(span);\n\t\tcoordinates = {\n\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\tinline: parseInt(\n\t\t\t\tdiv.getBoundingClientRect().width -\n\t\t\t\t\t(caretEl.getBoundingClientRect().x - div.getBoundingClientRect().x),\n\t\t\t),\n\t\t\theight: parseInt(computed['lineHeight']),\n\t\t};\n\t\tif (\n\t\t\tevent &&\n\t\t\tevent.type === 'keyup' &&\n\t\t\t(event.key === 'Meta' ||\n\t\t\t\tevent.key === 'ArrowUp' ||\n\t\t\t\tevent.key === 'ArrowDown') &&\n\t\t\telement.value.charCodeAt(position - 1) === 32 &&\n\t\t\tprevCaretPos\n\t\t) {\n\t\t\tdiv.removeChild(span);\n\t\t\tdiv.removeChild(caretEl);\n\t\t\tspan = document.createElement('span');\n\t\t\tspan.textContent = element.value.substring(position - 1) || '.';\n\t\t\tdiv.appendChild(span);\n\t\t\tlet updatedCoords = {\n\t\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\t\tinline:\n\t\t\t\t\tMath.abs(span.offsetLeft - span.offsetParent.offsetWidth) +\n\t\t\t\t\tparseInt(computed['borderRightWidth']),\n\t\t\t\theight: parseInt(computed['lineHeight']),\n\t\t\t};\n\n\t\t\tif (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n\t\t\t\tif (\n\t\t\t\t\tupdatedCoords.top !== prevCaretPos.top &&\n\t\t\t\t\tupdatedCoords.inline > coordinates.inline\n\t\t\t\t) {\n\t\t\t\t\treturn updatedCoords;\n\t\t\t\t} else {\n\t\t\t\t\treturn coordinates;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (updatedCoords.top !== prevCaretPos.top) {\n\t\t\t\treturn coordinates;\n\t\t\t} else {\n\t\t\t\treturn updatedCoords;\n\t\t\t}\n\t\t}\n\t}\n\tif (debug) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log(coordinates);\n\t\tspan.style.backgroundColor = '#aaa';\n\t} else {\n\t\tdocument.body.removeChild(div);\n\t}\n\n\treturn coordinates;\n};\n","export const sanitizeHref = (href) => {\n\tconst normalizedHref = href.trim().toLowerCase();\n\tif (\n\t\tnormalizedHref === 'javascript:void(0)' ||\n\t\tnormalizedHref === 'javascript:void(0);'\n\t) {\n\t\treturn href;\n\t}\n\tconst a = document.createElement('a');\n\ta.href = href;\n\treturn a.protocol === 'javascript:' ? undefined : href;\n};\n","export {isDirectionalKey, isNextKey, isPreviousKey} from './directional-keys';\nexport {extensionSplit} from './extension-split';\nexport {filterAriaAttributes} from './filter-aria-attributes';\nexport {findTabbableNodes, isFocusable} from './find-tabbable-nodes';\nexport {getActiveElement} from './get-active-element';\nexport {getShadowRootHost} from './get-shadow-root-host';\nexport {makeRedispatchEffect} from './make-redispatch-effect';\nexport {measureTextFactory} from './measure-text-factory';\nexport {textTransform} from './text-transform';\nexport {measureText} from './measure-text';\nexport {toArray} from './to-array';\nexport {matchSearchTerm} from './match-search-term';\nexport {default as layerEvents} from './layer-events';\nexport {domPurifyConfig} from './dom-purify-config';\n/**\n * DO NOT USE THESE FUNCTIONS.\n * `getBestFitInfo` and `resolveFitProperties` are for NDS use only.\n */\nimport {getBestFitInfo} from './fit/fit-info';\nimport {resolveFitProperties} from './resolve-fit-properties';\n\nexport const fit = {\n\tgetBestFitInfo,\n\tresolveFitProperties,\n};\n\nexport {ariaLivePoliteness} from './ariaLiveConstants';\nexport {isDesktopSafari} from './browser';\nexport {getColumnStyles} from './get-column-styles';\nexport {toEmbeddableUrl} from './to-embeddable-url';\nexport {getCaretCoordinates} from './get-caret-coordinates';\nexport {sanitizeHref} from './sanitize-href';\n","export const ariaTranslatableProps = {\n\t'aria-braillelabel': {type: 'string', translatable: true},\n\t'aria-brailleroledescription': {type: 'string', translatable: true},\n\t'aria-colindextext': {type: 'string', translatable: true},\n\t'aria-description': {type: 'string', translatable: true},\n\t'aria-label': {type: 'string', translatable: true},\n\t'aria-placeholder': {type: 'string', translatable: true},\n\t'aria-roledescription': {type: 'string', translatable: true},\n\t'aria-rowindextext': {type: 'string', translatable: true},\n\t'aria-valuetext': {type: 'string', translatable: true},\n};\n\nexport const configAriaSchema = {\n\ttype: 'object',\n\tproperties: {role: {type: 'string'}, ...ariaTranslatableProps},\n\tpatternProperties: {\n\t\t'^aria-': {type: 'string'},\n\t},\n\tadditionalProperties: false,\n};\n\nconst ariaTemplate = {\n\ttype: 'object',\n\tproperties: {'aria-label': {type: 'string', translatable: true}},\n\tpatternProperties: {\n\t\t'^aria-': {type: 'string'},\n\t},\n\tadditionalProperties: false,\n};\n\nexport const configAriaLabelSchema = {\n\t...ariaTemplate,\n\tpatternProperties: {\n\t\t'^aria-': {type: 'string'},\n\t\trole: {type: 'string'},\n\t},\n};\n\nexport const configAriaLabelRoleSchema = {\n\t...ariaTemplate,\n\tproperties: {\n\t\trole: {type: 'string'},\n\t\t'aria-label': {type: 'string', translatable: true},\n\t},\n};\n\nexport const configAriaLabelRoleHasPopUpSchema = {\n\t...ariaTemplate,\n\tproperties: {\n\t\trole: {type: 'string'},\n\t\t'aria-label': {type: 'string', translatable: true},\n\t\t'aria-haspopup': {type: 'string'},\n\t},\n};\n","export const contentIsOverset = (contentEl) => {\n\tif (!contentEl) return false;\n\t// Firefox sometimes sets scrollHeight to be ~1px larger than\n\t// clientHeight in cases when `overflow: hidden` is added to\n\t// an element.\n\tconst TOLERANCE = 2;\n\tconst contentHeight = contentEl.clientHeight + TOLERANCE;\n\treturn contentHeight < contentEl.scrollHeight;\n};\n","/**\n * TODO-THEMING: We'll eventually need to factor in the space\n * scale of this component.\n *\n * Return the approximate overset height of the alert (with no tolerance)\n * E.g., `75 * (X / 16)`, where `X` is the current page font-size.\n * @returns {number}\n */\nexport const getComputedOversetHeight = (fontSize, isParentFlex) => {\n\t/**\n\t * 75 is the approximate height of a collapsed, two line alert where\n\t * the page's font size is at 1rem (16px).\n\t * 81 is the approximate height of the collapse when the parent is a flex container.\n\t */\n\tconst COLLAPSED_ALERT_HEIGHT = isParentFlex ? 81 : 75;\n\tconst BASE_FONT_SIZE = 16;\n\treturn COLLAPSED_ALERT_HEIGHT * (fontSize / BASE_FONT_SIZE);\n};\n\nexport const getComputedOversetTextHeight = (fontSize) => {\n\t/**\n\t * 40 is the approximate height of the text of a collapse, two line alert where\n\t * the page's font size is at 1rem (16px).\n\t */\n\tconst COLLAPSED_ALERT_HEIGHT = 40;\n\tconst BASE_FONT_SIZE = 16;\n\treturn COLLAPSED_ALERT_HEIGHT * (fontSize / BASE_FONT_SIZE);\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {createRef} from '@servicenow/ui-renderer-snabbdom';\nimport {actionTypes} from '@servicenow/ui-core';\nconst {\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\nimport {\n\tFragment,\n\tdangerouslyCreateElementFromString,\n} from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_now-alert.scss';\nimport '@servicenow/now-button';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-text-link';\nimport {t} from 'sn-translate';\nimport resizeBehavior from '@servicenow/behavior-resize';\nimport focusBehavior, {handleFocusFirstNode} from '@servicenow/behavior-focus';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport {\n\tfilterAriaAttributes,\n\tdomPurifyConfig,\n} from '@servicenow/library-enhanced-utils';\nimport {handleResize} from './utils/handle-resize';\nimport {getComputedOversetHeight} from './utils/get-computed-overset-height';\nimport {\n\tconfigAriaLabelSchema,\n\tconfigAriaLabelRoleSchema,\n} from '@servicenow/library-schemas';\nimport DOMPurify from 'dompurify';\n\nconst MIN_DISMISS_DURATION_TIME = 3000;\nconst DEFAULT_DISMISS_DURATION_TIME = 5000;\n\nconst localizeStatus = (status) => {\n\tconst critical = t({\n\t\tkey: 'now-alert-status-critical',\n\t\tmessage: 'critical',\n\t\tcomment:\n\t\t\t\"Adjective. Conveys the severity of an alert to a screen reader user who can't see the alert color - e.g. critical, high, moderate, warning, info, low. This is the highest severity.\",\n\t});\n\tconst high = t({\n\t\tkey: 'now-alert-status-high',\n\t\tmessage: 'high',\n\t\tcomment:\n\t\t\t\"Adjective. Conveys the severity of an alert to a screen reader user who can't see the alert color - e.g. critical, high, moderate, warning, info, low. This is the second highest severity.\",\n\t});\n\tconst moderate = t({\n\t\tkey: 'now-alert-status-moderate',\n\t\tmessage: 'moderate',\n\t\tcomment:\n\t\t\t\"Adjective. Conveys the severity of an alert to a screen reader user who can't see the alert color - e.g. critical, high, moderate, warning, info, low. This severity is in the middle.\",\n\t});\n\tconst warning = t({\n\t\tkey: 'now-alert-status-warning',\n\t\tmessage: 'warning',\n\t\tcomment:\n\t\t\t\"Adjective. Conveys the severity of an alert to a screen reader user who can't see the alert color - e.g. critical, high, moderate, warning, info, low. This severity is non-critical and may be safe to ignore.\",\n\t});\n\tconst info = t({\n\t\tkey: 'now-alert-status-info',\n\t\tmessage: 'info',\n\t\tcomment:\n\t\t\t\"Adjective. Conveys the severity of an alert to a screen reader user who can't see the alert color - e.g. critical, high, moderate, warning, info, low. This severity is really just for informational purposes.\",\n\t});\n\tconst positive = t({\n\t\tkey: 'now-alert-status-positive',\n\t\tmessage: 'positive',\n\t\tcomment:\n\t\t\t\"Adjective. Conveys the severity of an alert to a screen reader user who can't see the alert color - e.g. critical, high, moderate, warning, info, low. This severity indicates an action was successful, for instance.\",\n\t});\n\tconst low = t({\n\t\tkey: 'now-alert-status-low',\n\t\tmessage: 'low',\n\t\tcomment:\n\t\t\t\"Adjective. Conveys the severity of an alert to a screen reader user who can't see the alert color - e.g. critical, high, moderate, warning, info, low. This severity is low priority.\",\n\t});\n\treturn {\n\t\tcritical,\n\t\thigh,\n\t\tmoderate,\n\t\twarning,\n\t\tinfo,\n\t\tpositive,\n\t\tlow,\n\t}[status];\n};\n\nconst isEmpty = (obj) => {\n\treturn Object.keys(obj).length === 0;\n};\n\nconst getProgress = (value, max) => {\n\tif (value < 0) {\n\t\treturn 0;\n\t} else if (value > max) {\n\t\treturn 100;\n\t} else if (value <= max) {\n\t\treturn (value * 100) / max;\n\t}\n};\n\nconst normalizeContent = (content) => {\n\tif (typeof content === 'undefined') {\n\t\treturn {};\n\t}\n\tif (typeof content === 'string') {\n\t\treturn {type: 'string', value: content};\n\t}\n\treturn content;\n};\n\nconst renderIcon = (icon) => {\n\treturn icon ? <now-icon className=\"now-alert-icon\" icon={icon} /> : undefined;\n};\n\nconst renderActionButton = (action = {}, status, configAria, onClick) => {\n\tconst {type} = action;\n\n\tif (type === 'open') {\n\t\tconst open = t({\n\t\t\tcode: 'now-alert-open-button',\n\t\t\tmessage: 'Open',\n\t\t\tcomment: 'As a verb. Opens a link when button is clicked on.',\n\t\t});\n\t\treturn (\n\t\t\t<now-button\n\t\t\t\tclassName=\"now-alert-button\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tlabel={action.label ? action.label : open}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tbutton: {\n\t\t\t\t\t\t'aria-label': t('Open and dismiss alert'),\n\t\t\t\t\t\t...filterAriaAttributes(configAria, 'action'),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\ton-click={onClick}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (type === 'acknowledge') {\n\t\tconst OK = t({\n\t\t\tcode: 'now-alert-acknowledge-button',\n\t\t\tmessage: 'OK',\n\t\t\tcomment: 'An acknowledgement of an alert, as in \"OK, I understand\"',\n\t\t});\n\t\treturn (\n\t\t\t<now-button\n\t\t\t\tclassName=\"now-alert-button\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tlabel={action.label ? action.label : OK}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tbutton: {\n\t\t\t\t\t\t'aria-label': t('Dismiss alert'),\n\t\t\t\t\t\t...filterAriaAttributes(configAria, 'action'),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\ton-click={onClick}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (type === 'dismiss') {\n\t\treturn (\n\t\t\t<now-button-iconic\n\t\t\t\tclassName=\"now-alert-button-iconic\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tbutton: {\n\t\t\t\t\t\t'aria-label': t('Dismiss alert'),\n\t\t\t\t\t\t...filterAriaAttributes(configAria, 'action'),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\ttooltip-content={t('Dismiss alert')}\n\t\t\t\ton-click={onClick}\n\t\t\t\ticon=\"close-outline\"\n\t\t\t\tbare\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn '';\n};\n\nconst renderExpandButton = (isOverset, contentIsReady, expanded, onClick) => {\n\t// Check for prevHeight so that the content doesn't expand and shrink\n\t// suddenly on first render due to this element\n\tconst label = expanded ? t('Show less') : t('Show more');\n\tconst description = t({\n\t\tkey: 'now-alert-expand-button-description',\n\t\tmessage:\n\t\t\t'This button is unnecessary because the full alert text is available to assistive technology.',\n\t\tcomment:\n\t\t\t'Comment to screen reader users about the fact that an expand/collapse button does not have any perceivable effect on the alert, since the full untruncated text is always read out to screen reader users.',\n\t});\n\treturn isOverset && contentIsReady ? (\n\t\t<now-button-bare\n\t\t\tclassName=\"now-alert-expand-button\"\n\t\t\ton-click={onClick}\n\t\t\tvariant=\"tertiary\"\n\t\t\thide-padding\n\t\t\thigh-contrast\n\t\t\tlabel={label}\n\t\t\ticon-end={expanded ? 'caret-up-fill' : 'caret-down-fill'}\n\t\t\tconfig-aria={{\n\t\t\t\tbutton: {\n\t\t\t\t\t'aria-label': label + '. ' + description,\n\t\t\t\t},\n\t\t\t}}\n\t\t/>\n\t) : undefined;\n};\n\nconst renderContent = (content) => {\n\tif (content.type === 'string') {\n\t\treturn <span>{content.value}</span>;\n\t}\n\tif (content.type === 'jsx') {\n\t\treturn content.value;\n\t}\n\tif (content.type === 'html') {\n\t\tconst sanitizedHtml = DOMPurify.sanitize(content.value, domPurifyConfig);\n\t\treturn dangerouslyCreateElementFromString(sanitizedHtml);\n\t}\n};\n\nconst renderAlert = (state, dispatch) => {\n\tconst {prevHeight: contentIsReady, isOverset, isButtonWrapped} = state;\n\tconst {\n\t\tstatus,\n\t\ticon = state.properties.iconName,\n\t\taction,\n\t\theader,\n\t\tcontent: rawContent,\n\t\ttextLinkProps,\n\t\texpanded,\n\t\tshowShadow,\n\t\tconfigAria,\n\t\tmaxHeight,\n\t} = state.properties;\n\tconst content = normalizeContent(rawContent);\n\n\t// `shouldExpand` will only use `expanded` after COMPONENT_RENDERED,\n\t// as that's when we've retrieved width and height values from resize behavior.\n\t// If we don't do this, all alerts will initially render  the'show more' or\n\t// 'show less' button and then immediately unrender it if not overset.\n\tconst shouldExpand = contentIsReady ? expanded : false;\n\tconst onTextLinkClick = () =>\n\t\tdispatch(() => {\n\t\t\treturn {\n\t\t\t\ttype: 'NOW_ALERT#TEXT_LINK_CLICKED',\n\t\t\t\tpayload: {},\n\t\t\t};\n\t\t});\n\treturn (\n\t\t<div\n\t\t\trole=\"alert\"\n\t\t\t{...filterAriaAttributes(configAria, 'alert')}\n\t\t\tclass={{\n\t\t\t\t'now-alert': true,\n\t\t\t\t['-' + status]: status,\n\t\t\t\t'show-shadow': showShadow,\n\t\t\t}}\n\t\t>\n\t\t\t{renderIcon(icon)}\n\t\t\t<span className=\"now-a11y-label\">\n\t\t\t\t{t('Alert level: {0}.', localizeStatus(status))}\n\t\t\t</span>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-alert-container': true,\n\t\t\t\t\t'is-button-wrapped': isButtonWrapped,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"now-line-height-crop\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-alert-content': true,\n\t\t\t\t\t\t\t'is-expanded': shouldExpand,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstyle={maxHeight ? {'max-block-size': `${maxHeight}px`} : undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t{header ? (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t<strong className=\"now-alert-header\">{header}</strong>{' '}\n\t\t\t\t\t\t\t\t{/* This \"natural\" space separates `header` from `content`. Don't delete. */}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t\t{renderContent(content)}\n\t\t\t\t\t\t{textLinkProps && textLinkProps.href && textLinkProps.label ? (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t{/* This \"natural\" space separates `content` from `linkText`. Don't delete. */}\n\t\t\t\t\t\t\t\t<now-text-link\n\t\t\t\t\t\t\t\t\tclassName=\"now-alert-text-link\"\n\t\t\t\t\t\t\t\t\thref={textLinkProps.href}\n\t\t\t\t\t\t\t\t\tlabel={textLinkProps.label}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tunderlined\n\t\t\t\t\t\t\t\t\topens-window\n\t\t\t\t\t\t\t\t\ton-click={onTextLinkClick}\n\t\t\t\t\t\t\t\t\tconfig-aria={textLinkProps.configAria}\n\t\t\t\t\t\t\t\t\t{...textLinkProps}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{renderExpandButton(isOverset, contentIsReady, expanded, () => {\n\t\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\t\ttype: 'NOW_ALERT#EXPANDED_SET',\n\t\t\t\t\t\tpayload: {value: !properties.expanded},\n\t\t\t\t\t}));\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t{renderActionButton(action, status, configAria, () => {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_ALERT#ACTION_CLICKED',\n\t\t\t\t\t\tpayload: {action},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nlet focusInSet = new Set();\nlet mouseEnterSet = new Set();\n\nconst secondsLabel = t({\n\tcode: 'now-alert-auto-dismiss-timer-label',\n\tmessage: 's',\n\tcomment: 'Number of seconds remaining on the countdown timer',\n});\n\nconst mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n\nconst reduceMotion = mediaQuery.matches;\n\nconst renderAutoDismissAlert = (state, dispatch) => {\n\tconst {\n\t\tprevHeight: contentIsReady,\n\t\tisOverset,\n\t\tisButtonWrapped,\n\t\tcountdownDuration,\n\t\tprogressBarRef,\n\t\ttimerLabelRef,\n\t\tstandalone,\n\t} = state;\n\tconst {\n\t\tstatus,\n\t\ticon = state.properties.iconName,\n\t\taction,\n\t\theader,\n\t\tcontent: rawContent,\n\t\ttextLinkProps,\n\t\texpanded,\n\t\tshowShadow,\n\t\tconfigAria,\n\t\tmaxHeight,\n\t\tautoDismissConfig,\n\t\tnowId,\n\t} = state.properties;\n\n\tconst content = normalizeContent(rawContent);\n\t// `shouldExpand` will only use `expanded` after COMPONENT_RENDERED,\n\t// as that's when we've retrieved width and height values from resize behavior.\n\t// If we don't do this, all alerts will initially render  the'show more' or\n\t// 'show less' button and then immediately unrender it if not overset.\n\tconst shouldExpand = contentIsReady ? expanded : false;\n\tconst onTextLinkClick = () =>\n\t\tdispatch(() => {\n\t\t\treturn {\n\t\t\t\ttype: 'NOW_ALERT#TEXT_LINK_CLICKED',\n\t\t\t\tpayload: {},\n\t\t\t};\n\t\t});\n\treturn (\n\t\t<div\n\t\t\trole=\"alert\"\n\t\t\t{...filterAriaAttributes(configAria, 'alert')}\n\t\t\tclass={{\n\t\t\t\t'now-alert': true,\n\t\t\t\t['-' + status]: status,\n\t\t\t\t'show-shadow': showShadow,\n\t\t\t\t'-dismiss': true,\n\t\t\t}}\n\t\t\ton-mouseenter={() => {\n\t\t\t\tif (standalone && countdownDuration > 0) {\n\t\t\t\t\tmouseEnterSet.add(nowId);\n\t\t\t\t\tdispatch('NOW_ALERT#DISMISS_TIMER_PAUSE');\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-mouseleave={() => {\n\t\t\t\tif (standalone && countdownDuration > 0) {\n\t\t\t\t\tmouseEnterSet.delete(nowId);\n\t\t\t\t\tif (!focusInSet.has(nowId)) {\n\t\t\t\t\t\tdispatch('NOW_ALERT#DISMISS_TIMER_START');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-focusin={() => {\n\t\t\t\tif (standalone && countdownDuration > 0) {\n\t\t\t\t\tfocusInSet.add(nowId);\n\t\t\t\t\tdispatch('NOW_ALERT#DISMISS_TIMER_PAUSE');\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-focusout={() => {\n\t\t\t\tif (standalone && countdownDuration > 0) {\n\t\t\t\t\tfocusInSet.delete(nowId);\n\t\t\t\t\tif (!mouseEnterSet.has(nowId)) {\n\t\t\t\t\t\tdispatch('NOW_ALERT#DISMISS_TIMER_START');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-alert-content-wrapper': true,\n\t\t\t\t\t'-progress-bar-hidden':\n\t\t\t\t\t\tautoDismissConfig.hideProgressBar || reduceMotion,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{renderIcon(icon)}\n\t\t\t\t<span className=\"now-a11y-label\">\n\t\t\t\t\t{t('Alert level: {0}.', localizeStatus(status))}\n\t\t\t\t</span>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-alert-container': true,\n\t\t\t\t\t\t'is-button-wrapped': isButtonWrapped,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"now-line-height-crop\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t'now-alert-content': true,\n\t\t\t\t\t\t\t\t'is-expanded': shouldExpand,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\tmaxHeight ? {'max-block-size': `${maxHeight}px`} : undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{header ? (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<strong className=\"now-alert-header\">{header}</strong>{' '}\n\t\t\t\t\t\t\t\t\t{/* This \"natural\" space separates `header` from `content`. Don't delete. */}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t\t\t{renderContent(content)}\n\t\t\t\t\t\t\t{textLinkProps && textLinkProps.href && textLinkProps.label ? (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t\t{/* This \"natural\" space separates `content` from `linkText`. Don't delete. */}\n\t\t\t\t\t\t\t\t\t<now-text-link\n\t\t\t\t\t\t\t\t\t\tclassName=\"now-alert-text-link\"\n\t\t\t\t\t\t\t\t\t\thref={textLinkProps.href}\n\t\t\t\t\t\t\t\t\t\tlabel={textLinkProps.label}\n\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tunderlined\n\t\t\t\t\t\t\t\t\t\topens-window\n\t\t\t\t\t\t\t\t\t\ton-click={onTextLinkClick}\n\t\t\t\t\t\t\t\t\t\tconfig-aria={textLinkProps.configAria}\n\t\t\t\t\t\t\t\t\t\t{...textLinkProps}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t{renderExpandButton(isOverset, contentIsReady, expanded, () => {\n\t\t\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\t\t\ttype: 'NOW_ALERT#EXPANDED_SET',\n\t\t\t\t\t\t\tpayload: {value: !properties.expanded},\n\t\t\t\t\t\t}));\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"now-alert-button-container\">\n\t\t\t\t\t{(autoDismissConfig.showTimer || reduceMotion) && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={timerLabelRef}\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t'now-alert-timer-label': true,\n\t\t\t\t\t\t\t\t['-' + status]: status,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>{Math.ceil(countdownDuration / 1000) + secondsLabel}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{renderActionButton(action, status, configAria, () =>\n\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttype: 'NOW_ALERT#ACTION_CLICKED',\n\t\t\t\t\t\t\t\tpayload: {action},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}),\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{!autoDismissConfig.hideProgressBar && !reduceMotion && (\n\t\t\t\t<div\n\t\t\t\t\tref={progressBarRef}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-alert-progress-bar': true,\n\t\t\t\t\t\t['-' + status]: status,\n\t\t\t\t\t}}\n\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\taria-label={t('Auto Dismiss Countdown')}\n\t\t\t\t\taria-valuemin=\"0\"\n\t\t\t\t\taria-valuemax={\n\t\t\t\t\t\tautoDismissConfig.duration\n\t\t\t\t\t\t\t? Math.ceil(\n\t\t\t\t\t\t\t\t\tMath.max(\n\t\t\t\t\t\t\t\t\t\tautoDismissConfig.duration,\n\t\t\t\t\t\t\t\t\t\tMIN_DISMISS_DURATION_TIME,\n\t\t\t\t\t\t\t\t\t) / 1000,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: Math.ceil(DEFAULT_DISMISS_DURATION_TIME / 1000)\n\t\t\t\t\t}\n\t\t\t\t\taria-valuenow={\n\t\t\t\t\t\tautoDismissConfig.duration\n\t\t\t\t\t\t\t? Math.ceil(autoDismissConfig.duration / 1000)\n\t\t\t\t\t\t\t: Math.ceil(DEFAULT_DISMISS_DURATION_TIME / 1000)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {autoDismissConfig} = state.properties;\n\n\treturn isEmpty(autoDismissConfig) || !autoDismissConfig.enableAutoDismiss\n\t\t? renderAlert(state, dispatch)\n\t\t: renderAutoDismissAlert(state, dispatch);\n};\n\n/**\n * A notification that can be optionally dismissed.\n *\n * ```jsx\n * <now-alert\n *   status=\"warning\"\n *   icon=\"exclamation-triangle-fill\"\n *   header=\"Warning:\"\n *   content=\"Something's not right.\"\n *   text-link-props={{label: 'More info', href: '#'}} />\n * ```\n *\n * @seismicElement now-alert\n * @summary Provides a message to the user as helpful information or warning.\n * @uib.label Alert\n * @uib.icon alert\n * @uib.description A notification that can be optionally dismissed\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties status, icon, header, content, textLinkProps, action, maxHeight, expanded, manageExpanded, enableFocus, configAria\n * @uib.layout.message.children icon, header, content\n * @uib.layout.message.icon chat-outline\n * @uib.layout.actions.children textLinkProps, action\n * @uib.layout.actions.icon direction-arrow-right-outline\n * @uib.layout.size.children maxHeight, expanded, manageExpanded\n * @uib.layout.size.icon fullscreen-outline\n * @uib.layout.accessibility.children enableFocus, configAria\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_ALERT#EXPANDED_SET, NOW_ALERT#ACTION_CLICKED, NOW_ALERT#TEXT_LINK_CLICKED\n */\ncreateEnhancedElement('now-alert', {\n\tproperties: {\n\t\t/**\n\t\t * Sets the alert color to indicate priority.\n\t\t * @type {('critical'|'high'|'moderate'|'warning'|'info'|'positive'|'low')}\n\t\t * @uib.label Type\n\t\t * @uib.description Sets the alert color to indicate priority\n\t\t */\n\t\tstatus: {\n\t\t\tdefault: 'info',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'critical',\n\t\t\t\t\t'high',\n\t\t\t\t\t'moderate',\n\t\t\t\t\t'warning',\n\t\t\t\t\t'info',\n\t\t\t\t\t'positive',\n\t\t\t\t\t'low',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/** @private */\n\t\ticonName: {},\n\t\t/**\n\t\t * Optional icon displayed at the start of the alert.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.description Optional icon displayed at the start of the alert\n\t\t * @uib.defaultValue circle-info-outline\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Optional title for the alert.\n\t\t * @type {string}\n\t\t * @uib.description Optional title for the alert\n\t\t * @uib.defaultValue Heads up\n\t\t * @uib.translatable true\n\t\t */\n\t\theader: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Optional message for the alert. Can be a string or an object with the\n\t\t * keys `type` and `value`. Accepted types are `string`, `html` or `jsx`.\n\t\t *\n\t\t * Note: For HTML content, `<script>` tags, inline JavaScript, and other possible security exploits will be removed.\n\t\t * @type {(string|Object)}\n\t\t * @uib.label Message\n\t\t * @uib.description Optional message for the alert.\n\t\t * @uib.defaultValue This needs your attention\n\t\t * @uib.fieldType string\n\t\t * @uib.translatable true\n\t\t */\n\t\tcontent: {\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{type: 'string', translatable: true},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: {type: 'string', enum: ['string', 'html', 'jsx']},\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\toneOf: [{type: 'string', translatable: true}, {type: 'object'}],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * If set to true, focuses on the first focusable element when the alert bar is triggered.\n\t\t * @type {boolean}\n\t\t * @uib.label Enable Focus\n\t\t * @uib.description If set to true, focuses on the first focusable element when the alert bar is triggered.\n\t\t * @uib.defaultValue false\n\t\t * @uib.fieldType boolean\n\t\t */\n\t\tenableFocus: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Object that defines an optional link in the alert. The link\n\t\t * opens in a new window when the user clicks it.\n\t\t *\n\t\t * The action `NOW_ALERT#TEXT_LINK_CLICKED` is dispatched when the user\n\t\t * clicks on the text link. The parent component or application must handle\n\t\t * this action and dismiss the alert.\n\t\t *\n\t\t * The keys of the object are properties for `now-text-link`. See\n\t\t * `now-text-link` for more documentation on supported properties. At minimum, provide:\n\t\t * - `label`: String. Text displayed as a link inside the alert. Required.\n\t\t * - `href`: String. Link URL opened when the user clicks the\n\t\t *   link text. Required.\n\t\t * @type {{label: string, href: string, variant: ('primary'|'secondary'), iconStart: string, iconEnd: string, underlined: boolean, opensWindow: boolean, download: (string|boolean), configAria: object }}\n\t\t * @uib.label Link\n\t\t * @uib.description Adds a link that dispatches `NOW_ALERT#TEXT_LINK_CLICKED` when clicked\n\t\t * @uib.defaultValue {\"label\": \"Link label\", \"href\": \"dummyHref\"}\n\t\t */\n\t\ttextLinkProps: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\thref: {type: 'string'},\n\t\t\t\t\tvariant: {type: 'string', enum: ['primary', 'secondary']},\n\t\t\t\t\ticonStart: {type: 'string'},\n\t\t\t\t\ticonEnd: {type: 'string'},\n\t\t\t\t\tunderlined: {type: 'boolean'},\n\t\t\t\t\topensWindow: {type: 'boolean'},\n\t\t\t\t\tdownload: {type: ['string', 'boolean']},\n\t\t\t\t\tconfigAria: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Object that defines an optional action to take in the alert message. If\n\t\t * this property is not set, the user can not dismiss the alert.\n\t\t *\n\t\t * The action `NOW_ALERT#ACTION_CLICKED` is dispatched when the user clicks\n\t\t * on the action. Its payload contains this `action` object. The parent\n\t\t * component or application must handle this action and dismiss the alert\n\t\t * and/or open a new window depending on the action type.\n\t\t *\n\t\t * Action objects are configured with the following keys:\n\t\t * - `type`: String. Sets the type of action, see below. Required.\n\t\t * - `href`: String. Use with type \"open\" to set the URL to\n\t\t *   open when the user clicks the button. Required.\n\t\t * - `label`: String. Use to override the default button text for actions\n\t\t *   of type \"open\" or \"acknowledge\". If the label is overridden, update the\n\t\t *   button's corresponding aria-label through the configAria property.\n\t\t *\n\t\t * Set the key `type` to pick an action:\n\t\t * - \"dismiss\": Displays an (X) button.\n\t\t * - \"acknowledge\": Displays an (OK) button by default, or a unique button name using the `label` property.\n\t\t * - \"open\": Displays an (Open) button by default, or a unique button name using the `label` property.\n\t\t * @type {{type: (\"dismiss\"|\"acknowledge\"|\"open\"), href: (string|undefined), label: (string|undefined)}}\n\t\t * @uib.description Adds an action to the alert, preventing the user from dismissing it\n\t\t * @uib.defaultValue {\"type\": \"acknowledge\", \"label\": \"Custom ok\"}\n\t\t */\n\t\taction: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {type: 'string', enum: ['dismiss', 'acknowledge', 'open']},\n\t\t\t\t\thref: {type: 'string'},\n\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-alert. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'action' key corresponds to the action button in\n\t\t * now-alert. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * The 'alert' key corresponds to the entire container in now-alert.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#alert or https://www.w3.org/TR/wai-aria-1.2/#status\n\t\t * for properties and accepted values.\n\t\t * @type {{ action: { 'aria-*': string, role: string }, alert: { 'aria-*': string, role: string } }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Sets ARIA properties on the inner html alert container and action 'button'\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\taction: configAriaLabelSchema,\n\t\t\t\t\t\t\talert: configAriaLabelRoleSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelRoleSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Specifies if the alert is expanded to show content beyond the\n\t\t * default alert size. Use `manage-expanded` to override the default behavior\n\t\t * and handle the `NOW_ALERT#EXPANDED_SET` action manually.\n\t\t * @type {boolean}\n\t\t * @uib.description Expands the alert to show content beyond the default alert size\n\t\t */\n\t\texpanded: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `expanded` property.\n\t\t * An action with type `NOW_ALERT#EXPANDED_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the expanded property. Use the expanded set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageExpanded: {default: false, schema: {type: 'boolean'}},\n\t\t/** @private */\n\t\tshowShadow: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Maximum height in pixels for the content area of an\n\t\t * expanded alert. If the content exceeds the provided height, a\n\t\t * scrollbar displays inside the alert.\n\t\t * @type {number}\n\t\t * @uib.description Maximum height in pixels for the content area of the alert.\n\t\t */\n\t\tmaxHeight: {schema: {type: 'number', minimum: 40}},\n\t\t/** @private */\n\t\tpauseAutoDismiss: {default: false, schema: {type: 'boolean'}},\n\t\t/** @private */\n\t\talertFocus: {default: false, schema: {type: 'boolean'}},\n\t\t/** @private */\n\t\tsavedDuration: {schema: {type: 'number'}},\n\t\t/**\n\t\t * An object that defines the auto-dismissal behavior of the alert.\n\t\t * If this property is not set, the alert does not auto dismiss.\n\t\t * The object has the following keys:\n\t\t * - `duration`: Number. Sets the time in milliseconds until the alert dismisses. Default is 5000 and the minimum is 3000.\n\t\t * - `showTimer`: Boolean. If true, a countdown timer displays the seconds remaing until the alert dismisses.\n\t\t * - `hideProgressBar`: Boolean. If true, the progress bar is hidden.\n\t\t * @type {{enableAutoDismiss: boolean, duration: number, showTimer: boolean, hideProgressBar: boolean}}\n\t\t */\n\t\tautoDismissConfig: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tenableAutoDismiss: {type: 'boolean'},\n\t\t\t\t\tduration: {type: 'number'},\n\t\t\t\t\tshowTimer: {type: 'boolean'},\n\t\t\t\t\thideProgressBar: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when an alert whose content overflows the default container\n\t\t * size is expanded or collapsed to show/hide the additional content.\n\t\t * Set the `manage-expanded` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t * @uib.description Dispatched when an alert whose content overflows the default container size is expanded or collapsed to show/hide the additional content.\n\t\t */\n\t\t'NOW_ALERT#EXPANDED_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user clicks on the action. Its payload contains\n\t\t * the `action` object passed in to the alert's configuration. The parent\n\t\t * component or application must handle this action and dismiss the alert\n\t\t * and/or open a new window, depending on the action type.\n\t\t * @type {{action: Object}}\n\t\t * @uib.label Alert action selected\n\t\t * @uib.description A user selects the action on the alert.\n\t\t */\n\t\t'NOW_ALERT#ACTION_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\taction: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user clicks on the text link. The parent component\n\t\t * or application must handle this action and dismiss the alert.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the user clicks on the text link.\n\t\t */\n\t\t'NOW_ALERT#TEXT_LINK_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/** @private */\n\t\t'NOW_ALERT#DISMISS_TIMER_START': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/** @private */\n\t\t'NOW_ALERT#DISMISS_TIMER_PAUSE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/** @private */\n\t\t'NOW_ALERT#DISMISS_TIMER_UPDATE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/** @private */\n\t\t'NOW_ALERT#FOCUS_AFTER_FIRST_RESIZE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when an alert is automatically dismissed.\n\t\t * @type {{}}\n\t\t */\n\t\t'NOW_ALERT#AUTO_DISMISS': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t},\n\tsetInitialState() {\n\t\treturn {\n\t\t\tcontentEl: null,\n\t\t\tprevWidth: 0,\n\t\t\tprevHeight: 0,\n\t\t\toversetHeight: getComputedOversetHeight(),\n\t\t\tisOverset: true,\n\t\t\tisButtonWrapped: false,\n\t\t\tcountdownDuration: DEFAULT_DISMISS_DURATION_TIME,\n\t\t\ttimerId: null,\n\t\t\tstandalone: true,\n\t\t\tprogressBarRef: createRef(),\n\t\t\ttimerLabelRef: createRef(),\n\t\t\texpandedFirstRender: true,\n\t\t};\n\t},\n\tactionHandlers: {\n\t\t'NOW_RESIZE#ELEMENT_RESIZED': handleResize,\n\t\t[COMPONENT_DOM_TREE_READY]: ({\n\t\t\taction,\n\t\t\thost,\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t}) => {\n\t\t\tconst {meta} = action;\n\t\t\tconst {\n\t\t\t\tautoDismissConfig,\n\t\t\t\tenableFocus,\n\t\t\t\texpanded,\n\t\t\t\tpauseAutoDismiss,\n\t\t\t\tsavedDuration,\n\t\t\t} = properties;\n\t\t\tconst {progressBarRef, timerId, contentEl} = state;\n\t\t\tif (!isEmpty(autoDismissConfig) && autoDismissConfig.enableAutoDismiss) {\n\t\t\t\tif (!autoDismissConfig.hideProgressBar && !reduceMotion) {\n\t\t\t\t\tconst {progressBarRef} = state;\n\t\t\t\t\tprogressBarRef.current.style.setProperty(\n\t\t\t\t\t\t'--now-alert_progress_bar--transition',\n\t\t\t\t\t\t'inline-size 200ms linear',\n\t\t\t\t\t);\n\t\t\t\t\tif (timerId) {\n\t\t\t\t\t\tprogressBarRef.current.style.borderBottomRightRadius = '0px';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (savedDuration === undefined) {\n\t\t\t\t\tconst {duration} = autoDismissConfig;\n\t\t\t\t\tif (duration) {\n\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\tpath: 'countdownDuration',\n\t\t\t\t\t\t\tvalue: Math.max(duration, MIN_DISMISS_DURATION_TIME),\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tshouldRender: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet totalDuration =\n\t\t\t\t\t\tautoDismissConfig.duration ?? DEFAULT_DISMISS_DURATION_TIME;\n\t\t\t\t\ttotalDuration = Math.max(totalDuration, MIN_DISMISS_DURATION_TIME);\n\t\t\t\t\tconst progress = getProgress(savedDuration, totalDuration);\n\t\t\t\t\tif (!autoDismissConfig.hideProgressBar && !reduceMotion) {\n\t\t\t\t\t\tprogressBarRef.current.style.borderBottomRightRadius = '0px';\n\t\t\t\t\t\tprogressBarRef.current.style.setProperty(\n\t\t\t\t\t\t\t'--now-alert_progress-bar--inline-size',\n\t\t\t\t\t\t\tprogress + '%',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tprogressBarRef.current.style.setProperty(\n\t\t\t\t\t\t\t'--now-alert_progress_bar--transition',\n\t\t\t\t\t\t\t'inline-size 200ms linear',\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpath: 'countdownDuration',\n\t\t\t\t\t\tvalue: savedDuration,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (meta.appended === 'from-alert-list') {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpath: 'standalone',\n\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (!pauseAutoDismiss && !timerId) {\n\t\t\t\t\t\tdispatch('NOW_ALERT#DISMISS_TIMER_START');\n\t\t\t\t\t}\n\t\t\t\t} else if (!enableFocus) {\n\t\t\t\t\tdispatch('NOW_ALERT#DISMISS_TIMER_START');\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (enableFocus && !expanded) {\n\t\t\t\thandleFocusFirstNode(host);\n\t\t\t}\n\t\t\tif (contentEl) {\n\t\t\t\tupdateState({contentEl: null});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_RENDERED]: ({properties, host}) => {\n\t\t\tconst {expanded} = properties;\n\t\t\tconst alertTextContainer =\n\t\t\t\thost.shadowRoot.querySelector('.now-alert-content');\n\t\t\tif (!expanded) {\n\t\t\t\talertTextContainer.removeAttribute('tabindex');\n\t\t\t} else {\n\t\t\t\tconst isContainerScrollable =\n\t\t\t\t\talertTextContainer.scrollHeight > alertTextContainer.clientHeight;\n\t\t\t\tif (isContainerScrollable) {\n\t\t\t\t\talertTextContainer.setAttribute('tabindex', 0);\n\t\t\t\t} else {\n\t\t\t\t\talertTextContainer.removeAttribute('tabindex');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\thost,\n\t\t\tstate,\n\t\t\taction,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t}) => {\n\t\t\tconst {autoDismissConfig} = properties;\n\t\t\tconst {name, value} = action.payload;\n\t\t\tif (name === 'enableFocus' && value) {\n\t\t\t\thandleFocusFirstNode(host);\n\t\t\t}\n\t\t\tif (isEmpty(autoDismissConfig) || !autoDismissConfig.enableAutoDismiss)\n\t\t\t\treturn;\n\t\t\tif (name === 'pauseAutoDismiss') {\n\t\t\t\tif (!value) {\n\t\t\t\t\tdispatch('NOW_ALERT#DISMISS_TIMER_START');\n\t\t\t\t} else {\n\t\t\t\t\tdispatch('NOW_ALERT#DISMISS_TIMER_PAUSE');\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (\n\t\t\t\tname === 'alertFocus' &&\n\t\t\t\t!autoDismissConfig?.hideProgressBar &&\n\t\t\t\t!reduceMotion\n\t\t\t) {\n\t\t\t\tif (value) {\n\t\t\t\t\tstate.progressBarRef.current.style.setProperty(\n\t\t\t\t\t\t'--now-alert_progress-bar--block-size',\n\t\t\t\t\t\t'4px',\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tstate.progressBarRef.current.style.setProperty(\n\t\t\t\t\t\t'--now-alert_progress-bar--block-size',\n\t\t\t\t\t\t'2px',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'NOW_ALERT#DISMISS_TIMER_PAUSE': ({state, updateState, dispatch}) => {\n\t\t\tif (state.timerId) {\n\t\t\t\tclearInterval(state.timerId);\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'timerId',\n\t\t\t\t\tvalue: null,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: true,\n\t\t\t\t});\n\t\t\t\tdispatch(({state}) => ({\n\t\t\t\t\ttype: 'NOW_ALERT#DISMISS_TIMER_UPDATE',\n\t\t\t\t\tpayload: {value: state.countdownDuration},\n\t\t\t\t\tshouldDispatch: true,\n\t\t\t\t}));\n\t\t\t}\n\t\t},\n\t\t'NOW_ALERT#DISMISS_TIMER_START': {\n\t\t\teffect: ({state, dispatch, updateState}) => {\n\t\t\t\tconst {autoDismissConfig} = state.properties;\n\t\t\t\tconst {countdownDuration} = state;\n\t\t\t\tlet totalDuration =\n\t\t\t\t\tautoDismissConfig.duration ?? DEFAULT_DISMISS_DURATION_TIME;\n\t\t\t\ttotalDuration = Math.max(totalDuration, MIN_DISMISS_DURATION_TIME);\n\t\t\t\tlet dismissTimer = countdownDuration;\n\t\t\t\tconst interval = setInterval(() => {\n\t\t\t\t\tif (dismissTimer <= 0) {\n\t\t\t\t\t\tclearTimeout(interval);\n\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\tpath: 'timerId',\n\t\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdispatch('NOW_ALERT#AUTO_DISMISS');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdismissTimer === totalDuration &&\n\t\t\t\t\t\t\t!autoDismissConfig.hideProgressBar &&\n\t\t\t\t\t\t\t!reduceMotion\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tstate.progressBarRef.current.style.borderBottomRightRadius =\n\t\t\t\t\t\t\t\t'0px';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdismissTimer -= 200;\n\t\t\t\t\t\tconst progress = getProgress(dismissTimer, totalDuration);\n\t\t\t\t\t\tif (!autoDismissConfig.hideProgressBar && !reduceMotion) {\n\t\t\t\t\t\t\tstate.progressBarRef.current.style.setProperty(\n\t\t\t\t\t\t\t\t'--now-alert_progress-bar--inline-size',\n\t\t\t\t\t\t\t\tprogress + '%',\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tstate.progressBarRef.current.setAttribute(\n\t\t\t\t\t\t\t\t'aria-valuenow',\n\t\t\t\t\t\t\t\tMath.ceil(dismissTimer / 1000),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (autoDismissConfig.showTimer) {\n\t\t\t\t\t\t\tstate.timerLabelRef.current.innerHTML =\n\t\t\t\t\t\t\t\tMath.ceil(dismissTimer / 1000) + secondsLabel;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\tpath: 'countdownDuration',\n\t\t\t\t\t\t\tvalue: dismissTimer,\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}, 200);\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'timerId',\n\t\t\t\t\tvalue: interval,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: true,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t'NOW_ALERT#FOCUS_AFTER_FIRST_RESIZE': ({host}) => {\n\t\t\thandleFocusFirstNode(host);\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{behavior: resizeBehavior, options: {timer: {type: 'throttle', wait: 50}}},\n\t\t{behavior: focusBehavior},\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: ['--now-messaging_message--font-size--md'],\n\t\t\t},\n\t\t},\n\t],\n\tstyles,\n\tview,\n});\n","import isEmpty from 'lodash/isEmpty';\nimport {contentIsOverset} from './content-is-overset';\nimport {\n\tgetComputedOversetHeight,\n\tgetComputedOversetTextHeight,\n} from './get-computed-overset-height';\n\nconst checkTextLinkPosition = (contentSpan, alertTextLink) => {\n\tconst contentRect = contentSpan.getBoundingClientRect();\n\tconst alertRect = alertTextLink.getBoundingClientRect();\n\tif (alertRect.bottom - contentRect.bottom > alertRect.height) {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nconst updateOverset = ({updateState, host, action, state, dispatch}) => {\n\tconst {theme} = state.behaviors;\n\tconst fontSize = theme['--now-messaging_message--font-size--md'].px;\n\tconst {height, width} = action.payload;\n\tconst {textLinkProps} = state.properties;\n\tconst hasTextLink = !isEmpty(textLinkProps);\n\tlet nextState = {};\n\tlet alertContentText;\n\tlet alertTextLink;\n\t// This is a setup step on first render only.\n\tif (!state.contentEl) {\n\t\tnextState.contentEl = host.shadowRoot.querySelector('.now-alert-content');\n\t\tif (nextState.contentEl) {\n\t\t\talertContentText = nextState.contentEl.querySelector('span');\n\t\t}\n\t} else {\n\t\talertContentText = state.contentEl.querySelector('span');\n\t}\n\tlet alertContentTextHeight = 0;\n\tif (alertContentText) {\n\t\talertContentTextHeight = alertContentText.getBoundingClientRect().height;\n\t}\n\tconst alertButton = host.shadowRoot.querySelector('.now-alert-button');\n\tlet alertButtonHeight = 0;\n\tif (alertButton && !alertButton.classList.contains('is-iconic')) {\n\t\tconst alertButtonText = alertButton.shadowRoot.querySelector(\n\t\t\t'.now-line-height-crop',\n\t\t);\n\t\talertButtonHeight = alertButtonText.getBoundingClientRect().height;\n\t}\n\n\tconst parent = host.parentElement;\n\tconst parentStyles = window.getComputedStyle(parent);\n\tconst isParentFlex = parentStyles.display === 'flex';\n\n\t// 75 is the approximate height of a collapsed, two line alert\n\t// where the page's font size is at 1rem (16px).\n\t// When the parent is a flex container, the height of the alert includes the bottom margin\n\t// Adjust the dimension change tolerance to 81 to account for this\n\tconst DIMENSION_CHANGE_TOLERANCE = isParentFlex ? 81 : 75;\n\n\tif (height !== state.prevHeight) {\n\t\tconst computedOversetHeight = getComputedOversetHeight(\n\t\t\tfontSize,\n\t\t\tisParentFlex,\n\t\t);\n\t\tif (state.oversetHeight !== computedOversetHeight) {\n\t\t\tnextState.oversetHeight = computedOversetHeight;\n\t\t}\n\n\t\tif (\n\t\t\tMath.abs(height - state.prevHeight) > DIMENSION_CHANGE_TOLERANCE ||\n\t\t\tMath.abs(width - state.prevWidth) > DIMENSION_CHANGE_TOLERANCE\n\t\t) {\n\t\t\tnextState.prevHeight = height;\n\t\t}\n\t}\n\n\t// In the case where these were updated above.\n\tconst oversetHeight = nextState.oversetHeight || state.oversetHeight;\n\tconst contentEl = nextState.contentEl || state.contentEl;\n\tconst OVERSET_TOLERANCE = 5;\n\tconst oversetHeightRangeMax = oversetHeight + OVERSET_TOLERANCE;\n\tconst oversetHeightRangeMin = oversetHeight - OVERSET_TOLERANCE;\n\tlet contentSpanContainsTextLink = true;\n\n\tif (hasTextLink && alertContentText) {\n\t\talertTextLink = contentEl.querySelector('now-text-link');\n\t\tcontentSpanContainsTextLink = checkTextLinkPosition(\n\t\t\talertContentText,\n\t\t\talertTextLink,\n\t\t);\n\t}\n\n\tconst contentFits = () =>\n\t\theight <= oversetHeightRangeMax && !contentIsOverset(contentEl);\n\tconst contentOverset = () =>\n\t\theight >= oversetHeightRangeMin || contentIsOverset(contentEl);\n\n\tif (width >= state.prevWidth && contentFits()) {\n\t\tnextState.isOverset = false;\n\t\tnextState.isButtonWrapped = false;\n\t} else if (width <= state.prevWidth && contentOverset()) {\n\t\tif (\n\t\t\talertButtonHeight > alertContentTextHeight &&\n\t\t\talertContentTextHeight < getComputedOversetTextHeight(fontSize) &&\n\t\t\tcontentSpanContainsTextLink\n\t\t) {\n\t\t\tnextState.isOverset = false;\n\t\t\tnextState.isButtonWrapped = true;\n\t\t} else {\n\t\t\tnextState.isOverset = true;\n\t\t\tnextState.isButtonWrapped = false;\n\t\t}\n\t} else if (\n\t\t!state.contentEl &&\n\t\talertButtonHeight > alertContentTextHeight &&\n\t\talertContentTextHeight < getComputedOversetTextHeight(fontSize) &&\n\t\tcontentSpanContainsTextLink\n\t) {\n\t\tnextState.isOverset = false;\n\t\tnextState.isButtonWrapped = true;\n\t} else if (\n\t\twidth >= state.prevWidth &&\n\t\tcontentOverset() &&\n\t\talertButtonHeight > alertContentTextHeight &&\n\t\talertContentTextHeight < getComputedOversetTextHeight(fontSize) &&\n\t\tcontentSpanContainsTextLink\n\t) {\n\t\tnextState.isOverset = false;\n\t\tnextState.isButtonWrapped = true;\n\t}\n\n\tif (width !== state.prevWidth) nextState.prevWidth = width;\n\tif (!isEmpty(nextState)) {\n\t\tif (\n\t\t\tstate.contentEl &&\n\t\t\tstate.contentEl.classList.contains('is-expanded') &&\n\t\t\tstate.expandedFirstRender &&\n\t\t\tstate.properties.enableFocus\n\t\t) {\n\t\t\tnextState.expandedFirstRender = false;\n\t\t\tdispatch('NOW_ALERT#FOCUS_AFTER_FIRST_RESIZE');\n\t\t}\n\t\tupdateState(nextState);\n\t}\n};\n\nexport const handleResize = (coeffects) =>\n\trequestAnimationFrame(() => updateOverset(coeffects));\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport {actionTypes} from '@servicenow/ui-core';\nconst {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n\tCOMPONENT_DISCONNECTED,\n} = actionTypes;\nimport styles from './_now-alert-list.scss';\nimport './now-alert';\nimport {t} from 'sn-translate';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {configAriaSchema} from '@servicenow/library-schemas';\nimport {getActiveElement} from '@servicenow/library-enhanced-utils';\nimport {\n\tregisterComponent,\n\tderegisterComponent,\n} from '@servicenow/now-trigger-library';\nconst ANNOUNCEMENT_MESSAGE = t({\n\tcode: 'now-alert-list-all-alerts-dismissed',\n\tmessage: 'All alerts have been dismissed',\n\tcomment:\n\t\t'These are instructions given to screen reader users who have presed shift + alt + q key to dismiss all the alerts.',\n});\n\nconst getIndividualAlerts = (host) => {\n\treturn [...host.shadowRoot.querySelectorAll('li')];\n};\n\nconst updateExpandedAlerts = (items, updateState) => {\n\titems.forEach((item) => {\n\t\tif (item.expanded) {\n\t\t\tupdateState({\n\t\t\t\tpath: `expandedAlerts.${item.id}`,\n\t\t\t\toperation: 'set',\n\t\t\t\tvalue: true,\n\t\t\t});\n\t\t}\n\t});\n};\n\nconst getToggleButton = (host) => {\n\treturn host.shadowRoot.querySelector(\n\t\t'.now-alert-list-controller-toggle-button',\n\t);\n};\n\nconst alertAutoDismissedHandler = ({\n\tproperties,\n\tcollated,\n\tdispatch,\n\tstate,\n\tupdateState,\n}) => {\n\tlet dismissedItems = [];\n\tlet updatedTimerMap = state.alertTimers;\n\tcollated.forEach((entry) => {\n\t\tdismissedItems.push(entry.action.payload.item);\n\t\tif (updatedTimerMap.has(entry.action.payload.item.id)) {\n\t\t\tupdatedTimerMap.delete(entry.action.payload.item.id);\n\t\t}\n\t});\n\tconst {items: sourceItems} = properties;\n\tconst filteredItems = sourceItems.filter(\n\t\t(item) => !dismissedItems.includes(item),\n\t);\n\tupdateState({\n\t\tpath: 'alertTimers',\n\t\tvalue: updatedTimerMap,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_ALERT_LIST#ITEMS_SET',\n\t\t\tpayload: {value: filteredItems},\n\t\t};\n\t});\n};\n\nconst alertDismissedHandler = ({\n\thost,\n\tproperties,\n\taction,\n\tdispatch,\n\tupdateState,\n\tstate,\n}) => {\n\tconst {items: sourceItems} = properties;\n\tconst {focusReferenceElement} = state;\n\tconst {item} = action.payload;\n\n\t// manage focus after the alert is dismissed\n\tconst index = sourceItems.indexOf(item);\n\tconst individualAlerts = getIndividualAlerts(host).reverse(); // reverse individualAlerts to match order of sourceItems array\n\tconst previousAlert = individualAlerts[index + 1]; // the alerts are displayed in reverse order so the previous one is at the next index of the array\n\tconst toggleButton = getToggleButton(host);\n\tif (sourceItems.length === 2 && !toggleButton) {\n\t\tupdateState({\n\t\t\tmoveFocus: true,\n\t\t});\n\t} else {\n\t\tconst nextFocused = previousAlert ? previousAlert : toggleButton;\n\t\tif (nextFocused) {\n\t\t\tnextFocused.focus();\n\t\t}\n\t}\n\n\t// manage state after the alert is dismissed\n\t// TODO: remove ternary when Seismic casts properties\n\tconst parsedItems =\n\t\ttypeof sourceItems === 'string' ? JSON.parse(sourceItems) : sourceItems;\n\tconst items = [...parsedItems];\n\titems.splice(index, 1);\n\tif (items.length === 0 && focusReferenceElement) {\n\t\tfocusReferenceElement.focus();\n\t\tupdateState({focusReferenceElement: null});\n\t}\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_ALERT_LIST#ITEMS_SET',\n\t\t\tpayload: {value: items},\n\t\t};\n\t});\n};\n\nconst ariaLabel = (items, collapsed) => {\n\treturn collapsed\n\t\t? t('Collapsed alert list with {0} alerts.', items.length)\n\t\t: t('Expanded alert list with {0} alerts.', items.length);\n};\n\nconst _renderCollapsedAlertList = (items) => {\n\tconst middleAlertStyle = {\n\t\tzIndex: '2',\n\t\tposition: 'absolute',\n\t\ttransform: 'translateY(-80%)',\n\t\tinlineSize: '100%',\n\t\toutline: 'none', // remove focus outline because this alert is not interactive and only here for visual presentation\n\t};\n\tconst bottomAlertStyle = {\n\t\tzIndex: '1',\n\t\tposition: 'absolute',\n\t\ttransform: 'translateY(-60%)',\n\t\tinlineSize: '100%',\n\t\toutline: 'none', // remove focus outline because this alert is not interactive and only here for visual presentation\n\t};\n\n\tconst alert1 = (\n\t\t<now-alert\n\t\t\taria-hidden=\"true\"\n\t\t\ttabindex=\"-1\"\n\t\t\tappend-to-meta={'from-alert-list'}\n\t\t\tstyle={middleAlertStyle}\n\t\t\tstatus={items[0].status}\n\t\t\tshow-shadow\n\t\t/>\n\t);\n\n\tconst alert2 = items[1] ? (\n\t\t<now-alert\n\t\t\taria-hidden=\"true\"\n\t\t\ttabindex=\"-1\"\n\t\t\tappend-to-meta={'from-alert-list'}\n\t\t\tstyle={bottomAlertStyle}\n\t\t\tstatus={items[1].status}\n\t\t\tshow-shadow\n\t\t/>\n\t) : undefined;\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{alert1}\n\t\t\t{alert2}\n\t\t</Fragment>\n\t);\n};\n\nconst _renderExpandedAlertList = (\n\tstate,\n\titems,\n\texpandedAlerts,\n\tmaxHeight,\n\tupdateState,\n) => {\n\treturn (\n\t\t<Fragment>\n\t\t\t{items.map((alert) => {\n\t\t\t\tlet {configAria = {}} = alert;\n\n\t\t\t\tif (configAria.alert) {\n\t\t\t\t\tconfigAria.alert.role = 'presentation';\n\t\t\t\t} else {\n\t\t\t\t\tconfigAria.alert = {role: 'presentation'};\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t// Safari tries to be clever with their \"is this is a list?\" heuristics which fail here\n\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-redundant-roles\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={alert.id}\n\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\ton-focus={() => {\n\t\t\t\t\t\t\tupdateState({alertFocus: alert.id});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-blur={() => {\n\t\t\t\t\t\t\tupdateState({alertFocus: null});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<now-alert\n\t\t\t\t\t\t\tappend-to-payload={{alertId: alert.id}}\n\t\t\t\t\t\t\tappend-to-meta={'from-alert-list'}\n\t\t\t\t\t\t\tauto-dismiss-config={alert.autoDismissConfig}\n\t\t\t\t\t\t\tstatus={alert.status}\n\t\t\t\t\t\t\ticon={alert.icon || alert.iconName}\n\t\t\t\t\t\t\theader={alert.header}\n\t\t\t\t\t\t\tcontent={alert.content}\n\t\t\t\t\t\t\ttext-link-props={alert.textLinkProps}\n\t\t\t\t\t\t\taction={alert.action}\n\t\t\t\t\t\t\texpanded={expandedAlerts[alert.id]}\n\t\t\t\t\t\t\tmax-height={maxHeight}\n\t\t\t\t\t\t\tshow-shadow\n\t\t\t\t\t\t\tconfig-aria={configAria}\n\t\t\t\t\t\t\tenable-focus={alert.enableFocus}\n\t\t\t\t\t\t\tpause-auto-dismiss={state.autoDismissTimersPaused}\n\t\t\t\t\t\t\talert-focus={state.alertFocus === alert.id}\n\t\t\t\t\t\t\tsaved-duration={state.alertTimers.get(alert.id)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Fragment>\n\t);\n};\n\nconst _renderController = (collapsed, onToggleController, onDismissAll) => {\n\treturn (\n\t\t<div className=\"now-alert-list-controller\">\n\t\t\t<div className=\"now-alert-list-controller-toggle\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"now-alert-list-controller-toggle-button now-button -secondary -md\"\n\t\t\t\t\taria-expanded={collapsed ? 'false' : 'true'}\n\t\t\t\t\ton-click={onToggleController}\n\t\t\t\t>\n\t\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t\t{collapsed ? t('Show alerts') : t('Hide alerts')}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div className=\"now-alert-list-controller-dismiss\">\n\t\t\t\t<now-button\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tclassName=\"now-alert-list-controller-dismiss-button\"\n\t\t\t\t\tlabel={t('Dismiss All')}\n\t\t\t\t\tconfig-aria={{button: {'aria-label': t('Dismiss all alerts')}}}\n\t\t\t\t\ton-click={onDismissAll}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {items, configAria, maxHeight, alertListMaxHeight} = state.properties;\n\tconst {collapsed, userInteractedWithController, expandedAlerts} = state;\n\tconst reversedAlerts = [...items].reverse();\n\tconst maxHeightStyle = {\n\t\tmaxHeight: alertListMaxHeight ? alertListMaxHeight : '80vh',\n\t\toverflowY: 'auto',\n\t};\n\tconst onToggleController = () => {\n\t\tif (items.length === 1) {\n\t\t\tupdateState({userInteractedWithController: false});\n\t\t} else {\n\t\t\tif (state.collapsed) {\n\t\t\t\tupdateState(({state}) => ({\n\t\t\t\t\toperation: 'merge',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tcollapsed: !state.collapsed,\n\t\t\t\t\t\tuserInteractedWithController: true,\n\t\t\t\t\t\tautoDismissTimersPaused: false,\n\t\t\t\t\t\thasFocusIn: false,\n\t\t\t\t\t\thasMouseEnter: false,\n\t\t\t\t\t},\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tupdateState({autoDismissTimersPaused: true});\n\t\t\t\tdispatch('PRIVATE#HIDE_ALERTS');\n\t\t\t}\n\t\t}\n\t};\n\n\tconst onDismissAll = () =>\n\t\tdispatch(() => {\n\t\t\treturn {\n\t\t\t\ttype: 'PRIVATE#DISMISS_ALL',\n\t\t\t\tpayload: {},\n\t\t\t};\n\t\t});\n\n\tconst controller =\n\t\titems &&\n\t\titems.length &&\n\t\t(collapsed || (!collapsed && userInteractedWithController))\n\t\t\t? _renderController(collapsed, onToggleController, onDismissAll)\n\t\t\t: undefined;\n\n\tconst alerts =\n\t\titems && items.length && collapsed\n\t\t\t? _renderCollapsedAlertList(reversedAlerts)\n\t\t\t: _renderExpandedAlertList(\n\t\t\t\t\tstate,\n\t\t\t\t\treversedAlerts,\n\t\t\t\t\texpandedAlerts,\n\t\t\t\t\tmaxHeight,\n\t\t\t\t\tupdateState,\n\t\t\t\t);\n\n\treturn (\n\t\t<div\n\t\t\tclass={{'now-alert-list': true, 'is-collapsed': collapsed}}\n\t\t\trole=\"alert\"\n\t\t\taria-atomic=\"false\"\n\t\t\t{...filterAriaAttributes(configAria, 'wrapper')}\n\t\t\ton-mouseenter={() => {\n\t\t\t\tupdateState({hasMouseEnter: true});\n\t\t\t\tif (!state.collapsed) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tautoDismissTimersPaused: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-mouseleave={() => {\n\t\t\t\tupdateState({hasMouseEnter: false});\n\t\t\t\tif (!state.collapsed) {\n\t\t\t\t\tif (!state.hasFocusIn) updateState({autoDismissTimersPaused: false});\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-focusin={() => {\n\t\t\t\tupdateState({hasFocusIn: true});\n\t\t\t\tif (!state.collapsed) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tautoDismissTimersPaused: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-focusout={() => {\n\t\t\t\tupdateState({hasFocusIn: false});\n\t\t\t\tif (!state.collapsed) {\n\t\t\t\t\tif (!state.hasMouseEnter)\n\t\t\t\t\t\tupdateState({autoDismissTimersPaused: false});\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t{controller}\n\t\t\t{/* Safari tries to be clever with their \"is this is a list?\" heuristics which fail here */}\n\t\t\t<ul\n\t\t\t\trole={collapsed ? undefined : 'list'}\n\t\t\t\tclassName=\"now-alert-list-ul\"\n\t\t\t\taria-label={ariaLabel(items, collapsed)}\n\t\t\t\t{...filterAriaAttributes(configAria, 'list')}\n\t\t\t\tstyle={collapsed ? undefined : maxHeightStyle}\n\t\t\t>\n\t\t\t\t{alerts}\n\t\t\t</ul>\n\t\t</div>\n\t);\n};\n\n/**\n * A list of now-alert elements, which can optionally be dismissed.\n *\n * ```jsx\n * <now-alert-list items=[...] />\n * ```\n * @seismicElement now-alert-list\n * @summary A list of now-alert elements, which can optionally be dismissed.\n * @shortcuts [{\"name\":\"Focus on active alert\", \"description\":\"Moves focus to the currently active alert.\",\"actionKey\": \"ACTIVE_ALERT_FOCUSED\",\"shortcut\": {\"mac\": {\"shiftKey\": true,\"altKey\": true,\"metaKey\": false,\"key\": \"o\"}}},{\"name\":\"Dismiss all alerts\", \"description\":\"Dismisses all the alerts.\",\"actionKey\": \"DISMISS_ALL_ALERTS\",\"shortcut\": {\"mac\": {\"shiftKey\": true,\"altKey\": true,\"metaKey\": false,\"key\": \"q\"}}}]\n */\ncreateEnhancedElement('now-alert-list', {\n\tproperties: {\n\t\t/**\n\t\t * List of alerts to display. See `now-alert` component documentation for\n\t\t * valid inputs for all sub-properties. Use `manage-items` to override the\n\t\t * default alert dismissal behavior and handle the `NOW_ALERT_LIST#ITEMS_SET`\n\t\t * action manually.\n\t\t * Assign a globally unique id to each alert to ensure that the alert's\n\t\t * state is correctly maintained as the user interacts with the alert list.\n\t\t * The alert list will not behave as expected if any alerts share the same id.\n\t\t * @type {Alert[]}\n\t\t */\n\t\titems: {\n\t\t\trequired: true,\n\t\t\tmanageable: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tid: {type: ['string', 'number']},\n\t\t\t\t\t\tstatus: {type: 'string'},\n\t\t\t\t\t\ticon: {type: 'string'},\n\t\t\t\t\t\theader: {type: 'string'},\n\t\t\t\t\t\tcontent: {type: ['string', 'object']},\n\t\t\t\t\t\ttextLinkProps: {type: 'object'},\n\t\t\t\t\t\taction: {type: 'object'},\n\t\t\t\t\t\texpanded: {type: 'boolean'},\n\t\t\t\t\t\tshowShadow: {type: 'boolean'},\n\t\t\t\t\t\tconfigAria: {type: 'object'},\n\t\t\t\t\t\tenableFocus: {type: 'boolean'},\n\t\t\t\t\t\tautoDismissConfig: {type: 'object'},\n\t\t\t\t\t},\n\t\t\t\t\trequired: ['id'],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Deprecated, use `config-aria` instead\n\t\t * Optionally configurable assertiveness level for the aria-live region\n\t\t * @private\n\t\t */\n\t\tconfigAriaLive: {\n\t\t\tdefault: 'off',\n\t\t\tschema: {type: 'string', enum: ['off', 'polite', 'assertive']},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific element within the now-alert-list.\n\t\t * The value of each key is an object that contains an ARIA property (or properties) and corresponding value/s.\n\t\t * These ARIA properties will be set on the specified element.\n\t\t * ARIA properties can be set on the now-alert-list using the key `list`.\n\t\t * @type {{ list: { 'aria-*': string, role: string }, wrapper: { 'aria-*': string, role: string } }}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdefault: {},\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tlist: configAriaSchema,\n\t\t\t\t\twrapper: configAriaSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Threshold at which to switch from displaying individual alerts to\n\t\t * displaying them as a stack with a show/hide button and \"dismiss all\" button.\n\t\t * @type {integer}\n\t\t */\n\t\tstackThreshold: {default: 3, schema: {type: 'integer', minimum: 2}},\n\t\t/**\n\t\t * Maximum height (as a number of pixels) for each expanded alert. If the\n\t\t * content exceeds the provided height, a scrollbar displays inside the alert.\n\t\t * @type {number}\n\t\t * @uib.description Maximum height (as a number of pixels) for each alert.\n\t\t */\n\t\tmaxHeight: {schema: {type: 'number', minimum: 50}},\n\t\t/**\n\t\t * Maximum height for the alert list. If the\n\t\t * content exceeds the provided height, a scrollbar is displayed.\n\t\t * @type {string}\n\t\t */\n\t\talertListMaxHeight: {default: '80vh', schema: {type: 'string'}},\n\t},\n\tinitialState: {\n\t\texpandedAlerts: {},\n\t\tuserInteractedWithController: false,\n\t\tcollapsed: false,\n\t\tmoveFocus: false,\n\t\tfocusReferenceElement: null,\n\t\tautoDismissTimersPaused: true,\n\t\talertFocus: null,\n\t\talertTimers: new Map(),\n\t\tregisteredComponentId: null,\n\t\thasFocusIn: false,\n\t\thasMouseEnter: false,\n\t},\n\tview,\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: ({properties, updateState}) => {\n\t\t\tconst {items, stackThreshold} = properties;\n\t\t\tif (items.length >= stackThreshold) {\n\t\t\t\tupdateState({collapsed: true});\n\t\t\t}\n\t\t\tupdateExpandedAlerts(items, updateState);\n\t\t},\n\t\t[COMPONENT_DOM_TREE_READY]: ({properties, updateState}) => {\n\t\t\tconst {items, stackThreshold} = properties;\n\t\t\tif (items.length < stackThreshold) {\n\t\t\t\tupdateState({autoDismissTimersPaused: false});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_RENDERED]: ({state, host, updateState}) => {\n\t\t\tconst {moveFocus} = state;\n\n\t\t\tif (moveFocus) {\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'moveFocus',\n\t\t\t\t\tvalue: false,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t\tconst focusableEl = getIndividualAlerts(host)[0];\n\t\t\t\tfocusableEl.focus();\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\tstate,\n\t\t\taction,\n\t\t\tupdateState,\n\t\t\tproperties,\n\t\t}) => {\n\t\t\tconst {name, value, previousValue} = action.payload;\n\t\t\tconst {stackThreshold} = properties;\n\t\t\tif (name === 'items') {\n\t\t\t\tupdateExpandedAlerts(value, updateState);\n\t\t\t\tconst nextLength = value.length;\n\t\t\t\tconst lastLength = previousValue ? previousValue.length : 0;\n\t\t\t\tif (nextLength !== lastLength) {\n\t\t\t\t\tconst {collapsed, userInteractedWithController} = state;\n\t\t\t\t\t/*\n\t\t\t\t\t * Case 1:\n\t\t\t\t\t * - If alert(s) reduced to 0:\n\t\t\t\t\t * - clear everything so we start fresh when new alerts are added\n\t\t\t\t\t *\n\t\t\t\t\t * Case 2:\n\t\t\t\t\t * - If alert(s) reduced to 1\n\t\t\t\t\t * - and the user didn't actively dismiss the alert (user can't dismiss alerts when list is collapsed):\n\t\t\t\t\t * - expand the list and hide the controller\n\t\t\t\t\t *\n\t\t\t\t\t * Case 3:\n\t\t\t\t\t * - If alert(s) reduced below stackThreshold\n\t\t\t\t\t * - and the list is auto collapsed (aka the user hasn't interacted with the controller):\n\t\t\t\t\t * - expand the list and hide the controller\n\t\t\t\t\t */\n\t\t\t\t\tif (\n\t\t\t\t\t\tnextLength === 0 ||\n\t\t\t\t\t\t(nextLength === 1 && collapsed) ||\n\t\t\t\t\t\t(nextLength < stackThreshold &&\n\t\t\t\t\t\t\tcollapsed &&\n\t\t\t\t\t\t\t!userInteractedWithController)\n\t\t\t\t\t) {\n\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\tcollapsed: false,\n\t\t\t\t\t\t\tautoDismissTimersPaused: false,\n\t\t\t\t\t\t\tuserInteractedWithController: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t/*\n\t\t\t\t\t * Case 4:\n\t\t\t\t\t * - If alert(s) increased at or above stackThreshold\n\t\t\t\t\t * - and the user hasn't actively expanded then collapsed the list (aka it was auto collapsed and not touched):\n\t\t\t\t\t * - collapse the list and show the controller\n\t\t\t\t\t */\n\t\t\t\t\tif (\n\t\t\t\t\t\tnextLength >= stackThreshold &&\n\t\t\t\t\t\tlastLength < stackThreshold &&\n\t\t\t\t\t\t!userInteractedWithController\n\t\t\t\t\t) {\n\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\tcollapsed: true,\n\t\t\t\t\t\t\tautoDismissTimersPaused: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_BOOTSTRAPPED]: ({updateState, host, dispatch}) => {\n\t\t\tconst registeredComponentId = registerComponent(host, {\n\t\t\t\tupdateState,\n\t\t\t\tactionMap: {\n\t\t\t\t\t['ACTIVE_ALERT_FOCUSED']: ({host}) => {\n\t\t\t\t\t\tconst activeElement = getActiveElement();\n\t\t\t\t\t\tconst focusableAlert = getIndividualAlerts(host);\n\t\t\t\t\t\tupdateState({focusReferenceElement: activeElement});\n\t\t\t\t\t\tconst nextFocusAlert =\n\t\t\t\t\t\t\tfocusableAlert?.length > 0\n\t\t\t\t\t\t\t\t? focusableAlert[0]\n\t\t\t\t\t\t\t\t: getToggleButton(host);\n\t\t\t\t\t\tnextFocusAlert?.focus();\n\t\t\t\t\t},\n\t\t\t\t\t['DISMISS_ALL_ALERTS']: () => {\n\t\t\t\t\t\tdispatch('PRIVATE#DISMISS_ALL');\n\t\t\t\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\t\t\t\tmessage: ANNOUNCEMENT_MESSAGE,\n\t\t\t\t\t\t\ttype: 'polite',\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t\tupdateState({\n\t\t\t\tpath: 'registeredComponentId',\n\t\t\t\tvalue: registeredComponentId,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t});\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({\n\t\t\tstate: {registeredComponentId},\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tif (registeredComponentId && deregisterComponent) {\n\t\t\t\tderegisterComponent(registeredComponentId);\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'registeredComponentId',\n\t\t\t\t\tvalue: null,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t'NOW_ALERT#ACTION_CLICKED': ({action, dispatch}) => {\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst item = properties.items.find(\n\t\t\t\t\t(item) => item.id === action.payload.alertId,\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_ALERT_LIST#ITEM_ACTION_CLICKED',\n\t\t\t\t\tpayload: {item},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t'NOW_ALERT_LIST#ITEM_ACTION_CLICKED': {\n\t\t\teffect: alertDismissedHandler,\n\t\t},\n\t\t'NOW_ALERT#TEXT_LINK_CLICKED': ({action, dispatch}) => {\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst item = properties.items.find(\n\t\t\t\t\t(item) => item.id === action.payload.alertId,\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_ALERT_LIST#ITEM_TEXT_LINK_CLICKED',\n\t\t\t\t\tpayload: {item},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t'NOW_ALERT_LIST#ITEM_TEXT_LINK_CLICKED': {\n\t\t\teffect: alertDismissedHandler,\n\t\t},\n\t\t'NOW_ALERT#EXPANDED_SET': ({action, updateState}) => {\n\t\t\tconst {alertId, value: expanded} = action.payload;\n\t\t\tupdateState({\n\t\t\t\tpath: `expandedAlerts.${alertId}`,\n\t\t\t\toperation: 'set',\n\t\t\t\tvalue: expanded,\n\t\t\t});\n\t\t},\n\t\t'PRIVATE#DISMISS_ALL': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({dispatch, updateState, state, properties}) => {\n\t\t\t\tconst {items} = properties;\n\t\t\t\tconst {focusReferenceElement, alertTimers} = state;\n\t\t\t\tlet updatedTimers = alertTimers;\n\t\t\t\titems.forEach((item) => {\n\t\t\t\t\tif (updatedTimers.has(item.id)) {\n\t\t\t\t\t\tupdatedTimers.delete(item.id);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_ALERT_LIST#ITEMS_SET',\n\t\t\t\t\t\tpayload: {value: []},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tupdateState({\n\t\t\t\t\tcollapsed: false,\n\t\t\t\t\tuserInteractedWithController: false,\n\t\t\t\t\talertTimers: updatedTimers,\n\t\t\t\t});\n\t\t\t\tif (focusReferenceElement) {\n\t\t\t\t\tfocusReferenceElement.focus();\n\t\t\t\t\tupdateState({focusReferenceElement: null});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#HIDE_ALERTS': {\n\t\t\tstopPropagation: true,\n\t\t\tmodifier: {name: 'debounce', delay: 5},\n\t\t\teffect: ({updateState}) => {\n\t\t\t\tupdateState({\n\t\t\t\t\tcollapsed: true,\n\t\t\t\t\tuserInteractedWithController: true,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t'NOW_ALERT#AUTO_DISMISS': ({action, dispatch}) => {\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst item = properties.items.find(\n\t\t\t\t\t(item) => item.id === action.payload.alertId,\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_ALERT_LIST#AUTO_DISMISS',\n\t\t\t\t\tpayload: {item},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t'NOW_ALERT_LIST#AUTO_DISMISS': {\n\t\t\tmodifier: {name: 'debounce', delay: 100, collate: true},\n\t\t\teffect: alertAutoDismissedHandler,\n\t\t},\n\t\t'NOW_ALERT#DISMISS_TIMER_UPDATE': ({action, dispatch}) => {\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst item = properties.items.find(\n\t\t\t\t\t(item) => item.id === action.payload.alertId,\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_ALERT_LIST#DISMISS_TIMER_UPDATE',\n\t\t\t\t\tpayload: {id: item.id, value: action.payload.value},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t'NOW_ALERT_LIST#DISMISS_TIMER_UPDATE': {\n\t\t\tmodifier: {name: 'debounce', delay: 1, collate: true},\n\t\t\teffect: ({collated, updateState}) => {\n\t\t\t\tlet updatedTimers = new Map();\n\t\t\t\tcollated.forEach((entry) => {\n\t\t\t\t\tupdatedTimers.set(\n\t\t\t\t\t\tentry.action.payload.id,\n\t\t\t\t\t\tentry.action.payload.value,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t\tupdateState({alertTimers: updatedTimers});\n\t\t\t},\n\t\t},\n\t},\n\tstyles,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t},\n\t],\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when an individual alert is dismissed, or when the `dismiss all`\n\t\t * button is used to dismiss all of the alerts in the list. The payload\n\t\t * will contain the array of non-dismissed alerts remaining in the list.\n\t\t * Set the `manage-items` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: Object[]}}\n\t\t */\n\t\t'NOW_ALERT_LIST#ITEMS_SET': {},\n\t\t/**\n\t\t * Dispatched when a user clicks on the action button within an\n\t\t * individual alert. Payload will contain the configuration passed in\n\t\t * for that alert item.\n\t\t * @type {{item: Object}}\n\t\t */\n\t\t'NOW_ALERT_LIST#ITEM_ACTION_CLICKED': {},\n\t\t/**\n\t\t * Dispatched when a user clicks on the text link within an\n\t\t * individual alert. Payload will contain the configuration passed in\n\t\t * for that alert item.\n\t\t * @type {{item: Object}}\n\t\t */\n\t\t'NOW_ALERT_LIST#ITEM_TEXT_LINK_CLICKED': {},\n\t\t/** @private */\n\t\t'NOW_ALERT_LIST#AUTO_DISMISS': {},\n\t\t/** @private */\n\t\t'NOW_ALERT_LIST#DISMISS_TIMER_UPDATE': {},\n\t},\n});\n","import './now-alert';\nimport './now-alert-list';\n\nimport * as info from '../package.json';\nconst {name, version} = info;\n\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import {createHttpEffect} from '@servicenow/ui-effect-http';\nexport const rgbToHsv = (rgb) => {\n\tconst parts = rgb.split(',');\n\tlet h, s, v;\n\tlet r = parts[0];\n\tlet g = parts[1];\n\tlet b = parts[2];\n\tr /= 255;\n\tg /= 255;\n\tb /= 255;\n\tconst maxc = Math.max(r, g, b);\n\tconst minc = Math.min(r, g, b);\n\tv = maxc;\n\tif (minc == maxc) {\n\t\treturn `0.0, 0.0, ${v}`;\n\t}\n\ts = (maxc - minc) / maxc;\n\tconst rc = (maxc - r) / (maxc - minc);\n\tconst gc = (maxc - g) / (maxc - minc);\n\tconst bc = (maxc - b) / (maxc - minc);\n\tif (r == maxc) h = 0.0 + bc - gc;\n\telse if (g == maxc) h = 2.0 + rc - bc;\n\telse h = 4.0 + gc - rc;\n\th = (h / 6.0) % 1.0;\n\treturn {\n\t\th: Math.round(h * 360 * 100) / 100,\n\t\ts: Math.round(s * 100 * 100) / 100,\n\t\tv: Math.round(v * 100 * 100) / 100,\n\t};\n};\n\nconst clr = (c1, c2, c3) => Math.round(Math.min(Math.max(c1, c2), c3));\n\nexport const hsvToRgb = (obj) => {\n\tvar hue = obj.h / 60,\n\t\tsat = obj.s / 100,\n\t\tval = obj.v / 100,\n\t\thue2 = Math.floor(hue),\n\t\th = hue - hue2,\n\t\tval1 = val * (1 - sat),\n\t\tval2 = val * (1 - h * sat),\n\t\tval3 = val * (1 - (1 - h) * sat),\n\t\tkey = hue2 % 6,\n\t\tred = [val, val2, val1, val1, val3, val][key],\n\t\tgreen = [val3, val, val, val2, val1, val1][key],\n\t\tblue = [val1, val1, val3, val, val, val2][key];\n\treturn {\n\t\tr: clr(red * 255, 0, 255),\n\t\tg: clr(green * 255, 0, 255),\n\t\tb: clr(blue * 255, 0, 255),\n\t};\n};\n\nexport const effectProxy = (coeffects, proxyFn = createHttpEffect) => {\n\t// This is to stub the createHttpEffect\n\tconst {\n\t\taction: {\n\t\t\tpayload: {path},\n\t\t},\n\t} = coeffects;\n\tconst fetchAnimation = proxyFn(path, {\n\t\tmethod: 'GET',\n\t\tbatch: false,\n\t\tsuccessActionType: 'PRIVATE#ANIMATION_FETCH_SUCCEEDED',\n\t\terrorActionType: 'PRIVATE#ANIMATION_FETCH_FAILED',\n\t});\n\treturn fetchAnimation.effect(...fetchAnimation.args, coeffects);\n};\n","import {rgbToHsv, hsvToRgb} from './';\n\nconst HSV = 'hsv';\nconst modify = (modifiers, svg) => {\n\tmodifiers.forEach((mod) => {\n\t\tconst {value = '79,82,189', source, space, offset, target} = mod;\n\t\tlet rgb = value; //default is polaris primary color\n\t\tif (window?.ux_globals?.theme?.theme) {\n\t\t\trgb = window.ux_globals.theme.theme[source];\n\t\t}\n\t\tif (rgb && space == HSV) {\n\t\t\tconst {h, s, v} = rgbToHsv(rgb);\n\t\t\tlet newH = Math.round(h + offset.h);\n\t\t\tif (newH < 0) newH = 360 + newH;\n\t\t\tconst {r, g, b} = hsvToRgb({h: newH, s, v});\n\t\t\tsvg.style.setProperty(target, `${r},${g},${b}`);\n\t\t} else {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t'Unable to modify color - missing or invalid source or unsupported color space (hsv only)',\n\t\t\t\t{target, space},\n\t\t\t);\n\t\t}\n\t});\n};\n\nexport const themeAnimation = (theme, svg, host) => {\n\tif (svg) {\n\t\tlet modifiers = [];\n\t\tconst style = document.createElement('STYLE');\n\t\tstyle.type = 'text/css';\n\t\tsvg.prepend(style);\n\t\tlet css = '';\n\t\ttheme.forEach((node) => {\n\t\t\tif (node.modifier) modifiers.push(node.modifier);\n\t\t\tconst {selector, rules, deleteNode} = node;\n\t\t\tif (deleteNode) {\n\t\t\t\tconst matches = host.shadowRoot.querySelectorAll(selector);\n\t\t\t\tArray.prototype.forEach.call(matches, function (node) {\n\t\t\t\t\tnode.parentNode.removeChild(node);\n\t\t\t\t});\n\t\t\t}\n\t\t\tcss += `${selector} {`;\n\t\t\tif (rules) {\n\t\t\t\trules.forEach((rule) => {\n\t\t\t\t\tcss += `${rule};`;\n\t\t\t\t});\n\t\t\t}\n\t\t\tcss += `}\\n`;\n\t\t});\n\t\tstyle.appendChild(document.createTextNode(css));\n\t\tmodify(modifiers, svg);\n\t}\n};\n","import {createCustomElement, actionTypes} from '@servicenow/ui-core';\nimport lottie from 'lottie-web';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {themeAnimation} from './utils/theme-animation';\n\nimport {effectProxy} from './utils/';\n\nconst {COMPONENT_DOM_READY, COMPONENT_DISCONNECTED} = actionTypes;\nconst NOW_ANIMATION_CUSTOM_PREFIX = '--now-animation-custom-';\n\nconst getAnimationPathFromTokenId = (tokenId, state) => {\n\tconst {\n\t\tbehaviors: {theme},\n\t} = state;\n\tlet path;\n\tif (theme) {\n\t\tObject.keys(theme).forEach((hook) => {\n\t\t\tif (hook == `${NOW_ANIMATION_CUSTOM_PREFIX}${tokenId}`) {\n\t\t\t\tpath = theme[hook];\n\t\t\t}\n\t\t});\n\t\treturn path;\n\t}\n\treturn;\n};\n\nexport const injectAria = (svg, configAriaToUse) => {\n\tif (svg) {\n\t\t// Iterate over the object's properties and set each attribute\n\t\tfor (const [name, value] of Object.entries(configAriaToUse)) {\n\t\t\tsvg.setAttribute(name, value);\n\t\t}\n\t}\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tanimation,\n\t\tproperties: {src, tokenId},\n\t} = state;\n\treturn (\n\t\t<div\n\t\t\tclassName=\"now-animation\"\n\t\t\ton-click={() => {\n\t\t\t\tdispatch('NOW_ANIMATION#CLICKED', {animation, src, tokenId});\n\t\t\t}}\n\t\t\ton-mouseenter={() => {\n\t\t\t\tdispatch('NOW_ANIMATION#MOUSEENTER', {animation, src, tokenId});\n\t\t\t}}\n\t\t\ton-mouseleave={() => {\n\t\t\t\tdispatch('NOW_ANIMATION#MOUSELEAVE', {animation, src, tokenId});\n\t\t\t}}\n\t\t></div>\n\t);\n};\n\n/**\n * The `now-animation` component allows users to display [lottie](https://https://lottiefiles.com/) based animations with the addition of optional theming and/or canvas based web-worker performance optimization support.\n *\n * ### Example Interactive Sparkle Animation Implementation\n * The `interactive-sparkle` animation has specific frame segments to support mouseenter and mouseleave events.\n *\n * <img width=\"1634\" alt=\"guidance\" src=\"https://code.devsnc.com/storage/user/3897/files/7ec42e94-4cbc-4426-8b62-f851dd05823d\">\n *\n * ```jsx\n * <now-animation\n * \tsrc=\"/images/@servicenow/now-animation/interactive-sparkle/index.json\"\n * \t/>\n * //See interactive-sparkle example\n *createCustomElement('sn-interactive-sparkle', {\n *\tview,\n *\tactionHandlers: {\n *\t\t['NOW_ANIMATION#MOUSEENTER']: {\n *\t\t\tstopPropagation: true,\n *\t\t\teffect: ({action: {payload}}) => {\n *\t\t\t\tconst {animation} = payload;\n *\t\t\t\tanimation.playSegments([0, 40], true);\n *\t\t\t},\n *\t\t},\n *\t\t['NOW_ANIMATION#MOUSELEAVE']: {\n *\t\t\tstopPropagation: true,\n *\t\t\teffect: ({action: {payload}}) => {\n *\t\t\t\tconst {animation} = payload;\n *\t\t\t\tanimation.playSegments([50, 90], true);\n *\t\t\t},\n *\t\t},\n *\t},\n * });\n * ```\n * ### Example Inline Sparkle Implementation\n * The `inline-sparkle` animation is intended to be used for page level loading.\n *\n * <img width=\"1434\" alt=\"guidance\" src=\"https://code.devsnc.com/storage/user/3897/files/db9247e6-28d7-4cee-b744-332c243c6a3f\">\n *\n * ```jsx\n *\t<now-animation\n *\t\tsrc=\"/images/@servicenow/now-animation/inline-sparke/index.json\"\n *\t/>\n *\n *\t// Arbitrary example\n *\t// When page loads sparkle is in initial static state (section #1),\n *\n *const INTRO = {segment: [1, 91], complete: false}; // section #2\n *const LOOP = {segment: [92, 203], complete: false}; // section #3\n *const OUTRO = {segment: [204, 274], complete: false}; // section #4\n *let loopCount = 0;\n *\n * //See inline-sparkle example\n *createCustomElement('sn-inline-sparkle', {\n *\tview,\n *\tactionHandlers: {\n *\t\t['NOW_ANIMATION#CLICKED']: {\n *\t\t\tstopPropagation: true,\n *\t\t\teffect: ({action: {payload}}) => {\n *\t\t\t\tconst {animation} = payload;\n *\t\t\t\tanimation.onComplete = () => {\n *\t\t\t\t\tconsole.log('onComplete');\n *\t\t\t\tif (OUTRO.complete) {\n *\t\t\t\t\t\tconsole.log('outro done');\n *\t\t\t\t\t\t// reset for next use\n *\t\t\t\t\t\tdelete animation.onComplete;\n *\t\t\t\t\t\tINTRO.complete = false;\n *\t\t\t\t\t\tOUTRO.complete = false;\n *\t\t\t\t\t\tLOOP.complete = false;\n *\t\t\t\t\t\tloopCount = 0;\n *\t\t\t\t\t} else {\n *\t\t\t\t\t\tconsole.log('start loop');\n *\t\t\t\t\t\tif (loopCount > 1) {\n *\t\t\t\t\t\t\tLOOP.complete = true;\n *\t\t\t\t\t\t\tOUTRO.complete = true;\n *\t\t\t\t\t\t\tanimation.playSegments(OUTRO.segment, true); // lastly the \"complete\" listener will be called\n * \t\t\t\t\t\t} else {\n *\t\t\t\t\t\t\tloopCount++;\n *\t\t\t\t\t\t\tconsole.log('play loop', {loopCount});\n *\t\t\t\t\t\t\tanimation.playSegments(LOOP.segment, true); // will call \"complete\" listener when done, will continue here until LOOP.complete is true\n *\t\t\t\t\t\t}\n *\t\t\t\t\t\t// after content is loaded/processing is complete, application will set LOOP.complete = true;\n *\t\t\t\t\t}\n *\t\t\t\t};\n *\t\t\t\t// event to trigger animation transition to loading (#2),\n *\t\t\t\tanimation.playSegments(INTRO.segment, true); // will trigger \"complete\" listener when done\n *\t\t\t\tanimation.play();\n *\t\t\t},\n *\t\t},\n *\t},\n *});\n * ```\n * @seismicElement now-animation\n * @summary A wrapper component around the lottie-web player to display animations, it add support for web-worker performance enhancements for canvas render mode and theming for the SVG render mode.\n * @uib.label Animation\n * @uib.icon illustration\n * @uib.description An animation component that wraps the lottie player to display animations.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties tokenId, src, autoplay, loop, configAria\n * @uib.actions NOW_ANIMATION#CLICKED, NOW_ANIMATION#MOUSEENTER, NOW_ANIMATION#MOUSELEAVE, NOW_ANIMATION#CONTENT_VISIBLE, NOW_ANIMATION#FETCH_FAILED\n */\ncreateCustomElement('now-animation', {\n\tproperties: {\n\t\t/**\n\t\t * The tokenId is a unique key suffix to be added to '--now-animation-custom-'.\n\t\t * This will enable dynamic style token creation, used to contain the animation.\n\t\t * Example tokenId=\"my-itsm-workspace-animation\".\n\t\t * The component will look for the deployed style token: \"--now-animation-custom-my-itsm-workspace-animation\"\n\t\t * and read it's value as a JSON.\n\t\t * @type {string}\n\t\t * @uib.description The unique key suffix to be added to '--now-animation-custom-' to enable style design token creation, that will contain the animation JSON.\n\t\t **/\n\t\ttokenId: {\n\t\t\tschema: {\n\t\t\t\tdefault: '',\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Source (path) from where the animation would be displayed.\n\t\t * @type {string}\n\t\t * @uib.label Animation source (path)\n\t\t * @uib.description Source (path) from where the animation would be displayed.\n\t\t */\n\t\tsrc: {required: false, schema: {type: 'string'}},\n\t\t/**\n\t\t * Loop property controls whether the animation should repeat continuously or play only once.\n\t\t * @type {boolean}\n\t\t * @uib.label Loop\n\t\t * @uib.description loop property controls whether the animation should repeat continuously or play only once.\n\t\t */\n\t\tloop: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * It is used to control whether the animation starts playing automatically when it's loaded.\n\t\t * @type {boolean}\n\t\t * @uib.label Autoplay\n\t\t * @uib.description It is used to control whether the animation starts playing automatically when it's loaded.\n\t\t */\n\t\tautoplay: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-animation. The value of the key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'animation' key corresponds to the entire container in now-animation.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#img\n\t\t * @type {{ animation: {'aria-*': string, role: string }}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tanimation: {...configAriaLabelSchema},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\tmethod: 'stop',\n\t\tanimation: null,\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: {\n\t\t\teffect: async ({state, dispatch}) => {\n\t\t\t\tconst {src, tokenId} = state.properties;\n\n\t\t\t\t//remove the animation instances if they already exist\n\t\t\t\tif (state.animation && Object.keys(state.animation).length !== 0) {\n\t\t\t\t\tstate.animation.destroy();\n\t\t\t\t}\n\n\t\t\t\tlet animationPath = src;\n\t\t\t\tif (tokenId) {\n\t\t\t\t\tconst themedPath = getAnimationPathFromTokenId(tokenId, state);\n\t\t\t\t\tif (themedPath) {\n\t\t\t\t\t\tanimationPath = themedPath;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!animationPath) return;\n\n\t\t\t\tdispatch('FETCH_ANIMATION', {path: animationPath});\n\t\t\t},\n\t\t},\n\t\tFETCH_ANIMATION: effectProxy,\n\t\t['PRIVATE#ANIMATION_FETCH_SUCCEEDED']: {\n\t\t\teffect: async (coeffects) => {\n\t\t\t\tconst {\n\t\t\t\t\taction: {payload: data},\n\t\t\t\t\thost,\n\t\t\t\t\tstate,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tdispatch,\n\t\t\t\t} = coeffects;\n\n\t\t\t\tconst {loop, autoplay, configAria, src, tokenId} = state.properties;\n\t\t\t\tconst getCanvas = host.shadowRoot.querySelector('.now-animation');\n\n\t\t\t\tif (!data) return;\n\n\t\t\t\tconst animation = lottie.loadAnimation({\n\t\t\t\t\tcontainer: getCanvas,\n\t\t\t\t\trenderer: 'svg',\n\t\t\t\t\tloop,\n\t\t\t\t\tautoplay,\n\t\t\t\t\tanimationData: data?.animation ? data.animation : data,\n\t\t\t\t});\n\n\t\t\t\t/*\n\t\t\t\t * Support OS based \"prefers reduced motion\" setting\n\t\t\t\t **/\n\t\t\t\tconst mediaQuery = window.matchMedia(\n\t\t\t\t\t'(prefers-reduced-motion: reduce)',\n\t\t\t\t);\n\t\t\t\tif (mediaQuery.matches) {\n\t\t\t\t\tanimation.setSpeed(0.5);\n\t\t\t\t}\n\n\t\t\t\tconst handleAnimationLoad = () => {\n\t\t\t\t\tconst svg = host.shadowRoot.querySelector('svg');\n\n\t\t\t\t\t//Inject aria attributes\n\t\t\t\t\tconst configAriaToUse = {\n\t\t\t\t\t\t...filterAriaAttributes(configAria, 'animation'),\n\t\t\t\t\t};\n\n\t\t\t\t\tif (svg) injectAria(svg, configAriaToUse);\n\n\t\t\t\t\tif (data?.theme && data.theme?.length > 0) {\n\t\t\t\t\t\tthemeAnimation(data.theme, svg, host);\n\t\t\t\t\t}\n\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpath: 'animation',\n\t\t\t\t\t\tvalue: animation,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tdispatch('NOW_ANIMATION#CONTENT_VISIBLE', {animation, src, tokenId});\n\t\t\t\t};\n\n\t\t\t\tanimation.addEventListener('DOMLoaded', handleAnimationLoad, {\n\t\t\t\t\tonce: true,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t['PRIVATE#ANIMATION_FETCH_FAILED']: {\n\t\t\teffect: ({action: {payload}, dispatch}) => {\n\t\t\t\tdispatch('NOW_ANIMATION#FETCH_FAILED', {...payload});\n\t\t\t},\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({state: {animation}}) => {\n\t\t\tif (!animation) return;\n\t\t\tanimation.destroy();\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the lottie animation is rendered on the page.\n\t\t * @uib.description Dispatched when the lottie animation is rendered on the page. The payload will include animation, src, and tokenId.\n\t\t * @type {{object}}\n\t\t * Each event will return a reference to the lottie animation instance, the src and tokenId properties, allowing users to interact with the lottie API directly. The src and tokenId properties are included if user needs to distinguish in the use case where a single event handler is shared.\n\t\t * `['NOW_ANIMATION#CLICKED]:({action:{payload}}) => {\n\t\t * \t\tconst {animation} = payload;\n\t\t * \t\tanimation.play();\n\t\t * }`\n\t\t * See [Lottie Usage for animation instance](https://airbnb.io/projects/lottie-web/).\n\t\t */\n\t\t'NOW_ANIMATION#CONTENT_VISIBLE': {default: false, schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched when the animation is clicked.\n\t\t * @type {{object}}\n\t\t * @uib.description Dispatched when the animation is clicked. The payload will include animation, src, and tokenId.\n\t\t */\n\t\t'NOW_ANIMATION#CLICKED': {default: false, schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched on mouseenter of the animation. The payload will include animation, src, and tokenId.\n\t\t * @type {{object}}\n\t\t * @uib.description Dispatched on mouseenter of the animation\n\t\t */\n\t\t'NOW_ANIMATION#MOUSEENTER': {default: false, schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched on mouseleave of the animation.\n\t\t * @type {{object}}\n\t\t * @uib.description Dispatched on mouseleave of the animation. The payload will include animation, src, and tokenId.\n\t\t */\n\t\t'NOW_ANIMATION#MOUSELEAVE': {default: false, schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched when the lottie animation fetch fails.\n\t\t * @type {{object}}\n\t\t * @uib.description Dispatched when the lottie animation fetch fails.\n\t\t */\n\t\t'NOW_ANIMATION#FETCH_FAILED': {default: false, schema: {type: 'object'}},\n\t},\n\tview,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: [`${NOW_ANIMATION_CUSTOM_PREFIX}*`],\n\t\t\t},\n\t\t},\n\t],\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {toEmbeddableUrl} from '@servicenow/library-enhanced-utils';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_now-avatar.scss';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-tooltip';\nimport {localizePresence} from '@servicenow/now-icon';\nimport {t} from 'sn-translate';\nimport {\n\tfilterAriaAttributes,\n\tsanitizeHref,\n} from '@servicenow/library-enhanced-utils';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport focusBehavior from '@servicenow/behavior-focus';\n\nimport packageInfo from '../package.json';\nconst {name, version} = packageInfo;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nconst _renderUserNameWithPresence = (userName, presence) => {\n\treturn t(\n\t\t{\n\t\t\tcode: 'now-avatar-tooltip',\n\t\t\tmessage: '{userName} is {presence}',\n\t\t\tcomment:\n\t\t\t\t'Describes the availability of a user. Possible values for presence are available, busy, away, or offline',\n\t\t},\n\t\t{userName, presence},\n\t);\n};\n\nconst _getLabel = (userName, presence) => {\n\tif (presence) {\n\t\tconst localizedPresence = localizePresence(presence);\n\t\treturn userName\n\t\t\t? _renderUserNameWithPresence(userName, localizedPresence)\n\t\t\t: _renderUserNameWithPresence('Unknown User', localizedPresence);\n\t} else {\n\t\treturn userName ? userName : t('Unknown User');\n\t}\n};\n\nconst _getInitials = (userName, size) => {\n\tif (!userName) {\n\t\treturn;\n\t}\n\n\t// Adapted from glide NGInitials.java to be consistent with UI16\n\t// (0) Remove non-word characters which are not { dot, space, parenthesis, double quote, square brackets }\n\t// NDS also has to support numbers and the plus character for avatar stacks that use something like \"+2\"\n\tuserName = userName.replace(/[^\\p{L}\\p{N}()[\\]+\".\\s]/gu, '');\n\t// (1) Remove everything wrapped in non-word characters like: David \"Danger\" Loo (NOW) -> David  Loo\n\tuserName = userName.replace(\n\t\t/[^\\p{L}\\s.^+][\\p{L}\\p{N}.@\\s]+[^\\p{L}\\s.]|[^\\p{L}\\p{N}+\\s.]/gu,\n\t\t'',\n\t);\n\t// (2) Remove multiple spaces: David  Loo -> David Loo\n\tuserName = userName.replace(/\\s+/gu, ' ');\n\t// (3) Remove leading and trailing spaces\n\tuserName = userName.trim();\n\t// (4) Remove leading period characters\n\tuserName = userName.replace(/^\\.+/gu, '');\n\t// (5) Remove leftover spaces\n\tuserName = userName.trim();\n\n\tlet firstInitial = '';\n\tlet lastInitial = '';\n\tconst nameParts = userName.split(' ');\n\n\tif (nameParts.length > 0 && nameParts[0] !== '') {\n\t\tfirstInitial = nameParts[0].charAt(0).toUpperCase();\n\t}\n\n\tif (\n\t\tsize !== 'xxs' &&\n\t\tsize !== 'xs' &&\n\t\tnameParts.length > 1 &&\n\t\tnameParts[nameParts.length - 1] !== ''\n\t) {\n\t\tlastInitial = nameParts[nameParts.length - 1].charAt(0).toUpperCase();\n\t}\n\n\treturn (\n\t\t<span className=\"now-avatar-label\">\n\t\t\t<span className=\"now-line-height-crop\">{firstInitial + lastInitial}</span>\n\t\t</span>\n\t);\n};\n\n// avatar sizes and icon sizes don't map directly\nconst sizeMap = {xxs: 'sm', xs: 'sm', sm: 'sm', md: 'md', lg: 'xl', xl: 'xl'};\n\nconst _renderContent = (\n\timageSrc,\n\tfailedImageSrc,\n\tuserName,\n\ticon,\n\tsize,\n\tpresence,\n\tupdateState,\n\tconfigAria,\n) => {\n\t// Display avatar image if provided\n\tif (imageSrc && imageSrc !== failedImageSrc) {\n\t\treturn (\n\t\t\t<img\n\t\t\t\tclassName=\"now-avatar-img\"\n\t\t\t\tsrc={toEmbeddableUrl(imageSrc)}\n\t\t\t\talt={_getLabel(userName, presence)}\n\t\t\t\ton-error={() => {\n\t\t\t\t\tupdateState({failedImageSrc: imageSrc});\n\t\t\t\t}}\n\t\t\t\t{...filterAriaAttributes(configAria, 'avatar')}\n\t\t\t/>\n\t\t);\n\t}\n\t// Fallback to display icon if provided\n\telse if (icon) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-avatar-icon\"\n\t\t\t\ticon={icon}\n\t\t\t\tsize={sizeMap[size]}\n\t\t\t\tconfigAria={{\n\t\t\t\t\ticon: {\n\t\t\t\t\t\t'aria-label': _getLabel(userName, presence),\n\t\t\t\t\t\t...filterAriaAttributes(configAria, 'avatar'),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n\t// Fallback to displaying user's initials\n\telse if (userName) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\taria-label={_getLabel(userName, presence)}\n\t\t\t\trole=\"img\"\n\t\t\t\t{...filterAriaAttributes(configAria, 'avatar')}\n\t\t\t>\n\t\t\t\t{_getInitials(userName, size)}\n\t\t\t</span>\n\t\t);\n\t}\n\t// Otherwise display the \"anonymous\" user icon\n\telse {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-avatar-icon\"\n\t\t\t\ticon=\"user-fill\"\n\t\t\t\tsize={sizeMap[size]}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\ticon: {\n\t\t\t\t\t\t'aria-label': _getLabel(userName, presence),\n\t\t\t\t\t\t...filterAriaAttributes(configAria, 'avatar'),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst _renderPresence = (size, presence) => {\n\treturn presence ? (\n\t\t<now-icon-presence\n\t\t\tclassName=\"now-avatar-icon-presence\"\n\t\t\tsize={sizeMap[size]}\n\t\t\tpresence={presence}\n\t\t\taria-hidden=\"true\"\n\t\t/>\n\t) : undefined;\n};\n\nconst _renderTooltip = (hideTooltip, targetRef, tooltipContent) => {\n\tif (tooltipContent && !hideTooltip) {\n\t\treturn (\n\t\t\t<now-tooltip\n\t\t\t\tid=\"tooltip\"\n\t\t\t\ttarget-ref={targetRef}\n\t\t\t\tcontent={tooltipContent}\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst view = (state, {updateState, dispatch}) => {\n\tconst {\n\t\tsize,\n\t\tuserName,\n\t\timageSrc,\n\t\tinteraction,\n\t\ticon,\n\t\tpresence,\n\t\thideTooltip,\n\t\tconfigAria,\n\t\ttooltipContent,\n\t\thref,\n\t\topensWindow,\n\t} = state.properties;\n\n\tconst {failedImageSrc, targetRef} = state;\n\tconst setTargetRef = (ref) => setTimeout(() => updateState({targetRef: ref}));\n\n\tconst avatarContent = _renderContent(\n\t\timageSrc,\n\t\tfailedImageSrc,\n\t\tuserName,\n\t\ticon,\n\t\tsize,\n\t\tpresence,\n\t\tupdateState,\n\t\tconfigAria,\n\t);\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{/* Adding this span container so the presence icon stays above the focus ring */}\n\t\t\t<span\n\t\t\t\tclass={{\n\t\t\t\t\t'now-avatar': true,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t'has-image': imageSrc,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{interaction == 'link' ? (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={sanitizeHref(href)}\n\t\t\t\t\t\thook-insert={({elm}) => setTargetRef(elm)}\n\t\t\t\t\t\thook-destroy={() => setTargetRef(null)}\n\t\t\t\t\t\tclassName=\"now-avatar-content -link\"\n\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: 'NOW_AVATAR#CLICKED',\n\t\t\t\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttarget={opensWindow ? '_blank' : undefined}\n\t\t\t\t\t\trel={opensWindow ? 'noopener' : undefined}\n\t\t\t\t\t\t{...filterAriaAttributes(configAria, 'link')}\n\t\t\t\t\t>\n\t\t\t\t\t\t{avatarContent}\n\t\t\t\t\t\t{opensWindow ? (\n\t\t\t\t\t\t\t<span id=\"linkLabel\" className=\"now-a11y-label\">\n\t\t\t\t\t\t\t\t{t('Link opens in new window or tab')}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</a>\n\t\t\t\t) : interaction == 'button' ? (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"now-avatar-content -button\"\n\t\t\t\t\t\thook-insert={({elm}) => setTargetRef(elm)}\n\t\t\t\t\t\thook-destroy={() => setTargetRef(null)}\n\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: 'NOW_AVATAR#CLICKED',\n\t\t\t\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\t\t\t>\n\t\t\t\t\t\t{avatarContent}\n\t\t\t\t\t</button>\n\t\t\t\t) : (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"now-avatar-content\"\n\t\t\t\t\t\thook-insert={({elm}) => setTargetRef(elm)}\n\t\t\t\t\t\thook-destroy={() => setTargetRef(null)}\n\t\t\t\t\t\ttabindex={!hideTooltip ? 0 : undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t{avatarContent}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{_renderPresence(size, presence)}\n\t\t\t</span>\n\t\t\t{_renderTooltip(\n\t\t\t\thideTooltip,\n\t\t\t\ttargetRef,\n\t\t\t\ttooltipContent ?? _getLabel(userName, presence),\n\t\t\t)}\n\t\t</Fragment>\n\t);\n};\n\n/**\n * Avatars provide a graphic representation of an identity, displayed as an\n * image, text, or anonymous icon. You can associate an avatar to an identity.\n * For example, you can add a user's avatar to a card to associate that card with the\n * user it is assigned to.\n *\n * ```jsx\n * <now-avatar size=\"sm\" />\n * <now-avatar size=\"md\" user-name=\"Fred Luddy\" presence=\"busy\" />\n * <now-avatar size=\"lg\" image-src=\"http://myImage.png\" />\n * <now-avatar size=\"xl\" user-name=\"Fred Luddy\" hide-tooltip />\n * ```\n *\n * @seismicElement now-avatar\n * @summary A graphical representation of a user, depicting an image, initials, or anonymous icon.\n * or an anonymous icon.\n * @uib.label Avatar\n * @uib.icon avatar\n * @uib.description A graphical representation of a user, depicting an image, initials, or anonymous icon.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, userName, imageSrc, icon, presence, configAria, tooltipContent, hideTooltip, interaction, href, opensWindow\n * @uib.layout.presence.children presence\n * @uib.layout.presence.icon circle-check-outline\n * @uib.layout.accessibility.children configAria, tooltipContent, hideTooltip\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_AVATAR#CLICKED\n */\ncreateEnhancedElement('now-avatar', {\n\tproperties: {\n\t\t/**\n\t\t * Size of the avatar.\n\t\t * @type {('xs'|'sm'|'md'|'lg'|'xl')}\n\t\t * @uib.description Size of the avatar\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Extra Small\", \"value\": \"xs\"}, {\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}, {\"label\": \"Large\", \"value\": \"lg\"}, {\"label\": \"Extra large\", \"value\": \"xl\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {type: 'string', enum: ['xxs', 'xs', 'sm', 'md', 'lg', 'xl']},\n\t\t},\n\t\t/**\n\t\t * Name of the user that the avatar represents. If no `imageSrc`\n\t\t * is provided, then the initials of the first and last names that are\n\t\t * provided in the string appear in the avatar. The name is also read\n\t\t * aloud to screen reader users. If no name is provided, the screen\n\t\t * reader will announce the avatar user as \"unknown user\".\n\t\t * @type {string}\n\t\t * @uib.description Name of the user. If no `imageSrc` is provided, then the initials of the first and last names that are provided in the string appear in the avatar. The name is also read aloud to screen reader users. If no name is provided, the screen reader will announce the avatar user as \"unknown user.\"\n\t\t * @uib.defaultValue John Doe\n\t\t */\n\t\tuserName: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Location of the user image to display in the avatar.\n\t\t * @type {string}\n\t\t * @uib.label Image source\n\t\t */\n\t\timageSrc: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Controls the interaction behavior of the avatar component.\n\t\t * - When set to \"button\", wraps the avatar in a <button> element.\n\t\t * - When set to \"link\", wraps the avatar in an <a> element.\n\t\t * - When set to \"none\" or not specified, the avatar remains unchanged.\n\t\t * @uib.description Interaction behavior of the avatar\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Link\", \"value\": \"link\"}, {\"label\": \"Button\", \"value\": \"button\"}, {\"label\": \"None\", \"value\": \"none\"}]\n\t\t * @uib.defaultValue none\n\t\t */\n\t\tinteraction: {\n\t\t\tdefault: 'none',\n\t\t\tschema: {type: 'string', enum: ['link', 'button', 'none']},\n\t\t},\n\t\t/**\n\t\t * Name or filepath of the icon to display in the avatar\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.fieldType icon\n\t\t * @uib.description Name of the icon to display in the avatar\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * The user's presence status, displayed with an indicator icon in the corner\n\t\t * of the avatar.\n\t\t * @type {('available'|'busy'|'away'|'offline')}\n\t\t * @uib.description Presence indicator in the corner\n\t\t * @uib.defaultValue available\n\t\t * @uib.typeMetadata.choices [{\"label\": \"None\", \"value\": \"\"}, {\"label\": \"Available\", \"value\": \"available\"}, {\"label\": \"Away\", \"value\": \"away\"}, {\"label\": \"Busy\", \"value\": \"busy\"}, {\"label\": \"Offline\", \"value\": \"offline\"}]\n\t\t */\n\t\tpresence: {\n\t\t\tschema: {type: 'string', enum: ['available', 'busy', 'away', 'offline']},\n\t\t},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\t\tshowPresencePattern: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, removes the visual tooltip that displays the full `userName` value on\n\t\t * hover. Will also remove the avatar from the tab order and make the avatar not\n\t\t * focusable.\n\t\t * @type {boolean}\n\t\t * @uib.description Suppress the tooltip on user name hover\n\t\t */\n\t\thideTooltip: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-avatar. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'avatar' key corresponds to the entire container in now-avatar.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#img or https://www.w3.org/TR/wai-aria-1.2/#status\n\t\t * for properties and accepted values.\n\t\t * @type {{ avatar: { 'aria-*': string, role: string } }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tavatar: configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text content shown inside the tooltip.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip text\n\t\t * @uib.defaultValue Enter a label\n\t\t * @uib.description Text to display in a tooltip that describes the avatar\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this link\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Link URL opened when the user clicks link text.\n\t\t * @type {string}\n\t\t * @uib.label Link\n\t\t * @uib.description URL opened when the user clicks link text\n\t\t * @uib.defaultValue https://www.servicenow.com/\n\t\t */\n\t\thref: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Opens link in a new window or tab (depending on user's browser\n\t\t * configuration). \"Link opens in new window\" is announced\n\t\t * to assistive technology users.\n\t\t *\n\t\t * Note: Open links in new browser windows or tabs sparingly\n\t\t * because it is less accessible for users.\n\t\t * @type {boolean}\n\t\t * @uib.label Open new window\n\t\t * @uib.description Opens link in a new window or tab (depending on user's browser configuration). \"Link opens in new window\" is announced to assistive technology users.\n\t\t */\n\t\topensWindow: {default: false, schema: {type: 'boolean'}},\n\t},\n\tinitialState: {\n\t\tfailedImageSrc: null,\n\t\ttargetRef: null,\n\t},\n\tview,\n\tbehaviors: [{behavior: focusBehavior}],\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when avatar is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when avatar is clicked and interaction is set to either button or link\n\t\t */\n\t\t'NOW_AVATAR#CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t},\n});\n","import {declarativeOperations} from '@servicenow/ui-core';\nexport const animatedIconHoverBehavior = {\n\tname: 'animatedIconHover',\n\tinitialState: {\n\t\ticonAnimations: [],\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['mouseenter', 'mouseleave'],\n\t\t\teffect({action, state, properties}) {\n\t\t\t\tconst {animatedIcon, animatedIconStart, animatedIconEnd, disabled} =\n\t\t\t\t\tproperties;\n\t\t\t\tconst isLeaveEvent = action.payload.event.type === 'mouseleave';\n\t\t\t\tconst direction = isLeaveEvent ? -1 : 1;\n\t\t\t\tconst speed = isLeaveEvent ? 1.5 : 1;\n\n\t\t\t\tif (\n\t\t\t\t\t(animatedIcon || animatedIconStart || animatedIconEnd) &&\n\t\t\t\t\t!disabled\n\t\t\t\t) {\n\t\t\t\t\tstate.behaviors.animatedIconHover.iconAnimations.forEach(\n\t\t\t\t\t\t(iconAnimation) => {\n\t\t\t\t\t\t\tconst {animation, reducedMotion} = iconAnimation;\n\t\t\t\t\t\t\tif (animation && !reducedMotion) {\n\t\t\t\t\t\t\t\tanimation.setDirection(direction);\n\t\t\t\t\t\t\t\tanimation.setSpeed(speed);\n\t\t\t\t\t\t\t\tanimation.play();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t['NOW_ICON_ANIMATED#CONTENT_VISIBLE']: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action, updateState}) => {\n\t\t\t\tconst {animation, reducedMotion} = action.payload;\n\t\t\t\tconst iconAnimation = {\n\t\t\t\t\tanimation,\n\t\t\t\t\treducedMotion,\n\t\t\t\t};\n\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'behaviors.animatedIconHover.iconAnimations',\n\t\t\t\t\tvalue: iconAnimation,\n\t\t\t\t\toperation: declarativeOperations.PUSH,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t},\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\textensionSplit,\n\tfilterAriaAttributes,\n} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport styles from './_now-button.scss';\nimport '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {animatedIconHoverBehavior} from './behaviors/index.js';\n\nconst {COMPONENT_RENDERED} = actionTypes;\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\nconst _renderIcon = (icon, size) => {\n\tif (icon) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-button-icon\"\n\t\t\t\ticon={icon}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst _renderAnimatedIcon = (animatedIcon, size) => {\n\tif (animatedIcon) {\n\t\treturn (\n\t\t\t<now-icon-animated\n\t\t\t\tclassName=\"now-button-icon\"\n\t\t\t\ticon={animatedIcon}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\n/** @seismicView now-button */\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tlabel,\n\t\tvariant,\n\t\tsize,\n\t\ticon = state.properties.iconName,\n\t\tbare,\n\t\tdisabled,\n\t\tconfigAria,\n\t\ttooltipContent,\n\t\tanimatedIcon,\n\t} = state.properties;\n\n\tconst ariaLabel = {...filterAriaAttributes(configAria, 'button')}?.[\n\t\t'aria-label'\n\t];\n\n\tlet dataAriaDescribedBy;\n\n\t// If aria-label from configAria is present, it will override\n\t// the button's aria-label; OR if no label is present, but there is\n\t// aria-label from configAria, then set data-ariadescribed by\n\t// to aria-label, which will be compared to tooltip\n\t// in behavior-tooltip's scheduler\n\tif ((ariaLabel && label) || (ariaLabel && !label)) {\n\t\tdataAriaDescribedBy = ariaLabel;\n\t}\n\n\t// If tooltip and label are present but no aria-label\n\t// is provided by configAria\n\t// button's aria-label will default to label.\n\t// Set data-ariadescribedby to label\n\t// to be compared with tooltip in behavior-tooltip's scheduler\n\tif (tooltipContent && label && !ariaLabel) {\n\t\tdataAriaDescribedBy = label;\n\t}\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\tdata-tooltip={tooltipContent}\n\t\t\tdata-ariadescribedby={dataAriaDescribedBy}\n\t\t\ton-mouseenter={handleTooltipShow(dispatch)}\n\t\t\ton-mouseleave={handleTooltipHide(dispatch)}\n\t\t\ton-focusin={handleTooltipShow(dispatch)}\n\t\t\ton-focusout={handleTooltipHide(dispatch)}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\ttype: 'NOW_BUTTON#CLICKED',\n\t\t\t\t\tpayload: {},\n\t\t\t\t\tshouldDispatch: !properties.disabled,\n\t\t\t\t}));\n\t\t\t}}\n\t\t\tclass={{\n\t\t\t\t'now-button': true,\n\t\t\t\t...extensionSplit(variant),\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'is-bare': bare,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'only-icon':\n\t\t\t\t\t((!icon && animatedIcon) || (icon && !animatedIcon)) && !label,\n\t\t\t}}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t<slot>\n\t\t\t\t{_renderIcon(icon, size)}\n\t\t\t\t{_renderAnimatedIcon(animatedIcon, size)}\n\t\t\t\t{label !== null && label !== undefined && (\n\t\t\t\t\t<span className=\"now-line-height-crop\">{label}</span>\n\t\t\t\t)}\n\t\t\t</slot>\n\t\t</button>\n\t);\n};\n\n/**\n * Buttons help users act, undo a mistake, or keep a conversation going.\n *\n * There are many types and sizes of buttons, each with a proper use case.\n * In addition to type and size, buttons use smaller design elements\n * such as containers, borders, colors, icons, or text, to accommodate specific use cases.\n *\n * ```jsx\n * <now-button label=\"Click me\" variant=\"primary\" size=\"lg\" />\n * <now-button label=\"Settings\" icon=\"gear-fill\" />\n * <now-button label=\"Disabled button\" disabled />\n * ```\n *\n * @seismicElement now-button\n * @summary Simple button. Contains a text label and an optional icon.\n * @uib.label Button\n * @uib.icon button\n * @uib.description Button with a background color.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties label, variant, size, disabled, icon, animatedIcon, tooltipContent, configAria, landmark\n * @uib.layout.identifier.children icon, animatedIcon\n * @uib.layout.identifier.icon image-outline\n * @uib.layout.accessibility.children tooltipContent, configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON#CLICKED\n * @uib.slots\n */\ncreateEnhancedElement('now-button', {\n\tproperties: {\n\t\t/**\n\t\t * Text displayed inside the button.\n\t\t * @type {string}\n\t\t * @uib.label Label\n\t\t * @uib.defaultValue Button\n\t\t * @uib.description Text displayed inside the button\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: ['string', 'number']}},\n\n\t\t/**\n\t\t * Sets the button style, including color and interaction behavior.\n\t\t * @type {('primary'|'primary-positive'|'primary-negative'|'secondary'|'secondary-positive'|'secondary-negative'|'tertiary')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Sets the button style\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Primary\", \"value\": \"primary\"}, {\"label\": \"Secondary\", \"value\": \"secondary\"}, {\"label\": \"Tertiary\", \"value\": \"tertiary\"}, {\"label\": \"Positive Primary\", \"value\": \"primary-positive\"}, {\"label\": \"Positive Secondary\", \"value\": \"secondary-positive\"}, {\"label\": \"Negative Primary\", \"value\": \"primary-negative\"}, {\"label\": \"Negative Secondary\", \"value\": \"secondary-negative\"}]\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'secondary',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'primary',\n\t\t\t\t\t'primary-positive',\n\t\t\t\t\t'primary-negative',\n\t\t\t\t\t'secondary',\n\t\t\t\t\t'secondary-positive',\n\t\t\t\t\t'secondary-negative',\n\t\t\t\t\t'tertiary',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the button size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.label Size\n\t\t * @uib.description Sets the button size\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md', 'lg'],\n\t\t\t},\n\t\t},\n\t\t/** @private */\n\t\ticonName: {},\n\t\t/**\n\t\t * If defined, specifies the icon to display at the start of the button.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * For icon-only buttons, use `<now-button-iconic>` instead.\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.description Defines icon displayed at the start of the button\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display at the start of the button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * For icon-only buttons, use `<now-button-iconic>` instead.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon\n\t\t * @uib.description Defines the animated icon displayed at the start of the button\n\t\t */\n\t\tanimatedIcon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Deprecated in favor of the `<now-button-bare>` tag.\n\t\t * @private\n\t\t */\n\t\tbare: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, mutes the button color and prevents user click interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description When true, disables user click interactions\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties will be set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string, role: string }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelRoleHasPopUpSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text content shown inside the tooltip. Not displayed if button is\n\t\t * disabled.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip label\n\t\t * @uib.defaultValue Enter a label\n\t\t * @uib.description Text shown inside the tooltip\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [focusBehavior, tooltipBehavior, animatedIconHoverBehavior],\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({host, properties}) => {\n\t\t\tconst buttonEl = host.shadowRoot.querySelector('.now-button');\n\t\t\tif (properties.disabled || !properties.tooltipContent) {\n\t\t\t\tdelete buttonEl.dataset.tooltip;\n\t\t\t} else {\n\t\t\t\tbuttonEl.dataset.tooltip = properties.tooltipContent;\n\t\t\t}\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the button is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the button is clicked\n\t\t */\n\t\t'NOW_BUTTON#CLICKED': {default: false, schema: {type: 'object'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content placed in the default slot appears inside\n\t\t * the button body, taking the place of the `icon` and/or `label`.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-button-bare.scss';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-tooltip';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {animatedIconHoverBehavior} from './behaviors/index.js';\n\nconst _renderIcon = (icon, logicalProperty, size) => {\n\tif (icon) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclass={{\n\t\t\t\t\t'now-button-bare-icon': true,\n\t\t\t\t\t['now-m-' + logicalProperty + '--xs']: size === 'lg',\n\t\t\t\t\t['now-m-' + logicalProperty + '--xxs']: size !== 'lg',\n\t\t\t\t}}\n\t\t\t\ticon={icon}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\nconst _renderAnimatedIcon = (animatedIcon, logicalProperty, size) => {\n\tif (animatedIcon) {\n\t\treturn (\n\t\t\t<now-icon-animated\n\t\t\t\tclass={{\n\t\t\t\t\t'now-button-bare-icon': true,\n\t\t\t\t\t['now-m-' + logicalProperty + '--xs']: size === 'lg',\n\t\t\t\t\t['now-m-' + logicalProperty + '--xxs']: size !== 'lg',\n\t\t\t\t}}\n\t\t\t\ticon={animatedIcon}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst handleTooltipShow = (e, dispatch) => {\n\tconst labelSpan = e.target.querySelector('.now-button-bare-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset) {\n\t\treturn dispatch(TOOLTIP_SHOW, {target: e.target});\n\t}\n};\n\nconst handleTooltipHide = (e, dispatch) => {\n\tconst labelSpan = e.target.querySelector('.now-button-bare-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset) {\n\t\treturn dispatch(TOOLTIP_HIDE, {target: e.target});\n\t}\n};\n\n/** @seismicView now-button-bare */\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tlabel,\n\t\tvariant,\n\t\thighContrast,\n\t\tsize,\n\t\ticonStart = state.properties.iconNameStart,\n\t\ticonEnd = state.properties.iconNameEnd,\n\t\thidePadding,\n\t\thideBlockPadding,\n\t\tshowInlinePadding,\n\t\tdisabled,\n\t\tconfigAria,\n\t\tanimatedIconStart,\n\t\tanimatedIconEnd,\n\t} = state.properties;\n\n\tconst dataAriaDescribedBy =\n\t\t{...filterAriaAttributes(configAria, 'button')}?.['aria-label'] ?? label;\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\ttype: 'NOW_BUTTON_BARE#CLICKED',\n\t\t\t\t\tpayload: {},\n\t\t\t\t\tshouldDispatch: !properties.disabled,\n\t\t\t\t}));\n\t\t\t}}\n\t\t\tclass={{\n\t\t\t\t'now-button-bare': true,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'high-contrast': highContrast,\n\t\t\t\t'hide-block-padding': hideBlockPadding || hidePadding,\n\t\t\t\t'show-inline-padding': showInlinePadding,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t}}\n\t\t\tdata-ariadescribedby={dataAriaDescribedBy}\n\t\t\tdata-tooltip={label}\n\t\t\ton-mouseenter={(e) => handleTooltipShow(e, dispatch)}\n\t\t\ton-focusin={(e) => handleTooltipShow(e, dispatch)}\n\t\t\ton-mouseleave={(e) => handleTooltipHide(e, dispatch)}\n\t\t\ton-focusout={(e) => handleTooltipHide(e, dispatch)}\n\t\t\tdisabled={disabled}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t>\n\t\t\t<slot>\n\t\t\t\t{_renderAnimatedIcon(animatedIconStart, 'inline-end', size)}\n\t\t\t\t{_renderIcon(iconStart, 'inline-end', size)}\n\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t<span className=\"now-button-bare-label\">{label}</span>\n\t\t\t\t</span>\n\t\t\t\t{_renderAnimatedIcon(animatedIconEnd, 'inline-start', size)}\n\t\t\t\t{_renderIcon(iconEnd, 'inline-start', size)}\n\t\t\t</slot>\n\t\t</button>\n\t);\n};\n\n/**\n * Bare button is a type of button used to display text with an action.\n * The bare button does not share all the properties of the standard button component.\n *\n * ```jsx\n * <now-button-bare label=\"Click me\" variant=\"primary\" size=\"lg\" />\n * <now-button-bare label=\"With icon\" icon-start=\"gear-fill\" />\n * <now-button-bare label=\"Disabled button\" disabled />\n * ```\n *\n * @seismicElement now-button-bare\n * @summary Simple bare button. Can contain a text label, with or without icons\n * (before and/or after the label).\n * @uib.label Button bare\n * @uib.icon button-bare\n * @uib.description Button with no background color or border\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties label, variant, size, disabled, iconStart, iconEnd, animatedIconStart, animatedIconEnd, hideBlockPadding, showInlinePadding, configAria, highContrast, landmark\n * @uib.layout.identifier.children iconStart, iconEnd, animatedIconStart, animatedIconEnd\n * @uib.layout.identifier.icon image-outline\n * @uib.layout.padding.children hideBlockPadding, showInlinePadding\n * @uib.layout.padding.icon arrow-up-down-outline\n * @uib.layout.accessibility.children configAria, highContrast, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON_BARE#CLICKED\n */\ncreateEnhancedElement('now-button-bare', {\n\tproperties: {\n\t\t/**\n\t\t * Text displayed inside the bare button.\n\t\t * @type {string}\n\t\t * @uib.label Label\n\t\t * @uib.description Text displayed inside the button.\n\t\t * @uib.defaultValue Button\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Sets the bare button styles, including colors and interaction behaviors.\n\t\t * @type {('primary'|'secondary'|'tertiary')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Sets the button style.\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'primary',\n\t\t\tschema: {type: 'string', enum: ['primary', 'secondary', 'tertiary']},\n\t\t},\n\t\t/**\n\t\t * Sets the bare button size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.label Size\n\t\t * @uib.description Sets the button size.\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * When true, variant colors have higher contrast.\n\t\t * @type {boolean}\n\t\t * @uib.description Increases the accessibility contrast ratio of the icon and label when displayed on darker backgrounds.\n\t\t */\n\t\thighContrast: {default: false, schema: {type: 'boolean'}},\n\t\t/** @private */\n\t\ticonNameStart: {},\n\t\t/**\n\t\t * If defined, specifies the icon to display at the start of the bare button.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon left of label\n\t\t * @uib.description Displays an icon at the start of the button.\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticonStart: {schema: {type: 'string'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display at the start of the bare button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon left of label\n\t\t * @uib.description Displays an animated icon at the start of the button.\n\t\t */\n\t\tanimatedIconStart: {schema: {type: 'string'}},\n\t\t/** @private */\n\t\ticonNameEnd: {},\n\t\t/**\n\t\t * If defined, specifies the icon to display at the end of the bare button.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon right of label\n\t\t * @uib.description Displays an icon at the end of the button.\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticonEnd: {schema: {type: 'string'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display at the end of the bare button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon right of label\n\t\t * @uib.description Displays an animated icon at the end of the button.\n\t\t */\n\t\tanimatedIconEnd: {schema: {type: 'string'}},\n\t\t/**\n\t\t * @private\n\t\t * Deprecated. Use `hideBlockPadding` instead.\n\t\t * @uib.aliasedWith hideBlockPadding\n\t\t */\n\t\thidePadding: {},\n\t\t/**\n\t\t * By default, a bare button's height is based on the `size` property. Set\n\t\t * this to reduce this height so that the bare button only takes up the\n\t\t * height required by the label and/or icons. Note: Buttons with this\n\t\t * property do not align vertically with other button types.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Block Padding\n\t\t * @uib.description By default, the button's height is based on the size. Select to reduce the button height. This sets the button height to the size of the text. Buttons with this property do not align vertically with other button types.\n\t\t */\n\t\thideBlockPadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * By default, a bare button's width is based on the button's content. Set\n\t\t * this to add inline padding either side of the button's content.\n\t\t * @type {boolean}\n\t\t * @uib.label Show Inline Padding\n\t\t * @uib.description By default, a bare button's width is based on the button's content. Set this to add inline padding either side of the button's content.\n\t\t */\n\t\tshowInlinePadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, mutes the button color and prevents user click interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description Disables user click interactions.\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string,  role: string }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description ARIA properties that are set on the inner html. See https://www.w3.org/TR/wai-aria-1.2/#button for properties and accepted values.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelRoleHasPopUpSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t},\n\t\ttooltipBehavior,\n\t\tanimatedIconHoverBehavior,\n\t],\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the button is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the button is clicked\n\t\t */\n\t\t'NOW_BUTTON_BARE#CLICKED': {schema: {type: 'object'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content placed in the default slot of the now-button-bare appears\n\t\t * inside the body of the button, taking the place of `iconStart`,\n\t\t * `iconEnd`, and/or `label`.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-button-iconic.scss';\nimport '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {animatedIconHoverBehavior} from './behaviors/index.js';\n\nconst {COMPONENT_RENDERED} = actionTypes;\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\n/** @seismicView now-button-iconic */\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tvariant,\n\t\tbare,\n\t\thighContrast,\n\t\tsize,\n\t\ticon,\n\t\thidePadding,\n\t\tdisabled,\n\t\tconfigAria,\n\t\ttooltipContent,\n\t\tanimatedIcon,\n\t} = state.properties;\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass={{\n\t\t\t\t'now-button-iconic': true,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'high-contrast': highContrast,\n\t\t\t\t'hide-padding': hidePadding,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'is-bare': bare,\n\t\t\t}}\n\t\t\tdata-tooltip={tooltipContent}\n\t\t\tdata-ariadescribedby={\n\t\t\t\t{...filterAriaAttributes(configAria, 'button')}?.['aria-label']\n\t\t\t}\n\t\t\ton-mouseenter={handleTooltipShow(dispatch)}\n\t\t\ton-mouseleave={handleTooltipHide(dispatch)}\n\t\t\ton-focusin={handleTooltipShow(dispatch)}\n\t\t\ton-focusout={handleTooltipHide(dispatch)}\n\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\ttype: 'NOW_BUTTON_ICONIC#CLICKED',\n\t\t\t\t\tpayload: {},\n\t\t\t\t\tshouldDispatch: !properties.disabled,\n\t\t\t\t}));\n\t\t\t}}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{animatedIcon ? (\n\t\t\t\t<now-icon-animated\n\t\t\t\t\tclassName=\"now-button-iconic-icon\"\n\t\t\t\t\ticon={animatedIcon}\n\t\t\t\t\tsize={size}\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{icon ? (\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"now-button-iconic-icon\"\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tsize={size}\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</button>\n\t);\n};\n\n/**\n * Iconic buttons use an icon instead of text to convey an action.\n * Although similar to a standard button component, iconic buttons don’t share\n * all of the same properties. The iconic button only displays an icon and\n * cannot display other elements, such as labels.\n *\n * ```jsx\n * <now-button-iconic icon=\"envelope-fill\" variant=\"primary\" bare />\n * <now-button-iconic icon=\"envelope-fill\" variant=\"tertiary\" />\n * <now-button-iconic icon=\"envelope-outline\" />\n * ```\n *\n * @seismicElement now-button-iconic\n * @summary Iconic button is a button used to display an actionable icon.\n * @uib.label Button iconic\n * @uib.icon button-iconic\n * @uib.description Iconic buttons use an icon instead of text to convey an action.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, variant, bare, size, disabled, hidePadding, tooltipContent, configAria, highContrast, landmark, animatedIcon\n * @uib.layout.accessibility.children tooltipContent, configAria, highContrast, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON_ICONIC#CLICKED\n */\ncreateEnhancedElement('now-button-iconic', {\n\tproperties: {\n\t\t/**\n\t\t * Defines the icon displayed.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.description Name of the icon to use in the button\n\t\t * @uib.defaultValue magnifying-glass-outline\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Sets the iconic button styles.\n\t\t * @type {('primary'|'secondary'|'tertiary')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Color and behavior of the button\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'secondary',\n\t\t\tschema: {type: 'string', enum: ['primary', 'secondary', 'tertiary']},\n\t\t},\n\t\t/**\n\t\t * Removes iconic button border and sets the default background to be\n\t\t * transparent.\n\t\t * @type {boolean}\n\t\t * @uib.description Removes the border and sets the default background to be transparent\n\t\t */\n\t\tbare: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the iconic button size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.label Size\n\t\t * @uib.description Size of the button\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * Sets whether variant colors have higher contrast. Only works when `bare`\n\t\t * is `true`.\n\t\t * @type {boolean}\n\t\t */\n\t\thighContrast: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, mutes the button color and disables user click interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description Disables the button by muting the colors and preventing click interactions\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * By default, an iconic button's height is based on the `size` property.\n\t\t * Set to `true` to reduce the iconic button height. This ensures that the\n\t\t * iconic button only takes up the height required by its icon. Buttons\n\t\t * with this property do not align vertically with other button types.\n\t\t * Not recommended for iconic buttons without `bare` property.\n\t\t * @type {boolean}\n\t\t * @uib.label Padding\n\t\t * @uib.description Removes padding from the bare button. Note: The button won't align vertically with other buttons\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Show\",\"value\": false}, {\"label\": \"Hide\",\"value\": true}]\n\t\t * @uib.defaultValue false\n\t\t */\n\t\thidePadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string,  role: string }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t...configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t\t\trequired: ['aria-label'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{...configAriaLabelRoleHasPopUpSchema, required: ['aria-label']},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text content shown inside the tooltip. Not displayed if button is\n\t\t * disabled.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip text\n\t\t * @uib.defaultValue Enter a label\n\t\t * @uib.description Text to display in a tooltip that describes the button's action\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display inside the button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * For icon-only buttons, use `<now-button-iconic>` instead.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon\n\t\t * @uib.description Defines the animated icon displayed inside the button\n\t\t */\n\t\tanimatedIcon: {schema: {type: 'string'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [focusBehavior, tooltipBehavior, animatedIconHoverBehavior],\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({host, properties}) => {\n\t\t\tconst buttonEl = host.shadowRoot.querySelector('.now-button-iconic');\n\t\t\tif (properties.disabled || !properties.tooltipContent) {\n\t\t\t\tdelete buttonEl.dataset.tooltip;\n\t\t\t} else {\n\t\t\t\tbuttonEl.dataset.tooltip = properties.tooltipContent;\n\t\t\t}\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the button is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the button is clicked\n\t\t */\n\t\t'NOW_BUTTON_ICONIC#CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\textensionSplit,\n\tfilterAriaAttributes,\n} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-button-stateful.scss';\nimport '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {actionTypes} from '@servicenow/ui-core';\n\nconst {COMPONENT_RENDERED} = actionTypes;\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\nconst _renderIcon = (icon, size, variant, selected) => {\n\tif (icon) {\n\t\tlet iconFilledOrOutline = icon;\n\t\tif (selected) {\n\t\t\ticonFilledOrOutline = icon.replace('-outline', '-fill');\n\t\t} else {\n\t\t\ticonFilledOrOutline = icon.replace('-fill', '-outline');\n\t\t}\n\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-button-stateful-icon\"\n\t\t\t\ticon={iconFilledOrOutline}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst roleBasedSelection = {\n\tbutton: 'aria-pressed',\n\tradio: 'aria-checked',\n\ttab: 'aria-selected',\n};\n\n/** @seismicView now-button-stateful */\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tconfigRole,\n\t\tvariant,\n\t\thighContrast,\n\t\thighlighted,\n\t\tsize,\n\t\ticon,\n\t\tselected,\n\t\thidePadding,\n\t\tdisabled,\n\t\ttooltipContent,\n\t} = state.properties;\n\tlet {configAria = {}} = state.properties;\n\tconfigAria = configAria || {}; //this adds a null check\n\n\tif (configAria?.button === undefined) {\n\t\tconfigAria.button = {role: configRole};\n\t} else if (configAria?.button?.role === undefined) {\n\t\tconfigAria.button = configAria.button || {}; //this adds a null check for the `button.role`\n\t\tconfigAria.button.role = configRole;\n\t}\n\n\tconst selectedState = roleBasedSelection[configAria.button.role];\n\tif (selectedState) {\n\t\tconfigAria.button[selectedState] = selected ? 'true' : 'false';\n\t}\n\n\tconst onButtonClicked = (evt) => {\n\t\tevt.preventDefault();\n\t\tdispatch(({properties}) => ({\n\t\t\ttype: 'NOW_BUTTON_STATEFUL#SELECTED_SET',\n\t\t\tpayload: {value: !properties.selected},\n\t\t\tshouldDispatch: !properties.disabled,\n\t\t}));\n\t};\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass={{\n\t\t\t\t'now-button-stateful': true,\n\t\t\t\t'is-selected': selected,\n\t\t\t\t'is-highlighted': highlighted,\n\t\t\t\t...extensionSplit(variant),\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'high-contrast': highContrast,\n\t\t\t\t'hide-padding': hidePadding,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t}}\n\t\t\tdata-tooltip={tooltipContent}\n\t\t\tdata-ariadescribedby={\n\t\t\t\t{...filterAriaAttributes(configAria, 'button')}?.['aria-label']\n\t\t\t}\n\t\t\ton-mouseenter={handleTooltipShow(dispatch)}\n\t\t\ton-mouseleave={handleTooltipHide(dispatch)}\n\t\t\ton-focusin={handleTooltipShow(dispatch)}\n\t\t\ton-focusout={handleTooltipHide(dispatch)}\n\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\tdisabled={disabled}\n\t\t\ton-click={onButtonClicked}\n\t\t>\n\t\t\t{icon ? _renderIcon(icon, size, variant, selected) : undefined}\n\t\t</button>\n\t);\n};\n\n/**\n * The stateful button can be toggled between two states that are visually\n * distinguishable from each other. It also provides an option for displaying\n * an active or selected state.\n *\n * Currently, the stateful button only displays an icon and doesn't support\n * other elements, such as labels.\n *\n * Examples\n *\n * ```jsx\n * <now-button-stateful\n *\t\ticon=\"magnifying-glass-outline\"\n *\t\tvariant=\"primary\"\n * />\n *\n * <now-button-stateful\n *\t\ticon=\"magnifying-glass-outline\"\n *\t\tvariant=\"primary\"\n *\t\thighlighted\n *\t\tconfig-role=\"radio\"\n * />\n *\n * <now-button-stateful\n *\t\ticon=\"magnifying-glass-outline\"\n *\t\tvariant=\"tertiary\"\n *\t\thigh-contrast\n *\t\tconfig-role=\"tab\"\n * />\n *\n * <now-button-stateful\n *\t\ticon=\"magnifying-glass-outline\"\n *\t\tconfig-role=\"radio\"\n *\t\tconfig-aria={{\n *\t\t\tbutton: {'aria-label': 'Search'}\n *\t\t}}\n * />\n *\n * <now-button-stateful\n *\t\ticon=\"envelope-outline\"\n *\t\ttooltip-content=\"Email\"\n * />\n * ```\n *\n * @seismicElement now-button-stateful\n * @summary The stateful button is a button used to display an actionable icon.\n * The stateful button doesn't share all the properties of the standard button\n * component.\n * The stateful button only displays an icon and cannot display any other\n * elements, like labels.\n * The button can be toggled between an on and off state.\n * @uib.label Button stateful\n * @uib.icon button-stateful\n * @uib.description The stateful button is a button used to display an actionable icon. The stateful button doesn't share all the properties of the standard button component. The stateful button only displays an icon and cannot display any other elements, like labels.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, variant, highlighted, size, selected, manageSelected, disabled, hidePadding, configRole, tooltipContent, configAria, highContrast, landmark\n * @uib.layout.padding.children hidePadding\n * @uib.layout.padding.icon arrow-up-down-outline\n * @uib.layout.accessibility.children configRole, tooltipContent, configAria, highContrast, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON_STATEFUL#SELECTED_SET\n */\n\ncreateEnhancedElement('now-button-stateful', {\n\tproperties: {\n\t\t/**\n\t\t * Deprecated, use `config-aria` instead\n\t\t * Defines the aria role of the component.\n\t\t * @type {('button'|'radio'|'tab')}\n\t\t * @private\n\t\t */\n\t\tconfigRole: {\n\t\t\tdefault: 'button',\n\t\t\tschema: {type: 'string', enum: ['button', 'radio', 'tab']},\n\t\t},\n\t\t/**\n\t\t * Defines the icon displayed.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * Note: By default, the `-outline` version of this icon displays,\n\t\t * even if the `-fill` version is assigned. The `-fill` version\n\t\t * shows if the button is selected by the user.\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.description Defines the now-icon displayed. By default, the `-outline` version of this icon displays, even if the `-fill` version is assigned. The `-fill` version shows if the button is selected by the user.\n\t\t * @uib.defaultValue magnifying-glass-plus-outline\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Indicates the selected state of the stateful button.\n\t\t * The selected style is indicated with a filled icon. When the\n\t\t * `highlighted` property is `true` a background-color is also added.\n\t\t * Maps to `aria-pressed` for a toggle button, `aria-checked` for a radio\n\t\t * button, and `aria-selected` for a tab.\n\t\t * Use `manage-selected` to override the default behavior and handle the\n\t\t * `NOW_BUTTON_STATEFUL#SELECTED_SET` action manually.\n\t\t * @type {boolean}\n\t\t * @uib.description Indicates the selected state of the stateful button.Maps to `aria-pressed` for a toggle button, `aria-checked` for a radio button, and `aria-selected` for a tab.\n\t\t */\n\t\tselected: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selected` property.\n\t\t * An action with type `NOW_BUTTON_STATEFUL#SELECTED_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected property. Use the selected set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelected: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the stateful button styles.\n\t\t * @type {('primary'|'primary-selection'|'secondary'|'secondary-selection'|'tertiary'|'tertiary-selection')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Color and behavior of the button.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Primary\", \"value\": \"primary\"}, {\"label\": \"Secondary\", \"value\": \"secondary\"}, {\"label\": \"Tertiary\", \"value\": \"tertiary\"}, {\"label\": \"Primary (selection)\", \"value\": \"primary-selection\"}, {\"label\": \"Secondary (selection)\", \"value\": \"secondary-selection\"}, {\"label\": \"Tertiary (selection)\", \"value\": \"tertiary-selection\"}, {\"label\": \"Primary (highlighted)\", \"value\": \"primary-highlighted\"}, {\"label\": \"Secondary (highlighted)\", \"value\": \"secondary-highlighted\"}]\n\t\t * @uib.defaultValue secondary\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'secondary',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'primary',\n\t\t\t\t\t'primary-selection',\n\t\t\t\t\t'secondary',\n\t\t\t\t\t'secondary-selection',\n\t\t\t\t\t'tertiary',\n\t\t\t\t\t'tertiary-selection',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the button size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.label Size\n\t\t * @uib.description Size of the button\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * Sets the style to add a color background when selected.\n\t\t * @type {boolean}\n\t\t */\n\t\thighlighted: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the style to increase the contrast when a stateful button is\n\t\t * displayed on a colored background.\n\t\t * @type {boolean}\n\t\t */\n\t\thighContrast: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * By default, a stateful button's height is based on the `size` property.\n\t\t * Set to `true` to reduce this height so that the stateful button only\n\t\t * occupies the height required by its icon. Note: Buttons with this\n\t\t * property don't align vertically with other button types.\n\t\t * @type {boolean}\n\t\t * @uib.label Padding\n\t\t * @uib.description Removes padding from the bare button. Note that the button won't align vertically with other buttons\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Show\", \"value\": false}, {\"label\": \"Hide\",\"value\": true}]\n\t\t * @uib.defaultValue false\n\t\t */\n\t\thidePadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, mutes the button color and prevents user-click interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description Disables the button by muting the colors and preventing click interactions\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button-stateful. The value of each key is an object that contains an\n\t\t * ARIA property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button-stateful.\n\t\t * Set the \"role\" attribute to specify the aria role of the component.\n\t\t * Set the role to \"button\" for a toggle button.\n\t\t * Set the role to \"radio\" for a radio button.\n\t\t * Set the role to \"tab\" for a button used as a tab.\n\t\t * @type {{ button: { 'aria-*': string, role: string }}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t...configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t\t\trequired: ['aria-label'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{...configAriaLabelRoleHasPopUpSchema, required: ['aria-label']},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text content shown inside the tooltip. Not displayed if button is\n\t\t * disabled.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip text\n\t\t * @uib.defaultValue Start search\n\t\t * @uib.description Text to display in a tooltip when hovering over the button\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user toggles the selected status of the button.\n\t\t * Set the `manage-selected` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t * @uib.description Dispatched when the user toggles the selected status of the button\n\t\t */\n\t\t'NOW_BUTTON_STATEFUL#SELECTED_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [focusBehavior, tooltipBehavior],\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({host, properties}) => {\n\t\t\tconst buttonEl = host.shadowRoot.querySelector('.now-button-stateful');\n\t\t\tif (properties.disabled || !properties.tooltipContent) {\n\t\t\t\tdelete buttonEl.dataset.tooltip;\n\t\t\t} else {\n\t\t\t\tbuttonEl.dataset.tooltip = properties.tooltipContent;\n\t\t\t}\n\t\t},\n\t},\n});\n","import {createCustomElement} from '@servicenow/ui-core';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport styles from './_now-button-circular.scss';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {animatedIconHoverBehavior} from './behaviors/index.js';\n\nconst {COMPONENT_RENDERED} = actionTypes;\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\nconst handleClick = (dispatch) => {\n\tdispatch(({properties}) => ({\n\t\ttype: 'NOW_BUTTON_CIRCULAR#CLICKED',\n\t\tpayload: {},\n\t\tshouldDispatch: !properties.disabled,\n\t}));\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {disabled, hasShadow, icon, tooltipContent, configAria, animatedIcon} =\n\t\tstate.properties;\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass={{\n\t\t\t\t'now-button-circular': true,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'has-shadow': hasShadow,\n\t\t\t}}\n\t\t\tdata-tooltip={tooltipContent}\n\t\t\tdata-ariadescribedby={\n\t\t\t\t{...filterAriaAttributes(configAria, 'button')}?.['aria-label']\n\t\t\t}\n\t\t\ton-mouseenter={handleTooltipShow(dispatch)}\n\t\t\ton-mouseleave={handleTooltipHide(dispatch)}\n\t\t\ton-focusin={handleTooltipShow(dispatch)}\n\t\t\ton-focusout={handleTooltipHide(dispatch)}\n\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\tdisabled={disabled}\n\t\t\ton-click={() => handleClick(dispatch)}\n\t\t>\n\t\t\t<slot name=\"custom-icon\">\n\t\t\t\t{animatedIcon ? (\n\t\t\t\t\t<now-icon-animated\n\t\t\t\t\t\tclassName=\"now-button-circular-icon\"\n\t\t\t\t\t\ticon={animatedIcon}\n\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t\t{icon ? (\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\tclassName=\"now-button-circular-icon\"\n\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t</slot>\n\t\t</button>\n\t);\n};\n\n/**\n * Circular buttons use a circle container to display\n * an actionable icon and do not include a label. Always include\n * a `config-aria` property with `aria-label` set to denote its relationship to other elements\n * or describe its action.\n *\n * ```jsx\n * <now-button-circular icon=\"chat-fill\" />\n * <now-button-circular icon=\"chat-fill\" has-shadow />\n * <now-button-circular icon=\"chat-fill\" disabled />\n * ```\n *\n * @seismicElement now-button-circular\n * @summary An actionable icon in a circular format.\n * @uib.label Button circular\n * @uib.icon button-circular\n * @uib.description An actionable icon in a circular format.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, hasShadow, disabled, tooltipContent, configAria, landmark, animatedIcon\n * @uib.layout.accessibility.children tooltipContent, configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON_CIRCULAR#CLICKED\n */\ncreateCustomElement('now-button-circular', {\n\tproperties: {\n\t\t/**\n\t\t * Defines the icon to display inside the button.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.defaultValue chat-fill\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, mutes the button color and disables user interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description When true, mutes the button color and disables user interactions\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s that are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string, role: string }}\n\t\t * @uib.label ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t...configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t\t\trequired: ['aria-label'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{...configAriaLabelRoleHasPopUpSchema, required: ['aria-label']},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, adds a box shadow to the button.\n\t\t * @type {boolean}\n\t\t * @uib.label Show Shadow\n\t\t * @uib.description Select to add a box shadow to the button\n\t\t */\n\t\thasShadow: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Text content shown inside the tooltip. Not displayed if button is\n\t\t * disabled.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip text\n\t\t * @uib.defaultValue Open chat window\n\t\t * @uib.description Text shown inside the tooltip.\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display inside the button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon\n\t\t * @uib.description Defines the animated icon displayed inside the button\n\t\t */\n\t\tanimatedIcon: {schema: {type: 'string'}},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the button is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the button is clicked\n\t\t */\n\t\t'NOW_BUTTON_CIRCULAR#CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [tooltipBehavior, animatedIconHoverBehavior],\n\tview,\n\tstyles,\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({host, properties}) => {\n\t\t\tconst buttonEl = host.shadowRoot.querySelector('.now-button-circular');\n\t\t\tif (properties.disabled || !properties.tooltipContent) {\n\t\t\t\tdelete buttonEl.dataset.tooltip;\n\t\t\t} else {\n\t\t\t\tbuttonEl.dataset.tooltip = properties.tooltipContent;\n\t\t\t}\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content placed in the `custom-icon` slot appears inside\n\t\t * the button body, taking the place of the `icon`.\n\t\t * @uib.hidePlaceholder true\n\t\t */\n\t\t'custom-icon': {},\n\t},\n});\n","import './now-button';\nimport './now-button-bare';\nimport './now-button-iconic';\nimport './now-button-stateful';\nimport './now-button-circular';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import {actionTypes} from '@servicenow/ui-core';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-checkbox.scss';\nimport '@servicenow/now-icon';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {t} from 'sn-translate';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\n\nconst {COMPONENT_PROPERTY_CHANGED, COMPONENT_DOM_READY} = actionTypes;\n\nconst setIndeterminate = (host, checked) => {\n\t/**\n\t * Checkboxes have 3 states: checked, unchecked, and indeterminate (aka \"mixed\" for aria-checked)\n\t * HTML only supports 2: checked and unchecked\n\t * To set a indeterminate (aka mixed), you need JS\n\t *\n\t * aria-checked=\"mixed\" isn't enough for good support :(\n\t */\n\tconst nativeInput = host.shadowRoot.querySelector('input');\n\tconst shouldBeIndeterminate = checked === 'indeterminate';\n\n\tif (nativeInput.indeterminate !== shouldBeIndeterminate) {\n\t\tnativeInput.indeterminate = shouldBeIndeterminate;\n\t}\n};\n\nconst handleChecked = (e, dispatch, interactive) => {\n\tif (!interactive) {\n\t\treturn;\n\t}\n\n\te.preventDefault();\n\tdispatch(({properties: {name, checked}}) => {\n\t\treturn {\n\t\t\ttype: 'NOW_CHECKBOX#CHECKED_SET',\n\t\t\tpayload: {\n\t\t\t\tname: name,\n\t\t\t\tvalue: checked ? false : true,\n\t\t\t},\n\t\t};\n\t});\n};\n\nconst handleBlur = (dispatch) => {\n\tdispatch(({properties: {required, checked, name}}) => {\n\t\treturn {\n\t\t\ttype: 'NOW_CHECKBOX#INVALID_SET',\n\t\t\tpayload: {name, value: required && !checked},\n\t\t};\n\t});\n};\n\nconst renderLabelInline = () => {\n\treturn (\n\t\t<span className=\"now-checkbox-label-inline-slot\">\n\t\t\t<slot\n\t\t\t\tname=\"label-inline\"\n\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\ton-click={(e) => e.stopPropagation()}\n\t\t\t/>\n\t\t</span>\n\t);\n};\n\nconst renderLabelStart = () => {\n\treturn (\n\t\t<span className=\"now-checkbox-label-start-slot\">\n\t\t\t<slot\n\t\t\t\tname=\"label-start\"\n\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\ton-click={(e) => e.stopPropagation()}\n\t\t\t/>\n\t\t</span>\n\t);\n};\n\nconst view = ({properties}, {dispatch}) => {\n\tconst {\n\t\tchecked,\n\t\tdisabled,\n\t\trequired,\n\t\treadonly,\n\t\tinvalid,\n\t\tlabel,\n\t\tsize,\n\t\tconfigAria,\n\t\tnowId,\n\t\tlabelPosition,\n\t\tfullWidth,\n\t} = properties;\n\n\tconst interactive = !disabled && !readonly;\n\tconst indeterminate = checked === 'indeterminate';\n\tconst iconId = `${nowId}-icon`;\n\n\tconst labelId = `${nowId}-label`;\n\tconst mixed = t({\n\t\tcode: 'now-checkbox-indeterminate',\n\t\tmessage: 'mixed',\n\t\tcomment:\n\t\t\t'Mixed or indeterminate - describes the state of a checkbox that is neither checked nor unchecked, but has a dash inside to indicate that some children are checked and some are not.',\n\t});\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-checkbox': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'is-readonly': readonly,\n\t\t\t\t'is-invalid': invalid,\n\t\t\t\t'is-checked': checked,\n\t\t\t\t['-' + labelPosition]: labelPosition,\n\t\t\t\t'is-full-width': fullWidth,\n\t\t\t}}\n\t\t\ton-click={(e) => handleChecked(e, dispatch, interactive)}\n\t\t>\n\t\t\t{label && labelPosition === 'start' && (\n\t\t\t\t<div className=\"now-checkbox-label-parent\">\n\t\t\t\t\t{required ? (\n\t\t\t\t\t\t<now-icon\n\t\t\t\t\t\t\tclassName=\"now-checkbox-required-indicator\"\n\t\t\t\t\t\t\ticon=\"asterisk-fill\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tdata-truncation\n\t\t\t\t\t\t\tdata-truncationforcetooltip\n\t\t\t\t\t\t\tdata-truncationtext={t('Required')}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : undefined}\n\t\t\t\t\t{renderLabelInline()}\n\t\t\t\t\t<label id={labelId} for={nowId} className=\"now-checkbox-label\">\n\t\t\t\t\t\t<span className=\"now-line-height-crop\">{label}</span>\n\t\t\t\t\t</label>\n\t\t\t\t\t{renderLabelStart()}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className=\"now-checkbox-input-parent\">\n\t\t\t\t<input\n\t\t\t\t\tclassName=\"now-checkbox-input\"\n\t\t\t\t\tid={nowId}\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tdisabled={interactive ? undefined : 'true'}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tchecked={checked === true ? true : undefined}\n\t\t\t\t\t{...filterAriaAttributes(configAria, 'checkbox')}\n\t\t\t\t\taria-checked={indeterminate ? 'mixed' : undefined}\n\t\t\t\t\taria-invalid={invalid ? 'true' : 'false'}\n\t\t\t\t\taria-describedby={indeterminate ? iconId : undefined}\n\t\t\t\t\ton-change={(e) => handleChecked(e, dispatch, interactive)}\n\t\t\t\t\ton-blur={() => handleBlur(dispatch)}\n\t\t\t\t/>\n\t\t\t\t<div className=\"now-checkbox-visual-input\">\n\t\t\t\t\t{checked ? (\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * [1] Support is buggy/broken in VO+Safari for mixed state checkboxes so providing an aria-label to shim this\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * aria-label and aria-hidden can be removed when one of these is fixed\n\t\t\t\t\t\t * https://bugs.webkit.org/show_bug.cgi?id=123889 (support for aria-checked=\"mixed\")\n\t\t\t\t\t\t * https://bugs.webkit.org/show_bug.cgi?id=203138 (support of input.indeterminate)\n\t\t\t\t\t\t */\n\t\t\t\t\t\t<now-icon\n\t\t\t\t\t\t\tid={iconId}\n\t\t\t\t\t\t\tclassName=\"now-checkbox-icon\"\n\t\t\t\t\t\t\ticon={indeterminate ? 'minus-outline' : 'check-outline'}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tconfig-aria={\n\t\t\t\t\t\t\t\tindeterminate ? {'aria-label': mixed} : {'aria-hidden': 'true'}\n\t\t\t\t\t\t\t} // [1]\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : undefined}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{label && labelPosition === 'end' && (\n\t\t\t\t<div className=\"now-checkbox-label-parent\">\n\t\t\t\t\t{renderLabelStart()}\n\t\t\t\t\t<label id={labelId} for={nowId} className=\"now-checkbox-label\">\n\t\t\t\t\t\t<span className=\"now-line-height-crop\">{label}</span>\n\t\t\t\t\t</label>\n\t\t\t\t\t{required ? (\n\t\t\t\t\t\t<now-icon\n\t\t\t\t\t\t\tclassName=\"now-checkbox-required-indicator\"\n\t\t\t\t\t\t\ticon=\"asterisk-fill\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tdata-truncation\n\t\t\t\t\t\t\tdata-truncationforcetooltip\n\t\t\t\t\t\t\tdata-truncationtext={t('Required')}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : undefined}\n\t\t\t\t\t{renderLabelInline()}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\n/**\n * Input for users to communicate a yes, no, or indeterminate choice.\n * A checkbox can appear standalone or in a set of other options.\n *\n *\n * ```jsx\n * <now-checkbox label=\"I accept these terms\" required />\n * ```\n *\n * @seismicElement now-checkbox\n * @summary An interactive control for indicating an affirmative, negative, or indeterminate choice.\n * @uib.label Checkbox\n * @uib.icon checkbox\n * @uib.description An interactive control for indicating an affirmative, negative, or indeterminate choice.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, checked, manageChecked, name, disabled, readonly, label, required, invalid, manageInvalid, configAria, labelPosition, fullWidth\n * @uib.layout.label.children label, required, labelPosition, fullWidth\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_CHECKBOX#CHECKED_SET\n */\ncreateEnhancedElement('now-checkbox', {\n\tproperties: {\n\t\t/**\n\t\t * The state of the checkbox. Options include:\n\t\t * - `true`: The checkbox is selected.\n\t\t * - `false`: The checkbox is cleared.\n\t\t * - `indeterminate`: The checkbox appears with a horizontal line\n\t\t *   inside to express that it is neither `true` nor `false`.\n\t\t *   You can use the indeterminate state\n\t\t *   when a single checkbox controls multiple child\n\t\t *   elements. For example, a \"select all\" checkbox.\n\t\t *\n\t\t * When the user selects a checkbox in the `indeterminate` state, the\n\t\t * property value changes to `false`.\n\t\t * @type {(boolean|'indeterminate')}\n\t\t * @uib.description True if the checkbox is selected; otherwise false. If the `checked` status is neither true nor false, \"indeterminate\" causes the checkbox to appear with a horizontal line inside of it.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"True\",\"value\": true}, {\"label\": \"False\",\"value\": false}, {\"label\": \"Indeterminate\",\"value\": \"indeterminate\"}]\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tchecked: {\n\t\t\tdefault: false,\n\t\t\tmanageable: true,\n\t\t\tschema: {oneOf: [{type: 'boolean'}, {const: 'indeterminate'}]},\n\t\t},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `checked` property.\n\t\t * An action with type `NOW_CHECKBOX#CHECKED_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the checked property. Use the event dispatched when the field is clicked to handle the checked state manually.\n\t\t */\n\t\tmanageChecked: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-checkbox. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties will be set on the specified element.\n\t\t * The 'checkbox' key corresponds to the `<div>` with an ARIA role of\n\t\t * 'checkbox' in now-checkbox. See https://www.w3.org/TR/wai-aria-1.2/#checkbox for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string, role: string }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tcheckbox: configAriaLabelSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the checkbox size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the user cannot select the checkbox.\n\t\t * @type {boolean}\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the current state of the checkbox is invalid.\n\t\t * The visual style changes accordingly.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, the current state of the checkbox is invalid. An error displays and the visual style changes accordingly.\n\t\t */\n\t\tinvalid: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_CHECKBOX#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user cannot select the checkbox.\n\t\t * @type {boolean}\n\t\t * @uib.label Read Only\n\t\t * @uib.description When true, the user cannot select the checkbox.\n\t\t */\n\t\treadonly: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user must select the checkbox before they can\n\t\t * submit the form. For example, a checkbox that the user must select\n\t\t * to accept terms and conditions.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, the user must select the checkbox before they can submit the form.\n\t\t */\n\t\trequired: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Text label to display next to the checkbox.\n\t\t * You must provide either a label or an `aria-label` via the `config-aria` property.\n\t\t * @type {string}\n\t\t * @uib.description Text label to display next to the checkbox. You must provide either a label or an `aria-label` via the `ARIA properties`.\n\t\t * @uib.defaultValue Make a choice\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Name of the checkbox. Dispatched along with the field value\n\t\t * on user interaction.\n\t\t * @type {string}\n\t\t * @uib.label Identifier\n\t\t * @uib.description Name of the checkbox. Dispatched along with the field value on user interaction\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * String value of the `checked` property.\n\t\t * @type {('true'|'false'|'indeterminate')}\n\t\t */\n\t\tvalue: {\n\t\t\treflect: true,\n\t\t\tcomputed({properties: {checked}}) {\n\t\t\t\treturn `${checked}`;\n\t\t\t},\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * Position at which to display the checkbox label relative to the checkbox.\n\t\t * Possible values:\n\t\t *   - start\n\t\t *   - end\n\t\t * @type {('start'|'end')}\n\t\t * @uib.description Position at which to display the checkbox label relative to the checkbox.\n\t\t * @uib.defaultValue end\n\t\t */\n\t\tlabelPosition: {\n\t\t\tdefault: 'end',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['start', 'end'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the checkbox and label will be distributed across the x-axis accordingly.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, the checkbox and label will be distributed across the x-axis accordingly.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tfullWidth: {default: false, schema: {type: 'boolean'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the label position `start`, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the label position `start`, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user interacts with the checkbox and neither\n\t\t * `disabled` nor `readonly` are true. Set the `manageChecked` property\n\t\t * to handle this event manually.\n\t\t * @type {{name: string, value: boolean}}\n\t\t * @uib.description Dispatched when the user interacts with the checkbox and neither `disabled` nor `readonly` are true\n\t\t */\n\t\t'NOW_CHECKBOX#CHECKED_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [focusBehavior, truncationBehavior, tooltipBehavior],\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: ({host, properties}) => {\n\t\t\tsetIndeterminate(host, properties.checked);\n\t\t},\n\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({host, properties}) => {\n\t\t\tsetIndeterminate(host, properties.checked);\n\t\t},\n\t},\n\tstyles,\n\tview,\n});\n","import './now-checkbox';\n\nimport * as info from '../package.json';\nconst {name, version} = info;\n\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import {createCustomElement} from '@servicenow/ui-core';\nimport styles from './_now-collapse.scss';\n\nconst view = (state) => {\n\tconst {expanded} = state.properties;\n\treturn (\n\t\t<div class={{'now-collapse': true, 'is-expanded': expanded}}>\n\t\t\t<slot />\n\t\t</div>\n\t);\n};\n\n/**\n * Component that lets the user expand and collapse sections.\n * ```jsx\n * <now-collapse expanded>\n *   Rich content area to be expanded and collapsed.\n * </now-collapse>\n * ```\n *\n * @seismicElement now-collapse\n * @summary A helper element for expandable and collapsible sections.\n * @uib.label Collapse\n * @uib.icon collapse\n * @uib.description A helper element for expandable and collapsible sections\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties expanded, ariaHidden\n * @uib.layout.accessibility.children ariaHidden\n * @uib.layout.accessibility.icon accessibility-outline\n */\ncreateCustomElement('now-collapse', {\n\tpresentational: true,\n\tproperties: {\n\t\t/**\n\t\t * When true, the collapsible section is currently expanded.\n\t\t * @type {boolean}\n\t\t * @uib.description Whether the collapsible section is currently expanded\n\t\t * @uib.defaultValue true\n\t\t */\n\t\texpanded: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the collapsible section is visible to a screen reader.\n\t\t * It is only visible to a screen reader when expanded.\n\t\t * @type {string}\n\t\t * @uib.label ARIA hidden\n\t\t * @uib.description Whether the collapsible section is visible to a screen reader\n\t\t */\n\t\tariaHidden: {\n\t\t\tcomputed: (state) => (state.properties.expanded ? 'false' : 'true'),\n\t\t\treflect: true,\n\t\t\tschema: {type: 'string', enum: ['true', 'false']},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content placed in the default slot appears inside of the collapsible section.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n\tstyles,\n\tview,\n});\n","import {createCustomElement} from '@servicenow/ui-core';\n/**\n * A trigger element to be used with an now-collapse element\n * for triggering the expand/collapse behavior. The `controls` property\n * links the trigger to the corresponding collapse by element ID.\n *\n * ```jsx\n * <now-collapse-trigger controls=\"collapseID\">\n *   <button>Toggle</button>\n * </now-collapse-trigger>\n *\n * <now-collapse id=\"collapseID\">\n * </now-collapse>\n * ```\n *\n * @seismicElement now-collapse-trigger\n * @summary A trigger element to be used with an now-collapse element for triggering the expand/collapse behavior.\n */\ncreateCustomElement('now-collapse-trigger', {\n\tproperties: {\n\t\t/**\n\t\t * ID of the `now-collapse` element associated with this trigger.\n\t\t * @type {'string'}\n\t\t */\n\t\tcontrols: {schema: {type: 'string'}, required: true},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Place content inside of the default slot of the collapse trigger to use it\n\t\t * as a control for a now-collapse component instance.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['click'],\n\t\t\teffect: ({host, properties}) => {\n\t\t\t\tconst {controls} = properties;\n\t\t\t\tconst collapse = host.parentNode.querySelector(\n\t\t\t\t\t`#${CSS.escape ? CSS.escape(controls) : controls}`,\n\t\t\t\t);\n\t\t\t\tif (!collapse) return;\n\t\t\t\tcollapse.expanded = !collapse.expanded;\n\t\t\t},\n\t\t\tmodifier: {name: 'throttle', limit: 300},\n\t\t},\n\t],\n\tview: () => <slot />,\n});\n","/* eslint-disable */\nimport {default as NowCollapse} from './now-collapse';\nimport {default as NowCollapseTrigger} from './now-collapse-trigger';\n\nimport * as info from '../package.json';\nconst {name, version} = info;\n\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","function createIdSelector(prefix) {\n\treturn function (host) {\n\t\tconst componentId = host.getAttribute('component-id');\n\t\treturn host.shadowRoot.getElementById(`${prefix}-${componentId}`);\n\t};\n}\n\nexport const getListboxEl = (host) =>\n\thost.shadowRoot.querySelector('.now-dropdown-list');\n\nexport const getFocusedEl = (host) => host.shadowRoot.activeElement;\n\nexport const getTriggerEl = createIdSelector('trigger');\n\nexport const getItemEls = (host) => {\n\treturn [...host.shadowRoot.querySelectorAll('.now-dropdown-list-item')];\n};\n\nexport const getSelectedItemEls = (host) => {\n\treturn [\n\t\t...host.shadowRoot.querySelectorAll(\n\t\t\t'.now-dropdown-list-item[aria-selected=\"true\"]',\n\t\t),\n\t];\n};\n\nexport const getFocusedItemEl = (host) => {\n\treturn host.shadowRoot.activeElement;\n};\n\nexport const getFocusedItemIndex = (host) => {\n\treturn getItemEls(host).findIndex(\n\t\t(element) => element.id === getFocusedItemEl(host).id,\n\t);\n};\n\nexport const getShadowRootHost = (el) => {\n\tif (el.parentElement) {\n\t\treturn getShadowRootHost(el.parentElement);\n\t}\n\tif (el.parentNode && el.parentNode instanceof DocumentFragment) {\n\t\treturn el.parentNode.host;\n\t}\n\treturn null;\n};\n\nexport const isPanelList = (el) =>\n\tel.getAttribute('role') === 'listbox' || el.getAttribute('role') === 'menu';\n","import {\n\tisEqual,\n\tflatMap,\n\tisString,\n\ttransform,\n\tisNumber,\n\tisEmpty,\n\tdebounce,\n} from 'lodash';\nimport {\n\tmatchSearchTerm,\n\tariaLivePoliteness,\n} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {t} from 'sn-translate';\nconst {ARIA_LIVE_REGION_UPDATE_REQUESTED} = actionTypes;\n\nexport const hasPath = (list, path) =>\n\tlist.findIndex((p) => isEqual(p, path)) > -1;\n\nexport const removePath = (list, path) => list.filter((p) => !isEqual(p, path));\n\nexport const addPath = (list, path) => [...list, path];\n\nexport const togglePath = (list, path) =>\n\thasPath(list, path) ? removePath(list, path) : addPath(list, path);\n\nexport const flattenItems = (items) =>\n\tflatMap(items, (item) => {\n\t\treturn !isEmpty(item.children) ? item.children : item;\n\t});\n\nexport const filterSelectedItems = (list, selectedItems) => {\n\tlet flatList = list.reduce((acc, listItem) => {\n\t\treturn listItem?.children?.length > 0\n\t\t\t? acc.concat(listItem.children)\n\t\t\t: acc.concat(listItem);\n\t}, []);\n\treturn selectedItems.map((item) => flatList.find((l) => item === l.id));\n};\n\nexport const canRenderDivider = (index, array) => {\n\tconst isLastItem = index === array.length - 1;\n\tif (isLastItem) {\n\t\treturn false;\n\t}\n\n\tconst nextItem = array[index + 1];\n\tconst isNextSectionWithLabel =\n\t\tnextItem.label && Array.isArray(nextItem.children);\n\n\treturn !isNextSectionWithLabel;\n};\n\n/**\n * Adds highlighting to either the label or the sublabel, but not both. If\n * there is a match in the label, we don't want to highlight the sublabel\n */\nexport const highlightLabels = (label, sublabel, searchTerm) => {\n\tconst className = 'has-highlight';\n\n\tconst highlightedLabel = matchSearchTerm(searchTerm, label, className, {\n\t\tlocation: 'first',\n\t});\n\n\t// matchSearchTerm returns the original string if there are no matches,\n\t// otherwise it returns an array\n\tconst highlightedSublabel =\n\t\tsublabel && isString(highlightedLabel)\n\t\t\t? matchSearchTerm(searchTerm, sublabel, className, {location: 'first'})\n\t\t\t: sublabel;\n\n\treturn [highlightedLabel, highlightedSublabel];\n};\n\nexport const getSearchMatches = (items, value, search) => {\n\tif (isEmpty(items)) {\n\t\treturn [];\n\t}\n\n\tif (!value || search === 'managed' || search === 'none') {\n\t\treturn items;\n\t}\n\n\tconst matchesLabel = {};\n\n\treturn (\n\t\titems\n\t\t\t.reduce((result, item) => {\n\t\t\t\tconst children = getSearchMatches(item.children, value, search);\n\t\t\t\tif (children.length) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\tchildren,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst label = item.label ? item.label.toLowerCase() : '';\n\t\t\t\t\tconst sublabel = item.sublabel ? item.sublabel.toLowerCase() : '';\n\t\t\t\t\tconst lowerValue = value.toLowerCase();\n\n\t\t\t\t\tconst method = search === 'contains' ? 'includes' : 'startsWith';\n\n\t\t\t\t\tif (label[method](lowerValue)) {\n\t\t\t\t\t\tmatchesLabel[item.id] = true;\n\t\t\t\t\t\tresult.push(item);\n\t\t\t\t\t} else if (sublabel[method](lowerValue)) {\n\t\t\t\t\t\tmatchesLabel[item.id] = false;\n\t\t\t\t\t\tresult.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t\t// sort the items so that matches on primary label come\n\t\t\t// before matches on sublabel\n\t\t\t.sort((a, b) => matchesLabel[b.id] - matchesLabel[a.id])\n\t);\n};\n\nexport const setActiveItem = (items, selectedItems, updateState) => {\n\tconst flattenedItems = flattenItems(items);\n\tlet defaultActiveItem;\n\tif (Array.isArray(selectedItems) && selectedItems.length) {\n\t\tdefaultActiveItem = flattenedItems.find((item) =>\n\t\t\tselectedItems.includes(item.id),\n\t\t).id;\n\t} else if (Array.isArray(flattenedItems) && flattenedItems.length) {\n\t\tdefaultActiveItem = flattenedItems[0].id;\n\t}\n\tupdateState({activeItem: defaultActiveItem});\n};\n\nexport const getDropdownListConstrain = (constrain) => {\n\treturn transform(constrain, (result, value, key) => {\n\t\tif (key === 'height' || key === 'minHeight' || key === 'maxHeight') {\n\t\t\tresult[key] = isNumber(value) ? `${value}px` : value;\n\t\t}\n\t});\n};\n\n/*\n\tCalculates which aria pattern should be applied to the dropdown\n\tWhen select is set to 'none', apply the \"Menu\" pattern\n\t- https://www.w3.org/WAI/ARIA/apg/patterns/menu/\n\tWhen select is set to 'single' or 'multi', set the \"Listbox\" pattern\n\t- https://www.w3.org/WAI/ARIA/apg/patterns/listbox/\n*/\nexport const calcAriaPattern = (select) => {\n\treturn select === 'none' ? 'menu' : 'listbox';\n};\n\nexport const ariaLiveNoResults = debounce((dispatch) => {\n\tsetTimeout(\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage: t('No results found'),\n\t\t\ttype: ariaLivePoliteness.POLITE,\n\t\t}),\n\t\t500,\n\t);\n}, 250);\n\nexport const ariaLiveNumResults = debounce((dispatch, length) => {\n\tsetTimeout(\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage: t(`{0} items`, length),\n\t\t\ttype: ariaLivePoliteness.POLITE,\n\t\t}),\n\t\t500,\n\t);\n}, 250);\n\nexport const ariaLiveSectionResults = debounce((dispatch, announcement) => {\n\tsetTimeout(\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage: announcement,\n\t\t\ttype: ariaLivePoliteness.ASSERTIVE,\n\t\t}),\n\t\t500,\n\t);\n}, 250);\n","import {\n\tgetListboxEl,\n\tgetItemEls,\n\tgetFocusedItemEl,\n\tgetFocusedItemIndex,\n\tgetSelectedItemEls,\n\tisPanelList,\n} from './elements.js';\nimport {flattenItems} from './helpers.js';\n\n/**\n * Removes focus on a given item.\n * @param {HTMLElement} host\n * @param {HTMLElement} itemEl\n */\nexport const unfocusItem = (host) => {\n\tconst listbox = getListboxEl(host);\n\tlistbox.focus();\n};\n\n/**\n * Focuses the first item (or first selected item) when the dropdown panel is opened.\n * @param {HTMLElement} host\n */\nexport const focusOnOpen = async (host) => {\n\tconst listbox = getListboxEl(host);\n\tlistbox.focus();\n\tconst firstFocusItem = getSelectedItemEls(host)[0] || getItemEls(host)[0];\n\tif (firstFocusItem) {\n\t\tfirstFocusItem.focus();\n\t}\n};\n\n/**\n * Moves focus to previous element (if currently focused) or first element.\n * @param {HTMLElement} host\n */\nexport const focusPreviousItem = (host) => {\n\tconst lastFocusItem = getFocusedItemEl(host);\n\tif (!lastFocusItem || isPanelList(lastFocusItem)) {\n\t\tfocusFirstItem(host);\n\t\treturn;\n\t}\n\tconst lastFocusIndex = getFocusedItemIndex(host);\n\tconst nextFocusItem = getItemEls(host)[lastFocusIndex - 1];\n\tif (nextFocusItem) {\n\t\tnextFocusItem.focus();\n\t}\n};\n\n/**\n * Moves focus to next element (if currently focused) or first element.\n * @param {HTMLElement} host\n */\nexport const focusNextItem = (host) => {\n\tconst lastFocusItem = getFocusedItemEl(host);\n\tif (!lastFocusItem || isPanelList(lastFocusItem)) {\n\t\tfocusFirstItem(host);\n\t\treturn;\n\t}\n\tconst lastFocusIndex = getFocusedItemIndex(host);\n\tconst nextFocusItem = getItemEls(host)[lastFocusIndex + 1];\n\tif (nextFocusItem) {\n\t\tnextFocusItem.focus();\n\t}\n};\n\n/**\n * Focuses the first item in the dropdown panel.\n * @param {HTMLElement} host\n */\nexport const focusFirstItem = (host) => {\n\tconst nextFocusItem = getItemEls(host)[0];\n\tif (nextFocusItem) {\n\t\tnextFocusItem.focus();\n\t}\n};\n\n/**\n * Focuses the last item in the dropdown panel.\n * @param {HTMLElement} host\n */\nexport const focusLastItem = (host) => {\n\tconst nextFocusItem = getItemEls(host).slice(-1)[0];\n\tif (nextFocusItem) {\n\t\tnextFocusItem.focus();\n\t}\n};\n\n/**\n * TODO: Hacks/workaround for a Safari + VoiceOver bug. When updating the\n * input's `aria-activedescendant` asynchronously (which happens all the time\n * because Seismic renders asynchronously), VO will read the previously focused\n * item rather than the current focused item. As a workaround, we can update\n * `aria-activedescendant` synchronously outside of a Seismic render, which\n * causes VO to work correctly. This shouldn't impact anything else because\n * Seismic is going to re-render with the correct attributes anyway.\n *\n * To test to see if we can get rid of this: remove this function, open up the\n * typeahead panel, and arrow through the results. VoiceOver should announce\n * the currently focused item in the list.\n */\nexport const updateActiveDescendant = (input, activeDescendant) => {\n\tif (input) {\n\t\tinput.setAttribute('aria-activedescendant', activeDescendant);\n\t}\n};\n\nexport function doesKeyChangeActive(key, search) {\n\tconst jumpToMatchingLetter = search === 'none' && key.length === 1;\n\tconst moveActive = ['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(key);\n\treturn jumpToMatchingLetter || moveActive;\n}\n\nexport function getRelativeItem(flattenedItems, activeItem, delta, shouldLoop) {\n\tconst lastActiveIndex = flattenedItems.findIndex(\n\t\t(item) => item.id === activeItem,\n\t);\n\tlet nextIndex;\n\tif (shouldLoop && lastActiveIndex === flattenedItems.length - 1) {\n\t\tnextIndex = 0;\n\t} else {\n\t\tnextIndex = Math.min(\n\t\t\tMath.max(lastActiveIndex + delta, 0),\n\t\t\tflattenedItems.length - 1,\n\t\t);\n\t}\n\treturn flattenedItems[nextIndex];\n}\n\nexport function getItemForKeypress(items, activeItem, key) {\n\tconst flattenedItems = flattenItems(items);\n\n\tif (key === 'ArrowDown') {\n\t\treturn getRelativeItem(flattenedItems, activeItem, +1);\n\t}\n\tif (key === 'ArrowUp') return getRelativeItem(flattenedItems, activeItem, -1);\n\tif (key === 'Home') return flattenedItems[0];\n\tif (key === 'End') return flattenedItems[flattenedItems.length - 1];\n\n\tif (key) {\n\t\tconst filteredItems = flattenedItems.filter((item) => {\n\t\t\treturn item.label.toLowerCase().startsWith(key.toLowerCase());\n\t\t});\n\t\treturn getRelativeItem(filteredItems, activeItem, +1, true);\n\t}\n}\n","const avatarSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\tuserName: {type: 'string'},\n\t\timageSrc: {type: 'string'},\n\t\ticon: {type: 'string'},\n\t\tpresence: {type: 'string', enum: ['available', 'away', 'busy', 'offline']},\n\t\tconfigAria: {type: 'object'},\n\t},\n};\n\nconst iconSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\ticon: {type: 'string'},\n\t\tlabel: {type: 'string'},\n\t},\n};\n\nconst imageSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\tsrc: {type: 'string'},\n\t\talt: {type: 'string'},\n\t},\n};\n\nexport const itemSchema = {\n\tname: 'Single Item',\n\ttype: 'object',\n\tproperties: {\n\t\tid: {type: ['string', 'number']},\n\t\tlabel: {type: 'string', translatable: true},\n\t\tsublabel: {type: 'string', translatable: true},\n\t\tariaLabel: {type: 'string'},\n\t\tcount: {type: 'number'},\n\t\ticon: {oneOf: [iconSchema, {type: 'string'}]},\n\t\tsupplementalIcon: iconSchema,\n\t\tpresence: {type: 'string', enum: ['available', 'away', 'busy', 'offline']},\n\t\tdisabled: {type: 'boolean'},\n\t\tavatarProps: avatarSchema,\n\t\timage: imageSchema,\n\t},\n\tdependencies: {\n\t\tavatarProps: {\n\t\t\tproperties: {\n\t\t\t\ticon: false,\n\t\t\t\tpresence: false,\n\t\t\t\timage: false,\n\t\t\t},\n\t\t},\n\t\ticon: {\n\t\t\tproperties: {\n\t\t\t\tavatarProps: false,\n\t\t\t\tpresence: false,\n\t\t\t\timage: false,\n\t\t\t},\n\t\t},\n\t\tpresence: {\n\t\t\tproperties: {\n\t\t\t\ticon: false,\n\t\t\t\tavatarProps: false,\n\t\t\t\timage: false,\n\t\t\t},\n\t\t},\n\t\timage: {\n\t\t\tproperties: {\n\t\t\t\tavatarProps: false,\n\t\t\t\ticon: false,\n\t\t\t\tpresence: false,\n\t\t\t},\n\t\t},\n\t},\n\trequired: ['id', 'label'],\n};\n\nconst sectionSchema = {\n\tname: 'Header with Child Items',\n\ttype: 'object',\n\tproperties: {\n\t\tid: {type: ['string', 'number']},\n\t\tlabel: {type: 'string', translatable: true},\n\t\tchildren: {type: 'array', items: itemSchema},\n\t\tariaLabel: {type: 'string'},\n\t},\n\trequired: ['children'],\n};\n\nexport const itemsSchema = {\n\ttype: 'array',\n\titems: {\n\t\tanyOf: [itemSchema, sectionSchema],\n\t},\n};\n\n// similar to popover constrain, but can't use `target` for any of the height\n// related properties\nexport const constrainSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\twidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\tminWidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\tmaxWidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\theight: {type: 'number'},\n\t\tminHeight: {type: 'number'},\n\t\tmaxHeight: {type: 'number'},\n\t},\n\tadditionalProperties: false,\n};\n","const BEHAVIOR_NAME = 'screenReader';\nimport {actionTypes} from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport unset from 'lodash/unset';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nconst {\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_DISCONNECTED,\n} = actionTypes;\n\n/**\n * Modifies a view function so that the resulting VDOM is patched in a way that\n * is less likely to break when rendered in a different shadowRoot\n *\n * - removes all IDs unless the node explicitly sets `screenReaderBehaviorId` attribute\n * - strips out all classes (since the containing node should be visually\n *   hidden)\n * - injects a `isScreenReaderBehaviorRender` property that the view can use\n *   to conditionally render things for the screen reader\n *\n * @param view {Function} a Seismic render function to decorate\n * @param id {string} a unique ID for the component instance that is used\n * as a prefix for any existing IDs in the original vdom tree\n *\n * @returns {Function} a new view function that can be passed to snabbdom.onStateChange\n */\nconst updateViewForScreenReader = (view, id) => (state, helpers) => {\n\tfunction mutateNode(node) {\n\t\tif (!node) {\n\t\t\treturn;\n\t\t}\n\n\t\tunset(node, 'data.class');\n\t\tunset(node, 'data.props.className');\n\n\t\t// `id` is a prop and an attribute? :shrug:\n\t\tunset(node, 'data.props.id', id);\n\t\tunset(node, 'data.attrs.id', id);\n\n\t\tconst idSuffix =\n\t\t\tget(node, 'data.props.screenReaderBehaviorId') ||\n\t\t\tget(node, 'data.props.screen-reader-behavior-id');\n\t\tif (idSuffix) {\n\t\t\tconst newId = `${id}-${idSuffix}`;\n\t\t\tset(node, 'data.attrs.id', newId);\n\t\t\tset(node, 'data.props.id', newId);\n\t\t\tunset(node, 'data.props.screenReaderBehaviorId');\n\t\t\tunset(node, 'data.props.screen-reader-behavior-id');\n\t\t}\n\n\t\tif (Array.isArray(node.children)) {\n\t\t\tnode.children.forEach((child, index) => {\n\t\t\t\tnode.children[index] = mutateNode(child);\n\t\t\t});\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tconst vdom = view(\n\t\t{\n\t\t\t...state,\n\t\t\tproperties: {\n\t\t\t\t...state.properties,\n\t\t\t\tisScreenReaderBehaviorRender: true,\n\t\t\t},\n\t\t},\n\t\thelpers,\n\t);\n\treturn mutateNode(vdom);\n};\n\n/**\n * Finds or creates a dynamically created target node.\n *\n * @param rootNode {Node} the node that will contain the target.\n * @param id {string} unique ID for the target node.\n *\n * @returns {HTMLElement} If we've already created a DOM node for the given\n * rootNode, this method will find and return that. If a created DOM node\n * cannot be found, one will be created, appended to the rootNode, and\n * returned.\n */\nfunction getDynamicallyCreatedTarget(rootNode, id) {\n\tconst containerId = `${BEHAVIOR_NAME}-behavior-${id}`;\n\tconst existingNode = rootNode.querySelector(`#${containerId}`);\n\n\tif (existingNode) {\n\t\treturn existingNode;\n\t}\n\n\tconst newNode = document.createElement('div');\n\tnewNode.id = containerId;\n\n\t// stolen from now-a11y-label mixin. Need explicit styles because\n\t// we might be in somebody else's shadowRoot\n\tnewNode.style =\n\t\t'position: absolute; overflow: hidden; width: 1px; height: 1px; margin: 0; border: none; padding: 0; white-space: nowrap; clip: rect(0 0 0 0); clip-path: inset(50%);';\n\n\trootNode.appendChild(newNode);\n\n\treturn newNode;\n}\n\nfunction isCustomElement(node) {\n\treturn node && node.shadowRoot && node.tagName.includes('-');\n}\n\n/**\n * Finds or creates a DOM node that we can put the screen reader content into.\n *\n * @param host {HTMLElement} The host node that is using the behavior.\n * @param id {string} unique ID for the instance of the component. When a\n * target node needs to be dynamically created, this ID is used for that\n * node.\n * @param selector {string?} If provided, used as a querySelector string\n * relative to the host's parent element to search for an existing target node.\n * If not provided, a target node is dynamically created and appended as a\n * sibling of the host. If the selector string resolves to a child Seismic\n * component, the target node will be dynamically created in that child's\n * shadowRoot.\n *\n * @returns {{node: HTMLElement?, created: boolean}} The DOM node to use to\n * append screen reader content, and whether or not that node was dynamically\n * created. `node` be null if a selector was provided that did not match\n * anything.\n */\nfunction getRenderTarget(host, id, selector) {\n\tlet parentRoot = host.getRootNode();\n\n\tif (parentRoot === document) {\n\t\tparentRoot = document.body;\n\t}\n\n\t// use a dynamically created DOM node that is appended to the parent's\n\t// shadowRoot\n\tif (!selector) {\n\t\treturn {\n\t\t\tnode: getDynamicallyCreatedTarget(parentRoot, id),\n\t\t\tcreated: true,\n\t\t};\n\t}\n\n\tconst target = parentRoot.querySelector(selector);\n\n\t// if we selected a child component, use a dynamically created DOM node that\n\t// is appended to that child's shadowRoot\n\tif (isCustomElement(target)) {\n\t\treturn {\n\t\t\tnode: getDynamicallyCreatedTarget(target.shadowRoot, id),\n\t\t\tcreated: true,\n\t\t};\n\t}\n\n\treturn {\n\t\tnode: target,\n\t\tcreated: false,\n\t};\n}\n\n/**\n * Removes screen reader content and any dynamically created container node.\n *\n * @param node {HTMLElement?} The node that contains screen reader content\n * @param created {boolean} Whether nor not this node was dynamically created by the behavior\n */\nfunction unmount(node, created) {\n\tif (!node) {\n\t\treturn;\n\t}\n\n\t// If this behavior created the node, then it's safe to remove the entire\n\t// node.\n\tif (created) {\n\t\tnode.remove();\n\t} else {\n\t\t// Otherwise we just want to clear out its children. This still goes\n\t\t// through `onStateChange` so that function can do some additional cleanup.\n\t\tsnabbdom.onStateChange(node, () => null);\n\t}\n}\n\n/**\n * This behavior allows a component to define screen-reader content that can be\n * injected into different components' shadowRoots. Many aria attributes, such\n * as `aria-describedby`, require referencing DOM nodes via ID. These IDs must\n * exist within the same shadowRoot boundary as the aria attribute. This can\n * make it challenging to compose smaller components in a way that is supported\n * by a screen-reader, because often 2 different components are encapsulating\n * different DOM nodes that need to reference each other.\n *\n * Further reading: https://github.com/whatwg/html/issues/3219\n *\n * Usage, defining screen-reader content:\n *\n * After installation import the behavior at the top of your component JS file\n * and register it in your component behaviors list.\n *\n * There is 1 required option, `screenReaderView`, which is a view function that\n * should return screen-reader content. The view function is called with the same\n * parameters that the normal Seismic view function is provided:\n *\n * `(state, { dispatch, updateProperties, updateState })`\n *\n * The `screenReaderView` function should return an accessible DOM tree,\n * including nodes with IDs that other components can reference. These IDs are\n * part of the public API and **must never change**. Doing so will make your\n * component backwards-incompatible.\n *\n * ```jsx\n * import screenReaderBehavior from '@servicenow/behavior-screen-reader';\n *\n * createCustomElement('my-component', {\n *   // ...\n *   behaviors: [\n *\t\t{\n *\t\t\tbehavior: screenReaderBehavior,\n *\t\t\toptions: {\n *\t\t\t\tscreenReaderView: (state, { dispatch, updateProperties, updateState }) => (\n *\t\t\t\t\t<ul role=\"listbox\" id=\"listbox\">\n *\t\t\t\t\t\t<li role=\"option\" id=\"option-1\">Option 1</li>\n *\t\t\t\t\t\t<li role=\"option\" id=\"option-2\">Option 2</li>\n *\t\t\t\t\t</ul>\n *\t\t\t\t)\n *\t\t\t}\n *\t\t}\n *\t]\n * });\n * ```\n *\n * Usage, consuming screen-reader content:\n *\n * Once you have a component that defines screen-reader content, a consuming\n * parent component can add the following properties to decide where to render\n * that content:\n *\n *\t- `screen-reader-id` (string, required): This is a unique ID to identify\n *\tthe screen-reader content. All IDs defined by the producing component will\n *\tbe prefixed with this string, which helps to ensure there are no ID\n *\tcollisions when the content is rendered in a different shadowRoot. The\n *\tvalue of this property should include a componentId (or similar uuid) to\n *\tensure uniqueness of this value.\n *\n *\t- `screen-reader-inject-into` (string, optional): A selector string that\n *\tinstructs the behavior where to render the screen-reader content. If not\n *\tprovided, the screen-reader content will be appended to the consuming\n *\tcomponent's shadowRoot, and styled in a way that has no visual impact on\n *\tthe component. If the selector returns a child node that is another Seismic\n *\tcomponent, the screen-reader content will be appended to that child's\n *\tshadowRoot. If the selector returns any other DOM node, the screen-reader\n *\tcontent will be rendered into that node, replacing all existing children of\n *\tthat node. In this case, it is the consumer's responsibility to ensure that\n *\tthis node is styled in a way that visually hides the content.\n *\n * Now that the consuming component has defined the ID prefix and location of the\n * screen-reader content, aria attributes can be provided to the necessary nodes\n * in order to link it all together.\n *\n * Any time the producing component is rendered, the screen-reader content will\n * be updated to match. This ensures that both the visual content and screen-reader\n * content are kept in sync.\n *\n * Check out the examples for a complete usage sample.\n *\n * @seismicBehavior screenReaderBehavior\n * @summary Provides a way to define screen-reader content that can be used in\n * different shadowRoots\n */\nexport default {\n\tname: BEHAVIOR_NAME,\n\tproperties: {\n\t\tscreenReaderInjectInto: {},\n\t\tscreenReaderId: {},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: ({action, host}) => {\n\t\t\tif (action.payload.options.screenReaderView) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[@servicenow/behavior-screen-reader <${host.tagName.toLowerCase()} component-id=\"${\n\t\t\t\t\t\taction.meta.id\n\t\t\t\t\t}\">]: tried to use the ${BEHAVIOR_NAME} behavior but did not provide required \\`screenReaderView\\` function :(`,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_RENDERED]: ({\n\t\t\taction,\n\t\t\thost,\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tupdateProperties,\n\t\t}) => {\n\t\t\tconst {screenReaderInjectInto: selector, screenReaderId: id} = properties;\n\t\t\tconst {screenReaderView} = action.payload.options;\n\n\t\t\tif (!screenReaderView || !id || !host.isConnected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {node, created} = getRenderTarget(host, id, selector);\n\n\t\t\tif (!node) {\n\t\t\t\t/* eslint-disable-next-line no-console */\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[@servicenow/behavior-screen-reader <${host.tagName.toLowerCase()} component-id=\"${\n\t\t\t\t\t\taction.meta.id\n\t\t\t\t\t}\">]: Could not locate target DOM node \"${selector}\" to append screen-reader content. Verify that this node exists in the shadowRoot.`,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// This is kinda ugly. Ideally we'd like to not keep DOM references in\n\t\t\t// state and instead query for them when we need them. However, this\n\t\t\t// doesn't work all the time because this behavior tries to query for\n\t\t\t// nodes relative to the host's parent element. When this element\n\t\t\t// disconnects, it can no longer traverse up to its parent to do any\n\t\t\t// cleanup. So, back to shoving DOM nodes in state :sob:\n\t\t\tupdateState(({state}) => {\n\t\t\t\tconst prevState = state.behaviors[BEHAVIOR_NAME];\n\t\t\t\tif (prevState.node !== node) {\n\t\t\t\t\tunmount(prevState.node, prevState.created);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'assign',\n\t\t\t\t\tpath: `behaviors.${BEHAVIOR_NAME}`,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tcreated,\n\t\t\t\t\t},\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tsnabbdom.onStateChange(\n\t\t\t\tnode,\n\t\t\t\tupdateViewForScreenReader(screenReaderView, id),\n\t\t\t\tstate,\n\t\t\t\t{\n\t\t\t\t\tdispatch,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tupdateProperties,\n\t\t\t\t},\n\t\t\t);\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({action, state}) => {\n\t\t\tconst {name, value} = action.payload;\n\n\t\t\t// allow consumer to tear down screen reader view without disconnecting\n\t\t\t// the component by setting screen-reader-id to falsey\n\t\t\tif (name === 'screenReaderId' && !value) {\n\t\t\t\tconst {node, created} = state.behaviors[BEHAVIOR_NAME];\n\t\t\t\tunmount(node, created);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({state}) => {\n\t\t\tconst {node, created} = state.behaviors[BEHAVIOR_NAME];\n\t\t\tunmount(node, created);\n\t\t},\n\t},\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_now-dropdown-list.scss';\nimport {\n\thighlightLabels,\n\tcanRenderDivider,\n\ttogglePath,\n\tgetSearchMatches,\n\tflattenItems,\n\tfilterSelectedItems,\n\tcalcAriaPattern,\n\tariaLiveNoResults,\n\tariaLiveNumResults,\n\tariaLiveSectionResults,\n} from './utils/helpers';\nimport {\n\tdoesKeyChangeActive,\n\tgetItemForKeypress,\n\tupdateActiveDescendant,\n} from './utils/focus.js';\nimport {t} from 'sn-translate';\nimport '@servicenow/now-icon';\nimport {localizePresence} from '@servicenow/now-icon';\nimport '@servicenow/now-avatar';\nimport {itemsSchema} from './schemas/dropdown-list-schema';\nimport screenReaderBehavior from './behavior-screen-reader';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {configAriaSchema} from '@servicenow/library-schemas';\nimport debounce from 'lodash/debounce';\nconst {COMPONENT_PROPERTY_CHANGED, COMPONENT_RENDERED} = actionTypes;\n\nconst debounceDispatch = debounce((fn) => fn(), 250);\nconst ARROW_KEYS = ['ArrowDown', 'End', 'Home', 'ArrowUp'];\n\nconst handleNextItem = (host, properties, key, dispatch) => {\n\tconst {search, items, searchTerm, activeItem} = properties;\n\tconst filteredItems = getSearchMatches(items, searchTerm, search);\n\tconst nextActiveItem = getItemForKeypress(filteredItems, activeItem, key);\n\tif (!nextActiveItem) return;\n\tif (search !== 'none') {\n\t\tconst input = host.nowRootNode.querySelector(\n\t\t\t'.now-dropdown-list-search-field',\n\t\t);\n\n\t\t// TODO: Hacks/workaround for Safari + VoiceOver. See comment in\n\t\t// function definition. This is also kind of weird because\n\t\t// dropdown-list accepts activeItem as a prop, so there's a\n\t\t// chance that this gets out of sync with the property value. But\n\t\t// we don't run into this with our current usage of dropdown-list\n\t\t// in select + typeahead + typeahead-multi.\n\t\tupdateActiveDescendant(input, nextActiveItem.id);\n\t}\n\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_DROPDOWN_LIST#ACTIVE_ITEM_SET',\n\t\t\tpayload: {value: nextActiveItem.id},\n\t\t};\n\t});\n};\n\nconst handleItemClick = (item, select, dispatch) => {\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_DROPDOWN_LIST#ITEM_CLICKED',\n\t\t\tpayload: {item},\n\t\t};\n\t});\n\tif (select === 'single' || select === 'multi') {\n\t\tdispatch(({properties}) => {\n\t\t\tconst filteredItemIds = togglePath(properties.selectedItems, item.id);\n\t\t\treturn {\n\t\t\t\ttype: 'NOW_DROPDOWN_LIST#SELECTED_ITEMS_SET',\n\t\t\t\tpayload: {\n\t\t\t\t\tvalue: properties.select === 'multi' ? filteredItemIds : [item.id],\n\t\t\t\t\titems:\n\t\t\t\t\t\tproperties.select === 'multi'\n\t\t\t\t\t\t\t? filterSelectedItems(properties.items, filteredItemIds)\n\t\t\t\t\t\t\t: [item],\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n};\n\n/**\n * Returns the id of the active item in the menu, if present.\n *\n * If screen reader behavior is enabled, the id is transformed\n * using the screen reader id.\n * @returns {string}\n */\nconst getActiveDescendant = (\n\tactiveItem,\n\tisScreenReaderBehaviorRender,\n\tscreenReaderId,\n) => {\n\tif (activeItem === null || activeItem === undefined) return;\n\n\treturn isScreenReaderBehaviorRender\n\t\t? `${screenReaderId}-option-${activeItem}`\n\t\t: activeItem;\n};\n\n/**\n * Returns the id of the menu container.\n *\n * If screen reader behavior is enabled, the id is transformed\n * using the screen reader id.\n * @returns {string}\n */\nconst getListId = (\n\tnowId,\n\tisScreenReaderBehaviorRender,\n\tscreenReaderId,\n\tsuffix,\n) => {\n\treturn isScreenReaderBehaviorRender\n\t\t? `${screenReaderId}-${suffix}`\n\t\t: `${nowId}-item-container`;\n};\n\n/**\n * Workaround for this webkit bug:\n * https://bugs.webkit.org/show_bug.cgi?id=209975\n *\n * Allows Safari + VO to correctly announce activedescendant items when using\n * ArrowUp/ArrowDown to focus different items in the listbox. This needs to be\n * called both when the input first receives focus and on any input event. The\n * setTimeout() is also important, as nothing works without it. Safari likes to\n * be tricksy sometimes :) -- I honestly have no idea why but it works :shrug:\n *\n * To test this:\n * 1. Focus in the input field and use arrow keys to change the\n *    aria-activedescendant value.\n * 2. Type a value into the input field, then use arrow keys to change the\n *    aria-activedescendant value\n *\n * In both cases Safari + VO should announce the active items as they are changed.\n */\nconst fixListboxForVoiceOver = (event, menuOrListbox) => {\n\tconst root = event.target.getRootNode();\n\tconst listbox = root.querySelector('.now-dropdown-list-item-container');\n\tlistbox.removeAttribute('role');\n\tsetTimeout(() => {\n\t\tlistbox.setAttribute('role', menuOrListbox);\n\t}, 50);\n};\n\nconst renderCheckmark = (selected, select, hideCheckmark, size) => {\n\tif (hideCheckmark || select === 'none') {\n\t\treturn;\n\t}\n\tif (selected) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-dropdown-list-checkmark\"\n\t\t\t\ticon=\"check-fill\"\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t);\n\t}\n\treturn <div className=\"now-dropdown-list-checkmark\" />;\n};\n\nconst renderIdentifier = (\n\ticon,\n\tpresence,\n\tavatarProps,\n\timage,\n\tselected,\n\tsize,\n) => {\n\tif (presence) {\n\t\treturn (\n\t\t\t<now-icon-presence\n\t\t\t\tclass={{\n\t\t\t\t\t'now-dropdown-list-identifier': true,\n\t\t\t\t\t'now-m-inline-end--sm': size === 'md',\n\t\t\t\t\t'now-m-inline-end--xs': size === 'sm',\n\t\t\t\t}}\n\t\t\t\tpresence={presence}\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t);\n\t} else if (icon) {\n\t\tlet iconVal, iconLabel;\n\t\tlet isObject = false;\n\t\tif (typeof icon === 'object') {\n\t\t\ticonVal = icon?.icon;\n\t\t\ticonLabel = icon?.label;\n\t\t\tisObject = true;\n\t\t} else {\n\t\t\ticonVal = icon;\n\t\t}\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclass={{\n\t\t\t\t\t'now-dropdown-list-identifier': true,\n\t\t\t\t\t'now-m-inline-end--sm': size === 'md',\n\t\t\t\t\t'now-m-inline-end--xs': size === 'sm',\n\t\t\t\t}}\n\t\t\t\ticon={\n\t\t\t\t\tselected\n\t\t\t\t\t\t? iconVal.replace('outline', 'fill')\n\t\t\t\t\t\t: iconVal.replace('fill', 'outline')\n\t\t\t\t}\n\t\t\t\tsize={size}\n\t\t\t\tconfigAria={isObject ? {icon: {'aria-label': iconLabel}} : undefined}\n\t\t\t/>\n\t\t);\n\t} else if (avatarProps) {\n\t\tconst avatarSize = {sm: 'xs', md: 'sm'};\n\t\tlet configAria = {avatar: {'aria-hidden': 'true'}};\n\t\tif (avatarProps.configAria) {\n\t\t\tconfigAria = avatarProps.configAria;\n\t\t} else if (avatarProps.presence) {\n\t\t\tconfigAria = {\n\t\t\t\tavatar: {'aria-label': localizePresence(avatarProps.presence)},\n\t\t\t};\n\t\t}\n\t\treturn (\n\t\t\t<now-avatar\n\t\t\t\tclass={{\n\t\t\t\t\t'now-dropdown-list-identifier': true,\n\t\t\t\t\t'now-m-inline-end--sm': size === 'md',\n\t\t\t\t\t'now-m-inline-end--xs': size === 'sm',\n\t\t\t\t}}\n\t\t\t\tuser-name={avatarProps.userName}\n\t\t\t\timage-src={avatarProps.imageSrc}\n\t\t\t\ticon={avatarProps.icon}\n\t\t\t\tpresence={avatarProps.presence}\n\t\t\t\tsize={avatarSize[size]}\n\t\t\t\tconfig-aria={configAria}\n\t\t\t\thide-tooltip\n\t\t\t/>\n\t\t);\n\t} else if (image) {\n\t\treturn (\n\t\t\t<img\n\t\t\t\tclassName=\"now-dropdown-list-item-img\"\n\t\t\t\tsrc={image.src}\n\t\t\t\talt={image.alt || ''}\n\t\t\t\ton-error={(e) => {\n\t\t\t\t\te.target.style.visibility = 'hidden';\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n\treturn undefined;\n};\n\nconst renderLabel = (\n\trawLabel,\n\thighlightedLabel,\n\tcount,\n\tsublabel,\n\tsupplementalIcon,\n\tsize,\n) => {\n\treturn (\n\t\t<div className=\"now-dropdown-list-label\">\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-dropdown-list-label-highlighted': true,\n\t\t\t\t\t'now-line-height-crop': !sublabel,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div>{highlightedLabel}</div>\n\t\t\t</div>\n\t\t\t{count ? (\n\t\t\t\t<div class={{'now-line-height-crop': !sublabel}}>&nbsp;({count})</div>\n\t\t\t) : undefined}\n\t\t\t{supplementalIcon ? (\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"now-m-inline-start--xs\"\n\t\t\t\t\ticon={supplementalIcon.icon}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tconfigAria={{icon: {'aria-label': supplementalIcon.label}}}\n\t\t\t\t/>\n\t\t\t) : undefined}\n\t\t</div>\n\t);\n};\n\nconst renderLabels = (\n\tlabel,\n\tsublabel,\n\tcount,\n\tsearchTerm,\n\tsupplementalIcon,\n\tsize,\n) => {\n\tconst [highlightedLabel, highlightedSublabel] = highlightLabels(\n\t\tlabel,\n\t\tsublabel,\n\t\tsearchTerm,\n\t);\n\n\treturn (\n\t\t<div className=\"now-dropdown-list-labels\">\n\t\t\t{renderLabel(\n\t\t\t\tlabel,\n\t\t\t\thighlightedLabel,\n\t\t\t\tcount,\n\t\t\t\tsublabel,\n\t\t\t\tsupplementalIcon,\n\t\t\t\tsize,\n\t\t\t)}\n\t\t\t{sublabel ? (\n\t\t\t\t<div className=\"now-dropdown-list-sublabel\">{highlightedSublabel}</div>\n\t\t\t) : undefined}\n\t\t</div>\n\t);\n};\n\nconst renderHeader = (item, id) =>\n\titem.label ? (\n\t\t<div\n\t\t\tid={id}\n\t\t\tclassName=\"now-dropdown-list-header\"\n\t\t\ton-mousedown={(e) => e.preventDefault()}\n\t\t>\n\t\t\t<div className=\"now-line-height-crop\">{item.label}</div>\n\t\t</div>\n\t) : undefined;\n\nconst renderDivider = (index, array, menuOrListbox) =>\n\tcanRenderDivider(index, array) ? (\n\t\t<hr\n\t\t\tclassName=\"now-dropdown-list-divider\"\n\t\t\trole={menuOrListbox === 'menu' ? 'separator' : 'presentation'}\n\t\t\taria-orientation={menuOrListbox === 'menu' ? 'horizontal' : undefined}\n\t\t/>\n\t) : undefined;\n\nconst renderDropdownListItem = ({\n\tlabel,\n\tsublabel,\n\tselected,\n\tselect,\n\tonClick,\n\tid,\n\ticon,\n\tsupplementalIcon,\n\timage,\n\tpresence,\n\tavatarProps,\n\tcount,\n\tdisabled,\n\tsearchTerm,\n\thideCheckmark,\n\tsetSize,\n\tposition,\n\tdispatch,\n\tsearch,\n\tmenuOrListbox,\n\titemElement,\n\tsize,\n\tactiveItem,\n\tlastCursorPos,\n\tfromMouseWheel,\n\tupdateState,\n}) => {\n\tconst ListItem = itemElement ? itemElement : 'div';\n\treturn (\n\t\t<ListItem\n\t\t\tid={id}\n\t\t\tkey={id}\n\t\t\tscreen-reader-behavior-id={`option-${id}`}\n\t\t\tclass={{\n\t\t\t\t'now-dropdown-list-item': true,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'is-selected': selected,\n\t\t\t\t'is-focused': id == activeItem,\n\t\t\t\t'is-multi-line': sublabel,\n\t\t\t\t'is-select-none': select === 'none',\n\t\t\t\t[`-${size}`]: size,\n\t\t\t}}\n\t\t\ton-mouseover={(e) => {\n\t\t\t\tconst id = e.currentTarget.id;\n\t\t\t\tif (fromMouseWheel) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpath: 'fromMouseWheel',\n\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t});\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_DROPDOWN_LIST#ACTIVE_ITEM_SET',\n\t\t\t\t\t\t\tpayload: {value: id},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-mousemove={(e) => {\n\t\t\t\tconst id = e.currentTarget.id;\n\t\t\t\tconst currentCursorPos = {x: e.clientX, y: e.clientY};\n\t\t\t\tconst cursorMoved =\n\t\t\t\t\tcurrentCursorPos.x !== lastCursorPos.x ||\n\t\t\t\t\tcurrentCursorPos.y !== lastCursorPos.y;\n\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'lastCursorPos',\n\t\t\t\t\tvalue: currentCursorPos,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t\tif (cursorMoved && activeItem != id) {\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_DROPDOWN_LIST#ACTIVE_ITEM_SET',\n\t\t\t\t\t\t\tpayload: {value: id},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-mousedown={\n\t\t\t\tdisabled || search !== 'none' ? (e) => e.preventDefault() : undefined\n\t\t\t}\n\t\t\ton-mouseleave={(e) => {\n\t\t\t\tconst currentCursorPos = {x: e.clientX, y: e.clientY};\n\t\t\t\tupdateState({lastCursorPos: currentCursorPos});\n\t\t\t}}\n\t\t\ton-click={disabled ? undefined : onClick}\n\t\t\trole={menuOrListbox === 'menu' ? 'menuitem' : 'option'}\n\t\t\taria-selected={\n\t\t\t\tmenuOrListbox === 'menu' ? undefined : selected ? 'true' : 'false'\n\t\t\t}\n\t\t\taria-setsize={String(setSize)}\n\t\t\taria-posinset={String(position)}\n\t\t\taria-disabled={disabled ? 'true' : undefined}\n\t\t>\n\t\t\t{renderCheckmark(selected, select, hideCheckmark, size)}\n\t\t\t{renderIdentifier(icon, presence, avatarProps, image, selected, size)}\n\t\t\t{renderLabels(label, sublabel, count, searchTerm, supplementalIcon, size)}\n\t\t</ListItem>\n\t);\n};\n\nconst ariaAnnouncements = (\n\tfilteredItems,\n\titems,\n\tdispatch,\n\tupdateState,\n\tvalue,\n) => {\n\tlet announcements = [],\n\t\tuncategorizedCount = 0,\n\t\thasChildren = false,\n\t\tchildCount = 0,\n\t\ttotalItems = 0,\n\t\tannouncementMessage = '';\n\tif (filteredItems.length === 0) {\n\t\tariaLiveNoResults(dispatch);\n\t} else {\n\t\tfilteredItems.forEach((item) => {\n\t\t\tlet getSectionHeader = item.ariaLabel || item.label || t('uncategorized');\n\t\t\tif (item.children) {\n\t\t\t\thasChildren = true;\n\t\t\t\tchildCount = item.children.length;\n\t\t\t\t//if the dropdown list has a list of items with children, announce the number of items with the section headers\n\t\t\t\tannouncementMessage = t(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'now-dropdown-search-labels',\n\t\t\t\t\t\tmessage: '{childCount} items in {sectionHeader}',\n\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t'ARIA message for screenreader users telling them the number of child items in a group with header of sectionHeader',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tchildCount: childCount,\n\t\t\t\t\t\tsectionHeader: getSectionHeader,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tannouncements.push(announcementMessage);\n\t\t\t\ttotalItems += item.children.length;\n\t\t\t} else {\n\t\t\t\tuncategorizedCount += 1; // Count uncategorized items\n\t\t\t\ttotalItems++;\n\t\t\t}\n\t\t});\n\n\t\t//if the user has removed all the text, go back to announcing the number of items\n\t\tif (filteredItems.length === items.length && !value) {\n\t\t\tariaLiveNumResults(dispatch, totalItems);\n\t\t}\n\n\t\t//if the dropdown list is a plain list of items without any children, announce the number of items\n\t\telse if (!hasChildren) {\n\t\t\tariaLiveNumResults(dispatch, filteredItems.length);\n\t\t} else {\n\t\t\t// If there are uncategorized items, add them to the announcement\n\t\t\tif (uncategorizedCount > 0) {\n\t\t\t\tannouncementMessage = t(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'now-dropdown-search-uncategorized',\n\t\t\t\t\t\tmessage: '{uncategorizedCount} items in uncategorized',\n\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t'ARIA message for screenreader users telling them the number of items in an uncategorized section.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tuncategorizedCount: uncategorizedCount,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tannouncements.push(announcementMessage);\n\t\t\t}\n\t\t\tariaLiveSectionResults(dispatch, announcements.join(', '));\n\t\t\tannouncements = [];\n\t\t}\n\t}\n\n\tupdateState({\n\t\tannounceResults: false,\n\t});\n};\n\nconst renderSectionsOrItems = (\n\titems,\n\tselectedItems,\n\tselect,\n\tdispatch,\n\tsearchTerm,\n\tsearch,\n\tactiveItem,\n\thideCheckmark,\n\tmenuOrListbox,\n\tnowId,\n\tsize,\n\tlastCursorPos,\n\tfromMouseWheel,\n\tupdateState,\n\tannounceResults,\n) => {\n\tif (!items.length) {\n\t\treturn (\n\t\t\t<div className=\"now-dropdown-list-header\">{t('No results found')}</div>\n\t\t);\n\t}\n\tconst filteredItems = getSearchMatches(items, searchTerm, search);\n\tconst setSize = flattenItems(filteredItems).length;\n\n\tlet position = 0;\n\tconst renderChild = (item, itemElement) => {\n\t\tposition++;\n\t\treturn renderDropdownListItem({\n\t\t\tlabel: item.label,\n\t\t\tsublabel: item.sublabel,\n\t\t\tid: item.id,\n\t\t\ticon: item.icon,\n\t\t\tpresence: item.presence,\n\t\t\tsupplementalIcon: item.supplementalIcon,\n\t\t\timage: item.image,\n\t\t\tavatarProps: item.avatarProps,\n\t\t\tcount: item.count,\n\t\t\tdisabled: item.disabled,\n\t\t\tselected: selectedItems && selectedItems.includes(item.id),\n\t\t\tselect,\n\t\t\tonClick: () => handleItemClick(item, select, dispatch),\n\t\t\tsearchTerm,\n\t\t\thideCheckmark,\n\t\t\tdispatch,\n\t\t\tsetSize,\n\t\t\tposition,\n\t\t\tsearch,\n\t\t\tmenuOrListbox,\n\t\t\titemElement,\n\t\t\tsize,\n\t\t\tactiveItem,\n\t\t\tlastCursorPos,\n\t\t\tfromMouseWheel,\n\t\t\tupdateState,\n\t\t});\n\t};\n\n\tif (announceResults) {\n\t\tariaAnnouncements(filteredItems, items, dispatch, updateState, searchTerm);\n\t}\n\n\treturn filteredItems.map((item, index, array) => {\n\t\tif (Array.isArray(item.children)) {\n\t\t\tconst headerId = `${nowId}-list-header-${index}`;\n\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{renderHeader(item, headerId)}\n\t\t\t\t\t<ul\n\t\t\t\t\t\tclassName=\"now-dropdown-ul\"\n\t\t\t\t\t\trole=\"group\"\n\t\t\t\t\t\taria-labelledby={item.label ? headerId : undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.children.map((item) => renderChild(item, 'li'))}\n\t\t\t\t\t</ul>\n\t\t\t\t\t{renderDivider(index, array, menuOrListbox)}\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n\n\t\treturn renderChild(item);\n\t});\n};\n\nconst renderSearch = (\n\tsearch,\n\tsearchTerm,\n\tactiveItem,\n\tnowId,\n\tupdateState,\n\tdispatch,\n\tisScreenReaderBehaviorRender,\n\tscreenReaderId,\n\tmenuOrListbox,\n\tsize,\n) => {\n\tif (search === 'none') return;\n\tconst searchPlaceholder = t({\n\t\tcode: 'now-dropdown-list-search-placeholder',\n\t\tmessage: 'Search',\n\t\tcomment: 'Verb. Hint text that appears in a search field',\n\t});\n\n\treturn (\n\t\t<div class={{'now-dropdown-list-search': true, [`-${size}`]: size}}>\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-dropdown-list-search-icon now-p-inline--sm\"\n\t\t\t\ticon=\"magnifying-glass-outline\"\n\t\t\t\tsize=\"sm\"\n\t\t\t/>\n\t\t\t<input\n\t\t\t\tclassName=\"now-dropdown-list-search-field\"\n\t\t\t\ton-input={(e) => {\n\t\t\t\t\tfixListboxForVoiceOver(e, menuOrListbox);\n\t\t\t\t\tconst value = e.target.value;\n\t\t\t\t\tdebounceDispatch(() => {\n\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttype: 'NOW_DROPDOWN_LIST#SEARCH_TERM_SET',\n\t\t\t\t\t\t\t\tpayload: {value: value},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttype: 'PRIVATE#SET_ITEM',\n\t\t\t\t\t\t\t\tpayload: {value: value, id: null, actionSource: 'input'},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\ton-focus={(e) => {\n\t\t\t\t\tfixListboxForVoiceOver(e, menuOrListbox);\n\t\t\t\t\tupdateState({searchHasFocus: true});\n\t\t\t\t}}\n\t\t\t\ton-blur={() => updateState({searchHasFocus: false})}\n\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\tvalue={searchTerm}\n\t\t\t\taria-label={searchPlaceholder}\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-expanded=\"true\"\n\t\t\t\taria-activedescendant={getActiveDescendant(\n\t\t\t\t\tactiveItem,\n\t\t\t\t\tisScreenReaderBehaviorRender,\n\t\t\t\t\tscreenReaderId,\n\t\t\t\t)}\n\t\t\t\taria-controls={getListId(\n\t\t\t\t\tnowId,\n\t\t\t\t\tisScreenReaderBehaviorRender,\n\t\t\t\t\tscreenReaderId,\n\t\t\t\t\tmenuOrListbox,\n\t\t\t\t)}\n\t\t\t\tautocomplete=\"off\"\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {\n\t\titems,\n\t\tselectedItems,\n\t\tselect,\n\t\tsearch,\n\t\tsearchTerm,\n\t\tactiveItem,\n\t\thideCheckmark,\n\t\tdisableRole,\n\t\tisScreenReaderBehaviorRender,\n\t\tscreenReaderId,\n\t\tnowId,\n\t\tconfigAria,\n\t\tsize,\n\t} = state.properties;\n\n\tconst {fromMouseWheel, lastCursorPos, announceResults} = state;\n\tconst menuOrListbox = calcAriaPattern(select);\n\tconst role = disableRole ? undefined : menuOrListbox;\n\tconst activeDescendantId =\n\t\tsearch === 'none'\n\t\t\t? getActiveDescendant(\n\t\t\t\t\tactiveItem,\n\t\t\t\t\tisScreenReaderBehaviorRender,\n\t\t\t\t\tscreenReaderId,\n\t\t\t\t)\n\t\t\t: undefined;\n\n\treturn (\n\t\t<div className=\"now-dropdown-list\">\n\t\t\t{renderSearch(\n\t\t\t\tsearch,\n\t\t\t\tsearchTerm,\n\t\t\t\tactiveItem,\n\t\t\t\tnowId,\n\t\t\t\tupdateState,\n\t\t\t\tdispatch,\n\t\t\t\tisScreenReaderBehaviorRender,\n\t\t\t\tscreenReaderId,\n\t\t\t\tmenuOrListbox,\n\t\t\t\tsize,\n\t\t\t)}\n\t\t\t{/* eslint-disable-next-line jsx-a11y/aria-activedescendant-has-tabindex */}\n\t\t\t<div\n\t\t\t\tid={getListId(\n\t\t\t\t\tnowId,\n\t\t\t\t\tisScreenReaderBehaviorRender,\n\t\t\t\t\tscreenReaderId,\n\t\t\t\t\tmenuOrListbox,\n\t\t\t\t)}\n\t\t\t\tclassName=\"now-dropdown-list-item-container\"\n\t\t\t\tonwheel={() => {\n\t\t\t\t\tif (!fromMouseWheel) {\n\t\t\t\t\t\tupdateState({fromMouseWheel: true});\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\trole={role}\n\t\t\t\tscreen-reader-behavior-id={menuOrListbox}\n\t\t\t\t{...filterAriaAttributes(configAria, 'panel')}\n\t\t\t\taria-multiselectable={select === 'multi' ? 'true' : undefined}\n\t\t\t\taria-activedescendant={activeDescendantId}\n\t\t\t\t// for some reason having a tabindex when using fake focus (with the\n\t\t\t\t// screen-reader behavior) causes Safari + VO to stop announcing the\n\t\t\t\t// activedescendant item. Only use a tabindex when we have real focus\n\t\t\t\ttabindex={\n\t\t\t\t\tsearch === 'none' && !isScreenReaderBehaviorRender ? '0' : undefined\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{renderSectionsOrItems(\n\t\t\t\t\titems,\n\t\t\t\t\tselectedItems,\n\t\t\t\t\tselect,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tsearchTerm,\n\t\t\t\t\tsearch,\n\t\t\t\t\tactiveItem,\n\t\t\t\t\thideCheckmark,\n\t\t\t\t\tmenuOrListbox,\n\t\t\t\t\tnowId,\n\t\t\t\t\tsize,\n\t\t\t\t\tlastCursorPos,\n\t\t\t\t\tfromMouseWheel,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tannounceResults,\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * List portion of a dropdown menu. Displays the list of items associated with the dropdown trigger button.\n * This component provides the following functionality:\n * - Set whether a user can select a single or multiple items from the dropdown list.\n * - Set whether to display a checkmark next to the selected item (single item selection only).\n * - Set whether the `menu` or `listbox` parent role is not set on the element containing the items.\n * - Control how to filter items in the list when a user types in the integrated search input.\n * - Set the size of the dropdown list.\n * - Set ARIA properties on specified HTML elements.\n * - Associate and display an image/icon with an item in a dropdown list.\n *\n *\n * @seismicElement now-dropdown-list\n * @summary List portion of a dropdown menu.\n */\ncreateEnhancedElement('now-dropdown-list', {\n\tproperties: {\n\t\t/**\n\t\t * An array of `DropdownListItem` or `DropdownSection` items.\n\t\t * @type {Array.<DropdownListItem|DropdownSection>}\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * An array of IDs representing selected dropdown list items. If\n\t\t * multi-select mode is not enabled, each time a user selects a list\n\t\t * item, the previously selected ID is replaced with the new ID. If\n\t\t * multi-select mode is enabled, IDs are added to or removed from the list.\n\t\t * @type {Array.<(string|number)>}\n\t\t */\n\t\tselectedItems: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'array', items: {type: ['string', 'number']}},\n\t\t},\n\t\t/**\n\t\t * Determines what happens when the user clicks on a dropdown list item.\n\t\t * Choose from the following:\n\t\t * - `single`: (Default) The list is closed, the trigger label is updated with the label of the selected list item,\n\t\t *   and the item is marked as selected.\n\t\t * - `multi`: The list stays open, the trigger label is updated with the selected list item count, and the\n\t\t *   item's selected state is toggled on/off.\n\t\t * - `none`: The list is closed, the trigger label is not updated, and the\n\t\t *   item is not marked as selected.\n\t\t * @type {(\"single\"|\"multi\"|\"none\")}\n\t\t */\n\t\tselect: {\n\t\t\tdefault: 'single',\n\t\t\tschema: {type: 'string', enum: ['single', 'multi', 'none']},\n\t\t},\n\t\t/**\n\t\t * When true, do not render the checkmark next to a selected item. Only\n\t\t * applies when the value of `select` is \"single\".\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\thideCheckmark: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\t\tshowPresencePattern: {default: false, schema: {type: 'boolean'}},\n\t\t// TODO: this property is :blobsad:\n\t\t/**\n\t\t * When true, the `menu` or `listbox` parent role is not set on the element\n\t\t * containing the items. This should only be used when a parent component\n\t\t * manages these roles.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tdisableRole: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Controls how to filter menu items as the user types into the integrated search input.\n\t\t * - `none`: (Default) Dropdown list does not display an internal search field.\n\t\t * - `managed`: Internal input field renders without automatic search filtering.\n\t\t *      Use these parameters to manually filter or search for items as a user types\n\t\t *      outside of the list.\n\t\t * - `initial`: Internal input field renders and items whose label or sublabel begins with the input value display. Case-insensitive.\n\t\t * - `contains`: Internal input field renders and items whose label or sublabel contains the input value display. Case-insensitive.\n\t\t * @type {\"none\"|\"managed\"|\"initial\"|\"contains\"}\n\t\t */\n\t\tsearch: {\n\t\t\tdefault: 'none',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['none', 'managed', 'initial', 'contains'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Current value of the internal search field. For use with highlighting\n\t\t * and filtering within a dropdown list.\n\t\t * @type {string}\n\t\t */\n\t\tsearchTerm: {default: '', manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * ID of the currently active item in the dropdown list.\n\t\t * @type {(string|number|null)}\n\t\t */\n\t\tactiveItem: {\n\t\t\tmanageable: true,\n\t\t\tschema: {type: ['string', 'number', 'null']},\n\t\t},\n\t\t/**\n\t\t * Size of the dropdown list; small (sm) or medium (md).\n\t\t * @type {('sm'|'md')}\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md']}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-dropdown. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties will be set on the specified element.\n\t\t * The 'panel' key corresponds to the inner html `<div>` that acts as the\n\t\t * 'listbox'. See https://www.w3.org/TR/wai-aria-1.2/#listbox for properties\n\t\t * and accepted values.\n\t\t * @type {{ panel: {'aria-*': string, role: string} }}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tpanel: {...configAriaSchema, required: ['aria-label']},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{...configAriaSchema, required: ['aria-label']},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user changes the selection of items in the dropdown list.\n\t\t * The payload key `value` contains an array containing either a single ID (`select=\"single\"`)\n\t\t * or multiple IDs (`select=\"multi\"`) of the selected item(s).\n\t\t * The payload key `items` contains an array of objects of the item or items selected from the dropdown list.\n\t\t * Set the `manage-selected-items` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: Array.<(string|number)>, items: Array.<Object>}}\n\t\t */\n\t\t'NOW_DROPDOWN_LIST#SELECTED_ITEMS_SET': {},\n\t\t/**\n\t\t * Dispatched when the user selects a dropdown item. The payload contains\n\t\t * a reference to the clicked item. Handle this action for dropdown menus\n\t\t * (where `select=\"none\"`).\n\t\t * @type {{item: DropdownItem}}\n\t\t */\n\t\t'NOW_DROPDOWN_LIST#ITEM_CLICKED': {},\n\t\t/**\n\t\t * Dispatched when the user hovers over an item in the dropdown list or\n\t\t * presses the `ArrowUp`, `ArrowDown`, `Home` or `End` keys while focused\n\t\t * in the internal search field. The payload contains the ID of the item.\n\t\t * Set the `manage-active-item` property to override the default behavior\n\t\t * and handle this action manually.\n\t\t * @type {{value: string}}\n\t\t */\n\t\t'NOW_DROPDOWN_LIST#ACTIVE_ITEM_SET': {},\n\t\t/**\n\t\t * Dispatched when the user inputs text in the internal search field.\n\t\t * Set the `manage-search-term` property to override the default behavior\n\t\t * and handle this action manually.\n\t\t * @type {{value: string}}\n\t\t */\n\t\t'NOW_DROPDOWN_LIST#SEARCH_TERM_SET': {},\n\t},\n\tinitialState: {\n\t\tsearchHasFocus: false,\n\t\tprevEnteredKey: '',\n\t\tlastCursorPos: {x: 0, y: 0},\n\t\tfromMouseWheel: false,\n\t\tannounceResults: false,\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect({action, host, dispatch, properties, state, updateState}) {\n\t\t\t\tconst {key, ctrlKey, altKey, metaKey, shiftKey} = action.payload.event;\n\t\t\t\tif (ctrlKey || altKey || metaKey) return;\n\t\t\t\tif (shiftKey && ARROW_KEYS.indexOf(key) > -1) return;\n\t\t\t\tconst {searchHasFocus} = state;\n\t\t\t\tlet prevEnteredKey = state?.prevEnteredKey;\n\t\t\t\tconst {search} = properties;\n\t\t\t\tif (key === 'Enter' || (key === ' ' && !searchHasFocus)) {\n\t\t\t\t\taction.preventDefault();\n\t\t\t\t\taction.stopPropagation();\n\t\t\t\t\tconst {activeItem} = properties;\n\t\t\t\t\tconst itemEl = host.nowRootNode.getElementById(activeItem);\n\t\t\t\t\tif (itemEl && !itemEl.hasAttribute('aria-disabled')) {\n\t\t\t\t\t\titemEl.click();\n\t\t\t\t\t}\n\t\t\t\t} else if (doesKeyChangeActive(key, search)) {\n\t\t\t\t\taction.preventDefault();\n\t\t\t\t\taction.stopPropagation();\n\t\t\t\t\tif (ARROW_KEYS.indexOf(key) > -1) {\n\t\t\t\t\t\thandleNextItem(host, properties, key, dispatch);\n\t\t\t\t\t} else if ([...key].length === 1) {\n\t\t\t\t\t\tprevEnteredKey += key;\n\t\t\t\t\t\tdispatch('NOW_DROPDOWN_LIST#MATCH_ITEM_DEBOUNCE');\n\t\t\t\t\t\tupdateState({prevEnteredKey, shouldRender: false});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t['NOW_DROPDOWN_LIST#MATCH_ITEM_DEBOUNCE']: {\n\t\t\tmodifier: {name: 'debounce', delay: 800},\n\t\t\teffect: ({state, host, dispatch, properties, updateState}) => {\n\t\t\t\tconst {prevEnteredKey} = state;\n\t\t\t\thandleNextItem(host, properties, prevEnteredKey, dispatch);\n\t\t\t\tupdateState({prevEnteredKey: '', shouldRender: false});\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#SET_ITEM': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action, updateState}) => {\n\t\t\t\tconst {id} = action.payload;\n\t\t\t\tif (id === null) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tannounceResults: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#SCROLL_ITEM': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({host, action}) => {\n\t\t\t\tconst {\n\t\t\t\t\tpayload: {item},\n\t\t\t\t\tmeta: {hoistHost},\n\t\t\t\t} = action;\n\n\t\t\t\tconst hostEl = hoistHost || host;\n\t\t\t\tconst itemToFocus = hostEl?.shadowRoot?.getElementById(item);\n\n\t\t\t\tif (itemToFocus) {\n\t\t\t\t\titemToFocus.scrollIntoView({\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\tblock: 'nearest',\n\t\t\t\t\t\tinline: 'nearest',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[COMPONENT_RENDERED]: ({action, properties}) => {\n\t\t\tconst {\n\t\t\t\tmeta: {hoistHost},\n\t\t\t} = action;\n\t\t\tconst {items} = properties;\n\t\t\tconst dropdownScrollHeight = parseInt(hoistHost?.scrollHeight);\n\t\t\tconst fitContentHeight =\n\t\t\t\thoistHost?.parentElement?.shadowRoot.querySelector(\n\t\t\t\t\t'.fit-content-area',\n\t\t\t\t)?.clientHeight;\n\t\t\tif (\n\t\t\t\tfitContentHeight > 0 &&\n\t\t\t\tdropdownScrollHeight > fitContentHeight &&\n\t\t\t\titems.length > 1\n\t\t\t) {\n\t\t\t\thoistHost.style.height = fitContentHeight + 'px';\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\thost,\n\t\t\taction,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t}) => {\n\t\t\tconst {\n\t\t\t\tpayload: {name, value},\n\t\t\t} = action;\n\t\t\tconst {fromMouseWheel} = state;\n\t\t\tif (name === 'activeItem' && value !== null) {\n\t\t\t\tdispatch('PRIVATE#SCROLL_ITEM', {item: value});\n\n\t\t\t\tif (fromMouseWheel) {\n\t\t\t\t\tupdateState({fromMouseWheel: false});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (name === 'items' && state.opened) {\n\t\t\t\thost.shadowRoot.querySelector('now-popover').refit();\n\t\t\t}\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: screenReaderBehavior,\n\t\t\toptions: {\n\t\t\t\tscreenReaderView: view,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t},\n\t],\n\tstyles,\n\tview,\n});\n","/**\n * Caches the result of a `getDimensions()` call so that it won't be\n * recalculated again later. Useful to ensure that getBoundingClientRect is\n * not called multiple times in a row when multiple fit positions are\n * evaluated in a row.\n * @param {Dimensions} dim\n * @return {{getDimensions: Function}}\n */\nexport function cacheDimensions(dim) {\n\treturn {\n\t\tgetDimensions: () => dim,\n\t};\n}\n\n/**\n * Gets the dimensions of a HTMLElement or gets the manually specified and/or\n * cached dimensions of a DimensionsReference.\n * @param {(HTMLElement|DimensionsReference)} node\n * @return {Dimensions}\n */\nexport function getDimensions(node) {\n\tif (\n\t\t!(node instanceof HTMLElement) &&\n\t\ttypeof node.getDimensions === 'function'\n\t) {\n\t\treturn node.getDimensions();\n\t}\n\tif (node === window || node === document.documentElement) {\n\t\treturn {\n\t\t\ttop: 0,\n\t\t\tright: window.innerWidth,\n\t\t\tbottom: window.innerHeight,\n\t\t\tleft: 0,\n\t\t\twidth: window.innerWidth,\n\t\t\theight: window.innerHeight,\n\t\t\tmargin: {top: 0, right: 0, bottom: 0, left: 0},\n\t\t};\n\t}\n\tconst {top, right, bottom, left, width, height} =\n\t\tnode.getBoundingClientRect();\n\tconst style = window.getComputedStyle(node);\n\treturn {\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\tleft,\n\t\twidth,\n\t\theight,\n\t\tmargin: {\n\t\t\ttop: parseInt(style.marginTop, 10) || 0,\n\t\t\tright: parseInt(style.marginRight, 10) || 0,\n\t\t\tbottom: parseInt(style.marginBottom, 10) || 0,\n\t\t\tleft: parseInt(style.marginLeft, 10) || 0,\n\t\t},\n\t};\n}\n\nconst CONTENT_DIMENSION_DEFAULTS = {\n\twidth: 'auto',\n\tminWidth: 0,\n\tmaxWidth: Infinity,\n\theight: 'auto',\n\tminHeight: 0,\n\tmaxHeight: Infinity,\n};\n\nconst toSizeValue = (contentDimensions, targetDimensions, size, value) => {\n\tif (value === 'auto') {\n\t\treturn contentDimensions[size];\n\t}\n\tif (value === 'target') {\n\t\treturn targetDimensions[size];\n\t}\n\tif (typeof value === 'number') {\n\t\treturn value;\n\t}\n\tthrow new Error('Sizing value is not valid');\n};\n\n/**\n * Constrains content dimensions based on developer-specified configuration.\n * @param {Dimensions} contentDimensions\n * @param {Dimensions} targetDimensions\n * @param {Object} constraints\n * @return {Dimensions}\n */\nexport function getContentDimensions(\n\tcontentDimensions,\n\ttargetDimensions,\n\tconstraints,\n\tcanScrollVertical,\n\tcanScrollHorizontal,\n) {\n\tconst wval = (v) =>\n\t\ttoSizeValue(contentDimensions, targetDimensions, 'width', v);\n\tconst hval = (v) =>\n\t\ttoSizeValue(contentDimensions, targetDimensions, 'height', v);\n\tconst {width, minWidth, maxWidth, height, minHeight, maxHeight} = {\n\t\t...CONTENT_DIMENSION_DEFAULTS,\n\t\t...constraints,\n\t};\n\tconst vScroll =\n\t\tcanScrollVertical &&\n\t\tMath.max(hval(height), hval(minHeight)) > hval(maxHeight)\n\t\t\t? 17\n\t\t\t: 0;\n\tconst hScroll =\n\t\tcanScrollHorizontal &&\n\t\tMath.max(wval(width), wval(minWidth)) > wval(maxWidth)\n\t\t\t? 17\n\t\t\t: 0;\n\treturn {\n\t\t...contentDimensions,\n\t\twidth: Math.min(\n\t\t\tMath.max(wval(width) + vScroll, wval(minWidth)),\n\t\t\twval(maxWidth),\n\t\t),\n\t\theight: Math.min(\n\t\t\tMath.max(hval(height) + hScroll, hval(minHeight)),\n\t\t\thval(maxHeight),\n\t\t),\n\t};\n}\n","const normalizeOrigin = (origin, dir = 'ltr') =>\n\torigin\n\t\t.replace(/-left$/, dir === 'ltr' ? '-start' : '-end')\n\t\t.replace(/-right$/, dir === 'ltr' ? '-end' : '-start')\n\t\t.split('-');\n\nconst toMatchingOrigin = ([vertical, horizontal]) => {\n\t// If vertical is center, flip the horizontal position\n\tif (vertical === 'center') {\n\t\treturn horizontal === 'start' ? ['center', 'end'] : ['center', 'start'];\n\t}\n\t// Otherwise flip the vertical position\n\treturn vertical === 'top' ? ['bottom', horizontal] : ['top', horizontal];\n};\n\nconst RE_POSITION_LONG =\n\t/^(top|bottom|center)-(left|right|start|end|center) (top|bottom|center)-(left|right|start|end|center)$/;\nconst RE_POSITION_SHORT = /^(top|bottom|center)-(left|right|start|end|center)$/;\n\n/**\n * Normalizes a position based on the following rules:\n * - if a position shorthand is provided, expands it to the full position (e.g. \"bottom-start\" > \"bottom-start top-start\")\n * - normalizes direction-specific inline properties to logical properties (e.g. \"bottom-right top-left\" > \"bottom-end top-start\")\n * - splits the normalized position into two arrays of origins (e.g. \"bottom-end top-start\" > [[\"bottom\", \"end\"], [\"top\", \"start\"]])\n * @param {string} position - Shorthand position (\"bottom-start\") or full position (\"bottom-right top-left\")\n * @return {Array<Origin[]>}\n */\nexport default function normalizePosition(position) {\n\tif (RE_POSITION_LONG.test(position)) {\n\t\tconst [targetOrigin, contentOrigin] = position.split(' ');\n\t\treturn [normalizeOrigin(targetOrigin), normalizeOrigin(contentOrigin)];\n\t}\n\tif (RE_POSITION_SHORT.test(position)) {\n\t\tconst targetOrigin = normalizeOrigin(position);\n\t\tconst contentOrigin = toMatchingOrigin(targetOrigin);\n\t\treturn [targetOrigin, contentOrigin];\n\t}\n\tthrow new Error(`${position} is not a valid position`);\n}\n","/**\n * Calculates either the top or left offset based on the target and content\n * origins and dimensions.\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} targetOrigin - Logical target origin\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentOrigin - Logical content origin\n * @param {Dimensions} targetDimensions - Target dimensions object\n * @param {Dimensions} overlayDimensions - Content dimensions object\n * @return {number}\n */\nexport function calculateSingleOffset(\n\taxis,\n\ttargetOrigin,\n\tcontentOrigin,\n\ttargetDimensions,\n\toverlayDimensions,\n) {\n\tlet offset = 0;\n\t/* First use the target origin property */\n\tif (targetOrigin === 'top' || targetOrigin === 'start') {\n\t\toffset += axis === 'block' ? targetDimensions.top : targetDimensions.left;\n\t}\n\tif (targetOrigin === 'center') {\n\t\toffset +=\n\t\t\taxis === 'block'\n\t\t\t\t? targetDimensions.top + targetDimensions.height / 2\n\t\t\t\t: targetDimensions.left + targetDimensions.width / 2;\n\t}\n\tif (targetOrigin === 'bottom' || targetOrigin === 'end') {\n\t\toffset +=\n\t\t\taxis === 'block'\n\t\t\t\t? targetDimensions.top + targetDimensions.height\n\t\t\t\t: targetDimensions.left + targetDimensions.width;\n\t}\n\t/* Then use the content origin property */\n\tif (contentOrigin === 'top' || contentOrigin === 'start') {\n\t\toffset -= 0;\n\t}\n\tif (contentOrigin === 'center') {\n\t\toffset -=\n\t\t\taxis === 'block'\n\t\t\t\t? overlayDimensions.height / 2\n\t\t\t\t: overlayDimensions.width / 2;\n\t}\n\tif (contentOrigin === 'bottom' || contentOrigin === 'end') {\n\t\toffset -=\n\t\t\taxis === 'block' ? overlayDimensions.height : overlayDimensions.width;\n\t}\n\treturn offset;\n}\n\n/**\n * Calculates the ratio of the content that is overset from its container.\n * Returns the ratio as a whole number, e.g. `75` if 75% of the content does not\n * fit inside of the container.\n * @param {number} top\n * @param {number} right\n * @param {number} bottom\n * @param {number} left\n * @param {(\"top\"|\"bottom\"|\"center\")} block - direction to constrain block from\n * @param {(\"start\"|\"end\"|\"center\")} inline - direction to constrain inline from\n * @param {Dimensions} contentDimensions\n * @param {Dimensions} containerDimensions\n * @return {{dimensions: Dimensions, overset: {vertical: number, horizontal: number, ratio: number}}}\n */\nexport function constrainOffset(\n\ttop,\n\tright,\n\tbottom,\n\tleft,\n\tblock,\n\tinline,\n\tcontentDimensions,\n\tcontainerDimensions,\n) {\n\tconst toff =\n\t\ttop < containerDimensions.top\n\t\t\t? Math.abs(Math.abs(containerDimensions.top) - top)\n\t\t\t: 0;\n\tconst boff =\n\t\tbottom > containerDimensions.bottom\n\t\t\t? Math.abs(Math.abs(bottom) - Math.abs(containerDimensions.bottom))\n\t\t\t: 0;\n\tconst loff =\n\t\tleft < containerDimensions.left\n\t\t\t? Math.abs(Math.abs(containerDimensions.left) - left)\n\t\t\t: 0;\n\tconst roff =\n\t\tright > containerDimensions.right\n\t\t\t? Math.abs(Math.abs(right) - Math.abs(containerDimensions.right))\n\t\t\t: 0;\n\tif (toff === 0 && boff === 0 && loff === 0 && roff === 0) {\n\t\treturn {\n\t\t\tdimensions: {...contentDimensions, top, left, bottom, right},\n\t\t\toverset: {vertical: 0, horizontal: 0, ratio: 0, actual: 0},\n\t\t};\n\t}\n\tconst dimensions = {...contentDimensions, top, left, bottom, right};\n\tif (block === 'top' && boff > 0) {\n\t\tdimensions.top = top;\n\t\tdimensions.bottom = containerDimensions.bottom;\n\t\tdimensions.height = contentDimensions.height - boff;\n\t}\n\tif (block === 'bottom' && toff > 0) {\n\t\tdimensions.top = containerDimensions.top;\n\t\tdimensions.bottom = bottom;\n\t\tdimensions.height = contentDimensions.height - toff;\n\t}\n\n\tif (block === 'center' && (toff > 0 || boff > 0)) {\n\t\tconst largest = Math.max(toff, boff);\n\t\tdimensions.top = top + largest;\n\t\tdimensions.bottom = bottom - largest;\n\t\tdimensions.height = contentDimensions.height - largest * 2;\n\t}\n\n\tif (inline === 'start' && roff > 0) {\n\t\tdimensions.left = left;\n\t\tdimensions.right = containerDimensions.right;\n\t\tdimensions.width = contentDimensions.width - roff;\n\t}\n\tif (inline === 'end' && loff > 0) {\n\t\tdimensions.left = containerDimensions.left;\n\t\tdimensions.right = right;\n\t\tdimensions.width = contentDimensions.width - loff;\n\t}\n\tif (inline === 'center' && (loff > 0 || roff > 0)) {\n\t\tconst largest = Math.max(loff, roff);\n\t\tdimensions.left = left + largest;\n\t\tdimensions.right = right - largest;\n\t\tdimensions.width = contentDimensions.width - largest * 2;\n\t}\n\tconst actual =\n\t\t100 -\n\t\t((dimensions.height * dimensions.width) /\n\t\t\t(contentDimensions.height * contentDimensions.width)) *\n\t\t\t100;\n\tconst ratio =\n\t\t100 -\n\t\tMath.round(\n\t\t\t((dimensions.height * dimensions.width) /\n\t\t\t\t(contentDimensions.height * contentDimensions.width)) *\n\t\t\t\t100,\n\t\t);\n\tconst overset = {\n\t\tvertical: contentDimensions.height - dimensions.height,\n\t\thorizontal: contentDimensions.width - dimensions.width,\n\t\tratio,\n\t\tactual,\n\t};\n\treturn {dimensions, overset};\n}\n\nconst addOffsetPaddingToDimensions = (dim, offset) => {\n\tconst [, , t = 0, r = 0, b = 0, l = 0] = offset;\n\treturn {\n\t\t...dim,\n\t\ttop: dim.top - t,\n\t\tright: dim.right + r,\n\t\tbottom: dim.bottom + b,\n\t\tleft: dim.left - l,\n\t\theight: dim.height + t + b,\n\t\twidth: dim.width + l + r,\n\t};\n};\n\n/**\n * Calculates the dimensions for the content after it is positioned against\n * to the target and constrained to fit within the container.\n * @param {number[]} offset - Offset content from the target in format `[vertical, horizontal]`, e.g. `[10, 5]`\n * @param {Origin[]} targetPosition\n * @param {Origin[]} contentPosition\n * @param {Dimensions} targetDimensions\n * @param {Dimensions} contentDimensions\n * @param {Dimensions} containerDimensions\n * @return {{fromWindow: Dimensions, fromContainer: Dimensions, dimensions: Dimensions, overset: {vertical: number, horizontal: number, ratio: number}}}\n */\nexport default function calculateFit(\n\toffset,\n\ttargetPosition,\n\tcontentPosition,\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontainerDimensions,\n) {\n\tconst [targetOriginBlock, targetOriginInline] = targetPosition;\n\tconst [contentOriginBlock, contentOriginInline] = contentPosition;\n\tconst paddedTargetDimensions = addOffsetPaddingToDimensions(\n\t\ttargetDimensions,\n\t\toffset,\n\t);\n\n\tconst top =\n\t\tcalculateSingleOffset(\n\t\t\t'block',\n\t\t\ttargetOriginBlock,\n\t\t\tcontentOriginBlock,\n\t\t\tpaddedTargetDimensions,\n\t\t\tcontentDimensions,\n\t\t) + offset[0];\n\tconst left =\n\t\tcalculateSingleOffset(\n\t\t\t'inline',\n\t\t\ttargetOriginInline,\n\t\t\tcontentOriginInline,\n\t\t\tpaddedTargetDimensions,\n\t\t\tcontentDimensions,\n\t\t) + offset[1];\n\tconst bottom = top + contentDimensions.height;\n\tconst right = left + contentDimensions.width;\n\tconst {dimensions, overset} = constrainOffset(\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\tleft,\n\t\tcontentOriginBlock,\n\t\tcontentOriginInline,\n\t\tcontentDimensions,\n\t\tcontainerDimensions,\n\t);\n\treturn {\n\t\tfromWindow: {\n\t\t\t...dimensions,\n\t\t},\n\t\tfromContainer: {\n\t\t\t...dimensions,\n\t\t\ttop: dimensions.top - containerDimensions.top,\n\t\t\tright: dimensions.right - containerDimensions.left,\n\t\t\tleft: dimensions.left - containerDimensions.left,\n\t\t\tbottom: dimensions.bottom - containerDimensions.top,\n\t\t},\n\t\tdimensions,\n\t\toverset,\n\t};\n}\n","import {\n\tgetDimensions,\n\tgetContentDimensions,\n\tcacheDimensions,\n} from './dimensions';\nimport normalizePosition from './normalize-position';\nimport calculateFit from './calculate-fit';\n\n/**\n * Calculates the fit styles for the content with only one possible position.\n * @param {Object} options\n * @param {HTMLElement} options.target - Reference to element the content is positioned beside\n * @param {HTMLElement} options.content - Reference to positioned element\n * @param {HTMLElement} [options.container=window] - Reference to element content should fit within\n * @param {string} [options.position=\"bottom-left\"] - Desired position of content relative to target, e.g. \"bottom-left\" or \"top-left bottom-right\"\n * @param {number[]} [options.offset=[0,0]] - Offset content from the target in format `[vertical, horizontal]`, e.g. `[10, 5]`\n * @param {{height: number, width: number, minHeight: number, maxHeight: number, minWidth: number, maxWidth: number}} constrain - Constrains or sets the size content, each value can be a string\n * @param {boolean} [options.canScrollVertical=false] - Enable if the content displays a scrollbar on vertical overflow - the scrollbar will be added to calculations to avoid horizontal truncation\n * @param {boolean} [options.canScrollHorizontal=false] - Enable if the content displays a scrollbar on horizontal overflow - the scrollbar will be added to calculations to avoid vertical truncation\n * @return {FitInfo}\n */\nexport function getFitInfo({\n\ttarget,\n\tcontent,\n\tcontainer = window,\n\tposition = 'bottom-left',\n\toffset = [0, 0, 0, 0, 0, 0],\n\tconstrain = {},\n\tcanScrollVertical = false,\n\tcanScrollHorizontal = false,\n}) {\n\tconst targetDimensions = getDimensions(target);\n\tconst contentDimensions = getContentDimensions(\n\t\tgetDimensions(content),\n\t\ttargetDimensions,\n\t\tconstrain,\n\t\tcanScrollVertical,\n\t\tcanScrollHorizontal,\n\t);\n\tconst containerDimensions = getDimensions(container);\n\tconst [targetPosition, contentPosition] = normalizePosition(position);\n\tconst fit = calculateFit(\n\t\toffset,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontainerDimensions,\n\t);\n\tconst style = {\n\t\ttop: fit.dimensions.top + 'px',\n\t\tleft: fit.dimensions.left + 'px',\n\t\twidth: fit.dimensions.width + 'px',\n\t\theight: fit.dimensions.height + 'px',\n\t};\n\tconst detail = {\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t\tposition: `${targetPosition.join('-')} ${contentPosition.join('-')}`,\n\t};\n\treturn {fit, style, detail};\n}\n\n/**\n * Calculates the best fit styles for the content based on multiple possible\n * positions. Returns the fit info for the first position that completely fits.\n * If no position completely fits, returns the position that fits the most.\n * @param {Object} options\n * @param {HTMLElement} options.target - Reference to element the content is positioned beside\n * @param {HTMLElement} options.content - Reference to positioned element\n * @param {HTMLElement} [options.container=window] - Reference to element content should fit within\n * @param {string[]} [options.position=[\"bottom-left\"]] - Desired positions of content relative to target in order of preferences, e.g. [\"bottom-left top-left\", \"top-left bottom-left\"]\n * @param {number[]} [options.offset=[0,0]] - Offset content from the target in format `[vertical, horizontal]`, e.g. `[10, 5]`\n * @param {{height: number, width: number, minHeight: number, maxHeight: number, minWidth: number, maxWidth: number}} constrain - Constrains or sets the size content, each value can be a string\n * @param {boolean} [options.canScrollVertical=false] - Enable if the content displays a scrollbar on vertical overflow - the scrollbar will be added to calculations to avoid horizontal truncation\n * @param {boolean} [options.canScrollHorizontal=false] - Enable if the content displays a scrollbar on horizontal overflow - the scrollbar will be added to calculations to avoid vertical truncation\n * @return {FitInfo}\n */\nexport function getBestFitInfo({\n\ttarget,\n\tcontent,\n\tcontainer = window,\n\tposition = ['bottom-left'],\n\toffset = [0, 0, 0, 0, 0, 0],\n\tconstrain = {},\n\tcanScrollVertical,\n\tcanScrollHorizontal,\n}) {\n\tconst targetDimensions = cacheDimensions(getDimensions(target));\n\tconst contentDimensions = cacheDimensions(getDimensions(content));\n\tconst containerDimensions = cacheDimensions(getDimensions(container));\n\tlet candidates = [];\n\tfor (let pos of position) {\n\t\tconst info = getFitInfo({\n\t\t\ttarget: targetDimensions,\n\t\t\tcontent: contentDimensions,\n\t\t\tcontainer: containerDimensions,\n\t\t\tposition: pos,\n\t\t\toffset,\n\t\t\tconstrain,\n\t\t\tcanScrollVertical,\n\t\t\tcanScrollHorizontal,\n\t\t});\n\t\tif (info.fit.overset.actual === 0) {\n\t\t\t/* Fits completely, bail out and return */\n\t\t\treturn info;\n\t\t}\n\t\tcandidates.push(info);\n\t}\n\t/* Sort to find lowest overset ratio, aka the one that fits the most content */\n\tcandidates.sort((a, b) => a.fit.overset.actual - b.fit.overset.actual);\n\treturn candidates[0];\n}\n","import {actionTypes} from '@servicenow/ui-core';\nimport transform from 'lodash/transform';\nimport findKey from 'lodash/findKey';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\nimport mapValues from 'lodash/mapValues';\nimport pickBy from 'lodash/pickBy';\nimport {getBestFitInfo} from '../fit-info/fit-info';\n\nconst BEHAVIOR_NAME = 'fit';\nconst {\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_BOOTSTRAPPED,\n} = actionTypes;\n\n/**\n * Create public Seismic property config for each descriptors in the given map\n *\n * @param {Descriptors} descriptors\n */\nfunction createProperties(descriptors) {\n\treturn transform(descriptors, (result, descriptor, internalName) => {\n\t\tconst publicName = descriptor.alias || internalName;\n\t\tresult[publicName] = {\n\t\t\treflect: isNil(descriptor.reflect) ? true : descriptor.reflect,\n\t\t};\n\t});\n}\n\nconst getFitStyle = ({\n\topened,\n\ttarget,\n\tcontent,\n\tcontainer,\n\tposition,\n\toffset,\n\tconstrain,\n\tcanScrollVertical,\n\tcanScrollHorizontal,\n}) => {\n\tif (!opened || !target || !content) {\n\t\treturn {};\n\t}\n\n\tconst {style} = getBestFitInfo({\n\t\ttarget,\n\t\tcontent,\n\t\tcontainer,\n\t\tposition,\n\t\toffset,\n\t\tconstrain,\n\t\tcanScrollVertical,\n\t\tcanScrollHorizontal,\n\t});\n\treturn {...style, visibility: 'visible'};\n};\n\n/**\n * Updates the fit behavior opened state for this component and triggers a\n * re-render with new fit styles.\n * @param {Function} dispatch\n * @param {boolean} opened\n */\nexport function setFitOpened(dispatch, opened) {\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'FIT_BEHAVIOR#STATE_SET',\n\t\t\tpayload: {opened},\n\t\t};\n\t});\n}\n\n/**\n * Updates the fit behavior target reference for this component and triggers a\n * re-render with new fit styles.\n * @param {Function} dispatch\n * @param {HTMLElement} target\n */\nexport function setFitTarget(dispatch, target) {\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'FIT_BEHAVIOR#STATE_SET',\n\t\t\tpayload: {target},\n\t\t};\n\t});\n}\n\n/**\n * Updates the fit behavior content reference for this component and triggers a\n * re-render with new fit styles.\n * @param {Function} dispatch\n * @param {HTMLElement} content\n */\nexport function setFitContent(dispatch, content) {\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'FIT_BEHAVIOR#STATE_SET',\n\t\t\tpayload: {content},\n\t\t};\n\t});\n}\n\n/**\n * Updates the fit behavior container reference for this component and triggers\n * a re-render with new fit styles.\n * @param {Function} dispatch\n * @param {HTMLElement} container\n */\nexport function setFitContainer(dispatch, container) {\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'FIT_BEHAVIOR#STATE_SET',\n\t\t\tpayload: {container},\n\t\t};\n\t});\n}\n\n/**\n * Support the typical Seismic behavior pattern (shared instance) without\n * needing to use the factory function. This instance does not allow exposing\n * any properties, but can use Seismic's `options` configuration just like any\n * other behavior.\n */\nexport const fitBehavior = createFitBehavior();\n\n/**\n * Factory function to create a fit behavior that can expose custom properties\n * for the consuming component.\n *\n * @typedef {Object} Descriptor\n * @property {boolean} [public=false] - Whether this option can be exposed\n * as a component property\n * @property {string} [alias] - What property name to use when exposing the\n * option as a property. If not provided, the property name will match the name\n * of the behavior option. Only applies when `public` is `true`.\n * @property {boolean} [reflect=true] - Whether or not to reflect this option\n * in the component's attributes (same as Seismic's `reflect` flag). Only applies\n * when `public` is `true`\n * @property {any} [default] - The default value to use for the option when\n * the property value is not set (or `public` is `false`)\n *\n * @typedef {Object.<string, Descriptor>} Descriptors - A map of behavior option to\n * descriptor that configures that option.\n *\n * @param {Descriptors} descriptors\n */\nexport function createFitBehavior(descriptors = {}) {\n\tconst publicDescriptors = pickBy(descriptors, {public: true});\n\tconst defaults = mapValues(descriptors, 'default');\n\n\treturn {\n\t\tname: BEHAVIOR_NAME,\n\t\tproperties: createProperties(publicDescriptors),\n\n\t\t// options should only be provided when using Seismic's\n\t\t// normal option passing (no factory function)\n\t\tinitialState(options) {\n\t\t\tconst {\n\t\t\t\topened = false,\n\t\t\t\ttarget = null,\n\t\t\t\tcontent = null,\n\t\t\t\tcontainer,\n\t\t\t\tposition,\n\t\t\t\toffset,\n\t\t\t\tconstrain,\n\t\t\t\tcanScrollVertical = false,\n\t\t\t\tcanScrollHorizontal = false,\n\t\t\t} = {\n\t\t\t\t...defaults,\n\t\t\t\t...options,\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\tstyle: {},\n\t\t\t\topened,\n\t\t\t\ttarget,\n\t\t\t\tcontent,\n\t\t\t\tcontainer,\n\t\t\t\tposition,\n\t\t\t\toffset,\n\t\t\t\tconstrain,\n\t\t\t\tcanScrollVertical,\n\t\t\t\tcanScrollHorizontal,\n\t\t\t};\n\t\t},\n\n\t\tactionHandlers: {\n\t\t\t'FIT_BEHAVIOR#STATE_SET': {\n\t\t\t\tstopPropagation: true,\n\t\t\t\teffect: ({action, updateState}) => {\n\t\t\t\t\tupdateState(({state}) => {\n\t\t\t\t\t\tconst nextState = {\n\t\t\t\t\t\t\t...state.behaviors[BEHAVIOR_NAME],\n\t\t\t\t\t\t\t...action.payload,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\topened,\n\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\tcontainer,\n\t\t\t\t\t\t\tposition,\n\t\t\t\t\t\t\toffset,\n\t\t\t\t\t\t\tconstrain,\n\t\t\t\t\t\t\tcanScrollVertical,\n\t\t\t\t\t\t\tcanScrollHorizontal,\n\t\t\t\t\t\t} = nextState;\n\t\t\t\t\t\tconst style = getFitStyle({\n\t\t\t\t\t\t\topened,\n\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\tcontainer,\n\t\t\t\t\t\t\tposition,\n\t\t\t\t\t\t\toffset,\n\t\t\t\t\t\t\tconstrain,\n\t\t\t\t\t\t\tcanScrollVertical,\n\t\t\t\t\t\t\tcanScrollHorizontal,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tpath: `behaviors.${BEHAVIOR_NAME}`,\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\t\t\tstyle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t[COMPONENT_BOOTSTRAPPED]: () => {\n\t\t\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'[@servicenow/behavior-fit]: The fit behavior is deprecated. It is being replaced with the `now-popover` component.',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t[COMPONENT_PROPERTY_CHANGED]: ({action, dispatch}) => {\n\t\t\t\tconst {name, value} = action.payload;\n\t\t\t\tconst key = findKey(publicDescriptors, (descriptor, internalName) => {\n\t\t\t\t\treturn descriptor.alias === name || internalName === name;\n\t\t\t\t});\n\n\t\t\t\tif (key) {\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'FIT_BEHAVIOR#STATE_SET',\n\t\t\t\t\t\t\tpayload: {[key]: value},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t[COMPONENT_DOM_READY]: ({properties, dispatch}) => {\n\t\t\t\t// update state with the initial values of public properties\n\t\t\t\tconst nextState = transform(\n\t\t\t\t\tpublicDescriptors,\n\t\t\t\t\t(result, descriptor, internalName) => {\n\t\t\t\t\t\tconst publicName = descriptor.alias || internalName;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tproperties[publicName] !== undefined &&\n\t\t\t\t\t\t\tproperties[publicName] !== defaults[internalName]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresult[internalName] = properties[publicName];\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tif (!isEmpty(nextState)) {\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'FIT_BEHAVIOR#STATE_SET',\n\t\t\t\t\t\t\tpayload: nextState,\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t};\n}\n","export const constrainSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\twidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\tminWidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\tmaxWidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\theight: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\tminHeight: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\tmaxHeight: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t},\n\tadditionalProperties: false,\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {\n\textensionSplit,\n\tfilterAriaAttributes,\n\tmakeRedispatchEffect,\n\tgetActiveElement,\n} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-dropdown.scss';\nimport {getFocusedEl, getTriggerEl} from './utils/elements.js';\nimport {\n\tsetActiveItem,\n\tgetDropdownListConstrain,\n\tcalcAriaPattern,\n} from './utils/helpers.js';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport deferBehavior from '@servicenow/behavior-defer';\nimport '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport '@servicenow/now-popover';\nimport './now-dropdown-list';\nimport {t} from 'sn-translate';\nimport {itemsSchema, itemSchema} from './schemas/dropdown-list-schema';\nimport {constrainSchema} from '@servicenow/behavior-fit';\nimport {pick, isEmpty} from 'lodash';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\n\nconst {COMPONENT_PROPERTY_CHANGED} = actionTypes;\n\nconst matchKeywordWithItem = (flattened, key, dispatch, updateState) => {\n\tconst itemIndex = flattened.findIndex((item) =>\n\t\titem.label.toLowerCase().startsWith(key.toLowerCase()),\n\t);\n\tconst shouldDispatch = itemIndex >= 0 && !flattened[itemIndex].disabled;\n\t//Empty the previously entered search key after every timeout\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'prevEnteredKey',\n\t\tvalue: '',\n\t\tshouldRender: false,\n\t});\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_DROPDOWN#SELECTED_ITEMS_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: [flattened[itemIndex]?.id],\n\t\t\t\titems: flattened[itemIndex],\n\t\t\t},\n\t\t\tshouldDispatch,\n\t\t};\n\t});\n};\n\nconst handleTooltipShow = (e, dispatch, tooltipContent) => {\n\tconst labelSpan = e.target.querySelector('.now-dropdown-trigger-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset || tooltipContent) {\n\t\treturn dispatch(TOOLTIP_SHOW, {target: e.target});\n\t}\n};\n\nconst handleTooltipHide = (e, dispatch, tooltipContent) => {\n\tconst labelSpan = e.target.querySelector('.now-dropdown-trigger-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset || tooltipContent) {\n\t\treturn dispatch(TOOLTIP_HIDE, {target: e.target});\n\t}\n};\n\nconst getSelected = (items, selectedItemId) => {\n\tconst hasNestedChildren = items.some((item) =>\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\titem.hasOwnProperty('children'),\n\t);\n\tif (hasNestedChildren) {\n\t\treturn items\n\t\t\t.reduce(\n\t\t\t\t(acc, item) =>\n\t\t\t\t\t!isEmpty(item.children) ? [...acc, ...item.children] : [...acc, item],\n\t\t\t\t[],\n\t\t\t)\n\t\t\t.find((item) => item.id === selectedItemId);\n\t} else {\n\t\treturn items.find((item) => selectedItemId === item.id);\n\t}\n};\n\nconst getTriggerLabel = (placeholder, selected, selectedItems) => {\n\tif (Array.isArray(selectedItems) && selectedItems.length > 1) {\n\t\treturn t('{0} items selected', selectedItems.length);\n\t} else if (selected) {\n\t\treturn selected.label;\n\t}\n\treturn placeholder;\n};\n\nconst getTriggerIcon = (icon, selected) => {\n\tif (selected && selected.icon) {\n\t\tif (typeof selected.icon === 'object') {\n\t\t\treturn selected.icon?.icon?.replace('outline', 'fill');\n\t\t} else {\n\t\t\treturn selected.icon?.replace('outline', 'fill');\n\t\t}\n\t}\n\tif (selected && selected.presence) {\n\t\treturn 'presence-fill';\n\t}\n\treturn icon;\n};\n\nconst renderIcon = (presence, size, hasTriggerLabel, icon) => {\n\tif (presence) {\n\t\treturn (\n\t\t\t<now-icon-presence\n\t\t\t\tpresence={presence}\n\t\t\t\tsize={size}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-p-inline-end--xxs': hasTriggerLabel && size !== 'lg',\n\t\t\t\t\t'now-p-inline-end--xs': hasTriggerLabel && size === 'lg',\n\t\t\t\t}}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t} else if (icon) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\ticon={icon}\n\t\t\t\tsize={size}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-dropdown-icon': true,\n\t\t\t\t\t'now-p-inline-end--xxs': hasTriggerLabel && size !== 'lg',\n\t\t\t\t\t'now-p-inline-end--xs': hasTriggerLabel && size === 'lg',\n\t\t\t\t}}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst renderLabel = (hasTriggerLabel, label, icon) => {\n\tif (hasTriggerLabel) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclass={{\n\t\t\t\t\t'now-dropdown-trigger-label': true,\n\t\t\t\t\t'now-p-inline-start--xxs': icon,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{label}\n\t\t\t</span>\n\t\t);\n\t}\n};\n\nconst renderCaret = (hideCaret, hasTriggerLabel, size) => {\n\tif (!hideCaret) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclass={{\n\t\t\t\t\t'now-dropdown-icon': true,\n\t\t\t\t\t'-caret': true,\n\t\t\t\t\t'now-p-inline-start--xxs': hasTriggerLabel && size !== 'lg',\n\t\t\t\t\t'now-p-inline-start--xs': hasTriggerLabel && size === 'lg',\n\t\t\t\t}}\n\t\t\t\tsize={size}\n\t\t\t\ticon=\"caret-down-fill\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst renderDropdown = (state, {dispatch}, labelId, triggerId) => {\n\tconst {activeItem} = state;\n\n\tconst {\n\t\topened,\n\t\tselect,\n\t\titems,\n\t\tselectedItems,\n\t\tplaceholder,\n\t\ticon,\n\t\tdisabled,\n\t\tvariant,\n\t\tsize,\n\t\tbare,\n\t\thideCaret,\n\t\ttooltipContent,\n\t\tpanelFitProps = {},\n\t\thideLabel,\n\t\tshowPadding,\n\t\thideBlockPadding,\n\t\tconfigAria,\n\t\tsearch,\n\t\tnowId,\n\t\tlabel,\n\t} = state.properties;\n\tconst constrain = {\n\t\tminWidth: 'target',\n\t\tmaxWidth: 400,\n\t\tmaxHeight: 300,\n\t\t...panelFitProps.constrain,\n\t};\n\n\tlet selected;\n\tif (Array.isArray(selectedItems) && selectedItems.length === 1) {\n\t\tselected = getSelected(items, selectedItems[0]);\n\t}\n\tconst triggerLabel = getTriggerLabel(placeholder, selected, selectedItems);\n\tconst hasTriggerLabel = triggerLabel && !hideLabel;\n\n\tconst triggerIcon = getTriggerIcon(icon, selected);\n\tconst presence =\n\t\tselected && selected.presence ? selected.presence : undefined;\n\tconst count = selected && selected.count ? selected.count : undefined;\n\n\tlet dataAriaDescribedBy;\n\tlet ariaLabel = {...filterAriaAttributes(configAria, 'trigger')}?.[\n\t\t'aria-label'\n\t];\n\n\t// If aria-label from configAria is present, it will override\n\t// the button's aria-label; OR if no label is present, but there is\n\t// aria-label from configAria, then set data-ariadescribed by\n\t// to aria-label, which will be compared to tooltip\n\t// in behavior-tooltip's scheduler\n\tif ((ariaLabel && triggerLabel) || (ariaLabel && !triggerLabel)) {\n\t\tdataAriaDescribedBy = ariaLabel;\n\t}\n\n\t// If tooltip and label are present but no aria-label\n\t// is provided by configAria\n\t// button's aria-label will default to label.\n\t// Set data-ariadescribedby to label\n\t// to be compared with tooltip in behavior-tooltip's scheduler\n\tif (tooltipContent && triggerLabel && !ariaLabel) {\n\t\tdataAriaDescribedBy = triggerLabel;\n\t}\n\n\t// Determines what size the dropdown-list should be\n\t// based on the size of the dropdown trigger\n\tconst listSize = {sm: 'sm', md: 'md', lg: 'md'};\n\n\tconst listId = `now-dropdown-list-${nowId}`;\n\n\treturn (\n\t\t<now-popover\n\t\t\tclassName=\"now-dropdown-popover\"\n\t\t\tbare\n\t\t\tconstrain={pick(constrain, ['width', 'minWidth', 'maxWidth'])}\n\t\t\tpositions={panelFitProps.position}\n\t\t\toffset={panelFitProps.offset}\n\t\t\tmanage-opened\n\t\t\topened={opened}\n\t\t\tinteraction-type=\"listbox\"\n\t\t\tdisable-scroll\n\t\t\tappend-to-meta={{componentId: nowId}}\n\t\t>\n\t\t\t<button\n\t\t\t\tslot=\"trigger\"\n\t\t\t\ttype=\"button\"\n\t\t\t\tid={triggerId}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-dropdown': true,\n\t\t\t\t\t...extensionSplit(variant),\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t'is-bare': bare,\n\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t'has-label': !hideLabel && triggerLabel,\n\t\t\t\t\t'has-caret': !hideCaret,\n\t\t\t\t\t'is-opened': opened,\n\t\t\t\t\t'show-padding': showPadding,\n\t\t\t\t\t'hide-block-padding': hideBlockPadding,\n\t\t\t\t}}\n\t\t\t\tdata-tooltip={tooltipContent || triggerLabel}\n\t\t\t\tdata-ariadescribedby={dataAriaDescribedBy}\n\t\t\t\ton-mouseenter={(e) => handleTooltipShow(e, dispatch, tooltipContent)}\n\t\t\t\ton-mouseleave={(e) => handleTooltipHide(e, dispatch, tooltipContent)}\n\t\t\t\ton-focusin={(e) => handleTooltipShow(e, dispatch, tooltipContent)}\n\t\t\t\ton-focusout={(e) => handleTooltipHide(e, dispatch, tooltipContent)}\n\t\t\t\taria-labelledby={label ? labelId : undefined}\n\t\t\t\taria-label={triggerLabel}\n\t\t\t\t{...filterAriaAttributes(configAria, 'trigger')}\n\t\t\t\taria-haspopup={calcAriaPattern(select)}\n\t\t\t\taria-expanded={opened ? 'true' : 'false'}\n\t\t\t\tdisabled={disabled && !tooltipContent ? true : undefined}\n\t\t\t\taria-disabled={disabled && tooltipContent ? 'true' : undefined}\n\t\t\t\ttabindex={disabled && tooltipContent ? '0' : undefined}\n\t\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\t\trole={select === 'none' ? undefined : 'combobox'}\n\t\t\t\taria-controls={select === 'none' ? undefined : `${listId}-listbox`}\n\t\t\t>\n\t\t\t\t<slot name=\"trigger-content\">\n\t\t\t\t\t{renderIcon(\n\t\t\t\t\t\tpresence,\n\n\t\t\t\t\t\tsize,\n\t\t\t\t\t\thasTriggerLabel,\n\t\t\t\t\t\ttriggerIcon,\n\t\t\t\t\t)}\n\t\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t\t<span className=\"now-align\">\n\t\t\t\t\t\t\t{renderLabel(hasTriggerLabel, triggerLabel, icon)}\n\t\t\t\t\t\t\t{count ? `\\u00A0(${count})` : undefined}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t{renderCaret(hideCaret, hasTriggerLabel, size)}\n\t\t\t\t</slot>\n\t\t\t</button>\n\t\t\t<now-dropdown-list\n\t\t\t\tdefer\n\t\t\t\tslot=\"content\"\n\t\t\t\tstyle={getDropdownListConstrain(constrain)}\n\t\t\t\titems={items}\n\t\t\t\tselected-items={selectedItems}\n\t\t\t\tselect={select}\n\t\t\t\tsearch={search}\n\t\t\t\tactive-item={activeItem}\n\t\t\t\tmanage-selected-items\n\t\t\t\tmanage-active-item\n\t\t\t\tsize={listSize[size]}\n\t\t\t\tconfig-aria={\n\t\t\t\t\tplaceholder || tooltipContent\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpanel: {'aria-label': placeholder || tooltipContent},\n\t\t\t\t\t\t\t\t...configAria,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: configAria\n\t\t\t\t}\n\t\t\t\tscreen-reader-id={opened ? listId : undefined}\n\t\t\t/>\n\t\t</now-popover>\n\t);\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {disabled, size, nowId, label, labelPosition, labelSize} =\n\t\tstate.properties;\n\tconst labelId = `label-${nowId}`;\n\tconst triggerId = `trigger-${nowId}`;\n\tconst labelSizeMap = {sm: 'sm', md: 'sm', lg: 'md'};\n\tconst labelSizeToUse = labelSize ? labelSize : labelSizeMap[size];\n\n\tif (label) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-dropdown-container': true,\n\t\t\t\t\t['-' + labelPosition]: labelPosition,\n\t\t\t\t\t['-' + labelSizeToUse]: labelSizeToUse,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<label\n\t\t\t\t\tid={labelId}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-dropdown-label': true,\n\t\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t}}\n\t\t\t\t\thtmlFor={triggerId}\n\t\t\t\t>\n\t\t\t\t\t<span className=\"now-line-height-crop\">{label}</span>\n\t\t\t\t</label>\n\n\t\t\t\t{renderDropdown(state, {dispatch}, labelId, triggerId)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn renderDropdown(state, {dispatch}, labelId, triggerId);\n};\n\n/**\n * An expandable menu that contains a list of menu options that appears when a user selects the associated trigger button.\n * This component provides the following functionality:\n * - Allow users to make one or more selections from the list of menu options.\n * - Disablement of the dropdown, preventing users from opening the dropdown.\n * - Display icons next to items within the dropdown list.\n * - Display placeholder text that appears when no items are selected within the dropdown list.\n * - Define the button style of the dropdown trigger button.\n * - Define the button size of the dropdown trigger button.\n * - Make dropdown trigger button borders and background transparent.\n * - Hide the caret icon that appears in the dropdown trigger button by default.\n * - Define tooltip text.\n * - Position and scale the dropdown list relative to the trigger button.\n * - Hide specified items in the dropdown list.\n * - Define whether bare buttons have side padding.\n * - Control how to filter dropdown items as a user types into the integrated search input.\n *\n * ```jsx\n * const dropdownItems = [{id: 'item1', label: 'Option 1'}, {id: 'item2', label: 'Option 2'}];\n *\n * <now-dropdown placeholder=\"Select\" items={dropdownItems} />\n *\n * <now-dropdown\n *    items={dropdownItems}\n *    icon=\"tag-fill\"\n *    tooltip-content=\"Select an item\"\n *    config-aria={{\n * \t\ttrigger: {'aria-label': 'Select an item'},\n * \t\tpanel: {'aria-label': 'Assigned to'}\n * \t  }}\n *    bare />\n *\n * const dropdownItemsWithDividers = [{label: 'Section 1', children: dropdownItems}];\n * <now-dropdown items={dropdownItemsWithDividers} />\n * ```\n *\n * @seismicElement now-dropdown\n * @summary An expandable menu for selecting one or more items or for taking an action.\n *\n * @uib.label Dropdown\n * @uib.icon dropdown\n * @uib.description An expandable menu for selecting one or more items or for taking an action.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties placeholder, variant, bare, size, search, disabled, icon, hideCaret, showPadding, hideBlockPadding ,items, select, selectedItems, manageSelectedItems, hideLabel, panelFitProps, opened, manageOpened, tooltipContent, label, labelPosition, labelSize, landmark, configAria\n * @uib.layout.identifier.children icon, hideCaret\n * @uib.layout.identifier.icon image-outline\n * @uib.layout.padding.children showPadding, hideBlockPadding\n * @uib.layout.padding.icon arrow-up-down-outline\n * @uib.layout.item.children items\n * @uib.layout.item.icon checklist-outline\n * @uib.layout.selection.children select, selectedItems, manageSelectedItems, hideLabel\n * @uib.layout.selection.icon select-element-outline\n * @uib.layout.panel.children panelFitProps, opened, manageOpened\n * @uib.layout.panel.icon panel-display-bottom-outline\n * @uib.layout.accessibility.children tooltipContent, configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_DROPDOWN#LIST_VISIBLE, NOW_DROPDOWN#LIST_HIDDEN, NOW_DROPDOWN#OPENED_SET, NOW_DROPDOWN#SELECTED_ITEMS_SET, NOW_DROPDOWN#ITEM_CLICKED\n *\n * */\ncreateEnhancedElement('now-dropdown', {\n\tproperties: {\n\t\t/**\n\t\t * An array of `DropdownItem` or `DropdownSection` items to include in the dropdown list.\n\t\t * @type {(Array.<DropdownItem> | Array.<DropdownSection>)}\n\t\t * @uib.defaultValue [{\"id\":\"l1\",\"label\":\"List item 1\"}, {\"id\":\"l2\",\"label\":\"List item 2\"}, {\"id\":\"l3\",\"label\":\"List item 3\"}, {\"id\":\"l4\",\"label\":\"List item 4\"}, {\"id\":\"l5\",\"label\":\"List item 5\"}, {\"id\":\"l6\",\"label\":\"List item 6\"}]\n\t\t * @uib.label List items\n\t\t * @uib.description An array of items or sections to include in the dropdown list.\n\t\t * @uib.typeMetadata.emptyStateBehavior EMPTY_ARRAY\n\t\t */\n\t\titems: {\n\t\t\trequired: true,\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * An array of IDs representing selected dropdown list items. If\n\t\t * multi-select mode is not enabled, each time a user selects a dropdown list\n\t\t * item, the previously selected ID is replaced with the new ID. If\n\t\t * multi-select mode is enabled, IDs are added to or removed from the list.\n\t\t * Use `manage-selected-items` to override the default behavior and handle\n\t\t * the `NOW_DROPDOWN#SELECTED_ITEMS_SET` action manually.\n\t\t * @type {Array.<(string|number)>}\n\t\t * @uib.description An array of IDs representing selected dropdown panel items. If multi-select mode is not enabled, each time the user selects a list item, the previously selected ID is replaced with the new ID. If multi-select mode is enabled, IDs are added to or removed from the list.\n\t\t */\n\t\tselectedItems: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'array', items: {type: ['string', 'number']}},\n\t\t},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selectedItems` property.\n\t\t * An action with type `NOW_DROPDOWN#SELECTED_ITEMS_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected items property. Use the selected items set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelectedItems: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Determines what happens when the user selects a dropdown item.\n\t\t * Options include:\n\t\t * - `single`: (Default) The list is closed, the trigger label is updated with the label of the selected list item, and the list item is marked as selected. Sets the dropdown ARIA semantics to \"listbox\".\n\t\t * - `multi`: The list stays open, the trigger label is updated with the selected list item count, and the list item's selected state is toggled on/off. Sets the dropdown ARIA semantics to \"listbox\".\n\t\t * - `none`: The list closes, the trigger label is not updated, and the list item is not marked as selected. Sets the dropdown ARIA semantics to \"menu\".\n\t\t * When using the \"single\" or \"multi\" option, handle the\n\t\t * `NOW_DROPDOWN#SELECTED_ITEMS_SET` action manually. When using the \"none\"\n\t\t * option, handle the `NOW_DROPDOWN#ITEM_CLICKED` action manually.\n\t\t * Use the \"none\" option when no value is being set inside the dropdown and your app is handling the action.\n\t\t * @type {(\"single\"|\"multi\"|\"none\")}\n\t\t * @uib.label Selection\n\t\t * @uib.description Determines what happens when the user selects a dropdown item.\n\t\t */\n\t\tselect: {\n\t\t\tdefault: 'single',\n\t\t\tschema: {type: 'string', enum: ['single', 'multi', 'none']},\n\t\t},\n\t\t/**\n\t\t * When true, automatically updates the dispatch's payload when a user opens or closes the dropdown.\n\t\t * Use `manage-opened` to override the default behavior and handle the\n\t\t * `NOW_DROPDOWN#OPENED_SET` action manually.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, automatically updates when a user opens or closes the dropdown.\n\t\t */\n\t\topened: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `opened` property.\n\t\t * An action with type `NOW_DROPDOWN#OPENED_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the opened property. Use the opened set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageOpened: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Placeholder text that displays when there are no items selected in the dropdown list. If you do not\n\t\t * specify a value, especially in the case of iconic dropdowns, provide\n\t\t * `tooltipContent` and/or an `aria-label` through the `configAria` property.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder text\n\t\t * @uib.description Placeholder text that displays when there are no items selected. If you do not specify a value, especially in the case of iconic dropdowns, provide tooltipContent and/or an aria-label through the configAria properties.\n\t\t * @uib.defaultValue Dropdown\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, disables the dropdown and prevents the dropdown from opening\n\t\t * when a user interacts with it.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description Disables user interactions with the dropdown.\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Placeholder icon to include in the dropdown trigger. This icon is\n\t\t * replaced by the icon of a selected dropdown item if the item has an icon\n\t\t * configured.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder icon\n\t\t * @uib.description Placeholder icon to include in the dropdown trigger. This icon is replaced by the icon of a selected dropdown item if the item has an icon configured\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Style to use for the dropdown trigger button.\n\t\t * Possible values:\n\t\t * - `primary`: Use for actions that users are most likely to select or the action that the product is guiding users to select.\n\t\t * - `secondary`: Use for actions that are an alternative to the primary action. These typically have less of a visual empahsis.\n\t\t * - `tertiary`: Use for actions that users may need to access, such as cancel or close. Tertiary buttons have the least visual emphasis and are often smaller than primary and secondary buttons.\n\t\t * @type {(\"primary\"|\"primary-selection\"|\"secondary\"|\"secondary-selection\"|\"tertiary\"|\"tertiary-selection\")}\n\t\t * @uib.label Variant\n\t\t * @uib.description Defines the button style for the dropdown trigger button.\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Primary\", \"value\": \"primary\"}, {\"label\": \"Primary (selection)\", \"value\": \"primary-selection\"}, {\"label\": \"Secondary\", \"value\": \"secondary\"},{\"label\": \"Secondary (selection)\",\"value\": \"secondary-selection\"},{\"label\": \"Tertiary\",\"value\": \"tertiary\"},{\"label\": \"Tertiary (selection)\",\"value\": \"tertiary-selection\"},{\"label\": \"Secondary (selected)\",\"value\": \"secondary-selected\"},{\"label\": \"Tertiary (selected)\",\"value\": \"tertiary-selected\"}]\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'secondary',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'primary',\n\t\t\t\t\t'primary-selection',\n\t\t\t\t\t'secondary',\n\t\t\t\t\t'secondary-selection',\n\t\t\t\t\t'tertiary',\n\t\t\t\t\t'tertiary-selection',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Size of the dropdown trigger button; small (sm), medium (md), or large (lg).\n\t\t * @type {(\"sm\"|\"md\"|\"lg\")}\n\t\t * @uib.label Size\n\t\t * @uib.description Size of the dropdown trigger button; small (sm), medium (md), or large (lg).\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * When true, makes the dropdown trigger border and background transparent,\n\t\t * but retains its `variant` style setting when using an iconic button.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide container\n\t\t * @uib.description Select to hide the dropdown container but retain the style when using an iconic button.\n\t\t */\n\t\tbare: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, hides the caret icon that appears in the dropdown trigger by default.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to hide the caret icon that appears in the dropdown by default.\n\t\t */\n\t\thideCaret: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Text to show inside the tooltip.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip text\n\t\t * @uib.description Text to show inside the tooltip.\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Properties to configure the dropdown list. Define these properties to position and scale the list relative to the dropdown trigger button.\n\t\t *\n\t\t * Valid properties:\n\t\t * - `position`: Array of possible positions in which to place the list, relative to its trigger button.\n\t\t *      Default: `[\"bottom-start top-start\",\"top-start bottom-start\",\"bottom-end top-end\",\"top-end bottom-end\"]`\n\t\t *      For additional information on these values, refer to the `position` property defined in the popover component.\n\t\t * - `constrain`: Object specifying size constraints relative to the list's trigger button.\n\t\t *      Default: `{\"minHeight\":32,\"minWidth\":\"target\",\"maxWidth\":400,\"maxHeight\":300}`\n\t\t *      `\"minWidth\":\"target\"` sets the minimum with of the dropdown list to the width of the trigger button. All other values are in pixels.\n\t\t * - `offset`: Number of pixels to offset the list from the trigger button.\n\t\t *\n\t\t * @type {{ position: Array<{target: string, content: string}>, constrain: object, offset: number }}\n\t\t * @uib.label List position\n\t\t * @uib.description Properties to position and scale the menu list relative to the dropdown trigger (button) using 'position', 'constrain', and 'offset'.\n\t\t */\n\t\tpanelFitProps: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tposition: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t{type: 'string'},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t\t\t\t\t\t'top-center',\n\t\t\t\t\t\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t\t\t\t\t\t'center-start',\n\t\t\t\t\t\t\t\t\t\t\t\t'center-end',\n\t\t\t\t\t\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t\t\t\t\t\t'bottom-center',\n\t\t\t\t\t\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t\t\t\t\t\t'top-center',\n\t\t\t\t\t\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t\t\t\t\t\t'center-start',\n\t\t\t\t\t\t\t\t\t\t\t\t'center-end',\n\t\t\t\t\t\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t\t\t\t\t\t'bottom-center',\n\t\t\t\t\t\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\trequired: ['target'],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\toffset: {\n\t\t\t\t\t\toneOf: [{type: 'number'}, {type: 'array', items: {type: 'number'}}],\n\t\t\t\t\t},\n\t\t\t\t\tconstrain: constrainSchema,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, hides the selected item(s) in the dropdown list.\n\t\t * By default, the dropdown displays the selected item or a count of selected\n\t\t * items in place of the 'placeholder' text in the label of the dropdown\n\t\t * trigger.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide selected item\n\t\t * @uib.description Select to hide the selected item(s) in the dropdown list. By default, the dropdown displays the selected item or a count of selected items in place of the placeholder text in the label of the dropdown trigger.\n\t\t */\n\t\thideLabel: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, include side padding on bare buttons. By default, bare\n\t\t * buttons with labels do not have side padding.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to include side padding on bare buttons. By default, bare buttons with labels do not have side padding.\n\t\t */\n\t\tshowPadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\t\tshowPresencePattern: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-dropdown. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'trigger' key corresponds to the inner html `<button>` that acts as\n\t\t * the trigger in now-dropdown. See\n\t\t * https://www.w3.org/TR/wai-aria-1.2/#button for properties and accepted\n\t\t * values. The 'panel' key corresponds to the inner html `<div>` that acts\n\t\t * as the 'listbox'. See https://www.w3.org/TR/wai-aria-1.2/#listbox for\n\t\t * properties and accepted values.\n\t\t * @type {{ trigger: {'aria-*': string, role: string}, panel: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.defaultValue {\"panel\": {\"aria-label\": \"Options\"}}\n\t\t * @uib.description Defines ARIA properties on the inner html 'button' and 'listbox'.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttrigger: configAriaLabelSchema,\n\t\t\t\t\t\t\tpanel: configAriaLabelSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this dropdown\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Controls how to filter dropdown items as the user types into the integrated search input.\n\t\t * - `none`: (Default) Dropdown list does not display an internal search field.\n\t\t * - `managed`: Internal input field renders without automatic search filtering.\n\t\t *      Use these parameters to manually filter or search for items as a user types\n\t\t *      outside of the list.\n\t\t * - `initial`: Internal input field renders and items whose label or sublabel begins with the input value display. Case-insensitive.\n\t\t * - `contains`: Internal input field renders and items whose label or sublabel contains the input value display. Case-insensitive.\n\t\t * @type {(\"none\"|\"managed\"|\"initial\"|\"contains\")}\n\t\t * @uib.label Search behavior\n\t\t * @uib.description Controls how to filter the dropdown items as the user types into the integrated search input.\n\t\t */\n\t\tsearch: {\n\t\t\tdefault: 'none',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['none', 'managed', 'initial', 'contains'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text for label element associated with the dropdown\n\t\t * @type {string}\n\t\t * @uib.defaultValue\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Position at which to display the label relative to the dropdown. Possible values:\n\t\t * - start\n\t\t * - top\n\t\t * @type {(\"start\"|\"top\")}\n\t\t * @uib.description Position at which to display the label relative to the dropdown.\n\t\t * @uib.defaultValue top\n\t\t * @uib.typeMetadata.choices [{\"label\":\"Start\",\"value\":\"start\"},{\"label\":\"Top\",\"value\":\"top\"}]\n\t\t */\n\t\tlabelPosition: {\n\t\t\tdefault: 'top',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['start', 'top'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Size of the label text, if label is provided. Possible values:\n\t\t * - sm\n\t\t * - md\n\t\t * - lg\n\t\t * @type {(\"sm\"|\"md\"|\"lg\")}\n\t\t * @uib.description Size of the label text, if label is provided\n\t\t * @uib.typeMetadata.choices [{\"label\":\"Small\",\"value\":\"sm\"},{\"label\":\"Medium\",\"value\":\"md\"}, {\"label\": \"Large\", \"value\": \"lg\"}]\n\t\t */\n\t\tlabelSize: {\n\t\t\tdefault: '',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md', 'lg', ''],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * By default, a dropdown button's height is based on the `size` property. Set\n\t\t * this to reduce this height so that the button only takes up the\n\t\t * height required by the label and/or icons.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Block Padding\n\t\t * @uib.description By default, the dropdown button's height is based on the size. Select to reduce the button height. This sets the button height to the size of the text.\n\t\t */\n\t\thideBlockPadding: {default: false, schema: {type: 'boolean'}},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the dropdown menu opens or closes. The payload contains a\n\t\t * boolean of `true` when the dropdown opens or `false` when the dropdown\n\t\t * closes.\n\t\t * Set the `manage-opened` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t * @uib.description Dispatched when the dropdown menu opens or closes.\n\t\t */\n\t\t'NOW_DROPDOWN#OPENED_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the dropdown menu opens and renders the content. Unlike\n\t\t * `NOW_DROPDOWN#OPENED_SET`, this action only fires after the dropdown\n\t\t * menu is rendered in the DOM. The `content` property is a node list\n\t\t * containing the dropdown's inner `now-dropdown-list` element.\n\t\t * @type {{content: NodeList}}\n\t\t * @uib.description Dispatched when the dropdown menu is fully rendered to the DOM.\n\t\t */\n\t\t'NOW_DROPDOWN#LIST_VISIBLE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcontent: {type: 'array'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the dropdown menu has been closed and removed. Unlike\n\t\t * `NOW_DROPDOWN#OPENED_SET`, this action only fires after the dropdown\n\t\t * menu is fully removed from the DOM.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the dropdown menu is fully removed from the DOM.\n\t\t */\n\t\t'NOW_DROPDOWN#LIST_HIDDEN': {schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched when a user changes the selection of items in the dropdown\n\t\t * list. The payload contains an array containing either a single ID (for\n\t\t * `select=\"single\"`) or multiple IDs (for `select=\"multi\"`) of the\n\t\t * selected item(s). Set the `manage-selected-items` property to override\n\t\t * the default behavior and handle this action manually.\n\t\t * @type {{value: Array.<(string|number)>}}\n\t\t * @uib.label Selected items changed\n\t\t * @uib.description A user changes the selected items and the Selection setting is Single or Multi.\n\t\t */\n\t\t'NOW_DROPDOWN#SELECTED_ITEMS_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: ['string', 'number'],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when a user selects a dropdown item. Payload contains\n\t\t * a reference to the clicked item. Handle this action for dropdown menus\n\t\t * (where `select=\"none\"`).\n\t\t * @type {{item: DropdownItem}}\n\t\t * @uib.label Item selected\n\t\t * @uib.description A user selects an item and the Selection setting is None.\n\t\t */\n\t\t'NOW_DROPDOWN#ITEM_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {item: itemSchema},\n\t\t\t},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content placed in this named slot appears inside of the dropdown trigger button,\n\t\t * taking the place of the `icon`, `placeholder`, and\n\t\t * caret icon that normally appear there. Click behavior and other\n\t\t * functionality is automatically maintained for the custom content.\n\t\t * Use this slot for custom icons or text formatting. For more complex\n\t\t * triggers, use `now-dropdown-custom-target`.\n\t\t * @uib.hidePlaceholder true\n\t\t */\n\t\t'trigger-content': {},\n\t},\n\tsetInitialState({properties}) {\n\t\tconst {items} = properties;\n\t\tconst flattened = items.flatMap((item) => item.children || item);\n\t\treturn {\n\t\t\tflattenedItems: flattened,\n\t\t\tprevEnteredKey: '',\n\t\t};\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect({host, action, properties, dispatch, state, updateState}) {\n\t\t\t\tconst {items, selectedItems, opened} = properties;\n\t\t\t\tif (properties.disabled) return;\n\n\t\t\t\t/* checks if the current focused element is not equal to trigger to prevent the\n                dropdown from showing */\n\t\t\t\tconst activeElement = getActiveElement();\n\t\t\t\tif (!activeElement.classList.contains('now-dropdown')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst {key} = action.payload.event;\n\n\t\t\t\tif (['ArrowDown', 'ArrowUp'].includes(key)) {\n\t\t\t\t\tconst focused = getFocusedEl(host);\n\t\t\t\t\tconst trigger = getTriggerEl(host);\n\n\t\t\t\t\tif (!properties.disabled && focused === trigger) {\n\t\t\t\t\t\taction.preventDefault();\n\t\t\t\t\t\tsetActiveItem(items, selectedItems, updateState);\n\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttype: 'NOW_DROPDOWN#OPENED_SET',\n\t\t\t\t\t\t\t\tpayload: {value: true},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (!opened && [...key].length === 1) {\n\t\t\t\t\tconst flattened = state.flattenedItems;\n\t\t\t\t\t//If the user types multiple characters, wait and then dispatch the function\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tpath: 'prevEnteredKey',\n\t\t\t\t\t\tvalue: state.prevEnteredKey + key,\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t});\n\t\t\t\t\tdispatch('NOW_DROPDOWN#MATCH_KEYWORD_ITEM', {\n\t\t\t\t\t\tflattened,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_PROPERTY_CHANGED]({\n\t\t\taction,\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t\thost,\n\t\t\tstate,\n\t\t}) {\n\t\t\tconst {name} = action.payload;\n\t\t\tif (name === 'items') {\n\t\t\t\tconst {items} = properties;\n\t\t\t\tconst flattened = items.flatMap((item) => item.children || item);\n\t\t\t\tupdateState({\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: 'flattenedItems',\n\t\t\t\t\tvalue: flattened,\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (name === 'items' && state.opened) {\n\t\t\t\thost.shadowRoot.querySelector('now-popover').refit();\n\t\t\t}\n\t\t},\n\t\t'NOW_POPOVER#OPENED_SET': ({action, dispatch, properties}) => {\n\t\t\tconst {value} = action.payload;\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tconst {disabled, nowId} = properties;\n\t\t\tif (disabled) return;\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DROPDOWN#OPENED_SET',\n\t\t\t\t\tpayload: {value},\n\t\t\t\t\tshouldDispatch: componentId === nowId,\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t'NOW_POPOVER#CONTENT_VISIBLE': (coeffects) => {\n\t\t\tconst {host, properties, updateState} = coeffects;\n\t\t\tconst dropdownList = host.shadowRoot.querySelector('now-dropdown-list');\n\t\t\tdropdownList.focus();\n\n\t\t\tconst {items, selectedItems} = properties;\n\t\t\tsetActiveItem(items, selectedItems, updateState);\n\t\t\tmakeRedispatchEffect('NOW_DROPDOWN#LIST_VISIBLE')(coeffects);\n\t\t},\n\t\t'NOW_POPOVER#CONTENT_HIDDEN': (coeffects) => {\n\t\t\tconst {updateState} = coeffects;\n\t\t\tupdateState(() => {\n\t\t\t\treturn {\n\t\t\t\t\tpath: 'activeItem',\n\t\t\t\t\tvalue: null,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t};\n\t\t\t});\n\t\t\tmakeRedispatchEffect('NOW_DROPDOWN#LIST_HIDDEN')(coeffects);\n\t\t},\n\t\t'NOW_DROPDOWN_LIST#SELECTED_ITEMS_SET': makeRedispatchEffect(\n\t\t\t'NOW_DROPDOWN#SELECTED_ITEMS_SET',\n\t\t),\n\t\t'NOW_DROPDOWN_LIST#ITEM_CLICKED': ({dispatch, action}) => {\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst {select} = properties;\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DROPDOWN#OPENED_SET',\n\t\t\t\t\tpayload: {value: false},\n\t\t\t\t\tshouldDispatch: select !== 'multi',\n\t\t\t\t};\n\t\t\t});\n\t\t\tdispatch(() => ({\n\t\t\t\ttype: 'NOW_DROPDOWN#ITEM_CLICKED',\n\t\t\t\tpayload: {item: action.payload.item},\n\t\t\t}));\n\t\t},\n\t\t'NOW_DROPDOWN_LIST#ACTIVE_ITEM_SET': ({action, updateState}) => {\n\t\t\tconst activeItem = action.payload.value;\n\t\t\tupdateState({activeItem});\n\t\t},\n\t\t'NOW_DROPDOWN#MATCH_KEYWORD_ITEM': {\n\t\t\tmodifier: {\n\t\t\t\tname: 'debounce',\n\t\t\t\tdelay: 250,\n\t\t\t},\n\t\t\teffect: ({action, state, dispatch, updateState}) => {\n\t\t\t\tconst {flattened} = action.payload;\n\t\t\t\tconst {prevEnteredKey} = state;\n\t\t\t\tmatchKeywordWithItem(flattened, prevEnteredKey, dispatch, updateState);\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\tfocusBehavior,\n\t\ttooltipBehavior,\n\t\t{\n\t\t\tbehavior: deferBehavior,\n\t\t\toptions: {\n\t\t\t\tevents: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'mouseenter',\n\t\t\t\t\t\ttrigger: 'now-popover',\n\t\t\t\t\t\ttarget: 'now-dropdown-list',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t],\n\tview,\n\tstyles,\n});\n","/* dropdown-panel only, deprecated */\n\nconst hostToScrollData = new WeakMap();\n\n/**\n * Attaches a listener to the window, then fires a fake event from the given element\n * to identify all ancestor elements in the element's DOM tree. More efficient than\n * climbing the tree recursively.\n * @param {HTMLElement} element\n * @param {string} uuid\n */\nconst findAncestors = (element, uuid) =>\n\tnew Promise((resolve) => {\n\t\tconst eventName = `findAncestors-${uuid}`;\n\t\tconst findListener = (e) => {\n\t\t\twindow.removeEventListener(eventName, findListener);\n\t\t\tconst path = e.composedPath ? e.composedPath() : e.path;\n\t\t\tresolve([\n\t\t\t\t...path.filter(\n\t\t\t\t\t(n) => n !== element && n.nodeType === Node.ELEMENT_NODE,\n\t\t\t\t),\n\t\t\t\tdocument,\n\t\t\t\twindow,\n\t\t\t]);\n\t\t};\n\t\twindow.addEventListener(eventName, findListener);\n\t\tconst event = new CustomEvent(eventName, {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tcancelable: false,\n\t\t});\n\t\telement.dispatchEvent(event);\n\t});\n\n/**\n * Attaches scroll listeners to the document, the window, and all ancestor elements\n * of the given host element that have shadow roots (because scroll events do not automatically\n * bubble through shadow boundaries). When any of the scroll listeners are fired, triggers\n * the callback function.\n * @param {HTMLElement} host\n * @param {string} componentId\n * @param {function} callback\n */\nexport const addOutsideScrollListener = async (host, componentId, callback) => {\n\tconst ancestors = await findAncestors(host, componentId);\n\tconst targets = ancestors.filter((el) => !!el.shadowRoot);\n\tlet handled = false;\n\tconst listener = (e) => {\n\t\tif (handled) {\n\t\t\treturn;\n\t\t}\n\t\tconst [source] = e.composedPath ? e.composedPath() : e.path;\n\t\tif (ancestors.indexOf(source) > -1) {\n\t\t\thandled = true;\n\t\t\tremoveOutsideScrollListener(host);\n\t\t\tif (callback && typeof callback === 'function') {\n\t\t\t\tcallback(host, componentId);\n\t\t\t}\n\t\t}\n\t};\n\tfor (let target of targets) {\n\t\ttarget.shadowRoot.addEventListener('scroll', listener, true);\n\t}\n\twindow.addEventListener('scroll', listener, true);\n\thostToScrollData.set(host, {listener, targets});\n};\n\n/**\n * Cleans up all scroll listeners created for the given host element.\n * @param {HTMLElement} host\n */\nexport const removeOutsideScrollListener = (host) => {\n\tif (hostToScrollData.has(host)) {\n\t\tconst {listener, targets} = hostToScrollData.get(host);\n\t\tfor (let target of targets) {\n\t\t\ttarget.shadowRoot.removeEventListener('scroll', listener, true);\n\t\t}\n\t\twindow.removeEventListener('scroll', listener, true);\n\t\thostToScrollData.delete(host);\n\t}\n};\n","/* Note: only used by deprecated now-dropdown-panel */\n\nexport const itemSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\tid: {nowUIType: 'string', type: ['string', 'number']},\n\t\tlabel: {type: 'string', translatable: true},\n\t\tcount: {type: 'number'},\n\t\ticon: {type: 'string'},\n\t\tpresence: {type: 'string', enum: ['available', 'away', 'busy', 'offline']},\n\t\tdisabled: {type: 'boolean'},\n\t},\n\trequired: ['id', 'label'],\n};\n\nconst sectionSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\tid: {type: ['string', 'number']},\n\t\tlabel: {type: 'string', translatable: true},\n\t\tchildren: {type: 'array', items: itemSchema},\n\t},\n\trequired: ['children'],\n};\n\nexport const itemsSchema = {\n\ttype: 'array',\n\titems: {\n\t\tanyOf: [itemSchema, sectionSchema],\n\t},\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport {actionTypes} from '@servicenow/ui-core';\nimport styles from './_now-dropdown-panel.scss';\nimport {\n\taddOutsideScrollListener,\n\tremoveOutsideScrollListener,\n} from './panel-outside-scroll.js';\nimport {getBestFitInfo} from '@servicenow/behavior-fit';\nimport {t} from 'sn-translate';\nimport isEqual from 'lodash/isEqual';\nimport '@servicenow/now-icon';\nimport {itemsSchema} from './schemas/dropdown-schema';\nimport {constrainSchema} from '@servicenow/behavior-fit';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {configAriaSchema} from '@servicenow/library-schemas';\n\nconst {COMPONENT_DOM_READY, COMPONENT_RENDERED, COMPONENT_PROPERTY_CHANGED} =\n\tactionTypes;\n\n/** copy from ./utils/elements.js to isolate panel code*/\nfunction createIdSelector(prefix) {\n\treturn function (host) {\n\t\tconst componentId = host.getAttribute('component-id');\n\t\treturn host.shadowRoot.getElementById(`${prefix}-${componentId}`);\n\t};\n}\n\nconst getPanelEl = createIdSelector('panel');\n\nconst getContentEl = createIdSelector('panel');\n\nconst getListboxEl = (host) =>\n\thost.shadowRoot.querySelector('.now-dropdown-panel-list');\n\nconst getItemEls = (host) => {\n\treturn [...host.shadowRoot.querySelectorAll('.now-dropdown-panel-item')];\n};\n\nconst canRenderDivider = (index, array) => {\n\tconst isLastItem = index === array.length - 1;\n\tif (isLastItem) {\n\t\treturn false;\n\t}\n\n\tconst nextItem = array[index + 1];\n\tconst isNextSectionWithLabel =\n\t\tnextItem.label && Array.isArray(nextItem.children);\n\n\treturn !isNextSectionWithLabel;\n};\n\nconst getSelectedItemEls = (host) => {\n\treturn [\n\t\t...host.shadowRoot.querySelectorAll(\n\t\t\t'.now-dropdown-panel-item[aria-selected=\"true\"]',\n\t\t),\n\t];\n};\n\nconst getFocusedItemEl = (host) => {\n\treturn host.shadowRoot.activeElement;\n};\n\nconst getFocusedItemIndex = (host) => {\n\treturn getItemEls(host).findIndex(\n\t\t(element) => element.id === getFocusedItemEl(host).id,\n\t);\n};\n\nconst getShadowRootHost = (el) => {\n\tif (el.parentElement) {\n\t\treturn getShadowRootHost(el.parentElement);\n\t}\n\tif (el.parentNode && el.parentNode instanceof DocumentFragment) {\n\t\treturn el.parentNode.host;\n\t}\n\treturn null;\n};\n\nconst isPanelList = (el) =>\n\tel.getAttribute('role') === 'listbox' || el.getAttribute('role') === 'menu';\n// end of utils\n\n/** copy from ./utils/focus.js to isolate panel code*/\nconst unfocusItem = (host) => {\n\tconst listbox = getListboxEl(host);\n\tlistbox.focus();\n};\n\nconst focusOnOpen = async (host) => {\n\tconst listbox = getListboxEl(host);\n\tlistbox.focus();\n\tconst firstFocusItem = getSelectedItemEls(host)[0] || getItemEls(host)[0];\n\tif (firstFocusItem) {\n\t\tfirstFocusItem.focus();\n\t}\n};\n\nconst focusPreviousItem = (host) => {\n\tconst lastFocusItem = getFocusedItemEl(host);\n\tif (!lastFocusItem || isPanelList(lastFocusItem)) {\n\t\tfocusFirstItem(host);\n\t\treturn;\n\t}\n\tconst lastFocusIndex = getFocusedItemIndex(host);\n\tconst nextFocusItem = getItemEls(host)[lastFocusIndex - 1];\n\tif (nextFocusItem) {\n\t\tnextFocusItem.focus();\n\t}\n};\n\nconst focusNextItem = (host) => {\n\tconst lastFocusItem = getFocusedItemEl(host);\n\tif (!lastFocusItem || isPanelList(lastFocusItem)) {\n\t\tfocusFirstItem(host);\n\t\treturn;\n\t}\n\tconst lastFocusIndex = getFocusedItemIndex(host);\n\tconst nextFocusItem = getItemEls(host)[lastFocusIndex + 1];\n\tif (nextFocusItem) {\n\t\tnextFocusItem.focus();\n\t}\n};\n\nconst focusFirstItem = (host) => {\n\tconst nextFocusItem = getItemEls(host)[0];\n\tif (nextFocusItem) {\n\t\tnextFocusItem.focus();\n\t}\n};\n\nconst focusLastItem = (host) => {\n\tconst nextFocusItem = getItemEls(host).slice(-1)[0];\n\tif (nextFocusItem) {\n\t\tnextFocusItem.focus();\n\t}\n};\n// end of focus\n\n/** copy from ./utils/helps.js to isolate panel code*/\nexport const hasPath = (list, path) =>\n\tlist.findIndex((p) => isEqual(p, path)) > -1;\n\nexport const removePath = (list, path) => list.filter((p) => !isEqual(p, path));\n\nexport const addPath = (list, path) => [...list, path];\n\nexport const togglePath = (list, path) =>\n\thasPath(list, path) ? removePath(list, path) : addPath(list, path);\n// end of helpers\n\nconst filterSelectedItems = (list, selectedItems) => {\n\treturn selectedItems.map((item) => list.find((l) => item === l.id));\n};\n\nconst renderCheckmark = (selected, select) => {\n\tif (select === 'none') {\n\t\treturn;\n\t}\n\tif (selected) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-dropdown-panel-checkmark\"\n\t\t\t\ticon=\"check-fill\"\n\t\t\t\tconfig-aria={{icon: {'aria-label': t('selected')}}}\n\t\t\t/>\n\t\t);\n\t}\n\treturn <div className=\"now-dropdown-panel-checkmark\" />;\n};\n\nconst renderPresenceOrIcon = (icon, presence, selected) => {\n\tif (presence) {\n\t\treturn (\n\t\t\t<now-icon-presence\n\t\t\t\tclassName=\"now-m-inline-end--xxs\"\n\t\t\t\tpresence={presence}\n\t\t\t/>\n\t\t);\n\t} else if (icon) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-m-inline-end--xxs\"\n\t\t\t\ticon={\n\t\t\t\t\tselected\n\t\t\t\t\t\t? icon.replace('outline', 'fill')\n\t\t\t\t\t\t: icon.replace('fill', 'outline')\n\t\t\t\t}\n\t\t\t\tconfig-aria={{icon: {'aria-label': t('selected')}}}\n\t\t\t/>\n\t\t);\n\t}\n\treturn '';\n};\n\nconst renderDropdownPanelItem = ({\n\tlabel,\n\tselected,\n\tselect,\n\tonClick,\n\tkey,\n\ticon,\n\tpresence,\n\tcount,\n\tdisabled,\n}) => {\n\treturn (\n\t\t<div\n\t\t\ttabindex=\"-1\"\n\t\t\tid={key}\n\t\t\tclass={{'now-dropdown-panel-item': true, 'is-disabled': disabled}}\n\t\t\ton-mouseover={(e) => {\n\t\t\t\te.currentTarget.focus();\n\t\t\t}}\n\t\t\ton-mouseout={(e) => {\n\t\t\t\tconst host = getShadowRootHost(e.currentTarget);\n\t\t\t\tunfocusItem(host);\n\t\t\t}}\n\t\t\ton-click={disabled ? undefined : onClick}\n\t\t\trole={select === 'none' ? 'menuitem' : 'option'}\n\t\t\taria-selected={\n\t\t\t\tdisabled || select === 'none' ? undefined : selected ? 'true' : 'false'\n\t\t\t}\n\t\t\taria-disabled={disabled ? 'true' : undefined}\n\t\t>\n\t\t\t{renderCheckmark(selected, select)}\n\t\t\t{renderPresenceOrIcon(icon, presence, selected)}\n\t\t\t<div className=\"now-dropdown-panel-labels\">\n\t\t\t\t<div className=\"now-line-height-crop\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"now-dropdown-panel-label\"\n\t\t\t\t\t\ton-mouseover={({target}) => {\n\t\t\t\t\t\t\tif (target.offsetWidth < target.scrollWidth) {\n\t\t\t\t\t\t\t\ttarget.title = label;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{count ? (\n\t\t\t\t\t<div className=\"now-line-height-crop\">&nbsp;({count})</div>\n\t\t\t\t) : undefined}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {fitStyle} = state;\n\tconst {select, items, selectedItems, configAria, nowId} = state.properties;\n\n\tconst onItemClick = (item) => {\n\t\tdispatch(() => {\n\t\t\treturn {\n\t\t\t\ttype: 'NOW_DROPDOWN_PANEL#ITEM_CLICKED',\n\t\t\t\tpayload: {item},\n\t\t\t};\n\t\t});\n\t\tif (select === 'single' || select === 'multi') {\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst filteredItemIds = togglePath(selectedItems, item.id);\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DROPDOWN_PANEL#SELECTED_ITEMS_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\tproperties.select === 'multi'\n\t\t\t\t\t\t\t\t? togglePath(properties.selectedItems, item.id)\n\t\t\t\t\t\t\t\t: [item.id],\n\t\t\t\t\t\titems:\n\t\t\t\t\t\t\tproperties.select === 'multi'\n\t\t\t\t\t\t\t\t? filterSelectedItems(items, filteredItemIds)\n\t\t\t\t\t\t\t\t: [item],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\tif (select !== 'multi') {\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DROPDOWN_PANEL#OPENED_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\trestoreFocus: true,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n\n\tconst renderItem = (item) =>\n\t\trenderDropdownPanelItem({\n\t\t\tlabel: item.label,\n\t\t\tselected:\n\t\t\t\tselectedItems &&\n\t\t\t\tselectedItems.length &&\n\t\t\t\tselectedItems.includes(item.id),\n\t\t\tselect,\n\t\t\tonClick: () => onItemClick(item),\n\t\t\tkey: `${item.id}-${nowId}`,\n\t\t\ticon: item.icon,\n\t\t\tpresence: item.presence,\n\t\t\tcount: item.count,\n\t\t\tdisabled: item.disabled,\n\t\t});\n\n\tconst renderSectionOrItem = (item, index, array) => {\n\t\tif (Array.isArray(item.children)) {\n\t\t\tconst header = item.label ? (\n\t\t\t\t<div className=\"now-dropdown-panel-header\">\n\t\t\t\t\t<div className=\"now-dropdown-panel-header-label\" title={item.label}>\n\t\t\t\t\t\t{item.label}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) : undefined;\n\t\t\tconst divider = canRenderDivider(index, array) ? (\n\t\t\t\t<hr className=\"now-dropdown-panel-divider\" />\n\t\t\t) : undefined;\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{header}\n\t\t\t\t\t{item.children.map(renderItem)}\n\t\t\t\t\t{divider}\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n\t\treturn renderItem(item);\n\t};\n\n\treturn (\n\t\t<div id={`panel-${nowId}`} className=\"now-dropdown-panel\" style={fitStyle}>\n\t\t\t<div\n\t\t\t\tclassName=\"now-dropdown-panel-list\"\n\t\t\t\trole={select === 'none' ? 'menu' : 'listbox'}\n\t\t\t\t{...filterAriaAttributes(configAria, 'panel')}\n\t\t\t\taria-multiselectable={select === 'multi' ? 'true' : undefined}\n\t\t\t>\n\t\t\t\t{items.map(renderSectionOrItem)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * The panel portion of a dropdown menu, for displaying a list of items.\n * This component should not be used directly in an application, but is used\n * by other higher level components like now-dropdown and now-split-button.\n *\n * @seismicElement now-dropdown-panel\n * @summary The panel portion of a dropdown menu, for displaying a list of items.\n * @private\n *\n * */\ncreateEnhancedElement('now-dropdown-panel', {\n\tproperties: {\n\t\t/**\n\t\t * An array of `DropdownItem` or `DropdownSection` items.\n\t\t * @type {Array.<DropdownItem|DropdownSection>} // TODO: kind of a lie now, need to decide on deprecation of this component?\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\tschema: itemsSchema, // TODO: kind of a lie now, need to decide on deprecation of this component?\n\t\t},\n\t\t/**\n\t\t * An array of IDs representing each selected item. If the multi-select mode\n\t\t * is not enabled, the ID of a previously selected item is cleared when\n\t\t * the user selects a new item, and a new ID is added. If the multi-select\n\t\t * mode is enabled, IDs are added to or removed from the list.\n\t\t * @type {Array.<(string|number)>}\n\t\t */\n\t\tselectedItems: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'array', items: {type: ['string', 'number']}},\n\t\t},\n\t\t/**\n\t\t * Determines what happens when the user clicks on a dropdown panel item.\n\t\t * Choose from the following:\n\t\t * - \"single\" (Default): The panel is closed, the trigger label is updated,\n\t\t *   and the item is marked as selected\n\t\t * - \"multi\": The panel stays open, the trigger label is updated, and the\n\t\t *   item's selected state is toggled on/off\n\t\t * - \"none\": The panel is closed, the trigger label is not updated, and the\n\t\t *   item is not marked as selected\n\t\t * @type {(\"single\"|\"multi\"|\"none\")}\n\t\t */\n\t\tselect: {\n\t\t\tdefault: 'single',\n\t\t\tschema: {type: 'string', enum: ['single', 'multi', 'none']},\n\t\t},\n\t\t/**\n\t\t * Automatically updated when the user opens or closes the dropdown panel.\n\t\t * Set `manage-opened` to override this behavior.\n\t\t * @type {boolean}\n\t\t */\n\t\topened: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Reference to the element that defines the dropdown panel's relative\n\t\t * position. The panel does not attach click/interaction handlers to this\n\t\t * target. It is your responsibility to do so and to open/close the panel\n\t\t * when the user clicks the trigger. The panel closes automatically when\n\t\t * the user clicks outside or selects an item, depending on the select mode.\n\t\t * @type {HTMLElement}\n\t\t */\n\t\ttargetRef: {},\n\t\t/**\n\t\t * Pixel amount to shift the panel relative to its target.\n\t\t *\n\t\t * @see Fit behavior for valid values.\n\t\t * @type {number}\n\t\t * @private\n\t\t */\n\t\toffset: {\n\t\t\tschema: {\n\t\t\t\toneOf: [{type: 'number'}, {type: 'array', items: {type: 'number'}}],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Element that the panel must fit within.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t */\n\t\tcontainer: {},\n\t\t/**\n\t\t * Array of possible positions in which to place the panel,\n\t\t * relative to its target.\n\t\t *\n\t\t * @see Fit behavior for valid values.\n\t\t * @type {Array<string>}\n\t\t */\n\t\tposition: {\n\t\t\tdefault: [\n\t\t\t\t'bottom-start top-start',\n\t\t\t\t'top-start bottom-start',\n\t\t\t\t'bottom-end top-end',\n\t\t\t\t'top-end bottom-end',\n\t\t\t],\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {type: 'string'},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Additional size constraints when sizing the panel,\n\t\t * relative to its target.\n\t\t *\n\t\t * @see Fit behavior for valid values.\n\t\t * @type {object}\n\t\t */\n\t\tconstrain: {\n\t\t\tdefault: {\n\t\t\t\tminHeight: 32,\n\t\t\t\tminWidth: 'target',\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tmaxHeight: 300,\n\t\t\t},\n\t\t\tschema: constrainSchema,\n\t\t},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\t\tshowPresencePattern: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-dropdown. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties will be set on the specified element.\n\t\t * The 'panel' key corresponds to the inner html `<div>` that acts as the\n\t\t * 'listbox'. See https://www.w3.org/TR/wai-aria-1.2/#listbox for properties\n\t\t * and accepted values.\n\t\t * @type {{ panel: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA Properties\n\t\t * @uib.description Sets ARIA properties on the inner div with role 'listbox'.\n\t\t */\n\t\tconfigAria: {\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tpanel: {...configAriaSchema, required: ['aria-label']},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{...configAriaSchema, required: ['aria-label']},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\tfitStyle: {},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['click'],\n\t\t\teffect: ({action, dispatch, properties, host}) => {\n\t\t\t\tif (properties.opened) {\n\t\t\t\t\tconst {event} = action.payload;\n\t\t\t\t\tconst path = event.composedPath ? event.composedPath() : event.path;\n\t\t\t\t\tconst hostInPath = path.includes(host);\n\t\t\t\t\tif (!hostInPath) {\n\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttype: 'NOW_DROPDOWN_PANEL#OPENED_SET',\n\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\t\t\t\trestoreFocus: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttarget: document,\n\t\t},\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect({host, action, dispatch}) {\n\t\t\t\tconst {key, shiftKey} = action.payload.event;\n\n\t\t\t\tif (['Home', 'ArrowUp', 'ArrowDown', 'End'].includes(key)) {\n\t\t\t\t\taction.preventDefault();\n\n\t\t\t\t\tif (key === 'Home') {\n\t\t\t\t\t\tfocusFirstItem(host);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === 'ArrowDown') {\n\t\t\t\t\t\tfocusNextItem(host);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === 'ArrowUp') {\n\t\t\t\t\t\tfocusPreviousItem(host);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === 'End') {\n\t\t\t\t\t\tfocusLastItem(host);\n\t\t\t\t\t}\n\t\t\t\t} else if (['Escape', 'Tab'].includes(key)) {\n\t\t\t\t\taction.stopPropagation();\n\t\t\t\t\tconst restoreFocus = key === 'Escape' || (key === 'Tab' && shiftKey);\n\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_DROPDOWN_PANEL#OPENED_SET',\n\t\t\t\t\t\t\tpayload: {value: false, restoreFocus},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t} else if ([' ', 'Enter'].includes(key)) {\n\t\t\t\t\taction.preventDefault();\n\t\t\t\t\taction.stopPropagation();\n\n\t\t\t\t\tconst itemEl = getFocusedItemEl(host);\n\n\t\t\t\t\tif (itemEl && !itemEl.hasAttribute('aria-disabled')) {\n\t\t\t\t\t\titemEl.click();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: ({properties, host, state, dispatch}) => {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t`<now-dropdown-panel> is a deprecated component and is no longer supported and updated. Use <now-dropdown-list> instead.`,\n\t\t\t);\n\n\t\t\tconst {targetRef, opened} = properties;\n\t\t\tif (targetRef && opened) {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'PRIVATE#REFIT',\n\t\t\t\t\t\tpayload: {firstOpen: true},\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\taddOutsideScrollListener(host, state.properties.nowId, () => {\n\t\t\t\t\t// Note: It is usually a VERY BAD IDEA to go reach into the component's\n\t\t\t\t\t// DOM and update things without going through the render cycle. In this\n\t\t\t\t\t// case we have to reach in and set the panel's visibility to hidden\n\t\t\t\t\t// immediately on scroll because dispatching will not trigger a render\n\t\t\t\t\t// fast enough and the panel will float there while the user scrolls.\n\t\t\t\t\t// It's ok. The component will re-render shortly after and set visibility\n\t\t\t\t\t// to hidden from state, so the DOM stays in sync with state.\n\t\t\t\t\tconst panel = getPanelEl(host);\n\t\t\t\t\tif (panel) {\n\t\t\t\t\t\tpanel.style.visibility = 'hidden';\n\t\t\t\t\t}\n\t\t\t\t\tdispatch('NOW_DROPDOWN#OPENED_SET', {value: false});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\thost,\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t}) => {\n\t\t\tconst {\n\t\t\t\tpayload: {name, value},\n\t\t\t} = action;\n\n\t\t\tif (\n\t\t\t\t(value && name === 'opened' && properties.targetRef) ||\n\t\t\t\t(name === 'targetRef' && properties.opened)\n\t\t\t) {\n\t\t\t\taddOutsideScrollListener(host, state.properties.nowId, () => {\n\t\t\t\t\t// Note: It is usually a VERY BAD IDEA to go reach into the component's\n\t\t\t\t\t// DOM and update things without going through the render cycle. In this\n\t\t\t\t\t// case we have to reach in and set the panel's visibility to hidden\n\t\t\t\t\t// immediately on scroll because dispatching will not trigger a render\n\t\t\t\t\t// fast enough and the panel will float there while the user scrolls.\n\t\t\t\t\t// It's ok. The component will re-render shortly after and set visibility\n\t\t\t\t\t// to hidden from state, so the DOM stays in sync with state.\n\t\t\t\t\tconst panel = getPanelEl(host);\n\t\t\t\t\tif (panel) {\n\t\t\t\t\t\tpanel.style.visibility = 'hidden';\n\t\t\t\t\t}\n\t\t\t\t\tdispatch('NOW_DROPDOWN#OPENED_SET', {value: false});\n\t\t\t\t});\n\t\t\t} else if (!value && (name === 'opened' || name === 'targetRef')) {\n\t\t\t\tremoveOutsideScrollListener(host);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tname === 'items' ||\n\t\t\t\tname === 'container' ||\n\t\t\t\tname === 'constrain' ||\n\t\t\t\tname === 'targetRef' ||\n\t\t\t\tname === 'position' ||\n\t\t\t\tname === 'offset' ||\n\t\t\t\tname === 'opened'\n\t\t\t) {\n\t\t\t\tconst firstOpen = name === 'opened';\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'PRIVATE#REFIT',\n\t\t\t\t\t\tpayload: {firstOpen},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_RENDERED]: ({state, host, updateState}) => {\n\t\t\t// TODO-SEISMIC-HACK: We want to focus the first item in the panel as the\n\t\t\t// panel becomes opened. The challenge here is that we don't know exactly\n\t\t\t// when the updateState that includes the fit changes has finished\n\t\t\t// rendering. The fit state update sets this `firstOpen` state that we\n\t\t\t// can immediately reset here so that we don't try to focus on every\n\t\t\t// render.\n\t\t\tif (state.firstOpen) {\n\t\t\t\tfocusOnOpen(host);\n\t\t\t\tupdateState({\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: 'firstOpen',\n\t\t\t\t\tvalue: false,\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t'PRIVATE#REFIT': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action, state, properties, updateState, host}) => {\n\t\t\t\tconst {\n\t\t\t\t\ttargetRef: target,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tconstrain,\n\t\t\t\t\tposition,\n\t\t\t\t\toffset,\n\t\t\t\t\topened,\n\t\t\t\t} = properties;\n\n\t\t\t\tconst content = getContentEl(host);\n\t\t\t\tconst panelOpened = Boolean(opened && target);\n\t\t\t\tconst fitStyle = panelOpened\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...getBestFitInfo({\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\t\tcontainer,\n\t\t\t\t\t\t\t\tposition,\n\t\t\t\t\t\t\t\toffset: Array.isArray(offset)\n\t\t\t\t\t\t\t\t\t? offset\n\t\t\t\t\t\t\t\t\t: [0, 0, offset, offset, offset, offset],\n\t\t\t\t\t\t\t\tconstrain,\n\t\t\t\t\t\t\t\tcanScrollVertical: true,\n\t\t\t\t\t\t\t}).style,\n\t\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t\t}\n\t\t\t\t\t: {};\n\t\t\t\tif (!isEqual(fitStyle, state.fitStyle)) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tfitStyle,\n\t\t\t\t\t\tfirstOpen: action.payload.firstOpen,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tview,\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user opens or closes the panel. The payload contains\n\t\t * a boolean of `true` when the dropdown is open or `false` when it is\n\t\t * closed. Set the `manage-opened` property to override\n\t\t * the default behavior and handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t */\n\t\t'NOW_DROPDOWN_PANEL#OPENED_SET': {},\n\t\t/**\n\t\t * Dispatched when the user changes the selection of items in the dropdown panel.\n\t\t * The payload key `value` contains an array containing either a single ID (`select=\"single\"`)\n\t\t * or multiple IDs (`select=\"multi\"`) of the selected item(s).\n\t\t * The payload key `items` contains an array of objects of the item or items selected from the dropdown list.\n\t\t * Set the `manage-selected-items` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: Array.<(string|number)>, items: Array.<Object>}}\n\t\t */\n\t\t'NOW_DROPDOWN_PANEL#SELECTED_ITEMS_SET': {},\n\t\t/**\n\t\t * Dispatched when the user selects a dropdown item. The payload contains\n\t\t * a reference to the clicked item. Handle this action for dropdown menus\n\t\t * (where `select=\"none\"`).\n\t\t * @type {{item: DropdownItem}}\n\t\t */\n\t\t'NOW_DROPDOWN_PANEL#ITEM_CLICKED': {},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport deferBehavior from '@servicenow/behavior-defer';\nimport {makeRedispatchEffect} from '@servicenow/library-enhanced-utils';\nimport '@servicenow/now-popover';\nimport './now-dropdown-list';\nimport {itemsSchema, itemSchema} from './schemas/dropdown-list-schema';\nimport {constrainSchema} from '@servicenow/behavior-fit';\nimport {pick} from 'lodash';\nimport {setActiveItem, getDropdownListConstrain} from './utils/helpers.js';\nimport {configAriaSchema} from '@servicenow/library-schemas';\n\nconst assignedElements = (slot) =>\n\t[...slot.assignedNodes({flatten: true})].filter(\n\t\t(node) => node.nodeType === Element.ELEMENT_NODE,\n\t);\n\nconst view = (state, {updateState}) => {\n\tconst {targetRef, activeItem} = state;\n\tconst {\n\t\titems,\n\t\tselectedItems,\n\t\tselect,\n\t\topened,\n\t\tpanelFitProps,\n\t\tsearch,\n\t\tconfigAria,\n\t} = state.properties;\n\n\tconst constrain = {\n\t\tminHeight: 32,\n\t\tminWidth: 'target',\n\t\tmaxWidth: 400,\n\t\tmaxHeight: 300,\n\t\t...panelFitProps.constrain,\n\t};\n\n\treturn (\n\t\t<now-popover\n\t\t\tbare\n\t\t\tconstrain={pick(constrain, ['width', 'minWidth', 'maxWidth'])}\n\t\t\tpositions={panelFitProps.position}\n\t\t\toffset={panelFitProps.offset}\n\t\t\tmanage-opened\n\t\t\topened={opened}\n\t\t\tposition-target={targetRef}\n\t\t\tinteraction-type=\"listbox\"\n\t\t\tdisable-scroll\n\t\t>\n\t\t\t<slot\n\t\t\t\tclassName=\"now-dropdown-custom-target-slot\"\n\t\t\t\tname=\"trigger\"\n\t\t\t\tslot=\"trigger\"\n\t\t\t\ton-slotchange={(e) => {\n\t\t\t\t\tif (e.target !== e.currentTarget) {\n\t\t\t\t\t\treturn; // ignore bubbling slotchange\n\t\t\t\t\t}\n\t\t\t\t\tconst elements = assignedElements(e.target);\n\t\t\t\t\tconst targetRef = elements[0] || null;\n\t\t\t\t\tupdateState({targetRef});\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<now-dropdown-list\n\t\t\t\tslot=\"content\"\n\t\t\t\tstyle={getDropdownListConstrain(constrain)}\n\t\t\t\titems={items}\n\t\t\t\tselected-items={selectedItems}\n\t\t\t\tselect={select}\n\t\t\t\tsearch={search}\n\t\t\t\tactive-item={activeItem}\n\t\t\t\tmanage-active-item\n\t\t\t\tmanage-selected-items\n\t\t\t\tconfig-aria={configAria}\n\t\t\t/>\n\t\t</now-popover>\n\t);\n};\n\n/**\n * A dropdown with a custom target is very similar to a standard dropdown.\n * However, the trigger element (the element which toggles the panel\n * visibility) is provided via a slot, allowing more control of the overall\n * appearance.\n *\n * ```jsx\n * const dropdownItems = [{id: 'item1', label: 'Option 1'}, {id: 'item2', label: 'Option 2'}];\n *\n * <now-dropdown-custom-target items={dropdownItems}>\n *   <now-avatar user-name=\"Fred Luddy\" slot=\"trigger\" />\n * </now-dropdown-custom-target>\n * ```\n *\n * @seismicElement now-dropdown-custom-target\n * @summary A dropdown that allows user to select one or more values and\n * control the element that is responsible for opening and closing the panel.\n **/\ncreateEnhancedElement('now-dropdown-custom-target', {\n\tinitialState: {\n\t\ttargetRef: null,\n\t},\n\tproperties: {\n\t\t/**\n\t\t * By default, the component will listen for click & key events on the\n\t\t * element in the `trigger` slot to cause the dropdown panel to open,\n\t\t * and will restore focus to the `trigger` element when the panel is\n\t\t * closed (on selection or press of the `Escape` key). Set this flag\n\t\t * to override the default behavior and respond to user interactions\n\t\t * manually instead.\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableListeners: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An array of item objects describing each item in the dropdown.\n\t\t * Each object must have a unique id and label.\n\t\t * Items with `disabled` will be visible but not selectable by the user.\n\t\t * @type {(Array.<DropdownItem> | Array.<DropdownSection>)}\n\t\t */\n\t\titems: {\n\t\t\trequired: true,\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * An array of ids representing each selected item. If multi-select mode is\n\t\t * not enabled, each time the user selects an item, the previously selected\n\t\t * id will be cleared out and the new id will be added. If multi-select mode is\n\t\t * enabled, ids will be added to or removed from the list.\n\t\t * Use `manage-selected-items` to override the default behavior and handle the\n\t\t * `NOW_DROPDOWN#SELECTED_ITEMS_SET` action manually.\n\t\t * @type {Array.<(string|number)>}\n\t\t */\n\t\tselectedItems: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'array', items: {type: ['string', 'number']}},\n\t\t},\n\t\t/**\n\t\t * Determines what happens when the user clicks on a dropdown item.\n\t\t * Choose from the following:\n\t\t * - \"single\" (default) - the panel is closed, the trigger label is updated,\n\t\t *   and the item is marked as selected\n\t\t * - \"multi\" - the panel stays open, the trigger label is updated, and the\n\t\t *   item's selected state is toggled on/off\n\t\t * - \"none\" - the panel is closed, the trigger label is not updated, the\n\t\t *   item is not marked as selected\n\t\t * For select \"single\"/\"multi\" handle the `NOW_DROPDOWN#SELECTED_ITEMS_SET`\n\t\t * action. For select \"none\" handle the `NOW_DROPDOWN#ITEM_CLICKED` action.\n\t\t * @type {(\"single\"|\"multi\"|\"none\")}\n\t\t */\n\t\tselect: {\n\t\t\tdefault: 'single',\n\t\t\tschema: {type: 'string', enum: ['single', 'multi', 'none']},\n\t\t},\n\t\t/**\n\t\t * Automatically updated when the user opens or closes the dropdown.\n\t\t * Use `manage-opened` to override the default behavior and handle the\n\t\t * `NOW_DROPDOWN#OPENED_SET` action manually.\n\t\t * @type {boolean}\n\t\t */\n\t\topened: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Properties to configure the dropdown panel.\n\t\t *\n\t\t * Valid keys are:\n\t\t *\t- position,\n\t\t *\t- offset\n\t\t *\t- container\n\t\t *\t- constrain\n\t\t *\n\t\t * Each of these keys are used to control how the panel is positioned and\n\t\t * scaled relative to the dropdown target.\n\t\t *\n\t\t * @type {{ position: Array<string>, offset: number, container: HTMLElement, constrain: object }}\n\t\t */\n\t\tpanelFitProps: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tposition: {type: 'array', items: {type: 'string'}},\n\t\t\t\t\toffset: {\n\t\t\t\t\t\toneOf: [{type: 'number'}, {type: 'array', items: {type: 'number'}}],\n\t\t\t\t\t},\n\t\t\t\t\tcontainer: {type: 'object'},\n\t\t\t\t\tconstrain: constrainSchema,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Controls how to filter the items as the user types into the integrated search input.\n\t\t * - \"none\": (default) dropdown list does not display an internal search field.\n\t\t * - \"managed\": internal input field is rendered, but no automatic filtering will happen.\n\t\t * Use this if you want to manually filter or search for items as the user types outside of the list.\n\t\t * - \"initial\": internal input field is rendered, and items whose label\n\t\t * or sublabel begins with the input value will be displayed. This is case-insensitive.\n\t\t * - \"contains\": internal input field is rendered, and items whose label\n\t\t * or sublabel contains the input value will be displayed. This is case-insensitive.\n\t\t * @type {(\"none\"|\"managed\"|\"initial\"|\"contains\")}\n\t\t * @uib.label Search Behavior\n\t\t * @uib.description Controls how to filter the items as the user types into the integrated search input\n\t\t */\n\t\tsearch: {\n\t\t\tdefault: 'none',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['none', 'managed', 'initial', 'contains'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-dropdown-custom-target. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties will be set on the specified element.\n\t\t * The 'panel' key corresponds to the inner html `<div>` that acts as the\n\t\t * 'listbox'. See https://www.w3.org/TR/wai-aria-1.2/#listbox for properties\n\t\t * and accepted values.\n\t\t * @type {{ panel: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA Properties\n\t\t * @uib.description Sets ARIA properties on the inner div with role 'listbox'.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tpanel: configAriaSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the dropdown menu is opened or closed. Payload will contain\n\t\t * a boolean of `true` when the dropdown is opened or `false` when the dropdown is closed.\n\t\t * Set the `manage-opened` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t */\n\t\t'NOW_DROPDOWN_CUSTOM_TARGET#OPENED_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the dropdown menu opens and renders the content. Unlike\n\t\t * `NOW_DROPDOWN_CUSTOM_TARGET#OPENED_SET`, this action only fires after the dropdown\n\t\t * menu is rendered in the DOM. The `content` property is a node list containing the\n\t\t * dropdown's inner `now-dropdown-list` element.\n\t\t * @type {{content: NodeList}}\n\t\t * @uib.description Dispatched when the dropdown menu is fully rendered to the DOM.\n\t\t */\n\t\t'NOW_DROPDOWN_CUSTOM_TARGET#LIST_VISIBLE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcontent: {type: 'array'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the dropdown menu has been closed and removed. Unlike\n\t\t * `NOW_DROPDOWN_CUSTOM_TARGET#OPENED_SET`, this action only fires after the dropdown\n\t\t * menu is fully removed from the DOM.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the dropdown menu is fully removed from the DOM.\n\t\t */\n\t\t'NOW_DROPDOWN_CUSTOM_TARGET#LIST_HIDDEN': {schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched when the user changes the selection of items in the dropdown panel.\n\t\t * Payload key `value` will contain an array containing either a single ID (for `select=\"single\"`) or\n\t\t * multiple IDs (for `select=\"multi\"`) of the selected item(s).\n\t\t * Payload key `items` contains an array of objects of the item or items selected from the dropdown list.\n\t\t * Set the `manage-selected-items` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: Array.<(string|number)>, items: Array.<Object>}}\n\t\t */\n\t\t'NOW_DROPDOWN_CUSTOM_TARGET#SELECTED_ITEMS_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: ['string', 'number'],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user clicks on a dropdown item. Payload will contain\n\t\t * a reference to the clicked item. Handle this action for dropdown menus (where `select=\"none\"`).\n\t\t * @type {{item: Object}}\n\t\t */\n\t\t'NOW_DROPDOWN_CUSTOM_TARGET#ITEM_CLICKED': {\n\t\t\tschema: itemSchema,\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content placed in this named slot will act as the trigger element for\n\t\t * the `now-dropdown-custom-target` component. The dropdown panel will\n\t\t * be positioned relative to the first child element of the slot. Clicks\n\t\t * and keyboard interaction with the slot and its content will be\n\t\t * handled automatically unless the `disableListeners` property is set.\n\t\t */\n\t\ttrigger: {},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect: ({action, properties, updateState, dispatch, state}) => {\n\t\t\t\tif (properties.disableListeners) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst {event} = action.payload;\n\t\t\t\tconst openKeys = properties.opened\n\t\t\t\t\t? ['ArrowUp', 'ArrowDown', 'Enter', 'Tab']\n\t\t\t\t\t: ['ArrowUp', 'ArrowDown', 'Enter', ' '];\n\t\t\t\tif (openKeys.includes(event.key)) {\n\t\t\t\t\tconst {targetRef} = state;\n\t\t\t\t\tconst {items, selectedItems} = properties;\n\t\t\t\t\tsetActiveItem(items, selectedItems, updateState);\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_DROPDOWN_CUSTOM_TARGET#OPENED_SET',\n\t\t\t\t\t\t\tpayload: {value: !properties.opened},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t\ttargetRef.focus();\n\t\t\t\t\taction.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t'NOW_POPOVER#OPENED_SET': ({\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t\tstate,\n\t\t}) => {\n\t\t\tconst {value, actionSource} = action.payload;\n\t\t\tconst {disabled, items, selectedItems, disableListeners} = properties;\n\t\t\tconst {targetRef} = state;\n\t\t\tif (disabled || disableListeners) return;\n\t\t\tif (value) {\n\t\t\t\tsetActiveItem(items, selectedItems, updateState);\n\t\t\t}\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DROPDOWN_CUSTOM_TARGET#OPENED_SET',\n\t\t\t\t\tpayload: action.payload,\n\t\t\t\t};\n\t\t\t});\n\t\t\tif (!value && actionSource === 'escape-press') targetRef.focus();\n\t\t},\n\t\t'NOW_POPOVER#CONTENT_VISIBLE': (coeffects) => {\n\t\t\tconst {host} = coeffects;\n\t\t\tconst dropdownList = host.shadowRoot.querySelector('now-dropdown-list');\n\t\t\tdropdownList.focus();\n\t\t\tmakeRedispatchEffect('NOW_DROPDOWN_CUSTOM_TARGET#LIST_VISIBLE')(\n\t\t\t\tcoeffects,\n\t\t\t);\n\t\t},\n\t\t'NOW_POPOVER#CONTENT_HIDDEN': makeRedispatchEffect(\n\t\t\t'NOW_DROPDOWN_CUSTOM_TARGET#LIST_HIDDEN',\n\t\t),\n\t\t'NOW_DROPDOWN_LIST#SELECTED_ITEMS_SET': makeRedispatchEffect(\n\t\t\t'NOW_DROPDOWN_CUSTOM_TARGET#SELECTED_ITEMS_SET',\n\t\t),\n\t\t'NOW_DROPDOWN_LIST#ITEM_CLICKED': ({dispatch, action, state}) => {\n\t\t\tconst {targetRef} = state;\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst {select} = properties;\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DROPDOWN_CUSTOM_TARGET#OPENED_SET',\n\t\t\t\t\tpayload: {value: false},\n\t\t\t\t\tshouldDispatch: select !== 'multi',\n\t\t\t\t};\n\t\t\t});\n\t\t\tdispatch(() => ({\n\t\t\t\ttype: 'NOW_DROPDOWN_CUSTOM_TARGET#ITEM_CLICKED',\n\t\t\t\tpayload: {item: action.payload.item},\n\t\t\t}));\n\t\t\ttargetRef.focus();\n\t\t},\n\t\t'NOW_DROPDOWN_LIST#ACTIVE_ITEM_SET': ({action, updateState}) => {\n\t\t\tconst activeItem = action.payload.value;\n\t\t\tupdateState({activeItem});\n\t\t},\n\t},\n\tbehaviors: [\n\t\tfocusBehavior,\n\t\t{\n\t\t\tbehavior: deferBehavior,\n\t\t\toptions: {\n\t\t\t\tevents: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'mouseenter',\n\t\t\t\t\t\ttrigger: 'now-popover',\n\t\t\t\t\t\ttarget: 'now-dropdown-list',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t],\n\tview,\n});\n","import './now-dropdown';\nimport './now-dropdown-list';\nimport './now-dropdown-panel';\nimport './now-dropdown-custom-target';\nimport * as info from '../package.json';\nconst {name, version} = info;\n\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nexport {\n\titemSchema,\n\titemsSchema,\n\tconstrainSchema,\n} from './schemas/dropdown-list-schema';\nexport {getItemForKeypress, updateActiveDescendant} from './utils/focus';\nexport {setActiveItem} from './utils/helpers';\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {extensionSplit} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-heading.scss';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\n\nconst view = (state) => {\n\tconst {label, level, variant, wontWrap, hasNoMargin, align} =\n\t\tstate.properties;\n\tconst HeadingLevel = `h${level}`;\n\treturn (\n\t\t<HeadingLevel\n\t\t\tclass={{\n\t\t\t\t'now-heading': true,\n\t\t\t\t...extensionSplit(variant),\n\t\t\t\t['-' + align]: align,\n\t\t\t\t'has-no-margin': hasNoMargin,\n\t\t\t\t'wont-wrap': wontWrap,\n\t\t\t}}\n\t\t\tdata-truncation\n\t\t>\n\t\t\t{label}\n\t\t</HeadingLevel>\n\t);\n};\n\n/**\n * Use a heading to communicate the hierarchy of content on your page. Set heading\n * levels according to the logical structure of the document, then apply\n * visual styles separately. Visually styling headers according\n * to the structure of your page also improves the readability and scannability\n * of your design.\n *\n * ```jsx\n * <now-heading label=\"Default\" />\n *\n * <now-heading label=\"Header Primary\" level={1} variant=\"header-primary\" />\n *\n * <now-heading label=\"Header Tertiary\" level={3} variant=\"header-tertiary\" wont-wrap />\n * ```\n *\n * @seismicElement now-heading\n * @summary Text that provides a short summary of content, styled to indicate the hierarchy of content on a page.\n * @uib.label Heading\n * @uib.icon heading\n * @uib.description Displays heading text in multiple sizes\n * @uib.category primitives\n * @uib.associatedTypes global.core, global.dashboard, global.landing-page\n * @uib.properties variant, label, wontWrap, hasNoMargin, level, align\n * @uib.parMetadata {\"useDashboardHeader\": true}\n */\ncreateEnhancedElement('now-heading', {\n\tproperties: {\n\t\t/**\n\t\t * Defines the textual content rendered by the header.\n\t\t * @type {string}\n\t\t * @uib.required\n\t\t * @uib.description Text for the heading\n\t\t * @uib.defaultValue We make work, work better for people with modern digital workflows\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Defines the HTML <hx> heading element used to render the label.\n\t\t * @type {(1|2|3|4|5|6)}\n\t\t * @uib.description Defines the HTML <hx> heading element used to render the label\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"1\",\"value\": \"1\"},{\"label\": \"2\",\"value\": \"2\"},{\"label\": \"3\",\"value\": \"3\"},{\"label\": \"4\",\"value\": \"4\"},{\"label\": \"5\",\"value\": \"5\"},{\"label\": \"6\",\"value\": \"6\"}]\n\t\t */\n\t\tlevel: {\n\t\t\tdefault: 1,\n\t\t\tschema: {type: 'number', enum: [1, 2, 3, 4, 5, 6]},\n\t\t},\n\t\t/**\n\t\t * Defines the styles used to render the heading.\n\t\t * @type {('header-hero'|'header-primary'|'header-secondary'|'header-tertiary'|'title-primary'|'title-secondary'|'title-tertiary')}\n\t\t * @uib.label Style\n\t\t * @uib.description Text style\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'header-primary',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'header-hero',\n\t\t\t\t\t'header-primary',\n\t\t\t\t\t'header-secondary',\n\t\t\t\t\t'header-tertiary',\n\t\t\t\t\t'title-primary',\n\t\t\t\t\t'title-secondary',\n\t\t\t\t\t'title-tertiary',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Set to true if the heading should have no block end margin.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide bottom margin\n\t\t * @uib.description Hides the extra space on the bottom of the text\n\t\t */\n\t\thasNoMargin: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set to true if the heading label should not wrap. Label text is\n\t\t * truncated if it does not fit in the available space. The full label is\n\t\t * rendered in a title attribute.\n\t\t * @type {boolean}\n\t\t * @uib.label Disable text wrap\n\t\t * @uib.description Truncates the text with an ellipsis if it does not fit on one line\n\t\t */\n\t\twontWrap: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Defines the aligmnent of the heading.\n\t\t * @type {('start'|'center'|'end'|'justify')}\n\t\t * @uib.label Align\n\t\t * @uib.description Align heading\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Start\", \"value\": \"start\"}, {\"label\": \"Center\", \"value\": \"center\"}, {\"label\": \"End\", \"value\": \"end\"}, {\"label\": \"Justify\", \"value\": \"justify\"}]\n\t\t */\n\t\talign: {\n\t\t\tdefault: 'start',\n\t\t\tschema: {type: 'string', enum: ['start', 'center', 'end', 'justify']},\n\t\t},\n\t},\n\tview,\n\tbehaviors: [truncationBehavior, tooltipBehavior],\n\tstyles,\n});\n","import './now-heading.js';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import importIconSetAsESM from './import-icon-set';\nimport {dangerouslyCreateElementFromString} from '@servicenow/ui-renderer-snabbdom';\nimport DOMPurify from 'dompurify';\nimport {domPurifyConfig} from '@servicenow/library-enhanced-utils';\n\nexport const cache = new Map();\nconst NOW_ICON_CACHE_NAME = 'now-icon-cache';\n\nfunction initCache() {\n\ttry {\n\t\tconst cacheString = localStorage.getItem(NOW_ICON_CACHE_NAME);\n\t\tif (!cacheString) {\n\t\t\tlocalStorage.setItem(NOW_ICON_CACHE_NAME, '{}');\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst localStorageCache = JSON.parse(cacheString);\n\t\t\t\tfor (let key of Object.keys(localStorageCache)) {\n\t\t\t\t\tconst iconResult = JSON.parse(localStorageCache[key]);\n\t\t\t\t\tconst icon = iconResult.isPathFragment ? (\n\t\t\t\t\t\t<path attr-d={iconResult.data} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\tdangerouslyCreateElementFromString(\n\t\t\t\t\t\t\tDOMPurify.sanitize(\n\t\t\t\t\t\t\t\t`<svg>${iconResult.data}</svg>`,\n\t\t\t\t\t\t\t\tdomPurifyConfig,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t).children\n\t\t\t\t\t);\n\n\t\t\t\t\tconst result = {\n\t\t\t\t\t\ticon,\n\t\t\t\t\t\tpixelSize: iconResult.pixelSize,\n\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\tisLoaded: true,\n\t\t\t\t\t};\n\t\t\t\t\tcache.set(key, result);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlocalStorage.setItem(NOW_ICON_CACHE_NAME, '{}');\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\t// swallow the exception, as the icons will still show up.\n\t}\n}\n\ninitCache();\n\nconst assetLoadQueue = {};\n\nexport const queueAssetLoad = (key) => {\n\treturn new Promise((resolve) => {\n\t\tassetLoadQueue[key] = assetLoadQueue[key] || [];\n\t\tassetLoadQueue[key].push(resolve);\n\t});\n};\n\nexport const emptyAssetLoadQueue = (key) => {\n\tif (assetLoadQueue[key]?.length) {\n\t\tfor (let i = assetLoadQueue[key].length - 1; i >= 0; i--) {\n\t\t\tassetLoadQueue[key][i]();\n\t\t\tassetLoadQueue[key].pop();\n\t\t}\n\t}\n};\n\nexport async function importIconSet(name) {\n\treturn (await importIconSetAsESM(name)).default;\n}\n","export default async function importIconSet(name) {\n\tswitch (name) {\n\t\tcase 'abc':\n\t\t\treturn await import('../icons/abc');\n\t\tcase 'accessibility':\n\t\t\treturn await import('../icons/accessibility');\n\t\tcase 'actionAiSparkle':\n\t\t\treturn await import('../icons/actionAiSparkle');\n\t\tcase 'action':\n\t\t\treturn await import('../icons/action');\n\t\tcase 'activity':\n\t\t\treturn await import('../icons/activity');\n\t\tcase 'addItemAbove':\n\t\t\treturn await import('../icons/addItemAbove');\n\t\tcase 'addItemBelow':\n\t\t\treturn await import('../icons/addItemBelow');\n\t\tcase 'addItemLeft':\n\t\t\treturn await import('../icons/addItemLeft');\n\t\tcase 'addItemRight':\n\t\t\treturn await import('../icons/addItemRight');\n\t\tcase 'addressBook':\n\t\t\treturn await import('../icons/addressBook');\n\t\tcase 'addressCard':\n\t\t\treturn await import('../icons/addressCard');\n\t\tcase 'agile':\n\t\t\treturn await import('../icons/agile');\n\t\tcase 'aiSparkle':\n\t\t\treturn await import('../icons/aiSparkle');\n\t\tcase 'alignCenter':\n\t\t\treturn await import('../icons/alignCenter');\n\t\tcase 'alignLeft':\n\t\t\treturn await import('../icons/alignLeft');\n\t\tcase 'alignRight':\n\t\t\treturn await import('../icons/alignRight');\n\t\tcase 'analyticsCenter':\n\t\t\treturn await import('../icons/analyticsCenter');\n\t\tcase 'anchor':\n\t\t\treturn await import('../icons/anchor');\n\t\tcase 'appsee':\n\t\t\treturn await import('../icons/appsee');\n\t\tcase 'arena':\n\t\t\treturn await import('../icons/arena');\n\t\tcase 'arrowClockwise':\n\t\t\treturn await import('../icons/arrowClockwise');\n\t\tcase 'arrowCounterclockwise':\n\t\t\treturn await import('../icons/arrowCounterclockwise');\n\t\tcase 'arrowDownDot':\n\t\t\treturn await import('../icons/arrowDownDot');\n\t\tcase 'arrowDown':\n\t\t\treturn await import('../icons/arrowDown');\n\t\tcase 'arrowDownLeft':\n\t\t\treturn await import('../icons/arrowDownLeft');\n\t\tcase 'arrowDownMost':\n\t\t\treturn await import('../icons/arrowDownMost');\n\t\tcase 'arrowDownRectangle':\n\t\t\treturn await import('../icons/arrowDownRectangle');\n\t\tcase 'arrowDownRight':\n\t\t\treturn await import('../icons/arrowDownRight');\n\t\tcase 'arrowEnter':\n\t\t\treturn await import('../icons/arrowEnter');\n\t\tcase 'arrowExit':\n\t\t\treturn await import('../icons/arrowExit');\n\t\tcase 'arrowLeft':\n\t\t\treturn await import('../icons/arrowLeft');\n\t\tcase 'arrowLeftMost':\n\t\t\treturn await import('../icons/arrowLeftMost');\n\t\tcase 'arrowMove':\n\t\t\treturn await import('../icons/arrowMove');\n\t\tcase 'arrowReorder':\n\t\t\treturn await import('../icons/arrowReorder');\n\t\tcase 'arrowRight':\n\t\t\treturn await import('../icons/arrowRight');\n\t\tcase 'arrowRightLeft':\n\t\t\treturn await import('../icons/arrowRightLeft');\n\t\tcase 'arrowRightMost':\n\t\t\treturn await import('../icons/arrowRightMost');\n\t\tcase 'arrowThreeSplitLeft':\n\t\t\treturn await import('../icons/arrowThreeSplitLeft');\n\t\tcase 'arrowThreeSplitRight':\n\t\t\treturn await import('../icons/arrowThreeSplitRight');\n\t\tcase 'arrowUpDot':\n\t\t\treturn await import('../icons/arrowUpDot');\n\t\tcase 'arrowUpDown':\n\t\t\treturn await import('../icons/arrowUpDown');\n\t\tcase 'arrowUp':\n\t\t\treturn await import('../icons/arrowUp');\n\t\tcase 'arrowUpLeft':\n\t\t\treturn await import('../icons/arrowUpLeft');\n\t\tcase 'arrowUpMost':\n\t\t\treturn await import('../icons/arrowUpMost');\n\t\tcase 'arrowUpRight':\n\t\t\treturn await import('../icons/arrowUpRight');\n\t\tcase 'arrowsDecision':\n\t\t\treturn await import('../icons/arrowsDecision');\n\t\tcase 'arrowsDoubleLeft':\n\t\t\treturn await import('../icons/arrowsDoubleLeft');\n\t\tcase 'arrowsDoubleRight':\n\t\t\treturn await import('../icons/arrowsDoubleRight');\n\t\tcase 'asterisk':\n\t\t\treturn await import('../icons/asterisk');\n\t\tcase 'bag':\n\t\t\treturn await import('../icons/bag');\n\t\tcase 'ban':\n\t\t\treturn await import('../icons/ban');\n\t\tcase 'barcode':\n\t\t\treturn await import('../icons/barcode');\n\t\tcase 'beaker':\n\t\t\treturn await import('../icons/beaker');\n\t\tcase 'bell':\n\t\t\treturn await import('../icons/bell');\n\t\tcase 'bellSlash':\n\t\t\treturn await import('../icons/bellSlash');\n\t\tcase 'bind':\n\t\t\treturn await import('../icons/bind');\n\t\tcase 'binoculars':\n\t\t\treturn await import('../icons/binoculars');\n\t\tcase 'boardFlexible':\n\t\t\treturn await import('../icons/boardFlexible');\n\t\tcase 'boardGuided':\n\t\t\treturn await import('../icons/boardGuided');\n\t\tcase 'book':\n\t\t\treturn await import('../icons/book');\n\t\tcase 'bookOpen':\n\t\t\treturn await import('../icons/bookOpen');\n\t\tcase 'bookmark':\n\t\t\treturn await import('../icons/bookmark');\n\t\tcase 'bot':\n\t\t\treturn await import('../icons/bot');\n\t\tcase 'box':\n\t\t\treturn await import('../icons/box');\n\t\tcase 'boxes':\n\t\t\treturn await import('../icons/boxes');\n\t\tcase 'bracketRound':\n\t\t\treturn await import('../icons/bracketRound');\n\t\tcase 'branchCompare':\n\t\t\treturn await import('../icons/branchCompare');\n\t\tcase 'branchFork':\n\t\t\treturn await import('../icons/branchFork');\n\t\tcase 'briefcase':\n\t\t\treturn await import('../icons/briefcase');\n\t\tcase 'broadcastTower':\n\t\t\treturn await import('../icons/broadcastTower');\n\t\tcase 'bug':\n\t\t\treturn await import('../icons/bug');\n\t\tcase 'bugSearch':\n\t\t\treturn await import('../icons/bugSearch');\n\t\tcase 'buildingFactory':\n\t\t\treturn await import('../icons/buildingFactory');\n\t\tcase 'buildingFeed':\n\t\t\treturn await import('../icons/buildingFeed');\n\t\tcase 'building':\n\t\t\treturn await import('../icons/building');\n\t\tcase 'buildingWarehouse':\n\t\t\treturn await import('../icons/buildingWarehouse');\n\t\tcase 'buildingWarehouseTruck':\n\t\t\treturn await import('../icons/buildingWarehouseTruck');\n\t\tcase 'bullseyeArrow':\n\t\t\treturn await import('../icons/bullseyeArrow');\n\t\tcase 'bundle':\n\t\t\treturn await import('../icons/bundle');\n\t\tcase 'calendarCheck':\n\t\t\treturn await import('../icons/calendarCheck');\n\t\tcase 'calendarClock':\n\t\t\treturn await import('../icons/calendarClock');\n\t\tcase 'calendarDaysClock':\n\t\t\treturn await import('../icons/calendarDaysClock');\n\t\tcase 'calendarDays':\n\t\t\treturn await import('../icons/calendarDays');\n\t\tcase 'calendarDaysSearch':\n\t\t\treturn await import('../icons/calendarDaysSearch');\n\t\tcase 'calendar':\n\t\t\treturn await import('../icons/calendar');\n\t\tcase 'calendarTriangleExclamation':\n\t\t\treturn await import('../icons/calendarTriangleExclamation');\n\t\tcase 'camera':\n\t\t\treturn await import('../icons/camera');\n\t\tcase 'cameraPlus':\n\t\t\treturn await import('../icons/cameraPlus');\n\t\tcase 'caretDown':\n\t\t\treturn await import('../icons/caretDown');\n\t\tcase 'caretDownMultiple':\n\t\t\treturn await import('../icons/caretDownMultiple');\n\t\tcase 'caretLeft':\n\t\t\treturn await import('../icons/caretLeft');\n\t\tcase 'caretLeftMultiple':\n\t\t\treturn await import('../icons/caretLeftMultiple');\n\t\tcase 'caretRight':\n\t\t\treturn await import('../icons/caretRight');\n\t\tcase 'caretRightMultiple':\n\t\t\treturn await import('../icons/caretRightMultiple');\n\t\tcase 'caretUpDown':\n\t\t\treturn await import('../icons/caretUpDown');\n\t\tcase 'caretUp':\n\t\t\treturn await import('../icons/caretUp');\n\t\tcase 'catalogBuilder':\n\t\t\treturn await import('../icons/catalogBuilder');\n\t\tcase 'catalog':\n\t\t\treturn await import('../icons/catalog');\n\t\tcase 'catalogSlash':\n\t\t\treturn await import('../icons/catalogSlash');\n\t\tcase 'cd':\n\t\t\treturn await import('../icons/cd');\n\t\tcase 'cellphone':\n\t\t\treturn await import('../icons/cellphone');\n\t\tcase 'change':\n\t\t\treturn await import('../icons/change');\n\t\tcase 'changePast':\n\t\t\treturn await import('../icons/changePast');\n\t\tcase 'changePlanned':\n\t\t\treturn await import('../icons/changePlanned');\n\t\tcase 'chartArea':\n\t\t\treturn await import('../icons/chartArea');\n\t\tcase 'chartBarColumn':\n\t\t\treturn await import('../icons/chartBarColumn');\n\t\tcase 'chartBarGroup':\n\t\t\treturn await import('../icons/chartBarGroup');\n\t\tcase 'chartBarHorizontal':\n\t\t\treturn await import('../icons/chartBarHorizontal');\n\t\tcase 'chartBarSearch':\n\t\t\treturn await import('../icons/chartBarSearch');\n\t\tcase 'chartBarVerticalCircleCheck':\n\t\t\treturn await import('../icons/chartBarVerticalCircleCheck');\n\t\tcase 'chartBarVertical':\n\t\t\treturn await import('../icons/chartBarVertical');\n\t\tcase 'chartBox':\n\t\t\treturn await import('../icons/chartBox');\n\t\tcase 'chartBubble':\n\t\t\treturn await import('../icons/chartBubble');\n\t\tcase 'chartBulletHorizontal':\n\t\t\treturn await import('../icons/chartBulletHorizontal');\n\t\tcase 'chartBulletVertical':\n\t\t\treturn await import('../icons/chartBulletVertical');\n\t\tcase 'chartColumnAndTotal':\n\t\t\treturn await import('../icons/chartColumnAndTotal');\n\t\tcase 'chartControl':\n\t\t\treturn await import('../icons/chartControl');\n\t\tcase 'chartDependency':\n\t\t\treturn await import('../icons/chartDependency');\n\t\tcase 'chartDial':\n\t\t\treturn await import('../icons/chartDial');\n\t\tcase 'chartDonut':\n\t\t\treturn await import('../icons/chartDonut');\n\t\tcase 'chartForecast':\n\t\t\treturn await import('../icons/chartForecast');\n\t\tcase 'chartFunnel':\n\t\t\treturn await import('../icons/chartFunnel');\n\t\tcase 'chartGeomap':\n\t\t\treturn await import('../icons/chartGeomap');\n\t\tcase 'chartHeatmap':\n\t\t\treturn await import('../icons/chartHeatmap');\n\t\tcase 'chartHistogram':\n\t\t\treturn await import('../icons/chartHistogram');\n\t\tcase 'chartLine':\n\t\t\treturn await import('../icons/chartLine');\n\t\tcase 'chartNavigator':\n\t\t\treturn await import('../icons/chartNavigator');\n\t\tcase 'chartPareto':\n\t\t\treturn await import('../icons/chartPareto');\n\t\tcase 'chartPie':\n\t\t\treturn await import('../icons/chartPie');\n\t\tcase 'chartPivotTable':\n\t\t\treturn await import('../icons/chartPivotTable');\n\t\tcase 'chartPyramid':\n\t\t\treturn await import('../icons/chartPyramid');\n\t\tcase 'chartRelativeCompare':\n\t\t\treturn await import('../icons/chartRelativeCompare');\n\t\tcase 'chartSankey':\n\t\t\treturn await import('../icons/chartSankey');\n\t\tcase 'chartSemiDonut':\n\t\t\treturn await import('../icons/chartSemiDonut');\n\t\tcase 'chartSpeedometer':\n\t\t\treturn await import('../icons/chartSpeedometer');\n\t\tcase 'chartSpider':\n\t\t\treturn await import('../icons/chartSpider');\n\t\tcase 'chartSpline':\n\t\t\treturn await import('../icons/chartSpline');\n\t\tcase 'chartStepline':\n\t\t\treturn await import('../icons/chartStepline');\n\t\tcase 'chartSunburst':\n\t\t\treturn await import('../icons/chartSunburst');\n\t\tcase 'chartText':\n\t\t\treturn await import('../icons/chartText');\n\t\tcase 'chartThreshold':\n\t\t\treturn await import('../icons/chartThreshold');\n\t\tcase 'chartTreemap':\n\t\t\treturn await import('../icons/chartTreemap');\n\t\tcase 'chartTrend':\n\t\t\treturn await import('../icons/chartTrend');\n\t\tcase 'chartWorkbench':\n\t\t\treturn await import('../icons/chartWorkbench');\n\t\tcase 'chatAiSparkle':\n\t\t\treturn await import('../icons/chatAiSparkle');\n\t\tcase 'chatCircleExclamation':\n\t\t\treturn await import('../icons/chatCircleExclamation');\n\t\tcase 'chat':\n\t\t\treturn await import('../icons/chat');\n\t\tcase 'chatHeart':\n\t\t\treturn await import('../icons/chatHeart');\n\t\tcase 'chatLock':\n\t\t\treturn await import('../icons/chatLock');\n\t\tcase 'chatTriangleExclamation':\n\t\t\treturn await import('../icons/chatTriangleExclamation');\n\t\tcase 'check':\n\t\t\treturn await import('../icons/check');\n\t\tcase 'checkStrong':\n\t\t\treturn await import('../icons/checkStrong');\n\t\tcase 'checkboxChecked':\n\t\t\treturn await import('../icons/checkboxChecked');\n\t\tcase 'checkboxIndeterminate':\n\t\t\treturn await import('../icons/checkboxIndeterminate');\n\t\tcase 'checkboxUnchecked':\n\t\t\treturn await import('../icons/checkboxUnchecked');\n\t\tcase 'checklist':\n\t\t\treturn await import('../icons/checklist');\n\t\tcase 'chevronDown':\n\t\t\treturn await import('../icons/chevronDown');\n\t\tcase 'chevronLeft':\n\t\t\treturn await import('../icons/chevronLeft');\n\t\tcase 'chevronRight':\n\t\t\treturn await import('../icons/chevronRight');\n\t\tcase 'chevronUp':\n\t\t\treturn await import('../icons/chevronUp');\n\t\tcase 'chip':\n\t\t\treturn await import('../icons/chip');\n\t\tcase 'circleArrowDown':\n\t\t\treturn await import('../icons/circleArrowDown');\n\t\tcase 'circleArrowLeft':\n\t\t\treturn await import('../icons/circleArrowLeft');\n\t\tcase 'circleArrowRight':\n\t\t\treturn await import('../icons/circleArrowRight');\n\t\tcase 'circleArrowUp':\n\t\t\treturn await import('../icons/circleArrowUp');\n\t\tcase 'circleBackward':\n\t\t\treturn await import('../icons/circleBackward');\n\t\tcase 'circleCaretDown':\n\t\t\treturn await import('../icons/circleCaretDown');\n\t\tcase 'circleCaretLeft':\n\t\t\treturn await import('../icons/circleCaretLeft');\n\t\tcase 'circleCaretRight':\n\t\t\treturn await import('../icons/circleCaretRight');\n\t\tcase 'circleCaretUp':\n\t\t\treturn await import('../icons/circleCaretUp');\n\t\tcase 'circleCheck':\n\t\t\treturn await import('../icons/circleCheck');\n\t\tcase 'circleChevronDown':\n\t\t\treturn await import('../icons/circleChevronDown');\n\t\tcase 'circleChevronLeft':\n\t\t\treturn await import('../icons/circleChevronLeft');\n\t\tcase 'circleChevronRight':\n\t\t\treturn await import('../icons/circleChevronRight');\n\t\tcase 'circleChevronUp':\n\t\t\treturn await import('../icons/circleChevronUp');\n\t\tcase 'circleClose':\n\t\t\treturn await import('../icons/circleClose');\n\t\tcase 'circleDashed':\n\t\t\treturn await import('../icons/circleDashed');\n\t\tcase 'circleDownload':\n\t\t\treturn await import('../icons/circleDownload');\n\t\tcase 'circleEllipsis':\n\t\t\treturn await import('../icons/circleEllipsis');\n\t\tcase 'circleExclamation':\n\t\t\treturn await import('../icons/circleExclamation');\n\t\tcase 'circle':\n\t\t\treturn await import('../icons/circle');\n\t\tcase 'circleFlagEvent':\n\t\t\treturn await import('../icons/circleFlagEvent');\n\t\tcase 'circleForward':\n\t\t\treturn await import('../icons/circleForward');\n\t\tcase 'circleHalf':\n\t\t\treturn await import('../icons/circleHalf');\n\t\tcase 'circleInfo':\n\t\t\treturn await import('../icons/circleInfo');\n\t\tcase 'circleLock':\n\t\t\treturn await import('../icons/circleLock');\n\t\tcase 'circleMinus':\n\t\t\treturn await import('../icons/circleMinus');\n\t\tcase 'circleMinusVertical':\n\t\t\treturn await import('../icons/circleMinusVertical');\n\t\tcase 'circleNext':\n\t\t\treturn await import('../icons/circleNext');\n\t\tcase 'circlePause':\n\t\t\treturn await import('../icons/circlePause');\n\t\tcase 'circlePencil':\n\t\t\treturn await import('../icons/circlePencil');\n\t\tcase 'circlePlay':\n\t\t\treturn await import('../icons/circlePlay');\n\t\tcase 'circlePlus':\n\t\t\treturn await import('../icons/circlePlus');\n\t\tcase 'circlePrevious':\n\t\t\treturn await import('../icons/circlePrevious');\n\t\tcase 'circleQuarter':\n\t\t\treturn await import('../icons/circleQuarter');\n\t\tcase 'circleQuestion':\n\t\t\treturn await import('../icons/circleQuestion');\n\t\tcase 'circleRecord':\n\t\t\treturn await import('../icons/circleRecord');\n\t\tcase 'circleSemiCheck':\n\t\t\treturn await import('../icons/circleSemiCheck');\n\t\tcase 'circleSemiPercentage':\n\t\t\treturn await import('../icons/circleSemiPercentage');\n\t\tcase 'circleShuffle':\n\t\t\treturn await import('../icons/circleShuffle');\n\t\tcase 'circleStop':\n\t\t\treturn await import('../icons/circleStop');\n\t\tcase 'circleThick':\n\t\t\treturn await import('../icons/circleThick');\n\t\tcase 'circleThreeQuarter':\n\t\t\treturn await import('../icons/circleThreeQuarter');\n\t\tcase 'circleUser':\n\t\t\treturn await import('../icons/circleUser');\n\t\tcase 'circleWorkflowSkip':\n\t\t\treturn await import('../icons/circleWorkflowSkip');\n\t\tcase 'clearCache':\n\t\t\treturn await import('../icons/clearCache');\n\t\tcase 'clipboardCheck':\n\t\t\treturn await import('../icons/clipboardCheck');\n\t\tcase 'clipboardCheckShield':\n\t\t\treturn await import('../icons/clipboardCheckShield');\n\t\tcase 'clipboardExclamation':\n\t\t\treturn await import('../icons/clipboardExclamation');\n\t\tcase 'clipboard':\n\t\t\treturn await import('../icons/clipboard');\n\t\tcase 'clipboardLines':\n\t\t\treturn await import('../icons/clipboardLines');\n\t\tcase 'clipboardSlash':\n\t\t\treturn await import('../icons/clipboardSlash');\n\t\tcase 'clipboardWithoutFormat':\n\t\t\treturn await import('../icons/clipboardWithoutFormat');\n\t\tcase 'clipboards':\n\t\t\treturn await import('../icons/clipboards');\n\t\tcase 'clock':\n\t\t\treturn await import('../icons/clock');\n\t\tcase 'cloneExclamation':\n\t\t\treturn await import('../icons/cloneExclamation');\n\t\tcase 'clone':\n\t\t\treturn await import('../icons/clone');\n\t\tcase 'close':\n\t\t\treturn await import('../icons/close');\n\t\tcase 'cloudArrowUp':\n\t\t\treturn await import('../icons/cloudArrowUp');\n\t\tcase 'cloudCheckmark':\n\t\t\treturn await import('../icons/cloudCheckmark');\n\t\tcase 'cloud':\n\t\t\treturn await import('../icons/cloud');\n\t\tcase 'cloudSlash':\n\t\t\treturn await import('../icons/cloudSlash');\n\t\tcase 'codeEdit':\n\t\t\treturn await import('../icons/codeEdit');\n\t\tcase 'code':\n\t\t\treturn await import('../icons/code');\n\t\tcase 'codeInventory':\n\t\t\treturn await import('../icons/codeInventory');\n\t\tcase 'codeSearch':\n\t\t\treturn await import('../icons/codeSearch');\n\t\tcase 'cohortAnalysis':\n\t\t\treturn await import('../icons/cohortAnalysis');\n\t\tcase 'collapse':\n\t\t\treturn await import('../icons/collapse');\n\t\tcase 'combine':\n\t\t\treturn await import('../icons/combine');\n\t\tcase 'command':\n\t\t\treturn await import('../icons/command');\n\t\tcase 'commentBlank':\n\t\t\treturn await import('../icons/commentBlank');\n\t\tcase 'commentEmojiSmile':\n\t\t\treturn await import('../icons/commentEmojiSmile');\n\t\tcase 'comment':\n\t\t\treturn await import('../icons/comment');\n\t\tcase 'commentPlus':\n\t\t\treturn await import('../icons/commentPlus');\n\t\tcase 'compass':\n\t\t\treturn await import('../icons/compass');\n\t\tcase 'componentBundle':\n\t\t\treturn await import('../icons/componentBundle');\n\t\tcase 'component':\n\t\t\treturn await import('../icons/component');\n\t\tcase 'conferenceRoom':\n\t\t\treturn await import('../icons/conferenceRoom');\n\t\tcase 'configurationItem':\n\t\t\treturn await import('../icons/configurationItem');\n\t\tcase 'connectViewDocument':\n\t\t\treturn await import('../icons/connectViewDocument');\n\t\tcase 'console':\n\t\t\treturn await import('../icons/console');\n\t\tcase 'contractHistory':\n\t\t\treturn await import('../icons/contractHistory');\n\t\tcase 'crop':\n\t\t\treturn await import('../icons/crop');\n\t\tcase 'cube':\n\t\t\treturn await import('../icons/cube');\n\t\tcase 'curlyBracket':\n\t\t\treturn await import('../icons/curlyBracket');\n\t\tcase 'curlyBracketLeft':\n\t\t\treturn await import('../icons/curlyBracketLeft');\n\t\tcase 'curlyBracketRight':\n\t\t\treturn await import('../icons/curlyBracketRight');\n\t\tcase 'currencyExchange':\n\t\t\treturn await import('../icons/currencyExchange');\n\t\tcase 'currency':\n\t\t\treturn await import('../icons/currency');\n\t\tcase 'cursorButton':\n\t\t\treturn await import('../icons/cursorButton');\n\t\tcase 'cursor':\n\t\t\treturn await import('../icons/cursor');\n\t\tcase 'cursorMove':\n\t\t\treturn await import('../icons/cursorMove');\n\t\tcase 'dashCirclePlay':\n\t\t\treturn await import('../icons/dashCirclePlay');\n\t\tcase 'dashGridBottomLeft':\n\t\t\treturn await import('../icons/dashGridBottomLeft');\n\t\tcase 'dashGridBottomRight':\n\t\t\treturn await import('../icons/dashGridBottomRight');\n\t\tcase 'dashSquare':\n\t\t\treturn await import('../icons/dashSquare');\n\t\tcase 'dashboardDial':\n\t\t\treturn await import('../icons/dashboardDial');\n\t\tcase 'databaseArrowUp':\n\t\t\treturn await import('../icons/databaseArrowUp');\n\t\tcase 'databaseBook':\n\t\t\treturn await import('../icons/databaseBook');\n\t\tcase 'databaseComponent':\n\t\t\treturn await import('../icons/databaseComponent');\n\t\tcase 'databaseDiamond':\n\t\t\treturn await import('../icons/databaseDiamond');\n\t\tcase 'databaseError':\n\t\t\treturn await import('../icons/databaseError');\n\t\tcase 'database':\n\t\t\treturn await import('../icons/database');\n\t\tcase 'databaseFlagEvent':\n\t\t\treturn await import('../icons/databaseFlagEvent');\n\t\tcase 'databaseSearch':\n\t\t\treturn await import('../icons/databaseSearch');\n\t\tcase 'decimal':\n\t\t\treturn await import('../icons/decimal');\n\t\tcase 'deleteColumn':\n\t\t\treturn await import('../icons/deleteColumn');\n\t\tcase 'deleteRow':\n\t\t\treturn await import('../icons/deleteRow');\n\t\tcase 'desk':\n\t\t\treturn await import('../icons/desk');\n\t\tcase 'diamondExclamation':\n\t\t\treturn await import('../icons/diamondExclamation');\n\t\tcase 'diamond':\n\t\t\treturn await import('../icons/diamond');\n\t\tcase 'directionArrowDown':\n\t\t\treturn await import('../icons/directionArrowDown');\n\t\tcase 'directionArrowLeft':\n\t\t\treturn await import('../icons/directionArrowLeft');\n\t\tcase 'directionArrowRight':\n\t\t\treturn await import('../icons/directionArrowRight');\n\t\tcase 'directionArrowSlightLeft':\n\t\t\treturn await import('../icons/directionArrowSlightLeft');\n\t\tcase 'directionArrowSlightRight':\n\t\t\treturn await import('../icons/directionArrowSlightRight');\n\t\tcase 'directionArrowUp':\n\t\t\treturn await import('../icons/directionArrowUp');\n\t\tcase 'documentArchive':\n\t\t\treturn await import('../icons/documentArchive');\n\t\tcase 'documentAudio':\n\t\t\treturn await import('../icons/documentAudio');\n\t\tcase 'documentBlank':\n\t\t\treturn await import('../icons/documentBlank');\n\t\tcase 'documentBlankSlash':\n\t\t\treturn await import('../icons/documentBlankSlash');\n\t\tcase 'documentCertificate':\n\t\t\treturn await import('../icons/documentCertificate');\n\t\tcase 'documentChecklistSearch':\n\t\t\treturn await import('../icons/documentChecklistSearch');\n\t\tcase 'documentCode':\n\t\t\treturn await import('../icons/documentCode');\n\t\tcase 'documentExcel':\n\t\t\treturn await import('../icons/documentExcel');\n\t\tcase 'documentEye':\n\t\t\treturn await import('../icons/documentEye');\n\t\tcase 'document':\n\t\t\treturn await import('../icons/document');\n\t\tcase 'documentImage':\n\t\t\treturn await import('../icons/documentImage');\n\t\tcase 'documentInfected':\n\t\t\treturn await import('../icons/documentInfected');\n\t\tcase 'documentPdf':\n\t\t\treturn await import('../icons/documentPdf');\n\t\tcase 'documentPlus':\n\t\t\treturn await import('../icons/documentPlus');\n\t\tcase 'documentPowerpoint':\n\t\t\treturn await import('../icons/documentPowerpoint');\n\t\tcase 'documentPpt':\n\t\t\treturn await import('../icons/documentPpt');\n\t\tcase 'documentQuestionMark':\n\t\t\treturn await import('../icons/documentQuestionMark');\n\t\tcase 'documentSpeedometer':\n\t\t\treturn await import('../icons/documentSpeedometer');\n\t\tcase 'documentTemplateArrowReply':\n\t\t\treturn await import('../icons/documentTemplateArrowReply');\n\t\tcase 'documentTemplateChat':\n\t\t\treturn await import('../icons/documentTemplateChat');\n\t\tcase 'documentTemplateEnvelope':\n\t\t\treturn await import('../icons/documentTemplateEnvelope');\n\t\tcase 'documentTemplate':\n\t\t\treturn await import('../icons/documentTemplate');\n\t\tcase 'documentTemplateLightning':\n\t\t\treturn await import('../icons/documentTemplateLightning');\n\t\tcase 'documentTxt':\n\t\t\treturn await import('../icons/documentTxt');\n\t\tcase 'documentVideo':\n\t\t\treturn await import('../icons/documentVideo');\n\t\tcase 'documentWorkflow':\n\t\t\treturn await import('../icons/documentWorkflow');\n\t\tcase 'documentXls':\n\t\t\treturn await import('../icons/documentXls');\n\t\tcase 'documents':\n\t\t\treturn await import('../icons/documents');\n\t\tcase 'documentsPencil':\n\t\t\treturn await import('../icons/documentsPencil');\n\t\tcase 'door':\n\t\t\treturn await import('../icons/door');\n\t\tcase 'doubleCheckmark':\n\t\t\treturn await import('../icons/doubleCheckmark');\n\t\tcase 'doubleChevronLeft':\n\t\t\treturn await import('../icons/doubleChevronLeft');\n\t\tcase 'doubleChevronRight':\n\t\t\treturn await import('../icons/doubleChevronRight');\n\t\tcase 'doubleSlashForward':\n\t\t\treturn await import('../icons/doubleSlashForward');\n\t\tcase 'downloadCode':\n\t\t\treturn await import('../icons/downloadCode');\n\t\tcase 'download':\n\t\t\treturn await import('../icons/download');\n\t\tcase 'downloadSlash':\n\t\t\treturn await import('../icons/downloadSlash');\n\t\tcase 'draft':\n\t\t\treturn await import('../icons/draft');\n\t\tcase 'dragDots':\n\t\t\treturn await import('../icons/dragDots');\n\t\tcase 'dragResize':\n\t\t\treturn await import('../icons/dragResize');\n\t\tcase 'drawTool':\n\t\t\treturn await import('../icons/drawTool');\n\t\tcase 'drawer':\n\t\t\treturn await import('../icons/drawer');\n\t\tcase 'dropdownCaret':\n\t\t\treturn await import('../icons/dropdownCaret');\n\t\tcase 'droplet':\n\t\t\treturn await import('../icons/droplet');\n\t\tcase 'duplicate':\n\t\t\treturn await import('../icons/duplicate');\n\t\tcase 'dynamicSegment':\n\t\t\treturn await import('../icons/dynamicSegment');\n\t\tcase 'elevator':\n\t\t\treturn await import('../icons/elevator');\n\t\tcase 'ellipsisHorizontal':\n\t\t\treturn await import('../icons/ellipsisHorizontal');\n\t\tcase 'ellipsisVertical':\n\t\t\treturn await import('../icons/ellipsisVertical');\n\t\tcase 'emojiNegative':\n\t\t\treturn await import('../icons/emojiNegative');\n\t\tcase 'emojiNeutral':\n\t\t\treturn await import('../icons/emojiNeutral');\n\t\tcase 'emojiPositive':\n\t\t\treturn await import('../icons/emojiPositive');\n\t\tcase 'emojiSlightlyNegative':\n\t\t\treturn await import('../icons/emojiSlightlyNegative');\n\t\tcase 'emojiSmile':\n\t\t\treturn await import('../icons/emojiSmile');\n\t\tcase 'enterpriseAssetManagement':\n\t\t\treturn await import('../icons/enterpriseAssetManagement');\n\t\tcase 'envelopeArrow':\n\t\t\treturn await import('../icons/envelopeArrow');\n\t\tcase 'envelope':\n\t\t\treturn await import('../icons/envelope');\n\t\tcase 'envelopeMinus':\n\t\t\treturn await import('../icons/envelopeMinus');\n\t\tcase 'envelopeOpen':\n\t\t\treturn await import('../icons/envelopeOpen');\n\t\tcase 'envelopePlus':\n\t\t\treturn await import('../icons/envelopePlus');\n\t\tcase 'eraser':\n\t\t\treturn await import('../icons/eraser');\n\t\tcase 'escalator':\n\t\t\treturn await import('../icons/escalator');\n\t\tcase 'exclamation':\n\t\t\treturn await import('../icons/exclamation');\n\t\tcase 'exclamationSignal':\n\t\t\treturn await import('../icons/exclamationSignal');\n\t\tcase 'expand':\n\t\t\treturn await import('../icons/expand');\n\t\tcase 'externalAction':\n\t\t\treturn await import('../icons/externalAction');\n\t\tcase 'eye':\n\t\t\treturn await import('../icons/eye');\n\t\tcase 'eyeSlash':\n\t\t\treturn await import('../icons/eyeSlash');\n\t\tcase 'facebook':\n\t\t\treturn await import('../icons/facebook');\n\t\tcase 'fieldName':\n\t\t\treturn await import('../icons/fieldName');\n\t\tcase 'fieldShield':\n\t\t\treturn await import('../icons/fieldShield');\n\t\tcase 'filter':\n\t\t\treturn await import('../icons/filter');\n\t\tcase 'filterHide':\n\t\t\treturn await import('../icons/filterHide');\n\t\tcase 'filterShow':\n\t\t\treturn await import('../icons/filterShow');\n\t\tcase 'fire':\n\t\t\treturn await import('../icons/fire');\n\t\tcase 'fitWidth':\n\t\t\treturn await import('../icons/fitWidth');\n\t\tcase 'flagEventAdd':\n\t\t\treturn await import('../icons/flagEventAdd');\n\t\tcase 'flagEvent':\n\t\t\treturn await import('../icons/flagEvent');\n\t\tcase 'flag':\n\t\t\treturn await import('../icons/flag');\n\t\tcase 'flashlight':\n\t\t\treturn await import('../icons/flashlight');\n\t\tcase 'flexDistributeBottom':\n\t\t\treturn await import('../icons/flexDistributeBottom');\n\t\tcase 'flexDistributeCenter':\n\t\t\treturn await import('../icons/flexDistributeCenter');\n\t\tcase 'flexDistributeSpaceAround':\n\t\t\treturn await import('../icons/flexDistributeSpaceAround');\n\t\tcase 'flexDistributeSpaceBetween':\n\t\t\treturn await import('../icons/flexDistributeSpaceBetween');\n\t\tcase 'flexDistributeSpaceEvenly':\n\t\t\treturn await import('../icons/flexDistributeSpaceEvenly');\n\t\tcase 'flexDistributeTop':\n\t\t\treturn await import('../icons/flexDistributeTop');\n\t\tcase 'flexJustifyCenter':\n\t\t\treturn await import('../icons/flexJustifyCenter');\n\t\tcase 'flexJustifyLeft':\n\t\t\treturn await import('../icons/flexJustifyLeft');\n\t\tcase 'flexJustifyRight':\n\t\t\treturn await import('../icons/flexJustifyRight');\n\t\tcase 'flexJustifySpaceAround':\n\t\t\treturn await import('../icons/flexJustifySpaceAround');\n\t\tcase 'flexJustifySpaceBetween':\n\t\t\treturn await import('../icons/flexJustifySpaceBetween');\n\t\tcase 'flexJustifySpaceEvenly':\n\t\t\treturn await import('../icons/flexJustifySpaceEvenly');\n\t\tcase 'floorplan':\n\t\t\treturn await import('../icons/floorplan');\n\t\tcase 'flowOutput':\n\t\t\treturn await import('../icons/flowOutput');\n\t\tcase 'folderCirclePlus':\n\t\t\treturn await import('../icons/folderCirclePlus');\n\t\tcase 'folder':\n\t\t\treturn await import('../icons/folder');\n\t\tcase 'folderGear':\n\t\t\treturn await import('../icons/folderGear');\n\t\tcase 'folderOpenCircleCheck':\n\t\t\treturn await import('../icons/folderOpenCircleCheck');\n\t\tcase 'folderOpen':\n\t\t\treturn await import('../icons/folderOpen');\n\t\tcase 'food':\n\t\t\treturn await import('../icons/food');\n\t\tcase 'form':\n\t\t\treturn await import('../icons/form');\n\t\tcase 'formula':\n\t\t\treturn await import('../icons/formula');\n\t\tcase 'fullscreen':\n\t\t\treturn await import('../icons/fullscreen');\n\t\tcase 'gearChanges':\n\t\t\treturn await import('../icons/gearChanges');\n\t\tcase 'gear':\n\t\t\treturn await import('../icons/gear');\n\t\tcase 'gearMinus':\n\t\t\treturn await import('../icons/gearMinus');\n\t\tcase 'gearShieldCheckmark':\n\t\t\treturn await import('../icons/gearShieldCheckmark');\n\t\tcase 'gem':\n\t\t\treturn await import('../icons/gem');\n\t\tcase 'glasses':\n\t\t\treturn await import('../icons/glasses');\n\t\tcase 'globeClock':\n\t\t\treturn await import('../icons/globeClock');\n\t\tcase 'globe':\n\t\t\treturn await import('../icons/globe');\n\t\tcase 'globePin':\n\t\t\treturn await import('../icons/globePin');\n\t\tcase 'graduationCap':\n\t\t\treturn await import('../icons/graduationCap');\n\t\tcase 'gridAlignItemsBaseline':\n\t\t\treturn await import('../icons/gridAlignItemsBaseline');\n\t\tcase 'gridAlignItemsBottom':\n\t\t\treturn await import('../icons/gridAlignItemsBottom');\n\t\tcase 'gridAlignItemsCenter':\n\t\t\treturn await import('../icons/gridAlignItemsCenter');\n\t\tcase 'gridAlignItemsStretch':\n\t\t\treturn await import('../icons/gridAlignItemsStretch');\n\t\tcase 'gridAlignItemsTop':\n\t\t\treturn await import('../icons/gridAlignItemsTop');\n\t\tcase 'gridDistributeContentBottom':\n\t\t\treturn await import('../icons/gridDistributeContentBottom');\n\t\tcase 'gridDistributeContentCenter':\n\t\t\treturn await import('../icons/gridDistributeContentCenter');\n\t\tcase 'gridDistributeContentSpaceAround':\n\t\t\treturn await import('../icons/gridDistributeContentSpaceAround');\n\t\tcase 'gridDistributeContentSpaceBetween':\n\t\t\treturn await import('../icons/gridDistributeContentSpaceBetween');\n\t\tcase 'gridDistributeContentSpaceEvenly':\n\t\t\treturn await import('../icons/gridDistributeContentSpaceEvenly');\n\t\tcase 'gridDistributeContentStretch':\n\t\t\treturn await import('../icons/gridDistributeContentStretch');\n\t\tcase 'gridDistributeContentTop':\n\t\t\treturn await import('../icons/gridDistributeContentTop');\n\t\tcase 'grid':\n\t\t\treturn await import('../icons/grid');\n\t\tcase 'gridFour':\n\t\t\treturn await import('../icons/gridFour');\n\t\tcase 'gridJustifyContentCenter':\n\t\t\treturn await import('../icons/gridJustifyContentCenter');\n\t\tcase 'gridJustifyContentLeft':\n\t\t\treturn await import('../icons/gridJustifyContentLeft');\n\t\tcase 'gridJustifyContentRight':\n\t\t\treturn await import('../icons/gridJustifyContentRight');\n\t\tcase 'gridJustifyContentSpaceAround':\n\t\t\treturn await import('../icons/gridJustifyContentSpaceAround');\n\t\tcase 'gridJustifyContentSpaceBetween':\n\t\t\treturn await import('../icons/gridJustifyContentSpaceBetween');\n\t\tcase 'gridJustifyContentSpaceEvenly':\n\t\t\treturn await import('../icons/gridJustifyContentSpaceEvenly');\n\t\tcase 'gridJustifyContentStretch':\n\t\t\treturn await import('../icons/gridJustifyContentStretch');\n\t\tcase 'gridJustifyItemsBaseline':\n\t\t\treturn await import('../icons/gridJustifyItemsBaseline');\n\t\tcase 'gridJustifyItemsCenter':\n\t\t\treturn await import('../icons/gridJustifyItemsCenter');\n\t\tcase 'gridJustifyItemsLeft':\n\t\t\treturn await import('../icons/gridJustifyItemsLeft');\n\t\tcase 'gridJustifyItemsRight':\n\t\t\treturn await import('../icons/gridJustifyItemsRight');\n\t\tcase 'gridJustifyItemsStretch':\n\t\t\treturn await import('../icons/gridJustifyItemsStretch');\n\t\tcase 'gridThree':\n\t\t\treturn await import('../icons/gridThree');\n\t\tcase 'gridVertical':\n\t\t\treturn await import('../icons/gridVertical');\n\t\tcase 'groupLines':\n\t\t\treturn await import('../icons/groupLines');\n\t\tcase 'hammerCode':\n\t\t\treturn await import('../icons/hammerCode');\n\t\tcase 'hammerJson':\n\t\t\treturn await import('../icons/hammerJson');\n\t\tcase 'hammerPayload':\n\t\t\treturn await import('../icons/hammerPayload');\n\t\tcase 'handGear':\n\t\t\treturn await import('../icons/handGear');\n\t\tcase 'handshake':\n\t\t\treturn await import('../icons/handshake');\n\t\tcase 'harddrive':\n\t\t\treturn await import('../icons/harddrive');\n\t\tcase 'heading1':\n\t\t\treturn await import('../icons/heading1');\n\t\tcase 'heading2':\n\t\t\treturn await import('../icons/heading2');\n\t\tcase 'heading3':\n\t\t\treturn await import('../icons/heading3');\n\t\tcase 'heading4':\n\t\t\treturn await import('../icons/heading4');\n\t\tcase 'headset':\n\t\t\treturn await import('../icons/headset');\n\t\tcase 'healthScreening':\n\t\t\treturn await import('../icons/healthScreening');\n\t\tcase 'healthStatus':\n\t\t\treturn await import('../icons/healthStatus');\n\t\tcase 'heart':\n\t\t\treturn await import('../icons/heart');\n\t\tcase 'heartbeat':\n\t\t\treturn await import('../icons/heartbeat');\n\t\tcase 'home':\n\t\t\treturn await import('../icons/home');\n\t\tcase 'hr':\n\t\t\treturn await import('../icons/hr');\n\t\tcase 'id':\n\t\t\treturn await import('../icons/id');\n\t\tcase 'image':\n\t\t\treturn await import('../icons/image');\n\t\tcase 'imagePlus':\n\t\t\treturn await import('../icons/imagePlus');\n\t\tcase 'imageSlash':\n\t\t\treturn await import('../icons/imageSlash');\n\t\tcase 'images':\n\t\t\treturn await import('../icons/images');\n\t\tcase 'inboxArchive':\n\t\t\treturn await import('../icons/inboxArchive');\n\t\tcase 'inbox':\n\t\t\treturn await import('../icons/inbox');\n\t\tcase 'inboxQueue':\n\t\t\treturn await import('../icons/inboxQueue');\n\t\tcase 'indicatorCheck':\n\t\t\treturn await import('../icons/indicatorCheck');\n\t\tcase 'inkAnnotationHeavy':\n\t\t\treturn await import('../icons/inkAnnotationHeavy');\n\t\tcase 'inkAnnotationLight':\n\t\t\treturn await import('../icons/inkAnnotationLight');\n\t\tcase 'inkAnnotationMedium':\n\t\t\treturn await import('../icons/inkAnnotationMedium');\n\t\tcase 'inkAnnotationThick':\n\t\t\treturn await import('../icons/inkAnnotationThick');\n\t\tcase 'inkAnnotationThin':\n\t\t\treturn await import('../icons/inkAnnotationThin');\n\t\tcase 'insertColumnLeft':\n\t\t\treturn await import('../icons/insertColumnLeft');\n\t\tcase 'insertColumnRight':\n\t\t\treturn await import('../icons/insertColumnRight');\n\t\tcase 'insertRowAfter':\n\t\t\treturn await import('../icons/insertRowAfter');\n\t\tcase 'insertRowBefore':\n\t\t\treturn await import('../icons/insertRowBefore');\n\t\tcase 'instagram':\n\t\t\treturn await import('../icons/instagram');\n\t\tcase 'integer':\n\t\t\treturn await import('../icons/integer');\n\t\tcase 'inventoryCirclePlus':\n\t\t\treturn await import('../icons/inventoryCirclePlus');\n\t\tcase 'inventory':\n\t\t\treturn await import('../icons/inventory');\n\t\tcase 'isolation':\n\t\t\treturn await import('../icons/isolation');\n\t\tcase 'itemIndent':\n\t\t\treturn await import('../icons/itemIndent');\n\t\tcase 'itemUnindent':\n\t\t\treturn await import('../icons/itemUnindent');\n\t\tcase 'journal':\n\t\t\treturn await import('../icons/journal');\n\t\tcase 'journalList':\n\t\t\treturn await import('../icons/journalList');\n\t\tcase 'journalPencil':\n\t\t\treturn await import('../icons/journalPencil');\n\t\tcase 'key':\n\t\t\treturn await import('../icons/key');\n\t\tcase 'keyboard':\n\t\t\treturn await import('../icons/keyboard');\n\t\tcase 'keys':\n\t\t\treturn await import('../icons/keys');\n\t\tcase 'kpi':\n\t\t\treturn await import('../icons/kpi');\n\t\tcase 'label':\n\t\t\treturn await import('../icons/label');\n\t\tcase 'laptopCheckUser':\n\t\t\treturn await import('../icons/laptopCheckUser');\n\t\tcase 'laptop':\n\t\t\treturn await import('../icons/laptop');\n\t\tcase 'layersMiddle':\n\t\t\treturn await import('../icons/layersMiddle');\n\t\tcase 'layout':\n\t\t\treturn await import('../icons/layout');\n\t\tcase 'letterAb':\n\t\t\treturn await import('../icons/letterAb');\n\t\tcase 'letterAs':\n\t\t\treturn await import('../icons/letterAs');\n\t\tcase 'letterAbBracket':\n\t\t\treturn await import('../icons/letterAbBracket');\n\t\tcase 'lifesaver':\n\t\t\treturn await import('../icons/lifesaver');\n\t\tcase 'lightbulb':\n\t\t\treturn await import('../icons/lightbulb');\n\t\tcase 'lightning':\n\t\t\treturn await import('../icons/lightning');\n\t\tcase 'lightningSlash':\n\t\t\treturn await import('../icons/lightningSlash');\n\t\tcase 'lineDiagonal':\n\t\t\treturn await import('../icons/lineDiagonal');\n\t\tcase 'link':\n\t\t\treturn await import('../icons/link');\n\t\tcase 'linkedin':\n\t\t\treturn await import('../icons/linkedin');\n\t\tcase 'list':\n\t\t\treturn await import('../icons/list');\n\t\tcase 'listHide':\n\t\t\treturn await import('../icons/listHide');\n\t\tcase 'listKey':\n\t\t\treturn await import('../icons/listKey');\n\t\tcase 'listMarker':\n\t\t\treturn await import('../icons/listMarker');\n\t\tcase 'listSearch':\n\t\t\treturn await import('../icons/listSearch');\n\t\tcase 'listShow':\n\t\t\treturn await import('../icons/listShow');\n\t\tcase 'liveFeed':\n\t\t\treturn await import('../icons/liveFeed');\n\t\tcase 'liveFeedVertical':\n\t\t\treturn await import('../icons/liveFeedVertical');\n\t\tcase 'loader':\n\t\t\treturn await import('../icons/loader');\n\t\tcase 'lock':\n\t\t\treturn await import('../icons/lock');\n\t\tcase 'longArrowLeft':\n\t\t\treturn await import('../icons/longArrowLeft');\n\t\tcase 'longArrowRight':\n\t\t\treturn await import('../icons/longArrowRight');\n\t\tcase 'magic':\n\t\t\treturn await import('../icons/magic');\n\t\tcase 'magicSlash':\n\t\t\treturn await import('../icons/magicSlash');\n\t\tcase 'magnifyingGlassAiSparkle':\n\t\t\treturn await import('../icons/magnifyingGlassAiSparkle');\n\t\tcase 'magnifyingGlassCheck':\n\t\t\treturn await import('../icons/magnifyingGlassCheck');\n\t\tcase 'magnifyingGlass':\n\t\t\treturn await import('../icons/magnifyingGlass');\n\t\tcase 'magnifyingGlassFilter':\n\t\t\treturn await import('../icons/magnifyingGlassFilter');\n\t\tcase 'magnifyingGlassMinus':\n\t\t\treturn await import('../icons/magnifyingGlassMinus');\n\t\tcase 'magnifyingGlassPlus':\n\t\t\treturn await import('../icons/magnifyingGlassPlus');\n\t\tcase 'mapDirection':\n\t\t\treturn await import('../icons/mapDirection');\n\t\tcase 'map':\n\t\t\treturn await import('../icons/map');\n\t\tcase 'mapPin':\n\t\t\treturn await import('../icons/mapPin');\n\t\tcase 'mapPins':\n\t\t\treturn await import('../icons/mapPins');\n\t\tcase 'marker':\n\t\t\treturn await import('../icons/marker');\n\t\tcase 'market':\n\t\t\treturn await import('../icons/market');\n\t\tcase 'maximize':\n\t\t\treturn await import('../icons/maximize');\n\t\tcase 'mediaBack':\n\t\t\treturn await import('../icons/mediaBack');\n\t\tcase 'mediaNext':\n\t\t\treturn await import('../icons/mediaNext');\n\t\tcase 'megaphone':\n\t\t\treturn await import('../icons/megaphone');\n\t\tcase 'mention':\n\t\t\treturn await import('../icons/mention');\n\t\tcase 'menu':\n\t\t\treturn await import('../icons/menu');\n\t\tcase 'microphone':\n\t\t\treturn await import('../icons/microphone');\n\t\tcase 'microphoneSlash':\n\t\t\treturn await import('../icons/microphoneSlash');\n\t\tcase 'microsoftTeams':\n\t\t\treturn await import('../icons/microsoftTeams');\n\t\tcase 'minimize':\n\t\t\treturn await import('../icons/minimize');\n\t\tcase 'minus':\n\t\t\treturn await import('../icons/minus');\n\t\tcase 'minusVertical':\n\t\t\treturn await import('../icons/minusVertical');\n\t\tcase 'modal':\n\t\t\treturn await import('../icons/modal');\n\t\tcase 'modelessDialog':\n\t\t\treturn await import('../icons/modelessDialog');\n\t\tcase 'monitorExclamation':\n\t\t\treturn await import('../icons/monitorExclamation');\n\t\tcase 'monitor':\n\t\t\treturn await import('../icons/monitor');\n\t\tcase 'moon':\n\t\t\treturn await import('../icons/moon');\n\t\tcase 'moveItemDown':\n\t\t\treturn await import('../icons/moveItemDown');\n\t\tcase 'moveItemLeft':\n\t\t\treturn await import('../icons/moveItemLeft');\n\t\tcase 'moveItemRight':\n\t\t\treturn await import('../icons/moveItemRight');\n\t\tcase 'moveItemUp':\n\t\t\treturn await import('../icons/moveItemUp');\n\t\tcase 'moveLinkLeft':\n\t\t\treturn await import('../icons/moveLinkLeft');\n\t\tcase 'moveLinkRight':\n\t\t\treturn await import('../icons/moveLinkRight');\n\t\tcase 'new':\n\t\t\treturn await import('../icons/new');\n\t\tcase 'news':\n\t\t\treturn await import('../icons/news');\n\t\tcase 'note':\n\t\t\treturn await import('../icons/note');\n\t\tcase 'number':\n\t\t\treturn await import('../icons/number');\n\t\tcase 'numberedList':\n\t\t\treturn await import('../icons/numberedList');\n\t\tcase 'officialVerification':\n\t\t\treturn await import('../icons/officialVerification');\n\t\tcase 'okta':\n\t\t\treturn await import('../icons/okta');\n\t\tcase 'ongoing':\n\t\t\treturn await import('../icons/ongoing');\n\t\tcase 'openLinkLeft':\n\t\t\treturn await import('../icons/openLinkLeft');\n\t\tcase 'openLinkRight':\n\t\t\treturn await import('../icons/openLinkRight');\n\t\tcase 'optionKey':\n\t\t\treturn await import('../icons/optionKey');\n\t\tcase 'outagePast':\n\t\t\treturn await import('../icons/outagePast');\n\t\tcase 'outagePlanned':\n\t\t\treturn await import('../icons/outagePlanned');\n\t\tcase 'packageSearch':\n\t\t\treturn await import('../icons/packageSearch');\n\t\tcase 'palette':\n\t\t\treturn await import('../icons/palette');\n\t\tcase 'panelDisplayBottom':\n\t\t\treturn await import('../icons/panelDisplayBottom');\n\t\tcase 'panelDisplayLeftCollapse':\n\t\t\treturn await import('../icons/panelDisplayLeftCollapse');\n\t\tcase 'panelDisplayLeftExpand':\n\t\t\treturn await import('../icons/panelDisplayLeftExpand');\n\t\tcase 'panelDisplayLeft':\n\t\t\treturn await import('../icons/panelDisplayLeft');\n\t\tcase 'panelDisplayMiddle':\n\t\t\treturn await import('../icons/panelDisplayMiddle');\n\t\tcase 'panelDisplayMiddleHorizontal':\n\t\t\treturn await import('../icons/panelDisplayMiddleHorizontal');\n\t\tcase 'panelDisplayPopout':\n\t\t\treturn await import('../icons/panelDisplayPopout');\n\t\tcase 'panelDisplayRightCollapse':\n\t\t\treturn await import('../icons/panelDisplayRightCollapse');\n\t\tcase 'panelDisplayRightExpand':\n\t\t\treturn await import('../icons/panelDisplayRightExpand');\n\t\tcase 'panelDisplayRight':\n\t\t\treturn await import('../icons/panelDisplayRight');\n\t\tcase 'panelDisplayThreeSplitLeft':\n\t\t\treturn await import('../icons/panelDisplayThreeSplitLeft');\n\t\tcase 'panelDisplayThreeSplitRight':\n\t\t\treturn await import('../icons/panelDisplayThreeSplitRight');\n\t\tcase 'paperclip':\n\t\t\treturn await import('../icons/paperclip');\n\t\tcase 'pause':\n\t\t\treturn await import('../icons/pause');\n\t\tcase 'pencil':\n\t\t\treturn await import('../icons/pencil');\n\t\tcase 'pencilPage':\n\t\t\treturn await import('../icons/pencilPage');\n\t\tcase 'percentage':\n\t\t\treturn await import('../icons/percentage');\n\t\tcase 'phoneArrowsSwap':\n\t\t\treturn await import('../icons/phoneArrowsSwap');\n\t\tcase 'phoneClose':\n\t\t\treturn await import('../icons/phoneClose');\n\t\tcase 'phoneDown':\n\t\t\treturn await import('../icons/phoneDown');\n\t\tcase 'phone':\n\t\t\treturn await import('../icons/phone');\n\t\tcase 'phoneIncoming':\n\t\t\treturn await import('../icons/phoneIncoming');\n\t\tcase 'phoneKeypad':\n\t\t\treturn await import('../icons/phoneKeypad');\n\t\tcase 'phoneOutgoing':\n\t\t\treturn await import('../icons/phoneOutgoing');\n\t\tcase 'phonePause':\n\t\t\treturn await import('../icons/phonePause');\n\t\tcase 'phonePlay':\n\t\t\treturn await import('../icons/phonePlay');\n\t\tcase 'phoneSlash':\n\t\t\treturn await import('../icons/phoneSlash');\n\t\tcase 'phoneUser':\n\t\t\treturn await import('../icons/phoneUser');\n\t\tcase 'pilcrow':\n\t\t\treturn await import('../icons/pilcrow');\n\t\tcase 'pinterest':\n\t\t\treturn await import('../icons/pinterest');\n\t\tcase 'play':\n\t\t\treturn await import('../icons/play');\n\t\tcase 'playbook':\n\t\t\treturn await import('../icons/playbook');\n\t\tcase 'plug':\n\t\t\treturn await import('../icons/plug');\n\t\tcase 'plugSlash':\n\t\t\treturn await import('../icons/plugSlash');\n\t\tcase 'plus':\n\t\t\treturn await import('../icons/plus');\n\t\tcase 'popIn':\n\t\t\treturn await import('../icons/popIn');\n\t\tcase 'power':\n\t\t\treturn await import('../icons/power');\n\t\tcase 'presenceAvailable':\n\t\t\treturn await import('../icons/presenceAvailable');\n\t\tcase 'presenceAway':\n\t\t\treturn await import('../icons/presenceAway');\n\t\tcase 'presenceBusy':\n\t\t\treturn await import('../icons/presenceBusy');\n\t\tcase 'presence':\n\t\t\treturn await import('../icons/presence');\n\t\tcase 'presenceOffline':\n\t\t\treturn await import('../icons/presenceOffline');\n\t\tcase 'printer':\n\t\t\treturn await import('../icons/printer');\n\t\tcase 'processBlocks':\n\t\t\treturn await import('../icons/processBlocks');\n\t\tcase 'publish':\n\t\t\treturn await import('../icons/publish');\n\t\tcase 'puzzle':\n\t\t\treturn await import('../icons/puzzle');\n\t\tcase 'qrCode':\n\t\t\treturn await import('../icons/qrCode');\n\t\tcase 'quadrantChartBubble':\n\t\t\treturn await import('../icons/quadrantChartBubble');\n\t\tcase 'quarterCirclePlay':\n\t\t\treturn await import('../icons/quarterCirclePlay');\n\t\tcase 'quoteLeft':\n\t\t\treturn await import('../icons/quoteLeft');\n\t\tcase 'quoteRight':\n\t\t\treturn await import('../icons/quoteRight');\n\t\tcase 'radioAbcScale':\n\t\t\treturn await import('../icons/radioAbcScale');\n\t\tcase 'radioButton':\n\t\t\treturn await import('../icons/radioButton');\n\t\tcase 'radioNumericScale':\n\t\t\treturn await import('../icons/radioNumericScale');\n\t\tcase 'ramp':\n\t\t\treturn await import('../icons/ramp');\n\t\tcase 'receiptPencil':\n\t\t\treturn await import('../icons/receiptPencil');\n\t\tcase 'receiptTriangleExclamation':\n\t\t\treturn await import('../icons/receiptTriangleExclamation');\n\t\tcase 'recordActivityDetails':\n\t\t\treturn await import('../icons/recordActivityDetails');\n\t\tcase 'recordActivity':\n\t\t\treturn await import('../icons/recordActivity');\n\t\tcase 'recordActivityStream':\n\t\t\treturn await import('../icons/recordActivityStream');\n\t\tcase 'recordActivityStreamVertical':\n\t\t\treturn await import('../icons/recordActivityStreamVertical');\n\t\tcase 'rectangleArrowDown':\n\t\t\treturn await import('../icons/rectangleArrowDown');\n\t\tcase 'rectangleSearch':\n\t\t\treturn await import('../icons/rectangleSearch');\n\t\tcase 'rectangleSpeedometer':\n\t\t\treturn await import('../icons/rectangleSpeedometer');\n\t\tcase 'redoBottom':\n\t\t\treturn await import('../icons/redoBottom');\n\t\tcase 'redoTop':\n\t\t\treturn await import('../icons/redoTop');\n\t\tcase 'regularExpression':\n\t\t\treturn await import('../icons/regularExpression');\n\t\tcase 'relatedList':\n\t\t\treturn await import('../icons/relatedList');\n\t\tcase 'replaceAll':\n\t\t\treturn await import('../icons/replaceAll');\n\t\tcase 'replace':\n\t\t\treturn await import('../icons/replace');\n\t\tcase 'reply':\n\t\t\treturn await import('../icons/reply');\n\t\tcase 'reservation':\n\t\t\treturn await import('../icons/reservation');\n\t\tcase 'restroom':\n\t\t\treturn await import('../icons/restroom');\n\t\tcase 'roadmap':\n\t\t\treturn await import('../icons/roadmap');\n\t\tcase 'rocketship':\n\t\t\treturn await import('../icons/rocketship');\n\t\tcase 'rotateClockwise':\n\t\t\treturn await import('../icons/rotateClockwise');\n\t\tcase 'rotateCounterClockwise':\n\t\t\treturn await import('../icons/rotateCounterClockwise');\n\t\tcase 'rssFeed':\n\t\t\treturn await import('../icons/rssFeed');\n\t\tcase 'save':\n\t\t\treturn await import('../icons/save');\n\t\tcase 'scanner':\n\t\t\treturn await import('../icons/scanner');\n\t\tcase 'scissor':\n\t\t\treturn await import('../icons/scissor');\n\t\tcase 'score':\n\t\t\treturn await import('../icons/score');\n\t\tcase 'scoreList':\n\t\t\treturn await import('../icons/scoreList');\n\t\tcase 'scoreListLightning':\n\t\t\treturn await import('../icons/scoreListLightning');\n\t\tcase 'scriptCheck':\n\t\t\treturn await import('../icons/scriptCheck');\n\t\tcase 'scriptCursor':\n\t\t\treturn await import('../icons/scriptCursor');\n\t\tcase 'scriptDiamond':\n\t\t\treturn await import('../icons/scriptDiamond');\n\t\tcase 'script':\n\t\t\treturn await import('../icons/script');\n\t\tcase 'selectAll':\n\t\t\treturn await import('../icons/selectAll');\n\t\tcase 'selectElement':\n\t\t\treturn await import('../icons/selectElement');\n\t\tcase 'semiCirclePlay':\n\t\t\treturn await import('../icons/semiCirclePlay');\n\t\tcase 'send':\n\t\t\treturn await import('../icons/send');\n\t\tcase 'separate':\n\t\t\treturn await import('../icons/separate');\n\t\tcase 'serverboxApplication':\n\t\t\treturn await import('../icons/serverboxApplication');\n\t\tcase 'serverboxClock':\n\t\t\treturn await import('../icons/serverboxClock');\n\t\tcase 'serverboxCloud':\n\t\t\treturn await import('../icons/serverboxCloud');\n\t\tcase 'serverboxCluster':\n\t\t\treturn await import('../icons/serverboxCluster');\n\t\tcase 'serverboxDatabase':\n\t\t\treturn await import('../icons/serverboxDatabase');\n\t\tcase 'serverboxEmail':\n\t\t\treturn await import('../icons/serverboxEmail');\n\t\tcase 'serverbox':\n\t\t\treturn await import('../icons/serverbox');\n\t\tcase 'serverboxHealth':\n\t\t\treturn await import('../icons/serverboxHealth');\n\t\tcase 'serverboxJava':\n\t\t\treturn await import('../icons/serverboxJava');\n\t\tcase 'shapeCylinder':\n\t\t\treturn await import('../icons/shapeCylinder');\n\t\tcase 'shapeCylinderGroup':\n\t\t\treturn await import('../icons/shapeCylinderGroup');\n\t\tcase 'shapes':\n\t\t\treturn await import('../icons/shapes');\n\t\tcase 'share':\n\t\t\treturn await import('../icons/share');\n\t\tcase 'shareIos':\n\t\t\treturn await import('../icons/shareIos');\n\t\tcase 'shieldCheck':\n\t\t\treturn await import('../icons/shieldCheck');\n\t\tcase 'shieldCircleCheckmark':\n\t\t\treturn await import('../icons/shieldCircleCheckmark');\n\t\tcase 'shieldClose':\n\t\t\treturn await import('../icons/shieldClose');\n\t\tcase 'shieldCrack':\n\t\t\treturn await import('../icons/shieldCrack');\n\t\tcase 'shield':\n\t\t\treturn await import('../icons/shield');\n\t\tcase 'shippingContainer':\n\t\t\treturn await import('../icons/shippingContainer');\n\t\tcase 'shoppingCart':\n\t\t\treturn await import('../icons/shoppingCart');\n\t\tcase 'shoppingCartFull':\n\t\t\treturn await import('../icons/shoppingCartFull');\n\t\tcase 'shoppingCartSlash':\n\t\t\treturn await import('../icons/shoppingCartSlash');\n\t\tcase 'signal':\n\t\t\treturn await import('../icons/signal');\n\t\tcase 'signalLive':\n\t\t\treturn await import('../icons/signalLive');\n\t\tcase 'size':\n\t\t\treturn await import('../icons/size');\n\t\tcase 'slack':\n\t\t\treturn await import('../icons/slack');\n\t\tcase 'slashForward':\n\t\t\treturn await import('../icons/slashForward');\n\t\tcase 'sliders':\n\t\t\treturn await import('../icons/sliders');\n\t\tcase 'slidersVertical':\n\t\t\treturn await import('../icons/slidersVertical');\n\t\tcase 'smoke':\n\t\t\treturn await import('../icons/smoke');\n\t\tcase 'sortAscending':\n\t\t\treturn await import('../icons/sortAscending');\n\t\tcase 'sortDescending':\n\t\t\treturn await import('../icons/sortDescending');\n\t\tcase 'speaker':\n\t\t\treturn await import('../icons/speaker');\n\t\tcase 'spellCheck':\n\t\t\treturn await import('../icons/spellCheck');\n\t\tcase 'splitVertical':\n\t\t\treturn await import('../icons/splitVertical');\n\t\tcase 'spokes':\n\t\t\treturn await import('../icons/spokes');\n\t\tcase 'squareArrowDown':\n\t\t\treturn await import('../icons/squareArrowDown');\n\t\tcase 'squareArrowLeft':\n\t\t\treturn await import('../icons/squareArrowLeft');\n\t\tcase 'squareArrowRight':\n\t\t\treturn await import('../icons/squareArrowRight');\n\t\tcase 'squareArrowUp':\n\t\t\treturn await import('../icons/squareArrowUp');\n\t\tcase 'squareArrowUpLeft':\n\t\t\treturn await import('../icons/squareArrowUpLeft');\n\t\tcase 'squareArrowUpRight':\n\t\t\treturn await import('../icons/squareArrowUpRight');\n\t\tcase 'squareBracket':\n\t\t\treturn await import('../icons/squareBracket');\n\t\tcase 'squareBracketLeft':\n\t\t\treturn await import('../icons/squareBracketLeft');\n\t\tcase 'squareBracketRight':\n\t\t\treturn await import('../icons/squareBracketRight');\n\t\tcase 'squareC':\n\t\t\treturn await import('../icons/squareC');\n\t\tcase 'squareClose':\n\t\t\treturn await import('../icons/squareClose');\n\t\tcase 'squareCurlyBracket':\n\t\t\treturn await import('../icons/squareCurlyBracket');\n\t\tcase 'squareDashed':\n\t\t\treturn await import('../icons/squareDashed');\n\t\tcase 'square':\n\t\t\treturn await import('../icons/square');\n\t\tcase 'squareI':\n\t\t\treturn await import('../icons/squareI');\n\t\tcase 'squareLoop':\n\t\t\treturn await import('../icons/squareLoop');\n\t\tcase 'squareP':\n\t\t\treturn await import('../icons/squareP');\n\t\tcase 'squareQuestion':\n\t\t\treturn await import('../icons/squareQuestion');\n\t\tcase 'squareS':\n\t\t\treturn await import('../icons/squareS');\n\t\tcase 'squareShare':\n\t\t\treturn await import('../icons/squareShare');\n\t\tcase 'stairs':\n\t\t\treturn await import('../icons/stairs');\n\t\tcase 'star':\n\t\t\treturn await import('../icons/star');\n\t\tcase 'status':\n\t\t\treturn await import('../icons/status');\n\t\tcase 'stop':\n\t\t\treturn await import('../icons/stop');\n\t\tcase 'stopwatch':\n\t\t\treturn await import('../icons/stopwatch');\n\t\tcase 'streamAllInput':\n\t\t\treturn await import('../icons/streamAllInput');\n\t\tcase 'streamOneInput':\n\t\t\treturn await import('../icons/streamOneInput');\n\t\tcase 'strikethrough':\n\t\t\treturn await import('../icons/strikethrough');\n\t\tcase 'sunChevronDown':\n\t\t\treturn await import('../icons/sunChevronDown');\n\t\tcase 'sunChevronUp':\n\t\t\treturn await import('../icons/sunChevronUp');\n\t\tcase 'sun':\n\t\t\treturn await import('../icons/sun');\n\t\tcase 'sync':\n\t\t\treturn await import('../icons/sync');\n\t\tcase 'syncPlay':\n\t\t\treturn await import('../icons/syncPlay');\n\t\tcase 'syntaxCheck':\n\t\t\treturn await import('../icons/syntaxCheck');\n\t\tcase 'syntaxPencil':\n\t\t\treturn await import('../icons/syntaxPencil');\n\t\tcase 'tableDiamond':\n\t\t\treturn await import('../icons/tableDiamond');\n\t\tcase 'table':\n\t\t\treturn await import('../icons/table');\n\t\tcase 'tableGrid':\n\t\t\treturn await import('../icons/tableGrid');\n\t\tcase 'tableSearch':\n\t\t\treturn await import('../icons/tableSearch');\n\t\tcase 'tablet':\n\t\t\treturn await import('../icons/tablet');\n\t\tcase 'tabset':\n\t\t\treturn await import('../icons/tabset');\n\t\tcase 'tagDetail':\n\t\t\treturn await import('../icons/tagDetail');\n\t\tcase 'tagDot':\n\t\t\treturn await import('../icons/tagDot');\n\t\tcase 'tag':\n\t\t\treturn await import('../icons/tag');\n\t\tcase 'tags':\n\t\t\treturn await import('../icons/tags');\n\t\tcase 'target':\n\t\t\treturn await import('../icons/target');\n\t\tcase 'textBold':\n\t\t\treturn await import('../icons/textBold');\n\t\tcase 'textDiamond':\n\t\t\treturn await import('../icons/textDiamond');\n\t\tcase 'text':\n\t\t\treturn await import('../icons/text');\n\t\tcase 'textIndent':\n\t\t\treturn await import('../icons/textIndent');\n\t\tcase 'textItalic':\n\t\t\treturn await import('../icons/textItalic');\n\t\tcase 'textStyleAdd':\n\t\t\treturn await import('../icons/textStyleAdd');\n\t\tcase 'textStyleClear':\n\t\t\treturn await import('../icons/textStyleClear');\n\t\tcase 'textType':\n\t\t\treturn await import('../icons/textType');\n\t\tcase 'textUnderline':\n\t\t\treturn await import('../icons/textUnderline');\n\t\tcase 'textUnindent':\n\t\t\treturn await import('../icons/textUnindent');\n\t\tcase 'textUtf8':\n\t\t\treturn await import('../icons/textUtf8');\n\t\tcase 'textX':\n\t\t\treturn await import('../icons/textX');\n\t\tcase 'thickArrowUp':\n\t\t\treturn await import('../icons/thickArrowUp');\n\t\tcase 'threeQuarterCirclePlay':\n\t\t\treturn await import('../icons/threeQuarterCirclePlay');\n\t\tcase 'thresholdBar':\n\t\t\treturn await import('../icons/thresholdBar');\n\t\tcase 'thumbsDown':\n\t\t\treturn await import('../icons/thumbsDown');\n\t\tcase 'thumbsUp':\n\t\t\treturn await import('../icons/thumbsUp');\n\t\tcase 'thumbtack':\n\t\t\treturn await import('../icons/thumbtack');\n\t\tcase 'thumbtackSlash':\n\t\t\treturn await import('../icons/thumbtackSlash');\n\t\tcase 'ticket':\n\t\t\treturn await import('../icons/ticket');\n\t\tcase 'ticketPlus':\n\t\t\treturn await import('../icons/ticketPlus');\n\t\tcase 'timeline':\n\t\t\treturn await import('../icons/timeline');\n\t\tcase 'todayDashed':\n\t\t\treturn await import('../icons/todayDashed');\n\t\tcase 'today':\n\t\t\treturn await import('../icons/today');\n\t\tcase 'toggle':\n\t\t\treturn await import('../icons/toggle');\n\t\tcase 'toolbox':\n\t\t\treturn await import('../icons/toolbox');\n\t\tcase 'translatedHtml':\n\t\t\treturn await import('../icons/translatedHtml');\n\t\tcase 'translatedText':\n\t\t\treturn await import('../icons/translatedText');\n\t\tcase 'trash':\n\t\t\treturn await import('../icons/trash');\n\t\tcase 'treeCode':\n\t\t\treturn await import('../icons/treeCode');\n\t\tcase 'treeConditions':\n\t\t\treturn await import('../icons/treeConditions');\n\t\tcase 'tree':\n\t\t\treturn await import('../icons/tree');\n\t\tcase 'treeFlowAiSparkle':\n\t\t\treturn await import('../icons/treeFlowAiSparkle');\n\t\tcase 'treeFlow':\n\t\t\treturn await import('../icons/treeFlow');\n\t\tcase 'treeJson':\n\t\t\treturn await import('../icons/treeJson');\n\t\tcase 'treeSelected':\n\t\t\treturn await import('../icons/treeSelected');\n\t\tcase 'treeSubflow':\n\t\t\treturn await import('../icons/treeSubflow');\n\t\tcase 'treeViewLong':\n\t\t\treturn await import('../icons/treeViewLong');\n\t\tcase 'treeViewShort':\n\t\t\treturn await import('../icons/treeViewShort');\n\t\tcase 'treeWorkflow':\n\t\t\treturn await import('../icons/treeWorkflow');\n\t\tcase 'triangleExclamation':\n\t\t\treturn await import('../icons/triangleExclamation');\n\t\tcase 'tumblr':\n\t\t\treturn await import('../icons/tumblr');\n\t\tcase 'twilio':\n\t\t\treturn await import('../icons/twilio');\n\t\tcase 'twitter':\n\t\t\treturn await import('../icons/twitter');\n\t\tcase 'unbind':\n\t\t\treturn await import('../icons/unbind');\n\t\tcase 'undoBottom':\n\t\t\treturn await import('../icons/undoBottom');\n\t\tcase 'undoTop':\n\t\t\treturn await import('../icons/undoTop');\n\t\tcase 'unlink':\n\t\t\treturn await import('../icons/unlink');\n\t\tcase 'unlock':\n\t\t\treturn await import('../icons/unlock');\n\t\tcase 'upload':\n\t\t\treturn await import('../icons/upload');\n\t\tcase 'userClipboard':\n\t\t\treturn await import('../icons/userClipboard');\n\t\tcase 'userClock':\n\t\t\treturn await import('../icons/userClock');\n\t\tcase 'userEscalation':\n\t\t\treturn await import('../icons/userEscalation');\n\t\tcase 'userFeed':\n\t\t\treturn await import('../icons/userFeed');\n\t\tcase 'user':\n\t\t\treturn await import('../icons/user');\n\t\tcase 'userGroup':\n\t\t\treturn await import('../icons/userGroup');\n\t\tcase 'userLock':\n\t\t\treturn await import('../icons/userLock');\n\t\tcase 'userMinus':\n\t\t\treturn await import('../icons/userMinus');\n\t\tcase 'userPlus':\n\t\t\treturn await import('../icons/userPlus');\n\t\tcase 'userTag':\n\t\t\treturn await import('../icons/userTag');\n\t\tcase 'userTransfer':\n\t\t\treturn await import('../icons/userTransfer');\n\t\tcase 'userTriangleExclamation':\n\t\t\treturn await import('../icons/userTriangleExclamation');\n\t\tcase 'userVerify':\n\t\t\treturn await import('../icons/userVerify');\n\t\tcase 'userWheelchair':\n\t\t\treturn await import('../icons/userWheelchair');\n\t\tcase 'vacation':\n\t\t\treturn await import('../icons/vacation');\n\t\tcase 'vaccineCheck':\n\t\t\treturn await import('../icons/vaccineCheck');\n\t\tcase 'vehicleAirplane':\n\t\t\treturn await import('../icons/vehicleAirplane');\n\t\tcase 'vehicleBoat':\n\t\t\treturn await import('../icons/vehicleBoat');\n\t\tcase 'vehicleForklift':\n\t\t\treturn await import('../icons/vehicleForklift');\n\t\tcase 'vehicleRail':\n\t\t\treturn await import('../icons/vehicleRail');\n\t\tcase 'vehicleTruck':\n\t\t\treturn await import('../icons/vehicleTruck');\n\t\tcase 'vennEmpty':\n\t\t\treturn await import('../icons/vennEmpty');\n\t\tcase 'vennIntersection':\n\t\t\treturn await import('../icons/vennIntersection');\n\t\tcase 'vennLeft':\n\t\t\treturn await import('../icons/vennLeft');\n\t\tcase 'vennRight':\n\t\t\treturn await import('../icons/vennRight');\n\t\tcase 'vennUnion':\n\t\t\treturn await import('../icons/vennUnion');\n\t\tcase 'videoChat':\n\t\t\treturn await import('../icons/videoChat');\n\t\tcase 'video':\n\t\t\treturn await import('../icons/video');\n\t\tcase 'videoPlus':\n\t\t\treturn await import('../icons/videoPlus');\n\t\tcase 'videoSlash':\n\t\t\treturn await import('../icons/videoSlash');\n\t\tcase 'vizDesigner':\n\t\t\treturn await import('../icons/vizDesigner');\n\t\tcase 'voicemail':\n\t\t\treturn await import('../icons/voicemail');\n\t\tcase 'walk':\n\t\t\treturn await import('../icons/walk');\n\t\tcase 'windowCirclePlus':\n\t\t\treturn await import('../icons/windowCirclePlus');\n\t\tcase 'windowCode':\n\t\t\treturn await import('../icons/windowCode');\n\t\tcase 'windowDatabase':\n\t\t\treturn await import('../icons/windowDatabase');\n\t\tcase 'windowDialog':\n\t\t\treturn await import('../icons/windowDialog');\n\t\tcase 'window':\n\t\t\treturn await import('../icons/window');\n\t\tcase 'windowGlobe':\n\t\t\treturn await import('../icons/windowGlobe');\n\t\tcase 'windowInfo':\n\t\t\treturn await import('../icons/windowInfo');\n\t\tcase 'windows':\n\t\t\treturn await import('../icons/windows');\n\t\tcase 'wishlist':\n\t\t\treturn await import('../icons/wishlist');\n\t\tcase 'workNote':\n\t\t\treturn await import('../icons/workNote');\n\t\tcase 'workNoteTriangleExclamation':\n\t\t\treturn await import('../icons/workNoteTriangleExclamation');\n\t\tcase 'workflowApprovalAction':\n\t\t\treturn await import('../icons/workflowApprovalAction');\n\t\tcase 'workflow':\n\t\t\treturn await import('../icons/workflow');\n\t\tcase 'workflowOnHold':\n\t\t\treturn await import('../icons/workflowOnHold');\n\t\tcase 'workflowSkip':\n\t\t\treturn await import('../icons/workflowSkip');\n\t\tcase 'wrench':\n\t\t\treturn await import('../icons/wrench');\n\t\tcase 'wrenchPencil':\n\t\t\treturn await import('../icons/wrenchPencil');\n\t\tcase 'youtube':\n\t\t\treturn await import('../icons/youtube');\n\t\tcase 'zoom':\n\t\t\treturn await import('../icons/zoom');\n\t}\n}\n","// supported variants and the index they are stored at in the icon set\nexport const VARIANTS = {\n\tFill: 0,\n\tOutline: 1,\n};\n\nexport const ICON_SIZES = {\n\tsm: {pixelSize: 12, indexInSet: 0},\n\tmd: {pixelSize: 16, indexInSet: 1},\n\tlg: {pixelSize: 24, indexInSet: 2},\n\txl: {pixelSize: 32, indexInSet: 3},\n};\n","import camelCase from 'lodash/camelCase';\nimport {dangerouslyCreateElementFromString} from '@servicenow/ui-renderer-snabbdom';\n\nimport aliases from '../aliases.json';\nimport {importIconSet} from '../utils/cache';\nimport {ICON_SIZES, VARIANTS} from './maps';\nimport {emptyAssetLoadQueue} from './cache';\n\n/**\n * Replaces `Start` and `End` in the icon name with the appropriate direction\n *\n * @param {string} name - camel-case icon name\n * @param {\"rtl\"|\"ltr\"} dir\n * @param {boolean} supportRtl\n * @returns {string} updated icon name\n */\nconst convertLogicalDir = (name, dir) => {\n\tif (!name) {\n\t\treturn '';\n\t}\n\n\tconst isRTL = dir === 'rtl';\n\n\treturn name\n\t\t.replace('Start', isRTL ? 'Right' : 'Left')\n\t\t.replace('End', isRTL ? 'Left' : 'Right');\n};\n\nconst cache = {};\n/**\n * Gets icon set from in memory cache, localStorage, or dynamic import\n *\n * @param {string} name - camel-case icon set name\n */\nconst getIconSet = async (name) => {\n\tlet iconSet = cache[name];\n\n\tif (iconSet) return iconSet;\n\n\ticonSet = await importIconSet(name);\n\n\tcache[name] = iconSet;\n\n\treturn iconSet;\n};\n\n/**\n * Accesses the icon info from the icon-set, returning relevant data.\n *\n * @param {string} name - camel-case icon name\n * @param {\"xs\"|\"sm\"|\"md\"|\"lg\"} size\n * @param {\"rtl\"|\"ltr\"} dir\n * @param {boolean} supportRtl\n *\n * @returns {{data: string, isPathFragment: boolean, pixelSize: number}}\n */\nasync function getIconDataFromCamel(name, size, dir) {\n\tif (!name || !size) return null;\n\n\t// arrowStartFill -> arrowLeftFill\n\tconst logicalName = convertLogicalDir(name, dir);\n\n\t// arrowLeftFill ->\n\t//   baseName = arrowLeft\n\t//   variant = Fill\n\tconst match = logicalName.match(/(.+)(Fill|Outline)$/);\n\tif (!match) return null;\n\tconst [, baseName, variant] = match;\n\tif (!(variant in VARIANTS) && !(size in ICON_SIZES)) {\n\t\treturn null;\n\t}\n\n\t// convert possible alias to updated name\n\tconst realName = aliases[baseName] || baseName;\n\tconst icons = await getIconSet(realName);\n\n\tif (icons) {\n\t\tconst variantIndex = VARIANTS[variant];\n\t\tconst {pixelSize, indexInSet} = ICON_SIZES[size];\n\n\t\t// some icons are identical for both variants. These only have a single\n\t\t// entry in the set\n\t\tconst allSizes = icons[variantIndex] || icons[0];\n\t\tconst data = allSizes[indexInSet];\n\n\t\treturn {\n\t\t\tdata,\n\t\t\tisPathFragment: !data.startsWith('<'),\n\t\t\tpixelSize,\n\t\t};\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns a string that contains the icon data. Primarily supports\n * backwards-compatibility where the icon-set would be directly indexed by the\n * full name, variant, and pixel size\n *\n * @param {string} nameVariantSize - full camel-case icon description. e.g.: \"workflowFill12\"\n * @param {\"ltr\"|\"rtl\"} dir\n *\n * @returns {string} the inner SVG data as a string (usually a <path>, but may\n * also be a <g> or other shape)\n */\nexport async function getIconStringFromCamel(nameVariantSize, dir) {\n\tif (!nameVariantSize) return null;\n\n\tconst nameAndVariant = nameVariantSize.slice(0, -2);\n\tconst pixelSizeStr = nameVariantSize.slice(-2);\n\n\tconst size = Object.keys(ICON_SIZES).find((size) => {\n\t\tconst {pixelSize} = ICON_SIZES[size];\n\t\treturn String(pixelSize) === pixelSizeStr;\n\t});\n\n\tconst result = await getIconDataFromCamel(nameAndVariant, size, dir);\n\tif (!result) return null;\n\n\treturn result.isPathFragment\n\t\t? `<path d='${result.data}'></path>`\n\t\t: result.data;\n}\n\n/**\n * Returns the appropriate JSX nodes and pixel size information for an icon\n * name and size\n *\n * @param {string} name - either camelCase or kebab-case icon name and variant, e.g: \"workflow-fill\"\n * @param {\"xs\"|\"sm\"|\"md\"|\"lg\"} size\n * @param {\"ltr\"|\"rtl\"} dir\n *\n * @returns {{icon: JSX, pixelSize: number}}\n */\nexport async function getIconNode(name, size, dir = 'ltr') {\n\tconst result = await getIconDataFromCamel(camelCase(name), size, dir);\n\tif (!result) return null;\n\n\tconst key = `${name}_${size}`;\n\ttry {\n\t\tvar cacheString = localStorage.getItem('now-icon-cache');\n\t\tvar localStorageCache = JSON.parse(cacheString);\n\t\tlocalStorageCache[key] = JSON.stringify(result);\n\t\tlocalStorage.setItem('now-icon-cache', JSON.stringify(localStorageCache));\n\t} catch (e) {\n\t\t// swallow the exception, as the icons will still show up.\n\t}\n\n\tconst icon = result.isPathFragment ? (\n\t\t<path attr-d={result.data} />\n\t) : (\n\t\tdangerouslyCreateElementFromString(`<g>${result.data}</g>`).children\n\t);\n\temptyAssetLoadQueue(key);\n\n\treturn {\n\t\ticon,\n\t\tpixelSize: result.pixelSize,\n\t\tisLoading: false,\n\t\tisLoaded: true,\n\t};\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {toEmbeddableUrl} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {getIconNode} from './utils/decode-icon';\nimport {cache, queueAssetLoad} from './utils/cache';\nimport styles from './_now-icon.scss';\nimport {ICON_SIZES} from './utils/maps';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\n\nconst {COMPONENT_RENDER_REQUESTED} = actionTypes;\nconst SUPPORT_RTL_MAP = new Map([\n\t['-left-', '-right-'],\n\t['-right-', '-left-'],\n]);\nconst LOGICAL_NAME_MAP = new Map([\n\t['-start-', '-end-'],\n\t['-end-', '-start-'],\n]);\n\nconst getIconName = (icon, dir, supportRtl) =>\n\tsupportRtl && dir === 'rtl'\n\t\t? icon.replace(/-left-|-right-/g, (match) => SUPPORT_RTL_MAP.get(match))\n\t\t: dir === 'rtl'\n\t\t\t? icon.replace(/-start-|-end-/g, (match) => LOGICAL_NAME_MAP.get(match))\n\t\t\t: icon;\n\nconst view = (state) => {\n\tconst {icon, size, dir, spin, configAria, supportRtl} = state.properties;\n\tconst key = `${getIconName(icon, dir, supportRtl)}_${size}`;\n\tconst hasLabel =\n\t\tconfigAria && configAria.icon && Boolean(configAria.icon['aria-label']);\n\n\tconst result = cache.has(key) && cache.get(key);\n\n\tif (!result && !size) return null;\n\n\treturn icon.includes('.') || icon.includes(':') ? (\n\t\t<img\n\t\t\tclass={{\n\t\t\t\t'now-icon': true,\n\t\t\t\t'is-custom': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t}}\n\t\t\tsrc={toEmbeddableUrl(icon)}\n\t\t\talt=\"\"\n\t\t\t{...filterAriaAttributes(configAria, 'icon')}\n\t\t\trole=\"presentation\"\n\t\t/>\n\t) : (\n\t\t<svg\n\t\t\tclass={{\n\t\t\t\t'now-icon': true,\n\t\t\t\t'-spin': spin,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t}}\n\t\t\tkey={key}\n\t\t\t{...filterAriaAttributes(configAria, 'icon')}\n\t\t\trole={hasLabel ? 'img' : undefined}\n\t\t\taria-hidden={hasLabel ? undefined : 'true'}\n\t\t\tattr-viewBox={`0 0 ${ICON_SIZES[size].pixelSize} ${ICON_SIZES[size].pixelSize}`}\n\t\t>\n\t\t\t{result && result.icon ? result.icon : null}\n\t\t</svg>\n\t);\n};\n/**\n * A symbol used to launch an action, add clarity, or provide additional context.\n *\n * ```jsx\n * <now-icon icon=\"address-book-outline\" size=\"md\" />\n * ```\n *\n * Note: You can horizontally mirror any direction-sensitive icon used\n * with a right-to-left language. Set the document\n * `dir` attribute to \"rtl\" and replace `-left` or `-right` in\n * the icon name with `-start` and `-end`. If you do not want the\n * icon to mirror horizontally, use the explicit direction in the icon name instead.\n * For example, use `arrow-left-fill` instead of `arrow-start-fill`.\n *\n * ```jsx\n * <document dir=\"rtl\">\n *   <now-icon icon=\"arrow-start-fill\" />\n * </document>\n * ```\n *\n * @seismicElement now-icon\n * @summary Custom icon set for the Now Design System.\n * @uib.label Icon\n * @uib.icon icon\n * @uib.description A symbol used to launch an action, add clarity, or provide additional context.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, size, configAria, supportRtl\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.layout.internationalization.children supportRtl\n * @uib.layout.internationalization.icon translated-text-outline\n */\ncreateEnhancedElement('now-icon', {\n\tproperties: {\n\t\t/**\n\t\t * Name of the icon in dash-case, including the `-fill` or `-outline` suffix to\n\t\t * indicate whether the icon is filled or outlined.\n\t\t * Can also be set to a relative or absolute path to an img to create a custom icon\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.defaultValue circle-question-outline\n\t\t * @uib.description Name of the icon in dash-case, including the '-fill' or '-outline' suffix to indicate whether the icon is filled or outlined.\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the icon flips along the inline axis if the document dir=\"rtl\".\n\t\t * Set this property for icons that are tied to writing direction\n\t\t * @type {boolean}\n\t\t * @uib.label Flip icon direction\n\t\t * @uib.description When true, the icon flips along the inline axis if the document dir=\"rtl\". Set this property for icons that are tied to writing direction\n\t\t */\n\t\tsupportRtl: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Size of the icon.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * @uib.description Size of the icon in the format 'sm', 'md', 'lg', or 'xl'\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {type: 'string', enum: ['sm', 'md', 'lg', 'xl']},\n\t\t},\n\t\t/**\n\t\t * When true, the icon spins. For example, set this property to true\n\t\t * when used with the `loader-fill` icon.\n\t\t * @type {boolean}\n\t\t */\n\t\tspin: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-icon. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'icon' key corresponds to the svg element in\n\t\t * now-icon. See https://www.w3.org/TR/wai-aria-1.2/#img for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'icon': {'aria-*': string}}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Sets ARIA properties on the inner html 'svg' element\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ticon: configAriaLabelRoleSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_RENDER_REQUESTED]: async ({\n\t\t\tupdateState,\n\t\t\taction,\n\t\t\tproperties: {icon, supportRtl, size, dir},\n\t\t}) => {\n\t\t\tif (!size) {\n\t\t\t\taction.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst name = getIconName(icon, dir, supportRtl);\n\t\t\tconst key = `${name}_${size}`;\n\n\t\t\t// if icon in cache, no need to re-get it\n\t\t\tif (cache.has(key)) {\n\t\t\t\tconst value = cache.get(key);\n\t\t\t\tif (value.isLoading) {\n\t\t\t\t\treturn queueAssetLoad(key).then(() => {\n\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tpath: 'iconResolved',\n\t\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (value.isLoaded) return;\n\t\t\t}\n\n\t\t\tcache.set(key, {\n\t\t\t\tisLoading: true,\n\t\t\t\tisLoaded: false,\n\t\t\t});\n\n\t\t\t// theoretically we could prevent this render as we have not resolved the\n\t\t\t// svg yet but let's render the empty icon ASAP to avoid late layout shifts\n\t\t\tconst result = await getIconNode(name, size);\n\n\t\t\tif (result) {\n\t\t\t\tcache.set(key, result);\n\t\t\t\tupdateState({\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: 'iconResolved',\n\t\t\t\t\tvalue: key,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n\tview,\n\tstyles,\n});\n","import {t} from 'sn-translate';\n\nexport default function localizePresence(presence) {\n\tconst busy = t({\n\t\tkey: 'now-icon-presence-busy',\n\t\tmessage: 'busy',\n\t\tcomment:\n\t\t\t\"Adjective. Represents a user's online status - e.g. busy, away, available, or offline.\",\n\t});\n\tconst away = t({\n\t\tkey: 'now-icon-presence-away',\n\t\tmessage: 'away',\n\t\tcomment:\n\t\t\t\"Adjective. Represents a user's online status - e.g. busy, away, available, or offline.\",\n\t});\n\tconst available = t({\n\t\tkey: 'now-icon-presence-available',\n\t\tmessage: 'available',\n\t\tcomment:\n\t\t\t\"Adjective. Represents a user's online status - e.g. busy, away, available, or offline.\",\n\t});\n\tconst offline = t({\n\t\tkey: 'now-icon-presence-offline',\n\t\tmessage: 'offline',\n\t\tcomment:\n\t\t\t\"Adjective. Represents a user's online status - e.g. busy, away, available, or offline.\",\n\t});\n\treturn {\n\t\tbusy,\n\t\taway,\n\t\tavailable,\n\t\toffline,\n\t}[presence];\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_now-icon.scss';\nimport {getIconNode} from './utils/decode-icon';\nimport {cache} from './utils/cache';\nimport localizePresence from './utils/localize-presence';\n\nconst {COMPONENT_RENDER_REQUESTED} = actionTypes;\n\nconst backgroundPaths = {\n\tsm: 'M2 6.5C2 8.98529 4.01471 11 6.5 11C8.98529 11 11 8.98529 11 6.5C11 4.01471 8.98529 2 6.5 2C4.01471 2 2 4.01471 2 6.5Z',\n\tmd: 'M3 8.5C3 11.5376 5.46243 14 8.5 14C11.5376 14 14 11.5376 14 8.5C14 5.46243 11.5376 3 8.5 3C5.46243 3 3 5.46243 3 8.5Z',\n\tlg: 'M12.5 21C17.1944 21 21 17.1944 21 12.5C21 7.80558 17.1944 4 12.5 4C7.80558 4 4 7.80558 4 12.5C4 17.1944 7.80558 21 12.5 21Z',\n\txl: 'M16.5 26C21.7467 26 26 21.7467 26 16.5C26 11.2533 21.7467 7 16.5 7C11.2533 7 7 11.2533 7 16.5C7 21.7467 11.2533 26 16.5 26Z',\n};\n\n// Safe to assume this is the base for now. If base font size has the potential to change in the future, we'll have to make this dynamic somehow.\nconst BASE_FONT_SIZE = 16;\n\nconst view = (state) => {\n\tconst {size, presence} = state.properties;\n\tconst windowsHighContrast = window.matchMedia(\n\t\t'(forced-colors: active)',\n\t).matches;\n\tconst iconName = `presence-${presence}-fill`;\n\tconst key = `${iconName}_${size}_ltr`;\n\tconst result = cache.has(key) && cache.get(key);\n\tif (!result) return null;\n\n\tconst iconRems = result.pixelSize / BASE_FONT_SIZE;\n\tconst presenceLabel = localizePresence(presence);\n\n\treturn (\n\t\t<svg\n\t\t\trole=\"img\"\n\t\t\taria-label={presenceLabel}\n\t\t\tclass={{\n\t\t\t\t'now-icon-presence': true,\n\t\t\t\t[`-${presence}`]: size,\n\t\t\t\t'high-contrast': windowsHighContrast,\n\t\t\t}}\n\t\t\tstyle={{\n\t\t\t\tinlineSize: `${iconRems}rem`,\n\t\t\t\tblockSize: `${iconRems}rem`,\n\t\t\t}}\n\t\t\tkey={key}\n\t\t\tattr-viewBox={`0 0 ${result.pixelSize} ${result.pixelSize}`}\n\t\t>\n\t\t\t{windowsHighContrast ? (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<path attr-d={backgroundPaths[size]} attr-fill=\"canvas\" />\n\t\t\t\t\t{result.icon}\n\t\t\t\t</Fragment>\n\t\t\t) : (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<path attr-d={backgroundPaths[size]} attr-fill=\"white\" />\n\t\t\t\t\t{result.icon}\n\t\t\t\t</Fragment>\n\t\t\t)}\n\t\t</svg>\n\t);\n};\n\n/**\n * Presence indicator icon that shows the status and availability of a user.\n *\n * ```jsx\n * <now-icon-presence presence=\"available\" size=\"lg\" />\n *\n * <now-icon-presence presence=\"busy\" show-pattern />\n * ```\n *\n * Note: Per [WCAG Success Criterion 1.4.1](https://www.w3.org/TR/WCAG21/#use-of-color),\n * use of these icons alone is not an accessible method to communicate a\n * user's online presence. Set the `show-pattern` property to render a\n * different glyph shape for each `presence` value. For screen reader users,\n * an 'aria-label' is provided with this component by default. A utility method\n * called `localizePresence` is also available. This method can be used to provide an\n * internationalized version of the `presence` value in a tooltip or\n * other supplemental aids for users with limited color vision.\n *\n * ```js\n * import {localizePresence} from '@servicenow/now-icon';\n * import {t} from 'sn-translate';\n *\n * const a11yLabel = t('User Status: {0}', localizePresence(presence));\n * ```\n *\n * @seismicElement now-icon-presence\n * @summary Presence indicator icon used to show availability of a user.\n */\ncreateEnhancedElement('now-icon-presence', {\n\tproperties: {\n\t\t/**\n\t\t * Presence of the user that drives the visual display of the icon.\n\t\t * @type {('available'|'busy'|'away'|'offline')}\n\t\t */\n\t\tpresence: {},\n\t\t/**\n\t\t * Size of the icon.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t */\n\t\tsize: {default: 'md'},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\t\taccessibilityMode: {default: false},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\n\t\tshowPattern: {default: false},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_RENDER_REQUESTED]: async ({\n\t\t\tupdateState,\n\t\t\taction,\n\t\t\tproperties: {size, presence},\n\t\t}) => {\n\t\t\tconst iconName = `presence-${presence}-fill`;\n\t\t\tconst key = `${iconName}_${size}_ltr`;\n\n\t\t\tif (!cache.has(key)) {\n\t\t\t\taction.preventDefault();\n\n\t\t\t\tconst result = await getIconNode(iconName, size);\n\t\t\t\tcache.set(key, result);\n\t\t\t\tupdateState({\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: 'iconResolved',\n\t\t\t\t\tvalue: key,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n\tview,\n\tstyles,\n});\n","import {createCustomElement, actionTypes} from '@servicenow/ui-core';\nimport lottie from 'lottie-web';\nimport styles from './_now-icon-animated.scss';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {createHttpEffect} from '@servicenow/ui-effect-http';\n\nconst {COMPONENT_DOM_READY} = actionTypes;\nconst CACHE_VERSION = 2;\nconst NOW_ICON_ANIMATED_CACHE_NAME = `now-icon-animated-json-cache-v${CACHE_VERSION}`;\nconst NOW_ICON_ANIMATED_ASSETS_PATH = '/images/@servicenow/now-icon/';\nconst getCacheKey = (name) => `${NOW_ICON_ANIMATED_CACHE_NAME}-${name}`;\n\nexport const fetchFromCache = (dispatch, icon, size) => {\n\tconst key = getCacheKey(`${icon}-${size}.json`);\n\tlet data, jsonString;\n\n\ttry {\n\t\tjsonString = localStorage.getItem(key);\n\t} catch (e) {\n\t\tdispatch('PRIVATE#FETCH_ICON_ANIMATION', {icon, size});\n\t\treturn;\n\t}\n\n\tif (jsonString) {\n\t\ttry {\n\t\t\tdata = JSON.parse(jsonString);\n\t\t} catch (e) {\n\t\t\ttry {\n\t\t\t\tlocalStorage.removeItem(key);\n\t\t\t} catch (e) {\n\t\t\t\t// Noop\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!data) {\n\t\tdispatch('PRIVATE#FETCH_ICON_ANIMATION', {icon, size});\n\t\treturn;\n\t}\n\n\tdispatch('PRIVATE#CREATE_ICON_ANIMATION', data);\n};\n\nexport const fetchIconAnimation = createHttpEffect(\n\t`${NOW_ICON_ANIMATED_ASSETS_PATH}:icon-:size.json`,\n\t{\n\t\tmethod: 'GET',\n\t\tbatch: false,\n\t\tpathParams: ['icon', 'size'],\n\t\tsuccessActionType: 'PRIVATE#ANIMATION_FETCH_SUCCEEDED',\n\t\terrorActionType: 'PRIVATE#ANIMATION_FETCH_FAILED',\n\t},\n);\n\nexport const injectAria = (svg, configAriaToUse) => {\n\tconst hasLabel = configAriaToUse && Boolean(configAriaToUse['aria-label']);\n\tif (svg) {\n\t\t// Iterate over the object's properties and set each attribute\n\t\tfor (const [name, value] of Object.entries(configAriaToUse)) {\n\t\t\tsvg.setAttribute(name, value);\n\t\t}\n\n\t\tif (hasLabel) {\n\t\t\tsvg.setAttribute('role', 'img');\n\t\t} else {\n\t\t\tsvg.setAttribute('aria-hidden', 'true');\n\t\t}\n\t}\n};\n\nconst view = (state) => {\n\tconst {size} = state.properties;\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-icon-animated': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t}}\n\t\t></div>\n\t);\n};\n\n/**\n * A symbol used to launch an action, add clarity, or provide additional context with animation.\n *\n * ```jsx\n * <now-icon-animated icon=\"ai-sparkle-fill\" size=\"md\" />\n * ```\n *\n * @seismicElement now-icon-animated\n * @summary An animated icon component using Lottie to display animations.\n * @uib.label Animated Icon\n * @uib.icon icon\n * @uib.description An animated icon component using Lottie to display animations.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, size, configAria\n * @uib.actions NOW_ICON_ANIMATED#CONTENT_VISIBLE\n */\ncreateCustomElement('now-icon-animated', {\n\tview,\n\tstyles,\n\tinitialState: {\n\t\tanimation: null,\n\t},\n\tproperties: {\n\t\t/**\n\t\t * Name of the icon in dash-case, including the `-fill` or `-outline` suffix to\n\t\t * indicate whether the icon is filled or outlined.\n\t\t * @type {('ai-sparkle-fill')}\n\t\t * @uib.label Icon\n\t\t * @uib.defaultValue ai-sparkle-fill\n\t\t * @uib.description Name of the icon in dash-case, including the '-fill' or '-outline' suffix to indicate whether the icon is filled or outlined.\n\t\t * @uib.fieldType choice\n\t\t */\n\t\ticon: {required: true, schema: {type: 'string', enum: ['ai-sparkle-fill']}},\n\t\t/**\n\t\t * Size of the icon.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * @uib.description Size of the icon in the format 'sm', 'md', 'lg', or 'xl'\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {type: 'string', enum: ['sm', 'md', 'lg', 'xl']},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-icon-animated. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'icon' key corresponds to the svg element in\n\t\t * now-icon-animated. See https://www.w3.org/TR/wai-aria-1.2/#img for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'icon': {'aria-*': string}}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Sets ARIA properties on the inner html 'svg' element\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ticon: configAriaLabelRoleSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: {\n\t\t\teffect: async ({state, dispatch}) => {\n\t\t\t\tconst {icon, size} = state.properties;\n\n\t\t\t\t//remove the animation instances if they already exist\n\t\t\t\tif (state.animation && Object.keys(state.animation).length !== 0) {\n\t\t\t\t\tstate.animation.destroy();\n\t\t\t\t}\n\t\t\t\tfetchFromCache(dispatch, icon, size);\n\t\t\t},\n\t\t},\n\t\t['PRIVATE#FETCH_ICON_ANIMATION']: fetchIconAnimation,\n\t\t['PRIVATE#ANIMATION_FETCH_SUCCEEDED']: {\n\t\t\teffect: async (coeffects) => {\n\t\t\t\tconst {action, dispatch} = coeffects;\n\n\t\t\t\t// Use request URL to get the file name to prevent\n\t\t\t\t// updated props causing incorrect cache key\n\t\t\t\tconst requestUrl = action.meta.request.updatedUrl;\n\t\t\t\tconst fileName = requestUrl.replace(NOW_ICON_ANIMATED_ASSETS_PATH, '');\n\t\t\t\tconst data = action.payload;\n\t\t\t\tconst key = getCacheKey(fileName);\n\n\t\t\t\tif (!data) return;\n\n\t\t\t\ttry {\n\t\t\t\t\tlocalStorage.setItem(key, JSON.stringify(data));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Noop\n\t\t\t\t}\n\n\t\t\t\tdispatch('PRIVATE#CREATE_ICON_ANIMATION', data);\n\t\t\t},\n\t\t},\n\t\t['PRIVATE#ANIMATION_FETCH_FAILED']: {\n\t\t\teffect: () => {\n\t\t\t\treturn;\n\t\t\t},\n\t\t},\n\t\t['PRIVATE#CREATE_ICON_ANIMATION']: {\n\t\t\teffect: (coeffects) => {\n\t\t\t\tconst {action, host, properties, updateState, dispatch} = coeffects;\n\n\t\t\t\tconst data = action.payload;\n\t\t\t\tconst {configAria, icon} = properties;\n\t\t\t\tconst getCanvas = host.shadowRoot.querySelector('.now-icon-animated');\n\t\t\t\tconst animation = lottie.loadAnimation({\n\t\t\t\t\tcontainer: getCanvas,\n\t\t\t\t\trenderer: 'svg',\n\t\t\t\t\tanimationData: data,\n\t\t\t\t\tautoplay: false,\n\t\t\t\t\tloop: false,\n\t\t\t\t});\n\n\t\t\t\t/*\n\t\t\t\t * Support OS based \"prefers reduced motion\" setting\n\t\t\t\t **/\n\t\t\t\tlet reducedMotion = false;\n\t\t\t\tconst mediaQuery = window.matchMedia(\n\t\t\t\t\t'(prefers-reduced-motion: reduce)',\n\t\t\t\t);\n\t\t\t\tif (mediaQuery.matches) {\n\t\t\t\t\treducedMotion = true;\n\t\t\t\t}\n\n\t\t\t\tconst handleAnimationLoad = () => {\n\t\t\t\t\tconst svg = host.shadowRoot.querySelector('svg');\n\n\t\t\t\t\t//Inject aria attributes\n\t\t\t\t\tconst configAriaToUse = {\n\t\t\t\t\t\t...filterAriaAttributes(configAria, 'icon'),\n\t\t\t\t\t};\n\n\t\t\t\t\tif (svg) injectAria(svg, configAriaToUse);\n\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpath: 'animation',\n\t\t\t\t\t\tvalue: animation,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tdispatch('NOW_ICON_ANIMATED#CONTENT_VISIBLE', {\n\t\t\t\t\t\tanimation,\n\t\t\t\t\t\ticon,\n\t\t\t\t\t\treducedMotion,\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tanimation.addEventListener('DOMLoaded', handleAnimationLoad, {\n\t\t\t\t\tonce: true,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the lottie animation is rendered on the page.\n\t\t * @uib.label Animated icon content visible\n\t\t * @uib.description Dispatched when the lottie animation is rendered on the page. The payload will include animation, icon name, and if the user prefers reduced motion.\n\t\t * @type {{object}}\n\t\t * Each event will return a reference to the lottie animation instance and the name of icon, allowing users to interact with the lottie API directly. The icon property is included if the user needs to distinguish in the use case where a single event handler is shared.\n\t\t * `['NOW_ICON_ANIMATED#CONTENT_VISIBLE']:({action:{payload}}) => {\n\t\t * \t\tconst {animation} = payload;\n\t\t * \t\tanimation.play();\n\t\t * }`\n\t\t * See [Lottie Usage for animation instance](https://airbnb.io/projects/lottie-web/).\n\t\t *\n\t\t * The payload also contains a boolean value for reduced motion, which can be used to determine if the user prefers reduced motion.\n\t\t * `['NOW_ICON_ANIMATED#CONTENT_VISIBLE']:({action:{payload}}) => {\n\t\t * \t\tconst {animation, reducedMotion} = payload;\n\t\t * \t\tif (!reducedMotion) {\n\t\t * \t\t\tanimation.play();\n\t\t * \t\t}\n\t\t * }`\n\t\t */\n\t\t'NOW_ICON_ANIMATED#CONTENT_VISIBLE': {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'object'},\n\t\t},\n\t},\n});\n","import './now-icon';\nimport './now-icon-presence';\nimport './now-icon-animated';\nexport {default as localizePresence} from './utils/localize-presence';\nimport {getIconStringFromCamel} from './utils/decode-icon';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nexport const getIcon = async (nameAndSize) =>\n\tgetIconStringFromCamel(nameAndSize);\n\n// return\nexport const iconSet = new Proxy(\n\t{},\n\t{\n\t\tget() {\n\t\t\t/* eslint-disable-next-line no-console */\n\t\t\tconsole.warn(\n\t\t\t\t'iconSet has been deprecated. Please import async getIcon instead.',\n\t\t\t);\n\t\t\treturn '';\n\t\t},\n\t},\n);\n","export const orderedSizeMap = ['sm', 'md', 'lg'];\nexport const pixelSizeMap = {\n\tsm: 56,\n\tmd: 216,\n\tlg: 352,\n};\n\nconst aMap = {\n\t'ai-general': {},\n\t'add-attachment': {},\n\t'add-data': {},\n\t'completed-tasks': {},\n\terror: {},\n\t'first-time-user': {},\n\tinterrupted: {},\n\t'no-activities': {},\n\t'no-data': {},\n\t'no-search-results': {},\n\toffline: {},\n\tpermissions: {},\n\tunconfigured: {},\n};\n\n// initialize all illustrations with all sizes\nObject.keys(aMap).forEach((key) => {\n\taMap[key].sizes = {};\n\taMap[key].type = 'svg';\n\torderedSizeMap.forEach((size) => {\n\t\taMap[key].sizes[size] = {loaded: false, isLoading: false, data: null};\n\t});\n});\n\nexport const assetMap = aMap;\n","export default class ThemeableIllustration {\n\tstatic SM = 'sm';\n\tstatic MD = 'md';\n\tstatic LG = 'lg';\n\tstatic AUTO = 'auto';\n\n\tconstructor() {\n\t\tthis.LINEAR_GRADIENT = 'lineargradient';\n\t\tthis.LINEAR_FIX = 'linearGradient';\n\t\tthis.RADIAL_GRADIENT = 'radialgradient';\n\t\tthis.RADIAL_FIX = 'radialGradient';\n\t\tthis.prefix = '--now-illustration';\n\t\tthis.delayHash = {};\n\t}\n\n\tisBrokenGradient(node) {\n\t\treturn (\n\t\t\tnode.localName === this.LINEAR_GRADIENT ||\n\t\t\tnode.localName === this.RADIAL_GRADIENT\n\t\t);\n\t}\n\n\thasBadGradient(svg = '') {\n\t\treturn (\n\t\t\tsvg.indexOf(this.LINEAR_FIX) > -1 || svg.indexOf(this.RADIAL_FIX) > -1\n\t\t);\n\t}\n\n\tclearXLink(svg) {\n\t\tlet svgClean = svg;\n\t\tif (svgClean.includes('xlink:href')) {\n\t\t\tsvgClean = svgClean.replaceAll('xlink:href', 'href');\n\t\t}\n\t\tif (svgClean.includes('xmlns:xlink')) {\n\t\t\tsvgClean = svgClean.replace(/xmlns:xlink=\".+\"/g, '');\n\t\t}\n\n\t\treturn svgClean;\n\t}\n\n\tfix(node) {\n\t\tconst attrs = [];\n\t\t//get all attributes\n\t\tfor (const attr of node.attributes) {\n\t\t\tattrs.push(attr); //attr.name, attr.value\n\t\t}\n\n\t\t//get all children\n\t\tconst children = [];\n\t\tif (node.hasChildNodes()) {\n\t\t\tnode.childNodes.forEach((n) => {\n\t\t\t\tchildren.push(n.cloneNode(true));\n\t\t\t});\n\t\t}\n\n\t\t//create correct node\n\t\tconst tag =\n\t\t\tnode.localName === this.RADIAL_GRADIENT\n\t\t\t\t? this.RADIAL_FIX\n\t\t\t\t: node.localName === this.LINEAR_GRADIENT\n\t\t\t\t\t? this.LINEAR_FIX\n\t\t\t\t\t: node.localName;\n\t\tconst lg = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\n\t\t//replace\n\t\tnode.replaceWith(lg);\n\n\t\t//add attr back on\n\t\tattrs.forEach((a) => {\n\t\t\tlg.setAttribute(a.name, a.value);\n\t\t});\n\n\t\t//add children\n\t\tchildren.forEach((c) => {\n\t\t\tlg.appendChild(c);\n\t\t});\n\t}\n\n\tfindAndFixGradients(node) {\n\t\tif (node.localName && node.localName !== 'style') {\n\t\t\tif (this.isBrokenGradient(node)) {\n\t\t\t\tthis.fix(node);\n\t\t\t} else if (node.hasChildNodes()) {\n\t\t\t\tnode.childNodes.forEach((n) => {\n\t\t\t\t\tthis.findAndFixGradients(n);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tgetHookName(illustration, size) {\n\t\treturn `${this.prefix}--${illustration}-${size}--url`;\n\t}\n\thasThemeImageUrl({behaviors: {theme}}, {illustration, size}) {\n\t\tif (size === this.constructor.AUTO) {\n\t\t\treturn (\n\t\t\t\tthis.hasThemeImageUrl(\n\t\t\t\t\t{behaviors: {theme}},\n\t\t\t\t\t{illustration, size: this.constructor.SM},\n\t\t\t\t) &&\n\t\t\t\tthis.hasThemeImageUrl(\n\t\t\t\t\t{behaviors: {theme}},\n\t\t\t\t\t{illustration, size: this.constructor.MD},\n\t\t\t\t) &&\n\t\t\t\tthis.hasThemeImageUrl(\n\t\t\t\t\t{behaviors: {theme}},\n\t\t\t\t\t{illustration, size: this.constructor.LG},\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tconst hookName = this.getHookName(illustration, size);\n\t\treturn theme?.[hookName] !== undefined;\n\t}\n\tcancelDelay(illustration, size) {\n\t\twindow.cancelAnimationFrame(this.delayHash[illustration][size].requestId);\n\t}\n\tstartDelay(illustration, size, fn, delay, start = Date.now()) {\n\t\tif (!this.delayHash[illustration]) this.delayHash[illustration] = {};\n\t\tthis.delayHash[illustration][size] = {\n\t\t\tdelay,\n\t\t\tstart,\n\t\t\trequestId: null,\n\t\t};\n\t\tthis.delayHash[illustration][size].requestId = requestAnimationFrame(\n\t\t\tthis.intervalFn(illustration, size, fn),\n\t\t);\n\t}\n\tintervalFn(illustration, size, fn) {\n\t\treturn () => {\n\t\t\tconst {start, delay} = this.delayHash[illustration][size];\n\t\t\tconst delta = Date.now() - start;\n\t\t\tif (delta > delay) fn();\n\t\t\telse this.startDelay(illustration, size, fn, delay, start);\n\t\t};\n\t}\n\n\tcleanCSSImport(data) {\n\t\tif (/@import/.test(data)) {\n\t\t\treturn this.cleanCSS(data);\n\t\t}\n\t\treturn data;\n\t}\n\n\tcleanCSS(data) {\n\t\tif (!this.isCleaned(data)) {\n\t\t\tconst r = this.getResults(data, 0);\n\t\t\tconst updated = data.replace(`\\t\\t${r}\\n`, '');\n\t\t\treturn this.cleanCSSImport(updated);\n\t\t}\n\t\treturn data;\n\t}\n\n\tisCleaned(data) {\n\t\tconst r = this.getResults(data, 1);\n\t\treturn r && !this.hasRemoteUrl(r);\n\t}\n\n\tgetResults(data, index = -1) {\n\t\tconst pattern = /@import (url\\(.+)/g;\n\t\tlet results = pattern.exec(data);\n\t\tdelete results.input;\n\t\tdelete results.groups;\n\t\tdelete results.index;\n\t\tif (index > -1) return results[index];\n\t\treturn results;\n\t}\n\n\thasRemoteUrl(str) {\n\t\tconst remote = /http:|https:/g;\n\t\treturn remote.test(str);\n\t}\n\n\tgetUrlFromHook({behaviors: {theme}}, {illustration, size}) {\n\t\tconst hookName = this.getHookName(illustration, size);\n\t\tif (hookName && theme) {\n\t\t\tconst url = theme[hookName];\n\t\t\tif (url && url.indexOf('url') === 0)\n\t\t\t\treturn url.substring(4, url.length - 1);\n\t\t\treturn url;\n\t\t}\n\t}\n\tsupportsAutoSize(state, properties) {\n\t\treturn (\n\t\t\tthis.hasThemeImageUrl(state, {\n\t\t\t\tillustration: properties.illustration,\n\t\t\t\tsize: this.constructor.SM,\n\t\t\t}) &&\n\t\t\tthis.hasThemeImageUrl(state, {\n\t\t\t\tillustration: properties.illustration,\n\t\t\t\tsize: this.constructor.MD,\n\t\t\t}) &&\n\t\t\tthis.hasThemeImageUrl(state, {\n\t\t\t\tillustration: properties.illustration,\n\t\t\t\tsize: this.constructor.LG,\n\t\t\t})\n\t\t);\n\t}\n\n\tgetThemeHookAutoSizes({behaviors: {theme}}, {illustration}) {\n\t\treturn {\n\t\t\t[this.constructor.SM]:\n\t\t\t\ttheme[this.getHookName(illustration, this.constructor.SM)],\n\t\t\t[this.constructor.MD]:\n\t\t\t\ttheme[this.getHookName(illustration, this.constructor.MD)],\n\t\t\t[this.constructor.LG]:\n\t\t\t\ttheme[this.getHookName(illustration, this.constructor.LG)],\n\t\t};\n\t}\n}\n","export const SVG = 'svg';\nexport const CACHE_VERSION = 3;\nexport const NOW_ILLUSTRATION_CACHE_NAME = `now-illustration-svg-cache-v${CACHE_VERSION}`;\nexport const LOCAL_STORAGE_KEY = (str, path) => {\n\treturn `${NOW_ILLUSTRATION_CACHE_NAME}${path}`;\n};\nimport {declarativeOperations} from '@servicenow/ui-core';\nimport ThemeableIllustration from '../themeable-illustration';\n\nexport const sharedFetchSucceeded = (assetMap, resolveAssetLoadQueue) => {\n\treturn {\n\t\tstopPropagation: true,\n\t\teffect: (coeffects) => {\n\t\t\tconst {\n\t\t\t\taction: {\n\t\t\t\t\tpayload,\n\t\t\t\t\tmeta: {illustration, size, themeHookUrl},\n\t\t\t\t},\n\t\t\t\tupdateState,\n\t\t\t} = coeffects;\n\t\t\tconst ti = new ThemeableIllustration();\n\t\t\t// Because Safari + VO we have to ensure the svg is hidden or it will be annouced\n\t\t\t// at the img level + the svg level\n\t\t\tlet inlineSVG = '';\n\t\t\tif (assetMap[illustration].type === SVG) {\n\t\t\t\tinlineSVG = payload;\n\t\t\t}\n\n\t\t\tif (inlineSVG) {\n\t\t\t\tif (ti.hasBadGradient(inlineSVG)) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpath: 'hasBadGradient',\n\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\toperation: declarativeOperations.SET,\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst resourcePath = themeHookUrl || `${illustration}-${size}.svg`;\n\t\t\t\tconst key = LOCAL_STORAGE_KEY`${resourcePath}`;\n\t\t\t\tlocalStorage.setItem(key, inlineSVG);\n\t\t\t\tassetMap[illustration].sizes[size].loaded = true;\n\t\t\t\tassetMap[illustration].sizes[size].isLoading = false;\n\t\t\t\tassetMap[illustration].sizes[size].data = inlineSVG;\n\n\t\t\t\tresolveAssetLoadQueue({\n\t\t\t\t\tsize,\n\t\t\t\t\tillustration,\n\t\t\t\t\tdata: assetMap[illustration].sizes[size].data,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t};\n};\n\nexport const sharedFetchFailed = (assetMap) => {\n\treturn {\n\t\tstopPropagation: true,\n\t\teffect: (coeffects) => {\n\t\t\tconst {\n\t\t\t\taction: {\n\t\t\t\t\tmeta: {illustration, size},\n\t\t\t\t},\n\t\t\t\tupdateState,\n\t\t\t} = coeffects;\n\t\t\tdelete assetMap[illustration].sizes[size];\n\t\t\tupdateState({data: '', size: null, type: null});\n\t\t},\n\t};\n};\n","export const coralNoData = {\n\tsm: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" fill=\"none\" viewBox=\"0 0 56 56\">\n    <style>\n        .main-object--outline {\n                fill:rgb(var(--empty-state--main-object--outline, var(--main-object--outline, var(--now-color--interactive-3, 51,53,123))));\n        }\n        .main-object--fill {\n                fill:rgb(var(--empty-state--main-object--fill, var(--main-object--fill, var(--now-color--interactive-1, 144,146,213))));\n        }\n    </style>\n    <g>\n        <path  fill-rule=\"evenodd\" d=\"M28 47c10.493 0 19-8.507 19-19S38.493 9 28 9 9 17.507 9 28s8.507 19 19 19Zm0 6c13.807 0 25-11.193 25-25S41.807 3 28 3 3 14.193 3 28s11.193 25 25 25Z\" class=\"main-object--fill\" clip-rule=\"evenodd\"/>\n        <g class=\"main-object--outline\">\n            <path  d=\"M50.815 15.52a1 1 0 1 0-1.754.96A23.889 23.889 0 0 1 52.001 28c0 13.255-10.745 24-24 24-9.273 0-17.319-5.258-21.316-12.96a1 1 0 0 0-1.775.92C9.236 48.3 17.953 54 28 54c14.36 0 26-11.64 26-26a25.89 25.89 0 0 0-3.185-12.48Z\"/>\n            <path  d=\"M28 18a5 5 0 0 0-5 5 1 1 0 1 1-2 0 7 7 0 1 1 8.16 6.904.262.262 0 0 0-.142.071A.092.092 0 0 0 29 30v3a1 1 0 1 1-2 0v-3c0-1.138.907-1.914 1.831-2.069A5.002 5.002 0 0 0 28 18Zm1.5 20.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z\"/>\n        </g>\n    </g>\n</svg>`,\n\tmd: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"216\" height=\"168\" fill=\"none\" viewBox=\"0 0 216 168\">\n    <style>\n\t\t.main-object--outline {\n\t\t\t\tfill:rgb(var(--empty-state--main-object--outline, var(--main-object--outline, var(--now-color--interactive-3, 51,53,123))));\n\t\t}\n\t\t.main-object--fill {\n\t\t\t\tfill:rgb(var(--empty-state--main-object--fill, var(--main-object--fill, var(--now-color--interactive-1, 144,146,213))));\n\t\t}\n\t\t.primary-object--outline {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--outline, var(--primary-object--outline, var(--now-color_border--secondary, 176,181,191))));\n\t\t}\n\t\t.primary-object--primary-fill {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--primary-fill, var(--primary-object--primary-fill, var(--now-color_background--primary, 255,255,255))));\n\t\t}\n\t\t.primary-object--tertiary-fill {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--tertiary-fill, var(--primary-object--tertiary-fill, var(--now-color_background--secondary, 246,246,248))));\n\t\t}\n\t\t.primary-object--detail {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--detail, var(--primary-object--detail, var(--now-color_border--tertiary, 211,214,220))));\n\t\t}\n\t\t.primary-object--shadow {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--shadow, var(--primary-object--shadow, var(--now-color_background--tertiary, 228,230,234))));\n\t\t}\n\t\t.background--tertiary-lines {\n\t\t\t\tfill:rgb(var(--empty-state--background--tertiary-lines, var(--background--tertiary-lines, var(--now-color_border--tertiary, 211,214,220))));\n\t\t}\n\t</style>\n\t<g>\n    <path  fill-rule=\"evenodd\" d=\"M24 114a1 1 0 0 1 1-1h1.75a1 1 0 0 1 0 2H25a1 1 0 0 1-1-1Zm8.75 0a1 1 0 0 1 1-1h3.5a1 1 0 0 1 0 2h-3.5a1 1 0 0 1-1-1Zm10.5 0a1 1 0 0 1 1-1h3.5a1 1 0 0 1 0 2h-3.5a1 1 0 0 1-1-1Zm10.5 0a1 1 0 0 1 1-1h3.5a1 1 0 0 1 0 2h-3.5a1 1 0 0 1-1-1Zm10.5 0a1 1 0 0 1 1-1H67a1 1 0 0 1 0 2h-1.75a1 1 0 0 1-1-1ZM134 155a1 1 0 0 1 1-1h1.625a1 1 0 0 1 0 2H135a1 1 0 0 1-1-1Zm8.125 0a1 1 0 0 1 1-1h3.25a1 1 0 0 1 0 2h-3.25a1 1 0 0 1-1-1Zm9.75 0a1 1 0 0 1 1-1h1.625a1 1 0 0 1 0 2h-1.625a1 1 0 0 1-1-1ZM61 23a1 1 0 0 1 1-1h2.417a1 1 0 1 1 0 2H62a1 1 0 0 1-1-1Zm12.083 0a1 1 0 0 1 1-1H76.5a1 1 0 1 1 0 2h-2.417a1 1 0 0 1-1-1ZM195.5 77a1 1 0 0 0-1-1h-1.875a1 1 0 0 0 0 2h1.875a1 1 0 0 0 1-1Zm-9.375 0a1 1 0 0 0-1-1h-3.75a1 1 0 0 0 0 2h3.75a1 1 0 0 0 1-1Zm-11.25 0a1 1 0 0 0-1-1H172a1 1 0 0 0 0 2h1.875a1 1 0 0 0 1-1Z\" class=\"background--tertiary-lines\" clip-rule=\"evenodd\"/>\n    <path  d=\"M181 134c0 5-32.683 5-73 5s-73 0-73-5 32.683-5 73-5 73 0 73 5Z\" class=\"primary-object--shadow\"/>\n    <path  d=\"M175.342 125.644V55.291H42.478v70.353a7 7 0 0 0 7 7h118.864a7 7 0 0 0 7-7Z\" class=\"primary-object--primary-fill\"/>\n    <path  d=\"M168.342 38H49.477a7 7 0 0 0-7 7v10.29h132.865V45a7 7 0 0 0-7-7Z\" class=\"primary-object--tertiary-fill\"/>\n    <path  fill-rule=\"evenodd\" d=\"M49.477 37a8 8 0 0 0-8 8v80.644a8 8 0 0 0 8 8h118.865a8 8 0 0 0 8-8V45a8 8 0 0 0-8-8H49.477Zm-6 8a6 6 0 0 1 6-6h118.865a6 6 0 0 1 6 6v9.29H43.477V45Zm0 80.644V56.291h130.865v69.353a6 6 0 0 1-6 6H49.477a6 6 0 0 1-6-6Z\" class=\"primary-object--outline\" clip-rule=\"evenodd\"/>\n    <path  d=\"M136.666 43.46a3.185 3.185 0 1 1 0 6.37 3.185 3.185 0 0 1 0-6.37Zm11.831 0a3.185 3.185 0 1 1 0 6.37 3.185 3.185 0 0 1 0-6.37Zm11.83 0a3.185 3.185 0 1 1 0 6.37 3.185 3.185 0 0 1 0-6.37Z\" class=\"primary-object--detail\"/>\n    <path  fill-rule=\"evenodd\" d=\"M109 112c10.493 0 19-8.507 19-19s-8.507-19-19-19-19 8.507-19 19 8.507 19 19 19Zm0 6c13.807 0 25-11.193 25-25s-11.193-25-25-25-25 11.193-25 25 11.193 25 25 25Z\" class=\"main-object--fill\" clip-rule=\"evenodd\"/>\n    <g class=\"main-object--outline\">\n      <path  d=\"M130.457 80.123a1 1 0 0 1 1.358.396A25.892 25.892 0 0 1 135.001 93c0 14.36-11.641 26-26 26-10.049 0-18.764-5.7-23.092-14.039a1 1 0 1 1 1.776-.921C91.682 111.742 99.728 117 109 117c13.255 0 24-10.745 24-24 0-4.176-1.066-8.1-2.94-11.52a1 1 0 0 1 .396-1.357Z\"/>\n      <path  d=\"M110.5 103.5a1.5 1.5 0 1 1-3.001-.001 1.5 1.5 0 0 1 3.001.001ZM104 88a5 5 0 1 1 5.831 4.931c-.924.155-1.831.93-1.831 2.069v3a1 1 0 0 0 2 0v-3a.106.106 0 0 1 .018-.025.261.261 0 0 1 .143-.07A7 7 0 1 0 102 88a1 1 0 0 0 2-.001Z\"/>\n    </g>\n  </g>\n</svg>`,\n\tlg: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"350\" height=\"318\" fill=\"none\" viewBox=\"0 0 350 318\">\n  \t<style>\n\t\t.main-object--outline {\n\t\t\t\tfill:rgb(var(--empty-state--main-object--outline, var(--main-object--outline, var(--now-color--interactive-3, 51,53,123))));\n\t\t}\n\t\t.main-object--fill {\n\t\t\t\tfill:rgb(var(--empty-state--main-object--fill, var(--main-object--fill, var(--now-color--interactive-1, 144,146,213))));\n\t\t}\n\t\t.primary-object--outline {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--outline, var(--primary-object--outline, var(--now-color_border--secondary, 176,181,191))));\n\t\t}\n\t\t.primary-object--primary-fill {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--primary-fill, var(--primary-object--primary-fill, var(--now-color_background--primary, 255,255,255))));\n\t\t}\n\t\t.primary-object--tertiary-fill {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--tertiary-fill, var(--primary-object--tertiary-fill, var(--now-color_background--secondary, 246,246,248))));\n\t\t}\n\t\t.primary-object--detail {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--detail, var(--primary-object--detail, var(--now-color_border--tertiary, 211,214,220))));\n\t\t}\n\t\t.primary-object--shadow {\n\t\t\t\tfill:rgb(var(--empty-state--primary-object--shadow, var(--primary-object--shadow, var(--now-color_background--tertiary, 228,230,234))));\n\t\t}\n\t\t.tertiary-object--outline {\n\t\t\t\tfill:rgb(var(--empty-state--tertiary-object--outline, var(--tertiary-object--outline, var(--now-color_border--secondary, 176,181,191))));\n\t\t}\n\t\t.tertiary-object--primary-fill {\n\t\t\t\tfill:rgb(var(--empty-state--tertiary-object--primary-fill, var(--tertiary-object--primary-fill, var(--now-color_background--primary, 255,255,255))));\n\t\t}\n\t\t.tertiary-object--tertiary-fill {\n\t\t\t\tfill:rgb(var(--empty-state--tertiary-object--tertiary-fill, var(--tertiary-object--tertiary-fill, var(--now-color_background--secondary, 246,246,248))));\n\t\t}\n\t\t.tertiary-object--shadow {\n\t\t\t\tfill:rgb(var(--empty-state--tertiary-object--shadow, var(--tertiary-object--shadow, var(--now-color_background--tertiary, 228,230,234))));\n\t\t}\n\t\t.background--lines {\n\t\t\t\tfill:rgb(var(--empty-state--background--lines, var(--background--lines, var(--now-color_border--tertiary, 211,214,220))));\n\t\t}\n\t\t.background--tertiary-lines {\n\t\t\t\tfill:rgb(var(--empty-state--background--tertiary-lines, var(--background--tertiary-lines, var(--now-color_border--tertiary, 211,214,220))));\n\t\t}\n\t\t.background--object-outline {\n\t\t\t\tfill:rgb(var(--empty-state--background--object-outline, var(--background--object-outline, var(--now-color_border--tertiary, 211,214,220))));\n\t\t}\n\t\t.background--object-fill {\n\t\t\t\tfill:rgb(var(--empty-state--background--object-fill, var(--background--object-fill, var(--now-color_background--primary, 255,255,255))));\n\t\t}\n\t</style>\n\t<g>\n    <path  fill-rule=\"evenodd\" d=\"M23.5 166.5A1.5 1.5 0 0 1 25 165h297.5a1.5 1.5 0 0 1 0 3H25a1.5 1.5 0 0 1-1.5-1.5Z\" class=\"background--lines\" clip-rule=\"evenodd\"/>\n    <path  fill-rule=\"evenodd\" d=\"M281 93.5a1.5 1.5 0 0 0-1.5-1.5h-2.375a1.5 1.5 0 0 0 0 3h2.375a1.5 1.5 0 0 0 1.5-1.5Zm-11.875 0a1.5 1.5 0 0 0-1.5-1.5h-4.75a1.5 1.5 0 0 0 0 3h4.75a1.5 1.5 0 0 0 1.5-1.5Zm-14.25 0a1.5 1.5 0 0 0-1.5-1.5H251a1.5 1.5 0 0 0 0 3h2.375a1.5 1.5 0 0 0 1.5-1.5Zm-14.191 175.864a1.5 1.5 0 0 0-1.5-1.5h-1.776a1.5 1.5 0 1 0 0 3h1.776a1.5 1.5 0 0 0 1.5-1.5Zm-8.881 0a1.5 1.5 0 0 0-1.5-1.5h-3.552a1.5 1.5 0 0 0 0 3h3.552a1.5 1.5 0 0 0 1.5-1.5Zm-10.656 0a1.5 1.5 0 0 0-1.5-1.5h-3.552a1.5 1.5 0 1 0 0 3h3.552a1.5 1.5 0 0 0 1.5-1.5Zm-10.657 0a1.5 1.5 0 0 0-1.5-1.5h-1.776a1.5 1.5 0 0 0 0 3h1.776a1.5 1.5 0 0 0 1.5-1.5ZM126 290.5a1.5 1.5 0 0 0-1.5-1.5h-1.95a1.5 1.5 0 0 0 0 3h1.95a1.5 1.5 0 0 0 1.5-1.5Zm-9.75 0a1.5 1.5 0 0 0-1.5-1.5h-3.9a1.5 1.5 0 0 0 0 3h3.9a1.5 1.5 0 0 0 1.5-1.5Zm-11.7 0a1.5 1.5 0 0 0-1.5-1.5h-3.9a1.5 1.5 0 0 0 0 3h3.9a1.5 1.5 0 0 0 1.5-1.5Zm-11.7 0a1.5 1.5 0 0 0-1.5-1.5h-3.9a1.5 1.5 0 0 0 0 3h3.9a1.5 1.5 0 0 0 1.5-1.5Zm-11.7 0a1.5 1.5 0 0 0-1.5-1.5h-3.9a1.5 1.5 0 0 0 0 3h3.9a1.5 1.5 0 0 0 1.5-1.5Zm-11.7 0a1.5 1.5 0 0 0-1.5-1.5H66a1.5 1.5 0 0 0 0 3h1.95a1.5 1.5 0 0 0 1.5-1.5Zm211.386-21.136a1.5 1.5 0 0 0-1.5-1.5h-30.652a1.5 1.5 0 1 0 0 3h30.652a1.5 1.5 0 0 0 1.5-1.5Z\" class=\"background--tertiary-lines\" clip-rule=\"evenodd\"/>\n    <path  d=\"M201 211.129c0 2.659 2.847 5.871 5.847 5.871h88.306c3.02 0 5.847-3.207 5.847-5.871 0-40.731-25.36-47.976-50.538-48.126-24.819-.149-49.462 6.203-49.462 48.126Z\" class=\"tertiary-object--shadow\"/>\n    <path  d=\"M284.106 154h-66.212a6 6 0 0 0-5.808 4.496L206 182h90l-6.086-23.504a6 6 0 0 0-5.808-4.496Z\" class=\"tertiary-object--tertiary-fill\"/>\n    <path  fill-rule=\"evenodd\" d=\"M210.634 158.12a7.5 7.5 0 0 1 7.26-5.62h66.212a7.5 7.5 0 0 1 7.26 5.62l6.086 23.504A1.501 1.501 0 0 1 296 183.5h-90a1.5 1.5 0 0 1-1.452-1.876l6.086-23.504Zm7.26-2.62a4.5 4.5 0 0 0-4.356 3.372l-5.6 21.628h86.124l-5.6-21.628a4.5 4.5 0 0 0-4.356-3.372h-66.212Z\" class=\"tertiary-object--outline\" clip-rule=\"evenodd\"/>\n    <path  d=\"M215.945 171.494c-1.145 6.859-3.812 22.841-5.661 33.847a3.997 3.997 0 0 0 3.947 4.658h73.538a3.997 3.997 0 0 0 3.947-4.658 34607.863 34607.863 0 0 1-5.661-33.847 3.987 3.987 0 0 0-3.944-3.33h-62.223a3.986 3.986 0 0 0-3.943 3.33Z\" class=\"tertiary-object--primary-fill\"/>\n    <path  fill-rule=\"evenodd\" d=\"M216.5 153a1.5 1.5 0 0 1 1.5 1.5v12.165h66V154.5a1.5 1.5 0 1 1 3 0v13.541l.722 4.33a31543.083 31543.083 0 0 0 6.088 36.38 1.499 1.499 0 1 1-2.958.498 31543.083 31543.083 0 0 1-6.089-36.384l-.534-3.2H217.77l-.534 3.2a31543.083 31543.083 0 0 1-6.089 36.384 1.499 1.499 0 1 1-2.958-.498 31543.083 31543.083 0 0 0 6.088-36.38l.723-4.33V154.5a1.5 1.5 0 0 1 1.5-1.5Z\" class=\"tertiary-object--outline\" clip-rule=\"evenodd\"/>\n    <path  d=\"M233 186.483c0-2.474-2.015-4.479-4.5-4.479-8.25 0-14.25.005-22.5-.002v23.519c0 2.474 2.015 4.479 4.5 4.479h81c2.485 0 4.5-2.005 4.5-4.479v-23.514c-8.25-.014-14.25-.003-22.5-.003-2.485 0-4.5 2.005-4.5 4.479v3.36c0 2.474-2.015 4.479-4.5 4.479h-27c-2.485 0-4.5-2.005-4.5-4.479v-3.36Z\" class=\"tertiary-object--tertiary-fill\"/>\n    <path  fill-rule=\"evenodd\" d=\"m280.692 183.502-7.192.002c-1.663 0-3 1.34-3 2.979v3.36c0 3.309-2.693 5.979-6 5.979h-27c-3.307 0-6-2.67-6-5.979v-3.36a2.99 2.99 0 0 0-3-2.979l-7.189.001c-4.567.001-8.801.001-13.811-.002v22.018a2.99 2.99 0 0 0 3 2.979h81c1.663 0 3-1.34 3-2.979v-22.016c-5.009-.007-9.241-.005-13.808-.003Zm-.005-3c5.017-.002 9.633-.004 15.315.005a1.5 1.5 0 0 1 1.498 1.5v23.514c0 3.308-2.693 5.979-6 5.979h-81c-3.307 0-6-2.671-6-5.979v-23.519a1.498 1.498 0 0 1 1.501-1.5c5.68.005 10.293.004 15.308.003l7.191-.001c3.307 0 6 2.67 6 5.979v3.36a2.99 2.99 0 0 0 3 2.979h27c1.663 0 3-1.34 3-2.979v-3.36c0-3.309 2.693-5.979 6-5.979l7.187-.002Z\" class=\"tertiary-object--outline\" clip-rule=\"evenodd\"/>\n    <path  d=\"M223 246.5c0 7.5-41.19 7.5-92 7.5s-92 0-92-7.5 41.19-7.5 92-7.5 92 0 92 7.5Z\" class=\"primary-object--shadow\"/>\n    <path  d=\"M219.683 235.434v-92.728H45.195v92.728a8.857 8.857 0 0 0 8.858 8.857h156.773a8.858 8.858 0 0 0 8.857-8.857Z\" class=\"primary-object--primary-fill\"/>\n    <path  fill-rule=\"evenodd\" d=\"M43.695 141.206h177.488v94.228c0 5.72-4.637 10.357-10.357 10.357H54.053c-5.72 0-10.358-4.637-10.358-10.357v-94.228Zm3 3v91.228a7.357 7.357 0 0 0 7.358 7.357h156.773a7.357 7.357 0 0 0 7.357-7.357v-91.228H46.695Z\" class=\"primary-object--outline\" clip-rule=\"evenodd\"/>\n    <path  d=\"M210.826 120H54.053a8.857 8.857 0 0 0-8.858 8.857v13.85h174.488v-13.85a8.857 8.857 0 0 0-8.857-8.857Z\" class=\"primary-object--tertiary-fill\"/>\n    <path  fill-rule=\"evenodd\" d=\"M43.695 128.857c0-5.72 4.637-10.357 10.358-10.357h156.773c5.72 0 10.357 4.637 10.357 10.357v15.35H43.695v-15.35Zm10.358-7.357a7.357 7.357 0 0 0-7.358 7.357v12.35h171.488v-12.35a7.357 7.357 0 0 0-7.357-7.357H54.053Z\" class=\"primary-object--outline\" clip-rule=\"evenodd\"/>\n    <path  d=\"M168.89 127.173a4.182 4.182 0 1 1 .001 8.365 4.182 4.182 0 0 1-.001-8.365Zm15.537 0a4.182 4.182 0 1 1 .001 8.365 4.182 4.182 0 0 1-.001-8.365Zm15.536 0a4.182 4.182 0 1 1 .001 8.365 4.182 4.182 0 0 1-.001-8.365Z\" class=\"primary-object--detail\"/>\n    <path  fill-rule=\"evenodd\" d=\"M82.5 93.701a7.504 7.504 0 0 1-7.5-7.507 7.504 7.504 0 0 1 10.05-7.062C86.506 74.7 90.674 71.5 95.59 71.5c5.709 0 10.41 4.317 11.023 9.868A6.503 6.503 0 0 1 116 87.199a6.503 6.503 0 0 1-6.499 6.506H82.5v-.004Z\" class=\"background--object-fill\" clip-rule=\"evenodd\"/>\n    <path  fill-rule=\"evenodd\" d=\"M107.766 79.382c-1.422-5.4-6.333-9.382-12.177-9.382-5.079 0-9.451 3.008-11.443 7.338a9.037 9.037 0 0 0-1.646-.151c-4.972 0-9 4.034-9 9.007 0 4.931 3.96 8.939 8.874 9.006.041.004.083.006.126.006h27.038a8.005 8.005 0 0 0 7.962-8.007c0-4.42-3.581-8.006-8-8.006-.595 0-1.175.065-1.734.189Zm1.703 12.824H82.615a1.5 1.5 0 0 0-.115-.005c-3.313 0-6-2.688-6-6.007a6.004 6.004 0 0 1 8.04-5.651 1.5 1.5 0 0 0 1.935-.943c1.26-3.835 4.867-6.6 9.114-6.6 4.935 0 9.003 3.733 9.533 8.532a1.5 1.5 0 0 0 2.159 1.18A5.003 5.003 0 0 1 114.5 87.2a5.003 5.003 0 0 1-5.031 5.006Z\" class=\"background--object-outline\" clip-rule=\"evenodd\"/>\n    <path  fill-rule=\"evenodd\" d=\"M173.51 78.492c-7.461 0-13.51-6.055-13.51-13.523s6.049-13.523 13.511-13.523c1.613 0 3.159.283 4.593.802 2.622-7.984 10.131-13.748 18.985-13.748 10.284 0 18.753 7.777 19.858 17.775a11.65 11.65 0 0 1 5.199-1.215c6.467 0 11.709 5.247 11.709 11.72 0 6.471-5.24 11.718-11.706 11.72H173.51v-.008Z\" class=\"background--object-fill\" clip-rule=\"evenodd\"/>\n    <path  fill-rule=\"evenodd\" d=\"M218.135 54.18C216.138 44.377 207.476 37 197.089 37c-9.003 0-16.709 5.543-19.903 13.4a15.032 15.032 0 0 0-3.675-.454c-8.291 0-15.011 6.727-15.011 15.023 0 8.24 6.631 14.934 14.847 15.022.053.006.108.009.163.009h48.689c7.272-.03 13.156-5.938 13.156-13.22 0-7.3-5.912-13.22-13.209-13.22-1.397 0-2.745.217-4.011.62ZM222.103 77h-48.438a1.532 1.532 0 0 0-.155-.008c-6.632 0-12.01-5.382-12.01-12.023s5.379-12.023 12.011-12.023c1.436 0 2.81.252 4.083.712a1.5 1.5 0 0 0 1.935-.942C181.955 45.329 188.903 40 197.089 40c9.51 0 17.345 7.192 18.367 16.44a1.5 1.5 0 0 0 2.158 1.179 10.154 10.154 0 0 1 4.532-1.06c5.637 0 10.209 4.575 10.209 10.22 0 5.645-4.57 10.219-10.206 10.22l-.046.001Z\" class=\"background--object-outline\" clip-rule=\"evenodd\"/>\n    <path  fill-rule=\"evenodd\" d=\"M130.5 213.25c12.288 0 22.25-9.962 22.25-22.25s-9.962-22.25-22.25-22.25-22.25 9.962-22.25 22.25 9.962 22.25 22.25 22.25Zm0 9c17.259 0 31.25-13.991 31.25-31.25s-13.991-31.25-31.25-31.25S99.25 173.741 99.25 191s13.991 31.25 31.25 31.25Z\" class=\"main-object--fill\" clip-rule=\"evenodd\"/>\n    <g class=\"main-object--outline\">\n      <path  d=\"M157.201 174.684a1.5 1.5 0 0 1 2.037.595A32.609 32.609 0 0 1 163.251 191c0 18.087-14.663 32.75-32.75 32.75-12.657 0-23.635-7.181-29.086-17.684a1.5 1.5 0 1 1 2.663-1.382c4.955 9.548 14.929 16.066 26.423 16.066 16.431 0 29.75-13.32 29.75-29.75a29.605 29.605 0 0 0-3.644-14.279 1.501 1.501 0 0 1 .594-2.037Z\"/>\n      <path  d=\"M132.375 204.125a1.874 1.874 0 1 1-3.749.001 1.874 1.874 0 0 1 3.749-.001ZM124.5 184.75a6 6 0 1 1 12 0 6.003 6.003 0 0 1-5.002 5.918c-1.25.208-2.498 1.263-2.498 2.832v3.75a1.5 1.5 0 0 0 3 0v-3.625c4.257-.715 7.5-4.415 7.5-8.875a9 9 0 0 0-9-9 9 9 0 0 0-9 9 1.5 1.5 0 0 0 3 0Z\"/>\n    </g>\n  </g>\n</svg>`,\n};\n","export const polarisNoData = {\n\tsm: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\">\n    <defs/>\n    <path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M2.5 41.5h42.999V6.501H2.5V41.5z\" clip-rule=\"evenodd\"/>\n    <path fill=\"#BB77E9\" fill-rule=\"evenodd\" d=\"M9 34h33v-7H9v7z\" clip-rule=\"evenodd\"/>\n    <path fill=\"#EBD8F8\" fill-rule=\"evenodd\" d=\"M3 9h42V7H3v2z\" clip-rule=\"evenodd\"/>\n    <path fill=\"#1F204B\" fill-rule=\"evenodd\" d=\"M3 9h42V7H3v2zm42 32h-4v-5.5a.5.5 0 00-.5-.5h-9a.5.5 0 00-.5.5V41h-2v-5.5a.5.5 0 00-.5-.5h-9a.5.5 0 00-.5.5V41h-2v-5.5a.5.5 0 00-.5-.5h-9a.5.5 0 00-.5.5V41H3V10h42v31zm-13 0h8v-5h-8v5zm-12 0h8v-5h-8v5zM8 41h8v-5H8v5zM45.5 6h-43a.5.5 0 00-.5.5v35a.5.5 0 00.5.5h43a.5.5 0 00.5-.5v-35a.5.5 0 00-.5-.5z\" clip-rule=\"evenodd\"/>\n    <path fill=\"#1F204B\" fill-rule=\"evenodd\" d=\"M8 22h14v-9H8v9zm-.5 1h15a.5.5 0 00.5-.5v-10a.5.5 0 00-.5-.5h-15a.5.5 0 00-.5.5v10a.5.5 0 00.5.5zM26 22h14v-9H26v9zm-.5 1h15a.5.5 0 00.5-.5v-10a.5.5 0 00-.5-.5h-15a.5.5 0 00-.5.5v10a.5.5 0 00.5.5zM8 32h32v-6H8v6zm-.5 1h33a.5.5 0 00.5-.5v-7a.5.5 0 00-.5-.5h-33a.5.5 0 00-.5.5v7a.5.5 0 00.5.5z\" clip-rule=\"evenodd\"/>\n    <path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M54.5 41.5a9 9 0 01-9 9 9 9 0 01-9-9 9 9 0 019-9 9 9 0 019 9z\" clip-rule=\"evenodd\"/>\n    <path fill=\"#1F204B\" fill-rule=\"evenodd\" d=\"M45.5 50c-4.687 0-8.5-3.813-8.5-8.5 0-4.687 3.813-8.5 8.5-8.5 4.687 0 8.5 3.813 8.5 8.5 0 4.687-3.813 8.5-8.5 8.5zm0-18c-5.238 0-9.5 4.262-9.5 9.5s4.262 9.5 9.5 9.5 9.5-4.262 9.5-9.5-4.262-9.5-9.5-9.5z\" clip-rule=\"evenodd\"/>\n    <path fill=\"#1F204B\" fill-rule=\"evenodd\" d=\"M48.593 38.407a.5.5 0 00-.707 0L45.5 40.793l-2.386-2.386a.5.5 0 00-.707.707l2.386 2.386-2.386 2.386a.5.5 0 00.707.707l2.386-2.386 2.386 2.386a.502.502 0 00.707 0 .5.5 0 000-.707L46.207 41.5l2.386-2.386a.5.5 0 000-.707z\" clip-rule=\"evenodd\"/>\n</svg>`,\n\tmd: `<svg width=\"216\" height=\"168\" viewBox=\"0 0 216 168\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M60.5 141.622C48.0843 141.622 38 131.538 38 119.122C38 106.707 48.0843 96.6223 60.5 96.6223C72.9157 96.6223 83 106.707 83 119.122C83 131.592 72.9157 141.622 60.5 141.622Z\" fill=\"#DC189C\"/>\n<path d=\"M123.111 40.7291H177C177 71.0778 152.852 95.7291 123 95.7291L123.111 40.7291Z\" fill=\"#FFC54D\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18.9463 47.5029C19.2208 47.4732 19.4674 47.6717 19.4971 47.9462C19.6051 48.9449 19.7506 49.9326 19.9324 50.9078C19.983 51.1793 19.8039 51.4404 19.5325 51.491C19.261 51.5416 18.9999 51.3625 18.9493 51.091C18.7629 50.0908 18.6136 49.0779 18.5029 48.0537C18.4732 47.7792 18.6717 47.5326 18.9463 47.5029ZM22.3258 60.1389C22.5755 60.0212 22.8735 60.1282 22.9912 60.378C23.846 62.1912 24.8359 63.9289 25.948 65.5778C26.1024 65.8067 26.042 66.1175 25.8131 66.2719C25.5841 66.4263 25.2734 66.3659 25.119 66.137C23.9785 64.4461 22.9634 62.6641 22.0867 60.8044C21.9689 60.5546 22.076 60.2567 22.3258 60.1389ZM31.807 73.1027C31.9899 72.8958 32.3059 72.8763 32.5128 73.0591C34.0058 74.3786 35.6006 75.5858 37.284 76.6672C37.5163 76.8164 37.5837 77.1257 37.4344 77.3581C37.2852 77.5904 36.9759 77.6578 36.7435 77.5085C35.017 76.3995 33.3816 75.1615 31.8506 73.8084C31.6437 73.6256 31.6242 73.3096 31.807 73.1027ZM45.6461 81.251C45.7313 80.9884 46.0134 80.8446 46.276 80.9298C47.2206 81.2365 48.1812 81.508 49.1562 81.743C49.4247 81.8077 49.5899 82.0777 49.5252 82.3462C49.4605 82.6147 49.1904 82.7799 48.922 82.7152C47.9217 82.4741 46.9363 82.1956 45.9673 81.881C45.7046 81.7957 45.5608 81.5137 45.6461 81.251Z\" fill=\"#FF5730\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M153.466 10.7627C152.838 10.2107 151.977 9.86816 151.03 9.86816H122.816H69.499C67.5914 9.86816 66.0307 11.2543 66.0307 12.9484V20.7887V45.516V85.9974V156.93C66.0307 158.624 67.5914 160.01 69.499 160.01H151.03C152.938 160.01 154.498 158.624 154.498 156.93V53.3114V12.9484C154.498 12.0952 154.102 11.3214 153.466 10.7627Z\" fill=\"#1F204B\"/>\n<path d=\"M92 127C91.4477 127 91 126.552 91 126C91 125.448 91.4477 125 92 125C92.5523 125 93 125.448 93 126C93 126.552 92.5523 127 92 127Z\" fill=\"#53CDE4\"/>\n<path d=\"M78.5 123C78.2239 123 78 122.776 78 122.5C78 122.224 78.2239 122 78.5 122C78.7761 122 79 122.224 79 122.5C79 122.776 78.7761 123 78.5 123Z\" fill=\"#53CDE4\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M153.467 10.8792C147.604 14.2604 142.044 18.6238 140.122 23.0094C134.089 36.7672 104.35 52.855 88.2648 47.1982C83.9718 45.6885 79.0926 45.3272 66.0325 45.7256V86.3153C89.5577 90.111 99.1912 65.1464 125.741 66.569C129.655 66.779 141.063 70.0021 144.566 68.4325C151.955 65.1205 149.12 60.5885 154.5 53.5418V13.0707C154.5 12.2152 154.103 11.4394 153.467 10.8792Z\" fill=\"#373983\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M73.7218 20.3964C88.3558 20.5788 84.9832 22.7118 99.1989 17.6349C104.591 15.709 110.954 12.3739 116.438 9.97845H69.0806C67.3863 9.97845 66 11.3647 66 13.059V20.9004C68.4207 20.556 71.3214 20.3662 73.7218 20.3964Z\" fill=\"#373983\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M154.5 135.427L153 135H126H101L84.452 131.5V135.004L87.5 136.503H66.0326V156.93C66.0326 158.624 67.5933 160.01 69.5008 160.01H151.032C152.94 160.01 154.5 158.624 154.5 156.93V135.427Z\" fill=\"#E1ABA5\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M110 135L96 139H119L114.447 137.233L123 135H110Z\" fill=\"#A9807C\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M119 145H147L143.176 141.421L153 135L119 145Z\" fill=\"#A9807C\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M93 137L85 135L84.5 131.5L80.4012 132.878L73.9506 134.991L66 136.5L93 137Z\" fill=\"#A9807C\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M146.974 7H152.889C156.041 7 158.474 9.9985 158.474 13.5H157.474C157.474 10.3893 155.34 8 152.889 8H146.974V7Z\" fill=\"#53CDE4\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M133.474 4.5C133.474 4.22386 133.697 4 133.974 4H134.474C134.75 4 134.974 4.22386 134.974 4.5C134.974 4.77614 134.75 5 134.474 5H133.974C133.697 5 133.474 4.77614 133.474 4.5ZM136.974 4.5C136.974 4.22386 137.197 4 137.474 4H138.474C138.75 4 138.974 4.22386 138.974 4.5C138.974 4.77614 138.75 5 138.474 5H137.474C137.197 5 136.974 4.77614 136.974 4.5ZM140.974 4.5C140.974 4.22386 141.197 4 141.474 4H142.474C142.75 4 142.974 4.22386 142.974 4.5C142.974 4.77614 142.75 5 142.474 5H141.474C141.197 5 140.974 4.77614 140.974 4.5ZM144.974 4.5C144.974 4.22386 145.197 4 145.474 4H146.474C146.75 4 146.974 4.22386 146.974 4.5C146.974 4.77614 146.75 5 146.474 5H145.474C145.197 5 144.974 4.77614 144.974 4.5ZM148.974 4.5C148.974 4.22386 149.197 4 149.474 4H150.474C150.75 4 150.974 4.22386 150.974 4.5C150.974 4.77614 150.75 5 150.474 5H149.474C149.197 5 148.974 4.77614 148.974 4.5ZM152.974 4.5C152.974 4.22386 153.197 4 153.474 4H153.974C154.25 4 154.474 4.22386 154.474 4.5C154.474 4.77614 154.25 5 153.974 5H153.474C153.197 5 152.974 4.77614 152.974 4.5Z\" fill=\"#53CDE4\"/>\n<path d=\"M61.3744 9.2487C62.4095 9.2487 63.2487 8.40952 63.2487 7.37435C63.2487 6.33917 62.4095 5.5 61.3744 5.5C60.3392 5.5 59.5 6.33917 59.5 7.37435C59.5 8.40952 60.3392 9.2487 61.3744 9.2487Z\" fill=\"#FFC54D\"/>\n<path d=\"M54.6054 13.5337C55.5919 13.731 56.2824 14.6189 56.0851 15.6054C55.8878 16.5919 55 17.2824 54.0135 17.0851C53.027 16.8878 52.3364 16 52.5337 15.0135C52.6324 14.027 53.6189 13.3364 54.6054 13.5337Z\" fill=\"#FF5730\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M60.5 119C60.7761 119 61 119.224 61 119.5V120C61 120.276 60.7761 120.5 60.5 120.5C60.2239 120.5 60 120.276 60 120V119.5C60 119.224 60.2239 119 60.5 119ZM60.5 122.5C60.7761 122.5 61 122.724 61 123V124C61 124.276 60.7761 124.5 60.5 124.5C60.2239 124.5 60 124.276 60 124V123C60 122.724 60.2239 122.5 60.5 122.5ZM60.5 126.5C60.7761 126.5 61 126.724 61 127V128C61 128.276 60.7761 128.5 60.5 128.5C60.2239 128.5 60 128.276 60 128V127C60 126.724 60.2239 126.5 60.5 126.5ZM60.5 130.5C60.7761 130.5 61 130.724 61 131V132C61 132.276 60.7761 132.5 60.5 132.5C60.2239 132.5 60 132.276 60 132V131C60 130.724 60.2239 130.5 60.5 130.5ZM60.5 134.5C60.7761 134.5 61 134.724 61 135V136C61 136.276 60.7761 136.5 60.5 136.5C60.2239 136.5 60 136.276 60 136V135C60 134.724 60.2239 134.5 60.5 134.5ZM60.5 138.5C60.7761 138.5 61 138.724 61 139V140C61 140.276 60.7761 140.5 60.5 140.5C60.2239 140.5 60 140.276 60 140V139C60 138.724 60.2239 138.5 60.5 138.5ZM60.5 142.5C60.7761 142.5 61 142.724 61 143V144C61 144.276 60.7761 144.5 60.5 144.5C60.2239 144.5 60 144.276 60 144V143C60 142.724 60.2239 142.5 60.5 142.5ZM60.5 146.5C60.7761 146.5 61 146.724 61 147V147.5C61 147.776 60.7761 148 60.5 148C60.2239 148 60 147.776 60 147.5V147C60 146.724 60.2239 146.5 60.5 146.5Z\" fill=\"#1F204B\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M36.5 60.5H79.5V25.5H36.5V60.5Z\" fill=\"white\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M43 53H76V46H43V53Z\" fill=\"#BB77E9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M37 28H79V26H37V28Z\" fill=\"#EBD8F8\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M37 28H79V26H37V28ZM79 60H75V54.5C75 54.224 74.776 54 74.5 54H65.5C65.224 54 65 54.224 65 54.5V60H63V54.5C63 54.224 62.776 54 62.5 54H53.5C53.224 54 53 54.224 53 54.5V60H51V54.5C51 54.224 50.776 54 50.5 54H41.5C41.224 54 41 54.224 41 54.5V60H37V29H79V60ZM66 60H74V55H66V60ZM54 60H62V55H54V60ZM42 60H50V55H42V60ZM79.5 25H36.5C36.224 25 36 25.224 36 25.5V60.5C36 60.777 36.224 61 36.5 61H79.5C79.776 61 80 60.777 80 60.5V25.5C80 25.224 79.776 25 79.5 25V25Z\" fill=\"#1F204B\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M42 41H56V32H42V41ZM41.5 42H56.5C56.776 42 57 41.777 57 41.5V31.5C57 31.224 56.776 31 56.5 31H41.5C41.224 31 41 31.224 41 31.5V41.5C41 41.777 41.224 42 41.5 42V42Z\" fill=\"#1F204B\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M60 41H74V32H60V41ZM59.5 42H74.5C74.776 42 75 41.777 75 41.5V31.5C75 31.224 74.776 31 74.5 31H59.5C59.224 31 59 31.224 59 31.5V41.5C59 41.777 59.224 42 59.5 42V42Z\" fill=\"#1F204B\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M42 51H74V45H42V51ZM41.5 52H74.5C74.776 52 75 51.777 75 51.5V44.5C75 44.224 74.776 44 74.5 44H41.5C41.224 44 41 44.224 41 44.5V51.5C41 51.777 41.224 52 41.5 52V52Z\" fill=\"#1F204B\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M88.5 60.5004C88.5 65.4714 84.47 69.5004 79.5 69.5004C74.529 69.5004 70.5 65.4714 70.5 60.5004C70.5 55.5304 74.529 51.5004 79.5 51.5004C84.47 51.5004 88.5 55.5304 88.5 60.5004\" fill=\"#BB77E9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M79.5 69.0004C74.813 69.0004 71 65.1874 71 60.5004C71 55.8134 74.813 52.0004 79.5 52.0004C84.187 52.0004 88 55.8134 88 60.5004C88 65.1874 84.187 69.0004 79.5 69.0004M79.5 51.0004C74.262 51.0004 70 55.2624 70 60.5004C70 65.7384 74.262 70.0004 79.5 70.0004C84.738 70.0004 89 65.7384 89 60.5004C89 55.2624 84.738 51.0004 79.5 51.0004\" fill=\"#1F204B\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M82.593 57.4077C82.398 57.2127 82.081 57.2127 81.886 57.4077L79.5 59.7937L77.114 57.4077C76.919 57.2127 76.603 57.2127 76.407 57.4077C76.212 57.6027 76.212 57.9197 76.407 58.1147L78.793 60.5007L76.407 62.8867C76.212 63.0817 76.212 63.3977 76.407 63.5937C76.505 63.6907 76.633 63.7397 76.761 63.7397C76.889 63.7397 77.017 63.6907 77.114 63.5937L79.5 61.2077L81.886 63.5937C81.984 63.6907 82.112 63.7397 82.239 63.7397C82.367 63.7397 82.495 63.6907 82.593 63.5937C82.788 63.3977 82.788 63.0817 82.593 62.8867L80.207 60.5007L82.593 58.1147C82.788 57.9197 82.788 57.6027 82.593 57.4077\" fill=\"#1F204B\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M140.045 125H128.624V126H140.045V125Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M144.136 131H125V132H144.136V131Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M142.142 128H126.293V129H142.142V128Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M134.209 115.078C133.871 115.081 133.557 115.255 133.375 115.54L121.488 134.187C121.191 134.653 121.328 135.271 121.793 135.568C122.259 135.865 122.877 135.728 123.174 135.262L134.234 117.913L145.738 135.277C146.043 135.737 146.663 135.863 147.124 135.558C147.584 135.253 147.71 134.633 147.405 134.172L135.052 115.526C134.865 115.244 134.548 115.075 134.209 115.078Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M135.719 135.191V116.078H132.719V135.191H135.719Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M134.369 105.606C133.588 106.387 133.588 107.654 134.369 108.435C135.662 109.728 135.662 111.82 134.369 113.113C133.076 114.406 130.984 114.406 129.691 113.113C128.91 112.332 127.643 112.332 126.862 113.113C126.081 113.894 126.081 115.16 126.862 115.941C129.718 118.796 134.342 118.796 137.197 115.941C140.053 113.086 140.053 108.461 137.197 105.606C136.416 104.825 135.15 104.825 134.369 105.606Z\" fill=\"#BB77E9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M127.5 87.5C127.5 87.2239 127.276 87 127 87H108V106C108 106.276 108.224 106.5 108.5 106.5C108.776 106.5 109 106.276 109 106V88H127C127.276 88 127.5 87.7761 127.5 87.5Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M107.761 86.6485C107.566 86.844 107.566 87.1606 107.762 87.3556L116.848 96.4207C117.044 96.6158 117.36 96.6154 117.556 96.4199C117.751 96.2244 117.75 95.9078 117.555 95.7128L108.468 86.6477C108.273 86.4526 107.956 86.453 107.761 86.6485Z\" fill=\"#CCCCCC\"/>\n<path d=\"M108.58 89.5401C107.422 89.5401 106.483 88.6009 106.483 87.4424C106.483 86.2838 107.422 85.3446 108.58 85.3446C109.739 85.3446 110.678 86.2838 110.678 87.4424C110.678 88.6009 109.739 89.5401 108.58 89.5401Z\" fill=\"#BB77E9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M101.964 79.6031C101.797 79.3831 101.84 79.0694 102.06 78.9025C102.214 78.7851 102.373 78.6721 102.534 78.5635C102.696 78.4548 102.86 78.351 103.027 78.2521C103.265 78.1114 103.571 78.19 103.712 78.4276C103.853 78.6652 103.774 78.9719 103.537 79.1126C103.386 79.2018 103.238 79.2954 103.092 79.3933C102.946 79.4913 102.804 79.5932 102.664 79.6991C102.444 79.866 102.131 79.823 101.964 79.6031ZM100.379 81.3049C100.61 81.4557 100.676 81.7655 100.525 81.9968C100.429 82.1434 100.337 82.293 100.25 82.4453C100.163 82.5976 100.08 82.7521 100.002 82.9087C99.8782 83.1557 99.5779 83.2559 99.3309 83.1324C99.0839 83.009 98.9837 82.7087 99.1071 82.4616C99.1939 82.288 99.2858 82.1166 99.3826 81.9478C99.4795 81.7789 99.581 81.6131 99.6871 81.4505C99.8379 81.2192 100.148 81.154 100.379 81.3049ZM105.886 77.6022C105.834 77.3311 106.011 77.0688 106.282 77.0163C106.473 76.9795 106.665 76.948 106.858 76.922C107.05 76.8961 107.244 76.8757 107.437 76.8609C107.713 76.8397 107.953 77.0458 107.974 77.3212C107.995 77.5965 107.789 77.8368 107.514 77.8579C107.339 77.8713 107.165 77.8897 106.991 77.9131C106.817 77.9365 106.644 77.9649 106.472 77.9981C106.201 78.0506 105.939 77.8733 105.886 77.6022ZM98.6622 85.3597C98.9364 85.3927 99.1319 85.6417 99.0989 85.9159C99.0779 86.0897 99.062 86.2643 99.051 86.4395C99.04 86.6147 99.0341 86.7899 99.0331 86.965C99.0317 87.2411 98.8066 87.4638 98.5305 87.4623C98.2544 87.4609 98.0317 87.2358 98.0332 86.9597C98.0342 86.7656 98.0408 86.5713 98.0529 86.377C98.0651 86.1827 98.0828 85.989 98.106 85.7963C98.1391 85.5222 98.3881 85.3267 98.6622 85.3597ZM104.509 82.9564C104.342 82.7364 104.385 82.4228 104.605 82.2559C104.696 82.187 104.788 82.1207 104.883 82.057C104.978 81.9933 105.074 81.9324 105.172 81.8744C105.41 81.7337 105.717 81.8122 105.857 82.0498C105.998 82.2874 105.92 82.5941 105.682 82.7348C105.6 82.7831 105.52 82.8338 105.441 82.8868C105.362 82.9399 105.285 82.9951 105.209 83.0524C104.99 83.2194 104.676 83.1764 104.509 82.9564ZM110.289 77.5425C110.362 77.2761 110.637 77.1193 110.903 77.1922C111.091 77.2434 111.277 77.3001 111.461 77.3621C111.723 77.4501 111.864 77.7336 111.776 77.9954C111.688 78.2571 111.404 78.398 111.142 78.3099C110.976 78.254 110.808 78.2029 110.639 78.1567C110.373 78.0838 110.216 77.8088 110.289 77.5425ZM103.905 83.6048C104.136 83.7557 104.202 84.0655 104.051 84.2968C103.999 84.3762 103.949 84.4571 103.902 84.5396C103.855 84.6221 103.81 84.7058 103.768 84.7906C103.644 85.0376 103.344 85.1378 103.097 85.0143C102.85 84.8909 102.75 84.5905 102.873 84.3435C102.924 84.2417 102.978 84.1412 103.035 84.0421C103.091 83.9431 103.151 83.8458 103.213 83.7504C103.364 83.5191 103.674 83.4539 103.905 83.6048ZM106.686 81.7353C106.633 81.4642 106.811 81.2019 107.082 81.1495C107.193 81.1279 107.306 81.1094 107.419 81.0942C107.532 81.079 107.646 81.067 107.759 81.0583C108.035 81.0372 108.275 81.2433 108.296 81.5186C108.317 81.7939 108.111 82.0343 107.836 82.0554C107.741 82.0626 107.647 82.0726 107.553 82.0853C107.458 82.0979 107.365 82.1133 107.272 82.1313C107 82.1837 106.738 82.0065 106.686 81.7353ZM102.286 86.2995C102.319 86.0254 102.568 85.8299 102.842 85.8629C103.116 85.8959 103.312 86.1449 103.279 86.4191C103.267 86.5132 103.259 86.6078 103.253 86.7027C103.247 86.7975 103.244 86.8924 103.243 86.9872C103.242 87.2634 103.017 87.486 102.74 87.4846C102.464 87.4831 102.242 87.2581 102.243 86.9819C102.244 86.8681 102.248 86.7541 102.255 86.6401C102.262 86.5262 102.272 86.4126 102.286 86.2995ZM98.9159 89.7556C99.1764 89.664 99.4618 89.8009 99.5535 90.0613C99.6116 90.2265 99.6745 90.3901 99.7421 90.5521C99.8485 90.807 99.7282 91.0998 99.4734 91.2062C99.2186 91.3126 98.9258 91.1923 98.8194 90.9375C98.7443 90.7578 98.6746 90.5763 98.6102 90.3932C98.5185 90.1327 98.6554 89.8473 98.9159 89.7556ZM109.178 81.6029C109.251 81.3366 109.526 81.1797 109.792 81.2526C109.902 81.2827 110.011 81.3159 110.119 81.3523C110.381 81.4403 110.522 81.7238 110.434 81.9856C110.346 82.2473 110.062 82.3882 109.801 82.3002C109.711 82.2699 109.62 82.2422 109.528 82.2172C109.262 82.1443 109.105 81.8693 109.178 81.6029ZM102.887 88.3583C103.148 88.2667 103.433 88.4036 103.525 88.664C103.556 88.7535 103.59 88.8421 103.627 88.9298C103.733 89.1847 103.613 89.4775 103.358 89.5839C103.103 89.6903 102.811 89.57 102.704 89.3152C102.66 89.2098 102.619 89.1033 102.582 88.9959C102.49 88.7354 102.627 88.45 102.887 88.3583Z\" fill=\"#FFC54D\"/>\n<path d=\"M101.088 111.192C110.117 120.221 124.752 120.221 133.78 111.192C142.809 102.164 142.809 87.5286 133.78 78.5L101.088 111.192Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M101.796 111.897L134.488 79.2095L133.074 77.7952L100.381 110.483L101.796 111.897Z\" fill=\"#BB77E9\"/>\n<path d=\"M172.127 107.243L168.409 115.205L169.314 115.627L173.032 107.666L172.127 107.243Z\" fill=\"#FF5730\"/>\n<path d=\"M164 101L162 101L162 103L164 103L164 101Z\" fill=\"#53CDE4\"/>\n<path d=\"M162 139.5C162.828 139.5 163.5 138.828 163.5 138C163.5 137.172 162.828 136.5 162 136.5C161.172 136.5 160.5 137.172 160.5 138C160.5 138.828 161.172 139.5 162 139.5Z\" fill=\"#53CDE4\"/>\n<path d=\"M174 148.5C174.828 148.5 175.5 147.828 175.5 147C175.5 146.172 174.828 145.5 174 145.5C173.172 145.5 172.5 146.172 172.5 147C172.5 147.828 173.172 148.5 174 148.5Z\" fill=\"#FF5730\"/>\n</svg>`,\n\tlg: `<svg width=\"350\" height=\"318\" viewBox=\"0 0 350 318\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M50.5 72.5C50.7761 72.5 51 72.7239 51 73C51 73.9792 51.0284 74.9516 51.0845 75.9166C51.1005 76.1923 50.89 76.4288 50.6143 76.4448C50.3387 76.4608 50.1022 76.2503 50.0862 75.9746C50.029 74.9903 50 73.9985 50 73C50 72.7239 50.2239 72.5 50.5 72.5ZM51.9825 85.1446C52.2498 85.075 52.5228 85.2353 52.5923 85.5025C53.0854 87.3972 53.6879 89.2478 54.3927 91.047C54.4934 91.3041 54.3666 91.5942 54.1095 91.6949C53.8524 91.7957 53.5623 91.6689 53.4616 91.4118C52.7425 89.5759 52.1277 87.6877 51.6246 85.7544C51.555 85.4871 51.7153 85.2141 51.9825 85.1446ZM58.1138 99.5391C58.3462 99.39 58.6555 99.4575 58.8046 99.69C59.8563 101.329 61.0021 102.903 62.2343 104.403C62.4096 104.616 62.3788 104.931 62.1654 105.106C61.952 105.282 61.637 105.251 61.4617 105.038C60.2047 103.508 59.0358 101.903 57.9629 100.23C57.8138 99.9975 57.8814 99.6882 58.1138 99.5391ZM68.3935 111.335C68.5688 111.121 68.8839 111.09 69.0973 111.266C70.597 112.498 72.1705 113.644 73.81 114.695C74.0425 114.844 74.11 115.154 73.9609 115.386C73.8118 115.619 73.5025 115.686 73.2701 115.537C71.5975 114.464 69.9923 113.295 68.4624 112.038C68.2491 111.863 68.2182 111.548 68.3935 111.335ZM81.8051 119.39C81.9058 119.133 82.1959 119.007 82.453 119.107C84.2522 119.812 86.1028 120.415 87.9975 120.908C88.2647 120.977 88.425 121.25 88.3554 121.517C88.2859 121.785 88.0129 121.945 87.7456 121.875C85.8123 121.372 83.9241 120.758 82.0882 120.038C81.8311 119.938 81.7043 119.648 81.8051 119.39ZM97.0552 122.886C97.0712 122.61 97.3077 122.399 97.5834 122.416C98.5484 122.472 99.5208 122.5 100.5 122.5C100.776 122.5 101 122.724 101 123C101 123.276 100.776 123.5 100.5 123.5C99.5015 123.5 98.5097 123.471 97.5254 123.414C97.2497 123.398 97.0392 123.161 97.0552 122.886Z\" fill=\"#FF5730\"/>\n<path d=\"M109.756 249.245C82.7308 249.245 60.78 227.294 60.78 200.269C60.78 173.243 82.7308 151.292 109.756 151.292C136.782 151.292 158.733 173.243 158.733 200.269C158.733 227.412 136.782 249.245 109.756 249.245Z\" fill=\"#DC189C\"/>\n<path d=\"M177.171 107.005H292C292 170.497 240.545 222.07 176.935 222.07L177.171 107.005Z\" fill=\"#FFC54D\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M261.616 20.2672C260.413 19.2099 258.765 18.5538 256.951 18.5538H202.907H100.78C97.1265 18.5538 94.137 21.2089 94.137 24.4539V39.4719V86.8363V164.377V300.247C94.137 303.492 97.1265 306.147 100.78 306.147H256.951C260.605 306.147 263.594 303.492 263.594 300.247V101.768V24.4539C263.594 22.8196 262.834 21.3375 261.616 20.2672Z\" fill=\"#1F204B\"/>\n<path d=\"M119.135 237.179H117.605V238.844H119.135V237.179Z\" fill=\"#53CDE4\"/>\n<path d=\"M279.127 215.743L275.409 223.705L276.314 224.127L280.032 216.166L279.127 215.743Z\" fill=\"#FF5730\"/>\n<path d=\"M272.485 210L269.5 210L269.5 212.985L272.485 212.985L272.485 210Z\" fill=\"#53CDE4\"/>\n<path d=\"M175.213 245.234C175.213 244.415 175.538 243.63 176.117 243.051C176.696 242.472 177.481 242.147 178.3 242.147C179.118 242.147 179.904 242.472 180.482 243.051C181.061 243.63 181.386 244.415 181.386 245.234H175.213Z\" fill=\"#FFC54D\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M238.799 241.715H220.235V242.715H238.799V241.715Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M244.897 250.808H213.792V251.808H244.897V250.808Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M242.208 246.261H216.445V247.261H242.208V246.261Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M229.319 226.439C228.98 226.442 228.666 226.616 228.484 226.902L209.162 257.211C208.865 257.677 209.002 258.295 209.468 258.592C209.934 258.889 210.552 258.752 210.849 258.286L229.344 229.274L248.574 258.301C248.879 258.761 249.499 258.887 249.96 258.582C250.42 258.277 250.546 257.657 250.241 257.196L230.161 226.887C229.974 226.605 229.657 226.436 229.319 226.439Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M230.827 258.506V227.439H227.827V258.506H230.827Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M230.455 211.303C229.674 212.084 229.674 213.35 230.455 214.131C233.046 216.721 233.046 220.914 230.455 223.504C227.865 226.094 223.672 226.094 221.082 223.504C220.301 222.723 219.035 222.723 218.254 223.504C217.473 224.285 217.473 225.551 218.254 226.332C222.406 230.485 229.131 230.485 233.284 226.332C237.436 222.18 237.436 215.455 233.284 211.303C232.502 210.521 231.236 210.521 230.455 211.303Z\" fill=\"#BB77E9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M218.5 179.5C218.5 179.224 218.276 179 218 179H187V210.5C187 210.776 187.224 211 187.5 211C187.776 211 188 210.776 188 210.5V180H218C218.276 180 218.5 179.776 218.5 179.5Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M186.547 179.011C186.352 179.207 186.352 179.523 186.548 179.718L201.317 194.453C201.513 194.648 201.829 194.648 202.024 194.452C202.22 194.257 202.219 193.94 202.024 193.745L187.254 179.01C187.058 178.815 186.742 178.816 186.547 179.011Z\" fill=\"#CCCCCC\"/>\n<path d=\"M187.5 183.5C185.567 183.5 184 181.933 184 180C184 178.067 185.567 176.5 187.5 176.5C189.433 176.5 191 178.067 191 180C191 181.933 189.433 183.5 187.5 183.5Z\" fill=\"#BB77E9\"/>\n<path d=\"M175.478 219.498C190.153 234.174 213.942 234.174 228.617 219.498C243.293 204.823 243.293 181.034 228.617 166.359L175.478 219.498Z\" fill=\"#CCCCCC\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M176.185 220.202L229.324 167.069L227.91 165.655L174.771 218.787L176.185 220.202Z\" fill=\"#BB77E9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M261.616 20.4905C250.385 26.9672 239.736 35.3251 236.053 43.7256C224.497 70.0784 167.533 100.894 136.723 90.0585C128.5 87.1669 119.154 86.4747 94.1376 87.2379V164.986C139.199 172.257 157.652 124.438 208.507 127.163C216.005 127.565 237.857 133.739 244.566 130.732C258.719 124.388 253.29 115.707 263.595 102.21V24.6884C263.595 23.0497 262.835 21.5637 261.616 20.4905Z\" fill=\"#373983\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M108.867 38.7203C136.898 39.0696 130.438 43.1553 157.668 33.4308C167.996 29.7416 180.184 23.3535 190.688 18.765H99.9769C96.7315 18.765 94.0761 21.4204 94.0761 24.6658V39.6856C98.713 39.0259 104.269 38.6624 108.867 38.7203Z\" fill=\"#373983\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M248.006 12.9957H260.959C267.608 12.9957 273.025 18.4123 273.025 25.0612H272.025C272.025 18.9646 267.056 13.9957 260.959 13.9957H248.006V12.9957Z\" fill=\"#53CDE4\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M217.233 6.5C217.233 6.22386 217.457 6 217.733 6H218.224C218.5 6 218.724 6.22386 218.724 6.5C218.724 6.77614 218.5 7 218.224 7H217.733C217.457 7 217.233 6.77614 217.233 6.5ZM220.669 6.5C220.669 6.22386 220.893 6 221.169 6H222.151C222.427 6 222.651 6.22386 222.651 6.5C222.651 6.77614 222.427 7 222.151 7H221.169C220.893 7 220.669 6.77614 220.669 6.5ZM224.596 6.5C224.596 6.22386 224.82 6 225.096 6H226.077C226.354 6 226.577 6.22386 226.577 6.5C226.577 6.77614 226.354 7 226.077 7H225.096C224.82 7 224.596 6.77614 224.596 6.5ZM228.522 6.5C228.522 6.22386 228.746 6 229.022 6H230.004C230.28 6 230.504 6.22386 230.504 6.5C230.504 6.77614 230.28 7 230.004 7H229.022C228.746 7 228.522 6.77614 228.522 6.5ZM232.449 6.5C232.449 6.22386 232.673 6 232.949 6H233.931C234.207 6 234.431 6.22386 234.431 6.5C234.431 6.77614 234.207 7 233.931 7H232.949C232.673 7 232.449 6.77614 232.449 6.5ZM236.376 6.5C236.376 6.22386 236.6 6 236.876 6H237.857C238.134 6 238.357 6.22386 238.357 6.5C238.357 6.77614 238.134 7 237.857 7H236.876C236.6 7 236.376 6.77614 236.376 6.5ZM240.302 6.5C240.302 6.22386 240.526 6 240.802 6H241.784C242.06 6 242.284 6.22386 242.284 6.5C242.284 6.77614 242.06 7 241.784 7H240.802C240.526 7 240.302 6.77614 240.302 6.5ZM244.229 6.5C244.229 6.22386 244.453 6 244.729 6H245.711C245.987 6 246.211 6.22386 246.211 6.5C246.211 6.77614 245.987 7 245.711 7H244.729C244.453 7 244.229 6.77614 244.229 6.5ZM248.156 6.5C248.156 6.22386 248.38 6 248.656 6H249.638C249.914 6 250.138 6.22386 250.138 6.5C250.138 6.77614 249.914 7 249.638 7H248.656C248.38 7 248.156 6.77614 248.156 6.5ZM252.083 6.5C252.083 6.22386 252.306 6 252.583 6H253.564C253.84 6 254.064 6.22386 254.064 6.5C254.064 6.77614 253.84 7 253.564 7H252.583C252.306 7 252.083 6.77614 252.083 6.5ZM256.009 6.5C256.009 6.22386 256.233 6 256.509 6H257.491C257.767 6 257.991 6.22386 257.991 6.5C257.991 6.77614 257.767 7 257.491 7H256.509C256.233 7 256.009 6.77614 256.009 6.5ZM259.936 6.5C259.936 6.22386 260.16 6 260.436 6H260.927C261.203 6 261.427 6.22386 261.427 6.5C261.427 6.77614 261.203 7 260.927 7H260.436C260.16 7 259.936 6.77614 259.936 6.5Z\" fill=\"#53CDE4\"/>\n<path d=\"M109.332 205.616C110.343 205.616 111.163 204.796 111.163 203.784C111.163 202.773 110.343 201.953 109.332 201.953C108.32 201.953 107.5 202.773 107.5 203.784C107.5 204.796 108.32 205.616 109.332 205.616Z\" fill=\"#53CDE4\"/>\n<path d=\"M143.5 235C142.948 235 142.5 234.552 142.5 234C142.5 233.448 142.948 233 143.5 233C144.052 233 144.5 233.448 144.5 234C144.5 234.552 144.052 235 143.5 235Z\" fill=\"#53CDE4\"/>\n<path d=\"M274.401 264.319C275.412 264.319 276.232 263.499 276.232 262.487C276.232 261.476 275.412 260.656 274.401 260.656C273.389 260.656 272.569 261.476 272.569 262.487C272.569 263.499 273.389 264.319 274.401 264.319Z\" fill=\"#53CDE4\"/>\n<path d=\"M256.768 174.763C255.725 174.763 254.88 173.917 254.88 172.875C254.88 171.832 255.725 170.986 256.768 170.986C257.811 170.986 258.656 171.832 258.656 172.875C258.656 173.917 257.811 174.763 256.768 174.763Z\" fill=\"#FF5730\"/>\n<path d=\"M297.388 286.776C298.431 286.776 299.276 285.931 299.276 284.888C299.276 283.845 298.431 283 297.388 283C296.345 283 295.5 283.845 295.5 284.888C295.5 285.931 296.345 286.776 297.388 286.776Z\" fill=\"#FF5730\"/>\n<path d=\"M101.243 92.7774C112.649 92.7774 121.896 83.5309 121.896 72.1247C121.896 60.7185 112.649 51.472 101.243 51.472C89.8368 51.472 80.5903 60.7185 80.5903 72.1247C80.5903 83.5309 89.8368 92.7774 101.243 92.7774Z\" fill=\"white\"/>\n<path d=\"M104.665 96.1999C116.071 96.1999 125.318 86.9534 125.318 75.5472C125.318 64.141 116.071 54.8945 104.665 54.8945C93.2591 54.8945 84.0125 64.141 84.0125 75.5472C84.0125 86.9534 93.2591 96.1999 104.665 96.1999Z\" fill=\"#BB77E9\"/>\n<path d=\"M94.6333 79.3236C94.5153 79.3236 94.2793 79.3236 94.1613 79.2056C93.9252 78.9696 93.9252 78.6155 94.1613 78.3795L107.379 65.1618C107.615 64.9257 107.969 64.9257 108.205 65.1618C108.441 65.3978 108.441 65.7518 108.205 65.9879L94.9874 79.0876C94.8694 79.2056 94.7513 79.3236 94.6333 79.3236Z\" fill=\"#1F204B\"/>\n<path d=\"M107.851 79.3236C107.733 79.3236 107.497 79.3236 107.379 79.2056L94.1613 65.9879C93.9252 65.7518 93.9252 65.3978 94.1613 65.1618C94.3973 64.9257 94.7513 64.9257 94.9874 65.1618L108.205 78.3795C108.441 78.6155 108.441 78.9696 108.205 79.2056C108.087 79.2056 107.969 79.3236 107.851 79.3236Z\" fill=\"#1F204B\"/>\n<path d=\"M101.243 93.4856C89.5593 93.4856 80 83.9263 80 72.2428C80 60.5593 89.5593 51 101.243 51C112.926 51 122.486 60.5593 122.486 72.2428C122.486 83.9263 112.926 93.4856 101.243 93.4856ZM101.243 52.0621C90.1493 52.0621 81.1802 61.0313 81.1802 72.1248C81.1802 83.2182 90.1493 92.1874 101.243 92.1874C112.336 92.1874 121.305 83.2182 121.305 72.1248C121.305 61.0313 112.336 52.0621 101.243 52.0621Z\" fill=\"#1F204B\"/>\n<path d=\"M87.6686 13.6255C88.4508 13.6255 89.0848 12.9915 89.0848 12.2093C89.0848 11.4272 88.4508 10.7932 87.6686 10.7932C86.8865 10.7932 86.2524 11.4272 86.2524 12.2093C86.2524 12.9915 86.8865 13.6255 87.6686 13.6255Z\" fill=\"#FFC54D\"/>\n<path d=\"M105.341 12.7995C106.58 12.7995 107.583 11.7956 107.583 10.5572C107.583 9.31879 106.58 8.31488 105.341 8.31488C104.103 8.31488 103.099 9.31879 103.099 10.5572C103.099 11.7956 104.103 12.7995 105.341 12.7995Z\" fill=\"#FFC54D\"/>\n<path d=\"M82.1129 22.4676C83.2931 22.7036 84.1192 23.7657 83.8832 24.9459C83.6471 26.126 82.585 26.9521 81.4048 26.7161C80.2247 26.4801 79.3986 25.4179 79.6346 24.2378C79.7526 23.0576 80.9328 22.2315 82.1129 22.4676Z\" fill=\"#FF5730\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M82.5 135.823C82.7761 135.823 83 136.047 83 136.323V136.817C83 137.093 82.7761 137.317 82.5 137.317C82.2239 137.317 82 137.093 82 136.817V136.323C82 136.047 82.2239 135.823 82.5 135.823ZM82.5 139.279C82.7761 139.279 83 139.503 83 139.779V140.766C83 141.042 82.7761 141.266 82.5 141.266C82.2239 141.266 82 141.042 82 140.766V139.779C82 139.503 82.2239 139.279 82.5 139.279ZM82.5 143.228C82.7761 143.228 83 143.452 83 143.728V144.716C83 144.992 82.7761 145.216 82.5 145.216C82.2239 145.216 82 144.992 82 144.716V143.728C82 143.452 82.2239 143.228 82.5 143.228ZM82.5 147.178C82.7761 147.178 83 147.402 83 147.678V148.665C83 148.942 82.7761 149.165 82.5 149.165C82.2239 149.165 82 148.942 82 148.665V147.678C82 147.402 82.2239 147.178 82.5 147.178ZM82.5 151.128C82.7761 151.128 83 151.351 83 151.628V152.615C83 152.891 82.7761 153.115 82.5 153.115C82.2239 153.115 82 152.891 82 152.615V151.628C82 151.351 82.2239 151.128 82.5 151.128ZM82.5 155.077C82.7761 155.077 83 155.301 83 155.577V156.565C83 156.841 82.7761 157.065 82.5 157.065C82.2239 157.065 82 156.841 82 156.565V155.577C82 155.301 82.2239 155.077 82.5 155.077ZM82.5 159.027C82.7761 159.027 83 159.251 83 159.527V160.514C83 160.79 82.7761 161.014 82.5 161.014C82.2239 161.014 82 160.79 82 160.514V159.527C82 159.251 82.2239 159.027 82.5 159.027ZM82.5 162.976C82.7761 162.976 83 163.2 83 163.476V164.464C83 164.74 82.7761 164.964 82.5 164.964C82.2239 164.964 82 164.74 82 164.464V163.476C82 163.2 82.2239 162.976 82.5 162.976ZM82.5 166.926C82.7761 166.926 83 167.15 83 167.426V168.413C83 168.689 82.7761 168.913 82.5 168.913C82.2239 168.913 82 168.689 82 168.413V167.426C82 167.15 82.2239 166.926 82.5 166.926ZM82.5 170.876C82.7761 170.876 83 171.099 83 171.376V172.363C83 172.639 82.7761 172.863 82.5 172.863C82.2239 172.863 82 172.639 82 172.363V171.376C82 171.099 82.2239 170.876 82.5 170.876ZM82.5 174.825C82.7761 174.825 83 175.049 83 175.325V176.312C83 176.589 82.7761 176.812 82.5 176.812C82.2239 176.812 82 176.589 82 176.312V175.325C82 175.049 82.2239 174.825 82.5 174.825ZM82.5 178.775C82.7761 178.775 83 178.999 83 179.275V180.262C83 180.538 82.7761 180.762 82.5 180.762C82.2239 180.762 82 180.538 82 180.262V179.275C82 178.999 82.2239 178.775 82.5 178.775ZM82.5 182.724C82.7761 182.724 83 182.948 83 183.224V184.212C83 184.488 82.7761 184.712 82.5 184.712C82.2239 184.712 82 184.488 82 184.212V183.224C82 182.948 82.2239 182.724 82.5 182.724ZM82.5 186.674C82.7761 186.674 83 186.898 83 187.174V188.161C83 188.437 82.7761 188.661 82.5 188.661C82.2239 188.661 82 188.437 82 188.161V187.174C82 186.898 82.2239 186.674 82.5 186.674ZM82.5 190.623C82.7761 190.623 83 190.847 83 191.123V192.111C83 192.387 82.7761 192.611 82.5 192.611C82.2239 192.611 82 192.387 82 192.111V191.123C82 190.847 82.2239 190.623 82.5 190.623ZM82.5 194.573C82.7761 194.573 83 194.797 83 195.073V195.567C83 195.843 82.7761 196.067 82.5 196.067C82.2239 196.067 82 195.843 82 195.567V195.073C82 194.797 82.2239 194.573 82.5 194.573Z\" fill=\"#1F204B\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M270.606 292.213C270.882 292.213 271.106 292.437 271.106 292.713V293.292C271.106 293.568 270.882 293.792 270.606 293.792C270.33 293.792 270.106 293.568 270.106 293.292V292.713C270.106 292.437 270.33 292.213 270.606 292.213ZM270.606 296.262C270.882 296.262 271.106 296.486 271.106 296.762V297.919C271.106 298.195 270.882 298.419 270.606 298.419C270.33 298.419 270.106 298.195 270.106 297.919V296.762C270.106 296.486 270.33 296.262 270.606 296.262ZM270.606 300.89C270.882 300.89 271.106 301.114 271.106 301.39V302.547C271.106 302.823 270.882 303.047 270.606 303.047C270.33 303.047 270.106 302.823 270.106 302.547V301.39C270.106 301.114 270.33 300.89 270.606 300.89ZM270.606 305.517C270.882 305.517 271.106 305.741 271.106 306.017V306.596C271.106 306.777 271.097 306.957 271.08 307.134C271.053 307.409 270.809 307.61 270.534 307.584C270.259 307.557 270.058 307.312 270.085 307.038C270.099 306.892 270.106 306.745 270.106 306.596V306.017C270.106 305.741 270.33 305.517 270.606 305.517ZM269.789 309.381C270.002 309.557 270.033 309.872 269.858 310.085C269.629 310.363 269.374 310.619 269.096 310.847C268.882 311.023 268.567 310.992 268.392 310.778C268.216 310.565 268.247 310.25 268.461 310.075C268.689 309.887 268.898 309.678 269.085 309.45C269.26 309.237 269.575 309.206 269.789 309.381ZM266.594 311.524C266.621 311.798 266.42 312.043 266.145 312.07C265.967 312.087 265.788 312.096 265.606 312.096H265.121C264.845 312.096 264.621 311.872 264.621 311.596C264.621 311.32 264.845 311.096 265.121 311.096H265.606C265.755 311.096 265.903 311.088 266.048 311.074C266.323 311.048 266.567 311.249 266.594 311.524ZM214.639 311.596C214.639 311.32 214.863 311.096 215.139 311.096H215.624C215.9 311.096 216.124 311.32 216.124 311.596C216.124 311.872 215.9 312.096 215.624 312.096H215.139C214.863 312.096 214.639 311.872 214.639 311.596ZM218.036 311.596C218.036 311.32 218.259 311.096 218.536 311.096H219.506C219.782 311.096 220.006 311.32 220.006 311.596C220.006 311.872 219.782 312.096 219.506 312.096H218.536C218.259 312.096 218.036 311.872 218.036 311.596ZM221.918 311.596C221.918 311.32 222.142 311.096 222.418 311.096H223.388C223.664 311.096 223.888 311.32 223.888 311.596C223.888 311.872 223.664 312.096 223.388 312.096H222.418C222.142 312.096 221.918 311.872 221.918 311.596ZM225.8 311.596C225.8 311.32 226.024 311.096 226.3 311.096H227.27C227.546 311.096 227.77 311.32 227.77 311.596C227.77 311.872 227.546 312.096 227.27 312.096H226.3C226.024 312.096 225.8 311.872 225.8 311.596ZM229.682 311.596C229.682 311.32 229.906 311.096 230.182 311.096H231.152C231.429 311.096 231.652 311.32 231.652 311.596C231.652 311.872 231.429 312.096 231.152 312.096H230.182C229.906 312.096 229.682 311.872 229.682 311.596ZM233.564 311.596C233.564 311.32 233.788 311.096 234.064 311.096H235.035C235.311 311.096 235.535 311.32 235.535 311.596C235.535 311.872 235.311 312.096 235.035 312.096H234.064C233.788 312.096 233.564 311.872 233.564 311.596ZM237.446 311.596C237.446 311.32 237.67 311.096 237.946 311.096H238.917C239.193 311.096 239.417 311.32 239.417 311.596C239.417 311.872 239.193 312.096 238.917 312.096H237.946C237.67 312.096 237.446 311.872 237.446 311.596ZM241.328 311.596C241.328 311.32 241.552 311.096 241.828 311.096H242.799C243.075 311.096 243.299 311.32 243.299 311.596C243.299 311.872 243.075 312.096 242.799 312.096H241.828C241.552 312.096 241.328 311.872 241.328 311.596ZM245.21 311.596C245.21 311.32 245.434 311.096 245.71 311.096H246.681C246.957 311.096 247.181 311.32 247.181 311.596C247.181 311.872 246.957 312.096 246.681 312.096H245.71C245.434 312.096 245.21 311.872 245.21 311.596ZM249.092 311.596C249.092 311.32 249.316 311.096 249.592 311.096H250.563C250.839 311.096 251.063 311.32 251.063 311.596C251.063 311.872 250.839 312.096 250.563 312.096H249.592C249.316 312.096 249.092 311.872 249.092 311.596ZM252.975 311.596C252.975 311.32 253.198 311.096 253.475 311.096H254.445C254.721 311.096 254.945 311.32 254.945 311.596C254.945 311.872 254.721 312.096 254.445 312.096H253.475C253.198 312.096 252.975 311.872 252.975 311.596ZM256.857 311.596C256.857 311.32 257.08 311.096 257.357 311.096H258.327C258.603 311.096 258.827 311.32 258.827 311.596C258.827 311.872 258.603 312.096 258.327 312.096H257.357C257.08 312.096 256.857 311.872 256.857 311.596ZM260.739 311.596C260.739 311.32 260.963 311.096 261.239 311.096H262.209C262.485 311.096 262.709 311.32 262.709 311.596C262.709 311.872 262.485 312.096 262.209 312.096H261.239C260.963 312.096 260.739 311.872 260.739 311.596Z\" fill=\"#1F204B\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M263.595 258.726L262.06 258.248H228.632H209.286L161.838 258.033L129.42 252.009V258.248L146.377 262.03L94.1381 261.12V300.325C94.1852 303.534 97.1561 306.147 100.781 306.147H256.951C260.605 306.147 263.595 303.492 263.595 300.247V258.726Z\" fill=\"#E1ABA5\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M178 258.094L149.743 265.81H195.517L186.689 262.617L204.453 258.234L178 258.094Z\" fill=\"#A9807C\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M195.245 276.915H250.44L242.693 270.621L262 258.281L195.245 276.915Z\" fill=\"#A9807C\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M146.378 262.029L129.42 258.249V252.009L122.208 254.31L100.092 261.368L146.378 262.029Z\" fill=\"#A9807C\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M171.432 161.295C171.616 161.502 171.597 161.818 171.39 162.001C171.185 162.182 170.985 162.367 170.787 162.556C170.588 162.747 170.271 162.74 170.08 162.541C169.889 162.342 169.896 162.025 170.096 161.834C170.302 161.636 170.512 161.442 170.726 161.253C170.933 161.069 171.249 161.088 171.432 161.295ZM172.623 160.355C172.464 160.129 172.519 159.817 172.746 159.659C172.863 159.577 172.981 159.496 173.099 159.416C173.218 159.336 173.337 159.257 173.458 159.18C173.69 159.03 173.999 159.097 174.149 159.329C174.298 159.561 174.232 159.871 174 160.02C173.885 160.094 173.771 160.169 173.657 160.246C173.544 160.322 173.431 160.399 173.319 160.478C173.093 160.636 172.781 160.581 172.623 160.355ZM169.047 163.651C169.259 163.827 169.288 164.143 169.112 164.355C168.938 164.565 168.767 164.779 168.601 164.996C168.433 165.215 168.119 165.256 167.9 165.088C167.681 164.92 167.639 164.606 167.807 164.387C167.982 164.16 168.16 163.937 168.343 163.717C168.519 163.504 168.834 163.475 169.047 163.651ZM175.468 158.581C175.346 158.334 175.448 158.034 175.696 157.912C175.952 157.785 176.211 157.663 176.472 157.547C176.724 157.434 177.02 157.547 177.133 157.799C177.245 158.052 177.132 158.347 176.88 158.46C176.631 158.571 176.383 158.688 176.138 158.808C175.89 158.931 175.591 158.829 175.468 158.581ZM166.361 166.515C166.503 166.278 166.81 166.201 167.047 166.343C167.284 166.485 167.361 166.792 167.219 167.029C167.149 167.146 167.08 167.264 167.012 167.382C166.944 167.501 166.877 167.62 166.811 167.74C166.678 167.982 166.374 168.07 166.132 167.938C165.89 167.805 165.802 167.501 165.934 167.259C166.003 167.133 166.073 167.009 166.144 166.885C166.215 166.761 166.288 166.637 166.361 166.515ZM178.551 157.261C178.468 156.998 178.614 156.717 178.877 156.634C179.15 156.548 179.424 156.467 179.7 156.391C179.966 156.318 180.241 156.475 180.314 156.741C180.387 157.008 180.23 157.283 179.964 157.356C179.701 157.428 179.438 157.505 179.178 157.587C178.915 157.671 178.634 157.524 178.551 157.261ZM165.48 169.307C165.736 169.411 165.859 169.703 165.754 169.959C165.651 170.212 165.553 170.467 165.46 170.724C165.365 170.983 165.078 171.117 164.819 171.023C164.559 170.928 164.425 170.641 164.52 170.382C164.618 170.113 164.72 169.846 164.828 169.581C164.933 169.326 165.225 169.203 165.48 169.307ZM181.798 156.425C181.756 156.152 181.943 155.897 182.216 155.855C182.357 155.833 182.499 155.813 182.64 155.794C182.782 155.774 182.924 155.757 183.066 155.74C183.34 155.709 183.588 155.906 183.62 156.18C183.652 156.454 183.455 156.702 183.181 156.734C183.045 156.749 182.909 156.766 182.774 156.785C182.638 156.803 182.503 156.822 182.368 156.843C182.095 156.885 181.84 156.698 181.798 156.425ZM164.383 172.475C164.651 172.54 164.817 172.809 164.753 173.078C164.689 173.344 164.631 173.611 164.578 173.879C164.524 174.15 164.261 174.325 163.99 174.272C163.719 174.218 163.543 173.955 163.597 173.684C163.653 173.403 163.714 173.124 163.78 172.846C163.844 172.577 164.114 172.411 164.383 172.475ZM185.134 156.093C185.134 155.817 185.358 155.593 185.634 155.593C185.92 155.593 186.206 155.598 186.492 155.609C186.768 155.619 186.983 155.852 186.973 156.128C186.962 156.404 186.73 156.619 186.454 156.608C186.181 156.598 185.908 156.593 185.634 156.593C185.358 156.593 185.134 156.369 185.134 156.093ZM163.78 175.774C164.055 175.796 164.26 176.038 164.237 176.313C164.226 176.449 164.216 176.585 164.208 176.722C164.199 176.858 164.192 176.995 164.186 177.131C164.174 177.407 163.941 177.621 163.665 177.609C163.389 177.597 163.175 177.364 163.187 177.088C163.193 176.945 163.201 176.802 163.21 176.659C163.219 176.517 163.229 176.374 163.241 176.231C163.263 175.956 163.505 175.751 163.78 175.774ZM175.085 166.956C175.282 167.15 175.284 167.466 175.09 167.663C174.891 167.864 174.699 168.071 174.512 168.284C174.33 168.491 174.014 168.511 173.806 168.329C173.599 168.147 173.578 167.831 173.761 167.623C173.96 167.397 174.166 167.176 174.378 166.961C174.572 166.764 174.888 166.762 175.085 166.956ZM176.326 165.897C176.165 165.672 176.217 165.36 176.442 165.199C176.565 165.112 176.689 165.026 176.814 164.941C176.939 164.857 177.066 164.775 177.193 164.694C177.427 164.547 177.736 164.616 177.883 164.85C178.031 165.083 177.961 165.392 177.727 165.54C177.608 165.615 177.49 165.692 177.372 165.771C177.255 165.85 177.138 165.931 177.023 166.013C176.799 166.173 176.487 166.122 176.326 165.897ZM172.838 169.642C173.074 169.786 173.148 170.094 173.003 170.33C172.93 170.45 172.858 170.572 172.787 170.695C172.717 170.817 172.648 170.941 172.581 171.066C172.451 171.309 172.148 171.401 171.905 171.27C171.661 171.14 171.57 170.837 171.7 170.593C171.771 170.46 171.845 170.328 171.92 170.197C171.995 170.066 172.072 169.936 172.151 169.808C172.295 169.572 172.603 169.498 172.838 169.642ZM179.332 164.1C179.227 163.845 179.348 163.553 179.604 163.447C179.883 163.332 180.165 163.225 180.45 163.126C180.711 163.035 180.996 163.173 181.087 163.434C181.177 163.695 181.039 163.98 180.778 164.071C180.511 164.163 180.247 164.264 179.985 164.372C179.73 164.477 179.438 164.356 179.332 164.1ZM188.483 156.272C188.525 155.999 188.78 155.812 189.053 155.854C189.335 155.897 189.617 155.946 189.898 156C190.169 156.053 190.347 156.315 190.294 156.586C190.242 156.857 189.98 157.035 189.708 156.982C189.44 156.93 189.171 156.884 188.901 156.842C188.628 156.8 188.441 156.545 188.483 156.272ZM163.686 179.126C163.961 179.106 164.2 179.313 164.22 179.589C164.239 179.862 164.264 180.134 164.294 180.405C164.324 180.68 164.126 180.927 163.851 180.957C163.577 180.987 163.33 180.789 163.3 180.514C163.269 180.23 163.243 179.945 163.222 179.66C163.203 179.384 163.41 179.145 163.686 179.126ZM171.26 172.769C171.522 172.856 171.664 173.139 171.577 173.401C171.488 173.669 171.407 173.94 171.333 174.213C171.261 174.48 170.987 174.638 170.72 174.566C170.454 174.494 170.296 174.22 170.368 173.953C170.446 173.662 170.533 173.372 170.628 173.086C170.715 172.824 170.998 172.682 171.26 172.769ZM182.668 163.033C182.623 162.761 182.808 162.504 183.08 162.459C183.229 162.435 183.379 162.412 183.528 162.392C183.678 162.372 183.828 162.354 183.978 162.338C184.253 162.309 184.499 162.508 184.528 162.783C184.557 163.058 184.357 163.304 184.083 163.333C183.942 163.348 183.802 163.364 183.662 163.383C183.521 163.402 183.382 163.423 183.242 163.446C182.97 163.491 182.713 163.306 182.668 163.033ZM191.765 156.958C191.848 156.695 192.128 156.549 192.392 156.632C192.528 156.675 192.664 156.719 192.8 156.765C193.061 156.853 193.202 157.136 193.114 157.398C193.026 157.66 192.743 157.801 192.481 157.712C192.351 157.669 192.222 157.627 192.091 157.586C191.828 157.503 191.682 157.222 191.765 156.958ZM170.433 176.172C170.708 176.197 170.911 176.44 170.885 176.715C170.873 176.856 170.862 176.997 170.853 177.138C170.844 177.279 170.837 177.421 170.832 177.562C170.823 177.838 170.592 178.054 170.316 178.045C170.04 178.035 169.824 177.804 169.833 177.528C169.838 177.377 169.845 177.226 169.855 177.076C169.864 176.925 169.876 176.774 169.89 176.624C169.915 176.349 170.158 176.147 170.433 176.172ZM186.159 162.752C186.177 162.476 186.415 162.268 186.691 162.286C186.992 162.306 187.293 162.335 187.592 162.372C187.866 162.406 188.061 162.656 188.027 162.93C187.993 163.204 187.743 163.399 187.469 163.365C187.188 163.33 186.907 163.303 186.624 163.284C186.349 163.265 186.14 163.027 186.159 162.752ZM164.103 182.453C164.372 182.391 164.64 182.56 164.701 182.829C164.762 183.096 164.827 183.361 164.898 183.625C164.97 183.892 164.811 184.166 164.545 184.237C164.278 184.309 164.004 184.151 163.932 183.884C163.858 183.608 163.789 183.33 163.726 183.051C163.665 182.782 163.833 182.514 164.103 182.453ZM180.007 171.472C179.84 171.252 179.883 170.938 180.103 170.771C180.242 170.666 180.384 170.564 180.529 170.467C180.674 170.369 180.822 170.276 180.972 170.187C181.21 170.046 181.517 170.124 181.657 170.362C181.798 170.6 181.72 170.906 181.482 171.047C181.348 171.126 181.217 171.209 181.087 171.296C180.958 171.383 180.831 171.474 180.707 171.568C180.487 171.735 180.174 171.692 180.007 171.472ZM170.4 179.674C170.674 179.636 170.926 179.827 170.964 180.1C171.003 180.381 171.05 180.66 171.105 180.937C171.158 181.208 170.982 181.471 170.711 181.524C170.44 181.578 170.177 181.402 170.124 181.131C170.065 180.835 170.015 180.537 169.974 180.238C169.936 179.964 170.127 179.712 170.4 179.674ZM178.661 172.917C178.893 173.068 178.958 173.377 178.807 173.609C178.722 173.739 178.641 173.872 178.563 174.007C178.485 174.142 178.412 174.28 178.342 174.419C178.219 174.666 177.919 174.766 177.672 174.642C177.425 174.519 177.324 174.219 177.448 173.972C177.526 173.815 177.608 173.661 177.696 173.51C177.783 173.358 177.874 173.209 177.969 173.062C178.12 172.831 178.43 172.766 178.661 172.917ZM189.622 163.27C189.703 163.006 189.982 162.857 190.246 162.937C190.391 162.981 190.534 163.027 190.678 163.076C190.939 163.164 191.08 163.447 190.992 163.709C190.904 163.971 190.621 164.111 190.359 164.023C190.225 163.978 190.09 163.935 189.955 163.894C189.691 163.814 189.542 163.534 189.622 163.27ZM183.503 169.661C183.451 169.39 183.628 169.128 183.899 169.075C184.071 169.042 184.243 169.014 184.417 168.991C184.59 168.967 184.764 168.949 184.938 168.936C185.213 168.915 185.454 169.121 185.475 169.396C185.496 169.671 185.29 169.912 185.014 169.933C184.859 169.945 184.704 169.961 184.55 169.982C184.395 170.003 184.242 170.028 184.089 170.057C183.818 170.11 183.556 169.932 183.503 169.661ZM165.021 185.678C165.278 185.576 165.568 185.702 165.67 185.959C165.72 186.086 165.771 186.212 165.824 186.338C165.93 186.593 165.81 186.886 165.555 186.993C165.3 187.099 165.008 186.979 164.901 186.724C164.846 186.592 164.792 186.459 164.74 186.326C164.638 186.07 164.764 185.779 165.021 185.678ZM177.104 176.533C177.378 176.566 177.574 176.815 177.541 177.089C177.522 177.244 177.508 177.399 177.498 177.554C177.488 177.71 177.483 177.866 177.482 178.021C177.481 178.297 177.256 178.52 176.98 178.519C176.703 178.517 176.481 178.292 176.482 178.016C176.483 177.841 176.489 177.667 176.5 177.492C176.511 177.317 176.527 177.143 176.548 176.97C176.581 176.696 176.83 176.5 177.104 176.533ZM171.164 183.092C171.422 182.993 171.711 183.121 171.81 183.379C171.861 183.511 171.913 183.642 171.968 183.773C172.074 184.028 171.954 184.321 171.699 184.427C171.444 184.533 171.151 184.413 171.045 184.158C170.987 184.019 170.931 183.879 170.877 183.738C170.777 183.48 170.906 183.191 171.164 183.092ZM187.44 169.584C187.513 169.318 187.788 169.161 188.054 169.234C188.223 169.28 188.39 169.331 188.556 169.386C188.817 169.474 188.958 169.758 188.87 170.02C188.782 170.281 188.499 170.422 188.237 170.334C188.089 170.285 187.94 170.239 187.79 170.198C187.524 170.125 187.367 169.85 187.44 169.584ZM177.307 180.466C177.567 180.374 177.853 180.511 177.944 180.771C177.996 180.918 178.052 181.063 178.112 181.207C178.218 181.462 178.098 181.755 177.843 181.861C177.588 181.968 177.296 181.847 177.189 181.592C177.122 181.431 177.059 181.268 177.001 181.103C176.909 180.843 177.046 180.557 177.307 180.466Z\" fill=\"#FFC54D\"/>\n</svg>`,\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {createElementFromNode} from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_now-illustration.scss';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {orderedSizeMap, pixelSizeMap, assetMap} from './maps.js';\nimport resizeBehavior from '@servicenow/behavior-resize';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport {declarativeOperations} from '@servicenow/ui-core';\nimport ThemeableIllustration from './themeable-illustration';\nimport {createHttpEffect} from '@servicenow/ui-effect-http';\nimport DOMPurify from 'dompurify';\nimport {domPurifyConfig} from '@servicenow/library-enhanced-utils';\nimport {\n\tSVG,\n\tLOCAL_STORAGE_KEY,\n\tsharedFetchSucceeded,\n\tsharedFetchFailed,\n} from './utils/shared-effect-http';\nconst {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\n\nimport {coralNoData} from './inline-svg/coral-no-data';\nimport {polarisNoData} from './inline-svg/polaris-no-data';\n\nconst THEME_IDS = {\n\tCORAL: 'fad87d2ca304121029a4d1aed31e610f',\n\tPOLARIS: '31bf91ae07203010e03948f78ad30095',\n};\n\nconst ALLOWED_THEMES = [THEME_IDS.CORAL, THEME_IDS.POLARIS];\n\nconst NO_DATA_INLINE_SVG = {\n\t[THEME_IDS.POLARIS]: polarisNoData,\n\t[THEME_IDS.CORAL]: coralNoData,\n};\n\nconst ti = new ThemeableIllustration();\nconst init = ({\n\tstate,\n\tproperties,\n\tupdateState,\n\tdispatch,\n\thost,\n\thasThemeChanged = false,\n}) => {\n\tconst {themeId} = state;\n\tif (properties.size === ThemeableIllustration.AUTO) {\n\t\tupdateResizeObserver({properties, dispatch});\n\t\tforceHostMeasure({\n\t\t\thost,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\tillustration: properties.illustration,\n\t\t\thasThemeChanged,\n\t\t});\n\t} else {\n\t\tprocessSize({\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t\tthemeHookUrl: ti.hasThemeImageUrl(state, properties)\n\t\t\t\t? ti.getUrlFromHook(state, properties)\n\t\t\t\t: null,\n\t\t\tdispatch,\n\t\t\tthemeId,\n\t\t});\n\t}\n};\n\nconst processSize = ({\n\tproperties,\n\tupdateState,\n\tthemeHookUrl,\n\tdispatch,\n\tthemeId,\n}) => {\n\tconst {size} = properties;\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'requestedSize',\n\t\tvalue: size,\n\t\tshouldRender: false,\n\t});\n\tprocessRequestedSize({\n\t\tsize,\n\t\tillustration: properties.illustration,\n\t\tupdateState,\n\t\tthemeHookUrl,\n\t\tdispatch,\n\t\tthemeId,\n\t});\n};\n\nconst processRequestedSize = ({\n\tsize,\n\tillustration,\n\tupdateState,\n\tthemeHookUrl,\n\tdispatch,\n\tthemeId,\n}) => {\n\tgetCorrectAsset(\n\t\t{size, illustration, themeHookUrl, dispatch},\n\t\tupdateState,\n\t\tthemeId,\n\t).then((toUse) => {\n\t\tlet hasBadGradient = false;\n\t\tif (toUse?.asset?.data) {\n\t\t\thasBadGradient = ti.hasBadGradient(toUse.asset.data);\n\t\t}\n\t\tupdateState({\n\t\t\thasBadGradient,\n\t\t\tasset: {...toUse.asset, type: toUse.type},\n\t\t\tcurrentSize: toUse.size,\n\t\t});\n\t});\n};\n\nconst fetchAsset = createHttpEffect(\n\t'/images/@servicenow/now-illustration/:illustrationName',\n\t{\n\t\tmethod: 'GET',\n\t\tbatch: false,\n\t\tpathParams: ['illustrationName'],\n\t\tstreaming: {parsePartsAsJson: false, emitCompletedResponse: true},\n\t\tsuccessActionType: 'PRIVATE#ASSET_FETCH_SUCCEEDED',\n\t\terrorActionType: 'PRIVATE#ASSET_FETCH_FAILED',\n\t},\n);\n\nconst fetchCustomUrlAsset = createHttpEffect('/:directory/:file', {\n\tmethod: 'GET',\n\tbatch: false,\n\tencodeURIComponent: false,\n\tpathParams: ['directory', 'file'],\n\tstreaming: {parsePartsAsJson: false, emitCompletedResponse: true},\n\tsuccessActionType: 'PRIVATE#ASSET_FETCH_CUSTOM_URL_SUCCEEDED',\n\terrorActionType: 'PRIVATE#ASSET_FETCH_CUSTOM_URL_FAILED',\n});\n\nexport const fetchFromCache = (\n\tdispatch,\n\tillustration,\n\tsize,\n\tthemeHookUrl,\n\tthemeId,\n) => {\n\tlet parts;\n\tif (themeHookUrl) {\n\t\tconst url = themeHookUrl.startsWith('/')\n\t\t\t? themeHookUrl.substring(1)\n\t\t\t: themeHookUrl;\n\t\tparts = url.split('/');\n\t}\n\tconst illustrationName = themeHookUrl || `${illustration}-${size}.svg`;\n\tconst key = LOCAL_STORAGE_KEY`${illustrationName}`;\n\tlet svgString = localStorage.getItem(key);\n\tif (!svgString && illustration === 'no-data') {\n\t\tif (ALLOWED_THEMES.includes(themeId)) {\n\t\t\tsvgString = NO_DATA_INLINE_SVG[themeId][size];\n\t\t}\n\t}\n\tif (!svgString) {\n\t\tdispatch(\n\t\t\tthemeHookUrl\n\t\t\t\t? 'PRIVATE#ASSET_FETCH_CUSTOM_URL_REQUESTED'\n\t\t\t\t: 'PRIVATE#ASSET_FETCH_REQUESTED',\n\t\t\tthemeHookUrl ? {directory: parts[0], file: parts[1]} : {illustrationName},\n\t\t\t{illustration, size, themeHookUrl, illustrationName},\n\t\t);\n\t\treturn;\n\t}\n\treturn svgString;\n};\n\nconst assetLoadQueue = {};\nconst queueAssetLoad = ({size, illustration}) => {\n\treturn new Promise((resolve) => {\n\t\tassetLoadQueue[illustration] = assetLoadQueue[illustration] || {};\n\t\tassetLoadQueue[illustration][size] =\n\t\t\tassetLoadQueue[illustration][size] || [];\n\t\tassetLoadQueue[illustration][size].push(resolve);\n\t});\n};\n\nconst resolveAssetLoadQueue = ({size, illustration, data}) => {\n\tif (!assetLoadQueue[illustration] || !assetLoadQueue[illustration][size]) {\n\t\treturn;\n\t}\n\tfor (const res of assetLoadQueue[illustration][size]) {\n\t\tres(data);\n\t}\n};\n\n/**\n * Fetch one asset in one size and store information about it\n * in the asset map\n * @param {*} param0\n */\nconst loadAsset = (\n\t{size, illustration, themeHookUrl, dispatch},\n\tupdateState,\n\tthemeId,\n) => {\n\tif (assetMap[illustration].sizes[size].isLoading) {\n\t\treturn queueAssetLoad({size, illustration});\n\t} else {\n\t\tassetMap[illustration].sizes[size].isLoading = true;\n\t\tqueueAssetLoad({size, illustration});\n\t}\n\n\tconst svgString = fetchFromCache(\n\t\tdispatch,\n\t\tillustration,\n\t\tsize,\n\t\tthemeHookUrl,\n\t\tthemeId,\n\t);\n\n\tif (!svgString) {\n\t\treturn Promise.resolve('');\n\t} else {\n\t\t// Because Safari + VO we have to ensure the svg is hidden or it will be annouced\n\t\t// at the img level + the svg level\n\t\tif (assetMap[illustration].type === SVG) {\n\t\t\tif (ti.hasBadGradient(svgString)) {\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'hasBadGradient',\n\t\t\t\t\tvalue: true,\n\t\t\t\t\toperation: declarativeOperations.SET,\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\t\t\tassetMap[illustration].sizes[size].loaded = true;\n\t\t\tassetMap[illustration].sizes[size].isLoading = false;\n\t\t\tassetMap[illustration].sizes[size].data = svgString;\n\t\t\tresolveAssetLoadQueue({\n\t\t\t\tsize,\n\t\t\t\tillustration,\n\t\t\t\tdata: assetMap[illustration].sizes[size].data,\n\t\t\t});\n\t\t}\n\t}\n\treturn Promise.resolve(svgString);\n};\n\n/**\n * Gets the image data for a size/illustration combo.\n * Note that this might return the data of a different image size\n * if the requested size doesn't exist\n * Only assets whitelisted in the assetmap can be loaded\n * Note that we can easily switch to allowing custom illustrations by dynamically\n * changing the asset map\n * Returns the data and the size associated with it\n * @param {*} param0\n */\nconst getCorrectAsset = (\n\t{size, illustration, themeHookUrl, dispatch},\n\tupdateState,\n\tthemeId,\n) => {\n\treturn new Promise((resolve) => {\n\t\t// asset is not whitelisted or has no available sizes\n\t\tif (\n\t\t\t!size ||\n\t\t\t!illustration ||\n\t\t\t!assetMap[illustration] ||\n\t\t\t!assetMap[illustration].sizes\n\t\t) {\n\t\t\tresolve({data: '', size, type: null});\n\t\t\treturn;\n\t\t}\n\n\t\t// that size doesn't exist\n\t\tif (!assetMap[illustration].sizes[size]) {\n\t\t\tresolve(\n\t\t\t\tgetCorrectAsset(\n\t\t\t\t\t{\n\t\t\t\t\t\tsize: getNextSize({size, illustration}),\n\t\t\t\t\t\tillustration,\n\t\t\t\t\t\tthemeHookUrl,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tthemeId,\n\t\t\t\t\t},\n\t\t\t\t\tupdateState,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!assetMap[illustration].sizes[size].loaded) {\n\t\t\tresolve(\n\t\t\t\tloadAsset(\n\t\t\t\t\t{size, illustration, themeHookUrl, dispatch},\n\t\t\t\t\tupdateState,\n\t\t\t\t\tthemeId,\n\t\t\t\t).then(() => {\n\t\t\t\t\treturn getCorrectAsset(\n\t\t\t\t\t\t{size, illustration, themeHookUrl, dispatch},\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tthemeId,\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tresolve({\n\t\t\tasset: assetMap[illustration].sizes[size],\n\t\t\tsize,\n\t\t\ttype: assetMap[illustration].type,\n\t\t});\n\t});\n};\n\n/**\n * For a given illustration and `size` property gets the next \"logical\"\n * size based on requirements: try smaller first if no smaller ones then try bigger\n * @param {*} param0\n */\nconst getNextSize = ({size, illustration}) => {\n\tif (!assetMap[illustration] || !assetMap[illustration].sizes) {\n\t\treturn '';\n\t}\n\n\tconst availableSizes = Object.keys(assetMap[illustration].sizes),\n\t\tordered = orderedSizeMap.reduce((acc, val) => {\n\t\t\tif (availableSizes.indexOf(val) !== -1 || val === size) {\n\t\t\t\tacc.push(val);\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []),\n\t\ti = ordered.indexOf(size);\n\n\tif (ordered.length === 1) {\n\t\t// no other size available\n\t\treturn 'null';\n\t}\n\n\tif (i === 0) {\n\t\t// no smaller size, go up\n\t\treturn ordered[i + 1];\n\t} else {\n\t\treturn ordered[i - 1];\n\t}\n};\n\n/**\n * in auto mode the size of the comp changed, see if we need to change the requestedSize\n * @param {*} param0\n */\nconst pixelSizeChanged = ({\n\tupdateState,\n\twidth,\n\theight,\n\tdispatch,\n\tillustration = '',\n\thasThemeChanged = false,\n}) => {\n\tconst smallerSide = Math.min(width, height);\n\tlet newSize = '';\n\n\tif (smallerSide <= pixelSizeMap.md) {\n\t\tnewSize = ThemeableIllustration.SM;\n\t} else if (smallerSide <= pixelSizeMap.lg) {\n\t\tnewSize = ThemeableIllustration.MD;\n\t} else {\n\t\tnewSize = ThemeableIllustration.LG;\n\t}\n\tif (hasThemeChanged && assetMap[illustration] !== undefined) {\n\t\tassetMap[illustration].sizes[newSize].loaded = false;\n\t}\n\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'requestedSize',\n\t\tvalue: newSize,\n\t\tshouldRender: false,\n\t});\n\tdispatch('NOW_TILE_ICON#REQUESTED_SIZE_CHANGED');\n};\n\nconst updateResizeObserver = ({properties, forceRemove, dispatch}) => {\n\tif (properties.size === 'auto' && !forceRemove) {\n\t\tdispatch('NOW_RESIZE#ENABLE');\n\t} else {\n\t\tdispatch('NOW_RESIZE#DISABLE');\n\t}\n};\n\n/**\n * force a host size measure as the resizeobserver doesn't kick on init\n */\nconst forceHostMeasure = ({\n\thost,\n\tupdateState,\n\tdispatch,\n\tillustration = '',\n\thasThemeChanged = false,\n}) => {\n\trequestAnimationFrame(() => {\n\t\tconst rect = host.getBoundingClientRect();\n\t\tpixelSizeChanged({\n\t\t\tupdateState,\n\t\t\twidth: rect.width,\n\t\t\theight: rect.height,\n\t\t\tdispatch,\n\t\t\tillustration,\n\t\t\thasThemeChanged,\n\t\t});\n\t});\n};\nconst renderImage = (state) => {\n\tconst {\n\t\tasset: {data},\n\t\tproperties: {alt},\n\t} = state;\n\tconst fig = document.createElement('FIGURE');\n\tfig.classList.add('now-illustration');\n\t//adding unique class to fix DEF0522940\n\tconst klass = `c__${(Math.random() + 1).toString(36).substring(10)}`;\n\tfig.classList.add(klass);\n\t//remove css import security risk\n\tconst cleanData = ti.cleanCSSImport(data);\n\tfig.innerHTML = DOMPurify.sanitize(cleanData, domPurifyConfig);\n\tconst vnode = createElementFromNode(fig);\n\tvnode.children[0].data.attrs['role'] = 'img';\n\tvnode.children[0].data.attrs['aria-label'] = alt;\n\tvnode.children[0].data.attrs['aria-hidden'] = alt ? 'false' : 'true';\n\treturn vnode;\n};\nconst view = (state) => {\n\t// no asset available\n\tif (!state.asset || !state.currentSize) {\n\t\treturn <span />;\n\t}\n\n\treturn renderImage(state);\n};\n\n/**\n * An SVG asset that can be added to clarify container text or convey additional information to the user.\n *\n * ```jsx\n * <now-illustration illustration=\"add-attachment\" size=\"auto\" />\n * ```\n *\n * @seismicElement now-illustration\n * @summary Multi-size set of illustrations loaded on-demand. The component will first check the currently applied theme for any of the following 'Next Experience' design tokens for the image URL to load:\n `--now-illustration--add-attachment-sm--url`,\n `--now-illustration--add-attachment-md--url`,\n `--now-illustration--add-attachment-lg--url`,\n `--now-illustration--add-data-sm--url`,\n `--now-illustration--add-data-md--url`,\n `--now-illustration--add-data-lg--url`,\n `--now-illustration--ai-general-sm--url`,\n `--now-illustration--ai-general-md--url`,\n `--now-illustration--ai-general-lg--url`,\n `--now-illustration--completed-tasks-sm--url`,\n `--now-illustration--completed-tasks-md--url`,\n `--now-illustration--completed-tasks-lg--url`,\n `--now-illustration--error-sm--url`,\n `--now-illustration--error-md--url`,\n `--now-illustration--error-lg--url`,\n `--now-illustration--first-time-user-sm--url`,\n `--now-illustration--first-time-user-md--url`,\n `--now-illustration--first-time-user-lg--url`,\n `--now-illustration--interrupted-sm--url`,\n `--now-illustration--interrupted-md--url`,\n `--now-illustration--interrupted-lg--url`,\n `--now-illustration--no-activities-sm--url`,\n `--now-illustration--no-activities-md--url`,\n `--now-illustration--no-activities-lg--url`,\n `--now-illustration--no-data-sm--url`,\n `--now-illustration--no-data-md--url`,\n `--now-illustration--no-data-lg--url`,\n `--now-illustration--no-search-results-sm--url`,\n `--now-illustration--no-search-results-md--url`,\n `--now-illustration--no-search-results-lg--url`,\n `--now-illustration--offline-sm--url`,\n `--now-illustration--offline-md--url`,\n `--now-illustration--offline-lg--url`,\n `--now-illustration--permissions-sm--url`,\n `--now-illustration--permissions-md--url`,\n `--now-illustration--permissions-lg--url`,\n `--now-illustration--unconfigured-sm--url`,\n `--now-illustration--unconfigured-md--url`,\n `--now-illustration--unconfigured-lg--url`\n * @uib.label Illustration\n * @uib.icon illustration\n * @uib.description An SVG asset that can be added to clarify container text or convey additional information to the user.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties illustration, size, alt\n * @uib.layout.accessibility.children alt\n * @uib.layout.accessibility.icon accessibility-outline\n */\n\ncreateEnhancedElement('now-illustration', {\n\tproperties: {\n\t\t/**\n\t\t * Requested size used to pick the right illustration asset. If using `auto`, then\n\t\t * the component chooses the appropriate illustration asset based on the current\n\t\t * size of the now-illustration component. Note: When using `auto` mode, do not\n\t\t * set the illustration `display` to an inline value.\n\t\t * @type {('sm'|'md'|'lg'|'auto')}\n\t\t * @uib.description Requested size used to pick the right illustration asset. If using `auto` then the component chooses the appropriate illustration asset based on the current size of the now-illustration component. Note: When using `auto` mode, do not set the illustration `display` to an inline value\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'auto',\n\t\t\tschema: {type: 'string', enum: ['sm', 'md', 'lg', 'auto']},\n\t\t},\n\t\t/**\n\t\t * Descriptive text to use for the illustration. By default, there is no alternative text.\n\t\t * @type {(string)}\n\t\t * @uib.label Alt text\n\t\t * @uib.description Descriptive text to use for the illustration. By default, there is no alternative text.\n\t\t */\n\t\talt: {\n\t\t\tdefault: '',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Name of the illustration to use.\n\t\t * @type {('add-attachment'|'add-data'|'ai-general'|'completed-tasks'|'error'|'first-time-user'|'interrupted'|'no-activities'|'no-data'|'no-search-results'|'offline'|'permissions'|'unconfigured')}\n\t\t * @uib.description Name of the illustration to use\n\t\t * @uib.defaultValue add-attachment\n\t\t */\n\t\tillustration: {\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'add-attachment',\n\t\t\t\t\t'add-data',\n\t\t\t\t\t'ai-general',\n\t\t\t\t\t'completed-tasks',\n\t\t\t\t\t'error',\n\t\t\t\t\t'first-time-user',\n\t\t\t\t\t'interrupted',\n\t\t\t\t\t'no-activities',\n\t\t\t\t\t'no-data',\n\t\t\t\t\t'no-search-results',\n\t\t\t\t\t'offline',\n\t\t\t\t\t'permissions',\n\t\t\t\t\t'unconfigured',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\tcurrentSize: null,\n\t\tasset: null,\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: resizeBehavior,\n\t\t\toptions: {\n\t\t\t\ttimer: {type: 'throttle', wait: 30},\n\t\t\t\tpreventRender: true,\n\t\t\t\tcomponentManaged: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: [\n\t\t\t\t\t'--now-illustration--add-attachment-sm--url',\n\t\t\t\t\t'--now-illustration--add-attachment-md--url',\n\t\t\t\t\t'--now-illustration--add-attachment-lg--url',\n\t\t\t\t\t'--now-illustration--add-data-sm--url',\n\t\t\t\t\t'--now-illustration--add-data-md--url',\n\t\t\t\t\t'--now-illustration--add-data-lg--url',\n\t\t\t\t\t'--now-illustration--ai-general-sm--url',\n\t\t\t\t\t'--now-illustration--ai-general-md--url',\n\t\t\t\t\t'--now-illustration--ai-general-lg--url',\n\t\t\t\t\t'--now-illustration--completed-tasks-sm--url',\n\t\t\t\t\t'--now-illustration--completed-tasks-md--url',\n\t\t\t\t\t'--now-illustration--completed-tasks-lg--url',\n\t\t\t\t\t'--now-illustration--error-sm--url',\n\t\t\t\t\t'--now-illustration--error-md--url',\n\t\t\t\t\t'--now-illustration--error-lg--url',\n\t\t\t\t\t'--now-illustration--first-time-user-sm--url',\n\t\t\t\t\t'--now-illustration--first-time-user-md--url',\n\t\t\t\t\t'--now-illustration--first-time-user-lg--url',\n\t\t\t\t\t'--now-illustration--interrupted-sm--url',\n\t\t\t\t\t'--now-illustration--interrupted-md--url',\n\t\t\t\t\t'--now-illustration--interrupted-lg--url',\n\t\t\t\t\t'--now-illustration--no-activities-sm--url',\n\t\t\t\t\t'--now-illustration--no-activities-md--url',\n\t\t\t\t\t'--now-illustration--no-activities-lg--url',\n\t\t\t\t\t'--now-illustration--no-data-sm--url',\n\t\t\t\t\t'--now-illustration--no-data-md--url',\n\t\t\t\t\t'--now-illustration--no-data-lg--url',\n\t\t\t\t\t'--now-illustration--no-search-results-sm--url',\n\t\t\t\t\t'--now-illustration--no-search-results-md--url',\n\t\t\t\t\t'--now-illustration--no-search-results-lg--url',\n\t\t\t\t\t'--now-illustration--offline-sm--url',\n\t\t\t\t\t'--now-illustration--offline-md--url',\n\t\t\t\t\t'--now-illustration--offline-lg--url',\n\t\t\t\t\t'--now-illustration--permissions-sm--url',\n\t\t\t\t\t'--now-illustration--permissions-md--url',\n\t\t\t\t\t'--now-illustration--permissions-lg--url',\n\t\t\t\t\t'--now-illustration--unconfigured-sm--url',\n\t\t\t\t\t'--now-illustration--unconfigured-md--url',\n\t\t\t\t\t'--now-illustration--unconfigured-lg--url',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({state, host}) => {\n\t\t\tconst {hasBadGradient} = state;\n\t\t\tif (hasBadGradient) {\n\t\t\t\thost.shadowRoot.childNodes.forEach((node) => {\n\t\t\t\t\tti.findAndFixGradients(node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t['PRIVATE#THEME_CHANGED']: ({\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\thost,\n\t\t}) => {\n\t\t\tconst {themeId} = state;\n\t\t\tconst {illustration, size} = properties;\n\t\t\tlet hasThemeChanged = false;\n\t\t\t/** We want to check if the theme has actually changed or not.\n\t\t\t * This actionHandler gets called multiple times on load, so we dont want to re-fetch the asset if the theme has not changed.\n\t\t\t */\n\t\t\tif (\n\t\t\t\tthemeId &&\n\t\t\t\tthemeId !== window?.ux_globals?.theme?.themeOptions?.themeId\n\t\t\t) {\n\t\t\t\thasThemeChanged = true;\n\t\t\t\tupdateState(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpath: 'themeId',\n\t\t\t\t\t\tvalue: window?.ux_globals?.theme?.themeOptions?.themeId ?? '',\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tti.cancelDelay(illustration, size);\n\t\t\tinit({state, properties, updateState, dispatch, host, hasThemeChanged});\n\t\t},\n\t\t[COMPONENT_CONNECTED]: ({\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\thost,\n\t\t}) => {\n\t\t\t/*\n\t\t\t * If the theme behavior does not dispatch PRIVATE#THEME_CHANGED, we need to call init via callback...\n\t\t\t * If we do receive the PRIVATE#THEME_CHANGED event we'll cancel this startDelay...\n\t\t\t * Otherwise this call will start loading the default image before we get a chance to determine if there is a image url in the theme hook.\n\t\t\t */\n\t\t\tconst callback = () =>\n\t\t\t\tinit({state, properties, updateState, dispatch, host});\n\t\t\tconst {illustration, size} = properties;\n\t\t\tti.startDelay(illustration, size, callback, 100);\n\t\t\tupdateState(() => {\n\t\t\t\treturn {\n\t\t\t\t\tpath: 'themeId',\n\t\t\t\t\tvalue: window?.ux_globals?.theme?.themeOptions?.themeId ?? '',\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({host, properties, dispatch}) => {\n\t\t\tupdateResizeObserver({properties, host, dispatch, forceRemove: true});\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\thost,\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {name, value, previousValue} = action.payload;\n\n\t\t\tconst {themeId} = state;\n\t\t\tif (name === 'size') {\n\t\t\t\tif (\n\t\t\t\t\tvalue === ThemeableIllustration.AUTO &&\n\t\t\t\t\tpreviousValue !== ThemeableIllustration.AUTO\n\t\t\t\t) {\n\t\t\t\t\tforceHostMeasure({host, updateState, dispatch});\n\t\t\t\t} else {\n\t\t\t\t\tconst {illustration} = properties;\n\t\t\t\t\tconst themeHookUrl = ti.hasThemeImageUrl(state, {\n\t\t\t\t\t\tillustration,\n\t\t\t\t\t\tsize: value,\n\t\t\t\t\t})\n\t\t\t\t\t\t? ti.getUrlFromHook(state, {illustration, size: value})\n\t\t\t\t\t\t: null;\n\t\t\t\t\tprocessSize({\n\t\t\t\t\t\tproperties,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tthemeHookUrl,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tthemeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (name === 'illustration') {\n\t\t\t\tconst {size} = properties;\n\n\t\t\t\tif (size === ThemeableIllustration.AUTO) {\n\t\t\t\t\tforceHostMeasure({host, updateState, dispatch});\n\t\t\t\t} else {\n\t\t\t\t\tconst themeHookUrl = ti.hasThemeImageUrl(state, {\n\t\t\t\t\t\tillustration: value,\n\t\t\t\t\t\tsize,\n\t\t\t\t\t})\n\t\t\t\t\t\t? ti.getUrlFromHook(state, {illustration: value, size})\n\t\t\t\t\t\t: null;\n\n\t\t\t\t\tprocessRequestedSize({\n\t\t\t\t\t\tsize,\n\t\t\t\t\t\tillustration: value,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tthemeHookUrl,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tthemeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t['NOW_RESIZE#ELEMENT_RESIZED']: ({\n\t\t\tupdateState,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t}) => {\n\t\t\tconst {width, height} = action.payload;\n\t\t\tif (state?.asset?.data && ti.hasBadGradient(state.asset.data)) {\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'hasBadGradient',\n\t\t\t\t\tvalue: true,\n\t\t\t\t\toperation: declarativeOperations.SET,\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\t\t\tpixelSizeChanged({updateState, width, height, dispatch});\n\t\t},\n\t\t['NOW_TILE_ICON#REQUESTED_SIZE_CHANGED']: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({state, properties, updateState, dispatch}) => {\n\t\t\t\tconst illustration = properties.illustration;\n\t\t\t\tconst size = state.requestedSize;\n\n\t\t\t\tconst {themeId} = state;\n\t\t\t\tconst themeHookUrl = ti.hasThemeImageUrl(state, {illustration, size})\n\t\t\t\t\t? ti.getUrlFromHook(state, {illustration, size})\n\t\t\t\t\t: null;\n\t\t\t\tprocessRequestedSize({\n\t\t\t\t\tsize: state.requestedSize,\n\t\t\t\t\tillustration: properties.illustration,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tthemeHookUrl,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tthemeId,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t['PRIVATE#ASSET_FETCH_CUSTOM_URL_REQUESTED']: fetchCustomUrlAsset,\n\t\t['PRIVATE#ASSET_FETCH_REQUESTED']: fetchAsset,\n\t\t['PRIVATE#ASSET_FETCH_CUSTOM_URL_SUCCEEDED']: sharedFetchSucceeded(\n\t\t\tassetMap,\n\t\t\tresolveAssetLoadQueue,\n\t\t),\n\t\t['PRIVATE#ASSET_FETCH_CUSTOM_URL_FAILED']: sharedFetchFailed(assetMap),\n\n\t\t['PRIVATE#ASSET_FETCH_SUCCEEDED']: sharedFetchSucceeded(\n\t\t\tassetMap,\n\t\t\tresolveAssetLoadQueue,\n\t\t),\n\t\t['PRIVATE#ASSET_FETCH_FAILED']: sharedFetchFailed(assetMap),\n\t},\n\tstyles,\n\tview,\n});\n","import {createCustomElement} from '@servicenow/ui-core';\nimport styles from './_now-illustration-custom.scss';\nimport {createElementFromNode} from '@servicenow/ui-renderer-snabbdom';\nimport {actionTypes} from '@servicenow/ui-core';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport ThemeableIllustration from './themeable-illustration';\nimport DOMPurify from 'dompurify';\nimport {domPurifyConfig} from '@servicenow/library-enhanced-utils';\n\nconst ti = new ThemeableIllustration();\n\nconst {COMPONENT_RENDERED, COMPONENT_CONNECTED, COMPONENT_PROPERTY_CHANGED} =\n\tactionTypes;\n\nconst delayHash = {};\n\nconst NOW_ILLUSTRATION_CUSTOM_PREFIX = '--now-illustration-custom-';\n\nconst getImagePathFromTokenId = (tokenId, state) => {\n\tconst {\n\t\tbehaviors: {theme},\n\t} = state;\n\tlet path;\n\tObject.keys(theme).forEach((hook) => {\n\t\tif (hook == `${NOW_ILLUSTRATION_CUSTOM_PREFIX}${tokenId}`) {\n\t\t\tpath = theme[hook];\n\t\t}\n\t});\n\treturn path;\n};\n\nconst loadImage = async (svgPath, fallback) => {\n\tconst request = new Request(svgPath);\n\tconst resp = await fetch(request);\n\tif (resp.ok) {\n\t\tlet svg = await resp.text();\n\t\tif (!svg) return;\n\t\tsvg = ti.cleanCSSImport(svg);\n\t\tsvg = ti.clearXLink(svg);\n\t\tconst cleanSVG = DOMPurify.sanitize(svg, domPurifyConfig);\n\n\t\t// gradients will be correct when initally loaded, but will be converted to LINEAR_GRADIENT and/or RADIAL_GRADIENT with rendered to DOM (innerHTML)\n\t\treturn {svg: cleanSVG, hasBadGradient: ti.hasBadGradient(svg)};\n\t} else if (fallback) {\n\t\treturn loadImage(fallback);\n\t}\n\treturn;\n};\n\nconst init = async ({state, properties, updateState}) => {\n\tconst {src, tokenId} = properties;\n\tlet illustrationPath, fallback;\n\tif (tokenId) {\n\t\tillustrationPath = getImagePathFromTokenId(tokenId, state);\n\t\tif (!illustrationPath) {\n\t\t\tillustrationPath = src;\n\t\t} else {\n\t\t\tfallback = src;\n\t\t}\n\t} else if (src) {\n\t\tillustrationPath = src;\n\t}\n\n\tif (!illustrationPath) return;\n\n\tconst {svg, hasBadGradient} = await loadImage(illustrationPath, fallback);\n\n\tif (!svg) return;\n\n\tupdateState({\n\t\tsvg,\n\t\thasBadGradient,\n\t});\n};\n\nconst cancelDelay = (svg) => {\n\twindow.cancelAnimationFrame(delayHash[svg].requestId);\n};\nconst startDelay = (svg, fn, delay, start = Date.now()) => {\n\tif (!delayHash[svg]) delayHash[svg] = {};\n\tdelayHash[svg] = {\n\t\tdelay,\n\t\tstart,\n\t\trequestId: null,\n\t};\n\tdelayHash[svg].requestId = requestAnimationFrame(intervalFn(svg, fn));\n};\nconst intervalFn = (svg, fn) => {\n\treturn () => {\n\t\tconst {start, delay} = delayHash[svg];\n\t\tconst delta = Date.now() - start;\n\t\tif (delta > delay) fn();\n\t\telse startDelay(svg, fn, delay, start);\n\t};\n};\n\nconst view = (state) => {\n\tconst {\n\t\tsvg,\n\t\tproperties: {width, height, alt},\n\t} = state;\n\n\tif (!svg) {\n\t\treturn <span>{alt}</span>;\n\t}\n\n\tconst fig = document.createElement('FIGURE');\n\tfig.classList.add('now-illustration-custom');\n\tlet styles = '';\n\tstyles = width ? `width:${width};` : '';\n\tstyles += height ? `height:${height};` : '';\n\tfig.setAttribute('style', styles);\n\tconst parser = new DOMParser();\n\tconst {documentElement} = parser.parseFromString(svg, 'image/svg+xml');\n\tfig.appendChild(documentElement);\n\treturn createElementFromNode(fig);\n};\n/**\n * Themeable images are inline SVG images containing an encapsulated style block that may contain themeing information.\n * now-illustration-custom has 2 primary themeing features:\n * 1) The component supports the use of a token-id, a dynamic suffix appended to the base style token `--now-illustration-custom-`, the complete style token can then be added to the `imagery style record` of a theme which will contain the svg source url. This provides the flexibility for multiple images to be rendered into the component based on which theme is applied.\n *    The below example would retrieve the the complete style token `--now-illustration-custom-my-svg-image` from the theme and render the svg image.\n *    Example imagery style record configuration\n * ```json\n * {\n *  \"properties\": {\n *  \t\"--now-illustration-custom-my-svg-image\": \"/images/my-custom-image.svg\"\n *  \t}\n * \t}\n * ```\n ***Component usage example, the optional src property could also be added as a fallback image if token-id fails to resolve / or is missing from the applied theme.\n * ```jsx\n *\t\t<now-illustration-custom token-id=\"my-svg-image\" src=\"/my-fallback-image.svg\" width=\"200px\" />\n *\n * ```\n * 2) The second themeing feature is the ability to embed the **Next Experience** themeing style tokens within a custom svg.\n *  ```xml\n *  \t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 250 250\">\n\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t.primary {fill:rgb(var(--now-color_brand--primary));}\n\t\t\t\t\t.secondary {fill:rgb(var(--now-color_brand--secondary));}\n\t\t\t\t</style>\n\t\t\t\t<g>\n\t\t\t\t\t<path class=\"secondary\" d=\"M68.4,151.6c0-48.7,39.6-88.3,88.3-88.3c8.1,0,16,1.1,23.5,3.2V19.2H14.1v166.2h61.1\n\t\tC70.8,175,68.4,163.6,68.4,151.6z\"/>\n\t\t\t\t</g>\n\t\t\t\t<circle class=\"primary\" cx=\"157.4\" cy=\"151.4\" r=\"86.8\"/>\n\t\t</svg>\n  ```\n * 2) The secondsrc property is used to configure the component to a single image source, the same image will be rendered regardless of which theme is applied.\n *\n *```jsx\n * <now-illustration-custom src=\"/images/my-custom-image.svg\" width=\"200px\" />\n *\n * ```\n *\n * 2) The svg image has dynamic color hooks embedded, allowing for the image to match the applied theme's color palette, will work for both dynamic and static images sources.\n *\n *\n * @seismicElement now-illustration-custom\n * @summary Theme-able inline svg illustration component.\n * @uib.label Custom Illustration\n * @uib.icon illustration\n * @uib.description An SVG asset that can be added to clarify container text or convey additional information to the user.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties src, tokenId, alt, width, height\n * @uib.layout.accessibility.children alt\n * @uib.layout.accessibility.icon accessibility-outline\n */\n\ncreateCustomElement('now-illustration-custom', {\n\tview,\n\tstyles,\n\tproperties: {\n\t\t/**\n\t\t * tokenId is a unique key suffix to be added to '--now-illustration-custom-'\n\t\t * This will enable dynamic style token creation, used to contain the svg image url\n\t\t * Example tokenId=\"my-itsm-workspace-svg-image\"\n\t\t * The component will look for the deployed style token: \"--now-illustration-custom-my-itsm-workspace-svg-image\"\n\t\t * and read it's value as an svg image url\n\t\t * @type {string}\n\t\t * @uib.description The unique key suffix to be added to '--now-illustration-custom-' to enable style design token creation, that will contain the svg image url.\n\t\t **/\n\t\ttokenId: {\n\t\t\tschema: {\n\t\t\t\tdefault: '',\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * The inline svg image URL.\n\t\t * @type {string}\n\t\t *\n\t\t * @uib.optional\n\t\t * @uib.label SVG Image source\n\t\t * @uib.description URL of the inline svg image to show\n\t\t */\n\t\tsrc: {required: false, schema: {type: 'string'}},\n\n\t\t/**\n\t\t * Alternative text to use on the <img> tag of the illustration. By default, there is no alternative text.\n\t\t * @type {(string)}\n\t\t * @uib.label Alt text\n\t\t * @uib.description Alternative text to use on the <img> tag of the illustration. By default, there is no alternative text.\n\t\t */\n\t\talt: {\n\t\t\tdefault: '',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Intrinsic width of the image in pixels.\n\t\t * @type {number}\n\t\t * @uib.label width\n\t\t * @uib.description width for the inline SVG, value including units ex: 100px, 100%, etc\n\t\t */\n\t\twidth: {default: '100%', schema: {type: 'string'}},\n\t\t/**\n\t\t * Intrinsic height of the image in pixels.\n\t\t * @type {number}\n\t\t * @uib.label height\n\t\t * @uib.description height for the inline SVG, value including units, ex: 100px, 100%, etc.\n\t\t */\n\t\theight: {default: '100%', schema: {type: 'string'}},\n\t},\n\tinitialState: {\n\t\tsvg: '',\n\t\thasBadGradient: false,\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: ['--now-illustration-custom-*'],\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({state, host}) => {\n\t\t\tconst {hasBadGradient} = state;\n\t\t\tif (hasBadGradient) {\n\t\t\t\thost.shadowRoot.childNodes.forEach((node) => {\n\t\t\t\t\tti.findAndFixGradients(node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t['PRIVATE#THEME_CHANGED']: ({\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\thost,\n\t\t}) => {\n\t\t\tconst {svg} = properties;\n\t\t\tcancelDelay(svg);\n\t\t\tinit({state, properties, updateState, dispatch, host});\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\thost,\n\t\t\taction: {payload},\n\t\t}) => {\n\t\t\tconst {name} = payload;\n\t\t\tif (name === 'src' || name === 'tokenId') {\n\t\t\t\tconst {svg} = properties;\n\t\t\t\tcancelDelay(svg);\n\t\t\t\tinit({state, properties, updateState, dispatch, host});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_CONNECTED]: ({\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\thost,\n\t\t}) => {\n\t\t\t/*\n\t\t\t * If the theme behavior does not dispatch PRIVATE#THEME_CHANGED, we need to call init via callback...\n\t\t\t * If we do receive the PRIVATE#THEME_CHANGED event we'll cancel this startDelay...\n\t\t\t * Otherwise this call will start loading the default image before we get a chance to determine if there is a image url in the theme hook.\n\t\t\t */\n\t\t\tconst callback = () =>\n\t\t\t\tinit({state, properties, updateState, dispatch, host});\n\t\t\tconst {svg} = properties;\n\t\t\tstartDelay(svg, callback, 100);\n\t\t},\n\t},\n});\n","import './now-illustration';\nimport './now-illustration-custom';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import '@servicenow/now-icon';\n\nexport const getFormFieldMessageIds = (componentId, messages) => {\n\tif (Array.isArray(messages) && messages.length) {\n\t\treturn messages\n\t\t\t.map((message, index) => {\n\t\t\t\treturn `${componentId}-message-${index}`;\n\t\t\t})\n\t\t\t.join(' ');\n\t}\n\treturn '';\n};\n\nconst renderFormField = (\n\tcomponentId,\n\tmessages,\n\tstartIndex = 0,\n\tmessagesMode = 'auto',\n) => {\n\tif (Array.isArray(messages) && messages.length) {\n\t\tconst isAriaHidden = messagesMode === 'visual-only';\n\t\tconst isA11yLabel = messagesMode === 'sr-only';\n\n\t\treturn messages.map(({status = 'suggestion', icon, content}, index) => (\n\t\t\t<div\n\t\t\t\taria-hidden={isAriaHidden}\n\t\t\t\tkey={`${componentId}-message-${index + startIndex}`}\n\t\t\t\tid={!isAriaHidden && `${componentId}-message-${index + startIndex}`}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-form-field-message': true,\n\t\t\t\t\t['-' + status]: status,\n\t\t\t\t\t'now-a11y-label': isA11yLabel,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{icon ? (\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\tclassName=\"now-form-field-message-icon now-m-inline-end--xs\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t\t<p className=\"now-form-field-message-label\">\n\t\t\t\t\t<span className=\"now-line-height-crop\">{content}</span>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t));\n\t}\n};\n\n/**\n * Proxy the function call to allow for easier way to support open-close principle.\n * The idea here to to maintain backward compatibility, but begin to support arbitary arguments\n */\nexport const renderFormFieldMessages = new Proxy(renderFormField, {\n\tapply(target, thisArg, args) {\n\t\t// If we have more than 1 arguments, then we can assume the original function\n\t\t// declaration was called.  This could be expended for an isObject style check:\n\t\t// !Array.isArray(args?.[0]) && typeof(args?.[0]) === object ... or some such\n\t\tif (args.length > 1) return target.apply(thisArg, args);\n\n\t\t// destrcut out the object and correctly map it to the arguement list\n\t\t// we can eat the pain so consumers don't have to\n\t\tconst {\n\t\t\tcomponentId,\n\t\t\tmessages,\n\t\t\tstartIndex = 0,\n\t\t\tmessagesMode = 'auto',\n\t\t} = args?.[0] ?? {};\n\n\t\treturn target.apply(thisArg, [\n\t\t\tcomponentId,\n\t\t\tmessages,\n\t\t\tstartIndex,\n\t\t\tmessagesMode,\n\t\t]);\n\t},\n});\n\nexport const getAriaDescribedByList = ({\n\tlabel,\n\thelperContent,\n\toptional,\n\tnowId,\n\tmessages,\n\tlayout,\n}) => {\n\tconst describedBy = [];\n\n\tconst formFieldMessageIds = getFormFieldMessageIds(nowId, messages);\n\tif (optional) {\n\t\tdescribedBy.push('form-field-label-optional');\n\t}\n\tif (label || helperContent) {\n\t\tif (layout === 'vertical') {\n\t\t\tdescribedBy.push('form-field-label-start');\n\t\t}\n\t\tdescribedBy.push('form-field-label-inline');\n\t\tif (layout === 'horizontal') {\n\t\t\tdescribedBy.push('form-field-label-start');\n\t\t}\n\t\tdescribedBy.push('form-field-label-end');\n\t}\n\tif (formFieldMessageIds) {\n\t\tdescribedBy.push(formFieldMessageIds);\n\t}\n\n\treturn describedBy.join(' ');\n};\n","import '@servicenow/now-button';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-popover';\nimport {t} from 'sn-translate';\nimport {createCustomElement} from '@servicenow/ui-core';\nimport styles from './_popover-content.scss';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\n\ncreateCustomElement('now-form-popover-content', {\n\tview: (state) => (\n\t\t<div className=\"now-form-field-popover-content\">\n\t\t\t{state.properties.content}\n\t\t</div>\n\t),\n\tproperties: {\n\t\tcontent: {},\n\t},\n\tstyles,\n});\n\nconst renderFormFieldRequiredOrOptional = (\n\trequired,\n\toptional,\n\thideRequiredIndicator,\n\tinvalid,\n) => {\n\tif (required && !hideRequiredIndicator) {\n\t\tconst requiredMessage = t('Required');\n\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclass={{\n\t\t\t\t\t'now-form-field-label-icon': true,\n\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t}}\n\t\t\t\ticon=\"asterisk-fill\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tdata-truncation\n\t\t\t\tdata-truncationforcetooltip\n\t\t\t\tdata-truncationtext={requiredMessage}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\ticon: {'aria-label': requiredMessage},\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t} else if (optional) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclass={{\n\t\t\t\t\t'now-form-field-label-identifier': true,\n\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t}}\n\t\t\t\tid=\"form-field-label-optional\"\n\t\t\t>\n\t\t\t\t({t('Optional')})\n\t\t\t</span>\n\t\t);\n\t}\n};\n\nconst renderFormFieldHelper = (helperContent, invalid, label) => {\n\tif (helperContent) {\n\t\treturn (\n\t\t\t<now-popover className=\"now-form-field-popover\" focusPanel>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\tbutton: {'aria-label': t('More information, {0}', label)},\n\t\t\t\t\t}}\n\t\t\t\t\tclass={{'now-form-field-button': true, 'is-invalid': invalid}}\n\t\t\t\t\ticon=\"circle-info-outline\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tbare\n\t\t\t\t\thide-padding\n\t\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\t/>\n\t\t\t\t<now-form-popover-content slot=\"content\" content={helperContent} />\n\t\t\t</now-popover>\n\t\t);\n\t}\n};\n\nconst renderFormFieldHelperRequiredorOptional = (\n\trequired,\n\toptional,\n\thideRequiredIndicator,\n\thelperContent,\n\tinvalid,\n\tlabel,\n) => {\n\treturn (\n\t\t<Fragment>\n\t\t\t{renderFormFieldRequiredOrOptional(\n\t\t\t\trequired,\n\t\t\t\toptional,\n\t\t\t\thideRequiredIndicator,\n\t\t\t\tinvalid,\n\t\t\t)}\n\t\t\t{renderFormFieldHelper(helperContent, invalid, label)}\n\t\t</Fragment>\n\t);\n};\n\nexport const renderLabelEnd = () => {\n\treturn (\n\t\t<span id=\"form-field-label-end\" className=\"now-form-field-label-end\">\n\t\t\t<slot name=\"label-end\" />\n\t\t</span>\n\t);\n};\n\nexport const renderLabelInline = (opened) => {\n\treturn (\n\t\t<span className=\"now-form-field-label-inline\">\n\t\t\t<slot\n\t\t\t\tname=\"label-inline\"\n\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\ton-click={(e) => {\n\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t</span>\n\t);\n};\n\nexport const renderLabelStart = (opened) => {\n\treturn (\n\t\t<span id=\"form-field-label-start\" className=\"now-form-field-label-start\">\n\t\t\t<slot\n\t\t\t\tname=\"label-start\"\n\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\ton-click={(e) => {\n\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t</span>\n\t);\n};\n\nexport const renderFormFieldLabel = (\n\tcomponentId,\n\tinvalid,\n\trequired,\n\toptional,\n\tlabel,\n\thelperContent,\n\thideRequiredIndicator,\n\trenderAsElement = 'label',\n\tlayout = 'vertical',\n\topened = false,\n\twrapLabel,\n) => {\n\tif (label || helperContent) {\n\t\tif (renderAsElement === 'label') {\n\t\t\treturn (\n\t\t\t\t<div className=\"now-form-field-label\">\n\t\t\t\t\t{layout === 'horizontal' &&\n\t\t\t\t\t\trenderFormFieldHelperRequiredorOptional(\n\t\t\t\t\t\t\trequired,\n\t\t\t\t\t\t\toptional,\n\t\t\t\t\t\t\thideRequiredIndicator,\n\t\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t)}\n\t\t\t\t\t{layout === 'horizontal' && renderLabelInline(opened)}\n\t\t\t\t\t{layout === 'vertical' && renderLabelStart(opened)}\n\t\t\t\t\t{/*eslint-disable-next-line jsx-a11y/label-has-associated-control*/}\n\t\t\t\t\t<label\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-form-field-label-label': true,\n\t\t\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\thtmlFor={`form-field-${componentId}`}\n\t\t\t\t\t\tid={`form-field-${componentId}-label`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"now-form-field-label-text\"\n\t\t\t\t\t\t\t\tdata-truncation={!wrapLabel ? true : undefined}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</label>\n\t\t\t\t\t{layout === 'horizontal' && renderLabelStart(opened)}\n\t\t\t\t\t{layout === 'vertical' &&\n\t\t\t\t\t\trenderFormFieldHelperRequiredorOptional(\n\t\t\t\t\t\t\trequired,\n\t\t\t\t\t\t\toptional,\n\t\t\t\t\t\t\thideRequiredIndicator,\n\t\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t)}\n\t\t\t\t\t{layout === 'vertical' && renderLabelInline(opened)}\n\t\t\t\t\t{layout === 'vertical' && renderLabelEnd()}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if (renderAsElement === 'span') {\n\t\t\treturn (\n\t\t\t\t<div className=\"now-form-field-label\">\n\t\t\t\t\t{layout === 'horizontal' &&\n\t\t\t\t\t\trenderFormFieldHelperRequiredorOptional(\n\t\t\t\t\t\t\trequired,\n\t\t\t\t\t\t\toptional,\n\t\t\t\t\t\t\thideRequiredIndicator,\n\t\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t)}\n\t\t\t\t\t{layout === 'horizontal' && renderLabelInline(opened)}\n\t\t\t\t\t{layout === 'vertical' && renderLabelStart(opened)}\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-form-field-label-label': true,\n\t\t\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tid={`form-field-${componentId}-label`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"now-form-field-label-text\"\n\t\t\t\t\t\t\t\tdata-truncation={!wrapLabel ? true : undefined}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t{layout === 'horizontal' && renderLabelStart(opened)}\n\t\t\t\t\t{layout === 'vertical' &&\n\t\t\t\t\t\trenderFormFieldHelperRequiredorOptional(\n\t\t\t\t\t\t\trequired,\n\t\t\t\t\t\t\toptional,\n\t\t\t\t\t\t\thideRequiredIndicator,\n\t\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t)}\n\t\t\t\t\t{layout === 'vertical' && renderLabelInline(opened)}\n\t\t\t\t\t{layout === 'vertical' && renderLabelEnd()}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if (renderAsElement === 'legend') {\n\t\t\treturn (\n\t\t\t\t<legend\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-form-field-legend': true,\n\t\t\t\t\t\t['-' + layout]: layout,\n\t\t\t\t\t\t'will-wrap': wrapLabel,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-form-field-label': true,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{layout === 'horizontal' &&\n\t\t\t\t\t\t\trenderFormFieldHelperRequiredorOptional(\n\t\t\t\t\t\t\t\trequired,\n\t\t\t\t\t\t\t\toptional,\n\t\t\t\t\t\t\t\thideRequiredIndicator,\n\t\t\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t{layout === 'horizontal' && renderLabelInline(opened)}\n\t\t\t\t\t\t{layout === 'vertical' && renderLabelStart(opened)}\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t'now-form-field-label-label': true,\n\t\t\t\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tid={`form-field-${componentId}-label`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"now-form-field-label-text\"\n\t\t\t\t\t\t\t\t\tdata-truncation={!wrapLabel ? true : undefined}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{layout === 'vertical' &&\n\t\t\t\t\t\t\trenderFormFieldHelperRequiredorOptional(\n\t\t\t\t\t\t\t\trequired,\n\t\t\t\t\t\t\t\toptional,\n\t\t\t\t\t\t\t\thideRequiredIndicator,\n\t\t\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t{layout === 'vertical' && renderLabelInline(opened)}\n\t\t\t\t\t\t{layout === 'vertical' && renderLabelEnd()}\n\t\t\t\t\t\t{layout === 'horizontal' && renderLabelStart(opened)}\n\t\t\t\t\t</span>\n\t\t\t\t</legend>\n\t\t\t);\n\t\t}\n\t}\n};\n","import {TOOLTIP_HIDE, TOOLTIP_SHOW} from '@servicenow/behavior-tooltip';\n\n/**\n * Shared focus event handler for now-input components. Sets focus on the input field\n * on the component when focus is initially set.\n * @param {HTMLElement} host\n */\nexport const handleFocus = (host) => {\n\tconst focusTarget = host.shadowRoot.querySelector('input.now-input-native');\n\n\tif (focusTarget) {\n\t\tfocusTarget.focus();\n\t}\n};\n\nconst showPlaceholderTooltip = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst hidePlaceholderTooltip = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\nexport const handlePlaceholderTooltipVisibility = (\n\te,\n\tdispatch,\n\tstate,\n\tupdateState,\n) => {\n\tconst {placeholderTooltipDisplay} = state;\n\tconst input = e.target;\n\tif (input.value != '') {\n\t\tif (placeholderTooltipDisplay) {\n\t\t\thidePlaceholderTooltip(dispatch)(e);\n\t\t\tupdateState({placeholderTooltipDisplay: false});\n\t\t}\n\t\treturn;\n\t}\n\tif (e.type === 'mouseenter' || e.type === 'focusin' || e.type === 'input') {\n\t\tshowPlaceholderTooltip(dispatch)(e);\n\t\tupdateState({placeholderTooltipDisplay: true});\n\t} else if (e.type === 'mouseleave' || e.type === 'focusout') {\n\t\thidePlaceholderTooltip(dispatch)(e);\n\t\tupdateState({placeholderTooltipDisplay: false});\n\t}\n};\n","export const messagesSchema = {\n\ttype: 'array',\n\titems: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\tcontent: {type: 'string', translatable: true},\n\t\t\tstatus: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['critical', 'warning', 'positive', 'info', 'suggestion'],\n\t\t\t},\n\t\t\ticon: {nowUIType: 'icon', type: 'string'},\n\t\t},\n\t},\n};\n","let v4 =\n\t'(0*)(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(?:\\\\.(0*)(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])){3}';\nlet v6frag = '[0-9a-fA-F]{1,4}';\n\n/**\n * validates if passed in string is a valid IP address (IPv4 or IPv6)\n * @param {string} address ip string we wish to test\n * @return {boolean} valid or not\n */\nfunction isIPAddress(address) {\n\treturn isIPV4Address(address) || isIPV6Address(address);\n}\n\n/**\n * validates if passed in string is a valid IP address (IPv4)\n * @param {string} address ip string we wish to test\n * @return {boolean} valid or not\n */\nfunction isIPV4Address(address) {\n\tlet reg = '^' + v4 + '$';\n\tlet re = new RegExp(reg);\n\treturn re.test(address);\n}\n\n/**\n * validates if passed in string is a valid IP address (IPv6)\n * @param {string} address ip string we wish to test\n * @return {boolean} valid or not\n */\nfunction isIPV6Address(address) {\n\tlet reg =\n\t\t'^((?:' +\n\t\tv6frag +\n\t\t':){7}(?:' +\n\t\tv6frag +\n\t\t'|:)|' +\n\t\t'(?:' +\n\t\tv6frag +\n\t\t':){6}(?:' +\n\t\tv4 +\n\t\t'|:' +\n\t\tv6frag +\n\t\t'|:)|' +\n\t\t'(?:' +\n\t\tv6frag +\n\t\t':){5}(?::' +\n\t\tv4 +\n\t\t'|(:' +\n\t\tv6frag +\n\t\t'){1,2}|:)|' +\n\t\t'(?:' +\n\t\tv6frag +\n\t\t':){4}(?:(:' +\n\t\tv6frag +\n\t\t'){0,1}:' +\n\t\tv4 +\n\t\t'|(:' +\n\t\tv6frag +\n\t\t'){1,3}|:)|' +\n\t\t'(?:' +\n\t\tv6frag +\n\t\t':){3}(?:(:' +\n\t\tv6frag +\n\t\t'){0,2}:' +\n\t\tv4 +\n\t\t'|(:' +\n\t\tv6frag +\n\t\t'){1,4}|:)|' +\n\t\t'(?:' +\n\t\tv6frag +\n\t\t':){2}(?:(:' +\n\t\tv6frag +\n\t\t'){0,3}:' +\n\t\tv4 +\n\t\t'|(:' +\n\t\tv6frag +\n\t\t'){1,5}|:)|' +\n\t\t'(?:' +\n\t\tv6frag +\n\t\t':){1}(?:(:' +\n\t\tv6frag +\n\t\t'){0,4}:' +\n\t\tv4 +\n\t\t'|(:' +\n\t\tv6frag +\n\t\t'){1,6}|:)|' +\n\t\t'(?::((?::' +\n\t\tv6frag +\n\t\t'){0,5}:' +\n\t\tv4 +\n\t\t'|(?::' +\n\t\tv6frag +\n\t\t'){1,7}|:)))(%[0-9a-zA-Z]{1,})?$';\n\tlet re = new RegExp(reg);\n\treturn re.test(address);\n}\n\nexport {isIPAddress, isIPV4Address, isIPV6Address};\n","export const fieldLayoutSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\tlayout: {\n\t\t\tdefault: 'vertical',\n\t\t\tschema: {type: 'string', enum: ['vertical', 'horizontal']},\n\t\t},\n\t\tcolumns: {default: [], schema: {type: 'array'}},\n\t},\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {createRef} from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_now-input.scss';\nimport {\n\trenderFormFieldMessages,\n\trenderFormFieldLabel,\n\trenderLabelEnd,\n\tgetAriaDescribedByList,\n} from './form-field';\nimport {handleFocus, handlePlaceholderTooltipVisibility} from './utils/helper';\nimport {messagesSchema} from './schemas/messages-schema';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {isIPAddress} from './utils/ipaddress';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {\n\tfilterAriaAttributes,\n\tgetColumnStyles,\n\tgetCaretCoordinates,\n\tgetActiveElement,\n} from '@servicenow/library-enhanced-utils';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\nimport debounce from 'lodash/debounce';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport {fieldLayoutSchema} from './schemas/field-layout-schema';\n\nconst timeoutIds = {};\n\nconst {\n\tCOMPONENT_DOM_READY,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\n\nconst addFakeHighlighting = (input, selectionStart, selectionEnd) => {\n\tconst activeElement = getActiveElement();\n\tif (!activeElement.contains(input)) {\n\t\treturn;\n\t}\n\tlet content = input.value;\n\tconst beforeSelection = content.substring(0, selectionStart);\n\tconst selectedText = content.substring(selectionStart, selectionEnd);\n\tconst afterSelection = content.substring(selectionEnd, content.length);\n\tinput.previousElementSibling.innerHTML = `<span>${beforeSelection}<span class='now-input-native-selection'>${selectedText}</span>${afterSelection}</span>`;\n};\n\nconst removeFakeHighlighting = (input, timeout = 0) => {\n\tif (\n\t\tinput.previousElementSibling?.classList.contains(\n\t\t\t'now-input-native-backdrop',\n\t\t)\n\t) {\n\t\treturn setTimeout(() => {\n\t\t\tinput.previousElementSibling.innerHTML = `<span>${input.value}</span>`;\n\t\t\tinput.previousElementSibling.scrollLeft = input.scrollLeft;\n\t\t}, timeout);\n\t}\n\treturn null;\n};\n\nconst renderInput = ({\n\tupdateState,\n\tdispatch,\n\tstate,\n\tnowId,\n\tlabel,\n\thelperContent,\n\toptional,\n\tmessages,\n\trequired,\n\tinvalid,\n\tdisabled,\n\tmax,\n\tplaceholder,\n\tmaxlength,\n\tmin,\n\tminlength,\n\tmultiple,\n\tname = `input-${nowId}`,\n\tpattern,\n\treadonly,\n\tstep,\n\ttype,\n\tvalue = '',\n\tenableCaretSlot,\n\tcaretSlotContainer,\n\tselection,\n\tupdateProperties,\n\thasCaretSlot,\n\tconfigAria,\n\ttimeoutIds,\n\tdebounceCaret,\n\tdebounceCaretWhileTyping,\n\tdebounceInput,\n\tplaceholderOverflow,\n\tfieldLayout: {layout},\n}) => (\n\t<input\n\t\tid={`form-field-${nowId}`}\n\t\tclassName=\"now-input-native\"\n\t\taria-describedby={getAriaDescribedByList({\n\t\t\tlabel,\n\t\t\thelperContent,\n\t\t\toptional,\n\t\t\tnowId,\n\t\t\tmessages,\n\t\t\tlayout,\n\t\t})}\n\t\taria-required={required ? 'true' : 'false'}\n\t\taria-invalid={invalid ? 'true' : 'false'}\n\t\tdisabled={disabled}\n\t\tmax={max}\n\t\tdata-tooltip={placeholder}\n\t\tmaxlength={maxlength}\n\t\tmin={min}\n\t\tminlength={minlength}\n\t\tmultiple={multiple}\n\t\tname={name}\n\t\tpattern={pattern && pattern.length ? pattern : undefined}\n\t\tplaceholder={placeholder}\n\t\treadonly={readonly}\n\t\trequired={required}\n\t\tstep={step}\n\t\ttype={type}\n\t\tvalue={!value && readonly ? '—' : value}\n\t\taria-label={!value && readonly ? '' : undefined}\n\t\tautocomplete=\"off\"\n\t\ton-mouseenter={(e) => {\n\t\t\tupdateState({hasHover: true});\n\t\t\tif (placeholderOverflow) {\n\t\t\t\thandlePlaceholderTooltipVisibility(e, dispatch, state, updateState);\n\t\t\t}\n\t\t}}\n\t\ton-mouseleave={(e) => {\n\t\t\tupdateState({hasHover: false});\n\t\t\tif (placeholderOverflow) {\n\t\t\t\thandlePlaceholderTooltipVisibility(e, dispatch, state, updateState);\n\t\t\t}\n\t\t}}\n\t\ton-focus={\n\t\t\tdisabled || readonly\n\t\t\t\t? undefined\n\t\t\t\t: (e) => {\n\t\t\t\t\t\tupdateState({hasFocus: true});\n\t\t\t\t\t\tif (hasCaretSlot) {\n\t\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t}\n\t\ton-focusin={(e) => {\n\t\t\tif (placeholderOverflow) {\n\t\t\t\thandlePlaceholderTooltipVisibility(e, dispatch, state, updateState);\n\t\t\t}\n\t\t}}\n\t\ton-focusout={(e) => {\n\t\t\tif (placeholderOverflow) {\n\t\t\t\thandlePlaceholderTooltipVisibility(e, dispatch, state, updateState);\n\t\t\t}\n\t\t}}\n\t\ton-blur={(e) =>\n\t\t\thandleBlur(\n\t\t\t\te,\n\t\t\t\tupdateState,\n\t\t\t\tdispatch,\n\t\t\t\ttype,\n\t\t\t\tupdateProperties,\n\t\t\t\tstate.properties,\n\t\t\t\ttimeoutIds,\n\t\t\t\thasCaretSlot,\n\t\t\t\tselection,\n\t\t\t)\n\t\t}\n\t\ton-input={(e) =>\n\t\t\thandleInput(\n\t\t\t\te,\n\t\t\t\tdispatch,\n\t\t\t\tstate,\n\t\t\t\tupdateState,\n\t\t\t\tenableCaretSlot,\n\t\t\t\tcaretSlotContainer.current,\n\t\t\t\tdebounceCaretWhileTyping,\n\t\t\t\tdebounceInput,\n\t\t\t)\n\t\t}\n\t\ton-keydown={(e) => handleKeydown(e, dispatch)}\n\t\ton-mouseup={\n\t\t\thasCaretSlot\n\t\t\t\t? (e) => {\n\t\t\t\t\t\tconst event = {target: e.target, key: e.key};\n\t\t\t\t\t\t// setTimeout here is used because the selectionStart and selectionEnd of the input\n\t\t\t\t\t\t// need to update before the handler is called.\n\t\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t: undefined\n\t\t}\n\t\ton-keyup={\n\t\t\thasCaretSlot\n\t\t\t\t? (e) =>\n\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t)\n\t\t\t\t: undefined\n\t\t}\n\t\ton-select={\n\t\t\thasCaretSlot\n\t\t\t\t? (e) =>\n\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t)\n\t\t\t\t: undefined\n\t\t}\n\t\ton-scroll={\n\t\t\thasCaretSlot\n\t\t\t\t? (e) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\te.target.previousElementSibling?.classList.contains(\n\t\t\t\t\t\t\t\t'now-input-native-backdrop',\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\te.target.previousElementSibling.scrollLeft = e.target.scrollLeft;\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t: undefined\n\t\t}\n\t\ton-paste={(e) => {\n\t\t\tif (hasCaretSlot) removeFakeHighlighting(e.target);\n\t\t}}\n\t\ton-mousedown={(e) => {\n\t\t\tif (hasCaretSlot) removeFakeHighlighting(e.target);\n\t\t}}\n\t\t{...filterAriaAttributes(configAria, 'input')}\n\t/>\n);\n\nconst repositionCaretSlotContainer = (input, caretSlotContainer) => {\n\tconst coords = getCaretCoordinates(input, input.selectionEnd);\n\tconst rect = input.getBoundingClientRect();\n\tconst container = caretSlotContainer.getBoundingClientRect();\n\tlet inline = coords.inline - input.scrollLeft;\n\tif (inline < 0) {\n\t\t// stay in left bounds\n\t\tinline = 0;\n\t} else if (inline > rect.width) {\n\t\t// stay in right bounds\n\t\tinline = rect.width - container.width;\n\t} else if (inline + container.width > rect.width) {\n\t\t// display to the left instead of the right\n\t\tinline -= container.width;\n\t}\n\tcaretSlotContainer.style['inset-block-start'] = rect.height + 'px';\n\tcaretSlotContainer.style['inset-inline-start'] = 10 + inline + 'px';\n};\n\nconst handleCaretMoved = (\n\te,\n\tdispatch,\n\tcaretSlotContainer,\n\tselection,\n\tupdateState,\n\tdebounceCaret,\n\tpauseFakeHighlighting,\n) => {\n\tconst input = e.target;\n\tconst selectionStart = input.selectionStart;\n\tconst selectionEnd = input.selectionEnd;\n\tif (\n\t\tinput.previousElementSibling?.classList.contains(\n\t\t\t'now-input-native-backdrop',\n\t\t) &&\n\t\t!pauseFakeHighlighting\n\t) {\n\t\tif (selectionStart < selectionEnd) {\n\t\t\taddFakeHighlighting(input, selectionStart, selectionEnd);\n\t\t} else {\n\t\t\tremoveFakeHighlighting(input);\n\t\t}\n\t}\n\tconst selectedText = input.value.substring(selectionStart, selectionEnd);\n\tconst movementKeys = [\n\t\t'ArrowLeft',\n\t\t'ArrowRight',\n\t\t'ArrowUp',\n\t\t'ArrowDown',\n\t\t'Home',\n\t\t'End',\n\t\t'Meta',\n\t];\n\tif (e.key && !movementKeys.includes(e.key)) {\n\t\treturn;\n\t}\n\tdebounceCaret(() => {\n\t\trepositionCaretSlotContainer(input, caretSlotContainer);\n\t\tif (selectedText !== selection) {\n\t\t\tdispatch(({properties: {name}}) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_INPUT#SELECTION_CHANGED',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tselection: selectedText,\n\t\t\t\t\t\tselectionStart,\n\t\t\t\t\t\tselectionEnd,\n\t\t\t\t\t\tfieldValue: input.value,\n\t\t\t\t\t\tfieldElement: input,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t\tupdateState({selection: selectedText});\n\t\t}\n\t});\n};\n\nconst handleInput = (\n\te,\n\tdispatch,\n\tstate,\n\tupdateState,\n\tenableCaretSlot,\n\tcaretSlotContainer,\n\tdebounceCaretWhileTyping,\n\tdebounceInput,\n) => {\n\tconst fieldValue = e.target.value;\n\tconst fieldElement = e.target;\n\tconst data = e.data;\n\tconst {placeholderOverflow} = state;\n\tif (placeholderOverflow) {\n\t\thandlePlaceholderTooltipVisibility(e, dispatch, state, updateState);\n\t}\n\tif (enableCaretSlot) {\n\t\tcaretSlotContainer.style.insetInlineStart = '-9999px';\n\t\tdebounceCaretWhileTyping(() => {\n\t\t\trepositionCaretSlotContainer(fieldElement, caretSlotContainer);\n\t\t});\n\t}\n\n\tdebounceInput(() => {\n\t\tdispatch(({properties: {name}}) => {\n\t\t\treturn {\n\t\t\t\ttype: 'NOW_INPUT#INPUT',\n\t\t\t\tpayload: {name, data, fieldValue, fieldElement},\n\t\t\t};\n\t\t});\n\t});\n};\n\nconst handleKeydown = (e, dispatch) => {\n\tconst key = e.key;\n\tconst fieldValue = e.target.value;\n\tif (key === 'Enter') {\n\t\tdispatch(({properties: {name}}) => {\n\t\t\treturn {\n\t\t\t\ttype: 'NOW_INPUT#ENTER_KEYDOWN',\n\t\t\t\tpayload: {name, fieldValue},\n\t\t\t};\n\t\t});\n\t}\n};\n\nconst announceMessage = (label, content, dispatch) => {\n\tconst announcement = label + ' ' + content.content;\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announcement,\n\t\ttype: 'polite',\n\t});\n};\n\n/**\n * Strips leading zeros from an IP, and for IPv6 removes consective zeros and\n * replaces with ::. If this changes the value then update the \"value\" property\n * and ensure the native input reflect the correct value\n */\nconst stripIPZeros = (value, updateProperties, nativeInput) => {\n\tconst newVal = value\n\t\t.replace(/\\b0+\\B/g, '')\n\t\t.replace(/(?:^|:)(0+(:|$)){2,}/, '::');\n\tif (newVal !== value) {\n\t\tupdateProperties(() => {\n\t\t\treturn {\n\t\t\t\tpath: 'value',\n\t\t\t\tvalue: newVal,\n\t\t\t\tshouldUpdate: true,\n\t\t\t};\n\t\t});\n\t\t// need to explicitly force the native input value as the\n\t\t// property update might be skipped if the value is \"the same\", e.g\n\t\t// \"192.168.0.1\" someone types one more 0 => \"192.168.00.1\" => we\n\t\t// strip that 0 and the property update won't trigger a re-render\n\t\tnativeInput.value = newVal;\n\t}\n\treturn newVal;\n};\n\nconst handleBlur = (\n\te,\n\tupdateState,\n\tdispatch,\n\ttype,\n\tupdateProperties,\n\tproperties,\n\ttimeoutIds,\n\thasCaretSlot,\n\tselection,\n) => {\n\tlet valid,\n\t\t{value} = e.target,\n\t\tforceValueChange = false;\n\tconst {name} = e.target;\n\tlet fromHB = true;\n\tif (type === 'ip' && value) {\n\t\tconst oldVal = value;\n\t\tvalue = stripIPZeros(value, updateProperties, e.target);\n\t\tforceValueChange = value !== oldVal && value !== properties.value;\n\t\tvalid = e.target.validity.valid && isIPAddress(value);\n\t} else {\n\t\tvalid = e.target.validity.valid;\n\t}\n\tupdateState({hasFocus: false});\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_INPUT#INVALID_SET',\n\t\t\tpayload: {\n\t\t\t\tname,\n\t\t\t\tvalue: !valid,\n\t\t\t\tfieldValue: value,\n\t\t\t\ttype,\n\t\t\t\tfromHandleBlur: fromHB,\n\t\t\t},\n\t\t};\n\t});\n\tdispatch(({properties}) => {\n\t\tconst {disabled, readonly, invalid, value: previousValue} = properties;\n\t\treturn {\n\t\t\ttype: 'NOW_INPUT#VALUE_SET',\n\t\t\tpayload: {name, value},\n\t\t\tshouldDispatch:\n\t\t\t\t!disabled &&\n\t\t\t\t!readonly &&\n\t\t\t\t!invalid &&\n\t\t\t\t(value !== previousValue || forceValueChange),\n\t\t};\n\t});\n\tif (hasCaretSlot) {\n\t\ttimeoutIds[properties.nowId] = {id: removeFakeHighlighting(e.target, 150)};\n\t\tif (selection) {\n\t\t\tconst input = e.target;\n\t\t\tconst oldScrollLeft = input.scrollLeft;\n\t\t\tsetTimeout(() => {\n\t\t\t\tinput.scrollLeft = oldScrollLeft;\n\t\t\t}, 0);\n\t\t}\n\t}\n};\n\nconst view = (state, {dispatch, updateState, updateProperties}) => {\n\tconst {\n\t\thasFocus,\n\t\thasHover,\n\t\tdebounceCaret,\n\t\tdebounceInput,\n\t\tdebounceCaretWhileTyping,\n\t} = state;\n\tconst {\n\t\tsize,\n\t\tdisabled,\n\t\thelperContent,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\tlabel,\n\t\tmessages,\n\t\toptional,\n\t\treadonly,\n\t\trequired,\n\t\ttype,\n\t\tnowId,\n\t\talign,\n\t\tmessagesMode,\n\t\tfieldLayout: {layout, columns},\n\t\tenableCaretSlot,\n\t\twrapLabel,\n\t} = state.properties;\n\tconst hasCaretSlot = enableCaretSlot && !disabled && !readonly;\n\tconst caretSlotContainer = createRef();\n\treturn (\n\t\t<div\n\t\t\tstyle={\n\t\t\t\tlayout === 'horizontal' ? {...getColumnStyles(columns)} : undefined\n\t\t\t}\n\t\t\tclass={{\n\t\t\t\t'now-input': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t\t'now-form-field-layout': true,\n\t\t\t\t[`-${layout}`]: layout,\n\t\t\t\t'will-wrap': wrapLabel,\n\t\t\t}}\n\t\t>\n\t\t\t{renderFormFieldLabel(\n\t\t\t\tnowId,\n\t\t\t\tinvalid,\n\t\t\t\trequired,\n\t\t\t\toptional,\n\t\t\t\tlabel,\n\t\t\t\thelperContent,\n\t\t\t\thideRequiredIndicator,\n\t\t\t\t'label',\n\t\t\t\tlayout,\n\t\t\t\tfalse,\n\t\t\t\twrapLabel,\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-input-field': true,\n\t\t\t\t\t'now-form-field': true,\n\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t'is-readonly': readonly,\n\t\t\t\t\t'has-focus': hasFocus,\n\t\t\t\t\t'has-hover': hasHover,\n\t\t\t\t\t'is-number': type === 'number',\n\t\t\t\t\t['-' + align]: align,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"now-form-field-slot -start\">\n\t\t\t\t\t<slot name=\"start\" />\n\t\t\t\t</div>\n\t\t\t\t{hasCaretSlot ? (\n\t\t\t\t\t<div className=\"now-input-native-container\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t'now-input-native-backdrop': true,\n\t\t\t\t\t\t\t\t[type]: true,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{renderInput({\n\t\t\t\t\t\t\t...state.properties,\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\tupdateProperties,\n\t\t\t\t\t\t\thasCaretSlot,\n\t\t\t\t\t\t\tcaretSlotContainer,\n\t\t\t\t\t\t\ttimeoutIds,\n\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\tdebounceCaretWhileTyping,\n\t\t\t\t\t\t\tdebounceInput,\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\trenderInput({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\t...state.properties,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tupdateProperties,\n\t\t\t\t\t\thasCaretSlot,\n\t\t\t\t\t\tcaretSlotContainer,\n\t\t\t\t\t\ttimeoutIds,\n\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\tdebounceCaretWhileTyping,\n\t\t\t\t\t\tdebounceInput,\n\t\t\t\t\t})\n\t\t\t\t)}\n\t\t\t\t{enableCaretSlot && (\n\t\t\t\t\t<div className=\"now-input-caret-container\" ref={caretSlotContainer}>\n\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\tname=\"caret\"\n\t\t\t\t\t\t\ton-focusin={() => {\n\t\t\t\t\t\t\t\tif (timeoutIds[nowId]?.id) {\n\t\t\t\t\t\t\t\t\tclearTimeout(timeoutIds[nowId].id);\n\t\t\t\t\t\t\t\t\ttimeoutIds[nowId] = {};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\t\tif (timeoutIds[nowId]?.id) {\n\t\t\t\t\t\t\t\t\tclearTimeout(timeoutIds[nowId].id);\n\t\t\t\t\t\t\t\t\ttimeoutIds[nowId] = {};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className=\"now-form-field-slot -end\">\n\t\t\t\t\t<slot name=\"end\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{layout === 'horizontal' && renderLabelEnd()}\n\t\t\t<div className=\"now-form-field-messages\">\n\t\t\t\t{renderFormFieldMessages({\n\t\t\t\t\tcomponentId: nowId,\n\t\t\t\t\tmessages,\n\t\t\t\t\tmessagesMode,\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * Accepts user input in the form of text, values, or symbols.\n *\n * ```jsx\n * <now-input label=\"First Name\" placeholder=\"Susan\" />\n *\n * <now-input label=\"Email\" placeholder=\"susan@email.net\">\n *   <now-button-iconic slot=\"start\" icon=\"envelope-outline\" variant=\"tertiary\" bare />\n * </now-input>\n * ```\n *\n * @seismicElement now-input\n * @summary Accepts user input in the form of text, values, or symbols.\n * @uib.label Input\n * @uib.icon input\n * @uib.description Accepts user input in the form of text, values, or symbols.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, type, disabled, readonly, autofocus, value, manageValue, name, placeholder, minlength, maxlength, multiple, min, max, step, label, wrapLabel, required, hideRequiredIndicator, optional, helperContent, invalid, manageInvalid, pattern, messages, configAria, align, fieldLayout, landmark, enableCaretSlot\n * @uib.layout.value.children value, manageValue, name, placeholder, minlength, maxlength, multiple, align, enableCaretSlot\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.number.children min, max, step\n * @uib.layout.number.icon integer-outline\n * @uib.layout.label.children label, wrapLabel, required, hideRequiredIndicator, optional, helperContent\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, pattern, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.accessibility.children configAria, landmark\n * @uib.actions NOW_INPUT#INVALID_SET, NOW_INPUT#VALUE_SET, NOW_INPUT#INPUT, NOW_INPUT#ENTER_KEYDOWN, NOW_INPUT#SELECTION_CHANGED\n */\ncreateEnhancedElement('now-input', {\n\tproperties: {\n\t\t/**\n\t\t * Text alignment within a field.\n\t\t * - `start`: Left align the text in the field.\n\t\t * - `center`: Center the text in the field.\n\t\t * - `end`: Right align the text in the field.\n\t\t * By default: Number fields = `end`. All other field types = `start`.\n\t\t * @type {('start'|'center'|'end')}\n\t\t * @uib.label Text align\n\t\t * @uib.description By default: Number fields = `end`. All other field types = `start`.\n\t\t */\n\t\talign: {schema: {type: 'string', enum: ['start', 'center', 'end']}},\n\t\t/**\n\t\t * When true, the focus is automatically placed inside the input\n\t\t * on page load.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-focus\n\t\t * @uib.description Select to automatically place the focus inside the input on page load.\n\t\t */\n\t\tautofocus: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user cannot interact with the field\n\t\t * or change its value and the field appears unavailable.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to prevent the user from interacting with the field or changing its value. The field appears unavailable.\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, a slot will be added to the component that follows the user's text cursor.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, a slot will be added to the component that follows the user's text cursor.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tenableCaretSlot: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If set, an iconic button with a popover appears next to the field\n\t\t * label to display additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.label Helper Content\n\t\t * @uib.fieldType string\n\t\t * @uib.description If set, an iconic button with a popover appears next to the field label for displaying additional hint text to the user, such as password requirements or other instructions for completing the field. Use plain text to allow the text to be translatable.\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * When true, the required indicator is visually hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Required Indicator\n\t\t * @uib.description Select to hide the required indicator. Use this for forms where most fields are required, along with the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the field value is invalid,\n\t\t * which is visually reflected in the field display.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to indicate that the field value is invalid.\n\t\t */\n\t\tinvalid: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_INPUT#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * User-visible label for the field.\n\t\t * @type {string}\n\t\t * @uib.description User-visible label for the field.\n\t\t * @uib.defaultValue Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Maximum value that the user can enter in the field.\n\t\t * @type {number}\n\t\t * @uib.label Max. value\n\t\t * @uib.fieldType number\n\t\t * @uib.description Sets a maximum number value for number input fields.\n\t\t */\n\t\tmax: {schema: {type: ['number', 'null']}},\n\t\t/**\n\t\t * Maximum number of characters that the user can enter in the field.\n\t\t * @type {number}\n\t\t * @uib.label Max. characters\n\t\t * @uib.fieldType number\n\t\t * @uib.description Sets a maximum number of characters for the input field.\n\t\t */\n\t\tmaxlength: {schema: {type: ['number', 'null']}},\n\t\t/**\n\t\t * Array of inline alert messages that display below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that display below the field.\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t\tschema: messagesSchema,\n\t\t},\n\t\t/**\n\t\t * Minimum value that the user can enter in the field.\n\t\t * @type {number}\n\t\t * @uib.label Min. value\n\t\t * @uib.fieldType number\n\t\t * @uib.description Sets a minimum number value for number input fields.\n\t\t */\n\t\tmin: {schema: {type: ['number', 'null']}},\n\t\t/**\n\t\t * Minimum number of characters that the user can enter in the field.\n\t\t * @type {number}\n\t\t * @uib.label Min. characters\n\t\t * @uib.fieldType number\n\t\t * @uib.description Sets a minimum number of characters for the input field.\n\t\t */\n\t\tminlength: {schema: {type: ['number', 'null']}},\n\t\t/**\n\t\t * When true, the user can enter multiple comma-separated email\n\t\t * addresses in inputs of type=\"email\".\n\t\t * @type {boolean}\n\t\t * @uib.label Multiple addresses allowed\n\t\t * @uib.description Lets users enter multiple comma-separated email addresses in email fields.\n\t\t */\n\t\tmultiple: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Name of the field control. Dispatched along with the field value\n\t\t * when the user interacts with the field.\n\t\t * @type {string}\n\t\t * @uib.label Identifier\n\t\t * @uib.description Name of the input field.\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the field is optional and does not need to be completed\n\t\t * before submitting the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Indicates that the user does not have to enter a value in the input field before proceeding.\n\t\t */\n\t\toptional: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * A regular expression against which user input is validated.\n\t\t * The applicable regex for each IP address format overrides this property\n\t\t * if the type=\"ip\".\n\t\t * @type {string}\n\t\t * @uib.label Validation pattern\n\t\t * @uib.description Regular expression to validate user input against.\n\t\t * @uib.fieldType string\n\t\t * @uib.typeMetadata.emptyStateBehavior NULL\n\t\t */\n\t\tpattern: {schema: {type: ['string', 'null', 'boolean']}},\n\t\t/**\n\t\t * Hint text displayed in the input when the user has not yet entered a\n\t\t * value.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder text\n\t\t * @uib.description Placeholder text for the input field that helps the user understand what input is expected.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field.\n\t\t * @type {boolean}\n\t\t * @uib.label Read Only\n\t\t * @uib.description Makes the field read-only and prevents users from modifying the value.\n\t\t */\n\t\treadonly: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user must enter a value in the\n\t\t * input field before they can submit the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Indicates that the user must enter a value in the input field before proceeding.\n\t\t */\n\t\trequired: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the input size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * For inputs of type=\"number\", defines the valid input values.\n\t\t * @type {(number|'any')}\n\t\t * @uib.description Defines the valid values for number inputs. Enter a number or 'any'.\n\t\t * @uib.fieldType\n\t\t */\n\t\tstep: {\n\t\t\tdefault: 'any',\n\t\t\tschema: {oneOf: [{type: 'number'}, {const: 'any'}]},\n\t\t},\n\t\t/**\n\t\t * Type of control to render, based on the type of expected value.\n\t\t * @type {('email'|'ip'|'number'|'text')}\n\t\t * @uib.description The type of input field. Can be 'email', 'ip', 'number', or 'text'.\n\t\t */\n\t\ttype: {\n\t\t\tdefault: 'text',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['email', 'ip', 'number', 'text'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Value of the input field.\n\t\t * @type {string}\n\t\t * @uib.description The value of the input field. Unless the input field has pre-populated data, leave this property empty.\n\t\t * @uib.translatable true\n\t\t */\n\t\tvalue: {manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `value` property.\n\t\t * An action with type `NOW_INPUT#VALUE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the value property. Use the value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValue: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-input. The value of the key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'input' key corresponds to the native input in\n\t\t * now-input. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#alert or https://www.w3.org/TR/wai-aria-1.2/#status\n\t\t * for properties and accepted values.\n\t\t * @type {{ input: { 'aria-*': string, role: string }}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tinput: configAriaLabelRoleSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slotted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * The messages display mode. Useful for when messages are rendered outside the shadowRoot.\n\t\t * - \"auto\" (Default): will be visible to sighted users and read by screen readers.\n\t\t * - \"visual-only\": will not be read by screen readers.\n\t\t * - \"sr-only\": will not be visible to sighted users.\n\t\t * @type {('auto'|'visual-only'|'sr-only')}\n\t\t * @private\n\t\t */\n\t\tmessagesMode: {\n\t\t\tdefault: 'auto',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['auto', 'visual-only', 'sr-only'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this input\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets debounce length for the caret slot in milliseconds. Debounce is only observed while\n\t\t * typing.\n\t\t * @type {number}\n\t\t */\n\t\tdebounceCaretLength: {default: 800, schema: {type: 'number'}},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tinitialState: {\n\t\tplaceholderTooltipDisplay: false,\n\t\tplaceholderOverflow: false,\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field.\n\t\t * Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: Boolean. Value of the `invalid` property, which is based on\n\t\t *   the values of the `required` and `pattern` properties.\n\t\t * - `fieldValue`: String. Value entered in the field.\n\t\t * - `type`: String. Value of the `type` property.\n\t\t *\n\t\t * Set the `manage-invalid` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: boolean, fieldValue: string, type: string}}\n\t\t * @uib.description Dispatched when the field is blurred.\n\t\t */\n\t\t'NOW_INPUT#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field\n\t\t * and the value is valid. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: String. Value entered in the field.\n\t\t *\n\t\t * Set the `manage-value` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: string}}\n\t\t * @uib.description Dispatched when the field is blurred and the input value is valid.\n\t\t */\n\t\t'NOW_INPUT#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user enters data in the field by typing or\n\t\t * pasting text. The system does not validate the value or update\n\t\t * the `value` property. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `data`: String. Value entered in the field that caused the event to fire.\n\t\t * - `fieldValue`: String. Current value of the field when the event fired.\n\t\t * @type {{name: string, data: string, fieldValue: string}}\n\t\t * @uib.label Text entered\n\t\t * @uib.description A user types or pastes text in the field.\n\t\t */\n\t\t'NOW_INPUT#INPUT': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tdata: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user presses the Enter key while focus is inside\n\t\t * the input.\n\t\t * @type {{name: string, value: string}}\n\t\t */\n\t\t'NOW_INPUT#ENTER_KEYDOWN': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user selects or deselects text within the input, either by clicking or using the keyboard.\n\t\t * The payload contains:\n\t\t * - `name`: Name of the input field.\n\t\t * - `selection`: The text that is currently selected in the input or an empty string if no text is selected.\n\t\t * - `selectionStart`: The index of the first selected character in the input.\n\t\t * - `selectionEnd`: The index of the last selected character in the input.\n\t\t * - `fieldValue`: Current content in the input.\n\t\t * - `fieldElement`: Reference to the native input HTMLElement.\n\t\t *\n\t\t * @type {{name: string, selection: string, selectionStart: number, selectionEnd: number, fieldValue: string, fieldElement: object}}\n\t\t * @uib.description Dispatched when the user selects or deselects text within the input, either by clicking or using the keyboard.\n\t\t */\n\t\t'NOW_INPUT#SELECTION_CHANGED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tselection: {type: 'string'},\n\t\t\t\t\tselectionStart: {type: 'number'},\n\t\t\t\t\tselectionEnd: {type: 'number'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\tfieldElement: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for field decorators. Located at the end\n\t\t * of the input field.\n\t\t */\n\t\tend: {},\n\t\t/**\n\t\t * Slot for field decorators. Located at the beginning\n\t\t * of the input field.\n\t\t */\n\t\tstart: {},\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of the label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Floating slot that follows the text area caret as the user types or moves within the field.\n\t\t */\n\t\tcaret: {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: ({host, properties, updateProperties}) => {\n\t\t\tlet input;\n\t\t\tif (properties.autofocus) {\n\t\t\t\tinput = host.shadowRoot.querySelector('input');\n\t\t\t\tif (input) {\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tinput.focus();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst {value, type} = properties;\n\t\t\tif (value && type === 'ip') {\n\t\t\t\tinput = input ? input : host.shadowRoot.querySelector('input');\n\t\t\t\tstripIPZeros(value, updateProperties, input);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DOM_TREE_READY]: ({host, properties, updateState}) => {\n\t\t\tconst inputField = host.shadowRoot.querySelector('.now-input-native');\n\t\t\tif (properties.placeholder) {\n\t\t\t\tconst tempValue = inputField.value;\n\t\t\t\tif (properties.type === 'number') inputField.type = 'text';\n\t\t\t\tinputField.value = inputField.placeholder;\n\t\t\t\tif (inputField.scrollWidth > inputField.clientWidth) {\n\t\t\t\t\tupdateState({placeholderOverflow: true});\n\t\t\t\t}\n\t\t\t\tinputField.value = tempValue;\n\t\t\t\tif (properties.type === 'number') inputField.type = 'number';\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\thost,\n\t\t\taction,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateProperties,\n\t\t}) => {\n\t\t\tconst {name, value, previousValue} = action.payload;\n\t\t\tconst fromInputPropertyChanged = true;\n\t\t\tif (name === 'value' || name === 'pattern' || name === 'type') {\n\t\t\t\tlet valid;\n\t\t\t\tconst nativeInput = host.shadowRoot.querySelector('input');\n\t\t\t\tconst {name, type} = properties;\n\t\t\t\tlet {value} = properties;\n\n\t\t\t\tif (nativeInput) {\n\t\t\t\t\tif (type === 'ip' && value) {\n\t\t\t\t\t\tvalue = stripIPZeros(value, updateProperties, nativeInput);\n\t\t\t\t\t\tvalid = nativeInput.validity.valid && isIPAddress(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalid = nativeInput.validity.valid;\n\t\t\t\t\t}\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_INPUT#INVALID_SET',\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\tvalue: !valid,\n\t\t\t\t\t\t\t\tfieldValue: value,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tfromInputPropertyChanged,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (name === 'messages') {\n\t\t\t\tconst messagesLength = value.length;\n\t\t\t\tconst previousMessagesLength = previousValue ? previousValue.length : 0;\n\t\t\t\tif (messagesLength > previousMessagesLength) {\n\t\t\t\t\tfor (let i = previousMessagesLength; i < messagesLength; i++) {\n\t\t\t\t\t\tannounceMessage(properties.label, value[i], dispatch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst {enableCaretSlot, disabled, readonly} = properties;\n\t\t\tif (name === 'value' && enableCaretSlot && !disabled && !readonly) {\n\t\t\t\tconst input = host.shadowRoot.querySelector('input');\n\t\t\t\tconst caretSlotContainer = host.shadowRoot.querySelector(\n\t\t\t\t\t'.now-input-caret-container',\n\t\t\t\t);\n\t\t\t\trepositionCaretSlotContainer(input, caretSlotContainer);\n\t\t\t}\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\thandleFocus(host);\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{behavior: truncationBehavior},\n\t\t{behavior: tooltipBehavior},\n\t],\n\tstyles,\n\tview,\n\tsetInitialState({properties: {debounceCaretLength}}) {\n\t\treturn {\n\t\t\tdebounceInput: debounce((fn) => fn(), 250),\n\t\t\tdebounceCaret: debounce((fn) => fn(), 250),\n\t\t\tdebounceCaretWhileTyping: debounce((fn) => fn(), debounceCaretLength),\n\t\t};\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-input-password.scss';\nimport {\n\trenderFormFieldMessages,\n\trenderFormFieldLabel,\n\trenderLabelEnd,\n\tgetAriaDescribedByList,\n} from './form-field';\nimport {handleFocus, handlePlaceholderTooltipVisibility} from './utils/helper';\nimport {messagesSchema} from './schemas/messages-schema';\nimport '@servicenow/now-button';\nimport '@servicenow/now-icon';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {t} from 'sn-translate';\nimport {actionTypes} from '@servicenow/ui-core';\nconst {\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n\tCOMPONENT_DOM_TREE_READY,\n} = actionTypes;\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\nimport {fieldLayoutSchema} from './schemas/field-layout-schema';\nimport {getColumnStyles} from '@servicenow/library-enhanced-utils';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\n\nconst announceMessage = (label, content, dispatch) => {\n\tconst announcement = label + ' ' + content.content;\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announcement,\n\t\ttype: 'polite',\n\t});\n};\n\nconst runPasswordValidation = (\n\te,\n\trequirements,\n\tstate,\n\tupdateState,\n\tdispatch,\n) => {\n\tconst {placeholderOverflow} = state;\n\tif (placeholderOverflow) {\n\t\thandlePlaceholderTooltipVisibility(e, dispatch, state, updateState);\n\t}\n\tconst fieldValue = e.target.value;\n\tconst data = e.data;\n\tlet validations = requirements.map((req) => {\n\t\tif (!fieldValue) {\n\t\t\treturn req;\n\t\t}\n\t\tconst valid = new RegExp(req.pattern).test(fieldValue);\n\t\treturn {\n\t\t\t...req,\n\t\t\tvalid: valid,\n\t\t};\n\t});\n\tupdateState({validations});\n\tdispatch(({properties: {name}}) => {\n\t\treturn {\n\t\t\ttype: 'NOW_INPUT_PASSWORD#INPUT',\n\t\t\tpayload: {name, data, fieldValue},\n\t\t};\n\t});\n};\n\nconst handleBlur = (e, validations, updateState, dispatch) => {\n\tconst {name, value} = e.target;\n\tconst {valid} = e.target.validity;\n\tupdateState({hasFocus: false});\n\tconst requirementsNotMet =\n\t\tArray.isArray(validations) &&\n\t\tvalidations.length > 0 &&\n\t\tvalidations.some((req) => req.valid === false);\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_INPUT_PASSWORD#INVALID_SET',\n\t\t\tpayload: {\n\t\t\t\tname: name,\n\t\t\t\tvalue: Boolean(!valid || requirementsNotMet),\n\t\t\t\tfieldValue: value,\n\t\t\t},\n\t\t};\n\t});\n\tupdateState(({properties}) => {\n\t\tconst {invalid} = properties;\n\t\treturn {operation: 'set', validations: [], shouldUpdate: !invalid};\n\t});\n\tdispatch(({properties}) => {\n\t\tconst {disabled, readonly, invalid, value: previousValue} = properties;\n\t\treturn {\n\t\t\ttype: 'NOW_INPUT_PASSWORD#VALUE_SET',\n\t\t\tpayload: {name, value},\n\t\t\tshouldDispatch:\n\t\t\t\t!disabled && !readonly && !invalid && value !== previousValue,\n\t\t};\n\t});\n};\n\nconst handleMaskButtonClick = (disabled, updateState) => {\n\tupdateState(({state}) => {\n\t\treturn {\n\t\t\toperation: 'set',\n\t\t\tpath: 'masked',\n\t\t\tvalue: !state.masked,\n\t\t\tshouldUpdate: !disabled,\n\t\t};\n\t});\n};\n\nconst getMessagesAndValidations = (compact, messages, validations = []) => {\n\tif (compact) {\n\t\tconst validationErrors = validations\n\t\t\t.filter((req) => req.valid === false)\n\t\t\t.map((req) => {\n\t\t\t\treturn {\n\t\t\t\t\tstatus: 'critical',\n\t\t\t\t\ticon: 'exclamation-circle-outline',\n\t\t\t\t\tcontent: req.label,\n\t\t\t\t};\n\t\t\t});\n\t\treturn [...validationErrors, ...messages];\n\t}\n\treturn messages;\n};\n\nconst renderValidations = (compact, validations, componentId) => {\n\tif (compact) {\n\t\treturn;\n\t}\n\treturn validations.map((req, index) => {\n\t\tlet validity;\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tif (req.hasOwnProperty('valid')) {\n\t\t\tvalidity = req.valid ? 'valid' : 'invalid';\n\t\t}\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclass={{\n\t\t\t\t\t'now-input-password-validation': true,\n\t\t\t\t\t['-' + validity]: validity,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<now-icon\n\t\t\t\t\tid={`${componentId}-message-${index}`}\n\t\t\t\t\tclassName=\"now-m-inline-end--xs\"\n\t\t\t\t\ticon={\n\t\t\t\t\t\tvalidity === 'valid'\n\t\t\t\t\t\t\t? 'check-circle-fill'\n\t\t\t\t\t\t\t: validity === 'invalid'\n\t\t\t\t\t\t\t\t? 'exclamation-circle-outline'\n\t\t\t\t\t\t\t\t: 'check-circle-outline'\n\t\t\t\t\t}\n\t\t\t\t\taria-label={\n\t\t\t\t\t\tvalidity === 'valid'\n\t\t\t\t\t\t\t? t('Met requirement: {0}.', req.label)\n\t\t\t\t\t\t\t: t('Unmet requirement: {0}.', req.label)\n\t\t\t\t\t}\n\t\t\t\t\trole=\"img\"\n\t\t\t\t/>\n\t\t\t\t<span aria-hidden=\"true\">{req.label}</span>\n\t\t\t</span>\n\t\t);\n\t});\n};\n\nconst renderMaskButton = (size, masked, disabled, updateState) => {\n\treturn (\n\t\t<now-button-iconic\n\t\t\tclassName=\"now-input-password-mask-button\"\n\t\t\tslot=\"end\"\n\t\t\tsize=\"sm\"\n\t\t\ticon={masked ? 'eye-outline' : 'eye-slash-outline'}\n\t\t\tvariant=\"tertiary\"\n\t\t\tbare\n\t\t\thide-padding={size === 'sm'}\n\t\t\tdisabled={disabled}\n\t\t\ton-click={() => handleMaskButtonClick(disabled, updateState)}\n\t\t\ttooltip-content={masked ? t('Unmask password') : t('Mask password')}\n\t\t\tconfig-aria={{\n\t\t\t\t'aria-label': masked ? t('Unmask password') : t('Mask password'),\n\t\t\t}}\n\t\t/>\n\t);\n};\n\nconst view = (state, {updateState, dispatch}) => {\n\tconst {\n\t\tsize,\n\t\tcompact,\n\t\tdisabled,\n\t\tdisableUnmask,\n\t\thelperContent: customHelperContent,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\tlabel,\n\t\tmessages,\n\t\tname,\n\t\toptional,\n\t\tplaceholder,\n\t\treadonly,\n\t\trequired,\n\t\trequirements,\n\t\tvalue = '',\n\t\tconfigAria,\n\t\tnowId,\n\t\talign,\n\t\tfieldLayout: {layout, columns},\n\t\twrapLabel,\n\t} = state.properties;\n\tconst {masked, validations, hasFocus, hasHover, placeholderOverflow} = state;\n\n\tconst messagesAndValidations = getMessagesAndValidations(\n\t\tcompact,\n\t\tmessages,\n\t\tvalidations,\n\t);\n\n\tconst allMessages = compact\n\t\t? messagesAndValidations\n\t\t: [...requirements, ...messagesAndValidations];\n\n\tconst startIndex = compact ? 0 : requirements.length;\n\n\tconst helperContent =\n\t\tcompact && !customHelperContent ? (\n\t\t\t<ul className=\"now-form-field-popover-ul\">\n\t\t\t\t{requirements.map((req) => {\n\t\t\t\t\treturn <li>{req.label}</li>;\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t) : (\n\t\t\tcustomHelperContent\n\t\t);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={\n\t\t\t\tlayout === 'horizontal' ? {...getColumnStyles(columns)} : undefined\n\t\t\t}\n\t\t\tclass={{\n\t\t\t\t'now-input': true,\n\t\t\t\t'now-form-field-layout': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t\t[`-${layout}`]: layout,\n\t\t\t\t'will-wrap': wrapLabel,\n\t\t\t}}\n\t\t>\n\t\t\t{renderFormFieldLabel(\n\t\t\t\tnowId,\n\t\t\t\tinvalid,\n\t\t\t\trequired,\n\t\t\t\toptional,\n\t\t\t\tlabel,\n\t\t\t\thelperContent,\n\t\t\t\thideRequiredIndicator,\n\t\t\t\t'label',\n\t\t\t\tlayout,\n\t\t\t\tfalse,\n\t\t\t\twrapLabel,\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-input-field': true,\n\t\t\t\t\t'now-form-field': true,\n\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t'is-readonly': readonly,\n\t\t\t\t\t'has-focus': hasFocus && !readonly,\n\t\t\t\t\t'has-hover': hasHover,\n\t\t\t\t\t['-' + align]: align,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tid={`form-field-${nowId}`}\n\t\t\t\t\tclassName=\"now-input-native\"\n\t\t\t\t\taria-describedby={getAriaDescribedByList({\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\toptional,\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\tmessages: allMessages,\n\t\t\t\t\t\tlayout,\n\t\t\t\t\t})}\n\t\t\t\t\taria-required={required ? 'true' : 'false'}\n\t\t\t\t\taria-invalid={invalid ? 'true' : 'false'}\n\t\t\t\t\tdata-tooltip={placeholder}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tname={name}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\treadonly={readonly}\n\t\t\t\t\trequired={required}\n\t\t\t\t\ttype={(readonly && !value) || !masked ? 'text' : 'password'}\n\t\t\t\t\tvalue={!value && readonly ? '—' : value}\n\t\t\t\t\taria-label={!value && readonly ? '' : undefined}\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\ton-mouseenter={(e) => {\n\t\t\t\t\t\tupdateState({hasHover: true});\n\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-mouseleave={(e) => {\n\t\t\t\t\t\tupdateState({hasHover: false});\n\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-focusin={(e) => {\n\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-focusout={(e) => {\n\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-input={(e) =>\n\t\t\t\t\t\trunPasswordValidation(e, requirements, state, updateState, dispatch)\n\t\t\t\t\t}\n\t\t\t\t\ton-focus={() => updateState({hasFocus: true})}\n\t\t\t\t\ton-blur={(e) => handleBlur(e, validations, updateState, dispatch)}\n\t\t\t\t\t{...filterAriaAttributes(configAria, 'input')}\n\t\t\t\t/>\n\t\t\t\t{!disableUnmask && (!readonly || value)\n\t\t\t\t\t? renderMaskButton(size, masked, disabled, updateState)\n\t\t\t\t\t: undefined}\n\t\t\t</div>\n\t\t\t{layout === 'horizontal' && renderLabelEnd()}\n\t\t\t<div className=\"now-form-field-messages\">\n\t\t\t\t{renderValidations(compact, validations || requirements, nowId)}\n\t\t\t\t{renderFormFieldMessages(nowId, messagesAndValidations, startIndex)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * The password input accepts a password and includes a label to help guide the user.\n *\n * ```jsx\n * <now-input-password label=\"Enter new password\" />\n * ```\n *\n * @seismicElement now-input-password\n * @summary Form element for inputting passwords.\n * @uib.label Input password\n * @uib.icon input-password\n * @uib.description Form element for passwords\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, disabled, readonly, autofocus, value, manageValue, name, placeholder, disableUnmask, requirements, compact, label, wrapLabel, required, hideRequiredIndicator, optional, helperContent, invalid, manageInvalid, messages, configAria, align, fieldLayout, landmark\n * @uib.layout.value.children value, manageValue, name, placeholder, disableUnmask, align\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.requirements.children requirements, compact\n * @uib.layout.requirements.icon asterisk-outline\n * @uib.layout.label.children label, wrapLabel, required, hideRequiredIndicator, optional, helperContent\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.accessibility.children configAria, landmark\n * @uib.actions NOW_INPUT_PASSWORD#INVALID_SET, NOW_INPUT_PASSWORD#VALUE_SET, NOW_INPUT_PASSWORD#INPUT\n */\ncreateEnhancedElement('now-input-password', {\n\tproperties: {\n\t\t/**\n\t\t * Alignment of the text within the field.\n\t\t * @type {('start'|'center'|'end')}\n\t\t * @uib.label Text align\n\t\t * @uib.description Alignment of the text within the field.\n\t\t */\n\t\talign: {schema: {type: 'string', enum: ['start', 'center', 'end']}},\n\t\t/**\n\t\t * When true, the focus is automatically placed inside the input\n\t\t * on page load.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-focus\n\t\t * @uib.description Set to automatically place focus inside the input on page load.\n\t\t */\n\t\tautofocus: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, password requirements display in the input field popover\n\t\t * instead of below the input field. Validation errors for passwords\n\t\t * that fail to meet requirements appear below the input field.\n\t\t * @type {boolean}\n\t\t * @uib.label Place password requirements in icon\n\t\t * @uib.description Set to display password requirements in the input field popover instead of below the input field. Validation errors for passwords that fail to meet requirements appear below the input field\n\t\t */\n\t\tcompact: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user cannot interact with the field\n\t\t * or change its value and the field appears greyed out.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to prevent the user from interacting with the field. The field appears grayed out.\n\t\t */\n\t\tdisabled: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, disables the user's ability to view the password\n\t\t * value in plain text using a `mask`/`unmask` button.\n\t\t * @type {boolean}\n\t\t * @uib.label Disable show password option\n\t\t * @uib.description Set to disable the user's ability to view the password value in plain text using a 'mask'/'unmask' button.\n\t\t */\n\t\tdisableUnmask: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If set, an iconic button with a popover appears next to the field\n\t\t * label to display additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.label Helper Content\n\t\t * @uib.fieldType string\n\t\t * @uib.description If set, an iconic button with popover appears next to the field label for displaying additional hint text to the user, such as password requirements or other instructions for completing the field. Use plain text to allow the text to be translatable.\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * When true, the required indicator is visually hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Required Indicator\n\t\t * @uib.description Set to hide the required indicator. Use this for forms where most fields are required, along with the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the field value is invalid,\n\t\t * which is visually reflected in the field display.\n\t\t * @type {boolean}\n\t\t * @uib.description When set, the field appears invalid indicating incorrect input.\n\t\t */\n\t\tinvalid: {manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_INPUT_PASSWORD#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * User-visible label for the field.\n\t\t * @type {string}\n\t\t * @uib.description Field label to tell users what to enter in the field.\n\t\t * @uib.defaultValue Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Array of inline alert messages that are displayed below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that display below the field.\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t\tschema: messagesSchema,\n\t\t},\n\t\t/**\n\t\t * Name of the field control. Dispatched along with the field value\n\t\t * on user interaction.\n\t\t * @type {string}\n\t\t * @uib.label Identifier\n\t\t * @uib.description Reference name for the input field.\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the field is optional and does not need to be completed\n\t\t * before submitting the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to indicate that the user does not have to enter a value in the input field before proceeding.\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Hint text displayed in the input when the user has not yet entered a\n\t\t * value.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder text\n\t\t * @uib.description Placeholder text for the input field. This text should hint to the user what input is expected.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field.\n\t\t * @type {boolean}\n\t\t * @uib.label Read-only\n\t\t * @uib.description When set, the user cannot modify the value of the input field. The input field is not disabled in this setting.\n\t\t */\n\t\treadonly: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user must enter a value in the\n\t\t * input field before they can submit the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to indicate that the user must enter a value in the input field before proceeding.\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Array of requirements for the user-entered password. Each requirement\n\t\t * must contain a label describing the requirement and the RegEx pattern\n\t\t * against which the password must validate.\n\t\t * @type {Array.<{label: string, pattern: RegExp}>}\n\t\t * @uib.description Array of requirements for the user-entered password. Each requirement must contain a label describing the requirement and the RegEx pattern against which the password must validate\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"label\" }\n\t\t */\n\t\trequirements: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\t\tpattern: {type: 'string'},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the input size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * The value of the input field.\n\t\t * @type {string}\n\t\t * @uib.description The value of the input field. Unless the input field has pre-populated data, leave this property empty.\n\t\t * @uib.translatable true\n\t\t */\n\t\tvalue: {manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `value` property.\n\t\t * An action with type `NOW_INPUT_PASSWORD#VALUE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the value property. Use the value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValue: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-input-password. The value of the key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'input' key corresponds to the native input in\n\t\t * now-input-password. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#alert or https://www.w3.org/TR/wai-aria-1.2/#status\n\t\t * for properties and accepted values.\n\t\t * @type {{ input: { 'aria-*': string, role: string  }}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tinput: configAriaLabelRoleSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slotted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this input\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: ({host, properties}) => {\n\t\t\tif (properties.autofocus) {\n\t\t\t\tconst input = host.shadowRoot.querySelector('input');\n\t\t\t\tif (input) {\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tinput.focus();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({action, properties, dispatch}) => {\n\t\t\tconst {name, value, previousValue} = action.payload;\n\t\t\tif (name === 'messages') {\n\t\t\t\tconst messagesLength = value.length;\n\t\t\t\tconst previousMessagesLength = previousValue ? previousValue.length : 0;\n\t\t\t\tif (messagesLength > previousMessagesLength) {\n\t\t\t\t\tfor (let i = previousMessagesLength; i < messagesLength; i++) {\n\t\t\t\t\t\tannounceMessage(properties.label, value[i], dispatch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t[COMPONENT_DOM_TREE_READY]: ({host, properties, updateState}) => {\n\t\t\tconst inputField = host.shadowRoot.querySelector('.now-input-native');\n\t\t\tif (properties.placeholder) {\n\t\t\t\tconst tempValue = inputField.value;\n\t\t\t\tinputField.value = inputField.placeholder;\n\t\t\t\tif (inputField.scrollWidth > inputField.clientWidth) {\n\t\t\t\t\tupdateState({placeholderOverflow: true});\n\t\t\t\t}\n\t\t\t\tinputField.value = tempValue;\n\t\t\t}\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field.\n\t\t * Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: Boolean. Value of the `invalid` property, which is based on\n\t\t *   the values of the `required` and `pattern` properties.\n\t\t * - `fieldValue`: String. Value entered in the field.\n\t\t *\n\t\t * Set the `manage-invalid` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: boolean, fieldValue: string}}\n\t\t * @uib.description Dispatched when the user moves focus away from the field and the value is invalid\n\t\t */\n\t\t'NOW_INPUT_PASSWORD#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field\n\t\t * and the value is valid. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: String. Value entered in the field.\n\t\t *\n\t\t * Set the `manage-value` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: string}}\n\t\t * @uib.description Dispatched when the user moves focus away from the field and the value is valid\n\t\t */\n\t\t'NOW_INPUT_PASSWORD#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user enters data in the field by typing or\n\t\t * pasting text. The system does not validate the value or update\n\t\t * the `value` property. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `data`: String. Value entered in the field that caused the event to fire.\n\t\t * - `fieldValue`: String. Current value of the field when the event fired.\n\t\t * @type {{name: string, data: string, fieldValue: string}}\n\t\t * @uib.description Dispatched when the user enters data in the field by typing or pasting text\n\t\t */\n\t\t'NOW_INPUT_PASSWORD#INPUT': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tdata: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\tmasked: true,\n\t\tplaceholderTooltipDisplay: false,\n\t\tplaceholderOverflow: false,\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\thandleFocus(host);\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{behavior: truncationBehavior},\n\t\t{behavior: tooltipBehavior},\n\t],\n\tstyles,\n\tview,\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-input-phone.scss';\nimport '@servicenow/now-dropdown';\nimport '@servicenow/now-button';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport './now-input.js';\nimport {t} from 'sn-translate';\nimport {makeRedispatchEffect} from '@servicenow/library-enhanced-utils';\nimport {messagesSchema} from './schemas/messages-schema';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\nimport {fieldLayoutSchema} from './schemas/field-layout-schema';\n\nconst handleCallButtonClick = (disabled, dispatch) => {\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_INPUT_PHONE#BUTTON_CLICKED',\n\t\t\tpayload: {},\n\t\t\tshouldDispatch: !disabled,\n\t\t};\n\t});\n};\n\nconst getNumberValue = (readonly, selectedCountryCode, number) => {\n\tif (readonly && selectedCountryCode) {\n\t\treturn `+${selectedCountryCode} ${number}`;\n\t}\n\n\treturn number;\n};\n\nconst renderCountryCodeDropdown = (\n\tsize,\n\treadonly,\n\tdisabled,\n\tcountryCodes,\n\tselectedCountryCode,\n) => {\n\tif (readonly) return;\n\n\tif (Array.isArray(countryCodes) && countryCodes.length) {\n\t\treturn (\n\t\t\t<now-dropdown-custom-target\n\t\t\t\tclassName=\"now-input-phone-dropdown\"\n\t\t\t\tslot=\"start\"\n\t\t\t\titems={countryCodes.map((item) => {\n\t\t\t\t\treturn {id: item.code, label: item.name};\n\t\t\t\t})}\n\t\t\t\tselected-items={[selectedCountryCode]}\n\t\t\t\tdisable-listeners={disabled}\n\t\t\t\tsearch=\"contains\"\n\t\t\t\tconfig-aria={{panel: {'aria-label': t('Select country code')}}}\n\t\t\t>\n\t\t\t\t<now-button-bare\n\t\t\t\t\thide-block-padding\n\t\t\t\t\tsize={size}\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\ticon-end=\"caret-down-fill\"\n\t\t\t\t\tlabel={`+${selectedCountryCode}`}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t'aria-label': t('Country code: +{0}', selectedCountryCode),\n\t\t\t\t\t\t'aria-haspopup': 'listbox',\n\t\t\t\t\t\t'aria-expanded': 'false',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</now-dropdown-custom-target>\n\t\t);\n\t}\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tsize,\n\t\tautofocus,\n\t\tcountryCodes,\n\t\tdisabled,\n\t\thelperContent,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\tlabel,\n\t\tmanageInvalid,\n\t\tmanageValue,\n\t\tmax,\n\t\tmaxlength,\n\t\tmessages,\n\t\tmin,\n\t\tminlength,\n\t\tname,\n\t\tnumber,\n\t\toptional,\n\t\tpattern,\n\t\tplaceholder,\n\t\treadonly,\n\t\trequired,\n\t\tconfigAria,\n\t\tselectedCountryCode = countryCodes &&\n\t\t\tcountryCodes.length &&\n\t\t\tcountryCodes[0].code,\n\t\talign,\n\t\tfieldLayout,\n\t\twrapLabel,\n\t} = state.properties;\n\tconst callLabel = t({\n\t\tcode: 'now-input-phone-call-button-label',\n\t\tmessage: 'Call',\n\t\tcomment: 'Verb. Label for action button in phone input field.',\n\t});\n\treturn (\n\t\t<now-input\n\t\t\tclass={{'now-input': true, [`-${size}`]: size}}\n\t\t\talign={align}\n\t\t\tautofocus={autofocus}\n\t\t\tdisabled={disabled}\n\t\t\thelper-content={helperContent}\n\t\t\thide-required-indicator={hideRequiredIndicator}\n\t\t\tinvalid={invalid}\n\t\t\tlabel={label}\n\t\t\tsize={size}\n\t\t\tmax={max}\n\t\t\tmaxlength={maxlength}\n\t\t\tmessages={messages}\n\t\t\tmin={min}\n\t\t\tminlength={minlength}\n\t\t\tname={name}\n\t\t\toptional={optional}\n\t\t\tpattern={!readonly ? pattern : undefined}\n\t\t\tplaceholder={placeholder}\n\t\t\treadonly={readonly}\n\t\t\trequired={required}\n\t\t\ttype=\"text\"\n\t\t\tvalue={\n\t\t\t\t!number && readonly\n\t\t\t\t\t? '—'\n\t\t\t\t\t: getNumberValue(readonly, selectedCountryCode, number)\n\t\t\t}\n\t\t\taria-label={!number && readonly ? '' : undefined}\n\t\t\tmanage-invalid={manageInvalid}\n\t\t\tmanage-value={manageValue}\n\t\t\tconfig-aria={configAria}\n\t\t\tfield-layout={fieldLayout}\n\t\t\twrap-label={wrapLabel}\n\t\t>\n\t\t\t<slot\n\t\t\t\tslot=\"label-start\"\n\t\t\t\tname=\"label-start\"\n\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\ton-click={(e) => e.stopPropagation()}\n\t\t\t/>\n\t\t\t<slot\n\t\t\t\tslot=\"label-inline\"\n\t\t\t\tname=\"label-inline\"\n\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\ton-click={(e) => e.stopPropagation()}\n\t\t\t/>\n\t\t\t<slot slot=\"label-end\" name=\"label-end\" />\n\t\t\t{renderCountryCodeDropdown(\n\t\t\t\tsize,\n\t\t\t\treadonly,\n\t\t\t\tdisabled,\n\t\t\t\tcountryCodes,\n\t\t\t\tselectedCountryCode,\n\t\t\t)}\n\t\t\t{number || (!readonly && !number) ? (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tslot=\"end\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ticon=\"phone-outline\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tbare\n\t\t\t\t\thide-padding={size === 'sm'}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\ton-click={() => handleCallButtonClick(disabled, dispatch)}\n\t\t\t\t\ttooltip-content={callLabel}\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t'aria-label': callLabel,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : undefined}\n\t\t</now-input>\n\t);\n};\n\n/**\n * Phone inputs provide a text box for a phone number,\n * including country and other identifying codes.\n *\n * ```jsx\n * <now-input-phone />\n * ```\n *\n * @seismicElement now-input-phone\n * @summary Form element for input of telephone numbers with country code and CTI.\n * @uib.label Input phone\n * @uib.icon input-phone\n * @uib.description Phone inputs provide a text box for a phone number, including country and other identifying codes\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, disabled, readonly, autofocus, value, manageValue, number, name, placeholder, minlength, maxlength, countryCodes, selectedCountryCode, label, wrapLabel, required, hideRequiredIndicator, optional, helperContent, invalid, manageInvalid, pattern, messages, configAria, align, fieldLayout, landmark\n * @uib.layout.value.children value, manageValue, number, name, placeholder, minlength, maxlength, align\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.countryCode.children countryCodes, selectedCountryCode\n * @uib.layout.countryCode.icon number-outline\n * @uib.layout.label.children label, wrapLabel, required, hideRequiredIndicator, optional, helperContent\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, pattern, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.accessibility.children configAria, landmark\n * @uib.actions NOW_INPUT_PHONE#INVALID_SET, NOW_INPUT_PHONE#VALUE_SET, NOW_INPUT_PHONE#INPUT, NOW_INPUT_PHONE#BUTTON_CLICKED, NOW_INPUT_PHONE#COUNTRY_CODE_SET\n */\ncreateEnhancedElement('now-input-phone', {\n\tproperties: {\n\t\t/**\n\t\t * Alignment of the text within the field.\n\t\t * @type {('start'|'center'|'end')}\n\t\t * @uib.label Text align\n\t\t * @uib.description Alignment of the text within the field.\n\t\t */\n\t\talign: {schema: {type: 'string', enum: ['start', 'center', 'end']}},\n\t\t/**\n\t\t * When true, the focus is automatically placed inside the input\n\t\t * on page load.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-focus\n\t\t * @uib.description Set to automatically place focus inside the input on page load.\n\t\t */\n\t\tautofocus: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Array of country codes to display in the dropdown inside of the field.\n\t\t * @type {Array.<{code: string, name: string}>}\n\t\t * @uib.description Array of country codes to display in the dropdown inside of the field.\n\t\t */\n\t\tcountryCodes: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tcode: {type: 'string'},\n\t\t\t\t\t\tname: {type: 'string', translatable: true},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * A `code` value matching an object from the `countryCodes` array that\n\t\t * is selected in the country code dropdown menu.\n\t\t * @type {string}\n\t\t * @uib.description A `code` value matching an object from the `countryCodes` array that is selected in the country code dropdown menu\n\t\t */\n\t\tselectedCountryCode: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot interact with the field\n\t\t * or change its value and the field appears greyed out.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to prevent the user from interacting with the field. The field appears grayed out.\n\t\t */\n\t\tdisabled: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If set, an iconic button with a popover appears next to the field\n\t\t * label to display additional hint text to the user, such as\n\t\t * phone number requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.label Helper text\n\t\t * @uib.fieldType string\n\t\t * @uib.description If set, an iconic button with a popover appears next to the field label for displaying additional hint text to the user, such as password requirements or other instructions for completing the field. Use plain text to allow for translation.\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * When true, the required indicator is visually hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Required Indicator\n\t\t * @uib.description Set to hide the required indicator. Use this for forms where most fields are required, along with the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the field value is invalid,\n\t\t * which is visually reflected in the field display.\n\t\t * @type {boolean}\n\t\t * @uib.description When set, the field appears invalid indicating incorrect input.\n\t\t */\n\t\tinvalid: {manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_INPUT_PHONE#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * User-visible label for the field.\n\t\t * @type {string}\n\t\t * @uib.description Field label to tell users what to enter in the field.\n\t\t * @uib.defaultValue Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Maximum value that the user can enter in the field.\n\t\t * @type {number}\n\t\t */\n\t\tmax: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Maximum number of characters that the user can enter in the field.\n\t\t * @type {number}\n\t\t * @uib.label Max. characters\n\t\t * @uib.fieldType number\n\t\t * @uib.description Maximum number of characters for the input field.\n\t\t */\n\t\tmaxlength: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Array of inline alert messages that are displayed below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that are displayed below the field.\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t\tschema: messagesSchema,\n\t\t},\n\t\t/**\n\t\t * Minimum value that the user can enter in the field.\n\t\t * @type {number}\n\t\t */\n\t\tmin: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Minimum number of characters that the user can enter in the field.\n\t\t * @type {number}\n\t\t * @uib.label Min. characters\n\t\t * @uib.fieldType number\n\t\t * @uib.description Minimum number of characters for the input field.\n\t\t */\n\t\tminlength: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Name of the field control. Dispatched along with the field value\n\t\t * on user interaction.\n\t\t * @type {string}\n\t\t * @uib.label Identifier\n\t\t * @uib.description Reference name for the input field.\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Portion of the phone number (excluding the country code) present\n\t\t * in the main input area of the phone input field.\n\t\t * @type {string}\n\t\t * @uib.description Portion of the phone number (excluding the country code) present in the main input area of the phone input field.\n\t\t */\n\t\tnumber: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the field is optional and does not need to be completed\n\t\t * before submitting the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to indicate that the user does not have to enter a value in the input field before proceeding.\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * A regular expression against which the user input is validated.\n\t\t * @type {string}\n\t\t * @uib.label Validation pattern\n\t\t * @uib.description Regular expression for which user input is validated.\n\t\t * @uib.fieldType string\n\t\t * @uib.typeMetadata.emptyStateBehavior NULL\n\t\t */\n\t\tpattern: {\n\t\t\tdefault: '[0-9]{3}-[0-9]{3}-[0-9]{4}',\n\t\t\tschema: {type: ['string', 'null', 'boolean']},\n\t\t},\n\t\t/**\n\t\t * Hint text displayed in the input when the user has not yet entered a\n\t\t * value.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder text\n\t\t * @uib.description Placeholder text for the input field. This text should hint to the user what input is expected.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field.\n\t\t * @type {boolean}\n\t\t * @uib.label Read-only\n\t\t * @uib.description When set, the user cannot modify the value of the input field. The input field is not disabled in this setting.\n\t\t */\n\t\treadonly: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user must enter a value in the\n\t\t * input field before they can submit the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to indicate that the user must enter a value in the input field before proceeding.\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the input size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * The value of the overall phone input field, including both the\n\t\t * country code and numeric string.\n\t\t * @type {string}\n\t\t * @uib.description The value of the input field. Unless the input field has pre-populated data, leave this property empty.\n\t\t * @uib.translatable true\n\t\t */\n\t\tvalue: {manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `value` property.\n\t\t * An action with type `NOW_INPUT_PHONE#VALUE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the value property. Use the value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValue: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-input-phone. The value of the key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'input' key corresponds to the native input in\n\t\t * now-input-phone. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#alert or https://www.w3.org/TR/wai-aria-1.2/#status\n\t\t * for properties and accepted values.\n\t\t * @type {{ input: { 'aria-*': string, role: string  }}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tinput: configAriaLabelSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slotted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this input\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user clicks the CTI button.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the user clicks the CTI (phone) button.\n\t\t */\n\t\t'NOW_INPUT_PHONE#BUTTON_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user selects a country code from the dropdown.\n\t\t * Payload contains the `code` value from the corresponding\n\t\t * configuration object in the `countryCodes` array.\n\t\t * @type {{value: string}}\n\t\t * @uib.description Dispatched when the user selects a country code from the dropdown\n\t\t */\n\t\t'NOW_INPUT_PHONE#COUNTRY_CODE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field.\n\t\t * Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: Boolean. Value of the `invalid` property, which is based on\n\t\t *   the values of the `required` and `pattern` properties.\n\t\t * - `fieldValue`: String. Value entered in the field.\n\t\t *\n\t\t * Set the `manage-invalid` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: boolean, fieldValue: string}}\n\t\t * @uib.description Dispatched when the field is blurred and the input value is invalid\n\t\t */\n\t\t'NOW_INPUT_PHONE#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user selects a country code from the dropdown\n\t\t * or updates the main phone number input value.\n\t\t * Payload contains the concatenation of the country code and phone number.\n\t\t * Set the `manage-value` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: string}}\n\t\t * @uib.description Dispatched when the field is blurred and the input value is valid\n\t\t */\n\t\t'NOW_INPUT_PHONE#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user enters data in the field by typing or\n\t\t * pasting text. The system does not validate the value or update\n\t\t * the `value` property. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `data`: String. Value entered in the field that caused the event to fire.\n\t\t * - `fieldValue`: String. Current value of the field when the event fired.\n\t\t *\n\t\t * @type {{name: string, data: string, fieldValue: string}}\n\t\t * @uib.description Dispatched when the user enters data in the input field by typing or pasting text\n\t\t */\n\t\t'NOW_INPUT_PHONE#INPUT': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tdata: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tactionHandlers: {\n\t\t'NOW_DROPDOWN_CUSTOM_TARGET#SELECTED_ITEMS_SET': ({\n\t\t\taction,\n\t\t\tupdateProperties,\n\t\t\tdispatch,\n\t\t}) => {\n\t\t\tupdateProperties({selectedCountryCode: action.payload.value[0]});\n\t\t\tdispatch(({properties}) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_INPUT_PHONE#COUNTRY_CODE_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname: properties.name,\n\t\t\t\t\t\tvalue: action.payload.value[0],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst fullNumber = action.payload.value[0] + '-' + properties.number;\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_INPUT_PHONE#VALUE_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname: properties.name,\n\t\t\t\t\t\tvalue: fullNumber,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t'NOW_INPUT#INVALID_SET': makeRedispatchEffect(\n\t\t\t'NOW_INPUT_PHONE#INVALID_SET',\n\t\t),\n\t\t'NOW_INPUT#INPUT': makeRedispatchEffect('NOW_INPUT_PHONE#INPUT'),\n\t\t'NOW_INPUT#VALUE_SET': ({action, dispatch}) => {\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst fullNumber =\n\t\t\t\t\tproperties.selectedCountryCode + '-' + action.payload.value;\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_INPUT_PHONE#VALUE_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname: properties.name,\n\t\t\t\t\t\tvalue: fullNumber,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\tconst focusTarget = host.shadowRoot.querySelector('now-input');\n\n\t\t\t\t\tif (focusTarget) {\n\t\t\t\t\t\tfocusTarget.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n\tstyles,\n\tview,\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-input-url.scss';\nimport '@servicenow/now-button';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {t} from 'sn-translate';\nimport {\n\tgetFormFieldMessageIds,\n\trenderFormFieldMessages,\n\trenderFormFieldLabel,\n\trenderLabelEnd,\n\tgetAriaDescribedByList,\n} from './form-field';\nimport {handleFocus, handlePlaceholderTooltipVisibility} from './utils/helper';\nimport {messagesSchema} from './schemas/messages-schema';\nimport {actionTypes} from '@servicenow/ui-core';\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_TREE_RENDERED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\nimport {\n\tfilterAriaAttributes,\n\tsanitizeHref,\n} from '@servicenow/library-enhanced-utils';\nimport {\n\tconfigAriaLabelRoleSchema,\n\tconfigAriaLabelSchema,\n} from '@servicenow/library-schemas';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport {fieldLayoutSchema} from './schemas/field-layout-schema';\nimport {getColumnStyles} from '@servicenow/library-enhanced-utils';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\n\nconst handleInput = (e, dispatch, state, updateState) => {\n\tconst fieldValue = e.target.value;\n\tconst data = e.data;\n\tconst {placeholderOverflow} = state;\n\tif (placeholderOverflow) {\n\t\thandlePlaceholderTooltipVisibility(e, dispatch, state, updateState);\n\t}\n\tdispatch(({properties: {name}}) => {\n\t\treturn {type: 'NOW_INPUT_URL#INPUT', payload: {name, data, fieldValue}};\n\t});\n};\n\nconst announceMessage = (label, content, dispatch) => {\n\tconst announcement = label + ' ' + content.content;\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announcement,\n\t\ttype: 'polite',\n\t});\n};\n\nconst handleInputBlur = (e, disabled, readonly, updateState, dispatch) => {\n\tif (disabled || readonly) {\n\t\treturn;\n\t}\n\tconst {valid} = e.target.validity;\n\tconst {name, value} = e.target;\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_INPUT_URL#INVALID_SET',\n\t\t\tpayload: {name, value: !valid, fieldValue: value},\n\t\t};\n\t});\n\tupdateState({hasFocus: false, restoreFocus: valid});\n\tupdateState(({properties}) => {\n\t\treturn {\n\t\t\tpath: 'editing',\n\t\t\toperation: 'set',\n\t\t\tvalue: false,\n\t\t\tshouldUpdate: !properties.invalid,\n\t\t};\n\t});\n\tdispatch(({properties}) => {\n\t\tconst {disabled, readonly, value: previousValue, invalid} = properties;\n\t\treturn {\n\t\t\ttype: 'NOW_INPUT_URL#VALUE_SET',\n\t\t\tpayload: {name, value},\n\t\t\tshouldDispatch:\n\t\t\t\t!disabled && !readonly && !invalid && value !== previousValue,\n\t\t};\n\t});\n};\n\nconst handleEditButtonClick = (e, disabled, readonly, updateState) => {\n\tif (disabled || readonly) {\n\t\treturn;\n\t}\n\tupdateState({editing: true, restoreFocus: true, shouldRender: true});\n};\n\nconst _renderTextLink = (\n\tlabel,\n\tvalue,\n\tdisabled,\n\tdispatch,\n\tformFieldMessageIds,\n\tconfigAria,\n) => {\n\tif (!value) return;\n\n\tconst describedByItems = formFieldMessageIds\n\t\t? ['linkLabel'].concat(formFieldMessageIds.split(' ')).join(' ')\n\t\t: 'linkLabel';\n\tif (!disabled) {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<a\n\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttype: 'NOW_TEXT_LINK#CLICKED',\n\t\t\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t\thref={sanitizeHref(value)}\n\t\t\t\t\tclassName=\"now-input-url-text-link now-text-link -primary show-underline\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\taria-label={`${label} ${value}`}\n\t\t\t\t\t{...filterAriaAttributes(configAria, 'link')}\n\t\t\t\t\taria-describedby={describedByItems}\n\t\t\t\t>\n\t\t\t\t\t{value}\n\t\t\t\t</a>\n\t\t\t\t<span id=\"linkLabel\" className=\"now-a11y-label\">\n\t\t\t\t\t{t('Link opens in new window or tab')}\n\t\t\t\t</span>\n\t\t\t</Fragment>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t// why is it like this? https://www.scottohara.me/blog/2021/05/28/disabled-links.html\n\t\t\t<a\n\t\t\t\tclassName=\"now-input-url-text-link\"\n\t\t\t\trole=\"link\"\n\t\t\t\taria-label={`${label} ${value}`}\n\t\t\t\t{...filterAriaAttributes(configAria, 'link')}\n\t\t\t\taria-disabled=\"true\"\n\t\t\t\taria-describedby={describedByItems}\n\t\t\t>\n\t\t\t\t{value}\n\t\t\t</a>\n\t\t);\n\t}\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {\n\t\tsize,\n\t\tdisabled,\n\t\thelperContent,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\tlabel,\n\t\tmaxlength,\n\t\tmessages,\n\t\tminlength,\n\t\tname,\n\t\toptional,\n\t\tpattern,\n\t\tplaceholder,\n\t\treadonly,\n\t\trequired,\n\t\tvalue = '',\n\t\tconfigAria,\n\t\tnowId,\n\t\talign,\n\t\tfieldLayout: {layout, columns},\n\t\twrapLabel,\n\t} = state.properties;\n\tconst {editing, hasFocus, hasHover, placeholderOverflow} = state;\n\tconst renderAsElement = !editing && value ? 'span' : 'label';\n\tconst editLabel = t({\n\t\tcode: 'now-input-url-edit-button-label',\n\t\tmessage: 'Edit',\n\t\tcomment: 'Verb. Label for action button to edit the url field.',\n\t});\n\n\treturn (\n\t\t<div\n\t\t\tstyle={\n\t\t\t\tlayout === 'horizontal' ? {...getColumnStyles(columns)} : undefined\n\t\t\t}\n\t\t\tclass={{\n\t\t\t\t'now-input': true,\n\t\t\t\t'now-form-field-layout': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t\t[`-${layout}`]: layout,\n\t\t\t\t'will-wrap': wrapLabel,\n\t\t\t}}\n\t\t>\n\t\t\t{renderFormFieldLabel(\n\t\t\t\tnowId,\n\t\t\t\tinvalid,\n\t\t\t\trequired,\n\t\t\t\toptional,\n\t\t\t\tlabel,\n\t\t\t\thelperContent,\n\t\t\t\thideRequiredIndicator,\n\t\t\t\trenderAsElement,\n\t\t\t\tlayout,\n\t\t\t\tfalse,\n\t\t\t\twrapLabel,\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-input-field': true,\n\t\t\t\t\t'now-form-field': true,\n\t\t\t\t\t'is-url': true,\n\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t'is-readonly': readonly && !value,\n\t\t\t\t\t'has-focus': hasFocus && !readonly,\n\t\t\t\t\t'has-hover': hasHover,\n\t\t\t\t\t'is-hidden': !editing && value,\n\t\t\t\t\t['-' + align]: align,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tid={`form-field-${nowId}`}\n\t\t\t\t\tclassName=\"now-input-native\"\n\t\t\t\t\taria-describedby={getAriaDescribedByList({\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\toptional,\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\tmessages,\n\t\t\t\t\t\tlayout,\n\t\t\t\t\t})}\n\t\t\t\t\taria-required={required ? 'true' : 'false'}\n\t\t\t\t\taria-invalid={invalid ? 'true' : 'false'}\n\t\t\t\t\tdata-tooltip={placeholder}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tmaxlength={maxlength}\n\t\t\t\t\tminlength={minlength}\n\t\t\t\t\tname={name}\n\t\t\t\t\tpattern={pattern}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\treadonly={readonly}\n\t\t\t\t\trequired={required}\n\t\t\t\t\ttype={readonly && !value ? 'text' : 'url'}\n\t\t\t\t\tvalue={!value && readonly ? '—' : value}\n\t\t\t\t\taria-label={!value && readonly ? '' : undefined}\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\ton-mouseenter={(e) => {\n\t\t\t\t\t\tupdateState({hasHover: true});\n\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-mouseleave={(e) => {\n\t\t\t\t\t\tupdateState({hasHover: false});\n\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-focusin={(e) => {\n\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-focusout={(e) => {\n\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-focus={() => updateState({hasFocus: true})}\n\t\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\t\tif (e.key === 'Enter' || e.key === 'Escape') {\n\t\t\t\t\t\t\te.target.blur();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-blur={(e) =>\n\t\t\t\t\t\thandleInputBlur(e, disabled, readonly, updateState, dispatch)\n\t\t\t\t\t}\n\t\t\t\t\ton-input={(e) => handleInput(e, dispatch, state, updateState)}\n\t\t\t\t\t{...filterAriaAttributes(configAria, 'input')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-input-field': true,\n\t\t\t\t\t'now-input-url': true,\n\t\t\t\t\t'now-form-field': true,\n\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t'is-readonly': readonly,\n\t\t\t\t\t'is-hidden': editing || !value,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{_renderTextLink(\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tgetFormFieldMessageIds(nowId, messages),\n\t\t\t\t\tconfigAria,\n\t\t\t\t)}\n\t\t\t\t{!readonly ? (\n\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName=\"now-input-url-button\"\n\t\t\t\t\t\ticon=\"pencil-outline\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\ttooltip-content={editLabel}\n\t\t\t\t\t\tconfig-aria={\n\t\t\t\t\t\t\tconfigAria?.button\n\t\t\t\t\t\t\t\t? configAria\n\t\t\t\t\t\t\t\t: {button: {'aria-label': editLabel}}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbare\n\t\t\t\t\t\thide-padding={size === 'sm'}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\thandleEditButtonClick(e, disabled, readonly, updateState);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t</div>\n\t\t\t{layout === 'horizontal' && renderLabelEnd()}\n\t\t\t<div className=\"now-form-field-messages\">\n\t\t\t\t{renderFormFieldMessages(nowId, messages)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * Accepts user input in the form of URLs.\n *\n * ```jsx\n * <now-input-url />\n * ```\n *\n * @seismicElement now-input-url\n * @summary Accepts hyperlinks as input for entering and editing web addresses.\n * @uib.label Input URL\n * @uib.icon input-url\n * @uib.description Accepts URLs as input for entering and editing web addresses.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, disabled, readonly, value, manageValue, name, placeholder, minlength, maxlength, label, wrapLabel, required, hideRequiredIndicator, optional, helperContent, invalid, manageInvalid, pattern, messages, configAria, align, fieldLayout, landmark\n * @uib.layout.value.children value, manageValue, name, placeholder, minlength, maxlength, align\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.label.children label, wrapLabel, required, hideRequiredIndicator, optional, helperContent\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, pattern, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.accessibility.children configAria, landmark\n * @uib.actions NOW_INPUT_URL#INVALID_SET, NOW_INPUT_URL#VALUE_SET, NOW_INPUT_URL#INPUT\n */\ncreateEnhancedElement('now-input-url', {\n\tproperties: {\n\t\t/**\n\t\t * Alignment of the text within the field.\n\t\t * @type {('start'|'center'|'end')}\n\t\t * @uib.label Text align\n\t\t * @uib.description Alignment of the text within the field.\n\t\t */\n\t\talign: {schema: {type: 'string', enum: ['start', 'center', 'end']}},\n\t\t/**\n\t\t * When true, the user cannot interact with the field\n\t\t * or change its value and the field appears greyed out.\n\t\t * @type {boolean}\n\t\t * @uib.description Prevents the user from interacting with the field. The field appears grayed out.\n\t\t */\n\t\tdisabled: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If set, an iconic button with a popover appears next to the field\n\t\t * label to display additional hint text to the user, such as\n\t\t * URL requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.label Helper Content\n\t\t * @uib.fieldType string\n\t\t * @uib.description If set, an iconic button with a popover appears next to the field label for displaying additional hint text to the user, such as password requirements or other instructions for completing the field. Use plain text to allow translation.\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * When true, the required indicator is visually hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Required Indicator\n\t\t * @uib.description Hides the required indicator. Use this for forms where most fields are required, along with the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the field value is invalid,\n\t\t * which is visually reflected in the field display.\n\t\t * @type {boolean}\n\t\t * @uib.description If set, the field appears invalid, indicating incorrect input.\n\t\t */\n\t\tinvalid: {manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_INPUT_URL#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * User-visible label for the field.\n\t\t * @type {string}\n\t\t * @uib.description Field label to tell users what to enter in the field.\n\t\t * @uib.defaultValue Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Maximum number of characters that the user can enter in the field.\n\t\t * @type {number}\n\t\t * @uib.label Max. characters\n\t\t * @uib.fieldType number\n\t\t * @uib.description Maximum number of characters that the user can enter in the field.\n\t\t */\n\t\tmaxlength: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Array of inline alert messages that display below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that display below the field.\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t\tschema: messagesSchema,\n\t\t},\n\t\t/**\n\t\t * Minimum number of characters that the user can enter in the field.\n\t\t * @type {number}\n\t\t * @uib.label Min. characters\n\t\t * @uib.fieldType number\n\t\t * @uib.description Minimum number of characters that the user can enter in the field.\n\t\t */\n\t\tminlength: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Name of the field control. Dispatched along with the field value\n\t\t * when the user interacts with the field.\n\t\t * @type {string}\n\t\t * @uib.label Identifier\n\t\t * @uib.description Reference name of the field control.\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the field is optional and does not need to be completed\n\t\t * before submitting the form. Adds a visual indicator.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to indicate that the user does not have to enter a value in the input field before proceeding.\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * A regular expression against which the user input is validated.\n\t\t * @type {string}\n\t\t * @uib.label Validation pattern\n\t\t * @uib.description A regular expression to validate user input against.\n\t\t * @uib.fieldType string\n\t\t * @uib.typeMetadata.emptyStateBehavior NULL\n\t\t */\n\t\tpattern: {schema: {type: ['string', 'null', 'boolean']}},\n\t\t/**\n\t\t * Hint text displayed in the input when the user has not yet entered a\n\t\t * value.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder text\n\t\t * @uib.description Placeholder text displayed in the input when the user has not yet entered a value. This text should hint to the user what input is expected.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field.\n\t\t * @type {boolean}\n\t\t * @uib.label Read-only\n\t\t * @uib.description Set to prevent the user from modifying the value of the input field. The input field is not disabled in this setting.\n\t\t */\n\t\treadonly: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user must enter a value in the\n\t\t * input field before they can submit the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to indicate that the user must enter a value in the input field before proceeding.\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the input size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * The value of the input field.\n\t\t * @type {string}\n\t\t * @uib.description The value of the input field. Unless the input field has pre-populated data, leave this property empty.\n\t\t * @uib.translatable true\n\t\t */\n\t\tvalue: {manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `value` property.\n\t\t * An action with type `NOW_INPUT_URL#VALUE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the value property. Use the value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValue: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference specific HTML elements within the\n\t\t * now-input-url. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'input' key corresponds to the native input when the field is in edit mode.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#input for\n\t\t * properties and accepted values.\n\t\t * The 'link' key corresponds to the link tag when the field is not in edit mode.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#link for\n\t\t * properties and accepted values.\n\t\t * The 'button' key corresponds to the button that toggles edit mode.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ input: { 'aria-*': string, role: string  }, link: { 'aria-*': string, role: string  }, button: { 'aria-*': string, role: string  }}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tinput: configAriaLabelRoleSchema,\n\t\t\t\t\tlink: configAriaLabelSchema,\n\t\t\t\t\tbutton: configAriaLabelSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slotted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this input\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field.\n\t\t * Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: Boolean. Value of the `invalid` property, which is based on\n\t\t *   the values of the `required` and `pattern` properties.\n\t\t * - `fieldValue`: String. Value entered in the field.\n\t\t *\n\t\t * Set the `manage-invalid` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: boolean, fieldValue: string}}\n\t\t * @uib.description Dispatched when the user moves focus away from the field and the value is invalid\n\t\t */\n\t\t'NOW_INPUT_URL#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field\n\t\t * and the value is valid. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: String. Value entered in the field.\n\t\t *\n\t\t * Set the `manage-value` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: string}}\n\t\t * @uib.description Dispatched when the user moves focus away from the field and the value is valid\n\t\t */\n\t\t'NOW_INPUT_URL#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user enters data in the field by typing or\n\t\t * pasting text. The system does not validate the value or update\n\t\t * the `value` property. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `data`: String. Value entered in the field that caused the event to fire.\n\t\t * - `fieldValue`: String. Current value of the field when the event fired.\n\t\t * @type {{name: string, data: string, fieldValue: string}}\n\t\t * @uib.description Dispatched when the user enters data in the field by typing or pasting text\n\t\t */\n\t\t'NOW_INPUT_URL#INPUT': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tdata: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\tediting: false,\n\t\trestoreFocus: false,\n\t\tplaceholderTooltipDisplay: false,\n\t},\n\n\tslots: {\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY]: ({host, properties, updateState}) => {\n\t\t\tconst inputField = host.shadowRoot.querySelector('.now-input-native');\n\t\t\tif (properties.placeholder) {\n\t\t\t\tconst tempValue = inputField.value;\n\t\t\t\tinputField.value = inputField.placeholder;\n\t\t\t\tif (inputField.scrollWidth > inputField.clientWidth) {\n\t\t\t\t\tupdateState({placeholderOverflow: true});\n\t\t\t\t}\n\t\t\t\tinputField.value = tempValue;\n\t\t\t}\n\t\t\tif (properties.invalid) {\n\t\t\t\tupdateState({editing: true});\n\t\t\t}\n\t\t},\n\n\t\t[COMPONENT_TREE_RENDERED]: ({state, host, updateState}) => {\n\t\t\tif (state.restoreFocus) {\n\t\t\t\tif (state.editing) {\n\t\t\t\t\tconst input = host.shadowRoot.querySelector('input');\n\t\t\t\t\tinput && input.focus();\n\t\t\t\t} else {\n\t\t\t\t\tconst textLink = host.shadowRoot.querySelector('now-text-link');\n\t\t\t\t\ttextLink && textLink.focus();\n\t\t\t\t}\n\t\t\t\tupdateState({restoreFocus: false, shouldRender: false});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {name, value, previousValue} = action.payload;\n\t\t\tif (name === 'messages') {\n\t\t\t\tconst messagesLength = value.length;\n\t\t\t\tconst previousMessagesLength = previousValue ? previousValue.length : 0;\n\t\t\t\tif (messagesLength > previousMessagesLength) {\n\t\t\t\t\tfor (let i = previousMessagesLength; i < messagesLength; i++) {\n\t\t\t\t\t\tannounceMessage(properties.label, value[i], dispatch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (name === 'invalid' && value) {\n\t\t\t\tupdateState({editing: true});\n\t\t\t}\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\thandleFocus(host);\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{behavior: truncationBehavior},\n\t\t{behavior: tooltipBehavior},\n\t],\n\tstyles,\n\tview,\n});\n","import './now-input';\nimport './now-input-password';\nimport './now-input-phone';\nimport './now-input-url';\n\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nexport {\n\tgetFormFieldMessageIds,\n\trenderFormFieldMessages,\n\trenderFormFieldLabel,\n\trenderLabelEnd,\n\tgetAriaDescribedByList,\n} from './form-field';\nexport {messagesSchema} from './schemas/messages-schema';\nexport {fieldLayoutSchema} from './schemas/field-layout-schema';\n","const SCROLL_CONTAINER_CLASS = 'scroll-container';\nconst ROW_DEFINITIONS_PROP = 'rowDefinitions';\n\nconst SHADE_ALTERNATE_ROWS_USER_PREFERENCE_KEY = 'table.highlighting';\nconst USE_SHADE_ALTERNATE_ROWS_USER_PREFERENCE =\n\t'useShadeAlternateRowsUserPref';\nconst SHADE_ALTERNATE_ROWS_ON = 'shadeAlternateRowsOn';\nconst SHADE_ALTERNATE_ROWS_OFF = 'shadeAlternateRowsOff';\nconst SHADE_ALTERNATE_ROWS_ENUMS = [\n\tUSE_SHADE_ALTERNATE_ROWS_USER_PREFERENCE,\n\tSHADE_ALTERNATE_ROWS_ON,\n\tSHADE_ALTERNATE_ROWS_OFF,\n];\n\nconst WRAP_CELL_CONTENT_USER_PREFERENCE_KEY = 'table.wrap';\nconst USE_LINE_BREAKS_USER_PREFERENCE = 'useLineBreaksUserPref';\nconst WRAP_ON = 'wrapOn';\nconst WRAP_OFF = 'wrapOff';\nconst WRAP_CELL_CONTENT_ENUMS = [\n\tUSE_LINE_BREAKS_USER_PREFERENCE,\n\tWRAP_ON,\n\tWRAP_OFF,\n];\n\nconst COLUMN_FILTERING_USER_PREFERENCE_KEY = 'glide.ui.list_header_search.open';\n\nconst LIST_ICON_CACHE = 'list-icon-cache';\n\nconst USER_PREF_UPDATED = 'USER_PREF_UPDATED';\n\nconst LAYOUT_OPTIONS = {\n\tLIST: 'list',\n\tGALLERY: 'gallery',\n};\n\n/** @type {\"sm\"} */\nconst SMALL = 'sm';\n\n/** @type {\"md\"} */\nconst MEDIUM = 'md';\n\n/** @type {\"lg\"} */\nconst LARGE = 'lg';\n\nconst ICON_SIZES = {\n\tSMALL,\n\tMEDIUM,\n\tLARGE,\n};\n\nconst ICON_NAMES = {\n\tTRIANGLE_EXCLAMATION_OUTLINE: 'triangle-exclamation-outline',\n\tDRAG_DOTS_FILL: 'drag-dots-fill',\n\tCHEVRON_END_FILL: 'chevron-end-fill',\n\tELLIPSIS_V_FILL: 'ellipsis-v-fill',\n\tNEW_OUTLINE: 'new-outline',\n\tMAGIC_OUTLINE: 'magic-outline',\n\tOPEN_LINK_OUTLINE: 'open-link-outline',\n\tPENCIL_OUTLINE: 'pencil-outline',\n\tCIRCLE_CHECK_OUTLINE: 'circle-check-outline',\n\tCIRCLE_CLOSE_OUTLINE: 'circle-close-outline',\n\tSORT_DESCENDING_FILL: 'sort-descending-fill',\n\tSORT_ASCENDING_FILL: 'sort-ascending-fill',\n};\n\nconst LIST_ICON_SET = [\n\t{ name: ICON_NAMES.TRIANGLE_EXCLAMATION_OUTLINE, size: ICON_SIZES.SMALL },\n\t{ name: ICON_NAMES.DRAG_DOTS_FILL, size: ICON_SIZES.SMALL },\n\t{ name: ICON_NAMES.CHEVRON_END_FILL, size: ICON_SIZES.MEDIUM },\n\t{ name: ICON_NAMES.ELLIPSIS_V_FILL, size: ICON_SIZES.SMALL },\n\t{ name: ICON_NAMES.NEW_OUTLINE, size: ICON_SIZES.SMALL },\n\t{ name: ICON_NAMES.MAGIC_OUTLINE, size: ICON_SIZES.SMALL },\n\t{ name: ICON_NAMES.OPEN_LINK_OUTLINE, size: ICON_SIZES.MEDIUM },\n\t{ name: ICON_NAMES.PENCIL_OUTLINE, size: ICON_SIZES.SMALL },\n\t{ name: ICON_NAMES.CIRCLE_CHECK_OUTLINE, size: ICON_SIZES.MEDIUM },\n\t{ name: ICON_NAMES.CIRCLE_CLOSE_OUTLINE, size: ICON_SIZES.MEDIUM },\n\t{ name: ICON_NAMES.SORT_ASCENDING_FILL, size: ICON_SIZES.SMALL },\n\t{ name: ICON_NAMES.SORT_DESCENDING_FILL, size: ICON_SIZES.SMALL },\n];\n\nmodule.exports = {\n\tSCROLL_CONTAINER_CLASS,\n\tROW_DEFINITIONS_PROP,\n\tUSE_SHADE_ALTERNATE_ROWS_USER_PREFERENCE,\n\tSHADE_ALTERNATE_ROWS_ON,\n\tSHADE_ALTERNATE_ROWS_OFF,\n\tSHADE_ALTERNATE_ROWS_ENUMS,\n\tSHADE_ALTERNATE_ROWS_USER_PREFERENCE_KEY,\n\tUSE_LINE_BREAKS_USER_PREFERENCE,\n\tCOLUMN_FILTERING_USER_PREFERENCE_KEY,\n\tWRAP_ON,\n\tWRAP_OFF,\n\tWRAP_CELL_CONTENT_ENUMS,\n\tWRAP_CELL_CONTENT_USER_PREFERENCE_KEY,\n\tLIST_ICON_CACHE,\n\tLIST_ICON_SET,\n\tICON_SIZES,\n\tICON_NAMES,\n\tUSER_PREF_UPDATED,\n\tLAYOUT_OPTIONS,\n};\n","exports.TABLE_DEFAULT_ICON_SIZE = 'md';\nexports.WRAP_CELL_CONTENT_USER_PREFERENCE = 'table.wrap';\n\nexports.ICON_SIZE_SMALL = 'sm';\nexports.ICON_SIZE_MEDIUM = 'md';\n\nexports.GROUP_ACTION_CLICKED = 'GROUP_ACTION_CLICKED';\nexports.NOW_LIST_BRIDGE_ACTION = 'NOW_LIST#BRIDGE_ACTION';\n","const { TABLE_DEFAULT_ICON_SIZE } = require('../table/constants.js');\n\nexports.ACTIONABLE_MESSAGE_ICON_SIZE = TABLE_DEFAULT_ICON_SIZE;\n\nconst ACTIONABLE_MESSAGE_STATUS_CRITICAL = 'critical';\nconst ACTIONABLE_MESSAGE_STATUS_HIGH = 'high';\nconst ACTIONABLE_MESSAGE_STATUS_MODERATE = 'moderate';\nconst ACTIONABLE_MESSAGE_STATUS_WARNING = 'warning';\nconst ACTIONABLE_MESSAGE_STATUS_INFO = 'info';\nconst ACTIONABLE_MESSAGE_STATUS_POSITIVE = 'positive';\nconst ACTIONABLE_MESSAGE_STATUS_LOW = 'low';\n\nexports.ACTIONABLE_MESSAGE_BUTTON_CLASS = 'actionable-message-button';\n\nexports.ACTIONABLE_MESSAGE_STATUS_DEFAULT = ACTIONABLE_MESSAGE_STATUS_INFO;\n\n/** @type {Array<string>} */\nexports.ACTIONABLE_MESSAGE_STATUS_ENUMS = [\n\tACTIONABLE_MESSAGE_STATUS_CRITICAL,\n\tACTIONABLE_MESSAGE_STATUS_HIGH,\n\tACTIONABLE_MESSAGE_STATUS_MODERATE,\n\tACTIONABLE_MESSAGE_STATUS_WARNING,\n\tACTIONABLE_MESSAGE_STATUS_INFO,\n\tACTIONABLE_MESSAGE_STATUS_POSITIVE,\n\tACTIONABLE_MESSAGE_STATUS_LOW,\n];\n\n/** @type {object} */\nexports.ACTIONABLE_MESSAGE_ICONS_DICT = {\n\t[ACTIONABLE_MESSAGE_STATUS_CRITICAL]: 'triangle-exclamation-outline',\n\t[ACTIONABLE_MESSAGE_STATUS_HIGH]: 'triangle-exclamation-outline',\n\t[ACTIONABLE_MESSAGE_STATUS_MODERATE]: 'circle-info-outline',\n\t[ACTIONABLE_MESSAGE_STATUS_WARNING]: 'circle-exclamation-outline',\n\t[ACTIONABLE_MESSAGE_STATUS_INFO]: 'circle-info-outline',\n\t[ACTIONABLE_MESSAGE_STATUS_POSITIVE]: 'circle-check-outline',\n\t[ACTIONABLE_MESSAGE_STATUS_LOW]: 'circle-info-outline',\n};\n","exports.CURRENCY_DEFAULT = 'USD';\n//Default locale if browser locale can't be fetched\nexports.CURRENCY_LOCALE_DEFAULT = 'en-US';\nexports.CURRENCY_VALUE_DEFAULT = 0;\n","exports.DATE_TIME_FORMAT_DEFAULT = 'yyyy-MM-dd THH:mm:ss.SSS XXX';\nexports.DEFAULT_DATE_FORMAT = 'yyyy-MM-dd';\n\nexports.DATE_EDITOR_VARIANT_SHORT = 'date';\nexports.DATE_EDITOR_VARIANT_LONG = 'date-time';\n\nexports.TIME_AGO_DISPLAY_NONE = 'none';\nexports.TIME_AGO_DISPLAY_UNDER_MAIN_VALUE = 'underMainValue';\nexports.TIME_AGO_DISPLAY_AS_MAIN_VALUE = 'asMainValue';\n\nexports.TIME_AGO_DISPLAY_ENUMS = [\n\texports.TIME_AGO_DISPLAY_NONE,\n\texports.TIME_AGO_DISPLAY_UNDER_MAIN_VALUE,\n\texports.TIME_AGO_DISPLAY_AS_MAIN_VALUE,\n];\n\nexports.SECONDS_FORMAT = ':ss';\nexports.SECONDS_FORMAT_WITH_DOTS = '.ss';\n\nexports.DATE_TIME_AGO_FORMAT = 'glide.ui.date_format';\nexports.SHORT_DATE_TIME_FORMAT = 'glide.ui.short_date_format';\n","/** @type {string} */\nexports.EMPTY_CELL_VALUE = '';\nexports.MAX_CHARACTERS_DEFAULT = 4000;\nexports.HIGHLIGHTED_VALUE = 'highlightedValue';\n\n// classnames\nexports.SPECIAL_COLUMN_CELL = 'special-column-cell';\nexports.SPECIAL_COLUMN_CELL_CONTENT = 'special-column-cell-content';\nexports.DATA_COLUMN_CLASS = 'data-column';\nexports.ROW_CELL_CLASS = 'row-cell';\nexports.CELL_CONTENT_CLASS = 'cell-content';\n\nexports.RECENTLY_UPDATED_ROWS_ICON_NAME = 'new-outline';\nexports.RECENTLY_UPDATED_ROWS_ICON_SIZE = 'sm';\n","const { TABLE_DEFAULT_ICON_SIZE } = require('../../table/constants');\n\nexports.ICON_CELL_ICON_SIZE = TABLE_DEFAULT_ICON_SIZE;\n\nexports.ICON_CELL_COLOR_DEFAULT = '';\nexports.ICON_CELL_COLOR_CRITICAL = 'critical';\nexports.ICON_CELL_COLOR_HIGH = 'high';\nexports.ICON_CELL_COLOR_MODERATE = 'moderate';\nexports.ICON_CELL_COLOR_WARNING = 'warning';\nexports.ICON_CELL_COLOR_INFO = 'info';\nexports.ICON_CELL_COLOR_POSITIVE = 'positive';\nexports.ICON_CELL_COLOR_LOW = 'low';\n\nexports.ICON_CELL_COLORS_ENUMS = [\n\texports.ICON_CELL_COLOR_DEFAULT,\n\texports.ICON_CELL_COLOR_CRITICAL,\n\texports.ICON_CELL_COLOR_HIGH,\n\texports.ICON_CELL_COLOR_MODERATE,\n\texports.ICON_CELL_COLOR_WARNING,\n\texports.ICON_CELL_COLOR_INFO,\n\texports.ICON_CELL_COLOR_POSITIVE,\n\texports.ICON_CELL_COLOR_LOW,\n];\n","exports.NUMBER_DEFAULT_VALUE = 0;\n\nexports.NUMBER_FORMAT_INTEGER = 'integer';\nexports.NUMBER_FORMAT_PERCENT = 'percent';\nexports.NUMBER_FORMAT_DECIMAL = 'decimal';\nexports.NUMBER_FORMAT_LONG_INT = 'longint';\nexports.NUMBER_DEFAULT_LOCALE = 'en-US';\nexports.NUMBER_FORMAT_ENUMS = [\n\texports.NUMBER_FORMAT_INTEGER,\n\texports.NUMBER_FORMAT_PERCENT,\n\texports.NUMBER_FORMAT_DECIMAL,\n];\n\nexports.DECIMAL_PLACES_DEFAULT = 2;\n","exports.MAX_PILL_COUNT_FOR_GALLERY = 2;\nexports.DEFAULT_PILL_SIZE = 'sm';\nexports.XS_PILL_SIZE = 'xs';\nexports.MAX_PILL_LIMIT_DEFAULT = 3;\nexports.MAX_MAX_PILL_LIMIT = 10;\n","const { TABLE_DEFAULT_ICON_SIZE } = require('../../table/constants');\n\nexports.URL_ICON_SIZE = TABLE_DEFAULT_ICON_SIZE;\nexports.URL_ICON = 'open-link-outline';\nexports.OPENS_IN_NEW_DEFAULT = false;\n","import { t } from 'sn-translate';\n\nexport const OPENS_IN_CURRENT_TAB_TOOLTIP = t('Opens URL in the current tab');\nexport const OPENS_IN_NEW_TOOLTIP = t('Opens URL in a new tab/window');\n","exports.TABLE_DEFAULT_ICON_SIZE = 'md';\nexports.WRAP_CELL_CONTENT_USER_PREFERENCE = 'table.wrap';\n\nexports.ICON_SIZE_SMALL = 'sm';\nexports.ICON_SIZE_MEDIUM = 'md';\n","exports.PERSON_CELL_ICON_SIZE = 'sm';\n\nexports.NOW_LIST_CELL_PERSON_CLICKED = 'NOW_LIST#CELL_PERSON_CLICKED';\n\nexports.PERSON_DISPLAY_TYPE_AVATAR = 'avatar';\nexports.PERSON_DISPLAY_TYPE_NAME = 'name';\nexports.PERSON_DISPLAY_TYPE_BOTH = 'both';\nexports.PERSON_DISPLAY_TYPE_ENUMS = [\n\texports.PERSON_DISPLAY_TYPE_AVATAR,\n\texports.PERSON_DISPLAY_TYPE_NAME,\n\texports.PERSON_DISPLAY_TYPE_BOTH,\n];\nexports.PERSON_DISPLAY_TYPE_DEFAULT = exports.PERSON_DISPLAY_TYPE_BOTH;\n","exports.DEFAULT_PILL_SIZE = 'sm';\nexports.MAX_PILL_LIMIT_DEFAULT = 3;\nexports.MAX_MAX_PILL_LIMIT = 10;\n","/** @type {string} */\nexports.EMPTY_CELL_VALUE = '';\nexports.MAX_CHARACTERS_DEFAULT = 4000;\nexports.HIGHLIGHTED_VALUE = 'highlightedValue';\nexports.PRESERVE_WHITESPACE_SYS_PROP = 'glide.lists.preserve_whitespace';\n\n// classnames\nexports.SPECIAL_COLUMN_CELL = 'special-column-cell';\nexports.SPECIAL_COLUMN_CELL_CONTENT = 'special-column-cell-content';\nexports.DATA_COLUMN_CLASS = 'data-column';\nexports.ROW_CELL_CLASS = 'row-cell';\nexports.CELL_CONTENT_CLASS = 'cell-content';\n\nexports.RECENTLY_UPDATED_ROWS_ICON_NAME = 'new-outline';\nexports.RECENTLY_UPDATED_ROWS_ICON_SIZE = 'sm';\n","exports.TEXT_ALIGNMENT_DEFAULT = 'default';\nexports.TEXT_ALIGNMENT_CENTER = 'center';\nexports.TEXT_ALIGNMENT_INVERSE = 'inverse';\n\nexports.TEXT_ALIGNMENT_ENUMS = [\n\texports.TEXT_ALIGNMENT_DEFAULT,\n\texports.TEXT_ALIGNMENT_CENTER,\n\texports.TEXT_ALIGNMENT_INVERSE,\n];\n\nexports.ALIGNMENT_CLASS_PREFIX = 'text-align-';\n\nexports.RELATIVE_TO_TEXT_ALIGNMENT_START = 'textStart';\nexports.RELATIVE_TO_TEXT_ALIGNMENT_END = 'textEnd';\nexports.RELATIVE_TO_TEXT_ALIGNMENT_ENUMS = [\n\texports.RELATIVE_TO_TEXT_ALIGNMENT_START,\n\texports.RELATIVE_TO_TEXT_ALIGNMENT_END,\n];\n","const {\n\tTEXT_ALIGNMENT_DEFAULT,\n\tTEXT_ALIGNMENT_ENUMS,\n} = require('./alignmentTypes/alignmentTypes');\nconst {\n\tCOLUMN_TYPES_ENUMS,\n\tSPECIAL_TYPE_ACTIONS,\n\tSPECIAL_TYPE_SELECTION,\n\tTYPE_STRING,\n\tSPECIAL_TYPE_ROW_DRAG_HANDLE,\n\tSPECIAL_TYPE_GROUP_TOGGLE,\n\tSPECIAL_TYPE_GROUP_BADGE,\n\tSPECIAL_TYPE_PARENT_TOGGLE,\n\tSPECIAL_TYPE_PARENT_BADGE,\n} = require('./columnTypes/columnTypes');\nconst {\n\tnumberTypeProperties,\n\tpercentCompleteTypeProperties,\n\tdateTimeTypeProperties,\n\turlTypeProperties,\n\tpillsTypeProperties,\n\tpersonTypeProperties,\n\tcurrencyTypeProperties,\n\tcustomTypeProperties,\n\theaderIconProperties,\n\tchoiceTypeProperties,\n} = require('./columnTypes/typeSpecificSchemas');\nconst { galleryConfigSchema } = require('./galleryConfig/galleryConfig');\nconst { SORT_ENUMS, SORT_NONE } = require('./sortTypes/sortTypes');\n\nmodule.exports = {\n\tcolumnDefinitionsSchema: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\tcolumnHeaderTextTooltip: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\tcolumnFilteringInfo: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcolumnFilterCustomValueEditorEmittedActions: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t},\n\t\t\tcolumns: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tkey: {\n\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\tpattern: `^(?:(?!:${SPECIAL_TYPE_ACTIONS} | ${SPECIAL_TYPE_SELECTION} | ${SPECIAL_TYPE_ROW_DRAG_HANDLE} | ${SPECIAL_TYPE_GROUP_TOGGLE} | ${SPECIAL_TYPE_GROUP_BADGE} | ${SPECIAL_TYPE_PARENT_TOGGLE} | ${SPECIAL_TYPE_PARENT_BADGE}).)*$`, // disallows configuring a column with unique special keys\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\tenum: COLUMN_TYPES_ENUMS,\n\t\t\t\t\t\t\tdefault: TYPE_STRING,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t},\n\t\t\t\t\t\talignment: {\n\t\t\t\t\t\t\tenum: TEXT_ALIGNMENT_ENUMS,\n\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\tdefault: TEXT_ALIGNMENT_DEFAULT,\n\t\t\t\t\t\t},\n\t\t\t\t\t\theaderCellAlignment: {\n\t\t\t\t\t\t\tenum: TEXT_ALIGNMENT_ENUMS,\n\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\tdefault: TEXT_ALIGNMENT_DEFAULT,\n\t\t\t\t\t\t},\n\t\t\t\t\t\theaderTextDisabled: {\n\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\trenderAsLink: {\n\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcellEditingDisabled: {\n\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\twidth: {\n\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\tpattern: '\\\\d+(px|%)?',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmaxCharacters: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tdefault: 4000,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsortDirection: {\n\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\tdefault: SORT_NONE,\n\t\t\t\t\t\t\tenum: SORT_ENUMS,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfirstDayOfWeek: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tdefault: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t\ticons: {\n\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tstartIcons: {\n\t\t\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\t\tproperties: headerIconProperties,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tmaxItems: 3,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tendIcons: {\n\t\t\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\t\tproperties: headerIconProperties,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tmaxItems: 3,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcolumnFilterConfig: {\n\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tcustomTopText: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\toperators: {\n\t\t\t\t\t\t\t\t\ttype: ['array', null],\n\t\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\trequiresValue: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tselectedOperator: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\ttype: [\n\t\t\t\t\t\t\t\t\t\t'string',\n\t\t\t\t\t\t\t\t\t\t'number',\n\t\t\t\t\t\t\t\t\t\t'boolean',\n\t\t\t\t\t\t\t\t\t\t'array',\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalueEditorCustomComponentTag: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalueEditorCustomComponentDefaultProps: {\n\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\tpatternProperties: {\n\t\t\t\t\t\t\t\t\t\t'[\\\\w\\\\W]*': {\n\t\t\t\t\t\t\t\t\t\t\ttype: [\n\t\t\t\t\t\t\t\t\t\t\t\t'number',\n\t\t\t\t\t\t\t\t\t\t\t\t'string',\n\t\t\t\t\t\t\t\t\t\t\t\t'boolean',\n\t\t\t\t\t\t\t\t\t\t\t\t'object',\n\t\t\t\t\t\t\t\t\t\t\t\t'array',\n\t\t\t\t\t\t\t\t\t\t\t\t'null',\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t// parent columns cannot have column header actions or cell actions\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Parent Column',\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tchildren: {\n\t\t\t\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Leaf Column',\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tcolumnHeaderActions: {\n\t\t\t\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\trequired: ['id', 'label', 'action'],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcellActions: {\n\t\t\t\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\trequired: ['id', 'label', 'action'],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...numberTypeProperties,\n\t\t\t\t\t\t...percentCompleteTypeProperties,\n\t\t\t\t\t\t...dateTimeTypeProperties,\n\t\t\t\t\t\t...urlTypeProperties,\n\t\t\t\t\t\t...personTypeProperties,\n\t\t\t\t\t\t...pillsTypeProperties,\n\t\t\t\t\t\t...currencyTypeProperties,\n\t\t\t\t\t\t...customTypeProperties,\n\t\t\t\t\t\t...choiceTypeProperties,\n\t\t\t\t\t},\n\t\t\t\t\trequired: ['key'],\n\t\t\t\t},\n\t\t\t},\n\t\t\tgalleryConfig: galleryConfigSchema,\n\t\t\trequired: ['columns'],\n\t\t},\n\t},\n};\n","exports.TYPE_BOOLEAN = 'boolean';\nexports.TYPE_CHOICE = 'choice';\nexports.TYPE_CURRENCY = 'currency';\nexports.TYPE_CUSTOM = 'custom';\nexports.TYPE_DATE_TIME = 'dateTime';\nexports.TYPE_ICON = 'icon';\nexports.TYPE_LINK = 'link';\nexports.TYPE_NUMBER = 'number';\nexports.TYPE_PERCENT_COMPLETE = 'percent_complete';\nexports.TYPE_PERSON = 'person';\nexports.TYPE_PILLS = 'pills';\nexports.TYPE_STRING = 'string';\nexports.TYPE_URL = 'url';\nexports.TYPE_HTML = 'html';\nexports.TYPE_IMAGE = 'image';\n\nexports.COLUMN_TYPES_ENUMS = [\n\texports.TYPE_STRING,\n\texports.TYPE_NUMBER,\n\texports.TYPE_BOOLEAN,\n\texports.TYPE_DATE_TIME,\n\texports.TYPE_LINK,\n\texports.TYPE_URL,\n\texports.TYPE_ICON,\n\texports.TYPE_PERSON,\n\texports.TYPE_PILLS,\n\texports.TYPE_CURRENCY,\n\texports.TYPE_CUSTOM,\n\texports.TYPE_CHOICE,\n\texports.TYPE_PERCENT_COMPLETE,\n\texports.TYPE_HTML,\n\texports.TYPE_IMAGE,\n];\n\n// the below column types are unique and are configured differently from data columns\n// there can only be one per list of each\nexports.SPECIAL_TYPE_ROW_DRAG_HANDLE = 'rowDrag';\nexports.SPECIAL_TYPE_GROUP_TOGGLE = 'groupToggle';\nexports.SPECIAL_TYPE_GROUP_BADGE = 'groupBadge';\nexports.SPECIAL_TYPE_ACTIONS = 'rowActions';\nexports.SPECIAL_TYPE_SELECTION = 'selection';\nexports.SPECIAL_TYPE_PARENT_BADGE = 'parentBadge';\nexports.SPECIAL_TYPE_PARENT_TOGGLE = 'parentToggle';\n","const {\n\tCURRENCY_DEFAULT,\n\tCURRENCY_LOCALE_DEFAULT,\n} = require('../../../shared/views/fields/currency/currencyConstants');\nconst {\n\tTIME_AGO_DISPLAY_ENUMS,\n\tTIME_AGO_DISPLAY_NONE,\n} = require('../../../shared/views/fields/dateTime/constants');\nconst {\n\tDECIMAL_PLACES_DEFAULT,\n\tNUMBER_FORMAT_ENUMS,\n\tNUMBER_FORMAT_INTEGER,\n\tNUMBER_DEFAULT_LOCALE,\n} = require('../../../shared/views/fields/number/constants');\nconst {\n\tOPENS_IN_NEW_DEFAULT,\n} = require('../../../shared/views/fields/url/urlConstants');\nconst {\n\tPERSON_DISPLAY_TYPE_DEFAULT,\n\tPERSON_DISPLAY_TYPE_ENUMS,\n} = require('../../../shared/views/table/tableBody/tableRow/rowCell/personCellType/personCellConstants');\nconst {\n\tMAX_PILL_LIMIT_DEFAULT,\n\tMAX_MAX_PILL_LIMIT,\n} = require('../../../shared/views/table/tableBody/tableRow/rowCell/pillsCellType/pillsCellConstants.js');\n\nexports.numberTypeProperties = {\n\tnumberFormat: {\n\t\ttype: 'string',\n\t\tenum: NUMBER_FORMAT_ENUMS,\n\t\tdefault: NUMBER_FORMAT_INTEGER,\n\t},\n\tdecimalPlaces: {\n\t\ttype: 'number',\n\t\tdefault: DECIMAL_PLACES_DEFAULT,\n\t},\n\tlocale: {\n\t\ttype: 'string',\n\t\tdefault: NUMBER_DEFAULT_LOCALE,\n\t},\n};\n\nexports.percentCompleteTypeProperties = {\n\tthresholdColors: {\n\t\ttype: 'string',\n\t},\n};\n\nexports.dateTimeTypeProperties = {\n\tdateTimeFormat: {\n\t\ttype: 'string',\n\t\tpattern: '^((?!Y|D|A|Z|X).)*$', // date-fns-tz doesn't allow the use of these capital letters like moment – reference the format docs specified in the readme docs.\n\t},\n\ttimeZone: {\n\t\ttype: 'string',\n\t\tpattern:\n\t\t\t// disallow everything but letters and _, forward slash in the middle\n\t\t\t'[^0-9!@#$%^&*()+\\\\-=\\\\[\\\\]{};\\':\"\\\\\\\\|,.<>\\\\?\\\\s\\\\n]/[^0-9!@#$%^&*()+\\\\-=\\\\[\\\\]{};\\':\"\\\\\\\\|,.<>\\\\?\\\\s\\\\n]',\n\t},\n\ttimeAgoDisplay: {\n\t\tenum: TIME_AGO_DISPLAY_ENUMS,\n\t\ttype: 'string',\n\t\tdefault: TIME_AGO_DISPLAY_NONE,\n\t},\n};\n\nexports.actionableLinkTypeProperties = {\n\tdisabled: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n};\n\nexports.urlTypeProperties = {\n\topensInNew: {\n\t\ttype: 'boolean',\n\t\tdefault: OPENS_IN_NEW_DEFAULT,\n\t},\n\tdisabled: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n};\n\nexports.pillsTypeProperties = {\n\tmaxPillLimit: {\n\t\ttype: 'number',\n\t\tdefault: MAX_PILL_LIMIT_DEFAULT,\n\t\tmaximum: MAX_MAX_PILL_LIMIT,\n\t},\n\tpillsChoices: {\n\t\ttype: 'array',\n\t\titems: {\n\t\t\ttype: 'object',\n\t\t\tproperties: {\n\t\t\t\tkey: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tcanEdit: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n};\n\nexports.choiceTypeProperties = {\n\tchoices: {\n\t\ttype: 'array',\n\t\titems: {\n\t\t\ttype: 'object',\n\t\t\tproperties: {\n\t\t\t\tkey: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tdefaultChoiceKey: {\n\t\ttype: 'string',\n\t},\n};\n\nexports.personTypeProperties = {\n\tdisplay: {\n\t\tenum: PERSON_DISPLAY_TYPE_ENUMS,\n\t\ttype: 'string',\n\t\tdefault: PERSON_DISPLAY_TYPE_DEFAULT,\n\t},\n\tdisabled: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n};\n\nexports.currencyTypeProperties = {\n\tcurrency: {\n\t\ttype: 'string',\n\t\tdefault: CURRENCY_DEFAULT,\n\t},\n\tlocale: {\n\t\ttype: 'string',\n\t\tdefault: CURRENCY_LOCALE_DEFAULT,\n\t},\n};\n\nexports.customTypeProperties = {\n\tcomponentTag: {\n\t\ttype: 'string',\n\t},\n\tplaceholderDimensions: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\twidth: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\theight: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t},\n\tcellContentDimensions: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\twidth: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\theight: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t},\n\tdefaultComponentProps: {\n\t\ttype: 'object',\n\t\tpatternProperties: {\n\t\t\t'[\\\\w\\\\W]*': {\n\t\t\t\ttype: [\n\t\t\t\t\t'number',\n\t\t\t\t\t'string',\n\t\t\t\t\t'boolean',\n\t\t\t\t\t'object',\n\t\t\t\t\t'array',\n\t\t\t\t\t'null',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n};\n\nexports.headerIconProperties = {\n\tvalue: {\n\t\ttype: 'string',\n\t},\n\tcolor: {\n\t\ttype: 'string',\n\t},\n\tlabel: {\n\t\ttype: 'string',\n\t},\n};\n","// TODO: Add details for schema to the docs in story STRY59778130\nmodule.exports = {\n\tgalleryConfigSchema: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\tfields: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\theading: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tcolumn: { type: 'string' },\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: ['column'],\n\t\t\t\t\t},\n\t\t\t\t\ttagline: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tcolumn: { type: 'string' },\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: ['column'],\n\t\t\t\t\t},\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tcolumn: { type: 'string' },\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: ['column'],\n\t\t\t\t\t},\n\t\t\t\t\tbodyText: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tcolumn: { type: 'string' },\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: ['column'],\n\t\t\t\t\t},\n\t\t\t\t\tsupplementaryFields: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tcolumn: { type: 'string' },\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\tproperties: {},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trequired: ['column'],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: [\n\t\t\t\t\t'heading',\n\t\t\t\t\t'tagline',\n\t\t\t\t\t'metadata',\n\t\t\t\t\t'bodyText',\n\t\t\t\t\t'supplementaryFields',\n\t\t\t\t],\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tshowLabel: { type: 'boolean' },\n\t\t\t\t\tfullWidth: { type: 'boolean' },\n\t\t\t\t\tenableOnlySingleSelection: { type: 'boolean' },\n\t\t\t\t\tgalleryItemTooltip: { type: 'string' },\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\trequired: ['fields'],\n\t},\n};\n","exports.SORT_NONE = 'none';\nexports.SORT_ASCENDING = 'ascending';\nexports.SORT_DESCENDING = 'descending';\n\nexports.SORT_ENUMS = [\n\texports.SORT_NONE,\n\texports.SORT_ASCENDING,\n\texports.SORT_DESCENDING,\n];\n","/* this file contains constants to configure the builtin overlays for when the list is unconfigured or empty */\nimport { t } from 'sn-translate';\n\nconst {\n\tOVERLAY_TYPE_MESSAGE,\n\tOVERLAY_DEFAULT_HEADING_LEVEL,\n} = require('./overlayConfigConsts');\n\n// overlay config for when rowDefinitions or rows is undefined (empty)\nconst OVERLAY_NO_ROWS_ILLUSTRATION = 'no-data';\nconst OVERLAY_NO_ROWS_HEADING_LABEL = t('No data to display.');\n\n/** @constant\n    @type {OverlayDefinition}\n*/\nexport const OVERLAY_NO_ROWS_CONFIG = {\n\tshowColumnHeaders: true,\n\ttype: OVERLAY_TYPE_MESSAGE,\n\tmessageConfig: {\n\t\tillustration: OVERLAY_NO_ROWS_ILLUSTRATION,\n\t\theading: {\n\t\t\tlevel: OVERLAY_DEFAULT_HEADING_LEVEL,\n\t\t\tlabel: OVERLAY_NO_ROWS_HEADING_LABEL,\n\t\t},\n\t},\n};\n\n// overlay config for when duplicate row keys are found\nconst OVERLAY_DUPLICATE_ROW_KEYS_ILLUSTRATION = 'no-data';\nconst OVERLAY_DUPLICATE_ROW_KEYS_LABEL = t('Invalid row data.');\nconst OVERLAY_DUPLICATE_ROW_KEYS_CONTENT = t('Duplicate row keys found.');\n/** @constant\n    @type {OverlayDefinition}\n*/\nexport const OVERLAY_DUPLICATE_ROW_KEYS_CONFIG = {\n\tshowColumnHeaders: true,\n\ttype: OVERLAY_TYPE_MESSAGE,\n\tmessageConfig: {\n\t\tillustration: OVERLAY_DUPLICATE_ROW_KEYS_ILLUSTRATION,\n\t\theading: {\n\t\t\tlevel: OVERLAY_DEFAULT_HEADING_LEVEL,\n\t\t\tlabel: OVERLAY_DUPLICATE_ROW_KEYS_LABEL,\n\t\t},\n\t\tcontent: OVERLAY_DUPLICATE_ROW_KEYS_CONTENT,\n\t},\n};\n\n// overlay config for when columnsDefinitions or columns is undefined (unconfig error)\nconst OVERLAY_NO_COLS_ILLUSTRATION = 'unconfigured';\nconst OVERLAY_NO_COLS_HEADING_LABEL = t(\n\t'One or more property values are invalid.'\n);\nconst OVERLAY_NO_COLS_CONTENT = t('Please check the column configuration.');\n/** @constant\n    @type {OverlayDefinition}\n*/\nexport const OVERLAY_NO_COLS_CONFIG = {\n\tshowColumnHeaders: false,\n\ttype: OVERLAY_TYPE_MESSAGE,\n\tmessageConfig: {\n\t\tillustration: OVERLAY_NO_COLS_ILLUSTRATION,\n\t\theading: {\n\t\t\tlevel: OVERLAY_DEFAULT_HEADING_LEVEL,\n\t\t\tlabel: OVERLAY_NO_COLS_HEADING_LABEL,\n\t\t},\n\t\tcontent: OVERLAY_NO_COLS_CONTENT,\n\t},\n};\n","const OVERLAY_SHOW_COLUMN_HEADERS_DEFAULT = false;\n\n/** @const {OverlayType} */\nconst OVERLAY_TYPE_MESSAGE = 'message';\n/** @const {OverlayType} */\nconst OVERLAY_TYPE_LOADER = 'loader';\n/** @const {OverlayType} */\nconst OVERLAY_TYPE_SKELETON_LOADER = 'skeletonLoader';\n/** @const {OverlayType} */\nconst OVERLAY_TYPE_CUSTOM = 'custom';\n\nconst OVERLAY_TYPE_ENUMS = [\n\tOVERLAY_TYPE_MESSAGE,\n\tOVERLAY_TYPE_LOADER,\n\tOVERLAY_TYPE_SKELETON_LOADER,\n\tOVERLAY_TYPE_CUSTOM,\n];\nconst OVERLAY_TYPE_DEFAULT = OVERLAY_TYPE_MESSAGE;\n\nconst OVERLAY_DEFAULT_HEADING_LEVEL = 5;\n\nconst OVERLAY_ILLUSTRATION_ENUMS = [\n\t'add-attachment',\n\t'add-data',\n\t'completed-tasks',\n\t'error',\n\t'first-time-user',\n\t'interrupted',\n\t'no-activities',\n\t'no-data',\n\t'no-search-results',\n\t'offline',\n\t'permissions',\n\t'unconfigured',\n];\n\nconst OVERLAY_LOADER_SIZES_ENUMS = ['md', 'lg'];\n\nconst OVERLAY_SKELETON_LOADER_DEFAULT_NUM_COLUMNS = 6; // set by designers\nconst OVERLAY_SKELETON_LOADER_NUM_ROWS = 25; // magic number that will probably fill the space\n\nmodule.exports = {\n\tOVERLAY_DEFAULT_HEADING_LEVEL,\n\tOVERLAY_ILLUSTRATION_ENUMS,\n\tOVERLAY_LOADER_SIZES_ENUMS,\n\tOVERLAY_SHOW_COLUMN_HEADERS_DEFAULT,\n\tOVERLAY_SKELETON_LOADER_DEFAULT_NUM_COLUMNS,\n\tOVERLAY_SKELETON_LOADER_NUM_ROWS,\n\tOVERLAY_TYPE_CUSTOM,\n\tOVERLAY_TYPE_DEFAULT,\n\tOVERLAY_TYPE_ENUMS,\n\tOVERLAY_TYPE_LOADER,\n\tOVERLAY_TYPE_MESSAGE,\n\tOVERLAY_TYPE_SKELETON_LOADER,\n};\n","const {\n\tOVERLAY_DEFAULT_HEADING_LEVEL,\n\tOVERLAY_ILLUSTRATION_ENUMS,\n\tOVERLAY_LOADER_SIZES_ENUMS,\n\tOVERLAY_SHOW_COLUMN_HEADERS_DEFAULT,\n\tOVERLAY_SKELETON_LOADER_DEFAULT_NUM_COLUMNS,\n\tOVERLAY_TYPE_CUSTOM,\n\tOVERLAY_TYPE_LOADER,\n\tOVERLAY_TYPE_MESSAGE,\n\tOVERLAY_TYPE_SKELETON_LOADER,\n} = require('./overlayConfigConsts');\n\nconst commonProperties = {\n\tshowColumnHeaders: {\n\t\ttype: 'boolean',\n\t\tdefault: OVERLAY_SHOW_COLUMN_HEADERS_DEFAULT,\n\t},\n};\n\nmodule.exports = {\n\toverlayDefinitionSchema: {\n\t\ttype: 'object',\n\t\toneOf: [\n\t\t\t{\n\t\t\t\tname: 'Message',\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: [OVERLAY_TYPE_MESSAGE],\n\t\t\t\t\t},\n\t\t\t\t\t...commonProperties,\n\t\t\t\t\tmessageConfig: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t// schema sourced from now-template-message-empty-state\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tactions: {\n\t\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\tlabel: { type: 'string' },\n\t\t\t\t\t\t\t\t\t\ticon: { type: 'string' },\n\t\t\t\t\t\t\t\t\t\tvariant: { type: 'string' },\n\t\t\t\t\t\t\t\t\t\tdisabled: { type: 'boolean' },\n\t\t\t\t\t\t\t\t\t\ttooltipContent: { type: 'string' },\n\t\t\t\t\t\t\t\t\t\tclickActionType: { type: 'string' },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\theading: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tlabel: { type: 'string' },\n\t\t\t\t\t\t\t\t\tlevel: {\n\t\t\t\t\t\t\t\t\t\tdefault: OVERLAY_DEFAULT_HEADING_LEVEL,\n\t\t\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\t\t\tenum: [1, 2, 3, 4, 5, 6],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tillustration: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tenum: OVERLAY_ILLUSTRATION_ENUMS,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: ['type'],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Loader',\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: [OVERLAY_TYPE_LOADER],\n\t\t\t\t\t},\n\t\t\t\t\tloaderConfig: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t// schema sourced from now-loader\n\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsize: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tenum: OVERLAY_LOADER_SIZES_ENUMS,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t...commonProperties,\n\t\t\t\t},\n\t\t\t\trequired: ['type'],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Skeleton loader',\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: [OVERLAY_TYPE_SKELETON_LOADER],\n\t\t\t\t\t},\n\t\t\t\t\tskeletonLoaderConfig: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tnumColumns: {\n\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\tdefault: OVERLAY_SKELETON_LOADER_DEFAULT_NUM_COLUMNS,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t...commonProperties,\n\t\t\t\t},\n\t\t\t\trequired: ['type'],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Custom',\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: [OVERLAY_TYPE_CUSTOM],\n\t\t\t\t\t},\n\t\t\t\t\tcustomConfig: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tcomponentTag: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdefaultComponentProps: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcustomOverlayEmittedActions: {\n\t\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t...commonProperties,\n\t\t\t\t},\n\t\t\t\trequired: ['type'],\n\t\t\t},\n\t\t],\n\t},\n};\n","// schemas sourced from now-dropdown https://code.devsnc.com/dev/design-system/tree/dev/components/dropdown/src/typedefs\nconst DROPDOWN_ITEM_SCHEMA = {\n\ttype: 'object',\n\tproperties: {\n\t\tid: { type: ['string', 'number'] },\n\t\tlabel: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tsublabel: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcount: { type: 'number' },\n\t\ticon: { type: 'string' },\n\t\tpresence: {\n\t\t\ttype: 'string',\n\t\t\tenum: ['available', 'away', 'busy', 'offline'],\n\t\t},\n\t\tdisabled: { type: 'boolean' },\n\t},\n};\n\nconst DROPDOWN_SECTION_SCHEMA = {\n\ttype: 'object',\n\tproperties: {\n\t\tid: { type: ['string', 'number'] },\n\t\tlabel: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tchildren: {\n\t\t\ttype: 'array',\n\t\t\titems: DROPDOWN_ITEM_SCHEMA,\n\t\t},\n\t},\n};\n\nmodule.exports = {\n\tpopoverDefinitionSchema: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\ttarget: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Column Header Cell',\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tcolumnRowIndex: { type: 'number', default: 1 },\n\t\t\t\t\t\t\tcolumnCellIndex: { type: 'number', default: 1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Row Cell',\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\trowIndex: { type: 'number', default: 1 },\n\t\t\t\t\t\t\tcellIndex: { type: 'number', default: 1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\tconfig: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tpositions: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tdismissOnScroll: {\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t},\n\t\t\t\t\tdisableScroll: {\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t},\n\t\t\t\t\tdismissable: {\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontent: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Text + Buttons',\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tpopoverType: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttext: { type: 'string' },\n\t\t\t\t\t\t\tbuttons: {\n\t\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tariaLabel: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttooltipContent: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tsize: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tvariant: {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Action Dropdown',\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tpopoverType: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tactions: {\n\t\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: 'Dropdown section',\n\t\t\t\t\t\t\t\t\t\t\t...DROPDOWN_SECTION_SCHEMA,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: 'Dropdown item',\n\t\t\t\t\t\t\t\t\t\t\t...DROPDOWN_ITEM_SCHEMA,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: ['label', 'actions'],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Custom Type',\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tpopoverType: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcomponentTag: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdefaultComponentProps: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: ['componentTag'],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Cell Edit Type',\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tpopoverType: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\thighlightedMessage: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tshowIcon: {\n\t\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tvariant: {\n\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcomponentTag: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbuttonsConfig: {\n\t\t\t\t\t\t\t\tshowRetry: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdisableApply: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\thideAll: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tisLoading: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdefaultComponentProps: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trequired: ['popoverType', 'defaultComponentProps'],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Choice Column Filter Type',\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tpopoverType: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trequired: ['popoverType'],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n};\n","exports.ROW_ALIGNMENT_DEFAULT = 'default';\nexports.ROW_ALIGNMENT_CENTER = 'center';\nexports.ROW_ALIGNMENT_INVERSE = 'inverse';\nexports.ROW_ALIGNMENT_ENUMS = [\n\texports.ROW_ALIGNMENT_DEFAULT,\n\texports.ROW_ALIGNMENT_CENTER,\n\texports.ROW_ALIGNMENT_INVERSE,\n];\n","exports.POSITION_TABLE_START = 'start';\nexports.POSITION_TABLE_END = 'end';\nexports.POSITION_ENUMS = [\n\texports.POSITION_TABLE_START,\n\texports.POSITION_TABLE_END,\n];\nexports.DEFAULT_ROW_ACTION_NUM_ICONS = 4;\nexports.DEFAULT_ROW_ACTION_ICON = 'magic-outline';\n","const {\n\tACTIONABLE_MESSAGE_STATUS_ENUMS,\n\tACTIONABLE_MESSAGE_STATUS_DEFAULT,\n} = require('../../shared/views/actionableMessage/constants');\nconst {\n\tICON_CELL_COLOR_DEFAULT,\n\tICON_CELL_COLORS_ENUMS,\n} = require('../../shared/views/fields/icon/iconConstants');\nconst {\n\tEMPTY_CELL_VALUE,\n} = require('../../shared/views/table/tableBody/tableRow/rowCell/rowCellConstants');\n\nconst { ROW_ALIGNMENT_ENUMS } = require('./rowAlignments/rowAlignment');\nconst {\n\tDEFAULT_ROW_ACTION_ICON,\n\tDEFAULT_ROW_ACTION_NUM_ICONS,\n\tPOSITION_ENUMS,\n\tPOSITION_TABLE_START,\n} = require('./rowConfigConsts');\nconst { ROW_TYPE_ENUMS } = require('./rowTypes/rowTypes');\n\nconst DEFAULT_ROW_SCHEMA = {\n\ttype: {\n\t\ttype: 'string',\n\t\tenum: ROW_TYPE_ENUMS,\n\t},\n\tkey: {\n\t\ttype: 'string',\n\t},\n\texcludedActions: {\n\t\ttype: 'array',\n\t\titems: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tdefault: [],\n\t},\n\t/**\n\t * @deprecated This property is deprecated and may be removed in a future release. Use excludedActions instead.\n\t */\n\tdisableActions: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n\tselectionDisabled: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n\tisSelected: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n\tcells: {\n\t\ttype: 'object',\n\t\tpatternProperties: {\n\t\t\t'[\\\\w\\\\W]*': {\n\t\t\t\tactions: {\n\t\t\t\t\ttype: 'array',\n\t\t\t\t\titems: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: ['id', 'label', 'action'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: EMPTY_CELL_VALUE,\n\t\t\t\t},\n\t\t\t\teditingDisabled: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: false,\n\t\t\t\t},\n\t\t\t\tdisabled: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: false,\n\t\t\t\t},\n\t\t\t\timageSrc: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tkey: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tcolor: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: ICON_CELL_COLOR_DEFAULT,\n\t\t\t\t\tenum: ICON_CELL_COLORS_ENUMS,\n\t\t\t\t},\n\t\t\t\tvalue: {\n\t\t\t\t\ttype: ['string', 'number', 'boolean', 'array'],\n\t\t\t\t\tdefault: EMPTY_CELL_VALUE,\n\t\t\t\t},\n\t\t\t\thighlightedValue: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tvalue: 'string',\n\t\t\t\t\t\tvariant: 'string',\n\t\t\t\t\t\tcolor: 'string',\n\t\t\t\t\t\tshowIcon: 'boolean',\n\t\t\t\t\t\ticonName: 'string',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmetadata: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t},\n\t\t\t\thref: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tmetadata: {\n\t\ttype: 'object',\n\t},\n};\n\nconst GROUPED_ROW_SCHEMA = {\n\tgroupedRowLabel: {\n\t\ttype: 'string',\n\t},\n\tgroupActions: {\n\t\ttype: 'array',\n\t\tdefault: [],\n\t\titems: {\n\t\t\ttype: 'object',\n\t\t\tproperties: {\n\t\t\t\tid: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\taction: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tgroupRowHref: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t},\n\t\t\trequired: ['id', 'label', 'action'],\n\t\t},\n\t},\n};\n\nconst CUSTOM_ROW_SCHEMA = {\n\tcomponentTag: {\n\t\ttype: 'string',\n\t},\n\tcomponentProps: {\n\t\ttype: 'object',\n\t\tpatternProperties: {\n\t\t\t'[\\\\w\\\\W]*': {\n\t\t\t\ttype: [\n\t\t\t\t\t'number',\n\t\t\t\t\t'string',\n\t\t\t\t\t'boolean',\n\t\t\t\t\t'object',\n\t\t\t\t\t'array',\n\t\t\t\t\t'null',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tcontentAlignment: {\n\t\ttype: 'string',\n\t\tenum: ROW_ALIGNMENT_ENUMS,\n\t},\n\tplaceholderDimensions: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\twidth: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\theight: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t},\n\trowContentDimensions: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\twidth: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\theight: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst ACTIONABLE_MESSAGE_SCHEMA = {\n\ttype: 'object',\n\tproperties: {\n\t\tstatus: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ACTIONABLE_MESSAGE_STATUS_DEFAULT,\n\t\t\tenums: ACTIONABLE_MESSAGE_STATUS_ENUMS,\n\t\t\trequired: false,\n\t\t},\n\t\ttext: {\n\t\t\ttype: 'string',\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: 'object',\n\t\t\tproperties: {\n\t\t\t\taction: 'string',\n\t\t\t\tlabel: 'string',\n\t\t\t\trequired: ['action', 'label'],\n\t\t\t},\n\t\t},\n\t},\n};\n\nmodule.exports = {\n\trowDefinitionsSchema: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\tactions: {\n\t\t\t\ttype: 'object',\n\t\t\t\tposition: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: POSITION_TABLE_START,\n\t\t\t\t\tenum: POSITION_ENUMS,\n\t\t\t\t},\n\t\t\t\tnumActionIcons: {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: DEFAULT_ROW_ACTION_NUM_ICONS,\n\t\t\t\t},\n\t\t\t\tactionsItems: {\n\t\t\t\t\ttype: 'array',\n\t\t\t\t\titems: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: DEFAULT_ROW_ACTION_ICON,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: ['id', 'label', 'action'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\trows: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\t...DEFAULT_ROW_SCHEMA,\n\t\t\t\t\t\t...GROUPED_ROW_SCHEMA,\n\t\t\t\t\t\t...CUSTOM_ROW_SCHEMA,\n\t\t\t\t\t\tisGroupExpanded: {\n\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgroupedRowCount: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisualTreatment: {\n\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tisHighlighted: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tshowUpdatedIcon: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tisGrayedOut: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: {\n\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t...DEFAULT_ROW_SCHEMA,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcustomCellEmittedActions: {\n\t\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: ['key', 'cells'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t\trequired: ['rows'],\n\t\t\ttopActionableMessage: ACTIONABLE_MESSAGE_SCHEMA,\n\t\t\tbottomActionableMessage: ACTIONABLE_MESSAGE_SCHEMA,\n\t\t\thighlightedContent: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tdefault: [],\n\t\t\t},\n\t\t},\n\t},\n};\n","exports.ROW_TYPE_DEFAULT = 'default';\nexports.ROW_TYPE_GROUPED = 'grouped';\nexports.ROW_TYPE_CUSTOM = 'custom';\nexports.ROW_TYPE_ENUMS = [\n\texports.ROW_TYPE_DEFAULT,\n\texports.ROW_TYPE_GROUPED,\n\texports.ROW_TYPE_CUSTOM,\n];\n","import {t} from 'sn-translate';\n\nexport const shouldRenderAriaLabel = (label) => {\n\treturn (\n\t\t!label ||\n\t\t![\n\t\t\tt('Loading'),\n\t\t\tt('Loading...'),\n\t\t\tt('Loading…'),\n\t\t\tt('loading'),\n\t\t\tt('loading...'),\n\t\t\tt('loading…'),\n\t\t].includes(label)\n\t);\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-loader.scss';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-button';\nimport {t} from 'sn-translate';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {shouldRenderAriaLabel} from './utils/helper';\nimport {actionTypes} from '@servicenow/ui-core';\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\n\nconst renderLabel = (label) => {\n\tif (label) {\n\t\treturn <div className=\"now-loader-label\">{label}</div>;\n\t}\n};\n\nconst renderActionButton = (action, dispatch) => {\n\tif (action) {\n\t\treturn (\n\t\t\t<now-button\n\t\t\t\tclassName=\"now-m-block-start--xl\"\n\t\t\t\tlabel={action}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_LOADER#ACTION_CLICKED',\n\t\t\t\t\t\t\tpayload: {action},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {label, action, size} = state.properties;\n\n\treturn (\n\t\t<div className=\"now-loader\">\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-loader-icon\"\n\t\t\t\ticon=\"loader-fill\"\n\t\t\t\tsize={size}\n\t\t\t\tspin\n\t\t\t\tconfig-aria={\n\t\t\t\t\tshouldRenderAriaLabel(label)\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\t\t\t'aria-label': t('Loading'),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{renderLabel(label)}\n\t\t\t{renderActionButton(action, dispatch)}\n\t\t</div>\n\t);\n};\n\n/**\n * Loaders are stand-in elements that indicate a loading status to users.\n * Use loaders to facilitate the transition and retrieval of data between states and pages,\n * especially in cases where the timing can be variable.\n *\n * ```jsx\n * <now-loader />\n *\n * <now-loader label=\"Loading\" action=\"Cancel\" />\n * ```\n *\n * @seismicElement now-loader\n * @summary An animated spinner to indicate a loading state.\n * @uib.label Loader\n * @uib.icon loader\n * @uib.description An animated spinner to indicate a loading state\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, label, action, announceLabel\n * @uib.actions NOW_LOADER#ACTION_CLICKED\n */\ncreateEnhancedElement('now-loader', {\n\tproperties: {\n\t\t/**\n\t\t * A simple description of the current loading activity.\n\t\t * @type {string}\n\t\t * @uib.description Descriptive text for the loader. If you do not want to display a label, leave this property empty.\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Sets the loader size, either medium (md) or large (lg).\n\t\t * @type {('md'|'lg')}\n\t\t * @uib.description Size of the loader’s spinner.\n\t\t */\n\t\tsize: {default: 'lg', schema: {type: 'string', enum: ['md', 'lg']}},\n\t\t/**\n\t\t * The name of an action to display inside a simple button, placed under the loading indicator.\n\t\t * @type {string}\n\t\t * @uib.label Action label\n\t\t * @uib.description Label for the action button. If you do not want to add an action button, leave this property empty.\n\t\t * @uib.translatable true\n\t\t */\n\t\taction: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Enable this property to announce the label when the component is rendered.\n\t\t * `ARIA_LIVE_REGION_UPDATE_REQUESTED` action is dispatched with the component label value.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to announce the label when the component is rendered.\n\t\t */\n\t\tannounceLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t},\n\t],\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user clicks on an action button in the loader.\n\t\t * @type {{action: string}}\n\t\t * @uib.label Button clicked\n\t\t * @uib.description Dispatched when the optional button is clicked\n\t\t */\n\t\t'NOW_LOADER#ACTION_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\taction: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY]: ({properties, dispatch}) => {\n\t\t\tconst {announceLabel, label} = properties;\n\t\t\tif (label && announceLabel) {\n\t\t\t\t// NVDA does not announce the message without setTimeout when the component is rendered\n\t\t\t\tsetTimeout(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\t\t\t\tmessage: label,\n\t\t\t\t\t\t\ttype: 'polite',\n\t\t\t\t\t\t}),\n\t\t\t\t\t50,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({properties, dispatch, action}) => {\n\t\t\tconst {announceLabel, label} = properties;\n\t\t\tconst {name} = action.payload;\n\t\t\tif (name === 'label' && announceLabel && label) {\n\t\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\t\tmessage: label,\n\t\t\t\t\ttype: 'polite',\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-loader-custom.scss';\nimport '@servicenow/now-progress-bar';\nimport '@servicenow/now-animation';\nimport {shouldRenderAriaLabel} from './utils/helper';\nimport {t} from 'sn-translate';\nimport {actionTypes} from '@servicenow/ui-core';\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\n\nconst renderProgressBar = (progressBarObj, size, label) => {\n\tif (!progressBarObj || Object.keys(progressBarObj).length === 0) return;\n\n\tconst {max, value, pathType} = progressBarObj;\n\tconst sizeMap = {sm: 'xs', md: 'sm', lg: 'md'};\n\tconst progressBarSize = sizeMap[size] || size;\n\n\treturn (\n\t\t<now-progress-bar\n\t\t\tclass={{\n\t\t\t\t'now-m-block-start--xs': size === 'sm',\n\t\t\t\t'now-m-block-start--sm': size === 'md' || size === 'lg',\n\t\t\t}}\n\t\t\tpath-type={pathType}\n\t\t\tsize={progressBarSize}\n\t\t\tmax={max}\n\t\t\tvalue={value}\n\t\t\tconfig-aria={\n\t\t\t\tshouldRenderAriaLabel(label)\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tprogressbar: {\n\t\t\t\t\t\t\t\t'aria-label': t('Loading'),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t/>\n\t);\n};\n\nconst renderAnimation = (animationObject, label) => {\n\tif (!animationObject || !(animationObject.src || animationObject.tokenId)) {\n\t\treturn;\n\t}\n\n\tconst {src, tokenId, loop = true, autoplay = true} = animationObject;\n\n\treturn (\n\t\t<now-animation\n\t\t\tclassName=\"now-loader-custom-animation\"\n\t\t\tsrc={src}\n\t\t\ttokenId={tokenId}\n\t\t\tloop={loop}\n\t\t\tautoplay={autoplay}\n\t\t\tconfig-aria={\n\t\t\t\tshouldRenderAriaLabel(label)\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tanimation: {\n\t\t\t\t\t\t\t\t'aria-label': t('Loading'),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t/>\n\t);\n};\n\nconst showLabel = (host, label) => {\n\tif (label) {\n\t\tconst labelEl = host.shadowRoot.querySelector('.now-loader-custom-label');\n\t\tif (labelEl) {\n\t\t\tlabelEl.style.display = 'block';\n\t\t}\n\t}\n};\n\nconst view = (state) => {\n\tconst {size, configAnimation, progressBarProps, label} = state.properties;\n\n\treturn (\n\t\t<div className=\"now-loader-custom\">\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-loader-custom-container': true,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{renderAnimation(configAnimation, label)}\n\t\t\t\t{renderProgressBar(progressBarProps, size, label)}\n\t\t\t\t{label ? <p className=\"now-loader-custom-label\">{label}</p> : undefined}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * A custom loader component that displays a Lottie animation from a specified source, an optional progress bar to\n * indicate loading progress, and an optional label to provide additional context or information.\n * ```jsx\n * <now-loader-custom\n * \tconfigAnimation={{\n * \t\tsrc: '/images/@servicenow/now-loader/custom-default-spinner-med-204x56/index.json',\n * \t\tloop: true,\n * \t\tautoPlay: true\n * \t}}\n * \tprogressBarProps={{\n * \t\tpathType: 'initial',\n * \t}}\n * \tlabel=\"Loading\"\n * />\n * ```\n * ### Generic Page Loaders\n * | Size | Path | Image |\n * |------|------|-------|\n * | Small | /images/@servicenow/now-loader/custom-default-spinner-sm-162x40/index.json | ![default-spinner-sm](https://code.devsnc.com/storage/user/3897/files/3f2b2ce6-11f2-4487-ac9d-8a045846ab30) |\n * | Medium| /images/@servicenow/now-loader/custom-default-spinner-med-204x56/index.json | ![default-spinner-md](https://code.devsnc.com/storage/user/3897/files/5aa97f28-8159-48bf-9a53-e99f297d294e) |\n * | Large | /images/@servicenow/now-loader/custom-default-spinner-lg-254x80/index.json | ![default-spinner-lg](https://code.devsnc.com/storage/user/3897/files/00cb4633-3b66-4d41-a99f-d4277241818e) |\n *\n * ### GenAI Loaders\n * | Size | Path | Image |\n * |------|------|-------|\n * | XX Small | /images/@servicenow/now-loader/custom-genai-loader-xx-sm-16x16/index.json | ![genai-xxs](https://code.devsnc.com/storage/user/3897/files/6d555d01-730f-4c1b-977d-df9ef6e9b0fc) |\n * | X Small | /images/@servicenow/now-loader/custom-genai-loader-x-sm-24x24/index.json | ![genai-xs](https://code.devsnc.com/storage/user/3897/files/9ce3c295-b766-4279-a2d4-185b5f713fce) |\n * | Small | /images/@servicenow/now-loader/custom-genai-loader-sm-162x40/index.json | ![genai-sm](https://code.devsnc.com/storage/user/3897/files/842bf5ba-6f22-4110-a268-e1262d96e356) |\n * | Medium | /images/@servicenow/now-loader/custom-genai-loader-med-204x88/index.json | ![genai-md](https://code.devsnc.com/storage/user/3897/files/e18b8d12-4de4-414a-b091-c52529148e9b) |\n * | Large | /images/@servicenow/now-loader/custom-genai-loader-lg-254x128/index.json | ![genai-lg](https://code.devsnc.com/storage/user/3897/files/3ed895a3-2e97-4b1a-8a10-866e1e2a372a) |\n *\n * @seismicElement now-loader-custom\n * @summary Renders Lottie animation with optional progress bar and label.\n * @uib.label Loader Custom\n * @uib.icon loader\n * @uib.description Renders Lottie animation with optional progress bar and label.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties configAnimation, label, size, progressBarProps, announceLabel\n * @uib.layout.label.children label, announceLabel\n * @uib.layout.label.icon text-outline\n * @uib.layout.progress.children size, progressBarProps\n * @uib.layout.progress.icon loader-outline\n * @uib.actions NOW_LOADER_CUSTOM#ANIMATION_VISIBLE\n */\ncreateEnhancedElement('now-loader-custom', {\n\tproperties: {\n\t\t/**\n\t\t * An object that holds all the information that is needed to render the animation.\n\t\t * @type {{src: string, tokenId: string, loop: boolean, autoplay: boolean}}\n\t\t * @uib.label Animation properties\n\t\t * @uib.description An object that holds all the information that is needed to render the animation.\n\t\t * @uib.defaultValue {\"loop\": true, \"autoplay\": true}\n\t\t */\n\t\tconfigAnimation: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tsrc: {type: 'string'},\n\t\t\t\t\ttokenId: {type: 'string'},\n\t\t\t\t\tloop: {type: 'boolean'},\n\t\t\t\t\tautoplay: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the size of the progress bar and label to accompany the animation when set.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.label Size\n\t\t * @uib.description Sets the size of the progress bar and label to accompany the animation when set\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {type: 'string', enum: ['sm', 'md', 'lg']},\n\t\t},\n\t\t/**\n\t\t * An optional label can be displayed with the animation.\n\t\t * @type {string}\n\t\t * @uib.optional\n\t\t * @uib.label Label\n\t\t * @uib.description An optional label can be displayed with the animation.\n\t\t */\n\t\tlabel: {required: false, schema: {type: 'string'}},\n\t\t/**\n\t\t * An object that holds all the information that is needed to render the progress bar.\n\t\t * @type {{pathType: ('initial'|'positive'|'alert'|'error'|'inactive'|'pink'|'green'|'orange'|'gray'), max: number, value: number}}\n\t\t * @uib.label Progress Bar properties\n\t\t * @uib.description An object that holds all the information that is needed to render the progress bar.\n\t\t */\n\t\tprogressBarProps: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tpathType: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t'initial',\n\t\t\t\t\t\t\t'positive',\n\t\t\t\t\t\t\t'alert',\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t'inactive',\n\t\t\t\t\t\t\t'pink',\n\t\t\t\t\t\t\t'green',\n\t\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\tmax: {type: 'number'},\n\t\t\t\t\tvalue: {type: 'number'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Enable this property to announce the label when the component is rendered.\n\t\t * `ARIA_LIVE_REGION_UPDATE_REQUESTED` action is dispatched with the component label value.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to announce the label when the component is rendered.\n\t\t */\n\t\tannounceLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the lottie animation is rendered on the page.\n\t\t * @uib.description Dispatched when the lottie animation is rendered on the page.\n\t\t * @type {{object}}\n\t\t */\n\t\t'NOW_LOADER_CUSTOM#ANIMATION_VISIBLE': {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'object'},\n\t\t},\n\t},\n\tactionHandlers: {\n\t\t['NOW_ANIMATION#CONTENT_VISIBLE']: ({\n\t\t\thost,\n\t\t\tproperties,\n\t\t\taction: {payload},\n\t\t\tdispatch,\n\t\t}) => {\n\t\t\tconst {label} = properties;\n\t\t\tconst customLoader = host.shadowRoot.querySelector(\n\t\t\t\t'.now-loader-custom-container',\n\t\t\t);\n\n\t\t\tconst animation = host.shadowRoot.querySelector('now-animation');\n\n\t\t\tconst animationWidth = animation.offsetWidth;\n\t\t\tcustomLoader.style.maxWidth = `${animationWidth}px`;\n\n\t\t\tshowLabel(host, label);\n\t\t\tdispatch('NOW_LOADER_CUSTOM#ANIMATION_VISIBLE', {...payload});\n\t\t},\n\t\t[COMPONENT_DOM_TREE_READY]: ({properties, dispatch}) => {\n\t\t\tconst {announceLabel, label} = properties;\n\t\t\tif (label && announceLabel) {\n\t\t\t\t// NVDA does not announce the message without setTimeout when the component is rendered\n\t\t\t\tsetTimeout(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\t\t\t\tmessage: label,\n\t\t\t\t\t\t\ttype: 'polite',\n\t\t\t\t\t\t}),\n\t\t\t\t\t50,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({properties, dispatch, action}) => {\n\t\t\tconst {announceLabel, label} = properties;\n\t\t\tconst {name} = action.payload;\n\t\t\tif (name === 'label' && announceLabel && label) {\n\t\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\t\tmessage: label,\n\t\t\t\t\ttype: 'polite',\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t['NOW_ANIMATION#FETCH_FAILED']: ({host, properties}) => {\n\t\t\tconst {label} = properties;\n\t\t\tshowLabel(host, label);\n\t\t},\n\t},\n\tstyles,\n\tview,\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-loader-skeleton.scss';\n\nconst view = () => {\n\treturn (\n\t\t<div className=\"now-loader-skeleton\" role=\"presentation\">\n\t\t\t{[100, 75, 50, 25].map((percentage) => (\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-loader-skeleton-bone': true,\n\t\t\t\t\t\t[`has-width-${percentage}`]: true,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\n/**\n * Skeleton loaders are stand-in elements that indicate a text-based loading status to users.\n * Use skeleton loaders to facilitate the transition and retrieval of data between states and pages,\n * especially in cases where the timing can be variable. Note that this component is purely decorative,\n * and all accessibility requirements including a visible text indicating the loading status as well\n * as aria messaging for visibly impaired users is the responsibility of the user.\n *\n * ```jsx\n * <now-loader-skeleton />\n * ```\n *\n * @seismicElement now-loader-skeleton\n * @summary An animated skeleton to indicate a loading state.\n * @uib.label Skeleton Loader\n * @uib.icon loader\n * @uib.description An animated skeleton to indicate a loading state\n * @uib.category primitives\n * @uib.associatedTypes global.core\n */\ncreateEnhancedElement('now-loader-skeleton', {\n\tview,\n\tstyles,\n});\n","import './now-loader';\nimport './now-loader-custom';\nimport './now-loader-skeleton';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","const TAIL_LENGTH = 20;\nconst OFFSET = 8;\nconst MIN_SIZE = TAIL_LENGTH + OFFSET * 2;\n\nexport default function setTailPosition({\n\tpanel,\n\tcontentArea,\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\ttargetPosition,\n\tcontentPosition,\n}) {\n\tconst {offset, direction} = getTailPosition({\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t});\n\tif (offset >= 0) {\n\t\tcontentArea.style.setProperty('--popover-tail', `${offset}px`);\n\t}\n\tpanel.tailDirection = direction;\n}\n\nfunction getMinOffset(targetDimensions, contentDimensions, dim) {\n\t// space to display tail with OFFSET padding on both sides\n\tif (targetDimensions[dim] >= MIN_SIZE && contentDimensions[dim] >= MIN_SIZE) {\n\t\treturn OFFSET;\n\t}\n\t// no space to display any padding\n\tif (contentDimensions[dim] <= MIN_SIZE) {\n\t\treturn 0;\n\t}\n\t// in between - center the tail by dividing the available space\n\treturn (targetDimensions[dim] - TAIL_LENGTH) / 2;\n}\n\nexport function getTailPosition({\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\ttargetPosition,\n\tcontentPosition,\n}) {\n\tlet offset, direction;\n\tif (\n\t\tcontentPosition[0] === targetPosition[0] &&\n\t\tcontentPosition[1] !== targetPosition[1]\n\t) {\n\t\t// block positions match, so alignment is on inline / horizontal axis\n\t\tdirection = contentPosition[1] === 'end' ? 'right' : 'left';\n\t\tconst minYOffset = getMinOffset(\n\t\t\ttargetDimensions,\n\t\t\tcontentDimensions,\n\t\t\t'height',\n\t\t);\n\t\tif (contentPosition[0] === 'top') {\n\t\t\toffset = minYOffset;\n\t\t} else if (contentPosition[0] === 'center') {\n\t\t\tconst middleOfTarget = targetDimensions.height / 2;\n\t\t\tconst deltaY = targetDimensions.top - contentAreaDimensions.top;\n\t\t\toffset = deltaY + middleOfTarget - TAIL_LENGTH / 2;\n\t\t} else if (contentPosition[0] === 'bottom') {\n\t\t\toffset = contentAreaDimensions.height - minYOffset - TAIL_LENGTH;\n\t\t}\n\t} else if (\n\t\tcontentPosition[1] === targetPosition[1] &&\n\t\tcontentPosition[0] !== targetPosition[0]\n\t) {\n\t\t// inline positions match, so alignment is on block / vertical axis\n\t\tdirection = contentPosition[0] === 'top' ? 'up' : 'down';\n\t\tconst minXOffset = getMinOffset(\n\t\t\ttargetDimensions,\n\t\t\tcontentDimensions,\n\t\t\t'width',\n\t\t);\n\t\tif (contentPosition[1] === 'start') {\n\t\t\toffset = minXOffset;\n\t\t} else if (contentPosition[1] === 'center') {\n\t\t\tconst middleOfTarget = targetDimensions.width / 2;\n\t\t\tconst deltaX = targetDimensions.left - contentAreaDimensions.left;\n\t\t\toffset = deltaX + middleOfTarget - TAIL_LENGTH / 2;\n\t\t} else if (contentPosition[1] === 'end') {\n\t\t\toffset = contentAreaDimensions.width - minXOffset - TAIL_LENGTH;\n\t\t}\n\t}\n\n\treturn {\n\t\tdirection,\n\t\toffset,\n\t};\n}\n","import find from 'lodash/find';\n\nconst HOIST_TAG = 'SEISMIC-HOIST';\nconst POPOVER_PANEL_TAG = 'NOW-POPOVER-PANEL';\n\nexport function getContent(host) {\n\treturn host.querySelectorAll('[slot=content]');\n}\n\nexport function getFirstTrigger(host) {\n\treturn host.querySelector('[slot=trigger]');\n}\n\n/**\n * Gets the parent popover panel of the current panel, if it exists.\n *\n * @param {HTMLElement} panel - The panel to recurse.\n * @returns {(HTMLElement|null)}\n */\n\nfunction getNextPanel(panel) {\n\tlet parent = panel.nowPopover;\n\n\twhile ((parent = parent.getRootNode().host) !== undefined) {\n\t\t// If we end up at seismic-hoist, our next\n\t\t// parent should be now-popover-panel. This\n\t\t// happens for non-slotted content.\n\t\tif (parent.tagName === HOIST_TAG) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\t// If we're slotted, we can find the panel in the direct parent\n\t\tconst directParent = parent.closest(POPOVER_PANEL_TAG);\n\t\tif (directParent) {\n\t\t\tparent = directParent;\n\t\t}\n\n\t\tif (parent.tagName === POPOVER_PANEL_TAG) {\n\t\t\treturn parent;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if the given element is a popover panel that is nested within a\n * another panel.\n *\n * @param {HTMLElement[]} path - The elements in the event path\n * @param {HTMLElement} panel - The root panel\n *\n * @returns {boolean} `true` if the element is itself a panel that is\n * originally contained within the `panel`. Otherwise, returns `false`.\n */\nexport function isInPanel(path, panel) {\n\tif (!panel) return false;\n\n\tfor (const node of path) {\n\t\tif (node === panel || node === panel.nowPopover) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (node.tagName === POPOVER_PANEL_TAG) {\n\t\t\tconst nextPanel = getNextPanel(node);\n\t\t\tif (nextPanel && isInPanel([nextPanel], panel)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Determine which slotted trigger was interacted with.\n */\nexport function findTriggerFromEvent(event, slot) {\n\tconst assignedNodes = slot.assignedNodes({flatten: true});\n\n\tif (assignedNodes.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (assignedNodes.length === 1) {\n\t\treturn assignedNodes[0];\n\t}\n\n\t// if there are multiple slotted triggers, the one that we want will be right\n\t// before the <slot> node in the composed path\n\treturn find(event.composedPath(), (node, index, path) => {\n\t\tconst nextNode = path[index + 1];\n\t\treturn nextNode === slot;\n\t});\n}\n\n/**\n * Dynamically create a `<now-popover-panel />` element in the correct location\n * in the DOM and hoist slotted content to that element. We want Seismic to\n * control hoisting the content so that actions and events can be re-routed\n * correctly, but we still need want to include the now-popover-panel as a\n * parent to ensure we have the correct markup and styles required to use\n * getBestFitInfo.\n *\n * We also can't hoist the now-popover-panel directly, because it wouldn't be\n * able to take the content (slotted into the parent now-popover) along with\n * it.\n */\nexport async function hoist(host, container, nodes) {\n\tconst panel = document.createElement(POPOVER_PANEL_TAG);\n\n\t// provide a reference back to the original <now-popover> from the panel\n\t// element. This is used so that we can figure out the original DOM order of\n\t// elements when we receive an event from the hoisted panel.\n\tpanel.nowPopover = host;\n\n\t// Seismic will render the panel asynchronously, so we need to wait for that\n\t// to happen. Since we're creating the panel outside of a normal view\n\t// function/render hierarchy, we can't really listen for an action to be\n\t// dispatched from the panel. Instead, we have a custom callback function\n\t// that panel calls once it has been rendered :(\n\treturn await new Promise((resolve) => {\n\t\tpanel.onReady = resolve;\n\n\t\tcontainer.append(panel);\n\n\t\tfor (const node of nodes) {\n\t\t\tnode.nowHoistAppendTo = panel;\n\t\t\tnode.nowHoist = true;\n\t\t}\n\t});\n}\n\nexport function unhoist(panel, content) {\n\tfor (const node of content) {\n\t\tnode.nowHoist = false;\n\t\tnode.nowHoistAppendTo = null;\n\t}\n\n\tif (panel) {\n\t\tpanel.remove();\n\t}\n}\n\n/**\n * Attaches a listener to the container, then fires a fake event from the given element\n * to identify all ancestor elements in the element's DOM tree. More efficient than\n * climbing the tree recursively.\n * @param {string} id - unique ID\n * @param {HTMLElement} element - the element to find ancestors of\n * @param {HTMLElement} container - the topmost element to resolve to\n */\nexport const findAncestors = (id, element, container) =>\n\tnew Promise((resolve) => {\n\t\tconst eventName = `findAncestors-${id}`;\n\t\tconst findListener = async (e) => {\n\t\t\tcontainer.removeEventListener(eventName, findListener);\n\t\t\tconst path = e.composedPath();\n\t\t\tconst length = path.length;\n\t\t\tconst ancestors = new Set(path);\n\n\t\t\t// This is gross but since popovers are hoisted,\n\t\t\t// any child popovers will lose context of their parent's\n\t\t\t// scroll containers. To fix this, we can lookup the parent\n\t\t\t// popover and recurse for its ancestors, then merge\n\t\t\t// the hoisted and non-hoisted ancestor lists. Ideally we\n\t\t\t// could memoize these but since we don't control data on\n\t\t\t// the host, it's risky to store the memoized nodes\n\t\t\t// in a public property.\n\t\t\tfor (let idx = 0; idx < length; idx++) {\n\t\t\t\tconst node = path[idx];\n\t\t\t\tif (\n\t\t\t\t\tnode !== element &&\n\t\t\t\t\tnode.nodeType === Node.ELEMENT_NODE &&\n\t\t\t\t\tnode.tagName === POPOVER_PANEL_TAG\n\t\t\t\t) {\n\t\t\t\t\tconst parentAncestors = await findAncestors(\n\t\t\t\t\t\tnode.nowId,\n\t\t\t\t\t\tnode.nowPopover,\n\t\t\t\t\t\tcontainer,\n\t\t\t\t\t);\n\n\t\t\t\t\tparentAncestors.forEach((ancestor) => ancestors.add(ancestor));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolve(ancestors);\n\t\t};\n\n\t\tcontainer.addEventListener(eventName, findListener);\n\t\tconst event = new CustomEvent(eventName, {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tcancelable: false,\n\t\t});\n\t\telement.dispatchEvent(event);\n\t});\n","import isEmpty from 'lodash/isEmpty';\nimport forEachRight from 'lodash/forEachRight';\nimport debounce from 'lodash/debounce';\n\n/**\n * Factory function to provide a way to have multiple callbacks triggered from\n * a single (optionally debounced) DOM event listener on the window.\n *\n * This has a couple of benefits over direct `addEventListeners`\n *\n * - Re-using a single event listener to run multiple callbacks leads to a\n *   performance gain in Chrome + Safari (Firefox doesn't seem to care much)\n *\n * - Callbacks can be deleted just by just ID, rather than needing to maintain\n *   a reference to the callback that was used in `addEventListener`\n *\n * - We can easily guarantee execution order when multiple instances listen\n *   to the same event.\n *\n * Callbacks are run in reverse order, so newer callbacks happen first. If any\n * callback returns an explicit `false`, other callbacks are not run.\n */\nexport default function createBatchedListener(eventType, {batch = false} = {}) {\n\tconst callbacks = {};\n\n\tlet runCallbacks = (event) =>\n\t\tforEachRight(callbacks, (callback) => callback(event));\n\tif (batch) {\n\t\trunCallbacks = debounce(runCallbacks, 500);\n\t}\n\n\treturn {\n\t\tadd(id, callback) {\n\t\t\tconst needsToAttach = isEmpty(callbacks);\n\t\t\tcallbacks[id] = callback;\n\n\t\t\tif (needsToAttach) {\n\t\t\t\twindow.addEventListener(eventType, runCallbacks, true);\n\t\t\t}\n\t\t},\n\n\t\tremove(id) {\n\t\t\tdelete callbacks[id];\n\t\t\tconst canDetach = isEmpty(callbacks);\n\n\t\t\tif (canDetach) {\n\t\t\t\twindow.removeEventListener(eventType, runCallbacks, true);\n\t\t\t}\n\t\t},\n\t};\n}\n","/**\n * Sets up an Observer that calls the given callback\n */\nexport default function createObserver(Observer) {\n\tconst observed = new Map();\n\n\treturn {\n\t\tadd(id, target, callback, ...observerArgs) {\n\t\t\tconst observer = new Observer(callback, ...observerArgs);\n\t\t\tobserver.observe(target);\n\n\t\t\tconst observersArr = observed.get(id) || [];\n\t\t\tobserversArr.push({observer, target});\n\t\t\tobserved.set(id, observersArr);\n\t\t},\n\n\t\tremove(id) {\n\t\t\tconst value = observed.get(id);\n\t\t\tif (!value?.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvalue.forEach(({observer, target}) => {\n\t\t\t\tobserver.unobserve(target);\n\t\t\t});\n\n\t\t\tobserved.delete(id);\n\t\t},\n\t};\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\tlayerEvents,\n\tfit,\n\tfindTabbableNodes,\n} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {createRef} from '@servicenow/ui-renderer-snabbdom';\nimport isEqual from 'lodash/isEqual';\nimport once from 'lodash/once';\nimport noop from 'lodash/noop';\nimport setTailPosition from './utils/tail';\nimport {\n\tgetContent,\n\tgetFirstTrigger,\n\tisInPanel,\n\tfindTriggerFromEvent,\n\thoist,\n\tunhoist,\n} from './utils/dom';\nimport createGlobalListener from './utils/global-event-listener';\nimport createObserver from './utils/observer';\nimport createScrollListener from './utils/scroll-listener';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport focusBehavior, {handleFocusTrap} from '@servicenow/behavior-focus';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\n\nconst {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\n\nconst {resolveFitProperties, getBestFitInfo} = fit;\n\nconst onWindowResize = createGlobalListener('resize', {batch: true});\nconst clickListener = createGlobalListener('mousedown');\nconst keydownListener = createGlobalListener('keydown');\nconst scrollListener = createScrollListener();\nconst intersectionObserver = createObserver(IntersectionObserver);\nconst resizeObserver = createObserver(ResizeObserver);\n\n/**\n * Closes the popover. Removes any listeners that we've added and moves the\n * content back into the normal, non-hoisted location\n */\nfunction closePopover({id, panel, host, dispatch, updateState}) {\n\tlayerEvents.remove(id);\n\tclickListener.remove(id);\n\tkeydownListener.remove(id);\n\tonWindowResize.remove(id);\n\tscrollListener.remove(id);\n\tintersectionObserver.remove(id);\n\tresizeObserver.remove(id);\n\n\tconst content = getContent(host);\n\tunhoist(panel, content);\n\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'panel',\n\t\tvalue: null,\n\t});\n\n\tdispatch('NOW_POPOVER#CONTENT_HIDDEN', {});\n}\n\n/**\n * Opens the popover. Hoists the content nodes to the proper location and then\n * calls fit.\n */\nasync function openPopover({\n\thost,\n\tcontainer,\n\tdisableScroll,\n\tbare,\n\tdispatch,\n\tupdateState,\n\tinteractionType,\n\tconfigAria,\n}) {\n\tconst content = getContent(host);\n\n\t// invalid markup. No content has been slotted\n\tif (content.length === 0) {\n\t\treturn;\n\t}\n\n\tconst panel = await hoist(host, container, content);\n\tpanel.disableScroll = disableScroll;\n\tpanel.bare = bare;\n\tpanel.configAria = configAria;\n\tpanel.interactionType = interactionType;\n\n\tupdateState({\n\t\tshouldRender: false,\n\t\toperation: 'assign',\n\t\tvalue: {\n\t\t\tpanel,\n\t\t\tfinishedOpening: false,\n\t\t},\n\t});\n\n\tdispatch(() => ({type: 'PRIVATE#CHECK_FIT', payload: {}}));\n}\n\nfunction handleKeyDown(event, dispatch) {\n\t// escape closes the popover and refocuses the trigger\n\tif (event.key === 'Escape') {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tdispatch(() => ({\n\t\t\ttype: 'NOW_POPOVER#OPENED_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: false,\n\t\t\t\tactionSource: 'escape-press',\n\t\t\t},\n\t\t}));\n\n\t\t// return false to ensure parent popovers don't also respond to Escape\n\t\treturn false;\n\t}\n}\n\nfunction handleClick(event, host, panel, dispatch, updateState) {\n\tconst path = event.composedPath();\n\n\t// DEF0088795: The click event originates from the hoisted element in the\n\t// DOM. But if that hoisted component defines a Seismic eventHandler,\n\t// Seismic will re-emit that event from the original (unhoisted) content\n\t// host.\n\t//\n\t// So even though it feels like a single click event, there are actually 2\n\t// events being propagated, each with a different path. We need to know if\n\t// both of these events originate from the panel in order to correctly\n\t// _not_ dispatch OPENED_SET.\n\t//\n\t// `path` will include `panel` on the first click event, since the panel is\n\t// dynamically created and holds the hoisted element.\n\t//\n\t// `path` will include `host` on the 2nd click event, since the host is a\n\t// parent of the original (unhoisted) content node.\n\t//\n\t// We also need to guard against events coming from a nested popover panel\n\t// (e.g.: when we have a <now-select> in the content of a bigger\n\t// <now-popover>). These panels are hoisted independently, so the outer\n\t// panel is not in the composedPath of the inner panel.\n\n\tconst hostInPath = isInPanel(path, panel);\n\n\tif (!hostInPath) {\n\t\tupdateState({\n\t\t\tshouldRender: false,\n\t\t\toperation: 'set',\n\t\t\tpath: 'restoreFocus',\n\t\t\tvalue: false,\n\t\t});\n\t\tdispatch(() => ({\n\t\t\ttype: 'NOW_POPOVER#OPENED_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: false,\n\t\t\t\tactionSource: 'outside-click',\n\t\t\t\tpath,\n\t\t\t},\n\t\t}));\n\t}\n}\n\n/**\n * Once the popover is opened and we've fit the panel, we want to set up a\n * bunch of listeners to track things like: outside clicks, tab navigation,\n * scrolling, and focus management.\n */\nfunction handlePopoverOpened({\n\tid,\n\thost,\n\tpanel,\n\tupdateFit,\n\ttarget,\n\tcontent,\n\ttrigger,\n\tcontainer,\n\tdispatch,\n\tupdateState,\n\tfitContent,\n\tfitContentArea,\n\tcontentPosition,\n\tinteractionType,\n\tfocusPanel,\n\tbare,\n}) {\n\t// refit any time the window is resized. This is not using `updateFit`\n\t// because we do want to allow the fit position to change (otherwise a resize\n\t// might make panel content inaccessible).\n\tlet isWindowResizing = false;\n\tonWindowResize.add(id, () => {\n\t\tisWindowResizing = true;\n\t\tdispatch(() => ({type: 'PRIVATE#CHECK_FIT'}));\n\t});\n\tclickListener.add(id, (event) => {\n\t\thandleClick(event, host, panel, dispatch, updateState);\n\t});\n\tkeydownListener.add(id, (event) =>\n\t\thandleTabPress({\n\t\t\tevent,\n\t\t\tpanel,\n\t\t\tdispatch,\n\t\t\ttrigger,\n\t\t\tinteractionType,\n\t\t\tfocusPanel,\n\t\t\tbare,\n\t\t\tupdateState,\n\t\t}),\n\t);\n\tlayerEvents.add({\n\t\tid,\n\t\tevents: ['keydown'],\n\t\tcallback: (event) => {\n\t\t\thandleKeyDown(event, dispatch);\n\t\t},\n\t});\n\n\t// for dialog type popovers: we want to move focus to the first item in the\n\t// panel once the panel has been opened. However, we need to delay this until\n\t// the IntersectionObserver has fired and sets the visibility of contentArea\n\t// to visible.\n\n\t// when focusPanel is set to true and popover is not bare and without\n\t// interactive content, focus is applied to popover panel\n\n\tconst findFocusableNodes =\n\t\t(focusPanel && !bare) || interactionType === 'dialog'\n\t\t\t? once(findTabbableNodes)\n\t\t\t: noop;\n\n\t// When the target element is scrolled out-of-view, we want to stop showing\n\t// the panel. Similarly, when the target is scrolled back into view, we want\n\t// to show the panel again.\n\t//\n\t// Unlike Chrome/Firefox, Safari may not immediately trigger the callback\n\t// when the IntersectionObserver is first connected, so we can't rely on that\n\t// callback to initialize `targetVisible` or the correct styles. Since we\n\t// just called fit, assume that we're all good to display this until we get\n\t// an IntersectionObserver event that says we can't.\n\tlet targetVisible = true;\n\tfitContentArea.style.display = 'block';\n\tfitContentArea.style.visibility = 'visible';\n\n\tintersectionObserver.add(id, target, (entries) => {\n\t\ttargetVisible = entries[0].intersectionRatio > 0;\n\t\tfitContentArea.style.display = targetVisible ? 'block' : 'none';\n\t\tfitContentArea.style.visibility = targetVisible ? 'visible' : 'hidden';\n\n\t\tif (targetVisible) {\n\t\t\tconst focusableNodes = findFocusableNodes(panel);\n\t\t\tconst nodesLength = focusableNodes?.length ?? 0;\n\t\t\tif (nodesLength === 0 && focusPanel && !bare) {\n\t\t\t\tfitContent.setAttribute('tabIndex', '-1');\n\t\t\t\tfitContent.focus();\n\t\t\t} else if (nodesLength > 0 && interactionType === 'dialog') {\n\t\t\t\tfocusableNodes[0].focus();\n\t\t\t}\n\t\t}\n\t});\n\n\t// refit when scrolling, but force the position to remain the same\n\tscrollListener.add(id, host, container, () => {\n\t\tif (targetVisible) {\n\t\t\tupdateFit();\n\t\t}\n\t});\n\n\tif (contentPosition.includes('center')) {\n\t\tresizeObserver.add(id, fitContent, () => {\n\t\t\t// Only call update fit if the resize is caused content not window resize\n\t\t\tif (isWindowResizing) {\n\t\t\t\tisWindowResizing = false;\n\t\t\t} else if (targetVisible) {\n\t\t\t\tupdateFit();\n\t\t\t}\n\t\t});\n\t}\n\n\t// tell the world that we're all good to go :+1:\n\tdispatch(() => ({\n\t\ttype: 'NOW_POPOVER#CONTENT_VISIBLE',\n\t\tpayload: {\n\t\t\tcontent,\n\t\t},\n\t}));\n}\n\nfunction trapFocus(event, panel, trigger) {\n\tif (event.target === trigger) {\n\t\treturn event.preventDefault();\n\t}\n\n\tconst didFocus = handleFocusTrap(event, panel);\n\tif (didFocus) event.preventDefault();\n}\n\n/**\n * Event handler for when the `Tab` key is pressed while the popover is opened.\n * Depending on the interactionType property we will focus different elements.\n */\nconst handleTabPress = ({\n\tevent,\n\ttrigger,\n\tpanel,\n\tdispatch,\n\tinteractionType,\n\tfocusPanel,\n\tbare,\n\tupdateState,\n}) => {\n\tif (event.key !== 'Tab') return;\n\n\tif (!bare && focusPanel && findTabbableNodes(panel)?.length === 0) {\n\t\tevent.preventDefault();\n\t\treturn;\n\t}\n\n\t// When content contains interactive content, but shouldn't be\n\t// focused when the panel is first opened. When focus lands in\n\t// the panel, treat it like a dialog.\n\tif (interactionType === 'combo') {\n\t\tconst isTabInPanel = event.composedPath().includes(panel);\n\t\tif (isTabInPanel) {\n\t\t\ttrapFocus(event, panel, trigger);\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\tshouldRender: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'restoreFocus',\n\t\t\t\tvalue: false,\n\t\t\t});\n\t\t}\n\t\treturn;\n\t}\n\n\t// when the popover does not contain interactive content, we can just let the\n\t// browser natively handle the Tab.\n\tif (interactionType === 'none') {\n\t\tupdateState({\n\t\t\tshouldRender: false,\n\t\t\toperation: 'set',\n\t\t\tpath: 'restoreFocus',\n\t\t\tvalue: false,\n\t\t});\n\t\tdispatch(() => ({\n\t\t\ttype: 'NOW_POPOVER#OPENED_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: false,\n\t\t\t\tactionSource: 'tab-press',\n\t\t\t},\n\t\t}));\n\t\treturn;\n\t}\n\n\t// listbox interactions do not have a focus trap. shift-tab returns focus\n\t// back to the trigger element. Regular tab moves focus to the item after the\n\t// trigger, which can be handled natively. Regardless, the popover is closed\n\tif (interactionType === 'listbox') {\n\t\tconst isTabInPanel = event.composedPath().includes(panel);\n\t\tif (event.shiftKey && trigger) {\n\t\t\tevent.preventDefault();\n\t\t} else if (isTabInPanel) {\n\t\t\tevent.preventDefault();\n\t\t\tupdateState({\n\t\t\t\tshouldRender: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'restoreFocus',\n\t\t\t\tvalue: true,\n\t\t\t});\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\tshouldRender: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'restoreFocus',\n\t\t\t\tvalue: false,\n\t\t\t});\n\t\t}\n\t\tdispatch('NOW_POPOVER#OPENED_SET', {\n\t\t\tvalue: false,\n\t\t\tactionSource: 'tab-press',\n\t\t});\n\t\treturn;\n\t}\n\n\t// dialog types trap focus within the content and keep the popover open\n\t//if the content is not interactive, close the popover and move on to the next element\n\tif (interactionType === 'dialog') {\n\t\tconst isTabInPanel = event.composedPath().includes(panel);\n\t\t// Needed for nested popovers, when the parent and child both popovers are open, and interactionType is dialog,\n\t\t// don't close the popover, trap the focus. If there is no interactive content inside the popover, go ahead with the regular flow.\n\t\t// findTabbableNodes(panel) = Check if there is any interactive content\n\t\t// event.composedPath().includes(document.activeElement) = Check if focus is inside the child popover\n\t\tconst isChildPopverContentFocusable =\n\t\t\tevent.composedPath().includes(document.activeElement) &&\n\t\t\tfindTabbableNodes(panel).length !== 0;\n\n\t\tif (isTabInPanel || isChildPopverContentFocusable) {\n\t\t\ttrapFocus(event, panel, trigger);\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\tshouldRender: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'restoreFocus',\n\t\t\t\tvalue: false,\n\t\t\t});\n\t\t\tdispatch('NOW_POPOVER#OPENED_SET', {\n\t\t\t\tvalue: false,\n\t\t\t\tactionSource: 'tab-press',\n\t\t\t});\n\t\t}\n\t}\n};\n\n/**\n * Callback when the something in the `trigger` slot has been clicked. Need to\n * keep track of which trigger was clicked (in case multiple triggers are slotted\n * in), and then toggle the open state of the panel.\n */\nconst handleSlotClick = ({event, dispatch, updateState, slot}) => {\n\tconst clickedTrigger = findTriggerFromEvent(event, slot);\n\n\t// this can happen if you click, drag, and release off one trigger and on to\n\t// another. In that case the composedPath no longer includes the original\n\t// trigger.\n\tif (!clickedTrigger) {\n\t\treturn;\n\t}\n\n\t// keep track of which trigger was clicked. This is needed to know where to\n\t// position the panel (when there is no explicit `position-target`) and to\n\t// track which element to restore focus to once the panel is closed.\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'clickedTrigger',\n\t\tvalue: clickedTrigger,\n\t\tshouldRender: false,\n\t});\n\n\tdispatch(({properties}) => {\n\t\treturn {\n\t\t\ttype: 'NOW_POPOVER#OPENED_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: !properties.opened,\n\t\t\t\t...(properties.opened && {actionSource: 'trigger-click'}),\n\t\t\t},\n\t\t};\n\t});\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {opened} = state.properties;\n\n\tconst ref = createRef();\n\n\treturn (\n\t\t<slot\n\t\t\tname=\"trigger\"\n\t\t\tref={ref}\n\t\t\ton-slotchange={\n\t\t\t\topened ? () => dispatch(() => ({type: 'PRIVATE#CHECK_FIT'})) : undefined\n\t\t\t}\n\t\t\ton-click={(event) =>\n\t\t\t\thandleSlotClick({\n\t\t\t\t\tevent,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tslot: ref.current,\n\t\t\t\t})\n\t\t\t}\n\t\t/>\n\t);\n};\n\n/**\n * A popover lets you float temporary contextual content over other content,\n * relative to a triggering element.\n *\n * Popover content is placed in a panel element, which optionally provides\n * a visual tail that points the content back to its triggering element.\n * Both the content and triggering elements are customizable.\n *\n * In order to correctly position the content, the popover will hoist the\n * content out of the normal DOM flow and append it to the body. Therefore, the\n * content element that is used must be a Now® Experience UI Component in order\n * to correctly encapsulate styles and propagate actions.\n *\n * ```jsx\n * <now-popover>\n *\t <now-button slot=\"trigger\" label=\"Check out my popover\" />\n *\t <now-my-dialog slot=\"content\" />\n * </now-popover>\n * ```\n *\n * `now-popover` elements define a `refit()` method that can be used to force\n * the popover to recalculate the position of the panel. This is useful when\n * something changes the layout or causes elements to move when the popover is\n * already open.\n *\n * @seismicElement now-popover\n * @summary Temporary contextual content that displays over other content when a user selects the triggering element.\n * @uib.label Custom popover\n * @uib.icon custom-modal\n * @uib.description Temporary panel that floats over other content to provide contextual help and information when a user selects a triggering element\n * @uib.category popover\n * @uib.associatedTypes global.core\n * @uib.properties positioningToTrigger, hideTail, disableScroll, positions, configAria, focusPanel\n * @uib.actions NOW_POPOVER#CONTENT_HIDDEN, NOW_POPOVER#CONTENT_VISIBLE\n * @uib.slots content\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n */\ncreateEnhancedElement('now-popover', {\n\tproperties: {\n\t\t/**\n\t\t * Private property used by UIB to provide a more user-friendly control for positioning.\n\t\t * Maps values to the `positions` property using scripted policy.\n\t\t * @uib.label Positioning to trigger\n\t\t * @uib.description Sets the popover position relative to the triggering component.\n\t\t * Auto - default position\n\t\t * Top - aligns to top of the target.\n\t\t * Bottom - aligns to bottom of the target.\n\t\t * Start - aligns at the start of the target.\n\t\t * End- aligns at the end of the target.\n\t\t * @uib.defaultValue auto\n\t\t * @uib.typeMetadata.disabledConfigurationModes ['binding', 'script']\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Auto\",\"value\": \"auto\"},{\"label\": \"Top\",\"value\": \"top\"},{\"label\": \"Bottom\",\"value\": \"bottom\"},{\"label\": \"Start\",\"value\": \"start\"},{\"label\": \"End\",\"value\": \"end\"}]\n\t\t * @private\n\t\t */\n\t\tpositioningToTrigger: {\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['auto', 'top', 'bottom', 'start', 'end'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Type of content displayed in the popover. These types are similar to\n\t\t * ARIA roles and control how the popover manages focus.\n\t\t *\n\t\t * Valid values are:\n\t\t * - \"dialog\": Content contains interactive content. Focus\n\t\t *   stays within the content while the popover is opened.\n\t\t *   An example of this is a calendar picker.\n\t\t * - \"listbox\": Content contains a list of items that a user\n\t\t *   can select from (typically using the arrow keys). Focus does not stay\n\t\t *   within the content when the popover is opened. An example of this is\n\t\t *   a dropdown.\n\t\t * - \"combo\": Content contains interactive content, but isn't\n\t\t *   focused when the panel is first opened. After an interaction\n\t\t *   (e.g., arrow key press) moves focus into the panel, the panel is then\n\t\t *   treated as if it were a dialog (with a focus trap). An example of this\n\t\t *   is now-date-time.\n\t\t * - \"none\": Content contains no interactive content.\n\t\t *   An example of this is a tooltip.\n\t\t *\n\t\t * @type {(\"dialog\"|\"none\"|\"listbox\"|\"combo\")}\n\t\t */\n\t\tinteractionType: {\n\t\t\tdefault: 'dialog',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['dialog', 'none', 'listbox', 'combo'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * If true, the popover panel receives focus.\n\t\t * @type {boolean}\n\t\t */\n\t\tfocusPanel: {default: false, schema: {type: 'boolean'}},\n\n\t\t/**\n\t\t * If true, the popover does not include a visual tail that points\n\t\t * the content back to the trigger. Setting this property to true\n\t\t * changes the default value of the `positions` property.\n\t\t *\n\t\t * See the `positions` property for more details.\n\t\t * @type {boolean}\n\t\t */\n\t\thideTail: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * The element that triggers the content. If not specified,\n\t\t * the trigger slot triggers the content.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t **/\n\t\tpositionTarget: {\n\t\t\tshouldRenderWhenSet: false,\n\t\t},\n\t\t/**\n\t\t * When true, the popover opens. The value of this property automatically updates\n\t\t * when the user opens or closes the popover unless the `manage-opened` property is set.\n\t\t * You can use the `manage-opened` property to override the default behavior and handle the\n\t\t * `NOW_POPOVER#OPENED_SET` action manually.\n\t\t *\n\t\t * Note: Popover content may not be\n\t\t * positioned and visible when `NOW_POPOVER#OPENED_SET`\n\t\t * dispatches. See `NOW_POPOVER#CONTENT_VISIBLE` for\n\t\t * an action that dispatches only when content is correctly\n\t\t * positioned.\n\t\t * @type {{value: boolean}}\n\t\t */\n\t\topened: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * A list of possible positions to place the content relative to its\n\t\t * target, in order of preference. The content is placed in the\n\t\t * position that fits best.\n\t\t *\n\t\t * Each object in `positions` specifies which points on the target and\n\t\t * content elements align. The value of a point describes the\n\t\t * block then inline location on the edge of the element:\n\t\t *\n\t\t *  - top-start\n\t\t *  - top-center\n\t\t *  - top-end\n\t\t *  - center-end\n\t\t *  - bottom-end\n\t\t *  - bottom-center\n\t\t *  - bottom-start\n\t\t *  - center-start\n\t\t *\n\t\t * In a left-to-right language, `top-start` would be at the topmost and\n\t\t * leftmost point of the element, with each successive value moving\n\t\t * clockwise around the element.\n\t\t *\n\t\t * For example:\n\t\t *\n\t\t * The following aligns the bottom center of the content to the top center\n\t\t * of the target, which is commonly used for tooltip-like content:\n\t\t *\n\t\t *   { target: 'top-center', content: 'bottom-center' }\n\t\t *\n\t\t * To have the content positioned to the right of the target (in a\n\t\t * left-to-right language):\n\t\t *\n\t\t *   { target: 'center-end', content: 'center-start' }\n\t\t *\n\t\t * A common dropdown position, where content is aligned to the start of the\n\t\t * target and opens below the target:\n\t\t *\n\t\t *   { target: 'bottom-start', content: 'top-start' }\n\t\t *\n\t\t *\n\t\t * The default value depends on whether or not the popover includes a tail.\n\t\t * With a tail, the default positions center the content and the trigger:\n\t\t *\n\t\t *  [\n\t\t *    { target: 'top-center', content: 'bottom-center' },\n\t\t *    { target: 'bottom-center', content: 'top-center' },\n\t\t *    { target: 'center-end', content: 'center-start' },\n\t\t *    { target: 'center-start', content: 'center-end' }\n\t\t *  ]\n\t\t *\n\t\t * Without a tail, the default positions align the content and target\n\t\t * along an axis:\n\t\t *\n\t\t * \t[\n\t\t * \t\t{ target: 'bottom-start', content: 'top-start' },\n\t\t * \t\t{ target: 'bottom-end', content: 'top-end' },\n\t\t * \t\t{ target: 'top-start', content: 'bottom-start' },\n\t\t * \t\t{ target: 'top-end', content: 'bottom-end' },\n\t\t * \t\t{ target: 'top-end', content: 'top-start' },\n\t\t * \t\t{ target: 'bottom-end', content: 'bottom-start' },\n\t\t * \t\t{ target: 'top-start', content: 'top-end' },\n\t\t * \t\t{ target: 'bottom-start', content: 'bottom-end' }\n\t\t * \t];\n\t\t *\n\t\t * When overriding the default value, provide\n\t\t * multiple position objects to this property. This practice allows for\n\t\t * alternative placements in the case where the content does not\n\t\t * completely fit in the preferred position.\n\t\t *\n\t\t * @type {Array<{target: string, content: string}>}\n\t\t */\n\t\tpositions: {\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\toneOf: [\n\t\t\t\t\t\t{type: 'string'},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t\t\t\t'top-center',\n\t\t\t\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t\t\t\t'center-start',\n\t\t\t\t\t\t\t\t\t\t'center-end',\n\t\t\t\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t\t\t\t'bottom-center',\n\t\t\t\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t\t\t\t'top-center',\n\t\t\t\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t\t\t\t'center-start',\n\t\t\t\t\t\t\t\t\t\t'center-end',\n\t\t\t\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t\t\t\t'bottom-center',\n\t\t\t\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trequired: ['target'],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\tshouldRenderWhenSet: false,\n\t\t},\n\t\t/**\n\t\t * Optional sizing constraints to enforce on the popover content. Valid keys are:\n\t\t *\n\t\t *  - width\n\t\t *  - minWidth\n\t\t *  - maxWidth\n\t\t *  - height\n\t\t *  - minHeight\n\t\t *  - maxHeight\n\t\t *\n\t\t * The value for each key must be a positive integer representing a\n\t\t * pixel value to apply to the corresponding content style.\n\t\t * Alternatively, you can specify the string `\"target\"` to have the content\n\t\t * match the value of the target element.\n\t\t *\n\t\t * For example, to ensure the content is at least 400x200 pixels:\n\t\t *\n\t\t *  {\n\t\t *\t\t\"minWidth\": 400,\n\t\t *\t\t\"minHeight\": 200\n\t\t *  }\n\t\t *\n\t\t * To ensure that the content is always as wide as its target:\n\t\t *\n\t\t *\t{\n\t\t *\t\t\"width\": \"target\"\n\t\t *\t}\n\t\t *\n\t\t * @private\n\t\t * @type {PopoverConstrain}\n\t\t */\n\t\tconstrain: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\twidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\tminWidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\tmaxWidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\theight: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\tminHeight: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\tmaxHeight: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Number of pixels to shift the popover content away from the trigger.\n\t\t * @type {number}\n\t\t * @private\n\t\t */\n\t\toffset: {schema: {type: ['array', 'number']}},\n\t\t/**\n\t\t * Which element to hoist the popover panel to.\n\t\t * @type {HTMLElement}\n\t\t * @private\n\t\t */\n\t\tcontainer: {\n\t\t\tget default() {\n\t\t\t\treturn document.body;\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * If true, content in the popover panel will not overflow with a scrollbar.\n\t\t * Use this flag if your popover content already contains a custom\n\t\t * scroll container for handling overflowed content.\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableScroll: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If true, content in the popover panel appears with no border or tail.\n\t\t * @type {boolean}\n\t\t */\n\t\tbare: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-popover. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'panel' key corresponds to the entire container in now-popover-panel.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#dialog\n\t\t * for properties and accepted values.\n\t\t * @type {{ panel: { 'aria-*': string, role: string } }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tpanel: {...configAriaLabelRoleSchema, required: ['aria-label']},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\t/**\n\t\t * Whether or not the popover should restore\n\t\t * focus to the trigger element when the popover\n\t\t * is closed\n\t\t */\n\t\trestoreFocus: true,\n\t\t/**\n\t\t * A reference to the `now-popover-panel` element that is dynamically\n\t\t * created when the popover is opened.\n\t\t */\n\t\tpanel: undefined,\n\t\t/**\n\t\t * Because Seismic dispatches and renders are asynchronous, the panel and\n\t\t * its contents are not rendered and hoisted immediately when the `opened`\n\t\t * prop is set. This state value tracks when we know that the DOM is in a\n\t\t * good spot and we can add event listeners and fire\n\t\t * `NOW_POPOVER#CONTENT_VISIBLE`\n\t\t */\n\t\tfinishedOpening: false,\n\t\t/**\n\t\t * When multiple triggers are slotted in, this value tracks which one of those\n\t\t * triggers is responsible for causing the popover to be opened.\n\t\t */\n\t\tclickedTrigger: undefined,\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: function handleConnected({\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\thost,\n\t\t\tupdateProperties,\n\t\t}) {\n\t\t\t// In standalone HTML apps, the Seismic default value for `container`\n\t\t\t// is evaluated before `document.body` exists\n\t\t\tif (!properties.container) {\n\t\t\t\tupdateProperties({container: document.body});\n\t\t\t}\n\n\t\t\t// Adds a public `refit()` method on the host of the popover, which will\n\t\t\t// force the popover to re-run fit. This works kind of like the focus\n\t\t\t// behavior, where we're adding public methods to give the consumer control\n\t\t\t// over when to do something that doesn't really fit in the props-down\n\t\t\t// actions-up model.\n\t\t\thost.refit = () => dispatch('PRIVATE#CHECK_FIT');\n\t\t\tconst {\n\t\t\t\tinteractionType,\n\t\t\t\tdisableScroll,\n\t\t\t\tconfigAria,\n\t\t\t\tcontainer,\n\t\t\t\topened,\n\t\t\t\tbare,\n\t\t\t} = properties;\n\n\t\t\tif (opened) {\n\t\t\t\topenPopover({\n\t\t\t\t\thost,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tdisableScroll,\n\t\t\t\t\tbare,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tinteractionType,\n\t\t\t\t\tconfigAria,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: function handleDisconnected({\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tstate,\n\t\t}) {\n\t\t\tclosePopover({\n\t\t\t\tpanel: state.panel,\n\t\t\t\tid: action.meta.id,\n\t\t\t\thost: action.payload.host,\n\t\t\t\tdispatch,\n\t\t\t\tupdateState,\n\t\t\t});\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: function handlePropertyChanged({\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t}) {\n\t\t\tconst {host, name, value, previousValue} = action.payload;\n\n\t\t\t// If a property related to fit changes we need to re-run fit\n\t\t\tif (\n\t\t\t\tname === 'positions' ||\n\t\t\t\tname === 'offset' ||\n\t\t\t\tname === 'constrain' ||\n\t\t\t\t(name === 'positionTarget' && previousValue)\n\t\t\t) {\n\t\t\t\t// Deep equality check because non-scalar props (offset, position,\n\t\t\t\t// etc) might change all the time and this is cheaper than recalcing\n\t\t\t\t// all of fit.\n\t\t\t\tif (!isEqual(value, previousValue)) {\n\t\t\t\t\tdispatch(() => ({\n\t\t\t\t\t\ttype: 'PRIVATE#CHECK_FIT',\n\t\t\t\t\t\tpayload: {from: 'propertyChanged'},\n\t\t\t\t\t}));\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (name === 'opened') {\n\t\t\t\tconst {\n\t\t\t\t\tcontainer,\n\t\t\t\t\tdisableScroll,\n\t\t\t\t\tbare,\n\t\t\t\t\tinteractionType,\n\t\t\t\t\tconfigAria,\n\t\t\t\t\tpositionTarget,\n\t\t\t\t} = properties;\n\t\t\t\tconst {id} = action.meta;\n\t\t\t\tconst {restoreFocus} = state;\n\n\t\t\t\tif (value) {\n\t\t\t\t\topenPopover({\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tcontainer,\n\t\t\t\t\t\tdisableScroll,\n\t\t\t\t\t\tbare,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tinteractionType,\n\t\t\t\t\t\tconfigAria,\n\t\t\t\t\t});\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tpath: 'restoreFocus',\n\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst isTop = layerEvents.isTopLayer(id);\n\t\t\t\t\tclosePopover({\n\t\t\t\t\t\tid,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tpanel: state.panel,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t});\n\t\t\t\t\tconst trigger =\n\t\t\t\t\t\tstate.clickedTrigger || getFirstTrigger(host) || positionTarget;\n\t\t\t\t\tif (restoreFocus && trigger && isTop) {\n\t\t\t\t\t\tif (interactionType === 'combo') {\n\t\t\t\t\t\t\ttrigger.focus({input: true});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttrigger.focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Checks to see if we have everything we need to run fit. If so,\n\t\t * do it and apply the styles to the panel.\n\t\t */\n\t\t'PRIVATE#CHECK_FIT': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({host, state, action, dispatch, properties, updateState}) => {\n\t\t\t\tconst {panel, clickedTrigger} = state;\n\t\t\t\tconst {\n\t\t\t\t\tdir,\n\t\t\t\t\topened,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tpositionTarget,\n\t\t\t\t\tinteractionType,\n\t\t\t\t\tfocusPanel,\n\t\t\t\t\tbare,\n\t\t\t\t} = properties;\n\t\t\t\tconst content = getContent(host);\n\t\t\t\tconst trigger = clickedTrigger || getFirstTrigger(host);\n\t\t\t\tconst target = positionTarget || trigger;\n\t\t\t\tconst fitContentArea =\n\t\t\t\t\tpanel && panel.shadowRoot.querySelector('.fit-content-area');\n\t\t\t\tconst fitContent =\n\t\t\t\t\tpanel && panel.shadowRoot.querySelector('.fit-content');\n\n\t\t\t\tif (!opened || !target || !content || !fitContentArea || !fitContent) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Switching from content center position to non center position while\n\t\t\t\t// open can cause incorrect calculations.\n\t\t\t\tfitContent.removeAttribute('style');\n\n\t\t\t\t// Sets up an IntersectionObserver to adjust the 'fitContent'\n\t\t\t\t// maxWidth based on visibility: if not fully visible,sets\n\t\t\t\t// maxWidth to 100% to enable horizontal scrolling.\n\t\t\t\tconst id = action.meta.id;\n\t\t\t\tintersectionObserver.add(\n\t\t\t\t\tid,\n\t\t\t\t\tfitContent,\n\t\t\t\t\t(entries) => {\n\t\t\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\t\t\tif (!entry.isIntersecting) {\n\t\t\t\t\t\t\t\tfitContent.style.maxWidth = '100%';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\troot: null,\n\t\t\t\t\t\tthreshold: 1.0,\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\t// Use 'constrain.width' value instead of 'target' if\n\t\t\t\t// 'target.offsetWidth.' is less than 'constrain.width'.\n\t\t\t\t// Defaults to browser width if 'maxWidth' is unspecified.\n\t\t\t\tconst constrain = properties.constrain ?? {};\n\t\t\t\tconstrain.maxWidth =\n\t\t\t\t\tconstrain?.maxWidth === 'target' && constrain?.width\n\t\t\t\t\t\t? target.offsetWidth > constrain.width\n\t\t\t\t\t\t\t? 'target'\n\t\t\t\t\t\t\t: constrain.width\n\t\t\t\t\t\t: (constrain.maxWidth ?? document.documentElement.clientWidth);\n\n\t\t\t\t// set up a smaller, more focused fit function that we can call on\n\t\t\t\t// scroll or content resize. We don't want to go through the entire\n\t\t\t\t// PRIVATE#CHECK_FIT action for a couple reasons:\n\t\t\t\t//\n\t\t\t\t// - dispatched actions are scheduled, causing a somewhat noticeable\n\t\t\t\t// delay between the target moving and the panel refitting to catch up.\n\t\t\t\t//\n\t\t\t\t// - when scrolling: we don't want to let the fit position of the panel\n\t\t\t\t// change, because it's a poor user experience when the panel moves\n\t\t\t\t// around a lot after opening.\n\t\t\t\tlet fitProps = {\n\t\t\t\t\t...resolveFitProperties({\n\t\t\t\t\t\tdir,\n\t\t\t\t\t\tpositions: properties.positions,\n\t\t\t\t\t\tconstrain: constrain,\n\t\t\t\t\t\thideTail: properties.hideTail || bare,\n\t\t\t\t\t\toffset: properties.offset,\n\t\t\t\t\t}),\n\t\t\t\t\ttarget,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tcontent: fitContent,\n\t\t\t\t\tcontentArea: fitContentArea,\n\t\t\t\t};\n\n\t\t\t\tconst updateFit = () => {\n\t\t\t\t\t// run fit calc\n\t\t\t\t\tconst fitInfo = getBestFitInfo({...fitProps});\n\n\t\t\t\t\t// apply styles from fitInfo\n\t\t\t\t\tObject.assign(fitContentArea.style, fitInfo.style.contentArea);\n\t\t\t\t\tObject.assign(fitContent.style, fitInfo.style.content);\n\n\t\t\t\t\t// position tail\n\t\t\t\t\tif (!properties.hideTail) {\n\t\t\t\t\t\tconst {dimensions, targetPosition, contentPosition} = fitInfo;\n\t\t\t\t\t\tsetTailPosition({\n\t\t\t\t\t\t\tcontentArea: fitContentArea,\n\t\t\t\t\t\t\ttargetPosition,\n\t\t\t\t\t\t\tcontentPosition,\n\t\t\t\t\t\t\ttargetDimensions: dimensions.target,\n\t\t\t\t\t\t\tpanel: state.panel,\n\t\t\t\t\t\t\tcontentAreaDimensions: dimensions.contentArea,\n\t\t\t\t\t\t\tcontentDimensions: dimensions.content,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fitInfo;\n\t\t\t\t};\n\n\t\t\t\tconst fitInfo = updateFit();\n\n\t\t\t\t// Let the first call to fit calculate the position and size of the\n\t\t\t\t// content. When we call updateFit again on scroll, we want to force\n\t\t\t\t// the same position and minimum content size\n\t\t\t\tfitProps.positions = [\n\t\t\t\t\t[fitInfo.targetPosition, fitInfo.contentPosition],\n\t\t\t\t];\n\n\t\t\t\t// set up listeners and handle focus, but only when we first open.\n\t\t\t\t// don't want to redo this stuff if PRIVATE#CHECK_FIT is called again\n\t\t\t\t// while the panel is already open.\n\t\t\t\tif (!state.finishedOpening) {\n\t\t\t\t\thandlePopoverOpened({\n\t\t\t\t\t\tid: action.meta.id,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tpanel,\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\tupdateFit,\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttrigger,\n\t\t\t\t\t\tcontainer,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tfitContent,\n\t\t\t\t\t\tfitContentArea,\n\t\t\t\t\t\tcontentPosition: fitInfo.contentPosition,\n\t\t\t\t\t\tinteractionType,\n\t\t\t\t\t\tfocusPanel,\n\t\t\t\t\t\tbare,\n\t\t\t\t\t});\n\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tpath: 'finishedOpening',\n\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t/*Re-registering the scrollListener to get the updated values. */\n\t\t\t\tif (action.payload?.from === 'propertyChanged') {\n\t\t\t\t\tscrollListener.remove(id);\n\t\t\t\t\tscrollListener.add(id, host, container, () => {\n\t\t\t\t\t\tupdateFit();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when a user opens or closes the popover. Payload contains a\n\t\t * `value` property, which is `true` when the popover opens and\n\t\t * `false` when the popover closes. Payload also contains a `actionSource` property\n\t\t * which is one of `outside-click`, `trigger-click`, `tab-press`, `escape-press` that\n\t\t * indicates by what action the popover was closed. `actionSource` property will\n\t\t * be present only when the popover is closed.\n\t\t *\n\t\t * Note: Because rendering is asynchronous, the popover content DOM may not be in\n\t\t * the correct state when this action is dispatched.\n\t\t *\n\t\t * Use `NOW_POPOVER#CONTENT_VISIBLE` and `NOW_POPOVER#CONTENT_HIDDEN` actions\n\t\t * to run additional logic once the popover content is rendered in or\n\t\t * removed from the DOM respectively. Set the `manage-opened` property to override the default\n\t\t * behavior and handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t */\n\t\t'NOW_POPOVER#OPENED_SET': {},\n\n\t\t/**\n\t\t * Dispatched when the popover opens and renders the content. Unlike\n\t\t * `NOW_POPOVER#OPENED_SET`, this action only fires after the popover\n\t\t * content is rendered in the DOM. The `content` property refers to\n\t\t * the current element in popover's `content` slot.\n\t\t * @uib.description Dispatched when the popover opens and renders the content\n\t\t * @type {{content: NodeList}}\n\t\t */\n\t\t'NOW_POPOVER#CONTENT_VISIBLE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcontent: {type: 'array'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Dispatched when the popover content has been closed and removed. Unlike\n\t\t * `NOW_POPOVER#OPENED_SET`, this action only fires after the popover\n\t\t * content is fully removed from the DOM.\n\t\t * @uib.description Dispatched when the popover content has been closed and removed\n\t\t * @type {{}}\n\t\t */\n\t\t'NOW_POPOVER#CONTENT_HIDDEN': {schema: {type: 'object'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * The trigger element that the popover content is positioned in relation to.\n\t\t * If the `manage-opened` property is not set, then clicking on this slot will\n\t\t * toggle the opened state of the popover.\n\t\t */\n\t\ttrigger: {},\n\n\t\t/**\n\t\t * The popover content that is visible when the `opened` property\n\t\t * is true. This *must* be a component and cannot inherit\n\t\t * styles from a parent element. If the content is not interactive,\n\t\t * you should wrap it in an `aria-live` region so that a\n\t\t * screenreader announces it when the popover opens.\n\t\t */\n\t\tcontent: {},\n\t},\n\tbehaviors: [{behavior: focusBehavior}],\n\tview,\n});\n","import {findAncestors} from './dom';\n\n/**\n * Attaches scroll listeners to all ancestor elements of the given host element\n * that have shadow roots (because scroll events do not automatically bubble\n * through shadow boundaries), as well as the window. When any of the scroll\n * listeners are fired, trigger the callback function.\n * @param {HTMLElement} host\n * @param {string} componentId\n * @param {function} callback\n */\nexport default function createScrollListener() {\n\tconst attached = new Map();\n\n\treturn {\n\t\tasync add(id, host, container, callback) {\n\t\t\tconst ancestors = await findAncestors(id, host, container);\n\t\t\tconst targets = [];\n\t\t\tancestors.forEach((el) => el.shadowRoot && targets.push(el));\n\n\t\t\tconst listener = (e) => {\n\t\t\t\tconst [source] = e.composedPath();\n\t\t\t\tif (ancestors.has(source)) {\n\t\t\t\t\tcallback(e);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor (const target of targets) {\n\t\t\t\ttarget.shadowRoot.addEventListener('scroll', listener, true);\n\t\t\t}\n\n\t\t\twindow.addEventListener('scroll', listener, true);\n\t\t\tthis.remove(id);\n\t\t\tattached.set(id, {targets, listener});\n\t\t},\n\t\tremove(id) {\n\t\t\tconst value = attached.get(id);\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {targets, listener} = value;\n\t\t\tfor (const target of targets) {\n\t\t\t\ttarget.shadowRoot.removeEventListener('scroll', listener, true);\n\t\t\t}\n\n\t\t\twindow.removeEventListener('scroll', listener, true);\n\n\t\t\tattached.delete(id);\n\t\t},\n\t};\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-popover-panel.scss';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {configAriaSchema} from '@servicenow/library-schemas';\n\nconst {COMPONENT_DOM_READY} = actionTypes;\n// DEF0415693: Applying the class for safari only to fix the rendering glitch\nconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nconst view = (state) => {\n\tconst {tailDirection, disableScroll, bare, configAria, interactionType} =\n\t\tstate.properties;\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'fit-content-area': true,\n\t\t\t\t'has-tail': tailDirection && !bare,\n\t\t\t\t[`-${tailDirection}`]: tailDirection && !bare,\n\t\t\t\t'disable-scroll': disableScroll,\n\t\t\t\t'is-bare': bare,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'fit-content': true,\n\t\t\t\t\t'fit-content-transform': isSafari,\n\t\t\t\t}}\n\t\t\t\trole={interactionType === 'dialog' ? 'dialog' : undefined}\n\t\t\t\t{...filterAriaAttributes(configAria, 'panel')}\n\t\t\t\ton-blur={(e) => e.target.parentElement.classList.remove('has-focus')}\n\t\t\t\ton-focus={(e) => e.target.parentElement.classList.add('has-focus')}\n\t\t\t>\n\t\t\t\t<slot name=\"content\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * Panel element that holds markup and styles required to correctly position\n * popover content relative to its trigger element.\n *\n * This component should not be used outside of the now-popover implementation.\n *\n * ```jsx\n * <now-popover-panel tail-direction=\"up\">\n *   <now-my-dialog slot=\"content\" />\n * </now-popover>\n * ```\n *\n * @seismicElement now-popover-panel\n * @private\n * @summary A container for popover content.\n */\ncreateEnhancedElement('now-popover-panel', {\n\tproperties: {\n\t\t/**\n\t\t * Direction to display the tail.\n\t\t * @type {\"up\"|\"down\"|\"left\"|\"right\"}\n\t\t * @private\n\t\t */\n\t\ttailDirection: {},\n\t\t/**\n\t\t * Function to call once the panel has\n\t\t * been rendered\n\t\t * @type {(HTMLElement) => void}\n\t\t * @private\n\t\t */\n\t\tonReady: {},\n\t\t/**\n\t\t * If true, content in the popover panel will not overflow with a scrollbar.\n\t\t * Use this flag if your popover content already contains a custom\n\t\t * scroll container for handling overflowed content.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tdisableScroll: {},\n\t\t/**\n\t\t * If true, panel displays without border and tail.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tbare: {},\n\t\t/**\n\t\t * Type of content displayed in the popover. These types are similar to\n\t\t * ARIA roles and control how the popover manages focus.\n\t\t *\n\t\t * Valid values are:\n\t\t * - \"dialog\": Content contains interactive content. Focus\n\t\t *   stays within the content while the popover is opened.\n\t\t *   An example of this is a calendar picker.\n\t\t * - \"listbox\": Content contains a list of items that a user\n\t\t *   can select from (typically using the arrow keys). Focus does not stay\n\t\t *   within the content when the popover is opened. An example of this is\n\t\t *   a dropdown.\n\t\t * - \"combo\": Content contains interactive content, but isn't\n\t\t *   focused when the panel is first opened. After an interaction\n\t\t *   (e.g., arrow key press) moves focus into the panel, the panel is then\n\t\t *   treated as if it were a dialog (with a focus trap). An example of this\n\t\t *   is now-date-time.\n\t\t * - \"none\": Content contains no interactive content.\n\t\t *   An example of this is a tooltip.\n\t\t *\n\t\t * @type {(\"dialog\"|\"none\"|\"listbox\"|\"combo\")}\n\t\t * @private\n\t\t */\n\t\tinteractionType: {\n\t\t\tdefault: 'dialog',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['dialog', 'none', 'listbox', 'combo'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-popover-panel. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'panel' key corresponds to the entire container in now-popover-panel.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#dialog\n\t\t * for properties and accepted values.\n\t\t * @type {{ panel: { 'aria-*': string, role: string } }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t * @uib.defaultValue {}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tpanel: configAriaSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]({host, properties}) {\n\t\t\tproperties.onReady(host);\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Contains popover content to float above other content on the\n\t\t * page.\n\t\t */\n\t\tcontent: {},\n\t},\n\tstyles,\n\tview,\n});\n","import './now-popover';\nimport './now-popover-panel';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-progress-bar.scss';\nimport {isNil, isNaN, isFinite, toNumber} from 'lodash';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\n\nconst getProgress = (value, max) => {\n\tif (isIndeterminate(value)) {\n\t\treturn undefined;\n\t} else if (value < 0) {\n\t\treturn 0;\n\t} else if (value > max) {\n\t\treturn 100;\n\t} else if (value <= max) {\n\t\treturn (value * 100) / max;\n\t}\n};\n\nconst isIndeterminate = (value) => {\n\tif (isNaN(toNumber(value)) || isNil(toNumber(value)) || !isFinite(value)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nconst renderLabel = (label, labelPosition, nowId, size) => {\n\tif (!label) return;\n\treturn (\n\t\t<div\n\t\t\tid={`progress-bar-${nowId}-label`}\n\t\t\tclass={{\n\t\t\t\t'now-progress-bar-label': true,\n\t\t\t\t['-' + labelPosition]: labelPosition,\n\t\t\t\t['-' + size]: size,\n\t\t\t}}\n\t\t>\n\t\t\t{label}\n\t\t</div>\n\t);\n};\n\n/** @seismicView now-progress-bar */\nconst view = (state) => {\n\tconst {label, labelPosition, pathType, size, value, max, configAria, nowId} =\n\t\tstate.properties;\n\n\treturn (\n\t\t<div className=\"now-progress-bar\">\n\t\t\t{labelPosition === 'top' &&\n\t\t\t\trenderLabel(label, labelPosition, nowId, size)}\n\t\t\t<div className=\"now-progress-bar-bar\">\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-progress-bar-track': true,\n\t\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t\t'is-indeterminate': isIndeterminate(value),\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-progress-bar-path': true,\n\t\t\t\t\t\t\t['is-' + pathType]: pathType,\n\t\t\t\t\t\t\t'is-indeterminate': isIndeterminate(value),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{...filterAriaAttributes(configAria, 'progressbar')}\n\t\t\t\t\t\taria-labelledby={label ? `progress-bar-${nowId}-label` : undefined}\n\t\t\t\t\t\taria-valuemin={isIndeterminate(value) ? undefined : 0}\n\t\t\t\t\t\taria-valuemax={isIndeterminate(value) ? undefined : max}\n\t\t\t\t\t\taria-valuenow={isIndeterminate(value) ? undefined : value}\n\t\t\t\t\t\tstyle={{inlineSize: getProgress(value, max) + `%`}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{labelPosition === 'bottom' &&\n\t\t\t\trenderLabel(label, labelPosition, nowId, size)}\n\t\t</div>\n\t);\n};\n\n/**\n * A linear indicator that provides feedback about an ongoing, user-initiated process.\n * Progress bar can represent a process that is loading or in progress.\n * When it represents progress, an indicator shows how much the user has completed out of the total.\n *\n * ```jsx\n * <now-progress-bar label=\"Loading...\" />\n * <now-progress-bar path-type=\"alert\" size=\"lg\" value=\"0.25\" label=\"Upload Error\" />\n * ```\n *\n * @seismicElement now-progress-bar\n * @summary A progress bar displays a path showing the completion or loading progress of an ongoing, user-initiated process.\n * @uib.label Progress bar\n * @uib.icon progress-bar\n * @uib.description Horizontal bar that fills with color to show progress\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties label, labelPosition, size, pathType, max, value, configAria\n * @uib.layout.label.children label, labelPosition\n * @uib.layout.label.icon text-outline\n * @uib.layout.value.children value, max\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n */\ncreateEnhancedElement('now-progress-bar', {\n\tpresentational: true,\n\tproperties: {\n\t\t/**\n\t\t * Label for the progress bar.\n\t\t * @type {string}\n\t\t * @uib.defaultValue\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Where to display the label for the progress bar (above or below).\n\t\t * @type {('top'|'bottom')}\n\t\t * @uib.defaultValue top\n\t\t */\n\t\tlabelPosition: {\n\t\t\tdefault: 'top',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['top', 'bottom'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the progress bar styles. This indicates display progress by\n\t\t * animating a bar along the length of a fixed, visible path.\n\t\t * @type {('initial'|'positive'|'alert'|'error'|'inactive'|'pink'|'green'|'orange'|'gray')}\n\t\t * @uib.label Style\n\t\t * @uib.description Sets the progress bar style.\n\t\t */\n\t\tpathType: {\n\t\t\tdefault: 'initial',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'initial',\n\t\t\t\t\t'positive',\n\t\t\t\t\t'alert',\n\t\t\t\t\t'error',\n\t\t\t\t\t'inactive',\n\t\t\t\t\t'pink',\n\t\t\t\t\t'green',\n\t\t\t\t\t'orange',\n\t\t\t\t\t'gray',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Describes how much work the task indicated by the\n\t\t * progress bar requires. If present, must have a value greater than zero\n\t\t * and be a valid floating point number.\n\t\t * Default value: 1.\n\t\t * @type {number}\n\t\t * @uib.label Max. value\n\t\t * @uib.description Sets the value that the progress bar must reach in order to be complete. If present, must have a value greater than zero and be a valid floating point number.\n\t\t */\n\t\tmax: {default: 1, schema: {type: 'number', minimum: 0}},\n\t\t/**\n\t\t * Specifies how much of the represented task is complete.\n\t\t * If the `max` property is provided, must be a valid floating point number between `0` and the value of the `max` property.\n\t\t * If the `max` property is omitted, must be a valid floating point number between `0` and `1`.\n\t\t *\n\t\t * If a valid value (one that can be coerced to a number) is provided,\n\t\t * then a determinate progress bar displays.\n\t\t * If no value is provided, or an invalid value is provided, then an\n\t\t * indeterminate progress bar displays.\n\t\t * @type {number}\n\t\t * @uib.label Value\n\t\t * @uib.description Specifies how much of the represented task is complete. If the `max` property is provided, must be a valid floating point number between `0` and the value of the `max` property. If the `max` property is omitted, must be a valid floating point number between `0` and `1`. If a valid value (one that can be coerced to a number) is provided, then a determinate progress bar displays. If no value is provided, or an invalid value is provided, then an indeterminate progress bar displays.\n\t\t * @uib.defaultValue 0.25\n\t\t */\n\t\tvalue: {schema: {type: 'number', minimum: 0}},\n\t\t/**\n\t\t * Sets the height of the progress bar track.\n\t\t * @type {('xs'|'sm'|'md'|'lg')}\n\t\t * @uib.description Sets the height of the progress bar track.\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {type: 'string', enum: ['xs', 'sm', 'md', 'lg']},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-progress-bar. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element. The 'progressbar'\n\t\t * key corresponds to the inner html `<div>` with a role of 'progressbar'.\n\t\t * Note: if you do not use the label property, you must provide an accessible\n\t\t * name to the progressbar by setting an `aria-label` or this will result\n\t\t * in an accessibility violation.\n\t\t *\n\t\t * @type {{ progressbar: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description ARIA properties that are set on the inner html. See https://www.w3.org/TR/wai-aria-1.2/#progressbar for properties and accepted values.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tprogressbar: {...configAriaLabelSchema},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tview,\n\tstyles,\n});\n","import './now-progress-bar';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-radio-buttons.scss';\nimport {\n\trenderFormFieldMessages,\n\trenderFormFieldLabel,\n\trenderLabelEnd,\n\tgetAriaDescribedByList,\n} from '@servicenow/now-input';\nimport {messagesSchema} from '@servicenow/now-input';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {fieldLayoutSchema} from '@servicenow/now-input';\nimport {getColumnStyles} from '@servicenow/library-enhanced-utils';\n\nconst {COMPONENT_BOOTSTRAPPED} = actionTypes;\n\nconst handleBlur = (e, dispatch) => {\n\tdispatch(({properties}) => {\n\t\tconst {required, value, name, invalid} = properties;\n\t\treturn {\n\t\t\ttype: 'NOW_RADIO_BUTTONS#INVALID_SET',\n\t\t\tpayload: {name, value: true},\n\t\t\tshouldDispatch: Boolean(required && !value && !invalid),\n\t\t};\n\t});\n};\n\nconst handleClick = (e, option, dispatch) => {\n\tif (option.disabled || option.readonly) {\n\t\treturn;\n\t}\n\tdispatch(({properties}) => {\n\t\tconst {disabled, readonly, name} = properties;\n\t\treturn {\n\t\t\ttype: 'NOW_RADIO_BUTTONS#VALUE_SET',\n\t\t\tpayload: {name, value: option.id},\n\t\t\tshouldDispatch: !disabled && !readonly,\n\t\t};\n\t});\n\tdispatch(({properties}) => {\n\t\tconst {required, name, invalid} = properties;\n\t\treturn {\n\t\t\ttype: 'NOW_RADIO_BUTTONS#INVALID_SET',\n\t\t\tpayload: {name, value: false},\n\t\t\tshouldDispatch: required && invalid,\n\t\t};\n\t});\n};\n\nconst renderRadioButtons = (\n\tlayout,\n\tnowId,\n\tlabel,\n\thelperContent,\n\tmessages,\n\toptions,\n\tinvalid,\n\treadonly,\n\tdisabled,\n\tsize,\n\tvalue,\n\trequired,\n\toptional,\n\tdispatch,\n\torientation,\n\tname = `radio-buttons-${nowId}`,\n) => {\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-radio-buttons': true,\n\t\t\t\t['-' + layout]: layout,\n\t\t\t}}\n\t\t\tid={`form-field-${nowId}`}\n\t\t\trole=\"radiogroup\"\n\t\t\taria-describedby={getAriaDescribedByList({\n\t\t\t\tlabel,\n\t\t\t\thelperContent,\n\t\t\t\toptional,\n\t\t\t\tnowId,\n\t\t\t\tmessages,\n\t\t\t\tlayout: orientation,\n\t\t\t})}\n\t\t\taria-invalid={invalid ? 'true' : undefined}\n\t\t\taria-label={label}\n\t\t>\n\t\t\t{options.map((option) => {\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-radio-button': true,\n\t\t\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t\t\t'is-readonly': readonly || option.readonly,\n\t\t\t\t\t\t\t'is-disabled': disabled || option.disabled,\n\t\t\t\t\t\t\t[`-${size}`]: size,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid={`radio-${nowId}-${option.id}`}\n\t\t\t\t\t\t\tclassName=\"now-radio-button-input\"\n\t\t\t\t\t\t\tautofocus={option.autofocus}\n\t\t\t\t\t\t\tchecked={option.checked || option.id === value}\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\tdisabled || readonly || option.disabled || option.readonly\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\tvalue={option.id}\n\t\t\t\t\t\t\ton-click={(e) => handleClick(e, option, dispatch)}\n\t\t\t\t\t\t\ton-blur={(e) => handleBlur(e, dispatch)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\tclassName=\"now-radio-button-label\"\n\t\t\t\t\t\t\thtmlFor={`radio-${nowId}-${option.id}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"now-line-height-crop\">{option.label}</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tdisabled,\n\t\thelperContent,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\tlabel,\n\t\tlayout,\n\t\tmessages,\n\t\toptional,\n\t\toptions,\n\t\treadonly,\n\t\trequired,\n\t\tsize,\n\t\tvalue,\n\t\tnowId,\n\t\tfieldLayout,\n\t\twrapLabel,\n\t} = state.properties;\n\tconst renderAsElement = 'legend';\n\tconst {layout: orientation, columns} = fieldLayout;\n\n\tif (orientation === 'horizontal') {\n\t\treturn (\n\t\t\t<fieldset\n\t\t\t\tclass={{\n\t\t\t\t\t'now-radio-buttons-fieldset': true,\n\t\t\t\t\t['-' + 'field-' + orientation]: orientation,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t'will-wrap': wrapLabel,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"now-radio-buttons-fieldset-child\"\n\t\t\t\t\tstyle={{...getColumnStyles(columns)}}\n\t\t\t\t>\n\t\t\t\t\t{renderFormFieldLabel(\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\trequired,\n\t\t\t\t\t\toptional,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\thideRequiredIndicator,\n\t\t\t\t\t\trenderAsElement,\n\t\t\t\t\t\torientation,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\twrapLabel,\n\t\t\t\t\t)}\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{renderRadioButtons(\n\t\t\t\t\t\t\tlayout,\n\t\t\t\t\t\t\tnowId,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\t\tmessages,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\t\treadonly,\n\t\t\t\t\t\t\tdisabled,\n\t\t\t\t\t\t\tsize,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\trequired,\n\t\t\t\t\t\t\toptional,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\torientation,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{renderFormFieldMessages(nowId, messages, 0)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{renderLabelEnd()}\n\t\t\t\t</div>\n\t\t\t</fieldset>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<fieldset\n\t\t\t\tclass={{\n\t\t\t\t\t'now-radio-buttons-fieldset': true,\n\t\t\t\t\t['-' + 'field-' + orientation]: orientation,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t'will-wrap': wrapLabel,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"now-radio-buttons-fieldset-child\">\n\t\t\t\t\t{renderFormFieldLabel(\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\trequired,\n\t\t\t\t\t\toptional,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\thideRequiredIndicator,\n\t\t\t\t\t\trenderAsElement,\n\t\t\t\t\t\torientation,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\twrapLabel,\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{renderRadioButtons(\n\t\t\t\t\tlayout,\n\t\t\t\t\tnowId,\n\t\t\t\t\tlabel,\n\t\t\t\t\thelperContent,\n\t\t\t\t\tmessages,\n\t\t\t\t\toptions,\n\t\t\t\t\tinvalid,\n\t\t\t\t\treadonly,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tsize,\n\t\t\t\t\tvalue,\n\t\t\t\t\trequired,\n\t\t\t\t\toptional,\n\t\t\t\t\tdispatch,\n\t\t\t\t\torientation,\n\t\t\t\t)}\n\t\t\t\t{renderFormFieldMessages(nowId, messages, 0)}\n\t\t\t</fieldset>\n\t\t);\n\t}\n};\n\n/**\n * A selectable input that lets the user choose\n * a single option in a predefined set of mutually exclusive options.\n *\n * ```jsx\n * <now-radio-buttons\n *   label=\"Choose one:\"\n *   name=\"choice\"\n *   options={[{id: 'opt1', label: 'Option 1'}]}\n * />\n * ```\n *\n * @seismicElement now-radio-buttons\n * @summary An interactive control for selecting a single input from a group of mutually exclusive choices.\n * @uib.label Radio buttons\n * @uib.icon radio-buttons\n * @uib.description An interactive control for selecting a single input from a group of mutually exclusive choices.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, layout, options, value, manageValue, name, disabled, readonly, label, wrapLabel, helperContent, optional, required, hideRequiredIndicator, invalid, manageInvalid, messages, fieldLayout\n * @uib.layout.label.children label, wrapLabel, required, hideRequiredIndicator, optional, helperContent\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.innerComponents now-button-iconic, now-icon, now-popover, now-input\n */\ncreateEnhancedElement('now-radio-buttons', {\n\tproperties: {\n\t\t/**\n\t\t * When true, the user cannot interact with the field\n\t\t * or change its value and the field appears greyed out.\n\t\t * @type {boolean}\n\t\t * @uib.description Gray out and prevent interaction\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If set, an iconic button with a popover appears next to the field\n\t\t * label to display additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.label Helper text\n\t\t * @uib.description Whether to include an iconic button with popover next to the field label for displaying additional hint text to the user. Use plain text to allow the text to be translatable\n\t\t * @uib.fieldType string\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * When true, the required indicator is visually hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Required Indicator\n\t\t * @uib.description When true, the required indicator is visually hidden. Use this for forms where most fields are required, along with the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the field value is invalid,\n\t\t * which is visually reflected in the field display.\n\t\t * @type {boolean}\n\t\t * @uib.description Set this flag to indicate that the field is in an incorrect state, which will be visually reflected in the field display.\n\t\t */\n\t\tinvalid: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_RADIO_BUTTONS#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * User-visible label for the field.\n\t\t * @type {string}\n\t\t * @uib.description Label describing the overall purpose of the radio group field\n\t\t * @uib.defaultValue Choose one:\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Determines whether the radio buttons are vertical or horizontal.\n\t\t * @type {('vertical'|'horizontal')}\n\t\t * @uib.description Whether the radio buttons should be laid out vertically or horizontally\n\t\t */\n\t\tlayout: {\n\t\t\tdefault: 'vertical',\n\t\t\tschema: {type: 'string', enum: ['vertical', 'horizontal']},\n\t\t},\n\t\t/**\n\t\t * Array of inline alert messages that display below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that are displayed below the field\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t\tschema: messagesSchema,\n\t\t},\n\t\t/**\n\t\t * When true, the field is optional and does not need to be completed\n\t\t * before submitting the form. Results in a visual indicator.\n\t\t * @type {boolean}\n\t\t * @uib.description Visually indicates that the field is optional\n\t\t * @uib.defaultValue false\n\t\t */\n\t\toptional: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Array of configuration objects to set behavior\n\t\t * for the radio group. Each object must contain a unique `id`.\n\t\t * @type {Array.<{id: (string|number), label: string, checked: boolean, readonly: boolean, disabled: boolean}>}\n\t\t * @uib.description Array of objects providing configuration for the options available within the radio group\n\t\t * @uib.defaultValue [{\"id\": \"one\", \"label\": \"Option 1\", \"checked\": true}, {\"id\": \"two\", \"label\": \"Option 2\"}, {\"id\": \"three\", \"label\": \"Option 3\"}]\n\t\t * @uib.typeMetadata.emptyStateBehavior EMPTY_ARRAY\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"label\" }\n\t\t */\n\t\toptions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tid: {type: ['string', 'number']},\n\t\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\t\tchecked: {type: 'boolean'},\n\t\t\t\t\t\treadonly: {type: 'boolean'},\n\t\t\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\t\t},\n\t\t\t\t\trequired: ['id'],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Name of the field control. Must be unique if there are multiple\n\t\t * radio group components on a page.\n\t\t * @type {string}\n\t\t * @uib.label Identifier\n\t\t * @uib.description Name passed along in dispatched actions. Required. If an identifier is not provided, the radio group will not function correctly.\n\t\t * @uib.defaultValue radio\n\t\t * @uib.required\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field.\n\t\t * @type {boolean}\n\t\t * @uib.label Read-only\n\t\t * @uib.description By enabling this property, the user cannot modify the value of the field. The field is not disabled in this setting.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\treadonly: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user must enter a value in the\n\t\t * input field before they can submit the form.\n\t\t * @type {boolean}\n\t\t * @uib.description This property allows you to indicate that the user must enter a value in the field before proceeding.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\trequired: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Size of the radio button.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md']}},\n\t\t/**\n\t\t * The `id` of the option selected by the user, or\n\t\t * the first option passed in with `checked` set to `true`.\n\t\t * @type {(string|number)}\n\t\t * @uib.label Selected option\n\t\t * @uib.defaultValue one\n\t\t * @uib.description Contains the `id` value of the option selected by the user, or the first option passed in with a `checked` value.\n\t\t */\n\t\tvalue: {manageable: true, schema: {type: ['string', 'number']}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `value` property.\n\t\t * An action with type `NOW_RADIO_BUTTONS#VALUE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the value property. Use the value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValue: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, form field and slotted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of the label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the `horizontal` field layout, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: ({properties, updateProperties}) => {\n\t\t\tconst {options} = properties;\n\t\t\tconst selectedOption = options.find((option) => option?.checked);\n\t\t\tif (selectedOption) {\n\t\t\t\tupdateProperties({value: selectedOption.id});\n\t\t\t}\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user interacts with a radio button in the group.\n\t\t * Payload contains the name of the control and the `id` of the\n\t\t * currently selected radio button.\n\t\t * @type {{name: string, value: (string|number)}}\n\t\t * @uib.description Dispatched when the user interacts with a radio button in the group\n\t\t */\n\t\t'NOW_RADIO_BUTTONS#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'object'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\tconst focusTarget = host.shadowRoot.querySelector(\n\t\t\t\t\t\t'input.now-radio-button-input',\n\t\t\t\t\t);\n\n\t\t\t\t\tif (focusTarget) {\n\t\t\t\t\t\tfocusTarget.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{behavior: truncationBehavior},\n\t\t{behavior: tooltipBehavior},\n\t],\n\tstyles,\n\tview,\n});\n","import './now-radio-buttons';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {extensionSplit} from '@servicenow/library-enhanced-utils';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport styles from './_now-message.scss';\n\nconst view = (state) => {\n\tconst {alignment} = state.properties;\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-message': true,\n\t\t\t\t...extensionSplit(alignment),\n\t\t\t}}\n\t\t>\n\t\t\t<slot name=\"media\" />\n\t\t\t<div className=\"now-message-child\">\n\t\t\t\t<slot name=\"message\" />\n\t\t\t\t<slot name=\"actions\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * Lets you compose messages using standard\n * interactions, patterns, behaviors and applied styles. Use cases include\n * empty states, boolean feedback, and confirmation messages.\n *\n * ```jsx\n * <now-message>\n * \t<img\n * \t\tslot=\"media\"\n * \t\tclassName=\"now-m-inline-end--xxl\"\n * \t\tsrc=\"...\"\n * \t\talt=\"...\"\n * \t/>\n * \t<div slot=\"message\" className=\"now-m-block--xl now-m-inline-end--xl\">\n * \t\t<h3 className=\"now-heading--lg now-m-block--0\">...</h3>\n * \t\t<p className=\"now-m-block-start--lg now-m-block-end--0\">...</p>\n * \t</div>\n * \t<div slot=\"actions\" className=\"now-align\">\n * \t\t<now-button\n * \t\t\tlabel=\"...\"\n * \t\t\tclassName=\"now-m-inline-end--sm\"\n * \t\t/>\n * \t\t<now-button label=\"...\" />\n * \t</div>\n * </now-message>\n * ```\n *\n * @seismicElement now-message\n * @summary Message framework allowing various alignments of slotted content.\n * @uib.label Message\n * @uib.icon message\n * @uib.description A framework for presenting cohesive messages, including text, images, and actions.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties alignment\n **/\ncreateEnhancedElement('now-message', {\n\tproperties: {\n\t\t/**\n\t\t * Sets the alignment. Options include: adaptive (will transition from horizontal to\n\t\t * vertical and vice versa), vertical, vertical-centered, or horizontal.\n\t\t * @type {('adaptive'|'vertical'|'vertical-centered')}\n\t\t * @uib.description Sets the alignment\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Adaptive\", \"value\": \"adaptive\"},{\"label\": \"Vertical\", \"value\": \"vertical\"},{\"label\": \"Vertical centered\", \"value\": \"vertical-centered\"}, {\"label\": \"Horizontal\", \"value\": \"horizontal\"}]\n\t\t * @uib.defaultValue adaptive\n\t\t */\n\t\talignment: {\n\t\t\tdefault: 'adaptive',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['adaptive', 'vertical', 'vertical-centered'],\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [{behavior: focusBehavior}],\n\tstyles,\n\tslots: {\n\t\t/**\n\t\t * Slot for media. Add illustration, tile icon, or image that brings visual\n\t\t * impact and meaning to the message.\n\t\t */\n\t\tmedia: {},\n\t\t/**\n\t\t * Slot for message. The heading should contain a title that conveys the purpose of\n\t\t * the component. The body should give users guidance on taking an action.\n\t\t */\n\t\tmessage: {},\n\t\t/**\n\t\t * Slot for buttons that perform actions.\n\t\t */\n\t\tactions: {},\n\t},\n\tview,\n});\n","import './now-message';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-template-message-empty-state.scss';\nimport '@servicenow/now-button';\nimport '@servicenow/now-illustration';\nimport '@servicenow/now-message';\nimport resizeBehavior from '@servicenow/behavior-resize';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\n\nconst renderIllustration = (illustration) => {\n\tif (illustration) {\n\t\treturn (\n\t\t\t<now-illustration\n\t\t\t\tclassName=\"now-template-message-empty-state-illustration\"\n\t\t\t\tslot=\"media\"\n\t\t\t\tsize=\"auto\"\n\t\t\t\tillustration={illustration}\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst renderHeading = (heading, content) => {\n\tconst {level, label} = heading;\n\tconst TagName = level ? `h${level}` : 'p';\n\treturn (\n\t\t<TagName\n\t\t\tclass={{\n\t\t\t\t'now-template-message-empty-state-heading': true,\n\t\t\t\t'no-content': !content,\n\t\t\t}}\n\t\t>\n\t\t\t{label}\n\t\t</TagName>\n\t);\n};\n\nconst renderContent = (content) => {\n\tif (content) {\n\t\treturn (\n\t\t\t<p className=\"now-template-message-empty-state-content\">{content}</p>\n\t\t);\n\t}\n};\n\nconst renderAction = (action, size, dispatch) => {\n\treturn (\n\t\t<now-button\n\t\t\tclassName=\"now-template-message-empty-state-action\"\n\t\t\tsize={size === 'sm' ? 'sm' : 'md'}\n\t\t\tvariant={action.variant}\n\t\t\tlabel={action.label}\n\t\t\ticon={action.icon}\n\t\t\tdisabled={action.disabled}\n\t\t\ttooltip-content={action.tooltipContent}\n\t\t\tconfig-aria={action.configAria}\n\t\t\ton-click={() => {\n\t\t\t\tif (action.disabled) return;\n\t\t\t\tconst type =\n\t\t\t\t\taction.clickActionType ||\n\t\t\t\t\t'NOW_TEMPLATE_MESSAGE_EMPTY_STATE#ACTION_CLICKED';\n\t\t\t\tdispatch(type, {action});\n\t\t\t}}\n\t\t/>\n\t);\n};\n\nconst renderActions = (actions, size, dispatch) => {\n\tif (Array.isArray(actions) && actions.length) {\n\t\treturn (\n\t\t\t<div slot=\"actions\" className=\"now-template-message-empty-state-actions\">\n\t\t\t\t{actions.map((action) => renderAction(action, size, dispatch))}\n\t\t\t</div>\n\t\t);\n\t}\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {actions, alignment, content, heading, illustration} = state.properties;\n\tconst {size} = state;\n\treturn (\n\t\t<now-message\n\t\t\tclass={{\n\t\t\t\t'now-template-message-empty-state': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t\t[`-${alignment}`]: alignment,\n\t\t\t}}\n\t\t\talignment={alignment}\n\t\t>\n\t\t\t{renderIllustration(illustration)}\n\t\t\t<div slot=\"message\" className=\"now-template-message-empty-state-messages\">\n\t\t\t\t{renderHeading(heading, content)}\n\t\t\t\t{renderContent(content)}\n\t\t\t</div>\n\t\t\t{renderActions(actions, size, dispatch)}\n\t\t</now-message>\n\t);\n};\n\n/**\n * A message that displays when there is no information or incomplete details to show in a dedicated space.\n *\n * ```jsx\n * <now-template-message-empty-state\n *   heading={{label: \"No results found\", level: \"4\"}}\n *   content=\"Please try your search again\"\n *   illustration=\"no-search-results\"\n *   actions={[{label: 'Go', variant: 'primary'}]}\n * />\n * ```\n *\n * @seismicElement now-template-message-empty-state\n * @summary Displays an illustration, heading, short description, and optional action buttons.\n * @uib.label Empty state\n * @uib.icon template-message-empty-state\n * @uib.description A message that displays when there is no information or incomplete details to show in a dedicated space.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties illustration, alignment, heading, content, actions\n * @uib.layout.message.children heading, content, actions\n * @uib.layout.message.icon chat-outline\n * @uib.actions NOW_TEMPLATE_MESSAGE_EMPTY_STATE#ACTION_CLICKED\n */\ncreateEnhancedElement('now-template-message-empty-state', {\n\tproperties: {\n\t\t/**\n\t\t * An array of objects that defines the buttons displayed.\n\t\t * The keys for each object are properties for `now-button`. See\n\t\t * `now-button` for more information on using these properties.\n\t\t * - `label`: String. Label describing the action. Required.\n\t\t * - `icon`: String. Icon displayed with the label.\n\t\t * - `variant`: String. Button style variant.\n\t\t * - `disabled`: Boolean. Set to `true` to mute the button color and disable user click interactions.\n\t\t * - `tooltipContent`: String. Text to display in the optional tooltip associated with the button.\n\t\t * - `configAria`: Object. ARIA attributes to set on the action button.\n\t\t * - `clickActionType`: String. Overrides the default action type dispatched when the user clicks the action. Default: `\"NOW_TEMPLATE_MESSAGE_EMPTY_STATE#ACTION_CLICKED\"`.\n\t\t * @type {{ label: string, icon: string, variant: string, disabled: boolean, tooltipContent: string, configAria: object, clickActionType: string}[]}\n\t\t * @uib.description Array of action buttons to display in the component\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"label\", \"icon\": \"icon\" }\n\t\t */\n\t\tactions: {\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\t\ticon: {nowUIType: 'icon', type: 'string'},\n\t\t\t\t\t\tvariant: {type: 'string'},\n\t\t\t\t\t\ttooltipContent: {type: 'string'},\n\t\t\t\t\t\tclickActionType: {type: 'string'},\n\t\t\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\t\t\tconfigAria: configAriaLabelRoleSchema,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the alignment. Options include `adaptive` or `vertical-centered`\n\t\t * @type {('adaptive'|'vertical-centered')}\n\t\t * @uib.description Sets the alignment\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Adaptive\", \"value\": \"adaptive\"},{\"label\": \"Vertical centered\", \"value\": \"vertical-centered\"}, {\"label\": \"Horizontal\", \"value\": \"horizontal\"}]\n\t\t * @uib.defaultValue vertical-centered\n\t\t */\n\t\talignment: {\n\t\t\tdefault: 'vertical-centered',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['vertical-centered', 'adaptive'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Secondary text to display in the empty state message.\n\t\t * @type {string}\n\t\t * @uib.description Secondary text to display in the empty state message\n\t\t * @uib.defaultValue Please try your search again\n\t\t * @uib.translatable true\n\t\t */\n\t\tcontent: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * An object with properties to configure the primary text for the empty state:\n\t\t * - `label`: Text content for the heading.\n\t\t * - `level`: HTML heading element number used to render the heading. If not provided, it will render as a `p` tag.\n\t\t * @type {{label: string, level: (1|2|3|4|5|6)}}\n\t\t * @uib.description Primary text to display in the empty state message\n\t\t * @uib.defaultValue {\"label\": \"No results found\"}\n\t\t */\n\t\theading: {\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\tlevel: {type: 'number', enum: [1, 2, 3, 4, 5, 6]},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Name of the illustration to use.\n\t\t * @type {('add-attachment'|'add-data'|'ai-general'|'completed-tasks'|'error'|'first-time-user'|'interrupted'|'no-activities'|'no-data'|'no-search-results'|'offline'|'permissions'|'unconfigured')}\n\t\t * @uib.description Name of the illustration to use\n\t\t * @uib.defaultValue no-search-results\n\t\t * @uib.typeMetadata.choices [{\"label\": \"No illustration\", \"value\": \"\"}, {\"label\": \"Add attachment\", \"value\": \"add-attachment\"}, {\"label\": \"AI general\", \"value\": \"ai-general\"}, {\"label\": \"Add data\", \"value\": \"add-data\"}, {\"label\": \"Completed tasks\", \"value\": \"completed-tasks\"}, {\"label\": \"Error\", \"value\": \"error\"}, {\"label\": \"First time user\", \"value\": \"first-time-user\"}, {\"label\": \"Interrupted\", \"value\": \"interrupted\"}, {\"label\": \"No activities\", \"value\": \"no-activities\"}, {\"label\": \"No data\", \"value\": \"no-data\"}, {\"label\": \"No search results\", \"value\": \"no-search-results\"}, {\"label\": \"Offline\", \"value\": \"offline\"}, {\"label\": \"Permissions\", \"value\": \"permissions\"}, {\"label\": \"Unconfigured\", \"value\": \"unconfigured\"}]\n\t\t */\n\t\tillustration: {\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'add-attachment',\n\t\t\t\t\t'add-data',\n\t\t\t\t\t'ai-general',\n\t\t\t\t\t'completed-tasks',\n\t\t\t\t\t'error',\n\t\t\t\t\t'first-time-user',\n\t\t\t\t\t'interrupted',\n\t\t\t\t\t'no-activities',\n\t\t\t\t\t'no-data',\n\t\t\t\t\t'no-search-results',\n\t\t\t\t\t'offline',\n\t\t\t\t\t'permissions',\n\t\t\t\t\t'unconfigured',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user clicks an action button. The payload includes a\n\t\t * reference to the clicked action. You can override the action type\n\t\t * by configuring `clickActionType`.\n\t\t * @type {{action: Object}}\n\t\t */\n\t\t'NOW_TEMPLATE_MESSAGE_EMPTY_STATE#ACTION_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\taction: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: {type: 'string'},\n\t\t\t\t\t\t\ticon: {type: 'string'},\n\t\t\t\t\t\t\tvariant: {type: 'string'},\n\t\t\t\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\t\t\t\tclickActionType: {type: 'string'},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\tsize: 'sm',\n\t},\n\tbehaviors: [\n\t\t{behavior: focusBehavior},\n\t\t{\n\t\t\tbehavior: resizeBehavior,\n\t\t\toptions: {\n\t\t\t\ttimer: {type: 'throttle', wait: 500},\n\t\t\t\tpreventRender: true,\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t['NOW_RESIZE#ELEMENT_RESIZED']: ({action, properties, updateState}) => {\n\t\t\tconst {width, height} = action.payload;\n\t\t\tconst {alignment} = properties;\n\t\t\tif (\n\t\t\t\t(alignment === 'vertical-centered' && width >= 500) ||\n\t\t\t\t(alignment === 'horizontal' && height >= 500)\n\t\t\t) {\n\t\t\t\tupdateState({size: 'lg'});\n\t\t\t} else if (\n\t\t\t\t(alignment === 'vertical-centered' && width >= 250) ||\n\t\t\t\t(alignment === 'horizontal' && height >= 250)\n\t\t\t) {\n\t\t\t\tupdateState({size: 'md'});\n\t\t\t} else {\n\t\t\t\tupdateState({size: 'sm'});\n\t\t\t}\n\t\t},\n\t},\n\tstyles,\n\tview,\n});\n","import './now-template-message-empty-state';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {toEmbeddableUrl} from '@servicenow/library-enhanced-utils';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-text-link.scss';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-tooltip';\nimport {t} from 'sn-translate';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\n\nconst _renderIcon = (icon, position, iconSize) => {\n\tif (icon) {\n\t\tconst marginSide = position === 'start' ? 'end' : 'start';\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclass={{\n\t\t\t\t\t'now-text-link-icon': true,\n\t\t\t\t\t['now-m-inline-' + marginSide + '--xxs']: true,\n\t\t\t\t\t['-' + position]: true,\n\t\t\t\t}}\n\t\t\t\ticon={icon}\n\t\t\t\tsize={iconSize}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\nconst removeJavaScriptProtocol = (href, id) => {\n\tconst normalizedHref = href.trim().toLowerCase();\n\tconst allowedJavascriptCases = ['javascript:void(0)', 'javascript:void(0);'];\n\tif (\n\t\t!normalizedHref.startsWith('javascript:') ||\n\t\tallowedJavascriptCases.includes(normalizedHref)\n\t) {\n\t\treturn toEmbeddableUrl(href);\n\t} else {\n\t\tprocess.env.NODE_ENV === 'development'\n\t\t\t? // eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[@servicenow/now-text-link: ${id}] \"javascript\" is considered an unsafe URL protocol and this URL has been removed.`,\n\t\t\t\t)\n\t\t\t: undefined;\n\t}\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tlabel = '',\n\t\thref = '',\n\t\ticonStart,\n\t\ticonEnd,\n\t\ticonSize,\n\t\tvariant,\n\t\tunderlined,\n\t\topensWindow,\n\t\tconfigAria,\n\t\tdownload,\n\t\tnowId,\n\t\tshowTooltip,\n\t} = state.properties;\n\n\treturn (\n\t\t<a\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TEXT_LINK#CLICKED',\n\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}}\n\t\t\thref={removeJavaScriptProtocol(href, nowId)}\n\t\t\tclass={{\n\t\t\t\t'now-text-link': true,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t'show-underline': underlined,\n\t\t\t\t'show-tooltip': showTooltip,\n\t\t\t}}\n\t\t\ttarget={opensWindow ? '_blank' : undefined}\n\t\t\trel={opensWindow ? 'noopener' : undefined}\n\t\t\tattr-download={download}\n\t\t\tdata-ariadescribedby={label}\n\t\t\tdata-tooltip={label}\n\t\t\ton-mouseenter={showTooltip ? handleTooltipShow(dispatch) : undefined}\n\t\t\ton-mouseleave={showTooltip ? handleTooltipHide(dispatch) : undefined}\n\t\t\ton-focusin={showTooltip ? handleTooltipShow(dispatch) : undefined}\n\t\t\ton-focusout={showTooltip ? handleTooltipHide(dispatch) : undefined}\n\t\t\t{...filterAriaAttributes(configAria, 'link')}\n\t\t>\n\t\t\t{_renderIcon(iconStart, 'start', iconSize)}\n\t\t\t{label}\n\t\t\t{_renderIcon(iconEnd, 'end', iconSize)}\n\t\t\t{opensWindow ? (\n\t\t\t\t<span id=\"linkLabel\" className=\"now-a11y-label\">\n\t\t\t\t\t{t('Link opens in new window or tab')}\n\t\t\t\t</span>\n\t\t\t) : null}\n\t\t</a>\n\t);\n};\n\n/**\n * A text link is a stylized element of text that is linked to another resource.\n * You can distinguish a text link from regular body text by its secondary color.\n *\n * Text links are different from buttons. Buttons are reserved for actions.\n * See the usage guidance for the Button component for more information.\n *\n * ```jsx\n * <now-text-link label=\"Link text\" href=\"http://example.com\" variant=\"secondary\" />\n * ```\n *\n * @seismicElement now-text-link\n * @summary A styled link displayed as a text label.\n * @uib.label Text link\n * @uib.icon text-link\n * @uib.description A text link is a stylized element of text that is linked to another resource\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties label, href, opensWindow, download, variant, underlined, iconStart, iconEnd, iconSize, configAria, landmark, showTooltip\n * @uib.layout.identifier.children iconStart, iconEnd, iconSize\n * @uib.layout.identifier.icon image-outline\n * @uib.layout.accessibility.children showTooltip, configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_TEXT_LINK#CLICKED\n */\ncreateEnhancedElement('now-text-link', {\n\tproperties: {\n\t\t/**\n\t\t * Text displayed as a link.\n\t\t * @type {string}\n\t\t * @uib.description Text displayed as a link\n\t\t * @uib.defaultValue Link\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Link URL opened when the user clicks link text.\n\t\t * @type {string}\n\t\t * @uib.label Link\n\t\t * @uib.description URL opened when the user clicks link text\n\t\t * @uib.defaultValue https://www.servicenow.com/\n\t\t */\n\t\thref: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Sets link colors.\n\t\t * @type {('primary'|'secondary')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Sets link colors\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'primary',\n\t\t\tschema: {type: 'string', enum: ['primary', 'secondary']},\n\t\t},\n\t\t/**\n\t\t * If defined, specifies the icon to display at the start of the text link.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon left of label\n\t\t * @uib.description Displays an icon at the start of the text link.\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticonStart: {schema: {type: 'string'}},\n\t\t/**\n\t\t * If defined, specifies the icon to display at the end of the text link.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon right of label\n\t\t * @uib.description Displays an icon at the end of the text link.\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticonEnd: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Size of the optional icons on the left and right sides of the link.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * @uib.description Size of the optional icons on the left and right sides of the link\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}, {\"label\": \"Large\", \"value\": \"lg\"}, {\"label\": \"Extra large\", \"value\": \"xl\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\ticonSize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {type: 'string', enum: ['sm', 'md', 'lg', 'xl']},\n\t\t},\n\t\t/**\n\t\t * When true, underlines the link at all times, not only on hover.\n\t\t * All links show underline on hover.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to underline the link at all times\n\t\t */\n\t\tunderlined: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Opens link in a new window or tab (depending on user's browser\n\t\t * configuration). \"Link opens in new window\" is announced\n\t\t * to assistive technology users.\n\t\t *\n\t\t * Note: Open links in new browser windows or tabs sparingly\n\t\t * because it is less accessible for users.\n\t\t * @type {boolean}\n\t\t * @uib.label Open new window\n\t\t * @uib.description Opens link in a new window or tab (depending on user's browser configuration). \"Link opens in new window\" is announced to assistive technology users.\n\t\t */\n\t\topensWindow: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-text-link. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'link' key corresponds to the inner html `<a>` element in\n\t\t * now-text-link. See https://www.w3.org/TR/wai-aria-1.2/#link for\n\t\t * properties and accepted values.\n\t\t * @type {{ link: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configure ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlink: configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelRoleHasPopUpSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the browser downloads the file instead of\n\t\t * navigating to a URL. Provide the value as a string to pre-populate the\n\t\t * filename of the downloaded file.\n\t\t * @type {(string|boolean)}\n\t\t * @uib.label Filename override\n\t\t * @uib.description Set to instruct the browser to download a file instead of navigating to a URL. Provide the value as a string to pre-populate the filename of the downloaded file\n\t\t * @uib.fieldType string\n\t\t */\n\t\tdownload: {schema: {type: ['string', 'boolean']}},\n\t\t/**\n\t\t * When true, shows a tooltip with full link text on hover or keyboard focus.\n\t\t * Use this property when truncating the link text with CSS.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, shows a tooltip with full link text on hover or keyboard focus. Use this property when truncating the link text with CSS.\n\t\t */\n\t\tshowTooltip: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this link\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [{behavior: focusBehavior}, {behavior: tooltipBehavior}],\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the link is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the link is clicked\n\t\t */\n\t\t'NOW_TEXT_LINK#CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t},\n});\n","import './now-text-link';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","/**\n * Creates a mirror textarea to calculate width based on cols when autoresize is enabled.\n */\nexport function calculateWidthBasedOnCols(element) {\n\tvar properties = [\n\t\t'direction', // RTL support\n\t\t'boxSizing',\n\t\t'overflowX',\n\t\t'overflowY', // copy the scrollbar for IE\n\n\t\t'borderTopWidth',\n\t\t'borderRightWidth',\n\t\t'borderBottomWidth',\n\t\t'borderLeftWidth',\n\t\t'borderStyle',\n\n\t\t'paddingTop',\n\t\t'paddingRight',\n\t\t'paddingBottom',\n\t\t'paddingLeft',\n\n\t\t// https://developer.mozilla.org/en-US/docs/Web/CSS/font\n\t\t'fontStyle',\n\t\t'fontVariant',\n\t\t'fontWeight',\n\t\t'fontStretch',\n\t\t'fontSize',\n\t\t'fontSizeAdjust',\n\t\t'lineHeight',\n\t\t'fontFamily',\n\n\t\t'textAlign',\n\t\t'textTransform',\n\t\t'textIndent',\n\t\t'textDecoration', // might not make a difference, but better be safe\n\n\t\t'letterSpacing',\n\t\t'wordSpacing',\n\n\t\t'tabSize',\n\t\t'MozTabSize',\n\t];\n\n\t// The mirror textarea will replicate the textarea's style\n\tvar ta = document.createElement('textarea');\n\tta.id = 'textarea-mirror';\n\tdocument.body.appendChild(ta);\n\n\tvar style = ta.style;\n\tvar computed = window.getComputedStyle\n\t\t? window.getComputedStyle(element)\n\t\t: ta.currentStyle; // currentStyle for IE < 9\n\n\tstyle.visibility = 'hidden'; // not 'display: none' because we want rendering\n\n\t// Transfer the element's properties to the textarea\n\tproperties.forEach((prop) => {\n\t\tstyle[prop] = computed[prop];\n\t});\n\n\tstyle.overflow = computed.overflow;\n\tta.cols = element.cols;\n\tconst width = ta.clientWidth + 'px';\n\tdocument.body.removeChild(ta);\n\treturn width;\n}\n\n/**\n * Calculates height based on rows passed when autoresize is enabled.\n */\nexport function calculateHeightBasedOnRows(textarea, rows) {\n\tconst computedStyles = getComputedStyle(textarea);\n\treturn `${\n\t\trows * parseFloat(computedStyles.lineHeight) +\n\t\tparseFloat(computedStyles.paddingBlockStart) +\n\t\tparseFloat(computedStyles.paddingBlockEnd) +\n\t\tparseFloat(computedStyles.borderBlockEndWidth) +\n\t\tparseFloat(computedStyles.borderBlockStartWidth)\n\t}px`;\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {createRef} from '@servicenow/ui-renderer-snabbdom';\nimport debounce from 'lodash/debounce';\nimport styles from './_now-textarea.scss';\nimport {t} from 'sn-translate';\nimport {\n\tgetFormFieldMessageIds,\n\trenderFormFieldLabel,\n\trenderFormFieldMessages,\n\trenderLabelEnd,\n\tmessagesSchema,\n\tfieldLayoutSchema,\n} from '@servicenow/now-input';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {\n\tfilterAriaAttributes,\n\tgetColumnStyles,\n\tgetCaretCoordinates,\n} from '@servicenow/library-enhanced-utils';\nimport {calculateWidthBasedOnCols, calculateHeightBasedOnRows} from './utils';\n\nconst {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\n\nconst timeoutIds = {};\n\nconst addFakeHighlighting = (textarea, selectionStart, selectionEnd) => {\n\tif (textarea.previousElementSibling) {\n\t\tlet content = textarea.value.replace(/\\n$/g, '\\n\\n');\n\t\tconst beforeSelection = content.substring(0, selectionStart);\n\t\tconst selectedText = content.substring(selectionStart, selectionEnd);\n\t\tconst afterSelection = content.substring(selectionEnd, content.length);\n\t\ttextarea.previousElementSibling.innerHTML = `<span style=\"display: block;\">${beforeSelection}<span class=\"now-textarea-field-selection\">${selectedText}</span>${afterSelection}</span>`;\n\t\ttextarea.style.setProperty('background-color', 'transparent', 'important');\n\t}\n};\nconst removeFakeHighlighting = (textarea, timeout = 0) => {\n\tif (textarea.previousElementSibling) {\n\t\treturn setTimeout(() => {\n\t\t\ttextarea.previousElementSibling.innerHTML = `<span style=\"display: block;\">${textarea.value.replace(/\\n$/g, '\\n\\n')}</span>`;\n\t\t\ttextarea.style['background-color'] = '';\n\t\t}, timeout);\n\t}\n\treturn null;\n};\n\n// called on input and paste to update the scrolltop as a native scroll event does not occur when the textarea scrolls\n// due to those two events. Requires a setTimeout as the content needs to be populated in the backdrop div and\n// the textarea needs time to update before we are able to grab the new scrollTop and set it on the backdrop div\nconst updateScrollTop = (textarea) => {\n\tsetTimeout(\n\t\t() => (textarea.previousElementSibling.scrollTop = textarea.scrollTop),\n\t\t100,\n\t);\n};\n\nconst announceMessage = (label, content, dispatch) => {\n\tconst announcement = label + ' ' + content.content;\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announcement,\n\t\ttype: 'polite',\n\t});\n};\n\nconst toggleScrollbar = (el, firstRender = false) => {\n\tif (firstRender && el.value == '') return;\n\n\tif (el.scrollHeight - el.clientHeight <= 1) {\n\t\t// If the difference between scrollHeight and clientHeight is less than or equal to the 1, hide the scrollbar\n\t\tel.style.overflowY = 'hidden';\n\t\t// adding the same styling to the backdrop div if present\n\t\tif (el.previousElementSibling) {\n\t\t\tel.previousElementSibling.style.overflowY = 'hidden';\n\t\t}\n\t} else {\n\t\t// Otherwise, show the scrollbar\n\t\tel.style.overflowY = 'auto';\n\t\tif (el.previousElementSibling) {\n\t\t\tel.previousElementSibling.style.overflowY = 'auto';\n\t\t}\n\t}\n};\n\nconst getResizeHelperElement = (textarea) => {\n\tconst wrapper = textarea.parentElement;\n\treturn wrapper.querySelector('.now-textarea-field-copy');\n};\n\nconst adjustHeight = (textarea, helper) => {\n\thelper.dataset.replicatedValue = textarea.value;\n};\n\nconst setMaxHeight = (textarea, maxHeight) => {\n\ttextarea.style.maxHeight = maxHeight;\n\tconst helper = getResizeHelperElement(textarea);\n\thelper.style.maxHeight = maxHeight;\n};\n\nconst addManuallyResizedClassIfNeeded = debounce((textarea, rows, cols) => {\n\trequestAnimationFrame(() => {\n\t\tconst inlineStyleDefined =\n\t\t\t!!textarea.style.height || !!textarea.style.width;\n\t\tif (!inlineStyleDefined) return;\n\n\t\tconst resizeWrapper = textarea.parentElement;\n\t\tif (resizeWrapper.classList.contains('is-autoresize')) {\n\t\t\tresizeWrapper.classList.remove('is-autoresize');\n\t\t\tif (rows) textarea.style.minHeight = '';\n\t\t\tif (cols) textarea.style.inlineSize = '';\n\t\t}\n\t});\n}, 10);\n\nconst handleReportManualResize = (e, rows, cols) => {\n\tif (e.buttons === 0) return;\n\tconst textarea = e.target;\n\taddManuallyResizedClassIfNeeded(textarea, rows, cols);\n};\n\nconst runMicroTasks = (calls, callIndex = 0) => {\n\tif (!calls || calls.length === 0) return;\n\n\trequestAnimationFrame(() => {\n\t\tcalls[callIndex]();\n\t\tif (callIndex < calls.length - 1) runMicroTasks(calls, callIndex + 1);\n\t});\n};\n\nconst repositionCaretSlotContainer = (textarea, caretSlotContainer) => {\n\tconst coords = getCaretCoordinates(textarea, textarea.selectionEnd);\n\tconst rect = textarea.getBoundingClientRect();\n\tconst container = caretSlotContainer.getBoundingClientRect();\n\tlet block = coords.top - textarea.scrollTop;\n\tif (block < 0) {\n\t\t// stay in top bounds\n\t\tblock = 0;\n\t} else if (block > rect.height) {\n\t\t// stay in bottom bounds\n\t\tblock = rect.height - container.height;\n\t} else if (block + coords.height + container.height < rect.height) {\n\t\t// room to show below text caret\n\t\tblock += coords.height;\n\t} else {\n\t\t// show above text caret\n\t\tblock -= container.height + 5;\n\t}\n\tlet inline = coords.inline; // room to show to the right of the text caret\n\tif (inline + container.width > rect.width) {\n\t\t// show to the left of the text caret\n\t\tinline -= container.width;\n\t}\n\tcaretSlotContainer.style['inset-block-start'] = block + 'px';\n\tcaretSlotContainer.style['inset-inline-start'] = inline + 'px';\n};\n\nconst handleInput = (\n\te,\n\tmaxlength,\n\tautoresize,\n\tupdateState,\n\tdispatch,\n\tenableCaretSlot,\n\tcaretSlotContainer,\n\tdebounceCaretWhileTyping,\n\tdebounceInput,\n) => {\n\tconst data = e.data;\n\tconst textarea = e.target;\n\tif (maxlength) {\n\t\tconst currentLength = textarea.value.length || 0;\n\t\tconst charsRemaining = parseInt(maxlength) - currentLength;\n\t\tupdateState({charsRemaining});\n\t}\n\tif (enableCaretSlot) {\n\t\tcaretSlotContainer.style.insetInlineStart = '-9999px';\n\t\tdebounceCaretWhileTyping(() => {\n\t\t\trepositionCaretSlotContainer(textarea, caretSlotContainer);\n\t\t});\n\t\tupdateScrollTop(textarea);\n\t}\n\tdebounceInput(() => {\n\t\tif (autoresize && enableCaretSlot) {\n\t\t\tconst helper = getResizeHelperElement(textarea);\n\t\t\trunMicroTasks([\n\t\t\t\t() => adjustHeight(textarea, helper),\n\t\t\t\t() => toggleScrollbar(textarea),\n\t\t\t]);\n\t\t} else if (autoresize) {\n\t\t\tconst helper = getResizeHelperElement(textarea);\n\t\t\trunMicroTasks([\n\t\t\t\t() => adjustHeight(textarea, helper),\n\t\t\t\t() => toggleScrollbar(textarea),\n\t\t\t]);\n\t\t}\n\t\tdispatch(({properties: {name}}) => {\n\t\t\treturn {\n\t\t\t\ttype: 'NOW_TEXTAREA#INPUT',\n\t\t\t\tpayload: {\n\t\t\t\t\tname,\n\t\t\t\t\tdata,\n\t\t\t\t\tfieldValue: textarea.value,\n\t\t\t\t\tfieldElement: textarea,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t});\n};\n\nconst handleCaretMoved = (\n\te,\n\tdispatch,\n\tcaretSlotContainer,\n\tselection,\n\tupdateState,\n\tdebounceCaret,\n\tpauseFakeHighlighting,\n) => {\n\tconst textarea = e.target;\n\tconst selectionStart = textarea.selectionStart;\n\tconst selectionEnd = textarea.selectionEnd;\n\tif (textarea.previousElementSibling && !pauseFakeHighlighting) {\n\t\tif (selectionStart < selectionEnd) {\n\t\t\taddFakeHighlighting(textarea, selectionStart, selectionEnd);\n\t\t} else {\n\t\t\tremoveFakeHighlighting(textarea);\n\t\t}\n\t}\n\tconst selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\tconst movementKeys = [\n\t\t'ArrowLeft',\n\t\t'ArrowRight',\n\t\t'ArrowUp',\n\t\t'ArrowDown',\n\t\t'Home',\n\t\t'End',\n\t\t'Meta',\n\t];\n\tif (e.key && !movementKeys.includes(e.key)) {\n\t\treturn;\n\t}\n\tdebounceCaret(() => {\n\t\trepositionCaretSlotContainer(textarea, caretSlotContainer);\n\t\tif (selectedText !== selection) {\n\t\t\tdispatch(({properties: {name}}) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_TEXTAREA#SELECTION_CHANGED',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tselection: selectedText,\n\t\t\t\t\t\tselectionStart,\n\t\t\t\t\t\tselectionEnd,\n\t\t\t\t\t\tfieldValue: textarea.value,\n\t\t\t\t\t\tfieldElement: textarea,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t\tupdateState({selection: selectedText});\n\t\t}\n\t});\n};\n\nconst validateAndUpdate = (textarea, dispatch, updateState) => {\n\tconst {valid} = textarea.validity;\n\tconst {name, value} = textarea;\n\tupdateState({hasFocus: false});\n\tdispatch(({properties}) => {\n\t\tconst {disabled, readonly} = properties;\n\t\treturn {\n\t\t\ttype: 'NOW_TEXTAREA#INVALID_SET',\n\t\t\tpayload: {name: name, value: !valid, fieldValue: value},\n\t\t\tshouldDispatch: !disabled && !readonly,\n\t\t};\n\t});\n\tdispatch(({properties}) => {\n\t\tconst {disabled, readonly, invalid} = properties;\n\t\treturn {\n\t\t\ttype: 'NOW_TEXTAREA#VALUE_SET',\n\t\t\tpayload: {name: name, value: value},\n\t\t\tshouldDispatch: !disabled && !readonly && !invalid,\n\t\t};\n\t});\n};\n\nconst getCharsRemaining = (dispatch, properties, updateState) => {\n\tconst {name, value, maxlength} = properties;\n\tconst currentLength = (value && value.length) || 0;\n\tconst charsRemaining = parseInt(maxlength) - currentLength;\n\tupdateState({charsRemaining});\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_TEXTAREA#INVALID_SET',\n\t\t\tpayload: {name: name, value: true, fieldValue: value},\n\t\t\tshouldDispatch: charsRemaining < 0,\n\t\t};\n\t});\n};\n\nconst setMinHeight = (textarea, minHeight) => {\n\tconst helper = getResizeHelperElement(textarea);\n\thelper.style.minHeight = minHeight;\n\ttextarea.style.minHeight = minHeight;\n};\n\nconst setHelperWidth = (textarea) => {\n\tconst width = calculateWidthBasedOnCols(textarea);\n\tconst helper = getResizeHelperElement(textarea);\n\thelper.style.inlineSize = width;\n\ttextarea.style.inlineSize = width;\n};\n\nconst setHelperHeight = (\n\ttextarea,\n\trows,\n\tautoresizeRowsLimit,\n\tdisableMaxHeight,\n) => {\n\tconst height = calculateHeightBasedOnRows(textarea, rows);\n\tif (!disableMaxHeight && (autoresizeRowsLimit || 0) < (rows || 2)) {\n\t\trunMicroTasks([\n\t\t\t() => setMinHeight(textarea, parseInt(height) <= 256 ? height : '256px'),\n\t\t]);\n\t} else {\n\t\trunMicroTasks([() => setMinHeight(textarea, height)]);\n\t}\n};\n\nconst renderCharacterCounter = (\n\tshowCounter,\n\tmaxlength,\n\tcharsRemaining,\n\tnowId,\n) => {\n\tif (showCounter && maxlength) {\n\t\tconst ariaLive = charsRemaining >= 0 ? 'polite' : 'assertive';\n\t\treturn (\n\t\t\t<div\n\t\t\t\tid={`text-area-character-count${nowId}`}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-textarea-character-counter': true,\n\t\t\t\t\t'-warning': charsRemaining / parseInt(maxlength) < 0.2,\n\t\t\t\t\t'-error': charsRemaining <= 0,\n\t\t\t\t}}\n\t\t\t\taria-live={ariaLive}\n\t\t\t\taria-relevant=\"text\"\n\t\t\t\taria-atomic=\"true\"\n\t\t\t>\n\t\t\t\t{charsRemaining >= 0\n\t\t\t\t\t? t('Characters left: {0}', charsRemaining)\n\t\t\t\t\t: t('Maximum length exceeded. Characters left: {0}', charsRemaining)}\n\t\t\t</div>\n\t\t);\n\t}\n};\n\nconst getCharacterCounterId = (showCounter, maxlength, nowId) => {\n\tif (showCounter && maxlength) {\n\t\treturn `text-area-character-count${nowId}`;\n\t}\n\treturn '';\n};\n\nconst createAriaDescribedByList = (\n\tnowId,\n\tmessages,\n\tshowCounter,\n\tmaxlength,\n\tlabel,\n\thelperContent,\n) => {\n\tconst characterCounterId = getCharacterCounterId(\n\t\tshowCounter,\n\t\tmaxlength,\n\t\tnowId,\n\t);\n\tconst formFieldMessageIds = getFormFieldMessageIds(nowId, messages);\n\tconst describedBy = [];\n\tif (label || helperContent) {\n\t\tdescribedBy.push('form-field-label-inline');\n\t\tdescribedBy.push('form-field-label-end');\n\t}\n\tif (formFieldMessageIds) {\n\t\tdescribedBy.push(formFieldMessageIds);\n\t}\n\tif (characterCounterId) {\n\t\tdescribedBy.push(characterCounterId);\n\t}\n\tif (describedBy.length > 0) {\n\t\treturn describedBy.join(' ');\n\t}\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {\n\t\tcharsRemaining,\n\t\tselection,\n\t\tdebounceInput,\n\t\tdebounceCaret,\n\t\tdebounceCaretWhileTyping,\n\t\tresizeObserver,\n\t} = state;\n\tconst {\n\t\tsize,\n\t\tautoresize,\n\t\tdisableMaxHeight,\n\t\tdisableMinHeight,\n\t\tcols,\n\t\tdisabled,\n\t\thelperContent,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\tlabel,\n\t\tmaxlength,\n\t\tmessages,\n\t\tminlength,\n\t\toptional,\n\t\tplaceholder,\n\t\treadonly,\n\t\trequired,\n\t\tresize,\n\t\trows,\n\t\tshowBorders,\n\t\tshowCounter,\n\t\tvalue = '',\n\t\tconfigAria,\n\t\tnowId,\n\t\tcolor,\n\t\tname = `textarea-${nowId}`,\n\t\tfieldLayout: {layout, columns},\n\t\tenableCaretSlot,\n\t} = state.properties;\n\tconst caretSlotContainer = createRef();\n\tconst hasCaretSlot = enableCaretSlot && !disabled && !readonly;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={\n\t\t\t\tlayout === 'horizontal' ? {...getColumnStyles(columns)} : undefined\n\t\t\t}\n\t\t\tclass={{\n\t\t\t\t'now-textarea': true,\n\t\t\t\t'now-form-field-layout': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t\t'disable-max-height': disableMaxHeight,\n\t\t\t\t['-' + layout]: layout,\n\t\t\t}}\n\t\t>\n\t\t\t{renderFormFieldLabel(\n\t\t\t\tnowId,\n\t\t\t\tinvalid,\n\t\t\t\trequired,\n\t\t\t\toptional,\n\t\t\t\tlabel,\n\t\t\t\thelperContent,\n\t\t\t\thideRequiredIndicator,\n\t\t\t\t'label',\n\t\t\t\tlayout,\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tkey={'now-textarea-container'}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-textarea-container': true,\n\t\t\t\t\t'show-borders': showBorders,\n\t\t\t\t\t'has-label': label,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"now-textarea-slot\">\n\t\t\t\t\t<slot\n\t\t\t\t\t\tname=\"start\"\n\t\t\t\t\t\ton-slotchange={() => {\n\t\t\t\t\t\t\tdispatch('PRIVATE#SET_DECORATORS');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-textarea-wrapper': true,\n\t\t\t\t\t\t'is-autoresize': !!autoresize,\n\t\t\t\t\t\t'has-backdrop': hasCaretSlot,\n\t\t\t\t\t\t'disable-min-height': disableMinHeight,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{hasCaretSlot && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t'now-textarea-field-backdrop': true,\n\t\t\t\t\t\t\t\t[`-${color}`]: color,\n\t\t\t\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t\t\t\t'is-readonly': readonly,\n\t\t\t\t\t\t\t\t'has-slotted-content': state.hasSlottedContent,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tid={`form-field-${nowId}`}\n\t\t\t\t\t\thook-insert={({elm}) => {\n\t\t\t\t\t\t\tif (!resizeObserver) {\n\t\t\t\t\t\t\t\tlet newResizeObserver;\n\t\t\t\t\t\t\t\tif (hasCaretSlot && resize) {\n\t\t\t\t\t\t\t\t\tnewResizeObserver = new ResizeObserver((entries) => {\n\t\t\t\t\t\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\t\t\t\t\t\tentry.target.previousElementSibling.style.width =\n\t\t\t\t\t\t\t\t\t\t\t\tentry.target.style.width;\n\t\t\t\t\t\t\t\t\t\t\tentry.target.previousElementSibling.style.height =\n\t\t\t\t\t\t\t\t\t\t\t\tentry.target.style.height;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tnewResizeObserver.observe(elm);\n\t\t\t\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\t\t\t\tresizeObserver: newResizeObserver,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\thook-destroy={({elm}) => {\n\t\t\t\t\t\t\tif (resizeObserver) resizeObserver.unobserve(elm);\n\t\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\t\tresizeObserver: null,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-textarea-field': true,\n\t\t\t\t\t\t\t[`-${color}`]: color,\n\t\t\t\t\t\t\t['-resize-' + (readonly ? 'none' : resize)]: resize,\n\t\t\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t\t\t'is-readonly': readonly,\n\t\t\t\t\t\t\t'has-slotted-content': state.hasSlottedContent,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\taria-label={!value && readonly ? '' : undefined}\n\t\t\t\t\t\t{...filterAriaAttributes(configAria, 'textarea')}\n\t\t\t\t\t\taria-describedby={createAriaDescribedByList(\n\t\t\t\t\t\t\tnowId,\n\t\t\t\t\t\t\tmessages,\n\t\t\t\t\t\t\tshowCounter,\n\t\t\t\t\t\t\tmaxlength,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-required={required ? 'true' : 'false'}\n\t\t\t\t\t\taria-invalid={invalid ? 'true' : 'false'}\n\t\t\t\t\t\tcols={cols}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tmaxlength={showCounter ? undefined : maxlength}\n\t\t\t\t\t\tminlength={minlength}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\treadonly={readonly}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\trows={rows}\n\t\t\t\t\t\tvalue={!value && readonly ? '—' : value}\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\ton-blur={(e) => {\n\t\t\t\t\t\t\tvalidateAndUpdate(e.target, dispatch, updateState, true);\n\t\t\t\t\t\t\tif (hasCaretSlot) {\n\t\t\t\t\t\t\t\ttimeoutIds[nowId] = {id: removeFakeHighlighting(e.target, 150)};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-input={(e) =>\n\t\t\t\t\t\t\thandleInput(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\tmaxlength,\n\t\t\t\t\t\t\t\tautoresize,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tenableCaretSlot,\n\t\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\t\tdebounceCaretWhileTyping,\n\t\t\t\t\t\t\t\tdebounceInput,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-focus={\n\t\t\t\t\t\t\tdisabled || readonly\n\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t: (e) => {\n\t\t\t\t\t\t\t\t\t\tupdateState({hasFocus: true});\n\t\t\t\t\t\t\t\t\t\tif (hasCaretSlot) {\n\t\t\t\t\t\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-mouseup={\n\t\t\t\t\t\t\thasCaretSlot\n\t\t\t\t\t\t\t\t? (e) => {\n\t\t\t\t\t\t\t\t\t\tconst event = {target: e.target, key: e.key};\n\t\t\t\t\t\t\t\t\t\t// setTimeout here is used because the selectionStart and selectionEnd of the textarea\n\t\t\t\t\t\t\t\t\t\t// need to update before the handler is called.\n\t\t\t\t\t\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-keyup={\n\t\t\t\t\t\t\thasCaretSlot\n\t\t\t\t\t\t\t\t? (e) =>\n\t\t\t\t\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-select={\n\t\t\t\t\t\t\tenableCaretSlot && !disabled && !readonly\n\t\t\t\t\t\t\t\t? (e) =>\n\t\t\t\t\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-scroll={\n\t\t\t\t\t\t\thasCaretSlot\n\t\t\t\t\t\t\t\t? (e) => {\n\t\t\t\t\t\t\t\t\t\te.target.previousElementSibling.scrollTop =\n\t\t\t\t\t\t\t\t\t\t\te.target.scrollTop;\n\t\t\t\t\t\t\t\t\t\thandleCaretMoved(\n\t\t\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\t\t\tcaretSlotContainer.current,\n\t\t\t\t\t\t\t\t\t\t\tselection,\n\t\t\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t\t\t\tdebounceCaret,\n\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-click={(e) => toggleScrollbar(e.target)}\n\t\t\t\t\t\ton-mousemove={(e) => handleReportManualResize(e, rows, cols)}\n\t\t\t\t\t\ton-mouseover={(e) => {\n\t\t\t\t\t\t\tif (hasCaretSlot) {\n\t\t\t\t\t\t\t\te.target.previousElementSibling?.classList.add('hover');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-mouseout={(e) => {\n\t\t\t\t\t\t\tif (hasCaretSlot) {\n\t\t\t\t\t\t\t\te.target.previousElementSibling?.classList.remove('hover');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-paste={(e) => {\n\t\t\t\t\t\t\tif (hasCaretSlot) {\n\t\t\t\t\t\t\t\tconst textarea = e.target;\n\t\t\t\t\t\t\t\tremoveFakeHighlighting(textarea);\n\t\t\t\t\t\t\t\tupdateScrollTop(textarea);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-mousedown={(e) => {\n\t\t\t\t\t\t\tif (hasCaretSlot) removeFakeHighlighting(e.target);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t{autoresize && <div className={'now-textarea-field-copy'}></div>}\n\t\t\t\t</div>\n\t\t\t\t{enableCaretSlot && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"now-textarea-caret-container\"\n\t\t\t\t\t\tref={caretSlotContainer}\n\t\t\t\t\t>\n\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\tname=\"caret\"\n\t\t\t\t\t\t\ton-focusin={() => {\n\t\t\t\t\t\t\t\tif (timeoutIds[nowId]?.id) {\n\t\t\t\t\t\t\t\t\tclearTimeout(timeoutIds[nowId].id);\n\t\t\t\t\t\t\t\t\ttimeoutIds[nowId] = {};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\t\tif (timeoutIds[nowId]?.id) {\n\t\t\t\t\t\t\t\t\tclearTimeout(timeoutIds[nowId].id);\n\t\t\t\t\t\t\t\t\ttimeoutIds[nowId] = {};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{layout === 'horizontal' && renderLabelEnd()}\n\t\t\t<div className=\"now-form-field-messages\">\n\t\t\t\t{renderCharacterCounter(showCounter, maxlength, charsRemaining, nowId)}\n\t\t\t\t{renderFormFieldMessages(nowId, messages, 0)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * Form element that provides an input area in which a user can enter a large amount of text.\n *\n * It can include such content as placeholder text, alert messages, and helper content.\n * In addition, you can configure this text area to:\n *   - Enforce whether data entry in the text area is required or optional.\n *   - Enforce a minimum and/or maximum number of characters a user must enter.\n *   - Automatically resize the text area as a user enters data.\n *   - Make the text area read-only.\n *   - Disable the text area.\n *   - Display a popover icon with additional helper text.\n *   - Change the look of the text area when incorrect data is entered in the text area.\n *   - Enable the text area to be scaled vertically and/or horizontally.\n *   - Define the height of the text area (in characters).\n *   - Change the text area background color.\n *\n *\n * ```jsx\n *    // Small textarea with label end slot\n * \t<now-textarea label=\"Small with label end slot\" size=\"sm\">\n *\t  <now-highlighted-value\n *\t    slot=\"label-end\"\n *\t    label=\"VIP\"\n *\t    icon=\"star-outline\"\n *\t    color=\"blue\"\n *\t  />\n *\t</now-textarea>\n *\n *    // Small textarea with placeholder\n *\t<now-textarea\n *\t  style={{marginBlockEnd: 0}}\n *\t  label=\"Small with placeholder\"\n *\t  size=\"sm\"\n *\t  placeholder=\"Small with placeholder\"\n *\t/>\n *\n *    // Required data entry\n *\t<now-textarea style={{marginBlockStart: 0}} label=\"Required\" required />\n *\n *\t<now-textarea label=\"Required with label end slot\" required>\n *\t  <now-highlighted-value\n *\t    slot=\"label-end\"\n *\t    label=\"VIP\"\n *\t    icon=\"star-outline\"\n *\t    color=\"blue\"\n *\t  />\n *\t</now-textarea>\n * ```\n *\n * @seismicElement now-textarea\n * @summary Form element that provides an input area in which a user can enter a large amount of text.\n * @uib.label Textarea\n * @uib.icon textarea\n * @uib.description Form element that provides an input area in which a user can enter a large amount of text.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, color, disabled, readonly, autofocus, label, value, manageValue, placeholder, rows, cols, maxlength, minlength, helperContent, messages, invalid, manageInvalid, required, hideRequiredIndicator, optional, autoresize, autoresizeRowsLimit, resize, disableMinHeight, disableMaxHeight, showCounter, name, configAria, fieldLayout, landmark, enableCaretSlot\n * @uib.layout.value.children value, manageValue, name, placeholder, minlength, maxlength, showCounter, enableCaretSlot\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.label.children label, required, hideRequiredIndicator, optional, helperContent\n * @uib.layout.label.icon text-outline\n * @uib.layout.size.children resize, rows, cols, autoresize, disableMinHeight, disableMaxHeight, autoresizeRowsLimit\n * @uib.layout.size.icon fullscreen-outline\n * @uib.layout.validation.children invalid, manageInvalid, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.accessibility.children configAria, landmark\n * @uib.actions NOW_TEXTAREA#INPUT, NOW_TEXTAREA#INVALID_SET, NOW_TEXTAREA#VALUE_SET, NOW_TEXTAREA#SELECTION_CHANGED\n * @uib.innerComponents now-button-iconic, now-icon, now-popover, now-input\n */\ncreateEnhancedElement('now-textarea', {\n\tproperties: {\n\t\t/**\n\t\t * Sets the size of the text area component, either small (sm) or medium (md).\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t * @uib.description Sets the size of the text area component, either small (sm) or medium (md).\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the background color of the text area.\n\t\t * @type {('initial'|'blue'|'yellow'|'green')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Initial\", \"value\": \"initial\"}, {\"label\": \"Blue\", \"value\": \"blue\"}, {\"label\": \"Yellow\", \"value\": \"yellow\"}, {\"label\": \"Green\", \"value\": \"green\"}]\n\t\t * @uib.defaultValue initial\n\t\t * @uib.description Sets the background color of the text area.\n\t\t */\n\t\tcolor: {\n\t\t\tdefault: 'initial',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['initial', 'blue', 'yellow', 'green'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, focus is automatically placed inside the\n\t\t * text area on page load.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-focus\n\t\t * @uib.description When true, focus is automatically placed inside the text area on page load.\n\t\t */\n\t\tautofocus: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the text area height automatically increases as the\n\t\t * user types in the text area.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-resize\n\t\t * @uib.description When true, the text area height automatically increases as the user types in the text area.\n\t\t */\n\t\tautoresize: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the default minimum height of 64px is ignored. Use with rows={1} to create a single-line text area.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, the default minimum height of 64px is ignored. Use with rows={1} to create a single-line text area.\n\t\t */\n\t\tdisableMinHeight: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the default maximum height of 256px is ignored.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, the default maximum height of 256px is ignored.\n\t\t */\n\t\tdisableMaxHeight: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, disables the text area. The user cannot interact with the text area\n\t\t * or change its value. The text area appears grayed out.\n\t\t * @type {boolean}\n\t\t * @uib.description Disables the text area. The text area appears grayed out and cannot be modified by the user.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tdisabled: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, a slot will be added to the component that follows the user's text cursor.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, a slot will be added to the component that follows the user's text cursor.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tenableCaretSlot: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When defined, an iconic button with a popover appears next to the text area\n\t\t * label. When hovered over, it displays additional hint text to the user, such as\n\t\t * password requirements or other instructions for entering data into the text area.\n\t\t * Use plain text so the text is translatable. If you do not want to add helper content, leave this property empty.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.label Helper text\n\t\t * @uib.fieldType string\n\t\t * @uib.description When defined, an iconic button with popover appears next to the text area label for displaying additional hint text to the user, such as password requirements or other instructions for completing the field. Use plain text so the text is translatable. If you do not want to add helper content, leave this property empty.\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * When true, the required indicator is visually hidden. Use this option for\n\t\t * forms where most fields are required. Then use the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, the required indicator is visually hidden. Use this for forms where most fields are required. Then use the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the text area is in an incorrect state.\n\t\t * This state is visually reflected in the text area display.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, the text area appears visually invalid, indicating incorrect input.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tinvalid: {manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_TEXTAREA#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * String that describes the overall purpose of the text area field.\n\t\t * @type {string}\n\t\t * @uib.description String that describes the overall purpose of the text area field.\n\t\t * @uib.defaultValue Textarea\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Maximum number of characters that a user can enter in the text area.\n\t\t * @type {number}\n\t\t * @uib.label Max. characters\n\t\t * @uib.description Maximum number of characters that a user can enter in the text area.\n\t\t * @uib.typeMetadata.emptyStateBehavior UNDEFINED\n\t\t */\n\t\tmaxlength: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Array of inline alert messages that display below the text area.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that display below the text area.\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t\tschema: messagesSchema,\n\t\t},\n\t\t/**\n\t\t * Minimum number of characters that a user must enter in the text area.\n\t\t * @type {number}\n\t\t * @uib.label Min. characters\n\t\t * @uib.description Minimum number of characters that a user must enter in the text area.\n\t\t * @uib.typeMetadata.emptyStateBehavior UNDEFINED\n\t\t */\n\t\tminlength: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Reference name of the text area control. This name is dispatched along with the text area value\n\t\t * on user interaction.\n\t\t * @type {string}\n\t\t * @uib.label Identifier\n\t\t * @uib.description Reference name for the text area control. This name is dispatched along with the text area value on user interaction.\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, entering data in the text area is optional and does not need to be completed by\n\t\t * a user before completing the form.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, entering data in the text area is optional and does not need to be completed by the user before completing the form.\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Hint text to display in the text area before text has been input.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder text\n\t\t * @uib.description Hint text to display in the text area before text has been input.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the text area is enabled, but the user cannot modify its contents.\n\t\t * @type {boolean}\n\t\t * @uib.label Read-only\n\t\t * @uib.description When true, the text area is enabled, but the user cannot modify its contents.\n\t\t */\n\t\treadonly: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, a user must enter a value in the\n\t\t * text area before they can complete the form.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, a user must enter a value in the text area before they can complete the form.\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Defines whether a user can resize the text area vertically, horizontally,\n\t\t * in both directions, or neither direction.\n\t\t * @type {('both'|'horizontal'|'none'|'vertical')}\n\t\t * @uib.description Defines whether a user can resize the text area vertically, horizontally, in both directions, or neither direction.\n\t\t */\n\t\tresize: {\n\t\t\tdefault: 'vertical',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['both', 'horizontal', 'none', 'vertical'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Height of the text area, in lines.\n\t\t * @type {number}\n\t\t * @uib.label Height (rows)\n\t\t * @uib.description Height of the text area, in characters.\n\t\t * @uib.typeMetadata.emptyStateBehavior UNDEFINED\n\t\t */\n\t\trows: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Width of the text area, in characters.\n\t\t * @type {number}\n\t\t * @uib.label Width (columns)\n\t\t * @uib.description Width of the text area, in characters.\n\t\t * @uib.typeMetadata.emptyStateBehavior UNDEFINED\n\t\t */\n\t\tcols: {schema: {type: 'number'}},\n\t\t/**\n\t\t * The maximum number of rows to display when the 'autoresize' property is set to true.\n\t\t * @type {number}\n\t\t * @uib.label Autoresize rows limit\n\t\t * @uib.description Max number of rows when Autoresize is true\n\t\t * @uib.typeMetadata.emptyStateBehavior UNDEFINED\n\t\t */\n\t\tautoresizeRowsLimit: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Deprecated. Only works in classic workspace / initial theme.\n\t\t * Control borders through theming.\n\t\t * @private\n\t\t */\n\t\tshowBorders: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, displays a character counter beneath the text area.\n\t\t * This value shows the number of remaining characters that can be typed in the text area.\n\t\t * This count is derived by subtracting the number of characters currently entered from the value of the `maxlength` property.\n\t\t * When set, and a user types past `maxlength`, the counter goes below 0 and the text area becomes invalid.\n\t\t * @type {boolean}\n\t\t * @uib.label Show character counter\n\t\t * @uib.description Indicates whether to display a character counter beneath the text area to show the user the number of remaining characters.\n\t\t */\n\t\tshowCounter: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Content of the text area.\n\t\t * @type {string}\n\t\t * @uib.description Content of the text area.\n\t\t * @uib.translatable true\n\t\t */\n\t\tvalue: {manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `value` property.\n\t\t * An action with type `NOW_TEXTAREA#VALUE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the value property. Use the value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValue: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-textarea. The value of the key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#textbox for properties and accepted values.\n\t\t * @type {{ textarea: {'aria-*': string, role: string }}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ttextarea: configAriaLabelRoleSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slottted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this textarea\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets debounce length in milliseconds. Debounce is only observed in\n\t\t * the `handleInput` and `handleCaretMoved` events.\n\t\t * @type {number}\n\t\t */\n\t\tdebounceLength: {default: 250, schema: {type: 'number'}},\n\t\t/**\n\t\t * Sets debounce length for the caret slot in milliseconds. Debounce is only observed while\n\t\t * typing.\n\t\t * @type {number}\n\t\t */\n\t\tdebounceCaretLength: {default: 800, schema: {type: 'number'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for field decorators. Located at the beginning of the textarea field.\n\t\t */\n\t\tstart: {},\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of the label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label inline icon. Located inline after label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Floating slot that follows the text area caret as the user types or moves within the field.\n\t\t */\n\t\tcaret: {},\n\t},\n\tinitialState: {\n\t\thasSlottedContent: false,\n\t\tselection: '',\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: ({properties, dispatch, updateState}) => {\n\t\t\tif (properties.maxlength) {\n\t\t\t\tgetCharsRemaining(dispatch, properties, updateState);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DOM_READY]: ({host, properties}) => {\n\t\t\tconst {\n\t\t\t\trows,\n\t\t\t\tautoresize,\n\t\t\t\tautoresizeRowsLimit,\n\t\t\t\tdisableMaxHeight,\n\t\t\t\tautofocus,\n\t\t\t\tcols,\n\t\t\t} = properties;\n\t\t\tconst textarea = host.shadowRoot.querySelector('textarea');\n\t\t\tif (!textarea) return;\n\t\t\tif (autofocus) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\ttextarea.focus();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (autoresize) {\n\t\t\t\tconst microTasks = [];\n\t\t\t\tif (properties.value && textarea.scrollHeight > textarea.clientHeight) {\n\t\t\t\t\tconst helper = getResizeHelperElement(textarea);\n\t\t\t\t\tmicroTasks.push(() => adjustHeight(textarea, helper));\n\t\t\t\t}\n\n\t\t\t\tmicroTasks.push(() => toggleScrollbar(textarea, true));\n\n\t\t\t\tif (!disableMaxHeight && (autoresizeRowsLimit || 0) > (rows || 2)) {\n\t\t\t\t\tmicroTasks.push(() =>\n\t\t\t\t\t\tsetMaxHeight(\n\t\t\t\t\t\t\ttextarea,\n\t\t\t\t\t\t\tcalculateHeightBasedOnRows(textarea, autoresizeRowsLimit),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (autoresize) {\n\t\t\t\t\tif (rows) {\n\t\t\t\t\t\tsetHelperHeight(\n\t\t\t\t\t\t\ttextarea,\n\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\tautoresizeRowsLimit,\n\t\t\t\t\t\t\tdisableMaxHeight,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (cols) {\n\t\t\t\t\t\tmicroTasks.push(() => setHelperWidth(textarea, cols));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trunMicroTasks(microTasks);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\taction,\n\t\t\tproperties,\n\t\t\thost,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tstate,\n\t\t}) => {\n\t\t\tconst {name, value, previousValue} = action.payload;\n\t\t\tconst {\n\t\t\t\trows,\n\t\t\t\tcols,\n\t\t\t\tautoresize,\n\t\t\t\tautoresizeRowsLimit,\n\t\t\t\tdisableMaxHeight,\n\t\t\t\tmaxlength,\n\t\t\t\tenableCaretSlot,\n\t\t\t\tdisabled,\n\t\t\t\treadonly,\n\t\t\t} = properties;\n\t\t\tconst {hasFocus, resizeObserver} = state;\n\n\t\t\tconst textarea = host.shadowRoot.querySelector('textarea');\n\n\t\t\tif ((name === 'value' && maxlength) || (name === 'maxlength' && value)) {\n\t\t\t\tgetCharsRemaining(dispatch, properties, updateState);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(name === 'value' && autoresize) ||\n\t\t\t\t(name === 'autoresize' && value)\n\t\t\t) {\n\t\t\t\tconst helper = getResizeHelperElement(textarea);\n\t\t\t\trunMicroTasks([\n\t\t\t\t\t() => adjustHeight(textarea, helper),\n\t\t\t\t\t() => toggleScrollbar(textarea),\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tautoresize &&\n\t\t\t\tname === 'autoresizeRowsLimit' &&\n\t\t\t\t(value || 0 > (rows || 2))\n\t\t\t) {\n\t\t\t\trequestAnimationFrame(() =>\n\t\t\t\t\tsetMaxHeight(textarea, calculateHeightBasedOnRows(textarea, value)),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (name === 'autoresize') {\n\t\t\t\tconst maxHeight =\n\t\t\t\t\tvalue && (autoresizeRowsLimit || 0) > (rows || 2)\n\t\t\t\t\t\t? calculateHeightBasedOnRows(textarea, autoresizeRowsLimit)\n\t\t\t\t\t\t: disableMaxHeight\n\t\t\t\t\t\t\t? 'none'\n\t\t\t\t\t\t\t: '256px';\n\t\t\t\trunMicroTasks([\n\t\t\t\t\t() => setMaxHeight(textarea, maxHeight),\n\t\t\t\t\t() => toggleScrollbar(textarea),\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tif (name === 'disableMaxHeight') {\n\t\t\t\trequestAnimationFrame(() =>\n\t\t\t\t\tsetMaxHeight(textarea, value ? 'none' : '256px'),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (name === 'value' && enableCaretSlot && !disabled && !readonly) {\n\t\t\t\tif (hasFocus) {\n\t\t\t\t\trequestAnimationFrame(() => removeFakeHighlighting(textarea));\n\t\t\t\t}\n\t\t\t\tconst textarea = host.shadowRoot.querySelector('textarea');\n\t\t\t\tconst caretSlotContainer = host.shadowRoot.querySelector(\n\t\t\t\t\t'.now-textarea-caret-container',\n\t\t\t\t);\n\t\t\t\trepositionCaretSlotContainer(textarea, caretSlotContainer);\n\t\t\t}\n\n\t\t\tif (name === 'messages') {\n\t\t\t\tconst messagesLength = value.length;\n\t\t\t\tconst previousMessagesLength = previousValue ? previousValue.length : 0;\n\t\t\t\tif (messagesLength > previousMessagesLength) {\n\t\t\t\t\tfor (let i = previousMessagesLength; i < messagesLength; i++) {\n\t\t\t\t\t\tannounceMessage(properties.label, value[i], dispatch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (autoresize) {\n\t\t\t\tif (name === 'cols') {\n\t\t\t\t\trunMicroTasks([() => setHelperWidth(textarea, cols)]);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tname === 'rows' ||\n\t\t\t\t\tname === 'autoresizeRowsLimit' ||\n\t\t\t\t\tname === 'disableMaxHeight'\n\t\t\t\t) {\n\t\t\t\t\tif (rows) {\n\t\t\t\t\t\tsetHelperHeight(\n\t\t\t\t\t\t\ttextarea,\n\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\tautoresizeRowsLimit,\n\t\t\t\t\t\t\tdisableMaxHeight,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (name === 'enableCaretSlot' && value && !resizeObserver) {\n\t\t\t\tconst resizeObserver = new ResizeObserver((entries) => {\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tentry.target.previousElementSibling.style.width =\n\t\t\t\t\t\t\tentry.target.style.width;\n\t\t\t\t\t\tentry.target.previousElementSibling.style.height =\n\t\t\t\t\t\t\tentry.target.style.height;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tresizeObserver.observe(textarea);\n\t\t\t\tupdateState({\n\t\t\t\t\tresizeObserver,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t'NOW_POPOVER#CONTENT_VISIBLE': ({dispatch, state}) => {\n\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\tmessage: state.properties.helperContent,\n\t\t\t\ttype: 'polite',\n\t\t\t});\n\t\t},\n\t\t'PRIVATE#SET_DECORATORS': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({host, updateState}) => {\n\t\t\t\tconst slotEl = host.shadowRoot.querySelector(\"[name='start']\");\n\t\t\t\tconst slottedNodes = slotEl.assignedNodes();\n\t\t\t\tupdateState({hasSlottedContent: slottedNodes.length > 0});\n\t\t\t},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when focus leaves the text area field (blurred) and the content is invalid.\n\t\t * The payload contains:\n\t\t *  - `name`: Name of the text area field.\n\t\t *  - `value`: Flag that indicates whether the content of the text area field is invalid based on the settings in the `required` and `pattern` properties.\n\t\t *  - `fieldValue`: Current content in the text area field.\n\t\t *\n\t\t * To override the default behavior of this action and handle the error manually,\n\t\t * set the `manage-invalid` property to true.\n\t\t *\n\t\t * @type {{name: string, value: boolean, fieldValue: string}}\n\t\t * @uib.description Dispatched when focus leaves the text area field (blurred) and the content is invalid.\n\t\t */\n\t\t'NOW_TEXTAREA#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when focus leaves the text area field (blurred) and the content is valid.\n\t\t * The payload contains:\n\t\t *  - `name`: Name of the text area field.\n\t\t *  - `value`: Current content in the text area field.\n\t\t *\n\t\t * To override the default behavior of this action and handle the content manually,\n\t\t * set the `manage-invalid` property to true.\n\t\t *\n\t\t * @type {{name: string, value: string}}\n\t\t * @uib.label Focus moved\n\t\t * @uib.description A user moves focus from the textarea and there's a valid value in the field.\n\t\t */\n\t\t'NOW_TEXTAREA#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user enters data in the text area by typing or\n\t\t * pasting text. Internal validation is not performed and the\n\t\t * `value` property is not updated at this point.\n\t\t * The payload contains:\n\t\t *  - `name`: Name of the text area field.\n\t\t *  - `fieldValue`: Current content in the text area.\n\t\t *  - `data`: Content that was in the text area prior to the `input` event.\n\t\t *  - `fieldElement`: Reference to the native text area HTMLElement.\n\t\t *\n\t\t * @type {{name: string, data: string, fieldValue: string, fieldElement: object}}\n\t\t * @uib.label Text entered\n\t\t * @uib.description A user types or pastes text in the textarea.\n\t\t */\n\t\t'NOW_TEXTAREA#INPUT': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tdata: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\tfieldElement: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user selects or deselects text within the textarea, either by clicking or using the keyboard.\n\t\t * The payload contains:\n\t\t * - `name`: Name of the text area field.\n\t\t * - `selection`: The text that is currently selected in the text area or an empty string if no text is selected.\n\t\t * - `selectionStart`: The starting index of the selected text.\n\t\t * - `selectionEnd`: The ending index of the selected text.\n\t\t * - `fieldValue`: Current content in the text area.\n\t\t * - `fieldElement`: Reference to the native text area HTMLElement.\n\t\t *\n\t\t * @type {{name: string, selection: string, selectionStart: number, selectionEnd: number, fieldValue: string, fieldElement: object}}\n\t\t * @uib.description Dispatched when the user selects or deselects text within the textarea, either by clicking or using the keyboard.\n\t\t */\n\t\t'NOW_TEXTAREA#SELECTION_CHANGED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tselection: {type: 'string'},\n\t\t\t\t\tselectionStart: {type: 'number'},\n\t\t\t\t\tselectionEnd: {type: 'number'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\tfieldElement: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\tconst focusTarget = host.shadowRoot.querySelector(\n\t\t\t\t\t\t'textarea.now-textarea-field',\n\t\t\t\t\t);\n\n\t\t\t\t\tif (focusTarget) {\n\t\t\t\t\t\tfocusTarget.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{behavior: truncationBehavior},\n\t\t{behavior: tooltipBehavior},\n\t],\n\tstyles,\n\tview,\n\tsetInitialState({properties: {debounceLength, debounceCaretLength}}) {\n\t\treturn {\n\t\t\tdebounceInput: debounce((fn) => fn(), debounceLength),\n\t\t\tdebounceCaret: debounce((fn) => fn(), debounceLength),\n\t\t\tdebounceCaretWhileTyping: debounce((fn) => fn(), debounceCaretLength),\n\t\t};\n\t},\n});\n","import './now-textarea';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","const TOOLTIP_TAG = 'NOW_TOOLTIP';\n\n/**\n * Attaches a listener to the container, then fires a fake event from the given element\n * to identify all ancestor elements in the element's DOM tree. More efficient than\n * climbing the tree recursively.\n * @param {string} id - unique ID\n * @param {HTMLElement} element - the element to find ancestors of\n * @param {HTMLElement} container - the topmost element to resolve to\n */\nexport const findAncestors = (id, element, container) =>\n\tnew Promise((resolve) => {\n\t\tconst eventName = `findAncestors-${id}`;\n\t\tconst findListener = async (e) => {\n\t\t\tcontainer.removeEventListener(eventName, findListener);\n\t\t\tconst path = e.composedPath();\n\t\t\tconst length = path.length;\n\t\t\tconst ancestors = new Set(path);\n\n\t\t\tfor (let idx = 0; idx < length; idx++) {\n\t\t\t\tconst node = path[idx];\n\t\t\t\tif (\n\t\t\t\t\tnode !== element &&\n\t\t\t\t\tnode.nodeType === Node.ELEMENT_NODE &&\n\t\t\t\t\tnode.tagName === TOOLTIP_TAG\n\t\t\t\t) {\n\t\t\t\t\tconst parentAncestors = await findAncestors(\n\t\t\t\t\t\tnode.nowId,\n\t\t\t\t\t\tnode.nowPopover,\n\t\t\t\t\t\tcontainer,\n\t\t\t\t\t);\n\n\t\t\t\t\tparentAncestors.forEach((ancestor) => ancestors.add(ancestor));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolve(ancestors);\n\t\t};\n\n\t\tcontainer.addEventListener(eventName, findListener);\n\t\tconst event = new CustomEvent(eventName, {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tcancelable: false,\n\t\t});\n\t\telement.dispatchEvent(event);\n\t});\n","import {debounce} from 'lodash';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {layerEvents, fit} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport styles from './_now-tooltip.scss';\nimport {schedule} from './scheduler';\nimport createScrollListener from './utils/scroll-listener';\n\nconst {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\nconst {getBestFitInfo, resolveFitProperties} = fit;\nconst listenerMap = new WeakMap();\nconst hoistMap = new WeakMap();\nconst FIT_CONSTRAIN = {minHeight: 24, maxWidth: 304};\nconst SEISMIC_HOIST_TAG = 'SEISMIC-HOIST';\nconst debounceDispatch = debounce((fn) => fn(), 250);\n\nconst scrollListener = createScrollListener();\n\nconst fitTooltip = ({host, properties}) => {\n\tconst {\n\t\ttargetRef: target,\n\t\tcontainer,\n\t\tposition,\n\t\toffset,\n\t\topened,\n\t\tcontent: label,\n\t\tdir,\n\t} = properties;\n\tconst fitContentArea = host.shadowRoot.querySelector('.fit-content-area');\n\tconst fitContent = host.shadowRoot.querySelector('.fit-content');\n\tconst slottedElements = fitContent?.querySelector('slot').assignedNodes();\n\tconst haveTooltipContent = Boolean(label || slottedElements.length);\n\tconst tooltipVisible = Boolean(\n\t\topened && target && fitContent && haveTooltipContent,\n\t);\n\n\tif (tooltipVisible) {\n\t\tfitContent.querySelector('.now-line-height-crop').textContent = label;\n\t\tfitContent.removeAttribute('style');\n\n\t\tconst fitProps = {\n\t\t\t...resolveFitProperties({\n\t\t\t\tdir,\n\t\t\t\tpositions: position,\n\t\t\t\tconstrain: FIT_CONSTRAIN,\n\t\t\t\thideTail: true,\n\t\t\t\toffset: Array.isArray(offset)\n\t\t\t\t\t? offset\n\t\t\t\t\t: [0, 0, offset, offset, offset, offset],\n\t\t\t}),\n\t\t\ttarget,\n\t\t\tcontainer,\n\t\t\tcontent: fitContent,\n\t\t\tcontentArea: fitContentArea,\n\t\t};\n\n\t\tconst fitStyle = getBestFitInfo({...fitProps}).style;\n\n\t\tObject.assign(fitContentArea.style, fitStyle.contentArea);\n\t\tObject.assign(fitContent.style, fitStyle.content, {\n\t\t\tvisibility: 'visible',\n\t\t\theight: null,\n\t\t});\n\t} else if (fitContent) {\n\t\tfitContentArea.removeAttribute('style');\n\t\tfitContent.removeAttribute('style');\n\t}\n};\n\n/**\n * Refitting when the default slot changes ensures\n * the tooltip is positioned correctly on the target.\n *\n * This only matters if the tooltip is opened when the\n * slot changes. It's rare, but does happen.\n */\nfunction refitOnSlotChange(records) {\n\tfor (const record of records) {\n\t\tconst {target} = record;\n\t\tconst maybeHoistHost = target?.parentNode?.closest(SEISMIC_HOIST_TAG);\n\t\tif (hoistMap.has(maybeHoistHost)) {\n\t\t\tfitTooltip({\n\t\t\t\thost: maybeHoistHost,\n\t\t\t\tproperties: maybeHoistHost.sourceElement.getProperties(),\n\t\t\t});\n\t\t}\n\t}\n}\n\nconst observer = new MutationObserver(refitOnSlotChange);\nlet targetObserver;\n\nconst handleKeydown = (dispatch, event) => {\n\tif (event.key === 'Escape') {\n\t\tevent.stopPropagation();\n\t\tdispatch(() => {\n\t\t\treturn {\n\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\tpayload: {value: false, target: 'keyboard'},\n\t\t\t};\n\t\t});\n\t}\n};\n\nconst addTargetListeners = (\n\ttargetRef,\n\tcomponentId,\n\tdelay,\n\tdispatch,\n\thost,\n\tcontainer,\n\tupdateState,\n) => {\n\tif (!targetRef || listenerMap.has(targetRef)) return;\n\tconst showTooltip = () => {\n\t\tschedule(\n\t\t\tcomponentId,\n\t\t\t() => {\n\t\t\t\tupdateState({\n\t\t\t\t\tisTooltipVisible: true,\n\t\t\t\t});\n\t\t\t\tscrollListener.add(componentId, host, container, () => {\n\t\t\t\t\tdebounceDispatch(() => {\n\t\t\t\t\t\tdispatch('PRIVATE#SCROLL_END');\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\t\t\tpayload: {value: true, target: 'target'},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t\tdelay.show || delay,\n\t\t);\n\t};\n\n\tconst hideTooltip = () => {\n\t\tschedule(\n\t\t\tcomponentId,\n\t\t\t() => {\n\t\t\t\tupdateState({\n\t\t\t\t\tisTooltipVisible: false,\n\t\t\t\t});\n\t\t\t\tscrollListener.remove(componentId);\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\t\t\tpayload: {value: false, target: 'target'},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t\tdelay.hide || delay,\n\t\t);\n\t};\n\ttargetRef.addEventListener('mouseover', showTooltip, false);\n\ttargetRef.addEventListener('mouseout', hideTooltip, false);\n\ttargetRef.addEventListener('focus', showTooltip, false);\n\ttargetRef.addEventListener('blur', hideTooltip, false);\n\n\tlistenerMap.set(targetRef, {showTooltip, hideTooltip});\n};\n\nconst removeTargetListeners = (targetRef, id) => {\n\tif (!targetRef || !listenerMap.has(targetRef)) return;\n\tconst {showTooltip, hideTooltip} = listenerMap.get(targetRef);\n\ttargetRef.removeEventListener('mouseover', showTooltip, false);\n\ttargetRef.removeEventListener('mouseout', hideTooltip, false);\n\ttargetRef.removeEventListener('focus', showTooltip, false);\n\ttargetRef.removeEventListener('blur', hideTooltip, false);\n\n\tlistenerMap.delete(targetRef);\n\n\tscrollListener.remove(id);\n};\n\nconst view = () => {\n\treturn (\n\t\t<span className=\"fit-content-area\">\n\t\t\t<span className=\"fit-content\">\n\t\t\t\t<span className=\"now-tooltip\" aria-hidden=\"true\">\n\t\t\t\t\t{/* state.properties.content is added here */}\n\t\t\t\t\t{/*\n\t\t\t\t\t\tNOTE: Snabbdom throws an error when the slotted\n\t\t\t\t\t\telement type (tag) changes while tooltip is opened\n\t\t\t\t\t\tand hoisted.\n\n\t\t\t\t\t\tIf the type of node (e.g., div) is changed between\n\t\t\t\t\t\trender states, snabbdom won't be able to diff\n\t\t\t\t\t\tthe new node because it's been hoisted out\n\t\t\t\t\t\tof the current DOM context, and snabbdom\n\t\t\t\t\t\tdepends on the parent node to know where to insert\n\t\t\t\t\t\tthe new node.\n\n\t\t\t\t\t\tThe reason this bug doesn't happen when the node\n\t\t\t\t\t\tremains the same is because snabbdom works off of\n\t\t\t\t\t\tmemoizing each DOM node. So as long as the node\n\t\t\t\t\t\tdoesn't change tag type, Snabbdom retains\n\t\t\t\t\t\tthe reference and continues to update it.\n\t\t\t\t\t*/}\n\t\t\t\t\t<slot>\n\t\t\t\t\t\t<span className=\"now-line-height-crop\" />\n\t\t\t\t\t</slot>\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t</span>\n\t);\n};\n\n/**\n * Descriptive text that appears when the user hovers over or tabs to an element.\n *\n * ```jsx\n * import {createCustomElement} from '@servicenow/ui-core';\n * import snabbdom, {Fragment} from '@servicenow/ui-renderer-snabbdom';\n * import '@servicenow/now-tooltip';\n *\n * const view = (state, {updateState}) => {\n *   const setTargetRef = (ref) => setTimeout(() => updateState({targetRef: ref}));\n *   return (\n *     <Fragment>\n *       <span\n *         hook-insert={({elm}) => setTargetRef(elm)}\n *         hook-destroy={() => setTargetRef(null)}\n *         aria-describedby=\"tooltip1\">\n *           Hover over me for a tooltip\n *       </span>\n *       <now-tooltip\n *         id=\"tooltip1\"\n *         target-ref={state.targetRef}\n *         content=\"This text will appear in the tooltip\"\n *         delay={500}\n *       />\n *     </Fragment>\n *   );\n * };\n *\n * createCustomElement('sn-text-with-tooltip', {\n *   renderer: {\n *     type: snabbdom,\n *     view\n *   }\n * });\n * ```\n *\n * Alternatively, you can slot in content.\n *\n * ```jsx\n * <now-tooltip\n *    id=\"tooltip2\"\n *    target-ref={state.targetRef}>\n *    I am <strong>rich content</strong>\n * </now-tooltip>\n * ```\n *\n * @seismicElement now-tooltip\n * @summary Descriptive text to inform the user of the purpose of or context for an element.\n */\ncreateEnhancedElement('now-tooltip', {\n\tproperties: {\n\t\t/**\n\t\t * The target HTML element that the tooltip appears over when\n\t\t * the user hovers over or tabs to it.\n\t\t * @type {HTMLElement}\n\t\t */\n\t\ttargetRef: {},\n\t\t/**\n\t\t * Text that displays within the tooltip. If you want to display complex content,\n\t\t * use the default slot instead. This property is ignored when the slot is used.\n\t\t * @type {string}\n\t\t */\n\t\tcontent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * True when the user hovers over or tabs to the tooltip's target element.\n\t\t * Use `manage-opened` to override the default behavior and handle the\n\t\t * `NOW_TOOLTIP#OPENED_SET` action manually.\n\t\t * @type {boolean}\n\t\t */\n\t\topened: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Time delay in milliseconds after the user interacts with the\n\t\t * target element before the the tooltip appears or\n\t\t * disappears. Can be specified as an object with `show` and `hide`\n\t\t * keys, or as a simple number that applies to both.\n\t\t * @type {(number | {show: number, hide: number})}\n\t\t */\n\t\tdelay: {\n\t\t\tdefault: 300,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{type: 'number'},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {show: {type: 'number'}, hide: {type: 'number'}},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Element that the tooltip must fit within.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t */\n\t\tcontainer: {\n\t\t\tget default() {\n\t\t\t\treturn document.body;\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Array of possible positions to place the tooltip relative to its target element.\n\t\t * @type {Array<string>}\n\t\t */\n\t\tposition: {\n\t\t\tdefault: [\n\t\t\t\t'top-center bottom-center',\n\t\t\t\t'bottom-center top-center',\n\t\t\t\t'center-end center-start',\n\t\t\t\t'center-start center-end',\n\t\t\t\t'top-end top-start',\n\t\t\t\t'bottom-end bottom-start',\n\t\t\t\t'top-start top-end',\n\t\t\t\t'bottom-start bottom-end',\n\t\t\t],\n\t\t\tschema: {type: 'array', items: {type: 'string'}},\n\t\t},\n\t\t/**\n\t\t * Number of pixels to shift the tooltip from its target element.\n\t\t * @type {number | Array<number>}\n\t\t */\n\t\toffset: {\n\t\t\tdefault: 8,\n\t\t\tschema: {\n\t\t\t\toneOf: [{type: 'number'}, {type: 'array', items: {type: 'number'}}],\n\t\t\t},\n\t\t},\n\t\t/** @private */\n\t\tariaLabel: {\n\t\t\treflect: true,\n\t\t\tcomputed: ({properties: {content}}) => content,\n\t\t},\n\t\t/** @private */\n\t\tariaHidden: {\n\t\t\treflect: true,\n\t\t\tcomputed: ({properties}) => (properties.opened ? undefined : 'true'),\n\t\t},\n\t\t/** @private */\n\t\trole: {\n\t\t\treflect: true,\n\t\t\tdefault: 'tooltip',\n\t\t},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['mouseover', 'mouseout'],\n\t\t\teffect: ({properties, dispatch, action}) => {\n\t\t\t\tconst {event} = action.meta;\n\t\t\t\tconst {nowId, delay} = properties;\n\t\t\t\tconst value = event.type === 'mouseover' ? true : false;\n\n\t\t\t\tschedule(\n\t\t\t\t\tnowId,\n\t\t\t\t\t() =>\n\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\t\t\t\t\tpayload: {value, target: 'content'},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}),\n\t\t\t\t\tdelay.show || delay,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: ({\n\t\t\thost,\n\t\t\taction,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {\n\t\t\t\tmeta: {id, hoistHost},\n\t\t\t} = action;\n\t\t\tconst {targetRef, delay, container} = properties;\n\t\t\tconst tooltipHost = hoistHost || host;\n\t\t\taddTargetListeners(\n\t\t\t\ttargetRef,\n\t\t\t\tid,\n\t\t\t\tdelay,\n\t\t\t\tdispatch,\n\t\t\t\ttooltipHost,\n\t\t\t\tcontainer,\n\t\t\t\tupdateState,\n\t\t\t);\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({properties, action}) => {\n\t\t\tconst {\n\t\t\t\tmeta: {id},\n\t\t\t} = action;\n\t\t\tremoveTargetListeners(properties.targetRef, id);\n\t\t\tlayerEvents.remove(properties.nowId);\n\t\t\ttargetObserver?.disconnect();\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]({host, properties, action}) {\n\t\t\tconst {name, value} = action.payload;\n\t\t\tconst tooltipHost = action.meta.hoistHost || host;\n\t\t\tif (name === 'opened' && !value) {\n\t\t\t\thoistMap.delete(tooltipHost);\n\t\t\t\tlayerEvents.remove(properties.nowId);\n\t\t\t\tlistenerMap.delete(tooltipHost);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_RENDERED]: ({\n\t\t\tproperties,\n\t\t\thost,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tupdateProperties,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {\n\t\t\t\tpayload: {previousRenderProperties},\n\t\t\t\tmeta: {id, hoistHost},\n\t\t\t} = action;\n\t\t\tconst {\n\t\t\t\topened,\n\t\t\t\tcontent,\n\t\t\t\tcontainer,\n\t\t\t\tposition,\n\t\t\t\toffset,\n\t\t\t\ttargetRef,\n\t\t\t\tnowHoist,\n\t\t\t} = properties;\n\t\t\tconst tooltipHost = hoistHost || host;\n\n\t\t\tif (!nowHoist && opened) {\n\t\t\t\treturn updateProperties({nowHoist: true});\n\t\t\t} else if (nowHoist && !opened) {\n\t\t\t\treturn updateProperties({nowHoist: false});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tcontent !== previousRenderProperties.content ||\n\t\t\t\tcontainer !== previousRenderProperties.container ||\n\t\t\t\tposition !== previousRenderProperties.position ||\n\t\t\t\toffset !== previousRenderProperties.offset ||\n\t\t\t\topened\n\t\t\t) {\n\t\t\t\tfitTooltip({properties, host: tooltipHost});\n\t\t\t}\n\n\t\t\tif (targetRef !== previousRenderProperties.targetRef) {\n\t\t\t\tconst {delay} = properties;\n\t\t\t\tremoveTargetListeners(previousRenderProperties.targetRef, id);\n\t\t\t\taddTargetListeners(\n\t\t\t\t\ttargetRef,\n\t\t\t\t\tid,\n\t\t\t\t\tdelay,\n\t\t\t\t\tdispatch,\n\t\t\t\t\ttooltipHost,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tupdateState,\n\t\t\t\t);\n\t\t\t\tfitTooltip({properties, host: tooltipHost});\n\t\t\t}\n\n\t\t\tif (opened && !listenerMap.has(tooltipHost)) {\n\t\t\t\thoistMap.set(tooltipHost, true);\n\t\t\t\tobserver.observe(tooltipHost, {\n\t\t\t\t\tchildList: true,\n\t\t\t\t\tsubtree: true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t});\n\t\t\t\tconst boundHandler = (event) => handleKeydown(dispatch, event);\n\t\t\t\tlayerEvents.add({id, events: ['keydown'], callback: boundHandler});\n\t\t\t\tlistenerMap.set(tooltipHost, boundHandler);\n\t\t\t}\n\n\t\t\tif (opened) {\n\t\t\t\ttargetObserver = new MutationObserver(() => {\n\t\t\t\t\tfitTooltip({properties, host: tooltipHost});\n\t\t\t\t});\n\t\t\t\ttargetObserver.observe(targetRef, {\n\t\t\t\t\tattributes: true,\n\t\t\t\t\tattributeFilter: ['style', 'aria-valuenow'],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t'PRIVATE#CHECK_FIT': {\n\t\t\tstopPropagation: true,\n\t\t\tmodifier: {\n\t\t\t\tname: 'throttle',\n\t\t\t\tlimit: 10,\n\t\t\t},\n\t\t\teffect: ({host, action, properties}) => {\n\t\t\t\tfitTooltip({properties, host: action.meta.hoistHost || host});\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#SCROLL_END': {\n\t\t\teffect: ({host, state, properties, action}) => {\n\t\t\t\tif (state.isTooltipVisible) {\n\t\t\t\t\tfitTooltip({properties, host: action.meta.hoistHost || host});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\tisTooltipVisible: false,\n\t},\n\tview,\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the tooltip opens or closes.\n\t\t * Set the `manage-opened` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t */\n\t\t'NOW_TOOLTIP#OPENED_SET': {},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Complex content to display inside the tooltip body.\n\t\t * When this slot is used, the `content` property is ignored.\n\t\t *\n\t\t * If the content is plain text,\n\t\t * use the `content` property instead.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n});\n","import {findAncestors} from './dom';\n\n/**\n * Attaches scroll listeners to all ancestor elements of the given host element\n * that have shadow roots (because scroll events do not automatically bubble\n * through shadow boundaries). When any of the scroll listeners are fired,\n * trigger the callback function.\n * @param {HTMLElement} host\n * @param {string} componentId\n * @param {function} callback\n */\nexport default function createScrollListener() {\n\tconst attached = new Map();\n\n\treturn {\n\t\tasync add(id, host, container, callback) {\n\t\t\tconst ancestors = await findAncestors(id, host, container);\n\t\t\tconst targets = [];\n\t\t\tancestors.forEach((el) => el.shadowRoot && targets.push(el));\n\n\t\t\tconst listener = (e) => {\n\t\t\t\tconst [source] = e.composedPath();\n\t\t\t\tif (ancestors.has(source)) {\n\t\t\t\t\tcallback(e);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor (const target of targets) {\n\t\t\t\ttarget.shadowRoot.addEventListener('scroll', listener, true);\n\t\t\t}\n\n\t\t\tattached.set(id, {targets, listener});\n\t\t},\n\t\tremove(id) {\n\t\t\tconst value = attached.get(id);\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {targets, listener} = value;\n\t\t\tfor (const target of targets) {\n\t\t\t\ttarget.shadowRoot.removeEventListener('scroll', listener, true);\n\t\t\t}\n\n\t\t\tattached.delete(id);\n\t\t},\n\t};\n}\n","import './now-tooltip';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nexport {\n\tTOOLTIP_DELAY,\n\tTimeoutStore as timeoutMap,\n\tschedule,\n\tunschedule,\n\tcreateTooltipActionHandler,\n} from './scheduler';\n","export default new Map();\n","import TimeoutStore from './store';\n\n// TODO-SEISMIC-HACK: Remove if we can switch to a scheduled/cancellable action\n// instead of implementing our own approach\n// This scheduling is necessary because changing the target of the tooltip\n// breaks its internal timing mechanism. This is necessary for WCAG which\n// is rigid in its allowable timing\nconst TOOLTIP_DELAY = 300;\n\nconst schedule = (key, fn, ms = TOOLTIP_DELAY) => {\n\twindow.clearTimeout(TimeoutStore.get(key));\n\tconst newTimeout = window.setTimeout(fn, ms);\n\tTimeoutStore.set(key, newTimeout);\n};\n\nconst unschedule = (key) => {\n\tif (TimeoutStore.has(key)) {\n\t\twindow.clearTimeout(TimeoutStore.get(key));\n\t}\n};\n\n/*\n  This action handler should be used in the component managing the tooltip\n  It allows for keyboard esc functionality and generally hiding the tooltip\n*/\nconst createTooltipActionHandler = (hideTooltipCB) => {\n\treturn {\n\t\t'NOW_TOOLTIP#OPENED_SET': ({action, properties, updateState}) => {\n\t\t\tconst {value, target} = action.payload;\n\t\t\tconst componentId = properties.nowId;\n\n\t\t\tif (target === 'content' && value) {\n\t\t\t\tunschedule(componentId);\n\t\t\t}\n\n\t\t\tif ((target === 'content' || target === 'keyboard') && !value) {\n\t\t\t\tschedule(componentId, hideTooltipCB.bind(null, updateState));\n\t\t\t}\n\t\t},\n\t};\n};\n\nexport {\n\tTOOLTIP_DELAY,\n\tTimeoutStore,\n\tschedule,\n\tunschedule,\n\tcreateTooltipActionHandler,\n};\n","// dedupe shortcuts\n// This is an exception for a use case where we want to allow the same shortcut to work across two specific components - now-uxf-tab-set & now-contextual-sidebar\nexport const DUPLICATE_SHORTCUT_TAB_SET_EXCEPTIONS = [\n\t'NOW-CONTEXTUAL-SIDEBAR',\n\t'NOW-UXF-TAB-SET'\n];\n\n// key formatter\n// Intentionally leaving out Shift key here as the Shift key must be used in conjunction with another modifier key\nexport const MODIFIER_KEYS = {\n\tALT: 'Alt',\n\tCONTROL: 'Control',\n\tMETA: 'Meta'\n};\nexport const SUPPORTED_SPECIAL_CHARACTERS = {\n\tSEMICOLON: 'Semicolon',\n\tBRACKET_LEFT: 'BracketLeft',\n\tBRACKET_RIGHT: 'BracketRight',\n\tQUOTE: 'Quote',\n\tCOMMA: 'Comma',\n\tPERIOD: 'Period',\n\tSLASH: 'Slash',\n\tDASH: 'Dash',\n\tEQUAL: 'Equal'\n};\nexport const KEY_PREFIXES = {\n\tKEY: 'Key',\n\tDIGIT: 'Digit'\n};\n\n// component registry\nexport const APP_SHELL_MODAL_HOIST = 'SN-CANVAS-MODAL-HOIST';\nexport const APP_SHELL_ROOT = 'SN-CANVAS-APPSHELL-ROOT';\nexport const CANVAS_TOOL_BAR = 'SN-CANVAS-TOOLBAR';\nexport const SN_POLARIS_LAYOUT = 'SN-POLARIS-LAYOUT';\nexport const SN_CANVAS_TABS = 'SN-CANVAS-TABS';\n\n// IMPORTANT!!! If you are working on shortcuts for an app shell component, add it to this array else the shortcut will not work\nexport const APP_SHELL_COMPONENTS = [\n\tSN_POLARIS_LAYOUT,\n\tCANVAS_TOOL_BAR,\n\tSN_CANVAS_TABS\n];\n\n// shortcut registry\nexport const ACTION_BAR = 'NOW-RECORD-COMMON-UIACTIONBAR';\n\n// Shortcut Data Fetching\n// KEYBOARD_SHORTCUTS_API is used as API endpoint for REST service as well as cache key\n// in the KEY_SHORTCUTS cache store.\nexport const KEYBOARD_SHORTCUTS_API = '/api/now/uxframework/keyboard_shortcuts';\nexport const KEYBOARD_SHORTCUTS_CACHE_BUSTER = 'ux_kbs_cb';\nexport const KEY_SHORTCUTS = 'now_ux_shortcuts';\nexport const KEY_SHORTCUT_CB_HASH = 'now_ux_shortcut_cb_hash';\n\n// landmarks\nconst LANDMARK_FOCUS_FORWARD = 'LANDMARK_FOCUS_FORWARD';\nconst LANDMARK_FOCUS_BACKWARD = 'LANDMARK_FOCUS_BACKWARD';\nconst LANDMARK_FOCUS_ATTR = 'data-landmarkfocus';\nconst LANDMARK_ACTIVE_ELEMENT_ATTR = 'data-activelement';\nconst LANDMARK_LAST_CLICKED_ATTR = 'data-lastclicked';\nconst LANDMARK_SELECTOR = `[${LANDMARK_ACTIVE_ELEMENT_ATTR}], [${LANDMARK_FOCUS_ATTR}=\"true\"]`;\n\nexport const landmarkConstants = {\n\tLANDMARK_FOCUS_FORWARD,\n\tLANDMARK_FOCUS_BACKWARD,\n\tLANDMARK_FOCUS_ATTR,\n\tLANDMARK_ACTIVE_ELEMENT_ATTR,\n\tLANDMARK_LAST_CLICKED_ATTR,\n\tLANDMARK_SELECTOR\n};\n\n// Context Management\nexport const KBS_MODAL_OPENED = 'UXF_KBS#MODAL_OPENED';\nexport const KBS_MODAL_CLOSED = 'UXF_KBS#MODAL_CLOSED';\n\n// DOM Helpers\nexport const COMPONENT_ID = 'component-id';\nexport const HIDDEN = 'hidden';\nexport const COLLAPSED = 'collapsed';\n\nexport const SHORTCUT_DIRECTORY_MODAL_ACTION =\n\t'KEYBOARD_SHORTCUTS_BEHAVIOR#MODAL_OPENED';\n\n/**\n * User Override data fetching API path for \"shortcut\" category.\n * Also, used as a key in USER_OVERRIDE_SHORTCUT_CACHE_KEY cache store.\n */\nexport const USER_OVERRIDE_SHORTCUT_API_PATH =\n\t'/api/now/uxframework/user_override/shortcut';\n/** User Override Shortcuts cache key. */\nexport const USER_OVERRIDE_SHORTCUT_CACHE = 'now_ux_user_override_shortcut';\nexport const USER_OVERRIDE_SHORTCUT_CACHE_CB_HASH =\n\t'now_ux_user_override_shortcut_cb_hash';\n\n// Cache configuration for shortcuts and overrides\nexport const CACHE_CONFIGS = {\n\t[KEY_SHORTCUTS]: {\n\t\tdescription: 'keyboard shortcut responses',\n\t\tadapter: ['indexedDB'],\n\t\tevictionPolicy: 'LRU',\n\t\tname: 'kb_shortcut_lru',\n\t\tstoreName: 'kb_shortcut_store'\n\t},\n\t[KEY_SHORTCUT_CB_HASH]: {\n\t\tdescription: 'used for invalidating stale keyboard shortcut metadata',\n\t\tadapter: ['localStorage'],\n\t\tevictionPolicy: 'LRU',\n\t\tname: 'shortcut_cb_hash_lru',\n\t\tstoreName: 'shortcut_cb_hash_store'\n\t},\n\t[USER_OVERRIDE_SHORTCUT_CACHE]: {\n\t\tdescription: 'user override shortcut',\n\t\tadapter: ['indexedDB'],\n\t\tevictionPolicy: 'LRU',\n\t\tname: 'user_override_lru',\n\t\tstoreName: 'user_override_shortcut_store'\n\t},\n\t[USER_OVERRIDE_SHORTCUT_CACHE_CB_HASH]: {\n\t\tdescription: 'used for invalidating stale shortcut override metadata',\n\t\tadapter: ['localStorage'],\n\t\tevictionPolicy: 'LRU',\n\t\tname: 'user_override_shortcut_cb_hash_lru',\n\t\tstoreName: 'user_override_shortcut_cb_hash_store'\n\t}\n};\n\nexport const NOW_UX_INTERACTION = 'NOW-UX-INTERACTION';\n","import isEmpty from './isEmpty.js';\n/**\n * The get function returns the value of the nested property within object, specified by path.\n * If no value is found, an optional default value is returned, or undefined if no default value is given.\n * @param {object} object The object to find a value on specified by path\n * @param {*} path The path from the object to be resolved\n * @param {*} defaultValue Returned if the path cannot be resolved, defaults to undefined if not provided\n * @returns {object} The nested value within object speficied by path, or defaultValue if the path cannot be resolved\n */\nexport default function get(object, path, defaultValue) {\n\tif (!path || isEmpty(path)) {\n\t\treturn defaultValue;\n\t}\n\tconst keys = Array.isArray(path)\n\t\t? path\n\t\t: path\n\t\t\t\t.toString()\n\t\t\t\t.split(/[[\\].]/)\n\t\t\t\t.filter(Boolean);\n\n\tlet value = object;\n\tfor (const key of keys) {\n\t\tif (value == null) break;\n\n\t\tif (Array.isArray(value) && /^\\d+$/.test(key)) {\n\t\t\tconst index = parseInt(key, 10);\n\t\t\tvalue = value[index];\n\t\t} else {\n\t\t\tvalue = value[key];\n\t\t}\n\t}\n\n\treturn value === undefined ? defaultValue : value;\n}\n","/**\n * The isEmpty function determines if a given value is empty or not.\n * @param {any} value The value to check\n * @returns {boolean} True if the value is empty, false otherwise\n */\nexport default function isEmpty(value) {\n\tif (value == null) return true;\n\tif (typeof value === 'string' || Array.isArray(value))\n\t\treturn value.length === 0;\n\tif (typeof value === 'object') return Object.keys(value).length === 0;\n\n\treturn false;\n}\n","/**\n * Performs a deep comparison between two values to determine if they are equivalent.\n *\n * @param {*} value - The value to compare.\n * @param {*} other - The other value to compare.\n * @returns {boolean} Returns true if the values are equivalent, else false.\n */\nexport default function isEqual(value, other) {\n\tif (value === other) {\n\t\treturn true;\n\t}\n\n\tif (typeof value !== typeof other || value === null || other === null) {\n\t\treturn false;\n\t}\n\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tconst valueTag = Object.prototype.toString.call(value);\n\tconst otherTag = Object.prototype.toString.call(other);\n\n\tif (valueTag !== otherTag) {\n\t\treturn false;\n\t}\n\n\tif (valueTag === '[object Array]') {\n\t\tconst length = value.length;\n\n\t\tif (length !== other.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tif (!isEqual(value[i], other[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tif (valueTag === '[object Object]') {\n\t\tconst valueKeys = Object.keys(value);\n\t\tconst otherKeys = Object.keys(other);\n\n\t\tif (valueKeys.length !== otherKeys.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let key of valueKeys) {\n\t\t\tif (\n\t\t\t\t!Object.prototype.hasOwnProperty.call(other, key) ||\n\t\t\t\t!isEqual(value[key], other[key])\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","/**\n * A function that does nothing.\n */\nexport default function noop() {}\n","/**\n * The set function allows you to set the value of a nested property of an object\n * @param {object} object The object with the property to be set\n * @param {*} path The path of the property to set\n * @param {*} value The value to set\n * @return {*} Returns the modified object\n */\nexport default function set(object, path, value) {\n\tif (path == null) return object;\n\n\tif (typeof path === 'string') {\n\t\tpath = path\n\t\t\t.split(/\\.|\\[|\\]/g)\n\t\t\t.filter(Boolean)\n\t\t\t.map((part) => {\n\t\t\t\treturn isNaN(part) ? part : Number(part);\n\t\t\t});\n\t}\n\n\tpath.reduce((curr, key, index) => {\n\t\tif (index === path.length - 1) curr[key] = value;\n\t\telse {\n\t\t\tif (typeof key === 'number') {\n\t\t\t\tif (!Array.isArray(curr)) curr = [];\n\t\t\t\tif (curr[key] === undefined) curr[key] = {};\n\t\t\t} else {\n\t\t\t\tif (!curr[key]) curr[key] = {};\n\t\t\t}\n\t\t\treturn curr[key];\n\t\t}\n\t}, object);\n\n\treturn object;\n}\n","/**\n * Invokes `func` with `partials` prepended to the arguments it receives,\n * without altering the `this` value.\n *\n * Invokes `func` with `partials` prepended to the arguments it receives.\n * Returns the new function.\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} partials The arguments to partially apply to the function.\n * @returns {Function} Returns the new partially applied function.\n */\nexport default function partial(func, ...partials) {\n\tif (typeof func != 'function')\n\t\tthrow new TypeError('Expected func to be of type function');\n\treturn function(...args) {\n\t\tconst fullArgs = partials\n\t\t\t.map((partialArg) =>\n\t\t\t\tpartialArg === partial.placeholder ? args.shift() : partialArg\n\t\t\t)\n\t\t\t.concat(args);\n\t\treturn func.apply(this, fullArgs);\n\t};\n}\npartial.placeholder = Symbol();\n","import {get, noop} from '@devsnc/snowdash';\n\nconst LOGGING_ENABLED = get(\n\twindow,\n\t['nowUiFramework', 'loggingEnabled'],\n\tfalse\n);\n\nconst PRODUCTION_CONSOLE_METHODS = ['error', 'warn'];\n\nexport const shortcutLogger = new Proxy(console, {\n\tget(target, property) {\n\t\tif (\n\t\t\ttypeof target[property] === 'function' &&\n\t\t\t(PRODUCTION_CONSOLE_METHODS.includes(property) || LOGGING_ENABLED)\n\t\t) {\n\t\t\treturn function (...args) {\n\t\t\t\tif (typeof args[0] === 'string') {\n\t\t\t\t\targs[0] = `[UXF Shortcuts]: ${args[0]}`;\n\t\t\t\t}\n\n\t\t\t\ttarget[property].apply(console, args);\n\t\t\t};\n\t\t}\n\n\t\treturn noop;\n\t}\n});\n","const {userAgent} = navigator;\n\n/**\n * @function isMac\n *\n * @description Checks if the current userAgent is a Mac-based platform\n *\n * @returns {Boolean}\n */\nexport const isMac = () => /Mac/i.test(userAgent);\n\n/**\n * @function isWindows\n *\n * @description Checks if the current userAgent is a Windows-based platform\n *\n * @returns {Boolean}\n */\nexport const isWindows = () => /Win/i.test(userAgent);\n\n/**\n * @function isSupportedPlatform\n *\n * @description Checks if the current userAgent is supported for keyboard shortcuts\n *\n * @returns {Boolean}\n */\nexport const isSupportedPlatform = () => isMac() || isWindows();\n","import unifiedCache from '@devsnc/library-unified-cache';\nimport {\n\tKEY_SHORTCUTS,\n\tKEY_SHORTCUT_CB_HASH,\n\tUSER_OVERRIDE_SHORTCUT_CACHE,\n\tUSER_OVERRIDE_SHORTCUT_CACHE_CB_HASH,\n\tCACHE_CONFIGS\n} from './constants';\n\nconst instance = {};\n\n/**\n * @function getCacheInstance\n * @description Generic & singleton-esque providing the instance for interacting with unified cache\n * @param {string} key - Key for which instance to access\n * @returns the relevant unified cache instance\n */\nconst getCacheInstance = (key) => {\n\tif (!instance[key])\n\t\tinstance[key] = unifiedCache.createInstance(CACHE_CONFIGS[key]);\n\treturn instance[key];\n};\n\nexport const shortcutCache = getCacheInstance(KEY_SHORTCUTS);\n\nexport const shortcutCBHashCache = getCacheInstance(KEY_SHORTCUT_CB_HASH);\nexport const userOverrideShortcutCBHashCache = getCacheInstance(\n\tUSER_OVERRIDE_SHORTCUT_CACHE_CB_HASH\n);\n\nexport const userOverrideShortcutCache = getCacheInstance(\n\tUSER_OVERRIDE_SHORTCUT_CACHE\n);\n","import {isEqual} from '@devsnc/snowdash';\nimport {\n\tfindNearestParentElement,\n\tfindFirstChildElement,\n\tgetActiveElement\n} from './querySelectors';\nimport {shortcutLogger as console} from './getLogger';\nimport {DUPLICATE_SHORTCUT_TAB_SET_EXCEPTIONS} from './constants';\n\nconst getReturnValue = (shortcuts, element) => {\n\tconst {actionKey, actionPayload, name} = shortcuts.find(\n\t\t(shortcut) => shortcut.componentTagName === element.tagName\n\t);\n\n\treturn {\n\t\telement,\n\t\tactionKey,\n\t\tactionPayload,\n\t\tname\n\t};\n};\n\n/**\n * @function dedupeShortcuts\n *\n * @description - Dedupes shortcuts on the page and returns the resolved shortcut.\n *\n * @param {Array<ShortcutMetadata>} shortcuts\n *\n * @returns {ShortcutMetadata} - Resolved shortcut\n */\nexport const dedupeShortcuts = (shortcuts) => {\n\tconst componentTagNames = shortcuts\n\t\t.flatMap((shortcut) => shortcut.componentTagName)\n\t\t.sort();\n\n\t// Need to ensure the only duplicate shortcuts on the page are the ones that are supported (i.e. now-uxf-tab-set & now-contextual-sidebar)\n\tif (\n\t\t!isEqual(\n\t\t\tDUPLICATE_SHORTCUT_TAB_SET_EXCEPTIONS.sort(),\n\t\t\tcomponentTagNames.sort()\n\t\t)\n\t) {\n\t\tconsole.warn(\n\t\t\t'Shortcut could not be triggered - Duplicate shortcuts detected with the same key combination!',\n\t\t\tshortcuts\n\t\t);\n\t\treturn;\n\t}\n\n\tfor (const componentTagName of componentTagNames) {\n\t\tconst activeElement = getActiveElement();\n\t\tconst element = findNearestParentElement(activeElement, componentTagName);\n\n\t\tif (element) {\n\t\t\treturn getReturnValue(shortcuts, element);\n\t\t}\n\t}\n\n\t// Reversing because we need to favor now-uxf-tab-set over now-contextual-sidebar when searching top down as the tab set should always come before the sidebar\n\tfor (const componentTagName of componentTagNames.reverse()) {\n\t\tconst element = findFirstChildElement(componentTagName);\n\t\tif (element) {\n\t\t\treturn getReturnValue(shortcuts, element);\n\t\t}\n\t}\n};\n","import {shortcutLogger as console} from './getLogger';\nimport {SUPPORTED_SPECIAL_CHARACTERS, KEY_PREFIXES} from './constants';\n\n/**\n * @function isAlphabetic\n *\n * @description Uses regex to test if the given character is alphabetic\n *\n * @param {String} char\n *\n * @returns {Boolean}\n */\nfunction isAlphabetic(char) {\n\treturn /^[a-zA-Z]$/.test(char);\n}\n\n/**\n * @function isNumeric\n * @description Evaluates if a given value is a numeric string\n * @param {String} char\n * @returns {Boolean}\n */\nexport const isNumeric = (char) => /[0-9]+/.test(`${char}`);\n\n// Keeping for now, but currently no longer needed.\n// Added a User Restriction in Miro that shift-enabled special characters are not supported\n// https://miro.com/app/board/uXjVMcMU5Hs=/?moveToWidget=3458764552676725388&cot=14\n// function isSpecialCharacter(char) {\n// \tvar regex = /[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/;\n// \treturn regex.test(char);\n// }\n\n/**\n * @function formatKeyCode\n *\n * @description Formats the key stored in sys_ux_keyboard_shortcut.shortcut into the equivlent KeyboardEvent:code string\n *\n * @param {KeyboardEvent.code} key\n *\n * @returns {String}\n */\nexport const formatKeyCode = (key) => {\n\tswitch (key) {\n\t\tcase ';':\n\t\t\treturn SUPPORTED_SPECIAL_CHARACTERS.SEMICOLON;\n\t\tcase '[':\n\t\t\treturn SUPPORTED_SPECIAL_CHARACTERS.BRACKET_LEFT;\n\t\tcase ']':\n\t\t\treturn SUPPORTED_SPECIAL_CHARACTERS.BRACKET_RIGHT;\n\t\tcase \"'\":\n\t\t\treturn SUPPORTED_SPECIAL_CHARACTERS.QUOTE;\n\t\tcase ',':\n\t\t\treturn SUPPORTED_SPECIAL_CHARACTERS.COMMA;\n\t\tcase '.':\n\t\t\treturn SUPPORTED_SPECIAL_CHARACTERS.PERIOD;\n\t\tcase '/':\n\t\t\treturn SUPPORTED_SPECIAL_CHARACTERS.SLASH;\n\t\tcase '-':\n\t\t\treturn SUPPORTED_SPECIAL_CHARACTERS.DASH;\n\t\tcase '=':\n\t\t\treturn SUPPORTED_SPECIAL_CHARACTERS.EQUAL;\n\t\tdefault:\n\t\t\tif (isAlphabetic(key)) {\n\t\t\t\treturn `${KEY_PREFIXES.KEY}${key}`;\n\t\t\t} else if (isNumeric(key)) {\n\t\t\t\treturn `${KEY_PREFIXES.DIGIT}${key}`;\n\t\t\t}\n\t\t\tconsole.error(`Key '${key}' is not supported for keyboard shortcuts!`);\n\t}\n};\n","import {COMPONENT_ID, HIDDEN, COLLAPSED} from './constants';\n\n/**\n * @function checkVisibility\n *\n * @description Checks if an element is visible on the page\n *\n * @param {HTMLElement} element - The element to check\n *\n * @returns {Boolean} - Whether or not the element is visible\n */\nexport const checkVisibility = (element) => {\n\tconst computedStyles = window.getComputedStyle(element);\n\tconst {visibility} = computedStyles;\n\tif (visibility === HIDDEN || visibility === COLLAPSED) {\n\t\treturn false;\n\t}\n\n\t// getBoundingClientRect().toJSON() breaks unit tests!\n\tconst rect = JSON.parse(JSON.stringify(element.getBoundingClientRect()));\n\tconst rectValues = Object.values(rect);\n\n\treturn rectValues.some((val) => val !== 0);\n};\n\n/**\n * @function isSeismicElement\n *\n * @description Checks if an element is a seismic component\n *\n * @param {HTMLElement} element - The element to check\n *\n * @returns {Boolean} - Whether or not the element is a seismic component\n */\nexport const isSeismicElement = (element) =>\n\t(element.tagName || '').includes('-') && element.hasAttribute(COMPONENT_ID);\n","import {shortcutLogger as console} from './helpers/getLogger';\nimport {set} from '@devsnc/snowdash';\nimport {KBS_MODAL_CLOSED, KBS_MODAL_OPENED} from './helpers';\n\n/**\n * @constant ContextManagerSingleton\n *\n * @description - Singleton for managing the context of the keyboard shortcuts. Currently only used for modals\n */\nconst ContextManagerSingleton = (function () {\n\treturn {\n\t\tgetInstance() {\n\t\t\tif (!window.uxfTriggerLibrary?.contextManager) {\n\t\t\t\tset(window, ['uxfTriggerLibrary', 'contextManager'], {});\n\t\t\t}\n\n\t\t\treturn window.uxfTriggerLibrary.contextManager;\n\t\t}\n\t};\n})();\n\nexport const ContextManager = ContextManagerSingleton.getInstance();\n\n/**\n * @function setModalContext\n *\n * @description - Sets the modal context based on the event detail\n *\n * @param {obj} detail - The event details. Used to determine if a modal is opened or closed.\n */\nexport const setModalContext = (detail) => {\n\tconst {payload, type} = detail;\n\tconst {host} = payload;\n\n\tContextManager.modalContext = type === KBS_MODAL_OPENED ? host : null;\n\tContextManager.isModalOpen = type === KBS_MODAL_OPENED;\n\tconsole.log(`Modal ${type === KBS_MODAL_OPENED ? 'opened' : 'closed'}`);\n};\n\n/**\n * @function initializeContextListeners\n *\n * @description - Initializes the listeners for the context manager\n */\nexport const initializeContextListeners = () => {\n\twindow.addEventListener(KBS_MODAL_CLOSED, (e) => {\n\t\tsetModalContext(e.detail);\n\t});\n\n\twindow.addEventListener(KBS_MODAL_OPENED, (e) => {\n\t\tsetModalContext(e.detail);\n\t});\n};\n","import {getComponentFromRegistry} from '../componentRegistry';\nimport {APP_SHELL_COMPONENTS, APP_SHELL_MODAL_HOIST} from './constants';\nimport {ContextManager} from '../contextManager';\nimport {checkVisibility} from './domHelpers';\n\n/**\n * @function shadowQuerySelectorAll\n *\n * @description Finds and returns an array of all elements across shadow roots\n * that match the selector in the order of their position in the DOM.  If the selector\n * is an element attribute you must wrap the string in square brackets.\n * @param  {String} selector selector\n * @param  {Node} root root node\n * @param {Number} maxDepth maximum depth the function will recurse to\n * @param {Number} currentDepth current depth of the recursion\n * @return {Array<Node>} returns the array of all matching elements across shadow roots\n */\nexport const shadowQuerySelectorAll = (\n\tselector,\n\troot = document,\n\tmaxDepth = Infinity,\n\tcurrentDepth = 0\n) => {\n\tif (!selector || currentDepth > maxDepth) return [];\n\n\tconst expandedNodes = [];\n\n\tif (root.shadowRoot) root = root.shadowRoot;\n\n\t// Create a Set for O(1) lookups\n\tconst nodesThatMatchedOriginalSelector = new Set(\n\t\troot.querySelectorAll(selector)\n\t);\n\n\t// Use the joined selector to fetch nodes, the component-id finds elements with shadowroots\n\tconst nodes = root.querySelectorAll(`[component-id], ${selector}`);\n\n\tnodes.forEach((node) => {\n\t\t// if the shadowrooted node matches the original selector add it to the\n\t\t// results before any of its matching children to maintain DOM position order\n\t\tif (nodesThatMatchedOriginalSelector.has(node)) {\n\t\t\texpandedNodes.push(node);\n\t\t}\n\t\t// add all matching child elements recursively\n\t\tif (node.shadowRoot) {\n\t\t\tconst childNodes = shadowQuerySelectorAll(\n\t\t\t\tselector,\n\t\t\t\tnode,\n\t\t\t\tmaxDepth,\n\t\t\t\tcurrentDepth + 1\n\t\t\t);\n\t\t\texpandedNodes.push(...childNodes); // spread the results directly into the array\n\t\t}\n\t});\n\n\treturn expandedNodes;\n};\n\n/**\n * @function validateElement\n *\n * @description Validates the element passed exists in the component registry\n *\n * @param {HTMLElement} element Element to check\n *\n * @returns {Boolean} Whether the element is valid or not\n */\nconst validateElement = (element) =>\n\telement !== null && element.nowId && getComponentFromRegistry(element.nowId);\n\n/**\n * @function shadowQuerySelector\n *\n * @description Finds and returns the first element across shadow roots\n * that matches the selector\n * @param  {String} selector selector\n * @param  {Node} root root node\n * @return {Node} returns the first node that matches the selector\n */\nexport const shadowQuerySelector = (selector, root = document) => {\n\tif (!selector) return [];\n\t// adding component-id to the selector so it finds elements with shadowroots\n\n\tif (root.shadowRoot) root = root.shadowRoot;\n\tconst singleNode = root.querySelector(selector);\n\tif (singleNode) {\n\t\treturn singleNode;\n\t}\n\tconst shadowRootNodes = root.querySelectorAll('[component-id]');\n\n\tlet result;\n\tshadowRootNodes.forEach((node) => {\n\t\tif (!result) {\n\t\t\t// add all matching child elements recursively\n\t\t\tresult = shadowQuerySelector(selector, node);\n\t\t}\n\t});\n\treturn result;\n};\n/**\n * @function queryDeepBySelector\n *\n * @description Queries nested shadow root elements for a given selector under the root element param (parent element). Returns the first element found within the DOM\n *\n * @param {String} selector - The CSS selector used to query for elements\n * @param {Element|Document|ShadowRoot} parentElement - Parent Element to start querying under. The root Document is used by default\n *\n * @returns {Element} - First matching element\n */\nconst queryDeepBySelector = (selector, parentElement = document.body) => {\n\t// Search for matching elements in the current root\n\tconst element = parentElement.querySelector(selector);\n\n\tif (element) {\n\t\treturn element;\n\t}\n\n\tconst nestedElements = Array.from(parentElement.querySelectorAll('*'));\n\n\tif (parentElement?.shadowRoot && nestedElements.length === 0) {\n\t\tconst element = queryDeepBySelector(selector, parentElement.shadowRoot);\n\t\tif (element) {\n\t\t\treturn element;\n\t\t}\n\t}\n\n\tfor (const nestedElement of nestedElements) {\n\t\tconst {shadowRoot} = nestedElement;\n\n\t\tif (shadowRoot) {\n\t\t\tconst element = queryDeepBySelector(selector, shadowRoot);\n\t\t\t// When traversing the dom from the document body its possible we encounter elements that match our selector\n\t\t\t// but are not applicable components for an action, they are not visible.\n\t\t\tif (element && checkVisibility(element)) {\n\t\t\t\treturn element;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn element;\n};\n\n/**\n * @function getActiveExperience\n *\n * @description Gets the currently active sn-canvas-experience-shell element on the page\n *\n * @returns {Element} - The active experience element\n */\nexport const getActiveExperience = () => {\n\tconst appShellLayout = queryDeepBySelector('sn-canvas-appshell-layout');\n\tconst experiences = shadowQuerySelectorAll('sn-canvas-experience-shell');\n\n\t// If there is only one then we can safely assume this is the currently active experience\n\tif (experiences.length === 1) {\n\t\treturn experiences.pop();\n\t}\n\n\t// There's a bug with sn-canvas-experience-shell where both experienceData.isActive props are false\n\t// when one is currently active. The appShellLayout is the central source of truth so we need to grab the key\n\t// to get the active experience\n\tconst activeExperience = (() => {\n\t\tif (!appShellLayout) return '';\n\t\tfor (const [key, value] of appShellLayout.experiencesData.entries()) {\n\t\t\tif (value.isActive === true) return key;\n\t\t}\n\t})();\n\n\t// Match against the active experience in appshell-layout\n\treturn experiences.find(\n\t\t(experience) =>\n\t\t\texperience.experienceData.experiencePath === activeExperience\n\t);\n};\n\n// TODO - There's an intermittent bug where all shortcuts will show up regardless of the active screen. Thinking it's due to some bug within UXR not seeing isActive in all cases\n/**\n * @function getActiveScreen\n *\n * @description Gets the currently active sn-canvas-screen element on the page\n *\n * @returns {Element} - The active screen element\n */\nexport const getActiveScreen = () => {\n\tconst activeExperience = getActiveExperience();\n\tconst screens = shadowQuerySelectorAll('sn-canvas-screen', activeExperience);\n\tconst activeScreen = screens.find((screen) => screen.screenData.isActive);\n\n\treturn activeScreen;\n};\n\n/**\n * @function findNearestParentElement\n *\n * @description Finds the nearest parent element with the given tag name\n *\n * @param {Element} element Current element to query against\n * @param {String} tagName Element tag name to search for\n * @param {Boolean} shouldValidateElement - Whether to validate the element or not\n *\n * @returns {Element} - The nearest parent element with the given tag name\n */\nexport const findNearestParentElement = (\n\telement,\n\ttagName,\n\tshouldValidateElement = true\n) => {\n\tif (!element || !tagName || element.tagName === 'BODY') {\n\t\treturn null;\n\t}\n\n\tif (\n\t\telement.tagName.toLowerCase() === tagName &&\n\t\t(!shouldValidateElement || validateElement(element))\n\t) {\n\t\treturn element;\n\t}\n\n\t// find closest parent\n\tconst ancestor = element.closest(tagName);\n\tif (ancestor && (!shouldValidateElement || validateElement(ancestor))) {\n\t\treturn ancestor;\n\t}\n\n\tif (element.getRootNode?.().host) {\n\t\t// Check if the element is within a shadow root\n\t\tconst shadowRoot = element.getRootNode().host;\n\t\tconst closest = shadowRoot.closest(tagName);\n\t\tif (closest && (!shouldValidateElement || validateElement(closest))) {\n\t\t\treturn closest;\n\t\t}\n\t\treturn findNearestParentElement(shadowRoot, tagName, shouldValidateElement);\n\t}\n\n\t/**\n\t * traverse up the dom tree - in theory, we should never hit this condition\n\t * because all seismic components are in a shadow root - at some point\n\t * we're going to find the parent by looking at the shadow root\n\t */\n\treturn findNearestParentElement(\n\t\telement.parentElement,\n\t\ttagName,\n\t\tshouldValidateElement\n\t);\n};\n\n/**\n * @function isChildOfRootElement\n *\n * @description Checks if the childElement is a child of the rootElement\n *\n * @param {HTMLElement} rootElement - Root element to check if childElement is a child of\n * @param {HTMLElement} childElement - Child element to check if it is a child of rootElement\n * @returns {Boolean} - Whether the childElement is a child of rootElement\n */\nexport const isChildOfRootElement = (rootElement, childElement) => {\n\tfunction isChildOf(parent, child) {\n\t\tif (parent.contains(child)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (parent.shadowRoot) {\n\t\t\tconst {shadowRoot} = parent;\n\n\t\t\tif (isChildOf(shadowRoot, child)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tconst {childNodes} = parent;\n\t\tfor (const node of childNodes) {\n\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\tif (isChildOf(node, child)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\treturn isChildOf(rootElement, childElement);\n};\n\n/**\n * @function getRootElement\n *\n * @description Gets the root element component to start querying from; Modal, Document or Active Screen\n *\n * @param {String} componentTagName - Component tag name to query for in the DOM\n *\n * @returns {HTMLElement} - Root element to start querying from\n */\nconst getRootElement = (componentTagName) => {\n\tif (ContextManager.isModalOpen) {\n\t\t// Modal was opened, need to query from sn-canvas-modal-hoist\n\t\t// TODO - May need to rethink this strategy when Polaris App Shell implements their shortcut directory modal as this will need to render on top of current modal\n\t\treturn queryDeepBySelector(APP_SHELL_MODAL_HOIST);\n\t}\n\n\t// Need to query from the active screen for all components except for the app shell components\n\treturn APP_SHELL_COMPONENTS.includes(componentTagName)\n\t\t? document.body\n\t\t: getActiveScreen();\n};\n\n/**\n * @function findFirstChildElement\n *\n * @description Queries for the first element in the DOM matching the component tag name\n *\n * @param {String} componentTagName - Component tag to query for in the DOM\n * @param {HTMLElement} rootElement - Root element to query for the target component\n * @param {Boolean} shouldValidateElement - Whether to validate the element or not\n *\n * @returns {HTMLElement} - Root element to query for the target component\n */\nexport const findFirstChildElement = (\n\tcomponentTagName,\n\trootElement = getRootElement(componentTagName),\n\tshouldValidateElement = true\n) => {\n\tconst element = queryDeepBySelector(componentTagName, rootElement);\n\n\tif (element && (!shouldValidateElement || validateElement(element))) {\n\t\treturn element;\n\t}\n\n\treturn findFirstChildElement(\n\t\tcomponentTagName,\n\t\telement || rootElement,\n\t\tshouldValidateElement\n\t);\n};\n\n/**\n * @function getActiveElement\n *\n * @description Iterates through the Shadow DOM and gets the activeElement\n *\n * @param {Document|ShadowRoot} root\n *\n * @returns {Element} active element in the DOM\n */\nexport const getActiveElement = (root = document) => {\n\tconst activeEl = root.activeElement;\n\n\tif (!activeEl) {\n\t\treturn null;\n\t}\n\n\tif (activeEl.shadowRoot) {\n\t\treturn getActiveElement(activeEl.shadowRoot);\n\t}\n\treturn activeEl;\n};\n\n/**\n * @function getTargetElement\n *\n * @description Gets the target element to execute the appropriate action\n *\n * @param {String} componentTagName - Component tag name to query for in the DOM\n *\n * @returns {HTMLElement}\n */\nexport const getTargetElement = (componentTagName) => {\n\tconst activeElement = getActiveElement();\n\n\tconst element =\n\t\tactiveElement === document.body\n\t\t\t? null\n\t\t\t: findNearestParentElement(activeElement, componentTagName);\n\n\tif (element) {\n\t\treturn element;\n\t}\n\n\treturn findFirstChildElement(componentTagName);\n};\n","import {findNearestParentElement} from './helpers/querySelectors';\nimport {set} from '@devsnc/snowdash';\nimport {shortcutLogger as console} from './helpers/getLogger';\n\nconst ComponentRegistrySingleton = (function () {\n\treturn {\n\t\tgetInstance() {\n\t\t\tif (!window?.uxfTriggerLibrary?.componentRegistry) {\n\t\t\t\tset(window, ['uxfTriggerLibrary', 'componentRegistry'], new Map());\n\t\t\t}\n\t\t\treturn window.uxfTriggerLibrary.componentRegistry;\n\t\t}\n\t};\n})();\n\nexport const ComponentRegistry = ComponentRegistrySingleton.getInstance();\n\nexport const transformAction = (action) => ({\n\tactive: action.active !== undefined ? action.active : true,\n\taction: typeof action === 'function' ? action : action.action\n});\n\n/**\n * @function transformActionMap\n *\n * @description - Transforms an action map to the new format with active status\n *\n * @param {Object} actionMap - An object of action handlers defining reactions to user keyboard input\n *\n * @returns {Object} - New action map format\n */\nexport const transformActionMap = (actionMap) => {\n\tconst transformedActionMap = {};\n\n\tObject.entries(actionMap).forEach(([actionKey, action]) => {\n\t\ttransformedActionMap[actionKey] = transformAction(action);\n\t});\n\n\treturn transformedActionMap;\n};\n\n/**\n * @function mergeActionMaps\n * @description takes two actionmaps belonging to a single component being\n * registered through registerComponent and merges it into a single actionMap.\n * @param {Object} originalActionMap\n * @param {Object} registryValueActionMap\n * @returns A single object of both maps.\n */\nconst mergeActionMaps = (originalActionMap, registryValueActionMap) => {\n\tconst mergedMap = {...originalActionMap};\n\tfor (const actionKey in registryValueActionMap) {\n\t\tif (!mergedMap[actionKey]) {\n\t\t\tmergedMap[actionKey] = registryValueActionMap[actionKey];\n\t\t}\n\t}\n\treturn mergedMap;\n};\n\n/**\n * @function setComponentInRegistry\n * @description If component has already been registered, merge their action maps, otherwise set component\n * into registry as normal.\n * @param {String} nowId\n * @param {ComponentRegistryMetadata} registryValue\n */\nconst setComponentInRegistry = (nowId, registryValue) => {\n\tconst registeredComponent = ComponentRegistry.get(nowId.toUpperCase());\n\tif (registeredComponent) {\n\t\t// Already registered.\n\t\tregistryValue.actionMap = mergeActionMaps(\n\t\t\tregisteredComponent.actionMap,\n\t\t\tregistryValue.actionMap\n\t\t);\n\t}\n\n\tComponentRegistry.set(nowId.toUpperCase(), registryValue);\n\n\tconsole.log(\n\t\t`Registered component ${registryValue.registeredElement.tagName} - ${nowId}:`,\n\t\tregistryValue\n\t);\n};\n\n/**\n * @function registerComponent\n *\n * @description - Registers a component in the keyboard shortcut component registry\n *\n * @example\n *\n * let registeredId = \"\";\n *\n * actionHandlers: {\n * [actionTypes.COMPONENT_BOOTSTRAPPED]({host, dispatch, updateState, properties}) {\n * \tregisteredId = registerComponent(host, {\n * \t\tparentComponentTagName: 'now-record-common-uiactionbar',\n * \t\tupdateState,\n * \t\tactionMap: {\n * \t\t\t['TRIGGER_SOMETHING']({payload, properties, state}) {\n * \t\t\t\tconst {someStateValue} = state;\n * \t\t\t\tconst {someProp} = properties;\n * \t\t\t\tdispatch('MY_ACTION', {someProp, someStateValue});\n * \t\t\t},\n * \t\t},\n * \t});\n * }\n * @param {HTMLElement} host - host element\n * @param {Object} metadata - object containing keyboard action metadata\n * @param {String} metadata.parentComponentTagName - parent component of an \"internal component\". Parent Component must have an associated sys_ux_macroponent record. This is required when the host.tagName does not have an associated sys_ux_macroponent record\n * @param {Function} metadata.updateState - updateState function from Seismic actionHandler\n * @param {Object} metadata.actionMap - an object of action handlers defining reactions to user keyboard input\n *\n * @returns {String} nowId of registered component. Only needed when updating available actions\n */\nexport const registerComponent = (host, metadata) => {\n\tif (!host) {\n\t\tconsole.warn(\n\t\t\t'Failed to register component for shortcuts. Host element null or undefined.'\n\t\t);\n\t\treturn;\n\t}\n\n\tif (!metadata?.actionMap || !metadata?.updateState) {\n\t\tconsole.warn(\n\t\t\t'Failed to register component for shortcuts. Second param must contain both actionMap and updateState!',\n\t\t\thost\n\t\t);\n\t\treturn;\n\t}\n\n\tconst {parentComponentTagName, actionMap, updateState} = metadata;\n\n\t// Resolving the correct nowId attribute:\n\t// When parentComponentTagName is not present, it is assumed the host element is a component that has an associated sys_ux_macroponent element\n\t// When parentComponentTagName is present, it means an \"internal component\" is being registered (i.e. no sys_ux_macroponent) and we need to grab the parent component tag's nowId\n\tconst registeredElement = parentComponentTagName\n\t\t? findNearestParentElement(host, parentComponentTagName, false)\n\t\t: host;\n\tconst {nowId} = registeredElement;\n\tconst registryValue = {\n\t\tregisteredElement,\n\t\thost,\n\t\tupdateState,\n\t\tactionMap: transformActionMap(actionMap)\n\t};\n\n\tsetComponentInRegistry(nowId, registryValue);\n\n\treturn nowId;\n};\n\n/**\n * @function deregisterComponent\n *\n * @description - Deregisters a component from the keyboard shortcut component registry\n *\n * @param {String} nowId - The id returned from registerComponent()\n */\nexport const deregisterComponent = (nowId) => {\n\tif (!nowId) {\n\t\tconsole.warn(\n\t\t\t'Failed to deregister component from registry. nowId must be provided.'\n\t\t);\n\t\treturn;\n\t}\n\n\tComponentRegistry.delete(nowId.toUpperCase());\n\tconsole.log(`Deregistered component ${nowId}`);\n};\n\n/**\n * @function getComponentFromRegistry\n *\n * @description - Gets a component from the registry matching the passed nowId\n *\n * @param {String} nowId - The seismic nowId attribute of the component\n *\n * @returns {ComponentRegistryMetadata}\n */\nexport const getComponentFromRegistry = (nowId) =>\n\tComponentRegistry.get(nowId.toUpperCase());\n\n/**\n * @function getAllComponentsFromRegistry\n *\n * @description - Gets all values from the component registry\n *\n * @returns {Array<ComponentRegistryMetadata>}\n */\nexport const getAllComponentsFromRegistry = () =>\n\tArray.from(ComponentRegistry.values());\n","/**\n * @typedef {Object} ShortcutsState\n * @property {Boolean} active - Whether or not UX Keyboard Shortcuts are active and handle keyboard events.\n * @property {Boolean} initialized - Whether shortcuts initialized (loaded and registered OOB and Overriden shortcuts).\n */\n\n/**\n * Parameters that are allowed to be set in the shortcuts state.\n * @typedef {Object} SetShortcutsStateParams\n * @property {Boolean} active - Whether or not UX Keyboard Shortcuts are active and handle keyboard events.\n */\n\n/**\n * UX Keyboard Shortcut Active state.\n * When set to false, prevents keyboard events to be handled by shortcut engine.\n * @type {ShortcutsState}\n */\nconst shortcutState = {\n\tactive: true,\n\tinitialized: false\n};\n\n/**\n * @returns {ShortcutsState} - Whether or not UX Keyboard Shortcuts are active.\n */\nexport const getShortcutsState = () => ({...shortcutState});\n\n/**\n * Applies allowed UX Keyboard Shortcuts state parameters.\n * @param {SetShortcutsStateParams} newStateParams - New state parameters to apply.\n */\nexport const setShortcutsState = (newStateParams = {}) => {\n\tif (Object.hasOwn(newStateParams, 'active')) {\n\t\tif (typeof newStateParams.active !== 'boolean') {\n\t\t\tthrow new Error('Invalid parameter type. \"active\" must be a boolean.');\n\t\t}\n\t\tshortcutState.active = newStateParams.active;\n\t}\n};\n\n/**\n * Array of objects with Promise resolvers that resolve once shortcuts initialized.\n * @type {Array<Object>}\n */\nconst initializedPromiseResolvers = [];\n\n/**\n * Internal function to register initialized state and notify {@link onShortcutInitialize} listeners\n * @param {Boolean} initialized - Whether shortcuts are initialized.\n */\nexport const setInitialized = (initialized) => {\n\tshortcutState.initialized = initialized;\n\tif (!shortcutState.initialized) {\n\t\treturn;\n\t}\n\tfor (const promiseResolver of initializedPromiseResolvers) {\n\t\tpromiseResolver.resolve();\n\t}\n\t// Clear the array of resolved promises.\n\tinitializedPromiseResolvers.splice(0, initializedPromiseResolvers.length);\n};\n\n/**\n * Returns a Promise that resolves once shortcuts are initialized.\n * Note: The returned Promise does not reject. Any failures during shortcuts initialization fallback\n * gracefully.\n * @returns {Promise<void>}\n */\nexport const onShortcutsInitialized = () => {\n\tif (shortcutState.initialized) {\n\t\treturn Promise.resolve();\n\t}\n\treturn new Promise((resolve) => {\n\t\tinitializedPromiseResolvers.push({resolve});\n\t});\n};\n","import {getAllComponentsFromRegistry} from './componentRegistry';\nimport {\n\tACTION_BAR,\n\tcheckVisibility,\n\tisChildOfRootElement,\n\tSN_POLARIS_LAYOUT\n} from './helpers';\nimport {isNil} from '@devsnc/snowdash';\nimport {ContextManager} from './contextManager';\n\n/**\n * @function filterActiveComponents\n *\n * @description - Filters out components that are not visible or have no active actions.\n * If Modal is opened, it will only include shortcuts that are applicable to components in the modal.\n * Also if modal is opened, it will always return polaris-app-shell and will later only include the shortcut directory modal shortcut\n *\n * @param {HTMLElement} component - The component to filter\n *\n * @returns {Boolean} - Whether or not the component is visible with active actions\n */\nexport const filterActiveComponents = (component) => {\n\t// We always need to allow polaris-app-shell if the modal is opened (for shortcut directory modal), but will filter out the non-shortcut modal shortcuts in the getApplicableComponents method\n\tconst modalCase =\n\t\t!ContextManager.isModalOpen ||\n\t\t(ContextManager.isModalOpen &&\n\t\t\t(isChildOfRootElement(\n\t\t\t\tContextManager.modalContext,\n\t\t\t\tcomponent.registeredElement\n\t\t\t) ||\n\t\t\t\tcomponent.registeredElement.tagName === SN_POLARIS_LAYOUT));\n\n\treturn (\n\t\tcheckVisibility(component.registeredElement) &&\n\t\tObject.values(component.actionMap).some((action) => action.active) &&\n\t\tmodalCase\n\t);\n};\n\n/**\n * @class ApplicableComponentAdapter\n *\n * @classdesc Adapter used to link applicable components from the component registry to keyboard shortcuts\n */\nexport class ApplicableComponentAdapter {\n\tconstructor() {\n\t\tthis._setActiveComponents();\n\t}\n\n\t/**\n\t * @function _setActiveComponents\n\t *\n\t * @description - Internal use only! Sets the active components for the current page\n\t */\n\t_setActiveComponents() {\n\t\tthis.activeComponents = getAllComponentsFromRegistry().filter(\n\t\t\tfilterActiveComponents\n\t\t);\n\t}\n\n\t/**\n\t * @function getActiveComponents\n\t *\n\t * @description Gets all registered components relevant to the current page that have active actions\n\t *\n\t * @returns {Array<ComponentRegistryMetadata>} - Array of components which have active actions and match the currently active page\n\t */\n\tgetActiveComponents() {\n\t\treturn this.activeComponents;\n\t}\n\n\t/**\n\t * @function getApplicableElements\n\t *\n\t * @description Gets all component instances that are applicable to a specific shortcut\n\t *\n\t * @param {String} componentTagName - The tag name of the component to get applicable elements for\n\t * @param {String} actionKey - The action key to filter against\n\t * @param {Object} actionPayload - The action payload to filter against when componentTagName is ACTION_BAR\n\t *\n\t * @returns {Array<ComponentRegistryMetadata>} - Array of applicable components\n\t *\n\t */\n\tgetApplicableComponents(componentTagName, actionKey, actionPayload) {\n\t\treturn this.activeComponents\n\t\t\t.filter(\n\t\t\t\t(component) =>\n\t\t\t\t\tcomponent.registeredElement.tagName === componentTagName.toUpperCase()\n\t\t\t)\n\t\t\t.filter((component) => {\n\t\t\t\tconst {actionMap} = component;\n\n\t\t\t\treturn (\n\t\t\t\t\tObject.keys(actionMap).includes(actionKey) &&\n\t\t\t\t\tactionMap[actionKey].active\n\t\t\t\t);\n\t\t\t})\n\t\t\t.filter((component) => {\n\t\t\t\tconst {registeredElement} = component;\n\t\t\t\tconst {tagName} = registeredElement;\n\n\t\t\t\treturn (\n\t\t\t\t\ttagName !== ACTION_BAR ||\n\t\t\t\t\tisNil(actionPayload?.actionName) ||\n\t\t\t\t\tcomponent.availableActions.includes(actionPayload.actionName)\n\t\t\t\t);\n\t\t\t});\n\t}\n}\n","/**\n * Checks if value is null or undefined\n * @param input - input parameter\n * @returns {boolean} value true if the input is null or undefined, else returns false.\n */\nexport default function isNil(input) {\n\treturn input == null;\n}\n","/**\n * @class ActionStateQueue\n * @description Array based queue representing the action states that\n * are dependent on shortcut registry\n */\nexport class ActionStateQueue extends Array {\n\tstatic __queue = null;\n\n\t/**\n\t * @function enqueue\n\t * @description Adds an action state to the action state queue\n\t * @param {obj} element - action state to be added to the queue\n\t */\n\tenqueue(element) {\n\t\tActionStateQueue.__queue.push(element);\n\t}\n\n\t/**\n\t * @function dequeue\n\t * @description Removes and returns the next action state in the queue\n\t * @returns the removed action state\n\t */\n\tdequeue() {\n\t\treturn ActionStateQueue.__queue.length > 0\n\t\t\t? ActionStateQueue.__queue.shift()\n\t\t\t: null;\n\t}\n}\n\n/**\n * @function actionStateQueue\n * @description accessor that fufills the singleton for the ActionStateQueue.\n * Provides access to the actionStateQueue methods.\n */\nexport const actionStateQueue = (() => {\n\tif (!ActionStateQueue.__queue) {\n\t\tActionStateQueue.__queue = new ActionStateQueue();\n\t}\n\treturn ActionStateQueue.__queue;\n})();\n\nexport default actionStateQueue;\n","import {\n\tgetActiveElement,\n\tshadowQuerySelectorAll,\n\tshortcutLogger as console,\n\tcheckVisibility\n} from './helpers';\n\nimport {landmarkConstants} from './helpers/constants';\n\nconst {\n\tLANDMARK_FOCUS_FORWARD,\n\tLANDMARK_FOCUS_BACKWARD,\n\tLANDMARK_FOCUS_ATTR,\n\tLANDMARK_ACTIVE_ELEMENT_ATTR,\n\tLANDMARK_SELECTOR\n} = landmarkConstants;\n\nlet previousLandmark = null;\n\nexport const isLandmarkAction = (actionKey) =>\n\tactionKey === LANDMARK_FOCUS_FORWARD || actionKey === LANDMARK_FOCUS_BACKWARD;\n\nexport const landmarkAction = (actionKey) => {\n\tconst focusIncrement = actionKey === LANDMARK_FOCUS_FORWARD ? 1 : -1;\n\tconst currentActiveElement = getActiveElement();\n\n\tlet processedActiveElement;\n\tif (currentActiveElement.tagName === 'BODY') {\n\t\t// if the body is the current active element it means nothing has focus\n\t\t// or the user clicked a non-focusable part of the page\n\t\tif (window?.uxfTriggerLibrary?.lastClickedElement) {\n\t\t\t// there is a last clicked element, use that\n\t\t\t// note: there is a chance that the user clicks somewhere unfocusable,\n\t\t\t// then tabs to a focusable item, then that focus gets blurred somehow\n\t\t\t// which will cause the body to be the active element but won't reset\n\t\t\t// the last clicked element. This will likely be very rare, and not\n\t\t\t// a big deal even when it does happen but maybe if it gets complained\n\t\t\t// about we could address it somehow.\n\t\t\tprocessedActiveElement = window.uxfTriggerLibrary.lastClickedElement;\n\t\t} else {\n\t\t\t// if the body is the active element and there isn't a last-clicked element\n\t\t\t// then we'll use the body directly\n\t\t\tprocessedActiveElement = currentActiveElement;\n\t\t}\n\t} else {\n\t\t// the active element is not the body, so we'll just grab its host\n\t\tprocessedActiveElement = currentActiveElement.getRootNode().host;\n\t}\n\n\t// add this attribute to allow the active element to be included in the\n\t// array of landmarks in its relative position in the DOM\n\tprocessedActiveElement.setAttribute(LANDMARK_ACTIVE_ELEMENT_ATTR, true);\n\t// get all landmark enabled components and the active element\n\tconst landmarks = shadowQuerySelectorAll(LANDMARK_SELECTOR);\n\t// remove the active element attr since it's no longer needed\n\tprocessedActiveElement.removeAttribute(LANDMARK_ACTIVE_ELEMENT_ATTR);\n\tif (landmarks.length === 0) {\n\t\t//this won't happen because there'll always at least be the activeElement\n\t\tconsole.log(\n\t\t\t`[UXF Shortcuts] - Landmark shortcut triggered but there are no landmark elements on the page.`\n\t\t);\n\t\treturn;\n\t}\n\n\tif (landmarks.length === 1) {\n\t\tif (landmarks[0].getAttribute(LANDMARK_FOCUS_ATTR) === 'true') {\n\t\t\tconsole.log(`[UXF Shortcuts] - Focus is already on the only landmark.`);\n\t\t} else {\n\t\t\tconsole.log(\n\t\t\t\t`[UXF Shortcuts] - Landmark shortcut triggered but there are no landmark elements on the page.`\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\n\tconst landmarkIndex = landmarks.indexOf(processedActiveElement);\n\tlet incrementedIndex =\n\t\t(landmarkIndex + landmarks.length + focusIncrement) % landmarks.length;\n\n\twhile (\n\t\tlandmarks[incrementedIndex].getAttribute('component-id') ===\n\t\t\tpreviousLandmark ||\n\t\t(!checkVisibility(landmarks[incrementedIndex]) &&\n\t\t\tincrementedIndex !== landmarkIndex)\n\t) {\n\t\tincrementedIndex =\n\t\t\t(incrementedIndex + landmarks.length + focusIncrement) % landmarks.length;\n\t}\n\tpreviousLandmark = landmarks[incrementedIndex].getAttribute('component-id');\n\tlandmarks[incrementedIndex]?.focus();\n\treturn;\n};\n\n/**\n * @funciton handleLastClicked\n *\n * @description Handles the last clicked element. This is used for landmark focusing shortcuts\n *\n * @param {PointerEvent} e\n */\nexport const handleLastClicked = (e) => {\n\tconst composedPath = e.composedPath();\n\tif (!window.uxfTriggerLibrary) {\n\t\twindow.uxfTriggerLibrary = {lastClickedElement: undefined};\n\t}\n\n\twindow.uxfTriggerLibrary.lastClickedElement = composedPath[0];\n};\n\n/**\n * @function hasLandmarksOnPage\n *\n * @description Checks if there are landmarks on the page\n *\n * @returns {Boolean} - Whether or not there are landmarks on the page\n */\nexport const hasLandmarksOnPage = () => {\n\tconst landmarks = shadowQuerySelectorAll(`[${LANDMARK_FOCUS_ATTR}]`);\n\n\tfor (const landmark of landmarks) {\n\t\t// At least one visible landmark on the page.\n\t\tif (checkVisibility(landmark)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import {\n\ttransformShortcutKeys,\n\tprettifyMacShortcut,\n\tprettifyWindowsShortcut,\n\tisMac,\n\tshortcutLogger as console,\n\tSHORTCUT_DIRECTORY_MODAL_ACTION,\n\tSN_POLARIS_LAYOUT\n} from './helpers';\nimport {ApplicableComponentAdapter} from './ApplicableComponentAdapter';\nimport {setQueuedActionStates} from './shortcutActionManager';\nimport {hasLandmarksOnPage, isLandmarkAction} from './landmarkEngine';\nimport {ContextManager} from './contextManager';\n\n/**\n * OOB shortcuts (no overrides)\n * @type {Map<String, RuntimeShortcut>}\n */\nexport const ShortcutRegistry = new Map();\n\nexport const getAllOOBShortcuts = () => ShortcutRegistry;\n\n/**\n * Stores all user keyboard shortcut: both OOB and overriden.\n * Map key is a shortcut sysId.\n * @type {Map<String, RuntimeShortcut>}\n */\nexport const IntersectedShortcutRegistry = new Map();\n\n/**\n * @function getAllShortcuts\n *\n * @description Returns an array of all registered keyboard shortcuts, including user overriden\n * shortcuts.\n *\n * @example\n * const shortcuts = getAllShortcuts();\n *\n * @returns {Array<RuntimeShortcut>} shortcuts - An array of keyboard shortcut objects\n */\nconst getAllShortcuts = () => Array.from(IntersectedShortcutRegistry.values());\n\n/**\n * @function getShortcutByKey\n * @param {String} key - The sysId of the shortcut to retrieve\n * @returns {RuntimeShortcut} shortcut - The shortcut matching the given key\n */\nexport const getShortcutByKey = (key) => IntersectedShortcutRegistry.get(key);\n\n/**\n * @function getAllShortcutsByActionKey\n * @param {String} componentTagName\n * @param {String} actionKey\n * @returns array of shortcuts with the action key associated to the component tag name\n */\nexport const getAllShortcutsByActionKey = (componentTagName, actionKey) =>\n\tgetAllShortcuts().filter(\n\t\t(shortcut) =>\n\t\t\tshortcut.componentTagName == componentTagName &&\n\t\t\tshortcut.actionKey == actionKey\n\t);\n\n/**\n * @function getShortcutByPayloadCondition\n * @param {String} componentTagName\n * @param {String} actionKey\n * @param {Object} payloadCondition\n * @returns shortcut that has the matching payload\n */\nexport const getShortcutByPayloadCondition = (\n\tcomponentTagName,\n\tactionKey,\n\tpayloadCondition\n) =>\n\tgetAllShortcutsByActionKey(componentTagName, actionKey).filter((shortcut) =>\n\t\tObject.entries(payloadCondition).every(\n\t\t\t([key, value]) => shortcut.actionPayload[key] === value\n\t\t)\n\t);\n\n/**\n * @function hasRegisteredShortcuts\n * @returns {Boolean} whether the shortcuts have been registered or not\n */\nexport const hasRegisteredShortcuts = () => ShortcutRegistry.size > 0;\n\n/**\n * @function registerShortcuts\n *\n * @description Registers the fetched OOB shortcuts in the ShortcutRegistry map.\n *\n * @param {Array<ShortcutMetadata>} shortcuts\n */\nexport const registerShortcuts = (shortcuts) => {\n\tshortcuts.forEach((shortcutMetadata) => {\n\t\tconst {\n\t\t\tsysId,\n\t\t\tdefinitionSysId,\n\t\t\tname,\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\tcategory,\n\t\t\tcategoryValue,\n\t\t\torder,\n\t\t\treadonly,\n\t\t\tactionPayload,\n\t\t\tcomponentTag,\n\t\t\tactionKey,\n\t\t\tshortcut\n\t\t} = shortcutMetadata;\n\n\t\tconst {mac, windows} = shortcut;\n\n\t\tShortcutRegistry.set(definitionSysId, {\n\t\t\tname,\n\t\t\tlabel,\n\t\t\tshortcutSysId: sysId,\n\t\t\tdescription,\n\t\t\tcategory,\n\t\t\tcategoryValue,\n\t\t\torder,\n\t\t\toverriden: false,\n\t\t\treadonly,\n\t\t\tactionPayload,\n\t\t\tcomponentTagName: componentTag.toUpperCase(),\n\t\t\tactionKey,\n\t\t\tshortcut: transformShortcutKeys(shortcut),\n\t\t\tprettifiedShortcuts: {\n\t\t\t\tmac: prettifyMacShortcut(mac),\n\t\t\t\twindows: prettifyWindowsShortcut(windows)\n\t\t\t}\n\t\t});\n\t});\n\n\tsetQueuedActionStates();\n\n\tconsole.log('Shortcuts registered: ', ShortcutRegistry.entries());\n};\n\n/**\n * @function getContextualizedShortcuts\n *\n * @description Gets all shortcuts that are currently applicable to a given page (i.e. Filters out List shortcuts when on the Record Page, vice versa)\n *\n * @example\n * const shortcuts = getContextualizedShortcuts();\n *\n * @returns {Object[]} shortcuts - an array of keyboard shortcuts that are global or applicable\n * to a specific page\n */\nexport const getContextualizedShortcuts = () => {\n\tconst applicableComponentAdapter = new ApplicableComponentAdapter();\n\n\t// flatten the active components array to only get the registered tag names\n\tconst activeComponentTagNames = applicableComponentAdapter\n\t\t.getActiveComponents()\n\t\t.flatMap((c) => c?.registeredElement?.tagName);\n\n\treturn getAllShortcuts()\n\t\t.filter((shortcut) =>\n\t\t\tactiveComponentTagNames.includes(shortcut.componentTagName)\n\t\t)\n\t\t.filter((shortcut) => {\n\t\t\tconst {componentTagName, actionKey, actionPayload} = shortcut;\n\n\t\t\t// Actions can be dynamically activated & deactivated, components can be added & removed from DOM.\n\t\t\t// We need to always ensure the shortcut's applicableComponents is up to date prior to returning the shortcut\n\t\t\tshortcut.applicableComponents =\n\t\t\t\tapplicableComponentAdapter.getApplicableComponents(\n\t\t\t\t\tcomponentTagName,\n\t\t\t\t\tactionKey,\n\t\t\t\t\tactionPayload\n\t\t\t\t);\n\n\t\t\t// In the case of a modal being opened, we need to force an override to allow the shortcut modal to load.\n\t\t\t// When a modal is opened, the shortcut directory modal has no applicableComponents as polaris-app-shell shortcuts \"should\" be disabled. Only the component shortcuts within a modal are applicable.\n\t\t\tif (\n\t\t\t\tContextManager.isModalOpen &&\n\t\t\t\tcomponentTagName === SN_POLARIS_LAYOUT\n\t\t\t) {\n\t\t\t\treturn actionKey === SHORTCUT_DIRECTORY_MODAL_ACTION;\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t(!ContextManager.isModalOpen &&\n\t\t\t\t\tisLandmarkAction(actionKey) &&\n\t\t\t\t\thasLandmarksOnPage()) ||\n\t\t\t\tshortcut.applicableComponents.some(\n\t\t\t\t\t(component) => component.actionMap[shortcut.actionKey]?.active\n\t\t\t\t)\n\t\t\t);\n\t\t});\n};\n\n/**\n * @function getAllPrettifiedShortcuts\n * @param {Boolean} avoidContextualize - If true, returns all shortcuts regardless of page context\n *\n * @description Gets all \"prettified\" shortcuts matching the current user platform (e.g. \"Cmd + Shift + s\")\n *\n * @returns {Array<{name: String, shortcut: PrettifiedShortcut}>}\n */\nexport const getAllPrettifiedShortcuts = (avoidContextualize = false) => {\n\tconst shortcuts = avoidContextualize\n\t\t? getAllShortcuts()\n\t\t: getContextualizedShortcuts();\n\n\tconst prettifiedShortcuts = shortcuts.map((s) => {\n\t\tconst {prettifiedShortcuts} = s;\n\t\tconst shortcut = isMac()\n\t\t\t? prettifiedShortcuts.mac\n\t\t\t: prettifiedShortcuts.windows;\n\n\t\treturn {\n\t\t\tlabel: s.label,\n\t\t\t// TODO: Remove \"name\" as it's deprecated for UI (\"label\" is provided instead)\n\t\t\tname: s.name,\n\t\t\tdescription: s.description,\n\t\t\tcategory: s.category,\n\t\t\tcategoryValue: s.categoryValue,\n\t\t\toverriden: s.overriden,\n\t\t\treadonly: s.readonly,\n\t\t\tshortcutSysId: s.shortcutSysId,\n\t\t\tshortcut\n\t\t};\n\t});\n\n\treturn avoidContextualize\n\t\t? prettifiedShortcuts\n\t\t: prettifiedShortcuts.filter(\n\t\t\t\t(shortcut, index, self) =>\n\t\t\t\t\t// remove duplicate shortcuts when both now-sidebar & now-uxf-tab-set are on the page\n\t\t\t\t\tindex === self.findIndex((s) => s.shortcut === shortcut.shortcut)\n\t\t  );\n};\n\n/**\n * @description Exported for testing purposes ONLY, not inteded for use in non-test code\n */\nexport const exportOnlyForTesting = {\n\tgetAllShortcuts\n};\n","import {\n\tcreateInteractionId,\n\tdefineMetric,\n\tmark,\n\tgetMetricTypes\n} from '@servicenow/ui-metrics';\nimport {get} from '@devsnc/snowdash';\n\nconst isMetricDefined = (event) => getMetricTypes()[event];\nexport const EVENT_METRIC = 'Keyboard Shortcut Usage';\nexport const USAGE_METRIC_LEVEL = 5;\nexport const METRIC_TYPE = 'usage';\n\nexport const initCustomKeyboardShortcutMetric = () => {\n\tif (!window.nowUiFramework) {\n\t\twindow.nowUiFramework = {};\n\t}\n\n\twindow.nowUiFramework.uxfKeyboardShortcutInteractionId =\n\t\tcreateInteractionId();\n\tdefineMetric(EVENT_METRIC, USAGE_METRIC_LEVEL);\n};\n\nexport const getKeyboardShortcutInteractionId = () =>\n\tget(\n\t\twindow,\n\t\t'nowUiFramework.uxfKeyboardShortcutInteractionId',\n\t\tcreateInteractionId()\n\t);\n\nexport const sysPropPerfEnabled = () =>\n\tget(\n\t\twindow,\n\t\t[\n\t\t\t'ux_globals',\n\t\t\t'libuxf',\n\t\t\t'sysprops',\n\t\t\t'glide.uxf.lib.performance.monitoring.enabled'\n\t\t],\n\t\t'false'\n\t) === 'true';\n\nexport const markKeyboardShortcut = (element, shortcutName) => {\n\t// don't log marks if usage tracking is disabled\n\tif (!sysPropPerfEnabled()) return;\n\n\t// make sure custom metric is defined\n\tif (!isMetricDefined(EVENT_METRIC)) {\n\t\tinitCustomKeyboardShortcutMetric();\n\t}\n\n\tconst interactionId = getKeyboardShortcutInteractionId();\n\tconst timestamp = Date.now();\n\tconst pageId = get(\n\t\twindow,\n\t\t'ux_globals.snCanvasScreen.screenData.macroponentSysId'\n\t);\n\tconst pageName = get(\n\t\twindow,\n\t\t'ux_globals.snCanvasScreen.screenData.defaultTitle'\n\t);\n\tconst componentId = element.nowId;\n\tconst workspaceName = get(\n\t\twindow,\n\t\t'ux_globals.snCanvasScreen.screenData.context.experienceName'\n\t);\n\tconst markOptions = {\n\t\tshortcutName,\n\t\ttimestamp,\n\t\tpageId,\n\t\tpageName,\n\t\tcomponentId,\n\t\tworkspaceName\n\t};\n\tmark(element, interactionId, EVENT_METRIC, markOptions, METRIC_TYPE);\n};\n","import {getComponentFromRegistry} from './componentRegistry';\nimport {getShortcutsState} from './shortcutsState';\nimport {getContextualizedShortcuts} from './shortcutRegistry';\nimport {landmarkAction, isLandmarkAction} from './landmarkEngine';\nimport {\n\tdedupeShortcuts,\n\tgetTargetElement,\n\tisMac,\n\tisWindows,\n\tKEY_PREFIXES,\n\tMODIFIER_KEYS,\n\tSUPPORTED_SPECIAL_CHARACTERS,\n\tshortcutLogger as console\n} from './helpers';\nimport {markKeyboardShortcut} from './trackUsageShortcutHandler';\n\n/**\n * @function triggerAction\n *\n * @description Looks up the component in the registry and executes the function in the actionMap matching the actionKey parameter\n *\n * @example\n *\n * triggerAction('1ta0nrjbs20k-144', 'HANDLE_ACTION', { foo: 'bar' });\n *\n * @param {String} nowId - The nowId of the matching component\n * @param {String} actionKey - The key of the action - sys_ux_keyboard_shortcut_definition.actionKey\n * @param {Object} actionPayload  - The payload to pass to the action - sys_ux_keyboard_shortcut_definition.actionPayload\n */\nexport const triggerAction = (nowId, actionKey, actionPayload) => {\n\tconst component = getComponentFromRegistry(nowId);\n\n\treturn new Promise((resolve, reject) => {\n\t\tif (!component) {\n\t\t\tconst errorMessage = `Component not found in registry for nowId '${nowId}'`;\n\t\t\tconsole.error(errorMessage);\n\t\t\treject(errorMessage);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!component?.actionMap) {\n\t\t\tconst errorMessage = `No actionMap found for '${component?.registeredElement?.tagName?.toLowerCase()}' with nowId '${nowId}'`;\n\t\t\tconsole.error(errorMessage);\n\t\t\treject(errorMessage);\n\t\t\treturn;\n\t\t}\n\n\t\tconst {actionMap, updateState, host} = component;\n\t\tconst actionFn = actionMap[actionKey].action;\n\n\t\t// TODO - We need to account for the use case where there are several component instances on the page that have the same action map, but only one of them have disabled a single action\n\t\t// yet, one of the component instances has disabled a single action.\n\n\t\tif (!actionFn) {\n\t\t\tconst errorMessage = `Action function '${actionKey}' not found for '${component?.registeredElement?.tagName?.toLowerCase()}' with nowId '${nowId}'`;\n\t\t\tconsole.error(errorMessage);\n\t\t\treject(errorMessage);\n\t\t\treturn;\n\t\t}\n\n\t\t// Using updateState to get the latest coeffects for the component\n\t\tupdateState((coeffects) => {\n\t\t\tconst result = actionFn({\n\t\t\t\tpayload: actionPayload,\n\t\t\t\thost,\n\t\t\t\t...coeffects\n\t\t\t});\n\t\t\tconsole.log(\n\t\t\t\t`action '${actionKey}' triggered for ${component?.registeredElement?.tagName?.toLowerCase()} - nowId: ${nowId}`,\n\t\t\t\t{\n\t\t\t\t\tactionPayload,\n\t\t\t\t\thost,\n\t\t\t\t\tcoeffects\n\t\t\t\t}\n\t\t\t);\n\t\t\tresolve(result);\n\t\t});\n\t});\n};\n\n/**\n * @function filterShortcuts\n *\n * @description Checks the current keys being pressed and matches against a shortcut in the registry. If shortcut is found, will return the shortcut metadata\n *\n * @param {KeyboardEvent} e - KeyboardEvent from the keydown event\n *\n * @returns {Array<ShortcutMetadata>}\n */\nconst filterShortcuts = (e) => {\n\tconst {metaKey, altKey, ctrlKey, shiftKey, code} = e;\n\n\tconst contextualizedShortcuts = getContextualizedShortcuts();\n\n\tconsole.log(\n\t\t'Shortcut key combo detected; Attempting to match shortcut against contextualized shortcuts',\n\t\t{\n\t\t\tshortcut: {metaKey, altKey, ctrlKey, shiftKey, code: code.toLowerCase()},\n\t\t\tcontextualizedShortcuts\n\t\t}\n\t);\n\n\treturn contextualizedShortcuts.filter((shortcutMetadata) => {\n\t\tconst {shortcut} = shortcutMetadata;\n\t\tconst {mac, windows} = shortcut;\n\n\t\t// Platform verification was already performed during initializeShortcuts()\n\t\tconst platformShortcut = isMac() ? mac : windows;\n\n\t\treturn (\n\t\t\t!!platformShortcut.altKey === !!altKey &&\n\t\t\t!!platformShortcut.ctrlKey === !!ctrlKey &&\n\t\t\t!!platformShortcut.shiftKey === !!shiftKey &&\n\t\t\t!!platformShortcut.metaKey === !!metaKey &&\n\t\t\tplatformShortcut.code === code.toLowerCase()\n\t\t);\n\t});\n};\n\n/**\n * @function isModifierKeyPressedWithKey\n *\n * @description - Used for early exit of keydown event - Checks if at least one modifier key and one other non-modifier key is pressed at the same time.\n *\n * @param {KeyboardEvent} event\n * @param {Boolean} forPlatform - Optional parameter to account for platform when determining allowed modifiers\n * @returns {Boolean}\n */\nexport const isModifierKeyPressedWithKey = (event, forPlatform = false) => {\n\t// Check if any modifier key is pressed\n\tconst isModifierKeyPressed = Object.values(MODIFIER_KEYS).some((key) => {\n\t\tif (forPlatform) {\n\t\t\t// Control key on Mac and Meta key on Windows are not supported modifier keys\n\t\t\tif (\n\t\t\t\t(isMac() && key === MODIFIER_KEYS.CONTROL) ||\n\t\t\t\t(isWindows() && key === MODIFIER_KEYS.META)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn event.getModifierState(key);\n\t});\n\tif (!isModifierKeyPressed) {\n\t\treturn false;\n\t}\n\n\t// Check if the key is alphanumeric or a special character\n\tconst isAlphanumericKey = Object.values(KEY_PREFIXES).some((prefix) =>\n\t\tevent.code.startsWith(prefix)\n\t);\n\n\t// Check if any supported special character keys are pressed\n\tconst isSpecialCharacterKey = Object.values(\n\t\tSUPPORTED_SPECIAL_CHARACTERS\n\t).includes(event.code);\n\n\treturn isAlphanumericKey || isSpecialCharacterKey;\n};\n\n/**\n * @function getResolvedShortcut\n *\n * @description - Validates duplicate shortcuts on the page and returns the resolved shortcut\n *\n * @param {Array} shortcuts - Shortcuts to validate\n *\n * @returns {ShortcutMetadata} - Resolved shortcut\n */\nconst getResolvedShortcut = (shortcuts) => {\n\tif (!shortcuts || !shortcuts.length) {\n\t\treturn;\n\t}\n\n\tif (shortcuts.length > 2) {\n\t\tconsole.warn('Duplicate shortcuts detected for the same key combination!');\n\t\treturn;\n\t}\n\n\tif (shortcuts.length === 1) {\n\t\tconst {\n\t\t\tcomponentTagName,\n\t\t\tactionKey,\n\t\t\tactionPayload,\n\t\t\tname,\n\t\t\tapplicableComponents\n\t\t} = shortcuts[0];\n\t\tlet element;\n\n\t\tif (applicableComponents.length === 1) {\n\t\t\t// If there is only one applicable component, use it's registeredElement to avoid DOM querying\n\t\t\telement = applicableComponents[0].registeredElement;\n\t\t} else {\n\t\t\tconsole.log(\n\t\t\t\t`Multiple applicable components found for shortcut. Attempting to resolve by querying DOM by tagName ${componentTagName} using strategy nearest parent or first child`\n\t\t\t);\n\t\t\telement = getTargetElement(componentTagName);\n\t\t}\n\n\t\treturn {\n\t\t\telement,\n\t\t\tactionKey,\n\t\t\tactionPayload,\n\t\t\tname\n\t\t};\n\t}\n\n\t// Should only ever fall into this use case on record pages that have both a now-contextual-sidebar & now-uxf-tab-set component (non-SRP)\n\treturn dedupeShortcuts(shortcuts);\n};\n\n/**\n * @function resolveKeyboardEvent\n *\n * @description - Resolves the keyboard event from a CustomEvent or KeyboardEvent\n *\n * @param {Event} event - CustomEvent or KeyboardEvent\n *\n * @returns {KeyboardEvent|undefined} - KeyboardEvent or undefined if not found\n */\nexport const resolveKeyboardEvent = (event) => {\n\tif (!event) {\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent instanceof CustomEvent &&\n\t\tevent?.detail?.payload?.event instanceof KeyboardEvent\n\t) {\n\t\treturn event.detail.payload.event;\n\t}\n\n\t//else, event instanceof KeyboardEvent\n\treturn event;\n};\n\n/**\n * @function handleShortcutKeyDown\n *\n * @description key down handler attached to window\n *\n * @param {KeyboardEvent} e - Keyboard event\n */\nexport const handleShortcutKeyDown = (e) => {\n\tconst event = resolveKeyboardEvent(e);\n\n\t// Early exit if no modifier key is pressed with a non-modifier key\n\tif (!event || !isModifierKeyPressedWithKey(event)) {\n\t\treturn;\n\t}\n\n\tif (getShortcutsState().active === false) {\n\t\tconsole.log(\n\t\t\t'UX Keyboard shortcuts are inactive.',\n\t\t\t'keyDown event was not handled and will be propagated:',\n\t\t\tevent\n\t\t);\n\t\treturn;\n\t}\n\n\t// Parse key combo into shortcut\n\tconst shortcuts = filterShortcuts(event);\n\n\tif (shortcuts.length === 1 && isLandmarkAction(shortcuts[0].actionKey)) {\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t\treturn landmarkAction(shortcuts[0].actionKey);\n\t}\n\n\t// Ideally, there will only be one shortcut returned from filterShortcuts(). If there is more than one, we need to validate if the shortcut is a known duplicate\n\tconst shortcut = getResolvedShortcut(shortcuts);\n\n\tif (!shortcut) {\n\t\treturn;\n\t}\n\n\tconst {element, actionKey, actionPayload, name} = shortcut;\n\n\tif (!element?.nowId) {\n\t\treturn;\n\t}\n\n\tevent.stopPropagation();\n\tevent.preventDefault(); // Need to prevent default to prevent browser shortcuts from firing or any other shortcuts that may be registered\n\ttriggerAction(element.nowId, actionKey, actionPayload);\n\tmarkKeyboardShortcut(element, name);\n};\n\n/**\n * @description Exported for testing purposes ONLY, not inteded for use in non-test code\n */\nexport const exportOnlyForTesting = {\n\tfilterShortcuts,\n\tgetResolvedShortcut\n};\n","import {isMac} from './helpers/supportedPlatforms.js';\nimport {\n\tgetAllOOBShortcuts,\n\tIntersectedShortcutRegistry\n} from './shortcutRegistry.js';\nimport {\n\tprettifyMacShortcut,\n\tprettifyWindowsShortcut,\n\ttransformShortcutKeys\n} from './helpers/shortcutUtils.js';\nimport {shortcutLogger as console} from './helpers/getLogger';\n\n/**\n * Stores ONLY Keyboard Shortcut Overrides for the current user, data coming from the server.\n * Map key is a shortcut sys_id.\n * @type {Map<String, PlatformShortcuts>}\n */\nconst UserOverrideShortcutsRegistry = new Map();\n\n/**\n * Returns keyboard shortcut overrides registered for current user.\n *\n * @returns {MapIterator<String, PlatformShortcuts>} Key is a shortcut sysId.\n */\nexport const getKeyboardShortcutOverrides = () =>\n\tUserOverrideShortcutsRegistry.entries();\n\nexport const hasShortcutOverrides = () =>\n\tUserOverrideShortcutsRegistry.size > 0;\n\nconst formatAndPrettifyShortcutByPlatform = (shortcutOverride) => {\n\tconst shortcutByPlatform = isMac()\n\t\t? shortcutOverride.mac\n\t\t: shortcutOverride.windows;\n\tconst prettifiedShortcutByPlatform = isMac()\n\t\t? prettifyMacShortcut(shortcutByPlatform)\n\t\t: prettifyWindowsShortcut(shortcutByPlatform);\n\n\tlet formattedShortcutByPlatform;\n\tlet formattedPrettifiedShortcutByPlatform;\n\tif (isMac()) {\n\t\tformattedShortcutByPlatform = {\n\t\t\tmac: shortcutByPlatform\n\t\t};\n\t\tformattedPrettifiedShortcutByPlatform = {\n\t\t\tmac: prettifiedShortcutByPlatform\n\t\t};\n\t} else {\n\t\tformattedShortcutByPlatform = {\n\t\t\twindows: shortcutByPlatform\n\t\t};\n\t\tformattedPrettifiedShortcutByPlatform = {\n\t\t\twindows: prettifiedShortcutByPlatform\n\t\t};\n\t}\n\treturn {formattedShortcutByPlatform, formattedPrettifiedShortcutByPlatform};\n};\n\n/**\n * Applies keyboard shortcut overrides to the registered OOB keyboard shortcuts.\n */\nexport const intersectShortcutOverrides = () => {\n\tIntersectedShortcutRegistry.clear();\n\tfor (const [\n\t\tshortcutKey,\n\t\tshortcutMetadata\n\t] of getAllOOBShortcuts().entries()) {\n\t\tconst {shortcutSysId} = shortcutMetadata;\n\n\t\tif (UserOverrideShortcutsRegistry.has(shortcutSysId)) {\n\t\t\tconst shortcutOverride = UserOverrideShortcutsRegistry.get(shortcutSysId);\n\n\t\t\t// Format and prettify shortcut override combination\n\t\t\tconst {\n\t\t\t\tformattedShortcutByPlatform,\n\t\t\t\tformattedPrettifiedShortcutByPlatform\n\t\t\t} = formatAndPrettifyShortcutByPlatform(shortcutOverride);\n\n\t\t\tIntersectedShortcutRegistry.set(shortcutKey, {\n\t\t\t\t...shortcutMetadata,\n\t\t\t\toverriden: true,\n\t\t\t\tshortcut: transformShortcutKeys(formattedShortcutByPlatform),\n\t\t\t\tprettifiedShortcuts: formattedPrettifiedShortcutByPlatform\n\t\t\t});\n\t\t} else {\n\t\t\tIntersectedShortcutRegistry.set(shortcutKey, shortcutMetadata);\n\t\t}\n\t}\n};\n\n/**\n * Registers keyboard shortcut overrides for the current user.\n * @param {UserOverrideShortcuts} userOverrideShortcuts\n */\nexport const registerShortcutOverrides = (userOverrideShortcuts = {}) => {\n\tUserOverrideShortcutsRegistry.clear();\n\tObject.keys(userOverrideShortcuts).forEach((shortcutSysId) => {\n\t\tUserOverrideShortcutsRegistry.set(\n\t\t\tshortcutSysId,\n\t\t\tuserOverrideShortcuts[shortcutSysId]\n\t\t);\n\t});\n\tconsole.log(\n\t\t'Shortcut Overrides registered: ',\n\t\tUserOverrideShortcutsRegistry.entries()\n\t);\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = \"\";\n      var needLayer = typeof item[5] !== \"undefined\";\n\n      if (item[4]) {\n        content += \"@supports (\".concat(item[4], \") {\");\n      }\n\n      if (item[2]) {\n        content += \"@media \".concat(item[2], \" {\");\n      }\n\n      if (needLayer) {\n        content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n      }\n\n      content += cssWithMappingToString(item);\n\n      if (needLayer) {\n        content += \"}\";\n      }\n\n      if (item[2]) {\n        content += \"}\";\n      }\n\n      if (item[4]) {\n        content += \"}\";\n      }\n\n      return content;\n    }).join(\"\");\n  }; // import a list of modules into the list\n\n\n  list.i = function i(modules, media, dedupe, supports, layer) {\n    if (typeof modules === \"string\") {\n      modules = [[null, modules, undefined]];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var k = 0; k < this.length; k++) {\n        var id = this[k][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _k = 0; _k < modules.length; _k++) {\n      var item = [].concat(modules[_k]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        continue;\n      }\n\n      if (typeof layer !== \"undefined\") {\n        if (typeof item[5] === \"undefined\") {\n          item[5] = layer;\n        } else {\n          item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n          item[5] = layer;\n        }\n      }\n\n      if (media) {\n        if (!item[2]) {\n          item[2] = media;\n        } else {\n          item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n          item[2] = media;\n        }\n      }\n\n      if (supports) {\n        if (!item[4]) {\n          item[4] = \"\".concat(supports);\n        } else {\n          item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n          item[4] = supports;\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};","\"use strict\";\n\nmodule.exports = function (i) {\n  return i[1];\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addLeadingZeros;\n\nfunction addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n\n  return sign + output;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = assign;\n\nfunction assign(target, dirtyObject) {\n  if (target == null) {\n    throw new TypeError('assign requires that input parameter not be null or undefined');\n  }\n\n  dirtyObject = dirtyObject || {};\n\n  for (var property in dirtyObject) {\n    if (dirtyObject.hasOwnProperty(property)) {\n      target[property] = dirtyObject[property];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = cloneObject;\n\nvar _index = _interopRequireDefault(require(\"../assign/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction cloneObject(dirtyObject) {\n  return (0, _index.default)({}, dirtyObject);\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"../lightFormatters/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/getUTCDayOfYear/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeek/index.js\"));\n\nvar _index4 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeekYear/index.js\"));\n\nvar _index5 = _interopRequireDefault(require(\"../../../_lib/getUTCWeek/index.js\"));\n\nvar _index6 = _interopRequireDefault(require(\"../../../_lib/getUTCWeekYear/index.js\"));\n\nvar _index7 = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n  /*\n   * |     | Unit                           |     | Unit                           |\n   * |-----|--------------------------------|-----|--------------------------------|\n   * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n   * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n   * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n   * |  d  | Day of month                   |  D  | Day of year                    |\n   * |  e  | Local day of week              |  E  | Day of week                    |\n   * |  f  |                                |  F* | Day of week in month           |\n   * |  g* | Modified Julian day            |  G  | Era                            |\n   * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n   * |  i! | ISO day of week                |  I! | ISO week of year               |\n   * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n   * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n   * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n   * |  m  | Minute                         |  M  | Month                          |\n   * |  n  |                                |  N  |                                |\n   * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n   * |  p! | Long localized time            |  P! | Long localized date            |\n   * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n   * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n   * |  s  | Second                         |  S  | Fraction of second             |\n   * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n   * |  u  | Extended year                  |  U* | Cyclic year                    |\n   * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n   * |  w  | Local week of year             |  W* | Week of month                  |\n   * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n   * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n   * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n   *\n   * Letters marked by * are not implemented but reserved by Unicode standard.\n   *\n   * Letters marked by ! are non-standard, but implemented by date-fns:\n   * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n   * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n   *   i.e. 7 for Sunday, 1 for Monday, etc.\n   * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n   * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n   *   `R` is supposed to be used in conjunction with `I` and `i`\n   *   for universal ISO week-numbering date, whereas\n   *   `Y` is supposed to be used in conjunction with `w` and `e`\n   *   for week-numbering date specific to the locale.\n   * - `P` is long localized date format\n   * - `p` is long localized time format\n   */\n\n};\nvar formatters = {\n  // Era\n  G: function (date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n\n    return _index.default.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    var signedWeekYear = (0, _index6.default)(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return (0, _index7.default)(twoDigitYear, 2);\n    } // Ordinal number\n\n\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    } // Padding\n\n\n    return (0, _index7.default)(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function (date, token) {\n    var isoWeekYear = (0, _index4.default)(date); // Padding\n\n    return (0, _index7.default)(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    var year = date.getUTCFullYear();\n    return (0, _index7.default)(year, token.length);\n  },\n  // Quarter\n  Q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'QQ':\n        return (0, _index7.default)(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'qq':\n        return (0, _index7.default)(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return _index.default.M(date, token);\n      // 1st, 2nd, ..., 12th\n\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n\n      case 'LL':\n        return (0, _index7.default)(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function (date, token, localize, options) {\n    var week = (0, _index5.default)(date, options);\n\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n\n    return (0, _index7.default)(week, token.length);\n  },\n  // ISO week of year\n  I: function (date, token, localize) {\n    var isoWeek = (0, _index3.default)(date);\n\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n\n    return (0, _index7.default)(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n\n    return _index.default.d(date, token);\n  },\n  // Day of year\n  D: function (date, token, localize) {\n    var dayOfYear = (0, _index2.default)(date);\n\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n\n    return (0, _index7.default)(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'ee':\n        return (0, _index7.default)(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'cc':\n        return (0, _index7.default)(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n\n      case 'ii':\n        return (0, _index7.default)(isoDayOfWeek, token.length);\n      // 2nd\n\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return _index.default.h(date, token);\n  },\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n\n    return _index.default.H(date, token);\n  },\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return (0, _index7.default)(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return (0, _index7.default)(hours, token.length);\n  },\n  // Minute\n  m: function (date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n\n    return _index.default.m(date, token);\n  },\n  // Second\n  s: function (date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n\n    return _index.default.s(date, token);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    return _index.default.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return (0, _index7.default)(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return (0, _index7.default)(timestamp, token.length);\n  }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + (0, _index7.default)(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + (0, _index7.default)(Math.abs(offset) / 60, 2);\n  }\n\n  return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = (0, _index7.default)(Math.floor(absOffset / 60), 2);\n  var minutes = (0, _index7.default)(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n  // Year\n  y: function (date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return (0, _index.default)(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function (date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : (0, _index.default)(month + 1, 2);\n  },\n  // Day of the month\n  d: function (date, token) {\n    return (0, _index.default)(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function (date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n\n      case 'aaa':\n        return dayPeriodEnumValue;\n\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token) {\n    return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function (date, token) {\n    return (0, _index.default)(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function (date, token) {\n    return (0, _index.default)(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function (date, token) {\n    return (0, _index.default)(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return (0, _index.default)(fractionalSeconds, token.length);\n  }\n};\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nfunction dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/);\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getTimezoneOffsetInMilliseconds;\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCDayOfYear;\n\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCDayOfYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCISOWeek;\n\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeekYear/index.js\"));\n\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCISOWeek(dirtyDate) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCISOWeekYear;\n\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeekYear(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = (0, _index2.default)(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = (0, _index2.default)(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCWeek;\n\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeekYear/index.js\"));\n\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCWeek(dirtyDate, options) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCWeekYear;\n\nvar _index = _interopRequireDefault(require(\"../toInteger/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../../toDate/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\n\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeekYear(dirtyDate, dirtyOptions) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index2.default)(dirtyDate, dirtyOptions);\n  var year = date.getUTCFullYear();\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : (0, _index.default)(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : (0, _index.default)(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, dirtyOptions);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\nexports.isProtectedWeekYearToken = isProtectedWeekYearToken;\nexports.throwProtectedError = throwProtectedError;\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\n\nfunction isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\n\nfunction isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\n\nfunction throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = requiredArgs;\n\nfunction requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCISOWeek;\n\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeek(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var weekStartsOn = 1;\n  var date = (0, _index.default)(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCISOWeekYear;\n\nvar _index = _interopRequireDefault(require(\"../getUTCISOWeekYear/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeekYear(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  var year = (0, _index.default)(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = (0, _index2.default)(fourthOfJanuary);\n  return date;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCWeek;\n\nvar _index = _interopRequireDefault(require(\"../toInteger/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../../toDate/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeek(dirtyDate, dirtyOptions) {\n  (0, _index3.default)(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : (0, _index.default)(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : (0, _index.default)(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = (0, _index2.default)(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCWeekYear;\n\nvar _index = _interopRequireDefault(require(\"../toInteger/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../getUTCWeekYear/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\n\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n  (0, _index4.default)(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : (0, _index.default)(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : (0, _index.default)(options.firstWeekContainsDate);\n  var year = (0, _index2.default)(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = (0, _index3.default)(firstWeek, dirtyOptions);\n  return date;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = toInteger;\n\nfunction toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number;\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addMilliseconds;\n\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var timestamp = (0, _index2.default)(dirtyDate).getTime();\n  var amount = (0, _index.default)(dirtyAmount);\n  return new Date(timestamp + amount);\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = format;\n\nvar _index = _interopRequireDefault(require(\"../isValid/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../locale/en-US/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../subMilliseconds/index.js\"));\n\nvar _index4 = _interopRequireDefault(require(\"../toDate/index.js\"));\n\nvar _index5 = _interopRequireDefault(require(\"../_lib/format/formatters/index.js\"));\n\nvar _index6 = _interopRequireDefault(require(\"../_lib/format/longFormatters/index.js\"));\n\nvar _index7 = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\n\nvar _index8 = require(\"../_lib/protectedTokens/index.js\");\n\nvar _index9 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n\nvar _index10 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n *   See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  (0, _index10.default)(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var options = dirtyOptions || {};\n  var locale = options.locale || _index2.default;\n  var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : (0, _index9.default)(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : (0, _index9.default)(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : (0, _index9.default)(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : (0, _index9.default)(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  var originalDate = (0, _index4.default)(dirtyDate);\n\n  if (!(0, _index.default)(originalDate)) {\n    throw new RangeError('Invalid time value');\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n  var timezoneOffset = (0, _index7.default)(originalDate);\n  var utcDate = (0, _index3.default)(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = _index6.default[firstCharacter];\n      return longFormatter(substring, locale.formatLong, formatterOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n\n    var formatter = _index5.default[firstCharacter];\n\n    if (formatter) {\n      if (!options.useAdditionalWeekYearTokens && (0, _index8.isProtectedWeekYearToken)(substring)) {\n        (0, _index8.throwProtectedError)(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      if (!options.useAdditionalDayOfYearTokens && (0, _index8.isProtectedDayOfYearToken)(substring)) {\n        (0, _index8.throwProtectedError)(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n\n    return substring;\n  }).join('');\n  return result;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isValid;\n\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n *   if the first argument is not an instance of Date.\n *   Instead, argument is converted beforehand using `toDate`.\n *\n *   Examples:\n *\n *   | `isValid` argument        | Before v2.0.0 | v2.0.0 onward |\n *   |---------------------------|---------------|---------------|\n *   | `new Date()`              | `true`        | `true`        |\n *   | `new Date('2016-01-01')`  | `true`        | `true`        |\n *   | `new Date('')`            | `false`       | `false`       |\n *   | `new Date(1488370835081)` | `true`        | `true`        |\n *   | `new Date(NaN)`           | `false`       | `false`       |\n *   | `'2016-01-01'`            | `TypeError`   | `false`       |\n *   | `''`                      | `TypeError`   | `false`       |\n *   | `1488370835081`           | `TypeError`   | `true`        |\n *   | `NaN`                     | `TypeError`   | `false`       |\n *\n *   We introduce this change to make *date-fns* consistent with ECMAScript behavior\n *   that try to coerce arguments to the expected type\n *   (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  return !isNaN(date);\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildFormatLongFn;\n\nfunction buildFormatLongFn(args) {\n  return function (dirtyOptions) {\n    var options = dirtyOptions || {};\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildLocalizeFn;\n\nfunction buildLocalizeFn(args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var context = options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    return valuesArray[index];\n  };\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildMatchFn;\n\nfunction buildMatchFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var value;\n\n    if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n      value = findIndex(parsePatterns, function (pattern) {\n        return pattern.test(matchedString);\n      });\n    } else {\n      value = findKey(parsePatterns, function (pattern) {\n        return pattern.test(matchedString);\n      });\n    }\n\n    value = args.valueCallback ? args.valueCallback(value) : value;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n}\n\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildMatchPatternFn;\n\nfunction buildMatchPatternFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var matchResult = string.match(args.matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n\n    if (!parseResult) {\n      return null;\n    }\n\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = formatDistance;\nvar formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\n\nfunction formatDistance(token, count, options) {\n  options = options || {};\n  var result;\n\n  if (typeof formatDistanceLocale[token] === 'string') {\n    result = formatDistanceLocale[token];\n  } else if (count === 1) {\n    result = formatDistanceLocale[token].one;\n  } else {\n    result = formatDistanceLocale[token].other.replace('{{count}}', count);\n  }\n\n  if (options.addSuffix) {\n    if (options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildFormatLongFn/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: (0, _index.default)({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: (0, _index.default)({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: (0, _index.default)({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nvar _default = formatLong;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = formatRelative;\nvar formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\n\nfunction formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildLocalizeFn/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n  // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n  // Generally, formatted dates should look like they are in the middle of a sentence,\n  // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`:\n  //\n  //   var options = dirtyOptions || {}\n  //   var unit = String(options.unit)\n  //\n  // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'\n\n  var rem100 = number % 100;\n\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n\n      case 2:\n        return number + 'nd';\n\n      case 3:\n        return number + 'rd';\n    }\n  }\n\n  return number + 'th';\n}\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: (0, _index.default)({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: (0, _index.default)({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return Number(quarter) - 1;\n    }\n  }),\n  month: (0, _index.default)({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: (0, _index.default)({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: (0, _index.default)({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nvar _default = localize;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildMatchPatternFn/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/buildMatchFn/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: (0, _index.default)({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: (0, _index2.default)({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: (0, _index2.default)({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: (0, _index2.default)({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: (0, _index2.default)({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: (0, _index2.default)({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nvar _default = match;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"./_lib/formatDistance/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"./_lib/formatLong/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"./_lib/formatRelative/index.js\"));\n\nvar _index4 = _interopRequireDefault(require(\"./_lib/localize/index.js\"));\n\nvar _index5 = _interopRequireDefault(require(\"./_lib/match/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: _index.default,\n  formatLong: _index2.default,\n  formatRelative: _index3.default,\n  localize: _index4.default,\n  match: _index5.default,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\nvar _default = locale;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = subMilliseconds;\n\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  return (0, _index2.default)(dirtyDate, -amount);\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = toDate;\n\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n  (0, _index.default)(1, arguments);\n  var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n  if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n      console.warn(new Error().stack);\n    }\n\n    return new Date(NaN);\n  }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addLeadingZeros;\nfunction addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n  return sign + output;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../locale/en-US/index.js\"));\nvar _default = _index.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getDefaultOptions = getDefaultOptions;\nexports.setDefaultOptions = setDefaultOptions;\nvar defaultOptions = {};\nfunction getDefaultOptions() {\n  return defaultOptions;\n}\nfunction setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/getUTCDayOfYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../../../_lib/getUTCWeek/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../../../_lib/getUTCWeekYear/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\nvar _index7 = _interopRequireDefault(require(\"../lightFormatters/index.js\"));\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function G(date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function y(date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n    return _index7.default.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function Y(date, token, localize, options) {\n    var signedWeekYear = (0, _index5.default)(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return (0, _index6.default)(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    }\n\n    // Padding\n    return (0, _index6.default)(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function R(date, token) {\n    var isoWeekYear = (0, _index3.default)(date);\n\n    // Padding\n    return (0, _index6.default)(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function u(date, token) {\n    var year = date.getUTCFullYear();\n    return (0, _index6.default)(year, token.length);\n  },\n  // Quarter\n  Q: function Q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'QQ':\n        return (0, _index6.default)(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'qq':\n        return (0, _index6.default)(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function M(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return _index7.default.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function L(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case 'LL':\n        return (0, _index6.default)(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function w(date, token, localize, options) {\n    var week = (0, _index4.default)(date, options);\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n    return (0, _index6.default)(week, token.length);\n  },\n  // ISO week of year\n  I: function I(date, token, localize) {\n    var isoWeek = (0, _index2.default)(date);\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n    return (0, _index6.default)(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function d(date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n    return _index7.default.d(date, token);\n  },\n  // Day of year\n  D: function D(date, token, localize) {\n    var dayOfYear = (0, _index.default)(date);\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n    return (0, _index6.default)(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function E(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function e(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'ee':\n        return (0, _index6.default)(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function c(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'cc':\n        return (0, _index6.default)(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function i(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n      case 'ii':\n        return (0, _index6.default)(isoDayOfWeek, token.length);\n      // 2nd\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function a(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function b(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function B(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return _index7.default.h(date, token);\n  },\n  // Hour [0-23]\n  H: function H(date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n    return _index7.default.H(date, token);\n  },\n  // Hour [0-11]\n  K: function K(date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return (0, _index6.default)(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function k(date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return (0, _index6.default)(hours, token.length);\n  },\n  // Minute\n  m: function m(date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n    return _index7.default.m(date, token);\n  },\n  // Second\n  s: function s(date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n    return _index7.default.s(date, token);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    return _index7.default.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function X(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function x(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function O(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function z(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function t(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return (0, _index6.default)(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function T(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return (0, _index6.default)(timestamp, token.length);\n  }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + (0, _index6.default)(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + (0, _index6.default)(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = (0, _index6.default)(Math.floor(absOffset / 60), 2);\n  var minutes = (0, _index6.default)(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    var signedYear = date.getUTCFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return (0, _index.default)(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function M(date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : (0, _index.default)(month + 1, 2);\n  },\n  // Day of the month\n  d: function d(date, token) {\n    return (0, _index.default)(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function a(date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n      case 'aaa':\n        return dayPeriodEnumValue;\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token) {\n    return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function H(date, token) {\n    return (0, _index.default)(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function m(date, token) {\n    return (0, _index.default)(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function s(date, token) {\n    return (0, _index.default)(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return (0, _index.default)(fractionalSeconds, token.length);\n  }\n};\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n  var dateTimeFormat;\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getTimezoneOffsetInMilliseconds;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCDayOfYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction getUTCDayOfYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCISOWeek(dirtyDate) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nfunction getUTCISOWeekYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = (0, _index3.default)(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = (0, _index3.default)(fourthOfJanuaryOfThisYear);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCWeek(dirtyDate, options) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction getUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getUTCFullYear();\n  var defaultOptions = (0, _index5.getDefaultOptions)();\n  var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, options);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\nexports.isProtectedWeekYearToken = isProtectedWeekYearToken;\nexports.throwProtectedError = throwProtectedError;\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = requiredArgs;\nfunction requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeek(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var weekStartsOn = 1;\n  var date = (0, _index.default)(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCISOWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeekYear(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  var year = (0, _index.default)(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = (0, _index2.default)(fourthOfJanuary);\n  return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index4 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(1, arguments);\n  var defaultOptions = (0, _index4.getDefaultOptions)();\n  var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = (0, _index.default)(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(1, arguments);\n  var defaultOptions = (0, _index5.getDefaultOptions)();\n  var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n  var year = (0, _index.default)(dirtyDate, options);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = (0, _index3.default)(firstWeek, options);\n  return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = toInteger;\nfunction toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n  var number = Number(dirtyNumber);\n  if (isNaN(number)) {\n    return number;\n  }\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addMilliseconds;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var timestamp = (0, _index2.default)(dirtyDate).getTime();\n  var amount = (0, _index.default)(dirtyAmount);\n  return new Date(timestamp + amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = format;\nvar _index = _interopRequireDefault(require(\"../isValid/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../subMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/format/formatters/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../_lib/format/longFormatters/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\nvar _index7 = require(\"../_lib/protectedTokens/index.js\");\nvar _index8 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index9 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index10 = require(\"../_lib/defaultOptions/index.js\");\nvar _index11 = _interopRequireDefault(require(\"../_lib/defaultLocale/index.js\"));\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  (0, _index9.default)(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var defaultOptions = (0, _index10.getDefaultOptions)();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index11.default;\n  var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n  var originalDate = (0, _index3.default)(dirtyDate);\n  if (!(0, _index.default)(originalDate)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n  var timezoneOffset = (0, _index6.default)(originalDate);\n  var utcDate = (0, _index2.default)(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = _index5.default[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n    var firstCharacter = substring[0];\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n    var formatter = _index4.default[firstCharacter];\n    if (formatter) {\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(substring)) {\n        (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(substring)) {\n        (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n    return substring;\n  }).join('');\n  return result;\n}\nfunction cleanEscapedString(input) {\n  var matched = input.match(escapedStringRegExp);\n  if (!matched) {\n    return input;\n  }\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nfunction isDate(value) {\n  (0, _index.default)(1, arguments);\n  return value instanceof Date || (0, _typeof2.default)(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isValid;\nvar _index = _interopRequireDefault(require(\"../isDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  if (!(0, _index.default)(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n  var date = (0, _index2.default)(dirtyDate);\n  return !isNaN(Number(date));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildFormatLongFn;\nfunction buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildLocalizeFn;\nfunction buildLocalizeFn(args) {\n  return function (dirtyIndex, options) {\n    var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildMatchFn;\nfunction buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n    if (!matchResult) {\n      return null;\n    }\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildMatchPatternFn;\nfunction buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n  return result;\n};\nvar _default = formatDistance;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildFormatLongFn/index.js\"));\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: (0, _index.default)({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: (0, _index.default)({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: (0, _index.default)({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nvar _default = formatLong;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nvar _default = formatRelative;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildLocalizeFn/index.js\"));\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n      case 2:\n        return number + 'nd';\n      case 3:\n        return number + 'rd';\n    }\n  }\n  return number + 'th';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: (0, _index.default)({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: (0, _index.default)({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: (0, _index.default)({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: (0, _index.default)({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: (0, _index.default)({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nvar _default = localize;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildMatchFn/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/buildMatchPatternFn/index.js\"));\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: (0, _index2.default)({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: (0, _index.default)({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: (0, _index.default)({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: (0, _index.default)({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: (0, _index.default)({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: (0, _index.default)({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nvar _default = match;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"./_lib/formatDistance/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"./_lib/formatLong/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"./_lib/formatRelative/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"./_lib/localize/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"./_lib/match/index.js\"));\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: _index.default,\n  formatLong: _index2.default,\n  formatRelative: _index3.default,\n  localize: _index4.default,\n  match: _index5.default,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nvar _default = locale;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = subMilliseconds;\nvar _index = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n  (0, _index2.default)(2, arguments);\n  var amount = (0, _index3.default)(dirtyAmount);\n  return (0, _index.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = toDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n  (0, _index.default)(1, arguments);\n  var argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (argument instanceof Date || (0, _typeof2.default)(argument) === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n      // eslint-disable-next-line no-console\n      console.warn(new Error().stack);\n    }\n    return new Date(NaN);\n  }\n}\nmodule.exports = exports.default;","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import * as arr from '@interactjs/utils/arr'\nimport browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\nimport Eventable from './Eventable'\nimport { ActionDefaults, Defaults, Options } from './defaultOptions'\nimport { Actions, isNonNativeEvent } from './scope'\n\ntype IgnoreValue = string | Interact.Element | boolean\n\n/** */\nexport class Interactable implements Partial<Eventable> {\n  protected get _defaults (): Defaults {\n    return {\n      base: {},\n      perAction: {},\n      actions: {} as ActionDefaults,\n    }\n  }\n\n  readonly options!: Required<Options>\n  readonly _actions: Actions\n  readonly target: Interact.Target\n  readonly events = new Eventable()\n  readonly _context: Interact.Context\n  readonly _win: Window\n  readonly _doc: Document\n\n  /** */\n  constructor (target: Interact.Target, options: any, defaultContext: Document | Interact.Element) {\n    this._actions = options.actions\n    this.target   = target\n    this._context = options.context || defaultContext\n    this._win     = getWindow(trySelector(target) ? this._context : target)\n    this._doc     = this._win.document\n\n    this.set(options)\n  }\n\n  setOnEvents (actionName: Interact.ActionName, phases: NonNullable<any>) {\n    if (is.func(phases.onstart)) { this.on(`${actionName}start`, phases.onstart) }\n    if (is.func(phases.onmove)) { this.on(`${actionName}move`, phases.onmove) }\n    if (is.func(phases.onend)) { this.on(`${actionName}end`, phases.onend) }\n    if (is.func(phases.oninertiastart)) { this.on(`${actionName}inertiastart`, phases.oninertiastart) }\n\n    return this\n  }\n\n  updatePerActionListeners (actionName: Interact.ActionName, prev: Interact.Listeners, cur: Interact.Listeners) {\n    if (is.array(prev) || is.object(prev)) {\n      this.off(actionName, prev)\n    }\n\n    if (is.array(cur) || is.object(cur)) {\n      this.on(actionName, cur)\n    }\n  }\n\n  setPerAction (actionName: Interact.ActionName, options: Interact.OrBoolean<Options>) {\n    const defaults = this._defaults\n\n    // for all the default per-action options\n    for (const optionName_ in options) {\n      const optionName = optionName_ as keyof Interact.PerActionDefaults\n      const actionOptions = this.options[actionName]\n      const optionValue: any = options[optionName]\n\n      // remove old event listeners and add new ones\n      if (optionName === 'listeners') {\n        this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue as Interact.Listeners)\n      }\n\n      // if the option value is an array\n      if (is.array<any>(optionValue)) {\n        (actionOptions[optionName] as any) = arr.from(optionValue)\n      }\n      // if the option value is an object\n      else if (is.plainObject(optionValue)) {\n        // copy the object\n        (actionOptions[optionName] as any) = extend(\n          actionOptions[optionName] || {} as any,\n          clone(optionValue))\n\n        // set anabled field to true if it exists in the defaults\n        if (is.object(defaults.perAction[optionName]) && 'enabled' in (defaults.perAction[optionName] as any)) {\n          (actionOptions[optionName] as any).enabled = optionValue.enabled !== false\n        }\n      }\n      // if the option value is a boolean and the default is an object\n      else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n        (actionOptions[optionName] as any).enabled = optionValue\n      }\n      // if it's anything else, do a plain assignment\n      else {\n        (actionOptions[optionName] as any) = optionValue\n      }\n    }\n  }\n\n  /**\n   * The default function to get an Interactables bounding rect. Can be\n   * overridden using {@link Interactable.rectChecker}.\n   *\n   * @param {Element} [element] The element to measure.\n   * @return {object} The object's bounding rectangle.\n   */\n  getRect (element: Interact.Element) {\n    element = element || (is.element(this.target)\n      ? this.target\n      : null)\n\n    if (is.string(this.target)) {\n      element = element || this._context.querySelector(this.target)\n    }\n\n    return getElementRect(element)\n  }\n\n  /**\n   * Returns or sets the function used to calculate the interactable's\n   * element's rectangle\n   *\n   * @param {function} [checker] A function which returns this Interactable's\n   * bounding rectangle. See {@link Interactable.getRect}\n   * @return {function | object} The checker function or this Interactable\n   */\n  rectChecker (checker: (element: Interact.Element) => any) {\n    if (is.func(checker)) {\n      this.getRect = checker\n\n      return this\n    }\n\n    if (checker === null) {\n      delete this.getRect\n\n      return this\n    }\n\n    return this.getRect\n  }\n\n  _backCompatOption (optionName: keyof Interact.Options, newValue: any) {\n    if (trySelector(newValue) || is.object(newValue)) {\n      (this.options[optionName] as any) = newValue\n\n      for (const action in this._actions.map) {\n        (this.options[action][optionName] as any) = newValue\n      }\n\n      return this\n    }\n\n    return this.options[optionName]\n  }\n\n  /**\n   * Gets or sets the origin of the Interactable's element.  The x and y\n   * of the origin will be subtracted from action event coordinates.\n   *\n   * @param {Element | object | string} [origin] An HTML or SVG Element whose\n   * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n   * or any CSS selector\n   *\n   * @return {object} The current origin or this Interactable\n   */\n  origin (newValue: any) {\n    return this._backCompatOption('origin', newValue)\n  }\n\n  /**\n   * Returns or sets the mouse coordinate types used to calculate the\n   * movement of the pointer.\n   *\n   * @param {string} [newValue] Use 'client' if you will be scrolling while\n   * interacting; Use 'page' if you want autoScroll to work\n   * @return {string | object} The current deltaSource or this Interactable\n   */\n  deltaSource (newValue?: string) {\n    if (newValue === 'page' || newValue === 'client') {\n      this.options.deltaSource = newValue\n\n      return this\n    }\n\n    return this.options.deltaSource\n  }\n\n  /**\n   * Gets the selector context Node of the Interactable. The default is\n   * `window.document`.\n   *\n   * @return {Node} The context Node of this Interactable\n   */\n  context () {\n    return this._context\n  }\n\n  inContext (element: Document | Node) {\n    return (this._context === element.ownerDocument ||\n            nodeContains(this._context, element))\n  }\n\n  testIgnoreAllow (\n    this: Interactable,\n    options: { ignoreFrom?: IgnoreValue, allowFrom?: IgnoreValue },\n    targetNode: Node,\n    eventTarget: Interact.EventTarget,\n  ) {\n    return (!this.testIgnore(options.ignoreFrom, targetNode, eventTarget) &&\n            this.testAllow(options.allowFrom, targetNode, eventTarget))\n  }\n\n  testAllow (\n    this: Interactable,\n    allowFrom: IgnoreValue,\n    targetNode: Node,\n    element: Interact.EventTarget,\n  ) {\n    if (!allowFrom) { return true }\n\n    if (!is.element(element)) { return false }\n\n    if (is.string(allowFrom)) {\n      return matchesUpTo(element, allowFrom, targetNode)\n    }\n    else if (is.element(allowFrom)) {\n      return nodeContains(allowFrom, element)\n    }\n\n    return false\n  }\n\n  testIgnore (\n    this: Interactable,\n    ignoreFrom: IgnoreValue,\n    targetNode: Node,\n    element: Interact.EventTarget,\n  ) {\n    if (!ignoreFrom || !is.element(element)) { return false }\n\n    if (is.string(ignoreFrom)) {\n      return matchesUpTo(element, ignoreFrom, targetNode)\n    }\n    else if (is.element(ignoreFrom)) {\n      return nodeContains(ignoreFrom, element)\n    }\n\n    return false\n  }\n\n  /**\n   * Calls listeners for the given InteractEvent type bound globally\n   * and directly to this Interactable\n   *\n   * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n   * Interactable\n   * @return {Interactable} this Interactable\n   */\n  fire (iEvent: object) {\n    this.events.fire(iEvent)\n\n    return this\n  }\n\n  _onOff (method: 'on' | 'off', typeArg: Interact.EventTypes, listenerArg?: Interact.ListenersArg | null, options?: any) {\n    if (is.object(typeArg) && !is.array(typeArg)) {\n      options = listenerArg\n      listenerArg = null\n    }\n\n    const addRemove = method === 'on' ? 'add' : 'remove'\n    const listeners = normalizeListeners(typeArg, listenerArg)\n\n    for (let type in listeners) {\n      if (type === 'wheel') { type = browser.wheelEvent }\n\n      for (const listener of listeners[type]) {\n        // if it is an action event type\n        if (isNonNativeEvent(type, this._actions)) {\n          this.events[method](type, listener)\n        }\n        // delegated event\n        else if (is.string(this.target)) {\n          events[`${addRemove}Delegate` as 'addDelegate' | 'removeDelegate'](this.target, this._context, type, listener, options)\n        }\n        // remove listener from this Interactable's element\n        else {\n          (events[addRemove] as typeof events.remove)(this.target, type, listener, options)\n        }\n      }\n    }\n\n    return this\n  }\n\n  /**\n   * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n   *\n   * @param {string | array | object} types The types of events to listen\n   * for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * addEventListener\n   * @return {Interactable} This Interactable\n   */\n  on (types: Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n    return this._onOff('on', types, listener, options)\n  }\n\n  /**\n   * Removes an InteractEvent, pointerEvent or DOM event listener.\n   *\n   * @param {string | array | object} types The types of events that were\n   * listened for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * removeEventListener\n   * @return {Interactable} This Interactable\n   */\n  off (types: string | string[] | Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n    return this._onOff('off', types, listener, options)\n  }\n\n  /**\n   * Reset the options of this Interactable\n   *\n   * @param {object} options The new settings to apply\n   * @return {object} This Interactable\n   */\n  set (options: Interact.OptionsArg) {\n    const defaults = this._defaults\n\n    if (!is.object(options)) {\n      options = {}\n    }\n\n    (this.options as Required<Options>) = clone(defaults.base) as Required<Options>\n\n    for (const actionName_ in this._actions.methodDict) {\n      const actionName = actionName_ as Interact.ActionName\n      const methodName = this._actions.methodDict[actionName]\n\n      this.options[actionName] = {}\n      this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n\n      this[methodName](options[actionName])\n    }\n\n    for (const setting in options) {\n      if (is.func(this[setting])) {\n        this[setting](options[setting])\n      }\n    }\n\n    return this\n  }\n\n  /**\n   * Remove this interactable from the list of interactables and remove it's\n   * action capabilities and event listeners\n   *\n   * @return {interact}\n   */\n  unset () {\n    events.remove(this.target as Node, 'all')\n\n    if (is.string(this.target)) {\n      // remove delegated events\n      for (const type in events.delegatedEvents) {\n        const delegated = events.delegatedEvents[type]\n\n        if (delegated.selectors[0] === this.target &&\n            delegated.contexts[0] === this._context) {\n          delegated.selectors.splice(0, 1)\n          delegated.contexts.splice(0, 1)\n          delegated.listeners.splice(0, 1)\n        }\n\n        events.remove(this._context, type, events.delegateListener)\n        events.remove(this._context, type, events.delegateUseCapture, true)\n      }\n    }\n    else {\n      events.remove(this.target as Node, 'all')\n    }\n  }\n}\n\nexport default Interactable\n","import domObjects from '@interactjs/utils/domObjects'\nimport * as utils from '@interactjs/utils/index'\nimport Eventable from './Eventable'\nimport InteractEvent, { PhaseMap } from './InteractEvent'\nimport InteractStatic from './InteractStatic'\nimport InteractableBase from './Interactable'\nimport InteractableSet from './InteractableSet'\nimport defaults from './defaultOptions'\nimport interactions from './interactions'\n\nexport interface SignalArgs {\n  'scope:add-document': DocSignalArg\n  'scope:remove-document': DocSignalArg\n  'interactable:unset': { interactable: InteractableBase }\n  'interactable:set': { interactable: InteractableBase, options: Interact.Options }\n  'interactions:destroy': { interaction: Interact.Interaction }\n}\n\nexport type ListenerName = keyof SignalArgs\n\nexport type ListenerMap = {\n  [P in ListenerName]?: (arg: SignalArgs[P], scope: Scope, signalName: P) => void | boolean\n}\n\ninterface DocSignalArg {\n  doc: Document\n  window: Window\n  scope: Scope\n  options?: { [index: string]: any }\n}\n\nconst {\n  win,\n  browser,\n  raf,\n  events,\n} = utils\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionMap { // tslint:disable-line no-empty-interface\n}\n\nexport type ActionName = keyof ActionMap\n\nexport interface Actions {\n  map: ActionMap\n  phases: PhaseMap\n  methodDict: { [P in ActionName]?: string }\n  phaselessTypes: { [type: string]: true }\n}\n\nexport interface Plugin {\n  [key: string]: any\n  id?: string\n  listeners?: ListenerMap\n  before?: string[]\n  install? (scope: Scope, options?: any): void\n}\n\nexport default class Scope {\n  id = `__interact_scope_${Math.floor(Math.random() * 100)}`\n  isInitialized = false\n  listenerMaps: Array<{\n    map: ListenerMap\n    id: string\n  }> = []\n\n  browser = browser\n  events = events\n  utils = utils\n  defaults = utils.clone(defaults) as typeof defaults\n  Eventable = Eventable\n  actions: Actions = {\n    map: {},\n    phases: {\n      start: true,\n      move: true,\n      end: true,\n    },\n    methodDict: {},\n    phaselessTypes: {},\n  }\n\n  interactStatic = new InteractStatic(this)\n  InteractEvent = InteractEvent\n  Interactable!: typeof InteractableBase\n  interactables = new InteractableSet(this)\n\n  // main window\n  _win!: Window\n\n  // main document\n  document!: Document\n\n  // main window\n  window!: Window\n\n  // all documents being listened to\n  documents: Array<{ doc: Document, options: any }> = []\n\n  _plugins: {\n    list: Plugin[]\n    map: { [id: string]: Plugin }\n  } = {\n    list: [],\n    map: {},\n  }\n\n  constructor () {\n    const scope = this\n\n    this.Interactable = class extends InteractableBase {\n      get _defaults () { return scope.defaults }\n\n      set (options: Interact.Options) {\n        super.set(options)\n\n        scope.fire('interactable:set', {\n          options,\n          interactable: this,\n        })\n\n        return this\n      }\n\n      unset () {\n        super.unset()\n        scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1)\n\n        scope.fire('interactable:unset', { interactable: this })\n      }\n    }\n  }\n\n  addListeners (map: ListenerMap, id?: string) {\n    this.listenerMaps.push({ id, map })\n  }\n\n  fire<T extends ListenerName> (name: T, arg: SignalArgs[T]): void | false {\n    for (const { map: { [name]: listener } } of this.listenerMaps) {\n      if (!!listener && listener(arg as any, this, name as never) === false) {\n        return false\n      }\n    }\n  }\n\n  onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n  init (window: Window) {\n    return this.isInitialized\n      ? this\n      : initScope(this, window)\n  }\n\n  pluginIsInstalled (plugin: Plugin) {\n    return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1\n  }\n\n  usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n    if (this.pluginIsInstalled(plugin)) {\n      return this\n    }\n\n    if (plugin.id) { this._plugins.map[plugin.id] = plugin }\n    this._plugins.list.push(plugin)\n\n    if (plugin.install) {\n      plugin.install(this, options)\n    }\n\n    if (plugin.listeners && plugin.before) {\n      let index = 0\n      const len = this.listenerMaps.length\n      const before = plugin.before.reduce((acc, id) => {\n        acc[id] = true\n        return acc\n      }, {})\n\n      for (; index < len; index++) {\n        const otherId = this.listenerMaps[index].id\n\n        if (before[otherId]) { break }\n      }\n\n      this.listenerMaps.splice(index, 0, { id: plugin.id, map: plugin.listeners })\n    }\n    else if (plugin.listeners) {\n      this.listenerMaps.push({ id: plugin.id, map: plugin.listeners })\n    }\n\n    return this\n  }\n\n  addDocument (doc: Document, options?: any): void | false {\n    // do nothing if document is already known\n    if (this.getDocIndex(doc) !== -1) { return false }\n\n    const window = win.getWindow(doc)\n\n    options = options ? utils.extend({}, options) : {}\n\n    this.documents.push({ doc, options })\n    events.documents.push(doc)\n\n    // don't add an unload event for the main document\n    // so that the page may be cached in browser history\n    if (doc !== this.document) {\n      events.add(window, 'unload', this.onWindowUnload)\n    }\n\n    this.fire('scope:add-document', { doc, window, scope: this, options })\n  }\n\n  removeDocument (doc: Document) {\n    const index = this.getDocIndex(doc)\n\n    const window = win.getWindow(doc)\n    const options = this.documents[index].options\n\n    events.remove(window, 'unload', this.onWindowUnload)\n\n    this.documents.splice(index, 1)\n    events.documents.splice(index, 1)\n\n    this.fire('scope:remove-document', { doc, window, scope: this, options })\n  }\n\n  getDocIndex (doc: Document) {\n    for (let i = 0; i < this.documents.length; i++) {\n      if (this.documents[i].doc === doc) {\n        return i\n      }\n    }\n\n    return -1\n  }\n\n  getDocOptions (doc: Document) {\n    const docIndex = this.getDocIndex(doc)\n\n    return docIndex === -1 ? null : this.documents[docIndex].options\n  }\n\n  now () {\n    return ((this.window as any).Date as typeof Date || Date).now()\n  }\n}\n\nexport function isNonNativeEvent (type: string, actions: Actions) {\n  if (actions.phaselessTypes[type]) { return true }\n\n  for (const name in actions.map) {\n    if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport function initScope (scope: Scope, window: Window) {\n  scope.isInitialized = true\n  win.init(window)\n  domObjects.init(window)\n  browser.init(window)\n  raf.init(window)\n  events.init(window)\n\n  scope.usePlugin(interactions)\n  scope.document = window.document\n  scope.window = window\n\n  return scope\n}\n\nexport { Scope }\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\nimport InteractionBase from './Interaction'\nimport interactablePreventDefault from './interactablePreventDefault'\nimport finder, { SearchDetails } from './interactionFinder'\nimport Scope from './scope'\n\ndeclare module '@interactjs/core/scope' {\n  interface Scope {\n    Interaction: typeof InteractionBase\n    interactions: {\n      new: <T extends ActionName> (options: any) => InteractionBase<T>\n      list: InteractionBase[]\n      listeners: { [type: string]: Interact.Listener }\n      docEvents: Array<{ type: string, listener: Interact.Listener }>\n      pointerMoveTolerance: number\n    }\n    prevTouchTime: number\n  }\n}\n\ndeclare module '@interactjs/core/scope' {\n  interface SignalArgs {\n    'interactions:find': {\n      interaction: InteractionBase\n      searchDetails: SearchDetails\n    }\n  }\n}\n\nconst methodNames = [\n  'pointerDown', 'pointerMove', 'pointerUp',\n  'updatePointer', 'removePointer', 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n  const listeners = {} as any\n\n  for (const method of methodNames) {\n    listeners[method] = doOnInteractions(method, scope)\n  }\n\n  const pEventTypes = browser.pEventTypes\n  let docEvents: typeof scope.interactions.docEvents\n\n  if (domObjects.PointerEvent) {\n    docEvents = [\n      { type: pEventTypes.down,   listener: releasePointersOnRemovedEls },\n      { type: pEventTypes.down,   listener: listeners.pointerDown },\n      { type: pEventTypes.move,   listener: listeners.pointerMove },\n      { type: pEventTypes.up,     listener: listeners.pointerUp },\n      { type: pEventTypes.cancel, listener: listeners.pointerUp },\n    ]\n  }\n  else {\n    docEvents = [\n      { type: 'mousedown', listener: listeners.pointerDown },\n      { type: 'mousemove', listener: listeners.pointerMove },\n      { type: 'mouseup', listener: listeners.pointerUp },\n\n      { type: 'touchstart', listener: releasePointersOnRemovedEls },\n      { type: 'touchstart', listener: listeners.pointerDown },\n      { type: 'touchmove', listener: listeners.pointerMove },\n      { type: 'touchend', listener: listeners.pointerUp },\n      { type: 'touchcancel', listener: listeners.pointerUp },\n    ]\n  }\n\n  docEvents.push({\n    type: 'blur',\n    listener (event) {\n      for (const interaction of scope.interactions.list) {\n        interaction.documentBlur(event)\n      }\n    },\n  })\n\n  // for ignoring browser's simulated mouse events\n  scope.prevTouchTime = 0\n\n  scope.Interaction = class <T extends Interact.ActionName> extends InteractionBase<T> {\n    get pointerMoveTolerance () {\n      return scope.interactions.pointerMoveTolerance\n    }\n\n    set pointerMoveTolerance (value) {\n      scope.interactions.pointerMoveTolerance = value\n    }\n\n    _now () { return scope.now() }\n  }\n\n  scope.interactions = {\n    // all active and idle interactions\n    list: [],\n    new<T extends Interact.ActionName> (options: { pointerType?: string, scopeFire?: Scope['fire'] }) {\n      options.scopeFire = (name, arg) => scope.fire(name, arg)\n\n      const interaction = new scope.Interaction<T>(options as Required<typeof options>)\n\n      scope.interactions.list.push(interaction)\n      return interaction\n    },\n    listeners,\n    docEvents,\n    pointerMoveTolerance: 1,\n  }\n\n  function releasePointersOnRemovedEls () {\n    // for all inactive touch interactions with pointers down\n    for (const interaction of scope.interactions.list) {\n      if (!interaction.pointerIsDown ||\n        interaction.pointerType !== 'touch' ||\n        interaction._interacting) {\n        continue\n      }\n\n      // if a pointer is down on an element that is no longer in the DOM tree\n      for (const pointer of interaction.pointers) {\n        if (!scope.documents.some(({ doc }) => nodeContains(doc, pointer.downTarget))) {\n          // remove the pointer from the interaction\n          interaction.removePointer(pointer.pointer, pointer.event)\n        }\n      }\n    }\n  }\n\n  scope.usePlugin(interactablePreventDefault)\n}\n\nfunction doOnInteractions (method, scope) {\n  return function (event) {\n    const interactions = scope.interactions.list\n\n    const pointerType = pointerUtils.getPointerType(event)\n    const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n    const matches = [] // [ [pointer, interaction], ...]\n\n    if (/^touch/.test(event.type)) {\n      scope.prevTouchTime = scope.now()\n\n      for (const changedTouch of event.changedTouches) {\n        const pointer = changedTouch\n        const pointerId = pointerUtils.getPointerId(pointer)\n        const searchDetails: SearchDetails = {\n          pointer,\n          pointerId,\n          pointerType,\n          eventType: event.type,\n          eventTarget,\n          curEventTarget,\n          scope,\n        }\n        const interaction = getInteraction(searchDetails)\n\n        matches.push([\n          searchDetails.pointer,\n          searchDetails.eventTarget,\n          searchDetails.curEventTarget,\n          interaction,\n        ])\n      }\n    }\n    else {\n      let invalidPointer = false\n\n      if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n        // ignore mouse events while touch interactions are active\n        for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n          invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown\n        }\n\n        // try to ignore mouse events that are simulated by the browser\n        // after a touch event\n        invalidPointer = invalidPointer ||\n          (scope.now() - scope.prevTouchTime < 500) ||\n          // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n          event.timeStamp === 0\n      }\n\n      if (!invalidPointer) {\n        const searchDetails = {\n          pointer: event,\n          pointerId: pointerUtils.getPointerId(event),\n          pointerType,\n          eventType: event.type,\n          curEventTarget,\n          eventTarget,\n          scope,\n        }\n\n        const interaction = getInteraction(searchDetails)\n\n        matches.push([\n          searchDetails.pointer,\n          searchDetails.eventTarget,\n          searchDetails.curEventTarget,\n          interaction,\n        ])\n      }\n    }\n\n    // eslint-disable-next-line no-shadow\n    for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n      interaction[method](pointer, event, eventTarget, curEventTarget)\n    }\n  }\n}\n\nfunction getInteraction (searchDetails: SearchDetails) {\n  const { pointerType, scope } = searchDetails\n\n  const foundInteraction = finder.search(searchDetails)\n  const signalArg = { interaction: foundInteraction, searchDetails }\n\n  scope.fire('interactions:find', signalArg)\n\n  return signalArg.interaction || scope.interactions.new({ pointerType })\n}\n\nfunction onDocSignal<T extends 'scope:add-document' | 'scope:remove-document'> ({ doc, scope, options }: Interact.SignalArgs[T], eventMethodName: 'add' | 'remove') {\n  const { docEvents } = scope.interactions\n  const eventMethod = events[eventMethodName]\n\n  if (scope.browser.isIOS && !options.events) {\n    options.events = { passive: false }\n  }\n\n  // delegate event listener\n  for (const eventType in events.delegatedEvents) {\n    eventMethod(doc, eventType, events.delegateListener)\n    eventMethod(doc, eventType, events.delegateUseCapture, true)\n  }\n\n  const eventOptions = options && options.events\n\n  for (const { type, listener } of docEvents) {\n    eventMethod(doc, type, listener, eventOptions)\n  }\n}\n\nconst interactions: Interact.Plugin = {\n  id: 'core/interactions',\n  install,\n  listeners: {\n    'scope:add-document': arg => onDocSignal(arg, 'add'),\n    'scope:remove-document': arg => onDocSignal(arg, 'remove'),\n    'interactable:unset': ({ interactable }, scope) => {\n      // Stop and destroy related interactions when an Interactable is unset\n      for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n        const interaction = scope.interactions.list[i]\n\n        if (interaction.interactable !== interactable) { continue }\n\n        interaction.stop()\n        scope.fire('interactions:destroy', { interaction })\n        interaction.destroy()\n\n        if (scope.interactions.list.length > 2) {\n          scope.interactions.list.splice(i, 1)\n        }\n      }\n    },\n  },\n  onDocSignal,\n  doOnInteractions,\n  methodNames,\n}\n\nexport default interactions\n","/** @module interact */\n\nimport browser from '@interactjs/utils/browser'\nimport events from '@interactjs/utils/events'\nimport * as utils from '@interactjs/utils/index'\nimport Interactable from './Interactable'\nimport { Options } from './defaultOptions'\nimport { isNonNativeEvent } from './scope'\n\nexport interface InteractStatic {\n  (target: Interact.Target, options?: Options): Interactable\n}\n\nexport class InteractStatic {\n  // expose the functions used to calculate multi-touch properties\n  getPointerAverage  = utils.pointer.pointerAverage\n  getTouchBBox = utils.pointer.touchBBox\n  getTouchDistance = utils.pointer.touchDistance\n  getTouchAngle = utils.pointer.touchAngle\n\n  getElementRect = utils.dom.getElementRect\n  getElementClientRect = utils.dom.getElementClientRect\n  matchesSelector = utils.dom.matchesSelector\n  closest = utils.dom.closest\n\n  globalEvents: any = {}\n\n  dynamicDrop: (newValue?: boolean) => boolean | this\n\n  // eslint-disable-next-line no-undef\n  version = process.env.npm_package_version\n  interact: InteractStatic\n\n  constructor (private scope: Interact.Scope) {\n    const { prototype } = this.constructor\n\n    /**\n     * ```js\n     * interact('#draggable').draggable(true)\n     *\n     * var rectables = interact('rect')\n     * rectables\n     *   .gesturable(true)\n     *   .on('gesturemove', function (event) {\n     *       // ...\n     *   })\n     * ```\n     *\n     * The methods of this variable can be used to set elements as interactables\n     * and also to change various default settings.\n     *\n     * Calling it as a function and passing an element or a valid CSS selector\n     * string returns an Interactable object which has various methods to configure\n     * it.\n     *\n     * @global\n     *\n     * @param {Element | string} target The HTML or SVG Element to interact with\n     * or CSS selector\n     * @return {Interactable}\n     */\n    const interact = ((target, options) => {\n      let interactable = scope.interactables.get(target, options)\n\n      if (!interactable) {\n        interactable = scope.interactables.new(target, options)\n        interactable.events.global = this.globalEvents\n      }\n\n      return interactable\n    }) as InteractStatic\n\n    for (const key of Object.getOwnPropertyNames(this.constructor.prototype)) {\n      interact[key] = prototype[key]\n    }\n\n    utils.extend(interact as any, this)\n    interact.constructor = this.constructor\n    this.interact = interact\n\n    return interact\n  }\n\n  /**\n   * Use a plugin\n   *\n   * @alias module:interact.use\n   *\n   * @param {Object} plugin\n   * @param {function} plugin.install\n   * @return {InteractStatic}\n   */\n  use (plugin: Interact.Plugin, options?: { [key: string]: any }) {\n    this.scope.usePlugin(plugin, options)\n\n    return this\n  }\n\n  /**\n   * Check if an element or selector has been set with the {@link interact}\n   * function\n   *\n   * @alias module:interact.isSet\n   *\n   * @param {Element} element The Element being searched for\n   * @return {boolean} Indicates if the element or CSS selector was previously\n   * passed to interact\n   */\n  isSet (target: Interact.Element, options?: any) {\n    return !!this.scope.interactables.get(target, options && options.context)\n  }\n\n  /**\n   * Add a global listener for an InteractEvent or adds a DOM event to `document`\n   *\n   * @alias module:interact.on\n   *\n   * @param {string | array | object} type The types of events to listen for\n   * @param {function} listener The function event (s)\n   * @param {object | boolean} [options] object or useCapture flag for\n   * addEventListener\n   * @return {object} interact\n   */\n  on (type: string | Interact.EventTypes, listener: Interact.ListenersArg, options?: object) {\n    if (utils.is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/)\n    }\n\n    if (utils.is.array(type)) {\n      for (const eventType of (type as any[])) {\n        this.on(eventType, listener, options)\n      }\n\n      return this\n    }\n\n    if (utils.is.object(type)) {\n      for (const prop in type) {\n        this.on(prop, (type as any)[prop], listener)\n      }\n\n      return this\n    }\n\n    // if it is an InteractEvent type, add listener to globalEvents\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      // if this type of event was never bound\n      if (!this.globalEvents[type]) {\n        this.globalEvents[type] = [listener]\n      }\n      else {\n        this.globalEvents[type].push(listener)\n      }\n    }\n    // If non InteractEvent type, addEventListener to document\n    else {\n      events.add(this.scope.document, type, listener as Interact.Listener, { options })\n    }\n\n    return this\n  }\n\n  /**\n   * Removes a global InteractEvent listener or DOM event from `document`\n   *\n   * @alias module:interact.off\n   *\n   * @param {string | array | object} type The types of events that were listened\n   * for\n   * @param {function} listener The listener function to be removed\n   * @param {object | boolean} options [options] object or useCapture flag for\n   * removeEventListener\n   * @return {object} interact\n   */\n  off (type: Interact.EventTypes, listener: any, options?: object) {\n    if (utils.is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/)\n    }\n\n    if (utils.is.array(type)) {\n      for (const eventType of type) {\n        this.off(eventType, listener, options)\n      }\n\n      return this\n    }\n\n    if (utils.is.object(type)) {\n      for (const prop in type) {\n        this.off(prop, type[prop], listener)\n      }\n\n      return this\n    }\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      let index: number\n\n      if (type in this.globalEvents &&\n          (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n        this.globalEvents[type].splice(index, 1)\n      }\n    }\n    else {\n      events.remove(this.scope.document, type, listener, options)\n    }\n\n    return this\n  }\n\n  debug () {\n    return this.scope\n  }\n\n  /**\n   * @alias module:interact.supportsTouch\n   *\n   * @return {boolean} Whether or not the browser supports touch input\n   */\n  supportsTouch () {\n    return browser.supportsTouch\n  }\n\n  /**\n   * @alias module:interact.supportsPointerEvent\n   *\n   * @return {boolean} Whether or not the browser supports PointerEvents\n   */\n  supportsPointerEvent () {\n    return browser.supportsPointerEvent\n  }\n\n  /**\n   * Cancels all interactions (end events are not fired)\n   *\n   * @alias module:interact.stop\n   *\n   * @return {object} interact\n   */\n  stop () {\n    for (const interaction of this.scope.interactions.list) {\n      interaction.stop()\n    }\n\n    return this\n  }\n\n  /**\n   * Returns or sets the distance the pointer must be moved before an action\n   * sequence occurs. This also affects tolerance for tap events.\n   *\n   * @alias module:interact.pointerMoveTolerance\n   *\n   * @param {number} [newValue] The movement from the start position must be greater than this value\n   * @return {interact | number}\n   */\n  pointerMoveTolerance (newValue?: number) {\n    if (utils.is.number(newValue)) {\n      this.scope.interactions.pointerMoveTolerance = newValue\n\n      return this\n    }\n\n    return this.scope.interactions.pointerMoveTolerance\n  }\n\n  addDocument (doc: Document, options?: object) {\n    this.scope.addDocument(doc, options)\n  }\n\n  removeDocument (doc: Document) {\n    this.scope.removeDocument(doc)\n  }\n}\n\nexport default InteractStatic\n","export default (thing: any) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n  realWindow: undefined as Window,\n  window: undefined as Window,\n  getWindow,\n  init,\n}\n\nexport function init (window: Window & { wrap?: (...args: any[]) => any }) {\n  // get wrapped window if using Shadow DOM polyfill\n\n  win.realWindow = window\n\n  // create a TextNode\n  const el = window.document.createTextNode('')\n\n  // check if it's wrapped by a polyfill\n  if (el.ownerDocument !== window.document &&\n      typeof window.wrap === 'function' &&\n    window.wrap(el) === el) {\n    // use wrapped window\n    window = window.wrap(window)\n  }\n\n  win.window = window\n}\n\nif (typeof window === 'undefined') {\n  win.window     = undefined\n  win.realWindow = undefined\n}\nelse {\n  init(window)\n}\n\nexport function getWindow (node: any) {\n  if (isWindow(node)) {\n    return node\n  }\n\n  const rootNode = (node.ownerDocument || node)\n\n  return rootNode.defaultView || win.window\n}\n\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n  thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n  object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n  !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any[]) => any =>\n  typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n  typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n  typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n  typeof thing === 'string'\n\nexport const element = (thing: any): thing is Interact.Element => {\n  if (!thing || (typeof thing !== 'object')) { return false }\n\n  const _window = win.getWindow(thing) || win.window\n\n  return (/object|function/.test(typeof _window.Element)\n    ? thing instanceof _window.Element // DOM2\n    : thing.nodeType === 1 && typeof thing.nodeName === 'string')\n}\n\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n  object(thing) &&\n  !!thing.constructor &&\n  /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = <T extends unknown>(thing: any): thing is T[] =>\n  (object(thing) &&\n  (typeof thing.length !== 'undefined') &&\n  func(thing.splice))\n","import Scope from '@interactjs/core/scope'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n  interface Interactable {\n    draggable: DraggableMethod\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface ActionDefaults {\n    drag: Interact.DraggableOptions\n  }\n}\n\ndeclare module '@interactjs/core/scope' {\n  interface ActionMap {\n    drag?: typeof drag\n  }\n}\n\nexport type DragEvent = Interact.InteractEvent<'drag'>\n\nexport type DraggableMethod = Interact.ActionMethod<Interact.DraggableOptions>\n\nfunction install (scope: Scope) {\n  const {\n    actions,\n    Interactable,\n    defaults,\n  } = scope\n\n  Interactable.prototype.draggable = drag.draggable\n\n  actions.map.drag = drag\n  actions.methodDict.drag = 'draggable'\n\n  defaults.actions.drag = drag.defaults\n}\n\nfunction beforeMove ({ interaction }) {\n  if (interaction.prepared.name !== 'drag') { return }\n\n  const axis = interaction.prepared.axis\n\n  if (axis === 'x') {\n    interaction.coords.cur.page.y   = interaction.coords.start.page.y\n    interaction.coords.cur.client.y = interaction.coords.start.client.y\n\n    interaction.coords.velocity.client.y = 0\n    interaction.coords.velocity.page.y   = 0\n  }\n  else if (axis === 'y') {\n    interaction.coords.cur.page.x   = interaction.coords.start.page.x\n    interaction.coords.cur.client.x = interaction.coords.start.client.x\n\n    interaction.coords.velocity.client.x = 0\n    interaction.coords.velocity.page.x   = 0\n  }\n}\n\nfunction move ({ iEvent, interaction }) {\n  if (interaction.prepared.name !== 'drag') { return }\n\n  const axis = interaction.prepared.axis\n\n  if (axis === 'x' || axis === 'y') {\n    const opposite = axis === 'x' ? 'y' : 'x'\n\n    iEvent.page[opposite]   = interaction.coords.start.page[opposite]\n    iEvent.client[opposite] = interaction.coords.start.client[opposite]\n    iEvent.delta[opposite] = 0\n  }\n}\n\n/**\n * ```js\n * interact(element).draggable({\n *     onstart: function (event) {},\n *     onmove : function (event) {},\n *     onend  : function (event) {},\n *\n *     // the axis in which the first movement must be\n *     // for the drag sequence to start\n *     // 'xy' by default - any direction\n *     startAxis: 'x' || 'y' || 'xy',\n *\n *     // 'xy' by default - don't restrict to one axis (move in any direction)\n *     // 'x' or 'y' to restrict movement to either axis\n *     // 'start' to restrict movement to the axis the drag started in\n *     lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n *     // max number of drags that can happen concurrently\n *     // with elements of this Interactable. Infinity by default\n *     max: Infinity,\n *\n *     // max number of drags that can target the same element+Interactable\n *     // 1 by default\n *     maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nconst draggable: DraggableMethod = function draggable (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): any {\n  if (is.object(options)) {\n    this.options.drag.enabled = options.enabled !== false\n    this.setPerAction('drag', options)\n    this.setOnEvents('drag', options)\n\n    if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n      this.options.drag.lockAxis = options.lockAxis\n    }\n    if (/^(xy|x|y)$/.test(options.startAxis)) {\n      this.options.drag.startAxis = options.startAxis\n    }\n\n    return this\n  }\n\n  if (is.bool(options)) {\n    this.options.drag.enabled = options\n\n    return this\n  }\n\n  return this.options.drag\n}\n\nconst drag: Interact.Plugin = {\n  id: 'actions/drag',\n  install,\n  listeners: {\n    'interactions:before-action-move': beforeMove,\n    'interactions:action-resume': beforeMove,\n\n    // dragmove\n    'interactions:action-move': move,\n    'auto-start:check': arg => {\n      const { interaction, interactable, buttons } = arg\n      const dragOptions = interactable.options.drag\n\n      if (\n        !(dragOptions && dragOptions.enabled) ||\n        // check mouseButton setting if the pointer is down\n        (interaction.pointerIsDown &&\n         /mouse|pointer/.test(interaction.pointerType) &&\n       (buttons & interactable.options.drag.mouseButtons) === 0)\n      ) {\n        return undefined\n      }\n\n      arg.action = {\n        name: 'drag',\n        axis: (dragOptions.lockAxis === 'start'\n          ? dragOptions.startAxis\n          : dragOptions.lockAxis),\n      }\n\n      return false\n    },\n  },\n  draggable,\n  beforeMove,\n  move,\n  defaults: {\n    startAxis : 'xy',\n    lockAxis  : 'xy',\n  } as Interact.DropzoneOptions,\n\n  getCursor () {\n    return 'move'\n  },\n}\n\nexport default drag\n","type Filter<T> = (element: T, index: number, array: T[]) => boolean\n\nexport const contains = <T>(array: T[], target: T) => array.indexOf(target) !== -1\n\nexport const remove = <T>(array: T[], target: T) => array.splice(array.indexOf(target), 1)\n\nexport const merge = <T, U>(target: Array<T | U>, source: U[]) => {\n  for (const item of source) {\n    target.push(item)\n  }\n\n  return target\n}\n\nexport const from = <T = any>(source: ArrayLike<T>) => merge([] as T[], source as T[])\n\nexport const findIndex = <T>(array: T[], func: Filter<T>) => {\n  for (let i = 0; i < array.length; i++) {\n    if (func(array[i], i, array)) {\n      return i\n    }\n  }\n\n  return -1\n}\n\nexport const find = <T = any>(array: T[], func: Filter<T>) => array[findIndex(array, func)]\n","const domObjects: {\n  init: any\n  document: Document\n  DocumentFragment: typeof DocumentFragment\n  SVGElement: typeof SVGElement\n  SVGSVGElement: typeof SVGSVGElement\n  SVGElementInstance: any\n  Element: typeof Element\n  HTMLElement: typeof HTMLElement\n  Event: typeof Event\n  Touch: typeof Touch\n  PointerEvent: typeof PointerEvent\n} =\n{\n  init,\n  document: null,\n  DocumentFragment: null,\n  SVGElement: null,\n  SVGSVGElement: null,\n  SVGElementInstance: null,\n  Element: null,\n  HTMLElement: null,\n  Event: null,\n  Touch: null,\n  PointerEvent: null,\n}\n\nfunction blank () {}\n\nexport default domObjects\n\nfunction init (window: Window) {\n  const win = window as any\n\n  domObjects.document           = win.document\n  domObjects.DocumentFragment   = win.DocumentFragment   || blank\n  domObjects.SVGElement         = win.SVGElement         || blank\n  domObjects.SVGSVGElement      = win.SVGSVGElement      || blank\n  domObjects.SVGElementInstance = win.SVGElementInstance || blank\n  domObjects.Element            = win.Element            || blank\n  domObjects.HTMLElement        = win.HTMLElement        || domObjects.Element\n\n  domObjects.Event        = win.Event\n  domObjects.Touch        = win.Touch || blank\n  domObjects.PointerEvent = (win.PointerEvent || win.MSPointerEvent)\n}\n","import domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nconst browser = {\n  init,\n  supportsTouch: null as boolean,\n  supportsPointerEvent: null as boolean,\n  isIOS7: null as boolean,\n  isIOS: null as boolean,\n  isIe9: null as boolean,\n  isOperaMobile: null as boolean,\n  prefixedMatchesSelector: null as string,\n  pEventTypes: null as {\n    up: string\n    down: string\n    over: string\n    out: string\n    move: string\n    cancel: string\n  },\n  wheelEvent: null as string,\n}\n\nfunction init (window: any) {\n  const Element = domObjects.Element\n  const navigator  = win.window.navigator\n\n  // Does the browser support touch input?\n  browser.supportsTouch = ('ontouchstart' in window) ||\n    (is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch)\n\n  // Does the browser support PointerEvents\n  browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent\n\n  browser.isIOS = (/iP(hone|od|ad)/.test(navigator.platform))\n\n  // scrolling doesn't change the result of getClientRects on iOS 7\n  browser.isIOS7 = (/iP(hone|od|ad)/.test(navigator.platform) &&\n           /OS 7[^\\d]/.test(navigator.appVersion))\n\n  browser.isIe9 = /MSIE 9/.test(navigator.userAgent)\n\n  // Opera Mobile must be handled differently\n  browser.isOperaMobile = (navigator.appName === 'Opera' &&\n    browser.supportsTouch &&\n    /Presto/.test(navigator.userAgent))\n\n  // prefix matchesSelector\n  browser.prefixedMatchesSelector = 'matches' in Element.prototype\n    ? 'matches'\n    : 'webkitMatchesSelector' in Element.prototype\n      ? 'webkitMatchesSelector'\n      : 'mozMatchesSelector' in Element.prototype\n        ? 'mozMatchesSelector'\n        : 'oMatchesSelector' in Element.prototype\n          ? 'oMatchesSelector'\n          : 'msMatchesSelector'\n\n  browser.pEventTypes = (browser.supportsPointerEvent\n    ? (domObjects.PointerEvent === window.MSPointerEvent\n      ? {\n        up:     'MSPointerUp',\n        down:   'MSPointerDown',\n        over:   'mouseover',\n        out:    'mouseout',\n        move:   'MSPointerMove',\n        cancel: 'MSPointerCancel',\n      }\n      : {\n        up:     'pointerup',\n        down:   'pointerdown',\n        over:   'pointerover',\n        out:    'pointerout',\n        move:   'pointermove',\n        cancel: 'pointercancel',\n      })\n    : null)\n\n  // because Webkit and Opera still use 'mousewheel' event type\n  browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import * as arr from './arr'\nimport * as is from './is'\n\n// tslint:disable-next-line ban-types\nexport default function clone<T extends Object> (source: T): Partial<T> {\n  const dest = {} as Partial<T>\n\n  for (const prop in source) {\n    const value = source[prop]\n\n    if (is.plainObject(value)) {\n      dest[prop] = clone(value) as any\n    }\n    else if (is.array(value)) {\n      dest[prop] = arr.from(value) as typeof value\n    }\n    else {\n      dest[prop] = value\n    }\n  }\n\n  return dest\n}\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win, { getWindow } from './window'\n\nexport function nodeContains (parent: Node | Interact.EventTarget, child: Node | Interact.EventTarget) {\n  while (child) {\n    if (child === parent) {\n      return true\n    }\n\n    child = (child as Node).parentNode\n  }\n\n  return false\n}\n\nexport function closest (element: Node, selector: string) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) { return element }\n\n    element = parentNode(element)\n  }\n\n  return null\n}\n\nexport function parentNode (node: Node | Document) {\n  let parent = node.parentNode\n\n  if (is.docFrag(parent)) {\n    // skip past #shado-root fragments\n    // tslint:disable-next-line\n    while ((parent = (parent as any).host) && is.docFrag(parent)) {\n      continue\n    }\n\n    return parent\n  }\n\n  return parent\n}\n\nexport function matchesSelector (element: Interact.Element, selector: string) {\n  // remove /deep/ from selectors if shadowDOM polyfill is used\n  if (win.window !== win.realWindow) {\n    selector = selector.replace(/\\/deep\\//g, ' ')\n  }\n\n  return element[browser.prefixedMatchesSelector](selector)\n}\n\nconst getParent = el => el.parentNode ? el.parentNode : el.host\n\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements: Interact.Element[] | NodeListOf<Element>) {\n  let deepestZoneParents = []\n  let deepestZone = elements[0]\n  let index = deepestZone ? 0 : -1\n  let i\n  let n\n\n  for (i = 1; i < elements.length; i++) {\n    const dropzone = elements[i]\n\n    // an element might belong to multiple selector dropzones\n    if (!dropzone || dropzone === deepestZone) {\n      continue\n    }\n\n    if (!deepestZone) {\n      deepestZone = dropzone\n      index = i\n      continue\n    }\n\n    // check if the deepest or current are document.documentElement or document.rootElement\n    // - if the current dropzone is, do nothing and continue\n    if (dropzone.parentNode === dropzone.ownerDocument) {\n      continue\n    }\n    // - if deepest is, update with the current dropzone and continue to next\n    else if (deepestZone.parentNode === dropzone.ownerDocument) {\n      deepestZone = dropzone\n      index = i\n      continue\n    }\n\n    // compare zIndex of siblings\n    if (dropzone.parentNode === deepestZone.parentNode) {\n      const deepestZIndex = parseInt(getWindow(deepestZone).getComputedStyle(deepestZone).zIndex, 10) || 0\n      const dropzoneZIndex = parseInt(getWindow(dropzone).getComputedStyle(dropzone).zIndex, 10) || 0\n\n      if (dropzoneZIndex >= deepestZIndex) {\n        deepestZone = dropzone\n        index = i\n      }\n\n      continue\n    }\n\n    // populate the ancestry array for the latest deepest dropzone\n    if (!deepestZoneParents.length) {\n      let parent = deepestZone\n      let parentParent\n\n      while ((parentParent = getParent(parent)) && parentParent !== parent.ownerDocument) {\n        deepestZoneParents.unshift(parent)\n        parent = parentParent\n      }\n    }\n\n    let parent\n\n    // if this element is an svg element and the current deepest is an\n    // HTMLElement\n    if (deepestZone instanceof domObjects.HTMLElement &&\n        dropzone instanceof domObjects.SVGElement &&\n        !(dropzone instanceof domObjects.SVGSVGElement)) {\n      if (dropzone === deepestZone.parentNode) {\n        continue\n      }\n\n      parent = dropzone.ownerSVGElement\n    }\n    else {\n      parent = dropzone\n    }\n\n    const dropzoneParents = []\n\n    while (parent.parentNode !== parent.ownerDocument) {\n      dropzoneParents.unshift(parent)\n      parent = getParent(parent)\n    }\n\n    n = 0\n\n    // get (position of last common ancestor) + 1\n    while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n      n++\n    }\n\n    const parents = [\n      dropzoneParents[n - 1],\n      dropzoneParents[n],\n      deepestZoneParents[n],\n    ]\n\n    let child = parents[0].lastChild\n\n    while (child) {\n      if (child === parents[1]) {\n        deepestZone = dropzone\n        index = i\n        deepestZoneParents = dropzoneParents\n\n        break\n      }\n      else if (child === parents[2]) {\n        break\n      }\n\n      child = child.previousSibling\n    }\n  }\n\n  return index\n}\n\nexport function matchesUpTo (element: Interact.Element, selector: string, limit: Node) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return true\n    }\n\n    element = parentNode(element) as Interact.Element\n\n    if (element === limit) {\n      return matchesSelector(element, selector)\n    }\n  }\n\n  return false\n}\n\nexport function getActualElement (element: Interact.Element) {\n  return (element instanceof domObjects.SVGElementInstance\n    ? (element as SVGElement).correspondingUseElement\n    : element)\n}\n\nexport function getScrollXY (relevantWindow) {\n  relevantWindow = relevantWindow || win.window\n  return {\n    x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n    y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop,\n  }\n}\n\nexport function getElementClientRect (element: Interact.Element) {\n  const clientRect = (element instanceof domObjects.SVGElement\n    ? element.getBoundingClientRect()\n    : element.getClientRects()[0])\n\n  return clientRect && {\n    left  : clientRect.left,\n    right : clientRect.right,\n    top   : clientRect.top,\n    bottom: clientRect.bottom,\n    width : clientRect.width  || clientRect.right  - clientRect.left,\n    height: clientRect.height || clientRect.bottom - clientRect.top,\n  }\n}\n\nexport function getElementRect (element: Interact.Element) {\n  const clientRect = getElementClientRect(element)\n\n  if (!browser.isIOS7 && clientRect) {\n    const scroll = getScrollXY(win.getWindow(element))\n\n    clientRect.left   += scroll.x\n    clientRect.right  += scroll.x\n    clientRect.top    += scroll.y\n    clientRect.bottom += scroll.y\n  }\n\n  return clientRect\n}\n\nexport function getPath (node: Node | Document) {\n  const path = []\n\n  while (node) {\n    path.push(node)\n    node = parentNode(node)\n  }\n\n  return path\n}\n\nexport function trySelector (value) {\n  if (!is.string(value)) { return false }\n\n  // an exception will be raised if it is invalid\n  domObjects.document.querySelector(value)\n  return true\n}\n","export interface PointerExtend {\n  webkit: RegExp\n  [prefix: string]: RegExp\n}\n\nfunction pointerExtend (dest, source) {\n  for (const prop in source) {\n    const prefixedPropREs = pointerExtend.prefixedPropREs\n    let deprecated = false\n\n    // skip deprecated prefixed properties\n    for (const vendor in prefixedPropREs) {\n      if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n        deprecated = true\n        break\n      }\n    }\n\n    if (!deprecated && typeof source[prop] !== 'function') {\n      dest[prop] = source[prop]\n    }\n  }\n  return dest\n}\n\npointerExtend.prefixedPropREs = {\n  webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n  moz: /(Pressure)$/,\n}\n\nexport default pointerExtend\n","export default (x: number, y: number) =>  Math.sqrt(x * x + y * y)\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nexport function copyCoords (dest: Interact.CoordsSetMember, src: Interact.CoordsSetMember) {\n  dest.page = dest.page || {} as any\n  dest.page.x = src.page.x\n  dest.page.y = src.page.y\n\n  dest.client = dest.client || {} as any\n  dest.client.x = src.client.x\n  dest.client.y = src.client.y\n\n  dest.timeStamp = src.timeStamp\n}\n\nexport function setCoordDeltas (targetObj: Interact.CoordsSetMember, prev: Interact.CoordsSetMember, cur: Interact.CoordsSetMember) {\n  targetObj.page.x    = cur.page.x    - prev.page.x\n  targetObj.page.y    = cur.page.y    - prev.page.y\n  targetObj.client.x  = cur.client.x  - prev.client.x\n  targetObj.client.y  = cur.client.y  - prev.client.y\n  targetObj.timeStamp = cur.timeStamp - prev.timeStamp\n}\n\nexport function setCoordVelocity (targetObj: Interact.CoordsSetMember, delta: Interact.CoordsSetMember) {\n  const dt = Math.max(delta.timeStamp / 1000, 0.001)\n\n  targetObj.page.x   = delta.page.x / dt\n  targetObj.page.y   = delta.page.y / dt\n  targetObj.client.x = delta.client.x / dt\n  targetObj.client.y = delta.client.y / dt\n  targetObj.timeStamp = dt\n}\n\nexport function setZeroCoords (targetObj: Interact.CoordsSetMember) {\n  targetObj.page.x = 0\n  targetObj.page.y = 0\n  targetObj.client.x = 0\n  targetObj.client.y = 0\n}\n\nexport function isNativePointer  (pointer: any) {\n  return (pointer instanceof dom.Event || pointer instanceof dom.Touch)\n}\n\n// Get specified X/Y coords for mouse or event.touches[0]\nexport function getXY (type, pointer, xy) {\n  xy = xy || {}\n  type = type || 'page'\n\n  xy.x = pointer[type + 'X']\n  xy.y = pointer[type + 'Y']\n\n  return xy\n}\n\nexport function getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.Point) {\n  page = page || { x: 0, y: 0 }\n\n  // Opera Mobile handles the viewport and scrolling oddly\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    getXY('screen', pointer, page)\n\n    page.x += window.scrollX\n    page.y += window.scrollY\n  }\n  else {\n    getXY('page', pointer, page)\n  }\n\n  return page\n}\n\nexport function getClientXY (pointer, client) {\n  client = client || {}\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    // Opera Mobile handles the viewport and scrolling oddly\n    getXY('screen', pointer, client)\n  }\n  else {\n    getXY('client', pointer, client)\n  }\n\n  return client\n}\n\nexport function getPointerId (pointer) {\n  return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n}\n\nexport function setCoords (targetObj, pointers: any[], timeStamp: number) {\n  const pointer = (pointers.length > 1\n    ? pointerAverage(pointers)\n    : pointers[0])\n\n  const tmpXY = {} as { x: number, y: number }\n\n  getPageXY(pointer, tmpXY)\n  targetObj.page.x = tmpXY.x\n  targetObj.page.y = tmpXY.y\n\n  getClientXY(pointer, tmpXY)\n  targetObj.client.x = tmpXY.x\n  targetObj.client.y = tmpXY.y\n\n  targetObj.timeStamp = timeStamp\n}\n\nexport function getTouchPair (event) {\n  const touches = []\n\n  // array of touches is supplied\n  if (is.array(event)) {\n    touches[0] = event[0]\n    touches[1] = event[1]\n  }\n  // an event\n  else {\n    if (event.type === 'touchend') {\n      if (event.touches.length === 1) {\n        touches[0] = event.touches[0]\n        touches[1] = event.changedTouches[0]\n      }\n      else if (event.touches.length === 0) {\n        touches[0] = event.changedTouches[0]\n        touches[1] = event.changedTouches[1]\n      }\n    }\n    else {\n      touches[0] = event.touches[0]\n      touches[1] = event.touches[1]\n    }\n  }\n\n  return touches\n}\n\nexport function pointerAverage (pointers: PointerEvent[] | Event[]) {\n  const average = {\n    pageX  : 0,\n    pageY  : 0,\n    clientX: 0,\n    clientY: 0,\n    screenX: 0,\n    screenY: 0,\n  }\n\n  for (const pointer of pointers) {\n    for (const prop in average) {\n      average[prop] += pointer[prop]\n    }\n  }\n  for (const prop in average) {\n    average[prop] /= pointers.length\n  }\n\n  return average\n}\n\nexport function touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n  if (!(event as any).length &&\n      !((event as TouchEvent).touches &&\n        (event as TouchEvent).touches.length > 1)) {\n    return null\n  }\n\n  const touches = getTouchPair(event)\n  const minX = Math.min(touches[0].pageX, touches[1].pageX)\n  const minY = Math.min(touches[0].pageY, touches[1].pageY)\n  const maxX = Math.max(touches[0].pageX, touches[1].pageX)\n  const maxY = Math.max(touches[0].pageY, touches[1].pageY)\n\n  return {\n    x: minX,\n    y: minY,\n    left: minX,\n    top: minY,\n    right: maxX,\n    bottom: maxY,\n    width: maxX - minX,\n    height: maxY - minY,\n  }\n}\n\nexport function touchDistance (event, deltaSource) {\n  const sourceX = deltaSource + 'X'\n  const sourceY = deltaSource + 'Y'\n  const touches = getTouchPair(event)\n\n  const dx = touches[0][sourceX] - touches[1][sourceX]\n  const dy = touches[0][sourceY] - touches[1][sourceY]\n\n  return hypot(dx, dy)\n}\n\nexport function touchAngle (event, deltaSource) {\n  const sourceX = deltaSource + 'X'\n  const sourceY = deltaSource + 'Y'\n  const touches = getTouchPair(event)\n  const dx = touches[1][sourceX] - touches[0][sourceX]\n  const dy = touches[1][sourceY] - touches[0][sourceY]\n  const angle = 180 * Math.atan2(dy, dx) / Math.PI\n\n  return  angle\n}\n\nexport function getPointerType (pointer) {\n  return is.string(pointer.pointerType)\n    ? pointer.pointerType\n    : is.number(pointer.pointerType)\n      ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType]\n      // if the PointerEvent API isn't available, then the \"pointer\" must\n      // be either a MouseEvent, TouchEvent, or Touch object\n      : /touch/.test(pointer.type) || pointer instanceof dom.Touch\n        ? 'touch'\n        : 'mouse'\n}\n\n// [ event.target, event.currentTarget ]\nexport function getEventTargets (event) {\n  const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n  return [\n    domUtils.getActualElement(path ? path[0] : event.target),\n    domUtils.getActualElement(event.currentTarget),\n  ]\n}\n\nexport function newCoords (): Interact.CoordsSetMember {\n  return {\n    page     : { x: 0, y: 0 },\n    client   : { x: 0, y: 0 },\n    timeStamp: 0,\n  }\n}\n\nexport function coordsToEvent (coords: MockCoords) {\n  const event = {\n    coords,\n    get page () { return this.coords.page },\n    get client () { return this.coords.client },\n    get timeStamp () { return this.coords.timeStamp },\n    get pageX () { return this.coords.page.x },\n    get pageY () { return this.coords.page.y },\n    get clientX () { return this.coords.client.x },\n    get clientY () { return this.coords.client.y },\n    get pointerId () { return this.coords.pointerId },\n    get target () { return this.coords.target },\n    get type () { return this.coords.type },\n    get pointerType () { return this.coords.pointerType },\n    get buttons () { return this.coords.buttons },\n    preventDefault () {},\n  }\n\n  return event as typeof event & Interact.PointerType & Interact.PointerEventType\n}\n\nexport interface MockCoords {\n  page: Interact.Point\n  client: Interact.Point\n  timeStamp?: number\n  pointerId?: any\n  target?: any\n  type?: string\n  pointerType?: string\n  buttons?: number\n}\n\nexport { pointerExtend }\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport * as pointerUtils from './pointerUtils'\n\ntype Listener = (event: Event | FakeEvent) => any\n\nconst elements: EventTarget[] = []\nconst targets: Array<{\n  events: { [type: string]: Listener[] }\n  typeCount: number\n}> = []\n\nconst delegatedEvents: {\n  [type: string]: {\n    selectors: string[]\n    contexts: Node[]\n    listeners: Array<Array<[Listener, boolean, boolean]>>\n  }\n} = {}\nconst documents: Document[] = []\n\nfunction add (element: EventTarget, type: string, listener: Listener, optionalArg?: boolean | any) {\n  const options = getOptions(optionalArg)\n  let elementIndex = elements.indexOf(element)\n  let target = targets[elementIndex]\n\n  if (!target) {\n    target = {\n      events: {},\n      typeCount: 0,\n    }\n\n    elementIndex = elements.push(element) - 1\n    targets.push(target)\n  }\n\n  if (!target.events[type]) {\n    target.events[type] = []\n    target.typeCount++\n  }\n\n  if (element.removeEventListener && !contains(target.events[type], listener)) {\n    element.addEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n    target.events[type].push(listener)\n  }\n}\n\nfunction remove (element: EventTarget, type: string, listener?: 'all' | Listener, optionalArg?: boolean | any) {\n  const options = getOptions(optionalArg)\n  const elementIndex = elements.indexOf(element)\n  const target = targets[elementIndex]\n\n  if (!target || !target.events) {\n    return\n  }\n\n  if (type === 'all') {\n    for (type in target.events) {\n      if (target.events.hasOwnProperty(type)) {\n        remove(element, type, 'all')\n      }\n    }\n    return\n  }\n\n  if (target.events[type]) {\n    const len = target.events[type].length\n\n    if (listener === 'all') {\n      for (let i = 0; i < len; i++) {\n        remove(element, type, target.events[type][i], options)\n      }\n      return\n    }\n    else {\n      for (let i = 0; i < len; i++) {\n        if (element.removeEventListener && target.events[type][i] === listener) {\n          element.removeEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n          target.events[type].splice(i, 1)\n\n          break\n        }\n      }\n    }\n\n    if (target.events[type] && target.events[type].length === 0) {\n      (target.events[type] as any) = null\n      target.typeCount--\n    }\n  }\n\n  if (!target.typeCount) {\n    targets.splice(elementIndex, 1)\n    elements.splice(elementIndex, 1)\n  }\n}\n\nfunction addDelegate (selector: string, context: Node, type: string, listener: Listener, optionalArg?: any) {\n  const options = getOptions(optionalArg)\n  if (!delegatedEvents[type]) {\n    delegatedEvents[type] = {\n      contexts : [],\n      listeners: [],\n      selectors: [],\n    }\n\n    // add delegate listener functions\n    for (const doc of documents) {\n      add(doc, type, delegateListener)\n      add(doc, type, delegateUseCapture, true)\n    }\n  }\n\n  const delegated = delegatedEvents[type]\n  let index\n\n  for (index = delegated.selectors.length - 1; index >= 0; index--) {\n    if (delegated.selectors[index] === selector &&\n        delegated.contexts[index] === context) {\n      break\n    }\n  }\n\n  if (index === -1) {\n    index = delegated.selectors.length\n\n    delegated.selectors.push(selector)\n    delegated.contexts.push(context)\n    delegated.listeners.push([])\n  }\n\n  // keep listener and capture and passive flags\n  delegated.listeners[index].push([listener, !!options.capture, options.passive])\n}\n\nfunction removeDelegate (\n  selector: string,\n  context: Document | Interact.Element,\n  type: string,\n  listener?: Listener,\n  optionalArg?: any,\n) {\n  const options = getOptions(optionalArg)\n  const delegated = delegatedEvents[type]\n  let matchFound = false\n  let index\n\n  if (!delegated) { return }\n\n  // count from last index of delegated to 0\n  for (index = delegated.selectors.length - 1; index >= 0; index--) {\n    // look for matching selector and context Node\n    if (delegated.selectors[index] === selector &&\n        delegated.contexts[index] === context) {\n      const listeners = delegated.listeners[index]\n\n      // each item of the listeners array is an array: [function, capture, passive]\n      for (let i = listeners.length - 1; i >= 0; i--) {\n        const [fn, capture, passive] = listeners[i]\n\n        // check if the listener functions and capture and passive flags match\n        if (fn === listener && capture === !!options.capture && passive === options.passive) {\n          // remove the listener from the array of listeners\n          listeners.splice(i, 1)\n\n          // if all listeners for this interactable have been removed\n          // remove the interactable from the delegated arrays\n          if (!listeners.length) {\n            delegated.selectors.splice(index, 1)\n            delegated.contexts.splice(index, 1)\n            delegated.listeners.splice(index, 1)\n\n            // remove delegate function from context\n            remove(context, type, delegateListener)\n            remove(context, type, delegateUseCapture, true)\n\n            // remove the arrays if they are empty\n            if (!delegated.selectors.length) {\n              delegatedEvents[type] = null\n            }\n          }\n\n          // only remove one listener\n          matchFound = true\n          break\n        }\n      }\n\n      if (matchFound) { break }\n    }\n  }\n}\n\n// bound to the interactable context when a DOM event\n// listener is added to a selector interactable\nfunction delegateListener (event: Event, optionalArg?: any) {\n  const options = getOptions(optionalArg)\n  const fakeEvent = new FakeEvent(event)\n  const delegated = delegatedEvents[event.type]\n  const [eventTarget] = (pointerUtils.getEventTargets(event))\n  let element: Node = eventTarget\n\n  // climb up document tree looking for selector matches\n  while (is.element(element)) {\n    for (let i = 0; i < delegated.selectors.length; i++) {\n      const selector = delegated.selectors[i]\n      const context = delegated.contexts[i]\n\n      if (domUtils.matchesSelector(element, selector) &&\n          domUtils.nodeContains(context, eventTarget) &&\n          domUtils.nodeContains(context, element)) {\n        const listeners = delegated.listeners[i]\n\n        fakeEvent.currentTarget = element\n\n        for (const [fn, capture, passive] of listeners) {\n          if (capture === !!options.capture && passive === options.passive) {\n            fn(fakeEvent)\n          }\n        }\n      }\n    }\n\n    element = domUtils.parentNode(element)\n  }\n}\n\nfunction delegateUseCapture (event: Event) {\n  return delegateListener.call(this, event, true)\n}\n\nfunction getOptions (param: object) {\n  return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial<Event> {\n  currentTarget: EventTarget\n\n  constructor (public originalEvent: Event) {\n    // duplicate the event so that currentTarget can be changed\n    pExtend(this, originalEvent)\n  }\n\n  preventOriginalDefault () {\n    this.originalEvent.preventDefault()\n  }\n\n  stopPropagation () {\n    this.originalEvent.stopPropagation()\n  }\n\n  stopImmediatePropagation () {\n    this.originalEvent.stopImmediatePropagation()\n  }\n}\n\nconst events = {\n  add,\n  remove,\n\n  addDelegate,\n  removeDelegate,\n\n  delegateListener,\n  delegateUseCapture,\n  delegatedEvents,\n  documents,\n\n  supportsOptions: false,\n  supportsPassive: false,\n\n  _elements: elements,\n  _targets: targets,\n\n  init (window: Window) {\n    window.document.createElement('div').addEventListener('test', null, {\n      get capture () { return (events.supportsOptions = true) },\n      get passive () { return (events.supportsPassive = true) },\n    })\n  },\n}\n\nexport default events\n","export default function extend<T, U extends object> (dest: U & Partial<T>, source: T): T & U {\n  for (const prop in source) {\n    (dest as unknown as T)[prop] = source[prop]\n  }\n\n  const ret = dest as T & U\n\n  return ret\n}\n","import extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n  [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n  type: Interact.EventTypes,\n  listeners?: Interact.ListenersArg | Interact.ListenersArg[],\n  result?: NormalizedListeners,\n): NormalizedListeners {\n  result = result || {}\n\n  if (is.string(type) && type.search(' ') !== -1) {\n    type = split(type)\n  }\n\n  if (is.array(type)) {\n    return type.reduce<NormalizedListeners>(\n      (acc, t) => extend(acc, normalize(t, listeners, result)),\n      result,\n    )\n  }\n\n  // ({ type: fn }) -> ('', { type: fn })\n  if (is.object(type)) {\n    listeners = type\n    type = ''\n  }\n\n  if (is.func(listeners)) {\n    result[type] = result[type] || []\n    result[type].push(listeners)\n  }\n  else if (is.array(listeners)) {\n    for (const l of listeners) {\n      normalize(type, l, result)\n    }\n  }\n  else if (is.object(listeners)) {\n    for (const prefix in listeners) {\n      const combinedTypes = split(prefix).map(p => `${type}${p}`)\n\n      normalize(combinedTypes, listeners[prefix], result)\n    }\n  }\n\n  return result as NormalizedListeners\n}\n\nfunction split (type: string) {\n  return type.trim().split(/ +/)\n}\n","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport normalize, { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\n\nfunction fireUntilImmediateStopped<\n  T extends Interact.ActionName,\n  P extends Interact.EventPhase,\n> (event: Interact.InteractEvent<T, P>, listeners: Interact.Listener[]) {\n  for (const listener of listeners) {\n    if (event.immediatePropagationStopped) { break }\n\n    listener(event)\n  }\n}\n\nclass Eventable {\n  options: any\n  types: NormalizedListeners = {}\n  propagationStopped = false\n  immediatePropagationStopped = false\n  global: any\n\n  constructor (options?: { [index: string]: any }) {\n    this.options = extend({}, options || {})\n  }\n\n  fire (event: any) {\n    let listeners\n    const global = this.global\n\n    // Interactable#on() listeners\n    // tslint:disable no-conditional-assignment\n    if ((listeners = this.types[event.type])) {\n      fireUntilImmediateStopped(event, listeners)\n    }\n\n    // interact.on() listeners\n    if (!event.propagationStopped && global && (listeners = global[event.type]))  {\n      fireUntilImmediateStopped(event, listeners)\n    }\n  }\n\n  on (type: string, listener: Interact.ListenersArg) {\n    const listeners = normalize(type, listener)\n\n    for (type in listeners) {\n      this.types[type] = arr.merge(this.types[type] || [], listeners[type])\n    }\n  }\n\n  off (type: string, listener: Interact.ListenersArg) {\n    const listeners = normalize(type, listener)\n\n    for (type in listeners) {\n      const eventList = this.types[type]\n\n      if (!eventList || !eventList.length) { continue }\n\n      for (const subListener of listeners[type]) {\n        const index = eventList.indexOf(subListener)\n\n        if (index !== -1) {\n          eventList.splice(index, 1)\n        }\n      }\n    }\n  }\n\n  getRect (_element: Interact.Element): Interact.Rect {\n    return null\n  }\n}\n\nexport default Eventable\n","import { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value: any, target: Interact.HasGetRect, element) {\n  if (value === 'parent') { return parentNode(element) }\n\n  if (value === 'self') { return target.getRect(element) }\n\n  return closest(element, value)\n}\n\nexport function resolveRectLike<T extends any[]> (\n  value: Interact.RectResolvable<T>,\n  target?: Interact.HasGetRect,\n  element?: Node,\n  functionArgs?: T,\n) {\n  let returnValue: any = value\n  if (is.string(returnValue)) {\n    returnValue = getStringOptionResult(returnValue, target, element)\n  }\n  else if (is.func(returnValue)) {\n    returnValue = returnValue(...functionArgs)\n  }\n\n  if (is.element(returnValue)) {\n    returnValue = getElementRect(returnValue)\n  }\n\n  return returnValue as Interact.Rect\n}\n\nexport function rectToXY (rect) {\n  return  rect && {\n    x: 'x' in rect ? rect.x : rect.left,\n    y: 'y' in rect ? rect.y : rect.top,\n  }\n}\n\nexport function xywhToTlbr (rect) {\n  if (rect && !('left' in rect && 'top' in rect)) {\n    rect = extend({}, rect)\n\n    rect.left   = rect.x || 0\n    rect.top    = rect.y || 0\n    rect.right  = rect.right   || (rect.left + rect.width)\n    rect.bottom = rect.bottom  || (rect.top + rect.height)\n  }\n\n  return rect\n}\n\nexport function tlbrToXywh (rect) {\n  if (rect && !('x' in rect && 'y' in rect)) {\n    rect = extend({}, rect)\n\n    rect.x      = rect.left || 0\n    rect.y      = rect.top  || 0\n    rect.width  = rect.width  || (rect.right || 0  - rect.x)\n    rect.height = rect.height || (rect.bottom || 0 - rect.y)\n  }\n\n  return rect\n}\n\nexport function addEdges (edges: Interact.EdgeOptions, rect: Interact.Rect, delta: Interact.Point) {\n  if (edges.left)   { rect.left   += delta.x }\n  if (edges.right)  { rect.right  += delta.x }\n  if (edges.top)    { rect.top    += delta.y }\n  if (edges.bottom) { rect.bottom += delta.y }\n\n  rect.width = rect.right - rect.left\n  rect.height = rect.bottom - rect.top\n}\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (\n  target: Interact.HasGetRect & { options: Interact.PerActionDefaults },\n  element: Node,\n  actionName?: Interact.ActionName,\n) {\n  const actionOptions = (target.options as any)[actionName]\n  const actionOrigin = actionOptions && actionOptions.origin\n  const origin = actionOrigin || target.options.origin\n\n  const originRect = resolveRectLike(origin, target, element, [target && element])\n\n  return rectToXY(originRect) || { x: 0, y: 0 }\n}\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n  request = window.requestAnimationFrame\n  cancel = window.cancelAnimationFrame\n\n  if (!request) {\n    const vendors = ['ms', 'moz', 'webkit', 'o']\n\n    for (const vendor of vendors) {\n      request = window[`${vendor}RequestAnimationFrame`]\n      cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n    }\n  }\n\n  if (!request) {\n    request = callback => {\n      const currTime = Date.now()\n      const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n      // eslint-disable-next-line standard/no-callback-literal\n      const token = setTimeout(() => { callback(currTime + timeToCall) },\n        timeToCall)\n\n      lastTime = currTime + timeToCall\n      return token\n    }\n\n    cancel = token => clearTimeout(token)\n  }\n}\n\nexport default {\n  request: callback => request(callback),\n  cancel: token => cancel(token),\n  init,\n}\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport * as pointer from './pointerUtils'\nimport * as rect from './rect'\nimport win from './window'\n\nexport function warnOnce<T> (this: T, method: (...args: any[]) => any, message: string) {\n  let warned = false\n\n  // eslint-disable-next-line no-shadow\n  return function (this: T) {\n    if (!warned) {\n      (win as any).window.console.warn(message)\n      warned = true\n    }\n\n    return method.apply(this, arguments)\n  }\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n  dest.name  = src.name\n  dest.axis  = src.axis\n  dest.edges = src.edges\n\n  return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as raf } from './raf'\nexport { win, arr, dom, is, pointer, rect }\n","export class BaseEvent<T extends Interact.ActionName = any> {\n  type: string\n  target: EventTarget\n  currentTarget: EventTarget\n  interactable: Interact.Interactable\n  _interaction: Interact.Interaction<T>\n  timeStamp: any\n  immediatePropagationStopped = false\n  propagationStopped = false\n\n  get interaction (): Interact.InteractionProxy<T> {\n    return this._interaction._proxy\n  }\n\n  constructor (interaction: Interact.Interaction) {\n    this._interaction = interaction\n  }\n\n  preventDefault () {}\n\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n  stopPropagation () {\n    this.propagationStopped = true\n  }\n\n  /**\n   * Don't call listeners on the remaining targets\n   */\n  stopImmediatePropagation () {\n    this.immediatePropagationStopped = this.propagationStopped = true\n  }\n}\n\nexport default BaseEvent\n","// tslint:disable no-empty-interface\n\nexport interface Defaults {\n  base: BaseDefaults\n  perAction: PerActionDefaults\n  actions: ActionDefaults\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionDefaults {\n}\n\nexport interface BaseDefaults {\n  preventDefault?: 'auto' | 'never' | string\n  deltaSource?: 'page' | 'client'\n  context?: Node\n}\n\nexport interface PerActionDefaults {\n  enabled?: boolean\n  origin?: Interact.Point | string | Interact.Element\n  listeners?: Interact.Listeners\n  allowFrom?: string | Interact.Element\n  ignoreFrom?: string | Interact.Element\n}\n\nexport type Options = Partial<BaseDefaults> & Partial<PerActionDefaults> & {\n  [P in keyof ActionDefaults]?: Partial<ActionDefaults[P]>\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.OrBoolean<Partial<ActionDefaults>> {}\n\nexport const defaults: Defaults = {\n  base: {\n    preventDefault: 'auto',\n    deltaSource: 'page',\n  },\n\n  perAction: {\n    enabled: false,\n    origin: { x: 0, y: 0 },\n  },\n\n  actions: {} as ActionDefaults,\n}\n\nexport default defaults\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport BaseEvent from './BaseEvent'\nimport Interaction from './Interaction'\nimport defaults from './defaultOptions'\n\nexport type EventPhase = keyof PhaseMap\n\nexport interface PhaseMap {\n  start: true\n  move: true\n  end: true\n}\n\nexport class InteractEvent<\n  T extends Interact.ActionName = never,\n  P extends EventPhase = EventPhase,\n> extends BaseEvent<T> {\n  target: Interact.Element\n  currentTarget: Interact.Element\n  relatedTarget: null = null\n  screenX?: number\n  screenY?: number\n  button: number\n  buttons: number\n  ctrlKey: boolean\n  shiftKey: boolean\n  altKey: boolean\n  metaKey: boolean\n  page: Interact.Point\n  client: Interact.Point\n  delta: Interact.Point\n  rect: Interact.FullRect\n  x0: number\n  y0: number\n  t0: number\n  dt: number\n  duration: number\n  clientX0: number\n  clientY0: number\n  velocity: Interact.Point\n  speed: number\n  swipe: ReturnType<InteractEvent<T>['getSwipe']>\n  timeStamp: any\n  // drag\n  dragEnter?: Interact.Element\n  dragLeave?: Interact.Element\n  // resize\n  axes?: 'x' | 'y' | 'xy'\n  preEnd?: boolean\n\n  /** */\n  constructor (\n    interaction: Interaction,\n    event: Interact.PointerEventType,\n    actionName: T,\n    phase: P,\n    element: Interact.Element,\n    preEnd?: boolean,\n    type?: string,\n  ) {\n    super(interaction)\n\n    element = element || interaction.element\n\n    const target      = interaction.interactable\n    const deltaSource = (((target && target.options) || defaults) as any).deltaSource as 'page' | 'client'\n    const origin      = getOriginXY(target, element, actionName)\n    const starting    = phase === 'start'\n    const ending      = phase === 'end'\n    const prevEvent   = starting ? this : interaction.prevEvent\n    const coords      = starting\n      ? interaction.coords.start\n      : ending\n        ? { page: prevEvent.page, client: prevEvent.client, timeStamp: interaction.coords.cur.timeStamp }\n        : interaction.coords.cur\n\n    this.page      = extend({}, coords.page)\n    this.client    = extend({}, coords.client)\n    this.rect      = extend({}, interaction.rect)\n    this.timeStamp = coords.timeStamp\n\n    if (!ending) {\n      this.page.x -= origin.x\n      this.page.y -= origin.y\n\n      this.client.x -= origin.x\n      this.client.y -= origin.y\n    }\n\n    this.ctrlKey       = event.ctrlKey\n    this.altKey        = event.altKey\n    this.shiftKey      = event.shiftKey\n    this.metaKey       = event.metaKey\n    this.button        = (event as MouseEvent).button\n    this.buttons       = (event as MouseEvent).buttons\n    this.target        = element\n    this.currentTarget = element\n    this.preEnd        = preEnd\n    this.type          = type || (actionName + (phase || ''))\n    this.interactable  = target\n\n    this.t0 = starting\n      ? interaction.pointers[interaction.pointers.length - 1].downTime\n      : prevEvent.t0\n\n    this.x0       = interaction.coords.start.page.x - origin.x\n    this.y0       = interaction.coords.start.page.y - origin.y\n    this.clientX0 = interaction.coords.start.client.x - origin.x\n    this.clientY0 = interaction.coords.start.client.y - origin.y\n\n    if (starting || ending) {\n      this.delta = { x: 0, y: 0 }\n    }\n    else {\n      this.delta = {\n        x: this[deltaSource].x - prevEvent[deltaSource].x,\n        y: this[deltaSource].y - prevEvent[deltaSource].y,\n      }\n    }\n\n    this.dt        = interaction.coords.delta.timeStamp\n    this.duration  = this.timeStamp - this.t0\n\n    // velocity and speed in pixels per second\n    this.velocity = extend({}, interaction.coords.velocity[deltaSource])\n    this.speed = hypot(this.velocity.x, this.velocity.y)\n\n    this.swipe = (ending || phase === 'inertiastart') ? this.getSwipe() : null\n  }\n\n  get pageX () { return this.page.x }\n  set pageX (value) { this.page.x = value }\n  get pageY () { return this.page.y }\n  set pageY (value) { this.page.y = value }\n\n  get clientX () { return this.client.x }\n  set clientX (value) { this.client.x = value }\n  get clientY () { return this.client.y }\n  set clientY (value) { this.client.y = value }\n\n  get dx () { return this.delta.x }\n  set dx (value) { this.delta.x = value }\n  get dy () { return this.delta.y }\n  set dy (value) { this.delta.y = value }\n\n  get velocityX () { return this.velocity.x }\n  set velocityX (value) { this.velocity.x = value }\n  get velocityY () { return this.velocity.y }\n  set velocityY (value) { this.velocity.y = value }\n\n  getSwipe () {\n    const interaction = this._interaction\n\n    if (interaction.prevEvent.speed < 600 ||\n        this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n      return null\n    }\n\n    let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI\n    const overlap = 22.5\n\n    if (angle < 0) {\n      angle += 360\n    }\n\n    const left = 135 - overlap <= angle && angle < 225 + overlap\n    const up   = 225 - overlap <= angle && angle < 315 + overlap\n\n    const right = !left && (315 - overlap <= angle || angle <  45 + overlap)\n    const down  = !up   &&   45 - overlap <= angle && angle < 135 + overlap\n\n    return {\n      up,\n      down,\n      left,\n      right,\n      angle,\n      speed: interaction.prevEvent.speed,\n      velocity: {\n        x: interaction.prevEvent.velocityX,\n        y: interaction.prevEvent.velocityY,\n      },\n    }\n  }\n\n  preventDefault () {}\n\n  /**\n   * Don't call listeners on the remaining targets\n   */\n  stopImmediatePropagation () {\n    this.immediatePropagationStopped = this.propagationStopped = true\n  }\n\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n  stopPropagation () {\n    this.propagationStopped = true\n  }\n}\n\nexport default InteractEvent\n","import * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/scope' {\n  interface SignalArgs {\n    'interactable:new': {\n      interactable: Interact.Interactable\n      target: Interact.Target\n      options: Interact.OptionsArg\n      win: Window\n    }\n  }\n}\n\ninterface InteractableScopeProp {\n  context: Document | Interact.Element\n  interactable: Interact.Interactable\n}\n\nexport default class InteractableSet {\n  // all set interactables\n  list: Interact.Interactable[] = []\n\n  selectorMap: {\n    [selector: string]: InteractableScopeProp[]\n  } = {}\n\n  constructor (protected scope: Interact.Scope) {\n    scope.addListeners({\n      'interactable:unset': ({ interactable }) => {\n        const { target, _context: context } = interactable\n        const targetMappings: InteractableScopeProp[] = is.string(target)\n          ? this.selectorMap[target]\n          : (target as any)[this.scope.id]\n\n        const targetIndex = targetMappings.findIndex(m => m.context === context)\n        if (targetMappings[targetIndex]) {\n        // Destroying mappingInfo's context and interactable\n          targetMappings[targetIndex].context = null\n          targetMappings[targetIndex].interactable = null\n        }\n        targetMappings.splice(targetIndex, 1)\n      },\n    })\n  }\n\n  new (target: Interact.Target, options?: any): Interact.Interactable {\n    options = extend(options || {}, {\n      actions: this.scope.actions,\n    })\n    const interactable = new this.scope.Interactable(target, options, this.scope.document)\n    const mappingInfo = { context: interactable._context, interactable }\n\n    this.scope.addDocument(interactable._doc)\n    this.list.push(interactable)\n\n    if (is.string(target)) {\n      if (!this.selectorMap[target]) { this.selectorMap[target] = [] }\n      this.selectorMap[target].push(mappingInfo)\n    } else {\n      if (!((interactable.target as any)[this.scope.id])) {\n        Object.defineProperty(target, this.scope.id, {\n          value: [],\n          configurable: true,\n        })\n      }\n\n      (target as any)[this.scope.id].push(mappingInfo)\n    }\n\n    this.scope.fire('interactable:new', {\n      target,\n      options,\n      interactable,\n      win: this.scope._win,\n    })\n\n    return interactable\n  }\n\n  get (target: Interact.Target, options?: Interact.Options) {\n    const context = (options && options.context) || this.scope.document\n    const isSelector = is.string(target)\n    const targetMappings: InteractableScopeProp[] = isSelector\n      ? this.selectorMap[target as string]\n      : (target as any)[this.scope.id]\n\n    if (!targetMappings) { return null }\n\n    const found = arr.find(\n      targetMappings,\n      m => m.context === context &&\n        (isSelector || m.interactable.inContext(target as any)))\n\n    return found && found.interactable\n  }\n\n  forEachMatch<T> (node: Node, callback: (interactable: Interact.Interactable) => T): T | void {\n    for (const interactable of this.list) {\n      let ret\n\n      if ((is.string(interactable.target)\n      // target is a selector and the element matches\n        ? (is.element(node) && domUtils.matchesSelector(node, interactable.target))\n        // target is the element\n        : node === interactable.target) &&\n        // the element is in context\n        (interactable.inContext(node))) {\n        ret = callback(interactable)\n      }\n\n      if (ret !== undefined) {\n        return ret\n      }\n    }\n  }\n}\n","/* eslint-disable @typescript-eslint/no-parameter-properties */\nexport class PointerInfo {\n  constructor (\n    public id: number,\n    public pointer: Interact.PointerType,\n    public event: Interact.PointerEventType,\n    public downTime: number,\n    public downTarget: Interact.EventTarget,\n  ) {}\n}\n\nexport default PointerInfo\n","import * as utils from '@interactjs/utils/index'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport Interactable from './Interactable'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps<T extends ActionName = Interact.ActionName> {\n  name: T\n  axis?: 'x' | 'y' | 'xy'\n  edges?: Interact.EdgeOptions\n}\n\nexport interface StartAction extends ActionProps {\n  name: ActionName\n}\n\nexport enum _ProxyValues {\n  interactable = '',\n  element = '',\n  prepared = '',\n  pointerIsDown = '',\n  pointerWasMoved = '',\n  _proxy = ''\n}\n\nexport enum _ProxyMethods {\n  start = '',\n  move = '',\n  end = '',\n  stop = '',\n  interacting = ''\n}\n\nexport type PointerArgProps<T extends {} = {}> = {\n  pointer: Interact.PointerType\n  event: Interact.PointerEventType\n  eventTarget: Interact.EventTarget\n  pointerIndex: number\n  pointerInfo: PointerInfo\n  interaction: Interaction\n} & T\n\nexport interface DoPhaseArg<T extends ActionName, P extends EventPhase> {\n  event: Interact.PointerEventType\n  phase: EventPhase\n  interaction: Interaction<T>\n  iEvent: InteractEvent<T, P>\n  preEnd?: boolean\n  type?: string\n}\n\nexport type DoAnyPhaseArg = DoPhaseArg<ActionName, EventPhase>\n\ndeclare module '@interactjs/core/scope' {\n  interface SignalArgs {\n    'interactions:new': { interaction: Interaction }\n    'interactions:down': PointerArgProps<{\n      type: 'down'\n    }>\n    'interactions:move': PointerArgProps<{\n      type: 'move'\n      dx: number\n      dy: number\n      duplicate: boolean\n    }>\n    'interactions:up': PointerArgProps<{\n      type: 'up'\n      curEventTarget: EventTarget\n    }>\n    'interactions:cancel': SignalArgs['interactions:up'] & {\n      type: 'cancel'\n      curEventTarget: EventTarget\n    }\n    'interactions:update-pointer': PointerArgProps<{\n      down: boolean\n    }>\n    'interactions:remove-pointer': PointerArgProps\n    'interactions:blur'\n    'interactions:before-action-start': Omit<DoAnyPhaseArg, 'iEvent'>\n    'interactions:action-start': DoAnyPhaseArg\n    'interactions:after-action-start': DoAnyPhaseArg\n    'interactions:before-action-move': Omit<DoAnyPhaseArg, 'iEvent'>\n    'interactions:action-move': DoAnyPhaseArg\n    'interactions:after-action-move': DoAnyPhaseArg\n    'interactions:before-action-end': Omit<DoAnyPhaseArg, 'iEvent'>\n    'interactions:action-end': DoAnyPhaseArg\n    'interactions:after-action-end': DoAnyPhaseArg\n    'interactions:stop': { interaction: Interaction }\n  }\n}\n\nexport type InteractionProxy<T extends ActionName = ActionName> = Pick<\nInteraction<T>,\nkeyof typeof _ProxyValues | keyof typeof _ProxyMethods\n>\n\nlet idCounter = 0\n\nexport class Interaction<T extends ActionName = ActionName> {\n  // current interactable being interacted with\n  interactable: Interactable = null\n\n  // the target element of the interactable\n  element: Interact.Element = null\n  rect: Interact.FullRect\n  _rects?: {\n    start: Interact.FullRect\n    corrected: Interact.FullRect\n    previous: Interact.FullRect\n    delta: Interact.FullRect\n  }\n  edges: Interact.EdgeOptions\n\n  _scopeFire: Interact.Scope['fire']\n\n  // action that's ready to be fired on next move event\n  prepared: ActionProps<T> = {\n    name : null,\n    axis : null,\n    edges: null,\n  }\n\n  pointerType: string\n\n  // keep track of added pointers\n  pointers: PointerInfo[] = []\n\n  // pointerdown/mousedown/touchstart event\n  downEvent: Interact.PointerEventType = null\n\n  downPointer: Interact.PointerType = {} as Interact.PointerType\n\n  _latestPointer: {\n    pointer: Interact.PointerType\n    event: Interact.PointerEventType\n    eventTarget: Node\n  } = {\n    pointer: null,\n    event: null,\n    eventTarget: null,\n  }\n\n  // previous action event\n  prevEvent: InteractEvent<T, EventPhase> = null\n\n  pointerIsDown = false\n  pointerWasMoved = false\n  _interacting = false\n  _ending = false\n  _stopped = true\n  _proxy: InteractionProxy<T> = null\n\n  simulation = null\n\n  get pointerMoveTolerance () {\n    return 1\n  }\n\n  /**\n   * @alias Interaction.prototype.move\n   */\n  doMove = utils.warnOnce(\n    function (this: Interaction, signalArg: any) {\n      this.move(signalArg)\n    },\n    'The interaction.doMove() method has been renamed to interaction.move()')\n\n  coords: Interact.CoordsSet = {\n    // Starting InteractEvent pointer coordinates\n    start: utils.pointer.newCoords(),\n    // Previous native pointer move event coordinates\n    prev: utils.pointer.newCoords(),\n    // current native pointer move event coordinates\n    cur: utils.pointer.newCoords(),\n    // Change in coordinates and time of the pointer\n    delta: utils.pointer.newCoords(),\n    // pointer velocity\n    velocity: utils.pointer.newCoords(),\n  }\n\n  readonly _id: number = idCounter++\n\n  /** */\n  constructor ({ pointerType, scopeFire }: {\n    pointerType?: string\n    scopeFire: Interact.Scope['fire']\n  }) {\n    this._scopeFire = scopeFire\n    this.pointerType = pointerType\n\n    const that = this\n\n    this._proxy = {} as InteractionProxy<T>\n\n    for (const key in _ProxyValues) {\n      Object.defineProperty(this._proxy, key, {\n        get () { return that[key] },\n      })\n    }\n\n    for (const key in _ProxyMethods) {\n      Object.defineProperty(this._proxy, key, {\n        value: (...args) => that[key](...args),\n      })\n    }\n\n    this._scopeFire('interactions:new', { interaction: this })\n  }\n\n  pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Interact.EventTarget) {\n    const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n    const pointerInfo = this.pointers[pointerIndex]\n\n    this._scopeFire('interactions:down', {\n      pointer,\n      event,\n      eventTarget,\n      pointerIndex,\n      pointerInfo,\n      type: 'down',\n      interaction: this,\n    })\n  }\n\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable({\n   *     // disable the default drag start by down->move\n   *     manualStart: true\n   *   })\n   *   // start dragging after the user holds the pointer down\n   *   .on('hold', function (event) {\n   *     var interaction = event.interaction\n   *\n   *     if (!interaction.interacting()) {\n   *       interaction.start({ name: 'drag' },\n   *                         event.interactable,\n   *                         event.currentTarget)\n   *     }\n   * })\n   * ```\n   *\n   * Start an action with the given Interactable and Element as tartgets. The\n   * action must be enabled for the target Interactable and an appropriate\n   * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n   *\n   * Use it with `interactable.<action>able({ manualStart: false })` to always\n   * [start actions manually](https://github.com/taye/interact.js/issues/114)\n   *\n   * @param {object} action   The action to be performed - drag, resize, etc.\n   * @param {Interactable} target  The Interactable to target\n   * @param {Element} element The DOM Element to target\n   * @return {object} interact\n   */\n  start (action: StartAction, interactable: Interactable, element: Interact.Element) {\n    if (this.interacting() ||\n        !this.pointerIsDown ||\n        this.pointers.length < (action.name === 'gesture' ? 2 : 1) ||\n        !interactable.options[action.name].enabled) {\n      return false\n    }\n\n    utils.copyAction(this.prepared, action)\n\n    this.interactable = interactable\n    this.element      = element\n    this.rect         = interactable.getRect(element)\n    this.edges        = this.prepared.edges\n      ? utils.extend({}, this.prepared.edges)\n      : { left: true, right: true, top: true, bottom: true }\n    this._stopped     = false\n    this._interacting = this._doPhase({\n      interaction: this,\n      event: this.downEvent,\n      phase: 'start',\n    }) && !this._stopped\n\n    return this._interacting\n  }\n\n  pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Interact.EventTarget) {\n    if (!this.simulation && !(this.modification && this.modification.endResult)) {\n      this.updatePointer(pointer, event, eventTarget, false)\n    }\n\n    const duplicateMove = (this.coords.cur.page.x === this.coords.prev.page.x &&\n                           this.coords.cur.page.y === this.coords.prev.page.y &&\n                           this.coords.cur.client.x === this.coords.prev.client.x &&\n                           this.coords.cur.client.y === this.coords.prev.client.y)\n\n    let dx\n    let dy\n\n    // register movement greater than pointerMoveTolerance\n    if (this.pointerIsDown && !this.pointerWasMoved) {\n      dx = this.coords.cur.client.x - this.coords.start.client.x\n      dy = this.coords.cur.client.y - this.coords.start.client.y\n\n      this.pointerWasMoved = utils.hypot(dx, dy) > this.pointerMoveTolerance\n    }\n\n    const pointerIndex = this.getPointerIndex(pointer)\n    const signalArg = {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      type: 'move' as const,\n      eventTarget,\n      dx,\n      dy,\n      duplicate: duplicateMove,\n      interaction: this,\n    }\n\n    if (!duplicateMove) {\n      // set pointer coordinate, time changes and velocity\n      utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n    }\n\n    this._scopeFire('interactions:move', signalArg)\n\n    if (!duplicateMove && !this.simulation) {\n      // if interacting, fire an 'action-move' signal etc\n      if (this.interacting()) {\n        signalArg.type = null\n        this.move(signalArg)\n      }\n\n      if (this.pointerWasMoved) {\n        utils.pointer.copyCoords(this.coords.prev, this.coords.cur)\n      }\n    }\n  }\n\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('dragmove', function (event) {\n   *     if (someCondition) {\n   *       // change the snap settings\n   *       event.interactable.draggable({ snap: { targets: [] }})\n   *       // fire another move event with re-calculated snap\n   *       event.interaction.move()\n   *     }\n   *   })\n   * ```\n   *\n   * Force a move of the current action at the same coordinates. Useful if\n   * snap/restrict has been changed and you want a movement with the new\n   * settings.\n   */\n  move (signalArg?) {\n    if (!signalArg || !signalArg.event) {\n      utils.pointer.setZeroCoords(this.coords.delta)\n    }\n\n    signalArg = utils.extend({\n      pointer: this._latestPointer.pointer,\n      event: this._latestPointer.event,\n      eventTarget: this._latestPointer.eventTarget,\n      interaction: this,\n    }, signalArg || {})\n\n    signalArg.phase = 'move'\n\n    this._doPhase(signalArg)\n  }\n\n  // End interact move events and stop auto-scroll unless simulation is running\n  pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Interact.EventTarget, curEventTarget: Interact.EventTarget) {\n    let pointerIndex = this.getPointerIndex(pointer)\n\n    if (pointerIndex === -1) {\n      pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n    }\n\n    const type = /cancel$/i.test(event.type) ? 'cancel' : 'up'\n\n    this._scopeFire(`interactions:${type}` as 'interactions:up' | 'interactions:cancel', {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      eventTarget,\n      type: type as any,\n      curEventTarget,\n      interaction: this,\n    })\n\n    if (!this.simulation) {\n      this.end(event)\n    }\n\n    this.pointerIsDown = false\n    this.removePointer(pointer, event)\n  }\n\n  documentBlur (event) {\n    this.end(event)\n    this._scopeFire('interactions:blur', { event, type: 'blur', interaction: this })\n  }\n\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('move', function (event) {\n   *     if (event.pageX > 1000) {\n   *       // end the current action\n   *       event.interaction.end()\n   *       // stop all further listeners from being called\n   *       event.stopImmediatePropagation()\n   *     }\n   *   })\n   * ```\n   *\n   * @param {PointerEvent} [event]\n   */\n  end (event?: Interact.PointerEventType) {\n    this._ending = true\n    event = event || this._latestPointer.event\n    let endPhaseResult\n\n    if (this.interacting()) {\n      endPhaseResult = this._doPhase({\n        event,\n        interaction: this,\n        phase: 'end',\n      })\n    }\n\n    this._ending = false\n\n    if (endPhaseResult === true) {\n      this.stop()\n    }\n  }\n\n  currentAction () {\n    return this._interacting ? this.prepared.name : null\n  }\n\n  interacting () {\n    return this._interacting\n  }\n\n  /** */\n  stop () {\n    this._scopeFire('interactions:stop', { interaction: this })\n\n    this.interactable = this.element = null\n\n    this._interacting = false\n    this._stopped = true\n    this.prepared.name = this.prevEvent = null\n  }\n\n  getPointerIndex (pointer) {\n    const pointerId = utils.pointer.getPointerId(pointer)\n\n    // mouse and pen interactions may have only one pointer\n    return (this.pointerType === 'mouse' || this.pointerType === 'pen')\n      ? this.pointers.length - 1\n      : utils.arr.findIndex(this.pointers, curPointer => curPointer.id === pointerId)\n  }\n\n  getPointerInfo (pointer) {\n    return this.pointers[this.getPointerIndex(pointer)]\n  }\n\n  updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Interact.EventTarget, down?: boolean) {\n    const id = utils.pointer.getPointerId(pointer)\n    let pointerIndex = this.getPointerIndex(pointer)\n    let pointerInfo = this.pointers[pointerIndex]\n\n    down = down === false\n      ? false\n      : down || /(down|start)$/i.test(event.type)\n\n    if (!pointerInfo) {\n      pointerInfo = new PointerInfo(\n        id,\n        pointer,\n        event,\n        null,\n        null,\n      )\n\n      pointerIndex = this.pointers.length\n      this.pointers.push(pointerInfo)\n    }\n    else {\n      pointerInfo.pointer = pointer\n    }\n\n    utils.pointer.setCoords(this.coords.cur, this.pointers.map(p => p.pointer), this._now())\n    utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n\n    if (down) {\n      this.pointerIsDown = true\n\n      pointerInfo.downTime = this.coords.cur.timeStamp\n      pointerInfo.downTarget = eventTarget\n      utils.pointer.pointerExtend(this.downPointer, pointer)\n\n      if (!this.interacting()) {\n        utils.pointer.copyCoords(this.coords.start, this.coords.cur)\n        utils.pointer.copyCoords(this.coords.prev, this.coords.cur)\n\n        this.downEvent = event\n        this.pointerWasMoved = false\n      }\n    }\n\n    this._updateLatestPointer(pointer, event, eventTarget)\n\n    this._scopeFire('interactions:update-pointer', {\n      pointer,\n      event,\n      eventTarget,\n      down,\n      pointerInfo,\n      pointerIndex,\n      interaction: this,\n    })\n\n    return pointerIndex\n  }\n\n  removePointer (pointer: Interact.PointerType, event: Interact.PointerEventType) {\n    const pointerIndex = this.getPointerIndex(pointer)\n\n    if (pointerIndex === -1) { return }\n\n    const pointerInfo = this.pointers[pointerIndex]\n\n    this._scopeFire('interactions:remove-pointer', {\n      pointer,\n      event,\n      eventTarget: null,\n      pointerIndex,\n      pointerInfo,\n      interaction: this,\n    })\n\n    this.pointers.splice(pointerIndex, 1)\n  }\n\n  _updateLatestPointer (pointer, event, eventTarget) {\n    this._latestPointer.pointer = pointer\n    this._latestPointer.event = event\n    this._latestPointer.eventTarget = eventTarget\n  }\n\n  destroy () {\n    this._latestPointer.pointer = null\n    this._latestPointer.event = null\n    this._latestPointer.eventTarget = null\n  }\n\n  _createPreparedEvent<P extends EventPhase> (event: Interact.PointerEventType, phase: P, preEnd?: boolean, type?: string) {\n    return new InteractEvent<T, P>(this, event, this.prepared.name, phase, this.element, preEnd, type)\n  }\n\n  _fireEvent<P extends EventPhase> (iEvent: InteractEvent<T, P>) {\n    this.interactable.fire(iEvent)\n\n    if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n      this.prevEvent = iEvent\n    }\n  }\n\n  _doPhase<P extends EventPhase> (signalArg: Omit<DoPhaseArg<T, P>, 'iEvent'> & { iEvent?: InteractEvent<T, P> }) {\n    const { event, phase, preEnd, type } = signalArg\n    const { rect } = this\n\n    if (rect && phase === 'move') {\n      // update the rect changes due to pointer move\n      utils.rect.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource])\n\n      rect.width = rect.right - rect.left\n      rect.height = rect.bottom - rect.top\n    }\n\n    const beforeResult = this._scopeFire(`interactions:before-action-${phase}` as any, signalArg)\n\n    if (beforeResult === false) {\n      return false\n    }\n\n    const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type)\n\n    this._scopeFire(`interactions:action-${phase}` as any, signalArg)\n\n    if (phase === 'start') { this.prevEvent = iEvent }\n\n    this._fireEvent(iEvent)\n\n    this._scopeFire(`interactions:after-action-${phase}` as any, signalArg)\n\n    return true\n  }\n\n  _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/Interactable' {\n  interface Interactable {\n    preventDefault: typeof preventDefault\n    checkAndPreventDefault: (event: Event) => void\n  }\n}\n\ntype PreventDefaultValue = 'always' | 'never' | 'auto'\nfunction preventDefault (this: Interact.Interactable): PreventDefaultValue\nfunction preventDefault (this: Interact.Interactable, newValue: PreventDefaultValue): typeof this\nfunction preventDefault (this: Interact.Interactable, newValue?: PreventDefaultValue) {\n  if (/^(always|never|auto)$/.test(newValue)) {\n    this.options.preventDefault = newValue\n    return this\n  }\n\n  if (is.bool(newValue)) {\n    this.options.preventDefault = newValue ? 'always' : 'never'\n    return this\n  }\n\n  return this.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable: Interact.Interactable, scope: Interact.Scope, event: Event) {\n  const setting = interactable.options.preventDefault\n\n  if (setting === 'never') { return }\n\n  if (setting === 'always') {\n    event.preventDefault()\n    return\n  }\n\n  // setting === 'auto'\n\n  // if the browser supports passive event listeners and isn't running on iOS,\n  // don't preventDefault of touch{start,move} events. CSS touch-action and\n  // user-select should be used instead of calling event.preventDefault().\n  if (events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n    const doc = getWindow(event.target).document\n    const docOptions = scope.getDocOptions(doc)\n\n    if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n      return\n    }\n  }\n\n  // don't preventDefault of pointerdown events\n  if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n    return\n  }\n\n  // don't preventDefault on editable elements\n  if (is.element(event.target) &&\n      matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n    return\n  }\n\n  event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }: { interaction: Interact.Interaction, event: Interact.PointerEventType }) {\n  if (interaction.interactable) {\n    interaction.interactable.checkAndPreventDefault(event as Event)\n  }\n}\n\nexport function install (scope: Interact.Scope) {\n  /** @lends Interactable */\n  const { Interactable } = scope\n\n  /**\n   * Returns or sets whether to prevent the browser's default behaviour in\n   * response to pointer events. Can be set to:\n   *  - `'always'` to always prevent\n   *  - `'never'` to never prevent\n   *  - `'auto'` to let interact.js try to determine what would be best\n   *\n   * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n   * @return {string | Interactable} The current setting or this Interactable\n   */\n  Interactable.prototype.preventDefault = preventDefault\n\n  Interactable.prototype.checkAndPreventDefault = function (event) {\n    return checkAndPreventDefault(this, scope, event)\n  }\n\n  // prevent native HTML5 drag on interact.js target elements\n  scope.interactions.docEvents.push({\n    type: 'dragstart',\n    listener (event) {\n      for (const interaction of scope.interactions.list) {\n        if (interaction.element &&\n          (interaction.element === event.target ||\n           nodeContains(interaction.element, event.target))) {\n          interaction.interactable.checkAndPreventDefault(event)\n          return\n        }\n      }\n    },\n  })\n}\n\nexport default {\n  id: 'core/interactablePreventDefault',\n  install,\n  listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n    acc[`interactions:${eventType}`] = onInteractionEvent\n    return acc\n  }, {} as any),\n}\n","import * as dom from '@interactjs/utils/domUtils'\n\nexport interface SearchDetails {\n  pointer: Interact.PointerType\n  pointerId: number\n  pointerType: string\n  eventType: string\n  eventTarget: Interact.EventTarget\n  curEventTarget: Interact.EventTarget\n  scope: Interact.Scope\n}\n\nconst finder = {\n  methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'] as const,\n\n  search (details: SearchDetails) {\n    for (const method of finder.methodOrder) {\n      const interaction = finder[method](details)\n\n      if (interaction) {\n        return interaction\n      }\n    }\n\n    return null\n  },\n\n  // try to resume simulation with a new pointer\n  simulationResume ({ pointerType, eventType, eventTarget, scope }: SearchDetails) {\n    if (!/down|start/i.test(eventType)) {\n      return null\n    }\n\n    for (const interaction of scope.interactions.list) {\n      let element = eventTarget as Node\n\n      if (interaction.simulation && interaction.simulation.allowResume &&\n          (interaction.pointerType === pointerType)) {\n        while (element) {\n          // if the element is the interaction element\n          if (element === interaction.element) {\n            return interaction\n          }\n          element = dom.parentNode(element)\n        }\n      }\n    }\n\n    return null\n  },\n\n  // if it's a mouse or pen interaction\n  mouseOrPen ({ pointerId, pointerType, eventType, scope }: SearchDetails) {\n    if (pointerType !== 'mouse' && pointerType !== 'pen') {\n      return null\n    }\n\n    let firstNonActive\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType) {\n        // if it's a down event, skip interactions with running simulations\n        if (interaction.simulation && !hasPointerId(interaction, pointerId)) { continue }\n\n        // if the interaction is active, return it immediately\n        if (interaction.interacting()) {\n          return interaction\n        }\n        // otherwise save it and look for another active interaction\n        else if (!firstNonActive) {\n          firstNonActive = interaction\n        }\n      }\n    }\n\n    // if no active mouse interaction was found use the first inactive mouse\n    // interaction\n    if (firstNonActive) {\n      return firstNonActive\n    }\n\n    // find any mouse or pen interaction.\n    // ignore the interaction if the eventType is a *down, and a simulation\n    // is active\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n        return interaction\n      }\n    }\n\n    return null\n  },\n\n  // get interaction that has this pointer\n  hasPointer ({ pointerId, scope }: SearchDetails) {\n    for (const interaction of scope.interactions.list) {\n      if (hasPointerId(interaction, pointerId)) {\n        return interaction\n      }\n    }\n\n    return null\n  },\n\n  // get first idle interaction with a matching pointerType\n  idle ({ pointerType, scope }: SearchDetails) {\n    for (const interaction of scope.interactions.list) {\n      // if there's already a pointer held down\n      if (interaction.pointers.length === 1) {\n        const target = interaction.interactable\n        // don't add this pointer if there is a target interactable and it\n        // isn't gesturable\n        if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n          continue\n        }\n      }\n      // maximum of 2 pointers per interaction\n      else if (interaction.pointers.length >= 2) {\n        continue\n      }\n\n      if (!interaction.interacting() && (pointerType === interaction.pointerType)) {\n        return interaction\n      }\n    }\n\n    return null\n  },\n}\n\nfunction hasPointerId (interaction: Interact.Interaction, pointerId: number) {\n  return interaction.pointers.some(({ id }) => id === pointerId)\n}\n\nexport default finder\n","import BaseEvent from '@interactjs/core/BaseEvent'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport Interactable from '@interactjs/core/Interactable'\nimport * as arr from '@interactjs/utils/arr'\n\nclass DropEvent extends BaseEvent {\n  target: Interact.Element\n  dropzone: Interactable\n  dragEvent: InteractEvent<'drag'>\n  relatedTarget: Interact.Element\n  draggable: Interactable\n  timeStamp: number\n  propagationStopped = false\n  immediatePropagationStopped = false\n\n  /**\n   * Class of events fired on dropzones during drags with acceptable targets.\n   */\n  constructor (dropState: import('./').DropState, dragEvent: InteractEvent<'drag'>, type: string) {\n    super(dragEvent._interaction)\n\n    const { element, dropzone } = type === 'dragleave'\n      ? dropState.prev\n      : dropState.cur\n\n    this.type          = type\n    this.target        = element\n    this.currentTarget = element\n    this.dropzone      = dropzone\n    this.dragEvent     = dragEvent\n    this.relatedTarget = dragEvent.target\n    this.draggable     = dragEvent.interactable\n    this.timeStamp     = dragEvent.timeStamp\n  }\n\n  /**\n   * If this is a `dropactivate` event, the dropzone element will be\n   * deactivated.\n   *\n   * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n   * dropzone element and more.\n   */\n  reject () {\n    const { dropState } = this._interaction\n\n    if (\n      (this.type !== 'dropactivate') && (\n        !this.dropzone ||\n        dropState.cur.dropzone !== this.dropzone ||\n        dropState.cur.element !== this.target)) {\n      return\n    }\n\n    dropState.prev.dropzone = this.dropzone\n    dropState.prev.element = this.target\n\n    dropState.rejected = true\n    dropState.events.enter = null\n\n    this.stopImmediatePropagation()\n\n    if (this.type === 'dropactivate') {\n      const activeDrops = dropState.activeDrops\n      const index = arr.findIndex(activeDrops, ({ dropzone, element }) =>\n        dropzone === this.dropzone && element === this.target)\n\n      dropState.activeDrops.splice(index, 1)\n\n      const deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate')\n\n      deactivateEvent.dropzone = this.dropzone\n      deactivateEvent.target = this.target\n\n      this.dropzone.fire(deactivateEvent)\n    }\n    else {\n      this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'))\n    }\n  }\n\n  preventDefault () {}\n\n  stopPropagation () {\n    this.propagationStopped = true\n  }\n\n  stopImmediatePropagation () {\n    this.immediatePropagationStopped = this.propagationStopped = true\n  }\n}\n\nexport default DropEvent\n","import InteractEvent from '@interactjs/core/InteractEvent'\nimport Interactable from '@interactjs/core/Interactable'\nimport Scope from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils/index'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n  (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n  (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n  interface Interactable {\n    dropzone: DropzoneMethod\n    dropCheck: (\n      dragEvent: InteractEvent,\n      event: Interact.PointerEventType,\n      draggable: Interactable,\n      draggableElement: Interact.Element,\n      dropElemen: Interact.Element,\n      rect: any\n    ) => boolean\n  }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    dropState?: DropState\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface ActionDefaults {\n    drop: Interact.DropzoneOptions\n  }\n}\n\ndeclare module '@interactjs/core/scope' {\n  interface ActionMap {\n    drop?: typeof drop\n  }\n\n  interface Scope {\n    dynamicDrop?: boolean\n  }\n\n  interface SignalArgs {\n    'actions/drop:start': DropSignalArg\n    'actions/drop:move': DropSignalArg\n    'actions/drop:end': DropSignalArg\n  }\n}\n\ninterface DropSignalArg {\n  interaction: Interact.Interaction\n  dragEvent: Interact.DragEvent\n}\n\nexport interface ActiveDrop {\n  dropzone: Interactable\n  element: Interact.Element\n  rect: Interact.Rect\n}\n\nexport interface DropState {\n  cur: {\n    dropzone: Interactable    // the dropzone a drag target might be dropped into\n    element: Interact.Element // the element at the time of checking\n  }\n  prev: {\n    dropzone: Interactable    // the dropzone that was recently dragged away from\n    element: Interact.Element // the element at the time of checking\n  }\n  rejected: boolean           // wheather the potential drop was rejected from a listener\n  events: any                 // the drop events related to the current drag event\n  activeDrops: ActiveDrop[]\n}\n\nfunction install (scope: Scope) {\n  const {\n    actions,\n    /** @lends module:interact */\n    interactStatic: interact,\n    /** @lends Interactable */\n    Interactable, // eslint-disable-line no-shadow\n    defaults,\n  } = scope\n\n  scope.usePlugin(drag)\n\n  /**\n   *\n   * ```js\n   * interact('.drop').dropzone({\n   *   accept: '.can-drop' || document.getElementById('single-drop'),\n   *   overlap: 'pointer' || 'center' || zeroToOne\n   * }\n   * ```\n   *\n   * Returns or sets whether draggables can be dropped onto this target to\n   * trigger drop events\n   *\n   * Dropzones can receive the following events:\n   *  - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n   *  - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n   *  - `dragmove` when a draggable that has entered the dropzone is moved\n   *  - `drop` when a draggable is dropped into this dropzone\n   *\n   * Use the `accept` option to allow only elements that match the given CSS\n   * selector or element. The value can be:\n   *\n   *  - **an Element** - only that element can be dropped into this dropzone.\n   *  - **a string**, - the element being dragged must match it as a CSS selector.\n   *  - **`null`** - accept options is cleared - it accepts any element.\n   *\n   * Use the `overlap` option to set how drops are checked for. The allowed\n   * values are:\n   *\n   *   - `'pointer'`, the pointer must be over the dropzone (default)\n   *   - `'center'`, the draggable element's center must be over the dropzone\n   *   - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n   *   e.g. `0.5` for drop to happen when half of the area of the draggable is\n   *   over the dropzone\n   *\n   * Use the `checker` option to specify a function to check if a dragged element\n   * is over this Interactable.\n   *\n   * @param {boolean | object | null} [options] The new options to be set.\n   * @return {boolean | Interactable} The current setting or this Interactable\n   */\n  Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n    return dropzoneMethod(this, options)\n  }\n\n  /**\n   * ```js\n   * interact(target)\n   * .dropChecker(function(dragEvent,         // related dragmove or dragend event\n   *                       event,             // TouchEvent/PointerEvent/MouseEvent\n   *                       dropped,           // bool result of the default checker\n   *                       dropzone,          // dropzone Interactable\n   *                       dropElement,       // dropzone elemnt\n   *                       draggable,         // draggable Interactable\n   *                       draggableElement) {// draggable element\n   *\n   *   return dropped && event.target.hasAttribute('allow-drop')\n   * }\n   * ```\n   */\n  Interactable.prototype.dropCheck = function (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\n    return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n  }\n\n  /**\n   * Returns or sets whether the dimensions of dropzone elements are calculated\n   * on every dragmove or only on dragstart for the default dropChecker\n   *\n   * @param {boolean} [newValue] True to check on each move. False to check only\n   * before start\n   * @return {boolean | interact} The current setting or interact\n   */\n  interact.dynamicDrop = function (newValue?: boolean) {\n    if (utils.is.bool(newValue)) {\n      // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n      //  calcRects(dropzones)\n      // }\n\n      scope.dynamicDrop = newValue\n\n      return interact\n    }\n    return scope.dynamicDrop\n  }\n\n  utils.extend(actions.phaselessTypes, {\n    dragenter: true,\n    dragleave: true,\n    dropactivate: true,\n    dropdeactivate: true,\n    dropmove: true,\n    drop: true,\n  })\n  actions.methodDict.drop = 'dropzone'\n\n  scope.dynamicDrop = false\n\n  defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n  const drops = []\n\n  // collect all dropzones and their elements which qualify for a drop\n  for (const dropzone of interactables.list) {\n    if (!dropzone.options.drop.enabled) { continue }\n\n    const accept = dropzone.options.drop.accept\n\n    // test the draggable draggableElement against the dropzone's accept setting\n    if ((utils.is.element(accept) && accept !== draggableElement) ||\n        (utils.is.string(accept) &&\n        !utils.dom.matchesSelector(draggableElement, accept)) ||\n        (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n      continue\n    }\n\n    // query for new elements if necessary\n    const dropElements = utils.is.string(dropzone.target)\n      ? dropzone._context.querySelectorAll(dropzone.target)\n      : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n    for (const dropzoneElement of dropElements) {\n      if (dropzoneElement !== draggableElement) {\n        drops.push({\n          dropzone,\n          element: dropzoneElement,\n        })\n      }\n    }\n  }\n\n  return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\n  // loop through all active dropzones and trigger event\n  for (const { dropzone, element } of activeDrops.slice()) {\n    event.dropzone = dropzone\n\n    // set current element as event target\n    event.target = element\n    dropzone.fire(event)\n    event.propagationStopped = event.immediatePropagationStopped = false\n  }\n}\n\n// return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\nfunction getActiveDrops (scope: Scope, dragElement: Interact.Element) {\n  // get dropzones and their elements that could receive the draggable\n  const activeDrops = collectDrops(scope, dragElement)\n\n  for (const activeDrop of activeDrops) {\n    activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element)\n  }\n\n  return activeDrops\n}\n\nfunction getDrop ({ dropState, interactable: draggable, element: dragElement }: Partial<Interact.Interaction>, dragEvent, pointerEvent) {\n  const validDrops = []\n\n  // collect all dropzones and their elements which qualify for a drop\n  for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n    validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n      ? dropzoneElement\n      : null)\n  }\n\n  // get the most appropriate dropzone based on DOM depth and order\n  const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n  return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, dragEvent) {\n  const { dropState } = interaction\n  const dropEvents = {\n    enter     : null,\n    leave     : null,\n    activate  : null,\n    deactivate: null,\n    move      : null,\n    drop      : null,\n  }\n\n  if (dragEvent.type === 'dragstart') {\n    dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate')\n\n    dropEvents.activate.target   = null\n    dropEvents.activate.dropzone = null\n  }\n  if (dragEvent.type === 'dragend') {\n    dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n    dropEvents.deactivate.target   = null\n    dropEvents.deactivate.dropzone = null\n  }\n\n  if (dropState.rejected) {\n    return dropEvents\n  }\n\n  if (dropState.cur.element !== dropState.prev.element) {\n    // if there was a previous dropzone, create a dragleave event\n    if (dropState.prev.dropzone) {\n      dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave')\n\n      dragEvent.dragLeave    = dropEvents.leave.target   = dropState.prev.element\n      dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone\n    }\n    // if dropzone is not null, create a dragenter event\n    if (dropState.cur.dropzone) {\n      dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter')\n\n      dragEvent.dragEnter = dropState.cur.element\n      dragEvent.dropzone = dropState.cur.dropzone\n    }\n  }\n\n  if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n    dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop')\n\n    dragEvent.dropzone = dropState.cur.dropzone\n    dragEvent.relatedTarget = dropState.cur.element\n  }\n  if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n    dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove')\n\n    dropEvents.move.dragmove = dragEvent\n    dragEvent.dropzone = dropState.cur.dropzone\n  }\n\n  return dropEvents\n}\n\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n  const { dropState } = interaction\n  const {\n    activeDrops,\n    cur,\n    prev,\n  } = dropState\n\n  if (events.leave) { prev.dropzone.fire(events.leave) }\n  if (events.move) { cur.dropzone.fire(events.move) }\n  if (events.enter) { cur.dropzone.fire(events.enter) }\n  if (events.drop) { cur.dropzone.fire(events.drop) }\n\n  if (events.deactivate) {\n    fireActivationEvents(activeDrops, events.deactivate)\n  }\n\n  dropState.prev.dropzone  = cur.dropzone\n  dropState.prev.element = cur.element\n}\n\nfunction onEventCreated ({ interaction, iEvent, event }: Interact.DoPhaseArg<'drag', Interact.EventPhase>, scope) {\n  if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\n\n  const { dropState } = interaction\n\n  if (scope.dynamicDrop) {\n    dropState.activeDrops = getActiveDrops(scope, interaction.element)\n  }\n\n  const dragEvent = iEvent\n  const dropResult = getDrop(interaction, dragEvent, event)\n\n  // update rejected status\n  dropState.rejected = dropState.rejected &&\n    !!dropResult &&\n    dropResult.dropzone === dropState.cur.dropzone &&\n    dropResult.element === dropState.cur.element\n\n  dropState.cur.dropzone  = dropResult && dropResult.dropzone\n  dropState.cur.element = dropResult && dropResult.element\n\n  dropState.events = getDropEvents(interaction, event, dragEvent)\n}\n\nfunction dropzoneMethod (interactable: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n  if (utils.is.object(options)) {\n    interactable.options.drop.enabled = options.enabled !== false\n\n    if (options.listeners) {\n      const normalized = utils.normalizeListeners(options.listeners)\n      // rename 'drop' to '' as it will be prefixed with 'drop'\n      const corrected = Object.keys(normalized).reduce((acc, type) => {\n        const correctedType = /^(enter|leave)/.test(type)\n          ? `drag${type}`\n          : /^(activate|deactivate|move)/.test(type)\n            ? `drop${type}`\n            : type\n\n        acc[correctedType] = normalized[type]\n\n        return acc\n      }, {})\n\n      interactable.off(interactable.options.drop.listeners)\n      interactable.on(corrected)\n      interactable.options.drop.listeners = corrected\n    }\n\n    if (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n    if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n    if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n    if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n    if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n    if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n    if (/^(pointer|center)$/.test(options.overlap as string)) {\n      interactable.options.drop.overlap = options.overlap\n    }\n    else if (utils.is.number(options.overlap)) {\n      interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0)\n    }\n    if ('accept' in options) {\n      interactable.options.drop.accept = options.accept\n    }\n    if ('checker' in options) {\n      interactable.options.drop.checker = options.checker\n    }\n\n    return interactable\n  }\n\n  if (utils.is.bool(options)) {\n    interactable.options.drop.enabled = options\n\n    return interactable\n  }\n\n  return interactable.options.drop\n}\n\nfunction dropCheckMethod (\n  interactable: Interact.Interactable,\n  dragEvent: InteractEvent,\n  event: Interact.PointerEventType,\n  draggable: Interact.Interactable,\n  draggableElement: Interact.Element,\n  dropElement: Interact.Element,\n  rect: any,\n) {\n  let dropped = false\n\n  // if the dropzone has no rect (eg. display: none)\n  // call the custom dropChecker or just return false\n  if (!(rect = rect || interactable.getRect(dropElement))) {\n    return (interactable.options.drop.checker\n      ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n      : false)\n  }\n\n  const dropOverlap = interactable.options.drop.overlap\n\n  if (dropOverlap === 'pointer') {\n    const origin = utils.getOriginXY(draggable, draggableElement, 'drag')\n    const page = utils.pointer.getPageXY(dragEvent)\n\n    page.x += origin.x\n    page.y += origin.y\n\n    const horizontal = (page.x > rect.left) && (page.x < rect.right)\n    const vertical   = (page.y > rect.top) && (page.y < rect.bottom)\n\n    dropped = horizontal && vertical\n  }\n\n  const dragRect = draggable.getRect(draggableElement)\n\n  if (dragRect && dropOverlap === 'center') {\n    const cx = dragRect.left + dragRect.width  / 2\n    const cy = dragRect.top  + dragRect.height / 2\n\n    dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom\n  }\n\n  if (dragRect && utils.is.number(dropOverlap)) {\n    const overlapArea  = (Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *\n                          Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top)))\n\n    const overlapRatio = overlapArea / (dragRect.width * dragRect.height)\n\n    dropped = overlapRatio >= dropOverlap\n  }\n\n  if (interactable.options.drop.checker) {\n    dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n  }\n\n  return dropped\n}\n\nconst drop: Interact.Plugin = {\n  id: 'actions/drop',\n  install,\n  listeners: {\n    'interactions:before-action-start': ({ interaction }) => {\n      if (interaction.prepared.name !== 'drag') { return }\n\n      interaction.dropState = {\n        cur: {\n          dropzone: null,\n          element: null,\n        },\n        prev: {\n          dropzone: null,\n          element: null,\n        },\n        rejected: null,\n        events: null,\n        activeDrops: [],\n      }\n    },\n\n    'interactions:after-action-start': ({ interaction, event, iEvent: dragEvent }: Interact.DoPhaseArg<'drag', Interact.EventPhase>, scope) => {\n      if (interaction.prepared.name !== 'drag') { return }\n\n      const { dropState } = interaction\n\n      // reset active dropzones\n      dropState.activeDrops = null\n      dropState.events = null\n      dropState.activeDrops = getActiveDrops(scope, interaction.element)\n      dropState.events = getDropEvents(interaction, event, dragEvent)\n\n      if (dropState.events.activate) {\n        fireActivationEvents(dropState.activeDrops, dropState.events.activate)\n        scope.fire('actions/drop:start', { interaction, dragEvent })\n      }\n    },\n\n    // FIXME proper signal types\n    'interactions:action-move': onEventCreated,\n    'interactions:action-end': onEventCreated,\n\n    'interactions:after-action-move': function fireDropAfterMove ({ interaction, iEvent: dragEvent }: Interact.DoPhaseArg<'drag', Interact.EventPhase>, scope) {\n      if (interaction.prepared.name !== 'drag') { return }\n\n      fireDropEvents(interaction, interaction.dropState.events)\n\n      scope.fire('actions/drop:move', { interaction, dragEvent })\n      interaction.dropState.events = {}\n    },\n\n    'interactions:after-action-end': ({ interaction, iEvent: dragEvent }: Interact.DoPhaseArg<'drag', Interact.EventPhase>, scope) => {\n      if (interaction.prepared.name !== 'drag') { return }\n\n      fireDropEvents(interaction, interaction.dropState.events)\n      scope.fire('actions/drop:end', { interaction, dragEvent })\n    },\n\n    'interactions:stop': ({ interaction }) => {\n      if (interaction.prepared.name !== 'drag') { return }\n\n      const { dropState } = interaction\n\n      if (dropState) {\n        dropState.activeDrops = null\n        dropState.events = null\n        dropState.cur.dropzone = null\n        dropState.cur.element = null\n        dropState.prev.dropzone = null\n        dropState.prev.element = null\n        dropState.rejected = false\n      }\n    },\n  },\n  getActiveDrops,\n  getDrop,\n  getDropEvents,\n  fireDropEvents,\n  defaults: {\n    enabled: false,\n    accept : null,\n    overlap: 'pointer',\n  } as Interact.DropzoneOptions,\n}\n\nexport default drop\n","import * as utils from '@interactjs/utils/index'\n\nexport type GesturableMethod = Interact.ActionMethod<Interact.GesturableOptions>\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    gesture?: {\n      angle: number           // angle from first to second touch\n      distance: number\n      scale: number           // gesture.distance / gesture.startDistance\n      startAngle: number      // angle of line joining two touches\n      startDistance: number   // distance between two touches of touchStart\n    }\n  }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n  interface Interactable {\n    gesturable: GesturableMethod\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface ActionDefaults {\n    gesture: Interact.GesturableOptions\n  }\n}\n\ndeclare module '@interactjs/core/scope' {\n  interface ActionMap {\n    gesture?: typeof gesture\n  }\n}\n\nexport interface GestureEvent extends Interact.InteractEvent<'gesture'> {\n  distance: number\n  angle: number\n  da: number // angle change\n  scale: number // ratio of distance start to current event\n  ds: number // scale change\n  box: Interact.Rect // enclosing box of all points\n  touches: Interact.PointerType[]\n}\n\nexport interface GestureSignalArg extends Interact.DoPhaseArg<'gesture', Interact.EventPhase> {\n  iEvent: GestureEvent\n  interaction: Interact.Interaction<'gesture'>\n}\n\nfunction install (scope: Interact.Scope) {\n  const {\n    actions,\n    Interactable,\n    defaults,\n  } = scope\n\n  /**\n   * ```js\n   * interact(element).gesturable({\n   *     onstart: function (event) {},\n   *     onmove : function (event) {},\n   *     onend  : function (event) {},\n   *\n   *     // limit multiple gestures.\n   *     // See the explanation in {@link Interactable.draggable} example\n   *     max: Infinity,\n   *     maxPerElement: 1,\n   * })\n   *\n   * var isGestureable = interact(element).gesturable()\n   * ```\n   *\n   * Gets or sets whether multitouch gestures can be performed on the target\n   *\n   * @param {boolean | object} [options] true/false or An object with event\n   * listeners to be fired on gesture events (makes the Interactable gesturable)\n   * @return {boolean | Interactable} A boolean indicating if this can be the\n   * target of gesture events, or this Interactable\n   */\n  Interactable.prototype.gesturable = function (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {\n    if (utils.is.object(options)) {\n      this.options.gesture.enabled = options.enabled !== false\n      this.setPerAction('gesture', options)\n      this.setOnEvents('gesture', options)\n\n      return this\n    }\n\n    if (utils.is.bool(options)) {\n      this.options.gesture.enabled = options\n\n      return this\n    }\n\n    return this.options.gesture as Interact.Options\n  } as GesturableMethod\n\n  actions.map.gesture = gesture\n  actions.methodDict.gesture = 'gesturable'\n\n  defaults.actions.gesture = gesture.defaults\n}\n\nfunction updateGestureProps ({ interaction, iEvent, phase }: GestureSignalArg) {\n  if (interaction.prepared.name !== 'gesture') { return }\n\n  const pointers = interaction.pointers.map(p => p.pointer)\n  const starting = phase === 'start'\n  const ending = phase === 'end'\n  const deltaSource = interaction.interactable.options.deltaSource\n\n  iEvent.touches = [pointers[0], pointers[1]]\n\n  if (starting) {\n    iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n    iEvent.box      = utils.pointer.touchBBox(pointers)\n    iEvent.scale    = 1\n    iEvent.ds       = 0\n    iEvent.angle    = utils.pointer.touchAngle(pointers, deltaSource)\n    iEvent.da       = 0\n\n    interaction.gesture.startDistance = iEvent.distance\n    interaction.gesture.startAngle = iEvent.angle\n  }\n  else if (ending) {\n    const prevEvent = interaction.prevEvent as GestureEvent\n\n    iEvent.distance = prevEvent.distance\n    iEvent.box      = prevEvent.box\n    iEvent.scale    = prevEvent.scale\n    iEvent.ds       = 0\n    iEvent.angle    = prevEvent.angle\n    iEvent.da       = 0\n  }\n  else {\n    iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n    iEvent.box      = utils.pointer.touchBBox(pointers)\n    iEvent.scale    = iEvent.distance / interaction.gesture.startDistance\n    iEvent.angle    = utils.pointer.touchAngle(pointers, deltaSource)\n\n    iEvent.ds = iEvent.scale - interaction.gesture.scale\n    iEvent.da = iEvent.angle - interaction.gesture.angle\n  }\n\n  interaction.gesture.distance = iEvent.distance\n  interaction.gesture.angle = iEvent.angle\n\n  if (utils.is.number(iEvent.scale) &&\n      iEvent.scale !== Infinity &&\n      !isNaN(iEvent.scale)) {\n    interaction.gesture.scale = iEvent.scale\n  }\n}\n\nconst gesture: Interact.Plugin = {\n  id: 'actions/gesture',\n  before: ['actions/drag', 'actions/resize'],\n  install,\n  listeners: {\n    'interactions:action-start': updateGestureProps,\n    'interactions:action-move': updateGestureProps,\n    'interactions:action-end': updateGestureProps,\n\n    'interactions:new': ({ interaction }) => {\n      interaction.gesture = {\n        angle: 0,\n        distance: 0,\n        scale: 1,\n        startAngle: 0,\n        startDistance: 0,\n      }\n    },\n\n    'auto-start:check': arg => {\n      if (arg.interaction.pointers.length < 2) {\n        return undefined\n      }\n\n      const gestureOptions = arg.interactable.options.gesture\n\n      if (!(gestureOptions && gestureOptions.enabled)) {\n        return undefined\n      }\n\n      arg.action = { name: 'gesture' }\n\n      return false\n    },\n  },\n\n  defaults: {\n  },\n\n  getCursor () {\n    return ''\n  },\n}\n\nexport default gesture\n","import { Interaction } from '@interactjs/core/Interaction'\nimport Scope from '@interactjs/core/scope'\nimport * as dom from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = Interact.ActionMethod<Interact.ResizableOptions>\n\ndeclare module '@interactjs/core/Interactable' {\n  interface Interactable {\n    resizable: ResizableMethod\n  }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    resizeAxes: 'x' | 'y' | 'xy'\n    resizeStartAspectRatio: number\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface ActionDefaults {\n    resize: Interact.ResizableOptions\n  }\n}\n\ndeclare module '@interactjs/core/scope' {\n  interface ActionMap {\n    resize?: typeof resize\n  }\n}\n\nexport interface ResizeEvent<P extends Interact.EventPhase = Interact.EventPhase> extends Interact.InteractEvent<'resize', P> {\n  deltaRect?: Interact.FullRect\n  edges?: Interact.ActionProps['edges']\n}\n\nfunction install (scope: Scope) {\n  const {\n    actions,\n    browser,\n    /** @lends Interactable */\n    Interactable, // tslint:disable-line no-shadowed-variable\n    defaults,\n  } = scope\n\n  // Less Precision with touch input\n\n  resize.cursors = initCursors(browser)\n  resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10\n\n  /**\n   * ```js\n   * interact(element).resizable({\n   *   onstart: function (event) {},\n   *   onmove : function (event) {},\n   *   onend  : function (event) {},\n   *\n   *   edges: {\n   *     top   : true,       // Use pointer coords to check for resize.\n   *     left  : false,      // Disable resizing from left edge.\n   *     bottom: '.resize-s',// Resize if pointer target matches selector\n   *     right : handleEl    // Resize if pointer target is the given Element\n   *   },\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height are adjusted at a 1:1 ratio.\n   *     square: false,\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height maintain the aspect ratio they had when resizing started.\n   *     preserveAspectRatio: false,\n   *\n   *   // a value of 'none' will limit the resize rect to a minimum of 0x0\n   *   // 'negate' will allow the rect to have negative width/height\n   *   // 'reposition' will keep the width/height positive by swapping\n   *   // the top and bottom edges and/or swapping the left and right edges\n   *   invert: 'none' || 'negate' || 'reposition'\n   *\n   *   // limit multiple resizes.\n   *   // See the explanation in the {@link Interactable.draggable} example\n   *   max: Infinity,\n   *   maxPerElement: 1,\n   * })\n   *\n   * var isResizeable = interact(element).resizable()\n   * ```\n   *\n   * Gets or sets whether resize actions can be performed on the target\n   *\n   * @param {boolean | object} [options] true/false or An object with event\n   * listeners to be fired on resize events (object makes the Interactable\n   * resizable)\n   * @return {boolean | Interactable} A boolean indicating if this can be the\n   * target of resize elements, or this Interactable\n   */\n  Interactable.prototype.resizable = function (this: Interact.Interactable, options: Interact.ResizableOptions | boolean) {\n    return resizable(this, options, scope)\n  } as ResizableMethod\n\n  actions.map.resize = resize\n  actions.methodDict.resize = 'resizable'\n\n  defaults.actions.resize = resize.defaults\n}\n\nfunction resizeChecker (arg) {\n  const { interaction, interactable, element, rect, buttons } = arg\n\n  if (!rect) { return undefined }\n\n  const page = extend({}, interaction.coords.cur.page)\n  const resizeOptions = interactable.options.resize\n\n  if (\n    !(resizeOptions && resizeOptions.enabled) ||\n    // check mouseButton setting if the pointer is down\n    (interaction.pointerIsDown &&\n     /mouse|pointer/.test(interaction.pointerType) &&\n   (buttons & resizeOptions.mouseButtons) === 0)\n  ) {\n    return undefined\n  }\n\n  // if using resize.edges\n  if (is.object(resizeOptions.edges)) {\n    const resizeEdges = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false,\n    }\n\n    for (const edge in resizeEdges) {\n      resizeEdges[edge] = checkResizeEdge(edge,\n        resizeOptions.edges[edge],\n        page,\n        interaction._latestPointer.eventTarget,\n        element,\n        rect,\n        resizeOptions.margin || resize.defaultMargin)\n    }\n\n    resizeEdges.left = resizeEdges.left && !resizeEdges.right\n    resizeEdges.top  = resizeEdges.top  && !resizeEdges.bottom\n\n    if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n      arg.action = {\n        name: 'resize',\n        edges: resizeEdges,\n      }\n    }\n  }\n  else {\n    const right  = resizeOptions.axis !== 'y' && page.x > (rect.right  - resize.defaultMargin)\n    const bottom = resizeOptions.axis !== 'x' && page.y > (rect.bottom - resize.defaultMargin)\n\n    if (right || bottom) {\n      arg.action = {\n        name: 'resize',\n        axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n      }\n    }\n  }\n\n  return arg.action ? false : undefined\n}\n\nfunction resizable (interactable: Interact.Interactable, options: Interact.OrBoolean<Interact.ResizableOptions> | boolean, scope: Scope) {\n  if (is.object(options)) {\n    interactable.options.resize.enabled = options.enabled !== false\n    interactable.setPerAction('resize', options)\n    interactable.setOnEvents('resize', options)\n\n    if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n      interactable.options.resize.axis = options.axis\n    }\n    else if (options.axis === null) {\n      interactable.options.resize.axis = scope.defaults.actions.resize.axis\n    }\n\n    if (is.bool(options.preserveAspectRatio)) {\n      interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n    }\n    else if (is.bool(options.square)) {\n      interactable.options.resize.square = options.square\n    }\n\n    return interactable\n  }\n  if (is.bool(options)) {\n    interactable.options.resize.enabled = options\n\n    return interactable\n  }\n  return interactable.options.resize\n}\n\nfunction checkResizeEdge (\n  name: string,\n  value: any,\n  page: Interact.Point,\n  element: Node,\n  interactableElement: Interact.Element,\n  rect: Interact.Rect,\n  margin: number,\n) {\n  // false, '', undefined, null\n  if (!value) { return false }\n\n  // true value, use pointer coords and element rect\n  if (value === true) {\n    // if dimensions are negative, \"switch\" edges\n    const width  = is.number(rect.width) ? rect.width  : rect.right  - rect.left\n    const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top\n\n    // don't use margin greater than half the relevent dimension\n    margin = Math.min(margin, (name === 'left' || name === 'right' ? width : height) / 2)\n\n    if (width < 0) {\n      if      (name === 'left')  { name = 'right' }\n      else if (name === 'right') { name = 'left'  }\n    }\n    if (height < 0) {\n      if      (name === 'top')    { name = 'bottom' }\n      else if (name === 'bottom') { name = 'top'    }\n    }\n\n    if (name === 'left') { return page.x < ((width  >= 0 ? rect.left : rect.right) + margin) }\n    if (name === 'top') { return page.y < ((height >= 0 ? rect.top : rect.bottom) + margin) }\n\n    if (name === 'right') { return page.x > ((width  >= 0 ? rect.right : rect.left) - margin) }\n    if (name === 'bottom') { return page.y > ((height >= 0 ? rect.bottom : rect.top) - margin) }\n  }\n\n  // the remaining checks require an element\n  if (!is.element(element)) { return false }\n\n  return is.element(value)\n  // the value is an element to use as a resize handle\n    ? value === element\n    // otherwise check if element matches value as selector\n    : dom.matchesUpTo(element, value, interactableElement)\n}\n\nfunction initCursors (browser: typeof import ('@interactjs/utils/browser').default) {\n  return (browser.isIe9 ? {\n    x : 'e-resize',\n    y : 's-resize',\n    xy: 'se-resize',\n\n    top        : 'n-resize',\n    left       : 'w-resize',\n    bottom     : 's-resize',\n    right      : 'e-resize',\n    topleft    : 'se-resize',\n    bottomright: 'se-resize',\n    topright   : 'ne-resize',\n    bottomleft : 'ne-resize',\n  } : {\n    x : 'ew-resize',\n    y : 'ns-resize',\n    xy: 'nwse-resize',\n\n    top        : 'ns-resize',\n    left       : 'ew-resize',\n    bottom     : 'ns-resize',\n    right      : 'ew-resize',\n    topleft    : 'nwse-resize',\n    bottomright: 'nwse-resize',\n    topright   : 'nesw-resize',\n    bottomleft : 'nesw-resize',\n  })\n}\n\nfunction start ({ iEvent, interaction }: { iEvent: Interact.InteractEvent<any, any>, interaction: Interaction }) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return\n  }\n\n  const resizeEvent = iEvent as ResizeEvent\n  const rect = interaction.rect\n\n  interaction._rects = {\n    start: extend({}, rect),\n    corrected: extend({}, rect),\n    previous: extend({}, rect),\n    delta: {\n      left: 0,\n      right : 0,\n      width : 0,\n      top : 0,\n      bottom: 0,\n      height: 0,\n    },\n  }\n\n  resizeEvent.edges = interaction.prepared.edges\n  resizeEvent.rect = interaction._rects.corrected\n  resizeEvent.deltaRect = interaction._rects.delta\n}\n\nfunction move ({ iEvent, interaction }: { iEvent: Interact.InteractEvent<any, any>, interaction: Interaction }) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n  const resizeEvent = iEvent as ResizeEvent\n  const resizeOptions = interaction.interactable.options.resize\n  const invert = resizeOptions.invert\n  const invertible = invert === 'reposition' || invert === 'negate'\n\n  // eslint-disable-next-line no-shadow\n  const current = interaction.rect\n  const { start: startRect, corrected, delta: deltaRect, previous } = interaction._rects\n\n  extend(previous, corrected)\n\n  if (invertible) {\n    // if invertible, copy the current rect\n    extend(corrected, current)\n\n    if (invert === 'reposition') {\n      // swap edge values if necessary to keep width/height positive\n      if (corrected.top > corrected.bottom) {\n        const swap = corrected.top\n\n        corrected.top = corrected.bottom\n        corrected.bottom = swap\n      }\n      if (corrected.left > corrected.right) {\n        const swap = corrected.left\n\n        corrected.left = corrected.right\n        corrected.right = swap\n      }\n    }\n  }\n  else {\n    // if not invertible, restrict to minimum of 0x0 rect\n    corrected.top    = Math.min(current.top, startRect.bottom)\n    corrected.bottom = Math.max(current.bottom, startRect.top)\n    corrected.left   = Math.min(current.left, startRect.right)\n    corrected.right  = Math.max(current.right, startRect.left)\n  }\n\n  corrected.width  = corrected.right  - corrected.left\n  corrected.height = corrected.bottom - corrected.top\n\n  for (const edge in corrected) {\n    deltaRect[edge] = corrected[edge] - previous[edge]\n  }\n\n  resizeEvent.edges = interaction.prepared.edges\n  resizeEvent.rect = corrected\n  resizeEvent.deltaRect = deltaRect\n}\n\nfunction end ({ iEvent, interaction }: { iEvent: Interact.InteractEvent<any, any>, interaction: Interaction }) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n  const resizeEvent = iEvent as ResizeEvent\n\n  resizeEvent.edges = interaction.prepared.edges\n  resizeEvent.rect = interaction._rects.corrected\n  resizeEvent.deltaRect = interaction._rects.delta\n}\n\nfunction updateEventAxes ({ iEvent, interaction }: { iEvent: Interact.InteractEvent<any, any>, interaction: Interaction }) {\n  if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) { return }\n\n  const options = interaction.interactable.options\n  const resizeEvent = iEvent as ResizeEvent\n\n  if (options.resize.square) {\n    if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = resizeEvent.delta.y\n    }\n    else {\n      resizeEvent.delta.y = resizeEvent.delta.x\n    }\n    resizeEvent.axes = 'xy'\n  }\n  else {\n    resizeEvent.axes = interaction.resizeAxes\n\n    if (interaction.resizeAxes === 'x') {\n      resizeEvent.delta.y = 0\n    }\n    else if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = 0\n    }\n  }\n}\n\nconst resize: Interact.Plugin = {\n  id: 'actions/resize',\n  before: ['actions/drag'],\n  install,\n  listeners: {\n    'interactions:new': ({ interaction }) => {\n      interaction.resizeAxes = 'xy'\n    },\n\n    'interactions:action-start': arg => {\n      start(arg)\n      updateEventAxes(arg)\n    },\n    'interactions:action-move': arg => {\n      move(arg)\n      updateEventAxes(arg)\n    },\n    'interactions:action-end': end,\n    'auto-start:check': resizeChecker,\n  },\n\n  defaults: {\n    square: false,\n    preserveAspectRatio: false,\n    axis: 'xy',\n\n    // use default margin\n    margin: NaN,\n\n    // object with props left, right, top, bottom which are\n    // true/false values to resize when the pointer is over that edge,\n    // CSS selectors to match the handles for each direction\n    // or the Elements for each handle\n    edges: null,\n\n    // a value of 'none' will limit the resize rect to a minimum of 0x0\n    // 'negate' will alow the rect to have negative width/height\n    // 'reposition' will keep the width/height positive by swapping\n    // the top and bottom edges and/or swapping the left and right edges\n    invert: 'none',\n  } as Interact.ResizableOptions,\n\n  cursors: null as ReturnType<typeof initCursors>,\n\n  getCursor ({ edges, axis, name }: Interact.ActionProps) {\n    const cursors = resize.cursors\n    let result: string = null\n\n    if (axis) {\n      result = cursors[name + axis]\n    }\n    else if (edges) {\n      let cursorKey = ''\n\n      for (const edge of ['top', 'bottom', 'left', 'right']) {\n        if (edges[edge]) {\n          cursorKey += edge\n        }\n      }\n\n      result = cursors[cursorKey]\n    }\n\n    return result\n  },\n\n  defaultMargin: null as number,\n}\n\nexport default resize\n","import Scope from '@interactjs/core/scope'\nimport drag from './drag'\nimport drop from './drop/index'\nimport gesture from './gesture'\nimport resize from './resize'\n\nexport default {\n  id: 'actions',\n  install (scope: Scope) {\n    scope.usePlugin(gesture)\n    scope.usePlugin(resize)\n    scope.usePlugin(drag)\n    scope.usePlugin(drop)\n  },\n}\n\nexport {\n  gesture,\n  resize,\n  drag,\n  drop,\n}\n","export type ArrangeEvent = {}\nexport type ArrangeMode = {}\n\nexport default {}\n","import * as domUtils from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\ndeclare module '@interactjs/core/scope' {\n  interface Scope {\n    autoScroll: typeof autoScroll\n  }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    autoScroll?: typeof autoScroll\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface PerActionDefaults {\n    autoScroll?: AutoScrollOptions\n  }\n}\n\nexport interface AutoScrollOptions {\n  container?: Window | HTMLElement\n  margin?: number\n  distance?: number\n  interval?: number\n  speed?: number\n  enabled?: boolean\n}\n\nfunction install (scope: Scope) {\n  const {\n    defaults,\n    actions,\n  } = scope\n\n  scope.autoScroll = autoScroll\n  autoScroll.now = () => scope.now()\n\n  actions.phaselessTypes.autoscroll = true\n  defaults.perAction.autoScroll = autoScroll.defaults\n}\n\nconst autoScroll = {\n  defaults: {\n    enabled  : false,\n    margin   : 60,\n\n    // the item that is scrolled (Window or HTMLElement)\n    container: null as AutoScrollOptions['container'],\n\n    // the scroll speed in pixels per second\n    speed    : 300,\n  } as AutoScrollOptions,\n\n  now: Date.now,\n\n  interaction: null as Interact.Interaction,\n  i: 0, // the handle returned by window.setInterval\n\n  // Direction each pulse is to scroll in\n  x: 0,\n  y: 0,\n\n  isScrolling: false,\n  prevTime: 0,\n  margin: 0,\n  speed: 0,\n\n  start (interaction: Interact.Interaction) {\n    autoScroll.isScrolling = true\n    raf.cancel(autoScroll.i)\n\n    interaction.autoScroll = autoScroll\n    autoScroll.interaction = interaction\n    autoScroll.prevTime = autoScroll.now()\n    autoScroll.i = raf.request(autoScroll.scroll)\n  },\n\n  stop () {\n    autoScroll.isScrolling = false\n    if (autoScroll.interaction) {\n      autoScroll.interaction.autoScroll = null\n    }\n    raf.cancel(autoScroll.i)\n  },\n\n  // scroll the window by the values in scroll.x/y\n  scroll () {\n    const { interaction } = autoScroll\n    const { interactable, element } = interaction\n    const actionName = interaction.prepared.name\n    const options = interactable.options[actionName].autoScroll\n    const container = getContainer(options.container, interactable, element)\n    const now = autoScroll.now()\n    // change in time in seconds\n    const dt = (now - autoScroll.prevTime) / 1000\n    // displacement\n    const s = options.speed * dt\n\n    if (s >= 1) {\n      const scrollBy = {\n        x: autoScroll.x * s,\n        y: autoScroll.y * s,\n      }\n\n      if (scrollBy.x || scrollBy.y) {\n        const prevScroll = getScroll(container)\n\n        if (is.window(container)) {\n          container.scrollBy(scrollBy.x, scrollBy.y)\n        }\n        else if (container) {\n          container.scrollLeft += scrollBy.x\n          container.scrollTop  += scrollBy.y\n        }\n\n        const curScroll = getScroll(container)\n        const delta = {\n          x: curScroll.x - prevScroll.x,\n          y: curScroll.y - prevScroll.y,\n        }\n\n        if (delta.x || delta.y) {\n          interactable.fire({\n            type: 'autoscroll',\n            target: element,\n            interactable,\n            delta,\n            interaction,\n            container,\n          })\n        }\n      }\n\n      autoScroll.prevTime = now\n    }\n\n    if (autoScroll.isScrolling) {\n      raf.cancel(autoScroll.i)\n      autoScroll.i = raf.request(autoScroll.scroll)\n    }\n  },\n  check (interactable: Interact.Interactable, actionName: Interact.ActionName) {\n    const options = interactable.options\n\n    return options[actionName].autoScroll && options[actionName].autoScroll.enabled\n  },\n  onInteractionMove<T extends Interact.ActionName> ({ interaction, pointer }: { interaction: Interact.Interaction<T>, pointer: Interact.PointerType }) {\n    if (!(interaction.interacting() &&\n          autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n      return\n    }\n\n    if (interaction.simulation) {\n      autoScroll.x = autoScroll.y = 0\n      return\n    }\n\n    let top\n    let right\n    let bottom\n    let left\n\n    const { interactable, element } = interaction\n    const actionName = interaction.prepared.name\n    const options = interactable.options[actionName].autoScroll\n    const container = getContainer(options.container, interactable, element)\n\n    if (is.window(container)) {\n      left   = pointer.clientX < autoScroll.margin\n      top    = pointer.clientY < autoScroll.margin\n      right  = pointer.clientX > container.innerWidth  - autoScroll.margin\n      bottom = pointer.clientY > container.innerHeight - autoScroll.margin\n    }\n    else {\n      const rect = domUtils.getElementClientRect(container)\n\n      left   = pointer.clientX < rect.left   + autoScroll.margin\n      top    = pointer.clientY < rect.top    + autoScroll.margin\n      right  = pointer.clientX > rect.right  - autoScroll.margin\n      bottom = pointer.clientY > rect.bottom - autoScroll.margin\n    }\n\n    autoScroll.x = (right ? 1 : left ? -1 : 0)\n    autoScroll.y = (bottom ? 1 :  top ? -1 : 0)\n\n    if (!autoScroll.isScrolling) {\n      // set the autoScroll properties to those of the target\n      autoScroll.margin = options.margin\n      autoScroll.speed  = options.speed\n\n      autoScroll.start(interaction)\n    }\n  },\n}\n\nexport function getContainer (value: any, interactable: Interact.Interactable, element: Interact.Element) {\n  return (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n}\n\nexport function getScroll (container: any) {\n  if (is.window(container)) { container = window.document.body }\n\n  return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container: any) {\n  if (is.window(container)) { container = window.document.body }\n\n  return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta<T extends Interact.ActionName> ({ interaction, element }: {\n  interaction: Partial<Interact.Interaction<T>>\n  element: Interact.Element\n}, func: any) {\n  const scrollOptions = interaction && interaction.interactable.options[interaction.prepared.name].autoScroll\n\n  if (!scrollOptions || !scrollOptions.enabled) {\n    func()\n    return { x: 0, y: 0 }\n  }\n\n  const scrollContainer = getContainer(\n    scrollOptions.container,\n    interaction.interactable,\n    element,\n  )\n\n  const prevSize = getScroll(scrollContainer)\n  func()\n  const curSize = getScroll(scrollContainer)\n\n  return {\n    x: curSize.x - prevSize.x,\n    y: curSize.y - prevSize.y,\n  }\n}\n\nconst autoScrollPlugin: Interact.Plugin = {\n  id: 'auto-scroll',\n  install,\n  listeners: {\n    'interactions:new': ({ interaction }) => {\n      interaction.autoScroll = null\n    },\n\n    'interactions:destroy': ({ interaction }) => {\n      interaction.autoScroll = null\n      autoScroll.stop()\n      if (autoScroll.interaction) {\n        autoScroll.interaction = null\n      }\n    },\n\n    'interactions:stop': autoScroll.stop,\n\n    'interactions:action-move': (arg: any) => autoScroll.onInteractionMove(arg),\n  },\n}\n\nexport default autoScrollPlugin\n","import { warnOnce } from '@interactjs/utils/index'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n  interface Interactable {\n    getAction: (\n      this: Interact.Interactable,\n      pointer: Interact.PointerType,\n      event: Interact.PointerEventType,\n      interaction: Interact.Interaction,\n      element: Interact.Element,\n    ) => Interact.ActionProps | null\n    styleCursor: typeof styleCursor\n    actionChecker: typeof actionChecker\n    ignoreFrom: {\n      (...args: any[]): Interactable\n      (): boolean\n    }\n    allowFrom: {\n      (...args: any[]): Interactable\n      (): boolean\n    }\n  }\n}\n\nfunction install (scope: Interact.Scope) {\n  const {\n    /** @lends Interactable */\n    Interactable, // tslint:disable-line no-shadowed-variable\n  } = scope\n\n  Interactable.prototype.getAction = function getAction (\n    this: Interact.Interactable,\n    pointer: Interact.PointerType,\n    event: Interact.PointerEventType,\n    interaction: Interact.Interaction,\n    element: Interact.Element,\n  ): Interact.ActionProps {\n    const action = defaultActionChecker(this, event, interaction, element, scope)\n\n    if (this.options.actionChecker) {\n      return this.options.actionChecker(pointer, event, action, this, element, interaction)\n    }\n\n    return action\n  }\n\n  /**\n   * ```js\n   * interact(element, { ignoreFrom: document.getElementById('no-action') })\n   * // or\n   * interact(element).ignoreFrom('input, textarea, a')\n   * ```\n   * @deprecated\n   * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n   * of it's parents match the given CSS selector or Element, no\n   * drag/resize/gesture is started.\n   *\n   * Don't use this method. Instead set the `ignoreFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * @example\n   * interact(targett)\n   *   .draggable({\n   *     ignoreFrom: 'input, textarea, a[href]'',\n   *   })\n   *   .pointerEvents({\n   *     ignoreFrom: '[no-pointer]',\n   *   })\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to not ignore any elements\n   * @return {string | Element | object} The current ignoreFrom value or this\n   * Interactable\n   */\n  Interactable.prototype.ignoreFrom = warnOnce(function (this: Interact.Interactable, newValue) {\n    return this._backCompatOption('ignoreFrom', newValue)\n  }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).')\n\n  /**\n   * @deprecated\n   *\n   * A drag/resize/gesture is started only If the target of the `mousedown`,\n   * `pointerdown` or `touchstart` event or any of it's parents match the given\n   * CSS selector or Element.\n   *\n   * Don't use this method. Instead set the `allowFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * @example\n   * interact(targett)\n   *   .resizable({\n   *     allowFrom: '.resize-handle',\n   *   .pointerEvents({\n   *     allowFrom: '.handle',,\n   *   })\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to allow from any element\n   * @return {string | Element | object} The current allowFrom value or this\n   * Interactable\n   */\n  Interactable.prototype.allowFrom = warnOnce(function (this: Interact.Interactable, newValue) {\n    return this._backCompatOption('allowFrom', newValue)\n  }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).')\n\n  /**\n   * ```js\n   * interact('.resize-drag')\n   *   .resizable(true)\n   *   .draggable(true)\n   *   .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n   *\n   *   if (interact.matchesSelector(event.target, '.drag-handle')) {\n   *     // force drag with handle target\n   *     action.name = drag\n   *   }\n   *   else {\n   *     // resize from the top and right edges\n   *     action.name  = 'resize'\n   *     action.edges = { top: true, right: true }\n   *   }\n   *\n   *   return action\n   * })\n   * ```\n   *\n   * Returns or sets the function used to check action to be performed on\n   * pointerDown\n   *\n   * @param {function | null} [checker] A function which takes a pointer event,\n   * defaultAction string, interactable, element and interaction as parameters\n   * and returns an object with name property 'drag' 'resize' or 'gesture' and\n   * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n   * props.\n   * @return {Function | Interactable} The checker function or this Interactable\n   */\n  Interactable.prototype.actionChecker = actionChecker\n\n  /**\n   * Returns or sets whether the the cursor should be changed depending on the\n   * action that would be performed if the mouse were pressed and dragged.\n   *\n   * @param {boolean} [newValue]\n   * @return {boolean | Interactable} The current setting or this Interactable\n   */\n  Interactable.prototype.styleCursor = styleCursor\n}\n\nfunction defaultActionChecker (\n  interactable: Interact.Interactable,\n  event: Interact.PointerEventType,\n  interaction: Interact.Interaction,\n  element: Interact.Element,\n  scope: Interact.Scope,\n) {\n  const rect = interactable.getRect(element)\n  const buttons = (event as MouseEvent).buttons || ({\n    0: 1,\n    1: 4,\n    3: 8,\n    4: 16,\n  })[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n  const arg = {\n    action: null,\n    interactable,\n    interaction,\n    element,\n    rect,\n    buttons,\n  }\n\n  scope.fire('auto-start:check', arg)\n\n  return arg.action\n}\n\nfunction styleCursor (this: Interact.Interactable): boolean\nfunction styleCursor (this: Interact.Interactable, newValue: boolean): typeof this\nfunction styleCursor (this: Interact.Interactable, newValue?: boolean) {\n  if (is.bool(newValue)) {\n    this.options.styleCursor = newValue\n\n    return this\n  }\n\n  if (newValue === null) {\n    delete this.options.styleCursor\n\n    return this\n  }\n\n  return this.options.styleCursor\n}\n\nfunction actionChecker (this: Interact.Interactable, checker: any) {\n  if (is.func(checker)) {\n    this.options.actionChecker = checker\n\n    return this\n  }\n\n  if (checker === null) {\n    delete this.options.actionChecker\n\n    return this\n  }\n\n  return this.options.actionChecker\n}\n\nexport default {\n  id: 'auto-start/interactableMethods',\n  install,\n}\n","import * as utils from '@interactjs/utils/index'\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/core/InteractStatic' {\n  interface InteractStatic {\n    maxInteractions: (newValue: any) => any\n  }\n}\n\ndeclare module '@interactjs/core/scope' {\n  interface Scope {\n    autoStart: AutoStart\n    maxInteractions: (...args: any[]) => any\n  }\n\n  interface SignalArgs {\n    'autoStart:before-start': Interact.SignalArgs['interactions:move']\n    'autoStart:prepared': { interaction: Interact.Interaction }\n    'auto-start:check': CheckSignalArg\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface BaseDefaults {\n    actionChecker?: any\n    cursorChecker?: any\n    styleCursor?: any\n  }\n\n  interface PerActionDefaults {\n    manualStart?: boolean\n    max?: number\n    maxPerElement?: number\n    allowFrom?: string | Interact.Element\n    ignoreFrom?: string | Interact.Element\n    cursorChecker?: Interact.CursorChecker\n\n    // only allow left button by default\n    // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n    mouseButtons?: 0 | 1 | 2 | 4 | 16\n  }\n}\n\ninterface CheckSignalArg {\n  interactable: Interact.Interactable\n  interaction: Interact.Interaction\n  element: Interact.Element\n  action: Interact.ActionProps\n  buttons: number\n}\n\nexport interface AutoStart {\n  // Allow this many interactions to happen simultaneously\n  maxInteractions: number\n  withinInteractionLimit: typeof withinInteractionLimit\n  cursorElement: Interact.Element\n}\n\nfunction install (scope: Interact.Scope) {\n  const {\n    interactStatic: interact,\n    defaults,\n  } = scope\n\n  scope.usePlugin(InteractableMethods)\n\n  defaults.base.actionChecker = null\n  defaults.base.styleCursor = true\n\n  utils.extend(defaults.perAction, {\n    manualStart: false,\n    max: Infinity,\n    maxPerElement: 1,\n    allowFrom:  null,\n    ignoreFrom: null,\n\n    // only allow left button by default\n    // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n    mouseButtons: 1,\n  })\n\n  /**\n   * Returns or sets the maximum number of concurrent interactions allowed.  By\n   * default only 1 interaction is allowed at a time (for backwards\n   * compatibility). To allow multiple interactions on the same Interactables and\n   * elements, you need to enable it in the draggable, resizable and gesturable\n   * `'max'` and `'maxPerElement'` options.\n   *\n   * @alias module:interact.maxInteractions\n   *\n   * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n   */\n  interact.maxInteractions = newValue => maxInteractions(newValue, scope)\n\n  scope.autoStart = {\n    // Allow this many interactions to happen simultaneously\n    maxInteractions: Infinity,\n    withinInteractionLimit,\n    cursorElement: null,\n  }\n}\n\nfunction prepareOnDown ({ interaction, pointer, event, eventTarget }: Interact.SignalArgs['interactions:down'], scope: Interact.Scope) {\n  if (interaction.interacting()) { return }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n  prepare(interaction, actionInfo, scope)\n}\n\nfunction prepareOnMove ({ interaction, pointer, event, eventTarget }: Interact.SignalArgs['interactions:move'], scope: Interact.Scope) {\n  if (interaction.pointerType !== 'mouse' ||\n      interaction.pointerIsDown ||\n      interaction.interacting()) { return }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget as Interact.Element, scope)\n  prepare(interaction, actionInfo, scope)\n}\n\nfunction startOnMove (arg: Interact.SignalArgs['interactions:move'], scope: Interact.Scope) {\n  const { interaction } = arg\n\n  if (!interaction.pointerIsDown ||\n      interaction.interacting() ||\n      !interaction.pointerWasMoved ||\n      !interaction.prepared.name) {\n    return\n  }\n\n  scope.fire('autoStart:before-start', arg)\n\n  const { interactable } = interaction\n  const actionName = interaction.prepared.name\n\n  if (actionName && interactable) {\n    // check manualStart and interaction limit\n    if (interactable.options[actionName].manualStart ||\n        !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n      interaction.stop()\n    }\n    else {\n      interaction.start(interaction.prepared, interactable, interaction.element)\n      setInteractionCursor(interaction, scope)\n    }\n  }\n}\n\nfunction clearCursorOnStop ({ interaction }: { interaction: Interact.Interaction }, scope: Interact.Scope) {\n  const { interactable } = interaction\n\n  if (interactable && interactable.options.styleCursor) {\n    setCursor(interaction.element, '', scope)\n  }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction<T extends Interact.ActionName> (\n  action: Interact.ActionProps<T>,\n  interactable: Interact.Interactable,\n  element: Interact.Element,\n  eventTarget: Interact.EventTarget,\n  scope: Interact.Scope,\n) {\n  if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n      interactable.options[action.name].enabled &&\n      withinInteractionLimit(interactable, element, action, scope)) {\n    return action\n  }\n\n  return null\n}\n\nfunction validateMatches (\n  interaction: Interact.Interaction,\n  pointer: Interact.PointerType,\n  event: Interact.PointerEventType,\n  matches: Interact.Interactable[],\n  matchElements: Interact.Element[],\n  eventTarget: Interact.EventTarget,\n  scope: Interact.Scope,\n) {\n  for (let i = 0, len = matches.length; i < len; i++) {\n    const match = matches[i]\n    const matchElement = matchElements[i]\n    const matchAction = match.getAction(pointer, event, interaction, matchElement)\n\n    if (!matchAction) { continue }\n\n    const action = validateAction(\n      matchAction,\n      match,\n      matchElement,\n      eventTarget,\n      scope)\n\n    if (action) {\n      return {\n        action,\n        interactable: match,\n        element: matchElement,\n      }\n    }\n  }\n\n  return { action: null, interactable: null, element: null }\n}\n\nfunction getActionInfo (\n  interaction: Interact.Interaction,\n  pointer: Interact.PointerType,\n  event: Interact.PointerEventType,\n  eventTarget: Interact.EventTarget,\n  scope: Interact.Scope,\n) {\n  let matches: Interact.Interactable[] = []\n  let matchElements: Interact.Element[] = []\n\n  let element = eventTarget as Interact.Element\n\n  function pushMatches (interactable: Interact.Interactable) {\n    matches.push(interactable)\n    matchElements.push(element)\n  }\n\n  while (utils.is.element(element)) {\n    matches = []\n    matchElements = []\n\n    scope.interactables.forEachMatch(element, pushMatches)\n\n    const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)\n\n    if (actionInfo.action &&\n      !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n      return actionInfo\n    }\n\n    element = utils.dom.parentNode(element) as Interact.Element\n  }\n\n  return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (\n  interaction: Interact.Interaction,\n  { action, interactable, element }: {\n    action: Interact.ActionProps\n    interactable: Interact.Interactable\n    element: Interact.Element\n  },\n  scope: Interact.Scope,\n) {\n  action = action || { name: null }\n\n  interaction.interactable = interactable\n  interaction.element = element\n  utils.copyAction(interaction.prepared, action)\n\n  interaction.rect = interactable && action.name\n    ? interactable.getRect(element)\n    : null\n\n  setInteractionCursor(interaction, scope)\n\n  scope.fire('autoStart:prepared', { interaction })\n}\n\nfunction withinInteractionLimit<T extends Interact.ActionName> (\n  interactable: Interact.Interactable,\n  element: Interact.Element,\n  action: Interact.ActionProps<T>,\n  scope: Interact.Scope,\n) {\n  const options = interactable.options\n  const maxActions = options[action.name].max\n  const maxPerElement = options[action.name].maxPerElement\n  const autoStartMax = scope.autoStart.maxInteractions\n  let activeInteractions = 0\n  let interactableCount = 0\n  let elementCount = 0\n\n  // no actions if any of these values == 0\n  if (!(maxActions && maxPerElement && autoStartMax)) { return false }\n\n  for (const interaction of scope.interactions.list) {\n    const otherAction = interaction.prepared.name\n\n    if (!interaction.interacting()) { continue }\n\n    activeInteractions++\n\n    if (activeInteractions >= autoStartMax) {\n      return false\n    }\n\n    if (interaction.interactable !== interactable) { continue }\n\n    interactableCount += otherAction === action.name ? 1 : 0\n\n    if (interactableCount >= maxActions) {\n      return false\n    }\n\n    if (interaction.element === element) {\n      elementCount++\n\n      if (otherAction === action.name && elementCount >= maxPerElement) {\n        return false\n      }\n    }\n  }\n\n  return autoStartMax > 0\n}\n\nfunction maxInteractions (newValue: any, scope: Interact.Scope) {\n  if (utils.is.number(newValue)) {\n    scope.autoStart.maxInteractions = newValue\n\n    return this\n  }\n\n  return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: Interact.Element, cursor: string, scope: Interact.Scope) {\n  const { cursorElement: prevCursorElement } = scope.autoStart\n\n  if (prevCursorElement && prevCursorElement !== element) {\n    prevCursorElement.style.cursor = ''\n  }\n\n  element.ownerDocument.documentElement.style.cursor = cursor\n  element.style.cursor = cursor\n  scope.autoStart.cursorElement = cursor ? element : null\n}\n\nfunction setInteractionCursor<T extends Interact.ActionName> (interaction: Interact.Interaction<T>, scope: Interact.Scope) {\n  const { interactable, element, prepared } = interaction\n\n  if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n    // clear previous target element cursor\n    if (scope.autoStart.cursorElement) {\n      setCursor(scope.autoStart.cursorElement, '', scope)\n    }\n\n    return\n  }\n\n  let cursor = ''\n\n  if (prepared.name) {\n    const cursorChecker: Interact.CursorChecker = interactable.options[prepared.name].cursorChecker\n\n    if (utils.is.func(cursorChecker)) {\n      cursor = cursorChecker(prepared, interactable, element, interaction._interacting)\n    }\n    else {\n      cursor = scope.actions.map[prepared.name].getCursor(prepared)\n    }\n  }\n\n  setCursor(interaction.element, cursor || '', scope)\n}\n\nconst autoStart: Interact.Plugin = {\n  id: 'auto-start/base',\n  before: ['actions', 'actions/drag', 'actions/resize', 'actions/gesture'],\n  install,\n  listeners: {\n    'interactions:down': prepareOnDown,\n    'interactions:move': (arg, scope) => {\n      prepareOnMove(arg, scope)\n      startOnMove(arg, scope)\n    },\n    'interactions:stop': clearCursorOnStop,\n  },\n  maxInteractions,\n  withinInteractionLimit,\n  validateAction,\n} as Interact.Plugin\n\nexport default autoStart\n","import { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport autoStart from './base'\n\nfunction beforeStart ({ interaction, eventTarget, dx, dy }: Interact.SignalArgs['interactions:move'], scope: Interact.Scope) {\n  if (interaction.prepared.name !== 'drag') { return }\n\n  // check if a drag is in the correct axis\n  const absX = Math.abs(dx)\n  const absY = Math.abs(dy)\n  const targetOptions = interaction.interactable.options.drag\n  const startAxis = targetOptions.startAxis\n  const currentAxis = (absX > absY ? 'x' : absX < absY ? 'y' : 'xy')\n\n  interaction.prepared.axis = targetOptions.lockAxis === 'start'\n    ? currentAxis[0]  as 'x' | 'y' // always lock to one axis even if currentAxis === 'xy'\n    : targetOptions.lockAxis\n\n  // if the movement isn't in the startAxis of the interactable\n  if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n    // cancel the prepared action\n    interaction.prepared.name = null\n\n    // then try to get a drag from another ineractable\n    let element = eventTarget as Interact.Element\n\n    const getDraggable = function (interactable: Interact.Interactable): Interact.Interactable | void {\n      if (interactable === interaction.interactable) { return }\n\n      const options = interaction.interactable.options.drag\n\n      if (!options.manualStart &&\n          interactable.testIgnoreAllow(options, element, eventTarget)) {\n        const action = interactable.getAction(\n          interaction.downPointer, interaction.downEvent, interaction, element)\n\n        if (action &&\n            action.name === 'drag' &&\n            checkStartAxis(currentAxis, interactable) &&\n            autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n          return interactable\n        }\n      }\n    }\n\n    // check all interactables\n    while (is.element(element)) {\n      const interactable = scope.interactables.forEachMatch(element, getDraggable)\n\n      if (interactable) {\n        interaction.prepared.name = 'drag'\n        interaction.interactable = interactable\n        interaction.element = element\n        break\n      }\n\n      element = parentNode(element) as Interact.Element\n    }\n  }\n}\n\nfunction checkStartAxis (startAxis: string, interactable: Interact.Interactable) {\n  if (!interactable) { return false }\n\n  const thisAxis = interactable.options.drag.startAxis\n\n  return (startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis)\n}\n\nexport default {\n  id: 'auto-start/dragAxis',\n  listeners: { 'autoStart:before-start': beforeStart },\n}\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface PerActionDefaults {\n    hold?: number\n    delay?: number\n  }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    autoStartHoldTimer?: any\n  }\n}\n\nfunction install (scope: Interact.Scope) {\n  const {\n    defaults,\n  } = scope\n\n  scope.usePlugin(basePlugin)\n\n  defaults.perAction.hold = 0\n  defaults.perAction.delay = 0\n}\n\nfunction getHoldDuration (interaction) {\n  const actionName = interaction.prepared && interaction.prepared.name\n\n  if (!actionName) { return null }\n\n  const options = interaction.interactable.options\n\n  return options[actionName].hold || options[actionName].delay\n}\n\nexport default {\n  id: 'auto-start/hold',\n  install,\n  listeners: {\n    'interactions:new': ({ interaction }) => {\n      interaction.autoStartHoldTimer = null\n    },\n\n    'autoStart:prepared': ({ interaction }) => {\n      const hold = getHoldDuration(interaction)\n\n      if (hold > 0) {\n        interaction.autoStartHoldTimer = setTimeout(() => {\n          interaction.start(interaction.prepared, interaction.interactable, interaction.element)\n        }, hold)\n      }\n    },\n\n    'interactions:move': ({ interaction, duplicate }) => {\n      if (interaction.pointerWasMoved && !duplicate) {\n        clearTimeout(interaction.autoStartHoldTimer)\n      }\n    },\n\n    // prevent regular down->move autoStart\n    'autoStart:before-start': ({ interaction }) => {\n      const hold = getHoldDuration(interaction)\n\n      if (hold > 0) {\n        interaction.prepared.name = null\n      }\n    },\n  },\n  getHoldDuration,\n}\n","import autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nexport default {\n  id: 'auto-start',\n  install (scope) {\n    scope.usePlugin(autoStart)\n    scope.usePlugin(hold)\n    scope.usePlugin(dragAxis)\n  },\n}\n\nexport {\n  autoStart,\n  hold,\n  dragAxis,\n}\n","export default {}\n","/* eslint-disable no-console */\n/* global process */\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport win from '@interactjs/utils/window'\nimport visualizer from './visualizer'\n\ndeclare module '@interactjs/core/scope' {\n  interface Scope {\n    logger: Logger\n  }\n}\n\ndeclare module '@interactjs/core/InteractStatic' {\n  interface InteractStatic {\n    visializer: typeof visualizer\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface BaseDefaults {\n    devTools?: DevToolsOptions\n  }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n  interface Interactable {\n    devTools?: Interact.OptionMethod<DevToolsOptions>\n  }\n}\n\nexport interface DevToolsOptions {\n  ignore: { [P in keyof typeof CheckName]?: boolean }\n}\n\nexport interface Logger {\n  warn: (...args: any[]) => void\n  error: (...args: any[]) => void\n  log: (...args: any[]) => void\n}\n\nexport interface Check {\n  name: CheckName\n  text: string\n  perform: (interaction: Interact.Interaction) => boolean\n  getInfo: (interaction: Interact.Interaction) => any[]\n}\n\nenum CheckName {\n  touchAction = 'touchAction',\n  boxSizing = 'boxSizing',\n  noListeners = 'noListeners',\n}\n\nconst prefix  = '[interact.js] '\nconst links = {\n  touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n  boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing',\n}\n\nconst isProduction = process.env.NODE_ENV === 'production'\n\n// eslint-disable-next-line no-restricted-syntax\nfunction install (scope: Interact.Scope, { logger }: { logger?: Logger } = {}) {\n  const {\n    Interactable,\n    defaults,\n  } = scope\n\n  scope.logger = logger || console\n\n  defaults.base.devTools = {\n    ignore: {},\n  }\n\n  Interactable.prototype.devTools = function (options?: object) {\n    if (options) {\n      extend(this.options.devTools, options)\n      return this\n    }\n\n    return this.options.devTools\n  }\n}\n\nconst checks: Check[] = [\n  {\n    name: CheckName.touchAction,\n    perform ({ element }) {\n      return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/)\n    },\n    getInfo ({ element }) {\n      return [\n        element,\n        links.touchAction,\n      ]\n    },\n    text: 'Consider adding CSS \"touch-action: none\" to this element\\n',\n  },\n\n  {\n    name: CheckName.boxSizing,\n    perform (interaction) {\n      const { element } = interaction\n\n      return interaction.prepared.name === 'resize' &&\n        element instanceof domObjects.HTMLElement &&\n        !hasStyle(element, 'boxSizing', /border-box/)\n    },\n    text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n    getInfo ({ element }) {\n      return [\n        element,\n        links.boxSizing,\n      ]\n    },\n  },\n\n  {\n    name: CheckName.noListeners,\n    perform (interaction) {\n      const actionName = interaction.prepared.name\n      const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n      return !moveListeners.length\n    },\n    getInfo (interaction) {\n      return [\n        interaction.prepared.name,\n        interaction.interactable,\n      ]\n    },\n    text: 'There are no listeners set for this action',\n  },\n]\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n  return styleRe.test(element.style[prop] || win.window.getComputedStyle(element)[prop])\n}\n\nfunction parentHasStyle (element: Interact.Element, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n  let parent = element as HTMLElement\n\n  while (is.element(parent)) {\n    if (hasStyle(parent, prop, styleRe)) {\n      return true\n    }\n\n    parent = parentNode(parent) as HTMLElement\n  }\n\n  return false\n}\n\nconst id = 'dev-tools'\nconst defaultExport: Interact.Plugin = isProduction\n  ? { id, install: () => {} }\n  : {\n    id,\n    install,\n    listeners: {\n      'interactions:action-start': ({ interaction }, scope) => {\n        for (const check of checks) {\n          const options = interaction.interactable && interaction.interactable.options\n\n          if (\n            !(options && options.devTools && options.devTools.ignore[check.name]) &&\n            check.perform(interaction)\n          ) {\n            scope.logger.warn(prefix + check.text, ...check.getInfo(interaction))\n          }\n        }\n      },\n    },\n    checks,\n    CheckName,\n    links,\n    prefix,\n  }\n\nexport default defaultExport\n","import clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\nimport { Modifier, ModifierArg, ModifierState } from './base'\n\nexport interface ModificationResult {\n  delta: Interact.Point\n  rectDelta: Interact.Rect\n  coords: Interact.Point\n  rect: Interact.FullRect\n  eventProps: any[]\n  changed: boolean\n}\n\ninterface MethodArg {\n  phase: Interact.EventPhase\n  pageCoords?: Interact.Point\n  rect?: Interact.FullRect\n  coords?: Interact.Point\n  preEnd?: boolean\n  skipModifiers?: number\n}\n\nexport default class Modification {\n  states: ModifierState[] = []\n  startOffset: Interact.Rect = { left: 0, right: 0, top: 0, bottom: 0 }\n  startDelta: Interact.Point = null\n  result?: ModificationResult = null\n  endResult?: Interact.Point = null\n  edges: Interact.EdgeOptions\n\n  constructor (readonly interaction: Readonly<Interact.Interaction>) {\n    this.result = createResult()\n  }\n\n  start (\n    { phase }: MethodArg,\n    pageCoords: Interact.Point,\n  ) {\n    const { interaction } = this\n    const modifierList = getModifierList(interaction)\n    this.prepareStates(modifierList)\n\n    this.edges = extend({}, interaction.edges)\n    this.startOffset = getRectOffset(interaction.rect, pageCoords)\n    this.startDelta = { x: 0, y: 0 }\n\n    const arg: MethodArg = {\n      phase,\n      pageCoords,\n      preEnd: false,\n    }\n\n    this.result = createResult()\n    this.startAll(arg)\n\n    const result = this.result = this.setAll(arg)\n\n    return result\n  }\n\n  fillArg (arg: Partial<ModifierArg>) {\n    const { interaction } = this\n\n    arg.interaction = interaction\n    arg.interactable = interaction.interactable\n    arg.element = interaction.element\n    arg.rect = arg.rect || interaction.rect\n    arg.edges = this.edges\n    arg.startOffset = this.startOffset\n  }\n\n  startAll (arg: MethodArg & Partial<ModifierArg>) {\n    this.fillArg(arg)\n\n    for (const state of this.states) {\n      if (state.methods.start) {\n        arg.state = state\n        state.methods.start(arg as ModifierArg)\n      }\n    }\n  }\n\n  setAll (arg: MethodArg & Partial<ModifierArg>): ModificationResult {\n    this.fillArg(arg)\n\n    const {\n      phase,\n      preEnd,\n      skipModifiers,\n      rect: unmodifiedRect,\n    } = arg\n\n    arg.coords = extend({}, arg.pageCoords)\n    arg.rect = extend({}, unmodifiedRect)\n\n    const states = skipModifiers\n      ? this.states.slice(skipModifiers)\n      : this.states\n\n    const newResult = createResult(arg.coords, arg.rect)\n\n    for (const state of states) {\n      const { options } = state\n      const lastModifierCoords = extend({}, arg.coords)\n      let returnValue = null\n\n      if (state.methods.set && this.shouldDo(options, preEnd, phase)) {\n        arg.state = state\n        returnValue = state.methods.set(arg as ModifierArg)\n\n        rectUtils.addEdges(this.interaction.edges, arg.rect, { x: arg.coords.x - lastModifierCoords.x, y: arg.coords.y - lastModifierCoords.y })\n      }\n\n      newResult.eventProps.push(returnValue)\n    }\n\n    newResult.delta.x = arg.coords.x - arg.pageCoords.x\n    newResult.delta.y = arg.coords.y - arg.pageCoords.y\n\n    newResult.rectDelta.left   = arg.rect.left - unmodifiedRect.left\n    newResult.rectDelta.right  = arg.rect.right - unmodifiedRect.right\n    newResult.rectDelta.top    = arg.rect.top - unmodifiedRect.top\n    newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom\n\n    const prevCoords = this.result.coords\n    const prevRect = this.result.rect\n\n    if (prevCoords && prevRect) {\n      const rectChanged = newResult.rect.left !== prevRect.left ||\n        newResult.rect.right !== prevRect.right ||\n        newResult.rect.top !== prevRect.top ||\n        newResult.rect.bottom !== prevRect.bottom\n\n      newResult.changed = rectChanged ||\n        prevCoords.x !== newResult.coords.x ||\n        prevCoords.y !== newResult.coords.y\n    }\n\n    return newResult\n  }\n\n  applyToInteraction (arg: { phase: Interact.EventPhase, rect?: Interact.Rect }) {\n    const { interaction } = this\n    const { phase } = arg\n    const curCoords = interaction.coords.cur\n    const startCoords = interaction.coords.start\n    const { result, startDelta } = this\n    const curDelta = result.delta\n\n    if (phase === 'start') {\n      extend(this.startDelta, result.delta)\n    }\n\n    for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]] as const) {\n      coordsSet.page.x   += delta.x\n      coordsSet.page.y   += delta.y\n      coordsSet.client.x += delta.x\n      coordsSet.client.y += delta.y\n    }\n\n    const { rectDelta } = this.result\n    const rect = arg.rect || interaction.rect\n\n    rect.left   += rectDelta.left\n    rect.right  += rectDelta.right\n    rect.top    += rectDelta.top\n    rect.bottom += rectDelta.bottom\n\n    rect.width = rect.right - rect.left\n    rect.height = rect.bottom - rect.top\n  }\n\n  setAndApply (arg: Partial<Interact.DoAnyPhaseArg> & {\n    phase: Interact.EventPhase\n    preEnd?: boolean\n    skipModifiers?: number\n    modifiedCoords?: Interact.Point\n  }): void | false {\n    const { interaction } = this\n    const { phase, preEnd, skipModifiers } = arg\n\n    const result = this.setAll({\n      preEnd,\n      phase,\n      pageCoords: arg.modifiedCoords || interaction.coords.cur.page,\n    })\n\n    this.result = result\n\n    // don't fire an action move if a modifier would keep the event in the same\n    // cordinates as before\n    if (!result.changed && (!skipModifiers || skipModifiers < this.states.length) && interaction.interacting()) {\n      return false\n    }\n\n    if (arg.modifiedCoords) {\n      const { page } = interaction.coords.cur\n      const adjustment = {\n        x: arg.modifiedCoords.x - page.x,\n        y: arg.modifiedCoords.y - page.y,\n      }\n\n      result.coords.x += adjustment.x\n      result.coords.y += adjustment.y\n      result.delta.x += adjustment.x\n      result.delta.y += adjustment.y\n    }\n\n    this.applyToInteraction(arg)\n  }\n\n  beforeEnd (arg: Omit<Interact.DoAnyPhaseArg, 'iEvent'> & { state?: ModifierState }): void | false {\n    const { interaction, event } = arg\n    const states = this.states\n\n    if (!states || !states.length) {\n      return\n    }\n\n    let doPreend = false\n\n    for (const state of states) {\n      arg.state = state\n      const { options, methods } = state\n\n      const endPosition = methods.beforeEnd && methods.beforeEnd(arg as unknown as ModifierArg)\n\n      if (endPosition) {\n        this.endResult = endPosition\n        return false\n      }\n\n      doPreend = doPreend || (!doPreend && this.shouldDo(options, true, arg.phase, true))\n    }\n\n    if (doPreend) {\n      // trigger a final modified move before ending\n      interaction.move({ event, preEnd: true })\n    }\n  }\n\n  stop (arg: { interaction: Interact.Interaction }) {\n    const { interaction } = arg\n\n    if (!this.states || !this.states.length) {\n      return\n    }\n\n    const modifierArg: Partial<ModifierArg> = extend({\n      states: this.states,\n      interactable: interaction.interactable,\n      element: interaction.element,\n      rect: null,\n    }, arg)\n\n    this.fillArg(modifierArg)\n\n    for (const state of this.states) {\n      modifierArg.state = state\n\n      if (state.methods.stop) { state.methods.stop(modifierArg as ModifierArg) }\n    }\n\n    this.states = null\n    this.endResult = null\n  }\n\n  prepareStates (modifierList: Modifier[]) {\n    this.states = []\n\n    for (let index = 0; index < modifierList.length; index++) {\n      const { options, methods, name } = modifierList[index]\n\n      if (options && options.enabled === false) { continue }\n\n      this.states.push({\n        options,\n        methods,\n        index,\n        name,\n      })\n    }\n\n    return this.states\n  }\n\n  restoreInteractionCoords ({ interaction: { coords, rect, modification } }: { interaction: Interact.Interaction }) {\n    if (!modification.result) { return }\n\n    const { startDelta } = modification\n    const { delta: curDelta, rectDelta } = modification.result\n\n    const coordsAndDeltas = [\n      [coords.start, startDelta],\n      [coords.cur, curDelta],\n    ]\n\n    for (const [coordsSet, delta] of coordsAndDeltas as any) {\n      coordsSet.page.x -= delta.x\n      coordsSet.page.y -= delta.y\n      coordsSet.client.x -= delta.x\n      coordsSet.client.y -= delta.y\n    }\n\n    rect.left -= rectDelta.left\n    rect.right -= rectDelta.right\n    rect.top -= rectDelta.top\n    rect.bottom -= rectDelta.bottom\n  }\n\n  shouldDo (options, preEnd?: boolean, phase?: string, requireEndOnly?: boolean) {\n    if (\n      // ignore disabled modifiers\n      (!options || options.enabled === false) ||\n      // check if we require endOnly option to fire move before end\n      (requireEndOnly && !options.endOnly) ||\n      // don't apply endOnly modifiers when not ending\n      (options.endOnly && !preEnd) ||\n      // check if modifier should run be applied on start\n      (phase === 'start' && !options.setStart)\n    ) {\n      return false\n    }\n\n    return true\n  }\n\n  copyFrom (other: Modification) {\n    this.startOffset = other.startOffset\n    this.startDelta = other.startDelta\n    this.edges = other.edges\n    this.states = other.states.map(s => clone(s) as ModifierState)\n    this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect))\n  }\n\n  destroy () {\n    for (const prop in this) {\n      this[prop] = null\n    }\n  }\n}\n\nfunction createResult (coords?: Interact.Point, rect?: Interact.FullRect): ModificationResult {\n  return {\n    rect,\n    coords,\n    delta: { x: 0, y: 0 },\n    rectDelta: {\n      left  : 0,\n      right : 0,\n      top   : 0,\n      bottom: 0,\n    },\n    eventProps: [],\n    changed: true,\n  }\n}\n\nfunction getModifierList (interaction) {\n  const actionOptions = interaction.interactable.options[interaction.prepared.name]\n  const actionModifiers = actionOptions.modifiers\n\n  if (actionModifiers && actionModifiers.length) {\n    return actionModifiers.filter(\n      modifier => !modifier.options || modifier.options.enabled !== false,\n    )\n  }\n\n  return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n    .map(type => {\n      const options = actionOptions[type]\n\n      return options && options.enabled && {\n        options,\n        methods: options._methods,\n      }\n    })\n    .filter(m => !!m)\n}\n\nexport function getRectOffset (rect, coords) {\n  return rect\n    ? {\n      left  : coords.x - rect.left,\n      top   : coords.y - rect.top,\n      right : rect.right  - coords.x,\n      bottom: rect.bottom - coords.y,\n    }\n    : {\n      left  : 0,\n      top   : 0,\n      right : 0,\n      bottom: 0,\n    }\n}\n","import Modification from './Modification'\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    modification?: Modification\n  }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n  interface InteractEvent {\n    modifiers?: Array<{\n      name: string\n      [key: string]: any\n    }>\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface PerActionDefaults {\n    modifiers?: Modifier[]\n  }\n}\n\nexport interface Modifier<\n  Defaults = any,\n  State extends ModifierState = any,\n  Name extends string = any\n> {\n  options?: Defaults\n  methods: {\n    start?: (arg: ModifierArg<State>) => void\n    set: (arg: ModifierArg<State>) => void\n    beforeEnd?: (arg: ModifierArg<State>) => Interact.Point | void\n    stop?: (arg: ModifierArg<State>) => void\n  }\n  name?: Name\n}\n\nexport type ModifierState<\n  Defaults = {},\n  StateProps extends { [prop: string]: any } = {},\n  Name extends string = any\n> = {\n  options: Defaults\n  methods?: Modifier<Defaults>['methods']\n  index?: number\n  name?: Name\n} & StateProps\n\nexport interface ModifierArg<State extends ModifierState = ModifierState> {\n  interaction: Interact.Interaction\n  interactable: Interact.Interactable\n  phase: Interact.EventPhase\n  rect: Interact.FullRect\n  edges: Interact.EdgeOptions\n  state?: State\n  element: Interact.Element\n  pageCoords?: Interact.Point\n  prevCoords?: Interact.Point\n  prevRect?: Interact.FullRect\n  coords?: Interact.Point\n  startOffset?: Interact.Rect\n  preEnd?: boolean\n}\n\nexport interface ModifierModule<\n  Defaults extends { enabled?: boolean },\n  State extends ModifierState,\n> {\n  defaults?: Defaults\n  start? (arg: ModifierArg<State>): void\n  set? (arg: ModifierArg<State>): any\n  beforeEnd? (arg: ModifierArg<State>): Interact.Point | void\n  stop? (arg: ModifierArg<State>): void\n}\n\nexport interface ModifierFunction <\n  Defaults extends { enabled?: boolean },\n  State extends ModifierState,\n  Name extends string,\n> {\n  (_options?: Partial<Defaults>): Modifier<Defaults, State, Name>\n  _defaults: Defaults\n  _methods: ModifierModule<Defaults, State>\n}\n\nexport function makeModifier<\n  Defaults extends { enabled?: boolean },\n  State extends ModifierState,\n  Name extends string\n> (\n  module: ModifierModule<Defaults, State>,\n  name?: Name,\n) {\n  const { defaults } = module\n  const methods = {\n    start: module.start,\n    set: module.set,\n    beforeEnd: module.beforeEnd,\n    stop: module.stop,\n  }\n\n  const modifier = (_options?: Partial<Defaults>) => {\n    const options: Defaults = (_options || {}) as Defaults\n\n    options.enabled = options.enabled !== false\n\n    // add missing defaults to options\n    for (const prop in defaults) {\n      if (!(prop in options)) {\n        options[prop] = defaults[prop]\n      }\n    }\n\n    const m: Modifier<Defaults, State, Name> = { options, methods, name }\n\n    return m\n  }\n\n  if (name && typeof name === 'string') {\n    // for backwrads compatibility\n    modifier._defaults = defaults\n    modifier._methods = methods\n  }\n\n  return modifier\n}\n\nexport function addEventModifiers ({ iEvent, interaction: { modification: { result } } }: {\n  iEvent: Interact.InteractEvent<Interact.ActionName, Interact.EventPhase>\n  interaction: Interact.Interaction\n}) {\n  if (result) {\n    iEvent.modifiers = result.eventProps\n  }\n}\n\nconst modifiersBase: Interact.Plugin = {\n  id: 'modifiers/base',\n  install: scope => {\n    scope.defaults.perAction.modifiers = []\n  },\n  listeners: {\n    'interactions:new': ({ interaction }) => {\n      interaction.modification = new Modification(interaction)\n    },\n\n    'interactions:before-action-start': arg => {\n      const { modification } = arg.interaction\n\n      modification.start(arg, arg.interaction.coords.start.page)\n      arg.interaction.edges = modification.edges\n      modification.applyToInteraction(arg)\n    },\n\n    'interactions:before-action-move': arg => arg.interaction.modification.setAndApply(arg),\n\n    'interactions:before-action-end': arg => arg.interaction.modification.beforeEnd(arg),\n\n    'interactions:action-start': addEventModifiers,\n    'interactions:action-move': addEventModifiers,\n    'interactions:action-end': addEventModifiers,\n\n    'interactions:after-action-start': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:after-action-move': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n\n    'interactions:stop': arg => arg.interaction.modification.stop(arg),\n  },\n  before: ['actions', 'action/drag', 'actions/resize', 'actions/gesture'],\n}\n\nexport default modifiersBase\n","import { _ProxyMethods } from '@interactjs/core/Interaction'\nimport * as rectUtils from '@interactjs/utils/rect'\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    offsetBy?: typeof offsetBy\n    offset: {\n      total: Interact.Point\n      pending: Interact.Point\n    }\n  }\n\n  // eslint-disable-next-line no-shadow\n  enum _ProxyMethods {\n    // eslint-disable-next-line no-shadow\n    offsetBy = ''\n  }\n}\n\n(_ProxyMethods as any).offsetBy = ''\n\nexport function addTotal (interaction: Interact.Interaction) {\n  if (!interaction.pointerIsDown) { return }\n\n  addToCoords(interaction.coords.cur, interaction.offset.total)\n\n  interaction.offset.pending.x = 0\n  interaction.offset.pending.y = 0\n}\n\nfunction beforeAction ({ interaction }: { interaction: Interact.Interaction }) {\n  applyPending(interaction)\n}\n\nfunction beforeEnd ({ interaction }: { interaction: Interact.Interaction }): boolean | void {\n  const hadPending = applyPending(interaction)\n\n  if (!hadPending) { return }\n\n  interaction.move({ offset: true })\n  interaction.end()\n\n  return false\n}\n\nfunction end ({ interaction }: { interaction: Interact.Interaction }) {\n  interaction.offset.total.x = 0\n  interaction.offset.total.y = 0\n  interaction.offset.pending.x = 0\n  interaction.offset.pending.y = 0\n}\n\nexport function applyPending (interaction: Interact.Interaction) {\n  if (!hasPending(interaction)) {\n    return false\n  }\n\n  const { pending } = interaction.offset\n\n  addToCoords(interaction.coords.cur, pending)\n  addToCoords(interaction.coords.delta, pending)\n  rectUtils.addEdges(interaction.edges, interaction.rect, pending)\n\n  pending.x = 0\n  pending.y = 0\n\n  return true\n}\n\nfunction offsetBy (this: Interact.Interaction, { x, y }: Interact.Point) {\n  this.offset.pending.x += x\n  this.offset.pending.y += y\n\n  this.offset.total.x += x\n  this.offset.total.y += y\n}\n\nfunction addToCoords ({ page, client }, { x, y }: Interact.Point) {\n  page.x += x\n  page.y += y\n  client.x += x\n  client.y += y\n}\n\nfunction hasPending (interaction) {\n  return !!(interaction.offset.pending.x || interaction.offset.pending.y)\n}\n\nconst offset: Interact.Plugin = {\n  id: 'offset',\n  install (scope) {\n    scope.Interaction.prototype.offsetBy = offsetBy\n  },\n  listeners: {\n    'interactions:new': ({ interaction }) => {\n      interaction.offset = {\n        total: { x: 0, y: 0 },\n        pending: { x: 0, y: 0 },\n      }\n    },\n    'interactions:update-pointer': ({ interaction }) => addTotal(interaction),\n    'interactions:before-action-start': beforeAction,\n    'interactions:before-action-move': beforeAction,\n    'interactions:before-action-end': beforeEnd,\n    'interactions:stop': end,\n  },\n}\n\nexport default offset\n","import Modification from '@interactjs/modifiers/Modification'\nimport * as modifiers from '@interactjs/modifiers/base'\nimport offset from '@interactjs/offset/index'\nimport * as dom from '@interactjs/utils/domUtils'\nimport hypot from '@interactjs/utils/hypot'\nimport * as is from '@interactjs/utils/is'\nimport { copyCoords } from '@interactjs/utils/pointerUtils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n  // eslint-disable-next-line no-shadow\n  interface PhaseMap {\n    resume?: true\n    inertiastart?: true\n  }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    inertia?: InertiaState\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface PerActionDefaults {\n    inertia?: {\n      enabled?: boolean\n      resistance?: number        // the lambda in exponential decay\n      minSpeed?: number          // target speed must be above this for inertia to start\n      endSpeed?: number          // the speed at which inertia is slow enough to stop\n      allowResume?: true         // allow resuming an action in inertia phase\n      smoothEndDuration?: number // animate to snap/restrict endOnly if there's no inertia\n    }\n  }\n}\n\ndeclare module '@interactjs/core/scope' {\n  interface SignalArgs {\n    'interactions:before-action-inertiastart': Omit<Interact.DoPhaseArg<Interact.ActionName, 'inertiastart'>, 'iEvent'>\n    'interactions:action-inertiastart': Interact.DoPhaseArg<Interact.ActionName, 'inertiastart'>\n    'interactions:after-action-inertiastart': Interact.DoPhaseArg<Interact.ActionName, 'inertiastart'>\n    'interactions:before-action-resume': Omit<Interact.DoPhaseArg<Interact.ActionName, 'resume'>, 'iEvent'>\n    'interactions:action-resume': Interact.DoPhaseArg<Interact.ActionName, 'resume'>\n    'interactions:after-action-resume': Interact.DoPhaseArg<Interact.ActionName, 'resume'>\n  }\n}\n\nfunction install (scope: Interact.Scope) {\n  const {\n    defaults,\n  } = scope\n\n  scope.usePlugin(offset)\n  scope.usePlugin(modifiers.default)\n  scope.actions.phases.inertiastart = true\n  scope.actions.phases.resume = true\n\n  defaults.perAction.inertia = {\n    enabled          : false,\n    resistance       : 10,    // the lambda in exponential decay\n    minSpeed         : 100,   // target speed must be above this for inertia to start\n    endSpeed         : 10,    // the speed at which inertia is slow enough to stop\n    allowResume      : true,  // allow resuming an action in inertia phase\n    smoothEndDuration: 300,   // animate to snap/restrict endOnly if there's no inertia\n  }\n}\n\nexport class InertiaState {\n  active = false\n  isModified = false\n  smoothEnd = false\n  allowResume = false\n\n  modification: Modification = null\n  modifierCount = 0\n  modifierArg: modifiers.ModifierArg = null\n\n  startCoords: Interact.Point = null\n  t0 = 0\n  v0 = 0\n\n  te = 0\n  targetOffset: Interact.Point = null\n  modifiedOffset: Interact.Point = null\n  currentOffset: Interact.Point = null\n\n  lambda_v0? = 0 // eslint-disable-line camelcase\n  one_ve_v0? = 0 // eslint-disable-line camelcase\n  timeout: number = null\n\n  constructor (\n    private readonly interaction: Interact.Interaction,\n  ) {}\n\n  start (event: Interact.PointerEventType) {\n    const { interaction } = this\n    const options = getOptions(interaction)\n\n    if (!options || !options.enabled) {\n      return false\n    }\n\n    const { client: velocityClient } = interaction.coords.velocity\n    const pointerSpeed = hypot(velocityClient.x, velocityClient.y)\n    const modification = this.modification || (this.modification = new Modification(interaction))\n\n    modification.copyFrom(interaction.modification)\n\n    this.t0 = interaction._now()\n    this.allowResume = options.allowResume\n    this.v0 = pointerSpeed\n    this.currentOffset = { x: 0, y: 0 }\n    this.startCoords = interaction.coords.cur.page\n\n    this.modifierArg = {\n      interaction,\n      interactable: interaction.interactable,\n      element: interaction.element,\n      rect: interaction.rect,\n      edges: interaction.edges,\n      pageCoords: this.startCoords,\n      preEnd: true,\n      phase: 'inertiastart',\n    }\n\n    const thrown = (\n      (this.t0 - interaction.coords.cur.timeStamp) < 50 &&\n      pointerSpeed > options.minSpeed &&\n      pointerSpeed > options.endSpeed\n    )\n\n    if (thrown) {\n      this.startInertia()\n    } else {\n      modification.result = modification.setAll(this.modifierArg)\n\n      if (!modification.result.changed) {\n        return false\n      }\n\n      this.startSmoothEnd()\n    }\n\n    // force modification change\n    interaction.modification.result.rect = null\n\n    // bring inertiastart event to the target coords\n    interaction.offsetBy(this.targetOffset)\n    interaction._doPhase({\n      interaction,\n      event,\n      phase: 'inertiastart',\n    })\n    interaction.offsetBy({ x: -this.targetOffset.x, y: -this.targetOffset.y })\n    // force modification change\n    interaction.modification.result.rect = null\n\n    this.active = true\n    interaction.simulation = this\n\n    return true\n  }\n\n  startInertia () {\n    const startVelocity = this.interaction.coords.velocity.client\n    const options = getOptions(this.interaction)\n    const lambda = options.resistance\n    const inertiaDur = -Math.log(options.endSpeed / this.v0) / lambda\n\n    this.targetOffset = {\n      x: (startVelocity.x - inertiaDur) / lambda,\n      y: (startVelocity.y - inertiaDur) / lambda,\n    }\n\n    this.te = inertiaDur\n    this.lambda_v0 = lambda / this.v0\n    this.one_ve_v0 = 1 - options.endSpeed / this.v0\n\n    const { modification, modifierArg } = this\n\n    modifierArg.pageCoords = {\n      x: this.startCoords.x + this.targetOffset.x,\n      y: this.startCoords.y + this.targetOffset.y,\n    }\n\n    modification.result = modification.setAll(modifierArg)\n\n    if (modification.result.changed) {\n      this.isModified = true\n      this.modifiedOffset = {\n        x: this.targetOffset.x + modification.result.delta.x,\n        y: this.targetOffset.y + modification.result.delta.y,\n      }\n    }\n\n    this.timeout = raf.request(() => this.inertiaTick())\n  }\n\n  startSmoothEnd () {\n    this.smoothEnd = true\n    this.isModified = true\n    this.targetOffset = {\n      x: this.modification.result.delta.x,\n      y: this.modification.result.delta.y,\n    }\n\n    this.timeout = raf.request(() => this.smoothEndTick())\n  }\n\n  inertiaTick () {\n    const { interaction } = this\n    const options = getOptions(interaction)\n    const lambda = options.resistance\n    const t = (interaction._now() - this.t0) / 1000\n\n    if (t < this.te) {\n      const progress =  1 - (Math.exp(-lambda * t) - this.lambda_v0) / this.one_ve_v0\n      let newOffset: Interact.Point\n\n      if (this.isModified) {\n        newOffset = getQuadraticCurvePoint(\n          0, 0,\n          this.targetOffset.x, this.targetOffset.y,\n          this.modifiedOffset.x, this.modifiedOffset.y,\n          progress,\n        )\n      }\n      else {\n        newOffset = {\n          x: this.targetOffset.x * progress,\n          y: this.targetOffset.y * progress,\n        }\n      }\n\n      const delta = { x: newOffset.x - this.currentOffset.x, y: newOffset.y - this.currentOffset.y }\n\n      this.currentOffset.x += delta.x\n      this.currentOffset.y += delta.y\n\n      interaction.offsetBy(delta)\n      interaction.move()\n\n      this.timeout = raf.request(() => this.inertiaTick())\n    }\n    else {\n      interaction.offsetBy({\n        x: this.modifiedOffset.x - this.currentOffset.x,\n        y: this.modifiedOffset.y - this.currentOffset.y,\n      })\n\n      this.end()\n    }\n  }\n\n  smoothEndTick () {\n    const { interaction } = this\n    const t = interaction._now() - this.t0\n    const { smoothEndDuration: duration } = getOptions(interaction)\n\n    if (t < duration) {\n      const newOffset = {\n        x: easeOutQuad(t, 0, this.targetOffset.x, duration),\n        y: easeOutQuad(t, 0, this.targetOffset.y, duration),\n      }\n      const delta = {\n        x: newOffset.x - this.currentOffset.x,\n        y: newOffset.y - this.currentOffset.y,\n      }\n\n      this.currentOffset.x += delta.x\n      this.currentOffset.y += delta.y\n\n      interaction.offsetBy(delta)\n      interaction.move({ skipModifiers: this.modifierCount })\n\n      this.timeout = raf.request(() => this.smoothEndTick())\n    }\n    else {\n      interaction.offsetBy({\n        x: this.targetOffset.x - this.currentOffset.x,\n        y: this.targetOffset.y - this.currentOffset.y,\n      })\n\n      this.end()\n    }\n  }\n\n  resume ({ pointer, event, eventTarget }: Interact.SignalArgs['interactions:down']) {\n    const { interaction } = this\n\n    // undo inertia changes to interaction coords\n    interaction.offsetBy({\n      x: -this.currentOffset.x,\n      y: -this.currentOffset.y,\n    })\n\n    // update pointer at pointer down position\n    interaction.updatePointer(pointer, event, eventTarget, true)\n\n    // fire resume signals and event\n    interaction._doPhase({\n      interaction,\n      event,\n      phase: 'resume',\n    })\n    copyCoords(interaction.coords.prev, interaction.coords.cur)\n\n    this.stop()\n  }\n\n  end () {\n    this.interaction.move()\n    this.interaction.end()\n    this.stop()\n  }\n\n  stop () {\n    this.active = this.smoothEnd = false\n    this.interaction.simulation = null\n    raf.cancel(this.timeout)\n  }\n}\n\nfunction start ({ interaction, event }: Interact.DoPhaseArg<Interact.ActionName, 'end'>) {\n  if (!interaction._interacting || interaction.simulation) {\n    return null\n  }\n\n  const started = interaction.inertia.start(event)\n\n  // prevent action end if inertia or smoothEnd\n  return started ? false : null\n}\n\n// Check if the down event hits the current inertia target\n// control should be return to the user\nfunction resume (arg: Interact.SignalArgs['interactions:down']) {\n  const { interaction, eventTarget } = arg\n  const state = interaction.inertia\n\n  if (!state.active) { return }\n\n  let element = eventTarget as Node\n\n  // climb up the DOM tree from the event target\n  while (is.element(element)) {\n    // if interaction element is the current inertia target element\n    if (element === interaction.element) {\n      state.resume(arg)\n      break\n    }\n\n    element = dom.parentNode(element)\n  }\n}\n\nfunction stop ({ interaction }: { interaction: Interact.Interaction }) {\n  const state = interaction.inertia\n\n  if (state.active) {\n    state.stop()\n  }\n}\n\nfunction getOptions ({ interactable, prepared }: Interact.Interaction) {\n  return interactable &&\n    interactable.options &&\n    prepared.name &&\n    interactable.options[prepared.name].inertia\n}\n\nconst inertia: Interact.Plugin = {\n  id: 'inertia',\n  before: ['modifiers/base'],\n  install,\n  listeners: {\n    'interactions:new': ({ interaction }) => {\n      interaction.inertia = new InertiaState(interaction)\n    },\n\n    'interactions:before-action-end': start,\n    'interactions:down': resume,\n    'interactions:stop': stop,\n\n    'interactions:before-action-resume': arg => {\n      const { modification } = arg.interaction\n\n      modification.stop(arg)\n      modification.start(arg, arg.interaction.coords.cur.page)\n      modification.applyToInteraction(arg)\n    },\n\n    'interactions:before-action-inertiastart': arg => arg.interaction.modification.setAndApply(arg),\n    'interactions:action-resume': modifiers.addEventModifiers,\n    'interactions:action-inertiastart': modifiers.addEventModifiers,\n    'interactions:after-action-inertiastart': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:after-action-resume': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n  },\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nfunction _getQBezierValue (t: number, p1: number, p2: number, p3: number) {\n  const iT = 1 - t\n  return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3\n}\n\nfunction getQuadraticCurvePoint (\n  startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n  return {\n    x:  _getQBezierValue(position, startX, cpX, endX),\n    y:  _getQBezierValue(position, startY, cpY, endY),\n  }\n}\n\n// http://gizma.com/easing/\nfunction easeOutQuad (t: number, b: number, c: number, d: number) {\n  t /= d\n  return -c * t * (t - 2) + b\n}\n\nexport default inertia\n","import '@interactjs/types/index'\nimport Scope from '@interactjs/core/scope'\n\nconst scope = new Scope()\n\nconst interact = scope.interactStatic\n\nexport default interact\n\nexport const init = (win: Window) => scope.init(win)\n\nif (typeof window === 'object' && !!window) {\n  init(window)\n}\n","export default {}\n","export default {}\n","export type GridOptions = (Partial<Interact.Rect> | Interact.Point) & {\n  range?: number\n  limits?: Interact.Rect\n  offset?: Interact.Point\n}\n\nexport default (grid: GridOptions) => {\n  const coordFields = ([\n    ['x', 'y'],\n    ['left', 'top'],\n    ['right', 'bottom'],\n    ['width', 'height'],\n  ] as const).filter(([xField, yField]) => xField in grid || yField in grid)\n\n  const gridFunc: Interact.SnapFunction & {\n    grid: typeof grid\n    coordFields: typeof coordFields\n  } = (x, y) => {\n    const {\n      range,\n      limits = {\n        left  : -Infinity,\n        right :  Infinity,\n        top   : -Infinity,\n        bottom:  Infinity,\n      },\n      offset = { x: 0, y: 0 },\n    } = grid\n\n    const result: Interact.SnapTarget & {\n      grid: typeof grid\n    } = { range, grid, x: null as number, y: null as number }\n\n    for (const [xField, yField] of coordFields) {\n      const gridx = Math.round((x - offset.x) / (grid as any)[xField])\n      const gridy = Math.round((y - offset.y) / (grid as any)[yField])\n\n      result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * (grid as any)[xField] + offset.x))\n      result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * (grid as any)[yField] + offset.y))\n    }\n\n    return result\n  }\n\n  gridFunc.grid = grid\n  gridFunc.coordFields = coordFields\n\n  return gridFunc\n}\n","export { default as edgeTarget } from './edgeTarget'\nexport { default as elements } from './elements'\nexport { default as grid } from './grid'\n","import extend from '@interactjs/utils/extend'\nimport * as allSnappers from './all'\n\ndeclare module '@interactjs/core/InteractStatic' {\n  interface InteractStatic {\n    snappers: typeof allSnappers\n    createSnapGrid: typeof allSnappers.grid\n  }\n}\n\nconst snappersPlugin: Interact.Plugin = {\n  id: 'snappers',\n  install (scope) {\n    const { interactStatic: interact } = scope\n\n    interact.snappers = extend(interact.snappers || {}, allSnappers)\n    interact.createSnapGrid = interact.snappers.grid\n  },\n}\n\nexport default snappersPlugin\n","/* eslint-disable */\n\n/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * @example\n * interact(target).resizable({\n *   modifiers: [\n *     interact.modifiers.snapSize({\n *       targets: [ interact.createSnapGrid({ x: 20, y: 20 }) ],\n *     }),\n *     interact.aspectRatio({ ratio: 'preserve' }),\n *   ],\n * });\n */\n\nimport extend from '@interactjs/utils/extend'\nimport { addEdges } from '@interactjs/utils/rect'\nimport { Modifier, ModifierModule, ModifierState } from './base'\nimport Modification from './Modification'\nimport { makeModifier } from './base'\n\nexport interface AspectRatioOptions {\n  ratio?: number | 'preserve'\n  equalDelta?: boolean\n  modifiers?: Modifier[]\n  enabled?: boolean\n}\n\nexport type AspectRatioState = ModifierState<AspectRatioOptions, {\n  startCoords: Interact.Point\n  startRect: Interact.Rect\n  linkedEdges: Interact.EdgeOptions\n  ratio: number\n  equalDelta: boolean\n  xIsPrimaryAxis: boolean\n  edgeSign: 1 | -1\n  subModification: Modification\n}>\n\nconst aspectRatio: ModifierModule<AspectRatioOptions, AspectRatioState> = {\n  start (arg) {\n    const { state, rect, edges: originalEdges, pageCoords: coords } = arg\n    let { ratio } = state.options\n    const { equalDelta, modifiers } = state.options\n\n    if (ratio === 'preserve') {\n      ratio = rect.width / rect.height\n    }\n\n    state.startCoords = extend({}, coords)\n    state.startRect = extend({}, rect)\n    state.ratio = ratio\n    state.equalDelta = equalDelta\n\n    const linkedEdges = state.linkedEdges = {\n      top   : originalEdges.top    || (originalEdges.left   && !originalEdges.bottom),\n      left  : originalEdges.left   || (originalEdges.top    && !originalEdges.right),\n      bottom: originalEdges.bottom || (originalEdges.right  && !originalEdges.top),\n      right : originalEdges.right  || (originalEdges.bottom && !originalEdges.left),\n    }\n\n    state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right)\n\n    if (state.equalDelta) {\n      state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1) as 1 | -1\n    }\n    else {\n      const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left\n      state.edgeSign = negativeSecondaryEdge ? -1 : 1\n    }\n\n    extend(arg.edges, linkedEdges)\n\n    if (!modifiers || !modifiers.length) { return }\n\n    const subModification = new Modification(arg.interaction)\n\n    subModification.copyFrom(arg.interaction.modification)\n    subModification.prepareStates(modifiers)\n\n    state.subModification = subModification\n    subModification.startAll({ ...arg })\n  },\n\n  set (arg) {\n    const { state, rect, coords } = arg\n    const initialCoords = extend({}, coords)\n    const aspectMethod = state.equalDelta ? setEqualDelta : setRatio\n\n    aspectMethod(state, state.xIsPrimaryAxis, coords, rect)\n\n    if (!state.subModification) { return null }\n\n    const correctedRect = extend({}, rect)\n\n    addEdges(state.linkedEdges, correctedRect, { x: coords.x - initialCoords.x, y: coords.y - initialCoords.y })\n\n    const result = state.subModification.setAll({\n      ...arg,\n      rect: correctedRect,\n      edges: state.linkedEdges,\n      pageCoords: coords,\n      prevCoords: coords,\n      prevRect: correctedRect,\n    })\n\n    const { delta } = result\n\n    if (result.changed) {\n      const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y)\n\n      // do aspect modification again with critical edge axis as primary\n      aspectMethod(state, xIsCriticalAxis, result.coords, result.rect)\n      extend(coords, result.coords)\n    }\n\n    return result.eventProps\n  },\n\n  defaults: {\n    ratio: 'preserve',\n    equalDelta: false,\n    modifiers: [],\n    enabled: false,\n  },\n}\n\nfunction setEqualDelta ({ startCoords, edgeSign }: AspectRatioState, xIsPrimaryAxis: boolean, coords: Interact.Point) {\n  if (xIsPrimaryAxis) {\n    coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign\n  }\n  else {\n    coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign\n  }\n}\n\nfunction setRatio ({ startRect, startCoords, ratio, edgeSign }: AspectRatioState, xIsPrimaryAxis: boolean, coords: Interact.Point, rect: Interact.Rect) {\n  if (xIsPrimaryAxis) {\n    const newHeight = rect.width / ratio\n\n    coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign\n  }\n  else {\n    const newWidth = rect.height * ratio\n\n    coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign\n  }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio')\nexport { aspectRatio }\n","import { ModifierFunction } from './base'\n\nconst avoid = (() => {\n}) as unknown as ModifierFunction<any, any, 'avoid'>\n\navoid._defaults = {}\n\nexport default avoid\n","import extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport * as rectUtils from '@interactjs/utils/rect'\nimport { makeModifier, ModifierArg, ModifierModule, ModifierState } from '../base'\n\nexport interface RestrictOptions {\n  // where to drag over\n  restriction: Interact.RectResolvable<[number, number, Interact.Interaction]>\n  // what part of self is allowed to drag over\n  elementRect: Interact.Rect\n  offset: Interact.Rect\n  // restrict just before the end drag\n  endOnly: boolean\n  enabled?: boolean\n}\n\nexport type RestrictState = ModifierState<RestrictOptions, {\n  offset: Interact.Rect\n}>\n\nfunction start ({ rect, startOffset, state, interaction, pageCoords }: ModifierArg<RestrictState>) {\n  const { options } = state\n  const { elementRect } = options\n  const offset: Interact.Rect = extend({\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0,\n  }, options.offset || {})\n\n  if (rect && elementRect) {\n    const restriction = getRestrictionRect(options.restriction, interaction, pageCoords)\n\n    if (restriction) {\n      const widthDiff = (restriction.right - restriction.left) - rect.width\n      const heightDiff = (restriction.bottom - restriction.top) - rect.height\n\n      if (widthDiff < 0) {\n        offset.left += widthDiff\n        offset.right += widthDiff\n      }\n      if (heightDiff < 0) {\n        offset.top += heightDiff\n        offset.bottom += heightDiff\n      }\n    }\n\n    offset.left += startOffset.left - (rect.width  * elementRect.left)\n    offset.top  += startOffset.top  - (rect.height * elementRect.top)\n\n    offset.right  += startOffset.right  - (rect.width  * (1 - elementRect.right))\n    offset.bottom += startOffset.bottom - (rect.height * (1 - elementRect.bottom))\n  }\n\n  state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }: ModifierArg<RestrictState>) {\n  const { options, offset } = state\n\n  const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n  if (!restriction) { return }\n\n  const rect = rectUtils.xywhToTlbr(restriction)\n\n  coords.x = Math.max(Math.min(rect.right  - offset.right, coords.x), rect.left + offset.left)\n  coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top  + offset.top)\n}\n\nexport function getRestrictionRect (\n  value: Interact.RectResolvable<[number, number, Interact.Interaction]>,\n  interaction: Interact.Interaction,\n  coords?: Interact.Point,\n) {\n  if (is.func(value)) {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction])\n  } else {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n  }\n}\n\nconst defaults: RestrictOptions = {\n  restriction: null,\n  elementRect: null,\n  offset: null,\n  endOnly: false,\n  enabled: false,\n}\n\nconst restrict: ModifierModule<RestrictOptions, RestrictState> = {\n  start,\n  set,\n  defaults,\n}\n\nexport default makeModifier(restrict, 'restrict')\nexport { restrict }\n","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n//   edges: { top: true, left: true },\n//   restrictEdges: {\n//     inner: { top: 200, left: 200, right: 400, bottom: 400 },\n//     outer: { top:   0, left:   0, right: 600, bottom: 600 },\n//   },\n// })\n\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\nimport { makeModifier, ModifierArg, ModifierState } from '../base'\nimport { getRestrictionRect, RestrictOptions } from './pointer'\n\nexport interface RestrictEdgesOptions {\n  inner: RestrictOptions['restriction']\n  outer: RestrictOptions['restriction']\n  offset?: RestrictOptions['offset']\n  endOnly: boolean\n  enabled?: boolean\n}\n\nexport type RestrictEdgesState = ModifierState<RestrictEdgesOptions, {\n  inner: Interact.Rect\n  outer: Interact.Rect\n  offset: RestrictEdgesOptions['offset']\n}>\n\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, startOffset, state }: ModifierArg<RestrictEdgesState>) {\n  const { options } = state\n  let offset\n\n  if (options) {\n    const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page)\n\n    offset = rectUtils.rectToXY(offsetRect)\n  }\n\n  offset = offset || { x: 0, y: 0 }\n\n  state.offset = {\n    top:    offset.y + startOffset.top,\n    left:   offset.x + startOffset.left,\n    bottom: offset.y - startOffset.bottom,\n    right:  offset.x - startOffset.right,\n  }\n}\n\nfunction set ({ coords, edges, interaction, state }: ModifierArg<RestrictEdgesState>) {\n  const { offset, options } = state\n\n  if (!edges) {\n    return\n  }\n\n  const page = extend({}, coords)\n  const inner = getRestrictionRect(options.inner, interaction, page) || {} as Interact.Rect\n  const outer = getRestrictionRect(options.outer, interaction, page) || {} as Interact.Rect\n\n  fixRect(inner, noInner)\n  fixRect(outer, noOuter)\n\n  if (edges.top) {\n    coords.y = Math.min(Math.max(outer.top    + offset.top,    page.y), inner.top    + offset.top)\n  }\n  else if (edges.bottom) {\n    coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom)\n  }\n  if (edges.left) {\n    coords.x = Math.min(Math.max(outer.left   + offset.left,   page.x), inner.left   + offset.left)\n  }\n  else if (edges.right) {\n    coords.x = Math.max(Math.min(outer.right  + offset.right,  page.x), inner.right  + offset.right)\n  }\n}\n\nfunction fixRect (rect, defaults) {\n  for (const edge of ['top', 'left', 'bottom', 'right']) {\n    if (!(edge in rect)) {\n      rect[edge] = defaults[edge]\n    }\n  }\n\n  return rect\n}\n\nconst defaults: RestrictEdgesOptions = {\n  inner: null,\n  outer: null,\n  offset: null,\n  endOnly: false,\n  enabled: false,\n}\n\nconst restrictEdges = {\n  noInner,\n  noOuter,\n  start,\n  set,\n  defaults,\n}\n\nexport default makeModifier(restrictEdges, 'restrictEdges')\nexport { restrictEdges }\n","import extend from '../../utils/extend'\nimport { makeModifier } from '../base'\nimport { restrict } from './pointer'\n\nconst defaults = extend({\n  get elementRect () {\n    return { top: 0, left: 0, bottom: 1, right: 1 }\n  },\n  set elementRect (_) {},\n}, restrict.defaults)\n\nconst restrictRect = {\n  start: restrict.start,\n  set: restrict.set,\n  defaults,\n}\n\nexport default makeModifier(restrictRect, 'restrictRect')\nexport { restrictRect }\n","import extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\nimport { makeModifier, ModifierArg, ModifierState } from '../base'\nimport { restrictEdges, RestrictEdgesState } from './edges'\nimport { getRestrictionRect, RestrictOptions } from './pointer'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nexport interface RestrictSizeOptions {\n  min?: Interact.Size | Interact.Point | RestrictOptions['restriction']\n  max?: Interact.Size | Interact.Point | RestrictOptions['restriction']\n  endOnly: boolean\n  enabled?: boolean\n}\n\nfunction start (arg: ModifierArg<RestrictEdgesState>) {\n  return restrictEdges.start(arg)\n}\n\nexport type RestrictSizeState =\n  RestrictEdgesState & ModifierState<RestrictSizeOptions & { inner: Interact.Rect, outer: Interact.Rect }, {\n    min: Interact.Rect\n    max: Interact.Rect\n  }>\n\nfunction set (arg: ModifierArg<RestrictSizeState>) {\n  const { interaction, state, rect, edges } = arg\n  const { options } = state\n\n  if (!edges) {\n    return\n  }\n\n  const minSize = rectUtils.tlbrToXywh(getRestrictionRect(options.min as any, interaction, arg.coords)) || noMin\n  const maxSize = rectUtils.tlbrToXywh(getRestrictionRect(options.max as any, interaction, arg.coords)) || noMax\n\n  state.options = {\n    endOnly: options.endOnly,\n    inner: extend({}, restrictEdges.noInner),\n    outer: extend({}, restrictEdges.noOuter),\n  }\n\n  if (edges.top) {\n    state.options.inner.top = rect.bottom - minSize.height\n    state.options.outer.top = rect.bottom - maxSize.height\n  }\n  else if (edges.bottom) {\n    state.options.inner.bottom = rect.top + minSize.height\n    state.options.outer.bottom = rect.top + maxSize.height\n  }\n  if (edges.left) {\n    state.options.inner.left = rect.right - minSize.width\n    state.options.outer.left = rect.right - maxSize.width\n  }\n  else if (edges.right) {\n    state.options.inner.right = rect.left + minSize.width\n    state.options.outer.right = rect.left + maxSize.width\n  }\n\n  restrictEdges.set(arg)\n\n  state.options = options\n}\n\nconst defaults: RestrictSizeOptions = {\n  min: null,\n  max: null,\n  endOnly: false,\n  enabled: false,\n}\n\nconst restrictSize = {\n  start,\n  set,\n  defaults,\n}\n\nexport default makeModifier(restrictSize, 'restrictSize')\nexport { restrictSize }\n","import { ModifierFunction } from './base'\n\nconst rubberband = (() => {\n}) as unknown as ModifierFunction<any, any, 'rubberband'>\n\nrubberband._defaults = {}\n\nexport default rubberband\n","import * as utils from '@interactjs/utils/index'\nimport { makeModifier, ModifierArg, ModifierState } from '../base'\n\nexport interface Offset {\n  x: number\n  y: number\n  index: number\n  relativePoint?: Interact.Point\n}\n\nexport interface SnapPosition {\n  x?: number\n  y?: number\n  range?: number\n  offset?: Offset\n  [index: string]: any\n}\n\nexport type SnapFunction = (\n  x: number,\n  y: number,\n  interaction: Interact.Interaction,\n  offset: Offset,\n  index: number\n) => SnapPosition\nexport type SnapTarget = SnapPosition | SnapFunction\nexport interface SnapOptions {\n  targets: SnapTarget[]\n  // target range\n  range: number\n  // self points for snapping. [0,0] = top left, [1,1] = bottom right\n  relativePoints: Interact.Point[]\n  // startCoords = offset snapping from drag start page position\n  offset: Interact.Point | Interact.RectResolvable<[Interact.Interaction]> | 'startCoords'\n  offsetWithOrigin?: boolean\n  origin: Interact.RectResolvable<[Interact.Element]> | Interact.Point\n  endOnly?: boolean\n  enabled?: boolean\n}\n\nexport type SnapState = ModifierState<SnapOptions, {\n  offsets?: Offset[]\n  closest?: any\n  targetFields?: string[][]\n}>\n\nfunction start (arg: ModifierArg<SnapState>) {\n  const { interaction, interactable, element, rect, state, startOffset } = arg\n  const { options } = state\n  const origin = options.offsetWithOrigin\n    ? getOrigin(arg)\n    : { x: 0, y: 0 }\n\n  let snapOffset: Interact.Point\n\n  if (options.offset === 'startCoords') {\n    snapOffset = {\n      x: interaction.coords.start.page.x,\n      y: interaction.coords.start.page.y,\n    }\n  }\n  else  {\n    const offsetRect = utils.rect.resolveRectLike(options.offset as any, interactable, element, [interaction])\n\n    snapOffset = utils.rect.rectToXY(offsetRect) || { x: 0, y: 0 }\n    snapOffset.x += origin.x\n    snapOffset.y += origin.y\n  }\n\n  const { relativePoints } = options\n\n  state.offsets = rect && relativePoints && relativePoints.length\n    ?  relativePoints.map((relativePoint, index) => ({\n      index,\n      relativePoint,\n      x: startOffset.left - (rect.width  * relativePoint.x) + snapOffset.x,\n      y: startOffset.top  - (rect.height * relativePoint.y) + snapOffset.y,\n    }))\n    : [utils.extend({\n      index: 0,\n      relativePoint: null,\n    }, snapOffset)]\n}\n\nfunction set (arg: ModifierArg<SnapState>) {\n  const { interaction, coords, state } = arg\n  const { options, offsets } = state\n\n  const origin = utils.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n  const page = utils.extend({}, coords)\n  const targets = []\n\n  if (!options.offsetWithOrigin) {\n    page.x -= origin.x\n    page.y -= origin.y\n  }\n\n  for (const offset of offsets) {\n    const relativeX = page.x - offset.x\n    const relativeY = page.y - offset.y\n\n    for (let index = 0, len = options.targets.length; index < len; index++) {\n      const snapTarget = options.targets[index]\n      let target\n\n      if (utils.is.func(snapTarget)) {\n        target = snapTarget(relativeX, relativeY, interaction, offset, index)\n      }\n      else {\n        target = snapTarget\n      }\n\n      if (!target) { continue }\n\n      targets.push({\n        x: (utils.is.number(target.x) ? target.x : relativeX) + offset.x,\n        y: (utils.is.number(target.y) ? target.y : relativeY) + offset.y,\n\n        range: utils.is.number(target.range) ? target.range : options.range,\n        source: snapTarget,\n        index,\n        offset,\n      })\n    }\n  }\n\n  const closest = {\n    target: null,\n    inRange: false,\n    distance: 0,\n    range: 0,\n    delta: { x: 0, y: 0 },\n  }\n\n  for (const target of targets) {\n    const range = target.range\n    const dx = target.x - page.x\n    const dy = target.y - page.y\n    const distance = utils.hypot(dx, dy)\n    let inRange = distance <= range\n\n    // Infinite targets count as being out of range\n    // compared to non infinite ones that are in range\n    if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n      inRange = false\n    }\n\n    if (!closest.target || (inRange\n      // is the closest target in range?\n      ? (closest.inRange && range !== Infinity\n        // the pointer is relatively deeper in this target\n        ? distance / range < closest.distance / closest.range\n        // this target has Infinite range and the closest doesn't\n        : (range === Infinity && closest.range !== Infinity) ||\n          // OR this target is closer that the previous closest\n          distance < closest.distance)\n      // The other is not in range and the pointer is closer to this target\n      : (!closest.inRange && distance < closest.distance))) {\n      closest.target = target\n      closest.distance = distance\n      closest.range = range\n      closest.inRange = inRange\n      closest.delta.x = dx\n      closest.delta.y = dy\n    }\n  }\n\n  if (closest.inRange) {\n    coords.x = closest.target.x\n    coords.y = closest.target.y\n  }\n\n  state.closest = closest\n  return closest\n}\n\nfunction getOrigin (arg: Partial<ModifierArg<SnapState>>) {\n  const { element } = arg.interaction\n  const optionsOrigin = utils.rect.rectToXY(\n    utils.rect.resolveRectLike(arg.state.options.origin as any, null, null, [element]),\n  )\n  const origin = optionsOrigin || utils.getOriginXY(\n    arg.interactable,\n    element,\n    arg.interaction.prepared.name,\n  )\n\n  return origin\n}\n\nconst defaults: SnapOptions = {\n  range  : Infinity,\n  targets: null,\n  offset: null,\n  offsetWithOrigin: true,\n  origin: null,\n  relativePoints: null,\n  endOnly: false,\n  enabled: false,\n}\nconst snap = {\n  start,\n  set,\n  defaults,\n}\n\nexport default makeModifier(snap, 'snap')\nexport { snap }\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport { makeModifier, ModifierArg } from '../base'\nimport { snap, SnapOptions, SnapState } from './pointer'\n\nexport type SnapSizeOptions = Pick<\nSnapOptions,\n'targets' | 'offset' | 'endOnly' | 'range' | 'enabled'\n>\n\nfunction start (arg: ModifierArg<SnapState>) {\n  const { state, edges } = arg\n  const { options } = state\n\n  if (!edges) { return null }\n\n  arg.state = {\n    options: {\n      targets: null,\n      relativePoints: [{\n        x: edges.left ? 0 : 1,\n        y: edges.top ? 0 : 1,\n      }],\n      offset: options.offset || 'self',\n      origin: { x: 0, y: 0 },\n      range: options.range,\n    },\n  }\n\n  state.targetFields = state.targetFields || [\n    ['width', 'height'],\n    ['x', 'y'],\n  ]\n\n  snap.start(arg)\n  state.offsets = arg.state.offsets\n\n  arg.state = state\n}\n\nfunction set (arg) {\n  const { interaction, state, coords } = arg\n  const { options, offsets } = state\n  const relative = {\n    x: coords.x - offsets[0].x,\n    y: coords.y - offsets[0].y,\n  }\n\n  state.options = extend({}, options)\n  state.options.targets = []\n\n  for (const snapTarget of (options.targets || [])) {\n    let target\n\n    if (is.func(snapTarget)) {\n      target = snapTarget(relative.x, relative.y, interaction)\n    }\n    else {\n      target = snapTarget\n    }\n\n    if (!target) { continue }\n\n    for (const [xField, yField] of state.targetFields) {\n      if (xField in target || yField in target) {\n        target.x = target[xField]\n        target.y = target[yField]\n\n        break\n      }\n    }\n\n    state.options.targets.push(target)\n  }\n\n  const returnValue = snap.set(arg)\n\n  state.options = options\n\n  return returnValue\n}\n\nconst defaults: SnapSizeOptions = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  endOnly: false,\n  enabled: false,\n}\n\nconst snapSize = {\n  start,\n  set,\n  defaults,\n}\n\nexport default makeModifier(snapSize, 'snapSize')\nexport { snapSize }\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [interact.snappers.grid({ x: 100, y: 50 })],\n *   },\n * })\n *\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [\n *       interact.snappers.grid({\n *        top: 50,\n *        left: 50,\n *        bottom: 100,\n *        right: 100,\n *       }),\n *     ],\n *   },\n * })\n */\n\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport { makeModifier, ModifierArg, ModifierModule } from '../base'\nimport { SnapOptions, SnapState } from './pointer'\nimport { snapSize } from './size'\n\nexport type SnapEdgesOptions = Pick<SnapOptions, 'targets' | 'range' | 'offset' | 'endOnly' | 'enabled'>\n\nfunction start (arg: ModifierArg<SnapState>) {\n  const { edges } = arg\n\n  if (!edges) { return null }\n\n  arg.state.targetFields = arg.state.targetFields || [\n    [edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom'],\n  ]\n\n  return snapSize.start(arg)\n}\n\nconst snapEdges: ModifierModule<SnapEdgesOptions, SnapState> = {\n  start,\n  set: snapSize.set,\n  defaults: extend(\n    clone(snapSize.defaults),\n    {\n      targets: null,\n      range: null,\n      offset: { x: 0, y: 0 },\n    } as const,\n  ),\n}\n\nexport default makeModifier(snapEdges, 'snapEdges')\nexport { snapEdges }\n","import { ModifierFunction } from './base'\n\nconst spring = (() => {\n}) as unknown as ModifierFunction<any, any, 'spring'>\n\nspring._defaults = {}\n\nexport default spring\n","import { ModifierFunction } from './base'\n\nconst transform = (() => {\n}) as unknown as ModifierFunction<any, any, 'transform'>\n\ntransform._defaults = {}\n\nexport default transform\n","/* eslint-disable node/no-extraneous-import */\nimport aspectRatio from './aspectRatio'\nimport avoid from './avoid'\nimport restrictEdges from './restrict/edges'\nimport restrict from './restrict/pointer'\nimport restrictRect from './restrict/rect'\nimport restrictSize from './restrict/size'\nimport rubberband from './rubberband'\nimport snapEdges from './snap/edges'\nimport snap from './snap/pointer'\nimport snapSize from './snap/size'\n\nimport spring from './spring'\nimport transform from './transform'\n\nexport default {\n  aspectRatio,\n  restrictEdges,\n  restrict,\n  restrictRect,\n  restrictSize,\n  snapEdges,\n  snap,\n  snapSize,\n\n  spring,\n  avoid,\n  transform,\n  rubberband,\n}\n","import snappers from '@interactjs/snappers/index'\nimport all from './all'\nimport base from './base'\n\ndeclare module '@interactjs/core/InteractStatic' {\n  interface InteractStatic {\n    modifiers: typeof all\n  }\n}\n\nconst modifiers: Interact.Plugin = {\n  id: 'modifiers',\n  install (scope) {\n    const { interactStatic: interact } = scope\n\n    scope.usePlugin(base)\n    scope.usePlugin(snappers)\n\n    interact.modifiers = all\n\n    // for backwrads compatibility\n    for (const type in all) {\n      const { _defaults, _methods } = all[type as keyof typeof all]\n\n      ;(_defaults as any)._methods = _methods\n      ;(scope.defaults.perAction as any)[type] = _defaults\n    }\n  },\n}\n\nexport default modifiers\n","import BaseEvent from '../core/BaseEvent'\nimport * as pointerUtils from '../utils/pointerUtils'\n\nexport default class PointerEvent<T extends string = any> extends BaseEvent {\n  type: T\n  originalEvent: Interact.PointerEventType\n  pointerId: number\n  pointerType: string\n  double: boolean\n  pageX: number\n  pageY: number\n  clientX: number\n  clientY: number\n  dt: number\n  eventable: any\n  [key: string]: any\n\n  /** */\n  constructor (\n    type: T,\n    pointer: Interact.PointerType | PointerEvent<any>,\n    event: Interact.PointerEventType,\n    eventTarget: Interact.EventTarget,\n    interaction: Interact.Interaction,\n    timeStamp: number,\n  ) {\n    super(interaction)\n    pointerUtils.pointerExtend(this, event)\n\n    if (event !== pointer) {\n      pointerUtils.pointerExtend(this, pointer)\n    }\n\n    this.timeStamp     = timeStamp\n    this.originalEvent = event\n    this.type          = type\n    this.pointerId     = pointerUtils.getPointerId(pointer)\n    this.pointerType   = pointerUtils.getPointerType(pointer)\n    this.target        = eventTarget\n    this.currentTarget = null\n\n    if (type === 'tap') {\n      const pointerIndex = interaction.getPointerIndex(pointer)\n      this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n      const interval = this.timeStamp - interaction.tapTime\n\n      this.double = !!(interaction.prevTap &&\n        interaction.prevTap.type !== 'doubletap' &&\n        interaction.prevTap.target === this.target &&\n        interval < 500)\n    }\n    else if (type === 'doubletap') {\n      this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n    }\n  }\n\n  _subtractOrigin ({ x: originX, y: originY }: Interact.Point) {\n    this.pageX   -= originX\n    this.pageY   -= originY\n    this.clientX -= originX\n    this.clientY -= originY\n\n    return this\n  }\n\n  _addOrigin ({ x: originX, y: originY }: Interact.Point) {\n    this.pageX   += originX\n    this.pageY   += originY\n    this.clientX += originX\n    this.clientY += originY\n\n    return this\n  }\n\n  /**\n   * Prevent the default behaviour of the original Event\n   */\n  preventDefault () {\n    this.originalEvent.preventDefault()\n  }\n}\n\nexport { PointerEvent }\n","import Eventable from '@interactjs/core/Eventable'\nimport Interaction from '@interactjs/core/Interaction'\nimport { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport Scope from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils/index'\nimport PointerEvent from './PointerEvent'\n\nexport type EventTargetList = Array<{\n  node: Node\n  eventable: Eventable\n  props: { [key: string]: any }\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n  enabled?: undefined // not used\n  holdDuration?: number\n  ignoreFrom?: any\n  allowFrom?: any\n  origin?: Interact.Point | string | Interact.Element\n}\n\ndeclare module '@interactjs/core/scope' {\n  interface Scope {\n    pointerEvents: typeof pointerEvents\n  }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    prevTap?: PointerEvent<string>\n    tapTime?: number\n  }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n  interface PointerInfo {\n    hold?: {\n      duration: number\n      timeout: any\n    }\n  }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n  interface ActionDefaults {\n    pointerEvents: Interact.Options\n  }\n}\n\ndeclare module '@interactjs/core/scope' {\n  interface SignalArgs {\n    'pointerEvents:new': { pointerEvent: PointerEvent<any> }\n    'pointerEvents:fired': {\n      interaction: Interaction\n      pointer: Interact.PointerType | PointerEvent<any>\n      event: Interact.PointerEventType | PointerEvent<any>\n      eventTarget: Interact.EventTarget\n      pointerEvent: PointerEvent<any>\n      targets?: EventTargetList\n      type: string\n    }\n    'pointerEvents:collect-targets': {\n      interaction: Interaction\n      pointer: Interact.PointerType | PointerEvent<any>\n      event: Interact.PointerEventType | PointerEvent<any>\n      eventTarget: Interact.EventTarget\n      targets?: EventTargetList\n      type: string\n      path: Node[]\n      node: null\n    }\n  }\n}\n\nconst defaults: PointerEventOptions = {\n  holdDuration: 600,\n  ignoreFrom  : null,\n  allowFrom   : null,\n  origin      : { x: 0, y: 0 },\n}\n\nconst pointerEvents = {\n  id: 'pointer-events/base',\n  install,\n  listeners: {\n    'interactions:new': addInteractionProps,\n    'interactions:update-pointer': addHoldInfo,\n    'interactions:move': moveAndClearHold,\n    'interactions:down': (arg, scope) => {\n      downAndStartHold(arg, scope)\n      fire(arg, scope)\n    },\n    'interactions:up': (arg, scope) => {\n      clearHold(arg)\n      fire(arg, scope)\n      tapAfterUp(arg, scope)\n    },\n    'interactions:cancel': (arg, scope) => {\n      clearHold(arg)\n      fire(arg, scope)\n    },\n  },\n  PointerEvent,\n  fire,\n  collectEventTargets,\n  defaults,\n  types: {\n    down: true,\n    move: true,\n    up: true,\n    cancel: true,\n    tap: true,\n    doubletap: true,\n    hold: true,\n  } as { [type: string]: true },\n}\n\nfunction fire<T extends string> (\n  arg: {\n    pointer: Interact.PointerType | PointerEvent<any>\n    event: Interact.PointerEventType | PointerEvent<any>\n    eventTarget: Interact.EventTarget\n    interaction: Interaction\n    type: T\n    targets?: EventTargetList\n  },\n  scope: Interact.Scope,\n) {\n  const {\n    interaction,\n    pointer,\n    event,\n    eventTarget,\n    type,\n    targets = collectEventTargets(arg, scope),\n  } = arg\n\n  const pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now())\n\n  scope.fire('pointerEvents:new', { pointerEvent })\n\n  const signalArg = {\n    interaction,\n    pointer,\n    event,\n    eventTarget,\n    targets,\n    type,\n    pointerEvent,\n  }\n\n  for (let i = 0; i < targets.length; i++) {\n    const target = targets[i]\n\n    for (const prop in target.props || {}) {\n      (pointerEvent as any)[prop] = target.props[prop]\n    }\n\n    const origin = utils.getOriginXY(target.eventable, target.node)\n\n    pointerEvent._subtractOrigin(origin)\n    pointerEvent.eventable = target.eventable\n    pointerEvent.currentTarget = target.node\n\n    target.eventable.fire(pointerEvent)\n\n    pointerEvent._addOrigin(origin)\n\n    if (pointerEvent.immediatePropagationStopped ||\n        (pointerEvent.propagationStopped &&\n            (i + 1) < targets.length && targets[i + 1].node !== pointerEvent.currentTarget)) {\n      break\n    }\n  }\n\n  scope.fire('pointerEvents:fired', signalArg)\n\n  if (type === 'tap') {\n    // if pointerEvent should make a double tap, create and fire a doubletap\n    // PointerEvent and use that as the prevTap\n    const prevTap = pointerEvent.double\n      ? fire({\n        interaction,\n        pointer,\n        event,\n        eventTarget,\n        type: 'doubletap',\n      }, scope)\n      : pointerEvent\n\n    interaction.prevTap = prevTap\n    interaction.tapTime = prevTap.timeStamp\n  }\n\n  return pointerEvent\n}\n\nfunction collectEventTargets<T extends string> ({ interaction, pointer, event, eventTarget, type }: {\n  interaction: Interaction\n  pointer: Interact.PointerType | PointerEvent<any>\n  event: Interact.PointerEventType | PointerEvent<any>\n  eventTarget: Interact.EventTarget\n  type: T\n}, scope: Interact.Scope) {\n  const pointerIndex = interaction.getPointerIndex(pointer)\n  const pointerInfo = interaction.pointers[pointerIndex]\n\n  // do not fire a tap event if the pointer was moved before being lifted\n  if (type === 'tap' && (interaction.pointerWasMoved ||\n      // or if the pointerup target is different to the pointerdown target\n      !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n    return []\n  }\n\n  const path = utils.dom.getPath(eventTarget as Interact.Element | Document)\n  const signalArg = {\n    interaction,\n    pointer,\n    event,\n    eventTarget,\n    type,\n    path,\n    targets: [] as EventTargetList,\n    node: null,\n  }\n\n  for (const node of path) {\n    signalArg.node = node\n\n    scope.fire('pointerEvents:collect-targets', signalArg)\n  }\n\n  if (type === 'hold') {\n    signalArg.targets = signalArg.targets.filter(target =>\n      target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)\n  }\n\n  return signalArg.targets\n}\n\nfunction addInteractionProps ({ interaction }) {\n  interaction.prevTap = null   // the most recent tap event on this interaction\n  interaction.tapTime = 0     // time of the most recent tap event\n}\n\nfunction addHoldInfo ({ down, pointerInfo }: Interact.SignalArgs['interactions:update-pointer']) {\n  if (!down && pointerInfo.hold) {\n    return\n  }\n\n  pointerInfo.hold = { duration: Infinity, timeout: null }\n}\n\nfunction clearHold ({ interaction, pointerIndex }) {\n  if (interaction.pointers[pointerIndex].hold) {\n    clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n  }\n}\n\nfunction moveAndClearHold (\n  { interaction, pointer, event, eventTarget, duplicate }: Interact.SignalArgs['interactions:move'],\n  scope: Interact.Scope,\n) {\n  const pointerIndex = interaction.getPointerIndex(pointer)\n\n  if (!duplicate && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n    if (interaction.pointerIsDown) {\n      clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n    }\n\n    fire({\n      interaction,\n      pointer,\n      event,\n      eventTarget: eventTarget as Interact.Element,\n      type: 'move',\n    }, scope)\n  }\n}\n\nfunction downAndStartHold ({ interaction, pointer, event, eventTarget, pointerIndex }: Interact.SignalArgs['interactions:down'], scope: Interact.Scope) {\n  const timer = interaction.pointers[pointerIndex].hold\n  const path = utils.dom.getPath(eventTarget as Interact.Element | Document)\n  const signalArg = {\n    interaction,\n    pointer,\n    event,\n    eventTarget,\n    type: 'hold',\n    targets: [] as EventTargetList,\n    path,\n    node: null,\n  }\n\n  for (const node of path) {\n    signalArg.node = node\n\n    scope.fire('pointerEvents:collect-targets', signalArg)\n  }\n\n  if (!signalArg.targets.length) { return }\n\n  let minDuration = Infinity\n\n  for (const target of signalArg.targets) {\n    const holdDuration = target.eventable.options.holdDuration\n\n    if (holdDuration < minDuration) {\n      minDuration = holdDuration\n    }\n  }\n\n  timer.duration = minDuration\n  timer.timeout = setTimeout(() => {\n    fire({\n      interaction,\n      eventTarget,\n      pointer,\n      event,\n      type: 'hold',\n    }, scope)\n  }, minDuration)\n}\n\nfunction tapAfterUp ({ interaction, pointer, event, eventTarget }: Interact.SignalArgs['interactions:up'], scope: Interact.Scope) {\n  if (!interaction.pointerWasMoved) {\n    fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n  }\n}\n\nfunction install (scope: Scope) {\n  scope.pointerEvents = pointerEvents\n  scope.defaults.actions.pointerEvents = pointerEvents.defaults\n  utils.extend(scope.actions.phaselessTypes, pointerEvents.types)\n}\n\nexport default pointerEvents\n","import { ListenerMap } from '@interactjs/core/scope'\nimport PointerEvent from './PointerEvent'\nimport basePlugin from './base'\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    holdIntervalHandle?: any\n  }\n}\n\ndeclare module '@interactjs/pointer-events/PointerEvent' {\n  interface PointerEvent<T extends string = any> {\n    count?: number\n  }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n  interface PointerEventOptions {\n    holdRepeatInterval?: number\n  }\n}\n\nfunction install (scope: Interact.Scope) {\n  scope.usePlugin(basePlugin)\n\n  const {\n    pointerEvents,\n  } = scope\n\n  // don't repeat by default\n  pointerEvents.defaults.holdRepeatInterval = 0\n  pointerEvents.types.holdrepeat = scope.actions.phaselessTypes.holdrepeat = true\n}\n\nfunction onNew ({ pointerEvent }: { pointerEvent: PointerEvent<any> }) {\n  if (pointerEvent.type !== 'hold') { return }\n\n  pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired (\n  { interaction, pointerEvent, eventTarget, targets }: Interact.SignalArgs['pointerEvents:fired'],\n  scope: Interact.Scope,\n) {\n  if (pointerEvent.type !== 'hold' || !targets.length) { return }\n\n  // get the repeat interval from the first eventable\n  const interval = targets[0].eventable.options.holdRepeatInterval\n\n  // don't repeat if the interval is 0 or less\n  if (interval <= 0) { return }\n\n  // set a timeout to fire the holdrepeat event\n  interaction.holdIntervalHandle = setTimeout(() => {\n    scope.pointerEvents.fire({\n      interaction,\n      eventTarget,\n      type: 'hold',\n      pointer: pointerEvent,\n      event: pointerEvent,\n    }, scope)\n  }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }: { interaction: Interact.Interaction }) {\n  // set the interaction's holdStopTime property\n  // to stop further holdRepeat events\n  if (interaction.holdIntervalHandle) {\n    clearInterval(interaction.holdIntervalHandle)\n    interaction.holdIntervalHandle = null\n  }\n}\n\nconst holdRepeat: Interact.Plugin = {\n  id: 'pointer-events/holdRepeat',\n  install,\n  listeners: ['move', 'up', 'cancel', 'endall'].reduce(\n    (acc, enderTypes) => {\n      (acc as any)[`pointerEvents:${enderTypes}`] = endHoldRepeat\n      return acc\n    },\n    {\n      'pointerEvents:new': onNew,\n      'pointerEvents:fired': onFired,\n    } as ListenerMap,\n  ),\n}\n\nexport default holdRepeat\n","import Scope from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n  interface Interactable {\n    pointerEvents: typeof pointerEventsMethod\n    __backCompatOption: (optionName: string, newValue: any) => any\n  }\n}\n\nfunction install (scope: Scope) {\n  const { Interactable } = scope\n\n  Interactable.prototype.pointerEvents = pointerEventsMethod\n\n  const __backCompatOption = Interactable.prototype._backCompatOption\n\n  Interactable.prototype._backCompatOption = function (optionName, newValue) {\n    const ret = __backCompatOption.call(this, optionName, newValue)\n\n    if (ret === this) {\n      this.events.options[optionName] = newValue\n    }\n\n    return ret\n  }\n}\n\nfunction pointerEventsMethod (this: Interact.Interactable, options: any) {\n  extend(this.events.options, options)\n\n  return this\n}\n\nconst plugin: Interact.Plugin = {\n  id: 'pointer-events/interactableTargets',\n  install,\n  listeners: {\n    'pointerEvents:collect-targets': ({\n      targets,\n      node,\n      type,\n      eventTarget,\n    }, scope) => {\n      scope.interactables.forEachMatch(node, (interactable: Interactable) => {\n        const eventable = interactable.events\n        const options = eventable.options\n\n        if (\n          eventable.types[type] &&\n          eventable.types[type].length &&\n        interactable.testIgnoreAllow(options, node, eventTarget)) {\n          targets.push({\n            node,\n            eventable,\n            props: { interactable },\n          })\n        }\n      })\n    },\n\n    'interactable:new': ({ interactable }) => {\n      interactable.events.getRect = function (element: Interact.Element) {\n        return interactable.getRect(element)\n      }\n    },\n\n    'interactable:set': ({ interactable, options }, scope) => {\n      extend(interactable.events.options, scope.pointerEvents.defaults)\n      extend(interactable.events.options, options.pointerEvents || {})\n    },\n  },\n}\n\nexport default plugin\n","import * as pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nexport default {\n  id: 'pointer-events',\n  install (scope: Interact.Scope) {\n    scope.usePlugin(pointerEvents)\n    scope.usePlugin(holdRepeat)\n    scope.usePlugin(interactableTargets)\n  },\n}\n\nexport {\n  pointerEvents,\n  holdRepeat,\n  interactableTargets,\n}\n","import Interactable from '@interactjs/core/Interactable'\nimport { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport Scope from '@interactjs/core/scope'\nimport { arr, extend, is, pointer as pointerUtils, rect as rectUtils, win } from '@interactjs/utils/index'\n\ndeclare module '@interactjs/core/Interactable' {\n  interface Interactable {\n    reflow: (action: ActionProps) => ReturnType<typeof reflow>\n  }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n  interface Interaction {\n    _reflowPromise: Promise<void>\n    _reflowResolve: () => void\n  }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n  // eslint-disable-next-line no-shadow\n  interface PhaseMap {\n    reflow?: true\n  }\n}\n\nexport function install (scope: Scope) {\n  const {\n    /** @lends Interactable */\n    // eslint-disable-next-line no-shadow\n    Interactable,\n  } = scope\n\n  scope.actions.phases.reflow = true\n\n  /**\n   * ```js\n   * const interactable = interact(target)\n   * const drag = { name: drag, axis: 'x' }\n   * const resize = { name: resize, edges: { left: true, bottom: true }\n   *\n   * interactable.reflow(drag)\n   * interactable.reflow(resize)\n   * ```\n   *\n   * Start an action sequence to re-apply modifiers, check drops, etc.\n   *\n   * @param { Object } action The action to begin\n   * @param { string } action.name The name of the action\n   * @returns { Promise } A promise that resolves to the `Interactable` when actions on all targets have ended\n   */\n  Interactable.prototype.reflow = function (action) {\n    return reflow(this, action, scope)\n  }\n}\n\nfunction reflow<T extends Interact.ActionName> (interactable: Interactable, action: ActionProps<T>, scope: Scope): Promise<Interactable> {\n  const elements = (is.string(interactable.target)\n    ? arr.from(interactable._context.querySelectorAll(interactable.target))\n    : [interactable.target]) as Interact.Element[]\n\n  // tslint:disable-next-line variable-name\n  const Promise = (win.window as any).Promise\n  const promises: Array<Promise<null>> | null = Promise ? [] : null\n\n  for (const element of elements) {\n    const rect = interactable.getRect(element as HTMLElement | SVGElement)\n\n    if (!rect) { break }\n\n    const runningInteraction = arr.find(\n      scope.interactions.list,\n      (interaction: Interaction) => {\n        return interaction.interacting() &&\n          interaction.interactable === interactable &&\n          interaction.element === element &&\n          interaction.prepared.name === action.name\n      })\n    let reflowPromise: Promise<null>\n\n    if (runningInteraction) {\n      runningInteraction.move()\n\n      if (promises) {\n        reflowPromise = runningInteraction._reflowPromise || new Promise((resolve: any) => {\n          runningInteraction._reflowResolve = resolve\n        })\n      }\n    }\n    else {\n      const xywh = rectUtils.tlbrToXywh(rect)\n      const coords = {\n        page     : { x: xywh.x, y: xywh.y },\n        client   : { x: xywh.x, y: xywh.y },\n        timeStamp: scope.now(),\n      }\n\n      const event = pointerUtils.coordsToEvent(coords)\n      reflowPromise = startReflow<T>(scope, interactable, element, action, event)\n    }\n\n    if (promises) {\n      promises.push(reflowPromise)\n    }\n  }\n\n  return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow<T extends Interact.ActionName> (scope: Scope, interactable: Interactable, element: Interact.Element, action: ActionProps<T>, event: any) {\n  const interaction = scope.interactions.new({ pointerType: 'reflow' })\n  const signalArg = {\n    interaction,\n    event,\n    pointer: event,\n    eventTarget: element,\n    phase: 'reflow',\n  } as const\n\n  interaction.interactable = interactable\n  interaction.element = element\n  interaction.prepared = extend({}, action)\n  interaction.prevEvent = event\n  interaction.updatePointer(event, event, element, true)\n\n  interaction._doPhase(signalArg)\n\n  const reflowPromise = (win.window as unknown as any).Promise\n    ? new (win.window as unknown as any).Promise((resolve: any) => {\n      interaction._reflowResolve = resolve\n    })\n    : null\n\n  interaction._reflowPromise = reflowPromise\n  interaction.start(action, interactable, element)\n\n  if (interaction._interacting) {\n    interaction.move(signalArg)\n    interaction.end(event)\n  }\n  else {\n    interaction.stop()\n  }\n\n  interaction.removePointer(event, event)\n  interaction.pointerIsDown = false\n\n  return reflowPromise\n}\n\nexport default {\n  id: 'reflow',\n  install,\n  listeners: {\n    // remove completed reflow interactions\n    'interactions:stop': ({ interaction }, scope) => {\n      if (interaction.pointerType === 'reflow') {\n        if (interaction._reflowResolve) {\n          interaction._reflowResolve()\n        }\n\n        arr.remove(scope.interactions.list, interaction)\n      }\n    },\n  },\n} as Interact.Plugin\n","export default {}\n","export const exchange = {}\n","import '@interactjs/types'\n\nimport actions from '@interactjs/actions'\n\nimport arrange from '@interactjs/arrange'\nimport autoScroll from '@interactjs/auto-scroll'\nimport autoStart from '@interactjs/auto-start'\n\nimport clone from '@interactjs/clone'\n\nimport components from '@interactjs/components'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools'\nimport * as feedback from '@interactjs/feedback'\nimport inertia from '@interactjs/inertia'\nimport interact from '@interactjs/interact'\nimport modifiers from '@interactjs/modifiers/index'\nimport multiTarget from '@interactjs/multi-target'\nimport offset from '@interactjs/offset'\nimport pointerEvents from '@interactjs/pointer-events'\nimport reflow from '@interactjs/reflow'\n\nimport * as displace from '@interactjs/utils/displace'\nimport { exchange } from '@interactjs/utils/exchange'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\nimport * as vueComponents from '@interactjs/vue'\n\ndeclare module '@interactjs/core/InteractStatic' {\n  interface InteractStatic {\n    __utils: {\n      exchange: typeof exchange\n      displace: typeof displace\n      pointer: typeof pointerUtils\n    }\n    feedback: typeof feedback\n    vue: {\n      components: typeof vueComponents\n    }\n  }\n}\n\ninteract.use(multiTarget)\n\ninteract.use(interactablePreventDefault)\n\ninteract.use(offset)\n\n// interaction element cloning\ninteract.use(clone)\n\n// sortable and swappable\ninteract.use(arrange)\n\n// pointerEvents\ninteract.use(pointerEvents)\n\n// inertia\ninteract.use(inertia)\n\n// snap, resize, etc.\ninteract.use(modifiers)\n\n// autoStart, hold\ninteract.use(autoStart)\n\n// drag and drop, resize, gesture\ninteract.use(actions)\n\n// autoScroll\ninteract.use(autoScroll)\n\n// reflow\ninteract.use(reflow)\n\ninteract.feedback = feedback\n\ninteract.use(components)\n\ninteract.vue = {\n  components: vueComponents,\n}\n\ninteract.__utils = {\n  exchange,\n  displace,\n  pointer: pointerUtils,\n}\n\n// eslint-disable-next-line no-undef\nif (process.env.NODE_ENV !== 'production') {\n  interact.use(devTools)\n}\n\nexport default interact\n","import interact from '@interactjs/interactjs/index'\n\nif (typeof module === 'object' && !!module) {\n  try { module.exports = interact }\n  catch {}\n}\n\n(interact as any).default = interact\n\nexport default interact\n","\nreturn _$index_85;\n\n});\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var basePickBy = require('./_basePickBy'),\n    hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n  return basePickBy(object, paths, function(value, path) {\n    return hasIn(object, path);\n  });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n    baseSet = require('./_baseSet'),\n    castPath = require('./_castPath');\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = basePickBy;\n","var assignValue = require('./_assignValue'),\n    castPath = require('./_castPath'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var flatten = require('./flatten'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var _ = require('./lodash.min').runInContext();\nmodule.exports = require('./fp/_baseConvert')(_, _);\n","var mapping = require('./_mapping'),\n    fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n  return n == 2\n    ? function(a, b) { return func.apply(undefined, arguments); }\n    : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n  return n == 2\n    ? function(a, b) { return func(a, b); }\n    : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n  var length = array ? array.length : 0,\n      result = Array(length);\n\n  while (length--) {\n    result[length] = array[length];\n  }\n  return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n  return function(object) {\n    return func({}, object);\n  };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n  return function() {\n    var length = arguments.length,\n        lastIndex = length - 1,\n        args = Array(length);\n\n    while (length--) {\n      args[length] = arguments[length];\n    }\n    var array = args[start],\n        otherArgs = args.slice(0, start);\n\n    if (array) {\n      push.apply(otherArgs, array);\n    }\n    if (start != lastIndex) {\n      push.apply(otherArgs, args.slice(start + 1));\n    }\n    return func.apply(this, otherArgs);\n  };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n  return function() {\n    var length = arguments.length;\n    if (!length) {\n      return;\n    }\n    var args = Array(length);\n    while (length--) {\n      args[length] = arguments[length];\n    }\n    var result = args[0] = cloner.apply(undefined, args);\n    func.apply(undefined, args);\n    return result;\n  };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n  var isLib = typeof name == 'function',\n      isObj = name === Object(name);\n\n  if (isObj) {\n    options = func;\n    func = name;\n    name = undefined;\n  }\n  if (func == null) {\n    throw new TypeError;\n  }\n  options || (options = {});\n\n  var config = {\n    'cap': 'cap' in options ? options.cap : true,\n    'curry': 'curry' in options ? options.curry : true,\n    'fixed': 'fixed' in options ? options.fixed : true,\n    'immutable': 'immutable' in options ? options.immutable : true,\n    'rearg': 'rearg' in options ? options.rearg : true\n  };\n\n  var defaultHolder = isLib ? func : fallbackHolder,\n      forceCurry = ('curry' in options) && options.curry,\n      forceFixed = ('fixed' in options) && options.fixed,\n      forceRearg = ('rearg' in options) && options.rearg,\n      pristine = isLib ? func.runInContext() : undefined;\n\n  var helpers = isLib ? func : {\n    'ary': util.ary,\n    'assign': util.assign,\n    'clone': util.clone,\n    'curry': util.curry,\n    'forEach': util.forEach,\n    'isArray': util.isArray,\n    'isError': util.isError,\n    'isFunction': util.isFunction,\n    'isWeakMap': util.isWeakMap,\n    'iteratee': util.iteratee,\n    'keys': util.keys,\n    'rearg': util.rearg,\n    'toInteger': util.toInteger,\n    'toPath': util.toPath\n  };\n\n  var ary = helpers.ary,\n      assign = helpers.assign,\n      clone = helpers.clone,\n      curry = helpers.curry,\n      each = helpers.forEach,\n      isArray = helpers.isArray,\n      isError = helpers.isError,\n      isFunction = helpers.isFunction,\n      isWeakMap = helpers.isWeakMap,\n      keys = helpers.keys,\n      rearg = helpers.rearg,\n      toInteger = helpers.toInteger,\n      toPath = helpers.toPath;\n\n  var aryMethodKeys = keys(mapping.aryMethod);\n\n  var wrappers = {\n    'castArray': function(castArray) {\n      return function() {\n        var value = arguments[0];\n        return isArray(value)\n          ? castArray(cloneArray(value))\n          : castArray.apply(undefined, arguments);\n      };\n    },\n    'iteratee': function(iteratee) {\n      return function() {\n        var func = arguments[0],\n            arity = arguments[1],\n            result = iteratee(func, arity),\n            length = result.length;\n\n        if (config.cap && typeof arity == 'number') {\n          arity = arity > 2 ? (arity - 2) : 1;\n          return (length && length <= arity) ? result : baseAry(result, arity);\n        }\n        return result;\n      };\n    },\n    'mixin': function(mixin) {\n      return function(source) {\n        var func = this;\n        if (!isFunction(func)) {\n          return mixin(func, Object(source));\n        }\n        var pairs = [];\n        each(keys(source), function(key) {\n          if (isFunction(source[key])) {\n            pairs.push([key, func.prototype[key]]);\n          }\n        });\n\n        mixin(func, Object(source));\n\n        each(pairs, function(pair) {\n          var value = pair[1];\n          if (isFunction(value)) {\n            func.prototype[pair[0]] = value;\n          } else {\n            delete func.prototype[pair[0]];\n          }\n        });\n        return func;\n      };\n    },\n    'nthArg': function(nthArg) {\n      return function(n) {\n        var arity = n < 0 ? 1 : (toInteger(n) + 1);\n        return curry(nthArg(n), arity);\n      };\n    },\n    'rearg': function(rearg) {\n      return function(func, indexes) {\n        var arity = indexes ? indexes.length : 0;\n        return curry(rearg(func, indexes), arity);\n      };\n    },\n    'runInContext': function(runInContext) {\n      return function(context) {\n        return baseConvert(util, runInContext(context), options);\n      };\n    }\n  };\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Casts `func` to a function with an arity capped iteratee if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @returns {Function} Returns the cast function.\n   */\n  function castCap(name, func) {\n    if (config.cap) {\n      var indexes = mapping.iterateeRearg[name];\n      if (indexes) {\n        return iterateeRearg(func, indexes);\n      }\n      var n = !isLib && mapping.iterateeAry[name];\n      if (n) {\n        return iterateeAry(func, n);\n      }\n    }\n    return func;\n  }\n\n  /**\n   * Casts `func` to a curried function if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @param {number} n The arity of `func`.\n   * @returns {Function} Returns the cast function.\n   */\n  function castCurry(name, func, n) {\n    return (forceCurry || (config.curry && n > 1))\n      ? curry(func, n)\n      : func;\n  }\n\n  /**\n   * Casts `func` to a fixed arity function if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @param {number} n The arity cap.\n   * @returns {Function} Returns the cast function.\n   */\n  function castFixed(name, func, n) {\n    if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n      var data = mapping.methodSpread[name],\n          start = data && data.start;\n\n      return start  === undefined ? ary(func, n) : flatSpread(func, start);\n    }\n    return func;\n  }\n\n  /**\n   * Casts `func` to an rearged function if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @param {number} n The arity of `func`.\n   * @returns {Function} Returns the cast function.\n   */\n  function castRearg(name, func, n) {\n    return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n      ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n      : func;\n  }\n\n  /**\n   * Creates a clone of `object` by `path`.\n   *\n   * @private\n   * @param {Object} object The object to clone.\n   * @param {Array|string} path The path to clone by.\n   * @returns {Object} Returns the cloned object.\n   */\n  function cloneByPath(object, path) {\n    path = toPath(path);\n\n    var index = -1,\n        length = path.length,\n        lastIndex = length - 1,\n        result = clone(Object(object)),\n        nested = result;\n\n    while (nested != null && ++index < length) {\n      var key = path[index],\n          value = nested[key];\n\n      if (value != null &&\n          !(isFunction(value) || isError(value) || isWeakMap(value))) {\n        nested[key] = clone(index == lastIndex ? value : Object(value));\n      }\n      nested = nested[key];\n    }\n    return result;\n  }\n\n  /**\n   * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n   * version with conversion `options` applied.\n   *\n   * @param {Object} [options] The options object. See `baseConvert` for more details.\n   * @returns {Function} Returns the converted `lodash`.\n   */\n  function convertLib(options) {\n    return _.runInContext.convert(options)(undefined);\n  }\n\n  /**\n   * Create a converter function for `func` of `name`.\n   *\n   * @param {string} name The name of the function to convert.\n   * @param {Function} func The function to convert.\n   * @returns {Function} Returns the new converter function.\n   */\n  function createConverter(name, func) {\n    var realName = mapping.aliasToReal[name] || name,\n        methodName = mapping.remap[realName] || realName,\n        oldOptions = options;\n\n    return function(options) {\n      var newUtil = isLib ? pristine : helpers,\n          newFunc = isLib ? pristine[methodName] : func,\n          newOptions = assign(assign({}, oldOptions), options);\n\n      return baseConvert(newUtil, realName, newFunc, newOptions);\n    };\n  }\n\n  /**\n   * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n   * arguments, ignoring any additional arguments.\n   *\n   * @private\n   * @param {Function} func The function to cap iteratee arguments for.\n   * @param {number} n The arity cap.\n   * @returns {Function} Returns the new function.\n   */\n  function iterateeAry(func, n) {\n    return overArg(func, function(func) {\n      return typeof func == 'function' ? baseAry(func, n) : func;\n    });\n  }\n\n  /**\n   * Creates a function that wraps `func` to invoke its iteratee with arguments\n   * arranged according to the specified `indexes` where the argument value at\n   * the first index is provided as the first argument, the argument value at\n   * the second index is provided as the second argument, and so on.\n   *\n   * @private\n   * @param {Function} func The function to rearrange iteratee arguments for.\n   * @param {number[]} indexes The arranged argument indexes.\n   * @returns {Function} Returns the new function.\n   */\n  function iterateeRearg(func, indexes) {\n    return overArg(func, function(func) {\n      var n = indexes.length;\n      return baseArity(rearg(baseAry(func, n), indexes), n);\n    });\n  }\n\n  /**\n   * Creates a function that invokes `func` with its first argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function() {\n      var length = arguments.length;\n      if (!length) {\n        return func();\n      }\n      var args = Array(length);\n      while (length--) {\n        args[length] = arguments[length];\n      }\n      var index = config.rearg ? 0 : (length - 1);\n      args[index] = transform(args[index]);\n      return func.apply(undefined, args);\n    };\n  }\n\n  /**\n   * Creates a function that wraps `func` and applys the conversions\n   * rules by `name`.\n   *\n   * @private\n   * @param {string} name The name of the function to wrap.\n   * @param {Function} func The function to wrap.\n   * @returns {Function} Returns the converted function.\n   */\n  function wrap(name, func, placeholder) {\n    var result,\n        realName = mapping.aliasToReal[name] || name,\n        wrapped = func,\n        wrapper = wrappers[realName];\n\n    if (wrapper) {\n      wrapped = wrapper(func);\n    }\n    else if (config.immutable) {\n      if (mapping.mutate.array[realName]) {\n        wrapped = wrapImmutable(func, cloneArray);\n      }\n      else if (mapping.mutate.object[realName]) {\n        wrapped = wrapImmutable(func, createCloner(func));\n      }\n      else if (mapping.mutate.set[realName]) {\n        wrapped = wrapImmutable(func, cloneByPath);\n      }\n    }\n    each(aryMethodKeys, function(aryKey) {\n      each(mapping.aryMethod[aryKey], function(otherName) {\n        if (realName == otherName) {\n          var data = mapping.methodSpread[realName],\n              afterRearg = data && data.afterRearg;\n\n          result = afterRearg\n            ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n            : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n          result = castCap(realName, result);\n          result = castCurry(realName, result, aryKey);\n          return false;\n        }\n      });\n      return !result;\n    });\n\n    result || (result = wrapped);\n    if (result == func) {\n      result = forceCurry ? curry(result, 1) : function() {\n        return func.apply(this, arguments);\n      };\n    }\n    result.convert = createConverter(realName, func);\n    result.placeholder = func.placeholder = placeholder;\n\n    return result;\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  if (!isObj) {\n    return wrap(name, func, defaultHolder);\n  }\n  var _ = func;\n\n  // Convert methods by ary cap.\n  var pairs = [];\n  each(aryMethodKeys, function(aryKey) {\n    each(mapping.aryMethod[aryKey], function(key) {\n      var func = _[mapping.remap[key] || key];\n      if (func) {\n        pairs.push([key, wrap(key, func, _)]);\n      }\n    });\n  });\n\n  // Convert remaining methods.\n  each(keys(_), function(key) {\n    var func = _[key];\n    if (typeof func == 'function') {\n      var length = pairs.length;\n      while (length--) {\n        if (pairs[length][0] == key) {\n          return;\n        }\n      }\n      func.convert = createConverter(key, func);\n      pairs.push([key, func]);\n    }\n  });\n\n  // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n  each(pairs, function(pair) {\n    _[pair[0]] = pair[1];\n  });\n\n  _.convert = convertLib;\n  _.placeholder = _;\n\n  // Assign aliases.\n  each(keys(_), function(key) {\n    each(mapping.realToAlias[key] || [], function(alias) {\n      _[alias] = _[key];\n    });\n  });\n\n  return _;\n}\n\nmodule.exports = baseConvert;\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n  // Lodash aliases.\n  'each': 'forEach',\n  'eachRight': 'forEachRight',\n  'entries': 'toPairs',\n  'entriesIn': 'toPairsIn',\n  'extend': 'assignIn',\n  'extendAll': 'assignInAll',\n  'extendAllWith': 'assignInAllWith',\n  'extendWith': 'assignInWith',\n  'first': 'head',\n\n  // Methods that are curried variants of others.\n  'conforms': 'conformsTo',\n  'matches': 'isMatch',\n  'property': 'get',\n\n  // Ramda aliases.\n  '__': 'placeholder',\n  'F': 'stubFalse',\n  'T': 'stubTrue',\n  'all': 'every',\n  'allPass': 'overEvery',\n  'always': 'constant',\n  'any': 'some',\n  'anyPass': 'overSome',\n  'apply': 'spread',\n  'assoc': 'set',\n  'assocPath': 'set',\n  'complement': 'negate',\n  'compose': 'flowRight',\n  'contains': 'includes',\n  'dissoc': 'unset',\n  'dissocPath': 'unset',\n  'dropLast': 'dropRight',\n  'dropLastWhile': 'dropRightWhile',\n  'equals': 'isEqual',\n  'identical': 'eq',\n  'indexBy': 'keyBy',\n  'init': 'initial',\n  'invertObj': 'invert',\n  'juxt': 'over',\n  'omitAll': 'omit',\n  'nAry': 'ary',\n  'path': 'get',\n  'pathEq': 'matchesProperty',\n  'pathOr': 'getOr',\n  'paths': 'at',\n  'pickAll': 'pick',\n  'pipe': 'flow',\n  'pluck': 'map',\n  'prop': 'get',\n  'propEq': 'matchesProperty',\n  'propOr': 'getOr',\n  'props': 'at',\n  'symmetricDifference': 'xor',\n  'symmetricDifferenceBy': 'xorBy',\n  'symmetricDifferenceWith': 'xorWith',\n  'takeLast': 'takeRight',\n  'takeLastWhile': 'takeRightWhile',\n  'unapply': 'rest',\n  'unnest': 'flatten',\n  'useWith': 'overArgs',\n  'where': 'conformsTo',\n  'whereEq': 'isMatch',\n  'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n  '1': [\n    'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n    'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n    'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n    'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n    'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n    'uniqueId', 'words', 'zipAll'\n  ],\n  '2': [\n    'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n    'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n    'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n    'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n    'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n    'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n    'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n    'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n    'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n    'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n    'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n    'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n    'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n    'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n    'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n    'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n    'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n    'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n    'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n    'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n    'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n    'zipObjectDeep'\n  ],\n  '3': [\n    'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n    'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n    'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n    'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n    'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n    'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n    'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n    'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n    'xorWith', 'zipWith'\n  ],\n  '4': [\n    'fill', 'setWith', 'updateWith'\n  ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n  '2': [1, 0],\n  '3': [2, 0, 1],\n  '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n  'dropRightWhile': 1,\n  'dropWhile': 1,\n  'every': 1,\n  'filter': 1,\n  'find': 1,\n  'findFrom': 1,\n  'findIndex': 1,\n  'findIndexFrom': 1,\n  'findKey': 1,\n  'findLast': 1,\n  'findLastFrom': 1,\n  'findLastIndex': 1,\n  'findLastIndexFrom': 1,\n  'findLastKey': 1,\n  'flatMap': 1,\n  'flatMapDeep': 1,\n  'flatMapDepth': 1,\n  'forEach': 1,\n  'forEachRight': 1,\n  'forIn': 1,\n  'forInRight': 1,\n  'forOwn': 1,\n  'forOwnRight': 1,\n  'map': 1,\n  'mapKeys': 1,\n  'mapValues': 1,\n  'partition': 1,\n  'reduce': 2,\n  'reduceRight': 2,\n  'reject': 1,\n  'remove': 1,\n  'some': 1,\n  'takeRightWhile': 1,\n  'takeWhile': 1,\n  'times': 1,\n  'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n  'mapKeys': [1],\n  'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n  'assignInAllWith': [1, 0],\n  'assignInWith': [1, 2, 0],\n  'assignAllWith': [1, 0],\n  'assignWith': [1, 2, 0],\n  'differenceBy': [1, 2, 0],\n  'differenceWith': [1, 2, 0],\n  'getOr': [2, 1, 0],\n  'intersectionBy': [1, 2, 0],\n  'intersectionWith': [1, 2, 0],\n  'isEqualWith': [1, 2, 0],\n  'isMatchWith': [2, 1, 0],\n  'mergeAllWith': [1, 0],\n  'mergeWith': [1, 2, 0],\n  'padChars': [2, 1, 0],\n  'padCharsEnd': [2, 1, 0],\n  'padCharsStart': [2, 1, 0],\n  'pullAllBy': [2, 1, 0],\n  'pullAllWith': [2, 1, 0],\n  'rangeStep': [1, 2, 0],\n  'rangeStepRight': [1, 2, 0],\n  'setWith': [3, 1, 2, 0],\n  'sortedIndexBy': [2, 1, 0],\n  'sortedLastIndexBy': [2, 1, 0],\n  'unionBy': [1, 2, 0],\n  'unionWith': [1, 2, 0],\n  'updateWith': [3, 1, 2, 0],\n  'xorBy': [1, 2, 0],\n  'xorWith': [1, 2, 0],\n  'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n  'assignAll': { 'start': 0 },\n  'assignAllWith': { 'start': 0 },\n  'assignInAll': { 'start': 0 },\n  'assignInAllWith': { 'start': 0 },\n  'defaultsAll': { 'start': 0 },\n  'defaultsDeepAll': { 'start': 0 },\n  'invokeArgs': { 'start': 2 },\n  'invokeArgsMap': { 'start': 2 },\n  'mergeAll': { 'start': 0 },\n  'mergeAllWith': { 'start': 0 },\n  'partial': { 'start': 1 },\n  'partialRight': { 'start': 1 },\n  'without': { 'start': 1 },\n  'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n  'array': {\n    'fill': true,\n    'pull': true,\n    'pullAll': true,\n    'pullAllBy': true,\n    'pullAllWith': true,\n    'pullAt': true,\n    'remove': true,\n    'reverse': true\n  },\n  'object': {\n    'assign': true,\n    'assignAll': true,\n    'assignAllWith': true,\n    'assignIn': true,\n    'assignInAll': true,\n    'assignInAllWith': true,\n    'assignInWith': true,\n    'assignWith': true,\n    'defaults': true,\n    'defaultsAll': true,\n    'defaultsDeep': true,\n    'defaultsDeepAll': true,\n    'merge': true,\n    'mergeAll': true,\n    'mergeAllWith': true,\n    'mergeWith': true,\n  },\n  'set': {\n    'set': true,\n    'setWith': true,\n    'unset': true,\n    'update': true,\n    'updateWith': true\n  }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n  var hasOwnProperty = Object.prototype.hasOwnProperty,\n      object = exports.aliasToReal,\n      result = {};\n\n  for (var key in object) {\n    var value = object[key];\n    if (hasOwnProperty.call(result, value)) {\n      result[value].push(key);\n    } else {\n      result[value] = [key];\n    }\n  }\n  return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n  'assignAll': 'assign',\n  'assignAllWith': 'assignWith',\n  'assignInAll': 'assignIn',\n  'assignInAllWith': 'assignInWith',\n  'curryN': 'curry',\n  'curryRightN': 'curryRight',\n  'defaultsAll': 'defaults',\n  'defaultsDeepAll': 'defaultsDeep',\n  'findFrom': 'find',\n  'findIndexFrom': 'findIndex',\n  'findLastFrom': 'findLast',\n  'findLastIndexFrom': 'findLastIndex',\n  'getOr': 'get',\n  'includesFrom': 'includes',\n  'indexOfFrom': 'indexOf',\n  'invokeArgs': 'invoke',\n  'invokeArgsMap': 'invokeMap',\n  'lastIndexOfFrom': 'lastIndexOf',\n  'mergeAll': 'merge',\n  'mergeAllWith': 'mergeWith',\n  'padChars': 'pad',\n  'padCharsEnd': 'padEnd',\n  'padCharsStart': 'padStart',\n  'propertyOf': 'get',\n  'rangeStep': 'range',\n  'rangeStepRight': 'rangeRight',\n  'restFrom': 'rest',\n  'spreadFrom': 'spread',\n  'trimChars': 'trim',\n  'trimCharsEnd': 'trimEnd',\n  'trimCharsStart': 'trimStart',\n  'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n  'castArray': true,\n  'flow': true,\n  'flowRight': true,\n  'iteratee': true,\n  'mixin': true,\n  'rearg': true,\n  'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n  'add': true,\n  'assign': true,\n  'assignIn': true,\n  'bind': true,\n  'bindKey': true,\n  'concat': true,\n  'difference': true,\n  'divide': true,\n  'eq': true,\n  'gt': true,\n  'gte': true,\n  'isEqual': true,\n  'lt': true,\n  'lte': true,\n  'matchesProperty': true,\n  'merge': true,\n  'multiply': true,\n  'overArgs': true,\n  'partial': true,\n  'partialRight': true,\n  'propertyOf': true,\n  'random': true,\n  'range': true,\n  'rangeRight': true,\n  'subtract': true,\n  'zip': true,\n  'zipObject': true,\n  'zipObjectDeep': true\n};\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.18.1';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`',\n      INVALID_TEMPL_IMPORTS_ERROR_TEXT = 'Invalid `imports` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * **Security:** See\n     * [threat model](https://github.com/lodash/lodash/blob/main/threat-model.md)\n     * — `_.template` is insecure and will be removed in v5.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            };\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n\n      // Prevent prototype pollution:\n      // https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n      // https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\n      var index = -1,\n          length = path.length;\n\n      if (!length) {\n        return true;\n      }\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n\n        // Always block \"__proto__\" anywhere in the path if it's not expected\n        if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n          return false;\n        }\n\n        // Block constructor/prototype as non-terminal traversal keys to prevent\n        // escaping the object graph into built-in constructors and prototypes.\n        if ((key === 'constructor' || key === 'prototype') && index < length - 1) {\n          return false;\n        }\n      }\n\n      var obj = parent(object, path);\n      return obj == null || delete obj[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `-0`, `0n`, `\"\"`, `undefined`, and `NaN` are falsy.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        baseAssignValue(result, pair[0], pair[1]);\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * **Note:** If `lower` is greater than `upper`, the values are swapped.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * // when lower is greater than upper the values are swapped\n     * _.random(5, 0);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(-5);\n     * // => an integer between -5 and 0\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('déjà vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Security:** `_.template` is insecure and should not be used. It will be\n     * removed in Lodash v5. Avoid untrusted input. See\n     * [threat model](https://github.com/lodash/lodash/blob/main/threat-model.md).\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      arrayEach(importsKeys, function(key) {\n        if (reForbiddenIdentifierChars.test(key)) {\n          throw new Error(INVALID_TEMPL_IMPORTS_ERROR_TEXT);\n        }\n      });\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n","/**\n * @license\n * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE\n */\n;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&t(n[r],r,n)!==false;);return n}function e(n,t){for(var r=null==n?0:n.length;r--&&t(n[r],r,n)!==false;);return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;\nreturn true}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!!(null==n?0:n.length)&&y(n,t,0)>-1}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);\nreturn r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function p(n){return n.split(\"\")}function _(n){return n.match(Dt)||[]}function v(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function g(n,t,r,e){for(var u=n.length,i=r+(e?1:-1);e?i--:++i<u;)if(t(n[i],i,n))return i;return-1}function y(n,t,r){return t===t?Z(n,t,r):g(n,b,r)}function d(n,t,r,e){\nfor(var u=r-1,i=n.length;++u<i;)if(e(n[u],t))return u;return-1}function b(n){return n!==n}function w(n,t){var r=null==n?0:n.length;return r?k(n,t)/r:Un}function m(n){return function(t){return null==t?X:t[n]}}function x(n){return function(t){return null==n?X:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function A(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function k(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==X&&(r=r===X?i:r+i)}return r;\n}function I(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function O(n,t){return c(t,function(t){return[t,n[t]]})}function R(n){return n?n.slice(0,H(n)+1).replace(Ct,\"\"):n}function z(n){return function(t){return n(t)}}function E(n,t){return c(t,function(t){return n[t]})}function S(n,t){return n.has(t)}function W(n,t){for(var r=-1,e=n.length;++r<e&&y(t,n[r],0)>-1;);return r}function L(n,t){for(var r=n.length;r--&&y(t,n[r],0)>-1;);return r}function C(n,t){for(var r=n.length,e=0;r--;)n[r]===t&&++e;\nreturn e}function U(n){return\"\\\\\"+Yr[n]}function B(n,t){return null==n?X:n[t]}function T(n){return Pr.test(n)}function $(n){return qr.test(n)}function D(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}function M(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function F(n,t){return function(r){return n(t(r))}}function N(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&o!==an||(n[r]=an,i[u++]=r)}return i}function P(n){var t=-1,r=Array(n.size);\nreturn n.forEach(function(n){r[++t]=n}),r}function q(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function Z(n,t,r){for(var e=r-1,u=n.length;++e<u;)if(n[e]===t)return e;return-1}function K(n,t,r){for(var e=r+1;e--;)if(n[e]===t)return e;return e}function V(n){return T(n)?J(n):_e(n)}function G(n){return T(n)?Y(n):p(n)}function H(n){for(var t=n.length;t--&&Ut.test(n.charAt(t)););return t}function J(n){for(var t=Fr.lastIndex=0;Fr.test(n);)++t;return t}function Y(n){return n.match(Fr)||[];\n}function Q(n){return n.match(Nr)||[]}var X,nn=\"4.18.1\",tn=200,rn=\"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\",en=\"Expected a function\",un=\"Invalid `variable` option passed into `_.template`\",on=\"Invalid `imports` option passed into `_.template`\",fn=\"__lodash_hash_undefined__\",cn=500,an=\"__lodash_placeholder__\",ln=1,sn=2,hn=4,pn=1,_n=2,vn=1,gn=2,yn=4,dn=8,bn=16,wn=32,mn=64,xn=128,jn=256,An=512,kn=30,In=\"...\",On=800,Rn=16,zn=1,En=2,Sn=3,Wn=1/0,Ln=9007199254740991,Cn=1.7976931348623157e308,Un=NaN,Bn=4294967295,Tn=Bn-1,$n=Bn>>>1,Dn=[[\"ary\",xn],[\"bind\",vn],[\"bindKey\",gn],[\"curry\",dn],[\"curryRight\",bn],[\"flip\",An],[\"partial\",wn],[\"partialRight\",mn],[\"rearg\",jn]],Mn=\"[object Arguments]\",Fn=\"[object Array]\",Nn=\"[object AsyncFunction]\",Pn=\"[object Boolean]\",qn=\"[object Date]\",Zn=\"[object DOMException]\",Kn=\"[object Error]\",Vn=\"[object Function]\",Gn=\"[object GeneratorFunction]\",Hn=\"[object Map]\",Jn=\"[object Number]\",Yn=\"[object Null]\",Qn=\"[object Object]\",Xn=\"[object Promise]\",nt=\"[object Proxy]\",tt=\"[object RegExp]\",rt=\"[object Set]\",et=\"[object String]\",ut=\"[object Symbol]\",it=\"[object Undefined]\",ot=\"[object WeakMap]\",ft=\"[object WeakSet]\",ct=\"[object ArrayBuffer]\",at=\"[object DataView]\",lt=\"[object Float32Array]\",st=\"[object Float64Array]\",ht=\"[object Int8Array]\",pt=\"[object Int16Array]\",_t=\"[object Int32Array]\",vt=\"[object Uint8Array]\",gt=\"[object Uint8ClampedArray]\",yt=\"[object Uint16Array]\",dt=\"[object Uint32Array]\",bt=/\\b__p\\+='';/g,wt=/\\b(__p\\+=)''\\+/g,mt=/(__e\\(.*?\\)|\\b__t\\))\\+'';/g,xt=/&(?:amp|lt|gt|quot|#39);/g,jt=/[&<>\"']/g,At=RegExp(xt.source),kt=RegExp(jt.source),It=/<%-([\\s\\S]+?)%>/g,Ot=/<%([\\s\\S]+?)%>/g,Rt=/<%=([\\s\\S]+?)%>/g,zt=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Et=/^\\w*$/,St=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,Wt=/[\\\\^$.*+?()[\\]{}|]/g,Lt=RegExp(Wt.source),Ct=/^\\s+/,Ut=/\\s/,Bt=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,Tt=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,$t=/,? & /,Dt=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,Mt=/[()=,{}\\[\\]\\/\\s]/,Ft=/\\\\(\\\\)?/g,Nt=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,Pt=/\\w*$/,qt=/^[-+]0x[0-9a-f]+$/i,Zt=/^0b[01]+$/i,Kt=/^\\[object .+?Constructor\\]$/,Vt=/^0o[0-7]+$/i,Gt=/^(?:0|[1-9]\\d*)$/,Ht=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,Jt=/($^)/,Yt=/['\\n\\r\\u2028\\u2029\\\\]/g,Qt=\"\\\\ud800-\\\\udfff\",Xt=\"\\\\u0300-\\\\u036f\",nr=\"\\\\ufe20-\\\\ufe2f\",tr=\"\\\\u20d0-\\\\u20ff\",rr=Xt+nr+tr,er=\"\\\\u2700-\\\\u27bf\",ur=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",ir=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\",or=\"\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\",fr=\"\\\\u2000-\\\\u206f\",cr=\" \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",ar=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",lr=\"\\\\ufe0e\\\\ufe0f\",sr=ir+or+fr+cr,hr=\"['\\u2019]\",pr=\"[\"+Qt+\"]\",_r=\"[\"+sr+\"]\",vr=\"[\"+rr+\"]\",gr=\"\\\\d+\",yr=\"[\"+er+\"]\",dr=\"[\"+ur+\"]\",br=\"[^\"+Qt+sr+gr+er+ur+ar+\"]\",wr=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",mr=\"(?:\"+vr+\"|\"+wr+\")\",xr=\"[^\"+Qt+\"]\",jr=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",Ar=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",kr=\"[\"+ar+\"]\",Ir=\"\\\\u200d\",Or=\"(?:\"+dr+\"|\"+br+\")\",Rr=\"(?:\"+kr+\"|\"+br+\")\",zr=\"(?:\"+hr+\"(?:d|ll|m|re|s|t|ve))?\",Er=\"(?:\"+hr+\"(?:D|LL|M|RE|S|T|VE))?\",Sr=mr+\"?\",Wr=\"[\"+lr+\"]?\",Lr=\"(?:\"+Ir+\"(?:\"+[xr,jr,Ar].join(\"|\")+\")\"+Wr+Sr+\")*\",Cr=\"\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])\",Ur=\"\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])\",Br=Wr+Sr+Lr,Tr=\"(?:\"+[yr,jr,Ar].join(\"|\")+\")\"+Br,$r=\"(?:\"+[xr+vr+\"?\",vr,jr,Ar,pr].join(\"|\")+\")\",Dr=RegExp(hr,\"g\"),Mr=RegExp(vr,\"g\"),Fr=RegExp(wr+\"(?=\"+wr+\")|\"+$r+Br,\"g\"),Nr=RegExp([kr+\"?\"+dr+\"+\"+zr+\"(?=\"+[_r,kr,\"$\"].join(\"|\")+\")\",Rr+\"+\"+Er+\"(?=\"+[_r,kr+Or,\"$\"].join(\"|\")+\")\",kr+\"?\"+Or+\"+\"+zr,kr+\"+\"+Er,Ur,Cr,gr,Tr].join(\"|\"),\"g\"),Pr=RegExp(\"[\"+Ir+Qt+rr+lr+\"]\"),qr=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Zr=[\"Array\",\"Buffer\",\"DataView\",\"Date\",\"Error\",\"Float32Array\",\"Float64Array\",\"Function\",\"Int8Array\",\"Int16Array\",\"Int32Array\",\"Map\",\"Math\",\"Object\",\"Promise\",\"RegExp\",\"Set\",\"String\",\"Symbol\",\"TypeError\",\"Uint8Array\",\"Uint8ClampedArray\",\"Uint16Array\",\"Uint32Array\",\"WeakMap\",\"_\",\"clearTimeout\",\"isFinite\",\"parseInt\",\"setTimeout\"],Kr={};\nKr[lt]=Kr[st]=Kr[ht]=Kr[pt]=Kr[_t]=Kr[vt]=Kr[gt]=Kr[yt]=Kr[dt]=true,Kr[Mn]=Kr[Fn]=Kr[ct]=Kr[Pn]=Kr[at]=Kr[qn]=Kr[Kn]=Kr[Vn]=Kr[Hn]=Kr[Jn]=Kr[Qn]=Kr[tt]=Kr[rt]=Kr[et]=Kr[ot]=false;var Vr={};Vr[Mn]=Vr[Fn]=Vr[ct]=Vr[at]=Vr[Pn]=Vr[qn]=Vr[lt]=Vr[st]=Vr[ht]=Vr[pt]=Vr[_t]=Vr[Hn]=Vr[Jn]=Vr[Qn]=Vr[tt]=Vr[rt]=Vr[et]=Vr[ut]=Vr[vt]=Vr[gt]=Vr[yt]=Vr[dt]=true,Vr[Kn]=Vr[Vn]=Vr[ot]=false;var Gr={\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\n\"\\xc7\":\"C\",\"\\xe7\":\"c\",\"\\xd0\":\"D\",\"\\xf0\":\"d\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\"\\xcc\":\"I\",\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xd1\":\"N\",\"\\xf1\":\"n\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xdd\":\"Y\",\"\\xfd\":\"y\",\"\\xff\":\"y\",\"\\xc6\":\"Ae\",\n\"\\xe6\":\"ae\",\"\\xde\":\"Th\",\"\\xfe\":\"th\",\"\\xdf\":\"ss\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u0104\":\"A\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u0105\":\"a\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010a\":\"C\",\"\\u010c\":\"C\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010b\":\"c\",\"\\u010d\":\"c\",\"\\u010e\":\"D\",\"\\u0110\":\"D\",\"\\u010f\":\"d\",\"\\u0111\":\"d\",\"\\u0112\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u0118\":\"E\",\"\\u011a\":\"E\",\"\\u0113\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u0119\":\"e\",\"\\u011b\":\"e\",\"\\u011c\":\"G\",\"\\u011e\":\"G\",\"\\u0120\":\"G\",\"\\u0122\":\"G\",\"\\u011d\":\"g\",\"\\u011f\":\"g\",\"\\u0121\":\"g\",\n\"\\u0123\":\"g\",\"\\u0124\":\"H\",\"\\u0126\":\"H\",\"\\u0125\":\"h\",\"\\u0127\":\"h\",\"\\u0128\":\"I\",\"\\u012a\":\"I\",\"\\u012c\":\"I\",\"\\u012e\":\"I\",\"\\u0130\":\"I\",\"\\u0129\":\"i\",\"\\u012b\":\"i\",\"\\u012d\":\"i\",\"\\u012f\":\"i\",\"\\u0131\":\"i\",\"\\u0134\":\"J\",\"\\u0135\":\"j\",\"\\u0136\":\"K\",\"\\u0137\":\"k\",\"\\u0138\":\"k\",\"\\u0139\":\"L\",\"\\u013b\":\"L\",\"\\u013d\":\"L\",\"\\u013f\":\"L\",\"\\u0141\":\"L\",\"\\u013a\":\"l\",\"\\u013c\":\"l\",\"\\u013e\":\"l\",\"\\u0140\":\"l\",\"\\u0142\":\"l\",\"\\u0143\":\"N\",\"\\u0145\":\"N\",\"\\u0147\":\"N\",\"\\u014a\":\"N\",\"\\u0144\":\"n\",\"\\u0146\":\"n\",\"\\u0148\":\"n\",\"\\u014b\":\"n\",\"\\u014c\":\"O\",\n\"\\u014e\":\"O\",\"\\u0150\":\"O\",\"\\u014d\":\"o\",\"\\u014f\":\"o\",\"\\u0151\":\"o\",\"\\u0154\":\"R\",\"\\u0156\":\"R\",\"\\u0158\":\"R\",\"\\u0155\":\"r\",\"\\u0157\":\"r\",\"\\u0159\":\"r\",\"\\u015a\":\"S\",\"\\u015c\":\"S\",\"\\u015e\":\"S\",\"\\u0160\":\"S\",\"\\u015b\":\"s\",\"\\u015d\":\"s\",\"\\u015f\":\"s\",\"\\u0161\":\"s\",\"\\u0162\":\"T\",\"\\u0164\":\"T\",\"\\u0166\":\"T\",\"\\u0163\":\"t\",\"\\u0165\":\"t\",\"\\u0167\":\"t\",\"\\u0168\":\"U\",\"\\u016a\":\"U\",\"\\u016c\":\"U\",\"\\u016e\":\"U\",\"\\u0170\":\"U\",\"\\u0172\":\"U\",\"\\u0169\":\"u\",\"\\u016b\":\"u\",\"\\u016d\":\"u\",\"\\u016f\":\"u\",\"\\u0171\":\"u\",\"\\u0173\":\"u\",\"\\u0174\":\"W\",\"\\u0175\":\"w\",\n\"\\u0176\":\"Y\",\"\\u0177\":\"y\",\"\\u0178\":\"Y\",\"\\u0179\":\"Z\",\"\\u017b\":\"Z\",\"\\u017d\":\"Z\",\"\\u017a\":\"z\",\"\\u017c\":\"z\",\"\\u017e\":\"z\",\"\\u0132\":\"IJ\",\"\\u0133\":\"ij\",\"\\u0152\":\"Oe\",\"\\u0153\":\"oe\",\"\\u0149\":\"'n\",\"\\u017f\":\"s\"},Hr={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},Jr={\"&amp;\":\"&\",\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&#39;\":\"'\"},Yr={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Qr=parseFloat,Xr=parseInt,ne=typeof global==\"object\"&&global&&global.Object===Object&&global,te=typeof self==\"object\"&&self&&self.Object===Object&&self,re=ne||te||Function(\"return this\")(),ee=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,ue=ee&&typeof module==\"object\"&&module&&!module.nodeType&&module,ie=ue&&ue.exports===ee,oe=ie&&ne.process,fe=function(){\ntry{var n=ue&&ue.require&&ue.require(\"util\").types;return n?n:oe&&oe.binding&&oe.binding(\"util\")}catch(n){}}(),ce=fe&&fe.isArrayBuffer,ae=fe&&fe.isDate,le=fe&&fe.isMap,se=fe&&fe.isRegExp,he=fe&&fe.isSet,pe=fe&&fe.isTypedArray,_e=m(\"length\"),ve=x(Gr),ge=x(Hr),ye=x(Jr),de=function p(x){function Z(n){if(cc(n)&&!bh(n)&&!(n instanceof Ut)){if(n instanceof Y)return n;if(bl.call(n,\"__wrapped__\"))return eo(n)}return new Y(n)}function J(){}function Y(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,\nthis.__index__=0,this.__values__=X}function Ut(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=Bn,this.__views__=[]}function Dt(){var n=new Ut(this.__wrapped__);return n.__actions__=Tu(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Tu(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Tu(this.__views__),n}function Qt(){if(this.__filtered__){var n=new Ut(this);n.__dir__=-1,\nn.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n}function Xt(){var n=this.__wrapped__.value(),t=this.__dir__,r=bh(n),e=t<0,u=r?n.length:0,i=Ii(0,u,this.__views__),o=i.start,f=i.end,c=f-o,a=e?f:o-1,l=this.__iteratees__,s=l.length,h=0,p=Hl(c,this.__takeCount__);if(!r||!e&&u==c&&p==c)return wu(n,this.__actions__);var _=[];n:for(;c--&&h<p;){a+=t;for(var v=-1,g=n[a];++v<s;){var y=l[v],d=y.iteratee,b=y.type,w=d(g);if(b==En)g=w;else if(!w){if(b==zn)continue n;break n}}_[h++]=g}return _}function nr(n){\nvar t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function tr(){this.__data__=is?is(null):{},this.size=0}function rr(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}function er(n){var t=this.__data__;if(is){var r=t[n];return r===fn?X:r}return bl.call(t,n)?t[n]:X}function ur(n){var t=this.__data__;return is?t[n]!==X:bl.call(t,n)}function ir(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=is&&t===X?fn:t,this}function or(n){\nvar t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function fr(){this.__data__=[],this.size=0}function cr(n){var t=this.__data__,r=Lr(t,n);return!(r<0)&&(r==t.length-1?t.pop():Ll.call(t,r,1),--this.size,true)}function ar(n){var t=this.__data__,r=Lr(t,n);return r<0?X:t[r][1]}function lr(n){return Lr(this.__data__,n)>-1}function sr(n,t){var r=this.__data__,e=Lr(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this}function hr(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){\nvar e=n[t];this.set(e[0],e[1])}}function pr(){this.size=0,this.__data__={hash:new nr,map:new(ts||or),string:new nr}}function _r(n){var t=xi(this,n).delete(n);return this.size-=t?1:0,t}function vr(n){return xi(this,n).get(n)}function gr(n){return xi(this,n).has(n)}function yr(n,t){var r=xi(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this}function dr(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new hr;++t<r;)this.add(n[t])}function br(n){return this.__data__.set(n,fn),this}function wr(n){\nreturn this.__data__.has(n)}function mr(n){this.size=(this.__data__=new or(n)).size}function xr(){this.__data__=new or,this.size=0}function jr(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r}function Ar(n){return this.__data__.get(n)}function kr(n){return this.__data__.has(n)}function Ir(n,t){var r=this.__data__;if(r instanceof or){var e=r.__data__;if(!ts||e.length<tn-1)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new hr(e)}return r.set(n,t),this.size=r.size,this}function Or(n,t){\nvar r=bh(n),e=!r&&dh(n),u=!r&&!e&&mh(n),i=!r&&!e&&!u&&Ih(n),o=r||e||u||i,f=o?I(n.length,hl):[],c=f.length;for(var a in n)!t&&!bl.call(n,a)||o&&(\"length\"==a||u&&(\"offset\"==a||\"parent\"==a)||i&&(\"buffer\"==a||\"byteLength\"==a||\"byteOffset\"==a)||Ci(a,c))||f.push(a);return f}function Rr(n){var t=n.length;return t?n[tu(0,t-1)]:X}function zr(n,t){return Xi(Tu(n),Fr(t,0,n.length))}function Er(n){return Xi(Tu(n))}function Sr(n,t,r){(r===X||Gf(n[t],r))&&(r!==X||t in n)||Tr(n,t,r)}function Wr(n,t,r){var e=n[t];\nbl.call(n,t)&&Gf(e,r)&&(r!==X||t in n)||Tr(n,t,r)}function Lr(n,t){for(var r=n.length;r--;)if(Gf(n[r][0],t))return r;return-1}function Cr(n,t,r,e){return ys(n,function(n,u,i){t(e,n,r(n),i)}),e}function Ur(n,t){return n&&$u(t,Pc(t),n)}function Br(n,t){return n&&$u(t,qc(t),n)}function Tr(n,t,r){\"__proto__\"==t&&Tl?Tl(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function $r(n,t){for(var r=-1,e=t.length,u=il(e),i=null==n;++r<e;)u[r]=i?X:Mc(n,t[r]);return u}function Fr(n,t,r){return n===n&&(r!==X&&(n=n<=r?n:r),\nt!==X&&(n=n>=t?n:t)),n}function Nr(n,t,e,u,i,o){var f,c=t&ln,a=t&sn,l=t&hn;if(e&&(f=i?e(n,u,i,o):e(n)),f!==X)return f;if(!fc(n))return n;var s=bh(n);if(s){if(f=zi(n),!c)return Tu(n,f)}else{var h=zs(n),p=h==Vn||h==Gn;if(mh(n))return Ou(n,c);if(h==Qn||h==Mn||p&&!i){if(f=a||p?{}:Ei(n),!c)return a?Mu(n,Br(f,n)):Du(n,Ur(f,n))}else{if(!Vr[h])return i?n:{};f=Si(n,h,c)}}o||(o=new mr);var _=o.get(n);if(_)return _;o.set(n,f),kh(n)?n.forEach(function(r){f.add(Nr(r,t,e,r,n,o))}):jh(n)&&n.forEach(function(r,u){\nf.set(u,Nr(r,t,e,u,n,o))});var v=l?a?di:yi:a?qc:Pc,g=s?X:v(n);return r(g||n,function(r,u){g&&(u=r,r=n[u]),Wr(f,u,Nr(r,t,e,u,n,o))}),f}function Pr(n){var t=Pc(n);return function(r){return qr(r,n,t)}}function qr(n,t,r){var e=r.length;if(null==n)return!e;for(n=ll(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===X&&!(u in n)||!i(o))return false}return true}function Gr(n,t,r){if(typeof n!=\"function\")throw new pl(en);return Ws(function(){n.apply(X,r)},t)}function Hr(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;\nif(!l)return s;r&&(t=c(t,z(r))),e?(i=f,a=false):t.length>=tn&&(i=S,a=false,t=new dr(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p);if(p=e||0!==p?p:0,a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function Jr(n,t){var r=true;return ys(n,function(n,e,u){return r=!!t(n,e,u)}),r}function Yr(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===X?o===o&&!bc(o):r(o,f)))var f=o,c=i}return c}function ne(n,t,r,e){var u=n.length;for(r=kc(r),r<0&&(r=-r>u?0:u+r),\ne=e===X||e>u?u:kc(e),e<0&&(e+=u),e=r>e?0:Ic(e);r<e;)n[r++]=t;return n}function te(n,t){var r=[];return ys(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function ee(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=Li),u||(u=[]);++i<o;){var f=n[i];t>0&&r(f)?t>1?ee(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function ue(n,t){return n&&bs(n,t,Pc)}function oe(n,t){return n&&ws(n,t,Pc)}function fe(n,t){return i(t,function(t){return uc(n[t])})}function _e(n,t){t=ku(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[no(t[r++])];\nreturn r&&r==e?n:X}function de(n,t,r){var e=t(n);return bh(n)?e:a(e,r(n))}function we(n){return null==n?n===X?it:Yn:Bl&&Bl in ll(n)?ki(n):Ki(n)}function me(n,t){return n>t}function xe(n,t){return null!=n&&bl.call(n,t)}function je(n,t){return null!=n&&t in ll(n)}function Ae(n,t,r){return n>=Hl(t,r)&&n<Gl(t,r)}function ke(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=il(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,z(t))),s=Hl(p.length,s),l[a]=!r&&(t||u>=120&&p.length>=120)?new dr(a&&p):X}p=n[0];\nvar _=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],y=t?t(g):g;if(g=r||0!==g?g:0,!(v?S(v,y):e(h,y,r))){for(a=i;--a;){var d=l[a];if(!(d?S(d,y):e(n[a],y,r)))continue n}v&&v.push(y),h.push(g)}}return h}function Ie(n,t,r,e){return ue(n,function(n,u,i){t(e,r(n),u,i)}),e}function Oe(t,r,e){r=ku(r,t),t=Gi(t,r);var u=null==t?t:t[no(jo(r))];return null==u?X:n(u,t,e)}function Re(n){return cc(n)&&we(n)==Mn}function ze(n){return cc(n)&&we(n)==ct}function Ee(n){return cc(n)&&we(n)==qn}function Se(n,t,r,e,u){\nreturn n===t||(null==n||null==t||!cc(n)&&!cc(t)?n!==n&&t!==t:We(n,t,r,e,Se,u))}function We(n,t,r,e,u,i){var o=bh(n),f=bh(t),c=o?Fn:zs(n),a=f?Fn:zs(t);c=c==Mn?Qn:c,a=a==Mn?Qn:a;var l=c==Qn,s=a==Qn,h=c==a;if(h&&mh(n)){if(!mh(t))return false;o=true,l=false}if(h&&!l)return i||(i=new mr),o||Ih(n)?pi(n,t,r,e,u,i):_i(n,t,c,r,e,u,i);if(!(r&pn)){var p=l&&bl.call(n,\"__wrapped__\"),_=s&&bl.call(t,\"__wrapped__\");if(p||_){var v=p?n.value():n,g=_?t.value():t;return i||(i=new mr),u(v,g,r,e,i)}}return!!h&&(i||(i=new mr),vi(n,t,r,e,u,i));\n}function Le(n){return cc(n)&&zs(n)==Hn}function Ce(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=ll(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){f=r[u];var c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===X&&!(c in n))return false}else{var s=new mr;if(e)var h=e(a,l,c,n,t,s);if(!(h===X?Se(l,a,pn|_n,e,s):h))return false}}return true}function Ue(n){return!(!fc(n)||Di(n))&&(uc(n)?kl:Kt).test(to(n))}function Be(n){return cc(n)&&we(n)==tt}function Te(n){return cc(n)&&zs(n)==rt;\n}function $e(n){return cc(n)&&oc(n.length)&&!!Kr[we(n)]}function De(n){return typeof n==\"function\"?n:null==n?La:typeof n==\"object\"?bh(n)?Ze(n[0],n[1]):qe(n):Fa(n)}function Me(n){if(!Mi(n))return Vl(n);var t=[];for(var r in ll(n))bl.call(n,r)&&\"constructor\"!=r&&t.push(r);return t}function Fe(n){if(!fc(n))return Zi(n);var t=Mi(n),r=[];for(var e in n)(\"constructor\"!=e||!t&&bl.call(n,e))&&r.push(e);return r}function Ne(n,t){return n<t}function Pe(n,t){var r=-1,e=Hf(n)?il(n.length):[];return ys(n,function(n,u,i){\ne[++r]=t(n,u,i)}),e}function qe(n){var t=ji(n);return 1==t.length&&t[0][2]?Ni(t[0][0],t[0][1]):function(r){return r===n||Ce(r,n,t)}}function Ze(n,t){return Bi(n)&&Fi(t)?Ni(no(n),t):function(r){var e=Mc(r,n);return e===X&&e===t?Nc(r,n):Se(t,e,pn|_n)}}function Ke(n,t,r,e,u){n!==t&&bs(t,function(i,o){if(u||(u=new mr),fc(i))Ve(n,t,o,r,Ke,e,u);else{var f=e?e(Ji(n,o),i,o+\"\",n,t,u):X;f===X&&(f=i),Sr(n,o,f)}},qc)}function Ve(n,t,r,e,u,i,o){var f=Ji(n,r),c=Ji(t,r),a=o.get(c);if(a)return Sr(n,r,a),X;var l=i?i(f,c,r+\"\",n,t,o):X,s=l===X;\nif(s){var h=bh(c),p=!h&&mh(c),_=!h&&!p&&Ih(c);l=c,h||p||_?bh(f)?l=f:Jf(f)?l=Tu(f):p?(s=false,l=Ou(c,true)):_?(s=false,l=Wu(c,true)):l=[]:gc(c)||dh(c)?(l=f,dh(f)?l=Rc(f):fc(f)&&!uc(f)||(l=Ei(c))):s=false}s&&(o.set(c,l),u(l,c,e,i,o),o.delete(c)),Sr(n,r,l)}function Ge(n,t){var r=n.length;if(r)return t+=t<0?r:0,Ci(t,r)?n[t]:X}function He(n,t,r){t=t.length?c(t,function(n){return bh(n)?function(t){return _e(t,1===n.length?n[0]:n)}:n}):[La];var e=-1;return t=c(t,z(mi())),A(Pe(n,function(n,r,u){return{a:c(t,function(t){\nreturn t(n)}),b:++e,c:n}}),function(n,t){return Cu(n,t,r)})}function Je(n,t){return Ye(n,t,function(t,r){return Nc(n,r)})}function Ye(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=_e(n,o);r(f,o)&&fu(i,ku(o,n),f)}return i}function Qe(n){return function(t){return _e(t,n)}}function Xe(n,t,r,e){var u=e?d:y,i=-1,o=t.length,f=n;for(n===t&&(t=Tu(t)),r&&(f=c(n,z(r)));++i<o;)for(var a=0,l=t[i],s=r?r(l):l;(a=u(f,s,a,e))>-1;)f!==n&&Ll.call(f,a,1),Ll.call(n,a,1);return n}function nu(n,t){for(var r=n?t.length:0,e=r-1;r--;){\nvar u=t[r];if(r==e||u!==i){var i=u;Ci(u)?Ll.call(n,u,1):yu(n,u)}}return n}function tu(n,t){return n+Nl(Ql()*(t-n+1))}function ru(n,t,r,e){for(var u=-1,i=Gl(Fl((t-n)/(r||1)),0),o=il(i);i--;)o[e?i:++u]=n,n+=r;return o}function eu(n,t){var r=\"\";if(!n||t<1||t>Ln)return r;do t%2&&(r+=n),t=Nl(t/2),t&&(n+=n);while(t);return r}function uu(n,t){return Ls(Vi(n,t,La),n+\"\")}function iu(n){return Rr(ra(n))}function ou(n,t){var r=ra(n);return Xi(r,Fr(t,0,r.length))}function fu(n,t,r,e){if(!fc(n))return n;t=ku(t,n);\nfor(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=no(t[u]),a=r;if(\"__proto__\"===c||\"constructor\"===c||\"prototype\"===c)return n;if(u!=o){var l=f[c];a=e?e(l,c,f):X,a===X&&(a=fc(l)?l:Ci(t[u+1])?[]:{})}Wr(f,c,a),f=f[c]}return n}function cu(n){return Xi(ra(n))}function au(n,t,r){var e=-1,u=n.length;t<0&&(t=-t>u?0:u+t),r=r>u?u:r,r<0&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var i=il(u);++e<u;)i[e]=n[e+t];return i}function lu(n,t){var r;return ys(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function su(n,t,r){\nvar e=0,u=null==n?e:n.length;if(typeof t==\"number\"&&t===t&&u<=$n){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!bc(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return hu(n,t,La,r)}function hu(n,t,r,e){var u=0,i=null==n?0:n.length;if(0===i)return 0;t=r(t);for(var o=t!==t,f=null===t,c=bc(t),a=t===X;u<i;){var l=Nl((u+i)/2),s=r(n[l]),h=s!==X,p=null===s,_=s===s,v=bc(s);if(o)var g=e||_;else g=a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):!p&&!v&&(e?s<=t:s<t);g?u=l+1:i=l}return Hl(i,Tn)}function pu(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){\nvar o=n[r],f=t?t(o):o;if(!r||!Gf(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function _u(n){return typeof n==\"number\"?n:bc(n)?Un:+n}function vu(n){if(typeof n==\"string\")return n;if(bh(n))return c(n,vu)+\"\";if(bc(n))return vs?vs.call(n):\"\";var t=n+\"\";return\"0\"==t&&1/n==-Wn?\"-0\":t}function gu(n,t,r){var e=-1,u=o,i=n.length,c=true,a=[],l=a;if(r)c=false,u=f;else if(i>=tn){var s=t?null:ks(n);if(s)return P(s);c=false,u=S,l=new dr}else l=t?[]:a;n:for(;++e<i;){var h=n[e],p=t?t(h):h;if(h=r||0!==h?h:0,c&&p===p){for(var _=l.length;_--;)if(l[_]===p)continue n;\nt&&l.push(p),a.push(h)}else u(l,p,r)||(l!==a&&l.push(p),a.push(h))}return a}function yu(n,t){t=ku(t,n);var r=-1,e=t.length;if(!e)return true;for(;++r<e;){var u=no(t[r]);if(\"__proto__\"===u&&!bl.call(n,\"__proto__\"))return false;if((\"constructor\"===u||\"prototype\"===u)&&r<e-1)return false}var i=Gi(n,t);return null==i||delete i[no(jo(t))]}function du(n,t,r,e){return fu(n,t,r(_e(n,t)),e)}function bu(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?au(n,e?0:i,e?i+1:u):au(n,e?i+1:0,e?u:i)}\nfunction wu(n,t){var r=n;return r instanceof Ut&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mu(n,t,r){var e=n.length;if(e<2)return e?gu(n[0]):[];for(var u=-1,i=il(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=Hr(i[u]||o,n[f],t,r));return gu(ee(i,1),t,r)}function xu(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;){r(o,n[e],e<i?t[e]:X)}return o}function ju(n){return Jf(n)?n:[]}function Au(n){return typeof n==\"function\"?n:La}function ku(n,t){return bh(n)?n:Bi(n,t)?[n]:Cs(Ec(n));\n}function Iu(n,t,r){var e=n.length;return r=r===X?e:r,!t&&r>=e?n:au(n,t,r)}function Ou(n,t){if(t)return n.slice();var r=n.length,e=zl?zl(r):new n.constructor(r);return n.copy(e),e}function Ru(n){var t=new n.constructor(n.byteLength);return new Rl(t).set(new Rl(n)),t}function zu(n,t){return new n.constructor(t?Ru(n.buffer):n.buffer,n.byteOffset,n.byteLength)}function Eu(n){var t=new n.constructor(n.source,Pt.exec(n));return t.lastIndex=n.lastIndex,t}function Su(n){return _s?ll(_s.call(n)):{}}function Wu(n,t){\nreturn new n.constructor(t?Ru(n.buffer):n.buffer,n.byteOffset,n.length)}function Lu(n,t){if(n!==t){var r=n!==X,e=null===n,u=n===n,i=bc(n),o=t!==X,f=null===t,c=t===t,a=bc(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Cu(n,t,r){for(var e=-1,u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Lu(u[e],i[e]);if(c){if(e>=f)return c;return c*(\"desc\"==r[e]?-1:1)}}return n.b-t.b}function Uu(n,t,r,e){for(var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Gl(i-o,0),l=il(c+a),s=!e;++f<c;)l[f]=t[f];\nfor(;++u<o;)(s||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];return l}function Bu(n,t,r,e){for(var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Gl(i-f,0),s=il(l+a),h=!e;++u<l;)s[u]=n[u];for(var p=u;++c<a;)s[p+c]=t[c];for(;++o<f;)(h||u<i)&&(s[p+r[o]]=n[u++]);return s}function Tu(n,t){var r=-1,e=n.length;for(t||(t=il(e));++r<e;)t[r]=n[r];return t}function $u(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):X;c===X&&(c=n[f]),u?Tr(r,f,c):Wr(r,f,c)}return r;\n}function Du(n,t){return $u(n,Os(n),t)}function Mu(n,t){return $u(n,Rs(n),t)}function Fu(n,r){return function(e,u){var i=bh(e)?t:Cr,o=r?r():{};return i(e,n,mi(u,2),o)}}function Nu(n){return uu(function(t,r){var e=-1,u=r.length,i=u>1?r[u-1]:X,o=u>2?r[2]:X;for(i=n.length>3&&typeof i==\"function\"?(u--,i):X,o&&Ui(r[0],r[1],o)&&(i=u<3?X:i,u=1),t=ll(t);++e<u;){var f=r[e];f&&n(t,f,e,i)}return t})}function Pu(n,t){return function(r,e){if(null==r)return r;if(!Hf(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=ll(r);(t?i--:++i<u)&&e(o[i],i,o)!==false;);\nreturn r}}function qu(n){return function(t,r,e){for(var u=-1,i=ll(t),o=e(t),f=o.length;f--;){var c=o[n?f:++u];if(r(i[c],c,i)===false)break}return t}}function Zu(n,t,r){function e(){return(this&&this!==re&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=t&vn,i=Gu(n);return e}function Ku(n){return function(t){t=Ec(t);var r=T(t)?G(t):X,e=r?r[0]:t.charAt(0),u=r?Iu(r,1).join(\"\"):t.slice(1);return e[n]()+u}}function Vu(n){return function(t){return l(Ra(ca(t).replace(Dr,\"\")),n,\"\")}}function Gu(n){return function(){\nvar t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=gs(n.prototype),e=n.apply(r,t);return fc(e)?e:r}}function Hu(t,r,e){function u(){for(var o=arguments.length,f=il(o),c=o,a=wi(u);c--;)f[c]=arguments[c];var l=o<3&&f[0]!==a&&f[o-1]!==a?[]:N(f,a);\nreturn o-=l.length,o<e?oi(t,r,Qu,u.placeholder,X,f,l,X,X,e-o):n(this&&this!==re&&this instanceof u?i:t,this,f)}var i=Gu(t);return u}function Ju(n){return function(t,r,e){var u=ll(t);if(!Hf(t)){var i=mi(r,3);t=Pc(t),r=function(n){return i(u[n],n,u)}}var o=n(t,r,e);return o>-1?u[i?t[o]:o]:X}}function Yu(n){return gi(function(t){var r=t.length,e=r,u=Y.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!=\"function\")throw new pl(en);if(u&&!o&&\"wrapper\"==bi(i))var o=new Y([],true)}for(e=o?e:r;++e<r;){\ni=t[e];var f=bi(i),c=\"wrapper\"==f?Is(i):X;o=c&&$i(c[0])&&c[1]==(xn|dn|wn|jn)&&!c[4].length&&1==c[9]?o[bi(c[0])].apply(o,c[3]):1==i.length&&$i(i)?o[f]():o.thru(i)}return function(){var n=arguments,e=n[0];if(o&&1==n.length&&bh(e))return o.plant(e).value();for(var u=0,i=r?t[u].apply(this,n):e;++u<r;)i=t[u].call(this,i);return i}})}function Qu(n,t,r,e,u,i,o,f,c,a){function l(){for(var y=arguments.length,d=il(y),b=y;b--;)d[b]=arguments[b];if(_)var w=wi(l),m=C(d,w);if(e&&(d=Uu(d,e,u,_)),i&&(d=Bu(d,i,o,_)),\ny-=m,_&&y<a){return oi(n,t,Qu,l.placeholder,r,d,N(d,w),f,c,a-y)}var x=h?r:this,j=p?x[n]:n;return y=d.length,f?d=Hi(d,f):v&&y>1&&d.reverse(),s&&c<y&&(d.length=c),this&&this!==re&&this instanceof l&&(j=g||Gu(j)),j.apply(x,d)}var s=t&xn,h=t&vn,p=t&gn,_=t&(dn|bn),v=t&An,g=p?X:Gu(n);return l}function Xu(n,t){return function(r,e){return Ie(r,n,t(e),{})}}function ni(n,t){return function(r,e){var u;if(r===X&&e===X)return t;if(r!==X&&(u=r),e!==X){if(u===X)return e;typeof r==\"string\"||typeof e==\"string\"?(r=vu(r),\ne=vu(e)):(r=_u(r),e=_u(e)),u=n(r,e)}return u}}function ti(t){return gi(function(r){return r=c(r,z(mi())),uu(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ri(n,t){t=t===X?\" \":vu(t);var r=t.length;if(r<2)return r?eu(t,n):t;var e=eu(t,Fl(n/V(t)));return T(t)?Iu(G(e),0,n).join(\"\"):e.slice(0,n)}function ei(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=il(l+c),h=this&&this!==re&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];\nreturn n(h,o?e:this,s)}var o=r&vn,f=Gu(t);return i}function ui(n){return function(t,r,e){return e&&typeof e!=\"number\"&&Ui(t,r,e)&&(r=e=X),t=Ac(t),r===X?(r=t,t=0):r=Ac(r),e=e===X?t<r?1:-1:Ac(e),ru(t,r,e,n)}}function ii(n){return function(t,r){return typeof t==\"string\"&&typeof r==\"string\"||(t=Oc(t),r=Oc(r)),n(t,r)}}function oi(n,t,r,e,u,i,o,f,c,a){var l=t&dn,s=l?o:X,h=l?X:o,p=l?i:X,_=l?X:i;t|=l?wn:mn,t&=~(l?mn:wn),t&yn||(t&=~(vn|gn));var v=[n,t,u,p,s,_,h,f,c,a],g=r.apply(X,v);return $i(n)&&Ss(g,v),g.placeholder=e,\nYi(g,n,t)}function fi(n){var t=al[n];return function(n,r){if(n=Oc(n),r=null==r?0:Hl(kc(r),292),r&&Zl(n)){var e=(Ec(n)+\"e\").split(\"e\");return e=(Ec(t(e[0]+\"e\"+(+e[1]+r)))+\"e\").split(\"e\"),+(e[0]+\"e\"+(+e[1]-r))}return t(n)}}function ci(n){return function(t){var r=zs(t);return r==Hn?M(t):r==rt?q(t):O(t,n(t))}}function ai(n,t,r,e,u,i,o,f){var c=t&gn;if(!c&&typeof n!=\"function\")throw new pl(en);var a=e?e.length:0;if(a||(t&=~(wn|mn),e=u=X),o=o===X?o:Gl(kc(o),0),f=f===X?f:kc(f),a-=u?u.length:0,t&mn){var l=e,s=u;\ne=u=X}var h=c?X:Is(n),p=[n,t,r,e,u,l,s,i,o,f];if(h&&qi(p,h),n=p[0],t=p[1],r=p[2],e=p[3],u=p[4],f=p[9]=p[9]===X?c?0:n.length:Gl(p[9]-a,0),!f&&t&(dn|bn)&&(t&=~(dn|bn)),t&&t!=vn)_=t==dn||t==bn?Hu(n,t,f):t!=wn&&t!=(vn|wn)||u.length?Qu.apply(X,p):ei(n,t,r,e);else var _=Zu(n,t,r);return Yi((h?ms:Ss)(_,p),n,t)}function li(n,t,r,e){return n===X||Gf(n,gl[r])&&!bl.call(e,r)?t:n}function si(n,t,r,e,u,i){return fc(n)&&fc(t)&&(i.set(t,n),Ke(n,t,X,si,i),i.delete(t)),n}function hi(n){return gc(n)?X:n}function pi(n,t,r,e,u,i){\nvar o=r&pn,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;var a=i.get(n),l=i.get(t);if(a&&l)return a==t&&l==n;var s=-1,p=true,_=r&_n?new dr:X;for(i.set(n,t),i.set(t,n);++s<f;){var v=n[s],g=t[s];if(e)var y=o?e(g,v,s,t,n,i):e(v,g,s,n,t,i);if(y!==X){if(y)continue;p=false;break}if(_){if(!h(t,function(n,t){if(!S(_,t)&&(v===n||u(v,n,r,e,i)))return _.push(t)})){p=false;break}}else if(v!==g&&!u(v,g,r,e,i)){p=false;break}}return i.delete(n),i.delete(t),p}function _i(n,t,r,e,u,i,o){switch(r){case at:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return false;\nn=n.buffer,t=t.buffer;case ct:return!(n.byteLength!=t.byteLength||!i(new Rl(n),new Rl(t)));case Pn:case qn:case Jn:return Gf(+n,+t);case Kn:return n.name==t.name&&n.message==t.message;case tt:case et:return n==t+\"\";case Hn:var f=M;case rt:var c=e&pn;if(f||(f=P),n.size!=t.size&&!c)return false;var a=o.get(n);if(a)return a==t;e|=_n,o.set(n,t);var l=pi(f(n),f(t),e,u,i,o);return o.delete(n),l;case ut:if(_s)return _s.call(n)==_s.call(t)}return false}function vi(n,t,r,e,u,i){var o=r&pn,f=yi(n),c=f.length;if(c!=yi(t).length&&!o)return false;\nfor(var a=c;a--;){var l=f[a];if(!(o?l in t:bl.call(t,l)))return false}var s=i.get(n),h=i.get(t);if(s&&h)return s==t&&h==n;var p=true;i.set(n,t),i.set(t,n);for(var _=o;++a<c;){l=f[a];var v=n[l],g=t[l];if(e)var y=o?e(g,v,l,t,n,i):e(v,g,l,n,t,i);if(!(y===X?v===g||u(v,g,r,e,i):y)){p=false;break}_||(_=\"constructor\"==l)}if(p&&!_){var d=n.constructor,b=t.constructor;d!=b&&\"constructor\"in n&&\"constructor\"in t&&!(typeof d==\"function\"&&d instanceof d&&typeof b==\"function\"&&b instanceof b)&&(p=false)}return i.delete(n),\ni.delete(t),p}function gi(n){return Ls(Vi(n,X,_o),n+\"\")}function yi(n){return de(n,Pc,Os)}function di(n){return de(n,qc,Rs)}function bi(n){for(var t=n.name+\"\",r=fs[t],e=bl.call(fs,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function wi(n){return(bl.call(Z,\"placeholder\")?Z:n).placeholder}function mi(){var n=Z.iteratee||Ca;return n=n===Ca?De:n,arguments.length?n(arguments[0],arguments[1]):n}function xi(n,t){var r=n.__data__;return Ti(t)?r[typeof t==\"string\"?\"string\":\"hash\"]:r.map;\n}function ji(n){for(var t=Pc(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,Fi(u)]}return t}function Ai(n,t){var r=B(n,t);return Ue(r)?r:X}function ki(n){var t=bl.call(n,Bl),r=n[Bl];try{n[Bl]=X;var e=true}catch(n){}var u=xl.call(n);return e&&(t?n[Bl]=r:delete n[Bl]),u}function Ii(n,t,r){for(var e=-1,u=r.length;++e<u;){var i=r[e],o=i.size;switch(i.type){case\"drop\":n+=o;break;case\"dropRight\":t-=o;break;case\"take\":t=Hl(t,n+o);break;case\"takeRight\":n=Gl(n,t-o)}}return{start:n,end:t}}function Oi(n){var t=n.match(Tt);\nreturn t?t[1].split($t):[]}function Ri(n,t,r){t=ku(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=no(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&oc(u)&&Ci(o,u)&&(bh(n)||dh(n)))}function zi(n){var t=n.length,r=new n.constructor(t);return t&&\"string\"==typeof n[0]&&bl.call(n,\"index\")&&(r.index=n.index,r.input=n.input),r}function Ei(n){return typeof n.constructor!=\"function\"||Mi(n)?{}:gs(El(n))}function Si(n,t,r){var e=n.constructor;switch(t){case ct:return Ru(n);\ncase Pn:case qn:return new e(+n);case at:return zu(n,r);case lt:case st:case ht:case pt:case _t:case vt:case gt:case yt:case dt:return Wu(n,r);case Hn:return new e;case Jn:case et:return new e(n);case tt:return Eu(n);case rt:return new e;case ut:return Su(n)}}function Wi(n,t){var r=t.length;if(!r)return n;var e=r-1;return t[e]=(r>1?\"& \":\"\")+t[e],t=t.join(r>2?\", \":\" \"),n.replace(Bt,\"{\\n/* [wrapped with \"+t+\"] */\\n\")}function Li(n){return bh(n)||dh(n)||!!(Cl&&n&&n[Cl])}function Ci(n,t){var r=typeof n;\nreturn t=null==t?Ln:t,!!t&&(\"number\"==r||\"symbol\"!=r&&Gt.test(n))&&n>-1&&n%1==0&&n<t}function Ui(n,t,r){if(!fc(r))return false;var e=typeof t;return!!(\"number\"==e?Hf(r)&&Ci(t,r.length):\"string\"==e&&t in r)&&Gf(r[t],n)}function Bi(n,t){if(bh(n))return false;var r=typeof n;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=n&&!bc(n))||(Et.test(n)||!zt.test(n)||null!=t&&n in ll(t))}function Ti(n){var t=typeof n;return\"string\"==t||\"number\"==t||\"symbol\"==t||\"boolean\"==t?\"__proto__\"!==n:null===n}function $i(n){\nvar t=bi(n),r=Z[t];if(typeof r!=\"function\"||!(t in Ut.prototype))return false;if(n===r)return true;var e=Is(r);return!!e&&n===e[0]}function Di(n){return!!ml&&ml in n}function Mi(n){var t=n&&n.constructor;return n===(typeof t==\"function\"&&t.prototype||gl)}function Fi(n){return n===n&&!fc(n)}function Ni(n,t){return function(r){return null!=r&&(r[n]===t&&(t!==X||n in ll(r)))}}function Pi(n){var t=Cf(n,function(n){return r.size===cn&&r.clear(),n}),r=t.cache;return t}function qi(n,t){var r=n[1],e=t[1],u=r|e,i=u<(vn|gn|xn),o=e==xn&&r==dn||e==xn&&r==jn&&n[7].length<=t[8]||e==(xn|jn)&&t[7].length<=t[8]&&r==dn;\nif(!i&&!o)return n;e&vn&&(n[2]=t[2],u|=r&vn?0:yn);var f=t[3];if(f){var c=n[3];n[3]=c?Uu(c,f,t[4]):f,n[4]=c?N(n[3],an):t[4]}return f=t[5],f&&(c=n[5],n[5]=c?Bu(c,f,t[6]):f,n[6]=c?N(n[5],an):t[6]),f=t[7],f&&(n[7]=f),e&xn&&(n[8]=null==n[8]?t[8]:Hl(n[8],t[8])),null==n[9]&&(n[9]=t[9]),n[0]=t[0],n[1]=u,n}function Zi(n){var t=[];if(null!=n)for(var r in ll(n))t.push(r);return t}function Ki(n){return xl.call(n)}function Vi(t,r,e){return r=Gl(r===X?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Gl(u.length-r,0),f=il(o);++i<o;)f[i]=u[r+i];\ni=-1;for(var c=il(r+1);++i<r;)c[i]=u[i];return c[r]=e(f),n(t,this,c)}}function Gi(n,t){return t.length<2?n:_e(n,au(t,0,-1))}function Hi(n,t){for(var r=n.length,e=Hl(t.length,r),u=Tu(n);e--;){var i=t[e];n[e]=Ci(i,r)?u[i]:X}return n}function Ji(n,t){if((\"constructor\"!==t||\"function\"!=typeof n[t])&&\"__proto__\"!=t)return n[t]}function Yi(n,t,r){var e=t+\"\";return Ls(n,Wi(e,ro(Oi(e),r)))}function Qi(n){var t=0,r=0;return function(){var e=Jl(),u=Rn-(e-r);if(r=e,u>0){if(++t>=On)return arguments[0]}else t=0;\nreturn n.apply(X,arguments)}}function Xi(n,t){var r=-1,e=n.length,u=e-1;for(t=t===X?e:t;++r<t;){var i=tu(r,u),o=n[i];n[i]=n[r],n[r]=o}return n.length=t,n}function no(n){if(typeof n==\"string\"||bc(n))return n;var t=n+\"\";return\"0\"==t&&1/n==-Wn?\"-0\":t}function to(n){if(null!=n){try{return dl.call(n)}catch(n){}try{return n+\"\"}catch(n){}}return\"\"}function ro(n,t){return r(Dn,function(r){var e=\"_.\"+r[0];t&r[1]&&!o(n,e)&&n.push(e)}),n.sort()}function eo(n){if(n instanceof Ut)return n.clone();var t=new Y(n.__wrapped__,n.__chain__);\nreturn t.__actions__=Tu(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function uo(n,t,r){t=(r?Ui(n,t,r):t===X)?1:Gl(kc(t),0);var e=null==n?0:n.length;if(!e||t<1)return[];for(var u=0,i=0,o=il(Fl(e/t));u<e;)o[i++]=au(n,u,u+=t);return o}function io(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){var i=n[t];i&&(u[e++]=i)}return u}function oo(){var n=arguments.length;if(!n)return[];for(var t=il(n-1),r=arguments[0],e=n;e--;)t[e-1]=arguments[e];return a(bh(r)?Tu(r):[r],ee(t,1));\n}function fo(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===X?1:kc(t),au(n,t<0?0:t,e)):[]}function co(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===X?1:kc(t),t=e-t,au(n,0,t<0?0:t)):[]}function ao(n,t){return n&&n.length?bu(n,mi(t,3),true,true):[]}function lo(n,t){return n&&n.length?bu(n,mi(t,3),true):[]}function so(n,t,r,e){var u=null==n?0:n.length;return u?(r&&typeof r!=\"number\"&&Ui(n,t,r)&&(r=0,e=u),ne(n,t,r,e)):[]}function ho(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:kc(r);\nreturn u<0&&(u=Gl(e+u,0)),g(n,mi(t,3),u)}function po(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==X&&(u=kc(r),u=r<0?Gl(e+u,0):Hl(u,e-1)),g(n,mi(t,3),u,true)}function _o(n){return(null==n?0:n.length)?ee(n,1):[]}function vo(n){return(null==n?0:n.length)?ee(n,Wn):[]}function go(n,t){return(null==n?0:n.length)?(t=t===X?1:kc(t),ee(n,t)):[]}function yo(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];Tr(e,u[0],u[1])}return e}function bo(n){return n&&n.length?n[0]:X}function wo(n,t,r){\nvar e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:kc(r);return u<0&&(u=Gl(e+u,0)),y(n,t,u)}function mo(n){return(null==n?0:n.length)?au(n,0,-1):[]}function xo(n,t){return null==n?\"\":Kl.call(n,t)}function jo(n){var t=null==n?0:n.length;return t?n[t-1]:X}function Ao(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;return r!==X&&(u=kc(r),u=u<0?Gl(e+u,0):Hl(u,e-1)),t===t?K(n,t,u):g(n,b,u,true)}function ko(n,t){return n&&n.length?Ge(n,kc(t)):X}function Io(n,t){return n&&n.length&&t&&t.length?Xe(n,t):n;\n}function Oo(n,t,r){return n&&n.length&&t&&t.length?Xe(n,t,mi(r,2)):n}function Ro(n,t,r){return n&&n.length&&t&&t.length?Xe(n,t,X,r):n}function zo(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=mi(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),u.push(e))}return nu(n,u),r}function Eo(n){return null==n?n:Xl.call(n)}function So(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!=\"number\"&&Ui(n,t,r)?(t=0,r=e):(t=null==t?0:kc(t),r=r===X?e:kc(r)),au(n,t,r)):[]}function Wo(n,t){\nreturn su(n,t)}function Lo(n,t,r){return hu(n,t,mi(r,2))}function Co(n,t){var r=null==n?0:n.length;if(r){var e=su(n,t);if(e<r&&Gf(n[e],t))return e}return-1}function Uo(n,t){return su(n,t,true)}function Bo(n,t,r){return hu(n,t,mi(r,2),true)}function To(n,t){if(null==n?0:n.length){var r=su(n,t,true)-1;if(Gf(n[r],t))return r}return-1}function $o(n){return n&&n.length?pu(n):[]}function Do(n,t){return n&&n.length?pu(n,mi(t,2)):[]}function Mo(n){var t=null==n?0:n.length;return t?au(n,1,t):[]}function Fo(n,t,r){\nreturn n&&n.length?(t=r||t===X?1:kc(t),au(n,0,t<0?0:t)):[]}function No(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===X?1:kc(t),t=e-t,au(n,t<0?0:t,e)):[]}function Po(n,t){return n&&n.length?bu(n,mi(t,3),false,true):[]}function qo(n,t){return n&&n.length?bu(n,mi(t,3)):[]}function Zo(n){return n&&n.length?gu(n):[]}function Ko(n,t){return n&&n.length?gu(n,mi(t,2)):[]}function Vo(n,t){return t=typeof t==\"function\"?t:X,n&&n.length?gu(n,X,t):[]}function Go(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){\nif(Jf(n))return t=Gl(n.length,t),true}),I(t,function(t){return c(n,m(t))})}function Ho(t,r){if(!t||!t.length)return[];var e=Go(t);return null==r?e:c(e,function(t){return n(r,X,t)})}function Jo(n,t){return xu(n||[],t||[],Wr)}function Yo(n,t){return xu(n||[],t||[],fu)}function Qo(n){var t=Z(n);return t.__chain__=true,t}function Xo(n,t){return t(n),n}function nf(n,t){return t(n)}function tf(){return Qo(this)}function rf(){return new Y(this.value(),this.__chain__)}function ef(){this.__values__===X&&(this.__values__=jc(this.value()));\nvar n=this.__index__>=this.__values__.length;return{done:n,value:n?X:this.__values__[this.__index__++]}}function uf(){return this}function of(n){for(var t,r=this;r instanceof J;){var e=eo(r);e.__index__=0,e.__values__=X,t?u.__wrapped__=e:t=e;var u=e;r=r.__wrapped__}return u.__wrapped__=n,t}function ff(){var n=this.__wrapped__;if(n instanceof Ut){var t=n;return this.__actions__.length&&(t=new Ut(this)),t=t.reverse(),t.__actions__.push({func:nf,args:[Eo],thisArg:X}),new Y(t,this.__chain__)}return this.thru(Eo);\n}function cf(){return wu(this.__wrapped__,this.__actions__)}function af(n,t,r){var e=bh(n)?u:Jr;return r&&Ui(n,t,r)&&(t=X),e(n,mi(t,3))}function lf(n,t){return(bh(n)?i:te)(n,mi(t,3))}function sf(n,t){return ee(yf(n,t),1)}function hf(n,t){return ee(yf(n,t),Wn)}function pf(n,t,r){return r=r===X?1:kc(r),ee(yf(n,t),r)}function _f(n,t){return(bh(n)?r:ys)(n,mi(t,3))}function vf(n,t){return(bh(n)?e:ds)(n,mi(t,3))}function gf(n,t,r,e){n=Hf(n)?n:ra(n),r=r&&!e?kc(r):0;var u=n.length;return r<0&&(r=Gl(u+r,0)),\ndc(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&y(n,t,r)>-1}function yf(n,t){return(bh(n)?c:Pe)(n,mi(t,3))}function df(n,t,r,e){return null==n?[]:(bh(t)||(t=null==t?[]:[t]),r=e?X:r,bh(r)||(r=null==r?[]:[r]),He(n,t,r))}function bf(n,t,r){var e=bh(n)?l:j,u=arguments.length<3;return e(n,mi(t,4),r,u,ys)}function wf(n,t,r){var e=bh(n)?s:j,u=arguments.length<3;return e(n,mi(t,4),r,u,ds)}function mf(n,t){return(bh(n)?i:te)(n,Uf(mi(t,3)))}function xf(n){return(bh(n)?Rr:iu)(n)}function jf(n,t,r){return t=(r?Ui(n,t,r):t===X)?1:kc(t),\n(bh(n)?zr:ou)(n,t)}function Af(n){return(bh(n)?Er:cu)(n)}function kf(n){if(null==n)return 0;if(Hf(n))return dc(n)?V(n):n.length;var t=zs(n);return t==Hn||t==rt?n.size:Me(n).length}function If(n,t,r){var e=bh(n)?h:lu;return r&&Ui(n,t,r)&&(t=X),e(n,mi(t,3))}function Of(n,t){if(typeof t!=\"function\")throw new pl(en);return n=kc(n),function(){if(--n<1)return t.apply(this,arguments)}}function Rf(n,t,r){return t=r?X:t,t=n&&null==t?n.length:t,ai(n,xn,X,X,X,X,t)}function zf(n,t){var r;if(typeof t!=\"function\")throw new pl(en);\nreturn n=kc(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=X),r}}function Ef(n,t,r){t=r?X:t;var e=ai(n,dn,X,X,X,X,X,t);return e.placeholder=Ef.placeholder,e}function Sf(n,t,r){t=r?X:t;var e=ai(n,bn,X,X,X,X,X,t);return e.placeholder=Sf.placeholder,e}function Wf(n,t,r){function e(t){var r=h,e=p;return h=p=X,d=t,v=n.apply(e,r)}function u(n){return d=n,g=Ws(f,t),b?e(n):v}function i(n){var r=n-y,e=n-d,u=t-r;return w?Hl(u,_-e):u}function o(n){var r=n-y,e=n-d;return y===X||r>=t||r<0||w&&e>=_;\n}function f(){var n=fh();return o(n)?c(n):(g=Ws(f,i(n)),X)}function c(n){return g=X,m&&h?e(n):(h=p=X,v)}function a(){g!==X&&As(g),d=0,h=y=p=g=X}function l(){return g===X?v:c(fh())}function s(){var n=fh(),r=o(n);if(h=arguments,p=this,y=n,r){if(g===X)return u(y);if(w)return As(g),g=Ws(f,t),e(y)}return g===X&&(g=Ws(f,t)),v}var h,p,_,v,g,y,d=0,b=false,w=false,m=true;if(typeof n!=\"function\")throw new pl(en);return t=Oc(t)||0,fc(r)&&(b=!!r.leading,w=\"maxWait\"in r,_=w?Gl(Oc(r.maxWait)||0,t):_,m=\"trailing\"in r?!!r.trailing:m),\ns.cancel=a,s.flush=l,s}function Lf(n){return ai(n,An)}function Cf(n,t){if(typeof n!=\"function\"||null!=t&&typeof t!=\"function\")throw new pl(en);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(Cf.Cache||hr),r}function Uf(n){if(typeof n!=\"function\")throw new pl(en);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:\nreturn!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function Bf(n){return zf(2,n)}function Tf(n,t){if(typeof n!=\"function\")throw new pl(en);return t=t===X?t:kc(t),uu(n,t)}function $f(t,r){if(typeof t!=\"function\")throw new pl(en);return r=null==r?0:Gl(kc(r),0),uu(function(e){var u=e[r],i=Iu(e,0,r);return u&&a(i,u),n(t,this,i)})}function Df(n,t,r){var e=true,u=true;if(typeof n!=\"function\")throw new pl(en);return fc(r)&&(e=\"leading\"in r?!!r.leading:e,u=\"trailing\"in r?!!r.trailing:u),\nWf(n,t,{leading:e,maxWait:t,trailing:u})}function Mf(n){return Rf(n,1)}function Ff(n,t){return ph(Au(t),n)}function Nf(){if(!arguments.length)return[];var n=arguments[0];return bh(n)?n:[n]}function Pf(n){return Nr(n,hn)}function qf(n,t){return t=typeof t==\"function\"?t:X,Nr(n,hn,t)}function Zf(n){return Nr(n,ln|hn)}function Kf(n,t){return t=typeof t==\"function\"?t:X,Nr(n,ln|hn,t)}function Vf(n,t){return null==t||qr(n,t,Pc(t))}function Gf(n,t){return n===t||n!==n&&t!==t}function Hf(n){return null!=n&&oc(n.length)&&!uc(n);\n}function Jf(n){return cc(n)&&Hf(n)}function Yf(n){return n===true||n===false||cc(n)&&we(n)==Pn}function Qf(n){return cc(n)&&1===n.nodeType&&!gc(n)}function Xf(n){if(null==n)return true;if(Hf(n)&&(bh(n)||typeof n==\"string\"||typeof n.splice==\"function\"||mh(n)||Ih(n)||dh(n)))return!n.length;var t=zs(n);if(t==Hn||t==rt)return!n.size;if(Mi(n))return!Me(n).length;for(var r in n)if(bl.call(n,r))return false;return true}function nc(n,t){return Se(n,t)}function tc(n,t,r){r=typeof r==\"function\"?r:X;var e=r?r(n,t):X;return e===X?Se(n,t,X,r):!!e;\n}function rc(n){if(!cc(n))return false;var t=we(n);return t==Kn||t==Zn||typeof n.message==\"string\"&&typeof n.name==\"string\"&&!gc(n)}function ec(n){return typeof n==\"number\"&&Zl(n)}function uc(n){if(!fc(n))return false;var t=we(n);return t==Vn||t==Gn||t==Nn||t==nt}function ic(n){return typeof n==\"number\"&&n==kc(n)}function oc(n){return typeof n==\"number\"&&n>-1&&n%1==0&&n<=Ln}function fc(n){var t=typeof n;return null!=n&&(\"object\"==t||\"function\"==t)}function cc(n){return null!=n&&typeof n==\"object\"}function ac(n,t){\nreturn n===t||Ce(n,t,ji(t))}function lc(n,t,r){return r=typeof r==\"function\"?r:X,Ce(n,t,ji(t),r)}function sc(n){return vc(n)&&n!=+n}function hc(n){if(Es(n))throw new fl(rn);return Ue(n)}function pc(n){return null===n}function _c(n){return null==n}function vc(n){return typeof n==\"number\"||cc(n)&&we(n)==Jn}function gc(n){if(!cc(n)||we(n)!=Qn)return false;var t=El(n);if(null===t)return true;var r=bl.call(t,\"constructor\")&&t.constructor;return typeof r==\"function\"&&r instanceof r&&dl.call(r)==jl}function yc(n){\nreturn ic(n)&&n>=-Ln&&n<=Ln}function dc(n){return typeof n==\"string\"||!bh(n)&&cc(n)&&we(n)==et}function bc(n){return typeof n==\"symbol\"||cc(n)&&we(n)==ut}function wc(n){return n===X}function mc(n){return cc(n)&&zs(n)==ot}function xc(n){return cc(n)&&we(n)==ft}function jc(n){if(!n)return[];if(Hf(n))return dc(n)?G(n):Tu(n);if(Ul&&n[Ul])return D(n[Ul]());var t=zs(n);return(t==Hn?M:t==rt?P:ra)(n)}function Ac(n){if(!n)return 0===n?n:0;if(n=Oc(n),n===Wn||n===-Wn){return(n<0?-1:1)*Cn}return n===n?n:0}function kc(n){\nvar t=Ac(n),r=t%1;return t===t?r?t-r:t:0}function Ic(n){return n?Fr(kc(n),0,Bn):0}function Oc(n){if(typeof n==\"number\")return n;if(bc(n))return Un;if(fc(n)){var t=typeof n.valueOf==\"function\"?n.valueOf():n;n=fc(t)?t+\"\":t}if(typeof n!=\"string\")return 0===n?n:+n;n=R(n);var r=Zt.test(n);return r||Vt.test(n)?Xr(n.slice(2),r?2:8):qt.test(n)?Un:+n}function Rc(n){return $u(n,qc(n))}function zc(n){return n?Fr(kc(n),-Ln,Ln):0===n?n:0}function Ec(n){return null==n?\"\":vu(n)}function Sc(n,t){var r=gs(n);return null==t?r:Ur(r,t);\n}function Wc(n,t){return v(n,mi(t,3),ue)}function Lc(n,t){return v(n,mi(t,3),oe)}function Cc(n,t){return null==n?n:bs(n,mi(t,3),qc)}function Uc(n,t){return null==n?n:ws(n,mi(t,3),qc)}function Bc(n,t){return n&&ue(n,mi(t,3))}function Tc(n,t){return n&&oe(n,mi(t,3))}function $c(n){return null==n?[]:fe(n,Pc(n))}function Dc(n){return null==n?[]:fe(n,qc(n))}function Mc(n,t,r){var e=null==n?X:_e(n,t);return e===X?r:e}function Fc(n,t){return null!=n&&Ri(n,t,xe)}function Nc(n,t){return null!=n&&Ri(n,t,je);\n}function Pc(n){return Hf(n)?Or(n):Me(n)}function qc(n){return Hf(n)?Or(n,true):Fe(n)}function Zc(n,t){var r={};return t=mi(t,3),ue(n,function(n,e,u){Tr(r,t(n,e,u),n)}),r}function Kc(n,t){var r={};return t=mi(t,3),ue(n,function(n,e,u){Tr(r,e,t(n,e,u))}),r}function Vc(n,t){return Gc(n,Uf(mi(t)))}function Gc(n,t){if(null==n)return{};var r=c(di(n),function(n){return[n]});return t=mi(t),Ye(n,r,function(n,r){return t(n,r[0])})}function Hc(n,t,r){t=ku(t,n);var e=-1,u=t.length;for(u||(u=1,n=X);++e<u;){var i=null==n?X:n[no(t[e])];\ni===X&&(e=u,i=r),n=uc(i)?i.call(n):i}return n}function Jc(n,t,r){return null==n?n:fu(n,t,r)}function Yc(n,t,r,e){return e=typeof e==\"function\"?e:X,null==n?n:fu(n,t,r,e)}function Qc(n,t,e){var u=bh(n),i=u||mh(n)||Ih(n);if(t=mi(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:fc(n)&&uc(o)?gs(El(n)):{}}return(i?r:ue)(n,function(n,r,u){return t(e,n,r,u)}),e}function Xc(n,t){return null==n||yu(n,t)}function na(n,t,r){return null==n?n:du(n,t,Au(r))}function ta(n,t,r,e){return e=typeof e==\"function\"?e:X,\nnull==n?n:du(n,t,Au(r),e)}function ra(n){return null==n?[]:E(n,Pc(n))}function ea(n){return null==n?[]:E(n,qc(n))}function ua(n,t,r){return r===X&&(r=t,t=X),r!==X&&(r=Oc(r),r=r===r?r:0),t!==X&&(t=Oc(t),t=t===t?t:0),Fr(Oc(n),t,r)}function ia(n,t,r){return t=Ac(t),r===X?(r=t,t=0):r=Ac(r),n=Oc(n),Ae(n,t,r)}function oa(n,t,r){if(r&&typeof r!=\"boolean\"&&Ui(n,t,r)&&(t=r=X),r===X&&(typeof t==\"boolean\"?(r=t,t=X):typeof n==\"boolean\"&&(r=n,n=X)),n===X&&t===X?(n=0,t=1):(n=Ac(n),t===X?(t=n,n=0):t=Ac(t)),n>t){\nvar e=n;n=t,t=e}if(r||n%1||t%1){var u=Ql();return Hl(n+u*(t-n+Qr(\"1e-\"+((u+\"\").length-1))),t)}return tu(n,t)}function fa(n){return Qh(Ec(n).toLowerCase())}function ca(n){return n=Ec(n),n&&n.replace(Ht,ve).replace(Mr,\"\")}function aa(n,t,r){n=Ec(n),t=vu(t);var e=n.length;r=r===X?e:Fr(kc(r),0,e);var u=r;return r-=t.length,r>=0&&n.slice(r,u)==t}function la(n){return n=Ec(n),n&&kt.test(n)?n.replace(jt,ge):n}function sa(n){return n=Ec(n),n&&Lt.test(n)?n.replace(Wt,\"\\\\$&\"):n}function ha(n,t,r){n=Ec(n),t=kc(t);\nvar e=t?V(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return ri(Nl(u),r)+n+ri(Fl(u),r)}function pa(n,t,r){n=Ec(n),t=kc(t);var e=t?V(n):0;return t&&e<t?n+ri(t-e,r):n}function _a(n,t,r){n=Ec(n),t=kc(t);var e=t?V(n):0;return t&&e<t?ri(t-e,r)+n:n}function va(n,t,r){return r||null==t?t=0:t&&(t=+t),Yl(Ec(n).replace(Ct,\"\"),t||0)}function ga(n,t,r){return t=(r?Ui(n,t,r):t===X)?1:kc(t),eu(Ec(n),t)}function ya(){var n=arguments,t=Ec(n[0]);return n.length<3?t:t.replace(n[1],n[2])}function da(n,t,r){return r&&typeof r!=\"number\"&&Ui(n,t,r)&&(t=r=X),\n(r=r===X?Bn:r>>>0)?(n=Ec(n),n&&(typeof t==\"string\"||null!=t&&!Ah(t))&&(t=vu(t),!t&&T(n))?Iu(G(n),0,r):n.split(t,r)):[]}function ba(n,t,r){return n=Ec(n),r=null==r?0:Fr(kc(r),0,n.length),t=vu(t),n.slice(r,r+t.length)==t}function wa(n,t,e){var u=Z.templateSettings;e&&Ui(n,t,e)&&(t=X),n=Ec(n),t=Wh({},t,u,li);var i=Wh({},t.imports,u.imports,li),o=Pc(i),f=E(i,o);r(o,function(n){if(Mt.test(n))throw new fl(on)});var c,a,l=0,s=t.interpolate||Jt,h=\"__p+='\",p=sl((t.escape||Jt).source+\"|\"+s.source+\"|\"+(s===Rt?Nt:Jt).source+\"|\"+(t.evaluate||Jt).source+\"|$\",\"g\"),_=bl.call(t,\"sourceURL\")?\"//# sourceURL=\"+(t.sourceURL+\"\").replace(/\\s/g,\" \")+\"\\n\":\"\";\nn.replace(p,function(t,r,e,u,i,o){return e||(e=u),h+=n.slice(l,o).replace(Yt,U),r&&(c=true,h+=\"'+__e(\"+r+\")+'\"),i&&(a=true,h+=\"';\"+i+\";\\n__p+='\"),e&&(h+=\"'+((__t=(\"+e+\"))==null?'':__t)+'\"),l=o+t.length,t}),h+=\"';\";var v=bl.call(t,\"variable\")&&t.variable;if(v){if(Mt.test(v))throw new fl(un)}else h=\"with(obj){\"+h+\"}\";h=(a?h.replace(bt,\"\"):h).replace(wt,\"$1\").replace(mt,\"$1;\"),h=\"function(\"+(v||\"obj\")+\"){\"+(v?\"\":\"obj||(obj={});\")+\"var __t,__p=''\"+(c?\",__e=_.escape\":\"\")+(a?\",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}\":\";\")+h+\"return __p}\";\nvar g=Xh(function(){return cl(o,_+\"return \"+h).apply(X,f)});if(g.source=h,rc(g))throw g;return g}function ma(n){return Ec(n).toLowerCase()}function xa(n){return Ec(n).toUpperCase()}function ja(n,t,r){if(n=Ec(n),n&&(r||t===X))return R(n);if(!n||!(t=vu(t)))return n;var e=G(n),u=G(t);return Iu(e,W(e,u),L(e,u)+1).join(\"\")}function Aa(n,t,r){if(n=Ec(n),n&&(r||t===X))return n.slice(0,H(n)+1);if(!n||!(t=vu(t)))return n;var e=G(n);return Iu(e,0,L(e,G(t))+1).join(\"\")}function ka(n,t,r){if(n=Ec(n),n&&(r||t===X))return n.replace(Ct,\"\");\nif(!n||!(t=vu(t)))return n;var e=G(n);return Iu(e,W(e,G(t))).join(\"\")}function Ia(n,t){var r=kn,e=In;if(fc(t)){var u=\"separator\"in t?t.separator:u;r=\"length\"in t?kc(t.length):r,e=\"omission\"in t?vu(t.omission):e}n=Ec(n);var i=n.length;if(T(n)){var o=G(n);i=o.length}if(r>=i)return n;var f=r-V(e);if(f<1)return e;var c=o?Iu(o,0,f).join(\"\"):n.slice(0,f);if(u===X)return c+e;if(o&&(f+=c.length-f),Ah(u)){if(n.slice(f).search(u)){var a,l=c;for(u.global||(u=sl(u.source,Ec(Pt.exec(u))+\"g\")),u.lastIndex=0;a=u.exec(l);)var s=a.index;\nc=c.slice(0,s===X?f:s)}}else if(n.indexOf(vu(u),f)!=f){var h=c.lastIndexOf(u);h>-1&&(c=c.slice(0,h))}return c+e}function Oa(n){return n=Ec(n),n&&At.test(n)?n.replace(xt,ye):n}function Ra(n,t,r){return n=Ec(n),t=r?X:t,t===X?$(n)?Q(n):_(n):n.match(t)||[]}function za(t){var r=null==t?0:t.length,e=mi();return t=r?c(t,function(n){if(\"function\"!=typeof n[1])throw new pl(en);return[e(n[0]),n[1]]}):[],uu(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})}function Ea(n){\nreturn Pr(Nr(n,ln))}function Sa(n){return function(){return n}}function Wa(n,t){return null==n||n!==n?t:n}function La(n){return n}function Ca(n){return De(typeof n==\"function\"?n:Nr(n,ln))}function Ua(n){return qe(Nr(n,ln))}function Ba(n,t){return Ze(n,Nr(t,ln))}function Ta(n,t,e){var u=Pc(t),i=fe(t,u);null!=e||fc(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=fe(t,Pc(t)));var o=!(fc(e)&&\"chain\"in e&&!e.chain),f=uc(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;\nif(o||t){var r=n(this.__wrapped__);return(r.__actions__=Tu(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function $a(){return re._===this&&(re._=Al),this}function Da(){}function Ma(n){return n=kc(n),uu(function(t){return Ge(t,n)})}function Fa(n){return Bi(n)?m(no(n)):Qe(n)}function Na(n){return function(t){return null==n?X:_e(n,t)}}function Pa(){return[]}function qa(){return false}function Za(){return{}}function Ka(){return\"\";\n}function Va(){return true}function Ga(n,t){if(n=kc(n),n<1||n>Ln)return[];var r=Bn,e=Hl(n,Bn);t=mi(t),n-=Bn;for(var u=I(e,t);++r<n;)t(r);return u}function Ha(n){return bh(n)?c(n,no):bc(n)?[n]:Tu(Cs(Ec(n)))}function Ja(n){var t=++wl;return Ec(n)+t}function Ya(n){return n&&n.length?Yr(n,La,me):X}function Qa(n,t){return n&&n.length?Yr(n,mi(t,2),me):X}function Xa(n){return w(n,La)}function nl(n,t){return w(n,mi(t,2))}function tl(n){return n&&n.length?Yr(n,La,Ne):X}function rl(n,t){return n&&n.length?Yr(n,mi(t,2),Ne):X;\n}function el(n){return n&&n.length?k(n,La):0}function ul(n,t){return n&&n.length?k(n,mi(t,2)):0}x=null==x?re:be.defaults(re.Object(),x,be.pick(re,Zr));var il=x.Array,ol=x.Date,fl=x.Error,cl=x.Function,al=x.Math,ll=x.Object,sl=x.RegExp,hl=x.String,pl=x.TypeError,_l=il.prototype,vl=cl.prototype,gl=ll.prototype,yl=x[\"__core-js_shared__\"],dl=vl.toString,bl=gl.hasOwnProperty,wl=0,ml=function(){var n=/[^.]+$/.exec(yl&&yl.keys&&yl.keys.IE_PROTO||\"\");return n?\"Symbol(src)_1.\"+n:\"\"}(),xl=gl.toString,jl=dl.call(ll),Al=re._,kl=sl(\"^\"+dl.call(bl).replace(Wt,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),Il=ie?x.Buffer:X,Ol=x.Symbol,Rl=x.Uint8Array,zl=Il?Il.allocUnsafe:X,El=F(ll.getPrototypeOf,ll),Sl=ll.create,Wl=gl.propertyIsEnumerable,Ll=_l.splice,Cl=Ol?Ol.isConcatSpreadable:X,Ul=Ol?Ol.iterator:X,Bl=Ol?Ol.toStringTag:X,Tl=function(){\ntry{var n=Ai(ll,\"defineProperty\");return n({},\"\",{}),n}catch(n){}}(),$l=x.clearTimeout!==re.clearTimeout&&x.clearTimeout,Dl=ol&&ol.now!==re.Date.now&&ol.now,Ml=x.setTimeout!==re.setTimeout&&x.setTimeout,Fl=al.ceil,Nl=al.floor,Pl=ll.getOwnPropertySymbols,ql=Il?Il.isBuffer:X,Zl=x.isFinite,Kl=_l.join,Vl=F(ll.keys,ll),Gl=al.max,Hl=al.min,Jl=ol.now,Yl=x.parseInt,Ql=al.random,Xl=_l.reverse,ns=Ai(x,\"DataView\"),ts=Ai(x,\"Map\"),rs=Ai(x,\"Promise\"),es=Ai(x,\"Set\"),us=Ai(x,\"WeakMap\"),is=Ai(ll,\"create\"),os=us&&new us,fs={},cs=to(ns),as=to(ts),ls=to(rs),ss=to(es),hs=to(us),ps=Ol?Ol.prototype:X,_s=ps?ps.valueOf:X,vs=ps?ps.toString:X,gs=function(){\nfunction n(){}return function(t){if(!fc(t))return{};if(Sl)return Sl(t);n.prototype=t;var r=new n;return n.prototype=X,r}}();Z.templateSettings={escape:It,evaluate:Ot,interpolate:Rt,variable:\"\",imports:{_:Z}},Z.prototype=J.prototype,Z.prototype.constructor=Z,Y.prototype=gs(J.prototype),Y.prototype.constructor=Y,Ut.prototype=gs(J.prototype),Ut.prototype.constructor=Ut,nr.prototype.clear=tr,nr.prototype.delete=rr,nr.prototype.get=er,nr.prototype.has=ur,nr.prototype.set=ir,or.prototype.clear=fr,or.prototype.delete=cr,\nor.prototype.get=ar,or.prototype.has=lr,or.prototype.set=sr,hr.prototype.clear=pr,hr.prototype.delete=_r,hr.prototype.get=vr,hr.prototype.has=gr,hr.prototype.set=yr,dr.prototype.add=dr.prototype.push=br,dr.prototype.has=wr,mr.prototype.clear=xr,mr.prototype.delete=jr,mr.prototype.get=Ar,mr.prototype.has=kr,mr.prototype.set=Ir;var ys=Pu(ue),ds=Pu(oe,true),bs=qu(),ws=qu(true),ms=os?function(n,t){return os.set(n,t),n}:La,xs=Tl?function(n,t){return Tl(n,\"toString\",{configurable:true,enumerable:false,value:Sa(t),\nwritable:true})}:La,js=uu,As=$l||function(n){return re.clearTimeout(n)},ks=es&&1/P(new es([,-0]))[1]==Wn?function(n){return new es(n)}:Da,Is=os?function(n){return os.get(n)}:Da,Os=Pl?function(n){return null==n?[]:(n=ll(n),i(Pl(n),function(t){return Wl.call(n,t)}))}:Pa,Rs=Pl?function(n){for(var t=[];n;)a(t,Os(n)),n=El(n);return t}:Pa,zs=we;(ns&&zs(new ns(new ArrayBuffer(1)))!=at||ts&&zs(new ts)!=Hn||rs&&zs(rs.resolve())!=Xn||es&&zs(new es)!=rt||us&&zs(new us)!=ot)&&(zs=function(n){var t=we(n),r=t==Qn?n.constructor:X,e=r?to(r):\"\";\nif(e)switch(e){case cs:return at;case as:return Hn;case ls:return Xn;case ss:return rt;case hs:return ot}return t});var Es=yl?uc:qa,Ss=Qi(ms),Ws=Ml||function(n,t){return re.setTimeout(n,t)},Ls=Qi(xs),Cs=Pi(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(\"\"),n.replace(St,function(n,r,e,u){t.push(e?u.replace(Ft,\"$1\"):r||n)}),t}),Us=uu(function(n,t){return Jf(n)?Hr(n,ee(t,1,Jf,true)):[]}),Bs=uu(function(n,t){var r=jo(t);return Jf(r)&&(r=X),Jf(n)?Hr(n,ee(t,1,Jf,true),mi(r,2)):[]}),Ts=uu(function(n,t){\nvar r=jo(t);return Jf(r)&&(r=X),Jf(n)?Hr(n,ee(t,1,Jf,true),X,r):[]}),$s=uu(function(n){var t=c(n,ju);return t.length&&t[0]===n[0]?ke(t):[]}),Ds=uu(function(n){var t=jo(n),r=c(n,ju);return t===jo(r)?t=X:r.pop(),r.length&&r[0]===n[0]?ke(r,mi(t,2)):[]}),Ms=uu(function(n){var t=jo(n),r=c(n,ju);return t=typeof t==\"function\"?t:X,t&&r.pop(),r.length&&r[0]===n[0]?ke(r,X,t):[]}),Fs=uu(Io),Ns=gi(function(n,t){var r=null==n?0:n.length,e=$r(n,t);return nu(n,c(t,function(n){return Ci(n,r)?+n:n}).sort(Lu)),e}),Ps=uu(function(n){\nreturn gu(ee(n,1,Jf,true))}),qs=uu(function(n){var t=jo(n);return Jf(t)&&(t=X),gu(ee(n,1,Jf,true),mi(t,2))}),Zs=uu(function(n){var t=jo(n);return t=typeof t==\"function\"?t:X,gu(ee(n,1,Jf,true),X,t)}),Ks=uu(function(n,t){return Jf(n)?Hr(n,t):[]}),Vs=uu(function(n){return mu(i(n,Jf))}),Gs=uu(function(n){var t=jo(n);return Jf(t)&&(t=X),mu(i(n,Jf),mi(t,2))}),Hs=uu(function(n){var t=jo(n);return t=typeof t==\"function\"?t:X,mu(i(n,Jf),X,t)}),Js=uu(Go),Ys=uu(function(n){var t=n.length,r=t>1?n[t-1]:X;return r=typeof r==\"function\"?(n.pop(),\nr):X,Ho(n,r)}),Qs=gi(function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,u=function(t){return $r(t,n)};return!(t>1||this.__actions__.length)&&e instanceof Ut&&Ci(r)?(e=e.slice(r,+r+(t?1:0)),e.__actions__.push({func:nf,args:[u],thisArg:X}),new Y(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(X),n})):this.thru(u)}),Xs=Fu(function(n,t,r){bl.call(n,r)?++n[r]:Tr(n,r,1)}),nh=Ju(ho),th=Ju(po),rh=Fu(function(n,t,r){bl.call(n,r)?n[r].push(t):Tr(n,r,[t])}),eh=uu(function(t,r,e){var u=-1,i=typeof r==\"function\",o=Hf(t)?il(t.length):[];\nreturn ys(t,function(t){o[++u]=i?n(r,t,e):Oe(t,r,e)}),o}),uh=Fu(function(n,t,r){Tr(n,r,t)}),ih=Fu(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),oh=uu(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Ui(n,t[0],t[1])?t=[]:r>2&&Ui(t[0],t[1],t[2])&&(t=[t[0]]),He(n,ee(t,1),[])}),fh=Dl||function(){return re.Date.now()},ch=uu(function(n,t,r){var e=vn;if(r.length){var u=N(r,wi(ch));e|=wn}return ai(n,e,t,r,u)}),ah=uu(function(n,t,r){var e=vn|gn;if(r.length){var u=N(r,wi(ah));e|=wn;\n}return ai(t,e,n,r,u)}),lh=uu(function(n,t){return Gr(n,1,t)}),sh=uu(function(n,t,r){return Gr(n,Oc(t)||0,r)});Cf.Cache=hr;var hh=js(function(t,r){r=1==r.length&&bh(r[0])?c(r[0],z(mi())):c(ee(r,1),z(mi()));var e=r.length;return uu(function(u){for(var i=-1,o=Hl(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);return n(t,this,u)})}),ph=uu(function(n,t){return ai(n,wn,X,t,N(t,wi(ph)))}),_h=uu(function(n,t){return ai(n,mn,X,t,N(t,wi(_h)))}),vh=gi(function(n,t){return ai(n,jn,X,X,X,t)}),gh=ii(me),yh=ii(function(n,t){\nreturn n>=t}),dh=Re(function(){return arguments}())?Re:function(n){return cc(n)&&bl.call(n,\"callee\")&&!Wl.call(n,\"callee\")},bh=il.isArray,wh=ce?z(ce):ze,mh=ql||qa,xh=ae?z(ae):Ee,jh=le?z(le):Le,Ah=se?z(se):Be,kh=he?z(he):Te,Ih=pe?z(pe):$e,Oh=ii(Ne),Rh=ii(function(n,t){return n<=t}),zh=Nu(function(n,t){if(Mi(t)||Hf(t))return $u(t,Pc(t),n),X;for(var r in t)bl.call(t,r)&&Wr(n,r,t[r])}),Eh=Nu(function(n,t){$u(t,qc(t),n)}),Sh=Nu(function(n,t,r,e){$u(t,qc(t),n,e)}),Wh=Nu(function(n,t,r,e){$u(t,Pc(t),n,e);\n}),Lh=gi($r),Ch=uu(function(n,t){n=ll(n);var r=-1,e=t.length,u=e>2?t[2]:X;for(u&&Ui(t[0],t[1],u)&&(e=1);++r<e;)for(var i=t[r],o=qc(i),f=-1,c=o.length;++f<c;){var a=o[f],l=n[a];(l===X||Gf(l,gl[a])&&!bl.call(n,a))&&(n[a]=i[a])}return n}),Uh=uu(function(t){return t.push(X,si),n(Mh,X,t)}),Bh=Xu(function(n,t,r){null!=t&&typeof t.toString!=\"function\"&&(t=xl.call(t)),n[t]=r},Sa(La)),Th=Xu(function(n,t,r){null!=t&&typeof t.toString!=\"function\"&&(t=xl.call(t)),bl.call(n,t)?n[t].push(r):n[t]=[r]},mi),$h=uu(Oe),Dh=Nu(function(n,t,r){\nKe(n,t,r)}),Mh=Nu(function(n,t,r,e){Ke(n,t,r,e)}),Fh=gi(function(n,t){var r={};if(null==n)return r;var e=false;t=c(t,function(t){return t=ku(t,n),e||(e=t.length>1),t}),$u(n,di(n),r),e&&(r=Nr(r,ln|sn|hn,hi));for(var u=t.length;u--;)yu(r,t[u]);return r}),Nh=gi(function(n,t){return null==n?{}:Je(n,t)}),Ph=ci(Pc),qh=ci(qc),Zh=Vu(function(n,t,r){return t=t.toLowerCase(),n+(r?fa(t):t)}),Kh=Vu(function(n,t,r){return n+(r?\"-\":\"\")+t.toLowerCase()}),Vh=Vu(function(n,t,r){return n+(r?\" \":\"\")+t.toLowerCase()}),Gh=Ku(\"toLowerCase\"),Hh=Vu(function(n,t,r){\nreturn n+(r?\"_\":\"\")+t.toLowerCase()}),Jh=Vu(function(n,t,r){return n+(r?\" \":\"\")+Qh(t)}),Yh=Vu(function(n,t,r){return n+(r?\" \":\"\")+t.toUpperCase()}),Qh=Ku(\"toUpperCase\"),Xh=uu(function(t,r){try{return n(t,X,r)}catch(n){return rc(n)?n:new fl(n)}}),np=gi(function(n,t){return r(t,function(t){t=no(t),Tr(n,t,ch(n[t],n))}),n}),tp=Yu(),rp=Yu(true),ep=uu(function(n,t){return function(r){return Oe(r,n,t)}}),up=uu(function(n,t){return function(r){return Oe(n,r,t)}}),ip=ti(c),op=ti(u),fp=ti(h),cp=ui(),ap=ui(true),lp=ni(function(n,t){\nreturn n+t},0),sp=fi(\"ceil\"),hp=ni(function(n,t){return n/t},1),pp=fi(\"floor\"),_p=ni(function(n,t){return n*t},1),vp=fi(\"round\"),gp=ni(function(n,t){return n-t},0);return Z.after=Of,Z.ary=Rf,Z.assign=zh,Z.assignIn=Eh,Z.assignInWith=Sh,Z.assignWith=Wh,Z.at=Lh,Z.before=zf,Z.bind=ch,Z.bindAll=np,Z.bindKey=ah,Z.castArray=Nf,Z.chain=Qo,Z.chunk=uo,Z.compact=io,Z.concat=oo,Z.cond=za,Z.conforms=Ea,Z.constant=Sa,Z.countBy=Xs,Z.create=Sc,Z.curry=Ef,Z.curryRight=Sf,Z.debounce=Wf,Z.defaults=Ch,Z.defaultsDeep=Uh,\nZ.defer=lh,Z.delay=sh,Z.difference=Us,Z.differenceBy=Bs,Z.differenceWith=Ts,Z.drop=fo,Z.dropRight=co,Z.dropRightWhile=ao,Z.dropWhile=lo,Z.fill=so,Z.filter=lf,Z.flatMap=sf,Z.flatMapDeep=hf,Z.flatMapDepth=pf,Z.flatten=_o,Z.flattenDeep=vo,Z.flattenDepth=go,Z.flip=Lf,Z.flow=tp,Z.flowRight=rp,Z.fromPairs=yo,Z.functions=$c,Z.functionsIn=Dc,Z.groupBy=rh,Z.initial=mo,Z.intersection=$s,Z.intersectionBy=Ds,Z.intersectionWith=Ms,Z.invert=Bh,Z.invertBy=Th,Z.invokeMap=eh,Z.iteratee=Ca,Z.keyBy=uh,Z.keys=Pc,Z.keysIn=qc,\nZ.map=yf,Z.mapKeys=Zc,Z.mapValues=Kc,Z.matches=Ua,Z.matchesProperty=Ba,Z.memoize=Cf,Z.merge=Dh,Z.mergeWith=Mh,Z.method=ep,Z.methodOf=up,Z.mixin=Ta,Z.negate=Uf,Z.nthArg=Ma,Z.omit=Fh,Z.omitBy=Vc,Z.once=Bf,Z.orderBy=df,Z.over=ip,Z.overArgs=hh,Z.overEvery=op,Z.overSome=fp,Z.partial=ph,Z.partialRight=_h,Z.partition=ih,Z.pick=Nh,Z.pickBy=Gc,Z.property=Fa,Z.propertyOf=Na,Z.pull=Fs,Z.pullAll=Io,Z.pullAllBy=Oo,Z.pullAllWith=Ro,Z.pullAt=Ns,Z.range=cp,Z.rangeRight=ap,Z.rearg=vh,Z.reject=mf,Z.remove=zo,Z.rest=Tf,\nZ.reverse=Eo,Z.sampleSize=jf,Z.set=Jc,Z.setWith=Yc,Z.shuffle=Af,Z.slice=So,Z.sortBy=oh,Z.sortedUniq=$o,Z.sortedUniqBy=Do,Z.split=da,Z.spread=$f,Z.tail=Mo,Z.take=Fo,Z.takeRight=No,Z.takeRightWhile=Po,Z.takeWhile=qo,Z.tap=Xo,Z.throttle=Df,Z.thru=nf,Z.toArray=jc,Z.toPairs=Ph,Z.toPairsIn=qh,Z.toPath=Ha,Z.toPlainObject=Rc,Z.transform=Qc,Z.unary=Mf,Z.union=Ps,Z.unionBy=qs,Z.unionWith=Zs,Z.uniq=Zo,Z.uniqBy=Ko,Z.uniqWith=Vo,Z.unset=Xc,Z.unzip=Go,Z.unzipWith=Ho,Z.update=na,Z.updateWith=ta,Z.values=ra,Z.valuesIn=ea,\nZ.without=Ks,Z.words=Ra,Z.wrap=Ff,Z.xor=Vs,Z.xorBy=Gs,Z.xorWith=Hs,Z.zip=Js,Z.zipObject=Jo,Z.zipObjectDeep=Yo,Z.zipWith=Ys,Z.entries=Ph,Z.entriesIn=qh,Z.extend=Eh,Z.extendWith=Sh,Ta(Z,Z),Z.add=lp,Z.attempt=Xh,Z.camelCase=Zh,Z.capitalize=fa,Z.ceil=sp,Z.clamp=ua,Z.clone=Pf,Z.cloneDeep=Zf,Z.cloneDeepWith=Kf,Z.cloneWith=qf,Z.conformsTo=Vf,Z.deburr=ca,Z.defaultTo=Wa,Z.divide=hp,Z.endsWith=aa,Z.eq=Gf,Z.escape=la,Z.escapeRegExp=sa,Z.every=af,Z.find=nh,Z.findIndex=ho,Z.findKey=Wc,Z.findLast=th,Z.findLastIndex=po,\nZ.findLastKey=Lc,Z.floor=pp,Z.forEach=_f,Z.forEachRight=vf,Z.forIn=Cc,Z.forInRight=Uc,Z.forOwn=Bc,Z.forOwnRight=Tc,Z.get=Mc,Z.gt=gh,Z.gte=yh,Z.has=Fc,Z.hasIn=Nc,Z.head=bo,Z.identity=La,Z.includes=gf,Z.indexOf=wo,Z.inRange=ia,Z.invoke=$h,Z.isArguments=dh,Z.isArray=bh,Z.isArrayBuffer=wh,Z.isArrayLike=Hf,Z.isArrayLikeObject=Jf,Z.isBoolean=Yf,Z.isBuffer=mh,Z.isDate=xh,Z.isElement=Qf,Z.isEmpty=Xf,Z.isEqual=nc,Z.isEqualWith=tc,Z.isError=rc,Z.isFinite=ec,Z.isFunction=uc,Z.isInteger=ic,Z.isLength=oc,Z.isMap=jh,\nZ.isMatch=ac,Z.isMatchWith=lc,Z.isNaN=sc,Z.isNative=hc,Z.isNil=_c,Z.isNull=pc,Z.isNumber=vc,Z.isObject=fc,Z.isObjectLike=cc,Z.isPlainObject=gc,Z.isRegExp=Ah,Z.isSafeInteger=yc,Z.isSet=kh,Z.isString=dc,Z.isSymbol=bc,Z.isTypedArray=Ih,Z.isUndefined=wc,Z.isWeakMap=mc,Z.isWeakSet=xc,Z.join=xo,Z.kebabCase=Kh,Z.last=jo,Z.lastIndexOf=Ao,Z.lowerCase=Vh,Z.lowerFirst=Gh,Z.lt=Oh,Z.lte=Rh,Z.max=Ya,Z.maxBy=Qa,Z.mean=Xa,Z.meanBy=nl,Z.min=tl,Z.minBy=rl,Z.stubArray=Pa,Z.stubFalse=qa,Z.stubObject=Za,Z.stubString=Ka,\nZ.stubTrue=Va,Z.multiply=_p,Z.nth=ko,Z.noConflict=$a,Z.noop=Da,Z.now=fh,Z.pad=ha,Z.padEnd=pa,Z.padStart=_a,Z.parseInt=va,Z.random=oa,Z.reduce=bf,Z.reduceRight=wf,Z.repeat=ga,Z.replace=ya,Z.result=Hc,Z.round=vp,Z.runInContext=p,Z.sample=xf,Z.size=kf,Z.snakeCase=Hh,Z.some=If,Z.sortedIndex=Wo,Z.sortedIndexBy=Lo,Z.sortedIndexOf=Co,Z.sortedLastIndex=Uo,Z.sortedLastIndexBy=Bo,Z.sortedLastIndexOf=To,Z.startCase=Jh,Z.startsWith=ba,Z.subtract=gp,Z.sum=el,Z.sumBy=ul,Z.template=wa,Z.times=Ga,Z.toFinite=Ac,Z.toInteger=kc,\nZ.toLength=Ic,Z.toLower=ma,Z.toNumber=Oc,Z.toSafeInteger=zc,Z.toString=Ec,Z.toUpper=xa,Z.trim=ja,Z.trimEnd=Aa,Z.trimStart=ka,Z.truncate=Ia,Z.unescape=Oa,Z.uniqueId=Ja,Z.upperCase=Yh,Z.upperFirst=Qh,Z.each=_f,Z.eachRight=vf,Z.first=bo,Ta(Z,function(){var n={};return ue(Z,function(t,r){bl.call(Z.prototype,r)||(n[r]=t)}),n}(),{chain:false}),Z.VERSION=nn,r([\"bind\",\"bindKey\",\"curry\",\"curryRight\",\"partial\",\"partialRight\"],function(n){Z[n].placeholder=Z}),r([\"drop\",\"take\"],function(n,t){Ut.prototype[n]=function(r){\nr=r===X?1:Gl(kc(r),0);var e=this.__filtered__&&!t?new Ut(this):this.clone();return e.__filtered__?e.__takeCount__=Hl(r,e.__takeCount__):e.__views__.push({size:Hl(r,Bn),type:n+(e.__dir__<0?\"Right\":\"\")}),e},Ut.prototype[n+\"Right\"]=function(t){return this.reverse()[n](t).reverse()}}),r([\"filter\",\"map\",\"takeWhile\"],function(n,t){var r=t+1,e=r==zn||r==Sn;Ut.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:mi(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r([\"head\",\"last\"],function(n,t){\nvar r=\"take\"+(t?\"Right\":\"\");Ut.prototype[n]=function(){return this[r](1).value()[0]}}),r([\"initial\",\"tail\"],function(n,t){var r=\"drop\"+(t?\"\":\"Right\");Ut.prototype[n]=function(){return this.__filtered__?new Ut(this):this[r](1)}}),Ut.prototype.compact=function(){return this.filter(La)},Ut.prototype.find=function(n){return this.filter(n).head()},Ut.prototype.findLast=function(n){return this.reverse().find(n)},Ut.prototype.invokeMap=uu(function(n,t){return typeof n==\"function\"?new Ut(this):this.map(function(r){\nreturn Oe(r,n,t)})}),Ut.prototype.reject=function(n){return this.filter(Uf(mi(n)))},Ut.prototype.slice=function(n,t){n=kc(n);var r=this;return r.__filtered__&&(n>0||t<0)?new Ut(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==X&&(t=kc(t),r=t<0?r.dropRight(-t):r.take(t-n)),r)},Ut.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Ut.prototype.toArray=function(){return this.take(Bn)},ue(Ut.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=Z[e?\"take\"+(\"last\"==t?\"Right\":\"\"):t],i=e||/^find/.test(t);\nu&&(Z.prototype[t]=function(){var t=this.__wrapped__,o=e?[1]:arguments,f=t instanceof Ut,c=o[0],l=f||bh(t),s=function(n){var t=u.apply(Z,a([n],o));return e&&h?t[0]:t};l&&r&&typeof c==\"function\"&&1!=c.length&&(f=l=false);var h=this.__chain__,p=!!this.__actions__.length,_=i&&!h,v=f&&!p;if(!i&&l){t=v?t:new Ut(this);var g=n.apply(t,o);return g.__actions__.push({func:nf,args:[s],thisArg:X}),new Y(g,h)}return _&&v?n.apply(this,o):(g=this.thru(s),_?e?g.value()[0]:g.value():g)})}),r([\"pop\",\"push\",\"shift\",\"sort\",\"splice\",\"unshift\"],function(n){\nvar t=_l[n],r=/^(?:push|sort|unshift)$/.test(n)?\"tap\":\"thru\",e=/^(?:pop|shift)$/.test(n);Z.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(bh(u)?u:[],n)}return this[r](function(r){return t.apply(bh(r)?r:[],n)})}}),ue(Ut.prototype,function(n,t){var r=Z[t];if(r){var e=r.name+\"\";bl.call(fs,e)||(fs[e]=[]),fs[e].push({name:t,func:r})}}),fs[Qu(X,gn).name]=[{name:\"wrapper\",func:X}],Ut.prototype.clone=Dt,Ut.prototype.reverse=Qt,Ut.prototype.value=Xt,Z.prototype.at=Qs,\nZ.prototype.chain=tf,Z.prototype.commit=rf,Z.prototype.next=ef,Z.prototype.plant=of,Z.prototype.reverse=ff,Z.prototype.toJSON=Z.prototype.valueOf=Z.prototype.value=cf,Z.prototype.first=Z.prototype.head,Ul&&(Z.prototype[Ul]=uf),Z},be=de();typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?(re._=be, define(function(){return be})):ue?((ue.exports=be)._=be,ee._=be):re._=be}).call(this);","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var basePick = require('./_basePick'),\n    flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n  return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n  var svgNS = 'http://www.w3.org/2000/svg';\n  var locationHref = '';\n  var _useWebWorker = false;\n  var initialDefaultFrame = -999999;\n\n  var setWebWorker = function setWebWorker(flag) {\n    _useWebWorker = !!flag;\n  };\n\n  var getWebWorker = function getWebWorker() {\n    return _useWebWorker;\n  };\n\n  var setLocationHref = function setLocationHref(value) {\n    locationHref = value;\n  };\n\n  var getLocationHref = function getLocationHref() {\n    return locationHref;\n  };\n\n  function createTag(type) {\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\n    return document.createElement(type);\n  }\n\n  function extendPrototype(sources, destination) {\n    var i;\n    var len = sources.length;\n    var sourcePrototype;\n\n    for (i = 0; i < len; i += 1) {\n      sourcePrototype = sources[i].prototype;\n\n      for (var attr in sourcePrototype) {\n        if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n      }\n    }\n  }\n\n  function getDescriptor(object, prop) {\n    return Object.getOwnPropertyDescriptor(object, prop);\n  }\n\n  function createProxyFunction(prototype) {\n    function ProxyFunction() {}\n\n    ProxyFunction.prototype = prototype;\n    return ProxyFunction;\n  }\n\n  // import Howl from '../../3rd_party/howler';\n  var audioControllerFactory = function () {\n    function AudioController(audioFactory) {\n      this.audios = [];\n      this.audioFactory = audioFactory;\n      this._volume = 1;\n      this._isMuted = false;\n    }\n\n    AudioController.prototype = {\n      addAudio: function addAudio(audio) {\n        this.audios.push(audio);\n      },\n      pause: function pause() {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].pause();\n        }\n      },\n      resume: function resume() {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].resume();\n        }\n      },\n      setRate: function setRate(rateValue) {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].setRate(rateValue);\n        }\n      },\n      createAudio: function createAudio(assetPath) {\n        if (this.audioFactory) {\n          return this.audioFactory(assetPath);\n        }\n\n        if (window.Howl) {\n          return new window.Howl({\n            src: [assetPath]\n          });\n        }\n\n        return {\n          isPlaying: false,\n          play: function play() {\n            this.isPlaying = true;\n          },\n          seek: function seek() {\n            this.isPlaying = false;\n          },\n          playing: function playing() {},\n          rate: function rate() {},\n          setVolume: function setVolume() {}\n        };\n      },\n      setAudioFactory: function setAudioFactory(audioFactory) {\n        this.audioFactory = audioFactory;\n      },\n      setVolume: function setVolume(value) {\n        this._volume = value;\n\n        this._updateVolume();\n      },\n      mute: function mute() {\n        this._isMuted = true;\n\n        this._updateVolume();\n      },\n      unmute: function unmute() {\n        this._isMuted = false;\n\n        this._updateVolume();\n      },\n      getVolume: function getVolume() {\n        return this._volume;\n      },\n      _updateVolume: function _updateVolume() {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n        }\n      }\n    };\n    return function () {\n      return new AudioController();\n    };\n  }();\n\n  var createTypedArray = function () {\n    function createRegularArray(type, len) {\n      var i = 0;\n      var arr = [];\n      var value;\n\n      switch (type) {\n        case 'int16':\n        case 'uint8c':\n          value = 1;\n          break;\n\n        default:\n          value = 1.1;\n          break;\n      }\n\n      for (i = 0; i < len; i += 1) {\n        arr.push(value);\n      }\n\n      return arr;\n    }\n\n    function createTypedArrayFactory(type, len) {\n      if (type === 'float32') {\n        return new Float32Array(len);\n      }\n\n      if (type === 'int16') {\n        return new Int16Array(len);\n      }\n\n      if (type === 'uint8c') {\n        return new Uint8ClampedArray(len);\n      }\n\n      return createRegularArray(type, len);\n    }\n\n    if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n      return createTypedArrayFactory;\n    }\n\n    return createRegularArray;\n  }();\n\n  function createSizedArray(len) {\n    return Array.apply(null, {\n      length: len\n    });\n  }\n\n  function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n  var subframeEnabled = true;\n  var expressionsPlugin = null;\n  var expressionsInterfaces = null;\n  var idPrefix$1 = '';\n  var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n  var _shouldRoundValues = false;\n  var bmPow = Math.pow;\n  var bmSqrt = Math.sqrt;\n  var bmFloor = Math.floor;\n  var bmMax = Math.max;\n  var bmMin = Math.min;\n  var BMMath = {};\n\n  (function () {\n    var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n    var i;\n    var len = propertyNames.length;\n\n    for (i = 0; i < len; i += 1) {\n      BMMath[propertyNames[i]] = Math[propertyNames[i]];\n    }\n  })();\n\n  function ProjectInterface$1() {\n    return {};\n  }\n\n  BMMath.random = Math.random;\n\n  BMMath.abs = function (val) {\n    var tOfVal = _typeof$6(val);\n\n    if (tOfVal === 'object' && val.length) {\n      var absArr = createSizedArray(val.length);\n      var i;\n      var len = val.length;\n\n      for (i = 0; i < len; i += 1) {\n        absArr[i] = Math.abs(val[i]);\n      }\n\n      return absArr;\n    }\n\n    return Math.abs(val);\n  };\n\n  var defaultCurveSegments = 150;\n  var degToRads = Math.PI / 180;\n  var roundCorner = 0.5519;\n\n  function roundValues(flag) {\n    _shouldRoundValues = !!flag;\n  }\n\n  function bmRnd(value) {\n    if (_shouldRoundValues) {\n      return Math.round(value);\n    }\n\n    return value;\n  }\n\n  function styleDiv(element) {\n    element.style.position = 'absolute';\n    element.style.top = 0;\n    element.style.left = 0;\n    element.style.display = 'block';\n    element.style.transformOrigin = '0 0';\n    element.style.webkitTransformOrigin = '0 0';\n    element.style.backfaceVisibility = 'visible';\n    element.style.webkitBackfaceVisibility = 'visible';\n    element.style.transformStyle = 'preserve-3d';\n    element.style.webkitTransformStyle = 'preserve-3d';\n    element.style.mozTransformStyle = 'preserve-3d';\n  }\n\n  function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n    this.type = type;\n    this.currentTime = currentTime;\n    this.totalTime = totalTime;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n\n  function BMCompleteEvent(type, frameMultiplier) {\n    this.type = type;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n\n  function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n    this.type = type;\n    this.currentLoop = currentLoop;\n    this.totalLoops = totalLoops;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n\n  function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n    this.type = type;\n    this.firstFrame = firstFrame;\n    this.totalFrames = totalFrames;\n  }\n\n  function BMDestroyEvent(type, target) {\n    this.type = type;\n    this.target = target;\n  }\n\n  function BMRenderFrameErrorEvent(nativeError, currentTime) {\n    this.type = 'renderFrameError';\n    this.nativeError = nativeError;\n    this.currentTime = currentTime;\n  }\n\n  function BMConfigErrorEvent(nativeError) {\n    this.type = 'configError';\n    this.nativeError = nativeError;\n  }\n\n  function BMAnimationConfigErrorEvent(type, nativeError) {\n    this.type = type;\n    this.nativeError = nativeError;\n  }\n\n  var createElementID = function () {\n    var _count = 0;\n    return function createID() {\n      _count += 1;\n      return idPrefix$1 + '__lottie_element_' + _count;\n    };\n  }();\n\n  function HSVtoRGB(h, s, v) {\n    var r;\n    var g;\n    var b;\n    var i;\n    var f;\n    var p;\n    var q;\n    var t;\n    i = Math.floor(h * 6);\n    f = h * 6 - i;\n    p = v * (1 - s);\n    q = v * (1 - f * s);\n    t = v * (1 - (1 - f) * s);\n\n    switch (i % 6) {\n      case 0:\n        r = v;\n        g = t;\n        b = p;\n        break;\n\n      case 1:\n        r = q;\n        g = v;\n        b = p;\n        break;\n\n      case 2:\n        r = p;\n        g = v;\n        b = t;\n        break;\n\n      case 3:\n        r = p;\n        g = q;\n        b = v;\n        break;\n\n      case 4:\n        r = t;\n        g = p;\n        b = v;\n        break;\n\n      case 5:\n        r = v;\n        g = p;\n        b = q;\n        break;\n\n      default:\n        break;\n    }\n\n    return [r, g, b];\n  }\n\n  function RGBtoHSV(r, g, b) {\n    var max = Math.max(r, g, b);\n    var min = Math.min(r, g, b);\n    var d = max - min;\n    var h;\n    var s = max === 0 ? 0 : d / max;\n    var v = max / 255;\n\n    switch (max) {\n      case min:\n        h = 0;\n        break;\n\n      case r:\n        h = g - b + d * (g < b ? 6 : 0);\n        h /= 6 * d;\n        break;\n\n      case g:\n        h = b - r + d * 2;\n        h /= 6 * d;\n        break;\n\n      case b:\n        h = r - g + d * 4;\n        h /= 6 * d;\n        break;\n\n      default:\n        break;\n    }\n\n    return [h, s, v];\n  }\n\n  function addSaturationToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[1] += offset;\n\n    if (hsv[1] > 1) {\n      hsv[1] = 1;\n    } else if (hsv[1] <= 0) {\n      hsv[1] = 0;\n    }\n\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n\n  function addBrightnessToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[2] += offset;\n\n    if (hsv[2] > 1) {\n      hsv[2] = 1;\n    } else if (hsv[2] < 0) {\n      hsv[2] = 0;\n    }\n\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n\n  function addHueToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[0] += offset / 360;\n\n    if (hsv[0] > 1) {\n      hsv[0] -= 1;\n    } else if (hsv[0] < 0) {\n      hsv[0] += 1;\n    }\n\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n\n  var rgbToHex = function () {\n    var colorMap = [];\n    var i;\n    var hex;\n\n    for (i = 0; i < 256; i += 1) {\n      hex = i.toString(16);\n      colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n    }\n\n    return function (r, g, b) {\n      if (r < 0) {\n        r = 0;\n      }\n\n      if (g < 0) {\n        g = 0;\n      }\n\n      if (b < 0) {\n        b = 0;\n      }\n\n      return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n    };\n  }();\n\n  var setSubframeEnabled = function setSubframeEnabled(flag) {\n    subframeEnabled = !!flag;\n  };\n\n  var getSubframeEnabled = function getSubframeEnabled() {\n    return subframeEnabled;\n  };\n\n  var setExpressionsPlugin = function setExpressionsPlugin(value) {\n    expressionsPlugin = value;\n  };\n\n  var getExpressionsPlugin = function getExpressionsPlugin() {\n    return expressionsPlugin;\n  };\n\n  var setExpressionInterfaces = function setExpressionInterfaces(value) {\n    expressionsInterfaces = value;\n  };\n\n  var getExpressionInterfaces = function getExpressionInterfaces() {\n    return expressionsInterfaces;\n  };\n\n  var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n    defaultCurveSegments = value;\n  };\n\n  var getDefaultCurveSegments = function getDefaultCurveSegments() {\n    return defaultCurveSegments;\n  };\n\n  var setIdPrefix = function setIdPrefix(value) {\n    idPrefix$1 = value;\n  };\n\n  var getIdPrefix = function getIdPrefix() {\n    return idPrefix$1;\n  };\n\n  function createNS(type) {\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\n    return document.createElementNS(svgNS, type);\n  }\n\n  function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n  var dataManager = function () {\n    var _counterId = 1;\n    var processes = [];\n    var workerFn;\n    var workerInstance;\n    var workerProxy = {\n      onmessage: function onmessage() {},\n      postMessage: function postMessage(path) {\n        workerFn({\n          data: path\n        });\n      }\n    };\n    var _workerSelf = {\n      postMessage: function postMessage(data) {\n        workerProxy.onmessage({\n          data: data\n        });\n      }\n    };\n\n    function createWorker(fn) {\n      if (window.Worker && window.Blob && getWebWorker()) {\n        var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n          type: 'text/javascript'\n        }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n        var url = URL.createObjectURL(blob);\n        return new Worker(url);\n      }\n\n      workerFn = fn;\n      return workerProxy;\n    }\n\n    function setupWorker() {\n      if (!workerInstance) {\n        workerInstance = createWorker(function workerStart(e) {\n          function dataFunctionManager() {\n            function completeLayers(layers, comps) {\n              var layerData;\n              var i;\n              var len = layers.length;\n              var j;\n              var jLen;\n              var k;\n              var kLen;\n\n              for (i = 0; i < len; i += 1) {\n                layerData = layers[i];\n\n                if ('ks' in layerData && !layerData.completed) {\n                  layerData.completed = true;\n\n                  if (layerData.hasMask) {\n                    var maskProps = layerData.masksProperties;\n                    jLen = maskProps.length;\n\n                    for (j = 0; j < jLen; j += 1) {\n                      if (maskProps[j].pt.k.i) {\n                        convertPathsToAbsoluteValues(maskProps[j].pt.k);\n                      } else {\n                        kLen = maskProps[j].pt.k.length;\n\n                        for (k = 0; k < kLen; k += 1) {\n                          if (maskProps[j].pt.k[k].s) {\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n                          }\n\n                          if (maskProps[j].pt.k[k].e) {\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n                          }\n                        }\n                      }\n                    }\n                  }\n\n                  if (layerData.ty === 0) {\n                    layerData.layers = findCompLayers(layerData.refId, comps);\n                    completeLayers(layerData.layers, comps);\n                  } else if (layerData.ty === 4) {\n                    completeShapes(layerData.shapes);\n                  } else if (layerData.ty === 5) {\n                    completeText(layerData);\n                  }\n                }\n              }\n            }\n\n            function completeChars(chars, assets) {\n              if (chars) {\n                var i = 0;\n                var len = chars.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (chars[i].t === 1) {\n                    // var compData = findComp(chars[i].data.refId, assets);\n                    chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n                    // chars[i].data.op = 99999;\n                    // chars[i].data.st = 0;\n                    // chars[i].data.sr = 1;\n                    // chars[i].w = compData.w;\n                    // chars[i].data.ks = {\n                    //   a: { k: [0, 0, 0], a: 0 },\n                    //   p: { k: [0, -compData.h, 0], a: 0 },\n                    //   r: { k: 0, a: 0 },\n                    //   s: { k: [100, 100], a: 0 },\n                    //   o: { k: 100, a: 0 },\n                    // };\n\n                    completeLayers(chars[i].data.layers, assets);\n                  }\n                }\n              }\n            }\n\n            function findComp(id, comps) {\n              var i = 0;\n              var len = comps.length;\n\n              while (i < len) {\n                if (comps[i].id === id) {\n                  return comps[i];\n                }\n\n                i += 1;\n              }\n\n              return null;\n            }\n\n            function findCompLayers(id, comps) {\n              var comp = findComp(id, comps);\n\n              if (comp) {\n                if (!comp.layers.__used) {\n                  comp.layers.__used = true;\n                  return comp.layers;\n                }\n\n                return JSON.parse(JSON.stringify(comp.layers));\n              }\n\n              return null;\n            }\n\n            function completeShapes(arr) {\n              var i;\n              var len = arr.length;\n              var j;\n              var jLen;\n\n              for (i = len - 1; i >= 0; i -= 1) {\n                if (arr[i].ty === 'sh') {\n                  if (arr[i].ks.k.i) {\n                    convertPathsToAbsoluteValues(arr[i].ks.k);\n                  } else {\n                    jLen = arr[i].ks.k.length;\n\n                    for (j = 0; j < jLen; j += 1) {\n                      if (arr[i].ks.k[j].s) {\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n                      }\n\n                      if (arr[i].ks.k[j].e) {\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n                      }\n                    }\n                  }\n                } else if (arr[i].ty === 'gr') {\n                  completeShapes(arr[i].it);\n                }\n              }\n            }\n\n            function convertPathsToAbsoluteValues(path) {\n              var i;\n              var len = path.i.length;\n\n              for (i = 0; i < len; i += 1) {\n                path.i[i][0] += path.v[i][0];\n                path.i[i][1] += path.v[i][1];\n                path.o[i][0] += path.v[i][0];\n                path.o[i][1] += path.v[i][1];\n              }\n            }\n\n            function checkVersion(minimum, animVersionString) {\n              var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n              if (minimum[0] > animVersion[0]) {\n                return true;\n              }\n\n              if (animVersion[0] > minimum[0]) {\n                return false;\n              }\n\n              if (minimum[1] > animVersion[1]) {\n                return true;\n              }\n\n              if (animVersion[1] > minimum[1]) {\n                return false;\n              }\n\n              if (minimum[2] > animVersion[2]) {\n                return true;\n              }\n\n              if (animVersion[2] > minimum[2]) {\n                return false;\n              }\n\n              return null;\n            }\n\n            var checkText = function () {\n              var minimumVersion = [4, 4, 14];\n\n              function updateTextLayer(textLayer) {\n                var documentData = textLayer.t.d;\n                textLayer.t.d = {\n                  k: [{\n                    s: documentData,\n                    t: 0\n                  }]\n                };\n              }\n\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 5) {\n                    updateTextLayer(layers[i]);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkChars = function () {\n              var minimumVersion = [4, 7, 99];\n              return function (animationData) {\n                if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n                  var i;\n                  var len = animationData.chars.length;\n\n                  for (i = 0; i < len; i += 1) {\n                    var charData = animationData.chars[i];\n\n                    if (charData.data && charData.data.shapes) {\n                      completeShapes(charData.data.shapes);\n                      charData.data.ip = 0;\n                      charData.data.op = 99999;\n                      charData.data.st = 0;\n                      charData.data.sr = 1;\n                      charData.data.ks = {\n                        p: {\n                          k: [0, 0],\n                          a: 0\n                        },\n                        s: {\n                          k: [100, 100],\n                          a: 0\n                        },\n                        a: {\n                          k: [0, 0],\n                          a: 0\n                        },\n                        r: {\n                          k: 0,\n                          a: 0\n                        },\n                        o: {\n                          k: 100,\n                          a: 0\n                        }\n                      };\n\n                      if (!animationData.chars[i].t) {\n                        charData.data.shapes.push({\n                          ty: 'no'\n                        });\n                        charData.data.shapes[0].it.push({\n                          p: {\n                            k: [0, 0],\n                            a: 0\n                          },\n                          s: {\n                            k: [100, 100],\n                            a: 0\n                          },\n                          a: {\n                            k: [0, 0],\n                            a: 0\n                          },\n                          r: {\n                            k: 0,\n                            a: 0\n                          },\n                          o: {\n                            k: 100,\n                            a: 0\n                          },\n                          sk: {\n                            k: 0,\n                            a: 0\n                          },\n                          sa: {\n                            k: 0,\n                            a: 0\n                          },\n                          ty: 'tr'\n                        });\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkPathProperties = function () {\n              var minimumVersion = [5, 7, 15];\n\n              function updateTextLayer(textLayer) {\n                var pathData = textLayer.t.p;\n\n                if (typeof pathData.a === 'number') {\n                  pathData.a = {\n                    a: 0,\n                    k: pathData.a\n                  };\n                }\n\n                if (typeof pathData.p === 'number') {\n                  pathData.p = {\n                    a: 0,\n                    k: pathData.p\n                  };\n                }\n\n                if (typeof pathData.r === 'number') {\n                  pathData.r = {\n                    a: 0,\n                    k: pathData.r\n                  };\n                }\n              }\n\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 5) {\n                    updateTextLayer(layers[i]);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkColors = function () {\n              var minimumVersion = [4, 1, 9];\n\n              function iterateShapes(shapes) {\n                var i;\n                var len = shapes.length;\n                var j;\n                var jLen;\n\n                for (i = 0; i < len; i += 1) {\n                  if (shapes[i].ty === 'gr') {\n                    iterateShapes(shapes[i].it);\n                  } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n                    if (shapes[i].c.k && shapes[i].c.k[0].i) {\n                      jLen = shapes[i].c.k.length;\n\n                      for (j = 0; j < jLen; j += 1) {\n                        if (shapes[i].c.k[j].s) {\n                          shapes[i].c.k[j].s[0] /= 255;\n                          shapes[i].c.k[j].s[1] /= 255;\n                          shapes[i].c.k[j].s[2] /= 255;\n                          shapes[i].c.k[j].s[3] /= 255;\n                        }\n\n                        if (shapes[i].c.k[j].e) {\n                          shapes[i].c.k[j].e[0] /= 255;\n                          shapes[i].c.k[j].e[1] /= 255;\n                          shapes[i].c.k[j].e[2] /= 255;\n                          shapes[i].c.k[j].e[3] /= 255;\n                        }\n                      }\n                    } else {\n                      shapes[i].c.k[0] /= 255;\n                      shapes[i].c.k[1] /= 255;\n                      shapes[i].c.k[2] /= 255;\n                      shapes[i].c.k[3] /= 255;\n                    }\n                  }\n                }\n              }\n\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 4) {\n                    iterateShapes(layers[i].shapes);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkShapes = function () {\n              var minimumVersion = [4, 4, 18];\n\n              function completeClosingShapes(arr) {\n                var i;\n                var len = arr.length;\n                var j;\n                var jLen;\n\n                for (i = len - 1; i >= 0; i -= 1) {\n                  if (arr[i].ty === 'sh') {\n                    if (arr[i].ks.k.i) {\n                      arr[i].ks.k.c = arr[i].closed;\n                    } else {\n                      jLen = arr[i].ks.k.length;\n\n                      for (j = 0; j < jLen; j += 1) {\n                        if (arr[i].ks.k[j].s) {\n                          arr[i].ks.k[j].s[0].c = arr[i].closed;\n                        }\n\n                        if (arr[i].ks.k[j].e) {\n                          arr[i].ks.k[j].e[0].c = arr[i].closed;\n                        }\n                      }\n                    }\n                  } else if (arr[i].ty === 'gr') {\n                    completeClosingShapes(arr[i].it);\n                  }\n                }\n              }\n\n              function iterateLayers(layers) {\n                var layerData;\n                var i;\n                var len = layers.length;\n                var j;\n                var jLen;\n                var k;\n                var kLen;\n\n                for (i = 0; i < len; i += 1) {\n                  layerData = layers[i];\n\n                  if (layerData.hasMask) {\n                    var maskProps = layerData.masksProperties;\n                    jLen = maskProps.length;\n\n                    for (j = 0; j < jLen; j += 1) {\n                      if (maskProps[j].pt.k.i) {\n                        maskProps[j].pt.k.c = maskProps[j].cl;\n                      } else {\n                        kLen = maskProps[j].pt.k.length;\n\n                        for (k = 0; k < kLen; k += 1) {\n                          if (maskProps[j].pt.k[k].s) {\n                            maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n                          }\n\n                          if (maskProps[j].pt.k[k].e) {\n                            maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n                          }\n                        }\n                      }\n                    }\n                  }\n\n                  if (layerData.ty === 4) {\n                    completeClosingShapes(layerData.shapes);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            function completeData(animationData) {\n              if (animationData.__complete) {\n                return;\n              }\n\n              checkColors(animationData);\n              checkText(animationData);\n              checkChars(animationData);\n              checkPathProperties(animationData);\n              checkShapes(animationData);\n              completeLayers(animationData.layers, animationData.assets);\n              completeChars(animationData.chars, animationData.assets);\n              animationData.__complete = true;\n            }\n\n            function completeText(data) {\n              if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n              }\n            }\n\n            var moduleOb = {};\n            moduleOb.completeData = completeData;\n            moduleOb.checkColors = checkColors;\n            moduleOb.checkChars = checkChars;\n            moduleOb.checkPathProperties = checkPathProperties;\n            moduleOb.checkShapes = checkShapes;\n            moduleOb.completeLayers = completeLayers;\n            return moduleOb;\n          }\n\n          if (!_workerSelf.dataManager) {\n            _workerSelf.dataManager = dataFunctionManager();\n          }\n\n          if (!_workerSelf.assetLoader) {\n            _workerSelf.assetLoader = function () {\n              function formatResponse(xhr) {\n                // using typeof doubles the time of execution of this method,\n                // so if available, it's better to use the header to validate the type\n                var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n                if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n                  return xhr.response;\n                }\n\n                if (xhr.response && _typeof$5(xhr.response) === 'object') {\n                  return xhr.response;\n                }\n\n                if (xhr.response && typeof xhr.response === 'string') {\n                  return JSON.parse(xhr.response);\n                }\n\n                if (xhr.responseText) {\n                  return JSON.parse(xhr.responseText);\n                }\n\n                return null;\n              }\n\n              function loadAsset(path, fullPath, callback, errorCallback) {\n                var response;\n                var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n                try {\n                  // This crashes on Android WebView prior to KitKat\n                  xhr.responseType = 'json';\n                } catch (err) {} // eslint-disable-line no-empty\n\n\n                xhr.onreadystatechange = function () {\n                  if (xhr.readyState === 4) {\n                    if (xhr.status === 200) {\n                      response = formatResponse(xhr);\n                      callback(response);\n                    } else {\n                      try {\n                        response = formatResponse(xhr);\n                        callback(response);\n                      } catch (err) {\n                        if (errorCallback) {\n                          errorCallback(err);\n                        }\n                      }\n                    }\n                  }\n                };\n\n                try {\n                  // Hack to workaround banner validation\n                  xhr.open(['G', 'E', 'T'].join(''), path, true);\n                } catch (error) {\n                  // Hack to workaround banner validation\n                  xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n                }\n\n                xhr.send();\n              }\n\n              return {\n                load: loadAsset\n              };\n            }();\n          }\n\n          if (e.data.type === 'loadAnimation') {\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n              _workerSelf.dataManager.completeData(data);\n\n              _workerSelf.postMessage({\n                id: e.data.id,\n                payload: data,\n                status: 'success'\n              });\n            }, function () {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                status: 'error'\n              });\n            });\n          } else if (e.data.type === 'complete') {\n            var animation = e.data.animation;\n\n            _workerSelf.dataManager.completeData(animation);\n\n            _workerSelf.postMessage({\n              id: e.data.id,\n              payload: animation,\n              status: 'success'\n            });\n          } else if (e.data.type === 'loadData') {\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                payload: data,\n                status: 'success'\n              });\n            }, function () {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                status: 'error'\n              });\n            });\n          }\n        });\n\n        workerInstance.onmessage = function (event) {\n          var data = event.data;\n          var id = data.id;\n          var process = processes[id];\n          processes[id] = null;\n\n          if (data.status === 'success') {\n            process.onComplete(data.payload);\n          } else if (process.onError) {\n            process.onError();\n          }\n        };\n      }\n    }\n\n    function createProcess(onComplete, onError) {\n      _counterId += 1;\n      var id = 'processId_' + _counterId;\n      processes[id] = {\n        onComplete: onComplete,\n        onError: onError\n      };\n      return id;\n    }\n\n    function loadAnimation(path, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'loadAnimation',\n        path: path,\n        fullPath: window.location.origin + window.location.pathname,\n        id: processId\n      });\n    }\n\n    function loadData(path, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'loadData',\n        path: path,\n        fullPath: window.location.origin + window.location.pathname,\n        id: processId\n      });\n    }\n\n    function completeAnimation(anim, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'complete',\n        animation: anim,\n        id: processId\n      });\n    }\n\n    return {\n      loadAnimation: loadAnimation,\n      loadData: loadData,\n      completeAnimation: completeAnimation\n    };\n  }();\n\n  var ImagePreloader = function () {\n    var proxyImage = function () {\n      var canvas = createTag('canvas');\n      canvas.width = 1;\n      canvas.height = 1;\n      var ctx = canvas.getContext('2d');\n      ctx.fillStyle = 'rgba(0,0,0,0)';\n      ctx.fillRect(0, 0, 1, 1);\n      return canvas;\n    }();\n\n    function imageLoaded() {\n      this.loadedAssets += 1;\n\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n        if (this.imagesLoadedCb) {\n          this.imagesLoadedCb(null);\n        }\n      }\n    }\n\n    function footageLoaded() {\n      this.loadedFootagesCount += 1;\n\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n        if (this.imagesLoadedCb) {\n          this.imagesLoadedCb(null);\n        }\n      }\n    }\n\n    function getAssetsPath(assetData, assetsPath, originalPath) {\n      var path = '';\n\n      if (assetData.e) {\n        path = assetData.p;\n      } else if (assetsPath) {\n        var imagePath = assetData.p;\n\n        if (imagePath.indexOf('images/') !== -1) {\n          imagePath = imagePath.split('/')[1];\n        }\n\n        path = assetsPath + imagePath;\n      } else {\n        path = originalPath;\n        path += assetData.u ? assetData.u : '';\n        path += assetData.p;\n      }\n\n      return path;\n    }\n\n    function testImageLoaded(img) {\n      var _count = 0;\n      var intervalId = setInterval(function () {\n        var box = img.getBBox();\n\n        if (box.width || _count > 500) {\n          this._imageLoaded();\n\n          clearInterval(intervalId);\n        }\n\n        _count += 1;\n      }.bind(this), 50);\n    }\n\n    function createImageData(assetData) {\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\n      var img = createNS('image');\n\n      if (isSafari) {\n        this.testImageLoaded(img);\n      } else {\n        img.addEventListener('load', this._imageLoaded, false);\n      }\n\n      img.addEventListener('error', function () {\n        ob.img = proxyImage;\n\n        this._imageLoaded();\n      }.bind(this), false);\n      img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n      if (this._elementHelper.append) {\n        this._elementHelper.append(img);\n      } else {\n        this._elementHelper.appendChild(img);\n      }\n\n      var ob = {\n        img: img,\n        assetData: assetData\n      };\n      return ob;\n    }\n\n    function createImgData(assetData) {\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\n      var img = createTag('img');\n      img.crossOrigin = 'anonymous';\n      img.addEventListener('load', this._imageLoaded, false);\n      img.addEventListener('error', function () {\n        ob.img = proxyImage;\n\n        this._imageLoaded();\n      }.bind(this), false);\n      img.src = path;\n      var ob = {\n        img: img,\n        assetData: assetData\n      };\n      return ob;\n    }\n\n    function createFootageData(data) {\n      var ob = {\n        assetData: data\n      };\n      var path = getAssetsPath(data, this.assetsPath, this.path);\n      dataManager.loadData(path, function (footageData) {\n        ob.img = footageData;\n\n        this._footageLoaded();\n      }.bind(this), function () {\n        ob.img = {};\n\n        this._footageLoaded();\n      }.bind(this));\n      return ob;\n    }\n\n    function loadAssets(assets, cb) {\n      this.imagesLoadedCb = cb;\n      var i;\n      var len = assets.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (!assets[i].layers) {\n          if (!assets[i].t || assets[i].t === 'seq') {\n            this.totalImages += 1;\n            this.images.push(this._createImageData(assets[i]));\n          } else if (assets[i].t === 3) {\n            this.totalFootages += 1;\n            this.images.push(this.createFootageData(assets[i]));\n          }\n        }\n      }\n    }\n\n    function setPath(path) {\n      this.path = path || '';\n    }\n\n    function setAssetsPath(path) {\n      this.assetsPath = path || '';\n    }\n\n    function getAsset(assetData) {\n      var i = 0;\n      var len = this.images.length;\n\n      while (i < len) {\n        if (this.images[i].assetData === assetData) {\n          return this.images[i].img;\n        }\n\n        i += 1;\n      }\n\n      return null;\n    }\n\n    function destroy() {\n      this.imagesLoadedCb = null;\n      this.images.length = 0;\n    }\n\n    function loadedImages() {\n      return this.totalImages === this.loadedAssets;\n    }\n\n    function loadedFootages() {\n      return this.totalFootages === this.loadedFootagesCount;\n    }\n\n    function setCacheType(type, elementHelper) {\n      if (type === 'svg') {\n        this._elementHelper = elementHelper;\n        this._createImageData = this.createImageData.bind(this);\n      } else {\n        this._createImageData = this.createImgData.bind(this);\n      }\n    }\n\n    function ImagePreloaderFactory() {\n      this._imageLoaded = imageLoaded.bind(this);\n      this._footageLoaded = footageLoaded.bind(this);\n      this.testImageLoaded = testImageLoaded.bind(this);\n      this.createFootageData = createFootageData.bind(this);\n      this.assetsPath = '';\n      this.path = '';\n      this.totalImages = 0;\n      this.totalFootages = 0;\n      this.loadedAssets = 0;\n      this.loadedFootagesCount = 0;\n      this.imagesLoadedCb = null;\n      this.images = [];\n    }\n\n    ImagePreloaderFactory.prototype = {\n      loadAssets: loadAssets,\n      setAssetsPath: setAssetsPath,\n      setPath: setPath,\n      loadedImages: loadedImages,\n      loadedFootages: loadedFootages,\n      destroy: destroy,\n      getAsset: getAsset,\n      createImgData: createImgData,\n      createImageData: createImageData,\n      imageLoaded: imageLoaded,\n      footageLoaded: footageLoaded,\n      setCacheType: setCacheType\n    };\n    return ImagePreloaderFactory;\n  }();\n\n  function BaseEvent() {}\n\n  BaseEvent.prototype = {\n    triggerEvent: function triggerEvent(eventName, args) {\n      if (this._cbs[eventName]) {\n        var callbacks = this._cbs[eventName];\n\n        for (var i = 0; i < callbacks.length; i += 1) {\n          callbacks[i](args);\n        }\n      }\n    },\n    addEventListener: function addEventListener(eventName, callback) {\n      if (!this._cbs[eventName]) {\n        this._cbs[eventName] = [];\n      }\n\n      this._cbs[eventName].push(callback);\n\n      return function () {\n        this.removeEventListener(eventName, callback);\n      }.bind(this);\n    },\n    removeEventListener: function removeEventListener(eventName, callback) {\n      if (!callback) {\n        this._cbs[eventName] = null;\n      } else if (this._cbs[eventName]) {\n        var i = 0;\n        var len = this._cbs[eventName].length;\n\n        while (i < len) {\n          if (this._cbs[eventName][i] === callback) {\n            this._cbs[eventName].splice(i, 1);\n\n            i -= 1;\n            len -= 1;\n          }\n\n          i += 1;\n        }\n\n        if (!this._cbs[eventName].length) {\n          this._cbs[eventName] = null;\n        }\n      }\n    }\n  };\n\n  var markerParser = function () {\n    function parsePayloadLines(payload) {\n      var lines = payload.split('\\r\\n');\n      var keys = {};\n      var line;\n      var keysCount = 0;\n\n      for (var i = 0; i < lines.length; i += 1) {\n        line = lines[i].split(':');\n\n        if (line.length === 2) {\n          keys[line[0]] = line[1].trim();\n          keysCount += 1;\n        }\n      }\n\n      if (keysCount === 0) {\n        throw new Error();\n      }\n\n      return keys;\n    }\n\n    return function (_markers) {\n      var markers = [];\n\n      for (var i = 0; i < _markers.length; i += 1) {\n        var _marker = _markers[i];\n        var markerData = {\n          time: _marker.tm,\n          duration: _marker.dr\n        };\n\n        try {\n          markerData.payload = JSON.parse(_markers[i].cm);\n        } catch (_) {\n          try {\n            markerData.payload = parsePayloadLines(_markers[i].cm);\n          } catch (__) {\n            markerData.payload = {\n              name: _markers[i].cm\n            };\n          }\n        }\n\n        markers.push(markerData);\n      }\n\n      return markers;\n    };\n  }();\n\n  var ProjectInterface = function () {\n    function registerComposition(comp) {\n      this.compositions.push(comp);\n    }\n\n    return function () {\n      function _thisProjectFunction(name) {\n        var i = 0;\n        var len = this.compositions.length;\n\n        while (i < len) {\n          if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n            if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n              this.compositions[i].prepareFrame(this.currentFrame);\n            }\n\n            return this.compositions[i].compInterface;\n          }\n\n          i += 1;\n        }\n\n        return null;\n      }\n\n      _thisProjectFunction.compositions = [];\n      _thisProjectFunction.currentFrame = 0;\n      _thisProjectFunction.registerComposition = registerComposition;\n      return _thisProjectFunction;\n    };\n  }();\n\n  var renderers = {};\n\n  var registerRenderer = function registerRenderer(key, value) {\n    renderers[key] = value;\n  };\n\n  function getRenderer(key) {\n    return renderers[key];\n  }\n\n  function getRegisteredRenderer() {\n    // Returns canvas by default for compatibility\n    if (renderers.canvas) {\n      return 'canvas';\n    } // Returns any renderer that is registered\n\n\n    for (var key in renderers) {\n      if (renderers[key]) {\n        return key;\n      }\n    }\n\n    return '';\n  }\n\n  function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n  var AnimationItem = function AnimationItem() {\n    this._cbs = [];\n    this.name = '';\n    this.path = '';\n    this.isLoaded = false;\n    this.currentFrame = 0;\n    this.currentRawFrame = 0;\n    this.firstFrame = 0;\n    this.totalFrames = 0;\n    this.frameRate = 0;\n    this.frameMult = 0;\n    this.playSpeed = 1;\n    this.playDirection = 1;\n    this.playCount = 0;\n    this.animationData = {};\n    this.assets = [];\n    this.isPaused = true;\n    this.autoplay = false;\n    this.loop = true;\n    this.renderer = null;\n    this.animationID = createElementID();\n    this.assetsPath = '';\n    this.timeCompleted = 0;\n    this.segmentPos = 0;\n    this.isSubframeEnabled = getSubframeEnabled();\n    this.segments = [];\n    this._idle = true;\n    this._completedLoop = false;\n    this.projectInterface = ProjectInterface();\n    this.imagePreloader = new ImagePreloader();\n    this.audioController = audioControllerFactory();\n    this.markers = [];\n    this.configAnimation = this.configAnimation.bind(this);\n    this.onSetupError = this.onSetupError.bind(this);\n    this.onSegmentComplete = this.onSegmentComplete.bind(this);\n    this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n    this.expressionsPlugin = getExpressionsPlugin();\n  };\n\n  extendPrototype([BaseEvent], AnimationItem);\n\n  AnimationItem.prototype.setParams = function (params) {\n    if (params.wrapper || params.container) {\n      this.wrapper = params.wrapper || params.container;\n    }\n\n    var animType = 'svg';\n\n    if (params.animType) {\n      animType = params.animType;\n    } else if (params.renderer) {\n      animType = params.renderer;\n    }\n\n    var RendererClass = getRenderer(animType);\n    this.renderer = new RendererClass(this, params.rendererSettings);\n    this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n    this.renderer.setProjectInterface(this.projectInterface);\n    this.animType = animType;\n\n    if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n      this.loop = true;\n    } else if (params.loop === false) {\n      this.loop = false;\n    } else {\n      this.loop = parseInt(params.loop, 10);\n    }\n\n    this.autoplay = 'autoplay' in params ? params.autoplay : true;\n    this.name = params.name ? params.name : '';\n    this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n    this.assetsPath = params.assetsPath;\n    this.initialSegment = params.initialSegment;\n\n    if (params.audioFactory) {\n      this.audioController.setAudioFactory(params.audioFactory);\n    }\n\n    if (params.animationData) {\n      this.setupAnimation(params.animationData);\n    } else if (params.path) {\n      if (params.path.lastIndexOf('\\\\') !== -1) {\n        this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n      } else {\n        this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n      }\n\n      this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n      this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n      dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n    }\n  };\n\n  AnimationItem.prototype.onSetupError = function () {\n    this.trigger('data_failed');\n  };\n\n  AnimationItem.prototype.setupAnimation = function (data) {\n    dataManager.completeAnimation(data, this.configAnimation);\n  };\n\n  AnimationItem.prototype.setData = function (wrapper, animationData) {\n    if (animationData) {\n      if (_typeof$4(animationData) !== 'object') {\n        animationData = JSON.parse(animationData);\n      }\n    }\n\n    var params = {\n      wrapper: wrapper,\n      animationData: animationData\n    };\n    var wrapperAttributes = wrapper.attributes;\n    params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n    params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n    var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n    if (loop === 'false') {\n      params.loop = false;\n    } else if (loop === 'true') {\n      params.loop = true;\n    } else if (loop !== '') {\n      params.loop = parseInt(loop, 10);\n    }\n\n    var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n    params.autoplay = autoplay !== 'false';\n    params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n    var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n    if (prerender === 'false') {\n      params.prerender = false;\n    }\n\n    if (!params.path) {\n      this.trigger('destroy');\n    } else {\n      this.setParams(params);\n    }\n  };\n\n  AnimationItem.prototype.includeLayers = function (data) {\n    if (data.op > this.animationData.op) {\n      this.animationData.op = data.op;\n      this.totalFrames = Math.floor(data.op - this.animationData.ip);\n    }\n\n    var layers = this.animationData.layers;\n    var i;\n    var len = layers.length;\n    var newLayers = data.layers;\n    var j;\n    var jLen = newLayers.length;\n\n    for (j = 0; j < jLen; j += 1) {\n      i = 0;\n\n      while (i < len) {\n        if (layers[i].id === newLayers[j].id) {\n          layers[i] = newLayers[j];\n          break;\n        }\n\n        i += 1;\n      }\n    }\n\n    if (data.chars || data.fonts) {\n      this.renderer.globalData.fontManager.addChars(data.chars);\n      this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n    }\n\n    if (data.assets) {\n      len = data.assets.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.animationData.assets.push(data.assets[i]);\n      }\n    }\n\n    this.animationData.__complete = false;\n    dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n  };\n\n  AnimationItem.prototype.onSegmentComplete = function (data) {\n    this.animationData = data;\n    var expressionsPlugin = getExpressionsPlugin();\n\n    if (expressionsPlugin) {\n      expressionsPlugin.initExpressions(this);\n    }\n\n    this.loadNextSegment();\n  };\n\n  AnimationItem.prototype.loadNextSegment = function () {\n    var segments = this.animationData.segments;\n\n    if (!segments || segments.length === 0 || !this.autoloadSegments) {\n      this.trigger('data_ready');\n      this.timeCompleted = this.totalFrames;\n      return;\n    }\n\n    var segment = segments.shift();\n    this.timeCompleted = segment.time * this.frameRate;\n    var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n    this.segmentPos += 1;\n    dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n      this.trigger('data_failed');\n    }.bind(this));\n  };\n\n  AnimationItem.prototype.loadSegments = function () {\n    var segments = this.animationData.segments;\n\n    if (!segments) {\n      this.timeCompleted = this.totalFrames;\n    }\n\n    this.loadNextSegment();\n  };\n\n  AnimationItem.prototype.imagesLoaded = function () {\n    this.trigger('loaded_images');\n    this.checkLoaded();\n  };\n\n  AnimationItem.prototype.preloadImages = function () {\n    this.imagePreloader.setAssetsPath(this.assetsPath);\n    this.imagePreloader.setPath(this.path);\n    this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n  };\n\n  AnimationItem.prototype.configAnimation = function (animData) {\n    if (!this.renderer) {\n      return;\n    }\n\n    try {\n      this.animationData = animData;\n\n      if (this.initialSegment) {\n        this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n        this.firstFrame = Math.round(this.initialSegment[0]);\n      } else {\n        this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n        this.firstFrame = Math.round(this.animationData.ip);\n      }\n\n      this.renderer.configAnimation(animData);\n\n      if (!animData.assets) {\n        animData.assets = [];\n      }\n\n      this.assets = this.animationData.assets;\n      this.frameRate = this.animationData.fr;\n      this.frameMult = this.animationData.fr / 1000;\n      this.renderer.searchExtraCompositions(animData.assets);\n      this.markers = markerParser(animData.markers || []);\n      this.trigger('config_ready');\n      this.preloadImages();\n      this.loadSegments();\n      this.updaFrameModifier();\n      this.waitForFontsLoaded();\n\n      if (this.isPaused) {\n        this.audioController.pause();\n      }\n    } catch (error) {\n      this.triggerConfigError(error);\n    }\n  };\n\n  AnimationItem.prototype.waitForFontsLoaded = function () {\n    if (!this.renderer) {\n      return;\n    }\n\n    if (this.renderer.globalData.fontManager.isLoaded) {\n      this.checkLoaded();\n    } else {\n      setTimeout(this.waitForFontsLoaded.bind(this), 20);\n    }\n  };\n\n  AnimationItem.prototype.checkLoaded = function () {\n    if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n      this.isLoaded = true;\n      var expressionsPlugin = getExpressionsPlugin();\n\n      if (expressionsPlugin) {\n        expressionsPlugin.initExpressions(this);\n      }\n\n      this.renderer.initItems();\n      setTimeout(function () {\n        this.trigger('DOMLoaded');\n      }.bind(this), 0);\n      this.gotoFrame();\n\n      if (this.autoplay) {\n        this.play();\n      }\n    }\n  };\n\n  AnimationItem.prototype.resize = function (width, height) {\n    // Adding this validation for backwards compatibility in case an event object was being passed down\n    var _width = typeof width === 'number' ? width : undefined;\n\n    var _height = typeof height === 'number' ? height : undefined;\n\n    this.renderer.updateContainerSize(_width, _height);\n  };\n\n  AnimationItem.prototype.setSubframe = function (flag) {\n    this.isSubframeEnabled = !!flag;\n  };\n\n  AnimationItem.prototype.gotoFrame = function () {\n    this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n    if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n      this.currentFrame = this.timeCompleted;\n    }\n\n    this.trigger('enterFrame');\n    this.renderFrame();\n    this.trigger('drawnFrame');\n  };\n\n  AnimationItem.prototype.renderFrame = function () {\n    if (this.isLoaded === false || !this.renderer) {\n      return;\n    }\n\n    try {\n      if (this.expressionsPlugin) {\n        this.expressionsPlugin.resetFrame();\n      }\n\n      this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n    } catch (error) {\n      this.triggerRenderFrameError(error);\n    }\n  };\n\n  AnimationItem.prototype.play = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    if (this.isPaused === true) {\n      this.isPaused = false;\n      this.trigger('_play');\n      this.audioController.resume();\n\n      if (this._idle) {\n        this._idle = false;\n        this.trigger('_active');\n      }\n    }\n  };\n\n  AnimationItem.prototype.pause = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    if (this.isPaused === false) {\n      this.isPaused = true;\n      this.trigger('_pause');\n      this._idle = true;\n      this.trigger('_idle');\n      this.audioController.pause();\n    }\n  };\n\n  AnimationItem.prototype.togglePause = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    if (this.isPaused === true) {\n      this.play();\n    } else {\n      this.pause();\n    }\n  };\n\n  AnimationItem.prototype.stop = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.pause();\n    this.playCount = 0;\n    this._completedLoop = false;\n    this.setCurrentRawFrameValue(0);\n  };\n\n  AnimationItem.prototype.getMarkerData = function (markerName) {\n    var marker;\n\n    for (var i = 0; i < this.markers.length; i += 1) {\n      marker = this.markers[i];\n\n      if (marker.payload && marker.payload.name === markerName) {\n        return marker;\n      }\n    }\n\n    return null;\n  };\n\n  AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    var numValue = Number(value);\n\n    if (isNaN(numValue)) {\n      var marker = this.getMarkerData(value);\n\n      if (marker) {\n        this.goToAndStop(marker.time, true);\n      }\n    } else if (isFrame) {\n      this.setCurrentRawFrameValue(value);\n    } else {\n      this.setCurrentRawFrameValue(value * this.frameModifier);\n    }\n\n    this.pause();\n  };\n\n  AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    var numValue = Number(value);\n\n    if (isNaN(numValue)) {\n      var marker = this.getMarkerData(value);\n\n      if (marker) {\n        if (!marker.duration) {\n          this.goToAndStop(marker.time, true);\n        } else {\n          this.playSegments([marker.time, marker.time + marker.duration], true);\n        }\n      }\n    } else {\n      this.goToAndStop(numValue, isFrame, name);\n    }\n\n    this.play();\n  };\n\n  AnimationItem.prototype.advanceTime = function (value) {\n    if (this.isPaused === true || this.isLoaded === false) {\n      return;\n    }\n\n    var nextValue = this.currentRawFrame + value * this.frameModifier;\n    var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n    // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n    if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n      if (!this.loop || this.playCount === this.loop) {\n        if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n          _isComplete = true;\n          nextValue = this.totalFrames - 1;\n        }\n      } else if (nextValue >= this.totalFrames) {\n        this.playCount += 1;\n\n        if (!this.checkSegments(nextValue % this.totalFrames)) {\n          this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n          this._completedLoop = true;\n          this.trigger('loopComplete');\n        }\n      } else {\n        this.setCurrentRawFrameValue(nextValue);\n      }\n    } else if (nextValue < 0) {\n      if (!this.checkSegments(nextValue % this.totalFrames)) {\n        if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n          // eslint-disable-line no-plusplus\n          this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n          if (!this._completedLoop) {\n            this._completedLoop = true;\n          } else {\n            this.trigger('loopComplete');\n          }\n        } else {\n          _isComplete = true;\n          nextValue = 0;\n        }\n      }\n    } else {\n      this.setCurrentRawFrameValue(nextValue);\n    }\n\n    if (_isComplete) {\n      this.setCurrentRawFrameValue(nextValue);\n      this.pause();\n      this.trigger('complete');\n    }\n  };\n\n  AnimationItem.prototype.adjustSegment = function (arr, offset) {\n    this.playCount = 0;\n\n    if (arr[1] < arr[0]) {\n      if (this.frameModifier > 0) {\n        if (this.playSpeed < 0) {\n          this.setSpeed(-this.playSpeed);\n        } else {\n          this.setDirection(-1);\n        }\n      }\n\n      this.totalFrames = arr[0] - arr[1];\n      this.timeCompleted = this.totalFrames;\n      this.firstFrame = arr[1];\n      this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n    } else if (arr[1] > arr[0]) {\n      if (this.frameModifier < 0) {\n        if (this.playSpeed < 0) {\n          this.setSpeed(-this.playSpeed);\n        } else {\n          this.setDirection(1);\n        }\n      }\n\n      this.totalFrames = arr[1] - arr[0];\n      this.timeCompleted = this.totalFrames;\n      this.firstFrame = arr[0];\n      this.setCurrentRawFrameValue(0.001 + offset);\n    }\n\n    this.trigger('segmentStart');\n  };\n\n  AnimationItem.prototype.setSegment = function (init, end) {\n    var pendingFrame = -1;\n\n    if (this.isPaused) {\n      if (this.currentRawFrame + this.firstFrame < init) {\n        pendingFrame = init;\n      } else if (this.currentRawFrame + this.firstFrame > end) {\n        pendingFrame = end - init;\n      }\n    }\n\n    this.firstFrame = init;\n    this.totalFrames = end - init;\n    this.timeCompleted = this.totalFrames;\n\n    if (pendingFrame !== -1) {\n      this.goToAndStop(pendingFrame, true);\n    }\n  };\n\n  AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n    if (forceFlag) {\n      this.segments.length = 0;\n    }\n\n    if (_typeof$4(arr[0]) === 'object') {\n      var i;\n      var len = arr.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.segments.push(arr[i]);\n      }\n    } else {\n      this.segments.push(arr);\n    }\n\n    if (this.segments.length && forceFlag) {\n      this.adjustSegment(this.segments.shift(), 0);\n    }\n\n    if (this.isPaused) {\n      this.play();\n    }\n  };\n\n  AnimationItem.prototype.resetSegments = function (forceFlag) {\n    this.segments.length = 0;\n    this.segments.push([this.animationData.ip, this.animationData.op]);\n\n    if (forceFlag) {\n      this.checkSegments(0);\n    }\n  };\n\n  AnimationItem.prototype.checkSegments = function (offset) {\n    if (this.segments.length) {\n      this.adjustSegment(this.segments.shift(), offset);\n      return true;\n    }\n\n    return false;\n  };\n\n  AnimationItem.prototype.destroy = function (name) {\n    if (name && this.name !== name || !this.renderer) {\n      return;\n    }\n\n    this.renderer.destroy();\n    this.imagePreloader.destroy();\n    this.trigger('destroy');\n    this._cbs = null;\n    this.onEnterFrame = null;\n    this.onLoopComplete = null;\n    this.onComplete = null;\n    this.onSegmentStart = null;\n    this.onDestroy = null;\n    this.renderer = null;\n    this.expressionsPlugin = null;\n    this.imagePreloader = null;\n    this.projectInterface = null;\n  };\n\n  AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n    this.currentRawFrame = value;\n    this.gotoFrame();\n  };\n\n  AnimationItem.prototype.setSpeed = function (val) {\n    this.playSpeed = val;\n    this.updaFrameModifier();\n  };\n\n  AnimationItem.prototype.setDirection = function (val) {\n    this.playDirection = val < 0 ? -1 : 1;\n    this.updaFrameModifier();\n  };\n\n  AnimationItem.prototype.setLoop = function (isLooping) {\n    this.loop = isLooping;\n  };\n\n  AnimationItem.prototype.setVolume = function (val, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.audioController.setVolume(val);\n  };\n\n  AnimationItem.prototype.getVolume = function () {\n    return this.audioController.getVolume();\n  };\n\n  AnimationItem.prototype.mute = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.audioController.mute();\n  };\n\n  AnimationItem.prototype.unmute = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.audioController.unmute();\n  };\n\n  AnimationItem.prototype.updaFrameModifier = function () {\n    this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n    this.audioController.setRate(this.playSpeed * this.playDirection);\n  };\n\n  AnimationItem.prototype.getPath = function () {\n    return this.path;\n  };\n\n  AnimationItem.prototype.getAssetsPath = function (assetData) {\n    var path = '';\n\n    if (assetData.e) {\n      path = assetData.p;\n    } else if (this.assetsPath) {\n      var imagePath = assetData.p;\n\n      if (imagePath.indexOf('images/') !== -1) {\n        imagePath = imagePath.split('/')[1];\n      }\n\n      path = this.assetsPath + imagePath;\n    } else {\n      path = this.path;\n      path += assetData.u ? assetData.u : '';\n      path += assetData.p;\n    }\n\n    return path;\n  };\n\n  AnimationItem.prototype.getAssetData = function (id) {\n    var i = 0;\n    var len = this.assets.length;\n\n    while (i < len) {\n      if (id === this.assets[i].id) {\n        return this.assets[i];\n      }\n\n      i += 1;\n    }\n\n    return null;\n  };\n\n  AnimationItem.prototype.hide = function () {\n    this.renderer.hide();\n  };\n\n  AnimationItem.prototype.show = function () {\n    this.renderer.show();\n  };\n\n  AnimationItem.prototype.getDuration = function (isFrame) {\n    return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n  };\n\n  AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n    try {\n      var element = this.renderer.getElementByPath(path);\n      element.updateDocumentData(documentData, index);\n    } catch (error) {// TODO: decide how to handle catch case\n    }\n  };\n\n  AnimationItem.prototype.trigger = function (name) {\n    if (this._cbs && this._cbs[name]) {\n      switch (name) {\n        case 'enterFrame':\n          this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n          break;\n\n        case 'drawnFrame':\n          this.drawnFrameEvent.currentTime = this.currentFrame;\n          this.drawnFrameEvent.totalTime = this.totalFrames;\n          this.drawnFrameEvent.direction = this.frameModifier;\n          this.triggerEvent(name, this.drawnFrameEvent);\n          break;\n\n        case 'loopComplete':\n          this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n          break;\n\n        case 'complete':\n          this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n          break;\n\n        case 'segmentStart':\n          this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n          break;\n\n        case 'destroy':\n          this.triggerEvent(name, new BMDestroyEvent(name, this));\n          break;\n\n        default:\n          this.triggerEvent(name);\n      }\n    }\n\n    if (name === 'enterFrame' && this.onEnterFrame) {\n      this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n    }\n\n    if (name === 'loopComplete' && this.onLoopComplete) {\n      this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n    }\n\n    if (name === 'complete' && this.onComplete) {\n      this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n    }\n\n    if (name === 'segmentStart' && this.onSegmentStart) {\n      this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n    }\n\n    if (name === 'destroy' && this.onDestroy) {\n      this.onDestroy.call(this, new BMDestroyEvent(name, this));\n    }\n  };\n\n  AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n    var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n    this.triggerEvent('error', error);\n\n    if (this.onError) {\n      this.onError.call(this, error);\n    }\n  };\n\n  AnimationItem.prototype.triggerConfigError = function (nativeError) {\n    var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n    this.triggerEvent('error', error);\n\n    if (this.onError) {\n      this.onError.call(this, error);\n    }\n  };\n\n  var animationManager = function () {\n    var moduleOb = {};\n    var registeredAnimations = [];\n    var initTime = 0;\n    var len = 0;\n    var playingAnimationsNum = 0;\n    var _stopped = true;\n    var _isFrozen = false;\n\n    function removeElement(ev) {\n      var i = 0;\n      var animItem = ev.target;\n\n      while (i < len) {\n        if (registeredAnimations[i].animation === animItem) {\n          registeredAnimations.splice(i, 1);\n          i -= 1;\n          len -= 1;\n\n          if (!animItem.isPaused) {\n            subtractPlayingCount();\n          }\n        }\n\n        i += 1;\n      }\n    }\n\n    function registerAnimation(element, animationData) {\n      if (!element) {\n        return null;\n      }\n\n      var i = 0;\n\n      while (i < len) {\n        if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n          return registeredAnimations[i].animation;\n        }\n\n        i += 1;\n      }\n\n      var animItem = new AnimationItem();\n      setupAnimation(animItem, element);\n      animItem.setData(element, animationData);\n      return animItem;\n    }\n\n    function getRegisteredAnimations() {\n      var i;\n      var lenAnims = registeredAnimations.length;\n      var animations = [];\n\n      for (i = 0; i < lenAnims; i += 1) {\n        animations.push(registeredAnimations[i].animation);\n      }\n\n      return animations;\n    }\n\n    function addPlayingCount() {\n      playingAnimationsNum += 1;\n      activate();\n    }\n\n    function subtractPlayingCount() {\n      playingAnimationsNum -= 1;\n    }\n\n    function setupAnimation(animItem, element) {\n      animItem.addEventListener('destroy', removeElement);\n      animItem.addEventListener('_active', addPlayingCount);\n      animItem.addEventListener('_idle', subtractPlayingCount);\n      registeredAnimations.push({\n        elem: element,\n        animation: animItem\n      });\n      len += 1;\n    }\n\n    function loadAnimation(params) {\n      var animItem = new AnimationItem();\n      setupAnimation(animItem, null);\n      animItem.setParams(params);\n      return animItem;\n    }\n\n    function setSpeed(val, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setSpeed(val, animation);\n      }\n    }\n\n    function setDirection(val, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setDirection(val, animation);\n      }\n    }\n\n    function play(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.play(animation);\n      }\n    }\n\n    function resume(nowTime) {\n      var elapsedTime = nowTime - initTime;\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.advanceTime(elapsedTime);\n      }\n\n      initTime = nowTime;\n\n      if (playingAnimationsNum && !_isFrozen) {\n        window.requestAnimationFrame(resume);\n      } else {\n        _stopped = true;\n      }\n    }\n\n    function first(nowTime) {\n      initTime = nowTime;\n      window.requestAnimationFrame(resume);\n    }\n\n    function pause(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.pause(animation);\n      }\n    }\n\n    function goToAndStop(value, isFrame, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n      }\n    }\n\n    function stop(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.stop(animation);\n      }\n    }\n\n    function togglePause(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.togglePause(animation);\n      }\n    }\n\n    function destroy(animation) {\n      var i;\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        registeredAnimations[i].animation.destroy(animation);\n      }\n    }\n\n    function searchAnimations(animationData, standalone, renderer) {\n      var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n      var i;\n      var lenAnims = animElements.length;\n\n      for (i = 0; i < lenAnims; i += 1) {\n        if (renderer) {\n          animElements[i].setAttribute('data-bm-type', renderer);\n        }\n\n        registerAnimation(animElements[i], animationData);\n      }\n\n      if (standalone && lenAnims === 0) {\n        if (!renderer) {\n          renderer = 'svg';\n        }\n\n        var body = document.getElementsByTagName('body')[0];\n        body.innerText = '';\n        var div = createTag('div');\n        div.style.width = '100%';\n        div.style.height = '100%';\n        div.setAttribute('data-bm-type', renderer);\n        body.appendChild(div);\n        registerAnimation(div, animationData);\n      }\n    }\n\n    function resize() {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.resize();\n      }\n    }\n\n    function activate() {\n      if (!_isFrozen && playingAnimationsNum) {\n        if (_stopped) {\n          window.requestAnimationFrame(first);\n          _stopped = false;\n        }\n      }\n    }\n\n    function freeze() {\n      _isFrozen = true;\n    }\n\n    function unfreeze() {\n      _isFrozen = false;\n      activate();\n    }\n\n    function setVolume(val, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setVolume(val, animation);\n      }\n    }\n\n    function mute(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.mute(animation);\n      }\n    }\n\n    function unmute(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.unmute(animation);\n      }\n    }\n\n    moduleOb.registerAnimation = registerAnimation;\n    moduleOb.loadAnimation = loadAnimation;\n    moduleOb.setSpeed = setSpeed;\n    moduleOb.setDirection = setDirection;\n    moduleOb.play = play;\n    moduleOb.pause = pause;\n    moduleOb.stop = stop;\n    moduleOb.togglePause = togglePause;\n    moduleOb.searchAnimations = searchAnimations;\n    moduleOb.resize = resize; // moduleOb.start = start;\n\n    moduleOb.goToAndStop = goToAndStop;\n    moduleOb.destroy = destroy;\n    moduleOb.freeze = freeze;\n    moduleOb.unfreeze = unfreeze;\n    moduleOb.setVolume = setVolume;\n    moduleOb.mute = mute;\n    moduleOb.unmute = unmute;\n    moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n    return moduleOb;\n  }();\n\n  /* eslint-disable */\n  var BezierFactory = function () {\n    /**\r\n       * BezierEasing - use bezier curve for transition easing function\r\n       * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n       *\r\n       * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n       * Usage:\r\n       * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n       * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n       *\r\n       */\n    var ob = {};\n    ob.getBezierEasing = getBezierEasing;\n    var beziers = {};\n\n    function getBezierEasing(a, b, c, d, nm) {\n      var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n      if (beziers[str]) {\n        return beziers[str];\n      }\n\n      var bezEasing = new BezierEasing([a, b, c, d]);\n      beziers[str] = bezEasing;\n      return bezEasing;\n    } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n    var NEWTON_ITERATIONS = 4;\n    var NEWTON_MIN_SLOPE = 0.001;\n    var SUBDIVISION_PRECISION = 0.0000001;\n    var SUBDIVISION_MAX_ITERATIONS = 10;\n    var kSplineTableSize = 11;\n    var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n    var float32ArraySupported = typeof Float32Array === 'function';\n\n    function A(aA1, aA2) {\n      return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n    }\n\n    function B(aA1, aA2) {\n      return 3.0 * aA2 - 6.0 * aA1;\n    }\n\n    function C(aA1) {\n      return 3.0 * aA1;\n    } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n    function calcBezier(aT, aA1, aA2) {\n      return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n    } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n    function getSlope(aT, aA1, aA2) {\n      return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n    }\n\n    function binarySubdivide(aX, aA, aB, mX1, mX2) {\n      var currentX,\n          currentT,\n          i = 0;\n\n      do {\n        currentT = aA + (aB - aA) / 2.0;\n        currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n        if (currentX > 0.0) {\n          aB = currentT;\n        } else {\n          aA = currentT;\n        }\n      } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n      return currentT;\n    }\n\n    function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n      for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n        var currentSlope = getSlope(aGuessT, mX1, mX2);\n        if (currentSlope === 0.0) return aGuessT;\n        var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n        aGuessT -= currentX / currentSlope;\n      }\n\n      return aGuessT;\n    }\n    /**\r\n       * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n       */\n\n\n    function BezierEasing(points) {\n      this._p = points;\n      this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n      this._precomputed = false;\n      this.get = this.get.bind(this);\n    }\n\n    BezierEasing.prototype = {\n      get: function get(x) {\n        var mX1 = this._p[0],\n            mY1 = this._p[1],\n            mX2 = this._p[2],\n            mY2 = this._p[3];\n        if (!this._precomputed) this._precompute();\n        if (mX1 === mY1 && mX2 === mY2) return x; // linear\n        // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n        if (x === 0) return 0;\n        if (x === 1) return 1;\n        return calcBezier(this._getTForX(x), mY1, mY2);\n      },\n      // Private part\n      _precompute: function _precompute() {\n        var mX1 = this._p[0],\n            mY1 = this._p[1],\n            mX2 = this._p[2],\n            mY2 = this._p[3];\n        this._precomputed = true;\n\n        if (mX1 !== mY1 || mX2 !== mY2) {\n          this._calcSampleValues();\n        }\n      },\n      _calcSampleValues: function _calcSampleValues() {\n        var mX1 = this._p[0],\n            mX2 = this._p[2];\n\n        for (var i = 0; i < kSplineTableSize; ++i) {\n          this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n        }\n      },\n\n      /**\r\n           * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n           */\n      _getTForX: function _getTForX(aX) {\n        var mX1 = this._p[0],\n            mX2 = this._p[2],\n            mSampleValues = this._mSampleValues;\n        var intervalStart = 0.0;\n        var currentSample = 1;\n        var lastSample = kSplineTableSize - 1;\n\n        for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n          intervalStart += kSampleStepSize;\n        }\n\n        --currentSample; // Interpolate to provide an initial guess for t\n\n        var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n        var guessForT = intervalStart + dist * kSampleStepSize;\n        var initialSlope = getSlope(guessForT, mX1, mX2);\n\n        if (initialSlope >= NEWTON_MIN_SLOPE) {\n          return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n        }\n\n        if (initialSlope === 0.0) {\n          return guessForT;\n        }\n\n        return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n      }\n    };\n    return ob;\n  }();\n\n  var pooling = function () {\n    function _double(arr) {\n      return arr.concat(createSizedArray(arr.length));\n    }\n\n    return {\n      \"double\": _double\n    };\n  }();\n\n  var poolFactory = function () {\n    return function (initialLength, _create, _release) {\n      var _length = 0;\n      var _maxLength = initialLength;\n      var pool = createSizedArray(_maxLength);\n      var ob = {\n        newElement: newElement,\n        release: release\n      };\n\n      function newElement() {\n        var element;\n\n        if (_length) {\n          _length -= 1;\n          element = pool[_length];\n        } else {\n          element = _create();\n        }\n\n        return element;\n      }\n\n      function release(element) {\n        if (_length === _maxLength) {\n          pool = pooling[\"double\"](pool);\n          _maxLength *= 2;\n        }\n\n        if (_release) {\n          _release(element);\n        }\n\n        pool[_length] = element;\n        _length += 1;\n      }\n\n      return ob;\n    };\n  }();\n\n  var bezierLengthPool = function () {\n    function create() {\n      return {\n        addedLength: 0,\n        percents: createTypedArray('float32', getDefaultCurveSegments()),\n        lengths: createTypedArray('float32', getDefaultCurveSegments())\n      };\n    }\n\n    return poolFactory(8, create);\n  }();\n\n  var segmentsLengthPool = function () {\n    function create() {\n      return {\n        lengths: [],\n        totalLength: 0\n      };\n    }\n\n    function release(element) {\n      var i;\n      var len = element.lengths.length;\n\n      for (i = 0; i < len; i += 1) {\n        bezierLengthPool.release(element.lengths[i]);\n      }\n\n      element.lengths.length = 0;\n    }\n\n    return poolFactory(8, create, release);\n  }();\n\n  function bezFunction() {\n    var math = Math;\n\n    function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n      var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n      return det1 > -0.001 && det1 < 0.001;\n    }\n\n    function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n      if (z1 === 0 && z2 === 0 && z3 === 0) {\n        return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n      }\n\n      var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n      var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n      var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n      var diffDist;\n\n      if (dist1 > dist2) {\n        if (dist1 > dist3) {\n          diffDist = dist1 - dist2 - dist3;\n        } else {\n          diffDist = dist3 - dist2 - dist1;\n        }\n      } else if (dist3 > dist2) {\n        diffDist = dist3 - dist2 - dist1;\n      } else {\n        diffDist = dist2 - dist1 - dist3;\n      }\n\n      return diffDist > -0.0001 && diffDist < 0.0001;\n    }\n\n    var getBezierLength = function () {\n      return function (pt1, pt2, pt3, pt4) {\n        var curveSegments = getDefaultCurveSegments();\n        var k;\n        var i;\n        var len;\n        var ptCoord;\n        var perc;\n        var addedLength = 0;\n        var ptDistance;\n        var point = [];\n        var lastPoint = [];\n        var lengthData = bezierLengthPool.newElement();\n        len = pt3.length;\n\n        for (k = 0; k < curveSegments; k += 1) {\n          perc = k / (curveSegments - 1);\n          ptDistance = 0;\n\n          for (i = 0; i < len; i += 1) {\n            ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n            point[i] = ptCoord;\n\n            if (lastPoint[i] !== null) {\n              ptDistance += bmPow(point[i] - lastPoint[i], 2);\n            }\n\n            lastPoint[i] = point[i];\n          }\n\n          if (ptDistance) {\n            ptDistance = bmSqrt(ptDistance);\n            addedLength += ptDistance;\n          }\n\n          lengthData.percents[k] = perc;\n          lengthData.lengths[k] = addedLength;\n        }\n\n        lengthData.addedLength = addedLength;\n        return lengthData;\n      };\n    }();\n\n    function getSegmentsLength(shapeData) {\n      var segmentsLength = segmentsLengthPool.newElement();\n      var closed = shapeData.c;\n      var pathV = shapeData.v;\n      var pathO = shapeData.o;\n      var pathI = shapeData.i;\n      var i;\n      var len = shapeData._length;\n      var lengths = segmentsLength.lengths;\n      var totalLength = 0;\n\n      for (i = 0; i < len - 1; i += 1) {\n        lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n        totalLength += lengths[i].addedLength;\n      }\n\n      if (closed && len) {\n        lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n        totalLength += lengths[i].addedLength;\n      }\n\n      segmentsLength.totalLength = totalLength;\n      return segmentsLength;\n    }\n\n    function BezierData(length) {\n      this.segmentLength = 0;\n      this.points = new Array(length);\n    }\n\n    function PointData(partial, point) {\n      this.partialLength = partial;\n      this.point = point;\n    }\n\n    var buildBezierData = function () {\n      var storedData = {};\n      return function (pt1, pt2, pt3, pt4) {\n        var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n        if (!storedData[bezierName]) {\n          var curveSegments = getDefaultCurveSegments();\n          var k;\n          var i;\n          var len;\n          var ptCoord;\n          var perc;\n          var addedLength = 0;\n          var ptDistance;\n          var point;\n          var lastPoint = null;\n\n          if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n            curveSegments = 2;\n          }\n\n          var bezierData = new BezierData(curveSegments);\n          len = pt3.length;\n\n          for (k = 0; k < curveSegments; k += 1) {\n            point = createSizedArray(len);\n            perc = k / (curveSegments - 1);\n            ptDistance = 0;\n\n            for (i = 0; i < len; i += 1) {\n              ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n              point[i] = ptCoord;\n\n              if (lastPoint !== null) {\n                ptDistance += bmPow(point[i] - lastPoint[i], 2);\n              }\n            }\n\n            ptDistance = bmSqrt(ptDistance);\n            addedLength += ptDistance;\n            bezierData.points[k] = new PointData(ptDistance, point);\n            lastPoint = point;\n          }\n\n          bezierData.segmentLength = addedLength;\n          storedData[bezierName] = bezierData;\n        }\n\n        return storedData[bezierName];\n      };\n    }();\n\n    function getDistancePerc(perc, bezierData) {\n      var percents = bezierData.percents;\n      var lengths = bezierData.lengths;\n      var len = percents.length;\n      var initPos = bmFloor((len - 1) * perc);\n      var lengthPos = perc * bezierData.addedLength;\n      var lPerc = 0;\n\n      if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n        return percents[initPos];\n      }\n\n      var dir = lengths[initPos] > lengthPos ? -1 : 1;\n      var flag = true;\n\n      while (flag) {\n        if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n          lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n          flag = false;\n        } else {\n          initPos += dir;\n        }\n\n        if (initPos < 0 || initPos >= len - 1) {\n          // FIX for TypedArrays that don't store floating point values with enough accuracy\n          if (initPos === len - 1) {\n            return percents[initPos];\n          }\n\n          flag = false;\n        }\n      }\n\n      return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n    }\n\n    function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n      var t1 = getDistancePerc(percent, bezierData);\n      var u1 = 1 - t1;\n      var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n      var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n      return [ptX, ptY];\n    }\n\n    var bezierSegmentPoints = createTypedArray('float32', 8);\n\n    function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n      if (startPerc < 0) {\n        startPerc = 0;\n      } else if (startPerc > 1) {\n        startPerc = 1;\n      }\n\n      var t0 = getDistancePerc(startPerc, bezierData);\n      endPerc = endPerc > 1 ? 1 : endPerc;\n      var t1 = getDistancePerc(endPerc, bezierData);\n      var i;\n      var len = pt1.length;\n      var u0 = 1 - t0;\n      var u1 = 1 - t1;\n      var u0u0u0 = u0 * u0 * u0;\n      var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n      var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n      var t0t0t0 = t0 * t0 * t0; //\n\n      var u0u0u1 = u0 * u0 * u1;\n      var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n      var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n      var t0t0t1 = t0 * t0 * t1; //\n\n      var u0u1u1 = u0 * u1 * u1;\n      var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n      var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n      var t0t1t1 = t0 * t1 * t1; //\n\n      var u1u1u1 = u1 * u1 * u1;\n      var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n      var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n      var t1t1t1 = t1 * t1 * t1;\n\n      for (i = 0; i < len; i += 1) {\n        bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n        bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n        bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n        bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n      }\n\n      return bezierSegmentPoints;\n    }\n\n    return {\n      getSegmentsLength: getSegmentsLength,\n      getNewSegment: getNewSegment,\n      getPointInSegment: getPointInSegment,\n      buildBezierData: buildBezierData,\n      pointOnLine2D: pointOnLine2D,\n      pointOnLine3D: pointOnLine3D\n    };\n  }\n\n  var bez = bezFunction();\n\n  var initFrame = initialDefaultFrame;\n  var mathAbs = Math.abs;\n\n  function interpolateValue(frameNum, caching) {\n    var offsetTime = this.offsetTime;\n    var newValue;\n\n    if (this.propType === 'multidimensional') {\n      newValue = createTypedArray('float32', this.pv.length);\n    }\n\n    var iterationIndex = caching.lastIndex;\n    var i = iterationIndex;\n    var len = this.keyframes.length - 1;\n    var flag = true;\n    var keyData;\n    var nextKeyData;\n    var keyframeMetadata;\n\n    while (flag) {\n      keyData = this.keyframes[i];\n      nextKeyData = this.keyframes[i + 1];\n\n      if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n        if (keyData.h) {\n          keyData = nextKeyData;\n        }\n\n        iterationIndex = 0;\n        break;\n      }\n\n      if (nextKeyData.t - offsetTime > frameNum) {\n        iterationIndex = i;\n        break;\n      }\n\n      if (i < len - 1) {\n        i += 1;\n      } else {\n        iterationIndex = 0;\n        flag = false;\n      }\n    }\n\n    keyframeMetadata = this.keyframesMetadata[i] || {};\n    var k;\n    var kLen;\n    var perc;\n    var jLen;\n    var j;\n    var fnc;\n    var nextKeyTime = nextKeyData.t - offsetTime;\n    var keyTime = keyData.t - offsetTime;\n    var endValue;\n\n    if (keyData.to) {\n      if (!keyframeMetadata.bezierData) {\n        keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n      }\n\n      var bezierData = keyframeMetadata.bezierData;\n\n      if (frameNum >= nextKeyTime || frameNum < keyTime) {\n        var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n        kLen = bezierData.points[ind].point.length;\n\n        for (k = 0; k < kLen; k += 1) {\n          newValue[k] = bezierData.points[ind].point[k];\n        } // caching._lastKeyframeIndex = -1;\n\n      } else {\n        if (keyframeMetadata.__fnct) {\n          fnc = keyframeMetadata.__fnct;\n        } else {\n          fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n          keyframeMetadata.__fnct = fnc;\n        }\n\n        perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n        var distanceInLine = bezierData.segmentLength * perc;\n        var segmentPerc;\n        var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n        j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n        flag = true;\n        jLen = bezierData.points.length;\n\n        while (flag) {\n          addedLength += bezierData.points[j].partialLength;\n\n          if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n            kLen = bezierData.points[j].point.length;\n\n            for (k = 0; k < kLen; k += 1) {\n              newValue[k] = bezierData.points[j].point[k];\n            }\n\n            break;\n          } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n            segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n            kLen = bezierData.points[j].point.length;\n\n            for (k = 0; k < kLen; k += 1) {\n              newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n            }\n\n            break;\n          }\n\n          if (j < jLen - 1) {\n            j += 1;\n          } else {\n            flag = false;\n          }\n        }\n\n        caching._lastPoint = j;\n        caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n        caching._lastKeyframeIndex = i;\n      }\n    } else {\n      var outX;\n      var outY;\n      var inX;\n      var inY;\n      var keyValue;\n      len = keyData.s.length;\n      endValue = nextKeyData.s || keyData.e;\n\n      if (this.sh && keyData.h !== 1) {\n        if (frameNum >= nextKeyTime) {\n          newValue[0] = endValue[0];\n          newValue[1] = endValue[1];\n          newValue[2] = endValue[2];\n        } else if (frameNum <= keyTime) {\n          newValue[0] = keyData.s[0];\n          newValue[1] = keyData.s[1];\n          newValue[2] = keyData.s[2];\n        } else {\n          var quatStart = createQuaternion(keyData.s);\n          var quatEnd = createQuaternion(endValue);\n          var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n          quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n        }\n      } else {\n        for (i = 0; i < len; i += 1) {\n          if (keyData.h !== 1) {\n            if (frameNum >= nextKeyTime) {\n              perc = 1;\n            } else if (frameNum < keyTime) {\n              perc = 0;\n            } else {\n              if (keyData.o.x.constructor === Array) {\n                if (!keyframeMetadata.__fnct) {\n                  keyframeMetadata.__fnct = [];\n                }\n\n                if (!keyframeMetadata.__fnct[i]) {\n                  outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n                  outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n                  inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n                  inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n                  fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n                  keyframeMetadata.__fnct[i] = fnc;\n                } else {\n                  fnc = keyframeMetadata.__fnct[i];\n                }\n              } else if (!keyframeMetadata.__fnct) {\n                outX = keyData.o.x;\n                outY = keyData.o.y;\n                inX = keyData.i.x;\n                inY = keyData.i.y;\n                fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n                keyData.keyframeMetadata = fnc;\n              } else {\n                fnc = keyframeMetadata.__fnct;\n              }\n\n              perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n            }\n          }\n\n          endValue = nextKeyData.s || keyData.e;\n          keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n          if (this.propType === 'multidimensional') {\n            newValue[i] = keyValue;\n          } else {\n            newValue = keyValue;\n          }\n        }\n      }\n    }\n\n    caching.lastIndex = iterationIndex;\n    return newValue;\n  } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n  function slerp(a, b, t) {\n    var out = [];\n    var ax = a[0];\n    var ay = a[1];\n    var az = a[2];\n    var aw = a[3];\n    var bx = b[0];\n    var by = b[1];\n    var bz = b[2];\n    var bw = b[3];\n    var omega;\n    var cosom;\n    var sinom;\n    var scale0;\n    var scale1;\n    cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n    if (cosom < 0.0) {\n      cosom = -cosom;\n      bx = -bx;\n      by = -by;\n      bz = -bz;\n      bw = -bw;\n    }\n\n    if (1.0 - cosom > 0.000001) {\n      omega = Math.acos(cosom);\n      sinom = Math.sin(omega);\n      scale0 = Math.sin((1.0 - t) * omega) / sinom;\n      scale1 = Math.sin(t * omega) / sinom;\n    } else {\n      scale0 = 1.0 - t;\n      scale1 = t;\n    }\n\n    out[0] = scale0 * ax + scale1 * bx;\n    out[1] = scale0 * ay + scale1 * by;\n    out[2] = scale0 * az + scale1 * bz;\n    out[3] = scale0 * aw + scale1 * bw;\n    return out;\n  }\n\n  function quaternionToEuler(out, quat) {\n    var qx = quat[0];\n    var qy = quat[1];\n    var qz = quat[2];\n    var qw = quat[3];\n    var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n    var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n    var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n    out[0] = heading / degToRads;\n    out[1] = attitude / degToRads;\n    out[2] = bank / degToRads;\n  }\n\n  function createQuaternion(values) {\n    var heading = values[0] * degToRads;\n    var attitude = values[1] * degToRads;\n    var bank = values[2] * degToRads;\n    var c1 = Math.cos(heading / 2);\n    var c2 = Math.cos(attitude / 2);\n    var c3 = Math.cos(bank / 2);\n    var s1 = Math.sin(heading / 2);\n    var s2 = Math.sin(attitude / 2);\n    var s3 = Math.sin(bank / 2);\n    var w = c1 * c2 * c3 - s1 * s2 * s3;\n    var x = s1 * s2 * c3 + c1 * c2 * s3;\n    var y = s1 * c2 * c3 + c1 * s2 * s3;\n    var z = c1 * s2 * c3 - s1 * c2 * s3;\n    return [x, y, z, w];\n  }\n\n  function getValueAtCurrentTime() {\n    var frameNum = this.comp.renderedFrame - this.offsetTime;\n    var initTime = this.keyframes[0].t - this.offsetTime;\n    var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n    if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n      if (this._caching.lastFrame >= frameNum) {\n        this._caching._lastKeyframeIndex = -1;\n        this._caching.lastIndex = 0;\n      }\n\n      var renderResult = this.interpolateValue(frameNum, this._caching);\n      this.pv = renderResult;\n    }\n\n    this._caching.lastFrame = frameNum;\n    return this.pv;\n  }\n\n  function setVValue(val) {\n    var multipliedValue;\n\n    if (this.propType === 'unidimensional') {\n      multipliedValue = val * this.mult;\n\n      if (mathAbs(this.v - multipliedValue) > 0.00001) {\n        this.v = multipliedValue;\n        this._mdf = true;\n      }\n    } else {\n      var i = 0;\n      var len = this.v.length;\n\n      while (i < len) {\n        multipliedValue = val[i] * this.mult;\n\n        if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n          this.v[i] = multipliedValue;\n          this._mdf = true;\n        }\n\n        i += 1;\n      }\n    }\n  }\n\n  function processEffectsSequence() {\n    if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n      return;\n    }\n\n    if (this.lock) {\n      this.setVValue(this.pv);\n      return;\n    }\n\n    this.lock = true;\n    this._mdf = this._isFirstFrame;\n    var i;\n    var len = this.effectsSequence.length;\n    var finalValue = this.kf ? this.pv : this.data.k;\n\n    for (i = 0; i < len; i += 1) {\n      finalValue = this.effectsSequence[i](finalValue);\n    }\n\n    this.setVValue(finalValue);\n    this._isFirstFrame = false;\n    this.lock = false;\n    this.frameId = this.elem.globalData.frameId;\n  }\n\n  function addEffect(effectFunction) {\n    this.effectsSequence.push(effectFunction);\n    this.container.addDynamicProperty(this);\n  }\n\n  function ValueProperty(elem, data, mult, container) {\n    this.propType = 'unidimensional';\n    this.mult = mult || 1;\n    this.data = data;\n    this.v = mult ? data.k * mult : data.k;\n    this.pv = data.k;\n    this._mdf = false;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.k = false;\n    this.kf = false;\n    this.vel = 0;\n    this.effectsSequence = [];\n    this._isFirstFrame = true;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.addEffect = addEffect;\n  }\n\n  function MultiDimensionalProperty(elem, data, mult, container) {\n    this.propType = 'multidimensional';\n    this.mult = mult || 1;\n    this.data = data;\n    this._mdf = false;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.k = false;\n    this.kf = false;\n    this.frameId = -1;\n    var i;\n    var len = data.k.length;\n    this.v = createTypedArray('float32', len);\n    this.pv = createTypedArray('float32', len);\n    this.vel = createTypedArray('float32', len);\n\n    for (i = 0; i < len; i += 1) {\n      this.v[i] = data.k[i] * this.mult;\n      this.pv[i] = data.k[i];\n    }\n\n    this._isFirstFrame = true;\n    this.effectsSequence = [];\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.addEffect = addEffect;\n  }\n\n  function KeyframedValueProperty(elem, data, mult, container) {\n    this.propType = 'unidimensional';\n    this.keyframes = data.k;\n    this.keyframesMetadata = [];\n    this.offsetTime = elem.data.st;\n    this.frameId = -1;\n    this._caching = {\n      lastFrame: initFrame,\n      lastIndex: 0,\n      value: 0,\n      _lastKeyframeIndex: -1\n    };\n    this.k = true;\n    this.kf = true;\n    this.data = data;\n    this.mult = mult || 1;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.v = initFrame;\n    this.pv = initFrame;\n    this._isFirstFrame = true;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.interpolateValue = interpolateValue;\n    this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n    this.addEffect = addEffect;\n  }\n\n  function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n    this.propType = 'multidimensional';\n    var i;\n    var len = data.k.length;\n    var s;\n    var e;\n    var to;\n    var ti;\n\n    for (i = 0; i < len - 1; i += 1) {\n      if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n        s = data.k[i].s;\n        e = data.k[i + 1].s;\n        to = data.k[i].to;\n        ti = data.k[i].ti;\n\n        if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n          data.k[i].to = null;\n          data.k[i].ti = null;\n        }\n\n        if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n          if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n            data.k[i].to = null;\n            data.k[i].ti = null;\n          }\n        }\n      }\n    }\n\n    this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n    this.data = data;\n    this.keyframes = data.k;\n    this.keyframesMetadata = [];\n    this.offsetTime = elem.data.st;\n    this.k = true;\n    this.kf = true;\n    this._isFirstFrame = true;\n    this.mult = mult || 1;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.interpolateValue = interpolateValue;\n    this.frameId = -1;\n    var arrLen = data.k[0].s.length;\n    this.v = createTypedArray('float32', arrLen);\n    this.pv = createTypedArray('float32', arrLen);\n\n    for (i = 0; i < arrLen; i += 1) {\n      this.v[i] = initFrame;\n      this.pv[i] = initFrame;\n    }\n\n    this._caching = {\n      lastFrame: initFrame,\n      lastIndex: 0,\n      value: createTypedArray('float32', arrLen)\n    };\n    this.addEffect = addEffect;\n  }\n\n  var PropertyFactory = function () {\n    function getProp(elem, data, type, mult, container) {\n      if (data.sid) {\n        data = elem.globalData.slotManager.getProp(data);\n      }\n\n      var p;\n\n      if (!data.k.length) {\n        p = new ValueProperty(elem, data, mult, container);\n      } else if (typeof data.k[0] === 'number') {\n        p = new MultiDimensionalProperty(elem, data, mult, container);\n      } else {\n        switch (type) {\n          case 0:\n            p = new KeyframedValueProperty(elem, data, mult, container);\n            break;\n\n          case 1:\n            p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n            break;\n\n          default:\n            break;\n        }\n      }\n\n      if (p.effectsSequence.length) {\n        container.addDynamicProperty(p);\n      }\n\n      return p;\n    }\n\n    var ob = {\n      getProp: getProp\n    };\n    return ob;\n  }();\n\n  function DynamicPropertyContainer() {}\n\n  DynamicPropertyContainer.prototype = {\n    addDynamicProperty: function addDynamicProperty(prop) {\n      if (this.dynamicProperties.indexOf(prop) === -1) {\n        this.dynamicProperties.push(prop);\n        this.container.addDynamicProperty(this);\n        this._isAnimated = true;\n      }\n    },\n    iterateDynamicProperties: function iterateDynamicProperties() {\n      this._mdf = false;\n      var i;\n      var len = this.dynamicProperties.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.dynamicProperties[i].getValue();\n\n        if (this.dynamicProperties[i]._mdf) {\n          this._mdf = true;\n        }\n      }\n    },\n    initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n      this.container = container;\n      this.dynamicProperties = [];\n      this._mdf = false;\n      this._isAnimated = false;\n    }\n  };\n\n  var pointPool = function () {\n    function create() {\n      return createTypedArray('float32', 2);\n    }\n\n    return poolFactory(8, create);\n  }();\n\n  function ShapePath() {\n    this.c = false;\n    this._length = 0;\n    this._maxLength = 8;\n    this.v = createSizedArray(this._maxLength);\n    this.o = createSizedArray(this._maxLength);\n    this.i = createSizedArray(this._maxLength);\n  }\n\n  ShapePath.prototype.setPathData = function (closed, len) {\n    this.c = closed;\n    this.setLength(len);\n    var i = 0;\n\n    while (i < len) {\n      this.v[i] = pointPool.newElement();\n      this.o[i] = pointPool.newElement();\n      this.i[i] = pointPool.newElement();\n      i += 1;\n    }\n  };\n\n  ShapePath.prototype.setLength = function (len) {\n    while (this._maxLength < len) {\n      this.doubleArrayLength();\n    }\n\n    this._length = len;\n  };\n\n  ShapePath.prototype.doubleArrayLength = function () {\n    this.v = this.v.concat(createSizedArray(this._maxLength));\n    this.i = this.i.concat(createSizedArray(this._maxLength));\n    this.o = this.o.concat(createSizedArray(this._maxLength));\n    this._maxLength *= 2;\n  };\n\n  ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n    var arr;\n    this._length = Math.max(this._length, pos + 1);\n\n    if (this._length >= this._maxLength) {\n      this.doubleArrayLength();\n    }\n\n    switch (type) {\n      case 'v':\n        arr = this.v;\n        break;\n\n      case 'i':\n        arr = this.i;\n        break;\n\n      case 'o':\n        arr = this.o;\n        break;\n\n      default:\n        arr = [];\n        break;\n    }\n\n    if (!arr[pos] || arr[pos] && !replace) {\n      arr[pos] = pointPool.newElement();\n    }\n\n    arr[pos][0] = x;\n    arr[pos][1] = y;\n  };\n\n  ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n    this.setXYAt(vX, vY, 'v', pos, replace);\n    this.setXYAt(oX, oY, 'o', pos, replace);\n    this.setXYAt(iX, iY, 'i', pos, replace);\n  };\n\n  ShapePath.prototype.reverse = function () {\n    var newPath = new ShapePath();\n    newPath.setPathData(this.c, this._length);\n    var vertices = this.v;\n    var outPoints = this.o;\n    var inPoints = this.i;\n    var init = 0;\n\n    if (this.c) {\n      newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n      init = 1;\n    }\n\n    var cnt = this._length - 1;\n    var len = this._length;\n    var i;\n\n    for (i = init; i < len; i += 1) {\n      newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n      cnt -= 1;\n    }\n\n    return newPath;\n  };\n\n  ShapePath.prototype.length = function () {\n    return this._length;\n  };\n\n  var shapePool = function () {\n    function create() {\n      return new ShapePath();\n    }\n\n    function release(shapePath) {\n      var len = shapePath._length;\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        pointPool.release(shapePath.v[i]);\n        pointPool.release(shapePath.i[i]);\n        pointPool.release(shapePath.o[i]);\n        shapePath.v[i] = null;\n        shapePath.i[i] = null;\n        shapePath.o[i] = null;\n      }\n\n      shapePath._length = 0;\n      shapePath.c = false;\n    }\n\n    function clone(shape) {\n      var cloned = factory.newElement();\n      var i;\n      var len = shape._length === undefined ? shape.v.length : shape._length;\n      cloned.setLength(len);\n      cloned.c = shape.c;\n\n      for (i = 0; i < len; i += 1) {\n        cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n      }\n\n      return cloned;\n    }\n\n    var factory = poolFactory(4, create, release);\n    factory.clone = clone;\n    return factory;\n  }();\n\n  function ShapeCollection() {\n    this._length = 0;\n    this._maxLength = 4;\n    this.shapes = createSizedArray(this._maxLength);\n  }\n\n  ShapeCollection.prototype.addShape = function (shapeData) {\n    if (this._length === this._maxLength) {\n      this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n      this._maxLength *= 2;\n    }\n\n    this.shapes[this._length] = shapeData;\n    this._length += 1;\n  };\n\n  ShapeCollection.prototype.releaseShapes = function () {\n    var i;\n\n    for (i = 0; i < this._length; i += 1) {\n      shapePool.release(this.shapes[i]);\n    }\n\n    this._length = 0;\n  };\n\n  var shapeCollectionPool = function () {\n    var ob = {\n      newShapeCollection: newShapeCollection,\n      release: release\n    };\n    var _length = 0;\n    var _maxLength = 4;\n    var pool = createSizedArray(_maxLength);\n\n    function newShapeCollection() {\n      var shapeCollection;\n\n      if (_length) {\n        _length -= 1;\n        shapeCollection = pool[_length];\n      } else {\n        shapeCollection = new ShapeCollection();\n      }\n\n      return shapeCollection;\n    }\n\n    function release(shapeCollection) {\n      var i;\n      var len = shapeCollection._length;\n\n      for (i = 0; i < len; i += 1) {\n        shapePool.release(shapeCollection.shapes[i]);\n      }\n\n      shapeCollection._length = 0;\n\n      if (_length === _maxLength) {\n        pool = pooling[\"double\"](pool);\n        _maxLength *= 2;\n      }\n\n      pool[_length] = shapeCollection;\n      _length += 1;\n    }\n\n    return ob;\n  }();\n\n  var ShapePropertyFactory = function () {\n    var initFrame = -999999;\n\n    function interpolateShape(frameNum, previousValue, caching) {\n      var iterationIndex = caching.lastIndex;\n      var keyPropS;\n      var keyPropE;\n      var isHold;\n      var j;\n      var k;\n      var jLen;\n      var kLen;\n      var perc;\n      var vertexValue;\n      var kf = this.keyframes;\n\n      if (frameNum < kf[0].t - this.offsetTime) {\n        keyPropS = kf[0].s[0];\n        isHold = true;\n        iterationIndex = 0;\n      } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n        keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n        /* if(kf[kf.length - 1].s){\r\n                  keyPropS = kf[kf.length - 1].s[0];\r\n              }else{\r\n                  keyPropS = kf[kf.length - 2].e[0];\r\n              } */\n\n        isHold = true;\n      } else {\n        var i = iterationIndex;\n        var len = kf.length - 1;\n        var flag = true;\n        var keyData;\n        var nextKeyData;\n        var keyframeMetadata;\n\n        while (flag) {\n          keyData = kf[i];\n          nextKeyData = kf[i + 1];\n\n          if (nextKeyData.t - this.offsetTime > frameNum) {\n            break;\n          }\n\n          if (i < len - 1) {\n            i += 1;\n          } else {\n            flag = false;\n          }\n        }\n\n        keyframeMetadata = this.keyframesMetadata[i] || {};\n        isHold = keyData.h === 1;\n        iterationIndex = i;\n\n        if (!isHold) {\n          if (frameNum >= nextKeyData.t - this.offsetTime) {\n            perc = 1;\n          } else if (frameNum < keyData.t - this.offsetTime) {\n            perc = 0;\n          } else {\n            var fnc;\n\n            if (keyframeMetadata.__fnct) {\n              fnc = keyframeMetadata.__fnct;\n            } else {\n              fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n              keyframeMetadata.__fnct = fnc;\n            }\n\n            perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n          }\n\n          keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n        }\n\n        keyPropS = keyData.s[0];\n      }\n\n      jLen = previousValue._length;\n      kLen = keyPropS.i[0].length;\n      caching.lastIndex = iterationIndex;\n\n      for (j = 0; j < jLen; j += 1) {\n        for (k = 0; k < kLen; k += 1) {\n          vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n          previousValue.i[j][k] = vertexValue;\n          vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n          previousValue.o[j][k] = vertexValue;\n          vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n          previousValue.v[j][k] = vertexValue;\n        }\n      }\n    }\n\n    function interpolateShapeCurrentTime() {\n      var frameNum = this.comp.renderedFrame - this.offsetTime;\n      var initTime = this.keyframes[0].t - this.offsetTime;\n      var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n      var lastFrame = this._caching.lastFrame;\n\n      if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n        /// /\n        this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n        this.interpolateShape(frameNum, this.pv, this._caching); /// /\n      }\n\n      this._caching.lastFrame = frameNum;\n      return this.pv;\n    }\n\n    function resetShape() {\n      this.paths = this.localShapeCollection;\n    }\n\n    function shapesEqual(shape1, shape2) {\n      if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n        return false;\n      }\n\n      var i;\n      var len = shape1._length;\n\n      for (i = 0; i < len; i += 1) {\n        if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n\n    function setVValue(newPath) {\n      if (!shapesEqual(this.v, newPath)) {\n        this.v = shapePool.clone(newPath);\n        this.localShapeCollection.releaseShapes();\n        this.localShapeCollection.addShape(this.v);\n        this._mdf = true;\n        this.paths = this.localShapeCollection;\n      }\n    }\n\n    function processEffectsSequence() {\n      if (this.elem.globalData.frameId === this.frameId) {\n        return;\n      }\n\n      if (!this.effectsSequence.length) {\n        this._mdf = false;\n        return;\n      }\n\n      if (this.lock) {\n        this.setVValue(this.pv);\n        return;\n      }\n\n      this.lock = true;\n      this._mdf = false;\n      var finalValue;\n\n      if (this.kf) {\n        finalValue = this.pv;\n      } else if (this.data.ks) {\n        finalValue = this.data.ks.k;\n      } else {\n        finalValue = this.data.pt.k;\n      }\n\n      var i;\n      var len = this.effectsSequence.length;\n\n      for (i = 0; i < len; i += 1) {\n        finalValue = this.effectsSequence[i](finalValue);\n      }\n\n      this.setVValue(finalValue);\n      this.lock = false;\n      this.frameId = this.elem.globalData.frameId;\n    }\n\n    function ShapeProperty(elem, data, type) {\n      this.propType = 'shape';\n      this.comp = elem.comp;\n      this.container = elem;\n      this.elem = elem;\n      this.data = data;\n      this.k = false;\n      this.kf = false;\n      this._mdf = false;\n      var pathData = type === 3 ? data.pt.k : data.ks.k;\n      this.v = shapePool.clone(pathData);\n      this.pv = shapePool.clone(this.v);\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n      this.paths = this.localShapeCollection;\n      this.paths.addShape(this.v);\n      this.reset = resetShape;\n      this.effectsSequence = [];\n    }\n\n    function addEffect(effectFunction) {\n      this.effectsSequence.push(effectFunction);\n      this.container.addDynamicProperty(this);\n    }\n\n    ShapeProperty.prototype.interpolateShape = interpolateShape;\n    ShapeProperty.prototype.getValue = processEffectsSequence;\n    ShapeProperty.prototype.setVValue = setVValue;\n    ShapeProperty.prototype.addEffect = addEffect;\n\n    function KeyframedShapeProperty(elem, data, type) {\n      this.propType = 'shape';\n      this.comp = elem.comp;\n      this.elem = elem;\n      this.container = elem;\n      this.offsetTime = elem.data.st;\n      this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n      this.keyframesMetadata = [];\n      this.k = true;\n      this.kf = true;\n      var len = this.keyframes[0].s[0].i.length;\n      this.v = shapePool.newElement();\n      this.v.setPathData(this.keyframes[0].s[0].c, len);\n      this.pv = shapePool.clone(this.v);\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n      this.paths = this.localShapeCollection;\n      this.paths.addShape(this.v);\n      this.lastFrame = initFrame;\n      this.reset = resetShape;\n      this._caching = {\n        lastFrame: initFrame,\n        lastIndex: 0\n      };\n      this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n    }\n\n    KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n    KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n    KeyframedShapeProperty.prototype.setVValue = setVValue;\n    KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n    var EllShapeProperty = function () {\n      var cPoint = roundCorner;\n\n      function EllShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.setPathData(true, 4);\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.paths = this.localShapeCollection;\n        this.localShapeCollection.addShape(this.v);\n        this.d = data.d;\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.frameId = -1;\n        this.initDynamicPropertyContainer(elem);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertEllToPath();\n        }\n      }\n\n      EllShapePropertyFactory.prototype = {\n        reset: resetShape,\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n\n          if (this._mdf) {\n            this.convertEllToPath();\n          }\n        },\n        convertEllToPath: function convertEllToPath() {\n          var p0 = this.p.v[0];\n          var p1 = this.p.v[1];\n          var s0 = this.s.v[0] / 2;\n          var s1 = this.s.v[1] / 2;\n\n          var _cw = this.d !== 3;\n\n          var _v = this.v;\n          _v.v[0][0] = p0;\n          _v.v[0][1] = p1 - s1;\n          _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.v[1][1] = p1;\n          _v.v[2][0] = p0;\n          _v.v[2][1] = p1 + s1;\n          _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.v[3][1] = p1;\n          _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n          _v.i[0][1] = p1 - s1;\n          _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.i[1][1] = p1 - s1 * cPoint;\n          _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n          _v.i[2][1] = p1 + s1;\n          _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.i[3][1] = p1 + s1 * cPoint;\n          _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n          _v.o[0][1] = p1 - s1;\n          _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.o[1][1] = p1 + s1 * cPoint;\n          _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n          _v.o[2][1] = p1 + s1;\n          _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.o[3][1] = p1 - s1 * cPoint;\n        }\n      };\n      extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n      return EllShapePropertyFactory;\n    }();\n\n    var StarShapeProperty = function () {\n      function StarShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.setPathData(true, 0);\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.data = data;\n        this.frameId = -1;\n        this.d = data.d;\n        this.initDynamicPropertyContainer(elem);\n\n        if (data.sy === 1) {\n          this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n          this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n          this.convertToPath = this.convertStarToPath;\n        } else {\n          this.convertToPath = this.convertPolygonToPath;\n        }\n\n        this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n        this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n        this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.localShapeCollection.addShape(this.v);\n        this.paths = this.localShapeCollection;\n\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertToPath();\n        }\n      }\n\n      StarShapePropertyFactory.prototype = {\n        reset: resetShape,\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n\n          if (this._mdf) {\n            this.convertToPath();\n          }\n        },\n        convertStarToPath: function convertStarToPath() {\n          var numPts = Math.floor(this.pt.v) * 2;\n          var angle = Math.PI * 2 / numPts;\n          /* this.v.v.length = numPts;\r\n                  this.v.i.length = numPts;\r\n                  this.v.o.length = numPts; */\n\n          var longFlag = true;\n          var longRad = this.or.v;\n          var shortRad = this.ir.v;\n          var longRound = this.os.v;\n          var shortRound = this.is.v;\n          var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n          var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n          var i;\n          var rad;\n          var roundness;\n          var perimSegment;\n          var currentAng = -Math.PI / 2;\n          currentAng += this.r.v;\n          var dir = this.data.d === 3 ? -1 : 1;\n          this.v._length = 0;\n\n          for (i = 0; i < numPts; i += 1) {\n            rad = longFlag ? longRad : shortRad;\n            roundness = longFlag ? longRound : shortRound;\n            perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n            var x = rad * Math.cos(currentAng);\n            var y = rad * Math.sin(currentAng);\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n            x += +this.p.v[0];\n            y += +this.p.v[1];\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n            /* this.v.v[i] = [x,y];\r\n                      this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n                      this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n                      this.v._length = numPts; */\n\n            longFlag = !longFlag;\n            currentAng += angle * dir;\n          }\n        },\n        convertPolygonToPath: function convertPolygonToPath() {\n          var numPts = Math.floor(this.pt.v);\n          var angle = Math.PI * 2 / numPts;\n          var rad = this.or.v;\n          var roundness = this.os.v;\n          var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n          var i;\n          var currentAng = -Math.PI * 0.5;\n          var dir = this.data.d === 3 ? -1 : 1;\n          currentAng += this.r.v;\n          this.v._length = 0;\n\n          for (i = 0; i < numPts; i += 1) {\n            var x = rad * Math.cos(currentAng);\n            var y = rad * Math.sin(currentAng);\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n            x += +this.p.v[0];\n            y += +this.p.v[1];\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n            currentAng += angle * dir;\n          }\n\n          this.paths.length = 0;\n          this.paths[0] = this.v;\n        }\n      };\n      extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n      return StarShapePropertyFactory;\n    }();\n\n    var RectShapeProperty = function () {\n      function RectShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.c = true;\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.localShapeCollection.addShape(this.v);\n        this.paths = this.localShapeCollection;\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.frameId = -1;\n        this.d = data.d;\n        this.initDynamicPropertyContainer(elem);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n        this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertRectToPath();\n        }\n      }\n\n      RectShapePropertyFactory.prototype = {\n        convertRectToPath: function convertRectToPath() {\n          var p0 = this.p.v[0];\n          var p1 = this.p.v[1];\n          var v0 = this.s.v[0] / 2;\n          var v1 = this.s.v[1] / 2;\n          var round = bmMin(v0, v1, this.r.v);\n          var cPoint = round * (1 - roundCorner);\n          this.v._length = 0;\n\n          if (this.d === 2 || this.d === 1) {\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n            this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n            if (round !== 0) {\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n            } else {\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n            }\n          } else {\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n            if (round !== 0) {\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n              this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n            } else {\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n              this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n            }\n          }\n        },\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n\n          if (this._mdf) {\n            this.convertRectToPath();\n          }\n        },\n        reset: resetShape\n      };\n      extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n      return RectShapePropertyFactory;\n    }();\n\n    function getShapeProp(elem, data, type) {\n      var prop;\n\n      if (type === 3 || type === 4) {\n        var dataProp = type === 3 ? data.pt : data.ks;\n        var keys = dataProp.k;\n\n        if (keys.length) {\n          prop = new KeyframedShapeProperty(elem, data, type);\n        } else {\n          prop = new ShapeProperty(elem, data, type);\n        }\n      } else if (type === 5) {\n        prop = new RectShapeProperty(elem, data);\n      } else if (type === 6) {\n        prop = new EllShapeProperty(elem, data);\n      } else if (type === 7) {\n        prop = new StarShapeProperty(elem, data);\n      }\n\n      if (prop.k) {\n        elem.addDynamicProperty(prop);\n      }\n\n      return prop;\n    }\n\n    function getConstructorFunction() {\n      return ShapeProperty;\n    }\n\n    function getKeyframedConstructorFunction() {\n      return KeyframedShapeProperty;\n    }\n\n    var ob = {};\n    ob.getShapeProp = getShapeProp;\n    ob.getConstructorFunction = getConstructorFunction;\n    ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n    return ob;\n  }();\n\n  /*!\r\n   Transformation Matrix v2.0\r\n   (c) Epistemex 2014-2015\r\n   www.epistemex.com\r\n   By Ken Fyrstenberg\r\n   Contributions by leeoniya.\r\n   License: MIT, header required.\r\n   */\n\n  /**\r\n   * 2D transformation matrix object initialized with identity matrix.\r\n   *\r\n   * The matrix can synchronize a canvas context by supplying the context\r\n   * as an argument, or later apply current absolute transform to an\r\n   * existing context.\r\n   *\r\n   * All values are handled as floating point values.\r\n   *\r\n   * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n   * @prop {number} a - scale x\r\n   * @prop {number} b - shear y\r\n   * @prop {number} c - shear x\r\n   * @prop {number} d - scale y\r\n   * @prop {number} e - translate x\r\n   * @prop {number} f - translate y\r\n   * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n   * @constructor\r\n   */\n\n  var Matrix = function () {\n    var _cos = Math.cos;\n    var _sin = Math.sin;\n    var _tan = Math.tan;\n    var _rnd = Math.round;\n\n    function reset() {\n      this.props[0] = 1;\n      this.props[1] = 0;\n      this.props[2] = 0;\n      this.props[3] = 0;\n      this.props[4] = 0;\n      this.props[5] = 1;\n      this.props[6] = 0;\n      this.props[7] = 0;\n      this.props[8] = 0;\n      this.props[9] = 0;\n      this.props[10] = 1;\n      this.props[11] = 0;\n      this.props[12] = 0;\n      this.props[13] = 0;\n      this.props[14] = 0;\n      this.props[15] = 1;\n      return this;\n    }\n\n    function rotate(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n\n    function rotateX(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n    }\n\n    function rotateY(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n    }\n\n    function rotateZ(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n\n    function shear(sx, sy) {\n      return this._t(1, sy, sx, 1, 0, 0);\n    }\n\n    function skew(ax, ay) {\n      return this.shear(_tan(ax), _tan(ay));\n    }\n\n    function skewFromAxis(ax, angle) {\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n    }\n\n    function scale(sx, sy, sz) {\n      if (!sz && sz !== 0) {\n        sz = 1;\n      }\n\n      if (sx === 1 && sy === 1 && sz === 1) {\n        return this;\n      }\n\n      return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n    }\n\n    function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n      this.props[0] = a;\n      this.props[1] = b;\n      this.props[2] = c;\n      this.props[3] = d;\n      this.props[4] = e;\n      this.props[5] = f;\n      this.props[6] = g;\n      this.props[7] = h;\n      this.props[8] = i;\n      this.props[9] = j;\n      this.props[10] = k;\n      this.props[11] = l;\n      this.props[12] = m;\n      this.props[13] = n;\n      this.props[14] = o;\n      this.props[15] = p;\n      return this;\n    }\n\n    function translate(tx, ty, tz) {\n      tz = tz || 0;\n\n      if (tx !== 0 || ty !== 0 || tz !== 0) {\n        return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n      }\n\n      return this;\n    }\n\n    function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n      var _p = this.props;\n\n      if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n        // NOTE: commenting this condition because TurboFan deoptimizes code when present\n        // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n        _p[12] = _p[12] * a2 + _p[15] * m2;\n        _p[13] = _p[13] * f2 + _p[15] * n2;\n        _p[14] = _p[14] * k2 + _p[15] * o2;\n        _p[15] *= p2; // }\n\n        this._identityCalculated = false;\n        return this;\n      }\n\n      var a1 = _p[0];\n      var b1 = _p[1];\n      var c1 = _p[2];\n      var d1 = _p[3];\n      var e1 = _p[4];\n      var f1 = _p[5];\n      var g1 = _p[6];\n      var h1 = _p[7];\n      var i1 = _p[8];\n      var j1 = _p[9];\n      var k1 = _p[10];\n      var l1 = _p[11];\n      var m1 = _p[12];\n      var n1 = _p[13];\n      var o1 = _p[14];\n      var p1 = _p[15];\n      /* matrix order (canvas compatible):\r\n           * ace\r\n           * bdf\r\n           * 001\r\n           */\n\n      _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n      _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n      _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n      _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n      _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n      _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n      _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n      _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n      _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n      _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n      _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n      _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n      _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n      _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n      _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n      _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n      this._identityCalculated = false;\n      return this;\n    }\n\n    function multiply(matrix) {\n      var matrixProps = matrix.props;\n      return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n    }\n\n    function isIdentity() {\n      if (!this._identityCalculated) {\n        this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n        this._identityCalculated = true;\n      }\n\n      return this._identity;\n    }\n\n    function equals(matr) {\n      var i = 0;\n\n      while (i < 16) {\n        if (matr.props[i] !== this.props[i]) {\n          return false;\n        }\n\n        i += 1;\n      }\n\n      return true;\n    }\n\n    function clone(matr) {\n      var i;\n\n      for (i = 0; i < 16; i += 1) {\n        matr.props[i] = this.props[i];\n      }\n\n      return matr;\n    }\n\n    function cloneFromProps(props) {\n      var i;\n\n      for (i = 0; i < 16; i += 1) {\n        this.props[i] = props[i];\n      }\n    }\n\n    function applyToPoint(x, y, z) {\n      return {\n        x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n        y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n        z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n      };\n      /* return {\r\n           x: x * me.a + y * me.c + me.e,\r\n           y: x * me.b + y * me.d + me.f\r\n           }; */\n    }\n\n    function applyToX(x, y, z) {\n      return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n    }\n\n    function applyToY(x, y, z) {\n      return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n    }\n\n    function applyToZ(x, y, z) {\n      return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n    }\n\n    function getInverseMatrix() {\n      var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n      var a = this.props[5] / determinant;\n      var b = -this.props[1] / determinant;\n      var c = -this.props[4] / determinant;\n      var d = this.props[0] / determinant;\n      var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n      var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n      var inverseMatrix = new Matrix();\n      inverseMatrix.props[0] = a;\n      inverseMatrix.props[1] = b;\n      inverseMatrix.props[4] = c;\n      inverseMatrix.props[5] = d;\n      inverseMatrix.props[12] = e;\n      inverseMatrix.props[13] = f;\n      return inverseMatrix;\n    }\n\n    function inversePoint(pt) {\n      var inverseMatrix = this.getInverseMatrix();\n      return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n    }\n\n    function inversePoints(pts) {\n      var i;\n      var len = pts.length;\n      var retPts = [];\n\n      for (i = 0; i < len; i += 1) {\n        retPts[i] = inversePoint(pts[i]);\n      }\n\n      return retPts;\n    }\n\n    function applyToTriplePoints(pt1, pt2, pt3) {\n      var arr = createTypedArray('float32', 6);\n\n      if (this.isIdentity()) {\n        arr[0] = pt1[0];\n        arr[1] = pt1[1];\n        arr[2] = pt2[0];\n        arr[3] = pt2[1];\n        arr[4] = pt3[0];\n        arr[5] = pt3[1];\n      } else {\n        var p0 = this.props[0];\n        var p1 = this.props[1];\n        var p4 = this.props[4];\n        var p5 = this.props[5];\n        var p12 = this.props[12];\n        var p13 = this.props[13];\n        arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n        arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n        arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n        arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n        arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n        arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n      }\n\n      return arr;\n    }\n\n    function applyToPointArray(x, y, z) {\n      var arr;\n\n      if (this.isIdentity()) {\n        arr = [x, y, z];\n      } else {\n        arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n      }\n\n      return arr;\n    }\n\n    function applyToPointStringified(x, y) {\n      if (this.isIdentity()) {\n        return x + ',' + y;\n      }\n\n      var _p = this.props;\n      return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n    }\n\n    function toCSS() {\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n      /* if(this.isIdentity()) {\r\n              return '';\r\n          } */\n      var i = 0;\n      var props = this.props;\n      var cssValue = 'matrix3d(';\n      var v = 10000;\n\n      while (i < 16) {\n        cssValue += _rnd(props[i] * v) / v;\n        cssValue += i === 15 ? ')' : ',';\n        i += 1;\n      }\n\n      return cssValue;\n    }\n\n    function roundMatrixProperty(val) {\n      var v = 10000;\n\n      if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n        return _rnd(val * v) / v;\n      }\n\n      return val;\n    }\n\n    function to2dCSS() {\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n      /* if(this.isIdentity()) {\r\n              return '';\r\n          } */\n      var props = this.props;\n\n      var _a = roundMatrixProperty(props[0]);\n\n      var _b = roundMatrixProperty(props[1]);\n\n      var _c = roundMatrixProperty(props[4]);\n\n      var _d = roundMatrixProperty(props[5]);\n\n      var _e = roundMatrixProperty(props[12]);\n\n      var _f = roundMatrixProperty(props[13]);\n\n      return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n    }\n\n    return function () {\n      this.reset = reset;\n      this.rotate = rotate;\n      this.rotateX = rotateX;\n      this.rotateY = rotateY;\n      this.rotateZ = rotateZ;\n      this.skew = skew;\n      this.skewFromAxis = skewFromAxis;\n      this.shear = shear;\n      this.scale = scale;\n      this.setTransform = setTransform;\n      this.translate = translate;\n      this.transform = transform;\n      this.multiply = multiply;\n      this.applyToPoint = applyToPoint;\n      this.applyToX = applyToX;\n      this.applyToY = applyToY;\n      this.applyToZ = applyToZ;\n      this.applyToPointArray = applyToPointArray;\n      this.applyToTriplePoints = applyToTriplePoints;\n      this.applyToPointStringified = applyToPointStringified;\n      this.toCSS = toCSS;\n      this.to2dCSS = to2dCSS;\n      this.clone = clone;\n      this.cloneFromProps = cloneFromProps;\n      this.equals = equals;\n      this.inversePoints = inversePoints;\n      this.inversePoint = inversePoint;\n      this.getInverseMatrix = getInverseMatrix;\n      this._t = this.transform;\n      this.isIdentity = isIdentity;\n      this._identity = true;\n      this._identityCalculated = false;\n      this.props = createTypedArray('float32', 16);\n      this.reset();\n    };\n  }();\n\n  function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n  var lottie = {};\n  var standalone = '__[STANDALONE]__';\n  var animationData = '__[ANIMATIONDATA]__';\n  var renderer = '';\n\n  function setLocation(href) {\n    setLocationHref(href);\n  }\n\n  function searchAnimations() {\n    if (standalone === true) {\n      animationManager.searchAnimations(animationData, standalone, renderer);\n    } else {\n      animationManager.searchAnimations();\n    }\n  }\n\n  function setSubframeRendering(flag) {\n    setSubframeEnabled(flag);\n  }\n\n  function setPrefix(prefix) {\n    setIdPrefix(prefix);\n  }\n\n  function loadAnimation(params) {\n    if (standalone === true) {\n      params.animationData = JSON.parse(animationData);\n    }\n\n    return animationManager.loadAnimation(params);\n  }\n\n  function setQuality(value) {\n    if (typeof value === 'string') {\n      switch (value) {\n        case 'high':\n          setDefaultCurveSegments(200);\n          break;\n\n        default:\n        case 'medium':\n          setDefaultCurveSegments(50);\n          break;\n\n        case 'low':\n          setDefaultCurveSegments(10);\n          break;\n      }\n    } else if (!isNaN(value) && value > 1) {\n      setDefaultCurveSegments(value);\n    }\n\n    if (getDefaultCurveSegments() >= 50) {\n      roundValues(false);\n    } else {\n      roundValues(true);\n    }\n  }\n\n  function inBrowser() {\n    return typeof navigator !== 'undefined';\n  }\n\n  function installPlugin(type, plugin) {\n    if (type === 'expressions') {\n      setExpressionsPlugin(plugin);\n    }\n  }\n\n  function getFactory(name) {\n    switch (name) {\n      case 'propertyFactory':\n        return PropertyFactory;\n\n      case 'shapePropertyFactory':\n        return ShapePropertyFactory;\n\n      case 'matrix':\n        return Matrix;\n\n      default:\n        return null;\n    }\n  }\n\n  lottie.play = animationManager.play;\n  lottie.pause = animationManager.pause;\n  lottie.setLocationHref = setLocation;\n  lottie.togglePause = animationManager.togglePause;\n  lottie.setSpeed = animationManager.setSpeed;\n  lottie.setDirection = animationManager.setDirection;\n  lottie.stop = animationManager.stop;\n  lottie.searchAnimations = searchAnimations;\n  lottie.registerAnimation = animationManager.registerAnimation;\n  lottie.loadAnimation = loadAnimation;\n  lottie.setSubframeRendering = setSubframeRendering;\n  lottie.resize = animationManager.resize; // lottie.start = start;\n\n  lottie.goToAndStop = animationManager.goToAndStop;\n  lottie.destroy = animationManager.destroy;\n  lottie.setQuality = setQuality;\n  lottie.inBrowser = inBrowser;\n  lottie.installPlugin = installPlugin;\n  lottie.freeze = animationManager.freeze;\n  lottie.unfreeze = animationManager.unfreeze;\n  lottie.setVolume = animationManager.setVolume;\n  lottie.mute = animationManager.mute;\n  lottie.unmute = animationManager.unmute;\n  lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n  lottie.useWebWorker = setWebWorker;\n  lottie.setIDPrefix = setPrefix;\n  lottie.__getFactory = getFactory;\n  lottie.version = '5.12.2';\n\n  function checkReady() {\n    if (document.readyState === 'complete') {\n      clearInterval(readyStateCheckInterval);\n      searchAnimations();\n    }\n  }\n\n  function getQueryVariable(variable) {\n    var vars = queryString.split('&');\n\n    for (var i = 0; i < vars.length; i += 1) {\n      var pair = vars[i].split('=');\n\n      if (decodeURIComponent(pair[0]) == variable) {\n        // eslint-disable-line eqeqeq\n        return decodeURIComponent(pair[1]);\n      }\n    }\n\n    return null;\n  }\n\n  var queryString = '';\n\n  if (standalone) {\n    var scripts = document.getElementsByTagName('script');\n    var index = scripts.length - 1;\n    var myScript = scripts[index] || {\n      src: ''\n    };\n    queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n    renderer = getQueryVariable('renderer');\n  }\n\n  var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n  try {\n    if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n    ) {\n      window.bodymovin = lottie;\n    }\n  } catch (err) {//\n  }\n\n  var ShapeModifiers = function () {\n    var ob = {};\n    var modifiers = {};\n    ob.registerModifier = registerModifier;\n    ob.getModifier = getModifier;\n\n    function registerModifier(nm, factory) {\n      if (!modifiers[nm]) {\n        modifiers[nm] = factory;\n      }\n    }\n\n    function getModifier(nm, elem, data) {\n      return new modifiers[nm](elem, data);\n    }\n\n    return ob;\n  }();\n\n  function ShapeModifier() {}\n\n  ShapeModifier.prototype.initModifierProperties = function () {};\n\n  ShapeModifier.prototype.addShapeToModifier = function () {};\n\n  ShapeModifier.prototype.addShape = function (data) {\n    if (!this.closed) {\n      // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n      data.sh.container.addDynamicProperty(data.sh);\n      var shapeData = {\n        shape: data.sh,\n        data: data,\n        localShapeCollection: shapeCollectionPool.newShapeCollection()\n      };\n      this.shapes.push(shapeData);\n      this.addShapeToModifier(shapeData);\n\n      if (this._isAnimated) {\n        data.setAsAnimated();\n      }\n    }\n  };\n\n  ShapeModifier.prototype.init = function (elem, data) {\n    this.shapes = [];\n    this.elem = elem;\n    this.initDynamicPropertyContainer(elem);\n    this.initModifierProperties(elem, data);\n    this.frameId = initialDefaultFrame;\n    this.closed = false;\n    this.k = false;\n\n    if (this.dynamicProperties.length) {\n      this.k = true;\n    } else {\n      this.getValue(true);\n    }\n  };\n\n  ShapeModifier.prototype.processKeys = function () {\n    if (this.elem.globalData.frameId === this.frameId) {\n      return;\n    }\n\n    this.frameId = this.elem.globalData.frameId;\n    this.iterateDynamicProperties();\n  };\n\n  extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n  function TrimModifier() {}\n\n  extendPrototype([ShapeModifier], TrimModifier);\n\n  TrimModifier.prototype.initModifierProperties = function (elem, data) {\n    this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n    this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n    this.sValue = 0;\n    this.eValue = 0;\n    this.getValue = this.processKeys;\n    this.m = data.m;\n    this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n  };\n\n  TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n    shapeData.pathsData = [];\n  };\n\n  TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n    var segments = [];\n\n    if (e <= 1) {\n      segments.push({\n        s: s,\n        e: e\n      });\n    } else if (s >= 1) {\n      segments.push({\n        s: s - 1,\n        e: e - 1\n      });\n    } else {\n      segments.push({\n        s: s,\n        e: 1\n      });\n      segments.push({\n        s: 0,\n        e: e - 1\n      });\n    }\n\n    var shapeSegments = [];\n    var i;\n    var len = segments.length;\n    var segmentOb;\n\n    for (i = 0; i < len; i += 1) {\n      segmentOb = segments[i];\n\n      if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n        var shapeS;\n        var shapeE;\n\n        if (segmentOb.s * totalModifierLength <= addedLength) {\n          shapeS = 0;\n        } else {\n          shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n        }\n\n        if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n          shapeE = 1;\n        } else {\n          shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n        }\n\n        shapeSegments.push([shapeS, shapeE]);\n      }\n    }\n\n    if (!shapeSegments.length) {\n      shapeSegments.push([0, 0]);\n    }\n\n    return shapeSegments;\n  };\n\n  TrimModifier.prototype.releasePathsData = function (pathsData) {\n    var i;\n    var len = pathsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      segmentsLengthPool.release(pathsData[i]);\n    }\n\n    pathsData.length = 0;\n    return pathsData;\n  };\n\n  TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n    var s;\n    var e;\n\n    if (this._mdf || _isFirstFrame) {\n      var o = this.o.v % 360 / 360;\n\n      if (o < 0) {\n        o += 1;\n      }\n\n      if (this.s.v > 1) {\n        s = 1 + o;\n      } else if (this.s.v < 0) {\n        s = 0 + o;\n      } else {\n        s = this.s.v + o;\n      }\n\n      if (this.e.v > 1) {\n        e = 1 + o;\n      } else if (this.e.v < 0) {\n        e = 0 + o;\n      } else {\n        e = this.e.v + o;\n      }\n\n      if (s > e) {\n        var _s = s;\n        s = e;\n        e = _s;\n      }\n\n      s = Math.round(s * 10000) * 0.0001;\n      e = Math.round(e * 10000) * 0.0001;\n      this.sValue = s;\n      this.eValue = e;\n    } else {\n      s = this.sValue;\n      e = this.eValue;\n    }\n\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var pathsData;\n    var pathData;\n    var totalShapeLength;\n    var totalModifierLength = 0;\n\n    if (e === s) {\n      for (i = 0; i < len; i += 1) {\n        this.shapes[i].localShapeCollection.releaseShapes();\n        this.shapes[i].shape._mdf = true;\n        this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n        if (this._mdf) {\n          this.shapes[i].pathsData.length = 0;\n        }\n      }\n    } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n      var segments = [];\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n        if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n          shapeData.shape.paths = shapeData.localShapeCollection;\n        } else {\n          shapePaths = shapeData.shape.paths;\n          jLen = shapePaths._length;\n          totalShapeLength = 0;\n\n          if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n            totalShapeLength = shapeData.totalShapeLength;\n          } else {\n            pathsData = this.releasePathsData(shapeData.pathsData);\n\n            for (j = 0; j < jLen; j += 1) {\n              pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n              pathsData.push(pathData);\n              totalShapeLength += pathData.totalLength;\n            }\n\n            shapeData.totalShapeLength = totalShapeLength;\n            shapeData.pathsData = pathsData;\n          }\n\n          totalModifierLength += totalShapeLength;\n          shapeData.shape._mdf = true;\n        }\n      }\n\n      var shapeS = s;\n      var shapeE = e;\n      var addedLength = 0;\n      var edges;\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        shapeData = this.shapes[i];\n\n        if (shapeData.shape._mdf) {\n          localShapeCollection = shapeData.localShapeCollection;\n          localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n          if (this.m === 2 && len > 1) {\n            edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n            addedLength += shapeData.totalShapeLength;\n          } else {\n            edges = [[shapeS, shapeE]];\n          }\n\n          jLen = edges.length;\n\n          for (j = 0; j < jLen; j += 1) {\n            shapeS = edges[j][0];\n            shapeE = edges[j][1];\n            segments.length = 0;\n\n            if (shapeE <= 1) {\n              segments.push({\n                s: shapeData.totalShapeLength * shapeS,\n                e: shapeData.totalShapeLength * shapeE\n              });\n            } else if (shapeS >= 1) {\n              segments.push({\n                s: shapeData.totalShapeLength * (shapeS - 1),\n                e: shapeData.totalShapeLength * (shapeE - 1)\n              });\n            } else {\n              segments.push({\n                s: shapeData.totalShapeLength * shapeS,\n                e: shapeData.totalShapeLength\n              });\n              segments.push({\n                s: 0,\n                e: shapeData.totalShapeLength * (shapeE - 1)\n              });\n            }\n\n            var newShapesData = this.addShapes(shapeData, segments[0]);\n\n            if (segments[0].s !== segments[0].e) {\n              if (segments.length > 1) {\n                var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n                if (lastShapeInCollection.c) {\n                  var lastShape = newShapesData.pop();\n                  this.addPaths(newShapesData, localShapeCollection);\n                  newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n                } else {\n                  this.addPaths(newShapesData, localShapeCollection);\n                  newShapesData = this.addShapes(shapeData, segments[1]);\n                }\n              }\n\n              this.addPaths(newShapesData, localShapeCollection);\n            }\n          }\n\n          shapeData.shape.paths = localShapeCollection;\n        }\n      }\n    } else if (this._mdf) {\n      for (i = 0; i < len; i += 1) {\n        // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n        // Don't remove this even if it's losing cached info.\n        this.shapes[i].pathsData.length = 0;\n        this.shapes[i].shape._mdf = true;\n      }\n    }\n  };\n\n  TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n    var i;\n    var len = newPaths.length;\n\n    for (i = 0; i < len; i += 1) {\n      localShapeCollection.addShape(newPaths[i]);\n    }\n  };\n\n  TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n    shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n    shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n    if (newShape) {\n      shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n    }\n\n    shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n  };\n\n  TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n    shapePath.setXYAt(points[1], points[5], 'o', pos);\n    shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n    if (newShape) {\n      shapePath.setXYAt(points[0], points[4], 'v', pos);\n    }\n\n    shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n  };\n\n  TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n    var pathsData = shapeData.pathsData;\n    var shapePaths = shapeData.shape.paths.shapes;\n    var i;\n    var len = shapeData.shape.paths._length;\n    var j;\n    var jLen;\n    var addedLength = 0;\n    var currentLengthData;\n    var segmentCount;\n    var lengths;\n    var segment;\n    var shapes = [];\n    var initPos;\n    var newShape = true;\n\n    if (!shapePath) {\n      shapePath = shapePool.newElement();\n      segmentCount = 0;\n      initPos = 0;\n    } else {\n      segmentCount = shapePath._length;\n      initPos = shapePath._length;\n    }\n\n    shapes.push(shapePath);\n\n    for (i = 0; i < len; i += 1) {\n      lengths = pathsData[i].lengths;\n      shapePath.c = shapePaths[i].c;\n      jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n      for (j = 1; j < jLen; j += 1) {\n        currentLengthData = lengths[j - 1];\n\n        if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n          addedLength += currentLengthData.addedLength;\n          shapePath.c = false;\n        } else if (addedLength > shapeSegment.e) {\n          shapePath.c = false;\n          break;\n        } else {\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n            newShape = false;\n          } else {\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n            newShape = false;\n            shapePath.c = false;\n          }\n\n          addedLength += currentLengthData.addedLength;\n          segmentCount += 1;\n        }\n      }\n\n      if (shapePaths[i].c && lengths.length) {\n        currentLengthData = lengths[j - 1];\n\n        if (addedLength <= shapeSegment.e) {\n          var segmentLength = lengths[j - 1].addedLength;\n\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n            newShape = false;\n          } else {\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n            newShape = false;\n            shapePath.c = false;\n          }\n        } else {\n          shapePath.c = false;\n        }\n\n        addedLength += currentLengthData.addedLength;\n        segmentCount += 1;\n      }\n\n      if (shapePath._length) {\n        shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n        shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n      }\n\n      if (addedLength > shapeSegment.e) {\n        break;\n      }\n\n      if (i < len - 1) {\n        shapePath = shapePool.newElement();\n        newShape = true;\n        shapes.push(shapePath);\n        segmentCount = 0;\n      }\n    }\n\n    return shapes;\n  };\n\n  function PuckerAndBloatModifier() {}\n\n  extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n  PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n    this._isAnimated = !!this.amount.effectsSequence.length;\n  };\n\n  PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n    var percent = amount / 100;\n    var centerPoint = [0, 0];\n    var pathLength = path._length;\n    var i = 0;\n\n    for (i = 0; i < pathLength; i += 1) {\n      centerPoint[0] += path.v[i][0];\n      centerPoint[1] += path.v[i][1];\n    }\n\n    centerPoint[0] /= pathLength;\n    centerPoint[1] /= pathLength;\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n    var vX;\n    var vY;\n    var oX;\n    var oY;\n    var iX;\n    var iY;\n\n    for (i = 0; i < pathLength; i += 1) {\n      vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n      vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n      oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n      oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n      iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n      iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n      clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n    }\n\n    return clonedPath;\n  };\n\n  PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amount = this.amount.v;\n\n    if (amount !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  var TransformPropertyFactory = function () {\n    var defaultVector = [0, 0];\n\n    function applyToMatrix(mat) {\n      var _mdf = this._mdf;\n      this.iterateDynamicProperties();\n      this._mdf = this._mdf || _mdf;\n\n      if (this.a) {\n        mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n      }\n\n      if (this.s) {\n        mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n      }\n\n      if (this.sk) {\n        mat.skewFromAxis(-this.sk.v, this.sa.v);\n      }\n\n      if (this.r) {\n        mat.rotate(-this.r.v);\n      } else {\n        mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n      }\n\n      if (this.data.p.s) {\n        if (this.data.p.z) {\n          mat.translate(this.px.v, this.py.v, -this.pz.v);\n        } else {\n          mat.translate(this.px.v, this.py.v, 0);\n        }\n      } else {\n        mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n      }\n    }\n\n    function processKeys(forceRender) {\n      if (this.elem.globalData.frameId === this.frameId) {\n        return;\n      }\n\n      if (this._isDirty) {\n        this.precalculateMatrix();\n        this._isDirty = false;\n      }\n\n      this.iterateDynamicProperties();\n\n      if (this._mdf || forceRender) {\n        var frameRate;\n        this.v.cloneFromProps(this.pre.props);\n\n        if (this.appliedTransformations < 1) {\n          this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n        }\n\n        if (this.appliedTransformations < 2) {\n          this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n        }\n\n        if (this.sk && this.appliedTransformations < 3) {\n          this.v.skewFromAxis(-this.sk.v, this.sa.v);\n        }\n\n        if (this.r && this.appliedTransformations < 4) {\n          this.v.rotate(-this.r.v);\n        } else if (!this.r && this.appliedTransformations < 4) {\n          this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n        }\n\n        if (this.autoOriented) {\n          var v1;\n          var v2;\n          frameRate = this.elem.globalData.frameRate;\n\n          if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n            if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n              v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n              v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n            } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n              v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n              v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n            } else {\n              v1 = this.p.pv;\n              v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n            }\n          } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n            v1 = [];\n            v2 = [];\n            var px = this.px;\n            var py = this.py;\n\n            if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n              v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n              v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n              v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n              v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n            } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n              v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n              v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n              v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n              v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n            } else {\n              v1 = [px.pv, py.pv];\n              v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n              v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n            }\n          } else {\n            v2 = defaultVector;\n            v1 = v2;\n          }\n\n          this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n        }\n\n        if (this.data.p && this.data.p.s) {\n          if (this.data.p.z) {\n            this.v.translate(this.px.v, this.py.v, -this.pz.v);\n          } else {\n            this.v.translate(this.px.v, this.py.v, 0);\n          }\n        } else {\n          this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n        }\n      }\n\n      this.frameId = this.elem.globalData.frameId;\n    }\n\n    function precalculateMatrix() {\n      this.appliedTransformations = 0;\n      this.pre.reset();\n\n      if (!this.a.effectsSequence.length) {\n        this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n        this.appliedTransformations = 1;\n      } else {\n        return;\n      }\n\n      if (!this.s.effectsSequence.length) {\n        this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n        this.appliedTransformations = 2;\n      } else {\n        return;\n      }\n\n      if (this.sk) {\n        if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n          this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n          this.appliedTransformations = 3;\n        } else {\n          return;\n        }\n      }\n\n      if (this.r) {\n        if (!this.r.effectsSequence.length) {\n          this.pre.rotate(-this.r.v);\n          this.appliedTransformations = 4;\n        }\n      } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n        this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n        this.appliedTransformations = 4;\n      }\n    }\n\n    function autoOrient() {//\n      // var prevP = this.getValueAtTime();\n    }\n\n    function addDynamicProperty(prop) {\n      this._addDynamicProperty(prop);\n\n      this.elem.addDynamicProperty(prop);\n      this._isDirty = true;\n    }\n\n    function TransformProperty(elem, data, container) {\n      this.elem = elem;\n      this.frameId = -1;\n      this.propType = 'transform';\n      this.data = data;\n      this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n      this.pre = new Matrix();\n      this.appliedTransformations = 0;\n      this.initDynamicPropertyContainer(container || elem);\n\n      if (data.p && data.p.s) {\n        this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n        this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n        if (data.p.z) {\n          this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n        }\n      } else {\n        this.p = PropertyFactory.getProp(elem, data.p || {\n          k: [0, 0, 0]\n        }, 1, 0, this);\n      }\n\n      if (data.rx) {\n        this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n        this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n        this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n        if (data.or.k[0].ti) {\n          var i;\n          var len = data.or.k.length;\n\n          for (i = 0; i < len; i += 1) {\n            data.or.k[i].to = null;\n            data.or.k[i].ti = null;\n          }\n        }\n\n        this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n        this.or.sh = true;\n      } else {\n        this.r = PropertyFactory.getProp(elem, data.r || {\n          k: 0\n        }, 0, degToRads, this);\n      }\n\n      if (data.sk) {\n        this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n        this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n      }\n\n      this.a = PropertyFactory.getProp(elem, data.a || {\n        k: [0, 0, 0]\n      }, 1, 0, this);\n      this.s = PropertyFactory.getProp(elem, data.s || {\n        k: [100, 100, 100]\n      }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n      if (data.o) {\n        this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n      } else {\n        this.o = {\n          _mdf: false,\n          v: 1\n        };\n      }\n\n      this._isDirty = true;\n\n      if (!this.dynamicProperties.length) {\n        this.getValue(true);\n      }\n    }\n\n    TransformProperty.prototype = {\n      applyToMatrix: applyToMatrix,\n      getValue: processKeys,\n      precalculateMatrix: precalculateMatrix,\n      autoOrient: autoOrient\n    };\n    extendPrototype([DynamicPropertyContainer], TransformProperty);\n    TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n    TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n    function getTransformProperty(elem, data, container) {\n      return new TransformProperty(elem, data, container);\n    }\n\n    return {\n      getTransformProperty: getTransformProperty\n    };\n  }();\n\n  function RepeaterModifier() {}\n\n  extendPrototype([ShapeModifier], RepeaterModifier);\n\n  RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n    this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n    this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n    this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n    this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n    this.data = data;\n\n    if (!this.dynamicProperties.length) {\n      this.getValue(true);\n    }\n\n    this._isAnimated = !!this.dynamicProperties.length;\n    this.pMatrix = new Matrix();\n    this.rMatrix = new Matrix();\n    this.sMatrix = new Matrix();\n    this.tMatrix = new Matrix();\n    this.matrix = new Matrix();\n  };\n\n  RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n    var dir = inv ? -1 : 1;\n    var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n    var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n    pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n    rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n    rMatrix.rotate(-transform.r.v * dir * perc);\n    rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n    sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n    sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n    sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n  };\n\n  RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n    this.elem = elem;\n    this.arr = arr;\n    this.pos = pos;\n    this.elemsData = elemsData;\n    this._currentCopies = 0;\n    this._elements = [];\n    this._groups = [];\n    this.frameId = -1;\n    this.initDynamicPropertyContainer(elem);\n    this.initModifierProperties(elem, arr[pos]);\n\n    while (pos > 0) {\n      pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n      this._elements.unshift(arr[pos]);\n    }\n\n    if (this.dynamicProperties.length) {\n      this.k = true;\n    } else {\n      this.getValue(true);\n    }\n  };\n\n  RepeaterModifier.prototype.resetElements = function (elements) {\n    var i;\n    var len = elements.length;\n\n    for (i = 0; i < len; i += 1) {\n      elements[i]._processed = false;\n\n      if (elements[i].ty === 'gr') {\n        this.resetElements(elements[i].it);\n      }\n    }\n  };\n\n  RepeaterModifier.prototype.cloneElements = function (elements) {\n    var newElements = JSON.parse(JSON.stringify(elements));\n    this.resetElements(newElements);\n    return newElements;\n  };\n\n  RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n    var i;\n    var len = elements.length;\n\n    for (i = 0; i < len; i += 1) {\n      elements[i]._render = renderFlag;\n\n      if (elements[i].ty === 'gr') {\n        this.changeGroupRender(elements[i].it, renderFlag);\n      }\n    }\n  };\n\n  RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n    var items;\n    var itemsTransform;\n    var i;\n    var dir;\n    var cont;\n    var hasReloaded = false;\n\n    if (this._mdf || _isFirstFrame) {\n      var copies = Math.ceil(this.c.v);\n\n      if (this._groups.length < copies) {\n        while (this._groups.length < copies) {\n          var group = {\n            it: this.cloneElements(this._elements),\n            ty: 'gr'\n          };\n          group.it.push({\n            a: {\n              a: 0,\n              ix: 1,\n              k: [0, 0]\n            },\n            nm: 'Transform',\n            o: {\n              a: 0,\n              ix: 7,\n              k: 100\n            },\n            p: {\n              a: 0,\n              ix: 2,\n              k: [0, 0]\n            },\n            r: {\n              a: 1,\n              ix: 6,\n              k: [{\n                s: 0,\n                e: 0,\n                t: 0\n              }, {\n                s: 0,\n                e: 0,\n                t: 1\n              }]\n            },\n            s: {\n              a: 0,\n              ix: 3,\n              k: [100, 100]\n            },\n            sa: {\n              a: 0,\n              ix: 5,\n              k: 0\n            },\n            sk: {\n              a: 0,\n              ix: 4,\n              k: 0\n            },\n            ty: 'tr'\n          });\n          this.arr.splice(0, 0, group);\n\n          this._groups.splice(0, 0, group);\n\n          this._currentCopies += 1;\n        }\n\n        this.elem.reloadShapes();\n        hasReloaded = true;\n      }\n\n      cont = 0;\n      var renderFlag;\n\n      for (i = 0; i <= this._groups.length - 1; i += 1) {\n        renderFlag = cont < copies;\n        this._groups[i]._render = renderFlag;\n        this.changeGroupRender(this._groups[i].it, renderFlag);\n\n        if (!renderFlag) {\n          var elems = this.elemsData[i].it;\n          var transformData = elems[elems.length - 1];\n\n          if (transformData.transform.op.v !== 0) {\n            transformData.transform.op._mdf = true;\n            transformData.transform.op.v = 0;\n          } else {\n            transformData.transform.op._mdf = false;\n          }\n        }\n\n        cont += 1;\n      }\n\n      this._currentCopies = copies; /// /\n\n      var offset = this.o.v;\n      var offsetModulo = offset % 1;\n      var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n      var pProps = this.pMatrix.props;\n      var rProps = this.rMatrix.props;\n      var sProps = this.sMatrix.props;\n      this.pMatrix.reset();\n      this.rMatrix.reset();\n      this.sMatrix.reset();\n      this.tMatrix.reset();\n      this.matrix.reset();\n      var iteration = 0;\n\n      if (offset > 0) {\n        while (iteration < roundOffset) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n          iteration += 1;\n        }\n\n        if (offsetModulo) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n          iteration += offsetModulo;\n        }\n      } else if (offset < 0) {\n        while (iteration > roundOffset) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n          iteration -= 1;\n        }\n\n        if (offsetModulo) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n          iteration -= offsetModulo;\n        }\n      }\n\n      i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n      dir = this.data.m === 1 ? 1 : -1;\n      cont = this._currentCopies;\n      var j;\n      var jLen;\n\n      while (cont) {\n        items = this.elemsData[i].it;\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\n        jLen = itemsTransform.length;\n        items[items.length - 1].transform.mProps._mdf = true;\n        items[items.length - 1].transform.op._mdf = true;\n        items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n        if (iteration !== 0) {\n          if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n            this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n          }\n\n          this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n          this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n          this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsTransform[j] = this.matrix.props[j];\n          }\n\n          this.matrix.reset();\n        } else {\n          this.matrix.reset();\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsTransform[j] = this.matrix.props[j];\n          }\n        }\n\n        iteration += 1;\n        cont -= 1;\n        i += dir;\n      }\n    } else {\n      cont = this._currentCopies;\n      i = 0;\n      dir = 1;\n\n      while (cont) {\n        items = this.elemsData[i].it;\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\n        items[items.length - 1].transform.mProps._mdf = false;\n        items[items.length - 1].transform.op._mdf = false;\n        cont -= 1;\n        i += dir;\n      }\n    }\n\n    return hasReloaded;\n  };\n\n  RepeaterModifier.prototype.addShape = function () {};\n\n  function RoundCornersModifier() {}\n\n  extendPrototype([ShapeModifier], RoundCornersModifier);\n\n  RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n    this._isAnimated = !!this.rd.effectsSequence.length;\n  };\n\n  RoundCornersModifier.prototype.processPath = function (path, round) {\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n    var i;\n    var len = path._length;\n    var currentV;\n    var currentI;\n    var currentO;\n    var closerV;\n    var distance;\n    var newPosPerc;\n    var index = 0;\n    var vX;\n    var vY;\n    var oX;\n    var oY;\n    var iX;\n    var iY;\n\n    for (i = 0; i < len; i += 1) {\n      currentV = path.v[i];\n      currentO = path.o[i];\n      currentI = path.i[i];\n\n      if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n        if ((i === 0 || i === len - 1) && !path.c) {\n          clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n          /* clonedPath.v[index] = currentV;\r\n                  clonedPath.o[index] = currentO;\r\n                  clonedPath.i[index] = currentI; */\n\n          index += 1;\n        } else {\n          if (i === 0) {\n            closerV = path.v[len - 1];\n          } else {\n            closerV = path.v[i - 1];\n          }\n\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n          iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n          vX = iX;\n          iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n          vY = iY;\n          oX = vX - (vX - currentV[0]) * roundCorner;\n          oY = vY - (vY - currentV[1]) * roundCorner;\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n          index += 1;\n\n          if (i === len - 1) {\n            closerV = path.v[0];\n          } else {\n            closerV = path.v[i + 1];\n          }\n\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n          oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n          vX = oX;\n          oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n          vY = oY;\n          iX = vX - (vX - currentV[0]) * roundCorner;\n          iY = vY - (vY - currentV[1]) * roundCorner;\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n          index += 1;\n        }\n      } else {\n        clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n        index += 1;\n      }\n    }\n\n    return clonedPath;\n  };\n\n  RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var rd = this.rd.v;\n\n    if (rd !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function floatEqual(a, b) {\n    return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n  }\n\n  function floatZero(f) {\n    return Math.abs(f) <= 0.00001;\n  }\n\n  function lerp(p0, p1, amount) {\n    return p0 * (1 - amount) + p1 * amount;\n  }\n\n  function lerpPoint(p0, p1, amount) {\n    return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n  }\n\n  function quadRoots(a, b, c) {\n    // no root\n    if (a === 0) return [];\n    var s = b * b - 4 * a * c; // Complex roots\n\n    if (s < 0) return [];\n    var singleRoot = -b / (2 * a); // 1 root\n\n    if (s === 0) return [singleRoot];\n    var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n    return [singleRoot - delta, singleRoot + delta];\n  }\n\n  function polynomialCoefficients(p0, p1, p2, p3) {\n    return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n  }\n\n  function singlePoint(p) {\n    return new PolynomialBezier(p, p, p, p, false);\n  }\n\n  function PolynomialBezier(p0, p1, p2, p3, linearize) {\n    if (linearize && pointEqual(p0, p1)) {\n      p1 = lerpPoint(p0, p3, 1 / 3);\n    }\n\n    if (linearize && pointEqual(p2, p3)) {\n      p2 = lerpPoint(p0, p3, 2 / 3);\n    }\n\n    var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n    var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n    this.a = [coeffx[0], coeffy[0]];\n    this.b = [coeffx[1], coeffy[1]];\n    this.c = [coeffx[2], coeffy[2]];\n    this.d = [coeffx[3], coeffy[3]];\n    this.points = [p0, p1, p2, p3];\n  }\n\n  PolynomialBezier.prototype.point = function (t) {\n    return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n  };\n\n  PolynomialBezier.prototype.derivative = function (t) {\n    return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n  };\n\n  PolynomialBezier.prototype.tangentAngle = function (t) {\n    var p = this.derivative(t);\n    return Math.atan2(p[1], p[0]);\n  };\n\n  PolynomialBezier.prototype.normalAngle = function (t) {\n    var p = this.derivative(t);\n    return Math.atan2(p[0], p[1]);\n  };\n\n  PolynomialBezier.prototype.inflectionPoints = function () {\n    var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n    if (floatZero(denom)) return [];\n    var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n    var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n    if (square < 0) return [];\n    var root = Math.sqrt(square);\n\n    if (floatZero(root)) {\n      if (root > 0 && root < 1) return [tcusp];\n      return [];\n    }\n\n    return [tcusp - root, tcusp + root].filter(function (r) {\n      return r > 0 && r < 1;\n    });\n  };\n\n  PolynomialBezier.prototype.split = function (t) {\n    if (t <= 0) return [singlePoint(this.points[0]), this];\n    if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n    var p10 = lerpPoint(this.points[0], this.points[1], t);\n    var p11 = lerpPoint(this.points[1], this.points[2], t);\n    var p12 = lerpPoint(this.points[2], this.points[3], t);\n    var p20 = lerpPoint(p10, p11, t);\n    var p21 = lerpPoint(p11, p12, t);\n    var p3 = lerpPoint(p20, p21, t);\n    return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n  };\n\n  function extrema(bez, comp) {\n    var min = bez.points[0][comp];\n    var max = bez.points[bez.points.length - 1][comp];\n\n    if (min > max) {\n      var e = max;\n      max = min;\n      min = e;\n    } // Derivative roots to find min/max\n\n\n    var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n    for (var i = 0; i < f.length; i += 1) {\n      if (f[i] > 0 && f[i] < 1) {\n        var val = bez.point(f[i])[comp];\n        if (val < min) min = val;else if (val > max) max = val;\n      }\n    }\n\n    return {\n      min: min,\n      max: max\n    };\n  }\n\n  PolynomialBezier.prototype.bounds = function () {\n    return {\n      x: extrema(this, 0),\n      y: extrema(this, 1)\n    };\n  };\n\n  PolynomialBezier.prototype.boundingBox = function () {\n    var bounds = this.bounds();\n    return {\n      left: bounds.x.min,\n      right: bounds.x.max,\n      top: bounds.y.min,\n      bottom: bounds.y.max,\n      width: bounds.x.max - bounds.x.min,\n      height: bounds.y.max - bounds.y.min,\n      cx: (bounds.x.max + bounds.x.min) / 2,\n      cy: (bounds.y.max + bounds.y.min) / 2\n    };\n  };\n\n  function intersectData(bez, t1, t2) {\n    var box = bez.boundingBox();\n    return {\n      cx: box.cx,\n      cy: box.cy,\n      width: box.width,\n      height: box.height,\n      bez: bez,\n      t: (t1 + t2) / 2,\n      t1: t1,\n      t2: t2\n    };\n  }\n\n  function splitData(data) {\n    var split = data.bez.split(0.5);\n    return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n  }\n\n  function boxIntersect(b1, b2) {\n    return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n  }\n\n  function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n    if (!boxIntersect(d1, d2)) return;\n\n    if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n      intersections.push([d1.t, d2.t]);\n      return;\n    }\n\n    var d1s = splitData(d1);\n    var d2s = splitData(d2);\n    intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n  }\n\n  PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n    if (tolerance === undefined) tolerance = 2;\n    if (maxRecursion === undefined) maxRecursion = 7;\n    var intersections = [];\n    intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n    return intersections;\n  };\n\n  PolynomialBezier.shapeSegment = function (shapePath, index) {\n    var nextIndex = (index + 1) % shapePath.length();\n    return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n  };\n\n  PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n    var nextIndex = (index + 1) % shapePath.length();\n    return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n  };\n\n  function crossProduct(a, b) {\n    return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n  }\n\n  function lineIntersection(start1, end1, start2, end2) {\n    var v1 = [start1[0], start1[1], 1];\n    var v2 = [end1[0], end1[1], 1];\n    var v3 = [start2[0], start2[1], 1];\n    var v4 = [end2[0], end2[1], 1];\n    var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n    if (floatZero(r[2])) return null;\n    return [r[0] / r[2], r[1] / r[2]];\n  }\n\n  function polarOffset(p, angle, length) {\n    return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n  }\n\n  function pointDistance(p1, p2) {\n    return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n  }\n\n  function pointEqual(p1, p2) {\n    return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n  }\n\n  function ZigZagModifier() {}\n\n  extendPrototype([ShapeModifier], ZigZagModifier);\n\n  ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n    this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n    this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n    this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n  };\n\n  function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n    var angO = angle - Math.PI / 2;\n    var angI = angle + Math.PI / 2;\n    var px = point[0] + Math.cos(angle) * direction * amplitude;\n    var py = point[1] - Math.sin(angle) * direction * amplitude;\n    outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n  }\n\n  function getPerpendicularVector(pt1, pt2) {\n    var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n    var rot = -Math.PI * 0.5;\n    var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n    return rotatedVector;\n  }\n\n  function getProjectingAngle(path, cur) {\n    var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n    var nextIndex = (cur + 1) % path.length();\n    var prevPoint = path.v[prevIndex];\n    var nextPoint = path.v[nextIndex];\n    var pVector = getPerpendicularVector(prevPoint, nextPoint);\n    return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n  }\n\n  function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n    var angle = getProjectingAngle(path, cur);\n    var point = path.v[cur % path._length];\n    var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n    var nextPoint = path.v[(cur + 1) % path._length];\n    var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n    var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n    setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n  }\n\n  function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n    for (var i = 0; i < frequency; i += 1) {\n      var t = (i + 1) / (frequency + 1);\n      var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n      var angle = segment.normalAngle(t);\n      var point = segment.point(t);\n      setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n      direction = -direction;\n    }\n\n    return direction;\n  }\n\n  ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n    var count = path._length;\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n\n    if (!path.c) {\n      count -= 1;\n    }\n\n    if (count === 0) return clonedPath;\n    var direction = -1;\n    var segment = PolynomialBezier.shapeSegment(path, 0);\n    zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n    for (var i = 0; i < count; i += 1) {\n      direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n      if (i === count - 1 && !path.c) {\n        segment = null;\n      } else {\n        segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n      }\n\n      zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n    }\n\n    return clonedPath;\n  };\n\n  ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amplitude = this.amplitude.v;\n    var frequency = Math.max(0, Math.round(this.frequency.v));\n    var pointType = this.pointsType.v;\n\n    if (amplitude !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function linearOffset(p1, p2, amount) {\n    var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n    return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n  }\n\n  function offsetSegment(segment, amount) {\n    var p0;\n    var p1a;\n    var p1b;\n    var p2b;\n    var p2a;\n    var p3;\n    var e;\n    e = linearOffset(segment.points[0], segment.points[1], amount);\n    p0 = e[0];\n    p1a = e[1];\n    e = linearOffset(segment.points[1], segment.points[2], amount);\n    p1b = e[0];\n    p2b = e[1];\n    e = linearOffset(segment.points[2], segment.points[3], amount);\n    p2a = e[0];\n    p3 = e[1];\n    var p1 = lineIntersection(p0, p1a, p1b, p2b);\n    if (p1 === null) p1 = p1a;\n    var p2 = lineIntersection(p2a, p3, p1b, p2b);\n    if (p2 === null) p2 = p2a;\n    return new PolynomialBezier(p0, p1, p2, p3);\n  }\n\n  function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n    var p0 = seg1.points[3];\n    var p1 = seg2.points[0]; // Bevel\n\n    if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n    if (pointEqual(p0, p1)) return p0; // Round\n\n    if (lineJoin === 2) {\n      var angleOut = -seg1.tangentAngle(1);\n      var angleIn = -seg2.tangentAngle(0) + Math.PI;\n      var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n      var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n      var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n      outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n      tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n      outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n      return p1;\n    } // Miter\n\n\n    var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n    var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n    var intersection = lineIntersection(t0, p0, p1, t1);\n\n    if (intersection && pointDistance(intersection, p0) < miterLimit) {\n      outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n      return intersection;\n    }\n\n    return p0;\n  }\n\n  function getIntersection(a, b) {\n    var intersect = a.intersections(b);\n    if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n    if (intersect.length) return intersect[0];\n    return null;\n  }\n\n  function pruneSegmentIntersection(a, b) {\n    var outa = a.slice();\n    var outb = b.slice();\n    var intersect = getIntersection(a[a.length - 1], b[0]);\n\n    if (intersect) {\n      outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n      outb[0] = b[0].split(intersect[1])[1];\n    }\n\n    if (a.length > 1 && b.length > 1) {\n      intersect = getIntersection(a[0], b[b.length - 1]);\n\n      if (intersect) {\n        return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n      }\n    }\n\n    return [outa, outb];\n  }\n\n  function pruneIntersections(segments) {\n    var e;\n\n    for (var i = 1; i < segments.length; i += 1) {\n      e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n      segments[i - 1] = e[0];\n      segments[i] = e[1];\n    }\n\n    if (segments.length > 1) {\n      e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n      segments[segments.length - 1] = e[0];\n      segments[0] = e[1];\n    }\n\n    return segments;\n  }\n\n  function offsetSegmentSplit(segment, amount) {\n    /*\r\n      We split each bezier segment into smaller pieces based\r\n      on inflection points, this ensures the control point\r\n      polygon is convex.\r\n        (A cubic bezier can have none, one, or two inflection points)\r\n    */\n    var flex = segment.inflectionPoints();\n    var left;\n    var right;\n    var split;\n    var mid;\n\n    if (flex.length === 0) {\n      return [offsetSegment(segment, amount)];\n    }\n\n    if (flex.length === 1 || floatEqual(flex[1], 1)) {\n      split = segment.split(flex[0]);\n      left = split[0];\n      right = split[1];\n      return [offsetSegment(left, amount), offsetSegment(right, amount)];\n    }\n\n    split = segment.split(flex[0]);\n    left = split[0];\n    var t = (flex[1] - flex[0]) / (1 - flex[0]);\n    split = split[1].split(t);\n    mid = split[0];\n    right = split[1];\n    return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n  }\n\n  function OffsetPathModifier() {}\n\n  extendPrototype([ShapeModifier], OffsetPathModifier);\n\n  OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n    this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n    this.lineJoin = data.lj;\n    this._isAnimated = this.amount.effectsSequence.length !== 0;\n  };\n\n  OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n    var outputBezier = shapePool.newElement();\n    outputBezier.c = inputBezier.c;\n    var count = inputBezier.length();\n\n    if (!inputBezier.c) {\n      count -= 1;\n    }\n\n    var i;\n    var j;\n    var segment;\n    var multiSegments = [];\n\n    for (i = 0; i < count; i += 1) {\n      segment = PolynomialBezier.shapeSegment(inputBezier, i);\n      multiSegments.push(offsetSegmentSplit(segment, amount));\n    }\n\n    if (!inputBezier.c) {\n      for (i = count - 1; i >= 0; i -= 1) {\n        segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n        multiSegments.push(offsetSegmentSplit(segment, amount));\n      }\n    }\n\n    multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n    var lastPoint = null;\n    var lastSeg = null;\n\n    for (i = 0; i < multiSegments.length; i += 1) {\n      var multiSegment = multiSegments[i];\n      if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n      lastSeg = multiSegment[multiSegment.length - 1];\n\n      for (j = 0; j < multiSegment.length; j += 1) {\n        segment = multiSegment[j];\n\n        if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n          outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n        } else {\n          outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n        }\n\n        outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n        lastPoint = segment.points[3];\n      }\n    }\n\n    if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n    return outputBezier;\n  };\n\n  OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amount = this.amount.v;\n    var miterLimit = this.miterLimit.v;\n    var lineJoin = this.lineJoin;\n\n    if (amount !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function getFontProperties(fontData) {\n    var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n    var fWeight = 'normal';\n    var fStyle = 'normal';\n    var len = styles.length;\n    var styleName;\n\n    for (var i = 0; i < len; i += 1) {\n      styleName = styles[i].toLowerCase();\n\n      switch (styleName) {\n        case 'italic':\n          fStyle = 'italic';\n          break;\n\n        case 'bold':\n          fWeight = '700';\n          break;\n\n        case 'black':\n          fWeight = '900';\n          break;\n\n        case 'medium':\n          fWeight = '500';\n          break;\n\n        case 'regular':\n        case 'normal':\n          fWeight = '400';\n          break;\n\n        case 'light':\n        case 'thin':\n          fWeight = '200';\n          break;\n\n        default:\n          break;\n      }\n    }\n\n    return {\n      style: fStyle,\n      weight: fontData.fWeight || fWeight\n    };\n  }\n\n  var FontManager = function () {\n    var maxWaitingTime = 5000;\n    var emptyChar = {\n      w: 0,\n      size: 0,\n      shapes: [],\n      data: {\n        shapes: []\n      }\n    };\n    var combinedCharacters = []; // Hindi characters\n\n    combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n    var BLACK_FLAG_CODE_POINT = 127988;\n    var CANCEL_TAG_CODE_POINT = 917631;\n    var A_TAG_CODE_POINT = 917601;\n    var Z_TAG_CODE_POINT = 917626;\n    var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n    var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n    var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n    var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n    var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n    function trimFontOptions(font) {\n      var familyArray = font.split(',');\n      var i;\n      var len = familyArray.length;\n      var enabledFamilies = [];\n\n      for (i = 0; i < len; i += 1) {\n        if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n          enabledFamilies.push(familyArray[i]);\n        }\n      }\n\n      return enabledFamilies.join(',');\n    }\n\n    function setUpNode(font, family) {\n      var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n      parentNode.setAttribute('aria-hidden', true);\n      parentNode.style.fontFamily = family;\n      var node = createTag('span'); // Characters that vary significantly among different fonts\n\n      node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n      parentNode.style.position = 'absolute';\n      parentNode.style.left = '-10000px';\n      parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n      parentNode.style.fontSize = '300px'; // Reset any font properties\n\n      parentNode.style.fontVariant = 'normal';\n      parentNode.style.fontStyle = 'normal';\n      parentNode.style.fontWeight = 'normal';\n      parentNode.style.letterSpacing = '0';\n      parentNode.appendChild(node);\n      document.body.appendChild(parentNode); // Remember width with no applied web font\n\n      var width = node.offsetWidth;\n      node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n      return {\n        node: node,\n        w: width,\n        parent: parentNode\n      };\n    }\n\n    function checkLoadedFonts() {\n      var i;\n      var len = this.fonts.length;\n      var node;\n      var w;\n      var loadedCount = len;\n\n      for (i = 0; i < len; i += 1) {\n        if (this.fonts[i].loaded) {\n          loadedCount -= 1;\n        } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n          this.fonts[i].loaded = true;\n        } else {\n          node = this.fonts[i].monoCase.node;\n          w = this.fonts[i].monoCase.w;\n\n          if (node.offsetWidth !== w) {\n            loadedCount -= 1;\n            this.fonts[i].loaded = true;\n          } else {\n            node = this.fonts[i].sansCase.node;\n            w = this.fonts[i].sansCase.w;\n\n            if (node.offsetWidth !== w) {\n              loadedCount -= 1;\n              this.fonts[i].loaded = true;\n            }\n          }\n\n          if (this.fonts[i].loaded) {\n            this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n            this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n          }\n        }\n      }\n\n      if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n        setTimeout(this.checkLoadedFontsBinded, 20);\n      } else {\n        setTimeout(this.setIsLoadedBinded, 10);\n      }\n    }\n\n    function createHelper(fontData, def) {\n      var engine = document.body && def ? 'svg' : 'canvas';\n      var helper;\n      var fontProps = getFontProperties(fontData);\n\n      if (engine === 'svg') {\n        var tHelper = createNS('text');\n        tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n        tHelper.setAttribute('font-family', fontData.fFamily);\n        tHelper.setAttribute('font-style', fontProps.style);\n        tHelper.setAttribute('font-weight', fontProps.weight);\n        tHelper.textContent = '1';\n\n        if (fontData.fClass) {\n          tHelper.style.fontFamily = 'inherit';\n          tHelper.setAttribute('class', fontData.fClass);\n        } else {\n          tHelper.style.fontFamily = fontData.fFamily;\n        }\n\n        def.appendChild(tHelper);\n        helper = tHelper;\n      } else {\n        var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n        tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n        helper = tCanvasHelper;\n      }\n\n      function measure(text) {\n        if (engine === 'svg') {\n          helper.textContent = text;\n          return helper.getComputedTextLength();\n        }\n\n        return helper.measureText(text).width;\n      }\n\n      return {\n        measureText: measure\n      };\n    }\n\n    function addFonts(fontData, defs) {\n      if (!fontData) {\n        this.isLoaded = true;\n        return;\n      }\n\n      if (this.chars) {\n        this.isLoaded = true;\n        this.fonts = fontData.list;\n        return;\n      }\n\n      if (!document.body) {\n        this.isLoaded = true;\n        fontData.list.forEach(function (data) {\n          data.helper = createHelper(data);\n          data.cache = {};\n        });\n        this.fonts = fontData.list;\n        return;\n      }\n\n      var fontArr = fontData.list;\n      var i;\n      var len = fontArr.length;\n      var _pendingFonts = len;\n\n      for (i = 0; i < len; i += 1) {\n        var shouldLoadFont = true;\n        var loadedSelector;\n        var j;\n        fontArr[i].loaded = false;\n        fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n        fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n        if (!fontArr[i].fPath) {\n          fontArr[i].loaded = true;\n          _pendingFonts -= 1;\n        } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n          loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n          if (loadedSelector.length > 0) {\n            shouldLoadFont = false;\n          }\n\n          if (shouldLoadFont) {\n            var s = createTag('style');\n            s.setAttribute('f-forigin', fontArr[i].fOrigin);\n            s.setAttribute('f-origin', fontArr[i].origin);\n            s.setAttribute('f-family', fontArr[i].fFamily);\n            s.type = 'text/css';\n            s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n            defs.appendChild(s);\n          }\n        } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n          loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n          for (j = 0; j < loadedSelector.length; j += 1) {\n            if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n              // Font is already loaded\n              shouldLoadFont = false;\n            }\n          }\n\n          if (shouldLoadFont) {\n            var l = createTag('link');\n            l.setAttribute('f-forigin', fontArr[i].fOrigin);\n            l.setAttribute('f-origin', fontArr[i].origin);\n            l.type = 'text/css';\n            l.rel = 'stylesheet';\n            l.href = fontArr[i].fPath;\n            document.body.appendChild(l);\n          }\n        } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n          loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n          for (j = 0; j < loadedSelector.length; j += 1) {\n            if (fontArr[i].fPath === loadedSelector[j].src) {\n              // Font is already loaded\n              shouldLoadFont = false;\n            }\n          }\n\n          if (shouldLoadFont) {\n            var sc = createTag('link');\n            sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n            sc.setAttribute('f-origin', fontArr[i].origin);\n            sc.setAttribute('rel', 'stylesheet');\n            sc.setAttribute('href', fontArr[i].fPath);\n            defs.appendChild(sc);\n          }\n        }\n\n        fontArr[i].helper = createHelper(fontArr[i], defs);\n        fontArr[i].cache = {};\n        this.fonts.push(fontArr[i]);\n      }\n\n      if (_pendingFonts === 0) {\n        this.isLoaded = true;\n      } else {\n        // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n        // Adding this timeout seems to fix it\n        setTimeout(this.checkLoadedFonts.bind(this), 100);\n      }\n    }\n\n    function addChars(chars) {\n      if (!chars) {\n        return;\n      }\n\n      if (!this.chars) {\n        this.chars = [];\n      }\n\n      var i;\n      var len = chars.length;\n      var j;\n      var jLen = this.chars.length;\n      var found;\n\n      for (i = 0; i < len; i += 1) {\n        j = 0;\n        found = false;\n\n        while (j < jLen) {\n          if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n            found = true;\n          }\n\n          j += 1;\n        }\n\n        if (!found) {\n          this.chars.push(chars[i]);\n          jLen += 1;\n        }\n      }\n    }\n\n    function getCharData(_char, style, font) {\n      var i = 0;\n      var len = this.chars.length;\n\n      while (i < len) {\n        if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n          return this.chars[i];\n        }\n\n        i += 1;\n      }\n\n      if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n      && !this._warned) {\n        this._warned = true;\n        console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n      }\n\n      return emptyChar;\n    }\n\n    function measureText(_char2, fontName, size) {\n      var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n      // to avoid collisions between equal chars\n\n      var index = _char2;\n\n      if (!fontData.cache[index]) {\n        var tHelper = fontData.helper;\n\n        if (_char2 === ' ') {\n          var doubleSize = tHelper.measureText('|' + _char2 + '|');\n          var singleSize = tHelper.measureText('||');\n          fontData.cache[index] = (doubleSize - singleSize) / 100;\n        } else {\n          fontData.cache[index] = tHelper.measureText(_char2) / 100;\n        }\n      }\n\n      return fontData.cache[index] * size;\n    }\n\n    function getFontByName(name) {\n      var i = 0;\n      var len = this.fonts.length;\n\n      while (i < len) {\n        if (this.fonts[i].fName === name) {\n          return this.fonts[i];\n        }\n\n        i += 1;\n      }\n\n      return this.fonts[0];\n    }\n\n    function getCodePoint(string) {\n      var codePoint = 0;\n      var first = string.charCodeAt(0);\n\n      if (first >= 0xD800 && first <= 0xDBFF) {\n        var second = string.charCodeAt(1);\n\n        if (second >= 0xDC00 && second <= 0xDFFF) {\n          codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n        }\n      }\n\n      return codePoint;\n    } // Skin tone modifiers\n\n\n    function isModifier(firstCharCode, secondCharCode) {\n      var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n      return surrogateModifiers.indexOf(sum) !== -1;\n    }\n\n    function isZeroWidthJoiner(charCode) {\n      return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n    } // This codepoint may change the appearance of the preceding character.\n    // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n    // as a colorful image as compared to a monochrome text variant.\n\n\n    function isVariationSelector(charCode) {\n      return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n    } // The regional indicator symbols are a set of 26 alphabetic Unicode\n    /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n    // two-letter country codes in a way that allows optional special treatment.\n\n\n    function isRegionalCode(string) {\n      var codePoint = getCodePoint(string);\n\n      if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n        return true;\n      }\n\n      return false;\n    } // Some Emoji implementations represent combinations of\n    // two “regional indicator” letters as a single flag symbol.\n\n\n    function isFlagEmoji(string) {\n      return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n    }\n\n    function isCombinedCharacter(_char3) {\n      return combinedCharacters.indexOf(_char3) !== -1;\n    } // Regional flags start with a BLACK_FLAG_CODE_POINT\n    // folowed by 5 chars in the TAG range\n    // and end with a CANCEL_TAG_CODE_POINT\n\n\n    function isRegionalFlag(text, index) {\n      var codePoint = getCodePoint(text.substr(index, 2));\n\n      if (codePoint !== BLACK_FLAG_CODE_POINT) {\n        return false;\n      }\n\n      var count = 0;\n      index += 2;\n\n      while (count < 5) {\n        codePoint = getCodePoint(text.substr(index, 2));\n\n        if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n          return false;\n        }\n\n        count += 1;\n        index += 2;\n      }\n\n      return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n    }\n\n    function setIsLoaded() {\n      this.isLoaded = true;\n    }\n\n    var Font = function Font() {\n      this.fonts = [];\n      this.chars = null;\n      this.typekitLoaded = 0;\n      this.isLoaded = false;\n      this._warned = false;\n      this.initTime = Date.now();\n      this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n      this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n    };\n\n    Font.isModifier = isModifier;\n    Font.isZeroWidthJoiner = isZeroWidthJoiner;\n    Font.isFlagEmoji = isFlagEmoji;\n    Font.isRegionalCode = isRegionalCode;\n    Font.isCombinedCharacter = isCombinedCharacter;\n    Font.isRegionalFlag = isRegionalFlag;\n    Font.isVariationSelector = isVariationSelector;\n    Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n    var fontPrototype = {\n      addChars: addChars,\n      addFonts: addFonts,\n      getCharData: getCharData,\n      getFontByName: getFontByName,\n      measureText: measureText,\n      checkLoadedFonts: checkLoadedFonts,\n      setIsLoaded: setIsLoaded\n    };\n    Font.prototype = fontPrototype;\n    return Font;\n  }();\n\n  function SlotManager(animationData) {\n    this.animationData = animationData;\n  }\n\n  SlotManager.prototype.getProp = function (data) {\n    if (this.animationData.slots && this.animationData.slots[data.sid]) {\n      return Object.assign(data, this.animationData.slots[data.sid].p);\n    }\n\n    return data;\n  };\n\n  function slotFactory(animationData) {\n    return new SlotManager(animationData);\n  }\n\n  function RenderableElement() {}\n\n  RenderableElement.prototype = {\n    initRenderable: function initRenderable() {\n      // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n      this.isInRange = false; // layer's display state\n\n      this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n      this.isTransparent = false; // list of animated components\n\n      this.renderableComponents = [];\n    },\n    addRenderableComponent: function addRenderableComponent(component) {\n      if (this.renderableComponents.indexOf(component) === -1) {\n        this.renderableComponents.push(component);\n      }\n    },\n    removeRenderableComponent: function removeRenderableComponent(component) {\n      if (this.renderableComponents.indexOf(component) !== -1) {\n        this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n      }\n    },\n    prepareRenderableFrame: function prepareRenderableFrame(num) {\n      this.checkLayerLimits(num);\n    },\n    checkTransparency: function checkTransparency() {\n      if (this.finalTransform.mProp.o.v <= 0) {\n        if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n          this.isTransparent = true;\n          this.hide();\n        }\n      } else if (this.isTransparent) {\n        this.isTransparent = false;\n        this.show();\n      }\n    },\n\n    /**\r\n       * @function\r\n       * Initializes frame related properties.\r\n       *\r\n       * @param {number} num\r\n       * current frame number in Layer's time\r\n       *\r\n       */\n    checkLayerLimits: function checkLayerLimits(num) {\n      if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n        if (this.isInRange !== true) {\n          this.globalData._mdf = true;\n          this._mdf = true;\n          this.isInRange = true;\n          this.show();\n        }\n      } else if (this.isInRange !== false) {\n        this.globalData._mdf = true;\n        this.isInRange = false;\n        this.hide();\n      }\n    },\n    renderRenderable: function renderRenderable() {\n      var i;\n      var len = this.renderableComponents.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.renderableComponents[i].renderFrame(this._isFirstFrame);\n      }\n      /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n          this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n    },\n    sourceRectAtTime: function sourceRectAtTime() {\n      return {\n        top: 0,\n        left: 0,\n        width: 100,\n        height: 100\n      };\n    },\n    getLayerSize: function getLayerSize() {\n      if (this.data.ty === 5) {\n        return {\n          w: this.data.textData.width,\n          h: this.data.textData.height\n        };\n      }\n\n      return {\n        w: this.data.width,\n        h: this.data.height\n      };\n    }\n  };\n\n  var getBlendMode = function () {\n    var blendModeEnums = {\n      0: 'source-over',\n      1: 'multiply',\n      2: 'screen',\n      3: 'overlay',\n      4: 'darken',\n      5: 'lighten',\n      6: 'color-dodge',\n      7: 'color-burn',\n      8: 'hard-light',\n      9: 'soft-light',\n      10: 'difference',\n      11: 'exclusion',\n      12: 'hue',\n      13: 'saturation',\n      14: 'color',\n      15: 'luminosity'\n    };\n    return function (mode) {\n      return blendModeEnums[mode] || '';\n    };\n  }();\n\n  function SliderEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function AngleEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function ColorEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n  }\n\n  function PointEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n  }\n\n  function LayerIndexEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function MaskIndexEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function CheckboxEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function NoValueEffect() {\n    this.p = {};\n  }\n\n  function EffectsManager(data, element) {\n    var effects = data.ef || [];\n    this.effectElements = [];\n    var i;\n    var len = effects.length;\n    var effectItem;\n\n    for (i = 0; i < len; i += 1) {\n      effectItem = new GroupEffect(effects[i], element);\n      this.effectElements.push(effectItem);\n    }\n  }\n\n  function GroupEffect(data, element) {\n    this.init(data, element);\n  }\n\n  extendPrototype([DynamicPropertyContainer], GroupEffect);\n  GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n  GroupEffect.prototype.init = function (data, element) {\n    this.data = data;\n    this.effectElements = [];\n    this.initDynamicPropertyContainer(element);\n    var i;\n    var len = this.data.ef.length;\n    var eff;\n    var effects = this.data.ef;\n\n    for (i = 0; i < len; i += 1) {\n      eff = null;\n\n      switch (effects[i].ty) {\n        case 0:\n          eff = new SliderEffect(effects[i], element, this);\n          break;\n\n        case 1:\n          eff = new AngleEffect(effects[i], element, this);\n          break;\n\n        case 2:\n          eff = new ColorEffect(effects[i], element, this);\n          break;\n\n        case 3:\n          eff = new PointEffect(effects[i], element, this);\n          break;\n\n        case 4:\n        case 7:\n          eff = new CheckboxEffect(effects[i], element, this);\n          break;\n\n        case 10:\n          eff = new LayerIndexEffect(effects[i], element, this);\n          break;\n\n        case 11:\n          eff = new MaskIndexEffect(effects[i], element, this);\n          break;\n\n        case 5:\n          eff = new EffectsManager(effects[i], element, this);\n          break;\n        // case 6:\n\n        default:\n          eff = new NoValueEffect(effects[i], element, this);\n          break;\n      }\n\n      if (eff) {\n        this.effectElements.push(eff);\n      }\n    }\n  };\n\n  function BaseElement() {}\n\n  BaseElement.prototype = {\n    checkMasks: function checkMasks() {\n      if (!this.data.hasMask) {\n        return false;\n      }\n\n      var i = 0;\n      var len = this.data.masksProperties.length;\n\n      while (i < len) {\n        if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n          return true;\n        }\n\n        i += 1;\n      }\n\n      return false;\n    },\n    initExpressions: function initExpressions() {\n      var expressionsInterfaces = getExpressionInterfaces();\n\n      if (!expressionsInterfaces) {\n        return;\n      }\n\n      var LayerExpressionInterface = expressionsInterfaces('layer');\n      var EffectsExpressionInterface = expressionsInterfaces('effects');\n      var ShapeExpressionInterface = expressionsInterfaces('shape');\n      var TextExpressionInterface = expressionsInterfaces('text');\n      var CompExpressionInterface = expressionsInterfaces('comp');\n      this.layerInterface = LayerExpressionInterface(this);\n\n      if (this.data.hasMask && this.maskManager) {\n        this.layerInterface.registerMaskInterface(this.maskManager);\n      }\n\n      var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n      this.layerInterface.registerEffectsInterface(effectsInterface);\n\n      if (this.data.ty === 0 || this.data.xt) {\n        this.compInterface = CompExpressionInterface(this);\n      } else if (this.data.ty === 4) {\n        this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n        this.layerInterface.content = this.layerInterface.shapeInterface;\n      } else if (this.data.ty === 5) {\n        this.layerInterface.textInterface = TextExpressionInterface(this);\n        this.layerInterface.text = this.layerInterface.textInterface;\n      }\n    },\n    setBlendMode: function setBlendMode() {\n      var blendModeValue = getBlendMode(this.data.bm);\n      var elem = this.baseElement || this.layerElement;\n      elem.style['mix-blend-mode'] = blendModeValue;\n    },\n    initBaseData: function initBaseData(data, globalData, comp) {\n      this.globalData = globalData;\n      this.comp = comp;\n      this.data = data;\n      this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n      if (!this.data.sr) {\n        this.data.sr = 1;\n      } // effects manager\n\n\n      this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n    },\n    getType: function getType() {\n      return this.type;\n    },\n    sourceRectAtTime: function sourceRectAtTime() {}\n  };\n\n  /**\r\n   * @file\r\n   * Handles element's layer frame update.\r\n   * Checks layer in point and out point\r\n   *\r\n   */\n  function FrameElement() {}\n\n  FrameElement.prototype = {\n    /**\r\n       * @function\r\n       * Initializes frame related properties.\r\n       *\r\n       */\n    initFrame: function initFrame() {\n      // set to true when inpoint is rendered\n      this._isFirstFrame = false; // list of animated properties\n\n      this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n      this._mdf = false;\n    },\n\n    /**\r\n       * @function\r\n       * Calculates all dynamic values\r\n       *\r\n       * @param {number} num\r\n       * current frame number in Layer's time\r\n       * @param {boolean} isVisible\r\n       * if layers is currently in range\r\n       *\r\n       */\n    prepareProperties: function prepareProperties(num, isVisible) {\n      var i;\n      var len = this.dynamicProperties.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n          this.dynamicProperties[i].getValue();\n\n          if (this.dynamicProperties[i]._mdf) {\n            this.globalData._mdf = true;\n            this._mdf = true;\n          }\n        }\n      }\n    },\n    addDynamicProperty: function addDynamicProperty(prop) {\n      if (this.dynamicProperties.indexOf(prop) === -1) {\n        this.dynamicProperties.push(prop);\n      }\n    }\n  };\n\n  function FootageElement(data, globalData, comp) {\n    this.initFrame();\n    this.initRenderable();\n    this.assetData = globalData.getAssetData(data.refId);\n    this.footageData = globalData.imageLoader.getAsset(this.assetData);\n    this.initBaseData(data, globalData, comp);\n  }\n\n  FootageElement.prototype.prepareFrame = function () {};\n\n  extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n  FootageElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  FootageElement.prototype.renderFrame = function () {};\n\n  FootageElement.prototype.destroy = function () {};\n\n  FootageElement.prototype.initExpressions = function () {\n    var expressionsInterfaces = getExpressionInterfaces();\n\n    if (!expressionsInterfaces) {\n      return;\n    }\n\n    var FootageInterface = expressionsInterfaces('footage');\n    this.layerInterface = FootageInterface(this);\n  };\n\n  FootageElement.prototype.getFootageData = function () {\n    return this.footageData;\n  };\n\n  function AudioElement(data, globalData, comp) {\n    this.initFrame();\n    this.initRenderable();\n    this.assetData = globalData.getAssetData(data.refId);\n    this.initBaseData(data, globalData, comp);\n    this._isPlaying = false;\n    this._canPlay = false;\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    this.audio = this.globalData.audioController.createAudio(assetPath);\n    this._currentTime = 0;\n    this.globalData.audioController.addAudio(this);\n    this._volumeMultiplier = 1;\n    this._volume = 1;\n    this._previousVolume = null;\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n    this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n      k: [100]\n    }, 1, 0.01, this);\n  }\n\n  AudioElement.prototype.prepareFrame = function (num) {\n    this.prepareRenderableFrame(num, true);\n    this.prepareProperties(num, true);\n\n    if (!this.tm._placeholder) {\n      var timeRemapped = this.tm.v;\n      this._currentTime = timeRemapped;\n    } else {\n      this._currentTime = num / this.data.sr;\n    }\n\n    this._volume = this.lv.v[0];\n    var totalVolume = this._volume * this._volumeMultiplier;\n\n    if (this._previousVolume !== totalVolume) {\n      this._previousVolume = totalVolume;\n      this.audio.volume(totalVolume);\n    }\n  };\n\n  extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n  AudioElement.prototype.renderFrame = function () {\n    if (this.isInRange && this._canPlay) {\n      if (!this._isPlaying) {\n        this.audio.play();\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\n        this._isPlaying = true;\n      } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\n      }\n    }\n  };\n\n  AudioElement.prototype.show = function () {// this.audio.play()\n  };\n\n  AudioElement.prototype.hide = function () {\n    this.audio.pause();\n    this._isPlaying = false;\n  };\n\n  AudioElement.prototype.pause = function () {\n    this.audio.pause();\n    this._isPlaying = false;\n    this._canPlay = false;\n  };\n\n  AudioElement.prototype.resume = function () {\n    this._canPlay = true;\n  };\n\n  AudioElement.prototype.setRate = function (rateValue) {\n    this.audio.rate(rateValue);\n  };\n\n  AudioElement.prototype.volume = function (volumeValue) {\n    this._volumeMultiplier = volumeValue;\n    this._previousVolume = volumeValue * this._volume;\n    this.audio.volume(this._previousVolume);\n  };\n\n  AudioElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  AudioElement.prototype.destroy = function () {};\n\n  AudioElement.prototype.sourceRectAtTime = function () {};\n\n  AudioElement.prototype.initExpressions = function () {};\n\n  function BaseRenderer() {}\n\n  BaseRenderer.prototype.checkLayers = function (num) {\n    var i;\n    var len = this.layers.length;\n    var data;\n    this.completeLayers = true;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (!this.elements[i]) {\n        data = this.layers[i];\n\n        if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n          this.buildItem(i);\n        }\n      }\n\n      this.completeLayers = this.elements[i] ? this.completeLayers : false;\n    }\n\n    this.checkPendingElements();\n  };\n\n  BaseRenderer.prototype.createItem = function (layer) {\n    switch (layer.ty) {\n      case 2:\n        return this.createImage(layer);\n\n      case 0:\n        return this.createComp(layer);\n\n      case 1:\n        return this.createSolid(layer);\n\n      case 3:\n        return this.createNull(layer);\n\n      case 4:\n        return this.createShape(layer);\n\n      case 5:\n        return this.createText(layer);\n\n      case 6:\n        return this.createAudio(layer);\n\n      case 13:\n        return this.createCamera(layer);\n\n      case 15:\n        return this.createFootage(layer);\n\n      default:\n        return this.createNull(layer);\n    }\n  };\n\n  BaseRenderer.prototype.createCamera = function () {\n    throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n  };\n\n  BaseRenderer.prototype.createAudio = function (data) {\n    return new AudioElement(data, this.globalData, this);\n  };\n\n  BaseRenderer.prototype.createFootage = function (data) {\n    return new FootageElement(data, this.globalData, this);\n  };\n\n  BaseRenderer.prototype.buildAllItems = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.buildItem(i);\n    }\n\n    this.checkPendingElements();\n  };\n\n  BaseRenderer.prototype.includeLayers = function (newLayers) {\n    this.completeLayers = false;\n    var i;\n    var len = newLayers.length;\n    var j;\n    var jLen = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      j = 0;\n\n      while (j < jLen) {\n        if (this.layers[j].id === newLayers[i].id) {\n          this.layers[j] = newLayers[i];\n          break;\n        }\n\n        j += 1;\n      }\n    }\n  };\n\n  BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n    this.globalData.projectInterface = pInterface;\n  };\n\n  BaseRenderer.prototype.initItems = function () {\n    if (!this.globalData.progressiveLoad) {\n      this.buildAllItems();\n    }\n  };\n\n  BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n    var elements = this.elements;\n    var layers = this.layers;\n    var i = 0;\n    var len = layers.length;\n\n    while (i < len) {\n      if (layers[i].ind == parentName) {\n        // eslint-disable-line eqeqeq\n        if (!elements[i] || elements[i] === true) {\n          this.buildItem(i);\n          this.addPendingElement(element);\n        } else {\n          hierarchy.push(elements[i]);\n          elements[i].setAsParent();\n\n          if (layers[i].parent !== undefined) {\n            this.buildElementParenting(element, layers[i].parent, hierarchy);\n          } else {\n            element.setHierarchy(hierarchy);\n          }\n        }\n      }\n\n      i += 1;\n    }\n  };\n\n  BaseRenderer.prototype.addPendingElement = function (element) {\n    this.pendingElements.push(element);\n  };\n\n  BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n    var i;\n    var len = assets.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (assets[i].xt) {\n        var comp = this.createComp(assets[i]);\n        comp.initExpressions();\n        this.globalData.projectInterface.registerComposition(comp);\n      }\n    }\n  };\n\n  BaseRenderer.prototype.getElementById = function (ind) {\n    var i;\n    var len = this.elements.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i].data.ind === ind) {\n        return this.elements[i];\n      }\n    }\n\n    return null;\n  };\n\n  BaseRenderer.prototype.getElementByPath = function (path) {\n    var pathValue = path.shift();\n    var element;\n\n    if (typeof pathValue === 'number') {\n      element = this.elements[pathValue];\n    } else {\n      var i;\n      var len = this.elements.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (this.elements[i].data.nm === pathValue) {\n          element = this.elements[i];\n          break;\n        }\n      }\n    }\n\n    if (path.length === 0) {\n      return element;\n    }\n\n    return element.getElementByPath(path);\n  };\n\n  BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n    this.globalData.fontManager = new FontManager();\n    this.globalData.slotManager = slotFactory(animData);\n    this.globalData.fontManager.addChars(animData.chars);\n    this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n    this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n    this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n    this.globalData.imageLoader = this.animationItem.imagePreloader;\n    this.globalData.audioController = this.animationItem.audioController;\n    this.globalData.frameId = 0;\n    this.globalData.frameRate = animData.fr;\n    this.globalData.nm = animData.nm;\n    this.globalData.compSize = {\n      w: animData.w,\n      h: animData.h\n    };\n  };\n\n  var effectTypes = {\n    TRANSFORM_EFFECT: 'transformEFfect'\n  };\n\n  function TransformElement() {}\n\n  TransformElement.prototype = {\n    initTransform: function initTransform() {\n      var mat = new Matrix();\n      this.finalTransform = {\n        mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n          o: 0\n        },\n        _matMdf: false,\n        _localMatMdf: false,\n        _opMdf: false,\n        mat: mat,\n        localMat: mat,\n        localOpacity: 1\n      };\n\n      if (this.data.ao) {\n        this.finalTransform.mProp.autoOriented = true;\n      } // TODO: check TYPE 11: Guided elements\n\n\n      if (this.data.ty !== 11) {// this.createElements();\n      }\n    },\n    renderTransform: function renderTransform() {\n      this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n      this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n      if (this.hierarchy) {\n        var mat;\n        var finalMat = this.finalTransform.mat;\n        var i = 0;\n        var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n        if (!this.finalTransform._matMdf) {\n          while (i < len) {\n            if (this.hierarchy[i].finalTransform.mProp._mdf) {\n              this.finalTransform._matMdf = true;\n              break;\n            }\n\n            i += 1;\n          }\n        }\n\n        if (this.finalTransform._matMdf) {\n          mat = this.finalTransform.mProp.v.props;\n          finalMat.cloneFromProps(mat);\n\n          for (i = 0; i < len; i += 1) {\n            finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n          }\n        }\n      }\n\n      if (this.finalTransform._matMdf) {\n        this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n      }\n\n      if (this.finalTransform._opMdf) {\n        this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n      }\n    },\n    renderLocalTransform: function renderLocalTransform() {\n      if (this.localTransforms) {\n        var i = 0;\n        var len = this.localTransforms.length;\n        this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n        if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n          while (i < len) {\n            if (this.localTransforms[i]._mdf) {\n              this.finalTransform._localMatMdf = true;\n            }\n\n            if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n              this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n              this.finalTransform._opMdf = true;\n            }\n\n            i += 1;\n          }\n        }\n\n        if (this.finalTransform._localMatMdf) {\n          var localMat = this.finalTransform.localMat;\n          this.localTransforms[0].matrix.clone(localMat);\n\n          for (i = 1; i < len; i += 1) {\n            var lmat = this.localTransforms[i].matrix;\n            localMat.multiply(lmat);\n          }\n\n          localMat.multiply(this.finalTransform.mat);\n        }\n\n        if (this.finalTransform._opMdf) {\n          var localOp = this.finalTransform.localOpacity;\n\n          for (i = 0; i < len; i += 1) {\n            localOp *= this.localTransforms[i].opacity * 0.01;\n          }\n\n          this.finalTransform.localOpacity = localOp;\n        }\n      }\n    },\n    searchEffectTransforms: function searchEffectTransforms() {\n      if (this.renderableEffectsManager) {\n        var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n        if (transformEffects.length) {\n          this.localTransforms = [];\n          this.finalTransform.localMat = new Matrix();\n          var i = 0;\n          var len = transformEffects.length;\n\n          for (i = 0; i < len; i += 1) {\n            this.localTransforms.push(transformEffects[i]);\n          }\n        }\n      }\n    },\n    globalToLocal: function globalToLocal(pt) {\n      var transforms = [];\n      transforms.push(this.finalTransform);\n      var flag = true;\n      var comp = this.comp;\n\n      while (flag) {\n        if (comp.finalTransform) {\n          if (comp.data.hasMask) {\n            transforms.splice(0, 0, comp.finalTransform);\n          }\n\n          comp = comp.comp;\n        } else {\n          flag = false;\n        }\n      }\n\n      var i;\n      var len = transforms.length;\n      var ptNew;\n\n      for (i = 0; i < len; i += 1) {\n        ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n        pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n      }\n\n      return pt;\n    },\n    mHelper: new Matrix()\n  };\n\n  function MaskElement(data, element, globalData) {\n    this.data = data;\n    this.element = element;\n    this.globalData = globalData;\n    this.storedData = [];\n    this.masksProperties = this.data.masksProperties || [];\n    this.maskElement = null;\n    var defs = this.globalData.defs;\n    var i;\n    var len = this.masksProperties ? this.masksProperties.length : 0;\n    this.viewData = createSizedArray(len);\n    this.solidPath = '';\n    var path;\n    var properties = this.masksProperties;\n    var count = 0;\n    var currentMasks = [];\n    var j;\n    var jLen;\n    var layerId = createElementID();\n    var rect;\n    var expansor;\n    var feMorph;\n    var x;\n    var maskType = 'clipPath';\n    var maskRef = 'clip-path';\n\n    for (i = 0; i < len; i += 1) {\n      if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n        maskType = 'mask';\n        maskRef = 'mask';\n      }\n\n      if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n        rect = createNS('rect');\n        rect.setAttribute('fill', '#ffffff');\n        rect.setAttribute('width', this.element.comp.data.w || 0);\n        rect.setAttribute('height', this.element.comp.data.h || 0);\n        currentMasks.push(rect);\n      } else {\n        rect = null;\n      }\n\n      path = createNS('path');\n\n      if (properties[i].mode === 'n') {\n        // TODO move this to a factory or to a constructor\n        this.viewData[i] = {\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n          elem: path,\n          lastPath: ''\n        };\n        defs.appendChild(path);\n      } else {\n        count += 1;\n        path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n        path.setAttribute('clip-rule', 'nonzero');\n        var filterID;\n\n        if (properties[i].x.k !== 0) {\n          maskType = 'mask';\n          maskRef = 'mask';\n          x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n          filterID = createElementID();\n          expansor = createNS('filter');\n          expansor.setAttribute('id', filterID);\n          feMorph = createNS('feMorphology');\n          feMorph.setAttribute('operator', 'erode');\n          feMorph.setAttribute('in', 'SourceGraphic');\n          feMorph.setAttribute('radius', '0');\n          expansor.appendChild(feMorph);\n          defs.appendChild(expansor);\n          path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n        } else {\n          feMorph = null;\n          x = null;\n        } // TODO move this to a factory or to a constructor\n\n\n        this.storedData[i] = {\n          elem: path,\n          x: x,\n          expan: feMorph,\n          lastPath: '',\n          lastOperator: '',\n          filterId: filterID,\n          lastRadius: 0\n        };\n\n        if (properties[i].mode === 'i') {\n          jLen = currentMasks.length;\n          var g = createNS('g');\n\n          for (j = 0; j < jLen; j += 1) {\n            g.appendChild(currentMasks[j]);\n          }\n\n          var mask = createNS('mask');\n          mask.setAttribute('mask-type', 'alpha');\n          mask.setAttribute('id', layerId + '_' + count);\n          mask.appendChild(path);\n          defs.appendChild(mask);\n          g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n          currentMasks.length = 0;\n          currentMasks.push(g);\n        } else {\n          currentMasks.push(path);\n        }\n\n        if (properties[i].inv && !this.solidPath) {\n          this.solidPath = this.createLayerSolidPath();\n        } // TODO move this to a factory or to a constructor\n\n\n        this.viewData[i] = {\n          elem: path,\n          lastPath: '',\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n          invRect: rect\n        };\n\n        if (!this.viewData[i].prop.k) {\n          this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n        }\n      }\n    }\n\n    this.maskElement = createNS(maskType);\n    len = currentMasks.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.maskElement.appendChild(currentMasks[i]);\n    }\n\n    if (count > 0) {\n      this.maskElement.setAttribute('id', layerId);\n      this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n      defs.appendChild(this.maskElement);\n    }\n\n    if (this.viewData.length) {\n      this.element.addRenderableComponent(this);\n    }\n  }\n\n  MaskElement.prototype.getMaskProperty = function (pos) {\n    return this.viewData[pos].prop;\n  };\n\n  MaskElement.prototype.renderFrame = function (isFirstFrame) {\n    var finalMat = this.element.finalTransform.mat;\n    var i;\n    var len = this.masksProperties.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.viewData[i].prop._mdf || isFirstFrame) {\n        this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n      }\n\n      if (this.viewData[i].op._mdf || isFirstFrame) {\n        this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n      }\n\n      if (this.masksProperties[i].mode !== 'n') {\n        if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n          this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n        }\n\n        if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n          var feMorph = this.storedData[i].expan;\n\n          if (this.storedData[i].x.v < 0) {\n            if (this.storedData[i].lastOperator !== 'erode') {\n              this.storedData[i].lastOperator = 'erode';\n              this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n            }\n\n            feMorph.setAttribute('radius', -this.storedData[i].x.v);\n          } else {\n            if (this.storedData[i].lastOperator !== 'dilate') {\n              this.storedData[i].lastOperator = 'dilate';\n              this.storedData[i].elem.setAttribute('filter', null);\n            }\n\n            this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n          }\n        }\n      }\n    }\n  };\n\n  MaskElement.prototype.getMaskelement = function () {\n    return this.maskElement;\n  };\n\n  MaskElement.prototype.createLayerSolidPath = function () {\n    var path = 'M0,0 ';\n    path += ' h' + this.globalData.compSize.w;\n    path += ' v' + this.globalData.compSize.h;\n    path += ' h-' + this.globalData.compSize.w;\n    path += ' v-' + this.globalData.compSize.h + ' ';\n    return path;\n  };\n\n  MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n    var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n    var i;\n    var len;\n    len = pathNodes._length;\n\n    for (i = 1; i < len; i += 1) {\n      // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n    } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n    if (pathNodes.c && len > 1) {\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n    } // pathNodes.__renderedString = pathString;\n\n\n    if (viewData.lastPath !== pathString) {\n      var pathShapeValue = '';\n\n      if (viewData.elem) {\n        if (pathNodes.c) {\n          pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n        }\n\n        viewData.elem.setAttribute('d', pathShapeValue);\n      }\n\n      viewData.lastPath = pathString;\n    }\n  };\n\n  MaskElement.prototype.destroy = function () {\n    this.element = null;\n    this.globalData = null;\n    this.maskElement = null;\n    this.data = null;\n    this.masksProperties = null;\n  };\n\n  var filtersFactory = function () {\n    var ob = {};\n    ob.createFilter = createFilter;\n    ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n    function createFilter(filId, skipCoordinates) {\n      var fil = createNS('filter');\n      fil.setAttribute('id', filId);\n\n      if (skipCoordinates !== true) {\n        fil.setAttribute('filterUnits', 'objectBoundingBox');\n        fil.setAttribute('x', '0%');\n        fil.setAttribute('y', '0%');\n        fil.setAttribute('width', '100%');\n        fil.setAttribute('height', '100%');\n      }\n\n      return fil;\n    }\n\n    function createAlphaToLuminanceFilter() {\n      var feColorMatrix = createNS('feColorMatrix');\n      feColorMatrix.setAttribute('type', 'matrix');\n      feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n      feColorMatrix.setAttribute('values', '0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1');\n      return feColorMatrix;\n    }\n\n    return ob;\n  }();\n\n  var featureSupport = function () {\n    var ob = {\n      maskType: true,\n      svgLumaHidden: true,\n      offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n    };\n\n    if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n      ob.maskType = false;\n    }\n\n    if (/firefox/i.test(navigator.userAgent)) {\n      ob.svgLumaHidden = false;\n    }\n\n    return ob;\n  }();\n\n  var registeredEffects$1 = {};\n  var idPrefix = 'filter_result_';\n\n  function SVGEffects(elem) {\n    var i;\n    var source = 'SourceGraphic';\n    var len = elem.data.ef ? elem.data.ef.length : 0;\n    var filId = createElementID();\n    var fil = filtersFactory.createFilter(filId, true);\n    var count = 0;\n    this.filters = [];\n    var filterManager;\n\n    for (i = 0; i < len; i += 1) {\n      filterManager = null;\n      var type = elem.data.ef[i].ty;\n\n      if (registeredEffects$1[type]) {\n        var Effect = registeredEffects$1[type].effect;\n        filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n        source = idPrefix + count;\n\n        if (registeredEffects$1[type].countsAsEffect) {\n          count += 1;\n        }\n      }\n\n      if (filterManager) {\n        this.filters.push(filterManager);\n      }\n    }\n\n    if (count) {\n      elem.globalData.defs.appendChild(fil);\n      elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n    }\n\n    if (this.filters.length) {\n      elem.addRenderableComponent(this);\n    }\n  }\n\n  SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n    var i;\n    var len = this.filters.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.filters[i].renderFrame(_isFirstFrame);\n    }\n  };\n\n  SVGEffects.prototype.getEffects = function (type) {\n    var i;\n    var len = this.filters.length;\n    var effects = [];\n\n    for (i = 0; i < len; i += 1) {\n      if (this.filters[i].type === type) {\n        effects.push(this.filters[i]);\n      }\n    }\n\n    return effects;\n  };\n\n  function registerEffect$1(id, effect, countsAsEffect) {\n    registeredEffects$1[id] = {\n      effect: effect,\n      countsAsEffect: countsAsEffect\n    };\n  }\n\n  function SVGBaseElement() {}\n\n  SVGBaseElement.prototype = {\n    initRendererElement: function initRendererElement() {\n      this.layerElement = createNS('g');\n    },\n    createContainerElements: function createContainerElements() {\n      this.matteElement = createNS('g');\n      this.transformedElement = this.layerElement;\n      this.maskedElement = this.layerElement;\n      this._sizeChanged = false;\n      var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n      if (this.data.td) {\n        this.matteMasks = {};\n        var gg = createNS('g');\n        gg.setAttribute('id', this.layerId);\n        gg.appendChild(this.layerElement);\n        layerElementParent = gg;\n        this.globalData.defs.appendChild(gg);\n      } else if (this.data.tt) {\n        this.matteElement.appendChild(this.layerElement);\n        layerElementParent = this.matteElement;\n        this.baseElement = this.matteElement;\n      } else {\n        this.baseElement = this.layerElement;\n      }\n\n      if (this.data.ln) {\n        this.layerElement.setAttribute('id', this.data.ln);\n      }\n\n      if (this.data.cl) {\n        this.layerElement.setAttribute('class', this.data.cl);\n      } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n      if (this.data.ty === 0 && !this.data.hd) {\n        var cp = createNS('clipPath');\n        var pt = createNS('path');\n        pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n        var clipId = createElementID();\n        cp.setAttribute('id', clipId);\n        cp.appendChild(pt);\n        this.globalData.defs.appendChild(cp);\n\n        if (this.checkMasks()) {\n          var cpGroup = createNS('g');\n          cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n          cpGroup.appendChild(this.layerElement);\n          this.transformedElement = cpGroup;\n\n          if (layerElementParent) {\n            layerElementParent.appendChild(this.transformedElement);\n          } else {\n            this.baseElement = this.transformedElement;\n          }\n        } else {\n          this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n        }\n      }\n\n      if (this.data.bm !== 0) {\n        this.setBlendMode();\n      }\n    },\n    renderElement: function renderElement() {\n      if (this.finalTransform._localMatMdf) {\n        this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n      }\n\n      if (this.finalTransform._opMdf) {\n        this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n      }\n    },\n    destroyBaseElement: function destroyBaseElement() {\n      this.layerElement = null;\n      this.matteElement = null;\n      this.maskManager.destroy();\n    },\n    getBaseElement: function getBaseElement() {\n      if (this.data.hd) {\n        return null;\n      }\n\n      return this.baseElement;\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\n      this.renderableEffectsManager = new SVGEffects(this);\n      this.searchEffectTransforms();\n    },\n    getMatte: function getMatte(matteType) {\n      // This should not be a common case. But for backward compatibility, we'll create the matte object.\n      // It solves animations that have two consecutive layers marked as matte masks.\n      // Which is an undefined behavior in AE.\n      if (!this.matteMasks) {\n        this.matteMasks = {};\n      }\n\n      if (!this.matteMasks[matteType]) {\n        var id = this.layerId + '_' + matteType;\n        var filId;\n        var fil;\n        var useElement;\n        var gg;\n\n        if (matteType === 1 || matteType === 3) {\n          var masker = createNS('mask');\n          masker.setAttribute('id', id);\n          masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n          useElement = createNS('use');\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n          masker.appendChild(useElement);\n          this.globalData.defs.appendChild(masker);\n\n          if (!featureSupport.maskType && matteType === 1) {\n            masker.setAttribute('mask-type', 'luminance');\n            filId = createElementID();\n            fil = filtersFactory.createFilter(filId);\n            this.globalData.defs.appendChild(fil);\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n            gg = createNS('g');\n            gg.appendChild(useElement);\n            masker.appendChild(gg);\n            gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n          }\n        } else if (matteType === 2) {\n          var maskGroup = createNS('mask');\n          maskGroup.setAttribute('id', id);\n          maskGroup.setAttribute('mask-type', 'alpha');\n          var maskGrouper = createNS('g');\n          maskGroup.appendChild(maskGrouper);\n          filId = createElementID();\n          fil = filtersFactory.createFilter(filId); /// /\n\n          var feCTr = createNS('feComponentTransfer');\n          feCTr.setAttribute('in', 'SourceGraphic');\n          fil.appendChild(feCTr);\n          var feFunc = createNS('feFuncA');\n          feFunc.setAttribute('type', 'table');\n          feFunc.setAttribute('tableValues', '1.0 0.0');\n          feCTr.appendChild(feFunc); /// /\n\n          this.globalData.defs.appendChild(fil);\n          var alphaRect = createNS('rect');\n          alphaRect.setAttribute('width', this.comp.data.w);\n          alphaRect.setAttribute('height', this.comp.data.h);\n          alphaRect.setAttribute('x', '0');\n          alphaRect.setAttribute('y', '0');\n          alphaRect.setAttribute('fill', '#ffffff');\n          alphaRect.setAttribute('opacity', '0');\n          maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n          maskGrouper.appendChild(alphaRect);\n          useElement = createNS('use');\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n          maskGrouper.appendChild(useElement);\n\n          if (!featureSupport.maskType) {\n            maskGroup.setAttribute('mask-type', 'luminance');\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n            gg = createNS('g');\n            maskGrouper.appendChild(alphaRect);\n            gg.appendChild(this.layerElement);\n            maskGrouper.appendChild(gg);\n          }\n\n          this.globalData.defs.appendChild(maskGroup);\n        }\n\n        this.matteMasks[matteType] = id;\n      }\n\n      return this.matteMasks[matteType];\n    },\n    setMatte: function setMatte(id) {\n      if (!this.matteElement) {\n        return;\n      }\n\n      this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n    }\n  };\n\n  /**\r\n   * @file\r\n   * Handles AE's layer parenting property.\r\n   *\r\n   */\n  function HierarchyElement() {}\n\n  HierarchyElement.prototype = {\n    /**\r\n       * @function\r\n       * Initializes hierarchy properties\r\n       *\r\n       */\n    initHierarchy: function initHierarchy() {\n      // element's parent list\n      this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n      this._isParent = false;\n      this.checkParenting();\n    },\n\n    /**\r\n       * @function\r\n       * Sets layer's hierarchy.\r\n       * @param {array} hierarch\r\n       * layer's parent list\r\n       *\r\n       */\n    setHierarchy: function setHierarchy(hierarchy) {\n      this.hierarchy = hierarchy;\n    },\n\n    /**\r\n       * @function\r\n       * Sets layer as parent.\r\n       *\r\n       */\n    setAsParent: function setAsParent() {\n      this._isParent = true;\n    },\n\n    /**\r\n       * @function\r\n       * Searches layer's parenting chain\r\n       *\r\n       */\n    checkParenting: function checkParenting() {\n      if (this.data.parent !== undefined) {\n        this.comp.buildElementParenting(this, this.data.parent, []);\n      }\n    }\n  };\n\n  function RenderableDOMElement() {}\n\n  (function () {\n    var _prototype = {\n      initElement: function initElement(data, globalData, comp) {\n        this.initFrame();\n        this.initBaseData(data, globalData, comp);\n        this.initTransform(data, globalData, comp);\n        this.initHierarchy();\n        this.initRenderable();\n        this.initRendererElement();\n        this.createContainerElements();\n        this.createRenderableComponents();\n        this.createContent();\n        this.hide();\n      },\n      hide: function hide() {\n        // console.log('HIDE', this);\n        if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n          var elem = this.baseElement || this.layerElement;\n          elem.style.display = 'none';\n          this.hidden = true;\n        }\n      },\n      show: function show() {\n        // console.log('SHOW', this);\n        if (this.isInRange && !this.isTransparent) {\n          if (!this.data.hd) {\n            var elem = this.baseElement || this.layerElement;\n            elem.style.display = 'block';\n          }\n\n          this.hidden = false;\n          this._isFirstFrame = true;\n        }\n      },\n      renderFrame: function renderFrame() {\n        // If it is exported as hidden (data.hd === true) no need to render\n        // If it is not visible no need to render\n        if (this.data.hd || this.hidden) {\n          return;\n        }\n\n        this.renderTransform();\n        this.renderRenderable();\n        this.renderLocalTransform();\n        this.renderElement();\n        this.renderInnerContent();\n\n        if (this._isFirstFrame) {\n          this._isFirstFrame = false;\n        }\n      },\n      renderInnerContent: function renderInnerContent() {},\n      prepareFrame: function prepareFrame(num) {\n        this._mdf = false;\n        this.prepareRenderableFrame(num);\n        this.prepareProperties(num, this.isInRange);\n        this.checkTransparency();\n      },\n      destroy: function destroy() {\n        this.innerElem = null;\n        this.destroyBaseElement();\n      }\n    };\n    extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n  })();\n\n  function IImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n\n    if (this.assetData && this.assetData.sid) {\n      this.assetData = globalData.slotManager.getProp(this.assetData);\n    }\n\n    this.initElement(data, globalData, comp);\n    this.sourceRect = {\n      top: 0,\n      left: 0,\n      width: this.assetData.w,\n      height: this.assetData.h\n    };\n  }\n\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n  IImageElement.prototype.createContent = function () {\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    this.innerElem = createNS('image');\n    this.innerElem.setAttribute('width', this.assetData.w + 'px');\n    this.innerElem.setAttribute('height', this.assetData.h + 'px');\n    this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n    this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n    this.layerElement.appendChild(this.innerElem);\n  };\n\n  IImageElement.prototype.sourceRectAtTime = function () {\n    return this.sourceRect;\n  };\n\n  function ProcessedElement(element, position) {\n    this.elem = element;\n    this.pos = position;\n  }\n\n  function IShapeElement() {}\n\n  IShapeElement.prototype = {\n    addShapeToModifiers: function addShapeToModifiers(data) {\n      var i;\n      var len = this.shapeModifiers.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.shapeModifiers[i].addShape(data);\n      }\n    },\n    isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n      var i = 0;\n      var len = this.shapeModifiers.length;\n\n      while (i < len) {\n        if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n    renderModifiers: function renderModifiers() {\n      if (!this.shapeModifiers.length) {\n        return;\n      }\n\n      var i;\n      var len = this.shapes.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.shapes[i].sh.reset();\n      }\n\n      len = this.shapeModifiers.length;\n      var shouldBreakProcess;\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n        // TODO: find a better solution for this\n\n        if (shouldBreakProcess) {\n          break;\n        }\n      }\n    },\n    searchProcessedElement: function searchProcessedElement(elem) {\n      var elements = this.processedElements;\n      var i = 0;\n      var len = elements.length;\n\n      while (i < len) {\n        if (elements[i].elem === elem) {\n          return elements[i].pos;\n        }\n\n        i += 1;\n      }\n\n      return 0;\n    },\n    addProcessedElement: function addProcessedElement(elem, pos) {\n      var elements = this.processedElements;\n      var i = elements.length;\n\n      while (i) {\n        i -= 1;\n\n        if (elements[i].elem === elem) {\n          elements[i].pos = pos;\n          return;\n        }\n      }\n\n      elements.push(new ProcessedElement(elem, pos));\n    },\n    prepareFrame: function prepareFrame(num) {\n      this.prepareRenderableFrame(num);\n      this.prepareProperties(num, this.isInRange);\n    }\n  };\n\n  var lineCapEnum = {\n    1: 'butt',\n    2: 'round',\n    3: 'square'\n  };\n  var lineJoinEnum = {\n    1: 'miter',\n    2: 'round',\n    3: 'bevel'\n  };\n\n  function SVGShapeData(transformers, level, shape) {\n    this.caches = [];\n    this.styles = [];\n    this.transformers = transformers;\n    this.lStr = '';\n    this.sh = shape;\n    this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n    // For now, since shapes add up with other shapes. They have to be calculated every time.\n    // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n    this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n    var i = 0;\n    var len = transformers.length;\n\n    while (i < len) {\n      if (transformers[i].mProps.dynamicProperties.length) {\n        this._isAnimated = true;\n        break;\n      }\n\n      i += 1;\n    }\n  }\n\n  SVGShapeData.prototype.setAsAnimated = function () {\n    this._isAnimated = true;\n  };\n\n  function SVGStyleData(data, level) {\n    this.data = data;\n    this.type = data.ty;\n    this.d = '';\n    this.lvl = level;\n    this._mdf = false;\n    this.closed = data.hd === true;\n    this.pElem = createNS('path');\n    this.msElem = null;\n  }\n\n  SVGStyleData.prototype.reset = function () {\n    this.d = '';\n    this._mdf = false;\n  };\n\n  function DashProperty(elem, data, renderer, container) {\n    this.elem = elem;\n    this.frameId = -1;\n    this.dataProps = createSizedArray(data.length);\n    this.renderer = renderer;\n    this.k = false;\n    this.dashStr = '';\n    this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n    this.dashoffset = createTypedArray('float32', 1);\n    this.initDynamicPropertyContainer(container);\n    var i;\n    var len = data.length || 0;\n    var prop;\n\n    for (i = 0; i < len; i += 1) {\n      prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n      this.k = prop.k || this.k;\n      this.dataProps[i] = {\n        n: data[i].n,\n        p: prop\n      };\n    }\n\n    if (!this.k) {\n      this.getValue(true);\n    }\n\n    this._isAnimated = this.k;\n  }\n\n  DashProperty.prototype.getValue = function (forceRender) {\n    if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n      return;\n    }\n\n    this.frameId = this.elem.globalData.frameId;\n    this.iterateDynamicProperties();\n    this._mdf = this._mdf || forceRender;\n\n    if (this._mdf) {\n      var i = 0;\n      var len = this.dataProps.length;\n\n      if (this.renderer === 'svg') {\n        this.dashStr = '';\n      }\n\n      for (i = 0; i < len; i += 1) {\n        if (this.dataProps[i].n !== 'o') {\n          if (this.renderer === 'svg') {\n            this.dashStr += ' ' + this.dataProps[i].p.v;\n          } else {\n            this.dashArray[i] = this.dataProps[i].p.v;\n          }\n        } else {\n          this.dashoffset[0] = this.dataProps[i].p.v;\n        }\n      }\n    }\n  };\n\n  extendPrototype([DynamicPropertyContainer], DashProperty);\n\n  function SVGStrokeStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n    this.style = styleOb;\n    this._isAnimated = !!this._isAnimated;\n  }\n\n  extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n  function SVGFillStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n    this.style = styleOb;\n  }\n\n  extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n  function SVGNoStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.style = styleOb;\n  }\n\n  extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n  function GradientProperty(elem, data, container) {\n    this.data = data;\n    this.c = createTypedArray('uint8c', data.p * 4);\n    var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n    this.o = createTypedArray('float32', cLength);\n    this._cmdf = false;\n    this._omdf = false;\n    this._collapsable = this.checkCollapsable();\n    this._hasOpacity = cLength;\n    this.initDynamicPropertyContainer(container);\n    this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n    this.k = this.prop.k;\n    this.getValue(true);\n  }\n\n  GradientProperty.prototype.comparePoints = function (values, points) {\n    var i = 0;\n    var len = this.o.length / 2;\n    var diff;\n\n    while (i < len) {\n      diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n      if (diff > 0.01) {\n        return false;\n      }\n\n      i += 1;\n    }\n\n    return true;\n  };\n\n  GradientProperty.prototype.checkCollapsable = function () {\n    if (this.o.length / 2 !== this.c.length / 4) {\n      return false;\n    }\n\n    if (this.data.k.k[0].s) {\n      var i = 0;\n      var len = this.data.k.k.length;\n\n      while (i < len) {\n        if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n          return false;\n        }\n\n        i += 1;\n      }\n    } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n      return false;\n    }\n\n    return true;\n  };\n\n  GradientProperty.prototype.getValue = function (forceRender) {\n    this.prop.getValue();\n    this._mdf = false;\n    this._cmdf = false;\n    this._omdf = false;\n\n    if (this.prop._mdf || forceRender) {\n      var i;\n      var len = this.data.p * 4;\n      var mult;\n      var val;\n\n      for (i = 0; i < len; i += 1) {\n        mult = i % 4 === 0 ? 100 : 255;\n        val = Math.round(this.prop.v[i] * mult);\n\n        if (this.c[i] !== val) {\n          this.c[i] = val;\n          this._cmdf = !forceRender;\n        }\n      }\n\n      if (this.o.length) {\n        len = this.prop.v.length;\n\n        for (i = this.data.p * 4; i < len; i += 1) {\n          mult = i % 2 === 0 ? 100 : 1;\n          val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n          if (this.o[i - this.data.p * 4] !== val) {\n            this.o[i - this.data.p * 4] = val;\n            this._omdf = !forceRender;\n          }\n        }\n      }\n\n      this._mdf = !forceRender;\n    }\n  };\n\n  extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n  function SVGGradientFillStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.initGradientData(elem, data, styleOb);\n  }\n\n  SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n    this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n    this.h = PropertyFactory.getProp(elem, data.h || {\n      k: 0\n    }, 0, 0.01, this);\n    this.a = PropertyFactory.getProp(elem, data.a || {\n      k: 0\n    }, 0, degToRads, this);\n    this.g = new GradientProperty(elem, data.g, this);\n    this.style = styleOb;\n    this.stops = [];\n    this.setGradientData(styleOb.pElem, data);\n    this.setGradientOpacity(data, styleOb);\n    this._isAnimated = !!this._isAnimated;\n  };\n\n  SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n    var gradientId = createElementID();\n    var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n    gfill.setAttribute('id', gradientId);\n    gfill.setAttribute('spreadMethod', 'pad');\n    gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n    var stops = [];\n    var stop;\n    var j;\n    var jLen;\n    jLen = data.g.p * 4;\n\n    for (j = 0; j < jLen; j += 4) {\n      stop = createNS('stop');\n      gfill.appendChild(stop);\n      stops.push(stop);\n    }\n\n    pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n    this.gf = gfill;\n    this.cst = stops;\n  };\n\n  SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n    if (this.g._hasOpacity && !this.g._collapsable) {\n      var stop;\n      var j;\n      var jLen;\n      var mask = createNS('mask');\n      var maskElement = createNS('path');\n      mask.appendChild(maskElement);\n      var opacityId = createElementID();\n      var maskId = createElementID();\n      mask.setAttribute('id', maskId);\n      var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n      opFill.setAttribute('id', opacityId);\n      opFill.setAttribute('spreadMethod', 'pad');\n      opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n      jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n      var stops = this.stops;\n\n      for (j = data.g.p * 4; j < jLen; j += 2) {\n        stop = createNS('stop');\n        stop.setAttribute('stop-color', 'rgb(255,255,255)');\n        opFill.appendChild(stop);\n        stops.push(stop);\n      }\n\n      maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n      if (data.ty === 'gs') {\n        maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n        maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n        if (data.lj === 1) {\n          maskElement.setAttribute('stroke-miterlimit', data.ml);\n        }\n      }\n\n      this.of = opFill;\n      this.ms = mask;\n      this.ost = stops;\n      this.maskId = maskId;\n      styleOb.msElem = maskElement;\n    }\n  };\n\n  extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n  function SVGGradientStrokeStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n    this.initGradientData(elem, data, styleOb);\n    this._isAnimated = !!this._isAnimated;\n  }\n\n  extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n  function ShapeGroupData() {\n    this.it = [];\n    this.prevViewData = [];\n    this.gr = createNS('g');\n  }\n\n  function SVGTransformData(mProps, op, container) {\n    this.transform = {\n      mProps: mProps,\n      op: op,\n      container: container\n    };\n    this.elements = [];\n    this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n  }\n\n  var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n    if (length === 0) {\n      return '';\n    }\n\n    var _o = pathNodes.o;\n    var _i = pathNodes.i;\n    var _v = pathNodes.v;\n    var i;\n    var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n    for (i = 1; i < length; i += 1) {\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n    }\n\n    if (closed && length) {\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n      shapeString += 'z';\n    }\n\n    return shapeString;\n  };\n\n  var SVGElementsRenderer = function () {\n    var _identityMatrix = new Matrix();\n\n    var _matrixHelper = new Matrix();\n\n    var ob = {\n      createRenderFunction: createRenderFunction\n    };\n\n    function createRenderFunction(data) {\n      switch (data.ty) {\n        case 'fl':\n          return renderFill;\n\n        case 'gf':\n          return renderGradient;\n\n        case 'gs':\n          return renderGradientStroke;\n\n        case 'st':\n          return renderStroke;\n\n        case 'sh':\n        case 'el':\n        case 'rc':\n        case 'sr':\n          return renderPath;\n\n        case 'tr':\n          return renderContentTransform;\n\n        case 'no':\n          return renderNoop;\n\n        default:\n          return null;\n      }\n    }\n\n    function renderContentTransform(styleData, itemData, isFirstFrame) {\n      if (isFirstFrame || itemData.transform.op._mdf) {\n        itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n      }\n\n      if (isFirstFrame || itemData.transform.mProps._mdf) {\n        itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n      }\n    }\n\n    function renderNoop() {}\n\n    function renderPath(styleData, itemData, isFirstFrame) {\n      var j;\n      var jLen;\n      var pathStringTransformed;\n      var redraw;\n      var pathNodes;\n      var l;\n      var lLen = itemData.styles.length;\n      var lvl = itemData.lvl;\n      var paths;\n      var mat;\n      var iterations;\n      var k;\n\n      for (l = 0; l < lLen; l += 1) {\n        redraw = itemData.sh._mdf || isFirstFrame;\n\n        if (itemData.styles[l].lvl < lvl) {\n          mat = _matrixHelper.reset();\n          iterations = lvl - itemData.styles[l].lvl;\n          k = itemData.transformers.length - 1;\n\n          while (!redraw && iterations > 0) {\n            redraw = itemData.transformers[k].mProps._mdf || redraw;\n            iterations -= 1;\n            k -= 1;\n          }\n\n          if (redraw) {\n            iterations = lvl - itemData.styles[l].lvl;\n            k = itemData.transformers.length - 1;\n\n            while (iterations > 0) {\n              mat.multiply(itemData.transformers[k].mProps.v);\n              iterations -= 1;\n              k -= 1;\n            }\n          }\n        } else {\n          mat = _identityMatrix;\n        }\n\n        paths = itemData.sh.paths;\n        jLen = paths._length;\n\n        if (redraw) {\n          pathStringTransformed = '';\n\n          for (j = 0; j < jLen; j += 1) {\n            pathNodes = paths.shapes[j];\n\n            if (pathNodes && pathNodes._length) {\n              pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n            }\n          }\n\n          itemData.caches[l] = pathStringTransformed;\n        } else {\n          pathStringTransformed = itemData.caches[l];\n        }\n\n        itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n        itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n      }\n    }\n\n    function renderFill(styleData, itemData, isFirstFrame) {\n      var styleElem = itemData.style;\n\n      if (itemData.c._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n      }\n\n      if (itemData.o._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n      }\n    }\n\n    function renderGradientStroke(styleData, itemData, isFirstFrame) {\n      renderGradient(styleData, itemData, isFirstFrame);\n      renderStroke(styleData, itemData, isFirstFrame);\n    }\n\n    function renderGradient(styleData, itemData, isFirstFrame) {\n      var gfill = itemData.gf;\n      var hasOpacity = itemData.g._hasOpacity;\n      var pt1 = itemData.s.v;\n      var pt2 = itemData.e.v;\n\n      if (itemData.o._mdf || isFirstFrame) {\n        var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n        itemData.style.pElem.setAttribute(attr, itemData.o.v);\n      }\n\n      if (itemData.s._mdf || isFirstFrame) {\n        var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n        var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n        gfill.setAttribute(attr1, pt1[0]);\n        gfill.setAttribute(attr2, pt1[1]);\n\n        if (hasOpacity && !itemData.g._collapsable) {\n          itemData.of.setAttribute(attr1, pt1[0]);\n          itemData.of.setAttribute(attr2, pt1[1]);\n        }\n      }\n\n      var stops;\n      var i;\n      var len;\n      var stop;\n\n      if (itemData.g._cmdf || isFirstFrame) {\n        stops = itemData.cst;\n        var cValues = itemData.g.c;\n        len = stops.length;\n\n        for (i = 0; i < len; i += 1) {\n          stop = stops[i];\n          stop.setAttribute('offset', cValues[i * 4] + '%');\n          stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n        }\n      }\n\n      if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n        var oValues = itemData.g.o;\n\n        if (itemData.g._collapsable) {\n          stops = itemData.cst;\n        } else {\n          stops = itemData.ost;\n        }\n\n        len = stops.length;\n\n        for (i = 0; i < len; i += 1) {\n          stop = stops[i];\n\n          if (!itemData.g._collapsable) {\n            stop.setAttribute('offset', oValues[i * 2] + '%');\n          }\n\n          stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n        }\n      }\n\n      if (styleData.t === 1) {\n        if (itemData.e._mdf || isFirstFrame) {\n          gfill.setAttribute('x2', pt2[0]);\n          gfill.setAttribute('y2', pt2[1]);\n\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('x2', pt2[0]);\n            itemData.of.setAttribute('y2', pt2[1]);\n          }\n        }\n      } else {\n        var rad;\n\n        if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n          rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n          gfill.setAttribute('r', rad);\n\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('r', rad);\n          }\n        }\n\n        if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n          if (!rad) {\n            rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n          }\n\n          var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n          var percent = itemData.h.v;\n\n          if (percent >= 1) {\n            percent = 0.99;\n          } else if (percent <= -1) {\n            percent = -0.99;\n          }\n\n          var dist = rad * percent;\n          var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n          var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n          gfill.setAttribute('fx', x);\n          gfill.setAttribute('fy', y);\n\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('fx', x);\n            itemData.of.setAttribute('fy', y);\n          }\n        } // gfill.setAttribute('fy','200');\n\n      }\n    }\n\n    function renderStroke(styleData, itemData, isFirstFrame) {\n      var styleElem = itemData.style;\n      var d = itemData.d;\n\n      if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n        styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n        styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n      }\n\n      if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n        styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n      }\n\n      if (itemData.o._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n      }\n\n      if (itemData.w._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n        if (styleElem.msElem) {\n          styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n        }\n      }\n    }\n\n    return ob;\n  }();\n\n  function SVGShapeElement(data, globalData, comp) {\n    // List of drawable elements\n    this.shapes = []; // Full shape data\n\n    this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n    this.stylesList = []; // List of modifiers that will be applied to shapes\n\n    this.shapeModifiers = []; // List of items in shape tree\n\n    this.itemsData = []; // List of items in previous shape tree\n\n    this.processedElements = []; // List of animated components\n\n    this.animatedContents = [];\n    this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n    // List of elements that have been created\n\n    this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n  }\n\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n  SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n  SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n  SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n  SVGShapeElement.prototype.createContent = function () {\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n    this.filterUniqueShapes();\n  };\n  /*\r\n  This method searches for multiple shapes that affect a single element and one of them is animated\r\n  */\n\n\n  SVGShapeElement.prototype.filterUniqueShapes = function () {\n    var i;\n    var len = this.shapes.length;\n    var shape;\n    var j;\n    var jLen = this.stylesList.length;\n    var style;\n    var tempShapes = [];\n    var areAnimated = false;\n\n    for (j = 0; j < jLen; j += 1) {\n      style = this.stylesList[j];\n      areAnimated = false;\n      tempShapes.length = 0;\n\n      for (i = 0; i < len; i += 1) {\n        shape = this.shapes[i];\n\n        if (shape.styles.indexOf(style) !== -1) {\n          tempShapes.push(shape);\n          areAnimated = shape._isAnimated || areAnimated;\n        }\n      }\n\n      if (tempShapes.length > 1 && areAnimated) {\n        this.setShapesAsAnimated(tempShapes);\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n    var i;\n    var len = shapes.length;\n\n    for (i = 0; i < len; i += 1) {\n      shapes[i].setAsAnimated();\n    }\n  };\n\n  SVGShapeElement.prototype.createStyleElement = function (data, level) {\n    // TODO: prevent drawing of hidden styles\n    var elementData;\n    var styleOb = new SVGStyleData(data, level);\n    var pathElement = styleOb.pElem;\n\n    if (data.ty === 'st') {\n      elementData = new SVGStrokeStyleData(this, data, styleOb);\n    } else if (data.ty === 'fl') {\n      elementData = new SVGFillStyleData(this, data, styleOb);\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\n      var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n      elementData = new GradientConstructor(this, data, styleOb);\n      this.globalData.defs.appendChild(elementData.gf);\n\n      if (elementData.maskId) {\n        this.globalData.defs.appendChild(elementData.ms);\n        this.globalData.defs.appendChild(elementData.of);\n        pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n      }\n    } else if (data.ty === 'no') {\n      elementData = new SVGNoStyleData(this, data, styleOb);\n    }\n\n    if (data.ty === 'st' || data.ty === 'gs') {\n      pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n      pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n      pathElement.setAttribute('fill-opacity', '0');\n\n      if (data.lj === 1) {\n        pathElement.setAttribute('stroke-miterlimit', data.ml);\n      }\n    }\n\n    if (data.r === 2) {\n      pathElement.setAttribute('fill-rule', 'evenodd');\n    }\n\n    if (data.ln) {\n      pathElement.setAttribute('id', data.ln);\n    }\n\n    if (data.cl) {\n      pathElement.setAttribute('class', data.cl);\n    }\n\n    if (data.bm) {\n      pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n    }\n\n    this.stylesList.push(styleOb);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.createGroupElement = function (data) {\n    var elementData = new ShapeGroupData();\n\n    if (data.ln) {\n      elementData.gr.setAttribute('id', data.ln);\n    }\n\n    if (data.cl) {\n      elementData.gr.setAttribute('class', data.cl);\n    }\n\n    if (data.bm) {\n      elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n    }\n\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.createTransformElement = function (data, container) {\n    var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n    var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n    var ty = 4;\n\n    if (data.ty === 'rc') {\n      ty = 5;\n    } else if (data.ty === 'el') {\n      ty = 6;\n    } else if (data.ty === 'sr') {\n      ty = 7;\n    }\n\n    var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n    var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n    this.shapes.push(elementData);\n    this.addShapeToModifiers(elementData);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n    var i = 0;\n    var len = this.animatedContents.length;\n\n    while (i < len) {\n      if (this.animatedContents[i].element === element) {\n        return;\n      }\n\n      i += 1;\n    }\n\n    this.animatedContents.push({\n      fn: SVGElementsRenderer.createRenderFunction(data),\n      element: element,\n      data: data\n    });\n  };\n\n  SVGShapeElement.prototype.setElementStyles = function (elementData) {\n    var arr = elementData.styles;\n    var j;\n    var jLen = this.stylesList.length;\n\n    for (j = 0; j < jLen; j += 1) {\n      if (!this.stylesList[j].closed) {\n        arr.push(this.stylesList[j]);\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.reloadShapes = function () {\n    this._isFirstFrame = true;\n    var i;\n    var len = this.itemsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.prevViewData[i] = this.itemsData[i];\n    }\n\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n    this.filterUniqueShapes();\n    len = this.dynamicProperties.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.dynamicProperties[i].getValue();\n    }\n\n    this.renderModifiers();\n  };\n\n  SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n    var ownTransformers = [].concat(transformers);\n    var i;\n    var len = arr.length - 1;\n    var j;\n    var jLen;\n    var ownStyles = [];\n    var ownModifiers = [];\n    var currentTransform;\n    var modifier;\n    var processedPos;\n\n    for (i = len; i >= 0; i -= 1) {\n      processedPos = this.searchProcessedElement(arr[i]);\n\n      if (!processedPos) {\n        arr[i]._render = render;\n      } else {\n        itemsData[i] = prevViewData[processedPos - 1];\n      }\n\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n        if (!processedPos) {\n          itemsData[i] = this.createStyleElement(arr[i], level);\n        } else {\n          itemsData[i].style.closed = false;\n        }\n\n        if (arr[i]._render) {\n          if (itemsData[i].style.pElem.parentNode !== container) {\n            container.appendChild(itemsData[i].style.pElem);\n          }\n        }\n\n        ownStyles.push(itemsData[i].style);\n      } else if (arr[i].ty === 'gr') {\n        if (!processedPos) {\n          itemsData[i] = this.createGroupElement(arr[i]);\n        } else {\n          jLen = itemsData[i].it.length;\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\n          }\n        }\n\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n        if (arr[i]._render) {\n          if (itemsData[i].gr.parentNode !== container) {\n            container.appendChild(itemsData[i].gr);\n          }\n        }\n      } else if (arr[i].ty === 'tr') {\n        if (!processedPos) {\n          itemsData[i] = this.createTransformElement(arr[i], container);\n        }\n\n        currentTransform = itemsData[i].transform;\n        ownTransformers.push(currentTransform);\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n        if (!processedPos) {\n          itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n        }\n\n        this.setElementStyles(itemsData[i]);\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          modifier.init(this, arr[i]);\n          itemsData[i] = modifier;\n          this.shapeModifiers.push(modifier);\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = false;\n        }\n\n        ownModifiers.push(modifier);\n      } else if (arr[i].ty === 'rp') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          itemsData[i] = modifier;\n          modifier.init(this, arr, i, itemsData);\n          this.shapeModifiers.push(modifier);\n          render = false;\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = true;\n        }\n\n        ownModifiers.push(modifier);\n      }\n\n      this.addProcessedElement(arr[i], i + 1);\n    }\n\n    len = ownStyles.length;\n\n    for (i = 0; i < len; i += 1) {\n      ownStyles[i].closed = true;\n    }\n\n    len = ownModifiers.length;\n\n    for (i = 0; i < len; i += 1) {\n      ownModifiers[i].closed = true;\n    }\n  };\n\n  SVGShapeElement.prototype.renderInnerContent = function () {\n    this.renderModifiers();\n    var i;\n    var len = this.stylesList.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.stylesList[i].reset();\n    }\n\n    this.renderShape();\n\n    for (i = 0; i < len; i += 1) {\n      if (this.stylesList[i]._mdf || this._isFirstFrame) {\n        if (this.stylesList[i].msElem) {\n          this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n          this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n        }\n\n        this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.renderShape = function () {\n    var i;\n    var len = this.animatedContents.length;\n    var animatedContent;\n\n    for (i = 0; i < len; i += 1) {\n      animatedContent = this.animatedContents[i];\n\n      if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n        animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.destroy = function () {\n    this.destroyBaseElement();\n    this.shapesData = null;\n    this.itemsData = null;\n  };\n\n  function LetterProps(o, sw, sc, fc, m, p) {\n    this.o = o;\n    this.sw = sw;\n    this.sc = sc;\n    this.fc = fc;\n    this.m = m;\n    this.p = p;\n    this._mdf = {\n      o: true,\n      sw: !!sw,\n      sc: !!sc,\n      fc: !!fc,\n      m: true,\n      p: true\n    };\n  }\n\n  LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n    this._mdf.o = false;\n    this._mdf.sw = false;\n    this._mdf.sc = false;\n    this._mdf.fc = false;\n    this._mdf.m = false;\n    this._mdf.p = false;\n    var updated = false;\n\n    if (this.o !== o) {\n      this.o = o;\n      this._mdf.o = true;\n      updated = true;\n    }\n\n    if (this.sw !== sw) {\n      this.sw = sw;\n      this._mdf.sw = true;\n      updated = true;\n    }\n\n    if (this.sc !== sc) {\n      this.sc = sc;\n      this._mdf.sc = true;\n      updated = true;\n    }\n\n    if (this.fc !== fc) {\n      this.fc = fc;\n      this._mdf.fc = true;\n      updated = true;\n    }\n\n    if (this.m !== m) {\n      this.m = m;\n      this._mdf.m = true;\n      updated = true;\n    }\n\n    if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n      this.p = p;\n      this._mdf.p = true;\n      updated = true;\n    }\n\n    return updated;\n  };\n\n  function TextProperty(elem, data) {\n    this._frameId = initialDefaultFrame;\n    this.pv = '';\n    this.v = '';\n    this.kf = false;\n    this._isFirstFrame = true;\n    this._mdf = false;\n\n    if (data.d && data.d.sid) {\n      data.d = elem.globalData.slotManager.getProp(data.d);\n    }\n\n    this.data = data;\n    this.elem = elem;\n    this.comp = this.elem.comp;\n    this.keysIndex = 0;\n    this.canResize = false;\n    this.minimumFontSize = 1;\n    this.effectsSequence = [];\n    this.currentData = {\n      ascent: 0,\n      boxWidth: this.defaultBoxWidth,\n      f: '',\n      fStyle: '',\n      fWeight: '',\n      fc: '',\n      j: '',\n      justifyOffset: '',\n      l: [],\n      lh: 0,\n      lineWidths: [],\n      ls: '',\n      of: '',\n      s: '',\n      sc: '',\n      sw: 0,\n      t: 0,\n      tr: 0,\n      sz: 0,\n      ps: null,\n      fillColorAnim: false,\n      strokeColorAnim: false,\n      strokeWidthAnim: false,\n      yOffset: 0,\n      finalSize: 0,\n      finalText: [],\n      finalLineHeight: 0,\n      __complete: false\n    };\n    this.copyData(this.currentData, this.data.d.k[0].s);\n\n    if (!this.searchProperty()) {\n      this.completeTextData(this.currentData);\n    }\n  }\n\n  TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n  TextProperty.prototype.copyData = function (obj, data) {\n    for (var s in data) {\n      if (Object.prototype.hasOwnProperty.call(data, s)) {\n        obj[s] = data[s];\n      }\n    }\n\n    return obj;\n  };\n\n  TextProperty.prototype.setCurrentData = function (data) {\n    if (!data.__complete) {\n      this.completeTextData(data);\n    }\n\n    this.currentData = data;\n    this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n    this._mdf = true;\n  };\n\n  TextProperty.prototype.searchProperty = function () {\n    return this.searchKeyframes();\n  };\n\n  TextProperty.prototype.searchKeyframes = function () {\n    this.kf = this.data.d.k.length > 1;\n\n    if (this.kf) {\n      this.addEffect(this.getKeyframeValue.bind(this));\n    }\n\n    return this.kf;\n  };\n\n  TextProperty.prototype.addEffect = function (effectFunction) {\n    this.effectsSequence.push(effectFunction);\n    this.elem.addDynamicProperty(this);\n  };\n\n  TextProperty.prototype.getValue = function (_finalValue) {\n    if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n      return;\n    }\n\n    this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n    var currentValue = this.currentData;\n    var currentIndex = this.keysIndex;\n\n    if (this.lock) {\n      this.setCurrentData(this.currentData);\n      return;\n    }\n\n    this.lock = true;\n    this._mdf = false;\n    var i;\n    var len = this.effectsSequence.length;\n    var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n    for (i = 0; i < len; i += 1) {\n      // Checking if index changed to prevent creating a new object every time the expression updates.\n      if (currentIndex !== this.keysIndex) {\n        finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n      } else {\n        finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n      }\n    }\n\n    if (currentValue !== finalValue) {\n      this.setCurrentData(finalValue);\n    }\n\n    this.v = this.currentData;\n    this.pv = this.v;\n    this.lock = false;\n    this.frameId = this.elem.globalData.frameId;\n  };\n\n  TextProperty.prototype.getKeyframeValue = function () {\n    var textKeys = this.data.d.k;\n    var frameNum = this.elem.comp.renderedFrame;\n    var i = 0;\n    var len = textKeys.length;\n\n    while (i <= len - 1) {\n      if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n        break;\n      }\n\n      i += 1;\n    }\n\n    if (this.keysIndex !== i) {\n      this.keysIndex = i;\n    }\n\n    return this.data.d.k[this.keysIndex].s;\n  };\n\n  TextProperty.prototype.buildFinalText = function (text) {\n    var charactersArray = [];\n    var i = 0;\n    var len = text.length;\n    var charCode;\n    var secondCharCode;\n    var shouldCombine = false;\n    var shouldCombineNext = false;\n    var currentChars = '';\n\n    while (i < len) {\n      shouldCombine = shouldCombineNext;\n      shouldCombineNext = false;\n      charCode = text.charCodeAt(i);\n      currentChars = text.charAt(i);\n\n      if (FontManager.isCombinedCharacter(charCode)) {\n        shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n      } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n        if (FontManager.isRegionalFlag(text, i)) {\n          currentChars = text.substr(i, 14);\n        } else {\n          secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n          if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n            if (FontManager.isModifier(charCode, secondCharCode)) {\n              currentChars = text.substr(i, 2);\n              shouldCombine = true;\n            } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n              currentChars = text.substr(i, 4);\n            } else {\n              currentChars = text.substr(i, 2);\n            }\n          }\n        }\n      } else if (charCode > 0xDBFF) {\n        secondCharCode = text.charCodeAt(i + 1);\n\n        if (FontManager.isVariationSelector(charCode)) {\n          shouldCombine = true;\n        }\n      } else if (FontManager.isZeroWidthJoiner(charCode)) {\n        shouldCombine = true;\n        shouldCombineNext = true;\n      }\n\n      if (shouldCombine) {\n        charactersArray[charactersArray.length - 1] += currentChars;\n        shouldCombine = false;\n      } else {\n        charactersArray.push(currentChars);\n      }\n\n      i += currentChars.length;\n    }\n\n    return charactersArray;\n  };\n\n  TextProperty.prototype.completeTextData = function (documentData) {\n    documentData.__complete = true;\n    var fontManager = this.elem.globalData.fontManager;\n    var data = this.data;\n    var letters = [];\n    var i;\n    var len;\n    var newLineFlag;\n    var index = 0;\n    var val;\n    var anchorGrouping = data.m.g;\n    var currentSize = 0;\n    var currentPos = 0;\n    var currentLine = 0;\n    var lineWidths = [];\n    var lineWidth = 0;\n    var maxLineWidth = 0;\n    var j;\n    var jLen;\n    var fontData = fontManager.getFontByName(documentData.f);\n    var charData;\n    var cLength = 0;\n    var fontProps = getFontProperties(fontData);\n    documentData.fWeight = fontProps.weight;\n    documentData.fStyle = fontProps.style;\n    documentData.finalSize = documentData.s;\n    documentData.finalText = this.buildFinalText(documentData.t);\n    len = documentData.finalText.length;\n    documentData.finalLineHeight = documentData.lh;\n    var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n    var charCode;\n\n    if (documentData.sz) {\n      var flag = true;\n      var boxWidth = documentData.sz[0];\n      var boxHeight = documentData.sz[1];\n      var currentHeight;\n      var finalText;\n\n      while (flag) {\n        finalText = this.buildFinalText(documentData.t);\n        currentHeight = 0;\n        lineWidth = 0;\n        len = finalText.length;\n        trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n        var lastSpaceIndex = -1;\n\n        for (i = 0; i < len; i += 1) {\n          charCode = finalText[i].charCodeAt(0);\n          newLineFlag = false;\n\n          if (finalText[i] === ' ') {\n            lastSpaceIndex = i;\n          } else if (charCode === 13 || charCode === 3) {\n            lineWidth = 0;\n            newLineFlag = true;\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n          }\n\n          if (fontManager.chars) {\n            charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n            cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n          } else {\n            // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n            cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n          }\n\n          if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n            if (lastSpaceIndex === -1) {\n              len += 1;\n            } else {\n              i = lastSpaceIndex;\n            }\n\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n            finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n            lastSpaceIndex = -1;\n            lineWidth = 0;\n          } else {\n            lineWidth += cLength;\n            lineWidth += trackingOffset;\n          }\n        }\n\n        currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n        if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n          documentData.finalSize -= 1;\n          documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n        } else {\n          documentData.finalText = finalText;\n          len = documentData.finalText.length;\n          flag = false;\n        }\n      }\n    }\n\n    lineWidth = -trackingOffset;\n    cLength = 0;\n    var uncollapsedSpaces = 0;\n    var currentChar;\n\n    for (i = 0; i < len; i += 1) {\n      newLineFlag = false;\n      currentChar = documentData.finalText[i];\n      charCode = currentChar.charCodeAt(0);\n\n      if (charCode === 13 || charCode === 3) {\n        uncollapsedSpaces = 0;\n        lineWidths.push(lineWidth);\n        maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n        lineWidth = -2 * trackingOffset;\n        val = '';\n        newLineFlag = true;\n        currentLine += 1;\n      } else {\n        val = currentChar;\n      }\n\n      if (fontManager.chars) {\n        charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n        cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n      } else {\n        // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n        // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n        cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n      } //\n\n\n      if (currentChar === ' ') {\n        uncollapsedSpaces += cLength + trackingOffset;\n      } else {\n        lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n        uncollapsedSpaces = 0;\n      }\n\n      letters.push({\n        l: cLength,\n        an: cLength,\n        add: currentSize,\n        n: newLineFlag,\n        anIndexes: [],\n        val: val,\n        line: currentLine,\n        animatorJustifyOffset: 0\n      });\n\n      if (anchorGrouping == 2) {\n        // eslint-disable-line eqeqeq\n        currentSize += cLength;\n\n        if (val === '' || val === ' ' || i === len - 1) {\n          if (val === '' || val === ' ') {\n            currentSize -= cLength;\n          }\n\n          while (currentPos <= i) {\n            letters[currentPos].an = currentSize;\n            letters[currentPos].ind = index;\n            letters[currentPos].extra = cLength;\n            currentPos += 1;\n          }\n\n          index += 1;\n          currentSize = 0;\n        }\n      } else if (anchorGrouping == 3) {\n        // eslint-disable-line eqeqeq\n        currentSize += cLength;\n\n        if (val === '' || i === len - 1) {\n          if (val === '') {\n            currentSize -= cLength;\n          }\n\n          while (currentPos <= i) {\n            letters[currentPos].an = currentSize;\n            letters[currentPos].ind = index;\n            letters[currentPos].extra = cLength;\n            currentPos += 1;\n          }\n\n          currentSize = 0;\n          index += 1;\n        }\n      } else {\n        letters[index].ind = index;\n        letters[index].extra = 0;\n        index += 1;\n      }\n    }\n\n    documentData.l = letters;\n    maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n    lineWidths.push(lineWidth);\n\n    if (documentData.sz) {\n      documentData.boxWidth = documentData.sz[0];\n      documentData.justifyOffset = 0;\n    } else {\n      documentData.boxWidth = maxLineWidth;\n\n      switch (documentData.j) {\n        case 1:\n          documentData.justifyOffset = -documentData.boxWidth;\n          break;\n\n        case 2:\n          documentData.justifyOffset = -documentData.boxWidth / 2;\n          break;\n\n        default:\n          documentData.justifyOffset = 0;\n      }\n    }\n\n    documentData.lineWidths = lineWidths;\n    var animators = data.a;\n    var animatorData;\n    var letterData;\n    jLen = animators.length;\n    var based;\n    var ind;\n    var indexes = [];\n\n    for (j = 0; j < jLen; j += 1) {\n      animatorData = animators[j];\n\n      if (animatorData.a.sc) {\n        documentData.strokeColorAnim = true;\n      }\n\n      if (animatorData.a.sw) {\n        documentData.strokeWidthAnim = true;\n      }\n\n      if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n        documentData.fillColorAnim = true;\n      }\n\n      ind = 0;\n      based = animatorData.s.b;\n\n      for (i = 0; i < len; i += 1) {\n        letterData = letters[i];\n        letterData.anIndexes[j] = ind;\n\n        if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n          // eslint-disable-line eqeqeq\n          if (animatorData.s.rn === 1) {\n            indexes.push(ind);\n          }\n\n          ind += 1;\n        }\n      }\n\n      data.a[j].s.totalChars = ind;\n      var currentInd = -1;\n      var newInd;\n\n      if (animatorData.s.rn === 1) {\n        for (i = 0; i < len; i += 1) {\n          letterData = letters[i];\n\n          if (currentInd != letterData.anIndexes[j]) {\n            // eslint-disable-line eqeqeq\n            currentInd = letterData.anIndexes[j];\n            newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n          }\n\n          letterData.anIndexes[j] = newInd;\n        }\n      }\n    }\n\n    documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n    documentData.ls = documentData.ls || 0;\n    documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n  };\n\n  TextProperty.prototype.updateDocumentData = function (newData, index) {\n    index = index === undefined ? this.keysIndex : index;\n    var dData = this.copyData({}, this.data.d.k[index].s);\n    dData = this.copyData(dData, newData);\n    this.data.d.k[index].s = dData;\n    this.recalculate(index);\n    this.setCurrentData(dData);\n    this.elem.addDynamicProperty(this);\n  };\n\n  TextProperty.prototype.recalculate = function (index) {\n    var dData = this.data.d.k[index].s;\n    dData.__complete = false;\n    this.keysIndex = 0;\n    this._isFirstFrame = true;\n    this.getValue(dData);\n  };\n\n  TextProperty.prototype.canResizeFont = function (_canResize) {\n    this.canResize = _canResize;\n    this.recalculate(this.keysIndex);\n    this.elem.addDynamicProperty(this);\n  };\n\n  TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n    this.minimumFontSize = Math.floor(_fontValue) || 1;\n    this.recalculate(this.keysIndex);\n    this.elem.addDynamicProperty(this);\n  };\n\n  var TextSelectorProp = function () {\n    var max = Math.max;\n    var min = Math.min;\n    var floor = Math.floor;\n\n    function TextSelectorPropFactory(elem, data) {\n      this._currentTextLength = -1;\n      this.k = false;\n      this.data = data;\n      this.elem = elem;\n      this.comp = elem.comp;\n      this.finalS = 0;\n      this.finalE = 0;\n      this.initDynamicPropertyContainer(elem);\n      this.s = PropertyFactory.getProp(elem, data.s || {\n        k: 0\n      }, 0, 0, this);\n\n      if ('e' in data) {\n        this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n      } else {\n        this.e = {\n          v: 100\n        };\n      }\n\n      this.o = PropertyFactory.getProp(elem, data.o || {\n        k: 0\n      }, 0, 0, this);\n      this.xe = PropertyFactory.getProp(elem, data.xe || {\n        k: 0\n      }, 0, 0, this);\n      this.ne = PropertyFactory.getProp(elem, data.ne || {\n        k: 0\n      }, 0, 0, this);\n      this.sm = PropertyFactory.getProp(elem, data.sm || {\n        k: 100\n      }, 0, 0, this);\n      this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n      if (!this.dynamicProperties.length) {\n        this.getValue();\n      }\n    }\n\n    TextSelectorPropFactory.prototype = {\n      getMult: function getMult(ind) {\n        if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n          this.getValue();\n        }\n\n        var x1 = 0;\n        var y1 = 0;\n        var x2 = 1;\n        var y2 = 1;\n\n        if (this.ne.v > 0) {\n          x1 = this.ne.v / 100.0;\n        } else {\n          y1 = -this.ne.v / 100.0;\n        }\n\n        if (this.xe.v > 0) {\n          x2 = 1.0 - this.xe.v / 100.0;\n        } else {\n          y2 = 1.0 + this.xe.v / 100.0;\n        }\n\n        var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n        var mult = 0;\n        var s = this.finalS;\n        var e = this.finalE;\n        var type = this.data.sh;\n\n        if (type === 2) {\n          if (e === s) {\n            mult = ind >= e ? 1 : 0;\n          } else {\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n          }\n\n          mult = easer(mult);\n        } else if (type === 3) {\n          if (e === s) {\n            mult = ind >= e ? 0 : 1;\n          } else {\n            mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n          }\n\n          mult = easer(mult);\n        } else if (type === 4) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n            if (mult < 0.5) {\n              mult *= 2;\n            } else {\n              mult = 1 - 2 * (mult - 0.5);\n            }\n          }\n\n          mult = easer(mult);\n        } else if (type === 5) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            var tot = e - s;\n            /* ind += 0.5;\r\n                      mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n            ind = min(max(0, ind + 0.5 - s), e - s);\n            var x = -tot / 2 + ind;\n            var a = tot / 2;\n            mult = Math.sqrt(1 - x * x / (a * a));\n          }\n\n          mult = easer(mult);\n        } else if (type === 6) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            ind = min(max(0, ind + 0.5 - s), e - s);\n            mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n          }\n\n          mult = easer(mult);\n        } else {\n          if (ind >= floor(s)) {\n            if (ind - s < 0) {\n              mult = max(0, min(min(e, 1) - (s - ind), 1));\n            } else {\n              mult = max(0, min(e - ind, 1));\n            }\n          }\n\n          mult = easer(mult);\n        } // Smoothness implementation.\n        // The smoothness represents a reduced range of the original [0; 1] range.\n        // if smoothness is 25%, the new range will be [0.375; 0.625]\n        // Steps are:\n        // - find the lower value of the new range (threshold)\n        // - if multiplier is smaller than that value, floor it to 0\n        // - if it is larger,\n        //     - subtract the threshold\n        //     - divide it by the smoothness (this will return the range to [0; 1])\n        // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n        if (this.sm.v !== 100) {\n          var smoothness = this.sm.v * 0.01;\n\n          if (smoothness === 0) {\n            smoothness = 0.00000001;\n          }\n\n          var threshold = 0.5 - smoothness * 0.5;\n\n          if (mult < threshold) {\n            mult = 0;\n          } else {\n            mult = (mult - threshold) / smoothness;\n\n            if (mult > 1) {\n              mult = 1;\n            }\n          }\n        }\n\n        return mult * this.a.v;\n      },\n      getValue: function getValue(newCharsFlag) {\n        this.iterateDynamicProperties();\n        this._mdf = newCharsFlag || this._mdf;\n        this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n        if (newCharsFlag && this.data.r === 2) {\n          this.e.v = this._currentTextLength;\n        }\n\n        var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n        var o = this.o.v / divisor;\n        var s = this.s.v / divisor + o;\n        var e = this.e.v / divisor + o;\n\n        if (s > e) {\n          var _s = s;\n          s = e;\n          e = _s;\n        }\n\n        this.finalS = s;\n        this.finalE = e;\n      }\n    };\n    extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n    function getTextSelectorProp(elem, data, arr) {\n      return new TextSelectorPropFactory(elem, data, arr);\n    }\n\n    return {\n      getTextSelectorProp: getTextSelectorProp\n    };\n  }();\n\n  function TextAnimatorDataProperty(elem, animatorProps, container) {\n    var defaultData = {\n      propType: false\n    };\n    var getProp = PropertyFactory.getProp;\n    var textAnimatorAnimatables = animatorProps.a;\n    this.a = {\n      r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n      rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n      ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n      sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n      sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n      s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n      a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n      o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n      p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n      sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n      sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n      fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n      fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n      fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n      fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n      t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n    };\n    this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n    this.s.t = animatorProps.s.t;\n  }\n\n  function TextAnimatorProperty(textData, renderType, elem) {\n    this._isFirstFrame = true;\n    this._hasMaskedPath = false;\n    this._frameId = -1;\n    this._textData = textData;\n    this._renderType = renderType;\n    this._elem = elem;\n    this._animatorsData = createSizedArray(this._textData.a.length);\n    this._pathData = {};\n    this._moreOptions = {\n      alignment: {}\n    };\n    this.renderedLetters = [];\n    this.lettersChangedFlag = false;\n    this.initDynamicPropertyContainer(elem);\n  }\n\n  TextAnimatorProperty.prototype.searchProperties = function () {\n    var i;\n    var len = this._textData.a.length;\n    var animatorProps;\n    var getProp = PropertyFactory.getProp;\n\n    for (i = 0; i < len; i += 1) {\n      animatorProps = this._textData.a[i];\n      this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n    }\n\n    if (this._textData.p && 'm' in this._textData.p) {\n      this._pathData = {\n        a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n        f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n        l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n        r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n        p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n        m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n      };\n      this._hasMaskedPath = true;\n    } else {\n      this._hasMaskedPath = false;\n    }\n\n    this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n  };\n\n  TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n    this.lettersChangedFlag = lettersChangedFlag;\n\n    if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n      return;\n    }\n\n    this._isFirstFrame = false;\n    var alignment = this._moreOptions.alignment.v;\n    var animators = this._animatorsData;\n    var textData = this._textData;\n    var matrixHelper = this.mHelper;\n    var renderType = this._renderType;\n    var renderedLettersCount = this.renderedLetters.length;\n    var xPos;\n    var yPos;\n    var i;\n    var len;\n    var letters = documentData.l;\n    var pathInfo;\n    var currentLength;\n    var currentPoint;\n    var segmentLength;\n    var flag;\n    var pointInd;\n    var segmentInd;\n    var prevPoint;\n    var points;\n    var segments;\n    var partialLength;\n    var totalLength;\n    var perc;\n    var tanAngle;\n    var mask;\n\n    if (this._hasMaskedPath) {\n      mask = this._pathData.m;\n\n      if (!this._pathData.n || this._pathData._mdf) {\n        var paths = mask.v;\n\n        if (this._pathData.r.v) {\n          paths = paths.reverse();\n        } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n        pathInfo = {\n          tLength: 0,\n          segments: []\n        };\n        len = paths._length - 1;\n        var bezierData;\n        totalLength = 0;\n\n        for (i = 0; i < len; i += 1) {\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n          pathInfo.tLength += bezierData.segmentLength;\n          pathInfo.segments.push(bezierData);\n          totalLength += bezierData.segmentLength;\n        }\n\n        i = len;\n\n        if (mask.v.c) {\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n          pathInfo.tLength += bezierData.segmentLength;\n          pathInfo.segments.push(bezierData);\n          totalLength += bezierData.segmentLength;\n        }\n\n        this._pathData.pi = pathInfo;\n      }\n\n      pathInfo = this._pathData.pi;\n      currentLength = this._pathData.f.v;\n      segmentInd = 0;\n      pointInd = 1;\n      segmentLength = 0;\n      flag = true;\n      segments = pathInfo.segments;\n\n      if (currentLength < 0 && mask.v.c) {\n        if (pathInfo.tLength < Math.abs(currentLength)) {\n          currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n        }\n\n        segmentInd = segments.length - 1;\n        points = segments[segmentInd].points;\n        pointInd = points.length - 1;\n\n        while (currentLength < 0) {\n          currentLength += points[pointInd].partialLength;\n          pointInd -= 1;\n\n          if (pointInd < 0) {\n            segmentInd -= 1;\n            points = segments[segmentInd].points;\n            pointInd = points.length - 1;\n          }\n        }\n      }\n\n      points = segments[segmentInd].points;\n      prevPoint = points[pointInd - 1];\n      currentPoint = points[pointInd];\n      partialLength = currentPoint.partialLength;\n    }\n\n    len = letters.length;\n    xPos = 0;\n    yPos = 0;\n    var yOff = documentData.finalSize * 1.2 * 0.714;\n    var firstLine = true;\n    var animatorProps;\n    var animatorSelector;\n    var j;\n    var jLen;\n    var letterValue;\n    jLen = animators.length;\n    var mult;\n    var ind = -1;\n    var offf;\n    var xPathPos;\n    var yPathPos;\n    var initPathPos = currentLength;\n    var initSegmentInd = segmentInd;\n    var initPointInd = pointInd;\n    var currentLine = -1;\n    var elemOpacity;\n    var sc;\n    var sw;\n    var fc;\n    var k;\n    var letterSw;\n    var letterSc;\n    var letterFc;\n    var letterM = '';\n    var letterP = this.defaultPropsArray;\n    var letterO; //\n\n    if (documentData.j === 2 || documentData.j === 1) {\n      var animatorJustifyOffset = 0;\n      var animatorFirstCharOffset = 0;\n      var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n      var lastIndex = 0;\n      var isNewLine = true;\n\n      for (i = 0; i < len; i += 1) {\n        if (letters[i].n) {\n          if (animatorJustifyOffset) {\n            animatorJustifyOffset += animatorFirstCharOffset;\n          }\n\n          while (lastIndex < i) {\n            letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n            lastIndex += 1;\n          }\n\n          animatorJustifyOffset = 0;\n          isNewLine = true;\n        } else {\n          for (j = 0; j < jLen; j += 1) {\n            animatorProps = animators[j].a;\n\n            if (animatorProps.t.propType) {\n              if (isNewLine && documentData.j === 2) {\n                animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n              }\n\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n              if (mult.length) {\n                animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n              } else {\n                animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n              }\n            }\n          }\n\n          isNewLine = false;\n        }\n      }\n\n      if (animatorJustifyOffset) {\n        animatorJustifyOffset += animatorFirstCharOffset;\n      }\n\n      while (lastIndex < i) {\n        letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n        lastIndex += 1;\n      }\n    } //\n\n\n    for (i = 0; i < len; i += 1) {\n      matrixHelper.reset();\n      elemOpacity = 1;\n\n      if (letters[i].n) {\n        xPos = 0;\n        yPos += documentData.yOffset;\n        yPos += firstLine ? 1 : 0;\n        currentLength = initPathPos;\n        firstLine = false;\n\n        if (this._hasMaskedPath) {\n          segmentInd = initSegmentInd;\n          pointInd = initPointInd;\n          points = segments[segmentInd].points;\n          prevPoint = points[pointInd - 1];\n          currentPoint = points[pointInd];\n          partialLength = currentPoint.partialLength;\n          segmentLength = 0;\n        }\n\n        letterM = '';\n        letterFc = '';\n        letterSw = '';\n        letterO = '';\n        letterP = this.defaultPropsArray;\n      } else {\n        if (this._hasMaskedPath) {\n          if (currentLine !== letters[i].line) {\n            switch (documentData.j) {\n              case 1:\n                currentLength += totalLength - documentData.lineWidths[letters[i].line];\n                break;\n\n              case 2:\n                currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n                break;\n\n              default:\n                break;\n            }\n\n            currentLine = letters[i].line;\n          }\n\n          if (ind !== letters[i].ind) {\n            if (letters[ind]) {\n              currentLength += letters[ind].extra;\n            }\n\n            currentLength += letters[i].an / 2;\n            ind = letters[i].ind;\n          }\n\n          currentLength += alignment[0] * letters[i].an * 0.005;\n          var animatorOffset = 0;\n\n          for (j = 0; j < jLen; j += 1) {\n            animatorProps = animators[j].a;\n\n            if (animatorProps.p.propType) {\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n              if (mult.length) {\n                animatorOffset += animatorProps.p.v[0] * mult[0];\n              } else {\n                animatorOffset += animatorProps.p.v[0] * mult;\n              }\n            }\n\n            if (animatorProps.a.propType) {\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n              if (mult.length) {\n                animatorOffset += animatorProps.a.v[0] * mult[0];\n              } else {\n                animatorOffset += animatorProps.a.v[0] * mult;\n              }\n            }\n          }\n\n          flag = true; // Force alignment only works with a single line for now\n\n          if (this._pathData.a.v) {\n            currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n            currentLength += this._pathData.f.v;\n          }\n\n          while (flag) {\n            if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n              perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n              xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n              yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n              matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n              flag = false;\n            } else if (points) {\n              segmentLength += currentPoint.partialLength;\n              pointInd += 1;\n\n              if (pointInd >= points.length) {\n                pointInd = 0;\n                segmentInd += 1;\n\n                if (!segments[segmentInd]) {\n                  if (mask.v.c) {\n                    pointInd = 0;\n                    segmentInd = 0;\n                    points = segments[segmentInd].points;\n                  } else {\n                    segmentLength -= currentPoint.partialLength;\n                    points = null;\n                  }\n                } else {\n                  points = segments[segmentInd].points;\n                }\n              }\n\n              if (points) {\n                prevPoint = currentPoint;\n                currentPoint = points[pointInd];\n                partialLength = currentPoint.partialLength;\n              }\n            }\n          }\n\n          offf = letters[i].an / 2 - letters[i].add;\n          matrixHelper.translate(-offf, 0, 0);\n        } else {\n          offf = letters[i].an / 2 - letters[i].add;\n          matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n          matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.t.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n            if (xPos !== 0 || documentData.j !== 0) {\n              if (this._hasMaskedPath) {\n                if (mult.length) {\n                  currentLength += animatorProps.t.v * mult[0];\n                } else {\n                  currentLength += animatorProps.t.v * mult;\n                }\n              } else if (mult.length) {\n                xPos += animatorProps.t.v * mult[0];\n              } else {\n                xPos += animatorProps.t.v * mult;\n              }\n            }\n          }\n        }\n\n        if (documentData.strokeWidthAnim) {\n          sw = documentData.sw || 0;\n        }\n\n        if (documentData.strokeColorAnim) {\n          if (documentData.sc) {\n            sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n          } else {\n            sc = [0, 0, 0];\n          }\n        }\n\n        if (documentData.fillColorAnim && documentData.fc) {\n          fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.a.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n            if (mult.length) {\n              matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n            } else {\n              matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n            }\n          }\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.s.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n            if (mult.length) {\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n            } else {\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n            }\n          }\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n          animatorSelector = animators[j].s;\n          mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n          if (animatorProps.sk.propType) {\n            if (mult.length) {\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n            } else {\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n            }\n          }\n\n          if (animatorProps.r.propType) {\n            if (mult.length) {\n              matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n            } else {\n              matrixHelper.rotateZ(-animatorProps.r.v * mult);\n            }\n          }\n\n          if (animatorProps.ry.propType) {\n            if (mult.length) {\n              matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n            } else {\n              matrixHelper.rotateY(animatorProps.ry.v * mult);\n            }\n          }\n\n          if (animatorProps.rx.propType) {\n            if (mult.length) {\n              matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n            } else {\n              matrixHelper.rotateX(animatorProps.rx.v * mult);\n            }\n          }\n\n          if (animatorProps.o.propType) {\n            if (mult.length) {\n              elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n            } else {\n              elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n            }\n          }\n\n          if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n            if (mult.length) {\n              sw += animatorProps.sw.v * mult[0];\n            } else {\n              sw += animatorProps.sw.v * mult;\n            }\n          }\n\n          if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n            for (k = 0; k < 3; k += 1) {\n              if (mult.length) {\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n              } else {\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n              }\n            }\n          }\n\n          if (documentData.fillColorAnim && documentData.fc) {\n            if (animatorProps.fc.propType) {\n              for (k = 0; k < 3; k += 1) {\n                if (mult.length) {\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n                } else {\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n                }\n              }\n            }\n\n            if (animatorProps.fh.propType) {\n              if (mult.length) {\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n              } else {\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n              }\n            }\n\n            if (animatorProps.fs.propType) {\n              if (mult.length) {\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n              } else {\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n              }\n            }\n\n            if (animatorProps.fb.propType) {\n              if (mult.length) {\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n              } else {\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n              }\n            }\n          }\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.p.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n            if (this._hasMaskedPath) {\n              if (mult.length) {\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n              } else {\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n              }\n            } else if (mult.length) {\n              matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n            } else {\n              matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n            }\n          }\n        }\n\n        if (documentData.strokeWidthAnim) {\n          letterSw = sw < 0 ? 0 : sw;\n        }\n\n        if (documentData.strokeColorAnim) {\n          letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n        }\n\n        if (documentData.fillColorAnim && documentData.fc) {\n          letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n        }\n\n        if (this._hasMaskedPath) {\n          matrixHelper.translate(0, -documentData.ls);\n          matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n          if (this._pathData.p.v) {\n            tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n            var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n            if (currentPoint.point[0] < prevPoint.point[0]) {\n              rot += 180;\n            }\n\n            matrixHelper.rotate(-rot * Math.PI / 180);\n          }\n\n          matrixHelper.translate(xPathPos, yPathPos, 0);\n          currentLength -= alignment[0] * letters[i].an * 0.005;\n\n          if (letters[i + 1] && ind !== letters[i + 1].ind) {\n            currentLength += letters[i].an / 2;\n            currentLength += documentData.tr * 0.001 * documentData.finalSize;\n          }\n        } else {\n          matrixHelper.translate(xPos, yPos, 0);\n\n          if (documentData.ps) {\n            // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n            matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n          }\n\n          switch (documentData.j) {\n            case 1:\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n              break;\n\n            case 2:\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n              break;\n\n            default:\n              break;\n          }\n\n          matrixHelper.translate(0, -documentData.ls);\n          matrixHelper.translate(offf, 0, 0);\n          matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n          xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n        }\n\n        if (renderType === 'html') {\n          letterM = matrixHelper.toCSS();\n        } else if (renderType === 'svg') {\n          letterM = matrixHelper.to2dCSS();\n        } else {\n          letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n        }\n\n        letterO = elemOpacity;\n      }\n\n      if (renderedLettersCount <= i) {\n        letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n        this.renderedLetters.push(letterValue);\n        renderedLettersCount += 1;\n        this.lettersChangedFlag = true;\n      } else {\n        letterValue = this.renderedLetters[i];\n        this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n      }\n    }\n  };\n\n  TextAnimatorProperty.prototype.getValue = function () {\n    if (this._elem.globalData.frameId === this._frameId) {\n      return;\n    }\n\n    this._frameId = this._elem.globalData.frameId;\n    this.iterateDynamicProperties();\n  };\n\n  TextAnimatorProperty.prototype.mHelper = new Matrix();\n  TextAnimatorProperty.prototype.defaultPropsArray = [];\n  extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n  function ITextElement() {}\n\n  ITextElement.prototype.initElement = function (data, globalData, comp) {\n    this.lettersChangedFlag = true;\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n    this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n    this.initTransform(data, globalData, comp);\n    this.initHierarchy();\n    this.initRenderable();\n    this.initRendererElement();\n    this.createContainerElements();\n    this.createRenderableComponents();\n    this.createContent();\n    this.hide();\n    this.textAnimator.searchProperties(this.dynamicProperties);\n  };\n\n  ITextElement.prototype.prepareFrame = function (num) {\n    this._mdf = false;\n    this.prepareRenderableFrame(num);\n    this.prepareProperties(num, this.isInRange);\n  };\n\n  ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n    var j;\n    var jLen = shapes.length;\n    var pathNodes;\n    var shapeStr = '';\n\n    for (j = 0; j < jLen; j += 1) {\n      if (shapes[j].ty === 'sh') {\n        pathNodes = shapes[j].ks.k;\n        shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n      }\n    }\n\n    return shapeStr;\n  };\n\n  ITextElement.prototype.updateDocumentData = function (newData, index) {\n    this.textProperty.updateDocumentData(newData, index);\n  };\n\n  ITextElement.prototype.canResizeFont = function (_canResize) {\n    this.textProperty.canResizeFont(_canResize);\n  };\n\n  ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n    this.textProperty.setMinimumFontSize(_fontSize);\n  };\n\n  ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n    if (documentData.ps) {\n      matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n    }\n\n    matrixHelper.translate(0, -documentData.ls, 0);\n\n    switch (documentData.j) {\n      case 1:\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n        break;\n\n      case 2:\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n        break;\n\n      default:\n        break;\n    }\n\n    matrixHelper.translate(xPos, yPos, 0);\n  };\n\n  ITextElement.prototype.buildColor = function (colorData) {\n    return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n  };\n\n  ITextElement.prototype.emptyProp = new LetterProps();\n\n  ITextElement.prototype.destroy = function () {};\n\n  ITextElement.prototype.validateText = function () {\n    if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n      this.buildNewText();\n      this.textProperty._isFirstFrame = false;\n      this.textProperty._mdf = false;\n    }\n  };\n\n  var emptyShapeData = {\n    shapes: []\n  };\n\n  function SVGTextLottieElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.renderType = 'svg';\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n  SVGTextLottieElement.prototype.createContent = function () {\n    if (this.data.singleShape && !this.globalData.fontManager.chars) {\n      this.textContainer = createNS('text');\n    }\n  };\n\n  SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n    var i = 0;\n    var len = textArray.length;\n    var textContents = [];\n    var currentTextContent = '';\n\n    while (i < len) {\n      if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n        textContents.push(currentTextContent);\n        currentTextContent = '';\n      } else {\n        currentTextContent += textArray[i];\n      }\n\n      i += 1;\n    }\n\n    textContents.push(currentTextContent);\n    return textContents;\n  };\n\n  SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n    // data should probably be cloned to apply scale separately to each instance of a text on different layers\n    // but since text internal content gets only rendered once and then it's never rerendered,\n    // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n    // Avoiding cloning is preferred since cloning each character shape data is expensive\n    if (data.shapes && data.shapes.length) {\n      var shape = data.shapes[0];\n\n      if (shape.it) {\n        var shapeItem = shape.it[shape.it.length - 1];\n\n        if (shapeItem.s) {\n          shapeItem.s.k[0] = scale;\n          shapeItem.s.k[1] = scale;\n        }\n      }\n    }\n\n    return data;\n  };\n\n  SVGTextLottieElement.prototype.buildNewText = function () {\n    this.addDynamicProperty(this);\n    var i;\n    var len;\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n    if (documentData.fc) {\n      this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n    } else {\n      this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n    }\n\n    if (documentData.sc) {\n      this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n      this.layerElement.setAttribute('stroke-width', documentData.sw);\n    }\n\n    this.layerElement.setAttribute('font-size', documentData.finalSize);\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n    if (fontData.fClass) {\n      this.layerElement.setAttribute('class', fontData.fClass);\n    } else {\n      this.layerElement.setAttribute('font-family', fontData.fFamily);\n      var fWeight = documentData.fWeight;\n      var fStyle = documentData.fStyle;\n      this.layerElement.setAttribute('font-style', fStyle);\n      this.layerElement.setAttribute('font-weight', fWeight);\n    }\n\n    this.layerElement.setAttribute('aria-label', documentData.t);\n    var letters = documentData.l || [];\n    var usesGlyphs = !!this.globalData.fontManager.chars;\n    len = letters.length;\n    var tSpan;\n    var matrixHelper = this.mHelper;\n    var shapeStr = '';\n    var singleShape = this.data.singleShape;\n    var xPos = 0;\n    var yPos = 0;\n    var firstLine = true;\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n    if (singleShape && !usesGlyphs && !documentData.sz) {\n      var tElement = this.textContainer;\n      var justify = 'start';\n\n      switch (documentData.j) {\n        case 1:\n          justify = 'end';\n          break;\n\n        case 2:\n          justify = 'middle';\n          break;\n\n        default:\n          justify = 'start';\n          break;\n      }\n\n      tElement.setAttribute('text-anchor', justify);\n      tElement.setAttribute('letter-spacing', trackingOffset);\n      var textContent = this.buildTextContents(documentData.finalText);\n      len = textContent.length;\n      yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n      for (i = 0; i < len; i += 1) {\n        tSpan = this.textSpans[i].span || createNS('tspan');\n        tSpan.textContent = textContent[i];\n        tSpan.setAttribute('x', 0);\n        tSpan.setAttribute('y', yPos);\n        tSpan.style.display = 'inherit';\n        tElement.appendChild(tSpan);\n\n        if (!this.textSpans[i]) {\n          this.textSpans[i] = {\n            span: null,\n            glyph: null\n          };\n        }\n\n        this.textSpans[i].span = tSpan;\n        yPos += documentData.finalLineHeight;\n      }\n\n      this.layerElement.appendChild(tElement);\n    } else {\n      var cachedSpansLength = this.textSpans.length;\n      var charData;\n\n      for (i = 0; i < len; i += 1) {\n        if (!this.textSpans[i]) {\n          this.textSpans[i] = {\n            span: null,\n            childSpan: null,\n            glyph: null\n          };\n        }\n\n        if (!usesGlyphs || !singleShape || i === 0) {\n          tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n          if (cachedSpansLength <= i) {\n            tSpan.setAttribute('stroke-linecap', 'butt');\n            tSpan.setAttribute('stroke-linejoin', 'round');\n            tSpan.setAttribute('stroke-miterlimit', '4');\n            this.textSpans[i].span = tSpan;\n\n            if (usesGlyphs) {\n              var childSpan = createNS('g');\n              tSpan.appendChild(childSpan);\n              this.textSpans[i].childSpan = childSpan;\n            }\n\n            this.textSpans[i].span = tSpan;\n            this.layerElement.appendChild(tSpan);\n          }\n\n          tSpan.style.display = 'inherit';\n        }\n\n        matrixHelper.reset();\n\n        if (singleShape) {\n          if (letters[i].n) {\n            xPos = -trackingOffset;\n            yPos += documentData.yOffset;\n            yPos += firstLine ? 1 : 0;\n            firstLine = false;\n          }\n\n          this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n          xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n          xPos += trackingOffset;\n        }\n\n        if (usesGlyphs) {\n          charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n          var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n          if (charData.t === 1) {\n            glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n          } else {\n            var data = emptyShapeData;\n\n            if (charData.data && charData.data.shapes) {\n              data = this.buildShapeData(charData.data, documentData.finalSize);\n            }\n\n            glyphElement = new SVGShapeElement(data, this.globalData, this);\n          }\n\n          if (this.textSpans[i].glyph) {\n            var glyph = this.textSpans[i].glyph;\n            this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n            glyph.destroy();\n          }\n\n          this.textSpans[i].glyph = glyphElement;\n          glyphElement._debug = true;\n          glyphElement.prepareFrame(0);\n          glyphElement.renderFrame();\n          this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n          // this might have issues with strokes and might need a different solution\n\n          if (charData.t === 1) {\n            this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n          }\n        } else {\n          if (singleShape) {\n            tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n          }\n\n          tSpan.textContent = letters[i].val;\n          tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n        } //\n\n      }\n\n      if (singleShape && tSpan) {\n        tSpan.setAttribute('d', shapeStr);\n      }\n    }\n\n    while (i < this.textSpans.length) {\n      this.textSpans[i].span.style.display = 'none';\n      i += 1;\n    }\n\n    this._sizeChanged = true;\n  };\n\n  SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n    this.prepareFrame(this.comp.renderedFrame - this.data.st);\n    this.renderInnerContent();\n\n    if (this._sizeChanged) {\n      this._sizeChanged = false;\n      var textBox = this.layerElement.getBBox();\n      this.bbox = {\n        top: textBox.y,\n        left: textBox.x,\n        width: textBox.width,\n        height: textBox.height\n      };\n    }\n\n    return this.bbox;\n  };\n\n  SVGTextLottieElement.prototype.getValue = function () {\n    var i;\n    var len = this.textSpans.length;\n    var glyphElement;\n    this.renderedFrame = this.comp.renderedFrame;\n\n    for (i = 0; i < len; i += 1) {\n      glyphElement = this.textSpans[i].glyph;\n\n      if (glyphElement) {\n        glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n        if (glyphElement._mdf) {\n          this._mdf = true;\n        }\n      }\n    }\n  };\n\n  SVGTextLottieElement.prototype.renderInnerContent = function () {\n    this.validateText();\n\n    if (!this.data.singleShape || this._mdf) {\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n      if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n        this._sizeChanged = true;\n        var i;\n        var len;\n        var renderedLetters = this.textAnimator.renderedLetters;\n        var letters = this.textProperty.currentData.l;\n        len = letters.length;\n        var renderedLetter;\n        var textSpan;\n        var glyphElement;\n\n        for (i = 0; i < len; i += 1) {\n          if (!letters[i].n) {\n            renderedLetter = renderedLetters[i];\n            textSpan = this.textSpans[i].span;\n            glyphElement = this.textSpans[i].glyph;\n\n            if (glyphElement) {\n              glyphElement.renderFrame();\n            }\n\n            if (renderedLetter._mdf.m) {\n              textSpan.setAttribute('transform', renderedLetter.m);\n            }\n\n            if (renderedLetter._mdf.o) {\n              textSpan.setAttribute('opacity', renderedLetter.o);\n            }\n\n            if (renderedLetter._mdf.sw) {\n              textSpan.setAttribute('stroke-width', renderedLetter.sw);\n            }\n\n            if (renderedLetter._mdf.sc) {\n              textSpan.setAttribute('stroke', renderedLetter.sc);\n            }\n\n            if (renderedLetter._mdf.fc) {\n              textSpan.setAttribute('fill', renderedLetter.fc);\n            }\n          }\n        }\n      }\n    }\n  };\n\n  function ISolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([IImageElement], ISolidElement);\n\n  ISolidElement.prototype.createContent = function () {\n    var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n    /// /rect.style.height = this.data.sh;\n    /// /rect.style.fill = this.data.sc;\n\n    rect.setAttribute('width', this.data.sw);\n    rect.setAttribute('height', this.data.sh);\n    rect.setAttribute('fill', this.data.sc);\n    this.layerElement.appendChild(rect);\n  };\n\n  function NullElement(data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initFrame();\n    this.initTransform(data, globalData, comp);\n    this.initHierarchy();\n  }\n\n  NullElement.prototype.prepareFrame = function (num) {\n    this.prepareProperties(num, true);\n  };\n\n  NullElement.prototype.renderFrame = function () {};\n\n  NullElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  NullElement.prototype.destroy = function () {};\n\n  NullElement.prototype.sourceRectAtTime = function () {};\n\n  NullElement.prototype.hide = function () {};\n\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n  function SVGRendererBase() {}\n\n  extendPrototype([BaseRenderer], SVGRendererBase);\n\n  SVGRendererBase.prototype.createNull = function (data) {\n    return new NullElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createShape = function (data) {\n    return new SVGShapeElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createText = function (data) {\n    return new SVGTextLottieElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createImage = function (data) {\n    return new IImageElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createSolid = function (data) {\n    return new ISolidElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.configAnimation = function (animData) {\n    this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n    this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n    if (this.renderConfig.viewBoxSize) {\n      this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n    } else {\n      this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n    }\n\n    if (!this.renderConfig.viewBoxOnly) {\n      this.svgElement.setAttribute('width', animData.w);\n      this.svgElement.setAttribute('height', animData.h);\n      this.svgElement.style.width = '100%';\n      this.svgElement.style.height = '100%';\n      this.svgElement.style.transform = 'translate3d(0,0,0)';\n      this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n    }\n\n    if (this.renderConfig.width) {\n      this.svgElement.setAttribute('width', this.renderConfig.width);\n    }\n\n    if (this.renderConfig.height) {\n      this.svgElement.setAttribute('height', this.renderConfig.height);\n    }\n\n    if (this.renderConfig.className) {\n      this.svgElement.setAttribute('class', this.renderConfig.className);\n    }\n\n    if (this.renderConfig.id) {\n      this.svgElement.setAttribute('id', this.renderConfig.id);\n    }\n\n    if (this.renderConfig.focusable !== undefined) {\n      this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n    }\n\n    this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n    // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n    this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n    var defs = this.globalData.defs;\n    this.setupGlobalData(animData, defs);\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n    this.data = animData;\n    var maskElement = createNS('clipPath');\n    var rect = createNS('rect');\n    rect.setAttribute('width', animData.w);\n    rect.setAttribute('height', animData.h);\n    rect.setAttribute('x', 0);\n    rect.setAttribute('y', 0);\n    var maskId = createElementID();\n    maskElement.setAttribute('id', maskId);\n    maskElement.appendChild(rect);\n    this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n    defs.appendChild(maskElement);\n    this.layers = animData.layers;\n    this.elements = createSizedArray(animData.layers.length);\n  };\n\n  SVGRendererBase.prototype.destroy = function () {\n    if (this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n\n    this.layerElement = null;\n    this.globalData.defs = null;\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.elements.length = 0;\n    this.destroyed = true;\n    this.animationItem = null;\n  };\n\n  SVGRendererBase.prototype.updateContainerSize = function () {};\n\n  SVGRendererBase.prototype.findIndexByInd = function (ind) {\n    var i = 0;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.layers[i].ind === ind) {\n        return i;\n      }\n    }\n\n    return -1;\n  };\n\n  SVGRendererBase.prototype.buildItem = function (pos) {\n    var elements = this.elements;\n\n    if (elements[pos] || this.layers[pos].ty === 99) {\n      return;\n    }\n\n    elements[pos] = true;\n    var element = this.createItem(this.layers[pos]);\n    elements[pos] = element;\n\n    if (getExpressionsPlugin()) {\n      if (this.layers[pos].ty === 0) {\n        this.globalData.projectInterface.registerComposition(element);\n      }\n\n      element.initExpressions();\n    }\n\n    this.appendElementInPos(element, pos);\n\n    if (this.layers[pos].tt) {\n      var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n      if (elementIndex === -1) {\n        return;\n      }\n\n      if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n        this.buildItem(elementIndex);\n        this.addPendingElement(element);\n      } else {\n        var matteElement = elements[elementIndex];\n        var matteMask = matteElement.getMatte(this.layers[pos].tt);\n        element.setMatte(matteMask);\n      }\n    }\n  };\n\n  SVGRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n\n      if (element.data.tt) {\n        var i = 0;\n        var len = this.elements.length;\n\n        while (i < len) {\n          if (this.elements[i] === element) {\n            var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n            var matteElement = this.elements[elementIndex];\n            var matteMask = matteElement.getMatte(this.layers[i].tt);\n            element.setMatte(matteMask);\n            break;\n          }\n\n          i += 1;\n        }\n      }\n    }\n  };\n\n  SVGRendererBase.prototype.renderFrame = function (num) {\n    if (this.renderedFrame === num || this.destroyed) {\n      return;\n    }\n\n    if (num === null) {\n      num = this.renderedFrame;\n    } else {\n      this.renderedFrame = num;\n    } // console.log('-------');\n    // console.log('FRAME ',num);\n\n\n    this.globalData.frameNum = num;\n    this.globalData.frameId += 1;\n    this.globalData.projectInterface.currentFrame = num;\n    this.globalData._mdf = false;\n    var i;\n    var len = this.layers.length;\n\n    if (!this.completeLayers) {\n      this.checkLayers(num);\n    }\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(num - this.layers[i].st);\n      }\n    }\n\n    if (this.globalData._mdf) {\n      for (i = 0; i < len; i += 1) {\n        if (this.completeLayers || this.elements[i]) {\n          this.elements[i].renderFrame();\n        }\n      }\n    }\n  };\n\n  SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n    var newElement = element.getBaseElement();\n\n    if (!newElement) {\n      return;\n    }\n\n    var i = 0;\n    var nextElement;\n\n    while (i < pos) {\n      if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n        nextElement = this.elements[i].getBaseElement();\n      }\n\n      i += 1;\n    }\n\n    if (nextElement) {\n      this.layerElement.insertBefore(newElement, nextElement);\n    } else {\n      this.layerElement.appendChild(newElement);\n    }\n  };\n\n  SVGRendererBase.prototype.hide = function () {\n    this.layerElement.style.display = 'none';\n  };\n\n  SVGRendererBase.prototype.show = function () {\n    this.layerElement.style.display = 'block';\n  };\n\n  function ICompElement() {}\n\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n  ICompElement.prototype.initElement = function (data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initTransform(data, globalData, comp);\n    this.initRenderable();\n    this.initHierarchy();\n    this.initRendererElement();\n    this.createContainerElements();\n    this.createRenderableComponents();\n\n    if (this.data.xt || !globalData.progressiveLoad) {\n      this.buildAllItems();\n    }\n\n    this.hide();\n  };\n  /* ICompElement.prototype.hide = function(){\r\n      if(!this.hidden){\r\n          this.hideElement();\r\n          var i,len = this.elements.length;\r\n          for( i = 0; i < len; i+=1 ){\r\n              if(this.elements[i]){\r\n                  this.elements[i].hide();\r\n              }\r\n          }\r\n      }\r\n  }; */\n\n\n  ICompElement.prototype.prepareFrame = function (num) {\n    this._mdf = false;\n    this.prepareRenderableFrame(num);\n    this.prepareProperties(num, this.isInRange);\n\n    if (!this.isInRange && !this.data.xt) {\n      return;\n    }\n\n    if (!this.tm._placeholder) {\n      var timeRemapped = this.tm.v;\n\n      if (timeRemapped === this.data.op) {\n        timeRemapped = this.data.op - 1;\n      }\n\n      this.renderedFrame = timeRemapped;\n    } else {\n      this.renderedFrame = num / this.data.sr;\n    }\n\n    var i;\n    var len = this.elements.length;\n\n    if (!this.completeLayers) {\n      this.checkLayers(this.renderedFrame);\n    } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n        if (this.elements[i]._mdf) {\n          this._mdf = true;\n        }\n      }\n    }\n  };\n\n  ICompElement.prototype.renderInnerContent = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].renderFrame();\n      }\n    }\n  };\n\n  ICompElement.prototype.setElements = function (elems) {\n    this.elements = elems;\n  };\n\n  ICompElement.prototype.getElements = function () {\n    return this.elements;\n  };\n\n  ICompElement.prototype.destroyElements = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i]) {\n        this.elements[i].destroy();\n      }\n    }\n  };\n\n  ICompElement.prototype.destroy = function () {\n    this.destroyElements();\n    this.destroyBaseElement();\n  };\n\n  function SVGCompElement(data, globalData, comp) {\n    this.layers = data.layers;\n    this.supports3d = true;\n    this.completeLayers = false;\n    this.pendingElements = [];\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n\n  extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n  SVGCompElement.prototype.createComp = function (data) {\n    return new SVGCompElement(data, this.globalData, this);\n  };\n\n  function SVGRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.svgElement = createNS('svg');\n    var ariaLabel = '';\n\n    if (config && config.title) {\n      var titleElement = createNS('title');\n      var titleId = createElementID();\n      titleElement.setAttribute('id', titleId);\n      titleElement.textContent = config.title;\n      this.svgElement.appendChild(titleElement);\n      ariaLabel += titleId;\n    }\n\n    if (config && config.description) {\n      var descElement = createNS('desc');\n      var descId = createElementID();\n      descElement.setAttribute('id', descId);\n      descElement.textContent = config.description;\n      this.svgElement.appendChild(descElement);\n      ariaLabel += ' ' + descId;\n    }\n\n    if (ariaLabel) {\n      this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n    }\n\n    var defs = createNS('defs');\n    this.svgElement.appendChild(defs);\n    var maskElement = createNS('g');\n    this.svgElement.appendChild(maskElement);\n    this.layerElement = maskElement;\n    this.renderConfig = {\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      contentVisibility: config && config.contentVisibility || 'visible',\n      progressiveLoad: config && config.progressiveLoad || false,\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      viewBoxOnly: config && config.viewBoxOnly || false,\n      viewBoxSize: config && config.viewBoxSize || false,\n      className: config && config.className || '',\n      id: config && config.id || '',\n      focusable: config && config.focusable,\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '100%',\n        height: config && config.filterSize && config.filterSize.height || '100%',\n        x: config && config.filterSize && config.filterSize.x || '0%',\n        y: config && config.filterSize && config.filterSize.y || '0%'\n      },\n      width: config && config.width,\n      height: config && config.height,\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      defs: defs,\n      renderConfig: this.renderConfig\n    };\n    this.elements = [];\n    this.pendingElements = [];\n    this.destroyed = false;\n    this.rendererType = 'svg';\n  }\n\n  extendPrototype([SVGRendererBase], SVGRenderer);\n\n  SVGRenderer.prototype.createComp = function (data) {\n    return new SVGCompElement(data, this.globalData, this);\n  };\n\n  function ShapeTransformManager() {\n    this.sequences = {};\n    this.sequenceList = [];\n    this.transform_key_count = 0;\n  }\n\n  ShapeTransformManager.prototype = {\n    addTransformSequence: function addTransformSequence(transforms) {\n      var i;\n      var len = transforms.length;\n      var key = '_';\n\n      for (i = 0; i < len; i += 1) {\n        key += transforms[i].transform.key + '_';\n      }\n\n      var sequence = this.sequences[key];\n\n      if (!sequence) {\n        sequence = {\n          transforms: [].concat(transforms),\n          finalTransform: new Matrix(),\n          _mdf: false\n        };\n        this.sequences[key] = sequence;\n        this.sequenceList.push(sequence);\n      }\n\n      return sequence;\n    },\n    processSequence: function processSequence(sequence, isFirstFrame) {\n      var i = 0;\n      var len = sequence.transforms.length;\n      var _mdf = isFirstFrame;\n\n      while (i < len && !isFirstFrame) {\n        if (sequence.transforms[i].transform.mProps._mdf) {\n          _mdf = true;\n          break;\n        }\n\n        i += 1;\n      }\n\n      if (_mdf) {\n        sequence.finalTransform.reset();\n\n        for (i = len - 1; i >= 0; i -= 1) {\n          sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n        }\n      }\n\n      sequence._mdf = _mdf;\n    },\n    processSequences: function processSequences(isFirstFrame) {\n      var i;\n      var len = this.sequenceList.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.processSequence(this.sequenceList[i], isFirstFrame);\n      }\n    },\n    getNewKey: function getNewKey() {\n      this.transform_key_count += 1;\n      return '_' + this.transform_key_count;\n    }\n  };\n\n  var lumaLoader = function lumaLoader() {\n    var id = '__lottie_element_luma_buffer';\n    var lumaBuffer = null;\n    var lumaBufferCtx = null;\n    var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n    // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n    // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n    // Naming it solution 2 to mark the extra comment lines.\n\n    /*\r\n    var svgString = [\r\n      '<svg xmlns=\"http://www.w3.org/2000/svg\">',\r\n      '<filter id=\"' + id + '\">',\r\n      '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\r\n      '0.3, 0.3, 0.3, 0, 0, ',\r\n      '0.3, 0.3, 0.3, 0, 0, ',\r\n      '0.3, 0.3, 0.3, 0, 0, ',\r\n      '0.3, 0.3, 0.3, 0, 0',\r\n      '\"/>',\r\n      '</filter>',\r\n      '</svg>',\r\n    ].join('');\r\n    var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n    var url = URL.createObjectURL(blob);\r\n    */\n\n    function createLumaSvgFilter() {\n      var _svg = createNS('svg');\n\n      var fil = createNS('filter');\n      var matrix = createNS('feColorMatrix');\n      fil.setAttribute('id', id);\n      matrix.setAttribute('type', 'matrix');\n      matrix.setAttribute('color-interpolation-filters', 'sRGB');\n      matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n      fil.appendChild(matrix);\n\n      _svg.appendChild(fil);\n\n      _svg.setAttribute('id', id + '_svg');\n\n      if (featureSupport.svgLumaHidden) {\n        _svg.style.display = 'none';\n      }\n\n      return _svg;\n    }\n\n    function loadLuma() {\n      if (!lumaBuffer) {\n        svg = createLumaSvgFilter();\n        document.body.appendChild(svg);\n        lumaBuffer = createTag('canvas');\n        lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n        lumaBufferCtx.filter = 'url(#' + id + ')';\n        lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n        lumaBufferCtx.fillRect(0, 0, 1, 1);\n      }\n    }\n\n    function getLuma(canvas) {\n      if (!lumaBuffer) {\n        loadLuma();\n      }\n\n      lumaBuffer.width = canvas.width;\n      lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n      lumaBufferCtx.filter = 'url(#' + id + ')';\n      return lumaBuffer;\n    }\n\n    return {\n      load: loadLuma,\n      get: getLuma\n    };\n  };\n\n  function createCanvas(width, height) {\n    if (featureSupport.offscreenCanvas) {\n      return new OffscreenCanvas(width, height);\n    }\n\n    var canvas = createTag('canvas');\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n\n  var assetLoader = function () {\n    return {\n      loadLumaCanvas: lumaLoader.load,\n      getLumaCanvas: lumaLoader.get,\n      createCanvas: createCanvas\n    };\n  }();\n\n  var registeredEffects = {};\n\n  function CVEffects(elem) {\n    var i;\n    var len = elem.data.ef ? elem.data.ef.length : 0;\n    this.filters = [];\n    var filterManager;\n\n    for (i = 0; i < len; i += 1) {\n      filterManager = null;\n      var type = elem.data.ef[i].ty;\n\n      if (registeredEffects[type]) {\n        var Effect = registeredEffects[type].effect;\n        filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n      }\n\n      if (filterManager) {\n        this.filters.push(filterManager);\n      }\n    }\n\n    if (this.filters.length) {\n      elem.addRenderableComponent(this);\n    }\n  }\n\n  CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n    var i;\n    var len = this.filters.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.filters[i].renderFrame(_isFirstFrame);\n    }\n  };\n\n  CVEffects.prototype.getEffects = function (type) {\n    var i;\n    var len = this.filters.length;\n    var effects = [];\n\n    for (i = 0; i < len; i += 1) {\n      if (this.filters[i].type === type) {\n        effects.push(this.filters[i]);\n      }\n    }\n\n    return effects;\n  };\n\n  function registerEffect(id, effect) {\n    registeredEffects[id] = {\n      effect: effect\n    };\n  }\n\n  function CVMaskElement(data, element) {\n    this.data = data;\n    this.element = element;\n    this.masksProperties = this.data.masksProperties || [];\n    this.viewData = createSizedArray(this.masksProperties.length);\n    var i;\n    var len = this.masksProperties.length;\n    var hasMasks = false;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.masksProperties[i].mode !== 'n') {\n        hasMasks = true;\n      }\n\n      this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n    }\n\n    this.hasMasks = hasMasks;\n\n    if (hasMasks) {\n      this.element.addRenderableComponent(this);\n    }\n  }\n\n  CVMaskElement.prototype.renderFrame = function () {\n    if (!this.hasMasks) {\n      return;\n    }\n\n    var transform = this.element.finalTransform.mat;\n    var ctx = this.element.canvasContext;\n    var i;\n    var len = this.masksProperties.length;\n    var pt;\n    var pts;\n    var data;\n    ctx.beginPath();\n\n    for (i = 0; i < len; i += 1) {\n      if (this.masksProperties[i].mode !== 'n') {\n        if (this.masksProperties[i].inv) {\n          ctx.moveTo(0, 0);\n          ctx.lineTo(this.element.globalData.compSize.w, 0);\n          ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n          ctx.lineTo(0, this.element.globalData.compSize.h);\n          ctx.lineTo(0, 0);\n        }\n\n        data = this.viewData[i].v;\n        pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n        ctx.moveTo(pt[0], pt[1]);\n        var j;\n        var jLen = data._length;\n\n        for (j = 1; j < jLen; j += 1) {\n          pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n          ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n        }\n\n        pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n        ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n      }\n    }\n\n    this.element.globalData.renderer.save(true);\n    ctx.clip();\n  };\n\n  CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n  CVMaskElement.prototype.destroy = function () {\n    this.element = null;\n  };\n\n  function CVBaseElement() {}\n\n  var operationsMap = {\n    1: 'source-in',\n    2: 'source-out',\n    3: 'source-in',\n    4: 'source-out'\n  };\n  CVBaseElement.prototype = {\n    createElements: function createElements() {},\n    initRendererElement: function initRendererElement() {},\n    createContainerElements: function createContainerElements() {\n      // If the layer is masked we will use two buffers to store each different states of the drawing\n      // This solution is not ideal for several reason. But unfortunately, because of the recursive\n      // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n      // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n      // It might be challenging because the layer most likely is transformed in some way\n      if (this.data.tt >= 1) {\n        this.buffers = [];\n        var canvasContext = this.globalData.canvasContext;\n        var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n        this.buffers.push(bufferCanvas);\n        var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n        this.buffers.push(bufferCanvas2);\n\n        if (this.data.tt >= 3 && !document._isProxy) {\n          assetLoader.loadLumaCanvas();\n        }\n      }\n\n      this.canvasContext = this.globalData.canvasContext;\n      this.transformCanvas = this.globalData.transformCanvas;\n      this.renderableEffectsManager = new CVEffects(this);\n      this.searchEffectTransforms();\n    },\n    createContent: function createContent() {},\n    setBlendMode: function setBlendMode() {\n      var globalData = this.globalData;\n\n      if (globalData.blendMode !== this.data.bm) {\n        globalData.blendMode = this.data.bm;\n        var blendModeValue = getBlendMode(this.data.bm);\n        globalData.canvasContext.globalCompositeOperation = blendModeValue;\n      }\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new CVMaskElement(this.data, this);\n      this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n    },\n    hideElement: function hideElement() {\n      if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n        this.hidden = true;\n      }\n    },\n    showElement: function showElement() {\n      if (this.isInRange && !this.isTransparent) {\n        this.hidden = false;\n        this._isFirstFrame = true;\n        this.maskManager._isFirstFrame = true;\n      }\n    },\n    clearCanvas: function clearCanvas(canvasContext) {\n      canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n    },\n    prepareLayer: function prepareLayer() {\n      if (this.data.tt >= 1) {\n        var buffer = this.buffers[0];\n        var bufferCtx = buffer.getContext('2d');\n        this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n        bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n        // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n        this.currentTransform = this.canvasContext.getTransform();\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n        this.clearCanvas(this.canvasContext);\n        this.canvasContext.setTransform(this.currentTransform);\n      }\n    },\n    exitLayer: function exitLayer() {\n      if (this.data.tt >= 1) {\n        var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n        // that only contains the content of this layer\n        // (if it is a composition, it also includes the nested layers)\n\n        var bufferCtx = buffer.getContext('2d');\n        this.clearCanvas(bufferCtx);\n        bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n        this.clearCanvas(this.canvasContext);\n        this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n        var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n        mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n        // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n        if (this.data.tt >= 3 && !document._isProxy) {\n          // We copy the painted mask to a buffer that has a color matrix filter applied to it\n          // that applies the rgb values to the alpha channel\n          var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n          var lumaBufferCtx = lumaBuffer.getContext('2d');\n          lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n          this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n          this.canvasContext.drawImage(lumaBuffer, 0, 0);\n        }\n\n        this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n        this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n        // We use destination-over to draw the global drawing below the current layer\n\n        this.canvasContext.globalCompositeOperation = 'destination-over';\n        this.canvasContext.drawImage(this.buffers[0], 0, 0);\n        this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n        this.canvasContext.globalCompositeOperation = 'source-over';\n      }\n    },\n    renderFrame: function renderFrame(forceRender) {\n      if (this.hidden || this.data.hd) {\n        return;\n      }\n\n      if (this.data.td === 1 && !forceRender) {\n        return;\n      }\n\n      this.renderTransform();\n      this.renderRenderable();\n      this.renderLocalTransform();\n      this.setBlendMode();\n      var forceRealStack = this.data.ty === 0;\n      this.prepareLayer();\n      this.globalData.renderer.save(forceRealStack);\n      this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n      this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n      this.renderInnerContent();\n      this.globalData.renderer.restore(forceRealStack);\n      this.exitLayer();\n\n      if (this.maskManager.hasMasks) {\n        this.globalData.renderer.restore(true);\n      }\n\n      if (this._isFirstFrame) {\n        this._isFirstFrame = false;\n      }\n    },\n    destroy: function destroy() {\n      this.canvasContext = null;\n      this.data = null;\n      this.globalData = null;\n      this.maskManager.destroy();\n    },\n    mHelper: new Matrix()\n  };\n  CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n  CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n  function CVShapeData(element, data, styles, transformsManager) {\n    this.styledShapes = [];\n    this.tr = [0, 0, 0, 0, 0, 0];\n    var ty = 4;\n\n    if (data.ty === 'rc') {\n      ty = 5;\n    } else if (data.ty === 'el') {\n      ty = 6;\n    } else if (data.ty === 'sr') {\n      ty = 7;\n    }\n\n    this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n    var i;\n    var len = styles.length;\n    var styledShape;\n\n    for (i = 0; i < len; i += 1) {\n      if (!styles[i].closed) {\n        styledShape = {\n          transforms: transformsManager.addTransformSequence(styles[i].transforms),\n          trNodes: []\n        };\n        this.styledShapes.push(styledShape);\n        styles[i].elements.push(styledShape);\n      }\n    }\n  }\n\n  CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n  function CVShapeElement(data, globalData, comp) {\n    this.shapes = [];\n    this.shapesData = data.shapes;\n    this.stylesList = [];\n    this.itemsData = [];\n    this.prevViewData = [];\n    this.shapeModifiers = [];\n    this.processedElements = [];\n    this.transformsManager = new ShapeTransformManager();\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n  CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n  CVShapeElement.prototype.transformHelper = {\n    opacity: 1,\n    _opMdf: false\n  };\n  CVShapeElement.prototype.dashResetter = [];\n\n  CVShapeElement.prototype.createContent = function () {\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n  };\n\n  CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n    var styleElem = {\n      data: data,\n      type: data.ty,\n      preTransforms: this.transformsManager.addTransformSequence(transforms),\n      transforms: [],\n      elements: [],\n      closed: data.hd === true\n    };\n    var elementData = {};\n\n    if (data.ty === 'fl' || data.ty === 'st') {\n      elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n      if (!elementData.c.k) {\n        styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n      }\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\n      elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n      elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n      elementData.h = PropertyFactory.getProp(this, data.h || {\n        k: 0\n      }, 0, 0.01, this);\n      elementData.a = PropertyFactory.getProp(this, data.a || {\n        k: 0\n      }, 0, degToRads, this);\n      elementData.g = new GradientProperty(this, data.g, this);\n    }\n\n    elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n    if (data.ty === 'st' || data.ty === 'gs') {\n      styleElem.lc = lineCapEnum[data.lc || 2];\n      styleElem.lj = lineJoinEnum[data.lj || 2];\n\n      if (data.lj == 1) {\n        // eslint-disable-line eqeqeq\n        styleElem.ml = data.ml;\n      }\n\n      elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n      if (!elementData.w.k) {\n        styleElem.wi = elementData.w.v;\n      }\n\n      if (data.d) {\n        var d = new DashProperty(this, data.d, 'canvas', this);\n        elementData.d = d;\n\n        if (!elementData.d.k) {\n          styleElem.da = elementData.d.dashArray;\n          styleElem[\"do\"] = elementData.d.dashoffset[0];\n        }\n      }\n    } else {\n      styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n    }\n\n    this.stylesList.push(styleElem);\n    elementData.style = styleElem;\n    return elementData;\n  };\n\n  CVShapeElement.prototype.createGroupElement = function () {\n    var elementData = {\n      it: [],\n      prevViewData: []\n    };\n    return elementData;\n  };\n\n  CVShapeElement.prototype.createTransformElement = function (data) {\n    var elementData = {\n      transform: {\n        opacity: 1,\n        _opMdf: false,\n        key: this.transformsManager.getNewKey(),\n        op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n        mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n      }\n    };\n    return elementData;\n  };\n\n  CVShapeElement.prototype.createShapeElement = function (data) {\n    var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n    this.shapes.push(elementData);\n    this.addShapeToModifiers(elementData);\n    return elementData;\n  };\n\n  CVShapeElement.prototype.reloadShapes = function () {\n    this._isFirstFrame = true;\n    var i;\n    var len = this.itemsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.prevViewData[i] = this.itemsData[i];\n    }\n\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n    len = this.dynamicProperties.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.dynamicProperties[i].getValue();\n    }\n\n    this.renderModifiers();\n    this.transformsManager.processSequences(this._isFirstFrame);\n  };\n\n  CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n    var i;\n    var len = this.stylesList.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (!this.stylesList[i].closed) {\n        this.stylesList[i].transforms.push(transform);\n      }\n    }\n  };\n\n  CVShapeElement.prototype.removeTransformFromStyleList = function () {\n    var i;\n    var len = this.stylesList.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (!this.stylesList[i].closed) {\n        this.stylesList[i].transforms.pop();\n      }\n    }\n  };\n\n  CVShapeElement.prototype.closeStyles = function (styles) {\n    var i;\n    var len = styles.length;\n\n    for (i = 0; i < len; i += 1) {\n      styles[i].closed = true;\n    }\n  };\n\n  CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n    var i;\n    var len = arr.length - 1;\n    var j;\n    var jLen;\n    var ownStyles = [];\n    var ownModifiers = [];\n    var processedPos;\n    var modifier;\n    var currentTransform;\n    var ownTransforms = [].concat(transforms);\n\n    for (i = len; i >= 0; i -= 1) {\n      processedPos = this.searchProcessedElement(arr[i]);\n\n      if (!processedPos) {\n        arr[i]._shouldRender = shouldRender;\n      } else {\n        itemsData[i] = prevViewData[processedPos - 1];\n      }\n\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n        if (!processedPos) {\n          itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n        } else {\n          itemsData[i].style.closed = false;\n        }\n\n        ownStyles.push(itemsData[i].style);\n      } else if (arr[i].ty === 'gr') {\n        if (!processedPos) {\n          itemsData[i] = this.createGroupElement(arr[i]);\n        } else {\n          jLen = itemsData[i].it.length;\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\n          }\n        }\n\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n      } else if (arr[i].ty === 'tr') {\n        if (!processedPos) {\n          currentTransform = this.createTransformElement(arr[i]);\n          itemsData[i] = currentTransform;\n        }\n\n        ownTransforms.push(itemsData[i]);\n        this.addTransformToStyleList(itemsData[i]);\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n        if (!processedPos) {\n          itemsData[i] = this.createShapeElement(arr[i]);\n        }\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          modifier.init(this, arr[i]);\n          itemsData[i] = modifier;\n          this.shapeModifiers.push(modifier);\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = false;\n        }\n\n        ownModifiers.push(modifier);\n      } else if (arr[i].ty === 'rp') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          itemsData[i] = modifier;\n          modifier.init(this, arr, i, itemsData);\n          this.shapeModifiers.push(modifier);\n          shouldRender = false;\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = true;\n        }\n\n        ownModifiers.push(modifier);\n      }\n\n      this.addProcessedElement(arr[i], i + 1);\n    }\n\n    this.removeTransformFromStyleList();\n    this.closeStyles(ownStyles);\n    len = ownModifiers.length;\n\n    for (i = 0; i < len; i += 1) {\n      ownModifiers[i].closed = true;\n    }\n  };\n\n  CVShapeElement.prototype.renderInnerContent = function () {\n    this.transformHelper.opacity = 1;\n    this.transformHelper._opMdf = false;\n    this.renderModifiers();\n    this.transformsManager.processSequences(this._isFirstFrame);\n    this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n  };\n\n  CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n    if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n      groupTransform.opacity = parentTransform.opacity;\n      groupTransform.opacity *= groupTransform.op.v;\n      groupTransform._opMdf = true;\n    }\n  };\n\n  CVShapeElement.prototype.drawLayer = function () {\n    var i;\n    var len = this.stylesList.length;\n    var j;\n    var jLen;\n    var k;\n    var kLen;\n    var elems;\n    var nodes;\n    var renderer = this.globalData.renderer;\n    var ctx = this.globalData.canvasContext;\n    var type;\n    var currentStyle;\n\n    for (i = 0; i < len; i += 1) {\n      currentStyle = this.stylesList[i];\n      type = currentStyle.type; // Skipping style when\n      // Stroke width equals 0\n      // style should not be rendered (extra unused repeaters)\n      // current opacity equals 0\n      // global opacity equals 0\n\n      if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n        renderer.save();\n        elems = currentStyle.elements;\n\n        if (type === 'st' || type === 'gs') {\n          renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n          renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n          renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n          renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n          renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n        } else {\n          renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n        }\n\n        renderer.ctxOpacity(currentStyle.coOp);\n\n        if (type !== 'st' && type !== 'gs') {\n          ctx.beginPath();\n        }\n\n        renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n        jLen = elems.length;\n\n        for (j = 0; j < jLen; j += 1) {\n          if (type === 'st' || type === 'gs') {\n            ctx.beginPath();\n\n            if (currentStyle.da) {\n              ctx.setLineDash(currentStyle.da);\n              ctx.lineDashOffset = currentStyle[\"do\"];\n            }\n          }\n\n          nodes = elems[j].trNodes;\n          kLen = nodes.length;\n\n          for (k = 0; k < kLen; k += 1) {\n            if (nodes[k].t === 'm') {\n              ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n            } else if (nodes[k].t === 'c') {\n              ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n            } else {\n              ctx.closePath();\n            }\n          }\n\n          if (type === 'st' || type === 'gs') {\n            // ctx.stroke();\n            renderer.ctxStroke();\n\n            if (currentStyle.da) {\n              ctx.setLineDash(this.dashResetter);\n            }\n          }\n        }\n\n        if (type !== 'st' && type !== 'gs') {\n          // ctx.fill(currentStyle.r);\n          this.globalData.renderer.ctxFill(currentStyle.r);\n        }\n\n        renderer.restore();\n      }\n    }\n  };\n\n  CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n    var i;\n    var len = items.length - 1;\n    var groupTransform;\n    groupTransform = parentTransform;\n\n    for (i = len; i >= 0; i -= 1) {\n      if (items[i].ty === 'tr') {\n        groupTransform = data[i].transform;\n        this.renderShapeTransform(parentTransform, groupTransform);\n      } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n        this.renderPath(items[i], data[i]);\n      } else if (items[i].ty === 'fl') {\n        this.renderFill(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'st') {\n        this.renderStroke(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n        this.renderGradientFill(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'gr') {\n        this.renderShape(groupTransform, items[i].it, data[i].it);\n      } else if (items[i].ty === 'tm') {//\n      }\n    }\n\n    if (isMain) {\n      this.drawLayer();\n    }\n  };\n\n  CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n    if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n      var shapeNodes = styledShape.trNodes;\n      var paths = shape.paths;\n      var i;\n      var len;\n      var j;\n      var jLen = paths._length;\n      shapeNodes.length = 0;\n      var groupTransformMat = styledShape.transforms.finalTransform;\n\n      for (j = 0; j < jLen; j += 1) {\n        var pathNodes = paths.shapes[j];\n\n        if (pathNodes && pathNodes.v) {\n          len = pathNodes._length;\n\n          for (i = 1; i < len; i += 1) {\n            if (i === 1) {\n              shapeNodes.push({\n                t: 'm',\n                p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n              });\n            }\n\n            shapeNodes.push({\n              t: 'c',\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n            });\n          }\n\n          if (len === 1) {\n            shapeNodes.push({\n              t: 'm',\n              p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n            });\n          }\n\n          if (pathNodes.c && len) {\n            shapeNodes.push({\n              t: 'c',\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n            });\n            shapeNodes.push({\n              t: 'z'\n            });\n          }\n        }\n      }\n\n      styledShape.trNodes = shapeNodes;\n    }\n  };\n\n  CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n    if (pathData.hd !== true && pathData._shouldRender) {\n      var i;\n      var len = itemData.styledShapes.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n      }\n    }\n  };\n\n  CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n\n    if (itemData.c._mdf || this._isFirstFrame) {\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n    }\n\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\n    }\n  };\n\n  CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n    var grd;\n\n    if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n      var ctx = this.globalData.canvasContext;\n      var pt1 = itemData.s.v;\n      var pt2 = itemData.e.v;\n\n      if (styleData.t === 1) {\n        grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n      } else {\n        var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n        var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n        var percent = itemData.h.v;\n\n        if (percent >= 1) {\n          percent = 0.99;\n        } else if (percent <= -1) {\n          percent = -0.99;\n        }\n\n        var dist = rad * percent;\n        var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n        var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n        grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n      }\n\n      var i;\n      var len = styleData.g.p;\n      var cValues = itemData.g.c;\n      var opacity = 1;\n\n      for (i = 0; i < len; i += 1) {\n        if (itemData.g._hasOpacity && itemData.g._collapsable) {\n          opacity = itemData.g.o[i * 2 + 1];\n        }\n\n        grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n      }\n\n      styleElem.grd = grd;\n    }\n\n    styleElem.coOp = itemData.o.v * groupTransform.opacity;\n  };\n\n  CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n    var d = itemData.d;\n\n    if (d && (d._mdf || this._isFirstFrame)) {\n      styleElem.da = d.dashArray;\n      styleElem[\"do\"] = d.dashoffset[0];\n    }\n\n    if (itemData.c._mdf || this._isFirstFrame) {\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n    }\n\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\n    }\n\n    if (itemData.w._mdf || this._isFirstFrame) {\n      styleElem.wi = itemData.w.v;\n    }\n  };\n\n  CVShapeElement.prototype.destroy = function () {\n    this.shapesData = null;\n    this.globalData = null;\n    this.canvasContext = null;\n    this.stylesList.length = 0;\n    this.itemsData.length = 0;\n  };\n\n  function CVTextElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.yOffset = 0;\n    this.fillColorAnim = false;\n    this.strokeColorAnim = false;\n    this.strokeWidthAnim = false;\n    this.stroke = false;\n    this.fill = false;\n    this.justifyOffset = 0;\n    this.currentRender = null;\n    this.renderType = 'canvas';\n    this.values = {\n      fill: 'rgba(0,0,0,0)',\n      stroke: 'rgba(0,0,0,0)',\n      sWidth: 0,\n      fValue: ''\n    };\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n  CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n  CVTextElement.prototype.buildNewText = function () {\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n    var hasFill = false;\n\n    if (documentData.fc) {\n      hasFill = true;\n      this.values.fill = this.buildColor(documentData.fc);\n    } else {\n      this.values.fill = 'rgba(0,0,0,0)';\n    }\n\n    this.fill = hasFill;\n    var hasStroke = false;\n\n    if (documentData.sc) {\n      hasStroke = true;\n      this.values.stroke = this.buildColor(documentData.sc);\n      this.values.sWidth = documentData.sw;\n    }\n\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n    var i;\n    var len;\n    var letters = documentData.l;\n    var matrixHelper = this.mHelper;\n    this.stroke = hasStroke;\n    this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n    len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n    var charData;\n    var shapeData;\n    var k;\n    var kLen;\n    var shapes;\n    var j;\n    var jLen;\n    var pathNodes;\n    var commands;\n    var pathArr;\n    var singleShape = this.data.singleShape;\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n    var xPos = 0;\n    var yPos = 0;\n    var firstLine = true;\n    var cnt = 0;\n\n    for (i = 0; i < len; i += 1) {\n      charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n      shapeData = charData && charData.data || {};\n      matrixHelper.reset();\n\n      if (singleShape && letters[i].n) {\n        xPos = -trackingOffset;\n        yPos += documentData.yOffset;\n        yPos += firstLine ? 1 : 0;\n        firstLine = false;\n      }\n\n      shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n      jLen = shapes.length;\n      matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n      if (singleShape) {\n        this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n      }\n\n      commands = createSizedArray(jLen - 1);\n      var commandsCounter = 0;\n\n      for (j = 0; j < jLen; j += 1) {\n        if (shapes[j].ty === 'sh') {\n          kLen = shapes[j].ks.k.i.length;\n          pathNodes = shapes[j].ks.k;\n          pathArr = [];\n\n          for (k = 1; k < kLen; k += 1) {\n            if (k === 1) {\n              pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n            }\n\n            pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n          }\n\n          pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n          commands[commandsCounter] = pathArr;\n          commandsCounter += 1;\n        }\n      }\n\n      if (singleShape) {\n        xPos += letters[i].l;\n        xPos += trackingOffset;\n      }\n\n      if (this.textSpans[cnt]) {\n        this.textSpans[cnt].elem = commands;\n      } else {\n        this.textSpans[cnt] = {\n          elem: commands\n        };\n      }\n\n      cnt += 1;\n    }\n  };\n\n  CVTextElement.prototype.renderInnerContent = function () {\n    this.validateText();\n    var ctx = this.canvasContext;\n    ctx.font = this.values.fValue;\n    this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n    this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n    this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n    if (!this.data.singleShape) {\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n    }\n\n    var i;\n    var len;\n    var j;\n    var jLen;\n    var k;\n    var kLen;\n    var renderedLetters = this.textAnimator.renderedLetters;\n    var letters = this.textProperty.currentData.l;\n    len = letters.length;\n    var renderedLetter;\n    var lastFill = null;\n    var lastStroke = null;\n    var lastStrokeW = null;\n    var commands;\n    var pathArr;\n    var renderer = this.globalData.renderer;\n\n    for (i = 0; i < len; i += 1) {\n      if (!letters[i].n) {\n        renderedLetter = renderedLetters[i];\n\n        if (renderedLetter) {\n          renderer.save();\n          renderer.ctxTransform(renderedLetter.p);\n          renderer.ctxOpacity(renderedLetter.o);\n        }\n\n        if (this.fill) {\n          if (renderedLetter && renderedLetter.fc) {\n            if (lastFill !== renderedLetter.fc) {\n              renderer.ctxFillStyle(renderedLetter.fc);\n              lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n            }\n          } else if (lastFill !== this.values.fill) {\n            lastFill = this.values.fill;\n            renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n          }\n\n          commands = this.textSpans[i].elem;\n          jLen = commands.length;\n          this.globalData.canvasContext.beginPath();\n\n          for (j = 0; j < jLen; j += 1) {\n            pathArr = commands[j];\n            kLen = pathArr.length;\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n            for (k = 2; k < kLen; k += 6) {\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n            }\n          }\n\n          this.globalData.canvasContext.closePath();\n          renderer.ctxFill(); // this.globalData.canvasContext.fill();\n          /// ctx.fillText(this.textSpans[i].val,0,0);\n        }\n\n        if (this.stroke) {\n          if (renderedLetter && renderedLetter.sw) {\n            if (lastStrokeW !== renderedLetter.sw) {\n              lastStrokeW = renderedLetter.sw;\n              renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n            }\n          } else if (lastStrokeW !== this.values.sWidth) {\n            lastStrokeW = this.values.sWidth;\n            renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n          }\n\n          if (renderedLetter && renderedLetter.sc) {\n            if (lastStroke !== renderedLetter.sc) {\n              lastStroke = renderedLetter.sc;\n              renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n            }\n          } else if (lastStroke !== this.values.stroke) {\n            lastStroke = this.values.stroke;\n            renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n          }\n\n          commands = this.textSpans[i].elem;\n          jLen = commands.length;\n          this.globalData.canvasContext.beginPath();\n\n          for (j = 0; j < jLen; j += 1) {\n            pathArr = commands[j];\n            kLen = pathArr.length;\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n            for (k = 2; k < kLen; k += 6) {\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n            }\n          }\n\n          this.globalData.canvasContext.closePath();\n          renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n          /// ctx.strokeText(letters[i].val,0,0);\n        }\n\n        if (renderedLetter) {\n          this.globalData.renderer.restore();\n        }\n      }\n    }\n  };\n\n  function CVImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n    this.img = globalData.imageLoader.getAsset(this.assetData);\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n  CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n  CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n  CVImageElement.prototype.createContent = function () {\n    if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n      var canvas = createTag('canvas');\n      canvas.width = this.assetData.w;\n      canvas.height = this.assetData.h;\n      var ctx = canvas.getContext('2d');\n      var imgW = this.img.width;\n      var imgH = this.img.height;\n      var imgRel = imgW / imgH;\n      var canvasRel = this.assetData.w / this.assetData.h;\n      var widthCrop;\n      var heightCrop;\n      var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n      if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n        heightCrop = imgH;\n        widthCrop = heightCrop * canvasRel;\n      } else {\n        widthCrop = imgW;\n        heightCrop = widthCrop / canvasRel;\n      }\n\n      ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n      this.img = canvas;\n    }\n  };\n\n  CVImageElement.prototype.renderInnerContent = function () {\n    this.canvasContext.drawImage(this.img, 0, 0);\n  };\n\n  CVImageElement.prototype.destroy = function () {\n    this.img = null;\n  };\n\n  function CVSolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n  CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n  CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n  CVSolidElement.prototype.renderInnerContent = function () {\n    // var ctx = this.canvasContext;\n    this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n    this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n    //\n  };\n\n  function CanvasRendererBase() {}\n\n  extendPrototype([BaseRenderer], CanvasRendererBase);\n\n  CanvasRendererBase.prototype.createShape = function (data) {\n    return new CVShapeElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createText = function (data) {\n    return new CVTextElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createImage = function (data) {\n    return new CVImageElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createSolid = function (data) {\n    return new CVSolidElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n  CanvasRendererBase.prototype.ctxTransform = function (props) {\n    if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n      return;\n    }\n\n    this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n  };\n\n  CanvasRendererBase.prototype.ctxOpacity = function (op) {\n    this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n  };\n\n  CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n    this.canvasContext.fillStyle = value;\n  };\n\n  CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n    this.canvasContext.strokeStyle = value;\n  };\n\n  CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n    this.canvasContext.lineWidth = value;\n  };\n\n  CanvasRendererBase.prototype.ctxLineCap = function (value) {\n    this.canvasContext.lineCap = value;\n  };\n\n  CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n    this.canvasContext.lineJoin = value;\n  };\n\n  CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n    this.canvasContext.miterLimit = value;\n  };\n\n  CanvasRendererBase.prototype.ctxFill = function (rule) {\n    this.canvasContext.fill(rule);\n  };\n\n  CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n    this.canvasContext.fillRect(x, y, w, h);\n  };\n\n  CanvasRendererBase.prototype.ctxStroke = function () {\n    this.canvasContext.stroke();\n  };\n\n  CanvasRendererBase.prototype.reset = function () {\n    if (!this.renderConfig.clearCanvas) {\n      this.canvasContext.restore();\n      return;\n    }\n\n    this.contextData.reset();\n  };\n\n  CanvasRendererBase.prototype.save = function () {\n    this.canvasContext.save();\n  };\n\n  CanvasRendererBase.prototype.restore = function (actionFlag) {\n    if (!this.renderConfig.clearCanvas) {\n      this.canvasContext.restore();\n      return;\n    }\n\n    if (actionFlag) {\n      this.globalData.blendMode = 'source-over';\n    }\n\n    this.contextData.restore(actionFlag);\n  };\n\n  CanvasRendererBase.prototype.configAnimation = function (animData) {\n    if (this.animationItem.wrapper) {\n      this.animationItem.container = createTag('canvas');\n      var containerStyle = this.animationItem.container.style;\n      containerStyle.width = '100%';\n      containerStyle.height = '100%';\n      var origin = '0px 0px 0px';\n      containerStyle.transformOrigin = origin;\n      containerStyle.mozTransformOrigin = origin;\n      containerStyle.webkitTransformOrigin = origin;\n      containerStyle['-webkit-transform'] = origin;\n      containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n      this.animationItem.wrapper.appendChild(this.animationItem.container);\n      this.canvasContext = this.animationItem.container.getContext('2d');\n\n      if (this.renderConfig.className) {\n        this.animationItem.container.setAttribute('class', this.renderConfig.className);\n      }\n\n      if (this.renderConfig.id) {\n        this.animationItem.container.setAttribute('id', this.renderConfig.id);\n      }\n    } else {\n      this.canvasContext = this.renderConfig.context;\n    }\n\n    this.contextData.setContext(this.canvasContext);\n    this.data = animData;\n    this.layers = animData.layers;\n    this.transformCanvas = {\n      w: animData.w,\n      h: animData.h,\n      sx: 0,\n      sy: 0,\n      tx: 0,\n      ty: 0\n    };\n    this.setupGlobalData(animData, document.body);\n    this.globalData.canvasContext = this.canvasContext;\n    this.globalData.renderer = this;\n    this.globalData.isDashed = false;\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n    this.globalData.transformCanvas = this.transformCanvas;\n    this.elements = createSizedArray(animData.layers.length);\n    this.updateContainerSize();\n  };\n\n  CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n    this.reset();\n    var elementWidth;\n    var elementHeight;\n\n    if (width) {\n      elementWidth = width;\n      elementHeight = height;\n      this.canvasContext.canvas.width = elementWidth;\n      this.canvasContext.canvas.height = elementHeight;\n    } else {\n      if (this.animationItem.wrapper && this.animationItem.container) {\n        elementWidth = this.animationItem.wrapper.offsetWidth;\n        elementHeight = this.animationItem.wrapper.offsetHeight;\n      } else {\n        elementWidth = this.canvasContext.canvas.width;\n        elementHeight = this.canvasContext.canvas.height;\n      }\n\n      this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n      this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n    }\n\n    var elementRel;\n    var animationRel;\n\n    if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n      var par = this.renderConfig.preserveAspectRatio.split(' ');\n      var fillType = par[1] || 'meet';\n      var pos = par[0] || 'xMidYMid';\n      var xPos = pos.substr(0, 4);\n      var yPos = pos.substr(4);\n      elementRel = elementWidth / elementHeight;\n      animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n      if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n        this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n        this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n      } else {\n        this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n        this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n      }\n\n      if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n      } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n      } else {\n        this.transformCanvas.tx = 0;\n      }\n\n      if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n      } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n      } else {\n        this.transformCanvas.ty = 0;\n      }\n    } else if (this.renderConfig.preserveAspectRatio === 'none') {\n      this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n      this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n      this.transformCanvas.tx = 0;\n      this.transformCanvas.ty = 0;\n    } else {\n      this.transformCanvas.sx = this.renderConfig.dpr;\n      this.transformCanvas.sy = this.renderConfig.dpr;\n      this.transformCanvas.tx = 0;\n      this.transformCanvas.ty = 0;\n    }\n\n    this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n    /* var i, len = this.elements.length;\r\n      for(i=0;i<len;i+=1){\r\n          if(this.elements[i] && this.elements[i].data.ty === 0){\r\n              this.elements[i].resize(this.globalData.transformCanvas);\r\n          }\r\n      } */\n\n    this.ctxTransform(this.transformCanvas.props);\n    this.canvasContext.beginPath();\n    this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n    this.canvasContext.closePath();\n    this.canvasContext.clip();\n    this.renderFrame(this.renderedFrame, true);\n  };\n\n  CanvasRendererBase.prototype.destroy = function () {\n    if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.elements.length = 0;\n    this.globalData.canvasContext = null;\n    this.animationItem.container = null;\n    this.destroyed = true;\n  };\n\n  CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n    if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n      return;\n    }\n\n    this.renderedFrame = num;\n    this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n    this.globalData.frameId += 1;\n    this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n    this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n    // console.log('NEW: ',num);\n\n    var i;\n    var len = this.layers.length;\n\n    if (!this.completeLayers) {\n      this.checkLayers(num);\n    }\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(num - this.layers[i].st);\n      }\n    }\n\n    if (this.globalData._mdf) {\n      if (this.renderConfig.clearCanvas === true) {\n        this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n      } else {\n        this.save();\n      }\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        if (this.completeLayers || this.elements[i]) {\n          this.elements[i].renderFrame();\n        }\n      }\n\n      if (this.renderConfig.clearCanvas !== true) {\n        this.restore();\n      }\n    }\n  };\n\n  CanvasRendererBase.prototype.buildItem = function (pos) {\n    var elements = this.elements;\n\n    if (elements[pos] || this.layers[pos].ty === 99) {\n      return;\n    }\n\n    var element = this.createItem(this.layers[pos], this, this.globalData);\n    elements[pos] = element;\n    element.initExpressions();\n    /* if(this.layers[pos].ty === 0){\r\n          element.resize(this.globalData.transformCanvas);\r\n      } */\n  };\n\n  CanvasRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n    }\n  };\n\n  CanvasRendererBase.prototype.hide = function () {\n    this.animationItem.container.style.display = 'none';\n  };\n\n  CanvasRendererBase.prototype.show = function () {\n    this.animationItem.container.style.display = 'block';\n  };\n\n  function CanvasContext() {\n    this.opacity = -1;\n    this.transform = createTypedArray('float32', 16);\n    this.fillStyle = '';\n    this.strokeStyle = '';\n    this.lineWidth = '';\n    this.lineCap = '';\n    this.lineJoin = '';\n    this.miterLimit = '';\n    this.id = Math.random();\n  }\n\n  function CVContextData() {\n    this.stack = [];\n    this.cArrPos = 0;\n    this.cTr = new Matrix();\n    var i;\n    var len = 15;\n\n    for (i = 0; i < len; i += 1) {\n      var canvasContext = new CanvasContext();\n      this.stack[i] = canvasContext;\n    }\n\n    this._length = len;\n    this.nativeContext = null;\n    this.transformMat = new Matrix();\n    this.currentOpacity = 1; //\n\n    this.currentFillStyle = '';\n    this.appliedFillStyle = ''; //\n\n    this.currentStrokeStyle = '';\n    this.appliedStrokeStyle = ''; //\n\n    this.currentLineWidth = '';\n    this.appliedLineWidth = ''; //\n\n    this.currentLineCap = '';\n    this.appliedLineCap = ''; //\n\n    this.currentLineJoin = '';\n    this.appliedLineJoin = ''; //\n\n    this.appliedMiterLimit = '';\n    this.currentMiterLimit = '';\n  }\n\n  CVContextData.prototype.duplicate = function () {\n    var newLength = this._length * 2;\n    var i = 0;\n\n    for (i = this._length; i < newLength; i += 1) {\n      this.stack[i] = new CanvasContext();\n    }\n\n    this._length = newLength;\n  };\n\n  CVContextData.prototype.reset = function () {\n    this.cArrPos = 0;\n    this.cTr.reset();\n    this.stack[this.cArrPos].opacity = 1;\n  };\n\n  CVContextData.prototype.restore = function (forceRestore) {\n    this.cArrPos -= 1;\n    var currentContext = this.stack[this.cArrPos];\n    var transform = currentContext.transform;\n    var i;\n    var arr = this.cTr.props;\n\n    for (i = 0; i < 16; i += 1) {\n      arr[i] = transform[i];\n    }\n\n    if (forceRestore) {\n      this.nativeContext.restore();\n      var prevStack = this.stack[this.cArrPos + 1];\n      this.appliedFillStyle = prevStack.fillStyle;\n      this.appliedStrokeStyle = prevStack.strokeStyle;\n      this.appliedLineWidth = prevStack.lineWidth;\n      this.appliedLineCap = prevStack.lineCap;\n      this.appliedLineJoin = prevStack.lineJoin;\n      this.appliedMiterLimit = prevStack.miterLimit;\n    }\n\n    this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n    if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n      this.nativeContext.globalAlpha = currentContext.opacity;\n      this.currentOpacity = currentContext.opacity;\n    }\n\n    this.currentFillStyle = currentContext.fillStyle;\n    this.currentStrokeStyle = currentContext.strokeStyle;\n    this.currentLineWidth = currentContext.lineWidth;\n    this.currentLineCap = currentContext.lineCap;\n    this.currentLineJoin = currentContext.lineJoin;\n    this.currentMiterLimit = currentContext.miterLimit;\n  };\n\n  CVContextData.prototype.save = function (saveOnNativeFlag) {\n    if (saveOnNativeFlag) {\n      this.nativeContext.save();\n    }\n\n    var props = this.cTr.props;\n\n    if (this._length <= this.cArrPos) {\n      this.duplicate();\n    }\n\n    var currentStack = this.stack[this.cArrPos];\n    var i;\n\n    for (i = 0; i < 16; i += 1) {\n      currentStack.transform[i] = props[i];\n    }\n\n    this.cArrPos += 1;\n    var newStack = this.stack[this.cArrPos];\n    newStack.opacity = currentStack.opacity;\n    newStack.fillStyle = currentStack.fillStyle;\n    newStack.strokeStyle = currentStack.strokeStyle;\n    newStack.lineWidth = currentStack.lineWidth;\n    newStack.lineCap = currentStack.lineCap;\n    newStack.lineJoin = currentStack.lineJoin;\n    newStack.miterLimit = currentStack.miterLimit;\n  };\n\n  CVContextData.prototype.setOpacity = function (value) {\n    this.stack[this.cArrPos].opacity = value;\n  };\n\n  CVContextData.prototype.setContext = function (value) {\n    this.nativeContext = value;\n  };\n\n  CVContextData.prototype.fillStyle = function (value) {\n    if (this.stack[this.cArrPos].fillStyle !== value) {\n      this.currentFillStyle = value;\n      this.stack[this.cArrPos].fillStyle = value;\n    }\n  };\n\n  CVContextData.prototype.strokeStyle = function (value) {\n    if (this.stack[this.cArrPos].strokeStyle !== value) {\n      this.currentStrokeStyle = value;\n      this.stack[this.cArrPos].strokeStyle = value;\n    }\n  };\n\n  CVContextData.prototype.lineWidth = function (value) {\n    if (this.stack[this.cArrPos].lineWidth !== value) {\n      this.currentLineWidth = value;\n      this.stack[this.cArrPos].lineWidth = value;\n    }\n  };\n\n  CVContextData.prototype.lineCap = function (value) {\n    if (this.stack[this.cArrPos].lineCap !== value) {\n      this.currentLineCap = value;\n      this.stack[this.cArrPos].lineCap = value;\n    }\n  };\n\n  CVContextData.prototype.lineJoin = function (value) {\n    if (this.stack[this.cArrPos].lineJoin !== value) {\n      this.currentLineJoin = value;\n      this.stack[this.cArrPos].lineJoin = value;\n    }\n  };\n\n  CVContextData.prototype.miterLimit = function (value) {\n    if (this.stack[this.cArrPos].miterLimit !== value) {\n      this.currentMiterLimit = value;\n      this.stack[this.cArrPos].miterLimit = value;\n    }\n  };\n\n  CVContextData.prototype.transform = function (props) {\n    this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n    var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n    this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n    currentTransform.cloneFromProps(this.transformMat.props);\n    var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n    this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n  };\n\n  CVContextData.prototype.opacity = function (op) {\n    var currentOpacity = this.stack[this.cArrPos].opacity;\n    currentOpacity *= op < 0 ? 0 : op;\n\n    if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n      if (this.currentOpacity !== op) {\n        this.nativeContext.globalAlpha = op;\n        this.currentOpacity = op;\n      }\n\n      this.stack[this.cArrPos].opacity = currentOpacity;\n    }\n  };\n\n  CVContextData.prototype.fill = function (rule) {\n    if (this.appliedFillStyle !== this.currentFillStyle) {\n      this.appliedFillStyle = this.currentFillStyle;\n      this.nativeContext.fillStyle = this.appliedFillStyle;\n    }\n\n    this.nativeContext.fill(rule);\n  };\n\n  CVContextData.prototype.fillRect = function (x, y, w, h) {\n    if (this.appliedFillStyle !== this.currentFillStyle) {\n      this.appliedFillStyle = this.currentFillStyle;\n      this.nativeContext.fillStyle = this.appliedFillStyle;\n    }\n\n    this.nativeContext.fillRect(x, y, w, h);\n  };\n\n  CVContextData.prototype.stroke = function () {\n    if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n      this.appliedStrokeStyle = this.currentStrokeStyle;\n      this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n    }\n\n    if (this.appliedLineWidth !== this.currentLineWidth) {\n      this.appliedLineWidth = this.currentLineWidth;\n      this.nativeContext.lineWidth = this.appliedLineWidth;\n    }\n\n    if (this.appliedLineCap !== this.currentLineCap) {\n      this.appliedLineCap = this.currentLineCap;\n      this.nativeContext.lineCap = this.appliedLineCap;\n    }\n\n    if (this.appliedLineJoin !== this.currentLineJoin) {\n      this.appliedLineJoin = this.currentLineJoin;\n      this.nativeContext.lineJoin = this.appliedLineJoin;\n    }\n\n    if (this.appliedMiterLimit !== this.currentMiterLimit) {\n      this.appliedMiterLimit = this.currentMiterLimit;\n      this.nativeContext.miterLimit = this.appliedMiterLimit;\n    }\n\n    this.nativeContext.stroke();\n  };\n\n  function CVCompElement(data, globalData, comp) {\n    this.completeLayers = false;\n    this.layers = data.layers;\n    this.pendingElements = [];\n    this.elements = createSizedArray(this.layers.length);\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n\n  extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n  CVCompElement.prototype.renderInnerContent = function () {\n    var ctx = this.canvasContext;\n    ctx.beginPath();\n    ctx.moveTo(0, 0);\n    ctx.lineTo(this.data.w, 0);\n    ctx.lineTo(this.data.w, this.data.h);\n    ctx.lineTo(0, this.data.h);\n    ctx.lineTo(0, 0);\n    ctx.clip();\n    var i;\n    var len = this.layers.length;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].renderFrame();\n      }\n    }\n  };\n\n  CVCompElement.prototype.destroy = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.elements[i]) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.layers = null;\n    this.elements = null;\n  };\n\n  CVCompElement.prototype.createComp = function (data) {\n    return new CVCompElement(data, this.globalData, this);\n  };\n\n  function CanvasRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.renderConfig = {\n      clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n      context: config && config.context || null,\n      progressiveLoad: config && config.progressiveLoad || false,\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      contentVisibility: config && config.contentVisibility || 'visible',\n      className: config && config.className || '',\n      id: config && config.id || '',\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.renderConfig.dpr = config && config.dpr || 1;\n\n    if (this.animationItem.wrapper) {\n      this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n    }\n\n    this.renderedFrame = -1;\n    this.globalData = {\n      frameNum: -1,\n      _mdf: false,\n      renderConfig: this.renderConfig,\n      currentGlobalAlpha: -1\n    };\n    this.contextData = new CVContextData();\n    this.elements = [];\n    this.pendingElements = [];\n    this.transformMat = new Matrix();\n    this.completeLayers = false;\n    this.rendererType = 'canvas';\n\n    if (this.renderConfig.clearCanvas) {\n      this.ctxTransform = this.contextData.transform.bind(this.contextData);\n      this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n      this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n      this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n      this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n      this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n      this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n      this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n      this.ctxFill = this.contextData.fill.bind(this.contextData);\n      this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n      this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n      this.save = this.contextData.save.bind(this.contextData);\n    }\n  }\n\n  extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n  CanvasRenderer.prototype.createComp = function (data) {\n    return new CVCompElement(data, this.globalData, this);\n  };\n\n  function HBaseElement() {}\n\n  HBaseElement.prototype = {\n    checkBlendMode: function checkBlendMode() {},\n    initRendererElement: function initRendererElement() {\n      this.baseElement = createTag(this.data.tg || 'div');\n\n      if (this.data.hasMask) {\n        this.svgElement = createNS('svg');\n        this.layerElement = createNS('g');\n        this.maskedElement = this.layerElement;\n        this.svgElement.appendChild(this.layerElement);\n        this.baseElement.appendChild(this.svgElement);\n      } else {\n        this.layerElement = this.baseElement;\n      }\n\n      styleDiv(this.baseElement);\n    },\n    createContainerElements: function createContainerElements() {\n      this.renderableEffectsManager = new CVEffects(this);\n      this.transformedElement = this.baseElement;\n      this.maskedElement = this.layerElement;\n\n      if (this.data.ln) {\n        this.layerElement.setAttribute('id', this.data.ln);\n      }\n\n      if (this.data.cl) {\n        this.layerElement.setAttribute('class', this.data.cl);\n      }\n\n      if (this.data.bm !== 0) {\n        this.setBlendMode();\n      }\n    },\n    renderElement: function renderElement() {\n      var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n      if (this.finalTransform._matMdf) {\n        var matrixValue = this.finalTransform.mat.toCSS();\n        transformedElementStyle.transform = matrixValue;\n        transformedElementStyle.webkitTransform = matrixValue;\n      }\n\n      if (this.finalTransform._opMdf) {\n        transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n      }\n    },\n    renderFrame: function renderFrame() {\n      // If it is exported as hidden (data.hd === true) no need to render\n      // If it is not visible no need to render\n      if (this.data.hd || this.hidden) {\n        return;\n      }\n\n      this.renderTransform();\n      this.renderRenderable();\n      this.renderElement();\n      this.renderInnerContent();\n\n      if (this._isFirstFrame) {\n        this._isFirstFrame = false;\n      }\n    },\n    destroy: function destroy() {\n      this.layerElement = null;\n      this.transformedElement = null;\n\n      if (this.matteElement) {\n        this.matteElement = null;\n      }\n\n      if (this.maskManager) {\n        this.maskManager.destroy();\n        this.maskManager = null;\n      }\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\n    },\n    addEffects: function addEffects() {},\n    setMatte: function setMatte() {}\n  };\n  HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n  HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n  HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n  function HSolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n  HSolidElement.prototype.createContent = function () {\n    var rect;\n\n    if (this.data.hasMask) {\n      rect = createNS('rect');\n      rect.setAttribute('width', this.data.sw);\n      rect.setAttribute('height', this.data.sh);\n      rect.setAttribute('fill', this.data.sc);\n      this.svgElement.setAttribute('width', this.data.sw);\n      this.svgElement.setAttribute('height', this.data.sh);\n    } else {\n      rect = createTag('div');\n      rect.style.width = this.data.sw + 'px';\n      rect.style.height = this.data.sh + 'px';\n      rect.style.backgroundColor = this.data.sc;\n    }\n\n    this.layerElement.appendChild(rect);\n  };\n\n  function HShapeElement(data, globalData, comp) {\n    // List of drawable elements\n    this.shapes = []; // Full shape data\n\n    this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n    this.stylesList = []; // List of modifiers that will be applied to shapes\n\n    this.shapeModifiers = []; // List of items in shape tree\n\n    this.itemsData = []; // List of items in previous shape tree\n\n    this.processedElements = []; // List of animated components\n\n    this.animatedContents = [];\n    this.shapesContainer = createNS('g');\n    this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n    // List of elements that have been created\n\n    this.prevViewData = [];\n    this.currentBBox = {\n      x: 999999,\n      y: -999999,\n      h: 0,\n      w: 0\n    };\n  }\n\n  extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n  HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n  HShapeElement.prototype.createContent = function () {\n    var cont;\n    this.baseElement.style.fontSize = 0;\n\n    if (this.data.hasMask) {\n      this.layerElement.appendChild(this.shapesContainer);\n      cont = this.svgElement;\n    } else {\n      cont = createNS('svg');\n      var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n      cont.setAttribute('width', size.w);\n      cont.setAttribute('height', size.h);\n      cont.appendChild(this.shapesContainer);\n      this.layerElement.appendChild(cont);\n    }\n\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n    this.filterUniqueShapes();\n    this.shapeCont = cont;\n  };\n\n  HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n    var i;\n    var len = transformers.length;\n\n    for (i = 0; i < len; i += 1) {\n      point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n    }\n\n    return point;\n  };\n\n  HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n    var shape = item.sh.v;\n    var transformers = item.transformers;\n    var i;\n    var len = shape._length;\n    var vPoint;\n    var oPoint;\n    var nextIPoint;\n    var nextVPoint;\n\n    if (len <= 1) {\n      return;\n    }\n\n    for (i = 0; i < len - 1; i += 1) {\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n    }\n\n    if (shape.c) {\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n    }\n  };\n\n  HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n    this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n    var bounds = this.shapeBoundingBox;\n    boundingBox.x = bmMin(bounds.left, boundingBox.x);\n    boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n    boundingBox.y = bmMin(bounds.top, boundingBox.y);\n    boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n  };\n\n  HShapeElement.prototype.shapeBoundingBox = {\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0\n  };\n  HShapeElement.prototype.tempBoundingBox = {\n    x: 0,\n    xMax: 0,\n    y: 0,\n    yMax: 0,\n    width: 0,\n    height: 0\n  };\n\n  HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n    var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n    for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n      // eslint-disable-line no-plusplus\n      b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n      a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n      c = 3 * p1[i] - 3 * p0[i];\n      b |= 0; // eslint-disable-line no-bitwise\n\n      a |= 0; // eslint-disable-line no-bitwise\n\n      c |= 0; // eslint-disable-line no-bitwise\n\n      if (a === 0 && b === 0) {//\n      } else if (a === 0) {\n        t = -c / b;\n\n        if (t > 0 && t < 1) {\n          bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n        }\n      } else {\n        b2ac = b * b - 4 * c * a;\n\n        if (b2ac >= 0) {\n          t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n          if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n          t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n          if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n        }\n      }\n    }\n\n    this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n    this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n    this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n    this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n  };\n\n  HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n    return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n  };\n\n  HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n    var i;\n    var len = itemsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (itemsData[i] && itemsData[i].sh) {\n        this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n      } else if (itemsData[i] && itemsData[i].it) {\n        this.calculateBoundingBox(itemsData[i].it, boundingBox);\n      } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n        this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n      }\n    }\n  };\n\n  HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n    var width = 0;\n\n    if (widthProperty.keyframes) {\n      for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n        var kfw = widthProperty.keyframes[i].s;\n\n        if (kfw > width) {\n          width = kfw;\n        }\n      }\n\n      width *= widthProperty.mult;\n    } else {\n      width = widthProperty.v * widthProperty.mult;\n    }\n\n    boundingBox.x -= width;\n    boundingBox.xMax += width;\n    boundingBox.y -= width;\n    boundingBox.yMax += width;\n  };\n\n  HShapeElement.prototype.currentBoxContains = function (box) {\n    return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n  };\n\n  HShapeElement.prototype.renderInnerContent = function () {\n    this._renderShapeFrame();\n\n    if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n      var tempBoundingBox = this.tempBoundingBox;\n      var max = 999999;\n      tempBoundingBox.x = max;\n      tempBoundingBox.xMax = -max;\n      tempBoundingBox.y = max;\n      tempBoundingBox.yMax = -max;\n      this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n      tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n      tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n      if (this.currentBoxContains(tempBoundingBox)) {\n        return;\n      }\n\n      var changed = false;\n\n      if (this.currentBBox.w !== tempBoundingBox.width) {\n        this.currentBBox.w = tempBoundingBox.width;\n        this.shapeCont.setAttribute('width', tempBoundingBox.width);\n        changed = true;\n      }\n\n      if (this.currentBBox.h !== tempBoundingBox.height) {\n        this.currentBBox.h = tempBoundingBox.height;\n        this.shapeCont.setAttribute('height', tempBoundingBox.height);\n        changed = true;\n      }\n\n      if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n        this.currentBBox.w = tempBoundingBox.width;\n        this.currentBBox.h = tempBoundingBox.height;\n        this.currentBBox.x = tempBoundingBox.x;\n        this.currentBBox.y = tempBoundingBox.y;\n        this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n        var shapeStyle = this.shapeCont.style;\n        var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n        shapeStyle.transform = shapeTransform;\n        shapeStyle.webkitTransform = shapeTransform;\n      }\n    }\n  };\n\n  function HTextElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.textPaths = [];\n    this.currentBBox = {\n      x: 999999,\n      y: -999999,\n      h: 0,\n      w: 0\n    };\n    this.renderType = 'svg';\n    this.isMasked = false;\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n  HTextElement.prototype.createContent = function () {\n    this.isMasked = this.checkMasks();\n\n    if (this.isMasked) {\n      this.renderType = 'svg';\n      this.compW = this.comp.data.w;\n      this.compH = this.comp.data.h;\n      this.svgElement.setAttribute('width', this.compW);\n      this.svgElement.setAttribute('height', this.compH);\n      var g = createNS('g');\n      this.maskedElement.appendChild(g);\n      this.innerElem = g;\n    } else {\n      this.renderType = 'html';\n      this.innerElem = this.layerElement;\n    }\n\n    this.checkParenting();\n  };\n\n  HTextElement.prototype.buildNewText = function () {\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n    var innerElemStyle = this.innerElem.style;\n    var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n    innerElemStyle.fill = textColor;\n    innerElemStyle.color = textColor;\n\n    if (documentData.sc) {\n      innerElemStyle.stroke = this.buildColor(documentData.sc);\n      innerElemStyle.strokeWidth = documentData.sw + 'px';\n    }\n\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n    if (!this.globalData.fontManager.chars) {\n      innerElemStyle.fontSize = documentData.finalSize + 'px';\n      innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n      if (fontData.fClass) {\n        this.innerElem.className = fontData.fClass;\n      } else {\n        innerElemStyle.fontFamily = fontData.fFamily;\n        var fWeight = documentData.fWeight;\n        var fStyle = documentData.fStyle;\n        innerElemStyle.fontStyle = fStyle;\n        innerElemStyle.fontWeight = fWeight;\n      }\n    }\n\n    var i;\n    var len;\n    var letters = documentData.l;\n    len = letters.length;\n    var tSpan;\n    var tParent;\n    var tCont;\n    var matrixHelper = this.mHelper;\n    var shapes;\n    var shapeStr = '';\n    var cnt = 0;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.globalData.fontManager.chars) {\n        if (!this.textPaths[cnt]) {\n          tSpan = createNS('path');\n          tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n          tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n          tSpan.setAttribute('stroke-miterlimit', '4');\n        } else {\n          tSpan = this.textPaths[cnt];\n        }\n\n        if (!this.isMasked) {\n          if (this.textSpans[cnt]) {\n            tParent = this.textSpans[cnt];\n            tCont = tParent.children[0];\n          } else {\n            tParent = createTag('div');\n            tParent.style.lineHeight = 0;\n            tCont = createNS('svg');\n            tCont.appendChild(tSpan);\n            styleDiv(tParent);\n          }\n        }\n      } else if (!this.isMasked) {\n        if (this.textSpans[cnt]) {\n          tParent = this.textSpans[cnt];\n          tSpan = this.textPaths[cnt];\n        } else {\n          tParent = createTag('span');\n          styleDiv(tParent);\n          tSpan = createTag('span');\n          styleDiv(tSpan);\n          tParent.appendChild(tSpan);\n        }\n      } else {\n        tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n      } // tSpan.setAttribute('visibility', 'hidden');\n\n\n      if (this.globalData.fontManager.chars) {\n        var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n        var shapeData;\n\n        if (charData) {\n          shapeData = charData.data;\n        } else {\n          shapeData = null;\n        }\n\n        matrixHelper.reset();\n\n        if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n          shapes = shapeData.shapes[0].it;\n          matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n          shapeStr = this.createPathShape(matrixHelper, shapes);\n          tSpan.setAttribute('d', shapeStr);\n        }\n\n        if (!this.isMasked) {\n          this.innerElem.appendChild(tParent);\n\n          if (shapeData && shapeData.shapes) {\n            // document.body.appendChild is needed to get exact measure of shape\n            document.body.appendChild(tCont);\n            var boundingBox = tCont.getBBox();\n            tCont.setAttribute('width', boundingBox.width + 2);\n            tCont.setAttribute('height', boundingBox.height + 2);\n            tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n            var tContStyle = tCont.style;\n            var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n            tContStyle.transform = tContTranslation;\n            tContStyle.webkitTransform = tContTranslation;\n            letters[i].yOffset = boundingBox.y - 1;\n          } else {\n            tCont.setAttribute('width', 1);\n            tCont.setAttribute('height', 1);\n          }\n\n          tParent.appendChild(tCont);\n        } else {\n          this.innerElem.appendChild(tSpan);\n        }\n      } else {\n        tSpan.textContent = letters[i].val;\n        tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n        if (!this.isMasked) {\n          this.innerElem.appendChild(tParent); //\n\n          var tStyle = tSpan.style;\n          var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n          tStyle.transform = tSpanTranslation;\n          tStyle.webkitTransform = tSpanTranslation;\n        } else {\n          this.innerElem.appendChild(tSpan);\n        }\n      } //\n\n\n      if (!this.isMasked) {\n        this.textSpans[cnt] = tParent;\n      } else {\n        this.textSpans[cnt] = tSpan;\n      }\n\n      this.textSpans[cnt].style.display = 'block';\n      this.textPaths[cnt] = tSpan;\n      cnt += 1;\n    }\n\n    while (cnt < this.textSpans.length) {\n      this.textSpans[cnt].style.display = 'none';\n      cnt += 1;\n    }\n  };\n\n  HTextElement.prototype.renderInnerContent = function () {\n    this.validateText();\n    var svgStyle;\n\n    if (this.data.singleShape) {\n      if (!this._isFirstFrame && !this.lettersChangedFlag) {\n        return;\n      }\n\n      if (this.isMasked && this.finalTransform._matMdf) {\n        // Todo Benchmark if using this is better than getBBox\n        this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n        svgStyle = this.svgElement.style;\n        var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n        svgStyle.transform = translation;\n        svgStyle.webkitTransform = translation;\n      }\n    }\n\n    this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n    if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n      return;\n    }\n\n    var i;\n    var len;\n    var count = 0;\n    var renderedLetters = this.textAnimator.renderedLetters;\n    var letters = this.textProperty.currentData.l;\n    len = letters.length;\n    var renderedLetter;\n    var textSpan;\n    var textPath;\n\n    for (i = 0; i < len; i += 1) {\n      if (letters[i].n) {\n        count += 1;\n      } else {\n        textSpan = this.textSpans[i];\n        textPath = this.textPaths[i];\n        renderedLetter = renderedLetters[count];\n        count += 1;\n\n        if (renderedLetter._mdf.m) {\n          if (!this.isMasked) {\n            textSpan.style.webkitTransform = renderedLetter.m;\n            textSpan.style.transform = renderedLetter.m;\n          } else {\n            textSpan.setAttribute('transform', renderedLetter.m);\n          }\n        } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n        textSpan.style.opacity = renderedLetter.o;\n\n        if (renderedLetter.sw && renderedLetter._mdf.sw) {\n          textPath.setAttribute('stroke-width', renderedLetter.sw);\n        }\n\n        if (renderedLetter.sc && renderedLetter._mdf.sc) {\n          textPath.setAttribute('stroke', renderedLetter.sc);\n        }\n\n        if (renderedLetter.fc && renderedLetter._mdf.fc) {\n          textPath.setAttribute('fill', renderedLetter.fc);\n          textPath.style.color = renderedLetter.fc;\n        }\n      }\n    }\n\n    if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n      var boundingBox = this.innerElem.getBBox();\n\n      if (this.currentBBox.w !== boundingBox.width) {\n        this.currentBBox.w = boundingBox.width;\n        this.svgElement.setAttribute('width', boundingBox.width);\n      }\n\n      if (this.currentBBox.h !== boundingBox.height) {\n        this.currentBBox.h = boundingBox.height;\n        this.svgElement.setAttribute('height', boundingBox.height);\n      }\n\n      var margin = 1;\n\n      if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n        this.currentBBox.w = boundingBox.width + margin * 2;\n        this.currentBBox.h = boundingBox.height + margin * 2;\n        this.currentBBox.x = boundingBox.x - margin;\n        this.currentBBox.y = boundingBox.y - margin;\n        this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n        svgStyle = this.svgElement.style;\n        var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n        svgStyle.transform = svgTransform;\n        svgStyle.webkitTransform = svgTransform;\n      }\n    }\n  };\n\n  function HCameraElement(data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initHierarchy();\n    var getProp = PropertyFactory.getProp;\n    this.pe = getProp(this, data.pe, 0, 0, this);\n\n    if (data.ks.p.s) {\n      this.px = getProp(this, data.ks.p.x, 1, 0, this);\n      this.py = getProp(this, data.ks.p.y, 1, 0, this);\n      this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n    } else {\n      this.p = getProp(this, data.ks.p, 1, 0, this);\n    }\n\n    if (data.ks.a) {\n      this.a = getProp(this, data.ks.a, 1, 0, this);\n    }\n\n    if (data.ks.or.k.length && data.ks.or.k[0].to) {\n      var i;\n      var len = data.ks.or.k.length;\n\n      for (i = 0; i < len; i += 1) {\n        data.ks.or.k[i].to = null;\n        data.ks.or.k[i].ti = null;\n      }\n    }\n\n    this.or = getProp(this, data.ks.or, 1, degToRads, this);\n    this.or.sh = true;\n    this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n    this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n    this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n    this.mat = new Matrix();\n    this._prevMat = new Matrix();\n    this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n    this.finalTransform = {\n      mProp: this\n    };\n  }\n\n  extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n  HCameraElement.prototype.setup = function () {\n    var i;\n    var len = this.comp.threeDElements.length;\n    var comp;\n    var perspectiveStyle;\n    var containerStyle;\n\n    for (i = 0; i < len; i += 1) {\n      // [perspectiveElem,container]\n      comp = this.comp.threeDElements[i];\n\n      if (comp.type === '3d') {\n        perspectiveStyle = comp.perspectiveElem.style;\n        containerStyle = comp.container.style;\n        var perspective = this.pe.v + 'px';\n        var origin = '0px 0px 0px';\n        var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n        perspectiveStyle.perspective = perspective;\n        perspectiveStyle.webkitPerspective = perspective;\n        containerStyle.transformOrigin = origin;\n        containerStyle.mozTransformOrigin = origin;\n        containerStyle.webkitTransformOrigin = origin;\n        perspectiveStyle.transform = matrix;\n        perspectiveStyle.webkitTransform = matrix;\n      }\n    }\n  };\n\n  HCameraElement.prototype.createElements = function () {};\n\n  HCameraElement.prototype.hide = function () {};\n\n  HCameraElement.prototype.renderFrame = function () {\n    var _mdf = this._isFirstFrame;\n    var i;\n    var len;\n\n    if (this.hierarchy) {\n      len = this.hierarchy.length;\n\n      for (i = 0; i < len; i += 1) {\n        _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n      }\n    }\n\n    if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n      this.mat.reset();\n\n      if (this.hierarchy) {\n        len = this.hierarchy.length - 1;\n\n        for (i = len; i >= 0; i -= 1) {\n          var mTransf = this.hierarchy[i].finalTransform.mProp;\n          this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n          this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n          this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n          this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n          this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n        }\n      }\n\n      if (this.p) {\n        this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n      } else {\n        this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n      }\n\n      if (this.a) {\n        var diffVector;\n\n        if (this.p) {\n          diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n        } else {\n          diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n        }\n\n        var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n        var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n        var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n        var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n        var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n        this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n      }\n\n      this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n      this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n      this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n      this.mat.translate(0, 0, this.pe.v);\n      var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n      if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n        len = this.comp.threeDElements.length;\n        var comp;\n        var perspectiveStyle;\n        var containerStyle;\n\n        for (i = 0; i < len; i += 1) {\n          comp = this.comp.threeDElements[i];\n\n          if (comp.type === '3d') {\n            if (hasMatrixChanged) {\n              var matValue = this.mat.toCSS();\n              containerStyle = comp.container.style;\n              containerStyle.transform = matValue;\n              containerStyle.webkitTransform = matValue;\n            }\n\n            if (this.pe._mdf) {\n              perspectiveStyle = comp.perspectiveElem.style;\n              perspectiveStyle.perspective = this.pe.v + 'px';\n              perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n            }\n          }\n        }\n\n        this.mat.clone(this._prevMat);\n      }\n    }\n\n    this._isFirstFrame = false;\n  };\n\n  HCameraElement.prototype.prepareFrame = function (num) {\n    this.prepareProperties(num, true);\n  };\n\n  HCameraElement.prototype.destroy = function () {};\n\n  HCameraElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  function HImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n  HImageElement.prototype.createContent = function () {\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    var img = new Image();\n\n    if (this.data.hasMask) {\n      this.imageElem = createNS('image');\n      this.imageElem.setAttribute('width', this.assetData.w + 'px');\n      this.imageElem.setAttribute('height', this.assetData.h + 'px');\n      this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n      this.layerElement.appendChild(this.imageElem);\n      this.baseElement.setAttribute('width', this.assetData.w);\n      this.baseElement.setAttribute('height', this.assetData.h);\n    } else {\n      this.layerElement.appendChild(img);\n    }\n\n    img.crossOrigin = 'anonymous';\n    img.src = assetPath;\n\n    if (this.data.ln) {\n      this.baseElement.setAttribute('id', this.data.ln);\n    }\n  };\n\n  function HybridRendererBase(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.renderConfig = {\n      className: config && config.className || '',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '400%',\n        height: config && config.filterSize && config.filterSize.height || '400%',\n        x: config && config.filterSize && config.filterSize.x || '-100%',\n        y: config && config.filterSize && config.filterSize.y || '-100%'\n      }\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      renderConfig: this.renderConfig\n    };\n    this.pendingElements = [];\n    this.elements = [];\n    this.threeDElements = [];\n    this.destroyed = false;\n    this.camera = null;\n    this.supports3d = true;\n    this.rendererType = 'html';\n  }\n\n  extendPrototype([BaseRenderer], HybridRendererBase);\n  HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n  HybridRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n    }\n  };\n\n  HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n    var newDOMElement = element.getBaseElement();\n\n    if (!newDOMElement) {\n      return;\n    }\n\n    var layer = this.layers[pos];\n\n    if (!layer.ddd || !this.supports3d) {\n      if (this.threeDElements) {\n        this.addTo3dContainer(newDOMElement, pos);\n      } else {\n        var i = 0;\n        var nextDOMElement;\n        var nextLayer;\n        var tmpDOMElement;\n\n        while (i < pos) {\n          if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n            nextLayer = this.elements[i];\n            tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n            nextDOMElement = tmpDOMElement || nextDOMElement;\n          }\n\n          i += 1;\n        }\n\n        if (nextDOMElement) {\n          if (!layer.ddd || !this.supports3d) {\n            this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n          }\n        } else if (!layer.ddd || !this.supports3d) {\n          this.layerElement.appendChild(newDOMElement);\n        }\n      }\n    } else {\n      this.addTo3dContainer(newDOMElement, pos);\n    }\n  };\n\n  HybridRendererBase.prototype.createShape = function (data) {\n    if (!this.supports3d) {\n      return new SVGShapeElement(data, this.globalData, this);\n    }\n\n    return new HShapeElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createText = function (data) {\n    if (!this.supports3d) {\n      return new SVGTextLottieElement(data, this.globalData, this);\n    }\n\n    return new HTextElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createCamera = function (data) {\n    this.camera = new HCameraElement(data, this.globalData, this);\n    return this.camera;\n  };\n\n  HybridRendererBase.prototype.createImage = function (data) {\n    if (!this.supports3d) {\n      return new IImageElement(data, this.globalData, this);\n    }\n\n    return new HImageElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createSolid = function (data) {\n    if (!this.supports3d) {\n      return new ISolidElement(data, this.globalData, this);\n    }\n\n    return new HSolidElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n  HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n    var i = 0;\n    var len = this.threeDElements.length;\n\n    while (i < len) {\n      if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n        return this.threeDElements[i].perspectiveElem;\n      }\n\n      i += 1;\n    }\n\n    return null;\n  };\n\n  HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n    var perspectiveElem = createTag('div');\n    var style;\n    var containerStyle;\n    styleDiv(perspectiveElem);\n    var container = createTag('div');\n    styleDiv(container);\n\n    if (type === '3d') {\n      style = perspectiveElem.style;\n      style.width = this.globalData.compSize.w + 'px';\n      style.height = this.globalData.compSize.h + 'px';\n      var center = '50% 50%';\n      style.webkitTransformOrigin = center;\n      style.mozTransformOrigin = center;\n      style.transformOrigin = center;\n      containerStyle = container.style;\n      var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n      containerStyle.transform = matrix;\n      containerStyle.webkitTransform = matrix;\n    }\n\n    perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n    var threeDContainerData = {\n      container: container,\n      perspectiveElem: perspectiveElem,\n      startPos: pos,\n      endPos: pos,\n      type: type\n    };\n    this.threeDElements.push(threeDContainerData);\n    return threeDContainerData;\n  };\n\n  HybridRendererBase.prototype.build3dContainers = function () {\n    var i;\n    var len = this.layers.length;\n    var lastThreeDContainerData;\n    var currentContainer = '';\n\n    for (i = 0; i < len; i += 1) {\n      if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n        if (currentContainer !== '3d') {\n          currentContainer = '3d';\n          lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n        }\n\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n      } else {\n        if (currentContainer !== '2d') {\n          currentContainer = '2d';\n          lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n        }\n\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n      }\n    }\n\n    len = this.threeDElements.length;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n    }\n  };\n\n  HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n    var i = 0;\n    var len = this.threeDElements.length;\n\n    while (i < len) {\n      if (pos <= this.threeDElements[i].endPos) {\n        var j = this.threeDElements[i].startPos;\n        var nextElement;\n\n        while (j < pos) {\n          if (this.elements[j] && this.elements[j].getBaseElement) {\n            nextElement = this.elements[j].getBaseElement();\n          }\n\n          j += 1;\n        }\n\n        if (nextElement) {\n          this.threeDElements[i].container.insertBefore(elem, nextElement);\n        } else {\n          this.threeDElements[i].container.appendChild(elem);\n        }\n\n        break;\n      }\n\n      i += 1;\n    }\n  };\n\n  HybridRendererBase.prototype.configAnimation = function (animData) {\n    var resizerElem = createTag('div');\n    var wrapper = this.animationItem.wrapper;\n    var style = resizerElem.style;\n    style.width = animData.w + 'px';\n    style.height = animData.h + 'px';\n    this.resizerElem = resizerElem;\n    styleDiv(resizerElem);\n    style.transformStyle = 'flat';\n    style.mozTransformStyle = 'flat';\n    style.webkitTransformStyle = 'flat';\n\n    if (this.renderConfig.className) {\n      resizerElem.setAttribute('class', this.renderConfig.className);\n    }\n\n    wrapper.appendChild(resizerElem);\n    style.overflow = 'hidden';\n    var svg = createNS('svg');\n    svg.setAttribute('width', '1');\n    svg.setAttribute('height', '1');\n    styleDiv(svg);\n    this.resizerElem.appendChild(svg);\n    var defs = createNS('defs');\n    svg.appendChild(defs);\n    this.data = animData; // Mask animation\n\n    this.setupGlobalData(animData, svg);\n    this.globalData.defs = defs;\n    this.layers = animData.layers;\n    this.layerElement = this.resizerElem;\n    this.build3dContainers();\n    this.updateContainerSize();\n  };\n\n  HybridRendererBase.prototype.destroy = function () {\n    if (this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n\n    this.animationItem.container = null;\n    this.globalData.defs = null;\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.elements.length = 0;\n    this.destroyed = true;\n    this.animationItem = null;\n  };\n\n  HybridRendererBase.prototype.updateContainerSize = function () {\n    var elementWidth = this.animationItem.wrapper.offsetWidth;\n    var elementHeight = this.animationItem.wrapper.offsetHeight;\n    var elementRel = elementWidth / elementHeight;\n    var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n    var sx;\n    var sy;\n    var tx;\n    var ty;\n\n    if (animationRel > elementRel) {\n      sx = elementWidth / this.globalData.compSize.w;\n      sy = elementWidth / this.globalData.compSize.w;\n      tx = 0;\n      ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n    } else {\n      sx = elementHeight / this.globalData.compSize.h;\n      sy = elementHeight / this.globalData.compSize.h;\n      tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n      ty = 0;\n    }\n\n    var style = this.resizerElem.style;\n    style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n    style.transform = style.webkitTransform;\n  };\n\n  HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n  HybridRendererBase.prototype.hide = function () {\n    this.resizerElem.style.display = 'none';\n  };\n\n  HybridRendererBase.prototype.show = function () {\n    this.resizerElem.style.display = 'block';\n  };\n\n  HybridRendererBase.prototype.initItems = function () {\n    this.buildAllItems();\n\n    if (this.camera) {\n      this.camera.setup();\n    } else {\n      var cWidth = this.globalData.compSize.w;\n      var cHeight = this.globalData.compSize.h;\n      var i;\n      var len = this.threeDElements.length;\n\n      for (i = 0; i < len; i += 1) {\n        var style = this.threeDElements[i].perspectiveElem.style;\n        style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n        style.perspective = style.webkitPerspective;\n      }\n    }\n  };\n\n  HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n    var i;\n    var len = assets.length;\n    var floatingContainer = createTag('div');\n\n    for (i = 0; i < len; i += 1) {\n      if (assets[i].xt) {\n        var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n        comp.initExpressions();\n        this.globalData.projectInterface.registerComposition(comp);\n      }\n    }\n  };\n\n  function HCompElement(data, globalData, comp) {\n    this.layers = data.layers;\n    this.supports3d = !data.hasMask;\n    this.completeLayers = false;\n    this.pendingElements = [];\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n\n  extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n  HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n  HCompElement.prototype.createContainerElements = function () {\n    this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n    if (this.data.hasMask) {\n      this.svgElement.setAttribute('width', this.data.w);\n      this.svgElement.setAttribute('height', this.data.h);\n      this.transformedElement = this.baseElement;\n    } else {\n      this.transformedElement = this.layerElement;\n    }\n  };\n\n  HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n    var j = 0;\n    var nextElement;\n\n    while (j < pos) {\n      if (this.elements[j] && this.elements[j].getBaseElement) {\n        nextElement = this.elements[j].getBaseElement();\n      }\n\n      j += 1;\n    }\n\n    if (nextElement) {\n      this.layerElement.insertBefore(elem, nextElement);\n    } else {\n      this.layerElement.appendChild(elem);\n    }\n  };\n\n  HCompElement.prototype.createComp = function (data) {\n    if (!this.supports3d) {\n      return new SVGCompElement(data, this.globalData, this);\n    }\n\n    return new HCompElement(data, this.globalData, this);\n  };\n\n  function HybridRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.renderConfig = {\n      className: config && config.className || '',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '400%',\n        height: config && config.filterSize && config.filterSize.height || '400%',\n        x: config && config.filterSize && config.filterSize.x || '-100%',\n        y: config && config.filterSize && config.filterSize.y || '-100%'\n      },\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      renderConfig: this.renderConfig\n    };\n    this.pendingElements = [];\n    this.elements = [];\n    this.threeDElements = [];\n    this.destroyed = false;\n    this.camera = null;\n    this.supports3d = true;\n    this.rendererType = 'html';\n  }\n\n  extendPrototype([HybridRendererBase], HybridRenderer);\n\n  HybridRenderer.prototype.createComp = function (data) {\n    if (!this.supports3d) {\n      return new SVGCompElement(data, this.globalData, this);\n    }\n\n    return new HCompElement(data, this.globalData, this);\n  };\n\n  var CompExpressionInterface = function () {\n    return function (comp) {\n      function _thisLayerFunction(name) {\n        var i = 0;\n        var len = comp.layers.length;\n\n        while (i < len) {\n          if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n            return comp.elements[i].layerInterface;\n          }\n\n          i += 1;\n        }\n\n        return null; // return {active:false};\n      }\n\n      Object.defineProperty(_thisLayerFunction, '_name', {\n        value: comp.data.nm\n      });\n      _thisLayerFunction.layer = _thisLayerFunction;\n      _thisLayerFunction.pixelAspect = 1;\n      _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n      _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n      _thisLayerFunction.pixelAspect = 1;\n      _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n      _thisLayerFunction.displayStartTime = 0;\n      _thisLayerFunction.numLayers = comp.layers.length;\n      return _thisLayerFunction;\n    };\n  }();\n\n  function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n  /* eslint-disable */\n\n  /*\r\n   Copyright 2014 David Bau.\r\n\r\n   Permission is hereby granted, free of charge, to any person obtaining\r\n   a copy of this software and associated documentation files (the\r\n   \"Software\"), to deal in the Software without restriction, including\r\n   without limitation the rights to use, copy, modify, merge, publish,\r\n   distribute, sublicense, and/or sell copies of the Software, and to\r\n   permit persons to whom the Software is furnished to do so, subject to\r\n   the following conditions:\r\n\r\n   The above copyright notice and this permission notice shall be\r\n   included in all copies or substantial portions of the Software.\r\n\r\n   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n   */\n  function seedRandom(pool, math) {\n    //\n    // The following constants are related to IEEE 754 limits.\n    //\n    var global = this,\n        width = 256,\n        // each RC4 output is 0 <= x < 256\n    chunks = 6,\n        // at least six RC4 outputs for each double\n    digits = 52,\n        // there are 52 significant digits in a double\n    rngname = 'random',\n        // rngname: name for Math.random and Math.seedrandom\n    startdenom = math.pow(width, chunks),\n        significance = math.pow(2, digits),\n        overflow = significance * 2,\n        mask = width - 1,\n        nodecrypto; // node.js crypto module, initialized at the bottom.\n    //\n    // seedrandom()\n    // This is the seedrandom function described above.\n    //\n\n    function seedrandom(seed, options, callback) {\n      var key = [];\n      options = options === true ? {\n        entropy: true\n      } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n      var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n      var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n      // randomness in every bit of the mantissa of the IEEE 754 value.\n\n      var prng = function prng() {\n        var n = arc4.g(chunks),\n            // Start with a numerator n < 2 ^ 48\n        d = startdenom,\n            //   and denominator d = 2 ^ 48.\n        x = 0; //   and no 'extra last byte'.\n\n        while (n < significance) {\n          // Fill up all significant digits by\n          n = (n + x) * width; //   shifting numerator and\n\n          d *= width; //   denominator and generating a\n\n          x = arc4.g(1); //   new least-significant-byte.\n        }\n\n        while (n >= overflow) {\n          // To avoid rounding up, before adding\n          n /= 2; //   last byte, shift everything\n\n          d /= 2; //   right using integer math until\n\n          x >>>= 1; //   we have exactly the desired bits.\n        }\n\n        return (n + x) / d; // Form the number within [0, 1).\n      };\n\n      prng.int32 = function () {\n        return arc4.g(4) | 0;\n      };\n\n      prng.quick = function () {\n        return arc4.g(4) / 0x100000000;\n      };\n\n      prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n      mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n      return (options.pass || callback || function (prng, seed, is_math_call, state) {\n        if (state) {\n          // Load the arc4 state from the given state if it has an S array.\n          if (state.S) {\n            copy(state, arc4);\n          } // Only provide the .state method if requested via options.state.\n\n\n          prng.state = function () {\n            return copy(arc4, {});\n          };\n        } // If called as a method of Math (Math.seedrandom()), mutate\n        // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n        if (is_math_call) {\n          math[rngname] = prng;\n          return seed;\n        } // Otherwise, it is a newer calling convention, so return the\n        // prng directly.\n        else return prng;\n      })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n    }\n\n    math['seed' + rngname] = seedrandom; //\n    // ARC4\n    //\n    // An ARC4 implementation.  The constructor takes a key in the form of\n    // an array of at most (width) integers that should be 0 <= x < (width).\n    //\n    // The g(count) method returns a pseudorandom integer that concatenates\n    // the next (count) outputs from ARC4.  Its return value is a number x\n    // that is in the range 0 <= x < (width ^ count).\n    //\n\n    function ARC4(key) {\n      var t,\n          keylen = key.length,\n          me = this,\n          i = 0,\n          j = me.i = me.j = 0,\n          s = me.S = []; // The empty key [] is treated as [0].\n\n      if (!keylen) {\n        key = [keylen++];\n      } // Set up S using the standard key scheduling algorithm.\n\n\n      while (i < width) {\n        s[i] = i++;\n      }\n\n      for (i = 0; i < width; i++) {\n        s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n        s[j] = t;\n      } // The \"g\" method returns the next (count) outputs as one number.\n\n\n      me.g = function (count) {\n        // Using instance members instead of closure state nearly doubles speed.\n        var t,\n            r = 0,\n            i = me.i,\n            j = me.j,\n            s = me.S;\n\n        while (count--) {\n          t = s[i = mask & i + 1];\n          r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n        }\n\n        me.i = i;\n        me.j = j;\n        return r; // For robust unpredictability, the function call below automatically\n        // discards an initial batch of values.  This is called RC4-drop[256].\n        // See http://google.com/search?q=rsa+fluhrer+response&btnI\n      };\n    } //\n    // copy()\n    // Copies internal state of ARC4 to or from a plain object.\n    //\n\n\n    function copy(f, t) {\n      t.i = f.i;\n      t.j = f.j;\n      t.S = f.S.slice();\n      return t;\n    } //\n    // flatten()\n    // Converts an object tree to nested arrays of strings.\n    //\n\n\n    function flatten(obj, depth) {\n      var result = [],\n          typ = _typeof$2(obj),\n          prop;\n\n      if (depth && typ == 'object') {\n        for (prop in obj) {\n          try {\n            result.push(flatten(obj[prop], depth - 1));\n          } catch (e) {}\n        }\n      }\n\n      return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n    } //\n    // mixkey()\n    // Mixes a string seed into a key that is an array of integers, and\n    // returns a shortened string seed that is equivalent to the result key.\n    //\n\n\n    function mixkey(seed, key) {\n      var stringseed = seed + '',\n          smear,\n          j = 0;\n\n      while (j < stringseed.length) {\n        key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n      }\n\n      return tostring(key);\n    } //\n    // autoseed()\n    // Returns an object for autoseeding, using window.crypto and Node crypto\n    // module if available.\n    //\n\n\n    function autoseed() {\n      try {\n        if (nodecrypto) {\n          return tostring(nodecrypto.randomBytes(width));\n        }\n\n        var out = new Uint8Array(width);\n        (global.crypto || global.msCrypto).getRandomValues(out);\n        return tostring(out);\n      } catch (e) {\n        var browser = global.navigator,\n            plugins = browser && browser.plugins;\n        return [+new Date(), global, plugins, global.screen, tostring(pool)];\n      }\n    } //\n    // tostring()\n    // Converts an array of charcodes to a string\n    //\n\n\n    function tostring(a) {\n      return String.fromCharCode.apply(0, a);\n    } //\n    // When seedrandom.js is loaded, we immediately mix a few bits\n    // from the built-in RNG into the entropy pool.  Because we do\n    // not want to interfere with deterministic PRNG state later,\n    // seedrandom will not call math.random on its own again after\n    // initialization.\n    //\n\n\n    mixkey(math.random(), pool); //\n    // Nodejs and AMD support: export the implementation as a module using\n    // either convention.\n    //\n    // End anonymous scope, and pass initial values.\n  }\n\n  ;\n\n  function initialize$2(BMMath) {\n    seedRandom([], BMMath);\n  }\n\n  var propTypes = {\n    SHAPE: 'shape'\n  };\n\n  function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n  var ExpressionManager = function () {\n    'use strict';\n\n    var ob = {};\n    var Math = BMMath;\n    var window = null;\n    var document = null;\n    var XMLHttpRequest = null;\n    var fetch = null;\n    var frames = null;\n    var _lottieGlobal = {};\n    initialize$2(BMMath);\n\n    function resetFrame() {\n      _lottieGlobal = {};\n    }\n\n    function $bm_isInstanceOfArray(arr) {\n      return arr.constructor === Array || arr.constructor === Float32Array;\n    }\n\n    function isNumerable(tOfV, v) {\n      return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n    }\n\n    function $bm_neg(a) {\n      var tOfA = _typeof$1(a);\n\n      if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n        return -a;\n      }\n\n      if ($bm_isInstanceOfArray(a)) {\n        var i;\n        var lenA = a.length;\n        var retArr = [];\n\n        for (i = 0; i < lenA; i += 1) {\n          retArr[i] = -a[i];\n        }\n\n        return retArr;\n      }\n\n      if (a.propType) {\n        return a.v;\n      }\n\n      return -a;\n    }\n\n    var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n    var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n    var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n    function sum(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n        return a + b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        a = a.slice(0);\n        a[0] += b;\n        return a;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        b = b.slice(0);\n        b[0] = a + b[0];\n        return b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n        var i = 0;\n        var lenA = a.length;\n        var lenB = b.length;\n        var retArr = [];\n\n        while (i < lenA || i < lenB) {\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n            retArr[i] = a[i] + b[i];\n          } else {\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n          }\n\n          i += 1;\n        }\n\n        return retArr;\n      }\n\n      return 0;\n    }\n\n    var add = sum;\n\n    function sub(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        if (tOfA === 'string') {\n          a = parseInt(a, 10);\n        }\n\n        if (tOfB === 'string') {\n          b = parseInt(b, 10);\n        }\n\n        return a - b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        a = a.slice(0);\n        a[0] -= b;\n        return a;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        b = b.slice(0);\n        b[0] = a - b[0];\n        return b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n        var i = 0;\n        var lenA = a.length;\n        var lenB = b.length;\n        var retArr = [];\n\n        while (i < lenA || i < lenB) {\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n            retArr[i] = a[i] - b[i];\n          } else {\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n          }\n\n          i += 1;\n        }\n\n        return retArr;\n      }\n\n      return 0;\n    }\n\n    function mul(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      var arr;\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        return a * b;\n      }\n\n      var i;\n      var len;\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        len = a.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a[i] * b;\n        }\n\n        return arr;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        len = b.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a * b[i];\n        }\n\n        return arr;\n      }\n\n      return 0;\n    }\n\n    function div(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      var arr;\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        return a / b;\n      }\n\n      var i;\n      var len;\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        len = a.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a[i] / b;\n        }\n\n        return arr;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        len = b.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a / b[i];\n        }\n\n        return arr;\n      }\n\n      return 0;\n    }\n\n    function mod(a, b) {\n      if (typeof a === 'string') {\n        a = parseInt(a, 10);\n      }\n\n      if (typeof b === 'string') {\n        b = parseInt(b, 10);\n      }\n\n      return a % b;\n    }\n\n    var $bm_sum = sum;\n    var $bm_sub = sub;\n    var $bm_mul = mul;\n    var $bm_div = div;\n    var $bm_mod = mod;\n\n    function clamp(num, min, max) {\n      if (min > max) {\n        var mm = max;\n        max = min;\n        min = mm;\n      }\n\n      return Math.min(Math.max(num, min), max);\n    }\n\n    function radiansToDegrees(val) {\n      return val / degToRads;\n    }\n\n    var radians_to_degrees = radiansToDegrees;\n\n    function degreesToRadians(val) {\n      return val * degToRads;\n    }\n\n    var degrees_to_radians = radiansToDegrees;\n    var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n    function length(arr1, arr2) {\n      if (typeof arr1 === 'number' || arr1 instanceof Number) {\n        arr2 = arr2 || 0;\n        return Math.abs(arr1 - arr2);\n      }\n\n      if (!arr2) {\n        arr2 = helperLengthArray;\n      }\n\n      var i;\n      var len = Math.min(arr1.length, arr2.length);\n      var addedLength = 0;\n\n      for (i = 0; i < len; i += 1) {\n        addedLength += Math.pow(arr2[i] - arr1[i], 2);\n      }\n\n      return Math.sqrt(addedLength);\n    }\n\n    function normalize(vec) {\n      return div(vec, length(vec));\n    }\n\n    function rgbToHsl(val) {\n      var r = val[0];\n      var g = val[1];\n      var b = val[2];\n      var max = Math.max(r, g, b);\n      var min = Math.min(r, g, b);\n      var h;\n      var s;\n      var l = (max + min) / 2;\n\n      if (max === min) {\n        h = 0; // achromatic\n\n        s = 0; // achromatic\n      } else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n        switch (max) {\n          case r:\n            h = (g - b) / d + (g < b ? 6 : 0);\n            break;\n\n          case g:\n            h = (b - r) / d + 2;\n            break;\n\n          case b:\n            h = (r - g) / d + 4;\n            break;\n\n          default:\n            break;\n        }\n\n        h /= 6;\n      }\n\n      return [h, s, l, val[3]];\n    }\n\n    function hue2rgb(p, q, t) {\n      if (t < 0) t += 1;\n      if (t > 1) t -= 1;\n      if (t < 1 / 6) return p + (q - p) * 6 * t;\n      if (t < 1 / 2) return q;\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n      return p;\n    }\n\n    function hslToRgb(val) {\n      var h = val[0];\n      var s = val[1];\n      var l = val[2];\n      var r;\n      var g;\n      var b;\n\n      if (s === 0) {\n        r = l; // achromatic\n\n        b = l; // achromatic\n\n        g = l; // achromatic\n      } else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1 / 3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1 / 3);\n      }\n\n      return [r, g, b, val[3]];\n    }\n\n    function linear(t, tMin, tMax, value1, value2) {\n      if (value1 === undefined || value2 === undefined) {\n        value1 = tMin;\n        value2 = tMax;\n        tMin = 0;\n        tMax = 1;\n      }\n\n      if (tMax < tMin) {\n        var _tMin = tMax;\n        tMax = tMin;\n        tMin = _tMin;\n      }\n\n      if (t <= tMin) {\n        return value1;\n      }\n\n      if (t >= tMax) {\n        return value2;\n      }\n\n      var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n      if (!value1.length) {\n        return value1 + (value2 - value1) * perc;\n      }\n\n      var i;\n      var len = value1.length;\n      var arr = createTypedArray('float32', len);\n\n      for (i = 0; i < len; i += 1) {\n        arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n      }\n\n      return arr;\n    }\n\n    function random(min, max) {\n      if (max === undefined) {\n        if (min === undefined) {\n          min = 0;\n          max = 1;\n        } else {\n          max = min;\n          min = undefined;\n        }\n      }\n\n      if (max.length) {\n        var i;\n        var len = max.length;\n\n        if (!min) {\n          min = createTypedArray('float32', len);\n        }\n\n        var arr = createTypedArray('float32', len);\n        var rnd = BMMath.random();\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = min[i] + rnd * (max[i] - min[i]);\n        }\n\n        return arr;\n      }\n\n      if (min === undefined) {\n        min = 0;\n      }\n\n      var rndm = BMMath.random();\n      return min + rndm * (max - min);\n    }\n\n    function createPath(points, inTangents, outTangents, closed) {\n      var i;\n      var len = points.length;\n      var path = shapePool.newElement();\n      path.setPathData(!!closed, len);\n      var arrPlaceholder = [0, 0];\n      var inVertexPoint;\n      var outVertexPoint;\n\n      for (i = 0; i < len; i += 1) {\n        inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n        outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n        path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n      }\n\n      return path;\n    }\n\n    function initiateExpression(elem, data, property) {\n      // Bail out if we don't want expressions\n      function noOp(_value) {\n        return _value;\n      }\n\n      if (!elem.globalData.renderConfig.runExpressions) {\n        return noOp;\n      }\n\n      var val = data.x;\n      var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n      var _needsRandom = val.indexOf('random') !== -1;\n\n      var elemType = elem.data.ty;\n      var transform;\n      var $bm_transform;\n      var content;\n      var effect;\n      var thisProperty = property;\n      thisProperty.valueAtTime = thisProperty.getValueAtTime;\n      Object.defineProperty(thisProperty, 'value', {\n        get: function get() {\n          return thisProperty.v;\n        }\n      });\n      elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n      elem.comp.displayStartTime = 0;\n      var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n      var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n      var width = elem.data.sw ? elem.data.sw : 0;\n      var height = elem.data.sh ? elem.data.sh : 0;\n      var name = elem.data.nm;\n      var loopIn;\n      var loop_in;\n      var loopOut;\n      var loop_out;\n      var smooth;\n      var toWorld;\n      var fromWorld;\n      var fromComp;\n      var toComp;\n      var fromCompToSurface;\n      var position;\n      var rotation;\n      var anchorPoint;\n      var scale;\n      var thisLayer;\n      var thisComp;\n      var mask;\n      var valueAtTime;\n      var velocityAtTime;\n      var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n      var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n      var numKeys = property.kf ? data.k.length : 0;\n      var active = !this.data || this.data.hd !== true;\n\n      var wiggle = function wiggle(freq, amp) {\n        var iWiggle;\n        var j;\n        var lenWiggle = this.pv.length ? this.pv.length : 1;\n        var addedAmps = createTypedArray('float32', lenWiggle);\n        freq = 5;\n        var iterations = Math.floor(time * freq);\n        iWiggle = 0;\n        j = 0;\n\n        while (iWiggle < iterations) {\n          // var rnd = BMMath.random();\n          for (j = 0; j < lenWiggle; j += 1) {\n            addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n          }\n\n          iWiggle += 1;\n        } // var rnd2 = BMMath.random();\n\n\n        var periods = time * freq;\n        var perc = periods - Math.floor(periods);\n        var arr = createTypedArray('float32', lenWiggle);\n\n        if (lenWiggle > 1) {\n          for (j = 0; j < lenWiggle; j += 1) {\n            arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n            // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n          }\n\n          return arr;\n        }\n\n        return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n      }.bind(this);\n\n      if (thisProperty.loopIn) {\n        loopIn = thisProperty.loopIn.bind(thisProperty);\n        loop_in = loopIn;\n      }\n\n      if (thisProperty.loopOut) {\n        loopOut = thisProperty.loopOut.bind(thisProperty);\n        loop_out = loopOut;\n      }\n\n      if (thisProperty.smooth) {\n        smooth = thisProperty.smooth.bind(thisProperty);\n      }\n\n      function loopInDuration(type, duration) {\n        return loopIn(type, duration, true);\n      }\n\n      function loopOutDuration(type, duration) {\n        return loopOut(type, duration, true);\n      }\n\n      if (this.getValueAtTime) {\n        valueAtTime = this.getValueAtTime.bind(this);\n      }\n\n      if (this.getVelocityAtTime) {\n        velocityAtTime = this.getVelocityAtTime.bind(this);\n      }\n\n      var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n      function lookAt(elem1, elem2) {\n        var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n        var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n        var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n        return [yaw, pitch, 0];\n      }\n\n      function easeOut(t, tMin, tMax, val1, val2) {\n        return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n      }\n\n      function easeIn(t, tMin, tMax, val1, val2) {\n        return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n      }\n\n      function ease(t, tMin, tMax, val1, val2) {\n        return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n      }\n\n      function applyEase(fn, t, tMin, tMax, val1, val2) {\n        if (val1 === undefined) {\n          val1 = tMin;\n          val2 = tMax;\n        } else {\n          t = (t - tMin) / (tMax - tMin);\n        }\n\n        if (t > 1) {\n          t = 1;\n        } else if (t < 0) {\n          t = 0;\n        }\n\n        var mult = fn(t);\n\n        if ($bm_isInstanceOfArray(val1)) {\n          var iKey;\n          var lenKey = val1.length;\n          var arr = createTypedArray('float32', lenKey);\n\n          for (iKey = 0; iKey < lenKey; iKey += 1) {\n            arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n          }\n\n          return arr;\n        }\n\n        return (val2 - val1) * mult + val1;\n      }\n\n      function nearestKey(time) {\n        var iKey;\n        var lenKey = data.k.length;\n        var index;\n        var keyTime;\n\n        if (!data.k.length || typeof data.k[0] === 'number') {\n          index = 0;\n          keyTime = 0;\n        } else {\n          index = -1;\n          time *= elem.comp.globalData.frameRate;\n\n          if (time < data.k[0].t) {\n            index = 1;\n            keyTime = data.k[0].t;\n          } else {\n            for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n              if (time === data.k[iKey].t) {\n                index = iKey + 1;\n                keyTime = data.k[iKey].t;\n                break;\n              } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n                if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n                  index = iKey + 2;\n                  keyTime = data.k[iKey + 1].t;\n                } else {\n                  index = iKey + 1;\n                  keyTime = data.k[iKey].t;\n                }\n\n                break;\n              }\n            }\n\n            if (index === -1) {\n              index = iKey + 1;\n              keyTime = data.k[iKey].t;\n            }\n          }\n        }\n\n        var obKey = {};\n        obKey.index = index;\n        obKey.time = keyTime / elem.comp.globalData.frameRate;\n        return obKey;\n      }\n\n      function key(ind) {\n        var obKey;\n        var iKey;\n        var lenKey;\n\n        if (!data.k.length || typeof data.k[0] === 'number') {\n          throw new Error('The property has no keyframe at index ' + ind);\n        }\n\n        ind -= 1;\n        obKey = {\n          time: data.k[ind].t / elem.comp.globalData.frameRate,\n          value: []\n        };\n        var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n        lenKey = arr.length;\n\n        for (iKey = 0; iKey < lenKey; iKey += 1) {\n          obKey[iKey] = arr[iKey];\n          obKey.value[iKey] = arr[iKey];\n        }\n\n        return obKey;\n      }\n\n      function framesToTime(fr, fps) {\n        if (!fps) {\n          fps = elem.comp.globalData.frameRate;\n        }\n\n        return fr / fps;\n      }\n\n      function timeToFrames(t, fps) {\n        if (!t && t !== 0) {\n          t = time;\n        }\n\n        if (!fps) {\n          fps = elem.comp.globalData.frameRate;\n        }\n\n        return t * fps;\n      }\n\n      function seedRandom(seed) {\n        BMMath.seedrandom(randSeed + seed);\n      }\n\n      function sourceRectAtTime() {\n        return elem.sourceRectAtTime();\n      }\n\n      function substring(init, end) {\n        if (typeof value === 'string') {\n          if (end === undefined) {\n            return value.substring(init);\n          }\n\n          return value.substring(init, end);\n        }\n\n        return '';\n      }\n\n      function substr(init, end) {\n        if (typeof value === 'string') {\n          if (end === undefined) {\n            return value.substr(init);\n          }\n\n          return value.substr(init, end);\n        }\n\n        return '';\n      }\n\n      function posterizeTime(framesPerSecond) {\n        time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n        value = valueAtTime(time);\n      }\n\n      var time;\n      var velocity;\n      var value;\n      var text;\n      var textIndex;\n      var textTotal;\n      var selectorValue;\n      var index = elem.data.ind;\n      var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n      var parent;\n      var randSeed = Math.floor(Math.random() * 1000000);\n      var globalData = elem.globalData;\n\n      function executeExpression(_value) {\n        // globalData.pushExpression();\n        value = _value;\n\n        if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n          return value;\n        }\n\n        if (this.propType === 'textSelector') {\n          textIndex = this.textIndex;\n          textTotal = this.textTotal;\n          selectorValue = this.selectorValue;\n        }\n\n        if (!thisLayer) {\n          text = elem.layerInterface.text;\n          thisLayer = elem.layerInterface;\n          thisComp = elem.comp.compInterface;\n          toWorld = thisLayer.toWorld.bind(thisLayer);\n          fromWorld = thisLayer.fromWorld.bind(thisLayer);\n          fromComp = thisLayer.fromComp.bind(thisLayer);\n          toComp = thisLayer.toComp.bind(thisLayer);\n          mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n          fromCompToSurface = fromComp;\n        }\n\n        if (!transform) {\n          transform = elem.layerInterface('ADBE Transform Group');\n          $bm_transform = transform;\n\n          if (transform) {\n            anchorPoint = transform.anchorPoint;\n            /* position = transform.position;\r\n                      rotation = transform.rotation;\r\n                      scale = transform.scale; */\n          }\n        }\n\n        if (elemType === 4 && !content) {\n          content = thisLayer('ADBE Root Vectors Group');\n        }\n\n        if (!effect) {\n          effect = thisLayer(4);\n        }\n\n        hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n        if (hasParent && !parent) {\n          parent = elem.hierarchy[0].layerInterface;\n        }\n\n        time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n        if (_needsRandom) {\n          seedRandom(randSeed + time);\n        }\n\n        if (needsVelocity) {\n          velocity = velocityAtTime(time);\n        }\n\n        expression_function();\n        this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n        // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n        scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n        return scoped_bm_rt;\n      } // Bundlers will see these as dead code and unless we reference them\n\n\n      executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n      return executeExpression;\n    }\n\n    ob.initiateExpression = initiateExpression;\n    ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n    ob.resetFrame = resetFrame;\n    return ob;\n  }();\n\n  var Expressions = function () {\n    var ob = {};\n    ob.initExpressions = initExpressions;\n    ob.resetFrame = ExpressionManager.resetFrame;\n\n    function initExpressions(animation) {\n      var stackCount = 0;\n      var registers = [];\n\n      function pushExpression() {\n        stackCount += 1;\n      }\n\n      function popExpression() {\n        stackCount -= 1;\n\n        if (stackCount === 0) {\n          releaseInstances();\n        }\n      }\n\n      function registerExpressionProperty(expression) {\n        if (registers.indexOf(expression) === -1) {\n          registers.push(expression);\n        }\n      }\n\n      function releaseInstances() {\n        var i;\n        var len = registers.length;\n\n        for (i = 0; i < len; i += 1) {\n          registers[i].release();\n        }\n\n        registers.length = 0;\n      }\n\n      animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n      animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n      animation.renderer.globalData.pushExpression = pushExpression;\n      animation.renderer.globalData.popExpression = popExpression;\n      animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n    }\n\n    return ob;\n  }();\n\n  var MaskManagerInterface = function () {\n    function MaskInterface(mask, data) {\n      this._mask = mask;\n      this._data = data;\n    }\n\n    Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n      get: function get() {\n        if (this._mask.prop.k) {\n          this._mask.prop.getValue();\n        }\n\n        return this._mask.prop;\n      }\n    });\n    Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n      get: function get() {\n        if (this._mask.op.k) {\n          this._mask.op.getValue();\n        }\n\n        return this._mask.op.v * 100;\n      }\n    });\n\n    var MaskManager = function MaskManager(maskManager) {\n      var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n      var i;\n      var len = maskManager.viewData.length;\n\n      for (i = 0; i < len; i += 1) {\n        _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n      }\n\n      var maskFunction = function maskFunction(name) {\n        i = 0;\n\n        while (i < len) {\n          if (maskManager.masksProperties[i].nm === name) {\n            return _masksInterfaces[i];\n          }\n\n          i += 1;\n        }\n\n        return null;\n      };\n\n      return maskFunction;\n    };\n\n    return MaskManager;\n  }();\n\n  var ExpressionPropertyInterface = function () {\n    var defaultUnidimensionalValue = {\n      pv: 0,\n      v: 0,\n      mult: 1\n    };\n    var defaultMultidimensionalValue = {\n      pv: [0, 0, 0],\n      v: [0, 0, 0],\n      mult: 1\n    };\n\n    function completeProperty(expressionValue, property, type) {\n      Object.defineProperty(expressionValue, 'velocity', {\n        get: function get() {\n          return property.getVelocityAtTime(property.comp.currentFrame);\n        }\n      });\n      expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n      expressionValue.key = function (pos) {\n        if (!expressionValue.numKeys) {\n          return 0;\n        }\n\n        var value = '';\n\n        if ('s' in property.keyframes[pos - 1]) {\n          value = property.keyframes[pos - 1].s;\n        } else if ('e' in property.keyframes[pos - 2]) {\n          value = property.keyframes[pos - 2].e;\n        } else {\n          value = property.keyframes[pos - 2].s;\n        }\n\n        var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n        valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n        valueProp.value = type === 'unidimensional' ? value[0] : value;\n        return valueProp;\n      };\n\n      expressionValue.valueAtTime = property.getValueAtTime;\n      expressionValue.speedAtTime = property.getSpeedAtTime;\n      expressionValue.velocityAtTime = property.getVelocityAtTime;\n      expressionValue.propertyGroup = property.propertyGroup;\n    }\n\n    function UnidimensionalPropertyInterface(property) {\n      if (!property || !('pv' in property)) {\n        property = defaultUnidimensionalValue;\n      }\n\n      var mult = 1 / property.mult;\n      var val = property.pv * mult;\n      var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n      expressionValue.value = val;\n      completeProperty(expressionValue, property, 'unidimensional');\n      return function () {\n        if (property.k) {\n          property.getValue();\n        }\n\n        val = property.v * mult;\n\n        if (expressionValue.value !== val) {\n          expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n          expressionValue.value = val;\n          completeProperty(expressionValue, property, 'unidimensional');\n        }\n\n        return expressionValue;\n      };\n    }\n\n    function MultidimensionalPropertyInterface(property) {\n      if (!property || !('pv' in property)) {\n        property = defaultMultidimensionalValue;\n      }\n\n      var mult = 1 / property.mult;\n      var len = property.data && property.data.l || property.pv.length;\n      var expressionValue = createTypedArray('float32', len);\n      var arrValue = createTypedArray('float32', len);\n      expressionValue.value = arrValue;\n      completeProperty(expressionValue, property, 'multidimensional');\n      return function () {\n        if (property.k) {\n          property.getValue();\n        }\n\n        for (var i = 0; i < len; i += 1) {\n          arrValue[i] = property.v[i] * mult;\n          expressionValue[i] = arrValue[i];\n        }\n\n        return expressionValue;\n      };\n    } // TODO: try to avoid using this getter\n\n\n    function defaultGetter() {\n      return defaultUnidimensionalValue;\n    }\n\n    return function (property) {\n      if (!property) {\n        return defaultGetter;\n      }\n\n      if (property.propType === 'unidimensional') {\n        return UnidimensionalPropertyInterface(property);\n      }\n\n      return MultidimensionalPropertyInterface(property);\n    };\n  }();\n\n  var TransformExpressionInterface = function () {\n    return function (transform) {\n      function _thisFunction(name) {\n        switch (name) {\n          case 'scale':\n          case 'Scale':\n          case 'ADBE Scale':\n          case 6:\n            return _thisFunction.scale;\n\n          case 'rotation':\n          case 'Rotation':\n          case 'ADBE Rotation':\n          case 'ADBE Rotate Z':\n          case 10:\n            return _thisFunction.rotation;\n\n          case 'ADBE Rotate X':\n            return _thisFunction.xRotation;\n\n          case 'ADBE Rotate Y':\n            return _thisFunction.yRotation;\n\n          case 'position':\n          case 'Position':\n          case 'ADBE Position':\n          case 2:\n            return _thisFunction.position;\n\n          case 'ADBE Position_0':\n            return _thisFunction.xPosition;\n\n          case 'ADBE Position_1':\n            return _thisFunction.yPosition;\n\n          case 'ADBE Position_2':\n            return _thisFunction.zPosition;\n\n          case 'anchorPoint':\n          case 'AnchorPoint':\n          case 'Anchor Point':\n          case 'ADBE AnchorPoint':\n          case 1:\n            return _thisFunction.anchorPoint;\n\n          case 'opacity':\n          case 'Opacity':\n          case 11:\n            return _thisFunction.opacity;\n\n          default:\n            return null;\n        }\n      }\n\n      Object.defineProperty(_thisFunction, 'rotation', {\n        get: ExpressionPropertyInterface(transform.r || transform.rz)\n      });\n      Object.defineProperty(_thisFunction, 'zRotation', {\n        get: ExpressionPropertyInterface(transform.rz || transform.r)\n      });\n      Object.defineProperty(_thisFunction, 'xRotation', {\n        get: ExpressionPropertyInterface(transform.rx)\n      });\n      Object.defineProperty(_thisFunction, 'yRotation', {\n        get: ExpressionPropertyInterface(transform.ry)\n      });\n      Object.defineProperty(_thisFunction, 'scale', {\n        get: ExpressionPropertyInterface(transform.s)\n      });\n\n      var _px;\n\n      var _py;\n\n      var _pz;\n\n      var _transformFactory;\n\n      if (transform.p) {\n        _transformFactory = ExpressionPropertyInterface(transform.p);\n      } else {\n        _px = ExpressionPropertyInterface(transform.px);\n        _py = ExpressionPropertyInterface(transform.py);\n\n        if (transform.pz) {\n          _pz = ExpressionPropertyInterface(transform.pz);\n        }\n      }\n\n      Object.defineProperty(_thisFunction, 'position', {\n        get: function get() {\n          if (transform.p) {\n            return _transformFactory();\n          }\n\n          return [_px(), _py(), _pz ? _pz() : 0];\n        }\n      });\n      Object.defineProperty(_thisFunction, 'xPosition', {\n        get: ExpressionPropertyInterface(transform.px)\n      });\n      Object.defineProperty(_thisFunction, 'yPosition', {\n        get: ExpressionPropertyInterface(transform.py)\n      });\n      Object.defineProperty(_thisFunction, 'zPosition', {\n        get: ExpressionPropertyInterface(transform.pz)\n      });\n      Object.defineProperty(_thisFunction, 'anchorPoint', {\n        get: ExpressionPropertyInterface(transform.a)\n      });\n      Object.defineProperty(_thisFunction, 'opacity', {\n        get: ExpressionPropertyInterface(transform.o)\n      });\n      Object.defineProperty(_thisFunction, 'skew', {\n        get: ExpressionPropertyInterface(transform.sk)\n      });\n      Object.defineProperty(_thisFunction, 'skewAxis', {\n        get: ExpressionPropertyInterface(transform.sa)\n      });\n      Object.defineProperty(_thisFunction, 'orientation', {\n        get: ExpressionPropertyInterface(transform.or)\n      });\n      return _thisFunction;\n    };\n  }();\n\n  var LayerExpressionInterface = function () {\n    function getMatrix(time) {\n      var toWorldMat = new Matrix();\n\n      if (time !== undefined) {\n        var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n        propMatrix.clone(toWorldMat);\n      } else {\n        var transformMat = this._elem.finalTransform.mProp;\n        transformMat.applyToMatrix(toWorldMat);\n      }\n\n      return toWorldMat;\n    }\n\n    function toWorldVec(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      toWorldMat.props[12] = 0;\n      toWorldMat.props[13] = 0;\n      toWorldMat.props[14] = 0;\n      return this.applyPoint(toWorldMat, arr);\n    }\n\n    function toWorld(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      return this.applyPoint(toWorldMat, arr);\n    }\n\n    function fromWorldVec(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      toWorldMat.props[12] = 0;\n      toWorldMat.props[13] = 0;\n      toWorldMat.props[14] = 0;\n      return this.invertPoint(toWorldMat, arr);\n    }\n\n    function fromWorld(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      return this.invertPoint(toWorldMat, arr);\n    }\n\n    function applyPoint(matrix, arr) {\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n        }\n      }\n\n      return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n    }\n\n    function invertPoint(matrix, arr) {\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n        }\n      }\n\n      return matrix.inversePoint(arr);\n    }\n\n    function fromComp(arr) {\n      var toWorldMat = new Matrix();\n      toWorldMat.reset();\n\n      this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n        }\n\n        return toWorldMat.inversePoint(arr);\n      }\n\n      return toWorldMat.inversePoint(arr);\n    }\n\n    function sampleImage() {\n      return [1, 1, 1, 1];\n    }\n\n    return function (elem) {\n      var transformInterface;\n\n      function _registerMaskInterface(maskManager) {\n        _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n      }\n\n      function _registerEffectsInterface(effects) {\n        _thisLayerFunction.effect = effects;\n      }\n\n      function _thisLayerFunction(name) {\n        switch (name) {\n          case 'ADBE Root Vectors Group':\n          case 'Contents':\n          case 2:\n            return _thisLayerFunction.shapeInterface;\n\n          case 1:\n          case 6:\n          case 'Transform':\n          case 'transform':\n          case 'ADBE Transform Group':\n            return transformInterface;\n\n          case 4:\n          case 'ADBE Effect Parade':\n          case 'effects':\n          case 'Effects':\n            return _thisLayerFunction.effect;\n\n          case 'ADBE Text Properties':\n            return _thisLayerFunction.textInterface;\n\n          default:\n            return null;\n        }\n      }\n\n      _thisLayerFunction.getMatrix = getMatrix;\n      _thisLayerFunction.invertPoint = invertPoint;\n      _thisLayerFunction.applyPoint = applyPoint;\n      _thisLayerFunction.toWorld = toWorld;\n      _thisLayerFunction.toWorldVec = toWorldVec;\n      _thisLayerFunction.fromWorld = fromWorld;\n      _thisLayerFunction.fromWorldVec = fromWorldVec;\n      _thisLayerFunction.toComp = toWorld;\n      _thisLayerFunction.fromComp = fromComp;\n      _thisLayerFunction.sampleImage = sampleImage;\n      _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n      _thisLayerFunction._elem = elem;\n      transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n      var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n      Object.defineProperties(_thisLayerFunction, {\n        hasParent: {\n          get: function get() {\n            return elem.hierarchy.length;\n          }\n        },\n        parent: {\n          get: function get() {\n            return elem.hierarchy[0].layerInterface;\n          }\n        },\n        rotation: getDescriptor(transformInterface, 'rotation'),\n        scale: getDescriptor(transformInterface, 'scale'),\n        position: getDescriptor(transformInterface, 'position'),\n        opacity: getDescriptor(transformInterface, 'opacity'),\n        anchorPoint: anchorPointDescriptor,\n        anchor_point: anchorPointDescriptor,\n        transform: {\n          get: function get() {\n            return transformInterface;\n          }\n        },\n        active: {\n          get: function get() {\n            return elem.isInRange;\n          }\n        }\n      });\n      _thisLayerFunction.startTime = elem.data.st;\n      _thisLayerFunction.index = elem.data.ind;\n      _thisLayerFunction.source = elem.data.refId;\n      _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n      _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n      _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n      _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n      _thisLayerFunction._name = elem.data.nm;\n      _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n      _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n      return _thisLayerFunction;\n    };\n  }();\n\n  var propertyGroupFactory = function () {\n    return function (interfaceFunction, parentPropertyGroup) {\n      return function (val) {\n        val = val === undefined ? 1 : val;\n\n        if (val <= 0) {\n          return interfaceFunction;\n        }\n\n        return parentPropertyGroup(val - 1);\n      };\n    };\n  }();\n\n  var PropertyInterface = function () {\n    return function (propertyName, propertyGroup) {\n      var interfaceFunction = {\n        _name: propertyName\n      };\n\n      function _propertyGroup(val) {\n        val = val === undefined ? 1 : val;\n\n        if (val <= 0) {\n          return interfaceFunction;\n        }\n\n        return propertyGroup(val - 1);\n      }\n\n      return _propertyGroup;\n    };\n  }();\n\n  var EffectsExpressionInterface = function () {\n    var ob = {\n      createEffectsInterface: createEffectsInterface\n    };\n\n    function createEffectsInterface(elem, propertyGroup) {\n      if (elem.effectsManager) {\n        var effectElements = [];\n        var effectsData = elem.data.ef;\n        var i;\n        var len = elem.effectsManager.effectElements.length;\n\n        for (i = 0; i < len; i += 1) {\n          effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n        }\n\n        var effects = elem.data.ef || [];\n\n        var groupInterface = function groupInterface(name) {\n          i = 0;\n          len = effects.length;\n\n          while (i < len) {\n            if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n              return effectElements[i];\n            }\n\n            i += 1;\n          }\n\n          return null;\n        };\n\n        Object.defineProperty(groupInterface, 'numProperties', {\n          get: function get() {\n            return effects.length;\n          }\n        });\n        return groupInterface;\n      }\n\n      return null;\n    }\n\n    function createGroupInterface(data, elements, propertyGroup, elem) {\n      function groupInterface(name) {\n        var effects = data.ef;\n        var i = 0;\n        var len = effects.length;\n\n        while (i < len) {\n          if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n            if (effects[i].ty === 5) {\n              return effectElements[i];\n            }\n\n            return effectElements[i]();\n          }\n\n          i += 1;\n        }\n\n        throw new Error();\n      }\n\n      var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n      var effectElements = [];\n      var i;\n      var len = data.ef.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (data.ef[i].ty === 5) {\n          effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n        } else {\n          effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n        }\n      }\n\n      if (data.mn === 'ADBE Color Control') {\n        Object.defineProperty(groupInterface, 'color', {\n          get: function get() {\n            return effectElements[0]();\n          }\n        });\n      }\n\n      Object.defineProperties(groupInterface, {\n        numProperties: {\n          get: function get() {\n            return data.np;\n          }\n        },\n        _name: {\n          value: data.nm\n        },\n        propertyGroup: {\n          value: _propertyGroup\n        }\n      });\n      groupInterface.enabled = data.en !== 0;\n      groupInterface.active = groupInterface.enabled;\n      return groupInterface;\n    }\n\n    function createValueInterface(element, type, elem, propertyGroup) {\n      var expressionProperty = ExpressionPropertyInterface(element.p);\n\n      function interfaceFunction() {\n        if (type === 10) {\n          return elem.comp.compInterface(element.p.v);\n        }\n\n        return expressionProperty();\n      }\n\n      if (element.p.setGroupProperty) {\n        element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n      }\n\n      return interfaceFunction;\n    }\n\n    return ob;\n  }();\n\n  var ShapePathInterface = function () {\n    return function pathInterfaceFactory(shape, view, propertyGroup) {\n      var prop = view.sh;\n\n      function interfaceFunction(val) {\n        if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n          return interfaceFunction.path;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        path: {\n          get: function get() {\n            if (prop.k) {\n              prop.getValue();\n            }\n\n            return prop;\n          }\n        },\n        shape: {\n          get: function get() {\n            if (prop.k) {\n              prop.getValue();\n            }\n\n            return prop;\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        ix: {\n          value: shape.ix\n        },\n        propertyIndex: {\n          value: shape.ix\n        },\n        mn: {\n          value: shape.mn\n        },\n        propertyGroup: {\n          value: propertyGroup\n        }\n      });\n      return interfaceFunction;\n    };\n  }();\n\n  var ShapeExpressionInterface = function () {\n    function iterateElements(shapes, view, propertyGroup) {\n      var arr = [];\n      var i;\n      var len = shapes ? shapes.length : 0;\n\n      for (i = 0; i < len; i += 1) {\n        if (shapes[i].ty === 'gr') {\n          arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'fl') {\n          arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'st') {\n          arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'tm') {\n          arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n        } else if (shapes[i].ty === 'el') {\n          arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'sr') {\n          arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'sh') {\n          arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rc') {\n          arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rd') {\n          arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rp') {\n          arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'gf') {\n          arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else {\n          arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n        }\n      }\n\n      return arr;\n    }\n\n    function contentsInterfaceFactory(shape, view, propertyGroup) {\n      var interfaces;\n\n      var interfaceFunction = function _interfaceFunction(value) {\n        var i = 0;\n        var len = interfaces.length;\n\n        while (i < len) {\n          if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n            return interfaces[i];\n          }\n\n          i += 1;\n        }\n\n        if (typeof value === 'number') {\n          return interfaces[value - 1];\n        }\n\n        return null;\n      };\n\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n      interfaceFunction.numProperties = interfaces.length;\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n      interfaceFunction.transform = transformInterface;\n      interfaceFunction.propertyIndex = shape.cix;\n      interfaceFunction._name = shape.nm;\n      return interfaceFunction;\n    }\n\n    function groupInterfaceFactory(shape, view, propertyGroup) {\n      var interfaceFunction = function _interfaceFunction(value) {\n        switch (value) {\n          case 'ADBE Vectors Group':\n          case 'Contents':\n          case 2:\n            return interfaceFunction.content;\n          // Not necessary for now. Keeping them here in case a new case appears\n          // case 'ADBE Vector Transform Group':\n          // case 3:\n\n          default:\n            return interfaceFunction.transform;\n        }\n      };\n\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n      interfaceFunction.content = content;\n      interfaceFunction.transform = transformInterface;\n      Object.defineProperty(interfaceFunction, '_name', {\n        get: function get() {\n          return shape.nm;\n        }\n      }); // interfaceFunction.content = interfaceFunction;\n\n      interfaceFunction.numProperties = shape.np;\n      interfaceFunction.propertyIndex = shape.ix;\n      interfaceFunction.nm = shape.nm;\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function fillInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === 'Color' || val === 'color') {\n          return interfaceFunction.color;\n        }\n\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        return null;\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        color: {\n          get: ExpressionPropertyInterface(view.c)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n      return interfaceFunction;\n    }\n\n    function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === 'Start Point' || val === 'start point') {\n          return interfaceFunction.startPoint;\n        }\n\n        if (val === 'End Point' || val === 'end point') {\n          return interfaceFunction.endPoint;\n        }\n\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        return null;\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        startPoint: {\n          get: ExpressionPropertyInterface(view.s)\n        },\n        endPoint: {\n          get: ExpressionPropertyInterface(view.e)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        type: {\n          get: function get() {\n            return 'a';\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n      view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n      return interfaceFunction;\n    }\n\n    function defaultInterfaceFactory() {\n      function interfaceFunction() {\n        return null;\n      }\n\n      return interfaceFunction;\n    }\n\n    function strokeInterfaceFactory(shape, view, propertyGroup) {\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n      function addPropertyToDashOb(i) {\n        Object.defineProperty(dashOb, shape.d[i].nm, {\n          get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n        });\n      }\n\n      var i;\n      var len = shape.d ? shape.d.length : 0;\n      var dashOb = {};\n\n      for (i = 0; i < len; i += 1) {\n        addPropertyToDashOb(i);\n        view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n      }\n\n      function interfaceFunction(val) {\n        if (val === 'Color' || val === 'color') {\n          return interfaceFunction.color;\n        }\n\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        if (val === 'Stroke Width' || val === 'stroke width') {\n          return interfaceFunction.strokeWidth;\n        }\n\n        return null;\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        color: {\n          get: ExpressionPropertyInterface(view.c)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        strokeWidth: {\n          get: ExpressionPropertyInterface(view.w)\n        },\n        dash: {\n          get: function get() {\n            return dashOb;\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n      return interfaceFunction;\n    }\n\n    function trimInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === shape.e.ix || val === 'End' || val === 'end') {\n          return interfaceFunction.end;\n        }\n\n        if (val === shape.s.ix) {\n          return interfaceFunction.start;\n        }\n\n        if (val === shape.o.ix) {\n          return interfaceFunction.offset;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      interfaceFunction.propertyIndex = shape.ix;\n      view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n      view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n      interfaceFunction.propertyIndex = shape.ix;\n      interfaceFunction.propertyGroup = propertyGroup;\n      Object.defineProperties(interfaceFunction, {\n        start: {\n          get: ExpressionPropertyInterface(view.s)\n        },\n        end: {\n          get: ExpressionPropertyInterface(view.e)\n        },\n        offset: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function transformInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.a.ix === value || value === 'Anchor Point') {\n          return interfaceFunction.anchorPoint;\n        }\n\n        if (shape.o.ix === value || value === 'Opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        if (shape.p.ix === value || value === 'Position') {\n          return interfaceFunction.position;\n        }\n\n        if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n          return interfaceFunction.rotation;\n        }\n\n        if (shape.s.ix === value || value === 'Scale') {\n          return interfaceFunction.scale;\n        }\n\n        if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n          return interfaceFunction.skew;\n        }\n\n        if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n          return interfaceFunction.skewAxis;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n      view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n      view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n      if (view.transform.mProps.sk) {\n        view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n        view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n      }\n\n      view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        opacity: {\n          get: ExpressionPropertyInterface(view.transform.mProps.o)\n        },\n        position: {\n          get: ExpressionPropertyInterface(view.transform.mProps.p)\n        },\n        anchorPoint: {\n          get: ExpressionPropertyInterface(view.transform.mProps.a)\n        },\n        scale: {\n          get: ExpressionPropertyInterface(view.transform.mProps.s)\n        },\n        rotation: {\n          get: ExpressionPropertyInterface(view.transform.mProps.r)\n        },\n        skew: {\n          get: ExpressionPropertyInterface(view.transform.mProps.sk)\n        },\n        skewAxis: {\n          get: ExpressionPropertyInterface(view.transform.mProps.sa)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.ty = 'tr';\n      interfaceFunction.mn = shape.mn;\n      interfaceFunction.propertyGroup = propertyGroup;\n      return interfaceFunction;\n    }\n\n    function ellipseInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n\n        if (shape.s.ix === value) {\n          return interfaceFunction.size;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      interfaceFunction.propertyIndex = shape.ix;\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        size: {\n          get: ExpressionPropertyInterface(prop.s)\n        },\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function starInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n\n        if (shape.r.ix === value) {\n          return interfaceFunction.rotation;\n        }\n\n        if (shape.pt.ix === value) {\n          return interfaceFunction.points;\n        }\n\n        if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n          return interfaceFunction.outerRadius;\n        }\n\n        if (shape.os.ix === value) {\n          return interfaceFunction.outerRoundness;\n        }\n\n        if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n          return interfaceFunction.innerRadius;\n        }\n\n        if (shape.is && shape.is.ix === value) {\n          return interfaceFunction.innerRoundness;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n      prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n      prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n      if (shape.ir) {\n        prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n        prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        rotation: {\n          get: ExpressionPropertyInterface(prop.r)\n        },\n        points: {\n          get: ExpressionPropertyInterface(prop.pt)\n        },\n        outerRadius: {\n          get: ExpressionPropertyInterface(prop.or)\n        },\n        outerRoundness: {\n          get: ExpressionPropertyInterface(prop.os)\n        },\n        innerRadius: {\n          get: ExpressionPropertyInterface(prop.ir)\n        },\n        innerRoundness: {\n          get: ExpressionPropertyInterface(prop.is)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function rectInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n\n        if (shape.r.ix === value) {\n          return interfaceFunction.roundness;\n        }\n\n        if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n          return interfaceFunction.size;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        roundness: {\n          get: ExpressionPropertyInterface(prop.r)\n        },\n        size: {\n          get: ExpressionPropertyInterface(prop.s)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function roundedInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.r.ix === value || value === 'Round Corners 1') {\n          return interfaceFunction.radius;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        radius: {\n          get: ExpressionPropertyInterface(prop.rd)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function repeaterInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.c.ix === value || value === 'Copies') {\n          return interfaceFunction.copies;\n        }\n\n        if (shape.o.ix === value || value === 'Offset') {\n          return interfaceFunction.offset;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n      prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        copies: {\n          get: ExpressionPropertyInterface(prop.c)\n        },\n        offset: {\n          get: ExpressionPropertyInterface(prop.o)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    return function (shapes, view, propertyGroup) {\n      var interfaces;\n\n      function _interfaceFunction(value) {\n        if (typeof value === 'number') {\n          value = value === undefined ? 1 : value;\n\n          if (value === 0) {\n            return propertyGroup;\n          }\n\n          return interfaces[value - 1];\n        }\n\n        var i = 0;\n        var len = interfaces.length;\n\n        while (i < len) {\n          if (interfaces[i]._name === value) {\n            return interfaces[i];\n          }\n\n          i += 1;\n        }\n\n        return null;\n      }\n\n      function parentGroupWrapper() {\n        return propertyGroup;\n      }\n\n      _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n      interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n      _interfaceFunction.numProperties = interfaces.length;\n      _interfaceFunction._name = 'Contents';\n      return _interfaceFunction;\n    };\n  }();\n\n  var TextExpressionInterface = function () {\n    return function (elem) {\n      var _sourceText;\n\n      function _thisLayerFunction(name) {\n        switch (name) {\n          case 'ADBE Text Document':\n            return _thisLayerFunction.sourceText;\n\n          default:\n            return null;\n        }\n      }\n\n      Object.defineProperty(_thisLayerFunction, 'sourceText', {\n        get: function get() {\n          elem.textProperty.getValue();\n          var stringValue = elem.textProperty.currentData.t;\n\n          if (!_sourceText || stringValue !== _sourceText.value) {\n            _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n            // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n            _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n            Object.defineProperty(_sourceText, 'style', {\n              get: function get() {\n                return {\n                  fillColor: elem.textProperty.currentData.fc\n                };\n              }\n            });\n          }\n\n          return _sourceText;\n        }\n      });\n      return _thisLayerFunction;\n    };\n  }();\n\n  function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n  var FootageInterface = function () {\n    var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n      var currentPropertyName = '';\n      var currentProperty = elem.getFootageData();\n\n      function init() {\n        currentPropertyName = '';\n        currentProperty = elem.getFootageData();\n        return searchProperty;\n      }\n\n      function searchProperty(value) {\n        if (currentProperty[value]) {\n          currentPropertyName = value;\n          currentProperty = currentProperty[value];\n\n          if (_typeof(currentProperty) === 'object') {\n            return searchProperty;\n          }\n\n          return currentProperty;\n        }\n\n        var propertyNameIndex = value.indexOf(currentPropertyName);\n\n        if (propertyNameIndex !== -1) {\n          var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n          currentProperty = currentProperty[index];\n\n          if (_typeof(currentProperty) === 'object') {\n            return searchProperty;\n          }\n\n          return currentProperty;\n        }\n\n        return '';\n      }\n\n      return init;\n    };\n\n    var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n      function interfaceFunction(value) {\n        if (value === 'Outline') {\n          return interfaceFunction.outlineInterface();\n        }\n\n        return null;\n      }\n\n      interfaceFunction._name = 'Outline';\n      interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n      return interfaceFunction;\n    };\n\n    return function (elem) {\n      function _interfaceFunction(value) {\n        if (value === 'Data') {\n          return _interfaceFunction.dataInterface;\n        }\n\n        return null;\n      }\n\n      _interfaceFunction._name = 'Data';\n      _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n      return _interfaceFunction;\n    };\n  }();\n\n  var interfaces = {\n    layer: LayerExpressionInterface,\n    effects: EffectsExpressionInterface,\n    comp: CompExpressionInterface,\n    shape: ShapeExpressionInterface,\n    text: TextExpressionInterface,\n    footage: FootageInterface\n  };\n\n  function getInterface(type) {\n    return interfaces[type] || null;\n  }\n\n  var expressionHelpers = function () {\n    function searchExpressions(elem, data, prop) {\n      if (data.x) {\n        prop.k = true;\n        prop.x = true;\n        prop.initiateExpression = ExpressionManager.initiateExpression;\n        prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n      }\n    }\n\n    function getValueAtTime(frameNum) {\n      frameNum *= this.elem.globalData.frameRate;\n      frameNum -= this.offsetTime;\n\n      if (frameNum !== this._cachingAtTime.lastFrame) {\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n        this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n        this._cachingAtTime.lastFrame = frameNum;\n      }\n\n      return this._cachingAtTime.value;\n    }\n\n    function getSpeedAtTime(frameNum) {\n      var delta = -0.01;\n      var v1 = this.getValueAtTime(frameNum);\n      var v2 = this.getValueAtTime(frameNum + delta);\n      var speed = 0;\n\n      if (v1.length) {\n        var i;\n\n        for (i = 0; i < v1.length; i += 1) {\n          speed += Math.pow(v2[i] - v1[i], 2);\n        }\n\n        speed = Math.sqrt(speed) * 100;\n      } else {\n        speed = 0;\n      }\n\n      return speed;\n    }\n\n    function getVelocityAtTime(frameNum) {\n      if (this.vel !== undefined) {\n        return this.vel;\n      }\n\n      var delta = -0.001; // frameNum += this.elem.data.st;\n\n      var v1 = this.getValueAtTime(frameNum);\n      var v2 = this.getValueAtTime(frameNum + delta);\n      var velocity;\n\n      if (v1.length) {\n        velocity = createTypedArray('float32', v1.length);\n        var i;\n\n        for (i = 0; i < v1.length; i += 1) {\n          // removing frameRate\n          // if needed, don't add it here\n          // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n          velocity[i] = (v2[i] - v1[i]) / delta;\n        }\n      } else {\n        velocity = (v2 - v1) / delta;\n      }\n\n      return velocity;\n    }\n\n    function getStaticValueAtTime() {\n      return this.pv;\n    }\n\n    function setGroupProperty(propertyGroup) {\n      this.propertyGroup = propertyGroup;\n    }\n\n    return {\n      searchExpressions: searchExpressions,\n      getSpeedAtTime: getSpeedAtTime,\n      getVelocityAtTime: getVelocityAtTime,\n      getValueAtTime: getValueAtTime,\n      getStaticValueAtTime: getStaticValueAtTime,\n      setGroupProperty: setGroupProperty\n    };\n  }();\n\n  function addPropertyDecorator() {\n    function loopOut(type, duration, durationFlag) {\n      if (!this.k || !this.keyframes) {\n        return this.pv;\n      }\n\n      type = type ? type.toLowerCase() : '';\n      var currentFrame = this.comp.renderedFrame;\n      var keyframes = this.keyframes;\n      var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n      if (currentFrame <= lastKeyFrame) {\n        return this.pv;\n      }\n\n      var cycleDuration;\n      var firstKeyFrame;\n\n      if (!durationFlag) {\n        if (!duration || duration > keyframes.length - 1) {\n          duration = keyframes.length - 1;\n        }\n\n        firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n        cycleDuration = lastKeyFrame - firstKeyFrame;\n      } else {\n        if (!duration) {\n          cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n        } else {\n          cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n        }\n\n        firstKeyFrame = lastKeyFrame - cycleDuration;\n      }\n\n      var i;\n      var len;\n      var ret;\n\n      if (type === 'pingpong') {\n        var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n        if (iterations % 2 !== 0) {\n          return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n        }\n      } else if (type === 'offset') {\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n        var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n        if (this.pv.length) {\n          ret = new Array(initV.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n          }\n\n          return ret;\n        }\n\n        return (endV - initV) * repeats + current;\n      } else if (type === 'continue') {\n        var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n        if (this.pv.length) {\n          ret = new Array(lastValue.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n          }\n\n          return ret;\n        }\n\n        return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n      }\n\n      return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n    }\n\n    function loopIn(type, duration, durationFlag) {\n      if (!this.k) {\n        return this.pv;\n      }\n\n      type = type ? type.toLowerCase() : '';\n      var currentFrame = this.comp.renderedFrame;\n      var keyframes = this.keyframes;\n      var firstKeyFrame = keyframes[0].t;\n\n      if (currentFrame >= firstKeyFrame) {\n        return this.pv;\n      }\n\n      var cycleDuration;\n      var lastKeyFrame;\n\n      if (!durationFlag) {\n        if (!duration || duration > keyframes.length - 1) {\n          duration = keyframes.length - 1;\n        }\n\n        lastKeyFrame = keyframes[duration].t;\n        cycleDuration = lastKeyFrame - firstKeyFrame;\n      } else {\n        if (!duration) {\n          cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n        } else {\n          cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n        }\n\n        lastKeyFrame = firstKeyFrame + cycleDuration;\n      }\n\n      var i;\n      var len;\n      var ret;\n\n      if (type === 'pingpong') {\n        var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n        if (iterations % 2 === 0) {\n          return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n        }\n      } else if (type === 'offset') {\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n        var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n        if (this.pv.length) {\n          ret = new Array(initV.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n          }\n\n          return ret;\n        }\n\n        return current - (endV - initV) * repeats;\n      } else if (type === 'continue') {\n        var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n        if (this.pv.length) {\n          ret = new Array(firstValue.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n          }\n\n          return ret;\n        }\n\n        return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n      }\n\n      return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n    }\n\n    function smooth(width, samples) {\n      if (!this.k) {\n        return this.pv;\n      }\n\n      width = (width || 0.4) * 0.5;\n      samples = Math.floor(samples || 5);\n\n      if (samples <= 1) {\n        return this.pv;\n      }\n\n      var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n      var initFrame = currentTime - width;\n      var endFrame = currentTime + width;\n      var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n      var i = 0;\n      var j = 0;\n      var value;\n\n      if (this.pv.length) {\n        value = createTypedArray('float32', this.pv.length);\n      } else {\n        value = 0;\n      }\n\n      var sampleValue;\n\n      while (i < samples) {\n        sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n        if (this.pv.length) {\n          for (j = 0; j < this.pv.length; j += 1) {\n            value[j] += sampleValue[j];\n          }\n        } else {\n          value += sampleValue;\n        }\n\n        i += 1;\n      }\n\n      if (this.pv.length) {\n        for (j = 0; j < this.pv.length; j += 1) {\n          value[j] /= samples;\n        }\n      } else {\n        value /= samples;\n      }\n\n      return value;\n    }\n\n    function getTransformValueAtTime(time) {\n      if (!this._transformCachingAtTime) {\n        this._transformCachingAtTime = {\n          v: new Matrix()\n        };\n      } /// /\n\n\n      var matrix = this._transformCachingAtTime.v;\n      matrix.cloneFromProps(this.pre.props);\n\n      if (this.appliedTransformations < 1) {\n        var anchor = this.a.getValueAtTime(time);\n        matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n      }\n\n      if (this.appliedTransformations < 2) {\n        var scale = this.s.getValueAtTime(time);\n        matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n      }\n\n      if (this.sk && this.appliedTransformations < 3) {\n        var skew = this.sk.getValueAtTime(time);\n        var skewAxis = this.sa.getValueAtTime(time);\n        matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n      }\n\n      if (this.r && this.appliedTransformations < 4) {\n        var rotation = this.r.getValueAtTime(time);\n        matrix.rotate(-rotation * this.r.mult);\n      } else if (!this.r && this.appliedTransformations < 4) {\n        var rotationZ = this.rz.getValueAtTime(time);\n        var rotationY = this.ry.getValueAtTime(time);\n        var rotationX = this.rx.getValueAtTime(time);\n        var orientation = this.or.getValueAtTime(time);\n        matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n      }\n\n      if (this.data.p && this.data.p.s) {\n        var positionX = this.px.getValueAtTime(time);\n        var positionY = this.py.getValueAtTime(time);\n\n        if (this.data.p.z) {\n          var positionZ = this.pz.getValueAtTime(time);\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n        } else {\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n        }\n      } else {\n        var position = this.p.getValueAtTime(time);\n        matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n      }\n\n      return matrix; /// /\n    }\n\n    function getTransformStaticValueAtTime() {\n      return this.v.clone(new Matrix());\n    }\n\n    var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n    TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n      var prop = getTransformProperty(elem, data, container);\n\n      if (prop.dynamicProperties.length) {\n        prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n      } else {\n        prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n      }\n\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\n      return prop;\n    };\n\n    var propertyGetProp = PropertyFactory.getProp;\n\n    PropertyFactory.getProp = function (elem, data, type, mult, container) {\n      var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n      // prop.loopOut = loopOut;\n      // prop.loopIn = loopIn;\n\n      if (prop.kf) {\n        prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n      } else {\n        prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n      }\n\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\n      prop.loopOut = loopOut;\n      prop.loopIn = loopIn;\n      prop.smooth = smooth;\n      prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n      prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n      prop.numKeys = data.a === 1 ? data.k.length : 0;\n      prop.propertyIndex = data.ix;\n      var value = 0;\n\n      if (type !== 0) {\n        value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n      }\n\n      prop._cachingAtTime = {\n        lastFrame: initialDefaultFrame,\n        lastIndex: 0,\n        value: value\n      };\n      expressionHelpers.searchExpressions(elem, data, prop);\n\n      if (prop.k) {\n        container.addDynamicProperty(prop);\n      }\n\n      return prop;\n    };\n\n    function getShapeValueAtTime(frameNum) {\n      // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n      if (!this._cachingAtTime) {\n        this._cachingAtTime = {\n          shapeValue: shapePool.clone(this.pv),\n          lastIndex: 0,\n          lastTime: initialDefaultFrame\n        };\n      }\n\n      frameNum *= this.elem.globalData.frameRate;\n      frameNum -= this.offsetTime;\n\n      if (frameNum !== this._cachingAtTime.lastTime) {\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n        this._cachingAtTime.lastTime = frameNum;\n        this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n      }\n\n      return this._cachingAtTime.shapeValue;\n    }\n\n    var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n    var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n    function ShapeExpressions() {}\n\n    ShapeExpressions.prototype = {\n      vertices: function vertices(prop, time) {\n        if (this.k) {\n          this.getValue();\n        }\n\n        var shapePath = this.v;\n\n        if (time !== undefined) {\n          shapePath = this.getValueAtTime(time, 0);\n        }\n\n        var i;\n        var len = shapePath._length;\n        var vertices = shapePath[prop];\n        var points = shapePath.v;\n        var arr = createSizedArray(len);\n\n        for (i = 0; i < len; i += 1) {\n          if (prop === 'i' || prop === 'o') {\n            arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n          } else {\n            arr[i] = [vertices[i][0], vertices[i][1]];\n          }\n        }\n\n        return arr;\n      },\n      points: function points(time) {\n        return this.vertices('v', time);\n      },\n      inTangents: function inTangents(time) {\n        return this.vertices('i', time);\n      },\n      outTangents: function outTangents(time) {\n        return this.vertices('o', time);\n      },\n      isClosed: function isClosed() {\n        return this.v.c;\n      },\n      pointOnPath: function pointOnPath(perc, time) {\n        var shapePath = this.v;\n\n        if (time !== undefined) {\n          shapePath = this.getValueAtTime(time, 0);\n        }\n\n        if (!this._segmentsLength) {\n          this._segmentsLength = bez.getSegmentsLength(shapePath);\n        }\n\n        var segmentsLength = this._segmentsLength;\n        var lengths = segmentsLength.lengths;\n        var lengthPos = segmentsLength.totalLength * perc;\n        var i = 0;\n        var len = lengths.length;\n        var accumulatedLength = 0;\n        var pt;\n\n        while (i < len) {\n          if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n            var initIndex = i;\n            var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n            var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n            pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n            break;\n          } else {\n            accumulatedLength += lengths[i].addedLength;\n          }\n\n          i += 1;\n        }\n\n        if (!pt) {\n          pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n        }\n\n        return pt;\n      },\n      vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n        // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n        if (perc == 1) {\n          // eslint-disable-line eqeqeq\n          perc = this.v.c;\n        } else if (perc == 0) {\n          // eslint-disable-line eqeqeq\n          perc = 0.999;\n        }\n\n        var pt1 = this.pointOnPath(perc, time);\n        var pt2 = this.pointOnPath(perc + 0.001, time);\n        var xLength = pt2[0] - pt1[0];\n        var yLength = pt2[1] - pt1[1];\n        var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n        if (magnitude === 0) {\n          return [0, 0];\n        }\n\n        var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n        return unitVector;\n      },\n      tangentOnPath: function tangentOnPath(perc, time) {\n        return this.vectorOnPath(perc, time, 'tangent');\n      },\n      normalOnPath: function normalOnPath(perc, time) {\n        return this.vectorOnPath(perc, time, 'normal');\n      },\n      setGroupProperty: expressionHelpers.setGroupProperty,\n      getValueAtTime: expressionHelpers.getStaticValueAtTime\n    };\n    extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n    extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n    KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n    KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n    var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n    ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n      var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n      prop.propertyIndex = data.ix;\n      prop.lock = false;\n\n      if (type === 3) {\n        expressionHelpers.searchExpressions(elem, data.pt, prop);\n      } else if (type === 4) {\n        expressionHelpers.searchExpressions(elem, data.ks, prop);\n      }\n\n      if (prop.k) {\n        elem.addDynamicProperty(prop);\n      }\n\n      return prop;\n    };\n  }\n\n  function initialize$1() {\n    addPropertyDecorator();\n  }\n\n  function addDecorator() {\n    function searchExpressions() {\n      if (this.data.d.x) {\n        this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n        this.addEffect(this.getExpressionValue.bind(this));\n        return true;\n      }\n\n      return null;\n    }\n\n    TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n      var newValue = this.calculateExpression(text);\n\n      if (currentValue.t !== newValue) {\n        var newData = {};\n        this.copyData(newData, currentValue);\n        newData.t = newValue.toString();\n        newData.__complete = false;\n        return newData;\n      }\n\n      return currentValue;\n    };\n\n    TextProperty.prototype.searchProperty = function () {\n      var isKeyframed = this.searchKeyframes();\n      var hasExpressions = this.searchExpressions();\n      this.kf = isKeyframed || hasExpressions;\n      return this.kf;\n    };\n\n    TextProperty.prototype.searchExpressions = searchExpressions;\n  }\n\n  function initialize() {\n    addDecorator();\n  }\n\n  function SVGComposableEffect() {}\n\n  SVGComposableEffect.prototype = {\n    createMergeNode: function createMergeNode(resultId, ins) {\n      var feMerge = createNS('feMerge');\n      feMerge.setAttribute('result', resultId);\n      var feMergeNode;\n      var i;\n\n      for (i = 0; i < ins.length; i += 1) {\n        feMergeNode = createNS('feMergeNode');\n        feMergeNode.setAttribute('in', ins[i]);\n        feMerge.appendChild(feMergeNode);\n        feMerge.appendChild(feMergeNode);\n      }\n\n      return feMerge;\n    }\n  };\n\n  var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n  function SVGTintFilter(filter, filterManager, elem, id, source) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n    feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n    this.linearFilter = feColorMatrix;\n    feColorMatrix.setAttribute('result', id + '_tint_1');\n    filter.appendChild(feColorMatrix);\n    feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n    feColorMatrix.setAttribute('result', id + '_tint_2');\n    filter.appendChild(feColorMatrix);\n    this.matrixFilter = feColorMatrix;\n    var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n    filter.appendChild(feMerge);\n  }\n\n  extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n  SVGTintFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var colorBlack = this.filterManager.effectElements[0].p.v;\n      var colorWhite = this.filterManager.effectElements[1].p.v;\n      var opacity = this.filterManager.effectElements[2].p.v / 100;\n      this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n      this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n    }\n  };\n\n  function SVGFillFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n    feColorMatrix.setAttribute('result', id);\n    filter.appendChild(feColorMatrix);\n    this.matrixFilter = feColorMatrix;\n  }\n\n  SVGFillFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var color = this.filterManager.effectElements[2].p.v;\n      var opacity = this.filterManager.effectElements[6].p.v;\n      this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n    }\n  };\n\n  function SVGStrokeEffect(fil, filterManager, elem) {\n    this.initialized = false;\n    this.filterManager = filterManager;\n    this.elem = elem;\n    this.paths = [];\n  }\n\n  SVGStrokeEffect.prototype.initialize = function () {\n    var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n    var path;\n    var groupPath;\n    var i;\n    var len;\n\n    if (this.filterManager.effectElements[1].p.v === 1) {\n      len = this.elem.maskManager.masksProperties.length;\n      i = 0;\n    } else {\n      i = this.filterManager.effectElements[0].p.v - 1;\n      len = i + 1;\n    }\n\n    groupPath = createNS('g');\n    groupPath.setAttribute('fill', 'none');\n    groupPath.setAttribute('stroke-linecap', 'round');\n    groupPath.setAttribute('stroke-dashoffset', 1);\n\n    for (i; i < len; i += 1) {\n      path = createNS('path');\n      groupPath.appendChild(path);\n      this.paths.push({\n        p: path,\n        m: i\n      });\n    }\n\n    if (this.filterManager.effectElements[10].p.v === 3) {\n      var mask = createNS('mask');\n      var id = createElementID();\n      mask.setAttribute('id', id);\n      mask.setAttribute('mask-type', 'alpha');\n      mask.appendChild(groupPath);\n      this.elem.globalData.defs.appendChild(mask);\n      var g = createNS('g');\n      g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n      while (elemChildren[0]) {\n        g.appendChild(elemChildren[0]);\n      }\n\n      this.elem.layerElement.appendChild(g);\n      this.masker = mask;\n      groupPath.setAttribute('stroke', '#fff');\n    } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n      if (this.filterManager.effectElements[10].p.v === 2) {\n        elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n        while (elemChildren.length) {\n          this.elem.layerElement.removeChild(elemChildren[0]);\n        }\n      }\n\n      this.elem.layerElement.appendChild(groupPath);\n      this.elem.layerElement.removeAttribute('mask');\n      groupPath.setAttribute('stroke', '#fff');\n    }\n\n    this.initialized = true;\n    this.pathMasker = groupPath;\n  };\n\n  SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n    if (!this.initialized) {\n      this.initialize();\n    }\n\n    var i;\n    var len = this.paths.length;\n    var mask;\n    var path;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.paths[i].m !== -1) {\n        mask = this.elem.maskManager.viewData[this.paths[i].m];\n        path = this.paths[i].p;\n\n        if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n          path.setAttribute('d', mask.lastPath);\n        }\n\n        if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n          var dasharrayValue;\n\n          if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n            var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n            var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n            var l = path.getTotalLength();\n            dasharrayValue = '0 0 0 ' + l * s + ' ';\n            var lineLength = l * (e - s);\n            var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n            var units = Math.floor(lineLength / segment);\n            var j;\n\n            for (j = 0; j < units; j += 1) {\n              dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n            }\n\n            dasharrayValue += '0 ' + l * 10 + ' 0 0';\n          } else {\n            dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n          }\n\n          path.setAttribute('stroke-dasharray', dasharrayValue);\n        }\n      }\n    }\n\n    if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n      this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n    }\n\n    if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n      this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n    }\n\n    if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n      if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n        var color = this.filterManager.effectElements[3].p.v;\n        this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n      }\n    }\n  };\n\n  function SVGTritoneFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n    feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n    filter.appendChild(feColorMatrix);\n    var feComponentTransfer = createNS('feComponentTransfer');\n    feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n    feComponentTransfer.setAttribute('result', id);\n    this.matrixFilter = feComponentTransfer;\n    var feFuncR = createNS('feFuncR');\n    feFuncR.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncR);\n    this.feFuncR = feFuncR;\n    var feFuncG = createNS('feFuncG');\n    feFuncG.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncG);\n    this.feFuncG = feFuncG;\n    var feFuncB = createNS('feFuncB');\n    feFuncB.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncB);\n    this.feFuncB = feFuncB;\n    filter.appendChild(feComponentTransfer);\n  }\n\n  SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var color1 = this.filterManager.effectElements[0].p.v;\n      var color2 = this.filterManager.effectElements[1].p.v;\n      var color3 = this.filterManager.effectElements[2].p.v;\n      var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n      var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n      var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n      this.feFuncR.setAttribute('tableValues', tableR);\n      this.feFuncG.setAttribute('tableValues', tableG);\n      this.feFuncB.setAttribute('tableValues', tableB);\n    }\n  };\n\n  function SVGProLevelsFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var effectElements = this.filterManager.effectElements;\n    var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n    if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n      this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n    } // Green\n\n\n    if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n      this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n    } // Blue\n\n\n    if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n      this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n    } // Alpha\n\n\n    if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n      this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n    } // RGB\n\n\n    if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n      filter.appendChild(feComponentTransfer);\n    }\n\n    if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n      feComponentTransfer = createNS('feComponentTransfer');\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n      feComponentTransfer.setAttribute('result', id);\n      filter.appendChild(feComponentTransfer);\n      this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n      this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n      this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n    }\n  }\n\n  SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n    var feFunc = createNS(type);\n    feFunc.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFunc);\n    return feFunc;\n  };\n\n  SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n    var cnt = 0;\n    var segments = 256;\n    var perc;\n    var min = Math.min(inputBlack, inputWhite);\n    var max = Math.max(inputBlack, inputWhite);\n    var table = Array.call(null, {\n      length: segments\n    });\n    var colorValue;\n    var pos = 0;\n    var outputDelta = outputWhite - outputBlack;\n    var inputDelta = inputWhite - inputBlack;\n\n    while (cnt <= 256) {\n      perc = cnt / 256;\n\n      if (perc <= min) {\n        colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n      } else if (perc >= max) {\n        colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n      } else {\n        colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n      }\n\n      table[pos] = colorValue;\n      pos += 1;\n      cnt += 256 / (segments - 1);\n    }\n\n    return table.join(' ');\n  };\n\n  SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var val;\n      var effectElements = this.filterManager.effectElements;\n\n      if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n        val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n        this.feFuncRComposed.setAttribute('tableValues', val);\n        this.feFuncGComposed.setAttribute('tableValues', val);\n        this.feFuncBComposed.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n        val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n        this.feFuncR.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n        val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n        this.feFuncG.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n        val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n        this.feFuncB.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n        val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n        this.feFuncA.setAttribute('tableValues', val);\n      }\n    }\n  };\n\n  function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n    var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n    var filterSize = filterManager.data.fs || globalFilterSize;\n    filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n    filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n    filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n    filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n    this.filterManager = filterManager;\n    var feGaussianBlur = createNS('feGaussianBlur');\n    feGaussianBlur.setAttribute('in', 'SourceAlpha');\n    feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n    feGaussianBlur.setAttribute('stdDeviation', '0');\n    this.feGaussianBlur = feGaussianBlur;\n    filter.appendChild(feGaussianBlur);\n    var feOffset = createNS('feOffset');\n    feOffset.setAttribute('dx', '25');\n    feOffset.setAttribute('dy', '0');\n    feOffset.setAttribute('in', id + '_drop_shadow_1');\n    feOffset.setAttribute('result', id + '_drop_shadow_2');\n    this.feOffset = feOffset;\n    filter.appendChild(feOffset);\n    var feFlood = createNS('feFlood');\n    feFlood.setAttribute('flood-color', '#00ff00');\n    feFlood.setAttribute('flood-opacity', '1');\n    feFlood.setAttribute('result', id + '_drop_shadow_3');\n    this.feFlood = feFlood;\n    filter.appendChild(feFlood);\n    var feComposite = createNS('feComposite');\n    feComposite.setAttribute('in', id + '_drop_shadow_3');\n    feComposite.setAttribute('in2', id + '_drop_shadow_2');\n    feComposite.setAttribute('operator', 'in');\n    feComposite.setAttribute('result', id + '_drop_shadow_4');\n    filter.appendChild(feComposite);\n    var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n    filter.appendChild(feMerge); //\n  }\n\n  extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n  SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n        this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n      }\n\n      if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n        var col = this.filterManager.effectElements[0].p.v;\n        this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n      }\n\n      if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n        this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n      }\n\n      if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n        var distance = this.filterManager.effectElements[3].p.v;\n        var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n        var x = distance * Math.cos(angle);\n        var y = distance * Math.sin(angle);\n        this.feOffset.setAttribute('dx', x);\n        this.feOffset.setAttribute('dy', y);\n      }\n    }\n  };\n\n  var _svgMatteSymbols = [];\n\n  function SVGMatte3Effect(filterElem, filterManager, elem) {\n    this.initialized = false;\n    this.filterManager = filterManager;\n    this.filterElem = filterElem;\n    this.elem = elem;\n    elem.matteElement = createNS('g');\n    elem.matteElement.appendChild(elem.layerElement);\n    elem.matteElement.appendChild(elem.transformedElement);\n    elem.baseElement = elem.matteElement;\n  }\n\n  SVGMatte3Effect.prototype.findSymbol = function (mask) {\n    var i = 0;\n    var len = _svgMatteSymbols.length;\n\n    while (i < len) {\n      if (_svgMatteSymbols[i] === mask) {\n        return _svgMatteSymbols[i];\n      }\n\n      i += 1;\n    }\n\n    return null;\n  };\n\n  SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n    var parentNode = mask.layerElement.parentNode;\n\n    if (!parentNode) {\n      return;\n    }\n\n    var children = parentNode.children;\n    var i = 0;\n    var len = children.length;\n\n    while (i < len) {\n      if (children[i] === mask.layerElement) {\n        break;\n      }\n\n      i += 1;\n    }\n\n    var nextChild;\n\n    if (i <= len - 2) {\n      nextChild = children[i + 1];\n    }\n\n    var useElem = createNS('use');\n    useElem.setAttribute('href', '#' + symbolId);\n\n    if (nextChild) {\n      parentNode.insertBefore(useElem, nextChild);\n    } else {\n      parentNode.appendChild(useElem);\n    }\n  };\n\n  SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n    if (!this.findSymbol(mask)) {\n      var symbolId = createElementID();\n      var masker = createNS('mask');\n      masker.setAttribute('id', mask.layerId);\n      masker.setAttribute('mask-type', 'alpha');\n\n      _svgMatteSymbols.push(mask);\n\n      var defs = elem.globalData.defs;\n      defs.appendChild(masker);\n      var symbol = createNS('symbol');\n      symbol.setAttribute('id', symbolId);\n      this.replaceInParent(mask, symbolId);\n      symbol.appendChild(mask.layerElement);\n      defs.appendChild(symbol);\n      var useElem = createNS('use');\n      useElem.setAttribute('href', '#' + symbolId);\n      masker.appendChild(useElem);\n      mask.data.hd = false;\n      mask.show();\n    }\n\n    elem.setMatte(mask.layerId);\n  };\n\n  SVGMatte3Effect.prototype.initialize = function () {\n    var ind = this.filterManager.effectElements[0].p.v;\n    var elements = this.elem.comp.elements;\n    var i = 0;\n    var len = elements.length;\n\n    while (i < len) {\n      if (elements[i] && elements[i].data.ind === ind) {\n        this.setElementAsMask(this.elem, elements[i]);\n      }\n\n      i += 1;\n    }\n\n    this.initialized = true;\n  };\n\n  SVGMatte3Effect.prototype.renderFrame = function () {\n    if (!this.initialized) {\n      this.initialize();\n    }\n  };\n\n  function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n    // Outset the filter region by 100% on all sides to accommodate blur expansion.\n    filter.setAttribute('x', '-100%');\n    filter.setAttribute('y', '-100%');\n    filter.setAttribute('width', '300%');\n    filter.setAttribute('height', '300%');\n    this.filterManager = filterManager;\n    var feGaussianBlur = createNS('feGaussianBlur');\n    feGaussianBlur.setAttribute('result', id);\n    filter.appendChild(feGaussianBlur);\n    this.feGaussianBlur = feGaussianBlur;\n  }\n\n  SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      // Empirical value, matching AE's blur appearance.\n      var kBlurrinessToSigma = 0.3;\n      var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n      //\n      //   1 -> horizontal & vertical\n      //   2 -> horizontal only\n      //   3 -> vertical only\n      //\n\n      var dimensions = this.filterManager.effectElements[1].p.v;\n      var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n      var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n      this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n      //\n      //   0 -> off -> duplicate\n      //   1 -> on  -> wrap\n\n      var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n      this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n    }\n  };\n\n  function TransformEffect() {}\n\n  TransformEffect.prototype.init = function (effectsManager) {\n    this.effectsManager = effectsManager;\n    this.type = effectTypes.TRANSFORM_EFFECT;\n    this.matrix = new Matrix();\n    this.opacity = -1;\n    this._mdf = false;\n    this._opMdf = false;\n  };\n\n  TransformEffect.prototype.renderFrame = function (forceFrame) {\n    this._opMdf = false;\n    this._mdf = false;\n\n    if (forceFrame || this.effectsManager._mdf) {\n      var effectElements = this.effectsManager.effectElements;\n      var anchor = effectElements[0].p.v;\n      var position = effectElements[1].p.v;\n      var isUniformScale = effectElements[2].p.v === 1;\n      var scaleHeight = effectElements[3].p.v;\n      var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n      var skew = effectElements[5].p.v;\n      var skewAxis = effectElements[6].p.v;\n      var rotation = effectElements[7].p.v;\n      this.matrix.reset();\n      this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n      this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n      this.matrix.rotate(-rotation * degToRads);\n      this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n      this.matrix.translate(position[0], position[1], 0);\n      this._mdf = true;\n\n      if (this.opacity !== effectElements[8].p.v) {\n        this.opacity = effectElements[8].p.v;\n        this._opMdf = true;\n      }\n    }\n  };\n\n  function SVGTransformEffect(_, filterManager) {\n    this.init(filterManager);\n  }\n\n  extendPrototype([TransformEffect], SVGTransformEffect);\n\n  function CVTransformEffect(effectsManager) {\n    this.init(effectsManager);\n  }\n\n  extendPrototype([TransformEffect], CVTransformEffect);\n\n  registerRenderer('canvas', CanvasRenderer);\n  registerRenderer('html', HybridRenderer);\n  registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n  ShapeModifiers.registerModifier('tm', TrimModifier);\n  ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n  ShapeModifiers.registerModifier('rp', RepeaterModifier);\n  ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n  ShapeModifiers.registerModifier('zz', ZigZagModifier);\n  ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n  setExpressionsPlugin(Expressions);\n  setExpressionInterfaces(getInterface);\n  initialize$1();\n  initialize(); // Registering svg effects\n\n  registerEffect$1(20, SVGTintFilter, true);\n  registerEffect$1(21, SVGFillFilter, true);\n  registerEffect$1(22, SVGStrokeEffect, false);\n  registerEffect$1(23, SVGTritoneFilter, true);\n  registerEffect$1(24, SVGProLevelsFilter, true);\n  registerEffect$1(25, SVGDropShadowEffect, true);\n  registerEffect$1(28, SVGMatte3Effect, false);\n  registerEffect$1(29, SVGGaussianBlurEffect, true);\n  registerEffect$1(35, SVGTransformEffect, false);\n  registerEffect(35, CVTransformEffect);\n\n  return lottie;\n\n}));\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var af = moment.defineLocale('af', {\n        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM: function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Vandag om] LT',\n            nextDay: '[Môre om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[Gister om] LT',\n            lastWeek: '[Laas] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oor %s',\n            past: '%s gelede',\n            s: \"'n paar sekondes\",\n            ss: '%d sekondes',\n            m: \"'n minuut\",\n            mm: '%d minute',\n            h: \"'n uur\",\n            hh: '%d ure',\n            d: \"'n dag\",\n            dd: '%d dae',\n            M: \"'n maand\",\n            MM: '%d maande',\n            y: \"'n jaar\",\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            ); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week: {\n            dow: 1, // Maandag is die eerste dag van die week.\n            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        },\n    });\n\n    return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                  ? 1\n                  : n === 2\n                    ? 2\n                    : n % 100 >= 3 && n % 100 <= 10\n                      ? 3\n                      : n % 100 >= 11\n                        ? 4\n                        : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'جانفي',\n            'فيفري',\n            'مارس',\n            'أفريل',\n            'ماي',\n            'جوان',\n            'جويلية',\n            'أوت',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '1',\n            2: '2',\n            3: '3',\n            4: '4',\n            5: '5',\n            6: '6',\n            7: '7',\n            8: '8',\n            9: '9',\n            0: '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                  ? 1\n                  : n === 2\n                    ? 2\n                    : n % 100 >= 3 && n % 100 <= 10\n                      ? 3\n                      : n % 100 >= 11\n                        ? 4\n                        : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    var arPs = moment.defineLocale('ar-ps', {\n        months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n            '_'\n        ),\n        monthsShort:\n            'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .split('') // reversed since negative lookbehind not supported everywhere\n                .reverse()\n                .join('')\n                .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n                    return numberMap[match];\n                })\n                .split('')\n                .reverse()\n                .join('')\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return arPs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale  :  Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                  ? 1\n                  : n === 2\n                    ? 2\n                    : n % 100 >= 3 && n % 100 <= 10\n                      ? 3\n                      : n % 100 >= 11\n                        ? 4\n                        : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var ar = moment.defineLocale('ar', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı',\n    };\n\n    var az = moment.defineLocale('az', {\n        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays:\n            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n                '_'\n            ),\n        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[sabah saat] LT',\n            nextWeek: '[gələn həftə] dddd [saat] LT',\n            lastDay: '[dünən] LT',\n            lastWeek: '[keçən həftə] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s əvvəl',\n            s: 'bir neçə saniyə',\n            ss: '%d saniyə',\n            m: 'bir dəqiqə',\n            mm: '%d dəqiqə',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir il',\n            yy: '%d il',\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM: function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal: function (number) {\n            if (number === 0) {\n                // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = (number % 100) - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n              ? forms[1]\n              : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            dd: 'дзень_дні_дзён',\n            MM: 'месяц_месяцы_месяцаў',\n            yy: 'год_гады_гадоў',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months: {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n                '_'\n            ),\n            standalone:\n                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n        weekdays: {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n                '_'\n            ),\n            standalone:\n                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n                    '_'\n                ),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n        },\n        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n        },\n        calendar: {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'праз %s',\n            past: '%s таму',\n            s: 'некалькі секунд',\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithPlural,\n            hh: relativeTimeWithPlural,\n            d: 'дзень',\n            dd: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM: function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) &&\n                        number % 100 !== 12 &&\n                        number % 100 !== 13\n                        ? number + '-і'\n                        : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bg = moment.defineLocale('bg', {\n        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Днес в] LT',\n            nextDay: '[Утре в] LT',\n            nextWeek: 'dddd [в] LT',\n            lastDay: '[Вчера в] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Миналата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Миналия] dddd [в] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'след %s',\n            past: 'преди %s',\n            s: 'няколко секунди',\n            ss: '%d секунди',\n            m: 'минута',\n            mm: '%d минути',\n            h: 'час',\n            hh: '%d часа',\n            d: 'ден',\n            dd: '%d дена',\n            w: 'седмица',\n            ww: '%d седмици',\n            M: 'месец',\n            MM: '%d месеца',\n            y: 'година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bm = moment.defineLocale('bm', {\n        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n            '_'\n        ),\n        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'MMMM [tile] D [san] YYYY',\n            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bi lɛrɛ] LT',\n            nextDay: '[Sini lɛrɛ] LT',\n            nextWeek: 'dddd [don lɛrɛ] LT',\n            lastDay: '[Kunu lɛrɛ] LT',\n            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s kɔnɔ',\n            past: 'a bɛ %s bɔ',\n            s: 'sanga dama dama',\n            ss: 'sekondi %d',\n            m: 'miniti kelen',\n            mm: 'miniti %d',\n            h: 'lɛrɛ kelen',\n            hh: 'lɛrɛ %d',\n            d: 'tile kelen',\n            dd: 'tile %d',\n            M: 'kalo kelen',\n            MM: 'kalo %d',\n            y: 'san kelen',\n            yy: 'san %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bnBd = moment.defineLocale('bn-bd', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort:\n            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n                '_'\n            ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n\n        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'রাত') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ভোর') {\n                return hour;\n            } else if (meridiem === 'সকাল') {\n                return hour;\n            } else if (meridiem === 'দুপুর') {\n                return hour >= 3 ? hour : hour + 12;\n            } else if (meridiem === 'বিকাল') {\n                return hour + 12;\n            } else if (meridiem === 'সন্ধ্যা') {\n                return hour + 12;\n            }\n        },\n\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 6) {\n                return 'ভোর';\n            } else if (hour < 12) {\n                return 'সকাল';\n            } else if (hour < 15) {\n                return 'দুপুর';\n            } else if (hour < 18) {\n                return 'বিকাল';\n            } else if (hour < 20) {\n                return 'সন্ধ্যা';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bn = moment.defineLocale('bn', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort:\n            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n                '_'\n            ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'রাত' && hour >= 4) ||\n                (meridiem === 'দুপুর' && hour < 5) ||\n                meridiem === 'বিকাল'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '༡',\n            2: '༢',\n            3: '༣',\n            4: '༤',\n            5: '༥',\n            6: '༦',\n            7: '༧',\n            8: '༨',\n            9: '༩',\n            0: '༠',\n        },\n        numberMap = {\n            '༡': '1',\n            '༢': '2',\n            '༣': '3',\n            '༤': '4',\n            '༥': '5',\n            '༦': '6',\n            '༧': '7',\n            '༨': '8',\n            '༩': '9',\n            '༠': '0',\n        };\n\n    var bo = moment.defineLocale('bo', {\n        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n                '_'\n            ),\n        monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n        monthsParseExact: true,\n        weekdays:\n            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n                '_'\n            ),\n        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[དི་རིང] LT',\n            nextDay: '[སང་ཉིན] LT',\n            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay: '[ཁ་སང] LT',\n            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ལ་',\n            past: '%s སྔན་ལ',\n            s: 'ལམ་སང',\n            ss: '%d སྐར་ཆ།',\n            m: 'སྐར་མ་གཅིག',\n            mm: '%d སྐར་མ',\n            h: 'ཆུ་ཚོད་གཅིག',\n            hh: '%d ཆུ་ཚོད',\n            d: 'ཉིན་གཅིག',\n            dd: '%d ཉིན་',\n            M: 'ཟླ་བ་གཅིག',\n            MM: '%d ཟླ་བ',\n            y: 'ལོ་གཅིག',\n            yy: '%d ལོ',\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'མཚན་མོ' && hour >= 4) ||\n                (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                meridiem === 'དགོང་དག'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            mm: 'munutenn',\n            MM: 'miz',\n            dd: 'devezh',\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            m: 'v',\n            b: 'v',\n            d: 'z',\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var monthsParse = [\n            /^gen/i,\n            /^c[ʼ\\']hwe/i,\n            /^meu/i,\n            /^ebr/i,\n            /^mae/i,\n            /^(mez|eve)/i,\n            /^gou/i,\n            /^eos/i,\n            /^gwe/i,\n            /^her/i,\n            /^du/i,\n            /^ker/i,\n        ],\n        monthsRegex =\n            /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        monthsStrictRegex =\n            /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n        monthsShortStrictRegex =\n            /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        fullWeekdaysParse = [\n            /^sul/i,\n            /^lun/i,\n            /^meurzh/i,\n            /^merc[ʼ\\']her/i,\n            /^yaou/i,\n            /^gwener/i,\n            /^sadorn/i,\n        ],\n        shortWeekdaysParse = [\n            /^Sul/i,\n            /^Lun/i,\n            /^Meu/i,\n            /^Mer/i,\n            /^Yao/i,\n            /^Gwe/i,\n            /^Sad/i,\n        ],\n        minWeekdaysParse = [\n            /^Su/i,\n            /^Lu/i,\n            /^Me([^r]|$)/i,\n            /^Mer/i,\n            /^Ya/i,\n            /^Gw/i,\n            /^Sa/i,\n        ];\n\n    var br = moment.defineLocale('br', {\n        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n            '_'\n        ),\n        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParse: minWeekdaysParse,\n        fullWeekdaysParse: fullWeekdaysParse,\n        shortWeekdaysParse: shortWeekdaysParse,\n        minWeekdaysParse: minWeekdaysParse,\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [a viz] MMMM YYYY',\n            LLL: 'D [a viz] MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hiziv da] LT',\n            nextDay: '[Warcʼhoazh da] LT',\n            nextWeek: 'dddd [da] LT',\n            lastDay: '[Decʼh da] LT',\n            lastWeek: 'dddd [paset da] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'a-benn %s',\n            past: '%s ʼzo',\n            s: 'un nebeud segondennoù',\n            ss: '%d eilenn',\n            m: 'ur vunutenn',\n            mm: relativeTimeWithMutation,\n            h: 'un eur',\n            hh: '%d eur',\n            d: 'un devezh',\n            dd: relativeTimeWithMutation,\n            M: 'ur miz',\n            MM: relativeTimeWithMutation,\n            y: 'ur bloaz',\n            yy: specialMutationForYears,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'añ' : 'vet';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n        isPM: function (token) {\n            return token === 'g.m.';\n        },\n        meridiem: function (hour, minute, isLower) {\n            return hour < 12 ? 'a.m.' : 'g.m.';\n        },\n    });\n\n    return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! author : Rasid Redzic : https://github.com/rasidre\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 'm':\n                return withoutSuffix\n                    ? 'jedna minuta'\n                    : isFuture\n                      ? 'jednu minutu'\n                      : 'jedne minute';\n        }\n    }\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jedan sat';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: processRelativeTime,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ca = moment.defineLocale('ca', {\n        months: {\n            standalone:\n                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n                    '_'\n                ),\n            format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort:\n            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n                '_'\n            ),\n        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a les] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextDay: function () {\n                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastDay: function () {\n                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [passat a ' +\n                    (this.hours() !== 1 ? 'les' : 'la') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'uns segons',\n            ss: '%d segons',\n            m: 'un minut',\n            mm: '%d minuts',\n            h: 'una hora',\n            hh: '%d hores',\n            d: 'un dia',\n            dd: '%d dies',\n            M: 'un mes',\n            MM: '%d mesos',\n            y: 'un any',\n            yy: '%d anys',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                      ? 'n'\n                      : number === 3\n                        ? 'r'\n                        : number === 4\n                          ? 't'\n                          : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = {\n            standalone:\n                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n                    '_'\n                ),\n            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n                '_'\n            ),\n            isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n        },\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n        monthsParse = [\n            /^led/i,\n            /^úno/i,\n            /^bře/i,\n            /^dub/i,\n            /^kvě/i,\n            /^(čvn|červen$|června)/i,\n            /^(čvc|červenec|července)/i,\n            /^srp/i,\n            /^zář/i,\n            /^říj/i,\n            /^lis/i,\n            /^pro/i,\n        ],\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsRegex =\n            /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return n > 1 && n < 5 && ~~(n / 10) !== 1;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex:\n            /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex:\n            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n            l: 'D. M. YYYY',\n        },\n        calendar: {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'před %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cv = moment.defineLocale('cv', {\n        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n            '_'\n        ),\n        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays:\n            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n                '_'\n            ),\n        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n        },\n        calendar: {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (output) {\n                var affix = /сехет$/i.exec(output)\n                    ? 'рен'\n                    : /ҫул$/i.exec(output)\n                      ? 'тан'\n                      : 'ран';\n                return output + affix;\n            },\n            past: '%s каялла',\n            s: 'пӗр-ик ҫеккунт',\n            ss: '%d ҫеккунт',\n            m: 'пӗр минут',\n            mm: '%d минут',\n            h: 'пӗр сехет',\n            hh: '%d сехет',\n            d: 'пӗр кун',\n            dd: '%d кун',\n            M: 'пӗр уйӑх',\n            MM: '%d уйӑх',\n            y: 'пӗр ҫул',\n            yy: '%d ҫул',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal: '%d-мӗш',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n            '_'\n        ),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n            '_'\n        ),\n        weekdays:\n            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n                '_'\n            ),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact: true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '',\n                    'af',\n                    'il',\n                    'ydd',\n                    'ydd',\n                    'ed',\n                    'ed',\n                    'ed',\n                    'fed',\n                    'fed',\n                    'fed', // 1af to 10fed\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'fed', // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var da = moment.defineLocale('da', {\n        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'på dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[i] dddd[s kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'få sekunder',\n            ss: '%d sekunder',\n            m: 'et minut',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dage',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'et år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'ޖެނުއަރީ',\n            'ފެބްރުއަރީ',\n            'މާރިޗު',\n            'އޭޕްރީލު',\n            'މޭ',\n            'ޖޫން',\n            'ޖުލައި',\n            'އޯގަސްޓު',\n            'ސެޕްޓެމްބަރު',\n            'އޮކްޓޯބަރު',\n            'ނޮވެމްބަރު',\n            'ޑިސެމްބަރު',\n        ],\n        weekdays = [\n            'އާދިއްތަ',\n            'ހޯމަ',\n            'އަންގާރަ',\n            'ބުދަ',\n            'ބުރާސްފަތި',\n            'ހުކުރު',\n            'ހޮނިހިރު',\n        ];\n\n    var dv = moment.defineLocale('dv', {\n        months: months,\n        monthsShort: months,\n        weekdays: weekdays,\n        weekdaysShort: weekdays,\n        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/M/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM: function (input) {\n            return 'މފ' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar: {\n            sameDay: '[މިއަދު] LT',\n            nextDay: '[މާދަމާ] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[އިއްޔެ] LT',\n            lastWeek: '[ފާއިތުވި] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ތެރޭގައި %s',\n            past: 'ކުރިން %s',\n            s: 'ސިކުންތުކޮޅެއް',\n            ss: 'd% ސިކުންތު',\n            m: 'މިނިޓެއް',\n            mm: 'މިނިޓު %d',\n            h: 'ގަޑިއިރެއް',\n            hh: 'ގަޑިއިރު %d',\n            d: 'ދުވަހެއް',\n            dd: 'ދުވަސް %d',\n            M: 'މަހެއް',\n            MM: 'މަސް %d',\n            y: 'އަހަރެއް',\n            yy: 'އަހަރު %d',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 7, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl:\n            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n                '_'\n            ),\n        monthsGenitiveEl:\n            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n                '_'\n            ),\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (\n                typeof format === 'string' &&\n                /D/.test(format.substring(0, format.indexOf('MMMM')))\n            ) {\n                // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n            '_'\n        ),\n        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM: function (input) {\n            return (input + '').toLowerCase()[0] === 'μ';\n        },\n        meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendarEl: {\n            sameDay: '[Σήμερα {}] LT',\n            nextDay: '[Αύριο {}] LT',\n            nextWeek: 'dddd [{}] LT',\n            lastDay: '[Χθες {}] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        calendar: function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n        },\n        relativeTime: {\n            future: 'σε %s',\n            past: '%s πριν',\n            s: 'λίγα δευτερόλεπτα',\n            ss: '%d δευτερόλεπτα',\n            m: 'ένα λεπτό',\n            mm: '%d λεπτά',\n            h: 'μία ώρα',\n            hh: '%d ώρες',\n            d: 'μία μέρα',\n            dd: '%d μέρες',\n            M: 'ένας μήνας',\n            MM: '%d μήνες',\n            y: 'ένας χρόνος',\n            yy: '%d χρόνια',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4st is the first week of the year.\n        },\n    });\n\n    return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enAu = moment.defineLocale('en-au', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enCa = moment.defineLocale('en-ca', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'YYYY-MM-DD',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY h:mm A',\n            LLLL: 'dddd, MMMM D, YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enGb = moment.defineLocale('en-gb', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIe = moment.defineLocale('en-ie', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIl = moment.defineLocale('en-il', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIn = moment.defineLocale('en-in', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enNz = moment.defineLocale('en-nz', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enSg = moment.defineLocale('en-sg', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eo = moment.defineLocale('eo', {\n        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: '[la] D[-an de] MMMM, YYYY',\n            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar: {\n            sameDay: '[Hodiaŭ je] LT',\n            nextDay: '[Morgaŭ je] LT',\n            nextWeek: 'dddd[n je] LT',\n            lastDay: '[Hieraŭ je] LT',\n            lastWeek: '[pasintan] dddd[n je] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'post %s',\n            past: 'antaŭ %s',\n            s: 'kelkaj sekundoj',\n            ss: '%d sekundoj',\n            m: 'unu minuto',\n            mm: '%d minutoj',\n            h: 'unu horo',\n            hh: '%d horoj',\n            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n            dd: '%d tagoj',\n            M: 'unu monato',\n            MM: '%d monatoj',\n            y: 'unu jaro',\n            yy: '%d jaroj',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal: '%da',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esMx = moment.defineLocale('es-mx', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'MM/DD/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            ss: [number + 'sekundi', number + 'sekundit'],\n            m: ['ühe minuti', 'üks minut'],\n            mm: [number + ' minuti', number + ' minutit'],\n            h: ['ühe tunni', 'tund aega', 'üks tund'],\n            hh: [number + ' tunni', number + ' tundi'],\n            d: ['ühe päeva', 'üks päev'],\n            M: ['kuu aja', 'kuu aega', 'üks kuu'],\n            MM: [number + ' kuu', number + ' kuud'],\n            y: ['ühe aasta', 'aasta', 'üks aasta'],\n            yy: [number + ' aasta', number + ' aastat'],\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n        weekdays:\n            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n                '_'\n            ),\n        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Täna,] LT',\n            nextDay: '[Homme,] LT',\n            nextWeek: '[Järgmine] dddd LT',\n            lastDay: '[Eile,] LT',\n            lastWeek: '[Eelmine] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s pärast',\n            past: '%s tagasi',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: '%d päeva',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eu = moment.defineLocale('eu', {\n        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n            '_'\n        ),\n        monthsShort:\n            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n                '_'\n            ),\n        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY[ko] MMMM[ren] D[a]',\n            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l: 'YYYY-M-D',\n            ll: 'YYYY[ko] MMM D[a]',\n            lll: 'YYYY[ko] MMM D[a] HH:mm',\n            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n        },\n        calendar: {\n            sameDay: '[gaur] LT[etan]',\n            nextDay: '[bihar] LT[etan]',\n            nextWeek: 'dddd LT[etan]',\n            lastDay: '[atzo] LT[etan]',\n            lastWeek: '[aurreko] dddd LT[etan]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s barru',\n            past: 'duela %s',\n            s: 'segundo batzuk',\n            ss: '%d segundo',\n            m: 'minutu bat',\n            mm: '%d minutu',\n            h: 'ordu bat',\n            hh: '%d ordu',\n            d: 'egun bat',\n            dd: '%d egun',\n            M: 'hilabete bat',\n            MM: '%d hilabete',\n            y: 'urte bat',\n            yy: '%d urte',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '۱',\n            2: '۲',\n            3: '۳',\n            4: '۴',\n            5: '۵',\n            6: '۶',\n            7: '۷',\n            8: '۸',\n            9: '۹',\n            0: '۰',\n        },\n        numberMap = {\n            '۱': '1',\n            '۲': '2',\n            '۳': '3',\n            '۴': '4',\n            '۵': '5',\n            '۶': '6',\n            '۷': '7',\n            '۸': '8',\n            '۹': '9',\n            '۰': '0',\n        };\n\n    var fa = moment.defineLocale('fa', {\n        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n                '_'\n            ),\n        weekdays:\n            'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n                '_'\n            ),\n        weekdaysShort:\n            'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n                '_'\n            ),\n        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar: {\n            sameDay: '[امروز ساعت] LT',\n            nextDay: '[فردا ساعت] LT',\n            nextWeek: 'dddd [ساعت] LT',\n            lastDay: '[دیروز ساعت] LT',\n            lastWeek: 'dddd [پیش] [ساعت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'در %s',\n            past: '%s پیش',\n            s: 'چند ثانیه',\n            ss: '%d ثانیه',\n            m: 'یک دقیقه',\n            mm: '%d دقیقه',\n            h: 'یک ساعت',\n            hh: '%d ساعت',\n            d: 'یک روز',\n            dd: '%d روز',\n            M: 'یک ماه',\n            MM: '%d ماه',\n            y: 'یک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[۰-۹]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal: '%dم',\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersPast =\n            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n                ' '\n            ),\n        numbersFuture = [\n            'nolla',\n            'yhden',\n            'kahden',\n            'kolmen',\n            'neljän',\n            'viiden',\n            'kuuden',\n            numbersPast[7],\n            numbersPast[8],\n            numbersPast[9],\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                result = isFuture ? 'sekunnin' : 'sekuntia';\n                break;\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10\n            ? isFuture\n                ? numbersFuture[number]\n                : numbersPast[number]\n            : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n            '_'\n        ),\n        monthsShort:\n            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n                '_'\n            ),\n        weekdays:\n            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n                '_'\n            ),\n        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[ta] YYYY',\n            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l: 'D.M.YYYY',\n            ll: 'Do MMM YYYY',\n            lll: 'Do MMM YYYY, [klo] HH.mm',\n            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n        },\n        calendar: {\n            sameDay: '[tänään] [klo] LT',\n            nextDay: '[huomenna] [klo] LT',\n            nextWeek: 'dddd [klo] LT',\n            lastDay: '[eilen] [klo] LT',\n            lastWeek: '[viime] dddd[na] [klo] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s päästä',\n            past: '%s sitten',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fil = moment.defineLocale('fil', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fo = moment.defineLocale('fo', {\n        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays:\n            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n                '_'\n            ),\n        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D. MMMM, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Í dag kl.] LT',\n            nextDay: '[Í morgin kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[Í gjár kl.] LT',\n            lastWeek: '[síðstu] dddd [kl] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'um %s',\n            past: '%s síðani',\n            s: 'fá sekund',\n            ss: '%d sekundir',\n            m: 'ein minuttur',\n            mm: '%d minuttir',\n            h: 'ein tími',\n            hh: '%d tímar',\n            d: 'ein dagur',\n            dd: '%d dagar',\n            M: 'ein mánaður',\n            MM: '%d mánaðir',\n            y: 'eitt ár',\n            yy: '%d ár',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n    });\n\n    return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsStrictRegex =\n            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsShortStrictRegex =\n            /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n        monthsRegex =\n            /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsParse = [\n            /^janv/i,\n            /^févr/i,\n            /^mars/i,\n            /^avr/i,\n            /^mai/i,\n            /^juin/i,\n            /^juil/i,\n            /^août/i,\n            /^sept/i,\n            /^oct/i,\n            /^nov/i,\n            /^déc/i,\n        ];\n\n    var fr = moment.defineLocale('fr', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            w: 'une semaine',\n            ww: '%d semaines',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n    var fy = moment.defineLocale('fy', {\n        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact: true,\n        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n            '_'\n        ),\n        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oer %s',\n            past: '%s lyn',\n            s: 'in pear sekonden',\n            ss: '%d sekonden',\n            m: 'ien minút',\n            mm: '%d minuten',\n            h: 'ien oere',\n            hh: '%d oeren',\n            d: 'ien dei',\n            dd: '%d dagen',\n            M: 'ien moanne',\n            MM: '%d moannen',\n            y: 'ien jier',\n            yy: '%d jierren',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Eanáir',\n            'Feabhra',\n            'Márta',\n            'Aibreán',\n            'Bealtaine',\n            'Meitheamh',\n            'Iúil',\n            'Lúnasa',\n            'Meán Fómhair',\n            'Deireadh Fómhair',\n            'Samhain',\n            'Nollaig',\n        ],\n        monthsShort = [\n            'Ean',\n            'Feabh',\n            'Márt',\n            'Aib',\n            'Beal',\n            'Meith',\n            'Iúil',\n            'Lún',\n            'M.F.',\n            'D.F.',\n            'Samh',\n            'Noll',\n        ],\n        weekdays = [\n            'Dé Domhnaigh',\n            'Dé Luain',\n            'Dé Máirt',\n            'Dé Céadaoin',\n            'Déardaoin',\n            'Dé hAoine',\n            'Dé Sathairn',\n        ],\n        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n    var ga = moment.defineLocale('ga', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné ag] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d míonna',\n            y: 'bliain',\n            yy: '%d bliain',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Am Faoilleach',\n            'An Gearran',\n            'Am Màrt',\n            'An Giblean',\n            'An Cèitean',\n            'An t-Ògmhios',\n            'An t-Iuchar',\n            'An Lùnastal',\n            'An t-Sultain',\n            'An Dàmhair',\n            'An t-Samhain',\n            'An Dùbhlachd',\n        ],\n        monthsShort = [\n            'Faoi',\n            'Gear',\n            'Màrt',\n            'Gibl',\n            'Cèit',\n            'Ògmh',\n            'Iuch',\n            'Lùn',\n            'Sult',\n            'Dàmh',\n            'Samh',\n            'Dùbh',\n        ],\n        weekdays = [\n            'Didòmhnaich',\n            'Diluain',\n            'Dimàirt',\n            'Diciadain',\n            'Diardaoin',\n            'Dihaoine',\n            'Disathairne',\n        ],\n        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[An-diugh aig] LT',\n            nextDay: '[A-màireach aig] LT',\n            nextWeek: 'dddd [aig] LT',\n            lastDay: '[An-dè aig] LT',\n            lastWeek: 'dddd [seo chaidh] [aig] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ann an %s',\n            past: 'bho chionn %s',\n            s: 'beagan diogan',\n            ss: '%d diogan',\n            m: 'mionaid',\n            mm: '%d mionaidean',\n            h: 'uair',\n            hh: '%d uairean',\n            d: 'latha',\n            dd: '%d latha',\n            M: 'mìos',\n            MM: '%d mìosan',\n            y: 'bliadhna',\n            yy: '%d bliadhna',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var gl = moment.defineLocale('gl', {\n        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort:\n            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n            },\n            lastDay: function () {\n                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past: 'hai %s',\n            s: 'uns segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'unha hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n            m: ['एका मिणटान', 'एक मिनूट'],\n            mm: [number + ' मिणटांनी', number + ' मिणटां'],\n            h: ['एका वरान', 'एक वर'],\n            hh: [number + ' वरांनी', number + ' वरां'],\n            d: ['एका दिसान', 'एक दीस'],\n            dd: [number + ' दिसांनी', number + ' दीस'],\n            M: ['एका म्हयन्यान', 'एक म्हयनो'],\n            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n            y: ['एका वर्सान', 'एक वर्स'],\n            yy: [number + ' वर्सांनी', number + ' वर्सां'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomDeva = moment.defineLocale('gom-deva', {\n        months: {\n            standalone:\n                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n                    '_'\n                ),\n            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort:\n            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [वाजतां]',\n            LTS: 'A h:mm:ss [वाजतां]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n        },\n        calendar: {\n            sameDay: '[आयज] LT',\n            nextDay: '[फाल्यां] LT',\n            nextWeek: '[फुडलो] dddd[,] LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[फाटलो] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s आदीं',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'वेर' only applies to day of the month\n                case 'D':\n                    return number + 'वेर';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राती') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळीं') {\n                return hour;\n            } else if (meridiem === 'दनपारां') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'सांजे') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'राती';\n            } else if (hour < 12) {\n                return 'सकाळीं';\n            } else if (hour < 16) {\n                return 'दनपारां';\n            } else if (hour < 20) {\n                return 'सांजे';\n            } else {\n                return 'राती';\n            }\n        },\n    });\n\n    return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['thoddea sekondamni', 'thodde sekond'],\n            ss: [number + ' sekondamni', number + ' sekond'],\n            m: ['eka mintan', 'ek minut'],\n            mm: [number + ' mintamni', number + ' mintam'],\n            h: ['eka voran', 'ek vor'],\n            hh: [number + ' voramni', number + ' voram'],\n            d: ['eka disan', 'ek dis'],\n            dd: [number + ' disamni', number + ' dis'],\n            M: ['eka mhoinean', 'ek mhoino'],\n            MM: [number + ' mhoineamni', number + ' mhoine'],\n            y: ['eka vorsan', 'ek voros'],\n            yy: [number + ' vorsamni', number + ' vorsam'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months: {\n            standalone:\n                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n                    '_'\n                ),\n            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort:\n            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [vazta]',\n            LTS: 'A h:mm:ss [vazta]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [vazta]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n        },\n        calendar: {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Fuddlo] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fattlo] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s adim',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /rati|sokallim|donparam|sanje/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokallim') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokallim';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        },\n    });\n\n    return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '૧',\n            2: '૨',\n            3: '૩',\n            4: '૪',\n            5: '૫',\n            6: '૬',\n            7: '૭',\n            8: '૮',\n            9: '૯',\n            0: '૦',\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0',\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n            '_'\n        ),\n        monthsShort:\n            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n            '_'\n        ),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પહેલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ',\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var he = moment.defineLocale('he', {\n        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n            '_'\n        ),\n        monthsShort:\n            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [ב]MMMM YYYY',\n            LLL: 'D [ב]MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[היום ב־]LT',\n            nextDay: '[מחר ב־]LT',\n            nextWeek: 'dddd [בשעה] LT',\n            lastDay: '[אתמול ב־]LT',\n            lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'בעוד %s',\n            past: 'לפני %s',\n            s: 'מספר שניות',\n            ss: '%d שניות',\n            m: 'דקה',\n            mm: '%d דקות',\n            h: 'שעה',\n            hh: function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d: 'יום',\n            dd: function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M: 'חודש',\n            MM: function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y: 'שנה',\n            yy: function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            },\n        },\n        meridiemParse:\n            /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM: function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        },\n    });\n\n    return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        },\n        monthsParse = [\n            /^जन/i,\n            /^फ़र|फर/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सितं|सित/i,\n            /^अक्टू/i,\n            /^नव|नवं/i,\n            /^दिसं|दिस/i,\n        ],\n        shortMonthsParse = [\n            /^जन/i,\n            /^फ़र/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सित/i,\n            /^अक्टू/i,\n            /^नव/i,\n            /^दिस/i,\n        ];\n\n    var hi = moment.defineLocale('hi', {\n        months: {\n            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n                '_'\n            ),\n            standalone:\n                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm बजे',\n            LTS: 'A h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n        },\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: shortMonthsParse,\n\n        monthsRegex:\n            /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsShortRegex:\n            /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsStrictRegex:\n            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n        monthsShortStrictRegex:\n            /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[कल] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[कल] LT',\n            lastWeek: '[पिछले] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s में',\n            past: '%s पहले',\n            s: 'कुछ ही क्षण',\n            ss: '%d सेकंड',\n            m: 'एक मिनट',\n            mm: '%d मिनट',\n            h: 'एक घंटा',\n            hh: '%d घंटे',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महीने',\n            MM: '%d महीने',\n            y: 'एक वर्ष',\n            yy: '%d वर्ष',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months: {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n                '_'\n            ),\n            standalone:\n                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM YYYY',\n            LLL: 'Do MMMM YYYY H:mm',\n            LLLL: 'dddd, Do MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prošlu] [nedjelju] [u] LT';\n                    case 3:\n                        return '[prošlu] [srijedu] [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt  : https://github.com/passatgt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var weekEndings =\n        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return isFuture || withoutSuffix\n                    ? 'néhány másodperc'\n                    : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix)\n                    ? ' másodperc'\n                    : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (\n            (isFuture ? '' : '[múlt] ') +\n            '[' +\n            weekEndings[this.day()] +\n            '] LT[-kor]'\n        );\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY. MMMM D.',\n            LLL: 'YYYY. MMMM D. H:mm',\n            LLLL: 'YYYY. MMMM D., dddd H:mm',\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar: {\n            sameDay: '[ma] LT[-kor]',\n            nextDay: '[holnap] LT[-kor]',\n            nextWeek: function () {\n                return week.call(this, true);\n            },\n            lastDay: '[tegnap] LT[-kor]',\n            lastWeek: function () {\n                return week.call(this, false);\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s múlva',\n            past: '%s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months: {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n                '_'\n            ),\n            standalone:\n                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays:\n            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n                '_'\n            ),\n        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY թ.',\n            LLL: 'D MMMM YYYY թ., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n        },\n        calendar: {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s հետո',\n            past: '%s առաջ',\n            s: 'մի քանի վայրկյան',\n            ss: '%d վայրկյան',\n            m: 'րոպե',\n            mm: '%d րոպե',\n            h: 'ժամ',\n            hh: '%d ժամ',\n            d: 'օր',\n            dd: '%d օր',\n            M: 'ամիս',\n            MM: '%d ամիս',\n            y: 'տարի',\n            yy: '%d տարի',\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem: function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var id = moment.defineLocale('id', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Besok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kemarin pukul] LT',\n            lastWeek: 'dddd [lalu pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lalu',\n            s: 'beberapa detik',\n            ss: '%d detik',\n            m: 'semenit',\n            mm: '%d menit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nokkrar sekúndur'\n                    : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n                    );\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return (\n                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n                    );\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture\n                            ? 'klukkustundir'\n                            : 'klukkustundum')\n                    );\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays:\n            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n                '_'\n            ),\n        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n        },\n        calendar: {\n            sameDay: '[í dag kl.] LT',\n            nextDay: '[á morgun kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[í gær kl.] LT',\n            lastWeek: '[síðasta] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'eftir %s',\n            past: 'fyrir %s síðan',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: 'klukkustund',\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var itCh = moment.defineLocale('it-ch', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var it = moment.defineLocale('it', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return (\n                    '[Oggi a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextDay: function () {\n                return (\n                    '[Domani a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextWeek: function () {\n                return (\n                    'dddd [a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastDay: function () {\n                return (\n                    '[Ieri a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return (\n                            '[La scorsa] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                  ? ' '\n                                  : \"ll'\") +\n                            ']LT'\n                        );\n                    default:\n                        return (\n                            '[Lo scorso] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                  ? ' '\n                                  : \"ll'\") +\n                            ']LT'\n                        );\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'tra %s',\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            w: 'una settimana',\n            ww: '%d settimane',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ja = moment.defineLocale('ja', {\n        eras: [\n            {\n                since: '2019-05-01',\n                offset: 1,\n                name: '令和',\n                narrow: '㋿',\n                abbr: 'R',\n            },\n            {\n                since: '1989-01-08',\n                until: '2019-04-30',\n                offset: 1,\n                name: '平成',\n                narrow: '㍻',\n                abbr: 'H',\n            },\n            {\n                since: '1926-12-25',\n                until: '1989-01-07',\n                offset: 1,\n                name: '昭和',\n                narrow: '㍼',\n                abbr: 'S',\n            },\n            {\n                since: '1912-07-30',\n                until: '1926-12-24',\n                offset: 1,\n                name: '大正',\n                narrow: '㍽',\n                abbr: 'T',\n            },\n            {\n                since: '1873-01-01',\n                until: '1912-07-29',\n                offset: 6,\n                name: '明治',\n                narrow: '㍾',\n                abbr: 'M',\n            },\n            {\n                since: '0001-01-01',\n                until: '1873-12-31',\n                offset: 1,\n                name: '西暦',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: '紀元前',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        eraYearOrdinalRegex: /(元|\\d+)年/,\n        eraYearOrdinalParse: function (input, match) {\n            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n        },\n        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日 dddd HH:mm',\n            l: 'YYYY/MM/DD',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日(ddd) HH:mm',\n        },\n        meridiemParse: /午前|午後/i,\n        isPM: function (input) {\n            return input === '午後';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar: {\n            sameDay: '[今日] LT',\n            nextDay: '[明日] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay: '[昨日] LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}日/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'y':\n                    return number === 1 ? '元年' : number + '年';\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '数秒',\n            ss: '%d秒',\n            m: '1分',\n            mm: '%d分',\n            h: '1時間',\n            hh: '%d時間',\n            d: '1日',\n            dd: '%d日',\n            M: '1ヶ月',\n            MM: '%dヶ月',\n            y: '1年',\n            yy: '%d年',\n        },\n    });\n\n    return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var jv = moment.defineLocale('jv', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar: {\n            sameDay: '[Dinten puniko pukul] LT',\n            nextDay: '[Mbenjang pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kala wingi pukul] LT',\n            lastWeek: 'dddd [kepengker pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'wonten ing %s',\n            past: '%s ingkang kepengker',\n            s: 'sawetawis detik',\n            ss: '%d detik',\n            m: 'setunggal menit',\n            mm: '%d menit',\n            h: 'setunggal jam',\n            hh: '%d jam',\n            d: 'sedinten',\n            dd: '%d dinten',\n            M: 'sewulan',\n            MM: '%d wulan',\n            y: 'setaun',\n            yy: '%d taun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ka = moment.defineLocale('ka', {\n        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n            '_'\n        ),\n        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays: {\n            standalone:\n                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n                    '_'\n                ),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n                '_'\n            ),\n            isFormat: /(წინა|შემდეგ)/,\n        },\n        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[დღეს] LT[-ზე]',\n            nextDay: '[ხვალ] LT[-ზე]',\n            lastDay: '[გუშინ] LT[-ზე]',\n            nextWeek: '[შემდეგ] dddd LT[-ზე]',\n            lastWeek: '[წინა] dddd LT-ზე',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return s.replace(\n                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n                    function ($0, $1, $2) {\n                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n                    }\n                );\n            },\n            past: function (s) {\n                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if (/წელი/.test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n                return s;\n            },\n            s: 'რამდენიმე წამი',\n            ss: '%d წამი',\n            m: 'წუთი',\n            mm: '%d წუთი',\n            h: 'საათი',\n            hh: '%d საათი',\n            d: 'დღე',\n            dd: '%d დღე',\n            M: 'თვე',\n            MM: '%d თვე',\n            y: 'წელი',\n            yy: '%d წელი',\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal: function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if (\n                number < 20 ||\n                (number <= 100 && number % 20 === 0) ||\n                number % 100 === 0\n            ) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week: {\n            dow: 1,\n            doy: 7,\n        },\n    });\n\n    return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші',\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n            '_'\n        ),\n        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n            '_'\n        ),\n        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгін сағат] LT',\n            nextDay: '[Ертең сағат] LT',\n            nextWeek: 'dddd [сағат] LT',\n            lastDay: '[Кеше сағат] LT',\n            lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ішінде',\n            past: '%s бұрын',\n            s: 'бірнеше секунд',\n            ss: '%d секунд',\n            m: 'бір минут',\n            mm: '%d минут',\n            h: 'бір сағат',\n            hh: '%d сағат',\n            d: 'бір күн',\n            dd: '%d күн',\n            M: 'бір ай',\n            MM: '%d ай',\n            y: 'бір жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '១',\n            2: '២',\n            3: '៣',\n            4: '៤',\n            5: '៥',\n            6: '៦',\n            7: '៧',\n            8: '៨',\n            9: '៩',\n            0: '០',\n        },\n        numberMap = {\n            '១': '1',\n            '២': '2',\n            '៣': '3',\n            '៤': '4',\n            '៥': '5',\n            '៦': '6',\n            '៧': '7',\n            '៨': '8',\n            '៩': '9',\n            '០': '0',\n        };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort:\n            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n                '_'\n            ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ',\n        },\n        dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n        ordinal: 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '೧',\n            2: '೨',\n            3: '೩',\n            4: '೪',\n            5: '೫',\n            6: '೬',\n            7: '೭',\n            8: '೮',\n            9: '೯',\n            0: '೦',\n        },\n        numberMap = {\n            '೧': '1',\n            '೨': '2',\n            '೩': '3',\n            '೪': '4',\n            '೫': '5',\n            '೬': '6',\n            '೭': '7',\n            '೮': '8',\n            '೯': '9',\n            '೦': '0',\n        };\n\n    var kn = moment.defineLocale('kn', {\n        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n            '_'\n        ),\n        monthsShort:\n            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[ಇಂದು] LT',\n            nextDay: '[ನಾಳೆ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ನಿನ್ನೆ] LT',\n            lastWeek: '[ಕೊನೆಯ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ನಂತರ',\n            past: '%s ಹಿಂದೆ',\n            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss: '%d ಸೆಕೆಂಡುಗಳು',\n            m: 'ಒಂದು ನಿಮಿಷ',\n            mm: '%d ನಿಮಿಷ',\n            h: 'ಒಂದು ಗಂಟೆ',\n            hh: '%d ಗಂಟೆ',\n            d: 'ಒಂದು ದಿನ',\n            dd: '%d ದಿನ',\n            M: 'ಒಂದು ತಿಂಗಳು',\n            MM: '%d ತಿಂಗಳು',\n            y: 'ಒಂದು ವರ್ಷ',\n            yy: '%d ವರ್ಷ',\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal: function (number) {\n            return number + 'ನೇ';\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ko = moment.defineLocale('ko', {\n        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n            '_'\n        ),\n        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY년 MMMM D일',\n            LLL: 'YYYY년 MMMM D일 A h:mm',\n            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n            l: 'YYYY.MM.DD.',\n            ll: 'YYYY년 MMMM D일',\n            lll: 'YYYY년 MMMM D일 A h:mm',\n            llll: 'YYYY년 MMMM D일 dddd A h:mm',\n        },\n        calendar: {\n            sameDay: '오늘 LT',\n            nextDay: '내일 LT',\n            nextWeek: 'dddd LT',\n            lastDay: '어제 LT',\n            lastWeek: '지난주 dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s 후',\n            past: '%s 전',\n            s: '몇 초',\n            ss: '%d초',\n            m: '1분',\n            mm: '%d분',\n            h: '한 시간',\n            hh: '%d시간',\n            d: '하루',\n            dd: '%d일',\n            M: '한 달',\n            MM: '%d달',\n            y: '일 년',\n            yy: '%d년',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse: /오전|오후/,\n        isPM: function (token) {\n            return token === '오후';\n        },\n        meridiem: function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        },\n    });\n\n    return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(num, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['çend sanîye', 'çend sanîyeyan'],\n            ss: [num + ' sanîye', num + ' sanîyeyan'],\n            m: ['deqîqeyek', 'deqîqeyekê'],\n            mm: [num + ' deqîqe', num + ' deqîqeyan'],\n            h: ['saetek', 'saetekê'],\n            hh: [num + ' saet', num + ' saetan'],\n            d: ['rojek', 'rojekê'],\n            dd: [num + ' roj', num + ' rojan'],\n            w: ['hefteyek', 'hefteyekê'],\n            ww: [num + ' hefte', num + ' hefteyan'],\n            M: ['mehek', 'mehekê'],\n            MM: [num + ' meh', num + ' mehan'],\n            y: ['salek', 'salekê'],\n            yy: [num + ' sal', num + ' salan'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    // function obliqueNumSuffix(num) {\n    //     if(num.includes(':'))\n    //         num = parseInt(num.split(':')[0]);\n    //     else\n    //         num = parseInt(num);\n    //     return num == 0 || num % 10 == 1 ? 'ê'\n    //                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n    // }\n    function ezafeNumSuffix(num) {\n        num = '' + num;\n        var l = num.substring(num.length - 1),\n            ll = num.length > 1 ? num.substring(num.length - 2) : '';\n        if (\n            !(ll == 12 || ll == 13) &&\n            (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n        )\n            return 'yê';\n        return 'ê';\n    }\n\n    var kuKmr = moment.defineLocale('ku-kmr', {\n        // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n        // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n        // But the names below are more well known and handy\n        months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n            '_'\n        ),\n        monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n        weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n        weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'bn' : 'BN';\n            } else {\n                return isLower ? 'pn' : 'PN';\n            }\n        },\n        meridiemParse: /bn|BN|pn|PN/,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[a] YYYY[an]',\n            LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n            LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n            ll: 'Do MMM[.] YYYY[an]',\n            lll: 'Do MMM[.] YYYY[an] HH:mm',\n            llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Îro di saet] LT [de]',\n            nextDay: '[Sibê di saet] LT [de]',\n            nextWeek: 'dddd [di saet] LT [de]',\n            lastDay: '[Duh di saet] LT [de]',\n            lastWeek: 'dddd[a borî di saet] LT [de]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'di %s de',\n            past: 'berî %s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n        ordinal: function (num, period) {\n            var p = period.toLowerCase();\n            if (p.includes('w') || p.includes('m')) return num + '.';\n\n            return num + ezafeNumSuffix(num);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return kuKmr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        months = [\n            'کانونی دووەم',\n            'شوبات',\n            'ئازار',\n            'نیسان',\n            'ئایار',\n            'حوزەیران',\n            'تەمموز',\n            'ئاب',\n            'ئەیلوول',\n            'تشرینی یەكەم',\n            'تشرینی دووەم',\n            'كانونی یەکەم',\n        ];\n\n    var ku = moment.defineLocale('ku', {\n        months: months,\n        monthsShort: months,\n        weekdays:\n            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n                '_'\n            ),\n        weekdaysShort:\n            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar: {\n            sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay: '[به‌یانی كاتژمێر] LT',\n            nextWeek: 'dddd [كاتژمێر] LT',\n            lastDay: '[دوێنێ كاتژمێر] LT',\n            lastWeek: 'dddd [كاتژمێر] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'له‌ %s',\n            past: '%s',\n            s: 'چه‌ند چركه‌یه‌ك',\n            ss: 'چركه‌ %d',\n            m: 'یه‌ك خوله‌ك',\n            mm: '%d خوله‌ك',\n            h: 'یه‌ك كاتژمێر',\n            hh: '%d كاتژمێر',\n            d: 'یه‌ك ڕۆژ',\n            dd: '%d ڕۆژ',\n            M: 'یه‌ك مانگ',\n            MM: '%d مانگ',\n            y: 'یه‌ك ساڵ',\n            yy: '%d ساڵ',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү',\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n            '_'\n        ),\n        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n            '_'\n        ),\n        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгүн саат] LT',\n            nextDay: '[Эртең саат] LT',\n            nextWeek: 'dddd [саат] LT',\n            lastDay: '[Кечээ саат] LT',\n            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ичинде',\n            past: '%s мурун',\n            s: 'бирнече секунд',\n            ss: '%d секунд',\n            m: 'бир мүнөт',\n            mm: '%d мүнөт',\n            h: 'бир саат',\n            hh: '%d саат',\n            d: 'бир күн',\n            dd: '%d күн',\n            M: 'бир ай',\n            MM: '%d ай',\n            y: 'бир жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eng Minutt', 'enger Minutt'],\n            h: ['eng Stonn', 'enger Stonn'],\n            d: ['een Dag', 'engem Dag'],\n            M: ['ee Mount', 'engem Mount'],\n            y: ['ee Joer', 'engem Joer'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10,\n                firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            },\n        },\n        relativeTime: {\n            future: processFutureTime,\n            past: processPastTime,\n            s: 'e puer Sekonnen',\n            ss: '%d Sekonnen',\n            m: processRelativeTime,\n            mm: '%d Minutten',\n            h: processRelativeTime,\n            hh: '%d Stonnen',\n            d: processRelativeTime,\n            dd: '%d Deeg',\n            M: processRelativeTime,\n            MM: '%d Méint',\n            y: processRelativeTime,\n            yy: '%d Joer',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var lo = moment.defineLocale('lo', {\n        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n                '_'\n            ),\n        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar: {\n            sameDay: '[ມື້ນີ້ເວລາ] LT',\n            nextDay: '[ມື້ອື່ນເວລາ] LT',\n            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ອີກ %s',\n            past: '%sຜ່ານມາ',\n            s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss: '%d ວິນາທີ',\n            m: '1 ນາທີ',\n            mm: '%d ນາທີ',\n            h: '1 ຊົ່ວໂມງ',\n            hh: '%d ຊົ່ວໂມງ',\n            d: '1 ມື້',\n            dd: '%d ມື້',\n            M: '1 ເດືອນ',\n            MM: '%d ເດືອນ',\n            y: '1 ປີ',\n            yy: '%d ປີ',\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal: function (number) {\n            return 'ທີ່' + number;\n        },\n    });\n\n    return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundė_sekundžių_sekundes',\n        m: 'minutė_minutės_minutę',\n        mm: 'minutės_minučių_minutes',\n        h: 'valanda_valandos_valandą',\n        hh: 'valandos_valandų_valandas',\n        d: 'diena_dienos_dieną',\n        dd: 'dienos_dienų_dienas',\n        M: 'mėnuo_mėnesio_mėnesį',\n        MM: 'mėnesiai_mėnesių_mėnesius',\n        y: 'metai_metų_metus',\n        yy: 'metai_metų_metus',\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix\n            ? forms(key)[0]\n            : isFuture\n              ? forms(key)[1]\n              : forms(key)[2];\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return (\n                result + translateSingular(number, withoutSuffix, key[0], isFuture)\n            );\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months: {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n                '_'\n            ),\n            standalone:\n                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n                    '_'\n                ),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n        },\n        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays: {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n                '_'\n            ),\n            standalone:\n                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n                    '_'\n                ),\n            isFormat: /dddd HH:mm/,\n        },\n        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY [m.] MMMM D [d.]',\n            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l: 'YYYY-MM-DD',\n            ll: 'YYYY [m.] MMMM D [d.]',\n            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n        },\n        calendar: {\n            sameDay: '[Šiandien] LT',\n            nextDay: '[Rytoj] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[Vakar] LT',\n            lastWeek: '[Praėjusį] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'po %s',\n            past: 'prieš %s',\n            s: translateSeconds,\n            ss: translate,\n            m: translateSingular,\n            mm: translate,\n            h: translateSingular,\n            hh: translate,\n            d: translateSingular,\n            dd: translate,\n            M: translateSingular,\n            MM: translate,\n            y: translateSingular,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal: function (number) {\n            return number + '-oji';\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        h: 'stundas_stundām_stunda_stundas'.split('_'),\n        hh: 'stundas_stundām_stunda_stundas'.split('_'),\n        d: 'dienas_dienām_diena_dienas'.split('_'),\n        dd: 'dienas_dienām_diena_dienas'.split('_'),\n        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        y: 'gada_gadiem_gads_gadi'.split('_'),\n        yy: 'gada_gadiem_gads_gadi'.split('_'),\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays:\n            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n                '_'\n            ),\n        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY.',\n            LL: 'YYYY. [gada] D. MMMM',\n            LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n        },\n        calendar: {\n            sameDay: '[Šodien pulksten] LT',\n            nextDay: '[Rīt pulksten] LT',\n            nextWeek: 'dddd [pulksten] LT',\n            lastDay: '[Vakar pulksten] LT',\n            lastWeek: '[Pagājušā] dddd [pulksten] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'pēc %s',\n            past: 'pirms %s',\n            s: relativeSeconds,\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithSingular,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithSingular,\n            hh: relativeTimeWithPlural,\n            d: relativeTimeWithSingular,\n            dd: relativeTimeWithPlural,\n            M: relativeTimeWithSingular,\n            MM: relativeTimeWithPlural,\n            y: relativeTimeWithSingular,\n            yy: relativeTimeWithPlural,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                  ? wordKey[1]\n                  : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mjesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n            '_'\n        ),\n        monthsShort:\n            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n                '_'\n            ),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mk = moment.defineLocale('mk', {\n        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Денес во] LT',\n            nextDay: '[Утре во] LT',\n            nextWeek: '[Во] dddd [во] LT',\n            lastDay: '[Вчера во] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пред %s',\n            s: 'неколку секунди',\n            ss: '%d секунди',\n            m: 'една минута',\n            mm: '%d минути',\n            h: 'еден час',\n            hh: '%d часа',\n            d: 'еден ден',\n            dd: '%d дена',\n            M: 'еден месец',\n            MM: '%d месеци',\n            y: 'една година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ml = moment.defineLocale('ml', {\n        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n                '_'\n            ),\n        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm -നു',\n            LTS: 'A h:mm:ss -നു',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm -നു',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n        },\n        calendar: {\n            sameDay: '[ഇന്ന്] LT',\n            nextDay: '[നാളെ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ഇന്നലെ] LT',\n            lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s കഴിഞ്ഞ്',\n            past: '%s മുൻപ്',\n            s: 'അൽപ നിമിഷങ്ങൾ',\n            ss: '%d സെക്കൻഡ്',\n            m: 'ഒരു മിനിറ്റ്',\n            mm: '%d മിനിറ്റ്',\n            h: 'ഒരു മണിക്കൂർ',\n            hh: '%d മണിക്കൂർ',\n            d: 'ഒരു ദിവസം',\n            dd: '%d ദിവസം',\n            M: 'ഒരു മാസം',\n            MM: '%d മാസം',\n            y: 'ഒരു വർഷം',\n            yy: '%d വർഷം',\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'രാത്രി' && hour >= 4) ||\n                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                meridiem === 'വൈകുന്നേരം'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        },\n    });\n\n    return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n            '_'\n        ),\n        monthsShort:\n            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY оны MMMMын D',\n            LLL: 'YYYY оны MMMMын D HH:mm',\n            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM: function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar: {\n            sameDay: '[Өнөөдөр] LT',\n            nextDay: '[Маргааш] LT',\n            nextWeek: '[Ирэх] dddd LT',\n            lastDay: '[Өчигдөр] LT',\n            lastWeek: '[Өнгөрсөн] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s дараа',\n            past: '%s өмнө',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        },\n    });\n\n    return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंद';\n                    break;\n                case 'ss':\n                    output = '%d सेकंद';\n                    break;\n                case 'm':\n                    output = 'एक मिनिट';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटे';\n                    break;\n                case 'h':\n                    output = 'एक तास';\n                    break;\n                case 'hh':\n                    output = '%d तास';\n                    break;\n                case 'd':\n                    output = 'एक दिवस';\n                    break;\n                case 'dd':\n                    output = '%d दिवस';\n                    break;\n                case 'M':\n                    output = 'एक महिना';\n                    break;\n                case 'MM':\n                    output = '%d महिने';\n                    break;\n                case 'y':\n                    output = 'एक वर्ष';\n                    break;\n                case 'yy':\n                    output = '%d वर्षे';\n                    break;\n            }\n        } else {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंदां';\n                    break;\n                case 'ss':\n                    output = '%d सेकंदां';\n                    break;\n                case 'm':\n                    output = 'एका मिनिटा';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटां';\n                    break;\n                case 'h':\n                    output = 'एका तासा';\n                    break;\n                case 'hh':\n                    output = '%d तासां';\n                    break;\n                case 'd':\n                    output = 'एका दिवसा';\n                    break;\n                case 'dd':\n                    output = '%d दिवसां';\n                    break;\n                case 'M':\n                    output = 'एका महिन्या';\n                    break;\n                case 'MM':\n                    output = '%d महिन्यां';\n                    break;\n                case 'y':\n                    output = 'एका वर्षा';\n                    break;\n                case 'yy':\n                    output = '%d वर्षां';\n                    break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n            '_'\n        ),\n        monthsShort:\n            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm वाजता',\n            LTS: 'A h:mm:ss वाजता',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm वाजता',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[उद्या] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr,\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n                return hour;\n            } else if (\n                meridiem === 'दुपारी' ||\n                meridiem === 'सायंकाळी' ||\n                meridiem === 'रात्री'\n            ) {\n                return hour >= 12 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour >= 0 && hour < 6) {\n                return 'पहाटे';\n            } else if (hour < 12) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var msMy = moment.defineLocale('ms-my', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ms = moment.defineLocale('ms', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mt = moment.defineLocale('mt', {\n        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays:\n            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n                '_'\n            ),\n        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Illum fil-]LT',\n            nextDay: '[Għada fil-]LT',\n            nextWeek: 'dddd [fil-]LT',\n            lastDay: '[Il-bieraħ fil-]LT',\n            lastWeek: 'dddd [li għadda] [fil-]LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'f’ %s',\n            past: '%s ilu',\n            s: 'ftit sekondi',\n            ss: '%d sekondi',\n            m: 'minuta',\n            mm: '%d minuti',\n            h: 'siegħa',\n            hh: '%d siegħat',\n            d: 'ġurnata',\n            dd: '%d ġranet',\n            M: 'xahar',\n            MM: '%d xhur',\n            y: 'sena',\n            yy: '%d sni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '၁',\n            2: '၂',\n            3: '၃',\n            4: '၄',\n            5: '၅',\n            6: '၆',\n            7: '၇',\n            8: '၈',\n            9: '၉',\n            0: '၀',\n        },\n        numberMap = {\n            '၁': '1',\n            '၂': '2',\n            '၃': '3',\n            '၄': '4',\n            '၅': '5',\n            '၆': '6',\n            '၇': '7',\n            '၈': '8',\n            '၉': '9',\n            '၀': '0',\n        };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n            '_'\n        ),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n            '_'\n        ),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss: '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်',\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//!           Sigurd Gartmann : https://github.com/sigurdga\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nb = moment.defineLocale('nb', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'noen sekunder',\n            ss: '%d sekunder',\n            m: 'ett minutt',\n            mm: '%d minutter',\n            h: 'én time',\n            hh: '%d timer',\n            d: 'én dag',\n            dd: '%d dager',\n            w: 'én uke',\n            ww: '%d uker',\n            M: 'én måned',\n            MM: '%d måneder',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    var ne = moment.defineLocale('ne', {\n        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n            '_'\n        ),\n        monthsShort:\n            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n            '_'\n        ),\n        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'Aको h:mm बजे',\n            LTS: 'Aको h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[भोलि] LT',\n            nextWeek: '[आउँदो] dddd[,] LT',\n            lastDay: '[हिजो] LT',\n            lastWeek: '[गएको] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमा',\n            past: '%s अगाडि',\n            s: 'केही क्षण',\n            ss: '%d सेकेण्ड',\n            m: 'एक मिनेट',\n            mm: '%d मिनेट',\n            h: 'एक घण्टा',\n            hh: '%d घण्टा',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महिना',\n            MM: '%d महिना',\n            y: 'एक बर्ष',\n            yy: '%d बर्ष',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^(maart|mrt\\.?)$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex =\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex:\n            /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays:\n            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^(maart|mrt\\.?)$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex =\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex:\n            /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays:\n            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            w: 'één week',\n            ww: '%d weken',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nn = moment.defineLocale('nn', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s sidan',\n            s: 'nokre sekund',\n            ss: '%d sekund',\n            m: 'eit minutt',\n            mm: '%d minutt',\n            h: 'ein time',\n            hh: '%d timar',\n            d: 'ein dag',\n            dd: '%d dagar',\n            w: 'ei veke',\n            ww: '%d veker',\n            M: 'ein månad',\n            MM: '%d månader',\n            y: 'eit år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ocLnc = moment.defineLocale('oc-lnc', {\n        months: {\n            standalone:\n                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n                    '_'\n                ),\n            format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort:\n            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: '[uèi a] LT',\n            nextDay: '[deman a] LT',\n            nextWeek: 'dddd [a] LT',\n            lastDay: '[ièr a] LT',\n            lastWeek: 'dddd [passat a] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'unas segondas',\n            ss: '%d segondas',\n            m: 'una minuta',\n            mm: '%d minutas',\n            h: 'una ora',\n            hh: '%d oras',\n            d: 'un jorn',\n            dd: '%d jorns',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                      ? 'n'\n                      : number === 3\n                        ? 'r'\n                        : number === 4\n                          ? 't'\n                          : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4,\n        },\n    });\n\n    return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '੧',\n            2: '੨',\n            3: '੩',\n            4: '੪',\n            5: '੫',\n            6: '੬',\n            7: '੭',\n            8: '੮',\n            9: '੯',\n            0: '੦',\n        },\n        numberMap = {\n            '੧': '1',\n            '੨': '2',\n            '੩': '3',\n            '੪': '4',\n            '੫': '5',\n            '੬': '6',\n            '੭': '7',\n            '੮': '8',\n            '੯': '9',\n            '੦': '0',\n        };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n                '_'\n            ),\n        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm ਵਜੇ',\n            LTS: 'A h:mm:ss ਵਜੇ',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n        },\n        calendar: {\n            sameDay: '[ਅਜ] LT',\n            nextDay: '[ਕਲ] LT',\n            nextWeek: '[ਅਗਲਾ] dddd, LT',\n            lastDay: '[ਕਲ] LT',\n            lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ਵਿੱਚ',\n            past: '%s ਪਿਛਲੇ',\n            s: 'ਕੁਝ ਸਕਿੰਟ',\n            ss: '%d ਸਕਿੰਟ',\n            m: 'ਇਕ ਮਿੰਟ',\n            mm: '%d ਮਿੰਟ',\n            h: 'ਇੱਕ ਘੰਟਾ',\n            hh: '%d ਘੰਟੇ',\n            d: 'ਇੱਕ ਦਿਨ',\n            dd: '%d ਦਿਨ',\n            M: 'ਇੱਕ ਮਹੀਨਾ',\n            MM: '%d ਮਹੀਨੇ',\n            y: 'ਇੱਕ ਸਾਲ',\n            yy: '%d ਸਾਲ',\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsNominative =\n            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n                '_'\n            ),\n        monthsSubjective =\n            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n                '_'\n            ),\n        monthsParse = [\n            /^sty/i,\n            /^lut/i,\n            /^mar/i,\n            /^kwi/i,\n            /^maj/i,\n            /^cze/i,\n            /^lip/i,\n            /^sie/i,\n            /^wrz/i,\n            /^paź/i,\n            /^lis/i,\n            /^gru/i,\n        ];\n    function plural(n) {\n        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix ? 'godzina' : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'ww':\n                return result + (plural(number) ? 'tygodnie' : 'tygodni');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays:\n            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: '%s temu',\n            s: 'kilka sekund',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: '1 dzień',\n            dd: '%d dni',\n            w: 'tydzień',\n            ww: translate,\n            M: 'miesiąc',\n            MM: translate,\n            y: 'rok',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays:\n            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n                '_'\n            ),\n        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'poucos segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        invalidDate: 'Data inválida',\n    });\n\n    return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pt = moment.defineLocale('pt', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays:\n            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n                '_'\n            ),\n        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            w: 'uma semana',\n            ww: '%d semanas',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                ss: 'secunde',\n                mm: 'minute',\n                hh: 'ore',\n                dd: 'zile',\n                ww: 'săptămâni',\n                MM: 'luni',\n                yy: 'ani',\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n            '_'\n        ),\n        monthsShort:\n            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'peste %s',\n            past: '%s în urmă',\n            s: 'câteva secunde',\n            ss: relativeTimeWithPlural,\n            m: 'un minut',\n            mm: relativeTimeWithPlural,\n            h: 'o oră',\n            hh: relativeTimeWithPlural,\n            d: 'o zi',\n            dd: relativeTimeWithPlural,\n            w: 'o săptămână',\n            ww: relativeTimeWithPlural,\n            M: 'o lună',\n            MM: relativeTimeWithPlural,\n            y: 'un an',\n            yy: relativeTimeWithPlural,\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n              ? forms[1]\n              : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            hh: 'час_часа_часов',\n            dd: 'день_дня_дней',\n            ww: 'неделя_недели_недель',\n            MM: 'месяц_месяца_месяцев',\n            yy: 'год_года_лет',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [\n        /^янв/i,\n        /^фев/i,\n        /^мар/i,\n        /^апр/i,\n        /^ма[йя]/i,\n        /^июн/i,\n        /^июл/i,\n        /^авг/i,\n        /^сен/i,\n        /^окт/i,\n        /^ноя/i,\n        /^дек/i,\n    ];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months: {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n                '_'\n            ),\n            standalone:\n                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n                    '_'\n                ),\n        },\n        monthsShort: {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n            standalone:\n                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n                    '_'\n                ),\n        },\n        weekdays: {\n            standalone:\n                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n                    '_'\n                ),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n        },\n        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex:\n            /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex:\n            /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex:\n            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соответствует только сокращённым формам\n        monthsShortStrictRegex:\n            /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., H:mm',\n            LLLL: 'dddd, D MMMM YYYY г., H:mm',\n        },\n        calendar: {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'через %s',\n            past: '%s назад',\n            s: 'несколько секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'час',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            w: 'неделя',\n            ww: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM: function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوري',\n            'فيبروري',\n            'مارچ',\n            'اپريل',\n            'مئي',\n            'جون',\n            'جولاءِ',\n            'آگسٽ',\n            'سيپٽمبر',\n            'آڪٽوبر',\n            'نومبر',\n            'ڊسمبر',\n        ],\n        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n    var sd = moment.defineLocale('sd', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[اڄ] LT',\n            nextDay: '[سڀاڻي] LT',\n            nextWeek: 'dddd [اڳين هفتي تي] LT',\n            lastDay: '[ڪالهه] LT',\n            lastWeek: '[گزريل هفتي] dddd [تي] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s پوء',\n            past: '%s اڳ',\n            s: 'چند سيڪنڊ',\n            ss: '%d سيڪنڊ',\n            m: 'هڪ منٽ',\n            mm: '%d منٽ',\n            h: 'هڪ ڪلاڪ',\n            hh: '%d ڪلاڪ',\n            d: 'هڪ ڏينهن',\n            dd: '%d ڏينهن',\n            M: 'هڪ مهينو',\n            MM: '%d مهينا',\n            y: 'هڪ سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var se = moment.defineLocale('se', {\n        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n            '_'\n        ),\n        monthsShort:\n            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n        weekdays:\n            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n                '_'\n            ),\n        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'MMMM D. [b.] YYYY',\n            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s geažes',\n            past: 'maŋit %s',\n            s: 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m: 'okta minuhta',\n            mm: '%d minuhtat',\n            h: 'okta diimmu',\n            hh: '%d diimmut',\n            d: 'okta beaivi',\n            dd: '%d beaivvit',\n            M: 'okta mánnu',\n            MM: '%d mánut',\n            y: 'okta jahki',\n            yy: '%d jagit',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n            '_'\n        ),\n        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n            '_'\n        ),\n        weekdays:\n            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n                '_'\n            ),\n        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'a h:mm',\n            LTS: 'a h:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY MMMM D',\n            LLL: 'YYYY MMMM D, a h:mm',\n            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n        },\n        calendar: {\n            sameDay: '[අද] LT[ට]',\n            nextDay: '[හෙට] LT[ට]',\n            nextWeek: 'dddd LT[ට]',\n            lastDay: '[ඊයේ] LT[ට]',\n            lastWeek: '[පසුගිය] dddd LT[ට]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sකින්',\n            past: '%sකට පෙර',\n            s: 'තත්පර කිහිපය',\n            ss: 'තත්පර %d',\n            m: 'මිනිත්තුව',\n            mm: 'මිනිත්තු %d',\n            h: 'පැය',\n            hh: 'පැය %d',\n            d: 'දිනය',\n            dd: 'දින %d',\n            M: 'මාසය',\n            MM: 'මාස %d',\n            y: 'වසර',\n            yy: 'වසර %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal: function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM: function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        },\n    });\n\n    return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months =\n            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n                '_'\n            ),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return n > 1 && n < 5;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months: months,\n        monthsShort: monthsShort,\n        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pred %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nekaj sekund'\n                    : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD. MM. YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danes ob] LT',\n            nextDay: '[jutri ob] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay: '[včeraj ob] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'čez %s',\n            past: 'pred %s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sq = moment.defineLocale('sq', {\n        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n            '_'\n        ),\n        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Sot në] LT',\n            nextDay: '[Nesër në] LT',\n            nextWeek: 'dddd [në] LT',\n            lastDay: '[Dje në] LT',\n            lastWeek: 'dddd [e kaluar në] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'në %s',\n            past: '%s më parë',\n            s: 'disa sekonda',\n            ss: '%d sekonda',\n            m: 'një minutë',\n            mm: '%d minuta',\n            h: 'një orë',\n            hh: '%d orë',\n            d: 'një ditë',\n            dd: '%d ditë',\n            M: 'një muaj',\n            MM: '%d muaj',\n            y: 'një vit',\n            yy: '%d vite',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једног минута'],\n            mm: ['минут', 'минута', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            d: ['један дан', 'једног дана'],\n            dd: ['дан', 'дана', 'дана'],\n            M: ['један месец', 'једног месеца'],\n            MM: ['месец', 'месеца', 'месеци'],\n            y: ['једну годину', 'једне године'],\n            yy: ['годину', 'године', 'година'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            if (\n                number % 10 >= 1 &&\n                number % 10 <= 4 &&\n                (number % 100 < 10 || number % 100 >= 20)\n            ) {\n                return number % 10 === 1 ? wordKey[0] : wordKey[1];\n            }\n            return wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key, isFuture) {\n            var wordKey = translator.words[key],\n                word;\n\n            if (key.length === 1) {\n                // Nominativ\n                if (key === 'y' && withoutSuffix) return 'једна година';\n                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n            }\n\n            word = translator.correctGrammaticalCase(number, wordKey);\n            // Nominativ\n            if (key === 'yy' && withoutSuffix && word === 'годину') {\n                return number + ' година';\n            }\n\n            return number + ' ' + word;\n        },\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n            '_'\n        ),\n        monthsShort:\n            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay: '[јуче у] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пре %s',\n            s: 'неколико секунди',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: translator.translate,\n            dd: translator.translate,\n            M: translator.translate,\n            MM: translator.translate,\n            y: translator.translate,\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            d: ['jedan dan', 'jednog dana'],\n            dd: ['dan', 'dana', 'dana'],\n            M: ['jedan mesec', 'jednog meseca'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            y: ['jednu godinu', 'jedne godine'],\n            yy: ['godinu', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            if (\n                number % 10 >= 1 &&\n                number % 10 <= 4 &&\n                (number % 100 < 10 || number % 100 >= 20)\n            ) {\n                return number % 10 === 1 ? wordKey[0] : wordKey[1];\n            }\n            return wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key, isFuture) {\n            var wordKey = translator.words[key],\n                word;\n\n            if (key.length === 1) {\n                // Nominativ\n                if (key === 'y' && withoutSuffix) return 'jedna godina';\n                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n            }\n\n            word = translator.correctGrammaticalCase(number, wordKey);\n            // Nominativ\n            if (key === 'yy' && withoutSuffix && word === 'godinu') {\n                return number + ' godina';\n            }\n\n            return number + ' ' + word;\n        },\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pre %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: translator.translate,\n            dd: translator.translate,\n            M: translator.translate,\n            MM: translator.translate,\n            y: translator.translate,\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ss = moment.defineLocale('ss', {\n        months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n            '_'\n        ),\n        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays:\n            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n                '_'\n            ),\n        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Namuhla nga] LT',\n            nextDay: '[Kusasa nga] LT',\n            nextWeek: 'dddd [nga] LT',\n            lastDay: '[Itolo nga] LT',\n            lastWeek: 'dddd [leliphelile] [nga] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'nga %s',\n            past: 'wenteka nga %s',\n            s: 'emizuzwana lomcane',\n            ss: '%d mzuzwana',\n            m: 'umzuzu',\n            mm: '%d emizuzu',\n            h: 'lihora',\n            hh: '%d emahora',\n            d: 'lilanga',\n            dd: '%d emalanga',\n            M: 'inyanga',\n            MM: '%d tinyanga',\n            y: 'umnyaka',\n            yy: '%d iminyaka',\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: '%d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sv = moment.defineLocale('sv', {\n        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: 'för %s sedan',\n            s: 'några sekunder',\n            ss: '%d sekunder',\n            m: 'en minut',\n            mm: '%d minuter',\n            h: 'en timme',\n            hh: '%d timmar',\n            d: 'en dag',\n            dd: '%d dagar',\n            M: 'en månad',\n            MM: '%d månader',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? ':e'\n                        : b === 1\n                          ? ':a'\n                          : b === 2\n                            ? ':a'\n                            : b === 3\n                              ? ':e'\n                              : ':e';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sw = moment.defineLocale('sw', {\n        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays:\n            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n                '_'\n            ),\n        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'hh:mm A',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[leo saa] LT',\n            nextDay: '[kesho saa] LT',\n            nextWeek: '[wiki ijayo] dddd [saat] LT',\n            lastDay: '[jana] LT',\n            lastWeek: '[wiki iliyopita] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s baadaye',\n            past: 'tokea %s',\n            s: 'hivi punde',\n            ss: 'sekunde %d',\n            m: 'dakika moja',\n            mm: 'dakika %d',\n            h: 'saa limoja',\n            hh: 'masaa %d',\n            d: 'siku moja',\n            dd: 'siku %d',\n            M: 'mwezi mmoja',\n            MM: 'miezi %d',\n            y: 'mwaka mmoja',\n            yy: 'miaka %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '௧',\n            2: '௨',\n            3: '௩',\n            4: '௪',\n            5: '௫',\n            6: '௬',\n            7: '௭',\n            8: '௮',\n            9: '௯',\n            0: '௦',\n        },\n        numberMap = {\n            '௧': '1',\n            '௨': '2',\n            '௩': '3',\n            '௪': '4',\n            '௫': '5',\n            '௬': '6',\n            '௭': '7',\n            '௮': '8',\n            '௯': '9',\n            '௦': '0',\n        };\n\n    var ta = moment.defineLocale('ta', {\n        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        monthsShort:\n            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n                '_'\n            ),\n        weekdays:\n            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n                '_'\n            ),\n        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n            '_'\n        ),\n        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, HH:mm',\n            LLLL: 'dddd, D MMMM YYYY, HH:mm',\n        },\n        calendar: {\n            sameDay: '[இன்று] LT',\n            nextDay: '[நாளை] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[நேற்று] LT',\n            lastWeek: '[கடந்த வாரம்] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s இல்',\n            past: '%s முன்',\n            s: 'ஒரு சில விநாடிகள்',\n            ss: '%d விநாடிகள்',\n            m: 'ஒரு நிமிடம்',\n            mm: '%d நிமிடங்கள்',\n            h: 'ஒரு மணி நேரம்',\n            hh: '%d மணி நேரம்',\n            d: 'ஒரு நாள்',\n            dd: '%d நாட்கள்',\n            M: 'ஒரு மாதம்',\n            MM: '%d மாதங்கள்',\n            y: 'ஒரு வருடம்',\n            yy: '%d ஆண்டுகள்',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal: function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை'; // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var te = moment.defineLocale('te', {\n        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n            '_'\n        ),\n        monthsShort:\n            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n                '_'\n            ),\n        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[నేడు] LT',\n            nextDay: '[రేపు] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[నిన్న] LT',\n            lastWeek: '[గత] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s లో',\n            past: '%s క్రితం',\n            s: 'కొన్ని క్షణాలు',\n            ss: '%d సెకన్లు',\n            m: 'ఒక నిమిషం',\n            mm: '%d నిమిషాలు',\n            h: 'ఒక గంట',\n            hh: '%d గంటలు',\n            d: 'ఒక రోజు',\n            dd: '%d రోజులు',\n            M: 'ఒక నెల',\n            MM: '%d నెలలు',\n            y: 'ఒక సంవత్సరం',\n            yy: '%d సంవత్సరాలు',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n        ordinal: '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tet = moment.defineLocale('tet', {\n        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'iha %s',\n            past: '%s liuba',\n            s: 'segundu balun',\n            ss: 'segundu %d',\n            m: 'minutu ida',\n            mm: 'minutu %d',\n            h: 'oras ida',\n            hh: 'oras %d',\n            d: 'loron ida',\n            dd: 'loron %d',\n            M: 'fulan ida',\n            MM: 'fulan %d',\n            y: 'tinan ida',\n            yy: 'tinan %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум',\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months: {\n            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n                '_'\n            ),\n            standalone:\n                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n            '_'\n        ),\n        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Имрӯз соати] LT',\n            nextDay: '[Фардо соати] LT',\n            lastDay: '[Дирӯз соати] LT',\n            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'баъди %s',\n            past: '%s пеш',\n            s: 'якчанд сония',\n            m: 'як дақиқа',\n            mm: '%d дақиқа',\n            h: 'як соат',\n            hh: '%d соат',\n            d: 'як рӯз',\n            dd: '%d рӯз',\n            M: 'як моҳ',\n            MM: '%d моҳ',\n            y: 'як сол',\n            yy: '%d сол',\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1th is the first week of the year.\n        },\n    });\n\n    return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var th = moment.defineLocale('th', {\n        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n            '_'\n        ),\n        monthsShort:\n            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY เวลา H:mm',\n            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar: {\n            sameDay: '[วันนี้ เวลา] LT',\n            nextDay: '[พรุ่งนี้ เวลา] LT',\n            nextWeek: 'dddd[หน้า เวลา] LT',\n            lastDay: '[เมื่อวานนี้ เวลา] LT',\n            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'อีก %s',\n            past: '%sที่แล้ว',\n            s: 'ไม่กี่วินาที',\n            ss: '%d วินาที',\n            m: '1 นาที',\n            mm: '%d นาที',\n            h: '1 ชั่วโมง',\n            hh: '%d ชั่วโมง',\n            d: '1 วัน',\n            dd: '%d วัน',\n            w: '1 สัปดาห์',\n            ww: '%d สัปดาห์',\n            M: '1 เดือน',\n            MM: '%d เดือน',\n            y: '1 ปี',\n            yy: '%d ปี',\n        },\n    });\n\n    return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inji\",\n        5: \"'inji\",\n        8: \"'inji\",\n        70: \"'inji\",\n        80: \"'inji\",\n        2: \"'nji\",\n        7: \"'nji\",\n        20: \"'nji\",\n        50: \"'nji\",\n        3: \"'ünji\",\n        4: \"'ünji\",\n        100: \"'ünji\",\n        6: \"'njy\",\n        9: \"'unjy\",\n        10: \"'unjy\",\n        30: \"'unjy\",\n        60: \"'ynjy\",\n        90: \"'ynjy\",\n    };\n\n    var tk = moment.defineLocale('tk', {\n        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün sagat] LT',\n            nextDay: '[ertir sagat] LT',\n            nextWeek: '[indiki] dddd [sagat] LT',\n            lastDay: '[düýn] LT',\n            lastWeek: '[geçen] dddd [sagat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s soň',\n            past: '%s öň',\n            s: 'birnäçe sekunt',\n            m: 'bir minut',\n            mm: '%d minut',\n            h: 'bir sagat',\n            hh: '%d sagat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir aý',\n            MM: '%d aý',\n            y: 'bir ýyl',\n            yy: '%d ýyl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'unjy\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'leS'\n                : output.indexOf('jar') !== -1\n                  ? time.slice(0, -3) + 'waQ'\n                  : output.indexOf('DIS') !== -1\n                    ? time.slice(0, -3) + 'nem'\n                    : time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'Hu’'\n                : output.indexOf('jar') !== -1\n                  ? time.slice(0, -3) + 'wen'\n                  : output.indexOf('DIS') !== -1\n                    ? time.slice(0, -3) + 'ben'\n                    : time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n            ten = Math.floor((number % 100) / 10),\n            one = number % 10,\n            word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[one];\n        }\n        return word === '' ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsShort:\n            'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysShort:\n            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysMin:\n            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: translateFuture,\n            past: translatePast,\n            s: 'puS lup',\n            ss: translate,\n            m: 'wa’ tup',\n            mm: translate,\n            h: 'wa’ rep',\n            hh: translate,\n            d: 'wa’ jaj',\n            dd: translate,\n            M: 'wa’ jar',\n            MM: translate,\n            y: 'wa’ DIS',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//!           Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inci\",\n        5: \"'inci\",\n        8: \"'inci\",\n        70: \"'inci\",\n        80: \"'inci\",\n        2: \"'nci\",\n        7: \"'nci\",\n        20: \"'nci\",\n        50: \"'nci\",\n        3: \"'üncü\",\n        4: \"'üncü\",\n        100: \"'üncü\",\n        6: \"'ncı\",\n        9: \"'uncu\",\n        10: \"'uncu\",\n        30: \"'uncu\",\n        60: \"'ıncı\",\n        90: \"'ıncı\",\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n            '_'\n        ),\n        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'öö' : 'ÖÖ';\n            } else {\n                return isLower ? 'ös' : 'ÖS';\n            }\n        },\n        meridiemParse: /öö|ÖÖ|ös|ÖS/,\n        isPM: function (input) {\n            return input === 'ös' || input === 'ÖS';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[yarın saat] LT',\n            nextWeek: '[gelecek] dddd [saat] LT',\n            lastDay: '[dün] LT',\n            lastWeek: '[geçen] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s önce',\n            s: 'birkaç saniye',\n            ss: '%d saniye',\n            m: 'bir dakika',\n            mm: '%d dakika',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            w: 'bir hafta',\n            ww: '%d hafta',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir yıl',\n            yy: '%d yıl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'ıncı\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM [dallas] YYYY',\n            LLL: 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM: function (input) {\n            return \"d'o\" === input.toLowerCase();\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? \"d'o\" : \"D'O\";\n            } else {\n                return isLower ? \"d'a\" : \"D'A\";\n            }\n        },\n        calendar: {\n            sameDay: '[oxhi à] LT',\n            nextDay: '[demà à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[ieiri à] LT',\n            lastWeek: '[sür el] dddd [lasteu à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'osprei %s',\n            past: 'ja%s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['viensas secunds', \"'iensas secunds\"],\n            ss: [number + ' secunds', '' + number + ' secunds'],\n            m: [\"'n míut\", \"'iens míut\"],\n            mm: [number + ' míuts', '' + number + ' míuts'],\n            h: [\"'n þora\", \"'iensa þora\"],\n            hh: [number + ' þoras', '' + number + ' þoras'],\n            d: [\"'n ziua\", \"'iensa ziua\"],\n            dd: [number + ' ziuas', '' + number + ' ziuas'],\n            M: [\"'n mes\", \"'iens mes\"],\n            MM: [number + ' mesen', '' + number + ' mesen'],\n            y: [\"'n ar\", \"'iens ar\"],\n            yy: [number + ' ars', '' + number + ' ars'],\n        };\n        return isFuture\n            ? format[key][0]\n            : withoutSuffix\n              ? format[key][0]\n              : format[key][1];\n    }\n\n    return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        monthsShort:\n            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n                '_'\n            ),\n        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dadkh s yan %s',\n            past: 'yan %s',\n            s: 'imik',\n            ss: '%d imik',\n            m: 'minuḍ',\n            mm: '%d minuḍ',\n            h: 'saɛa',\n            hh: '%d tassaɛin',\n            d: 'ass',\n            dd: '%d ossan',\n            M: 'ayowr',\n            MM: '%d iyyirn',\n            y: 'asgas',\n            yy: '%d isgasn',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzm = moment.defineLocale('tzm', {\n        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n                '_'\n            ),\n        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past: 'ⵢⴰⵏ %s',\n            s: 'ⵉⵎⵉⴽ',\n            ss: '%d ⵉⵎⵉⴽ',\n            m: 'ⵎⵉⵏⵓⴺ',\n            mm: '%d ⵎⵉⵏⵓⴺ',\n            h: 'ⵙⴰⵄⴰ',\n            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d: 'ⴰⵙⵙ',\n            dd: '%d oⵙⵙⴰⵏ',\n            M: 'ⴰⵢoⵓⵔ',\n            MM: '%d ⵉⵢⵢⵉⵔⵏ',\n            y: 'ⴰⵙⴳⴰⵙ',\n            yy: '%d ⵉⵙⴳⴰⵙⵏ',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n                '_'\n            ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل',\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n              ? forms[1]\n              : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            dd: 'день_дні_днів',\n            MM: 'місяць_місяці_місяців',\n            yy: 'рік_роки_років',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n                nominative:\n                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n                        '_'\n                    ),\n                accusative:\n                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n                        '_'\n                    ),\n                genitive:\n                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n                        '_'\n                    ),\n            },\n            nounCase;\n\n        if (m === true) {\n            return weekdays['nominative']\n                .slice(1, 7)\n                .concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n            ? 'accusative'\n            : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n              ? 'genitive'\n              : 'nominative';\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months: {\n            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n                '_'\n            ),\n            standalone:\n                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n            '_'\n        ),\n        weekdays: weekdaysCaseReplace,\n        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY р.',\n            LLL: 'D MMMM YYYY р., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n        },\n        calendar: {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: '%s тому',\n            s: 'декілька секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'годину',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            M: 'місяць',\n            MM: relativeTimeWithPlural,\n            y: 'рік',\n            yy: relativeTimeWithPlural,\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوری',\n            'فروری',\n            'مارچ',\n            'اپریل',\n            'مئی',\n            'جون',\n            'جولائی',\n            'اگست',\n            'ستمبر',\n            'اکتوبر',\n            'نومبر',\n            'دسمبر',\n        ],\n        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n    var ur = moment.defineLocale('ur', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[آج بوقت] LT',\n            nextDay: '[کل بوقت] LT',\n            nextWeek: 'dddd [بوقت] LT',\n            lastDay: '[گذشتہ روز بوقت] LT',\n            lastWeek: '[گذشتہ] dddd [بوقت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s بعد',\n            past: '%s قبل',\n            s: 'چند سیکنڈ',\n            ss: '%d سیکنڈ',\n            m: 'ایک منٹ',\n            mm: '%d منٹ',\n            h: 'ایک گھنٹہ',\n            hh: '%d گھنٹے',\n            d: 'ایک دن',\n            dd: '%d دن',\n            M: 'ایک ماہ',\n            MM: '%d ماہ',\n            y: 'ایک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays:\n            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n                '_'\n            ),\n        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bugun soat] LT [da]',\n            nextDay: '[Ertaga] LT [da]',\n            nextWeek: 'dddd [kuni soat] LT [da]',\n            lastDay: '[Kecha soat] LT [da]',\n            lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Yaqin %s ichida',\n            past: 'Bir necha %s oldin',\n            s: 'soniya',\n            ss: '%d soniya',\n            m: 'bir daqiqa',\n            mm: '%d daqiqa',\n            h: 'bir soat',\n            hh: '%d soat',\n            d: 'bir kun',\n            dd: '%d kun',\n            M: 'bir oy',\n            MM: '%d oy',\n            y: 'bir yil',\n            yy: '%d yil',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uz = moment.defineLocale('uz', {\n        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бугун соат] LT [да]',\n            nextDay: '[Эртага] LT [да]',\n            nextWeek: 'dddd [куни соат] LT [да]',\n            lastDay: '[Кеча соат] LT [да]',\n            lastWeek: '[Утган] dddd [куни соат] LT [да]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Якин %s ичида',\n            past: 'Бир неча %s олдин',\n            s: 'фурсат',\n            ss: '%d фурсат',\n            m: 'бир дакика',\n            mm: '%d дакика',\n            h: 'бир соат',\n            hh: '%d соат',\n            d: 'бир кун',\n            dd: '%d кун',\n            M: 'бир ой',\n            MM: '%d ой',\n            y: 'бир йил',\n            yy: '%d йил',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var vi = moment.defineLocale('vi', {\n        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n            '_'\n        ),\n        monthsShort:\n            'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n            '_'\n        ),\n        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /sa|ch/i,\n        isPM: function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [năm] YYYY',\n            LLL: 'D MMMM [năm] YYYY HH:mm',\n            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n            l: 'DD/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần trước lúc] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s tới',\n            past: '%s trước',\n            s: 'vài giây',\n            ss: '%d giây',\n            m: 'một phút',\n            mm: '%d phút',\n            h: 'một giờ',\n            hh: '%d giờ',\n            d: 'một ngày',\n            dd: '%d ngày',\n            w: 'một tuần',\n            ww: '%d tuần',\n            M: 'một tháng',\n            MM: '%d tháng',\n            y: 'một năm',\n            yy: '%d năm',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n            '_'\n        ),\n        monthsShort:\n            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n                '_'\n            ),\n        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[T~ódá~ý át] LT',\n            nextDay: '[T~ómó~rró~w át] LT',\n            nextWeek: 'dddd [át] LT',\n            lastDay: '[Ý~ést~érdá~ý át] LT',\n            lastWeek: '[L~ást] dddd [át] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'í~ñ %s',\n            past: '%s á~gó',\n            s: 'á ~féw ~sécó~ñds',\n            ss: '%d s~écóñ~ds',\n            m: 'á ~míñ~úté',\n            mm: '%d m~íñú~tés',\n            h: 'á~ñ hó~úr',\n            hh: '%d h~óúrs',\n            d: 'á ~dáý',\n            dd: '%d d~áýs',\n            M: 'á ~móñ~th',\n            MM: '%d m~óñt~hs',\n            y: 'á ~ýéár',\n            yy: '%d ý~éárs',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var yo = moment.defineLocale('yo', {\n        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n            '_'\n        ),\n        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Ònì ni] LT',\n            nextDay: '[Ọ̀la ni] LT',\n            nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n            lastDay: '[Àna ni] LT',\n            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ní %s',\n            past: '%s kọjá',\n            s: 'ìsẹjú aayá die',\n            ss: 'aayá %d',\n            m: 'ìsẹjú kan',\n            mm: 'ìsẹjú %d',\n            h: 'wákati kan',\n            hh: 'wákati %d',\n            d: 'ọjọ́ kan',\n            dd: 'ọjọ́ %d',\n            M: 'osù kan',\n            MM: 'osù %d',\n            y: 'ọdún kan',\n            yy: 'ọdún %d',\n        },\n        dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n        ordinal: 'ọjọ́ %d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日Ah点mm分',\n            LLLL: 'YYYY年M月D日ddddAh点mm分',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[下]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            lastDay: '[昨天]LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[上]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s后',\n            past: '%s前',\n            s: '几秒',\n            ss: '%d 秒',\n            m: '1 分钟',\n            mm: '%d 分钟',\n            h: '1 小时',\n            hh: '%d 小时',\n            d: '1 天',\n            dd: '%d 天',\n            w: '1 周',\n            ww: '%d 周',\n            M: '1 个月',\n            MM: '%d 个月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1200) {\n                return '上午';\n            } else if (hm === 1200) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: '[下]ddddLT',\n            lastDay: '[昨天]LT',\n            lastWeek: '[上]ddddLT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhMo = moment.defineLocale('zh-mo', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s內',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        var flags = null,\n            parsedParts = false,\n            isNowValid = m._d && !isNaN(m._d.getTime());\n        if (isNowValid) {\n            flags = getParsingFlags(m);\n            parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            isNowValid =\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidEra &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n        }\n        if (Object.isFrozen == null || !Object.isFrozen(m)) {\n            m._isValid = isNowValid;\n        } else {\n            return isNowValid;\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {\n        D: 'date',\n        dates: 'date',\n        date: 'date',\n        d: 'day',\n        days: 'day',\n        day: 'day',\n        e: 'weekday',\n        weekdays: 'weekday',\n        weekday: 'weekday',\n        E: 'isoWeekday',\n        isoweekdays: 'isoWeekday',\n        isoweekday: 'isoWeekday',\n        DDD: 'dayOfYear',\n        dayofyears: 'dayOfYear',\n        dayofyear: 'dayOfYear',\n        h: 'hour',\n        hours: 'hour',\n        hour: 'hour',\n        ms: 'millisecond',\n        milliseconds: 'millisecond',\n        millisecond: 'millisecond',\n        m: 'minute',\n        minutes: 'minute',\n        minute: 'minute',\n        M: 'month',\n        months: 'month',\n        month: 'month',\n        Q: 'quarter',\n        quarters: 'quarter',\n        quarter: 'quarter',\n        s: 'second',\n        seconds: 'second',\n        second: 'second',\n        gg: 'weekYear',\n        weekyears: 'weekYear',\n        weekyear: 'weekYear',\n        GG: 'isoWeekYear',\n        isoweekyears: 'isoWeekYear',\n        isoweekyear: 'isoWeekYear',\n        w: 'week',\n        weeks: 'week',\n        week: 'week',\n        W: 'isoWeek',\n        isoweeks: 'isoWeek',\n        isoweek: 'isoWeek',\n        y: 'year',\n        years: 'year',\n        year: 'year',\n    };\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {\n        date: 9,\n        day: 11,\n        weekday: 11,\n        isoWeekday: 11,\n        dayOfYear: 4,\n        hour: 13,\n        millisecond: 16,\n        minute: 14,\n        month: 8,\n        quarter: 7,\n        second: 15,\n        weekYear: 1,\n        isoWeekYear: 1,\n        week: 5,\n        isoWeek: 5,\n        year: 1,\n    };\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        match1to2NoLeadingZero = /^[1-9]\\d?/, //         1-99\n        match1to2HasZero = /^([1-9]\\d|\\d)/, //           0-99\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        if (!mom.isValid()) {\n            return NaN;\n        }\n\n        var d = mom._d,\n            isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n            case 'Seconds':\n                return isUTC ? d.getUTCSeconds() : d.getSeconds();\n            case 'Minutes':\n                return isUTC ? d.getUTCMinutes() : d.getMinutes();\n            case 'Hours':\n                return isUTC ? d.getUTCHours() : d.getHours();\n            case 'Date':\n                return isUTC ? d.getUTCDate() : d.getDate();\n            case 'Day':\n                return isUTC ? d.getUTCDay() : d.getDay();\n            case 'Month':\n                return isUTC ? d.getUTCMonth() : d.getMonth();\n            case 'FullYear':\n                return isUTC ? d.getUTCFullYear() : d.getFullYear();\n            default:\n                return NaN; // Just in case\n        }\n    }\n\n    function set$1(mom, unit, value) {\n        var d, isUTC, year, month, date;\n\n        if (!mom.isValid() || isNaN(value)) {\n            return;\n        }\n\n        d = mom._d;\n        isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return void (isUTC\n                    ? d.setUTCMilliseconds(value)\n                    : d.setMilliseconds(value));\n            case 'Seconds':\n                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n            case 'Minutes':\n                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n            case 'Hours':\n                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n            case 'Date':\n                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n            // case 'Day': // Not real\n            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n            // case 'Month': // Not used because we need to pass two variables\n            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n            case 'FullYear':\n                break; // See below ...\n            default:\n                return; // Just in case\n        }\n\n        year = value;\n        month = mom.month();\n        date = mom.date();\n        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n        void (isUTC\n            ? d.setUTCFullYear(year, month, date)\n            : d.setFullYear(year, month, date));\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // PARSING\n\n    addRegexToken('M', match1to2, match1to2NoLeadingZero);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        var month = value,\n            date = mom.date();\n\n        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n        void (mom._isUTC\n            ? mom._d.setUTCMonth(month, date)\n            : mom._d.setMonth(month, date));\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            shortP,\n            longP;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortP = regexEscape(this.monthsShort(mom, ''));\n            longP = regexEscape(this.months(mom, ''));\n            shortPieces.push(shortP);\n            longPieces.push(longP);\n            mixedPieces.push(longP);\n            mixedPieces.push(shortP);\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // PARSING\n\n    addRegexToken('w', match1to2, match1to2NoLeadingZero);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2, match1to2NoLeadingZero);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n              ? weekdays[m.day()]\n              : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n              ? this._weekdaysShort[m.day()]\n              : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n              ? this._weekdaysMin[m.day()]\n              : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        var day = get(this, 'Day');\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2, match1to2HasZero);\n    addRegexToken('h', match1to2, match1to2NoLeadingZero);\n    addRegexToken('k', match1to2, match1to2NoLeadingZero);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        // Ensure name is available and function returns boolean\n        return !!(name && name.match('^[^/\\\\\\\\]*$'));\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                      ? DATE\n                      : a[HOUR] < 0 ||\n                          a[HOUR] > 24 ||\n                          (a[HOUR] === 24 &&\n                              (a[MINUTE] !== 0 ||\n                                  a[SECOND] !== 0 ||\n                                  a[MILLISECOND] !== 0))\n                        ? HOUR\n                        : a[MINUTE] < 0 || a[MINUTE] > 59\n                          ? MINUTE\n                          : a[SECOND] < 0 || a[SECOND] > 59\n                            ? SECOND\n                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                              ? MILLISECOND\n                              : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n              ? 'lastWeek'\n              : diff < 0\n                ? 'lastDay'\n                : diff < 1\n                  ? 'sameDay'\n                  : diff < 2\n                    ? 'nextDay'\n                    : diff < 7\n                      ? 'nextWeek'\n                      : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            erasName,\n            erasAbbr,\n            erasNarrow,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            erasName = regexEscape(eras[i].name);\n            erasAbbr = regexEscape(eras[i].abbr);\n            erasNarrow = regexEscape(eras[i].narrow);\n\n            namePieces.push(erasName);\n            abbrPieces.push(erasAbbr);\n            narrowPieces.push(erasNarrow);\n            mixedPieces.push(erasName);\n            mixedPieces.push(erasAbbr);\n            mixedPieces.push(erasNarrow);\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday() + this.localeData()._week.dow,\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // PARSING\n\n    addRegexToken('D', match1to2, match1to2NoLeadingZero);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // PARSING\n\n    addRegexToken('m', match1to2, match1to2HasZero);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // PARSING\n\n    addRegexToken('s', match1to2, match1to2HasZero);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y'),\n        valueOf$1 = asMilliseconds;\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.30.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n  // \"(\\\\d+)\"  => [undefined, undefined, \"\\d+\", undefined]\n  '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n  var whitelist = (options && options.whitelist) || undefined\n  var pathEscaped = false\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) !== null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      pathEscaped = true\n      continue\n    }\n\n    var prev = ''\n    var name = res[2]\n    var capture = res[3]\n    var group = res[4]\n    var modifier = res[5]\n\n    if (!pathEscaped && path.length) {\n      var k = path.length - 1\n      var c = path[k]\n      var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n      if (matches) {\n        prev = c\n        path = path.slice(0, k)\n      }\n    }\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n      pathEscaped = false\n    }\n\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var pattern = capture || group\n    var delimiter = prev || defaultDelimiter\n\n    tokens.push({\n      name: name || key++,\n      prefix: prev,\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      pattern: pattern\n        ? escapeGroup(pattern)\n        : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n    })\n  }\n\n  // Push any remaining characters.\n  if (path || index < str.length) {\n    tokens.push(path + str.substr(index))\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options))\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n    }\n  }\n\n  return function (data, options) {\n    var path = ''\n    var encode = (options && options.encode) || encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n        continue\n      }\n\n      var value = data ? data[token.name] : undefined\n      var segment\n\n      if (Array.isArray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) continue\n\n          throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j], token)\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n        segment = encode(String(value), token)\n\n        if (!matches[i].test(segment)) {\n          throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n        }\n\n        path += token.prefix + segment\n        continue\n      }\n\n      if (token.optional) continue\n\n      throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {Array=}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  if (!keys) return path\n\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        pattern: null\n      })\n    }\n  }\n\n  return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array=}  keys\n * @param  {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {Array=}  keys\n * @param  {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}  tokens\n * @param  {Array=}  keys\n * @param  {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  options = options || {}\n\n  var strict = options.strict\n  var start = options.start !== false\n  var end = options.end !== false\n  var delimiter = options.delimiter || DEFAULT_DELIMITER\n  var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n  var route = start ? '^' : ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var capture = token.repeat\n        ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n        : token.pattern\n\n      if (keys) keys.push(token)\n\n      if (token.optional) {\n        if (!token.prefix) {\n          route += '(' + capture + ')?'\n        } else {\n          route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n        }\n      } else {\n        route += escapeString(token.prefix) + '(' + capture + ')'\n      }\n    }\n  }\n\n  if (end) {\n    if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n    route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n  } else {\n    var endToken = tokens[tokens.length - 1]\n    var isEndDelimited = typeof endToken === 'string'\n      ? endToken[endToken.length - 1] === delimiter\n      : endToken === undefined\n\n    if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n    if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n  }\n\n  return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {Array=}                keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, keys)\n  }\n\n  if (Array.isArray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = {};\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(options.delimiter, limit);\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key, val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n            val = utils.maybeMap(\n                parseArrayValue(part.slice(pos + 1), options),\n                function (encodedVal) {\n                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                }\n            );\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(val);\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (has.call(obj, key)) {\n            obj[key] = utils.combine(obj[key], val);\n        } else {\n            obj[key] = val;\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            obj = [].concat(leaf);\n        } else {\n            obj = options.plainObjects ? Object.create(null) : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var index = parseInt(cleanRoot, 10);\n            if (!options.parseArrays && cleanRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== cleanRoot\n                && String(index) === cleanRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (cleanRoot !== '__proto__') {\n                obj[cleanRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    // The regex chunks\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    // Get the parent\n\n    var segment = options.depth > 0 && brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    // Stash the parent if it exists\n\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    // Loop through children appending to the array until we hit depth\n\n    var i = 0;\n    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n        keys.push(segment[1]);\n    }\n\n    // If there's a remainder, just add whatever is left\n\n    if (segment) {\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    return {\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? Object.create(null) : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? Object.create(null) : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    delimiter: '&',\n    encode: true,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    strictNullHandling,\n    skipNulls,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n                var valuesArray = split.call(String(obj), ',');\n                var valuesJoined = '';\n                for (var i = 0; i < valuesArray.length; ++i) {\n                    valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n                }\n                return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n            }\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            strictNullHandling,\n            skipNulls,\n            encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var arrayFormat;\n    if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if (opts && 'indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = 'indices';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n    if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n    var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (options.skipNulls && obj[key] === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            obj[key],\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var i = 0; i < string.length; ++i) {\n        var c = string.charCodeAt(i);\n\n        if (\n            c === 0x2D // -\n            || c === 0x2E // .\n            || c === 0x5F // _\n            || c === 0x7E // ~\n            || (c >= 0x30 && c <= 0x39) // 0-9\n            || (c >= 0x41 && c <= 0x5A) // a-z\n            || (c >= 0x61 && c <= 0x7A) // A-Z\n            || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n        ) {\n            out += string.charAt(i);\n            continue;\n        }\n\n        if (c < 0x80) {\n            out = out + hexTable[c];\n            continue;\n        }\n\n        if (c < 0x800) {\n            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        if (c < 0xD800 || c >= 0xE000) {\n            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        i += 1;\n        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n        /* eslint operator-linebreak: [2, \"before\"] */\n        out += hexTable[0xF0 | (c >> 18)]\n            + hexTable[0x80 | ((c >> 12) & 0x3F)]\n            + hexTable[0x80 | ((c >> 6) & 0x3F)]\n            + hexTable[0x80 | (c & 0x3F)];\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n    return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n    in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType<typeof getSideChannelList>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode<V, K> | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {<K, V>(thisArg: Map<K, V>) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType<typeof getSideChannelMap>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {Map<K, V> | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */\n\t\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t\t/** @type {WeakMap<K & object, V> | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType<typeof getSideChannel>} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","/* !\n * Tiny PowerPaste plugin\n *\n * Copyright (c) 2023 Ephox Corporation DBA Tiny Technologies, Inc.\n * Licensed under the Tiny commercial license. See https://www.tiny.cloud/legal/\n *\n * Version: 6.2.4-639\n */\n\n!function(){\"use strict\";const e=e=>t=>(e=>{const t=typeof e;return null===e?\"null\":\"object\"===t&&Array.isArray(e)?\"array\":\"object\"===t&&((e,t,n)=>{var r,o;return o=e,!!t.prototype.isPrototypeOf(o)||(null===(r=e.constructor)||void 0===r?void 0:r.name)===t.name})(e,String)?\"string\":t})(t)===e,t=e=>t=>typeof t===e,n=e(\"string\"),r=e(\"object\"),o=e(\"array\"),s=t(\"boolean\"),a=(void 0,e=>undefined===e);const i=e=>null==e,l=e=>!i(e),c=t(\"function\"),u=t(\"number\"),d=()=>{},h=(e,t)=>(...n)=>e(t.apply(null,n)),m=e=>()=>e,p=e=>e,f=(e,t)=>e===t;function g(e,...t){return(...n)=>{const r=t.concat(n);return e.apply(null,r)}}const v=e=>()=>{throw new Error(e)},y=e=>e(),b=m(!1),x=m(!0);class k{constructor(e,t){this.tag=e,this.value=t}static some(e){return new k(!0,e)}static none(){return k.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?k.some(e(this.value)):k.none()}bind(e){return this.tag?e(this.value):k.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:k.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:\"Called getOrDie on None\")}static from(e){return l(e)?k.some(e):k.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:\"none()\"}}k.singletonNone=new k(!1);const w=Array.prototype.slice,S=Array.prototype.indexOf,C=Array.prototype.push,T=(e,t)=>((e,t)=>S.call(e,t))(e,t)>-1,I=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1},A=(e,t)=>{const n=e.length,r=new Array(n);for(let o=0;o<n;o++){const n=e[o];r[o]=t(n,o)}return r},O=(e,t)=>{for(let n=0,r=e.length;n<r;n++)t(e[n],n)},E=(e,t)=>{const n=[],r=[];for(let o=0,s=e.length;o<s;o++){const s=e[o];(t(s,o)?n:r).push(s)}return{pass:n,fail:r}},L=(e,t)=>{const n=[];for(let r=0,o=e.length;r<o;r++){const o=e[r];t(o,r)&&n.push(o)}return n},N=(e,t,n)=>(O(e,((e,r)=>{n=t(n,e,r)})),n),_=(e,t)=>((e,t,n)=>{for(let r=0,o=e.length;r<o;r++){const o=e[r];if(t(o,r))return k.some(o);if(n(o,r))break}return k.none()})(e,t,b),D=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(t(e[n],n))return k.some(n);return k.none()},P=e=>{const t=[];for(let n=0,r=e.length;n<r;++n){if(!o(e[n]))throw new Error(\"Arr.flatten item \"+n+\" was not an array, input: \"+e);C.apply(t,e[n])}return t},R=(e,t)=>P(A(e,t)),M=(e,t)=>{for(let n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n))return!1;return!0},j=(e,t)=>{const n={};for(let r=0,o=e.length;r<o;r++){const o=e[r];n[String(o)]=t(o,r)}return n},F=(e,t)=>{const n=w.call(e,0);return n.sort(t),n},U=e=>((e,t)=>0<e.length?k.some(e[0]):k.none())(e),B=(e,t)=>{for(let n=0;n<e.length;n++){const r=t(e[n],n);if(r.isSome())return r}return k.none()},z=(e,t,n)=>\"\"===t||e.length>=t.length&&e.substr(n,n+t.length)===t,H=(e,t)=>$(e,t)?((e,t)=>e.substring(t))(e,t.length):e,W=(e,t,n=0,r)=>{const o=e.indexOf(t,n);return-1!==o&&(!!a(r)||o+t.length<=r)},$=(e,t)=>z(e,t,0),V=(e,t)=>z(e,t,e.length-t.length),G=(q=/^\\s+|\\s+$/g,e=>e.replace(q,\"\"));var q;const K=e=>parseInt(e,10),J=(e,t)=>{const n=e-t;return 0===n?0:n>0?1:-1},Y=(e,t,n)=>({major:e,minor:t,patch:n}),X=e=>{const t=/([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:(\\-.+)?)/.exec(e);return t?Y(K(t[1]),K(t[2]),K(t[3])):Y(0,0,0)},Z=e=>t=>t.options.get(e),Q=Z(\"paste_as_text\"),ee=Z(\"paste_merge_formats\"),te=Z(\"paste_tab_spaces\"),ne=Z(\"smart_paste\"),re=Z(\"cache_suffix\"),oe=Z(\"automatic_uploads\"),se=Z(\"indent_use_margin\"),ae=Z(\"powerpaste_block_drop\"),ie=Z(\"powerpaste_keep_unsupported_src\"),le=Z(\"powerpaste_allow_local_images\"),ce=Z(\"powerpaste_word_import\"),ue=Z(\"powerpaste_googledocs_import\"),de=Z(\"powerpaste_html_import\"),he=Z(\"powerpaste_clean_filtered_inline_elements\"),me=Z(\"link_default_protocol\"),pe=e=>{var t;return tinymce.explode(null!==(t=e.options.get(\"images_file_types\"))&&void 0!==t?t:\"\")},fe=e=>{let t=e;return{get:()=>t,set:e=>{t=e}}},ge=()=>{const e=(e=>{const t=fe(k.none()),n=()=>t.get().each(e);return{clear:()=>{n(),t.set(k.none())},isSet:()=>t.get().isSome(),get:()=>t.get(),set:e=>{n(),t.set(k.some(e))}}})(d);return{...e,on:t=>e.get().each(t)}},ve=(e,t)=>{const n=t=>e(t)?k.from(t.dom.nodeValue):k.none();return{get:r=>{if(!e(r))throw new Error(\"Can only get \"+t+\" value of a \"+t+\" node\");return n(r).getOr(\"\")},getOption:n,set:(n,r)=>{if(!e(n))throw new Error(\"Can only set raw \"+t+\" value of a \"+t+\" node\");n.dom.nodeValue=r}}},ye=\"undefined\"!=typeof window?window:Function(\"return this;\")(),be=(e,t)=>(void 0!==e[t]&&null!==e[t]||(e[t]={}),e[t]),xe=(e,t)=>((e,t)=>{let n=void 0!==t?t:ye;for(let t=0;t<e.length;++t)n=be(n,e[t]);return n})(e.split(\".\"),t),ke=e=>e.dom.nodeName.toLowerCase(),we=e=>e.dom.nodeType,Se=e=>t=>we(t)===e,Ce=e=>8===we(e)||\"#comment\"===ke(e),Te=Se(1),Ie=Se(3),Ae=Se(9),Oe=Se(11),Ee=e=>t=>Te(t)&&ke(t)===e,Le=ve(Ce,\"comment\"),Ne=e=>Le.get(e),_e=e=>{if(null==e)throw new Error(\"Node cannot be null or undefined\");return{dom:e}},De={fromHtml:(e,t)=>{const n=(t||document).createElement(\"div\");if(n.innerHTML=e,!n.hasChildNodes()||n.childNodes.length>1){const t=\"HTML does not have a single root node\";throw console.error(t,e),new Error(t)}return _e(n.childNodes[0])},fromTag:(e,t)=>{const n=(t||document).createElement(e);return _e(n)},fromText:(e,t)=>{const n=(t||document).createTextNode(e);return _e(n)},fromDom:_e,fromPoint:(e,t,n)=>k.from(e.dom.elementFromPoint(t,n)).map(_e)},Pe=Object.keys,Re=Object.hasOwnProperty,Me=(e,t)=>{const n=Pe(e);for(let r=0,o=n.length;r<o;r++){const o=n[r];t(e[o],o)}},je=(e,t)=>Fe(e,((e,n)=>({k:n,v:t(e,n)}))),Fe=(e,t)=>{const n={};return Me(e,((e,r)=>{const o=t(e,r);n[o.k]=o.v})),n},Ue=(e,t)=>{const n={};return((e,t,n,r)=>{Me(e,((e,o)=>{(t(e,o)?n:r)(e,o)}))})(e,t,(e=>(t,n)=>{e[n]=t})(n),d),n},Be=e=>Pe(e).length,ze=(e,t)=>Re.call(e,t),He=e=>{let t,n=!1;return(...r)=>(n||(n=!0,t=e.apply(null,r)),t)},We=()=>$e(0,0),$e=(e,t)=>({major:e,minor:t}),Ve={nu:$e,detect:(e,t)=>{const n=String(t).toLowerCase();return 0===e.length?We():((e,t)=>{const n=((e,t)=>{for(let n=0;n<e.length;n++){const r=e[n];if(r.test(t))return r}})(e,t);if(!n)return{major:0,minor:0};const r=e=>Number(t.replace(n,\"$\"+e));return $e(r(1),r(2))})(e,n)},unknown:We},Ge=(e,t)=>{const n=String(t).toLowerCase();return _(e,(e=>e.search(n)))},qe=/.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,Ke=e=>t=>W(t,e),Je=[{name:\"Edge\",versionRegexes:[/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],search:e=>W(e,\"edge/\")&&W(e,\"chrome\")&&W(e,\"safari\")&&W(e,\"applewebkit\")},{name:\"Chromium\",brand:\"Chromium\",versionRegexes:[/.*?chrome\\/([0-9]+)\\.([0-9]+).*/,qe],search:e=>W(e,\"chrome\")&&!W(e,\"chromeframe\")},{name:\"IE\",versionRegexes:[/.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,/.*?rv:([0-9]+)\\.([0-9]+).*/],search:e=>W(e,\"msie\")||W(e,\"trident\")},{name:\"Opera\",versionRegexes:[qe,/.*?opera\\/([0-9]+)\\.([0-9]+).*/],search:Ke(\"opera\")},{name:\"Firefox\",versionRegexes:[/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],search:Ke(\"firefox\")},{name:\"Safari\",versionRegexes:[qe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:e=>(W(e,\"safari\")||W(e,\"mobile/\"))&&W(e,\"applewebkit\")}],Ye=[{name:\"Windows\",search:Ke(\"win\"),versionRegexes:[/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]},{name:\"iOS\",search:e=>W(e,\"iphone\")||W(e,\"ipad\"),versionRegexes:[/.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:\"Android\",search:Ke(\"android\"),versionRegexes:[/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]},{name:\"macOS\",search:Ke(\"mac os x\"),versionRegexes:[/.*?mac\\ os\\ x\\ ?([0-9]+)_([0-9]+).*/]},{name:\"Linux\",search:Ke(\"linux\"),versionRegexes:[]},{name:\"Solaris\",search:Ke(\"sunos\"),versionRegexes:[]},{name:\"FreeBSD\",search:Ke(\"freebsd\"),versionRegexes:[]},{name:\"ChromeOS\",search:Ke(\"cros\"),versionRegexes:[/.*?chrome\\/([0-9]+)\\.([0-9]+).*/]}],Xe={browsers:m(Je),oses:m(Ye)},Ze=\"Edge\",Qe=\"Chromium\",et=\"Opera\",tt=\"Firefox\",nt=\"Safari\",rt=e=>{const t=e.current,n=e.version,r=e=>()=>t===e;return{current:t,version:n,isEdge:r(Ze),isChromium:r(Qe),isIE:r(\"IE\"),isOpera:r(et),isFirefox:r(tt),isSafari:r(nt)}},ot=()=>rt({current:void 0,version:Ve.unknown()}),st=rt,at=(m(Ze),m(Qe),m(\"IE\"),m(et),m(tt),m(nt),\"Windows\"),it=\"Android\",lt=\"Linux\",ct=\"macOS\",ut=\"Solaris\",dt=\"FreeBSD\",ht=\"ChromeOS\",mt=e=>{const t=e.current,n=e.version,r=e=>()=>t===e;return{current:t,version:n,isWindows:r(at),isiOS:r(\"iOS\"),isAndroid:r(it),isMacOS:r(ct),isLinux:r(lt),isSolaris:r(ut),isFreeBSD:r(dt),isChromeOS:r(ht)}},pt=()=>mt({current:void 0,version:Ve.unknown()}),ft=mt,gt=(m(at),m(\"iOS\"),m(it),m(lt),m(ct),m(ut),m(dt),m(ht),e=>window.matchMedia(e).matches);let vt=He((()=>((e,t,n)=>{const r=Xe.browsers(),o=Xe.oses(),s=t.bind((e=>((e,t)=>B(t.brands,(t=>{const n=t.brand.toLowerCase();return _(e,(e=>{var t;return n===(null===(t=e.brand)||void 0===t?void 0:t.toLowerCase())})).map((e=>({current:e.name,version:Ve.nu(parseInt(t.version,10),0)})))})))(r,e))).orThunk((()=>((e,t)=>Ge(e,t).map((e=>{const n=Ve.detect(e.versionRegexes,t);return{current:e.name,version:n}})))(r,e))).fold(ot,st),a=((e,t)=>Ge(e,t).map((e=>{const n=Ve.detect(e.versionRegexes,t);return{current:e.name,version:n}})))(o,e).fold(pt,ft),i=((e,t,n,r)=>{const o=e.isiOS()&&!0===/ipad/i.test(n),s=e.isiOS()&&!o,a=e.isiOS()||e.isAndroid(),i=a||r(\"(pointer:coarse)\"),l=o||!s&&a&&r(\"(min-device-width:768px)\"),c=s||a&&!l,u=t.isSafari()&&e.isiOS()&&!1===/safari/i.test(n),d=!c&&!l&&!u;return{isiPad:m(o),isiPhone:m(s),isTablet:m(l),isPhone:m(c),isTouch:m(i),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:m(u),isDesktop:m(d)}})(a,s,e,n);return{browser:s,os:a,deviceType:i}})(navigator.userAgent,k.from(navigator.userAgentData),gt)));const yt=()=>vt(),bt=yt(),xt=bt.deviceType.isiOS()||bt.deviceType.isAndroid(),kt=m({isSupported:!1,cleanDocument:()=>Promise.reject(\"not supported\")});var wt=xt?kt:(e,t,n)=>{const r=t+\"/wordimport.js\"+(e=>k.from(e).filter((e=>0!==e.length)).map((e=>(-1===e.indexOf(\"?\")?\"?\":\"\")+e)).getOr(\"\"))(n||\"v=9.2.3\"),o=e.loadScript(\"ephox.wimp\",r);return o.catch((e=>{console.error(\"Unable to load word import: \",e)})),{isSupported:!0,cleanDocument:(e,t,n)=>o.then((r=>r.cleanDocument(e,t,n.cleanFilteredInlineElements)))}};const St=e=>{let t=[];return{bind:e=>{if(void 0===e)throw new Error(\"Event bind error: undefined handler\");t.push(e)},unbind:e=>{t=L(t,(t=>t!==e))},trigger:(...n)=>{const r={};O(e,((e,t)=>{r[e]=n[t]})),O(t,(e=>{e(r)}))}}},Ct=e=>{const t=je(e,(e=>({bind:e.bind,unbind:e.unbind}))),n=je(e,(e=>e.trigger));return{registry:t,trigger:n}},Tt=(e,t)=>{const n=e.dom;if(1!==n.nodeType)return!1;{const e=n;if(void 0!==e.matches)return e.matches(t);if(void 0!==e.msMatchesSelector)return e.msMatchesSelector(t);if(void 0!==e.webkitMatchesSelector)return e.webkitMatchesSelector(t);if(void 0!==e.mozMatchesSelector)return e.mozMatchesSelector(t);throw new Error(\"Browser lacks native selectors\")}},It=(e,t)=>{const n=void 0===t?document:t.dom;return 1!==(r=n).nodeType&&9!==r.nodeType&&11!==r.nodeType||0===r.childElementCount?[]:A(n.querySelectorAll(e),De.fromDom);var r},At=(e,t)=>e.dom===t.dom,Ot=Tt,Et=(e,t,n)=>{const r=e.document.createRange();var o;return o=r,t.fold((e=>{o.setStartBefore(e.dom)}),((e,t)=>{o.setStart(e.dom,t)}),(e=>{o.setStartAfter(e.dom)})),((e,t)=>{t.fold((t=>{e.setEndBefore(t.dom)}),((t,n)=>{e.setEnd(t.dom,n)}),(t=>{e.setEndAfter(t.dom)}))})(r,n),r},Lt=(e,t,n,r,o)=>{const s=e.document.createRange();return s.setStart(t.dom,n),s.setEnd(r.dom,o),s},Nt=e=>{if(!o(e))throw new Error(\"cases must be an array\");if(0===e.length)throw new Error(\"there must be at least one case\");const t=[],n={};return O(e,((r,s)=>{const a=Pe(r);if(1!==a.length)throw new Error(\"one and only one name per case\");const i=a[0],l=r[i];if(void 0!==n[i])throw new Error(\"duplicate key detected:\"+i);if(\"cata\"===i)throw new Error(\"cannot have a case named cata (sorry)\");if(!o(l))throw new Error(\"case arguments must be an array\");t.push(i),n[i]=(...n)=>{const r=n.length;if(r!==l.length)throw new Error(\"Wrong number of arguments to case \"+i+\". Expected \"+l.length+\" (\"+l+\"), got \"+r);return{fold:(...t)=>{if(t.length!==e.length)throw new Error(\"Wrong number of arguments to fold. Expected \"+e.length+\", got \"+t.length);return t[s].apply(null,n)},match:e=>{const r=Pe(e);if(t.length!==r.length)throw new Error(\"Wrong number of arguments to match. Expected: \"+t.join(\",\")+\"\\nActual: \"+r.join(\",\"));if(!M(t,(e=>T(r,e))))throw new Error(\"Not all branches were specified when using match. Specified: \"+r.join(\", \")+\"\\nRequired: \"+t.join(\", \"));return e[i].apply(null,n)},log:e=>{console.log(e,{constructors:t,constructor:i,params:n})}}}})),n},_t=Nt([{ltr:[\"start\",\"soffset\",\"finish\",\"foffset\"]},{rtl:[\"start\",\"soffset\",\"finish\",\"foffset\"]}]),Dt=(e,t,n)=>t(De.fromDom(n.startContainer),n.startOffset,De.fromDom(n.endContainer),n.endOffset);_t.ltr,_t.rtl;const Pt=(e,t,n,r)=>({start:e,soffset:t,finish:n,foffset:r}),Rt=e=>De.fromDom(e.dom.ownerDocument),Mt=e=>Ae(e)?e:Rt(e),jt=e=>De.fromDom(Mt(e).dom.defaultView),Ft=e=>k.from(e.dom.parentNode).map(De.fromDom),Ut=e=>k.from(e.dom.previousSibling).map(De.fromDom),Bt=e=>k.from(e.dom.nextSibling).map(De.fromDom),zt=e=>(e=>{const t=w.call(e,0);return t.reverse(),t})(((e,t)=>{const n=[],r=e=>(n.push(e),t(e));let o=t(e);do{o=o.bind(r)}while(o.isSome());return n})(e,Ut)),Ht=e=>A(e.dom.childNodes,De.fromDom),Wt=c(Element.prototype.attachShadow)&&c(Node.prototype.getRootNode),$t=m(Wt),Vt=Wt?e=>De.fromDom(e.dom.getRootNode()):Mt,Gt=e=>De.fromDom(e.dom.host),qt=e=>{const t=Ie(e)?e.dom.parentNode:e.dom;if(null==t||null===t.ownerDocument)return!1;const n=t.ownerDocument;return(e=>{const t=Vt(e);return Oe(n=t)&&l(n.dom.host)?k.some(t):k.none();var n})(De.fromDom(t)).fold((()=>n.body.contains(t)),(r=qt,o=Gt,e=>r(o(e))));var r,o},Kt=(e,t)=>{let n=[];return O(Ht(e),(e=>{t(e)&&(n=n.concat([e])),n=n.concat(Kt(e,t))})),n},Jt=(e,t)=>It(t,e),Yt=Nt([{before:[\"element\"]},{on:[\"element\",\"offset\"]},{after:[\"element\"]}]),Xt={before:Yt.before,on:Yt.on,after:Yt.after,cata:(e,t,n,r)=>e.fold(t,n,r),getStart:e=>e.fold(p,p,p)},Zt=Nt([{domRange:[\"rng\"]},{relative:[\"startSitu\",\"finishSitu\"]},{exact:[\"start\",\"soffset\",\"finish\",\"foffset\"]}]),Qt={domRange:Zt.domRange,relative:Zt.relative,exact:Zt.exact,exactFromRange:e=>Zt.exact(e.start,e.soffset,e.finish,e.foffset),getWin:e=>{const t=(e=>e.match({domRange:e=>De.fromDom(e.startContainer),relative:(e,t)=>Xt.getStart(e),exact:(e,t,n,r)=>e}))(e);return jt(t)},range:Pt},en=(e,t)=>{const n=ke(e);return\"input\"===n?Xt.after(e):T([\"br\",\"img\"],n)?0===t?Xt.before(e):Xt.after(e):Xt.on(e,t)},tn=(e,t,n,r)=>{const o=Rt(e).dom.createRange();return o.setStart(e.dom,t),o.setEnd(n.dom,r),o},nn=e=>k.from(e.getSelection()),rn=(e,t,n,r,o)=>{((e,t)=>{nn(e).each((e=>{e.removeAllRanges(),e.addRange(t)}))})(e,Lt(e,t,n,r,o))},on=(e,t,n,r,o)=>{const s=((e,t,n,r)=>{const o=en(e,t),s=en(n,r);return Qt.relative(o,s)})(t,n,r,o);((e,t)=>{((e,t)=>{const n=((e,t)=>t.match({domRange:e=>({ltr:m(e),rtl:k.none}),relative:(t,n)=>({ltr:He((()=>Et(e,t,n))),rtl:He((()=>k.some(Et(e,n,t))))}),exact:(t,n,r,o)=>({ltr:He((()=>Lt(e,t,n,r,o))),rtl:He((()=>k.some(Lt(e,r,o,t,n))))})}))(e,t);return((e,t)=>{const n=t.ltr();return n.collapsed?t.rtl().filter((e=>!1===e.collapsed)).map((e=>_t.rtl(De.fromDom(e.endContainer),e.endOffset,De.fromDom(e.startContainer),e.startOffset))).getOrThunk((()=>Dt(0,_t.ltr,n))):Dt(0,_t.ltr,n)})(0,n)})(e,t).match({ltr:(t,n,r,o)=>{rn(e,t,n,r,o)},rtl:(t,n,r,o)=>{nn(e).each((s=>{if(s.setBaseAndExtent)s.setBaseAndExtent(t.dom,n,r.dom,o);else if(s.extend)try{((e,t,n,r,o,s)=>{t.collapse(n.dom,r),t.extend(o.dom,s)})(0,s,t,n,r,o)}catch(s){rn(e,r,o,t,n)}else rn(e,r,o,t,n)}))}})})(e,s)},sn=e=>{if(e.rangeCount>0){const t=e.getRangeAt(0),n=e.getRangeAt(e.rangeCount-1);return k.some(Pt(De.fromDom(t.startContainer),t.startOffset,De.fromDom(n.endContainer),n.endOffset))}return k.none()},an=e=>{if(null===e.anchorNode||null===e.focusNode)return sn(e);{const t=De.fromDom(e.anchorNode),n=De.fromDom(e.focusNode);return((e,t,n,r)=>{const o=tn(e,t,n,r),s=At(e,n)&&t===r;return o.collapsed&&!s})(t,e.anchorOffset,n,e.focusOffset)?k.some(Pt(t,e.anchorOffset,n,e.focusOffset)):sn(e)}},ln=e=>nn(e).filter((e=>e.rangeCount>0)).bind(an),cn=(e,t)=>{Ft(e).each((n=>{n.dom.insertBefore(t.dom,e.dom)}))},un=(e,t)=>{Bt(e).fold((()=>{Ft(e).each((e=>{hn(e,t)}))}),(e=>{cn(e,t)}))},dn=(e,t)=>{(e=>((e,t)=>{const n=e.dom.childNodes;return k.from(n[0]).map(De.fromDom)})(e))(e).fold((()=>{hn(e,t)}),(n=>{e.dom.insertBefore(t.dom,n.dom)}))},hn=(e,t)=>{e.dom.appendChild(t.dom)},mn=(e,t)=>{cn(e,t),hn(t,e)},pn=(e,t)=>{O(t,((n,r)=>{const o=0===r?e:t[r-1];un(o,n)}))},fn=(e,t)=>{O(t,(t=>{hn(e,t)}))},gn=e=>{e.dom.textContent=\"\",O(Ht(e),(e=>{vn(e)}))},vn=e=>{const t=e.dom;null!==t.parentNode&&t.parentNode.removeChild(t)},yn=e=>{const t=Ht(e);t.length>0&&pn(e,t),vn(e)},bn=(e,t,n,r)=>{const o=At(e,n)&&t===r;return{startContainer:m(e),startOffset:m(t),endContainer:m(n),endOffset:m(r),collapsed:m(o)}};let xn=0;const kn=e=>{const t=(new Date).getTime(),n=Math.floor(1e9*Math.random());return xn++,e+\"_\"+n+xn+String(t)},wn=(e,t,r)=>{if(!(n(r)||s(r)||u(r)))throw console.error(\"Invalid call to Attribute.set. Key \",t,\":: Value \",r,\":: Element \",e),new Error(\"Attribute value was not simple\");e.setAttribute(t,r+\"\")},Sn=(e,t,n)=>{wn(e.dom,t,n)},Cn=(e,t)=>{const n=e.dom;Me(t,((e,t)=>{wn(n,t,e)}))},Tn=(e,t)=>{const n=e.dom.getAttribute(t);return null===n?void 0:n},In=(e,t)=>k.from(Tn(e,t)),An=(e,t)=>{const n=e.dom;return!(!n||!n.hasAttribute)&&n.hasAttribute(t)},On=(e,t)=>{e.dom.removeAttribute(t)},En=(e,t)=>{const n=Tn(e,t);return void 0===n||\"\"===n?[]:n.split(\" \")},Ln=e=>void 0!==e.dom.classList,Nn=e=>En(e,\"class\"),_n=(e,t)=>{Ln(e)?e.dom.classList.add(t):((e,t)=>{((e,t,n)=>{const r=En(e,t).concat([n]);Sn(e,t,r.join(\" \"))})(e,\"class\",t)})(e,t)},Dn=(e,t)=>{Ln(e)?e.dom.classList.remove(t):((e,t)=>{((e,t,n)=>{const r=L(En(e,t),(e=>e!==n));r.length>0?Sn(e,t,r.join(\" \")):On(e,t)})(e,\"class\",t)})(e,t),(e=>{0===(Ln(e)?e.dom.classList:Nn(e)).length&&On(e,\"class\")})(e)},Pn=(e,t)=>Ln(e)&&e.dom.classList.contains(t),Rn=(e,t,n=f)=>e.exists((e=>n(e,t))),Mn=(e,t)=>e?k.some(t):k.none(),jn=e=>void 0!==e.style&&c(e.style.getPropertyValue),Fn=(e,t,r)=>{if(!n(r))throw console.error(\"Invalid call to CSS.set. Property \",t,\":: Value \",r,\":: Element \",e),new Error(\"CSS value must be a string: \"+r);jn(e)&&e.style.setProperty(t,r)},Un=(e,t)=>{jn(e)&&e.style.removeProperty(t)},Bn=(e,t,n)=>{const r=e.dom;Fn(r,t,n)},zn=(e,t)=>{const n=e.dom;Me(t,((e,t)=>{Fn(n,t,e)}))},Hn=(e,t)=>{const n=e.dom,r=window.getComputedStyle(n).getPropertyValue(t);return\"\"!==r||qt(e)?r:Wn(n,t)},Wn=(e,t)=>jn(e)?e.style.getPropertyValue(t):\"\",$n=(e,t)=>{const n=e.dom,r=Wn(n,t);return k.from(r).filter((e=>e.length>0))},Vn=e=>{const t={},n=e.dom;if(jn(n))for(let e=0;e<n.style.length;e++){const r=n.style.item(e);t[r]=n.style[r]}return t},Gn=(e,t)=>{const n=e.dom;Un(n,t),Rn(In(e,\"style\").map(G),\"\")&&On(e,\"style\")},qn=e=>\"rtl\"===Hn(e,\"direction\")?\"rtl\":\"ltr\",Kn=(e,t)=>{const n=(t||document).createElement(\"div\");return n.innerHTML=e,Ht(De.fromDom(n))},Jn=e=>e.dom.innerHTML,Yn=(e,t,n)=>{let r=e.dom;const o=c(n)?n:b;for(;r.parentNode;){r=r.parentNode;const e=De.fromDom(r);if(t(e))return k.some(e);if(o(e))break}return k.none()},Xn=(e,t)=>_(e.dom.childNodes,(e=>t(De.fromDom(e)))).map(De.fromDom),Zn=(e,t)=>{const n=e=>{for(let r=0;r<e.childNodes.length;r++){const o=De.fromDom(e.childNodes[r]);if(t(o))return k.some(o);const s=n(e.childNodes[r]);if(s.isSome())return s}return k.none()};return n(e.dom)},Qn=(e,t,n)=>Yn(e,(e=>Tt(e,t)),n),er=(e,t,n)=>((e,t,n,r,o)=>((e,t)=>Tt(e,t))(n,r)?k.some(n):c(o)&&o(n)?k.none():t(n,r,o))(0,Qn,e,t,n),tr=e=>{const t=nr(e);return{resolve:e=>{const n=e.split(\" \");return A(n,(e=>rr(t,e))).join(\" \")}}},nr=e=>e.replace(/\\./g,\"-\"),rr=(e,t)=>e+\"-\"+t,or=tr(\"ephox-sloth\").resolve,sr=m(or(\"bin\")),ar=[\"b\",\"i\",\"u\",\"sub\",\"sup\",\"strike\"],ir=sr(),lr=ir+kn(\"\"),cr=(\"-100000px\",\"100000px\",e=>\"rtl\"===qn(e)?\"100000px\":\"-100000px\");const ur=(e,t)=>{const n=De.fromTag(\"div\");var r;Cn(n,t),Cn(n,{contenteditable:\"true\",\"aria-hidden\":\"true\"}),zn(n,{position:\"fixed\",top:\"0px\",width:\"100px\",height:\"100px\",overflow:\"hidden\",opacity:\"0\"}),r=n,O([ir,lr],(e=>{_n(r,e)}));const o=e=>Pn(e,lr);return{attach:e=>{gn(n),Bn(n,\"left\",cr(e)),hn(e,n)},focus:()=>{Qn(n,\"body\").each((t=>{e.toOff(t,n)}))},contents:()=>(((e,t)=>{Bt(e).filter(t).each((t=>{const n=Ht(t);fn(e,n),vn(t)})),((e,t)=>{const n=Ht(e);O(n,(e=>{t(e)&&((e,t)=>{const n=Ht(e),r=De.fromTag(\"div\",Rt(e).dom);fn(r,n),cn(e,r),vn(e)})(e)}))})(e,t),O(Ht(e),(e=>{(e=>Te(e)&&!e.dom.hasChildNodes()&&T(ar,ke(e)))(e)&&vn(e)}))})(n,o),{elements:Ht(n),html:Jn(n),offscreen:n}),container:m(n),detach:()=>{vn(n)}}},dr=e=>{const t=At(e.start,e.finish)&&e.soffset===e.foffset;return{startContainer:m(e.start),startOffset:m(e.soffset),endContainer:m(e.finish),endOffset:m(e.foffset),collapsed:m(t)}},hr={set:(e,t)=>{on(e,t.startContainer(),t.startOffset(),t.endContainer(),t.endOffset())},get:e=>ln(e).map(dr)};var mr=e=>t=>{const n=Ct({after:St([\"container\"])}),r=(e=>{const t=De.fromTag(\"br\");let n=k.none();const r=e=>jt(e).dom;return{cleanup:()=>{vn(t)},toOn:(t,o)=>{const s=r(o);n.each((n=>{const r=(e=>e.dom.childNodes.length)(t),o=At(t,n.startContainer())&&r<n.startOffset()?r:n.startOffset(),a=At(t,n.endContainer())&&r<n.endOffset()?r:n.endOffset(),i=bn(n.startContainer(),o,n.endContainer(),a);e.set(s,i)}))},toOff:(o,s)=>{const a=r(s);hn(s,t),n=e.get(a),e.set(a,bn(t,0,t,0))}}})(hr),o=((e,t,n)=>{const r=ur(e,n),o=()=>{e.cleanup();const t=r.contents();r.detach(),s.trigger.after(t.elements,t.html,r.container())},s=Ct({before:St([]),after:St([\"elements\",\"html\",\"container\"])}),a=d;return{instance:m((()=>{s.trigger.before(),r.attach(t),r.focus(),((e,t)=>{((e,t)=>{setTimeout(t,1)})(0,t)})(Rt(t),o)})),destroy:a,events:s.registry}})(r,t,e);return o.events.after.bind((e=>{r.toOn(t,e.container),n.trigger.after(e.container)})),{run:()=>{o.instance()()},events:n.registry}};const pr=tr(\"ephox-cement\").resolve,fr={cacheSuffix:\"\",pasteBinAttrs:{},keepSrc:!1,sanitizer:{sanitizeHtml:m(\"\"),sanitizeText:m(\"\")},tabSpaces:4,cleanFilteredInlineElements:[],indentUseMargin:!1,defaultProtocol:\"https\"},gr=m(pr(\"smartpaste-eph-bin\")),vr=e=>{let t=k.none(),n=[];const r=e=>{o()?s(e):n.push(e)},o=()=>t.isSome(),s=e=>{t.each((t=>{setTimeout((()=>{e(t)}),0)}))};return e((e=>{o()||(t=k.some(e),O(n,s),n=[])})),{get:r,map:e=>vr((t=>{r((n=>{t(e(n))}))})),isReady:o}},yr={nu:vr,pure:e=>vr((t=>{t(e)}))},br=e=>{setTimeout((()=>{throw e}),0)},xr=e=>{const t=t=>{e().then(t,br)};return{map:t=>xr((()=>e().then(t))),bind:t=>xr((()=>e().then((e=>t(e).toPromise())))),anonBind:t=>xr((()=>e().then((()=>t.toPromise())))),toLazy:()=>yr.nu(t),toCached:()=>{let t=null;return xr((()=>(null===t&&(t=e()),t)))},toPromise:e,get:t}},kr=e=>xr((()=>new Promise(e))),wr=e=>((e,t)=>t((t=>{const n=[];let r=0;0===e.length?t([]):O(e,((o,s)=>{o.get((o=>s=>{n[o]=s,r++,r>=e.length&&t(n)})(s))}))})))(e,kr),Sr=()=>{const e={};return{getOrSetIndexed:(t,n)=>(t=>void 0!==e[t])(t)?e[t]:((t,n)=>(e[t]=n,n))(t,n()),waitForLoad:()=>{const t=((e,t)=>{const n=[];return Me(e,((e,r)=>{n.push(t(e,r))})),n})(e,p);return wr(t)}}},Cr=e=>{const t=t=>t(e),n=m(e),r=()=>o,o={tag:!0,inner:e,fold:(t,n)=>n(e),isValue:x,isError:b,map:t=>Ir.value(t(e)),mapError:r,bind:t,exists:t,forall:t,getOr:n,or:r,getOrThunk:n,orThunk:r,getOrDie:n,each:t=>{t(e)},toOptional:()=>k.some(e)};return o},Tr=e=>{const t=()=>n,n={tag:!1,inner:e,fold:(t,n)=>t(e),isValue:b,isError:x,map:t,mapError:t=>Ir.error(t(e)),bind:t,exists:b,forall:x,getOr:p,or:p,getOrThunk:y,orThunk:y,getOrDie:v(String(e)),each:d,toOptional:k.none};return n},Ir={value:Cr,error:Tr,fromOption:(e,t)=>e.fold((()=>Tr(t)),Cr)},Ar=e=>{const t=De.fromDom((e=>{if($t()&&l(e.target)){const t=De.fromDom(e.target);if(Te(t)&&l(t.dom.shadowRoot)&&e.composed&&e.composedPath){const t=e.composedPath();if(t)return U(t)}}return k.from(e.target)})(e).getOr(e.target)),n=()=>e.stopPropagation(),r=()=>e.preventDefault(),o=h(r,n);return((e,t,n,r,o,s,a)=>({target:e,x:t,y:n,stop:r,prevent:o,kill:s,raw:a}))(t,e.clientX,e.clientY,n,r,o,e)},Or=(e,t,n,r)=>{e.dom.removeEventListener(t,n,r)},Er=x,Lr=(e,t,n)=>((e,t,n,r)=>((e,t,n,r,o)=>{const s=((e,t)=>n=>{e(n)&&t(Ar(n))})(n,r);return e.dom.addEventListener(t,s,o),{unbind:g(Or,e,t,s,o)}})(e,t,n,r,!1))(e,t,Er,n),Nr=(e=>{const t=g(xe,e);xe(\"callbacks\",t());const n=(n,o)=>{const s=t(),a=(e=>{const t=void 0===e.count?0:e.count,n=\"callback_\"+t;return e.count=t+1,n})(s);return s.callbacks[a]=(...e)=>{o||r(a),n(...e)},(t=>e+\".callbacks.\"+t)(a)},r=e=>{const n=e.substring(e.lastIndexOf(\".\")+1),r=t();void 0!==r.callbacks[n]&&delete r.callbacks[n]};return{ephemeral:e=>n(e,!1),permanent:e=>n(e,!0),unregister:r}})(\"ephox.henchman.features\"),_r=(e,t)=>yr.nu((n=>{const o=t=>{O(a,(e=>{e.unbind()})),n(t.fold((t=>Ir.error(t+'Unable to download editor stylesheets from \"'+e+'\"')),Ir.value))},s=((e,t)=>{const n=De.fromDom(document),r=De.fromTag(\"link\",n.dom);return Cn(r,{rel:\"stylesheet\",type:\"text/css\",href:e}),((e,t)=>{const n=(e=>{const t=e.dom.head;if(null==t)throw new Error(\"Head is not available yet\");return De.fromDom(t)})(e);hn(n,t)})(n,r),r})(e),a=[Lr(s,\"load\",(e=>{(e=>{var t;try{const n=null===(t=e.target.dom.sheet)||void 0===t?void 0:t.cssRules;return r(n)&&0===n.length}catch(e){}return!1})(e)?o(Ir.error(\"\")):t(o)})),Lr(s,\"error\",g(o,Ir.error(\"\")))]})),Dr=(()=>{const e=Sr(),t=()=>e.waitForLoad();return{preload:()=>{t().get(p)},addStylesheet:(t,n)=>e.getOrSetIndexed(t,(()=>_r(t,n))),addScript:(t,n)=>e.getOrSetIndexed(t,(()=>(e=>yr.nu((t=>{const n=()=>{o.unbind(),s.unbind()},r=De.fromTag(\"script\");Sn(r,\"src\",e),Sn(r,\"type\",\"text/javascript\"),Sn(r,\"async\",\"async\"),Sn(r,\"data-main\",Nr.ephemeral((e=>{t(Ir.value(e))})));const o=Lr(r,\"error\",(()=>{n(),t(Ir.error(\"Error loading external script tag \"+e))})),s=Lr(r,\"load\",n);hn(De.fromDom(document.head),r)})))(t).map(n))),waitForLoad:t}})(),Pr={loadScript:(e,t)=>new Promise(((e,n)=>{((e,t)=>Dr.addScript(e,t))(t,p).get((t=>{t.fold(n,e)}))}))},Rr=Nt([{error:[\"message\"]},{paste:[\"elements\",\"correlated\"]},{cancel:[]},{incomplete:[\"elements\",\"correlated\",\"message\"]}]),Mr=(e,t,n,r,o)=>e.fold(t,n,r,o),jr=Rr.error,Fr=Rr.paste,Ur=Rr.cancel,Br=Rr.incomplete,zr=[\"officeStyles\",\"htmlStyles\",\"gdocsStyles\",\"isWord\",\"isGoogleDocs\",\"proxyBin\",\"isInternal\"],Hr=(e,t)=>{const n={};return O(zr,(r=>{t[r].or(e[r]).each((e=>{n[r]=e}))})),Wr(n)},Wr=e=>j(zr,(t=>k.from(e[t]))),$r=e=>({response:jr(e),bundle:Wr({})}),Vr=e=>Promise.resolve($r(e)),Gr={response:Ur(),bundle:Wr({})},qr=e=>l(e.then),Kr=(e,t,n,r)=>({steps:e,input:t,label:n,capture:r}),Jr=(e,t)=>{const n=Hr(e.bundle,t.bundle),r=((e,t)=>Mr(e,k.none,k.none,k.none,((e,n,r)=>Mr(t,k.none,((e,t)=>k.some(Rr.incomplete(e,t,r))),k.none,k.none))).getOr(t))(e.response,t.response);return{response:r,bundle:n}},Yr=(e,t,n)=>{const r=()=>e,o=()=>{const r=n(t,e);return qr(r)?r.then((t=>Jr(e,t))):Jr(e,r)};return Mr(e.response,r,o,r,o)},Xr=(Zr=(e,t)=>t,(...e)=>{if(0===e.length)throw new Error(\"Can't merge zero objects\");const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const e in r)ze(r,e)&&(t[e]=Zr(t[e],r[e]))}return t});var Zr;const Qr=Nt([{starts:[\"value\",\"f\"]},{pattern:[\"regex\",\"f\"]},{contains:[\"value\",\"f\"]},{exact:[\"value\",\"f\"]},{all:[]},{not:[\"stringMatch\"]}]),eo=p,to=(e,t)=>e.fold(((e,n)=>0===n(t).indexOf(n(e))),((e,n)=>e.test(n(t))),((e,n)=>n(t).indexOf(n(e))>=0),((e,n)=>n(t)===n(e)),x,(e=>!to(e,t))),no={starts:Qr.starts,pattern:Qr.pattern,contains:Qr.contains,exact:Qr.exact,all:Qr.all,not:Qr.not,cata:(e,t,n,r,o,s,a)=>e.fold(t,n,r,o,s,a),matches:to,caseSensitive:eo,caseInsensitive:e=>e.toLowerCase()},ro=(e,t)=>{const n=ke(e),r=t.name,o=void 0!==t.condition?t.condition:x;return no.matches(r,n)&&o(e)},oo=(e,t,n)=>{const r=(e=>{const t={},n=l(e)?e.split(\";\"):[];return O(n,(e=>{const n=e.split(\":\");2===n.length&&(t[G(n[0])]=G(n[1]))})),t})(e.dom.getAttribute(\"style\")),o={};return O(t,(e=>{const t=r[e];void 0===t||n(t,e)||(o[e]=t)})),o},so=e=>{const t=Pe(e);return A(t,(t=>t+\": \"+e[t])).join(\"; \")},ao=[\"mso-list\"],io=(e,t)=>{const n=oo(e,ao,t),r=((e,t)=>{const n=e.dom.style,r=i(n)?[]:n,o={};return O(r,(n=>{$n(e,n).each((e=>{t(e,n)||(o[n]=e)}))})),o})(e,t);((e,t,n)=>{Sn(e,\"style\",\"\");const r=Be(t),o=Be(n);if(0===r&&0===o)On(e,\"style\");else if(0===r)Sn(e,\"style\",so(n));else{Me(t,((t,n)=>{Bn(e,n,t)}));const r=Tn(e,\"style\"),s=o>0?so(n)+\"; \":\"\";Sn(e,\"style\",s+r)}})(e,r,n)},lo=(e,t)=>{const n=((e,t)=>{const n={};return O(e.dom.attributes,(e=>{t(e.value,e.name)||(n[e.name]=e.value)})),n})(e,t);((e,t)=>{const n=A(e.dom.attributes,(e=>e.name));Be(t)!==n.length&&((e,t,n)=>{O(t,(t=>{On(e,t)})),Me(n,((t,n)=>{Sn(e,n,t)}))})(e,n,t)})(e,n)},co=(e,t)=>{io(De.fromDom(e),t)},uo=(e,t,n)=>{e(n,((e,r)=>I(t,(t=>((e,t,n,r)=>{const o=r.name,s=void 0!==r.condition?r.condition:x,a=void 0!==r.value?r.value:no.all();return no.matches(o,n)&&no.matches(a,t)&&s(e)})(n,e,r,t)))))},ho=\"startElement\",mo=\"endElement\",po=\"text\",fo=\"comment\",go=(e,t,n)=>{let r,o,s;const a=De.fromDom(e);switch(e.nodeType){case 1:t?r=mo:(r=ho,zn(a,n||{}));const i=e;o=\"HTML\"!==i.scopeName&&i.scopeName&&i.tagName&&i.tagName.indexOf(\":\")<=0?(i.scopeName+\":\"+i.tagName).toLowerCase():i.tagName.toLowerCase();break;case 3:r=po,s=e.nodeValue;break;case 8:r=fo,s=e.nodeValue;break;default:console.log(\"WARNING: Unsupported node type encountered: \"+e.nodeType)}return{getNode:m(e),tag:()=>o,type:()=>r,text:()=>s}},vo=(e,t,n,r)=>{const o=r.createElement(e);return Me(t,((e,t)=>{o.setAttribute(t,e+\"\")})),go(o,!1,n)},yo=(e,t)=>go(t.createElement(e),!0),bo=yo(\"html\",window.document),xo=e=>{const t=e.createDocumentFragment();let n=t;const r=e=>{n.appendChild(e)};return{dom:t,receive:o=>{switch(o.type()){case ho:s=o.getNode().cloneNode(!1),r(s),n=s;break;case po:(t=>{const n=e.createTextNode(t.text());r(n)})(o);break;case mo:(()=>{const e=n.parentNode;n=null===e?t:e})();break;case fo:break;default:throw new Error(\"Unsupported token type: \"+o.type())}var s},label:\"SERIALISER\"}},ko=e=>t=>{((e,t)=>{const n=Xr({styles:[],attributes:[],classes:[],tags:[]},t),r=Jt(e,\"*\");O(r,(e=>{uo(io,n.styles,e),uo(lo,n.attributes,e),O(n.classes,(t=>{const n=An(e,\"class\")?(e=>Ln(e)?(e=>{const t=e.dom.classList,n=new Array(t.length);for(let e=0;e<t.length;e++){const r=t.item(e);null!==r&&(n[e]=r)}return n})(e):Nn(e))(e):[];O(n,(n=>{no.matches(t.name,n)&&Dn(e,n)}))}))}));const o=Jt(e,\"*\");O(o,(e=>{I(n.tags,g(ro,e))&&vn(e)}))})(t,e)},wo=e=>t=>{((e,t)=>{const n=Xr({tags:[]},t),r=Jt(e,\"*\");O(r,(e=>{I(n.tags,g(ro,e))&&yn(e)}))})(t,e)},So=e=>t=>{((e,t)=>{const n=Xr({tags:[]},t),r=Jt(e,\"*\");O(r,(e=>{_(n.tags,g(ro,e)).each((t=>{t.mutate(e)}))}))})(t,e)},Co=e=>t=>{const n=Jn(t),r=((e,t,n)=>{const r=xo(e),o=((e,t=window.document)=>{const n=t.createElement(\"div\");t.body.appendChild(n),n.style.position=\"absolute\",n.style.left=\"-10000px\",n.innerHTML=e;let r=n.firstChild||bo;const o=[];let s=!1;return{hasNext:()=>void 0!==r,next:()=>{const e=r,a=r,i=s;return!s&&e.firstChild?(o.push(e),r=e.firstChild):s||1!==e.nodeType?e.nextSibling?(r=e.nextSibling,s=!1):(r=o.pop(),s=!0):s=!0,a===bo||r||(t.body.removeChild(n),r=bo),(l=a)===bo?l:l?go(l,i):void 0;var l}}})(t,e),s=((e,t,n)=>{let r=n;for(let n=t.length-1;n>=0;n--)r=t[n](r,{},e);return r})(e,n,r);for(;o.hasNext();){const e=o.next();s.receive(e)}return r.dom})(Rt(t).dom,n,e);gn(t),t.dom.appendChild(r)},To=(e,t,n)=>{const r=De.fromTag(\"div\",e.dom);zn(r,{position:\"fixed\",left:\"-100000px\",top:\"0px\"}),hn((e=>{const t=e.dom.body;if(null==t)throw new Error(\"Body is not available yet\");return De.fromDom(t)})(e),r),r.dom.innerHTML=t,O(n,(e=>{e(r)}));const o=Jn(r);return vn(r),o},Io=(e,t)=>n=>{const r=e=>{n.receive(e)},o=(e,t,n)=>(n=void 0!==n?n:e.type()===mo,go(t,n,{})),s={emit:r,emitTokens:e=>{O(e,r)},receive:t=>{e(s,t,o)},document:window.document};return t(s),s},Ao=(e,t)=>{if(void 0===e||void 0===t)throw console.trace(),new Error(\"brick\");e.nextFilter.set(t)},Oo=(e,t,n=!1)=>e===t||l(e)&&l(t)&&e.tag===t.tag&&e.type===t.type&&(n||e.variant===t.variant),Eo=(e,t)=>An(De.fromDom(t.getNode()),\"data-list-level\"),Lo=(e,t,n,r)=>{const o=n.getCurrentListType(),s=n.getCurrentLevel()==r.level()?o:null;return(a=r.emblems(),i=s,_(a,(e=>\"ul\"===e.tag||l(i)&&Oo(e,i,!0))).orThunk((()=>U(a)))).filter((e=>!(\"ol\"===e.tag&&(e=>{if(T([\"p\"],e.tag())){const t=((e,t)=>{const n=De.fromDom(e.getNode());return Tn(n,\"class\")})(e);return l(t)&&/^MsoHeading/.test(t)}return!0})(t))));var a,i},No=e=>(t,n,r)=>{const o=r,s=(e=>{const t=parseInt(Tn(e,\"data-list-level\"),10),n=Tn(e,\"data-list-emblems\"),r=l(n)?JSON.parse(n):[];return On(e,\"data-list-level\"),On(e,\"data-list-emblems\"),{level:m(t),emblems:m(r)}})(De.fromDom(o.getNode()));n.originalToken.set(o);const a=((e,t,n)=>(Lo(n.listType.get(),e,n.emitter,t).each(n.listType.set),((e,t,n)=>({level:m(e),token:m(t),type:m(n)}))(t.level(),n.originalToken.get(),n.listType.get())))(o,s,n);n.emitter.openItem(a.level(),a.token(),a.type()),Ao(n,e.inside())},_o=(e,t,n)=>({pred:e,action:t,label:m(n)});var Do=(e,t,n)=>{const r=(e,r,o)=>{_(t,(e=>e.pred(r,o))).fold(m(n),(e=>e.action))(e,r,o)};return r.toString=()=>\"Handlers for \"+e,r};const Po=(e,t)=>({state:m(e),result:m(t)}),Ro=(e,t)=>({state:m(e),value:m(t)}),Mo=(e,t,n,r)=>({level:m(e),type:m(t),types:m(n),items:m(r)}),jo=e=>{const t=e.items().slice(0);if(t.length>0&&\"p\"!==t[t.length-1]){const n=t[t.length-1];t[t.length-1]=\"p\";const r=Mo(e.level(),e.type(),e.types(),t);return Ro(r,k.some(n))}return Ro(e,k.none())},Fo=(e,t,n)=>{let r=[],o=e;for(;t(o);){const e=n(o);o=e.state(),r=r.concat(e.result())}return Po(o,r)},Uo=(e,t,n)=>{const r=t.start&&t.start>1?{start:t.start}:{},o=e.level()+1,s=t,a=e.types().concat([t]),i=[g(vo,t.tag,r,n)],l=Mo(o,s,a,e.items());return Po(l,i)},Bo=e=>{const t=e.types().slice(0),n=[g(yo,t.pop().tag)],r=e.level()-1,o=t[t.length-1],s=Mo(r,o,t,e.items());return Po(s,n)},zo=(e,t,n)=>{const r=(c=t)?(e=>{const t=((e,t)=>{const n=De.fromDom(e.getNode());return Hn(n,\"margin-left\")})(e);return l(t)&&\"0px\"!==t?{\"margin-left\":t}:{}})(c):{\"list-style-type\":\"none\"},o=e.type()&&!Oo(e.type(),n)?((e,t)=>{const n=Bo(e),r=Uo(n.state(),t,t.type?{\"list-style-type\":t.type}:{});return Po(r.state(),n.result().concat(r.result()))})(e,n):Po(e,[]),s=[g(vo,\"li\",{},r)],a=((e,t)=>{const n=e.items().slice(0),r=void 0!==t&&\"p\"!==t?k.some(t):k.none();r.fold((()=>{n.push(\"p\")}),(e=>{n.push(e)}));const o=Mo(e.level(),e.type(),e.types(),n);return Ro(o,r)})(o.state(),t&&t.tag()),i=a.value().map((e=>{const n=t;return co(n.getNode(),x),[m(n)]})).getOr([]);var c;return Po(a.state(),o.result().concat(s).concat(i))},Ho=e=>{const t=g(yo,\"li\"),n=jo(e),r=n.value().fold((()=>[t]),(e=>[g(yo,e),t]));return Po(n.state(),r)},Wo=e=>{if(0===e.length)throw new Error(\"Compose must have at least one element in the list\");const t=e[e.length-1],n=R(e,(e=>e.result()));return Po(t.state(),n)},$o=e=>{const t=Ho(e),n=Bo(t.state());return Wo([t,n])},Vo=(e,t)=>((e,t,n)=>Fo(e,(e=>e.level()>t),n))(e,t,$o),Go=(e,t,n,r)=>{const o=e.level()>t?Vo(e,t):Po(e,[]),s=o.state().level()===t?((e,t,n)=>{const r=e.level()>0?Ho(e):Po(e,[]),o=zo(r.state(),n,t);return Wo([r,o])})(o.state(),r,n):((e,t,n,r)=>{const o=n>1?jo(e):Ro(e,k.none()),s=o.value().map((e=>[g(yo,e)])).getOr([]),a=((e,t,n,r)=>((e,t,n)=>Fo(e,(e=>e.level()<t),n))(e,n,(e=>((e,t,n,r)=>{const o=e.level()===n-1&&t.type?{\"list-style-type\":t.type}:{},s=Uo(e,t,o),a=zo(s.state(),s.state().level()==n?r:void 0,t);return Wo([s,a])})(e,t,n,r))))(o.state(),t,n,r);return Po(a.state(),s.concat(a.result()))})(o.state(),r,t,n);return Wo([o,s])},qo=Vo,Ko=[\"disc\",\"circle\",\"square\"],Jo={getCurrentListType:()=>Yo().getCurrentListType(),getCurrentLevel:()=>Yo().getCurrentLevel(),closeAllLists:()=>Yo().closeAllLists(),openItem:(e,t,n)=>Yo().openItem(e,t,n)};let Yo=()=>({getCurrentListType:m({}),getCurrentLevel:m(1),closeAllLists:d,openItem:p});const Xo={inside:()=>Qo,outside:()=>es},Zo=(()=>{let e=!1;return{check:t=>!(!e||t.type()!==po)||(t.type()===ho&&\"style\"===t.tag()?(e=!0,!0):t.type()===mo&&\"style\"===t.tag()&&(e=!1,!0))}})(),Qo=(e=>Do(\"Inside.List.Item\",[_o(((e,t)=>{const n=e.originalToken.get();return t.type()===mo&&null!==n&&t.tag()===n.tag()}),((t,n)=>{Ao(n,e.outside())}),\"Closing open tag\")],((e,t,n)=>{e.emit(n)})))(Xo),es=(e=>Do(\"Outside.List.Item\",[_o(Eo,No(e),\"Data List ****\"),_o(((e,t)=>t.type()===po&&(e=>e.type()===po&&/^[\\s\\u00A0]*$/.test(e.text()))(t)),((e,t,n)=>{e.emit(n)}),\"Whitespace\")],((t,n,r)=>{n.emitter.closeAllLists(),t.emit(r),Ao(n,e.outside())})))(Xo),ts=(e=>{const t=fe(e),n=fe(null),r=fe(null);return{reset:o=>{t.set(e),n.set(null),r.set(null),Yo=m(((e,t)=>{let n=Mo(0,void 0,[],[]);const r=n=>{O(n.result(),(n=>{const r=n(t);e.emit(r)}))};return{closeAllLists:()=>{const e=qo(n,0);n=e.state(),r(e)},openItem:(e,t,o)=>{if(!o)return;const s=((e,t)=>\"ul\"===e.tag&&Ko[t-1]===e.type?{tag:\"ul\"}:e)(o,e),a=Go(n,e,t,s);n=a.state(),r(a)},getCurrentListType:()=>n.type(),getCurrentLevel:()=>n.level()}})(o,o.document))},nextFilter:t,originalToken:n,listType:r,emitter:Jo}})(es);var ns=Io(((e,t,n)=>{Zo.check(t)||((e,t,n)=>{t.nextFilter.get()(e,t,n)})(e,ts,t)}),ts.reset);const rs=e=>e.dom.textContent,os=[{regex:/^\\(?[dc][\\.\\)]$/,type:{tag:\"ol\",type:\"lower-alpha\"}},{regex:/^\\(?[DC][\\.\\)]$/,type:{tag:\"ol\",type:\"upper-alpha\"}},{regex:/^\\(?M*(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})[\\.\\)]$/,type:{tag:\"ol\",type:\"upper-roman\"}},{regex:/^\\(?m*(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})[\\.\\)]$/,type:{tag:\"ol\",type:\"lower-roman\"}},{regex:/^\\(?[0-9]+[\\.\\)]$/,type:{tag:\"ol\"}},{regex:/^([0-9]+\\.)*[0-9]+\\.?$/,type:{tag:\"ol\",variant:\"outline\"}},{regex:/^\\(?[a-z]+[\\.\\)]$/,type:{tag:\"ol\",type:\"lower-alpha\"}},{regex:/^\\(?[A-Z]+[\\.\\)]$/,type:{tag:\"ol\",type:\"upper-alpha\"}}],ss={\"\\u2022\":{tag:\"ul\",type:\"disc\"},\"\\xb7\":{tag:\"ul\",type:\"disc\"},\"\\xa7\":{tag:\"ul\",type:\"square\"}},as={o:{tag:\"ul\",type:\"circle\"},\"-\":{tag:\"ul\",type:\"disc\"},\"\\u25cf\":{tag:\"ul\",type:\"disc\"},\"\\ufffd\":{tag:\"ul\",type:\"circle\"}},is=(e,t)=>a(e.variant)?\"(\"===t.charAt(0)?\"()\":\")\"===t.charAt(t.length-1)?\")\":\".\":e.variant,ls=e=>{const t=e.split(\".\"),n=(()=>{if(0===t.length)return e;const n=t[t.length-1];return 0===n.length&&t.length>1?t[t.length-2]:n})(),r=parseInt(n,10);return isNaN(r)?{}:{start:r}},cs=e=>{const t=(e=>oo(e,[\"mso-list\"],b)[\"mso-list\"])(e),n=l(t)&&/ level([0-9]+)/.exec(t);return n&&n[1]?k.some(parseInt(n[1],10)):k.none()},us=(e,t)=>{const n=((e,t)=>{const n=as[e]?[as[e]]:[],r=((e,t)=>t&&ss[e]?[ss[e]]:t?[{tag:\"ul\",variant:e}]:[])(e,t),o=R(os,(t=>t.regex.test(e)?[Xr(t.type,ls(e),{variant:is(t.type,e)})]:[])),s=n.concat(r).concat(o);return A(s,(t=>void 0!==t.variant?t:Xr(t,{variant:e})))})(rs(e).trim(),t);return n.length>0?k.some(n):k.none()},ds=e=>Xn(e,Ce).bind(Bt).filter(Ee(\"span\")),hs=e=>Zn(e,(e=>!!(Te(e)?oo(e,[\"mso-list\"],b):{})[\"mso-list\"])),ms=e=>Te(e)&&$n(e,\"font-family\").exists((e=>T([\"wingdings\",\"symbol\"],e.toLowerCase()))),ps=(e,t,n,r)=>{((e,t,n)=>{Sn(e,\"data-list-level\",t);const r=JSON.stringify(n);Sn(e,\"data-list-emblems\",r)})(e,t,n),(e=>{const t=((e,t)=>{const n=t.getOr(x);return(e=>{const t=[];for(;null!==e.nextNode();)t.push(De.fromDom(e.currentNode));return t})(document.createTreeWalker(e.dom,NodeFilter.SHOW_COMMENT,{acceptNode:e=>n(e.nodeValue)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}))})(e,k.none());O(t,vn)})(e),O(r,vn),On(e,\"style\"),On(e,\"class\")},fs=e=>(e=>cs(e).bind((t=>(e=>Xn(e,ms))(e).bind((n=>us(n,!0).map((r=>({mutate:()=>{ps(e,t,r,[n])}}))))))))(e).orThunk((()=>(e=>cs(e).bind((t=>ds(e).bind((n=>us(n,ms(n)).map((r=>({mutate:()=>{ps(e,t,r,[n])}}))))))))(e))).orThunk((()=>(e=>cs(e).bind((t=>ds(e).bind((n=>us(n,ms(n)).map((r=>({mutate:()=>{ps(e,t,r,[n])}}))))))))(e))).orThunk((()=>(e=>\"p\"!==ke(e)?k.none():cs(e).bind((t=>hs(e).bind((n=>us(n,!1).map((r=>({mutate:()=>{ps(e,t,r,[Ft(n).getOr(n)])}}))))))))(e))).orThunk((()=>(e=>\"p\"!==ke(e)?k.none():hs(e).bind((t=>{const n=Ft(t).getOr(t),r=ms(n);return us(t,r).bind((t=>(e=>$n(e,\"margin-left\").bind((e=>{const t=parseInt(e,10);return isNaN(t)?k.none():k.some(Math.max(1,Math.ceil(t/18)))})))(e).map((r=>({mutate:()=>{ps(e,r,t,[n])}})))))})))(e))),gs=So({tags:[{name:no.pattern(/^(p|h\\d+)$/,no.caseInsensitive),mutate:e=>{fs(e).each((e=>{e.mutate()}))}}]}),vs=ns,ys=e=>{return(o=e,Ce(o)?(t=o,n=\"v:shape\",k.from((r=t,r.dom.nodeValue)).bind((e=>{const t=e.indexOf(\"]>\"),r=(e=>{try{return(new DOMParser).parseFromString(e,\"text/html\").body}catch(t){const n=document.implementation.createHTMLDocument(\"\").body;return n.innerHTML=e,n}})(`<div>${e.slice(t+2,e.lastIndexOf(\"<![\"))}</div>`);return Zn(De.fromDom(r),(e=>ke(e)===n))}))):k.none()).map((e=>{const t=Tn(e,\"o:spid\"),n=void 0===t?In(e,\"id\").getOr(\"\"):t,r=De.fromTag(\"img\");return _n(r,\"rtf-data-image\"),Sn(r,\"data-image-id\",n.substr(7)),Sn(r,\"data-image-type\",\"code\"),((e,t)=>{const n=e.dom;Me(t,((e,t)=>{e.fold((()=>{Un(n,t)}),(e=>{Fn(n,t,e)}))}))})(r,{width:$n(e,\"width\"),height:$n(e,\"height\")}),r}));var t,n,r,o},bs=e=>{if(Ee(\"img\")(e)){const t=Tn(e,\"src\");if(null!=t&&$(t,\"file://\")){const n=(e=>((e,t)=>De.fromDom(e.dom.cloneNode(!1)))(e))(e),r=t.split(/[\\/\\\\]/),o=r[r.length-1];return Sn(n,\"data-image-id\",o),On(n,\"src\"),Sn(n,\"data-image-type\",\"local\"),_n(n,\"rtf-data-image\"),k.some(n)}return k.none()}return k.none()};var xs;!function(e){e[e.Word=0]=\"Word\",e[e.GoogleDocs=1]=\"GoogleDocs\",e[e.Html=2]=\"Html\"}(xs||(xs={}));const ks=e=>t=>{In(t,e.attrName).each((n=>{const r=l(e.styleName)?e.styleName:e.attrName;if($n(t,r).isNone()){const o=e.mapValue(n);Bn(t,r,o)}On(t,e.attrName)}))},ws=e=>{const t=ke(e);return\"td\"===t||\"tr\"===t||\"col\"===t||\"th\"===t},Ss=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,Cs=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,Ts=e=>H(e,\"#\").toUpperCase(),Is=e=>{const t=e.toString(16);return(1===t.length?\"0\"+t:t).toUpperCase()},As=e=>(e=>({value:Ts(e)}))(Is(e.red)+Is(e.green)+Is(e.blue)),Os=/^\\s*rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)\\s*$/i,Es=/^\\s*rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?(?:\\.\\d+)?)\\s*\\)\\s*$/i,Ls=(e,t,n,r)=>({red:e,green:t,blue:n,alpha:r}),Ns=(e,t,n,r)=>{const o=parseInt(e,10),s=parseInt(t,10),a=parseInt(n,10),i=parseFloat(r);return Ls(o,s,a,i)},_s=[\"background-repeat-x\",\"background-repeat-y\"],Ds=e=>{return\"currentcolor\"===e||\"transparent\"===e?e:\"#\"+(t=H(e,\"#\").toUpperCase(),(e=>Ss.test(e)||Cs.test(e))(t)?k.some({value:Ts(t)}):k.none()).orThunk((()=>(e=>{if(\"transparent\"===e)return k.some(Ls(0,0,0,0));const t=Os.exec(e);if(null!==t)return k.some(Ns(t[1],t[2],t[3],\"1\"));const n=Es.exec(e);return null!==n?k.some(Ns(n[1],n[2],n[3],n[4])):k.none()})(e).map(As))).getOrThunk((()=>{const t=document.createElement(\"canvas\");t.height=1,t.width=1;const n=t.getContext(\"2d\");n.clearRect(0,0,t.width,t.height),n.fillStyle=\"#FFFFFF\",n.fillStyle=e,n.fillRect(0,0,1,1);const r=n.getImageData(0,0,1,1).data,o=r[0],s=r[1],a=r[2],i=r[3];return As(Ls(o,s,a,i))})).value;var t},Ps=(e,t)=>{if(a(e))return\"\";switch(t){case\"color\":return Ds(e);case\"font-family\":return e.replace(/['\"]/g,\"\");case\"font-weight\":return(e=>{switch(e){case\"bold\":return\"700\";case\"normal\":return\"400\";default:return e}})(e);default:return V(t,\"-color\")?Ds(e):(e=>e.replace(/^0(pt|px|pc|in|cm|mm|Q|cap|ch|ic|em|ex|lh|rlh|rem|vw|vh|vb|vi|vmax|vmin|%)$/,\"0\"))(e)}},Rs=So({tags:[{name:no.pattern(/^(p|div)$/,no.caseInsensitive),mutate:e=>{const t=\"ltr\"===qn(e),n=t?\"margin-left\":\"margin-right\",r=t?\"padding-left\":\"padding-right\";$n(e,n).each((()=>{const t=Hn(e,n);Bn(e,r,t),Gn(e,n)}))}}]}),Ms=wo({tags:[{name:no.exact(\"b\",no.caseInsensitive),condition:e=>In(e,\"id\").exists((e=>$(e,\"docs-internal-guid\")))}]}),js=ko({attributes:[{name:no.exact(\"id\",no.caseInsensitive),value:no.starts(\"docs-internal-guid\",no.caseInsensitive)}]}),Fs=[So({tags:[{name:no.exact(\"col\",no.caseInsensitive),mutate:ks({attrName:\"width\",mapValue:e=>e.replace(/^(\\d+)$/,\"$1px\")})}]})],Us=e=>So({tags:[{name:no.exact(e.matchTag,no.caseInsensitive),mutate:t=>{var n,r;(n=Vn(t),r=e.key,ze(n,r)?k.from(n[r]):k.none()).exists((t=>T(e.values,t)))&&(mn(t,De.fromTag(e.newTag)),Gn(t,e.key),o(e.removeExtra)&&O(e.removeExtra,(e=>Gn(t,e))))}}]}),Bs=[Us({matchTag:\"span\",key:\"font-weight\",values:[\"700\",\"bold\"],newTag:\"strong\"}),Us({matchTag:\"span\",key:\"font-style\",values:[\"italic\"],newTag:\"em\"}),Us({matchTag:\"span\",key:\"vertical-align\",values:[\"sub\"],newTag:\"sub\",removeExtra:[\"font-size\"]}),Us({matchTag:\"span\",key:\"vertical-align\",values:[\"super\"],newTag:\"sup\",removeExtra:[\"font-size\"]})],zs=e=>t=>{const n=[],r={border:e.browser.isFirefox()?\"medium none\":\"none\",\"text-decoration\":\"none\"},o=(e,t)=>{if(!a(t)){const r=De.fromTag(ke(e));hn(t,r),n.push({me:e,fake:r})}const r=L(Ht(e),Te);O(r,(t=>o(t,e)))};o(t);const s=A(n,(e=>{const{fake:t,me:n}=e,o=Vn(n),s=Ue(o,((e,r)=>{const o=((e,t)=>T(_s,t)?$n(e,\"background-repeat\"):k.none())(n,r).getOr(e),s=((e,t)=>T(_s,t)?Hn(e,\"background-repeat\"):Hn(e,t))(t,r);return Ps(o,r)===Ps(s,r)})),a=Ue(r,((e,t)=>Rn($n(n,t),e)));return{fake:t,me:n,toRemove:s,toPreserve:a}}));O(s,(e=>{const{me:t,toRemove:n,toPreserve:r,fake:o}=e;Me(n,((e,n)=>{Gn(t,n)})),Me(r,((e,n)=>{Bn(t,n,e)})),vn(o)}))},Hs=[\"p\",\"div\",\"article\",\"aside\",\"details\",\"dt\",\"figcaption\",\"footer\",\"form\",\"fieldset\",\"header\",\"hgroup\",\"html\",\"main\",\"nav\",\"section\",\"summary\",\"body\",\"dl\",\"multicol\",\"dd\",\"figure\",\"address\",\"center\",\"blockquote\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"listing\",\"xmp\",\"pre\",\"plaintext\",\"menu\",\"dir\",\"ul\",\"ol\",\"li\",\"hr\",\"table\",\"tbody\",\"thead\",\"tfoot\",\"th\",\"tr\",\"td\",\"caption\"],Ws=ko({styles:[{name:no.exact(\"background-color\",no.caseInsensitive),value:no.exact(\"transparent\",no.caseInsensitive)},{name:no.exact(\"white-space\",no.caseInsensitive),value:no.starts(\"pre\",no.caseInsensitive)},{name:no.exact(\"white-space-collapse\",no.caseInsensitive),value:no.starts(\"preserve\",no.caseInsensitive)},{name:no.exact(\"text-wrap\",no.caseInsensitive),value:no.not(no.exact(\"wrap\",no.caseInsensitive))},{name:no.pattern(/^overflow(-[xy])?$/,no.caseInsensitive),condition:e=>ws(e)&&Rn($n(e,\"overflow\"),\"hidden\")},{name:no.exact(\"overflow-wrap\",no.caseInsensitive),condition:ws},{name:no.exact(\"table-layout\",no.caseInsensitive),value:no.exact(\"fixed\",no.caseInsensitive),condition:Ee(\"table\")},{name:no.exact(\"line-height\",no.caseInsensitive),value:no.exact(\"1.38\",no.caseInsensitive)},{name:no.exact(\"vertical-align\",no.caseInsensitive),value:no.exact(\"baseline\",no.caseInsensitive)},{name:no.exact(\"font-style\",no.caseInsensitive),value:no.exact(\"normal\",no.caseInsensitive)},{name:no.exact(\"font-variant\",no.caseInsensitive),value:no.exact(\"normal\",no.caseInsensitive)},{name:no.exact(\"background-color\",no.caseInsensitive),value:no.exact(\"transparent\",no.caseInsensitive)},{name:no.starts(\"padding\",no.caseInsensitive),condition:ws},{name:no.pattern(/^text-decoration(-(line|thickness|style|color))?$/,no.caseInsensitive),condition:e=>!Ee(\"a\")(e)&&Rn($n(e,\"text-decoration\"),\"none\")}],attributes:[{name:no.exact(\"aria-level\",no.caseInsensitive),condition:Ee(\"li\")},{name:no.exact(\"dir\",no.caseInsensitive),value:no.exact(\"ltr\",no.caseInsensitive),condition:e=>T(Hs,ke(e))},{name:no.exact(\"role\",no.caseInsensitive),value:no.exact(\"presentation\",no.caseInsensitive),condition:e=>Ee(\"p\")(e)&&Ft(e).exists(Ee(\"li\"))}]}),$s=ko({styles:[{name:no.exact(\"text-align\",no.caseInsensitive),value:no.exact(\"right\",no.caseInsensitive),condition:e=>\"rtl\"===qn(e)}]}),Vs=So({tags:[{name:no.exact(\"p\",no.caseInsensitive),condition:e=>{const t=t=>$n(e,t).map((e=>parseInt(e,10))).filter((e=>!isNaN(e))).getOr(0),n=qn(e);return t(\"text-indent\")+t(\"rtl\"===n?\"padding-right\":\"padding-left\")===0},mutate:e=>{const t=qn(e);Gn(e,\"text-indent\"),Gn(e,\"rtl\"===t?\"padding-right\":\"padding-left\")}}]}),Gs=e=>t=>Pn(t,e),qs=ve(Ie,\"text\"),Ks=e=>qs.get(e),Js=e=>{const t=e.dom.attributes;return null==t||0===t.length||1===t.length&&\"style\"===t[0].name},Ys=(e,t)=>{const n=De.fromTag(e);cn(t,n);const r=t.dom.attributes;O(r,(e=>{n.dom.setAttribute(e.name,e.value)}));const o=Ht(t);return fn(n,o),vn(t),n},Xs=Ee(\"li\"),Zs=e=>Ut(e).bind((e=>Ie(e)&&0===Ks(e).trim().length?Zs(e):Xs(e)?k.some(e):k.none())),Qs=e=>{const t=Ys(\"span\",e),n={\"font-size\":{1:\"8pt\",2:\"10pt\",3:\"12pt\",4:\"14pt\",5:\"18pt\",6:\"24pt\",7:\"36pt\"}};Me({face:\"font-family\",size:\"font-size\",color:\"color\"},((e,r)=>{In(t,r).each((o=>{const s=n[e],a=void 0!==s&&void 0!==s[o]?s[o]:o;Bn(t,e,a),On(t,r)}))}))},ea=ko({tags:[{name:no.exact(\"script\",no.caseInsensitive)},{name:no.exact(\"link\",no.caseInsensitive)},{name:no.exact(\"style\",no.caseInsensitive),condition:e=>0===Jn(e).length}],attributes:[{name:no.starts(\"on\",no.caseInsensitive)},{name:no.exact('\"',no.caseInsensitive)},{name:no.exact(\"lang\",no.caseInsensitive)},{name:no.exact(\"language\",no.caseInsensitive)}],styles:[{name:no.all(),value:no.pattern(/OLE_LINK/i,no.caseInsensitive)}]}),ta=ko({tags:[{name:no.exact(\"meta\",no.caseInsensitive)}]}),na=ko({tags:[{name:no.exact(\"style\",no.caseInsensitive)}]}),ra=ko({styles:[{name:no.not(no.pattern(/^(width|height|list-style-type)$/,no.caseInsensitive)),condition:e=>!Pn(e,\"ephox-limbo-transform\")},{name:no.pattern(/^(width|height)$/,no.caseInsensitive),condition:e=>{return(e=>\"img\"!==ke(e))(e)&&!(\"table\"===ke(t=e)||ws(t));var t}}]}),oa=(e=[])=>{const t=A(e,(e=>({name:no.exact(e,no.caseInsensitive)})));return wo({tags:t})},sa=ko({classes:[{name:no.not(no.exact(\"rtf-data-image\",no.caseInsensitive))}]}),aa=ko({styles:[{name:no.pattern(/^(mso-.*|tab-stops|tab-interval|language|text-underline|text-effect|text-line-through|font-color|horiz-align|list-image-[0-9]+|separator-image|table-border-color-(dark|light)|vert-align|vnd\\..*)$/,no.caseInsensitive)}]}),ia=ko({classes:[{name:no.pattern(/mso/i,no.caseInsensitive)}]}),la=wo({tags:[{name:no.exact(\"img\",no.caseInsensitive),condition:e=>{const t=Tn(e,\"src\");return n(t)&&/^file:/.test(t)}}]}),ca=wo({tags:[{name:no.exact(\"a\",no.caseInsensitive),condition:Js}]}),ua=ko({attributes:[{name:no.exact(\"style\",no.caseInsensitive),value:no.exact(\"\",no.caseInsensitive)}]}),da=ko({attributes:[{name:no.exact(\"class\",no.caseInsensitive),value:no.exact(\"\",no.caseInsensitive)}]}),ha=wo({tags:[{name:no.pattern(/^(font|em|strong|samp|acronym|cite|code|dfn|kbd|tt|b|i|u|s|sub|sup|ins|del|var|span)$/,no.caseInsensitive),condition:(ma=e=>!Js(e)||(e=>{const t=e.dom.attributes,n=null!=t&&t.length>0;return\"span\"!==ke(e)||n})(e)&&Zn(e,(e=>{const t=!Js(e),n=!T([\"font\",\"em\",\"strong\",\"samp\",\"acronym\",\"cite\",\"code\",\"dfn\",\"kbd\",\"tt\",\"b\",\"i\",\"u\",\"s\",\"sub\",\"sup\",\"ins\",\"del\",\"var\",\"span\"],ke(e));return Ie(e)||t||n})).isSome(),e=>!ma(e))}]});var ma;const pa=So({tags:[{name:no.exact(\"p\",no.caseInsensitive),mutate:e=>{0===Jn(e).length&&hn(e,De.fromTag(\"br\"))}}]}),fa=e=>{const t=Ys(\"span\",e);_n(t,\"ephox-limbo-transform\"),Bn(t,\"text-decoration\",\"underline\")},ga=So({tags:[{name:no.pattern(/ol|ul/,no.caseInsensitive),mutate:e=>{Ft(e).each((t=>{const n=ke(t);T([\"ol\",\"ul\"],n)&&Zs(e).fold((()=>{const t=De.fromTag(\"li\");Bn(t,\"list-style-type\",\"none\"),mn(e,t)}),(t=>{hn(t,e)}))}))}}]}),va=e=>{const t=[{name:\"b\",transform:{mutate:g(Ys,\"strong\")}},{name:\"i\",transform:{mutate:g(Ys,\"em\")}},{name:\"u\",transform:{mutate:fa}},{name:\"s\",transform:{mutate:g(Ys,\"strike\")}},{name:\"font\",transform:{mutate:Qs,debug:!0}}],n=L(t,(t=>!T(e,t.name))).map((e=>({name:no.exact(e.name,no.caseInsensitive),...e.transform})));return So({tags:n})},ya=ko({classes:[{name:no.exact(\"ephox-limbo-transform\",no.caseInsensitive)}]}),ba=ko({tags:[{name:no.exact(\"br\",no.caseInsensitive),condition:Gs(\"Apple-interchange-newline\")}]}),xa=ko({styles:[{name:no.pattern(/^-/,no.caseInsensitive)},{name:no.all(),value:no.exact(\"initial\",no.caseInsensitive)},{name:no.exact(\"background-color\",no.caseInsensitive),value:no.exact(\"transparent\",no.caseInsensitive)},{name:no.exact(\"font-style\",no.caseInsensitive),value:no.exact(\"normal\",no.caseInsensitive)},{name:no.pattern(/font-variant.*/,no.caseInsensitive)},{name:no.exact(\"letter-spacing\",no.caseInsensitive)},{name:no.exact(\"font-weight\",no.caseInsensitive),value:no.pattern(/400|normal/,no.caseInsensitive)},{name:no.exact(\"orphans\",no.caseInsensitive)},{name:no.exact(\"text-decoration\",no.caseInsensitive),value:no.exact(\"none\",no.caseInsensitive)},{name:no.exact(\"text-size-adjust\",no.caseInsensitive)},{name:no.exact(\"text-indent\",no.caseInsensitive),value:no.exact(\"0px\",no.caseInsensitive)},{name:no.exact(\"text-transform\",no.caseInsensitive),value:no.exact(\"none\",no.caseInsensitive)},{name:no.exact(\"white-space\",no.caseInsensitive),value:no.exact(\"normal\",no.caseInsensitive)},{name:no.exact(\"widows\",no.caseInsensitive)},{name:no.exact(\"word-spacing\",no.caseInsensitive),value:no.exact(\"0px\",no.caseInsensitive)},{name:no.exact(\"text-align\",no.caseInsensitive),value:no.pattern(/start|end/,no.caseInsensitive)},{name:no.exact(\"font-weight\",no.caseInsensitive),value:no.pattern(/700|bold/,no.caseInsensitive),condition:e=>/^h\\d$/.test(ke(e))}]}),ka=(()=>{const e=(e,t)=>n=>e(n).filter((e=>Ie(n)&&t(rs(e)||\"\",\" \"))).isSome(),t=e(Ut,V),n=e(Bt,$);return So({tags:[{name:no.exact(\"span\",no.caseInsensitive),condition:Gs(\"Apple-converted-space\"),mutate:e=>{\"\\xa0\"===rs(e)&&(t(e)||n(e)?yn(e):(cn(e,De.fromText(\" \")),vn(e)))}}]})})(),wa=(()=>{const e=/^file:\\/\\/\\/[^#]+(#[^#]+)$/;return So({tags:[{name:no.exact(\"a\",no.caseInsensitive),condition:t=>{const n=Tn(t,\"href\");return!!n&&e.test(n)},mutate:t=>{In(t,\"href\").each((n=>{Sn(t,\"href\",n.replace(e,\"$1\"))}))}}]})})(),Sa=ko({attributes:[{name:no.exact(\"href\",no.caseInsensitive),value:no.starts(\"file:///\",no.caseInsensitive)}]}),Ca=(()=>{const e=(e,t,n)=>({name:no.exact(e,no.caseInsensitive),condition:e=>An(e,t),mutate:e=>{In(e,t).each((r=>{Sn(e,n,r),On(e,t)}))}});return So({tags:[e(\"a\",\"data-ephox-href\",\"href\"),e(\"img\",\"data-ephox-src\",\"src\")]})})(),Ta=e=>{const t=[\"table\",\"thead\",\"tbody\",\"tfoot\",\"th\",\"tr\",\"td\",\"ul\",\"ol\",\"li\"],n=Kt(e,Ce),r=_(n,(e=>W(Ne(e),\"StartFragment\"))),o=_(n,(e=>W(Ne(e),\"EndFragment\")));r.each((n=>{o.each((r=>{let o=n;const s=[];let a=((e,t,n,r)=>{const o=tn(e,0,n,0);return De.fromDom(o.commonAncestorContainer)})(n,0,r);for(;void 0!==a&&!At(a,e);)T(t,ke(a))?o=a:s.push(a),a=Ft(a).getOrUndefined();O(s,yn),O(zt(o),vn)})),vn(n)})),o.each(vn)},Ia=So({tags:[{name:no.pattern(/^(img|table)$/,no.caseInsensitive),mutate:e=>{$n(e,\"margin-left\").exists((e=>$(e,\"-\")))&&Gn(e,\"margin-left\"),$(Hn(e,\"margin-left\"),\"-\")&&(Bn(e,\"margin-top\",Hn(e,\"margin-top\")),Bn(e,\"margin-bottom\",Hn(e,\"margin-bottom\")),Bn(e,\"margin-right\",Hn(e,\"margin-right\")),Gn(e,\"margin\"))}}]}),Aa=So({tags:[{name:no.exact(\"p\",no.caseInsensitive),mutate:ks({attrName:\"align\",styleName:\"text-align\",mapValue:p})}]}),Oa=(e,t)=>{return(n=e,qs.getOption(n)).exists((e=>0===t(e).length));var n},Ea=ko({tags:[{name:no.exact(\"font\",no.caseInsensitive),condition:e=>{const t=Ht(e),n=e=>e.replace(/[ \\r\\n\\uFEFF]+/g,\"\");return 0===t.length||M(t,(e=>Oa(e,n)))}}]}),La=e=>O(Ht(e),(e=>{Oa(e,G)&&vn(e)})),Na=So({tags:[{name:no.exact(\"ol\",no.caseInsensitive),mutate:La},{name:no.exact(\"ul\",no.caseInsensitive),mutate:La}]}),_a=wo({tags:[{name:no.pattern(/^([OVWXP]|U[0-9]+|ST[0-9]+):/i,no.caseInsensitive)}]}),Da=[Co([vs])],Pa=ko({attributes:[{name:no.exact(\"height\",no.caseInsensitive),condition:Ee(\"table\")}]}),Ra=ko({attributes:[{name:no.pattern(/^(width|height)$/,no.caseInsensitive),condition:ws}]}),Ma=So({tags:[{name:no.exact(\"table\",no.caseInsensitive),mutate:ks({attrName:\"width\",mapValue:e=>e.replace(/^(\\d+)$/,\"$1px\")})}]}),ja=ko({styles:[{name:no.exact(\"height\",no.caseInsensitive),condition:Ee(\"td\")},{name:no.exact(\"width\",no.caseInsensitive),condition:Ee(\"tr\")},{name:no.exact(\"height\",no.caseInsensitive),condition:Ee(\"col\")}]}),Fa=ko({attributes:[{name:no.pattern(/^v:/,no.caseInsensitive)},{name:no.exact(\"href\",no.caseInsensitive),value:no.contains(\"#_toc\",no.caseInsensitive)},{name:no.exact(\"href\",no.caseInsensitive),value:no.contains(\"#_mso\",no.caseInsensitive)},{name:no.pattern(/^xmlns(:|$)/,no.caseInsensitive)},{name:no.exact(\"type\",no.caseInsensitive),condition:e=>\"ol\"===ke(e)||\"ul\"===ke(e)}]});wo({tags:[{name:no.exact(\"p\",no.caseInsensitive),condition:(\"li\",e=>Ft(e).exists((e=>\"li\"===ke(e)&&1===Ht(e).length)))}]}),So({tags:[{name:no.pattern(/^(img|table)$/,no.caseInsensitive),mutate:e=>{$n(e,\"margin-left\").exists((e=>$(e,\"-\")))&&Gn(e,\"margin-left\"),$(Hn(e,\"margin-left\"),\"-\")&&(Bn(e,\"margin-top\",Hn(e,\"margin-top\")),Bn(e,\"margin-bottom\",Hn(e,\"margin-bottom\")),Bn(e,\"margin-right\",Hn(e,\"margin-right\")),Gn(e,\"margin\"))}}]});const Ua=e=>{const t=[Aa,aa,ia],n=[Aa,ra,oa(e.cleanFilteredInlineElements),sa];return e.merge?t:n},Ba=e=>e.type===xs.Word?[gs]:[],za=e=>e.type===xs.Word?[_a,...Da,Fa]:[],Ha=e=>e.type===xs.GoogleDocs?[Ms]:[],Wa=e=>e.type!==xs.GoogleDocs||e.indentUseMargin?[]:[Rs],$a=(e,t)=>e.type===xs.GoogleDocs?[Ws,...Bs,...Fs,zs(t),$s,Vs,...Wa(e)]:[],Va=e=>e.type===xs.Html&&e.merge?[xa]:[],Ga=e=>e.type===xs.Word?[ja,Ma,Ra,Pa]:[];Nt([{bothErrors:[\"error1\",\"error2\"]},{firstError:[\"error1\",\"value2\"]},{secondError:[\"value1\",\"error2\"]},{bothValues:[\"value1\",\"value2\"]}]);const qa=(e,t)=>Ya(document.createElement(\"canvas\"),e,t),Ka=e=>{const t=qa(e.width,e.height);return Ja(t).drawImage(e,0,0),t},Ja=e=>e.getContext(\"2d\"),Ya=(e,t,n)=>(e.width=t,e.height=n,e),Xa=e=>e.naturalWidth||e.width,Za=e=>e.naturalHeight||e.height,Qa=e=>fetch(e).then((e=>e.ok?e.blob():Promise.reject(new Error(\"Error \"+e.status+\" downloading image\"))),(()=>Promise.reject((()=>{const e=new Error(\"No access to download image\");return e.code=18,e.name=\"SecurityError\",e})()))),ei=e=>{const t=e.split(\",\"),n=/data:([^;]+)/.exec(t[0]);if(!n)return k.none();const r=n[1],o=t[1],s=1024,a=atob(o),i=a.length,l=Math.ceil(i/s),c=new Array(l);for(let e=0;e<l;++e){const t=e*s,n=Math.min(t+s,i),r=new Array(n-t);for(let e=t,o=0;e<n;++o,++e)r[o]=a[e].charCodeAt(0);c[e]=new Uint8Array(r)}return k.some(new Blob(c,{type:r}))},ti=e=>new Promise(((t,n)=>{ei(e).fold((()=>{n(\"uri is not base64: \"+e)}),t)})),ni=(e,t,n)=>(t=t||\"image/png\",c(HTMLCanvasElement.prototype.toBlob)?new Promise(((r,o)=>{e.toBlob((e=>{e?r(e):o()}),t,n)})):ti(e.toDataURL(t,n))),ri=e=>(e=>{const t=URL.createObjectURL(e),n=new Image;return n.src=t,(e=>new Promise(((t,n)=>{const r=()=>{s(),t(e)},o=[Lr(e,\"load\",r),Lr(e,\"error\",(()=>{s(),n(\"Unable to load data from image: \"+e.dom.src)}))],s=()=>O(o,(e=>e.unbind()));e.dom.complete&&r()})))(De.fromDom(n)).then((e=>e.dom))})(e).then((e=>{si(e);const t=qa(Xa(e),Za(e));return Ja(t).drawImage(e,0,0),t})),oi=e=>new Promise((t=>{const n=new FileReader;n.onloadend=()=>{t(n.result)},n.readAsDataURL(e)})),si=e=>{URL.revokeObjectURL(e.src)},ai=(e,t,n)=>{const r=t.type,o=m(r),s=m(n),a=(t,n)=>e.then((e=>((e,t,n)=>(t=t||\"image/png\",e.toDataURL(t,n)))(e,t,n)));return{getType:o,toBlob:()=>Promise.resolve(t),toDataURL:s,toBase64:()=>n.split(\",\")[1],toAdjustedBlob:(t,n)=>e.then((e=>ni(e,t,n))),toAdjustedDataURL:a,toAdjustedBase64:(e,t)=>a(e,t).then((e=>e.split(\",\")[1])),toCanvas:()=>e.then(Ka)}},ii=(e,t)=>ni(e,t).then((t=>ai(Promise.resolve(e),t,e.toDataURL()))),li=(e,t,n)=>{const r=Xa(e),o=Za(e);let s=t/r,a=n/o,i=!1;(s<.5||s>2)&&(s=s<.5?.5:2,i=!0),(a<.5||a>2)&&(a=a<.5?.5:2,i=!0);const l=ci(e,s,a);return i?l.then((e=>li(e,t,n))):l},ci=(e,t,n)=>new Promise((r=>{const o=Xa(e),s=Za(e),a=Math.floor(o*t),i=Math.floor(s*n),l=qa(a,i);Ja(l).drawImage(e,0,0,o,s,0,0,a,i),r(l)})),ui=(e,t=2)=>{const n=Math.pow(10,t),r=Math.round(e*n);return Math.ceil(r/n)},di=(e,t,n,r,o)=>((e,t,n,r,o)=>e.toCanvas().then((s=>((e,t,n,r,o,s)=>{const a=qa(o,s);return Ja(a).drawImage(e,-n,-r),ii(a,t)})(s,e.getType(),t,n,r,o))))(e,t,n,r,o),hi=(e,t)=>((e,t)=>e.toCanvas().then((n=>((e,t,n)=>{const r=(n<0?360+n:n)*Math.PI/180,o=e.width,s=e.height,a=Math.sin(r),i=Math.cos(r),l=ui(Math.abs(o*i)+Math.abs(s*a)),c=ui(Math.abs(o*a)+Math.abs(s*i)),u=qa(l,c),d=Ja(u);return d.translate(l/2,c/2),d.rotate(r),d.drawImage(e,-o/2,-s/2),ii(u,t)})(n,e.getType(),t))))(e,t),mi=(e,t)=>((e,t)=>ai(ri(e),e,t))(e,t),pi=e=>(e=>(e=>{const t=e.src;return 0===t.indexOf(\"data:\")?ti(t):Qa(t)})(e).then((e=>(e=>oi(e).then((t=>ai(ri(e),e,t))))(e))))(e),fi=e=>e.toBlob(),gi=e=>e.toDataURL(),vi=e=>parseInt(e,10),yi=e=>e.isPx&&(e.cropWidth!==e.width||e.cropHeight!==e.height),bi=/rotate\\((\\d\\.\\d+)rad\\)/,xi=(e,t,n)=>pi(e.dom).then((e=>t=>((e,t,n)=>((e,t,n)=>e.toCanvas().then((r=>li(r,t,n).then((t=>ii(t,e.getType()))))))(e,t,n))(t,e.width,e.height))(t)).then(((e,t)=>n=>{if(yi(t)){const r=-1*vi(Hn(e,\"margin-top\")),o=-1*vi(Hn(e,\"margin-left\"));return di(n,o,r,t.cropWidth,t.cropHeight).then((n=>(Cn(e,{width:t.cropWidth,height:t.cropHeight}),n)))}return Promise.resolve(n)})(e,t)).then(((e,t)=>n=>(e=>{const t=Hn(e,\"transform\");return k.from(bi.exec(t)).map((e=>Math.round(parseFloat(e[1])*(180/Math.PI))))})(t).fold((()=>Promise.resolve(n)),(r=>hi(n,r).then((n=>(Gn(t,\"transform\"),On(e,\"width\"),On(e,\"height\"),n))))))(e,n)).then((t=>{const n=gi(t);return Sn(e,\"src\",n),Promise.resolve()})),ki=e=>Ft(e).filter(Ee(\"span\")).map((t=>{const n=()=>((e,t)=>{var n,r,o;Gn(e,\"margin-top\"),Gn(e,\"margin-left\"),Gn(t,\"width\"),Gn(t,\"height\"),Gn(t,\"overflow\"),Gn(t,\"display\"),r=e,o=[\"transform\"],Te(n=t)&&Te(r)&&O(o,(e=>{((e,t,n)=>{$n(e,n).each((e=>{$n(t,n).isNone()&&Bn(t,n,e)}))})(n,r,e)})),Gn(t,\"transform\")})(e,t),r=((e,t)=>{const n=(e,t)=>In(e,t).map(vi).filter((e=>!isNaN(e))).getOr(0),r=Hn(t,\"width\"),o=Hn(t,\"height\"),s=n(e,\"width\"),a=n(e,\"height\"),i=/^\\d+px$/;return{isPx:i.test(r)&&i.test(o),cropWidth:vi(r),cropHeight:vi(o),width:s,height:a}})(e,t);return(yi(r)||bi.test(Hn(t,\"transform\"))?xi(e,r,t):Promise.resolve()).then(n,n)})).getOrThunk((()=>Promise.resolve()));var wi=[\"body\",\"p\",\"div\",\"article\",\"aside\",\"figcaption\",\"figure\",\"footer\",\"header\",\"nav\",\"section\",\"ol\",\"ul\",\"li\",\"table\",\"thead\",\"tbody\",\"tfoot\",\"caption\",\"tr\",\"td\",\"th\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"blockquote\",\"pre\",\"address\"];const Si=(e,t)=>D(e,(e=>e.start===t)),Ci=(e,t,n=0)=>N(e,((e,n)=>t(n,e.len).fold(m(e),(t=>({len:t.finish,list:e.list.concat([t])})))),{len:n,list:[]}).list,Ti=(e,t,n)=>0===t.length?e:R(e,(e=>{const r=R(t,(t=>((e,t)=>t>=e.start&&t<=e.finish)(e,t)?[t-e.start]:[]));return r.length>0?((e,t,n)=>((e,t)=>A(e,(e=>({...e,start:e.start+t,finish:e.finish+t}))))(n(e,t),e.start))(e,r,n):[e]})),Ii=(e,t)=>{const n=R(t,(t=>{const n=((e,t)=>{const n=t.term(),r=[];let o=n.exec(e);for(;o;){const s=o.index+t.prefix(o),a=o[0].length-t.prefix(o)-t.suffix(o);r.push({start:s,finish:s+a}),n.lastIndex=s+a,o=n.exec(e)}return r})(e,t.pattern);return A(n,(e=>({...t,...e})))}));return(e=>{const t=(e=>F(e,((e,t)=>e.start-t.start)))(e);return N(t,((e,t)=>{const n=I(e,(e=>t.start>=e.start&&t.finish<=e.finish));return D(e,(e=>t.start===e.start)).fold((()=>n?e:[...e,t]),(n=>t.finish>e[n].finish?[...e.slice(0,n),t]:e))}),[])})(n)},Ai=(e,t,n)=>({element:e,start:t,finish:n}),Oi=Nt([{include:[\"item\"]},{excludeWith:[\"item\"]},{excludeWithout:[\"item\"]}]),Ei={include:Oi.include,excludeWith:Oi.excludeWith,excludeWithout:Oi.excludeWithout,cata:(e,t,n,r)=>e.fold(t,n,r)},Li=Nt([{boundary:[\"item\",\"universe\"]},{empty:[\"item\",\"universe\"]},{text:[\"item\",\"universe\"]},{nonEditable:[\"item\",\"universe\"]}]),Ni=b,_i=x,Di=m(0),Pi=m(1),Ri=e=>({...e,isBoundary:()=>e.fold(_i,Ni,Ni,Ni),toText:()=>e.fold(k.none,k.none,(e=>k.some(e)),k.none),is:t=>e.fold(Ni,Ni,((e,n)=>n.eq(e,t)),Ni),len:()=>e.fold(Di,Pi,((e,t)=>t.property().getText(e).length),Pi)}),Mi={text:h(Ri,Li.text),boundary:h(Ri,Li.boundary),empty:h(Ri,Li.empty),nonEditable:h(Ri,Li.empty),cata:(e,t,n,r,o)=>e.fold(t,n,r,o)},ji=m([]),Fi=(e,t,n)=>{if(e.property().isText(t))return[Mi.text(t,e)];if(e.property().isEmptyTag(t))return[Mi.empty(t,e)];if(e.property().isNonEditable(t))return[];if(e.property().isElement(t)){const r=e.property().children(t),o=e.property().isBoundary(t)?[Mi.boundary(t,e)]:[],s=void 0!==n&&n(t)?[]:R(r,(t=>Fi(e,t,n)));return o.concat(s).concat(o)}return[]},Ui=Fi,Bi=(e,t,n)=>{const r=((e,t)=>{const n=[];let r=[];return O(e,(e=>{const o=t(e);Ei.cata(o,(()=>{r.push(e)}),(()=>{r.length>0&&n.push(r),n.push([e]),r=[]}),(()=>{r.length>0&&n.push(r),r=[]}))})),r.length>0&&n.push(r),n})(R(t,(t=>Ui(e,t,n))),(e=>e.match({boundary:()=>Ei.excludeWithout(e),empty:()=>Ei.excludeWith(e),text:()=>Ei.include(e),nonEditable:()=>Ei.excludeWithout(e)})));return L(r,(e=>e.length>0))},zi=(e,t,n)=>{const r=R(n,(e=>[e.start,e.finish])),o=Ti(t,r,((t,n)=>((e,t,n)=>{const r=e.property().getText(t),o=L(((e,t)=>{if(0===t.length)return[e];const n=N(t,((t,n)=>{if(0===n)return t;const r=e.substring(t.prev,n);return{prev:n,values:t.values.concat([r])}}),{prev:0,values:[]}),r=t[t.length-1];return r<e.length?n.values.concat(e.substring(r)):n.values})(r,n),(e=>e.length>0));if(o.length<=1)return[Ai(t,0,r.length)];e.property().setText(t,o[0]);const s=Ci(o.slice(1),((t,n)=>{const r=e.create().text(t),o=Ai(r,n,n+t.length);return k.some(o)}),o[0].length),a=A(s,(e=>e.element));return e.insert().afterAll(t,a),[Ai(t,0,o[0].length)].concat(s)})(e,t.element,n)));return A(n,(t=>{const n=((e,t,n)=>{const r=Si(e,t),o=Si(e,n);return r.bind((t=>{const r=o.getOr(((e,t)=>e[e.length-1]&&e[e.length-1].finish===t?e.length+1:-1)(e,n));return r>-1?k.some(e.slice(t,r)):k.none()})).getOr([])})(o,t.start,t.finish),r=A(n,(e=>e.element)),s=A(r,e.property().getText).join(\"\");return{elements:r,word:t.word,exact:s}}))},Hi={up:m({selector:Qn,closest:er,predicate:Yn,all:(e,t)=>{const n=c(t)?t:b;let r=e.dom;const o=[];for(;null!==r.parentNode&&void 0!==r.parentNode;){const e=r.parentNode,t=De.fromDom(e);if(o.push(t),!0===n(t))break;r=e}return o}}),down:m({selector:Jt,predicate:Kt}),styles:m({get:Hn,getRaw:$n,set:Bn,remove:Gn}),attrs:m({get:Tn,set:Sn,remove:On,copyTo:(e,t)=>{const n=N(e.dom.attributes,((e,t)=>(e[t.name]=t.value,e)),{});Cn(t,n)}}),insert:m({before:cn,after:un,afterAll:pn,append:hn,appendAll:fn,prepend:dn,wrap:mn}),remove:m({unwrap:yn,remove:vn}),create:m({nu:De.fromTag,clone:e=>De.fromDom(e.dom.cloneNode(!1)),text:De.fromText}),query:m({comparePosition:(e,t)=>e.dom.compareDocumentPosition(t.dom),prevSibling:Ut,nextSibling:Bt}),property:m({children:Ht,name:ke,parent:Ft,document:e=>Mt(e).dom,isText:Ie,isComment:Ce,isElement:Te,isSpecial:e=>{const t=ke(e);return T([\"script\",\"noscript\",\"iframe\",\"noframes\",\"noembed\",\"title\",\"style\",\"textarea\",\"xmp\"],t)},getLanguage:e=>Te(e)?In(e,\"lang\"):k.none(),getText:Ks,setText:(e,t)=>qs.set(e,t),isBoundary:e=>!!Te(e)&&(\"body\"===ke(e)||T(wi,ke(e))),isEmptyTag:e=>!!Te(e)&&T([\"br\",\"img\",\"hr\",\"input\"],ke(e)),isNonEditable:e=>Te(e)&&\"false\"===Tn(e,\"contenteditable\")}),eq:At,is:Ot},Wi=/(?:[A-Za-z][A-Za-z\\d.+-]{0,14}:\\/\\/(?:[-.~*+=!&;:'%@?^${}(),\\w]+@)?|www\\.|[-;:&=+$,.\\w]+@)[A-Za-z\\d-]+(?:\\.[A-Za-z\\d-]+)*(?::\\d+)?(?:\\/(?:[-.~*+=!;:'%@$(),\\/\\w]*[-~*+=%@$()\\/\\w])?)?(?:\\?(?:[-.~*+=!&;:'%@?^${}(),\\/\\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\\/\\w]+))?/g.source,$i=e=>{return((e,t,n)=>((e,t,n,r)=>{const o=Bi(e,t,r),s=R(o,(t=>{const r=R(t,(e=>e.fold(ji,ji,(e=>[e]),ji))),o=A(r,e.property().getText).join(\"\"),s=Ii(o,n),a=((e,t)=>Ci(t,((t,n)=>{const r=n+e.property().getText(t).length;return k.from(Ai(t,n,r))})))(e,r);return zi(e,a,s)}));return s})(Hi,e,t,void 0))(e,[{word:\"__INTERNAL__\",pattern:(t=Wi,((e,t,n,r)=>({term:()=>new RegExp(e,r.getOr(\"g\")),prefix:t,suffix:n}))(t,m(0),m(0),k.none()))}]);var t},Vi=e=>!er(e,\"a\",undefined).isSome(),Gi=(e,t)=>{const n=$i(e);O(n,(e=>{const n=e.exact;if(n.indexOf(\"@\")<0||qi(n)){const r=W(n,\"://\")?n:`${t.defaultProtocol}://${n}`;((e,t)=>{k.from(e[0]).filter(Vi).map((n=>{const r=De.fromTag(\"a\");return cn(n,r),fn(r,e),Sn(r,\"href\",t),r}))})(e.elements,r)}}))},qi=e=>{const t=e.indexOf(\"://\");return t>=3&&t<=9},Ki=(e,t)=>{O(e,(e=>{Te(e)&&$n(e,\"position\").isSome()&&Gn(e,\"position\")}))},Ji=(e,t)=>{const n=L(e,Ee(\"li\"));if(n.length>0){const t=zt(n[0]),r=De.fromTag(\"ul\");if(cn(e[0],r),t.length>0){const e=De.fromTag(\"li\");hn(r,e),fn(e,t)}fn(r,n)}},Yi=(e,t)=>{const n=Ht(e);O([Gi,Ki,Ji],(e=>{e(n,t)}))},Xi={disabled:()=>({discriminator:\"disabled\",data:{}}),fromClipboard:e=>({discriminator:\"fromClipboard\",data:{rtf:e}})},Zi=Pe(Xi),Qi=Xi.disabled,el=Xi.fromClipboard,tl=e=>void 0!==e&&void 0!==e.types&&null!==e.types,nl=(e,t)=>{const n=new RegExp(t,\"i\");return B(e,(e=>Mn(null!==n.exec(e),{type:e,flavor:t})))};function rl(e){return rl=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},rl(e)}function ol(e,t){return ol=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},ol(e,t)}function sl(e,t,n){return sl=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&ol(o,n.prototype),o},sl.apply(null,arguments)}function al(e){return function(e){if(Array.isArray(e))return il(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||function(e,t){if(e){if(\"string\"==typeof e)return il(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?il(e,t):void 0}}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function il(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ll=Object.hasOwnProperty,cl=Object.setPrototypeOf,ul=Object.isFrozen,dl=Object.getPrototypeOf,hl=Object.getOwnPropertyDescriptor,ml=Object.freeze,pl=Object.seal,fl=Object.create,gl=\"undefined\"!=typeof Reflect&&Reflect,vl=gl.apply,yl=gl.construct;vl||(vl=function(e,t,n){return e.apply(t,n)}),ml||(ml=function(e){return e}),pl||(pl=function(e){return e}),yl||(yl=function(e,t){return sl(e,al(t))});var bl,xl=Nl(Array.prototype.forEach),kl=Nl(Array.prototype.pop),wl=Nl(Array.prototype.push),Sl=Nl(String.prototype.toLowerCase),Cl=Nl(String.prototype.toString),Tl=Nl(String.prototype.match),Il=Nl(String.prototype.replace),Al=Nl(String.prototype.indexOf),Ol=Nl(String.prototype.trim),El=Nl(RegExp.prototype.test),Ll=(bl=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return yl(bl,t)});function Nl(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return vl(e,t,r)}}function _l(e,t,n){var r;n=null!==(r=n)&&void 0!==r?r:Sl,cl&&cl(e,null);for(var o=t.length;o--;){var s=t[o];if(\"string\"==typeof s){var a=n(s);a!==s&&(ul(t)||(t[o]=a),s=a)}e[s]=!0}return e}function Dl(e){var t,n=fl(null);for(t in e)!0===vl(ll,e,[t])&&(n[t]=e[t]);return n}function Pl(e,t){for(;null!==e;){var n=hl(e,t);if(n){if(n.get)return Nl(n.get);if(\"function\"==typeof n.value)return Nl(n.value)}e=dl(e)}return function(e){return console.warn(\"fallback value for\",e),null}}var Rl=ml([\"a\",\"abbr\",\"acronym\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"bdi\",\"bdo\",\"big\",\"blink\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"center\",\"cite\",\"code\",\"col\",\"colgroup\",\"content\",\"data\",\"datalist\",\"dd\",\"decorator\",\"del\",\"details\",\"dfn\",\"dialog\",\"dir\",\"div\",\"dl\",\"dt\",\"element\",\"em\",\"fieldset\",\"figcaption\",\"figure\",\"font\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meter\",\"nav\",\"nobr\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"section\",\"select\",\"shadow\",\"small\",\"source\",\"spacer\",\"span\",\"strike\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\",\"tt\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"]),Ml=ml([\"svg\",\"a\",\"altglyph\",\"altglyphdef\",\"altglyphitem\",\"animatecolor\",\"animatemotion\",\"animatetransform\",\"circle\",\"clippath\",\"defs\",\"desc\",\"ellipse\",\"filter\",\"font\",\"g\",\"glyph\",\"glyphref\",\"hkern\",\"image\",\"line\",\"lineargradient\",\"marker\",\"mask\",\"metadata\",\"mpath\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialgradient\",\"rect\",\"stop\",\"style\",\"switch\",\"symbol\",\"text\",\"textpath\",\"title\",\"tref\",\"tspan\",\"view\",\"vkern\"]),jl=ml([\"feBlend\",\"feColorMatrix\",\"feComponentTransfer\",\"feComposite\",\"feConvolveMatrix\",\"feDiffuseLighting\",\"feDisplacementMap\",\"feDistantLight\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feImage\",\"feMerge\",\"feMergeNode\",\"feMorphology\",\"feOffset\",\"fePointLight\",\"feSpecularLighting\",\"feSpotLight\",\"feTile\",\"feTurbulence\"]),Fl=ml([\"animate\",\"color-profile\",\"cursor\",\"discard\",\"fedropshadow\",\"font-face\",\"font-face-format\",\"font-face-name\",\"font-face-src\",\"font-face-uri\",\"foreignobject\",\"hatch\",\"hatchpath\",\"mesh\",\"meshgradient\",\"meshpatch\",\"meshrow\",\"missing-glyph\",\"script\",\"set\",\"solidcolor\",\"unknown\",\"use\"]),Ul=ml([\"math\",\"menclose\",\"merror\",\"mfenced\",\"mfrac\",\"mglyph\",\"mi\",\"mlabeledtr\",\"mmultiscripts\",\"mn\",\"mo\",\"mover\",\"mpadded\",\"mphantom\",\"mroot\",\"mrow\",\"ms\",\"mspace\",\"msqrt\",\"mstyle\",\"msub\",\"msup\",\"msubsup\",\"mtable\",\"mtd\",\"mtext\",\"mtr\",\"munder\",\"munderover\"]),Bl=ml([\"maction\",\"maligngroup\",\"malignmark\",\"mlongdiv\",\"mscarries\",\"mscarry\",\"msgroup\",\"mstack\",\"msline\",\"msrow\",\"semantics\",\"annotation\",\"annotation-xml\",\"mprescripts\",\"none\"]),zl=ml([\"#text\"]),Hl=ml([\"accept\",\"action\",\"align\",\"alt\",\"autocapitalize\",\"autocomplete\",\"autopictureinpicture\",\"autoplay\",\"background\",\"bgcolor\",\"border\",\"capture\",\"cellpadding\",\"cellspacing\",\"checked\",\"cite\",\"class\",\"clear\",\"color\",\"cols\",\"colspan\",\"controls\",\"controlslist\",\"coords\",\"crossorigin\",\"datetime\",\"decoding\",\"default\",\"dir\",\"disabled\",\"disablepictureinpicture\",\"disableremoteplayback\",\"download\",\"draggable\",\"enctype\",\"enterkeyhint\",\"face\",\"for\",\"headers\",\"height\",\"hidden\",\"high\",\"href\",\"hreflang\",\"id\",\"inputmode\",\"integrity\",\"ismap\",\"kind\",\"label\",\"lang\",\"list\",\"loading\",\"loop\",\"low\",\"max\",\"maxlength\",\"media\",\"method\",\"min\",\"minlength\",\"multiple\",\"muted\",\"name\",\"nonce\",\"noshade\",\"novalidate\",\"nowrap\",\"open\",\"optimum\",\"pattern\",\"placeholder\",\"playsinline\",\"poster\",\"preload\",\"pubdate\",\"radiogroup\",\"readonly\",\"rel\",\"required\",\"rev\",\"reversed\",\"role\",\"rows\",\"rowspan\",\"spellcheck\",\"scope\",\"selected\",\"shape\",\"size\",\"sizes\",\"span\",\"srclang\",\"start\",\"src\",\"srcset\",\"step\",\"style\",\"summary\",\"tabindex\",\"title\",\"translate\",\"type\",\"usemap\",\"valign\",\"value\",\"width\",\"xmlns\",\"slot\"]),Wl=ml([\"accent-height\",\"accumulate\",\"additive\",\"alignment-baseline\",\"ascent\",\"attributename\",\"attributetype\",\"azimuth\",\"basefrequency\",\"baseline-shift\",\"begin\",\"bias\",\"by\",\"class\",\"clip\",\"clippathunits\",\"clip-path\",\"clip-rule\",\"color\",\"color-interpolation\",\"color-interpolation-filters\",\"color-profile\",\"color-rendering\",\"cx\",\"cy\",\"d\",\"dx\",\"dy\",\"diffuseconstant\",\"direction\",\"display\",\"divisor\",\"dur\",\"edgemode\",\"elevation\",\"end\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"filterunits\",\"flood-color\",\"flood-opacity\",\"font-family\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-weight\",\"fx\",\"fy\",\"g1\",\"g2\",\"glyph-name\",\"glyphref\",\"gradientunits\",\"gradienttransform\",\"height\",\"href\",\"id\",\"image-rendering\",\"in\",\"in2\",\"k\",\"k1\",\"k2\",\"k3\",\"k4\",\"kerning\",\"keypoints\",\"keysplines\",\"keytimes\",\"lang\",\"lengthadjust\",\"letter-spacing\",\"kernelmatrix\",\"kernelunitlength\",\"lighting-color\",\"local\",\"marker-end\",\"marker-mid\",\"marker-start\",\"markerheight\",\"markerunits\",\"markerwidth\",\"maskcontentunits\",\"maskunits\",\"max\",\"mask\",\"media\",\"method\",\"mode\",\"min\",\"name\",\"numoctaves\",\"offset\",\"operator\",\"opacity\",\"order\",\"orient\",\"orientation\",\"origin\",\"overflow\",\"paint-order\",\"path\",\"pathlength\",\"patterncontentunits\",\"patterntransform\",\"patternunits\",\"points\",\"preservealpha\",\"preserveaspectratio\",\"primitiveunits\",\"r\",\"rx\",\"ry\",\"radius\",\"refx\",\"refy\",\"repeatcount\",\"repeatdur\",\"restart\",\"result\",\"rotate\",\"scale\",\"seed\",\"shape-rendering\",\"specularconstant\",\"specularexponent\",\"spreadmethod\",\"startoffset\",\"stddeviation\",\"stitchtiles\",\"stop-color\",\"stop-opacity\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke\",\"stroke-width\",\"style\",\"surfacescale\",\"systemlanguage\",\"tabindex\",\"targetx\",\"targety\",\"transform\",\"transform-origin\",\"text-anchor\",\"text-decoration\",\"text-rendering\",\"textlength\",\"type\",\"u1\",\"u2\",\"unicode\",\"values\",\"viewbox\",\"visibility\",\"version\",\"vert-adv-y\",\"vert-origin-x\",\"vert-origin-y\",\"width\",\"word-spacing\",\"wrap\",\"writing-mode\",\"xchannelselector\",\"ychannelselector\",\"x\",\"x1\",\"x2\",\"xmlns\",\"y\",\"y1\",\"y2\",\"z\",\"zoomandpan\"]),$l=ml([\"accent\",\"accentunder\",\"align\",\"bevelled\",\"close\",\"columnsalign\",\"columnlines\",\"columnspan\",\"denomalign\",\"depth\",\"dir\",\"display\",\"displaystyle\",\"encoding\",\"fence\",\"frame\",\"height\",\"href\",\"id\",\"largeop\",\"length\",\"linethickness\",\"lspace\",\"lquote\",\"mathbackground\",\"mathcolor\",\"mathsize\",\"mathvariant\",\"maxsize\",\"minsize\",\"movablelimits\",\"notation\",\"numalign\",\"open\",\"rowalign\",\"rowlines\",\"rowspacing\",\"rowspan\",\"rspace\",\"rquote\",\"scriptlevel\",\"scriptminsize\",\"scriptsizemultiplier\",\"selection\",\"separator\",\"separators\",\"stretchy\",\"subscriptshift\",\"supscriptshift\",\"symmetric\",\"voffset\",\"width\",\"xmlns\"]),Vl=ml([\"xlink:href\",\"xml:id\",\"xlink:title\",\"xml:space\",\"xmlns:xlink\"]),Gl=pl(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm),ql=pl(/<%[\\w\\W]*|[\\w\\W]*%>/gm),Kl=pl(/\\${[\\w\\W]*}/gm),Jl=pl(/^data-[\\-\\w.\\u00B7-\\uFFFF]/),Yl=pl(/^aria-[\\-\\w]+$/),Xl=pl(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i),Zl=pl(/^(?:\\w+script|data):/i),Ql=pl(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g),ec=pl(/^html$/i),tc=function(){return\"undefined\"==typeof window?null:window},nc=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:tc(),n=function(t){return e(t)};if(n.version=\"2.4.7\",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,o=t.document,s=t.DocumentFragment,a=t.HTMLTemplateElement,i=t.Node,l=t.Element,c=t.NodeFilter,u=t.NamedNodeMap,d=void 0===u?t.NamedNodeMap||t.MozNamedAttrMap:u,h=t.HTMLFormElement,m=t.DOMParser,p=t.trustedTypes,f=l.prototype,g=Pl(f,\"cloneNode\"),v=Pl(f,\"nextSibling\"),y=Pl(f,\"childNodes\"),b=Pl(f,\"parentNode\");if(\"function\"==typeof a){var x=o.createElement(\"template\");x.content&&x.content.ownerDocument&&(o=x.content.ownerDocument)}var k=function(e,t){if(\"object\"!==rl(e)||\"function\"!=typeof e.createPolicy)return null;var n=null,r=\"data-tt-policy-suffix\";t.currentScript&&t.currentScript.hasAttribute(r)&&(n=t.currentScript.getAttribute(r));var o=\"dompurify\"+(n?\"#\"+n:\"\");try{return e.createPolicy(o,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(e){return console.warn(\"TrustedTypes policy \"+o+\" could not be created.\"),null}}(p,r),w=k?k.createHTML(\"\"):\"\",S=o,C=S.implementation,T=S.createNodeIterator,I=S.createDocumentFragment,A=S.getElementsByTagName,O=r.importNode,E={};try{E=Dl(o).documentMode?o.documentMode:{}}catch(e){}var L={};n.isSupported=\"function\"==typeof b&&C&&void 0!==C.createHTMLDocument&&9!==E;var N,_,D=Gl,P=ql,R=Kl,M=Jl,j=Yl,F=Zl,U=Ql,B=Xl,z=null,H=_l({},[].concat(al(Rl),al(Ml),al(jl),al(Ul),al(zl))),W=null,$=_l({},[].concat(al(Hl),al(Wl),al($l),al(Vl))),V=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),G=null,q=null,K=!0,J=!0,Y=!1,X=!0,Z=!1,Q=!1,ee=!1,te=!1,ne=!1,re=!1,oe=!1,se=!0,ae=!1,ie=!0,le=!1,ce={},ue=null,de=_l({},[\"annotation-xml\",\"audio\",\"colgroup\",\"desc\",\"foreignobject\",\"head\",\"iframe\",\"math\",\"mi\",\"mn\",\"mo\",\"ms\",\"mtext\",\"noembed\",\"noframes\",\"noscript\",\"plaintext\",\"script\",\"style\",\"svg\",\"template\",\"thead\",\"title\",\"video\",\"xmp\"]),he=null,me=_l({},[\"audio\",\"video\",\"img\",\"source\",\"image\",\"track\"]),pe=null,fe=_l({},[\"alt\",\"class\",\"for\",\"id\",\"label\",\"name\",\"pattern\",\"placeholder\",\"role\",\"summary\",\"title\",\"value\",\"style\",\"xmlns\"]),ge=\"http://www.w3.org/1998/Math/MathML\",ve=\"http://www.w3.org/2000/svg\",ye=\"http://www.w3.org/1999/xhtml\",be=ye,xe=!1,ke=null,we=_l({},[ge,ve,ye],Cl),Se=[\"application/xhtml+xml\",\"text/html\"],Ce=null,Te=o.createElement(\"form\"),Ie=function(e){return e instanceof RegExp||e instanceof Function},Ae=function(e){Ce&&Ce===e||(e&&\"object\"===rl(e)||(e={}),e=Dl(e),N=N=-1===Se.indexOf(e.PARSER_MEDIA_TYPE)?\"text/html\":e.PARSER_MEDIA_TYPE,_=\"application/xhtml+xml\"===N?Cl:Sl,z=\"ALLOWED_TAGS\"in e?_l({},e.ALLOWED_TAGS,_):H,W=\"ALLOWED_ATTR\"in e?_l({},e.ALLOWED_ATTR,_):$,ke=\"ALLOWED_NAMESPACES\"in e?_l({},e.ALLOWED_NAMESPACES,Cl):we,pe=\"ADD_URI_SAFE_ATTR\"in e?_l(Dl(fe),e.ADD_URI_SAFE_ATTR,_):fe,he=\"ADD_DATA_URI_TAGS\"in e?_l(Dl(me),e.ADD_DATA_URI_TAGS,_):me,ue=\"FORBID_CONTENTS\"in e?_l({},e.FORBID_CONTENTS,_):de,G=\"FORBID_TAGS\"in e?_l({},e.FORBID_TAGS,_):{},q=\"FORBID_ATTR\"in e?_l({},e.FORBID_ATTR,_):{},ce=\"USE_PROFILES\"in e&&e.USE_PROFILES,K=!1!==e.ALLOW_ARIA_ATTR,J=!1!==e.ALLOW_DATA_ATTR,Y=e.ALLOW_UNKNOWN_PROTOCOLS||!1,X=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,Z=e.SAFE_FOR_TEMPLATES||!1,Q=e.WHOLE_DOCUMENT||!1,ne=e.RETURN_DOM||!1,re=e.RETURN_DOM_FRAGMENT||!1,oe=e.RETURN_TRUSTED_TYPE||!1,te=e.FORCE_BODY||!1,se=!1!==e.SANITIZE_DOM,ae=e.SANITIZE_NAMED_PROPS||!1,ie=!1!==e.KEEP_CONTENT,le=e.IN_PLACE||!1,B=e.ALLOWED_URI_REGEXP||B,be=e.NAMESPACE||ye,V=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&Ie(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(V.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Ie(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(V.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&\"boolean\"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(V.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Z&&(J=!1),re&&(ne=!0),ce&&(z=_l({},al(zl)),W=[],!0===ce.html&&(_l(z,Rl),_l(W,Hl)),!0===ce.svg&&(_l(z,Ml),_l(W,Wl),_l(W,Vl)),!0===ce.svgFilters&&(_l(z,jl),_l(W,Wl),_l(W,Vl)),!0===ce.mathMl&&(_l(z,Ul),_l(W,$l),_l(W,Vl))),e.ADD_TAGS&&(z===H&&(z=Dl(z)),_l(z,e.ADD_TAGS,_)),e.ADD_ATTR&&(W===$&&(W=Dl(W)),_l(W,e.ADD_ATTR,_)),e.ADD_URI_SAFE_ATTR&&_l(pe,e.ADD_URI_SAFE_ATTR,_),e.FORBID_CONTENTS&&(ue===de&&(ue=Dl(ue)),_l(ue,e.FORBID_CONTENTS,_)),ie&&(z[\"#text\"]=!0),Q&&_l(z,[\"html\",\"head\",\"body\"]),z.table&&(_l(z,[\"tbody\"]),delete G.tbody),ml&&ml(e),Ce=e)},Oe=_l({},[\"mi\",\"mo\",\"mn\",\"ms\",\"mtext\"]),Ee=_l({},[\"foreignobject\",\"desc\",\"title\",\"annotation-xml\"]),Le=_l({},[\"title\",\"style\",\"font\",\"a\",\"script\"]),Ne=_l({},Ml);_l(Ne,jl),_l(Ne,Fl);var _e=_l({},Ul);_l(_e,Bl);var De=function(e){wl(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=w}catch(t){e.remove()}}},Pe=function(e,t){try{wl(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){wl(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),\"is\"===e&&!W[e])if(ne||re)try{De(t)}catch(e){}else try{t.setAttribute(e,\"\")}catch(e){}},Re=function(e){var t,n;if(te)e=\"<remove></remove>\"+e;else{var r=Tl(e,/^[\\r\\n\\t ]+/);n=r&&r[0]}\"application/xhtml+xml\"===N&&be===ye&&(e='<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>'+e+\"</body></html>\");var s=k?k.createHTML(e):e;if(be===ye)try{t=(new m).parseFromString(s,N)}catch(e){}if(!t||!t.documentElement){t=C.createDocument(be,\"template\",null);try{t.documentElement.innerHTML=xe?w:s}catch(e){}}var a=t.body||t.documentElement;return e&&n&&a.insertBefore(o.createTextNode(n),a.childNodes[0]||null),be===ye?A.call(t,Q?\"html\":\"body\")[0]:Q?t.documentElement:a},Me=function(e){return T.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT,null,!1)},je=function(e){return\"object\"===rl(i)?e instanceof i:e&&\"object\"===rl(e)&&\"number\"==typeof e.nodeType&&\"string\"==typeof e.nodeName},Fe=function(e,t,r){L[e]&&xl(L[e],(function(e){e.call(n,t,r,Ce)}))},Ue=function(e){var t,r;if(Fe(\"beforeSanitizeElements\",e,null),(r=e)instanceof h&&(\"string\"!=typeof r.nodeName||\"string\"!=typeof r.textContent||\"function\"!=typeof r.removeChild||!(r.attributes instanceof d)||\"function\"!=typeof r.removeAttribute||\"function\"!=typeof r.setAttribute||\"string\"!=typeof r.namespaceURI||\"function\"!=typeof r.insertBefore||\"function\"!=typeof r.hasChildNodes))return De(e),!0;if(El(/[\\u0080-\\uFFFF]/,e.nodeName))return De(e),!0;var o=_(e.nodeName);if(Fe(\"uponSanitizeElement\",e,{tagName:o,allowedTags:z}),e.hasChildNodes()&&!je(e.firstElementChild)&&(!je(e.content)||!je(e.content.firstElementChild))&&El(/<[/\\w]/g,e.innerHTML)&&El(/<[/\\w]/g,e.textContent))return De(e),!0;if(\"select\"===o&&El(/<template/i,e.innerHTML))return De(e),!0;if(!z[o]||G[o]){if(!G[o]&&ze(o)){if(V.tagNameCheck instanceof RegExp&&El(V.tagNameCheck,o))return!1;if(V.tagNameCheck instanceof Function&&V.tagNameCheck(o))return!1}if(ie&&!ue[o]){var s=b(e)||e.parentNode,a=y(e)||e.childNodes;if(a&&s)for(var i=a.length-1;i>=0;--i)s.insertBefore(g(a[i],!0),v(e))}return De(e),!0}return e instanceof l&&!function(e){var t=b(e);t&&t.tagName||(t={namespaceURI:be,tagName:\"template\"});var n=Sl(e.tagName),r=Sl(t.tagName);return!!ke[e.namespaceURI]&&(e.namespaceURI===ve?t.namespaceURI===ye?\"svg\"===n:t.namespaceURI===ge?\"svg\"===n&&(\"annotation-xml\"===r||Oe[r]):Boolean(Ne[n]):e.namespaceURI===ge?t.namespaceURI===ye?\"math\"===n:t.namespaceURI===ve?\"math\"===n&&Ee[r]:Boolean(_e[n]):e.namespaceURI===ye?!(t.namespaceURI===ve&&!Ee[r])&&!(t.namespaceURI===ge&&!Oe[r])&&!_e[n]&&(Le[n]||!Ne[n]):!(\"application/xhtml+xml\"!==N||!ke[e.namespaceURI]))}(e)?(De(e),!0):\"noscript\"!==o&&\"noembed\"!==o&&\"noframes\"!==o||!El(/<\\/no(script|embed|frames)/i,e.innerHTML)?(Z&&3===e.nodeType&&(t=e.textContent,t=Il(t,D,\" \"),t=Il(t,P,\" \"),t=Il(t,R,\" \"),e.textContent!==t&&(wl(n.removed,{element:e.cloneNode()}),e.textContent=t)),Fe(\"afterSanitizeElements\",e,null),!1):(De(e),!0)},Be=function(e,t,n){if(se&&(\"id\"===t||\"name\"===t)&&(n in o||n in Te))return!1;if(J&&!q[t]&&El(M,t));else if(K&&El(j,t));else if(!W[t]||q[t]){if(!(ze(e)&&(V.tagNameCheck instanceof RegExp&&El(V.tagNameCheck,e)||V.tagNameCheck instanceof Function&&V.tagNameCheck(e))&&(V.attributeNameCheck instanceof RegExp&&El(V.attributeNameCheck,t)||V.attributeNameCheck instanceof Function&&V.attributeNameCheck(t))||\"is\"===t&&V.allowCustomizedBuiltInElements&&(V.tagNameCheck instanceof RegExp&&El(V.tagNameCheck,n)||V.tagNameCheck instanceof Function&&V.tagNameCheck(n))))return!1}else if(pe[t]);else if(El(B,Il(n,U,\"\")));else if(\"src\"!==t&&\"xlink:href\"!==t&&\"href\"!==t||\"script\"===e||0!==Al(n,\"data:\")||!he[e])if(Y&&!El(F,Il(n,U,\"\")));else if(n)return!1;return!0},ze=function(e){return e.indexOf(\"-\")>0},He=function(e){var t,r,o,s;Fe(\"beforeSanitizeAttributes\",e,null);var a=e.attributes;if(a){var i={attrName:\"\",attrValue:\"\",keepAttr:!0,allowedAttributes:W};for(s=a.length;s--;){var l=t=a[s],c=l.name,u=l.namespaceURI;if(r=\"value\"===c?t.value:Ol(t.value),o=_(c),i.attrName=o,i.attrValue=r,i.keepAttr=!0,i.forceKeepAttr=void 0,Fe(\"uponSanitizeAttribute\",e,i),r=i.attrValue,!i.forceKeepAttr&&(Pe(c,e),i.keepAttr))if(X||!El(/\\/>/i,r)){Z&&(r=Il(r,D,\" \"),r=Il(r,P,\" \"),r=Il(r,R,\" \"));var d=_(e.nodeName);if(Be(d,o,r)){if(!ae||\"id\"!==o&&\"name\"!==o||(Pe(c,e),r=\"user-content-\"+r),k&&\"object\"===rl(p)&&\"function\"==typeof p.getAttributeType)if(u);else switch(p.getAttributeType(d,o)){case\"TrustedHTML\":r=k.createHTML(r);break;case\"TrustedScriptURL\":r=k.createScriptURL(r)}try{u?e.setAttributeNS(u,c,r):e.setAttribute(c,r),kl(n.removed)}catch(e){}}}else Pe(c,e)}Fe(\"afterSanitizeAttributes\",e,null)}},We=function e(t){var n,r=Me(t);for(Fe(\"beforeSanitizeShadowDOM\",t,null);n=r.nextNode();)Fe(\"uponSanitizeShadowNode\",n,null),Ue(n)||(n.content instanceof s&&e(n.content),He(n));Fe(\"afterSanitizeShadowDOM\",t,null)};return n.sanitize=function(e){var o,a,l,c,u,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((xe=!e)&&(e=\"\\x3c!--\\x3e\"),\"string\"!=typeof e&&!je(e)){if(\"function\"!=typeof e.toString)throw Ll(\"toString is not a function\");if(\"string\"!=typeof(e=e.toString()))throw Ll(\"dirty is not a string, aborting\")}if(!n.isSupported){if(\"object\"===rl(t.toStaticHTML)||\"function\"==typeof t.toStaticHTML){if(\"string\"==typeof e)return t.toStaticHTML(e);if(je(e))return t.toStaticHTML(e.outerHTML)}return e}if(ee||Ae(d),n.removed=[],\"string\"==typeof e&&(le=!1),le){if(e.nodeName){var h=_(e.nodeName);if(!z[h]||G[h])throw Ll(\"root node is forbidden and cannot be sanitized in-place\")}}else if(e instanceof i)1===(a=(o=Re(\"\\x3c!----\\x3e\")).ownerDocument.importNode(e,!0)).nodeType&&\"BODY\"===a.nodeName||\"HTML\"===a.nodeName?o=a:o.appendChild(a);else{if(!ne&&!Z&&!Q&&-1===e.indexOf(\"<\"))return k&&oe?k.createHTML(e):e;if(!(o=Re(e)))return ne?null:oe?w:\"\"}o&&te&&De(o.firstChild);for(var m=Me(le?e:o);l=m.nextNode();)3===l.nodeType&&l===c||Ue(l)||(l.content instanceof s&&We(l.content),He(l),c=l);if(c=null,le)return e;if(ne){if(re)for(u=I.call(o.ownerDocument);o.firstChild;)u.appendChild(o.firstChild);else u=o;return(W.shadowroot||W.shadowrootmod)&&(u=O.call(r,u,!0)),u}var p=Q?o.outerHTML:o.innerHTML;return Q&&z[\"!doctype\"]&&o.ownerDocument&&o.ownerDocument.doctype&&o.ownerDocument.doctype.name&&El(ec,o.ownerDocument.doctype.name)&&(p=\"<!DOCTYPE \"+o.ownerDocument.doctype.name+\">\\n\"+p),Z&&(p=Il(p,D,\" \"),p=Il(p,P,\" \"),p=Il(p,R,\" \")),k&&oe?k.createHTML(p):p},n.setConfig=function(e){Ae(e),ee=!0},n.clearConfig=function(){Ce=null,ee=!1},n.isValidAttribute=function(e,t,n){Ce||Ae({});var r=_(e),o=_(t);return Be(r,o,n)},n.addHook=function(e,t){\"function\"==typeof t&&(L[e]=L[e]||[],wl(L[e],t))},n.removeHook=function(e){if(L[e])return kl(L[e])},n.removeHooks=function(e){L[e]&&(L[e]=[])},n.removeAllHooks=function(){L={}},n}();const rc=[\"script\",\"svg\"],oc=e=>-1!==e.lastIndexOf(\"</html>\"),sc=e=>({sanitizeHtml:(t,n)=>e(t)?t:((e,t)=>{nc.addHook(\"uponSanitizeElement\",((e,t)=>{T(rc,t.tagName)||ze(t.allowedTags,t.tagName)||(t.allowedTags[t.tagName]=!0)})),nc.addHook(\"uponSanitizeAttribute\",((e,t)=>{0===t.attrName.indexOf(\"on\")||ze(t.allowedAttributes,t.attrName)||(t.allowedAttributes[t.attrName]=!0),t.attrValue&&-1!==t.attrValue.indexOf(\"\\n\")&&(t.attrValue=t.attrValue.replace(/\\r?\\n/g,\"\"))}));const n=(e=>$(G(e),\"<!\"))(e),r=n?`<body>${e}</body>`:(e=>e.replace(/^[\\S\\s]*?(<!DOCTYPE|<html)/i,\"$1\"))(e),o=nc.sanitize(r,{ALLOW_UNKNOWN_PROTOCOLS:!0,FORBID_TAGS:rc,WHOLE_DOCUMENT:oc(e)});return nc.removeHook(\"uponSanitizeElement\"),nc.removeHook(\"uponSanitizeAttribute\"),n?(s=H(o,\"<body>\"),V(s,\"</body>\")?((e,t)=>e.substring(0,e.length-7))(s):s):o;var s})(t),sanitizeText:p}),ac={sanitizeHtml:p,sanitizeText:p},ic=e=>t=>({discriminator:e,data:t}),lc=e=>t=>t.discriminator===e?k.some(t.data):k.none(),cc=ic(\"event\"),uc=ic(\"html\"),dc=ic(\"images\"),hc=ic(\"word\"),mc=ic(\"text\"),pc=ic(\"void\"),fc=lc(\"html\"),gc=lc(\"images\"),vc=lc(\"word\"),yc=lc(\"text\"),bc=[\"^image/\",\"file\"],xc=e=>(e=>W(e,\"<html\")&&(W(e,'xmlns:o=\"urn:schemas-microsoft-com:office:office\"')||W(e,'xmlns:x=\"urn:schemas-microsoft-com:office:excel\"')))(e)||(e=>W(e,'meta name=\"ProgId\" content=\"Word.Document\"'))(e),kc=e=>W(e,'id=\"docs-internal-guid-'),wc=e=>e.length>0,Sc=(e,t)=>nl(e.types,t).map((t=>e.getData(t.type))).filter(wc),Cc=e=>Sc(e,\"html\"),Tc=e=>Cc(e).filter(kc),Ic=e=>k.from(e.clipboardData).filter(tl),Ac=e=>{const t=De.fromTag(\"div\"),n=((e,t)=>To(e,t,[Ta]))(Rt(t),e);return((e,t)=>{const n=Rt(e).dom,r=De.fromDom(n.createDocumentFragment()),o=Kn(t,n);fn(r,o),gn(e),hn(e,r)})(t,n),uc({container:t})},Oc={native:\"Outside of Textbox.io pasting HTML5 API (could be internal)\",fallback:\"Outside of Textbox.io pasting offscreen (could be internal)\",msoffice:\"Word Import pasting\",googledocs:\"Google Docs pasting\",image:\"Image pasting\",plaintext:\"Only plain text is available to paste\",text:\"Plain text pasting\",none:\"There is no valid way to paste\",discard:\"There is no valid way to paste, discarding content\"},Ec={getLabelForApi:e=>{const t=Pe(Oc);return _(t,(t=>Oc[t]===e)).fold(m(\"unknown\"),(e=>{switch(e){case\"native\":case\"fallback\":return\"html\";case\"none\":case\"discard\":return\"invalid\";default:return e}}))},...Oc},Lc=e=>A(e,(e=>e.asset)),Nc=(e,t,n)=>{const r=Ct({cancel:St([]),error:St([\"message\"]),insert:St([\"elements\",\"assets\",\"correlated\",\"isInternal\",\"source\",\"mode\"]),block:St([\"state\"])});let o=!1;r.registry.block.bind((e=>o=e.state));const s=(n,o)=>{r.trigger.block(!0);const s=((e,t,n)=>{const r=((e,t)=>B(e,(e=>e.getAvailable(t).map((t=>Kr(e.steps,t,e.label,e.capture()))))))(e,n);return r.getOrThunk((()=>{const e=t.getAvailable(n);return Kr(t.steps,e,t.label,t.capture())}))})(e,t,n);s.capture&&o();const a=((e,t)=>{const n={response:Fr([],[]),bundle:Wr({})},r=N(e,((e,n)=>qr(e)?e.then((e=>Yr(e,t,n))):Yr(e,t,n)),n);return qr(r)?r:Promise.resolve(r)})(s.steps,s.input),i=Ec.getLabelForApi(s.label);a.then((e=>{const t=e.bundle.isInternal.getOr(!1),n=e.bundle.officeStyles.fold(m(\"auto\"),(e=>e?\"merge\":\"clean\"));r.trigger.block(!1),Mr(e.response,(e=>{r.trigger.error(e)}),((e,o)=>{r.trigger.insert(e,Lc(o),o,t,i,n)}),(()=>{r.trigger.cancel()}),((e,o,s)=>{r.trigger.insert(e,Lc(o),o,t,i,n),r.trigger.error(s)}))}))};return{paste:e=>{const t=jt(De.fromDom(e.target));ln(t.dom).each((t=>{if(!Pn(t.start,sr())){const t=((e,t=ac)=>{const n=e=>{return void 0===e.items?k.none():(t=bc,n=e.types,B(t,(e=>nl(n,e)))).map((t=>{const n=[];for(let t=0;t<e.items.length;t++)n.push(e.items[t]);return dc({images:n})}));var t,n},r=e=>B(e.types,(n=>\"text/plain\"===n?k.some(e.getData(n)).map((e=>mc({text:t.sanitizeText(e)}))):k.none()));return{getWordData:()=>Ic(e).bind((e=>(e=>Cc(e).filter(xc))(e).map((t=>{const n=(e=>Sc(e,\"rtf\"))(e);return hc({html:t,rtf:n.fold((()=>Qi()),(e=>el(e)))})})))),getGoogleDocsData:()=>Ic(e).bind(Tc).map((e=>t.sanitizeHtml(e,\"googledocs\"))).map(Ac),getImage:()=>Ic(e).bind(n),getText:()=>Ic(e).bind(r),getHtml:()=>Ic(e).bind(Cc).map(t.sanitizeHtml).map(Ac),getOnlyText:()=>Ic(e).bind((e=>{return 1===(t=e.types).length&&\"text/plain\"===t[0]?r(e):k.none();var t})),getNative:()=>cc({nativeEvent:e}),getVoid:()=>pc({})}})(e,n);s(t,(()=>{e.preventDefault()}))}}))},pasteCustom:(e,t=d)=>{s(e,t)},isBlocked:()=>o,destroy:d,events:r.registry}},_c=e=>oi(e);var Dc={cata:(e,t,n)=>e.fold(t,n),...Nt([{blob:[\"id\",\"imageresult\",\"objurl\"]},{url:[\"id\",\"url\",\"raw\"]}])};const Pc=e=>{const t=URL.createObjectURL(e);return Rc(e,t)},Rc=(e,t)=>_c(e).then((n=>{const r=mi(e,n),o=kn(\"image\");return Dc.blob(o,r,t)})),Mc=e=>Promise.all(A(e,Pc)),jc=(e,t)=>({asset:e,image:t}),Fc=(e,t)=>Dc.cata(e,((e,n,r)=>(Sn(t,\"src\",r),!0)),b),Uc=(e,t)=>{const n=[];return O(e,((e,r)=>{const o=t[r];Fc(e,o)&&n.push(jc(e,o))})),n},Bc=(e,t)=>({asyncAsset:e.then(Ir.value,Ir.error),image:t}),zc=e=>{const t=De.fromTag(\"div\");return fn(t,e),Jt(t,\"img[src]\")},Hc=e=>0===e.indexOf(\"data:\")&&e.indexOf(\"base64\")>-1,Wc=e=>0===e.indexOf(\"blob:\"),$c=e=>In(e,\"src\").exists((e=>Hc(e)||Wc(e))),Vc=e=>R(zc(e),(e=>{const t=In(e,\"src\").getOr(\"\");return Hc(t)?((e,t)=>{return(n=t,ei(n)).map((t=>Bc(Pc(t),e)));var n})(e,t).toArray():Wc(t)?((e,t)=>{return(n=t,k.from(0===(r=n).indexOf(\"blob:\")?Qa(r):0===r.indexOf(\"data:\")?ti(r):null)).map((t=>{const n=t.then(Pc);return Bc(n,e)}));var n,r})(e,t).toArray():[]})),Gc=e=>{const t=L(e,(e=>!Ee(\"img\")(e)||!$c(e)));return Br(t,[],\"errors.local.images.disallowed\")};var qc=e=>(t,n)=>{const r=()=>Promise.resolve(n),o=(t,o)=>!1===e.allowLocalImages?(e=>{const t=L(zc(e),$c);return O(t,vn),Promise.resolve({response:t.length>0?Gc(e):n.response,bundle:n.bundle})})(t):0===o.length?(e=>{const t=Vc(e),r=Promise.all(A(t,(e=>e.asyncAsset))),o=A(t,(e=>e.image));return r.then((t=>{const r=(e=>{const t=[],n=[];return O(e,(e=>{e.fold((e=>{t.push(e)}),(e=>{n.push(e)}))})),{errors:t,values:n}})(t),s=Uc(r.values,o);return{response:r.errors.length>0?Br(e,s,\"errors.imageimport.failed\"):Fr(e,s),bundle:n.bundle}}))})(t):r();return Mr(n.response,Vr,o,r,o)};const Kc=(e,t,n=!1)=>fetch(e,{credentials:n?\"include\":\"same-origin\",headers:t}).then((async e=>{const t=await e.blob();return{ok:e.ok,status:e.status,blob:t}}),(()=>({ok:!1,status:0}))),Jc=[{code:404,message:\"Could not find Image Proxy\"},{code:403,message:\"Rejected request\"},{code:0,message:\"Incorrect Image Proxy URL\"}],Yc=[{type:\"not_found\",message:\"Failed to load image.\"},{type:\"key_missing\",message:\"The request did not include an api key.\"},{type:\"key_not_found\",message:\"The provided api key could not be found.\"},{type:\"domain_not_trusted\",message:\"The api key is not valid for the request origins.\"}],Xc=e=>{const t=(e=>{const t=_(Jc,(t=>e===t.code)).fold(m(\"Unknown ImageProxy error\"),(e=>e.message));return\"ImageProxy HTTP error: \"+t})(e);return Promise.reject(t)},Zc=e=>_(Yc,(t=>t.type===e)).fold(m(\"Unknown service error\"),(e=>e.message)),Qc=e=>(e=>new Promise(((t,n)=>{const r=new FileReader;r.onload=()=>{t(r.result)},r.onerror=e=>{n(e)},r.readAsText(e)})))(e).then((e=>{const t=(e=>{const t=(e=>{try{return k.some(JSON.parse(e))}catch(e){return k.none()}})(e),n=t.bind((e=>((e,t)=>{const n=N([\"error\",\"type\"],((e,t)=>l(e)?e[t]:void 0),e);return k.from(n)})(e).map(Zc))).getOr(\"Invalid JSON in service error message\");return\"ImageProxy Service error: \"+n})(e);return Promise.reject(t)})),eu=(e,t,n=!0)=>t?((e,t)=>{const n={\"Content-Type\":\"application/json;charset=UTF-8\",\"tiny-api-key\":t};return Kc(((e,t)=>{const n=-1===e.indexOf(\"?\")?\"?\":\"&\";return/[?&]apiKey=/.test(e)?e:e+n+\"apiKey=\"+encodeURIComponent(t)})(e,t),n).then((e=>{return e.ok?Promise.resolve(e.blob):((e,t)=>\"application/json\"===(null==t?void 0:t.type)&&(400===e||403===e||404===e||500===e))(t=e.status,n=e.blob)?Qc(n):Xc(t);var t,n}))})(e,t):((e,t)=>Kc(e,{},t).then((e=>e.ok?Promise.resolve(e.blob):Xc(e.status))))(e,n),tu=/^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@\\/]*)(?::([^:@\\/]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,nu=/^(?:(?![^:@\\/]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@\\/]*)(?::([^:@\\/]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/,ru=/(?:^|&)([^&=]+)=?([^&]*)/g,ou=e=>{const t={};for(;;){const n=ru.exec(e);if(null===n)return t;t[n[1]]=n[2]}},su=(e,t)=>{const n=()=>Promise.resolve({response:t.response,bundle:t.bundle}),r=e=>_c(e).then((t=>{const n=kn(\"image\"),r=mi(e,t),o=URL.createObjectURL(e);return Dc.blob(n,r,o)})),o=(e,t)=>Dc.url(kn(\"image\"),t,e),s=(e,n)=>{let s=!1;const a=R(e,(e=>Jt(e,\"img\")));return Promise.all(A(a,(e=>{const t=e.dom.src;return(e=>{const t=((e,t={})=>{var n;return((e,t)=>{const n=(t?tu:nu).exec(e),r=j([\"source\",\"protocol\",\"authority\",\"userInfo\",\"user\",\"password\",\"host\",\"port\",\"relative\",\"path\",\"directory\",\"file\",\"query\",\"anchor\"],((e,t)=>{var r;return null!==(r=n[t])&&void 0!==r?r:\"\"}));return{...r,queryKey:ou(r.query)}})(e,null!==(n=t.strictMode)&&void 0!==n&&n)})(e);return W(t.host,\"google\")&&!$(t.path,\"/drawings/\")})(t)?eu(e.dom.src,void 0,!0).then(r,(()=>(s=!0,o(e,t)))):o(e,t)}))).then((r=>{const o=n.concat(Uc(r,a));return{response:s?Br(e,o,\"errors.imageimport.failed\"):Fr(e,o),bundle:t.bundle}}),(()=>({response:jr(\"errors.imageimport.invalid\"),bundle:t.bundle})))};return Mr(t.response,n,s,n,s)},au=e=>{const t=cu(e);return t&&iu(e)||!t&&lu(e)},iu=e=>e.officeStyles.getOr(!0),lu=e=>e.htmlStyles.getOr(!1),cu=e=>e.isWord.getOr(!1),uu=e=>e.isInternal.getOr(!1),du=e=>cu(e)?xs.Word:(e=>e.isGoogleDocs.getOr(!1))(e)?xs.GoogleDocs:xs.Html,hu=(e,t)=>{const n=((e,t)=>{const n=t.translations,r=e=>k.some(Xr(t,{officeStyles:e,gdocsStyles:e,htmlStyles:e}));return{get:o=>{const s=(e=>{switch(e){case xs.Word:return\"officeStyles\";case xs.GoogleDocs:return\"gdocsStyles\";default:return\"htmlStyles\"}})(o),a=t[s];return c(a)?a().then((e=>r(\"merge\"===e)),(e=>(console.error(e),r(!1)))):\"clean\"===a?Promise.resolve(r(!1)):\"merge\"===a?Promise.resolve(r(!0)):new Promise((t=>{const o=De.fromTag(\"div\");_n(o,pr(\"styles-dialog-content\"));const s=De.fromTag(\"p\"),a=Kn(n(\"cement.dialog.paste.instructions\"));fn(s,a),hn(o,s);const i={text:n(\"cement.dialog.paste.clean\"),tabindex:0,className:pr(\"clean-styles\"),click:()=>{c(),t(r(!1))}},l={text:n(\"cement.dialog.paste.merge\"),tabindex:1,className:pr(\"merge-styles\"),click:()=>{c(),t(r(!0))}},c=()=>{u.destroy()},u=e();u.setTitle(n(\"cement.dialog.paste.title\")),u.setContent(o),u.setButtons([i,l]),u.events.close.bind((()=>{c(),t(k.none())})),u.show()}))},destroy:d}})(e,t);return(e,t)=>{const r=t.bundle,o=t.response;return n.get(du(r)).then((e=>e.fold((()=>({response:Ur(),bundle:t.bundle})),(e=>({response:o,bundle:Wr({officeStyles:e.officeStyles,gdocsStyles:e.gdocsStyles,htmlStyles:e.htmlStyles})})))))}},mu=(e,t)=>(n,r)=>uu(r.bundle)?(e=>Promise.resolve({response:r.response,bundle:Wr({officeStyles:e,gdocsStyles:e,htmlStyles:e})}))(!0):hu(e,t)(n,r),pu=(e,t)=>{if(!qt(e))throw new Error(\"Internal error: attempted to write to an iframe that is not in the DOM\");const n=(e=>(e=>{const t=e.dom;try{return((e,t)=>null!=e?k.some(t(e)):k.none())(t.contentWindow?t.contentWindow.document:t.contentDocument,De.fromDom)}catch(e){return console.log(\"Error reading iframe: \",t),console.log(\"Error was: \"+e),k.none()}})(e).getOrThunk((()=>Rt(e))))(e),r=n.dom;r.open(\"text/html\",\"replace\"),r.write(t),r.close()};var fu=Object.create,gu=Object.defineProperty,vu=Object.getOwnPropertyDescriptor,yu=Object.getOwnPropertyNames,bu=Object.getPrototypeOf,xu=Object.prototype.hasOwnProperty,ku=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),wu=(e,t)=>{for(var n in t)gu(e,n,{get:t[n],enumerable:!0})},Su=ku((e=>{var t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");e.encode=function(e){if(0<=e&&e<t.length)return t[e];throw new TypeError(\"Must be between 0 and 63: \"+e)},e.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}})),Cu=ku((e=>{var t=Su();e.encode=function(e){var n,r,o=\"\",s=(r=e)<0?1+(-r<<1):0+(r<<1);do{n=31&s,(s>>>=5)>0&&(n|=32),o+=t.encode(n)}while(s>0);return o},e.decode=function(e,n,r){var o,s,a=e.length,i=0,l=0;do{if(n>=a)throw new Error(\"Expected more digits in base 64 VLQ value.\");if(-1===(s=t.decode(e.charCodeAt(n++))))throw new Error(\"Invalid base64 digit: \"+e.charAt(n-1));o=!!(32&s),i+=(s&=31)<<l,l+=5}while(o);r.value=function(e){var t=e>>1;return 1==(1&e)?-t:t}(i),r.rest=n}})),Tu=ku((e=>{e.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('\"'+t+'\" is a required argument.')};var t=/^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/,n=/^data:.+\\,.+$/;function r(e){var n=e.match(t);return n?{scheme:n[1],auth:n[2],host:n[3],port:n[4],path:n[5]}:null}function o(e){var t=\"\";return e.scheme&&(t+=e.scheme+\":\"),t+=\"//\",e.auth&&(t+=e.auth+\"@\"),e.host&&(t+=e.host),e.port&&(t+=\":\"+e.port),e.path&&(t+=e.path),t}e.urlParse=r,e.urlGenerate=o;var s=function(t){var n=[];return function(t){for(var s=0;s<n.length;s++)if(n[s].input===t){var a=n[0];return n[0]=n[s],n[s]=a,n[0].result}var i=function(t){var n=t,s=r(t);if(s){if(!s.path)return t;n=s.path}for(var a=e.isAbsolute(n),i=[],l=0,c=0;;){if(l=c,-1===(c=n.indexOf(\"/\",l))){i.push(n.slice(l));break}for(i.push(n.slice(l,c));c<n.length&&\"/\"===n[c];)c++}var u,d=0;for(c=i.length-1;c>=0;c--)\".\"===(u=i[c])?i.splice(c,1):\"..\"===u?d++:d>0&&(\"\"===u?(i.splice(c+1,d),d=0):(i.splice(c,2),d--));return\"\"===(n=i.join(\"/\"))&&(n=a?\"/\":\".\"),s?(s.path=n,o(s)):n}(t);return n.unshift({input:t,result:i}),n.length>32&&n.pop(),i}}();function a(e,t){\"\"===e&&(e=\".\"),\"\"===t&&(t=\".\");var a=r(t),i=r(e);if(i&&(e=i.path||\"/\"),a&&!a.scheme)return i&&(a.scheme=i.scheme),o(a);if(a||t.match(n))return t;if(i&&!i.host&&!i.path)return i.host=t,o(i);var l=\"/\"===t.charAt(0)?t:s(e.replace(/\\/+$/,\"\")+\"/\"+t);return i?(i.path=l,o(i)):l}e.normalize=s,e.join=a,e.isAbsolute=function(e){return\"/\"===e.charAt(0)||t.test(e)},e.relative=function(e,t){\"\"===e&&(e=\".\"),e=e.replace(/\\/$/,\"\");for(var n=0;0!==t.indexOf(e+\"/\");){var r=e.lastIndexOf(\"/\");if(r<0||(e=e.slice(0,r)).match(/^([^\\/]+:\\/)?\\/*$/))return t;++n}return Array(n+1).join(\"../\")+t.substr(e.length+1)};var i=!(\"__proto__\"in Object.create(null));function l(e){return e}function c(e){if(!e)return!1;var t=e.length;if(t<9||95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function u(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}e.toSetString=i?l:function(e){return c(e)?\"$\"+e:e},e.fromSetString=i?l:function(e){return c(e)?e.slice(1):e},e.compareByOriginalPositions=function(e,t,n){var r=u(e.source,t.source);return 0!==r||0!=(r=e.originalLine-t.originalLine)||0!=(r=e.originalColumn-t.originalColumn)||n||0!=(r=e.generatedColumn-t.generatedColumn)||0!=(r=e.generatedLine-t.generatedLine)?r:u(e.name,t.name)},e.compareByOriginalPositionsNoSource=function(e,t,n){var r;return 0!=(r=e.originalLine-t.originalLine)||0!=(r=e.originalColumn-t.originalColumn)||n||0!=(r=e.generatedColumn-t.generatedColumn)||0!=(r=e.generatedLine-t.generatedLine)?r:u(e.name,t.name)},e.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r||0!=(r=e.generatedColumn-t.generatedColumn)||n||0!==(r=u(e.source,t.source))||0!=(r=e.originalLine-t.originalLine)||0!=(r=e.originalColumn-t.originalColumn)?r:u(e.name,t.name)},e.compareByGeneratedPositionsDeflatedNoLine=function(e,t,n){var r=e.generatedColumn-t.generatedColumn;return 0!==r||n||0!==(r=u(e.source,t.source))||0!=(r=e.originalLine-t.originalLine)||0!=(r=e.originalColumn-t.originalColumn)?r:u(e.name,t.name)},e.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n||0!=(n=e.generatedColumn-t.generatedColumn)||0!==(n=u(e.source,t.source))||0!=(n=e.originalLine-t.originalLine)||0!=(n=e.originalColumn-t.originalColumn)?n:u(e.name,t.name)},e.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\\)]}'[^\\n]*\\n/,\"\"))},e.computeSourceURL=function(e,t,n){if(t=t||\"\",e&&(\"/\"!==e[e.length-1]&&\"/\"!==t[0]&&(e+=\"/\"),t=e+t),n){var i=r(n);if(!i)throw new Error(\"sourceMapURL could not be parsed\");if(i.path){var l=i.path.lastIndexOf(\"/\");l>=0&&(i.path=i.path.substring(0,l+1))}t=a(o(i),t)}return s(t)}})),Iu=ku((e=>{var t=Tu(),n=Object.prototype.hasOwnProperty,r=typeof Map<\"u\";function o(){this._array=[],this._set=r?new Map:Object.create(null)}o.fromArray=function(e,t){for(var n=new o,r=0,s=e.length;r<s;r++)n.add(e[r],t);return n},o.prototype.size=function(){return r?this._set.size:Object.getOwnPropertyNames(this._set).length},o.prototype.add=function(e,o){var s=r?e:t.toSetString(e),a=r?this.has(e):n.call(this._set,s),i=this._array.length;(!a||o)&&this._array.push(e),a||(r?this._set.set(e,i):this._set[s]=i)},o.prototype.has=function(e){if(r)return this._set.has(e);var o=t.toSetString(e);return n.call(this._set,o)},o.prototype.indexOf=function(e){if(r){var o=this._set.get(e);if(o>=0)return o}else{var s=t.toSetString(e);if(n.call(this._set,s))return this._set[s]}throw new Error('\"'+e+'\" is not in the set.')},o.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error(\"No element indexed by \"+e)},o.prototype.toArray=function(){return this._array.slice()},e.ArraySet=o})),Au=ku((e=>{var t=Tu();function n(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}n.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},n.prototype.add=function(e){!function(e,n){var r=e.generatedLine,o=n.generatedLine,s=e.generatedColumn,a=n.generatedColumn;return o>r||o==r&&a>=s||t.compareByGeneratedPositionsInflated(e,n)<=0}(this._last,e)?(this._sorted=!1,this._array.push(e)):(this._last=e,this._array.push(e))},n.prototype.toArray=function(){return this._sorted||(this._array.sort(t.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},e.MappingList=n})),Ou=ku((e=>{var t=Cu(),n=Tu(),r=Iu().ArraySet,o=Au().MappingList;function s(e){e||(e={}),this._file=n.getArg(e,\"file\",null),this._sourceRoot=n.getArg(e,\"sourceRoot\",null),this._skipValidation=n.getArg(e,\"skipValidation\",!1),this._sources=new r,this._names=new r,this._mappings=new o,this._sourcesContents=null}s.prototype._version=3,s.fromSourceMap=function(e){var t=e.sourceRoot,r=new s({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var o={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(o.source=e.source,null!=t&&(o.source=n.relative(t,o.source)),o.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(o.name=e.name)),r.addMapping(o)})),e.sources.forEach((function(o){var s=o;null!==t&&(s=n.relative(t,o)),r._sources.has(s)||r._sources.add(s);var a=e.sourceContentFor(o);null!=a&&r.setSourceContent(o,a)})),r},s.prototype.addMapping=function(e){var t=n.getArg(e,\"generated\"),r=n.getArg(e,\"original\",null),o=n.getArg(e,\"source\",null),s=n.getArg(e,\"name\",null);this._skipValidation||this._validateMapping(t,r,o,s),null!=o&&(o=String(o),this._sources.has(o)||this._sources.add(o)),null!=s&&(s=String(s),this._names.has(s)||this._names.add(s)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:o,name:s})},s.prototype.setSourceContent=function(e,t){var r=e;null!=this._sourceRoot&&(r=n.relative(this._sourceRoot,r)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[n.toSetString(r)]=t):this._sourcesContents&&(delete this._sourcesContents[n.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},s.prototype.applySourceMap=function(e,t,o){var s=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\\'s \"file\" property. Both were omitted.');s=e.file}var a=this._sourceRoot;null!=a&&(s=n.relative(a,s));var i=new r,l=new r;this._mappings.unsortedForEach((function(t){if(t.source===s&&null!=t.originalLine){var r=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=r.source&&(t.source=r.source,null!=o&&(t.source=n.join(o,t.source)),null!=a&&(t.source=n.relative(a,t.source)),t.originalLine=r.line,t.originalColumn=r.column,null!=r.name&&(t.name=r.name))}var c=t.source;null!=c&&!i.has(c)&&i.add(c);var u=t.name;null!=u&&!l.has(u)&&l.add(u)}),this),this._sources=i,this._names=l,e.sources.forEach((function(t){var r=e.sourceContentFor(t);null!=r&&(null!=o&&(t=n.join(o,t)),null!=a&&(t=n.relative(a,t)),this.setSourceContent(t,r))}),this)},s.prototype._validateMapping=function(e,t,n,r){if(t&&\"number\"!=typeof t.line&&\"number\"!=typeof t.column)throw new Error(\"original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.\");if(!(e&&\"line\"in e&&\"column\"in e&&e.line>0&&e.column>=0)||t||n||r){if(e&&\"line\"in e&&\"column\"in e&&t&&\"line\"in t&&\"column\"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n)return;throw new Error(\"Invalid mapping: \"+JSON.stringify({generated:e,source:n,original:t,name:r}))}},s.prototype._serializeMappings=function(){for(var e,r,o,s,a=0,i=1,l=0,c=0,u=0,d=0,h=\"\",m=this._mappings.toArray(),p=0,f=m.length;p<f;p++){if(e=\"\",(r=m[p]).generatedLine!==i)for(a=0;r.generatedLine!==i;)e+=\";\",i++;else if(p>0){if(!n.compareByGeneratedPositionsInflated(r,m[p-1]))continue;e+=\",\"}e+=t.encode(r.generatedColumn-a),a=r.generatedColumn,null!=r.source&&(s=this._sources.indexOf(r.source),e+=t.encode(s-d),d=s,e+=t.encode(r.originalLine-1-c),c=r.originalLine-1,e+=t.encode(r.originalColumn-l),l=r.originalColumn,null!=r.name&&(o=this._names.indexOf(r.name),e+=t.encode(o-u),u=o)),h+=e}return h},s.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=n.relative(t,e));var r=n.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null}),this)},s.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},s.prototype.toString=function(){return JSON.stringify(this.toJSON())},e.SourceMapGenerator=s}));function Eu(e){return e>=48&&e<=57}function Lu(e){return Eu(e)||e>=65&&e<=70||e>=97&&e<=102}function Nu(e){return e>=65&&e<=90}function _u(e){return function(e){return Nu(e)||function(e){return e>=97&&e<=122}(e)}(e)||function(e){return e>=128}(e)||95===e}function Du(e){return _u(e)||Eu(e)||45===e}function Pu(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e}function Ru(e){return 10===e||13===e||12===e}function Mu(e){return Ru(e)||32===e||9===e}function ju(e,t){return!(92!==e||Ru(t)||0===t)}function Fu(e,t,n){return 45===e?_u(t)||45===t||ju(t,n):!!_u(e)||92===e&&ju(e,t)}function Uu(e,t,n){return 43===e||45===e?Eu(t)?2:46===t&&Eu(n)?3:0:46===e?Eu(t)?2:0:Eu(e)?1:0}function Bu(e){return 65279===e||65534===e?1:0}var zu=new Array(128),Hu=130,Wu=131,$u=132,Vu=133;for(let e=0;e<zu.length;e++)zu[e]=Mu(e)&&Hu||Eu(e)&&Wu||_u(e)&&$u||Pu(e)&&Vu||e||128;function Gu(e){return e<128?zu[e]:$u}function qu(e,t){return t<e.length?e.charCodeAt(t):0}function Ku(e,t,n){return 13===n&&10===qu(e,t+1)?2:1}function Ju(e,t,n){let r=e.charCodeAt(t);return Nu(r)&&(r|=32),r===n}function Yu(e,t,n,r){if(n-t!==r.length||t<0||n>e.length)return!1;for(let o=t;o<n;o++){let n=r.charCodeAt(o-t),s=e.charCodeAt(o);if(Nu(s)&&(s|=32),s!==n)return!1}return!0}function Xu(e,t){for(;t<e.length&&Mu(e.charCodeAt(t));t++);return t}function Zu(e,t){for(;t<e.length&&Eu(e.charCodeAt(t));t++);return t}function Qu(e,t){if(Lu(qu(e,(t+=2)-1))){for(let n=Math.min(e.length,t+5);t<n&&Lu(qu(e,t));t++);let n=qu(e,t);Mu(n)&&(t+=Ku(e,t,n))}return t}function ed(e,t){for(;t<e.length;t++){let n=e.charCodeAt(t);if(!Du(n)){if(ju(n,qu(e,t+1))){t=Qu(e,t)-1;continue}break}}return t}function td(e,t){let n=e.charCodeAt(t);if((43===n||45===n)&&(n=e.charCodeAt(t+=1)),Eu(n)&&(t=Zu(e,t+1),n=e.charCodeAt(t)),46===n&&Eu(e.charCodeAt(t+1))&&(t=Zu(e,t+=2)),Ju(e,t,101)){let r=0;n=e.charCodeAt(t+1),(45===n||43===n)&&(r=1,n=e.charCodeAt(t+2)),Eu(n)&&(t=Zu(e,t+1+r+1))}return t}function nd(e,t){for(;t<e.length;t++){let n=e.charCodeAt(t);if(41===n){t++;break}ju(n,qu(e,t+1))&&(t=Qu(e,t))}return t}function rd(e){if(1===e.length&&!Lu(e.charCodeAt(0)))return e[0];let t=parseInt(e,16);return(0===t||t>=55296&&t<=57343||t>1114111)&&(t=65533),String.fromCodePoint(t)}var od=[\"EOF-token\",\"ident-token\",\"function-token\",\"at-keyword-token\",\"hash-token\",\"string-token\",\"bad-string-token\",\"url-token\",\"bad-url-token\",\"delim-token\",\"number-token\",\"percentage-token\",\"dimension-token\",\"whitespace-token\",\"CDO-token\",\"CDC-token\",\"colon-token\",\"semicolon-token\",\"comma-token\",\"[-token\",\"]-token\",\"(-token\",\")-token\",\"{-token\",\"}-token\"];function sd(e=null,t){return null===e||e.length<t?new Uint32Array(Math.max(t+1024,16384)):e}function ad(e){let t=e.source,n=t.length,r=t.length>0?Bu(t.charCodeAt(0)):0,o=sd(e.lines,n),s=sd(e.columns,n),a=e.startLine,i=e.startColumn;for(let e=r;e<n;e++){let r=t.charCodeAt(e);o[e]=a,s[e]=i++,(10===r||13===r||12===r)&&(13===r&&e+1<n&&10===t.charCodeAt(e+1)&&(e++,o[e]=a,s[e]=i),a++,i=1)}o[n]=a,s[n]=i,e.lines=o,e.columns=s,e.computed=!0}var id=16777215,ld=24,cd=new Map([[2,22],[21,22],[19,20],[23,24]]);function ud(e,t){function n(t){return t<i?e.charCodeAt(t):0}function r(){return c=td(e,c),Fu(n(c),n(c+1),n(c+2))?(a=12,void(c=ed(e,c))):37===n(c)?(a=11,void c++):void(a=10)}function o(){let t=c;return c=ed(e,c),Yu(e,t,c,\"url\")&&40===n(c)?(c=Xu(e,c+1),34===n(c)||39===n(c)?(a=2,void(c=t+4)):void function(){for(a=7,c=Xu(e,c);c<e.length;c++){let t=e.charCodeAt(c);switch(Gu(t)){case 41:return void c++;case Hu:return c=Xu(e,c),41===n(c)||c>=e.length?void(c<e.length&&c++):(c=nd(e,c),void(a=8));case 34:case 39:case 40:case Vu:return c=nd(e,c),void(a=8);case 92:if(ju(t,n(c+1))){c=Qu(e,c)-1;break}return c=nd(e,c),void(a=8)}}}()):40===n(c)?(a=2,void c++):void(a=1)}function s(t){for(t||(t=n(c++)),a=5;c<e.length;c++){let r=e.charCodeAt(c);switch(Gu(r)){case t:return void c++;case Hu:if(Ru(r))return c+=Ku(e,c,r),void(a=6);break;case 92:if(c===e.length-1)break;let o=n(c+1);Ru(o)?c+=Ku(e,c+1,o):ju(r,o)&&(c=Qu(e,c)-1)}}}let a,i=(e=String(e||\"\")).length,l=Bu(n(0)),c=l;for(;c<i;){let i=e.charCodeAt(c);switch(Gu(i)){case Hu:a=13,c=Xu(e,c+1);break;case 34:s();break;case 35:Du(n(c+1))||ju(n(c+1),n(c+2))?(a=4,c=ed(e,c+1)):(a=9,c++);break;case 39:s();break;case 40:a=21,c++;break;case 41:a=22,c++;break;case 43:Uu(i,n(c+1),n(c+2))?r():(a=9,c++);break;case 44:a=18,c++;break;case 45:Uu(i,n(c+1),n(c+2))?r():45===n(c+1)&&62===n(c+2)?(a=15,c+=3):Fu(i,n(c+1),n(c+2))?o():(a=9,c++);break;case 46:Uu(i,n(c+1),n(c+2))?r():(a=9,c++);break;case 47:42===n(c+1)?(a=25,c=e.indexOf(\"*/\",c+2),c=-1===c?e.length:c+2):(a=9,c++);break;case 58:a=16,c++;break;case 59:a=17,c++;break;case 60:33===n(c+1)&&45===n(c+2)&&45===n(c+3)?(a=14,c+=4):(a=9,c++);break;case 64:Fu(n(c+1),n(c+2),n(c+3))?(a=3,c=ed(e,c+1)):(a=9,c++);break;case 91:a=19,c++;break;case 92:ju(i,n(c+1))?o():(a=9,c++);break;case 93:a=20,c++;break;case 123:a=23,c++;break;case 125:a=24,c++;break;case Wu:r();break;case $u:o();break;default:a=9,c++}t(a,l,l=c)}}var dd,hd=(dd=Ou(),((e,t,n,r)=>{if(t&&\"object\"==typeof t||\"function\"==typeof t)for(let n of yu(t))!xu.call(e,n)&&\"default\"!==n&&gu(e,n,{get:()=>t[n],enumerable:!(r=vu(t,n))||r.enumerable});return e})((e=>gu(e,\"__esModule\",{value:!0}))(gu(null!=dd?fu(bu(dd)):{},\"default\",{value:dd,enumerable:!0})),dd)),md=new Set([\"Atrule\",\"Selector\",\"Declaration\"]),pd={};wu(pd,{safe:()=>xd,spec:()=>bd});var fd=(e,t)=>{if(9===e&&(e=t),\"string\"==typeof e){let t=e.charCodeAt(0);return t>127?32768:t<<8}return e},gd=[[1,1],[1,2],[1,7],[1,8],[1,\"-\"],[1,10],[1,11],[1,12],[1,15],[1,21],[3,1],[3,2],[3,7],[3,8],[3,\"-\"],[3,10],[3,11],[3,12],[3,15],[4,1],[4,2],[4,7],[4,8],[4,\"-\"],[4,10],[4,11],[4,12],[4,15],[12,1],[12,2],[12,7],[12,8],[12,\"-\"],[12,10],[12,11],[12,12],[12,15],[\"#\",1],[\"#\",2],[\"#\",7],[\"#\",8],[\"#\",\"-\"],[\"#\",10],[\"#\",11],[\"#\",12],[\"#\",15],[\"-\",1],[\"-\",2],[\"-\",7],[\"-\",8],[\"-\",\"-\"],[\"-\",10],[\"-\",11],[\"-\",12],[\"-\",15],[10,1],[10,2],[10,7],[10,8],[10,10],[10,11],[10,12],[10,\"%\"],[10,15],[\"@\",1],[\"@\",2],[\"@\",7],[\"@\",8],[\"@\",\"-\"],[\"@\",15],[\".\",10],[\".\",11],[\".\",12],[\"+\",10],[\"+\",11],[\"+\",12],[\"/\",\"*\"]],vd=gd.concat([[1,4],[12,4],[4,4],[3,21],[3,5],[3,16],[11,11],[11,12],[11,2],[11,\"-\"],[22,1],[22,2],[22,11],[22,12],[22,4],[22,\"-\"]]);function yd(e){let t=new Set(e.map((([e,t])=>fd(e)<<16|fd(t))));return function(e,n,r){let o=fd(n,r),s=r.charCodeAt(0);return(45===s&&1!==n&&2!==n&&15!==n||43===s?t.has(e<<16|s<<8):t.has(e<<16|o))&&this.emit(\" \",13,!0),o}}var bd=yd(gd),xd=yd(vd);function kd(e,t){if(\"function\"!=typeof t)e.children.forEach(this.node,this);else{let n=null;e.children.forEach((e=>{null!==n&&t.call(this,n),this.node(e),n=e}))}}function wd(e){ud(e,((t,n,r)=>{this.token(t,e.slice(n,r))}))}var Sd={};wu(Sd,{AnPlusB:()=>Dd,Atrule:()=>Pd,AtrulePrelude:()=>Rd,AttributeSelector:()=>Vd,Block:()=>Gd,Brackets:()=>qd,CDC:()=>Kd,CDO:()=>Jd,ClassSelector:()=>Xd,Combinator:()=>Qd,Comment:()=>eh,Declaration:()=>th,DeclarationList:()=>nh,Dimension:()=>rh,Function:()=>oh,Hash:()=>sh,IdSelector:()=>ch,Identifier:()=>ih,MediaFeature:()=>uh,MediaQuery:()=>dh,MediaQueryList:()=>hh,NestingSelector:()=>ph,Nth:()=>gh,Number:()=>vh,Operator:()=>yh,Parentheses:()=>bh,Percentage:()=>kh,PseudoClassSelector:()=>Sh,PseudoElementSelector:()=>Th,Ratio:()=>Ih,Raw:()=>Eh,Rule:()=>Lh,Selector:()=>_h,SelectorList:()=>Ph,String:()=>Bh,StyleSheet:()=>zh,TypeSelector:()=>Vh,UnicodeRange:()=>Gh,Url:()=>Qh,Value:()=>em,WhiteSpace:()=>tm});var Cd=43,Td=45,Id=110,Ad=!0;function Od(e,t){let n=this.tokenStart+e,r=this.charCodeAt(n);for((r===Cd||r===Td)&&(t&&this.error(\"Number sign is not allowed\"),n++);n<this.tokenEnd;n++)Eu(this.charCodeAt(n))||this.error(\"Integer is expected\",n)}function Ed(e){return Od.call(this,0,e)}function Ld(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let n=\"\";switch(t){case Id:n=\"N is expected\";break;case Td:n=\"HyphenMinus is expected\"}this.error(n,this.tokenStart+e)}}function Nd(){let e=0,t=0,n=this.tokenType;for(;13===n||25===n;)n=this.lookupType(++e);if(10!==n){if(!this.isDelim(Cd,e)&&!this.isDelim(Td,e))return null;t=this.isDelim(Cd,e)?Cd:Td;do{n=this.lookupType(++e)}while(13===n||25===n);10!==n&&(this.skip(e),Ed.call(this,Ad))}return e>0&&this.skip(e),0===t&&(n=this.charCodeAt(this.tokenStart),n!==Cd&&n!==Td&&this.error(\"Number sign is expected\")),Ed.call(this,0!==t),t===Td?\"-\"+this.consume(10):this.consume(10)}function _d(){let e=this.tokenStart,t=null,n=null;if(10===this.tokenType)Ed.call(this,!1),n=this.consume(10);else if(1===this.tokenType&&this.cmpChar(this.tokenStart,Td))switch(t=\"-1\",Ld.call(this,1,Id),this.tokenEnd-this.tokenStart){case 2:this.next(),n=Nd.call(this);break;case 3:Ld.call(this,2,Td),this.next(),this.skipSC(),Ed.call(this,Ad),n=\"-\"+this.consume(10);break;default:Ld.call(this,2,Td),Od.call(this,3,Ad),this.next(),n=this.substrToCursor(e+2)}else if(1===this.tokenType||this.isDelim(Cd)&&1===this.lookupType(1)){let r=0;switch(t=\"1\",this.isDelim(Cd)&&(r=1,this.next()),Ld.call(this,0,Id),this.tokenEnd-this.tokenStart){case 1:this.next(),n=Nd.call(this);break;case 2:Ld.call(this,1,Td),this.next(),this.skipSC(),Ed.call(this,Ad),n=\"-\"+this.consume(10);break;default:Ld.call(this,1,Td),Od.call(this,2,Ad),this.next(),n=this.substrToCursor(e+r+1)}}else if(12===this.tokenType){let r=this.charCodeAt(this.tokenStart),o=r===Cd||r===Td,s=this.tokenStart+o;for(;s<this.tokenEnd&&Eu(this.charCodeAt(s));s++);s===this.tokenStart+o&&this.error(\"Integer is expected\",this.tokenStart+o),Ld.call(this,s-this.tokenStart,Id),t=this.substring(e,s),s+1===this.tokenEnd?(this.next(),n=Nd.call(this)):(Ld.call(this,s-this.tokenStart+1,Td),s+2===this.tokenEnd?(this.next(),this.skipSC(),Ed.call(this,Ad),n=\"-\"+this.consume(10)):(Od.call(this,s-this.tokenStart+2,Ad),this.next(),n=this.substrToCursor(s+1)))}else this.error();return null!==t&&t.charCodeAt(0)===Cd&&(t=t.substr(1)),null!==n&&n.charCodeAt(0)===Cd&&(n=n.substr(1)),{type:\"AnPlusB\",loc:this.getLocation(e,this.tokenStart),a:t,b:n}}function Dd(e){if(e.a){let t=(\"+1\"===e.a||\"1\"===e.a?\"n\":\"-1\"===e.a&&\"-n\")||e.a+\"n\";if(e.b){let n=\"-\"===e.b[0]||\"+\"===e.b[0]?e.b:\"+\"+e.b;this.tokenize(t+n)}else this.tokenize(t)}else this.tokenize(e.b)}function Pd(e){this.token(3,\"@\"+e.name),null!==e.prelude&&this.node(e.prelude),e.block?this.node(e.block):this.token(17,\";\")}function Rd(e){this.children(e)}var Md=36,jd=42,Fd=61,Ud=94,Bd=124,zd=126;function Hd(){this.eof&&this.error(\"Unexpected end of input\");let e=this.tokenStart,t=!1;return this.isDelim(jd)?(t=!0,this.next()):this.isDelim(Bd)||this.eat(1),this.isDelim(Bd)?this.charCodeAt(this.tokenStart+1)!==Fd?(this.next(),this.eat(1)):t&&this.error(\"Identifier is expected\",this.tokenEnd):t&&this.error(\"Vertical line is expected\"),{type:\"Identifier\",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function Wd(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==Fd&&t!==zd&&t!==Ud&&t!==Md&&t!==jd&&t!==Bd&&this.error(\"Attribute selector (=, ~=, ^=, $=, *=, |=) is expected\"),this.next(),t!==Fd&&(this.isDelim(Fd)||this.error(\"Equal sign is expected\"),this.next()),this.substrToCursor(e)}function $d(){let e,t=this.tokenStart,n=null,r=null,o=null;return this.eat(19),this.skipSC(),e=Hd.call(this),this.skipSC(),20!==this.tokenType&&(1!==this.tokenType&&(n=Wd.call(this),this.skipSC(),r=5===this.tokenType?this.String():this.Identifier(),this.skipSC()),1===this.tokenType&&(o=this.consume(1),this.skipSC())),this.eat(20),{type:\"AttributeSelector\",loc:this.getLocation(t,this.tokenStart),name:e,matcher:n,value:r,flags:o}}function Vd(e){this.token(9,\"[\"),this.node(e.name),null!==e.matcher&&(this.tokenize(e.matcher),this.node(e.value)),null!==e.flags&&this.token(1,e.flags),this.token(9,\"]\")}function Gd(e){this.token(23,\"{\"),this.children(e,(e=>{\"Declaration\"===e.type&&this.token(17,\";\")})),this.token(24,\"}\")}function qd(e){this.token(9,\"[\"),this.children(e),this.token(9,\"]\")}function Kd(){this.token(15,\"--\\x3e\")}function Jd(){this.token(14,\"\\x3c!--\")}function Yd(){return this.eatDelim(46),{type:\"ClassSelector\",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function Xd(e){this.token(9,\".\"),this.token(1,e.name)}function Zd(){let e,t=this.tokenStart;switch(this.tokenType){case 13:e=\" \";break;case 9:switch(this.charCodeAt(this.tokenStart)){case 62:case 43:case 126:this.next();break;case 47:this.next(),this.eatIdent(\"deep\"),this.eatDelim(47);break;default:this.error(\"Combinator is expected\")}e=this.substrToCursor(t)}return{type:\"Combinator\",loc:this.getLocation(t,this.tokenStart),name:e}}function Qd(e){this.tokenize(e.name)}function eh(e){this.token(25,\"/*\"+e.value+\"*/\")}function th(e){this.token(1,e.property),this.token(16,\":\"),this.node(e.value),e.important&&(this.token(9,\"!\"),this.token(1,!0===e.important?\"important\":e.important))}function nh(e){this.children(e,(e=>{\"Declaration\"===e.type&&this.token(17,\";\")}))}function rh(e){this.token(12,e.value+e.unit)}function oh(e){this.token(2,e.name+\"(\"),this.children(e),this.token(22,\")\")}function sh(e){this.token(4,\"#\"+e.value)}function ah(){return{type:\"Identifier\",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function ih(e){this.token(1,e.name)}function lh(){let e=this.tokenStart;return this.eat(4),{type:\"IdSelector\",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function ch(e){this.token(9,\"#\"+e.name)}function uh(e){this.token(21,\"(\"),this.token(1,e.name),null!==e.value&&(this.token(16,\":\"),this.node(e.value)),this.token(22,\")\")}function dh(e){this.children(e)}function hh(e){this.children(e,(()=>this.token(18,\",\")))}function mh(){let e=this.tokenStart;return this.eatDelim(38),{type:\"NestingSelector\",loc:this.getLocation(e,this.tokenStart)}}function ph(){this.token(9,\"&\")}function fh(){this.skipSC();let e,t=this.tokenStart,n=t,r=null;return e=this.lookupValue(0,\"odd\")||this.lookupValue(0,\"even\")?this.Identifier():this.AnPlusB(),n=this.tokenStart,this.skipSC(),this.lookupValue(0,\"of\")&&(this.next(),r=this.SelectorList(),n=this.tokenStart),{type:\"Nth\",loc:this.getLocation(t,n),nth:e,selector:r}}function gh(e){this.node(e.nth),null!==e.selector&&(this.token(1,\"of\"),this.node(e.selector))}function vh(e){this.token(10,e.value)}function yh(e){this.tokenize(e.value)}function bh(e){this.token(21,\"(\"),this.children(e),this.token(22,\")\")}function xh(){return{type:\"Percentage\",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function kh(e){this.token(11,e.value+\"%\")}function wh(){let e,t,n=this.tokenStart,r=null;return this.eat(16),2===this.tokenType?(e=this.consumeFunctionName(),t=e.toLowerCase(),hasOwnProperty.call(this.pseudo,t)?(this.skipSC(),r=this.pseudo[t].call(this),this.skipSC()):(r=this.createList(),r.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):e=this.consume(1),{type:\"PseudoClassSelector\",loc:this.getLocation(n,this.tokenStart),name:e,children:r}}function Sh(e){this.token(16,\":\"),null===e.children?this.token(1,e.name):(this.token(2,e.name+\"(\"),this.children(e),this.token(22,\")\"))}function Ch(){let e,t,n=this.tokenStart,r=null;return this.eat(16),this.eat(16),2===this.tokenType?(e=this.consumeFunctionName(),t=e.toLowerCase(),hasOwnProperty.call(this.pseudo,t)?(this.skipSC(),r=this.pseudo[t].call(this),this.skipSC()):(r=this.createList(),r.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):e=this.consume(1),{type:\"PseudoElementSelector\",loc:this.getLocation(n,this.tokenStart),name:e,children:r}}function Th(e){this.token(16,\":\"),this.token(16,\":\"),null===e.children?this.token(1,e.name):(this.token(2,e.name+\"(\"),this.children(e),this.token(22,\")\"))}function Ih(e){this.token(10,e.left),this.token(9,\"/\"),this.token(10,e.right)}function Ah(){return this.tokenIndex>0&&13===this.lookupType(-1)?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}function Oh(e,t,n){let r,o=this.getTokenStart(e);return this.skipUntilBalanced(e,t||this.consumeUntilBalanceEnd),r=n&&this.tokenStart>o?Ah.call(this):this.tokenStart,{type:\"Raw\",loc:this.getLocation(o,r),value:this.substring(o,r)}}function Eh(e){this.tokenize(e.value)}function Lh(e){this.node(e.prelude),this.node(e.block)}function Nh(){let e=this.readSequence(this.scope.Selector);return null===this.getFirstListNode(e)&&this.error(\"Selector is expected\"),{type:\"Selector\",loc:this.getLocationFromList(e),children:e}}function _h(e){this.children(e)}function Dh(){let e=this.createList();for(;!this.eof&&(e.push(this.Selector()),18===this.tokenType);)this.next();return{type:\"SelectorList\",loc:this.getLocationFromList(e),children:e}}function Ph(e){this.children(e,(()=>this.token(18,\",\")))}var Rh=92,Mh=34,jh=39;function Fh(e){let t=e.length,n=e.charCodeAt(0),r=n===Mh||n===jh?1:0,o=1===r&&t>1&&e.charCodeAt(t-1)===n?t-2:t-1,s=\"\";for(let n=r;n<=o;n++){let r=e.charCodeAt(n);if(r===Rh){if(n===o){n!==t-1&&(s=e.substr(n+1));break}if(r=e.charCodeAt(++n),ju(Rh,r)){let t=n-1,r=Qu(e,t);n=r-1,s+=rd(e.substring(t+1,r))}else 13===r&&10===e.charCodeAt(n+1)&&n++}else s+=e[n]}return s}function Uh(){return{type:\"String\",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:Fh(this.consume(5))}}function Bh(e){this.token(5,function(e,t){let n=Mh,r=\"\",o=!1;for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);0!==s?s<=31||127===s?(r+=\"\\\\\"+s.toString(16),o=!0):s===n||s===Rh?(r+=\"\\\\\"+e.charAt(t),o=!1):(o&&(Lu(s)||Mu(s))&&(r+=\" \"),r+=e.charAt(t),o=!1):r+=\"\\ufffd\"}return'\"'+r+'\"'}(e.value))}function zh(e){this.children(e)}var Hh=42;function Wh(){1!==this.tokenType&&!1===this.isDelim(Hh)&&this.error(\"Identifier or asterisk is expected\"),this.next()}function $h(){let e=this.tokenStart;return this.isDelim(124)?(this.next(),Wh.call(this)):(Wh.call(this),this.isDelim(124)&&(this.next(),Wh.call(this))),{type:\"TypeSelector\",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function Vh(e){this.tokenize(e.name)}function Gh(e){this.tokenize(e.value)}var qh=32,Kh=92,Jh=34,Yh=39,Xh=40,Zh=41;function Qh(e){this.token(7,function(e){let t=\"\",n=!1;for(let r=0;r<e.length;r++){let o=e.charCodeAt(r);0!==o?o<=31||127===o?(t+=\"\\\\\"+o.toString(16),n=!0):o===qh||o===Kh||o===Jh||o===Yh||o===Xh||o===Zh?(t+=\"\\\\\"+e.charAt(r),n=!1):(n&&Lu(o)&&(t+=\" \"),t+=e.charAt(r),n=!1):t+=\"\\ufffd\"}return\"url(\"+t+\")\"}(e.value))}function em(e){this.children(e)}function tm(e){this.token(13,e.value)}Object.freeze({type:\"WhiteSpace\",loc:null,value:\" \"});var nm=function(e){let t=new Map;for(let n in e.node){let r=e.node[n];\"function\"==typeof(r.generate||r)&&t.set(n,r.generate||r)}return function(e,n){let r=\"\",o=0,s={node(e){if(!t.has(e.type))throw new Error(\"Unknown node type: \"+e.type);t.get(e.type).call(a,e)},tokenBefore:xd,token(e,t){o=this.tokenBefore(o,e,t),this.emit(t,e,!1),9===e&&92===t.charCodeAt(0)&&this.emit(\"\\n\",13,!0)},emit(e){r+=e},result:()=>r};n&&(\"function\"==typeof n.decorator&&(s=n.decorator(s)),n.sourceMap&&(s=function(e){let t=new hd.SourceMapGenerator,n={line:1,column:0},r={line:0,column:0},o={line:1,column:0},s={generated:o},a=1,i=0,l=!1,c=e.node;e.node=function(e){if(e.loc&&e.loc.start&&md.has(e.type)){let c=e.loc.start.line,u=e.loc.start.column-1;(r.line!==c||r.column!==u)&&(r.line=c,r.column=u,n.line=a,n.column=i,l&&(l=!1,(n.line!==o.line||n.column!==o.column)&&t.addMapping(s)),l=!0,t.addMapping({source:e.loc.source,original:r,generated:n}))}c.call(this,e),l&&md.has(e.type)&&(o.line=a,o.column=i)};let u=e.emit;e.emit=function(e,t,n){for(let t=0;t<e.length;t++)10===e.charCodeAt(t)?(a++,i=0):i++;u(e,t,n)};let d=e.result;return e.result=function(){return l&&t.addMapping(s),{css:d(),map:t}},e}(s)),n.mode in pd&&(s.tokenBefore=pd[n.mode]));let a={node:e=>s.node(e),children:kd,token:(e,t)=>s.token(e,t),tokenize:wd};return s.node(e),s.result()}}({node:Sd}),rm=null,om=class{static createItem(e){return{prev:null,next:null,data:e}}constructor(){this.head=null,this.tail=null,this.cursor=null}createItem(e){return om.createItem(e)}allocateCursor(e,t){let n;return null!==rm?(n=rm,rm=rm.cursor,n.prev=e,n.next=t,n.cursor=this.cursor):n={prev:e,next:t,cursor:this.cursor},this.cursor=n,n}releaseCursor(){let{cursor:e}=this;this.cursor=e.cursor,e.prev=null,e.next=null,e.cursor=rm,rm=e}updateCursors(e,t,n,r){let{cursor:o}=this;for(;null!==o;)o.prev===e&&(o.prev=t),o.next===n&&(o.next=r),o=o.cursor}*[Symbol.iterator](){for(let e=this.head;null!==e;e=e.next)yield e.data}get size(){let e=0;for(let t=this.head;null!==t;t=t.next)e++;return e}get isEmpty(){return null===this.head}get first(){return this.head&&this.head.data}get last(){return this.tail&&this.tail.data}fromArray(e){let t=null;this.head=null;for(let n of e){let e=om.createItem(n);null!==t?t.next=e:this.head=e,e.prev=t,t=e}return this.tail=t,this}toArray(){return[...this]}toJSON(){return[...this]}forEach(e,t=this){let n=this.allocateCursor(null,this.head);for(;null!==n.next;){let r=n.next;n.next=r.next,e.call(t,r.data,r,this)}this.releaseCursor()}forEachRight(e,t=this){let n=this.allocateCursor(this.tail,null);for(;null!==n.prev;){let r=n.prev;n.prev=r.prev,e.call(t,r.data,r,this)}this.releaseCursor()}reduce(e,t,n=this){let r,o=this.allocateCursor(null,this.head),s=t;for(;null!==o.next;)r=o.next,o.next=r.next,s=e.call(n,s,r.data,r,this);return this.releaseCursor(),s}reduceRight(e,t,n=this){let r,o=this.allocateCursor(this.tail,null),s=t;for(;null!==o.prev;)r=o.prev,o.prev=r.prev,s=e.call(n,s,r.data,r,this);return this.releaseCursor(),s}some(e,t=this){for(let n=this.head;null!==n;n=n.next)if(e.call(t,n.data,n,this))return!0;return!1}map(e,t=this){let n=new om;for(let r=this.head;null!==r;r=r.next)n.appendData(e.call(t,r.data,r,this));return n}filter(e,t=this){let n=new om;for(let r=this.head;null!==r;r=r.next)e.call(t,r.data,r,this)&&n.appendData(r.data);return n}nextUntil(e,t,n=this){if(null===e)return;let r=this.allocateCursor(null,e);for(;null!==r.next;){let e=r.next;if(r.next=e.next,t.call(n,e.data,e,this))break}this.releaseCursor()}prevUntil(e,t,n=this){if(null===e)return;let r=this.allocateCursor(e,null);for(;null!==r.prev;){let e=r.prev;if(r.prev=e.prev,t.call(n,e.data,e,this))break}this.releaseCursor()}clear(){this.head=null,this.tail=null}copy(){let e=new om;for(let t of this)e.appendData(t);return e}prepend(e){return this.updateCursors(null,e,this.head,e),null!==this.head?(this.head.prev=e,e.next=this.head):this.tail=e,this.head=e,this}prependData(e){return this.prepend(om.createItem(e))}append(e){return this.insert(e)}appendData(e){return this.insert(om.createItem(e))}insert(e,t=null){if(null!==t)if(this.updateCursors(t.prev,e,t,e),null===t.prev){if(this.head!==t)throw new Error(\"before doesn't belong to list\");this.head=e,t.prev=e,e.next=t,this.updateCursors(null,e)}else t.prev.next=e,e.prev=t.prev,t.prev=e,e.next=t;else this.updateCursors(this.tail,e,null,e),null!==this.tail?(this.tail.next=e,e.prev=this.tail):this.head=e,this.tail=e;return this}insertData(e,t){return this.insert(om.createItem(e),t)}remove(e){if(this.updateCursors(e,e.prev,e,e.next),null!==e.prev)e.prev.next=e.next;else{if(this.head!==e)throw new Error(\"item doesn't belong to list\");this.head=e.next}if(null!==e.next)e.next.prev=e.prev;else{if(this.tail!==e)throw new Error(\"item doesn't belong to list\");this.tail=e.prev}return e.prev=null,e.next=null,e}push(e){this.insert(om.createItem(e))}pop(){return null!==this.tail?this.remove(this.tail):null}unshift(e){this.prepend(om.createItem(e))}shift(){return null!==this.head?this.remove(this.head):null}prependList(e){return this.insertList(e,this.head)}appendList(e){return this.insertList(e)}insertList(e,t){return null===e.head||(null!=t?(this.updateCursors(t.prev,e.tail,t,e.head),null!==t.prev?(t.prev.next=e.head,e.head.prev=t.prev):this.head=e.head,t.prev=e.tail,e.tail.next=t):(this.updateCursors(this.tail,e.tail,null,e.head),null!==this.tail?(this.tail.next=e.head,e.head.prev=this.tail):this.head=e.head,this.tail=e.tail),e.head=null,e.tail=null),this}replace(e,t){\"head\"in t?this.insertList(t,e):this.insert(t,e),this.remove(e)}},sm=100,am=60,im=\"    \";function lm({source:e,line:t,column:n},r){function o(e,t){return s.slice(e,t).map(((t,n)=>String(e+n+1).padStart(l)+\" |\"+t)).join(\"\\n\")}let s=e.split(/\\r\\n?|\\n|\\f/),a=Math.max(1,t-r)-1,i=Math.min(t+r,s.length+1),l=Math.max(4,String(i).length)+1,c=0;(n+=(im.length-1)*(s[t-1].substr(0,n-1).match(/\\t/g)||[]).length)>sm&&(c=n-am+3,n=am-2);for(let e=a;e<=i;e++)e>=0&&e<s.length&&(s[e]=s[e].replace(/\\t/g,im),s[e]=(c>0&&s[e].length>c?\"\\u2026\":\"\")+s[e].substr(c,sm-2)+(s[e].length>c+sm-1?\"\\u2026\":\"\"));return[o(a,t),new Array(n+l+2).join(\"-\")+\"^\",o(t,i)].filter(Boolean).join(\"\\n\")}function cm(e,t,n,r,o){return Object.assign(function(e,t){let n=Object.create(SyntaxError.prototype),r=new Error;return Object.assign(n,{name:e,message:t,get stack(){return(r.stack||\"\").replace(/^(.+\\n){1,3}/,`${e}: ${t}\\n`)}})}(\"SyntaxError\",e),{source:t,offset:n,line:r,column:o,sourceFragment:e=>lm({source:t,line:r,column:o},isNaN(e)?0:e),get formattedMessage(){return`Parse error: ${e}\\n`+lm({source:t,line:r,column:o},2)}})}function um(e){let t=this.createList(),n=!1,r={recognizer:e};for(;!this.eof;){switch(this.tokenType){case 25:this.next();continue;case 13:n=!0,this.next();continue}let o=e.getNode.call(this,r);if(void 0===o)break;n&&(e.onWhiteSpace&&e.onWhiteSpace.call(this,o,t,r),n=!1),t.push(o)}return n&&e.onWhiteSpace&&e.onWhiteSpace.call(this,null,t,r),t}var dm=()=>{};function hm(e){return function(){return this[e]()}}function mm(e){let t=Object.create(null);for(let n in e){let r=e[n],o=r.parse||r;o&&(t[n]=o)}return t}var pm={parse(){return this.createSingleNodeList(this.SelectorList())}},fm={parse(){return this.createSingleNodeList(this.Selector())}},gm={parse(){return this.createSingleNodeList(this.Identifier())}},vm={parse(){return this.createSingleNodeList(this.Nth())}},ym={dir:gm,has:pm,lang:gm,matches:pm,is:pm,\"-moz-any\":pm,\"-webkit-any\":pm,where:pm,not:pm,\"nth-child\":vm,\"nth-last-child\":vm,\"nth-last-of-type\":vm,\"nth-of-type\":vm,slotted:fm,host:fm,\"host-context\":fm},bm={};wu(bm,{AnPlusB:()=>_d,AttributeSelector:()=>$d,ClassSelector:()=>Yd,Combinator:()=>Zd,IdSelector:()=>lh,Identifier:()=>ah,NestingSelector:()=>mh,Nth:()=>fh,Percentage:()=>xh,PseudoClassSelector:()=>wh,PseudoElementSelector:()=>Ch,Raw:()=>Oh,Selector:()=>Nh,SelectorList:()=>Dh,String:()=>Uh,TypeSelector:()=>$h});var xm=function(e){let t=\"\",n=\"<unknown>\",r=!1,o=dm,s=!1,a=new class{constructor(){this.lines=null,this.columns=null,this.computed=!1}setSource(e,t=0,n=1,r=1){this.source=e,this.startOffset=t,this.startLine=n,this.startColumn=r,this.computed=!1}getLocation(e,t){return this.computed||ad(this),{source:t,offset:this.startOffset+e,line:this.lines[e],column:this.columns[e]}}getLocationRange(e,t,n){return this.computed||ad(this),{source:n,start:{offset:this.startOffset+e,line:this.lines[e],column:this.columns[e]},end:{offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]}}}},i=Object.assign(new class{constructor(e,t){this.setSource(e,t)}reset(){this.eof=!1,this.tokenIndex=-1,this.tokenType=0,this.tokenStart=this.firstCharOffset,this.tokenEnd=this.firstCharOffset}setSource(e=\"\",t=(()=>{})){let n=(e=String(e||\"\")).length,r=sd(this.offsetAndType,e.length+1),o=sd(this.balance,e.length+1),s=0,a=0,i=0,l=-1;for(this.offsetAndType=null,this.balance=null,t(e,((e,t,c)=>{switch(e){default:o[s]=n;break;case a:{let e=i&id;for(i=o[e],a=i>>ld,o[s]=e,o[e++]=s;e<s;e++)o[e]===n&&(o[e]=s);break}case 21:case 2:case 19:case 23:o[s]=i,a=cd.get(e),i=a<<ld|s}r[s++]=e<<ld|c,-1===l&&(l=t)})),r[s]=0|n,o[s]=n,o[n]=n;0!==i;){let e=i&id;i=o[e],o[e]=n}this.source=e,this.firstCharOffset=-1===l?0:l,this.tokenCount=s,this.offsetAndType=r,this.balance=o,this.reset(),this.next()}lookupType(e){return(e+=this.tokenIndex)<this.tokenCount?this.offsetAndType[e]>>ld:0}lookupOffset(e){return(e+=this.tokenIndex)<this.tokenCount?this.offsetAndType[e-1]&id:this.source.length}lookupValue(e,t){return(e+=this.tokenIndex)<this.tokenCount&&Yu(this.source,this.offsetAndType[e-1]&id,this.offsetAndType[e]&id,t)}getTokenStart(e){return e===this.tokenIndex?this.tokenStart:e>0?e<this.tokenCount?this.offsetAndType[e-1]&id:this.offsetAndType[this.tokenCount]&id:this.firstCharOffset}substrToCursor(e){return this.source.substring(e,this.tokenStart)}isBalanceEdge(e){return this.balance[this.tokenIndex]<e}isDelim(e,t){return t?9===this.lookupType(t)&&this.source.charCodeAt(this.lookupOffset(t))===e:9===this.tokenType&&this.source.charCodeAt(this.tokenStart)===e}skip(e){let t=this.tokenIndex+e;t<this.tokenCount?(this.tokenIndex=t,this.tokenStart=this.offsetAndType[t-1]&id,t=this.offsetAndType[t],this.tokenType=t>>ld,this.tokenEnd=t&id):(this.tokenIndex=this.tokenCount,this.next())}next(){let e=this.tokenIndex+1;e<this.tokenCount?(this.tokenIndex=e,this.tokenStart=this.tokenEnd,e=this.offsetAndType[e],this.tokenType=e>>ld,this.tokenEnd=e&id):(this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=0,this.tokenStart=this.tokenEnd=this.source.length)}skipSC(){for(;13===this.tokenType||25===this.tokenType;)this.next()}skipUntilBalanced(e,t){let n,r,o=e;e:for(;o<this.tokenCount&&(n=this.balance[o],!(n<e));o++)switch(r=o>0?this.offsetAndType[o-1]&id:this.firstCharOffset,t(this.source.charCodeAt(r))){case 1:break e;case 2:o++;break e;default:this.balance[n]===o&&(o=n)}this.skip(o-this.tokenIndex)}forEachToken(e){for(let t=0,n=this.firstCharOffset;t<this.tokenCount;t++){let r=n,o=this.offsetAndType[t],s=o&id;n=s,e(o>>ld,r,s,t)}}dump(){let e=new Array(this.tokenCount);return this.forEachToken(((t,n,r,o)=>{e[o]={idx:o,type:od[t],chunk:this.source.substring(n,r),balance:this.balance[o]}})),e}},function(e){let t={context:Object.create(null),scope:Object.assign(Object.create(null),e.scope),atrule:mm(e.atrule),pseudo:mm(e.pseudo),node:mm(e.node)};for(let n in e.parseContext)switch(typeof e.parseContext[n]){case\"function\":t.context[n]=e.parseContext[n];break;case\"string\":t.context[n]=hm(e.parseContext[n])}return{config:t,...t,...t.node}}(e||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:um,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket:e=>123===e?1:0,consumeUntilLeftCurlyBracketOrSemicolon:e=>123===e||59===e?1:0,consumeUntilExclamationMarkOrSemicolon:e=>33===e||59===e?1:0,consumeUntilSemicolonIncluded:e=>59===e?2:0,createList:()=>new om,createSingleNodeList:e=>(new om).appendData(e),getFirstListNode:e=>e&&e.first,getLastListNode:e=>e&&e.last,parseWithFallback(e,t){let n=this.tokenIndex;try{return e.call(this)}catch(e){if(s)throw e;let r=t.call(this,n);return s=!0,o(e,r),s=!1,r}},lookupNonWSType(e){let t;do{if(t=this.lookupType(e++),13!==t)return t}while(0!==t);return 0},charCodeAt:e=>e>=0&&e<t.length?t.charCodeAt(e):0,substring:(e,n)=>t.substring(e,n),substrToCursor(e){return this.source.substring(e,this.tokenStart)},cmpChar:(e,n)=>Ju(t,e,n),cmpStr:(e,n,r)=>Yu(t,e,n,r),consume(e){let t=this.tokenStart;return this.eat(e),this.substrToCursor(t)},consumeFunctionName(){let e=t.substring(this.tokenStart,this.tokenEnd-1);return this.eat(2),e},consumeNumber(e){let n=t.substring(this.tokenStart,td(t,this.tokenStart));return this.eat(e),n},eat(e){if(this.tokenType!==e){let t=od[e].slice(0,-6).replace(/-/g,\" \").replace(/^./,(e=>e.toUpperCase())),n=`${/[[\\](){}]/.test(t)?`\"${t}\"`:t} is expected`,r=this.tokenStart;switch(e){case 1:2===this.tokenType||7===this.tokenType?(r=this.tokenEnd-1,n=\"Identifier is expected but function found\"):n=\"Identifier is expected\";break;case 4:this.isDelim(35)&&(this.next(),r++,n=\"Name is expected\");break;case 11:10===this.tokenType&&(r=this.tokenEnd,n=\"Percent sign is expected\")}this.error(n,r)}this.next()},eatIdent(e){(1!==this.tokenType||!1===this.lookupValue(0,e))&&this.error(`Identifier \"${e}\" is expected`),this.next()},eatDelim(e){this.isDelim(e)||this.error(`Delim \"${String.fromCharCode(e)}\" is expected`),this.next()},getLocation:(e,t)=>r?a.getLocationRange(e,t,n):null,getLocationFromList(e){if(r){let t=this.getFirstListNode(e),r=this.getLastListNode(e);return a.getLocationRange(null!==t?t.loc.start.offset-a.startOffset:this.tokenStart,null!==r?r.loc.end.offset-a.startOffset:this.tokenStart,n)}return null},error(e,n){let r=typeof n<\"u\"&&n<t.length?a.getLocation(n):this.eof?a.getLocation(function(e,t){for(;t>=0&&Mu(e.charCodeAt(t));t--);return t+1}(t,t.length-1)):a.getLocation(this.tokenStart);throw new cm(e||\"Unexpected input\",t,r.offset,r.line,r.column)}});return Object.assign((function(e,l){t=e,l=l||{},i.setSource(t,ud),a.setSource(t,l.offset,l.line,l.column),n=l.filename||\"<unknown>\",r=Boolean(l.positions),o=\"function\"==typeof l.onParseError?l.onParseError:dm,s=!1,i.parseAtrulePrelude=!(\"parseAtrulePrelude\"in l)||Boolean(l.parseAtrulePrelude),i.parseRulePrelude=!(\"parseRulePrelude\"in l)||Boolean(l.parseRulePrelude),i.parseValue=!(\"parseValue\"in l)||Boolean(l.parseValue),i.parseCustomProperty=\"parseCustomProperty\"in l&&Boolean(l.parseCustomProperty);let{context:c=\"default\",onComment:u}=l;if(!(c in i.context))throw new Error(\"Unknown context `\"+c+\"`\");\"function\"==typeof u&&i.forEachToken(((e,n,r)=>{if(25===e){let e=i.getLocation(n,r),o=Yu(t,r-2,r,\"*/\")?t.slice(n+2,r-2):t.slice(n+2,r);u(o,e)}}));let d=i.context[c].call(i,l);return i.eof||i.error(),d}),{SyntaxError:cm,config:i.config})}({parseContext:{default:\"SelectorList\",selectorList:\"SelectorList\",selector:\"Selector\"},scope:{Selector:{onWhiteSpace:function(e,t){null!==t.last&&\"Combinator\"!==t.last.type&&null!==e&&\"Combinator\"!==e.type&&t.push({type:\"Combinator\",loc:null,name:\" \"})},getNode:function(){switch(this.tokenType){case 19:return this.AttributeSelector();case 4:return this.IdSelector();case 16:return 16===this.lookupType(1)?this.PseudoElementSelector():this.PseudoClassSelector();case 1:return this.TypeSelector();case 10:case 11:return this.Percentage();case 12:46===this.charCodeAt(this.tokenStart)&&this.error(\"Identifier is expected\",this.tokenStart+1);break;case 9:switch(this.charCodeAt(this.tokenStart)){case 43:case 62:case 126:case 47:return this.Combinator();case 46:return this.ClassSelector();case 42:case 124:return this.TypeSelector();case 35:return this.IdSelector();case 38:return this.NestingSelector()}}}}},atrule:{},pseudo:ym,node:bm}),km=(e,t)=>e.a===t.a?e.b===t.b?e.c-t.c:e.b-t.b:e.a-t.a,wm=(e,t)=>0===km(e,t),Sm=(e,t)=>km(e,t)>0,Cm=(e,t)=>km(e,t)<0,Tm=(e,t=\"ASC\")=>{let n=e.sort(km);return\"DESC\"===t?n.reverse():n},Im=(...e)=>Tm(e,\"ASC\"),Am=(...e)=>Tm(e,\"DESC\"),Om=(...e)=>Am(...e)[0],Em=e=>{let t={a:0,b:0,c:0};return e.children.forEach((e=>{switch(e.type){case\"IdSelector\":t.a+=1;break;case\"AttributeSelector\":case\"ClassSelector\":t.b+=1;break;case\"PseudoClassSelector\":switch(e.name.toLowerCase()){case\"where\":break;case\"is\":case\"matches\":case\"-webkit-any\":case\"-moz-any\":case\"any\":case\"not\":case\"has\":if(e.children){let n=Om(...Lm(e.children.first));t.a+=n.a,t.b+=n.b,t.c+=n.c}break;case\"nth-child\":case\"nth-last-child\":if(t.b+=1,e.children.first.selector){let n=Om(...Lm(e.children.first.selector));t.a+=n.a,t.b+=n.b,t.c+=n.c}break;case\"host-context\":case\"host\":if(t.b+=1,e.children){let n={type:\"Selector\",children:[]},r=!1;e.children.first.children.forEach((e=>!r&&(\"Combinator\"===e.type?(r=!0,!1):void n.children.push(e))));let o=Lm(n)[0];t.a+=o.a,t.b+=o.b,t.c+=o.c}break;case\"after\":case\"before\":case\"first-letter\":case\"first-line\":t.c+=1;break;default:t.b+=1}break;case\"PseudoElementSelector\":switch(e.name){case\"slotted\":if(t.c+=1,e.children){let n={type:\"Selector\",children:[]},r=!1;e.children.first.children.forEach((e=>!r&&(\"Combinator\"===e.type?(r=!0,!1):void n.children.push(e))));let o=Lm(n)[0];t.a+=o.a,t.b+=o.b,t.c+=o.c}break;case\"view-transition-group\":case\"view-transition-image-pair\":case\"view-transition-old\":case\"view-transition-new\":if(e.children&&\"*\"===e.children.first.value)break;t.c+=1;break;default:t.c+=1}break;case\"TypeSelector\":let n=e.name;n.includes(\"|\")&&(n=n.split(\"|\")[1]),\"*\"!==n&&(t.c+=1)}})),new Nm(t,e)},Lm=e=>{if(!e)return[];let t=(e=>{if(\"string\"==typeof e||e instanceof String)try{return xm(e,{context:\"selectorList\"})}catch(t){throw new TypeError(`Could not convert passed in source '${e}' to SelectorList: ${t.message}`)}if(e instanceof Object){if(e.type&&[\"Selector\",\"SelectorList\"].includes(e.type))return e;if(e.type&&\"Raw\"===e.type)try{return xm(e.value,{context:\"selectorList\"})}catch(e){throw new TypeError(`Could not convert passed in source to SelectorList: ${e.message}`)}throw new TypeError(\"Passed in source is an Object but no AST / AST of the type Selector or SelectorList\")}throw new TypeError(\"Passed in source is not a String nor an Object. I don't know what to do with it.\")})(e);if(\"Selector\"===t.type)return[Em(e)];if(\"SelectorList\"===t.type){let e=[];return t.children.forEach((t=>{let n=Em(t);e.push(n)})),e}},Nm=class{constructor(e,t=null){this.value=e,this.selector=t}get a(){return this.value.a}set a(e){throw new Error(\"Manipulating the port of the specificity directly is not allowed. Instead, directly set a new value\")}get b(){return this.value.b}set b(e){throw new Error(\"Manipulating the port of the specificity directly is not allowed. Instead, directly set a new value\")}get c(){return this.value.c}set c(e){throw new Error(\"Manipulating the port of the specificity directly is not allowed. Instead, directly set a new value\")}selectorString(){return\"string\"==typeof this.selector||this.selector instanceof String?this.selector:this.selector instanceof Object&&\"Selector\"===this.selector.type?nm(this.selector):\"\"}toObject(){return this.value}toArray(){return[this.value.a,this.value.b,this.value.c]}toString(){return`(${this.value.a},${this.value.b},${this.value.c})`}toJSON(){return{selector:this.selectorString(),asObject:this.toObject(),asArray:this.toArray(),asString:this.toString()}}isEqualTo(e){return wm(this,e)}isGreaterThan(e){return Sm(this,e)}isLessThan(e){return Cm(this,e)}static calculate(e){return Lm(e)}static compare(e,t){return km(e,t)}static equals(e,t){return wm(e,t)}static lessThan(e,t){return Cm(e,t)}static greaterThan(e,t){return Sm(e,t)}static min(...e){return((...e)=>Im(...e)[0])(...e)}static max(...e){return Om(...e)}static sortAsc(...e){return Im(...e)}static sortDesc(...e){return Am(...e)}};const _m=e=>(e=>{const t=new Map,n=e=>{const n=t.get(e);if(l(n))return n;{const n=Nm.calculate(e)[0];return t.set(e,n),n}};return F(e,((e,t)=>{const r=n(e.selector),o=n(t.selector);return Nm.compare(r,o)}))})((e=>R(e,(e=>(e=>-1!==e.selector.indexOf(\",\"))(e)?(e=>{const t=e.selector.split(/,(?![^(]*\\))/g);return A(t,(t=>{const n=t.trim();return{...e,selector:n}}))})(e):[e])))(e)),Dm=e=>{const t={};return O(e,(r=>{const o=e.getPropertyValue(r);n(o)&&(t[r]=o)})),t},Pm=e=>({selector:e.selectorText,styles:Dm(e.style)}),Rm=e=>{const t=e.cssRules;return R(t,(e=>(e=>e.type===window.CSSRule.IMPORT_RULE)(e)?Rm(e.styleSheet):(e=>e.type===window.CSSRule.STYLE_RULE)(e)?[Pm(e)]:[]))},Mm=(e,t)=>{const n=N(t,((e,t)=>({...e,...t.styles})),{});return Ue(n,((t,n)=>!T(e.dom.style,n)))};const jm=e=>{return t=(e=>{const t=e.dom.styleSheets;return Array.prototype.slice.call(t)})(e),R(t,Rm);var t},Fm=(!0,(e,t,n)=>((e,t,r,o)=>{var s,a;((e,t,n)=>{((e,t,n)=>{const r=[],o=document.createTreeWalker(e.dom,NodeFilter.SHOW_ELEMENT);for(;l(o.nextNode());){const e=De.fromDom(o.currentNode),n=L(t,(t=>Tt(e,t.selector)));if(n.length>0){const t=Mm(e,n);zn(e,t),r.push(e)}}n&&O(r,(e=>On(e,\"class\")))})(t,_m(e),n)})((s=jm(t),a=n,A(s,(e=>{const t=e.selector,n=a.hasOwnProperty(t)?a[t]:t;return{...e,selector:n}}))),r,true)})(0,e,t));const Um={p:\"p, li[data-converted-paragraph]\"},Bm=(e,t)=>{const n=Jt(e,\"li[data-converted-paragraph]\");if(O(n,(e=>{On(e,\"data-converted-paragraph\")})),t){const t=Jt(e,\"li\");O(t,(t=>{const n=(e=>{const t=(()=>{const t=De.fromTag(\"spn\");return dn(e,t),t})();return{convertToPx:e=>{return Bn(t,\"margin-left\",e),n=Hn(t,\"margin-left\"),parseFloat(/-?\\d+\\.?\\d*/.exec(n)[0]);var n},destroy:()=>vn(t)}})(e),r=((e,t)=>{const n=In(e,\"data-tab-interval\").getOr(\"36pt\");return t.convertToPx(n)})(e,n),o=zm(t,r,n).getOr({});(e=>{On(e,\"data-list-level\"),On(e,\"data-text-indent-alt\"),On(e,\"data-border-margin\"),Gn(e,\"margin-left\"),Gn(e,\"text-indent\"),Me(Vn(e),((t,n)=>{!$(n,\"border\")||\"border-image\"!==n&&\"none\"!==t.trim()&&\"initial\"!==t.trim()||Gn(e,n)}))})(t),n.destroy(),zn(t,o)}));const n=Jt(e,\"ol,ul\");O(n,(e=>{const t=Jt(e,\"li\");$n(e,\"margin-top\").isNone()&&k.from(t[0]).each((t=>{Bn(e,\"margin-top\",Hn(t,\"margin-top\"))})),$n(e,\"margin-bottom\").isNone()&&k.from(t[t.length-1]).each((t=>{Bn(e,\"margin-bottom\",Hn(t,\"margin-bottom\"))}))}))}On(e,\"data-tab-interval\")},zm=(e,t,n)=>{const r=e=>In(e,\"data-list-level\").map((e=>parseInt(e,10))).getOr(1);return $n(e,\"text-indent\").bind((o=>$n(e,\"margin-left\").map((s=>{const a=$n(e,\"list-style\").exists((e=>W(e,\"none\"))),i=In(e,\"data-border-margin\").getOr(\"0px\"),l=a?r(e)+1:r(e),c=n.convertToPx(s)+n.convertToPx(i),u=t*l,d=In(e,\"data-text-indent-alt\").getOr(o),h=n.convertToPx(d),m={},p=t/2*-1-h;p>0&&(m[\"text-indent\"]=p+\"px\");const f=c-u-p;return m[\"margin-left\"]=f>0?f+\"px\":\"0px\",m}))))},Hm=e=>{const t=(n=De.fromDom(document.body),{play:(e,t,r)=>{const o=De.fromTag(\"div\"),s=De.fromTag(\"iframe\");zn(o,{display:\"none\"});const a=Lr(s,\"load\",(()=>{var n;a.unbind(),pu(s,e);const i=null===(n=s.dom.contentWindow)||void 0===n?void 0:n.document;if(void 0===i)throw new Error(\"sandbox iframe load event did not fire correctly\");const l=De.fromDom(i),c=l.dom.body;if(void 0===c)throw new Error(\"sandbox iframe does not have a body\");const u=De.fromDom(c),d=t(l,u);vn(o),setTimeout(g(r,d),0)}));hn(o,s),hn(n,o)}});var n;return n=>new Promise((r=>{t.play(n,((t,n)=>(((e,t,n)=>{const r=n.mergeInline();r&&(Fm(e,t,Um),(e=>{Ia(e)})(t)),Bm(t,r)})(t,n,{mergeInline:m(e)}),Jn(n))),r)}))},Wm=(e,t,n,r)=>{const o=e.html;return n.cleanDocument(o,t,r).then((e=>{if(null==(n=e)||0===n.length)return{response:Fr([],[]),bundle:Wr({})};{const n=void 0===r.sanitizer?sc(r.intraFlag.isMarked):r.sanitizer;return((e,t,n,r)=>{const o=e=>({response:e,bundle:Wr({})}),s=r.sanitizeHtml(t,\"word\");return Hm(e)(s).then((e=>{const t=Kn(e),r=e=>o(Fr(t,e)),s=De.fromTag(\"div\");fn(s,t);const a=L(It(\"img[src]\",s),(e=>In(e,\"src\").exists((e=>$(e,\"blob:\")||$(e,\"data:\"))))),i=It(\"img[data-image-src]\",s);if(0===a.length&&0===i.length)return r([]);if(n)return O(a,(e=>On(e,\"id\"))),(e=>Promise.all(A(e,(e=>{const t=e.dom;return pi(t).then((n=>n.toBlob().then((r=>((n,r)=>{const o=$(t.src,\"blob:\")?t.src:URL.createObjectURL(r),s=kn(\"image\"),a=Dc.blob(s,n,o);return jc(a,e)})(n,r)))))}))))(a).then(r);{O(a,vn),O(i,vn);const e=Ht(s);return o(Br(e,[],\"errors.local.images.disallowed\"))}}))})(t,e,r.allowLocalImages,n)}var n}),(e=>(console.error(\"PowerPaste error code: WIM01\"),{response:jr(\"errors.paste.process.failure\"),bundle:Wr({})})))},$m=yt(),Vm=e=>{try{const t=e(),n=null!=t&&t.length>0?Kn(t):[];return Ir.value(n)}catch(e){return console.error(\"PowerPaste error code: PT01. Message: \",e),Ir.error(\"errors.paste.process.failure\")}},Gm=e=>e.fold($r,(e=>({response:Fr(e,[]),bundle:Wr({})}))),qm=(e,t,n,r,o)=>Vm((()=>{const s={type:r,merge:n,cleanFilteredInlineElements:o.cleanFilteredInlineElements,indentUseMargin:o.indentUseMargin,preprocessor:{defaultProtocol:o.defaultProtocol}};return((e,t,n,r)=>{Yi(n,r.preprocessor);const o=Jn(n),s=((e,t)=>{const n=t.merge,r=((e,t)=>{const n=t.browser.isFirefox(),r=Co([(s=n?bs:ys,a=!n,Io(((e,t)=>{const n=((e,t,n)=>t(De.fromDom(e.getNode())).fold((()=>[e]),(t=>{const r=e.type()===mo,o=[go(t.dom,r)];return!r&&n&&o.push(go(t.dom,!0)),o})))(t,s,a);e.emitTokens(n)}),d))]),o=n?d:la;var s,a;return{annotate:[e.type===xs.Word?r:d],local:[o]}})(t,e);return P([r.local,Ba(t),Ha(t),r.annotate,(o=n?[]:t.cleanFilteredInlineElements,[Ea,Na,va(o)]),za(t),$a(t,e),[js],[ga],[ea],[ta],Ua(t),[wa,Sa,ca,Ca],[ua],[da],[ha],[ba],Va(t),[ka],[pa],[Ia],Ga(t),[ya],[na]]);var o})(t,r);return To(e,o,s)})(e,$m,t,s)})),Km=(e,t)=>{const n=Vm((()=>((e,t)=>((e,t)=>To(e,t,[ta,Ca]))(e,Jn(t)))(e,t)));return Gm(n)},Jm=(e,t,n,r,o)=>qm(e,t,r,n,o).fold(Vr,(e=>Promise.resolve({response:Fr(e,[]),bundle:Wr({})}))),Ym=e=>\"\\n\"===e||\"\\r\"===e,Xm=(e,t)=>{const n=(e=>{const t=De.fromTag(\"div\");return((e,t)=>{e.dom.textContent=t})(t,e),Jn(t)})(e),r=((e,t)=>{const n=((e,t)=>{const n=e.replace(/\\t/g,(r=t)<=0?\"\":new Array(r+1).join(\" \"));var r;const o=N(n,((e,t)=>(e=>-1!==\" \\f\\t\\v\".indexOf(e))(t)||\"\\xa0\"===t?e.pcIsSpace||\"\"===e.str||e.str.length===n.length-1||((e,t)=>t<e.length&&t>=0&&Ym(e[t]))(n,e.str.length+1)?{pcIsSpace:!1,str:e.str+\"\\xa0\"}:{pcIsSpace:!0,str:e.str+\" \"}:{pcIsSpace:Ym(t),str:e.str+t}),{pcIsSpace:!1,str:\"\"});return o.str})(e,t).replace(/^[\\r\\n]*|[\\r\\n]*$/g,\"\").split(/(?:\\r?\\n){2}/),r=A(n,(e=>e.split(/\\n|\\r\\n/).join(\"<br />\")));return 1===r.length?r[0]:A(r,(e=>\"<p>\"+e+\"</p>\")).join(\"\")})(n,t),o=Kn(r);return Fr(o,[])},Zm=e=>(t,n)=>((e,t)=>{const n=yc(e).getOrDie(\"Required text input for Text Handler\");return{response:n.text.length>0?Xm(n.text,t):Ur(),bundle:Wr({})}})(t,e),Qm=e=>(t,n)=>{const r=(t,r)=>{const o=De.fromTag(\"div\");fn(o,t),Yi(o,e);const s=Ht(o);return{response:Fr(s,r),bundle:n.bundle}},o=m(n);return Mr(n.response,o,r,o,r)},ep=(e,t,n)=>(r,o)=>{const s=fc(r).getOrDie(\"Wrong input type for HTML handler\").container,a=Rt(t),i=o.bundle;return uu(i)?Km(a,s):(e(s),((e,t,n,r,o)=>{const s=qm(e,t,n,r,o);return Gm(s)})(a,s,au(i),du(i),n))},tp=(e,t,n)=>(r,o)=>{const s=o.bundle;return(e=>({handle:(t,n)=>e.proxyBin.fold((()=>(console.error(t),Promise.resolve({response:Ur(),bundle:Wr({})}))),n)}))(s).handle(\"There was no proxy bin setup. Ensure you have run proxyStep first.\",(r=>{const o=au(s),a=du(s),i=uu(s),l=Rt(e);return i?((e,t,n,r)=>{const o=xs.Html,s=t.findClipboardTags(Ht(n)).getOr([]);return O(s,vn),Jm(e,n,o,!0,r)})(l,t,r,n):((e,t,n,r,o)=>Jm(e,t,r,n,o))(l,r,o,a,n)}))},np=(e,t)=>(n,r)=>{const o=vc(n).getOrDie(\"Wrong input type for Word Import handler\"),s=iu(r.bundle);return Wm(o,s,e,t)},rp=(e,t)=>Gr,op=e=>(t,n)=>{const r=Hr(n.bundle,Wr(e));return{response:n.response,bundle:r}},sp=(e,t)=>(e=>{const t=e=>({response:Fr([e],[]),bundle:Wr({})});return(e=>(e=>{const t=Jt(e,\"img\");return Promise.all(A(t,ki)).then((()=>e))})(e))(e).then(t).catch((()=>t(e)))})(fc(e).getOrDie(\"Wrong input type for HTML handler\").container);yt();var ap=(e,t,n,r)=>(o,s)=>{const a=s.response;return new Promise(((o,s)=>{const i=e(n);i.events.after.bind((e=>{const n=e.container;t(n),_n(n,gr());const s=(u=Jn(n)).indexOf(\"<o:p>\")>=0||u.indexOf(\"mso-list\")>=0||u.indexOf(\"p.MsoNormal, li.MsoNormal, div.MsoNormal\")>=0||u.indexOf(\"MsoListParagraphCxSpFirst\")>=0||u.indexOf(\"<w:WordDocument>\")>=0,i=((e,t)=>{const n=Jt(t,\"*[id]\");return I(n,(e=>In(e,\"id\").exists((e=>$(e,\"docs-internal-guid-\")))))})(0,n),l=Ht(n),c=r.findClipboardTags(l).isSome();var u;o({response:a,bundle:Wr({isWord:s,isGoogleDocs:i,isInternal:c,proxyBin:n})})})),i.run()}))};const ip=Nt([{unsupported:[\"id\",\"message\",\"isEquation\",\"attrs\"]},{supported:[\"id\",\"contentType\",\"blob\",\"isEquation\",\"attrs\"]}]),lp={unsupported:ip.unsupported,supported:ip.supported,cata:(e,t,n)=>e.fold(t,n)},cp=(e,t,n)=>t.indexOf(e,n),up=(e,t,n,r,o,s,a)=>-1===e||-1===t?k.none():k.some({start:e,end:t,bower:n,regex:r,idRef:o,isEquation:s,attrs:a}),dp=(e,t,n)=>e.substring(t,n),hp=(e,t)=>{if(-1===t)return t;let n=0;const r=e.length;do{const o=e.indexOf(\"{\",t),s=e.indexOf(\"}\",t);if(s>o&&-1!==o?(t=o+1,++n):(o>s||o<0)&&-1!==s&&(t=s+1,--n),t>r||-1===s)return-1}while(n>0);return t},mp=(e,t,n,r,o)=>{const s=dp(e,n,r),a=((e,t)=>{const n=cp(\"\\\\picscalex\",e,t),r=cp(\"\\\\bliptag\",e,n);return n>-1&&n<r?k.from(e.substring(n,r)):k.none()})(e,n);return up(n,r,s,/[^a-fA-F0-9]([a-fA-F0-9]+)\\}$/,\"i\",o,a)},pp=(e,t,n,r,o)=>{const s=dp(e,n,r);return up(n,r,s,/([a-fA-F0-9]{64,})(?:\\}.*)/,\"s\",o,k.none())},fp=(e,t)=>((e,t)=>{const n=cp(\"{\\\\pict{\",e,t),r=hp(e,n),o=cp(\"{\\\\shp{\",e,t),s=hp(e,o),a=cp(\"{\\\\mmathPict{\",e,t),i=hp(e,a),l=-1!==a&&(a<n&&i>r||a<o&&i>s),c=g(pp,e,t,o,s,l),u=g(mp,e,t,n,r,l);return-1===n&&-1===o?k.none():-1===n?c():-1===o||o<n&&s>r?u():n<o&&r>s?c():n<o?u():o<n?c():k.none()})(e,t),gp=e=>{let t=[];const n=()=>e.length,r=e=>{const n=(e=>{const t=e.bower,n=e.regex,r=e.isEquation,o=e.attrs;return(e=>{const t=/\\\\shplid(\\d+)/.exec(e);return null!==t?k.some(t[1]):k.none()})(t).map((s=>{const a=e.idRef+s;return(e=>e.indexOf(\"\\\\pngblip\")>=0?Ir.value(\"image/png\"):e.indexOf(\"\\\\jpegblip\")>=0?Ir.value(\"image/jpeg\"):Ir.error(\"errors.imageimport.unsupported\"))(t).fold((e=>lp.unsupported(a,e,r,o)),(e=>((e,t)=>{const n=e.match(t);return n&&n[1]&&n[1].length%2==0?Ir.value(n[1]):Ir.error(\"errors.imageimport.invalid\")})(t,n).fold((e=>lp.unsupported(a,e,r,o)),(t=>lp.supported(a,e,((e,t)=>{if(0===e.length)throw new Error(\"Zero length content passed to Hex conversion\");const n=(e=>{const t=new Array(e.length/2);for(let n=0;n<e.length;n+=2){const r=e.substr(n,2);t[Math.floor(n/2)]=parseInt(r,16)}return t})(e),r=new Uint8Array(n);return new Blob([r],{type:t})})(t,e),r,o)))))}))})(e);return t=t.concat(n.toArray()),e.end};let o=0;for(;o<e.length;)o=fp(e,o).fold(n,r);return t},vp=e=>lp.cata(e,((e,t,n)=>e),((e,t,n,r,o)=>e)),yp=e=>lp.cata(e,((e,t,n)=>n),((e,t,n,r,o)=>r)),bp=e=>lp.cata(e,((e,t,n)=>Ir.error(t)),((e,t,n,r,o)=>Ir.value(n))),xp=(e,t)=>{const n=new RegExp(\"\\\\\\\\pic\"+t+\"(\\\\-?\\\\d+)\\\\\\\\\").exec(e)[1];return parseInt(n,10)},kp=(e,t,n,r,o)=>{const s=[],a=[];let i=!1;const l=R(e,((e,l)=>{const c=Tn(e,\"data-image-id\");return On(e,\"rtf-data-image\"),On(e,\"data-image-id\"),On(e,\"data-ms-equation\"),o||On(e,\"data-image-src\"),\"unsupported\"===c?(i=!0,Sn(e,\"alt\",n(\"errors.imageimport.unsupported\")),[]):_(t,((e,t)=>r(e,t,c,l))).fold((()=>(console.log(\"WARNING: unable to find data for image \",e.dom),i=!0,Sn(e,\"alt\",n(\"errors.imageimport.unsupported\")),[])),(t=>bp(t).fold((t=>(i=!0,console.error(\"PowerPaste error code: RTF04\"),Sn(e,\"alt\",n(t)),[])),(n=>{var r;return s.push(e),a.push((r=t,lp.cata(r,((e,t,n)=>k.none()),((e,t,n,r,o)=>o)))),o&&On(e,\"data-image-src\"),[n]}))))}));return{blobs:l,filteredImages:s,imageAttrs:a,failedImage:i}},wp=(e,t,n,r,o)=>{const s=(e=>N(e,((e,t)=>{const n=vp(t),r=yp(t);return D(e,(e=>!(r||yp(e))&&vp(e)===n)).fold((()=>e.concat([t])),(n=>bp(e[n]).isValue()?e:e.slice(0,n).concat(e.slice(n+1)).concat([t])))}),[]))(t),{pass:a,fail:i}=E(s,(e=>!yp(e))),{pass:l,fail:c}=E(e,(e=>!(e=>\"true\"===Tn(e,\"data-ms-equation\"))(e))),u=kp(l,a,r,((e,t,n,r)=>vp(e)===n),o.keepSrc),d=kp(c,i,r,((e,t,n,r)=>t===r),o.keepSrc),h=u.filteredImages.concat(d.filteredImages),m=u.imageAttrs.concat(d.imageAttrs),p=u.blobs.concat(d.blobs),f=u.failedImage||d.failedImage;Mc(p).then((e=>{((e,t)=>e.length===t.length?Promise.all(A(e,((e,n)=>((e,t)=>t.fold((()=>Promise.resolve(e)),(t=>Dc.cata(e,((n,r,o)=>r.toCanvas().then((s=>{const a=De.fromDom(s),i=In(a,\"width\").map((e=>parseInt(e,10))).getOr(1),l=In(a,\"height\").map((e=>parseInt(e,10))).getOr(1),c=((e,t,n)=>{const r=g(xp,e),o=r(\"wgoal\"),s=r(\"hgoal\"),a=o/t,i=s/n,l=r(\"cropl\"),c=r(\"cropt\");return{cropl:l/a,cropt:c/i,cropw:(o-l-r(\"cropr\"))/a,croph:(s-c-r(\"cropb\"))/i}})(t,i,l);return i===c.cropw&&l===c.croph&&0===c.cropl&&0===c.cropt?Promise.resolve(e):di(r,c.cropl,c.cropt,c.cropw,c.croph).then((e=>e.toBlob().then((t=>{URL.revokeObjectURL(o);const r=URL.createObjectURL(t);return Dc.blob(n,e,r)}))))}))),((t,n,r)=>Promise.resolve(e))))))(e,t[n])))):Promise.resolve(e))(e,m).then((e=>{const t=Uc(e,h);n(t,f)}))}))},Sp=e=>Jt(e,\"[rtf-data-image]\"),Cp=e=>{const t=e.translations,n=Ct({insert:St([\"elements\",\"correlated\"]),incomplete:St([\"elements\",\"correlated\",\"message\"])});return{events:n.registry,processRtf:(e,r,o,s)=>{const a=(e=>{const t=e.replace(/\\r/g,\"\").replace(/\\n/g,\"\");return gp(t)})(o),i=Sp(e);wp(i,a,((t,o)=>{const s=Ht(e),a=t.concat(r);o?(console.error(\"PowerPaste error code: RTF01\"),n.trigger.incomplete(s,a,\"errors.imageimport.failed\")):n.trigger.insert(s,a)}),t,s)}}};const Tp=e=>{const t=()=>Promise.resolve(e);return Dc.cata(e.asset,((n,r,o)=>/(tiff|pdf)$/.test(r.getType())?(e=>((e,t,n)=>e.toAdjustedBlob(t,n))(e,\"image/png\").then(Pc).then(k.some).catch((e=>(console.warn(e),k.none()))))(r).then((t=>t.map((t=>{const n=e.image;return URL.revokeObjectURL(o),Fc(t,n),jc(t,n)})).getOr(e))):t()),t)};var Ip=(e,t)=>{const n=(e,n)=>Promise.all(A(e,Tp)).then((e=>({response:n(e),bundle:t.bundle})));return Mr(t.response,Vr,((e,t)=>n(t,(t=>Fr(e,t)))),(()=>Promise.resolve(t)),((e,t,r)=>n(t,(t=>(console.error(\"PowerPaste error code:  IMG01\"),Br(e,t,r))))))};const Ap=(e,t)=>e.isSupported?t.getWordData():k.none(),Op=e=>e.getNative(),Ep=e=>e.getImage(),Lp=e=>e.getHtml(),Np=e=>e.getText(),_p=e=>e.getOnlyText(),Dp=e=>e.getGoogleDocsData(),Pp=e=>e.getVoid(),Rp=(e,t,n,r)=>({label:e,getAvailable:t,steps:n,capture:m(r)}),Mp=(e,t,n,r)=>({label:e,getAvailable:t,steps:n,capture:m(r)}),jp=(e,t,n,r)=>{return Rp(Ec.native,Lp,[(o=t.intraFlag,(e,t)=>{const n=fc(e).getOrDie(\"Wrong input type for HTML handler\"),r=o.findClipboardTags(Ht(n.container));r.each((e=>{O(e,vn)}));const s=r.isSome();return{response:t.response,bundle:Wr({isInternal:s})}}),mu(e,t),ep(n,r,t),qc(t),Ip],!0);var o},Fp=(e,t,n)=>{return Rp(Ec.msoffice,g(Ap,e),[op({isWord:!0}),hu(t,n),np(e,n),(r=n,(e,t)=>new Promise(((n,o)=>{const s=Cp(r),a=e=>n({response:e,bundle:Wr({})});s.events.insert.bind((e=>{a(Fr(e.elements,e.correlated))})),s.events.incomplete.bind((e=>{console.error(\"PowerPaste error code: RTF02\"),a(Br(e.elements,e.correlated,e.message))}));const i=vc(e).getOrDie(\"Word input required for rtf data\"),l=e=>{const n=()=>Promise.resolve(t),o=(t,n)=>{const o=De.fromTag(\"div\");return fn(o,t),e.fold((()=>{const e=Sp(o);return e.length>0?(e=>{O(e,vn);const t=Ht(o);return console.error(\"PowerPaste error code: RTF03\"),a(Br(t,n,\"errors.imageimport.failed\"))})(e):(()=>{const e=Ht(o);return a(Fr(e,n))})()}),(e=>{s.processRtf(o,n,e,r)}))};return Mr(t.response,n,o,n,o)};((e,t)=>{const n=Pe(t);if(n.length!==Zi.length)throw new Error(\"Partial match\");B(n,(n=>Mn(e.discriminator===n,t[n]))).getOrDie(\"Must find branch for constructor: \"+e.discriminator)(e.data)})(i.rtf,{disabled:()=>{l(k.none())},fromClipboard:e=>{l(!0===r.allowLocalImages?k.some(e.rtf):k.none())}})}))),Ip],!0);var r},Up=(e,t,n,r)=>Rp(Ec.googledocs,Dp,[op({isGoogleDocs:!0}),hu(e,t),sp,ep(n,r,t),su,qc(t),Ip],!0),Bp=e=>Rp(Ec.image,Ep,[!1===e.allowLocalImages?(e,t)=>Vr(\"errors.local.images.disallowed\"):(e,t)=>(e=>{const t=L(e,(e=>\"file\"===e.kind&&/image/.test(e.type))),n=N(t,((e,t)=>{const n=t.getAsFile();return(e=>null!==e)(n)?e.concat(n):e}),[]);return Mc(n).then((e=>{const t=(e=>{const t=[],n=[];return O(e,(e=>Dc.cata(e,((r,o,s)=>{const a=De.fromTag(\"img\");Sn(a,\"src\",s),t.push(a),n.push(jc(e,a))}),((e,t,n)=>{console.error(\"Internal error: Paste operation produced an image URL instead of a Data URI: \",t)})))),Fr(t,n)})(e);return{response:t,bundle:Wr({})}}))})(gc(e).getOrDie(\"Must have image data for images handler\").images),Ip],!0),zp=e=>Rp(Ec.plaintext,_p,[Zm(e.tabSpaces),Qm({defaultProtocol:e.defaultProtocol})],!0),Hp=(e,t)=>Rp(Ec.text,Np,[Zm(e),Qm({defaultProtocol:t})],!0);var Wp=Object.freeze({__proto__:null,loadScript:(e,t)=>tinymce.Resource.load(e,t)});const $p={\"cement.dialog.paste.title\":\"Paste Formatting Options\",\"cement.dialog.paste.instructions\":\"Choose to keep or remove formatting in the pasted content.\",\"cement.dialog.paste.merge\":\"Keep formatting\",\"cement.dialog.paste.clean\":\"Remove formatting\",\"error.code.images.not.found\":\"The images service was not found: (\",\"error.imageupload\":\"Image failed to upload: (\",\"error.full.stop\":\").\",\"errors.local.images.disallowed\":\"Local image paste has been disabled. Local images have been removed from pasted content.\",\"errors.imageimport.failed\":\"Some images failed to import.\",\"errors.imageimport.unsupported\":\"Unsupported image type.\",\"errors.imageimport.invalid\":\"Image is invalid.\"},Vp=e=>tinymce.translate((e=>$p[e])(e)),Gp=e=>{const t=document.createElement(\"div\");return t.appendChild(e.cloneNode(!0)),t.innerHTML},qp=\"x-tinymce/html\",Kp=m(qp),Jp=\"\\x3c!-- \"+qp+\" --\\x3e\",Yp=e=>-1!==e.indexOf(Jp),Xp=e=>/^https?:\\/\\/[\\w\\-\\/+=.,!;:&%@^~(){}?#]+$/i.test(e),Zp=e=>{const t=/^<a href=\"([^\"]+)\">([^<]+)<\\/a>$/.exec(e);return k.from(t).bind((t=>{const n={url:t[1],html:e};return Mn(t[1]===t[2],n)}))},Qp=(e,t,n)=>(e=>\"extra\"in e.undoManager)(e)?(e.undoManager.extra((()=>{nf(e,t)}),n),k.some(!0)):k.none(),ef=(e,t)=>Zp(t).bind((t=>!1===e.selection.isCollapsed()&&Xp(t.url)?((e,t)=>Qp(e,t.html,(()=>{e.execCommand(\"mceInsertLink\",!1,t.url)})))(e,t):k.none())),tf=(e,t)=>Zp(t).bind((t=>((e,t)=>{const n=e.toLowerCase();return Xp(n)&&I(t,(e=>V(n,`.${e.toLowerCase()}`)))})(t.url,pe(e))?((e,t)=>Qp(e,t.html,(()=>{e.insertContent('<img src=\"'+t.url+'\">')})))(e,t):k.none())),nf=(e,t)=>(e.insertContent(t,{merge:ee(e),paste:!0}),k.some(!0)),rf=(e,t)=>e.hasEventListeners(t),of=(e,t,n,r,o)=>{const s=(e=>e.replace(Jp,\"\"))(t),a=((e,t,n,r,o)=>rf(e,\"PastePreProcess\")?((e,t,n,r,o)=>{const s=((e,t)=>e.dispatch(\"PastePreProcess\",t))(e,{internal:n,content:t,source:r,mode:o}),a=s.isDefaultPrevented();return a?{cancelled:a}:{cancelled:a,content:s.content}})(e,t,n,r,o):{cancelled:!1,content:t})(e,s,n,r,o);return a.cancelled?a:((e,t,n,r,o)=>rf(e,\"PastePostProcess\")?((e,t,n,r,o)=>{const s=e.dom.add(e.getBody(),\"div\",{style:\"display:none\"},t),a=((e,t)=>e.dispatch(\"PastePostProcess\",t))(e,{internal:n,node:s,source:r,mode:o}),i=a.isDefaultPrevented();if(i)return{cancelled:i};const l=a.node.innerHTML;return e.dom.remove(s),{cancelled:i,content:l}})(e,t,n,r,o):{content:t,cancelled:!1})(e,a.content,n,r,o)},sf=(e,t,n,r,o,s)=>{const a=ge(),i=(null==r?void 0:r.jsUrl)?r.jsUrl:(\"/js\",n.replace(/\\/$/,\"\")+\"/\"+\"/js\".replace(/^\\//,\"\"));const c=(e,t)=>(e.undoManager.transact((()=>{var n;nf(e,t),n=e.getBody(),O(A(n.getElementsByTagName(\"*\"),De.fromDom),(e=>{An(e,\"data-mce-style\")&&!An(e,\"style\")&&In(e,\"data-mce-style\").each((t=>Sn(e,\"style\",t)))}))})),k.some(!0)),u=()=>{a.on((t=>e.selection.moveToBookmark(t))),a.clear()},h=te(e),m={baseUrl:i,cacheSuffix:re(e),officeStyles:ce(e),htmlStyles:de(e),gdocsStyles:ue(e),translations:Vp,allowLocalImages:le(e),pasteBinAttrs:{\"data-mce-bogus\":\"all\",class:\"mce-pastebin\"},intraFlag:{isMarked:Yp,findClipboardTags:e=>{const t=L(e,(e=>Ce(e)&&W(Ne(e),Kp())));return t.length?k.some(t):k.none()}},keepSrc:ie(e),cleanFilteredInlineElements:he(e),indentUseMargin:se(e),sanitizer:o,tabSpaces:h,defaultProtocol:me(e)},p=((e,t,n,r,o=Pr)=>{const s={...{...fr,sanitizer:sc(r.intraFlag.isMarked)},...Ue(r,l)},a=wt(o,s.baseUrl,s.cacheSuffix),i=mr(s.pasteBinAttrs),c=[zp(s),Fp(a,t,s),Up(t,s,n,e),jp(t,s,n,e),Bp(s),Hp(s.tabSpaces,s.defaultProtocol)],u=((e,t,n,r,o)=>Mp(Ec.fallback,Op,[ap(r,n,o,t.intraFlag),mu(e,t),tp(o,t.intraFlag,t),qc(t),Ip],!1))(t,s,n,i,e);return Nc(c,u,s.sanitizer)})(De.fromDom(e.getBody()),(e=>({createDialog:()=>{let t=\"\";const n=ge(),r=(()=>{const e=fe([{text:\"Close\",name:\"close\",type:\"custom\",primary:!0}]),t=fe({});return{setButtons:n=>{const r={},o=A(n,(e=>{const t=e.text;return r[t.toLowerCase()]=e.click,{text:t,name:t.toLowerCase(),type:\"custom\"}}));t.set(r),e.set(o)},getButtons:e.get,getAction:e=>{const n=t.get();return ze(n,e)?k.some(n[e]):k.none()}}})(),o=Ct({close:St([])}),s=()=>{o.trigger.close()};return{events:o.registry,setTitle:e=>t=e,setContent:e=>n.set(e),setButtons:e=>{r.setButtons(e)},show:()=>{n.on((n=>{const o=Gp(n.dom),a={title:t,body:{type:\"panel\",items:[{type:\"htmlpanel\",html:o}]},initialData:{},buttons:r.getButtons(),onCancel:s,onAction:(e,t)=>{r.getAction(t.name).each(y),e.close()}};e.windowManager.open(a)}))},hide:d,destroy:()=>{n.clear()},reflow:d}}}))(e).createDialog,d,m,Wp),f=((e=ac,t=fr.tabSpaces)=>Nc([Hp(t,fr.defaultProtocol)],Mp(Ec.discard,Pp,[rp],!0),e))(o,h);return O([p,f],(t=>{t.events.cancel.bind((()=>{u()})),t.events.error.bind((t=>{u(),e.notificationManager?e.notificationManager.open({text:Vp(t.message),type:\"error\"}):((e,t)=>{const n={title:\"Error\",body:{type:\"panel\",items:[{type:\"htmlpanel\",html:t}]},initialData:{},buttons:[{text:\"OK\",type:\"cancel\",name:\"ok\",primary:!0}]};e.windowManager.open(n)})(e,Vp(t.message))})),t.events.insert.bind((t=>{const n=A(t.elements,(e=>Gp(e.dom))).join(\"\");e.focus(),s.importImages(t.assets).get((()=>{u();const r=of(e,n,t.isInternal,t.source,t.mode);r.cancelled||(((e,t)=>{((e,t,n)=>{B(n,(n=>n(e,t)))})(e,t,(ne(e)?[ef,tf]:[]).concat([c]))})(e,r.content),oe(e)&&s.uploadImages(t.assets))}))})),t.events.block.bind((t=>{e.setProgressState(t.state)}))})),{pasteHtml:e=>p.pasteCustom(((e,t=ac)=>({getWordData:()=>k.from(e).filter(xc).map((e=>hc({html:e,rtf:Qi()}))),getGoogleDocsData:()=>k.from(e).filter(kc).map((e=>t.sanitizeHtml(e,\"googledocs\"))).map(Ac),getImage:k.none,getHtml:()=>k.some(Ac(t.sanitizeHtml(e))),getText:k.none,getNative:v(\"There is no native event\"),getOnlyText:k.none,getVoid:v(\"There is no paste event\")}))(e,o)),pasteText:e=>f.pasteCustom(((e,t=ac)=>({getWordData:k.none,getGoogleDocsData:k.none,getImage:k.none,getHtml:k.none,getText:()=>k.some(mc({text:t.sanitizeText(e)})),getNative:v(\"There is no native event\"),getOnlyText:k.none,getVoid:v(\"There is no paste event\")}))(e,o)),pasteEvent:n=>{(e=>{return(t=e,k.from(t.clipboardData).bind((e=>k.from(e.getData(\"text/html\"))))).bind((e=>(e=>W(e,\"<google-sheets-html-origin\"))(e)?k.some(\"googlesheets\"):(e=>W(e,\" data-ccp-props=\")&&W(e,\" paraid=\")&&/font-family:.+?_MSFontService(&quot;)?[,;]/.test(e))(e)?k.some(\"mswordonline\"):(e=>W(e,\"<meta name=ProgId content=Excel.Sheet>\")&&!W(e,'=\"urn:schemas-microsoft-com:office:'))(e)?k.some(\"msexcelonline\"):k.none()));var t})(n).each((t=>{((e,t)=>{e.dispatch(\"PowerPasteTempStats\",{source:t})})(e,t)})),a.isSet()||a.set(e.selection.getBookmark(1)),(t.isText()?f:p).paste(n),t.reset(),n.stopImmediatePropagation()}}},af=(e,t)=>{const n=tinymce.html.DomParser({},e.schema).parse(t,{forced_root_block:!1,isRootContent:!0});return tinymce.html.Serializer({validate:!0},e.schema).serialize(n)},lf=(e,t)=>{e.dom.bind(t,\"drop dragstart dragend dragover dragenter dragleave dragdrop draggesture\",(e=>{e.preventDefault(),e.stopImmediatePropagation()}))},cf=e=>{var t,n;return I(null!==(n=null===(t=e.dataTransfer)||void 0===t?void 0:t.items)&&void 0!==n?n:[],(e=>$(e.type,\"image/\")))},uf=(e,t,n,r)=>{const o=tinymce.dom.RangeUtils;let s;const a=t=>{var n,r;const s=o.getCaretRangeFromPoint(null!==(n=t.clientX)&&void 0!==n?n:0,null!==(r=t.clientY)&&void 0!==r?r:0,e.getDoc());e.focus(),l(s)&&e.selection.setRng(s)};e.on(\"dragstart dragend\",(e=>{s=\"dragstart\"===e.type})),e.on(\"dragover dragend dragleave\",(e=>{s||cf(e)||(e.preventDefault(),a(e))}));const i=(e,t)=>t in e&&e[t].length>0;e.on(\"drop\",(t=>{if(!s&&!cf(t)){a(t);const o=(t=>{var n,r,o;const s=null!==(o=null!==(n=t.target.files)&&void 0!==n?n:null===(r=t.dataTransfer)||void 0===r?void 0:r.files)&&void 0!==o?o:[],a=pe(e);return L(s,(e=>$(e.type,\"image/\")&&I(a,(t=>(e=>{const t=e.toLowerCase(),n={jpg:\"jpeg\",jpe:\"jpeg\",jfi:\"jpeg\",jif:\"jpeg\",jfif:\"jpeg\",pjpeg:\"jpeg\",pjp:\"jpeg\",svg:\"svg+xml\"};return ze(n,t)?\"image/\"+n[t]:\"image/\"+t})(t)===e.type))))})(t);if(o.length>0)return(t=>{Mc(t).then((t=>{const n=(e=>A(e,(e=>{const t=De.fromTag(\"img\"),n=Dc.cata(e,r.getLocalURL,((e,t,n)=>t));return Sn(t,\"src\",n),t.dom.outerHTML})).join(\"\"))(t),o=of(e,n,!1,\"imagedrop\",\"auto\");o.cancelled||(e.insertContent(o.content,{merge:ee(e)}),oe(e)&&r.uploadImages(t))}))})(o),void t.preventDefault();const s=(e=>{const t={};if(e&&e.types)for(let n=0;n<e.types.length;n++){const r=e.types[n];t[r]=e.getData(r)}return t})(t.dataTransfer);i(s,\"text/html\")?(n.pasteHtml(s[\"text/html\"]),t.preventDefault()):i(s,\"text/plain\")&&!(e=>{const t=e[\"text/plain\"];return!!t&&0===t.indexOf(\"file://\")})(s)&&(n.pasteText(s[\"text/plain\"]),t.preventDefault())}}))};tinymce.PluginManager.requireLangPack(\"powerpaste\",\"ar,bg_BG,ca,cs,da,de,el,es,eu,fa,fi,fr_FR,he_IL,hi,hr,hu_HU,id,it,ja,kk,ko_KR,ms,nb_NO,nl,pl,pt_BR,pt_PT,ro,ru,sk,sl_SI,sv_SE,th_TH,tr,uk,vi,zh_CN,zh_TW\"),tinymce.PluginManager.add(\"powerpaste\",(e=>(t,r)=>{if(((e,t)=>!!e&&-1===((e,t)=>{const n=J(e.major,t.major);if(0!==n)return n;const r=J(e.minor,t.minor);if(0!==r)return r;const o=J(e.patch,t.patch);return 0!==o?o:0})((e=>X((e=>[e.majorVersion,e.minorVersion].join(\".\").split(\".\").slice(0,3).join(\".\"))(e)))(e),X(t)))(tinymce,\"6.0.0\"))return void console.error('The \"powerpaste\" plugin requires at least version 6.0.0 of TinyMCE.');(e=>{const t=e.options.register,r=e=>{const t=c(e)||(e=>n(e)&&T([\"clean\",\"merge\",\"prompt\"],e))(e);return t?{value:e,valid:t}:{valid:!1,message:\"Must be prompt, clean or merge.\"}};t(\"powerpaste_block_drop\",{processor:\"boolean\",default:!1}),t(\"powerpaste_keep_unsupported_src\",{processor:\"boolean\",default:!1}),t(\"powerpaste_allow_local_images\",{processor:\"boolean\",default:!0}),t(\"powerpaste_word_import\",{processor:r,default:\"prompt\"}),t(\"powerpaste_googledocs_import\",{processor:r,default:\"prompt\"}),t(\"powerpaste_html_import\",{processor:r,default:\"clean\"}),t(\"powerpaste_clean_filtered_inline_elements\",{processor:\"string[]\",default:[]}),e.options.isRegistered(\"link_default_protocol\")||t(\"link_default_protocol\",{processor:\"string\",default:\"https\"})})(t),(e=>{const t=e.options.set;t(\"paste_block_drop\",!1),t(\"paste_remove_styles_if_webkit\",!1)})(t);const o=(e=>{const t=fe(Q(e)),n=fe(!1);return e.on(\"keydown\",(e=>{(e=>tinymce.util.VK.metaKeyPressed(e)&&86===e.keyCode&&e.shiftKey)(e)&&n.set(!0)})),e.on(\"PastePlainTextToggle\",(e=>{t.set(e.state)})),{reset:()=>{n.set(!1)},isText:()=>n.get()||t.get()}})(t),s=(e=>{const t=(e,t)=>m(e+\".\"+(e=>{const t=e.toLowerCase(),n={\"image/jpeg\":\"jpg\",\"image/jpg\":\"jpg\",\"image/gif\":\"gif\",\"image/png\":\"png\",\"image/apng\":\"apng\",\"image/avif\":\"avif\",\"image/svg+xml\":\"svg\",\"image/webp\":\"webp\",\"image/bmp\":\"bmp\",\"image/tiff\":\"tiff\"};return ze(n,t)?n[t]:\"dat\"})(t)),n=(n,r,o,s)=>kr((a=>{fi(r).then((r=>{e.editorUpload.blobCache.add({id:m(n),name:m(n),filename:t(n,r.type),blob:m(r),base64:m(o.split(\",\")[1]),blobUri:m(s),uri:m(void 0)}),a(r)}))}));return{importImages:e=>{const t=R(e,(e=>Dc.cata(e,((e,t,r)=>{const o=gi(t);return[n(e,t,o,r)]}),m([]))));return wr(t)},uploadImages:()=>{e.uploadImages()},getLocalURL:(e,t,n)=>gi(t)}})(t),a=(e=>{const t=sc(Yp),n=(e=>({sanitizeHtml:g(af,e),sanitizeText:p}))(e);return{sanitizeText:t.sanitizeText,sanitizeHtml:(e,r)=>(Yp(e)?n:t).sanitizeHtml(e,r)}})(t);t.on(\"PreInit\",(()=>{if(t.removed)return;const i=sf(t,o,r,e,a,s);((e,t)=>{e.addCommand(\"mceInsertClipboardContent\",((e,r)=>{n(r.html)?t.pasteHtml(r.html):n(r.text)&&t.pasteText(r.text)}))})(t,i),((e,t)=>{e.on(\"paste\",(e=>{e.isDefaultPrevented()||(e=>{var t,n;const r=null!==(n=null===(t=e.clipboardData)||void 0===t?void 0:t.items)&&void 0!==n?n:[],o=L(r,(e=>$(e.type,\"image/\")));return o.length>0&&o.length===r.length})(e)||t.pasteEvent(e)}))})(t,i),ae(t)?(e=>{lf(e,e.getBody()),e.inline||lf(e,e.getDoc())})(t):uf(t,0,i,s)}))})(undefined))}();/* !\n * Tiny PowerPaste plugin\n *\n * Copyright (c) 2023 Ephox Corporation DBA Tiny Technologies, Inc.\n * Licensed under the Tiny commercial license. See https://www.tiny.cloud/legal/\n *\n * Version: 6.2.4-639\n */\n\n// Generated by js_of_ocaml 4.0.0\n(function(a){typeof\nglobalThis!==\"object\"&&(this?b():(a.defineProperty(a.prototype,\"_T_\",{configurable:true,get:b}),_T_));function\nb(){var\nb=this||self;b.globalThis=b;delete\na.prototype._T_}}(Object));(function(x){\"use strict\";var\njI=\"q\",f8=\"i\",aU=\"img\",i3=\"Invalid_argument\",d7=\"Map.bal\",i2=\"@[\",i1=\"%ni\",jH=\"data-text-indent-alt\",c0=\"th\",bb=\"!\",i0=\"align\",jG=\"applewebkit\",b5=\"label\",bt=\"col\",ag=0xff,cc=\"title\",fI=\"del\",l=-579472809,cZ=\"font\",iZ=\"strike\",X=\"contents\",cK=\"height\",iY=\"abbr\",af=\"0\",f7=\"samp\",c=-841728391,R=698996132,cY=128,iX=\"Sys_blocked_io\",aT=\"p\",cX=\"start\",jF=\"fd \",iW=\"normal\",ba=\"form\",A=248,f6=\"DeltaViewInsertion\",f5=\"var\",f4=\" {\\n\",cW=\">\",jE=1027,f3=\"em\",aC=0xFF,ei=\"caption\",ao=246,bI=\"td\",bs=\"object\",iV=\"%u\",fH=\"[endif]\",cV=\"noscript\",jD=\"error\",a$=\"table\",cH=\"tbody\",cI=127,cJ=1024,ap=\"script\",iU=\"@{\",f1=\"1\",f2=\"e\",fG=\" : flags Open_rdonly and Open_wronly are not compatible\",jC=\"mso-list\",eh=\"button\",cU=\"h1\",br=\"-\",f0=\": Not a directory\",fF=\" : file already exists\",fZ=\"b\",a7=0xffffff,iT=\"startfragment\",fE=\"strong\",jB=\"Out_of_memory\",eg=\"big\",$=\"ul\",jA=\": closedir failed\",fY=\"index out of bounds\",d6=\"select\",at=\"tr\",ef=\"_bigarr02\",ee=\"@\",iR=\", characters \",iS=0x7F,cb=\"isindex\",aV=0xffff,d5=\"basefont\",iP=\"wordimport.js\",d4=\"none\",iQ=12520,d3=\"small\",jz=\"infinity\",aa=\"li\",d2=\"menu\",cG=1000,e=\"\",cT=\"sub\",iO=\"^\",ca=749117977,bq=0x3f,bC=\"link\",iN=\"src\",ed=\"frame\",iM=\"Match_failure\",jy=\"mso-element\",cS=\"html\",ec=\"iframe\",eb=252,an=0x00,iL=\" : is a directory\",bu=\".\",b4=\"+\",jw=\"safari\",fX=\"tt\",jx=0xf0,jv=\"<![endif]\",b3=\"param\",bH=\"width\",iK=\"%li\",ju=\"map\",bG=\"fieldset\",bB=\"a\",iJ=65536,fW=-32,fD=\")\",d1=\"legend\",bA=-810056052,fC=\"nan\",jt=\"list-style-type\",js=\"closedir\",d0=\"applet\",iI=0xe0,iH=0xdfff,b2=\"div\",aS=\"/\",jr=\"Assert_failure\",dZ=\"s\",bp=\"meta\",fB=\"ENOTDIR\",fA=1073741823,j=870530776,b1=\"dl\",bo=250,b$=\"frameset\",cR=\"blockquote\",ea=\",\",bF='\"',iG=\"function\",fz=1255,fV=\"<\",jq=\"Fatal error: exception %s\\n\",b0=255,jp=0x800,fy=\"jsError\",aR=0x8000,aK=256,aE=\"style\",fx=\"\\n}\",iF=\"End_of_file\",jo=\"text-align\",dY=\"center\",jn=\"data-main\",fw=\"Failure\",iE=\"data-converted-paragraph\",v=50834029,fv=\"code\",fU=\"ENOENT\",iD=\".5pt\",fu=\"dfn\",jm=\"([^/]+)\",fT=0xf,iB=-48,iC=0xdc00,jl=\"ENOTEMPTY\",ft=\"EBADF\",iA=\"data-list-level\",N=\"camlinternalFormat.ml\",jk=\"Division_by_zero\",jj=\"<\\/\",iz=\"Sys_error\",fs=\"cite\",b_=\"noframes\",W=\"ol\",ji=\": \",iy=\"EEXIST\",fS=\"%d\",ix=\"Printexc.handle_uncaught_exception\",d$=\"optgroup\",fr=\"kbd\",jg=\"'\",jh=\"buffer.ml\",cQ=\"h5\",dX=\"int_of_string\",dW=\"dt\",iw=\"display\",iu=120,iv=103,d_=\"colgroup\",cF=\"h6\",a_=\"head\",cP=\"h3\",it=512,jf=\"br\",is=0x7ff0,b9=\"data-list-id\",a9=\"body\",dV=\"u\",ir=\"0x\",dU=\"\\n\",cE=\"h2\",d9=254,iq=\"bdo\",fR=100,cO=\"pre\",io=\"%Li\",ip=\": file descriptor already closed\",fQ=\" : flags Open_text and Open_binary are not compatible\",dT=\"area\",je=\"Safari\",cN=\"tfoot\",dS=\"input\",bz=\"span\",fq=3257036,a8=-804212868,cD=\"thead\",fP=17731,im=\"lexing: empty token\",fO=\"Unix.Unix_error\",by=\"--\",jd=\"&nbsp;\",fp=\"mkdir\",jc=\"Stack_overflow\",fo=\"v:shape\",cC=\"address\",dR=\": No such file or directory\",ja=\"border\",jb=\"/static/\",i$=-97,i9=\"tab-interval\",i_=\"Not_found\",i8=\"chrome\",cM=\"dd\",fn=\"ins\",cB=\", \",i=781665294,il=0xFE,fN=\"rmdir\",bE=\"dir\",fm=\"data-list-type\",bn=\"class\",i7=1026,i6=\"Chromium\",cL=\"sup\",fM=\"?\",dQ=\"list-style\",ik=\"Pervasives.do_at_exit\",ae=\" \",fL=\"Fatal error: exception \",aD=0x80,ij=\"Undefined_recursive_module\",b8=\"base\",bD=\":\",i5=\"\\xc2\\xa0\",b7=\"option\",b6=\"hr\",ii=\"cleanDocument\",cA=\"h4\",o=-936778451,dP=\"Set.bal\",i4=\"_\",fK=\"compare: functional value\",ih=\"%i\",d8=\"true\",dO=\"textarea\",fJ=\"acronym\";function\nzB(d,b,e,c,f){if(c<=b)for(var\na=1;a<=f;a++)e[c+a]=d[b+a];else\nfor(var\na=f;a>=1;a--)e[c+a]=d[b+a];return 0}function\nzC(e,f,d){var\na=new\nArray(d+1);a[0]=0;for(var\nb=1,c=f+1;b<=d;b++,c++)a[b]=e[c];return a}function\nc_(c,b,a){var\nd=String.fromCharCode;if(b==0&&a<=4096&&a==c.length)return d.apply(null,c);var\nf=e;for(;0<a;b+=cJ,a-=cJ)f+=d.apply(null,c.slice(b,b+Math.min(a,cJ)));return f}function\nek(b){var\nc=new\nUint8Array(b.l),e=b.c,d=e.length,a=0;for(;a<d;a++)c[a]=e.charCodeAt(a);for(d=b.l;a<d;a++)c[a]=0;b.c=c;b.t=4;return c}function\nbc(d,e,b,f,c){if(c==0)return 0;if(f==0&&(c>=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?c_(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else\nif(b.t==2&&f==b.c.length){b.c+=d.t==4?c_(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)ek(b);var\ng=d.c,h=b.c;if(d.t==4)if(f<=e)for(var\na=0;a<c;a++)h[f+a]=g[e+a];else\nfor(var\na=c-1;a>=0;a--)h[f+a]=g[e+a];else{var\ni=Math.min(c,g.length-e);for(var\na=0;a<i;a++)h[f+a]=g.charCodeAt(e+a);for(;a<c;a++)h[f+a]=0}}return 0}function\nau(a){return a}function\nbd(a,b,c,d,e){bc(au(a),b,c,d,e);return 0}function\ncf(b,a){if(b==0)return e;if(a.repeat)return a.repeat(b);var\nd=e,c=0;for(;;){if(b&1)d+=a;b>>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function\nbM(a){if(a.t==2)a.c+=cf(a.l-a.c.length,\"\\0\");else\na.c=c_(a.c,0,a.c.length);a.t=0}function\njS(a,b){if(a===b)return 1;a.t&6&&bM(a);b.t&6&&bM(b);return a.c==b.c?1:0}function\nAo(b,a){throw[0,b,a]}function\nkd(a){if(a.length<24){for(var\nb=0;b<a.length;b++)if(a.charCodeAt(b)>cI)return false;return true}else\nreturn!/[^\\x00-\\x7f]/.test(a)}function\nAx(f){for(var\nk=e,c=e,h,g,i,a,b=0,j=f.length;b<j;b++){g=f.charCodeAt(b);if(g<aD){for(var\nd=b+1;d<j&&(g=f.charCodeAt(d))<aD;d++);if(d-b>it){c.substr(0,1);k+=c;c=e;k+=f.slice(b,d)}else\nc+=f.slice(b,d);if(d==j)break;b=d}a=1;if(++b<j&&((i=f.charCodeAt(b))&-64)==cY){h=i+(g<<6);if(g<iI){a=h-0x3080;if(a<aD)a=1}else{a=2;if(++b<j&&((i=f.charCodeAt(b))&-64)==cY){h=i+(h<<6);if(g<jx){a=h-0xe2080;if(a<jp||a>=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b<j&&((i=f.charCodeAt(b))&-64)==cY&&g<0xf5){a=i-0x3c82080+(h<<6);if(a<0x10000||a>0x10ffff)a=3}}}}}if(a<4){b-=a;c+=\"\\ufffd\"}else\nif(a>aV)c+=String.fromCharCode(0xd7c0+(a>>10),iC+(a&0x3FF));else\nc+=String.fromCharCode(a);if(c.length>cJ){c.substr(0,1);k+=c;c=e}}return k+c}function\naW(c,a,b){this.t=c;this.c=a;this.l=b}aW.prototype.toString=function(){switch(this.t){case\n9:return this.c;default:bM(this);case\n0:if(kd(this.c)){this.t=9;return this.c}this.t=8;case\n8:return this.c}};aW.prototype.toUtf16=function(){var\na=this.toString();if(this.t==9)return a;return Ax(a)};aW.prototype.slice=function(){var\na=this.t==4?this.c.slice():this.c;return new\naW(this.t,a,this.l)};function\njT(a){return new\naW(0,a,a.length)}function\na(a){return jT(a)}function\ngn(c,b){Ao(c,a(b))}var\naG=[0];function\nL(a){gn(aG.Invalid_argument,a)}function\njQ(){L(fY)}function\nbL(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case\n0:return a.c.charCodeAt(b);case\n4:return a.c[b]}}function\nbK(b,a){if(a>>>0>=b.l)jQ();return bL(b,a)}function\nH(a,c,b){b&=ag;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}ek(a)}a.c[c]=b;return 0}function\naL(b,a,c){if(a>>>0>=b.l)jQ();return H(b,a,c)}function\naF(c,a){if(c.fun)return aF(c.fun,a);if(typeof\nc!==\"function\")return c;var\nb=c.length|0;if(b===0)return c.apply(null,a);var\ne=a.length|0,d=b-e|0;if(d==0)return c.apply(null,a);else\nif(d<0)return aF(c.apply(null,a.slice(0,b)),a.slice(b));else\nreturn function(){var\ne=arguments.length==0?1:arguments.length,d=new\nArray(a.length+e);for(var\nb=0;b<a.length;b++)d[b]=a[b];for(var\nb=0;b<arguments.length;b++)d[a.length+b]=arguments[b];return aF(c,d)}}function\nc2(){L(fY)}function\nw(a,b){if(b>>>0>=a.length-1)c2();return a}function\nzG(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function\naw(a){a.t&6&&bM(a);return a.c}var\nAA=Math.log2&&Math.log2(1.1235582092889474E+307)==1020;function\nAz(a){if(AA)return Math.floor(Math.log2(a));var\nb=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++}else\nwhile(a<1){a*=2;b--}return b}function\ngf(c){var\na=new\nFloat32Array(1);a[0]=c;var\nb=new\nInt32Array(a.buffer);return b[0]|0}var\njZ=Math.pow(2,-24);function\nj9(a){throw a}function\ngo(){j9(aG.Division_by_zero)}function\nm(b,c,a){this.lo=b&a7;this.mi=c&a7;this.hi=a&aV}m.prototype.caml_custom=\"_j\";m.prototype.copy=function(){return new\nm(this.lo,this.mi,this.hi)};m.prototype.ucompare=function(a){if(this.hi>a.hi)return 1;if(this.hi<a.hi)return-1;if(this.mi>a.mi)return 1;if(this.mi<a.mi)return-1;if(this.lo>a.lo)return 1;if(this.lo<a.lo)return-1;return 0};m.prototype.compare=function(a){var\nb=this.hi<<16,c=a.hi<<16;if(b>c)return 1;if(b<c)return-1;if(this.mi>a.mi)return 1;if(this.mi<a.mi)return-1;if(this.lo>a.lo)return 1;if(this.lo<a.lo)return-1;return 0};m.prototype.neg=function(){var\na=-this.lo,b=-this.mi+(a>>24),c=-this.hi+(b>>24);return new\nm(a,b,c)};m.prototype.add=function(a){var\nb=this.lo+a.lo,c=this.mi+a.mi+(b>>24),d=this.hi+a.hi+(c>>24);return new\nm(b,c,d)};m.prototype.sub=function(a){var\nb=this.lo-a.lo,c=this.mi-a.mi+(b>>24),d=this.hi-a.hi+(c>>24);return new\nm(b,c,d)};m.prototype.mul=function(a){var\nb=this.lo*a.lo,c=(b*jZ|0)+this.mi*a.lo+this.lo*a.mi,d=(c*jZ|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new\nm(b,c,d)};m.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};m.prototype.isNeg=function(){return this.hi<<16<0};m.prototype.and=function(a){return new\nm(this.lo&a.lo,this.mi&a.mi,this.hi&a.hi)};m.prototype.or=function(a){return new\nm(this.lo|a.lo,this.mi|a.mi,this.hi|a.hi)};m.prototype.xor=function(a){return new\nm(this.lo^a.lo,this.mi^a.mi,this.hi^a.hi)};m.prototype.shift_left=function(a){a=a&63;if(a==0)return this;if(a<24)return new\nm(this.lo<<a,this.mi<<a|this.lo>>24-a,this.hi<<a|this.mi>>24-a);if(a<48)return new\nm(0,this.lo<<a-24,this.mi<<a-24|this.lo>>48-a);return new\nm(0,0,this.lo<<a-48)};m.prototype.shift_right_unsigned=function(a){a=a&63;if(a==0)return this;if(a<24)return new\nm(this.lo>>a|this.mi<<24-a,this.mi>>a|this.hi<<24-a,this.hi>>a);if(a<48)return new\nm(this.mi>>a-24|this.hi<<48-a,this.hi>>a-24,0);return new\nm(this.hi>>a-48,0,0)};m.prototype.shift_right=function(a){a=a&63;if(a==0)return this;var\nc=this.hi<<16>>16;if(a<24)return new\nm(this.lo>>a|this.mi<<24-a,this.mi>>a|c<<24-a,this.hi<<16>>a>>>16);var\nb=this.hi<<16>>31;if(a<48)return new\nm(this.mi>>a-24|this.hi<<48-a,this.hi<<16>>a-24>>16,b&aV);return new\nm(this.hi<<16>>a-32,b,b)};m.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&a7;this.lo=this.lo<<1&a7};m.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&a7;this.mi=(this.mi>>>1|this.hi<<23)&a7;this.hi=this.hi>>>1};m.prototype.udivmod=function(e){var\nc=0,b=this.copy(),a=e.copy(),d=new\nm(0,0,0);while(b.ucompare(a)>0){c++;a.lsl1()}while(c>=0){c--;d.lsl1();if(b.ucompare(a)>=0){d.lo++;b=b.sub(a)}a.lsr1()}return{quotient:d,modulus:b}};m.prototype.div=function(a){var\nb=this;if(a.isZero())go();var\nd=b.hi^a.hi;if(b.hi&aR)b=b.neg();if(a.hi&aR)a=a.neg();var\nc=b.udivmod(a).quotient;if(d&aR)c=c.neg();return c};m.prototype.mod=function(b){var\na=this;if(b.isZero())go();var\nd=a.hi;if(a.hi&aR)a=a.neg();if(b.hi&aR)b=b.neg();var\nc=a.udivmod(b).modulus;if(d&aR)c=c.neg();return c};m.prototype.toInt=function(){return this.lo|this.mi<<24};m.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};m.prototype.toArray=function(){return[this.hi>>8,this.hi&ag,this.mi>>16,this.mi>>8&ag,this.mi&ag,this.lo>>16,this.lo>>8&ag,this.lo&ag]};m.prototype.lo32=function(){return this.lo|(this.mi&ag)<<24};m.prototype.hi32=function(){return this.mi>>>8&aV|this.hi<<16};function\nen(b,c,a){return new\nm(b,c,a)}function\nem(a){if(!isFinite(a)){if(isNaN(a))return en(1,0,is);return a>0?en(0,0,is):en(0,0,0xfff0)}var\nf=a==0&&1/a==-Infinity?aR:a>=0?0:aR;if(f)a=-a;var\nb=Az(a)+1023;if(b<=0){b=0;a/=Math.pow(2,-i7)}else{a/=Math.pow(2,b-jE);if(a<16){a*=2;b-=1}if(b==0)a/=2}var\nd=Math.pow(2,24),c=a|0;a=(a-c)*d;var\ne=a|0;a=(a-e)*d;var\ng=a|0;c=c&fT|f|b<<4;return en(g,e,c)}function\nc6(a){return a.toArray()}function\njP(c,b,g){c.write(32,b.dims.length);c.write(32,b.kind|b.layout<<8);if(b.caml_custom==ef)for(var\na=0;a<b.dims.length;a++)if(b.dims[a]<aV)c.write(16,b.dims[a]);else{c.write(16,aV);c.write(32,0);c.write(32,b.dims[a])}else\nfor(var\na=0;a<b.dims.length;a++)c.write(32,b.dims[a]);switch(b.kind){case\n2:case\n3:case\n12:for(var\na=0;a<b.data.length;a++)c.write(8,b.data[a]);break;case\n4:case\n5:for(var\na=0;a<b.data.length;a++)c.write(16,b.data[a]);break;case\n6:for(var\na=0;a<b.data.length;a++)c.write(32,b.data[a]);break;case\n8:case\n9:c.write(8,0);for(var\na=0;a<b.data.length;a++)c.write(32,b.data[a]);break;case\n7:for(var\na=0;a<b.data.length/2;a++){var\ne=c6(b.get(a));for(var\nd=0;d<8;d++)c.write(8,e[d])}break;case\n1:for(var\na=0;a<b.data.length;a++){var\ne=c6(em(b.get(a)));for(var\nd=0;d<8;d++)c.write(8,e[d])}break;case\n0:for(var\na=0;a<b.data.length;a++){var\ne=gf(b.get(a));c.write(32,e)}break;case\n10:for(var\na=0;a<b.data.length/2;a++){var\nd=b.get(a);c.write(32,gf(d[1]));c.write(32,gf(d[2]))}break;case\n11:for(var\na=0;a<b.data.length/2;a++){var\nf=b.get(a),e=c6(em(f[1]));for(var\nd=0;d<8;d++)c.write(8,e[d]);var\ne=c6(em(f[2]));for(var\nd=0;d<8;d++)c.write(8,e[d])}break}g[0]=(4+b.dims.length)*4;g[1]=(4+b.dims.length)*8}function\njN(a){switch(a){case\n7:case\n10:case\n11:return 2;default:return 1}}function\nzD(b,d){var\na;switch(b){case\n0:a=Float32Array;break;case\n1:a=Float64Array;break;case\n2:a=Int8Array;break;case\n3:a=Uint8Array;break;case\n4:a=Int16Array;break;case\n5:a=Uint16Array;break;case\n6:a=Int32Array;break;case\n7:a=Int32Array;break;case\n8:a=Int32Array;break;case\n9:a=Int32Array;break;case\n10:a=Float32Array;break;case\n11:a=Float64Array;break;case\n12:a=Uint8Array;break}if(!a)L(\"Bigarray.create: unsupported kind\");var\nc=new\na(d*jN(b));return c}function\ngg(c){var\na=new\nInt32Array(1);a[0]=c;var\nb=new\nFloat32Array(a.buffer);return b[0]}function\nc5(a){return new\nm(a[7]<<0|a[6]<<8|a[5]<<16,a[4]<<0|a[3]<<8|a[2]<<16,a[1]<<0|a[0]<<8)}function\ngh(d){var\nf=d.lo,g=d.mi,b=d.hi,c=(b&0x7fff)>>4;if(c==2047)return(f|g|b&fT)==0?b&aR?-Infinity:Infinity:NaN;var\ne=Math.pow(2,-24),a=(f*e+g)*e+(b&fT);if(c>0){a+=16;a*=Math.pow(2,c-jE)}else\na*=Math.pow(2,-i7);if(b&aR)a=-a;return a}function\nf9(b){var\nd=b.length,c=1;for(var\na=0;a<d;a++){if(b[a]<0)L(\"Bigarray.create: negative dimension\");c=c*b[a]}return c}function\nzV(b,a){return new\nm(b&a7,b>>>24&ag|(a&aV)<<8,a>>>16&aV)}function\ngi(a){return a.hi32()}function\ngj(a){return a.lo32()}var\nzE=ef;function\nbv(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}bv.prototype.caml_custom=zE;bv.prototype.offset=function(b){var\nc=0;if(typeof\nb===\"number\")b=[b];if(!(b\ninstanceof\nArray))L(\"bigarray.js: invalid offset\");if(this.dims.length!=b.length)L(\"Bigarray.get/set: bad number of dimensions\");if(this.layout==0)for(var\na=0;a<this.dims.length;a++){if(b[a]<0||b[a]>=this.dims[a])c2();c=c*this.dims[a]+b[a]}else\nfor(var\na=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])c2();c=c*this.dims[a]+(b[a]-1)}return c};bv.prototype.get=function(a){switch(this.kind){case\n7:var\nd=this.data[a*2+0],b=this.data[a*2+1];return zV(d,b);case\n10:case\n11:var\ne=this.data[a*2+0],c=this.data[a*2+1];return[d9,e,c];default:return this.data[a]}};bv.prototype.set=function(a,b){switch(this.kind){case\n7:this.data[a*2+0]=gj(b);this.data[a*2+1]=gi(b);break;case\n10:case\n11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};bv.prototype.fill=function(b){switch(this.kind){case\n7:var\nc=gj(b),e=gi(b);if(c==e)this.data.fill(c);else\nfor(var\na=0;a<this.data.length;a++)this.data[a]=a%2==0?c:e;break;case\n10:case\n11:var\nd=b[1],f=b[2];if(d==f)this.data.fill(d);else\nfor(var\na=0;a<this.data.length;a++)this.data[a]=a%2==0?d:f;break;default:this.data.fill(b);break}};bv.prototype.compare=function(b,g){if(this.layout!=b.layout||this.kind!=b.kind){var\ne=this.kind|this.layout<<8,f=b.kind|b.layout<<8;return f-e}if(this.dims.length!=b.dims.length)return b.dims.length-this.dims.length;for(var\na=0;a<this.dims.length;a++)if(this.dims[a]!=b.dims[a])return this.dims[a]<b.dims[a]?-1:1;switch(this.kind){case\n0:case\n1:case\n10:case\n11:var\nc,d;for(var\na=0;a<this.data.length;a++){c=this.data[a];d=b.data[a];if(c<d)return-1;if(c>d)return 1;if(c!=d){if(!g)return NaN;if(c==c)return 1;if(d==d)return-1}}break;case\n7:for(var\na=0;a<this.data.length;a+=2){if(this.data[a+1]<b.data[a+1])return-1;if(this.data[a+1]>b.data[a+1])return 1;if(this.data[a]>>>0<b.data[a]>>>0)return-1;if(this.data[a]>>>0>b.data[a]>>>0)return 1}break;case\n2:case\n3:case\n4:case\n5:case\n6:case\n8:case\n9:case\n12:for(var\na=0;a<this.data.length;a++){if(this.data[a]<b.data[a])return-1;if(this.data[a]>b.data[a])return 1}break}return 0};function\ncd(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}cd.prototype=new\nbv();cd.prototype.offset=function(a){if(typeof\na!==\"number\")if(a\ninstanceof\nArray&&a.length==1)a=a[0];else\nL(\"Ml_Bigarray_c_1_1.offset\");if(a<0||a>=this.dims[0])c2();return a};cd.prototype.get=function(a){return this.data[a]};cd.prototype.set=function(a,b){this.data[a]=b;return 0};cd.prototype.fill=function(a){this.data.fill(a);return 0};function\njL(c,d,a,b){var\ne=jN(c);if(f9(a)*e!=b.length)L(\"length doesn't match dims\");if(d==0&&a.length==1&&e==1)return new\ncd(c,d,a,b);return new\nbv(c,d,a,b)}function\nav(b){if(!aG.Failure)aG.Failure=[A,a(fw),-3];gn(aG.Failure,b)}function\njM(b,v,r){var\ni=b.read32s();if(i<0||i>16)av(\"input_value: wrong number of bigarray dimensions\");var\np=b.read32s(),j=p&ag,o=p>>8&1,h=[];if(r==ef)for(var\na=0;a<i;a++){var\nn=b.read16u();if(n==aV){var\nt=b.read32u(),u=b.read32u();if(t!=0)av(\"input_value: bigarray dimension overflow in 32bit\");n=u}h.push(n)}else\nfor(var\na=0;a<i;a++)h.push(b.read32u());var\nd=f9(h),f=zD(j,d),g=jL(j,o,h,f);switch(j){case\n2:for(var\na=0;a<d;a++)f[a]=b.read8s();break;case\n3:case\n12:for(var\na=0;a<d;a++)f[a]=b.read8u();break;case\n4:for(var\na=0;a<d;a++)f[a]=b.read16s();break;case\n5:for(var\na=0;a<d;a++)f[a]=b.read16u();break;case\n6:for(var\na=0;a<d;a++)f[a]=b.read32s();break;case\n8:case\n9:var\ns=b.read8u();if(s)av(\"input_value: cannot read bigarray with 64-bit OCaml ints\");for(var\na=0;a<d;a++)f[a]=b.read32s();break;case\n7:var\ne=new\nArray(8);for(var\na=0;a<d;a++){for(var\nc=0;c<8;c++)e[c]=b.read8u();var\nq=c5(e);g.set(a,q)}break;case\n1:var\ne=new\nArray(8);for(var\na=0;a<d;a++){for(var\nc=0;c<8;c++)e[c]=b.read8u();var\nk=gh(c5(e));g.set(a,k)}break;case\n0:for(var\na=0;a<d;a++){var\nk=gg(b.read32s());g.set(a,k)}break;case\n10:for(var\na=0;a<d;a++){var\nm=gg(b.read32s()),l=gg(b.read32s());g.set(a,[d9,m,l])}break;case\n11:var\ne=new\nArray(8);for(var\na=0;a<d;a++){for(var\nc=0;c<8;c++)e[c]=b.read8u();var\nm=gh(c5(e));for(var\nc=0;c<8;c++)e[c]=b.read8u();var\nl=gh(c5(e));g.set(a,[d9,m,l])}break}v[0]=(4+i)*4;return jL(j,o,h,f)}function\njK(a,b,c){return a.compare(b,c)}function\nep(a,b){return Math.imul(a,b)}function\nY(b,a){a=ep(a,0xcc9e2d51|0);a=a<<15|a>>>32-15;a=ep(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function\nzQ(a,b){a=Y(a,gj(b));a=Y(a,gi(b));return a}function\ngd(a,b){return zQ(a,em(b))}function\njO(c){var\nb=f9(c.dims),d=0;switch(c.kind){case\n2:case\n3:case\n12:if(b>aK)b=aK;var\ne=0,a=0;for(a=0;a+4<=c.data.length;a+=4){e=c.data[a+0]|c.data[a+1]<<8|c.data[a+2]<<16|c.data[a+3]<<24;d=Y(d,e)}e=0;switch(b&3){case\n3:e=c.data[a+2]<<16;case\n2:e|=c.data[a+1]<<8;case\n1:e|=c.data[a+0];d=Y(d,e)}break;case\n4:case\n5:if(b>cY)b=cY;var\ne=0,a=0;for(a=0;a+2<=c.data.length;a+=2){e=c.data[a+0]|c.data[a+1]<<16;d=Y(d,e)}if((b&1)!=0)d=Y(d,c.data[a]);break;case\n6:if(b>64)b=64;for(var\na=0;a<b;a++)d=Y(d,c.data[a]);break;case\n8:case\n9:if(b>64)b=64;for(var\na=0;a<b;a++)d=Y(d,c.data[a]);break;case\n7:if(b>32)b=32;b*=2;for(var\na=0;a<b;a++)d=Y(d,c.data[a]);break;case\n10:b*=2;case\n0:if(b>64)b=64;for(var\na=0;a<b;a++)d=gd(d,c.data[a]);break;case\n11:b*=2;case\n1:if(b>32)b=32;for(var\na=0;a<b;a++)d=gd(d,c.data[a]);break}return d}function\nzT(a,b){b[0]=4;return a.read32s()}function\nAj(a,b){switch(a.read8u()){case\n1:b[0]=4;return a.read32s();case\n2:av(\"input_value: native integer value too large\");default:av(\"input_value: ill-formed native integer\")}}function\nz4(c,d){var\nb=new\nArray(8);for(var\na=0;a<8;a++)b[a]=c.read8u();d[0]=8;return c5(b)}function\nz0(e,d,b){var\nc=c6(d);for(var\na=0;a<8;a++)e.write(8,c[a]);b[0]=8;b[1]=8}function\nzU(a,b,c){return a.compare(b)}function\nzX(a){return a.lo32()^a.hi32()}var\nc4={\"_j\":{deserialize:z4,serialize:z0,fixed_length:8,compare:zU,hash:zX},\"_i\":{deserialize:zT,fixed_length:4},\"_n\":{deserialize:Aj,fixed_length:4},\"_bigarray\":{deserialize:function(a,b){return jM(a,b,\"_bigarray\")},serialize:jP,compare:jK,hash:jO},\"_bigarr02\":{deserialize:function(a,b){return jM(a,b,ef)},serialize:jP,compare:jK,hash:jO}};function\nga(a){return c4[a.caml_custom]&&c4[a.caml_custom].compare}function\njU(f,c,d,e){var\nb=ga(c);if(b){var\na=d>0?b(c,f,e):b(f,c,e);if(e&&a!=a)return d;if(+a!=+a)return+a;if((a|0)!=0)return a|0}return d}function\nc8(a){return a\ninstanceof\naW}function\neo(a){return c8(a)}function\njV(a){if(typeof\na===\"number\")return cG;else\nif(c8(a))return eb;else\nif(eo(a))return 1252;else\nif(a\ninstanceof\nArray&&a[0]===a[0]>>>0&&a[0]<=b0){var\nb=a[0]|0;return b==d9?0:b}else\nif(a\ninstanceof\nString)return iQ;else\nif(typeof\na==\"string\")return iQ;else\nif(a\ninstanceof\nNumber)return cG;else\nif(a&&a.caml_custom)return fz;else\nif(a&&a.compare)return 1256;else\nif(typeof\na==\"function\")return 1247;else\nif(typeof\na==\"symbol\")return 1251;return 1001}function\nj0(a,b){if(a<b)return-1;if(a==b)return 0;return 1}function\njR(a,b){a.t&6&&bM(a);b.t&6&&bM(b);return a.c<b.c?-1:a.c>b.c?1:0}function\nc9(a,b){return jR(a,b)}function\nf$(a,b,d){var\ne=[];for(;;){if(!(d&&a===b)){var\nf=jV(a);if(f==bo){a=a[1];continue}var\ng=jV(b);if(g==bo){b=b[1];continue}if(f!==g){if(f==cG){if(g==fz)return jU(a,b,-1,d);return-1}if(g==cG){if(f==fz)return jU(b,a,1,d);return 1}return f<g?-1:1}switch(f){case\n247:L(fK);break;case\n248:var\nc=j0(a[2],b[2]);if(c!=0)return c|0;break;case\n249:L(fK);break;case\n250:L(\"equal: got Forward_tag, should not happen\");break;case\n251:L(\"equal: abstract value\");break;case\n252:if(a!==b){var\nc=jR(a,b);if(c!=0)return c|0}break;case\n253:L(\"equal: got Double_tag, should not happen\");break;case\n254:L(\"equal: got Double_array_tag, should not happen\");break;case\n255:L(\"equal: got Custom_tag, should not happen\");break;case\n1247:L(fK);break;case\n1255:var\ni=ga(a);if(i!=ga(b))return a.caml_custom<b.caml_custom?-1:1;if(!i)L(\"compare: abstract value\");var\nc=i(a,b,d);if(c!=c)return d?-1:c;if(c!==(c|0))return-1;if(c!=0)return c|0;break;case\n1256:var\nc=a.compare(b,d);if(c!=c)return d?-1:c;if(c!==(c|0))return-1;if(c!=0)return c|0;break;case\n1000:a=+a;b=+b;if(a<b)return-1;if(a>b)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case\n1001:if(a<b)return-1;if(a>b)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case\n1251:if(a!==b){if(!d)return NaN;return 1}break;case\n1252:var\na=aw(a),b=aw(b);if(a!==b){if(a<b)return-1;if(a>b)return 1}break;case\n12520:var\na=a.toString(),b=b.toString();if(a!==b){if(a<b)return-1;if(a>b)return 1}break;case\n246:case\n254:default:if(a.length!=b.length)return a.length<b.length?-1:1;if(a.length>1)e.push(a,b,1);break}}if(e.length==0)return 0;var\nh=e.pop();b=e.pop();a=e.pop();if(h+1<a.length)e.push(a,b,h+1);a=a[h];b=b[h]}}function\nce(a,b){return f$(a,b,true)}function\nzH(){return[0]}function\nD(a){if(a<0)L(\"Bytes.create\");return new\naW(a?2:9,e,a)}function\nbN(a,b){return+(f$(a,b,false)==0)}function\nzJ(a,c,b,d){if(b>0)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=e;a.t=2}else{a.c=cf(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)ek(a);for(b+=c;c<b;c++)a.c[c]=d}return 0}function\ngm(d){d=aw(d);var\ne=d.length;if(e>31)L(\"format_int: format too long\");var\na={justify:b4,signstyle:br,filler:ae,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:\"f\"};for(var\nc=0;c<e;c++){var\nb=d.charAt(c);switch(b){case\"-\":a.justify=br;break;case\"+\":case\" \":a.signstyle=b;break;case\"0\":a.filler=af;break;case\"#\":a.alternate=true;break;case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":a.width=0;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.width=a.width*10+b;c++}c--;break;case\".\":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++}c--;case\"d\":case\"i\":a.signedconv=true;case\"u\":a.base=10;break;case\"x\":a.base=16;break;case\"X\":a.base=16;a.uppercase=true;break;case\"o\":a.base=8;break;case\"e\":case\"f\":case\"g\":a.signedconv=true;a.conv=b;break;case\"E\":case\"F\":case\"G\":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function\ngb(b,g){if(b.uppercase)g=g.toUpperCase();var\nf=g.length;if(b.signedconv&&(b.sign<0||b.signstyle!=br))f++;if(b.alternate){if(b.base==8)f+=1;if(b.base==16)f+=2}var\nc=e;if(b.justify==b4&&b.filler==ae)for(var\nd=f;d<b.width;d++)c+=ae;if(b.signedconv)if(b.sign<0)c+=br;else\nif(b.signstyle!=br)c+=b.signstyle;if(b.alternate&&b.base==8)c+=af;if(b.alternate&&b.base==16)c+=b.uppercase?\"0X\":ir;if(b.justify==b4&&b.filler==af)for(var\nd=f;d<b.width;d++)c+=af;c+=g;if(b.justify==br)for(var\nd=f;d<b.width;d++)c+=ae;return a(c)}function\ngc(i,c){function\nj(a,b){if(Math.abs(a)<1.0)return a.toFixed(b);else{var\nc=parseInt(a.toString().split(b4)[1]);if(c>20){c-=20;a/=Math.pow(10,c);a+=new\nArray(c+1).join(af);if(b>0)a=a+bu+new\nArray(b+1).join(af);return a}else\nreturn a.toFixed(b)}}var\na,e=gm(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=fC;e.filler=ae}else\nif(!isFinite(c)){a=\"inf\";e.filler=ae}else\nswitch(e.conv){case\"e\":var\na=c.toExponential(d),b=a.length;if(a.charAt(b-3)==f2)a=a.slice(0,b-1)+af+a.slice(b-1);break;case\"f\":a=j(c,d);break;case\"g\":d=d?d:1;a=c.toExponential(d-1);var\nh=a.indexOf(f2),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var\nb=h-1;while(a.charAt(b)==af)b--;if(a.charAt(b)==bu)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==f2)a=a.slice(0,b-1)+af+a.slice(b-1);break}else{var\nf=d;if(g<0){f-=g+1;a=c.toFixed(f)}else\nwhile(a=c.toFixed(f),a.length>d+1)f--;if(f){var\nb=a.length-1;while(a.charAt(b)==af)b--;if(a.charAt(b)==bu)b--;a=a.slice(0,b+1)}}break}return gb(e,a)}function\nel(f,c){if(aw(f)==fS)return a(e+c);var\nb=gm(f);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else\nc>>>=0;var\nd=c.toString(b.base);if(b.prec>=0){b.filler=ae;var\ng=b.prec-d.length;if(g>0)d=cf(g,af)+d}return gb(b,d)}var\nj7=0;function\nbe(){return j7++}function\ngk(a){return a.toUtf16()}function\nda(){return false}function\nAB(){function\na(a){if(a.charAt(0)===aS)return[e,a.substring(1)];return}function\nb(c){var\nh=/^([a-zA-Z]:|[\\\\/]{2}[^\\\\/]+[\\\\/]+[^\\\\/]+)?([\\\\/])?([\\s\\S]*?)$/,a=h.exec(c),b=a[1]||e,f=Boolean(b&&b.charAt(1)!==bD);if(Boolean(a[2]||f)){var\nd=a[1]||e,g=a[2]||e;return[d,c.substring(d.length+g.length)]}return}return da()&&x.process&&x.process.platform?x.process.platform===\"win32\"?b:a:a}var\ngq=AB();function\nkb(a){return a.slice(-1)!==aS?a+aS:a}if(da()&&x.process&&x.process.cwd)var\nc3=x.process.cwd().replace(/\\\\/g,aS);else\nvar\nc3=\"/static\";c3=kb(c3);function\nAa(a){a=gk(a);if(!gq(a))a=c3+a;var\ne=gq(a),d=e[1].split(aS),b=[];for(var\nc=0;c<d.length;c++)switch(d[c]){case\"..\":if(b.length>1)b.pop();break;case\".\":break;case\"\":break;default:b.push(d[c]);break}b.unshift(e[0]);b.orig=a;return b}function\nAy(f){for(var\ng=e,b=g,a,i,c=0,h=f.length;c<h;c++){a=f.charCodeAt(c);if(a<aD){for(var\nd=c+1;d<h&&(a=f.charCodeAt(d))<aD;d++);if(d-c>it){b.substr(0,1);g+=b;b=e;g+=f.slice(c,d)}else\nb+=f.slice(c,d);if(d==h)break;c=d}if(a<jp){b+=String.fromCharCode(0xc0|a>>6);b+=String.fromCharCode(aD|a&bq)}else\nif(a<0xd800||a>=iH)b+=String.fromCharCode(iI|a>>12,aD|a>>6&bq,aD|a&bq);else\nif(a>=0xdbff||c+1==h||(i=f.charCodeAt(c+1))<iC||i>iH)b+=\"\\xef\\xbf\\xbd\";else{c++;a=(a<<10)+i-0x35fdc00;b+=String.fromCharCode(jx|a>>18,aD|a>>12&bq,aD|a>>6&bq,aD|a&bq)}if(b.length>cJ){b.substr(0,1);g+=b;b=e}}return g+b}function\nzF(a){var\nb=9;if(!kd(a))b=8,a=Ay(a);return new\naW(b,a,a.length)}function\nai(a){return zF(a)}var\nAE=[\"E2BIG\",\"EACCES\",\"EAGAIN\",ft,\"EBUSY\",\"ECHILD\",\"EDEADLK\",\"EDOM\",iy,\"EFAULT\",\"EFBIG\",\"EINTR\",\"EINVAL\",\"EIO\",\"EISDIR\",\"EMFILE\",\"EMLINK\",\"ENAMETOOLONG\",\"ENFILE\",\"ENODEV\",fU,\"ENOEXEC\",\"ENOLCK\",\"ENOMEM\",\"ENOSPC\",\"ENOSYS\",fB,jl,\"ENOTTY\",\"ENXIO\",\"EPERM\",\"EPIPE\",\"ERANGE\",\"EROFS\",\"ESPIPE\",\"ESRCH\",\"EXDEV\",\"EWOULDBLOCK\",\"EINPROGRESS\",\"EALREADY\",\"ENOTSOCK\",\"EDESTADDRREQ\",\"EMSGSIZE\",\"EPROTOTYPE\",\"ENOPROTOOPT\",\"EPROTONOSUPPORT\",\"ESOCKTNOSUPPORT\",\"EOPNOTSUPP\",\"EPFNOSUPPORT\",\"EAFNOSUPPORT\",\"EADDRINUSE\",\"EADDRNOTAVAIL\",\"ENETDOWN\",\"ENETUNREACH\",\"ENETRESET\",\"ECONNABORTED\",\"ECONNRESET\",\"ENOBUFS\",\"EISCONN\",\"ENOTCONN\",\"ESHUTDOWN\",\"ETOOMANYREFS\",\"ETIMEDOUT\",\"ECONNREFUSED\",\"EHOSTDOWN\",\"EHOSTUNREACH\",\"ELOOP\",\"EOVERFLOW\"];function\nbx(d,g,f,a){var\nb=AE.indexOf(d);if(b<0){if(a==null)a=-9999;b=[0,a]}var\nc=[b,ai(g||e),ai(f||e)];return c}var\nj5={};function\nbP(a){return j5[a]}function\nbw(b,a){throw[0,b].concat(a)}function\nf_(a){if(!(a\ninstanceof\nUint8Array))a=new\nUint8Array(a);return new\naW(4,a,a.length)}function\nr(a){gn(aG.Sys_error,a)}function\nj_(a){r(a+dR)}function\nc$(a){if(a.t!=4)ek(a);return a.c}function\nax(a){return a.l}function\nzx(){}function\nab(a){this.data=a}ab.prototype=new\nzx();ab.prototype.constructor=ab;ab.prototype.truncate=function(a){var\nb=this.data;this.data=D(a|0);bc(b,0,this.data,0,a)};ab.prototype.length=function(){return ax(this.data)};ab.prototype.write=function(b,d,g,a){var\nc=this.length();if(b+a>=c){var\ne=D(b+a),f=this.data;this.data=e;bc(f,0,this.data,0,c)}bc(f_(d),g,this.data,b,a);return 0};ab.prototype.read=function(b,e,f,a){var\nc=this.length();if(b+a>=c)a=c-b;if(a){var\nd=D(a|0);bc(this.data,b,d,0,a);e.set(c$(d),f)}return a};function\nbJ(c,a,b){this.file=a;this.name=c;this.flags=b}bJ.prototype.err_closed=function(){r(this.name+ip)};bJ.prototype.length=function(){if(this.file)return this.file.length();this.err_closed()};bJ.prototype.write=function(c,a,d,b){if(this.file)return this.file.write(c,a,d,b);this.err_closed()};bJ.prototype.read=function(c,a,d,b){if(this.file)return this.file.read(c,a,d,b);this.err_closed()};bJ.prototype.close=function(){this.file=undefined};function\nU(b,a){this.content={};this.root=b;this.lookupFun=a}U.prototype.nm=function(a){return this.root+a};U.prototype.create_dir_if_needed=function(d){var\nc=d.split(aS),b=e;for(var\na=0;a<c.length-1;a++){b+=c[a]+aS;if(this.content[b])continue;this.content[b]=Symbol(\"directory\")}};U.prototype.slash=function(a){return/\\/$/.test(a)?a:a+aS};U.prototype.lookup=function(b){if(!this.content[b]&&this.lookupFun){var\nc=this.lookupFun(a(this.root),a(b));if(c!==0){this.create_dir_if_needed(b);this.content[b]=new\nab(au(c[1]))}}};U.prototype.exists=function(a){if(a==e)return 1;var\nb=this.slash(a);if(this.content[b])return 1;this.lookup(a);return this.content[a]?1:0};U.prototype.mkdir=function(c,f,d){var\nb=d&&bP(fO);if(this.exists(c))if(b)bw(b,bx(iy,fp,this.nm(c)));else\nr(c+\": File exists\");var\na=/^(.*)\\/[^/]+/.exec(c);a=a&&a[1]||e;if(!this.exists(a))if(b)bw(b,bx(fU,fp,this.nm(a)));else\nr(a+dR);if(!this.is_dir(a))if(b)bw(b,bx(fB,fp,this.nm(a)));else\nr(a+f0);this.create_dir_if_needed(this.slash(c))};U.prototype.rmdir=function(a,g){var\nb=g&&bP(fO),c=a==e?e:this.slash(a),f=new\nRegExp(iO+c+jm);if(!this.exists(a))if(b)bw(b,bx(fU,fN,this.nm(a)));else\nr(a+dR);if(!this.is_dir(a))if(b)bw(b,bx(fB,fN,this.nm(a)));else\nr(a+f0);for(var\nd\nin\nthis.content)if(d.match(f))if(b)bw(b,bx(jl,fN,this.nm(a)));else\nr(this.nm(a)+\": Directory not empty\");delete\nthis.content[c]};U.prototype.readdir=function(a){var\ng=a==e?e:this.slash(a);if(!this.exists(a))r(a+dR);if(!this.is_dir(a))r(a+f0);var\nh=new\nRegExp(iO+g+jm),d={},c=[];for(var\nf\nin\nthis.content){var\nb=f.match(h);if(b&&!d[b[1]]){d[b[1]]=true;c.push(b[1])}}return c};U.prototype.opendir=function(a,f){var\nb=f&&bP(fO),c=this.readdir(a),d=false,e=0;return{readSync:function(){if(d)if(b)bw(b,bx(ft,js,this.nm(a)));else\nr(a+jA);if(e==c.length)return null;var\nf=c[e];e++;return{name:f}},closeSync:function(){if(d)if(b)bw(b,bx(ft,js,this.nm(a)));else\nr(a+jA);d=true;c=[]}}};U.prototype.is_dir=function(a){if(a==e)return true;var\nb=this.slash(a);return this.content[b]?1:0};U.prototype.unlink=function(a){var\nb=this.content[a]?true:false;delete\nthis.content[a];return b};U.prototype.open=function(a,b){var\nc;if(b.rdonly&&b.wronly)r(this.nm(a)+fG);if(b.text&&b.binary)r(this.nm(a)+fQ);this.lookup(a);if(this.content[a]){if(this.is_dir(a))r(this.nm(a)+iL);if(b.create&&b.excl)r(this.nm(a)+fF);c=this.content[a];if(b.truncate)c.truncate()}else\nif(b.create){this.create_dir_if_needed(a);this.content[a]=new\nab(D(0));c=this.content[a]}else\nj_(this.nm(a));return new\nbJ(this.nm(a),c,b)};U.prototype.open=function(a,b){var\nc;if(b.rdonly&&b.wronly)r(this.nm(a)+fG);if(b.text&&b.binary)r(this.nm(a)+fQ);this.lookup(a);if(this.content[a]){if(this.is_dir(a))r(this.nm(a)+iL);if(b.create&&b.excl)r(this.nm(a)+fF);c=this.content[a];if(b.truncate)c.truncate()}else\nif(b.create){this.create_dir_if_needed(a);this.content[a]=new\nab(D(0));c=this.content[a]}else\nj_(this.nm(a));return new\nbJ(this.nm(a),c,b)};U.prototype.register=function(c,a){var\nb;if(this.content[c])r(this.nm(c)+fF);if(c8(a))b=new\nab(a);if(eo(a))b=new\nab(au(a));else\nif(a\ninstanceof\nArray)b=new\nab(f_(a));else\nif(typeof\na===\"string\")b=new\nab(jT(a));else\nif(a.toString){var\nd=au(ai(a.toString()));b=new\nab(d)}if(b){this.create_dir_if_needed(c);this.content[c]=b}else\nr(this.nm(c)+\" : registering file with invalid content type\")};U.prototype.constructor=U;function\njJ(){}function\njY(b){var\na=gq(b);if(!a)return;return a[0]+aS}var\neq=jY(c3)||av(\"unable to compute caml_root\"),cg=[];if(da())cg.push({path:eq,device:new\njJ(eq)});else\ncg.push({path:eq,device:new\nU(eq)});cg.push({path:jb,device:new\nU(jb)});function\nke(b){var\ng=Aa(b),b=g.join(aS),f=kb(b),c;for(var\ne=0;e<cg.length;e++){var\na=cg[e];if(f.search(a.path)==0&&(!c||c.path.length<a.path.length))c={path:a.path,device:a.device,rest:b.substring(a.path.length,b.length)}}if(!c&&da()){var\nd=jY(b);if(d&&d.match(/^[a-zA-Z]:\\/$/)){var\na={path:d,device:new\njJ(d)};cg.push(a);c={path:a.path,device:a.device,rest:b.substring(a.path.length,b.length)}}}if(c)return c;r(\"no device found for \"+f)}function\nzI(c,b){var\na=ke(c);if(!a.device.register)av(\"cannot register file\");a.device.register(a.rest,b);return 0}function\nkc(c,b){var\nc=a(c),b=a(b);return zI(c,b)}function\nzL(){var\nb=x.caml_fs_tmp;if(b)for(var\na=0;a<b.length;a++)kc(b[a].name,b[a].content);x.jsoo_create_file=kc;x.caml_fs_tmp=[];return 0}function\njX(){return[0]}function\nge(d,b){var\ne=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=Y(d,c)}c=0;switch(e&3){case\n3:c=b.charCodeAt(a+2)<<16;case\n2:c|=b.charCodeAt(a+1)<<8;case\n1:c|=b.charCodeAt(a);d=Y(d,c)}d^=e;return d}function\nzR(a,b){return ge(a,aw(b))}function\nzO(d,b){var\ne=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=Y(d,c)}c=0;switch(e&3){case\n3:c=b[a+2]<<16;case\n2:c|=b[a+1]<<8;case\n1:c|=b[a];d=Y(d,c)}d^=e;return d}function\nAd(a){switch(a.t&6){default:bM(a);case\n0:return a.c;case\n4:return a.c}}function\nzN(b,c){var\na=Ad(c);return typeof\na===\"string\"?ge(b,a):zO(b,a)}function\nzP(a){a^=a>>>16;a=ep(a,0x85ebca6b|0);a^=a>>>13;a=ep(a,0xc2b2ae35|0);a^=a>>>16;return a}function\nzM(j,l,n,m){var\nf,g,h,d,c,b,a,e,i;d=l;if(d<0||d>aK)d=aK;c=j;b=n;f=[m];g=0;h=1;while(g<h&&c>0){a=f[g++];if(a&&a.caml_custom){if(c4[a.caml_custom]&&c4[a.caml_custom].hash){var\nk=c4[a.caml_custom].hash(a);b=Y(b,k);c--}}else\nif(a\ninstanceof\nArray&&a[0]===(a[0]|0))switch(a[0]){case\n248:b=Y(b,a[2]);c--;break;case\n250:f[--g]=a[1];break;default:var\no=a.length-1<<10|a[0];b=Y(b,o);for(e=1,i=a.length;e<i;e++){if(h>=d)break;f[h++]=a[e]}break}else\nif(c8(a)){b=zN(b,a);c--}else\nif(eo(a)){b=zR(b,a);c--}else\nif(typeof\na===\"string\"){b=ge(b,a);c--}else\nif(a===(a|0)){b=Y(b,a+a+1);c--}else\nif(a===+a){b=gd(b,a);c--}}b=zP(b);return b&0x3FFFFFFF}function\nzS(a,c,l){if(!isFinite(a)){if(isNaN(a))return ai(fC);return ai(a>0?jz:\"-infinity\")}var\nj=a==0&&1/a==-Infinity?1:a>=0?0:1;if(j)a=-a;var\nd=0;if(a==0);else\nif(a<1)while(a<1&&d>-1022){a*=2;d--}else\nwhile(a>=2){a/=2;d++}var\nk=d<0?e:b4,f=e;if(j)f=br;else\nswitch(l){case\n43:f=b4;break;case\n32:f=ae;break;default:break}if(c>=0&&c<13){var\nh=Math.pow(2,c*4);a=Math.round(a*h)/h}var\nb=a.toString(16);if(c>=0){var\ni=b.indexOf(bu);if(i<0)b+=bu+cf(c,af);else{var\ng=i+1+c;if(b.length<g)b+=cf(g-b.length,af);else\nb=b.substr(0,g)}}return ai(f+ir+b+aT+k+d.toString(10))}function\nzZ(a){return+a.isZero()}function\nz2(a){return new\nm(a&a7,a>>24&a7,a>>31&aV)}function\nz3(a){return a.toInt()}function\nzY(a){return+a.isNeg()}function\nz1(a){return a.neg()}function\nzW(h,c){var\na=gm(h);if(a.signedconv&&zY(c)){a.sign=-1;c=z1(c)}var\nb=e,i=z2(a.base),g=\"0123456789abcdef\";do{var\nf=c.udivmod(i);c=f.quotient;b=g.charAt(z3(f.modulus))+b}while(!zZ(c));if(a.prec>=0){a.filler=ae;var\nd=a.prec-b.length;if(d>0)b=cf(d,af)+b}return gb(a,b)}function\nay(b,a){return bL(b,a)}function\nk(a){return ax(a)}function\nAm(c){var\na=0,e=k(c),b=10,d=1;if(e>0)switch(ay(c,a)){case\n45:a++;d=-1;break;case\n43:a++;d=1;break}if(a+1<e&&ay(c,a)==48)switch(ay(c,a+1)){case\n120:case\n88:b=16;a+=2;break;case\n111:case\n79:b=8;a+=2;break;case\n98:case\n66:b=2;a+=2;break;case\n117:case\n85:a+=2;break}return[a,d,b]}function\nj8(a){if(a>=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=122)return a-87;return-1}function\nc7(f){var\nh=Am(f),c=h[0],i=h[1],d=h[2],g=k(f),j=-1>>>0,e=c<g?ay(f,c):0,b=j8(e);if(b<0||b>=d)av(dX);var\na=b;for(c++;c<g;c++){e=ay(f,c);if(e==95)continue;b=j8(e);if(b<0||b>=d)break;a=d*a+b;if(a>j)av(dX)}if(c!=g)av(dX);a=i*a;if(d==10&&(a|0)!=a)av(dX);return a|0}function\nz6(){var\nb=console,c=[\"log\",\"debug\",\"info\",\"warn\",jD,\"assert\",bE,\"dirxml\",\"trace\",\"group\",\"groupCollapsed\",\"groupEnd\",\"time\",\"timeEnd\"];function\nd(){}for(var\na=0;a<c.length;a++)if(!b[c[a]])b[c[a]]=d;return b}function\nz7(c){var\nd=c.length,b=new\nArray(d+1);b[0]=0;for(var\na=0;a<d;a++)b[a+1]=c[a];return b}function\nz8(d){return function(){var\nb=arguments.length;if(b>0){var\nc=new\nArray(b);for(var\na=0;a<b;a++)c[a]=arguments[a];return aF(d,c)}else\nreturn aF(d,[undefined])}}function\nz9(d){return function(){var\nc=arguments.length,b=new\nArray(c+1);b[0]=this;for(var\na=0;a<c;a++)b[a+1]=arguments[a];return aF(d,b)}}function\nah(b){b=aw(b);var\nd=b.length/2,c=new\nArray(d);for(var\na=0;a<d;a++)c[a]=(b.charCodeAt(2*a)|b.charCodeAt(2*a+1)<<8)<<16>>16;return c}function\nz_(b,t,a){var\nn=2,o=3,r=5,d=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!b.lex_default){b.lex_base=ah(b[m]);b.lex_backtrk=ah(b[l]);b.lex_check=ah(b[p]);b.lex_trans=ah(b[s]);b.lex_default=ah(b[q])}var\ne,c=t,k=c$(a[n]);if(c>=0){a[h]=a[r]=a[d];a[g]=-1}else\nc=-c-1;for(;;){var\nf=b.lex_base[c];if(f<0)return-f-1;var\ni=b.lex_backtrk[c];if(i>=0){a[h]=a[d];a[g]=i}if(a[d]>=a[o])if(a[j]==0)return-c-1;else\ne=aK;else{e=k[a[d]];a[d]++}if(b.lex_check[f+e]==c)c=b.lex_trans[f+e];else\nc=b.lex_default[c];if(c<0){a[d]=a[h];if(a[g]==-1)av(im);else\nreturn a[g]}else\nif(e==aK)a[j]=0}}function\nbO(c){var\nb=0;for(var\na=c.length-1;a>=0;a--){var\nd=c[a];b=[0,d,b]}return b}function\naM(a,d){if(a<0)c2();var\na=a+1|0,b=new\nArray(a);b[0]=0;for(var\nc=1;c<a;c++)b[c]=d;return b}function\nzz(){var\na=new\nArrayBuffer(64),b=new\nUint32Array(a),c=new\nUint8Array(a);return{len:0,w:new\nUint32Array([0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476]),b32:b,b8:c}}var\nej=function(){function\nk(a,b){return a+b|0}function\na(d,a,c,f,b,e){a=k(k(a,d),k(f,e));return k(a<<b|a>>>32-b,c)}function\nf(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function\ng(d,b,e,c,h,f,g){return a(b&c|e&~c,d,b,h,f,g)}function\nh(c,b,d,e,h,f,g){return a(b^d^e,c,b,h,f,g)}function\ni(c,b,d,e,h,f,g){return a(d^(b|~e),c,b,h,f,g)}return function(j,e){var\na=j[0],b=j[1],c=j[2],d=j[3];a=f(a,b,c,d,e[0],7,0xD76AA478);d=f(d,a,b,c,e[1],12,0xE8C7B756);c=f(c,d,a,b,e[2],17,0x242070DB);b=f(b,c,d,a,e[3],22,0xC1BDCEEE);a=f(a,b,c,d,e[4],7,0xF57C0FAF);d=f(d,a,b,c,e[5],12,0x4787C62A);c=f(c,d,a,b,e[6],17,0xA8304613);b=f(b,c,d,a,e[7],22,0xFD469501);a=f(a,b,c,d,e[8],7,0x698098D8);d=f(d,a,b,c,e[9],12,0x8B44F7AF);c=f(c,d,a,b,e[10],17,0xFFFF5BB1);b=f(b,c,d,a,e[11],22,0x895CD7BE);a=f(a,b,c,d,e[12],7,0x6B901122);d=f(d,a,b,c,e[13],12,0xFD987193);c=f(c,d,a,b,e[14],17,0xA679438E);b=f(b,c,d,a,e[15],22,0x49B40821);a=g(a,b,c,d,e[1],5,0xF61E2562);d=g(d,a,b,c,e[6],9,0xC040B340);c=g(c,d,a,b,e[11],14,0x265E5A51);b=g(b,c,d,a,e[0],20,0xE9B6C7AA);a=g(a,b,c,d,e[5],5,0xD62F105D);d=g(d,a,b,c,e[10],9,0x02441453);c=g(c,d,a,b,e[15],14,0xD8A1E681);b=g(b,c,d,a,e[4],20,0xE7D3FBC8);a=g(a,b,c,d,e[9],5,0x21E1CDE6);d=g(d,a,b,c,e[14],9,0xC33707D6);c=g(c,d,a,b,e[3],14,0xF4D50D87);b=g(b,c,d,a,e[8],20,0x455A14ED);a=g(a,b,c,d,e[13],5,0xA9E3E905);d=g(d,a,b,c,e[2],9,0xFCEFA3F8);c=g(c,d,a,b,e[7],14,0x676F02D9);b=g(b,c,d,a,e[12],20,0x8D2A4C8A);a=h(a,b,c,d,e[5],4,0xFFFA3942);d=h(d,a,b,c,e[8],11,0x8771F681);c=h(c,d,a,b,e[11],16,0x6D9D6122);b=h(b,c,d,a,e[14],23,0xFDE5380C);a=h(a,b,c,d,e[1],4,0xA4BEEA44);d=h(d,a,b,c,e[4],11,0x4BDECFA9);c=h(c,d,a,b,e[7],16,0xF6BB4B60);b=h(b,c,d,a,e[10],23,0xBEBFBC70);a=h(a,b,c,d,e[13],4,0x289B7EC6);d=h(d,a,b,c,e[0],11,0xEAA127FA);c=h(c,d,a,b,e[3],16,0xD4EF3085);b=h(b,c,d,a,e[6],23,0x04881D05);a=h(a,b,c,d,e[9],4,0xD9D4D039);d=h(d,a,b,c,e[12],11,0xE6DB99E5);c=h(c,d,a,b,e[15],16,0x1FA27CF8);b=h(b,c,d,a,e[2],23,0xC4AC5665);a=i(a,b,c,d,e[0],6,0xF4292244);d=i(d,a,b,c,e[7],10,0x432AFF97);c=i(c,d,a,b,e[14],15,0xAB9423A7);b=i(b,c,d,a,e[5],21,0xFC93A039);a=i(a,b,c,d,e[12],6,0x655B59C3);d=i(d,a,b,c,e[3],10,0x8F0CCC92);c=i(c,d,a,b,e[10],15,0xFFEFF47D);b=i(b,c,d,a,e[1],21,0x85845DD1);a=i(a,b,c,d,e[8],6,0x6FA87E4F);d=i(d,a,b,c,e[15],10,0xFE2CE6E0);c=i(c,d,a,b,e[6],15,0xA3014314);b=i(b,c,d,a,e[13],21,0x4E0811A1);a=i(a,b,c,d,e[4],6,0xF7537E82);d=i(d,a,b,c,e[11],10,0xBD3AF235);c=i(c,d,a,b,e[2],15,0x2AD7D2BB);b=i(b,c,d,a,e[9],21,0xEB86D391);j[0]=k(a,j[0]);j[1]=k(b,j[1]);j[2]=k(c,j[2]);j[3]=k(d,j[3])}}();function\nzA(a,e,b){var\nd=a.len&bq,c=0;a.len+=b;if(d){var\nf=64-d;if(b<f){a.b8.set(e.subarray(0,b),d);return}a.b8.set(e.subarray(0,f),d);ej(a.w,a.b32);b-=f;c+=f}while(b>=64){a.b8.set(e.subarray(c,c+64),0);ej(a.w,a.b32);b-=64;c+=64}if(b)a.b8.set(e.subarray(c,c+b),0)}function\nzy(b){var\nc=b.len&bq;b.b8[c]=aD;c++;if(c>56){for(var\na=c;a<64;a++)b.b8[a]=0;ej(b.w,b.b32);for(var\na=0;a<56;a++)b.b8[a]=0}else\nfor(var\na=c;a<56;a++)b.b8[a]=0;b.b32[14]=b.len<<3;b.b32[15]=b.len>>29&0x1FFFFFFF;ej(b.w,b.b32);var\ne=new\nUint8Array(16);for(var\nd=0;d<4;d++)for(var\na=0;a<4;a++)e[d*4+a]=b.w[d]>>8*a&aC;return e}function\nAs(b){return a(c_(b,0,b.length))}function\nAb(e,c,b){var\na=zz(),d=c$(e);zA(a,d.subarray(c,c+b),b);return As(zy(a))}function\nAc(c,b,a){return Ab(au(c),b,a)}function\nAe(){return 0}var\nbf=new\nArray();function\naX(b){var\na=bf[b];if(!a.opened)r(\"Cannot flush a closed channel\");if(!a.buffer||a.buffer_curr==0)return 0;if(a.output)a.output(c_(a.buffer,0,a.buffer_curr));else\na.file.write(a.offset,a.buffer,0,a.buffer_curr);a.offset+=a.buffer_curr;a.buffer_curr=0;return 0}function\nAu(a,b){return null}var\ner=new\nArray(3);function\nc1(a,b){ab.call(this,D(0));this.log=function(a){return 0};if(a==1&&typeof\nconsole.log==\"function\")this.log=console.log;else\nif(a==2&&typeof\nconsole.error==\"function\")this.log=console.error;else\nif(typeof\nconsole.log==\"function\")this.log=console.log;this.flags=b}c1.prototype.length=function(){return 0};c1.prototype.write=function(e,c,b,a){if(this.log){if(a>0&&b>=0&&b+a<=c.length&&c[b+a-1]==10)a--;var\nd=D(a);bc(f_(c),b,d,0,a);this.log(d.toUtf16());return 0}r(this.fd+ip)};c1.prototype.read=function(c,a,d,b){r(this.fd+\": file descriptor is write only\")};c1.prototype.close=function(){this.log=undefined};function\nes(b,a){if(a==undefined)a=er.length;er[a]=b;return a}function\nAF(c,b,f){var\na={};while(b){switch(b[1]){case\n0:a.rdonly=1;break;case\n1:a.wronly=1;break;case\n2:a.append=1;break;case\n3:a.create=1;break;case\n4:a.truncate=1;break;case\n5:a.excl=1;break;case\n6:a.binary=1;break;case\n7:a.text=1;break;case\n8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)r(aw(c)+fG);if(a.text&&a.binary)r(aw(c)+fQ);var\nd=ke(c),e=d.device.open(d.rest,a);return es(e,undefined)}(function(){function\na(a,b){return da()?Au(a,b):new\nc1(a,b)}es(a(0,{rdonly:1,altname:\"/dev/stdin\",isCharacterDevice:true}),0);es(a(1,{buffered:2,wronly:1,isCharacterDevice:true}),1);es(a(2,{buffered:2,wronly:1,isCharacterDevice:true}),2)}());function\nAf(c){var\na=er[c];if(a.flags.wronly)r(jF+c+\" is writeonly\");var\nd=null,b={file:a,offset:a.flags.append?a.length():0,fd:c,opened:true,out:false,buffer_curr:0,buffer_max:0,buffer:new\nUint8Array(iJ),refill:d};bf[b.fd]=b;return b.fd}function\nj3(c){var\na=er[c];if(a.flags.rdonly)r(jF+c+\" is readonly\");var\nd=a.flags.buffered!==undefined?a.flags.buffered:1,b={file:a,offset:a.flags.append?a.length():0,fd:c,opened:true,out:true,buffer_curr:0,buffer:new\nUint8Array(iJ),buffered:d};bf[b.fd]=b;return b.fd}function\nAg(){var\nb=0;for(var\na=0;a<bf.length;a++)if(bf[a]&&bf[a].opened&&bf[a].out)b=[0,bf[a].fd,b];return b}function\nO(a){return a}function\nAh(c,b,f,g){var\na=bf[c];if(!a.opened)r(\"Cannot output to a closed channel\");var\nb=c$(b);b=b.subarray(f,f+g);if(a.buffer_curr+b.length>a.buffer.length){var\ne=new\nUint8Array(a.buffer_curr+b.length);e.set(a.buffer);a.buffer=e}switch(a.buffered){case\n0:a.buffer.set(b,a.buffer_curr);a.buffer_curr+=b.length;aX(c);break;case\n1:a.buffer.set(b,a.buffer_curr);a.buffer_curr+=b.length;if(a.buffer_curr>=a.buffer.length)aX(c);break;case\n2:var\nd=b.lastIndexOf(10);if(d<0){a.buffer.set(b,a.buffer_curr);a.buffer_curr+=b.length;if(a.buffer_curr>=a.buffer.length)aX(c)}else{a.buffer.set(b.subarray(0,d+1),a.buffer_curr);a.buffer_curr+=d+1;aX(c);a.buffer.set(b.subarray(d+1),a.buffer_curr);a.buffer_curr+=b.length-d-1}break}return 0}function\nj4(b,a,d,c){return Ah(b,au(a),d,c)}function\ngl(c,b){var\nd=a(String.fromCharCode(b));j4(c,d,0,1);return 0}function\nAi(b,a){if(a==0)go();return b%a}function\nz$(d,a,c,f){for(;;){var\nb=d.charCodeAt(a);a++;if(b==ag)return;var\ne=d.charCodeAt(a);a++;if(e==ag)c[b+1]=f;else\nc[b+1]=c[e+1]}}function\nj2(d,a,c){for(;;){var\nb=d.charCodeAt(a);a++;if(b==ag)return;var\ne=d.charCodeAt(a);a++;if(e==ag)c[b+1]=-1;else\nc[b+1]=c[e+1]}}function\nAk(a,D,b){var\nt=2,u=3,A=5,f=6,i=7,h=8,n=9,j=10,r=1,p=2,y=3,B=4,v=5,s=6,q=7,z=8,C=9,w=10,x=11;if(!a.lex_default){a.lex_base=ah(a[r]);a.lex_backtrk=ah(a[p]);a.lex_check=ah(a[v]);a.lex_trans=ah(a[B]);a.lex_default=ah(a[y])}if(!a.lex_default_code){a.lex_base_code=ah(a[s]);a.lex_backtrk_code=ah(a[q]);a.lex_check_code=ah(a[w]);a.lex_trans_code=ah(a[C]);a.lex_default_code=ah(a[z])}if(a.lex_code==null)a.lex_code=aw(a[x]);var\ne,c=D,o=c$(b[t]);if(c>=0){b[i]=b[A]=b[f];b[h]=-1}else\nc=-c-1;for(;;){var\ng=a.lex_base[c];if(g<0){var\nd=a.lex_base_code[c];j2(a.lex_code,d,b[j]);return-g-1}var\nl=a.lex_backtrk[c];if(l>=0){var\nd=a.lex_backtrk_code[c];j2(a.lex_code,d,b[j]);b[i]=b[f];b[h]=l}if(b[f]>=b[u])if(b[n]==0)return-c-1;else\ne=aK;else{e=o[b[f]];b[f]++}var\nk=c;if(a.lex_check[g+e]==c)c=a.lex_trans[g+e];else\nc=a.lex_default[c];if(c<0){b[f]=b[i];if(b[h]==-1)av(im);else\nreturn b[h]}else{var\nm=a.lex_base_code[k],d;if(a.lex_check_code[m+e]==k)d=a.lex_trans_code[m+e];else\nd=a.lex_default_code[k];if(d>0)z$(a.lex_code,d,b[j],b[f]);if(e==aK)b[n]=0}}}function\nbQ(a,b){return+(f$(a,b,false)!=0)}function\nj6(d,c){var\nb=new\nArray(c+1);b[0]=d;for(var\na=1;a<=c;a++)b[a]=0;return b}function\nAl(a,b){a[0]=bo;a[1]=b;return 0}function\nbg(a){if(a\ninstanceof\nArray&&a[0]==a[0]>>>0)return a[0];else\nif(c8(a))return eb;else\nif(eo(a))return eb;else\nif(a\ninstanceof\nFunction||typeof\na==\"function\")return 247;else\nif(a&&a.caml_custom)return b0;else\nreturn cG}function\naH(b,c,a){if(a&&x.toplevelReloc)b=x.toplevelReloc(a);aG[b+1]=c;if(a)aG[a]=c}function\ngp(a,b){j5[aw(a)]=b;return 0}function\nAp(a){a[2]=j7++;return a}function\nd(a,b){return jS(a,b)}function\nAr(){L(fY)}function\nB(b,a){if(a>>>0>=k(b))Ar();return ay(b,a)}function\ng(a,b){return 1-d(a,b)}function\nAt(){return 0x7FFFFFFF/4|0}function\nAn(){j9(aG.Not_found)}function\nka(c){var\nb=x.process,a=gk(c);if(b&&b.env&&b.env[a]!=undefined)return ai(b.env[a]);if(x.jsoo_static_env&&x.jsoo_static_env[a])return ai(x.jsoo_static_env[a]);An()}function\nAv(){if(x.crypto)if(typeof\nx.crypto.getRandomValues===\"function\"){var\na=new\nUint32Array(1);x.crypto.getRandomValues(a);return[0,a[0]]}else\nif(x.crypto.randomBytes===iG){var\nb=x.crypto.randomBytes(4),a=new\nUint32Array(b);return[0,a[0]]}var\nc=new\nDate().getTime(),d=c^0xffffffff*Math.random();return[0,d]}function\nbR(a){var\nb=1;while(a&&a.joo_tramp){a=a.joo_tramp.apply(null,a.joo_args);b++}return a}function\nn(b,a){return{joo_tramp:b,joo_args:a}}function\nj$(a){return a}function\nC(a){if(a\ninstanceof\nArray)return a;if(x.RangeError&&a\ninstanceof\nx.RangeError&&a.message&&a.message.match(/maximum call stack/i))return j$(aG.Stack_overflow);if(x.InternalError&&a\ninstanceof\nx.InternalError&&a.message&&a.message.match(/too much recursion/i))return j$(aG.Stack_overflow);if(a\ninstanceof\nx.Error&&bP(fy))return[0,bP(fy),a];return[0,aG.Failure,ai(String(a))]}function\nj1(a){return a.slice(1)}function\nAw(d){var\nc=k(d),b=new\nArray(c),a=0;for(;a<c;a++)b[a]=ay(d,a);return b}var\nAC=function(){var\nb=[an,an,an,an,an,an,aC,0x03,il,aC,aC,0x87,il,aC,aC,0x07,an,an,an,an,an,an,an,an,aC,aC,iS,aC,aC,aC,iS,aC],c={CHAR:0,CHARNORM:1,STRING:2,STRINGNORM:3,CHARCLASS:4,BOL:5,EOL:6,WORDBOUNDARY:7,BEGGROUP:8,ENDGROUP:9,REFGROUP:10,ACCEPT:11,SIMPLEOPT:12,SIMPLESTAR:13,SIMPLEPLUS:14,GOTO:15,PUSHBACK:16,SETMARK:17,CHECKPROGRESS:18};function\nr(a){return b[a>>3]>>(a&7)&1}function\no(b,a){return B(b,a>>3)>>(a&7)&1}function\na(m,b,a,B){var\nw=j1(m[1]),k=j1(m[2]),v=aw(m[3]),y=m[4]|0,z=m[5]|0,C=m[6]|0,b=Aw(b),l=0,x=false,t=[],i=new\nArray(y),q=new\nArray(z);for(var\nf=0;f<i.length;f++)i[f]={start:-1,end:-1};i[0].start=a;function\ne(){while(t.length){var\nb=t.pop();if(b.undo)b.undo.obj[b.undo.prop]=b.undo.value;else\nif(b.pos){l=b.pos.pc;a=b.pos.txt;return}}x=true}function\np(a){t.push(a)}function\nu(){i[0].end=a;var\nd=new\nArray(1+i.length*2);d[0]=0;for(var\nc=0;c<i.length;c++){var\nb=i[c];if(b.start<0||b.end<0)b.start=b.end=-1;d[2*c+1]=b.start;d[2*c+1+1]=b.end}return d}function\nj(){if(B)return u();else\ne()}while(!x){var\nA=w[l]&ag,s=w[l]>>8,d=s&ag,g=b[a],h;l++;switch(A){case\nc.CHAR:if(a===b.length){j();break}if(g===d)a++;else\ne();break;case\nc.CHARNORM:if(a===b.length){j();break}if(v.charCodeAt(g)===d)a++;else\ne();break;case\nc.STRING:for(var\nn=aw(k[d]),f=0;f<n.length;f++){if(a===b.length){j();break}if(g===n.charCodeAt(f))g=b[++a];else{e();break}}break;case\nc.STRINGNORM:for(var\nn=aw(k[d]),f=0;f<n.length;f++){if(a===b.length){j();break}if(v.charCodeAt(g)===n.charCodeAt(f))g=b[++a];else{e();break}}break;case\nc.CHARCLASS:if(a===b.length){j();break}if(o(k[d],g))a++;else\ne();break;case\nc.BOL:if(a>0&&b[a-1]!=10)e();break;case\nc.EOL:if(a<b.length&&b[a]!=10)e();break;case\nc.WORDBOUNDARY:if(a==0){if(a===b.length){j();break}if(r(b[0]))break;e()}else\nif(a===b.length){if(r(b[a-1]))break;e()}else{if(r(b[a-1])!=r(b[a]))break;e()}break;case\nc.BEGGROUP:h=i[d];p({undo:{obj:h,prop:cX,value:h.start}});h.start=a;break;case\nc.ENDGROUP:h=i[d];p({undo:{obj:h,prop:\"end\",value:h.end}});h.end=a;break;case\nc.REFGROUP:h=i[d];if(h.start<0||h.end<0){e();break}for(var\nf=h.start;f<h.end;f++){if(a===b.length){j();break}if(b[f]!=b[a]){e();break}a++}break;case\nc.SIMPLEOPT:if(o(k[d],g))a++;break;case\nc.SIMPLESTAR:while(o(k[d],g))g=b[++a];break;case\nc.SIMPLEPLUS:if(a===b.length){j();break}if(o(k[d],g))do\ng=b[++a];while(o(k[d],g));else\ne();break;case\nc.ACCEPT:return u();case\nc.GOTO:l=l+s;break;case\nc.PUSHBACK:p({pos:{pc:l+s,txt:a}});break;case\nc.SETMARK:p({undo:{obj:q,prop:d,value:q[d]}});q[d]=a;break;case\nc.CHECKPROGRESS:if(q[d]===a)e();break;default:throw new\nError(\"Invalid bytecode\")}}return 0}return a}();function\nAD(d,b,a){if(a<0||a>k(b))L(\"Str.search_forward\");while(a<=k(b)){var\nc=AC(d,b,a,0);if(c)return c;a++}return[0]}function\nz5(a){switch(a[2]){case-8:case-11:case-12:return 1;default:return 0}}function\nzK(b){var\na=e;if(b[0]==0){a+=b[1][1];if(b.length==3&&b[2][0]==0&&z5(b[1]))var\nf=b[2],g=1;else\nvar\ng=2,f=b;a+=\"(\";for(var\nd=g;d<f.length;d++){if(d>g)a+=cB;var\nc=f[d];if(typeof\nc==\"number\")a+=c.toString();else\nif(c\ninstanceof\naW)a+=bF+c.toString()+bF;else\nif(typeof\nc==\"string\")a+=bF+c.toString()+bF;else\na+=i4}a+=fD}else\nif(b[0]==A)a+=b[1];return a}function\njW(a){if(a\ninstanceof\nArray&&(a[0]==0||a[0]==A)){var\nc=bP(ix);if(c)c(a,false);else{var\nd=zK(a),b=bP(ik);if(b)b(0);console.error(fL+d+\"\\n\")}}else\nthrow a}function\nAq(){var\na=x.process;if(a&&a.on)a.on(\"uncaughtException\",function(b,c){jW(b);a.exit(2)});else\nif(x.addEventListener)x.addEventListener(jD,function(a){if(a.error)jW(a.error)})}Aq();function\nb(a,b){return a.length==1?a(b):aF(a,[b])}function\nf(a,b,c){return a.length==2?a(b,c):aF(a,[b,c])}function\naJ(a,b,c,d){return a.length==3?a(b,c,d):aF(a,[b,c,d])}function\nfl(a,b,c,d,e){return a.length==4?a(b,c,d,e):aF(a,[b,c,d,e])}function\ncz(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):aF(a,[b,c,d,e,f])}function\nzw(a,b,c,d,e,f,g,h){return a.length==7?a(b,c,d,e,f,g,h):aF(a,[b,c,d,e,f,g,h])}zL();var\neu=[A,a(jB),-1],gu=[A,a(iz),-2],db=[A,a(fw),-3],et=[A,a(i3),-4],p=[A,a(i_),-7],gs=[A,a(iM),-8],gt=[A,a(jc),-9],s=[A,a(jr),-11],gv=[A,a(ij),-12],di=[0,a(e),0,0,-1],gL=[0,a(e),1,0,0],zr=[4,0,0,0,[12,45,[4,0,0,0,0]]],eK=[0,[11,a('File \"'),[2,0,[11,a('\", line '),[4,0,0,0,[11,a(iR),[4,0,0,0,[12,45,[4,0,0,0,[11,a(ji),[2,0,0]]]]]]]]]],a('File \"%s\", line %d, characters %d-%d: %s')],a3=[0,a(\"\\0\\0\\x01\\0\\xf9\\xff\\0\\0A\\0\\xa3\\0\\xfd\\xff\\0\\0\\x01\\0\\xff\\xff\\xf1\\0 \\0\\x80\\0\\xfd\\xff\\x01\\0@\\x01\\x8e\\x01.\\x000\\0\\xfd\\xff\\x04\\0\\0\\0\\xff\\xff\\x7f\\0\\xa0\\0\\xfe\\xff\\xff\\xff\\xee\\0\\x0e\\x01\\xfd\\xff\\xfe\\xff\\x02\\0\\xff\\xff\\0\\x02\\xf7\\xffr\\x02\\xf9\\xff\\xfa\\xff\\xfb\\xff\\x84\\x02\\0\\0\\xf8\\x02\\xff\\xff\\xfe\\xff\\xfe\\x02\\xf9\\xff\\x04\\x03\\xfb\\xff\\xfc\\xff\\x02\\0\\n\\x03\\xff\\xff\\xfe\\xff\\x03\\0\\xff\\xffu\\0\\xff\\xff\"),a(\"\\xff\\xff\\x07\\0\\xff\\xff\\x05\\0\\xff\\xff\\x03\\0\\xff\\xff\\x01\\0\\xff\\xff\\xff\\xff\\x04\\0\\xff\\xff\\x03\\0\\xff\\xff\\x01\\0\\xff\\xff\\0\\0\\xff\\xff\\x03\\0\\xff\\xff\\x01\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x02\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x04\\0\\xff\\xff\\xff\\xff\\x03\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x07\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x03\\0\\x02\\0\\x07\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x05\\0\\xff\\xff\\xff\\xff\\x02\\0\\x05\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\"),a(\"\\x01\\0\\x01\\0\\0\\0\\xff\\xff\\xff\\xff\\xff\\xff\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\xff\\xff\\f\\0\\f\\0\\0\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x12\\0\\x12\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\x18\\0\\x18\\0\\0\\0\\0\\0\\x1c\\0\\x1c\\0\\0\\0\\0\\0\\xff\\xff\\0\\0#\\0\\0\\0#\\0\\0\\0\\0\\0\\0\\0#\\0\\xff\\xff#\\0\\0\\0\\0\\0.\\0\\0\\0.\\0\\0\\0\\0\\0\\xff\\xff.\\0\\0\\0\\0\\x005\\0\\0\\x007\\0\\0\\0\"),a(\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0(\\0(\\x001\\x001\\0(\\0\\0\\x001\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0(\\0\\x07\\x001\\0\\0\\0\\0\\x006\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\b\\0\\t\\0\\x04\\0\\x0f\\0\\x15\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x03\\0\\xff\\xff\\x16\\0\\x06\\0 \\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x14\\0\\x0e\\0\\xff\\xff\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\n\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\x008\\0\\0\\0\\0\\0\\0\\0\\n\\0\\0\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\xff\\xff\\x1a\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\x02\\0\\xff\\xff\\x05\\0\\xff\\xff\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\n\\0\\n\\0\\r\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\x1e\\0\\x1f\\0\\x13\\0\\0\\0\\xff\\xff\\0\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\n\\0\\0\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\x10\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x19\\0\\xff\\xff\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x10\\0\\xff\\xff\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\0\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x10\\0\\x1d\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0(\\0(\\0\\0\\0\\0\\0(\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0(\\0\\0\\0%\\0\\0\\0\\0\\0\\0\\0\\0\\0$\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0)\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0'\\0\\0\\0\\0\\0&\\0*\\0\\0\\0\\0\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0\\0\\0\\0\\0\\0\\0\\0\\0'\\0\\0\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff'\\0'\\0\\0\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0\\0\\0\\0\\0\\0\\0\\0\\0'\\0\\0\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0\\0\\0\\\"\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\xff\\xff\\0\\x001\\x001\\0\\0\\0\\0\\x001\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\xff\\xff\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\x001\\0\\xff\\xff0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff/\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\xff\\xff2\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\xff\\xff+\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x003\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x004\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0-\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\"),a(\"\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff(\\0(\\x001\\x001\\0(\\0\\xff\\xff1\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff(\\0\\x03\\x001\\0\\xff\\xff\\xff\\xff5\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x07\\0\\b\\0\\x03\\0\\x0e\\0\\x14\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x03\\0\\xff\\xff\\0\\0\\x01\\0\\x15\\0\\x03\\0\\x1f\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x11\\0\\x0b\\0\\x12\\0\\xff\\xff\\x03\\0\\xff\\xff\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x03\\0\\x04\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\x007\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x04\\0\\xff\\xff\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\x04\\0\\f\\0\\x17\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x05\\0\\x05\\0\\xff\\xff\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x18\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\xff\\xff\\xff\\xff\\0\\0\\x01\\0\\x05\\x005\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\n\\0\\n\\0\\x0b\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\x1b\\0\\x1b\\0\\x11\\0\\xff\\xff\\x12\\0\\xff\\xff\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\x1c\\0\\x1c\\0\\xff\\xff\\xff\\xff\\n\\0\\xff\\xff\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff7\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x0f\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x17\\0\\f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x0f\\0\\x18\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x10\\0\\x10\\0\\xff\\xff\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x10\\0\\x1b\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0!\\0!\\0\\xff\\xff\\xff\\xff!\\0\\x1c\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff!\\0\\xff\\xff!\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff!\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff!\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff!\\0\\xff\\xff\\xff\\xff!\\0!\\0\\xff\\xff\\xff\\xff!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff!\\0\\xff\\xff!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0#\\0#\\0\\xff\\xff\\xff\\xff#\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff'\\0'\\0\\xff\\xff\\xff\\xff'\\0#\\0\\xff\\xff#\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff#\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff'\\0\\xff\\xff'\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff'\\0\\xff\\xff\\xff\\xff\\xff\\xff#\\0#\\0'\\0'\\0\\xff\\xff'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0\\xff\\xff\\xff\\xff'\\0'\\0\\xff\\xff\\xff\\xff'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff'\\0\\xff\\xff'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0'\\0\\xff\\xff!\\0)\\0)\\0\\xff\\xff\\xff\\xff)\\0\\xff\\xff,\\0,\\0\\xff\\xff\\xff\\xff,\\0\\xff\\xff.\\0.\\0\\xff\\xff\\xff\\xff.\\0\\xff\\xff2\\x002\\0\\xff\\xff\\xff\\xff2\\0)\\0\\xff\\xff)\\0\\xff\\xff\\xff\\xff\\xff\\xff,\\0)\\0,\\0\\xff\\xff\\xff\\xff\\xff\\xff.\\0,\\0.\\0\\xff\\xff\\xff\\xff\\xff\\xff2\\0.\\x002\\0,\\0\\xff\\xff\\xff\\xff\\xff\\xff2\\0\\xff\\xff\\xff\\xff\\xff\\xff)\\0)\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff,\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff.\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff2\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff#\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff'\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff)\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff,\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff.\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff2\\0\"),a(e),a(e),a(e),a(e),a(e),a(e)],g9=bO([a(aT),a(b1),a(b2),a(dY),a(cV),a(b_),a(cR),a(ba),a(cb),a(b6),a(a$),a(bG),a(cC),a(cU),a(cE),a(cP),a(cA),a(cQ),a(cF),a(cO),a($),a(W),a(bE),a(d2)]),zs=[0,a(cZ),[0,a(d5),0]],zt=[0,a(bG),[0,a(cb),[0,a(ec),0]]],hL=bO([a(aT),a(b1),a(b2),a(dY),a(cV),a(b_),a(cR),a(ba),a(cb),a(b6),a(a$),a(bG),a(cC),a(cU),a(cE),a(cP),a(cA),a(cQ),a(cF),a(cO),a($),a(W),a(bE),a(d2)]),zu=[0,a(d5),0],zv=[0,a(bG),[0,a(cb),[0,a(ec),0]]],hP=a(\"o:spid\"),hQ=a(\"id\"),dI=[0,a(ii)];aH(11,gv,ij);aH(10,s,jr);aH(9,[A,a(iX),-10],iX);aH(8,gt,jc);aH(7,gs,iM);aH(6,p,i_);aH(5,[A,a(jk),-6],jk);aH(4,[A,a(iF),-5],iF);aH(3,et,i3);aH(2,db,fw);aH(1,gu,iz);aH(0,eu,jB);var\nkl=a(\"%.12g\"),kk=a(bu),kh=a(d8),ki=a(\"false\"),kf=a(\"Stdlib.Exit\"),km=a(\"CamlinternalLazy.Undefined\"),kq=a(\"\\\\\\\\\"),kr=a(\"\\\\'\"),ks=a(\"\\\\b\"),kt=a(\"\\\\t\"),ku=a(\"\\\\n\"),kv=a(\"\\\\r\"),kp=a(\"Char.chr\"),kz=a(\"nth\"),kA=a(\"List.nth\"),ky=a(\"tl\"),kE=a(\"String.blit / Bytes.blit_string\"),kD=a(\"Bytes.blit\"),kC=a(\"String.sub / Bytes.sub\"),kJ=a(\"String.contains_from / Bytes.contains_from\"),kH=a(e),kG=a(e),kF=a(\"String.concat\"),kM=a(\"Array.blit\"),kL=a(\"Array.sub\"),kR=a(\"Set.remove_min_elt\"),kS=[0,0,0,0],kT=[0,0,0],kU=[0,a(\"set.ml\"),570,18],kN=a(dP),kO=a(dP),kP=a(dP),kQ=a(dP),kZ=a(\"Map.remove_min_elt\"),k0=[0,0,0,0],k1=[0,a(\"map.ml\"),400,10],k2=[0,0,0],kV=a(d7),kW=a(d7),kX=a(d7),kY=a(d7),k3=a(\"Stdlib.Stack.Empty\"),k7=a(\"Buffer.add: cannot grow buffer\"),k6=[0,a(jh),93,2],k5=[0,a(jh),94,2],le=a(\"%c\"),lf=a(\"%s\"),lg=a(ih),lh=a(iK),li=a(i1),lj=a(io),lk=a(\"%f\"),ll=a(\"%B\"),lm=a(\"%{\"),ln=a(\"%}\"),lo=a(\"%(\"),lp=a(\"%)\"),lq=a(\"%a\"),lr=a(\"%t\"),ls=a(\"%?\"),lt=a(\"%r\"),lu=a(\"%_r\"),lv=[0,a(N),850,23],lG=[0,a(N),814,21],ly=[0,a(N),815,21],lH=[0,a(N),818,21],lz=[0,a(N),819,21],lI=[0,a(N),822,19],lA=[0,a(N),823,19],lJ=[0,a(N),826,22],lB=[0,a(N),827,22],lK=[0,a(N),831,30],lC=[0,a(N),832,30],lE=[0,a(N),836,26],lw=[0,a(N),837,26],lF=[0,a(N),846,28],lx=[0,a(N),847,28],lD=[0,a(N),851,23],mN=a(iV),mL=[0,a(N),1558,4],mM=a(\"Printf: bad conversion %[\"),mO=[0,a(N),1626,39],mP=[0,a(N),1649,31],mQ=[0,a(N),1650,31],mR=a(\"Printf: bad conversion %_\"),mS=a(iU),mT=a(i2),mU=a(iU),mV=a(i2),mJ=a(fC),mH=a(\"neg_infinity\"),mI=a(jz),mG=a(bu),mB=[0,iv],mp=a(\"%+nd\"),mq=a(\"% nd\"),ms=a(\"%+ni\"),mt=a(\"% ni\"),mu=a(\"%nx\"),mv=a(\"%#nx\"),mw=a(\"%nX\"),mx=a(\"%#nX\"),my=a(\"%no\"),mz=a(\"%#no\"),mo=a(\"%nd\"),mr=a(i1),mA=a(\"%nu\"),mc=a(\"%+ld\"),md=a(\"% ld\"),mf=a(\"%+li\"),mg=a(\"% li\"),mh=a(\"%lx\"),mi=a(\"%#lx\"),mj=a(\"%lX\"),mk=a(\"%#lX\"),ml=a(\"%lo\"),mm=a(\"%#lo\"),mb=a(\"%ld\"),me=a(iK),mn=a(\"%lu\"),l1=a(\"%+Ld\"),l2=a(\"% Ld\"),l4=a(\"%+Li\"),l5=a(\"% Li\"),l6=a(\"%Lx\"),l7=a(\"%#Lx\"),l8=a(\"%LX\"),l9=a(\"%#LX\"),l_=a(\"%Lo\"),l$=a(\"%#Lo\"),l0=a(\"%Ld\"),l3=a(io),ma=a(\"%Lu\"),lO=a(\"%+d\"),lP=a(\"% d\"),lR=a(\"%+i\"),lS=a(\"% i\"),lT=a(\"%x\"),lU=a(\"%#x\"),lV=a(\"%X\"),lW=a(\"%#X\"),lX=a(\"%o\"),lY=a(\"%#o\"),lN=a(fS),lQ=a(ih),lZ=a(iV),k8=a(\"@]\"),k9=a(\"@}\"),k_=a(\"@?\"),k$=a(\"@\\n\"),la=a(\"@.\"),lb=a(\"@@\"),lc=a(\"@%\"),ld=a(ee),lL=a(\"CamlinternalFormat.Type_mismatch\"),mZ=a(e),m0=[0,[11,a(cB),[2,0,[2,0,0]]],a(\", %s%s\")],nn=[0,[11,a(fL),[2,0,[12,10,0]]],a(jq)],no=[0,[11,a(\"Fatal error in uncaught exception handler: exception \"),[2,0,[12,10,0]]],a(\"Fatal error in uncaught exception handler: exception %s\\n\")],nm=a(\"Fatal error: out of memory in uncaught exception handler\"),nk=[0,[11,a(fL),[2,0,[12,10,0]]],a(jq)],ng=[0,[2,0,[12,10,0]],a(\"%s\\n\")],m_=a(\"Raised at\"),m$=a(\"Re-raised at\"),na=a(\"Raised by primitive operation at\"),nb=a(\"Called from\"),nc=a(\" (inlined)\"),ne=a(e),nd=[0,[2,0,[12,32,[2,0,[11,a(' in file \"'),[2,0,[12,34,[2,0,[11,a(\", line \"),[4,0,0,0,[11,a(iR),zr]]]]]]]]]],a('%s %s in file \"%s\"%s, line %d, characters %d-%d')],nf=[0,[2,0,[11,a(\" unknown location\"),0]],a(\"%s unknown location\")],m5=a(\"Out of memory\"),m6=a(\"Stack overflow\"),m7=a(\"Pattern matching failed\"),m8=a(\"Assertion failed\"),m9=a(\"Undefined recursive module\"),m1=[0,[12,40,[2,0,[2,0,[12,41,0]]]],a(\"(%s%s)\")],m2=a(e),m3=a(e),m4=[0,[12,40,[2,0,[12,41,0]]],a(\"(%s)\")],mY=[0,[4,0,0,0,0],a(fS)],mW=[0,[3,0,0],a(\"%S\")],mX=a(i4),nh=[0,a(e),a(\"(Cannot print locations:\\n bytecode executable program file not found)\"),a(\"(Cannot print locations:\\n bytecode executable program file appears to be corrupt)\"),a(\"(Cannot print locations:\\n bytecode executable program file has wrong magic number)\"),a(\"(Cannot print locations:\\n bytecode executable program file cannot be opened;\\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)\")],np=a(\"x\"),ns=a(\"Hashtbl: unsupported hash table format\"),zp=a(\"OCAMLRUNPARAM\"),zn=a(\"CAMLRUNPARAM\"),nq=a(e),nC=a(e),nH=a(e),nG=a(e),nE=a(e),nM=[2,a(fV)],nN=[2,a(fV)],pB=a(e),pC=a(e),p4=a(ae),p5=a('=\"'),p6=a(bF),p0=a(bb),p1=a(by),p2=a(fM),qa=a(\"<?\"),qb=a(X),qc=a(cW),qd=a(\"<!--\"),qe=a(X),qf=a(\"-->\"),qg=a(\"<!\"),qh=a(X),qi=a(cW),p3=a(fV),p7=a(\"/>\"),p8=a(cW),p9=a(cW),p_=a(jj),p$=a(cW),pZ=a(\"&quot;\"),qj=a(\"write\"),pP=a(e),pQ=a(jj),pR=a(X),pS=a(by),pT=a(X),pU=a(bb),pV=a(X),pW=a(fM),pX=a(e),pL=[0,0,0],pM=[0,0,1],pN=[0,0,0],pO=[0,0,1],pK=[0,a(\"netstring/code/src/netstring/nethtml.ml\"),356,27],pJ=a(e),pG=a(e),pH=[0,bA,fq],pI=[0,bA,fq],pF=a(e),pA=a(e),nO=a(\"Nethtml.End_of_scan\"),nP=a(\"Nethtml.Found\"),nQ=[0,[0,a(b$),[0,j,[0,l,[0,a(b$),[0,a(ed),[0,a(b_),0]]]]]],[0,[0,a(ed),[0,j,v]],0]],nR=bO([l,a(a_),a(cc),a(b8),a(ap),a(aE),a(bp),a(bC),a(bs),a(a9),a(b$)]),nS=a(cS),nT=[0,a(aE),[0,j,ca]],nU=[0,a(bp),[0,j,v]],nV=[0,a(b8),[0,j,v]],nW=[0,a(cc),[0,j,[0,l,0]]],nX=[0,a(a_),[0,j,[0,l,[0,a(cc),[0,a(b8),[0,a(ap),[0,a(aE),[0,a(bp),[0,a(bC),[0,a(bs),0]]]]]]]]]],nY=[0,a(bI),[0,j,i]],nZ=[0,a(c0),[0,j,i]],n0=[0,a(at),[0,j,[0,l,[0,a(c0),[0,a(bI),0]]]]],n1=[0,a(bt),[0,j,v]],n2=[0,a(d_),[0,j,[0,l,[0,a(bt),0]]]],n3=[0,a(cN),[0,j,[0,l,[0,a(at),0]]]],n4=[0,a(cH),[0,j,[0,l,[0,a(at),0]]]],n5=[0,a(cD),[0,j,[0,l,[0,a(at),0]]]],n6=[0,a(ei),[0,j,c]],n7=[0,a(d1),[0,j,c]],n8=[0,a(b7),[0,j,[0,l,0]]],n9=[0,a(d$),[0,j,[0,l,[0,a(b7),0]]]],n_=[0,a(aa),[0,j,i]],n$=[0,a(cM),[0,j,i]],oa=[0,a(dW),[0,j,c]],ob=[0,a(fI),[0,bA,i]],oc=[0,a(fn),[0,bA,i]],od=[0,a(b3),[0,j,v]],oe=[0,a(bC),[0,j,v]],of=[0,a(dT),[0,j,v]],oh=[0,l,[0,a(ap),0]],oi=a(a9),oj=[0,a(cb),[0,o,v]],ok=[0,a(b_),[0,o,i]],ol=[0,a(dY),[0,o,i]],om=[0,a(cC),[0,o,c]],oo=[0,l,[0,a(d1),0]],op=a(bG),oq=[0,a(a$),[0,o,[0,l,[0,a(ei),[0,a(bt),[0,a(d_),[0,a(cD),[0,a(cN),[0,a(cH),[0,a(at),0]]]]]]]]]],or=[0,a(b6),[0,o,v]],ot=[0,l,[0,a(ap),0]],ou=[0,a(ba),0],ov=a(ba),ox=[0,l,[0,a(ap),0]],oy=a(cR),oz=[0,a(cV),[0,o,i]],oA=[0,a(b2),[0,o,i]],oB=[0,a(b1),[0,o,[0,l,[0,a(dW),[0,a(cM),0]]]]],oC=[0,a(cO),[0,o,[0,R,[0,[0,a(aU),[0,a(bs),[0,a(d0),[0,a(eg),[0,a(d3),[0,a(cT),[0,a(cL),zs]]]]]]],c]]]],oD=[0,l,[0,a(aa),0]],oE=a(d2),oF=[0,l,[0,a(aa),0]],oG=a(bE),oH=[0,a(W),[0,o,[0,l,[0,a(aa),0]]]],oI=[0,a($),[0,o,[0,l,[0,a(aa),0]]]],oJ=[0,a(cF),[0,o,c]],oK=[0,a(cQ),[0,o,c]],oL=[0,a(cA),[0,o,c]],oM=[0,a(cP),[0,o,c]],oN=[0,a(cE),[0,o,c]],oO=[0,a(cU),[0,o,c]],oP=[0,a(aT),[0,o,c]],oQ=[0,a(eh),[0,c,[0,R,[0,[0,a(bB),[0,a(dS),[0,a(d6),[0,a(dO),[0,a(b5),[0,a(eh),[0,a(ba),zt]]]]]]],i]]]],oR=[0,a(b5),[0,c,[0,R,[0,[0,a(b5),0],c]]]],oS=[0,a(dO),[0,c,[0,l,0]]],oT=[0,a(d6),[0,c,[0,l,[0,a(d$),[0,a(b7),0]]]]],oU=[0,a(dS),[0,c,v]],oV=[0,a(ec),[0,c,i]],oW=[0,a(d5),[0,c,v]],oX=[0,a(cZ),[0,c,c]],oZ=[0,l,[0,a(b3),0]],o0=a(d0),o1=[0,a(jI),[0,c,c]],o3=[0,l,[0,a(dT),0]],o4=a(ju),o5=[0,a(ap),[0,c,ca]],o7=[0,l,[0,a(b3),0]],o8=a(bs),o9=[0,a(aU),[0,c,v]],o_=[0,a(bB),[0,c,[0,R,[0,[0,a(bB),0],c]]]],o$=[0,a(jf),[0,c,v]],pa=[0,a(iq),[0,c,c]],pb=[0,a(bz),[0,c,c]],pc=[0,a(cT),[0,c,c]],pd=[0,a(cL),[0,c,c]],pe=[0,a(fJ),[0,c,c]],pf=[0,a(iY),[0,c,c]],pg=[0,a(fs),[0,c,c]],ph=[0,a(f5),[0,c,c]],pi=[0,a(fr),[0,c,c]],pj=[0,a(f7),[0,c,c]],pk=[0,a(fv),[0,c,c]],pl=[0,a(fu),[0,c,c]],pm=[0,a(fE),[0,c,c]],pn=[0,a(f3),[0,c,c]],po=[0,a(iZ),[0,c,c]],pp=[0,a(dZ),[0,c,c]],pq=[0,a(dV),[0,c,c]],pr=[0,a(d3),[0,c,c]],ps=[0,a(eg),[0,c,c]],pt=[0,a(fZ),[0,c,c]],pu=[0,a(f8),[0,c,c]],pv=[0,a(fX),[0,c,c]],py=[0,a(a9),[0,a(a$),[0,a(W),[0,a($),[0,a(b1),0]]]]],qz=a(e),qA=a(e),qD=a(\"too many r* or r+ where r is nullable\"),qE=a(e),qB=[0,a(\"str.ml\"),214,11],qI=[0,0,0],qM=a(e),qL=a(e),qK=a(e),qJ=a(e),qS=a(ae),qQ=a(\"' is invalid\"),qR=a(\"document list level '\"),qN=a(\"\\xef\\x82\\xb7\"),qO=a(\"\\xef\\x82\\xa7\"),qP=a(\"o\"),q0=a(\"excel\"),qZ=a(cS),q3=[0,a(\"src/main/re/html/htmlStd.re\"),144,9],qT=a(X),qU=a(fH),qV=bO([a(cC),a(\"article\"),a(\"aside\"),a(\"audio\"),a(cR),a(\"canvas\"),a(cM),a(b2),a(b1),a(bG),a(\"figcaption\"),a(\"figure\"),a(\"footer\"),a(ba),a(cU),a(cE),a(cP),a(cA),a(cQ),a(cF),a(\"header\"),a(\"hgroup\"),a(b6),a(aa),a(cV),a(W),a(\"output\"),a(aT),a(cO),a(\"section\"),a(a$),a(cH),a(bI),a(cN),a(c0),a(cD),a(at),a($),a(\"video\")]),qW=[0,a(a9),[0,a(a_),[0,a(cS),[0,a(bC),[0,a(bp),[0,a(aE),[0,a(fo),0]]]]]]],q1=[0,a(e)],re=a(aT),rc=a(jo),rb=a(i0),rd=[0,a(jo)],q$=a(i0),q9=a(aU),q5=a(iN),q6=a(iN),q7=a(\"file:\"),q8=a(\"data-image-src\"),rQ=a(ae),rP=a(dU),rM=a(\":level\"),rK=a(ae),rD=a(fx),rE=a(f4),rF=a(fx),rG=a(f4),rH=a(ee),rI=a(fx),rJ=a(f4),rL=a(e),rN=a(e),rO=a(\"@list \"),rB=a(cB),rz=[0,a(\"\\n  \")],rA=a(\"  \"),ry=a(e),rw=a(\"color\"),rx=a(ae),rt=a('\"\"'),ru=a(\";\"),rv=a(bD),rj=a(ea),rk=a(e),rl=a(bb),rm=a(ae),rn=a(e),ri=[0,a(e),0],ro=a(e),rp=a(cB),rg=a(bF),rh=a(bF),rq=[0,a(\"font-family\"),0],r4=a(\"Internal failure -- please contact the parser generator's developers.\\n%!\"),r5=[0,a(\"src/main/re/css_parser.ml\"),494,4],r3=a(ea),r2=a(bD),r1=a(ee),r0=a(ea),rZ=a(bD),rY=a(ee),rV=a(\"list\"),rX=a(bD),rW=a(e),rT=a(ea),rU=a(e),rS=[0,a(e),0],rR=a(\"Css_parser.MenhirBasics.Error\"),sa=a(fD),sb=a(\"' (\"),sc=a(\"Unexpected char: '\"),r9=a(\"Css_lexer.SyntaxError\"),r_=[0,a('\\0\\0\\xeb\\xff\\x14\\0\\x03\\0\\x01\\0\\xd7\\0\\x0e\\0H\\x01\\x9d\\0\\xf1\\xff\\x03\\0\\x06\\0\\x11\\0u\\x01\\xe8\\x01B\\x02\\x9c\\x02\\xf6\\x02\\x02\\0\\x1e\\0\\xf7\\xff\\xf8\\xff\\xf9\\xff\\xfa\\xff\\xfb\\xff\\xfc\\xff\\b\\0\\x01\\0\\xfe\\xff\\xff\\xff\\xf6\\xff\\xf5\\xff\\x12\\0P\\x03\\xaa\\x03|\\0\\xf4\\xff\\x04\\x04^\\x04\\xc8\\x01\\x90\\x04\\x13\\0\\xbd\\x04\\xed\\xff0\\x05\\x15\\0\\x16\\0\\x17\\0\\xf0\\xff2\\x052\\x001\\x054\\0\\x0b\\0\\x12\\0\\x0e\\0\"\\0\\xa1\\x05\\xa2\\x055\\0\\xa3\\x05\\xa7\\x05\\xa8\\x05\\xa9\\x05\\xad\\x051\\x003\\0\\xee\\xffY\\0Z\\0\\xec\\xff\\\\\\0]\\0'),a(\"\\xff\\xff\\xff\\xff\\x14\\0\\x14\\0\\x14\\0\\x10\\0\\x14\\0\\x14\\0\\x14\\0\\xff\\xff\\x14\\0\\x14\\0\\x14\\0\\x10\\0\\r\\0\\x10\\0\\x10\\0\\x10\\0\\x14\\0\\x14\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x02\\0\\x01\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x10\\0\\x10\\0\\xff\\xff\\xff\\xff\\x10\\0\\x10\\0\\xff\\xff\\f\\0\\xff\\xff\\x10\\0\\xff\\xff\\r\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x0f\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\"),a(\"\\x01\\0\\0\\0\\xff\\xff\\xff\\xff\\x05\\0\\xff\\xff\\xff\\xff3\\x001\\0\\0\\0.\\0-\\0\\t\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\xff\\xff\\xff\\xff\\xff\\xff\\0\\0\\xff\\xff\\xff\\xff'\\0'\\0'\\0\\xff\\xff\\0\\0\\xff\\xff\\t\\0/\\0\\t\\0\\0\\x001\\x001\\x003\\x003\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff9\\x009\\x009\\x009\\x009\\x009\\x009\\x009\\0\\xff\\xff\\xff\\xff\\0\\0D\\0G\\0\\0\\0G\\0G\\0\"),a(\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x1a\\0\\x1c\\0\\x1c\\0\\0\\0\\x1b\\0\\0\\0\\0\\0\\0\\0\\x1a\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x1a\\0\\x05\\0\\b\\0\\x05\\0A\\0\\x05\\0\\x06\\0\\x07\\0\\x1a\\0\\0\\0\\t\\0\\x05\\0\\x19\\0\\x0f\\0\\r\\0\\x02\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x15\\0\\x16\\0\\x03\\0\\x05\\0D\\0\\x1f\\0\\x14\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x1e\\0\\x04\\x009\\0B\\0\\x05\\0C\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x11\\0\\x05\\0\\x05\\0\\x10\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x18\\0\\x12\\0\\x17\\0\\x13\\x005\\x006\\x007\\x008\\0E\\0E\\0#\\0H\\0H\\0\\0\\0F\\0\\0\\0\\0\\0F\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0#\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0$\\0\\0\\0\\xff\\xff#\\0\\0\\0\\xff\\xff\\0\\0#\\0#\\0#\\0#\\0#\\0#\\0#\\0#\\0#\\0#\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x000\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\f\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\x0b\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\n\\0\\x05\\x002\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x1d\\0\\xff\\xff\\x05\\0\\xff\\xff\\x05\\0\\x05\\0\\xff\\xff\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x05\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\xff\\xff \\0\\xff\\xff\\xff\\xff\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\xff\\xff\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x000\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\x004\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\0\\xff\\xff\\0\\0\\x05\\0\\xff\\xff\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0(\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\r\\0\\0\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\0\\0\\0\\0)\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\0\\0\\0\\0\\0\\x05\\0\\xff\\xff\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0*\\0\\r\\0\\0\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\xff\\xff\\x05\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0%\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0!\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\\"\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0#\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0&\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0'\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\xff\\xff\\x05\\0\\0\\0\\xff\\xff\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0(\\0 \\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0)\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0+\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\x000\\0\\x05\\0\\0\\0\\0\\x000\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\x05\\0\\x05\\0\\0\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\0\\0 \\x004\\x002\\0\\x05\\0\\xff\\xff\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0:\\0:\\0:\\0\\0\\0\\0\\0\\0\\0:\\0:\\0:\\0\\0\\0\\0\\0\\0\\0:\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0@\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0;\\0;\\0;\\0\\0\\0\\0\\0\\0\\0;\\0;\\0;\\0\\0\\0\\0\\0\\0\\0;\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0<\\0\\0\\0\\0\\0>\\0\\0\\0=\\0\\0\\0\\0\\0\\0\\0?\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\0\\0\\xff\\xff\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\0\\0\\xff\\xff\"),a('\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\x1b\\0\\xff\\xff\\0\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x1a\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\x03\\0\\0\\0\\0\\0\\0\\0\\x1a\\0\\xff\\xff\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x02\\0\\x12\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x13\\0\\0\\x008\\0A\\0\\0\\0B\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x06\\x005\\x006\\x007\\0D\\0E\\0#\\0G\\0H\\0\\xff\\xffE\\0\\xff\\xff\\xff\\xffH\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff#\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff#\\0\\xff\\xff\\b\\0#\\0\\xff\\xff\\b\\0\\xff\\xff#\\0#\\0#\\0#\\0#\\0#\\0#\\0#\\0#\\0#\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\b\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x05\\0\\b\\0\\x05\\0\\xff\\xff\\x05\\0\\xff\\xff\\xff\\xff\\xff\\xff\\0\\0\\x04\\0\\x05\\0\\n\\0\\x05\\0\\x05\\0\\x0b\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\f\\0 \\0)\\0\\x05\\0-\\0.\\0/\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\x002\\0\\x05\\x004\\0;\\0\\x05\\0\\xff\\xff\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x05\\0\\x07\\0\\xff\\xff\\xff\\xff\\x07\\0\\xff\\xff\\xff\\xff\\xff\\xffD\\0E\\0\\xff\\xffG\\0H\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x07\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\r\\0\\xff\\xff\\r\\0\\xff\\xff\\r\\0\\xff\\xff\\xff\\xff\\b\\0\\xff\\xff\\xff\\xff\\r\\0\\xff\\xff\\r\\0\\r\\0\\x07\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\xff\\xff\\xff\\xff\\xff\\xff\\r\\0\\xff\\xff\\xff\\xff\\xff\\xff\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\xff\\xff\\r\\0\\'\\0\\xff\\xff\\r\\0\\'\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\r\\0\\xff\\xff\\'\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x0e\\0\\xff\\xff\\x0e\\0\\xff\\xff\\x0e\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x0e\\0\\xff\\xff\\x0e\\0\\x0e\\0\\xff\\xff\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\xff\\xff\\xff\\xff\\'\\0\\x0e\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\xff\\xff\\x0e\\0\\xff\\xff\\xff\\xff\\x0e\\0\\x07\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0e\\0\\x0f\\0\\xff\\xff\\x0f\\0\\xff\\xff\\x0f\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x0f\\0\\xff\\xff\\x0f\\0\\x0f\\0\\xff\\xff\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x0f\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\xff\\xff\\x0f\\0\\xff\\xff\\xff\\xff\\x0f\\0\\xff\\xff\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x0f\\0\\x10\\0\\xff\\xff\\x10\\0\\xff\\xff\\x10\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x10\\0\\'\\0\\x10\\0\\x10\\0\\xff\\xff\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x10\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\xff\\xff\\x10\\0\\xff\\xff\\xff\\xff\\x10\\0\\xff\\xff\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x10\\0\\x11\\0\\xff\\xff\\x11\\0\\xff\\xff\\x11\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x11\\0\\xff\\xff\\x11\\0\\x11\\0\\xff\\xff\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x11\\0\\xff\\xff\\xff\\xff\\xff\\xff\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\xff\\xff\\x11\\0\\xff\\xff\\xff\\xff\\x11\\0\\xff\\xff\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0\\x11\\0!\\0\\xff\\xff!\\0\\xff\\xff!\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff!\\0\\xff\\xff!\\0!\\0\\xff\\xff!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0\\xff\\xff\\xff\\xff\\xff\\xff!\\0\\xff\\xff\\xff\\xff\\xff\\xff!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0\\xff\\xff!\\0\\xff\\xff\\xff\\xff!\\0\\xff\\xff!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0!\\0\"\\0\\xff\\xff\"\\0\\xff\\xff\"\\0\\xff\\xff\\xff\\xff\"\\0\\xff\\xff\\xff\\xff\"\\0\\xff\\xff\"\\0\"\\0\\xff\\xff\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\\xff\\xff\\xff\\xff\\xff\\xff\"\\0\\xff\\xff\\xff\\xff\\xff\\xff\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\\xff\\xff\"\\0\\xff\\xff\\xff\\xff\"\\0\\xff\\xff\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0\"\\0%\\0\\xff\\xff%\\0\\xff\\xff%\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff%\\0\\xff\\xff%\\0%\\0\\xff\\xff%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0\\xff\\xff\\xff\\xff\\xff\\xff%\\0\\xff\\xff\\xff\\xff\\xff\\xff%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0\\xff\\xff%\\0\\xff\\xff\\xff\\xff%\\0\\xff\\xff%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0%\\0&\\0\\xff\\xff&\\0\\xff\\xff&\\0\\xff\\xff\\xff\\xff&\\0\\xff\\xff\\xff\\xff&\\0\\xff\\xff&\\0&\\0\\xff\\xff&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0\\xff\\xff\\xff\\xff(\\0&\\0\\xff\\xff(\\0\\xff\\xff&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0(\\0&\\0\\xff\\xff\\xff\\xff&\\0\\xff\\xff&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0&\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff*\\0\\xff\\xff*\\0\\xff\\xff*\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff*\\0\\xff\\xff*\\0*\\0(\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0\\xff\\xff\\xff\\xff\\xff\\xff*\\0*\\0\\xff\\xff\\xff\\xff*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0\\xff\\xff*\\0\\xff\\xff\\xff\\xff*\\0\\xff\\xff*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0*\\0\\xff\\xff\\xff\\xff\\xff\\xff3\\x001\\0\\xff\\xff3\\x001\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff,\\0\\xff\\xff,\\x001\\0,\\0\\xff\\xff\\xff\\xff3\\0\\xff\\xff\\xff\\xff,\\0\\xff\\xff,\\0,\\0\\xff\\xff,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0\\xff\\xff\\xff\\xff\\xff\\xff,\\0\\xff\\xff\\xff\\xff\\xff\\xff,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0\\xff\\xff,\\x003\\x001\\0,\\0(\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\0,\\x009\\0:\\0<\\x009\\0:\\0<\\0=\\0>\\0?\\0=\\0>\\0?\\0@\\0\\xff\\xff\\xff\\xff@\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff9\\0:\\0<\\0\\xff\\xff\\xff\\xff\\xff\\xff=\\0>\\0?\\0\\xff\\xff\\xff\\xff\\xff\\xff@\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff?\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff9\\0:\\0<\\0\\xff\\xff\\xff\\xff\\xff\\xff=\\0>\\0?\\0\\xff\\xff\\xff\\xff\\xff\\xff@\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff:\\0\\xff\\xff\\xff\\xff=\\0\\xff\\xff<\\0\\xff\\xff\\xff\\xff\\xff\\xff>\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff3\\x001\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff9\\0:\\0<\\0\\xff\\xff\\xff\\xff\\xff\\xff=\\0>\\0?\\0\\xff\\xff\\xff\\xff\\xff\\xff@\\0'),a(\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x01\\0\\x02\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\t\\0\\x03\\0\\0\\0\\x07\\0\\x04\\0\\0\\0\\0\\0\\0\\0\\0\\0\\t\\0\\x0b\\0\\x05\\0\\r\\0\\x0f\\0\\x11\\0\\x13\\0\\x19\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\"),a(\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\t\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\"),a(\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x06\\0\\x06\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x06\\0\\x06\\0\\x06\\0\\x06\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x06\\0\\x06\\0\\x06\\0\\x06\\0\\x06\\0\\x06\\0\\x06\\0\\x06\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\"),a(\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x01\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x01\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x0e\\0\\0\\0\\x11\\0\\0\\0\\x11\\0\\0\\0\\x11\\0\\0\\0\\x11\\0\\0\\0\\x11\\0\\0\\0\\x01\\0\\0\\0\\0\\0\\0\\0\\x11\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x0e\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x0e\\0\\0\\0\\x0e\\0\\0\\0\\0\\0\\0\\0\\x0e\\0\\0\\0\\0\\0\\x0e\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\"),a(\"\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x07\\0\\b\\x001\\0\\x07\\0\\b\\x001\\x003\\0\\xff\\xff9\\x003\\0:\\x009\\0<\\0:\\0=\\0<\\0>\\0=\\0?\\0>\\0\\xff\\xff?\\0\\xff\\xff\\0\\0@\\0\\b\\x001\\0@\\0\\0\\0\\x07\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff3\\x009\\0\\xff\\xff:\\0\\xff\\xff<\\0\\xff\\xff=\\0\\xff\\xff>\\0\\xff\\xff?\\0\\xff\\xff8\\0\\xff\\xff\\xff\\xff\\xff\\xff@\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff?\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x07\\0\\b\\x001\\0\\xff\\xff\\xff\\xff\\xff\\xff3\\0\\xff\\xff9\\0\\xff\\xff:\\0\\xff\\xff<\\0\\xff\\xff=\\0\\xff\\xff>\\0\\xff\\xff?\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff@\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff:\\0\\xff\\xff=\\0\\xff\\xff\\xff\\xff\\xff\\xff<\\0\\xff\\xff\\xff\\xff>\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff2\\0\\x07\\0\\b\\x001\\x004\\0;\\0\\xff\\xff3\\0\\xff\\xff9\\0\\xff\\xff:\\0\\xff\\xff<\\0\\xff\\xff=\\0\\xff\\xff>\\0\\xff\\xff?\\0\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff@\\0\"),a(\"\\xff\\x03\\xff\\x02\\xff\\xff\\x03\\xff\\xff\\x01\\x02\\0\\x03\\xff\\x04\\xff\\xff\\x03\\x04\\x04\\xff\\xff\")],sh=a(aE),sf=a(ji),sg=a(\": syntax error parsing:\"),sd=a(br),se=a(bD),si=a(a9),sj=a(aE),sx=a(e),sr=a(jg),ss=a(\"='\"),sk=a(jg),sl=a(\"Data '\"),sm=a(dU),sn=a(fD),so=a(dU),sp=a(e),sq=a(\"]\"),st=a(cB),su=a(\", [\"),sv=a(\"Element (\"),sw=a(dU),sy=[0,[0,a(b$),[0,j,[0,l,[0,a(b$),[0,a(ed),[0,a(b_),0]]]]]],[0,[0,a(ed),[0,j,v]],0]],sz=bO([l,a(a_),a(cc),a(b8),a(ap),a(aE),a(bp),a(bC),a(bs),a(a9),a(b$)]),sA=a(cS),sB=[0,a(aE),[0,j,ca]],sC=[0,a(bp),[0,j,v]],sD=[0,a(b8),[0,j,v]],sE=[0,a(cc),[0,j,[0,l,0]]],sF=[0,a(a_),[0,j,[0,l,[0,a(cc),[0,a(b8),[0,a(ap),[0,a(aE),[0,a(bp),[0,a(bC),[0,a(bs),0]]]]]]]]]],sG=[0,a(bI),[0,j,i]],sH=[0,a(c0),[0,j,i]],sI=[0,a(at),[0,j,[0,l,[0,a(c0),[0,a(bI),0]]]]],sJ=[0,a(bt),[0,j,v]],sK=[0,a(d_),[0,j,[0,l,[0,a(bt),0]]]],sL=[0,a(cN),[0,j,[0,l,[0,a(at),0]]]],sM=[0,a(cH),[0,j,[0,l,[0,a(at),0]]]],sN=[0,a(cD),[0,j,[0,l,[0,a(at),0]]]],sO=[0,a(ei),[0,j,c]],sP=[0,a(d1),[0,j,c]],sQ=[0,a(b7),[0,j,[0,l,0]]],sR=[0,a(d$),[0,j,[0,l,[0,a(b7),0]]]],sS=[0,a(aa),[0,j,i]],sT=[0,a(cM),[0,j,i]],sU=[0,a(dW),[0,j,c]],sV=[0,a(fI),[0,bA,i]],sW=[0,a(fn),[0,bA,i]],sX=[0,a(b3),[0,j,v]],sY=[0,a(bC),[0,j,v]],sZ=[0,a(dT),[0,j,v]],s1=[0,l,[0,a(ap),0]],s2=a(a9),s3=[0,a(cb),[0,o,v]],s4=[0,a(b_),[0,o,i]],s5=[0,a(dY),[0,o,i]],s6=[0,a(cC),[0,o,c]],s8=[0,l,[0,a(d1),0]],s9=a(bG),s_=[0,a(a$),[0,a8,[0,l,[0,a(ei),[0,a(bt),[0,a(d_),[0,a(cD),[0,a(cN),[0,a(cH),[0,a(at),0]]]]]]]]]],s$=[0,a(b6),[0,o,v]],tb=[0,l,[0,a(ap),0]],tc=[0,a(ba),0],td=a(ba),tf=[0,l,[0,a(ap),0]],tg=a(cR),th=[0,a(cV),[0,o,i]],ti=[0,a(b2),[0,o,i]],tj=[0,a(b1),[0,a8,[0,l,[0,a(dW),[0,a(cM),0]]]]],tk=[0,a(cO),[0,o,[0,R,[0,[0,a(bs),[0,a(d0),[0,a(eg),[0,a(d3),[0,a(cT),[0,a(cL),[0,a(cZ),zu]]]]]]],c]]]],tl=[0,l,[0,a(aa),0]],tm=a(d2),tn=[0,l,[0,a(aa),0]],to=a(bE),tp=[0,a(W),[0,a8,[0,l,[0,a(aa),0]]]],tq=[0,a($),[0,a8,[0,l,[0,a(aa),0]]]],tr=[0,a(cF),[0,o,c]],ts=[0,a(cQ),[0,o,c]],tt=[0,a(cA),[0,o,c]],tu=[0,a(cP),[0,o,c]],tv=[0,a(cE),[0,o,c]],tw=[0,a(cU),[0,o,c]],tx=[0,a(aT),[0,o,c]],ty=[0,a(eh),[0,c,[0,R,[0,[0,a(bB),[0,a(dS),[0,a(d6),[0,a(dO),[0,a(b5),[0,a(eh),[0,a(ba),zv]]]]]]],i]]]],tz=[0,a(b5),[0,c,[0,R,[0,[0,a(b5),0],c]]]],tA=[0,a(dO),[0,c,[0,l,0]]],tB=[0,a(d6),[0,c,[0,l,[0,a(d$),[0,a(b7),0]]]]],tC=[0,a(dS),[0,c,v]],tD=[0,a(ec),[0,c,i]],tE=[0,a(d5),[0,c,v]],tF=[0,a(cZ),[0,c,i]],tH=[0,l,[0,a(b3),0]],tI=a(d0),tJ=[0,a(jI),[0,c,i]],tL=[0,l,[0,a(dT),0]],tM=a(ju),tN=[0,a(ap),[0,c,ca]],tP=[0,l,[0,a(b3),0]],tQ=a(bs),tR=[0,a(aU),[0,c,v]],tS=[0,a(bB),[0,c,[0,R,[0,[0,a(bB),0],c]]]],tT=[0,a(jf),[0,c,v]],tU=[0,a(iq),[0,c,i]],tV=[0,a(bz),[0,c,i]],tW=[0,a(cT),[0,c,i]],tX=[0,a(cL),[0,c,i]],tY=[0,a(fJ),[0,c,i]],tZ=[0,a(iY),[0,c,i]],t0=[0,a(fs),[0,c,i]],t1=[0,a(f5),[0,c,i]],t2=[0,a(fr),[0,c,i]],t3=[0,a(f7),[0,c,i]],t4=[0,a(fv),[0,c,i]],t5=[0,a(fu),[0,c,i]],t6=[0,a(fE),[0,c,i]],t7=[0,a(f3),[0,c,i]],t8=[0,a(iZ),[0,c,i]],t9=[0,a(dZ),[0,c,i]],t_=[0,a(dV),[0,c,i]],t$=[0,a(d3),[0,c,i]],ua=[0,a(eg),[0,c,i]],ub=[0,a(fZ),[0,c,i]],uc=[0,a(f8),[0,c,i]],ud=[0,a(fX),[0,c,i]],uu=a(aE),ut=a(a_),ur=a(a9),us=a(cS),uo=a(a_),up=a(aE),un=a(aE),uk=a(X),ul=a(by),um=a(iT),uj=a(a_),ui=a(a9),uf=[0,1],ug=[0,0],uh=[0,1],uq=[1,a(bp),[0,[0,a(\"http-equiv\"),a(\"Content-Type\")],[0,[0,a(\"content\"),a(\"text/html; charset=utf-8\")],0]],0,0],u8=a(X),u9=a(bb),u_=a(X),u$=a(\"[if !msEquation]\"),va=a(bb),vb=a(X),vc=a(fH),u6=[0,a(\"data-ms-equation\"),a(d8)],uV=a(X),uW=a(bb),uX=a(X),uY=a(\"[if !vml]\"),uZ=a(bb),u0=a(X),u1=a(fH),uT=a(fo),uO=a(aU),uP=a(aU),uN=a(aU),uQ=a(aU),uJ=a(fo),uH=a(\"v:imagedata\"),uI=a(aU),uF=a(\"vshapedata\"),uC=[0,[0,a(\"rtf-data-image\"),a(d8)],0],uD=a(\"data-image-id\"),uz=a(\"rotation\"),uv=a(\"-90\"),uw=a(\"90\"),ux=a(cK),uy=a(bH),uA=a(cK),uB=a(bH),uE=a(\"unsupported\"),uM=a(aU),uR=a(\"[if gte vml 1]>\"),uS=a(jv),u2=a(by),u4=a(\"[if gte msEquation\"),u5=a(jv),vd=a(by),vf=[0,0],vi=a(X),vj=a(\"[if !supportLists]\"),vk=a(bb),vl=a(by),vY=a(iA),vZ=a(aa),v0=a(bn),v2=[0,a(iE),a(d8)],v1=a(aa),vV=a(b9),vW=a(bD),vX=a(fm),v3=a(aT),vT=a(\"mso-text-indent-alt\"),vU=a(jH),vQ=a(\"mso-level-legacy\"),vR=a(\"yes\"),vS=[0,a($),0,0],vN=a(iw),vO=a(d4),vP=[0,a(dQ)],vK=a(\"margin-top\"),vL=a(\"margin-bottom\"),vC=[0,[0,a($),0]],vw=a(\"alpha-lower\"),vx=a(\"alpha-upper\"),vy=a(\"bullet\"),vz=a(\"image\"),vA=a(\"roman-lower\"),vB=a(\"roman-upper\"),vD=[0,[0,a(W),[0,a(\"upper-roman\")]]],vE=[0,[0,a(W),[0,a(\"lower-roman\")]]],vF=[0,[0,a(W),[0,a(\"upper-alpha\")]]],vG=[0,[0,a(W),[0,a(\"lower-alpha\")]]],vH=a(\"mso-level-number-format\"),vI=[0,a(W),0],vt=[0,[0,a($),[0,a(\"square\")]]],vu=[0,[0,a($),[0,a(\"circle\")]]],vv=a(\"mso-level-text\"),vs=a(af),vr=a(cX),vo=[0,a(jt)],vp=a($),vq=a(\"mso-level-start-at\"),vm=[0,[0,a(dQ)],[0,[0,a(d4),0]]],vn=a(aa),vh=a(jC),v7=a(dV),v_=a(dZ),v$=a(bz),v8=a(jd),v9=a(i5),wa=a(aT),v5=[0,a(i5)],v6=[0,a(jd)],wK=[0,1],wL=[0,1],wM=[0,1],wI=a(b9),wE=a(W),wF=a($),wA=a($),wB=a(W),wC=a(W),wz=a(b9),wD=a(b9),ww=a(cX),wx=a(f1),wt=a(W),wu=a($),ws=a(aa),wo=a(dQ),wp=[0,a(d4),0],wq=a(b9),wr=a(b9),wl=a(W),wm=a($),wh=a(aa),wi=a(W),we=a($),wf=a(f1),wg=a(cX),wj=a(fm),wk=a(cX),wc=bO([a(cZ),a(bz),a(fZ),a(f8),a(dV),a(cT),a(cL),a(f3),a(fE),a(f7),a(fJ),a(fs),a(fv),a(fu),a(fr),a(fX),a(dZ),a(fn),a(fI),a(f5),a(a_)]),xB=a(bz),xy=a(bn),xz=a(f6),xx=a(f6),xv=a(bn),xw=a(f6),xt=a(bn),xu=a(\"Apple-converted-space\"),xm=a(X),xh=a(bn),xi=a(\"msocomtxt\"),xf=a(b6),xc=a(bn),xd=a(\"msocomoff\"),w$=a(\"mso-comment-reference\"),w8=a(\"comment-list\"),w7=a(jy),w3=a(bn),w4=a(\"MsoCommentReference\"),w0=a(by),w1=a(\"---\"),wZ=a(X),wU=a(iT),wV=a(\"endfragment\"),wW=a(\"[if \"),wX=a(\"[endif\"),wS=a(bB),wQ=a(\"name\"),wR=a(\"OLE_LINK\"),xn=a(bb),xp=[0,a(\"lang\"),[0,a(\"onmouseover\"),[0,a(\"onmouseout\"),[0,a(fm),0]]]],xq=[0,a(bn),[0,a(iE),[0,a(iA),[0,a(jH),0]]]],xP=a(b2),xN=a(jy),xO=[0,a(\"para-border-div\"),0],xL=a(ja),xJ=a(\"margin-left\"),xK=a(\"data-border-margin\"),xH=a(aT),xD=a(bz),xE=a(bE),xF=a(bz),xG=a(bE),x8=a(\"mso-\"),x9=a(jC),xV=a(\"font-stretch\"),xW=a(\"font-variant-caps\"),xX=a(\"text-decoration\"),xY=a(\"text-indent\"),xZ=a(\"text-transform\"),x0=a(\"vertical-align\"),x1=a(\"white-space\"),x2=a(\"word-spacing\"),x4=a(iW),x5=a(\"baseline\"),x7=a(iW),x6=a(d4),x3=a(\"0px\"),xR=[0,a(jt),[0,a(dQ),[0,a(iw),0]]],xT=bO([a(\"layout-grid-mode\"),a(\"tab-stops\"),a(i9),a(\"text-underline\"),a(\"text-effect\"),a(\"text-line-through\"),a(\"page\"),a(\"font-color\"),a(\"horiz-align\"),a(\"language\"),a(\"separator-image\"),a(\"table-border-color-dark\"),a(\"table-border-color-light\"),a(\"vert-align\"),a(\"widows\"),a(\"letter-spacing\"),a(\"caret-color\"),a(\"orphans\")]),yh=a(\"a:link\"),ye=a(iD),yf=a(\"1px\"),yd=a(iD),yc=a(ja),x$=[0,a(a$),[0,a(at),[0,a(bI),[0,a(bt),0]]]],yu=a(cK),yv=a(bH),yt=[0,a(bI),[0,a(bt),0]],ys=a(at),yq=a(bH),yr=a(cK),yp=a(a$),yn=a(a$),ym=a(bH),yk=a(bH),yj=a(\"px\"),yi=[0,a(bH),[0,a(cK),0]],yC=a(\"before:\"),yD=a(\"after:\"),yz=a(i9),yA=a(\"data-tab-interval\"),yy=[0,1],yx=[0,0],yE=a(\"Jsoo_runtime.Error.Exn\"),yF=a(fy),y3=a(\"edge/\"),y4=a(i8),y5=a(jw),y6=a(jG),yY=a(i8),yZ=a(\"chromeframe\"),yU=a(\"msie\"),yV=a(\"trident\"),yJ=a(jw),yL=a(\"mobile/\"),yK=a(jG),yM=a(je),yO=a(\"firefox\"),yP=a(\"Firefox\"),yR=a(\"opera\"),yS=a(\"Opera\"),yW=a(\"IE\"),y0=[0,a(i6)],y1=a(i6),y7=a(\"Edge\"),y$=a(je),zg=a(e),zh=a(ii),zb=a(iG),zl=a(\"ephox.wimp\");function\nE(a){if(typeof\na===\"number\")return 0;else\nswitch(a[0]){case\n0:return[0,E(a[1])];case\n1:return[1,E(a[1])];case\n2:return[2,E(a[1])];case\n3:return[3,E(a[1])];case\n4:return[4,E(a[1])];case\n5:return[5,E(a[1])];case\n6:return[6,E(a[1])];case\n7:return[7,E(a[1])];case\n8:var\nc=a[1];return[8,c,E(a[2])];case\n9:var\nb=a[1];return[9,b,b,E(a[3])];case\n10:return[10,E(a[1])];case\n11:return[11,E(a[1])];case\n12:return[12,E(a[1])];case\n13:return[13,E(a[1])];default:return[14,E(a[1])]}}function\nZ(a,b){if(typeof\na===\"number\")return b;else\nswitch(a[0]){case\n0:return[0,Z(a[1],b)];case\n1:return[1,Z(a[1],b)];case\n2:return[2,Z(a[1],b)];case\n3:return[3,Z(a[1],b)];case\n4:return[4,Z(a[1],b)];case\n5:return[5,Z(a[1],b)];case\n6:return[6,Z(a[1],b)];case\n7:return[7,Z(a[1],b)];case\n8:var\nc=a[1];return[8,c,Z(a[2],b)];case\n9:var\nd=a[2],e=a[1];return[9,e,d,Z(a[3],b)];case\n10:return[10,Z(a[1],b)];case\n11:return[11,Z(a[1],b)];case\n12:return[12,Z(a[1],b)];case\n13:return[13,Z(a[1],b)];default:return[14,Z(a[1],b)]}}function\ny(a,b){if(typeof\na===\"number\")return b;else\nswitch(a[0]){case\n0:return[0,y(a[1],b)];case\n1:return[1,y(a[1],b)];case\n2:var\nc=a[1];return[2,c,y(a[2],b)];case\n3:var\nd=a[1];return[3,d,y(a[2],b)];case\n4:var\ne=a[3],f=a[2],g=a[1];return[4,g,f,e,y(a[4],b)];case\n5:var\nh=a[3],i=a[2],j=a[1];return[5,j,i,h,y(a[4],b)];case\n6:var\nk=a[3],l=a[2],m=a[1];return[6,m,l,k,y(a[4],b)];case\n7:var\nn=a[3],o=a[2],p=a[1];return[7,p,o,n,y(a[4],b)];case\n8:var\nq=a[3],r=a[2],s=a[1];return[8,s,r,q,y(a[4],b)];case\n9:var\nt=a[1];return[9,t,y(a[2],b)];case\n10:return[10,y(a[1],b)];case\n11:var\nu=a[1];return[11,u,y(a[2],b)];case\n12:var\nv=a[1];return[12,v,y(a[2],b)];case\n13:var\nw=a[2],x=a[1];return[13,x,w,y(a[3],b)];case\n14:var\nz=a[2],A=a[1];return[14,A,z,y(a[3],b)];case\n15:return[15,y(a[1],b)];case\n16:return[16,y(a[1],b)];case\n17:var\nB=a[1];return[17,B,y(a[2],b)];case\n18:var\nC=a[1];return[18,C,y(a[2],b)];case\n19:return[19,y(a[1],b)];case\n20:var\nD=a[2],E=a[1];return[20,E,D,y(a[3],b)];case\n21:var\nF=a[1];return[21,F,y(a[2],b)];case\n22:return[22,y(a[1],b)];case\n23:var\nG=a[1];return[23,G,y(a[2],b)];default:var\nH=a[2],I=a[1];return[24,I,H,y(a[3],b)]}}function\nch(a){throw[0,db,a]}function\nI(a){throw[0,et,a]}var\ngr=[A,kf,be(0)];function\ndc(a){return 0<=a?a:-a|0}function\nh(d,c){var\na=k(d),e=k(c),b=D(a+e|0);bd(d,0,b,0,a);bd(c,0,b,a,e);return O(b)}function\nkg(a){return a?kh:ki}function\nkj(a){try{var\nb=[0,c7(a)];return b}catch(a){a=C(a);if(a[1]===db)return 0;throw a}}function\nF(a,b){if(a){var\nc=a[1];return[0,c,F(a[2],b)]}return b}Af(0);var\nev=j3(1),aY=j3(2);function\nbS(b,a){return j4(b,a,0,k(a))}function\nci(a){bS(ev,a);gl(ev,10);return aX(ev)}function\ngw(a){bS(aY,a);gl(aY,10);return aX(aY)}function\new(b){function\na(b){var\na=b;for(;;){if(a){var\nc=a[2],d=a[1];try{aX(d)}catch(a){a=C(a);if(a[1]!==gu)throw a;var\ne=a}var\na=c;continue}return 0}}return a(Ag(0))}gp(a(ik),ew);var\nex=At(0),cj=(4*ex|0)-1|0,kn=[A,km,be(0)];function\nko(a){throw kn}function\nck(a){var\nd=a[1];a[1]=ko;try{var\nc=b(d,0);Al(a,c);return c}catch(b){b=C(b);a[1]=function(a){throw b};throw b}}function\ngx(h,g,e){var\na=g,d=e;for(;;){var\nc=b(d,0);if(c){var\ni=c[2],a=f(h,a,c[1]),d=i;continue}return a}}function\ngy(c,a){return a?[0,b(c,a[1])]:0}function\ncl(a){if(0<=a&&!(b0<a))return a;return I(kp)}function\ncm(a){var\nb=a-192|0,c=0;if(30<b>>>0){if(!(25<b+cI>>>0))c=1}else\nif(23!==b)c=1;return c?a+32|0:a}function\nkw(a){return 25<a-65>>>0?a:a+32|0}function\nkx(a){return 25<a+i$>>>0?a:a+fW|0}function\nbh(c){var\nb=0,a=c;for(;;){if(a){var\nb=b+1|0,a=a[2];continue}return b}}function\ndd(a){return a?a[2]:ch(ky)}function\ney(d,c){if(0<=c){var\na=d,b=c;for(;;){if(a){var\ne=a[2],f=a[1];if(0===b)return f;var\na=e,b=b-1|0;continue}return ch(kz)}}return I(kA)}function\ncn(d,c){var\na=d,b=c;for(;;){if(a){var\ne=[0,a[1],b],a=a[2],b=e;continue}return b}}function\nG(a){return cn(a,0)}function\naj(c,a){if(a){var\nd=a[2],e=b(c,a[1]);return[0,e,aj(c,d)]}return 0}function\nbT(d,c){var\na=c;for(;;){if(a){var\ne=a[2];b(d,a[1]);var\na=e;continue}return 0}}function\nbi(e,d,c){var\nb=d,a=c;for(;;){if(a){var\ng=a[2],b=f(e,b,a[1]),a=g;continue}return b}}function\ngz(c,a,b){if(a){var\nd=a[1];return f(c,d,gz(c,a[2],b))}return b}function\ngA(e,d){var\na=d;for(;;){if(a){var\nf=a[2],c=b(e,a[1]);if(c){var\na=f;continue}return c}return 1}}function\nV(e,d){var\na=d;for(;;){if(a){var\nf=a[2],c=b(e,a[1]);if(c)return c;var\na=f;continue}return 0}}function\ngB(d,c){var\na=c;for(;;){if(a){var\ne=a[2],b=0===ce(a[1],d)?1:0;if(b)return b;var\na=e;continue}return 0}}function\nco(d,c){var\na=c;for(;;){if(a){var\nb=a[1],e=a[2],f=b[2];if(0===ce(b[1],d))return f;var\na=e;continue}throw p}}function\nde(b,a){return a<=b?b:a}function\naN(a,c){var\nb=D(a);zJ(b,0,a,c);return b}var\nkB=D(0);function\nez(a){var\nb=ax(a),c=D(b);bc(a,0,c,0,b);return c}function\ndf(a){return O(ez(a))}function\neA(c,b,a){if(0<=b&&0<=a&&!((ax(c)-a|0)<b)){var\nd=D(a);bc(c,b,d,0,a);return d}return I(kC)}function\ndg(c,b,a){return O(eA(c,b,a))}function\ngC(e,c,d,b,a){if(0<=a&&0<=c&&!((ax(e)-a|0)<c)&&0<=b&&!((ax(d)-a|0)<b))return bc(e,c,d,b,a);return I(kD)}function\naZ(e,c,d,b,a){if(0<=a&&0<=c&&!((k(e)-a|0)<c)&&0<=b&&!((ax(d)-a|0)<b))return bd(e,c,d,b,a);return I(kE)}function\ngD(c){var\na=c-9|0,b=0;if(4<a>>>0){if(23===a)b=1}else\nif(2!==a)b=1;return b?1:0}function\neB(g,c){var\nd=ax(c);if(0===d)return c;var\ne=D(d),f=d-1|0,h=0;if(!(f<0)){var\na=h;for(;;){H(e,a,b(g,bL(c,a)));var\ni=a+1|0;if(f!==a){var\na=i;continue}break}}return e}function\ngE(b,a){return O(aN(b,a))}function\naq(c,b,a){return O(eA(au(c),b,a))}function\naz(l,g){if(g){var\nh=k(l),c=0,b=g,q=0;for(;;){if(b){var\ni=b[1];if(b[2]){var\nj=(k(i)+h|0)+c|0,n=b[2],o=c<=j?j:I(kF),c=o,b=n;continue}var\nm=k(i)+c|0}else\nvar\nm=c;var\nf=D(m),e=q,d=g;for(;;){if(d){var\na=d[1];if(d[2]){var\np=d[2];bd(a,0,f,e,k(a));bd(l,0,f,e+k(a)|0,h);var\ne=(e+k(a)|0)+h|0,d=p;continue}bd(a,0,f,e,k(a))}return O(f)}}}return kG}function\ngF(c){var\na=c-9|0,b=0;if(4<a>>>0){if(23===a)b=1}else\nif(2!==a)b=1;return b?1:0}function\ngG(e,d,c,b){var\na=c;for(;;){if(d<=a)throw p;if(ay(e,a)===b)return a;var\na=a+1|0;continue}}function\neC(a,b){return gG(a,k(a),0,b)}function\nkI(b,a,d){var\nc=k(b);if(0<=a&&!(c<a))try{gG(b,c,a,d);var\ne=1;return e}catch(a){a=C(a);if(a===p)return 0;throw a}return I(kJ)}function\ngH(b,a){return kI(b,0,a)}function\ndh(a){return O(eB(kw,au(a)))}function\ngI(a){return O(eB(cm,au(a)))}var\nkK=c9;function\ngJ(e,c,d,b,a){if(0<=a&&0<=c&&!((e.length-1-a|0)<c)&&0<=b&&!((d.length-1-a|0)<b))return zB(e,c,d,b,a);return I(kM)}function\ngK(e,c){var\nd=c.length-1;if(0===d)return[0];var\nf=aM(d,b(e,c[1])),g=d-1|0,h=1;if(!(g<1)){var\na=h;for(;;){f[1+a]=b(e,c[1+a]);var\ni=a+1|0;if(g!==a){var\na=i;continue}break}}return f}function\na0(f,e,a){var\nc=z_(f,e,a),d=0<=c?1:0,g=d?a[12]!==di?1:0:d;if(g){a[11]=a[12];var\nb=a[12];a[12]=[0,b[1],b[2],b[3],a[4]+a[6]|0]}return c}function\ngM(b,a){var\nc=b?b[1]:1,e=c?gL:di,f=c?gL:di,g=[0],h=1,i=0,j=0,l=0,m=0,n=0,o=k(a),d=ez(au(a));return[0,function(a){a[9]=1;return 0},d,o,n,m,l,j,i,h,g,f,e]}function\nJ(a){return dg(a[2],a[5],a[6]-a[5]|0)}function\neD(c,a,b){return dg(c[2],a,b-a|0)}function\ngN(d){function\nq(a){return a?a[4]:0}function\ne(b,e,a){var\nc=b?b[4]:0,d=a?a[4]:0,f=d<=c?c+1|0:d+1|0;return[0,b,e,a,f]}function\ng(b,f,a){var\ng=b?b[4]:0,h=a?a[4]:0;if((h+2|0)<g){if(b){var\nc=b[3],k=b[2],i=b[1],m=q(c);if(m<=q(i))return e(i,k,e(c,f,a));if(c){var\nn=c[2],o=c[1],p=e(c[3],f,a);return e(e(i,k,o),n,p)}return I(kN)}return I(kO)}if((g+2|0)<h){if(a){var\nj=a[3],l=a[2],d=a[1],r=q(d);if(r<=q(j))return e(e(b,f,d),l,j);if(d){var\ns=d[2],t=d[1],u=e(d[3],l,j);return e(e(b,f,t),s,u)}return I(kP)}return I(kQ)}var\nv=h<=g?g+1|0:h+1|0;return[0,b,f,a,v]}function\na(c,b){if(b){var\ne=b[3],h=b[2],i=b[1],j=f(d[1],c,h);if(0===j)return b;if(0<=j){var\nk=a(c,e);return e===k?b:g(i,h,k)}var\nl=a(c,i);return i===l?b:g(l,h,e)}return[0,0,c,0,1]}function\nh(a){return[0,0,a,0,1]}function\nE(b,a){if(a){var\nc=a[3],d=a[2];return g(E(b,a[1]),d,c)}return h(b)}function\nF(b,a){if(a){var\nc=a[2],d=a[1];return g(d,c,F(b,a[3]))}return h(b)}function\nc(b,d,a){if(b){if(a){var\nf=a[4],h=b[4],i=a[3],j=a[2],k=a[1],l=b[3],m=b[2],n=b[1];return(f+2|0)<h?g(n,m,c(l,d,a)):(h+2|0)<f?g(c(b,d,k),j,i):e(b,d,a)}return F(d,b)}return E(d,a)}function\nj(c){var\na=c;for(;;){if(a){var\nb=a[1];if(b){var\na=b;continue}return a[2]}throw p}}function\nG(c){var\na=c;for(;;){if(a){var\nb=a[1];if(b){var\na=b;continue}return[0,a[2]]}return 0}}function\nH(b){var\na=b;for(;;){if(a){if(a[3]){var\na=a[3];continue}return a[2]}throw p}}function\nT(b){var\na=b;for(;;){if(a){if(a[3]){var\na=a[3];continue}return[0,a[2]]}return 0}}function\nr(a){if(a){var\nb=a[1];if(b){var\nc=a[3],d=a[2];return g(r(b),d,c)}return a[3]}return I(kR)}function\nm(b,a){if(b){if(a){var\nd=r(a);return c(b,j(a),d)}return b}return a}function\ni(b,a){if(a){var\ne=a[3],g=a[2],h=a[1],l=f(d[1],b,g);if(0===l)return[0,h,1,e];if(0<=l){var\nj=i(b,e),m=j[3],n=j[2];return[0,c(h,g,j[1]),n,m]}var\nk=i(b,h),o=k[2],p=k[1];return[0,p,o,c(k[3],g,e)]}return kS}var\nu=0;function\nU(a){return a?0:1}function\nV(g,e){var\na=e;for(;;){if(a){var\nh=a[3],i=a[1],b=f(d[1],g,a[2]),c=0===b?1:0;if(c)return c;var\nj=0<=b?h:i,a=j;continue}return 0}}function\nv(e,b){if(b){var\na=b[3],h=b[2],c=b[1],i=f(d[1],e,h);if(0===i){if(c){if(a){var\nm=r(a);return g(c,j(a),m)}return c}return a}if(0<=i){var\nk=v(e,a);return a===k?b:g(c,h,k)}var\nl=v(e,c);return c===l?b:g(l,h,a)}return 0}function\nk(d,b){if(d){if(b){var\ng=b[4],e=b[2],h=d[4],f=d[2],m=b[3],n=b[1],o=d[3],p=d[1];if(g<=h){if(1===g)return a(e,d);var\nj=i(f,b),q=j[1],r=k(o,j[3]);return c(k(p,q),f,r)}if(1===h)return a(f,b);var\nl=i(e,d),s=l[1],t=k(l[3],m);return c(k(s,n),e,t)}return d}return b}function\nn(a,d){if(a){if(d){var\ne=a[3],f=a[2],g=a[1],b=i(f,d),h=b[1];if(b[2]){var\nj=n(e,b[3]);return c(n(g,h),f,j)}var\nk=n(e,b[3]);return m(n(g,h),k)}return 0}return 0}function\nw(e,a){if(a){var\nj=a[3],g=a[2],k=a[1],l=f(d[1],e,g);if(0===l)return 0;if(0<=l){var\nh=w(e,j);if(h){var\nm=h[2];return[0,c(k,g,h[1]),m]}return 0}var\ni=w(e,k);if(i){var\nn=i[2],o=i[1];return[0,o,function(a){return c(b(n,0),g,j)}]}return 0}return[0,0,function(a){return 0}]}function\nJ(g,f){var\na=g,c=f;for(;;){if(a&&c){var\nh=a[3],i=a[2],j=a[1];if(a===c)return 0;var\nd=w(i,c);if(d){var\nk=d[2],e=J(j,d[1]);if(e){var\na=h,c=b(k,0);continue}return e}return 0}return 1}}function\no(a,d){if(a){if(d){var\ne=a[3],f=a[2],g=a[1],b=i(f,d),h=b[1];if(b[2]){var\nj=o(e,b[3]);return m(o(g,h),j)}var\nk=o(e,b[3]);return c(o(g,h),f,k)}return a}return 0}function\nl(d,c){var\na=d,b=c;for(;;){if(a){var\ne=[0,a[2],a[3],b],a=a[1],b=e;continue}return b}}function\nK(m,k){var\nn=l(k,0),b=l(m,0),a=n;for(;;){if(b){if(a){var\ne=a[3],g=a[2],h=b[3],i=b[2],c=f(d[1],b[1],a[1]);if(0===c){var\nj=l(g,e),b=l(i,h),a=j;continue}return c}return 1}return a?-1:0}}function\nW(b,a){return 0===K(b,a)?1:0}function\nt(o,n){var\na=o,b=n;for(;;){if(a){if(b){var\nh=b[3],i=b[1],c=a[3],e=a[2],g=a[1],j=f(d[1],e,b[2]);if(0===j){var\nk=t(g,i);if(k){var\na=c,b=h;continue}return k}if(0<=j){var\nl=t([0,0,e,c,0],h);if(l){var\na=g;continue}return l}var\nm=t([0,g,e,0,0],i);if(m){var\na=c;continue}return m}return 0}return 1}}function\nL(c,d){var\na=d;for(;;){if(a){var\ne=a[3],f=a[2];L(c,a[1]);b(c,f);var\na=e;continue}return 0}}function\nM(c,e,d){var\na=e,b=d;for(;;){if(a){var\ng=a[3],h=a[2],i=f(c,h,M(c,a[1],b)),a=g,b=i;continue}return b}}function\nN(c,g){var\na=g;for(;;){if(a){var\nh=a[3],i=a[1],d=b(c,a[2]);if(d){var\ne=N(c,i);if(e){var\na=h;continue}var\nf=e}else\nvar\nf=d;return f}return 1}}function\nO(c,g){var\na=g;for(;;){if(a){var\nh=a[3],i=a[1],d=b(c,a[2]);if(d)var\ne=d;else{var\nf=O(c,i);if(!f){var\na=h;continue}var\ne=f}return e}return 0}}function\nx(d,a){if(a){var\ng=a[3],h=a[2],i=a[1],e=x(d,i),j=b(d,h),f=x(d,g);if(j){if(i===e&&g===f)return a;return c(e,h,f)}return m(e,f)}return 0}function\ny(d,a){if(a){var\ne=a[2],l=a[3],f=y(d,a[1]),g=f[2],h=f[1],n=b(d,e),i=y(d,l),j=i[2],k=i[1];if(n){var\no=m(g,j);return[0,c(h,e,k),o]}var\np=c(g,e,j);return[0,m(h,k),p]}return kT}function\nz(a){if(a){var\nb=a[1],c=z(a[3]);return(z(b)+1|0)+c|0}return 0}function\nP(d,c){var\nb=d,a=c;for(;;){if(a){var\ne=a[2],f=a[1],b=[0,e,P(b,a[3])],a=f;continue}return b}}function\nX(a){return P(0,a)}function\nY(g,e){var\na=e;for(;;){if(a){var\nb=a[2],h=a[3],i=a[1],c=f(d[1],g,b);if(0===c)return b;var\nj=0<=c?h:i,a=j;continue}throw p}}function\nZ(f,j){var\nc=j;for(;;){if(c){var\ng=c[2],k=c[3],l=c[1];if(b(f,g)){var\nd=g,a=l;for(;;){if(a){var\ne=a[2],h=a[3],i=a[1];if(b(f,e)){var\nd=e,a=i;continue}var\na=h;continue}return d}}var\nc=k;continue}throw p}}function\n_(f,j){var\nc=j;for(;;){if(c){var\ng=c[2],k=c[3],l=c[1];if(b(f,g)){var\nd=g,a=l;for(;;){if(a){var\ne=a[2],h=a[3],i=a[1];if(b(f,e)){var\nd=e,a=i;continue}var\na=h;continue}return[0,d]}}var\nc=k;continue}return 0}}function\n$(f,j){var\nc=j;for(;;){if(c){var\ng=c[2],k=c[3],l=c[1];if(b(f,g)){var\nd=g,a=k;for(;;){if(a){var\ne=a[2],h=a[3],i=a[1];if(b(f,e)){var\nd=e,a=h;continue}var\na=i;continue}return d}}var\nc=l;continue}throw p}}function\naa(f,j){var\nc=j;for(;;){if(c){var\ng=c[2],k=c[3],l=c[1];if(b(f,g)){var\nd=g,a=k;for(;;){if(a){var\ne=a[2],h=a[3],i=a[1];if(b(f,e)){var\nd=e,a=h;continue}var\na=i;continue}return[0,d]}}var\nc=l;continue}return 0}}function\nab(g,e){var\na=e;for(;;){if(a){var\nb=a[2],h=a[3],i=a[1],c=f(d[1],g,b);if(0===c)return[0,b];var\nj=0<=c?h:i,a=j;continue}return 0}}function\nA(g,e,b){var\nh=0;if(0!==g){var\nm=H(g);if(0<=f(d[1],m,e))h=1}if(!h){var\ni=0;if(0!==b){var\nl=j(b);if(0<=f(d[1],e,l))i=1}if(!i)return c(g,e,b)}return k(g,a(e,b))}function\nB(c,a){if(a){var\nd=a[3],e=a[2],f=a[1],g=B(c,f),h=b(c,e),i=B(c,d);if(f===g&&e===h&&d===i)return a;return A(g,h,i)}return 0}function\nC(e,c){if(c){var\nf=c[3],g=c[2],h=c[1],d=C(e,h),i=b(e,g),a=C(e,f);if(i){var\nk=i[1];if(h===d&&g===k&&f===a)return c;return A(d,k,a)}if(d){if(a){var\nl=r(a);return A(d,j(a),l)}return d}return a}return 0}function\nac(c){if(c){var\nk=c[2],g=c[1];if(k){var\nl=k[2],i=k[1];if(l){var\nn=l[2],o=l[1];if(n){var\np=n[2],r=n[1];if(p){if(p[2]){var\nb=d[1],x=function(j,g){if(2===j){if(g){var\nn=g[2];if(n){var\no=n[1],k=g[1],J=n[2],y=f(b,k,o),K=0===y?[0,k,0]:0<y?[0,k,[0,o,0]]:[0,o,[0,k,0]];return[0,K,J]}}}else\nif(3===j&&g){var\np=g[2];if(p){var\nq=p[2];if(q){var\nc=q[1],a=p[1],d=g[1],N=q[2],D=f(b,d,a);if(0===D)var\nE=f(b,a,c),O=0===E?[0,a,0]:0<E?[0,a,[0,c,0]]:[0,c,[0,a,0]],r=O;else\nif(0<D){var\nF=f(b,a,c);if(0===F)var\ns=[0,d,[0,a,0]];else\nif(0<F)var\ns=[0,d,[0,a,[0,c,0]]];else\nvar\nG=f(b,d,c),P=0===G?[0,d,[0,a,0]]:0<G?[0,d,[0,c,[0,a,0]]]:[0,c,[0,d,[0,a,0]]],s=P;var\nr=s}else{var\nH=f(b,d,c);if(0===H)var\nt=[0,a,[0,d,0]];else\nif(0<H)var\nt=[0,a,[0,d,[0,c,0]]];else\nvar\nI=f(b,a,c),Q=0===I?[0,a,[0,d,0]]:0<I?[0,a,[0,c,[0,d,0]]]:[0,c,[0,a,[0,d,0]]],t=Q;var\nr=t}return[0,r,N]}}}var\nz=j>>1,A=m(z,g),L=A[1],B=m(j-z|0,A[2]),i=L,h=B[1],e=0,M=B[2];for(;;){if(i){if(h){var\nu=h[2],v=h[1],w=i[2],l=i[1],x=f(b,l,v);if(0===x){var\ni=w,h=u,e=[0,l,e];continue}if(0<=x){var\nh=u,e=[0,v,e];continue}var\ni=w,e=[0,l,e];continue}var\nC=cn(i,e)}else\nvar\nC=cn(h,e);return[0,C,M]}},m=function(j,g){if(2===j){if(g){var\nm=g[2];if(m){var\nn=m[1],k=g[1],J=m[2],y=f(b,k,n),K=0===y?[0,k,0]:0<=y?[0,n,[0,k,0]]:[0,k,[0,n,0]];return[0,K,J]}}}else\nif(3===j&&g){var\no=g[2];if(o){var\np=o[2];if(p){var\nc=p[1],a=o[1],d=g[1],N=p[2],D=f(b,d,a);if(0===D)var\nE=f(b,a,c),O=0===E?[0,a,0]:0<=E?[0,c,[0,a,0]]:[0,a,[0,c,0]],q=O;else\nif(0<=D){var\nF=f(b,d,c);if(0===F)var\nr=[0,a,[0,d,0]];else\nif(0<=F)var\nG=f(b,a,c),P=0===G?[0,a,[0,d,0]]:0<=G?[0,c,[0,a,[0,d,0]]]:[0,a,[0,c,[0,d,0]]],r=P;else\nvar\nr=[0,a,[0,d,[0,c,0]]];var\nq=r}else{var\nH=f(b,a,c);if(0===H)var\ns=[0,d,[0,a,0]];else\nif(0<=H)var\nI=f(b,d,c),Q=0===I?[0,d,[0,a,0]]:0<=I?[0,c,[0,d,[0,a,0]]]:[0,d,[0,c,[0,a,0]]],s=Q;else\nvar\ns=[0,d,[0,a,[0,c,0]]];var\nq=s}return[0,q,N]}}}var\nz=j>>1,A=x(z,g),L=A[1],B=x(j-z|0,A[2]),i=L,h=B[1],e=0,M=B[2];for(;;){if(i){if(h){var\nt=h[2],u=h[1],v=i[2],l=i[1],w=f(b,l,u);if(0===w){var\ni=v,h=t,e=[0,l,e];continue}if(0<w){var\ni=v,e=[0,l,e];continue}var\nh=t,e=[0,u,e];continue}var\nC=cn(i,e)}else\nvar\nC=cn(h,e);return[0,C,M]}},q=bh(c),t=2<=q?m(q,c)[1]:c,j=function(b,a){if(!(3<b>>>0))switch(b){case\n0:return[0,0,a];case\n1:if(a)return[0,[0,0,a[1],0,1],a[2]];break;case\n2:if(a){var\nd=a[2];if(d)return[0,[0,[0,0,a[1],0,1],d[1],0,2],d[2]]}break;default:if(a){var\nf=a[2];if(f){var\ng=f[2];if(g)return[0,[0,[0,0,a[1],0,1],f[1],[0,0,g[1],0,1],2],g[2]]}}}var\nh=b/2|0,i=j(h,a),c=i[2],l=i[1];if(c){var\nm=c[1],k=j((b-h|0)-1|0,c[2]),n=k[2];return[0,e(l,m,k[1]),n]}throw[0,s,kU]};return j(bh(t),t)[1]}var\nv=p[1];return a(v,a(r,a(o,a(i,h(g)))))}return a(r,a(o,a(i,h(g))))}return a(o,a(i,h(g)))}return a(i,h(g))}return h(g)}return u}function\nQ(c,b){return gx(function(c,b){return a(b,c)},b,c)}function\nad(a){return Q(a,u)}function\nD(a,d){if(a){var\nb=a[1],c=l(a[2],a[3]);return[0,b,function(a){return D(c,a)}]}return 0}function\nae(a){var\nb=l(a,0);return function(a){return D(b,a)}}function\nR(d,c){var\na=d,b=c;for(;;){if(a){var\ne=[0,a[2],a[1],b],a=a[3],b=e;continue}return b}}function\nS(a,d){if(a){var\nb=a[1],c=R(a[2],a[3]);return[0,b,function(a){return S(c,a)}]}return 0}function\naf(a){var\nb=R(a,0);return function(a){return S(b,a)}}return[0,u,U,V,a,h,v,k,n,J,o,K,W,t,L,B,M,N,O,x,C,y,z,X,j,G,H,T,j,G,i,Y,ab,Z,_,$,aa,ac,function(j,i){var\na=i,b=0;for(;;){if(a){var\nc=a[3],e=a[2],k=a[1],g=f(d[1],e,j);if(0!==g){if(0<=g){var\na=k,b=[0,e,c,b];continue}var\na=c;continue}var\nh=[0,e,c,b]}else\nvar\nh=b;return function(a){return D(h,a)}}},ae,af,Q,ad]}function\ndj(g){function\nh(a){return a?a[5]:0}function\nd(b,f,e,a){var\nc=h(b),d=h(a),g=d<=c?c+1|0:d+1|0;return[0,b,f,e,a,g]}function\nq(b,a){return[0,0,b,a,0,1]}function\na(b,g,f,a){var\ni=b?b[5]:0,j=a?a[5]:0;if((j+2|0)<i){if(b){var\nc=b[4],m=b[3],n=b[2],k=b[1],q=h(c);if(q<=h(k))return d(k,n,m,d(c,g,f,a));if(c){var\nr=c[3],s=c[2],t=c[1],u=d(c[4],g,f,a);return d(d(k,n,m,t),s,r,u)}return I(kV)}return I(kW)}if((i+2|0)<j){if(a){var\nl=a[4],o=a[3],p=a[2],e=a[1],v=h(e);if(v<=h(l))return d(d(b,g,f,e),p,o,l);if(e){var\nw=e[3],x=e[2],y=e[1],z=d(e[4],p,o,l);return d(d(b,g,f,y),x,w,z)}return I(kX)}return I(kY)}var\nA=j<=i?i+1|0:j+1|0;return[0,b,g,f,a,A]}var\nC=0;function\nQ(a){return a?0:1}function\nm(d,c,b){if(b){var\ne=b[4],i=b[3],j=b[2],h=b[1],o=b[5],k=f(g[1],d,j);if(0===k)return i===c?b:[0,h,d,c,e,o];if(0<=k){var\nl=m(d,c,e);return e===l?b:a(h,j,i,l)}var\nn=m(d,c,h);return h===n?b:a(n,j,i,e)}return[0,0,d,c,0,1]}function\nR(d,c){var\na=c;for(;;){if(a){var\ne=a[4],h=a[3],i=a[1],b=f(g[1],d,a[2]);if(0===b)return h;var\nj=0<=b?e:i,a=j;continue}throw p}}function\nS(g,l){var\nc=l;for(;;){if(c){var\nh=c[2],m=c[4],n=c[3],o=c[1];if(b(g,h)){var\ne=h,d=n,a=o;for(;;){if(a){var\nf=a[2],i=a[4],j=a[3],k=a[1];if(b(g,f)){var\ne=f,d=j,a=k;continue}var\na=i;continue}return[0,e,d]}}var\nc=m;continue}throw p}}function\nT(g,l){var\nc=l;for(;;){if(c){var\nh=c[2],m=c[4],n=c[3],o=c[1];if(b(g,h)){var\ne=h,d=n,a=o;for(;;){if(a){var\nf=a[2],i=a[4],j=a[3],k=a[1];if(b(g,f)){var\ne=f,d=j,a=k;continue}var\na=i;continue}return[0,[0,e,d]]}}var\nc=m;continue}return 0}}function\nU(g,l){var\nc=l;for(;;){if(c){var\nh=c[2],m=c[4],n=c[3],o=c[1];if(b(g,h)){var\ne=h,d=n,a=m;for(;;){if(a){var\nf=a[2],i=a[4],j=a[3],k=a[1];if(b(g,f)){var\ne=f,d=j,a=i;continue}var\na=k;continue}return[0,e,d]}}var\nc=o;continue}throw p}}function\nV(g,l){var\nc=l;for(;;){if(c){var\nh=c[2],m=c[4],n=c[3],o=c[1];if(b(g,h)){var\ne=h,d=n,a=m;for(;;){if(a){var\nf=a[2],i=a[4],j=a[3],k=a[1];if(b(g,f)){var\ne=f,d=j,a=i;continue}var\na=k;continue}return[0,[0,e,d]]}}var\nc=o;continue}return 0}}function\nW(d,c){var\na=c;for(;;){if(a){var\ne=a[4],h=a[3],i=a[1],b=f(g[1],d,a[2]);if(0===b)return[0,h];var\nj=0<=b?e:i,a=j;continue}return 0}}function\nX(e,d){var\na=d;for(;;){if(a){var\nh=a[4],i=a[1],b=f(g[1],e,a[2]),c=0===b?1:0;if(c)return c;var\nj=0<=b?h:i,a=j;continue}return 0}}function\nn(c){var\na=c;for(;;){if(a){var\nb=a[1];if(b){var\na=b;continue}return[0,a[2],a[3]]}throw p}}function\nD(c){var\na=c;for(;;){if(a){var\nb=a[1];if(b){var\na=b;continue}return[0,[0,a[2],a[3]]]}return 0}}function\nY(b){var\na=b;for(;;){if(a){if(a[4]){var\na=a[4];continue}return[0,a[2],a[3]]}throw p}}function\nZ(b){var\na=b;for(;;){if(a){if(a[4]){var\na=a[4];continue}return[0,[0,a[2],a[3]]]}return 0}}function\nr(b){if(b){var\nc=b[1];if(c){var\nd=b[4],e=b[3],f=b[2];return a(r(c),f,e,d)}return b[4]}return I(kZ)}function\nE(c,b){if(c){if(b){var\nd=n(b),e=d[2],f=d[1];return a(c,f,e,r(b))}return c}return b}function\nt(e,b){if(b){var\nc=b[4],i=b[3],h=b[2],d=b[1],j=f(g[1],e,h);if(0===j)return E(d,c);if(0<=j){var\nk=t(e,c);return c===k?b:a(d,h,i,k)}var\nl=t(e,d);return d===l?b:a(l,h,i,c)}return 0}function\nu(d,i,c){if(c){var\ne=c[4],j=c[3],k=c[2],h=c[1],r=c[5],l=f(g[1],d,k);if(0===l){var\nm=b(i,[0,j]);if(m){var\nn=m[1];return j===n?c:[0,h,d,n,e,r]}return E(h,e)}if(0<=l){var\no=u(d,i,e);return e===o?c:a(h,k,j,o)}var\np=u(d,i,h);return h===p?c:a(p,k,j,e)}var\nq=b(i,0);return q?[0,0,d,q[1],0,1]:0}function\nF(b,c){var\na=c;for(;;){if(a){var\nd=a[4],e=a[3],g=a[2];F(b,a[1]);f(b,g,e);var\na=d;continue}return 0}}function\nv(c,a){if(a){var\nd=a[5],e=a[4],f=a[3],g=a[2],h=v(c,a[1]),i=b(c,f);return[0,h,g,i,v(c,e),d]}return 0}function\nw(b,a){if(a){var\nc=a[2],d=a[5],e=a[4],g=a[3],h=w(b,a[1]),i=f(b,c,g);return[0,h,c,i,w(b,e),d]}return 0}function\nG(c,e,d){var\na=e,b=d;for(;;){if(a){var\nf=a[4],g=a[3],h=a[2],i=aJ(c,h,g,G(c,a[1],b)),a=f,b=i;continue}return b}}function\nH(b,g){var\na=g;for(;;){if(a){var\nh=a[4],i=a[1],c=f(b,a[2],a[3]);if(c){var\nd=H(b,i);if(d){var\na=h;continue}var\ne=d}else\nvar\ne=c;return e}return 1}}function\nJ(b,g){var\na=g;for(;;){if(a){var\nh=a[4],i=a[1],c=f(b,a[2],a[3]);if(c)var\nd=c;else{var\ne=J(b,i);if(!e){var\na=h;continue}var\nd=e}return d}return 0}}function\nK(d,c,b){if(b){var\ne=b[4],f=b[3],g=b[2];return a(K(d,c,b[1]),g,f,e)}return q(d,c)}function\nL(d,c,b){if(b){var\ne=b[3],f=b[2],g=b[1];return a(g,f,e,L(d,c,b[4]))}return q(d,c)}function\nc(e,g,f,b){if(e){if(b){var\nh=b[5],i=e[5],j=b[4],k=b[3],l=b[2],m=b[1],n=e[4],o=e[3],p=e[2],q=e[1];return(h+2|0)<i?a(q,p,o,c(n,g,f,b)):(i+2|0)<h?a(c(e,g,f,m),l,k,j):d(e,g,f,b)}return L(g,f,e)}return K(g,f,b)}function\nj(b,a){if(b){if(a){var\nd=n(a),e=d[2],f=d[1];return c(b,f,e,r(a))}return b}return a}function\no(d,e,b,a){return b?c(d,e,b[1],a):j(d,a)}function\ni(b,a){if(a){var\nd=a[4],e=a[3],h=a[2],j=a[1],m=f(g[1],b,h);if(0===m)return[0,j,[0,e],d];if(0<=m){var\nk=i(b,d),n=k[3],o=k[2];return[0,c(j,h,e,k[1]),o,n]}var\nl=i(b,j),p=l[2],q=l[1];return[0,q,p,c(l[3],h,e,d)]}return k0}function\nk(c,b,a){if(b){var\nd=b[2],j=b[5],l=b[4],m=b[3],n=b[1];if(h(a)<=j){var\ne=i(d,a),p=e[2],q=e[1],r=k(c,l,e[3]),t=aJ(c,d,[0,m],p);return o(k(c,n,q),d,t,r)}}else\nif(!a)return 0;if(a){var\nf=a[2],u=a[4],v=a[3],w=a[1],g=i(f,b),x=g[2],y=g[1],z=k(c,g[3],u),A=aJ(c,f,x,[0,v]);return o(k(c,y,w),f,A,z)}throw[0,s,k1]}function\nl(d,b,a){if(b){if(a){var\nj=a[3],e=a[2],k=b[3],f=b[2],u=a[4],v=a[1],w=b[4],x=b[1];if(a[5]<=b[5]){var\ng=i(f,a),m=g[2],y=g[3],n=l(d,x,g[1]),p=l(d,w,y);return m?o(n,f,aJ(d,f,k,m[1]),p):c(n,f,k,p)}var\nh=i(e,b),q=h[2],z=h[3],r=l(d,h[1],v),s=l(d,z,u);return q?o(r,e,aJ(d,e,q[1],j),s):c(r,e,j,s)}var\nt=b}else\nvar\nt=a;return t}function\nx(b,a){if(a){var\ng=a[4],h=a[3],i=a[2],k=a[1],d=x(b,k),l=f(b,i,h),e=x(b,g);if(l){if(k===d&&g===e)return a;return c(d,i,h,e)}return j(d,e)}return 0}function\ny(b,a){if(a){var\nd=a[2],i=a[4],k=a[3],e=y(b,a[1]),g=f(b,d,k),h=y(b,i);return g?c(e,d,g[1],h):j(e,h)}return 0}function\nz(b,a){if(a){var\nd=a[3],e=a[2],n=a[4],g=z(b,a[1]),h=g[2],i=g[1],o=f(b,e,d),k=z(b,n),l=k[2],m=k[1];if(o){var\np=j(h,l);return[0,c(i,e,d,m),p]}var\nq=c(h,e,d,l);return[0,j(i,m),q]}return k2}function\ne(d,c){var\na=d,b=c;for(;;){if(a){var\ne=[0,a[2],a[3],a[4],b],a=a[1],b=e;continue}return b}}function\n_(j,i,h){var\nr=e(h,0),b=e(i,0),a=r;for(;;){if(b){if(a){var\nk=a[4],l=a[3],m=a[2],n=b[4],o=b[3],p=b[2],c=f(g[1],b[1],a[1]);if(0===c){var\nd=f(j,p,m);if(0===d){var\nq=e(l,k),b=e(o,n),a=q;continue}return d}return c}return 1}return a?-1:0}}function\n$(k,j,i){var\ns=e(i,0),b=e(j,0),a=s;for(;;){if(b){if(a){var\nl=a[4],m=a[3],n=a[2],o=b[4],p=b[3],q=b[2],c=0===f(g[1],b[1],a[1])?1:0;if(c){var\nd=f(k,q,n);if(d){var\nr=e(m,l),b=e(p,o),a=r;continue}var\nh=d}else\nvar\nh=c;return h}return 0}return a?0:1}}function\nA(a){if(a){var\nb=a[1],c=A(a[4]);return(A(b)+1|0)+c|0}return 0}function\nM(d,c){var\nb=d,a=c;for(;;){if(a){var\ne=a[3],f=a[2],g=a[1],b=[0,[0,f,e],M(b,a[4])],a=g;continue}return b}}function\naa(a){return M(0,a)}function\nN(b,a){return gx(function(b,a){return m(a[1],a[2],b)},a,b)}function\nab(a){return N(a,C)}function\nB(a,f){if(a){var\nb=a[2],c=a[1],d=e(a[3],a[4]);return[0,[0,c,b],function(a){return B(d,a)}]}return 0}function\nac(a){var\nb=e(a,0);return function(a){return B(b,a)}}function\nO(d,c){var\na=d,b=c;for(;;){if(a){var\ne=[0,a[2],a[3],a[1],b],a=a[4],b=e;continue}return b}}function\nP(a,e){if(a){var\nb=a[2],c=a[1],d=O(a[3],a[4]);return[0,[0,c,b],function(a){return P(d,a)}]}return 0}function\nad(a){var\nb=O(a,0);return function(a){return P(b,a)}}return[0,C,Q,X,m,u,q,t,k,l,_,$,F,G,H,J,x,y,z,A,aa,n,D,Y,Z,n,D,i,R,W,S,T,U,V,v,w,ac,ad,function(k,j){var\na=j,b=0;for(;;){if(a){var\nc=a[4],e=a[3],d=a[2],l=a[1],h=f(g[1],d,k);if(0!==h){if(0<=h){var\na=l,b=[0,d,e,c,b];continue}var\na=c;continue}var\ni=[0,d,e,c,b]}else\nvar\ni=b;return function(a){return B(i,a)}}},N,ab]}var\neE=[A,k3,be(0)];function\ngO(a){return[0,0,0]}function\neF(b,a){a[1]=[0,b,a[1]];a[2]=a[2]+1|0;return 0}function\ncp(a){var\nb=a[1];if(b){var\nc=b[1];a[1]=b[2];a[2]=a[2]-1|0;return c}throw eE}function\nk4(b,a){return bT(b,a[1])}function\ngP(a){var\nb=1<=a?a:1,c=cj<b?cj:b,d=D(c);return[0,d,0,c,d]}function\ngQ(a){return dg(a[1],0,a[2])}function\ngR(a,c){var\nd=a[2],b=[0,a[3]];for(;;){if(b[1]<(d+c|0)){b[1]=2*b[1]|0;continue}if(cj<b[1])if((d+c|0)<=cj)b[1]=cj;else\nch(k7);var\ne=D(b[1]);gC(a[1],0,e,0,a[2]);a[1]=e;a[3]=b[1];if((a[2]+c|0)<=a[3]){if((d+c|0)<=a[3])return 0;throw[0,s,k5]}throw[0,s,k6]}}function\nbU(a,c){var\nb=k(c),d=a[2]+b|0;if(a[3]<d)gR(a,b);bd(c,0,a[1],a[2],b);a[2]=d;return 0}function\neG(a){return 5===a[2]?12:-6}function\ngS(a){return[0,0,D(a)]}function\ngT(a,g){var\nb=ax(a[2]),c=a[1]+g|0,d=b<c?1:0;if(d){var\ne=D(de(b*2|0,c));gC(a[2],0,e,0,b);a[2]=e;var\nf=0}else\nvar\nf=d;return f}function\nbV(a,b){gT(a,1);aL(a[2],a[1],b);a[1]=a[1]+1|0;return 0}function\nS(a,c){var\nb=k(c);gT(a,b);aZ(c,0,a[2],a[1],b);a[1]=a[1]+b|0;return 0}function\ngU(a){return dg(a[2],0,a[1])}function\ngV(a){if(typeof\na===\"number\")switch(a){case\n0:return k8;case\n1:return k9;case\n2:return k_;case\n3:return k$;case\n4:return la;case\n5:return lb;default:return lc}else\nswitch(a[0]){case\n0:return a[1];case\n1:return a[1];default:return h(ld,gE(1,a[1]))}}function\neH(b,c){var\na=c;for(;;)if(typeof\na===\"number\")return 0;else\nswitch(a[0]){case\n0:var\nd=a[1];S(b,le);var\na=d;continue;case\n1:var\ne=a[1];S(b,lf);var\na=e;continue;case\n2:var\nf=a[1];S(b,lg);var\na=f;continue;case\n3:var\ng=a[1];S(b,lh);var\na=g;continue;case\n4:var\nh=a[1];S(b,li);var\na=h;continue;case\n5:var\ni=a[1];S(b,lj);var\na=i;continue;case\n6:var\nj=a[1];S(b,lk);var\na=j;continue;case\n7:var\nk=a[1];S(b,ll);var\na=k;continue;case\n8:var\nl=a[2],m=a[1];S(b,lm);eH(b,m);S(b,ln);var\na=l;continue;case\n9:var\nn=a[3],o=a[1];S(b,lo);eH(b,o);S(b,lp);var\na=n;continue;case\n10:var\np=a[1];S(b,lq);var\na=p;continue;case\n11:var\nq=a[1];S(b,lr);var\na=q;continue;case\n12:var\nr=a[1];S(b,ls);var\na=r;continue;case\n13:var\ns=a[1];S(b,lt);var\na=s;continue;default:var\nt=a[1];S(b,lu);var\na=t;continue}}function\nK(a){if(typeof\na===\"number\")return 0;else\nswitch(a[0]){case\n0:return[0,K(a[1])];case\n1:return[1,K(a[1])];case\n2:return[2,K(a[1])];case\n3:return[3,K(a[1])];case\n4:return[4,K(a[1])];case\n5:return[5,K(a[1])];case\n6:return[6,K(a[1])];case\n7:return[7,K(a[1])];case\n8:var\nb=a[1];return[8,b,K(a[2])];case\n9:var\nc=a[2],d=a[1];return[9,c,d,K(a[3])];case\n10:return[10,K(a[1])];case\n11:return[11,K(a[1])];case\n12:return[12,K(a[1])];case\n13:return[13,K(a[1])];default:return[14,K(a[1])]}}function\nT(a){if(typeof\na===\"number\"){var\ns=function(a){return 0},t=function(a){return 0},u=function(a){return 0};return[0,function(a){return 0},u,t,s]}else\nswitch(a[0]){case\n0:var\nc=T(a[1]),v=c[4],w=c[3],x=c[2],y=c[1],z=function(a){b(x,0);return 0};return[0,function(a){b(y,0);return 0},z,w,v];case\n1:var\nd=T(a[1]),A=d[4],B=d[3],C=d[2],D=d[1],E=function(a){b(C,0);return 0};return[0,function(a){b(D,0);return 0},E,B,A];case\n2:var\ne=T(a[1]),F=e[4],G=e[3],H=e[2],I=e[1],J=function(a){b(H,0);return 0};return[0,function(a){b(I,0);return 0},J,G,F];case\n3:var\nf=T(a[1]),L=f[4],N=f[3],O=f[2],P=f[1],Q=function(a){b(O,0);return 0};return[0,function(a){b(P,0);return 0},Q,N,L];case\n4:var\ng=T(a[1]),R=g[4],S=g[3],U=g[2],V=g[1],W=function(a){b(U,0);return 0};return[0,function(a){b(V,0);return 0},W,S,R];case\n5:var\nh=T(a[1]),X=h[4],Y=h[3],Z=h[2],_=h[1],$=function(a){b(Z,0);return 0};return[0,function(a){b(_,0);return 0},$,Y,X];case\n6:var\ni=T(a[1]),aa=i[4],ab=i[3],ac=i[2],ad=i[1],ae=function(a){b(ac,0);return 0};return[0,function(a){b(ad,0);return 0},ae,ab,aa];case\n7:var\nj=T(a[1]),af=j[4],ag=j[3],ah=j[2],ai=j[1],aj=function(a){b(ah,0);return 0};return[0,function(a){b(ai,0);return 0},aj,ag,af];case\n8:var\nk=T(a[2]),ak=k[4],al=k[3],am=k[2],an=k[1],ao=function(a){b(am,0);return 0};return[0,function(a){b(an,0);return 0},ao,al,ak];case\n9:var\nap=a[2],aq=a[1],l=T(a[3]),ar=l[4],as=l[3],at=l[2],au=l[1],m=T(M(K(aq),ap)),av=m[4],aw=m[3],ax=m[2],ay=m[1],az=function(a){b(av,0);b(ar,0);return 0},aA=function(a){b(as,0);b(aw,0);return 0},aB=function(a){b(ax,0);b(at,0);return 0};return[0,function(a){b(au,0);b(ay,0);return 0},aB,aA,az];case\n10:var\nn=T(a[1]),aC=n[4],aD=n[3],aE=n[2],aF=n[1],aG=function(a){b(aE,0);return 0};return[0,function(a){b(aF,0);return 0},aG,aD,aC];case\n11:var\no=T(a[1]),aH=o[4],aI=o[3],aJ=o[2],aK=o[1],aL=function(a){b(aJ,0);return 0};return[0,function(a){b(aK,0);return 0},aL,aI,aH];case\n12:var\np=T(a[1]),aM=p[4],aN=p[3],aO=p[2],aP=p[1],aQ=function(a){b(aO,0);return 0};return[0,function(a){b(aP,0);return 0},aQ,aN,aM];case\n13:var\nq=T(a[1]),aR=q[4],aS=q[3],aT=q[2],aU=q[1],aV=function(a){b(aR,0);return 0},aW=function(a){b(aS,0);return 0},aX=function(a){b(aT,0);return 0};return[0,function(a){b(aU,0);return 0},aX,aW,aV];default:var\nr=T(a[1]),aY=r[4],aZ=r[3],a0=r[2],a1=r[1],a2=function(a){b(aY,0);return 0},a3=function(a){b(aZ,0);return 0},a4=function(a){b(a0,0);return 0};return[0,function(a){b(a1,0);return 0},a4,a3,a2]}}function\nM(d,c){var\na=0;if(typeof\nd===\"number\")if(typeof\nc===\"number\")return 0;else\nswitch(c[0]){case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:a=4;break;case\n8:a=5;break;case\n9:a=6;break;default:throw[0,s,lv]}else\nswitch(d[0]){case\n0:var\ne=0,u=d[1];if(typeof\nc!==\"number\")switch(c[0]){case\n0:return[0,M(u,c[1])];case\n8:a=5;e=1;break;case\n9:a=6;e=1;break;case\n10:e=1;break;case\n11:a=1;e=1;break;case\n12:a=2;e=1;break;case\n13:a=3;e=1;break;case\n14:a=4;e=1;break}if(!e)a=7;break;case\n1:var\nf=0,v=d[1];if(typeof\nc!==\"number\")switch(c[0]){case\n1:return[1,M(v,c[1])];case\n8:a=5;f=1;break;case\n9:a=6;f=1;break;case\n10:f=1;break;case\n11:a=1;f=1;break;case\n12:a=2;f=1;break;case\n13:a=3;f=1;break;case\n14:a=4;f=1;break}if(!f)a=7;break;case\n2:var\ng=0,w=d[1];if(typeof\nc===\"number\")g=1;else\nswitch(c[0]){case\n2:return[2,M(w,c[1])];case\n8:a=5;break;case\n9:a=6;break;case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:a=4;break;default:g=1}if(g)a=7;break;case\n3:var\nh=0,x=d[1];if(typeof\nc===\"number\")h=1;else\nswitch(c[0]){case\n3:return[3,M(x,c[1])];case\n8:a=5;break;case\n9:a=6;break;case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:a=4;break;default:h=1}if(h)a=7;break;case\n4:var\ni=0,y=d[1];if(typeof\nc===\"number\")i=1;else\nswitch(c[0]){case\n4:return[4,M(y,c[1])];case\n8:a=5;break;case\n9:a=6;break;case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:a=4;break;default:i=1}if(i)a=7;break;case\n5:var\nj=0,z=d[1];if(typeof\nc===\"number\")j=1;else\nswitch(c[0]){case\n5:return[5,M(z,c[1])];case\n8:a=5;break;case\n9:a=6;break;case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:a=4;break;default:j=1}if(j)a=7;break;case\n6:var\nk=0,A=d[1];if(typeof\nc===\"number\")k=1;else\nswitch(c[0]){case\n6:return[6,M(A,c[1])];case\n8:a=5;break;case\n9:a=6;break;case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:a=4;break;default:k=1}if(k)a=7;break;case\n7:var\nl=0,B=d[1];if(typeof\nc===\"number\")l=1;else\nswitch(c[0]){case\n7:return[7,M(B,c[1])];case\n8:a=5;break;case\n9:a=6;break;case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:a=4;break;default:l=1}if(l)a=7;break;case\n8:var\nm=0,C=d[2],D=d[1];if(typeof\nc===\"number\")m=1;else\nswitch(c[0]){case\n8:var\nE=c[1],F=M(C,c[2]);return[8,M(D,E),F];case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:a=4;break;default:m=1}if(m)throw[0,s,lE];break;case\n9:var\nn=0,G=d[3],H=d[2],I=d[1];if(typeof\nc===\"number\")n=1;else\nswitch(c[0]){case\n8:a=5;break;case\n9:var\nJ=c[3],L=c[2],N=c[1],t=T(M(K(H),N)),O=t[4];b(t[2],0);b(O,0);return[9,I,L,M(G,J)];case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:a=4;break;default:n=1}if(n)throw[0,s,lF];break;case\n10:var\nP=d[1];if(typeof\nc!==\"number\"&&10===c[0])return[10,M(P,c[1])];throw[0,s,lG];case\n11:var\no=0,Q=d[1];if(typeof\nc===\"number\")o=1;else\nswitch(c[0]){case\n10:break;case\n11:return[11,M(Q,c[1])];default:o=1}if(o)throw[0,s,lH];break;case\n12:var\np=0,R=d[1];if(typeof\nc===\"number\")p=1;else\nswitch(c[0]){case\n10:break;case\n11:a=1;break;case\n12:return[12,M(R,c[1])];default:p=1}if(p)throw[0,s,lI];break;case\n13:var\nq=0,S=d[1];if(typeof\nc===\"number\")q=1;else\nswitch(c[0]){case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:return[13,M(S,c[1])];default:q=1}if(q)throw[0,s,lJ];break;default:var\nr=0,U=d[1];if(typeof\nc===\"number\")r=1;else\nswitch(c[0]){case\n10:break;case\n11:a=1;break;case\n12:a=2;break;case\n13:a=3;break;case\n14:return[14,M(U,c[1])];default:r=1}if(r)throw[0,s,lK]}switch(a){case\n0:throw[0,s,ly];case\n1:throw[0,s,lz];case\n2:throw[0,s,lA];case\n3:throw[0,s,lB];case\n4:throw[0,s,lC];case\n5:throw[0,s,lw];case\n6:throw[0,s,lx];default:throw[0,s,lD]}}var\nP=[A,lL,be(0)];function\ndk(b,a){if(typeof\nb===\"number\")return[0,0,a];else{if(0===b[0])return[0,[0,b[1],b[2]],a];if(typeof\na!==\"number\"&&2===a[0])return[0,[1,b[1]],a[1]];throw P}}function\ncq(e,b,d){var\na=dk(e,d);if(typeof\nb===\"number\"){if(b){var\nc=a[2];if(typeof\nc!==\"number\"&&2===c[0])return[0,a[1],1,c[1]];throw P}return[0,a[1],0,a[2]]}return[0,a[1],[0,b[1]],a[2]]}function\nac(c,d,a){if(typeof\nc===\"number\")return[0,0,u(d,a)];else\nswitch(c[0]){case\n0:if(typeof\na!==\"number\"&&0===a[0]){var\ng=ac(c[1],d,a[1]);return[0,[0,g[1]],g[2]]}break;case\n1:if(typeof\na!==\"number\"&&1===a[0]){var\nh=ac(c[1],d,a[1]);return[0,[1,h[1]],h[2]]}break;case\n2:if(typeof\na!==\"number\"&&2===a[0]){var\ni=ac(c[1],d,a[1]);return[0,[2,i[1]],i[2]]}break;case\n3:if(typeof\na!==\"number\"&&3===a[0]){var\nj=ac(c[1],d,a[1]);return[0,[3,j[1]],j[2]]}break;case\n4:if(typeof\na!==\"number\"&&4===a[0]){var\nk=ac(c[1],d,a[1]);return[0,[4,k[1]],k[2]]}break;case\n5:if(typeof\na!==\"number\"&&5===a[0]){var\nl=ac(c[1],d,a[1]);return[0,[5,l[1]],l[2]]}break;case\n6:if(typeof\na!==\"number\"&&6===a[0]){var\nm=ac(c[1],d,a[1]);return[0,[6,m[1]],m[2]]}break;case\n7:if(typeof\na!==\"number\"&&7===a[0]){var\nn=ac(c[1],d,a[1]);return[0,[7,n[1]],n[2]]}break;case\n8:if(typeof\na!==\"number\"&&8===a[0]){var\no=a[1],x=a[2],y=c[2];if(bQ([0,c[1]],[0,o]))throw P;var\np=ac(y,d,x);return[0,[8,o,p[1]],p[2]]}break;case\n9:if(typeof\na!==\"number\"&&9===a[0]){var\ne=a[2],f=a[1],z=a[3],A=c[3],B=c[2],C=c[1],D=[0,E(f)];if(bQ([0,E(C)],D))throw P;var\nF=[0,E(e)];if(bQ([0,E(B)],F))throw P;var\nq=T(M(K(f),e)),G=q[4];b(q[2],0);b(G,0);var\nr=ac(E(A),d,z),H=r[2];return[0,[9,f,e,K(r[1])],H]}break;case\n10:if(typeof\na!==\"number\"&&10===a[0]){var\ns=ac(c[1],d,a[1]);return[0,[10,s[1]],s[2]]}break;case\n11:if(typeof\na!==\"number\"&&11===a[0]){var\nt=ac(c[1],d,a[1]);return[0,[11,t[1]],t[2]]}break;case\n13:if(typeof\na!==\"number\"&&13===a[0]){var\nv=ac(c[1],d,a[1]);return[0,[13,v[1]],v[2]]}break;case\n14:if(typeof\na!==\"number\"&&14===a[0]){var\nw=ac(c[1],d,a[1]);return[0,[14,w[1]],w[2]]}break}throw P}function\nu(b,a){if(typeof\nb===\"number\")return[0,0,a];else\nswitch(b[0]){case\n0:if(typeof\na!==\"number\"&&0===a[0]){var\ns=u(b[1],a[1]);return[0,[0,s[1]],s[2]]}break;case\n1:if(typeof\na!==\"number\"&&0===a[0]){var\nt=u(b[1],a[1]);return[0,[1,t[1]],t[2]]}break;case\n2:var\nae=b[2],v=dk(b[1],a),e=v[2],af=v[1];if(typeof\ne!==\"number\"&&1===e[0]){var\nw=u(ae,e[1]);return[0,[2,af,w[1]],w[2]]}throw P;case\n3:var\nag=b[2],x=dk(b[1],a),f=x[2],ah=x[1];if(typeof\nf!==\"number\"&&1===f[0]){var\ny=u(ag,f[1]);return[0,[3,ah,y[1]],y[2]]}throw P;case\n4:var\nai=b[4],aj=b[1],g=cq(b[2],b[3],a),h=g[3],al=g[1];if(typeof\nh!==\"number\"&&2===h[0]){var\nam=g[2],z=u(ai,h[1]);return[0,[4,aj,al,am,z[1]],z[2]]}throw P;case\n5:var\nan=b[4],ao=b[1],i=cq(b[2],b[3],a),j=i[3],ap=i[1];if(typeof\nj!==\"number\"&&3===j[0]){var\naq=i[2],A=u(an,j[1]);return[0,[5,ao,ap,aq,A[1]],A[2]]}throw P;case\n6:var\nar=b[4],as=b[1],k=cq(b[2],b[3],a),l=k[3],at=k[1];if(typeof\nl!==\"number\"&&4===l[0]){var\nau=k[2],B=u(ar,l[1]);return[0,[6,as,at,au,B[1]],B[2]]}throw P;case\n7:var\nav=b[4],aw=b[1],m=cq(b[2],b[3],a),n=m[3],ax=m[1];if(typeof\nn!==\"number\"&&5===n[0]){var\nay=m[2],C=u(av,n[1]);return[0,[7,aw,ax,ay,C[1]],C[2]]}throw P;case\n8:var\naz=b[4],aA=b[1],o=cq(b[2],b[3],a),p=o[3],aB=o[1];if(typeof\np!==\"number\"&&6===p[0]){var\naC=o[2],D=u(az,p[1]);return[0,[8,aA,aB,aC,D[1]],D[2]]}throw P;case\n9:var\naD=b[2],F=dk(b[1],a),q=F[2],aE=F[1];if(typeof\nq!==\"number\"&&7===q[0]){var\nG=u(aD,q[1]);return[0,[9,aE,G[1]],G[2]]}throw P;case\n10:var\nH=u(b[1],a);return[0,[10,H[1]],H[2]];case\n11:var\naF=b[1],I=u(b[2],a);return[0,[11,aF,I[1]],I[2]];case\n12:var\naG=b[1],J=u(b[2],a);return[0,[12,aG,J[1]],J[2]];case\n13:if(typeof\na!==\"number\"&&8===a[0]){var\nK=a[1],aH=a[2],aI=b[3],aJ=b[1];if(bQ([0,b[2]],[0,K]))throw P;var\nL=u(aI,aH);return[0,[13,aJ,K,L[1]],L[2]]}break;case\n14:if(typeof\na!==\"number\"&&9===a[0]){var\nM=a[1],aK=a[3],aL=b[3],aM=b[2],aN=b[1],aO=[0,E(M)];if(bQ([0,E(aM)],aO))throw P;var\nN=u(aL,E(aK));return[0,[14,aN,M,N[1]],N[2]]}break;case\n15:if(typeof\na!==\"number\"&&10===a[0]){var\nO=u(b[1],a[1]);return[0,[15,O[1]],O[2]]}break;case\n16:if(typeof\na!==\"number\"&&11===a[0]){var\nQ=u(b[1],a[1]);return[0,[16,Q[1]],Q[2]]}break;case\n17:var\naP=b[1],R=u(b[2],a);return[0,[17,aP,R[1]],R[2]];case\n18:var\nS=b[2],r=b[1];if(0===r[0]){var\nW=r[1],aT=W[2],X=u(W[1],a),aU=X[1],Y=u(S,X[2]);return[0,[18,[0,[0,aU,aT]],Y[1]],Y[2]]}var\nZ=r[1],aV=Z[2],_=u(Z[1],a),aW=_[1],$=u(S,_[2]);return[0,[18,[1,[0,aW,aV]],$[1]],$[2]];case\n19:if(typeof\na!==\"number\"&&13===a[0]){var\nT=u(b[1],a[1]);return[0,[19,T[1]],T[2]]}break;case\n20:if(typeof\na!==\"number\"&&1===a[0]){var\naQ=b[2],aR=b[1],U=u(b[3],a[1]);return[0,[20,aR,aQ,U[1]],U[2]]}break;case\n21:if(typeof\na!==\"number\"&&2===a[0]){var\naS=b[1],V=u(b[2],a[1]);return[0,[21,aS,V[1]],V[2]]}break;case\n23:var\nd=b[2],c=b[1];if(typeof\nc===\"number\")switch(c){case\n0:return ak(c,d,a);case\n1:return ak(c,d,a);case\n2:if(typeof\na!==\"number\"&&14===a[0]){var\naa=u(d,a[1]);return[0,[23,2,aa[1]],aa[2]]}throw P;default:return ak(c,d,a)}else\nswitch(c[0]){case\n0:return ak(c,d,a);case\n1:return ak(c,d,a);case\n2:return ak(c,d,a);case\n3:return ak(c,d,a);case\n4:return ak(c,d,a);case\n5:return ak(c,d,a);case\n6:return ak(c,d,a);case\n7:return ak(c,d,a);case\n8:return ak([8,c[1],c[2]],d,a);case\n9:var\naX=c[1],ab=ac(c[2],d,a),ad=ab[2];return[0,[23,[9,aX,ab[1]],ad[1]],ad[2]];case\n10:return ak(c,d,a);default:return ak(c,d,a)}}throw P}function\nak(d,c,b){var\na=u(c,b);return[0,[23,d,a[1]],a[2]]}function\nal(l,g,a){var\nb=k(a),h=0<=g?l:0,d=dc(g);if(d<=b)return a;var\nm=2===h?48:32,c=aN(d,m);switch(h){case\n0:aZ(a,0,c,0,b);break;case\n1:aZ(a,0,c,d-b|0,b);break;default:var\ne=0;if(0<b){var\ni=0;if(43!==B(a,0)&&45!==B(a,0)&&32!==B(a,0)){e=1;i=1}if(!i){aL(c,0,B(a,0));aZ(a,1,c,(d-b|0)+1|0,b-1|0)}}else\ne=1;if(e){var\nf=0;if(1<b&&48===B(a,0)){var\nj=0;if(iu!==B(a,1)&&88!==B(a,1)){f=1;j=1}if(!j){aL(c,1,B(a,1));aZ(a,2,c,(d-b|0)+2|0,b-2|0)}}else\nf=1;if(f)aZ(a,0,c,d-b|0,b)}}return O(c)}function\nbW(l,b){var\nc=dc(l),a=k(b),d=B(b,0),e=0;if(58<=d){if(71<=d){if(!(5<d+i$>>>0))e=1}else\nif(65<=d)e=1}else{var\nf=0;if(32!==d)if(43<=d)switch(d-43|0){case\n5:if(a<(c+2|0)&&1<a){var\nj=0;if(iu===B(b,1)||88===B(b,1))j=1;if(j){var\nh=aN(c+2|0,48);aL(h,1,B(b,1));aZ(b,2,h,(c-a|0)+4|0,a-2|0);return O(h)}}e=1;f=1;break;case\n0:case\n2:break;case\n1:case\n3:case\n4:f=1;break;default:e=1;f=1}else\nf=1;if(!f&&a<(c+1|0)){var\ng=aN(c+1|0,48);aL(g,0,d);aZ(b,1,g,(c-a|0)+2|0,a-1|0);return O(g)}}if(e&&a<c){var\ni=aN(c,48);aZ(b,0,i,c-a|0,a);return O(i)}return b}function\nlM(l){var\nj=0,B=k(l);for(;;){if(B<=j)var\np=l;else{var\no=ay(l,j)+fW|0,q=0;if(59<o>>>0){if(33<o-61>>>0)q=1}else\nif(2===o)q=1;if(!q){var\nj=j+1|0;continue}var\ne=au(l),a=[0,0],s=ax(e)-1|0,x=0;if(!(s<0)){var\ni=x;for(;;){var\nf=bL(e,i),g=0;if(32<=f){var\nm=f-34|0,r=0;if(58<m>>>0){if(93<=m)r=1}else\nif(56<m-1>>>0){g=1;r=1}if(!r){var\nn=1;g=2}}else\nif(11<=f){if(13===f)g=1}else\nif(8<=f)g=1;switch(g){case\n0:var\nn=4;break;case\n1:var\nn=2;break}a[1]=a[1]+n|0;var\nA=i+1|0;if(s!==i){var\ni=A;continue}break}}if(a[1]===ax(e))var\nu=ez(e);else{var\nb=D(a[1]);a[1]=0;var\nt=ax(e)-1|0,y=0;if(!(t<0)){var\nh=y;for(;;){var\nc=bL(e,h),d=0;if(35<=c)if(92===c)d=2;else\nif(cI<=c)d=1;else\nd=3;else\nif(32<=c)if(34<=c)d=2;else\nd=3;else\nif(14<=c)d=1;else\nswitch(c){case\n8:H(b,a[1],92);a[1]++;H(b,a[1],98);break;case\n9:H(b,a[1],92);a[1]++;H(b,a[1],116);break;case\n10:H(b,a[1],92);a[1]++;H(b,a[1],110);break;case\n13:H(b,a[1],92);a[1]++;H(b,a[1],114);break;default:d=1}switch(d){case\n1:H(b,a[1],92);a[1]++;H(b,a[1],48+(c/fR|0)|0);a[1]++;H(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;H(b,a[1],48+(c%10|0)|0);break;case\n2:H(b,a[1],92);a[1]++;H(b,a[1],c);break;case\n3:H(b,a[1],c);break}a[1]++;var\nz=h+1|0;if(t!==h){var\nh=z;continue}break}}var\nu=b}var\np=O(u)}var\nv=k(p),w=aN(v+2|0,34);bd(p,0,w,1,v);return O(w)}}function\ngW(d,g){var\nh=dc(g),f=mB[1];switch(d[2]){case\n0:var\nb=102;break;case\n1:var\nb=101;break;case\n2:var\nb=69;break;case\n3:var\nb=iv;break;case\n4:var\nb=71;break;case\n5:var\nb=f;break;case\n6:var\nb=104;break;case\n7:var\nb=72;break;default:var\nb=70}var\nc=gS(16);bV(c,37);switch(d[1]){case\n0:break;case\n1:bV(c,43);break;default:bV(c,32)}if(8<=d[2])bV(c,35);bV(c,46);S(c,a(e+h));bV(c,b);return gU(c)}function\ndl(n,a){if(13<=n){var\ng=[0,0],h=k(a)-1|0,o=0;if(!(h<0)){var\nc=o;for(;;){if(!(9<ay(a,c)+iB>>>0))g[1]++;var\nr=c+1|0;if(h!==c){var\nc=r;continue}break}}var\ni=g[1],j=D(k(a)+((i-1|0)/3|0)|0),l=[0,0],d=function(a){aL(j,l[1],a);l[1]++;return 0},e=[0,((i-1|0)%3|0)+1|0],m=k(a)-1|0,p=0;if(!(m<0)){var\nb=p;for(;;){var\nf=ay(a,b);if(9<f+iB>>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var\nq=b+1|0;if(m!==b){var\nb=q;continue}break}}return O(j)}return a}function\nmC(b,c){switch(b){case\n1:var\na=lO;break;case\n2:var\na=lP;break;case\n4:var\na=lR;break;case\n5:var\na=lS;break;case\n6:var\na=lT;break;case\n7:var\na=lU;break;case\n8:var\na=lV;break;case\n9:var\na=lW;break;case\n10:var\na=lX;break;case\n11:var\na=lY;break;case\n0:case\n13:var\na=lN;break;case\n3:case\n14:var\na=lQ;break;default:var\na=lZ}return dl(b,el(a,c))}function\nmD(b,c){switch(b){case\n1:var\na=mc;break;case\n2:var\na=md;break;case\n4:var\na=mf;break;case\n5:var\na=mg;break;case\n6:var\na=mh;break;case\n7:var\na=mi;break;case\n8:var\na=mj;break;case\n9:var\na=mk;break;case\n10:var\na=ml;break;case\n11:var\na=mm;break;case\n0:case\n13:var\na=mb;break;case\n3:case\n14:var\na=me;break;default:var\na=mn}return dl(b,el(a,c))}function\nmE(b,c){switch(b){case\n1:var\na=mp;break;case\n2:var\na=mq;break;case\n4:var\na=ms;break;case\n5:var\na=mt;break;case\n6:var\na=mu;break;case\n7:var\na=mv;break;case\n8:var\na=mw;break;case\n9:var\na=mx;break;case\n10:var\na=my;break;case\n11:var\na=mz;break;case\n0:case\n13:var\na=mo;break;case\n3:case\n14:var\na=mr;break;default:var\na=mA}return dl(b,el(a,c))}function\nmF(b,c){switch(b){case\n1:var\na=l1;break;case\n2:var\na=l2;break;case\n4:var\na=l4;break;case\n5:var\na=l5;break;case\n6:var\na=l6;break;case\n7:var\na=l7;break;case\n8:var\na=l8;break;case\n9:var\na=l9;break;case\n10:var\na=l_;break;case\n11:var\na=l$;break;case\n0:case\n13:var\na=l0;break;case\n3:case\n14:var\na=l3;break;default:var\na=ma}return dl(b,zW(a,c))}function\na1(b,e,a){function\nf(d){switch(b[1]){case\n0:var\nc=45;break;case\n1:var\nc=43;break;default:var\nc=32}return zS(a,e,c)}function\nl(c){var\nb=zG(a);return 3===b?a<0.?mH:mI:4<=b?mJ:c}switch(b[2]){case\n5:var\nd=gc(gW(b,e),a),c=0,m=k(d);for(;;){if(c===m)var\nj=0;else{var\ng=B(d,c)-46|0,i=0;if(23<g>>>0){if(55===g)i=1}else\nif(21<g-1>>>0)i=1;if(!i){var\nc=c+1|0;continue}var\nj=1}var\nn=j?d:h(d,mG);return l(n)}case\n6:return f(0);case\n7:return O(eB(kx,au(f(0))));case\n8:return l(f(0));default:return gc(gW(b,e),a)}}function\ncx(e,I,G,F){var\nc=I,a=G,d=F;for(;;)if(typeof\nd===\"number\")return b(c,a);else\nswitch(d[0]){case\n0:var\nJ=d[1];return function(b){return q(c,[5,a,b],J)};case\n1:var\nL=d[1];return function(b){var\ne=0;if(40<=b)if(92===b)var\nd=kq;else\nif(cI<=b)e=1;else\ne=2;else\nif(32<=b)if(39<=b)var\nd=kr;else\ne=2;else\nif(14<=b)e=1;else\nswitch(b){case\n8:var\nd=ks;break;case\n9:var\nd=kt;break;case\n10:var\nd=ku;break;case\n13:var\nd=kv;break;default:e=1}switch(e){case\n1:var\nf=D(4);H(f,0,92);H(f,1,48+(b/fR|0)|0);H(f,2,48+((b/10|0)%10|0)|0);H(f,3,48+(b%10|0)|0);var\nd=O(f);break;case\n2:var\ng=D(1);H(g,0,b);var\nd=O(g);break}var\nh=k(d),i=aN(h+2|0,39);bd(d,0,i,1,h);return q(c,[4,a,O(i)],L)};case\n2:var\nM=d[2],N=d[1];return eI(c,a,M,N,function(a){return a});case\n3:return eI(c,a,d[2],d[1],lM);case\n4:return dm(c,a,d[4],d[2],d[3],mC,d[1]);case\n5:return dm(c,a,d[4],d[2],d[3],mD,d[1]);case\n6:return dm(c,a,d[4],d[2],d[3],mE,d[1]);case\n7:return dm(c,a,d[4],d[2],d[3],mF,d[1]);case\n8:var\ni=d[4],j=d[3],l=d[2],h=d[1];if(typeof\nl===\"number\"){if(typeof\nj===\"number\")return j?function(d,b){return q(c,[4,a,a1(h,d,b)],i)}:function(b){return q(c,[4,a,a1(h,eG(h),b)],i)};var\nae=j[1];return function(b){return q(c,[4,a,a1(h,ae,b)],i)}}else{if(0===l[0]){var\np=l[2],r=l[1];if(typeof\nj===\"number\")return j?function(d,b){return q(c,[4,a,al(r,p,a1(h,d,b))],i)}:function(b){return q(c,[4,a,al(r,p,a1(h,eG(h),b))],i)};var\naf=j[1];return function(b){return q(c,[4,a,al(r,p,a1(h,af,b))],i)}}var\nv=l[1];if(typeof\nj===\"number\")return j?function(e,d,b){return q(c,[4,a,al(v,e,a1(h,d,b))],i)}:function(d,b){return q(c,[4,a,al(v,d,a1(h,eG(h),b))],i)};var\nag=j[1];return function(d,b){return q(c,[4,a,al(v,d,a1(h,ag,b))],i)}}case\n9:return eI(c,a,d[2],d[1],kg);case\n10:var\na=[7,a],d=d[1];continue;case\n11:var\na=[2,a,d[1]],d=d[2];continue;case\n12:var\na=[3,a,d[1]],d=d[2];continue;case\n13:var\nQ=d[3],R=d[2],w=gS(16);eH(w,R);var\nC=gU(w);return function(b){return q(c,[4,a,C],Q)};case\n14:var\nS=d[3],T=d[2];return function(d){var\ne=d[1],b=u(e,E(K(T)));if(typeof\nb[2]===\"number\")return q(c,a,y(b[1],S));throw P};case\n15:var\nU=d[1];return function(d,b){return q(c,[6,a,function(a){return f(d,a,b)}],U)};case\n16:var\nV=d[1];return function(b){return q(c,[6,a,b],V)};case\n17:var\na=[0,a,d[1]],d=d[2];continue;case\n18:var\no=d[1];if(0===o[0]){var\nW=d[2],X=o[1][1],Y=0,c=function(b,c,d){return function(a){return q(c,[1,b,[0,a]],d)}}(a,c,W),a=Y,d=X;continue}var\nZ=d[2],_=o[1][1],$=0,c=function(b,c,d){return function(a){return q(c,[1,b,[1,a]],d)}}(a,c,Z),a=$,d=_;continue;case\n19:throw[0,s,mL];case\n20:var\naa=d[3],ab=[8,a,mM];return function(a){return q(c,ab,aa)};case\n21:var\nac=d[2];return function(b){return q(c,[4,a,el(mN,b)],ac)};case\n22:var\nad=d[1];return function(b){return q(c,[5,a,b],ad)};case\n23:var\ng=d[2],m=d[1];if(typeof\nm===\"number\")switch(m){case\n0:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n1:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n2:throw[0,s,mO];default:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g])}else\nswitch(m[0]){case\n0:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n1:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n2:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n3:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n4:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n5:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n6:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n7:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n8:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);case\n9:var\nB=m[2];return e<50?fi(e+1|0,c,a,B,g):n(fi,[0,c,a,B,g]);case\n10:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g]);default:return e<50?t(e+1|0,c,a,g):n(t,[0,c,a,g])}default:var\nx=d[3],z=d[1],A=b(d[2],0);return e<50?fh(e+1|0,c,a,x,z,A):n(fh,[0,c,a,x,z,A])}}function\nfi(e,d,c,a,b){if(typeof\na===\"number\")return e<50?t(e+1|0,d,c,b):n(t,[0,d,c,b]);else\nswitch(a[0]){case\n0:var\nf=a[1];return function(a){return ar(d,c,f,b)};case\n1:var\ng=a[1];return function(a){return ar(d,c,g,b)};case\n2:var\nh=a[1];return function(a){return ar(d,c,h,b)};case\n3:var\ni=a[1];return function(a){return ar(d,c,i,b)};case\n4:var\nj=a[1];return function(a){return ar(d,c,j,b)};case\n5:var\nk=a[1];return function(a){return ar(d,c,k,b)};case\n6:var\nl=a[1];return function(a){return ar(d,c,l,b)};case\n7:var\nm=a[1];return function(a){return ar(d,c,m,b)};case\n8:var\no=a[2];return function(a){return ar(d,c,o,b)};case\n9:var\np=a[3],q=a[2],r=M(K(a[1]),q);return function(a){return ar(d,c,Z(r,p),b)};case\n10:var\nu=a[1];return function(e,a){return ar(d,c,u,b)};case\n11:var\nv=a[1];return function(a){return ar(d,c,v,b)};case\n12:var\nw=a[1];return function(a){return ar(d,c,w,b)};case\n13:throw[0,s,mP];default:throw[0,s,mQ]}}function\nt(d,b,e,a){var\nc=[8,e,mR];return d<50?cx(d+1|0,b,c,a):n(cx,[0,b,c,a])}function\nfh(h,c,f,a,e,d){if(e){var\ni=e[1];return function(e){return mK(c,f,a,i,b(d,e))}}var\ng=[4,f,d];return h<50?cx(h+1|0,c,g,a):n(cx,[0,c,g,a])}function\nq(a,b,c){return bR(cx(0,a,b,c))}function\nar(a,b,c,d){return bR(fi(0,a,b,c,d))}function\nmK(a,b,c,d,e){return bR(fh(0,a,b,c,d,e))}function\neI(f,e,d,a,c){if(typeof\na===\"number\")return function(a){return q(f,[4,e,b(c,a)],d)};else{if(0===a[0]){var\ng=a[2],h=a[1];return function(a){return q(f,[4,e,al(h,g,b(c,a))],d)}}var\ni=a[1];return function(g,a){return q(f,[4,e,al(i,g,b(c,a))],d)}}}function\ndm(g,e,d,h,c,b,a){if(typeof\nh===\"number\"){if(typeof\nc===\"number\")return c?function(h,c){return q(g,[4,e,bW(h,f(b,a,c))],d)}:function(c){return q(g,[4,e,f(b,a,c)],d)};var\nl=c[1];return function(c){return q(g,[4,e,bW(l,f(b,a,c))],d)}}else{if(0===h[0]){var\ni=h[2],j=h[1];if(typeof\nc===\"number\")return c?function(h,c){return q(g,[4,e,al(j,i,bW(h,f(b,a,c)))],d)}:function(c){return q(g,[4,e,al(j,i,f(b,a,c))],d)};var\nm=c[1];return function(c){return q(g,[4,e,al(j,i,bW(m,f(b,a,c)))],d)}}var\nk=h[1];if(typeof\nc===\"number\")return c?function(i,h,c){return q(g,[4,e,al(k,i,bW(h,f(b,a,c)))],d)}:function(h,c){return q(g,[4,e,al(k,h,f(b,a,c))],d)};var\nn=c[1];return function(h,c){return q(g,[4,e,al(k,h,bW(n,f(b,a,c)))],d)}}}function\na2(c,f){var\na=f;for(;;)if(typeof\na===\"number\")return 0;else\nswitch(a[0]){case\n0:var\ng=a[1],h=gV(a[2]);a2(c,g);return bS(c,h);case\n1:var\nd=a[2],e=a[1];if(0===d[0]){var\ni=d[1];a2(c,e);bS(c,mS);var\na=i;continue}var\nj=d[1];a2(c,e);bS(c,mT);var\na=j;continue;case\n6:var\nm=a[2];a2(c,a[1]);return b(m,c);case\n7:a2(c,a[1]);return aX(c);case\n8:var\nn=a[2];a2(c,a[1]);return I(n);case\n2:case\n4:var\nk=a[2];a2(c,a[1]);return bS(c,k);default:var\nl=a[2];a2(c,a[1]);return gl(c,l)}}function\nbj(c,g){var\na=g;for(;;)if(typeof\na===\"number\")return 0;else\nswitch(a[0]){case\n0:var\nh=a[1],i=gV(a[2]);bj(c,h);return bU(c,i);case\n1:var\ne=a[2],f=a[1];if(0===e[0]){var\nj=e[1];bj(c,f);bU(c,mU);var\na=j;continue}var\nk=e[1];bj(c,f);bU(c,mV);var\na=k;continue;case\n6:var\nn=a[2];bj(c,a[1]);return bU(c,b(n,0));case\n7:var\na=a[1];continue;case\n8:var\no=a[2];bj(c,a[1]);return I(o);case\n2:case\n4:var\nl=a[2];bj(c,a[1]);return bU(c,l);default:var\nm=a[2];bj(c,a[1]);var\nd=c[2];if(c[3]<=d)gR(c,1);H(c[1],d,m);c[2]=d+1|0;return 0}}function\ngX(d,c){var\na=c[1],b=0;return q(function(a){a2(d,a);return 0},b,a)}function\neJ(a){return gX(aY,a)}function\naO(b){var\na=b[1];return q(function(b){var\na=gP(64);bj(a,b);return gQ(a)},0,a)}var\ndn=[0,0];function\neL(j,i){var\na=j[1+i];if(1-(typeof\na===\"number\"?1:0)){if(bg(a)===eb)return b(aO(mW),a);if(bg(a)===253){var\nd=gc(kl,a),c=0,g=k(d);for(;;){if(g<=c)return h(d,kk);var\ne=B(d,c),f=0;if(48<=e){if(!(58<=e))f=1}else\nif(45===e)f=1;if(f){var\nc=c+1|0;continue}return d}}return mX}return b(aO(mY),a)}function\ngY(b,a){if(b.length-1<=a)return mZ;var\nc=gY(b,a+1|0),d=eL(b,a);return f(aO(m0),d,c)}function\neM(a){function\nq(f){var\nc=f;for(;;){if(c){var\ng=c[2],h=c[1];try{var\ne=0,d=b(h,a);e=1}catch(a){}if(e&&d)return[0,d[1]];var\nc=g;continue}return 0}}var\nj=q(dn[1]);if(j)return j[1];if(a===eu)return m5;if(a===gt)return m6;if(a[1]===gs){var\nd=a[2],k=d[3],r=d[2],t=d[1];return cz(aO(eK),t,r,k,k+5|0,m7)}if(a[1]===s){var\ne=a[2],l=e[3],u=e[2],v=e[1];return cz(aO(eK),v,u,l,l+6|0,m8)}if(a[1]===gv){var\ng=a[2],m=g[3],w=g[2],x=g[1];return cz(aO(eK),x,w,m,m+6|0,m9)}if(0===bg(a)){var\ni=a.length-1,y=a[1][1];if(2<i>>>0)var\nn=gY(a,2),o=eL(a,1),c=f(aO(m1),o,n);else\nswitch(i){case\n0:var\nc=m2;break;case\n1:var\nc=m3;break;default:var\np=eL(a,1),c=b(aO(m4),p)}return h(y,c)}return a[1]}function\neN(t,s){var\ne=zH(s),g=e.length-1-1|0,p=0;if(!(g<0)){var\nc=p;for(;;){var\na=w(e,c)[1+c],f=function(a){return function(b){return b?0===a?m_:m$:0===a?na:nb}}(c);if(0===a[0])var\nh=a[5],i=a[4],j=a[3],k=a[6]?nc:ne,l=a[2],m=a[7],n=f(a[1]),d=[0,zw(aO(nd),n,m,l,k,j,i,h)];else\nif(a[1])var\nd=0;else\nvar\no=f(0),d=[0,b(aO(nf),o)];if(d){var\nq=d[1];b(gX(t,ng),q)}var\nr=c+1|0;if(g!==c){var\nc=r;continue}break}}return 0}function\ngZ(c){for(;;){var\na=dn[1],d=[0,c,a],e=dn[1]===a?(dn[1]=d,1):0,b=1-e;if(b)continue;return b}}var\nni=nh.slice();function\nnj(e,d){var\nf=eM(e);b(eJ(nk),f);eN(aY,d);var\na=Ae(0);if(a<0){var\nc=dc(a);gw(w(ni,c)[1+c])}return aX(aY)}var\nnl=[0];gp(a(ix),function(e,i){try{try{var\nc=i?nl:jX(0);try{ew(0)}catch(a){}try{var\na=nj(e,c),d=a}catch(a){a=C(a);var\ng=eM(e);b(eJ(nn),g);eN(aY,c);var\nh=eM(a);b(eJ(no),h);eN(aY,jX(0));var\nd=aX(aY)}var\nf=d}catch(a){a=C(a);if(a!==eu)throw a;var\nf=gw(nm)}return f}catch(a){return 0}});try{var\nzq=ka(zp),g1=zq}catch(a){a=C(a);if(a!==p)throw a;try{var\nzo=ka(zn),g0=zo}catch(a){a=C(a);if(a!==p)throw a;var\ng0=nq}var\ng1=g0}var\nnr=gH(g1,82),dp=[ao,function(A){var\np=Av(0),c=[0,aM(55,0),0],l=0===p.length-1?[0,0]:p,m=l.length-1,b=0;for(;;){w(c[1],b)[1+b]=b;var\nz=b+1|0;if(54!==b){var\nb=z;continue}var\ni=[0,np],n=54+de(55,m)|0,u=0;if(!(n<0)){var\nd=u;for(;;){var\nf=d%55|0,o=Ai(d,m),v=w(l,o)[1+o],j=h(i[1],a(e+v));i[1]=Ac(j,0,k(j));var\ng=i[1],q=B(g,3)<<24,r=B(g,2)<<16,s=B(g,1)<<8,t=((B(g,0)+s|0)+r|0)+q|0,x=(w(c[1],f)[1+f]^t)&fA;w(c[1],f)[1+f]=x;var\ny=d+1|0;if(n!==d){var\nd=y;continue}break}}c[2]=0;return c}}];function\neO(a,b){return 4<=a.length-1?zM(10,fR,a[3],b)&(a[2].length-1-1|0):I(ns)}function\ng2(f,b){var\ng=eO(f,b),c=w(f[2],g)[1+g];if(c){var\nd=c[3],j=c[2];if(0===ce(b,c[1]))return j;if(d){var\ne=d[3],k=d[2];if(0===ce(b,d[1]))return k;if(e){var\nl=e[2],m=e[3];if(0===ce(b,e[1]))return l;var\na=m;for(;;){if(a){var\nh=a[2],i=a[3];if(0===ce(b,a[1]))return h;var\na=i;continue}throw p}}throw p}throw p}throw p}function\nnt(b,a){var\nc=bg(a)===A?a:a[1];return gp(b,c)}var\nnu=2;function\nnv(c){var\na=[0,0],d=k(c)-1|0,e=0;if(!(d<0)){var\nb=e;for(;;){var\ng=B(c,b);a[1]=(223*a[1]|0)+g|0;var\nh=b+1|0;if(d!==b){var\nb=h;continue}break}}a[1]=a[1]&2147483647;var\nf=fA<a[1]?a[1]+2147483648|0:a[1];return f}var\neP=dj([0,c9]),dq=dj([0,c9]),dr=dj([0,j0]),g3=j6(0,0),nw=[0,0];function\ng4(a){return 2<a?g4((a+1|0)/2|0)*2|0:a}function\ng5(d){nw[1]++;var\nb=d.length-1,c=aM((b*2|0)+2|0,g3);w(c,0)[1]=b;var\ng=((g4(b)*32|0)/8|0)-1|0;w(c,1)[2]=g;var\ne=b-1|0,h=0;if(!(e<0)){var\na=h;for(;;){var\nf=(a*2|0)+3|0,i=w(d,a)[1+a];w(c,f)[1+f]=i;var\nj=a+1|0;if(e!==a){var\na=j;continue}break}}return[0,nu,c,dq[1],dr[1],0,0,eP[1],0]}function\neQ(a,b){var\nc=a[2].length-1,d=c<b?1:0;if(d){var\ne=aM(b,g3);gJ(a[2],0,e,0,c);a[2]=e;var\nf=0}else\nvar\nf=d;return f}var\ng6=[0,0],nx=[0,0];function\nny(a){var\nb=a[2].length-1;eQ(a,b+1|0);return b}function\nnz(a,d){try{var\nb=f(dq[28],d,a[3]);return b}catch(b){b=C(b);if(b===p){var\nc=ny(a);a[3]=aJ(dq[4],d,c,a[3]);a[4]=aJ(dr[4],c,1,a[4]);return c}throw b}}function\nnA(a){var\nb=a[1];a[1]=b+1|0;return b}function\nnB(a,c){try{var\nb=f(eP[28],c,a[7]);return b}catch(b){b=C(b);if(b===p){var\nd=nA(a);if(g(c,nC))a[7]=aJ(eP[4],c,d,a[7]);return d}throw b}}function\nnD(b,a){var\nc=k(b);return c<a?nE:aq(b,a,c-a|0)}var\nnF=34;function\nnI(a){var\nd=0;for(;;){var\nc=a0(a3,d,a);if(7<c>>>0){b(a[1],a);var\nd=c;continue}switch(c){case\n0:return 0;case\n1:return 3;case\n2:return 6;case\n3:var\ne=J(a);return[0,aq(e,1,k(e)-1|0)];case\n4:var\nf=J(a);return[1,aq(f,2,k(f)-2|0)];case\n5:return nM;case\n6:return 13;default:return[2,J(a)]}}}function\ng7(a){var\nd=33;for(;;){var\nc=a0(a3,d,a);if(9<c>>>0){b(a[1],a);var\nd=c;continue}switch(c){case\n0:return 9;case\n1:return 10;case\n2:return[3,k(J(a))];case\n3:return[4,J(a)];case\n4:return 11;case\n5:return 12;case\n6:return 12;case\n7:return[5,J(a)];case\n8:return 13;default:return 12}}}function\nnL(a){var\nc=55;for(;;){var\nd=a0(a3,c,a);if(0===d)return eD(a,a[5],a[6]-1|0);b(a[1],a);var\nc=d;continue}}function\nnK(a){var\nc=53;for(;;){var\nd=a0(a3,c,a);if(0===d)return eD(a,a[5],a[6]-1|0);b(a[1],a);var\nc=d;continue}}var\naP=[A,nO,be(0)],g8=[A,nP,be(0)];function\nnJ(a,e){var\nd=e;for(;;){var\nc=a0(a3,d,a);if(7<c>>>0){b(a[1],a);var\nd=c;continue}switch(c){case\n0:return 9;case\n1:return 10;case\n2:return[3,k(J(a))];case\n3:try{var\nf=[5,nK(a)];return f}catch(a){return 12}case\n4:try{var\ng=[5,nL(a)];return g}catch(a){return 12}case\n5:return[5,J(a)];case\n6:return 13;default:return 12}}}function\nbk(b,a){return[0,fP,[0,b,a]]}var\nog=[0,of,[0,oe,[0,od,[0,oc,[0,ob,[0,oa,[0,n$,[0,n_,[0,n9,[0,n8,[0,n7,[0,n6,[0,n5,[0,n4,[0,n3,[0,n2,[0,n1,[0,n0,[0,nZ,[0,nY,[0,nX,[0,nW,[0,nV,[0,nU,[0,nT,[0,[0,nS,[0,j,bk(i,nR)]],nQ]]]]]]]]]]]]]]]]]]]]]]]]]],on=[0,om,[0,ol,[0,ok,[0,oj,[0,[0,oi,[0,j,bk(i,oh)]],og]]]]],os=[0,or,[0,oq,[0,[0,op,[0,o,bk(i,oo)]],on]]],ow=[0,[0,ov,[0,o,[0,R,[0,ou,bk(i,ot)]]]],os],oY=[0,oX,[0,oW,[0,oV,[0,oU,[0,oT,[0,oS,[0,oR,[0,oQ,[0,oP,[0,oO,[0,oN,[0,oM,[0,oL,[0,oK,[0,oJ,[0,oI,[0,oH,[0,[0,oG,[0,o,[0,R,[0,g9,oF]]]],[0,[0,oE,[0,o,[0,R,[0,g9,oD]]]],[0,oC,[0,oB,[0,oA,[0,oz,[0,[0,oy,[0,o,bk(i,ox)]],ow]]]]]]]]]]]]]]]]]]]]]]]],o2=[0,o1,[0,[0,o0,[0,c,bk(i,oZ)]],oY]],o6=[0,o5,[0,[0,o4,[0,c,bk(i,o3)]],o2]],eR=[0,pv,[0,pu,[0,pt,[0,ps,[0,pr,[0,pq,[0,pp,[0,po,[0,pn,[0,pm,[0,pl,[0,pk,[0,pj,[0,pi,[0,ph,[0,pg,[0,pf,[0,pe,[0,pd,[0,pc,[0,pb,[0,pa,[0,o$,[0,o_,[0,o9,[0,[0,o8,[0,c,bk(i,o7)]],o6]]]]]]]]]]]]]]]]]]]]]]]]]];function\npw(a){function\nb(a){if(typeof\na===\"number\"){if(c===a)return i}else\nif(R===a[1]){var\nd=a[2],e=d[1];return[0,R,[0,e,b(d[2])]]}return a}return aj(function(d){var\ne=d[2],f=e[2],a=e[1],g=d[1];return c===a?[0,g,[0,a,b(f)]]:[0,g,[0,a,f]]},a)}function\npx(a,f){return aj(function(b){var\nc=b[2],d=c[2],e=c[1],a=b[1];if(o===e&&gB(a,f))return[0,a,[0,a8,d]];return[0,a,[0,e,d]]},a)}px(pw(eR),py);function\npz(c){var\ne=pA;a:for(;;){var\nf=17;for(;;){var\nd=a0(a3,f,c);if(3<d>>>0){b(c[1],c);var\nf=d;continue}switch(d){case\n0:var\na=1;break;case\n1:var\na=2;break;case\n2:var\na=13;break;default:var\na=2}if(2===a){var\ne=h(e,J(c));continue a}if(13<=a)throw aP;return e}}}function\ng_(a){var\ne=23;for(;;){var\nd=a0(a3,e,a);if(2<d>>>0){b(a[1],a);var\ne=d;continue}switch(d){case\n0:var\nc=4;break;case\n1:var\nc=13;break;default:var\nc=5}if(5===c){var\nf=J(a);return h(f,g_(a))}if(13<=c)throw aP;return pB}}function\ng$(c){var\ne=27;for(;;){var\nd=a0(a3,e,c);if(4<d>>>0){b(c[1],c);var\ne=d;continue}switch(d){case\n0:var\na=7;break;case\n1:var\na=7;break;case\n2:var\na=13;break;case\n3:var\na=8;break;default:var\na=8}if(8===a){var\nf=J(c);return h(f,g$(c))}if(13<=a)throw aP;return pC}}function\npD(k){var\nc=16,l=bh(k);for(;;){if(!(l<=c)&&!(ex<(c*2|0))){var\nc=c*2|0;continue}if(nr){var\ni=bg(dp),b=bo===i?dp[1]:ao===i?ck(dp):dp;b[2]=(b[2]+1|0)%55|0;var\nd=b[2],e=w(b[1],d)[1+d],f=(b[2]+24|0)%55|0,g=(w(b[1],f)[1+f]+(e^(e>>>25|0)&31)|0)&fA,h=b[2];w(b[1],h)[1+h]=g;var\nj=g}else\nvar\nj=0;var\na=[0,0,aM(c,0),j,c];bT(function(v){var\nx=v[1],H=v[2],f=eO(a,x),G=[0,x,H,w(a[2],f)[1+f]];w(a[2],f)[1+f]=G;a[1]=a[1]+1|0;var\nu=a[2].length-1<<1<a[1]?1:0;if(u){var\ni=a[2],s=(i.length-1)*2|0,t=s<ex?1:0;if(t){var\nj=aM(s,0),y=a.length-1<4?1:0,z=y||(a[4]<0?1:0),k=1-z;a[2]=j;var\nl=j.length-1,g=aM(l,0),o=i.length-1-1|0,C=0;if(!(o<0)){var\ne=C;a:for(;;){var\nb=w(i,e)[1+e];for(;;){if(b){var\nm=b[1],A=b[2],B=b[3],h=k?b:[0,m,A,0],c=eO(a,m),n=w(g,c)[1+c];if(n)n[3]=h;else\nw(j,c)[1+c]=h;w(g,c)[1+c]=h;var\nb=B;continue}var\nF=e+1|0;if(o!==e){var\ne=F;continue a}break}break}}if(k){var\np=l-1|0,D=0;if(!(p<0)){var\nd=D;for(;;){var\nr=w(g,d)[1+d];if(r)r[3]=0;var\nE=d+1|0;if(p!==d){var\nd=E;continue}break}}var\nq=0}else\nvar\nq=k;return q}return t}return u},k);return a}}var\neS=gN([0,c9]);function\npE(M,L,K,I,H,j){var\nX=M?M[1]:eR,Y=L?L[1]:0,Z=K?K[1]:0,_=I?I[1]:0,$=H?H[1]:0,e=[0,pF],l=[0,0],a=[0,0],q=[0,eS[1]],r=gO(0),N=pD(X),m=$?function(a){return a}:gI;function\nu(a){if(d(a,pG))return pH;function\nb(a){var\nb=a[2];if(typeof\nb!==\"number\"&&R===b[1])return[0,a[1],b[2][2]];return a}try{var\nc=b(g2(N,a));return c}catch(a){a=C(a);if(a===p)return pI;throw a}}function\nac(k,j,e){var\nb=u(e)[1];function\nd(n){var\na=n;for(;;){if(typeof\na===\"number\"){if(fq<=a){if(ca<=a){if(i<=a){var\ng=c===b?1:0;if(g)var\nh=g;else\nvar\np=o===b?1:0,h=p||(a8===b?1:0);return h}return 0}return v<=a?0:1}if(c<=a)return c===b?1:0;var\nq=o===b?1:0,r=q||(a8===b?1:0);return r}var\nf=a[1];if(fP<=f){if(R<=f)throw[0,s,pK];var\nj=a[2],t=j[2],k=d(j[1]);if(k)return k;var\na=t;continue}if(-260921543<=f){var\nl=a[2],u=l[2],m=d(l[1]),w=m?1-d(u):m;return w}return gB(e,a[2])}}var\na=bA===b?1:0;if(a)var\ng=a;else{var\nh=1-f(eS[3],e,j);if(h)return d(u(k)[2]);var\ng=h}return g}function\nz(d){var\nc=gO(0),f=e[1],g=l[1],h=a[1],i=q[1];try{for(;;){if(ac(e[1],q[1],d)){var\nj=0;return j}if(a8===u(e[1])[1])throw eE;var\nb=cp(r);eF(b,c);var\nk=b[4],m=b[3],n=b[2],o=b[1],p=G(a[1]),s=[0,[0,e[1],l[1],p]];e[1]=o;l[1]=n;q[1]=k;a[1]=[0,s,m];continue}}catch(b){b=C(b);if(b===eE)for(;;){if(0<c[2]){eF(cp(c),r);continue}e[1]=f;l[1]=g;a[1]=h;q[1]=i;return 0}throw b}}function\nA(a){function\nb(b){for(;;){var\na=b?nJ(j,44):g7(j);if(typeof\na!==\"number\"&&3===a[0])continue;return a}}function\ne(j){var\nc=j;for(;;){if(typeof\nc===\"number\")switch(c){case\n9:return pL;case\n10:return pM;case\n13:throw aP}else\nif(4===c[0]){var\na=c[1],f=b(0);if(typeof\nf===\"number\")switch(f){case\n9:var\no=m(a);return[0,[0,[0,m(a),o],0],0];case\n10:var\np=m(a);return[0,[0,[0,m(a),p],0],1];case\n11:var\nd=b(1);if(typeof\nd===\"number\")switch(d){case\n9:return pN;case\n10:return pO;case\n13:throw aP}else\nswitch(d[0]){case\n4:var\nq=d[1],h=e(b(0)),r=h[2],s=h[1];return[0,[0,[0,m(a),q],s],r];case\n5:var\nt=d[1],i=e(b(0)),u=i[2],v=i[1];return[0,[0,[0,m(a),t],v],u]}var\nc=b(0);continue;case\n13:throw aP}var\ng=e(f),k=g[2],l=g[1],n=m(a);return[0,[0,[0,m(a),n],l],k]}var\nc=b(0);continue}}return e(b(0))}function\nB(e){a:for(;;){var\nf=11;for(;;){var\nc=a0(a3,f,j);if(3<c>>>0){b(j[1],j);var\nf=c;continue}switch(c){case\n0:var\ng=J(j),a=[1,aq(g,2,k(g)-2|0)];break;case\n1:var\na=nN;break;case\n2:var\na=13;break;default:var\na=[2,J(j)]}if(typeof\na===\"number\"){if(13===a)throw aP}else\nswitch(a[0]){case\n1:var\ni=a[1];return d(m(i),e)?pP:h(pQ,h(i,B(e)));case\n2:var\nl=a[1];return h(l,B(e))}continue a}}}function\nO(b){for(;;){var\na=g7(j);if(typeof\na===\"number\")if(11<=a){if(13<=a)throw aP}else\nif(9<=a)return 0;continue}}try{a:for(;;){var\nt=nI(j);if(typeof\nt===\"number\")switch(t){case\n0:var\nad=pz(j);if(_)a[1]=[0,[0,[0,pS,[0,[0,pR,ad],0],0]],a[1]];continue;case\n3:var\nae=g_(j);if(Y)a[1]=[0,[0,[0,pU,[0,[0,pT,ae],0],0]],a[1]];continue;case\n6:var\naf=g$(j);if(Z)a[1]=[0,[0,[0,pW,[0,[0,pV,af],0],0]],a[1]];continue;case\n13:throw aP}else\nswitch(t[0]){case\n0:var\nn=m(t[1]),P=u(n)[2];if(v===P){var\nag=A(0)[1];z(n);a[1]=[0,[0,[0,n,ag,0]],a[1]];continue}if(ca===P){var\nQ=A(0),ah=Q[2],ai=Q[1];z(n);if(ah)var\nS=pX;else{var\naj=B(n);O(0);var\nS=aj}a[1]=[0,[0,[0,n,ai,[0,[1,S],0]]],a[1]];continue}var\nT=A(0),U=T[1],ak=T[2];z(n);if(ak)a[1]=[0,[0,[0,n,U,0]],a[1]];else{if(d(n,pJ))var\nD=0;else{var\naa=function(b){var\na=b[2];if(typeof\na!==\"number\"&&R===a[1])return a[2][1];return 0};try{var\nab=aa(g2(N,n)),D=ab}catch(a){a=C(a);if(a!==p)throw a;var\nD=0,aC=a}}eF([0,e[1],l[1],a[1],q[1]],r);e[1]=n;l[1]=U;a[1]=0;bT(function(a){q[1]=f(eS[4],a,q[1]);return 0},D)}continue;case\n1:var\nE=m(t[1]);O(0);var\nV=d(E,e[1]);if(V)var\nF=V;else\ntry{k4(function(c){return function(b){var\na=b[1];if(d(c,a))throw g8;if(a8===u(a)[1])throw p;return 0}}(E),r);var\naw=0,F=aw}catch(a){a=C(a);if(a===g8)var\nW=1;else{if(a!==p)throw a;var\nW=0}var\nF=W,aD=a}if(F)for(;;){if(g(e[1],E)){var\nw=cp(r),al=w[4],am=w[3],an=w[2],ao=w[1],ap=G(a[1]);a[1]=[0,[0,[0,e[1],l[1],ap]],am];e[1]=ao;l[1]=an;q[1]=al;continue}var\nx=cp(r),ar=x[4],as=x[3],at=x[2],au=x[1],av=G(a[1]);a[1]=[0,[0,[0,e[1],l[1],av]],as];e[1]=au;l[1]=at;q[1]=ar;continue a}continue;case\n2:a[1]=[0,[1,t[1]],a[1]];continue}continue}}catch(b){b=C(b);if(b===aP)for(;;){if(0<r[2]){var\ny=cp(r),ax=y[4],ay=y[3],az=y[2],aA=y[1],aB=G(a[1]);a[1]=[0,[0,[0,e[1],l[1],aB]],ay];e[1]=aA;l[1]=az;q[1]=ax;continue}return G(a[1])}throw b}}function\npY(l,k,a,c){function\ni(f){if(0===f[0]){var\nh=f[1],e=h[2],c=h[1],m=h[3];if(g(c,p0)){if(g(c,p1)){if(g(c,p2)){try{var\no=v===co(c,l)[2]?1:0,j=o}catch(a){a=C(a);if(a!==p)throw a;var\nj=0}b(a,p3);b(a,c);bT(function(e){var\nf=e[2],g=e[1];b(a,p4);b(a,g);b(a,p5);function\nc(b,a){try{var\ne=eC(a,nF),f=aq(a,0,e),g=nD(a,e+1|0),h=d(f,nH)?c(b,g):c([0,f,b],g);return h}catch(c){c=C(c);if(c===p)return d(a,nG)?b:[0,a,b];throw c}}b(a,az(pZ,G(c(0,f))));return b(a,p6)},e);if(j){var\nn=k?p7:p8;return b(a,n)}b(a,p9);bT(i,m);b(a,p_);b(a,c);return b(a,p$)}b(a,qa);b(a,co(qb,e));return b(a,qc)}b(a,qd);b(a,co(qe,e));return b(a,qf)}b(a,qg);b(a,co(qh,e));return b(a,qi)}return b(a,f[1])}try{var\ne=bT(i,c);return e}catch(a){a=C(a);if(a===p)return ch(qj);throw a}}function\nqk(b,a){return aq(b,0,a)}function\nql(b,a){return aq(b,a,k(b)-a|0)}var\na4=aN(32,b0);function\nha(a){return aN(32,0)}function\neT(b,a){return aL(b,a>>>3|0,cl(bK(b,a>>>3|0)|1<<(a&7)))}function\nds(b){var\na=ha(0);eT(a,b);return a}function\ndt(c){var\nb=D(32),a=0;for(;;){aL(b,a,cl(bK(c,a)^b0));var\nd=a+1|0;if(31!==a){var\na=d;continue}return b}}function\neU(d,c){var\nb=D(32),a=0;for(;;){var\ne=bK(c,a);aL(b,a,cl(bK(d,a)|e));var\nf=a+1|0;if(31!==a){var\na=f;continue}return b}}function\nqm(c,b){try{var\na=0;for(;;){var\ne=bK(b,a);if(0!==(bK(c,a)&e))throw gr;var\nf=a+1|0;if(31!==a){var\na=f;continue}var\nd=1;return d}}catch(a){a=C(a);if(a===gr)return 0;throw a}}function\nhb(f,e){var\na=0;for(;;){var\nd=bK(e,a);if(0!==d){var\nc=0;for(;;){if(0!==(d&1<<c))b(f,cl((a<<3)+c|0));var\nh=c+1|0;if(7!==c){var\nc=h;continue}break}}var\ng=a+1|0;if(31!==a){var\na=g;continue}return 0}}function\ncr(a){var\nc=ha(0);hb(function(a){eT(c,cm(a));var\nb=a-224|0,d=0;if(30<b>>>0){if(!(25<b+cI>>>0))d=1}else\nif(23!==b)d=1;var\ne=d?a+fW|0:a;return eT(c,e)},a);return c}var\nhc=0,hd=1,qn=3,qo=4,qp=5,qq=6,qr=7,qs=8,qt=9,qu=10,qv=11,qw=12,qx=13,qy=14,eV=15,du=16,he=17,hf=18;function\nhg(b,a){return b|a<<8}function\neW(b,a){return(b-a|0)-1|0}function\neX(c){var\na=c;for(;;)if(typeof\na===\"number\")switch(a){case\n0:return 1;case\n1:return 1;default:return 1}else\nswitch(a[0]){case\n0:return 0;case\n1:return d(a[1],qz);case\n2:return 0;case\n3:return gA(eX,a[1]);case\n4:var\ne=a[2],b=eX(a[1]);if(b)return b;var\na=e;continue;case\n5:return 1;case\n6:var\na=a[1];continue;case\n7:return 1;case\n8:var\na=a[2];continue;default:return 1}}function\nfk(f,g){var\na=g;for(;;)if(typeof\na===\"number\")switch(a){case\n0:return a4;case\n1:return a4;default:return a4}else\nswitch(a[0]){case\n0:return ds(a[1]);case\n1:var\nb=a[1];return d(b,qA)?a4:ds(B(b,0));case\n2:var\nc=a[1];return a[2]?dt(c):c;case\n3:var\ne=a[1];return f<50?fj(f+1|0,e):n(fj,[0,e]);case\n4:var\nh=a[1],i=bl(a[2]);return eU(bl(h),i);case\n5:return a4;case\n6:var\na=a[1];continue;case\n7:return a4;case\n8:var\na=a[2];continue;default:return a4}}function\nfj(c,d){var\na=d;for(;;){if(a){var\nb=a[1];if(typeof\nb===\"number\"){var\na=a[2];continue}else\nswitch(b[0]){case\n5:var\ne=b[1],f=cs(a[2]);return eU(bl(e),f);case\n7:var\ng=b[1],h=cs(a[2]);return eU(bl(g),h);default:return c<50?fk(c+1|0,b):n(fk,[0,b])}}return a4}}function\nbl(a){return bR(fk(0,a))}function\ncs(a){return bR(fj(0,a))}function\neY(f,a){var\nc=0;if(typeof\na!==\"number\")switch(a[0]){case\n0:var\nd=0,b=ds(a[1]);c=1;break;case\n2:var\nd=a[2],b=a[1];c=1;break}if(c){var\ne=f?cr(b):b,g=d?dt(e):e;return df(g)}throw[0,s,qB]}var\nhh=D(aK),cw=0;for(;;){aL(hh,cw,cm(cl(cw)));var\nzm=cw+1|0;if(b0!==cw){var\ncw=zm;continue}var\nqC=df(hh),dv=dj([0,c9]);dt(ds(10));var\nqF=function(K){var\nz=[1,K],b=[0,aM(32,0)],c=[0,0],j=[0,dv[1]],l=[0,0],g=[0,1],m=[0,0],q=1;function\na(g,f){if(b[1].length-1<=c[1]){var\na=[0,b[1].length-1];for(;;){if(a[1]<=c[1]){a[1]=a[1]*2|0;continue}var\nd=aM(a[1],0);gJ(b[1],0,d,0,b[1].length-1);b[1]=d;break}}var\nh=hg(g,f),e=c[1];w(b[1],e)[1+e]=h;c[1]++;return 0}function\nh(d){var\nb=c[1];a(hc,0);return b}function\ni(a,d,c){var\ne=hg(d,eW(c,a));w(b[1],a)[1+a]=e;return 0}function\ne(b){try{var\na=f(dv[28],b,j[1]);return a}catch(a){a=C(a);if(a===p){var\nc=l[1];j[1]=aJ(dv[4],b,c,j[1]);l[1]++;return c}throw a}}function\ns(b){if(eX(b)){var\na=m[1];if(64<=a)ch(qD);m[1]++;return a}return-1}function\nn(b,a){var\nc=cr(a);return qm(cr(b),c)}function\nd(b){if(typeof\nb===\"number\")switch(b){case\n0:return a(qp,0);case\n1:return a(qq,0);default:return a(qr,0)}else\nswitch(b[0]){case\n0:return a(hd,cm(b[1]));case\n1:var\nf=b[1],n=k(f);if(0===n)return 0;if(1===n)return a(hd,cm(B(f,0)));try{var\no=eC(f,0);d([1,qk(f,o)]);a(hc,0);var\nw=d([1,ql(f,o+1|0)]);return w}catch(b){b=C(b);if(b===p)return a(qn,e(gI(f)));throw b}case\n2:var\nx=b[2],q=cr(b[1]),y=x?dt(q):q;return a(qo,e(df(y)));case\n3:return D(b[1]);case\n4:var\nz=b[2],A=b[1],E=h(0);d(A);var\nF=h(0),G=c[1];d(z);var\nH=c[1];i(E,du,G);return i(F,eV,H);case\n5:var\nr=b[1],j=s(r),t=h(0);if(0<=j)a(he,j);d(r);if(0<=j)a(hf,j);a(eV,eW(t,c[1]));return i(t,du,c[1]);case\n6:var\nu=b[1],l=s(u),I=c[1];d(u);if(0<=l)a(hf,l);var\nJ=h(0);if(0<=l)a(he,l);a(eV,eW(I,c[1]));return i(J,du,c[1]);case\n7:var\nK=b[1],L=h(0);d(K);return i(L,du,c[1]);case\n8:var\nm=b[1],M=b[2];a(qs,m);d(M);a(qt,m);g[1]=de(g[1],m+1|0);return 0;default:var\nv=b[1];a(qu,v);g[1]=de(g[1],v+1|0);return 0}}function\nD(p){var\nb=p;for(;;){if(b){var\nc=b[1];if(typeof\nc!==\"number\")switch(c[0]){case\n5:var\nf=c[1],l=0;if(typeof\nf===\"number\")l=1;else\nswitch(f[0]){case\n0:case\n2:var\ni=b[2],s=cs(i);if(n(bl(f),s)){a(qx,e(eY(q,f)));var\nb=i;continue}break;default:l=1}break;case\n6:var\ng=c[1],m=0;if(typeof\ng===\"number\")m=1;else\nswitch(g[0]){case\n0:case\n2:var\nj=b[2],t=cs(j);if(n(bl(g),t)){a(qy,e(eY(q,g)));var\nb=j;continue}break;default:m=1}break;case\n7:var\nh=c[1],o=0;if(typeof\nh===\"number\")o=1;else\nswitch(h[0]){case\n0:case\n2:var\nk=b[2],u=cs(k);if(n(bl(h),u)){a(qw,e(eY(q,h)));var\nb=k;continue}break;default:o=1}break}var\nr=b[2];d(c);var\nb=r;continue}return 0}}d(z);a(qv,0);var\nt=bl(z),E=cr(t);if(jS(t,a4))var\nu=-1;else{var\nr=aN(aK,0);hb(function(a){return aL(r,a,1)},E);var\nu=e(df(r))}var\nv=aM(l[1],qE),F=j[1];function\nG(b,a){w(v,a)[1+a]=b;return 0}f(dv[12],G,F);var\no=c[1],x=b[1],A=0,H=m[1],J=g[1];if(0<=o&&!((x.length-1-o|0)<0)){var\ny=zC(x,0,o);A=1}if(!A)var\ny=I(kL);return[0,y,v,qC,J,H,u]},qG=[0,[0]],qH=function(d,c,b){var\na=AD(d,c,b);qG[1]=a;if(0===a.length-1)throw p;return w(a,0)[1]},Q=function(b,a){return a?a[1]:b},dw=function(a,b){if(b)return b;var\nc=bg(a);return bo===c?a[1]:ao===c?ck(a):a},ct=function(c,a){return a?[0,b(c,a[1])]:0},dx=function(c,a){return a?b(c,a[1])?a:0:0},hi=function(a,b){if(b)return b[1];var\nc=bg(a);return bo===c?a[1]:ao===c?ck(a):a},aA=function(a,c){return a?b(c,a[1]):0},am=function(b,a){return ct(a,b)},hj=function(a){return a?[0,a[1],0]:0},hk=function(c,a){if(a){var\nd=a[2],e=a[1],f=b(c,e),g=hk(c,d),h=e===f?1:0,i=h?d===g?1:0:h;return i?a:[0,f,g]}return a},ad=function(d,a){if(a){var\ne=a[2],f=a[1],g=b(d,f),c=ad(d,e);return g?e===c?a:[0,f,c]:c}return a},dy=function(c,b,a){var\nd=G(b);return bi(function(b,a){return f(c,a,b)},a,d)},dz=function(a){return a?[0,a[1]]:0},aQ=function(e,d){var\na=d;for(;;){if(a){var\nf=a[2],c=b(e,a[1]);if(c)return c;var\na=f;continue}return 0}},eZ=function(d,a){var\nc=0;return dy(function(e,a){var\nc=b(d,e);return c?[0,c[1],a]:a},a,c)},e0=function(e,d){var\na=d;for(;;){if(a){var\nc=a[1];if(b(e,c))return[0,c];var\na=a[2];continue}return 0}},e1=function(f){function\na(a,c){var\nd=c[2],e=c[1];return b(f,a)?[0,[0,a,e],d]:[0,e,[0,a,d]]}return function(b){return dy(a,b,qI)}},dA=function(c,a){var\nd=0;return dy(function(d,a){return F(b(c,d),a)},a,d)},e2=function(c,a){if(a){var\nd=a[1],f=a[2];if(b(c,d)){var\ne=e2(c,f);return[0,[0,d,e[1]],e[2]]}}return[0,0,a]},hl=function(c,a){return e2(function(a){return 1-b(c,a)},a)},hm=function(b){if(d(b,kH))var\nf=b;else{var\nh=0;if(gF(ay(b,0))||gF(ay(b,k(b)-1|0)))h=1;else\nvar\nf=b;if(h){var\ne=au(b),g=ax(e),a=[0,0];for(;;){if(a[1]<g&&gD(bL(e,a[1]))){a[1]++;continue}var\nc=[0,g-1|0];for(;;){if(a[1]<=c[1]&&gD(bL(e,c[1]))){c[1]+=-1;continue}var\ni=a[1]<=c[1]?eA(e,a[1],(c[1]-a[1]|0)+1|0):kB,f=O(i);break}break}}}return d(f,qJ)},a5=function(b,a){var\nc=k(a);return k(b)<c?0:d(aq(b,0,c),a)},e3=function(c,b){var\ne=k(c),a=k(b);return e<a?0:d(aq(c,e-a|0,a),b)},hn=function(b,a){var\nc=k(b);return c<a?qK:aq(b,a,c-a|0)},dB=function(a,h){function\nc(b,a){try{var\ne=eC(a,h),f=aq(a,0,e),g=hn(a,e+1|0),i=d(f,qM)?c(b,g):c([0,f,b],g);return i}catch(c){c=C(c);if(c===p)return d(a,qL)?b:[0,a,b];throw c}}return G(c(0,a))},as=function(b,a){var\nc=qF(a);try{qH(c,b,0);var\nd=1;return d}catch(a){a=C(a);if(a===p)return 0;throw a}},z=gN([0,kK]),ho=function(b){var\na=aq(b,5,k(b)-5|0);try{var\nc=c7(a);return c}catch(a){a=C(a);if(a[1]===db)throw[0,et,h(qR,h(b,qQ))];throw a}},hp=function(a){return a?[0,az(qS,a)]:0},hq=[0,0],bX=[0,0],qX=F(qW,qV),qY=b(z[37],qX),hr=function(a){return f(z[3],a,qY)},e4=function(b,a){return bN(a[1],b)},aI=function(a){function\nb(b){return e4(a,b)}return function(a){return e0(b,a)}},e5=function(c,b,a){var\nd=hk(function(a){var\nd=a[1];return bN(c,d)?[0,d,b]:a},a);return d===a?[0,[0,c,b],a]:d},q2=function(b,a){return aA(b,function(b){return 0===a[0]?[0,h(b,a[1])]:0})},hs=function(a){return bi(q2,q1,a)},ht=function(b){function\nc(a){if(1===a[0]&&d(a[1],b))return[0,a];return 0}return function(a){if(0===a[0])throw[0,s,q3];return eZ(c,a[4])}},hu=function(a){return 0===a[0]?0:a[4]},e6=function(c,b,a){if(0===a[0])return 0;var\ne=a[3],g=a[2];if(d(a[1],c))return f(b,g,e);var\nh=a[4];return aQ(function(a){return e6(c,b,a)},h)},dC=function(d,c,g,f,b){var\na=bN(c,d),e=a?0===b?1:0:a;return e},q4=function(k,j,i,h){var\nc=b(e1(function(a){return d(a[1],q5)}),j),a=c[1],l=c[2];if(a){var\ne=a[1];if(!g(e[1],q6)&&!a[2]){var\nf=e[2];return a5(f,q7)?[0,[1,k,F(l,[0,[0,q8,f],0]),i,h]]:0}}return 0},q_=[0,function(c,b,g,f){var\na=d(c,q9),e=a?0!==b?1:0:a;return e},q4],hv=function(a){return d(a[1],q$)},ra=function(f,b,a,e){var\nc=e0(hv,b);if(c){var\nh=c[1][2],i=ad(function(a){return g(a[1],rb)},b),j=V(function(a){return d(a[1][1],rc)},a)?a:[0,[0,rd,[0,[0,h,0]]],a];return[0,[1,f,i,j,e]]}return 0},rf=[0,function(c,b,f,e){var\na=d(c,re);return a?V(hv,b):a},ra],dD=function(a){return gH(a,32)?h(rh,h(a,rg)):a},rr=b(z[37],rq),rs=function(m){var\nb=m[2][1],c=m[1][1];if(f(z[3],c,rr)){var\na=bi(function(b,a){if(b){var\nc=b[2],e=b[1];if(d(a,rj))return[0,rk,[0,dD(e),c]];if(a5(a,rl)){var\nf=h(rm,a);return[0,rn,[0,h(dD(e),f),c]]}return[0,h(e,a),c]}return 0},ri,b);if(a){var\ni=a[1];if(g(i,ro))var\nn=a[2],j=[0,dD(i),n];else\nvar\nj=a[2];var\nl=j}else\nvar\nl=a;var\ne=az(rp,G(l))}else\nvar\np=e3(c,rw)?b:aj(dD,b),e=az(rx,p);var\no=0===k(e)?rt:e;return h(c,h(rv,h(o,ru)))},hw=function(a,b){var\nc=a?a[1]:ry;return az(c,aj(rs,b))},e7=function(a){return h(rA,hw(rz,a))},rC=function(b){switch(b[0]){case\n0:var\nc=b[1],d=h(rE,h(e7(b[2]),rD));return h(az(rB,c[1]),d);case\n1:var\nf=b[1];return h(rH,h(f,h(rG,h(e7(b[2]),rF))));default:var\ng=b[3],i=b[2],j=b[1][1],k=h(rJ,h(e7(b[4]),rI)),l=h(Q(rL,ct(function(a){return h(rK,a)},g)),k);return h(rO,h(j,h(Q(rN,ct(function(b){return h(rM,a(e+b[1]))},i)),l)))}},cu=function(a){return az(rQ,a[1])},hx=[A,rR,be(0)],aB=function(a){throw hx},hy=function(a){return rZ},hz=function(a){return r0},hA=function(a){return[0,a,0]},e8=function(a){return r1},e9=function(a){return r2},e_=function(a){return r3},bY=function(a){ci(r4);throw[0,s,r5]},hB=function(c,b,a){if(typeof\na===\"number\"&&3===a)return Q(0,b);return aB(0)},cy=function(e,H,c,a,G,F,g){var\nd=[0,H,F,G];if(typeof\ng===\"number\"&&5===g){var\nf=b(a,c);if(typeof\nf===\"number\")switch(f){case\n4:var\nh=b(a,c),i=hz(0),j=2;return e<50?_(e+1|0,d,c,a,i,j,h):n(_,[0,d,c,a,i,j,h]);case\n5:var\nk=b(a,c),l=hy(0),m=2;return e<50?_(e+1|0,d,c,a,l,m,k):n(_,[0,d,c,a,l,m,k]);default:return aB(0)}else\nswitch(f[0]){case\n0:var\no=f[1],p=b(a,c),q=2;return e<50?_(e+1|0,d,c,a,o,q,p):n(_,[0,d,c,a,o,q,p]);case\n1:var\nr=f[1],s=b(a,c),t=2;return e<50?_(e+1|0,d,c,a,r,t,s):n(_,[0,d,c,a,r,t,s]);case\n2:var\nu=f[1],v=2;return e<50?dN(e+1|0,d,c,a,u,v):n(dN,[0,d,c,a,u,v]);case\n3:var\nw=f[1],x=b(a,c),y=2;return e<50?_(e+1|0,d,c,a,w,y,x):n(_,[0,d,c,a,w,y,x]);case\n4:var\nz=f[1],A=b(a,c),B=2;return e<50?_(e+1|0,d,c,a,z,B,A):n(_,[0,d,c,a,z,B,A]);default:var\nC=f[1],D=b(a,c),E=2;return e<50?_(e+1|0,d,c,a,C,E,D):n(_,[0,d,c,a,C,E,D])}}return aB(0)},_=function(h,B,g,f,A,z,y){var\ne=B,d=A,c=z,a=y;for(;;)if(typeof\na===\"number\")switch(a){case\n4:var\nC=b(f,g),e=[0,e,c,d],d=hz(0),c=3,a=C;continue;case\n5:var\nD=b(f,g),e=[0,e,c,d],d=hy(0),c=3,a=D;continue;case\n2:case\n6:return aB(0);default:var\ni=e,l=[0,d,0],k=c;for(;;){if(2===k){var\nj=i[1],m=[0,i[3],[0,l]];switch(i[2]){case\n0:var\nt=hA(m),u=0;return h<50?bZ(h+1|0,j,g,f,t,u,a):n(bZ,[0,j,g,f,t,u,a]);case\n1:var\nv=j[2],w=j[1],x=[0,m,j[3]];return h<50?bZ(h+1|0,w,g,f,x,v,a):n(bZ,[0,w,g,f,x,v,a]);case\n7:var\nr=hA(m),s=7;return h<50?bZ(h+1|0,j,g,f,r,s,a):n(bZ,[0,j,g,f,r,s,a]);default:return bY(0)}}if(3===k){var\nJ=i[2],K=[0,i[3],l],i=i[1],l=K,k=J;continue}return bY(0)}}else\nswitch(a[0]){case\n0:var\nE=a[1],e=[0,e,c,d],d=E,c=3,a=b(f,g);continue;case\n1:var\nF=a[1],e=[0,e,c,d],d=F,c=3,a=b(f,g);continue;case\n2:var\no=a[1],p=[0,e,c,d],q=3;return h<50?dN(h+1|0,p,g,f,o,q):n(dN,[0,p,g,f,o,q]);case\n3:var\nG=a[1],e=[0,e,c,d],d=G,c=3,a=b(f,g);continue;case\n4:var\nH=a[1],e=[0,e,c,d],d=H,c=3,a=b(f,g);continue;default:var\nI=a[1],e=[0,e,c,d],d=I,c=3,a=b(f,g);continue}},dN=function(g,f,c,a,i,e){var\nd=b(a,c);if(typeof\nd===\"number\")switch(d){case\n2:case\n6:return aB(0)}else\nif(4===d[0]){var\nl=d[1],k=b(a,c),j=h(i,l);return g<50?dM(g+1|0,f,c,a,j,e,k):n(dM,[0,f,c,a,j,e,k])}return g<50?dM(g+1|0,f,c,a,i,e,d):n(dM,[0,f,c,a,i,e,d])},dM=function(g,f,e,d,c,b,a){return g<50?_(g+1|0,f,e,d,c,b,a):n(_,[0,f,e,d,c,b,a])},bZ=function(f,m,c,a,l,k,g){var\nd=[0,m,k,l];if(typeof\ng===\"number\")switch(g){case\n0:var\ne=b(a,c);if(typeof\ne===\"number\")switch(e){case\n1:case\n3:return f<50?dL(f+1|0,d,c,a,e):n(dL,[0,d,c,a,e])}else\nif(4===e[0]){var\no=e[1],h=b(a,c),i=[0,o],j=1;return f<50?cy(f+1|0,d,c,a,i,j,h):n(cy,[0,d,c,a,i,j,h])}return aB(0);case\n1:case\n3:return f<50?dL(f+1|0,d,c,a,g):n(dL,[0,d,c,a,g])}return bY(0)},dL=function(k,g,e,d,c){var\ni=g[2],h=g[1],m=g[3],l=[0,z[1],0],a=bi(function(a,b){var\nc=b[1][1],d=a[1],e=a[2];return f(z[3],c,d)?a:[0,f(z[4],c,d),[0,b,e]]},l,m)[2];if(i){if(7<=i){if(typeof\nc===\"number\"&&1===c){var\nj=b(d,e);return k<50?dK(k+1|0,h,e,d,a,j):n(dK,[0,h,e,d,a,j])}return aB(0)}return bY(0)}return hB(h,[0,a],c)},dK=function(e,r,c,a,k,j){var\nl=r[3],K=0,O=r[2],P=r[1];if(l&&!g(l[1],rY)){var\nf=l[2],s=0;if(f&&!g(f[1],rV)){var\no=f[2];if(o){var\np=o[2],t=o[1];if(p){if(!g(p[1],rX)){var\nq=p[2];if(q){var\nL=q[1],M=hp(q[2]),m=[2,[0,t],[0,[0,ho(L)]],M,k];s=1}}}else{var\nm=[2,[0,t],0,0,k];s=1}}}if(!s)var\nm=[1,az(rW,f),k]}else\nK=1;if(K)var\nm=[0,[0,G(bi(function(a,b){if(a){var\nc=a[2],d=a[1];return g(b,rT)?[0,h(d,b),c]:[0,rU,[0,d,c]]}return 0},rS,l))],k];var\nd=[0,P,O,m];if(typeof\nj===\"number\")switch(j){case\n3:var\ni=d,u=0;for(;;){var\nv=i[2],w=[0,i[3],u],N=i[1];if(4===v)return w;if(5===v){var\ni=N,u=w;continue}return bY(0)}case\n4:var\nx=b(a,c),y=e_(0),z=5;return e<50?a6(e+1|0,d,c,a,y,z,x):n(a6,[0,d,c,a,y,z,x]);case\n5:var\nA=b(a,c),B=e9(0),C=5;return e<50?a6(e+1|0,d,c,a,B,C,A):n(a6,[0,d,c,a,B,C,A]);case\n6:var\nD=b(a,c),E=e8(0),F=5;return e<50?a6(e+1|0,d,c,a,E,F,D):n(a6,[0,d,c,a,E,F,D])}else\nif(4===j[0]){var\nH=j[1],I=b(a,c),J=5;return e<50?a6(e+1|0,d,c,a,H,J,I):n(a6,[0,d,c,a,H,J,I])}return aB(0)},a6=function(k,p,f,e,o,m,l){var\nd=p,c=o,a=m,g=l;for(;;){if(typeof\ng===\"number\")switch(g){case\n2:var\nh=d,j=[0,c,0],i=a;for(;;)switch(i){case\n4:return k<50?dJ(k+1|0,h,f,e,j,i):n(dJ,[0,h,f,e,j,i]);case\n5:return k<50?dJ(k+1|0,h,f,e,j,i):n(dJ,[0,h,f,e,j,i]);case\n6:var\nu=h[2],v=[0,h[3],j],h=h[1],j=v,i=u;continue;default:return bY(0)}case\n4:var\nq=b(e,f),d=[0,d,a,c],c=e_(0),a=6,g=q;continue;case\n5:var\nr=b(e,f),d=[0,d,a,c],c=e9(0),a=6,g=r;continue;case\n6:var\ns=b(e,f),d=[0,d,a,c],c=e8(0),a=6,g=s;continue}else\nif(4===g[0]){var\nt=g[1],d=[0,d,a,c],c=t,a=6,g=b(e,f);continue}return aB(0)}},dJ=function(f,o,c,a,m,l){var\nd=[0,o,l,m],e=b(a,c);if(typeof\ne===\"number\"){if(1===e){var\ng=b(a,c),h=0;return f<50?dK(f+1|0,d,c,a,h,g):n(dK,[0,d,c,a,h,g])}}else\nif(4===e[0]){var\np=e[1],i=b(a,c),j=[0,p],k=7;return f<50?cy(f+1|0,d,c,a,j,k,i):n(cy,[0,d,c,a,j,k,i])}return aB(0)},r6=function(a,b,c,d,e,f){return bR(cy(0,a,b,c,d,e,f))},dE=function(a,b,c,d,e,f){return bR(a6(0,a,b,c,d,e,f))},r7=function(c,a){var\nd=b(c,a),e=0;if(typeof\nd===\"number\")switch(d){case\n3:return 0;case\n4:var\nf=b(c,a);return dE(e,a,c,e_(0),4,f);case\n5:var\ng=b(c,a);return dE(e,a,c,e9(0),4,g);case\n6:var\nh=b(c,a);return dE(e,a,c,e8(0),4,h)}else\nif(4===d[0]){var\ni=d[1];return dE(e,a,c,i,4,b(c,a))}return aB(0)},hC=[A,r9,be(0)],r8=function(d,c){var\na=b(d,c),e=0;if(typeof\na===\"number\"){if(3===a)return hB(e,0,a)}else\nif(4===a[0]){var\nf=a[1];return r6(e,c,d,[0,f],0,b(d,c))}return aB(0)},r$=function(c){a:for(;;){c[10]=aM(5,-1);var\nk=0;for(;;){var\nd=Ak(r_,k,c),j=0<=d?1:0,m=j?c[12]!==di?1:0:j;if(m){c[11]=c[12];var\nf=c[12];c[12]=[0,f[1],f[2],f[3],c[4]+c[6]|0]}if(20<d>>>0){b(c[1],c);var\nk=d;continue}switch(d){case\n0:return 3;case\n1:var\ng=c[12];c[12]=[0,g[1],g[2]+1|0,c[6],g[4]];continue a;case\n2:continue a;case\n3:return 4;case\n4:return 2;case\n5:return 1;case\n6:return 0;case\n7:return 5;case\n8:return 6;case\n9:return[3,J(c)];case\n10:return[5,J(c)];case\n11:return[4,J(c)];case\n12:return[0,J(c)];case\n13:return[2,J(c)];case\n14:return[1,J(c)];case\n15:var\nn=w(c[10],0)[1];return[1,eD(c,w(c[10],1)[2],n)];case\n16:return[4,J(c)];case\n17:continue a;case\n18:continue a;case\n19:continue a;default:var\ni=J(c),l=B(i,0);if(aK<l)return[1,i];throw[0,hC,h(sc,h(i,h(sb,h(a(e+l),sa))))]}}}},hD=function(c){var\nd=c[11],b=c[12],f=h(sd,a(e+((b[4]-b[3]|0)+1|0))),g=h(se,h(a(e+((d[4]-d[3]|0)+1|0)),f));return h(a(e+b[2]),g)},hE=function(c,a){var\nb=gM(0,c);try{var\ng=f(a,r$,b);return g}catch(a){a=C(a);if(a[1]===hC){var\nd=h(sf,a[2]);ci(h(hD(b),d));return 0}if(a===hx){var\ne=h(sg,c);ci(h(hD(b),e));return 0}throw a}},hF=function(a){return hE(a,r7)},e$=function(a){if(0===a[0])return hm(a[1]);var\nb=a[4],c=g(a[1],si);if(c){var\nd=0!==b?1:0;if(d)return gA(e$,b);var\ne=d}else\nvar\ne=c;return e},hG=function(a){var\nc=0;return G(bi(function(f,a){if(0===a[0]){var\nc=a[1],j=c[3],k=c[2],l=c[1],h=function(a){return hE(a[2],r8)},e=b(e1(function(a){return d(a[1],sh)}),k),i=e[2],g=bi(F,0,aj(h,e[1]));return[0,[1,l,i,g,hG(j)],f]}return[0,[0,a[1]],f]},c,a))},hH=function(b,a){return 0===a?b:[0,[0,sj,hw(0,a)],b]},hI=function(a){var\nb=0;return G(bi(function(b,a){if(0===a[0])return[0,[1,a[1]],b];var\nc=a[4],d=a[1],e=hH(a[2],a[3]);return[0,[0,[0,d,e,hI(c)]],b]},b,a))},hJ=function(u){var\nd=0,a=u;for(;;){if(a){var\ne=a[1],j=0;if(0===e[0]){var\nf=a[2];if(f){var\ng=f[1],k=e[1];if(0===g[0]){var\nv=f[2],a=[0,[0,h(k,g[1])],v];continue}var\no=f[2],n=k,m=g,l=g[1];j=1}}else{var\ni=a[2];if(i){var\ns=i[1],z=e[1];if(0===s[0]){var\no=i[2],n=s[1],m=e,l=z;j=1}}}if(j&&hr(l)&&hm(n)){var\na=[0,m,o];continue}var\nb=a[1];if(0===b[0]){var\nd=[0,[0,b[1]],d],a=a[2];continue}var\np=b[4],q=b[1],w=a[2],x=b[3],y=b[2];if(hr(q)){var\nc=p;for(;;){if(c){var\nt=c[2];if(e$(c[1])){var\nc=t;continue}}var\nr=dy(function(b,a){if(e$(b)&&0===a)return a;return[0,b,a]},c,0);break}}else\nvar\nr=p;var\nd=[0,[1,q,y,x,hJ(r)],d],a=w;continue}return G(d)}},hK=function(a){function\nc(d,a){var\nb=gE(d*2|0,32);if(0===a[0])return h(sm,h(b,h(sl,h(a[1],sk))));var\ne=a[4],f=a[1],g=hH(a[2],a[3]),i=h(so,h(b,sn)),j=d+1|0,k=h(sq,h(az(sp,aj(function(a){return c(j,a)},e)),i));return h(sw,h(b,h(sv,h(f,h(su,h(az(st,aj(function(a){var\nb=a[1];return h(b,h(ss,h(a[2],sr)))},g)),k))))))}return c(0,a)},bm=function(b,a){return[0,fP,[0,b,a]]},s0=[0,sZ,[0,sY,[0,sX,[0,sW,[0,sV,[0,sU,[0,sT,[0,sS,[0,sR,[0,sQ,[0,sP,[0,sO,[0,sN,[0,sM,[0,sL,[0,sK,[0,sJ,[0,sI,[0,sH,[0,sG,[0,sF,[0,sE,[0,sD,[0,sC,[0,sB,[0,[0,sA,[0,j,bm(i,sz)]],sy]]]]]]]]]]]]]]]]]]]]]]]]]],s7=[0,s6,[0,s5,[0,s4,[0,s3,[0,[0,s2,[0,j,bm(i,s1)]],s0]]]]],ta=[0,s$,[0,s_,[0,[0,s9,[0,o,bm(i,s8)]],s7]]],te=[0,[0,td,[0,o,[0,R,[0,tc,bm(i,tb)]]]],ta],tG=[0,tF,[0,tE,[0,tD,[0,tC,[0,tB,[0,tA,[0,tz,[0,ty,[0,tx,[0,tw,[0,tv,[0,tu,[0,tt,[0,ts,[0,tr,[0,tq,[0,tp,[0,[0,to,[0,o,[0,R,[0,hL,tn]]]],[0,[0,tm,[0,o,[0,R,[0,hL,tl]]]],[0,tk,[0,tj,[0,ti,[0,th,[0,[0,tg,[0,o,bm(i,tf)]],te]]]]]]]]]]]]]]]]]]]]]]]],tK=[0,tJ,[0,[0,tI,[0,c,bm(i,tH)]],tG]],tO=[0,tN,[0,[0,tM,[0,c,bm(i,tL)]],tK]],ue=[0,ud,[0,uc,[0,ub,[0,ua,[0,t$,[0,t_,[0,t9,[0,t8,[0,t7,[0,t6,[0,t5,[0,t4,[0,t3,[0,t2,[0,t1,[0,t0,[0,tZ,[0,tY,[0,tX,[0,tW,[0,tV,[0,tU,[0,tT,[0,tS,[0,tR,[0,[0,tQ,[0,c,bm(i,tP)]],tO]]]]]]]]]]]]]]]]]]]]]]]]]],hM=function(a){return hJ(hG(pE([0,ue],uh,ug,uf,0,gM(0,a))))},hN=function(a){return[0,[0,uD,a],uC]},fa=hN(uE),hO=function(n,m,a){var\nf=ad(function(b){var\na=b[1],c=d(a,hP),e=c||d(a,hQ);return e},n);function\no(a){return hn(a[2],7)}var\np=b(aI(hP),f),q=Q(fa,am(am(dw([ao,function(a){return b(aI(hQ),f)}],p),o),hN)),c=b(aI(uA),a),e=b(aI(uB),a),i=0;if(e&&c){var\nj=c[1][2],k=e[1][2],l=function(b){if(g(b,uv)&&g(b,uw))return a;return e5(uy,j,e5(ux,k,a))},h=am(aQ(function(a){return g(a[1][1],uz)?0:[0,cu(a[2])]},m),l);i=1}if(!i)var\nh=0;return F(q,Q(a,h))},hR=function(b,a){var\nc=[1,uF,0,0,a];return e6(b,function(b,a){return[0,[0,b,a]]},c)},uG=function(f,d,a,c){function\ne(b){var\nc=b[2],e=hO(d,a,b[1]);return[0,e,F(c,a)]}var\nb=Q([0,fa,0],am(hR(uH,c),e));return[0,[1,uI,b[1],b[2],0]]},uK=[0,function(a,e,c,b){return d(a,uJ)},uG],uL=function(a,b){return[0,a]},hS=function(a){return e6(uM,uL,a)},hT=function(d,a){if(0===a[0])return 0;var\nb=a[1];if(g(b,uN)){var\ne=a[4],f=a[3],h=a[2],c=function(b){if(b){var\na=b[1];if(0===a[0])return[0,a,c(b[2])];var\ne=a[1];if(g(e,uO)){var\nf=a[4],h=a[3],i=a[2],j=c(b[2]);return[0,[1,e,i,h,c(f)],j]}return[0,[1,uP,d,a[3],a[4]],b[2]]}return 0};return[0,[1,b,h,f,c(e)]]}return[0,[1,uQ,d,a[3],a[4]]]},uU=function(w,c,v,u,b){if(c){var\nn=c[1];if(!g(n[1],uV)&&!c[2]){var\na=n[2],m=a5(a,uR),s=m?e3(a,uS):m;if(s){if(b){var\nd=b[1];if(0!==d[0]&&!g(d[1],uW)){var\ne=d[2];if(e){var\no=e[1];if(!g(o[1],uX)&&!g(o[2],uY)&&!e[2]){var\nf=b[2];if(f){var\nh=f[2];if(h){var\ni=h[1],j=f[1];if(0!==i[0]&&!g(i[1],uZ)){var\nl=i[2];if(l){var\np=l[1];if(!g(p[1],u0)&&!g(p[2],u1)&&!l[2]){var\nt=h[2],q=hM(aq(a,15,(k(a)-9|0)-15|0)),r=function(a){function\nb(b){return hO(b[1],b[2],a)}var\nc=am(hR(uT,q),b);return hT(hi([ao,function(b){return F(fa,a)}],c),j)};return[0,[0,Q(j,aA(hS(j),r)),t]]}}}}}}}}}return 0}return 0}}return 0},u3=[0,function(a,b,c,d){return dC(u2,a,b,c,d)},uU],u7=function(u,b,t,s,a){if(b){var\nl=b[1];if(!g(l[1],u8)&&!b[2]){var\nm=l[2],k=a5(m,u4),q=k?e3(m,u5):k;if(q){if(a){var\nc=a[1];if(0!==c[0]&&!g(c[1],u9)){var\nd=c[2];if(d){var\nn=d[1];if(!g(n[1],u_)&&!g(n[2],u$)&&!d[2]){var\ne=a[2];if(e){var\nf=e[2];if(f){var\nh=f[1],i=e[1];if(0!==h[0]&&!g(h[1],va)){var\nj=h[2];if(j){var\no=j[1];if(!g(o[1],vb)&&!g(o[2],vc)&&!j[2]){var\nr=f[2],p=function(a){return hT([0,u6,a],i)};return[0,[0,Q(i,aA(hS(i),p)),r]]}}}}}}}}}return 0}return 0}}return 0},ve=[0,function(a,b,c,d){return dC(vd,a,b,c,d)},u7],hU=function(h,g,o){var\ni=h?h[1]:0,c=0,a=o;for(;;){if(a){var\nb=a[1];if(0===b[0]){var\nc=[0,b,c],a=a[2];continue}var\nd=a[2],f=b[4],j=b[3],k=b[2],l=b[1],e=cz(g,l,k,j,f,d);if(typeof\ne===\"number\"){if(0===e){var\na=d;continue}var\nm=hU([0,i],g,f),n=[1,l,k,j,m];if(i&&bQ(m,f)){var\na=[0,n,d];continue}var\nc=[0,n,c],a=d;continue}else{if(0===e[0]){var\na=[0,e[1],d];continue}var\na=e[1];continue}}return G(c)}},hV=function(a,e,d,c,b){return Q(0,aQ(function(f){if(fl(f[1],e,d,c,b)){var\na=fl(f[2],e,d,c,b);if(typeof\na===\"number\"&&!a)return 0;return[0,a]}return 0},a))},dF=function(a,i,h,b){var\nc=a?a[1]:0;return hU([0,c],function(f,e,d,b,c){var\na=hV(i,f,e,d,b);if(typeof\na===\"number\")switch(a){case\n0:var\ng=aQ(function(a){return fl(a[1],f,e,d,b)?cz(a[2],f,e,d,b,c):0},h);return g?[1,g[1]]:1;case\n1:return[1,F(b,c)];default:return 0}else\nreturn 0===a[0]?[0,a[1]]:[1,F(a[1],c)]},b)},vg=function(c){if(!g(c[1][1],vh)){var\na=c[2][1];if(a){var\nb=a[2];if(b){var\nd=b[2],e=b[1],f=a[1],h=[ao,function(a){return hp(d)}];return[0,[0,[0,f],ho(e),h]]}}}return 0},fb=function(a){return aQ(vg,a)},dG=function(b,a){return aQ(function(a){var\nc=a[2];return d(a[1][1],b)?[0,cu(c)]:0},a)},hW=function(o){var\nc=0,a=o;a:for(;;){if(a){var\nb=a[1];if(0===b[0]){var\nc=[0,b,c],a=a[2];continue}var\nk=a[2],f=b[2],h=b[1],p=b[3],l=hW(b[4]);if(f){var\nm=f[1];if(!g(m[1],vi)&&!g(m[2],vj)&&!f[2]&&!l){var\nn=0;if(d(h,vk)||d(h,vl))n=1;if(n){var\ni=1,e=hl(function(f){return function(a){if(1===a[0]){var\nb=a[2];if(b){var\nc=b[1],e=a[1];if(!g(c[1],qT)&&!g(c[2],qU)&&!b[2]&&d(e,f))return 1}}return 0}}(h),k)[2];for(;;){if(0===i)var\nj=e;else{if(e){var\ni=i-1|0,e=e[2];continue}var\nj=0}var\na=j;continue a}}}}var\nc=[0,[1,h,f,p,l],c],a=k;continue}return G(c)}},hX=function(a){return[0,vn,a[2],[0,vm,a[3]],0]},vJ=function(b){var\na=b[1][1],c=d(a,vK),e=c||d(a,vL);return e},vM=function(a){if(!g(a[1][1],vN)){var\nc=a[2],b=c[1];if(b&&!g(b[1],vO)&&!b[2])return[0,vP,c]}return a},hY=function(j,b,c){function\np(h){var\nk=h[3],c=h[2],i=c[3],f=c[2],l=c[1],o=c[4],p=h[1],m=0===k?0:hY(j,b,k),n=[0,vY,a(e+p)];if(d(l,vZ))return[1,l,[0,n,f],i,m];var\nq=V(function(a){return e4(v0,a)},f)?f:[0,v2,f],r=[0,n,F(eZ(function(a){return g(a[1][1],vT)?0:[0,[0,vU,cu(a[2])]]},i),q)],s=aj(vM,i);return[1,v1,r,s,F(hW(o),m)]}if(c){var\nk=c[1],l=k[2][3],m=k[1],i=function(g,e,c){function\nf(a){if(2===a[0]){var\nb=a[3];if(d(a[1][1],g)){if(c)var\nf=c[1],e=b?bN(f,b[1]):0;else\nvar\ne=0===b?1:0;if(e)return 1}}return 0}function\nh(a){if(2===a[0]){var\nb=a[2];if(b){var\nc=a[4];if(b[1][1]===e)return[0,c]}}return 0}function\ni(a){if(2===a[0]&&!a[2])return[0,a[4]];return 0}var\nb=ad(f,j),a=aQ(h,b);return a?a:aQ(i,b)},n=function(b){var\na=b[3],d=b[2],e=b[1][1],c=bg(a),f=bo===c?a[1]:ao===c?ck(a):a;return i(e,d,f)},o=function(c){var\na=[ao,function(e){function\na(a){return aA(fb(l),n)}var\nb=dG(vQ,c);return aA(dx(function(a){return d(vR,a)},b),a)}];function\nm(h){var\na=dh(h);if(g(a,vw))if(g(a,vx)){var\ne=0;if(g(a,vy)&&g(a,vz))var\nb=g(a,vA)?g(a,vB)?0:vD:vE;else\ne=1;if(e)var\nf=function(a){return d(a,qO)?vt:d(a,qP)?vu:d(a,qN)?0:0},b=aA(dG(vv,c),f)}else\nvar\nb=vF;else\nvar\nb=vG;return dw([ao,function(a){return vC}],b)}var\nh=Q(vI,aA(dG(vH,c),m)),b=h[1],j=h[2],e=hj(am(j,function(a){return[0,vo,[0,[0,a,0]]]}));if(d(b,vp))return[0,b,0,e];function\nf(a){return dG(vq,a)}var\ni=[ao,function(d){var\nb=bg(a),c=bo===b?a[1]:ao===b?ck(a):a;return aA(c,f)}];function\nk(a){return[0,vr,a]}var\no=dw(i,f(c));return[0,b,hj(am(dx(function(a){return g(a,vs)},o),k)),e]},f=Q(vS,am(i(b,m,0),o)),q=f[3],r=f[2],s=f[1],t=aj(p,c),u=F([0,[0,vX,h(b,h(vW,a(e+m)))],[0,[0,vV,b],0]],r);return[0,[1,s,u,F(q,ad(vJ,l)),t],0]}return 0},v4=function(c,b,a,f){var\nd=0,e=bX[1]?v5:v6;return[0,[1,c,b,a,[0,e,d]]]},wb=[0,function(o,r,q,b){var\nm=d(o,wa);if(m){var\nn=1===bh(b)?1:0;if(n){if(b){var\nh=b[1];if(0!==h[0]&&!b[2]){var\nc=h[1],a=h[4];for(;;){var\nj=d(c,v7);if(j)var\nf=j;else\nvar\np=d(c,v_),f=p||d(c,v$);if(f){if(a){var\ne=a[1];if(0===e[0]){var\nk=e[1];if(g(k,v8)){if(!g(k,v9)&&!a[2]&&bX[1])return 1}else\nif(!a[2])return 1}else\nif(!a[2]){var\nc=e[1],a=e[4];continue}}var\nl=0}else\nvar\nl=f;return l}}}var\ni=0}else\nvar\ni=n}else\nvar\ni=m;return i},v4],wd=b(z[37],wc),hZ=function(e){var\na=e;for(;;){if(a){var\nb=a[1];if(0===b[0]){var\nc=a[2];if(c){var\nd=c[1],f=b[1];if(0===d[0]){var\ng=c[2],a=[0,[0,h(f,d[1])],g];continue}}}return[0,b,hZ(a[2])]}return a}},h0=function(e,d){var\nb=0,a=e,c=d;for(;;){if(a){var\nb=[0,a[1],b],a=a[2];continue}if(c){var\nb=[0,c[1],b],a=0,c=c[2];continue}return G(b)}},wn=function(e,c,h,i,a){var\nj=b(aI(wq),c);if(a){var\nf=a[1];if(0===f[0])var\nk=0;else{var\nr=f[4],s=f[2],t=f[1],u=b(aI(wr),s),m=g(e,t);if(m)var\nn=m;else\nvar\np=j?1:0,q=1-p,n=q||bQ(j,u);if(n)var\no=0;else\nvar\nv=function(a){if(0===a[0])return 0;var\ng=a[4],b=d(a[1],ws);if(b){if(0===a[0])var\nc=0;else\nvar\nf=a[3],c=V(function(a){var\nc=a[2][1],b=d(a[1][1],wo),e=b?bN(c,wp):b;return e},f);var\ne=c}else\nvar\ne=b;return e?[0,g]:0},o=aA(dz(r),v);var\nk=o}var\nl=k}else\nvar\nl=0;return ct(function(g){var\nf=G(i);if(f)var\nj=f[1],d=[0,j,G(f[2])];else\nvar\nd=0;if(d){var\nb=d[1],k=d[2];if(0===b[0]){var\nl=dd(a);return[0,[1,e,c,h,F(i,g)],l]}var\nm=b[4],n=b[3],o=b[2],p=b[1],q=dd(a);return[0,[1,e,c,h,F(k,[0,[1,p,o,n,F(m,g)],0])],q]}return[0,[1,e,c,h,g],dd(a)]},l)},wv=[0,function(a,g,f,e){var\nb=d(a,wt),c=b||d(a,wu);return c},wn],h1=function(a){var\nc=b(aI(ww),a);return c7(Q(wx,ct(function(a){return a[2]},c)))},wy=function(e,c,o,g,f){function\na(a){var\nh=a[2],i=dz(f);return aA(i,function(a){if(0===a[0])return 0;var\ni=a[2],p=a[4],q=a[1],j=b(aI(wz),i);return aA(j,function(r){var\nb=r[2],s=h1(c),t=h1(i),u=(s+bh(g)|0)===t?1:0,j=d(e,wA),k=j?d(b,h):j;if(k)var\na=k;else{var\nl=d(e,wB);if(l){var\nm=d(q,wC);if(m)var\nn=d(b,h),a=n?u:n;else\nvar\na=m}else\nvar\na=l}if(a){var\nv=dd(f);return[0,[0,[1,e,c,o,F(g,p)],v]]}return 0})})}return aA(b(aI(wD),c),a)},wG=[0,function(a,g,f,e){var\nb=d(a,wE),c=b||d(a,wF);return c},wy],wH=function(e,a,d,c){var\nb=ad(function(a){return g(a[1],wI)},a);return a===b?0:[0,[1,e,b,d,c]]},wJ=[0,function(d,a,c,b){return 0!==a?1:0},wH],h2=function(a){var\ne=3<=k(a)?1:0;if(e){var\nf=58===B(a,1)?1:0;if(f){var\nb=B(a,0),d=0;if(113<=b){if(!(2<b-118>>>0))d=1}else\nif(111<=b)d=1;if(!d)return 0;var\nc=1}else\nvar\nc=f}else\nvar\nc=e;return c},wN=function(d,c,b,a){return a?1:2},wO=[0,function(a,d,c,b){return h2(a)},wN],wP=function(e,a,d,c){if(a){var\nb=a[1];if(!g(b[1],wQ)&&!a[2]&&a5(b[2],wR))return 1}return 0},wT=[0,function(a,e,c,b){return d(a,wS)},wP],wY=function(h,b,f,e){if(b){var\nc=b[1];if(!g(c[1],wZ)&&!b[2]){var\na=dh(c[2]);if(!d(a,wU)&&!d(a,wV)&&!a5(a,wW)&&!a5(a,wX))return 0;return 2}}return 0},w2=[0,function(a,h,g,c){var\ne=d(a,w0),b=e||d(a,w1),f=b?0===c?1:0:b;return f},wY],w5=function(d,c,b,a){return 2},w6=[0,function(e,a,c,b){return V(function(a){var\nc=a[2],b=d(a[1],w3),e=b?d(c,w4):b;return e},a)},w5],w9=function(d,c,b,a){return 2},w_=[0,function(e,c,a,b){return V(function(a){var\nc=a[2][1],b=d(a[1][1],w7);return b?V(function(a){return d(a,w8)},c):b},a)},w9],xa=function(d,c,b,a){return 1},xb=[0,function(e,c,a,b){return V(function(a){return d(a[1][1],w$)},a)},xa],xe=function(d,c,b,a){return 2},xg=[0,function(f,e,h,g){var\na=bX[1];if(a){var\nb=d(f,xf);if(b)return V(function(a){var\nc=a[2],b=d(a[1],xc),e=b?d(c,xd):b;return e},e);var\nc=b}else\nvar\nc=a;return c},xe],xj=function(d,c,b,a){return 2},xk=[0,function(f,b,e,c){var\na=bX[1];return a?V(function(a){var\nc=a[2],b=d(a[1],xh),e=b?d(c,xi):b;return e},b):a},xj],xl=function(d,a,c,b){if(a&&!g(a[1][1],xm)&&!a[2])return 2;return 0},xo=[0,function(a,b,c,d){return dC(xn,a,b,c,d)},xl],h3=b(z[37],xp),xr=b(z[37],xq),xs=b(b(z[7],h3),xr),xA=function(d,c,b,a){return 1},h4=[0,function(g,f,e,h){var\na=d(g,xB);if(a)var\nb=0===f?1:0,c=b?0===e?1:0:b;else\nvar\nc=a;return c},xA],xC=function(i,h,f,c){if(c){var\na=c[1];if(0!==a[0]&&!g(a[1],xD)&&!c[2]){var\nj=a[4],k=a[3],l=a[2],e=b(e1(function(a){return e4(xE,a)}),l),d=e[1],m=e[2];if(d&&!d[2])return[0,[1,i,e5(xG,d[1][2],h),f,[0,[1,xF,m,k,j],0]]];return 0}}return 0},xI=[0,function(a,e,c,b){return d(a,xH)},xC],xM=function(q,p,c,n){if(V(function(a){var\nc=a[2][1],b=d(a[1][1],xN),e=b?bN(c,xO):b;return e},c)){var\nb=G(n),g=0;if(b){var\na=b[1];if(0!==a[0]){var\ni=b[2],j=a[4],k=a[3],l=a[2],m=a[1],o=Q(0,aQ(function(a){var\nb=a[2];return d(a[1][1],xJ)?[0,[0,[0,xK,cu(b)],0]]:0},c)),e=ad(function(a){return a5(a[1][1],xL)},c),h=F(ad(function(a){var\nb=a[1][1];return 1-V(function(a){return d(a[1][1],b)},e)},k),e),f=[0,[1,m,F(o,l),h,j],i];g=1}}if(!g)var\nf=0;return[1,G(f)]}return 0},xQ=[0,function(a,e,c,b){return d(a,xP)},xM],xS=b(z[37],xR),h5=function(a){return f(z[3],a,xS)},xU=b(z[37],xT),x_=function(c,a,b){return h5(a)},fc=function(s,b,a){var\nn=h5(b);if(n)var\no=n;else{var\np=f(z[3],b,xU);if(p)var\nj=p;else{var\nl=45===B(b,0)?1:0;if(l)var\ni=l;else{var\nm=a5(b,x8);if(m)var\nr=1-s,i=r||g(b,x9);else\nvar\ni=m}var\nj=i}if(j)var\nq=j;else{var\ne=0;if(g(b,xV)&&g(b,xW)){var\nc=0;if(g(b,xX)){var\nd=0;if(g(b,xY))if(g(b,xZ))if(g(b,x0))if(g(b,x1)){if(g(b,x2)){c=1;d=1}}else\nif(a&&!(g(a[1],x4)||a[2])){var\nk=bX[1];e=2;c=1;d=1}else{c=1;d=1}else\nif(a&&!(g(a[1],x5)||a[2])){e=1;c=1;d=1}else{c=1;d=1}else\nd=1;if(!d)if(a&&!(g(a[1],x3)||a[2])){e=1;c=1}else\nc=1}if(!c&&a&&!g(a[1],x6)&&!a[2])e=1}else\ne=3;var\nh=0;switch(e){case\n3:if(a&&!g(a[1],x7)&&!a[2])h=2;break;case\n0:break;case\n1:h=2;break;default:h=1}switch(h){case\n0:var\nk=0;break;case\n2:var\nk=1;break}var\nq=k}var\no=1-q}return o},ya=b(z[37],x$),h6=function(a,c,b){var\nd=a?a[1]:0,e=c?fc:x_;return ad(function(a){return e(d,a[1][1],a[2][1])},b)},yb=function(a){var\nb=a[2][1],c=a[1][1],e=d(c,yc);if(e)var\nf=hq[1],g=f?V(function(a){return d(a,yd)},b):f;else\nvar\ng=e;return g?[0,[0,c],[0,aj(function(a){return d(a,ye)?yf:a},b)]]:a},h7=function(a,c){var\nd=a?a[1]:0;function\nb(g,f,a,e){var\nb=h6([0,d],c,a);return a===b?0:[0,[1,g,f,b,e]]}return[0,function(c,g,b,e){var\na=0!==b?1:0,d=a?1-f(z[3],c,ya):a;return d},b]},yg=function(b,a){if(0===b[0]){var\nd=b[1][1],c=h6(0,1,b[2]);if(0===c)return a;var\ne=aj(yb,c);return[0,[0,[0,ad(function(a){return g(a,yh)},d)],e],a]}return a},h8=b(z[37],yi),fd=function(a){return ad(function(a){return 1-f(z[3],a[1],h8)},a)},h9=function(g,f,e,a){return ad(function(c){var\na=c[1][1],h=c[2][1];if(g){var\nb=1-d(a,e);return b?fc(1,a,h):b}return d(a,f)},a)},yl=function(k,e,c,j){var\nb=e0(function(a){return d(a[1],yk)},e);if(b){var\nf=b[1];if(!V(function(a){return d(a[1][1],ym)},c)){var\na=f[2],g=f[1],i=kj(a)?h(a,yj):a;return[0,[1,k,e,[0,[0,[0,g],[0,[0,i,0]]],c],j]]}}return 0},yo=[0,function(a,e,c,b){return d(a,yn)},yl],yw=[0,uK,[0,wO,[0,wT,[0,w6,[0,w_,[0,xb,[0,xg,[0,xk,0]]]]]]]],h_=[A,yE,be(0)],yB=function(H,E,D,aw,av){var\nc=E?E[1]:0,I=D?D[1]:0,l=hM(aw);if(I)ci(h(yC,az(sx,aj(hK,l))));var\ni=l;for(;;){if(i){var\nj=i[1],K=0;if(1===j[0]&&!g(j[1],qZ)){var\nM=j[4],N=j[2];hq[1]=V(function(a){return as(a[2],q0)},N);var\nq=[0,M];K=1}if(!K){var\ni=i[2];continue}}else\nvar\nq=0;if(q){var\nR=q[1],t=e2(function(a){if(1===a[0]&&!g(a[1],uj))return 1;return 0},R),n=t[2],O=t[1],L=0,aC=Q(0,am(hs(dA(hu,dA(ht(un),O))),hF));if(n){var\nk=n[1];if(0!==k[0]&&!g(k[1],ui)){var\no=[0,k[3],k[4]];L=1}}if(!L)var\no=[0,0,n];var\nm=[0,aC,o[2],o[1]]}else\nvar\nu=hl(function(a){if(1===a[0]){var\nb=a[2];if(b){var\nc=b[1],f=a[1];if(!g(c[1],uk)&&!b[2]){var\nh=c[2],e=dC(ul,f,b,a[3],a[4]),i=e?d(dh(h),um):e;return i}}}return 0},l),v=u[2],P=u[1],m=v?[0,Q(0,am(hs(dA(hu,dA(ht(up),[0,[1,uo,0,0,P],0]))),hF)),v,0]:[0,0,l,0];var\ns=m[1],ax=m[3],ay=m[2],au=0,at=[0,xQ,[0,h7(yy,c),[0,h4,0]]],W=function(o,m,f,l,k){function\na(p){var\nn=p[1][1],q=[0,[1,o,m,f,l],k];function\ni(t,j){var\na=t;for(;;){if(a){var\nc=a[1];if(0!==c[0]){var\nk=a[2],f=c[4],g=c[3],l=c[2],m=c[1],o=fb(g);if(o){var\np=o[1],h=p[2],q=p[1][1];if(j){var\nu=j[1];if(d(q,n)&&h===u){var\nr=i(k,j);return[0,[0,[0,h,[0,m,l,g,f]],r[1]],r[2]]}}else\nif(d(q,n)){var\ns=i(k,[0,h]);return[0,[0,[0,h,[0,m,l,g,f]],s[1]],s[2]]}return[0,0,a]}var\nb=hV(at,m,l,g,f);if(typeof\nb===\"number\")switch(b){case\n0:var\ne=0;break;case\n1:var\ne=[0,f];break;default:var\ne=vf}else\nvar\ne=0===b[0]?[0,[0,b[1],0]]:[0,b[1]];if(e){var\na=F(e[1],k);continue}return[0,0,a]}}return[0,0,a]}}var\nb=i(q,0),a=b[1],r=b[2];function\ne(k,j){var\na=k,b=j;for(;;){if(b){var\nf=b[1],g=f[2],d=f[1],l=b[2];if(a){var\nh=a[1],c=h[1],m=a[2],n=h[2];if(c<d){var\no=d===(c+1|0)?0:[0,[0,c+1|0,hX(g),0],0],i=e(o,b),p=i[2],a=[0,[0,c,n,G(i[1])],m],b=p;continue}if(d<c)return[0,a,b]}var\na=[0,[0,d,g,0],a],b=l;continue}return[0,a,0]}}if(a)var\nc=a[1],h=c[2],j=1===c[1]?0:[0,[0,1,hX(h),0],0],g=G(e(j,a)[1]);else\nvar\ng=0;return[0,F(hY(s,n,g),r)]}return Q(0,am(fb(f),a))},aA=dF(0,yw,[0,ve,[0,u3,[0,[0,function(a,e,c,b){return d(a,v3)},W],au]]],ay),ah=[0,h4,[0,xI,0]],af=b(z[37],yt),ag=function(g,b,a,f){var\nd=fd(b),e=h9(c,yv,yu,a);if(d===b&&e===a)return 0;return[0,[1,g,d,e,f]]},ai=[0,[0,function(a,d,c,b){return f(z[3],a,af)},ag],ah],ae=function(g,b,a,f){var\nd=fd(b),e=h9(c,yr,yq,a);if(d===b&&e===a)return 0;return[0,[1,g,d,e,f]]},ak=[0,[0,function(a,e,c,b){return d(a,ys)},ae],ai],ac=function(h,b,a,g){var\nd=fd(b),e=ad(function(a){var\nb=a[1][1],d=a[2][1];return c?fc(1,b,d):f(z[3],b,h8)},a);if(d===b&&e===a)return 0;return[0,[1,h,d,e,g]]},al=[0,yo,[0,[0,function(a,e,c,b){return d(a,yp)},ac],ak]],ab=function(d,c,b,a){return a?1:2},an=[0,[0,function(a,h,g,e){if(c)return 0;var\nd=b(z[37],av);return f(z[3],a,d)},ab],al],ap=[0,xo,[0,w2,[0,wb,[0,h7(yx,c),an]]]],aa=function(e,c,b,a){return V(function(b){if(0===b[0]){var\na=b[1][1];if(a&&!g(a[1],xx)&&!a[2])return 1}return 0},s)?[0,[1,e,ad(function(a){var\nc=a[2],b=d(a[1],xy),e=b?d(c,xz):b;return 1-e},c),b,a]]:1},aq=[0,[0,function(f,a,e,b){return c?V(function(a){var\nc=a[2],b=d(a[1],xv),e=b?d(c,xw):b;return e},a):0},aa],ap],_=c?h3:xs,$=function(g,a,e,c){var\nb=ad(function(c){var\na=c[1],i=c[2],e=h2(a);if(e)var\ng=e;else\nvar\nb=d(a,xt),h=b?d(i,xu):b,g=h||f(z[3],a,_);return 1-g},a);return a===b?0:[0,[1,g,b,e,c]]},r=[0,0],ar=[0,rf,[0,q_,[0,[0,function(d,a,c,b){return 0!==a?1:0},$],aq]]],Y=[0,wv,0],X=function(m,i,u,c){var\nf=[ao,function(h){function\nf(v){var\nb=v[2],f=r[1];try{var\nn=co(b,f)}catch(a){a=C(a);if(a===p){r[1]=[0,[0,b,bh(c)],f];return 0}throw a}if(c){var\nj=c[1];if(0!==j[0]&&!g(j[1],wh)){var\nl=j[4];if(l){var\nt=l[1];if(0!==t[0]&&!g(t[1],wi)&&!l[2]&&!c[2])return 0}}}function\nw(a){return a[1]}var\nx=am(dz(f),w),h=function(a){return Q(b,a)}(x),y=function(a){return dB(a,58)}(b),z=c7(function(a){return ey(a,1)}(y)),A=function(a){return dB(a,58)}(b),k=function(a){return ey(a,0)}(A),B=function(a){return dB(a,58)}(h),D=c7(function(a){return ey(a,1)}(B)),E=dz(function(a){return dB(a,58)}(h)),o=function(a){return Q(k,a)}(E),q=z<D?1:0,F=d(h,b),G=F||q||g(o,k),s=G?a(e+(n+1|0)):a(f1),H=d(h,b),I=H||q||g(o,k),J=I?n+bh(c)|0:bh(c);r[1]=[0,[0,b,J],f];if(!d(m,we)&&!d(s,wf))return[0,[1,m,[0,[0,wg,s],i],u,c]];return 0}return Q(0,am(b(aI(wj),i),f))}];function\nh(a){return 0}return hi(f,am(b(aI(wk),i),h))},Z=dF(wK,[0,[0,function(a,g,f,e){var\nb=d(a,wl),c=b||d(a,wm);return c},X],ar],Y,aA),B=function(i,h){var\na=i,c=h;for(;;){if(a){var\nb=a[1];if(0===b[0]){var\nj=a[2],a=j,c=h0(c,[0,b,0]);continue}var\nd=a[2],e=b[1],k=b[3],l=b[2],g=B(b[4],0);if(f(z[3],e,wd)&&0===g){var\na=d;continue}var\na=d,c=h0(c,[0,[1,e,l,k,hZ(g)],0]);continue}return c}},aD=dF(wM,[0,wJ,0],0,dF(wL,0,[0,wG,0],B(Z,0))),J=c?gz(yg,s,0):0,aB=c?eZ(function(a){var\nb=a[2];return d(a[1][1],yz)?[0,[0,yA,cu(b)]]:0},ax):0,S=H?H[1]:1,w=0===J?0:[0,[1,uu,0,0,[0,[0,az(rP,aj(rC,J))],0]],0],x=S?[0,uq,0]:0,y=0===x?1:0,T=y?0===w?1:0:y,U=T?0:[0,[1,ut,0,0,F(x,w)],0],A=[1,us,0,0,F(U,[0,[1,ur,aB,0,aD],0])];if(I)ci(h(yD,hK(A)));return[0,A,0]}};nt(yF,[0,h_,[0]]);(function(a){throw a});var\ncv=x,fe=null,ff=undefined,dH=function(a){return a==fe?0:[0,a]},yG=cv.Array;gZ(function(a){return a[1]===h_?[0,ai(a[2].toString())]:0});gZ(function(a){return a\ninstanceof\nyG?0:[0,ai(a.toString())]});var\nh$=cv.document;cv.HTMLElement===ff;var\nyH=z6(0),ia=function(b,a){return as(a,b)},yI=0,yN=[0,[0,yM,0,function(a){var\nc=as(a,yJ),b=c||as(a,yL);return b?as(a,yK):b}],yI],yQ=[0,[0,yP,0,function(a){return ia(yO,a)}],yN],yT=[0,[0,yS,0,function(a){return ia(yR,a)}],yQ],yX=[0,[0,yW,0,function(a){var\nb=as(a,yU);return b?b:as(a,yV)}],yT],y2=[0,[0,y1,y0,function(a){var\nb=as(a,yY),c=b?1-as(a,yZ):b;return c}],yX],y8=[0,[0,y7,0,function(a){var\nc=as(a,y3);if(c){var\nd=as(a,y4);if(d){var\ne=as(a,y5);if(e)return as(a,y6);var\nb=e}else\nvar\nb=d}else\nvar\nb=c;return b}],y2],y9=ai(cv.navigator.userAgent),y_=function(k){var\na=y8,h=dh(y9);for(;;){if(a){var\nc=a[1],g=a[2];if(!b(c[3],h)){var\na=g;continue}var\ne=[0,c]}else\nvar\ne=0;var\nj=gy(function(a){return[0,a[1]]},e),f=gy(function(a){return d(a[1],y$)},j),i=0;return f?f[1]:i}},ib=function(a){var\nb=bN(a,fe)?ff:a;return b===ff?0:[0,b]},za=function(a){return d(ai(typeof\na),zb)},zc=function(d){var\na=d.src,b=a.length;if(0<b){var\nc=a.indexOf(fM),e=c<0?b:c,f=iP[\"length\"];return(a.indexOf(iP)+f|0)===e?1:0}return 0},ic=function(a){var\nb=a.split(bu),c=[0,cv];return b.reduce(z8(function(a,b,d,c){return a?ib(a[1][b]):a}),c)},id=function(a){if(a){var\nb=a[1],c=dH(b.getAttribute(jn));if(c){var\nd=c[1];b.removeAttribute(jn);return dx(za,ic(d))}return 0}return 0},zd=[ao,function(g){var\nd=h$.getElementsByTagName(ap),b=0,a=0,e=d.length;for(;;){if(a<e){var\nc=dH(d.item(a));if(c){var\nb=[0,c[1],b],a=a+1|0;continue}var\na=a+1|0;continue}var\nf=G(b);return aQ(function(a){var\nb=a.tagName.toLowerCase()===ap?a:fe;return id(dx(zc,dH(b)))},f)}}],ze=id(ib(h$.currentScript)),ie=function(a){return dw(zd,a)}(ze);bX[1]=y_(0);var\nfg=[0,0,0,0],zf=function(n,m){if(!fg[1]){if(0===dI)var\na=g5([0]);else{var\nd=g5(gK(nv,dI)),g=dI.length-1-1|0,k=0;if(!(g<0)){var\nc=k;for(;;){var\nh=(c*2|0)+2|0;d[3]=aJ(dq[4],dI[1+c],h,d[3]);d[4]=aJ(dr[4],h,1,d[4]);var\nl=c+1|0;if(g!==c){var\nc=l;continue}break}}var\na=d}var\ni=nB(a,zg),e=nz(a,zh),j=function(c){var\na=c[1+i];return b(a[2],a[1])};nx[1]++;if(f(dr[28],e,a[4])){eQ(a,e+1|0);w(a[2],e)[1+e]=j}else\na[6]=[0,[0,e,j],a[6]];var\no=function(d){var\nb=j6(A,a[1]);b[1]=a[2];var\nc=Ap(b);c[1+i]=d;return c};g6[1]=(g6[1]+a[1]|0)-1|0;a[8]=G(a[8]);eQ(a,3+((w(a[2],1)[2]*16|0)/32|0)|0);fg[1]=o}return b(fg[1],[0,n,m])},zi=function(n,m,l,j){var\ne=dH(j);if(e){var\nd=gK(ai,z7(e[1])),a=d.length-1-1|0,b=0;for(;;){if(0<=a){var\nh=[0,d[1+a],b],a=a-1|0,b=h;continue}var\nf=b;break}}else\nvar\nf=0;var\ng=ai(m),i=hI(yB(0,[0,l|0],[0,0],g,f)),c=gP(k(g));pY(eR,1,function(a){return bU(c,a)},i);return gk(gQ(c))},ig=function(a,b){return{\"cleanDocument\":z9(a)}}(zi,zf),zj=function(c,b){var\na=ic(\"tinymce.Resource.add\");return a?a[1](c,b):yH.error(\"Unable to find Word Import registration API\")},zk=function(a){return a(ig)};if(ie)zk(ie[1]);else\nzj(zl,ig);ew(0);return}}(globalThis));\n","/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var typeOf$1 = function (x) {\n      if (x === null) {\n        return 'null';\n      }\n      if (x === undefined) {\n        return 'undefined';\n      }\n      var t = typeof x;\n      if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {\n        return 'array';\n      }\n      if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {\n        return 'string';\n      }\n      return t;\n    };\n    var isEquatableType = function (x) {\n      return ['undefined', 'boolean', 'number', 'string', 'function', 'xml', 'null'].indexOf(x) !== -1;\n    };\n\n    var sort$1 = function (xs, compareFn) {\n      var clone = Array.prototype.slice.call(xs);\n      return clone.sort(compareFn);\n    };\n\n    var contramap = function (eqa, f) {\n      return eq$2(function (x, y) {\n        return eqa.eq(f(x), f(y));\n      });\n    };\n    var eq$2 = function (f) {\n      return {\n        eq: f\n      };\n    };\n    var tripleEq = eq$2(function (x, y) {\n      return x === y;\n    });\n    var eqString = tripleEq;\n    var eqArray = function (eqa) {\n      return eq$2(function (x, y) {\n        if (x.length !== y.length) {\n          return false;\n        }\n        var len = x.length;\n        for (var i = 0; i < len; i++) {\n          if (!eqa.eq(x[i], y[i])) {\n            return false;\n          }\n        }\n        return true;\n      });\n    };\n    var eqSortedArray = function (eqa, compareFn) {\n      return contramap(eqArray(eqa), function (xs) {\n        return sort$1(xs, compareFn);\n      });\n    };\n    var eqRecord = function (eqa) {\n      return eq$2(function (x, y) {\n        var kx = Object.keys(x);\n        var ky = Object.keys(y);\n        if (!eqSortedArray(eqString).eq(kx, ky)) {\n          return false;\n        }\n        var len = kx.length;\n        for (var i = 0; i < len; i++) {\n          var q = kx[i];\n          if (!eqa.eq(x[q], y[q])) {\n            return false;\n          }\n        }\n        return true;\n      });\n    };\n    var eqAny = eq$2(function (x, y) {\n      if (x === y) {\n        return true;\n      }\n      var tx = typeOf$1(x);\n      var ty = typeOf$1(y);\n      if (tx !== ty) {\n        return false;\n      }\n      if (isEquatableType(tx)) {\n        return x === y;\n      } else if (tx === 'array') {\n        return eqArray(eqAny).eq(x, y);\n      } else if (tx === 'object') {\n        return eqRecord(eqAny).eq(x, y);\n      }\n      return false;\n    });\n\n    const getPrototypeOf$2 = Object.getPrototypeOf;\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq$1 = t => a => t === a;\n    const is$4 = (value, constructor) => isObject(value) && hasProto(value, constructor, (o, proto) => getPrototypeOf$2(o) === proto);\n    const isString = isType$1('string');\n    const isObject = isType$1('object');\n    const isPlainObject = value => is$4(value, Object);\n    const isArray$1 = isType$1('array');\n    const isNull = eq$1(null);\n    const isBoolean = isSimpleType('boolean');\n    const isUndefined = eq$1(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n    const isArrayOf = (value, pred) => {\n      if (isArray$1(value)) {\n        for (let i = 0, len = value.length; i < len; ++i) {\n          if (!pred(value[i])) {\n            return false;\n          }\n        }\n        return true;\n      }\n      return false;\n    };\n\n    const noop = () => {};\n    const compose = (fa, fb) => {\n      return (...args) => {\n        return fa(fb.apply(null, args));\n      };\n    };\n    const compose1 = (fbc, fab) => a => fbc(fab(a));\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const identity = x => {\n      return x;\n    };\n    const tripleEquals = (a, b) => {\n      return a === b;\n    };\n    function curry(fn, ...initialArgs) {\n      return (...restArgs) => {\n        const all = initialArgs.concat(restArgs);\n        return fn.apply(null, all);\n      };\n    }\n    const not = f => t => !f(t);\n    const die = msg => {\n      return () => {\n        throw new Error(msg);\n      };\n    };\n    const apply$1 = f => {\n      return f();\n    };\n    const call = f => {\n      f();\n    };\n    const never = constant(false);\n    const always = constant(true);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const nativeSlice = Array.prototype.slice;\n    const nativeIndexOf = Array.prototype.indexOf;\n    const nativePush = Array.prototype.push;\n    const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n    const indexOf$1 = (xs, x) => {\n      const r = rawIndexOf(xs, x);\n      return r === -1 ? Optional.none() : Optional.some(r);\n    };\n    const contains$2 = (xs, x) => rawIndexOf(xs, x) > -1;\n    const exists = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const map$3 = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$e = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const eachr = (xs, f) => {\n      for (let i = xs.length - 1; i >= 0; i--) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const partition$2 = (xs, pred) => {\n      const pass = [];\n      const fail = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        const arr = pred(x, i) ? pass : fail;\n        arr.push(x);\n      }\n      return {\n        pass,\n        fail\n      };\n    };\n    const filter$5 = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    const foldr = (xs, f, acc) => {\n      eachr(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const foldl = (xs, f, acc) => {\n      each$e(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const findUntil$1 = (xs, pred, until) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(x);\n        } else if (until(x, i)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const find$2 = (xs, pred) => {\n      return findUntil$1(xs, pred, never);\n    };\n    const findIndex$2 = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(i);\n        }\n      }\n      return Optional.none();\n    };\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray$1(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const bind$3 = (xs, f) => flatten(map$3(xs, f));\n    const forall = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        const x = xs[i];\n        if (pred(x, i) !== true) {\n          return false;\n        }\n      }\n      return true;\n    };\n    const reverse = xs => {\n      const r = nativeSlice.call(xs, 0);\n      r.reverse();\n      return r;\n    };\n    const difference = (a1, a2) => filter$5(a1, x => !contains$2(a2, x));\n    const mapToObject = (xs, f) => {\n      const r = {};\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        r[String(x)] = f(x, i);\n      }\n      return r;\n    };\n    const sort = (xs, comparator) => {\n      const copy = nativeSlice.call(xs, 0);\n      copy.sort(comparator);\n      return copy;\n    };\n    const get$b = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get$b(xs, 0);\n    const last$3 = xs => get$b(xs, xs.length - 1);\n    const from = isFunction(Array.from) ? Array.from : x => nativeSlice.call(x);\n    const findMap = (arr, f) => {\n      for (let i = 0; i < arr.length; i++) {\n        const r = f(arr[i], i);\n        if (r.isSome()) {\n          return r;\n        }\n      }\n      return Optional.none();\n    };\n    const unique$1 = (xs, comparator) => {\n      const r = [];\n      const isDuplicated = isFunction(comparator) ? x => exists(r, i => comparator(i, x)) : x => contains$2(r, x);\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (!isDuplicated(x)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n\n    const keys = Object.keys;\n    const hasOwnProperty$1 = Object.hasOwnProperty;\n    const each$d = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const map$2 = (obj, f) => {\n      return tupleMap(obj, (x, i) => ({\n        k: i,\n        v: f(x, i)\n      }));\n    };\n    const tupleMap = (obj, f) => {\n      const r = {};\n      each$d(obj, (x, i) => {\n        const tuple = f(x, i);\n        r[tuple.k] = tuple.v;\n      });\n      return r;\n    };\n    const objAcc = r => (x, i) => {\n      r[i] = x;\n    };\n    const internalFilter = (obj, pred, onTrue, onFalse) => {\n      each$d(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const bifilter = (obj, pred) => {\n      const t = {};\n      const f = {};\n      internalFilter(obj, pred, objAcc(t), objAcc(f));\n      return {\n        t,\n        f\n      };\n    };\n    const filter$4 = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\n    const mapToArray = (obj, f) => {\n      const r = [];\n      each$d(obj, (value, name) => {\n        r.push(f(value, name));\n      });\n      return r;\n    };\n    const values = obj => {\n      return mapToArray(obj, identity);\n    };\n    const get$a = (obj, key) => {\n      return has$2(obj, key) ? Optional.from(obj[key]) : Optional.none();\n    };\n    const has$2 = (obj, key) => hasOwnProperty$1.call(obj, key);\n    const hasNonNullableKey = (obj, key) => has$2(obj, key) && obj[key] !== undefined && obj[key] !== null;\n    const equal$1 = (a1, a2, eq = eqAny) => eqRecord(eq).eq(a1, a2);\n\n    const stringArray = a => {\n      const all = {};\n      each$e(a, key => {\n        all[key] = {};\n      });\n      return keys(all);\n    };\n\n    const isArrayLike = o => o.length !== undefined;\n    const isArray = Array.isArray;\n    const toArray$1 = obj => {\n      if (!isArray(obj)) {\n        const array = [];\n        for (let i = 0, l = obj.length; i < l; i++) {\n          array[i] = obj[i];\n        }\n        return array;\n      } else {\n        return obj;\n      }\n    };\n    const each$c = (o, cb, s) => {\n      if (!o) {\n        return false;\n      }\n      s = s || o;\n      if (isArrayLike(o)) {\n        for (let n = 0, l = o.length; n < l; n++) {\n          if (cb.call(s, o[n], n, o) === false) {\n            return false;\n          }\n        }\n      } else {\n        for (const n in o) {\n          if (has$2(o, n)) {\n            if (cb.call(s, o[n], n, o) === false) {\n              return false;\n            }\n          }\n        }\n      }\n      return true;\n    };\n    const map$1 = (array, callback) => {\n      const out = [];\n      each$c(array, (item, index) => {\n        out.push(callback(item, index, array));\n      });\n      return out;\n    };\n    const filter$3 = (a, f) => {\n      const o = [];\n      each$c(a, (v, index) => {\n        if (!f || f(v, index, a)) {\n          o.push(v);\n        }\n      });\n      return o;\n    };\n    const indexOf = (a, v) => {\n      if (a) {\n        for (let i = 0, l = a.length; i < l; i++) {\n          if (a[i] === v) {\n            return i;\n          }\n        }\n      }\n      return -1;\n    };\n    const reduce = (collection, iteratee, accumulator, thisArg) => {\n      let acc = isUndefined(accumulator) ? collection[0] : accumulator;\n      for (let i = 0; i < collection.length; i++) {\n        acc = iteratee.call(thisArg, acc, collection[i], i);\n      }\n      return acc;\n    };\n    const findIndex$1 = (array, predicate, thisArg) => {\n      for (let i = 0, l = array.length; i < l; i++) {\n        if (predicate.call(thisArg, array[i], i, array)) {\n          return i;\n        }\n      }\n      return -1;\n    };\n    const last$2 = collection => collection[collection.length - 1];\n\n    const cached = f => {\n      let called = false;\n      let r;\n      return (...args) => {\n        if (!called) {\n          called = true;\n          r = f.apply(null, args);\n        }\n        return r;\n      };\n    };\n\n    const DeviceType = (os, browser, userAgent, mediaMatch) => {\n      const isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n      const isiPhone = os.isiOS() && !isiPad;\n      const isMobile = os.isiOS() || os.isAndroid();\n      const isTouch = isMobile || mediaMatch('(pointer:coarse)');\n      const isTablet = isiPad || !isiPhone && isMobile && mediaMatch('(min-device-width:768px)');\n      const isPhone = isiPhone || isMobile && !isTablet;\n      const iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n      const isDesktop = !isPhone && !isTablet && !iOSwebview;\n      return {\n        isiPad: constant(isiPad),\n        isiPhone: constant(isiPhone),\n        isTablet: constant(isTablet),\n        isPhone: constant(isPhone),\n        isTouch: constant(isTouch),\n        isAndroid: os.isAndroid,\n        isiOS: os.isiOS,\n        isWebView: constant(iOSwebview),\n        isDesktop: constant(isDesktop)\n      };\n    };\n\n    const firstMatch = (regexes, s) => {\n      for (let i = 0; i < regexes.length; i++) {\n        const x = regexes[i];\n        if (x.test(s)) {\n          return x;\n        }\n      }\n      return undefined;\n    };\n    const find$1 = (regexes, agent) => {\n      const r = firstMatch(regexes, agent);\n      if (!r) {\n        return {\n          major: 0,\n          minor: 0\n        };\n      }\n      const group = i => {\n        return Number(agent.replace(r, '$' + i));\n      };\n      return nu$3(group(1), group(2));\n    };\n    const detect$5 = (versionRegexes, agent) => {\n      const cleanedAgent = String(agent).toLowerCase();\n      if (versionRegexes.length === 0) {\n        return unknown$2();\n      }\n      return find$1(versionRegexes, cleanedAgent);\n    };\n    const unknown$2 = () => {\n      return nu$3(0, 0);\n    };\n    const nu$3 = (major, minor) => {\n      return {\n        major,\n        minor\n      };\n    };\n    const Version = {\n      nu: nu$3,\n      detect: detect$5,\n      unknown: unknown$2\n    };\n\n    const detectBrowser$1 = (browsers, userAgentData) => {\n      return findMap(userAgentData.brands, uaBrand => {\n        const lcBrand = uaBrand.brand.toLowerCase();\n        return find$2(browsers, browser => {\n          var _a;\n          return lcBrand === ((_a = browser.brand) === null || _a === void 0 ? void 0 : _a.toLowerCase());\n        }).map(info => ({\n          current: info.name,\n          version: Version.nu(parseInt(uaBrand.version, 10), 0)\n        }));\n      });\n    };\n\n    const detect$4 = (candidates, userAgent) => {\n      const agent = String(userAgent).toLowerCase();\n      return find$2(candidates, candidate => {\n        return candidate.search(agent);\n      });\n    };\n    const detectBrowser = (browsers, userAgent) => {\n      return detect$4(browsers, userAgent).map(browser => {\n        const version = Version.detect(browser.versionRegexes, userAgent);\n        return {\n          current: browser.name,\n          version\n        };\n      });\n    };\n    const detectOs = (oses, userAgent) => {\n      return detect$4(oses, userAgent).map(os => {\n        const version = Version.detect(os.versionRegexes, userAgent);\n        return {\n          current: os.name,\n          version\n        };\n      });\n    };\n\n    const removeFromStart = (str, numChars) => {\n      return str.substring(numChars);\n    };\n\n    const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n    const removeLeading = (str, prefix) => {\n      return startsWith(str, prefix) ? removeFromStart(str, prefix.length) : str;\n    };\n    const contains$1 = (str, substr, start = 0, end) => {\n      const idx = str.indexOf(substr, start);\n      if (idx !== -1) {\n        return isUndefined(end) ? true : idx + substr.length <= end;\n      } else {\n        return false;\n      }\n    };\n    const startsWith = (str, prefix) => {\n      return checkRange(str, prefix, 0);\n    };\n    const endsWith = (str, suffix) => {\n      return checkRange(str, suffix, str.length - suffix.length);\n    };\n    const blank = r => s => s.replace(r, '');\n    const trim$4 = blank(/^\\s+|\\s+$/g);\n    const lTrim = blank(/^\\s+/g);\n    const rTrim = blank(/\\s+$/g);\n    const isNotEmpty = s => s.length > 0;\n    const isEmpty$3 = s => !isNotEmpty(s);\n    const repeat = (s, count) => count <= 0 ? '' : new Array(count + 1).join(s);\n    const toInt = (value, radix = 10) => {\n      const num = parseInt(value, radix);\n      return isNaN(num) ? Optional.none() : Optional.some(num);\n    };\n\n    const normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n    const checkContains = target => {\n      return uastring => {\n        return contains$1(uastring, target);\n      };\n    };\n    const browsers = [{\n      name: 'Edge',\n      versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n      search: uastring => {\n        return contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');\n      }\n    }, {\n      name: 'Chromium',\n      brand: 'Chromium',\n      versionRegexes: [/.*?chrome\\/([0-9]+)\\.([0-9]+).*/, normalVersionRegex],\n      search: uastring => {\n        return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');\n      }\n    }, {\n      name: 'IE',\n      versionRegexes: [/.*?msie\\ ?([0-9]+)\\.([0-9]+).*/, /.*?rv:([0-9]+)\\.([0-9]+).*/],\n      search: uastring => {\n        return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');\n      }\n    }, {\n      name: 'Opera',\n      versionRegexes: [normalVersionRegex, /.*?opera\\/([0-9]+)\\.([0-9]+).*/],\n      search: checkContains('opera')\n    }, {\n      name: 'Firefox',\n      versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n      search: checkContains('firefox')\n    }, {\n      name: 'Safari',\n      versionRegexes: [normalVersionRegex, /.*?cpu os ([0-9]+)_([0-9]+).*/],\n      search: uastring => {\n        return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');\n      }\n    }];\n    const oses = [{\n      name: 'Windows',\n      search: checkContains('win'),\n      versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n    }, {\n      name: 'iOS',\n      search: uastring => {\n        return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');\n      },\n      versionRegexes: [/.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]\n    }, {\n      name: 'Android',\n      search: checkContains('android'),\n      versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n    }, {\n      name: 'macOS',\n      search: checkContains('mac os x'),\n      versionRegexes: [/.*?mac\\ os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n    }, {\n      name: 'Linux',\n      search: checkContains('linux'),\n      versionRegexes: []\n    }, {\n      name: 'Solaris',\n      search: checkContains('sunos'),\n      versionRegexes: []\n    }, {\n      name: 'FreeBSD',\n      search: checkContains('freebsd'),\n      versionRegexes: []\n    }, {\n      name: 'ChromeOS',\n      search: checkContains('cros'),\n      versionRegexes: [/.*?chrome\\/([0-9]+)\\.([0-9]+).*/]\n    }];\n    const PlatformInfo = {\n      browsers: constant(browsers),\n      oses: constant(oses)\n    };\n\n    const edge = 'Edge';\n    const chromium = 'Chromium';\n    const ie = 'IE';\n    const opera = 'Opera';\n    const firefox = 'Firefox';\n    const safari = 'Safari';\n    const unknown$1 = () => {\n      return nu$2({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    const nu$2 = info => {\n      const current = info.current;\n      const version = info.version;\n      const isBrowser = name => () => current === name;\n      return {\n        current,\n        version,\n        isEdge: isBrowser(edge),\n        isChromium: isBrowser(chromium),\n        isIE: isBrowser(ie),\n        isOpera: isBrowser(opera),\n        isFirefox: isBrowser(firefox),\n        isSafari: isBrowser(safari)\n      };\n    };\n    const Browser = {\n      unknown: unknown$1,\n      nu: nu$2,\n      edge: constant(edge),\n      chromium: constant(chromium),\n      ie: constant(ie),\n      opera: constant(opera),\n      firefox: constant(firefox),\n      safari: constant(safari)\n    };\n\n    const windows = 'Windows';\n    const ios = 'iOS';\n    const android = 'Android';\n    const linux = 'Linux';\n    const macos = 'macOS';\n    const solaris = 'Solaris';\n    const freebsd = 'FreeBSD';\n    const chromeos = 'ChromeOS';\n    const unknown = () => {\n      return nu$1({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    const nu$1 = info => {\n      const current = info.current;\n      const version = info.version;\n      const isOS = name => () => current === name;\n      return {\n        current,\n        version,\n        isWindows: isOS(windows),\n        isiOS: isOS(ios),\n        isAndroid: isOS(android),\n        isMacOS: isOS(macos),\n        isLinux: isOS(linux),\n        isSolaris: isOS(solaris),\n        isFreeBSD: isOS(freebsd),\n        isChromeOS: isOS(chromeos)\n      };\n    };\n    const OperatingSystem = {\n      unknown,\n      nu: nu$1,\n      windows: constant(windows),\n      ios: constant(ios),\n      android: constant(android),\n      linux: constant(linux),\n      macos: constant(macos),\n      solaris: constant(solaris),\n      freebsd: constant(freebsd),\n      chromeos: constant(chromeos)\n    };\n\n    const detect$3 = (userAgent, userAgentDataOpt, mediaMatch) => {\n      const browsers = PlatformInfo.browsers();\n      const oses = PlatformInfo.oses();\n      const browser = userAgentDataOpt.bind(userAgentData => detectBrowser$1(browsers, userAgentData)).orThunk(() => detectBrowser(browsers, userAgent)).fold(Browser.unknown, Browser.nu);\n      const os = detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n      const deviceType = DeviceType(os, browser, userAgent, mediaMatch);\n      return {\n        browser,\n        os,\n        deviceType\n      };\n    };\n    const PlatformDetection = {\n      detect: detect$3\n    };\n\n    const mediaMatch = query => window.matchMedia(query).matches;\n    let platform$4 = cached(() => PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch));\n    const detect$2 = () => platform$4();\n\n    const userAgent = navigator.userAgent;\n    const platform$3 = detect$2();\n    const browser$3 = platform$3.browser;\n    const os$1 = platform$3.os;\n    const deviceType = platform$3.deviceType;\n    const windowsPhone = userAgent.indexOf('Windows Phone') !== -1;\n    const Env = {\n      transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',\n      documentMode: browser$3.isIE() ? document.documentMode || 7 : 10,\n      cacheSuffix: null,\n      container: null,\n      canHaveCSP: !browser$3.isIE(),\n      windowsPhone,\n      browser: {\n        current: browser$3.current,\n        version: browser$3.version,\n        isChromium: browser$3.isChromium,\n        isEdge: browser$3.isEdge,\n        isFirefox: browser$3.isFirefox,\n        isIE: browser$3.isIE,\n        isOpera: browser$3.isOpera,\n        isSafari: browser$3.isSafari\n      },\n      os: {\n        current: os$1.current,\n        version: os$1.version,\n        isAndroid: os$1.isAndroid,\n        isChromeOS: os$1.isChromeOS,\n        isFreeBSD: os$1.isFreeBSD,\n        isiOS: os$1.isiOS,\n        isLinux: os$1.isLinux,\n        isMacOS: os$1.isMacOS,\n        isSolaris: os$1.isSolaris,\n        isWindows: os$1.isWindows\n      },\n      deviceType: {\n        isDesktop: deviceType.isDesktop,\n        isiPad: deviceType.isiPad,\n        isiPhone: deviceType.isiPhone,\n        isPhone: deviceType.isPhone,\n        isTablet: deviceType.isTablet,\n        isTouch: deviceType.isTouch,\n        isWebView: deviceType.isWebView\n      }\n    };\n\n    const whiteSpaceRegExp$1 = /^\\s*|\\s*$/g;\n    const trim$3 = str => {\n      return isNullable(str) ? '' : ('' + str).replace(whiteSpaceRegExp$1, '');\n    };\n    const is$3 = (obj, type) => {\n      if (!type) {\n        return obj !== undefined;\n      }\n      if (type === 'array' && isArray(obj)) {\n        return true;\n      }\n      return typeof obj === type;\n    };\n    const makeMap$4 = (items, delim, map = {}) => {\n      const resolvedItems = isString(items) ? items.split(delim || ',') : items || [];\n      let i = resolvedItems.length;\n      while (i--) {\n        map[resolvedItems[i]] = {};\n      }\n      return map;\n    };\n    const hasOwnProperty = has$2;\n    const extend$3 = (obj, ...exts) => {\n      for (let i = 0; i < exts.length; i++) {\n        const ext = exts[i];\n        for (const name in ext) {\n          if (has$2(ext, name)) {\n            const value = ext[name];\n            if (value !== undefined) {\n              obj[name] = value;\n            }\n          }\n        }\n      }\n      return obj;\n    };\n    const walk$4 = function (o, f, n, s) {\n      s = s || this;\n      if (o) {\n        if (n) {\n          o = o[n];\n        }\n        each$c(o, (o, i) => {\n          if (f.call(s, o, i, n) === false) {\n            return false;\n          } else {\n            walk$4(o, f, n, s);\n            return true;\n          }\n        });\n      }\n    };\n    const resolve$3 = (n, o = window) => {\n      const path = n.split('.');\n      for (let i = 0, l = path.length; i < l; i++) {\n        o = o[path[i]];\n        if (!o) {\n          break;\n        }\n      }\n      return o;\n    };\n    const explode$3 = (s, d) => {\n      if (isArray$1(s)) {\n        return s;\n      } else if (s === '') {\n        return [];\n      } else {\n        return map$1(s.split(d || ','), trim$3);\n      }\n    };\n    const _addCacheSuffix = url => {\n      const cacheSuffix = Env.cacheSuffix;\n      if (cacheSuffix) {\n        url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;\n      }\n      return url;\n    };\n    const Tools = {\n      trim: trim$3,\n      isArray: isArray,\n      is: is$3,\n      toArray: toArray$1,\n      makeMap: makeMap$4,\n      each: each$c,\n      map: map$1,\n      grep: filter$3,\n      inArray: indexOf,\n      hasOwn: hasOwnProperty,\n      extend: extend$3,\n      walk: walk$4,\n      resolve: resolve$3,\n      explode: explode$3,\n      _addCacheSuffix\n    };\n\n    const is$2 = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n    const equals = (lhs, rhs, comparator = tripleEquals) => lift2(lhs, rhs, comparator).getOr(lhs.isNone() && rhs.isNone());\n    const cat = arr => {\n      const r = [];\n      const push = x => {\n        r.push(x);\n      };\n      for (let i = 0; i < arr.length; i++) {\n        arr[i].each(push);\n      }\n      return r;\n    };\n    const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();\n    const lift3 = (oa, ob, oc, f) => oa.isSome() && ob.isSome() && oc.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie(), oc.getOrDie())) : Optional.none();\n    const someIf = (b, a) => b ? Optional.some(a) : Optional.none();\n\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve$2 = (p, scope) => {\n      const parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve$2(name, scope);\n    };\n    const getOrDie = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf$1 = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve$2('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf$1(x).constructor.name));\n    };\n\n    const COMMENT = 8;\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const name = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n    const type$1 = element => element.dom.nodeType;\n    const isType = t => element => type$1(element) === t;\n    const isComment$1 = element => type$1(element) === COMMENT || name(element) === '#comment';\n    const isHTMLElement$1 = element => isElement$7(element) && isPrototypeOf(element.dom);\n    const isElement$7 = isType(ELEMENT);\n    const isText$b = isType(TEXT);\n    const isDocument$2 = isType(DOCUMENT);\n    const isDocumentFragment$1 = isType(DOCUMENT_FRAGMENT);\n    const isTag = tag => e => isElement$7(e) && name(e) === tag;\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set$3 = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const setAll$1 = (element, attrs) => {\n      const dom = element.dom;\n      each$d(attrs, (v, k) => {\n        rawSet(dom, k, v);\n      });\n    };\n    const get$9 = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const getOpt = (element, key) => Optional.from(get$9(element, key));\n    const has$1 = (element, key) => {\n      const dom = element.dom;\n      return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;\n    };\n    const remove$a = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n    const hasNone = element => {\n      const attrs = element.dom.attributes;\n      return attrs === undefined || attrs === null || attrs.length === 0;\n    };\n    const clone$4 = element => foldl(element.dom.attributes, (acc, attr) => {\n      acc[attr.name] = attr.value;\n      return acc;\n    }, {});\n\n    const read$4 = (element, attr) => {\n      const value = get$9(element, attr);\n      return value === undefined || value === '' ? [] : value.split(' ');\n    };\n    const add$4 = (element, attr, id) => {\n      const old = read$4(element, attr);\n      const nu = old.concat([id]);\n      set$3(element, attr, nu.join(' '));\n      return true;\n    };\n    const remove$9 = (element, attr, id) => {\n      const nu = filter$5(read$4(element, attr), v => v !== id);\n      if (nu.length > 0) {\n        set$3(element, attr, nu.join(' '));\n      } else {\n        remove$a(element, attr);\n      }\n      return false;\n    };\n\n    const supports = element => element.dom.classList !== undefined;\n    const get$8 = element => read$4(element, 'class');\n    const add$3 = (element, clazz) => add$4(element, 'class', clazz);\n    const remove$8 = (element, clazz) => remove$9(element, 'class', clazz);\n    const toggle$2 = (element, clazz) => {\n      if (contains$2(get$8(element), clazz)) {\n        return remove$8(element, clazz);\n      } else {\n        return add$3(element, clazz);\n      }\n    };\n\n    const add$2 = (element, clazz) => {\n      if (supports(element)) {\n        element.dom.classList.add(clazz);\n      } else {\n        add$3(element, clazz);\n      }\n    };\n    const cleanClass = element => {\n      const classList = supports(element) ? element.dom.classList : get$8(element);\n      if (classList.length === 0) {\n        remove$a(element, 'class');\n      }\n    };\n    const remove$7 = (element, clazz) => {\n      if (supports(element)) {\n        const classList = element.dom.classList;\n        classList.remove(clazz);\n      } else {\n        remove$8(element, clazz);\n      }\n      cleanClass(element);\n    };\n    const toggle$1 = (element, clazz) => {\n      const result = supports(element) ? element.dom.classList.toggle(clazz) : toggle$2(element, clazz);\n      cleanClass(element);\n      return result;\n    };\n    const has = (element, clazz) => supports(element) && element.dom.classList.contains(clazz);\n\n    const fromHtml$1 = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom$2(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom$2(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom$2(node);\n    };\n    const fromDom$2 = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint$2 = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$2);\n    const SugarElement = {\n      fromHtml: fromHtml$1,\n      fromTag,\n      fromText,\n      fromDom: fromDom$2,\n      fromPoint: fromPoint$2\n    };\n\n    const toArray = (target, f) => {\n      const r = [];\n      const recurse = e => {\n        r.push(e);\n        return f(e);\n      };\n      let cur = f(target);\n      do {\n        cur = cur.bind(recurse);\n      } while (cur.isSome());\n      return r;\n    };\n\n    const is$1 = (element, selector) => {\n      const dom = element.dom;\n      if (dom.nodeType !== ELEMENT) {\n        return false;\n      } else {\n        const elem = dom;\n        if (elem.matches !== undefined) {\n          return elem.matches(selector);\n        } else if (elem.msMatchesSelector !== undefined) {\n          return elem.msMatchesSelector(selector);\n        } else if (elem.webkitMatchesSelector !== undefined) {\n          return elem.webkitMatchesSelector(selector);\n        } else if (elem.mozMatchesSelector !== undefined) {\n          return elem.mozMatchesSelector(selector);\n        } else {\n          throw new Error('Browser lacks native selectors');\n        }\n      }\n    };\n    const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;\n    const all = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? [] : map$3(base.querySelectorAll(selector), SugarElement.fromDom);\n    };\n    const one = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n    };\n\n    const eq = (e1, e2) => e1.dom === e2.dom;\n    const contains = (e1, e2) => {\n      const d1 = e1.dom;\n      const d2 = e2.dom;\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n\n    const owner$1 = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument$2(dos) ? dos : owner$1(dos);\n    const documentElement = element => SugarElement.fromDom(documentOrOwner(element).dom.documentElement);\n    const defaultView = element => SugarElement.fromDom(documentOrOwner(element).dom.defaultView);\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const parentElement = element => Optional.from(element.dom.parentElement).map(SugarElement.fromDom);\n    const parents$1 = (element, isRoot) => {\n      const stop = isFunction(isRoot) ? isRoot : never;\n      let dom = element.dom;\n      const ret = [];\n      while (dom.parentNode !== null && dom.parentNode !== undefined) {\n        const rawParent = dom.parentNode;\n        const p = SugarElement.fromDom(rawParent);\n        ret.push(p);\n        if (stop(p) === true) {\n          break;\n        } else {\n          dom = rawParent;\n        }\n      }\n      return ret;\n    };\n    const siblings = element => {\n      const filterSelf = elements => filter$5(elements, x => !eq(element, x));\n      return parent(element).map(children$1).map(filterSelf).getOr([]);\n    };\n    const prevSibling = element => Optional.from(element.dom.previousSibling).map(SugarElement.fromDom);\n    const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);\n    const prevSiblings = element => reverse(toArray(element, prevSibling));\n    const nextSiblings = element => toArray(element, nextSibling);\n    const children$1 = element => map$3(element.dom.childNodes, SugarElement.fromDom);\n    const child$1 = (element, index) => {\n      const cs = element.dom.childNodes;\n      return Optional.from(cs[index]).map(SugarElement.fromDom);\n    };\n    const firstChild = element => child$1(element, 0);\n    const lastChild = element => child$1(element, element.dom.childNodes.length - 1);\n    const childNodesCount = element => element.dom.childNodes.length;\n    const hasChildNodes = element => element.dom.hasChildNodes();\n\n    const getHead = doc => {\n      const b = doc.dom.head;\n      if (b === null || b === undefined) {\n        throw new Error('Head is not available yet');\n      }\n      return SugarElement.fromDom(b);\n    };\n\n    const isShadowRoot = dos => isDocumentFragment$1(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const isSupported$1 = constant(supported);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getStyleContainer = dos => isShadowRoot(dos) ? dos : getHead(documentOrOwner(dos));\n    const getContentContainer = dos => isShadowRoot(dos) ? dos : SugarElement.fromDom(documentOrOwner(dos).dom.body);\n    const getShadowRoot = e => {\n      const r = getRootNode(e);\n      return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n    };\n    const getShadowHost = e => SugarElement.fromDom(e.dom.host);\n    const getOriginalEventTarget = event => {\n      if (isSupported$1() && isNonNullable(event.target)) {\n        const el = SugarElement.fromDom(event.target);\n        if (isElement$7(el) && isOpenShadowHost(el)) {\n          if (event.composed && event.composedPath) {\n            const composedPath = event.composedPath();\n            if (composedPath) {\n              return head(composedPath);\n            }\n          }\n        }\n      }\n      return Optional.from(event.target);\n    };\n    const isOpenShadowHost = element => isNonNullable(element.dom.shadowRoot);\n\n    const inBody = element => {\n      const dom = isText$b(element) ? element.dom.parentNode : element.dom;\n      if (dom === undefined || dom === null || dom.ownerDocument === null) {\n        return false;\n      }\n      const doc = dom.ownerDocument;\n      return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n    };\n\n    var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n      if (is(scope, a)) {\n        return Optional.some(scope);\n      } else if (isFunction(isRoot) && isRoot(scope)) {\n        return Optional.none();\n      } else {\n        return ancestor(scope, a, isRoot);\n      }\n    };\n\n    const ancestor$4 = (scope, predicate, isRoot) => {\n      let element = scope.dom;\n      const stop = isFunction(isRoot) ? isRoot : never;\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        if (predicate(el)) {\n          return Optional.some(el);\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const closest$4 = (scope, predicate, isRoot) => {\n      const is = (s, test) => test(s);\n      return ClosestOrAncestor(is, ancestor$4, scope, predicate, isRoot);\n    };\n    const sibling$1 = (scope, predicate) => {\n      const element = scope.dom;\n      if (!element.parentNode) {\n        return Optional.none();\n      }\n      return child(SugarElement.fromDom(element.parentNode), x => !eq(scope, x) && predicate(x));\n    };\n    const child = (scope, predicate) => {\n      const pred = node => predicate(SugarElement.fromDom(node));\n      const result = find$2(scope.dom.childNodes, pred);\n      return result.map(SugarElement.fromDom);\n    };\n    const descendant$2 = (scope, predicate) => {\n      const descend = node => {\n        for (let i = 0; i < node.childNodes.length; i++) {\n          const child = SugarElement.fromDom(node.childNodes[i]);\n          if (predicate(child)) {\n            return Optional.some(child);\n          }\n          const res = descend(node.childNodes[i]);\n          if (res.isSome()) {\n            return res;\n          }\n        }\n        return Optional.none();\n      };\n      return descend(scope.dom);\n    };\n\n    const ancestor$3 = (scope, selector, isRoot) => ancestor$4(scope, e => is$1(e, selector), isRoot);\n    const descendant$1 = (scope, selector) => one(selector, scope);\n    const closest$3 = (scope, selector, isRoot) => {\n      const is = (element, selector) => is$1(element, selector);\n      return ClosestOrAncestor(is, ancestor$3, scope, selector, isRoot);\n    };\n\n    const closest$2 = target => closest$3(target, '[contenteditable]');\n    const isEditable$2 = (element, assumeEditable = false) => {\n      if (inBody(element)) {\n        return element.dom.isContentEditable;\n      } else {\n        return closest$2(element).fold(constant(assumeEditable), editable => getRaw$1(editable) === 'true');\n      }\n    };\n    const getRaw$1 = element => element.dom.contentEditable;\n\n    const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n    const internalSet = (dom, property, value) => {\n      if (!isString(value)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value);\n      }\n      if (isSupported(dom)) {\n        dom.style.setProperty(property, value);\n      }\n    };\n    const internalRemove = (dom, property) => {\n      if (isSupported(dom)) {\n        dom.style.removeProperty(property);\n      }\n    };\n    const set$2 = (element, property, value) => {\n      const dom = element.dom;\n      internalSet(dom, property, value);\n    };\n    const setAll = (element, css) => {\n      const dom = element.dom;\n      each$d(css, (v, k) => {\n        internalSet(dom, k, v);\n      });\n    };\n    const get$7 = (element, property) => {\n      const dom = element.dom;\n      const styles = window.getComputedStyle(dom);\n      const r = styles.getPropertyValue(property);\n      return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n    };\n    const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n    const getRaw = (element, property) => {\n      const dom = element.dom;\n      const raw = getUnsafeProperty(dom, property);\n      return Optional.from(raw).filter(r => r.length > 0);\n    };\n    const getAllRaw = element => {\n      const css = {};\n      const dom = element.dom;\n      if (isSupported(dom)) {\n        for (let i = 0; i < dom.style.length; i++) {\n          const ruleName = dom.style.item(i);\n          css[ruleName] = dom.style[ruleName];\n        }\n      }\n      return css;\n    };\n    const remove$6 = (element, property) => {\n      const dom = element.dom;\n      internalRemove(dom, property);\n      if (is$2(getOpt(element, 'style').map(trim$4), '')) {\n        remove$a(element, 'style');\n      }\n    };\n    const reflow = e => e.dom.offsetWidth;\n\n    const before$3 = (marker, element) => {\n      const parent$1 = parent(marker);\n      parent$1.each(v => {\n        v.dom.insertBefore(element.dom, marker.dom);\n      });\n    };\n    const after$4 = (marker, element) => {\n      const sibling = nextSibling(marker);\n      sibling.fold(() => {\n        const parent$1 = parent(marker);\n        parent$1.each(v => {\n          append$1(v, element);\n        });\n      }, v => {\n        before$3(v, element);\n      });\n    };\n    const prepend = (parent, element) => {\n      const firstChild$1 = firstChild(parent);\n      firstChild$1.fold(() => {\n        append$1(parent, element);\n      }, v => {\n        parent.dom.insertBefore(element.dom, v.dom);\n      });\n    };\n    const append$1 = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n    const wrap$2 = (element, wrapper) => {\n      before$3(element, wrapper);\n      append$1(wrapper, element);\n    };\n\n    const after$3 = (marker, elements) => {\n      each$e(elements, (x, i) => {\n        const e = i === 0 ? marker : elements[i - 1];\n        after$4(e, x);\n      });\n    };\n    const append = (parent, elements) => {\n      each$e(elements, x => {\n        append$1(parent, x);\n      });\n    };\n\n    const empty = element => {\n      element.dom.textContent = '';\n      each$e(children$1(element), rogue => {\n        remove$5(rogue);\n      });\n    };\n    const remove$5 = element => {\n      const dom = element.dom;\n      if (dom.parentNode !== null) {\n        dom.parentNode.removeChild(dom);\n      }\n    };\n    const unwrap = wrapper => {\n      const children = children$1(wrapper);\n      if (children.length > 0) {\n        after$3(wrapper, children);\n      }\n      remove$5(wrapper);\n    };\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      return children$1(SugarElement.fromDom(div));\n    };\n    const fromDom$1 = nodes => map$3(nodes, SugarElement.fromDom);\n\n    const get$6 = element => element.dom.innerHTML;\n    const set$1 = (element, content) => {\n      const owner = owner$1(element);\n      const docDom = owner.dom;\n      const fragment = SugarElement.fromDom(docDom.createDocumentFragment());\n      const contentElements = fromHtml(content, docDom);\n      append(fragment, contentElements);\n      empty(element);\n      append$1(element, fragment);\n    };\n    const getOuter = element => {\n      const container = SugarElement.fromTag('div');\n      const clone = SugarElement.fromDom(element.dom.cloneNode(true));\n      append$1(container, clone);\n      return get$6(container);\n    };\n\n    const mkEvent = (target, x, y, stop, prevent, kill, raw) => ({\n      target,\n      x,\n      y,\n      stop,\n      prevent,\n      kill,\n      raw\n    });\n    const fromRawEvent = rawEvent => {\n      const target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target));\n      const stop = () => rawEvent.stopPropagation();\n      const prevent = () => rawEvent.preventDefault();\n      const kill = compose(prevent, stop);\n      return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent);\n    };\n    const handle$1 = (filter, handler) => rawEvent => {\n      if (filter(rawEvent)) {\n        handler(fromRawEvent(rawEvent));\n      }\n    };\n    const binder = (element, event, filter, handler, useCapture) => {\n      const wrapped = handle$1(filter, handler);\n      element.dom.addEventListener(event, wrapped, useCapture);\n      return {\n        unbind: curry(unbind, element, event, wrapped, useCapture)\n      };\n    };\n    const bind$2 = (element, event, filter, handler) => binder(element, event, filter, handler, false);\n    const unbind = (element, event, handler, useCapture) => {\n      element.dom.removeEventListener(event, handler, useCapture);\n    };\n\n    const r = (left, top) => {\n      const translate = (x, y) => r(left + x, top + y);\n      return {\n        left,\n        top,\n        translate\n      };\n    };\n    const SugarPosition = r;\n\n    const boxPosition = dom => {\n      const box = dom.getBoundingClientRect();\n      return SugarPosition(box.left, box.top);\n    };\n    const firstDefinedOrZero = (a, b) => {\n      if (a !== undefined) {\n        return a;\n      } else {\n        return b !== undefined ? b : 0;\n      }\n    };\n    const absolute = element => {\n      const doc = element.dom.ownerDocument;\n      const body = doc.body;\n      const win = doc.defaultView;\n      const html = doc.documentElement;\n      if (body === element.dom) {\n        return SugarPosition(body.offsetLeft, body.offsetTop);\n      }\n      const scrollTop = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageYOffset, html.scrollTop);\n      const scrollLeft = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageXOffset, html.scrollLeft);\n      const clientTop = firstDefinedOrZero(html.clientTop, body.clientTop);\n      const clientLeft = firstDefinedOrZero(html.clientLeft, body.clientLeft);\n      return viewport(element).translate(scrollLeft - clientLeft, scrollTop - clientTop);\n    };\n    const viewport = element => {\n      const dom = element.dom;\n      const doc = dom.ownerDocument;\n      const body = doc.body;\n      if (body === dom) {\n        return SugarPosition(body.offsetLeft, body.offsetTop);\n      }\n      if (!inBody(element)) {\n        return SugarPosition(0, 0);\n      }\n      return boxPosition(dom);\n    };\n\n    const get$5 = _DOC => {\n      const doc = _DOC !== undefined ? _DOC.dom : document;\n      const x = doc.body.scrollLeft || doc.documentElement.scrollLeft;\n      const y = doc.body.scrollTop || doc.documentElement.scrollTop;\n      return SugarPosition(x, y);\n    };\n    const to = (x, y, _DOC) => {\n      const doc = _DOC !== undefined ? _DOC.dom : document;\n      const win = doc.defaultView;\n      if (win) {\n        win.scrollTo(x, y);\n      }\n    };\n    const intoView = (element, alignToTop) => {\n      const isSafari = detect$2().browser.isSafari();\n      if (isSafari && isFunction(element.dom.scrollIntoViewIfNeeded)) {\n        element.dom.scrollIntoViewIfNeeded(false);\n      } else {\n        element.dom.scrollIntoView(alignToTop);\n      }\n    };\n\n    const get$4 = _win => {\n      const win = _win === undefined ? window : _win;\n      if (detect$2().browser.isFirefox()) {\n        return Optional.none();\n      } else {\n        return Optional.from(win.visualViewport);\n      }\n    };\n    const bounds = (x, y, width, height) => ({\n      x,\n      y,\n      width,\n      height,\n      right: x + width,\n      bottom: y + height\n    });\n    const getBounds = _win => {\n      const win = _win === undefined ? window : _win;\n      const doc = win.document;\n      const scroll = get$5(SugarElement.fromDom(doc));\n      return get$4(win).fold(() => {\n        const html = win.document.documentElement;\n        const width = html.clientWidth;\n        const height = html.clientHeight;\n        return bounds(scroll.left, scroll.top, width, height);\n      }, visualViewport => bounds(Math.max(visualViewport.pageLeft, scroll.left), Math.max(visualViewport.pageTop, scroll.top), visualViewport.width, visualViewport.height));\n    };\n\n    const children = (scope, predicate) => filter$5(children$1(scope), predicate);\n    const descendants$1 = (scope, predicate) => {\n      let result = [];\n      each$e(children$1(scope), x => {\n        if (predicate(x)) {\n          result = result.concat([x]);\n        }\n        result = result.concat(descendants$1(x, predicate));\n      });\n      return result;\n    };\n\n    const descendants = (scope, selector) => all(selector, scope);\n\n    const ancestor$2 = (scope, selector, isRoot) => ancestor$3(scope, selector, isRoot).isSome();\n\n    class DomTreeWalker {\n      constructor(startNode, rootNode) {\n        this.node = startNode;\n        this.rootNode = rootNode;\n        this.current = this.current.bind(this);\n        this.next = this.next.bind(this);\n        this.prev = this.prev.bind(this);\n        this.prev2 = this.prev2.bind(this);\n      }\n      current() {\n        return this.node;\n      }\n      next(shallow) {\n        this.node = this.findSibling(this.node, 'firstChild', 'nextSibling', shallow);\n        return this.node;\n      }\n      prev(shallow) {\n        this.node = this.findSibling(this.node, 'lastChild', 'previousSibling', shallow);\n        return this.node;\n      }\n      prev2(shallow) {\n        this.node = this.findPreviousNode(this.node, shallow);\n        return this.node;\n      }\n      findSibling(node, startName, siblingName, shallow) {\n        if (node) {\n          if (!shallow && node[startName]) {\n            return node[startName];\n          }\n          if (node !== this.rootNode) {\n            let sibling = node[siblingName];\n            if (sibling) {\n              return sibling;\n            }\n            for (let parent = node.parentNode; parent && parent !== this.rootNode; parent = parent.parentNode) {\n              sibling = parent[siblingName];\n              if (sibling) {\n                return sibling;\n              }\n            }\n          }\n        }\n        return undefined;\n      }\n      findPreviousNode(node, shallow) {\n        if (node) {\n          const sibling = node.previousSibling;\n          if (this.rootNode && sibling === this.rootNode) {\n            return;\n          }\n          if (sibling) {\n            if (!shallow) {\n              for (let child = sibling.lastChild; child; child = child.lastChild) {\n                if (!child.lastChild) {\n                  return child;\n                }\n              }\n            }\n            return sibling;\n          }\n          const parent = node.parentNode;\n          if (parent && parent !== this.rootNode) {\n            return parent;\n          }\n        }\n        return undefined;\n      }\n    }\n\n    const isNodeType = type => {\n      return node => {\n        return !!node && node.nodeType === type;\n      };\n    };\n    const isRestrictedNode = node => !!node && !Object.getPrototypeOf(node);\n    const isElement$6 = isNodeType(1);\n    const isHTMLElement = node => isElement$6(node) && isHTMLElement$1(SugarElement.fromDom(node));\n    const isSVGElement = node => isElement$6(node) && node.namespaceURI === 'http://www.w3.org/2000/svg';\n    const matchNodeName = name => {\n      const lowerCasedName = name.toLowerCase();\n      return node => isNonNullable(node) && node.nodeName.toLowerCase() === lowerCasedName;\n    };\n    const matchNodeNames = names => {\n      const lowerCasedNames = names.map(s => s.toLowerCase());\n      return node => {\n        if (node && node.nodeName) {\n          const nodeName = node.nodeName.toLowerCase();\n          return contains$2(lowerCasedNames, nodeName);\n        }\n        return false;\n      };\n    };\n    const matchStyleValues = (name, values) => {\n      const items = values.toLowerCase().split(' ');\n      return node => {\n        if (isElement$6(node)) {\n          const win = node.ownerDocument.defaultView;\n          if (win) {\n            for (let i = 0; i < items.length; i++) {\n              const computed = win.getComputedStyle(node, null);\n              const cssValue = computed ? computed.getPropertyValue(name) : null;\n              if (cssValue === items[i]) {\n                return true;\n              }\n            }\n          }\n        }\n        return false;\n      };\n    };\n    const hasAttribute = attrName => {\n      return node => {\n        return isElement$6(node) && node.hasAttribute(attrName);\n      };\n    };\n    const hasAttributeValue = (attrName, attrValue) => {\n      return node => {\n        return isElement$6(node) && node.getAttribute(attrName) === attrValue;\n      };\n    };\n    const isBogus$2 = node => isElement$6(node) && node.hasAttribute('data-mce-bogus');\n    const isBogusAll$1 = node => isElement$6(node) && node.getAttribute('data-mce-bogus') === 'all';\n    const isTable$2 = node => isElement$6(node) && node.tagName === 'TABLE';\n    const hasContentEditableState = value => {\n      return node => {\n        if (isHTMLElement(node)) {\n          if (node.contentEditable === value) {\n            return true;\n          }\n          if (node.getAttribute('data-mce-contenteditable') === value) {\n            return true;\n          }\n        }\n        return false;\n      };\n    };\n    const isTextareaOrInput = matchNodeNames(['textarea', 'input']);\n    const isText$a = isNodeType(3);\n    const isCData = isNodeType(4);\n    const isPi = isNodeType(7);\n    const isComment = isNodeType(8);\n    const isDocument$1 = isNodeType(9);\n    const isDocumentFragment = isNodeType(11);\n    const isBr$6 = matchNodeName('br');\n    const isImg = matchNodeName('img');\n    const isContentEditableTrue$3 = hasContentEditableState('true');\n    const isContentEditableFalse$b = hasContentEditableState('false');\n    const isTableCell$3 = matchNodeNames(['td', 'th']);\n    const isTableCellOrCaption = matchNodeNames(['td', 'th', 'caption']);\n    const isMedia$2 = matchNodeNames(['video', 'audio', 'object', 'embed']);\n    const isListItem$2 = matchNodeName('li');\n    const isDetails = matchNodeName('details');\n    const isSummary$1 = matchNodeName('summary');\n\n    const zeroWidth = '\\uFEFF';\n    const nbsp = '\\xA0';\n    const isZwsp$2 = char => char === zeroWidth;\n    const removeZwsp = s => s.replace(/\\uFEFF/g, '');\n\n    const NodeValue = (is, name) => {\n      const get = element => {\n        if (!is(element)) {\n          throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n        }\n        return getOption(element).getOr('');\n      };\n      const getOption = element => is(element) ? Optional.from(element.dom.nodeValue) : Optional.none();\n      const set = (element, value) => {\n        if (!is(element)) {\n          throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n        }\n        element.dom.nodeValue = value;\n      };\n      return {\n        get,\n        getOption,\n        set\n      };\n    };\n\n    const api$1 = NodeValue(isText$b, 'text');\n    const get$3 = element => api$1.get(element);\n    const getOption = element => api$1.getOption(element);\n    const set = (element, value) => api$1.set(element, value);\n\n    const tableCells = ['td', 'th'];\n    const tableSections = ['thead', 'tbody', 'tfoot'];\n    const textBlocks = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'div', 'address', 'pre', 'form', 'blockquote', 'center', 'dir', 'fieldset', 'header', 'footer', 'article', 'section', 'hgroup', 'aside', 'nav', 'figure'];\n    const listItems$1 = ['li', 'dd', 'dt'];\n    const lists = ['ul', 'ol', 'dl'];\n    const wsElements = ['pre', 'script', 'textarea', 'style'];\n    const lazyLookup = items => {\n      let lookup;\n      return node => {\n        lookup = lookup ? lookup : mapToObject(items, always);\n        return has$2(lookup, name(node));\n      };\n    };\n    const isTable$1 = node => name(node) === 'table';\n    const isBr$5 = node => isElement$7(node) && name(node) === 'br';\n    const isTextBlock$2 = lazyLookup(textBlocks);\n    const isList = lazyLookup(lists);\n    const isListItem$1 = lazyLookup(listItems$1);\n    const isTableSection = lazyLookup(tableSections);\n    const isTableCell$2 = lazyLookup(tableCells);\n    const isWsPreserveElement = lazyLookup(wsElements);\n\n    const getLastChildren$1 = elm => {\n      const children = [];\n      let rawNode = elm.dom;\n      while (rawNode) {\n        children.push(SugarElement.fromDom(rawNode));\n        rawNode = rawNode.lastChild;\n      }\n      return children;\n    };\n    const removeTrailingBr = elm => {\n      const allBrs = descendants(elm, 'br');\n      const brs = filter$5(getLastChildren$1(elm).slice(-1), isBr$5);\n      if (allBrs.length === brs.length) {\n        each$e(brs, remove$5);\n      }\n    };\n    const createPaddingBr = () => {\n      const br = SugarElement.fromTag('br');\n      set$3(br, 'data-mce-bogus', '1');\n      return br;\n    };\n    const fillWithPaddingBr = elm => {\n      empty(elm);\n      append$1(elm, createPaddingBr());\n    };\n    const trimBlockTrailingBr = (elm, schema) => {\n      lastChild(elm).each(lastChild => {\n        prevSibling(lastChild).each(lastChildPrevSibling => {\n          if (schema.isBlock(name(elm)) && isBr$5(lastChild) && schema.isBlock(name(lastChildPrevSibling))) {\n            remove$5(lastChild);\n          }\n        });\n      });\n    };\n\n    const ZWSP$1 = zeroWidth;\n    const isZwsp$1 = isZwsp$2;\n    const trim$2 = removeZwsp;\n    const insert$5 = editor => editor.insertContent(ZWSP$1, {\n      preserve_zwsp: true\n    });\n\n    const isElement$5 = isElement$6;\n    const isText$9 = isText$a;\n    const isCaretContainerBlock$1 = node => {\n      if (isText$9(node)) {\n        node = node.parentNode;\n      }\n      return isElement$5(node) && node.hasAttribute('data-mce-caret');\n    };\n    const isCaretContainerInline = node => isText$9(node) && isZwsp$1(node.data);\n    const isCaretContainer$2 = node => isCaretContainerBlock$1(node) || isCaretContainerInline(node);\n    const hasContent = node => node.firstChild !== node.lastChild || !isBr$6(node.firstChild);\n    const insertInline$1 = (node, before) => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      const textNode = doc.createTextNode(ZWSP$1);\n      const parentNode = node.parentNode;\n      if (!before) {\n        const sibling = node.nextSibling;\n        if (isText$9(sibling)) {\n          if (isCaretContainer$2(sibling)) {\n            return sibling;\n          }\n          if (startsWithCaretContainer$1(sibling)) {\n            sibling.splitText(1);\n            return sibling;\n          }\n        }\n        if (node.nextSibling) {\n          parentNode === null || parentNode === void 0 ? void 0 : parentNode.insertBefore(textNode, node.nextSibling);\n        } else {\n          parentNode === null || parentNode === void 0 ? void 0 : parentNode.appendChild(textNode);\n        }\n      } else {\n        const sibling = node.previousSibling;\n        if (isText$9(sibling)) {\n          if (isCaretContainer$2(sibling)) {\n            return sibling;\n          }\n          if (endsWithCaretContainer$1(sibling)) {\n            return sibling.splitText(sibling.data.length - 1);\n          }\n        }\n        parentNode === null || parentNode === void 0 ? void 0 : parentNode.insertBefore(textNode, node);\n      }\n      return textNode;\n    };\n    const isBeforeInline = pos => {\n      const container = pos.container();\n      if (!isText$a(container)) {\n        return false;\n      }\n      return container.data.charAt(pos.offset()) === ZWSP$1 || pos.isAtStart() && isCaretContainerInline(container.previousSibling);\n    };\n    const isAfterInline = pos => {\n      const container = pos.container();\n      if (!isText$a(container)) {\n        return false;\n      }\n      return container.data.charAt(pos.offset() - 1) === ZWSP$1 || pos.isAtEnd() && isCaretContainerInline(container.nextSibling);\n    };\n    const insertBlock = (blockName, node, before) => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      const blockNode = doc.createElement(blockName);\n      blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after');\n      blockNode.setAttribute('data-mce-bogus', 'all');\n      blockNode.appendChild(createPaddingBr().dom);\n      const parentNode = node.parentNode;\n      if (!before) {\n        if (node.nextSibling) {\n          parentNode === null || parentNode === void 0 ? void 0 : parentNode.insertBefore(blockNode, node.nextSibling);\n        } else {\n          parentNode === null || parentNode === void 0 ? void 0 : parentNode.appendChild(blockNode);\n        }\n      } else {\n        parentNode === null || parentNode === void 0 ? void 0 : parentNode.insertBefore(blockNode, node);\n      }\n      return blockNode;\n    };\n    const startsWithCaretContainer$1 = node => isText$9(node) && node.data[0] === ZWSP$1;\n    const endsWithCaretContainer$1 = node => isText$9(node) && node.data[node.data.length - 1] === ZWSP$1;\n    const trimBogusBr = elm => {\n      var _a;\n      const brs = elm.getElementsByTagName('br');\n      const lastBr = brs[brs.length - 1];\n      if (isBogus$2(lastBr)) {\n        (_a = lastBr.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(lastBr);\n      }\n    };\n    const showCaretContainerBlock = caretContainer => {\n      if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) {\n        trimBogusBr(caretContainer);\n        caretContainer.removeAttribute('data-mce-caret');\n        caretContainer.removeAttribute('data-mce-bogus');\n        caretContainer.removeAttribute('style');\n        caretContainer.removeAttribute('data-mce-style');\n        caretContainer.removeAttribute('_moz_abspos');\n        return caretContainer;\n      }\n      return null;\n    };\n    const isRangeInCaretContainerBlock = range => isCaretContainerBlock$1(range.startContainer);\n\n    const isContentEditableTrue$2 = isContentEditableTrue$3;\n    const isContentEditableFalse$a = isContentEditableFalse$b;\n    const isBr$4 = isBr$6;\n    const isText$8 = isText$a;\n    const isInvalidTextElement = matchNodeNames(['script', 'style', 'textarea']);\n    const isAtomicInline = matchNodeNames(['img', 'input', 'textarea', 'hr', 'iframe', 'video', 'audio', 'object', 'embed']);\n    const isTable = matchNodeNames(['table']);\n    const isCaretContainer$1 = isCaretContainer$2;\n    const isCaretCandidate$3 = node => {\n      if (isCaretContainer$1(node)) {\n        return false;\n      }\n      if (isText$8(node)) {\n        return !isInvalidTextElement(node.parentNode);\n      }\n      return isAtomicInline(node) || isBr$4(node) || isTable(node) || isNonUiContentEditableFalse(node);\n    };\n    const isUnselectable = node => isElement$6(node) && node.getAttribute('unselectable') === 'true';\n    const isNonUiContentEditableFalse = node => !isUnselectable(node) && isContentEditableFalse$a(node);\n    const isInEditable = (node, root) => {\n      for (let tempNode = node.parentNode; tempNode && tempNode !== root; tempNode = tempNode.parentNode) {\n        if (isNonUiContentEditableFalse(tempNode)) {\n          return false;\n        }\n        if (isContentEditableTrue$2(tempNode)) {\n          return true;\n        }\n      }\n      return true;\n    };\n    const isAtomicContentEditableFalse = node => {\n      if (!isNonUiContentEditableFalse(node)) {\n        return false;\n      }\n      return !foldl(from(node.getElementsByTagName('*')), (result, elm) => {\n        return result || isContentEditableTrue$2(elm);\n      }, false);\n    };\n    const isAtomic$1 = node => isAtomicInline(node) || isAtomicContentEditableFalse(node);\n    const isEditableCaretCandidate$1 = (node, root) => isCaretCandidate$3(node) && isInEditable(node, root);\n\n    const whiteSpaceRegExp = /^[ \\t\\r\\n]*$/;\n    const isWhitespaceText = text => whiteSpaceRegExp.test(text);\n    const isZwsp = text => {\n      for (const c of text) {\n        if (!isZwsp$2(c)) {\n          return false;\n        }\n      }\n      return true;\n    };\n    const isCollapsibleWhitespace$1 = c => ' \\f\\t\\x0B'.indexOf(c) !== -1;\n    const isNewLineChar = c => c === '\\n' || c === '\\r';\n    const isNewline = (text, idx) => idx < text.length && idx >= 0 ? isNewLineChar(text[idx]) : false;\n    const normalize$4 = (text, tabSpaces = 4, isStartOfContent = true, isEndOfContent = true) => {\n      const tabSpace = repeat(' ', tabSpaces);\n      const normalizedText = text.replace(/\\t/g, tabSpace);\n      const result = foldl(normalizedText, (acc, c) => {\n        if (isCollapsibleWhitespace$1(c) || c === nbsp) {\n          if (acc.pcIsSpace || acc.str === '' && isStartOfContent || acc.str.length === normalizedText.length - 1 && isEndOfContent || isNewline(normalizedText, acc.str.length + 1)) {\n            return {\n              pcIsSpace: false,\n              str: acc.str + nbsp\n            };\n          } else {\n            return {\n              pcIsSpace: true,\n              str: acc.str + ' '\n            };\n          }\n        } else {\n          return {\n            pcIsSpace: isNewLineChar(c),\n            str: acc.str + c\n          };\n        }\n      }, {\n        pcIsSpace: false,\n        str: ''\n      });\n      return result.str;\n    };\n\n    const hasWhitespacePreserveParent = (node, rootNode) => {\n      const rootElement = SugarElement.fromDom(rootNode);\n      const startNode = SugarElement.fromDom(node);\n      return ancestor$2(startNode, 'pre,code', curry(eq, rootElement));\n    };\n    const isWhitespace$1 = (node, rootNode) => {\n      return isText$a(node) && isWhitespaceText(node.data) && !hasWhitespacePreserveParent(node, rootNode);\n    };\n    const isNamedAnchor = node => {\n      return isElement$6(node) && node.nodeName === 'A' && !node.hasAttribute('href') && (node.hasAttribute('name') || node.hasAttribute('id'));\n    };\n    const isContent$1 = (node, rootNode) => {\n      return isCaretCandidate$3(node) && !isWhitespace$1(node, rootNode) || isNamedAnchor(node) || isBookmark(node);\n    };\n    const isBookmark = hasAttribute('data-mce-bookmark');\n    const isBogus$1 = hasAttribute('data-mce-bogus');\n    const isBogusAll = hasAttributeValue('data-mce-bogus', 'all');\n    const hasNonEditableParent = node => parentElement(SugarElement.fromDom(node)).exists(parent => !isEditable$2(parent));\n    const isEmptyNode = (targetNode, skipBogus) => {\n      let brCount = 0;\n      if (isContent$1(targetNode, targetNode)) {\n        return false;\n      } else {\n        let node = targetNode.firstChild;\n        if (!node) {\n          return true;\n        }\n        const walker = new DomTreeWalker(node, targetNode);\n        do {\n          if (skipBogus) {\n            if (isBogusAll(node)) {\n              node = walker.next(true);\n              continue;\n            }\n            if (isBogus$1(node)) {\n              node = walker.next();\n              continue;\n            }\n          }\n          if (isContentEditableTrue$3(node) && hasNonEditableParent(node)) {\n            return false;\n          }\n          if (isBr$6(node)) {\n            brCount++;\n            node = walker.next();\n            continue;\n          }\n          if (isContent$1(node, targetNode)) {\n            return false;\n          }\n          node = walker.next();\n        } while (node);\n        return brCount <= 1;\n      }\n    };\n    const isEmpty$2 = (elm, skipBogus = true) => isEmptyNode(elm.dom, skipBogus);\n\n    const isNonHtmlElementRootName = name => name.toLowerCase() === 'svg';\n    const isNonHtmlElementRoot = node => isNonHtmlElementRootName(node.nodeName);\n    const toScopeType = node => (node === null || node === void 0 ? void 0 : node.nodeName) === 'svg' ? 'svg' : 'html';\n    const namespaceElements = ['svg'];\n    const createNamespaceTracker = () => {\n      let scopes = [];\n      const peek = () => scopes[scopes.length - 1];\n      const track = node => {\n        if (isNonHtmlElementRoot(node)) {\n          scopes.push(node);\n        }\n        let currentScope = peek();\n        if (currentScope && !currentScope.contains(node)) {\n          scopes.pop();\n          currentScope = peek();\n        }\n        return toScopeType(currentScope);\n      };\n      const current = () => toScopeType(peek());\n      const reset = () => {\n        scopes = [];\n      };\n      return {\n        track,\n        current,\n        reset\n      };\n    };\n\n    const transparentBlockAttr = 'data-mce-block';\n    const elementNames = map => filter$5(keys(map), key => !/[A-Z]/.test(key));\n    const makeSelectorFromSchemaMap = map => map$3(elementNames(map), name => {\n      return \"\".concat(name, \":\") + map$3(namespaceElements, ns => \"not(\".concat(ns, \" \").concat(name, \")\")).join(':');\n    }).join(',');\n    const updateTransparent = (blocksSelector, transparent) => {\n      if (isNonNullable(transparent.querySelector(blocksSelector))) {\n        transparent.setAttribute(transparentBlockAttr, 'true');\n        if (transparent.getAttribute('data-mce-selected') === 'inline-boundary') {\n          transparent.removeAttribute('data-mce-selected');\n        }\n        return true;\n      } else {\n        transparent.removeAttribute(transparentBlockAttr);\n        return false;\n      }\n    };\n    const updateBlockStateOnChildren = (schema, scope) => {\n      const transparentSelector = makeSelectorFromSchemaMap(schema.getTransparentElements());\n      const blocksSelector = makeSelectorFromSchemaMap(schema.getBlockElements());\n      return filter$5(scope.querySelectorAll(transparentSelector), transparent => updateTransparent(blocksSelector, transparent));\n    };\n    const trimEdge = (el, leftSide) => {\n      var _a;\n      const childPropertyName = leftSide ? 'lastChild' : 'firstChild';\n      for (let child = el[childPropertyName]; child; child = child[childPropertyName]) {\n        if (isEmpty$2(SugarElement.fromDom(child))) {\n          (_a = child.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(child);\n          return;\n        }\n      }\n    };\n    const split$2 = (parentElm, splitElm) => {\n      const range = document.createRange();\n      const parentNode = parentElm.parentNode;\n      if (parentNode) {\n        range.setStartBefore(parentElm);\n        range.setEndBefore(splitElm);\n        const beforeFragment = range.extractContents();\n        trimEdge(beforeFragment, true);\n        range.setStartAfter(splitElm);\n        range.setEndAfter(parentElm);\n        const afterFragment = range.extractContents();\n        trimEdge(afterFragment, false);\n        if (!isEmpty$2(SugarElement.fromDom(beforeFragment))) {\n          parentNode.insertBefore(beforeFragment, parentElm);\n        }\n        if (!isEmpty$2(SugarElement.fromDom(splitElm))) {\n          parentNode.insertBefore(splitElm, parentElm);\n        }\n        if (!isEmpty$2(SugarElement.fromDom(afterFragment))) {\n          parentNode.insertBefore(afterFragment, parentElm);\n        }\n        parentNode.removeChild(parentElm);\n      }\n    };\n    const splitInvalidChildren = (schema, scope, transparentBlocks) => {\n      const blocksElements = schema.getBlockElements();\n      const rootNode = SugarElement.fromDom(scope);\n      const isBlock = el => name(el) in blocksElements;\n      const isRoot = el => eq(el, rootNode);\n      each$e(fromDom$1(transparentBlocks), transparentBlock => {\n        ancestor$4(transparentBlock, isBlock, isRoot).each(parentBlock => {\n          const invalidChildren = children(transparentBlock, el => isBlock(el) && !schema.isValidChild(name(parentBlock), name(el)));\n          if (invalidChildren.length > 0) {\n            const stateScope = parentElement(parentBlock);\n            each$e(invalidChildren, child => {\n              ancestor$4(child, isBlock, isRoot).each(parentBlock => {\n                split$2(parentBlock.dom, child.dom);\n              });\n            });\n            stateScope.each(scope => updateBlockStateOnChildren(schema, scope.dom));\n          }\n        });\n      });\n    };\n    const unwrapInvalidChildren = (schema, scope, transparentBlocks) => {\n      each$e([...transparentBlocks, ...(isTransparentBlock(schema, scope) ? [scope] : [])], block => each$e(descendants(SugarElement.fromDom(block), block.nodeName.toLowerCase()), elm => {\n        if (isTransparentInline(schema, elm.dom)) {\n          unwrap(elm);\n        }\n      }));\n    };\n    const updateChildren = (schema, scope) => {\n      const transparentBlocks = updateBlockStateOnChildren(schema, scope);\n      splitInvalidChildren(schema, scope, transparentBlocks);\n      unwrapInvalidChildren(schema, scope, transparentBlocks);\n    };\n    const updateElement = (schema, target) => {\n      if (isTransparentElement(schema, target)) {\n        const blocksSelector = makeSelectorFromSchemaMap(schema.getBlockElements());\n        updateTransparent(blocksSelector, target);\n      }\n    };\n    const updateCaret = (schema, root, caretParent) => {\n      const isRoot = el => eq(el, SugarElement.fromDom(root));\n      const parents = parents$1(SugarElement.fromDom(caretParent), isRoot);\n      get$b(parents, parents.length - 2).filter(isElement$7).fold(() => updateChildren(schema, root), scope => updateChildren(schema, scope.dom));\n    };\n    const hasBlockAttr = el => el.hasAttribute(transparentBlockAttr);\n    const isTransparentElementName = (schema, name) => has$2(schema.getTransparentElements(), name);\n    const isTransparentElement = (schema, node) => isElement$6(node) && isTransparentElementName(schema, node.nodeName);\n    const isTransparentBlock = (schema, node) => isTransparentElement(schema, node) && hasBlockAttr(node);\n    const isTransparentInline = (schema, node) => isTransparentElement(schema, node) && !hasBlockAttr(node);\n    const isTransparentAstBlock = (schema, node) => node.type === 1 && isTransparentElementName(schema, node.name) && isString(node.attr(transparentBlockAttr));\n\n    const browser$2 = detect$2().browser;\n    const firstElement = nodes => find$2(nodes, isElement$7);\n    const getTableCaptionDeltaY = elm => {\n      if (browser$2.isFirefox() && name(elm) === 'table') {\n        return firstElement(children$1(elm)).filter(elm => {\n          return name(elm) === 'caption';\n        }).bind(caption => {\n          return firstElement(nextSiblings(caption)).map(body => {\n            const bodyTop = body.dom.offsetTop;\n            const captionTop = caption.dom.offsetTop;\n            const captionHeight = caption.dom.offsetHeight;\n            return bodyTop <= captionTop ? -captionHeight : 0;\n          });\n        }).getOr(0);\n      } else {\n        return 0;\n      }\n    };\n    const hasChild = (elm, child) => elm.children && contains$2(elm.children, child);\n    const getPos = (body, elm, rootElm) => {\n      let x = 0,\n        y = 0;\n      const doc = body.ownerDocument;\n      rootElm = rootElm ? rootElm : body;\n      if (elm) {\n        if (rootElm === body && elm.getBoundingClientRect && get$7(SugarElement.fromDom(body), 'position') === 'static') {\n          const pos = elm.getBoundingClientRect();\n          x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft;\n          y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop;\n          return {\n            x,\n            y\n          };\n        }\n        let offsetParent = elm;\n        while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType && !hasChild(offsetParent, rootElm)) {\n          const castOffsetParent = offsetParent;\n          x += castOffsetParent.offsetLeft || 0;\n          y += castOffsetParent.offsetTop || 0;\n          offsetParent = castOffsetParent.offsetParent;\n        }\n        offsetParent = elm.parentNode;\n        while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType && !hasChild(offsetParent, rootElm)) {\n          x -= offsetParent.scrollLeft || 0;\n          y -= offsetParent.scrollTop || 0;\n          offsetParent = offsetParent.parentNode;\n        }\n        y += getTableCaptionDeltaY(SugarElement.fromDom(elm));\n      }\n      return {\n        x,\n        y\n      };\n    };\n\n    const StyleSheetLoader = (documentOrShadowRoot, settings = {}) => {\n      let idCount = 0;\n      const loadedStates = {};\n      const edos = SugarElement.fromDom(documentOrShadowRoot);\n      const doc = documentOrOwner(edos);\n      const _setReferrerPolicy = referrerPolicy => {\n        settings.referrerPolicy = referrerPolicy;\n      };\n      const _setContentCssCors = contentCssCors => {\n        settings.contentCssCors = contentCssCors;\n      };\n      const addStyle = element => {\n        append$1(getStyleContainer(edos), element);\n      };\n      const removeStyle = id => {\n        const styleContainer = getStyleContainer(edos);\n        descendant$1(styleContainer, '#' + id).each(remove$5);\n      };\n      const getOrCreateState = url => get$a(loadedStates, url).getOrThunk(() => ({\n        id: 'mce-u' + idCount++,\n        passed: [],\n        failed: [],\n        count: 0\n      }));\n      const load = url => new Promise((success, failure) => {\n        let link;\n        const urlWithSuffix = Tools._addCacheSuffix(url);\n        const state = getOrCreateState(urlWithSuffix);\n        loadedStates[urlWithSuffix] = state;\n        state.count++;\n        const resolve = (callbacks, status) => {\n          each$e(callbacks, call);\n          state.status = status;\n          state.passed = [];\n          state.failed = [];\n          if (link) {\n            link.onload = null;\n            link.onerror = null;\n            link = null;\n          }\n        };\n        const passed = () => resolve(state.passed, 2);\n        const failed = () => resolve(state.failed, 3);\n        if (success) {\n          state.passed.push(success);\n        }\n        if (failure) {\n          state.failed.push(failure);\n        }\n        if (state.status === 1) {\n          return;\n        }\n        if (state.status === 2) {\n          passed();\n          return;\n        }\n        if (state.status === 3) {\n          failed();\n          return;\n        }\n        state.status = 1;\n        const linkElem = SugarElement.fromTag('link', doc.dom);\n        setAll$1(linkElem, {\n          rel: 'stylesheet',\n          type: 'text/css',\n          id: state.id\n        });\n        if (settings.contentCssCors) {\n          set$3(linkElem, 'crossOrigin', 'anonymous');\n        }\n        if (settings.referrerPolicy) {\n          set$3(linkElem, 'referrerpolicy', settings.referrerPolicy);\n        }\n        link = linkElem.dom;\n        link.onload = passed;\n        link.onerror = failed;\n        addStyle(linkElem);\n        set$3(linkElem, 'href', urlWithSuffix);\n      });\n      const loadRawCss = (key, css) => {\n        const state = getOrCreateState(key);\n        loadedStates[key] = state;\n        state.count++;\n        const styleElem = SugarElement.fromTag('style', doc.dom);\n        setAll$1(styleElem, {\n          rel: 'stylesheet',\n          type: 'text/css',\n          id: state.id\n        });\n        styleElem.dom.innerHTML = css;\n        addStyle(styleElem);\n      };\n      const loadAll = urls => {\n        const loadedUrls = Promise.allSettled(map$3(urls, url => load(url).then(constant(url))));\n        return loadedUrls.then(results => {\n          const parts = partition$2(results, r => r.status === 'fulfilled');\n          if (parts.fail.length > 0) {\n            return Promise.reject(map$3(parts.fail, result => result.reason));\n          } else {\n            return map$3(parts.pass, result => result.value);\n          }\n        });\n      };\n      const unload = url => {\n        const urlWithSuffix = Tools._addCacheSuffix(url);\n        get$a(loadedStates, urlWithSuffix).each(state => {\n          const count = --state.count;\n          if (count === 0) {\n            delete loadedStates[urlWithSuffix];\n            removeStyle(state.id);\n          }\n        });\n      };\n      const unloadRawCss = key => {\n        get$a(loadedStates, key).each(state => {\n          const count = --state.count;\n          if (count === 0) {\n            delete loadedStates[key];\n            removeStyle(state.id);\n          }\n        });\n      };\n      const unloadAll = urls => {\n        each$e(urls, url => {\n          unload(url);\n        });\n      };\n      return {\n        load,\n        loadRawCss,\n        loadAll,\n        unload,\n        unloadRawCss,\n        unloadAll,\n        _setReferrerPolicy,\n        _setContentCssCors\n      };\n    };\n\n    const create$d = () => {\n      const map = new WeakMap();\n      const forElement = (referenceElement, settings) => {\n        const root = getRootNode(referenceElement);\n        const rootDom = root.dom;\n        return Optional.from(map.get(rootDom)).getOrThunk(() => {\n          const sl = StyleSheetLoader(rootDom, settings);\n          map.set(rootDom, sl);\n          return sl;\n        });\n      };\n      return {\n        forElement\n      };\n    };\n    const instance = create$d();\n\n    const isSpan = node => node.nodeName.toLowerCase() === 'span';\n    const isInlineContent = (node, root, schema) => isNonNullable(node) && (isContent$1(node, root) || schema.isInline(node.nodeName.toLowerCase()));\n    const surroundedByInlineContent = (node, root, schema) => {\n      const prev = new DomTreeWalker(node, root).prev(false);\n      const next = new DomTreeWalker(node, root).next(false);\n      const prevIsInline = isUndefined(prev) || isInlineContent(prev, root, schema);\n      const nextIsInline = isUndefined(next) || isInlineContent(next, root, schema);\n      return prevIsInline && nextIsInline;\n    };\n    const isBookmarkNode$2 = node => isSpan(node) && node.getAttribute('data-mce-type') === 'bookmark';\n    const isKeepTextNode = (node, root, schema) => isText$a(node) && node.data.length > 0 && surroundedByInlineContent(node, root, schema);\n    const isKeepElement = node => isElement$6(node) ? node.childNodes.length > 0 : false;\n    const isDocument = node => isDocumentFragment(node) || isDocument$1(node);\n    const trimNode = (dom, node, schema, root) => {\n      var _a;\n      const rootNode = root || node;\n      if (isElement$6(node) && isBookmarkNode$2(node)) {\n        return node;\n      }\n      const children = node.childNodes;\n      for (let i = children.length - 1; i >= 0; i--) {\n        trimNode(dom, children[i], schema, rootNode);\n      }\n      if (isElement$6(node)) {\n        const currentChildren = node.childNodes;\n        if (currentChildren.length === 1 && isBookmarkNode$2(currentChildren[0])) {\n          (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(currentChildren[0], node);\n        }\n      }\n      if (!isDocument(node) && !isContent$1(node, rootNode) && !isKeepElement(node) && !isKeepTextNode(node, rootNode, schema)) {\n        dom.remove(node);\n      }\n      return node;\n    };\n\n    const makeMap$3 = Tools.makeMap;\n    const attrsCharsRegExp = /[&<>\\\"\\u0060\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n    const textCharsRegExp = /[<>&\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n    const rawCharsRegExp = /[<>&\\\"\\']/g;\n    const entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi;\n    const asciiMap = {\n      128: '\\u20AC',\n      130: '\\u201A',\n      131: '\\u0192',\n      132: '\\u201E',\n      133: '\\u2026',\n      134: '\\u2020',\n      135: '\\u2021',\n      136: '\\u02c6',\n      137: '\\u2030',\n      138: '\\u0160',\n      139: '\\u2039',\n      140: '\\u0152',\n      142: '\\u017d',\n      145: '\\u2018',\n      146: '\\u2019',\n      147: '\\u201C',\n      148: '\\u201D',\n      149: '\\u2022',\n      150: '\\u2013',\n      151: '\\u2014',\n      152: '\\u02DC',\n      153: '\\u2122',\n      154: '\\u0161',\n      155: '\\u203A',\n      156: '\\u0153',\n      158: '\\u017e',\n      159: '\\u0178'\n    };\n    const baseEntities = {\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '&': '&amp;',\n      '`': '&#96;'\n    };\n    const reverseEntities = {\n      '&lt;': '<',\n      '&gt;': '>',\n      '&amp;': '&',\n      '&quot;': '\"',\n      '&apos;': \"'\"\n    };\n    const nativeDecode = text => {\n      const elm = SugarElement.fromTag('div').dom;\n      elm.innerHTML = text;\n      return elm.textContent || elm.innerText || text;\n    };\n    const buildEntitiesLookup = (items, radix) => {\n      const lookup = {};\n      if (items) {\n        const itemList = items.split(',');\n        radix = radix || 10;\n        for (let i = 0; i < itemList.length; i += 2) {\n          const chr = String.fromCharCode(parseInt(itemList[i], radix));\n          if (!baseEntities[chr]) {\n            const entity = '&' + itemList[i + 1] + ';';\n            lookup[chr] = entity;\n            lookup[entity] = chr;\n          }\n        }\n        return lookup;\n      } else {\n        return undefined;\n      }\n    };\n    const namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);\n    const encodeRaw = (text, attr) => text.replace(attr ? attrsCharsRegExp : textCharsRegExp, chr => {\n      return baseEntities[chr] || chr;\n    });\n    const encodeAllRaw = text => ('' + text).replace(rawCharsRegExp, chr => {\n      return baseEntities[chr] || chr;\n    });\n    const encodeNumeric = (text, attr) => text.replace(attr ? attrsCharsRegExp : textCharsRegExp, chr => {\n      if (chr.length > 1) {\n        return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n      }\n      return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';\n    });\n    const encodeNamed = (text, attr, entities) => {\n      const resolveEntities = entities || namedEntities;\n      return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, chr => {\n        return baseEntities[chr] || resolveEntities[chr] || chr;\n      });\n    };\n    const getEncodeFunc = (name, entities) => {\n      const entitiesMap = buildEntitiesLookup(entities) || namedEntities;\n      const encodeNamedAndNumeric = (text, attr) => text.replace(attr ? attrsCharsRegExp : textCharsRegExp, chr => {\n        if (baseEntities[chr] !== undefined) {\n          return baseEntities[chr];\n        }\n        if (entitiesMap[chr] !== undefined) {\n          return entitiesMap[chr];\n        }\n        if (chr.length > 1) {\n          return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n        }\n        return '&#' + chr.charCodeAt(0) + ';';\n      });\n      const encodeCustomNamed = (text, attr) => {\n        return encodeNamed(text, attr, entitiesMap);\n      };\n      const nameMap = makeMap$3(name.replace(/\\+/g, ','));\n      if (nameMap.named && nameMap.numeric) {\n        return encodeNamedAndNumeric;\n      }\n      if (nameMap.named) {\n        if (entities) {\n          return encodeCustomNamed;\n        }\n        return encodeNamed;\n      }\n      if (nameMap.numeric) {\n        return encodeNumeric;\n      }\n      return encodeRaw;\n    };\n    const decode = text => text.replace(entityRegExp, (all, numeric) => {\n      if (numeric) {\n        if (numeric.charAt(0).toLowerCase() === 'x') {\n          numeric = parseInt(numeric.substr(1), 16);\n        } else {\n          numeric = parseInt(numeric, 10);\n        }\n        if (numeric > 65535) {\n          numeric -= 65536;\n          return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023));\n        }\n        return asciiMap[numeric] || String.fromCharCode(numeric);\n      }\n      return reverseEntities[all] || namedEntities[all] || nativeDecode(all);\n    });\n    const Entities = {\n      encodeRaw,\n      encodeAllRaw,\n      encodeNumeric,\n      encodeNamed,\n      getEncodeFunc,\n      decode\n    };\n\n    const split$1 = (items, delim) => {\n      items = Tools.trim(items);\n      return items ? items.split(delim || ' ') : [];\n    };\n    const patternToRegExp = str => new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');\n\n    const parseCustomElementsRules = value => {\n      const customElementRegExp = /^(~)?(.+)$/;\n      return bind$3(split$1(value, ','), rule => {\n        const matches = customElementRegExp.exec(rule);\n        if (matches) {\n          const inline = matches[1] === '~';\n          const cloneName = inline ? 'span' : 'div';\n          const name = matches[2];\n          return [{\n            inline,\n            cloneName,\n            name\n          }];\n        } else {\n          return [];\n        }\n      });\n    };\n\n    const getElementSetsAsStrings = type => {\n      let globalAttributes, blockContent;\n      let phrasingContent;\n      globalAttributes = 'id accesskey class dir lang style tabindex title role';\n      blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul';\n      phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment';\n      if (type !== 'html4') {\n        const transparentContent = 'a ins del canvas map';\n        globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate';\n        blockContent += ' article aside details dialog figure main header footer hgroup section nav ' + transparentContent;\n        phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen svg';\n      }\n      if (type !== 'html5-strict') {\n        globalAttributes += ' xml:lang';\n        const html4PhrasingContent = 'acronym applet basefont big font strike tt';\n        phrasingContent = [phrasingContent, html4PhrasingContent].join(' ');\n        const html4BlockContent = 'center dir isindex noframes';\n        blockContent = [blockContent, html4BlockContent].join(' ');\n      }\n      const flowContent = [blockContent, phrasingContent].join(' ');\n      return {\n        globalAttributes,\n        blockContent,\n        phrasingContent,\n        flowContent\n      };\n    };\n\n    const makeSchema = type => {\n      const {\n        globalAttributes,\n        phrasingContent,\n        flowContent\n      } = getElementSetsAsStrings(type);\n      const schema = {};\n      const addElement = (name, attributes, children) => {\n        schema[name] = {\n          attributes: mapToObject(attributes, constant({})),\n          attributesOrder: attributes,\n          children: mapToObject(children, constant({}))\n        };\n      };\n      const add = (name, attributes = '', children = '') => {\n        const childNames = split$1(children);\n        const names = split$1(name);\n        let ni = names.length;\n        const allAttributes = split$1([globalAttributes, attributes].join(' '));\n        while (ni--) {\n          addElement(names[ni], allAttributes.slice(), childNames);\n        }\n      };\n      const addAttrs = (name, attributes) => {\n        const names = split$1(name);\n        const attrs = split$1(attributes);\n        let ni = names.length;\n        while (ni--) {\n          const schemaItem = schema[names[ni]];\n          for (let i = 0, l = attrs.length; i < l; i++) {\n            schemaItem.attributes[attrs[i]] = {};\n            schemaItem.attributesOrder.push(attrs[i]);\n          }\n        }\n      };\n      if (type !== 'html5-strict') {\n        const html4PhrasingContent = 'acronym applet basefont big font strike tt';\n        each$e(split$1(html4PhrasingContent), name => {\n          add(name, '', phrasingContent);\n        });\n        const html4BlockContent = 'center dir isindex noframes';\n        each$e(split$1(html4BlockContent), name => {\n          add(name, '', flowContent);\n        });\n      }\n      add('html', 'manifest', 'head body');\n      add('head', '', 'base command link meta noscript script style title');\n      add('title hr noscript br');\n      add('base', 'href target');\n      add('link', 'href rel media hreflang type sizes hreflang');\n      add('meta', 'name http-equiv content charset');\n      add('style', 'media type scoped');\n      add('script', 'src async defer type charset');\n      add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent);\n      add('dd div', '', flowContent);\n      add('address dt caption', '', type === 'html4' ? phrasingContent : flowContent);\n      add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent);\n      add('blockquote', 'cite', flowContent);\n      add('ol', 'reversed start type', 'li');\n      add('ul', '', 'li');\n      add('li', 'value', flowContent);\n      add('dl', '', 'dt dd');\n      add('a', 'href target rel media hreflang type', type === 'html4' ? phrasingContent : flowContent);\n      add('q', 'cite', phrasingContent);\n      add('ins del', 'cite datetime', flowContent);\n      add('img', 'src sizes srcset alt usemap ismap width height');\n      add('iframe', 'src name width height', flowContent);\n      add('embed', 'src type width height');\n      add('object', 'data type typemustmatch name usemap form width height', [flowContent, 'param'].join(' '));\n      add('param', 'name value');\n      add('map', 'name', [flowContent, 'area'].join(' '));\n      add('area', 'alt coords shape href target rel media hreflang type');\n      add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : ''));\n      add('colgroup', 'span', 'col');\n      add('col', 'span');\n      add('tbody thead tfoot', '', 'tr');\n      add('tr', '', 'td th');\n      add('td', 'colspan rowspan headers', flowContent);\n      add('th', 'colspan rowspan headers scope abbr', flowContent);\n      add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent);\n      add('fieldset', 'disabled form name', [flowContent, 'legend'].join(' '));\n      add('label', 'form for', phrasingContent);\n      add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width');\n      add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent);\n      add('select', 'disabled form multiple name required size', 'option optgroup');\n      add('optgroup', 'disabled label', 'option');\n      add('option', 'disabled label selected value');\n      add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap');\n      add('menu', 'type label', [flowContent, 'li'].join(' '));\n      add('noscript', '', flowContent);\n      if (type !== 'html4') {\n        add('wbr');\n        add('ruby', '', [phrasingContent, 'rt rp'].join(' '));\n        add('figcaption', '', flowContent);\n        add('mark rt rp bdi', '', phrasingContent);\n        add('summary', '', [phrasingContent, 'h1 h2 h3 h4 h5 h6'].join(' '));\n        add('canvas', 'width height', flowContent);\n        add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [flowContent, 'track source'].join(' '));\n        add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [flowContent, 'track source'].join(' '));\n        add('picture', '', 'img source');\n        add('source', 'src srcset type media sizes');\n        add('track', 'kind src srclang label default');\n        add('datalist', '', [phrasingContent, 'option'].join(' '));\n        add('article section nav aside main header footer', '', flowContent);\n        add('hgroup', '', 'h1 h2 h3 h4 h5 h6');\n        add('figure', '', [flowContent, 'figcaption'].join(' '));\n        add('time', 'datetime', phrasingContent);\n        add('dialog', 'open', flowContent);\n        add('command', 'type label icon disabled checked radiogroup command');\n        add('output', 'for form name', phrasingContent);\n        add('progress', 'value max', phrasingContent);\n        add('meter', 'value min max low high optimum', phrasingContent);\n        add('details', 'open', [flowContent, 'summary'].join(' '));\n        add('keygen', 'autofocus challenge disabled form keytype name');\n        addElement('svg', 'id tabindex lang xml:space class style x y width height viewBox preserveAspectRatio zoomAndPan transform'.split(' '), []);\n      }\n      if (type !== 'html5-strict') {\n        addAttrs('script', 'language xml:space');\n        addAttrs('style', 'xml:space');\n        addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace');\n        addAttrs('embed', 'align name hspace vspace');\n        addAttrs('param', 'valuetype type');\n        addAttrs('a', 'charset name rev shape coords');\n        addAttrs('br', 'clear');\n        addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace');\n        addAttrs('img', 'name longdesc align border hspace vspace');\n        addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align');\n        addAttrs('font basefont', 'size color face');\n        addAttrs('input', 'usemap align');\n        addAttrs('select');\n        addAttrs('textarea');\n        addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align');\n        addAttrs('ul', 'type compact');\n        addAttrs('li', 'type');\n        addAttrs('ol dl menu dir', 'compact');\n        addAttrs('pre', 'width xml:space');\n        addAttrs('hr', 'align noshade size width');\n        addAttrs('isindex', 'prompt');\n        addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor');\n        addAttrs('col', 'width align char charoff valign');\n        addAttrs('colgroup', 'width align char charoff valign');\n        addAttrs('thead', 'align char charoff valign');\n        addAttrs('tr', 'align char charoff valign bgcolor');\n        addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height');\n        addAttrs('form', 'accept');\n        addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height');\n        addAttrs('tfoot', 'align char charoff valign');\n        addAttrs('tbody', 'align char charoff valign');\n        addAttrs('area', 'nohref');\n        addAttrs('body', 'background bgcolor text link vlink alink');\n      }\n      if (type !== 'html4') {\n        addAttrs('input button select textarea', 'autofocus');\n        addAttrs('input textarea', 'placeholder');\n        addAttrs('a', 'download');\n        addAttrs('link script img', 'crossorigin');\n        addAttrs('img', 'loading');\n        addAttrs('iframe', 'sandbox seamless allow allowfullscreen loading');\n      }\n      if (type !== 'html4') {\n        each$e([schema.video, schema.audio], item => {\n          delete item.children.audio;\n          delete item.children.video;\n        });\n      }\n      each$e(split$1('a form meter progress dfn'), name => {\n        if (schema[name]) {\n          delete schema[name].children[name];\n        }\n      });\n      delete schema.caption.children.table;\n      delete schema.script;\n      return schema;\n    };\n\n    const prefixToOperation = prefix => prefix === '-' ? 'remove' : 'add';\n    const parseValidChildrenRules = value => {\n      const childRuleRegExp = /^([+\\-]?)([A-Za-z0-9_\\-.\\u00b7\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u037d\\u037f-\\u1fff\\u200c-\\u200d\\u203f-\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]+)\\[([^\\]]+)]$/;\n      return bind$3(split$1(value, ','), rule => {\n        const matches = childRuleRegExp.exec(rule);\n        if (matches) {\n          const prefix = matches[1];\n          const operation = prefix ? prefixToOperation(prefix) : 'replace';\n          const name = matches[2];\n          const validChildren = split$1(matches[3], '|');\n          return [{\n            operation,\n            name,\n            validChildren\n          }];\n        } else {\n          return [];\n        }\n      });\n    };\n\n    const parseValidElementsAttrDataIntoElement = (attrData, targetElement) => {\n      const attrRuleRegExp = /^([!\\-])?(\\w+[\\\\:]:\\w+|[^=~<]+)?(?:([=~<])(.*))?$/;\n      const hasPatternsRegExp = /[*?+]/;\n      const {\n        attributes,\n        attributesOrder\n      } = targetElement;\n      return each$e(split$1(attrData, '|'), rule => {\n        const matches = attrRuleRegExp.exec(rule);\n        if (matches) {\n          const attr = {};\n          const attrType = matches[1];\n          const attrName = matches[2].replace(/[\\\\:]:/g, ':');\n          const attrPrefix = matches[3];\n          const value = matches[4];\n          if (attrType === '!') {\n            targetElement.attributesRequired = targetElement.attributesRequired || [];\n            targetElement.attributesRequired.push(attrName);\n            attr.required = true;\n          }\n          if (attrType === '-') {\n            delete attributes[attrName];\n            attributesOrder.splice(Tools.inArray(attributesOrder, attrName), 1);\n            return;\n          }\n          if (attrPrefix) {\n            if (attrPrefix === '=') {\n              targetElement.attributesDefault = targetElement.attributesDefault || [];\n              targetElement.attributesDefault.push({\n                name: attrName,\n                value\n              });\n              attr.defaultValue = value;\n            } else if (attrPrefix === '~') {\n              targetElement.attributesForced = targetElement.attributesForced || [];\n              targetElement.attributesForced.push({\n                name: attrName,\n                value\n              });\n              attr.forcedValue = value;\n            } else if (attrPrefix === '<') {\n              attr.validValues = Tools.makeMap(value, '?');\n            }\n          }\n          if (hasPatternsRegExp.test(attrName)) {\n            const attrPattern = attr;\n            targetElement.attributePatterns = targetElement.attributePatterns || [];\n            attrPattern.pattern = patternToRegExp(attrName);\n            targetElement.attributePatterns.push(attrPattern);\n          } else {\n            if (!attributes[attrName]) {\n              attributesOrder.push(attrName);\n            }\n            attributes[attrName] = attr;\n          }\n        }\n      });\n    };\n    const cloneAttributesInto = (from, to) => {\n      each$d(from.attributes, (value, key) => {\n        to.attributes[key] = value;\n      });\n      to.attributesOrder.push(...from.attributesOrder);\n    };\n    const parseValidElementsRules = (globalElement, validElements) => {\n      const elementRuleRegExp = /^([#+\\-])?([^\\[!\\/]+)(?:\\/([^\\[!]+))?(?:(!?)\\[([^\\]]+)])?$/;\n      return bind$3(split$1(validElements, ','), rule => {\n        const matches = elementRuleRegExp.exec(rule);\n        if (matches) {\n          const prefix = matches[1];\n          const elementName = matches[2];\n          const outputName = matches[3];\n          const attrsPrefix = matches[4];\n          const attrData = matches[5];\n          const element = {\n            attributes: {},\n            attributesOrder: []\n          };\n          globalElement.each(el => cloneAttributesInto(el, element));\n          if (prefix === '#') {\n            element.paddEmpty = true;\n          } else if (prefix === '-') {\n            element.removeEmpty = true;\n          }\n          if (attrsPrefix === '!') {\n            element.removeEmptyAttrs = true;\n          }\n          if (attrData) {\n            parseValidElementsAttrDataIntoElement(attrData, element);\n          }\n          if (outputName) {\n            element.outputName = elementName;\n          }\n          if (elementName === '@') {\n            if (globalElement.isNone()) {\n              globalElement = Optional.some(element);\n            } else {\n              return [];\n            }\n          }\n          return [outputName ? {\n            name: elementName,\n            element,\n            aliasName: outputName\n          } : {\n            name: elementName,\n            element\n          }];\n        } else {\n          return [];\n        }\n      });\n    };\n\n    const mapCache = {};\n    const makeMap$2 = Tools.makeMap,\n      each$b = Tools.each,\n      extend$2 = Tools.extend,\n      explode$2 = Tools.explode;\n    const createMap = (defaultValue, extendWith = {}) => {\n      const value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' '));\n      return extend$2(value, extendWith);\n    };\n    const getTextRootBlockElements = schema => createMap('td th li dt dd figcaption caption details summary', schema.getTextBlockElements());\n    const compileElementMap = (value, mode) => {\n      if (value) {\n        const styles = {};\n        if (isString(value)) {\n          value = {\n            '*': value\n          };\n        }\n        each$b(value, (value, key) => {\n          styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$2(value, /[, ]/);\n        });\n        return styles;\n      } else {\n        return undefined;\n      }\n    };\n    const Schema = (settings = {}) => {\n      var _a;\n      const elements = {};\n      const children = {};\n      let patternElements = [];\n      const customElementsMap = {};\n      const specialElements = {};\n      const createLookupTable = (option, defaultValue, extendWith) => {\n        const value = settings[option];\n        if (!value) {\n          let newValue = mapCache[option];\n          if (!newValue) {\n            newValue = createMap(defaultValue, extendWith);\n            mapCache[option] = newValue;\n          }\n          return newValue;\n        } else {\n          return makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/));\n        }\n      };\n      const schemaType = (_a = settings.schema) !== null && _a !== void 0 ? _a : 'html5';\n      const schemaItems = makeSchema(schemaType);\n      if (settings.verify_html === false) {\n        settings.valid_elements = '*[*]';\n      }\n      const validStyles = compileElementMap(settings.valid_styles);\n      const invalidStyles = compileElementMap(settings.invalid_styles, 'map');\n      const validClasses = compileElementMap(settings.valid_classes, 'map');\n      const whitespaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code');\n      const selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');\n      const voidElementsMap = createLookupTable('void_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track');\n      const boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls allowfullscreen');\n      const nonEmptyOrMoveCaretBeforeOnEnter = 'td th iframe video audio object script code';\n      const nonEmptyElementsMap = createLookupTable('non_empty_elements', nonEmptyOrMoveCaretBeforeOnEnter + ' pre svg', voidElementsMap);\n      const moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', nonEmptyOrMoveCaretBeforeOnEnter + ' table', voidElementsMap);\n      const headings = 'h1 h2 h3 h4 h5 h6';\n      const textBlockElementsMap = createLookupTable('text_block_elements', headings + ' p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside main nav figure');\n      const blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption details summary html body multicol listing', textBlockElementsMap);\n      const textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font s strike u var cite ' + 'dfn code mark q sup sub samp');\n      const transparentElementsMap = createLookupTable('transparent_elements', 'a ins del canvas map');\n      const wrapBlockElementsMap = createLookupTable('wrap_block_elements', 'pre ' + headings);\n      each$b('script noscript iframe noframes noembed title style textarea xmp plaintext'.split(' '), name => {\n        specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi');\n      });\n      const addValidElements = validElements => {\n        const globalElement = Optional.from(elements['@']);\n        const hasPatternsRegExp = /[*?+]/;\n        each$e(parseValidElementsRules(globalElement, validElements !== null && validElements !== void 0 ? validElements : ''), ({\n          name,\n          element,\n          aliasName\n        }) => {\n          if (aliasName) {\n            elements[aliasName] = element;\n          }\n          if (hasPatternsRegExp.test(name)) {\n            const patternElement = element;\n            patternElement.pattern = patternToRegExp(name);\n            patternElements.push(patternElement);\n          } else {\n            elements[name] = element;\n          }\n        });\n      };\n      const setValidElements = validElements => {\n        patternElements = [];\n        each$e(keys(elements), name => {\n          delete elements[name];\n        });\n        addValidElements(validElements);\n      };\n      const addCustomElements = customElements => {\n        delete mapCache.text_block_elements;\n        delete mapCache.block_elements;\n        each$e(parseCustomElementsRules(customElements !== null && customElements !== void 0 ? customElements : ''), ({\n          inline,\n          name,\n          cloneName\n        }) => {\n          children[name] = children[cloneName];\n          customElementsMap[name] = cloneName;\n          nonEmptyElementsMap[name.toUpperCase()] = {};\n          nonEmptyElementsMap[name] = {};\n          if (!inline) {\n            blockElementsMap[name.toUpperCase()] = {};\n            blockElementsMap[name] = {};\n          }\n          if (!elements[name]) {\n            let customRule = elements[cloneName];\n            customRule = extend$2({}, customRule);\n            delete customRule.removeEmptyAttrs;\n            delete customRule.removeEmpty;\n            elements[name] = customRule;\n          }\n          each$d(children, (element, elmName) => {\n            if (element[cloneName]) {\n              children[elmName] = element = extend$2({}, children[elmName]);\n              element[name] = element[cloneName];\n            }\n          });\n        });\n      };\n      const addValidChildren = validChildren => {\n        each$e(parseValidChildrenRules(validChildren !== null && validChildren !== void 0 ? validChildren : ''), ({\n          operation,\n          name,\n          validChildren\n        }) => {\n          const parent = operation === 'replace' ? {\n            '#comment': {}\n          } : children[name];\n          each$e(validChildren, child => {\n            if (operation === 'remove') {\n              delete parent[child];\n            } else {\n              parent[child] = {};\n            }\n          });\n          children[name] = parent;\n        });\n      };\n      const getElementRule = name => {\n        const element = elements[name];\n        if (element) {\n          return element;\n        }\n        let i = patternElements.length;\n        while (i--) {\n          const patternElement = patternElements[i];\n          if (patternElement.pattern.test(name)) {\n            return patternElement;\n          }\n        }\n        return undefined;\n      };\n      if (!settings.valid_elements) {\n        each$b(schemaItems, (element, name) => {\n          elements[name] = {\n            attributes: element.attributes,\n            attributesOrder: element.attributesOrder\n          };\n          children[name] = element.children;\n        });\n        each$b(split$1('strong/b em/i'), item => {\n          const items = split$1(item, '/');\n          elements[items[1]].outputName = items[0];\n        });\n        each$b(textInlineElementsMap, (_val, name) => {\n          if (elements[name]) {\n            if (settings.padd_empty_block_inline_children) {\n              elements[name].paddInEmptyBlock = true;\n            }\n            elements[name].removeEmpty = true;\n          }\n        });\n        each$b(split$1('ol ul blockquote a table tbody'), name => {\n          if (elements[name]) {\n            elements[name].removeEmpty = true;\n          }\n        });\n        each$b(split$1('p h1 h2 h3 h4 h5 h6 th td pre div address caption li summary'), name => {\n          if (elements[name]) {\n            elements[name].paddEmpty = true;\n          }\n        });\n        each$b(split$1('span'), name => {\n          elements[name].removeEmptyAttrs = true;\n        });\n      } else {\n        setValidElements(settings.valid_elements);\n        each$b(schemaItems, (element, name) => {\n          children[name] = element.children;\n        });\n      }\n      delete elements.svg;\n      addCustomElements(settings.custom_elements);\n      addValidChildren(settings.valid_children);\n      addValidElements(settings.extended_valid_elements);\n      addValidChildren('+ol[ul|ol],+ul[ul|ol]');\n      each$b({\n        dd: 'dl',\n        dt: 'dl',\n        li: 'ul ol',\n        td: 'tr',\n        th: 'tr',\n        tr: 'tbody thead tfoot',\n        tbody: 'table',\n        thead: 'table',\n        tfoot: 'table',\n        legend: 'fieldset',\n        area: 'map',\n        param: 'video audio object'\n      }, (parents, item) => {\n        if (elements[item]) {\n          elements[item].parentsRequired = split$1(parents);\n        }\n      });\n      if (settings.invalid_elements) {\n        each$b(explode$2(settings.invalid_elements), item => {\n          if (elements[item]) {\n            delete elements[item];\n          }\n        });\n      }\n      if (!getElementRule('span')) {\n        addValidElements('span[!data-mce-type|*]');\n      }\n      const getValidStyles = constant(validStyles);\n      const getInvalidStyles = constant(invalidStyles);\n      const getValidClasses = constant(validClasses);\n      const getBoolAttrs = constant(boolAttrMap);\n      const getBlockElements = constant(blockElementsMap);\n      const getTextBlockElements = constant(textBlockElementsMap);\n      const getTextInlineElements = constant(textInlineElementsMap);\n      const getVoidElements = constant(Object.seal(voidElementsMap));\n      const getSelfClosingElements = constant(selfClosingElementsMap);\n      const getNonEmptyElements = constant(nonEmptyElementsMap);\n      const getMoveCaretBeforeOnEnterElements = constant(moveCaretBeforeOnEnterElementsMap);\n      const getWhitespaceElements = constant(whitespaceElementsMap);\n      const getTransparentElements = constant(transparentElementsMap);\n      const getWrapBlockElements = constant(wrapBlockElementsMap);\n      const getSpecialElements = constant(Object.seal(specialElements));\n      const isValidChild = (name, child) => {\n        const parent = children[name.toLowerCase()];\n        return !!(parent && parent[child.toLowerCase()]);\n      };\n      const isValid = (name, attr) => {\n        const rule = getElementRule(name);\n        if (rule) {\n          if (attr) {\n            if (rule.attributes[attr]) {\n              return true;\n            }\n            const attrPatterns = rule.attributePatterns;\n            if (attrPatterns) {\n              let i = attrPatterns.length;\n              while (i--) {\n                if (attrPatterns[i].pattern.test(attr)) {\n                  return true;\n                }\n              }\n            }\n          } else {\n            return true;\n          }\n        }\n        return false;\n      };\n      const isBlock = name => has$2(getBlockElements(), name);\n      const isInline = name => !startsWith(name, '#') && isValid(name) && !isBlock(name);\n      const isWrapper = name => has$2(getWrapBlockElements(), name) || isInline(name);\n      const getCustomElements = constant(customElementsMap);\n      return {\n        type: schemaType,\n        children,\n        elements,\n        getValidStyles,\n        getValidClasses,\n        getBlockElements,\n        getInvalidStyles,\n        getVoidElements,\n        getTextBlockElements,\n        getTextInlineElements,\n        getBoolAttrs,\n        getElementRule,\n        getSelfClosingElements,\n        getNonEmptyElements,\n        getMoveCaretBeforeOnEnterElements,\n        getWhitespaceElements,\n        getTransparentElements,\n        getSpecialElements,\n        isValidChild,\n        isValid,\n        isBlock,\n        isInline,\n        isWrapper,\n        getCustomElements,\n        addValidElements,\n        setValidElements,\n        addCustomElements,\n        addValidChildren\n      };\n    };\n\n    const hexColour = value => ({\n      value: normalizeHex(value)\n    });\n    const normalizeHex = hex => removeLeading(hex, '#').toUpperCase();\n    const toHex = component => {\n      const hex = component.toString(16);\n      return (hex.length === 1 ? '0' + hex : hex).toUpperCase();\n    };\n    const fromRgba = rgbaColour => {\n      const value = toHex(rgbaColour.red) + toHex(rgbaColour.green) + toHex(rgbaColour.blue);\n      return hexColour(value);\n    };\n\n    const rgbRegex = /^\\s*rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)\\s*$/i;\n    const rgbaRegex = /^\\s*rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?(?:\\.\\d+)?)\\s*\\)\\s*$/i;\n    const rgbaColour = (red, green, blue, alpha) => ({\n      red,\n      green,\n      blue,\n      alpha\n    });\n    const fromStringValues = (red, green, blue, alpha) => {\n      const r = parseInt(red, 10);\n      const g = parseInt(green, 10);\n      const b = parseInt(blue, 10);\n      const a = parseFloat(alpha);\n      return rgbaColour(r, g, b, a);\n    };\n    const fromString = rgbaString => {\n      if (rgbaString === 'transparent') {\n        return Optional.some(rgbaColour(0, 0, 0, 0));\n      }\n      const rgbMatch = rgbRegex.exec(rgbaString);\n      if (rgbMatch !== null) {\n        return Optional.some(fromStringValues(rgbMatch[1], rgbMatch[2], rgbMatch[3], '1'));\n      }\n      const rgbaMatch = rgbaRegex.exec(rgbaString);\n      if (rgbaMatch !== null) {\n        return Optional.some(fromStringValues(rgbaMatch[1], rgbaMatch[2], rgbaMatch[3], rgbaMatch[4]));\n      }\n      return Optional.none();\n    };\n    const toString = rgba => \"rgba(\".concat(rgba.red, \",\").concat(rgba.green, \",\").concat(rgba.blue, \",\").concat(rgba.alpha, \")\");\n\n    const rgbaToHexString = color => fromString(color).map(fromRgba).map(h => '#' + h.value).getOr(color);\n\n    const Styles = (settings = {}, schema) => {\n      const urlOrStrRegExp = /(?:url(?:(?:\\(\\s*\\\"([^\\\"]+)\\\"\\s*\\))|(?:\\(\\s*\\'([^\\']+)\\'\\s*\\))|(?:\\(\\s*([^)\\s]+)\\s*\\))))|(?:\\'([^\\']+)\\')|(?:\\\"([^\\\"]+)\\\")/gi;\n      const styleRegExp = /\\s*([^:]+):\\s*([^;]+);?/g;\n      const trimRightRegExp = /\\s+$/;\n      const encodingLookup = {};\n      let validStyles;\n      let invalidStyles;\n      const invisibleChar = zeroWidth;\n      if (schema) {\n        validStyles = schema.getValidStyles();\n        invalidStyles = schema.getInvalidStyles();\n      }\n      const encodingItems = (\"\\\\\\\" \\\\' \\\\; \\\\: ; : \" + invisibleChar).split(' ');\n      for (let i = 0; i < encodingItems.length; i++) {\n        encodingLookup[encodingItems[i]] = invisibleChar + i;\n        encodingLookup[invisibleChar + i] = encodingItems[i];\n      }\n      const self = {\n        parse: css => {\n          const styles = {};\n          let isEncoded = false;\n          const urlConverter = settings.url_converter;\n          const urlConverterScope = settings.url_converter_scope || self;\n          const compress = (prefix, suffix, noJoin) => {\n            const top = styles[prefix + '-top' + suffix];\n            if (!top) {\n              return;\n            }\n            const right = styles[prefix + '-right' + suffix];\n            if (!right) {\n              return;\n            }\n            const bottom = styles[prefix + '-bottom' + suffix];\n            if (!bottom) {\n              return;\n            }\n            const left = styles[prefix + '-left' + suffix];\n            if (!left) {\n              return;\n            }\n            const box = [top, right, bottom, left];\n            let i = box.length - 1;\n            while (i--) {\n              if (box[i] !== box[i + 1]) {\n                break;\n              }\n            }\n            if (i > -1 && noJoin) {\n              return;\n            }\n            styles[prefix + suffix] = i === -1 ? box[0] : box.join(' ');\n            delete styles[prefix + '-top' + suffix];\n            delete styles[prefix + '-right' + suffix];\n            delete styles[prefix + '-bottom' + suffix];\n            delete styles[prefix + '-left' + suffix];\n          };\n          const canCompress = key => {\n            const value = styles[key];\n            if (!value) {\n              return;\n            }\n            const values = value.indexOf(',') > -1 ? [value] : value.split(' ');\n            let i = values.length;\n            while (i--) {\n              if (values[i] !== values[0]) {\n                return false;\n              }\n            }\n            styles[key] = values[0];\n            return true;\n          };\n          const compress2 = (target, a, b, c) => {\n            if (!canCompress(a)) {\n              return;\n            }\n            if (!canCompress(b)) {\n              return;\n            }\n            if (!canCompress(c)) {\n              return;\n            }\n            styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];\n            delete styles[a];\n            delete styles[b];\n            delete styles[c];\n          };\n          const encode = str => {\n            isEncoded = true;\n            return encodingLookup[str];\n          };\n          const decode = (str, keepSlashes) => {\n            if (isEncoded) {\n              str = str.replace(/\\uFEFF[0-9]/g, str => {\n                return encodingLookup[str];\n              });\n            }\n            if (!keepSlashes) {\n              str = str.replace(/\\\\([\\'\\\";:])/g, '$1');\n            }\n            return str;\n          };\n          const decodeSingleHexSequence = escSeq => {\n            return String.fromCharCode(parseInt(escSeq.slice(1), 16));\n          };\n          const decodeHexSequences = value => {\n            return value.replace(/\\\\[0-9a-f]+/gi, decodeSingleHexSequence);\n          };\n          const processUrl = (match, url, url2, url3, str, str2) => {\n            str = str || str2;\n            if (str) {\n              str = decode(str);\n              return \"'\" + str.replace(/\\'/g, \"\\\\'\") + \"'\";\n            }\n            url = decode(url || url2 || url3 || '');\n            if (!settings.allow_script_urls) {\n              const scriptUrl = url.replace(/[\\s\\r\\n]+/g, '');\n              if (/(java|vb)script:/i.test(scriptUrl)) {\n                return '';\n              }\n              if (!settings.allow_svg_data_urls && /^data:image\\/svg/i.test(scriptUrl)) {\n                return '';\n              }\n            }\n            if (urlConverter) {\n              url = urlConverter.call(urlConverterScope, url, 'style');\n            }\n            return \"url('\" + url.replace(/\\'/g, \"\\\\'\") + \"')\";\n          };\n          if (css) {\n            css = css.replace(/[\\u0000-\\u001F]/g, '');\n            css = css.replace(/\\\\[\\\"\\';:\\uFEFF]/g, encode).replace(/\\\"[^\\\"]+\\\"|\\'[^\\']+\\'/g, str => {\n              return str.replace(/[;:]/g, encode);\n            });\n            let matches;\n            while (matches = styleRegExp.exec(css)) {\n              styleRegExp.lastIndex = matches.index + matches[0].length;\n              let name = matches[1].replace(trimRightRegExp, '').toLowerCase();\n              let value = matches[2].replace(trimRightRegExp, '');\n              if (name && value) {\n                name = decodeHexSequences(name);\n                value = decodeHexSequences(value);\n                if (name.indexOf(invisibleChar) !== -1 || name.indexOf('\"') !== -1) {\n                  continue;\n                }\n                if (!settings.allow_script_urls && (name === 'behavior' || /expression\\s*\\(|\\/\\*|\\*\\//.test(value))) {\n                  continue;\n                }\n                if (name === 'font-weight' && value === '700') {\n                  value = 'bold';\n                } else if (name === 'color' || name === 'background-color') {\n                  value = value.toLowerCase();\n                }\n                if (isString(settings.force_hex_color) && settings.force_hex_color !== 'off') {\n                  fromString(value).each(rgba => {\n                    if (settings.force_hex_color === 'always' || rgba.alpha === 1) {\n                      value = rgbaToHexString(toString(rgba));\n                    }\n                  });\n                }\n                value = value.replace(urlOrStrRegExp, processUrl);\n                styles[name] = isEncoded ? decode(value, true) : value;\n              }\n            }\n            compress('border', '', true);\n            compress('border', '-width');\n            compress('border', '-color');\n            compress('border', '-style');\n            compress('padding', '');\n            compress('margin', '');\n            compress2('border', 'border-width', 'border-style', 'border-color');\n            if (styles.border === 'medium none') {\n              delete styles.border;\n            }\n            if (styles['border-image'] === 'none') {\n              delete styles['border-image'];\n            }\n          }\n          return styles;\n        },\n        serialize: (styles, elementName) => {\n          let css = '';\n          const serializeStyles = (elemName, validStyleList) => {\n            const styleList = validStyleList[elemName];\n            if (styleList) {\n              for (let i = 0, l = styleList.length; i < l; i++) {\n                const name = styleList[i];\n                const value = styles[name];\n                if (value) {\n                  css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n                }\n              }\n            }\n          };\n          const isValid = (name, elemName) => {\n            if (!invalidStyles || !elemName) {\n              return true;\n            }\n            let styleMap = invalidStyles['*'];\n            if (styleMap && styleMap[name]) {\n              return false;\n            }\n            styleMap = invalidStyles[elemName];\n            return !(styleMap && styleMap[name]);\n          };\n          if (elementName && validStyles) {\n            serializeStyles('*', validStyles);\n            serializeStyles(elementName, validStyles);\n          } else {\n            each$d(styles, (value, name) => {\n              if (value && isValid(name, elementName)) {\n                css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n              }\n            });\n          }\n          return css;\n        }\n      };\n      return self;\n    };\n\n    const deprecated = {\n      keyLocation: true,\n      layerX: true,\n      layerY: true,\n      returnValue: true,\n      webkitMovementX: true,\n      webkitMovementY: true,\n      keyIdentifier: true,\n      mozPressure: true\n    };\n    const isNativeEvent = event => event instanceof Event || isFunction(event.initEvent);\n    const hasIsDefaultPrevented = event => event.isDefaultPrevented === always || event.isDefaultPrevented === never;\n    const needsNormalizing = event => isNullable(event.preventDefault) || isNativeEvent(event);\n    const clone$3 = (originalEvent, data) => {\n      const event = data !== null && data !== void 0 ? data : {};\n      for (const name in originalEvent) {\n        if (!has$2(deprecated, name)) {\n          event[name] = originalEvent[name];\n        }\n      }\n      if (isNonNullable(originalEvent.composedPath)) {\n        event.composedPath = () => originalEvent.composedPath();\n      }\n      if (isNonNullable(originalEvent.getModifierState)) {\n        event.getModifierState = keyArg => originalEvent.getModifierState(keyArg);\n      }\n      if (isNonNullable(originalEvent.getTargetRanges)) {\n        event.getTargetRanges = () => originalEvent.getTargetRanges();\n      }\n      return event;\n    };\n    const normalize$3 = (type, originalEvent, fallbackTarget, data) => {\n      var _a;\n      const event = clone$3(originalEvent, data);\n      event.type = type;\n      if (isNullable(event.target)) {\n        event.target = (_a = event.srcElement) !== null && _a !== void 0 ? _a : fallbackTarget;\n      }\n      if (needsNormalizing(originalEvent)) {\n        event.preventDefault = () => {\n          event.defaultPrevented = true;\n          event.isDefaultPrevented = always;\n          if (isFunction(originalEvent.preventDefault)) {\n            originalEvent.preventDefault();\n          }\n        };\n        event.stopPropagation = () => {\n          event.cancelBubble = true;\n          event.isPropagationStopped = always;\n          if (isFunction(originalEvent.stopPropagation)) {\n            originalEvent.stopPropagation();\n          }\n        };\n        event.stopImmediatePropagation = () => {\n          event.isImmediatePropagationStopped = always;\n          event.stopPropagation();\n        };\n        if (!hasIsDefaultPrevented(event)) {\n          event.isDefaultPrevented = event.defaultPrevented === true ? always : never;\n          event.isPropagationStopped = event.cancelBubble === true ? always : never;\n          event.isImmediatePropagationStopped = never;\n        }\n      }\n      return event;\n    };\n\n    const eventExpandoPrefix = 'mce-data-';\n    const mouseEventRe = /^(?:mouse|contextmenu)|click/;\n    const addEvent = (target, name, callback, capture) => {\n      target.addEventListener(name, callback, capture || false);\n    };\n    const removeEvent = (target, name, callback, capture) => {\n      target.removeEventListener(name, callback, capture || false);\n    };\n    const isMouseEvent = event => isNonNullable(event) && mouseEventRe.test(event.type);\n    const fix = (originalEvent, data) => {\n      const event = normalize$3(originalEvent.type, originalEvent, document, data);\n      if (isMouseEvent(originalEvent) && isUndefined(originalEvent.pageX) && !isUndefined(originalEvent.clientX)) {\n        const eventDoc = event.target.ownerDocument || document;\n        const doc = eventDoc.documentElement;\n        const body = eventDoc.body;\n        const mouseEvent = event;\n        mouseEvent.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n        mouseEvent.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n      }\n      return event;\n    };\n    const bindOnReady = (win, callback, eventUtils) => {\n      const doc = win.document,\n        event = {\n          type: 'ready'\n        };\n      if (eventUtils.domLoaded) {\n        callback(event);\n        return;\n      }\n      const isDocReady = () => {\n        return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body;\n      };\n      const readyHandler = () => {\n        removeEvent(win, 'DOMContentLoaded', readyHandler);\n        removeEvent(win, 'load', readyHandler);\n        if (!eventUtils.domLoaded) {\n          eventUtils.domLoaded = true;\n          callback(event);\n        }\n        win = null;\n      };\n      if (isDocReady()) {\n        readyHandler();\n      } else {\n        addEvent(win, 'DOMContentLoaded', readyHandler);\n      }\n      if (!eventUtils.domLoaded) {\n        addEvent(win, 'load', readyHandler);\n      }\n    };\n    class EventUtils {\n      constructor() {\n        this.domLoaded = false;\n        this.events = {};\n        this.count = 1;\n        this.expando = eventExpandoPrefix + (+new Date()).toString(32);\n        this.hasFocusIn = 'onfocusin' in document.documentElement;\n        this.count = 1;\n      }\n      bind(target, names, callback, scope) {\n        const self = this;\n        let callbackList;\n        const win = window;\n        const defaultNativeHandler = evt => {\n          self.executeHandlers(fix(evt || win.event), id);\n        };\n        if (!target || isText$a(target) || isComment(target)) {\n          return callback;\n        }\n        let id;\n        if (!target[self.expando]) {\n          id = self.count++;\n          target[self.expando] = id;\n          self.events[id] = {};\n        } else {\n          id = target[self.expando];\n        }\n        scope = scope || target;\n        const namesList = names.split(' ');\n        let i = namesList.length;\n        while (i--) {\n          let name = namesList[i];\n          let nativeHandler = defaultNativeHandler;\n          let capture = false;\n          let fakeName = false;\n          if (name === 'DOMContentLoaded') {\n            name = 'ready';\n          }\n          if (self.domLoaded && name === 'ready' && target.readyState === 'complete') {\n            callback.call(scope, fix({\n              type: name\n            }));\n            continue;\n          }\n          if (!self.hasFocusIn && (name === 'focusin' || name === 'focusout')) {\n            capture = true;\n            fakeName = name === 'focusin' ? 'focus' : 'blur';\n            nativeHandler = evt => {\n              const event = fix(evt || win.event);\n              event.type = event.type === 'focus' ? 'focusin' : 'focusout';\n              self.executeHandlers(event, id);\n            };\n          }\n          callbackList = self.events[id][name];\n          if (!callbackList) {\n            self.events[id][name] = callbackList = [{\n              func: callback,\n              scope\n            }];\n            callbackList.fakeName = fakeName;\n            callbackList.capture = capture;\n            callbackList.nativeHandler = nativeHandler;\n            if (name === 'ready') {\n              bindOnReady(target, nativeHandler, self);\n            } else {\n              addEvent(target, fakeName || name, nativeHandler, capture);\n            }\n          } else {\n            if (name === 'ready' && self.domLoaded) {\n              callback(fix({\n                type: name\n              }));\n            } else {\n              callbackList.push({\n                func: callback,\n                scope\n              });\n            }\n          }\n        }\n        target = callbackList = null;\n        return callback;\n      }\n      unbind(target, names, callback) {\n        if (!target || isText$a(target) || isComment(target)) {\n          return this;\n        }\n        const id = target[this.expando];\n        if (id) {\n          let eventMap = this.events[id];\n          if (names) {\n            const namesList = names.split(' ');\n            let i = namesList.length;\n            while (i--) {\n              const name = namesList[i];\n              const callbackList = eventMap[name];\n              if (callbackList) {\n                if (callback) {\n                  let ci = callbackList.length;\n                  while (ci--) {\n                    if (callbackList[ci].func === callback) {\n                      const nativeHandler = callbackList.nativeHandler;\n                      const fakeName = callbackList.fakeName,\n                        capture = callbackList.capture;\n                      const newCallbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));\n                      newCallbackList.nativeHandler = nativeHandler;\n                      newCallbackList.fakeName = fakeName;\n                      newCallbackList.capture = capture;\n                      eventMap[name] = newCallbackList;\n                    }\n                  }\n                }\n                if (!callback || callbackList.length === 0) {\n                  delete eventMap[name];\n                  removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);\n                }\n              }\n            }\n          } else {\n            each$d(eventMap, (callbackList, name) => {\n              removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);\n            });\n            eventMap = {};\n          }\n          for (const name in eventMap) {\n            if (has$2(eventMap, name)) {\n              return this;\n            }\n          }\n          delete this.events[id];\n          try {\n            delete target[this.expando];\n          } catch (ex) {\n            target[this.expando] = null;\n          }\n        }\n        return this;\n      }\n      fire(target, name, args) {\n        return this.dispatch(target, name, args);\n      }\n      dispatch(target, name, args) {\n        if (!target || isText$a(target) || isComment(target)) {\n          return this;\n        }\n        const event = fix({\n          type: name,\n          target\n        }, args);\n        do {\n          const id = target[this.expando];\n          if (id) {\n            this.executeHandlers(event, id);\n          }\n          target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;\n        } while (target && !event.isPropagationStopped());\n        return this;\n      }\n      clean(target) {\n        if (!target || isText$a(target) || isComment(target)) {\n          return this;\n        }\n        if (target[this.expando]) {\n          this.unbind(target);\n        }\n        if (!target.getElementsByTagName) {\n          target = target.document;\n        }\n        if (target && target.getElementsByTagName) {\n          this.unbind(target);\n          const children = target.getElementsByTagName('*');\n          let i = children.length;\n          while (i--) {\n            target = children[i];\n            if (target[this.expando]) {\n              this.unbind(target);\n            }\n          }\n        }\n        return this;\n      }\n      destroy() {\n        this.events = {};\n      }\n      cancel(e) {\n        if (e) {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n        }\n        return false;\n      }\n      executeHandlers(evt, id) {\n        const container = this.events[id];\n        const callbackList = container && container[evt.type];\n        if (callbackList) {\n          for (let i = 0, l = callbackList.length; i < l; i++) {\n            const callback = callbackList[i];\n            if (callback && callback.func.call(callback.scope, evt) === false) {\n              evt.preventDefault();\n            }\n            if (evt.isImmediatePropagationStopped()) {\n              return;\n            }\n          }\n        }\n      }\n    }\n    EventUtils.Event = new EventUtils();\n\n    const each$a = Tools.each;\n    const grep = Tools.grep;\n    const internalStyleName = 'data-mce-style';\n    const numericalCssMap = Tools.makeMap('fill-opacity font-weight line-height opacity orphans widows z-index zoom', ' ');\n    const legacySetAttribute = (elm, name, value) => {\n      if (isNullable(value) || value === '') {\n        remove$a(elm, name);\n      } else {\n        set$3(elm, name, value);\n      }\n    };\n    const camelCaseToHyphens = name => name.replace(/[A-Z]/g, v => '-' + v.toLowerCase());\n    const findNodeIndex = (node, normalized) => {\n      let idx = 0;\n      if (node) {\n        for (let lastNodeType = node.nodeType, tempNode = node.previousSibling; tempNode; tempNode = tempNode.previousSibling) {\n          const nodeType = tempNode.nodeType;\n          if (normalized && isText$a(tempNode)) {\n            if (nodeType === lastNodeType || !tempNode.data.length) {\n              continue;\n            }\n          }\n          idx++;\n          lastNodeType = nodeType;\n        }\n      }\n      return idx;\n    };\n    const updateInternalStyleAttr = (styles, elm) => {\n      const rawValue = get$9(elm, 'style');\n      const value = styles.serialize(styles.parse(rawValue), name(elm));\n      legacySetAttribute(elm, internalStyleName, value);\n    };\n    const convertStyleToString = (cssValue, cssName) => {\n      if (isNumber(cssValue)) {\n        return has$2(numericalCssMap, cssName) ? cssValue + '' : cssValue + 'px';\n      } else {\n        return cssValue;\n      }\n    };\n    const applyStyle$1 = ($elm, cssName, cssValue) => {\n      const normalizedName = camelCaseToHyphens(cssName);\n      if (isNullable(cssValue) || cssValue === '') {\n        remove$6($elm, normalizedName);\n      } else {\n        set$2($elm, normalizedName, convertStyleToString(cssValue, normalizedName));\n      }\n    };\n    const setupAttrHooks = (styles, settings, getContext) => {\n      const keepValues = settings.keep_values;\n      const keepUrlHook = {\n        set: (elm, value, name) => {\n          const sugarElm = SugarElement.fromDom(elm);\n          if (isFunction(settings.url_converter) && isNonNullable(value)) {\n            value = settings.url_converter.call(settings.url_converter_scope || getContext(), String(value), name, elm);\n          }\n          const internalName = 'data-mce-' + name;\n          legacySetAttribute(sugarElm, internalName, value);\n          legacySetAttribute(sugarElm, name, value);\n        },\n        get: (elm, name) => {\n          const sugarElm = SugarElement.fromDom(elm);\n          return get$9(sugarElm, 'data-mce-' + name) || get$9(sugarElm, name);\n        }\n      };\n      const attrHooks = {\n        style: {\n          set: (elm, value) => {\n            const sugarElm = SugarElement.fromDom(elm);\n            if (keepValues) {\n              legacySetAttribute(sugarElm, internalStyleName, value);\n            }\n            remove$a(sugarElm, 'style');\n            if (isString(value)) {\n              setAll(sugarElm, styles.parse(value));\n            }\n          },\n          get: elm => {\n            const sugarElm = SugarElement.fromDom(elm);\n            const value = get$9(sugarElm, internalStyleName) || get$9(sugarElm, 'style');\n            return styles.serialize(styles.parse(value), name(sugarElm));\n          }\n        }\n      };\n      if (keepValues) {\n        attrHooks.href = attrHooks.src = keepUrlHook;\n      }\n      return attrHooks;\n    };\n    const DOMUtils = (doc, settings = {}) => {\n      const addedStyles = {};\n      const win = window;\n      const files = {};\n      let counter = 0;\n      const stdMode = true;\n      const boxModel = true;\n      const styleSheetLoader = instance.forElement(SugarElement.fromDom(doc), {\n        contentCssCors: settings.contentCssCors,\n        referrerPolicy: settings.referrerPolicy\n      });\n      const boundEvents = [];\n      const schema = settings.schema ? settings.schema : Schema({});\n      const styles = Styles({\n        url_converter: settings.url_converter,\n        url_converter_scope: settings.url_converter_scope,\n        force_hex_color: settings.force_hex_color\n      }, settings.schema);\n      const events = settings.ownEvents ? new EventUtils() : EventUtils.Event;\n      const blockElementsMap = schema.getBlockElements();\n      const isBlock = node => {\n        if (isString(node)) {\n          return has$2(blockElementsMap, node);\n        } else {\n          return isElement$6(node) && (has$2(blockElementsMap, node.nodeName) || isTransparentBlock(schema, node));\n        }\n      };\n      const get = elm => elm && doc && isString(elm) ? doc.getElementById(elm) : elm;\n      const _get = elm => {\n        const value = get(elm);\n        return isNonNullable(value) ? SugarElement.fromDom(value) : null;\n      };\n      const getAttrib = (elm, name, defaultVal = '') => {\n        let value;\n        const $elm = _get(elm);\n        if (isNonNullable($elm) && isElement$7($elm)) {\n          const hook = attrHooks[name];\n          if (hook && hook.get) {\n            value = hook.get($elm.dom, name);\n          } else {\n            value = get$9($elm, name);\n          }\n        }\n        return isNonNullable(value) ? value : defaultVal;\n      };\n      const getAttribs = elm => {\n        const node = get(elm);\n        return isNullable(node) ? [] : node.attributes;\n      };\n      const setAttrib = (elm, name, value) => {\n        run(elm, e => {\n          if (isElement$6(e)) {\n            const $elm = SugarElement.fromDom(e);\n            const val = value === '' ? null : value;\n            const originalValue = get$9($elm, name);\n            const hook = attrHooks[name];\n            if (hook && hook.set) {\n              hook.set($elm.dom, val, name);\n            } else {\n              legacySetAttribute($elm, name, val);\n            }\n            if (originalValue !== val && settings.onSetAttrib) {\n              settings.onSetAttrib({\n                attrElm: $elm.dom,\n                attrName: name,\n                attrValue: val\n              });\n            }\n          }\n        });\n      };\n      const clone = (node, deep) => {\n        return node.cloneNode(deep);\n      };\n      const getRoot = () => settings.root_element || doc.body;\n      const getViewPort = argWin => {\n        const vp = getBounds(argWin);\n        return {\n          x: vp.x,\n          y: vp.y,\n          w: vp.width,\n          h: vp.height\n        };\n      };\n      const getPos$1 = (elm, rootElm) => getPos(doc.body, get(elm), rootElm);\n      const setStyle = (elm, name, value) => {\n        run(elm, e => {\n          const $elm = SugarElement.fromDom(e);\n          applyStyle$1($elm, name, value);\n          if (settings.update_styles) {\n            updateInternalStyleAttr(styles, $elm);\n          }\n        });\n      };\n      const setStyles = (elm, stylesArg) => {\n        run(elm, e => {\n          const $elm = SugarElement.fromDom(e);\n          each$d(stylesArg, (v, n) => {\n            applyStyle$1($elm, n, v);\n          });\n          if (settings.update_styles) {\n            updateInternalStyleAttr(styles, $elm);\n          }\n        });\n      };\n      const getStyle = (elm, name, computed) => {\n        const $elm = get(elm);\n        if (isNullable($elm) || !isHTMLElement($elm) && !isSVGElement($elm)) {\n          return undefined;\n        }\n        if (computed) {\n          return get$7(SugarElement.fromDom($elm), camelCaseToHyphens(name));\n        } else {\n          name = name.replace(/-(\\D)/g, (a, b) => b.toUpperCase());\n          if (name === 'float') {\n            name = 'cssFloat';\n          }\n          return $elm.style ? $elm.style[name] : undefined;\n        }\n      };\n      const getSize = elm => {\n        const $elm = get(elm);\n        if (!$elm) {\n          return {\n            w: 0,\n            h: 0\n          };\n        }\n        let w = getStyle($elm, 'width');\n        let h = getStyle($elm, 'height');\n        if (!w || w.indexOf('px') === -1) {\n          w = '0';\n        }\n        if (!h || h.indexOf('px') === -1) {\n          h = '0';\n        }\n        return {\n          w: parseInt(w, 10) || $elm.offsetWidth || $elm.clientWidth,\n          h: parseInt(h, 10) || $elm.offsetHeight || $elm.clientHeight\n        };\n      };\n      const getRect = elm => {\n        const $elm = get(elm);\n        const pos = getPos$1($elm);\n        const size = getSize($elm);\n        return {\n          x: pos.x,\n          y: pos.y,\n          w: size.w,\n          h: size.h\n        };\n      };\n      const is = (elm, selector) => {\n        if (!elm) {\n          return false;\n        }\n        const elms = isArray$1(elm) ? elm : [elm];\n        return exists(elms, e => {\n          return is$1(SugarElement.fromDom(e), selector);\n        });\n      };\n      const getParents = (elm, selector, root, collect) => {\n        const result = [];\n        let node = get(elm);\n        collect = collect === undefined;\n        const resolvedRoot = root || (getRoot().nodeName !== 'BODY' ? getRoot().parentNode : null);\n        if (isString(selector)) {\n          if (selector === '*') {\n            selector = isElement$6;\n          } else {\n            const selectorVal = selector;\n            selector = node => is(node, selectorVal);\n          }\n        }\n        while (node) {\n          if (node === resolvedRoot || isNullable(node.nodeType) || isDocument$1(node) || isDocumentFragment(node)) {\n            break;\n          }\n          if (!selector || selector(node)) {\n            if (collect) {\n              result.push(node);\n            } else {\n              return [node];\n            }\n          }\n          node = node.parentNode;\n        }\n        return collect ? result : null;\n      };\n      const getParent = (node, selector, root) => {\n        const parents = getParents(node, selector, root, false);\n        return parents && parents.length > 0 ? parents[0] : null;\n      };\n      const _findSib = (node, selector, name) => {\n        let func = selector;\n        if (node) {\n          if (isString(selector)) {\n            func = node => {\n              return is(node, selector);\n            };\n          }\n          for (let tempNode = node[name]; tempNode; tempNode = tempNode[name]) {\n            if (isFunction(func) && func(tempNode)) {\n              return tempNode;\n            }\n          }\n        }\n        return null;\n      };\n      const getNext = (node, selector) => _findSib(node, selector, 'nextSibling');\n      const getPrev = (node, selector) => _findSib(node, selector, 'previousSibling');\n      const isParentNode = node => isFunction(node.querySelectorAll);\n      const select = (selector, scope) => {\n        var _a, _b;\n        const elm = (_b = (_a = get(scope)) !== null && _a !== void 0 ? _a : settings.root_element) !== null && _b !== void 0 ? _b : doc;\n        return isParentNode(elm) ? from(elm.querySelectorAll(selector)) : [];\n      };\n      const run = function (elm, func, scope) {\n        const context = scope !== null && scope !== void 0 ? scope : this;\n        if (isArray$1(elm)) {\n          const result = [];\n          each$a(elm, (e, i) => {\n            const node = get(e);\n            if (node) {\n              result.push(func.call(context, node, i));\n            }\n          });\n          return result;\n        } else {\n          const node = get(elm);\n          return !node ? false : func.call(context, node);\n        }\n      };\n      const setAttribs = (elm, attrs) => {\n        run(elm, $elm => {\n          each$d(attrs, (value, name) => {\n            setAttrib($elm, name, value);\n          });\n        });\n      };\n      const setHTML = (elm, html) => {\n        run(elm, e => {\n          const $elm = SugarElement.fromDom(e);\n          set$1($elm, html);\n        });\n      };\n      const add = (parentElm, name, attrs, html, create) => run(parentElm, parentElm => {\n        const newElm = isString(name) ? doc.createElement(name) : name;\n        if (isNonNullable(attrs)) {\n          setAttribs(newElm, attrs);\n        }\n        if (html) {\n          if (!isString(html) && html.nodeType) {\n            newElm.appendChild(html);\n          } else if (isString(html)) {\n            setHTML(newElm, html);\n          }\n        }\n        return !create ? parentElm.appendChild(newElm) : newElm;\n      });\n      const create = (name, attrs, html) => add(doc.createElement(name), name, attrs, html, true);\n      const decode = Entities.decode;\n      const encode = Entities.encodeAllRaw;\n      const createHTML = (name, attrs, html = '') => {\n        let outHtml = '<' + name;\n        for (const key in attrs) {\n          if (hasNonNullableKey(attrs, key)) {\n            outHtml += ' ' + key + '=\"' + encode(attrs[key]) + '\"';\n          }\n        }\n        if (isEmpty$3(html) && has$2(schema.getVoidElements(), name)) {\n          return outHtml + ' />';\n        } else {\n          return outHtml + '>' + html + '</' + name + '>';\n        }\n      };\n      const createFragment = html => {\n        const container = doc.createElement('div');\n        const frag = doc.createDocumentFragment();\n        frag.appendChild(container);\n        if (html) {\n          container.innerHTML = html;\n        }\n        let node;\n        while (node = container.firstChild) {\n          frag.appendChild(node);\n        }\n        frag.removeChild(container);\n        return frag;\n      };\n      const remove = (node, keepChildren) => {\n        return run(node, n => {\n          const $node = SugarElement.fromDom(n);\n          if (keepChildren) {\n            each$e(children$1($node), child => {\n              if (isText$b(child) && child.dom.length === 0) {\n                remove$5(child);\n              } else {\n                before$3($node, child);\n              }\n            });\n          }\n          remove$5($node);\n          return $node.dom;\n        });\n      };\n      const removeAllAttribs = e => run(e, e => {\n        const attrs = e.attributes;\n        for (let i = attrs.length - 1; i >= 0; i--) {\n          e.removeAttributeNode(attrs.item(i));\n        }\n      });\n      const parseStyle = cssText => styles.parse(cssText);\n      const serializeStyle = (stylesArg, name) => styles.serialize(stylesArg, name);\n      const addStyle = cssText => {\n        if (self !== DOMUtils.DOM && doc === document) {\n          if (addedStyles[cssText]) {\n            return;\n          }\n          addedStyles[cssText] = true;\n        }\n        let styleElm = doc.getElementById('mceDefaultStyles');\n        if (!styleElm) {\n          styleElm = doc.createElement('style');\n          styleElm.id = 'mceDefaultStyles';\n          styleElm.type = 'text/css';\n          const head = doc.head;\n          if (head.firstChild) {\n            head.insertBefore(styleElm, head.firstChild);\n          } else {\n            head.appendChild(styleElm);\n          }\n        }\n        if (styleElm.styleSheet) {\n          styleElm.styleSheet.cssText += cssText;\n        } else {\n          styleElm.appendChild(doc.createTextNode(cssText));\n        }\n      };\n      const loadCSS = urls => {\n        if (!urls) {\n          urls = '';\n        }\n        each$e(urls.split(','), url => {\n          files[url] = true;\n          styleSheetLoader.load(url).catch(noop);\n        });\n      };\n      const toggleClass = (elm, cls, state) => {\n        run(elm, e => {\n          if (isElement$6(e)) {\n            const $elm = SugarElement.fromDom(e);\n            const classes = cls.split(' ');\n            each$e(classes, c => {\n              if (isNonNullable(state)) {\n                const fn = state ? add$2 : remove$7;\n                fn($elm, c);\n              } else {\n                toggle$1($elm, c);\n              }\n            });\n          }\n        });\n      };\n      const addClass = (elm, cls) => {\n        toggleClass(elm, cls, true);\n      };\n      const removeClass = (elm, cls) => {\n        toggleClass(elm, cls, false);\n      };\n      const hasClass = (elm, cls) => {\n        const $elm = _get(elm);\n        const classes = cls.split(' ');\n        return isNonNullable($elm) && forall(classes, c => has($elm, c));\n      };\n      const show = elm => {\n        run(elm, e => remove$6(SugarElement.fromDom(e), 'display'));\n      };\n      const hide = elm => {\n        run(elm, e => set$2(SugarElement.fromDom(e), 'display', 'none'));\n      };\n      const isHidden = elm => {\n        const $elm = _get(elm);\n        return isNonNullable($elm) && is$2(getRaw($elm, 'display'), 'none');\n      };\n      const uniqueId = prefix => (!prefix ? 'mce_' : prefix) + counter++;\n      const getOuterHTML = elm => {\n        const $elm = _get(elm);\n        if (isNonNullable($elm)) {\n          return isElement$6($elm.dom) ? $elm.dom.outerHTML : getOuter($elm);\n        } else {\n          return '';\n        }\n      };\n      const setOuterHTML = (elm, html) => {\n        run(elm, $elm => {\n          if (isElement$6($elm)) {\n            $elm.outerHTML = html;\n          }\n        });\n      };\n      const insertAfter = (node, reference) => {\n        const referenceNode = get(reference);\n        return run(node, node => {\n          const parent = referenceNode === null || referenceNode === void 0 ? void 0 : referenceNode.parentNode;\n          const nextSibling = referenceNode === null || referenceNode === void 0 ? void 0 : referenceNode.nextSibling;\n          if (parent) {\n            if (nextSibling) {\n              parent.insertBefore(node, nextSibling);\n            } else {\n              parent.appendChild(node);\n            }\n          }\n          return node;\n        });\n      };\n      const replace = (newElm, oldElm, keepChildren) => run(oldElm, elm => {\n        var _a;\n        const replacee = isArray$1(oldElm) ? newElm.cloneNode(true) : newElm;\n        if (keepChildren) {\n          each$a(grep(elm.childNodes), node => {\n            replacee.appendChild(node);\n          });\n        }\n        (_a = elm.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(replacee, elm);\n        return elm;\n      });\n      const rename = (elm, name) => {\n        if (elm.nodeName !== name.toUpperCase()) {\n          const newElm = create(name);\n          each$a(getAttribs(elm), attrNode => {\n            setAttrib(newElm, attrNode.nodeName, getAttrib(elm, attrNode.nodeName));\n          });\n          replace(newElm, elm, true);\n          return newElm;\n        } else {\n          return elm;\n        }\n      };\n      const findCommonAncestor = (a, b) => {\n        let ps = a;\n        while (ps) {\n          let pe = b;\n          while (pe && ps !== pe) {\n            pe = pe.parentNode;\n          }\n          if (ps === pe) {\n            break;\n          }\n          ps = ps.parentNode;\n        }\n        if (!ps && a.ownerDocument) {\n          return a.ownerDocument.documentElement;\n        } else {\n          return ps;\n        }\n      };\n      const isNonEmptyElement = node => {\n        if (isElement$6(node)) {\n          const isNamedAnchor = node.nodeName.toLowerCase() === 'a' && !getAttrib(node, 'href') && getAttrib(node, 'id');\n          if (getAttrib(node, 'name') || getAttrib(node, 'data-mce-bookmark') || isNamedAnchor) {\n            return true;\n          }\n        }\n        return false;\n      };\n      const isEmpty = (node, elements, options) => {\n        let brCount = 0;\n        if (isNonEmptyElement(node)) {\n          return false;\n        }\n        const firstChild = node.firstChild;\n        if (firstChild) {\n          const walker = new DomTreeWalker(firstChild, node);\n          const whitespaceElements = schema ? schema.getWhitespaceElements() : {};\n          const nonEmptyElements = elements || (schema ? schema.getNonEmptyElements() : null);\n          let tempNode = firstChild;\n          do {\n            if (isElement$6(tempNode)) {\n              const bogusVal = tempNode.getAttribute('data-mce-bogus');\n              if (bogusVal) {\n                tempNode = walker.next(bogusVal === 'all');\n                continue;\n              }\n              const name = tempNode.nodeName.toLowerCase();\n              if (nonEmptyElements && nonEmptyElements[name]) {\n                if (name === 'br') {\n                  brCount++;\n                  tempNode = walker.next();\n                  continue;\n                }\n                return false;\n              }\n              if (isNonEmptyElement(tempNode)) {\n                return false;\n              }\n            }\n            if (isComment(tempNode)) {\n              return false;\n            }\n            if (isText$a(tempNode) && !isWhitespaceText(tempNode.data) && (!(options === null || options === void 0 ? void 0 : options.includeZwsp) || !isZwsp(tempNode.data))) {\n              return false;\n            }\n            if (isText$a(tempNode) && tempNode.parentNode && whitespaceElements[tempNode.parentNode.nodeName] && isWhitespaceText(tempNode.data)) {\n              return false;\n            }\n            tempNode = walker.next();\n          } while (tempNode);\n        }\n        return brCount <= 1;\n      };\n      const createRng = () => doc.createRange();\n      const split = (parentElm, splitElm, replacementElm) => {\n        let range = createRng();\n        let beforeFragment;\n        let afterFragment;\n        if (parentElm && splitElm && parentElm.parentNode && splitElm.parentNode) {\n          const parentNode = parentElm.parentNode;\n          range.setStart(parentNode, findNodeIndex(parentElm));\n          range.setEnd(splitElm.parentNode, findNodeIndex(splitElm));\n          beforeFragment = range.extractContents();\n          range = createRng();\n          range.setStart(splitElm.parentNode, findNodeIndex(splitElm) + 1);\n          range.setEnd(parentNode, findNodeIndex(parentElm) + 1);\n          afterFragment = range.extractContents();\n          parentNode.insertBefore(trimNode(self, beforeFragment, schema), parentElm);\n          if (replacementElm) {\n            parentNode.insertBefore(replacementElm, parentElm);\n          } else {\n            parentNode.insertBefore(splitElm, parentElm);\n          }\n          parentNode.insertBefore(trimNode(self, afterFragment, schema), parentElm);\n          remove(parentElm);\n          return replacementElm || splitElm;\n        } else {\n          return undefined;\n        }\n      };\n      const bind = (target, name, func, scope) => {\n        if (isArray$1(target)) {\n          let i = target.length;\n          const rv = [];\n          while (i--) {\n            rv[i] = bind(target[i], name, func, scope);\n          }\n          return rv;\n        } else {\n          if (settings.collect && (target === doc || target === win)) {\n            boundEvents.push([target, name, func, scope]);\n          }\n          return events.bind(target, name, func, scope || self);\n        }\n      };\n      const unbind = (target, name, func) => {\n        if (isArray$1(target)) {\n          let i = target.length;\n          const rv = [];\n          while (i--) {\n            rv[i] = unbind(target[i], name, func);\n          }\n          return rv;\n        } else {\n          if (boundEvents.length > 0 && (target === doc || target === win)) {\n            let i = boundEvents.length;\n            while (i--) {\n              const [boundTarget, boundName, boundFunc] = boundEvents[i];\n              if (target === boundTarget && (!name || name === boundName) && (!func || func === boundFunc)) {\n                events.unbind(boundTarget, boundName, boundFunc);\n              }\n            }\n          }\n          return events.unbind(target, name, func);\n        }\n      };\n      const dispatch = (target, name, evt) => events.dispatch(target, name, evt);\n      const fire = (target, name, evt) => events.dispatch(target, name, evt);\n      const getContentEditable = node => {\n        if (node && isHTMLElement(node)) {\n          const contentEditable = node.getAttribute('data-mce-contenteditable');\n          if (contentEditable && contentEditable !== 'inherit') {\n            return contentEditable;\n          }\n          return node.contentEditable !== 'inherit' ? node.contentEditable : null;\n        } else {\n          return null;\n        }\n      };\n      const getContentEditableParent = node => {\n        const root = getRoot();\n        let state = null;\n        for (let tempNode = node; tempNode && tempNode !== root; tempNode = tempNode.parentNode) {\n          state = getContentEditable(tempNode);\n          if (state !== null) {\n            break;\n          }\n        }\n        return state;\n      };\n      const isEditable = node => {\n        if (isNonNullable(node)) {\n          const scope = isElement$6(node) ? node : node.parentElement;\n          return isNonNullable(scope) && isHTMLElement(scope) && isEditable$2(SugarElement.fromDom(scope));\n        } else {\n          return false;\n        }\n      };\n      const destroy = () => {\n        if (boundEvents.length > 0) {\n          let i = boundEvents.length;\n          while (i--) {\n            const [boundTarget, boundName, boundFunc] = boundEvents[i];\n            events.unbind(boundTarget, boundName, boundFunc);\n          }\n        }\n        each$d(files, (_, url) => {\n          styleSheetLoader.unload(url);\n          delete files[url];\n        });\n      };\n      const isChildOf = (node, parent) => {\n        return node === parent || parent.contains(node);\n      };\n      const dumpRng = r => 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset;\n      const self = {\n        doc,\n        settings,\n        win,\n        files,\n        stdMode,\n        boxModel,\n        styleSheetLoader,\n        boundEvents,\n        styles,\n        schema,\n        events,\n        isBlock: isBlock,\n        root: null,\n        clone,\n        getRoot,\n        getViewPort,\n        getRect,\n        getSize,\n        getParent,\n        getParents: getParents,\n        get,\n        getNext,\n        getPrev,\n        select,\n        is,\n        add,\n        create,\n        createHTML,\n        createFragment,\n        remove,\n        setStyle,\n        getStyle: getStyle,\n        setStyles,\n        removeAllAttribs,\n        setAttrib,\n        setAttribs,\n        getAttrib,\n        getPos: getPos$1,\n        parseStyle,\n        serializeStyle,\n        addStyle,\n        loadCSS,\n        addClass,\n        removeClass,\n        hasClass,\n        toggleClass,\n        show,\n        hide,\n        isHidden,\n        uniqueId,\n        setHTML,\n        getOuterHTML,\n        setOuterHTML,\n        decode,\n        encode,\n        insertAfter,\n        replace,\n        rename,\n        findCommonAncestor,\n        run,\n        getAttribs,\n        isEmpty,\n        createRng,\n        nodeIndex: findNodeIndex,\n        split,\n        bind: bind,\n        unbind: unbind,\n        fire,\n        dispatch,\n        getContentEditable,\n        getContentEditableParent,\n        isEditable,\n        destroy,\n        isChildOf,\n        dumpRng\n      };\n      const attrHooks = setupAttrHooks(styles, settings, constant(self));\n      return self;\n    };\n    DOMUtils.DOM = DOMUtils(document);\n    DOMUtils.nodeIndex = findNodeIndex;\n\n    const DOM$b = DOMUtils.DOM;\n    const QUEUED = 0;\n    const LOADING = 1;\n    const LOADED = 2;\n    const FAILED = 3;\n    class ScriptLoader {\n      constructor(settings = {}) {\n        this.states = {};\n        this.queue = [];\n        this.scriptLoadedCallbacks = {};\n        this.queueLoadedCallbacks = [];\n        this.loading = false;\n        this.settings = settings;\n      }\n      _setReferrerPolicy(referrerPolicy) {\n        this.settings.referrerPolicy = referrerPolicy;\n      }\n      loadScript(url) {\n        return new Promise((resolve, reject) => {\n          const dom = DOM$b;\n          let elm;\n          const cleanup = () => {\n            dom.remove(id);\n            if (elm) {\n              elm.onerror = elm.onload = elm = null;\n            }\n          };\n          const done = () => {\n            cleanup();\n            resolve();\n          };\n          const error = () => {\n            cleanup();\n            reject('Failed to load script: ' + url);\n          };\n          const id = dom.uniqueId();\n          elm = document.createElement('script');\n          elm.id = id;\n          elm.type = 'text/javascript';\n          elm.src = Tools._addCacheSuffix(url);\n          if (this.settings.referrerPolicy) {\n            dom.setAttrib(elm, 'referrerpolicy', this.settings.referrerPolicy);\n          }\n          elm.onload = done;\n          elm.onerror = error;\n          (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);\n        });\n      }\n      isDone(url) {\n        return this.states[url] === LOADED;\n      }\n      markDone(url) {\n        this.states[url] = LOADED;\n      }\n      add(url) {\n        const self = this;\n        self.queue.push(url);\n        const state = self.states[url];\n        if (state === undefined) {\n          self.states[url] = QUEUED;\n        }\n        return new Promise((resolve, reject) => {\n          if (!self.scriptLoadedCallbacks[url]) {\n            self.scriptLoadedCallbacks[url] = [];\n          }\n          self.scriptLoadedCallbacks[url].push({\n            resolve,\n            reject\n          });\n        });\n      }\n      load(url) {\n        return this.add(url);\n      }\n      remove(url) {\n        delete this.states[url];\n        delete this.scriptLoadedCallbacks[url];\n      }\n      loadQueue() {\n        const queue = this.queue;\n        this.queue = [];\n        return this.loadScripts(queue);\n      }\n      loadScripts(scripts) {\n        const self = this;\n        const execCallbacks = (name, url) => {\n          get$a(self.scriptLoadedCallbacks, url).each(callbacks => {\n            each$e(callbacks, callback => callback[name](url));\n          });\n          delete self.scriptLoadedCallbacks[url];\n        };\n        const processResults = results => {\n          const failures = filter$5(results, result => result.status === 'rejected');\n          if (failures.length > 0) {\n            return Promise.reject(bind$3(failures, ({\n              reason\n            }) => isArray$1(reason) ? reason : [reason]));\n          } else {\n            return Promise.resolve();\n          }\n        };\n        const load = urls => Promise.allSettled(map$3(urls, url => {\n          if (self.states[url] === LOADED) {\n            execCallbacks('resolve', url);\n            return Promise.resolve();\n          } else if (self.states[url] === FAILED) {\n            execCallbacks('reject', url);\n            return Promise.reject(url);\n          } else {\n            self.states[url] = LOADING;\n            return self.loadScript(url).then(() => {\n              self.states[url] = LOADED;\n              execCallbacks('resolve', url);\n              const queue = self.queue;\n              if (queue.length > 0) {\n                self.queue = [];\n                return load(queue).then(processResults);\n              } else {\n                return Promise.resolve();\n              }\n            }, () => {\n              self.states[url] = FAILED;\n              execCallbacks('reject', url);\n              return Promise.reject(url);\n            });\n          }\n        }));\n        const processQueue = urls => {\n          self.loading = true;\n          return load(urls).then(results => {\n            self.loading = false;\n            const nextQueuedItem = self.queueLoadedCallbacks.shift();\n            Optional.from(nextQueuedItem).each(call);\n            return processResults(results);\n          });\n        };\n        const uniqueScripts = stringArray(scripts);\n        if (self.loading) {\n          return new Promise((resolve, reject) => {\n            self.queueLoadedCallbacks.push(() => {\n              processQueue(uniqueScripts).then(resolve, reject);\n            });\n          });\n        } else {\n          return processQueue(uniqueScripts);\n        }\n      }\n    }\n    ScriptLoader.ScriptLoader = new ScriptLoader();\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    const isDuplicated = (items, item) => {\n      const firstIndex = items.indexOf(item);\n      return firstIndex !== -1 && items.indexOf(item, firstIndex + 1) > firstIndex;\n    };\n    const isRaw = str => isObject(str) && has$2(str, 'raw');\n    const isTokenised = str => isArray$1(str) && str.length > 1;\n    const data = {};\n    const currentCode = Cell('en');\n    const getLanguageData = () => get$a(data, currentCode.get());\n    const getData$1 = () => map$2(data, value => ({\n      ...value\n    }));\n    const setCode = newCode => {\n      if (newCode) {\n        currentCode.set(newCode);\n      }\n    };\n    const getCode = () => currentCode.get();\n    const add$1 = (code, items) => {\n      let langData = data[code];\n      if (!langData) {\n        data[code] = langData = {};\n      }\n      const lcNames = map$3(keys(items), name => name.toLowerCase());\n      each$d(items, (translation, name) => {\n        const lcName = name.toLowerCase();\n        if (lcName !== name && isDuplicated(lcNames, lcName)) {\n          if (!has$2(items, lcName)) {\n            langData[lcName] = translation;\n          }\n          langData[name] = translation;\n        } else {\n          langData[lcName] = translation;\n        }\n      });\n    };\n    const translate = text => {\n      const langData = getLanguageData().getOr({});\n      const toString = obj => {\n        if (isFunction(obj)) {\n          return Object.prototype.toString.call(obj);\n        }\n        return !isEmpty(obj) ? '' + obj : '';\n      };\n      const isEmpty = text => text === '' || text === null || text === undefined;\n      const getLangData = text => {\n        const textStr = toString(text);\n        return has$2(langData, textStr) ? toString(langData[textStr]) : get$a(langData, textStr.toLowerCase()).map(toString).getOr(textStr);\n      };\n      const removeContext = str => str.replace(/{context:\\w+}$/, '');\n      if (isEmpty(text)) {\n        return '';\n      }\n      if (isRaw(text)) {\n        return toString(text.raw);\n      }\n      if (isTokenised(text)) {\n        const values = text.slice(1);\n        const substitued = getLangData(text[0]).replace(/\\{([0-9]+)\\}/g, ($1, $2) => has$2(values, $2) ? toString(values[$2]) : $1);\n        return removeContext(substitued);\n      }\n      return removeContext(getLangData(text));\n    };\n    const isRtl$1 = () => getLanguageData().bind(items => get$a(items, '_dir')).exists(dir => dir === 'rtl');\n    const hasCode = code => has$2(data, code);\n    const I18n = {\n      getData: getData$1,\n      setCode,\n      getCode,\n      add: add$1,\n      translate,\n      isRtl: isRtl$1,\n      hasCode\n    };\n\n    const AddOnManager = () => {\n      const items = [];\n      const urls = {};\n      const lookup = {};\n      const _listeners = [];\n      const runListeners = (name, state) => {\n        const matchedListeners = filter$5(_listeners, listener => listener.name === name && listener.state === state);\n        each$e(matchedListeners, listener => listener.resolve());\n      };\n      const isLoaded = name => has$2(urls, name);\n      const isAdded = name => has$2(lookup, name);\n      const get = name => {\n        if (lookup[name]) {\n          return lookup[name].instance;\n        }\n        return undefined;\n      };\n      const loadLanguagePack = (name, languages) => {\n        const language = I18n.getCode();\n        const wrappedLanguages = ',' + (languages || '') + ',';\n        if (!language || languages && wrappedLanguages.indexOf(',' + language + ',') === -1) {\n          return;\n        }\n        ScriptLoader.ScriptLoader.add(urls[name] + '/langs/' + language + '.js');\n      };\n      const requireLangPack = (name, languages) => {\n        if (AddOnManager.languageLoad !== false) {\n          if (isLoaded(name)) {\n            loadLanguagePack(name, languages);\n          } else {\n            waitFor(name, 'loaded').then(() => loadLanguagePack(name, languages));\n          }\n        }\n      };\n      const add = (id, addOn) => {\n        items.push(addOn);\n        lookup[id] = {\n          instance: addOn\n        };\n        runListeners(id, 'added');\n        return addOn;\n      };\n      const remove = name => {\n        delete urls[name];\n        delete lookup[name];\n      };\n      const createUrl = (baseUrl, dep) => {\n        if (isString(dep)) {\n          return isString(baseUrl) ? {\n            prefix: '',\n            resource: dep,\n            suffix: ''\n          } : {\n            prefix: baseUrl.prefix,\n            resource: dep,\n            suffix: baseUrl.suffix\n          };\n        } else {\n          return dep;\n        }\n      };\n      const load = (name, addOnUrl) => {\n        if (urls[name]) {\n          return Promise.resolve();\n        }\n        let urlString = isString(addOnUrl) ? addOnUrl : addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;\n        if (urlString.indexOf('/') !== 0 && urlString.indexOf('://') === -1) {\n          urlString = AddOnManager.baseURL + '/' + urlString;\n        }\n        urls[name] = urlString.substring(0, urlString.lastIndexOf('/'));\n        const done = () => {\n          runListeners(name, 'loaded');\n          return Promise.resolve();\n        };\n        if (lookup[name]) {\n          return done();\n        } else {\n          return ScriptLoader.ScriptLoader.add(urlString).then(done);\n        }\n      };\n      const waitFor = (name, state = 'added') => {\n        if (state === 'added' && isAdded(name)) {\n          return Promise.resolve();\n        } else if (state === 'loaded' && isLoaded(name)) {\n          return Promise.resolve();\n        } else {\n          return new Promise(resolve => {\n            _listeners.push({\n              name,\n              state,\n              resolve\n            });\n          });\n        }\n      };\n      return {\n        items,\n        urls,\n        lookup,\n        get,\n        requireLangPack,\n        add,\n        remove,\n        createUrl,\n        load,\n        waitFor\n      };\n    };\n    AddOnManager.languageLoad = true;\n    AddOnManager.baseURL = '';\n    AddOnManager.PluginManager = AddOnManager();\n    AddOnManager.ThemeManager = AddOnManager();\n    AddOnManager.ModelManager = AddOnManager();\n\n    const singleton = doRevoke => {\n      const subject = Cell(Optional.none());\n      const revoke = () => subject.get().each(doRevoke);\n      const clear = () => {\n        revoke();\n        subject.set(Optional.none());\n      };\n      const isSet = () => subject.get().isSome();\n      const get = () => subject.get();\n      const set = s => {\n        revoke();\n        subject.set(Optional.some(s));\n      };\n      return {\n        clear,\n        isSet,\n        get,\n        set\n      };\n    };\n    const repeatable = delay => {\n      const intervalId = Cell(Optional.none());\n      const revoke = () => intervalId.get().each(id => clearInterval(id));\n      const clear = () => {\n        revoke();\n        intervalId.set(Optional.none());\n      };\n      const isSet = () => intervalId.get().isSome();\n      const get = () => intervalId.get();\n      const set = functionToRepeat => {\n        revoke();\n        intervalId.set(Optional.some(setInterval(functionToRepeat, delay)));\n      };\n      return {\n        clear,\n        isSet,\n        get,\n        set\n      };\n    };\n    const value$2 = () => {\n      const subject = singleton(noop);\n      const on = f => subject.get().each(f);\n      return {\n        ...subject,\n        on\n      };\n    };\n\n    const first$1 = (fn, rate) => {\n      let timer = null;\n      const cancel = () => {\n        if (!isNull(timer)) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      const throttle = (...args) => {\n        if (isNull(timer)) {\n          timer = setTimeout(() => {\n            timer = null;\n            fn.apply(null, args);\n          }, rate);\n        }\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n    const last$1 = (fn, rate) => {\n      let timer = null;\n      const cancel = () => {\n        if (!isNull(timer)) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      const throttle = (...args) => {\n        cancel();\n        timer = setTimeout(() => {\n          timer = null;\n          fn.apply(null, args);\n        }, rate);\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n\n    const annotation = constant('mce-annotation');\n    const dataAnnotation = constant('data-mce-annotation');\n    const dataAnnotationId = constant('data-mce-annotation-uid');\n    const dataAnnotationActive = constant('data-mce-annotation-active');\n    const dataAnnotationClasses = constant('data-mce-annotation-classes');\n    const dataAnnotationAttributes = constant('data-mce-annotation-attrs');\n\n    const isRoot$1 = root => node => eq(node, root);\n    const identify = (editor, annotationName) => {\n      const rng = editor.selection.getRng();\n      const start = SugarElement.fromDom(rng.startContainer);\n      const root = SugarElement.fromDom(editor.getBody());\n      const selector = annotationName.fold(() => '.' + annotation(), an => \"[\".concat(dataAnnotation(), \"=\\\"\").concat(an, \"\\\"]\"));\n      const newStart = child$1(start, rng.startOffset).getOr(start);\n      const closest = closest$3(newStart, selector, isRoot$1(root));\n      return closest.bind(c => getOpt(c, \"\".concat(dataAnnotationId())).bind(uid => getOpt(c, \"\".concat(dataAnnotation())).map(name => {\n        const elements = findMarkers(editor, uid);\n        return {\n          uid,\n          name,\n          elements\n        };\n      })));\n    };\n    const isAnnotation = elem => isElement$7(elem) && has(elem, annotation());\n    const isBogusElement = (elem, root) => has$1(elem, 'data-mce-bogus') || ancestor$2(elem, '[data-mce-bogus=\"all\"]', isRoot$1(root));\n    const findMarkers = (editor, uid) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      const descendants$1 = descendants(body, \"[\".concat(dataAnnotationId(), \"=\\\"\").concat(uid, \"\\\"]\"));\n      return filter$5(descendants$1, descendant => !isBogusElement(descendant, body));\n    };\n    const findAll = (editor, name) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      const markers = descendants(body, \"[\".concat(dataAnnotation(), \"=\\\"\").concat(name, \"\\\"]\"));\n      const directory = {};\n      each$e(markers, m => {\n        if (!isBogusElement(m, body)) {\n          const uid = get$9(m, dataAnnotationId());\n          const nodesAlready = get$a(directory, uid).getOr([]);\n          directory[uid] = nodesAlready.concat([m]);\n        }\n      });\n      return directory;\n    };\n\n    const setup$y = (editor, registry) => {\n      const changeCallbacks = Cell({});\n      const initData = () => ({\n        listeners: [],\n        previous: value$2()\n      });\n      const withCallbacks = (name, f) => {\n        updateCallbacks(name, data => {\n          f(data);\n          return data;\n        });\n      };\n      const updateCallbacks = (name, f) => {\n        const callbackMap = changeCallbacks.get();\n        const data = get$a(callbackMap, name).getOrThunk(initData);\n        const outputData = f(data);\n        callbackMap[name] = outputData;\n        changeCallbacks.set(callbackMap);\n      };\n      const fireCallbacks = (name, uid, elements) => {\n        withCallbacks(name, data => {\n          each$e(data.listeners, f => f(true, name, {\n            uid,\n            nodes: map$3(elements, elem => elem.dom)\n          }));\n        });\n      };\n      const fireNoAnnotation = name => {\n        withCallbacks(name, data => {\n          each$e(data.listeners, f => f(false, name));\n        });\n      };\n      const toggleActiveAttr = (uid, state) => {\n        each$e(findMarkers(editor, uid), elem => {\n          if (state) {\n            set$3(elem, dataAnnotationActive(), 'true');\n          } else {\n            remove$a(elem, dataAnnotationActive());\n          }\n        });\n      };\n      const onNodeChange = last$1(() => {\n        const annotations = sort(registry.getNames());\n        each$e(annotations, name => {\n          updateCallbacks(name, data => {\n            const prev = data.previous.get();\n            identify(editor, Optional.some(name)).fold(() => {\n              prev.each(uid => {\n                fireNoAnnotation(name);\n                data.previous.clear();\n                toggleActiveAttr(uid, false);\n              });\n            }, ({\n              uid,\n              name,\n              elements\n            }) => {\n              if (!is$2(prev, uid)) {\n                prev.each(uid => toggleActiveAttr(uid, false));\n                fireCallbacks(name, uid, elements);\n                data.previous.set(uid);\n                toggleActiveAttr(uid, true);\n              }\n            });\n            return {\n              previous: data.previous,\n              listeners: data.listeners\n            };\n          });\n        });\n      }, 30);\n      editor.on('remove', () => {\n        onNodeChange.cancel();\n      });\n      editor.on('NodeChange', () => {\n        onNodeChange.throttle();\n      });\n      const addListener = (name, f) => {\n        updateCallbacks(name, data => ({\n          previous: data.previous,\n          listeners: data.listeners.concat([f])\n        }));\n      };\n      return {\n        addListener\n      };\n    };\n\n    const setup$x = (editor, registry) => {\n      const dataAnnotation$1 = dataAnnotation();\n      const identifyParserNode = node => Optional.from(node.attr(dataAnnotation$1)).bind(registry.lookup);\n      const removeDirectAnnotation = node => {\n        var _a, _b;\n        node.attr(dataAnnotationId(), null);\n        node.attr(dataAnnotation(), null);\n        node.attr(dataAnnotationActive(), null);\n        const customAttrNames = Optional.from(node.attr(dataAnnotationAttributes())).map(names => names.split(',')).getOr([]);\n        const customClasses = Optional.from(node.attr(dataAnnotationClasses())).map(names => names.split(',')).getOr([]);\n        each$e(customAttrNames, name => node.attr(name, null));\n        const classList = (_b = (_a = node.attr('class')) === null || _a === void 0 ? void 0 : _a.split(' ')) !== null && _b !== void 0 ? _b : [];\n        const newClassList = difference(classList, [annotation()].concat(customClasses));\n        node.attr('class', newClassList.length > 0 ? newClassList.join(' ') : null);\n        node.attr(dataAnnotationClasses(), null);\n        node.attr(dataAnnotationAttributes(), null);\n      };\n      editor.serializer.addTempAttr(dataAnnotationActive());\n      editor.serializer.addAttributeFilter(dataAnnotation$1, nodes => {\n        for (const node of nodes) {\n          identifyParserNode(node).each(settings => {\n            if (settings.persistent === false) {\n              if (node.name === 'span') {\n                node.unwrap();\n              } else {\n                removeDirectAnnotation(node);\n              }\n            }\n          });\n        }\n      });\n    };\n\n    const create$c = () => {\n      const annotations = {};\n      const register = (name, settings) => {\n        annotations[name] = {\n          name,\n          settings\n        };\n      };\n      const lookup = name => get$a(annotations, name).map(a => a.settings);\n      const getNames = () => keys(annotations);\n      return {\n        register,\n        lookup,\n        getNames\n      };\n    };\n\n    let unique = 0;\n    const generate$1 = prefix => {\n      const date = new Date();\n      const time = date.getTime();\n      const random = Math.floor(Math.random() * 1000000000);\n      unique++;\n      return prefix + '_' + random + unique + String(time);\n    };\n\n    const add = (element, classes) => {\n      each$e(classes, x => {\n        add$2(element, x);\n      });\n    };\n    const remove$4 = (element, classes) => {\n      each$e(classes, x => {\n        remove$7(element, x);\n      });\n    };\n\n    const clone$2 = (original, isDeep) => SugarElement.fromDom(original.dom.cloneNode(isDeep));\n    const shallow$1 = original => clone$2(original, false);\n    const deep$1 = original => clone$2(original, true);\n    const shallowAs = (original, tag) => {\n      const nu = SugarElement.fromTag(tag);\n      const attributes = clone$4(original);\n      setAll$1(nu, attributes);\n      return nu;\n    };\n    const mutate = (original, tag) => {\n      const nu = shallowAs(original, tag);\n      after$4(original, nu);\n      const children = children$1(original);\n      append(nu, children);\n      remove$5(original);\n      return nu;\n    };\n\n    const TextWalker = (startNode, rootNode, isBoundary = never) => {\n      const walker = new DomTreeWalker(startNode, rootNode);\n      const walk = direction => {\n        let next;\n        do {\n          next = walker[direction]();\n        } while (next && !isText$a(next) && !isBoundary(next));\n        return Optional.from(next).filter(isText$a);\n      };\n      return {\n        current: () => Optional.from(walker.current()).filter(isText$a),\n        next: () => walk('next'),\n        prev: () => walk('prev'),\n        prev2: () => walk('prev2')\n      };\n    };\n\n    const TextSeeker = (dom, isBoundary) => {\n      const isBlockBoundary = isBoundary ? isBoundary : node => dom.isBlock(node) || isBr$6(node) || isContentEditableFalse$b(node);\n      const walk = (node, offset, walker, process) => {\n        if (isText$a(node)) {\n          const newOffset = process(node, offset, node.data);\n          if (newOffset !== -1) {\n            return Optional.some({\n              container: node,\n              offset: newOffset\n            });\n          }\n        }\n        return walker().bind(next => walk(next.container, next.offset, walker, process));\n      };\n      const backwards = (node, offset, process, root) => {\n        const walker = TextWalker(node, root !== null && root !== void 0 ? root : dom.getRoot(), isBlockBoundary);\n        return walk(node, offset, () => walker.prev().map(prev => ({\n          container: prev,\n          offset: prev.length\n        })), process).getOrNull();\n      };\n      const forwards = (node, offset, process, root) => {\n        const walker = TextWalker(node, root !== null && root !== void 0 ? root : dom.getRoot(), isBlockBoundary);\n        return walk(node, offset, () => walker.next().map(next => ({\n          container: next,\n          offset: 0\n        })), process).getOrNull();\n      };\n      return {\n        backwards,\n        forwards\n      };\n    };\n\n    const round$2 = Math.round;\n    const clone$1 = rect => {\n      if (!rect) {\n        return {\n          left: 0,\n          top: 0,\n          bottom: 0,\n          right: 0,\n          width: 0,\n          height: 0\n        };\n      }\n      return {\n        left: round$2(rect.left),\n        top: round$2(rect.top),\n        bottom: round$2(rect.bottom),\n        right: round$2(rect.right),\n        width: round$2(rect.width),\n        height: round$2(rect.height)\n      };\n    };\n    const collapse = (rect, toStart) => {\n      rect = clone$1(rect);\n      if (toStart) {\n        rect.right = rect.left;\n      } else {\n        rect.left = rect.left + rect.width;\n        rect.right = rect.left;\n      }\n      rect.width = 0;\n      return rect;\n    };\n    const isEqual = (rect1, rect2) => rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right;\n    const isValidOverflow = (overflowY, rect1, rect2) => overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2;\n    const isAbove$1 = (rect1, rect2) => {\n      const halfHeight = Math.min(rect2.height / 2, rect1.height / 2);\n      if (rect1.bottom - halfHeight < rect2.top) {\n        return true;\n      }\n      if (rect1.top > rect2.bottom) {\n        return false;\n      }\n      return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2);\n    };\n    const isBelow$1 = (rect1, rect2) => {\n      if (rect1.top > rect2.bottom) {\n        return true;\n      }\n      if (rect1.bottom < rect2.top) {\n        return false;\n      }\n      return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2);\n    };\n    const containsXY = (rect, clientX, clientY) => clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;\n    const boundingClientRectFromRects = rects => {\n      return foldl(rects, (acc, rect) => {\n        return acc.fold(() => Optional.some(rect), prevRect => {\n          const left = Math.min(rect.left, prevRect.left);\n          const top = Math.min(rect.top, prevRect.top);\n          const right = Math.max(rect.right, prevRect.right);\n          const bottom = Math.max(rect.bottom, prevRect.bottom);\n          return Optional.some({\n            top,\n            right,\n            bottom,\n            left,\n            width: right - left,\n            height: bottom - top\n          });\n        });\n      }, Optional.none());\n    };\n    const distanceToRectEdgeFromXY = (rect, x, y) => {\n      const cx = Math.max(Math.min(x, rect.left + rect.width), rect.left);\n      const cy = Math.max(Math.min(y, rect.top + rect.height), rect.top);\n      return Math.sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy));\n    };\n    const overlapY = (r1, r2) => Math.max(0, Math.min(r1.bottom, r2.bottom) - Math.max(r1.top, r2.top));\n\n    const clamp$2 = (value, min, max) => Math.min(Math.max(value, min), max);\n\n    const getSelectedNode = range => {\n      const startContainer = range.startContainer,\n        startOffset = range.startOffset;\n      if (startContainer === range.endContainer && startContainer.hasChildNodes() && range.endOffset === startOffset + 1) {\n        return startContainer.childNodes[startOffset];\n      }\n      return null;\n    };\n    const getNode$1 = (container, offset) => {\n      if (isElement$6(container) && container.hasChildNodes()) {\n        const childNodes = container.childNodes;\n        const safeOffset = clamp$2(offset, 0, childNodes.length - 1);\n        return childNodes[safeOffset];\n      } else {\n        return container;\n      }\n    };\n    const getNodeUnsafe = (container, offset) => {\n      if (offset < 0 && isElement$6(container) && container.hasChildNodes()) {\n        return undefined;\n      } else {\n        return getNode$1(container, offset);\n      }\n    };\n\n    const extendingChars = new RegExp('[\\u0300-\\u036f\\u0483-\\u0487\\u0488-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u0610-\\u061a' + '\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7-\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0' + '\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08e3-\\u0902\\u093a\\u093c' + '\\u0941-\\u0948\\u094d\\u0951-\\u0957\\u0962-\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2-\\u09e3' + '\\u0a01-\\u0a02\\u0a3c\\u0a41-\\u0a42\\u0a47-\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70-\\u0a71\\u0a75\\u0a81-\\u0a82\\u0abc' + '\\u0ac1-\\u0ac5\\u0ac7-\\u0ac8\\u0acd\\u0ae2-\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57' + '\\u0b62-\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c00\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55-\\u0c56' + '\\u0c62-\\u0c63\\u0c81\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc-\\u0ccd\\u0cd5-\\u0cd6\\u0ce2-\\u0ce3\\u0d01\\u0d3e\\u0d41-\\u0d44' + '\\u0d4d\\u0d57\\u0d62-\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9' + '\\u0ebb-\\u0ebc\\u0ec8-\\u0ecd\\u0f18-\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97' + '\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039-\\u103a\\u103d-\\u103e\\u1058-\\u1059\\u105e-\\u1060\\u1071-\\u1074' + '\\u1082\\u1085-\\u1086\\u108d\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752-\\u1753\\u1772-\\u1773\\u17b4-\\u17b5' + '\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927-\\u1928\\u1932\\u1939-\\u193b\\u1a17-\\u1a18' + '\\u1a1b\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1ab0-\\u1abd\\u1ABE\\u1b00-\\u1b03\\u1b34' + '\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80-\\u1b81\\u1ba2-\\u1ba5\\u1ba8-\\u1ba9\\u1bab-\\u1bad\\u1be6\\u1be8-\\u1be9' + '\\u1bed\\u1bef-\\u1bf1\\u1c2c-\\u1c33\\u1c36-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1cf4\\u1cf8-\\u1cf9' + '\\u1dc0-\\u1df5\\u1dfc-\\u1dff\\u200c-\\u200d\\u20d0-\\u20dc\\u20DD-\\u20E0\\u20e1\\u20E2-\\u20E4\\u20e5-\\u20f0\\u2cef-\\u2cf1' + '\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302d\\u302e-\\u302f\\u3099-\\u309a\\ua66f\\uA670-\\uA672\\ua674-\\ua67d\\ua69e-\\ua69f\\ua6f0-\\ua6f1' + '\\ua802\\ua806\\ua80b\\ua825-\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc' + '\\ua9e5\\uaa29-\\uaa2e\\uaa31-\\uaa32\\uaa35-\\uaa36\\uaa43\\uaa4c\\uaa7c\\uaab0\\uaab2-\\uaab4\\uaab7-\\uaab8\\uaabe-\\uaabf\\uaac1' + '\\uaaec-\\uaaed\\uaaf6\\uabe5\\uabe8\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\uff9e-\\uff9f]');\n    const isExtendingChar = ch => isString(ch) && ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n\n    const or = (...args) => {\n      return x => {\n        for (let i = 0; i < args.length; i++) {\n          if (args[i](x)) {\n            return true;\n          }\n        }\n        return false;\n      };\n    };\n    const and = (...args) => {\n      return x => {\n        for (let i = 0; i < args.length; i++) {\n          if (!args[i](x)) {\n            return false;\n          }\n        }\n        return true;\n      };\n    };\n\n    const isElement$4 = isElement$6;\n    const isCaretCandidate$2 = isCaretCandidate$3;\n    const isBlock$2 = matchStyleValues('display', 'block table');\n    const isFloated = matchStyleValues('float', 'left right');\n    const isValidElementCaretCandidate = and(isElement$4, isCaretCandidate$2, not(isFloated));\n    const isNotPre = not(matchStyleValues('white-space', 'pre pre-line pre-wrap'));\n    const isText$7 = isText$a;\n    const isBr$3 = isBr$6;\n    const nodeIndex$1 = DOMUtils.nodeIndex;\n    const resolveIndex$1 = getNodeUnsafe;\n    const createRange$1 = doc => doc ? doc.createRange() : DOMUtils.DOM.createRng();\n    const isWhiteSpace$1 = chr => isString(chr) && /[\\r\\n\\t ]/.test(chr);\n    const isRange = rng => !!rng.setStart && !!rng.setEnd;\n    const isHiddenWhiteSpaceRange = range => {\n      const container = range.startContainer;\n      const offset = range.startOffset;\n      if (isWhiteSpace$1(range.toString()) && isNotPre(container.parentNode) && isText$a(container)) {\n        const text = container.data;\n        if (isWhiteSpace$1(text[offset - 1]) || isWhiteSpace$1(text[offset + 1])) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const getBrClientRect = brNode => {\n      const doc = brNode.ownerDocument;\n      const rng = createRange$1(doc);\n      const nbsp$1 = doc.createTextNode(nbsp);\n      const parentNode = brNode.parentNode;\n      parentNode.insertBefore(nbsp$1, brNode);\n      rng.setStart(nbsp$1, 0);\n      rng.setEnd(nbsp$1, 1);\n      const clientRect = clone$1(rng.getBoundingClientRect());\n      parentNode.removeChild(nbsp$1);\n      return clientRect;\n    };\n    const getBoundingClientRectWebKitText = rng => {\n      const sc = rng.startContainer;\n      const ec = rng.endContainer;\n      const so = rng.startOffset;\n      const eo = rng.endOffset;\n      if (sc === ec && isText$a(ec) && so === 0 && eo === 1) {\n        const newRng = rng.cloneRange();\n        newRng.setEndAfter(ec);\n        return getBoundingClientRect$1(newRng);\n      } else {\n        return null;\n      }\n    };\n    const isZeroRect = r => r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0;\n    const getBoundingClientRect$1 = item => {\n      var _a;\n      let clientRect;\n      const clientRects = item.getClientRects();\n      if (clientRects.length > 0) {\n        clientRect = clone$1(clientRects[0]);\n      } else {\n        clientRect = clone$1(item.getBoundingClientRect());\n      }\n      if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) {\n        return getBrClientRect(item);\n      }\n      if (isZeroRect(clientRect) && isRange(item)) {\n        return (_a = getBoundingClientRectWebKitText(item)) !== null && _a !== void 0 ? _a : clientRect;\n      }\n      return clientRect;\n    };\n    const collapseAndInflateWidth = (clientRect, toStart) => {\n      const newClientRect = collapse(clientRect, toStart);\n      newClientRect.width = 1;\n      newClientRect.right = newClientRect.left + 1;\n      return newClientRect;\n    };\n    const getCaretPositionClientRects = caretPosition => {\n      const clientRects = [];\n      const addUniqueAndValidRect = clientRect => {\n        if (clientRect.height === 0) {\n          return;\n        }\n        if (clientRects.length > 0) {\n          if (isEqual(clientRect, clientRects[clientRects.length - 1])) {\n            return;\n          }\n        }\n        clientRects.push(clientRect);\n      };\n      const addCharacterOffset = (container, offset) => {\n        const range = createRange$1(container.ownerDocument);\n        if (offset < container.data.length) {\n          if (isExtendingChar(container.data[offset])) {\n            return;\n          }\n          if (isExtendingChar(container.data[offset - 1])) {\n            range.setStart(container, offset);\n            range.setEnd(container, offset + 1);\n            if (!isHiddenWhiteSpaceRange(range)) {\n              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(range), false));\n              return;\n            }\n          }\n        }\n        if (offset > 0) {\n          range.setStart(container, offset - 1);\n          range.setEnd(container, offset);\n          if (!isHiddenWhiteSpaceRange(range)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(range), false));\n          }\n        }\n        if (offset < container.data.length) {\n          range.setStart(container, offset);\n          range.setEnd(container, offset + 1);\n          if (!isHiddenWhiteSpaceRange(range)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(range), true));\n          }\n        }\n      };\n      const container = caretPosition.container();\n      const offset = caretPosition.offset();\n      if (isText$7(container)) {\n        addCharacterOffset(container, offset);\n        return clientRects;\n      }\n      if (isElement$4(container)) {\n        if (caretPosition.isAtEnd()) {\n          const node = resolveIndex$1(container, offset);\n          if (isText$7(node)) {\n            addCharacterOffset(node, node.data.length);\n          }\n          if (isValidElementCaretCandidate(node) && !isBr$3(node)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(node), false));\n          }\n        } else {\n          const node = resolveIndex$1(container, offset);\n          if (isText$7(node)) {\n            addCharacterOffset(node, 0);\n          }\n          if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(node), false));\n            return clientRects;\n          }\n          const beforeNode = resolveIndex$1(caretPosition.container(), caretPosition.offset() - 1);\n          if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) {\n            if (isBlock$2(beforeNode) || isBlock$2(node) || !isValidElementCaretCandidate(node)) {\n              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(beforeNode), false));\n            }\n          }\n          if (isValidElementCaretCandidate(node)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(node), true));\n          }\n        }\n      }\n      return clientRects;\n    };\n    const CaretPosition = (container, offset, clientRects) => {\n      const isAtStart = () => {\n        if (isText$7(container)) {\n          return offset === 0;\n        }\n        return offset === 0;\n      };\n      const isAtEnd = () => {\n        if (isText$7(container)) {\n          return offset >= container.data.length;\n        }\n        return offset >= container.childNodes.length;\n      };\n      const toRange = () => {\n        const range = createRange$1(container.ownerDocument);\n        range.setStart(container, offset);\n        range.setEnd(container, offset);\n        return range;\n      };\n      const getClientRects = () => {\n        if (!clientRects) {\n          clientRects = getCaretPositionClientRects(CaretPosition(container, offset));\n        }\n        return clientRects;\n      };\n      const isVisible = () => getClientRects().length > 0;\n      const isEqual = caretPosition => caretPosition && container === caretPosition.container() && offset === caretPosition.offset();\n      const getNode = before => resolveIndex$1(container, before ? offset - 1 : offset);\n      return {\n        container: constant(container),\n        offset: constant(offset),\n        toRange,\n        getClientRects,\n        isVisible,\n        isAtStart,\n        isAtEnd,\n        isEqual,\n        getNode\n      };\n    };\n    CaretPosition.fromRangeStart = range => CaretPosition(range.startContainer, range.startOffset);\n    CaretPosition.fromRangeEnd = range => CaretPosition(range.endContainer, range.endOffset);\n    CaretPosition.after = node => CaretPosition(node.parentNode, nodeIndex$1(node) + 1);\n    CaretPosition.before = node => CaretPosition(node.parentNode, nodeIndex$1(node));\n    CaretPosition.isAbove = (pos1, pos2) => lift2(head(pos2.getClientRects()), last$3(pos1.getClientRects()), isAbove$1).getOr(false);\n    CaretPosition.isBelow = (pos1, pos2) => lift2(last$3(pos2.getClientRects()), head(pos1.getClientRects()), isBelow$1).getOr(false);\n    CaretPosition.isAtStart = pos => pos ? pos.isAtStart() : false;\n    CaretPosition.isAtEnd = pos => pos ? pos.isAtEnd() : false;\n    CaretPosition.isTextPosition = pos => pos ? isText$a(pos.container()) : false;\n    CaretPosition.isElementPosition = pos => !CaretPosition.isTextPosition(pos);\n\n    const trimEmptyTextNode$1 = (dom, node) => {\n      if (isText$a(node) && node.data.length === 0) {\n        dom.remove(node);\n      }\n    };\n    const insertNode = (dom, rng, node) => {\n      rng.insertNode(node);\n      trimEmptyTextNode$1(dom, node.previousSibling);\n      trimEmptyTextNode$1(dom, node.nextSibling);\n    };\n    const insertFragment = (dom, rng, frag) => {\n      const firstChild = Optional.from(frag.firstChild);\n      const lastChild = Optional.from(frag.lastChild);\n      rng.insertNode(frag);\n      firstChild.each(child => trimEmptyTextNode$1(dom, child.previousSibling));\n      lastChild.each(child => trimEmptyTextNode$1(dom, child.nextSibling));\n    };\n    const rangeInsertNode = (dom, rng, node) => {\n      if (isDocumentFragment(node)) {\n        insertFragment(dom, rng, node);\n      } else {\n        insertNode(dom, rng, node);\n      }\n    };\n\n    const isText$6 = isText$a;\n    const isBogus = isBogus$2;\n    const nodeIndex = DOMUtils.nodeIndex;\n    const normalizedParent = node => {\n      const parentNode = node.parentNode;\n      if (isBogus(parentNode)) {\n        return normalizedParent(parentNode);\n      }\n      return parentNode;\n    };\n    const getChildNodes = node => {\n      if (!node) {\n        return [];\n      }\n      return reduce(node.childNodes, (result, node) => {\n        if (isBogus(node) && node.nodeName !== 'BR') {\n          result = result.concat(getChildNodes(node));\n        } else {\n          result.push(node);\n        }\n        return result;\n      }, []);\n    };\n    const normalizedTextOffset = (node, offset) => {\n      let tempNode = node;\n      while (tempNode = tempNode.previousSibling) {\n        if (!isText$6(tempNode)) {\n          break;\n        }\n        offset += tempNode.data.length;\n      }\n      return offset;\n    };\n    const equal = a => b => a === b;\n    const normalizedNodeIndex = node => {\n      let nodes, index;\n      nodes = getChildNodes(normalizedParent(node));\n      index = findIndex$1(nodes, equal(node), node);\n      nodes = nodes.slice(0, index + 1);\n      const numTextFragments = reduce(nodes, (result, node, i) => {\n        if (isText$6(node) && isText$6(nodes[i - 1])) {\n          result++;\n        }\n        return result;\n      }, 0);\n      nodes = filter$3(nodes, matchNodeNames([node.nodeName]));\n      index = findIndex$1(nodes, equal(node), node);\n      return index - numTextFragments;\n    };\n    const createPathItem = node => {\n      const name = isText$6(node) ? 'text()' : node.nodeName.toLowerCase();\n      return name + '[' + normalizedNodeIndex(node) + ']';\n    };\n    const parentsUntil$1 = (root, node, predicate) => {\n      const parents = [];\n      for (let tempNode = node.parentNode; tempNode && tempNode !== root; tempNode = tempNode.parentNode) {\n        if (predicate && predicate(tempNode)) {\n          break;\n        }\n        parents.push(tempNode);\n      }\n      return parents;\n    };\n    const create$b = (root, caretPosition) => {\n      let path = [];\n      let container = caretPosition.container();\n      let offset = caretPosition.offset();\n      let outputOffset;\n      if (isText$6(container)) {\n        outputOffset = normalizedTextOffset(container, offset);\n      } else {\n        const childNodes = container.childNodes;\n        if (offset >= childNodes.length) {\n          outputOffset = 'after';\n          offset = childNodes.length - 1;\n        } else {\n          outputOffset = 'before';\n        }\n        container = childNodes[offset];\n      }\n      path.push(createPathItem(container));\n      let parents = parentsUntil$1(root, container);\n      parents = filter$3(parents, not(isBogus$2));\n      path = path.concat(map$1(parents, node => {\n        return createPathItem(node);\n      }));\n      return path.reverse().join('/') + ',' + outputOffset;\n    };\n    const resolvePathItem = (node, name, index) => {\n      let nodes = getChildNodes(node);\n      nodes = filter$3(nodes, (node, index) => {\n        return !isText$6(node) || !isText$6(nodes[index - 1]);\n      });\n      nodes = filter$3(nodes, matchNodeNames([name]));\n      return nodes[index];\n    };\n    const findTextPosition = (container, offset) => {\n      let node = container;\n      let targetOffset = 0;\n      while (isText$6(node)) {\n        const dataLen = node.data.length;\n        if (offset >= targetOffset && offset <= targetOffset + dataLen) {\n          container = node;\n          offset = offset - targetOffset;\n          break;\n        }\n        if (!isText$6(node.nextSibling)) {\n          container = node;\n          offset = dataLen;\n          break;\n        }\n        targetOffset += dataLen;\n        node = node.nextSibling;\n      }\n      if (isText$6(container) && offset > container.data.length) {\n        offset = container.data.length;\n      }\n      return CaretPosition(container, offset);\n    };\n    const resolve$1 = (root, path) => {\n      if (!path) {\n        return null;\n      }\n      const parts = path.split(',');\n      const paths = parts[0].split('/');\n      const offset = parts.length > 1 ? parts[1] : 'before';\n      const container = reduce(paths, (result, value) => {\n        const match = /([\\w\\-\\(\\)]+)\\[([0-9]+)\\]/.exec(value);\n        if (!match) {\n          return null;\n        }\n        if (match[1] === 'text()') {\n          match[1] = '#text';\n        }\n        return resolvePathItem(result, match[1], parseInt(match[2], 10));\n      }, root);\n      if (!container) {\n        return null;\n      }\n      if (!isText$6(container) && container.parentNode) {\n        let nodeOffset;\n        if (offset === 'after') {\n          nodeOffset = nodeIndex(container) + 1;\n        } else {\n          nodeOffset = nodeIndex(container);\n        }\n        return CaretPosition(container.parentNode, nodeOffset);\n      }\n      return findTextPosition(container, parseInt(offset, 10));\n    };\n\n    const isContentEditableFalse$9 = isContentEditableFalse$b;\n    const getNormalizedTextOffset$1 = (trim, container, offset) => {\n      let trimmedOffset = trim(container.data.slice(0, offset)).length;\n      for (let node = container.previousSibling; node && isText$a(node); node = node.previousSibling) {\n        trimmedOffset += trim(node.data).length;\n      }\n      return trimmedOffset;\n    };\n    const getPoint = (dom, trim, normalized, rng, start) => {\n      const container = start ? rng.startContainer : rng.endContainer;\n      let offset = start ? rng.startOffset : rng.endOffset;\n      const point = [];\n      const root = dom.getRoot();\n      if (isText$a(container)) {\n        point.push(normalized ? getNormalizedTextOffset$1(trim, container, offset) : offset);\n      } else {\n        let after = 0;\n        const childNodes = container.childNodes;\n        if (offset >= childNodes.length && childNodes.length) {\n          after = 1;\n          offset = Math.max(0, childNodes.length - 1);\n        }\n        point.push(dom.nodeIndex(childNodes[offset], normalized) + after);\n      }\n      for (let node = container; node && node !== root; node = node.parentNode) {\n        point.push(dom.nodeIndex(node, normalized));\n      }\n      return point;\n    };\n    const getLocation = (trim, selection, normalized, rng) => {\n      const dom = selection.dom;\n      const start = getPoint(dom, trim, normalized, rng, true);\n      const forward = selection.isForward();\n      const fakeCaret = isRangeInCaretContainerBlock(rng) ? {\n        isFakeCaret: true\n      } : {};\n      if (!selection.isCollapsed()) {\n        const end = getPoint(dom, trim, normalized, rng, false);\n        return {\n          start,\n          end,\n          forward,\n          ...fakeCaret\n        };\n      } else {\n        return {\n          start,\n          forward,\n          ...fakeCaret\n        };\n      }\n    };\n    const findIndex = (dom, name, element) => {\n      let count = 0;\n      Tools.each(dom.select(name), node => {\n        if (node.getAttribute('data-mce-bogus') === 'all') {\n          return;\n        } else if (node === element) {\n          return false;\n        } else {\n          count++;\n          return;\n        }\n      });\n      return count;\n    };\n    const moveEndPoint$1 = (rng, start) => {\n      let container = start ? rng.startContainer : rng.endContainer;\n      let offset = start ? rng.startOffset : rng.endOffset;\n      if (isElement$6(container) && container.nodeName === 'TR') {\n        const childNodes = container.childNodes;\n        container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];\n        if (container) {\n          offset = start ? 0 : container.childNodes.length;\n          if (start) {\n            rng.setStart(container, offset);\n          } else {\n            rng.setEnd(container, offset);\n          }\n        }\n      }\n    };\n    const normalizeTableCellSelection = rng => {\n      moveEndPoint$1(rng, true);\n      moveEndPoint$1(rng, false);\n      return rng;\n    };\n    const findSibling = (node, offset) => {\n      if (isElement$6(node)) {\n        node = getNode$1(node, offset);\n        if (isContentEditableFalse$9(node)) {\n          return node;\n        }\n      }\n      if (isCaretContainer$2(node)) {\n        if (isText$a(node) && isCaretContainerBlock$1(node)) {\n          node = node.parentNode;\n        }\n        let sibling = node.previousSibling;\n        if (isContentEditableFalse$9(sibling)) {\n          return sibling;\n        }\n        sibling = node.nextSibling;\n        if (isContentEditableFalse$9(sibling)) {\n          return sibling;\n        }\n      }\n      return undefined;\n    };\n    const findAdjacentContentEditableFalseElm = rng => {\n      return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset);\n    };\n    const getOffsetBookmark = (trim, normalized, selection) => {\n      const element = selection.getNode();\n      const rng = selection.getRng();\n      if (element.nodeName === 'IMG' || isContentEditableFalse$9(element)) {\n        const name = element.nodeName;\n        return {\n          name,\n          index: findIndex(selection.dom, name, element)\n        };\n      }\n      const sibling = findAdjacentContentEditableFalseElm(rng);\n      if (sibling) {\n        const name = sibling.tagName;\n        return {\n          name,\n          index: findIndex(selection.dom, name, sibling)\n        };\n      }\n      return getLocation(trim, selection, normalized, rng);\n    };\n    const getCaretBookmark = selection => {\n      const rng = selection.getRng();\n      return {\n        start: create$b(selection.dom.getRoot(), CaretPosition.fromRangeStart(rng)),\n        end: create$b(selection.dom.getRoot(), CaretPosition.fromRangeEnd(rng)),\n        forward: selection.isForward()\n      };\n    };\n    const getRangeBookmark = selection => {\n      return {\n        rng: selection.getRng(),\n        forward: selection.isForward()\n      };\n    };\n    const createBookmarkSpan = (dom, id, filled) => {\n      const args = {\n        'data-mce-type': 'bookmark',\n        id,\n        'style': 'overflow:hidden;line-height:0px'\n      };\n      return filled ? dom.create('span', args, '&#xFEFF;') : dom.create('span', args);\n    };\n    const getPersistentBookmark = (selection, filled) => {\n      const dom = selection.dom;\n      let rng = selection.getRng();\n      const id = dom.uniqueId();\n      const collapsed = selection.isCollapsed();\n      const element = selection.getNode();\n      const name = element.nodeName;\n      const forward = selection.isForward();\n      if (name === 'IMG') {\n        return {\n          name,\n          index: findIndex(dom, name, element)\n        };\n      }\n      const rng2 = normalizeTableCellSelection(rng.cloneRange());\n      if (!collapsed) {\n        rng2.collapse(false);\n        const endBookmarkNode = createBookmarkSpan(dom, id + '_end', filled);\n        rangeInsertNode(dom, rng2, endBookmarkNode);\n      }\n      rng = normalizeTableCellSelection(rng);\n      rng.collapse(true);\n      const startBookmarkNode = createBookmarkSpan(dom, id + '_start', filled);\n      rangeInsertNode(dom, rng, startBookmarkNode);\n      selection.moveToBookmark({\n        id,\n        keep: true,\n        forward\n      });\n      return {\n        id,\n        forward\n      };\n    };\n    const getBookmark$2 = (selection, type, normalized = false) => {\n      if (type === 2) {\n        return getOffsetBookmark(trim$2, normalized, selection);\n      } else if (type === 3) {\n        return getCaretBookmark(selection);\n      } else if (type) {\n        return getRangeBookmark(selection);\n      } else {\n        return getPersistentBookmark(selection, false);\n      }\n    };\n    const getUndoBookmark = curry(getOffsetBookmark, identity, true);\n\n    const value$1 = value => {\n      const applyHelper = fn => fn(value);\n      const constHelper = constant(value);\n      const outputHelper = () => output;\n      const output = {\n        tag: true,\n        inner: value,\n        fold: (_onError, onValue) => onValue(value),\n        isValue: always,\n        isError: never,\n        map: mapper => Result.value(mapper(value)),\n        mapError: outputHelper,\n        bind: applyHelper,\n        exists: applyHelper,\n        forall: applyHelper,\n        getOr: constHelper,\n        or: outputHelper,\n        getOrThunk: constHelper,\n        orThunk: outputHelper,\n        getOrDie: constHelper,\n        each: fn => {\n          fn(value);\n        },\n        toOptional: () => Optional.some(value)\n      };\n      return output;\n    };\n    const error = error => {\n      const outputHelper = () => output;\n      const output = {\n        tag: false,\n        inner: error,\n        fold: (onError, _onValue) => onError(error),\n        isValue: never,\n        isError: always,\n        map: outputHelper,\n        mapError: mapper => Result.error(mapper(error)),\n        bind: outputHelper,\n        exists: never,\n        forall: always,\n        getOr: identity,\n        or: identity,\n        getOrThunk: apply$1,\n        orThunk: apply$1,\n        getOrDie: die(String(error)),\n        each: noop,\n        toOptional: Optional.none\n      };\n      return output;\n    };\n    const fromOption = (optional, err) => optional.fold(() => error(err), value$1);\n    const Result = {\n      value: value$1,\n      error,\n      fromOption\n    };\n\n    const generate = cases => {\n      if (!isArray$1(cases)) {\n        throw new Error('cases must be an array');\n      }\n      if (cases.length === 0) {\n        throw new Error('there must be at least one case');\n      }\n      const constructors = [];\n      const adt = {};\n      each$e(cases, (acase, count) => {\n        const keys$1 = keys(acase);\n        if (keys$1.length !== 1) {\n          throw new Error('one and only one name per case');\n        }\n        const key = keys$1[0];\n        const value = acase[key];\n        if (adt[key] !== undefined) {\n          throw new Error('duplicate key detected:' + key);\n        } else if (key === 'cata') {\n          throw new Error('cannot have a case named cata (sorry)');\n        } else if (!isArray$1(value)) {\n          throw new Error('case arguments must be an array');\n        }\n        constructors.push(key);\n        adt[key] = (...args) => {\n          const argLength = args.length;\n          if (argLength !== value.length) {\n            throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n          }\n          const match = branches => {\n            const branchKeys = keys(branches);\n            if (constructors.length !== branchKeys.length) {\n              throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n            }\n            const allReqd = forall(constructors, reqKey => {\n              return contains$2(branchKeys, reqKey);\n            });\n            if (!allReqd) {\n              throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n            }\n            return branches[key].apply(null, args);\n          };\n          return {\n            fold: (...foldArgs) => {\n              if (foldArgs.length !== cases.length) {\n                throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length);\n              }\n              const target = foldArgs[count];\n              return target.apply(null, args);\n            },\n            match,\n            log: label => {\n              console.log(label, {\n                constructors,\n                constructor: key,\n                params: args\n              });\n            }\n          };\n        };\n      });\n      return adt;\n    };\n    const Adt = {\n      generate\n    };\n\n    Adt.generate([{\n      bothErrors: ['error1', 'error2']\n    }, {\n      firstError: ['error1', 'value2']\n    }, {\n      secondError: ['value1', 'error2']\n    }, {\n      bothValues: ['value1', 'value2']\n    }]);\n    const partition$1 = results => {\n      const errors = [];\n      const values = [];\n      each$e(results, result => {\n        result.fold(err => {\n          errors.push(err);\n        }, value => {\n          values.push(value);\n        });\n      });\n      return {\n        errors,\n        values\n      };\n    };\n\n    const isInlinePattern = pattern => pattern.type === 'inline-command' || pattern.type === 'inline-format';\n    const isBlockPattern = pattern => pattern.type === 'block-command' || pattern.type === 'block-format';\n    const normalizePattern = pattern => {\n      const err = message => Result.error({\n        message,\n        pattern\n      });\n      const formatOrCmd = (name, onFormat, onCommand) => {\n        if (pattern.format !== undefined) {\n          let formats;\n          if (isArray$1(pattern.format)) {\n            if (!forall(pattern.format, isString)) {\n              return err(name + ' pattern has non-string items in the `format` array');\n            }\n            formats = pattern.format;\n          } else if (isString(pattern.format)) {\n            formats = [pattern.format];\n          } else {\n            return err(name + ' pattern has non-string `format` parameter');\n          }\n          return Result.value(onFormat(formats));\n        } else if (pattern.cmd !== undefined) {\n          if (!isString(pattern.cmd)) {\n            return err(name + ' pattern has non-string `cmd` parameter');\n          }\n          return Result.value(onCommand(pattern.cmd, pattern.value));\n        } else {\n          return err(name + ' pattern is missing both `format` and `cmd` parameters');\n        }\n      };\n      if (!isObject(pattern)) {\n        return err('Raw pattern is not an object');\n      }\n      if (!isString(pattern.start)) {\n        return err('Raw pattern is missing `start` parameter');\n      }\n      if (pattern.end !== undefined) {\n        if (!isString(pattern.end)) {\n          return err('Inline pattern has non-string `end` parameter');\n        }\n        if (pattern.start.length === 0 && pattern.end.length === 0) {\n          return err('Inline pattern has empty `start` and `end` parameters');\n        }\n        let start = pattern.start;\n        let end = pattern.end;\n        if (end.length === 0) {\n          end = start;\n          start = '';\n        }\n        return formatOrCmd('Inline', format => ({\n          type: 'inline-format',\n          start,\n          end,\n          format\n        }), (cmd, value) => ({\n          type: 'inline-command',\n          start,\n          end,\n          cmd,\n          value\n        }));\n      } else if (pattern.replacement !== undefined) {\n        if (!isString(pattern.replacement)) {\n          return err('Replacement pattern has non-string `replacement` parameter');\n        }\n        if (pattern.start.length === 0) {\n          return err('Replacement pattern has empty `start` parameter');\n        }\n        return Result.value({\n          type: 'inline-command',\n          start: '',\n          end: pattern.start,\n          cmd: 'mceInsertContent',\n          value: pattern.replacement\n        });\n      } else {\n        if (pattern.start.length === 0) {\n          return err('Block pattern has empty `start` parameter');\n        }\n        return formatOrCmd('Block', formats => ({\n          type: 'block-format',\n          start: pattern.start,\n          format: formats[0]\n        }), (command, commandValue) => ({\n          type: 'block-command',\n          start: pattern.start,\n          cmd: command,\n          value: commandValue\n        }));\n      }\n    };\n    const getBlockPatterns = patterns => filter$5(patterns, isBlockPattern);\n    const getInlinePatterns = patterns => filter$5(patterns, isInlinePattern);\n    const createPatternSet = (patterns, dynamicPatternsLookup) => ({\n      inlinePatterns: getInlinePatterns(patterns),\n      blockPatterns: getBlockPatterns(patterns),\n      dynamicPatternsLookup\n    });\n    const fromRawPatterns = patterns => {\n      const normalized = partition$1(map$3(patterns, normalizePattern));\n      each$e(normalized.errors, err => console.error(err.message, err.pattern));\n      return normalized.values;\n    };\n    const fromRawPatternsLookup = lookupFn => {\n      return ctx => {\n        const rawPatterns = lookupFn(ctx);\n        return fromRawPatterns(rawPatterns);\n      };\n    };\n\n    const deviceDetection$1 = detect$2().deviceType;\n    const isTouch = deviceDetection$1.isTouch();\n    const DOM$a = DOMUtils.DOM;\n    const getHash = value => {\n      const items = value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(',');\n      return foldl(items, (output, item) => {\n        const arr = item.split('=');\n        const key = arr[0];\n        const val = arr.length > 1 ? arr[1] : key;\n        output[trim$4(key)] = trim$4(val);\n        return output;\n      }, {});\n    };\n    const isRegExp = x => is$4(x, RegExp);\n    const option = name => editor => editor.options.get(name);\n    const stringOrObjectProcessor = value => isString(value) || isObject(value);\n    const bodyOptionProcessor = (editor, defaultValue = '') => value => {\n      const valid = isString(value);\n      if (valid) {\n        if (value.indexOf('=') !== -1) {\n          const bodyObj = getHash(value);\n          return {\n            value: get$a(bodyObj, editor.id).getOr(defaultValue),\n            valid\n          };\n        } else {\n          return {\n            value,\n            valid\n          };\n        }\n      } else {\n        return {\n          valid: false,\n          message: 'Must be a string.'\n        };\n      }\n    };\n    const register$7 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('id', {\n        processor: 'string',\n        default: editor.id\n      });\n      registerOption('selector', {\n        processor: 'string'\n      });\n      registerOption('target', {\n        processor: 'object'\n      });\n      registerOption('suffix', {\n        processor: 'string'\n      });\n      registerOption('cache_suffix', {\n        processor: 'string'\n      });\n      registerOption('base_url', {\n        processor: 'string'\n      });\n      registerOption('referrer_policy', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('language_load', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('inline', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('iframe_attrs', {\n        processor: 'object',\n        default: {}\n      });\n      registerOption('doctype', {\n        processor: 'string',\n        default: '<!DOCTYPE html>'\n      });\n      registerOption('document_base_url', {\n        processor: 'string',\n        default: editor.documentBaseUrl\n      });\n      registerOption('body_id', {\n        processor: bodyOptionProcessor(editor, 'tinymce'),\n        default: 'tinymce'\n      });\n      registerOption('body_class', {\n        processor: bodyOptionProcessor(editor),\n        default: ''\n      });\n      registerOption('content_security_policy', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('br_in_pre', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('forced_root_block', {\n        processor: value => {\n          const valid = isString(value) && isNotEmpty(value);\n          if (valid) {\n            return {\n              value,\n              valid\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a non-empty string.'\n            };\n          }\n        },\n        default: 'p'\n      });\n      registerOption('forced_root_block_attrs', {\n        processor: 'object',\n        default: {}\n      });\n      registerOption('newline_behavior', {\n        processor: value => {\n          const valid = contains$2(['block', 'linebreak', 'invert', 'default'], value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: 'Must be one of: block, linebreak, invert or default.'\n          };\n        },\n        default: 'default'\n      });\n      registerOption('br_newline_selector', {\n        processor: 'string',\n        default: '.mce-toc h2,figcaption,caption'\n      });\n      registerOption('no_newline_selector', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('keep_styles', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('end_container_on_empty_block', {\n        processor: value => {\n          if (isBoolean(value)) {\n            return {\n              valid: true,\n              value\n            };\n          } else if (isString(value)) {\n            return {\n              valid: true,\n              value\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be boolean or a string'\n            };\n          }\n        },\n        default: 'blockquote'\n      });\n      registerOption('font_size_style_values', {\n        processor: 'string',\n        default: 'xx-small,x-small,small,medium,large,x-large,xx-large'\n      });\n      registerOption('font_size_legacy_values', {\n        processor: 'string',\n        default: 'xx-small,small,medium,large,x-large,xx-large,300%'\n      });\n      registerOption('font_size_classes', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('automatic_uploads', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('images_reuse_filename', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('images_replace_blob_uris', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('icons', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('icons_url', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('images_upload_url', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('images_upload_base_path', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('images_upload_credentials', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('images_upload_handler', {\n        processor: 'function'\n      });\n      registerOption('language', {\n        processor: 'string',\n        default: 'en'\n      });\n      registerOption('language_url', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('entity_encoding', {\n        processor: 'string',\n        default: 'named'\n      });\n      registerOption('indent', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('indent_before', {\n        processor: 'string',\n        default: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,details,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist'\n      });\n      registerOption('indent_after', {\n        processor: 'string',\n        default: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,details,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist'\n      });\n      registerOption('indent_use_margin', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('indentation', {\n        processor: 'string',\n        default: '40px'\n      });\n      registerOption('content_css', {\n        processor: value => {\n          const valid = value === false || isString(value) || isArrayOf(value, isString);\n          if (valid) {\n            if (isString(value)) {\n              return {\n                value: map$3(value.split(','), trim$4),\n                valid\n              };\n            } else if (isArray$1(value)) {\n              return {\n                value,\n                valid\n              };\n            } else if (value === false) {\n              return {\n                value: [],\n                valid\n              };\n            } else {\n              return {\n                value,\n                valid\n              };\n            }\n          } else {\n            return {\n              valid: false,\n              message: 'Must be false, a string or an array of strings.'\n            };\n          }\n        },\n        default: isInline$1(editor) ? [] : ['default']\n      });\n      registerOption('content_style', {\n        processor: 'string'\n      });\n      registerOption('content_css_cors', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('font_css', {\n        processor: value => {\n          const valid = isString(value) || isArrayOf(value, isString);\n          if (valid) {\n            const newValue = isArray$1(value) ? value : map$3(value.split(','), trim$4);\n            return {\n              value: newValue,\n              valid\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a string or an array of strings.'\n            };\n          }\n        },\n        default: []\n      });\n      registerOption('inline_boundaries', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('inline_boundaries_selector', {\n        processor: 'string',\n        default: 'a[href],code,span.mce-annotation'\n      });\n      registerOption('object_resizing', {\n        processor: value => {\n          const valid = isBoolean(value) || isString(value);\n          if (valid) {\n            if (value === false || deviceDetection$1.isiPhone() || deviceDetection$1.isiPad()) {\n              return {\n                value: '',\n                valid\n              };\n            } else {\n              return {\n                value: value === true ? 'table,img,figure.image,div,video,iframe' : value,\n                valid\n              };\n            }\n          } else {\n            return {\n              valid: false,\n              message: 'Must be boolean or a string'\n            };\n          }\n        },\n        default: !isTouch\n      });\n      registerOption('resize_img_proportional', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('event_root', {\n        processor: 'object'\n      });\n      registerOption('service_message', {\n        processor: 'string'\n      });\n      registerOption('theme', {\n        processor: value => value === false || isString(value) || isFunction(value),\n        default: 'silver'\n      });\n      registerOption('theme_url', {\n        processor: 'string'\n      });\n      registerOption('formats', {\n        processor: 'object'\n      });\n      registerOption('format_empty_lines', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('format_noneditable_selector', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('preview_styles', {\n        processor: value => {\n          const valid = value === false || isString(value);\n          if (valid) {\n            return {\n              value: value === false ? '' : value,\n              valid\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be false or a string'\n            };\n          }\n        },\n        default: 'font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow'\n      });\n      registerOption('custom_ui_selector', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('hidden_input', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('submit_patch', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('encoding', {\n        processor: 'string'\n      });\n      registerOption('add_form_submit_trigger', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('add_unload_trigger', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('custom_undo_redo_levels', {\n        processor: 'number',\n        default: 0\n      });\n      registerOption('disable_nodechange', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('readonly', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('editable_root', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('plugins', {\n        processor: 'string[]',\n        default: []\n      });\n      registerOption('external_plugins', {\n        processor: 'object'\n      });\n      registerOption('forced_plugins', {\n        processor: 'string[]'\n      });\n      registerOption('model', {\n        processor: 'string',\n        default: editor.hasPlugin('rtc') ? 'plugin' : 'dom'\n      });\n      registerOption('model_url', {\n        processor: 'string'\n      });\n      registerOption('block_unsupported_drop', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('visual', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('visual_table_class', {\n        processor: 'string',\n        default: 'mce-item-table'\n      });\n      registerOption('visual_anchor_class', {\n        processor: 'string',\n        default: 'mce-item-anchor'\n      });\n      registerOption('iframe_aria_text', {\n        processor: 'string',\n        default: 'Rich Text Area. Press ALT-0 for help.'\n      });\n      registerOption('setup', {\n        processor: 'function'\n      });\n      registerOption('init_instance_callback', {\n        processor: 'function'\n      });\n      registerOption('url_converter', {\n        processor: 'function',\n        default: editor.convertURL\n      });\n      registerOption('url_converter_scope', {\n        processor: 'object',\n        default: editor\n      });\n      registerOption('urlconverter_callback', {\n        processor: 'function'\n      });\n      registerOption('allow_conditional_comments', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('allow_html_data_urls', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('allow_svg_data_urls', {\n        processor: 'boolean'\n      });\n      registerOption('allow_html_in_named_anchor', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('allow_script_urls', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('allow_unsafe_link_target', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('convert_fonts_to_spans', {\n        processor: 'boolean',\n        default: true,\n        deprecated: true\n      });\n      registerOption('fix_list_elements', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('preserve_cdata', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('remove_trailing_brs', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('pad_empty_with_br', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('inline_styles', {\n        processor: 'boolean',\n        default: true,\n        deprecated: true\n      });\n      registerOption('element_format', {\n        processor: 'string',\n        default: 'html'\n      });\n      registerOption('entities', {\n        processor: 'string'\n      });\n      registerOption('schema', {\n        processor: 'string',\n        default: 'html5'\n      });\n      registerOption('convert_urls', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('relative_urls', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('remove_script_host', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('custom_elements', {\n        processor: 'string'\n      });\n      registerOption('extended_valid_elements', {\n        processor: 'string'\n      });\n      registerOption('invalid_elements', {\n        processor: 'string'\n      });\n      registerOption('invalid_styles', {\n        processor: stringOrObjectProcessor\n      });\n      registerOption('valid_children', {\n        processor: 'string'\n      });\n      registerOption('valid_classes', {\n        processor: stringOrObjectProcessor\n      });\n      registerOption('valid_elements', {\n        processor: 'string'\n      });\n      registerOption('valid_styles', {\n        processor: stringOrObjectProcessor\n      });\n      registerOption('verify_html', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('auto_focus', {\n        processor: value => isString(value) || value === true\n      });\n      registerOption('browser_spellcheck', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('protect', {\n        processor: 'array'\n      });\n      registerOption('images_file_types', {\n        processor: 'string',\n        default: 'jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp'\n      });\n      registerOption('deprecation_warnings', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('a11y_advanced_options', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('api_key', {\n        processor: 'string'\n      });\n      registerOption('paste_block_drop', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('paste_data_images', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('paste_preprocess', {\n        processor: 'function'\n      });\n      registerOption('paste_postprocess', {\n        processor: 'function'\n      });\n      registerOption('paste_webkit_styles', {\n        processor: 'string',\n        default: 'none'\n      });\n      registerOption('paste_remove_styles_if_webkit', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('paste_merge_formats', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('smart_paste', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('paste_as_text', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('paste_tab_spaces', {\n        processor: 'number',\n        default: 4\n      });\n      registerOption('text_patterns', {\n        processor: value => {\n          if (isArrayOf(value, isObject) || value === false) {\n            const patterns = value === false ? [] : value;\n            return {\n              value: fromRawPatterns(patterns),\n              valid: true\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be an array of objects or false.'\n            };\n          }\n        },\n        default: [{\n          start: '*',\n          end: '*',\n          format: 'italic'\n        }, {\n          start: '**',\n          end: '**',\n          format: 'bold'\n        }, {\n          start: '#',\n          format: 'h1'\n        }, {\n          start: '##',\n          format: 'h2'\n        }, {\n          start: '###',\n          format: 'h3'\n        }, {\n          start: '####',\n          format: 'h4'\n        }, {\n          start: '#####',\n          format: 'h5'\n        }, {\n          start: '######',\n          format: 'h6'\n        }, {\n          start: '1. ',\n          cmd: 'InsertOrderedList'\n        }, {\n          start: '* ',\n          cmd: 'InsertUnorderedList'\n        }, {\n          start: '- ',\n          cmd: 'InsertUnorderedList'\n        }]\n      });\n      registerOption('text_patterns_lookup', {\n        processor: value => {\n          if (isFunction(value)) {\n            return {\n              value: fromRawPatternsLookup(value),\n              valid: true\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a single function'\n            };\n          }\n        },\n        default: _ctx => []\n      });\n      registerOption('noneditable_class', {\n        processor: 'string',\n        default: 'mceNonEditable'\n      });\n      registerOption('editable_class', {\n        processor: 'string',\n        default: 'mceEditable'\n      });\n      registerOption('noneditable_regexp', {\n        processor: value => {\n          if (isArrayOf(value, isRegExp)) {\n            return {\n              value,\n              valid: true\n            };\n          } else if (isRegExp(value)) {\n            return {\n              value: [value],\n              valid: true\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a RegExp or an array of RegExp.'\n            };\n          }\n        },\n        default: []\n      });\n      registerOption('table_tab_navigation', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('highlight_on_focus', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('xss_sanitization', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('details_initial_state', {\n        processor: value => {\n          const valid = contains$2(['inherited', 'collapsed', 'expanded'], value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: 'Must be one of: inherited, collapsed, or expanded.'\n          };\n        },\n        default: 'inherited'\n      });\n      registerOption('details_serialized_state', {\n        processor: value => {\n          const valid = contains$2(['inherited', 'collapsed', 'expanded'], value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: 'Must be one of: inherited, collapsed, or expanded.'\n          };\n        },\n        default: 'inherited'\n      });\n      registerOption('init_content_sync', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('newdocument_content', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('force_hex_color', {\n        processor: value => {\n          const options = ['always', 'rgb_only', 'off'];\n          const valid = contains$2(options, value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: \"Must be one of: \".concat(options.join(', '), \".\")\n          };\n        },\n        default: 'off'\n      });\n      registerOption('sandbox_iframes', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('convert_unsafe_embeds', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('sn_convert_blobs_to_base64', {\n        processor: 'boolean',\n        default: true\n      });\n      editor.on('ScriptsLoaded', () => {\n        registerOption('directionality', {\n          processor: 'string',\n          default: I18n.isRtl() ? 'rtl' : undefined\n        });\n        registerOption('placeholder', {\n          processor: 'string',\n          default: DOM$a.getAttrib(editor.getElement(), 'placeholder')\n        });\n      });\n    };\n    const getIframeAttrs = option('iframe_attrs');\n    const getDocType = option('doctype');\n    const getDocumentBaseUrl = option('document_base_url');\n    const getBodyId = option('body_id');\n    const getBodyClass = option('body_class');\n    const getContentSecurityPolicy = option('content_security_policy');\n    const shouldPutBrInPre$1 = option('br_in_pre');\n    const getForcedRootBlock = option('forced_root_block');\n    const getForcedRootBlockAttrs = option('forced_root_block_attrs');\n    const getNewlineBehavior = option('newline_behavior');\n    const getBrNewLineSelector = option('br_newline_selector');\n    const getNoNewLineSelector = option('no_newline_selector');\n    const shouldKeepStyles = option('keep_styles');\n    const shouldEndContainerOnEmptyBlock = option('end_container_on_empty_block');\n    const isAutomaticUploadsEnabled = option('automatic_uploads');\n    const shouldReuseFileName = option('images_reuse_filename');\n    const shouldReplaceBlobUris = option('images_replace_blob_uris');\n    const getIconPackName = option('icons');\n    const getIconsUrl = option('icons_url');\n    const getImageUploadUrl = option('images_upload_url');\n    const getImageUploadBasePath = option('images_upload_base_path');\n    const getImagesUploadCredentials = option('images_upload_credentials');\n    const getImagesUploadHandler = option('images_upload_handler');\n    const shouldUseContentCssCors = option('content_css_cors');\n    const getReferrerPolicy = option('referrer_policy');\n    const getLanguageCode = option('language');\n    const getLanguageUrl = option('language_url');\n    const shouldIndentUseMargin = option('indent_use_margin');\n    const getIndentation = option('indentation');\n    const getContentCss = option('content_css');\n    const getContentStyle = option('content_style');\n    const getFontCss = option('font_css');\n    const getDirectionality = option('directionality');\n    const getInlineBoundarySelector = option('inline_boundaries_selector');\n    const getObjectResizing = option('object_resizing');\n    const getResizeImgProportional = option('resize_img_proportional');\n    const getPlaceholder = option('placeholder');\n    const getEventRoot = option('event_root');\n    const getServiceMessage = option('service_message');\n    const getTheme = option('theme');\n    const getThemeUrl = option('theme_url');\n    const getModel = option('model');\n    const getModelUrl = option('model_url');\n    const isInlineBoundariesEnabled = option('inline_boundaries');\n    const getFormats = option('formats');\n    const getPreviewStyles = option('preview_styles');\n    const canFormatEmptyLines = option('format_empty_lines');\n    const getFormatNoneditableSelector = option('format_noneditable_selector');\n    const getCustomUiSelector = option('custom_ui_selector');\n    const isInline$1 = option('inline');\n    const hasHiddenInput = option('hidden_input');\n    const shouldPatchSubmit = option('submit_patch');\n    const shouldAddFormSubmitTrigger = option('add_form_submit_trigger');\n    const shouldAddUnloadTrigger = option('add_unload_trigger');\n    const getCustomUndoRedoLevels = option('custom_undo_redo_levels');\n    const shouldDisableNodeChange = option('disable_nodechange');\n    const isReadOnly$1 = option('readonly');\n    const hasEditableRoot$1 = option('editable_root');\n    const hasContentCssCors = option('content_css_cors');\n    const getPlugins = option('plugins');\n    const getExternalPlugins$1 = option('external_plugins');\n    const shouldBlockUnsupportedDrop = option('block_unsupported_drop');\n    const isVisualAidsEnabled = option('visual');\n    const getVisualAidsTableClass = option('visual_table_class');\n    const getVisualAidsAnchorClass = option('visual_anchor_class');\n    const getIframeAriaText = option('iframe_aria_text');\n    const getSetupCallback = option('setup');\n    const getInitInstanceCallback = option('init_instance_callback');\n    const getUrlConverterCallback = option('urlconverter_callback');\n    const getAutoFocus = option('auto_focus');\n    const shouldBrowserSpellcheck = option('browser_spellcheck');\n    const getProtect = option('protect');\n    const shouldPasteBlockDrop = option('paste_block_drop');\n    const shouldPasteDataImages = option('paste_data_images');\n    const getPastePreProcess = option('paste_preprocess');\n    const getPastePostProcess = option('paste_postprocess');\n    const getNewDocumentContent = option('newdocument_content');\n    const getPasteWebkitStyles = option('paste_webkit_styles');\n    const shouldPasteRemoveWebKitStyles = option('paste_remove_styles_if_webkit');\n    const shouldPasteMergeFormats = option('paste_merge_formats');\n    const isSmartPasteEnabled = option('smart_paste');\n    const isPasteAsTextEnabled = option('paste_as_text');\n    const getPasteTabSpaces = option('paste_tab_spaces');\n    const shouldAllowHtmlDataUrls = option('allow_html_data_urls');\n    const getTextPatterns = option('text_patterns');\n    const getTextPatternsLookup = option('text_patterns_lookup');\n    const getNonEditableClass = option('noneditable_class');\n    const getEditableClass = option('editable_class');\n    const getNonEditableRegExps = option('noneditable_regexp');\n    const shouldPreserveCData = option('preserve_cdata');\n    const shouldHighlightOnFocus = option('highlight_on_focus');\n    const shouldSanitizeXss = option('xss_sanitization');\n    const shouldUseDocumentWrite = option('init_content_sync');\n    const hasTextPatternsLookup = editor => editor.options.isSet('text_patterns_lookup');\n    const getFontStyleValues = editor => Tools.explode(editor.options.get('font_size_style_values'));\n    const getFontSizeClasses = editor => Tools.explode(editor.options.get('font_size_classes'));\n    const isEncodingXml = editor => editor.options.get('encoding') === 'xml';\n    const getAllowedImageFileTypes = editor => Tools.explode(editor.options.get('images_file_types'));\n    const hasTableTabNavigation = option('table_tab_navigation');\n    const getDetailsInitialState = option('details_initial_state');\n    const getDetailsSerializedState = option('details_serialized_state');\n    const shouldForceHexColor = option('force_hex_color');\n    const shouldSandboxIframes = option('sandbox_iframes');\n    const shouldConvertBlobstoBase64 = option('sn_convert_blobs_to_base64');\n\n    const isElement$3 = isElement$6;\n    const isText$5 = isText$a;\n    const removeNode$1 = node => {\n      const parentNode = node.parentNode;\n      if (parentNode) {\n        parentNode.removeChild(node);\n      }\n    };\n    const trimCount = text => {\n      const trimmedText = trim$2(text);\n      return {\n        count: text.length - trimmedText.length,\n        text: trimmedText\n      };\n    };\n    const deleteZwspChars = caretContainer => {\n      let idx;\n      while ((idx = caretContainer.data.lastIndexOf(ZWSP$1)) !== -1) {\n        caretContainer.deleteData(idx, 1);\n      }\n    };\n    const removeUnchanged = (caretContainer, pos) => {\n      remove$3(caretContainer);\n      return pos;\n    };\n    const removeTextAndReposition = (caretContainer, pos) => {\n      const before = trimCount(caretContainer.data.substr(0, pos.offset()));\n      const after = trimCount(caretContainer.data.substr(pos.offset()));\n      const text = before.text + after.text;\n      if (text.length > 0) {\n        deleteZwspChars(caretContainer);\n        return CaretPosition(caretContainer, pos.offset() - before.count);\n      } else {\n        return pos;\n      }\n    };\n    const removeElementAndReposition = (caretContainer, pos) => {\n      const parentNode = pos.container();\n      const newPosition = indexOf$1(from(parentNode.childNodes), caretContainer).map(index => {\n        return index < pos.offset() ? CaretPosition(parentNode, pos.offset() - 1) : pos;\n      }).getOr(pos);\n      remove$3(caretContainer);\n      return newPosition;\n    };\n    const removeTextCaretContainer = (caretContainer, pos) => isText$5(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n    const removeElementCaretContainer = (caretContainer, pos) => pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n    const removeAndReposition = (container, pos) => CaretPosition.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos);\n    const remove$3 = caretContainerNode => {\n      if (isElement$3(caretContainerNode) && isCaretContainer$2(caretContainerNode)) {\n        if (hasContent(caretContainerNode)) {\n          caretContainerNode.removeAttribute('data-mce-caret');\n        } else {\n          removeNode$1(caretContainerNode);\n        }\n      }\n      if (isText$5(caretContainerNode)) {\n        deleteZwspChars(caretContainerNode);\n        if (caretContainerNode.data.length === 0) {\n          removeNode$1(caretContainerNode);\n        }\n      }\n    };\n\n    const isContentEditableFalse$8 = isContentEditableFalse$b;\n    const isMedia$1 = isMedia$2;\n    const isTableCell$1 = isTableCell$3;\n    const inlineFakeCaretSelector = '*[contentEditable=false],video,audio,embed,object';\n    const getAbsoluteClientRect = (root, element, before) => {\n      const clientRect = collapse(element.getBoundingClientRect(), before);\n      let scrollX;\n      let scrollY;\n      if (root.tagName === 'BODY') {\n        const docElm = root.ownerDocument.documentElement;\n        scrollX = root.scrollLeft || docElm.scrollLeft;\n        scrollY = root.scrollTop || docElm.scrollTop;\n      } else {\n        const rootRect = root.getBoundingClientRect();\n        scrollX = root.scrollLeft - rootRect.left;\n        scrollY = root.scrollTop - rootRect.top;\n      }\n      clientRect.left += scrollX;\n      clientRect.right += scrollX;\n      clientRect.top += scrollY;\n      clientRect.bottom += scrollY;\n      clientRect.width = 1;\n      let margin = element.offsetWidth - element.clientWidth;\n      if (margin > 0) {\n        if (before) {\n          margin *= -1;\n        }\n        clientRect.left += margin;\n        clientRect.right += margin;\n      }\n      return clientRect;\n    };\n    const trimInlineCaretContainers = root => {\n      var _a, _b;\n      const fakeCaretTargetNodes = descendants(SugarElement.fromDom(root), inlineFakeCaretSelector);\n      for (let i = 0; i < fakeCaretTargetNodes.length; i++) {\n        const node = fakeCaretTargetNodes[i].dom;\n        let sibling = node.previousSibling;\n        if (endsWithCaretContainer$1(sibling)) {\n          const data = sibling.data;\n          if (data.length === 1) {\n            (_a = sibling.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(sibling);\n          } else {\n            sibling.deleteData(data.length - 1, 1);\n          }\n        }\n        sibling = node.nextSibling;\n        if (startsWithCaretContainer$1(sibling)) {\n          const data = sibling.data;\n          if (data.length === 1) {\n            (_b = sibling.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(sibling);\n          } else {\n            sibling.deleteData(0, 1);\n          }\n        }\n      }\n    };\n    const FakeCaret = (editor, root, isBlock, hasFocus) => {\n      const lastVisualCaret = value$2();\n      let cursorInterval;\n      let caretContainerNode;\n      const caretBlock = getForcedRootBlock(editor);\n      const dom = editor.dom;\n      const show = (before, element) => {\n        let rng;\n        hide();\n        if (isTableCell$1(element)) {\n          return null;\n        }\n        if (isBlock(element)) {\n          const caretContainer = insertBlock(caretBlock, element, before);\n          const clientRect = getAbsoluteClientRect(root, element, before);\n          dom.setStyle(caretContainer, 'top', clientRect.top);\n          caretContainerNode = caretContainer;\n          const caret = dom.create('div', {\n            'class': 'mce-visual-caret',\n            'data-mce-bogus': 'all'\n          });\n          dom.setStyles(caret, {\n            ...clientRect\n          });\n          dom.add(root, caret);\n          lastVisualCaret.set({\n            caret,\n            element,\n            before\n          });\n          if (before) {\n            dom.addClass(caret, 'mce-visual-caret-before');\n          }\n          startBlink();\n          rng = element.ownerDocument.createRange();\n          rng.setStart(caretContainer, 0);\n          rng.setEnd(caretContainer, 0);\n        } else {\n          caretContainerNode = insertInline$1(element, before);\n          rng = element.ownerDocument.createRange();\n          if (isInlineFakeCaretTarget(caretContainerNode.nextSibling)) {\n            rng.setStart(caretContainerNode, 0);\n            rng.setEnd(caretContainerNode, 0);\n          } else {\n            rng.setStart(caretContainerNode, 1);\n            rng.setEnd(caretContainerNode, 1);\n          }\n          return rng;\n        }\n        return rng;\n      };\n      const hide = () => {\n        trimInlineCaretContainers(root);\n        if (caretContainerNode) {\n          remove$3(caretContainerNode);\n          caretContainerNode = null;\n        }\n        lastVisualCaret.on(caretState => {\n          dom.remove(caretState.caret);\n          lastVisualCaret.clear();\n        });\n        if (cursorInterval) {\n          clearInterval(cursorInterval);\n          cursorInterval = undefined;\n        }\n      };\n      const startBlink = () => {\n        cursorInterval = setInterval(() => {\n          lastVisualCaret.on(caretState => {\n            if (hasFocus()) {\n              dom.toggleClass(caretState.caret, 'mce-visual-caret-hidden');\n            } else {\n              dom.addClass(caretState.caret, 'mce-visual-caret-hidden');\n            }\n          });\n        }, 500);\n      };\n      const reposition = () => {\n        lastVisualCaret.on(caretState => {\n          const clientRect = getAbsoluteClientRect(root, caretState.element, caretState.before);\n          dom.setStyles(caretState.caret, {\n            ...clientRect\n          });\n        });\n      };\n      const destroy = () => clearInterval(cursorInterval);\n      const getCss = () => '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}';\n      return {\n        show,\n        hide,\n        getCss,\n        reposition,\n        destroy\n      };\n    };\n    const isFakeCaretTableBrowser = () => Env.browser.isFirefox();\n    const isInlineFakeCaretTarget = node => isContentEditableFalse$8(node) || isMedia$1(node);\n    const isFakeCaretTarget = node => {\n      const isTarget = isInlineFakeCaretTarget(node) || isTable$2(node) && isFakeCaretTableBrowser();\n      return isTarget && parentElement(SugarElement.fromDom(node)).exists(isEditable$2);\n    };\n\n    const isContentEditableTrue$1 = isContentEditableTrue$3;\n    const isContentEditableFalse$7 = isContentEditableFalse$b;\n    const isMedia = isMedia$2;\n    const isBlockLike = matchStyleValues('display', 'block table table-cell table-caption list-item');\n    const isCaretContainer = isCaretContainer$2;\n    const isCaretContainerBlock = isCaretContainerBlock$1;\n    const isElement$2 = isElement$6;\n    const isText$4 = isText$a;\n    const isCaretCandidate$1 = isCaretCandidate$3;\n    const isForwards = direction => direction > 0;\n    const isBackwards = direction => direction < 0;\n    const skipCaretContainers = (walk, shallow) => {\n      let node;\n      while (node = walk(shallow)) {\n        if (!isCaretContainerBlock(node)) {\n          return node;\n        }\n      }\n      return null;\n    };\n    const findNode = (node, direction, predicateFn, rootNode, shallow) => {\n      const walker = new DomTreeWalker(node, rootNode);\n      const isCefOrCaretContainer = isContentEditableFalse$7(node) || isCaretContainerBlock(node);\n      let tempNode;\n      if (isBackwards(direction)) {\n        if (isCefOrCaretContainer) {\n          tempNode = skipCaretContainers(walker.prev.bind(walker), true);\n          if (predicateFn(tempNode)) {\n            return tempNode;\n          }\n        }\n        while (tempNode = skipCaretContainers(walker.prev.bind(walker), shallow)) {\n          if (predicateFn(tempNode)) {\n            return tempNode;\n          }\n        }\n      }\n      if (isForwards(direction)) {\n        if (isCefOrCaretContainer) {\n          tempNode = skipCaretContainers(walker.next.bind(walker), true);\n          if (predicateFn(tempNode)) {\n            return tempNode;\n          }\n        }\n        while (tempNode = skipCaretContainers(walker.next.bind(walker), shallow)) {\n          if (predicateFn(tempNode)) {\n            return tempNode;\n          }\n        }\n      }\n      return null;\n    };\n    const getEditingHost = (node, rootNode) => {\n      const isCETrue = node => isContentEditableTrue$1(node.dom);\n      const isRoot = node => node.dom === rootNode;\n      return ancestor$4(SugarElement.fromDom(node), isCETrue, isRoot).map(elm => elm.dom).getOr(rootNode);\n    };\n    const getParentBlock$3 = (node, rootNode) => {\n      while (node && node !== rootNode) {\n        if (isBlockLike(node)) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n    const isInSameBlock = (caretPosition1, caretPosition2, rootNode) => getParentBlock$3(caretPosition1.container(), rootNode) === getParentBlock$3(caretPosition2.container(), rootNode);\n    const getChildNodeAtRelativeOffset = (relativeOffset, caretPosition) => {\n      if (!caretPosition) {\n        return Optional.none();\n      }\n      const container = caretPosition.container();\n      const offset = caretPosition.offset();\n      if (!isElement$2(container)) {\n        return Optional.none();\n      }\n      return Optional.from(container.childNodes[offset + relativeOffset]);\n    };\n    const beforeAfter = (before, node) => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      const range = doc.createRange();\n      if (before) {\n        range.setStartBefore(node);\n        range.setEndBefore(node);\n      } else {\n        range.setStartAfter(node);\n        range.setEndAfter(node);\n      }\n      return range;\n    };\n    const isNodesInSameBlock = (root, node1, node2) => getParentBlock$3(node1, root) === getParentBlock$3(node2, root);\n    const lean = (left, root, node) => {\n      const siblingName = left ? 'previousSibling' : 'nextSibling';\n      let tempNode = node;\n      while (tempNode && tempNode !== root) {\n        let sibling = tempNode[siblingName];\n        if (sibling && isCaretContainer(sibling)) {\n          sibling = sibling[siblingName];\n        }\n        if (isContentEditableFalse$7(sibling) || isMedia(sibling)) {\n          if (isNodesInSameBlock(root, sibling, tempNode)) {\n            return sibling;\n          }\n          break;\n        }\n        if (isCaretCandidate$1(sibling)) {\n          break;\n        }\n        tempNode = tempNode.parentNode;\n      }\n      return null;\n    };\n    const before$2 = curry(beforeAfter, true);\n    const after$2 = curry(beforeAfter, false);\n    const normalizeRange = (direction, root, range) => {\n      let node;\n      const leanLeft = curry(lean, true, root);\n      const leanRight = curry(lean, false, root);\n      const container = range.startContainer;\n      const offset = range.startOffset;\n      if (isCaretContainerBlock$1(container)) {\n        const block = isText$4(container) ? container.parentNode : container;\n        const location = block.getAttribute('data-mce-caret');\n        if (location === 'before') {\n          node = block.nextSibling;\n          if (isFakeCaretTarget(node)) {\n            return before$2(node);\n          }\n        }\n        if (location === 'after') {\n          node = block.previousSibling;\n          if (isFakeCaretTarget(node)) {\n            return after$2(node);\n          }\n        }\n      }\n      if (!range.collapsed) {\n        return range;\n      }\n      if (isText$a(container)) {\n        if (isCaretContainer(container)) {\n          if (direction === 1) {\n            node = leanRight(container);\n            if (node) {\n              return before$2(node);\n            }\n            node = leanLeft(container);\n            if (node) {\n              return after$2(node);\n            }\n          }\n          if (direction === -1) {\n            node = leanLeft(container);\n            if (node) {\n              return after$2(node);\n            }\n            node = leanRight(container);\n            if (node) {\n              return before$2(node);\n            }\n          }\n          return range;\n        }\n        if (endsWithCaretContainer$1(container) && offset >= container.data.length - 1) {\n          if (direction === 1) {\n            node = leanRight(container);\n            if (node) {\n              return before$2(node);\n            }\n          }\n          return range;\n        }\n        if (startsWithCaretContainer$1(container) && offset <= 1) {\n          if (direction === -1) {\n            node = leanLeft(container);\n            if (node) {\n              return after$2(node);\n            }\n          }\n          return range;\n        }\n        if (offset === container.data.length) {\n          node = leanRight(container);\n          if (node) {\n            return before$2(node);\n          }\n          return range;\n        }\n        if (offset === 0) {\n          node = leanLeft(container);\n          if (node) {\n            return after$2(node);\n          }\n          return range;\n        }\n      }\n      return range;\n    };\n    const getRelativeCefElm = (forward, caretPosition) => getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition).filter(isContentEditableFalse$7);\n    const getNormalizedRangeEndPoint = (direction, root, range) => {\n      const normalizedRange = normalizeRange(direction, root, range);\n      return direction === -1 ? CaretPosition.fromRangeStart(normalizedRange) : CaretPosition.fromRangeEnd(normalizedRange);\n    };\n    const getElementFromPosition = pos => Optional.from(pos.getNode()).map(SugarElement.fromDom);\n    const getElementFromPrevPosition = pos => Optional.from(pos.getNode(true)).map(SugarElement.fromDom);\n    const getVisualCaretPosition = (walkFn, caretPosition) => {\n      let pos = caretPosition;\n      while (pos = walkFn(pos)) {\n        if (pos.isVisible()) {\n          return pos;\n        }\n      }\n      return pos;\n    };\n    const isMoveInsideSameBlock = (from, to) => {\n      const inSameBlock = isInSameBlock(from, to);\n      if (!inSameBlock && isBr$6(from.getNode())) {\n        return true;\n      }\n      return inSameBlock;\n    };\n\n    var HDirection;\n    (function (HDirection) {\n      HDirection[HDirection['Backwards'] = -1] = 'Backwards';\n      HDirection[HDirection['Forwards'] = 1] = 'Forwards';\n    })(HDirection || (HDirection = {}));\n    const isContentEditableFalse$6 = isContentEditableFalse$b;\n    const isText$3 = isText$a;\n    const isElement$1 = isElement$6;\n    const isBr$2 = isBr$6;\n    const isCaretCandidate = isCaretCandidate$3;\n    const isAtomic = isAtomic$1;\n    const isEditableCaretCandidate = isEditableCaretCandidate$1;\n    const getParents$3 = (node, root) => {\n      const parents = [];\n      let tempNode = node;\n      while (tempNode && tempNode !== root) {\n        parents.push(tempNode);\n        tempNode = tempNode.parentNode;\n      }\n      return parents;\n    };\n    const nodeAtIndex = (container, offset) => {\n      if (container.hasChildNodes() && offset < container.childNodes.length) {\n        return container.childNodes[offset];\n      }\n      return null;\n    };\n    const getCaretCandidatePosition = (direction, node) => {\n      if (isForwards(direction)) {\n        if (isCaretCandidate(node.previousSibling) && !isText$3(node.previousSibling)) {\n          return CaretPosition.before(node);\n        }\n        if (isText$3(node)) {\n          return CaretPosition(node, 0);\n        }\n      }\n      if (isBackwards(direction)) {\n        if (isCaretCandidate(node.nextSibling) && !isText$3(node.nextSibling)) {\n          return CaretPosition.after(node);\n        }\n        if (isText$3(node)) {\n          return CaretPosition(node, node.data.length);\n        }\n      }\n      if (isBackwards(direction)) {\n        if (isBr$2(node)) {\n          return CaretPosition.before(node);\n        }\n        return CaretPosition.after(node);\n      }\n      return CaretPosition.before(node);\n    };\n    const moveForwardFromBr = (root, nextNode) => {\n      const nextSibling = nextNode.nextSibling;\n      if (nextSibling && isCaretCandidate(nextSibling)) {\n        if (isText$3(nextSibling)) {\n          return CaretPosition(nextSibling, 0);\n        } else {\n          return CaretPosition.before(nextSibling);\n        }\n      } else {\n        return findCaretPosition$1(HDirection.Forwards, CaretPosition.after(nextNode), root);\n      }\n    };\n    const findCaretPosition$1 = (direction, startPos, root) => {\n      let node;\n      let nextNode;\n      let innerNode;\n      let caretPosition;\n      if (!isElement$1(root) || !startPos) {\n        return null;\n      }\n      if (startPos.isEqual(CaretPosition.after(root)) && root.lastChild) {\n        caretPosition = CaretPosition.after(root.lastChild);\n        if (isBackwards(direction) && isCaretCandidate(root.lastChild) && isElement$1(root.lastChild)) {\n          return isBr$2(root.lastChild) ? CaretPosition.before(root.lastChild) : caretPosition;\n        }\n      } else {\n        caretPosition = startPos;\n      }\n      const container = caretPosition.container();\n      let offset = caretPosition.offset();\n      if (isText$3(container)) {\n        if (isBackwards(direction) && offset > 0) {\n          return CaretPosition(container, --offset);\n        }\n        if (isForwards(direction) && offset < container.length) {\n          return CaretPosition(container, ++offset);\n        }\n        node = container;\n      } else {\n        if (isBackwards(direction) && offset > 0) {\n          nextNode = nodeAtIndex(container, offset - 1);\n          if (isCaretCandidate(nextNode)) {\n            if (!isAtomic(nextNode)) {\n              innerNode = findNode(nextNode, direction, isEditableCaretCandidate, nextNode);\n              if (innerNode) {\n                if (isText$3(innerNode)) {\n                  return CaretPosition(innerNode, innerNode.data.length);\n                }\n                return CaretPosition.after(innerNode);\n              }\n            }\n            if (isText$3(nextNode)) {\n              return CaretPosition(nextNode, nextNode.data.length);\n            }\n            return CaretPosition.before(nextNode);\n          }\n        }\n        if (isForwards(direction) && offset < container.childNodes.length) {\n          nextNode = nodeAtIndex(container, offset);\n          if (isCaretCandidate(nextNode)) {\n            if (isBr$2(nextNode)) {\n              return moveForwardFromBr(root, nextNode);\n            }\n            if (!isAtomic(nextNode)) {\n              innerNode = findNode(nextNode, direction, isEditableCaretCandidate, nextNode);\n              if (innerNode) {\n                if (isText$3(innerNode)) {\n                  return CaretPosition(innerNode, 0);\n                }\n                return CaretPosition.before(innerNode);\n              }\n            }\n            if (isText$3(nextNode)) {\n              return CaretPosition(nextNode, 0);\n            }\n            return CaretPosition.after(nextNode);\n          }\n        }\n        node = nextNode ? nextNode : caretPosition.getNode();\n      }\n      if (node && (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart())) {\n        node = findNode(node, direction, always, root, true);\n        if (isEditableCaretCandidate(node, root)) {\n          return getCaretCandidatePosition(direction, node);\n        }\n      }\n      nextNode = node ? findNode(node, direction, isEditableCaretCandidate, root) : node;\n      const rootContentEditableFalseElm = last$2(filter$5(getParents$3(container, root), isContentEditableFalse$6));\n      if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) {\n        if (isForwards(direction)) {\n          caretPosition = CaretPosition.after(rootContentEditableFalseElm);\n        } else {\n          caretPosition = CaretPosition.before(rootContentEditableFalseElm);\n        }\n        return caretPosition;\n      }\n      if (nextNode) {\n        return getCaretCandidatePosition(direction, nextNode);\n      }\n      return null;\n    };\n    const CaretWalker = root => ({\n      next: caretPosition => {\n        return findCaretPosition$1(HDirection.Forwards, caretPosition, root);\n      },\n      prev: caretPosition => {\n        return findCaretPosition$1(HDirection.Backwards, caretPosition, root);\n      }\n    });\n\n    const walkToPositionIn = (forward, root, start) => {\n      const position = forward ? CaretPosition.before(start) : CaretPosition.after(start);\n      return fromPosition(forward, root, position);\n    };\n    const afterElement = node => isBr$6(node) ? CaretPosition.before(node) : CaretPosition.after(node);\n    const isBeforeOrStart = position => {\n      if (CaretPosition.isTextPosition(position)) {\n        return position.offset() === 0;\n      } else {\n        return isCaretCandidate$3(position.getNode());\n      }\n    };\n    const isAfterOrEnd = position => {\n      if (CaretPosition.isTextPosition(position)) {\n        const container = position.container();\n        return position.offset() === container.data.length;\n      } else {\n        return isCaretCandidate$3(position.getNode(true));\n      }\n    };\n    const isBeforeAfterSameElement = (from, to) => !CaretPosition.isTextPosition(from) && !CaretPosition.isTextPosition(to) && from.getNode() === to.getNode(true);\n    const isAtBr = position => !CaretPosition.isTextPosition(position) && isBr$6(position.getNode());\n    const shouldSkipPosition = (forward, from, to) => {\n      if (forward) {\n        return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to);\n      } else {\n        return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to);\n      }\n    };\n    const fromPosition = (forward, root, pos) => {\n      const walker = CaretWalker(root);\n      return Optional.from(forward ? walker.next(pos) : walker.prev(pos));\n    };\n    const navigate = (forward, root, from) => fromPosition(forward, root, from).bind(to => {\n      if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) {\n        return fromPosition(forward, root, to);\n      } else {\n        return Optional.some(to);\n      }\n    });\n    const navigateIgnore = (forward, root, from, ignoreFilter) => navigate(forward, root, from).bind(pos => ignoreFilter(pos) ? navigateIgnore(forward, root, pos, ignoreFilter) : Optional.some(pos));\n    const positionIn = (forward, element) => {\n      const startNode = forward ? element.firstChild : element.lastChild;\n      if (isText$a(startNode)) {\n        return Optional.some(CaretPosition(startNode, forward ? 0 : startNode.data.length));\n      } else if (startNode) {\n        if (isCaretCandidate$3(startNode)) {\n          return Optional.some(forward ? CaretPosition.before(startNode) : afterElement(startNode));\n        } else {\n          return walkToPositionIn(forward, element, startNode);\n        }\n      } else {\n        return Optional.none();\n      }\n    };\n    const nextPosition = curry(fromPosition, true);\n    const prevPosition = curry(fromPosition, false);\n    const firstPositionIn = curry(positionIn, true);\n    const lastPositionIn = curry(positionIn, false);\n\n    const CARET_ID = '_mce_caret';\n    const isCaretNode = node => isElement$6(node) && node.id === CARET_ID;\n    const getParentCaretContainer = (body, node) => {\n      let currentNode = node;\n      while (currentNode && currentNode !== body) {\n        if (isCaretNode(currentNode)) {\n          return currentNode;\n        }\n        currentNode = currentNode.parentNode;\n      }\n      return null;\n    };\n\n    const isStringPathBookmark = bookmark => isString(bookmark.start);\n    const isRangeBookmark = bookmark => has$2(bookmark, 'rng');\n    const isIdBookmark = bookmark => has$2(bookmark, 'id');\n    const isIndexBookmark = bookmark => has$2(bookmark, 'name');\n    const isPathBookmark = bookmark => Tools.isArray(bookmark.start);\n\n    const isForwardBookmark = bookmark => !isIndexBookmark(bookmark) && isBoolean(bookmark.forward) ? bookmark.forward : true;\n    const addBogus = (dom, node) => {\n      if (isElement$6(node) && dom.isBlock(node) && !node.innerHTML) {\n        node.innerHTML = '<br data-mce-bogus=\"1\" />';\n      }\n      return node;\n    };\n    const resolveCaretPositionBookmark = (dom, bookmark) => {\n      const startPos = Optional.from(resolve$1(dom.getRoot(), bookmark.start));\n      const endPos = Optional.from(resolve$1(dom.getRoot(), bookmark.end));\n      return lift2(startPos, endPos, (start, end) => {\n        const range = dom.createRng();\n        range.setStart(start.container(), start.offset());\n        range.setEnd(end.container(), end.offset());\n        return {\n          range,\n          forward: isForwardBookmark(bookmark)\n        };\n      });\n    };\n    const insertZwsp = (node, rng) => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      const textNode = doc.createTextNode(ZWSP$1);\n      node.appendChild(textNode);\n      rng.setStart(textNode, 0);\n      rng.setEnd(textNode, 0);\n    };\n    const isEmpty$1 = node => !node.hasChildNodes();\n    const tryFindRangePosition = (node, rng) => lastPositionIn(node).fold(never, pos => {\n      rng.setStart(pos.container(), pos.offset());\n      rng.setEnd(pos.container(), pos.offset());\n      return true;\n    });\n    const padEmptyCaretContainer = (root, node, rng) => {\n      if (isEmpty$1(node) && getParentCaretContainer(root, node)) {\n        insertZwsp(node, rng);\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const setEndPoint = (dom, start, bookmark, rng) => {\n      const point = bookmark[start ? 'start' : 'end'];\n      const root = dom.getRoot();\n      if (point) {\n        let node = root;\n        let offset = point[0];\n        for (let i = point.length - 1; node && i >= 1; i--) {\n          const children = node.childNodes;\n          if (padEmptyCaretContainer(root, node, rng)) {\n            return true;\n          }\n          if (point[i] > children.length - 1) {\n            if (padEmptyCaretContainer(root, node, rng)) {\n              return true;\n            }\n            return tryFindRangePosition(node, rng);\n          }\n          node = children[point[i]];\n        }\n        if (isText$a(node)) {\n          offset = Math.min(point[0], node.data.length);\n        }\n        if (isElement$6(node)) {\n          offset = Math.min(point[0], node.childNodes.length);\n        }\n        if (start) {\n          rng.setStart(node, offset);\n        } else {\n          rng.setEnd(node, offset);\n        }\n      }\n      return true;\n    };\n    const isValidTextNode = node => isText$a(node) && node.data.length > 0;\n    const restoreEndPoint = (dom, suffix, bookmark) => {\n      const marker = dom.get(bookmark.id + '_' + suffix);\n      const markerParent = marker === null || marker === void 0 ? void 0 : marker.parentNode;\n      const keep = bookmark.keep;\n      if (marker && markerParent) {\n        let container;\n        let offset;\n        if (suffix === 'start') {\n          if (!keep) {\n            container = markerParent;\n            offset = dom.nodeIndex(marker);\n          } else {\n            if (marker.hasChildNodes()) {\n              container = marker.firstChild;\n              offset = 1;\n            } else if (isValidTextNode(marker.nextSibling)) {\n              container = marker.nextSibling;\n              offset = 0;\n            } else if (isValidTextNode(marker.previousSibling)) {\n              container = marker.previousSibling;\n              offset = marker.previousSibling.data.length;\n            } else {\n              container = markerParent;\n              offset = dom.nodeIndex(marker) + 1;\n            }\n          }\n        } else {\n          if (!keep) {\n            container = markerParent;\n            offset = dom.nodeIndex(marker);\n          } else {\n            if (marker.hasChildNodes()) {\n              container = marker.firstChild;\n              offset = 1;\n            } else if (isValidTextNode(marker.previousSibling)) {\n              container = marker.previousSibling;\n              offset = marker.previousSibling.data.length;\n            } else {\n              container = markerParent;\n              offset = dom.nodeIndex(marker);\n            }\n          }\n        }\n        if (!keep) {\n          const prev = marker.previousSibling;\n          const next = marker.nextSibling;\n          Tools.each(Tools.grep(marker.childNodes), node => {\n            if (isText$a(node)) {\n              node.data = node.data.replace(/\\uFEFF/g, '');\n            }\n          });\n          let otherMarker;\n          while (otherMarker = dom.get(bookmark.id + '_' + suffix)) {\n            dom.remove(otherMarker, true);\n          }\n          if (isText$a(next) && isText$a(prev) && !Env.browser.isOpera()) {\n            const idx = prev.data.length;\n            prev.appendData(next.data);\n            dom.remove(next);\n            container = prev;\n            offset = idx;\n          }\n        }\n        return Optional.some(CaretPosition(container, offset));\n      } else {\n        return Optional.none();\n      }\n    };\n    const resolvePaths = (dom, bookmark) => {\n      const range = dom.createRng();\n      if (setEndPoint(dom, true, bookmark, range) && setEndPoint(dom, false, bookmark, range)) {\n        return Optional.some({\n          range,\n          forward: isForwardBookmark(bookmark)\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const resolveId = (dom, bookmark) => {\n      const startPos = restoreEndPoint(dom, 'start', bookmark);\n      const endPos = restoreEndPoint(dom, 'end', bookmark);\n      return lift2(startPos, endPos.or(startPos), (spos, epos) => {\n        const range = dom.createRng();\n        range.setStart(addBogus(dom, spos.container()), spos.offset());\n        range.setEnd(addBogus(dom, epos.container()), epos.offset());\n        return {\n          range,\n          forward: isForwardBookmark(bookmark)\n        };\n      });\n    };\n    const resolveIndex = (dom, bookmark) => Optional.from(dom.select(bookmark.name)[bookmark.index]).map(elm => {\n      const range = dom.createRng();\n      range.selectNode(elm);\n      return {\n        range,\n        forward: true\n      };\n    });\n    const resolve = (selection, bookmark) => {\n      const dom = selection.dom;\n      if (bookmark) {\n        if (isPathBookmark(bookmark)) {\n          return resolvePaths(dom, bookmark);\n        } else if (isStringPathBookmark(bookmark)) {\n          return resolveCaretPositionBookmark(dom, bookmark);\n        } else if (isIdBookmark(bookmark)) {\n          return resolveId(dom, bookmark);\n        } else if (isIndexBookmark(bookmark)) {\n          return resolveIndex(dom, bookmark);\n        } else if (isRangeBookmark(bookmark)) {\n          return Optional.some({\n            range: bookmark.rng,\n            forward: isForwardBookmark(bookmark)\n          });\n        }\n      }\n      return Optional.none();\n    };\n\n    const getBookmark$1 = (selection, type, normalized) => {\n      return getBookmark$2(selection, type, normalized);\n    };\n    const moveToBookmark = (selection, bookmark) => {\n      resolve(selection, bookmark).each(({\n        range,\n        forward\n      }) => {\n        selection.setRng(range, forward);\n      });\n    };\n    const isBookmarkNode$1 = node => {\n      return isElement$6(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\n    };\n\n    const is = expected => actual => expected === actual;\n    const isNbsp = is(nbsp);\n    const isWhiteSpace = chr => chr !== '' && ' \\f\\n\\r\\t\\x0B'.indexOf(chr) !== -1;\n    const isContent = chr => !isWhiteSpace(chr) && !isNbsp(chr) && !isZwsp$2(chr);\n\n    const getRanges$1 = selection => {\n      const ranges = [];\n      if (selection) {\n        for (let i = 0; i < selection.rangeCount; i++) {\n          ranges.push(selection.getRangeAt(i));\n        }\n      }\n      return ranges;\n    };\n    const getSelectedNodes = ranges => {\n      return bind$3(ranges, range => {\n        const node = getSelectedNode(range);\n        return node ? [SugarElement.fromDom(node)] : [];\n      });\n    };\n    const hasMultipleRanges = selection => {\n      return getRanges$1(selection).length > 1;\n    };\n\n    const getCellsFromRanges = ranges => filter$5(getSelectedNodes(ranges), isTableCell$2);\n    const getCellsFromElement = elm => descendants(elm, 'td[data-mce-selected],th[data-mce-selected]');\n    const getCellsFromElementOrRanges = (ranges, element) => {\n      const selectedCells = getCellsFromElement(element);\n      return selectedCells.length > 0 ? selectedCells : getCellsFromRanges(ranges);\n    };\n    const getCellsFromEditor = editor => getCellsFromElementOrRanges(getRanges$1(editor.selection.getSel()), SugarElement.fromDom(editor.getBody()));\n    const getClosestTable = (cell, isRoot) => ancestor$3(cell, 'table', isRoot);\n\n    const getStartNode = rng => {\n      const sc = rng.startContainer,\n        so = rng.startOffset;\n      if (isText$a(sc)) {\n        return so === 0 ? Optional.some(SugarElement.fromDom(sc)) : Optional.none();\n      } else {\n        return Optional.from(sc.childNodes[so]).map(SugarElement.fromDom);\n      }\n    };\n    const getEndNode = rng => {\n      const ec = rng.endContainer,\n        eo = rng.endOffset;\n      if (isText$a(ec)) {\n        return eo === ec.data.length ? Optional.some(SugarElement.fromDom(ec)) : Optional.none();\n      } else {\n        return Optional.from(ec.childNodes[eo - 1]).map(SugarElement.fromDom);\n      }\n    };\n    const getFirstChildren = node => {\n      return firstChild(node).fold(constant([node]), child => {\n        return [node].concat(getFirstChildren(child));\n      });\n    };\n    const getLastChildren = node => {\n      return lastChild(node).fold(constant([node]), child => {\n        if (name(child) === 'br') {\n          return prevSibling(child).map(sibling => {\n            return [node].concat(getLastChildren(sibling));\n          }).getOr([]);\n        } else {\n          return [node].concat(getLastChildren(child));\n        }\n      });\n    };\n    const hasAllContentsSelected = (elm, rng) => {\n      return lift2(getStartNode(rng), getEndNode(rng), (startNode, endNode) => {\n        const start = find$2(getFirstChildren(elm), curry(eq, startNode));\n        const end = find$2(getLastChildren(elm), curry(eq, endNode));\n        return start.isSome() && end.isSome();\n      }).getOr(false);\n    };\n    const moveEndPoint = (dom, rng, node, start) => {\n      const root = node;\n      const walker = new DomTreeWalker(node, root);\n      const moveCaretBeforeOnEnterElementsMap = filter$4(dom.schema.getMoveCaretBeforeOnEnterElements(), (_, name) => !contains$2(['td', 'th', 'table'], name.toLowerCase()));\n      let currentNode = node;\n      do {\n        if (isText$a(currentNode) && Tools.trim(currentNode.data).length !== 0) {\n          if (start) {\n            rng.setStart(currentNode, 0);\n          } else {\n            rng.setEnd(currentNode, currentNode.data.length);\n          }\n          return;\n        }\n        if (moveCaretBeforeOnEnterElementsMap[currentNode.nodeName]) {\n          if (start) {\n            rng.setStartBefore(currentNode);\n          } else {\n            if (currentNode.nodeName === 'BR') {\n              rng.setEndBefore(currentNode);\n            } else {\n              rng.setEndAfter(currentNode);\n            }\n          }\n          return;\n        }\n      } while (currentNode = start ? walker.next() : walker.prev());\n      if (root.nodeName === 'BODY') {\n        if (start) {\n          rng.setStart(root, 0);\n        } else {\n          rng.setEnd(root, root.childNodes.length);\n        }\n      }\n    };\n    const hasAnyRanges = editor => {\n      const sel = editor.selection.getSel();\n      return isNonNullable(sel) && sel.rangeCount > 0;\n    };\n    const runOnRanges = (editor, executor) => {\n      const fakeSelectionNodes = getCellsFromEditor(editor);\n      if (fakeSelectionNodes.length > 0) {\n        each$e(fakeSelectionNodes, elem => {\n          const node = elem.dom;\n          const fakeNodeRng = editor.dom.createRng();\n          fakeNodeRng.setStartBefore(node);\n          fakeNodeRng.setEndAfter(node);\n          executor(fakeNodeRng, true);\n        });\n      } else {\n        executor(editor.selection.getRng(), false);\n      }\n    };\n    const preserve = (selection, fillBookmark, executor) => {\n      const bookmark = getPersistentBookmark(selection, fillBookmark);\n      executor(bookmark);\n      selection.moveToBookmark(bookmark);\n    };\n\n    const isNode = node => isNumber(node === null || node === void 0 ? void 0 : node.nodeType);\n    const isElementNode$1 = node => isElement$6(node) && !isBookmarkNode$1(node) && !isCaretNode(node) && !isBogus$2(node);\n    const isElementDirectlySelected = (dom, node) => {\n      if (isElementNode$1(node) && !/^(TD|TH)$/.test(node.nodeName)) {\n        const selectedAttr = dom.getAttrib(node, 'data-mce-selected');\n        const value = parseInt(selectedAttr, 10);\n        return !isNaN(value) && value > 0;\n      } else {\n        return false;\n      }\n    };\n    const preserveSelection = (editor, action, shouldMoveStart) => {\n      const {\n        selection,\n        dom\n      } = editor;\n      const selectedNodeBeforeAction = selection.getNode();\n      const isSelectedBeforeNodeNoneditable = isContentEditableFalse$b(selectedNodeBeforeAction);\n      preserve(selection, true, () => {\n        action();\n      });\n      const isBeforeNodeStillNoneditable = isSelectedBeforeNodeNoneditable && isContentEditableFalse$b(selectedNodeBeforeAction);\n      if (isBeforeNodeStillNoneditable && dom.isChildOf(selectedNodeBeforeAction, editor.getBody())) {\n        editor.selection.select(selectedNodeBeforeAction);\n      } else if (shouldMoveStart(selection.getStart())) {\n        moveStartToNearestText(dom, selection);\n      }\n    };\n    const moveStartToNearestText = (dom, selection) => {\n      var _a, _b;\n      const rng = selection.getRng();\n      const {\n        startContainer,\n        startOffset\n      } = rng;\n      const selectedNode = selection.getNode();\n      if (isElementDirectlySelected(dom, selectedNode)) {\n        return;\n      }\n      if (isElement$6(startContainer)) {\n        const nodes = startContainer.childNodes;\n        const root = dom.getRoot();\n        let walker;\n        if (startOffset < nodes.length) {\n          const startNode = nodes[startOffset];\n          walker = new DomTreeWalker(startNode, (_a = dom.getParent(startNode, dom.isBlock)) !== null && _a !== void 0 ? _a : root);\n        } else {\n          const startNode = nodes[nodes.length - 1];\n          walker = new DomTreeWalker(startNode, (_b = dom.getParent(startNode, dom.isBlock)) !== null && _b !== void 0 ? _b : root);\n          walker.next(true);\n        }\n        for (let node = walker.current(); node; node = walker.next()) {\n          if (dom.getContentEditable(node) === 'false') {\n            return;\n          } else if (isText$a(node) && !isWhiteSpaceNode$1(node)) {\n            rng.setStart(node, 0);\n            selection.setRng(rng);\n            return;\n          }\n        }\n      }\n    };\n    const getNonWhiteSpaceSibling = (node, next, inc) => {\n      if (node) {\n        const nextName = next ? 'nextSibling' : 'previousSibling';\n        for (node = inc ? node : node[nextName]; node; node = node[nextName]) {\n          if (isElement$6(node) || !isWhiteSpaceNode$1(node)) {\n            return node;\n          }\n        }\n      }\n      return undefined;\n    };\n    const isTextBlock$1 = (schema, node) => !!schema.getTextBlockElements()[node.nodeName.toLowerCase()] || isTransparentBlock(schema, node);\n    const isValid = (ed, parent, child) => {\n      return ed.schema.isValidChild(parent, child);\n    };\n    const isWhiteSpaceNode$1 = (node, allowSpaces = false) => {\n      if (isNonNullable(node) && isText$a(node)) {\n        const data = allowSpaces ? node.data.replace(/ /g, '\\xA0') : node.data;\n        return isWhitespaceText(data);\n      } else {\n        return false;\n      }\n    };\n    const isEmptyTextNode$1 = node => {\n      return isNonNullable(node) && isText$a(node) && node.length === 0;\n    };\n    const isWrapNoneditableTarget = (editor, node) => {\n      const baseDataSelector = '[data-mce-cef-wrappable]';\n      const formatNoneditableSelector = getFormatNoneditableSelector(editor);\n      const selector = isEmpty$3(formatNoneditableSelector) ? baseDataSelector : \"\".concat(baseDataSelector, \",\").concat(formatNoneditableSelector);\n      return is$1(SugarElement.fromDom(node), selector);\n    };\n    const isWrappableNoneditable = (editor, node) => {\n      const dom = editor.dom;\n      return isElementNode$1(node) && dom.getContentEditable(node) === 'false' && isWrapNoneditableTarget(editor, node) && dom.select('[contenteditable=\"true\"]', node).length === 0;\n    };\n    const replaceVars = (value, vars) => {\n      if (isFunction(value)) {\n        return value(vars);\n      } else if (isNonNullable(vars)) {\n        value = value.replace(/%(\\w+)/g, (str, name) => {\n          return vars[name] || str;\n        });\n      }\n      return value;\n    };\n    const isEq$5 = (str1, str2) => {\n      str1 = str1 || '';\n      str2 = str2 || '';\n      str1 = '' + (str1.nodeName || str1);\n      str2 = '' + (str2.nodeName || str2);\n      return str1.toLowerCase() === str2.toLowerCase();\n    };\n    const normalizeStyleValue = (value, name) => {\n      if (isNullable(value)) {\n        return null;\n      } else {\n        let strValue = String(value);\n        if (name === 'color' || name === 'backgroundColor') {\n          strValue = rgbaToHexString(strValue);\n        }\n        if (name === 'fontWeight' && value === 700) {\n          strValue = 'bold';\n        }\n        if (name === 'fontFamily') {\n          strValue = strValue.replace(/[\\'\\\"]/g, '').replace(/,\\s+/g, ',');\n        }\n        return strValue;\n      }\n    };\n    const getStyle = (dom, node, name) => {\n      const style = dom.getStyle(node, name);\n      return normalizeStyleValue(style, name);\n    };\n    const getTextDecoration = (dom, node) => {\n      let decoration;\n      dom.getParent(node, n => {\n        if (isElement$6(n)) {\n          decoration = dom.getStyle(n, 'text-decoration');\n          return !!decoration && decoration !== 'none';\n        } else {\n          return false;\n        }\n      });\n      return decoration;\n    };\n    const getParents$2 = (dom, node, selector) => {\n      return dom.getParents(node, selector, dom.getRoot());\n    };\n    const isFormatPredicate = (editor, formatName, predicate) => {\n      const formats = editor.formatter.get(formatName);\n      return isNonNullable(formats) && exists(formats, predicate);\n    };\n    const isVariableFormatName = (editor, formatName) => {\n      const hasVariableValues = format => {\n        const isVariableValue = val => isFunction(val) || val.length > 1 && val.charAt(0) === '%';\n        return exists(['styles', 'attributes'], key => get$a(format, key).exists(field => {\n          const fieldValues = isArray$1(field) ? field : values(field);\n          return exists(fieldValues, isVariableValue);\n        }));\n      };\n      return isFormatPredicate(editor, formatName, hasVariableValues);\n    };\n    const areSimilarFormats = (editor, formatName, otherFormatName) => {\n      const validKeys = ['inline', 'block', 'selector', 'attributes', 'styles', 'classes'];\n      const filterObj = format => filter$4(format, (_, key) => exists(validKeys, validKey => validKey === key));\n      return isFormatPredicate(editor, formatName, fmt1 => {\n        const filteredFmt1 = filterObj(fmt1);\n        return isFormatPredicate(editor, otherFormatName, fmt2 => {\n          const filteredFmt2 = filterObj(fmt2);\n          return equal$1(filteredFmt1, filteredFmt2);\n        });\n      });\n    };\n    const isBlockFormat = format => hasNonNullableKey(format, 'block');\n    const isWrappingBlockFormat = format => isBlockFormat(format) && format.wrapper === true;\n    const isNonWrappingBlockFormat = format => isBlockFormat(format) && format.wrapper !== true;\n    const isSelectorFormat = format => hasNonNullableKey(format, 'selector');\n    const isInlineFormat = format => hasNonNullableKey(format, 'inline');\n    const isMixedFormat = format => isSelectorFormat(format) && isInlineFormat(format) && is$2(get$a(format, 'mixed'), true);\n    const shouldExpandToSelector = format => isSelectorFormat(format) && format.expand !== false && !isInlineFormat(format);\n    const getEmptyCaretContainers = node => {\n      const nodes = [];\n      let tempNode = node;\n      while (tempNode) {\n        if (isText$a(tempNode) && tempNode.data !== ZWSP$1 || tempNode.childNodes.length > 1) {\n          return [];\n        }\n        if (isElement$6(tempNode)) {\n          nodes.push(tempNode);\n        }\n        tempNode = tempNode.firstChild;\n      }\n      return nodes;\n    };\n    const isCaretContainerEmpty = node => {\n      return getEmptyCaretContainers(node).length > 0;\n    };\n    const isEmptyCaretFormatElement = element => {\n      return isCaretNode(element.dom) && isCaretContainerEmpty(element.dom);\n    };\n\n    const isBookmarkNode = isBookmarkNode$1;\n    const getParents$1 = getParents$2;\n    const isWhiteSpaceNode = isWhiteSpaceNode$1;\n    const isTextBlock = isTextBlock$1;\n    const isBogusBr = node => {\n      return isBr$6(node) && node.getAttribute('data-mce-bogus') && !node.nextSibling;\n    };\n    const findParentContentEditable = (dom, node) => {\n      let parent = node;\n      while (parent) {\n        if (isElement$6(parent) && dom.getContentEditable(parent)) {\n          return dom.getContentEditable(parent) === 'false' ? parent : node;\n        }\n        parent = parent.parentNode;\n      }\n      return node;\n    };\n    const walkText = (start, node, offset, predicate) => {\n      const str = node.data;\n      if (start) {\n        for (let i = offset; i > 0; i--) {\n          if (predicate(str.charAt(i - 1))) {\n            return i;\n          }\n        }\n      } else {\n        for (let i = offset; i < str.length; i++) {\n          if (predicate(str.charAt(i))) {\n            return i;\n          }\n        }\n      }\n      return -1;\n    };\n    const findSpace = (start, node, offset) => walkText(start, node, offset, c => isNbsp(c) || isWhiteSpace(c));\n    const findContent = (start, node, offset) => walkText(start, node, offset, isContent);\n    const findWordEndPoint = (dom, body, container, offset, start, includeTrailingSpaces) => {\n      let lastTextNode;\n      const rootNode = dom.getParent(container, dom.isBlock) || body;\n      const walk = (container, offset, pred) => {\n        const textSeeker = TextSeeker(dom);\n        const walker = start ? textSeeker.backwards : textSeeker.forwards;\n        return Optional.from(walker(container, offset, (text, textOffset) => {\n          if (isBookmarkNode(text.parentNode)) {\n            return -1;\n          } else {\n            lastTextNode = text;\n            return pred(start, text, textOffset);\n          }\n        }, rootNode));\n      };\n      const spaceResult = walk(container, offset, findSpace);\n      return spaceResult.bind(result => includeTrailingSpaces ? walk(result.container, result.offset + (start ? -1 : 0), findContent) : Optional.some(result)).orThunk(() => lastTextNode ? Optional.some({\n        container: lastTextNode,\n        offset: start ? 0 : lastTextNode.length\n      }) : Optional.none());\n    };\n    const findSelectorEndPoint = (dom, formatList, rng, container, siblingName) => {\n      const sibling = container[siblingName];\n      if (isText$a(container) && isEmpty$3(container.data) && sibling) {\n        container = sibling;\n      }\n      const parents = getParents$1(dom, container);\n      for (let i = 0; i < parents.length; i++) {\n        for (let y = 0; y < formatList.length; y++) {\n          const curFormat = formatList[y];\n          if (isNonNullable(curFormat.collapsed) && curFormat.collapsed !== rng.collapsed) {\n            continue;\n          }\n          if (isSelectorFormat(curFormat) && dom.is(parents[i], curFormat.selector)) {\n            return parents[i];\n          }\n        }\n      }\n      return container;\n    };\n    const findBlockEndPoint = (dom, formatList, container, siblingName) => {\n      var _a;\n      let node = container;\n      const root = dom.getRoot();\n      const format = formatList[0];\n      if (isBlockFormat(format)) {\n        node = format.wrapper ? null : dom.getParent(container, format.block, root);\n      }\n      if (!node) {\n        const scopeRoot = (_a = dom.getParent(container, 'LI,TD,TH,SUMMARY')) !== null && _a !== void 0 ? _a : root;\n        node = dom.getParent(isText$a(container) ? container.parentNode : container, node => node !== root && isTextBlock(dom.schema, node), scopeRoot);\n      }\n      if (node && isBlockFormat(format) && format.wrapper) {\n        node = getParents$1(dom, node, 'ul,ol').reverse()[0] || node;\n      }\n      if (!node) {\n        node = container;\n        while (node && node[siblingName] && !dom.isBlock(node[siblingName])) {\n          node = node[siblingName];\n          if (isEq$5(node, 'br')) {\n            break;\n          }\n        }\n      }\n      return node || container;\n    };\n    const isAtBlockBoundary$1 = (dom, root, container, siblingName) => {\n      const parent = container.parentNode;\n      if (isNonNullable(container[siblingName])) {\n        return false;\n      } else if (parent === root || isNullable(parent) || dom.isBlock(parent)) {\n        return true;\n      } else {\n        return isAtBlockBoundary$1(dom, root, parent, siblingName);\n      }\n    };\n    const findParentContainer = (dom, formatList, container, offset, start) => {\n      let parent = container;\n      const siblingName = start ? 'previousSibling' : 'nextSibling';\n      const root = dom.getRoot();\n      if (isText$a(container) && !isWhiteSpaceNode(container)) {\n        if (start ? offset > 0 : offset < container.data.length) {\n          return container;\n        }\n      }\n      while (parent) {\n        if (!formatList[0].block_expand && dom.isBlock(parent)) {\n          return parent;\n        }\n        for (let sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {\n          const allowSpaces = isText$a(sibling) && !isAtBlockBoundary$1(dom, root, sibling, siblingName);\n          if (!isBookmarkNode(sibling) && !isBogusBr(sibling) && !isWhiteSpaceNode(sibling, allowSpaces)) {\n            return parent;\n          }\n        }\n        if (parent === root || parent.parentNode === root) {\n          container = parent;\n          break;\n        }\n        parent = parent.parentNode;\n      }\n      return container;\n    };\n    const isSelfOrParentBookmark = container => isBookmarkNode(container.parentNode) || isBookmarkNode(container);\n    const expandRng = (dom, rng, formatList, includeTrailingSpace = false) => {\n      let {\n        startContainer,\n        startOffset,\n        endContainer,\n        endOffset\n      } = rng;\n      const format = formatList[0];\n      if (isElement$6(startContainer) && startContainer.hasChildNodes()) {\n        startContainer = getNode$1(startContainer, startOffset);\n        if (isText$a(startContainer)) {\n          startOffset = 0;\n        }\n      }\n      if (isElement$6(endContainer) && endContainer.hasChildNodes()) {\n        endContainer = getNode$1(endContainer, rng.collapsed ? endOffset : endOffset - 1);\n        if (isText$a(endContainer)) {\n          endOffset = endContainer.data.length;\n        }\n      }\n      startContainer = findParentContentEditable(dom, startContainer);\n      endContainer = findParentContentEditable(dom, endContainer);\n      if (isSelfOrParentBookmark(startContainer)) {\n        startContainer = isBookmarkNode(startContainer) ? startContainer : startContainer.parentNode;\n        if (rng.collapsed) {\n          startContainer = startContainer.previousSibling || startContainer;\n        } else {\n          startContainer = startContainer.nextSibling || startContainer;\n        }\n        if (isText$a(startContainer)) {\n          startOffset = rng.collapsed ? startContainer.length : 0;\n        }\n      }\n      if (isSelfOrParentBookmark(endContainer)) {\n        endContainer = isBookmarkNode(endContainer) ? endContainer : endContainer.parentNode;\n        if (rng.collapsed) {\n          endContainer = endContainer.nextSibling || endContainer;\n        } else {\n          endContainer = endContainer.previousSibling || endContainer;\n        }\n        if (isText$a(endContainer)) {\n          endOffset = rng.collapsed ? 0 : endContainer.length;\n        }\n      }\n      if (rng.collapsed) {\n        const startPoint = findWordEndPoint(dom, dom.getRoot(), startContainer, startOffset, true, includeTrailingSpace);\n        startPoint.each(({\n          container,\n          offset\n        }) => {\n          startContainer = container;\n          startOffset = offset;\n        });\n        const endPoint = findWordEndPoint(dom, dom.getRoot(), endContainer, endOffset, false, includeTrailingSpace);\n        endPoint.each(({\n          container,\n          offset\n        }) => {\n          endContainer = container;\n          endOffset = offset;\n        });\n      }\n      if (isInlineFormat(format) || format.block_expand) {\n        if (!isInlineFormat(format) || !isText$a(startContainer) || startOffset === 0) {\n          startContainer = findParentContainer(dom, formatList, startContainer, startOffset, true);\n        }\n        if (!isInlineFormat(format) || !isText$a(endContainer) || endOffset === endContainer.data.length) {\n          endContainer = findParentContainer(dom, formatList, endContainer, endOffset, false);\n        }\n      }\n      if (shouldExpandToSelector(format)) {\n        startContainer = findSelectorEndPoint(dom, formatList, rng, startContainer, 'previousSibling');\n        endContainer = findSelectorEndPoint(dom, formatList, rng, endContainer, 'nextSibling');\n      }\n      if (isBlockFormat(format) || isSelectorFormat(format)) {\n        startContainer = findBlockEndPoint(dom, formatList, startContainer, 'previousSibling');\n        endContainer = findBlockEndPoint(dom, formatList, endContainer, 'nextSibling');\n        if (isBlockFormat(format)) {\n          if (!dom.isBlock(startContainer)) {\n            startContainer = findParentContainer(dom, formatList, startContainer, startOffset, true);\n          }\n          if (!dom.isBlock(endContainer)) {\n            endContainer = findParentContainer(dom, formatList, endContainer, endOffset, false);\n          }\n        }\n      }\n      if (isElement$6(startContainer) && startContainer.parentNode) {\n        startOffset = dom.nodeIndex(startContainer);\n        startContainer = startContainer.parentNode;\n      }\n      if (isElement$6(endContainer) && endContainer.parentNode) {\n        endOffset = dom.nodeIndex(endContainer) + 1;\n        endContainer = endContainer.parentNode;\n      }\n      return {\n        startContainer,\n        startOffset,\n        endContainer,\n        endOffset\n      };\n    };\n\n    const walk$3 = (dom, rng, callback) => {\n      var _a;\n      const startOffset = rng.startOffset;\n      const startContainer = getNode$1(rng.startContainer, startOffset);\n      const endOffset = rng.endOffset;\n      const endContainer = getNode$1(rng.endContainer, endOffset - 1);\n      const exclude = nodes => {\n        const firstNode = nodes[0];\n        if (isText$a(firstNode) && firstNode === startContainer && startOffset >= firstNode.data.length) {\n          nodes.splice(0, 1);\n        }\n        const lastNode = nodes[nodes.length - 1];\n        if (endOffset === 0 && nodes.length > 0 && lastNode === endContainer && isText$a(lastNode)) {\n          nodes.splice(nodes.length - 1, 1);\n        }\n        return nodes;\n      };\n      const collectSiblings = (node, name, endNode) => {\n        const siblings = [];\n        for (; node && node !== endNode; node = node[name]) {\n          siblings.push(node);\n        }\n        return siblings;\n      };\n      const findEndPoint = (node, root) => dom.getParent(node, node => node.parentNode === root, root);\n      const walkBoundary = (startNode, endNode, next) => {\n        const siblingName = next ? 'nextSibling' : 'previousSibling';\n        for (let node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) {\n          parent = node.parentNode;\n          const siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName);\n          if (siblings.length) {\n            if (!next) {\n              siblings.reverse();\n            }\n            callback(exclude(siblings));\n          }\n        }\n      };\n      if (startContainer === endContainer) {\n        return callback(exclude([startContainer]));\n      }\n      const ancestor = (_a = dom.findCommonAncestor(startContainer, endContainer)) !== null && _a !== void 0 ? _a : dom.getRoot();\n      if (dom.isChildOf(startContainer, endContainer)) {\n        return walkBoundary(startContainer, ancestor, true);\n      }\n      if (dom.isChildOf(endContainer, startContainer)) {\n        return walkBoundary(endContainer, ancestor);\n      }\n      const startPoint = findEndPoint(startContainer, ancestor) || startContainer;\n      const endPoint = findEndPoint(endContainer, ancestor) || endContainer;\n      walkBoundary(startContainer, startPoint, true);\n      const siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint);\n      if (siblings.length) {\n        callback(exclude(siblings));\n      }\n      walkBoundary(endContainer, endPoint);\n    };\n\n    const validBlocks = ['pre[class*=language-][contenteditable=\"false\"]', 'figure.image', 'div[data-ephox-embed-iri]', 'div.tiny-pageembed', 'div.mce-toc', 'div[data-mce-toc]'];\n    const isZeroWidth = elem => isText$b(elem) && get$3(elem) === ZWSP$1;\n    const context = (editor, elem, wrapName, nodeName) => parent(elem).fold(() => 'skipping', parent => {\n      if (nodeName === 'br' || isZeroWidth(elem)) {\n        return 'valid';\n      } else if (isAnnotation(elem)) {\n        return 'existing';\n      } else if (isCaretNode(elem.dom)) {\n        return 'caret';\n      } else if (exists(validBlocks, selector => is$1(elem, selector))) {\n        return 'valid-block';\n      } else if (!isValid(editor, wrapName, nodeName) || !isValid(editor, name(parent), wrapName)) {\n        return 'invalid-child';\n      } else {\n        return 'valid';\n      }\n    });\n\n    const applyWordGrab = (editor, rng) => {\n      const r = expandRng(editor.dom, rng, [{\n        inline: 'span'\n      }]);\n      rng.setStart(r.startContainer, r.startOffset);\n      rng.setEnd(r.endContainer, r.endOffset);\n      editor.selection.setRng(rng);\n    };\n    const applyAnnotation = (elem, masterUId, data, annotationName, decorate, directAnnotation) => {\n      const {\n        uid = masterUId,\n        ...otherData\n      } = data;\n      add$2(elem, annotation());\n      set$3(elem, \"\".concat(dataAnnotationId()), uid);\n      set$3(elem, \"\".concat(dataAnnotation()), annotationName);\n      const {\n        attributes = {},\n        classes = []\n      } = decorate(uid, otherData);\n      setAll$1(elem, attributes);\n      add(elem, classes);\n      if (directAnnotation) {\n        if (classes.length > 0) {\n          set$3(elem, \"\".concat(dataAnnotationClasses()), classes.join(','));\n        }\n        const attributeNames = keys(attributes);\n        if (attributeNames.length > 0) {\n          set$3(elem, \"\".concat(dataAnnotationAttributes()), attributeNames.join(','));\n        }\n      }\n    };\n    const removeDirectAnnotation = elem => {\n      remove$7(elem, annotation());\n      remove$a(elem, \"\".concat(dataAnnotationId()));\n      remove$a(elem, \"\".concat(dataAnnotation()));\n      remove$a(elem, \"\".concat(dataAnnotationActive()));\n      const customAttrNames = getOpt(elem, \"\".concat(dataAnnotationAttributes())).map(names => names.split(',')).getOr([]);\n      const customClasses = getOpt(elem, \"\".concat(dataAnnotationClasses())).map(names => names.split(',')).getOr([]);\n      each$e(customAttrNames, name => remove$a(elem, name));\n      remove$4(elem, customClasses);\n      remove$a(elem, \"\".concat(dataAnnotationClasses()));\n      remove$a(elem, \"\".concat(dataAnnotationAttributes()));\n    };\n    const makeAnnotation = (eDoc, uid, data, annotationName, decorate) => {\n      const master = SugarElement.fromTag('span', eDoc);\n      applyAnnotation(master, uid, data, annotationName, decorate, false);\n      return master;\n    };\n    const annotate = (editor, rng, uid, annotationName, decorate, data) => {\n      const newWrappers = [];\n      const master = makeAnnotation(editor.getDoc(), uid, data, annotationName, decorate);\n      const wrapper = value$2();\n      const finishWrapper = () => {\n        wrapper.clear();\n      };\n      const getOrOpenWrapper = () => wrapper.get().getOrThunk(() => {\n        const nu = shallow$1(master);\n        newWrappers.push(nu);\n        wrapper.set(nu);\n        return nu;\n      });\n      const processElements = elems => {\n        each$e(elems, processElement);\n      };\n      const processElement = elem => {\n        const ctx = context(editor, elem, 'span', name(elem));\n        switch (ctx) {\n          case 'invalid-child':\n            {\n              finishWrapper();\n              const children = children$1(elem);\n              processElements(children);\n              finishWrapper();\n              break;\n            }\n          case 'valid-block':\n            {\n              finishWrapper();\n              applyAnnotation(elem, uid, data, annotationName, decorate, true);\n              break;\n            }\n          case 'valid':\n            {\n              const w = getOrOpenWrapper();\n              wrap$2(elem, w);\n              break;\n            }\n        }\n      };\n      const processNodes = nodes => {\n        const elems = map$3(nodes, SugarElement.fromDom);\n        processElements(elems);\n      };\n      walk$3(editor.dom, rng, nodes => {\n        finishWrapper();\n        processNodes(nodes);\n      });\n      return newWrappers;\n    };\n    const annotateWithBookmark = (editor, name, settings, data) => {\n      editor.undoManager.transact(() => {\n        const selection = editor.selection;\n        const initialRng = selection.getRng();\n        const hasFakeSelection = getCellsFromEditor(editor).length > 0;\n        const masterUid = generate$1('mce-annotation');\n        if (initialRng.collapsed && !hasFakeSelection) {\n          applyWordGrab(editor, initialRng);\n        }\n        if (selection.getRng().collapsed && !hasFakeSelection) {\n          const wrapper = makeAnnotation(editor.getDoc(), masterUid, data, name, settings.decorate);\n          set$1(wrapper, nbsp);\n          selection.getRng().insertNode(wrapper.dom);\n          selection.select(wrapper.dom);\n        } else {\n          preserve(selection, false, () => {\n            runOnRanges(editor, selectionRng => {\n              annotate(editor, selectionRng, masterUid, name, settings.decorate, data);\n            });\n          });\n        }\n      });\n    };\n\n    const Annotator = editor => {\n      const registry = create$c();\n      setup$x(editor, registry);\n      const changes = setup$y(editor, registry);\n      const isSpan = isTag('span');\n      const removeAnnotations = elements => {\n        each$e(elements, element => {\n          if (isSpan(element)) {\n            unwrap(element);\n          } else {\n            removeDirectAnnotation(element);\n          }\n        });\n      };\n      return {\n        register: (name, settings) => {\n          registry.register(name, settings);\n        },\n        annotate: (name, data) => {\n          registry.lookup(name).each(settings => {\n            annotateWithBookmark(editor, name, settings, data);\n          });\n        },\n        annotationChanged: (name, callback) => {\n          changes.addListener(name, callback);\n        },\n        remove: name => {\n          identify(editor, Optional.some(name)).each(({\n            elements\n          }) => {\n            const bookmark = editor.selection.getBookmark();\n            removeAnnotations(elements);\n            editor.selection.moveToBookmark(bookmark);\n          });\n        },\n        removeAll: name => {\n          const bookmark = editor.selection.getBookmark();\n          each$d(findAll(editor, name), (elements, _) => {\n            removeAnnotations(elements);\n          });\n          editor.selection.moveToBookmark(bookmark);\n        },\n        getAll: name => {\n          const directory = findAll(editor, name);\n          return map$2(directory, elems => map$3(elems, elem => elem.dom));\n        }\n      };\n    };\n\n    const BookmarkManager = selection => {\n      return {\n        getBookmark: curry(getBookmark$1, selection),\n        moveToBookmark: curry(moveToBookmark, selection)\n      };\n    };\n    BookmarkManager.isBookmarkNode = isBookmarkNode$1;\n\n    const isXYWithinRange = (clientX, clientY, range) => {\n      if (range.collapsed) {\n        return false;\n      } else {\n        return exists(range.getClientRects(), rect => containsXY(rect, clientX, clientY));\n      }\n    };\n\n    const firePreProcess = (editor, args) => editor.dispatch('PreProcess', args);\n    const firePostProcess = (editor, args) => editor.dispatch('PostProcess', args);\n    const fireRemove = editor => {\n      editor.dispatch('remove');\n    };\n    const fireDetach = editor => {\n      editor.dispatch('detach');\n    };\n    const fireSwitchMode = (editor, mode) => {\n      editor.dispatch('SwitchMode', {\n        mode\n      });\n    };\n    const fireObjectResizeStart = (editor, target, width, height, origin) => {\n      editor.dispatch('ObjectResizeStart', {\n        target,\n        width,\n        height,\n        origin\n      });\n    };\n    const fireObjectResized = (editor, target, width, height, origin) => {\n      editor.dispatch('ObjectResized', {\n        target,\n        width,\n        height,\n        origin\n      });\n    };\n    const firePreInit = editor => {\n      editor.dispatch('PreInit');\n    };\n    const firePostRender = editor => {\n      editor.dispatch('PostRender');\n    };\n    const fireInit = editor => {\n      editor.dispatch('Init');\n    };\n    const firePlaceholderToggle = (editor, state) => {\n      editor.dispatch('PlaceholderToggle', {\n        state\n      });\n    };\n    const fireError = (editor, errorType, error) => {\n      editor.dispatch(errorType, error);\n    };\n    const fireFormatApply = (editor, format, node, vars) => {\n      editor.dispatch('FormatApply', {\n        format,\n        node,\n        vars\n      });\n    };\n    const fireFormatRemove = (editor, format, node, vars) => {\n      editor.dispatch('FormatRemove', {\n        format,\n        node,\n        vars\n      });\n    };\n    const fireBeforeSetContent = (editor, args) => editor.dispatch('BeforeSetContent', args);\n    const fireSetContent = (editor, args) => editor.dispatch('SetContent', args);\n    const fireBeforeGetContent = (editor, args) => editor.dispatch('BeforeGetContent', args);\n    const fireGetContent = (editor, args) => editor.dispatch('GetContent', args);\n    const fireAutocompleterStart = (editor, args) => {\n      editor.dispatch('AutocompleterStart', args);\n    };\n    const fireAutocompleterUpdate = (editor, args) => {\n      editor.dispatch('AutocompleterUpdate', args);\n    };\n    const fireAutocompleterEnd = editor => {\n      editor.dispatch('AutocompleterEnd');\n    };\n    const firePastePreProcess = (editor, html, internal) => editor.dispatch('PastePreProcess', {\n      content: html,\n      internal\n    });\n    const firePastePostProcess = (editor, node, internal) => editor.dispatch('PastePostProcess', {\n      node,\n      internal\n    });\n    const firePastePlainTextToggle = (editor, state) => editor.dispatch('PastePlainTextToggle', {\n      state\n    });\n    const fireEditableRootStateChange = (editor, state) => editor.dispatch('EditableRootStateChange', {\n      state\n    });\n\n    const VK = {\n      BACKSPACE: 8,\n      DELETE: 46,\n      DOWN: 40,\n      ENTER: 13,\n      ESC: 27,\n      LEFT: 37,\n      RIGHT: 39,\n      SPACEBAR: 32,\n      TAB: 9,\n      UP: 38,\n      PAGE_UP: 33,\n      PAGE_DOWN: 34,\n      END: 35,\n      HOME: 36,\n      modifierPressed: e => {\n        return e.shiftKey || e.ctrlKey || e.altKey || VK.metaKeyPressed(e);\n      },\n      metaKeyPressed: e => {\n        return Env.os.isMacOS() || Env.os.isiOS() ? e.metaKey : e.ctrlKey && !e.altKey;\n      }\n    };\n\n    const elementSelectionAttr = 'data-mce-selected';\n    const controlElmSelector = 'table,img,figure.image,hr,video,span.mce-preview-object,details';\n    const abs = Math.abs;\n    const round$1 = Math.round;\n    const resizeHandles = {\n      nw: [0, 0, -1, -1],\n      ne: [1, 0, 1, -1],\n      se: [1, 1, 1, 1],\n      sw: [0, 1, -1, 1]\n    };\n    const isTouchEvent = evt => evt.type === 'longpress' || evt.type.indexOf('touch') === 0;\n    const ControlSelection = (selection, editor) => {\n      const dom = editor.dom;\n      const editableDoc = editor.getDoc();\n      const rootDocument = document;\n      const rootElement = editor.getBody();\n      let selectedElm, selectedElmGhost, resizeHelper, selectedHandle, resizeBackdrop;\n      let startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;\n      let width;\n      let height;\n      let startScrollWidth;\n      let startScrollHeight;\n      const isImage = elm => isNonNullable(elm) && (isImg(elm) || dom.is(elm, 'figure.image'));\n      const isMedia = elm => isMedia$2(elm) || dom.hasClass(elm, 'mce-preview-object');\n      const isEventOnImageOutsideRange = (evt, range) => {\n        if (isTouchEvent(evt)) {\n          const touch = evt.touches[0];\n          return isImage(evt.target) && !isXYWithinRange(touch.clientX, touch.clientY, range);\n        } else {\n          return isImage(evt.target) && !isXYWithinRange(evt.clientX, evt.clientY, range);\n        }\n      };\n      const contextMenuSelectImage = evt => {\n        const target = evt.target;\n        if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {\n          editor.selection.select(target);\n        }\n      };\n      const getResizeTargets = elm => {\n        if (dom.hasClass(elm, 'mce-preview-object') && isNonNullable(elm.firstElementChild)) {\n          return [elm, elm.firstElementChild];\n        } else if (dom.is(elm, 'figure.image')) {\n          return [elm.querySelector('img')];\n        } else {\n          return [elm];\n        }\n      };\n      const isResizable = elm => {\n        const selector = getObjectResizing(editor);\n        if (!selector) {\n          return false;\n        }\n        if (elm.getAttribute('data-mce-resize') === 'false') {\n          return false;\n        }\n        if (elm === editor.getBody()) {\n          return false;\n        }\n        if (dom.hasClass(elm, 'mce-preview-object') && isNonNullable(elm.firstElementChild)) {\n          return is$1(SugarElement.fromDom(elm.firstElementChild), selector);\n        } else {\n          return is$1(SugarElement.fromDom(elm), selector);\n        }\n      };\n      const createGhostElement = elm => {\n        if (isMedia(elm)) {\n          return dom.create('img', {\n            src: Env.transparentSrc\n          });\n        } else {\n          return elm.cloneNode(true);\n        }\n      };\n      const setSizeProp = (element, name, value) => {\n        if (isNonNullable(value)) {\n          const targets = getResizeTargets(element);\n          each$e(targets, target => {\n            if (target.style[name] || !editor.schema.isValid(target.nodeName.toLowerCase(), name)) {\n              dom.setStyle(target, name, value);\n            } else {\n              dom.setAttrib(target, name, '' + value);\n            }\n          });\n        }\n      };\n      const setGhostElmSize = (ghostElm, width, height) => {\n        setSizeProp(ghostElm, 'width', width);\n        setSizeProp(ghostElm, 'height', height);\n      };\n      const resizeGhostElement = e => {\n        let deltaX, deltaY, proportional;\n        let resizeHelperX, resizeHelperY;\n        deltaX = e.screenX - startX;\n        deltaY = e.screenY - startY;\n        width = deltaX * selectedHandle[2] + startW;\n        height = deltaY * selectedHandle[3] + startH;\n        width = width < 5 ? 5 : width;\n        height = height < 5 ? 5 : height;\n        if ((isImage(selectedElm) || isMedia(selectedElm)) && getResizeImgProportional(editor) !== false) {\n          proportional = !VK.modifierPressed(e);\n        } else {\n          proportional = VK.modifierPressed(e);\n        }\n        if (proportional) {\n          if (abs(deltaX) > abs(deltaY)) {\n            height = round$1(width * ratio);\n            width = round$1(height / ratio);\n          } else {\n            width = round$1(height / ratio);\n            height = round$1(width * ratio);\n          }\n        }\n        setGhostElmSize(selectedElmGhost, width, height);\n        resizeHelperX = selectedHandle.startPos.x + deltaX;\n        resizeHelperY = selectedHandle.startPos.y + deltaY;\n        resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;\n        resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;\n        dom.setStyles(resizeHelper, {\n          left: resizeHelperX,\n          top: resizeHelperY,\n          display: 'block'\n        });\n        resizeHelper.innerHTML = width + ' &times; ' + height;\n        if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {\n          dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));\n        }\n        if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {\n          dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));\n        }\n        deltaX = rootElement.scrollWidth - startScrollWidth;\n        deltaY = rootElement.scrollHeight - startScrollHeight;\n        if (deltaX + deltaY !== 0) {\n          dom.setStyles(resizeHelper, {\n            left: resizeHelperX - deltaX,\n            top: resizeHelperY - deltaY\n          });\n        }\n        if (!resizeStarted) {\n          fireObjectResizeStart(editor, selectedElm, startW, startH, 'corner-' + selectedHandle.name);\n          resizeStarted = true;\n        }\n      };\n      const endGhostResize = () => {\n        const wasResizeStarted = resizeStarted;\n        resizeStarted = false;\n        if (wasResizeStarted) {\n          setSizeProp(selectedElm, 'width', width);\n          setSizeProp(selectedElm, 'height', height);\n        }\n        dom.unbind(editableDoc, 'mousemove', resizeGhostElement);\n        dom.unbind(editableDoc, 'mouseup', endGhostResize);\n        if (rootDocument !== editableDoc) {\n          dom.unbind(rootDocument, 'mousemove', resizeGhostElement);\n          dom.unbind(rootDocument, 'mouseup', endGhostResize);\n        }\n        dom.remove(selectedElmGhost);\n        dom.remove(resizeHelper);\n        dom.remove(resizeBackdrop);\n        showResizeRect(selectedElm);\n        if (wasResizeStarted) {\n          fireObjectResized(editor, selectedElm, width, height, 'corner-' + selectedHandle.name);\n          dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));\n        }\n        editor.nodeChanged();\n      };\n      const showResizeRect = targetElm => {\n        unbindResizeHandleEvents();\n        const position = dom.getPos(targetElm, rootElement);\n        const selectedElmX = position.x;\n        const selectedElmY = position.y;\n        const rect = targetElm.getBoundingClientRect();\n        const targetWidth = rect.width || rect.right - rect.left;\n        const targetHeight = rect.height || rect.bottom - rect.top;\n        if (selectedElm !== targetElm) {\n          hideResizeRect();\n          selectedElm = targetElm;\n          width = height = 0;\n        }\n        const e = editor.dispatch('ObjectSelected', {\n          target: targetElm\n        });\n        if (isResizable(targetElm) && !e.isDefaultPrevented()) {\n          each$d(resizeHandles, (handle, name) => {\n            const startDrag = e => {\n              const target = getResizeTargets(selectedElm)[0];\n              startX = e.screenX;\n              startY = e.screenY;\n              startW = target.clientWidth;\n              startH = target.clientHeight;\n              ratio = startH / startW;\n              selectedHandle = handle;\n              selectedHandle.name = name;\n              selectedHandle.startPos = {\n                x: targetWidth * handle[0] + selectedElmX,\n                y: targetHeight * handle[1] + selectedElmY\n              };\n              startScrollWidth = rootElement.scrollWidth;\n              startScrollHeight = rootElement.scrollHeight;\n              resizeBackdrop = dom.add(rootElement, 'div', {\n                'class': 'mce-resize-backdrop',\n                'data-mce-bogus': 'all'\n              });\n              dom.setStyles(resizeBackdrop, {\n                position: 'fixed',\n                left: '0',\n                top: '0',\n                width: '100%',\n                height: '100%'\n              });\n              selectedElmGhost = createGhostElement(selectedElm);\n              dom.addClass(selectedElmGhost, 'mce-clonedresizable');\n              dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');\n              selectedElmGhost.contentEditable = 'false';\n              dom.setStyles(selectedElmGhost, {\n                left: selectedElmX,\n                top: selectedElmY,\n                margin: 0\n              });\n              setGhostElmSize(selectedElmGhost, targetWidth, targetHeight);\n              selectedElmGhost.removeAttribute(elementSelectionAttr);\n              rootElement.appendChild(selectedElmGhost);\n              dom.bind(editableDoc, 'mousemove', resizeGhostElement);\n              dom.bind(editableDoc, 'mouseup', endGhostResize);\n              if (rootDocument !== editableDoc) {\n                dom.bind(rootDocument, 'mousemove', resizeGhostElement);\n                dom.bind(rootDocument, 'mouseup', endGhostResize);\n              }\n              resizeHelper = dom.add(rootElement, 'div', {\n                'class': 'mce-resize-helper',\n                'data-mce-bogus': 'all'\n              }, startW + ' &times; ' + startH);\n            };\n            let handleElm = dom.get('mceResizeHandle' + name);\n            if (handleElm) {\n              dom.remove(handleElm);\n            }\n            handleElm = dom.add(rootElement, 'div', {\n              'id': 'mceResizeHandle' + name,\n              'data-mce-bogus': 'all',\n              'class': 'mce-resizehandle',\n              'unselectable': true,\n              'style': 'cursor:' + name + '-resize; margin:0; padding:0'\n            });\n            dom.bind(handleElm, 'mousedown', e => {\n              e.stopImmediatePropagation();\n              e.preventDefault();\n              startDrag(e);\n            });\n            handle.elm = handleElm;\n            dom.setStyles(handleElm, {\n              left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2,\n              top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2\n            });\n          });\n        } else {\n          hideResizeRect(false);\n        }\n      };\n      const throttledShowResizeRect = first$1(showResizeRect, 0);\n      const hideResizeRect = (removeSelected = true) => {\n        throttledShowResizeRect.cancel();\n        unbindResizeHandleEvents();\n        if (selectedElm && removeSelected) {\n          selectedElm.removeAttribute(elementSelectionAttr);\n        }\n        each$d(resizeHandles, (value, name) => {\n          const handleElm = dom.get('mceResizeHandle' + name);\n          if (handleElm) {\n            dom.unbind(handleElm);\n            dom.remove(handleElm);\n          }\n        });\n      };\n      const isChildOrEqual = (node, parent) => dom.isChildOf(node, parent);\n      const updateResizeRect = e => {\n        if (resizeStarted || editor.removed || editor.composing) {\n          return;\n        }\n        const targetElm = e.type === 'mousedown' ? e.target : selection.getNode();\n        const controlElm = closest$3(SugarElement.fromDom(targetElm), controlElmSelector).map(e => e.dom).filter(e => dom.isEditable(e.parentElement) || e.nodeName === 'IMG' && dom.isEditable(e)).getOrUndefined();\n        const selectedValue = isNonNullable(controlElm) ? dom.getAttrib(controlElm, elementSelectionAttr, '1') : '1';\n        each$e(dom.select(\"img[\".concat(elementSelectionAttr, \"],hr[\").concat(elementSelectionAttr, \"]\")), img => {\n          img.removeAttribute(elementSelectionAttr);\n        });\n        if (isNonNullable(controlElm) && isChildOrEqual(controlElm, rootElement) && editor.hasFocus()) {\n          disableGeckoResize();\n          const startElm = selection.getStart(true);\n          if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {\n            dom.setAttrib(controlElm, elementSelectionAttr, selectedValue);\n            throttledShowResizeRect.throttle(controlElm);\n            return;\n          }\n        }\n        hideResizeRect();\n      };\n      const unbindResizeHandleEvents = () => {\n        each$d(resizeHandles, handle => {\n          if (handle.elm) {\n            dom.unbind(handle.elm);\n            delete handle.elm;\n          }\n        });\n      };\n      const disableGeckoResize = () => {\n        try {\n          editor.getDoc().execCommand('enableObjectResizing', false, 'false');\n        } catch (ex) {}\n      };\n      editor.on('init', () => {\n        disableGeckoResize();\n        editor.on('NodeChange ResizeEditor ResizeWindow ResizeContent drop', updateResizeRect);\n        editor.on('keyup compositionend', e => {\n          if (selectedElm && selectedElm.nodeName === 'TABLE') {\n            updateResizeRect(e);\n          }\n        });\n        editor.on('hide blur', hideResizeRect);\n        editor.on('contextmenu longpress', contextMenuSelectImage, true);\n      });\n      editor.on('remove', unbindResizeHandleEvents);\n      const destroy = () => {\n        throttledShowResizeRect.cancel();\n        selectedElm = selectedElmGhost = resizeBackdrop = null;\n      };\n      return {\n        isResizable,\n        showResizeRect,\n        hideResizeRect,\n        updateResizeRect,\n        destroy\n      };\n    };\n\n    const setStart = (rng, situ) => {\n      situ.fold(e => {\n        rng.setStartBefore(e.dom);\n      }, (e, o) => {\n        rng.setStart(e.dom, o);\n      }, e => {\n        rng.setStartAfter(e.dom);\n      });\n    };\n    const setFinish = (rng, situ) => {\n      situ.fold(e => {\n        rng.setEndBefore(e.dom);\n      }, (e, o) => {\n        rng.setEnd(e.dom, o);\n      }, e => {\n        rng.setEndAfter(e.dom);\n      });\n    };\n    const relativeToNative = (win, startSitu, finishSitu) => {\n      const range = win.document.createRange();\n      setStart(range, startSitu);\n      setFinish(range, finishSitu);\n      return range;\n    };\n    const exactToNative = (win, start, soffset, finish, foffset) => {\n      const rng = win.document.createRange();\n      rng.setStart(start.dom, soffset);\n      rng.setEnd(finish.dom, foffset);\n      return rng;\n    };\n\n    const adt$3 = Adt.generate([{\n      ltr: ['start', 'soffset', 'finish', 'foffset']\n    }, {\n      rtl: ['start', 'soffset', 'finish', 'foffset']\n    }]);\n    const fromRange = (win, type, range) => type(SugarElement.fromDom(range.startContainer), range.startOffset, SugarElement.fromDom(range.endContainer), range.endOffset);\n    const getRanges = (win, selection) => selection.match({\n      domRange: rng => {\n        return {\n          ltr: constant(rng),\n          rtl: Optional.none\n        };\n      },\n      relative: (startSitu, finishSitu) => {\n        return {\n          ltr: cached(() => relativeToNative(win, startSitu, finishSitu)),\n          rtl: cached(() => Optional.some(relativeToNative(win, finishSitu, startSitu)))\n        };\n      },\n      exact: (start, soffset, finish, foffset) => {\n        return {\n          ltr: cached(() => exactToNative(win, start, soffset, finish, foffset)),\n          rtl: cached(() => Optional.some(exactToNative(win, finish, foffset, start, soffset)))\n        };\n      }\n    });\n    const doDiagnose = (win, ranges) => {\n      const rng = ranges.ltr();\n      if (rng.collapsed) {\n        const reversed = ranges.rtl().filter(rev => rev.collapsed === false);\n        return reversed.map(rev => adt$3.rtl(SugarElement.fromDom(rev.endContainer), rev.endOffset, SugarElement.fromDom(rev.startContainer), rev.startOffset)).getOrThunk(() => fromRange(win, adt$3.ltr, rng));\n      } else {\n        return fromRange(win, adt$3.ltr, rng);\n      }\n    };\n    const diagnose = (win, selection) => {\n      const ranges = getRanges(win, selection);\n      return doDiagnose(win, ranges);\n    };\n    adt$3.ltr;\n    adt$3.rtl;\n\n    const create$a = (start, soffset, finish, foffset) => ({\n      start,\n      soffset,\n      finish,\n      foffset\n    });\n    const SimRange = {\n      create: create$a\n    };\n\n    const caretPositionFromPoint = (doc, x, y) => {\n      var _a, _b;\n      return Optional.from((_b = (_a = doc.dom).caretPositionFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y)).bind(pos => {\n        if (pos.offsetNode === null) {\n          return Optional.none();\n        }\n        const r = doc.dom.createRange();\n        r.setStart(pos.offsetNode, pos.offset);\n        r.collapse();\n        return Optional.some(r);\n      });\n    };\n    const caretRangeFromPoint = (doc, x, y) => {\n      var _a, _b;\n      return Optional.from((_b = (_a = doc.dom).caretRangeFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y));\n    };\n    const availableSearch = (() => {\n      if (document.caretPositionFromPoint) {\n        return caretPositionFromPoint;\n      } else if (document.caretRangeFromPoint) {\n        return caretRangeFromPoint;\n      } else {\n        return Optional.none;\n      }\n    })();\n    const fromPoint$1 = (win, x, y) => {\n      const doc = SugarElement.fromDom(win.document);\n      return availableSearch(doc, x, y).map(rng => SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset));\n    };\n\n    const adt$2 = Adt.generate([{\n      before: ['element']\n    }, {\n      on: ['element', 'offset']\n    }, {\n      after: ['element']\n    }]);\n    const cata = (subject, onBefore, onOn, onAfter) => subject.fold(onBefore, onOn, onAfter);\n    const getStart$2 = situ => situ.fold(identity, identity, identity);\n    const before$1 = adt$2.before;\n    const on = adt$2.on;\n    const after$1 = adt$2.after;\n    const Situ = {\n      before: before$1,\n      on,\n      after: after$1,\n      cata,\n      getStart: getStart$2\n    };\n\n    const adt$1 = Adt.generate([{\n      domRange: ['rng']\n    }, {\n      relative: ['startSitu', 'finishSitu']\n    }, {\n      exact: ['start', 'soffset', 'finish', 'foffset']\n    }]);\n    const exactFromRange = simRange => adt$1.exact(simRange.start, simRange.soffset, simRange.finish, simRange.foffset);\n    const getStart$1 = selection => selection.match({\n      domRange: rng => SugarElement.fromDom(rng.startContainer),\n      relative: (startSitu, _finishSitu) => Situ.getStart(startSitu),\n      exact: (start, _soffset, _finish, _foffset) => start\n    });\n    const domRange = adt$1.domRange;\n    const relative = adt$1.relative;\n    const exact = adt$1.exact;\n    const getWin = selection => {\n      const start = getStart$1(selection);\n      return defaultView(start);\n    };\n    const range = SimRange.create;\n    const SimSelection = {\n      domRange,\n      relative,\n      exact,\n      exactFromRange,\n      getWin,\n      range\n    };\n\n    const beforeSpecial = (element, offset) => {\n      const name$1 = name(element);\n      if ('input' === name$1) {\n        return Situ.after(element);\n      } else if (!contains$2(['br', 'img'], name$1)) {\n        return Situ.on(element, offset);\n      } else {\n        return offset === 0 ? Situ.before(element) : Situ.after(element);\n      }\n    };\n    const preprocessRelative = (startSitu, finishSitu) => {\n      const start = startSitu.fold(Situ.before, beforeSpecial, Situ.after);\n      const finish = finishSitu.fold(Situ.before, beforeSpecial, Situ.after);\n      return SimSelection.relative(start, finish);\n    };\n    const preprocessExact = (start, soffset, finish, foffset) => {\n      const startSitu = beforeSpecial(start, soffset);\n      const finishSitu = beforeSpecial(finish, foffset);\n      return SimSelection.relative(startSitu, finishSitu);\n    };\n    const preprocess = selection => selection.match({\n      domRange: rng => {\n        const start = SugarElement.fromDom(rng.startContainer);\n        const finish = SugarElement.fromDom(rng.endContainer);\n        return preprocessExact(start, rng.startOffset, finish, rng.endOffset);\n      },\n      relative: preprocessRelative,\n      exact: preprocessExact\n    });\n\n    const fromElements = (elements, scope) => {\n      const doc = scope || document;\n      const fragment = doc.createDocumentFragment();\n      each$e(elements, element => {\n        fragment.appendChild(element.dom);\n      });\n      return SugarElement.fromDom(fragment);\n    };\n\n    const toNative = selection => {\n      const win = SimSelection.getWin(selection).dom;\n      const getDomRange = (start, soffset, finish, foffset) => exactToNative(win, start, soffset, finish, foffset);\n      const filtered = preprocess(selection);\n      return diagnose(win, filtered).match({\n        ltr: getDomRange,\n        rtl: getDomRange\n      });\n    };\n    const getAtPoint = (win, x, y) => fromPoint$1(win, x, y);\n\n    const fromPoint = (clientX, clientY, doc) => {\n      const win = defaultView(SugarElement.fromDom(doc));\n      return getAtPoint(win.dom, clientX, clientY).map(simRange => {\n        const rng = doc.createRange();\n        rng.setStart(simRange.start.dom, simRange.soffset);\n        rng.setEnd(simRange.finish.dom, simRange.foffset);\n        return rng;\n      }).getOrUndefined();\n    };\n\n    const isEq$4 = (rng1, rng2) => {\n      return isNonNullable(rng1) && isNonNullable(rng2) && rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset && rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset;\n    };\n\n    const findParent = (node, rootNode, predicate) => {\n      let currentNode = node;\n      while (currentNode && currentNode !== rootNode) {\n        if (predicate(currentNode)) {\n          return currentNode;\n        }\n        currentNode = currentNode.parentNode;\n      }\n      return null;\n    };\n    const hasParent$1 = (node, rootNode, predicate) => findParent(node, rootNode, predicate) !== null;\n    const hasParentWithName = (node, rootNode, name) => hasParent$1(node, rootNode, node => node.nodeName === name);\n    const isCeFalseCaretContainer = (node, rootNode) => isCaretContainer$2(node) && !hasParent$1(node, rootNode, isCaretNode);\n    const hasBrBeforeAfter = (dom, node, left) => {\n      const parentNode = node.parentNode;\n      if (parentNode) {\n        const walker = new DomTreeWalker(node, dom.getParent(parentNode, dom.isBlock) || dom.getRoot());\n        let currentNode;\n        while (currentNode = walker[left ? 'prev' : 'next']()) {\n          if (isBr$6(currentNode)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    };\n    const isPrevNode = (node, name) => {\n      var _a;\n      return ((_a = node.previousSibling) === null || _a === void 0 ? void 0 : _a.nodeName) === name;\n    };\n    const hasContentEditableFalseParent = (root, node) => {\n      let currentNode = node;\n      while (currentNode && currentNode !== root) {\n        if (isContentEditableFalse$b(currentNode)) {\n          return true;\n        }\n        currentNode = currentNode.parentNode;\n      }\n      return false;\n    };\n    const findTextNodeRelative = (dom, isAfterNode, collapsed, left, startNode) => {\n      const body = dom.getRoot();\n      const nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n      const parentNode = startNode.parentNode;\n      let lastInlineElement;\n      let node;\n      if (!parentNode) {\n        return Optional.none();\n      }\n      const parentBlockContainer = dom.getParent(parentNode, dom.isBlock) || body;\n      if (left && isBr$6(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) {\n        return Optional.some(CaretPosition(parentNode, dom.nodeIndex(startNode)));\n      }\n      const walker = new DomTreeWalker(startNode, parentBlockContainer);\n      while (node = walker[left ? 'prev' : 'next']()) {\n        if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) {\n          return Optional.none();\n        }\n        if (isText$a(node) && node.data.length > 0) {\n          if (!hasParentWithName(node, body, 'A')) {\n            return Optional.some(CaretPosition(node, left ? node.data.length : 0));\n          }\n          return Optional.none();\n        }\n        if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\n          return Optional.none();\n        }\n        lastInlineElement = node;\n      }\n      if (isComment(lastInlineElement)) {\n        return Optional.none();\n      }\n      if (collapsed && lastInlineElement) {\n        return Optional.some(CaretPosition(lastInlineElement, 0));\n      }\n      return Optional.none();\n    };\n    const normalizeEndPoint = (dom, collapsed, start, rng) => {\n      const body = dom.getRoot();\n      let node;\n      let normalized = false;\n      let container = start ? rng.startContainer : rng.endContainer;\n      let offset = start ? rng.startOffset : rng.endOffset;\n      const isAfterNode = isElement$6(container) && offset === container.childNodes.length;\n      const nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n      let directionLeft = start;\n      if (isCaretContainer$2(container)) {\n        return Optional.none();\n      }\n      if (isElement$6(container) && offset > container.childNodes.length - 1) {\n        directionLeft = false;\n      }\n      if (isDocument$1(container)) {\n        container = body;\n        offset = 0;\n      }\n      if (container === body) {\n        if (directionLeft) {\n          node = container.childNodes[offset > 0 ? offset - 1 : 0];\n          if (node) {\n            if (isCaretContainer$2(node)) {\n              return Optional.none();\n            }\n            if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) {\n              return Optional.none();\n            }\n          }\n        }\n        if (container.hasChildNodes()) {\n          offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);\n          container = container.childNodes[offset];\n          offset = isText$a(container) && isAfterNode ? container.data.length : 0;\n          if (!collapsed && container === body.lastChild && isTable$2(container)) {\n            return Optional.none();\n          }\n          if (hasContentEditableFalseParent(body, container) || isCaretContainer$2(container)) {\n            return Optional.none();\n          }\n          if (isDetails(container)) {\n            return Optional.none();\n          }\n          if (container.hasChildNodes() && !isTable$2(container)) {\n            node = container;\n            const walker = new DomTreeWalker(container, body);\n            do {\n              if (isContentEditableFalse$b(node) || isCaretContainer$2(node)) {\n                normalized = false;\n                break;\n              }\n              if (isText$a(node) && node.data.length > 0) {\n                offset = directionLeft ? 0 : node.data.length;\n                container = node;\n                normalized = true;\n                break;\n              }\n              if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCellOrCaption(node)) {\n                offset = dom.nodeIndex(node);\n                container = node.parentNode;\n                if (!directionLeft) {\n                  offset++;\n                }\n                normalized = true;\n                break;\n              }\n            } while (node = directionLeft ? walker.next() : walker.prev());\n          }\n        }\n      }\n      if (collapsed) {\n        if (isText$a(container) && offset === 0) {\n          findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(pos => {\n            container = pos.container();\n            offset = pos.offset();\n            normalized = true;\n          });\n        }\n        if (isElement$6(container)) {\n          node = container.childNodes[offset];\n          if (!node) {\n            node = container.childNodes[offset - 1];\n          }\n          if (node && isBr$6(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) {\n            findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(pos => {\n              container = pos.container();\n              offset = pos.offset();\n              normalized = true;\n            });\n          }\n        }\n      }\n      if (directionLeft && !collapsed && isText$a(container) && offset === container.data.length) {\n        findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(pos => {\n          container = pos.container();\n          offset = pos.offset();\n          normalized = true;\n        });\n      }\n      return normalized && container ? Optional.some(CaretPosition(container, offset)) : Optional.none();\n    };\n    const normalize$2 = (dom, rng) => {\n      const collapsed = rng.collapsed,\n        normRng = rng.cloneRange();\n      const startPos = CaretPosition.fromRangeStart(rng);\n      normalizeEndPoint(dom, collapsed, true, normRng).each(pos => {\n        if (!collapsed || !CaretPosition.isAbove(startPos, pos)) {\n          normRng.setStart(pos.container(), pos.offset());\n        }\n      });\n      if (!collapsed) {\n        normalizeEndPoint(dom, collapsed, false, normRng).each(pos => {\n          normRng.setEnd(pos.container(), pos.offset());\n        });\n      }\n      if (collapsed) {\n        normRng.collapse(true);\n      }\n      return isEq$4(rng, normRng) ? Optional.none() : Optional.some(normRng);\n    };\n\n    const splitText = (node, offset) => {\n      return node.splitText(offset);\n    };\n    const split = rng => {\n      let startContainer = rng.startContainer,\n        startOffset = rng.startOffset,\n        endContainer = rng.endContainer,\n        endOffset = rng.endOffset;\n      if (startContainer === endContainer && isText$a(startContainer)) {\n        if (startOffset > 0 && startOffset < startContainer.data.length) {\n          endContainer = splitText(startContainer, startOffset);\n          startContainer = endContainer.previousSibling;\n          if (endOffset > startOffset) {\n            endOffset = endOffset - startOffset;\n            const newContainer = splitText(endContainer, endOffset).previousSibling;\n            startContainer = endContainer = newContainer;\n            endOffset = newContainer.data.length;\n            startOffset = 0;\n          } else {\n            endOffset = 0;\n          }\n        }\n      } else {\n        if (isText$a(startContainer) && startOffset > 0 && startOffset < startContainer.data.length) {\n          startContainer = splitText(startContainer, startOffset);\n          startOffset = 0;\n        }\n        if (isText$a(endContainer) && endOffset > 0 && endOffset < endContainer.data.length) {\n          const newContainer = splitText(endContainer, endOffset).previousSibling;\n          endContainer = newContainer;\n          endOffset = newContainer.data.length;\n        }\n      }\n      return {\n        startContainer,\n        startOffset,\n        endContainer,\n        endOffset\n      };\n    };\n\n    const RangeUtils = dom => {\n      const walk = (rng, callback) => {\n        return walk$3(dom, rng, callback);\n      };\n      const split$1 = split;\n      const normalize = rng => {\n        return normalize$2(dom, rng).fold(never, normalizedRng => {\n          rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset);\n          rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset);\n          return true;\n        });\n      };\n      const expand = (rng, options = {\n        type: 'word'\n      }) => {\n        if (options.type === 'word') {\n          const rangeLike = expandRng(dom, rng, [{\n            inline: 'span'\n          }]);\n          const newRange = dom.createRng();\n          newRange.setStart(rangeLike.startContainer, rangeLike.startOffset);\n          newRange.setEnd(rangeLike.endContainer, rangeLike.endOffset);\n          return newRange;\n        }\n        return rng;\n      };\n      return {\n        walk,\n        split: split$1,\n        expand,\n        normalize\n      };\n    };\n    RangeUtils.compareRanges = isEq$4;\n    RangeUtils.getCaretRangeFromPoint = fromPoint;\n    RangeUtils.getSelectedNode = getSelectedNode;\n    RangeUtils.getNode = getNode$1;\n\n    const Dimension = (name, getOffset) => {\n      const set = (element, h) => {\n        if (!isNumber(h) && !h.match(/^[0-9]+$/)) {\n          throw new Error(name + '.set accepts only positive integer values. Value was ' + h);\n        }\n        const dom = element.dom;\n        if (isSupported(dom)) {\n          dom.style[name] = h + 'px';\n        }\n      };\n      const get = element => {\n        const r = getOffset(element);\n        if (r <= 0 || r === null) {\n          const css = get$7(element, name);\n          return parseFloat(css) || 0;\n        }\n        return r;\n      };\n      const getOuter = get;\n      const aggregate = (element, properties) => foldl(properties, (acc, property) => {\n        const val = get$7(element, property);\n        const value = val === undefined ? 0 : parseInt(val, 10);\n        return isNaN(value) ? acc : acc + value;\n      }, 0);\n      const max = (element, value, properties) => {\n        const cumulativeInclusions = aggregate(element, properties);\n        const absoluteMax = value > cumulativeInclusions ? value - cumulativeInclusions : 0;\n        return absoluteMax;\n      };\n      return {\n        set,\n        get,\n        getOuter,\n        aggregate,\n        max\n      };\n    };\n\n    const api = Dimension('height', element => {\n      const dom = element.dom;\n      return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight;\n    });\n    const get$2 = element => api.get(element);\n\n    const getDocument = () => SugarElement.fromDom(document);\n\n    const walkUp = (navigation, doc) => {\n      const frame = navigation.view(doc);\n      return frame.fold(constant([]), f => {\n        const parent = navigation.owner(f);\n        const rest = walkUp(navigation, parent);\n        return [f].concat(rest);\n      });\n    };\n    const pathTo = (element, navigation) => {\n      const d = navigation.owner(element);\n      return walkUp(navigation, d);\n    };\n\n    const view = doc => {\n      var _a;\n      const element = doc.dom === document ? Optional.none() : Optional.from((_a = doc.dom.defaultView) === null || _a === void 0 ? void 0 : _a.frameElement);\n      return element.map(SugarElement.fromDom);\n    };\n    const owner = element => documentOrOwner(element);\n\n    var Navigation = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        view: view,\n        owner: owner\n    });\n\n    const find = element => {\n      const doc = getDocument();\n      const scroll = get$5(doc);\n      const frames = pathTo(element, Navigation);\n      const offset = viewport(element);\n      const r = foldr(frames, (b, a) => {\n        const loc = viewport(a);\n        return {\n          left: b.left + loc.left,\n          top: b.top + loc.top\n        };\n      }, {\n        left: 0,\n        top: 0\n      });\n      return SugarPosition(r.left + offset.left + scroll.left, r.top + offset.top + scroll.top);\n    };\n\n    const excludeFromDescend = element => name(element) === 'textarea';\n    const fireScrollIntoViewEvent = (editor, data) => {\n      const scrollEvent = editor.dispatch('ScrollIntoView', data);\n      return scrollEvent.isDefaultPrevented();\n    };\n    const fireAfterScrollIntoViewEvent = (editor, data) => {\n      editor.dispatch('AfterScrollIntoView', data);\n    };\n    const descend = (element, offset) => {\n      const children = children$1(element);\n      if (children.length === 0 || excludeFromDescend(element)) {\n        return {\n          element,\n          offset\n        };\n      } else if (offset < children.length && !excludeFromDescend(children[offset])) {\n        return {\n          element: children[offset],\n          offset: 0\n        };\n      } else {\n        const last = children[children.length - 1];\n        if (excludeFromDescend(last)) {\n          return {\n            element,\n            offset\n          };\n        } else {\n          if (name(last) === 'img') {\n            return {\n              element: last,\n              offset: 1\n            };\n          } else if (isText$b(last)) {\n            return {\n              element: last,\n              offset: get$3(last).length\n            };\n          } else {\n            return {\n              element: last,\n              offset: children$1(last).length\n            };\n          }\n        }\n      }\n    };\n    const markerInfo = (element, cleanupFun) => {\n      const pos = absolute(element);\n      const height = get$2(element);\n      return {\n        element,\n        bottom: pos.top + height,\n        height,\n        pos,\n        cleanup: cleanupFun\n      };\n    };\n    const createMarker$1 = (element, offset) => {\n      const startPoint = descend(element, offset);\n      const span = SugarElement.fromHtml('<span data-mce-bogus=\"all\" style=\"display: inline-block;\">' + ZWSP$1 + '</span>');\n      before$3(startPoint.element, span);\n      return markerInfo(span, () => remove$5(span));\n    };\n    const elementMarker = element => markerInfo(SugarElement.fromDom(element), noop);\n    const withMarker = (editor, f, rng, alignToTop) => {\n      preserveWith(editor, (_s, _e) => applyWithMarker(editor, f, rng, alignToTop), rng);\n    };\n    const withScrollEvents = (editor, doc, f, marker, alignToTop) => {\n      const data = {\n        elm: marker.element.dom,\n        alignToTop\n      };\n      if (fireScrollIntoViewEvent(editor, data)) {\n        return;\n      }\n      const scrollTop = get$5(doc).top;\n      f(editor, doc, scrollTop, marker, alignToTop);\n      fireAfterScrollIntoViewEvent(editor, data);\n    };\n    const applyWithMarker = (editor, f, rng, alignToTop) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      const doc = SugarElement.fromDom(editor.getDoc());\n      reflow(body);\n      const marker = createMarker$1(SugarElement.fromDom(rng.startContainer), rng.startOffset);\n      withScrollEvents(editor, doc, f, marker, alignToTop);\n      marker.cleanup();\n    };\n    const withElement = (editor, element, f, alignToTop) => {\n      const doc = SugarElement.fromDom(editor.getDoc());\n      withScrollEvents(editor, doc, f, elementMarker(element), alignToTop);\n    };\n    const preserveWith = (editor, f, rng) => {\n      const startElement = rng.startContainer;\n      const startOffset = rng.startOffset;\n      const endElement = rng.endContainer;\n      const endOffset = rng.endOffset;\n      f(SugarElement.fromDom(startElement), SugarElement.fromDom(endElement));\n      const newRng = editor.dom.createRng();\n      newRng.setStart(startElement, startOffset);\n      newRng.setEnd(endElement, endOffset);\n      editor.selection.setRng(rng);\n    };\n    const scrollToMarker = (editor, marker, viewHeight, alignToTop, doc) => {\n      const pos = marker.pos;\n      if (alignToTop) {\n        to(pos.left, pos.top, doc);\n      } else {\n        const y = pos.top - viewHeight + marker.height;\n        to(-editor.getBody().getBoundingClientRect().left, y, doc);\n      }\n    };\n    const intoWindowIfNeeded = (editor, doc, scrollTop, viewHeight, marker, alignToTop) => {\n      const viewportBottom = viewHeight + scrollTop;\n      const markerTop = marker.pos.top;\n      const markerBottom = marker.bottom;\n      const largerThanViewport = markerBottom - markerTop >= viewHeight;\n      if (markerTop < scrollTop) {\n        scrollToMarker(editor, marker, viewHeight, alignToTop !== false, doc);\n      } else if (markerTop > viewportBottom) {\n        const align = largerThanViewport ? alignToTop !== false : alignToTop === true;\n        scrollToMarker(editor, marker, viewHeight, align, doc);\n      } else if (markerBottom > viewportBottom && !largerThanViewport) {\n        scrollToMarker(editor, marker, viewHeight, alignToTop === true, doc);\n      }\n    };\n    const intoWindow = (editor, doc, scrollTop, marker, alignToTop) => {\n      const viewHeight = defaultView(doc).dom.innerHeight;\n      intoWindowIfNeeded(editor, doc, scrollTop, viewHeight, marker, alignToTop);\n    };\n    const intoFrame = (editor, doc, scrollTop, marker, alignToTop) => {\n      const frameViewHeight = defaultView(doc).dom.innerHeight;\n      intoWindowIfNeeded(editor, doc, scrollTop, frameViewHeight, marker, alignToTop);\n      const op = find(marker.element);\n      const viewportBounds = getBounds(window);\n      if (op.top < viewportBounds.y) {\n        intoView(marker.element, alignToTop !== false);\n      } else if (op.top > viewportBounds.bottom) {\n        intoView(marker.element, alignToTop === true);\n      }\n    };\n    const rangeIntoWindow = (editor, rng, alignToTop) => withMarker(editor, intoWindow, rng, alignToTop);\n    const elementIntoWindow = (editor, element, alignToTop) => withElement(editor, element, intoWindow, alignToTop);\n    const rangeIntoFrame = (editor, rng, alignToTop) => withMarker(editor, intoFrame, rng, alignToTop);\n    const elementIntoFrame = (editor, element, alignToTop) => withElement(editor, element, intoFrame, alignToTop);\n    const scrollElementIntoView = (editor, element, alignToTop) => {\n      const scroller = editor.inline ? elementIntoWindow : elementIntoFrame;\n      scroller(editor, element, alignToTop);\n    };\n    const scrollRangeIntoView = (editor, rng, alignToTop) => {\n      const scroller = editor.inline ? rangeIntoWindow : rangeIntoFrame;\n      scroller(editor, rng, alignToTop);\n    };\n\n    const focus$1 = (element, preventScroll = false) => element.dom.focus({\n      preventScroll\n    });\n    const hasFocus$1 = element => {\n      const root = getRootNode(element).dom;\n      return element.dom === root.activeElement;\n    };\n    const active$1 = (root = getDocument()) => Optional.from(root.dom.activeElement).map(SugarElement.fromDom);\n    const search = element => active$1(getRootNode(element)).filter(e => element.dom.contains(e.dom));\n\n    const clamp$1 = (offset, element) => {\n      const max = isText$b(element) ? get$3(element).length : children$1(element).length + 1;\n      if (offset > max) {\n        return max;\n      } else if (offset < 0) {\n        return 0;\n      }\n      return offset;\n    };\n    const normalizeRng = rng => SimSelection.range(rng.start, clamp$1(rng.soffset, rng.start), rng.finish, clamp$1(rng.foffset, rng.finish));\n    const isOrContains = (root, elm) => !isRestrictedNode(elm.dom) && (contains(root, elm) || eq(root, elm));\n    const isRngInRoot = root => rng => isOrContains(root, rng.start) && isOrContains(root, rng.finish);\n    const shouldStore = editor => editor.inline || Env.browser.isFirefox();\n    const nativeRangeToSelectionRange = r => SimSelection.range(SugarElement.fromDom(r.startContainer), r.startOffset, SugarElement.fromDom(r.endContainer), r.endOffset);\n    const readRange = win => {\n      const selection = win.getSelection();\n      const rng = !selection || selection.rangeCount === 0 ? Optional.none() : Optional.from(selection.getRangeAt(0));\n      return rng.map(nativeRangeToSelectionRange);\n    };\n    const getBookmark = root => {\n      const win = defaultView(root);\n      return readRange(win.dom).filter(isRngInRoot(root));\n    };\n    const validate = (root, bookmark) => Optional.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng);\n    const bookmarkToNativeRng = bookmark => {\n      const rng = document.createRange();\n      try {\n        rng.setStart(bookmark.start.dom, bookmark.soffset);\n        rng.setEnd(bookmark.finish.dom, bookmark.foffset);\n        return Optional.some(rng);\n      } catch (_) {\n        return Optional.none();\n      }\n    };\n    const store = editor => {\n      const newBookmark = shouldStore(editor) ? getBookmark(SugarElement.fromDom(editor.getBody())) : Optional.none();\n      editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\n    };\n    const getRng = editor => {\n      const bookmark = editor.bookmark ? editor.bookmark : Optional.none();\n      return bookmark.bind(x => validate(SugarElement.fromDom(editor.getBody()), x)).bind(bookmarkToNativeRng);\n    };\n    const restore = editor => {\n      getRng(editor).each(rng => editor.selection.setRng(rng));\n    };\n\n    const isEditorUIElement$1 = elm => {\n      const className = elm.className.toString();\n      return className.indexOf('tox-') !== -1 || className.indexOf('mce-') !== -1;\n    };\n    const FocusManager = {\n      isEditorUIElement: isEditorUIElement$1\n    };\n\n    const wrappedSetTimeout = (callback, time) => {\n      if (!isNumber(time)) {\n        time = 0;\n      }\n      return setTimeout(callback, time);\n    };\n    const wrappedSetInterval = (callback, time) => {\n      if (!isNumber(time)) {\n        time = 0;\n      }\n      return setInterval(callback, time);\n    };\n    const Delay = {\n      setEditorTimeout: (editor, callback, time) => {\n        return wrappedSetTimeout(() => {\n          if (!editor.removed) {\n            callback();\n          }\n        }, time);\n      },\n      setEditorInterval: (editor, callback, time) => {\n        const timer = wrappedSetInterval(() => {\n          if (!editor.removed) {\n            callback();\n          } else {\n            clearInterval(timer);\n          }\n        }, time);\n        return timer;\n      }\n    };\n\n    const isManualNodeChange = e => {\n      return e.type === 'nodechange' && e.selectionChange;\n    };\n    const registerPageMouseUp = (editor, throttledStore) => {\n      const mouseUpPage = () => {\n        throttledStore.throttle();\n      };\n      DOMUtils.DOM.bind(document, 'mouseup', mouseUpPage);\n      editor.on('remove', () => {\n        DOMUtils.DOM.unbind(document, 'mouseup', mouseUpPage);\n      });\n    };\n    const registerMouseUp = (editor, throttledStore) => {\n      editor.on('mouseup touchend', _e => {\n        throttledStore.throttle();\n      });\n    };\n    const registerEditorEvents = (editor, throttledStore) => {\n      registerMouseUp(editor, throttledStore);\n      editor.on('keyup NodeChange AfterSetSelectionRange', e => {\n        if (!isManualNodeChange(e)) {\n          store(editor);\n        }\n      });\n    };\n    const register$6 = editor => {\n      const throttledStore = first$1(() => {\n        store(editor);\n      }, 0);\n      editor.on('init', () => {\n        if (editor.inline) {\n          registerPageMouseUp(editor, throttledStore);\n        }\n        registerEditorEvents(editor, throttledStore);\n      });\n      editor.on('remove', () => {\n        throttledStore.cancel();\n      });\n    };\n\n    let documentFocusInHandler;\n    const DOM$9 = DOMUtils.DOM;\n    const isEditorUIElement = elm => {\n      return isElement$6(elm) && FocusManager.isEditorUIElement(elm);\n    };\n    const isEditorContentAreaElement = elm => {\n      const classList = elm.classList;\n      if (classList !== undefined) {\n        return classList.contains('tox-edit-area') || classList.contains('tox-edit-area__iframe') || classList.contains('mce-content-body');\n      } else {\n        return false;\n      }\n    };\n    const isUIElement = (editor, elm) => {\n      const customSelector = getCustomUiSelector(editor);\n      const parent = DOM$9.getParent(elm, elm => {\n        return isEditorUIElement(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false);\n      });\n      return parent !== null;\n    };\n    const getActiveElement = editor => {\n      try {\n        const root = getRootNode(SugarElement.fromDom(editor.getElement()));\n        return active$1(root).fold(() => document.body, x => x.dom);\n      } catch (ex) {\n        return document.body;\n      }\n    };\n    const registerEvents$1 = (editorManager, e) => {\n      const editor = e.editor;\n      register$6(editor);\n      const toggleContentAreaOnFocus = (editor, fn) => {\n        if (shouldHighlightOnFocus(editor) && editor.inline !== true) {\n          const contentArea = SugarElement.fromDom(editor.getContainer());\n          fn(contentArea, 'tox-edit-focus');\n        }\n      };\n      editor.on('focusin', () => {\n        const focusedEditor = editorManager.focusedEditor;\n        if (isEditorContentAreaElement(getActiveElement(editor))) {\n          toggleContentAreaOnFocus(editor, add$2);\n        }\n        if (focusedEditor !== editor) {\n          if (focusedEditor) {\n            focusedEditor.dispatch('blur', {\n              focusedEditor: editor\n            });\n          }\n          editorManager.setActive(editor);\n          editorManager.focusedEditor = editor;\n          editor.dispatch('focus', {\n            blurredEditor: focusedEditor\n          });\n          editor.focus(true);\n        }\n      });\n      editor.on('focusout', () => {\n        Delay.setEditorTimeout(editor, () => {\n          const focusedEditor = editorManager.focusedEditor;\n          if (!isEditorContentAreaElement(getActiveElement(editor)) || focusedEditor !== editor) {\n            toggleContentAreaOnFocus(editor, remove$7);\n          }\n          if (!isUIElement(editor, getActiveElement(editor)) && focusedEditor === editor) {\n            editor.dispatch('blur', {\n              focusedEditor: null\n            });\n            editorManager.focusedEditor = null;\n          }\n        });\n      });\n      if (!documentFocusInHandler) {\n        documentFocusInHandler = e => {\n          const activeEditor = editorManager.activeEditor;\n          if (activeEditor) {\n            getOriginalEventTarget(e).each(target => {\n              const elem = target;\n              if (elem.ownerDocument === document) {\n                if (elem !== document.body && !isUIElement(activeEditor, elem) && editorManager.focusedEditor === activeEditor) {\n                  activeEditor.dispatch('blur', {\n                    focusedEditor: null\n                  });\n                  editorManager.focusedEditor = null;\n                }\n              }\n            });\n          }\n        };\n        DOM$9.bind(document, 'focusin', documentFocusInHandler);\n      }\n    };\n    const unregisterDocumentEvents = (editorManager, e) => {\n      if (editorManager.focusedEditor === e.editor) {\n        editorManager.focusedEditor = null;\n      }\n      if (!editorManager.activeEditor && documentFocusInHandler) {\n        DOM$9.unbind(document, 'focusin', documentFocusInHandler);\n        documentFocusInHandler = null;\n      }\n    };\n    const setup$w = editorManager => {\n      editorManager.on('AddEditor', curry(registerEvents$1, editorManager));\n      editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));\n    };\n\n    const getContentEditableHost = (editor, node) => editor.dom.getParent(node, node => editor.dom.getContentEditable(node) === 'true');\n    const getCollapsedNode = rng => rng.collapsed ? Optional.from(getNode$1(rng.startContainer, rng.startOffset)).map(SugarElement.fromDom) : Optional.none();\n    const getFocusInElement = (root, rng) => getCollapsedNode(rng).bind(node => {\n      if (isTableSection(node)) {\n        return Optional.some(node);\n      } else if (!contains(root, node)) {\n        return Optional.some(root);\n      } else {\n        return Optional.none();\n      }\n    });\n    const normalizeSelection = (editor, rng) => {\n      getFocusInElement(SugarElement.fromDom(editor.getBody()), rng).bind(elm => {\n        return firstPositionIn(elm.dom);\n      }).fold(() => {\n        editor.selection.normalize();\n      }, caretPos => editor.selection.setRng(caretPos.toRange()));\n    };\n    const focusBody = body => {\n      if (body.setActive) {\n        try {\n          body.setActive();\n        } catch (ex) {\n          body.focus();\n        }\n      } else {\n        body.focus();\n      }\n    };\n    const hasElementFocus = elm => hasFocus$1(elm) || search(elm).isSome();\n    const hasIframeFocus = editor => isNonNullable(editor.iframeElement) && hasFocus$1(SugarElement.fromDom(editor.iframeElement));\n    const hasInlineFocus = editor => {\n      const rawBody = editor.getBody();\n      return rawBody && hasElementFocus(SugarElement.fromDom(rawBody));\n    };\n    const hasUiFocus = editor => {\n      const dos = getRootNode(SugarElement.fromDom(editor.getElement()));\n      return active$1(dos).filter(elem => !isEditorContentAreaElement(elem.dom) && isUIElement(editor, elem.dom)).isSome();\n    };\n    const hasFocus = editor => editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor);\n    const hasEditorOrUiFocus = editor => hasFocus(editor) || hasUiFocus(editor);\n    const focusEditor = editor => {\n      const selection = editor.selection;\n      const body = editor.getBody();\n      let rng = selection.getRng();\n      editor.quirks.refreshContentEditable();\n      if (isNonNullable(editor.bookmark) && !hasFocus(editor)) {\n        getRng(editor).each(bookmarkRng => {\n          editor.selection.setRng(bookmarkRng);\n          rng = bookmarkRng;\n        });\n      }\n      const contentEditableHost = getContentEditableHost(editor, selection.getNode());\n      if (contentEditableHost && editor.dom.isChildOf(contentEditableHost, body)) {\n        focusBody(contentEditableHost);\n        normalizeSelection(editor, rng);\n        activateEditor(editor);\n        return;\n      }\n      if (!editor.inline) {\n        if (!Env.browser.isOpera()) {\n          focusBody(body);\n        }\n        editor.getWin().focus();\n      }\n      if (Env.browser.isFirefox() || editor.inline) {\n        focusBody(body);\n        normalizeSelection(editor, rng);\n      }\n      activateEditor(editor);\n    };\n    const activateEditor = editor => editor.editorManager.setActive(editor);\n    const focus = (editor, skipFocus) => {\n      if (editor.removed) {\n        return;\n      }\n      if (skipFocus) {\n        activateEditor(editor);\n      } else {\n        focusEditor(editor);\n      }\n    };\n\n    const isEditableRange = (dom, rng) => {\n      if (rng.collapsed) {\n        return dom.isEditable(rng.startContainer);\n      } else {\n        return dom.isEditable(rng.startContainer) && dom.isEditable(rng.endContainer);\n      }\n    };\n\n    const getEndpointElement = (root, rng, start, real, resolve) => {\n      const container = start ? rng.startContainer : rng.endContainer;\n      const offset = start ? rng.startOffset : rng.endOffset;\n      return Optional.from(container).map(SugarElement.fromDom).map(elm => !real || !rng.collapsed ? child$1(elm, resolve(elm, offset)).getOr(elm) : elm).bind(elm => isElement$7(elm) ? Optional.some(elm) : parent(elm).filter(isElement$7)).map(elm => elm.dom).getOr(root);\n    };\n    const getStart = (root, rng, real = false) => getEndpointElement(root, rng, true, real, (elm, offset) => Math.min(childNodesCount(elm), offset));\n    const getEnd$1 = (root, rng, real = false) => getEndpointElement(root, rng, false, real, (elm, offset) => offset > 0 ? offset - 1 : offset);\n    const skipEmptyTextNodes = (node, forwards) => {\n      const orig = node;\n      while (node && isText$a(node) && node.length === 0) {\n        node = forwards ? node.nextSibling : node.previousSibling;\n      }\n      return node || orig;\n    };\n    const getNode = (root, rng) => {\n      if (!rng) {\n        return root;\n      }\n      let startContainer = rng.startContainer;\n      let endContainer = rng.endContainer;\n      const startOffset = rng.startOffset;\n      const endOffset = rng.endOffset;\n      let node = rng.commonAncestorContainer;\n      if (!rng.collapsed) {\n        if (startContainer === endContainer) {\n          if (endOffset - startOffset < 2) {\n            if (startContainer.hasChildNodes()) {\n              node = startContainer.childNodes[startOffset];\n            }\n          }\n        }\n        if (isText$a(startContainer) && isText$a(endContainer)) {\n          if (startContainer.length === startOffset) {\n            startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);\n          } else {\n            startContainer = startContainer.parentNode;\n          }\n          if (endOffset === 0) {\n            endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);\n          } else {\n            endContainer = endContainer.parentNode;\n          }\n          if (startContainer && startContainer === endContainer) {\n            node = startContainer;\n          }\n        }\n      }\n      const elm = isText$a(node) ? node.parentNode : node;\n      return isHTMLElement(elm) ? elm : root;\n    };\n    const getSelectedBlocks = (dom, rng, startElm, endElm) => {\n      const selectedBlocks = [];\n      const root = dom.getRoot();\n      const start = dom.getParent(startElm || getStart(root, rng, rng.collapsed), dom.isBlock);\n      const end = dom.getParent(endElm || getEnd$1(root, rng, rng.collapsed), dom.isBlock);\n      if (start && start !== root) {\n        selectedBlocks.push(start);\n      }\n      if (start && end && start !== end) {\n        let node;\n        const walker = new DomTreeWalker(start, root);\n        while ((node = walker.next()) && node !== end) {\n          if (dom.isBlock(node)) {\n            selectedBlocks.push(node);\n          }\n        }\n      }\n      if (end && start !== end && end !== root) {\n        selectedBlocks.push(end);\n      }\n      return selectedBlocks;\n    };\n    const select = (dom, node, content) => Optional.from(node).bind(node => Optional.from(node.parentNode).map(parent => {\n      const idx = dom.nodeIndex(node);\n      const rng = dom.createRng();\n      rng.setStart(parent, idx);\n      rng.setEnd(parent, idx + 1);\n      if (content) {\n        moveEndPoint(dom, rng, node, true);\n        moveEndPoint(dom, rng, node, false);\n      }\n      return rng;\n    }));\n\n    const processRanges = (editor, ranges) => map$3(ranges, range => {\n      const evt = editor.dispatch('GetSelectionRange', {\n        range\n      });\n      return evt.range !== range ? evt.range : range;\n    });\n\n    const getEnd = element => name(element) === 'img' ? 1 : getOption(element).fold(() => children$1(element).length, v => v.length);\n    const isTextNodeWithCursorPosition = el => getOption(el).filter(text => text.trim().length !== 0 || text.indexOf(nbsp) > -1).isSome();\n    const isContentEditableFalse$5 = elem => isHTMLElement$1(elem) && get$9(elem, 'contenteditable') === 'false';\n    const elementsWithCursorPosition = ['img', 'br'];\n    const isCursorPosition = elem => {\n      const hasCursorPosition = isTextNodeWithCursorPosition(elem);\n      return hasCursorPosition || contains$2(elementsWithCursorPosition, name(elem)) || isContentEditableFalse$5(elem);\n    };\n\n    const first = element => descendant$2(element, isCursorPosition);\n    const last = element => descendantRtl(element, isCursorPosition);\n    const descendantRtl = (scope, predicate) => {\n      const descend = element => {\n        const children = children$1(element);\n        for (let i = children.length - 1; i >= 0; i--) {\n          const child = children[i];\n          if (predicate(child)) {\n            return Optional.some(child);\n          }\n          const res = descend(child);\n          if (res.isSome()) {\n            return res;\n          }\n        }\n        return Optional.none();\n      };\n      return descend(scope);\n    };\n\n    const autocompleteSelector = '[data-mce-autocompleter]';\n    const create$9 = (editor, range) => {\n      if (findIn(SugarElement.fromDom(editor.getBody())).isNone()) {\n        const wrapper = SugarElement.fromHtml('<span data-mce-autocompleter=\"1\" data-mce-bogus=\"1\"></span>', editor.getDoc());\n        append$1(wrapper, SugarElement.fromDom(range.extractContents()));\n        range.insertNode(wrapper.dom);\n        parent(wrapper).each(elm => elm.dom.normalize());\n        last(wrapper).map(last => {\n          editor.selection.setCursorLocation(last.dom, getEnd(last));\n        });\n      }\n    };\n    const detect$1 = elm => closest$3(elm, autocompleteSelector);\n    const findIn = elm => descendant$1(elm, autocompleteSelector);\n    const remove$2 = (editor, elm) => findIn(elm).each(wrapper => {\n      const bookmark = editor.selection.getBookmark();\n      unwrap(wrapper);\n      editor.selection.moveToBookmark(bookmark);\n    });\n\n    const typeLookup = {\n      '#text': 3,\n      '#comment': 8,\n      '#cdata': 4,\n      '#pi': 7,\n      '#doctype': 10,\n      '#document-fragment': 11\n    };\n    const walk$2 = (node, root, prev) => {\n      const startName = prev ? 'lastChild' : 'firstChild';\n      const siblingName = prev ? 'prev' : 'next';\n      if (node[startName]) {\n        return node[startName];\n      }\n      if (node !== root) {\n        let sibling = node[siblingName];\n        if (sibling) {\n          return sibling;\n        }\n        for (let parent = node.parent; parent && parent !== root; parent = parent.parent) {\n          sibling = parent[siblingName];\n          if (sibling) {\n            return sibling;\n          }\n        }\n      }\n      return undefined;\n    };\n    const isEmptyTextNode = node => {\n      var _a;\n      const text = (_a = node.value) !== null && _a !== void 0 ? _a : '';\n      if (!isWhitespaceText(text)) {\n        return false;\n      }\n      const parentNode = node.parent;\n      if (parentNode && (parentNode.name !== 'span' || parentNode.attr('style')) && /^[ ]+$/.test(text)) {\n        return false;\n      }\n      return true;\n    };\n    const isNonEmptyElement = node => {\n      const isNamedAnchor = node.name === 'a' && !node.attr('href') && node.attr('id');\n      return node.attr('name') || node.attr('id') && !node.firstChild || node.attr('data-mce-bookmark') || isNamedAnchor;\n    };\n    class AstNode {\n      static create(name, attrs) {\n        const node = new AstNode(name, typeLookup[name] || 1);\n        if (attrs) {\n          each$d(attrs, (value, attrName) => {\n            node.attr(attrName, value);\n          });\n        }\n        return node;\n      }\n      constructor(name, type) {\n        this.name = name;\n        this.type = type;\n        if (type === 1) {\n          this.attributes = [];\n          this.attributes.map = {};\n        }\n      }\n      replace(node) {\n        const self = this;\n        if (node.parent) {\n          node.remove();\n        }\n        self.insert(node, self);\n        self.remove();\n        return self;\n      }\n      attr(name, value) {\n        const self = this;\n        if (!isString(name)) {\n          if (isNonNullable(name)) {\n            each$d(name, (value, key) => {\n              self.attr(key, value);\n            });\n          }\n          return self;\n        }\n        const attrs = self.attributes;\n        if (attrs) {\n          if (value !== undefined) {\n            if (value === null) {\n              if (name in attrs.map) {\n                delete attrs.map[name];\n                let i = attrs.length;\n                while (i--) {\n                  if (attrs[i].name === name) {\n                    attrs.splice(i, 1);\n                    return self;\n                  }\n                }\n              }\n              return self;\n            }\n            if (name in attrs.map) {\n              let i = attrs.length;\n              while (i--) {\n                if (attrs[i].name === name) {\n                  attrs[i].value = value;\n                  break;\n                }\n              }\n            } else {\n              attrs.push({\n                name,\n                value\n              });\n            }\n            attrs.map[name] = value;\n            return self;\n          }\n          return attrs.map[name];\n        }\n        return undefined;\n      }\n      clone() {\n        const self = this;\n        const clone = new AstNode(self.name, self.type);\n        const selfAttrs = self.attributes;\n        if (selfAttrs) {\n          const cloneAttrs = [];\n          cloneAttrs.map = {};\n          for (let i = 0, l = selfAttrs.length; i < l; i++) {\n            const selfAttr = selfAttrs[i];\n            if (selfAttr.name !== 'id') {\n              cloneAttrs[cloneAttrs.length] = {\n                name: selfAttr.name,\n                value: selfAttr.value\n              };\n              cloneAttrs.map[selfAttr.name] = selfAttr.value;\n            }\n          }\n          clone.attributes = cloneAttrs;\n        }\n        clone.value = self.value;\n        return clone;\n      }\n      wrap(wrapper) {\n        const self = this;\n        if (self.parent) {\n          self.parent.insert(wrapper, self);\n          wrapper.append(self);\n        }\n        return self;\n      }\n      unwrap() {\n        const self = this;\n        for (let node = self.firstChild; node;) {\n          const next = node.next;\n          self.insert(node, self, true);\n          node = next;\n        }\n        self.remove();\n      }\n      remove() {\n        const self = this,\n          parent = self.parent,\n          next = self.next,\n          prev = self.prev;\n        if (parent) {\n          if (parent.firstChild === self) {\n            parent.firstChild = next;\n            if (next) {\n              next.prev = null;\n            }\n          } else if (prev) {\n            prev.next = next;\n          }\n          if (parent.lastChild === self) {\n            parent.lastChild = prev;\n            if (prev) {\n              prev.next = null;\n            }\n          } else if (next) {\n            next.prev = prev;\n          }\n          self.parent = self.next = self.prev = null;\n        }\n        return self;\n      }\n      append(node) {\n        const self = this;\n        if (node.parent) {\n          node.remove();\n        }\n        const last = self.lastChild;\n        if (last) {\n          last.next = node;\n          node.prev = last;\n          self.lastChild = node;\n        } else {\n          self.lastChild = self.firstChild = node;\n        }\n        node.parent = self;\n        return node;\n      }\n      insert(node, refNode, before) {\n        if (node.parent) {\n          node.remove();\n        }\n        const parent = refNode.parent || this;\n        if (before) {\n          if (refNode === parent.firstChild) {\n            parent.firstChild = node;\n          } else if (refNode.prev) {\n            refNode.prev.next = node;\n          }\n          node.prev = refNode.prev;\n          node.next = refNode;\n          refNode.prev = node;\n        } else {\n          if (refNode === parent.lastChild) {\n            parent.lastChild = node;\n          } else if (refNode.next) {\n            refNode.next.prev = node;\n          }\n          node.next = refNode.next;\n          node.prev = refNode;\n          refNode.next = node;\n        }\n        node.parent = parent;\n        return node;\n      }\n      getAll(name) {\n        const self = this;\n        const collection = [];\n        for (let node = self.firstChild; node; node = walk$2(node, self)) {\n          if (node.name === name) {\n            collection.push(node);\n          }\n        }\n        return collection;\n      }\n      children() {\n        const self = this;\n        const collection = [];\n        for (let node = self.firstChild; node; node = node.next) {\n          collection.push(node);\n        }\n        return collection;\n      }\n      empty() {\n        const self = this;\n        if (self.firstChild) {\n          const nodes = [];\n          for (let node = self.firstChild; node; node = walk$2(node, self)) {\n            nodes.push(node);\n          }\n          let i = nodes.length;\n          while (i--) {\n            const node = nodes[i];\n            node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;\n          }\n        }\n        self.firstChild = self.lastChild = null;\n        return self;\n      }\n      isEmpty(elements, whitespace = {}, predicate) {\n        var _a;\n        const self = this;\n        let node = self.firstChild;\n        if (isNonEmptyElement(self)) {\n          return false;\n        }\n        if (node) {\n          do {\n            if (node.type === 1) {\n              if (node.attr('data-mce-bogus')) {\n                continue;\n              }\n              if (elements[node.name]) {\n                return false;\n              }\n              if (isNonEmptyElement(node)) {\n                return false;\n              }\n            }\n            if (node.type === 8) {\n              return false;\n            }\n            if (node.type === 3 && !isEmptyTextNode(node)) {\n              return false;\n            }\n            if (node.type === 3 && node.parent && whitespace[node.parent.name] && isWhitespaceText((_a = node.value) !== null && _a !== void 0 ? _a : '')) {\n              return false;\n            }\n            if (predicate && predicate(node)) {\n              return false;\n            }\n          } while (node = walk$2(node, self));\n        }\n        return true;\n      }\n      walk(prev) {\n        return walk$2(this, null, prev);\n      }\n    }\n\n    const unescapedTextParents = Tools.makeMap('NOSCRIPT STYLE SCRIPT XMP IFRAME NOEMBED NOFRAMES PLAINTEXT', ' ');\n    const containsZwsp = node => isString(node.nodeValue) && node.nodeValue.includes(ZWSP$1);\n    const getTemporaryNodeSelector = tempAttrs => \"\".concat(tempAttrs.length === 0 ? '' : \"\".concat(map$3(tempAttrs, attr => \"[\".concat(attr, \"]\")).join(','), \",\"), \"[data-mce-bogus=\\\"all\\\"]\");\n    const getTemporaryNodes = (tempAttrs, body) => body.querySelectorAll(getTemporaryNodeSelector(tempAttrs));\n    const createZwspCommentWalker = body => document.createTreeWalker(body, NodeFilter.SHOW_COMMENT, node => containsZwsp(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);\n    const createUnescapedZwspTextWalker = body => document.createTreeWalker(body, NodeFilter.SHOW_TEXT, node => {\n      if (containsZwsp(node)) {\n        const parent = node.parentNode;\n        return parent && has$2(unescapedTextParents, parent.nodeName) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n      } else {\n        return NodeFilter.FILTER_SKIP;\n      }\n    });\n    const hasZwspComment = body => createZwspCommentWalker(body).nextNode() !== null;\n    const hasUnescapedZwspText = body => createUnescapedZwspTextWalker(body).nextNode() !== null;\n    const hasTemporaryNode = (tempAttrs, body) => body.querySelector(getTemporaryNodeSelector(tempAttrs)) !== null;\n    const trimTemporaryNodes = (tempAttrs, body) => {\n      each$e(getTemporaryNodes(tempAttrs, body), elm => {\n        const element = SugarElement.fromDom(elm);\n        if (get$9(element, 'data-mce-bogus') === 'all') {\n          remove$5(element);\n        } else {\n          each$e(tempAttrs, attr => {\n            if (has$1(element, attr)) {\n              remove$a(element, attr);\n            }\n          });\n        }\n      });\n    };\n    const emptyAllNodeValuesInWalker = walker => {\n      let curr = walker.nextNode();\n      while (curr !== null) {\n        curr.nodeValue = null;\n        curr = walker.nextNode();\n      }\n    };\n    const emptyZwspComments = compose(emptyAllNodeValuesInWalker, createZwspCommentWalker);\n    const emptyUnescapedZwspTexts = compose(emptyAllNodeValuesInWalker, createUnescapedZwspTextWalker);\n    const trim$1 = (body, tempAttrs) => {\n      const conditionalTrims = [{\n        condition: curry(hasTemporaryNode, tempAttrs),\n        action: curry(trimTemporaryNodes, tempAttrs)\n      }, {\n        condition: hasZwspComment,\n        action: emptyZwspComments\n      }, {\n        condition: hasUnescapedZwspText,\n        action: emptyUnescapedZwspTexts\n      }];\n      let trimmed = body;\n      let cloned = false;\n      each$e(conditionalTrims, ({\n        condition,\n        action\n      }) => {\n        if (condition(trimmed)) {\n          if (!cloned) {\n            trimmed = body.cloneNode(true);\n            cloned = true;\n          }\n          action(trimmed);\n        }\n      });\n      return trimmed;\n    };\n\n    const cleanupBogusElements = parent => {\n      const bogusElements = descendants(parent, '[data-mce-bogus]');\n      each$e(bogusElements, elem => {\n        const bogusValue = get$9(elem, 'data-mce-bogus');\n        if (bogusValue === 'all') {\n          remove$5(elem);\n        } else if (isBr$5(elem)) {\n          before$3(elem, SugarElement.fromText(zeroWidth));\n          remove$5(elem);\n        } else {\n          unwrap(elem);\n        }\n      });\n    };\n    const cleanupInputNames = parent => {\n      const inputs = descendants(parent, 'input');\n      each$e(inputs, input => {\n        remove$a(input, 'name');\n      });\n    };\n\n    const trimEmptyContents = (editor, html) => {\n      const blockName = getForcedRootBlock(editor);\n      const emptyRegExp = new RegExp(\"^(<\".concat(blockName, \"[^>]*>(&nbsp;|&#160;|\\\\s|\\xA0|<br \\\\/>|)<\\\\/\").concat(blockName, \">[\\r\\n]*|<br \\\\/>[\\r\\n]*)$\"));\n      return html.replace(emptyRegExp, '');\n    };\n    const getPlainTextContent = (editor, body) => {\n      const doc = editor.getDoc();\n      const dos = getRootNode(SugarElement.fromDom(editor.getBody()));\n      const offscreenDiv = SugarElement.fromTag('div', doc);\n      set$3(offscreenDiv, 'data-mce-bogus', 'all');\n      setAll(offscreenDiv, {\n        position: 'fixed',\n        left: '-9999999px',\n        top: '0'\n      });\n      set$1(offscreenDiv, body.innerHTML);\n      cleanupBogusElements(offscreenDiv);\n      cleanupInputNames(offscreenDiv);\n      const root = getContentContainer(dos);\n      append$1(root, offscreenDiv);\n      const content = trim$2(offscreenDiv.dom.innerText);\n      remove$5(offscreenDiv);\n      return content;\n    };\n    const getContentFromBody = (editor, args, body) => {\n      let content;\n      if (args.format === 'raw') {\n        content = Tools.trim(trim$2(trim$1(body, editor.serializer.getTempAttrs()).innerHTML));\n      } else if (args.format === 'text') {\n        content = getPlainTextContent(editor, body);\n      } else if (args.format === 'tree') {\n        content = editor.serializer.serialize(body, args);\n      } else {\n        content = trimEmptyContents(editor, editor.serializer.serialize(body, args));\n      }\n      const shouldTrim = args.format !== 'text' && !isWsPreserveElement(SugarElement.fromDom(body));\n      return shouldTrim && isString(content) ? Tools.trim(content) : content;\n    };\n    const getContentInternal = (editor, args) => Optional.from(editor.getBody()).fold(constant(args.format === 'tree' ? new AstNode('body', 11) : ''), body => getContentFromBody(editor, args, body));\n\n    const makeMap$1 = Tools.makeMap;\n    const Writer = settings => {\n      const html = [];\n      settings = settings || {};\n      const indent = settings.indent;\n      const indentBefore = makeMap$1(settings.indent_before || '');\n      const indentAfter = makeMap$1(settings.indent_after || '');\n      const encode = Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);\n      const htmlOutput = settings.element_format !== 'xhtml';\n      return {\n        start: (name, attrs, empty) => {\n          if (indent && indentBefore[name] && html.length > 0) {\n            const value = html[html.length - 1];\n            if (value.length > 0 && value !== '\\n') {\n              html.push('\\n');\n            }\n          }\n          html.push('<', name);\n          if (attrs) {\n            for (let i = 0, l = attrs.length; i < l; i++) {\n              const attr = attrs[i];\n              html.push(' ', attr.name, '=\"', encode(attr.value, true), '\"');\n            }\n          }\n          if (!empty || htmlOutput) {\n            html[html.length] = '>';\n          } else {\n            html[html.length] = ' />';\n          }\n          if (empty && indent && indentAfter[name] && html.length > 0) {\n            const value = html[html.length - 1];\n            if (value.length > 0 && value !== '\\n') {\n              html.push('\\n');\n            }\n          }\n        },\n        end: name => {\n          let value;\n          html.push('</', name, '>');\n          if (indent && indentAfter[name] && html.length > 0) {\n            value = html[html.length - 1];\n            if (value.length > 0 && value !== '\\n') {\n              html.push('\\n');\n            }\n          }\n        },\n        text: (text, raw) => {\n          if (text.length > 0) {\n            html[html.length] = raw ? text : encode(text);\n          }\n        },\n        cdata: text => {\n          html.push('<![CDATA[', text, ']]>');\n        },\n        comment: text => {\n          html.push('<!--', text, '-->');\n        },\n        pi: (name, text) => {\n          if (text) {\n            html.push('<?', name, ' ', encode(text), '?>');\n          } else {\n            html.push('<?', name, '?>');\n          }\n          if (indent) {\n            html.push('\\n');\n          }\n        },\n        doctype: text => {\n          html.push('<!DOCTYPE', text, '>', indent ? '\\n' : '');\n        },\n        reset: () => {\n          html.length = 0;\n        },\n        getContent: () => {\n          return html.join('').replace(/\\n$/, '');\n        }\n      };\n    };\n\n    const HtmlSerializer = (settings = {}, schema = Schema()) => {\n      const writer = Writer(settings);\n      settings.validate = 'validate' in settings ? settings.validate : true;\n      const serialize = node => {\n        const validate = settings.validate;\n        const handlers = {\n          3: node => {\n            var _a;\n            writer.text((_a = node.value) !== null && _a !== void 0 ? _a : '', node.raw);\n          },\n          8: node => {\n            var _a;\n            writer.comment((_a = node.value) !== null && _a !== void 0 ? _a : '');\n          },\n          7: node => {\n            writer.pi(node.name, node.value);\n          },\n          10: node => {\n            var _a;\n            writer.doctype((_a = node.value) !== null && _a !== void 0 ? _a : '');\n          },\n          4: node => {\n            var _a;\n            writer.cdata((_a = node.value) !== null && _a !== void 0 ? _a : '');\n          },\n          11: node => {\n            let tempNode = node;\n            if (tempNode = tempNode.firstChild) {\n              do {\n                walk(tempNode);\n              } while (tempNode = tempNode.next);\n            }\n          }\n        };\n        writer.reset();\n        const walk = node => {\n          var _a;\n          const handler = handlers[node.type];\n          if (!handler) {\n            const name = node.name;\n            const isEmpty = name in schema.getVoidElements();\n            let attrs = node.attributes;\n            if (validate && attrs && attrs.length > 1) {\n              const sortedAttrs = [];\n              sortedAttrs.map = {};\n              const elementRule = schema.getElementRule(node.name);\n              if (elementRule) {\n                for (let i = 0, l = elementRule.attributesOrder.length; i < l; i++) {\n                  const attrName = elementRule.attributesOrder[i];\n                  if (attrName in attrs.map) {\n                    const attrValue = attrs.map[attrName];\n                    sortedAttrs.map[attrName] = attrValue;\n                    sortedAttrs.push({\n                      name: attrName,\n                      value: attrValue\n                    });\n                  }\n                }\n                for (let i = 0, l = attrs.length; i < l; i++) {\n                  const attrName = attrs[i].name;\n                  if (!(attrName in sortedAttrs.map)) {\n                    const attrValue = attrs.map[attrName];\n                    sortedAttrs.map[attrName] = attrValue;\n                    sortedAttrs.push({\n                      name: attrName,\n                      value: attrValue\n                    });\n                  }\n                }\n                attrs = sortedAttrs;\n              }\n            }\n            writer.start(name, attrs, isEmpty);\n            if (isNonHtmlElementRootName(name)) {\n              if (isString(node.value)) {\n                writer.text(node.value, true);\n              }\n              writer.end(name);\n            } else {\n              if (!isEmpty) {\n                let child = node.firstChild;\n                if (child) {\n                  if ((name === 'pre' || name === 'textarea') && child.type === 3 && ((_a = child.value) === null || _a === void 0 ? void 0 : _a[0]) === '\\n') {\n                    writer.text('\\n', true);\n                  }\n                  do {\n                    walk(child);\n                  } while (child = child.next);\n                }\n                writer.end(name);\n              }\n            }\n          } else {\n            handler(node);\n          }\n        };\n        if (node.type === 1 && !settings.inner) {\n          walk(node);\n        } else if (node.type === 3) {\n          handlers[3](node);\n        } else {\n          handlers[11](node);\n        }\n        return writer.getContent();\n      };\n      return {\n        serialize\n      };\n    };\n\n    const nonInheritableStyles = new Set();\n    (() => {\n      const nonInheritableStylesArr = ['margin', 'margin-left', 'margin-right', 'margin-top', 'margin-bottom', 'padding', 'padding-left', 'padding-right', 'padding-top', 'padding-bottom', 'border', 'border-width', 'border-style', 'border-color', 'background', 'background-attachment', 'background-clip', 'background-color', 'background-image', 'background-origin', 'background-position', 'background-repeat', 'background-size', 'float', 'position', 'left', 'right', 'top', 'bottom', 'z-index', 'display', 'transform', 'width', 'max-width', 'min-width', 'height', 'max-height', 'min-height', 'overflow', 'overflow-x', 'overflow-y', 'text-overflow', 'vertical-align', 'transition', 'transition-delay', 'transition-duration', 'transition-property', 'transition-timing-function'];\n      each$e(nonInheritableStylesArr, style => {\n        nonInheritableStyles.add(style);\n      });\n    })();\n    const shorthandStyleProps = ['font', 'text-decoration', 'text-emphasis'];\n    const getStyleProps = (dom, node) => keys(dom.parseStyle(dom.getAttrib(node, 'style')));\n    const isNonInheritableStyle = style => nonInheritableStyles.has(style);\n    const hasInheritableStyles = (dom, node) => forall(getStyleProps(dom, node), style => !isNonInheritableStyle(style));\n    const getLonghandStyleProps = styles => filter$5(styles, style => exists(shorthandStyleProps, prop => startsWith(style, prop)));\n    const hasStyleConflict = (dom, node, parentNode) => {\n      const nodeStyleProps = getStyleProps(dom, node);\n      const parentNodeStyleProps = getStyleProps(dom, parentNode);\n      const valueMismatch = prop => {\n        var _a, _b;\n        const nodeValue = (_a = dom.getStyle(node, prop)) !== null && _a !== void 0 ? _a : '';\n        const parentValue = (_b = dom.getStyle(parentNode, prop)) !== null && _b !== void 0 ? _b : '';\n        return isNotEmpty(nodeValue) && isNotEmpty(parentValue) && nodeValue !== parentValue;\n      };\n      return exists(nodeStyleProps, nodeStyleProp => {\n        const propExists = props => exists(props, prop => prop === nodeStyleProp);\n        if (!propExists(parentNodeStyleProps) && propExists(shorthandStyleProps)) {\n          const longhandProps = getLonghandStyleProps(parentNodeStyleProps);\n          return exists(longhandProps, valueMismatch);\n        } else {\n          return valueMismatch(nodeStyleProp);\n        }\n      });\n    };\n\n    const isChar = (forward, predicate, pos) => Optional.from(pos.container()).filter(isText$a).exists(text => {\n      const delta = forward ? 0 : -1;\n      return predicate(text.data.charAt(pos.offset() + delta));\n    });\n    const isBeforeSpace = curry(isChar, true, isWhiteSpace);\n    const isAfterSpace = curry(isChar, false, isWhiteSpace);\n    const isEmptyText = pos => {\n      const container = pos.container();\n      return isText$a(container) && (container.data.length === 0 || isZwsp$1(container.data) && BookmarkManager.isBookmarkNode(container.parentNode));\n    };\n    const matchesElementPosition = (before, predicate) => pos => getChildNodeAtRelativeOffset(before ? 0 : -1, pos).filter(predicate).isSome();\n    const isImageBlock = node => isImg(node) && get$7(SugarElement.fromDom(node), 'display') === 'block';\n    const isCefNode = node => isContentEditableFalse$b(node) && !isBogusAll$1(node);\n    const isBeforeImageBlock = matchesElementPosition(true, isImageBlock);\n    const isAfterImageBlock = matchesElementPosition(false, isImageBlock);\n    const isBeforeMedia = matchesElementPosition(true, isMedia$2);\n    const isAfterMedia = matchesElementPosition(false, isMedia$2);\n    const isBeforeTable = matchesElementPosition(true, isTable$2);\n    const isAfterTable = matchesElementPosition(false, isTable$2);\n    const isBeforeContentEditableFalse = matchesElementPosition(true, isCefNode);\n    const isAfterContentEditableFalse = matchesElementPosition(false, isCefNode);\n\n    const dropLast = xs => xs.slice(0, -1);\n    const parentsUntil = (start, root, predicate) => {\n      if (contains(root, start)) {\n        return dropLast(parents$1(start, elm => {\n          return predicate(elm) || eq(elm, root);\n        }));\n      } else {\n        return [];\n      }\n    };\n    const parents = (start, root) => parentsUntil(start, root, never);\n    const parentsAndSelf = (start, root) => [start].concat(parents(start, root));\n\n    const navigateIgnoreEmptyTextNodes = (forward, root, from) => navigateIgnore(forward, root, from, isEmptyText);\n    const isBlock$1 = schema => el => schema.isBlock(name(el));\n    const getClosestBlock$1 = (root, pos, schema) => find$2(parentsAndSelf(SugarElement.fromDom(pos.container()), root), isBlock$1(schema));\n    const isAtBeforeAfterBlockBoundary = (forward, root, pos, schema) => navigateIgnoreEmptyTextNodes(forward, root.dom, pos).forall(newPos => getClosestBlock$1(root, pos, schema).fold(() => !isInSameBlock(newPos, pos, root.dom), fromBlock => !isInSameBlock(newPos, pos, root.dom) && contains(fromBlock, SugarElement.fromDom(newPos.container()))));\n    const isAtBlockBoundary = (forward, root, pos, schema) => getClosestBlock$1(root, pos, schema).fold(() => navigateIgnoreEmptyTextNodes(forward, root.dom, pos).forall(newPos => !isInSameBlock(newPos, pos, root.dom)), parent => navigateIgnoreEmptyTextNodes(forward, parent.dom, pos).isNone());\n    const isAtStartOfBlock = curry(isAtBlockBoundary, false);\n    const isAtEndOfBlock = curry(isAtBlockBoundary, true);\n    const isBeforeBlock = curry(isAtBeforeAfterBlockBoundary, false);\n    const isAfterBlock = curry(isAtBeforeAfterBlockBoundary, true);\n\n    const isBr$1 = pos => getElementFromPosition(pos).exists(isBr$5);\n    const findBr = (forward, root, pos, schema) => {\n      const parentBlocks = filter$5(parentsAndSelf(SugarElement.fromDom(pos.container()), root), el => schema.isBlock(name(el)));\n      const scope = head(parentBlocks).getOr(root);\n      return fromPosition(forward, scope.dom, pos).filter(isBr$1);\n    };\n    const isBeforeBr$1 = (root, pos, schema) => getElementFromPosition(pos).exists(isBr$5) || findBr(true, root, pos, schema).isSome();\n    const isAfterBr = (root, pos, schema) => getElementFromPrevPosition(pos).exists(isBr$5) || findBr(false, root, pos, schema).isSome();\n    const findPreviousBr = curry(findBr, false);\n    const findNextBr = curry(findBr, true);\n\n    const isInMiddleOfText = pos => CaretPosition.isTextPosition(pos) && !pos.isAtStart() && !pos.isAtEnd();\n    const getClosestBlock = (root, pos, schema) => {\n      const parentBlocks = filter$5(parentsAndSelf(SugarElement.fromDom(pos.container()), root), el => schema.isBlock(name(el)));\n      return head(parentBlocks).getOr(root);\n    };\n    const hasSpaceBefore = (root, pos, schema) => {\n      if (isInMiddleOfText(pos)) {\n        return isAfterSpace(pos);\n      } else {\n        return isAfterSpace(pos) || prevPosition(getClosestBlock(root, pos, schema).dom, pos).exists(isAfterSpace);\n      }\n    };\n    const hasSpaceAfter = (root, pos, schema) => {\n      if (isInMiddleOfText(pos)) {\n        return isBeforeSpace(pos);\n      } else {\n        return isBeforeSpace(pos) || nextPosition(getClosestBlock(root, pos, schema).dom, pos).exists(isBeforeSpace);\n      }\n    };\n    const isPreValue = value => contains$2(['pre', 'pre-wrap'], value);\n    const isInPre = pos => getElementFromPosition(pos).bind(elm => closest$4(elm, isElement$7)).exists(elm => isPreValue(get$7(elm, 'white-space')));\n    const isAtBeginningOfBody = (root, pos) => prevPosition(root.dom, pos).isNone();\n    const isAtEndOfBody = (root, pos) => nextPosition(root.dom, pos).isNone();\n    const isAtLineBoundary = (root, pos, schema) => isAtBeginningOfBody(root, pos) || isAtEndOfBody(root, pos) || isAtStartOfBlock(root, pos, schema) || isAtEndOfBlock(root, pos, schema) || isAfterBr(root, pos, schema) || isBeforeBr$1(root, pos, schema);\n    const isCefBlock = node => isNonNullable(node) && isContentEditableFalse$b(node) && isBlockLike(node);\n    const isSiblingCefBlock = (root, direction) => container => {\n      return isCefBlock(new DomTreeWalker(container, root)[direction]());\n    };\n    const isBeforeCefBlock = (root, pos) => {\n      const nextPos = nextPosition(root.dom, pos).getOr(pos);\n      const isNextCefBlock = isSiblingCefBlock(root.dom, 'next');\n      return pos.isAtEnd() && (isNextCefBlock(pos.container()) || isNextCefBlock(nextPos.container()));\n    };\n    const isAfterCefBlock = (root, pos) => {\n      const prevPos = prevPosition(root.dom, pos).getOr(pos);\n      const isPrevCefBlock = isSiblingCefBlock(root.dom, 'prev');\n      return pos.isAtStart() && (isPrevCefBlock(pos.container()) || isPrevCefBlock(prevPos.container()));\n    };\n    const needsToHaveNbsp = (root, pos, schema) => {\n      if (isInPre(pos)) {\n        return false;\n      } else {\n        return isAtLineBoundary(root, pos, schema) || hasSpaceBefore(root, pos, schema) || hasSpaceAfter(root, pos, schema);\n      }\n    };\n    const needsToBeNbspLeft = (root, pos, schema) => {\n      if (isInPre(pos)) {\n        return false;\n      } else {\n        return isAtStartOfBlock(root, pos, schema) || isBeforeBlock(root, pos, schema) || isAfterBr(root, pos, schema) || hasSpaceBefore(root, pos, schema) || isAfterCefBlock(root, pos);\n      }\n    };\n    const leanRight = pos => {\n      const container = pos.container();\n      const offset = pos.offset();\n      if (isText$a(container) && offset < container.data.length) {\n        return CaretPosition(container, offset + 1);\n      } else {\n        return pos;\n      }\n    };\n    const needsToBeNbspRight = (root, pos, schema) => {\n      if (isInPre(pos)) {\n        return false;\n      } else {\n        return isAtEndOfBlock(root, pos, schema) || isAfterBlock(root, pos, schema) || isBeforeBr$1(root, pos, schema) || hasSpaceAfter(root, pos, schema) || isBeforeCefBlock(root, pos);\n      }\n    };\n    const needsToBeNbsp = (root, pos, schema) => needsToBeNbspLeft(root, pos, schema) || needsToBeNbspRight(root, leanRight(pos), schema);\n    const isNbspAt = (text, offset) => isNbsp(text.charAt(offset));\n    const isWhiteSpaceAt = (text, offset) => isWhiteSpace(text.charAt(offset));\n    const hasNbsp = pos => {\n      const container = pos.container();\n      return isText$a(container) && contains$1(container.data, nbsp);\n    };\n    const normalizeNbspMiddle = text => {\n      const chars = text.split('');\n      return map$3(chars, (chr, i) => {\n        if (isNbsp(chr) && i > 0 && i < chars.length - 1 && isContent(chars[i - 1]) && isContent(chars[i + 1])) {\n          return ' ';\n        } else {\n          return chr;\n        }\n      }).join('');\n    };\n    const normalizeNbspAtStart = (root, node, makeNbsp, schema) => {\n      const text = node.data;\n      const firstPos = CaretPosition(node, 0);\n      if (!makeNbsp && isNbspAt(text, 0) && !needsToBeNbsp(root, firstPos, schema)) {\n        node.data = ' ' + text.slice(1);\n        return true;\n      } else if (makeNbsp && isWhiteSpaceAt(text, 0) && needsToBeNbspLeft(root, firstPos, schema)) {\n        node.data = nbsp + text.slice(1);\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const normalizeNbspInMiddleOfTextNode = node => {\n      const text = node.data;\n      const newText = normalizeNbspMiddle(text);\n      if (newText !== text) {\n        node.data = newText;\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const normalizeNbspAtEnd = (root, node, makeNbsp, schema) => {\n      const text = node.data;\n      const lastPos = CaretPosition(node, text.length - 1);\n      if (!makeNbsp && isNbspAt(text, text.length - 1) && !needsToBeNbsp(root, lastPos, schema)) {\n        node.data = text.slice(0, -1) + ' ';\n        return true;\n      } else if (makeNbsp && isWhiteSpaceAt(text, text.length - 1) && needsToBeNbspRight(root, lastPos, schema)) {\n        node.data = text.slice(0, -1) + nbsp;\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const normalizeNbsps = (root, pos, schema) => {\n      const container = pos.container();\n      if (!isText$a(container)) {\n        return Optional.none();\n      }\n      if (hasNbsp(pos)) {\n        const normalized = normalizeNbspAtStart(root, container, false, schema) || normalizeNbspInMiddleOfTextNode(container) || normalizeNbspAtEnd(root, container, false, schema);\n        return someIf(normalized, pos);\n      } else if (needsToBeNbsp(root, pos, schema)) {\n        const normalized = normalizeNbspAtStart(root, container, true, schema) || normalizeNbspAtEnd(root, container, true, schema);\n        return someIf(normalized, pos);\n      } else {\n        return Optional.none();\n      }\n    };\n    const normalizeNbspsInEditor = editor => {\n      const root = SugarElement.fromDom(editor.getBody());\n      if (editor.selection.isCollapsed()) {\n        normalizeNbsps(root, CaretPosition.fromRangeStart(editor.selection.getRng()), editor.schema).each(pos => {\n          editor.selection.setRng(pos.toRange());\n        });\n      }\n    };\n\n    const normalize$1 = (node, offset, count, schema) => {\n      if (count === 0) {\n        return;\n      }\n      const elm = SugarElement.fromDom(node);\n      const root = ancestor$4(elm, el => schema.isBlock(name(el))).getOr(elm);\n      const whitespace = node.data.slice(offset, offset + count);\n      const isEndOfContent = offset + count >= node.data.length && needsToBeNbspRight(root, CaretPosition(node, node.data.length), schema);\n      const isStartOfContent = offset === 0 && needsToBeNbspLeft(root, CaretPosition(node, 0), schema);\n      node.replaceData(offset, count, normalize$4(whitespace, 4, isStartOfContent, isEndOfContent));\n    };\n    const normalizeWhitespaceAfter = (node, offset, schema) => {\n      const content = node.data.slice(offset);\n      const whitespaceCount = content.length - lTrim(content).length;\n      normalize$1(node, offset, whitespaceCount, schema);\n    };\n    const normalizeWhitespaceBefore = (node, offset, schema) => {\n      const content = node.data.slice(0, offset);\n      const whitespaceCount = content.length - rTrim(content).length;\n      normalize$1(node, offset - whitespaceCount, whitespaceCount, schema);\n    };\n    const mergeTextNodes = (prevNode, nextNode, schema, normalizeWhitespace, mergeToPrev = true) => {\n      const whitespaceOffset = rTrim(prevNode.data).length;\n      const newNode = mergeToPrev ? prevNode : nextNode;\n      const removeNode = mergeToPrev ? nextNode : prevNode;\n      if (mergeToPrev) {\n        newNode.appendData(removeNode.data);\n      } else {\n        newNode.insertData(0, removeNode.data);\n      }\n      remove$5(SugarElement.fromDom(removeNode));\n      if (normalizeWhitespace) {\n        normalizeWhitespaceAfter(newNode, whitespaceOffset, schema);\n      }\n      return newNode;\n    };\n\n    const needsReposition = (pos, elm) => {\n      const container = pos.container();\n      const offset = pos.offset();\n      return !CaretPosition.isTextPosition(pos) && container === elm.parentNode && offset > CaretPosition.before(elm).offset();\n    };\n    const reposition = (elm, pos) => needsReposition(pos, elm) ? CaretPosition(pos.container(), pos.offset() - 1) : pos;\n    const beforeOrStartOf = node => isText$a(node) ? CaretPosition(node, 0) : CaretPosition.before(node);\n    const afterOrEndOf = node => isText$a(node) ? CaretPosition(node, node.data.length) : CaretPosition.after(node);\n    const getPreviousSiblingCaretPosition = elm => {\n      if (isCaretCandidate$3(elm.previousSibling)) {\n        return Optional.some(afterOrEndOf(elm.previousSibling));\n      } else {\n        return elm.previousSibling ? lastPositionIn(elm.previousSibling) : Optional.none();\n      }\n    };\n    const getNextSiblingCaretPosition = elm => {\n      if (isCaretCandidate$3(elm.nextSibling)) {\n        return Optional.some(beforeOrStartOf(elm.nextSibling));\n      } else {\n        return elm.nextSibling ? firstPositionIn(elm.nextSibling) : Optional.none();\n      }\n    };\n    const findCaretPositionBackwardsFromElm = (rootElement, elm) => {\n      return Optional.from(elm.previousSibling ? elm.previousSibling : elm.parentNode).bind(node => prevPosition(rootElement, CaretPosition.before(node))).orThunk(() => nextPosition(rootElement, CaretPosition.after(elm)));\n    };\n    const findCaretPositionForwardsFromElm = (rootElement, elm) => nextPosition(rootElement, CaretPosition.after(elm)).orThunk(() => prevPosition(rootElement, CaretPosition.before(elm)));\n    const findCaretPositionBackwards = (rootElement, elm) => getPreviousSiblingCaretPosition(elm).orThunk(() => getNextSiblingCaretPosition(elm)).orThunk(() => findCaretPositionBackwardsFromElm(rootElement, elm));\n    const findCaretPositionForward = (rootElement, elm) => getNextSiblingCaretPosition(elm).orThunk(() => getPreviousSiblingCaretPosition(elm)).orThunk(() => findCaretPositionForwardsFromElm(rootElement, elm));\n    const findCaretPosition = (forward, rootElement, elm) => forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm);\n    const findCaretPosOutsideElmAfterDelete = (forward, rootElement, elm) => findCaretPosition(forward, rootElement, elm).map(curry(reposition, elm));\n    const setSelection$1 = (editor, forward, pos) => {\n      pos.fold(() => {\n        editor.focus();\n      }, pos => {\n        editor.selection.setRng(pos.toRange(), forward);\n      });\n    };\n    const eqRawNode = rawNode => elm => elm.dom === rawNode;\n    const isBlock = (editor, elm) => elm && has$2(editor.schema.getBlockElements(), name(elm));\n    const paddEmptyBlock = (elm, preserveEmptyCaret) => {\n      if (isEmpty$2(elm)) {\n        const br = SugarElement.fromHtml('<br data-mce-bogus=\"1\">');\n        if (preserveEmptyCaret) {\n          each$e(children$1(elm), node => {\n            if (!isEmptyCaretFormatElement(node)) {\n              remove$5(node);\n            }\n          });\n        } else {\n          empty(elm);\n        }\n        append$1(elm, br);\n        return Optional.some(CaretPosition.before(br.dom));\n      } else {\n        return Optional.none();\n      }\n    };\n    const deleteNormalized = (elm, afterDeletePosOpt, schema, normalizeWhitespace) => {\n      const prevTextOpt = prevSibling(elm).filter(isText$b);\n      const nextTextOpt = nextSibling(elm).filter(isText$b);\n      remove$5(elm);\n      return lift3(prevTextOpt, nextTextOpt, afterDeletePosOpt, (prev, next, pos) => {\n        const prevNode = prev.dom,\n          nextNode = next.dom;\n        const offset = prevNode.data.length;\n        mergeTextNodes(prevNode, nextNode, schema, normalizeWhitespace);\n        return pos.container() === nextNode ? CaretPosition(prevNode, offset) : pos;\n      }).orThunk(() => {\n        if (normalizeWhitespace) {\n          prevTextOpt.each(elm => normalizeWhitespaceBefore(elm.dom, elm.dom.length, schema));\n          nextTextOpt.each(elm => normalizeWhitespaceAfter(elm.dom, 0, schema));\n        }\n        return afterDeletePosOpt;\n      });\n    };\n    const isInlineElement = (editor, element) => has$2(editor.schema.getTextInlineElements(), name(element));\n    const deleteElement$2 = (editor, forward, elm, moveCaret = true, preserveEmptyCaret = false) => {\n      const afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom);\n      const parentBlock = ancestor$4(elm, curry(isBlock, editor), eqRawNode(editor.getBody()));\n      const normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos, editor.schema, isInlineElement(editor, elm));\n      if (editor.dom.isEmpty(editor.getBody())) {\n        editor.setContent('');\n        editor.selection.setCursorLocation();\n      } else {\n        parentBlock.bind(elm => paddEmptyBlock(elm, preserveEmptyCaret)).fold(() => {\n          if (moveCaret) {\n            setSelection$1(editor, forward, normalizedAfterDeletePos);\n          }\n        }, paddPos => {\n          if (moveCaret) {\n            setSelection$1(editor, forward, Optional.some(paddPos));\n          }\n        });\n      }\n    };\n\n    const strongRtl = /[\\u0591-\\u07FF\\uFB1D-\\uFDFF\\uFE70-\\uFEFC]/;\n    const hasStrongRtl = text => strongRtl.test(text);\n\n    const isInlineTarget = (editor, elm) => is$1(SugarElement.fromDom(elm), getInlineBoundarySelector(editor)) && !isTransparentBlock(editor.schema, elm) && editor.dom.isEditable(elm);\n    const isRtl = element => {\n      var _a;\n      return DOMUtils.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl((_a = element.textContent) !== null && _a !== void 0 ? _a : '');\n    };\n    const findInlineParents = (isInlineTarget, rootNode, pos) => filter$5(DOMUtils.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget);\n    const findRootInline = (isInlineTarget, rootNode, pos) => {\n      const parents = findInlineParents(isInlineTarget, rootNode, pos);\n      return Optional.from(parents[parents.length - 1]);\n    };\n    const hasSameParentBlock = (rootNode, node1, node2) => {\n      const block1 = getParentBlock$3(node1, rootNode);\n      const block2 = getParentBlock$3(node2, rootNode);\n      return isNonNullable(block1) && block1 === block2;\n    };\n    const isAtZwsp = pos => isBeforeInline(pos) || isAfterInline(pos);\n    const normalizePosition = (forward, pos) => {\n      const container = pos.container(),\n        offset = pos.offset();\n      if (forward) {\n        if (isCaretContainerInline(container)) {\n          if (isText$a(container.nextSibling)) {\n            return CaretPosition(container.nextSibling, 0);\n          } else {\n            return CaretPosition.after(container);\n          }\n        } else {\n          return isBeforeInline(pos) ? CaretPosition(container, offset + 1) : pos;\n        }\n      } else {\n        if (isCaretContainerInline(container)) {\n          if (isText$a(container.previousSibling)) {\n            return CaretPosition(container.previousSibling, container.previousSibling.data.length);\n          } else {\n            return CaretPosition.before(container);\n          }\n        } else {\n          return isAfterInline(pos) ? CaretPosition(container, offset - 1) : pos;\n        }\n      }\n    };\n    const normalizeForwards = curry(normalizePosition, true);\n    const normalizeBackwards = curry(normalizePosition, false);\n\n    const execCommandIgnoreInputEvents = (editor, command) => {\n      const inputBlocker = e => e.stopImmediatePropagation();\n      editor.on('beforeinput input', inputBlocker, true);\n      editor.getDoc().execCommand(command);\n      editor.off('beforeinput input', inputBlocker);\n    };\n    const execEditorDeleteCommand = editor => {\n      editor.execCommand('delete');\n    };\n    const execNativeDeleteCommand = editor => execCommandIgnoreInputEvents(editor, 'Delete');\n    const execNativeForwardDeleteCommand = editor => execCommandIgnoreInputEvents(editor, 'ForwardDelete');\n    const isBeforeRoot = rootNode => elm => is$2(parent(elm), rootNode, eq);\n    const isTextBlockOrListItem = element => isTextBlock$2(element) || isListItem$1(element);\n    const getParentBlock$2 = (rootNode, elm) => {\n      if (contains(rootNode, elm)) {\n        return closest$4(elm, isTextBlockOrListItem, isBeforeRoot(rootNode));\n      } else {\n        return Optional.none();\n      }\n    };\n    const paddEmptyBody = (editor, moveSelection = true) => {\n      if (editor.dom.isEmpty(editor.getBody())) {\n        editor.setContent('', {\n          no_selection: !moveSelection\n        });\n      }\n    };\n    const willDeleteLastPositionInElement = (forward, fromPos, elm) => lift2(firstPositionIn(elm), lastPositionIn(elm), (firstPos, lastPos) => {\n      const normalizedFirstPos = normalizePosition(true, firstPos);\n      const normalizedLastPos = normalizePosition(false, lastPos);\n      const normalizedFromPos = normalizePosition(false, fromPos);\n      if (forward) {\n        return nextPosition(elm, normalizedFromPos).exists(nextPos => nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos));\n      } else {\n        return prevPosition(elm, normalizedFromPos).exists(prevPos => prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos));\n      }\n    }).getOr(true);\n    const freefallRtl = root => {\n      const child = isComment$1(root) ? prevSibling(root) : lastChild(root);\n      return child.bind(freefallRtl).orThunk(() => Optional.some(root));\n    };\n    const deleteRangeContents = (editor, rng, root, moveSelection = true) => {\n      var _a;\n      rng.deleteContents();\n      const lastNode = freefallRtl(root).getOr(root);\n      const lastBlock = SugarElement.fromDom((_a = editor.dom.getParent(lastNode.dom, editor.dom.isBlock)) !== null && _a !== void 0 ? _a : root.dom);\n      if (lastBlock.dom === editor.getBody()) {\n        paddEmptyBody(editor, moveSelection);\n      } else if (isEmpty$2(lastBlock)) {\n        fillWithPaddingBr(lastBlock);\n        if (moveSelection) {\n          editor.selection.setCursorLocation(lastBlock.dom, 0);\n        }\n      }\n      if (!eq(root, lastBlock)) {\n        const additionalCleanupNodes = is$2(parent(lastBlock), root) ? [] : siblings(lastBlock);\n        each$e(additionalCleanupNodes.concat(children$1(root)), node => {\n          if (!eq(node, lastBlock) && !contains(node, lastBlock) && isEmpty$2(node)) {\n            remove$5(node);\n          }\n        });\n      }\n    };\n\n    const ancestor$1 = (scope, predicate, isRoot) => ancestor$4(scope, predicate, isRoot).isSome();\n    const sibling = (scope, predicate) => sibling$1(scope, predicate).isSome();\n    const descendant = (scope, predicate) => descendant$2(scope, predicate).isSome();\n\n    const isRootFromElement = root => cur => eq(root, cur);\n    const getTableCells = table => descendants(table, 'td,th');\n    const getTable$1 = (node, isRoot) => getClosestTable(SugarElement.fromDom(node), isRoot);\n    const selectionInTableWithNestedTable = details => {\n      return lift2(details.startTable, details.endTable, (startTable, endTable) => {\n        const isStartTableParentOfEndTable = descendant(startTable, t => eq(t, endTable));\n        const isEndTableParentOfStartTable = descendant(endTable, t => eq(t, startTable));\n        return !isStartTableParentOfEndTable && !isEndTableParentOfStartTable ? details : {\n          ...details,\n          startTable: isStartTableParentOfEndTable ? Optional.none() : details.startTable,\n          endTable: isEndTableParentOfStartTable ? Optional.none() : details.endTable,\n          isSameTable: false,\n          isMultiTable: false\n        };\n      }).getOr(details);\n    };\n    const adjustQuirksInDetails = details => {\n      return selectionInTableWithNestedTable(details);\n    };\n    const getTableDetailsFromRange = (rng, isRoot) => {\n      const startTable = getTable$1(rng.startContainer, isRoot);\n      const endTable = getTable$1(rng.endContainer, isRoot);\n      const isStartInTable = startTable.isSome();\n      const isEndInTable = endTable.isSome();\n      const isSameTable = lift2(startTable, endTable, eq).getOr(false);\n      const isMultiTable = !isSameTable && isStartInTable && isEndInTable;\n      return adjustQuirksInDetails({\n        startTable,\n        endTable,\n        isStartInTable,\n        isEndInTable,\n        isSameTable,\n        isMultiTable\n      });\n    };\n\n    const tableCellRng = (start, end) => ({\n      start,\n      end\n    });\n    const tableSelection = (rng, table, cells) => ({\n      rng,\n      table,\n      cells\n    });\n    const deleteAction = Adt.generate([{\n      singleCellTable: ['rng', 'cell']\n    }, {\n      fullTable: ['table']\n    }, {\n      partialTable: ['cells', 'outsideDetails']\n    }, {\n      multiTable: ['startTableCells', 'endTableCells', 'betweenRng']\n    }]);\n    const getClosestCell$1 = (container, isRoot) => closest$3(SugarElement.fromDom(container), 'td,th', isRoot);\n    const isExpandedCellRng = cellRng => !eq(cellRng.start, cellRng.end);\n    const getTableFromCellRng = (cellRng, isRoot) => getClosestTable(cellRng.start, isRoot).bind(startParentTable => getClosestTable(cellRng.end, isRoot).bind(endParentTable => someIf(eq(startParentTable, endParentTable), startParentTable)));\n    const isSingleCellTable = (cellRng, isRoot) => !isExpandedCellRng(cellRng) && getTableFromCellRng(cellRng, isRoot).exists(table => {\n      const rows = table.dom.rows;\n      return rows.length === 1 && rows[0].cells.length === 1;\n    });\n    const getCellRng = (rng, isRoot) => {\n      const startCell = getClosestCell$1(rng.startContainer, isRoot);\n      const endCell = getClosestCell$1(rng.endContainer, isRoot);\n      return lift2(startCell, endCell, tableCellRng);\n    };\n    const getCellRangeFromStartTable = isRoot => startCell => getClosestTable(startCell, isRoot).bind(table => last$3(getTableCells(table)).map(endCell => tableCellRng(startCell, endCell)));\n    const getCellRangeFromEndTable = isRoot => endCell => getClosestTable(endCell, isRoot).bind(table => head(getTableCells(table)).map(startCell => tableCellRng(startCell, endCell)));\n    const getTableSelectionFromCellRng = isRoot => cellRng => getTableFromCellRng(cellRng, isRoot).map(table => tableSelection(cellRng, table, getTableCells(table)));\n    const getTableSelections = (cellRng, selectionDetails, rng, isRoot) => {\n      if (rng.collapsed || !cellRng.forall(isExpandedCellRng)) {\n        return Optional.none();\n      } else if (selectionDetails.isSameTable) {\n        const sameTableSelection = cellRng.bind(getTableSelectionFromCellRng(isRoot));\n        return Optional.some({\n          start: sameTableSelection,\n          end: sameTableSelection\n        });\n      } else {\n        const startCell = getClosestCell$1(rng.startContainer, isRoot);\n        const endCell = getClosestCell$1(rng.endContainer, isRoot);\n        const startTableSelection = startCell.bind(getCellRangeFromStartTable(isRoot)).bind(getTableSelectionFromCellRng(isRoot));\n        const endTableSelection = endCell.bind(getCellRangeFromEndTable(isRoot)).bind(getTableSelectionFromCellRng(isRoot));\n        return Optional.some({\n          start: startTableSelection,\n          end: endTableSelection\n        });\n      }\n    };\n    const getCellIndex = (cells, cell) => findIndex$2(cells, x => eq(x, cell));\n    const getSelectedCells = tableSelection => lift2(getCellIndex(tableSelection.cells, tableSelection.rng.start), getCellIndex(tableSelection.cells, tableSelection.rng.end), (startIndex, endIndex) => tableSelection.cells.slice(startIndex, endIndex + 1));\n    const isSingleCellTableContentSelected = (optCellRng, rng, isRoot) => optCellRng.exists(cellRng => isSingleCellTable(cellRng, isRoot) && hasAllContentsSelected(cellRng.start, rng));\n    const unselectCells = (rng, selectionDetails) => {\n      const {\n        startTable,\n        endTable\n      } = selectionDetails;\n      const otherContentRng = rng.cloneRange();\n      startTable.each(table => otherContentRng.setStartAfter(table.dom));\n      endTable.each(table => otherContentRng.setEndBefore(table.dom));\n      return otherContentRng;\n    };\n    const handleSingleTable = (cellRng, selectionDetails, rng, isRoot) => getTableSelections(cellRng, selectionDetails, rng, isRoot).bind(({\n      start,\n      end\n    }) => start.or(end)).bind(tableSelection => {\n      const {\n        isSameTable\n      } = selectionDetails;\n      const selectedCells = getSelectedCells(tableSelection).getOr([]);\n      if (isSameTable && tableSelection.cells.length === selectedCells.length) {\n        return Optional.some(deleteAction.fullTable(tableSelection.table));\n      } else if (selectedCells.length > 0) {\n        if (isSameTable) {\n          return Optional.some(deleteAction.partialTable(selectedCells, Optional.none()));\n        } else {\n          const otherContentRng = unselectCells(rng, selectionDetails);\n          return Optional.some(deleteAction.partialTable(selectedCells, Optional.some({\n            ...selectionDetails,\n            rng: otherContentRng\n          })));\n        }\n      } else {\n        return Optional.none();\n      }\n    });\n    const handleMultiTable = (cellRng, selectionDetails, rng, isRoot) => getTableSelections(cellRng, selectionDetails, rng, isRoot).bind(({\n      start,\n      end\n    }) => {\n      const startTableSelectedCells = start.bind(getSelectedCells).getOr([]);\n      const endTableSelectedCells = end.bind(getSelectedCells).getOr([]);\n      if (startTableSelectedCells.length > 0 && endTableSelectedCells.length > 0) {\n        const otherContentRng = unselectCells(rng, selectionDetails);\n        return Optional.some(deleteAction.multiTable(startTableSelectedCells, endTableSelectedCells, otherContentRng));\n      } else {\n        return Optional.none();\n      }\n    });\n    const getActionFromRange = (root, rng) => {\n      const isRoot = isRootFromElement(root);\n      const optCellRng = getCellRng(rng, isRoot);\n      const selectionDetails = getTableDetailsFromRange(rng, isRoot);\n      if (isSingleCellTableContentSelected(optCellRng, rng, isRoot)) {\n        return optCellRng.map(cellRng => deleteAction.singleCellTable(rng, cellRng.start));\n      } else if (selectionDetails.isMultiTable) {\n        return handleMultiTable(optCellRng, selectionDetails, rng, isRoot);\n      } else {\n        return handleSingleTable(optCellRng, selectionDetails, rng, isRoot);\n      }\n    };\n\n    const cleanCells = cells => each$e(cells, cell => {\n      remove$a(cell, 'contenteditable');\n      fillWithPaddingBr(cell);\n    });\n    const getOutsideBlock = (editor, container) => Optional.from(editor.dom.getParent(container, editor.dom.isBlock)).map(SugarElement.fromDom);\n    const handleEmptyBlock = (editor, startInTable, emptyBlock) => {\n      emptyBlock.each(block => {\n        if (startInTable) {\n          remove$5(block);\n        } else {\n          fillWithPaddingBr(block);\n          editor.selection.setCursorLocation(block.dom, 0);\n        }\n      });\n    };\n    const deleteContentInsideCell = (editor, cell, rng, isFirstCellInSelection) => {\n      const insideTableRng = rng.cloneRange();\n      if (isFirstCellInSelection) {\n        insideTableRng.setStart(rng.startContainer, rng.startOffset);\n        insideTableRng.setEndAfter(cell.dom.lastChild);\n      } else {\n        insideTableRng.setStartBefore(cell.dom.firstChild);\n        insideTableRng.setEnd(rng.endContainer, rng.endOffset);\n      }\n      deleteCellContents(editor, insideTableRng, cell, false).each(action => action());\n    };\n    const collapseAndRestoreCellSelection = editor => {\n      const selectedCells = getCellsFromEditor(editor);\n      const selectedNode = SugarElement.fromDom(editor.selection.getNode());\n      if (isTableCell$3(selectedNode.dom) && isEmpty$2(selectedNode)) {\n        editor.selection.setCursorLocation(selectedNode.dom, 0);\n      } else {\n        editor.selection.collapse(true);\n      }\n      if (selectedCells.length > 1 && exists(selectedCells, cell => eq(cell, selectedNode))) {\n        set$3(selectedNode, 'data-mce-selected', '1');\n      }\n    };\n    const emptySingleTableCells = (editor, cells, outsideDetails) => Optional.some(() => {\n      const editorRng = editor.selection.getRng();\n      const cellsToClean = outsideDetails.bind(({\n        rng,\n        isStartInTable\n      }) => {\n        const outsideBlock = getOutsideBlock(editor, isStartInTable ? rng.endContainer : rng.startContainer);\n        rng.deleteContents();\n        handleEmptyBlock(editor, isStartInTable, outsideBlock.filter(isEmpty$2));\n        const endPointCell = isStartInTable ? cells[0] : cells[cells.length - 1];\n        deleteContentInsideCell(editor, endPointCell, editorRng, isStartInTable);\n        if (!isEmpty$2(endPointCell)) {\n          return Optional.some(isStartInTable ? cells.slice(1) : cells.slice(0, -1));\n        } else {\n          return Optional.none();\n        }\n      }).getOr(cells);\n      cleanCells(cellsToClean);\n      collapseAndRestoreCellSelection(editor);\n    });\n    const emptyMultiTableCells = (editor, startTableCells, endTableCells, betweenRng) => Optional.some(() => {\n      const rng = editor.selection.getRng();\n      const startCell = startTableCells[0];\n      const endCell = endTableCells[endTableCells.length - 1];\n      deleteContentInsideCell(editor, startCell, rng, true);\n      deleteContentInsideCell(editor, endCell, rng, false);\n      const startTableCellsToClean = isEmpty$2(startCell) ? startTableCells : startTableCells.slice(1);\n      const endTableCellsToClean = isEmpty$2(endCell) ? endTableCells : endTableCells.slice(0, -1);\n      cleanCells(startTableCellsToClean.concat(endTableCellsToClean));\n      betweenRng.deleteContents();\n      collapseAndRestoreCellSelection(editor);\n    });\n    const deleteCellContents = (editor, rng, cell, moveSelection = true) => Optional.some(() => {\n      deleteRangeContents(editor, rng, cell, moveSelection);\n    });\n    const deleteTableElement = (editor, table) => Optional.some(() => deleteElement$2(editor, false, table));\n    const deleteCellRange = (editor, rootElm, rng) => getActionFromRange(rootElm, rng).bind(action => action.fold(curry(deleteCellContents, editor), curry(deleteTableElement, editor), curry(emptySingleTableCells, editor), curry(emptyMultiTableCells, editor)));\n    const deleteCaptionRange = (editor, caption) => emptyElement(editor, caption);\n    const deleteTableRange = (editor, rootElm, rng, startElm) => getParentCaption(rootElm, startElm).fold(() => deleteCellRange(editor, rootElm, rng), caption => deleteCaptionRange(editor, caption));\n    const deleteRange$3 = (editor, startElm, selectedCells) => {\n      const rootNode = SugarElement.fromDom(editor.getBody());\n      const rng = editor.selection.getRng();\n      return selectedCells.length !== 0 ? emptySingleTableCells(editor, selectedCells, Optional.none()) : deleteTableRange(editor, rootNode, rng, startElm);\n    };\n    const getParentCell = (rootElm, elm) => find$2(parentsAndSelf(elm, rootElm), isTableCell$2);\n    const getParentCaption = (rootElm, elm) => find$2(parentsAndSelf(elm, rootElm), isTag('caption'));\n    const deleteBetweenCells = (editor, rootElm, forward, fromCell, from) => navigate(forward, editor.getBody(), from).bind(to => getParentCell(rootElm, SugarElement.fromDom(to.getNode())).bind(toCell => eq(toCell, fromCell) ? Optional.none() : Optional.some(noop)));\n    const emptyElement = (editor, elm) => Optional.some(() => {\n      fillWithPaddingBr(elm);\n      editor.selection.setCursorLocation(elm.dom, 0);\n    });\n    const isDeleteOfLastCharPos = (fromCaption, forward, from, to) => firstPositionIn(fromCaption.dom).bind(first => lastPositionIn(fromCaption.dom).map(last => forward ? from.isEqual(first) && to.isEqual(last) : from.isEqual(last) && to.isEqual(first))).getOr(true);\n    const emptyCaretCaption = (editor, elm) => emptyElement(editor, elm);\n    const validateCaretCaption = (rootElm, fromCaption, to) => getParentCaption(rootElm, SugarElement.fromDom(to.getNode())).fold(() => Optional.some(noop), toCaption => someIf(!eq(toCaption, fromCaption), noop));\n    const deleteCaretInsideCaption = (editor, rootElm, forward, fromCaption, from) => navigate(forward, editor.getBody(), from).fold(() => Optional.some(noop), to => isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to));\n    const deleteCaretCells = (editor, forward, rootElm, startElm) => {\n      const from = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return getParentCell(rootElm, startElm).bind(fromCell => isEmpty$2(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from));\n    };\n    const deleteCaretCaption = (editor, forward, rootElm, fromCaption) => {\n      const from = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return isEmpty$2(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from);\n    };\n    const isNearTable = (forward, pos) => forward ? isBeforeTable(pos) : isAfterTable(pos);\n    const isBeforeOrAfterTable = (editor, forward) => {\n      const fromPos = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return isNearTable(forward, fromPos) || fromPosition(forward, editor.getBody(), fromPos).exists(pos => isNearTable(forward, pos));\n    };\n    const deleteCaret$3 = (editor, forward, startElm) => {\n      const rootElm = SugarElement.fromDom(editor.getBody());\n      return getParentCaption(rootElm, startElm).fold(() => deleteCaretCells(editor, forward, rootElm, startElm).orThunk(() => someIf(isBeforeOrAfterTable(editor, forward), noop)), fromCaption => deleteCaretCaption(editor, forward, rootElm, fromCaption));\n    };\n    const backspaceDelete$a = (editor, forward) => {\n      const startElm = SugarElement.fromDom(editor.selection.getStart(true));\n      const cells = getCellsFromEditor(editor);\n      return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret$3(editor, forward, startElm) : deleteRange$3(editor, startElm, cells);\n    };\n\n    const getContentEditableRoot$1 = (root, node) => {\n      let tempNode = node;\n      while (tempNode && tempNode !== root) {\n        if (isContentEditableTrue$3(tempNode) || isContentEditableFalse$b(tempNode)) {\n          return tempNode;\n        }\n        tempNode = tempNode.parentNode;\n      }\n      return null;\n    };\n\n    const internalAttributesPrefixes = ['data-ephox-', 'data-mce-', 'data-alloy-', 'data-snooker-', '_'];\n    const each$9 = Tools.each;\n    const ElementUtils = editor => {\n      const dom = editor.dom;\n      const internalAttributes = new Set(editor.serializer.getTempAttrs());\n      const compare = (node1, node2) => {\n        if (node1.nodeName !== node2.nodeName || node1.nodeType !== node2.nodeType) {\n          return false;\n        }\n        const getAttribs = node => {\n          const attribs = {};\n          each$9(dom.getAttribs(node), attr => {\n            const name = attr.nodeName.toLowerCase();\n            if (name !== 'style' && !isAttributeInternal(name)) {\n              attribs[name] = dom.getAttrib(node, name);\n            }\n          });\n          return attribs;\n        };\n        const compareObjects = (obj1, obj2) => {\n          for (const name in obj1) {\n            if (has$2(obj1, name)) {\n              const value = obj2[name];\n              if (isUndefined(value)) {\n                return false;\n              }\n              if (obj1[name] !== value) {\n                return false;\n              }\n              delete obj2[name];\n            }\n          }\n          for (const name in obj2) {\n            if (has$2(obj2, name)) {\n              return false;\n            }\n          }\n          return true;\n        };\n        if (isElement$6(node1) && isElement$6(node2)) {\n          if (!compareObjects(getAttribs(node1), getAttribs(node2))) {\n            return false;\n          }\n          if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {\n            return false;\n          }\n        }\n        return !isBookmarkNode$1(node1) && !isBookmarkNode$1(node2);\n      };\n      const isAttributeInternal = attributeName => exists(internalAttributesPrefixes, value => startsWith(attributeName, value)) || internalAttributes.has(attributeName);\n      return {\n        compare,\n        isAttributeInternal\n      };\n    };\n\n    const isHeading = node => ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(node.name);\n    const isSummary = node => node.name === 'summary';\n\n    const traverse = (root, fn) => {\n      let node = root;\n      while (node = node.walk()) {\n        fn(node);\n      }\n    };\n    const matchNode$1 = (nodeFilters, attributeFilters, node, matches) => {\n      const name = node.name;\n      for (let ni = 0, nl = nodeFilters.length; ni < nl; ni++) {\n        const filter = nodeFilters[ni];\n        if (filter.name === name) {\n          const match = matches.nodes[name];\n          if (match) {\n            match.nodes.push(node);\n          } else {\n            matches.nodes[name] = {\n              filter,\n              nodes: [node]\n            };\n          }\n        }\n      }\n      if (node.attributes) {\n        for (let ai = 0, al = attributeFilters.length; ai < al; ai++) {\n          const filter = attributeFilters[ai];\n          const attrName = filter.name;\n          if (attrName in node.attributes.map) {\n            const match = matches.attributes[attrName];\n            if (match) {\n              match.nodes.push(node);\n            } else {\n              matches.attributes[attrName] = {\n                filter,\n                nodes: [node]\n              };\n            }\n          }\n        }\n      }\n    };\n    const findMatchingNodes = (nodeFilters, attributeFilters, node) => {\n      const matches = {\n        nodes: {},\n        attributes: {}\n      };\n      if (node.firstChild) {\n        traverse(node, childNode => {\n          matchNode$1(nodeFilters, attributeFilters, childNode, matches);\n        });\n      }\n      return matches;\n    };\n    const runFilters = (matches, args) => {\n      const run = (matchRecord, filteringAttributes) => {\n        each$d(matchRecord, match => {\n          const nodes = from(match.nodes);\n          each$e(match.filter.callbacks, callback => {\n            for (let i = nodes.length - 1; i >= 0; i--) {\n              const node = nodes[i];\n              const valueMatches = filteringAttributes ? node.attr(match.filter.name) !== undefined : node.name === match.filter.name;\n              if (!valueMatches || isNullable(node.parent)) {\n                nodes.splice(i, 1);\n              }\n            }\n            if (nodes.length > 0) {\n              callback(nodes, match.filter.name, args);\n            }\n          });\n        });\n      };\n      run(matches.nodes, false);\n      run(matches.attributes, true);\n    };\n    const filter$2 = (nodeFilters, attributeFilters, node, args = {}) => {\n      const matches = findMatchingNodes(nodeFilters, attributeFilters, node);\n      runFilters(matches, args);\n    };\n\n    const paddEmptyNode = (settings, args, isBlock, node) => {\n      const brPreferred = settings.pad_empty_with_br || args.insert;\n      if (brPreferred && isBlock(node)) {\n        const astNode = new AstNode('br', 1);\n        if (args.insert) {\n          astNode.attr('data-mce-bogus', '1');\n        }\n        node.empty().append(astNode);\n      } else {\n        node.empty().append(new AstNode('#text', 3)).value = nbsp;\n      }\n    };\n    const isPaddedWithNbsp = node => {\n      var _a;\n      return hasOnlyChild(node, '#text') && ((_a = node === null || node === void 0 ? void 0 : node.firstChild) === null || _a === void 0 ? void 0 : _a.value) === nbsp;\n    };\n    const hasOnlyChild = (node, name) => {\n      const firstChild = node === null || node === void 0 ? void 0 : node.firstChild;\n      return isNonNullable(firstChild) && firstChild === node.lastChild && firstChild.name === name;\n    };\n    const isPadded = (schema, node) => {\n      const rule = schema.getElementRule(node.name);\n      return (rule === null || rule === void 0 ? void 0 : rule.paddEmpty) === true;\n    };\n    const isEmpty = (schema, nonEmptyElements, whitespaceElements, node) => node.isEmpty(nonEmptyElements, whitespaceElements, node => isPadded(schema, node));\n    const isLineBreakNode = (node, isBlock) => isNonNullable(node) && (isBlock(node) || node.name === 'br');\n    const findClosestEditingHost = scope => {\n      let editableNode;\n      for (let node = scope; node; node = node.parent) {\n        const contentEditable = node.attr('contenteditable');\n        if (contentEditable === 'false') {\n          break;\n        } else if (contentEditable === 'true') {\n          editableNode = node;\n        }\n      }\n      return Optional.from(editableNode);\n    };\n\n    const removeOrUnwrapInvalidNode = (node, schema, originalNodeParent = node.parent) => {\n      if (schema.getSpecialElements()[node.name]) {\n        node.empty().remove();\n      } else {\n        const children = node.children();\n        for (const childNode of children) {\n          if (originalNodeParent && !schema.isValidChild(originalNodeParent.name, childNode.name)) {\n            removeOrUnwrapInvalidNode(childNode, schema, originalNodeParent);\n          }\n        }\n        node.unwrap();\n      }\n    };\n    const cleanInvalidNodes = (nodes, schema, rootNode, onCreate = noop) => {\n      const textBlockElements = schema.getTextBlockElements();\n      const nonEmptyElements = schema.getNonEmptyElements();\n      const whitespaceElements = schema.getWhitespaceElements();\n      const nonSplittableElements = Tools.makeMap('tr,td,th,tbody,thead,tfoot,table,summary');\n      const fixed = new Set();\n      const isSplittableElement = node => node !== rootNode && !nonSplittableElements[node.name];\n      for (let ni = 0; ni < nodes.length; ni++) {\n        const node = nodes[ni];\n        let parent;\n        let newParent;\n        let tempNode;\n        if (!node.parent || fixed.has(node)) {\n          continue;\n        }\n        if (textBlockElements[node.name] && node.parent.name === 'li') {\n          let sibling = node.next;\n          while (sibling) {\n            if (textBlockElements[sibling.name]) {\n              sibling.name = 'li';\n              fixed.add(sibling);\n              node.parent.insert(sibling, node.parent);\n            } else {\n              break;\n            }\n            sibling = sibling.next;\n          }\n          node.unwrap();\n          continue;\n        }\n        const parents = [node];\n        for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && isSplittableElement(parent); parent = parent.parent) {\n          parents.push(parent);\n        }\n        if (parent && parents.length > 1) {\n          if (!isInvalid(schema, node, parent)) {\n            parents.reverse();\n            newParent = parents[0].clone();\n            onCreate(newParent);\n            let currentNode = newParent;\n            for (let i = 0; i < parents.length - 1; i++) {\n              if (schema.isValidChild(currentNode.name, parents[i].name) && i > 0) {\n                tempNode = parents[i].clone();\n                onCreate(tempNode);\n                currentNode.append(tempNode);\n              } else {\n                tempNode = currentNode;\n              }\n              for (let childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) {\n                const nextNode = childNode.next;\n                tempNode.append(childNode);\n                childNode = nextNode;\n              }\n              currentNode = tempNode;\n            }\n            if (!isEmpty(schema, nonEmptyElements, whitespaceElements, newParent)) {\n              parent.insert(newParent, parents[0], true);\n              parent.insert(node, newParent);\n            } else {\n              parent.insert(node, parents[0], true);\n            }\n            parent = parents[0];\n            if (isEmpty(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) {\n              parent.empty().remove();\n            }\n          } else {\n            removeOrUnwrapInvalidNode(node, schema);\n          }\n        } else if (node.parent) {\n          if (node.name === 'li') {\n            let sibling = node.prev;\n            if (sibling && (sibling.name === 'ul' || sibling.name === 'ol')) {\n              sibling.append(node);\n              continue;\n            }\n            sibling = node.next;\n            if (sibling && (sibling.name === 'ul' || sibling.name === 'ol') && sibling.firstChild) {\n              sibling.insert(node, sibling.firstChild, true);\n              continue;\n            }\n            const wrapper = new AstNode('ul', 1);\n            onCreate(wrapper);\n            node.wrap(wrapper);\n            continue;\n          }\n          if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {\n            const wrapper = new AstNode('div', 1);\n            onCreate(wrapper);\n            node.wrap(wrapper);\n          } else {\n            removeOrUnwrapInvalidNode(node, schema);\n          }\n        }\n      }\n    };\n    const hasClosest = (node, parentName) => {\n      let tempNode = node;\n      while (tempNode) {\n        if (tempNode.name === parentName) {\n          return true;\n        }\n        tempNode = tempNode.parent;\n      }\n      return false;\n    };\n    const isInvalid = (schema, node, parent = node.parent) => {\n      if (!parent) {\n        return false;\n      }\n      if (schema.children[node.name] && !schema.isValidChild(parent.name, node.name)) {\n        return true;\n      }\n      if (node.name === 'a' && hasClosest(parent, 'a')) {\n        return true;\n      }\n      if (isSummary(parent) && isHeading(node)) {\n        return !((parent === null || parent === void 0 ? void 0 : parent.firstChild) === node && (parent === null || parent === void 0 ? void 0 : parent.lastChild) === node);\n      }\n      return false;\n    };\n\n    const createRange = (sc, so, ec, eo) => {\n      const rng = document.createRange();\n      rng.setStart(sc, so);\n      rng.setEnd(ec, eo);\n      return rng;\n    };\n    const normalizeBlockSelectionRange = rng => {\n      const startPos = CaretPosition.fromRangeStart(rng);\n      const endPos = CaretPosition.fromRangeEnd(rng);\n      const rootNode = rng.commonAncestorContainer;\n      return fromPosition(false, rootNode, endPos).map(newEndPos => {\n        if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) {\n          return createRange(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset());\n        } else {\n          return rng;\n        }\n      }).getOr(rng);\n    };\n    const normalize = rng => rng.collapsed ? rng : normalizeBlockSelectionRange(rng);\n\n    const hasOnlyOneChild$1 = node => {\n      return isNonNullable(node.firstChild) && node.firstChild === node.lastChild;\n    };\n    const isPaddingNode = node => {\n      return node.name === 'br' || node.value === nbsp;\n    };\n    const isPaddedEmptyBlock = (schema, node) => {\n      const blockElements = schema.getBlockElements();\n      return blockElements[node.name] && hasOnlyOneChild$1(node) && isPaddingNode(node.firstChild);\n    };\n    const isEmptyFragmentElement = (schema, node) => {\n      const nonEmptyElements = schema.getNonEmptyElements();\n      return isNonNullable(node) && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node));\n    };\n    const isListFragment = (schema, fragment) => {\n      let firstChild = fragment.firstChild;\n      let lastChild = fragment.lastChild;\n      if (firstChild && firstChild.name === 'meta') {\n        firstChild = firstChild.next;\n      }\n      if (lastChild && lastChild.attr('id') === 'mce_marker') {\n        lastChild = lastChild.prev;\n      }\n      if (isEmptyFragmentElement(schema, lastChild)) {\n        lastChild = lastChild === null || lastChild === void 0 ? void 0 : lastChild.prev;\n      }\n      if (!firstChild || firstChild !== lastChild) {\n        return false;\n      }\n      return firstChild.name === 'ul' || firstChild.name === 'ol';\n    };\n    const cleanupDomFragment = domFragment => {\n      var _a, _b;\n      const firstChild = domFragment.firstChild;\n      const lastChild = domFragment.lastChild;\n      if (firstChild && firstChild.nodeName === 'META') {\n        (_a = firstChild.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(firstChild);\n      }\n      if (lastChild && lastChild.id === 'mce_marker') {\n        (_b = lastChild.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(lastChild);\n      }\n      return domFragment;\n    };\n    const toDomFragment = (dom, serializer, fragment) => {\n      const html = serializer.serialize(fragment);\n      const domFragment = dom.createFragment(html);\n      return cleanupDomFragment(domFragment);\n    };\n    const listItems = elm => {\n      var _a;\n      return filter$5((_a = elm === null || elm === void 0 ? void 0 : elm.childNodes) !== null && _a !== void 0 ? _a : [], child => {\n        return child.nodeName === 'LI';\n      });\n    };\n    const isPadding = node => {\n      return node.data === nbsp || isBr$6(node);\n    };\n    const isListItemPadded = node => {\n      return isNonNullable(node === null || node === void 0 ? void 0 : node.firstChild) && node.firstChild === node.lastChild && isPadding(node.firstChild);\n    };\n    const isEmptyOrPadded = elm => {\n      return !elm.firstChild || isListItemPadded(elm);\n    };\n    const trimListItems = elms => {\n      return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms;\n    };\n    const getParentLi = (dom, node) => {\n      const parentBlock = dom.getParent(node, dom.isBlock);\n      return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null;\n    };\n    const isParentBlockLi = (dom, node) => {\n      return !!getParentLi(dom, node);\n    };\n    const getSplit = (parentNode, rng) => {\n      const beforeRng = rng.cloneRange();\n      const afterRng = rng.cloneRange();\n      beforeRng.setStartBefore(parentNode);\n      afterRng.setEndAfter(parentNode);\n      return [beforeRng.cloneContents(), afterRng.cloneContents()];\n    };\n    const findFirstIn = (node, rootNode) => {\n      const caretPos = CaretPosition.before(node);\n      const caretWalker = CaretWalker(rootNode);\n      const newCaretPos = caretWalker.next(caretPos);\n      return newCaretPos ? newCaretPos.toRange() : null;\n    };\n    const findLastOf = (node, rootNode) => {\n      const caretPos = CaretPosition.after(node);\n      const caretWalker = CaretWalker(rootNode);\n      const newCaretPos = caretWalker.prev(caretPos);\n      return newCaretPos ? newCaretPos.toRange() : null;\n    };\n    const insertMiddle = (target, elms, rootNode, rng) => {\n      const parts = getSplit(target, rng);\n      const parentElm = target.parentNode;\n      if (parentElm) {\n        parentElm.insertBefore(parts[0], target);\n        Tools.each(elms, li => {\n          parentElm.insertBefore(li, target);\n        });\n        parentElm.insertBefore(parts[1], target);\n        parentElm.removeChild(target);\n      }\n      return findLastOf(elms[elms.length - 1], rootNode);\n    };\n    const insertBefore$2 = (target, elms, rootNode) => {\n      const parentElm = target.parentNode;\n      if (parentElm) {\n        Tools.each(elms, elm => {\n          parentElm.insertBefore(elm, target);\n        });\n      }\n      return findFirstIn(target, rootNode);\n    };\n    const insertAfter$2 = (target, elms, rootNode, dom) => {\n      dom.insertAfter(elms.reverse(), target);\n      return findLastOf(elms[0], rootNode);\n    };\n    const insertAtCaret$1 = (serializer, dom, rng, fragment) => {\n      const domFragment = toDomFragment(dom, serializer, fragment);\n      const liTarget = getParentLi(dom, rng.startContainer);\n      const liElms = trimListItems(listItems(domFragment.firstChild));\n      const BEGINNING = 1,\n        END = 2;\n      const rootNode = dom.getRoot();\n      const isAt = location => {\n        const caretPos = CaretPosition.fromRangeStart(rng);\n        const caretWalker = CaretWalker(dom.getRoot());\n        const newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos);\n        const newPosNode = newPos === null || newPos === void 0 ? void 0 : newPos.getNode();\n        return newPosNode ? getParentLi(dom, newPosNode) !== liTarget : true;\n      };\n      if (!liTarget) {\n        return null;\n      } else if (isAt(BEGINNING)) {\n        return insertBefore$2(liTarget, liElms, rootNode);\n      } else if (isAt(END)) {\n        return insertAfter$2(liTarget, liElms, rootNode, dom);\n      } else {\n        return insertMiddle(liTarget, liElms, rootNode, rng);\n      }\n    };\n\n    const mergeableWrappedElements = ['pre'];\n    const shouldPasteContentOnly = (dom, fragment, parentNode, root) => {\n      var _a;\n      const firstNode = fragment.firstChild;\n      const lastNode = fragment.lastChild;\n      const last = lastNode.attr('data-mce-type') === 'bookmark' ? lastNode.prev : lastNode;\n      const isPastingSingleElement = firstNode === last;\n      const isWrappedElement = contains$2(mergeableWrappedElements, firstNode.name);\n      if (isPastingSingleElement && isWrappedElement) {\n        const isContentEditable = firstNode.attr('contenteditable') !== 'false';\n        const isPastingInTheSameBlockTag = ((_a = dom.getParent(parentNode, dom.isBlock)) === null || _a === void 0 ? void 0 : _a.nodeName.toLowerCase()) === firstNode.name;\n        const isPastingInContentEditable = Optional.from(getContentEditableRoot$1(root, parentNode)).forall(isContentEditableTrue$3);\n        return isContentEditable && isPastingInTheSameBlockTag && isPastingInContentEditable;\n      } else {\n        return false;\n      }\n    };\n    const isTableCell = isTableCell$3;\n    const isTableCellContentSelected = (dom, rng, cell) => {\n      if (isNonNullable(cell)) {\n        const endCell = dom.getParent(rng.endContainer, isTableCell);\n        return cell === endCell && hasAllContentsSelected(SugarElement.fromDom(cell), rng);\n      } else {\n        return false;\n      }\n    };\n    const validInsertion = (editor, value, parentNode) => {\n      var _a;\n      if (parentNode.getAttribute('data-mce-bogus') === 'all') {\n        (_a = parentNode.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(editor.dom.createFragment(value), parentNode);\n      } else {\n        const node = parentNode.firstChild;\n        const node2 = parentNode.lastChild;\n        if (!node || node === node2 && node.nodeName === 'BR') {\n          editor.dom.setHTML(parentNode, value);\n        } else {\n          editor.selection.setContent(value, {\n            no_events: true\n          });\n        }\n      }\n    };\n    const trimBrsFromTableCell = (dom, elm, schema) => {\n      Optional.from(dom.getParent(elm, 'td,th')).map(SugarElement.fromDom).each(el => trimBlockTrailingBr(el, schema));\n    };\n    const reduceInlineTextElements = (editor, merge) => {\n      const textInlineElements = editor.schema.getTextInlineElements();\n      const dom = editor.dom;\n      if (merge) {\n        const root = editor.getBody();\n        const elementUtils = ElementUtils(editor);\n        Tools.each(dom.select('*[data-mce-fragment]'), node => {\n          const isInline = isNonNullable(textInlineElements[node.nodeName.toLowerCase()]);\n          if (isInline && hasInheritableStyles(dom, node)) {\n            for (let parentNode = node.parentElement; isNonNullable(parentNode) && parentNode !== root; parentNode = parentNode.parentElement) {\n              const styleConflict = hasStyleConflict(dom, node, parentNode);\n              if (styleConflict) {\n                break;\n              }\n              if (elementUtils.compare(parentNode, node)) {\n                dom.remove(node, true);\n                break;\n              }\n            }\n          }\n        });\n      }\n    };\n    const markFragmentElements = fragment => {\n      let node = fragment;\n      while (node = node.walk()) {\n        if (node.type === 1) {\n          node.attr('data-mce-fragment', '1');\n        }\n      }\n    };\n    const unmarkFragmentElements = elm => {\n      Tools.each(elm.getElementsByTagName('*'), elm => {\n        elm.removeAttribute('data-mce-fragment');\n      });\n    };\n    const isPartOfFragment = node => {\n      return !!node.getAttribute('data-mce-fragment');\n    };\n    const canHaveChildren = (editor, node) => {\n      return isNonNullable(node) && !editor.schema.getVoidElements()[node.nodeName];\n    };\n    const moveSelectionToMarker = (editor, marker) => {\n      var _a, _b, _c;\n      let nextRng;\n      const dom = editor.dom;\n      const selection = editor.selection;\n      if (!marker) {\n        return;\n      }\n      selection.scrollIntoView(marker);\n      const parentEditableElm = getContentEditableRoot$1(editor.getBody(), marker);\n      if (parentEditableElm && dom.getContentEditable(parentEditableElm) === 'false') {\n        dom.remove(marker);\n        selection.select(parentEditableElm);\n        return;\n      }\n      let rng = dom.createRng();\n      const node = marker.previousSibling;\n      if (isText$a(node)) {\n        rng.setStart(node, (_b = (_a = node.nodeValue) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);\n        const node2 = marker.nextSibling;\n        if (isText$a(node2)) {\n          node.appendData(node2.data);\n          (_c = node2.parentNode) === null || _c === void 0 ? void 0 : _c.removeChild(node2);\n        }\n      } else {\n        rng.setStartBefore(marker);\n        rng.setEndBefore(marker);\n      }\n      const findNextCaretRng = rng => {\n        let caretPos = CaretPosition.fromRangeStart(rng);\n        const caretWalker = CaretWalker(editor.getBody());\n        caretPos = caretWalker.next(caretPos);\n        return caretPos === null || caretPos === void 0 ? void 0 : caretPos.toRange();\n      };\n      const parentBlock = dom.getParent(marker, dom.isBlock);\n      dom.remove(marker);\n      if (parentBlock && dom.isEmpty(parentBlock)) {\n        const isCell = isTableCell(parentBlock);\n        empty(SugarElement.fromDom(parentBlock));\n        rng.setStart(parentBlock, 0);\n        rng.setEnd(parentBlock, 0);\n        if (!isCell && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) {\n          rng = nextRng;\n          dom.remove(parentBlock);\n        } else {\n          dom.add(parentBlock, dom.create('br', isCell ? {} : {\n            'data-mce-bogus': '1'\n          }));\n        }\n      }\n      selection.setRng(rng);\n    };\n    const deleteSelectedContent = editor => {\n      const dom = editor.dom;\n      const rng = normalize(editor.selection.getRng());\n      editor.selection.setRng(rng);\n      const startCell = dom.getParent(rng.startContainer, isTableCell);\n      if (isTableCellContentSelected(dom, rng, startCell)) {\n        deleteCellContents(editor, rng, SugarElement.fromDom(startCell));\n      } else if (rng.startContainer === rng.endContainer && rng.endOffset - rng.startOffset === 1 && isText$a(rng.startContainer.childNodes[rng.startOffset])) {\n        rng.deleteContents();\n      } else {\n        editor.getDoc().execCommand('Delete', false);\n      }\n    };\n    const findMarkerNode = scope => {\n      for (let markerNode = scope; markerNode; markerNode = markerNode.walk()) {\n        if (markerNode.attr('id') === 'mce_marker') {\n          return Optional.some(markerNode);\n        }\n      }\n      return Optional.none();\n    };\n    const notHeadingsInSummary = (dom, node, fragment) => {\n      var _a;\n      return exists(fragment.children(), isHeading) && ((_a = dom.getParent(node, dom.isBlock)) === null || _a === void 0 ? void 0 : _a.nodeName) === 'SUMMARY';\n    };\n    const insertHtmlAtCaret = (editor, value, details) => {\n      var _a, _b;\n      const selection = editor.selection;\n      const dom = editor.dom;\n      const parser = editor.parser;\n      const merge = details.merge;\n      const serializer = HtmlSerializer({\n        validate: true\n      }, editor.schema);\n      const bookmarkHtml = '<span id=\"mce_marker\" data-mce-type=\"bookmark\">&#xFEFF;</span>';\n      if (!details.preserve_zwsp) {\n        value = trim$2(value);\n      }\n      if (value.indexOf('{$caret}') === -1) {\n        value += '{$caret}';\n      }\n      value = value.replace(/\\{\\$caret\\}/, bookmarkHtml);\n      let rng = selection.getRng();\n      const caretElement = rng.startContainer;\n      const body = editor.getBody();\n      if (caretElement === body && selection.isCollapsed()) {\n        if (dom.isBlock(body.firstChild) && canHaveChildren(editor, body.firstChild) && dom.isEmpty(body.firstChild)) {\n          rng = dom.createRng();\n          rng.setStart(body.firstChild, 0);\n          rng.setEnd(body.firstChild, 0);\n          selection.setRng(rng);\n        }\n      }\n      if (!selection.isCollapsed()) {\n        deleteSelectedContent(editor);\n      }\n      const parentNode = selection.getNode();\n      const parserArgs = {\n        context: parentNode.nodeName.toLowerCase(),\n        data: details.data,\n        insert: true\n      };\n      const fragment = parser.parse(value, parserArgs);\n      if (details.paste === true && isListFragment(editor.schema, fragment) && isParentBlockLi(dom, parentNode)) {\n        rng = insertAtCaret$1(serializer, dom, selection.getRng(), fragment);\n        if (rng) {\n          selection.setRng(rng);\n        }\n        return value;\n      }\n      if (details.paste === true && shouldPasteContentOnly(dom, fragment, parentNode, editor.getBody())) {\n        (_a = fragment.firstChild) === null || _a === void 0 ? void 0 : _a.unwrap();\n      }\n      markFragmentElements(fragment);\n      let node = fragment.lastChild;\n      if (node && node.attr('id') === 'mce_marker') {\n        const marker = node;\n        for (node = node.prev; node; node = node.walk(true)) {\n          if (node.type === 3 || !dom.isBlock(node.name)) {\n            if (node.parent && editor.schema.isValidChild(node.parent.name, 'span')) {\n              node.parent.insert(marker, node, node.name === 'br');\n            }\n            break;\n          }\n        }\n      }\n      editor._selectionOverrides.showBlockCaretContainer(parentNode);\n      if (!parserArgs.invalid && !notHeadingsInSummary(dom, parentNode, fragment)) {\n        value = serializer.serialize(fragment);\n        validInsertion(editor, value, parentNode);\n      } else {\n        editor.selection.setContent(bookmarkHtml);\n        let parentNode = selection.getNode();\n        let tempNode;\n        const rootNode = editor.getBody();\n        if (isDocument$1(parentNode)) {\n          parentNode = tempNode = rootNode;\n        } else {\n          tempNode = parentNode;\n        }\n        while (tempNode && tempNode !== rootNode) {\n          parentNode = tempNode;\n          tempNode = tempNode.parentNode;\n        }\n        value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);\n        const root = parser.parse(value);\n        const markerNode = findMarkerNode(root);\n        const editingHost = markerNode.bind(findClosestEditingHost).getOr(root);\n        markerNode.each(marker => marker.replace(fragment));\n        const toExtract = fragment.children();\n        const parent = (_b = fragment.parent) !== null && _b !== void 0 ? _b : root;\n        fragment.unwrap();\n        const invalidChildren = filter$5(toExtract, node => isInvalid(editor.schema, node, parent));\n        cleanInvalidNodes(invalidChildren, editor.schema, editingHost);\n        filter$2(parser.getNodeFilters(), parser.getAttributeFilters(), root);\n        value = serializer.serialize(root);\n        if (parentNode === rootNode) {\n          dom.setHTML(rootNode, value);\n        } else {\n          dom.setOuterHTML(parentNode, value);\n        }\n      }\n      reduceInlineTextElements(editor, merge);\n      moveSelectionToMarker(editor, dom.get('mce_marker'));\n      unmarkFragmentElements(editor.getBody());\n      trimBrsFromTableCell(dom, selection.getStart(), editor.schema);\n      updateCaret(editor.schema, editor.getBody(), selection.getStart());\n      return value;\n    };\n\n    const isTreeNode = content => content instanceof AstNode;\n\n    const moveSelection = editor => {\n      if (hasFocus(editor)) {\n        firstPositionIn(editor.getBody()).each(pos => {\n          const node = pos.getNode();\n          const caretPos = isTable$2(node) ? firstPositionIn(node).getOr(pos) : pos;\n          editor.selection.setRng(caretPos.toRange());\n        });\n      }\n    };\n    const setEditorHtml = (editor, html, noSelection) => {\n      editor.dom.setHTML(editor.getBody(), html);\n      if (noSelection !== true) {\n        moveSelection(editor);\n      }\n    };\n    const setContentString = (editor, body, content, args) => {\n      content = trim$2(content);\n      if (content.length === 0 || /^\\s+$/.test(content)) {\n        const padd = '<br data-mce-bogus=\"1\">';\n        if (body.nodeName === 'TABLE') {\n          content = '<tr><td>' + padd + '</td></tr>';\n        } else if (/^(UL|OL)$/.test(body.nodeName)) {\n          content = '<li>' + padd + '</li>';\n        }\n        const forcedRootBlockName = getForcedRootBlock(editor);\n        if (editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {\n          content = padd;\n          content = editor.dom.createHTML(forcedRootBlockName, getForcedRootBlockAttrs(editor), content);\n        } else if (!content) {\n          content = padd;\n        }\n        setEditorHtml(editor, content, args.no_selection);\n        return {\n          content,\n          html: content\n        };\n      } else {\n        if (args.format !== 'raw') {\n          content = HtmlSerializer({\n            validate: false\n          }, editor.schema).serialize(editor.parser.parse(content, {\n            isRootContent: true,\n            insert: true\n          }));\n        }\n        const trimmedHtml = isWsPreserveElement(SugarElement.fromDom(body)) ? content : Tools.trim(content);\n        setEditorHtml(editor, trimmedHtml, args.no_selection);\n        return {\n          content: trimmedHtml,\n          html: trimmedHtml\n        };\n      }\n    };\n    const setContentTree = (editor, body, content, args) => {\n      filter$2(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content);\n      const html = HtmlSerializer({\n        validate: false\n      }, editor.schema).serialize(content);\n      const trimmedHtml = trim$2(isWsPreserveElement(SugarElement.fromDom(body)) ? html : Tools.trim(html));\n      setEditorHtml(editor, trimmedHtml, args.no_selection);\n      return {\n        content,\n        html: trimmedHtml\n      };\n    };\n    const setContentInternal = (editor, content, args) => {\n      return Optional.from(editor.getBody()).map(body => {\n        if (isTreeNode(content)) {\n          return setContentTree(editor, body, content, args);\n        } else {\n          return setContentString(editor, body, content, args);\n        }\n      }).getOr({\n        content,\n        html: isTreeNode(args.content) ? '' : args.content\n      });\n    };\n\n    const ensureIsRoot = isRoot => isFunction(isRoot) ? isRoot : never;\n    const ancestor = (scope, transform, isRoot) => {\n      let element = scope.dom;\n      const stop = ensureIsRoot(isRoot);\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        const transformed = transform(el);\n        if (transformed.isSome()) {\n          return transformed;\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const closest$1 = (scope, transform, isRoot) => {\n      const current = transform(scope);\n      const stop = ensureIsRoot(isRoot);\n      return current.orThunk(() => stop(scope) ? Optional.none() : ancestor(scope, transform, stop));\n    };\n\n    const isEq$3 = isEq$5;\n    const matchesUnInheritedFormatSelector = (ed, node, name) => {\n      const formatList = ed.formatter.get(name);\n      if (formatList) {\n        for (let i = 0; i < formatList.length; i++) {\n          const format = formatList[i];\n          if (isSelectorFormat(format) && format.inherit === false && ed.dom.is(node, format.selector)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    };\n    const matchParents = (editor, node, name, vars, similar) => {\n      const root = editor.dom.getRoot();\n      if (node === root) {\n        return false;\n      }\n      const matchedNode = editor.dom.getParent(node, elm => {\n        if (matchesUnInheritedFormatSelector(editor, elm, name)) {\n          return true;\n        }\n        return elm.parentNode === root || !!matchNode(editor, elm, name, vars, true);\n      });\n      return !!matchNode(editor, matchedNode, name, vars, similar);\n    };\n    const matchName = (dom, node, format) => {\n      if (isInlineFormat(format) && isEq$3(node, format.inline)) {\n        return true;\n      }\n      if (isBlockFormat(format) && isEq$3(node, format.block)) {\n        return true;\n      }\n      if (isSelectorFormat(format)) {\n        return isElement$6(node) && dom.is(node, format.selector);\n      }\n      return false;\n    };\n    const matchItems = (dom, node, format, itemName, similar, vars) => {\n      const items = format[itemName];\n      const matchAttributes = itemName === 'attributes';\n      if (isFunction(format.onmatch)) {\n        return format.onmatch(node, format, itemName);\n      }\n      if (items) {\n        if (!isArrayLike(items)) {\n          for (const key in items) {\n            if (has$2(items, key)) {\n              const value = matchAttributes ? dom.getAttrib(node, key) : getStyle(dom, node, key);\n              const expectedValue = replaceVars(items[key], vars);\n              const isEmptyValue = isNullable(value) || isEmpty$3(value);\n              if (isEmptyValue && isNullable(expectedValue)) {\n                continue;\n              }\n              if (similar && isEmptyValue && !format.exact) {\n                return false;\n              }\n              if ((!similar || format.exact) && !isEq$3(value, normalizeStyleValue(expectedValue, key))) {\n                return false;\n              }\n            }\n          }\n        } else {\n          for (let i = 0; i < items.length; i++) {\n            if (matchAttributes ? dom.getAttrib(node, items[i]) : getStyle(dom, node, items[i])) {\n              return true;\n            }\n          }\n        }\n      }\n      return true;\n    };\n    const matchNode = (ed, node, name, vars, similar) => {\n      const formatList = ed.formatter.get(name);\n      const dom = ed.dom;\n      if (formatList && isElement$6(node)) {\n        for (let i = 0; i < formatList.length; i++) {\n          const format = formatList[i];\n          if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {\n            const classes = format.classes;\n            if (classes) {\n              for (let x = 0; x < classes.length; x++) {\n                if (!ed.dom.hasClass(node, replaceVars(classes[x], vars))) {\n                  return;\n                }\n              }\n            }\n            return format;\n          }\n        }\n      }\n      return undefined;\n    };\n    const match$2 = (editor, name, vars, node, similar) => {\n      if (node) {\n        return matchParents(editor, node, name, vars, similar);\n      }\n      node = editor.selection.getNode();\n      if (matchParents(editor, node, name, vars, similar)) {\n        return true;\n      }\n      const startNode = editor.selection.getStart();\n      if (startNode !== node) {\n        if (matchParents(editor, startNode, name, vars, similar)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const matchAll = (editor, names, vars) => {\n      const matchedFormatNames = [];\n      const checkedMap = {};\n      const startElement = editor.selection.getStart();\n      editor.dom.getParent(startElement, node => {\n        for (let i = 0; i < names.length; i++) {\n          const name = names[i];\n          if (!checkedMap[name] && matchNode(editor, node, name, vars)) {\n            checkedMap[name] = true;\n            matchedFormatNames.push(name);\n          }\n        }\n      }, editor.dom.getRoot());\n      return matchedFormatNames;\n    };\n    const closest = (editor, names) => {\n      const isRoot = elm => eq(elm, SugarElement.fromDom(editor.getBody()));\n      const match = (elm, name) => matchNode(editor, elm.dom, name) ? Optional.some(name) : Optional.none();\n      return Optional.from(editor.selection.getStart(true)).bind(rawElm => closest$1(SugarElement.fromDom(rawElm), elm => findMap(names, name => match(elm, name)), isRoot)).getOrNull();\n    };\n    const canApply = (editor, name) => {\n      const formatList = editor.formatter.get(name);\n      const dom = editor.dom;\n      if (formatList && editor.selection.isEditable()) {\n        const startNode = editor.selection.getStart();\n        const parents = getParents$2(dom, startNode);\n        for (let x = formatList.length - 1; x >= 0; x--) {\n          const format = formatList[x];\n          if (!isSelectorFormat(format)) {\n            return true;\n          }\n          for (let i = parents.length - 1; i >= 0; i--) {\n            if (dom.is(parents[i], format.selector)) {\n              return true;\n            }\n          }\n        }\n      }\n      return false;\n    };\n    const matchAllOnNode = (editor, node, formatNames) => foldl(formatNames, (acc, name) => {\n      const matchSimilar = isVariableFormatName(editor, name);\n      if (editor.formatter.matchNode(node, name, {}, matchSimilar)) {\n        return acc.concat([name]);\n      } else {\n        return acc;\n      }\n    }, []);\n\n    const ZWSP = ZWSP$1;\n    const importNode = (ownerDocument, node) => {\n      return ownerDocument.importNode(node, true);\n    };\n    const findFirstTextNode = node => {\n      if (node) {\n        const walker = new DomTreeWalker(node, node);\n        for (let tempNode = walker.current(); tempNode; tempNode = walker.next()) {\n          if (isText$a(tempNode)) {\n            return tempNode;\n          }\n        }\n      }\n      return null;\n    };\n    const createCaretContainer = fill => {\n      const caretContainer = SugarElement.fromTag('span');\n      setAll$1(caretContainer, {\n        'id': CARET_ID,\n        'data-mce-bogus': '1',\n        'data-mce-type': 'format-caret'\n      });\n      if (fill) {\n        append$1(caretContainer, SugarElement.fromText(ZWSP));\n      }\n      return caretContainer;\n    };\n    const trimZwspFromCaretContainer = caretContainerNode => {\n      const textNode = findFirstTextNode(caretContainerNode);\n      if (textNode && textNode.data.charAt(0) === ZWSP) {\n        textNode.deleteData(0, 1);\n      }\n      return textNode;\n    };\n    const removeCaretContainerNode = (editor, node, moveCaret) => {\n      const dom = editor.dom,\n        selection = editor.selection;\n      if (isCaretContainerEmpty(node)) {\n        deleteElement$2(editor, false, SugarElement.fromDom(node), moveCaret, true);\n      } else {\n        const rng = selection.getRng();\n        const block = dom.getParent(node, dom.isBlock);\n        const startContainer = rng.startContainer;\n        const startOffset = rng.startOffset;\n        const endContainer = rng.endContainer;\n        const endOffset = rng.endOffset;\n        const textNode = trimZwspFromCaretContainer(node);\n        dom.remove(node, true);\n        if (startContainer === textNode && startOffset > 0) {\n          rng.setStart(textNode, startOffset - 1);\n        }\n        if (endContainer === textNode && endOffset > 0) {\n          rng.setEnd(textNode, endOffset - 1);\n        }\n        if (block && dom.isEmpty(block)) {\n          fillWithPaddingBr(SugarElement.fromDom(block));\n        }\n        selection.setRng(rng);\n      }\n    };\n    const removeCaretContainer = (editor, node, moveCaret) => {\n      const dom = editor.dom,\n        selection = editor.selection;\n      if (!node) {\n        node = getParentCaretContainer(editor.getBody(), selection.getStart());\n        if (!node) {\n          while (node = dom.get(CARET_ID)) {\n            removeCaretContainerNode(editor, node, moveCaret);\n          }\n        }\n      } else {\n        removeCaretContainerNode(editor, node, moveCaret);\n      }\n    };\n    const insertCaretContainerNode = (editor, caretContainer, formatNode) => {\n      var _a, _b;\n      const dom = editor.dom;\n      const block = dom.getParent(formatNode, curry(isTextBlock$1, editor.schema));\n      if (block && dom.isEmpty(block)) {\n        (_a = formatNode.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(caretContainer, formatNode);\n      } else {\n        removeTrailingBr(SugarElement.fromDom(formatNode));\n        if (dom.isEmpty(formatNode)) {\n          (_b = formatNode.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(caretContainer, formatNode);\n        } else {\n          dom.insertAfter(caretContainer, formatNode);\n        }\n      }\n    };\n    const appendNode = (parentNode, node) => {\n      parentNode.appendChild(node);\n      return node;\n    };\n    const insertFormatNodesIntoCaretContainer = (formatNodes, caretContainer) => {\n      var _a;\n      const innerMostFormatNode = foldr(formatNodes, (parentNode, formatNode) => {\n        return appendNode(parentNode, formatNode.cloneNode(false));\n      }, caretContainer);\n      const doc = (_a = innerMostFormatNode.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      return appendNode(innerMostFormatNode, doc.createTextNode(ZWSP));\n    };\n    const cleanFormatNode = (editor, caretContainer, formatNode, name, vars, similar) => {\n      const formatter = editor.formatter;\n      const dom = editor.dom;\n      const validFormats = filter$5(keys(formatter.get()), formatName => formatName !== name && !contains$1(formatName, 'removeformat'));\n      const matchedFormats = matchAllOnNode(editor, formatNode, validFormats);\n      const uniqueFormats = filter$5(matchedFormats, fmtName => !areSimilarFormats(editor, fmtName, name));\n      if (uniqueFormats.length > 0) {\n        const clonedFormatNode = formatNode.cloneNode(false);\n        dom.add(caretContainer, clonedFormatNode);\n        formatter.remove(name, vars, clonedFormatNode, similar);\n        dom.remove(clonedFormatNode);\n        return Optional.some(clonedFormatNode);\n      } else {\n        return Optional.none();\n      }\n    };\n    const applyCaretFormat = (editor, name, vars) => {\n      let caretContainer;\n      const selection = editor.selection;\n      const formatList = editor.formatter.get(name);\n      if (!formatList) {\n        return;\n      }\n      const selectionRng = selection.getRng();\n      let offset = selectionRng.startOffset;\n      const container = selectionRng.startContainer;\n      const text = container.nodeValue;\n      caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());\n      const wordcharRegex = /[^\\s\\u00a0\\u00ad\\u200b\\ufeff]/;\n      if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {\n        const bookmark = selection.getBookmark();\n        selectionRng.collapse(true);\n        let rng = expandRng(editor.dom, selectionRng, formatList);\n        rng = split(rng);\n        editor.formatter.apply(name, vars, rng);\n        selection.moveToBookmark(bookmark);\n      } else {\n        let textNode = caretContainer ? findFirstTextNode(caretContainer) : null;\n        if (!caretContainer || (textNode === null || textNode === void 0 ? void 0 : textNode.data) !== ZWSP) {\n          caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom);\n          textNode = caretContainer.firstChild;\n          selectionRng.insertNode(caretContainer);\n          offset = 1;\n          editor.formatter.apply(name, vars, caretContainer);\n        } else {\n          editor.formatter.apply(name, vars, caretContainer);\n        }\n        selection.setCursorLocation(textNode, offset);\n      }\n    };\n    const removeCaretFormat = (editor, name, vars, similar) => {\n      const dom = editor.dom;\n      const selection = editor.selection;\n      let hasContentAfter = false;\n      const formatList = editor.formatter.get(name);\n      if (!formatList) {\n        return;\n      }\n      const rng = selection.getRng();\n      const container = rng.startContainer;\n      const offset = rng.startOffset;\n      let node = container;\n      if (isText$a(container)) {\n        if (offset !== container.data.length) {\n          hasContentAfter = true;\n        }\n        node = node.parentNode;\n      }\n      const parents = [];\n      let formatNode;\n      while (node) {\n        if (matchNode(editor, node, name, vars, similar)) {\n          formatNode = node;\n          break;\n        }\n        if (node.nextSibling) {\n          hasContentAfter = true;\n        }\n        parents.push(node);\n        node = node.parentNode;\n      }\n      if (!formatNode) {\n        return;\n      }\n      if (hasContentAfter) {\n        const bookmark = selection.getBookmark();\n        rng.collapse(true);\n        let expandedRng = expandRng(dom, rng, formatList, true);\n        expandedRng = split(expandedRng);\n        editor.formatter.remove(name, vars, expandedRng, similar);\n        selection.moveToBookmark(bookmark);\n      } else {\n        const caretContainer = getParentCaretContainer(editor.getBody(), formatNode);\n        const parentsAfter = isNonNullable(caretContainer) ? dom.getParents(formatNode.parentNode, always, caretContainer) : [];\n        const newCaretContainer = createCaretContainer(false).dom;\n        insertCaretContainerNode(editor, newCaretContainer, caretContainer !== null && caretContainer !== void 0 ? caretContainer : formatNode);\n        const cleanedFormatNode = cleanFormatNode(editor, newCaretContainer, formatNode, name, vars, similar);\n        const caretTextNode = insertFormatNodesIntoCaretContainer([...parents, ...cleanedFormatNode.toArray(), ...parentsAfter], newCaretContainer);\n        if (caretContainer) {\n          removeCaretContainerNode(editor, caretContainer, isNonNullable(caretContainer));\n        }\n        selection.setCursorLocation(caretTextNode, 1);\n        if (dom.isEmpty(formatNode)) {\n          dom.remove(formatNode);\n        }\n      }\n    };\n    const disableCaretContainer = (editor, keyCode, moveCaret) => {\n      const selection = editor.selection,\n        body = editor.getBody();\n      removeCaretContainer(editor, null, moveCaret);\n      if ((keyCode === 8 || keyCode === 46) && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP) {\n        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()), true);\n      }\n      if (keyCode === 37 || keyCode === 39) {\n        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()), true);\n      }\n    };\n    const endsWithNbsp = element => isText$a(element) && endsWith(element.data, nbsp);\n    const setup$v = editor => {\n      editor.on('mouseup keydown', e => {\n        disableCaretContainer(editor, e.keyCode, endsWithNbsp(editor.selection.getRng().endContainer));\n      });\n    };\n    const createCaretFormat = formatNodes => {\n      const caretContainer = createCaretContainer(false);\n      const innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom);\n      return {\n        caretContainer,\n        caretPosition: CaretPosition(innerMost, 0)\n      };\n    };\n    const replaceWithCaretFormat = (targetNode, formatNodes) => {\n      const {\n        caretContainer,\n        caretPosition\n      } = createCaretFormat(formatNodes);\n      before$3(SugarElement.fromDom(targetNode), caretContainer);\n      remove$5(SugarElement.fromDom(targetNode));\n      return caretPosition;\n    };\n    const createCaretFormatAtStart$1 = (rng, formatNodes) => {\n      const {\n        caretContainer,\n        caretPosition\n      } = createCaretFormat(formatNodes);\n      rng.insertNode(caretContainer.dom);\n      return caretPosition;\n    };\n    const isFormatElement = (editor, element) => {\n      if (isCaretNode(element.dom)) {\n        return false;\n      }\n      const inlineElements = editor.schema.getTextInlineElements();\n      return has$2(inlineElements, name(element)) && !isCaretNode(element.dom) && !isBogus$2(element.dom);\n    };\n\n    const postProcessHooks = {};\n    const isPre = matchNodeNames(['pre']);\n    const addPostProcessHook = (name, hook) => {\n      const hooks = postProcessHooks[name];\n      if (!hooks) {\n        postProcessHooks[name] = [];\n      }\n      postProcessHooks[name].push(hook);\n    };\n    const postProcess$1 = (name, editor) => {\n      if (has$2(postProcessHooks, name)) {\n        each$e(postProcessHooks[name], hook => {\n          hook(editor);\n        });\n      }\n    };\n    addPostProcessHook('pre', editor => {\n      const rng = editor.selection.getRng();\n      const hasPreSibling = blocks => pre => {\n        const prev = pre.previousSibling;\n        return isPre(prev) && contains$2(blocks, prev);\n      };\n      const joinPre = (pre1, pre2) => {\n        const sPre2 = SugarElement.fromDom(pre2);\n        const doc = documentOrOwner(sPre2).dom;\n        remove$5(sPre2);\n        append(SugarElement.fromDom(pre1), [SugarElement.fromTag('br', doc), SugarElement.fromTag('br', doc), ...children$1(sPre2)]);\n      };\n      if (!rng.collapsed) {\n        const blocks = editor.selection.getSelectedBlocks();\n        const preBlocks = filter$5(filter$5(blocks, isPre), hasPreSibling(blocks));\n        each$e(preBlocks, pre => {\n          joinPre(pre.previousSibling, pre);\n        });\n      }\n    });\n\n    const listItemStyles = ['fontWeight', 'fontStyle', 'color', 'fontSize', 'fontFamily'];\n    const hasListStyles = fmt => isObject(fmt.styles) && exists(keys(fmt.styles), name => contains$2(listItemStyles, name));\n    const findExpandedListItemFormat = formats => find$2(formats, fmt => isInlineFormat(fmt) && fmt.inline === 'span' && hasListStyles(fmt));\n    const getExpandedListItemFormat = (formatter, format) => {\n      const formatList = formatter.get(format);\n      return isArray$1(formatList) ? findExpandedListItemFormat(formatList) : Optional.none();\n    };\n    const isRngStartAtStartOfElement = (rng, elm) => prevPosition(elm, CaretPosition.fromRangeStart(rng)).isNone();\n    const isRngEndAtEndOfElement = (rng, elm) => {\n      return nextPosition(elm, CaretPosition.fromRangeEnd(rng)).exists(pos => !isBr$6(pos.getNode()) || nextPosition(elm, pos).isSome()) === false;\n    };\n    const isEditableListItem = dom => elm => isListItem$2(elm) && dom.isEditable(elm);\n    const getFullySelectedBlocks = selection => {\n      const blocks = selection.getSelectedBlocks();\n      const rng = selection.getRng();\n      if (selection.isCollapsed()) {\n        return [];\n      }\n      if (blocks.length === 1) {\n        return isRngStartAtStartOfElement(rng, blocks[0]) && isRngEndAtEndOfElement(rng, blocks[0]) ? blocks : [];\n      } else {\n        const first = head(blocks).filter(elm => isRngStartAtStartOfElement(rng, elm)).toArray();\n        const last = last$3(blocks).filter(elm => isRngEndAtEndOfElement(rng, elm)).toArray();\n        const middle = blocks.slice(1, -1);\n        return first.concat(middle).concat(last);\n      }\n    };\n    const getFullySelectedListItems = selection => filter$5(getFullySelectedBlocks(selection), isEditableListItem(selection.dom));\n    const getPartiallySelectedListItems = selection => filter$5(selection.getSelectedBlocks(), isEditableListItem(selection.dom));\n\n    const each$8 = Tools.each;\n    const isElementNode = node => isElement$6(node) && !isBookmarkNode$1(node) && !isCaretNode(node) && !isBogus$2(node);\n    const findElementSibling = (node, siblingName) => {\n      for (let sibling = node; sibling; sibling = sibling[siblingName]) {\n        if (isText$a(sibling) && isNotEmpty(sibling.data)) {\n          return node;\n        }\n        if (isElement$6(sibling) && !isBookmarkNode$1(sibling)) {\n          return sibling;\n        }\n      }\n      return node;\n    };\n    const mergeSiblingsNodes = (editor, prev, next) => {\n      const elementUtils = ElementUtils(editor);\n      const isPrevEditable = isHTMLElement(prev) && editor.dom.isEditable(prev);\n      const isNextEditable = isHTMLElement(next) && editor.dom.isEditable(next);\n      if (isPrevEditable && isNextEditable) {\n        const prevSibling = findElementSibling(prev, 'previousSibling');\n        const nextSibling = findElementSibling(next, 'nextSibling');\n        if (elementUtils.compare(prevSibling, nextSibling)) {\n          for (let sibling = prevSibling.nextSibling; sibling && sibling !== nextSibling;) {\n            const tmpSibling = sibling;\n            sibling = sibling.nextSibling;\n            prevSibling.appendChild(tmpSibling);\n          }\n          editor.dom.remove(nextSibling);\n          Tools.each(Tools.grep(nextSibling.childNodes), node => {\n            prevSibling.appendChild(node);\n          });\n          return prevSibling;\n        }\n      }\n      return next;\n    };\n    const mergeSiblings = (editor, format, vars, node) => {\n      var _a;\n      if (node && format.merge_siblings !== false) {\n        const newNode = (_a = mergeSiblingsNodes(editor, getNonWhiteSpaceSibling(node), node)) !== null && _a !== void 0 ? _a : node;\n        mergeSiblingsNodes(editor, newNode, getNonWhiteSpaceSibling(newNode, true));\n      }\n    };\n    const clearChildStyles = (dom, format, node) => {\n      if (format.clear_child_styles) {\n        const selector = format.links ? '*:not(a)' : '*';\n        each$8(dom.select(selector, node), childNode => {\n          if (isElementNode(childNode) && dom.isEditable(childNode)) {\n            each$8(format.styles, (_value, name) => {\n              dom.setStyle(childNode, name, '');\n            });\n          }\n        });\n      }\n    };\n    const processChildElements = (node, filter, process) => {\n      each$8(node.childNodes, node => {\n        if (isElementNode(node)) {\n          if (filter(node)) {\n            process(node);\n          }\n          if (node.hasChildNodes()) {\n            processChildElements(node, filter, process);\n          }\n        }\n      });\n    };\n    const unwrapEmptySpan = (dom, node) => {\n      if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) {\n        dom.remove(node, true);\n      }\n    };\n    const hasStyle = (dom, name) => node => !!(node && getStyle(dom, node, name));\n    const applyStyle = (dom, name, value) => node => {\n      dom.setStyle(node, name, value);\n      if (node.getAttribute('style') === '') {\n        node.removeAttribute('style');\n      }\n      unwrapEmptySpan(dom, node);\n    };\n\n    const removeResult = Adt.generate([{\n      keep: []\n    }, {\n      rename: ['name']\n    }, {\n      removed: []\n    }]);\n    const MCE_ATTR_RE = /^(src|href|style)$/;\n    const each$7 = Tools.each;\n    const isEq$2 = isEq$5;\n    const isTableCellOrRow = node => /^(TR|TH|TD)$/.test(node.nodeName);\n    const isChildOfInlineParent = (dom, node, parent) => dom.isChildOf(node, parent) && node !== parent && !dom.isBlock(parent);\n    const getContainer = (ed, rng, start) => {\n      let container = rng[start ? 'startContainer' : 'endContainer'];\n      let offset = rng[start ? 'startOffset' : 'endOffset'];\n      if (isElement$6(container)) {\n        const lastIdx = container.childNodes.length - 1;\n        if (!start && offset) {\n          offset--;\n        }\n        container = container.childNodes[offset > lastIdx ? lastIdx : offset];\n      }\n      if (isText$a(container) && start && offset >= container.data.length) {\n        container = new DomTreeWalker(container, ed.getBody()).next() || container;\n      }\n      if (isText$a(container) && !start && offset === 0) {\n        container = new DomTreeWalker(container, ed.getBody()).prev() || container;\n      }\n      return container;\n    };\n    const normalizeTableSelection = (node, start) => {\n      const prop = start ? 'firstChild' : 'lastChild';\n      const childNode = node[prop];\n      if (isTableCellOrRow(node) && childNode) {\n        if (node.nodeName === 'TR') {\n          return childNode[prop] || childNode;\n        } else {\n          return childNode;\n        }\n      }\n      return node;\n    };\n    const wrap$1 = (dom, node, name, attrs) => {\n      var _a;\n      const wrapper = dom.create(name, attrs);\n      (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(wrapper, node);\n      wrapper.appendChild(node);\n      return wrapper;\n    };\n    const wrapWithSiblings = (dom, node, next, name, attrs) => {\n      const start = SugarElement.fromDom(node);\n      const wrapper = SugarElement.fromDom(dom.create(name, attrs));\n      const siblings = next ? nextSiblings(start) : prevSiblings(start);\n      append(wrapper, siblings);\n      if (next) {\n        before$3(start, wrapper);\n        prepend(wrapper, start);\n      } else {\n        after$4(start, wrapper);\n        append$1(wrapper, start);\n      }\n      return wrapper.dom;\n    };\n    const isColorFormatAndAnchor = (node, format) => format.links && node.nodeName === 'A';\n    const removeNode = (ed, node, format) => {\n      const parentNode = node.parentNode;\n      let rootBlockElm;\n      const dom = ed.dom;\n      const forcedRootBlock = getForcedRootBlock(ed);\n      if (isBlockFormat(format)) {\n        if (parentNode === dom.getRoot()) {\n          if (!format.list_block || !isEq$2(node, format.list_block)) {\n            each$e(from(node.childNodes), node => {\n              if (isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) {\n                if (!rootBlockElm) {\n                  rootBlockElm = wrap$1(dom, node, forcedRootBlock);\n                  dom.setAttribs(rootBlockElm, getForcedRootBlockAttrs(ed));\n                } else {\n                  rootBlockElm.appendChild(node);\n                }\n              } else {\n                rootBlockElm = null;\n              }\n            });\n          }\n        }\n      }\n      if (isMixedFormat(format) && !isEq$2(format.inline, node)) {\n        return;\n      }\n      dom.remove(node, true);\n    };\n    const processFormatAttrOrStyle = (name, value, vars) => {\n      if (isNumber(name)) {\n        return {\n          name: value,\n          value: null\n        };\n      } else {\n        return {\n          name,\n          value: replaceVars(value, vars)\n        };\n      }\n    };\n    const removeEmptyStyleAttributeIfNeeded = (dom, elm) => {\n      if (dom.getAttrib(elm, 'style') === '') {\n        elm.removeAttribute('style');\n        elm.removeAttribute('data-mce-style');\n      }\n    };\n    const removeStyles = (dom, elm, format, vars, compareNode) => {\n      let stylesModified = false;\n      each$7(format.styles, (value, name) => {\n        const {\n          name: styleName,\n          value: styleValue\n        } = processFormatAttrOrStyle(name, value, vars);\n        const normalizedStyleValue = normalizeStyleValue(styleValue, styleName);\n        if (format.remove_similar || isNull(styleValue) || !isElement$6(compareNode) || isEq$2(getStyle(dom, compareNode, styleName), normalizedStyleValue)) {\n          dom.setStyle(elm, styleName, '');\n        }\n        stylesModified = true;\n      });\n      if (stylesModified) {\n        removeEmptyStyleAttributeIfNeeded(dom, elm);\n      }\n    };\n    const removeListStyleFormats = (editor, name, vars) => {\n      if (name === 'removeformat') {\n        each$e(getPartiallySelectedListItems(editor.selection), li => {\n          each$e(listItemStyles, name => editor.dom.setStyle(li, name, ''));\n          removeEmptyStyleAttributeIfNeeded(editor.dom, li);\n        });\n      } else {\n        getExpandedListItemFormat(editor.formatter, name).each(liFmt => {\n          each$e(getPartiallySelectedListItems(editor.selection), li => removeStyles(editor.dom, li, liFmt, vars, null));\n        });\n      }\n    };\n    const removeNodeFormatInternal = (ed, format, vars, node, compareNode) => {\n      const dom = ed.dom;\n      const elementUtils = ElementUtils(ed);\n      const schema = ed.schema;\n      if (isInlineFormat(format) && isTransparentElementName(schema, format.inline) && isTransparentBlock(schema, node) && node.parentElement === ed.getBody()) {\n        removeNode(ed, node, format);\n        return removeResult.removed();\n      }\n      if (!format.ceFalseOverride && node && dom.getContentEditableParent(node) === 'false') {\n        return removeResult.keep();\n      }\n      if (node && !matchName(dom, node, format) && !isColorFormatAndAnchor(node, format)) {\n        return removeResult.keep();\n      }\n      const elm = node;\n      const preserveAttributes = format.preserve_attributes;\n      if (isInlineFormat(format) && format.remove === 'all' && isArray$1(preserveAttributes)) {\n        const attrsToPreserve = filter$5(dom.getAttribs(elm), attr => contains$2(preserveAttributes, attr.name.toLowerCase()));\n        dom.removeAllAttribs(elm);\n        each$e(attrsToPreserve, attr => dom.setAttrib(elm, attr.name, attr.value));\n        if (attrsToPreserve.length > 0) {\n          return removeResult.rename('span');\n        }\n      }\n      if (format.remove !== 'all') {\n        removeStyles(dom, elm, format, vars, compareNode);\n        each$7(format.attributes, (value, name) => {\n          const {\n            name: attrName,\n            value: attrValue\n          } = processFormatAttrOrStyle(name, value, vars);\n          if (format.remove_similar || isNull(attrValue) || !isElement$6(compareNode) || isEq$2(dom.getAttrib(compareNode, attrName), attrValue)) {\n            if (attrName === 'class') {\n              const currentValue = dom.getAttrib(elm, attrName);\n              if (currentValue) {\n                let valueOut = '';\n                each$e(currentValue.split(/\\s+/), cls => {\n                  if (/mce\\-\\w+/.test(cls)) {\n                    valueOut += (valueOut ? ' ' : '') + cls;\n                  }\n                });\n                if (valueOut) {\n                  dom.setAttrib(elm, attrName, valueOut);\n                  return;\n                }\n              }\n            }\n            if (MCE_ATTR_RE.test(attrName)) {\n              elm.removeAttribute('data-mce-' + attrName);\n            }\n            if (attrName === 'style' && matchNodeNames(['li'])(elm) && dom.getStyle(elm, 'list-style-type') === 'none') {\n              elm.removeAttribute(attrName);\n              dom.setStyle(elm, 'list-style-type', 'none');\n              return;\n            }\n            if (attrName === 'class') {\n              elm.removeAttribute('className');\n            }\n            elm.removeAttribute(attrName);\n          }\n        });\n        each$7(format.classes, value => {\n          value = replaceVars(value, vars);\n          if (!isElement$6(compareNode) || dom.hasClass(compareNode, value)) {\n            dom.removeClass(elm, value);\n          }\n        });\n        const attrs = dom.getAttribs(elm);\n        for (let i = 0; i < attrs.length; i++) {\n          const attrName = attrs[i].nodeName;\n          if (!elementUtils.isAttributeInternal(attrName)) {\n            return removeResult.keep();\n          }\n        }\n      }\n      if (format.remove !== 'none') {\n        removeNode(ed, elm, format);\n        return removeResult.removed();\n      }\n      return removeResult.keep();\n    };\n    const findFormatRoot = (editor, container, name, vars, similar) => {\n      let formatRoot;\n      if (container.parentNode) {\n        each$e(getParents$2(editor.dom, container.parentNode).reverse(), parent => {\n          if (!formatRoot && isElement$6(parent) && parent.id !== '_start' && parent.id !== '_end') {\n            const format = matchNode(editor, parent, name, vars, similar);\n            if (format && format.split !== false) {\n              formatRoot = parent;\n            }\n          }\n        });\n      }\n      return formatRoot;\n    };\n    const removeNodeFormatFromClone = (editor, format, vars, clone) => removeNodeFormatInternal(editor, format, vars, clone, clone).fold(constant(clone), newName => {\n      const fragment = editor.dom.createFragment();\n      fragment.appendChild(clone);\n      return editor.dom.rename(clone, newName);\n    }, constant(null));\n    const wrapAndSplit = (editor, formatList, formatRoot, container, target, split, format, vars) => {\n      var _a, _b;\n      let lastClone;\n      let firstClone;\n      const dom = editor.dom;\n      if (formatRoot) {\n        const formatRootParent = formatRoot.parentNode;\n        for (let parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) {\n          let clone = dom.clone(parent, false);\n          for (let i = 0; i < formatList.length; i++) {\n            clone = removeNodeFormatFromClone(editor, formatList[i], vars, clone);\n            if (clone === null) {\n              break;\n            }\n          }\n          if (clone) {\n            if (lastClone) {\n              clone.appendChild(lastClone);\n            }\n            if (!firstClone) {\n              firstClone = clone;\n            }\n            lastClone = clone;\n          }\n        }\n        if (split && (!format.mixed || !dom.isBlock(formatRoot))) {\n          container = (_a = dom.split(formatRoot, container)) !== null && _a !== void 0 ? _a : container;\n        }\n        if (lastClone && firstClone) {\n          (_b = target.parentNode) === null || _b === void 0 ? void 0 : _b.insertBefore(lastClone, target);\n          firstClone.appendChild(target);\n          if (isInlineFormat(format)) {\n            mergeSiblings(editor, format, vars, lastClone);\n          }\n        }\n      }\n      return container;\n    };\n    const removeFormatInternal = (ed, name, vars, node, similar) => {\n      const formatList = ed.formatter.get(name);\n      const format = formatList[0];\n      const dom = ed.dom;\n      const selection = ed.selection;\n      const splitToFormatRoot = container => {\n        const formatRoot = findFormatRoot(ed, container, name, vars, similar);\n        return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars);\n      };\n      const isRemoveBookmarkNode = node => isBookmarkNode$1(node) && isElement$6(node) && (node.id === '_start' || node.id === '_end');\n      const removeFormatOnNode = node => exists(formatList, fmt => removeNodeFormat(ed, fmt, vars, node, node));\n      const process = node => {\n        const children = from(node.childNodes);\n        const removed = removeFormatOnNode(node);\n        const currentNodeMatches = removed || exists(formatList, f => matchName(dom, node, f));\n        const parentNode = node.parentNode;\n        if (!currentNodeMatches && isNonNullable(parentNode) && shouldExpandToSelector(format)) {\n          removeFormatOnNode(parentNode);\n        }\n        if (format.deep) {\n          if (children.length) {\n            for (let i = 0; i < children.length; i++) {\n              process(children[i]);\n            }\n          }\n        }\n        const textDecorations = ['underline', 'line-through', 'overline'];\n        each$e(textDecorations, decoration => {\n          if (isElement$6(node) && ed.dom.getStyle(node, 'text-decoration') === decoration && node.parentNode && getTextDecoration(dom, node.parentNode) === decoration) {\n            removeNodeFormat(ed, {\n              deep: false,\n              exact: true,\n              inline: 'span',\n              styles: {\n                textDecoration: decoration\n              }\n            }, undefined, node);\n          }\n        });\n      };\n      const unwrap = start => {\n        const node = dom.get(start ? '_start' : '_end');\n        if (node) {\n          let out = node[start ? 'firstChild' : 'lastChild'];\n          if (isRemoveBookmarkNode(out)) {\n            out = out[start ? 'firstChild' : 'lastChild'];\n          }\n          if (isText$a(out) && out.data.length === 0) {\n            out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;\n          }\n          dom.remove(node, true);\n          return out;\n        } else {\n          return null;\n        }\n      };\n      const removeRngStyle = rng => {\n        let startContainer;\n        let endContainer;\n        let expandedRng = expandRng(dom, rng, formatList, rng.collapsed);\n        if (format.split) {\n          expandedRng = split(expandedRng);\n          startContainer = getContainer(ed, expandedRng, true);\n          endContainer = getContainer(ed, expandedRng);\n          if (startContainer !== endContainer) {\n            startContainer = normalizeTableSelection(startContainer, true);\n            endContainer = normalizeTableSelection(endContainer, false);\n            if (isChildOfInlineParent(dom, startContainer, endContainer)) {\n              const marker = Optional.from(startContainer.firstChild).getOr(startContainer);\n              splitToFormatRoot(wrapWithSiblings(dom, marker, true, 'span', {\n                'id': '_start',\n                'data-mce-type': 'bookmark'\n              }));\n              unwrap(true);\n              return;\n            }\n            if (isChildOfInlineParent(dom, endContainer, startContainer)) {\n              const marker = Optional.from(endContainer.lastChild).getOr(endContainer);\n              splitToFormatRoot(wrapWithSiblings(dom, marker, false, 'span', {\n                'id': '_end',\n                'data-mce-type': 'bookmark'\n              }));\n              unwrap(false);\n              return;\n            }\n            startContainer = wrap$1(dom, startContainer, 'span', {\n              'id': '_start',\n              'data-mce-type': 'bookmark'\n            });\n            endContainer = wrap$1(dom, endContainer, 'span', {\n              'id': '_end',\n              'data-mce-type': 'bookmark'\n            });\n            const newRng = dom.createRng();\n            newRng.setStartAfter(startContainer);\n            newRng.setEndBefore(endContainer);\n            walk$3(dom, newRng, nodes => {\n              each$e(nodes, n => {\n                if (!isBookmarkNode$1(n) && !isBookmarkNode$1(n.parentNode)) {\n                  splitToFormatRoot(n);\n                }\n              });\n            });\n            splitToFormatRoot(startContainer);\n            splitToFormatRoot(endContainer);\n            startContainer = unwrap(true);\n            endContainer = unwrap();\n          } else {\n            startContainer = endContainer = splitToFormatRoot(startContainer);\n          }\n          expandedRng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;\n          expandedRng.startOffset = dom.nodeIndex(startContainer);\n          expandedRng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;\n          expandedRng.endOffset = dom.nodeIndex(endContainer) + 1;\n        }\n        walk$3(dom, expandedRng, nodes => {\n          each$e(nodes, process);\n        });\n      };\n      if (node) {\n        if (isNode(node)) {\n          const rng = dom.createRng();\n          rng.setStartBefore(node);\n          rng.setEndAfter(node);\n          removeRngStyle(rng);\n        } else {\n          removeRngStyle(node);\n        }\n        fireFormatRemove(ed, name, node, vars);\n        return;\n      }\n      if (!selection.isCollapsed() || !isInlineFormat(format) || getCellsFromEditor(ed).length) {\n        preserveSelection(ed, () => runOnRanges(ed, removeRngStyle), startNode => isInlineFormat(format) && match$2(ed, name, vars, startNode));\n        ed.nodeChanged();\n      } else {\n        removeCaretFormat(ed, name, vars, similar);\n      }\n      removeListStyleFormats(ed, name, vars);\n      fireFormatRemove(ed, name, node, vars);\n    };\n    const removeFormat$1 = (ed, name, vars, node, similar) => {\n      if (node || ed.selection.isEditable()) {\n        removeFormatInternal(ed, name, vars, node, similar);\n      }\n    };\n    const removeNodeFormat = (editor, format, vars, node, compareNode) => {\n      return removeNodeFormatInternal(editor, format, vars, node, compareNode).fold(never, newName => {\n        editor.dom.rename(node, newName);\n        return true;\n      }, always);\n    };\n\n    const each$6 = Tools.each;\n    const mergeTextDecorationsAndColor = (dom, format, vars, node) => {\n      const processTextDecorationsAndColor = n => {\n        if (isHTMLElement(n) && isElement$6(n.parentNode) && dom.isEditable(n)) {\n          const parentTextDecoration = getTextDecoration(dom, n.parentNode);\n          if (dom.getStyle(n, 'color') && parentTextDecoration) {\n            dom.setStyle(n, 'text-decoration', parentTextDecoration);\n          } else if (dom.getStyle(n, 'text-decoration') === parentTextDecoration) {\n            dom.setStyle(n, 'text-decoration', null);\n          }\n        }\n      };\n      if (format.styles && (format.styles.color || format.styles.textDecoration)) {\n        Tools.walk(node, processTextDecorationsAndColor, 'childNodes');\n        processTextDecorationsAndColor(node);\n      }\n    };\n    const mergeBackgroundColorAndFontSize = (dom, format, vars, node) => {\n      if (format.styles && format.styles.backgroundColor) {\n        const hasFontSize = hasStyle(dom, 'fontSize');\n        processChildElements(node, elm => hasFontSize(elm) && dom.isEditable(elm), applyStyle(dom, 'backgroundColor', replaceVars(format.styles.backgroundColor, vars)));\n      }\n    };\n    const mergeSubSup = (dom, format, vars, node) => {\n      if (isInlineFormat(format) && (format.inline === 'sub' || format.inline === 'sup')) {\n        const hasFontSize = hasStyle(dom, 'fontSize');\n        processChildElements(node, elm => hasFontSize(elm) && dom.isEditable(elm), applyStyle(dom, 'fontSize', ''));\n        const inverseTagDescendants = filter$5(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), dom.isEditable);\n        dom.remove(inverseTagDescendants, true);\n      }\n    };\n    const mergeWithChildren = (editor, formatList, vars, node) => {\n      each$6(formatList, format => {\n        if (isInlineFormat(format)) {\n          each$6(editor.dom.select(format.inline, node), child => {\n            if (isElementNode(child)) {\n              removeNodeFormat(editor, format, vars, child, format.exact ? child : null);\n            }\n          });\n        }\n        clearChildStyles(editor.dom, format, node);\n      });\n    };\n    const mergeWithParents = (editor, format, name, vars, node) => {\n      const parentNode = node.parentNode;\n      if (matchNode(editor, parentNode, name, vars)) {\n        if (removeNodeFormat(editor, format, vars, node)) {\n          return;\n        }\n      }\n      if (format.merge_with_parents && parentNode) {\n        editor.dom.getParent(parentNode, parent => {\n          if (matchNode(editor, parent, name, vars)) {\n            removeNodeFormat(editor, format, vars, node);\n            return true;\n          } else {\n            return false;\n          }\n        });\n      }\n    };\n\n    const each$5 = Tools.each;\n    const canFormatBR = (editor, format, node, parentName) => {\n      if (canFormatEmptyLines(editor) && isInlineFormat(format) && node.parentNode) {\n        const validBRParentElements = getTextRootBlockElements(editor.schema);\n        const hasCaretNodeSibling = sibling(SugarElement.fromDom(node), sibling => isCaretNode(sibling.dom));\n        return hasNonNullableKey(validBRParentElements, parentName) && isEmpty$2(SugarElement.fromDom(node.parentNode), false) && !hasCaretNodeSibling;\n      } else {\n        return false;\n      }\n    };\n    const applyStyles = (dom, elm, format, vars) => {\n      each$5(format.styles, (value, name) => {\n        dom.setStyle(elm, name, replaceVars(value, vars));\n      });\n      if (format.styles) {\n        const styleVal = dom.getAttrib(elm, 'style');\n        if (styleVal) {\n          dom.setAttrib(elm, 'data-mce-style', styleVal);\n        }\n      }\n    };\n    const applyFormatAction = (ed, name, vars, node) => {\n      const formatList = ed.formatter.get(name);\n      const format = formatList[0];\n      const isCollapsed = !node && ed.selection.isCollapsed();\n      const dom = ed.dom;\n      const selection = ed.selection;\n      const setElementFormat = (elm, fmt = format) => {\n        if (isFunction(fmt.onformat)) {\n          fmt.onformat(elm, fmt, vars, node);\n        }\n        applyStyles(dom, elm, fmt, vars);\n        each$5(fmt.attributes, (value, name) => {\n          dom.setAttrib(elm, name, replaceVars(value, vars));\n        });\n        each$5(fmt.classes, value => {\n          const newValue = replaceVars(value, vars);\n          if (!dom.hasClass(elm, newValue)) {\n            dom.addClass(elm, newValue);\n          }\n        });\n      };\n      const applyNodeStyle = (formatList, node) => {\n        let found = false;\n        each$5(formatList, format => {\n          if (!isSelectorFormat(format)) {\n            return false;\n          }\n          if (dom.getContentEditable(node) === 'false' && !format.ceFalseOverride) {\n            return true;\n          }\n          if (isNonNullable(format.collapsed) && format.collapsed !== isCollapsed) {\n            return true;\n          }\n          if (dom.is(node, format.selector) && !isCaretNode(node)) {\n            setElementFormat(node, format);\n            found = true;\n            return false;\n          }\n          return true;\n        });\n        return found;\n      };\n      const createWrapElement = wrapName => {\n        if (isString(wrapName)) {\n          const wrapElm = dom.create(wrapName);\n          setElementFormat(wrapElm);\n          return wrapElm;\n        } else {\n          return null;\n        }\n      };\n      const applyRngStyle = (dom, rng, nodeSpecific) => {\n        const newWrappers = [];\n        let contentEditable = true;\n        const wrapName = format.inline || format.block;\n        const wrapElm = createWrapElement(wrapName);\n        const isMatchingWrappingBlock = node => isWrappingBlockFormat(format) && matchNode(ed, node, name, vars);\n        const canRenameBlock = (node, parentName, isEditableDescendant) => {\n          const isValidBlockFormatForNode = isNonWrappingBlockFormat(format) && isTextBlock$1(ed.schema, node) && isValid(ed, parentName, wrapName);\n          return isEditableDescendant && isValidBlockFormatForNode;\n        };\n        const canWrapNode = (node, parentName, isEditableDescendant, isWrappableNoneditableElm) => {\n          const nodeName = node.nodeName.toLowerCase();\n          const isValidWrapNode = isValid(ed, wrapName, nodeName) && isValid(ed, parentName, wrapName);\n          const isZwsp = !nodeSpecific && isText$a(node) && isZwsp$1(node.data);\n          const isCaret = isCaretNode(node);\n          const isCorrectFormatForNode = !isInlineFormat(format) || !dom.isBlock(node);\n          return (isEditableDescendant || isWrappableNoneditableElm) && isValidWrapNode && !isZwsp && !isCaret && isCorrectFormatForNode;\n        };\n        walk$3(dom, rng, nodes => {\n          let currentWrapElm;\n          const process = node => {\n            let hasContentEditableState = false;\n            let lastContentEditable = contentEditable;\n            let isWrappableNoneditableElm = false;\n            const parentNode = node.parentNode;\n            const parentName = parentNode.nodeName.toLowerCase();\n            const contentEditableValue = dom.getContentEditable(node);\n            if (isNonNullable(contentEditableValue)) {\n              lastContentEditable = contentEditable;\n              contentEditable = contentEditableValue === 'true';\n              hasContentEditableState = true;\n              isWrappableNoneditableElm = isWrappableNoneditable(ed, node);\n            }\n            const isEditableDescendant = contentEditable && !hasContentEditableState;\n            if (isBr$6(node) && !canFormatBR(ed, format, node, parentName)) {\n              currentWrapElm = null;\n              if (isBlockFormat(format)) {\n                dom.remove(node);\n              }\n              return;\n            }\n            if (isMatchingWrappingBlock(node)) {\n              currentWrapElm = null;\n              return;\n            }\n            if (canRenameBlock(node, parentName, isEditableDescendant)) {\n              const elm = dom.rename(node, wrapName);\n              setElementFormat(elm);\n              newWrappers.push(elm);\n              currentWrapElm = null;\n              return;\n            }\n            if (isSelectorFormat(format)) {\n              let found = applyNodeStyle(formatList, node);\n              if (!found && isNonNullable(parentNode) && shouldExpandToSelector(format)) {\n                found = applyNodeStyle(formatList, parentNode);\n              }\n              if (!isInlineFormat(format) || found) {\n                currentWrapElm = null;\n                return;\n              }\n            }\n            if (isNonNullable(wrapElm) && canWrapNode(node, parentName, isEditableDescendant, isWrappableNoneditableElm)) {\n              if (!currentWrapElm) {\n                currentWrapElm = dom.clone(wrapElm, false);\n                parentNode.insertBefore(currentWrapElm, node);\n                newWrappers.push(currentWrapElm);\n              }\n              if (isWrappableNoneditableElm && hasContentEditableState) {\n                contentEditable = lastContentEditable;\n              }\n              currentWrapElm.appendChild(node);\n            } else {\n              currentWrapElm = null;\n              each$e(from(node.childNodes), process);\n              if (hasContentEditableState) {\n                contentEditable = lastContentEditable;\n              }\n              currentWrapElm = null;\n            }\n          };\n          each$e(nodes, process);\n        });\n        if (format.links === true) {\n          each$e(newWrappers, node => {\n            const process = node => {\n              if (node.nodeName === 'A') {\n                setElementFormat(node, format);\n              }\n              each$e(from(node.childNodes), process);\n            };\n            process(node);\n          });\n        }\n        each$e(newWrappers, node => {\n          const getChildCount = node => {\n            let count = 0;\n            each$e(node.childNodes, node => {\n              if (!isEmptyTextNode$1(node) && !isBookmarkNode$1(node)) {\n                count++;\n              }\n            });\n            return count;\n          };\n          const mergeStyles = node => {\n            const childElement = find$2(node.childNodes, isElementNode$1).filter(child => dom.getContentEditable(child) !== 'false' && matchName(dom, child, format));\n            return childElement.map(child => {\n              const clone = dom.clone(child, false);\n              setElementFormat(clone);\n              dom.replace(clone, node, true);\n              dom.remove(child, true);\n              return clone;\n            }).getOr(node);\n          };\n          const childCount = getChildCount(node);\n          if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) {\n            dom.remove(node, true);\n            return;\n          }\n          if (isInlineFormat(format) || isBlockFormat(format) && format.wrapper) {\n            if (!format.exact && childCount === 1) {\n              node = mergeStyles(node);\n            }\n            mergeWithChildren(ed, formatList, vars, node);\n            mergeWithParents(ed, format, name, vars, node);\n            mergeBackgroundColorAndFontSize(dom, format, vars, node);\n            mergeTextDecorationsAndColor(dom, format, vars, node);\n            mergeSubSup(dom, format, vars, node);\n            mergeSiblings(ed, format, vars, node);\n          }\n        });\n      };\n      const targetNode = isNode(node) ? node : selection.getNode();\n      if (dom.getContentEditable(targetNode) === 'false' && !isWrappableNoneditable(ed, targetNode)) {\n        node = targetNode;\n        applyNodeStyle(formatList, node);\n        fireFormatApply(ed, name, node, vars);\n        return;\n      }\n      if (format) {\n        if (node) {\n          if (isNode(node)) {\n            if (!applyNodeStyle(formatList, node)) {\n              const rng = dom.createRng();\n              rng.setStartBefore(node);\n              rng.setEndAfter(node);\n              applyRngStyle(dom, expandRng(dom, rng, formatList), true);\n            }\n          } else {\n            applyRngStyle(dom, node, true);\n          }\n        } else {\n          if (!isCollapsed || !isInlineFormat(format) || getCellsFromEditor(ed).length) {\n            selection.setRng(normalize(selection.getRng()));\n            preserveSelection(ed, () => {\n              runOnRanges(ed, (selectionRng, fake) => {\n                const expandedRng = fake ? selectionRng : expandRng(dom, selectionRng, formatList);\n                applyRngStyle(dom, expandedRng, false);\n              });\n            }, always);\n            ed.nodeChanged();\n          } else {\n            applyCaretFormat(ed, name, vars);\n          }\n          getExpandedListItemFormat(ed.formatter, name).each(liFmt => {\n            each$e(getFullySelectedListItems(ed.selection), li => applyStyles(dom, li, liFmt, vars));\n          });\n        }\n        postProcess$1(name, ed);\n      }\n      fireFormatApply(ed, name, node, vars);\n    };\n    const applyFormat$1 = (editor, name, vars, node) => {\n      if (node || editor.selection.isEditable()) {\n        applyFormatAction(editor, name, vars, node);\n      }\n    };\n\n    const hasVars = value => has$2(value, 'vars');\n    const setup$u = (registeredFormatListeners, editor) => {\n      registeredFormatListeners.set({});\n      editor.on('NodeChange', e => {\n        updateAndFireChangeCallbacks(editor, e.element, registeredFormatListeners.get());\n      });\n      editor.on('FormatApply FormatRemove', e => {\n        const element = Optional.from(e.node).map(nodeOrRange => isNode(nodeOrRange) ? nodeOrRange : nodeOrRange.startContainer).bind(node => isElement$6(node) ? Optional.some(node) : Optional.from(node.parentElement)).getOrThunk(() => fallbackElement(editor));\n        updateAndFireChangeCallbacks(editor, element, registeredFormatListeners.get());\n      });\n    };\n    const fallbackElement = editor => editor.selection.getStart();\n    const matchingNode = (editor, parents, format, similar, vars) => {\n      const isMatchingNode = node => {\n        const matchingFormat = editor.formatter.matchNode(node, format, vars !== null && vars !== void 0 ? vars : {}, similar);\n        return !isUndefined(matchingFormat);\n      };\n      const isUnableToMatch = node => {\n        if (matchesUnInheritedFormatSelector(editor, node, format)) {\n          return true;\n        } else {\n          if (!similar) {\n            return isNonNullable(editor.formatter.matchNode(node, format, vars, true));\n          } else {\n            return false;\n          }\n        }\n      };\n      return findUntil$1(parents, isMatchingNode, isUnableToMatch);\n    };\n    const getParents = (editor, elm) => {\n      const element = elm !== null && elm !== void 0 ? elm : fallbackElement(editor);\n      return filter$5(getParents$2(editor.dom, element), node => isElement$6(node) && !isBogus$2(node));\n    };\n    const updateAndFireChangeCallbacks = (editor, elm, registeredCallbacks) => {\n      const parents = getParents(editor, elm);\n      each$d(registeredCallbacks, (data, format) => {\n        const runIfChanged = spec => {\n          const match = matchingNode(editor, parents, format, spec.similar, hasVars(spec) ? spec.vars : undefined);\n          const isSet = match.isSome();\n          if (spec.state.get() !== isSet) {\n            spec.state.set(isSet);\n            const node = match.getOr(elm);\n            if (hasVars(spec)) {\n              spec.callback(isSet, {\n                node,\n                format,\n                parents\n              });\n            } else {\n              each$e(spec.callbacks, callback => callback(isSet, {\n                node,\n                format,\n                parents\n              }));\n            }\n          }\n        };\n        each$e([data.withSimilar, data.withoutSimilar], runIfChanged);\n        each$e(data.withVars, runIfChanged);\n      });\n    };\n    const addListeners = (editor, registeredFormatListeners, formats, callback, similar, vars) => {\n      const formatChangeItems = registeredFormatListeners.get();\n      each$e(formats.split(','), format => {\n        const group = get$a(formatChangeItems, format).getOrThunk(() => {\n          const base = {\n            withSimilar: {\n              state: Cell(false),\n              similar: true,\n              callbacks: []\n            },\n            withoutSimilar: {\n              state: Cell(false),\n              similar: false,\n              callbacks: []\n            },\n            withVars: []\n          };\n          formatChangeItems[format] = base;\n          return base;\n        });\n        const getCurrent = () => {\n          const parents = getParents(editor);\n          return matchingNode(editor, parents, format, similar, vars).isSome();\n        };\n        if (isUndefined(vars)) {\n          const toAppendTo = similar ? group.withSimilar : group.withoutSimilar;\n          toAppendTo.callbacks.push(callback);\n          if (toAppendTo.callbacks.length === 1) {\n            toAppendTo.state.set(getCurrent());\n          }\n        } else {\n          group.withVars.push({\n            state: Cell(getCurrent()),\n            similar,\n            vars,\n            callback\n          });\n        }\n      });\n      registeredFormatListeners.set(formatChangeItems);\n    };\n    const removeListeners = (registeredFormatListeners, formats, callback) => {\n      const formatChangeItems = registeredFormatListeners.get();\n      each$e(formats.split(','), format => get$a(formatChangeItems, format).each(group => {\n        formatChangeItems[format] = {\n          withSimilar: {\n            ...group.withSimilar,\n            callbacks: filter$5(group.withSimilar.callbacks, cb => cb !== callback)\n          },\n          withoutSimilar: {\n            ...group.withoutSimilar,\n            callbacks: filter$5(group.withoutSimilar.callbacks, cb => cb !== callback)\n          },\n          withVars: filter$5(group.withVars, item => item.callback !== callback)\n        };\n      }));\n      registeredFormatListeners.set(formatChangeItems);\n    };\n    const formatChangedInternal = (editor, registeredFormatListeners, formats, callback, similar, vars) => {\n      addListeners(editor, registeredFormatListeners, formats, callback, similar, vars);\n      return {\n        unbind: () => removeListeners(registeredFormatListeners, formats, callback)\n      };\n    };\n\n    const toggle = (editor, name, vars, node) => {\n      const fmt = editor.formatter.get(name);\n      if (fmt) {\n        if (match$2(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {\n          removeFormat$1(editor, name, vars, node);\n        } else {\n          applyFormat$1(editor, name, vars, node);\n        }\n      }\n    };\n\n    const explode$1 = Tools.explode;\n    const create$8 = () => {\n      const filters = {};\n      const addFilter = (name, callback) => {\n        each$e(explode$1(name), name => {\n          if (!has$2(filters, name)) {\n            filters[name] = {\n              name,\n              callbacks: []\n            };\n          }\n          filters[name].callbacks.push(callback);\n        });\n      };\n      const getFilters = () => values(filters);\n      const removeFilter = (name, callback) => {\n        each$e(explode$1(name), name => {\n          if (has$2(filters, name)) {\n            if (isNonNullable(callback)) {\n              const filter = filters[name];\n              const newCallbacks = filter$5(filter.callbacks, c => c !== callback);\n              if (newCallbacks.length > 0) {\n                filter.callbacks = newCallbacks;\n              } else {\n                delete filters[name];\n              }\n            } else {\n              delete filters[name];\n            }\n          }\n        });\n      };\n      return {\n        addFilter,\n        getFilters,\n        removeFilter\n      };\n    };\n\n    const removeAttrs = (node, names) => {\n      each$e(names, name => {\n        node.attr(name, null);\n      });\n    };\n    const addFontToSpansFilter = (domParser, styles, fontSizes) => {\n      domParser.addNodeFilter('font', nodes => {\n        each$e(nodes, node => {\n          const props = styles.parse(node.attr('style'));\n          const color = node.attr('color');\n          const face = node.attr('face');\n          const size = node.attr('size');\n          if (color) {\n            props.color = color;\n          }\n          if (face) {\n            props['font-family'] = face;\n          }\n          if (size) {\n            toInt(size).each(num => {\n              props['font-size'] = fontSizes[num - 1];\n            });\n          }\n          node.name = 'span';\n          node.attr('style', styles.serialize(props));\n          removeAttrs(node, ['color', 'face', 'size']);\n        });\n      });\n    };\n    const addStrikeFilter = (domParser, schema, styles) => {\n      domParser.addNodeFilter('strike', nodes => {\n        const convertToSTag = schema.type !== 'html4';\n        each$e(nodes, node => {\n          if (convertToSTag) {\n            node.name = 's';\n          } else {\n            const props = styles.parse(node.attr('style'));\n            props['text-decoration'] = 'line-through';\n            node.name = 'span';\n            node.attr('style', styles.serialize(props));\n          }\n        });\n      });\n    };\n    const addFilters = (domParser, settings, schema) => {\n      var _a;\n      const styles = Styles();\n      if (settings.convert_fonts_to_spans) {\n        addFontToSpansFilter(domParser, styles, Tools.explode((_a = settings.font_size_legacy_values) !== null && _a !== void 0 ? _a : ''));\n      }\n      addStrikeFilter(domParser, schema, styles);\n    };\n    const register$5 = (domParser, settings, schema) => {\n      if (settings.inline_styles) {\n        addFilters(domParser, settings, schema);\n      }\n    };\n\n    const addNodeFilter = (settings, htmlParser, schema) => {\n      htmlParser.addNodeFilter('br', (nodes, _, args) => {\n        const blockElements = Tools.extend({}, schema.getBlockElements());\n        const nonEmptyElements = schema.getNonEmptyElements();\n        const whitespaceElements = schema.getWhitespaceElements();\n        blockElements.body = 1;\n        const isBlock = node => node.name in blockElements || isTransparentAstBlock(schema, node);\n        for (let i = 0, l = nodes.length; i < l; i++) {\n          let node = nodes[i];\n          let parent = node.parent;\n          if (parent && isBlock(parent) && node === parent.lastChild) {\n            let prev = node.prev;\n            while (prev) {\n              const prevName = prev.name;\n              if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') {\n                if (prevName === 'br') {\n                  node = null;\n                }\n                break;\n              }\n              prev = prev.prev;\n            }\n            if (node) {\n              node.remove();\n              if (isEmpty(schema, nonEmptyElements, whitespaceElements, parent)) {\n                const elementRule = schema.getElementRule(parent.name);\n                if (elementRule) {\n                  if (elementRule.removeEmpty) {\n                    parent.remove();\n                  } else if (elementRule.paddEmpty) {\n                    paddEmptyNode(settings, args, isBlock, parent);\n                  }\n                }\n              }\n            }\n          } else {\n            let lastParent = node;\n            while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {\n              lastParent = parent;\n              if (blockElements[parent.name]) {\n                break;\n              }\n              parent = parent.parent;\n            }\n            if (lastParent === parent) {\n              const textNode = new AstNode('#text', 3);\n              textNode.value = nbsp;\n              node.replace(textNode);\n            }\n          }\n        }\n      });\n    };\n\n    const blobUriToBlob = url => fetch(url).then(res => res.ok ? res.blob() : Promise.reject()).catch(() => Promise.reject({\n      message: \"Cannot convert \".concat(url, \" to Blob. Resource might not exist or is inaccessible.\"),\n      uriType: 'blob'\n    }));\n    const extractBase64Data = data => {\n      const matches = /([a-z0-9+\\/=\\s]+)/i.exec(data);\n      return matches ? matches[1] : '';\n    };\n    const parseDataUri = uri => {\n      const [type, ...rest] = uri.split(',');\n      const data = rest.join(',');\n      const matches = /data:([^/]+\\/[^;]+)(;.+)?/.exec(type);\n      if (matches) {\n        const base64Encoded = matches[2] === ';base64';\n        const extractedData = base64Encoded ? extractBase64Data(data) : decodeURIComponent(data);\n        return Optional.some({\n          type: matches[1],\n          data: extractedData,\n          base64Encoded\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const buildBlob = (type, data, base64Encoded = true) => {\n      let str = data;\n      if (base64Encoded) {\n        try {\n          str = atob(data);\n        } catch (e) {\n          return Optional.none();\n        }\n      }\n      const arr = new Uint8Array(str.length);\n      for (let i = 0; i < arr.length; i++) {\n        arr[i] = str.charCodeAt(i);\n      }\n      return Optional.some(new Blob([arr], {\n        type\n      }));\n    };\n    const dataUriToBlob = uri => {\n      return new Promise((resolve, reject) => {\n        parseDataUri(uri).bind(({\n          type,\n          data,\n          base64Encoded\n        }) => buildBlob(type, data, base64Encoded)).fold(() => reject('Invalid data URI'), resolve);\n      });\n    };\n    const uriToBlob = url => {\n      if (startsWith(url, 'blob:')) {\n        return blobUriToBlob(url);\n      } else if (startsWith(url, 'data:')) {\n        return dataUriToBlob(url);\n      } else {\n        return Promise.reject('Unknown URI format');\n      }\n    };\n    const blobToDataUri = blob => {\n      return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onloadend = () => {\n          resolve(reader.result);\n        };\n        reader.onerror = () => {\n          var _a;\n          reject((_a = reader.error) === null || _a === void 0 ? void 0 : _a.message);\n        };\n        reader.readAsDataURL(blob);\n      });\n    };\n\n    let count$1 = 0;\n    const uniqueId$1 = prefix => {\n      return (prefix || 'blobid') + count$1++;\n    };\n    const processDataUri = (dataUri, base64Only, generateBlobInfo) => {\n      return parseDataUri(dataUri).bind(({\n        data,\n        type,\n        base64Encoded\n      }) => {\n        if (base64Only && !base64Encoded) {\n          return Optional.none();\n        } else {\n          const base64 = base64Encoded ? data : btoa(data);\n          return generateBlobInfo(base64, type);\n        }\n      });\n    };\n    const createBlobInfo$1 = (blobCache, blob, base64) => {\n      const blobInfo = blobCache.create(uniqueId$1(), blob, base64);\n      blobCache.add(blobInfo);\n      return blobInfo;\n    };\n    const dataUriToBlobInfo = (blobCache, dataUri, base64Only = false) => {\n      return processDataUri(dataUri, base64Only, (base64, type) => Optional.from(blobCache.getByData(base64, type)).orThunk(() => buildBlob(type, base64).map(blob => createBlobInfo$1(blobCache, blob, base64))));\n    };\n    const imageToBlobInfo = (blobCache, imageSrc) => {\n      const invalidDataUri = () => Promise.reject('Invalid data URI');\n      if (startsWith(imageSrc, 'blob:')) {\n        const blobInfo = blobCache.getByUri(imageSrc);\n        if (isNonNullable(blobInfo)) {\n          return Promise.resolve(blobInfo);\n        } else {\n          return uriToBlob(imageSrc).then(blob => {\n            return blobToDataUri(blob).then(dataUri => {\n              return processDataUri(dataUri, false, base64 => {\n                return Optional.some(createBlobInfo$1(blobCache, blob, base64));\n              }).getOrThunk(invalidDataUri);\n            });\n          });\n        }\n      } else if (startsWith(imageSrc, 'data:')) {\n        return dataUriToBlobInfo(blobCache, imageSrc).fold(invalidDataUri, blobInfo => Promise.resolve(blobInfo));\n      } else {\n        return Promise.reject('Unknown image data format');\n      }\n    };\n\n    const isBogusImage = img => isNonNullable(img.attr('data-mce-bogus'));\n    const isInternalImageSource = img => img.attr('src') === Env.transparentSrc || isNonNullable(img.attr('data-mce-placeholder'));\n    const registerBase64ImageFilter = (parser, settings) => {\n      const {\n        blob_cache: blobCache\n      } = settings;\n      if (blobCache) {\n        const processImage = img => {\n          const inputSrc = img.attr('src');\n          if (isInternalImageSource(img) || isBogusImage(img) || isNullable(inputSrc)) {\n            return;\n          }\n          dataUriToBlobInfo(blobCache, inputSrc, true).each(blobInfo => {\n            img.attr('src', blobInfo.blobUri());\n          });\n        };\n        parser.addAttributeFilter('src', nodes => each$e(nodes, processImage));\n      }\n    };\n    const isMimeType = (mime, type) => startsWith(mime, \"\".concat(type, \"/\"));\n    const createSafeEmbed = (mime, src, width, height, sandboxIframes) => {\n      let name;\n      if (isUndefined(mime)) {\n        name = 'iframe';\n      } else if (isMimeType(mime, 'image')) {\n        name = 'img';\n      } else if (isMimeType(mime, 'video')) {\n        name = 'video';\n      } else if (isMimeType(mime, 'audio')) {\n        name = 'audio';\n      } else {\n        name = 'iframe';\n      }\n      const embed = new AstNode(name, 1);\n      embed.attr(name === 'audio' ? {\n        src\n      } : {\n        src,\n        width,\n        height\n      });\n      if (name === 'audio' || name === 'video') {\n        embed.attr('controls', '');\n      }\n      if (name === 'iframe' && sandboxIframes) {\n        embed.attr('sandbox', '');\n      }\n      return embed;\n    };\n    const register$4 = (parser, settings) => {\n      const schema = parser.schema;\n      if (settings.remove_trailing_brs) {\n        addNodeFilter(settings, parser, schema);\n      }\n      parser.addAttributeFilter('href', nodes => {\n        let i = nodes.length;\n        const appendRel = rel => {\n          const parts = rel.split(' ').filter(p => p.length > 0);\n          return parts.concat(['noopener']).sort().join(' ');\n        };\n        const addNoOpener = rel => {\n          const newRel = rel ? Tools.trim(rel) : '';\n          if (!/\\b(noopener)\\b/g.test(newRel)) {\n            return appendRel(newRel);\n          } else {\n            return newRel;\n          }\n        };\n        if (!settings.allow_unsafe_link_target) {\n          while (i--) {\n            const node = nodes[i];\n            if (node.name === 'a' && node.attr('target') === '_blank') {\n              node.attr('rel', addNoOpener(node.attr('rel')));\n            }\n          }\n        }\n      });\n      if (!settings.allow_html_in_named_anchor) {\n        parser.addAttributeFilter('id,name', nodes => {\n          let i = nodes.length,\n            sibling,\n            prevSibling,\n            parent,\n            node;\n          while (i--) {\n            node = nodes[i];\n            if (node.name === 'a' && node.firstChild && !node.attr('href')) {\n              parent = node.parent;\n              sibling = node.lastChild;\n              while (sibling && parent) {\n                prevSibling = sibling.prev;\n                parent.insert(sibling, node);\n                sibling = prevSibling;\n              }\n            }\n          }\n        });\n      }\n      if (settings.fix_list_elements) {\n        parser.addNodeFilter('ul,ol', nodes => {\n          let i = nodes.length,\n            node,\n            parentNode;\n          while (i--) {\n            node = nodes[i];\n            parentNode = node.parent;\n            if (parentNode && (parentNode.name === 'ul' || parentNode.name === 'ol')) {\n              if (node.prev && node.prev.name === 'li') {\n                node.prev.append(node);\n              } else {\n                const li = new AstNode('li', 1);\n                li.attr('style', 'list-style-type: none');\n                node.wrap(li);\n              }\n            }\n          }\n        });\n      }\n      const validClasses = schema.getValidClasses();\n      if (settings.validate && validClasses) {\n        parser.addAttributeFilter('class', nodes => {\n          var _a;\n          let i = nodes.length;\n          while (i--) {\n            const node = nodes[i];\n            const clazz = (_a = node.attr('class')) !== null && _a !== void 0 ? _a : '';\n            const classList = Tools.explode(clazz, ' ');\n            let classValue = '';\n            for (let ci = 0; ci < classList.length; ci++) {\n              const className = classList[ci];\n              let valid = false;\n              let validClassesMap = validClasses['*'];\n              if (validClassesMap && validClassesMap[className]) {\n                valid = true;\n              }\n              validClassesMap = validClasses[node.name];\n              if (!valid && validClassesMap && validClassesMap[className]) {\n                valid = true;\n              }\n              if (valid) {\n                if (classValue) {\n                  classValue += ' ';\n                }\n                classValue += className;\n              }\n            }\n            if (!classValue.length) {\n              classValue = null;\n            }\n            node.attr('class', classValue);\n          }\n        });\n      }\n      registerBase64ImageFilter(parser, settings);\n      if (settings.convert_unsafe_embeds) {\n        parser.addNodeFilter('object,embed', nodes => each$e(nodes, node => {\n          node.replace(createSafeEmbed(node.attr('type'), node.name === 'object' ? node.attr('data') : node.attr('src'), node.attr('width'), node.attr('height'), settings.sandbox_iframes));\n        }));\n      }\n      if (settings.sandbox_iframes) {\n        parser.addNodeFilter('iframe', nodes => each$e(nodes, node => node.attr('sandbox', '')));\n      }\n    };\n\n    const {\n      entries,\n      setPrototypeOf,\n      isFrozen,\n      getPrototypeOf,\n      getOwnPropertyDescriptor\n    } = Object;\n    let {\n      freeze,\n      seal,\n      create: create$7\n    } = Object;\n    let {\n      apply,\n      construct\n    } = typeof Reflect !== 'undefined' && Reflect;\n    if (!apply) {\n      apply = function apply(fun, thisValue, args) {\n        return fun.apply(thisValue, args);\n      };\n    }\n    if (!freeze) {\n      freeze = function freeze(x) {\n        return x;\n      };\n    }\n    if (!seal) {\n      seal = function seal(x) {\n        return x;\n      };\n    }\n    if (!construct) {\n      construct = function construct(Func, args) {\n        return new Func(...args);\n      };\n    }\n    const arrayForEach = unapply(Array.prototype.forEach);\n    const arrayPop = unapply(Array.prototype.pop);\n    const arrayPush = unapply(Array.prototype.push);\n    const stringToLowerCase = unapply(String.prototype.toLowerCase);\n    const stringToString = unapply(String.prototype.toString);\n    const stringMatch = unapply(String.prototype.match);\n    const stringReplace = unapply(String.prototype.replace);\n    const stringIndexOf = unapply(String.prototype.indexOf);\n    const stringTrim = unapply(String.prototype.trim);\n    const regExpTest = unapply(RegExp.prototype.test);\n    const typeErrorCreate = unconstruct(TypeError);\n    function unapply(func) {\n      return function (thisArg) {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        return apply(func, thisArg, args);\n      };\n    }\n    function unconstruct(func) {\n      return function () {\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n        return construct(func, args);\n      };\n    }\n    function addToSet(set, array, transformCaseFunc) {\n      var _transformCaseFunc;\n      transformCaseFunc = (_transformCaseFunc = transformCaseFunc) !== null && _transformCaseFunc !== void 0 ? _transformCaseFunc : stringToLowerCase;\n      if (setPrototypeOf) {\n        setPrototypeOf(set, null);\n      }\n      let l = array.length;\n      while (l--) {\n        let element = array[l];\n        if (typeof element === 'string') {\n          const lcElement = transformCaseFunc(element);\n          if (lcElement !== element) {\n            if (!isFrozen(array)) {\n              array[l] = lcElement;\n            }\n            element = lcElement;\n          }\n        }\n        set[element] = true;\n      }\n      return set;\n    }\n    function clone(object) {\n      const newObject = create$7(null);\n      for (const [property, value] of entries(object)) {\n        newObject[property] = value;\n      }\n      return newObject;\n    }\n    function lookupGetter(object, prop) {\n      while (object !== null) {\n        const desc = getOwnPropertyDescriptor(object, prop);\n        if (desc) {\n          if (desc.get) {\n            return unapply(desc.get);\n          }\n          if (typeof desc.value === 'function') {\n            return unapply(desc.value);\n          }\n        }\n        object = getPrototypeOf(object);\n      }\n      function fallbackValue(element) {\n        console.warn('fallback value for', element);\n        return null;\n      }\n      return fallbackValue;\n    }\n    const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n    const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n    const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n    const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n    const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n    const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n    const text = freeze(['#text']);\n    const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n    const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n    const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n    const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n    const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm);\n    const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n    const TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*}/gm);\n    const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/);\n    const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/);\n    const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i);\n    const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n    const ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g);\n    const DOCTYPE_NAME = seal(/^html$/i);\n    var EXPRESSIONS = Object.freeze({\n      __proto__: null,\n      MUSTACHE_EXPR: MUSTACHE_EXPR,\n      ERB_EXPR: ERB_EXPR,\n      TMPLIT_EXPR: TMPLIT_EXPR,\n      DATA_ATTR: DATA_ATTR,\n      ARIA_ATTR: ARIA_ATTR,\n      IS_ALLOWED_URI: IS_ALLOWED_URI,\n      IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n      ATTR_WHITESPACE: ATTR_WHITESPACE,\n      DOCTYPE_NAME: DOCTYPE_NAME\n    });\n    const getGlobal = () => typeof window === 'undefined' ? null : window;\n    const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n      if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n        return null;\n      }\n      let suffix = null;\n      const ATTR_NAME = 'data-tt-policy-suffix';\n      if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n        suffix = purifyHostElement.getAttribute(ATTR_NAME);\n      }\n      const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n      try {\n        return trustedTypes.createPolicy(policyName, {\n          createHTML(html) {\n            return html;\n          },\n          createScriptURL(scriptUrl) {\n            return scriptUrl;\n          }\n        });\n      } catch (_) {\n        console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n        return null;\n      }\n    };\n    function createDOMPurify() {\n      let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n      const DOMPurify = root => createDOMPurify(root);\n      DOMPurify.version = '3.0.5';\n      DOMPurify.removed = [];\n      if (!window || !window.document || window.document.nodeType !== 9) {\n        DOMPurify.isSupported = false;\n        return DOMPurify;\n      }\n      const originalDocument = window.document;\n      const currentScript = originalDocument.currentScript;\n      let {\n        document\n      } = window;\n      const {\n        DocumentFragment,\n        HTMLTemplateElement,\n        Node,\n        Element,\n        NodeFilter,\n        NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n        HTMLFormElement,\n        DOMParser,\n        trustedTypes\n      } = window;\n      const ElementPrototype = Element.prototype;\n      const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n      const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n      const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n      const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n      if (typeof HTMLTemplateElement === 'function') {\n        const template = document.createElement('template');\n        if (template.content && template.content.ownerDocument) {\n          document = template.content.ownerDocument;\n        }\n      }\n      let trustedTypesPolicy;\n      let emptyHTML = '';\n      const {\n        implementation,\n        createNodeIterator,\n        createDocumentFragment,\n        getElementsByTagName\n      } = document;\n      const {\n        importNode\n      } = originalDocument;\n      let hooks = {};\n      DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n      const {\n        MUSTACHE_EXPR,\n        ERB_EXPR,\n        TMPLIT_EXPR,\n        DATA_ATTR,\n        ARIA_ATTR,\n        IS_SCRIPT_OR_DATA,\n        ATTR_WHITESPACE\n      } = EXPRESSIONS;\n      let {\n        IS_ALLOWED_URI: IS_ALLOWED_URI$1\n      } = EXPRESSIONS;\n      let ALLOWED_TAGS = null;\n      const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n      let ALLOWED_ATTR = null;\n      const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n      let CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n        tagNameCheck: {\n          writable: true,\n          configurable: false,\n          enumerable: true,\n          value: null\n        },\n        attributeNameCheck: {\n          writable: true,\n          configurable: false,\n          enumerable: true,\n          value: null\n        },\n        allowCustomizedBuiltInElements: {\n          writable: true,\n          configurable: false,\n          enumerable: true,\n          value: false\n        }\n      }));\n      let FORBID_TAGS = null;\n      let FORBID_ATTR = null;\n      let ALLOW_ARIA_ATTR = true;\n      let ALLOW_DATA_ATTR = true;\n      let ALLOW_UNKNOWN_PROTOCOLS = false;\n      let ALLOW_SELF_CLOSE_IN_ATTR = true;\n      let SAFE_FOR_TEMPLATES = false;\n      let WHOLE_DOCUMENT = false;\n      let SET_CONFIG = false;\n      let FORCE_BODY = false;\n      let RETURN_DOM = false;\n      let RETURN_DOM_FRAGMENT = false;\n      let RETURN_TRUSTED_TYPE = false;\n      let SANITIZE_DOM = true;\n      let SANITIZE_NAMED_PROPS = false;\n      const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n      let KEEP_CONTENT = true;\n      let IN_PLACE = false;\n      let USE_PROFILES = {};\n      let FORBID_CONTENTS = null;\n      const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n      let DATA_URI_TAGS = null;\n      const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n      let URI_SAFE_ATTRIBUTES = null;\n      const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n      const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n      const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n      const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n      let NAMESPACE = HTML_NAMESPACE;\n      let IS_EMPTY_INPUT = false;\n      let ALLOWED_NAMESPACES = null;\n      const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n      let PARSER_MEDIA_TYPE;\n      const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n      const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n      let transformCaseFunc;\n      let CONFIG = null;\n      const formElement = document.createElement('form');\n      const isRegexOrFunction = function isRegexOrFunction(testValue) {\n        return testValue instanceof RegExp || testValue instanceof Function;\n      };\n      const _parseConfig = function _parseConfig(cfg) {\n        if (CONFIG && CONFIG === cfg) {\n          return;\n        }\n        if (!cfg || typeof cfg !== 'object') {\n          cfg = {};\n        }\n        cfg = clone(cfg);\n        PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n        transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n        ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n        ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n        ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n        URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n        DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n        FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n        FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n        FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n        USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n        ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;\n        ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;\n        ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;\n        ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;\n        SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;\n        WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;\n        RETURN_DOM = cfg.RETURN_DOM || false;\n        RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;\n        RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;\n        FORCE_BODY = cfg.FORCE_BODY || false;\n        SANITIZE_DOM = cfg.SANITIZE_DOM !== false;\n        SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;\n        KEEP_CONTENT = cfg.KEEP_CONTENT !== false;\n        IN_PLACE = cfg.IN_PLACE || false;\n        IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n        NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n        CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n        if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n        }\n        if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n          CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n        }\n        if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n        }\n        if (SAFE_FOR_TEMPLATES) {\n          ALLOW_DATA_ATTR = false;\n        }\n        if (RETURN_DOM_FRAGMENT) {\n          RETURN_DOM = true;\n        }\n        if (USE_PROFILES) {\n          ALLOWED_TAGS = addToSet({}, [...text]);\n          ALLOWED_ATTR = [];\n          if (USE_PROFILES.html === true) {\n            addToSet(ALLOWED_TAGS, html$1);\n            addToSet(ALLOWED_ATTR, html);\n          }\n          if (USE_PROFILES.svg === true) {\n            addToSet(ALLOWED_TAGS, svg$1);\n            addToSet(ALLOWED_ATTR, svg);\n            addToSet(ALLOWED_ATTR, xml);\n          }\n          if (USE_PROFILES.svgFilters === true) {\n            addToSet(ALLOWED_TAGS, svgFilters);\n            addToSet(ALLOWED_ATTR, svg);\n            addToSet(ALLOWED_ATTR, xml);\n          }\n          if (USE_PROFILES.mathMl === true) {\n            addToSet(ALLOWED_TAGS, mathMl$1);\n            addToSet(ALLOWED_ATTR, mathMl);\n            addToSet(ALLOWED_ATTR, xml);\n          }\n        }\n        if (cfg.ADD_TAGS) {\n          if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n            ALLOWED_TAGS = clone(ALLOWED_TAGS);\n          }\n          addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n        }\n        if (cfg.ADD_ATTR) {\n          if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n            ALLOWED_ATTR = clone(ALLOWED_ATTR);\n          }\n          addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n        }\n        if (cfg.ADD_URI_SAFE_ATTR) {\n          addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n        }\n        if (cfg.FORBID_CONTENTS) {\n          if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n            FORBID_CONTENTS = clone(FORBID_CONTENTS);\n          }\n          addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n        }\n        if (KEEP_CONTENT) {\n          ALLOWED_TAGS['#text'] = true;\n        }\n        if (WHOLE_DOCUMENT) {\n          addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n        }\n        if (ALLOWED_TAGS.table) {\n          addToSet(ALLOWED_TAGS, ['tbody']);\n          delete FORBID_TAGS.tbody;\n        }\n        if (cfg.TRUSTED_TYPES_POLICY) {\n          if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n            throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n          }\n          if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n            throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n          }\n          trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n          emptyHTML = trustedTypesPolicy.createHTML('');\n        } else {\n          if (trustedTypesPolicy === undefined) {\n            trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n          }\n          if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n            emptyHTML = trustedTypesPolicy.createHTML('');\n          }\n        }\n        if (freeze) {\n          freeze(cfg);\n        }\n        CONFIG = cfg;\n      };\n      const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n      const HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n      const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n      const ALL_SVG_TAGS = addToSet({}, svg$1);\n      addToSet(ALL_SVG_TAGS, svgFilters);\n      addToSet(ALL_SVG_TAGS, svgDisallowed);\n      const ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n      addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n      const _checkValidNamespace = function _checkValidNamespace(element) {\n        let parent = getParentNode(element);\n        if (!parent || !parent.tagName) {\n          parent = {\n            namespaceURI: NAMESPACE,\n            tagName: 'template'\n          };\n        }\n        const tagName = stringToLowerCase(element.tagName);\n        const parentTagName = stringToLowerCase(parent.tagName);\n        if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n          return false;\n        }\n        if (element.namespaceURI === SVG_NAMESPACE) {\n          if (parent.namespaceURI === HTML_NAMESPACE) {\n            return tagName === 'svg';\n          }\n          if (parent.namespaceURI === MATHML_NAMESPACE) {\n            return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n          }\n          return Boolean(ALL_SVG_TAGS[tagName]);\n        }\n        if (element.namespaceURI === MATHML_NAMESPACE) {\n          if (parent.namespaceURI === HTML_NAMESPACE) {\n            return tagName === 'math';\n          }\n          if (parent.namespaceURI === SVG_NAMESPACE) {\n            return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n          }\n          return Boolean(ALL_MATHML_TAGS[tagName]);\n        }\n        if (element.namespaceURI === HTML_NAMESPACE) {\n          if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n            return false;\n          }\n          if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n            return false;\n          }\n          return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n        }\n        if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n          return true;\n        }\n        return false;\n      };\n      const _forceRemove = function _forceRemove(node) {\n        arrayPush(DOMPurify.removed, {\n          element: node\n        });\n        try {\n          node.parentNode.removeChild(node);\n        } catch (_) {\n          node.remove();\n        }\n      };\n      const _removeAttribute = function _removeAttribute(name, node) {\n        try {\n          arrayPush(DOMPurify.removed, {\n            attribute: node.getAttributeNode(name),\n            from: node\n          });\n        } catch (_) {\n          arrayPush(DOMPurify.removed, {\n            attribute: null,\n            from: node\n          });\n        }\n        node.removeAttribute(name);\n        if (name === 'is' && !ALLOWED_ATTR[name]) {\n          if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n            try {\n              _forceRemove(node);\n            } catch (_) {}\n          } else {\n            try {\n              node.setAttribute(name, '');\n            } catch (_) {}\n          }\n        }\n      };\n      const _initDocument = function _initDocument(dirty) {\n        let doc;\n        let leadingWhitespace;\n        if (FORCE_BODY) {\n          dirty = '<remove></remove>' + dirty;\n        } else {\n          const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n          leadingWhitespace = matches && matches[0];\n        }\n        if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n          dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n        }\n        const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n        if (NAMESPACE === HTML_NAMESPACE) {\n          try {\n            doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n          } catch (_) {}\n        }\n        if (!doc || !doc.documentElement) {\n          doc = implementation.createDocument(NAMESPACE, 'template', null);\n          try {\n            doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n          } catch (_) {}\n        }\n        const body = doc.body || doc.documentElement;\n        if (dirty && leadingWhitespace) {\n          body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n        }\n        if (NAMESPACE === HTML_NAMESPACE) {\n          return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n        }\n        return WHOLE_DOCUMENT ? doc.documentElement : body;\n      };\n      const _createIterator = function _createIterator(root) {\n        return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n      };\n      const _isClobbered = function _isClobbered(elm) {\n        return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n      };\n      const _isNode = function _isNode(object) {\n        return typeof Node === 'object' ? object instanceof Node : object && typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n      };\n      const _executeHook = function _executeHook(entryPoint, currentNode, data) {\n        if (!hooks[entryPoint]) {\n          return;\n        }\n        arrayForEach(hooks[entryPoint], hook => {\n          hook.call(DOMPurify, currentNode, data, CONFIG);\n        });\n      };\n      const _sanitizeElements = function _sanitizeElements(currentNode) {\n        let content;\n        _executeHook('beforeSanitizeElements', currentNode, null);\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n        const tagName = transformCaseFunc(currentNode.nodeName);\n        _executeHook('uponSanitizeElement', currentNode, {\n          tagName,\n          allowedTags: ALLOWED_TAGS\n        });\n        if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n            if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n            if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n          }\n          if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n            const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n            const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n            if (childNodes && parentNode) {\n              const childCount = childNodes.length;\n              for (let i = childCount - 1; i >= 0; --i) {\n                parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n              }\n            }\n          }\n          _forceRemove(currentNode);\n          return true;\n        }\n        if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n        if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n        if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n          content = currentNode.textContent;\n          content = stringReplace(content, MUSTACHE_EXPR, ' ');\n          content = stringReplace(content, ERB_EXPR, ' ');\n          content = stringReplace(content, TMPLIT_EXPR, ' ');\n          if (currentNode.textContent !== content) {\n            arrayPush(DOMPurify.removed, {\n              element: currentNode.cloneNode()\n            });\n            currentNode.textContent = content;\n          }\n        }\n        _executeHook('afterSanitizeElements', currentNode, null);\n        return false;\n      };\n      const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n        if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n          return false;\n        }\n        if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ;else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ;else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n          if (_basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ;else {\n            return false;\n          }\n        } else if (URI_SAFE_ATTRIBUTES[lcName]) ;else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ;else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ;else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ;else if (value) {\n          return false;\n        } else ;\n        return true;\n      };\n      const _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n        return tagName.indexOf('-') > 0;\n      };\n      const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n        let attr;\n        let value;\n        let lcName;\n        let l;\n        _executeHook('beforeSanitizeAttributes', currentNode, null);\n        const {\n          attributes\n        } = currentNode;\n        if (!attributes) {\n          return;\n        }\n        const hookEvent = {\n          attrName: '',\n          attrValue: '',\n          keepAttr: true,\n          allowedAttributes: ALLOWED_ATTR\n        };\n        l = attributes.length;\n        while (l--) {\n          attr = attributes[l];\n          const {\n            name,\n            namespaceURI\n          } = attr;\n          value = name === 'value' ? attr.value : stringTrim(attr.value);\n          const initValue = value;\n          lcName = transformCaseFunc(name);\n          hookEvent.attrName = lcName;\n          hookEvent.attrValue = value;\n          hookEvent.keepAttr = true;\n          hookEvent.forceKeepAttr = undefined;\n          _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n          value = hookEvent.attrValue;\n          if (hookEvent.forceKeepAttr) {\n            continue;\n          }\n          if (!hookEvent.keepAttr) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n          if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n          if (SAFE_FOR_TEMPLATES) {\n            value = stringReplace(value, MUSTACHE_EXPR, ' ');\n            value = stringReplace(value, ERB_EXPR, ' ');\n            value = stringReplace(value, TMPLIT_EXPR, ' ');\n          }\n          const lcTag = transformCaseFunc(currentNode.nodeName);\n          if (!_isValidAttribute(lcTag, lcName, value)) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n          if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n            _removeAttribute(name, currentNode);\n            value = SANITIZE_NAMED_PROPS_PREFIX + value;\n          }\n          if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n            if (namespaceURI) ;else {\n              switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n                case 'TrustedHTML':\n                  {\n                    value = trustedTypesPolicy.createHTML(value);\n                    break;\n                  }\n                case 'TrustedScriptURL':\n                  {\n                    value = trustedTypesPolicy.createScriptURL(value);\n                    break;\n                  }\n              }\n            }\n          }\n          if (value !== initValue) {\n            try {\n              if (namespaceURI) {\n                currentNode.setAttributeNS(namespaceURI, name, value);\n              } else {\n                currentNode.setAttribute(name, value);\n              }\n            } catch (_) {\n              _removeAttribute(name, currentNode);\n            }\n          }\n        }\n        _executeHook('afterSanitizeAttributes', currentNode, null);\n      };\n      const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n        let shadowNode;\n        const shadowIterator = _createIterator(fragment);\n        _executeHook('beforeSanitizeShadowDOM', fragment, null);\n        while (shadowNode = shadowIterator.nextNode()) {\n          _executeHook('uponSanitizeShadowNode', shadowNode, null);\n          if (_sanitizeElements(shadowNode)) {\n            continue;\n          }\n          if (shadowNode.content instanceof DocumentFragment) {\n            _sanitizeShadowDOM(shadowNode.content);\n          }\n          _sanitizeAttributes(shadowNode);\n        }\n        _executeHook('afterSanitizeShadowDOM', fragment, null);\n      };\n      DOMPurify.sanitize = function (dirty) {\n        let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        let body;\n        let importedNode;\n        let currentNode;\n        let returnNode;\n        IS_EMPTY_INPUT = !dirty;\n        if (IS_EMPTY_INPUT) {\n          dirty = '<!-->';\n        }\n        if (typeof dirty !== 'string' && !_isNode(dirty)) {\n          if (typeof dirty.toString === 'function') {\n            dirty = dirty.toString();\n            if (typeof dirty !== 'string') {\n              throw typeErrorCreate('dirty is not a string, aborting');\n            }\n          } else {\n            throw typeErrorCreate('toString is not a function');\n          }\n        }\n        if (!DOMPurify.isSupported) {\n          return dirty;\n        }\n        if (!SET_CONFIG) {\n          _parseConfig(cfg);\n        }\n        DOMPurify.removed = [];\n        if (typeof dirty === 'string') {\n          IN_PLACE = false;\n        }\n        if (IN_PLACE) {\n          if (dirty.nodeName) {\n            const tagName = transformCaseFunc(dirty.nodeName);\n            if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n              throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n            }\n          }\n        } else if (dirty instanceof Node) {\n          body = _initDocument('<!---->');\n          importedNode = body.ownerDocument.importNode(dirty, true);\n          if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n            body = importedNode;\n          } else if (importedNode.nodeName === 'HTML') {\n            body = importedNode;\n          } else {\n            body.appendChild(importedNode);\n          }\n        } else {\n          if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf('<') === -1) {\n            return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n          }\n          body = _initDocument(dirty);\n          if (!body) {\n            return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n          }\n        }\n        if (body && FORCE_BODY) {\n          _forceRemove(body.firstChild);\n        }\n        const nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n        while (currentNode = nodeIterator.nextNode()) {\n          if (_sanitizeElements(currentNode)) {\n            continue;\n          }\n          if (currentNode.content instanceof DocumentFragment) {\n            _sanitizeShadowDOM(currentNode.content);\n          }\n          _sanitizeAttributes(currentNode);\n        }\n        if (IN_PLACE) {\n          return dirty;\n        }\n        if (RETURN_DOM) {\n          if (RETURN_DOM_FRAGMENT) {\n            returnNode = createDocumentFragment.call(body.ownerDocument);\n            while (body.firstChild) {\n              returnNode.appendChild(body.firstChild);\n            }\n          } else {\n            returnNode = body;\n          }\n          if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n            returnNode = importNode.call(originalDocument, returnNode, true);\n          }\n          return returnNode;\n        }\n        let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n        if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n          serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n        }\n        if (SAFE_FOR_TEMPLATES) {\n          serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR, ' ');\n          serializedHTML = stringReplace(serializedHTML, ERB_EXPR, ' ');\n          serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR, ' ');\n        }\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n      };\n      DOMPurify.setConfig = function (cfg) {\n        _parseConfig(cfg);\n        SET_CONFIG = true;\n      };\n      DOMPurify.clearConfig = function () {\n        CONFIG = null;\n        SET_CONFIG = false;\n      };\n      DOMPurify.isValidAttribute = function (tag, attr, value) {\n        if (!CONFIG) {\n          _parseConfig({});\n        }\n        const lcTag = transformCaseFunc(tag);\n        const lcName = transformCaseFunc(attr);\n        return _isValidAttribute(lcTag, lcName, value);\n      };\n      DOMPurify.addHook = function (entryPoint, hookFunction) {\n        if (typeof hookFunction !== 'function') {\n          return;\n        }\n        hooks[entryPoint] = hooks[entryPoint] || [];\n        arrayPush(hooks[entryPoint], hookFunction);\n      };\n      DOMPurify.removeHook = function (entryPoint) {\n        if (hooks[entryPoint]) {\n          return arrayPop(hooks[entryPoint]);\n        }\n      };\n      DOMPurify.removeHooks = function (entryPoint) {\n        if (hooks[entryPoint]) {\n          hooks[entryPoint] = [];\n        }\n      };\n      DOMPurify.removeAllHooks = function () {\n        hooks = {};\n      };\n      return DOMPurify;\n    }\n    var purify = createDOMPurify();\n\n    const each$4 = Tools.each,\n      trim = Tools.trim;\n    const queryParts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'];\n    const DEFAULT_PORTS = {\n      ftp: 21,\n      http: 80,\n      https: 443,\n      mailto: 25\n    };\n    const safeSvgDataUrlElements = ['img', 'video'];\n    const blockSvgDataUris = (allowSvgDataUrls, tagName) => {\n      if (isNonNullable(allowSvgDataUrls)) {\n        return !allowSvgDataUrls;\n      } else {\n        return isNonNullable(tagName) ? !contains$2(safeSvgDataUrlElements, tagName) : true;\n      }\n    };\n    const decodeUri = encodedUri => {\n      try {\n        return decodeURIComponent(encodedUri);\n      } catch (ex) {\n        return unescape(encodedUri);\n      }\n    };\n    const isInvalidUri = (settings, uri, tagName) => {\n      const decodedUri = decodeUri(uri).replace(/\\s/g, '');\n      if (settings.allow_script_urls) {\n        return false;\n      } else if (/^((java|vb)script|mhtml):/i.test(decodedUri)) {\n        return true;\n      } else if (settings.allow_html_data_urls) {\n        return false;\n      } else if (/^data:image\\//i.test(decodedUri)) {\n        return blockSvgDataUris(settings.allow_svg_data_urls, tagName) && /^data:image\\/svg\\+xml/i.test(decodedUri);\n      } else {\n        return /^data:/i.test(decodedUri);\n      }\n    };\n    class URI {\n      static parseDataUri(uri) {\n        let type;\n        const uriComponents = decodeURIComponent(uri).split(',');\n        const matches = /data:([^;]+)/.exec(uriComponents[0]);\n        if (matches) {\n          type = matches[1];\n        }\n        return {\n          type,\n          data: uriComponents[1]\n        };\n      }\n      static isDomSafe(uri, context, options = {}) {\n        if (options.allow_script_urls) {\n          return true;\n        } else {\n          const decodedUri = Entities.decode(uri).replace(/[\\s\\u0000-\\u001F]+/g, '');\n          return !isInvalidUri(options, decodedUri, context);\n        }\n      }\n      static getDocumentBaseUrl(loc) {\n        var _a;\n        let baseUrl;\n        if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') {\n          baseUrl = (_a = loc.href) !== null && _a !== void 0 ? _a : '';\n        } else {\n          baseUrl = loc.protocol + '//' + loc.host + loc.pathname;\n        }\n        if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(baseUrl)) {\n          baseUrl = baseUrl.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n          if (!/[\\/\\\\]$/.test(baseUrl)) {\n            baseUrl += '/';\n          }\n        }\n        return baseUrl;\n      }\n      constructor(url, settings = {}) {\n        this.path = '';\n        this.directory = '';\n        url = trim(url);\n        this.settings = settings;\n        const baseUri = settings.base_uri;\n        const self = this;\n        if (/^([\\w\\-]+):([^\\/]{2})/i.test(url) || /^\\s*#/.test(url)) {\n          self.source = url;\n          return;\n        }\n        const isProtocolRelative = url.indexOf('//') === 0;\n        if (url.indexOf('/') === 0 && !isProtocolRelative) {\n          url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;\n        }\n        if (!/^[\\w\\-]*:?\\/\\//.test(url)) {\n          const baseUrl = baseUri ? baseUri.path : new URI(document.location.href).directory;\n          if ((baseUri === null || baseUri === void 0 ? void 0 : baseUri.protocol) === '') {\n            url = '//mce_host' + self.toAbsPath(baseUrl, url);\n          } else {\n            const match = /([^#?]*)([#?]?.*)/.exec(url);\n            if (match) {\n              url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self.toAbsPath(baseUrl, match[1]) + match[2];\n            }\n          }\n        }\n        url = url.replace(/@@/g, '(mce_at)');\n        const urlMatch = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@\\/]*):?([^:@\\/]*))?@)?(\\[[a-zA-Z0-9:.%]+\\]|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(url);\n        if (urlMatch) {\n          each$4(queryParts, (v, i) => {\n            let part = urlMatch[i];\n            if (part) {\n              part = part.replace(/\\(mce_at\\)/g, '@@');\n            }\n            self[v] = part;\n          });\n        }\n        if (baseUri) {\n          if (!self.protocol) {\n            self.protocol = baseUri.protocol;\n          }\n          if (!self.userInfo) {\n            self.userInfo = baseUri.userInfo;\n          }\n          if (!self.port && self.host === 'mce_host') {\n            self.port = baseUri.port;\n          }\n          if (!self.host || self.host === 'mce_host') {\n            self.host = baseUri.host;\n          }\n          self.source = '';\n        }\n        if (isProtocolRelative) {\n          self.protocol = '';\n        }\n      }\n      setPath(path) {\n        const pathMatch = /^(.*?)\\/?(\\w+)?$/.exec(path);\n        if (pathMatch) {\n          this.path = pathMatch[0];\n          this.directory = pathMatch[1];\n          this.file = pathMatch[2];\n        }\n        this.source = '';\n        this.getURI();\n      }\n      toRelative(uri) {\n        if (uri === './') {\n          return uri;\n        }\n        const relativeUri = new URI(uri, {\n          base_uri: this\n        });\n        if (relativeUri.host !== 'mce_host' && this.host !== relativeUri.host && relativeUri.host || this.port !== relativeUri.port || this.protocol !== relativeUri.protocol && relativeUri.protocol !== '') {\n          return relativeUri.getURI();\n        }\n        const tu = this.getURI(),\n          uu = relativeUri.getURI();\n        if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) {\n          return tu;\n        }\n        let output = this.toRelPath(this.path, relativeUri.path);\n        if (relativeUri.query) {\n          output += '?' + relativeUri.query;\n        }\n        if (relativeUri.anchor) {\n          output += '#' + relativeUri.anchor;\n        }\n        return output;\n      }\n      toAbsolute(uri, noHost) {\n        const absoluteUri = new URI(uri, {\n          base_uri: this\n        });\n        return absoluteUri.getURI(noHost && this.isSameOrigin(absoluteUri));\n      }\n      isSameOrigin(uri) {\n        if (this.host == uri.host && this.protocol == uri.protocol) {\n          if (this.port == uri.port) {\n            return true;\n          }\n          const defaultPort = this.protocol ? DEFAULT_PORTS[this.protocol] : null;\n          if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) {\n            return true;\n          }\n        }\n        return false;\n      }\n      toRelPath(base, path) {\n        let breakPoint = 0,\n          out = '',\n          i,\n          l;\n        const normalizedBase = base.substring(0, base.lastIndexOf('/')).split('/');\n        const items = path.split('/');\n        if (normalizedBase.length >= items.length) {\n          for (i = 0, l = normalizedBase.length; i < l; i++) {\n            if (i >= items.length || normalizedBase[i] !== items[i]) {\n              breakPoint = i + 1;\n              break;\n            }\n          }\n        }\n        if (normalizedBase.length < items.length) {\n          for (i = 0, l = items.length; i < l; i++) {\n            if (i >= normalizedBase.length || normalizedBase[i] !== items[i]) {\n              breakPoint = i + 1;\n              break;\n            }\n          }\n        }\n        if (breakPoint === 1) {\n          return path;\n        }\n        for (i = 0, l = normalizedBase.length - (breakPoint - 1); i < l; i++) {\n          out += '../';\n        }\n        for (i = breakPoint - 1, l = items.length; i < l; i++) {\n          if (i !== breakPoint - 1) {\n            out += '/' + items[i];\n          } else {\n            out += items[i];\n          }\n        }\n        return out;\n      }\n      toAbsPath(base, path) {\n        let nb = 0;\n        const tr = /\\/$/.test(path) ? '/' : '';\n        const normalizedBase = base.split('/');\n        const normalizedPath = path.split('/');\n        const baseParts = [];\n        each$4(normalizedBase, k => {\n          if (k) {\n            baseParts.push(k);\n          }\n        });\n        const pathParts = [];\n        for (let i = normalizedPath.length - 1; i >= 0; i--) {\n          if (normalizedPath[i].length === 0 || normalizedPath[i] === '.') {\n            continue;\n          }\n          if (normalizedPath[i] === '..') {\n            nb++;\n            continue;\n          }\n          if (nb > 0) {\n            nb--;\n            continue;\n          }\n          pathParts.push(normalizedPath[i]);\n        }\n        const i = baseParts.length - nb;\n        let outPath;\n        if (i <= 0) {\n          outPath = reverse(pathParts).join('/');\n        } else {\n          outPath = baseParts.slice(0, i).join('/') + '/' + reverse(pathParts).join('/');\n        }\n        if (outPath.indexOf('/') !== 0) {\n          outPath = '/' + outPath;\n        }\n        if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {\n          outPath += tr;\n        }\n        return outPath;\n      }\n      getURI(noProtoHost = false) {\n        let s;\n        if (!this.source || noProtoHost) {\n          s = '';\n          if (!noProtoHost) {\n            if (this.protocol) {\n              s += this.protocol + '://';\n            } else {\n              s += '//';\n            }\n            if (this.userInfo) {\n              s += this.userInfo + '@';\n            }\n            if (this.host) {\n              s += this.host;\n            }\n            if (this.port) {\n              s += ':' + this.port;\n            }\n          }\n          if (this.path) {\n            s += this.path;\n          }\n          if (this.query) {\n            s += '?' + this.query;\n          }\n          if (this.anchor) {\n            s += '#' + this.anchor;\n          }\n          this.source = s;\n        }\n        return this.source;\n      }\n    }\n\n    const filteredUrlAttrs = Tools.makeMap('src,href,data,background,action,formaction,poster,xlink:href');\n    const internalElementAttr = 'data-mce-type';\n    let uid = 0;\n    const processNode = (node, settings, schema, scope, evt) => {\n      var _a, _b, _c, _d;\n      const validate = settings.validate;\n      const specialElements = schema.getSpecialElements();\n      if (node.nodeType === COMMENT && !settings.allow_conditional_comments && /^\\[if/i.test((_a = node.nodeValue) !== null && _a !== void 0 ? _a : '')) {\n        node.nodeValue = ' ' + node.nodeValue;\n      }\n      const lcTagName = (_b = evt === null || evt === void 0 ? void 0 : evt.tagName) !== null && _b !== void 0 ? _b : node.nodeName.toLowerCase();\n      if (scope !== 'html' && schema.isValid(scope)) {\n        if (isNonNullable(evt)) {\n          evt.allowedTags[lcTagName] = true;\n        }\n        return;\n      }\n      if (node.nodeType !== ELEMENT || lcTagName === 'body') {\n        return;\n      }\n      const element = SugarElement.fromDom(node);\n      const isInternalElement = has$1(element, internalElementAttr);\n      const bogus = get$9(element, 'data-mce-bogus');\n      if (!isInternalElement && isString(bogus)) {\n        if (bogus === 'all') {\n          remove$5(element);\n        } else {\n          unwrap(element);\n        }\n        return;\n      }\n      const rule = schema.getElementRule(lcTagName);\n      if (validate && !rule) {\n        if (has$2(specialElements, lcTagName)) {\n          remove$5(element);\n        } else {\n          unwrap(element);\n        }\n        return;\n      } else {\n        if (isNonNullable(evt)) {\n          evt.allowedTags[lcTagName] = true;\n        }\n      }\n      if (validate && rule && !isInternalElement) {\n        each$e((_c = rule.attributesForced) !== null && _c !== void 0 ? _c : [], attr => {\n          set$3(element, attr.name, attr.value === '{$uid}' ? \"mce_\".concat(uid++) : attr.value);\n        });\n        each$e((_d = rule.attributesDefault) !== null && _d !== void 0 ? _d : [], attr => {\n          if (!has$1(element, attr.name)) {\n            set$3(element, attr.name, attr.value === '{$uid}' ? \"mce_\".concat(uid++) : attr.value);\n          }\n        });\n        if (rule.attributesRequired && !exists(rule.attributesRequired, attr => has$1(element, attr))) {\n          unwrap(element);\n          return;\n        }\n        if (rule.removeEmptyAttrs && hasNone(element)) {\n          unwrap(element);\n          return;\n        }\n        if (rule.outputName && rule.outputName !== lcTagName) {\n          mutate(element, rule.outputName);\n        }\n      }\n    };\n    const processAttr = (ele, settings, schema, scope, evt) => {\n      const tagName = ele.tagName.toLowerCase();\n      const {\n        attrName,\n        attrValue\n      } = evt;\n      evt.keepAttr = shouldKeepAttribute(settings, schema, scope, tagName, attrName, attrValue);\n      if (evt.keepAttr) {\n        evt.allowedAttributes[attrName] = true;\n        if (isBooleanAttribute(attrName, schema)) {\n          evt.attrValue = attrName;\n        }\n        if (settings.allow_svg_data_urls && startsWith(attrValue, 'data:image/svg+xml')) {\n          evt.forceKeepAttr = true;\n        }\n      } else if (isRequiredAttributeOfInternalElement(ele, attrName)) {\n        evt.forceKeepAttr = true;\n      }\n    };\n    const shouldKeepAttribute = (settings, schema, scope, tagName, attrName, attrValue) => {\n      if (scope !== 'html' && !isNonHtmlElementRootName(tagName)) {\n        return true;\n      }\n      return !(attrName in filteredUrlAttrs && isInvalidUri(settings, attrValue, tagName)) && (!settings.validate || schema.isValid(tagName, attrName) || startsWith(attrName, 'data-') || startsWith(attrName, 'aria-'));\n    };\n    const isRequiredAttributeOfInternalElement = (ele, attrName) => ele.hasAttribute(internalElementAttr) && (attrName === 'id' || attrName === 'class' || attrName === 'style');\n    const isBooleanAttribute = (attrName, schema) => attrName in schema.getBoolAttrs();\n    const filterAttributes = (ele, settings, schema, scope) => {\n      const {\n        attributes\n      } = ele;\n      for (let i = attributes.length - 1; i >= 0; i--) {\n        const attr = attributes[i];\n        const attrName = attr.name;\n        const attrValue = attr.value;\n        if (!shouldKeepAttribute(settings, schema, scope, ele.tagName.toLowerCase(), attrName, attrValue) && !isRequiredAttributeOfInternalElement(ele, attrName)) {\n          ele.removeAttribute(attrName);\n        } else if (isBooleanAttribute(attrName, schema)) {\n          ele.setAttribute(attrName, attrName);\n        }\n      }\n    };\n    const setupPurify = (settings, schema, namespaceTracker) => {\n      const purify$1 = purify();\n      purify$1.addHook('uponSanitizeElement', (ele, evt) => {\n        processNode(ele, settings, schema, namespaceTracker.track(ele), evt);\n      });\n      purify$1.addHook('uponSanitizeAttribute', (ele, evt) => {\n        processAttr(ele, settings, schema, namespaceTracker.current(), evt);\n      });\n      return purify$1;\n    };\n    const getPurifyConfig = (settings, mimeType) => {\n      const basePurifyConfig = {\n        IN_PLACE: true,\n        ALLOW_UNKNOWN_PROTOCOLS: true,\n        ALLOWED_TAGS: ['#comment', '#cdata-section', 'body'],\n        ALLOWED_ATTR: []\n      };\n      const config = {\n        ...basePurifyConfig\n      };\n      config.PARSER_MEDIA_TYPE = mimeType;\n      if (settings.allow_script_urls) {\n        config.ALLOWED_URI_REGEXP = /.*/;\n      } else if (settings.allow_html_data_urls) {\n        config.ALLOWED_URI_REGEXP = /^(?!(\\w+script|mhtml):)/i;\n      }\n      return config;\n    };\n    const sanitizeNamespaceElement = ele => {\n      const xlinkAttrs = ['type', 'href', 'role', 'arcrole', 'title', 'show', 'actuate', 'label', 'from', 'to'].map(name => \"xlink:\".concat(name));\n      const config = {\n        IN_PLACE: true,\n        USE_PROFILES: {\n          html: true,\n          svg: true,\n          svgFilters: true\n        },\n        ALLOWED_ATTR: xlinkAttrs\n      };\n      purify().sanitize(ele, config);\n      return ele.innerHTML;\n    };\n    const getSanitizer = (settings, schema) => {\n      const namespaceTracker = createNamespaceTracker();\n      if (settings.sanitize) {\n        const purify = setupPurify(settings, schema, namespaceTracker);\n        const sanitizeHtmlElement = (body, mimeType) => {\n          purify.sanitize(body, getPurifyConfig(settings, mimeType));\n          purify.removed = [];\n          namespaceTracker.reset();\n        };\n        return {\n          sanitizeHtmlElement,\n          sanitizeNamespaceElement\n        };\n      } else {\n        const sanitizeHtmlElement = (body, _mimeType) => {\n          const nodeIterator = document.createNodeIterator(body, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT);\n          let node;\n          while (node = nodeIterator.nextNode()) {\n            const currentScope = namespaceTracker.track(node);\n            processNode(node, settings, schema, currentScope);\n            if (isElement$6(node)) {\n              filterAttributes(node, settings, schema, currentScope);\n            }\n          }\n          namespaceTracker.reset();\n        };\n        const sanitizeNamespaceElement = noop;\n        return {\n          sanitizeHtmlElement,\n          sanitizeNamespaceElement\n        };\n      }\n    };\n\n    const makeMap = Tools.makeMap,\n      extend$1 = Tools.extend;\n    const transferChildren = (parent, nativeParent, specialElements, nsSanitizer) => {\n      const parentName = parent.name;\n      const isSpecial = parentName in specialElements && parentName !== 'title' && parentName !== 'textarea' && parentName !== 'noscript';\n      const childNodes = nativeParent.childNodes;\n      for (let ni = 0, nl = childNodes.length; ni < nl; ni++) {\n        const nativeChild = childNodes[ni];\n        const child = new AstNode(nativeChild.nodeName.toLowerCase(), nativeChild.nodeType);\n        if (isElement$6(nativeChild)) {\n          const attributes = nativeChild.attributes;\n          for (let ai = 0, al = attributes.length; ai < al; ai++) {\n            const attr = attributes[ai];\n            child.attr(attr.name, attr.value);\n          }\n          if (isNonHtmlElementRootName(child.name)) {\n            nsSanitizer(nativeChild);\n            child.value = nativeChild.innerHTML;\n          }\n        } else if (isText$a(nativeChild)) {\n          child.value = nativeChild.data;\n          if (isSpecial) {\n            child.raw = true;\n          }\n        } else if (isComment(nativeChild) || isCData(nativeChild) || isPi(nativeChild)) {\n          child.value = nativeChild.data;\n        }\n        if (!isNonHtmlElementRootName(child.name)) {\n          transferChildren(child, nativeChild, specialElements, nsSanitizer);\n        }\n        parent.append(child);\n      }\n    };\n    const walkTree = (root, preprocessors, postprocessors) => {\n      const traverseOrder = [];\n      for (let node = root, lastNode = node; node; lastNode = node, node = node.walk()) {\n        const tempNode = node;\n        each$e(preprocessors, preprocess => preprocess(tempNode));\n        if (isNullable(tempNode.parent) && tempNode !== root) {\n          node = lastNode;\n        } else {\n          traverseOrder.push(tempNode);\n        }\n      }\n      for (let i = traverseOrder.length - 1; i >= 0; i--) {\n        const node = traverseOrder[i];\n        each$e(postprocessors, postprocess => postprocess(node));\n      }\n    };\n    const whitespaceCleaner = (root, schema, settings, args) => {\n      const validate = settings.validate;\n      const nonEmptyElements = schema.getNonEmptyElements();\n      const whitespaceElements = schema.getWhitespaceElements();\n      const blockElements = extend$1(makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\n      const textRootBlockElements = getTextRootBlockElements(schema);\n      const allWhiteSpaceRegExp = /[ \\t\\r\\n]+/g;\n      const startWhiteSpaceRegExp = /^[ \\t\\r\\n]+/;\n      const endWhiteSpaceRegExp = /[ \\t\\r\\n]+$/;\n      const hasWhitespaceParent = node => {\n        let tempNode = node.parent;\n        while (isNonNullable(tempNode)) {\n          if (tempNode.name in whitespaceElements) {\n            return true;\n          } else {\n            tempNode = tempNode.parent;\n          }\n        }\n        return false;\n      };\n      const isTextRootBlockEmpty = node => {\n        let tempNode = node;\n        while (isNonNullable(tempNode)) {\n          if (tempNode.name in textRootBlockElements) {\n            return isEmpty(schema, nonEmptyElements, whitespaceElements, tempNode);\n          } else {\n            tempNode = tempNode.parent;\n          }\n        }\n        return false;\n      };\n      const isBlock = node => node.name in blockElements || isTransparentAstBlock(schema, node) || isNonHtmlElementRootName(node.name) && node.parent === root;\n      const isAtEdgeOfBlock = (node, start) => {\n        const neighbour = start ? node.prev : node.next;\n        if (isNonNullable(neighbour) || isNullable(node.parent)) {\n          return false;\n        }\n        return isBlock(node.parent) && (node.parent !== root || args.isRootContent === true);\n      };\n      const preprocess = node => {\n        var _a;\n        if (node.type === 3) {\n          if (!hasWhitespaceParent(node)) {\n            let text = (_a = node.value) !== null && _a !== void 0 ? _a : '';\n            text = text.replace(allWhiteSpaceRegExp, ' ');\n            if (isLineBreakNode(node.prev, isBlock) || isAtEdgeOfBlock(node, true)) {\n              text = text.replace(startWhiteSpaceRegExp, '');\n            }\n            if (text.length === 0) {\n              node.remove();\n            } else {\n              node.value = text;\n            }\n          }\n        }\n      };\n      const postprocess = node => {\n        var _a;\n        if (node.type === 1) {\n          const elementRule = schema.getElementRule(node.name);\n          if (validate && elementRule) {\n            const isNodeEmpty = isEmpty(schema, nonEmptyElements, whitespaceElements, node);\n            if (elementRule.paddInEmptyBlock && isNodeEmpty && isTextRootBlockEmpty(node)) {\n              paddEmptyNode(settings, args, isBlock, node);\n            } else if (elementRule.removeEmpty && isNodeEmpty) {\n              if (isBlock(node)) {\n                node.remove();\n              } else {\n                node.unwrap();\n              }\n            } else if (elementRule.paddEmpty && (isNodeEmpty || isPaddedWithNbsp(node))) {\n              paddEmptyNode(settings, args, isBlock, node);\n            }\n          }\n        } else if (node.type === 3) {\n          if (!hasWhitespaceParent(node)) {\n            let text = (_a = node.value) !== null && _a !== void 0 ? _a : '';\n            if (node.next && isBlock(node.next) || isAtEdgeOfBlock(node, false)) {\n              text = text.replace(endWhiteSpaceRegExp, '');\n            }\n            if (text.length === 0) {\n              node.remove();\n            } else {\n              node.value = text;\n            }\n          }\n        }\n      };\n      return [preprocess, postprocess];\n    };\n    const getRootBlockName = (settings, args) => {\n      var _a;\n      const name = (_a = args.forced_root_block) !== null && _a !== void 0 ? _a : settings.forced_root_block;\n      if (name === false) {\n        return '';\n      } else if (name === true) {\n        return 'p';\n      } else {\n        return name;\n      }\n    };\n    const DomParser = (settings = {}, schema = Schema()) => {\n      const nodeFilterRegistry = create$8();\n      const attributeFilterRegistry = create$8();\n      const defaultedSettings = {\n        validate: true,\n        root_name: 'body',\n        sanitize: true,\n        ...settings\n      };\n      const parser = new DOMParser();\n      const sanitizer = getSanitizer(defaultedSettings, schema);\n      const parseAndSanitizeWithContext = (html, rootName, format = 'html') => {\n        const mimeType = format === 'xhtml' ? 'application/xhtml+xml' : 'text/html';\n        const isSpecialRoot = has$2(schema.getSpecialElements(), rootName.toLowerCase());\n        const content = isSpecialRoot ? \"<\".concat(rootName, \">\").concat(html, \"</\").concat(rootName, \">\") : html;\n        const wrappedHtml = format === 'xhtml' ? \"<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\"><head></head><body>\".concat(content, \"</body></html>\") : \"<body>\".concat(content, \"</body>\");\n        const body = parser.parseFromString(wrappedHtml, mimeType).body;\n        sanitizer.sanitizeHtmlElement(body, mimeType);\n        return isSpecialRoot ? body.firstChild : body;\n      };\n      const addNodeFilter = nodeFilterRegistry.addFilter;\n      const getNodeFilters = nodeFilterRegistry.getFilters;\n      const removeNodeFilter = nodeFilterRegistry.removeFilter;\n      const addAttributeFilter = attributeFilterRegistry.addFilter;\n      const getAttributeFilters = attributeFilterRegistry.getFilters;\n      const removeAttributeFilter = attributeFilterRegistry.removeFilter;\n      const findInvalidChildren = (node, invalidChildren) => {\n        if (isInvalid(schema, node)) {\n          invalidChildren.push(node);\n        }\n      };\n      const isWrappableNode = (blockElements, node) => {\n        const isInternalElement = isString(node.attr(internalElementAttr));\n        const isInlineElement = node.type === 1 && !has$2(blockElements, node.name) && !isTransparentAstBlock(schema, node) && !isNonHtmlElementRootName(node.name);\n        return node.type === 3 || isInlineElement && !isInternalElement;\n      };\n      const addRootBlocks = (rootNode, rootBlockName) => {\n        const blockElements = extend$1(makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\n        const startWhiteSpaceRegExp = /^[ \\t\\r\\n]+/;\n        const endWhiteSpaceRegExp = /[ \\t\\r\\n]+$/;\n        let node = rootNode.firstChild,\n          rootBlockNode = null;\n        const trim = rootBlock => {\n          var _a, _b;\n          if (rootBlock) {\n            node = rootBlock.firstChild;\n            if (node && node.type === 3) {\n              node.value = (_a = node.value) === null || _a === void 0 ? void 0 : _a.replace(startWhiteSpaceRegExp, '');\n            }\n            node = rootBlock.lastChild;\n            if (node && node.type === 3) {\n              node.value = (_b = node.value) === null || _b === void 0 ? void 0 : _b.replace(endWhiteSpaceRegExp, '');\n            }\n          }\n        };\n        if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {\n          return;\n        }\n        while (node) {\n          const next = node.next;\n          if (isWrappableNode(blockElements, node)) {\n            if (!rootBlockNode) {\n              rootBlockNode = new AstNode(rootBlockName, 1);\n              rootBlockNode.attr(defaultedSettings.forced_root_block_attrs);\n              rootNode.insert(rootBlockNode, node);\n              rootBlockNode.append(node);\n            } else {\n              rootBlockNode.append(node);\n            }\n          } else {\n            trim(rootBlockNode);\n            rootBlockNode = null;\n          }\n          node = next;\n        }\n        trim(rootBlockNode);\n      };\n      const parse = (html, args = {}) => {\n        var _a;\n        const validate = defaultedSettings.validate;\n        const rootName = (_a = args.context) !== null && _a !== void 0 ? _a : defaultedSettings.root_name;\n        const element = parseAndSanitizeWithContext(html, rootName, args.format);\n        updateChildren(schema, element);\n        const rootNode = new AstNode(rootName, 11);\n        transferChildren(rootNode, element, schema.getSpecialElements(), sanitizer.sanitizeNamespaceElement);\n        element.innerHTML = '';\n        const [whitespacePre, whitespacePost] = whitespaceCleaner(rootNode, schema, defaultedSettings, args);\n        const invalidChildren = [];\n        const invalidFinder = validate ? node => findInvalidChildren(node, invalidChildren) : noop;\n        const matches = {\n          nodes: {},\n          attributes: {}\n        };\n        const matchFinder = node => matchNode$1(getNodeFilters(), getAttributeFilters(), node, matches);\n        walkTree(rootNode, [whitespacePre, matchFinder], [whitespacePost, invalidFinder]);\n        invalidChildren.reverse();\n        if (validate && invalidChildren.length > 0) {\n          if (args.context) {\n            const {\n              pass: topLevelChildren,\n              fail: otherChildren\n            } = partition$2(invalidChildren, child => child.parent === rootNode);\n            cleanInvalidNodes(otherChildren, schema, rootNode, matchFinder);\n            args.invalid = topLevelChildren.length > 0;\n          } else {\n            cleanInvalidNodes(invalidChildren, schema, rootNode, matchFinder);\n          }\n        }\n        const rootBlockName = getRootBlockName(defaultedSettings, args);\n        if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) {\n          addRootBlocks(rootNode, rootBlockName);\n        }\n        if (!args.invalid) {\n          runFilters(matches, args);\n        }\n        return rootNode;\n      };\n      const exports = {\n        schema,\n        addAttributeFilter,\n        getAttributeFilters,\n        removeAttributeFilter,\n        addNodeFilter,\n        getNodeFilters,\n        removeNodeFilter,\n        parse\n      };\n      register$4(exports, defaultedSettings);\n      register$5(exports, defaultedSettings, schema);\n      return exports;\n    };\n\n    const serializeContent = content => isTreeNode(content) ? HtmlSerializer({\n      validate: false\n    }).serialize(content) : content;\n    const withSerializedContent = (content, fireEvent, parserSettings) => {\n      const serializedContent = serializeContent(content);\n      const eventArgs = fireEvent(serializedContent);\n      if (eventArgs.isDefaultPrevented()) {\n        return eventArgs;\n      } else if (isTreeNode(content)) {\n        if (eventArgs.content !== serializedContent) {\n          const rootNode = DomParser({\n            validate: false,\n            forced_root_block: false,\n            ...parserSettings\n          }).parse(eventArgs.content, {\n            context: content.name\n          });\n          return {\n            ...eventArgs,\n            content: rootNode\n          };\n        } else {\n          return {\n            ...eventArgs,\n            content\n          };\n        }\n      } else {\n        return eventArgs;\n      }\n    };\n    const preProcessGetContent = (editor, args) => {\n      if (args.no_events) {\n        return Result.value(args);\n      } else {\n        const eventArgs = fireBeforeGetContent(editor, args);\n        if (eventArgs.isDefaultPrevented()) {\n          return Result.error(fireGetContent(editor, {\n            content: '',\n            ...eventArgs\n          }).content);\n        } else {\n          return Result.value(eventArgs);\n        }\n      }\n    };\n    const postProcessGetContent = (editor, content, args) => {\n      if (args.no_events) {\n        return content;\n      } else {\n        const processedEventArgs = withSerializedContent(content, content => fireGetContent(editor, {\n          ...args,\n          content\n        }), {\n          sanitize: shouldSanitizeXss(editor),\n          sandbox_iframes: shouldSandboxIframes(editor)\n        });\n        return processedEventArgs.content;\n      }\n    };\n    const preProcessSetContent = (editor, args) => {\n      if (args.no_events) {\n        return Result.value(args);\n      } else {\n        const processedEventArgs = withSerializedContent(args.content, content => fireBeforeSetContent(editor, {\n          ...args,\n          content\n        }), {\n          sanitize: shouldSanitizeXss(editor),\n          sandbox_iframes: shouldSandboxIframes(editor)\n        });\n        if (processedEventArgs.isDefaultPrevented()) {\n          fireSetContent(editor, processedEventArgs);\n          return Result.error(undefined);\n        } else {\n          return Result.value(processedEventArgs);\n        }\n      }\n    };\n    const postProcessSetContent = (editor, content, args) => {\n      if (!args.no_events) {\n        fireSetContent(editor, {\n          ...args,\n          content\n        });\n      }\n    };\n\n    const tableModel = (element, width, rows) => ({\n      element,\n      width,\n      rows\n    });\n    const tableRow = (element, cells) => ({\n      element,\n      cells\n    });\n    const cellPosition = (x, y) => ({\n      x,\n      y\n    });\n    const getSpan = (td, key) => {\n      return getOpt(td, key).bind(toInt).getOr(1);\n    };\n    const fillout = (table, x, y, tr, td) => {\n      const rowspan = getSpan(td, 'rowspan');\n      const colspan = getSpan(td, 'colspan');\n      const rows = table.rows;\n      for (let y2 = y; y2 < y + rowspan; y2++) {\n        if (!rows[y2]) {\n          rows[y2] = tableRow(deep$1(tr), []);\n        }\n        for (let x2 = x; x2 < x + colspan; x2++) {\n          const cells = rows[y2].cells;\n          cells[x2] = y2 === y && x2 === x ? td : shallow$1(td);\n        }\n      }\n    };\n    const cellExists = (table, x, y) => {\n      const rows = table.rows;\n      const cells = rows[y] ? rows[y].cells : [];\n      return !!cells[x];\n    };\n    const skipCellsX = (table, x, y) => {\n      while (cellExists(table, x, y)) {\n        x++;\n      }\n      return x;\n    };\n    const getWidth = rows => {\n      return foldl(rows, (acc, row) => {\n        return row.cells.length > acc ? row.cells.length : acc;\n      }, 0);\n    };\n    const findElementPos = (table, element) => {\n      const rows = table.rows;\n      for (let y = 0; y < rows.length; y++) {\n        const cells = rows[y].cells;\n        for (let x = 0; x < cells.length; x++) {\n          if (eq(cells[x], element)) {\n            return Optional.some(cellPosition(x, y));\n          }\n        }\n      }\n      return Optional.none();\n    };\n    const extractRows = (table, sx, sy, ex, ey) => {\n      const newRows = [];\n      const rows = table.rows;\n      for (let y = sy; y <= ey; y++) {\n        const cells = rows[y].cells;\n        const slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1);\n        newRows.push(tableRow(rows[y].element, slice));\n      }\n      return newRows;\n    };\n    const subTable = (table, startPos, endPos) => {\n      const sx = startPos.x,\n        sy = startPos.y;\n      const ex = endPos.x,\n        ey = endPos.y;\n      const newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy);\n      return tableModel(table.element, getWidth(newRows), newRows);\n    };\n    const createDomTable = (table, rows) => {\n      const tableElement = shallow$1(table.element);\n      const tableBody = SugarElement.fromTag('tbody');\n      append(tableBody, rows);\n      append$1(tableElement, tableBody);\n      return tableElement;\n    };\n    const modelRowsToDomRows = table => {\n      return map$3(table.rows, row => {\n        const cells = map$3(row.cells, cell => {\n          const td = deep$1(cell);\n          remove$a(td, 'colspan');\n          remove$a(td, 'rowspan');\n          return td;\n        });\n        const tr = shallow$1(row.element);\n        append(tr, cells);\n        return tr;\n      });\n    };\n    const fromDom = tableElm => {\n      const table = tableModel(shallow$1(tableElm), 0, []);\n      each$e(descendants(tableElm, 'tr'), (tr, y) => {\n        each$e(descendants(tr, 'td,th'), (td, x) => {\n          fillout(table, skipCellsX(table, x, y), y, tr, td);\n        });\n      });\n      return tableModel(table.element, getWidth(table.rows), table.rows);\n    };\n    const toDom = table => {\n      return createDomTable(table, modelRowsToDomRows(table));\n    };\n    const subsection = (table, startElement, endElement) => {\n      return findElementPos(table, startElement).bind(startPos => {\n        return findElementPos(table, endElement).map(endPos => {\n          return subTable(table, startPos, endPos);\n        });\n      });\n    };\n\n    const findParentListContainer = parents => find$2(parents, elm => name(elm) === 'ul' || name(elm) === 'ol');\n    const getFullySelectedListWrappers = (parents, rng) => find$2(parents, elm => name(elm) === 'li' && hasAllContentsSelected(elm, rng)).fold(constant([]), _li => findParentListContainer(parents).map(listCont => {\n      const listElm = SugarElement.fromTag(name(listCont));\n      const listStyles = filter$4(getAllRaw(listCont), (_style, name) => startsWith(name, 'list-style'));\n      setAll(listElm, listStyles);\n      return [SugarElement.fromTag('li'), listElm];\n    }).getOr([]));\n    const wrap = (innerElm, elms) => {\n      const wrapped = foldl(elms, (acc, elm) => {\n        append$1(elm, acc);\n        return elm;\n      }, innerElm);\n      return elms.length > 0 ? fromElements([wrapped]) : wrapped;\n    };\n    const directListWrappers = commonAnchorContainer => {\n      if (isListItem$1(commonAnchorContainer)) {\n        return parent(commonAnchorContainer).filter(isList).fold(constant([]), listElm => [commonAnchorContainer, listElm]);\n      } else {\n        return isList(commonAnchorContainer) ? [commonAnchorContainer] : [];\n      }\n    };\n    const getWrapElements = (rootNode, rng, schema) => {\n      const commonAnchorContainer = SugarElement.fromDom(rng.commonAncestorContainer);\n      const parents = parentsAndSelf(commonAnchorContainer, rootNode);\n      const wrapElements = filter$5(parents, el => schema.isWrapper(name(el)));\n      const listWrappers = getFullySelectedListWrappers(parents, rng);\n      const allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));\n      return map$3(allWrappers, shallow$1);\n    };\n    const emptyFragment = () => fromElements([]);\n    const getFragmentFromRange = (rootNode, rng, schema) => wrap(SugarElement.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng, schema));\n    const getParentTable = (rootElm, cell) => ancestor$3(cell, 'table', curry(eq, rootElm));\n    const getTableFragment = (rootNode, selectedTableCells) => getParentTable(rootNode, selectedTableCells[0]).bind(tableElm => {\n      const firstCell = selectedTableCells[0];\n      const lastCell = selectedTableCells[selectedTableCells.length - 1];\n      const fullTableModel = fromDom(tableElm);\n      return subsection(fullTableModel, firstCell, lastCell).map(sectionedTableModel => fromElements([toDom(sectionedTableModel)]));\n    }).getOrThunk(emptyFragment);\n    const getSelectionFragment = (rootNode, ranges, schema) => ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0], schema);\n    const read$3 = (rootNode, ranges, schema) => {\n      const selectedCells = getCellsFromElementOrRanges(ranges, rootNode);\n      return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges, schema);\n    };\n\n    const isCollapsibleWhitespace = (text, index) => index >= 0 && index < text.length && isWhiteSpace(text.charAt(index));\n    const getInnerText = bin => {\n      return trim$2(bin.innerText);\n    };\n    const getContextNodeName = parentBlockOpt => parentBlockOpt.map(block => block.nodeName).getOr('div').toLowerCase();\n    const getTextContent = editor => Optional.from(editor.selection.getRng()).map(rng => {\n      var _a;\n      const parentBlockOpt = Optional.from(editor.dom.getParent(rng.commonAncestorContainer, editor.dom.isBlock));\n      const body = editor.getBody();\n      const contextNodeName = getContextNodeName(parentBlockOpt);\n      const rangeContentClone = SugarElement.fromDom(rng.cloneContents());\n      cleanupBogusElements(rangeContentClone);\n      cleanupInputNames(rangeContentClone);\n      const bin = editor.dom.add(body, contextNodeName, {\n        'data-mce-bogus': 'all',\n        'style': 'overflow: hidden; opacity: 0;'\n      }, rangeContentClone.dom);\n      const text = getInnerText(bin);\n      const nonRenderedText = trim$2((_a = bin.textContent) !== null && _a !== void 0 ? _a : '');\n      editor.dom.remove(bin);\n      if (isCollapsibleWhitespace(nonRenderedText, 0) || isCollapsibleWhitespace(nonRenderedText, nonRenderedText.length - 1)) {\n        const parentBlock = parentBlockOpt.getOr(body);\n        const parentBlockText = getInnerText(parentBlock);\n        const textIndex = parentBlockText.indexOf(text);\n        if (textIndex === -1) {\n          return text;\n        } else {\n          const hasProceedingSpace = isCollapsibleWhitespace(parentBlockText, textIndex - 1);\n          const hasTrailingSpace = isCollapsibleWhitespace(parentBlockText, textIndex + text.length);\n          return (hasProceedingSpace ? ' ' : '') + text + (hasTrailingSpace ? ' ' : '');\n        }\n      } else {\n        return text;\n      }\n    }).getOr('');\n    const getSerializedContent = (editor, args) => {\n      const rng = editor.selection.getRng(),\n        tmpElm = editor.dom.create('body');\n      const sel = editor.selection.getSel();\n      const ranges = processRanges(editor, getRanges$1(sel));\n      const fragment = args.contextual ? read$3(SugarElement.fromDom(editor.getBody()), ranges, editor.schema).dom : rng.cloneContents();\n      if (fragment) {\n        tmpElm.appendChild(fragment);\n      }\n      return editor.selection.serializer.serialize(tmpElm, args);\n    };\n    const extractSelectedContent = (editor, args) => {\n      if (args.format === 'text') {\n        return getTextContent(editor);\n      } else {\n        const content = getSerializedContent(editor, args);\n        if (args.format === 'tree') {\n          return content;\n        } else {\n          return editor.selection.isCollapsed() ? '' : content;\n        }\n      }\n    };\n    const setupArgs$3 = (args, format) => ({\n      ...args,\n      format,\n      get: true,\n      selection: true,\n      getInner: true\n    });\n    const getSelectedContentInternal = (editor, format, args = {}) => {\n      const defaultedArgs = setupArgs$3(args, format);\n      return preProcessGetContent(editor, defaultedArgs).fold(identity, updatedArgs => {\n        const content = extractSelectedContent(editor, updatedArgs);\n        return postProcessGetContent(editor, content, updatedArgs);\n      });\n    };\n\n    const KEEP = 0,\n      INSERT = 1,\n      DELETE = 2;\n    const diff = (left, right) => {\n      const size = left.length + right.length + 2;\n      const vDown = new Array(size);\n      const vUp = new Array(size);\n      const snake = (start, end, diag) => {\n        return {\n          start,\n          end,\n          diag\n        };\n      };\n      const buildScript = (start1, end1, start2, end2, script) => {\n        const middle = getMiddleSnake(start1, end1, start2, end2);\n        if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) {\n          let i = start1;\n          let j = start2;\n          while (i < end1 || j < end2) {\n            if (i < end1 && j < end2 && left[i] === right[j]) {\n              script.push([KEEP, left[i]]);\n              ++i;\n              ++j;\n            } else {\n              if (end1 - start1 > end2 - start2) {\n                script.push([DELETE, left[i]]);\n                ++i;\n              } else {\n                script.push([INSERT, right[j]]);\n                ++j;\n              }\n            }\n          }\n        } else {\n          buildScript(start1, middle.start, start2, middle.start - middle.diag, script);\n          for (let i2 = middle.start; i2 < middle.end; ++i2) {\n            script.push([KEEP, left[i2]]);\n          }\n          buildScript(middle.end, end1, middle.end - middle.diag, end2, script);\n        }\n      };\n      const buildSnake = (start, diag, end1, end2) => {\n        let end = start;\n        while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) {\n          ++end;\n        }\n        return snake(start, end, diag);\n      };\n      const getMiddleSnake = (start1, end1, start2, end2) => {\n        const m = end1 - start1;\n        const n = end2 - start2;\n        if (m === 0 || n === 0) {\n          return null;\n        }\n        const delta = m - n;\n        const sum = n + m;\n        const offset = (sum % 2 === 0 ? sum : sum + 1) / 2;\n        vDown[1 + offset] = start1;\n        vUp[1 + offset] = end1 + 1;\n        let d, k, i, x, y;\n        for (d = 0; d <= offset; ++d) {\n          for (k = -d; k <= d; k += 2) {\n            i = k + offset;\n            if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) {\n              vDown[i] = vDown[i + 1];\n            } else {\n              vDown[i] = vDown[i - 1] + 1;\n            }\n            x = vDown[i];\n            y = x - start1 + start2 - k;\n            while (x < end1 && y < end2 && left[x] === right[y]) {\n              vDown[i] = ++x;\n              ++y;\n            }\n            if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) {\n              if (vUp[i - delta] <= vDown[i]) {\n                return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2);\n              }\n            }\n          }\n          for (k = delta - d; k <= delta + d; k += 2) {\n            i = k + offset - delta;\n            if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) {\n              vUp[i] = vUp[i + 1] - 1;\n            } else {\n              vUp[i] = vUp[i - 1];\n            }\n            x = vUp[i] - 1;\n            y = x - start1 + start2 - k;\n            while (x >= start1 && y >= start2 && left[x] === right[y]) {\n              vUp[i] = x--;\n              y--;\n            }\n            if (delta % 2 === 0 && -d <= k && k <= d) {\n              if (vUp[i] <= vDown[i + delta]) {\n                return buildSnake(vUp[i], k + start1 - start2, end1, end2);\n              }\n            }\n          }\n        }\n        return null;\n      };\n      const script = [];\n      buildScript(0, left.length, 0, right.length, script);\n      return script;\n    };\n\n    const getOuterHtml = elm => {\n      if (isElement$6(elm)) {\n        return elm.outerHTML;\n      } else if (isText$a(elm)) {\n        return Entities.encodeRaw(elm.data, false);\n      } else if (isComment(elm)) {\n        return '<!--' + elm.data + '-->';\n      }\n      return '';\n    };\n    const createFragment = html => {\n      let node;\n      const container = document.createElement('div');\n      const frag = document.createDocumentFragment();\n      if (html) {\n        container.innerHTML = html;\n      }\n      while (node = container.firstChild) {\n        frag.appendChild(node);\n      }\n      return frag;\n    };\n    const insertAt = (elm, html, index) => {\n      const fragment = createFragment(html);\n      if (elm.hasChildNodes() && index < elm.childNodes.length) {\n        const target = elm.childNodes[index];\n        elm.insertBefore(fragment, target);\n      } else {\n        elm.appendChild(fragment);\n      }\n    };\n    const removeAt = (elm, index) => {\n      if (elm.hasChildNodes() && index < elm.childNodes.length) {\n        const target = elm.childNodes[index];\n        elm.removeChild(target);\n      }\n    };\n    const applyDiff = (diff, elm) => {\n      let index = 0;\n      each$e(diff, action => {\n        if (action[0] === KEEP) {\n          index++;\n        } else if (action[0] === INSERT) {\n          insertAt(elm, action[1], index);\n          index++;\n        } else if (action[0] === DELETE) {\n          removeAt(elm, index);\n        }\n      });\n    };\n    const read$2 = (elm, trimZwsp) => filter$5(map$3(from(elm.childNodes), trimZwsp ? compose(trim$2, getOuterHtml) : getOuterHtml), item => {\n      return item.length > 0;\n    });\n    const write = (fragments, elm) => {\n      const currentFragments = map$3(from(elm.childNodes), getOuterHtml);\n      applyDiff(diff(currentFragments, fragments), elm);\n      return elm;\n    };\n\n    const lazyTempDocument = cached(() => document.implementation.createHTMLDocument('undo'));\n    const hasIframes = body => body.querySelector('iframe') !== null;\n    const createFragmentedLevel = fragments => {\n      return {\n        type: 'fragmented',\n        fragments,\n        content: '',\n        bookmark: null,\n        beforeBookmark: null\n      };\n    };\n    const createCompleteLevel = content => {\n      return {\n        type: 'complete',\n        fragments: null,\n        content,\n        bookmark: null,\n        beforeBookmark: null\n      };\n    };\n    const createFromEditor = editor => {\n      const tempAttrs = editor.serializer.getTempAttrs();\n      const body = trim$1(editor.getBody(), tempAttrs);\n      return hasIframes(body) ? createFragmentedLevel(read$2(body, true)) : createCompleteLevel(trim$2(body.innerHTML));\n    };\n    const applyToEditor = (editor, level, before) => {\n      const bookmark = before ? level.beforeBookmark : level.bookmark;\n      if (level.type === 'fragmented') {\n        write(level.fragments, editor.getBody());\n      } else {\n        editor.setContent(level.content, {\n          format: 'raw',\n          no_selection: isNonNullable(bookmark) && isPathBookmark(bookmark) ? !bookmark.isFakeCaret : true\n        });\n      }\n      if (bookmark) {\n        editor.selection.moveToBookmark(bookmark);\n        editor.selection.scrollIntoView();\n      }\n    };\n    const getLevelContent = level => {\n      return level.type === 'fragmented' ? level.fragments.join('') : level.content;\n    };\n    const getCleanLevelContent = level => {\n      const elm = SugarElement.fromTag('body', lazyTempDocument());\n      set$1(elm, getLevelContent(level));\n      each$e(descendants(elm, '*[data-mce-bogus]'), unwrap);\n      return get$6(elm);\n    };\n    const hasEqualContent = (level1, level2) => getLevelContent(level1) === getLevelContent(level2);\n    const hasEqualCleanedContent = (level1, level2) => getCleanLevelContent(level1) === getCleanLevelContent(level2);\n    const isEq$1 = (level1, level2) => {\n      if (!level1 || !level2) {\n        return false;\n      } else if (hasEqualContent(level1, level2)) {\n        return true;\n      } else {\n        return hasEqualCleanedContent(level1, level2);\n      }\n    };\n\n    const isUnlocked = locks => locks.get() === 0;\n\n    const setTyping = (undoManager, typing, locks) => {\n      if (isUnlocked(locks)) {\n        undoManager.typing = typing;\n      }\n    };\n    const endTyping = (undoManager, locks) => {\n      if (undoManager.typing) {\n        setTyping(undoManager, false, locks);\n        undoManager.add();\n      }\n    };\n    const endTypingLevelIgnoreLocks = undoManager => {\n      if (undoManager.typing) {\n        undoManager.typing = false;\n        undoManager.add();\n      }\n    };\n\n    const beforeChange$1 = (editor, locks, beforeBookmark) => {\n      if (isUnlocked(locks)) {\n        beforeBookmark.set(getUndoBookmark(editor.selection));\n      }\n    };\n    const addUndoLevel$1 = (editor, undoManager, index, locks, beforeBookmark, level, event) => {\n      const currentLevel = createFromEditor(editor);\n      const newLevel = Tools.extend(level || {}, currentLevel);\n      if (!isUnlocked(locks) || editor.removed) {\n        return null;\n      }\n      const lastLevel = undoManager.data[index.get()];\n      if (editor.dispatch('BeforeAddUndo', {\n        level: newLevel,\n        lastLevel,\n        originalEvent: event\n      }).isDefaultPrevented()) {\n        return null;\n      }\n      if (lastLevel && isEq$1(lastLevel, newLevel)) {\n        return null;\n      }\n      if (undoManager.data[index.get()]) {\n        beforeBookmark.get().each(bm => {\n          undoManager.data[index.get()].beforeBookmark = bm;\n        });\n      }\n      const customUndoRedoLevels = getCustomUndoRedoLevels(editor);\n      if (customUndoRedoLevels) {\n        if (undoManager.data.length > customUndoRedoLevels) {\n          for (let i = 0; i < undoManager.data.length - 1; i++) {\n            undoManager.data[i] = undoManager.data[i + 1];\n          }\n          undoManager.data.length--;\n          index.set(undoManager.data.length);\n        }\n      }\n      newLevel.bookmark = getUndoBookmark(editor.selection);\n      if (index.get() < undoManager.data.length - 1) {\n        undoManager.data.length = index.get() + 1;\n      }\n      undoManager.data.push(newLevel);\n      index.set(undoManager.data.length - 1);\n      const args = {\n        level: newLevel,\n        lastLevel,\n        originalEvent: event\n      };\n      if (index.get() > 0) {\n        editor.setDirty(true);\n        editor.dispatch('AddUndo', args);\n        editor.dispatch('change', args);\n      } else {\n        editor.dispatch('AddUndo', args);\n      }\n      return newLevel;\n    };\n    const clear$1 = (editor, undoManager, index) => {\n      undoManager.data = [];\n      index.set(0);\n      undoManager.typing = false;\n      editor.dispatch('ClearUndos');\n    };\n    const extra$1 = (editor, undoManager, index, callback1, callback2) => {\n      if (undoManager.transact(callback1)) {\n        const bookmark = undoManager.data[index.get()].bookmark;\n        const lastLevel = undoManager.data[index.get() - 1];\n        applyToEditor(editor, lastLevel, true);\n        if (undoManager.transact(callback2)) {\n          undoManager.data[index.get() - 1].beforeBookmark = bookmark;\n        }\n      }\n    };\n    const redo$1 = (editor, index, data) => {\n      let level;\n      if (index.get() < data.length - 1) {\n        index.set(index.get() + 1);\n        level = data[index.get()];\n        applyToEditor(editor, level, false);\n        editor.setDirty(true);\n        editor.dispatch('Redo', {\n          level\n        });\n      }\n      return level;\n    };\n    const undo$1 = (editor, undoManager, locks, index) => {\n      let level;\n      if (undoManager.typing) {\n        undoManager.add();\n        undoManager.typing = false;\n        setTyping(undoManager, false, locks);\n      }\n      if (index.get() > 0) {\n        index.set(index.get() - 1);\n        level = undoManager.data[index.get()];\n        applyToEditor(editor, level, true);\n        editor.setDirty(true);\n        editor.dispatch('Undo', {\n          level\n        });\n      }\n      return level;\n    };\n    const reset$1 = undoManager => {\n      undoManager.clear();\n      undoManager.add();\n    };\n    const hasUndo$1 = (editor, undoManager, index) => index.get() > 0 || undoManager.typing && undoManager.data[0] && !isEq$1(createFromEditor(editor), undoManager.data[0]);\n    const hasRedo$1 = (undoManager, index) => index.get() < undoManager.data.length - 1 && !undoManager.typing;\n    const transact$1 = (undoManager, locks, callback) => {\n      endTyping(undoManager, locks);\n      undoManager.beforeChange();\n      undoManager.ignore(callback);\n      return undoManager.add();\n    };\n    const ignore$1 = (locks, callback) => {\n      try {\n        locks.set(locks.get() + 1);\n        callback();\n      } finally {\n        locks.set(locks.get() - 1);\n      }\n    };\n\n    const addVisualInternal = (editor, elm) => {\n      const dom = editor.dom;\n      const scope = isNonNullable(elm) ? elm : editor.getBody();\n      each$e(dom.select('table,a', scope), matchedElm => {\n        switch (matchedElm.nodeName) {\n          case 'TABLE':\n            const cls = getVisualAidsTableClass(editor);\n            const value = dom.getAttrib(matchedElm, 'border');\n            if ((!value || value === '0') && editor.hasVisual) {\n              dom.addClass(matchedElm, cls);\n            } else {\n              dom.removeClass(matchedElm, cls);\n            }\n            break;\n          case 'A':\n            if (!dom.getAttrib(matchedElm, 'href')) {\n              const value = dom.getAttrib(matchedElm, 'name') || matchedElm.id;\n              const cls = getVisualAidsAnchorClass(editor);\n              if (value && editor.hasVisual) {\n                dom.addClass(matchedElm, cls);\n              } else {\n                dom.removeClass(matchedElm, cls);\n              }\n            }\n            break;\n        }\n      });\n      editor.dispatch('VisualAid', {\n        element: elm,\n        hasVisual: editor.hasVisual\n      });\n    };\n\n    const makePlainAdaptor = editor => ({\n      init: {\n        bindEvents: noop\n      },\n      undoManager: {\n        beforeChange: (locks, beforeBookmark) => beforeChange$1(editor, locks, beforeBookmark),\n        add: (undoManager, index, locks, beforeBookmark, level, event) => addUndoLevel$1(editor, undoManager, index, locks, beforeBookmark, level, event),\n        undo: (undoManager, locks, index) => undo$1(editor, undoManager, locks, index),\n        redo: (index, data) => redo$1(editor, index, data),\n        clear: (undoManager, index) => clear$1(editor, undoManager, index),\n        reset: undoManager => reset$1(undoManager),\n        hasUndo: (undoManager, index) => hasUndo$1(editor, undoManager, index),\n        hasRedo: (undoManager, index) => hasRedo$1(undoManager, index),\n        transact: (undoManager, locks, callback) => transact$1(undoManager, locks, callback),\n        ignore: (locks, callback) => ignore$1(locks, callback),\n        extra: (undoManager, index, callback1, callback2) => extra$1(editor, undoManager, index, callback1, callback2)\n      },\n      formatter: {\n        match: (name, vars, node, similar) => match$2(editor, name, vars, node, similar),\n        matchAll: (names, vars) => matchAll(editor, names, vars),\n        matchNode: (node, name, vars, similar) => matchNode(editor, node, name, vars, similar),\n        canApply: name => canApply(editor, name),\n        closest: names => closest(editor, names),\n        apply: (name, vars, node) => applyFormat$1(editor, name, vars, node),\n        remove: (name, vars, node, similar) => removeFormat$1(editor, name, vars, node, similar),\n        toggle: (name, vars, node) => toggle(editor, name, vars, node),\n        formatChanged: (registeredFormatListeners, formats, callback, similar, vars) => formatChangedInternal(editor, registeredFormatListeners, formats, callback, similar, vars)\n      },\n      editor: {\n        getContent: args => getContentInternal(editor, args),\n        setContent: (content, args) => setContentInternal(editor, content, args),\n        insertContent: (value, details) => insertHtmlAtCaret(editor, value, details),\n        addVisual: elm => addVisualInternal(editor, elm)\n      },\n      selection: {\n        getContent: (format, args) => getSelectedContentInternal(editor, format, args)\n      },\n      autocompleter: {\n        addDecoration: range => create$9(editor, range),\n        removeDecoration: () => remove$2(editor, SugarElement.fromDom(editor.getBody()))\n      },\n      raw: {\n        getModel: () => Optional.none()\n      }\n    });\n    const makeRtcAdaptor = rtcEditor => {\n      const defaultVars = vars => isObject(vars) ? vars : {};\n      const {\n        init,\n        undoManager,\n        formatter,\n        editor,\n        selection,\n        autocompleter,\n        raw\n      } = rtcEditor;\n      return {\n        init: {\n          bindEvents: init.bindEvents\n        },\n        undoManager: {\n          beforeChange: undoManager.beforeChange,\n          add: undoManager.add,\n          undo: undoManager.undo,\n          redo: undoManager.redo,\n          clear: undoManager.clear,\n          reset: undoManager.reset,\n          hasUndo: undoManager.hasUndo,\n          hasRedo: undoManager.hasRedo,\n          transact: (_undoManager, _locks, fn) => undoManager.transact(fn),\n          ignore: (_locks, callback) => undoManager.ignore(callback),\n          extra: (_undoManager, _index, callback1, callback2) => undoManager.extra(callback1, callback2)\n        },\n        formatter: {\n          match: (name, vars, _node, similar) => formatter.match(name, defaultVars(vars), similar),\n          matchAll: formatter.matchAll,\n          matchNode: formatter.matchNode,\n          canApply: name => formatter.canApply(name),\n          closest: names => formatter.closest(names),\n          apply: (name, vars, _node) => formatter.apply(name, defaultVars(vars)),\n          remove: (name, vars, _node, _similar) => formatter.remove(name, defaultVars(vars)),\n          toggle: (name, vars, _node) => formatter.toggle(name, defaultVars(vars)),\n          formatChanged: (_rfl, formats, callback, similar, vars) => formatter.formatChanged(formats, callback, similar, vars)\n        },\n        editor: {\n          getContent: args => editor.getContent(args),\n          setContent: (content, args) => {\n            return {\n              content: editor.setContent(content, args),\n              html: ''\n            };\n          },\n          insertContent: (content, _details) => {\n            editor.insertContent(content);\n            return '';\n          },\n          addVisual: editor.addVisual\n        },\n        selection: {\n          getContent: (_format, args) => selection.getContent(args)\n        },\n        autocompleter: {\n          addDecoration: autocompleter.addDecoration,\n          removeDecoration: autocompleter.removeDecoration\n        },\n        raw: {\n          getModel: () => Optional.some(raw.getRawModel())\n        }\n      };\n    };\n    const makeNoopAdaptor = () => {\n      const nul = constant(null);\n      const empty = constant('');\n      return {\n        init: {\n          bindEvents: noop\n        },\n        undoManager: {\n          beforeChange: noop,\n          add: nul,\n          undo: nul,\n          redo: nul,\n          clear: noop,\n          reset: noop,\n          hasUndo: never,\n          hasRedo: never,\n          transact: nul,\n          ignore: noop,\n          extra: noop\n        },\n        formatter: {\n          match: never,\n          matchAll: constant([]),\n          matchNode: constant(undefined),\n          canApply: never,\n          closest: empty,\n          apply: noop,\n          remove: noop,\n          toggle: noop,\n          formatChanged: constant({\n            unbind: noop\n          })\n        },\n        editor: {\n          getContent: empty,\n          setContent: constant({\n            content: '',\n            html: ''\n          }),\n          insertContent: constant(''),\n          addVisual: noop\n        },\n        selection: {\n          getContent: empty\n        },\n        autocompleter: {\n          addDecoration: noop,\n          removeDecoration: noop\n        },\n        raw: {\n          getModel: constant(Optional.none())\n        }\n      };\n    };\n    const isRtc = editor => has$2(editor.plugins, 'rtc');\n    const getRtcSetup = editor => get$a(editor.plugins, 'rtc').bind(rtcPlugin => Optional.from(rtcPlugin.setup));\n    const setup$t = editor => {\n      const editorCast = editor;\n      return getRtcSetup(editor).fold(() => {\n        editorCast.rtcInstance = makePlainAdaptor(editor);\n        return Optional.none();\n      }, setup => {\n        editorCast.rtcInstance = makeNoopAdaptor();\n        return Optional.some(() => setup().then(rtcEditor => {\n          editorCast.rtcInstance = makeRtcAdaptor(rtcEditor);\n          return rtcEditor.rtc.isRemote;\n        }));\n      });\n    };\n    const getRtcInstanceWithFallback = editor => editor.rtcInstance ? editor.rtcInstance : makePlainAdaptor(editor);\n    const getRtcInstanceWithError = editor => {\n      const rtcInstance = editor.rtcInstance;\n      if (!rtcInstance) {\n        throw new Error('Failed to get RTC instance not yet initialized.');\n      } else {\n        return rtcInstance;\n      }\n    };\n    const beforeChange = (editor, locks, beforeBookmark) => {\n      getRtcInstanceWithError(editor).undoManager.beforeChange(locks, beforeBookmark);\n    };\n    const addUndoLevel = (editor, undoManager, index, locks, beforeBookmark, level, event) => getRtcInstanceWithError(editor).undoManager.add(undoManager, index, locks, beforeBookmark, level, event);\n    const undo = (editor, undoManager, locks, index) => getRtcInstanceWithError(editor).undoManager.undo(undoManager, locks, index);\n    const redo = (editor, index, data) => getRtcInstanceWithError(editor).undoManager.redo(index, data);\n    const clear = (editor, undoManager, index) => {\n      getRtcInstanceWithError(editor).undoManager.clear(undoManager, index);\n    };\n    const reset = (editor, undoManager) => {\n      getRtcInstanceWithError(editor).undoManager.reset(undoManager);\n    };\n    const hasUndo = (editor, undoManager, index) => getRtcInstanceWithError(editor).undoManager.hasUndo(undoManager, index);\n    const hasRedo = (editor, undoManager, index) => getRtcInstanceWithError(editor).undoManager.hasRedo(undoManager, index);\n    const transact = (editor, undoManager, locks, callback) => getRtcInstanceWithError(editor).undoManager.transact(undoManager, locks, callback);\n    const ignore = (editor, locks, callback) => {\n      getRtcInstanceWithError(editor).undoManager.ignore(locks, callback);\n    };\n    const extra = (editor, undoManager, index, callback1, callback2) => {\n      getRtcInstanceWithError(editor).undoManager.extra(undoManager, index, callback1, callback2);\n    };\n    const matchFormat = (editor, name, vars, node, similar) => getRtcInstanceWithError(editor).formatter.match(name, vars, node, similar);\n    const matchAllFormats = (editor, names, vars) => getRtcInstanceWithError(editor).formatter.matchAll(names, vars);\n    const matchNodeFormat = (editor, node, name, vars, similar) => getRtcInstanceWithError(editor).formatter.matchNode(node, name, vars, similar);\n    const canApplyFormat = (editor, name) => getRtcInstanceWithError(editor).formatter.canApply(name);\n    const closestFormat = (editor, names) => getRtcInstanceWithError(editor).formatter.closest(names);\n    const applyFormat = (editor, name, vars, node) => {\n      getRtcInstanceWithError(editor).formatter.apply(name, vars, node);\n    };\n    const removeFormat = (editor, name, vars, node, similar) => {\n      getRtcInstanceWithError(editor).formatter.remove(name, vars, node, similar);\n    };\n    const toggleFormat = (editor, name, vars, node) => {\n      getRtcInstanceWithError(editor).formatter.toggle(name, vars, node);\n    };\n    const formatChanged = (editor, registeredFormatListeners, formats, callback, similar, vars) => getRtcInstanceWithError(editor).formatter.formatChanged(registeredFormatListeners, formats, callback, similar, vars);\n    const getContent$2 = (editor, args) => getRtcInstanceWithFallback(editor).editor.getContent(args);\n    const setContent$2 = (editor, content, args) => getRtcInstanceWithFallback(editor).editor.setContent(content, args);\n    const insertContent$1 = (editor, value, details) => getRtcInstanceWithFallback(editor).editor.insertContent(value, details);\n    const getSelectedContent = (editor, format, args) => getRtcInstanceWithError(editor).selection.getContent(format, args);\n    const addVisual$1 = (editor, elm) => getRtcInstanceWithError(editor).editor.addVisual(elm);\n    const bindEvents = editor => getRtcInstanceWithError(editor).init.bindEvents();\n    const addAutocompleterDecoration = (editor, range) => getRtcInstanceWithError(editor).autocompleter.addDecoration(range);\n    const removeAutocompleterDecoration = editor => getRtcInstanceWithError(editor).autocompleter.removeDecoration();\n\n    const getContent$1 = (editor, args = {}) => {\n      const format = args.format ? args.format : 'html';\n      return getSelectedContent(editor, format, args);\n    };\n\n    const removeEmpty = text => {\n      if (text.dom.length === 0) {\n        remove$5(text);\n        return Optional.none();\n      } else {\n        return Optional.some(text);\n      }\n    };\n    const walkPastBookmark = (node, start) => node.filter(elm => BookmarkManager.isBookmarkNode(elm.dom)).bind(start ? nextSibling : prevSibling);\n    const merge$1 = (outer, inner, rng, start, schema) => {\n      const outerElm = outer.dom;\n      const innerElm = inner.dom;\n      const oldLength = start ? outerElm.length : innerElm.length;\n      if (start) {\n        mergeTextNodes(outerElm, innerElm, schema, false, !start);\n        rng.setStart(innerElm, oldLength);\n      } else {\n        mergeTextNodes(innerElm, outerElm, schema, false, !start);\n        rng.setEnd(innerElm, oldLength);\n      }\n    };\n    const normalizeTextIfRequired = (inner, start, schema) => {\n      parent(inner).each(root => {\n        const text = inner.dom;\n        if (start && needsToBeNbspLeft(root, CaretPosition(text, 0), schema)) {\n          normalizeWhitespaceAfter(text, 0, schema);\n        } else if (!start && needsToBeNbspRight(root, CaretPosition(text, text.length), schema)) {\n          normalizeWhitespaceBefore(text, text.length, schema);\n        }\n      });\n    };\n    const mergeAndNormalizeText = (outerNode, innerNode, rng, start, schema) => {\n      outerNode.bind(outer => {\n        const normalizer = start ? normalizeWhitespaceBefore : normalizeWhitespaceAfter;\n        normalizer(outer.dom, start ? outer.dom.length : 0, schema);\n        return innerNode.filter(isText$b).map(inner => merge$1(outer, inner, rng, start, schema));\n      }).orThunk(() => {\n        const innerTextNode = walkPastBookmark(innerNode, start).or(innerNode).filter(isText$b);\n        return innerTextNode.map(inner => normalizeTextIfRequired(inner, start, schema));\n      });\n    };\n    const rngSetContent = (rng, fragment, schema) => {\n      const firstChild = Optional.from(fragment.firstChild).map(SugarElement.fromDom);\n      const lastChild = Optional.from(fragment.lastChild).map(SugarElement.fromDom);\n      rng.deleteContents();\n      rng.insertNode(fragment);\n      const prevText = firstChild.bind(prevSibling).filter(isText$b).bind(removeEmpty);\n      const nextText = lastChild.bind(nextSibling).filter(isText$b).bind(removeEmpty);\n      mergeAndNormalizeText(prevText, firstChild, rng, true, schema);\n      mergeAndNormalizeText(nextText, lastChild, rng, false, schema);\n      rng.collapse(false);\n    };\n    const setupArgs$2 = (args, content) => ({\n      format: 'html',\n      ...args,\n      set: true,\n      selection: true,\n      content\n    });\n    const cleanContent = (editor, args) => {\n      if (args.format !== 'raw') {\n        const rng = editor.selection.getRng();\n        const contextBlock = editor.dom.getParent(rng.commonAncestorContainer, editor.dom.isBlock);\n        const contextArgs = contextBlock ? {\n          context: contextBlock.nodeName.toLowerCase()\n        } : {};\n        const node = editor.parser.parse(args.content, {\n          forced_root_block: false,\n          ...contextArgs,\n          ...args\n        });\n        return HtmlSerializer({\n          validate: false\n        }, editor.schema).serialize(node);\n      } else {\n        return args.content;\n      }\n    };\n    const setContent$1 = (editor, content, args = {}) => {\n      const defaultedArgs = setupArgs$2(args, content);\n      preProcessSetContent(editor, defaultedArgs).each(updatedArgs => {\n        const cleanedContent = cleanContent(editor, updatedArgs);\n        const rng = editor.selection.getRng();\n        rngSetContent(rng, rng.createContextualFragment(cleanedContent), editor.schema);\n        editor.selection.setRng(rng);\n        scrollRangeIntoView(editor, rng);\n        postProcessSetContent(editor, cleanedContent, updatedArgs);\n      });\n    };\n\n    const deleteFromCallbackMap = (callbackMap, selector, callback) => {\n      if (has$2(callbackMap, selector)) {\n        const newCallbacks = filter$5(callbackMap[selector], cb => cb !== callback);\n        if (newCallbacks.length === 0) {\n          delete callbackMap[selector];\n        } else {\n          callbackMap[selector] = newCallbacks;\n        }\n      }\n    };\n    var SelectorChanged = (dom, editor) => {\n      let selectorChangedData;\n      let currentSelectors;\n      const findMatchingNode = (selector, nodes) => find$2(nodes, node => dom.is(node, selector));\n      const getParents = elem => dom.getParents(elem, undefined, dom.getRoot());\n      const setup = () => {\n        selectorChangedData = {};\n        currentSelectors = {};\n        editor.on('NodeChange', e => {\n          const node = e.element;\n          const parents = getParents(node);\n          const matchedSelectors = {};\n          each$d(selectorChangedData, (callbacks, selector) => {\n            findMatchingNode(selector, parents).each(node => {\n              if (!currentSelectors[selector]) {\n                each$e(callbacks, callback => {\n                  callback(true, {\n                    node,\n                    selector,\n                    parents\n                  });\n                });\n                currentSelectors[selector] = callbacks;\n              }\n              matchedSelectors[selector] = callbacks;\n            });\n          });\n          each$d(currentSelectors, (callbacks, selector) => {\n            if (!matchedSelectors[selector]) {\n              delete currentSelectors[selector];\n              each$e(callbacks, callback => {\n                callback(false, {\n                  node,\n                  selector,\n                  parents\n                });\n              });\n            }\n          });\n        });\n      };\n      return {\n        selectorChangedWithUnbind: (selector, callback) => {\n          if (!selectorChangedData) {\n            setup();\n          }\n          if (!selectorChangedData[selector]) {\n            selectorChangedData[selector] = [];\n          }\n          selectorChangedData[selector].push(callback);\n          findMatchingNode(selector, getParents(editor.selection.getStart())).each(() => {\n            currentSelectors[selector] = selectorChangedData[selector];\n          });\n          return {\n            unbind: () => {\n              deleteFromCallbackMap(selectorChangedData, selector, callback);\n              deleteFromCallbackMap(currentSelectors, selector, callback);\n            }\n          };\n        }\n      };\n    };\n\n    const isAttachedToDom = node => {\n      return !!(node && node.ownerDocument) && contains(SugarElement.fromDom(node.ownerDocument), SugarElement.fromDom(node));\n    };\n    const isValidRange = rng => {\n      if (!rng) {\n        return false;\n      } else {\n        return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);\n      }\n    };\n    const EditorSelection = (dom, win, serializer, editor) => {\n      let selectedRange;\n      let explicitRange;\n      const {\n        selectorChangedWithUnbind\n      } = SelectorChanged(dom, editor);\n      const setCursorLocation = (node, offset) => {\n        const rng = dom.createRng();\n        if (isNonNullable(node) && isNonNullable(offset)) {\n          rng.setStart(node, offset);\n          rng.setEnd(node, offset);\n          setRng(rng);\n          collapse(false);\n        } else {\n          moveEndPoint(dom, rng, editor.getBody(), true);\n          setRng(rng);\n        }\n      };\n      const getContent = args => getContent$1(editor, args);\n      const setContent = (content, args) => setContent$1(editor, content, args);\n      const getStart$1 = real => getStart(editor.getBody(), getRng$1(), real);\n      const getEnd = real => getEnd$1(editor.getBody(), getRng$1(), real);\n      const getBookmark = (type, normalized) => bookmarkManager.getBookmark(type, normalized);\n      const moveToBookmark = bookmark => bookmarkManager.moveToBookmark(bookmark);\n      const select$1 = (node, content) => {\n        select(dom, node, content).each(setRng);\n        return node;\n      };\n      const isCollapsed = () => {\n        const rng = getRng$1(),\n          sel = getSel();\n        if (!rng || rng.item) {\n          return false;\n        }\n        if (rng.compareEndPoints) {\n          return rng.compareEndPoints('StartToEnd', rng) === 0;\n        }\n        return !sel || rng.collapsed;\n      };\n      const isEditable = () => {\n        const rng = getRng$1();\n        const fakeSelectedElements = editor.getBody().querySelectorAll('[data-mce-selected=\"1\"]');\n        if (fakeSelectedElements.length > 0) {\n          return forall(fakeSelectedElements, el => dom.isEditable(el.parentElement));\n        } else {\n          return isEditableRange(dom, rng);\n        }\n      };\n      const collapse = toStart => {\n        const rng = getRng$1();\n        rng.collapse(!!toStart);\n        setRng(rng);\n      };\n      const getSel = () => win.getSelection ? win.getSelection() : win.document.selection;\n      const getRng$1 = () => {\n        let rng;\n        const tryCompareBoundaryPoints = (how, sourceRange, destinationRange) => {\n          try {\n            return sourceRange.compareBoundaryPoints(how, destinationRange);\n          } catch (ex) {\n            return -1;\n          }\n        };\n        const doc = win.document;\n        if (isNonNullable(editor.bookmark) && !hasFocus(editor)) {\n          const bookmark = getRng(editor);\n          if (bookmark.isSome()) {\n            return bookmark.map(r => processRanges(editor, [r])[0]).getOr(doc.createRange());\n          }\n        }\n        try {\n          const selection = getSel();\n          if (selection && !isRestrictedNode(selection.anchorNode)) {\n            if (selection.rangeCount > 0) {\n              rng = selection.getRangeAt(0);\n            } else {\n              rng = doc.createRange();\n            }\n            rng = processRanges(editor, [rng])[0];\n          }\n        } catch (ex) {}\n        if (!rng) {\n          rng = doc.createRange();\n        }\n        if (isDocument$1(rng.startContainer) && rng.collapsed) {\n          const elm = dom.getRoot();\n          rng.setStart(elm, 0);\n          rng.setEnd(elm, 0);\n        }\n        if (selectedRange && explicitRange) {\n          if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) {\n            rng = explicitRange;\n          } else {\n            selectedRange = null;\n            explicitRange = null;\n          }\n        }\n        return rng;\n      };\n      const setRng = (rng, forward) => {\n        if (!isValidRange(rng)) {\n          return;\n        }\n        const sel = getSel();\n        const evt = editor.dispatch('SetSelectionRange', {\n          range: rng,\n          forward\n        });\n        rng = evt.range;\n        if (sel) {\n          explicitRange = rng;\n          try {\n            sel.removeAllRanges();\n            sel.addRange(rng);\n          } catch (ex) {}\n          if (forward === false && sel.extend) {\n            sel.collapse(rng.endContainer, rng.endOffset);\n            sel.extend(rng.startContainer, rng.startOffset);\n          }\n          selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;\n        }\n        if (!rng.collapsed && rng.startContainer === rng.endContainer && (sel === null || sel === void 0 ? void 0 : sel.setBaseAndExtent)) {\n          if (rng.endOffset - rng.startOffset < 2) {\n            if (rng.startContainer.hasChildNodes()) {\n              const node = rng.startContainer.childNodes[rng.startOffset];\n              if (node && node.nodeName === 'IMG') {\n                sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset);\n                if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) {\n                  sel.setBaseAndExtent(node, 0, node, 1);\n                }\n              }\n            }\n          }\n        }\n        editor.dispatch('AfterSetSelectionRange', {\n          range: rng,\n          forward\n        });\n      };\n      const setNode = elm => {\n        setContent(dom.getOuterHTML(elm));\n        return elm;\n      };\n      const getNode$1 = () => getNode(editor.getBody(), getRng$1());\n      const getSelectedBlocks$1 = (startElm, endElm) => getSelectedBlocks(dom, getRng$1(), startElm, endElm);\n      const isForward = () => {\n        const sel = getSel();\n        const anchorNode = sel === null || sel === void 0 ? void 0 : sel.anchorNode;\n        const focusNode = sel === null || sel === void 0 ? void 0 : sel.focusNode;\n        if (!sel || !anchorNode || !focusNode || isRestrictedNode(anchorNode) || isRestrictedNode(focusNode)) {\n          return true;\n        }\n        const anchorRange = dom.createRng();\n        const focusRange = dom.createRng();\n        try {\n          anchorRange.setStart(anchorNode, sel.anchorOffset);\n          anchorRange.collapse(true);\n          focusRange.setStart(focusNode, sel.focusOffset);\n          focusRange.collapse(true);\n        } catch (e) {\n          return true;\n        }\n        return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;\n      };\n      const normalize = () => {\n        const rng = getRng$1();\n        const sel = getSel();\n        if (!hasMultipleRanges(sel) && hasAnyRanges(editor)) {\n          const normRng = normalize$2(dom, rng);\n          normRng.each(normRng => {\n            setRng(normRng, isForward());\n          });\n          return normRng.getOr(rng);\n        }\n        return rng;\n      };\n      const selectorChanged = (selector, callback) => {\n        selectorChangedWithUnbind(selector, callback);\n        return exports;\n      };\n      const getScrollContainer = () => {\n        let scrollContainer;\n        let node = dom.getRoot();\n        while (node && node.nodeName !== 'BODY') {\n          if (node.scrollHeight > node.clientHeight) {\n            scrollContainer = node;\n            break;\n          }\n          node = node.parentNode;\n        }\n        return scrollContainer;\n      };\n      const scrollIntoView = (elm, alignToTop) => {\n        if (isNonNullable(elm)) {\n          scrollElementIntoView(editor, elm, alignToTop);\n        } else {\n          scrollRangeIntoView(editor, getRng$1(), alignToTop);\n        }\n      };\n      const placeCaretAt = (clientX, clientY) => setRng(fromPoint(clientX, clientY, editor.getDoc()));\n      const getBoundingClientRect = () => {\n        const rng = getRng$1();\n        return rng.collapsed ? CaretPosition.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect();\n      };\n      const destroy = () => {\n        win = selectedRange = explicitRange = null;\n        controlSelection.destroy();\n      };\n      const expand = (options = {\n        type: 'word'\n      }) => setRng(RangeUtils(dom).expand(getRng$1(), options));\n      const exports = {\n        dom,\n        win,\n        serializer,\n        editor,\n        expand,\n        collapse,\n        setCursorLocation,\n        getContent,\n        setContent,\n        getBookmark,\n        moveToBookmark,\n        select: select$1,\n        isCollapsed,\n        isEditable,\n        isForward,\n        setNode,\n        getNode: getNode$1,\n        getSel,\n        setRng,\n        getRng: getRng$1,\n        getStart: getStart$1,\n        getEnd,\n        getSelectedBlocks: getSelectedBlocks$1,\n        normalize,\n        selectorChanged,\n        selectorChangedWithUnbind,\n        getScrollContainer,\n        scrollIntoView,\n        placeCaretAt,\n        getBoundingClientRect,\n        destroy\n      };\n      const bookmarkManager = BookmarkManager(exports);\n      const controlSelection = ControlSelection(exports, editor);\n      exports.bookmarkManager = bookmarkManager;\n      exports.controlSelection = controlSelection;\n      return exports;\n    };\n\n    const register$3 = (htmlParser, settings, dom) => {\n      htmlParser.addAttributeFilter('data-mce-tabindex', (nodes, name) => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          node.attr('tabindex', node.attr('data-mce-tabindex'));\n          node.attr(name, null);\n        }\n      });\n      htmlParser.addAttributeFilter('src,href,style', (nodes, name) => {\n        const internalName = 'data-mce-' + name;\n        const urlConverter = settings.url_converter;\n        const urlConverterScope = settings.url_converter_scope;\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          let value = node.attr(internalName);\n          if (value !== undefined) {\n            node.attr(name, value.length > 0 ? value : null);\n            node.attr(internalName, null);\n          } else {\n            value = node.attr(name);\n            if (name === 'style') {\n              value = dom.serializeStyle(dom.parseStyle(value), node.name);\n            } else if (urlConverter) {\n              value = urlConverter.call(urlConverterScope, value, name, node.name);\n            }\n            node.attr(name, value.length > 0 ? value : null);\n          }\n        }\n      });\n      htmlParser.addAttributeFilter('class', nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          let value = node.attr('class');\n          if (value) {\n            value = value.replace(/(?:^|\\s)mce-item-\\w+(?!\\S)/g, '');\n            node.attr('class', value.length > 0 ? value : null);\n          }\n        }\n      });\n      htmlParser.addAttributeFilter('data-mce-type', (nodes, name, args) => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          if (node.attr('data-mce-type') === 'bookmark' && !args.cleanup) {\n            const hasChildren = Optional.from(node.firstChild).exists(firstChild => {\n              var _a;\n              return !isZwsp$1((_a = firstChild.value) !== null && _a !== void 0 ? _a : '');\n            });\n            if (hasChildren) {\n              node.unwrap();\n            } else {\n              node.remove();\n            }\n          }\n        }\n      });\n      htmlParser.addNodeFilter('script,style', (nodes, name) => {\n        var _a;\n        const trim = value => {\n          return value.replace(/(<!--\\[CDATA\\[|\\]\\]-->)/g, '\\n').replace(/^[\\r\\n]*|[\\r\\n]*$/g, '').replace(/^\\s*((<!--)?(\\s*\\/\\/)?\\s*<!\\[CDATA\\[|(<!--\\s*)?\\/\\*\\s*<!\\[CDATA\\[\\s*\\*\\/|(\\/\\/)?\\s*<!--|\\/\\*\\s*<!--\\s*\\*\\/)\\s*[\\r\\n]*/gi, '').replace(/\\s*(\\/\\*\\s*\\]\\]>\\s*\\*\\/(-->)?|\\s*\\/\\/\\s*\\]\\]>(-->)?|\\/\\/\\s*(-->)?|\\]\\]>|\\/\\*\\s*-->\\s*\\*\\/|\\s*-->\\s*)\\s*$/g, '');\n        };\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          const firstChild = node.firstChild;\n          const value = (_a = firstChild === null || firstChild === void 0 ? void 0 : firstChild.value) !== null && _a !== void 0 ? _a : '';\n          if (name === 'script') {\n            const type = node.attr('type');\n            if (type) {\n              node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\\-/, ''));\n            }\n            if (settings.element_format === 'xhtml' && firstChild && value.length > 0) {\n              firstChild.value = '// <![CDATA[\\n' + trim(value) + '\\n// ]]>';\n            }\n          } else {\n            if (settings.element_format === 'xhtml' && firstChild && value.length > 0) {\n              firstChild.value = '<!--\\n' + trim(value) + '\\n-->';\n            }\n          }\n        }\n      });\n      htmlParser.addNodeFilter('#comment', nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          const value = node.value;\n          if (settings.preserve_cdata && (value === null || value === void 0 ? void 0 : value.indexOf('[CDATA[')) === 0) {\n            node.name = '#cdata';\n            node.type = 4;\n            node.value = dom.decode(value.replace(/^\\[CDATA\\[|\\]\\]$/g, ''));\n          } else if ((value === null || value === void 0 ? void 0 : value.indexOf('mce:protected ')) === 0) {\n            node.name = '#text';\n            node.type = 3;\n            node.raw = true;\n            node.value = unescape(value).substr(14);\n          }\n        }\n      });\n      htmlParser.addNodeFilter('xml:namespace,input', (nodes, name) => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          if (node.type === 7) {\n            node.remove();\n          } else if (node.type === 1) {\n            if (name === 'input' && !node.attr('type')) {\n              node.attr('type', 'text');\n            }\n          }\n        }\n      });\n      htmlParser.addAttributeFilter('data-mce-type', nodes => {\n        each$e(nodes, node => {\n          if (node.attr('data-mce-type') === 'format-caret') {\n            if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) {\n              node.remove();\n            } else {\n              node.unwrap();\n            }\n          }\n        });\n      });\n      htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,data-mce-block,' + 'data-mce-type,data-mce-resize,data-mce-placeholder', (nodes, name) => {\n        let i = nodes.length;\n        while (i--) {\n          nodes[i].attr(name, null);\n        }\n      });\n      if (settings.remove_trailing_brs) {\n        addNodeFilter(settings, htmlParser, htmlParser.schema);\n      }\n    };\n    const trimTrailingBr = rootNode => {\n      const isBr = node => {\n        return (node === null || node === void 0 ? void 0 : node.name) === 'br';\n      };\n      const brNode1 = rootNode.lastChild;\n      if (isBr(brNode1)) {\n        const brNode2 = brNode1.prev;\n        if (isBr(brNode2)) {\n          brNode1.remove();\n          brNode2.remove();\n        }\n      }\n    };\n\n    const preProcess$1 = (editor, node, args) => {\n      let oldDoc;\n      const dom = editor.dom;\n      let clonedNode = node.cloneNode(true);\n      const impl = document.implementation;\n      if (impl.createHTMLDocument) {\n        const doc = impl.createHTMLDocument('');\n        Tools.each(clonedNode.nodeName === 'BODY' ? clonedNode.childNodes : [clonedNode], node => {\n          doc.body.appendChild(doc.importNode(node, true));\n        });\n        if (clonedNode.nodeName !== 'BODY') {\n          clonedNode = doc.body.firstChild;\n        } else {\n          clonedNode = doc.body;\n        }\n        oldDoc = dom.doc;\n        dom.doc = doc;\n      }\n      firePreProcess(editor, {\n        ...args,\n        node: clonedNode\n      });\n      if (oldDoc) {\n        dom.doc = oldDoc;\n      }\n      return clonedNode;\n    };\n    const shouldFireEvent = (editor, args) => {\n      return isNonNullable(editor) && editor.hasEventListeners('PreProcess') && !args.no_events;\n    };\n    const process$1 = (editor, node, args) => {\n      return shouldFireEvent(editor, args) ? preProcess$1(editor, node, args) : node;\n    };\n\n    const addTempAttr = (htmlParser, tempAttrs, name) => {\n      if (Tools.inArray(tempAttrs, name) === -1) {\n        htmlParser.addAttributeFilter(name, (nodes, name) => {\n          let i = nodes.length;\n          while (i--) {\n            nodes[i].attr(name, null);\n          }\n        });\n        tempAttrs.push(name);\n      }\n    };\n    const postProcess = (editor, args, content) => {\n      if (!args.no_events && editor) {\n        const outArgs = firePostProcess(editor, {\n          ...args,\n          content\n        });\n        return outArgs.content;\n      } else {\n        return content;\n      }\n    };\n    const getHtmlFromNode = (dom, node, args) => {\n      const html = trim$2(args.getInner ? node.innerHTML : dom.getOuterHTML(node));\n      return args.selection || isWsPreserveElement(SugarElement.fromDom(node)) ? html : Tools.trim(html);\n    };\n    const parseHtml = (htmlParser, html, args) => {\n      const parserArgs = args.selection ? {\n        forced_root_block: false,\n        ...args\n      } : args;\n      const rootNode = htmlParser.parse(html, parserArgs);\n      trimTrailingBr(rootNode);\n      return rootNode;\n    };\n    const serializeNode = (settings, schema, node) => {\n      const htmlSerializer = HtmlSerializer(settings, schema);\n      return htmlSerializer.serialize(node);\n    };\n    const toHtml = (editor, settings, schema, rootNode, args) => {\n      const content = serializeNode(settings, schema, rootNode);\n      return postProcess(editor, args, content);\n    };\n    const DomSerializerImpl = (settings, editor) => {\n      const tempAttrs = ['data-mce-selected'];\n      const defaultedSettings = {\n        entity_encoding: 'named',\n        remove_trailing_brs: true,\n        pad_empty_with_br: false,\n        ...settings\n      };\n      const dom = editor && editor.dom ? editor.dom : DOMUtils.DOM;\n      const schema = editor && editor.schema ? editor.schema : Schema(defaultedSettings);\n      const htmlParser = DomParser(defaultedSettings, schema);\n      register$3(htmlParser, defaultedSettings, dom);\n      const serialize = (node, parserArgs = {}) => {\n        const args = {\n          format: 'html',\n          ...parserArgs\n        };\n        const targetNode = process$1(editor, node, args);\n        const html = getHtmlFromNode(dom, targetNode, args);\n        const rootNode = parseHtml(htmlParser, html, args);\n        return args.format === 'tree' ? rootNode : toHtml(editor, defaultedSettings, schema, rootNode, args);\n      };\n      return {\n        schema,\n        addNodeFilter: htmlParser.addNodeFilter,\n        addAttributeFilter: htmlParser.addAttributeFilter,\n        serialize: serialize,\n        addRules: schema.addValidElements,\n        setRules: schema.setValidElements,\n        addTempAttr: curry(addTempAttr, htmlParser, tempAttrs),\n        getTempAttrs: constant(tempAttrs),\n        getNodeFilters: htmlParser.getNodeFilters,\n        getAttributeFilters: htmlParser.getAttributeFilters,\n        removeNodeFilter: htmlParser.removeNodeFilter,\n        removeAttributeFilter: htmlParser.removeAttributeFilter\n      };\n    };\n\n    const DomSerializer = (settings, editor) => {\n      const domSerializer = DomSerializerImpl(settings, editor);\n      return {\n        schema: domSerializer.schema,\n        addNodeFilter: domSerializer.addNodeFilter,\n        addAttributeFilter: domSerializer.addAttributeFilter,\n        serialize: domSerializer.serialize,\n        addRules: domSerializer.addRules,\n        setRules: domSerializer.setRules,\n        addTempAttr: domSerializer.addTempAttr,\n        getTempAttrs: domSerializer.getTempAttrs,\n        getNodeFilters: domSerializer.getNodeFilters,\n        getAttributeFilters: domSerializer.getAttributeFilters,\n        removeNodeFilter: domSerializer.removeNodeFilter,\n        removeAttributeFilter: domSerializer.removeAttributeFilter\n      };\n    };\n\n    const defaultFormat$1 = 'html';\n    const setupArgs$1 = (args, format) => ({\n      ...args,\n      format,\n      get: true,\n      getInner: true\n    });\n    const getContent = (editor, args = {}) => {\n      const format = args.format ? args.format : defaultFormat$1;\n      const defaultedArgs = setupArgs$1(args, format);\n      return preProcessGetContent(editor, defaultedArgs).fold(identity, updatedArgs => {\n        const content = getContent$2(editor, updatedArgs);\n        return postProcessGetContent(editor, content, updatedArgs);\n      });\n    };\n\n    const defaultFormat = 'html';\n    const setupArgs = (args, content) => ({\n      format: defaultFormat,\n      ...args,\n      set: true,\n      content\n    });\n    const setContent = (editor, content, args = {}) => {\n      const defaultedArgs = setupArgs(args, content);\n      return preProcessSetContent(editor, defaultedArgs).map(updatedArgs => {\n        const result = setContent$2(editor, updatedArgs.content, updatedArgs);\n        postProcessSetContent(editor, result.html, updatedArgs);\n        return result.content;\n      }).getOr(content);\n    };\n\n    const removedOptions = ('autoresize_on_init,content_editable_state,padd_empty_with_br,block_elements,' + 'boolean_attributes,editor_deselector,editor_selector,elements,file_browser_callback_types,filepicker_validator_handler,' + 'force_hex_style_colors,force_p_newlines,gecko_spellcheck,images_dataimg_filter,media_scripts,mode,move_caret_before_on_enter_elements,' + 'non_empty_elements,self_closing_elements,short_ended_elements,special,spellchecker_select_languages,spellchecker_whitelist,' + 'tab_focus,tabfocus_elements,table_responsive_width,text_block_elements,text_inline_elements,toolbar_drawer,types,validate,whitespace_elements,' + 'paste_enable_default_filters,paste_filter_drop,paste_word_valid_elements,paste_retain_style_properties,paste_convert_word_fake_lists').split(',');\n    const deprecatedOptions = 'template_cdate_classes,template_mdate_classes,template_selected_content_classes,template_preview_replace_values,template_replace_values,templates,template_cdate_format,template_mdate_format'.split(',');\n    const removedPlugins = 'bbcode,colorpicker,contextmenu,fullpage,legacyoutput,spellchecker,textcolor'.split(',');\n    const deprecatedPlugins = [{\n      name: 'template',\n      replacedWith: 'Advanced Template'\n    }, {\n      name: 'rtc'\n    }];\n    const getMatchingOptions = (options, searchingFor) => {\n      const settingNames = filter$5(searchingFor, setting => has$2(options, setting));\n      return sort(settingNames);\n    };\n    const getRemovedOptions = options => {\n      const settingNames = getMatchingOptions(options, removedOptions);\n      const forcedRootBlock = options.forced_root_block;\n      if (forcedRootBlock === false || forcedRootBlock === '') {\n        settingNames.push('forced_root_block (false only)');\n      }\n      return sort(settingNames);\n    };\n    const getDeprecatedOptions = options => getMatchingOptions(options, deprecatedOptions);\n    const getMatchingPlugins = (options, searchingFor) => {\n      const plugins = Tools.makeMap(options.plugins, ' ');\n      const hasPlugin = plugin => has$2(plugins, plugin);\n      const pluginNames = filter$5(searchingFor, hasPlugin);\n      return sort(pluginNames);\n    };\n    const getRemovedPlugins = options => getMatchingPlugins(options, removedPlugins);\n    const getDeprecatedPlugins = options => getMatchingPlugins(options, deprecatedPlugins.map(entry => entry.name));\n    const logRemovedWarnings = (rawOptions, normalizedOptions) => {\n      const removedOptions = getRemovedOptions(rawOptions);\n      const removedPlugins = getRemovedPlugins(normalizedOptions);\n      const hasRemovedPlugins = removedPlugins.length > 0;\n      const hasRemovedOptions = removedOptions.length > 0;\n      const isLegacyMobileTheme = normalizedOptions.theme === 'mobile';\n      if (hasRemovedPlugins || hasRemovedOptions || isLegacyMobileTheme) {\n        const listJoiner = '\\n- ';\n        const themesMessage = isLegacyMobileTheme ? \"\\n\\nThemes:\".concat(listJoiner, \"mobile\") : '';\n        const pluginsMessage = hasRemovedPlugins ? \"\\n\\nPlugins:\".concat(listJoiner).concat(removedPlugins.join(listJoiner)) : '';\n        const optionsMessage = hasRemovedOptions ? \"\\n\\nOptions:\".concat(listJoiner).concat(removedOptions.join(listJoiner)) : '';\n        console.warn('The following deprecated features are currently enabled and have been removed in TinyMCE 6.0. These features will no longer work and should be removed from the TinyMCE configuration. ' + 'See https://www.tiny.cloud/docs/tinymce/6/migration-from-5x/ for more information.' + themesMessage + pluginsMessage + optionsMessage);\n      }\n    };\n    const getPluginDescription = name => find$2(deprecatedPlugins, entry => entry.name === name).fold(() => name, entry => {\n      if (entry.replacedWith) {\n        return \"\".concat(name, \", replaced by \").concat(entry.replacedWith);\n      } else {\n        return name;\n      }\n    });\n    const logDeprecatedWarnings = (rawOptions, normalizedOptions) => {\n      const deprecatedOptions = getDeprecatedOptions(rawOptions);\n      const deprecatedPlugins = getDeprecatedPlugins(normalizedOptions);\n      const hasDeprecatedPlugins = deprecatedPlugins.length > 0;\n      const hasDeprecatedOptions = deprecatedOptions.length > 0;\n      if (hasDeprecatedPlugins || hasDeprecatedOptions) {\n        const listJoiner = '\\n- ';\n        const pluginsMessage = hasDeprecatedPlugins ? \"\\n\\nPlugins:\".concat(listJoiner).concat(deprecatedPlugins.map(getPluginDescription).join(listJoiner)) : '';\n        const optionsMessage = hasDeprecatedOptions ? \"\\n\\nOptions:\".concat(listJoiner).concat(deprecatedOptions.join(listJoiner)) : '';\n        console.warn('The following deprecated features are currently enabled but will be removed soon.' + pluginsMessage + optionsMessage);\n      }\n    };\n    const logWarnings = (rawOptions, normalizedOptions) => {\n      logRemovedWarnings(rawOptions, normalizedOptions);\n      logDeprecatedWarnings(rawOptions, normalizedOptions);\n    };\n\n    const DOM$8 = DOMUtils.DOM;\n    const restoreOriginalStyles = editor => {\n      DOM$8.setStyle(editor.id, 'display', editor.orgDisplay);\n    };\n    const safeDestroy = x => Optional.from(x).each(x => x.destroy());\n    const clearDomReferences = editor => {\n      const ed = editor;\n      ed.contentAreaContainer = ed.formElement = ed.container = ed.editorContainer = null;\n      ed.bodyElement = ed.contentDocument = ed.contentWindow = null;\n      ed.iframeElement = ed.targetElm = null;\n      const selection = editor.selection;\n      if (selection) {\n        const dom = selection.dom;\n        ed.selection = selection.win = selection.dom = dom.doc = null;\n      }\n    };\n    const restoreForm = editor => {\n      const form = editor.formElement;\n      if (form) {\n        if (form._mceOldSubmit) {\n          form.submit = form._mceOldSubmit;\n          delete form._mceOldSubmit;\n        }\n        DOM$8.unbind(form, 'submit reset', editor.formEventDelegate);\n      }\n    };\n    const remove$1 = editor => {\n      if (!editor.removed) {\n        const {\n          _selectionOverrides,\n          editorUpload\n        } = editor;\n        const body = editor.getBody();\n        const element = editor.getElement();\n        if (body) {\n          editor.save({\n            is_removing: true\n          });\n        }\n        editor.removed = true;\n        editor.unbindAllNativeEvents();\n        if (editor.hasHiddenInput && isNonNullable(element === null || element === void 0 ? void 0 : element.nextSibling)) {\n          DOM$8.remove(element.nextSibling);\n        }\n        fireRemove(editor);\n        editor.editorManager.remove(editor);\n        if (!editor.inline && body) {\n          restoreOriginalStyles(editor);\n        }\n        fireDetach(editor);\n        DOM$8.remove(editor.getContainer());\n        safeDestroy(_selectionOverrides);\n        safeDestroy(editorUpload);\n        editor.destroy();\n      }\n    };\n    const destroy = (editor, automatic) => {\n      const {\n        selection,\n        dom\n      } = editor;\n      if (editor.destroyed) {\n        return;\n      }\n      if (!automatic && !editor.removed) {\n        editor.remove();\n        return;\n      }\n      if (!automatic) {\n        editor.editorManager.off('beforeunload', editor._beforeUnload);\n        if (editor.theme && editor.theme.destroy) {\n          editor.theme.destroy();\n        }\n        safeDestroy(selection);\n        safeDestroy(dom);\n      }\n      restoreForm(editor);\n      clearDomReferences(editor);\n      editor.destroyed = true;\n    };\n\n    const CreateIconManager = () => {\n      const lookup = {};\n      const add = (id, iconPack) => {\n        lookup[id] = iconPack;\n      };\n      const get = id => {\n        if (lookup[id]) {\n          return lookup[id];\n        } else {\n          return {\n            icons: {}\n          };\n        }\n      };\n      const has = id => has$2(lookup, id);\n      return {\n        add,\n        get,\n        has\n      };\n    };\n    const IconManager = CreateIconManager();\n\n    const ModelManager = AddOnManager.ModelManager;\n\n    const getProp = (propName, elm) => {\n      const rawElm = elm.dom;\n      return rawElm[propName];\n    };\n    const getComputedSizeProp = (propName, elm) => parseInt(get$7(elm, propName), 10);\n    const getClientWidth = curry(getProp, 'clientWidth');\n    const getClientHeight = curry(getProp, 'clientHeight');\n    const getMarginTop = curry(getComputedSizeProp, 'margin-top');\n    const getMarginLeft = curry(getComputedSizeProp, 'margin-left');\n    const getBoundingClientRect = elm => elm.dom.getBoundingClientRect();\n    const isInsideElementContentArea = (bodyElm, clientX, clientY) => {\n      const clientWidth = getClientWidth(bodyElm);\n      const clientHeight = getClientHeight(bodyElm);\n      return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight;\n    };\n    const transpose = (inline, elm, clientX, clientY) => {\n      const clientRect = getBoundingClientRect(elm);\n      const deltaX = inline ? clientRect.left + elm.dom.clientLeft + getMarginLeft(elm) : 0;\n      const deltaY = inline ? clientRect.top + elm.dom.clientTop + getMarginTop(elm) : 0;\n      const x = clientX - deltaX;\n      const y = clientY - deltaY;\n      return {\n        x,\n        y\n      };\n    };\n    const isXYInContentArea = (editor, clientX, clientY) => {\n      const bodyElm = SugarElement.fromDom(editor.getBody());\n      const targetElm = editor.inline ? bodyElm : documentElement(bodyElm);\n      const transposedPoint = transpose(editor.inline, targetElm, clientX, clientY);\n      return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y);\n    };\n    const fromDomSafe = node => Optional.from(node).map(SugarElement.fromDom);\n    const isEditorAttachedToDom = editor => {\n      const rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer();\n      return fromDomSafe(rawContainer).map(inBody).getOr(false);\n    };\n\n    var NotificationManagerImpl = () => {\n      const unimplemented = () => {\n        throw new Error('Theme did not provide a NotificationManager implementation.');\n      };\n      return {\n        open: unimplemented,\n        close: unimplemented,\n        getArgs: unimplemented\n      };\n    };\n\n    const NotificationManager = editor => {\n      const notifications = [];\n      const getImplementation = () => {\n        const theme = editor.theme;\n        return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl();\n      };\n      const getTopNotification = () => {\n        return Optional.from(notifications[0]);\n      };\n      const isEqual = (a, b) => {\n        return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout;\n      };\n      const reposition = () => {\n        each$e(notifications, notification => {\n          notification.reposition();\n        });\n      };\n      const addNotification = notification => {\n        notifications.push(notification);\n      };\n      const closeNotification = notification => {\n        findIndex$2(notifications, otherNotification => {\n          return otherNotification === notification;\n        }).each(index => {\n          notifications.splice(index, 1);\n        });\n      };\n      const open = (spec, fireEvent = true) => {\n        if (editor.removed || !isEditorAttachedToDom(editor)) {\n          return {};\n        }\n        if (fireEvent) {\n          editor.dispatch('BeforeOpenNotification', {\n            notification: spec\n          });\n        }\n        return find$2(notifications, notification => {\n          return isEqual(getImplementation().getArgs(notification), spec);\n        }).getOrThunk(() => {\n          editor.editorManager.setActive(editor);\n          const notification = getImplementation().open(spec, () => {\n            closeNotification(notification);\n            reposition();\n            if (hasEditorOrUiFocus(editor)) {\n              getTopNotification().fold(() => editor.focus(), top => focus$1(SugarElement.fromDom(top.getEl())));\n            }\n          });\n          addNotification(notification);\n          reposition();\n          editor.dispatch('OpenNotification', {\n            notification: {\n              ...notification\n            }\n          });\n          return notification;\n        });\n      };\n      const close = () => {\n        getTopNotification().each(notification => {\n          getImplementation().close(notification);\n          closeNotification(notification);\n          reposition();\n        });\n      };\n      const getNotifications = constant(notifications);\n      const registerEvents = editor => {\n        editor.on('SkinLoaded', () => {\n          const serviceMessage = getServiceMessage(editor);\n          if (serviceMessage) {\n            open({\n              text: serviceMessage,\n              type: 'warning',\n              timeout: 0\n            }, false);\n          }\n          reposition();\n        });\n        editor.on('show ResizeEditor ResizeWindow NodeChange', () => {\n          requestAnimationFrame(reposition);\n        });\n        editor.on('remove', () => {\n          each$e(notifications.slice(), notification => {\n            getImplementation().close(notification);\n          });\n        });\n      };\n      registerEvents(editor);\n      return {\n        open,\n        close,\n        getNotifications\n      };\n    };\n\n    const PluginManager = AddOnManager.PluginManager;\n\n    const ThemeManager = AddOnManager.ThemeManager;\n\n    var WindowManagerImpl = () => {\n      const unimplemented = () => {\n        throw new Error('Theme did not provide a WindowManager implementation.');\n      };\n      return {\n        open: unimplemented,\n        openUrl: unimplemented,\n        alert: unimplemented,\n        confirm: unimplemented,\n        close: unimplemented\n      };\n    };\n\n    const WindowManager = editor => {\n      let dialogs = [];\n      const getImplementation = () => {\n        const theme = editor.theme;\n        return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl();\n      };\n      const funcBind = (scope, f) => {\n        return (...args) => {\n          return f ? f.apply(scope, args) : undefined;\n        };\n      };\n      const fireOpenEvent = dialog => {\n        editor.dispatch('OpenWindow', {\n          dialog\n        });\n      };\n      const fireCloseEvent = dialog => {\n        editor.dispatch('CloseWindow', {\n          dialog\n        });\n      };\n      const addDialog = dialog => {\n        dialogs.push(dialog);\n        fireOpenEvent(dialog);\n      };\n      const closeDialog = dialog => {\n        fireCloseEvent(dialog);\n        dialogs = filter$5(dialogs, otherDialog => {\n          return otherDialog !== dialog;\n        });\n        if (dialogs.length === 0) {\n          editor.focus();\n        }\n      };\n      const getTopDialog = () => {\n        return Optional.from(dialogs[dialogs.length - 1]);\n      };\n      const storeSelectionAndOpenDialog = openDialog => {\n        editor.editorManager.setActive(editor);\n        store(editor);\n        editor.ui.show();\n        const dialog = openDialog();\n        addDialog(dialog);\n        return dialog;\n      };\n      const open = (args, params) => {\n        return storeSelectionAndOpenDialog(() => getImplementation().open(args, params, closeDialog));\n      };\n      const openUrl = args => {\n        return storeSelectionAndOpenDialog(() => getImplementation().openUrl(args, closeDialog));\n      };\n      const alert = (message, callback, scope) => {\n        const windowManagerImpl = getImplementation();\n        windowManagerImpl.alert(message, funcBind(scope ? scope : windowManagerImpl, callback));\n      };\n      const confirm = (message, callback, scope) => {\n        const windowManagerImpl = getImplementation();\n        windowManagerImpl.confirm(message, funcBind(scope ? scope : windowManagerImpl, callback));\n      };\n      const close = () => {\n        getTopDialog().each(dialog => {\n          getImplementation().close(dialog);\n          closeDialog(dialog);\n        });\n      };\n      editor.on('remove', () => {\n        each$e(dialogs, dialog => {\n          getImplementation().close(dialog);\n        });\n      });\n      return {\n        open,\n        openUrl,\n        alert,\n        confirm,\n        close\n      };\n    };\n\n    const displayNotification = (editor, message) => {\n      editor.notificationManager.open({\n        type: 'error',\n        text: message\n      });\n    };\n    const displayError = (editor, message) => {\n      if (editor._skinLoaded) {\n        displayNotification(editor, message);\n      } else {\n        editor.on('SkinLoaded', () => {\n          displayNotification(editor, message);\n        });\n      }\n    };\n    const uploadError = (editor, message) => {\n      displayError(editor, I18n.translate(['Failed to upload image: {0}', message]));\n    };\n    const logError = (editor, errorType, msg) => {\n      fireError(editor, errorType, {\n        message: msg\n      });\n      console.error(msg);\n    };\n    const createLoadError = (type, url, name) => name ? \"Failed to load \".concat(type, \": \").concat(name, \" from url \").concat(url) : \"Failed to load \".concat(type, \" url: \").concat(url);\n    const pluginLoadError = (editor, url, name) => {\n      logError(editor, 'PluginLoadError', createLoadError('plugin', url, name));\n    };\n    const iconsLoadError = (editor, url, name) => {\n      logError(editor, 'IconsLoadError', createLoadError('icons', url, name));\n    };\n    const languageLoadError = (editor, url, name) => {\n      logError(editor, 'LanguageLoadError', createLoadError('language', url, name));\n    };\n    const themeLoadError = (editor, url, name) => {\n      logError(editor, 'ThemeLoadError', createLoadError('theme', url, name));\n    };\n    const modelLoadError = (editor, url, name) => {\n      logError(editor, 'ModelLoadError', createLoadError('model', url, name));\n    };\n    const pluginInitError = (editor, name, err) => {\n      const message = I18n.translate(['Failed to initialize plugin: {0}', name]);\n      fireError(editor, 'PluginLoadError', {\n        message\n      });\n      initError(message, err);\n      displayError(editor, message);\n    };\n    const initError = (message, ...x) => {\n      const console = window.console;\n      if (console) {\n        if (console.error) {\n          console.error(message, ...x);\n        } else {\n          console.log(message, ...x);\n        }\n      }\n    };\n\n    const isContentCssSkinName = url => /^[a-z0-9\\-]+$/i.test(url);\n    const toContentSkinResourceName = url => 'content/' + url + '/content.css';\n    const isBundledCssSkinName = url => tinymce.Resource.has(toContentSkinResourceName(url));\n    const getContentCssUrls = editor => {\n      return transformToUrls(editor, getContentCss(editor));\n    };\n    const getFontCssUrls = editor => {\n      return transformToUrls(editor, getFontCss(editor));\n    };\n    const transformToUrls = (editor, cssLinks) => {\n      const skinUrl = editor.editorManager.baseURL + '/skins/content';\n      const suffix = editor.editorManager.suffix;\n      const contentCssFile = \"content\".concat(suffix, \".css\");\n      return map$3(cssLinks, url => {\n        if (isBundledCssSkinName(url)) {\n          return url;\n        } else if (isContentCssSkinName(url) && !editor.inline) {\n          return \"\".concat(skinUrl, \"/\").concat(url, \"/\").concat(contentCssFile);\n        } else {\n          return editor.documentBaseURI.toAbsolute(url);\n        }\n      });\n    };\n    const appendContentCssFromSettings = editor => {\n      editor.contentCSS = editor.contentCSS.concat(getContentCssUrls(editor), getFontCssUrls(editor));\n    };\n\n    const getAllImages = elm => {\n      return elm ? from(elm.getElementsByTagName('img')) : [];\n    };\n    const ImageScanner = (uploadStatus, blobCache) => {\n      const cachedPromises = {};\n      const findAll = (elm, predicate = always) => {\n        const images = filter$5(getAllImages(elm), img => {\n          const src = img.src;\n          if (img.hasAttribute('data-mce-bogus')) {\n            return false;\n          }\n          if (img.hasAttribute('data-mce-placeholder')) {\n            return false;\n          }\n          if (!src || src === Env.transparentSrc) {\n            return false;\n          }\n          if (startsWith(src, 'blob:')) {\n            return !uploadStatus.isUploaded(src) && predicate(img);\n          }\n          if (startsWith(src, 'data:')) {\n            return predicate(img);\n          }\n          return false;\n        });\n        const promises = map$3(images, img => {\n          const imageSrc = img.src;\n          if (has$2(cachedPromises, imageSrc)) {\n            return cachedPromises[imageSrc].then(imageInfo => {\n              if (isString(imageInfo)) {\n                return imageInfo;\n              } else {\n                return {\n                  image: img,\n                  blobInfo: imageInfo.blobInfo\n                };\n              }\n            });\n          } else {\n            const newPromise = imageToBlobInfo(blobCache, imageSrc).then(blobInfo => {\n              delete cachedPromises[imageSrc];\n              return {\n                image: img,\n                blobInfo\n              };\n            }).catch(error => {\n              delete cachedPromises[imageSrc];\n              return error;\n            });\n            cachedPromises[imageSrc] = newPromise;\n            return newPromise;\n          }\n        });\n        return Promise.all(promises);\n      };\n      return {\n        findAll\n      };\n    };\n\n    const UploadStatus = () => {\n      const PENDING = 1,\n        UPLOADED = 2;\n      let blobUriStatuses = {};\n      const createStatus = (status, resultUri) => {\n        return {\n          status,\n          resultUri\n        };\n      };\n      const hasBlobUri = blobUri => {\n        return blobUri in blobUriStatuses;\n      };\n      const getResultUri = blobUri => {\n        const result = blobUriStatuses[blobUri];\n        return result ? result.resultUri : null;\n      };\n      const isPending = blobUri => {\n        return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false;\n      };\n      const isUploaded = blobUri => {\n        return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false;\n      };\n      const markPending = blobUri => {\n        blobUriStatuses[blobUri] = createStatus(PENDING, null);\n      };\n      const markUploaded = (blobUri, resultUri) => {\n        blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri);\n      };\n      const removeFailed = blobUri => {\n        delete blobUriStatuses[blobUri];\n      };\n      const destroy = () => {\n        blobUriStatuses = {};\n      };\n      return {\n        hasBlobUri,\n        getResultUri,\n        isPending,\n        isUploaded,\n        markPending,\n        markUploaded,\n        removeFailed,\n        destroy\n      };\n    };\n\n    let count = 0;\n    const seed = () => {\n      const rnd = () => {\n        return Math.round(Math.random() * 4294967295).toString(36);\n      };\n      const now = new Date().getTime();\n      return 's' + now.toString(36) + rnd() + rnd() + rnd();\n    };\n    const uuid = prefix => {\n      return prefix + count++ + seed();\n    };\n\n    const BlobCache = () => {\n      let cache = [];\n      const mimeToExt = mime => {\n        const mimes = {\n          'image/jpeg': 'jpg',\n          'image/jpg': 'jpg',\n          'image/gif': 'gif',\n          'image/png': 'png',\n          'image/apng': 'apng',\n          'image/avif': 'avif',\n          'image/svg+xml': 'svg',\n          'image/webp': 'webp',\n          'image/bmp': 'bmp',\n          'image/tiff': 'tiff'\n        };\n        return mimes[mime.toLowerCase()] || 'dat';\n      };\n      const create = (o, blob, base64, name, filename) => {\n        if (isString(o)) {\n          const id = o;\n          return toBlobInfo({\n            id,\n            name,\n            filename,\n            blob: blob,\n            base64: base64\n          });\n        } else if (isObject(o)) {\n          return toBlobInfo(o);\n        } else {\n          throw new Error('Unknown input type');\n        }\n      };\n      const toBlobInfo = o => {\n        if (!o.blob || !o.base64) {\n          throw new Error('blob and base64 representations of the image are required for BlobInfo to be created');\n        }\n        const id = o.id || uuid('blobid');\n        const name = o.name || id;\n        const blob = o.blob;\n        return {\n          id: constant(id),\n          name: constant(name),\n          filename: constant(o.filename || name + '.' + mimeToExt(blob.type)),\n          blob: constant(blob),\n          base64: constant(o.base64),\n          blobUri: constant(o.blobUri || URL.createObjectURL(blob)),\n          uri: constant(o.uri),\n          library: constant(o.library)\n        };\n      };\n      const add = blobInfo => {\n        if (!get(blobInfo.id())) {\n          cache.push(blobInfo);\n        }\n      };\n      const findFirst = predicate => find$2(cache, predicate).getOrUndefined();\n      const get = id => findFirst(cachedBlobInfo => cachedBlobInfo.id() === id);\n      const getByUri = blobUri => findFirst(blobInfo => blobInfo.blobUri() === blobUri);\n      const getByData = (base64, type) => findFirst(blobInfo => blobInfo.base64() === base64 && blobInfo.blob().type === type);\n      const removeByUri = blobUri => {\n        cache = filter$5(cache, blobInfo => {\n          if (blobInfo.blobUri() === blobUri) {\n            URL.revokeObjectURL(blobInfo.blobUri());\n            return false;\n          }\n          return true;\n        });\n      };\n      const destroy = () => {\n        each$e(cache, cachedBlobInfo => {\n          URL.revokeObjectURL(cachedBlobInfo.blobUri());\n        });\n        cache = [];\n      };\n      return {\n        create,\n        add,\n        get,\n        getByUri,\n        getByData,\n        findFirst,\n        removeByUri,\n        destroy\n      };\n    };\n\n    const Uploader = (uploadStatus, settings) => {\n      const pendingPromises = {};\n      const pathJoin = (path1, path2) => {\n        if (path1) {\n          return path1.replace(/\\/$/, '') + '/' + path2.replace(/^\\//, '');\n        }\n        return path2;\n      };\n      const defaultHandler = (blobInfo, progress) => new Promise((success, failure) => {\n        const xhr = new XMLHttpRequest();\n        xhr.open('POST', settings.url);\n        xhr.withCredentials = settings.credentials;\n        xhr.upload.onprogress = e => {\n          progress(e.loaded / e.total * 100);\n        };\n        xhr.onerror = () => {\n          failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\n        };\n        xhr.onload = () => {\n          if (xhr.status < 200 || xhr.status >= 300) {\n            failure('HTTP Error: ' + xhr.status);\n            return;\n          }\n          const json = JSON.parse(xhr.responseText);\n          if (!json || !isString(json.location)) {\n            failure('Invalid JSON: ' + xhr.responseText);\n            return;\n          }\n          success(pathJoin(settings.basePath, json.location));\n        };\n        const formData = new FormData();\n        formData.append('file', blobInfo.blob(), blobInfo.filename());\n        xhr.send(formData);\n      });\n      const uploadHandler = isFunction(settings.handler) ? settings.handler : defaultHandler;\n      const noUpload = () => new Promise(resolve => {\n        resolve([]);\n      });\n      const handlerSuccess = (blobInfo, url) => ({\n        url,\n        blobInfo,\n        status: true\n      });\n      const handlerFailure = (blobInfo, error) => ({\n        url: '',\n        blobInfo,\n        status: false,\n        error\n      });\n      const resolvePending = (blobUri, result) => {\n        Tools.each(pendingPromises[blobUri], resolve => {\n          resolve(result);\n        });\n        delete pendingPromises[blobUri];\n      };\n      const uploadBlobInfo = (blobInfo, handler, openNotification) => {\n        uploadStatus.markPending(blobInfo.blobUri());\n        return new Promise(resolve => {\n          let notification;\n          let progress;\n          try {\n            const closeNotification = () => {\n              if (notification) {\n                notification.close();\n                progress = noop;\n              }\n            };\n            const success = url => {\n              closeNotification();\n              uploadStatus.markUploaded(blobInfo.blobUri(), url);\n              resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url));\n              resolve(handlerSuccess(blobInfo, url));\n            };\n            const failure = error => {\n              closeNotification();\n              uploadStatus.removeFailed(blobInfo.blobUri());\n              resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error));\n              resolve(handlerFailure(blobInfo, error));\n            };\n            progress = percent => {\n              if (percent < 0 || percent > 100) {\n                return;\n              }\n              Optional.from(notification).orThunk(() => Optional.from(openNotification).map(apply$1)).each(n => {\n                notification = n;\n                n.progressBar.value(percent);\n              });\n            };\n            handler(blobInfo, progress).then(success, err => {\n              failure(isString(err) ? {\n                message: err\n              } : err);\n            });\n          } catch (ex) {\n            resolve(handlerFailure(blobInfo, ex));\n          }\n        });\n      };\n      const isDefaultHandler = handler => handler === defaultHandler;\n      const pendingUploadBlobInfo = blobInfo => {\n        const blobUri = blobInfo.blobUri();\n        return new Promise(resolve => {\n          pendingPromises[blobUri] = pendingPromises[blobUri] || [];\n          pendingPromises[blobUri].push(resolve);\n        });\n      };\n      const uploadBlobs = (blobInfos, openNotification) => {\n        blobInfos = Tools.grep(blobInfos, blobInfo => !uploadStatus.isUploaded(blobInfo.blobUri()));\n        return Promise.all(Tools.map(blobInfos, blobInfo => uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, uploadHandler, openNotification)));\n      };\n      const upload = (blobInfos, openNotification) => !settings.url && isDefaultHandler(uploadHandler) ? noUpload() : uploadBlobs(blobInfos, openNotification);\n      return {\n        upload\n      };\n    };\n\n    const openNotification = editor => () => editor.notificationManager.open({\n      text: editor.translate('Image uploading...'),\n      type: 'info',\n      timeout: -1,\n      progressBar: true\n    });\n    const createUploader = (editor, uploadStatus) => Uploader(uploadStatus, {\n      url: getImageUploadUrl(editor),\n      basePath: getImageUploadBasePath(editor),\n      credentials: getImagesUploadCredentials(editor),\n      handler: getImagesUploadHandler(editor)\n    });\n    const ImageUploader = editor => {\n      const uploadStatus = UploadStatus();\n      const uploader = createUploader(editor, uploadStatus);\n      return {\n        upload: (blobInfos, showNotification = true) => uploader.upload(blobInfos, showNotification ? openNotification(editor) : undefined)\n      };\n    };\n\n    const isEmptyForPadding = (editor, element) => editor.dom.isEmpty(element.dom) && isNonNullable(editor.schema.getTextBlockElements()[name(element)]);\n    const addPaddingToEmpty = editor => element => {\n      if (isEmptyForPadding(editor, element)) {\n        append$1(element, SugarElement.fromHtml('<br data-mce-bogus=\"1\" />'));\n      }\n    };\n    const EditorUpload = editor => {\n      const blobCache = BlobCache();\n      let uploader, imageScanner;\n      const uploadStatus = UploadStatus();\n      const urlFilters = [];\n      const aliveGuard = callback => {\n        return result => {\n          if (editor.selection) {\n            return callback(result);\n          }\n          return [];\n        };\n      };\n      const cacheInvalidator = url => url + (url.indexOf('?') === -1 ? '?' : '&') + new Date().getTime();\n      const replaceString = (content, search, replace) => {\n        let index = 0;\n        do {\n          index = content.indexOf(search, index);\n          if (index !== -1) {\n            content = content.substring(0, index) + replace + content.substr(index + search.length);\n            index += replace.length - search.length + 1;\n          }\n        } while (index !== -1);\n        return content;\n      };\n      const replaceImageUrl = (content, targetUrl, replacementUrl) => {\n        const replacementString = \"src=\\\"\".concat(replacementUrl, \"\\\"\").concat(replacementUrl === Env.transparentSrc ? ' data-mce-placeholder=\"1\"' : '');\n        content = replaceString(content, \"src=\\\"\".concat(targetUrl, \"\\\"\"), replacementString);\n        content = replaceString(content, 'data-mce-src=\"' + targetUrl + '\"', 'data-mce-src=\"' + replacementUrl + '\"');\n        return content;\n      };\n      const replaceUrlInUndoStack = (targetUrl, replacementUrl) => {\n        each$e(editor.undoManager.data, level => {\n          if (level.type === 'fragmented') {\n            level.fragments = map$3(level.fragments, fragment => replaceImageUrl(fragment, targetUrl, replacementUrl));\n          } else {\n            level.content = replaceImageUrl(level.content, targetUrl, replacementUrl);\n          }\n        });\n      };\n      const replaceImageUriInView = (image, resultUri) => {\n        const src = editor.convertURL(resultUri, 'src');\n        replaceUrlInUndoStack(image.src, resultUri);\n        setAll$1(SugarElement.fromDom(image), {\n          'src': shouldReuseFileName(editor) ? cacheInvalidator(resultUri) : resultUri,\n          'data-mce-src': src\n        });\n      };\n      const uploadImages = () => {\n        if (!uploader) {\n          uploader = createUploader(editor, uploadStatus);\n        }\n        return scanForImages().then(aliveGuard(imageInfos => {\n          const blobInfos = map$3(imageInfos, imageInfo => imageInfo.blobInfo);\n          return uploader.upload(blobInfos, openNotification(editor)).then(aliveGuard(result => {\n            const imagesToRemove = [];\n            let shouldDispatchChange = false;\n            const filteredResult = map$3(result, (uploadInfo, index) => {\n              const {\n                blobInfo,\n                image\n              } = imageInfos[index];\n              let removed = false;\n              if (uploadInfo.status && shouldReplaceBlobUris(editor)) {\n                if (uploadInfo.url && !contains$1(image.src, uploadInfo.url)) {\n                  shouldDispatchChange = true;\n                }\n                blobCache.removeByUri(image.src);\n                if (isRtc(editor)) ; else {\n                  replaceImageUriInView(image, uploadInfo.url);\n                }\n              } else if (uploadInfo.error) {\n                if (uploadInfo.error.remove) {\n                  replaceUrlInUndoStack(image.src, Env.transparentSrc);\n                  imagesToRemove.push(image);\n                  removed = true;\n                }\n                uploadError(editor, uploadInfo.error.message);\n              }\n              return {\n                element: image,\n                status: uploadInfo.status,\n                uploadUri: uploadInfo.url,\n                blobInfo,\n                removed\n              };\n            });\n            if (imagesToRemove.length > 0 && !isRtc(editor)) {\n              editor.undoManager.transact(() => {\n                each$e(fromDom$1(imagesToRemove), sugarElement => {\n                  const parentOpt = parent(sugarElement);\n                  remove$5(sugarElement);\n                  parentOpt.each(addPaddingToEmpty(editor));\n                  blobCache.removeByUri(sugarElement.dom.src);\n                });\n              });\n            } else if (shouldDispatchChange) {\n              editor.undoManager.dispatchChange();\n            }\n            return filteredResult;\n          }));\n        }));\n      };\n      const uploadImagesAuto = () => isAutomaticUploadsEnabled(editor) ? uploadImages() : Promise.resolve([]);\n      const isValidDataUriImage = imgElm => forall(urlFilters, filter => filter(imgElm));\n      const addFilter = filter => {\n        urlFilters.push(filter);\n      };\n      const scanForImages = () => {\n        if (!imageScanner) {\n          imageScanner = ImageScanner(uploadStatus, blobCache);\n        }\n        return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(result => {\n          const filteredResult = filter$5(result, resultItem => {\n            if (isString(resultItem)) {\n              displayError(editor, resultItem);\n              return false;\n            } else if (resultItem.uriType === 'blob') {\n              return false;\n            } else {\n              return true;\n            }\n          });\n          if (isRtc(editor)) ; else {\n            each$e(filteredResult, resultItem => {\n              replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri());\n              resultItem.image.src = resultItem.blobInfo.blobUri();\n              resultItem.image.removeAttribute('data-mce-src');\n              resultItem.blobInfo.library = () => resultItem.image.getAttribute('data-library');\n            });\n          }\n          return filteredResult;\n        }));\n      };\n      const destroy = () => {\n        blobCache.destroy();\n        uploadStatus.destroy();\n        imageScanner = uploader = null;\n      };\n      const replaceBlobUris = content => {\n        return content.replace(/src=\"(blob:[^\"]+)\"/g, (match, blobUri) => {\n          const resultUri = uploadStatus.getResultUri(blobUri);\n          if (resultUri) {\n            return 'src=\"' + resultUri + '\"';\n          }\n          let blobInfo = blobCache.getByUri(blobUri);\n          if (!blobInfo) {\n            blobInfo = foldl(editor.editorManager.get(), (result, editor) => {\n              return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri);\n            }, undefined);\n          }\n          if (blobInfo && shouldConvertBlobstoBase64(editor)) {\n            const blob = blobInfo.blob();\n            return 'src=\"data:' + blob.type + ';base64,' + blobInfo.base64() + '\"';\n          }\n          return match;\n        });\n      };\n      editor.on('SetContent', () => {\n        if (isAutomaticUploadsEnabled(editor)) {\n          uploadImagesAuto();\n        } else {\n          scanForImages();\n        }\n      });\n      editor.on('RawSaveContent', e => {\n        e.content = replaceBlobUris(e.content);\n      });\n      editor.on('GetContent', e => {\n        if (e.source_view || e.format === 'raw' || e.format === 'tree') {\n          return;\n        }\n        e.content = replaceBlobUris(e.content);\n      });\n      editor.on('PostRender', () => {\n        editor.parser.addNodeFilter('img', images => {\n          each$e(images, img => {\n            const src = img.attr('src');\n            if (!src || blobCache.getByUri(src)) {\n              return;\n            }\n            const resultUri = uploadStatus.getResultUri(src);\n            if (resultUri) {\n              img.attr('src', resultUri);\n            }\n          });\n        });\n      });\n      return {\n        blobCache,\n        uploadStatus,\n        addFilter,\n        uploadImages,\n        uploadImagesAuto,\n        scanForImages,\n        destroy\n      };\n    };\n\n    const get$1 = editor => {\n      const dom = editor.dom;\n      const schemaType = editor.schema.type;\n      const formats = {\n        valigntop: [{\n          selector: 'td,th',\n          styles: {\n            verticalAlign: 'top'\n          }\n        }],\n        valignmiddle: [{\n          selector: 'td,th',\n          styles: {\n            verticalAlign: 'middle'\n          }\n        }],\n        valignbottom: [{\n          selector: 'td,th',\n          styles: {\n            verticalAlign: 'bottom'\n          }\n        }],\n        alignleft: [{\n          selector: 'figure.image',\n          collapsed: false,\n          classes: 'align-left',\n          ceFalseOverride: true,\n          preview: 'font-family font-size'\n        }, {\n          selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre',\n          styles: {\n            textAlign: 'left'\n          },\n          inherit: false,\n          preview: false\n        }, {\n          selector: 'img,audio,video',\n          collapsed: false,\n          styles: {\n            float: 'left'\n          },\n          preview: 'font-family font-size'\n        }, {\n          selector: 'table',\n          collapsed: false,\n          styles: {\n            marginLeft: '0px',\n            marginRight: 'auto'\n          },\n          onformat: table => {\n            dom.setStyle(table, 'float', null);\n          },\n          preview: 'font-family font-size'\n        }, {\n          selector: '.mce-preview-object,[data-ephox-embed-iri]',\n          ceFalseOverride: true,\n          styles: {\n            float: 'left'\n          }\n        }],\n        aligncenter: [{\n          selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre',\n          styles: {\n            textAlign: 'center'\n          },\n          inherit: false,\n          preview: 'font-family font-size'\n        }, {\n          selector: 'figure.image',\n          collapsed: false,\n          classes: 'align-center',\n          ceFalseOverride: true,\n          preview: 'font-family font-size'\n        }, {\n          selector: 'img,audio,video',\n          collapsed: false,\n          styles: {\n            display: 'block',\n            marginLeft: 'auto',\n            marginRight: 'auto'\n          },\n          preview: false\n        }, {\n          selector: 'table',\n          collapsed: false,\n          styles: {\n            marginLeft: 'auto',\n            marginRight: 'auto'\n          },\n          preview: 'font-family font-size'\n        }, {\n          selector: '.mce-preview-object',\n          ceFalseOverride: true,\n          styles: {\n            display: 'table',\n            marginLeft: 'auto',\n            marginRight: 'auto'\n          },\n          preview: false\n        }, {\n          selector: '[data-ephox-embed-iri]',\n          ceFalseOverride: true,\n          styles: {\n            marginLeft: 'auto',\n            marginRight: 'auto'\n          },\n          preview: false\n        }],\n        alignright: [{\n          selector: 'figure.image',\n          collapsed: false,\n          classes: 'align-right',\n          ceFalseOverride: true,\n          preview: 'font-family font-size'\n        }, {\n          selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre',\n          styles: {\n            textAlign: 'right'\n          },\n          inherit: false,\n          preview: 'font-family font-size'\n        }, {\n          selector: 'img,audio,video',\n          collapsed: false,\n          styles: {\n            float: 'right'\n          },\n          preview: 'font-family font-size'\n        }, {\n          selector: 'table',\n          collapsed: false,\n          styles: {\n            marginRight: '0px',\n            marginLeft: 'auto'\n          },\n          onformat: table => {\n            dom.setStyle(table, 'float', null);\n          },\n          preview: 'font-family font-size'\n        }, {\n          selector: '.mce-preview-object,[data-ephox-embed-iri]',\n          ceFalseOverride: true,\n          styles: {\n            float: 'right'\n          },\n          preview: false\n        }],\n        alignjustify: [{\n          selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre',\n          styles: {\n            textAlign: 'justify'\n          },\n          inherit: false,\n          preview: 'font-family font-size'\n        }],\n        bold: [{\n          inline: 'strong',\n          remove: 'all',\n          preserve_attributes: ['class', 'style']\n        }, {\n          inline: 'span',\n          styles: {\n            fontWeight: 'bold'\n          }\n        }, {\n          inline: 'b',\n          remove: 'all',\n          preserve_attributes: ['class', 'style']\n        }],\n        italic: [{\n          inline: 'em',\n          remove: 'all',\n          preserve_attributes: ['class', 'style']\n        }, {\n          inline: 'span',\n          styles: {\n            fontStyle: 'italic'\n          }\n        }, {\n          inline: 'i',\n          remove: 'all',\n          preserve_attributes: ['class', 'style']\n        }],\n        underline: [{\n          inline: 'span',\n          styles: {\n            textDecoration: 'underline'\n          },\n          exact: true\n        }, {\n          inline: 'u',\n          remove: 'all',\n          preserve_attributes: ['class', 'style']\n        }],\n        strikethrough: (() => {\n          const span = {\n            inline: 'span',\n            styles: {\n              textDecoration: 'line-through'\n            },\n            exact: true\n          };\n          const strike = {\n            inline: 'strike',\n            remove: 'all',\n            preserve_attributes: ['class', 'style']\n          };\n          const s = {\n            inline: 's',\n            remove: 'all',\n            preserve_attributes: ['class', 'style']\n          };\n          return schemaType !== 'html4' ? [s, span, strike] : [span, s, strike];\n        })(),\n        forecolor: {\n          inline: 'span',\n          styles: {\n            color: '%value'\n          },\n          links: true,\n          remove_similar: true,\n          clear_child_styles: true\n        },\n        hilitecolor: {\n          inline: 'span',\n          styles: {\n            backgroundColor: '%value'\n          },\n          links: true,\n          remove_similar: true,\n          clear_child_styles: true\n        },\n        fontname: {\n          inline: 'span',\n          toggle: false,\n          styles: {\n            fontFamily: '%value'\n          },\n          clear_child_styles: true\n        },\n        fontsize: {\n          inline: 'span',\n          toggle: false,\n          styles: {\n            fontSize: '%value'\n          },\n          clear_child_styles: true\n        },\n        lineheight: {\n          selector: 'h1,h2,h3,h4,h5,h6,p,li,td,th,div',\n          styles: {\n            lineHeight: '%value'\n          }\n        },\n        fontsize_class: {\n          inline: 'span',\n          attributes: {\n            class: '%value'\n          }\n        },\n        blockquote: {\n          block: 'blockquote',\n          wrapper: true,\n          remove: 'all'\n        },\n        subscript: {\n          inline: 'sub'\n        },\n        superscript: {\n          inline: 'sup'\n        },\n        code: {\n          inline: 'code'\n        },\n        link: {\n          inline: 'a',\n          selector: 'a',\n          remove: 'all',\n          split: true,\n          deep: true,\n          onmatch: (node, _fmt, _itemName) => {\n            return isElement$6(node) && node.hasAttribute('href');\n          },\n          onformat: (elm, _fmt, vars) => {\n            Tools.each(vars, (value, key) => {\n              dom.setAttrib(elm, key, value);\n            });\n          }\n        },\n        lang: {\n          inline: 'span',\n          clear_child_styles: true,\n          remove_similar: true,\n          attributes: {\n            'lang': '%value',\n            'data-mce-lang': vars => {\n              var _a;\n              return (_a = vars === null || vars === void 0 ? void 0 : vars.customValue) !== null && _a !== void 0 ? _a : null;\n            }\n          }\n        },\n        removeformat: [{\n          selector: 'b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins,small',\n          remove: 'all',\n          split: true,\n          expand: false,\n          block_expand: true,\n          deep: true\n        }, {\n          selector: 'span',\n          attributes: ['style', 'class'],\n          remove: 'empty',\n          split: true,\n          expand: false,\n          deep: true\n        }, {\n          selector: '*',\n          attributes: ['style', 'class'],\n          split: false,\n          expand: false,\n          deep: true\n        }]\n      };\n      Tools.each('p h1 h2 h3 h4 h5 h6 div address pre dt dd samp'.split(/\\s/), name => {\n        formats[name] = {\n          block: name,\n          remove: 'all'\n        };\n      });\n      return formats;\n    };\n\n    const genericBase = {\n      remove_similar: true,\n      inherit: false\n    };\n    const cellBase = {\n      selector: 'td,th',\n      ...genericBase\n    };\n    const cellFormats = {\n      tablecellbackgroundcolor: {\n        styles: {\n          backgroundColor: '%value'\n        },\n        ...cellBase\n      },\n      tablecellverticalalign: {\n        styles: {\n          'vertical-align': '%value'\n        },\n        ...cellBase\n      },\n      tablecellbordercolor: {\n        styles: {\n          borderColor: '%value'\n        },\n        ...cellBase\n      },\n      tablecellclass: {\n        classes: ['%value'],\n        ...cellBase\n      },\n      tableclass: {\n        selector: 'table',\n        classes: ['%value'],\n        ...genericBase\n      },\n      tablecellborderstyle: {\n        styles: {\n          borderStyle: '%value'\n        },\n        ...cellBase\n      },\n      tablecellborderwidth: {\n        styles: {\n          borderWidth: '%value'\n        },\n        ...cellBase\n      }\n    };\n    const get = constant(cellFormats);\n\n    const FormatRegistry = editor => {\n      const formats = {};\n      const get$2 = name => isNonNullable(name) ? formats[name] : formats;\n      const has = name => has$2(formats, name);\n      const register = (name, format) => {\n        if (name) {\n          if (!isString(name)) {\n            each$d(name, (format, name) => {\n              register(name, format);\n            });\n          } else {\n            if (!isArray$1(format)) {\n              format = [format];\n            }\n            each$e(format, format => {\n              if (isUndefined(format.deep)) {\n                format.deep = !isSelectorFormat(format);\n              }\n              if (isUndefined(format.split)) {\n                format.split = !isSelectorFormat(format) || isInlineFormat(format);\n              }\n              if (isUndefined(format.remove) && isSelectorFormat(format) && !isInlineFormat(format)) {\n                format.remove = 'none';\n              }\n              if (isSelectorFormat(format) && isInlineFormat(format)) {\n                format.mixed = true;\n                format.block_expand = true;\n              }\n              if (isString(format.classes)) {\n                format.classes = format.classes.split(/\\s+/);\n              }\n            });\n            formats[name] = format;\n          }\n        }\n      };\n      const unregister = name => {\n        if (name && formats[name]) {\n          delete formats[name];\n        }\n        return formats;\n      };\n      register(get$1(editor));\n      register(get());\n      register(getFormats(editor));\n      return {\n        get: get$2,\n        has,\n        register,\n        unregister\n      };\n    };\n\n    const each$3 = Tools.each;\n    const dom = DOMUtils.DOM;\n    const isPreviewItem = item => isNonNullable(item) && isObject(item);\n    const parsedSelectorToHtml = (ancestry, editor) => {\n      const schema = editor && editor.schema || Schema({});\n      const decorate = (elm, item) => {\n        if (item.classes.length > 0) {\n          dom.addClass(elm, item.classes.join(' '));\n        }\n        dom.setAttribs(elm, item.attrs);\n      };\n      const createElement = sItem => {\n        const item = isString(sItem) ? {\n          name: sItem,\n          classes: [],\n          attrs: {}\n        } : sItem;\n        const elm = dom.create(item.name);\n        decorate(elm, item);\n        return elm;\n      };\n      const getRequiredParent = (elm, candidate) => {\n        const elmRule = schema.getElementRule(elm.nodeName.toLowerCase());\n        const parentsRequired = elmRule === null || elmRule === void 0 ? void 0 : elmRule.parentsRequired;\n        if (parentsRequired && parentsRequired.length) {\n          return candidate && contains$2(parentsRequired, candidate) ? candidate : parentsRequired[0];\n        } else {\n          return false;\n        }\n      };\n      const wrapInHtml = (elm, ancestors, siblings) => {\n        let parentCandidate;\n        const ancestor = ancestors[0];\n        const ancestorName = isPreviewItem(ancestor) ? ancestor.name : undefined;\n        const parentRequired = getRequiredParent(elm, ancestorName);\n        if (parentRequired) {\n          if (ancestorName === parentRequired) {\n            parentCandidate = ancestor;\n            ancestors = ancestors.slice(1);\n          } else {\n            parentCandidate = parentRequired;\n          }\n        } else if (ancestor) {\n          parentCandidate = ancestor;\n          ancestors = ancestors.slice(1);\n        } else if (!siblings) {\n          return elm;\n        }\n        const parent = parentCandidate ? createElement(parentCandidate) : dom.create('div');\n        parent.appendChild(elm);\n        if (siblings) {\n          Tools.each(siblings, sibling => {\n            const siblingElm = createElement(sibling);\n            parent.insertBefore(siblingElm, elm);\n          });\n        }\n        const parentSiblings = isPreviewItem(parentCandidate) ? parentCandidate.siblings : undefined;\n        return wrapInHtml(parent, ancestors, parentSiblings);\n      };\n      const fragment = dom.create('div');\n      if (ancestry.length > 0) {\n        const item = ancestry[0];\n        const elm = createElement(item);\n        const siblings = isPreviewItem(item) ? item.siblings : undefined;\n        fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), siblings));\n      }\n      return fragment;\n    };\n    const parseSelectorItem = item => {\n      item = Tools.trim(item);\n      let tagName = 'div';\n      const obj = {\n        name: tagName,\n        classes: [],\n        attrs: {},\n        selector: item\n      };\n      if (item !== '*') {\n        tagName = item.replace(/(?:([#\\.]|::?)([\\w\\-]+)|(\\[)([^\\]]+)\\]?)/g, ($0, $1, $2, $3, $4) => {\n          switch ($1) {\n            case '#':\n              obj.attrs.id = $2;\n              break;\n            case '.':\n              obj.classes.push($2);\n              break;\n            case ':':\n              if (Tools.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) {\n                obj.attrs[$2] = $2;\n              }\n              break;\n          }\n          if ($3 === '[') {\n            const m = $4.match(/([\\w\\-]+)(?:\\=\\\"([^\\\"]+))?/);\n            if (m) {\n              obj.attrs[m[1]] = m[2];\n            }\n          }\n          return '';\n        });\n      }\n      obj.name = tagName || 'div';\n      return obj;\n    };\n    const parseSelector = selector => {\n      if (!isString(selector)) {\n        return [];\n      }\n      selector = selector.split(/\\s*,\\s*/)[0];\n      selector = selector.replace(/\\s*(~\\+|~|\\+|>)\\s*/g, '$1');\n      return Tools.map(selector.split(/(?:>|\\s+(?![^\\[\\]]+\\]))/), item => {\n        const siblings = Tools.map(item.split(/(?:~\\+|~|\\+)/), parseSelectorItem);\n        const obj = siblings.pop();\n        if (siblings.length) {\n          obj.siblings = siblings;\n        }\n        return obj;\n      }).reverse();\n    };\n    const getCssText = (editor, format) => {\n      let previewCss = '';\n      let previewStyles = getPreviewStyles(editor);\n      if (previewStyles === '') {\n        return '';\n      }\n      const removeVars = val => {\n        return isString(val) ? val.replace(/%(\\w+)/g, '') : '';\n      };\n      const getComputedStyle = (name, elm) => {\n        return dom.getStyle(elm !== null && elm !== void 0 ? elm : editor.getBody(), name, true);\n      };\n      if (isString(format)) {\n        const formats = editor.formatter.get(format);\n        if (!formats) {\n          return '';\n        }\n        format = formats[0];\n      }\n      if ('preview' in format) {\n        const preview = format.preview;\n        if (preview === false) {\n          return '';\n        } else {\n          previewStyles = preview || previewStyles;\n        }\n      }\n      let name = format.block || format.inline || 'span';\n      let previewFrag;\n      const items = parseSelector(format.selector);\n      if (items.length > 0) {\n        if (!items[0].name) {\n          items[0].name = name;\n        }\n        name = format.selector;\n        previewFrag = parsedSelectorToHtml(items, editor);\n      } else {\n        previewFrag = parsedSelectorToHtml([name], editor);\n      }\n      const previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild;\n      each$3(format.styles, (value, name) => {\n        const newValue = removeVars(value);\n        if (newValue) {\n          dom.setStyle(previewElm, name, newValue);\n        }\n      });\n      each$3(format.attributes, (value, name) => {\n        const newValue = removeVars(value);\n        if (newValue) {\n          dom.setAttrib(previewElm, name, newValue);\n        }\n      });\n      each$3(format.classes, value => {\n        const newValue = removeVars(value);\n        if (!dom.hasClass(previewElm, newValue)) {\n          dom.addClass(previewElm, newValue);\n        }\n      });\n      editor.dispatch('PreviewFormats');\n      dom.setStyles(previewFrag, {\n        position: 'absolute',\n        left: -65535\n      });\n      editor.getBody().appendChild(previewFrag);\n      const rawParentFontSize = getComputedStyle('fontSize');\n      const parentFontSize = /px$/.test(rawParentFontSize) ? parseInt(rawParentFontSize, 10) : 0;\n      each$3(previewStyles.split(' '), name => {\n        let value = getComputedStyle(name, previewElm);\n        if (name === 'background-color' && /transparent|rgba\\s*\\([^)]+,\\s*0\\)/.test(value)) {\n          value = getComputedStyle(name);\n          if (rgbaToHexString(value).toLowerCase() === '#ffffff') {\n            return;\n          }\n        }\n        if (name === 'color') {\n          if (rgbaToHexString(value).toLowerCase() === '#000000') {\n            return;\n          }\n        }\n        if (name === 'font-size') {\n          if (/em|%$/.test(value)) {\n            if (parentFontSize === 0) {\n              return;\n            }\n            const numValue = parseFloat(value) / (/%$/.test(value) ? 100 : 1);\n            value = numValue * parentFontSize + 'px';\n          }\n        }\n        if (name === 'border' && value) {\n          previewCss += 'padding:0 2px;';\n        }\n        previewCss += name + ':' + value + ';';\n      });\n      editor.dispatch('AfterPreviewFormats');\n      dom.remove(previewFrag);\n      return previewCss;\n    };\n\n    const setup$s = editor => {\n      editor.addShortcut('meta+b', '', 'Bold');\n      editor.addShortcut('meta+i', '', 'Italic');\n      editor.addShortcut('meta+u', '', 'Underline');\n      for (let i = 1; i <= 6; i++) {\n        editor.addShortcut('access+' + i, '', ['FormatBlock', false, 'h' + i]);\n      }\n      editor.addShortcut('access+7', '', ['FormatBlock', false, 'p']);\n      editor.addShortcut('access+8', '', ['FormatBlock', false, 'div']);\n      editor.addShortcut('access+9', '', ['FormatBlock', false, 'address']);\n    };\n\n    const Formatter = editor => {\n      const formats = FormatRegistry(editor);\n      const formatChangeState = Cell({});\n      setup$s(editor);\n      setup$v(editor);\n      if (!isRtc(editor)) {\n        setup$u(formatChangeState, editor);\n      }\n      return {\n        get: formats.get,\n        has: formats.has,\n        register: formats.register,\n        unregister: formats.unregister,\n        apply: (name, vars, node) => {\n          applyFormat(editor, name, vars, node);\n        },\n        remove: (name, vars, node, similar) => {\n          removeFormat(editor, name, vars, node, similar);\n        },\n        toggle: (name, vars, node) => {\n          toggleFormat(editor, name, vars, node);\n        },\n        match: (name, vars, node, similar) => matchFormat(editor, name, vars, node, similar),\n        closest: names => closestFormat(editor, names),\n        matchAll: (names, vars) => matchAllFormats(editor, names, vars),\n        matchNode: (node, name, vars, similar) => matchNodeFormat(editor, node, name, vars, similar),\n        canApply: name => canApplyFormat(editor, name),\n        formatChanged: (formats, callback, similar, vars) => formatChanged(editor, formatChangeState, formats, callback, similar, vars),\n        getCssText: curry(getCssText, editor)\n      };\n    };\n\n    const shouldIgnoreCommand = cmd => {\n      switch (cmd.toLowerCase()) {\n        case 'undo':\n        case 'redo':\n        case 'mcefocus':\n          return true;\n        default:\n          return false;\n      }\n    };\n    const registerEvents = (editor, undoManager, locks) => {\n      const isFirstTypedCharacter = Cell(false);\n      const addNonTypingUndoLevel = e => {\n        setTyping(undoManager, false, locks);\n        undoManager.add({}, e);\n      };\n      editor.on('init', () => {\n        undoManager.add();\n      });\n      editor.on('BeforeExecCommand', e => {\n        const cmd = e.command;\n        if (!shouldIgnoreCommand(cmd)) {\n          endTyping(undoManager, locks);\n          undoManager.beforeChange();\n        }\n      });\n      editor.on('ExecCommand', e => {\n        const cmd = e.command;\n        if (!shouldIgnoreCommand(cmd)) {\n          addNonTypingUndoLevel(e);\n        }\n      });\n      editor.on('ObjectResizeStart cut', () => {\n        undoManager.beforeChange();\n      });\n      editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);\n      editor.on('dragend', addNonTypingUndoLevel);\n      editor.on('keyup', e => {\n        const keyCode = e.keyCode;\n        if (e.isDefaultPrevented()) {\n          return;\n        }\n        const isMeta = Env.os.isMacOS() && e.key === 'Meta';\n        if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey || isMeta) {\n          addNonTypingUndoLevel();\n          editor.nodeChanged();\n        }\n        if (keyCode === 46 || keyCode === 8) {\n          editor.nodeChanged();\n        }\n        if (isFirstTypedCharacter.get() && undoManager.typing && !isEq$1(createFromEditor(editor), undoManager.data[0])) {\n          if (!editor.isDirty()) {\n            editor.setDirty(true);\n          }\n          editor.dispatch('TypingUndo');\n          isFirstTypedCharacter.set(false);\n          editor.nodeChanged();\n        }\n      });\n      editor.on('keydown', e => {\n        const keyCode = e.keyCode;\n        if (e.isDefaultPrevented()) {\n          return;\n        }\n        if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) {\n          if (undoManager.typing) {\n            addNonTypingUndoLevel(e);\n          }\n          return;\n        }\n        const modKey = e.ctrlKey && !e.altKey || e.metaKey;\n        if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !undoManager.typing && !modKey) {\n          undoManager.beforeChange();\n          setTyping(undoManager, true, locks);\n          undoManager.add({}, e);\n          isFirstTypedCharacter.set(true);\n          return;\n        }\n        const hasOnlyMetaOrCtrlModifier = Env.os.isMacOS() ? e.metaKey : e.ctrlKey && !e.altKey;\n        if (hasOnlyMetaOrCtrlModifier) {\n          undoManager.beforeChange();\n        }\n      });\n      editor.on('mousedown', e => {\n        if (undoManager.typing) {\n          addNonTypingUndoLevel(e);\n        }\n      });\n      const isInsertReplacementText = event => event.inputType === 'insertReplacementText';\n      const isInsertTextDataNull = event => event.inputType === 'insertText' && event.data === null;\n      const isInsertFromPasteOrDrop = event => event.inputType === 'insertFromPaste' || event.inputType === 'insertFromDrop';\n      editor.on('input', e => {\n        if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e) || isInsertFromPasteOrDrop(e))) {\n          addNonTypingUndoLevel(e);\n        }\n      });\n      editor.on('AddUndo Undo Redo ClearUndos', e => {\n        if (!e.isDefaultPrevented()) {\n          editor.nodeChanged();\n        }\n      });\n    };\n    const addKeyboardShortcuts = editor => {\n      editor.addShortcut('meta+z', '', 'Undo');\n      editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');\n    };\n\n    const UndoManager = editor => {\n      const beforeBookmark = value$2();\n      const locks = Cell(0);\n      const index = Cell(0);\n      const undoManager = {\n        data: [],\n        typing: false,\n        beforeChange: () => {\n          beforeChange(editor, locks, beforeBookmark);\n        },\n        add: (level, event) => {\n          return addUndoLevel(editor, undoManager, index, locks, beforeBookmark, level, event);\n        },\n        dispatchChange: () => {\n          editor.setDirty(true);\n          const level = createFromEditor(editor);\n          level.bookmark = getUndoBookmark(editor.selection);\n          editor.dispatch('change', {\n            level,\n            lastLevel: get$b(undoManager.data, index.get()).getOrUndefined()\n          });\n        },\n        undo: () => {\n          return undo(editor, undoManager, locks, index);\n        },\n        redo: () => {\n          return redo(editor, index, undoManager.data);\n        },\n        clear: () => {\n          clear(editor, undoManager, index);\n        },\n        reset: () => {\n          reset(editor, undoManager);\n        },\n        hasUndo: () => {\n          return hasUndo(editor, undoManager, index);\n        },\n        hasRedo: () => {\n          return hasRedo(editor, undoManager, index);\n        },\n        transact: callback => {\n          return transact(editor, undoManager, locks, callback);\n        },\n        ignore: callback => {\n          ignore(editor, locks, callback);\n        },\n        extra: (callback1, callback2) => {\n          extra(editor, undoManager, index, callback1, callback2);\n        }\n      };\n      if (!isRtc(editor)) {\n        registerEvents(editor, undoManager, locks);\n      }\n      addKeyboardShortcuts(editor);\n      return undoManager;\n    };\n\n    const nonTypingKeycodes = [9, 27, VK.HOME, VK.END, 19, 20, 44, 144, 145, 33, 34, 45, 16, 17, 18, 91, 92, 93, VK.DOWN, VK.UP, VK.LEFT, VK.RIGHT].concat(Env.browser.isFirefox() ? [224] : []);\n    const placeholderAttr = 'data-mce-placeholder';\n    const isKeyboardEvent = e => e.type === 'keydown' || e.type === 'keyup';\n    const isDeleteEvent = e => {\n      const keyCode = e.keyCode;\n      return keyCode === VK.BACKSPACE || keyCode === VK.DELETE;\n    };\n    const isNonTypingKeyboardEvent = e => {\n      if (isKeyboardEvent(e)) {\n        const keyCode = e.keyCode;\n        return !isDeleteEvent(e) && (VK.metaKeyPressed(e) || e.altKey || keyCode >= 112 && keyCode <= 123 || contains$2(nonTypingKeycodes, keyCode));\n      } else {\n        return false;\n      }\n    };\n    const isTypingKeyboardEvent = e => isKeyboardEvent(e) && !(isDeleteEvent(e) || e.type === 'keyup' && e.keyCode === 229);\n    const isVisuallyEmpty = (dom, rootElm, forcedRootBlock) => {\n      if (isEmpty$2(SugarElement.fromDom(rootElm), false)) {\n        const firstElement = rootElm.firstElementChild;\n        if (!firstElement) {\n          return true;\n        } else if (dom.getStyle(rootElm.firstElementChild, 'padding-left') || dom.getStyle(rootElm.firstElementChild, 'padding-right')) {\n          return false;\n        } else {\n          return forcedRootBlock === firstElement.nodeName.toLowerCase();\n        }\n      } else {\n        return false;\n      }\n    };\n    const setup$r = editor => {\n      var _a;\n      const dom = editor.dom;\n      const rootBlock = getForcedRootBlock(editor);\n      const placeholder = (_a = getPlaceholder(editor)) !== null && _a !== void 0 ? _a : '';\n      const updatePlaceholder = (e, initial) => {\n        if (isNonTypingKeyboardEvent(e)) {\n          return;\n        }\n        const body = editor.getBody();\n        const showPlaceholder = isTypingKeyboardEvent(e) ? false : isVisuallyEmpty(dom, body, rootBlock);\n        const isPlaceholderShown = dom.getAttrib(body, placeholderAttr) !== '';\n        if (isPlaceholderShown !== showPlaceholder || initial) {\n          dom.setAttrib(body, placeholderAttr, showPlaceholder ? placeholder : null);\n          dom.setAttrib(body, 'aria-placeholder', showPlaceholder ? placeholder : null);\n          firePlaceholderToggle(editor, showPlaceholder);\n          editor.on(showPlaceholder ? 'keydown' : 'keyup', updatePlaceholder);\n          editor.off(showPlaceholder ? 'keyup' : 'keydown', updatePlaceholder);\n        }\n      };\n      if (isNotEmpty(placeholder)) {\n        editor.on('init', e => {\n          updatePlaceholder(e, true);\n          editor.on('change SetContent ExecCommand', updatePlaceholder);\n          editor.on('paste', e => Delay.setEditorTimeout(editor, () => updatePlaceholder(e)));\n        });\n      }\n    };\n\n    const blockPosition = (block, position) => ({\n      block,\n      position\n    });\n    const blockBoundary = (from, to) => ({\n      from,\n      to\n    });\n    const getBlockPosition = (rootNode, pos) => {\n      const rootElm = SugarElement.fromDom(rootNode);\n      const containerElm = SugarElement.fromDom(pos.container());\n      return getParentBlock$2(rootElm, containerElm).map(block => blockPosition(block, pos));\n    };\n    const isDifferentBlocks = blockBoundary => !eq(blockBoundary.from.block, blockBoundary.to.block);\n    const getClosestHost = (root, scope) => {\n      const isRoot = node => eq(node, root);\n      const isHost = node => isTableCell$2(node) || isContentEditableTrue$3(node.dom);\n      return closest$4(scope, isHost, isRoot).filter(isElement$7).getOr(root);\n    };\n    const hasSameHost = (rootNode, blockBoundary) => {\n      const root = SugarElement.fromDom(rootNode);\n      return eq(getClosestHost(root, blockBoundary.from.block), getClosestHost(root, blockBoundary.to.block));\n    };\n    const isEditable$1 = blockBoundary => isContentEditableFalse$b(blockBoundary.from.block.dom) === false && isContentEditableFalse$b(blockBoundary.to.block.dom) === false;\n    const hasValidBlocks = blockBoundary => {\n      const isValidBlock = block => isTextBlock$2(block) || hasBlockAttr(block.dom);\n      return isValidBlock(blockBoundary.from.block) && isValidBlock(blockBoundary.to.block);\n    };\n    const skipLastBr = (rootNode, forward, blockPosition) => {\n      if (isBr$6(blockPosition.position.getNode()) && !isEmpty$2(blockPosition.block)) {\n        return positionIn(false, blockPosition.block.dom).bind(lastPositionInBlock => {\n          if (lastPositionInBlock.isEqual(blockPosition.position)) {\n            return fromPosition(forward, rootNode, lastPositionInBlock).bind(to => getBlockPosition(rootNode, to));\n          } else {\n            return Optional.some(blockPosition);\n          }\n        }).getOr(blockPosition);\n      } else {\n        return blockPosition;\n      }\n    };\n    const readFromRange = (rootNode, forward, rng) => {\n      const fromBlockPos = getBlockPosition(rootNode, CaretPosition.fromRangeStart(rng));\n      const toBlockPos = fromBlockPos.bind(blockPos => fromPosition(forward, rootNode, blockPos.position).bind(to => getBlockPosition(rootNode, to).map(blockPos => skipLastBr(rootNode, forward, blockPos))));\n      return lift2(fromBlockPos, toBlockPos, blockBoundary).filter(blockBoundary => isDifferentBlocks(blockBoundary) && hasSameHost(rootNode, blockBoundary) && isEditable$1(blockBoundary) && hasValidBlocks(blockBoundary));\n    };\n    const read$1 = (rootNode, forward, rng) => rng.collapsed ? readFromRange(rootNode, forward, rng) : Optional.none();\n\n    const getChildrenUntilBlockBoundary = (block, schema) => {\n      const children = children$1(block);\n      return findIndex$2(children, el => schema.isBlock(name(el))).fold(constant(children), index => children.slice(0, index));\n    };\n    const extractChildren = (block, schema) => {\n      const children = getChildrenUntilBlockBoundary(block, schema);\n      each$e(children, remove$5);\n      return children;\n    };\n    const removeEmptyRoot = (rootNode, block) => {\n      const parents = parentsAndSelf(block, rootNode);\n      return find$2(parents.reverse(), element => isEmpty$2(element)).each(remove$5);\n    };\n    const isEmptyBefore = el => filter$5(prevSiblings(el), el => !isEmpty$2(el)).length === 0;\n    const nestedBlockMerge = (rootNode, fromBlock, toBlock, schema, insertionPoint) => {\n      if (isEmpty$2(toBlock)) {\n        fillWithPaddingBr(toBlock);\n        return firstPositionIn(toBlock.dom);\n      }\n      if (isEmptyBefore(insertionPoint) && isEmpty$2(fromBlock)) {\n        before$3(insertionPoint, SugarElement.fromTag('br'));\n      }\n      const position = prevPosition(toBlock.dom, CaretPosition.before(insertionPoint.dom));\n      each$e(extractChildren(fromBlock, schema), child => {\n        before$3(insertionPoint, child);\n      });\n      removeEmptyRoot(rootNode, fromBlock);\n      return position;\n    };\n    const isInline = (schema, node) => schema.isInline(name(node));\n    const sidelongBlockMerge = (rootNode, fromBlock, toBlock, schema) => {\n      if (isEmpty$2(toBlock)) {\n        if (isEmpty$2(fromBlock)) {\n          const getInlineToBlockDescendants = el => {\n            const helper = (node, elements) => firstChild(node).fold(() => elements, child => isInline(schema, child) ? helper(child, elements.concat(shallow$1(child))) : elements);\n            return helper(el, []);\n          };\n          const newFromBlockDescendants = foldr(getInlineToBlockDescendants(toBlock), (element, descendant) => {\n            wrap$2(element, descendant);\n            return descendant;\n          }, createPaddingBr());\n          empty(fromBlock);\n          append$1(fromBlock, newFromBlockDescendants);\n        }\n        remove$5(toBlock);\n        return firstPositionIn(fromBlock.dom);\n      }\n      const position = lastPositionIn(toBlock.dom);\n      each$e(extractChildren(fromBlock, schema), child => {\n        append$1(toBlock, child);\n      });\n      removeEmptyRoot(rootNode, fromBlock);\n      return position;\n    };\n    const findInsertionPoint = (toBlock, block) => {\n      const parentsAndSelf$1 = parentsAndSelf(block, toBlock);\n      return Optional.from(parentsAndSelf$1[parentsAndSelf$1.length - 1]);\n    };\n    const getInsertionPoint = (fromBlock, toBlock) => contains(toBlock, fromBlock) ? findInsertionPoint(toBlock, fromBlock) : Optional.none();\n    const trimBr = (first, block) => {\n      positionIn(first, block.dom).bind(position => Optional.from(position.getNode())).map(SugarElement.fromDom).filter(isBr$5).each(remove$5);\n    };\n    const mergeBlockInto = (rootNode, fromBlock, toBlock, schema) => {\n      trimBr(true, fromBlock);\n      trimBr(false, toBlock);\n      return getInsertionPoint(fromBlock, toBlock).fold(curry(sidelongBlockMerge, rootNode, fromBlock, toBlock, schema), curry(nestedBlockMerge, rootNode, fromBlock, toBlock, schema));\n    };\n    const mergeBlocks = (rootNode, forward, block1, block2, schema) => forward ? mergeBlockInto(rootNode, block2, block1, schema) : mergeBlockInto(rootNode, block1, block2, schema);\n\n    const backspaceDelete$9 = (editor, forward) => {\n      const rootNode = SugarElement.fromDom(editor.getBody());\n      const position = read$1(rootNode.dom, forward, editor.selection.getRng()).map(blockBoundary => () => {\n        mergeBlocks(rootNode, forward, blockBoundary.from.block, blockBoundary.to.block, editor.schema).each(pos => {\n          editor.selection.setRng(pos.toRange());\n        });\n      });\n      return position;\n    };\n\n    const deleteRangeMergeBlocks = (rootNode, selection, schema) => {\n      const rng = selection.getRng();\n      return lift2(getParentBlock$2(rootNode, SugarElement.fromDom(rng.startContainer)), getParentBlock$2(rootNode, SugarElement.fromDom(rng.endContainer)), (block1, block2) => {\n        if (!eq(block1, block2)) {\n          return Optional.some(() => {\n            rng.deleteContents();\n            mergeBlocks(rootNode, true, block1, block2, schema).each(pos => {\n              selection.setRng(pos.toRange());\n            });\n          });\n        } else {\n          return Optional.none();\n        }\n      }).getOr(Optional.none());\n    };\n    const isRawNodeInTable = (root, rawNode) => {\n      const node = SugarElement.fromDom(rawNode);\n      const isRoot = curry(eq, root);\n      return ancestor$4(node, isTableCell$2, isRoot).isSome();\n    };\n    const isSelectionInTable = (root, rng) => isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer);\n    const isEverythingSelected = (root, rng) => {\n      const noPrevious = prevPosition(root.dom, CaretPosition.fromRangeStart(rng)).isNone();\n      const noNext = nextPosition(root.dom, CaretPosition.fromRangeEnd(rng)).isNone();\n      return !isSelectionInTable(root, rng) && noPrevious && noNext;\n    };\n    const emptyEditor = editor => {\n      return Optional.some(() => {\n        editor.setContent('');\n        editor.selection.setCursorLocation();\n      });\n    };\n    const deleteRange$2 = editor => {\n      const rootNode = SugarElement.fromDom(editor.getBody());\n      const rng = editor.selection.getRng();\n      return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection, editor.schema);\n    };\n    const backspaceDelete$8 = (editor, _forward) => editor.selection.isCollapsed() ? Optional.none() : deleteRange$2(editor);\n\n    const showCaret = (direction, editor, node, before, scrollIntoView) => Optional.from(editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView));\n    const getNodeRange = node => {\n      const rng = node.ownerDocument.createRange();\n      rng.selectNode(node);\n      return rng;\n    };\n    const selectNode = (editor, node) => {\n      const e = editor.dispatch('BeforeObjectSelected', {\n        target: node\n      });\n      if (e.isDefaultPrevented()) {\n        return Optional.none();\n      }\n      return Optional.some(getNodeRange(node));\n    };\n    const renderCaretAtRange = (editor, range, scrollIntoView) => {\n      const normalizedRange = normalizeRange(1, editor.getBody(), range);\n      const caretPosition = CaretPosition.fromRangeStart(normalizedRange);\n      const caretPositionNode = caretPosition.getNode();\n      if (isInlineFakeCaretTarget(caretPositionNode)) {\n        return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);\n      }\n      const caretPositionBeforeNode = caretPosition.getNode(true);\n      if (isInlineFakeCaretTarget(caretPositionBeforeNode)) {\n        return showCaret(1, editor, caretPositionBeforeNode, false, false);\n      }\n      const ceRoot = getContentEditableRoot$1(editor.dom.getRoot(), caretPosition.getNode());\n      if (isInlineFakeCaretTarget(ceRoot)) {\n        return showCaret(1, editor, ceRoot, false, scrollIntoView);\n      }\n      return Optional.none();\n    };\n    const renderRangeCaret = (editor, range, scrollIntoView) => range.collapsed ? renderCaretAtRange(editor, range, scrollIntoView).getOr(range) : range;\n\n    const isBeforeBoundary = pos => isBeforeContentEditableFalse(pos) || isBeforeMedia(pos);\n    const isAfterBoundary = pos => isAfterContentEditableFalse(pos) || isAfterMedia(pos);\n    const trimEmptyTextNode = (dom, node) => {\n      if (isText$a(node) && node.data.length === 0) {\n        dom.remove(node);\n      }\n    };\n    const deleteContentAndShowCaret = (editor, range, node, direction, forward, peekCaretPosition) => {\n      showCaret(direction, editor, peekCaretPosition.getNode(!forward), forward, true).each(caretRange => {\n        if (range.collapsed) {\n          const deleteRange = range.cloneRange();\n          if (forward) {\n            deleteRange.setEnd(caretRange.startContainer, caretRange.startOffset);\n          } else {\n            deleteRange.setStart(caretRange.endContainer, caretRange.endOffset);\n          }\n          deleteRange.deleteContents();\n        } else {\n          range.deleteContents();\n        }\n        editor.selection.setRng(caretRange);\n      });\n      trimEmptyTextNode(editor.dom, node);\n    };\n    const deleteBoundaryText = (editor, forward) => {\n      const range = editor.selection.getRng();\n      if (!isText$a(range.commonAncestorContainer)) {\n        return Optional.none();\n      }\n      const direction = forward ? HDirection.Forwards : HDirection.Backwards;\n      const caretWalker = CaretWalker(editor.getBody());\n      const getNextPosFn = curry(getVisualCaretPosition, forward ? caretWalker.next : caretWalker.prev);\n      const isBeforeFn = forward ? isBeforeBoundary : isAfterBoundary;\n      const caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n      const nextCaretPosition = getNextPosFn(caretPosition);\n      const normalizedNextCaretPosition = nextCaretPosition ? normalizePosition(forward, nextCaretPosition) : nextCaretPosition;\n      if (!normalizedNextCaretPosition || !isMoveInsideSameBlock(caretPosition, normalizedNextCaretPosition)) {\n        return Optional.none();\n      } else if (isBeforeFn(normalizedNextCaretPosition)) {\n        return Optional.some(() => deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, normalizedNextCaretPosition));\n      }\n      const peekCaretPosition = getNextPosFn(normalizedNextCaretPosition);\n      if (peekCaretPosition && isBeforeFn(peekCaretPosition)) {\n        if (isMoveInsideSameBlock(normalizedNextCaretPosition, peekCaretPosition)) {\n          return Optional.some(() => deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, peekCaretPosition));\n        }\n      }\n      return Optional.none();\n    };\n    const backspaceDelete$7 = (editor, forward) => deleteBoundaryText(editor, forward);\n\n    const getEdgeCefPosition = (editor, atStart) => {\n      const root = editor.getBody();\n      return atStart ? firstPositionIn(root).filter(isBeforeContentEditableFalse) : lastPositionIn(root).filter(isAfterContentEditableFalse);\n    };\n    const isCefAtEdgeSelected = editor => {\n      const rng = editor.selection.getRng();\n      return !rng.collapsed && (getEdgeCefPosition(editor, true).exists(pos => pos.isEqual(CaretPosition.fromRangeStart(rng))) || getEdgeCefPosition(editor, false).exists(pos => pos.isEqual(CaretPosition.fromRangeEnd(rng))));\n    };\n\n    const isCompoundElement = node => isNonNullable(node) && (isTableCell$2(SugarElement.fromDom(node)) || isListItem$1(SugarElement.fromDom(node)));\n    const DeleteAction = Adt.generate([{\n      remove: ['element']\n    }, {\n      moveToElement: ['element']\n    }, {\n      moveToPosition: ['position']\n    }]);\n    const isAtContentEditableBlockCaret = (forward, from) => {\n      const elm = from.getNode(!forward);\n      const caretLocation = forward ? 'after' : 'before';\n      return isElement$6(elm) && elm.getAttribute('data-mce-caret') === caretLocation;\n    };\n    const isDeleteFromCefDifferentBlocks = (root, forward, from, to, schema) => {\n      const inSameBlock = elm => schema.isInline(elm.nodeName.toLowerCase()) && !isInSameBlock(from, to, root);\n      return getRelativeCefElm(!forward, from).fold(() => getRelativeCefElm(forward, to).fold(never, inSameBlock), inSameBlock);\n    };\n    const deleteEmptyBlockOrMoveToCef = (root, forward, from, to) => {\n      const toCefElm = to.getNode(!forward);\n      return getParentBlock$2(SugarElement.fromDom(root), SugarElement.fromDom(from.getNode())).map(blockElm => isEmpty$2(blockElm) ? DeleteAction.remove(blockElm.dom) : DeleteAction.moveToElement(toCefElm)).orThunk(() => Optional.some(DeleteAction.moveToElement(toCefElm)));\n    };\n    const findCefPosition = (root, forward, from, schema) => fromPosition(forward, root, from).bind(to => {\n      if (isCompoundElement(to.getNode())) {\n        return Optional.none();\n      } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to, schema)) {\n        return Optional.none();\n      } else if (forward && isContentEditableFalse$b(to.getNode())) {\n        return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n      } else if (!forward && isContentEditableFalse$b(to.getNode(true))) {\n        return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n      } else if (forward && isAfterContentEditableFalse(from)) {\n        return Optional.some(DeleteAction.moveToPosition(to));\n      } else if (!forward && isBeforeContentEditableFalse(from)) {\n        return Optional.some(DeleteAction.moveToPosition(to));\n      } else {\n        return Optional.none();\n      }\n    });\n    const getContentEditableBlockAction = (forward, elm) => {\n      if (isNullable(elm)) {\n        return Optional.none();\n      } else if (forward && isContentEditableFalse$b(elm.nextSibling)) {\n        return Optional.some(DeleteAction.moveToElement(elm.nextSibling));\n      } else if (!forward && isContentEditableFalse$b(elm.previousSibling)) {\n        return Optional.some(DeleteAction.moveToElement(elm.previousSibling));\n      } else {\n        return Optional.none();\n      }\n    };\n    const skipMoveToActionFromInlineCefToContent = (root, from, deleteAction) => deleteAction.fold(elm => Optional.some(DeleteAction.remove(elm)), elm => Optional.some(DeleteAction.moveToElement(elm)), to => {\n      if (isInSameBlock(from, to, root)) {\n        return Optional.none();\n      } else {\n        return Optional.some(DeleteAction.moveToPosition(to));\n      }\n    });\n    const getContentEditableAction = (root, forward, from, schema) => {\n      if (isAtContentEditableBlockCaret(forward, from)) {\n        return getContentEditableBlockAction(forward, from.getNode(!forward)).orThunk(() => findCefPosition(root, forward, from, schema));\n      } else {\n        return findCefPosition(root, forward, from, schema).bind(deleteAction => skipMoveToActionFromInlineCefToContent(root, from, deleteAction));\n      }\n    };\n    const read = (root, forward, rng, schema) => {\n      const normalizedRange = normalizeRange(forward ? 1 : -1, root, rng);\n      const from = CaretPosition.fromRangeStart(normalizedRange);\n      const rootElement = SugarElement.fromDom(root);\n      if (!forward && isAfterContentEditableFalse(from)) {\n        return Optional.some(DeleteAction.remove(from.getNode(true)));\n      } else if (forward && isBeforeContentEditableFalse(from)) {\n        return Optional.some(DeleteAction.remove(from.getNode()));\n      } else if (!forward && isBeforeContentEditableFalse(from) && isAfterBr(rootElement, from, schema)) {\n        return findPreviousBr(rootElement, from, schema).map(br => DeleteAction.remove(br.getNode()));\n      } else if (forward && isAfterContentEditableFalse(from) && isBeforeBr$1(rootElement, from, schema)) {\n        return findNextBr(rootElement, from, schema).map(br => DeleteAction.remove(br.getNode()));\n      } else {\n        return getContentEditableAction(root, forward, from, schema);\n      }\n    };\n\n    const deleteElement$1 = (editor, forward) => element => {\n      editor._selectionOverrides.hideFakeCaret();\n      deleteElement$2(editor, forward, SugarElement.fromDom(element));\n      return true;\n    };\n    const moveToElement = (editor, forward) => element => {\n      const pos = forward ? CaretPosition.before(element) : CaretPosition.after(element);\n      editor.selection.setRng(pos.toRange());\n      return true;\n    };\n    const moveToPosition = editor => pos => {\n      editor.selection.setRng(pos.toRange());\n      return true;\n    };\n    const getAncestorCe = (editor, node) => Optional.from(getContentEditableRoot$1(editor.getBody(), node));\n    const backspaceDeleteCaret = (editor, forward) => {\n      const selectedNode = editor.selection.getNode();\n      return getAncestorCe(editor, selectedNode).filter(isContentEditableFalse$b).fold(() => read(editor.getBody(), forward, editor.selection.getRng(), editor.schema).map(deleteAction => () => deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor))), () => Optional.some(noop));\n    };\n    const deleteOffscreenSelection = rootElement => {\n      each$e(descendants(rootElement, '.mce-offscreen-selection'), remove$5);\n    };\n    const backspaceDeleteRange = (editor, forward) => {\n      const selectedNode = editor.selection.getNode();\n      if (isContentEditableFalse$b(selectedNode) && !isTableCell$3(selectedNode)) {\n        const hasCefAncestor = getAncestorCe(editor, selectedNode.parentNode).filter(isContentEditableFalse$b);\n        return hasCefAncestor.fold(() => Optional.some(() => {\n          deleteOffscreenSelection(SugarElement.fromDom(editor.getBody()));\n          deleteElement$2(editor, forward, SugarElement.fromDom(editor.selection.getNode()));\n          paddEmptyBody(editor);\n        }), () => Optional.some(noop));\n      }\n      if (isCefAtEdgeSelected(editor)) {\n        return Optional.some(() => {\n          deleteRangeContents(editor, editor.selection.getRng(), SugarElement.fromDom(editor.getBody()));\n        });\n      }\n      return Optional.none();\n    };\n    const paddEmptyElement = editor => {\n      const dom = editor.dom,\n        selection = editor.selection;\n      const ceRoot = getContentEditableRoot$1(editor.getBody(), selection.getNode());\n      if (isContentEditableTrue$3(ceRoot) && dom.isBlock(ceRoot) && dom.isEmpty(ceRoot)) {\n        const br = dom.create('br', {\n          'data-mce-bogus': '1'\n        });\n        dom.setHTML(ceRoot, '');\n        ceRoot.appendChild(br);\n        selection.setRng(CaretPosition.before(br).toRange());\n      }\n      return true;\n    };\n    const backspaceDelete$6 = (editor, forward) => {\n      if (editor.selection.isCollapsed()) {\n        return backspaceDeleteCaret(editor, forward);\n      } else {\n        return backspaceDeleteRange(editor, forward);\n      }\n    };\n\n    const deleteCaret$2 = (editor, forward) => {\n      const fromPos = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return fromPosition(forward, editor.getBody(), fromPos).filter(pos => forward ? isBeforeImageBlock(pos) : isAfterImageBlock(pos)).bind(pos => getChildNodeAtRelativeOffset(forward ? 0 : -1, pos)).map(elm => () => editor.selection.select(elm));\n    };\n    const backspaceDelete$5 = (editor, forward) => editor.selection.isCollapsed() ? deleteCaret$2(editor, forward) : Optional.none();\n\n    const isText$2 = isText$a;\n    const startsWithCaretContainer = node => isText$2(node) && node.data[0] === ZWSP$1;\n    const endsWithCaretContainer = node => isText$2(node) && node.data[node.data.length - 1] === ZWSP$1;\n    const createZwsp = node => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      return doc.createTextNode(ZWSP$1);\n    };\n    const insertBefore$1 = node => {\n      var _a;\n      if (isText$2(node.previousSibling)) {\n        if (endsWithCaretContainer(node.previousSibling)) {\n          return node.previousSibling;\n        } else {\n          node.previousSibling.appendData(ZWSP$1);\n          return node.previousSibling;\n        }\n      } else if (isText$2(node)) {\n        if (startsWithCaretContainer(node)) {\n          return node;\n        } else {\n          node.insertData(0, ZWSP$1);\n          return node;\n        }\n      } else {\n        const newNode = createZwsp(node);\n        (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(newNode, node);\n        return newNode;\n      }\n    };\n    const insertAfter$1 = node => {\n      var _a, _b;\n      if (isText$2(node.nextSibling)) {\n        if (startsWithCaretContainer(node.nextSibling)) {\n          return node.nextSibling;\n        } else {\n          node.nextSibling.insertData(0, ZWSP$1);\n          return node.nextSibling;\n        }\n      } else if (isText$2(node)) {\n        if (endsWithCaretContainer(node)) {\n          return node;\n        } else {\n          node.appendData(ZWSP$1);\n          return node;\n        }\n      } else {\n        const newNode = createZwsp(node);\n        if (node.nextSibling) {\n          (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(newNode, node.nextSibling);\n        } else {\n          (_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.appendChild(newNode);\n        }\n        return newNode;\n      }\n    };\n    const insertInline = (before, node) => before ? insertBefore$1(node) : insertAfter$1(node);\n    const insertInlineBefore = curry(insertInline, true);\n    const insertInlineAfter = curry(insertInline, false);\n\n    const insertInlinePos = (pos, before) => {\n      if (isText$a(pos.container())) {\n        return insertInline(before, pos.container());\n      } else {\n        return insertInline(before, pos.getNode());\n      }\n    };\n    const isPosCaretContainer = (pos, caret) => {\n      const caretNode = caret.get();\n      return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode);\n    };\n    const renderCaret = (caret, location) => location.fold(element => {\n      remove$3(caret.get());\n      const text = insertInlineBefore(element);\n      caret.set(text);\n      return Optional.some(CaretPosition(text, text.length - 1));\n    }, element => firstPositionIn(element).map(pos => {\n      if (!isPosCaretContainer(pos, caret)) {\n        remove$3(caret.get());\n        const text = insertInlinePos(pos, true);\n        caret.set(text);\n        return CaretPosition(text, 1);\n      } else {\n        const node = caret.get();\n        return CaretPosition(node, 1);\n      }\n    }), element => lastPositionIn(element).map(pos => {\n      if (!isPosCaretContainer(pos, caret)) {\n        remove$3(caret.get());\n        const text = insertInlinePos(pos, false);\n        caret.set(text);\n        return CaretPosition(text, text.length - 1);\n      } else {\n        const node = caret.get();\n        return CaretPosition(node, node.length - 1);\n      }\n    }), element => {\n      remove$3(caret.get());\n      const text = insertInlineAfter(element);\n      caret.set(text);\n      return Optional.some(CaretPosition(text, 1));\n    });\n\n    const evaluateUntil = (fns, args) => {\n      for (let i = 0; i < fns.length; i++) {\n        const result = fns[i].apply(null, args);\n        if (result.isSome()) {\n          return result;\n        }\n      }\n      return Optional.none();\n    };\n\n    const Location = Adt.generate([{\n      before: ['element']\n    }, {\n      start: ['element']\n    }, {\n      end: ['element']\n    }, {\n      after: ['element']\n    }]);\n    const rescope$1 = (rootNode, node) => {\n      const parentBlock = getParentBlock$3(node, rootNode);\n      return parentBlock ? parentBlock : rootNode;\n    };\n    const before = (isInlineTarget, rootNode, pos) => {\n      const nPos = normalizeForwards(pos);\n      const scope = rescope$1(rootNode, nPos.container());\n      return findRootInline(isInlineTarget, scope, nPos).fold(() => nextPosition(scope, nPos).bind(curry(findRootInline, isInlineTarget, scope)).map(inline => Location.before(inline)), Optional.none);\n    };\n    const isNotInsideFormatCaretContainer = (rootNode, elm) => getParentCaretContainer(rootNode, elm) === null;\n    const findInsideRootInline = (isInlineTarget, rootNode, pos) => findRootInline(isInlineTarget, rootNode, pos).filter(curry(isNotInsideFormatCaretContainer, rootNode));\n    const start$1 = (isInlineTarget, rootNode, pos) => {\n      const nPos = normalizeBackwards(pos);\n      return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(inline => {\n        const prevPos = prevPosition(inline, nPos);\n        return prevPos.isNone() ? Optional.some(Location.start(inline)) : Optional.none();\n      });\n    };\n    const end = (isInlineTarget, rootNode, pos) => {\n      const nPos = normalizeForwards(pos);\n      return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(inline => {\n        const nextPos = nextPosition(inline, nPos);\n        return nextPos.isNone() ? Optional.some(Location.end(inline)) : Optional.none();\n      });\n    };\n    const after = (isInlineTarget, rootNode, pos) => {\n      const nPos = normalizeBackwards(pos);\n      const scope = rescope$1(rootNode, nPos.container());\n      return findRootInline(isInlineTarget, scope, nPos).fold(() => prevPosition(scope, nPos).bind(curry(findRootInline, isInlineTarget, scope)).map(inline => Location.after(inline)), Optional.none);\n    };\n    const isValidLocation = location => !isRtl(getElement(location));\n    const readLocation = (isInlineTarget, rootNode, pos) => {\n      const location = evaluateUntil([before, start$1, end, after], [isInlineTarget, rootNode, pos]);\n      return location.filter(isValidLocation);\n    };\n    const getElement = location => location.fold(identity, identity, identity, identity);\n    const getName = location => location.fold(constant('before'), constant('start'), constant('end'), constant('after'));\n    const outside = location => location.fold(Location.before, Location.before, Location.after, Location.after);\n    const inside = location => location.fold(Location.start, Location.start, Location.end, Location.end);\n    const isEq = (location1, location2) => getName(location1) === getName(location2) && getElement(location1) === getElement(location2);\n    const betweenInlines = (forward, isInlineTarget, rootNode, from, to, location) => lift2(findRootInline(isInlineTarget, rootNode, from), findRootInline(isInlineTarget, rootNode, to), (fromInline, toInline) => {\n      if (fromInline !== toInline && hasSameParentBlock(rootNode, fromInline, toInline)) {\n        return Location.after(forward ? fromInline : toInline);\n      } else {\n        return location;\n      }\n    }).getOr(location);\n    const skipNoMovement = (fromLocation, toLocation) => fromLocation.fold(always, fromLocation => !isEq(fromLocation, toLocation));\n    const findLocationTraverse = (forward, isInlineTarget, rootNode, fromLocation, pos) => {\n      const from = normalizePosition(forward, pos);\n      const to = fromPosition(forward, rootNode, from).map(curry(normalizePosition, forward));\n      const location = to.fold(() => fromLocation.map(outside), to => readLocation(isInlineTarget, rootNode, to).map(curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter(curry(skipNoMovement, fromLocation)));\n      return location.filter(isValidLocation);\n    };\n    const findLocationSimple = (forward, location) => {\n      if (forward) {\n        return location.fold(compose(Optional.some, Location.start), Optional.none, compose(Optional.some, Location.after), Optional.none);\n      } else {\n        return location.fold(Optional.none, compose(Optional.some, Location.before), Optional.none, compose(Optional.some, Location.end));\n      }\n    };\n    const findLocation$1 = (forward, isInlineTarget, rootNode, pos) => {\n      const from = normalizePosition(forward, pos);\n      const fromLocation = readLocation(isInlineTarget, rootNode, from);\n      return readLocation(isInlineTarget, rootNode, from).bind(curry(findLocationSimple, forward)).orThunk(() => findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos));\n    };\n\n    const hasSelectionModifyApi = editor => {\n      return isFunction(editor.selection.getSel().modify);\n    };\n    const moveRel = (forward, selection, pos) => {\n      const delta = forward ? 1 : -1;\n      selection.setRng(CaretPosition(pos.container(), pos.offset() + delta).toRange());\n      selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word');\n      return true;\n    };\n    const moveByWord = (forward, editor) => {\n      const rng = editor.selection.getRng();\n      const pos = forward ? CaretPosition.fromRangeEnd(rng) : CaretPosition.fromRangeStart(rng);\n      if (!hasSelectionModifyApi(editor)) {\n        return false;\n      } else if (forward && isBeforeInline(pos)) {\n        return moveRel(true, editor.selection, pos);\n      } else if (!forward && isAfterInline(pos)) {\n        return moveRel(false, editor.selection, pos);\n      } else {\n        return false;\n      }\n    };\n\n    var BreakType;\n    (function (BreakType) {\n      BreakType[BreakType['Br'] = 0] = 'Br';\n      BreakType[BreakType['Block'] = 1] = 'Block';\n      BreakType[BreakType['Wrap'] = 2] = 'Wrap';\n      BreakType[BreakType['Eol'] = 3] = 'Eol';\n    })(BreakType || (BreakType = {}));\n    const flip = (direction, positions) => direction === HDirection.Backwards ? reverse(positions) : positions;\n    const walk$1 = (direction, caretWalker, pos) => direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);\n    const getBreakType = (scope, direction, currentPos, nextPos) => {\n      if (isBr$6(nextPos.getNode(direction === HDirection.Forwards))) {\n        return BreakType.Br;\n      } else if (isInSameBlock(currentPos, nextPos) === false) {\n        return BreakType.Block;\n      } else {\n        return BreakType.Wrap;\n      }\n    };\n    const getPositionsUntil = (predicate, direction, scope, start) => {\n      const caretWalker = CaretWalker(scope);\n      let currentPos = start;\n      const positions = [];\n      while (currentPos) {\n        const nextPos = walk$1(direction, caretWalker, currentPos);\n        if (!nextPos) {\n          break;\n        }\n        if (isBr$6(nextPos.getNode(false))) {\n          if (direction === HDirection.Forwards) {\n            return {\n              positions: flip(direction, positions).concat([nextPos]),\n              breakType: BreakType.Br,\n              breakAt: Optional.some(nextPos)\n            };\n          } else {\n            return {\n              positions: flip(direction, positions),\n              breakType: BreakType.Br,\n              breakAt: Optional.some(nextPos)\n            };\n          }\n        }\n        if (!nextPos.isVisible()) {\n          currentPos = nextPos;\n          continue;\n        }\n        if (predicate(currentPos, nextPos)) {\n          const breakType = getBreakType(scope, direction, currentPos, nextPos);\n          return {\n            positions: flip(direction, positions),\n            breakType,\n            breakAt: Optional.some(nextPos)\n          };\n        }\n        positions.push(nextPos);\n        currentPos = nextPos;\n      }\n      return {\n        positions: flip(direction, positions),\n        breakType: BreakType.Eol,\n        breakAt: Optional.none()\n      };\n    };\n    const getAdjacentLinePositions = (direction, getPositionsUntilBreak, scope, start) => getPositionsUntilBreak(scope, start).breakAt.map(pos => {\n      const positions = getPositionsUntilBreak(scope, pos).positions;\n      return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);\n    }).getOr([]);\n    const findClosestHorizontalPositionFromPoint = (positions, x) => foldl(positions, (acc, newPos) => acc.fold(() => Optional.some(newPos), lastPos => lift2(head(lastPos.getClientRects()), head(newPos.getClientRects()), (lastRect, newRect) => {\n      const lastDist = Math.abs(x - lastRect.left);\n      const newDist = Math.abs(x - newRect.left);\n      return newDist <= lastDist ? newPos : lastPos;\n    }).or(acc)), Optional.none());\n    const findClosestHorizontalPosition = (positions, pos) => head(pos.getClientRects()).bind(targetRect => findClosestHorizontalPositionFromPoint(positions, targetRect.left));\n    const getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);\n    const getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);\n    const getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);\n    const getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);\n    const isAtFirstLine = (scope, pos) => getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();\n    const isAtLastLine = (scope, pos) => getPositionsUntilNextLine(scope, pos).breakAt.isNone();\n    const getFirstLinePositions = scope => firstPositionIn(scope).map(pos => [pos].concat(getPositionsUntilNextLine(scope, pos).positions)).getOr([]);\n    const getLastLinePositions = scope => lastPositionIn(scope).map(pos => getPositionsUntilPreviousLine(scope, pos).positions.concat(pos)).getOr([]);\n    const getClosestPositionAbove = (scope, pos) => findClosestHorizontalPosition(getPositionsAbove(scope, pos), pos);\n    const getClosestPositionBelow = (scope, pos) => findClosestHorizontalPosition(getPositionsBelow(scope, pos), pos);\n\n    const isContentEditableFalse$4 = isContentEditableFalse$b;\n    const distanceToRectLeft$1 = (clientRect, clientX) => Math.abs(clientRect.left - clientX);\n    const distanceToRectRight$1 = (clientRect, clientX) => Math.abs(clientRect.right - clientX);\n    const isNodeClientRect = rect => hasNonNullableKey(rect, 'node');\n    const findClosestClientRect = (clientRects, clientX) => reduce(clientRects, (oldClientRect, clientRect) => {\n      const oldDistance = Math.min(distanceToRectLeft$1(oldClientRect, clientX), distanceToRectRight$1(oldClientRect, clientX));\n      const newDistance = Math.min(distanceToRectLeft$1(clientRect, clientX), distanceToRectRight$1(clientRect, clientX));\n      if (newDistance === oldDistance && isNodeClientRect(clientRect) && isContentEditableFalse$4(clientRect.node)) {\n        return clientRect;\n      }\n      if (newDistance < oldDistance) {\n        return clientRect;\n      }\n      return oldClientRect;\n    });\n\n    const getNodeClientRects = node => {\n      const toArrayWithNode = clientRects => {\n        return map$3(clientRects, rect => {\n          const clientRect = clone$1(rect);\n          clientRect.node = node;\n          return clientRect;\n        });\n      };\n      if (isElement$6(node)) {\n        return toArrayWithNode(node.getClientRects());\n      } else if (isText$a(node)) {\n        const rng = node.ownerDocument.createRange();\n        rng.setStart(node, 0);\n        rng.setEnd(node, node.data.length);\n        return toArrayWithNode(rng.getClientRects());\n      } else {\n        return [];\n      }\n    };\n    const getClientRects = nodes => bind$3(nodes, getNodeClientRects);\n\n    var VDirection;\n    (function (VDirection) {\n      VDirection[VDirection['Up'] = -1] = 'Up';\n      VDirection[VDirection['Down'] = 1] = 'Down';\n    })(VDirection || (VDirection = {}));\n    const findUntil = (direction, root, predicateFn, node) => {\n      let currentNode = node;\n      while (currentNode = findNode(currentNode, direction, isEditableCaretCandidate$1, root)) {\n        if (predicateFn(currentNode)) {\n          return;\n        }\n      }\n    };\n    const walkUntil = (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) => {\n      let line = 0;\n      const result = [];\n      const add = node => {\n        let clientRects = getClientRects([node]);\n        if (direction === -1) {\n          clientRects = clientRects.reverse();\n        }\n        for (let i = 0; i < clientRects.length; i++) {\n          const clientRect = clientRects[i];\n          if (isBeflowFn(clientRect, targetClientRect)) {\n            continue;\n          }\n          if (result.length > 0 && isAboveFn(clientRect, last$2(result))) {\n            line++;\n          }\n          clientRect.line = line;\n          if (predicateFn(clientRect)) {\n            return true;\n          }\n          result.push(clientRect);\n        }\n        return false;\n      };\n      const targetClientRect = last$2(caretPosition.getClientRects());\n      if (!targetClientRect) {\n        return result;\n      }\n      const node = caretPosition.getNode();\n      if (node) {\n        add(node);\n        findUntil(direction, root, add, node);\n      }\n      return result;\n    };\n    const aboveLineNumber = (lineNumber, clientRect) => clientRect.line > lineNumber;\n    const isLineNumber = (lineNumber, clientRect) => clientRect.line === lineNumber;\n    const upUntil = curry(walkUntil, VDirection.Up, isAbove$1, isBelow$1);\n    const downUntil = curry(walkUntil, VDirection.Down, isBelow$1, isAbove$1);\n    const getLastClientRect = caretPosition => {\n      return last$2(caretPosition.getClientRects());\n    };\n    const positionsUntil = (direction, root, predicateFn, node) => {\n      const caretWalker = CaretWalker(root);\n      let walkFn;\n      let isBelowFn;\n      let isAboveFn;\n      let caretPosition;\n      const result = [];\n      let line = 0;\n      if (direction === 1) {\n        walkFn = caretWalker.next;\n        isBelowFn = isBelow$1;\n        isAboveFn = isAbove$1;\n        caretPosition = CaretPosition.after(node);\n      } else {\n        walkFn = caretWalker.prev;\n        isBelowFn = isAbove$1;\n        isAboveFn = isBelow$1;\n        caretPosition = CaretPosition.before(node);\n      }\n      const targetClientRect = getLastClientRect(caretPosition);\n      do {\n        if (!caretPosition.isVisible()) {\n          continue;\n        }\n        const rect = getLastClientRect(caretPosition);\n        if (isAboveFn(rect, targetClientRect)) {\n          continue;\n        }\n        if (result.length > 0 && isBelowFn(rect, last$2(result))) {\n          line++;\n        }\n        const clientRect = clone$1(rect);\n        clientRect.position = caretPosition;\n        clientRect.line = line;\n        if (predicateFn(clientRect)) {\n          return result;\n        }\n        result.push(clientRect);\n      } while (caretPosition = walkFn(caretPosition));\n      return result;\n    };\n    const isAboveLine = lineNumber => clientRect => aboveLineNumber(lineNumber, clientRect);\n    const isLine = lineNumber => clientRect => isLineNumber(lineNumber, clientRect);\n\n    const moveToRange = (editor, rng) => {\n      editor.selection.setRng(rng);\n      scrollRangeIntoView(editor, editor.selection.getRng());\n    };\n    const renderRangeCaretOpt = (editor, range, scrollIntoView) => Optional.some(renderRangeCaret(editor, range, scrollIntoView));\n    const moveHorizontally = (editor, direction, range, isBefore, isAfter, isElement) => {\n      const forwards = direction === HDirection.Forwards;\n      const caretWalker = CaretWalker(editor.getBody());\n      const getNextPosFn = curry(getVisualCaretPosition, forwards ? caretWalker.next : caretWalker.prev);\n      const isBeforeFn = forwards ? isBefore : isAfter;\n      if (!range.collapsed) {\n        const node = getSelectedNode(range);\n        if (isElement(node)) {\n          return showCaret(direction, editor, node, direction === HDirection.Backwards, false);\n        } else if (isCefAtEdgeSelected(editor)) {\n          const newRange = range.cloneRange();\n          newRange.collapse(direction === HDirection.Backwards);\n          return Optional.from(newRange);\n        }\n      }\n      const caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n      if (isBeforeFn(caretPosition)) {\n        return selectNode(editor, caretPosition.getNode(!forwards));\n      }\n      let nextCaretPosition = getNextPosFn(caretPosition);\n      const rangeIsInContainerBlock = isRangeInCaretContainerBlock(range);\n      if (!nextCaretPosition) {\n        return rangeIsInContainerBlock ? Optional.some(range) : Optional.none();\n      } else {\n        nextCaretPosition = normalizePosition(forwards, nextCaretPosition);\n      }\n      if (isBeforeFn(nextCaretPosition)) {\n        return showCaret(direction, editor, nextCaretPosition.getNode(!forwards), forwards, false);\n      }\n      const peekCaretPosition = getNextPosFn(nextCaretPosition);\n      if (peekCaretPosition && isBeforeFn(peekCaretPosition)) {\n        if (isMoveInsideSameBlock(nextCaretPosition, peekCaretPosition)) {\n          return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, false);\n        }\n      }\n      if (rangeIsInContainerBlock) {\n        return renderRangeCaretOpt(editor, nextCaretPosition.toRange(), false);\n      }\n      return Optional.none();\n    };\n    const moveVertically = (editor, direction, range, isBefore, isAfter, isElement) => {\n      const caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n      const caretClientRect = last$2(caretPosition.getClientRects());\n      const forwards = direction === VDirection.Down;\n      const root = editor.getBody();\n      if (!caretClientRect) {\n        return Optional.none();\n      }\n      if (isCefAtEdgeSelected(editor)) {\n        const caretPosition = forwards ? CaretPosition.fromRangeEnd(range) : CaretPosition.fromRangeStart(range);\n        const getClosestFn = !forwards ? getClosestPositionAbove : getClosestPositionBelow;\n        return getClosestFn(root, caretPosition).orThunk(() => Optional.from(caretPosition)).map(pos => pos.toRange());\n      }\n      const walkerFn = forwards ? downUntil : upUntil;\n      const linePositions = walkerFn(root, isAboveLine(1), caretPosition);\n      const nextLinePositions = filter$5(linePositions, isLine(1));\n      const clientX = caretClientRect.left;\n      const nextLineRect = findClosestClientRect(nextLinePositions, clientX);\n      if (nextLineRect && isElement(nextLineRect.node)) {\n        const dist1 = Math.abs(clientX - nextLineRect.left);\n        const dist2 = Math.abs(clientX - nextLineRect.right);\n        return showCaret(direction, editor, nextLineRect.node, dist1 < dist2, false);\n      }\n      let currentNode;\n      if (isBefore(caretPosition)) {\n        currentNode = caretPosition.getNode();\n      } else if (isAfter(caretPosition)) {\n        currentNode = caretPosition.getNode(true);\n      } else {\n        currentNode = getSelectedNode(range);\n      }\n      if (currentNode) {\n        const caretPositions = positionsUntil(direction, root, isAboveLine(1), currentNode);\n        let closestNextLineRect = findClosestClientRect(filter$5(caretPositions, isLine(1)), clientX);\n        if (closestNextLineRect) {\n          return renderRangeCaretOpt(editor, closestNextLineRect.position.toRange(), false);\n        }\n        closestNextLineRect = last$2(filter$5(caretPositions, isLine(0)));\n        if (closestNextLineRect) {\n          return renderRangeCaretOpt(editor, closestNextLineRect.position.toRange(), false);\n        }\n      }\n      if (nextLinePositions.length === 0) {\n        return getLineEndPoint(editor, forwards).filter(forwards ? isAfter : isBefore).map(pos => renderRangeCaret(editor, pos.toRange(), false));\n      }\n      return Optional.none();\n    };\n    const getLineEndPoint = (editor, forward) => {\n      const rng = editor.selection.getRng();\n      const from = forward ? CaretPosition.fromRangeEnd(rng) : CaretPosition.fromRangeStart(rng);\n      const host = getEditingHost(from.container(), editor.getBody());\n      if (forward) {\n        const lineInfo = getPositionsUntilNextLine(host, from);\n        return last$3(lineInfo.positions);\n      } else {\n        const lineInfo = getPositionsUntilPreviousLine(host, from);\n        return head(lineInfo.positions);\n      }\n    };\n    const moveToLineEndPoint$3 = (editor, forward, isElementPosition) => getLineEndPoint(editor, forward).filter(isElementPosition).exists(pos => {\n      editor.selection.setRng(pos.toRange());\n      return true;\n    });\n\n    const setCaretPosition = (editor, pos) => {\n      const rng = editor.dom.createRng();\n      rng.setStart(pos.container(), pos.offset());\n      rng.setEnd(pos.container(), pos.offset());\n      editor.selection.setRng(rng);\n    };\n    const setSelected = (state, elm) => {\n      if (state) {\n        elm.setAttribute('data-mce-selected', 'inline-boundary');\n      } else {\n        elm.removeAttribute('data-mce-selected');\n      }\n    };\n    const renderCaretLocation = (editor, caret, location) => renderCaret(caret, location).map(pos => {\n      setCaretPosition(editor, pos);\n      return location;\n    });\n    const getPositionFromRange = (range, root, forward) => {\n      const start = CaretPosition.fromRangeStart(range);\n      if (range.collapsed) {\n        return start;\n      } else {\n        const end = CaretPosition.fromRangeEnd(range);\n        return forward ? prevPosition(root, end).getOr(end) : nextPosition(root, start).getOr(start);\n      }\n    };\n    const findLocation = (editor, caret, forward) => {\n      const rootNode = editor.getBody();\n      const from = getPositionFromRange(editor.selection.getRng(), rootNode, forward);\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      const location = findLocation$1(forward, isInlineTarget$1, rootNode, from);\n      return location.bind(location => renderCaretLocation(editor, caret, location));\n    };\n    const toggleInlines = (isInlineTarget, dom, elms) => {\n      const inlineBoundaries = map$3(descendants(SugarElement.fromDom(dom.getRoot()), '*[data-mce-selected=\"inline-boundary\"]'), e => e.dom);\n      const selectedInlines = filter$5(inlineBoundaries, isInlineTarget);\n      const targetInlines = filter$5(elms, isInlineTarget);\n      each$e(difference(selectedInlines, targetInlines), curry(setSelected, false));\n      each$e(difference(targetInlines, selectedInlines), curry(setSelected, true));\n    };\n    const safeRemoveCaretContainer = (editor, caret) => {\n      const caretValue = caret.get();\n      if (editor.selection.isCollapsed() && !editor.composing && caretValue) {\n        const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n        if (CaretPosition.isTextPosition(pos) && !isAtZwsp(pos)) {\n          setCaretPosition(editor, removeAndReposition(caretValue, pos));\n          caret.set(null);\n        }\n      }\n    };\n    const renderInsideInlineCaret = (isInlineTarget, editor, caret, elms) => {\n      if (editor.selection.isCollapsed()) {\n        const inlines = filter$5(elms, isInlineTarget);\n        each$e(inlines, _inline => {\n          const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n          readLocation(isInlineTarget, editor.getBody(), pos).bind(location => renderCaretLocation(editor, caret, location));\n        });\n      }\n    };\n    const move$3 = (editor, caret, forward) => isInlineBoundariesEnabled(editor) ? findLocation(editor, caret, forward).isSome() : false;\n    const moveWord = (forward, editor, _caret) => isInlineBoundariesEnabled(editor) ? moveByWord(forward, editor) : false;\n    const setupSelectedState = editor => {\n      const caret = Cell(null);\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      editor.on('NodeChange', e => {\n        if (isInlineBoundariesEnabled(editor)) {\n          toggleInlines(isInlineTarget$1, editor.dom, e.parents);\n          safeRemoveCaretContainer(editor, caret);\n          renderInsideInlineCaret(isInlineTarget$1, editor, caret, e.parents);\n        }\n      });\n      return caret;\n    };\n    const moveNextWord = curry(moveWord, true);\n    const movePrevWord = curry(moveWord, false);\n    const moveToLineEndPoint$2 = (editor, forward, caret) => {\n      if (isInlineBoundariesEnabled(editor)) {\n        const linePoint = getLineEndPoint(editor, forward).getOrThunk(() => {\n          const rng = editor.selection.getRng();\n          return forward ? CaretPosition.fromRangeEnd(rng) : CaretPosition.fromRangeStart(rng);\n        });\n        return readLocation(curry(isInlineTarget, editor), editor.getBody(), linePoint).exists(loc => {\n          const outsideLoc = outside(loc);\n          return renderCaret(caret, outsideLoc).exists(pos => {\n            setCaretPosition(editor, pos);\n            return true;\n          });\n        });\n      } else {\n        return false;\n      }\n    };\n\n    const rangeFromPositions = (from, to) => {\n      const range = document.createRange();\n      range.setStart(from.container(), from.offset());\n      range.setEnd(to.container(), to.offset());\n      return range;\n    };\n    const hasOnlyTwoOrLessPositionsLeft = elm => lift2(firstPositionIn(elm), lastPositionIn(elm), (firstPos, lastPos) => {\n      const normalizedFirstPos = normalizePosition(true, firstPos);\n      const normalizedLastPos = normalizePosition(false, lastPos);\n      return nextPosition(elm, normalizedFirstPos).forall(pos => pos.isEqual(normalizedLastPos));\n    }).getOr(true);\n    const setCaretLocation = (editor, caret) => location => renderCaret(caret, location).map(pos => () => setCaretPosition(editor, pos));\n    const deleteFromTo = (editor, caret, from, to) => {\n      const rootNode = editor.getBody();\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      editor.undoManager.ignore(() => {\n        editor.selection.setRng(rangeFromPositions(from, to));\n        execNativeDeleteCommand(editor);\n        readLocation(isInlineTarget$1, rootNode, CaretPosition.fromRangeStart(editor.selection.getRng())).map(inside).bind(setCaretLocation(editor, caret)).each(call);\n      });\n      editor.nodeChanged();\n    };\n    const rescope = (rootNode, node) => {\n      const parentBlock = getParentBlock$3(node, rootNode);\n      return parentBlock ? parentBlock : rootNode;\n    };\n    const backspaceDeleteCollapsed = (editor, caret, forward, from) => {\n      const rootNode = rescope(editor.getBody(), from.container());\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      const fromLocation = readLocation(isInlineTarget$1, rootNode, from);\n      const location = fromLocation.bind(location => {\n        if (forward) {\n          return location.fold(constant(Optional.some(inside(location))), Optional.none, constant(Optional.some(outside(location))), Optional.none);\n        } else {\n          return location.fold(Optional.none, constant(Optional.some(outside(location))), Optional.none, constant(Optional.some(inside(location))));\n        }\n      });\n      return location.map(setCaretLocation(editor, caret)).getOrThunk(() => {\n        const toPosition = navigate(forward, rootNode, from);\n        const toLocation = toPosition.bind(pos => readLocation(isInlineTarget$1, rootNode, pos));\n        return lift2(fromLocation, toLocation, () => findRootInline(isInlineTarget$1, rootNode, from).bind(elm => {\n          if (hasOnlyTwoOrLessPositionsLeft(elm)) {\n            return Optional.some(() => {\n              deleteElement$2(editor, forward, SugarElement.fromDom(elm));\n            });\n          } else {\n            return Optional.none();\n          }\n        })).getOrThunk(() => toLocation.bind(() => toPosition.map(to => {\n          return () => {\n            if (forward) {\n              deleteFromTo(editor, caret, from, to);\n            } else {\n              deleteFromTo(editor, caret, to, from);\n            }\n          };\n        })));\n      });\n    };\n    const backspaceDelete$4 = (editor, caret, forward) => {\n      if (editor.selection.isCollapsed() && isInlineBoundariesEnabled(editor)) {\n        const from = CaretPosition.fromRangeStart(editor.selection.getRng());\n        return backspaceDeleteCollapsed(editor, caret, forward, from);\n      }\n      return Optional.none();\n    };\n\n    const hasMultipleChildren = elm => childNodesCount(elm) > 1;\n    const getParentsUntil = (editor, pred) => {\n      const rootElm = SugarElement.fromDom(editor.getBody());\n      const startElm = SugarElement.fromDom(editor.selection.getStart());\n      const parents = parentsAndSelf(startElm, rootElm);\n      return findIndex$2(parents, pred).fold(constant(parents), index => parents.slice(0, index));\n    };\n    const hasOnlyOneChild = elm => childNodesCount(elm) === 1;\n    const getParentInlinesUntilMultichildInline = editor => getParentsUntil(editor, elm => editor.schema.isBlock(name(elm)) || hasMultipleChildren(elm));\n    const getParentInlines = editor => getParentsUntil(editor, el => editor.schema.isBlock(name(el)));\n    const getFormatNodes = (editor, parentInlines) => {\n      const isFormatElement$1 = curry(isFormatElement, editor);\n      return bind$3(parentInlines, elm => isFormatElement$1(elm) ? [elm.dom] : []);\n    };\n    const getFormatNodesAtStart = editor => {\n      const parentInlines = getParentInlines(editor);\n      return getFormatNodes(editor, parentInlines);\n    };\n    const deleteLastPosition = (forward, editor, target, parentInlines) => {\n      const formatNodes = getFormatNodes(editor, parentInlines);\n      if (formatNodes.length === 0) {\n        deleteElement$2(editor, forward, target);\n      } else {\n        const pos = replaceWithCaretFormat(target.dom, formatNodes);\n        editor.selection.setRng(pos.toRange());\n      }\n    };\n    const deleteCaret$1 = (editor, forward) => {\n      const parentInlines = filter$5(getParentInlinesUntilMultichildInline(editor), hasOnlyOneChild);\n      return last$3(parentInlines).bind(target => {\n        const fromPos = CaretPosition.fromRangeStart(editor.selection.getRng());\n        if (willDeleteLastPositionInElement(forward, fromPos, target.dom) && !isEmptyCaretFormatElement(target)) {\n          return Optional.some(() => deleteLastPosition(forward, editor, target, parentInlines));\n        } else {\n          return Optional.none();\n        }\n      });\n    };\n    const isBrInEmptyElement = (editor, elm) => {\n      const parentElm = elm.parentElement;\n      return isBr$6(elm) && !isNull(parentElm) && editor.dom.isEmpty(parentElm);\n    };\n    const isEmptyCaret = elm => isEmptyCaretFormatElement(SugarElement.fromDom(elm));\n    const createCaretFormatAtStart = (editor, formatNodes) => {\n      const startElm = editor.selection.getStart();\n      const pos = isBrInEmptyElement(editor, startElm) || isEmptyCaret(startElm) ? replaceWithCaretFormat(startElm, formatNodes) : createCaretFormatAtStart$1(editor.selection.getRng(), formatNodes);\n      editor.selection.setRng(pos.toRange());\n    };\n    const updateCaretFormat = (editor, updateFormats) => {\n      const missingFormats = difference(updateFormats, getFormatNodesAtStart(editor));\n      if (missingFormats.length > 0) {\n        createCaretFormatAtStart(editor, missingFormats);\n      }\n    };\n    const rangeStartsAtTextContainer = rng => isText$a(rng.startContainer);\n    const rangeStartsAtStartOfTextContainer = rng => rng.startOffset === 0 && rangeStartsAtTextContainer(rng);\n    const rangeStartParentIsFormatElement = (editor, rng) => {\n      const startParent = rng.startContainer.parentElement;\n      return !isNull(startParent) && isFormatElement(editor, SugarElement.fromDom(startParent));\n    };\n    const rangeStartAndEndHaveSameParent = rng => {\n      const startParent = rng.startContainer.parentNode;\n      const endParent = rng.endContainer.parentNode;\n      return !isNull(startParent) && !isNull(endParent) && startParent.isEqualNode(endParent);\n    };\n    const rangeEndsAtEndOfEndContainer = rng => {\n      const endContainer = rng.endContainer;\n      return rng.endOffset === (isText$a(endContainer) ? endContainer.length : endContainer.childNodes.length);\n    };\n    const rangeEndsAtEndOfStartContainer = rng => rangeStartAndEndHaveSameParent(rng) && rangeEndsAtEndOfEndContainer(rng);\n    const rangeEndsAfterEndOfStartContainer = rng => !rng.endContainer.isEqualNode(rng.commonAncestorContainer);\n    const rangeEndsAtOrAfterEndOfStartContainer = rng => rangeEndsAtEndOfStartContainer(rng) || rangeEndsAfterEndOfStartContainer(rng);\n    const requiresDeleteRangeOverride = editor => {\n      const rng = editor.selection.getRng();\n      return rangeStartsAtStartOfTextContainer(rng) && rangeStartParentIsFormatElement(editor, rng) && rangeEndsAtOrAfterEndOfStartContainer(rng);\n    };\n    const deleteRange$1 = editor => {\n      if (requiresDeleteRangeOverride(editor)) {\n        const formatNodes = getFormatNodesAtStart(editor);\n        return Optional.some(() => {\n          execNativeDeleteCommand(editor);\n          updateCaretFormat(editor, formatNodes);\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const backspaceDelete$3 = (editor, forward) => editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : deleteRange$1(editor);\n    const hasAncestorInlineCaret = (elm, schema) => ancestor$1(elm, node => isCaretNode(node.dom), el => schema.isBlock(name(el)));\n    const hasAncestorInlineCaretAtStart = editor => hasAncestorInlineCaret(SugarElement.fromDom(editor.selection.getStart()), editor.schema);\n    const requiresRefreshCaretOverride = editor => {\n      const rng = editor.selection.getRng();\n      return rng.collapsed && (rangeStartsAtTextContainer(rng) || editor.dom.isEmpty(rng.startContainer)) && !hasAncestorInlineCaretAtStart(editor);\n    };\n    const refreshCaret = editor => {\n      if (requiresRefreshCaretOverride(editor)) {\n        createCaretFormatAtStart(editor, []);\n      }\n      return true;\n    };\n\n    const deleteElement = (editor, forward, element) => {\n      if (isNonNullable(element)) {\n        return Optional.some(() => {\n          editor._selectionOverrides.hideFakeCaret();\n          deleteElement$2(editor, forward, SugarElement.fromDom(element));\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const deleteCaret = (editor, forward) => {\n      const isNearMedia = forward ? isBeforeMedia : isAfterMedia;\n      const direction = forward ? HDirection.Forwards : HDirection.Backwards;\n      const fromPos = getNormalizedRangeEndPoint(direction, editor.getBody(), editor.selection.getRng());\n      if (isNearMedia(fromPos)) {\n        return deleteElement(editor, forward, fromPos.getNode(!forward));\n      } else {\n        return Optional.from(normalizePosition(forward, fromPos)).filter(pos => isNearMedia(pos) && isMoveInsideSameBlock(fromPos, pos)).bind(pos => deleteElement(editor, forward, pos.getNode(!forward)));\n      }\n    };\n    const deleteRange = (editor, forward) => {\n      const selectedNode = editor.selection.getNode();\n      return isMedia$2(selectedNode) ? deleteElement(editor, forward, selectedNode) : Optional.none();\n    };\n    const backspaceDelete$2 = (editor, forward) => editor.selection.isCollapsed() ? deleteCaret(editor, forward) : deleteRange(editor, forward);\n\n    const isEditable = target => closest$4(target, elm => isContentEditableTrue$3(elm.dom) || isContentEditableFalse$b(elm.dom)).exists(elm => isContentEditableTrue$3(elm.dom));\n    const parseIndentValue = value => toInt(value !== null && value !== void 0 ? value : '').getOr(0);\n    const getIndentStyleName = (useMargin, element) => {\n      const indentStyleName = useMargin || isTable$1(element) ? 'margin' : 'padding';\n      const suffix = get$7(element, 'direction') === 'rtl' ? '-right' : '-left';\n      return indentStyleName + suffix;\n    };\n    const indentElement = (dom, command, useMargin, value, unit, element) => {\n      const indentStyleName = getIndentStyleName(useMargin, SugarElement.fromDom(element));\n      const parsedValue = parseIndentValue(dom.getStyle(element, indentStyleName));\n      if (command === 'outdent') {\n        const styleValue = Math.max(0, parsedValue - value);\n        dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : '');\n      } else {\n        const styleValue = parsedValue + value + unit;\n        dom.setStyle(element, indentStyleName, styleValue);\n      }\n    };\n    const validateBlocks = (editor, blocks) => forall(blocks, block => {\n      const indentStyleName = getIndentStyleName(shouldIndentUseMargin(editor), block);\n      const intentValue = getRaw(block, indentStyleName).map(parseIndentValue).getOr(0);\n      const contentEditable = editor.dom.getContentEditable(block.dom);\n      return contentEditable !== 'false' && intentValue > 0;\n    });\n    const canOutdent = editor => {\n      const blocks = getBlocksToIndent(editor);\n      return !editor.mode.isReadOnly() && (blocks.length > 1 || validateBlocks(editor, blocks));\n    };\n    const isListComponent = el => isList(el) || isListItem$1(el);\n    const parentIsListComponent = el => parent(el).exists(isListComponent);\n    const getBlocksToIndent = editor => filter$5(fromDom$1(editor.selection.getSelectedBlocks()), el => !isListComponent(el) && !parentIsListComponent(el) && isEditable(el));\n    const handle = (editor, command) => {\n      var _a, _b;\n      const {\n        dom\n      } = editor;\n      const indentation = getIndentation(editor);\n      const indentUnit = (_b = (_a = /[a-z%]+$/i.exec(indentation)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : 'px';\n      const indentValue = parseIndentValue(indentation);\n      const useMargin = shouldIndentUseMargin(editor);\n      each$e(getBlocksToIndent(editor), block => {\n        indentElement(dom, command, useMargin, indentValue, indentUnit, block.dom);\n      });\n    };\n    const indent = editor => handle(editor, 'indent');\n    const outdent = editor => handle(editor, 'outdent');\n\n    const backspaceDelete$1 = editor => {\n      if (editor.selection.isCollapsed() && canOutdent(editor)) {\n        const dom = editor.dom;\n        const rng = editor.selection.getRng();\n        const pos = CaretPosition.fromRangeStart(rng);\n        const block = dom.getParent(rng.startContainer, dom.isBlock);\n        if (block !== null && isAtStartOfBlock(SugarElement.fromDom(block), pos, editor.schema)) {\n          return Optional.some(() => outdent(editor));\n        }\n      }\n      return Optional.none();\n    };\n\n    const findAction = (editor, caret, forward) => findMap([backspaceDelete$1, backspaceDelete$6, backspaceDelete$7, (editor, forward) => backspaceDelete$4(editor, caret, forward), backspaceDelete$9, backspaceDelete$a, backspaceDelete$5, backspaceDelete$2, backspaceDelete$8, backspaceDelete$3], item => item(editor, forward)).filter(_ => editor.selection.isEditable());\n    const deleteCommand = (editor, caret) => {\n      const result = findAction(editor, caret, false);\n      result.fold(() => {\n        if (editor.selection.isEditable()) {\n          execNativeDeleteCommand(editor);\n          paddEmptyBody(editor);\n        }\n      }, call);\n    };\n    const forwardDeleteCommand = (editor, caret) => {\n      const result = findAction(editor, caret, true);\n      result.fold(() => {\n        if (editor.selection.isEditable()) {\n          execNativeForwardDeleteCommand(editor);\n        }\n      }, call);\n    };\n    const setup$q = (editor, caret) => {\n      editor.addCommand('delete', () => {\n        deleteCommand(editor, caret);\n      });\n      editor.addCommand('forwardDelete', () => {\n        forwardDeleteCommand(editor, caret);\n      });\n    };\n\n    const SIGNIFICANT_MOVE = 5;\n    const LONGPRESS_DELAY = 400;\n    const getTouch = event => {\n      if (event.touches === undefined || event.touches.length !== 1) {\n        return Optional.none();\n      }\n      return Optional.some(event.touches[0]);\n    };\n    const isFarEnough = (touch, data) => {\n      const distX = Math.abs(touch.clientX - data.x);\n      const distY = Math.abs(touch.clientY - data.y);\n      return distX > SIGNIFICANT_MOVE || distY > SIGNIFICANT_MOVE;\n    };\n    const setup$p = editor => {\n      const startData = value$2();\n      const longpressFired = Cell(false);\n      const debounceLongpress = last$1(e => {\n        editor.dispatch('longpress', {\n          ...e,\n          type: 'longpress'\n        });\n        longpressFired.set(true);\n      }, LONGPRESS_DELAY);\n      editor.on('touchstart', e => {\n        getTouch(e).each(touch => {\n          debounceLongpress.cancel();\n          const data = {\n            x: touch.clientX,\n            y: touch.clientY,\n            target: e.target\n          };\n          debounceLongpress.throttle(e);\n          longpressFired.set(false);\n          startData.set(data);\n        });\n      }, true);\n      editor.on('touchmove', e => {\n        debounceLongpress.cancel();\n        getTouch(e).each(touch => {\n          startData.on(data => {\n            if (isFarEnough(touch, data)) {\n              startData.clear();\n              longpressFired.set(false);\n              editor.dispatch('longpresscancel');\n            }\n          });\n        });\n      }, true);\n      editor.on('touchend touchcancel', e => {\n        debounceLongpress.cancel();\n        if (e.type === 'touchcancel') {\n          return;\n        }\n        startData.get().filter(data => data.target.isEqualNode(e.target)).each(() => {\n          if (longpressFired.get()) {\n            e.preventDefault();\n          } else {\n            editor.dispatch('tap', {\n              ...e,\n              type: 'tap'\n            });\n          }\n        });\n      }, true);\n    };\n\n    const isBlockElement = (blockElements, node) => has$2(blockElements, node.nodeName);\n    const isValidTarget = (schema, node) => {\n      if (isText$a(node)) {\n        return true;\n      } else if (isElement$6(node)) {\n        return !isBlockElement(schema.getBlockElements(), node) && !isBookmarkNode$1(node) && !isTransparentBlock(schema, node) && !isNonHtmlElementRoot(node);\n      } else {\n        return false;\n      }\n    };\n    const hasBlockParent = (blockElements, root, node) => {\n      return exists(parents(SugarElement.fromDom(node), SugarElement.fromDom(root)), elm => {\n        return isBlockElement(blockElements, elm.dom);\n      });\n    };\n    const shouldRemoveTextNode = (blockElements, node) => {\n      if (isText$a(node)) {\n        if (node.data.length === 0) {\n          return true;\n        } else if (/^\\s+$/.test(node.data)) {\n          return !node.nextSibling || isBlockElement(blockElements, node.nextSibling) || isNonHtmlElementRoot(node.nextSibling);\n        }\n      }\n      return false;\n    };\n    const createRootBlock = editor => editor.dom.create(getForcedRootBlock(editor), getForcedRootBlockAttrs(editor));\n    const addRootBlocks = editor => {\n      const dom = editor.dom,\n        selection = editor.selection;\n      const schema = editor.schema;\n      const blockElements = schema.getBlockElements();\n      const startNode = selection.getStart();\n      const rootNode = editor.getBody();\n      let rootBlockNode;\n      let tempNode;\n      let wrapped = false;\n      const forcedRootBlock = getForcedRootBlock(editor);\n      if (!startNode || !isElement$6(startNode)) {\n        return;\n      }\n      const rootNodeName = rootNode.nodeName.toLowerCase();\n      if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, startNode)) {\n        return;\n      }\n      const rng = selection.getRng();\n      const {\n        startContainer,\n        startOffset,\n        endContainer,\n        endOffset\n      } = rng;\n      const restoreSelection = hasFocus(editor);\n      let node = rootNode.firstChild;\n      while (node) {\n        if (isElement$6(node)) {\n          updateElement(schema, node);\n        }\n        if (isValidTarget(schema, node)) {\n          if (shouldRemoveTextNode(blockElements, node)) {\n            tempNode = node;\n            node = node.nextSibling;\n            dom.remove(tempNode);\n            continue;\n          }\n          if (!rootBlockNode) {\n            rootBlockNode = createRootBlock(editor);\n            rootNode.insertBefore(rootBlockNode, node);\n            wrapped = true;\n          }\n          tempNode = node;\n          node = node.nextSibling;\n          rootBlockNode.appendChild(tempNode);\n        } else {\n          rootBlockNode = null;\n          node = node.nextSibling;\n        }\n      }\n      if (wrapped && restoreSelection) {\n        rng.setStart(startContainer, startOffset);\n        rng.setEnd(endContainer, endOffset);\n        selection.setRng(rng);\n        editor.nodeChanged();\n      }\n    };\n    const insertEmptyLine = (editor, root, insertBlock) => {\n      const block = SugarElement.fromDom(createRootBlock(editor));\n      const br = createPaddingBr();\n      append$1(block, br);\n      insertBlock(root, block);\n      const rng = document.createRange();\n      rng.setStartBefore(br.dom);\n      rng.setEndBefore(br.dom);\n      return rng;\n    };\n    const setup$o = editor => {\n      editor.on('NodeChange', curry(addRootBlocks, editor));\n    };\n\n    const hasClass = checkClassName => node => (' ' + node.attr('class') + ' ').indexOf(checkClassName) !== -1;\n    const replaceMatchWithSpan = (editor, content, cls) => {\n      return function (match) {\n        const args = arguments,\n          index = args[args.length - 2];\n        const prevChar = index > 0 ? content.charAt(index - 1) : '';\n        if (prevChar === '\"') {\n          return match;\n        }\n        if (prevChar === '>') {\n          const findStartTagIndex = content.lastIndexOf('<', index);\n          if (findStartTagIndex !== -1) {\n            const tagHtml = content.substring(findStartTagIndex, index);\n            if (tagHtml.indexOf('contenteditable=\"false\"') !== -1) {\n              return match;\n            }\n          }\n        }\n        return '<span class=\"' + cls + '\" data-mce-content=\"' + editor.dom.encode(args[0]) + '\">' + editor.dom.encode(typeof args[1] === 'string' ? args[1] : args[0]) + '</span>';\n      };\n    };\n    const convertRegExpsToNonEditable = (editor, nonEditableRegExps, e) => {\n      let i = nonEditableRegExps.length,\n        content = e.content;\n      if (e.format === 'raw') {\n        return;\n      }\n      while (i--) {\n        content = content.replace(nonEditableRegExps[i], replaceMatchWithSpan(editor, content, getNonEditableClass(editor)));\n      }\n      e.content = content;\n    };\n    const isValidContent = (nonEditableRegExps, content) => {\n      return forall(nonEditableRegExps, re => {\n        const matches = content.match(re);\n        return matches !== null && matches[0].length === content.length;\n      });\n    };\n    const setup$n = editor => {\n      const contentEditableAttrName = 'contenteditable';\n      const editClass = ' ' + Tools.trim(getEditableClass(editor)) + ' ';\n      const nonEditClass = ' ' + Tools.trim(getNonEditableClass(editor)) + ' ';\n      const hasEditClass = hasClass(editClass);\n      const hasNonEditClass = hasClass(nonEditClass);\n      const nonEditableRegExps = getNonEditableRegExps(editor);\n      if (nonEditableRegExps.length > 0) {\n        editor.on('BeforeSetContent', e => {\n          convertRegExpsToNonEditable(editor, nonEditableRegExps, e);\n        });\n      }\n      editor.parser.addAttributeFilter('class', nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          if (hasEditClass(node)) {\n            node.attr(contentEditableAttrName, 'true');\n          } else if (hasNonEditClass(node)) {\n            node.attr(contentEditableAttrName, 'false');\n          }\n        }\n      });\n      editor.serializer.addAttributeFilter(contentEditableAttrName, nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          if (!hasEditClass(node) && !hasNonEditClass(node)) {\n            continue;\n          }\n          const content = node.attr('data-mce-content');\n          if (nonEditableRegExps.length > 0 && content) {\n            if (isValidContent(nonEditableRegExps, content)) {\n              node.name = '#text';\n              node.type = 3;\n              node.raw = true;\n              node.value = content;\n            } else {\n              node.remove();\n            }\n          } else {\n            node.attr(contentEditableAttrName, null);\n          }\n        }\n      });\n    };\n\n    const findBlockCaretContainer = editor => descendant$1(SugarElement.fromDom(editor.getBody()), '*[data-mce-caret]').map(elm => elm.dom).getOrNull();\n    const showBlockCaretContainer = (editor, blockCaretContainer) => {\n      if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n        showCaretContainerBlock(blockCaretContainer);\n        editor.selection.setRng(editor.selection.getRng());\n        editor.selection.scrollIntoView(blockCaretContainer);\n      }\n    };\n    const handleBlockContainer = (editor, e) => {\n      const blockCaretContainer = findBlockCaretContainer(editor);\n      if (!blockCaretContainer) {\n        return;\n      }\n      if (e.type === 'compositionstart') {\n        e.preventDefault();\n        e.stopPropagation();\n        showBlockCaretContainer(editor, blockCaretContainer);\n        return;\n      }\n      if (hasContent(blockCaretContainer)) {\n        showBlockCaretContainer(editor, blockCaretContainer);\n        editor.undoManager.add();\n      }\n    };\n    const setup$m = editor => {\n      editor.on('keyup compositionstart', curry(handleBlockContainer, editor));\n    };\n\n    const isContentEditableFalse$3 = isContentEditableFalse$b;\n    const moveToCeFalseHorizontally = (direction, editor, range) => moveHorizontally(editor, direction, range, isBeforeContentEditableFalse, isAfterContentEditableFalse, isContentEditableFalse$3);\n    const moveToCeFalseVertically = (direction, editor, range) => {\n      const isBefore = caretPosition => isBeforeContentEditableFalse(caretPosition) || isBeforeTable(caretPosition);\n      const isAfter = caretPosition => isAfterContentEditableFalse(caretPosition) || isAfterTable(caretPosition);\n      return moveVertically(editor, direction, range, isBefore, isAfter, isContentEditableFalse$3);\n    };\n    const createTextBlock = editor => {\n      const textBlock = editor.dom.create(getForcedRootBlock(editor));\n      textBlock.innerHTML = '<br data-mce-bogus=\"1\">';\n      return textBlock;\n    };\n    const exitPreBlock = (editor, direction, range) => {\n      const caretWalker = CaretWalker(editor.getBody());\n      const getVisualCaretPosition$1 = curry(getVisualCaretPosition, direction === 1 ? caretWalker.next : caretWalker.prev);\n      if (range.collapsed) {\n        const pre = editor.dom.getParent(range.startContainer, 'PRE');\n        if (!pre) {\n          return;\n        }\n        const caretPos = getVisualCaretPosition$1(CaretPosition.fromRangeStart(range));\n        if (!caretPos) {\n          const newBlock = SugarElement.fromDom(createTextBlock(editor));\n          if (direction === 1) {\n            after$4(SugarElement.fromDom(pre), newBlock);\n          } else {\n            before$3(SugarElement.fromDom(pre), newBlock);\n          }\n          editor.selection.select(newBlock.dom, true);\n          editor.selection.collapse();\n        }\n      }\n    };\n    const getHorizontalRange = (editor, forward) => {\n      const direction = forward ? HDirection.Forwards : HDirection.Backwards;\n      const range = editor.selection.getRng();\n      return moveToCeFalseHorizontally(direction, editor, range).orThunk(() => {\n        exitPreBlock(editor, direction, range);\n        return Optional.none();\n      });\n    };\n    const getVerticalRange = (editor, down) => {\n      const direction = down ? 1 : -1;\n      const range = editor.selection.getRng();\n      return moveToCeFalseVertically(direction, editor, range).orThunk(() => {\n        exitPreBlock(editor, direction, range);\n        return Optional.none();\n      });\n    };\n    const flipDirection = (selection, forward) => {\n      const elm = forward ? selection.getEnd(true) : selection.getStart(true);\n      return isRtl(elm) ? !forward : forward;\n    };\n    const moveH$2 = (editor, forward) => getHorizontalRange(editor, flipDirection(editor.selection, forward)).exists(newRange => {\n      moveToRange(editor, newRange);\n      return true;\n    });\n    const moveV$4 = (editor, down) => getVerticalRange(editor, down).exists(newRange => {\n      moveToRange(editor, newRange);\n      return true;\n    });\n    const moveToLineEndPoint$1 = (editor, forward) => {\n      const isCefPosition = forward ? isAfterContentEditableFalse : isBeforeContentEditableFalse;\n      return moveToLineEndPoint$3(editor, forward, isCefPosition);\n    };\n    const selectToEndPoint = (editor, forward) => getEdgeCefPosition(editor, !forward).map(pos => {\n      const rng = pos.toRange();\n      const curRng = editor.selection.getRng();\n      if (forward) {\n        rng.setStart(curRng.startContainer, curRng.startOffset);\n      } else {\n        rng.setEnd(curRng.endContainer, curRng.endOffset);\n      }\n      return rng;\n    }).exists(rng => {\n      moveToRange(editor, rng);\n      return true;\n    });\n\n    const isTarget = node => contains$2(['figcaption'], name(node));\n    const getClosestTargetBlock = (pos, root, schema) => {\n      const isRoot = curry(eq, root);\n      return closest$4(SugarElement.fromDom(pos.container()), el => schema.isBlock(name(el)), isRoot).filter(isTarget);\n    };\n    const isAtFirstOrLastLine = (root, forward, pos) => forward ? isAtLastLine(root.dom, pos) : isAtFirstLine(root.dom, pos);\n    const moveCaretToNewEmptyLine = (editor, forward) => {\n      const root = SugarElement.fromDom(editor.getBody());\n      const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return getClosestTargetBlock(pos, root, editor.schema).exists(() => {\n        if (isAtFirstOrLastLine(root, forward, pos)) {\n          const insertFn = forward ? append$1 : prepend;\n          const rng = insertEmptyLine(editor, root, insertFn);\n          editor.selection.setRng(rng);\n          return true;\n        } else {\n          return false;\n        }\n      });\n    };\n    const moveV$3 = (editor, forward) => {\n      if (editor.selection.isCollapsed()) {\n        return moveCaretToNewEmptyLine(editor, forward);\n      } else {\n        return false;\n      }\n    };\n\n    const moveUp = (editor, details, summary) => {\n      const rng = editor.selection.getRng();\n      const pos = CaretPosition.fromRangeStart(rng);\n      const root = editor.getBody();\n      if (root.firstChild === details && isAtFirstLine(summary, pos)) {\n        editor.execCommand('InsertNewBlockBefore');\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const moveDown = (editor, details) => {\n      const rng = editor.selection.getRng();\n      const pos = CaretPosition.fromRangeStart(rng);\n      const root = editor.getBody();\n      if (root.lastChild === details && isAtLastLine(details, pos)) {\n        editor.execCommand('InsertNewBlockAfter');\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const move$2 = (editor, forward) => {\n      if (forward) {\n        return Optional.from(editor.dom.getParent(editor.selection.getNode(), 'details')).map(details => moveDown(editor, details)).getOr(false);\n      } else {\n        return Optional.from(editor.dom.getParent(editor.selection.getNode(), 'summary')).bind(summary => Optional.from(editor.dom.getParent(summary, 'details')).map(details => moveUp(editor, details, summary))).getOr(false);\n      }\n    };\n    const moveV$2 = (editor, forward) => move$2(editor, forward);\n\n    const baseKeyPattern = {\n      shiftKey: false,\n      altKey: false,\n      ctrlKey: false,\n      metaKey: false,\n      keyCode: 0\n    };\n    const defaultPatterns = patterns => map$3(patterns, pattern => ({\n      ...baseKeyPattern,\n      ...pattern\n    }));\n    const defaultDelayedPatterns = patterns => map$3(patterns, pattern => ({\n      ...baseKeyPattern,\n      ...pattern\n    }));\n    const matchesEvent = (pattern, evt) => evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey;\n    const match$1 = (patterns, evt) => bind$3(defaultPatterns(patterns), pattern => matchesEvent(pattern, evt) ? [pattern] : []);\n    const matchDelayed = (patterns, evt) => bind$3(defaultDelayedPatterns(patterns), pattern => matchesEvent(pattern, evt) ? [pattern] : []);\n    const action = (f, ...x) => () => f.apply(null, x);\n    const execute = (patterns, evt) => find$2(match$1(patterns, evt), pattern => pattern.action());\n    const executeWithDelayedAction = (patterns, evt) => findMap(matchDelayed(patterns, evt), pattern => pattern.action());\n\n    const moveH$1 = (editor, forward) => {\n      const direction = forward ? HDirection.Forwards : HDirection.Backwards;\n      const range = editor.selection.getRng();\n      return moveHorizontally(editor, direction, range, isBeforeMedia, isAfterMedia, isMedia$2).exists(newRange => {\n        moveToRange(editor, newRange);\n        return true;\n      });\n    };\n    const moveV$1 = (editor, down) => {\n      const direction = down ? 1 : -1;\n      const range = editor.selection.getRng();\n      return moveVertically(editor, direction, range, isBeforeMedia, isAfterMedia, isMedia$2).exists(newRange => {\n        moveToRange(editor, newRange);\n        return true;\n      });\n    };\n    const moveToLineEndPoint = (editor, forward) => {\n      const isNearMedia = forward ? isAfterMedia : isBeforeMedia;\n      return moveToLineEndPoint$3(editor, forward, isNearMedia);\n    };\n\n    const adt = Adt.generate([{\n      none: ['current']\n    }, {\n      first: ['current']\n    }, {\n      middle: ['current', 'target']\n    }, {\n      last: ['current']\n    }]);\n    const none = current => adt.none(current);\n    const CellLocation = {\n      ...adt,\n      none\n    };\n\n    const firstLayer = (scope, selector) => {\n      return filterFirstLayer(scope, selector, always);\n    };\n    const filterFirstLayer = (scope, selector, predicate) => {\n      return bind$3(children$1(scope), x => {\n        if (is$1(x, selector)) {\n          return predicate(x) ? [x] : [];\n        } else {\n          return filterFirstLayer(x, selector, predicate);\n        }\n      });\n    };\n\n    const lookup$1 = (tags, element, isRoot = never) => {\n      if (isRoot(element)) {\n        return Optional.none();\n      }\n      if (contains$2(tags, name(element))) {\n        return Optional.some(element);\n      }\n      const isRootOrUpperTable = elm => is$1(elm, 'table') || isRoot(elm);\n      return ancestor$3(element, tags.join(','), isRootOrUpperTable);\n    };\n    const cell = (element, isRoot) => lookup$1(['td', 'th'], element, isRoot);\n    const cells = ancestor => firstLayer(ancestor, 'th,td');\n    const table = (element, isRoot) => closest$3(element, 'table', isRoot);\n\n    const walk = (all, current, index, direction, isEligible = always) => {\n      const forwards = direction === 1;\n      if (!forwards && index <= 0) {\n        return CellLocation.first(all[0]);\n      } else if (forwards && index >= all.length - 1) {\n        return CellLocation.last(all[all.length - 1]);\n      } else {\n        const newIndex = index + direction;\n        const elem = all[newIndex];\n        return isEligible(elem) ? CellLocation.middle(current, elem) : walk(all, current, newIndex, direction, isEligible);\n      }\n    };\n    const detect = (current, isRoot) => {\n      return table(current, isRoot).bind(table => {\n        const all = cells(table);\n        const index = findIndex$2(all, x => eq(current, x));\n        return index.map(index => ({\n          index,\n          all\n        }));\n      });\n    };\n    const next = (current, isEligible, isRoot) => {\n      const detection = detect(current, isRoot);\n      return detection.fold(() => {\n        return CellLocation.none(current);\n      }, info => {\n        return walk(info.all, current, info.index, 1, isEligible);\n      });\n    };\n    const prev = (current, isEligible, isRoot) => {\n      const detection = detect(current, isRoot);\n      return detection.fold(() => {\n        return CellLocation.none();\n      }, info => {\n        return walk(info.all, current, info.index, -1, isEligible);\n      });\n    };\n\n    const deflate = (rect, delta) => ({\n      left: rect.left - delta,\n      top: rect.top - delta,\n      right: rect.right + delta * 2,\n      bottom: rect.bottom + delta * 2,\n      width: rect.width + delta,\n      height: rect.height + delta\n    });\n    const getCorners = (getYAxisValue, tds) => bind$3(tds, td => {\n      const rect = deflate(clone$1(td.getBoundingClientRect()), -1);\n      return [{\n        x: rect.left,\n        y: getYAxisValue(rect),\n        cell: td\n      }, {\n        x: rect.right,\n        y: getYAxisValue(rect),\n        cell: td\n      }];\n    });\n    const findClosestCorner = (corners, x, y) => foldl(corners, (acc, newCorner) => acc.fold(() => Optional.some(newCorner), oldCorner => {\n      const oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y));\n      const newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y));\n      return Optional.some(newDist < oldDist ? newCorner : oldCorner);\n    }), Optional.none());\n    const getClosestCell = (getYAxisValue, isTargetCorner, table, x, y) => {\n      const cells = descendants(SugarElement.fromDom(table), 'td,th,caption').map(e => e.dom);\n      const corners = filter$5(getCorners(getYAxisValue, cells), corner => isTargetCorner(corner, y));\n      return findClosestCorner(corners, x, y).map(corner => corner.cell);\n    };\n    const getBottomValue = rect => rect.bottom;\n    const getTopValue = rect => rect.top;\n    const isAbove = (corner, y) => corner.y < y;\n    const isBelow = (corner, y) => corner.y > y;\n    const getClosestCellAbove = curry(getClosestCell, getBottomValue, isAbove);\n    const getClosestCellBelow = curry(getClosestCell, getTopValue, isBelow);\n    const findClosestPositionInAboveCell = (table, pos) => head(pos.getClientRects()).bind(rect => getClosestCellAbove(table, rect.left, rect.top)).bind(cell => findClosestHorizontalPosition(getLastLinePositions(cell), pos));\n    const findClosestPositionInBelowCell = (table, pos) => last$3(pos.getClientRects()).bind(rect => getClosestCellBelow(table, rect.left, rect.top)).bind(cell => findClosestHorizontalPosition(getFirstLinePositions(cell), pos));\n\n    const hasNextBreak = (getPositionsUntil, scope, lineInfo) => lineInfo.breakAt.exists(breakPos => getPositionsUntil(scope, breakPos).breakAt.isSome());\n    const startsWithWrapBreak = lineInfo => lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0;\n    const startsWithBrBreak = lineInfo => lineInfo.breakType === BreakType.Br && lineInfo.positions.length === 1;\n    const isAtTableCellLine = (getPositionsUntil, scope, pos) => {\n      const lineInfo = getPositionsUntil(scope, pos);\n      if (startsWithWrapBreak(lineInfo) || !isBr$6(pos.getNode()) && startsWithBrBreak(lineInfo)) {\n        return !hasNextBreak(getPositionsUntil, scope, lineInfo);\n      } else {\n        return lineInfo.breakAt.isNone();\n      }\n    };\n    const isAtFirstTableCellLine = curry(isAtTableCellLine, getPositionsUntilPreviousLine);\n    const isAtLastTableCellLine = curry(isAtTableCellLine, getPositionsUntilNextLine);\n    const isCaretAtStartOrEndOfTable = (forward, rng, table) => {\n      const caretPos = CaretPosition.fromRangeStart(rng);\n      return positionIn(!forward, table).exists(pos => pos.isEqual(caretPos));\n    };\n    const navigateHorizontally = (editor, forward, table, _td) => {\n      const rng = editor.selection.getRng();\n      const direction = forward ? 1 : -1;\n      if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) {\n        showCaret(direction, editor, table, !forward, false).each(newRng => {\n          moveToRange(editor, newRng);\n        });\n        return true;\n      }\n      return false;\n    };\n    const getClosestAbovePosition = (root, table, start) => findClosestPositionInAboveCell(table, start).orThunk(() => head(start.getClientRects()).bind(rect => findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition.before(table)), rect.left))).getOr(CaretPosition.before(table));\n    const getClosestBelowPosition = (root, table, start) => findClosestPositionInBelowCell(table, start).orThunk(() => head(start.getClientRects()).bind(rect => findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition.after(table)), rect.left))).getOr(CaretPosition.after(table));\n    const getTable = (previous, pos) => {\n      const node = pos.getNode(previous);\n      return isTable$2(node) ? Optional.some(node) : Optional.none();\n    };\n    const renderBlock = (down, editor, table) => {\n      editor.undoManager.transact(() => {\n        const insertFn = down ? after$4 : before$3;\n        const rng = insertEmptyLine(editor, SugarElement.fromDom(table), insertFn);\n        moveToRange(editor, rng);\n      });\n    };\n    const moveCaret = (editor, down, pos) => {\n      const table = down ? getTable(true, pos) : getTable(false, pos);\n      const last = down === false;\n      table.fold(() => moveToRange(editor, pos.toRange()), table => positionIn(last, editor.getBody()).filter(lastPos => lastPos.isEqual(pos)).fold(() => moveToRange(editor, pos.toRange()), _ => renderBlock(down, editor, table)));\n    };\n    const navigateVertically = (editor, down, table, td) => {\n      const rng = editor.selection.getRng();\n      const pos = CaretPosition.fromRangeStart(rng);\n      const root = editor.getBody();\n      if (!down && isAtFirstTableCellLine(td, pos)) {\n        const newPos = getClosestAbovePosition(root, table, pos);\n        moveCaret(editor, down, newPos);\n        return true;\n      } else if (down && isAtLastTableCellLine(td, pos)) {\n        const newPos = getClosestBelowPosition(root, table, pos);\n        moveCaret(editor, down, newPos);\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const move$1 = (editor, forward, mover) => Optional.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(td => Optional.from(editor.dom.getParent(td, 'table')).map(table => mover(editor, forward, table, td))).getOr(false);\n    const moveH = (editor, forward) => move$1(editor, forward, navigateHorizontally);\n    const moveV = (editor, forward) => move$1(editor, forward, navigateVertically);\n    const getCellFirstCursorPosition = cell => {\n      const selection = SimSelection.exact(cell, 0, cell, 0);\n      return toNative(selection);\n    };\n    const tabGo = (editor, isRoot, cell) => {\n      return cell.fold(Optional.none, Optional.none, (_current, next) => {\n        return first(next).map(cell => {\n          return getCellFirstCursorPosition(cell);\n        });\n      }, current => {\n        editor.execCommand('mceTableInsertRowAfter');\n        return tabForward(editor, isRoot, current);\n      });\n    };\n    const tabForward = (editor, isRoot, cell) => tabGo(editor, isRoot, next(cell, isEditable$2));\n    const tabBackward = (editor, isRoot, cell) => tabGo(editor, isRoot, prev(cell, isEditable$2));\n    const handleTab = (editor, forward) => {\n      const rootElements = ['table', 'li', 'dl'];\n      const body = SugarElement.fromDom(editor.getBody());\n      const isRoot = element => {\n        const name$1 = name(element);\n        return eq(element, body) || contains$2(rootElements, name$1);\n      };\n      const rng = editor.selection.getRng();\n      const container = SugarElement.fromDom(!forward ? rng.startContainer : rng.endContainer);\n      return cell(container, isRoot).map(cell => {\n        table(cell, isRoot).each(table => {\n          editor.model.table.clearSelectedCells(table.dom);\n        });\n        editor.selection.collapse(!forward);\n        const navigation = !forward ? tabBackward : tabForward;\n        const rng = navigation(editor, isRoot, cell);\n        rng.each(range => {\n          editor.selection.setRng(range);\n        });\n        return true;\n      }).getOr(false);\n    };\n\n    const executeKeydownOverride$4 = (editor, caret, evt) => {\n      const isMac = Env.os.isMacOS() || Env.os.isiOS();\n      execute([{\n        keyCode: VK.RIGHT,\n        action: action(moveH$2, editor, true)\n      }, {\n        keyCode: VK.LEFT,\n        action: action(moveH$2, editor, false)\n      }, {\n        keyCode: VK.UP,\n        action: action(moveV$4, editor, false)\n      }, {\n        keyCode: VK.DOWN,\n        action: action(moveV$4, editor, true)\n      }, ...(isMac ? [{\n        keyCode: VK.UP,\n        action: action(selectToEndPoint, editor, false),\n        metaKey: true,\n        shiftKey: true\n      }, {\n        keyCode: VK.DOWN,\n        action: action(selectToEndPoint, editor, true),\n        metaKey: true,\n        shiftKey: true\n      }] : []), {\n        keyCode: VK.RIGHT,\n        action: action(moveH, editor, true)\n      }, {\n        keyCode: VK.LEFT,\n        action: action(moveH, editor, false)\n      }, {\n        keyCode: VK.UP,\n        action: action(moveV, editor, false)\n      }, {\n        keyCode: VK.DOWN,\n        action: action(moveV, editor, true)\n      }, {\n        keyCode: VK.UP,\n        action: action(moveV, editor, false)\n      }, {\n        keyCode: VK.UP,\n        action: action(moveV$2, editor, false)\n      }, {\n        keyCode: VK.DOWN,\n        action: action(moveV$2, editor, true)\n      }, {\n        keyCode: VK.RIGHT,\n        action: action(moveH$1, editor, true)\n      }, {\n        keyCode: VK.LEFT,\n        action: action(moveH$1, editor, false)\n      }, {\n        keyCode: VK.UP,\n        action: action(moveV$1, editor, false)\n      }, {\n        keyCode: VK.DOWN,\n        action: action(moveV$1, editor, true)\n      }, {\n        keyCode: VK.RIGHT,\n        action: action(move$3, editor, caret, true)\n      }, {\n        keyCode: VK.LEFT,\n        action: action(move$3, editor, caret, false)\n      }, {\n        keyCode: VK.RIGHT,\n        ctrlKey: !isMac,\n        altKey: isMac,\n        action: action(moveNextWord, editor, caret)\n      }, {\n        keyCode: VK.LEFT,\n        ctrlKey: !isMac,\n        altKey: isMac,\n        action: action(movePrevWord, editor, caret)\n      }, {\n        keyCode: VK.UP,\n        action: action(moveV$3, editor, false)\n      }, {\n        keyCode: VK.DOWN,\n        action: action(moveV$3, editor, true)\n      }], evt).each(_ => {\n        evt.preventDefault();\n      });\n    };\n    const setup$l = (editor, caret) => {\n      editor.on('keydown', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride$4(editor, caret, evt);\n        }\n      });\n    };\n\n    const point = (container, offset) => ({\n      container,\n      offset\n    });\n\n    const DOM$7 = DOMUtils.DOM;\n    const alwaysNext = startNode => node => startNode === node ? -1 : 0;\n    const isBoundary = dom => node => dom.isBlock(node) || contains$2(['BR', 'IMG', 'HR', 'INPUT'], node.nodeName) || dom.getContentEditable(node) === 'false';\n    const textBefore = (node, offset, rootNode) => {\n      if (isText$a(node) && offset >= 0) {\n        return Optional.some(point(node, offset));\n      } else {\n        const textSeeker = TextSeeker(DOM$7);\n        return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).map(prev => point(prev.container, prev.container.data.length));\n      }\n    };\n    const textAfter = (node, offset, rootNode) => {\n      if (isText$a(node) && offset >= node.length) {\n        return Optional.some(point(node, offset));\n      } else {\n        const textSeeker = TextSeeker(DOM$7);\n        return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).map(prev => point(prev.container, 0));\n      }\n    };\n    const scanLeft = (node, offset, rootNode) => {\n      if (!isText$a(node)) {\n        return Optional.none();\n      }\n      const text = node.data;\n      if (offset >= 0 && offset <= text.length) {\n        return Optional.some(point(node, offset));\n      } else {\n        const textSeeker = TextSeeker(DOM$7);\n        return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).bind(prev => {\n          const prevText = prev.container.data;\n          return scanLeft(prev.container, offset + prevText.length, rootNode);\n        });\n      }\n    };\n    const scanRight = (node, offset, rootNode) => {\n      if (!isText$a(node)) {\n        return Optional.none();\n      }\n      const text = node.data;\n      if (offset <= text.length) {\n        return Optional.some(point(node, offset));\n      } else {\n        const textSeeker = TextSeeker(DOM$7);\n        return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).bind(next => scanRight(next.container, offset - text.length, rootNode));\n      }\n    };\n    const repeatLeft = (dom, node, offset, process, rootNode) => {\n      const search = TextSeeker(dom, isBoundary(dom));\n      return Optional.from(search.backwards(node, offset, process, rootNode));\n    };\n\n    const isValidTextRange = rng => rng.collapsed && isText$a(rng.startContainer);\n    const getText = rng => trim$2(rng.toString().replace(/\\u00A0/g, ' '));\n    const isWhitespace = chr => chr !== '' && ' \\xA0\\f\\n\\r\\t\\x0B'.indexOf(chr) !== -1;\n\n    const stripTrigger = (text, trigger) => text.substring(trigger.length);\n    const findTrigger = (text, index, trigger) => {\n      let i;\n      const firstChar = trigger.charAt(0);\n      for (i = index - 1; i >= 0; i--) {\n        const char = text.charAt(i);\n        if (isWhitespace(char)) {\n          return Optional.none();\n        }\n        if (firstChar === char && contains$1(text, trigger, i, index)) {\n          break;\n        }\n      }\n      return Optional.some(i);\n    };\n    const findStart = (dom, initRange, trigger, minChars = 0) => {\n      if (!isValidTextRange(initRange)) {\n        return Optional.none();\n      }\n      const buffer = {\n        text: '',\n        offset: 0\n      };\n      const findTriggerIndex = (element, offset, text) => {\n        buffer.text = text + buffer.text;\n        buffer.offset += offset;\n        return findTrigger(buffer.text, buffer.offset, trigger).getOr(offset);\n      };\n      const root = dom.getParent(initRange.startContainer, dom.isBlock) || dom.getRoot();\n      return repeatLeft(dom, initRange.startContainer, initRange.startOffset, findTriggerIndex, root).bind(spot => {\n        const range = initRange.cloneRange();\n        range.setStart(spot.container, spot.offset);\n        range.setEnd(initRange.endContainer, initRange.endOffset);\n        if (range.collapsed) {\n          return Optional.none();\n        }\n        const text = getText(range);\n        const triggerIndex = text.lastIndexOf(trigger);\n        if (triggerIndex !== 0 || stripTrigger(text, trigger).length < minChars) {\n          return Optional.none();\n        } else {\n          return Optional.some({\n            text: stripTrigger(text, trigger),\n            range,\n            trigger\n          });\n        }\n      });\n    };\n    const getContext = (dom, initRange, trigger, minChars = 0) => detect$1(SugarElement.fromDom(initRange.startContainer)).fold(() => findStart(dom, initRange, trigger, minChars), elm => {\n      const range = dom.createRng();\n      range.selectNode(elm.dom);\n      const text = getText(range);\n      return Optional.some({\n        range,\n        text: stripTrigger(text, trigger),\n        trigger\n      });\n    });\n\n    const isText$1 = node => node.nodeType === TEXT;\n    const isElement = node => node.nodeType === ELEMENT;\n    const toLast = node => {\n      if (isText$1(node)) {\n        return point(node, node.data.length);\n      } else {\n        const children = node.childNodes;\n        return children.length > 0 ? toLast(children[children.length - 1]) : point(node, children.length);\n      }\n    };\n    const toLeaf = (node, offset) => {\n      const children = node.childNodes;\n      if (children.length > 0 && offset < children.length) {\n        return toLeaf(children[offset], 0);\n      } else if (children.length > 0 && isElement(node) && children.length === offset) {\n        return toLast(children[children.length - 1]);\n      } else {\n        return point(node, offset);\n      }\n    };\n\n    const isPreviousCharContent = (dom, leaf) => {\n      var _a;\n      const root = (_a = dom.getParent(leaf.container, dom.isBlock)) !== null && _a !== void 0 ? _a : dom.getRoot();\n      return repeatLeft(dom, leaf.container, leaf.offset, (_element, offset) => offset === 0 ? -1 : offset, root).filter(spot => {\n        const char = spot.container.data.charAt(spot.offset - 1);\n        return !isWhitespace(char);\n      }).isSome();\n    };\n    const isStartOfWord = dom => rng => {\n      const leaf = toLeaf(rng.startContainer, rng.startOffset);\n      return !isPreviousCharContent(dom, leaf);\n    };\n    const getTriggerContext = (dom, initRange, database) => findMap(database.triggers, trigger => getContext(dom, initRange, trigger));\n    const lookup = (editor, getDatabase) => {\n      const database = getDatabase();\n      const rng = editor.selection.getRng();\n      return getTriggerContext(editor.dom, rng, database).bind(context => lookupWithContext(editor, getDatabase, context));\n    };\n    const lookupWithContext = (editor, getDatabase, context, fetchOptions = {}) => {\n      var _a;\n      const database = getDatabase();\n      const rng = editor.selection.getRng();\n      const startText = (_a = rng.startContainer.nodeValue) !== null && _a !== void 0 ? _a : '';\n      const autocompleters = filter$5(database.lookupByTrigger(context.trigger), autocompleter => context.text.length >= autocompleter.minChars && autocompleter.matches.getOrThunk(() => isStartOfWord(editor.dom))(context.range, startText, context.text));\n      if (autocompleters.length === 0) {\n        return Optional.none();\n      }\n      const lookupData = Promise.all(map$3(autocompleters, ac => {\n        const fetchResult = ac.fetch(context.text, ac.maxResults, fetchOptions);\n        return fetchResult.then(results => ({\n          matchText: context.text,\n          items: results,\n          columns: ac.columns,\n          onAction: ac.onAction,\n          highlightOn: ac.highlightOn\n        }));\n      }));\n      return Optional.some({\n        lookupData,\n        context\n      });\n    };\n\n    var SimpleResultType;\n    (function (SimpleResultType) {\n      SimpleResultType[SimpleResultType['Error'] = 0] = 'Error';\n      SimpleResultType[SimpleResultType['Value'] = 1] = 'Value';\n    })(SimpleResultType || (SimpleResultType = {}));\n    const fold$1 = (res, onError, onValue) => res.stype === SimpleResultType.Error ? onError(res.serror) : onValue(res.svalue);\n    const partition = results => {\n      const values = [];\n      const errors = [];\n      each$e(results, obj => {\n        fold$1(obj, err => errors.push(err), val => values.push(val));\n      });\n      return {\n        values,\n        errors\n      };\n    };\n    const mapError = (res, f) => {\n      if (res.stype === SimpleResultType.Error) {\n        return {\n          stype: SimpleResultType.Error,\n          serror: f(res.serror)\n        };\n      } else {\n        return res;\n      }\n    };\n    const map = (res, f) => {\n      if (res.stype === SimpleResultType.Value) {\n        return {\n          stype: SimpleResultType.Value,\n          svalue: f(res.svalue)\n        };\n      } else {\n        return res;\n      }\n    };\n    const bind$1 = (res, f) => {\n      if (res.stype === SimpleResultType.Value) {\n        return f(res.svalue);\n      } else {\n        return res;\n      }\n    };\n    const bindError = (res, f) => {\n      if (res.stype === SimpleResultType.Error) {\n        return f(res.serror);\n      } else {\n        return res;\n      }\n    };\n    const svalue = v => ({\n      stype: SimpleResultType.Value,\n      svalue: v\n    });\n    const serror = e => ({\n      stype: SimpleResultType.Error,\n      serror: e\n    });\n    const toResult = res => fold$1(res, Result.error, Result.value);\n    const fromResult = res => res.fold(serror, svalue);\n    const SimpleResult = {\n      fromResult,\n      toResult,\n      svalue,\n      partition,\n      serror,\n      bind: bind$1,\n      bindError,\n      map,\n      mapError,\n      fold: fold$1\n    };\n\n    const formatObj = input => {\n      return isObject(input) && keys(input).length > 100 ? ' removed due to size' : JSON.stringify(input, null, 2);\n    };\n    const formatErrors = errors => {\n      const es = errors.length > 10 ? errors.slice(0, 10).concat([{\n        path: [],\n        getErrorInfo: constant('... (only showing first ten failures)')\n      }]) : errors;\n      return map$3(es, e => {\n        return 'Failed path: (' + e.path.join(' > ') + ')\\n' + e.getErrorInfo();\n      });\n    };\n\n    const nu = (path, getErrorInfo) => {\n      return SimpleResult.serror([{\n        path,\n        getErrorInfo\n      }]);\n    };\n    const missingRequired = (path, key, obj) => nu(path, () => 'Could not find valid *required* value for \"' + key + '\" in ' + formatObj(obj));\n    const missingKey = (path, key) => nu(path, () => 'Choice schema did not contain choice key: \"' + key + '\"');\n    const missingBranch = (path, branches, branch) => nu(path, () => 'The chosen schema: \"' + branch + '\" did not exist in branches: ' + formatObj(branches));\n    const custom = (path, err) => nu(path, constant(err));\n\n    const chooseFrom = (path, input, branches, ch) => {\n      const fields = get$a(branches, ch);\n      return fields.fold(() => missingBranch(path, branches, ch), vp => vp.extract(path.concat(['branch: ' + ch]), input));\n    };\n    const choose$1 = (key, branches) => {\n      const extract = (path, input) => {\n        const choice = get$a(input, key);\n        return choice.fold(() => missingKey(path, key), chosen => chooseFrom(path, input, branches, chosen));\n      };\n      const toString = () => 'chooseOn(' + key + '). Possible values: ' + keys(branches);\n      return {\n        extract,\n        toString\n      };\n    };\n\n    const shallow = (old, nu) => {\n      return nu;\n    };\n    const deep = (old, nu) => {\n      const bothObjects = isPlainObject(old) && isPlainObject(nu);\n      return bothObjects ? deepMerge(old, nu) : nu;\n    };\n    const baseMerge = merger => {\n      return (...objects) => {\n        if (objects.length === 0) {\n          throw new Error(\"Can't merge zero objects\");\n        }\n        const ret = {};\n        for (let j = 0; j < objects.length; j++) {\n          const curObject = objects[j];\n          for (const key in curObject) {\n            if (has$2(curObject, key)) {\n              ret[key] = merger(ret[key], curObject[key]);\n            }\n          }\n        }\n        return ret;\n      };\n    };\n    const deepMerge = baseMerge(deep);\n    const merge = baseMerge(shallow);\n\n    const required = () => ({\n      tag: 'required',\n      process: {}\n    });\n    const defaultedThunk = fallbackThunk => ({\n      tag: 'defaultedThunk',\n      process: fallbackThunk\n    });\n    const defaulted$1 = fallback => defaultedThunk(constant(fallback));\n    const asOption = () => ({\n      tag: 'option',\n      process: {}\n    });\n\n    const mergeValues = (values, base) => values.length > 0 ? SimpleResult.svalue(deepMerge(base, merge.apply(undefined, values))) : SimpleResult.svalue(base);\n    const mergeErrors = errors => compose(SimpleResult.serror, flatten)(errors);\n    const consolidateObj = (objects, base) => {\n      const partition = SimpleResult.partition(objects);\n      return partition.errors.length > 0 ? mergeErrors(partition.errors) : mergeValues(partition.values, base);\n    };\n    const consolidateArr = objects => {\n      const partitions = SimpleResult.partition(objects);\n      return partitions.errors.length > 0 ? mergeErrors(partitions.errors) : SimpleResult.svalue(partitions.values);\n    };\n    const ResultCombine = {\n      consolidateObj,\n      consolidateArr\n    };\n\n    const field$1 = (key, newKey, presence, prop) => ({\n      tag: 'field',\n      key,\n      newKey,\n      presence,\n      prop\n    });\n    const customField$1 = (newKey, instantiator) => ({\n      tag: 'custom',\n      newKey,\n      instantiator\n    });\n    const fold = (value, ifField, ifCustom) => {\n      switch (value.tag) {\n        case 'field':\n          return ifField(value.key, value.newKey, value.presence, value.prop);\n        case 'custom':\n          return ifCustom(value.newKey, value.instantiator);\n      }\n    };\n\n    const value = validator => {\n      const extract = (path, val) => {\n        return SimpleResult.bindError(validator(val), err => custom(path, err));\n      };\n      const toString = constant('val');\n      return {\n        extract,\n        toString\n      };\n    };\n    const anyValue$1 = value(SimpleResult.svalue);\n\n    const requiredAccess = (path, obj, key, bundle) => get$a(obj, key).fold(() => missingRequired(path, key, obj), bundle);\n    const fallbackAccess = (obj, key, fallback, bundle) => {\n      const v = get$a(obj, key).getOrThunk(() => fallback(obj));\n      return bundle(v);\n    };\n    const optionAccess = (obj, key, bundle) => bundle(get$a(obj, key));\n    const optionDefaultedAccess = (obj, key, fallback, bundle) => {\n      const opt = get$a(obj, key).map(val => val === true ? fallback(obj) : val);\n      return bundle(opt);\n    };\n    const extractField = (field, path, obj, key, prop) => {\n      const bundle = av => prop.extract(path.concat([key]), av);\n      const bundleAsOption = optValue => optValue.fold(() => SimpleResult.svalue(Optional.none()), ov => {\n        const result = prop.extract(path.concat([key]), ov);\n        return SimpleResult.map(result, Optional.some);\n      });\n      switch (field.tag) {\n        case 'required':\n          return requiredAccess(path, obj, key, bundle);\n        case 'defaultedThunk':\n          return fallbackAccess(obj, key, field.process, bundle);\n        case 'option':\n          return optionAccess(obj, key, bundleAsOption);\n        case 'defaultedOptionThunk':\n          return optionDefaultedAccess(obj, key, field.process, bundleAsOption);\n        case 'mergeWithThunk':\n          {\n            return fallbackAccess(obj, key, constant({}), v => {\n              const result = deepMerge(field.process(obj), v);\n              return bundle(result);\n            });\n          }\n      }\n    };\n    const extractFields = (path, obj, fields) => {\n      const success = {};\n      const errors = [];\n      for (const field of fields) {\n        fold(field, (key, newKey, presence, prop) => {\n          const result = extractField(presence, path, obj, key, prop);\n          SimpleResult.fold(result, err => {\n            errors.push(...err);\n          }, res => {\n            success[newKey] = res;\n          });\n        }, (newKey, instantiator) => {\n          success[newKey] = instantiator(obj);\n        });\n      }\n      return errors.length > 0 ? SimpleResult.serror(errors) : SimpleResult.svalue(success);\n    };\n    const objOf = values => {\n      const extract = (path, o) => extractFields(path, o, values);\n      const toString = () => {\n        const fieldStrings = map$3(values, value => fold(value, (key, _okey, _presence, prop) => key + ' -> ' + prop.toString(), (newKey, _instantiator) => 'state(' + newKey + ')'));\n        return 'obj{\\n' + fieldStrings.join('\\n') + '}';\n      };\n      return {\n        extract,\n        toString\n      };\n    };\n    const arrOf = prop => {\n      const extract = (path, array) => {\n        const results = map$3(array, (a, i) => prop.extract(path.concat(['[' + i + ']']), a));\n        return ResultCombine.consolidateArr(results);\n      };\n      const toString = () => 'array(' + prop.toString() + ')';\n      return {\n        extract,\n        toString\n      };\n    };\n\n    const valueOf = validator => value(v => validator(v).fold(SimpleResult.serror, SimpleResult.svalue));\n    const extractValue = (label, prop, obj) => {\n      const res = prop.extract([label], obj);\n      return SimpleResult.mapError(res, errs => ({\n        input: obj,\n        errors: errs\n      }));\n    };\n    const asRaw = (label, prop, obj) => SimpleResult.toResult(extractValue(label, prop, obj));\n    const formatError = errInfo => {\n      return 'Errors: \\n' + formatErrors(errInfo.errors).join('\\n') + '\\n\\nInput object: ' + formatObj(errInfo.input);\n    };\n    const choose = (key, branches) => choose$1(key, map$2(branches, objOf));\n\n    const anyValue = constant(anyValue$1);\n    const typedValue = (validator, expectedType) => value(a => {\n      const actualType = typeof a;\n      return validator(a) ? SimpleResult.svalue(a) : SimpleResult.serror(\"Expected type: \".concat(expectedType, \" but got: \").concat(actualType));\n    });\n    const number = typedValue(isNumber, 'number');\n    const string = typedValue(isString, 'string');\n    const boolean = typedValue(isBoolean, 'boolean');\n    const functionProcessor = typedValue(isFunction, 'function');\n\n    const field = field$1;\n    const customField = customField$1;\n    const validateEnum = values => valueOf(value => contains$2(values, value) ? Result.value(value) : Result.error(\"Unsupported value: \\\"\".concat(value, \"\\\", choose one of \\\"\").concat(values.join(', '), \"\\\".\")));\n    const requiredOf = (key, schema) => field(key, key, required(), schema);\n    const requiredString = key => requiredOf(key, string);\n    const requiredFunction = key => requiredOf(key, functionProcessor);\n    const requiredArrayOf = (key, schema) => field(key, key, required(), arrOf(schema));\n    const optionOf = (key, schema) => field(key, key, asOption(), schema);\n    const optionString = key => optionOf(key, string);\n    const optionFunction = key => optionOf(key, functionProcessor);\n    const defaulted = (key, fallback) => field(key, key, defaulted$1(fallback), anyValue());\n    const defaultedOf = (key, fallback, schema) => field(key, key, defaulted$1(fallback), schema);\n    const defaultedNumber = (key, fallback) => defaultedOf(key, fallback, number);\n    const defaultedString = (key, fallback) => defaultedOf(key, fallback, string);\n    const defaultedStringEnum = (key, fallback, values) => defaultedOf(key, fallback, validateEnum(values));\n    const defaultedBoolean = (key, fallback) => defaultedOf(key, fallback, boolean);\n    const defaultedFunction = (key, fallback) => defaultedOf(key, fallback, functionProcessor);\n    const defaultedArrayOf = (key, fallback, schema) => defaultedOf(key, fallback, arrOf(schema));\n\n    const type = requiredString('type');\n    const fetch$1 = requiredFunction('fetch');\n    const onAction = requiredFunction('onAction');\n    const onSetup = defaultedFunction('onSetup', () => noop);\n    const optionalText = optionString('text');\n    const optionalIcon = optionString('icon');\n    const optionalTooltip = optionString('tooltip');\n    const optionalLabel = optionString('label');\n    const active = defaultedBoolean('active', false);\n    const enabled = defaultedBoolean('enabled', true);\n    const primary = defaultedBoolean('primary', false);\n    const defaultedColumns = num => defaulted('columns', num);\n    const defaultedType = type => defaultedString('type', type);\n\n    const autocompleterSchema = objOf([type, requiredString('trigger'), defaultedNumber('minChars', 1), defaultedColumns(1), defaultedNumber('maxResults', 10), optionFunction('matches'), fetch$1, onAction, defaultedArrayOf('highlightOn', [], string)]);\n    const createAutocompleter = spec => asRaw('Autocompleter', autocompleterSchema, {\n      trigger: spec.ch,\n      ...spec\n    });\n\n    const baseToolbarButtonFields = [enabled, optionalTooltip, optionalIcon, optionalText, onSetup];\n\n    const baseToolbarToggleButtonFields = [active].concat(baseToolbarButtonFields);\n\n    const contextBarFields = [defaultedFunction('predicate', never), defaultedStringEnum('scope', 'node', ['node', 'editor']), defaultedStringEnum('position', 'selection', ['node', 'selection', 'line'])];\n\n    const contextButtonFields = baseToolbarButtonFields.concat([defaultedType('contextformbutton'), primary, onAction, customField('original', identity)]);\n    const contextToggleButtonFields = baseToolbarToggleButtonFields.concat([defaultedType('contextformbutton'), primary, onAction, customField('original', identity)]);\n    const launchButtonFields = baseToolbarButtonFields.concat([defaultedType('contextformbutton')]);\n    const launchToggleButtonFields = baseToolbarToggleButtonFields.concat([defaultedType('contextformtogglebutton')]);\n    const toggleOrNormal = choose('type', {\n      contextformbutton: contextButtonFields,\n      contextformtogglebutton: contextToggleButtonFields\n    });\n    objOf([defaultedType('contextform'), defaultedFunction('initValue', constant('')), optionalLabel, requiredArrayOf('commands', toggleOrNormal), optionOf('launch', choose('type', {\n      contextformbutton: launchButtonFields,\n      contextformtogglebutton: launchToggleButtonFields\n    }))].concat(contextBarFields));\n\n    const register$2 = editor => {\n      const popups = editor.ui.registry.getAll().popups;\n      const dataset = map$2(popups, popup => createAutocompleter(popup).fold(err => {\n        throw new Error(formatError(err));\n      }, identity));\n      const triggers = stringArray(mapToArray(dataset, v => v.trigger));\n      const datasetValues = values(dataset);\n      const lookupByTrigger = trigger => filter$5(datasetValues, dv => dv.trigger === trigger);\n      return {\n        dataset,\n        triggers,\n        lookupByTrigger\n      };\n    };\n\n    const setupEditorInput = (editor, api) => {\n      const update = last$1(api.load, 50);\n      editor.on('keypress compositionend', e => {\n        if (e.which === 27) {\n          return;\n        }\n        update.throttle();\n      });\n      editor.on('keydown', e => {\n        const keyCode = e.which;\n        if (keyCode === 8) {\n          update.throttle();\n        } else if (keyCode === 27) {\n          api.cancelIfNecessary();\n        }\n      });\n      editor.on('remove', update.cancel);\n    };\n    const setup$k = editor => {\n      const activeAutocompleter = value$2();\n      const uiActive = Cell(false);\n      const isActive = activeAutocompleter.isSet;\n      const cancelIfNecessary = () => {\n        if (isActive()) {\n          removeAutocompleterDecoration(editor);\n          fireAutocompleterEnd(editor);\n          uiActive.set(false);\n          activeAutocompleter.clear();\n        }\n      };\n      const commenceIfNecessary = context => {\n        if (!isActive()) {\n          addAutocompleterDecoration(editor, context.range);\n          activeAutocompleter.set({\n            trigger: context.trigger,\n            matchLength: context.text.length\n          });\n        }\n      };\n      const getAutocompleters = cached(() => register$2(editor));\n      const doLookup = fetchOptions => activeAutocompleter.get().map(ac => getContext(editor.dom, editor.selection.getRng(), ac.trigger).bind(newContext => lookupWithContext(editor, getAutocompleters, newContext, fetchOptions))).getOrThunk(() => lookup(editor, getAutocompleters));\n      const load = fetchOptions => {\n        doLookup(fetchOptions).fold(cancelIfNecessary, lookupInfo => {\n          commenceIfNecessary(lookupInfo.context);\n          lookupInfo.lookupData.then(lookupData => {\n            activeAutocompleter.get().map(ac => {\n              const context = lookupInfo.context;\n              if (ac.trigger === context.trigger) {\n                if (context.text.length - ac.matchLength >= 10) {\n                  cancelIfNecessary();\n                } else {\n                  activeAutocompleter.set({\n                    ...ac,\n                    matchLength: context.text.length\n                  });\n                  if (uiActive.get()) {\n                    fireAutocompleterUpdate(editor, {\n                      lookupData\n                    });\n                  } else {\n                    uiActive.set(true);\n                    fireAutocompleterStart(editor, {\n                      lookupData\n                    });\n                  }\n                }\n              }\n            });\n          });\n        });\n      };\n      editor.addCommand('mceAutocompleterReload', (_ui, value) => {\n        const fetchOptions = isObject(value) ? value.fetchOptions : {};\n        load(fetchOptions);\n      });\n      editor.addCommand('mceAutocompleterClose', cancelIfNecessary);\n      setupEditorInput(editor, {\n        cancelIfNecessary,\n        load\n      });\n    };\n\n    const browser$1 = detect$2().browser;\n    const isSafari = browser$1.isSafari();\n    const emptyNodeContents = node => fillWithPaddingBr(SugarElement.fromDom(node));\n    const isEntireNodeSelected = (rng, node) => {\n      var _a;\n      return rng.startOffset === 0 && rng.endOffset === ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.length);\n    };\n    const getParentDetailsElementAtPos = (dom, pos) => Optional.from(dom.getParent(pos.container(), 'details'));\n    const isInDetailsElement = (dom, pos) => getParentDetailsElementAtPos(dom, pos).isSome();\n    const getDetailsElements = (dom, rng) => {\n      const startDetails = Optional.from(dom.getParent(rng.startContainer, 'details'));\n      const endDetails = Optional.from(dom.getParent(rng.endContainer, 'details'));\n      if (startDetails.isSome() || endDetails.isSome()) {\n        const startSummary = startDetails.bind(details => Optional.from(dom.select('summary', details)[0]));\n        return Optional.some({\n          startSummary,\n          startDetails,\n          endDetails\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const isCaretInTheBeginningOf = (caretPos, element) => firstPositionIn(element).exists(pos => pos.isEqual(caretPos));\n    const isCaretInTheEndOf = (caretPos, element) => {\n      return lastPositionIn(element).exists(pos => {\n        if (isBr$6(pos.getNode())) {\n          return prevPosition(element, pos).exists(pos2 => pos2.isEqual(caretPos)) || pos.isEqual(caretPos);\n        } else {\n          return pos.isEqual(caretPos);\n        }\n      });\n    };\n    const isCaretAtStartOfSummary = (caretPos, detailsElements) => detailsElements.startSummary.exists(summary => isCaretInTheBeginningOf(caretPos, summary));\n    const isCaretAtEndOfSummary = (caretPos, detailsElements) => detailsElements.startSummary.exists(summary => isCaretInTheEndOf(caretPos, summary));\n    const isCaretInFirstPositionInBody = (caretPos, detailsElements) => detailsElements.startDetails.exists(details => prevPosition(details, caretPos).forall(pos => detailsElements.startSummary.exists(summary => !summary.contains(caretPos.container()) && summary.contains(pos.container()))));\n    const isCaretInLastPositionInBody = (root, caretPos, detailsElements) => detailsElements.startDetails.exists(details => nextPosition(root, caretPos).forall(pos => !details.contains(pos.container())));\n    const setCaretToPosition = (editor, position) => {\n      const node = position.getNode();\n      if (!isUndefined(node)) {\n        editor.selection.setCursorLocation(node, position.offset());\n      }\n    };\n    const moveCaretToDetailsPos = (editor, pos, forward) => {\n      const details = editor.dom.getParent(pos.container(), 'details');\n      if (details && !details.open) {\n        const summary = editor.dom.select('summary', details)[0];\n        if (summary) {\n          const newPos = forward ? firstPositionIn(summary) : lastPositionIn(summary);\n          newPos.each(pos => setCaretToPosition(editor, pos));\n        }\n      } else {\n        setCaretToPosition(editor, pos);\n      }\n    };\n    const isPartialDelete = (rng, detailsElements) => {\n      const containsStart = element => element.contains(rng.startContainer);\n      const containsEnd = element => element.contains(rng.endContainer);\n      const startInSummary = detailsElements.startSummary.exists(containsStart);\n      const endInSummary = detailsElements.startSummary.exists(containsEnd);\n      const isPartiallySelectedDetailsElements = detailsElements.startDetails.forall(startDetails => detailsElements.endDetails.forall(endDetails => startDetails !== endDetails));\n      const isInPartiallySelectedSummary = (startInSummary || endInSummary) && !(startInSummary && endInSummary);\n      return isInPartiallySelectedSummary || isPartiallySelectedDetailsElements;\n    };\n    const shouldPreventDeleteIntoDetails = (editor, forward, granularity) => {\n      const {\n        dom,\n        selection\n      } = editor;\n      const root = editor.getBody();\n      if (granularity === 'character') {\n        const caretPos = CaretPosition.fromRangeStart(selection.getRng());\n        const parentBlock = dom.getParent(caretPos.container(), dom.isBlock);\n        const parentDetailsAtCaret = getParentDetailsElementAtPos(dom, caretPos);\n        const inEmptyParentBlock = parentBlock && dom.isEmpty(parentBlock);\n        const isFirstBlock = isNull(parentBlock === null || parentBlock === void 0 ? void 0 : parentBlock.previousSibling);\n        const isLastBlock = isNull(parentBlock === null || parentBlock === void 0 ? void 0 : parentBlock.nextSibling);\n        if (inEmptyParentBlock) {\n          const firstOrLast = forward ? isLastBlock : isFirstBlock;\n          if (firstOrLast) {\n            const isBeforeAfterDetails = navigate(!forward, root, caretPos).exists(pos => {\n              return isInDetailsElement(dom, pos) && !equals(parentDetailsAtCaret, getParentDetailsElementAtPos(dom, pos));\n            });\n            if (isBeforeAfterDetails) {\n              return true;\n            }\n          }\n        }\n        return navigate(forward, root, caretPos).fold(never, pos => {\n          const parentDetailsAtNewPos = getParentDetailsElementAtPos(dom, pos);\n          if (isInDetailsElement(dom, pos) && !equals(parentDetailsAtCaret, parentDetailsAtNewPos)) {\n            if (!forward) {\n              moveCaretToDetailsPos(editor, pos, false);\n            }\n            if (parentBlock && inEmptyParentBlock) {\n              if (forward && isFirstBlock) {\n                return true;\n              } else if (!forward && isLastBlock) {\n                return true;\n              }\n              moveCaretToDetailsPos(editor, pos, forward);\n              editor.dom.remove(parentBlock);\n            }\n            return true;\n          } else {\n            return false;\n          }\n        });\n      } else {\n        return false;\n      }\n    };\n    const shouldPreventDeleteSummaryAction = (editor, detailElements, forward, granularity) => {\n      const selection = editor.selection;\n      const rng = selection.getRng();\n      const caretPos = CaretPosition.fromRangeStart(rng);\n      const root = editor.getBody();\n      if (granularity === 'selection') {\n        return isPartialDelete(rng, detailElements);\n      } else if (forward) {\n        return isCaretAtEndOfSummary(caretPos, detailElements) || isCaretInLastPositionInBody(root, caretPos, detailElements);\n      } else {\n        return isCaretAtStartOfSummary(caretPos, detailElements) || isCaretInFirstPositionInBody(caretPos, detailElements);\n      }\n    };\n    const shouldPreventDeleteAction = (editor, forward, granularity) => getDetailsElements(editor.dom, editor.selection.getRng()).fold(() => shouldPreventDeleteIntoDetails(editor, forward, granularity), detailsElements => shouldPreventDeleteSummaryAction(editor, detailsElements, forward, granularity) || shouldPreventDeleteIntoDetails(editor, forward, granularity));\n    const handleDeleteActionSafari = (editor, forward, granularity) => {\n      const selection = editor.selection;\n      const node = selection.getNode();\n      const rng = selection.getRng();\n      const caretPos = CaretPosition.fromRangeStart(rng);\n      if (isSummary$1(node)) {\n        if (granularity === 'selection' && isEntireNodeSelected(rng, node) || willDeleteLastPositionInElement(forward, caretPos, node)) {\n          emptyNodeContents(node);\n        } else {\n          editor.undoManager.transact(() => {\n            const sel = selection.getSel();\n            let {\n              anchorNode,\n              anchorOffset,\n              focusNode,\n              focusOffset\n            } = sel !== null && sel !== void 0 ? sel : {};\n            const applySelection = () => {\n              if (isNonNullable(anchorNode) && isNonNullable(anchorOffset) && isNonNullable(focusNode) && isNonNullable(focusOffset)) {\n                sel === null || sel === void 0 ? void 0 : sel.setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset);\n              }\n            };\n            const updateSelection = () => {\n              anchorNode = sel === null || sel === void 0 ? void 0 : sel.anchorNode;\n              anchorOffset = sel === null || sel === void 0 ? void 0 : sel.anchorOffset;\n              focusNode = sel === null || sel === void 0 ? void 0 : sel.focusNode;\n              focusOffset = sel === null || sel === void 0 ? void 0 : sel.focusOffset;\n            };\n            const appendAllChildNodes = (from, to) => {\n              each$e(from.childNodes, child => {\n                if (isNode(child)) {\n                  to.appendChild(child);\n                }\n              });\n            };\n            const container = editor.dom.create('span', {\n              'data-mce-bogus': '1'\n            });\n            appendAllChildNodes(node, container);\n            node.appendChild(container);\n            applySelection();\n            if (granularity === 'word' || granularity === 'line') {\n              sel === null || sel === void 0 ? void 0 : sel.modify('extend', forward ? 'right' : 'left', granularity);\n            }\n            if (!selection.isCollapsed() && isEntireNodeSelected(selection.getRng(), container)) {\n              emptyNodeContents(node);\n            } else {\n              editor.execCommand(forward ? 'ForwardDelete' : 'Delete');\n              updateSelection();\n              appendAllChildNodes(container, node);\n              applySelection();\n            }\n            editor.dom.remove(container);\n          });\n        }\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const backspaceDelete = (editor, forward, granularity) => shouldPreventDeleteAction(editor, forward, granularity) || isSafari && handleDeleteActionSafari(editor, forward, granularity) ? Optional.some(noop) : Optional.none();\n\n    const createAndFireInputEvent = eventType => (editor, inputType, specifics = {}) => {\n      const target = editor.getBody();\n      const overrides = {\n        bubbles: true,\n        composed: true,\n        data: null,\n        isComposing: false,\n        detail: 0,\n        view: null,\n        target,\n        currentTarget: target,\n        eventPhase: Event.AT_TARGET,\n        originalTarget: target,\n        explicitOriginalTarget: target,\n        isTrusted: false,\n        srcElement: target,\n        cancelable: false,\n        preventDefault: noop,\n        inputType\n      };\n      const input = clone$3(new InputEvent(eventType));\n      return editor.dispatch(eventType, {\n        ...input,\n        ...overrides,\n        ...specifics\n      });\n    };\n    const fireInputEvent = createAndFireInputEvent('input');\n    const fireBeforeInputEvent = createAndFireInputEvent('beforeinput');\n\n    const platform$2 = detect$2();\n    const os = platform$2.os;\n    const isMacOSOriOS = os.isMacOS() || os.isiOS();\n    const browser = platform$2.browser;\n    const isFirefox = browser.isFirefox();\n    const executeKeydownOverride$3 = (editor, caret, evt) => {\n      const inputType = evt.keyCode === VK.BACKSPACE ? 'deleteContentBackward' : 'deleteContentForward';\n      const isCollapsed = editor.selection.isCollapsed();\n      const unmodifiedGranularity = isCollapsed ? 'character' : 'selection';\n      const getModifiedGranularity = isWord => {\n        if (isCollapsed) {\n          return isWord ? 'word' : 'line';\n        } else {\n          return 'selection';\n        }\n      };\n      executeWithDelayedAction([{\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$1, editor)\n      }, {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$6, editor, false)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete$6, editor, true)\n      }, {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$7, editor, false)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete$7, editor, true)\n      }, {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$4, editor, caret, false)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete$4, editor, caret, true)\n      }, {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$a, editor, false)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete$a, editor, true)\n      }, {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete, editor, false, unmodifiedGranularity)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete, editor, true, unmodifiedGranularity)\n      }, ...(isMacOSOriOS ? [{\n        keyCode: VK.BACKSPACE,\n        altKey: true,\n        action: action(backspaceDelete, editor, false, getModifiedGranularity(true))\n      }, {\n        keyCode: VK.DELETE,\n        altKey: true,\n        action: action(backspaceDelete, editor, true, getModifiedGranularity(true))\n      }, {\n        keyCode: VK.BACKSPACE,\n        metaKey: true,\n        action: action(backspaceDelete, editor, false, getModifiedGranularity(false))\n      }] : [{\n        keyCode: VK.BACKSPACE,\n        ctrlKey: true,\n        action: action(backspaceDelete, editor, false, getModifiedGranularity(true))\n      }, {\n        keyCode: VK.DELETE,\n        ctrlKey: true,\n        action: action(backspaceDelete, editor, true, getModifiedGranularity(true))\n      }]), {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$5, editor, false)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete$5, editor, true)\n      }, {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$2, editor, false)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete$2, editor, true)\n      }, {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$8, editor, false)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete$8, editor, true)\n      }, {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$9, editor, false)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete$9, editor, true)\n      }, {\n        keyCode: VK.BACKSPACE,\n        action: action(backspaceDelete$3, editor, false)\n      }, {\n        keyCode: VK.DELETE,\n        action: action(backspaceDelete$3, editor, true)\n      }], evt).filter(_ => editor.selection.isEditable()).each(applyAction => {\n        evt.preventDefault();\n        const beforeInput = fireBeforeInputEvent(editor, inputType);\n        if (!beforeInput.isDefaultPrevented()) {\n          applyAction();\n          fireInputEvent(editor, inputType);\n        }\n      });\n    };\n    const executeKeyupOverride = (editor, evt, isBackspaceKeydown) => execute([{\n      keyCode: VK.BACKSPACE,\n      action: action(paddEmptyElement, editor)\n    }, {\n      keyCode: VK.DELETE,\n      action: action(paddEmptyElement, editor)\n    }, ...(isMacOSOriOS ? [{\n      keyCode: VK.BACKSPACE,\n      altKey: true,\n      action: action(refreshCaret, editor)\n    }, {\n      keyCode: VK.DELETE,\n      altKey: true,\n      action: action(refreshCaret, editor)\n    }, ...(isBackspaceKeydown ? [{\n      keyCode: isFirefox ? 224 : 91,\n      action: action(refreshCaret, editor)\n    }] : [])] : [{\n      keyCode: VK.BACKSPACE,\n      ctrlKey: true,\n      action: action(refreshCaret, editor)\n    }, {\n      keyCode: VK.DELETE,\n      ctrlKey: true,\n      action: action(refreshCaret, editor)\n    }])], evt);\n    const setup$j = (editor, caret) => {\n      let isBackspaceKeydown = false;\n      editor.on('keydown', evt => {\n        isBackspaceKeydown = evt.keyCode === VK.BACKSPACE;\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride$3(editor, caret, evt);\n        }\n      });\n      editor.on('keyup', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeyupOverride(editor, evt, isBackspaceKeydown);\n        }\n        isBackspaceKeydown = false;\n      });\n    };\n\n    const firstNonWhiteSpaceNodeSibling = node => {\n      while (node) {\n        if (isElement$6(node) || isText$a(node) && node.data && /[\\r\\n\\s]/.test(node.data)) {\n          return node;\n        }\n        node = node.nextSibling;\n      }\n      return null;\n    };\n    const moveToCaretPosition = (editor, root) => {\n      const dom = editor.dom;\n      const moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements();\n      if (!root) {\n        return;\n      }\n      if (/^(LI|DT|DD)$/.test(root.nodeName)) {\n        const firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);\n        if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {\n          root.insertBefore(dom.doc.createTextNode(nbsp), root.firstChild);\n        }\n      }\n      const rng = dom.createRng();\n      root.normalize();\n      if (root.hasChildNodes()) {\n        const walker = new DomTreeWalker(root, root);\n        let lastNode = root;\n        let node;\n        while (node = walker.current()) {\n          if (isText$a(node)) {\n            rng.setStart(node, 0);\n            rng.setEnd(node, 0);\n            break;\n          }\n          if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {\n            rng.setStartBefore(node);\n            rng.setEndBefore(node);\n            break;\n          }\n          lastNode = node;\n          node = walker.next();\n        }\n        if (!node) {\n          rng.setStart(lastNode, 0);\n          rng.setEnd(lastNode, 0);\n        }\n      } else {\n        if (isBr$6(root)) {\n          if (root.nextSibling && dom.isBlock(root.nextSibling)) {\n            rng.setStartBefore(root);\n            rng.setEndBefore(root);\n          } else {\n            rng.setStartAfter(root);\n            rng.setEndAfter(root);\n          }\n        } else {\n          rng.setStart(root, 0);\n          rng.setEnd(root, 0);\n        }\n      }\n      editor.selection.setRng(rng);\n      scrollRangeIntoView(editor, rng);\n    };\n    const getEditableRoot = (dom, node) => {\n      const root = dom.getRoot();\n      let editableRoot;\n      let parent = node;\n      while (parent !== root && parent && dom.getContentEditable(parent) !== 'false') {\n        if (dom.getContentEditable(parent) === 'true') {\n          editableRoot = parent;\n          break;\n        }\n        parent = parent.parentNode;\n      }\n      return parent !== root ? editableRoot : root;\n    };\n    const getParentBlock$1 = editor => {\n      return Optional.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock));\n    };\n    const getParentBlockName = editor => {\n      return getParentBlock$1(editor).fold(constant(''), parentBlock => {\n        return parentBlock.nodeName.toUpperCase();\n      });\n    };\n    const isListItemParentBlock = editor => {\n      return getParentBlock$1(editor).filter(elm => {\n        return isListItem$1(SugarElement.fromDom(elm));\n      }).isSome();\n    };\n    const emptyBlock = elm => {\n      elm.innerHTML = '<br data-mce-bogus=\"1\">';\n    };\n    const applyAttributes = (editor, node, forcedRootBlockAttrs) => {\n      const dom = editor.dom;\n      Optional.from(forcedRootBlockAttrs.style).map(dom.parseStyle).each(attrStyles => {\n        const currentStyles = getAllRaw(SugarElement.fromDom(node));\n        const newStyles = {\n          ...currentStyles,\n          ...attrStyles\n        };\n        dom.setStyles(node, newStyles);\n      });\n      const attrClassesOpt = Optional.from(forcedRootBlockAttrs.class).map(attrClasses => attrClasses.split(/\\s+/));\n      const currentClassesOpt = Optional.from(node.className).map(currentClasses => filter$5(currentClasses.split(/\\s+/), clazz => clazz !== ''));\n      lift2(attrClassesOpt, currentClassesOpt, (attrClasses, currentClasses) => {\n        const filteredClasses = filter$5(currentClasses, clazz => !contains$2(attrClasses, clazz));\n        const newClasses = [...attrClasses, ...filteredClasses];\n        dom.setAttrib(node, 'class', newClasses.join(' '));\n      });\n      const appliedAttrs = ['style', 'class'];\n      const remainingAttrs = filter$4(forcedRootBlockAttrs, (_, attrs) => !contains$2(appliedAttrs, attrs));\n      dom.setAttribs(node, remainingAttrs);\n    };\n    const setForcedBlockAttrs = (editor, node) => {\n      const forcedRootBlockName = getForcedRootBlock(editor);\n      if (forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {\n        const forcedRootBlockAttrs = getForcedRootBlockAttrs(editor);\n        applyAttributes(editor, node, forcedRootBlockAttrs);\n      }\n    };\n    const createNewBlock = (editor, container, parentBlock, editableRoot, keepStyles = true, name, styles) => {\n      const dom = editor.dom;\n      const schema = editor.schema;\n      const newBlockName = getForcedRootBlock(editor);\n      const parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';\n      let node = container;\n      const textInlineElements = schema.getTextInlineElements();\n      let block;\n      if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') {\n        block = dom.create(name || newBlockName, styles || {});\n      } else {\n        block = parentBlock.cloneNode(false);\n      }\n      let caretNode = block;\n      if (!keepStyles) {\n        dom.setAttrib(block, 'style', null);\n        dom.setAttrib(block, 'class', null);\n      } else {\n        do {\n          if (textInlineElements[node.nodeName]) {\n            if (isCaretNode(node) || isBookmarkNode$1(node)) {\n              continue;\n            }\n            const clonedNode = node.cloneNode(false);\n            dom.setAttrib(clonedNode, 'id', '');\n            if (block.hasChildNodes()) {\n              clonedNode.appendChild(block.firstChild);\n              block.appendChild(clonedNode);\n            } else {\n              caretNode = clonedNode;\n              block.appendChild(clonedNode);\n            }\n          }\n        } while ((node = node.parentNode) && node !== editableRoot);\n      }\n      setForcedBlockAttrs(editor, block);\n      emptyBlock(caretNode);\n      return block;\n    };\n\n    const getDetailsRoot = (editor, element) => editor.dom.getParent(element, isDetails);\n    const isAtDetailsEdge = (root, element, isTextBlock) => {\n      let node = element;\n      while (node && node !== root && isNull(node.nextSibling)) {\n        const parent = node.parentElement;\n        if (!parent || !isTextBlock(parent)) {\n          return isDetails(parent);\n        }\n        node = parent;\n      }\n      return false;\n    };\n    const isLastEmptyBlockInDetails = (editor, shiftKey, element) => !shiftKey && element.nodeName.toLowerCase() === getForcedRootBlock(editor) && editor.dom.isEmpty(element) && isAtDetailsEdge(editor.getBody(), element, el => has$2(editor.schema.getTextBlockElements(), el.nodeName.toLowerCase()));\n    const insertNewLine = (editor, createNewBlock, parentBlock) => {\n      var _a, _b, _c;\n      const newBlock = createNewBlock(getForcedRootBlock(editor));\n      const root = getDetailsRoot(editor, parentBlock);\n      if (!root) {\n        return;\n      }\n      editor.dom.insertAfter(newBlock, root);\n      moveToCaretPosition(editor, newBlock);\n      if (((_c = (_b = (_a = parentBlock.parentElement) === null || _a === void 0 ? void 0 : _a.childNodes) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 1) {\n        editor.dom.remove(parentBlock);\n      }\n    };\n\n    const hasFirstChild = (elm, name) => {\n      return elm.firstChild && elm.firstChild.nodeName === name;\n    };\n    const isFirstChild = elm => {\n      var _a;\n      return ((_a = elm.parentNode) === null || _a === void 0 ? void 0 : _a.firstChild) === elm;\n    };\n    const hasParent = (elm, parentName) => {\n      const parentNode = elm === null || elm === void 0 ? void 0 : elm.parentNode;\n      return isNonNullable(parentNode) && parentNode.nodeName === parentName;\n    };\n    const isListBlock = elm => {\n      return isNonNullable(elm) && /^(OL|UL|LI)$/.test(elm.nodeName);\n    };\n    const isListItem = elm => {\n      return isNonNullable(elm) && /^(LI|DT|DD)$/.test(elm.nodeName);\n    };\n    const isNestedList = elm => {\n      return isListBlock(elm) && isListBlock(elm.parentNode);\n    };\n    const getContainerBlock = containerBlock => {\n      const containerBlockParent = containerBlock.parentNode;\n      return isListItem(containerBlockParent) ? containerBlockParent : containerBlock;\n    };\n    const isFirstOrLastLi = (containerBlock, parentBlock, first) => {\n      let node = containerBlock[first ? 'firstChild' : 'lastChild'];\n      while (node) {\n        if (isElement$6(node)) {\n          break;\n        }\n        node = node[first ? 'nextSibling' : 'previousSibling'];\n      }\n      return node === parentBlock;\n    };\n    const getStyles = elm => foldl(mapToArray(getAllRaw(SugarElement.fromDom(elm)), (style, styleName) => \"\".concat(styleName, \": \").concat(style, \";\")), (acc, s) => acc + s, '');\n    const insert$4 = (editor, createNewBlock, containerBlock, parentBlock, newBlockName) => {\n      const dom = editor.dom;\n      const rng = editor.selection.getRng();\n      const containerParent = containerBlock.parentNode;\n      if (containerBlock === editor.getBody() || !containerParent) {\n        return;\n      }\n      if (isNestedList(containerBlock)) {\n        newBlockName = 'LI';\n      }\n      const parentBlockStyles = isListItem(parentBlock) ? getStyles(parentBlock) : undefined;\n      let newBlock = isListItem(parentBlock) && parentBlockStyles ? createNewBlock(newBlockName, {\n        style: getStyles(parentBlock)\n      }) : createNewBlock(newBlockName);\n      if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) {\n        if (hasParent(containerBlock, 'LI')) {\n          const containerBlockParent = getContainerBlock(containerBlock);\n          dom.insertAfter(newBlock, containerBlockParent);\n          if (isFirstChild(containerBlock)) {\n            dom.remove(containerBlockParent);\n          } else {\n            dom.remove(containerBlock);\n          }\n        } else {\n          dom.replace(newBlock, containerBlock);\n        }\n      } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) {\n        if (hasParent(containerBlock, 'LI')) {\n          dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n          newBlock.appendChild(dom.doc.createTextNode(' '));\n          newBlock.appendChild(containerBlock);\n        } else {\n          containerParent.insertBefore(newBlock, containerBlock);\n        }\n        dom.remove(parentBlock);\n      } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) {\n        dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n        dom.remove(parentBlock);\n      } else {\n        containerBlock = getContainerBlock(containerBlock);\n        const tmpRng = rng.cloneRange();\n        tmpRng.setStartAfter(parentBlock);\n        tmpRng.setEndAfter(containerBlock);\n        const fragment = tmpRng.extractContents();\n        if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) {\n          const previousChildren = filter$5(map$3(newBlock.children, SugarElement.fromDom), not(isTag('br')));\n          newBlock = fragment.firstChild;\n          dom.insertAfter(fragment, containerBlock);\n          each$e(previousChildren, child => prepend(SugarElement.fromDom(newBlock), child));\n          if (parentBlockStyles) {\n            newBlock.setAttribute('style', parentBlockStyles);\n          }\n        } else {\n          dom.insertAfter(fragment, containerBlock);\n          dom.insertAfter(newBlock, containerBlock);\n        }\n        dom.remove(parentBlock);\n      }\n      moveToCaretPosition(editor, newBlock);\n    };\n\n    const trimZwsp = fragment => {\n      each$e(descendants$1(SugarElement.fromDom(fragment), isText$b), text => {\n        const rawNode = text.dom;\n        rawNode.nodeValue = trim$2(rawNode.data);\n      });\n    };\n    const isWithinNonEditableList = (editor, node) => {\n      const parentList = editor.dom.getParent(node, 'ol,ul,dl');\n      return parentList !== null && editor.dom.getContentEditableParent(parentList) === 'false';\n    };\n    const isEmptyAnchor = (dom, elm) => {\n      return elm && elm.nodeName === 'A' && dom.isEmpty(elm);\n    };\n    const containerAndSiblingName = (container, nodeName) => {\n      return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName;\n    };\n    const canSplitBlock = (dom, node) => {\n      return isNonNullable(node) && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.isEditable(node.parentNode) && dom.getContentEditable(node) !== 'false';\n    };\n    const trimInlineElementsOnLeftSideOfBlock = (dom, nonEmptyElementsMap, block) => {\n      var _a;\n      const firstChilds = [];\n      if (!block) {\n        return;\n      }\n      let currentNode = block;\n      while (currentNode = currentNode.firstChild) {\n        if (dom.isBlock(currentNode)) {\n          return;\n        }\n        if (isElement$6(currentNode) && !nonEmptyElementsMap[currentNode.nodeName.toLowerCase()]) {\n          firstChilds.push(currentNode);\n        }\n      }\n      let i = firstChilds.length;\n      while (i--) {\n        currentNode = firstChilds[i];\n        if (!currentNode.hasChildNodes() || currentNode.firstChild === currentNode.lastChild && ((_a = currentNode.firstChild) === null || _a === void 0 ? void 0 : _a.nodeValue) === '') {\n          dom.remove(currentNode);\n        } else {\n          if (isEmptyAnchor(dom, currentNode)) {\n            dom.remove(currentNode);\n          }\n        }\n      }\n    };\n    const normalizeZwspOffset = (start, container, offset) => {\n      if (!isText$a(container)) {\n        return offset;\n      } else if (start) {\n        return offset === 1 && container.data.charAt(offset - 1) === ZWSP$1 ? 0 : offset;\n      } else {\n        return offset === container.data.length - 1 && container.data.charAt(offset) === ZWSP$1 ? container.data.length : offset;\n      }\n    };\n    const includeZwspInRange = rng => {\n      const newRng = rng.cloneRange();\n      newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset));\n      newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset));\n      return newRng;\n    };\n    const trimLeadingLineBreaks = node => {\n      let currentNode = node;\n      do {\n        if (isText$a(currentNode)) {\n          currentNode.data = currentNode.data.replace(/^[\\r\\n]+/, '');\n        }\n        currentNode = currentNode.firstChild;\n      } while (currentNode);\n    };\n    const wrapSelfAndSiblingsInDefaultBlock = (editor, newBlockName, rng, container, offset) => {\n      var _a, _b;\n      const dom = editor.dom;\n      const editableRoot = (_a = getEditableRoot(dom, container)) !== null && _a !== void 0 ? _a : dom.getRoot();\n      let parentBlock = dom.getParent(container, dom.isBlock);\n      if (!parentBlock || !canSplitBlock(dom, parentBlock)) {\n        parentBlock = parentBlock || editableRoot;\n        if (!parentBlock.hasChildNodes()) {\n          const newBlock = dom.create(newBlockName);\n          setForcedBlockAttrs(editor, newBlock);\n          parentBlock.appendChild(newBlock);\n          rng.setStart(newBlock, 0);\n          rng.setEnd(newBlock, 0);\n          return newBlock;\n        }\n        let node = container;\n        while (node && node.parentNode !== parentBlock) {\n          node = node.parentNode;\n        }\n        let startNode;\n        while (node && !dom.isBlock(node)) {\n          startNode = node;\n          node = node.previousSibling;\n        }\n        const startNodeName = (_b = startNode === null || startNode === void 0 ? void 0 : startNode.parentElement) === null || _b === void 0 ? void 0 : _b.nodeName;\n        if (startNode && startNodeName && editor.schema.isValidChild(startNodeName, newBlockName.toLowerCase())) {\n          const startNodeParent = startNode.parentNode;\n          const newBlock = dom.create(newBlockName);\n          setForcedBlockAttrs(editor, newBlock);\n          startNodeParent.insertBefore(newBlock, startNode);\n          node = startNode;\n          while (node && !dom.isBlock(node)) {\n            const next = node.nextSibling;\n            newBlock.appendChild(node);\n            node = next;\n          }\n          rng.setStart(container, offset);\n          rng.setEnd(container, offset);\n        }\n      }\n      return container;\n    };\n    const addBrToBlockIfNeeded = (dom, block) => {\n      block.normalize();\n      const lastChild = block.lastChild;\n      if (!lastChild || isElement$6(lastChild) && /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) {\n        dom.add(block, 'br');\n      }\n    };\n    const shouldEndContainer = (editor, container) => {\n      const optionValue = shouldEndContainerOnEmptyBlock(editor);\n      if (isNullable(container)) {\n        return false;\n      } else if (isString(optionValue)) {\n        return contains$2(Tools.explode(optionValue), container.nodeName.toLowerCase());\n      } else {\n        return optionValue;\n      }\n    };\n    const insert$3 = (editor, evt) => {\n      let container;\n      let offset;\n      let parentBlockName;\n      let containerBlock;\n      let isAfterLastNodeInContainer = false;\n      const dom = editor.dom;\n      const schema = editor.schema,\n        nonEmptyElementsMap = schema.getNonEmptyElements();\n      const rng = editor.selection.getRng();\n      const newBlockName = getForcedRootBlock(editor);\n      const start = SugarElement.fromDom(rng.startContainer);\n      const child = child$1(start, rng.startOffset);\n      const isCef = child.exists(element => isHTMLElement$1(element) && !isEditable$2(element));\n      const collapsedAndCef = rng.collapsed && isCef;\n      const createNewBlock$1 = (name, styles) => {\n        return createNewBlock(editor, container, parentBlock, editableRoot, shouldKeepStyles(editor), name, styles);\n      };\n      const isCaretAtStartOrEndOfBlock = start => {\n        const normalizedOffset = normalizeZwspOffset(start, container, offset);\n        if (isText$a(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.data.length)) {\n          return false;\n        }\n        if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) {\n          return true;\n        }\n        if (start && isElement$6(container) && container === parentBlock.firstChild) {\n          return true;\n        }\n        if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) {\n          return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start;\n        }\n        const walker = new DomTreeWalker(container, parentBlock);\n        if (isText$a(container)) {\n          if (start && normalizedOffset === 0) {\n            walker.prev();\n          } else if (!start && normalizedOffset === container.data.length) {\n            walker.next();\n          }\n        }\n        let node;\n        while (node = walker.current()) {\n          if (isElement$6(node)) {\n            if (!node.getAttribute('data-mce-bogus')) {\n              const name = node.nodeName.toLowerCase();\n              if (nonEmptyElementsMap[name] && name !== 'br') {\n                return false;\n              }\n            }\n          } else if (isText$a(node) && !isWhitespaceText(node.data)) {\n            return false;\n          }\n          if (start) {\n            walker.prev();\n          } else {\n            walker.next();\n          }\n        }\n        return true;\n      };\n      const insertNewBlockAfter = () => {\n        let block;\n        if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') {\n          block = createNewBlock$1(newBlockName);\n        } else {\n          block = createNewBlock$1();\n        }\n        if (shouldEndContainer(editor, containerBlock) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock, undefined, {\n          includeZwsp: true\n        })) {\n          block = dom.split(containerBlock, parentBlock);\n        } else {\n          dom.insertAfter(block, parentBlock);\n        }\n        moveToCaretPosition(editor, block);\n        return block;\n      };\n      normalize$2(dom, rng).each(normRng => {\n        rng.setStart(normRng.startContainer, normRng.startOffset);\n        rng.setEnd(normRng.endContainer, normRng.endOffset);\n      });\n      container = rng.startContainer;\n      offset = rng.startOffset;\n      const shiftKey = !!(evt && evt.shiftKey);\n      const ctrlKey = !!(evt && evt.ctrlKey);\n      if (isElement$6(container) && container.hasChildNodes() && !collapsedAndCef) {\n        isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n        if (isAfterLastNodeInContainer && isText$a(container)) {\n          offset = container.data.length;\n        } else {\n          offset = 0;\n        }\n      }\n      const editableRoot = getEditableRoot(dom, container);\n      if (!editableRoot || isWithinNonEditableList(editor, container)) {\n        return;\n      }\n      if (!shiftKey) {\n        container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset);\n      }\n      let parentBlock = dom.getParent(container, dom.isBlock) || dom.getRoot();\n      containerBlock = isNonNullable(parentBlock === null || parentBlock === void 0 ? void 0 : parentBlock.parentNode) ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n      parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';\n      const containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n      if (containerBlockName === 'LI' && !ctrlKey) {\n        const liBlock = containerBlock;\n        parentBlock = liBlock;\n        containerBlock = liBlock.parentNode;\n        parentBlockName = containerBlockName;\n      }\n      if (isElement$6(containerBlock) && isLastEmptyBlockInDetails(editor, shiftKey, parentBlock)) {\n        return insertNewLine(editor, createNewBlock$1, parentBlock);\n      }\n      if (/^(LI|DT|DD)$/.test(parentBlockName) && isElement$6(containerBlock)) {\n        if (dom.isEmpty(parentBlock)) {\n          insert$4(editor, createNewBlock$1, containerBlock, parentBlock, newBlockName);\n          return;\n        }\n      }\n      if (!collapsedAndCef && (parentBlock === editor.getBody() || !canSplitBlock(dom, parentBlock))) {\n        return;\n      }\n      const parentBlockParent = parentBlock.parentNode;\n      let newBlock;\n      if (collapsedAndCef) {\n        newBlock = createNewBlock$1(newBlockName);\n        child.fold(() => {\n          append$1(start, SugarElement.fromDom(newBlock));\n        }, child => {\n          before$3(child, SugarElement.fromDom(newBlock));\n        });\n        editor.selection.setCursorLocation(newBlock, 0);\n      } else if (isCaretContainerBlock$1(parentBlock)) {\n        newBlock = showCaretContainerBlock(parentBlock);\n        if (dom.isEmpty(parentBlock)) {\n          emptyBlock(parentBlock);\n        }\n        setForcedBlockAttrs(editor, newBlock);\n        moveToCaretPosition(editor, newBlock);\n      } else if (isCaretAtStartOrEndOfBlock(false)) {\n        newBlock = insertNewBlockAfter();\n      } else if (isCaretAtStartOrEndOfBlock(true) && parentBlockParent) {\n        newBlock = parentBlockParent.insertBefore(createNewBlock$1(), parentBlock);\n        const isNearChildren = hasChildNodes(SugarElement.fromDom(rng.startContainer)) && rng.collapsed;\n        moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') || isNearChildren ? newBlock : parentBlock);\n      } else {\n        const tmpRng = includeZwspInRange(rng).cloneRange();\n        tmpRng.setEndAfter(parentBlock);\n        const fragment = tmpRng.extractContents();\n        trimZwsp(fragment);\n        trimLeadingLineBreaks(fragment);\n        newBlock = fragment.firstChild;\n        dom.insertAfter(fragment, parentBlock);\n        trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock);\n        addBrToBlockIfNeeded(dom, parentBlock);\n        if (dom.isEmpty(parentBlock)) {\n          emptyBlock(parentBlock);\n        }\n        newBlock.normalize();\n        if (dom.isEmpty(newBlock)) {\n          dom.remove(newBlock);\n          insertNewBlockAfter();\n        } else {\n          setForcedBlockAttrs(editor, newBlock);\n          moveToCaretPosition(editor, newBlock);\n        }\n      }\n      dom.setAttrib(newBlock, 'id', '');\n      editor.dispatch('NewBlock', {\n        newBlock\n      });\n    };\n    const fakeEventName$1 = 'insertParagraph';\n    const blockbreak = {\n      insert: insert$3,\n      fakeEventName: fakeEventName$1\n    };\n\n    const hasRightSideContent = (schema, container, parentBlock) => {\n      const walker = new DomTreeWalker(container, parentBlock);\n      let node;\n      const nonEmptyElementsMap = schema.getNonEmptyElements();\n      while (node = walker.next()) {\n        if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || isText$a(node) && node.length > 0) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const moveSelectionToBr = (editor, brElm, extraBr) => {\n      const rng = editor.dom.createRng();\n      if (!extraBr) {\n        rng.setStartAfter(brElm);\n        rng.setEndAfter(brElm);\n      } else {\n        rng.setStartBefore(brElm);\n        rng.setEndBefore(brElm);\n      }\n      editor.selection.setRng(rng);\n      scrollRangeIntoView(editor, rng);\n    };\n    const insertBrAtCaret = (editor, evt) => {\n      const selection = editor.selection;\n      const dom = editor.dom;\n      const rng = selection.getRng();\n      let brElm;\n      let extraBr = false;\n      normalize$2(dom, rng).each(normRng => {\n        rng.setStart(normRng.startContainer, normRng.startOffset);\n        rng.setEnd(normRng.endContainer, normRng.endOffset);\n      });\n      let offset = rng.startOffset;\n      let container = rng.startContainer;\n      if (isElement$6(container) && container.hasChildNodes()) {\n        const isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n        if (isAfterLastNodeInContainer && isText$a(container)) {\n          offset = container.data.length;\n        } else {\n          offset = 0;\n        }\n      }\n      let parentBlock = dom.getParent(container, dom.isBlock);\n      const containerBlock = parentBlock && parentBlock.parentNode ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n      const containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n      const isControlKey = !!(evt && evt.ctrlKey);\n      if (containerBlockName === 'LI' && !isControlKey) {\n        parentBlock = containerBlock;\n      }\n      if (isText$a(container) && offset >= container.data.length) {\n        if (!hasRightSideContent(editor.schema, container, parentBlock || dom.getRoot())) {\n          brElm = dom.create('br');\n          rng.insertNode(brElm);\n          rng.setStartAfter(brElm);\n          rng.setEndAfter(brElm);\n          extraBr = true;\n        }\n      }\n      brElm = dom.create('br');\n      rangeInsertNode(dom, rng, brElm);\n      moveSelectionToBr(editor, brElm, extraBr);\n      editor.undoManager.add();\n    };\n    const insertBrBefore = (editor, inline) => {\n      const br = SugarElement.fromTag('br');\n      before$3(SugarElement.fromDom(inline), br);\n      editor.undoManager.add();\n    };\n    const insertBrAfter = (editor, inline) => {\n      if (!hasBrAfter(editor.getBody(), inline)) {\n        after$4(SugarElement.fromDom(inline), SugarElement.fromTag('br'));\n      }\n      const br = SugarElement.fromTag('br');\n      after$4(SugarElement.fromDom(inline), br);\n      moveSelectionToBr(editor, br.dom, false);\n      editor.undoManager.add();\n    };\n    const isBeforeBr = pos => {\n      return isBr$6(pos.getNode());\n    };\n    const hasBrAfter = (rootNode, startNode) => {\n      if (isBeforeBr(CaretPosition.after(startNode))) {\n        return true;\n      } else {\n        return nextPosition(rootNode, CaretPosition.after(startNode)).map(pos => {\n          return isBr$6(pos.getNode());\n        }).getOr(false);\n      }\n    };\n    const isAnchorLink = elm => {\n      return elm && elm.nodeName === 'A' && 'href' in elm;\n    };\n    const isInsideAnchor = location => {\n      return location.fold(never, isAnchorLink, isAnchorLink, never);\n    };\n    const readInlineAnchorLocation = editor => {\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      const position = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return readLocation(isInlineTarget$1, editor.getBody(), position).filter(isInsideAnchor);\n    };\n    const insertBrOutsideAnchor = (editor, location) => {\n      location.fold(noop, curry(insertBrBefore, editor), curry(insertBrAfter, editor), noop);\n    };\n    const insert$2 = (editor, evt) => {\n      const anchorLocation = readInlineAnchorLocation(editor);\n      if (anchorLocation.isSome()) {\n        anchorLocation.each(curry(insertBrOutsideAnchor, editor));\n      } else {\n        insertBrAtCaret(editor, evt);\n      }\n    };\n    const fakeEventName = 'insertLineBreak';\n    const linebreak = {\n      insert: insert$2,\n      fakeEventName\n    };\n\n    const matchesSelector = (editor, selector) => {\n      return getParentBlock$1(editor).filter(parentBlock => {\n        return selector.length > 0 && is$1(SugarElement.fromDom(parentBlock), selector);\n      }).isSome();\n    };\n    const shouldInsertBr = editor => {\n      return matchesSelector(editor, getBrNewLineSelector(editor));\n    };\n    const shouldBlockNewLine$1 = editor => {\n      return matchesSelector(editor, getNoNewLineSelector(editor));\n    };\n\n    const newLineAction = Adt.generate([{\n      br: []\n    }, {\n      block: []\n    }, {\n      none: []\n    }]);\n    const shouldBlockNewLine = (editor, _shiftKey) => {\n      return shouldBlockNewLine$1(editor);\n    };\n    const inListBlock = requiredState => {\n      return (editor, _shiftKey) => {\n        return isListItemParentBlock(editor) === requiredState;\n      };\n    };\n    const inBlock = (blockName, requiredState) => (editor, _shiftKey) => {\n      const state = getParentBlockName(editor) === blockName.toUpperCase();\n      return state === requiredState;\n    };\n    const inCefBlock = editor => {\n      const editableRoot = getEditableRoot(editor.dom, editor.selection.getStart());\n      return isNullable(editableRoot);\n    };\n    const inPreBlock = requiredState => inBlock('pre', requiredState);\n    const inSummaryBlock = () => inBlock('summary', true);\n    const shouldPutBrInPre = requiredState => {\n      return (editor, _shiftKey) => {\n        return shouldPutBrInPre$1(editor) === requiredState;\n      };\n    };\n    const inBrContext = (editor, _shiftKey) => {\n      return shouldInsertBr(editor);\n    };\n    const hasShiftKey = (_editor, shiftKey) => {\n      return shiftKey;\n    };\n    const canInsertIntoEditableRoot = editor => {\n      const forcedRootBlock = getForcedRootBlock(editor);\n      const rootEditable = getEditableRoot(editor.dom, editor.selection.getStart());\n      return isNonNullable(rootEditable) && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock);\n    };\n    const isInRootWithEmptyOrCEF = editor => {\n      const rng = editor.selection.getRng();\n      const start = SugarElement.fromDom(rng.startContainer);\n      const child = child$1(start, rng.startOffset);\n      const isCefOpt = child.map(element => isHTMLElement$1(element) && !isEditable$2(element));\n      return rng.collapsed && isCefOpt.getOr(true);\n    };\n    const match = (predicates, action) => {\n      return (editor, shiftKey) => {\n        const isMatch = foldl(predicates, (res, p) => {\n          return res && p(editor, shiftKey);\n        }, true);\n        return isMatch ? Optional.some(action) : Optional.none();\n      };\n    };\n    const getAction = (editor, evt) => {\n      return evaluateUntil([match([shouldBlockNewLine], newLineAction.none()), match([inPreBlock(true), inCefBlock], newLineAction.none()), match([inSummaryBlock()], newLineAction.br()), match([inPreBlock(true), shouldPutBrInPre(false), hasShiftKey], newLineAction.br()), match([inPreBlock(true), shouldPutBrInPre(false)], newLineAction.block()), match([inPreBlock(true), shouldPutBrInPre(true), hasShiftKey], newLineAction.block()), match([inPreBlock(true), shouldPutBrInPre(true)], newLineAction.br()), match([inListBlock(true), hasShiftKey], newLineAction.br()), match([inListBlock(true)], newLineAction.block()), match([inBrContext], newLineAction.br()), match([hasShiftKey], newLineAction.br()), match([canInsertIntoEditableRoot], newLineAction.block()), match([isInRootWithEmptyOrCEF], newLineAction.block())], [editor, !!(evt && evt.shiftKey)]).getOr(newLineAction.none());\n    };\n\n    const insertBreak = (breakType, editor, evt) => {\n      if (!editor.selection.isCollapsed()) {\n        execEditorDeleteCommand(editor);\n      }\n      if (isNonNullable(evt)) {\n        const event = fireBeforeInputEvent(editor, breakType.fakeEventName);\n        if (event.isDefaultPrevented()) {\n          return;\n        }\n      }\n      breakType.insert(editor, evt);\n      if (isNonNullable(evt)) {\n        fireInputEvent(editor, breakType.fakeEventName);\n      }\n    };\n    const insert$1 = (editor, evt) => {\n      const br = () => insertBreak(linebreak, editor, evt);\n      const block = () => insertBreak(blockbreak, editor, evt);\n      const logicalAction = getAction(editor, evt);\n      switch (getNewlineBehavior(editor)) {\n        case 'linebreak':\n          logicalAction.fold(br, br, noop);\n          break;\n        case 'block':\n          logicalAction.fold(block, block, noop);\n          break;\n        case 'invert':\n          logicalAction.fold(block, br, noop);\n          break;\n        default:\n          logicalAction.fold(br, block, noop);\n          break;\n      }\n    };\n\n    const platform$1 = detect$2();\n    const isIOSSafari = platform$1.os.isiOS() && platform$1.browser.isSafari();\n    const handleEnterKeyEvent = (editor, event) => {\n      if (event.isDefaultPrevented()) {\n        return;\n      }\n      event.preventDefault();\n      endTypingLevelIgnoreLocks(editor.undoManager);\n      editor.undoManager.transact(() => {\n        insert$1(editor, event);\n      });\n    };\n    const isCaretAfterKoreanCharacter = rng => {\n      if (!rng.collapsed) {\n        return false;\n      }\n      const startContainer = rng.startContainer;\n      if (isText$a(startContainer)) {\n        const koreanCharRegex = /^[\\uAC00-\\uD7AF\\u1100-\\u11FF\\u3130-\\u318F\\uA960-\\uA97F\\uD7B0-\\uD7FF]$/;\n        const char = startContainer.data.charAt(rng.startOffset - 1);\n        return koreanCharRegex.test(char);\n      } else {\n        return false;\n      }\n    };\n    const setup$i = editor => {\n      let iOSSafariKeydownBookmark = Optional.none();\n      const iOSSafariKeydownOverride = editor => {\n        iOSSafariKeydownBookmark = Optional.some(editor.selection.getBookmark());\n        editor.undoManager.add();\n      };\n      const iOSSafariKeyupOverride = (editor, event) => {\n        editor.undoManager.undo();\n        iOSSafariKeydownBookmark.fold(noop, b => editor.selection.moveToBookmark(b));\n        handleEnterKeyEvent(editor, event);\n        iOSSafariKeydownBookmark = Optional.none();\n      };\n      editor.on('keydown', event => {\n        if (event.keyCode === VK.ENTER) {\n          if (isIOSSafari && isCaretAfterKoreanCharacter(editor.selection.getRng())) {\n            iOSSafariKeydownOverride(editor);\n          } else {\n            handleEnterKeyEvent(editor, event);\n          }\n        }\n      });\n      editor.on('keyup', event => {\n        if (event.keyCode === VK.ENTER) {\n          iOSSafariKeydownBookmark.each(() => iOSSafariKeyupOverride(editor, event));\n        }\n      });\n    };\n\n    const executeKeydownOverride$2 = (editor, caret, evt) => {\n      const isMac = Env.os.isMacOS() || Env.os.isiOS();\n      execute([{\n        keyCode: VK.END,\n        action: action(moveToLineEndPoint$1, editor, true)\n      }, {\n        keyCode: VK.HOME,\n        action: action(moveToLineEndPoint$1, editor, false)\n      }, ...(!isMac ? [{\n        keyCode: VK.HOME,\n        action: action(selectToEndPoint, editor, false),\n        ctrlKey: true,\n        shiftKey: true\n      }, {\n        keyCode: VK.END,\n        action: action(selectToEndPoint, editor, true),\n        ctrlKey: true,\n        shiftKey: true\n      }] : []), {\n        keyCode: VK.END,\n        action: action(moveToLineEndPoint, editor, true)\n      }, {\n        keyCode: VK.HOME,\n        action: action(moveToLineEndPoint, editor, false)\n      }, {\n        keyCode: VK.END,\n        action: action(moveToLineEndPoint$2, editor, true, caret)\n      }, {\n        keyCode: VK.HOME,\n        action: action(moveToLineEndPoint$2, editor, false, caret)\n      }], evt).each(_ => {\n        evt.preventDefault();\n      });\n    };\n    const setup$h = (editor, caret) => {\n      editor.on('keydown', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride$2(editor, caret, evt);\n        }\n      });\n    };\n\n    const setup$g = editor => {\n      editor.on('input', e => {\n        if (!e.isComposing) {\n          normalizeNbspsInEditor(editor);\n        }\n      });\n    };\n\n    const platform = detect$2();\n    const executeKeyupAction = (editor, caret, evt) => {\n      execute([{\n        keyCode: VK.PAGE_UP,\n        action: action(moveToLineEndPoint$2, editor, false, caret)\n      }, {\n        keyCode: VK.PAGE_DOWN,\n        action: action(moveToLineEndPoint$2, editor, true, caret)\n      }], evt);\n    };\n    const stopImmediatePropagation = e => e.stopImmediatePropagation();\n    const isPageUpDown = evt => evt.keyCode === VK.PAGE_UP || evt.keyCode === VK.PAGE_DOWN;\n    const setNodeChangeBlocker = (blocked, editor, block) => {\n      if (block && !blocked.get()) {\n        editor.on('NodeChange', stopImmediatePropagation, true);\n      } else if (!block && blocked.get()) {\n        editor.off('NodeChange', stopImmediatePropagation);\n      }\n      blocked.set(block);\n    };\n    const setup$f = (editor, caret) => {\n      if (platform.os.isMacOS()) {\n        return;\n      }\n      const blocked = Cell(false);\n      editor.on('keydown', evt => {\n        if (isPageUpDown(evt)) {\n          setNodeChangeBlocker(blocked, editor, true);\n        }\n      });\n      editor.on('keyup', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeyupAction(editor, caret, evt);\n        }\n        if (isPageUpDown(evt) && blocked.get()) {\n          setNodeChangeBlocker(blocked, editor, false);\n          editor.nodeChanged();\n        }\n      });\n    };\n\n    const setup$e = editor => {\n      editor.on('beforeinput', e => {\n        if (!editor.selection.isEditable() || exists(e.getTargetRanges(), rng => !isEditableRange(editor.dom, rng))) {\n          e.preventDefault();\n        }\n      });\n    };\n\n    const insertTextAtPosition = (text, pos) => {\n      const container = pos.container();\n      const offset = pos.offset();\n      if (isText$a(container)) {\n        container.insertData(offset, text);\n        return Optional.some(CaretPosition(container, offset + text.length));\n      } else {\n        return getElementFromPosition(pos).map(elm => {\n          const textNode = SugarElement.fromText(text);\n          if (pos.isAtEnd()) {\n            after$4(elm, textNode);\n          } else {\n            before$3(elm, textNode);\n          }\n          return CaretPosition(textNode.dom, text.length);\n        });\n      }\n    };\n    const insertNbspAtPosition = curry(insertTextAtPosition, nbsp);\n    const insertSpaceAtPosition = curry(insertTextAtPosition, ' ');\n\n    const insertSpaceOrNbspAtPosition = (root, pos, schema) => needsToHaveNbsp(root, pos, schema) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos);\n    const locationToCaretPosition = root => location => location.fold(element => prevPosition(root.dom, CaretPosition.before(element)), element => firstPositionIn(element), element => lastPositionIn(element), element => nextPosition(root.dom, CaretPosition.after(element)));\n    const insertInlineBoundarySpaceOrNbsp = (root, pos, schema) => checkPos => needsToHaveNbsp(root, checkPos, schema) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos);\n    const setSelection = editor => pos => {\n      editor.selection.setRng(pos.toRange());\n      editor.nodeChanged();\n    };\n    const isInsideSummary = (domUtils, node) => domUtils.isEditable(domUtils.getParent(node, 'summary'));\n    const insertSpaceOrNbspAtSelection = editor => {\n      const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n      const root = SugarElement.fromDom(editor.getBody());\n      if (editor.selection.isCollapsed()) {\n        const isInlineTarget$1 = curry(isInlineTarget, editor);\n        const caretPosition = CaretPosition.fromRangeStart(editor.selection.getRng());\n        return readLocation(isInlineTarget$1, editor.getBody(), caretPosition).bind(locationToCaretPosition(root)).map(checkPos => () => insertInlineBoundarySpaceOrNbsp(root, pos, editor.schema)(checkPos).each(setSelection(editor)));\n      } else {\n        return Optional.none();\n      }\n    };\n    const insertSpaceInSummaryAtSelectionOnFirefox = editor => {\n      const insertSpaceThunk = () => {\n        const root = SugarElement.fromDom(editor.getBody());\n        if (!editor.selection.isCollapsed()) {\n          editor.getDoc().execCommand('Delete');\n        }\n        const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n        insertSpaceOrNbspAtPosition(root, pos, editor.schema).each(setSelection(editor));\n      };\n      return someIf(Env.browser.isFirefox() && editor.selection.isEditable() && isInsideSummary(editor.dom, editor.selection.getRng().startContainer), insertSpaceThunk);\n    };\n\n    const executeKeydownOverride$1 = (editor, evt) => {\n      executeWithDelayedAction([{\n        keyCode: VK.SPACEBAR,\n        action: action(insertSpaceOrNbspAtSelection, editor)\n      }, {\n        keyCode: VK.SPACEBAR,\n        action: action(insertSpaceInSummaryAtSelectionOnFirefox, editor)\n      }], evt).each(applyAction => {\n        evt.preventDefault();\n        const event = fireBeforeInputEvent(editor, 'insertText', {\n          data: ' '\n        });\n        if (!event.isDefaultPrevented()) {\n          applyAction();\n          fireInputEvent(editor, 'insertText', {\n            data: ' '\n          });\n        }\n      });\n    };\n    const setup$d = editor => {\n      editor.on('keydown', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride$1(editor, evt);\n        }\n      });\n    };\n\n    const tableTabNavigation = editor => {\n      if (hasTableTabNavigation(editor)) {\n        return [{\n          keyCode: VK.TAB,\n          action: action(handleTab, editor, true)\n        }, {\n          keyCode: VK.TAB,\n          shiftKey: true,\n          action: action(handleTab, editor, false)\n        }];\n      } else {\n        return [];\n      }\n    };\n    const executeKeydownOverride = (editor, evt) => {\n      execute([...tableTabNavigation(editor)], evt).each(_ => {\n        evt.preventDefault();\n      });\n    };\n    const setup$c = editor => {\n      editor.on('keydown', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride(editor, evt);\n        }\n      });\n    };\n\n    const setup$b = editor => {\n      editor.addShortcut('Meta+P', '', 'mcePrint');\n      setup$k(editor);\n      if (isRtc(editor)) {\n        return Cell(null);\n      } else {\n        const caret = setupSelectedState(editor);\n        setup$e(editor);\n        setup$m(editor);\n        setup$l(editor, caret);\n        setup$j(editor, caret);\n        setup$i(editor);\n        setup$d(editor);\n        setup$g(editor);\n        setup$c(editor);\n        setup$h(editor, caret);\n        setup$f(editor, caret);\n        return caret;\n      }\n    };\n\n    class NodeChange {\n      constructor(editor) {\n        this.lastPath = [];\n        this.editor = editor;\n        let lastRng;\n        const self = this;\n        if (!('onselectionchange' in editor.getDoc())) {\n          editor.on('NodeChange click mouseup keyup focus', e => {\n            const nativeRng = editor.selection.getRng();\n            const fakeRng = {\n              startContainer: nativeRng.startContainer,\n              startOffset: nativeRng.startOffset,\n              endContainer: nativeRng.endContainer,\n              endOffset: nativeRng.endOffset\n            };\n            if (e.type === 'nodechange' || !isEq$4(fakeRng, lastRng)) {\n              editor.dispatch('SelectionChange');\n            }\n            lastRng = fakeRng;\n          });\n        }\n        editor.on('contextmenu', () => {\n          editor.dispatch('SelectionChange');\n        });\n        editor.on('SelectionChange', () => {\n          const startElm = editor.selection.getStart(true);\n          if (!startElm) {\n            return;\n          }\n          if (hasAnyRanges(editor) && !self.isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {\n            editor.nodeChanged({\n              selectionChange: true\n            });\n          }\n        });\n        editor.on('mouseup', e => {\n          if (!e.isDefaultPrevented() && hasAnyRanges(editor)) {\n            if (editor.selection.getNode().nodeName === 'IMG') {\n              Delay.setEditorTimeout(editor, () => {\n                editor.nodeChanged();\n              });\n            } else {\n              editor.nodeChanged();\n            }\n          }\n        });\n      }\n      nodeChanged(args = {}) {\n        const selection = this.editor.selection;\n        let node;\n        if (this.editor.initialized && selection && !shouldDisableNodeChange(this.editor) && !this.editor.mode.isReadOnly()) {\n          const root = this.editor.getBody();\n          node = selection.getStart(true) || root;\n          if (node.ownerDocument !== this.editor.getDoc() || !this.editor.dom.isChildOf(node, root)) {\n            node = root;\n          }\n          const parents = [];\n          this.editor.dom.getParent(node, node => {\n            if (node === root) {\n              return true;\n            } else {\n              parents.push(node);\n              return false;\n            }\n          });\n          this.editor.dispatch('NodeChange', {\n            ...args,\n            element: node,\n            parents\n          });\n        }\n      }\n      isSameElementPath(startElm) {\n        let i;\n        const editor = this.editor;\n        const currentPath = reverse(editor.dom.getParents(startElm, always, editor.getBody()));\n        if (currentPath.length === this.lastPath.length) {\n          for (i = currentPath.length; i >= 0; i--) {\n            if (currentPath[i] !== this.lastPath[i]) {\n              break;\n            }\n          }\n          if (i === -1) {\n            this.lastPath = currentPath;\n            return true;\n          }\n        }\n        this.lastPath = currentPath;\n        return false;\n      }\n    }\n\n    const imageId = generate$1('image');\n    const getDragImage = transfer => {\n      const dt = transfer;\n      return Optional.from(dt[imageId]);\n    };\n    const setDragImage = (transfer, imageData) => {\n      const dt = transfer;\n      dt[imageId] = imageData;\n    };\n\n    const eventId = generate$1('event');\n    const getEvent = transfer => {\n      const dt = transfer;\n      return Optional.from(dt[eventId]);\n    };\n    const mkSetEventFn = type => transfer => {\n      const dt = transfer;\n      dt[eventId] = type;\n    };\n    const setEvent = (transfer, type) => mkSetEventFn(type)(transfer);\n    const setDragstartEvent = mkSetEventFn(0);\n    const setDropEvent = mkSetEventFn(2);\n    const setDragendEvent = mkSetEventFn(1);\n    const checkEvent = expectedType => transfer => {\n      const dt = transfer;\n      return Optional.from(dt[eventId]).exists(type => type === expectedType);\n    };\n    const isInDragStartEvent = checkEvent(0);\n\n    const createEmptyFileList = () => Object.freeze({\n      length: 0,\n      item: _ => null\n    });\n\n    const modeId = generate$1('mode');\n    const getMode = transfer => {\n      const dt = transfer;\n      return Optional.from(dt[modeId]);\n    };\n    const mkSetModeFn = mode => transfer => {\n      const dt = transfer;\n      dt[modeId] = mode;\n    };\n    const setMode$1 = (transfer, mode) => mkSetModeFn(mode)(transfer);\n    const setReadWriteMode = mkSetModeFn(0);\n    const setReadOnlyMode = mkSetModeFn(2);\n    const setProtectedMode = mkSetModeFn(1);\n    const checkMode = expectedMode => transfer => {\n      const dt = transfer;\n      return Optional.from(dt[modeId]).exists(mode => mode === expectedMode);\n    };\n    const isInReadWriteMode = checkMode(0);\n    const isInProtectedMode = checkMode(1);\n\n    const normalizeItems = (dataTransfer, itemsImpl) => ({\n      ...itemsImpl,\n      get length() {\n        return itemsImpl.length;\n      },\n      add: (data, type) => {\n        if (isInReadWriteMode(dataTransfer)) {\n          if (isString(data)) {\n            if (!isUndefined(type)) {\n              return itemsImpl.add(data, type);\n            }\n          } else {\n            return itemsImpl.add(data);\n          }\n        }\n        return null;\n      },\n      remove: idx => {\n        if (isInReadWriteMode(dataTransfer)) {\n          itemsImpl.remove(idx);\n        }\n      },\n      clear: () => {\n        if (isInReadWriteMode(dataTransfer)) {\n          itemsImpl.clear();\n        }\n      }\n    });\n\n    const validDropEffects = ['none', 'copy', 'link', 'move'];\n    const validEffectAlloweds = ['none', 'copy', 'copyLink', 'copyMove', 'link', 'linkMove', 'move', 'all', 'uninitialized'];\n    const createDataTransfer = () => {\n      const dataTransferImpl = new window.DataTransfer();\n      let dropEffect = 'move';\n      let effectAllowed = 'all';\n      const dataTransfer = {\n        get dropEffect() {\n          return dropEffect;\n        },\n        set dropEffect(effect) {\n          if (contains$2(validDropEffects, effect)) {\n            dropEffect = effect;\n          }\n        },\n        get effectAllowed() {\n          return effectAllowed;\n        },\n        set effectAllowed(allowed) {\n          if (isInDragStartEvent(dataTransfer) && contains$2(validEffectAlloweds, allowed)) {\n            effectAllowed = allowed;\n          }\n        },\n        get items() {\n          return normalizeItems(dataTransfer, dataTransferImpl.items);\n        },\n        get files() {\n          if (isInProtectedMode(dataTransfer)) {\n            return createEmptyFileList();\n          } else {\n            return dataTransferImpl.files;\n          }\n        },\n        get types() {\n          return dataTransferImpl.types;\n        },\n        setDragImage: (image, x, y) => {\n          if (isInReadWriteMode(dataTransfer)) {\n            setDragImage(dataTransfer, {\n              image,\n              x,\n              y\n            });\n            dataTransferImpl.setDragImage(image, x, y);\n          }\n        },\n        getData: format => {\n          if (isInProtectedMode(dataTransfer)) {\n            return '';\n          } else {\n            return dataTransferImpl.getData(format);\n          }\n        },\n        setData: (format, data) => {\n          if (isInReadWriteMode(dataTransfer)) {\n            dataTransferImpl.setData(format, data);\n          }\n        },\n        clearData: format => {\n          if (isInReadWriteMode(dataTransfer)) {\n            dataTransferImpl.clearData(format);\n          }\n        }\n      };\n      setReadWriteMode(dataTransfer);\n      return dataTransfer;\n    };\n    const cloneDataTransfer = original => {\n      const clone = createDataTransfer();\n      const originalMode = getMode(original);\n      setReadOnlyMode(original);\n      setDragstartEvent(clone);\n      clone.dropEffect = original.dropEffect;\n      clone.effectAllowed = original.effectAllowed;\n      getDragImage(original).each(imageData => clone.setDragImage(imageData.image, imageData.x, imageData.y));\n      each$e(original.types, type => {\n        if (type !== 'Files') {\n          clone.setData(type, original.getData(type));\n        }\n      });\n      each$e(original.files, file => clone.items.add(file));\n      getEvent(original).each(type => {\n        setEvent(clone, type);\n      });\n      originalMode.each(mode => {\n        setMode$1(original, mode);\n        setMode$1(clone, mode);\n      });\n      return clone;\n    };\n\n    const getHtmlData = dataTransfer => {\n      const html = dataTransfer.getData('text/html');\n      return html === '' ? Optional.none() : Optional.some(html);\n    };\n    const setHtmlData = (dataTransfer, html) => dataTransfer.setData('text/html', html);\n\n    const internalMimeType = 'x-tinymce/html';\n    const internalHtmlMime = constant(internalMimeType);\n    const internalMark = '<!-- ' + internalMimeType + ' -->';\n    const mark = html => internalMark + html;\n    const unmark = html => html.replace(internalMark, '');\n    const isMarked = html => html.indexOf(internalMark) !== -1;\n\n    const isPlainText = text => {\n      return !/<(?:\\/?(?!(?:div|p|br|span)>)\\w+|(?:(?!(?:span style=\"white-space:\\s?pre;?\">)|br\\s?\\/>))\\w+\\s[^>]+)>/i.test(text);\n    };\n    const openContainer = (rootTag, rootAttrs) => {\n      let tag = '<' + rootTag;\n      const attrs = mapToArray(rootAttrs, (value, key) => key + '=\"' + Entities.encodeAllRaw(value) + '\"');\n      if (attrs.length) {\n        tag += ' ' + attrs.join(' ');\n      }\n      return tag + '>';\n    };\n    const toBlockElements = (text, rootTag, rootAttrs) => {\n      const blocks = text.split(/\\n\\n/);\n      const tagOpen = openContainer(rootTag, rootAttrs);\n      const tagClose = '</' + rootTag + '>';\n      const paragraphs = map$3(blocks, p => {\n        return p.split(/\\n/).join('<br />');\n      });\n      const stitch = p => {\n        return tagOpen + p + tagClose;\n      };\n      return paragraphs.length === 1 ? paragraphs[0] : map$3(paragraphs, stitch).join('');\n    };\n\n    const pasteBinDefaultContent = '%MCEPASTEBIN%';\n    const create$6 = (editor, lastRngCell) => {\n      const {\n        dom,\n        selection\n      } = editor;\n      const body = editor.getBody();\n      lastRngCell.set(selection.getRng());\n      const pasteBinElm = dom.add(editor.getBody(), 'div', {\n        'id': 'mcepastebin',\n        'class': 'mce-pastebin',\n        'contentEditable': true,\n        'data-mce-bogus': 'all',\n        'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0'\n      }, pasteBinDefaultContent);\n      if (Env.browser.isFirefox()) {\n        dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535);\n      }\n      dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', e => {\n        e.stopPropagation();\n      });\n      pasteBinElm.focus();\n      selection.select(pasteBinElm, true);\n    };\n    const remove = (editor, lastRngCell) => {\n      const dom = editor.dom;\n      if (getEl(editor)) {\n        let pasteBinClone;\n        const lastRng = lastRngCell.get();\n        while (pasteBinClone = getEl(editor)) {\n          dom.remove(pasteBinClone);\n          dom.unbind(pasteBinClone);\n        }\n        if (lastRng) {\n          editor.selection.setRng(lastRng);\n        }\n      }\n      lastRngCell.set(null);\n    };\n    const getEl = editor => editor.dom.get('mcepastebin');\n    const isPasteBin = elm => isNonNullable(elm) && elm.id === 'mcepastebin';\n    const getHtml = editor => {\n      const dom = editor.dom;\n      const copyAndRemove = (toElm, fromElm) => {\n        toElm.appendChild(fromElm);\n        dom.remove(fromElm, true);\n      };\n      const [pasteBinElm, ...pasteBinClones] = filter$5(editor.getBody().childNodes, isPasteBin);\n      each$e(pasteBinClones, pasteBinClone => {\n        copyAndRemove(pasteBinElm, pasteBinClone);\n      });\n      const dirtyWrappers = dom.select('div[id=mcepastebin]', pasteBinElm);\n      for (let i = dirtyWrappers.length - 1; i >= 0; i--) {\n        const cleanWrapper = dom.create('div');\n        pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]);\n        copyAndRemove(cleanWrapper, dirtyWrappers[i]);\n      }\n      return pasteBinElm ? pasteBinElm.innerHTML : '';\n    };\n    const isDefaultPasteBinContent = content => content === pasteBinDefaultContent;\n    const PasteBin = editor => {\n      const lastRng = Cell(null);\n      return {\n        create: () => create$6(editor, lastRng),\n        remove: () => remove(editor, lastRng),\n        getEl: () => getEl(editor),\n        getHtml: () => getHtml(editor),\n        getLastRng: lastRng.get\n      };\n    };\n\n    const filter$1 = (content, items) => {\n      Tools.each(items, v => {\n        if (is$4(v, RegExp)) {\n          content = content.replace(v, '');\n        } else {\n          content = content.replace(v[0], v[1]);\n        }\n      });\n      return content;\n    };\n    const innerText = html => {\n      const schema = Schema();\n      const domParser = DomParser({}, schema);\n      let text = '';\n      const voidElements = schema.getVoidElements();\n      const ignoreElements = Tools.makeMap('script noscript style textarea video audio iframe object', ' ');\n      const blockElements = schema.getBlockElements();\n      const walk = node => {\n        const name = node.name,\n          currentNode = node;\n        if (name === 'br') {\n          text += '\\n';\n          return;\n        }\n        if (name === 'wbr') {\n          return;\n        }\n        if (voidElements[name]) {\n          text += ' ';\n        }\n        if (ignoreElements[name]) {\n          text += ' ';\n          return;\n        }\n        if (node.type === 3) {\n          text += node.value;\n        }\n        if (!(node.name in schema.getVoidElements())) {\n          let currentNode = node.firstChild;\n          if (currentNode) {\n            do {\n              walk(currentNode);\n            } while (currentNode = currentNode.next);\n          }\n        }\n        if (blockElements[name] && currentNode.next) {\n          text += '\\n';\n          if (name === 'p') {\n            text += '\\n';\n          }\n        }\n      };\n      html = filter$1(html, [/<!\\[[^\\]]+\\]>/g]);\n      walk(domParser.parse(html));\n      return text;\n    };\n    const trimHtml = html => {\n      const trimSpaces = (all, s1, s2) => {\n        if (!s1 && !s2) {\n          return ' ';\n        }\n        return nbsp;\n      };\n      html = filter$1(html, [/^[\\s\\S]*<body[^>]*>\\s*|\\s*<\\/body[^>]*>[\\s\\S]*$/ig, /<!--StartFragment-->|<!--EndFragment-->/g, [/( ?)<span class=\"Apple-converted-space\">\\u00a0<\\/span>( ?)/g, trimSpaces], /<br class=\"Apple-interchange-newline\">/g, /<br>$/i]);\n      return html;\n    };\n    const createIdGenerator = prefix => {\n      let count = 0;\n      return () => {\n        return prefix + count++;\n      };\n    };\n    const getImageMimeType = ext => {\n      const lowerExt = ext.toLowerCase();\n      const mimeOverrides = {\n        jpg: 'jpeg',\n        jpe: 'jpeg',\n        jfi: 'jpeg',\n        jif: 'jpeg',\n        jfif: 'jpeg',\n        pjpeg: 'jpeg',\n        pjp: 'jpeg',\n        svg: 'svg+xml'\n      };\n      return Tools.hasOwn(mimeOverrides, lowerExt) ? 'image/' + mimeOverrides[lowerExt] : 'image/' + lowerExt;\n    };\n\n    const preProcess = (editor, html) => {\n      const parser = DomParser({\n        sanitize: shouldSanitizeXss(editor),\n        sandbox_iframes: shouldSandboxIframes(editor)\n      }, editor.schema);\n      parser.addNodeFilter('meta', nodes => {\n        Tools.each(nodes, node => {\n          node.remove();\n        });\n      });\n      const fragment = parser.parse(html, {\n        forced_root_block: false,\n        isRootContent: true\n      });\n      return HtmlSerializer({\n        validate: true\n      }, editor.schema).serialize(fragment);\n    };\n    const processResult = (content, cancelled) => ({\n      content,\n      cancelled\n    });\n    const postProcessFilter = (editor, html, internal) => {\n      const tempBody = editor.dom.create('div', {\n        style: 'display:none'\n      }, html);\n      const postProcessArgs = firePastePostProcess(editor, tempBody, internal);\n      return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented());\n    };\n    const filterContent = (editor, content, internal) => {\n      const preProcessArgs = firePastePreProcess(editor, content, internal);\n      const filteredContent = preProcess(editor, preProcessArgs.content);\n      if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) {\n        return postProcessFilter(editor, filteredContent, internal);\n      } else {\n        return processResult(filteredContent, preProcessArgs.isDefaultPrevented());\n      }\n    };\n    const process = (editor, html, internal) => {\n      return filterContent(editor, html, internal);\n    };\n\n    const pasteHtml$1 = (editor, html) => {\n      editor.insertContent(html, {\n        merge: shouldPasteMergeFormats(editor),\n        paste: true\n      });\n      return true;\n    };\n    const isAbsoluteUrl = url => /^https?:\\/\\/[\\w\\-\\/+=.,!;:&%@^~(){}?#]+$/i.test(url);\n    const isImageUrl = (editor, url) => {\n      return isAbsoluteUrl(url) && exists(getAllowedImageFileTypes(editor), type => endsWith(url.toLowerCase(), \".\".concat(type.toLowerCase())));\n    };\n    const createImage = (editor, url, pasteHtmlFn) => {\n      editor.undoManager.extra(() => {\n        pasteHtmlFn(editor, url);\n      }, () => {\n        editor.insertContent('<img src=\"' + url + '\">');\n      });\n      return true;\n    };\n    const createLink = (editor, url, pasteHtmlFn) => {\n      editor.undoManager.extra(() => {\n        pasteHtmlFn(editor, url);\n      }, () => {\n        editor.execCommand('mceInsertLink', false, url);\n      });\n      return true;\n    };\n    const linkSelection = (editor, html, pasteHtmlFn) => !editor.selection.isCollapsed() && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false;\n    const insertImage = (editor, html, pasteHtmlFn) => isImageUrl(editor, html) ? createImage(editor, html, pasteHtmlFn) : false;\n    const smartInsertContent = (editor, html) => {\n      Tools.each([linkSelection, insertImage, pasteHtml$1], action => {\n        return !action(editor, html, pasteHtml$1);\n      });\n    };\n    const insertContent = (editor, html, pasteAsText) => {\n      if (pasteAsText || !isSmartPasteEnabled(editor)) {\n        pasteHtml$1(editor, html);\n      } else {\n        smartInsertContent(editor, html);\n      }\n    };\n\n    const uniqueId = createIdGenerator('mceclip');\n    const createPasteDataTransfer = html => {\n      const dataTransfer = createDataTransfer();\n      setHtmlData(dataTransfer, html);\n      setReadOnlyMode(dataTransfer);\n      return dataTransfer;\n    };\n    const doPaste = (editor, content, internal, pasteAsText, shouldSimulateInputEvent) => {\n      const res = process(editor, content, internal);\n      if (!res.cancelled) {\n        const content = res.content;\n        const doPasteAction = () => insertContent(editor, content, pasteAsText);\n        if (shouldSimulateInputEvent) {\n          const args = fireBeforeInputEvent(editor, 'insertFromPaste', {\n            dataTransfer: createPasteDataTransfer(content)\n          });\n          if (!args.isDefaultPrevented()) {\n            doPasteAction();\n            fireInputEvent(editor, 'insertFromPaste');\n          }\n        } else {\n          doPasteAction();\n        }\n      }\n    };\n    const pasteHtml = (editor, html, internalFlag, shouldSimulateInputEvent) => {\n      const internal = internalFlag ? internalFlag : isMarked(html);\n      doPaste(editor, unmark(html), internal, false, shouldSimulateInputEvent);\n    };\n    const pasteText = (editor, text, shouldSimulateInputEvent) => {\n      const encodedText = editor.dom.encode(text).replace(/\\r\\n/g, '\\n');\n      const normalizedText = normalize$4(encodedText, getPasteTabSpaces(editor));\n      const html = toBlockElements(normalizedText, getForcedRootBlock(editor), getForcedRootBlockAttrs(editor));\n      doPaste(editor, html, false, true, shouldSimulateInputEvent);\n    };\n    const getDataTransferItems = dataTransfer => {\n      const items = {};\n      if (dataTransfer && dataTransfer.types) {\n        for (let i = 0; i < dataTransfer.types.length; i++) {\n          const contentType = dataTransfer.types[i];\n          try {\n            items[contentType] = dataTransfer.getData(contentType);\n          } catch (ex) {\n            items[contentType] = '';\n          }\n        }\n      }\n      return items;\n    };\n    const hasContentType = (clipboardContent, mimeType) => mimeType in clipboardContent && clipboardContent[mimeType].length > 0;\n    const hasHtmlOrText = content => hasContentType(content, 'text/html') || hasContentType(content, 'text/plain');\n    const extractFilename = (editor, str) => {\n      const m = str.match(/([\\s\\S]+?)(?:\\.[a-z0-9.]+)$/i);\n      return isNonNullable(m) ? editor.dom.encode(m[1]) : undefined;\n    };\n    const createBlobInfo = (editor, blobCache, file, base64) => {\n      const id = uniqueId();\n      const useFileName = shouldReuseFileName(editor) && isNonNullable(file.name);\n      const name = useFileName ? extractFilename(editor, file.name) : id;\n      const filename = useFileName ? file.name : undefined;\n      const blobInfo = blobCache.create(id, file, base64, name, filename);\n      blobCache.add(blobInfo);\n      return blobInfo;\n    };\n    const pasteImage = (editor, imageItem) => {\n      parseDataUri(imageItem.uri).each(({\n        data,\n        type,\n        base64Encoded\n      }) => {\n        const base64 = base64Encoded ? data : btoa(data);\n        const file = imageItem.file;\n        const blobCache = editor.editorUpload.blobCache;\n        const existingBlobInfo = blobCache.getByData(base64, type);\n        const blobInfo = existingBlobInfo !== null && existingBlobInfo !== void 0 ? existingBlobInfo : createBlobInfo(editor, blobCache, file, base64);\n        pasteHtml(editor, \"<img src=\\\"\".concat(blobInfo.blobUri(), \"\\\">\"), false, true);\n      });\n    };\n    const isClipboardEvent = event => event.type === 'paste';\n    const readFilesAsDataUris = items => Promise.all(map$3(items, file => {\n      return blobToDataUri(file).then(uri => ({\n        file,\n        uri\n      }));\n    }));\n    const isImage = editor => {\n      const allowedExtensions = getAllowedImageFileTypes(editor);\n      return file => startsWith(file.type, 'image/') && exists(allowedExtensions, extension => {\n        return getImageMimeType(extension) === file.type;\n      });\n    };\n    const getImagesFromDataTransfer = (editor, dataTransfer) => {\n      const items = dataTransfer.items ? bind$3(from(dataTransfer.items), item => {\n        return item.kind === 'file' ? [item.getAsFile()] : [];\n      }) : [];\n      const files = dataTransfer.files ? from(dataTransfer.files) : [];\n      return filter$5(items.length > 0 ? items : files, isImage(editor));\n    };\n    const pasteImageData = (editor, e, rng) => {\n      const dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;\n      if (shouldPasteDataImages(editor) && dataTransfer) {\n        const images = getImagesFromDataTransfer(editor, dataTransfer);\n        if (images.length > 0) {\n          e.preventDefault();\n          readFilesAsDataUris(images).then(fileResults => {\n            if (rng) {\n              editor.selection.setRng(rng);\n            }\n            each$e(fileResults, result => {\n              pasteImage(editor, result);\n            });\n          });\n          return true;\n        }\n      }\n      return false;\n    };\n    const isBrokenAndroidClipboardEvent = e => {\n      var _a, _b;\n      return Env.os.isAndroid() && ((_b = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.length) === 0;\n    };\n    const isKeyboardPasteEvent = e => VK.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;\n    const insertClipboardContent = (editor, clipboardContent, html, plainTextMode, shouldSimulateInputEvent) => {\n      let content = trimHtml(html);\n      const isInternal = hasContentType(clipboardContent, internalHtmlMime()) || isMarked(html);\n      const isPlainTextHtml = !isInternal && isPlainText(content);\n      const isAbsoluteUrl$1 = isAbsoluteUrl(content);\n      if (isDefaultPasteBinContent(content) || !content.length || isPlainTextHtml && !isAbsoluteUrl$1) {\n        plainTextMode = true;\n      }\n      if (plainTextMode || isAbsoluteUrl$1) {\n        if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) {\n          content = clipboardContent['text/plain'];\n        } else {\n          content = innerText(content);\n        }\n      }\n      if (isDefaultPasteBinContent(content)) {\n        return;\n      }\n      if (plainTextMode) {\n        pasteText(editor, content, shouldSimulateInputEvent);\n      } else {\n        pasteHtml(editor, content, isInternal, shouldSimulateInputEvent);\n      }\n    };\n    const registerEventHandlers = (editor, pasteBin, pasteFormat) => {\n      let keyboardPastePlainTextState;\n      const getLastRng = () => pasteBin.getLastRng() || editor.selection.getRng();\n      editor.on('keydown', e => {\n        if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\n          keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;\n        }\n      });\n      editor.on('paste', e => {\n        if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {\n          return;\n        }\n        const plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState;\n        keyboardPastePlainTextState = false;\n        const clipboardContent = getDataTransferItems(e.clipboardData);\n        if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) {\n          return;\n        }\n        if (hasContentType(clipboardContent, 'text/html')) {\n          e.preventDefault();\n          insertClipboardContent(editor, clipboardContent, clipboardContent['text/html'], plainTextMode, true);\n        } else if (hasContentType(clipboardContent, 'text/plain') && hasContentType(clipboardContent, 'text/uri-list')) {\n          e.preventDefault();\n          insertClipboardContent(editor, clipboardContent, clipboardContent['text/plain'], plainTextMode, true);\n        } else {\n          pasteBin.create();\n          Delay.setEditorTimeout(editor, () => {\n            const html = pasteBin.getHtml();\n            pasteBin.remove();\n            insertClipboardContent(editor, clipboardContent, html, plainTextMode, false);\n          }, 0);\n        }\n      });\n    };\n    const registerDataImageFilter = editor => {\n      const isWebKitFakeUrl = src => startsWith(src, 'webkit-fake-url');\n      const isDataUri = src => startsWith(src, 'data:');\n      const isPasteInsert = args => {\n        var _a;\n        return ((_a = args.data) === null || _a === void 0 ? void 0 : _a.paste) === true;\n      };\n      editor.parser.addNodeFilter('img', (nodes, name, args) => {\n        if (!shouldPasteDataImages(editor) && isPasteInsert(args)) {\n          for (const node of nodes) {\n            const src = node.attr('src');\n            if (isString(src) && !node.attr('data-mce-object') && src !== Env.transparentSrc) {\n              if (isWebKitFakeUrl(src)) {\n                node.remove();\n              } else if (!shouldAllowHtmlDataUrls(editor) && isDataUri(src)) {\n                node.remove();\n              }\n            }\n          }\n        }\n      });\n    };\n    const registerEventsAndFilters = (editor, pasteBin, pasteFormat) => {\n      registerEventHandlers(editor, pasteBin, pasteFormat);\n      registerDataImageFilter(editor);\n    };\n\n    const togglePlainTextPaste = (editor, pasteFormat) => {\n      if (pasteFormat.get() === 'text') {\n        pasteFormat.set('html');\n        firePastePlainTextToggle(editor, false);\n      } else {\n        pasteFormat.set('text');\n        firePastePlainTextToggle(editor, true);\n      }\n      editor.focus();\n    };\n    const register$1 = (editor, pasteFormat) => {\n      editor.addCommand('mceTogglePlainTextPaste', () => {\n        togglePlainTextPaste(editor, pasteFormat);\n      });\n      editor.addCommand('mceInsertClipboardContent', (ui, value) => {\n        if (value.html) {\n          pasteHtml(editor, value.html, value.internal, false);\n        }\n        if (value.text) {\n          pasteText(editor, value.text, false);\n        }\n      });\n    };\n\n    const setHtml5Clipboard = (clipboardData, html, text) => {\n      if (clipboardData) {\n        try {\n          clipboardData.clearData();\n          clipboardData.setData('text/html', html);\n          clipboardData.setData('text/plain', text);\n          clipboardData.setData(internalHtmlMime(), html);\n          return true;\n        } catch (e) {\n          return false;\n        }\n      } else {\n        return false;\n      }\n    };\n    const setClipboardData = (evt, data, fallback, done) => {\n      if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) {\n        evt.preventDefault();\n        done();\n      } else {\n        fallback(data.html, done);\n      }\n    };\n    const fallback = editor => (html, done) => {\n      const {\n        dom,\n        selection\n      } = editor;\n      const outer = dom.create('div', {\n        'contenteditable': 'false',\n        'data-mce-bogus': 'all'\n      });\n      const inner = dom.create('div', {\n        contenteditable: 'true'\n      }, html);\n      dom.setStyles(outer, {\n        position: 'fixed',\n        top: '0',\n        left: '-3000px',\n        width: '1000px',\n        overflow: 'hidden'\n      });\n      outer.appendChild(inner);\n      dom.add(editor.getBody(), outer);\n      const range = selection.getRng();\n      inner.focus();\n      const offscreenRange = dom.createRng();\n      offscreenRange.selectNodeContents(inner);\n      selection.setRng(offscreenRange);\n      Delay.setEditorTimeout(editor, () => {\n        selection.setRng(range);\n        dom.remove(outer);\n        done();\n      }, 0);\n    };\n    const getData = editor => ({\n      html: mark(editor.selection.getContent({\n        contextual: true\n      })),\n      text: editor.selection.getContent({\n        format: 'text'\n      })\n    });\n    const isTableSelection = editor => !!editor.dom.getParent(editor.selection.getStart(), 'td[data-mce-selected],th[data-mce-selected]', editor.getBody());\n    const hasSelectedContent = editor => !editor.selection.isCollapsed() || isTableSelection(editor);\n    const cut = editor => evt => {\n      if (!evt.isDefaultPrevented() && hasSelectedContent(editor) && editor.selection.isEditable()) {\n        setClipboardData(evt, getData(editor), fallback(editor), () => {\n          if (Env.browser.isChromium() || Env.browser.isFirefox()) {\n            const rng = editor.selection.getRng();\n            Delay.setEditorTimeout(editor, () => {\n              editor.selection.setRng(rng);\n              editor.execCommand('Delete');\n            }, 0);\n          } else {\n            editor.execCommand('Delete');\n          }\n        });\n      }\n    };\n    const copy = editor => evt => {\n      if (!evt.isDefaultPrevented() && hasSelectedContent(editor)) {\n        setClipboardData(evt, getData(editor), fallback(editor), noop);\n      }\n    };\n    const register = editor => {\n      editor.on('cut', cut(editor));\n      editor.on('copy', copy(editor));\n    };\n\n    const getCaretRangeFromEvent = (editor, e) => {\n      var _a, _b;\n      return RangeUtils.getCaretRangeFromPoint((_a = e.clientX) !== null && _a !== void 0 ? _a : 0, (_b = e.clientY) !== null && _b !== void 0 ? _b : 0, editor.getDoc());\n    };\n    const isPlainTextFileUrl = content => {\n      const plainTextContent = content['text/plain'];\n      return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false;\n    };\n    const setFocusedRange = (editor, rng) => {\n      editor.focus();\n      if (rng) {\n        editor.selection.setRng(rng);\n      }\n    };\n    const hasImage = dataTransfer => exists(dataTransfer.files, file => /^image\\//.test(file.type));\n    const needsCustomInternalDrop = (dom, schema, target, dropContent) => {\n      const parentTransparent = dom.getParent(target, node => isTransparentBlock(schema, node));\n      const inSummary = !isNull(dom.getParent(target, 'summary'));\n      if (inSummary) {\n        return true;\n      } else if (parentTransparent && has$2(dropContent, 'text/html')) {\n        const fragment = new DOMParser().parseFromString(dropContent['text/html'], 'text/html').body;\n        return !isNull(fragment.querySelector(parentTransparent.nodeName.toLowerCase()));\n      } else {\n        return false;\n      }\n    };\n    const setupSummaryDeleteByDragFix = editor => {\n      editor.on('input', e => {\n        const hasNoSummary = el => isNull(el.querySelector('summary'));\n        if (e.inputType === 'deleteByDrag') {\n          const brokenDetailElements = filter$5(editor.dom.select('details'), hasNoSummary);\n          each$e(brokenDetailElements, details => {\n            if (isBr$6(details.firstChild)) {\n              details.firstChild.remove();\n            }\n            const summary = editor.dom.create('summary');\n            summary.appendChild(createPaddingBr().dom);\n            details.prepend(summary);\n          });\n        }\n      });\n    };\n    const setup$a = (editor, draggingInternallyState) => {\n      if (shouldPasteBlockDrop(editor)) {\n        editor.on('dragend dragover draggesture dragdrop drop drag', e => {\n          e.preventDefault();\n          e.stopPropagation();\n        });\n      }\n      if (!shouldPasteDataImages(editor)) {\n        editor.on('drop', e => {\n          const dataTransfer = e.dataTransfer;\n          if (dataTransfer && hasImage(dataTransfer)) {\n            e.preventDefault();\n          }\n        });\n      }\n      editor.on('drop', e => {\n        if (e.isDefaultPrevented()) {\n          return;\n        }\n        const rng = getCaretRangeFromEvent(editor, e);\n        if (isNullable(rng)) {\n          return;\n        }\n        const dropContent = getDataTransferItems(e.dataTransfer);\n        const internal = hasContentType(dropContent, internalHtmlMime());\n        if ((!hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && pasteImageData(editor, e, rng)) {\n          return;\n        }\n        const internalContent = dropContent[internalHtmlMime()];\n        const content = internalContent || dropContent['text/html'] || dropContent['text/plain'];\n        const needsInternalDrop = needsCustomInternalDrop(editor.dom, editor.schema, rng.startContainer, dropContent);\n        const isInternalDrop = draggingInternallyState.get();\n        if (isInternalDrop && !needsInternalDrop) {\n          return;\n        }\n        if (content) {\n          e.preventDefault();\n          Delay.setEditorTimeout(editor, () => {\n            editor.undoManager.transact(() => {\n              if (internalContent || isInternalDrop && needsInternalDrop) {\n                editor.execCommand('Delete');\n              }\n              setFocusedRange(editor, rng);\n              const trimmedContent = trimHtml(content);\n              if (dropContent['text/html']) {\n                pasteHtml(editor, trimmedContent, internal, true);\n              } else {\n                pasteText(editor, trimmedContent, true);\n              }\n            });\n          });\n        }\n      });\n      editor.on('dragstart', _e => {\n        draggingInternallyState.set(true);\n      });\n      editor.on('dragover dragend', e => {\n        if (shouldPasteDataImages(editor) && !draggingInternallyState.get()) {\n          e.preventDefault();\n          setFocusedRange(editor, getCaretRangeFromEvent(editor, e));\n        }\n        if (e.type === 'dragend') {\n          draggingInternallyState.set(false);\n        }\n      });\n      setupSummaryDeleteByDragFix(editor);\n    };\n\n    const setup$9 = editor => {\n      const processEvent = f => e => {\n        f(editor, e);\n      };\n      const preProcess = getPastePreProcess(editor);\n      if (isFunction(preProcess)) {\n        editor.on('PastePreProcess', processEvent(preProcess));\n      }\n      const postProcess = getPastePostProcess(editor);\n      if (isFunction(postProcess)) {\n        editor.on('PastePostProcess', processEvent(postProcess));\n      }\n    };\n\n    const addPreProcessFilter = (editor, filterFunc) => {\n      editor.on('PastePreProcess', e => {\n        e.content = filterFunc(editor, e.content, e.internal);\n      });\n    };\n    const rgbRegExp = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/gi;\n    const rgbToHex = value => Tools.trim(value).replace(rgbRegExp, rgbaToHexString).toLowerCase();\n    const removeWebKitStyles = (editor, content, internal) => {\n      const webKitStylesOption = getPasteWebkitStyles(editor);\n      if (internal || webKitStylesOption === 'all' || !shouldPasteRemoveWebKitStyles(editor)) {\n        return content;\n      }\n      const webKitStyles = webKitStylesOption ? webKitStylesOption.split(/[, ]/) : [];\n      if (webKitStyles && webKitStylesOption !== 'none') {\n        const dom = editor.dom,\n          node = editor.selection.getNode();\n        content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, (all, before, value, after) => {\n          const inputStyles = dom.parseStyle(dom.decode(value));\n          const outputStyles = {};\n          for (let i = 0; i < webKitStyles.length; i++) {\n            const inputValue = inputStyles[webKitStyles[i]];\n            let compareInput = inputValue;\n            let currentValue = dom.getStyle(node, webKitStyles[i], true);\n            if (/color/.test(webKitStyles[i])) {\n              compareInput = rgbToHex(compareInput);\n              currentValue = rgbToHex(currentValue);\n            }\n            if (currentValue !== compareInput) {\n              outputStyles[webKitStyles[i]] = inputValue;\n            }\n          }\n          const outputStyle = dom.serializeStyle(outputStyles, 'span');\n          if (outputStyle) {\n            return before + ' style=\"' + outputStyle + '\"' + after;\n          }\n          return before + after;\n        });\n      } else {\n        content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, '$1$3');\n      }\n      content = content.replace(/(<[^>]+) data-mce-style=\"([^\"]+)\"([^>]*>)/gi, (all, before, value, after) => {\n        return before + ' style=\"' + value + '\"' + after;\n      });\n      return content;\n    };\n    const setup$8 = editor => {\n      if (Env.browser.isChromium() || Env.browser.isSafari()) {\n        addPreProcessFilter(editor, removeWebKitStyles);\n      }\n    };\n\n    const setup$7 = editor => {\n      const draggingInternallyState = Cell(false);\n      const pasteFormat = Cell(isPasteAsTextEnabled(editor) ? 'text' : 'html');\n      const pasteBin = PasteBin(editor);\n      setup$8(editor);\n      register$1(editor, pasteFormat);\n      setup$9(editor);\n      editor.on('PreInit', () => {\n        register(editor);\n        setup$a(editor, draggingInternallyState);\n        registerEventsAndFilters(editor, pasteBin, pasteFormat);\n      });\n    };\n\n    const preventSummaryToggle = editor => {\n      editor.on('click', e => {\n        if (editor.dom.getParent(e.target, 'details')) {\n          e.preventDefault();\n        }\n      });\n    };\n    const filterDetails = editor => {\n      editor.parser.addNodeFilter('details', elms => {\n        const initialStateOption = getDetailsInitialState(editor);\n        each$e(elms, details => {\n          if (initialStateOption === 'expanded') {\n            details.attr('open', 'open');\n          } else if (initialStateOption === 'collapsed') {\n            details.attr('open', null);\n          }\n        });\n      });\n      editor.serializer.addNodeFilter('details', elms => {\n        const serializedStateOption = getDetailsSerializedState(editor);\n        each$e(elms, details => {\n          if (serializedStateOption === 'expanded') {\n            details.attr('open', 'open');\n          } else if (serializedStateOption === 'collapsed') {\n            details.attr('open', null);\n          }\n        });\n      });\n    };\n    const setup$6 = editor => {\n      preventSummaryToggle(editor);\n      filterDetails(editor);\n    };\n\n    const isBr = isBr$6;\n    const isText = isText$a;\n    const isContentEditableFalse$2 = elm => isContentEditableFalse$b(elm.dom);\n    const isContentEditableTrue = elm => isContentEditableTrue$3(elm.dom);\n    const isRoot = rootNode => elm => eq(SugarElement.fromDom(rootNode), elm);\n    const getClosestScope = (node, rootNode, schema) => closest$4(SugarElement.fromDom(node), elm => isContentEditableTrue(elm) || schema.isBlock(name(elm)), isRoot(rootNode)).getOr(SugarElement.fromDom(rootNode)).dom;\n    const getClosestCef = (node, rootNode) => closest$4(SugarElement.fromDom(node), isContentEditableFalse$2, isRoot(rootNode));\n    const findEdgeCaretCandidate = (startNode, scope, forward) => {\n      const walker = new DomTreeWalker(startNode, scope);\n      const next = forward ? walker.next.bind(walker) : walker.prev.bind(walker);\n      let result = startNode;\n      for (let current = forward ? startNode : next(); current && !isBr(current); current = next()) {\n        if (isCaretCandidate$3(current)) {\n          result = current;\n        }\n      }\n      return result;\n    };\n    const findClosestBlockRange = (startRng, rootNode, schema) => {\n      const startPos = CaretPosition.fromRangeStart(startRng);\n      const clickNode = startPos.getNode();\n      const scope = getClosestScope(clickNode, rootNode, schema);\n      const startNode = findEdgeCaretCandidate(clickNode, scope, false);\n      const endNode = findEdgeCaretCandidate(clickNode, scope, true);\n      const rng = document.createRange();\n      getClosestCef(startNode, scope).fold(() => {\n        if (isText(startNode)) {\n          rng.setStart(startNode, 0);\n        } else {\n          rng.setStartBefore(startNode);\n        }\n      }, cef => rng.setStartBefore(cef.dom));\n      getClosestCef(endNode, scope).fold(() => {\n        if (isText(endNode)) {\n          rng.setEnd(endNode, endNode.data.length);\n        } else {\n          rng.setEndAfter(endNode);\n        }\n      }, cef => rng.setEndAfter(cef.dom));\n      return rng;\n    };\n    const onTripleClickSelect = editor => {\n      const rng = findClosestBlockRange(editor.selection.getRng(), editor.getBody(), editor.schema);\n      editor.selection.setRng(normalize(rng));\n    };\n    const setup$5 = editor => {\n      editor.on('mousedown', e => {\n        if (e.detail >= 3) {\n          e.preventDefault();\n          onTripleClickSelect(editor);\n        }\n      });\n    };\n\n    var FakeCaretPosition;\n    (function (FakeCaretPosition) {\n      FakeCaretPosition['Before'] = 'before';\n      FakeCaretPosition['After'] = 'after';\n    })(FakeCaretPosition || (FakeCaretPosition = {}));\n    const distanceToRectLeft = (clientRect, clientX) => Math.abs(clientRect.left - clientX);\n    const distanceToRectRight = (clientRect, clientX) => Math.abs(clientRect.right - clientX);\n    const isInsideY = (clientY, clientRect) => clientY >= clientRect.top && clientY <= clientRect.bottom;\n    const collidesY = (r1, r2) => r1.top < r2.bottom && r1.bottom > r2.top;\n    const isOverlapping = (r1, r2) => {\n      const overlap = overlapY(r1, r2) / Math.min(r1.height, r2.height);\n      return collidesY(r1, r2) && overlap > 0.5;\n    };\n    const splitRectsPerAxis = (rects, y) => {\n      const intersectingRects = filter$5(rects, rect => isInsideY(y, rect));\n      return boundingClientRectFromRects(intersectingRects).fold(() => [[], rects], boundingRect => {\n        const {\n          pass: horizontal,\n          fail: vertical\n        } = partition$2(rects, rect => isOverlapping(rect, boundingRect));\n        return [horizontal, vertical];\n      });\n    };\n    const clientInfo = (rect, clientX) => {\n      return {\n        node: rect.node,\n        position: distanceToRectLeft(rect, clientX) < distanceToRectRight(rect, clientX) ? FakeCaretPosition.Before : FakeCaretPosition.After\n      };\n    };\n    const horizontalDistance = (rect, x, _y) => x > rect.left && x < rect.right ? 0 : Math.min(Math.abs(rect.left - x), Math.abs(rect.right - x));\n    const closestChildCaretCandidateNodeRect = (children, clientX, clientY, findCloserTextNode) => {\n      const caretCandidateRect = rect => {\n        if (isCaretCandidate$3(rect.node)) {\n          return Optional.some(rect);\n        } else if (isElement$6(rect.node)) {\n          return closestChildCaretCandidateNodeRect(from(rect.node.childNodes), clientX, clientY, false);\n        } else {\n          return Optional.none();\n        }\n      };\n      const tryFindSecondBestTextNode = (closest, sndClosest, distance) => {\n        return caretCandidateRect(sndClosest).filter(rect => {\n          const deltaDistance = Math.abs(distance(closest, clientX, clientY) - distance(rect, clientX, clientY));\n          return deltaDistance < 2 && isText$a(rect.node);\n        });\n      };\n      const findClosestCaretCandidateNodeRect = (rects, distance) => {\n        const sortedRects = sort(rects, (r1, r2) => distance(r1, clientX, clientY) - distance(r2, clientX, clientY));\n        return findMap(sortedRects, caretCandidateRect).map(closest => {\n          if (findCloserTextNode && !isText$a(closest.node) && sortedRects.length > 1) {\n            return tryFindSecondBestTextNode(closest, sortedRects[1], distance).getOr(closest);\n          } else {\n            return closest;\n          }\n        });\n      };\n      const [horizontalRects, verticalRects] = splitRectsPerAxis(getClientRects(children), clientY);\n      const {\n        pass: above,\n        fail: below\n      } = partition$2(verticalRects, rect => rect.top < clientY);\n      return findClosestCaretCandidateNodeRect(horizontalRects, horizontalDistance).orThunk(() => findClosestCaretCandidateNodeRect(below, distanceToRectEdgeFromXY)).orThunk(() => findClosestCaretCandidateNodeRect(above, distanceToRectEdgeFromXY));\n    };\n    const traverseUp = (rootElm, scope, clientX, clientY) => {\n      const helper = (scope, prevScope) => {\n        const isDragGhostContainer = node => isElement$6(node) && node.classList.contains('mce-drag-container');\n        const childNodesWithoutGhost = filter$5(scope.dom.childNodes, not(isDragGhostContainer));\n        return prevScope.fold(() => closestChildCaretCandidateNodeRect(childNodesWithoutGhost, clientX, clientY, true), prevScope => {\n          const uncheckedChildren = filter$5(childNodesWithoutGhost, node => node !== prevScope.dom);\n          return closestChildCaretCandidateNodeRect(uncheckedChildren, clientX, clientY, true);\n        }).orThunk(() => {\n          const parent = eq(scope, rootElm) ? Optional.none() : parentElement(scope);\n          return parent.bind(newScope => helper(newScope, Optional.some(scope)));\n        });\n      };\n      return helper(scope, Optional.none());\n    };\n    const closestCaretCandidateNodeRect = (root, clientX, clientY) => {\n      const rootElm = SugarElement.fromDom(root);\n      const ownerDoc = documentOrOwner(rootElm);\n      const elementAtPoint = SugarElement.fromPoint(ownerDoc, clientX, clientY).filter(elm => contains(rootElm, elm));\n      const element = elementAtPoint.getOr(rootElm);\n      return traverseUp(rootElm, element, clientX, clientY);\n    };\n    const closestFakeCaretCandidate = (root, clientX, clientY) => closestCaretCandidateNodeRect(root, clientX, clientY).filter(rect => isFakeCaretTarget(rect.node)).map(rect => clientInfo(rect, clientX));\n\n    const getAbsolutePosition = elm => {\n      var _a, _b;\n      const clientRect = elm.getBoundingClientRect();\n      const doc = elm.ownerDocument;\n      const docElem = doc.documentElement;\n      const win = doc.defaultView;\n      return {\n        top: clientRect.top + ((_a = win === null || win === void 0 ? void 0 : win.scrollY) !== null && _a !== void 0 ? _a : 0) - docElem.clientTop,\n        left: clientRect.left + ((_b = win === null || win === void 0 ? void 0 : win.scrollX) !== null && _b !== void 0 ? _b : 0) - docElem.clientLeft\n      };\n    };\n    const getBodyPosition = editor => editor.inline ? getAbsolutePosition(editor.getBody()) : {\n      left: 0,\n      top: 0\n    };\n    const getScrollPosition = editor => {\n      const body = editor.getBody();\n      return editor.inline ? {\n        left: body.scrollLeft,\n        top: body.scrollTop\n      } : {\n        left: 0,\n        top: 0\n      };\n    };\n    const getBodyScroll = editor => {\n      const body = editor.getBody(),\n        docElm = editor.getDoc().documentElement;\n      const inlineScroll = {\n        left: body.scrollLeft,\n        top: body.scrollTop\n      };\n      const iframeScroll = {\n        left: body.scrollLeft || docElm.scrollLeft,\n        top: body.scrollTop || docElm.scrollTop\n      };\n      return editor.inline ? inlineScroll : iframeScroll;\n    };\n    const getMousePosition = (editor, event) => {\n      if (event.target.ownerDocument !== editor.getDoc()) {\n        const iframePosition = getAbsolutePosition(editor.getContentAreaContainer());\n        const scrollPosition = getBodyScroll(editor);\n        return {\n          left: event.pageX - iframePosition.left + scrollPosition.left,\n          top: event.pageY - iframePosition.top + scrollPosition.top\n        };\n      }\n      return {\n        left: event.pageX,\n        top: event.pageY\n      };\n    };\n    const calculatePosition = (bodyPosition, scrollPosition, mousePosition) => ({\n      pageX: mousePosition.left - bodyPosition.left + scrollPosition.left,\n      pageY: mousePosition.top - bodyPosition.top + scrollPosition.top\n    });\n    const calc = (editor, event) => calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event));\n\n    const getTargetProps = target => ({\n      target,\n      srcElement: target\n    });\n    const makeDndEventFromMouseEvent = (type, mouseEvent, target, dataTransfer) => ({\n      ...mouseEvent,\n      dataTransfer,\n      type,\n      ...getTargetProps(target)\n    });\n    const makeDndEvent = (type, target, dataTransfer) => {\n      const fail = die('Function not supported on simulated event.');\n      const event = {\n        bubbles: true,\n        cancelBubble: false,\n        cancelable: true,\n        composed: false,\n        currentTarget: null,\n        defaultPrevented: false,\n        eventPhase: 0,\n        isTrusted: true,\n        returnValue: false,\n        timeStamp: 0,\n        type,\n        composedPath: fail,\n        initEvent: fail,\n        preventDefault: noop,\n        stopImmediatePropagation: noop,\n        stopPropagation: noop,\n        AT_TARGET: window.Event.AT_TARGET,\n        BUBBLING_PHASE: window.Event.BUBBLING_PHASE,\n        CAPTURING_PHASE: window.Event.CAPTURING_PHASE,\n        NONE: window.Event.NONE,\n        altKey: false,\n        button: 0,\n        buttons: 0,\n        clientX: 0,\n        clientY: 0,\n        ctrlKey: false,\n        metaKey: false,\n        movementX: 0,\n        movementY: 0,\n        offsetX: 0,\n        offsetY: 0,\n        pageX: 0,\n        pageY: 0,\n        relatedTarget: null,\n        screenX: 0,\n        screenY: 0,\n        shiftKey: false,\n        x: 0,\n        y: 0,\n        detail: 0,\n        view: null,\n        which: 0,\n        initUIEvent: fail,\n        initMouseEvent: fail,\n        getModifierState: fail,\n        dataTransfer,\n        ...getTargetProps(target)\n      };\n      return event;\n    };\n    const makeDataTransferCopyForDragEvent = (dataTransfer, eventType) => {\n      const copy = cloneDataTransfer(dataTransfer);\n      if (eventType === 'dragstart') {\n        setDragstartEvent(copy);\n        setReadWriteMode(copy);\n      } else if (eventType === 'drop') {\n        setDropEvent(copy);\n        setReadOnlyMode(copy);\n      } else {\n        setDragendEvent(copy);\n        setProtectedMode(copy);\n      }\n      return copy;\n    };\n    const makeDragEvent = (type, target, dataTransfer, mouseEvent) => {\n      const dataTransferForDispatch = makeDataTransferCopyForDragEvent(dataTransfer, type);\n      return isUndefined(mouseEvent) ? makeDndEvent(type, target, dataTransferForDispatch) : makeDndEventFromMouseEvent(type, mouseEvent, target, dataTransferForDispatch);\n    };\n\n    const scrollPixelsPerInterval = 32;\n    const scrollIntervalValue = 100;\n    const mouseRangeToTriggerScrollInsideEditor = 8;\n    const mouseRangeToTriggerScrollOutsideEditor = 16;\n    const isContentEditableFalse$1 = isContentEditableFalse$b;\n    const isContentEditable = or(isContentEditableFalse$1, isContentEditableTrue$3);\n    const isDraggable = (dom, rootElm, elm) => isContentEditableFalse$1(elm) && elm !== rootElm && dom.isEditable(elm.parentElement);\n    const isValidDropTarget = (editor, targetElement, dragElement) => {\n      if (isNullable(targetElement)) {\n        return false;\n      } else if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) {\n        return false;\n      } else {\n        return editor.dom.isEditable(targetElement);\n      }\n    };\n    const createGhost = (editor, elm, width, height) => {\n      const dom = editor.dom;\n      const clonedElm = elm.cloneNode(true);\n      dom.setStyles(clonedElm, {\n        width,\n        height\n      });\n      dom.setAttrib(clonedElm, 'data-mce-selected', null);\n      const ghostElm = dom.create('div', {\n        'class': 'mce-drag-container',\n        'data-mce-bogus': 'all',\n        'unselectable': 'on',\n        'contenteditable': 'false'\n      });\n      dom.setStyles(ghostElm, {\n        position: 'absolute',\n        opacity: 0.5,\n        overflow: 'hidden',\n        border: 0,\n        padding: 0,\n        margin: 0,\n        width,\n        height\n      });\n      dom.setStyles(clonedElm, {\n        margin: 0,\n        boxSizing: 'border-box'\n      });\n      ghostElm.appendChild(clonedElm);\n      return ghostElm;\n    };\n    const appendGhostToBody = (ghostElm, bodyElm) => {\n      if (ghostElm.parentNode !== bodyElm) {\n        bodyElm.appendChild(ghostElm);\n      }\n    };\n    const scrollEditor = (direction, amount) => win => () => {\n      const current = direction === 'left' ? win.scrollX : win.scrollY;\n      win.scroll({\n        [direction]: current + amount,\n        behavior: 'smooth'\n      });\n    };\n    const scrollLeft = scrollEditor('left', -scrollPixelsPerInterval);\n    const scrollRight = scrollEditor('left', scrollPixelsPerInterval);\n    const scrollUp = scrollEditor('top', -scrollPixelsPerInterval);\n    const scrollDown = scrollEditor('top', scrollPixelsPerInterval);\n    const moveGhost = (ghostElm, position, width, height, maxX, maxY, mouseY, mouseX, contentAreaContainer, win, state, mouseEventOriginatedFromWithinTheEditor) => {\n      let overflowX = 0,\n        overflowY = 0;\n      ghostElm.style.left = position.pageX + 'px';\n      ghostElm.style.top = position.pageY + 'px';\n      if (position.pageX + width > maxX) {\n        overflowX = position.pageX + width - maxX;\n      }\n      if (position.pageY + height > maxY) {\n        overflowY = position.pageY + height - maxY;\n      }\n      ghostElm.style.width = width - overflowX + 'px';\n      ghostElm.style.height = height - overflowY + 'px';\n      const clientHeight = contentAreaContainer.clientHeight;\n      const clientWidth = contentAreaContainer.clientWidth;\n      const outerMouseY = mouseY + contentAreaContainer.getBoundingClientRect().top;\n      const outerMouseX = mouseX + contentAreaContainer.getBoundingClientRect().left;\n      state.on(state => {\n        state.intervalId.clear();\n        if (state.dragging && mouseEventOriginatedFromWithinTheEditor) {\n          if (mouseY + mouseRangeToTriggerScrollInsideEditor >= clientHeight) {\n            state.intervalId.set(scrollDown(win));\n          } else if (mouseY - mouseRangeToTriggerScrollInsideEditor <= 0) {\n            state.intervalId.set(scrollUp(win));\n          } else if (mouseX + mouseRangeToTriggerScrollInsideEditor >= clientWidth) {\n            state.intervalId.set(scrollRight(win));\n          } else if (mouseX - mouseRangeToTriggerScrollInsideEditor <= 0) {\n            state.intervalId.set(scrollLeft(win));\n          } else if (outerMouseY + mouseRangeToTriggerScrollOutsideEditor >= window.innerHeight) {\n            state.intervalId.set(scrollDown(window));\n          } else if (outerMouseY - mouseRangeToTriggerScrollOutsideEditor <= 0) {\n            state.intervalId.set(scrollUp(window));\n          } else if (outerMouseX + mouseRangeToTriggerScrollOutsideEditor >= window.innerWidth) {\n            state.intervalId.set(scrollRight(window));\n          } else if (outerMouseX - mouseRangeToTriggerScrollOutsideEditor <= 0) {\n            state.intervalId.set(scrollLeft(window));\n          }\n        }\n      });\n    };\n    const removeElement = elm => {\n      if (elm && elm.parentNode) {\n        elm.parentNode.removeChild(elm);\n      }\n    };\n    const removeElementWithPadding = (dom, elm) => {\n      const parentBlock = dom.getParent(elm.parentNode, dom.isBlock);\n      removeElement(elm);\n      if (parentBlock && parentBlock !== dom.getRoot() && dom.isEmpty(parentBlock)) {\n        fillWithPaddingBr(SugarElement.fromDom(parentBlock));\n      }\n    };\n    const isLeftMouseButtonPressed = e => e.button === 0;\n    const applyRelPos = (state, position) => ({\n      pageX: position.pageX - state.relX,\n      pageY: position.pageY + 5\n    });\n    const start = (state, editor) => e => {\n      if (isLeftMouseButtonPressed(e)) {\n        const ceElm = find$2(editor.dom.getParents(e.target), isContentEditable).getOr(null);\n        if (isNonNullable(ceElm) && isDraggable(editor.dom, editor.getBody(), ceElm)) {\n          const elmPos = editor.dom.getPos(ceElm);\n          const bodyElm = editor.getBody();\n          const docElm = editor.getDoc().documentElement;\n          state.set({\n            element: ceElm,\n            dataTransfer: createDataTransfer(),\n            dragging: false,\n            screenX: e.screenX,\n            screenY: e.screenY,\n            maxX: (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2,\n            maxY: (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2,\n            relX: e.pageX - elmPos.x,\n            relY: e.pageY - elmPos.y,\n            width: ceElm.offsetWidth,\n            height: ceElm.offsetHeight,\n            ghost: createGhost(editor, ceElm, ceElm.offsetWidth, ceElm.offsetHeight),\n            intervalId: repeatable(scrollIntervalValue)\n          });\n        }\n      }\n    };\n    const placeCaretAt = (editor, clientX, clientY) => {\n      editor._selectionOverrides.hideFakeCaret();\n      closestFakeCaretCandidate(editor.getBody(), clientX, clientY).fold(() => editor.selection.placeCaretAt(clientX, clientY), caretInfo => {\n        const range = editor._selectionOverrides.showCaret(1, caretInfo.node, caretInfo.position === FakeCaretPosition.Before, false);\n        if (range) {\n          editor.selection.setRng(range);\n        } else {\n          editor.selection.placeCaretAt(clientX, clientY);\n        }\n      });\n    };\n    const dispatchDragEvent = (editor, type, target, dataTransfer, mouseEvent) => {\n      if (type === 'dragstart') {\n        setHtmlData(dataTransfer, editor.dom.getOuterHTML(target));\n      }\n      const event = makeDragEvent(type, target, dataTransfer, mouseEvent);\n      const args = editor.dispatch(type, event);\n      return args;\n    };\n    const move = (state, editor) => {\n      const throttledPlaceCaretAt = first$1((clientX, clientY) => placeCaretAt(editor, clientX, clientY), 0);\n      editor.on('remove', throttledPlaceCaretAt.cancel);\n      const state_ = state;\n      return e => state.on(state => {\n        const movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY));\n        if (!state.dragging && movement > 10) {\n          const args = dispatchDragEvent(editor, 'dragstart', state.element, state.dataTransfer, e);\n          if (isNonNullable(args.dataTransfer)) {\n            state.dataTransfer = args.dataTransfer;\n          }\n          if (args.isDefaultPrevented()) {\n            return;\n          }\n          state.dragging = true;\n          editor.focus();\n        }\n        if (state.dragging) {\n          const mouseEventOriginatedFromWithinTheEditor = e.currentTarget === editor.getDoc().documentElement;\n          const targetPos = applyRelPos(state, calc(editor, e));\n          appendGhostToBody(state.ghost, editor.getBody());\n          moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY, e.clientY, e.clientX, editor.getContentAreaContainer(), editor.getWin(), state_, mouseEventOriginatedFromWithinTheEditor);\n          throttledPlaceCaretAt.throttle(e.clientX, e.clientY);\n        }\n      });\n    };\n    const getRawTarget = selection => {\n      const sel = selection.getSel();\n      if (isNonNullable(sel)) {\n        const rng = sel.getRangeAt(0);\n        const startContainer = rng.startContainer;\n        return isText$a(startContainer) ? startContainer.parentNode : startContainer;\n      } else {\n        return null;\n      }\n    };\n    const drop = (state, editor) => e => {\n      state.on(state => {\n        var _a;\n        state.intervalId.clear();\n        if (state.dragging) {\n          if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) {\n            const dropTarget = (_a = editor.getDoc().elementFromPoint(e.clientX, e.clientY)) !== null && _a !== void 0 ? _a : editor.getBody();\n            const args = dispatchDragEvent(editor, 'drop', dropTarget, state.dataTransfer, e);\n            if (!args.isDefaultPrevented()) {\n              editor.undoManager.transact(() => {\n                removeElementWithPadding(editor.dom, state.element);\n                getHtmlData(state.dataTransfer).each(content => editor.insertContent(content));\n                editor._selectionOverrides.hideFakeCaret();\n              });\n            }\n          }\n          dispatchDragEvent(editor, 'dragend', editor.getBody(), state.dataTransfer, e);\n        }\n      });\n      removeDragState(state);\n    };\n    const stopDragging = (state, editor, e) => {\n      state.on(state => {\n        state.intervalId.clear();\n        if (state.dragging) {\n          e.fold(() => dispatchDragEvent(editor, 'dragend', state.element, state.dataTransfer), mouseEvent => dispatchDragEvent(editor, 'dragend', state.element, state.dataTransfer, mouseEvent));\n        }\n      });\n      removeDragState(state);\n    };\n    const stop = (state, editor) => e => stopDragging(state, editor, Optional.some(e));\n    const removeDragState = state => {\n      state.on(state => {\n        state.intervalId.clear();\n        removeElement(state.ghost);\n      });\n      state.clear();\n    };\n    const bindFakeDragEvents = editor => {\n      const state = value$2();\n      const pageDom = DOMUtils.DOM;\n      const rootDocument = document;\n      const dragStartHandler = start(state, editor);\n      const dragHandler = move(state, editor);\n      const dropHandler = drop(state, editor);\n      const dragEndHandler = stop(state, editor);\n      editor.on('mousedown', dragStartHandler);\n      editor.on('mousemove', dragHandler);\n      editor.on('mouseup', dropHandler);\n      pageDom.bind(rootDocument, 'mousemove', dragHandler);\n      pageDom.bind(rootDocument, 'mouseup', dragEndHandler);\n      editor.on('remove', () => {\n        pageDom.unbind(rootDocument, 'mousemove', dragHandler);\n        pageDom.unbind(rootDocument, 'mouseup', dragEndHandler);\n      });\n      editor.on('keydown', e => {\n        if (e.keyCode === VK.ESC) {\n          stopDragging(state, editor, Optional.none());\n        }\n      });\n    };\n    const blockUnsupportedFileDrop = editor => {\n      const preventFileDrop = e => {\n        if (!e.isDefaultPrevented()) {\n          const dataTransfer = e.dataTransfer;\n          if (dataTransfer && (contains$2(dataTransfer.types, 'Files') || dataTransfer.files.length > 0)) {\n            e.preventDefault();\n            if (e.type === 'drop') {\n              displayError(editor, 'Dropped file type is not supported');\n            }\n          }\n        }\n      };\n      const preventFileDropIfUIElement = e => {\n        if (isUIElement(editor, e.target)) {\n          preventFileDrop(e);\n        }\n      };\n      const setup = () => {\n        const pageDom = DOMUtils.DOM;\n        const dom = editor.dom;\n        const doc = document;\n        const editorRoot = editor.inline ? editor.getBody() : editor.getDoc();\n        const eventNames = ['drop', 'dragover'];\n        each$e(eventNames, name => {\n          pageDom.bind(doc, name, preventFileDropIfUIElement);\n          dom.bind(editorRoot, name, preventFileDrop);\n        });\n        editor.on('remove', () => {\n          each$e(eventNames, name => {\n            pageDom.unbind(doc, name, preventFileDropIfUIElement);\n            dom.unbind(editorRoot, name, preventFileDrop);\n          });\n        });\n      };\n      editor.on('init', () => {\n        Delay.setEditorTimeout(editor, setup, 0);\n      });\n    };\n    const init$2 = editor => {\n      bindFakeDragEvents(editor);\n      if (shouldBlockUnsupportedDrop(editor)) {\n        blockUnsupportedFileDrop(editor);\n      }\n    };\n\n    const setup$4 = editor => {\n      const renderFocusCaret = first$1(() => {\n        if (!editor.removed && editor.getBody().contains(document.activeElement)) {\n          const rng = editor.selection.getRng();\n          if (rng.collapsed) {\n            const caretRange = renderRangeCaret(editor, rng, false);\n            editor.selection.setRng(caretRange);\n          }\n        }\n      }, 0);\n      editor.on('focus', () => {\n        renderFocusCaret.throttle();\n      });\n      editor.on('blur', () => {\n        renderFocusCaret.cancel();\n      });\n    };\n\n    const setup$3 = editor => {\n      editor.on('init', () => {\n        editor.on('focusin', e => {\n          const target = e.target;\n          if (isMedia$2(target)) {\n            const ceRoot = getContentEditableRoot$1(editor.getBody(), target);\n            const node = isContentEditableFalse$b(ceRoot) ? ceRoot : target;\n            if (editor.selection.getNode() !== node) {\n              selectNode(editor, node).each(rng => editor.selection.setRng(rng));\n            }\n          }\n        });\n      });\n    };\n\n    const isContentEditableFalse = isContentEditableFalse$b;\n    const getContentEditableRoot = (editor, node) => getContentEditableRoot$1(editor.getBody(), node);\n    const SelectionOverrides = editor => {\n      const selection = editor.selection,\n        dom = editor.dom;\n      const rootNode = editor.getBody();\n      const fakeCaret = FakeCaret(editor, rootNode, dom.isBlock, () => hasFocus(editor));\n      const realSelectionId = 'sel-' + dom.uniqueId();\n      const elementSelectionAttr = 'data-mce-selected';\n      let selectedElement;\n      const isFakeSelectionElement = node => isNonNullable(node) && dom.hasClass(node, 'mce-offscreen-selection');\n      const isFakeSelectionTargetElement = node => node !== rootNode && (isContentEditableFalse(node) || isMedia$2(node)) && dom.isChildOf(node, rootNode) && dom.isEditable(node.parentNode);\n      const setRange = range => {\n        if (range) {\n          selection.setRng(range);\n        }\n      };\n      const showCaret = (direction, node, before, scrollIntoView = true) => {\n        const e = editor.dispatch('ShowCaret', {\n          target: node,\n          direction,\n          before\n        });\n        if (e.isDefaultPrevented()) {\n          return null;\n        }\n        if (scrollIntoView) {\n          selection.scrollIntoView(node, direction === -1);\n        }\n        return fakeCaret.show(before, node);\n      };\n      const showBlockCaretContainer = blockCaretContainer => {\n        if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n          showCaretContainerBlock(blockCaretContainer);\n          selection.scrollIntoView(blockCaretContainer);\n        }\n      };\n      const registerEvents = () => {\n        editor.on('click', e => {\n          if (!dom.isEditable(e.target)) {\n            e.preventDefault();\n            editor.focus();\n          }\n        });\n        editor.on('blur NewBlock', removeElementSelection);\n        editor.on('ResizeWindow FullscreenStateChanged', fakeCaret.reposition);\n        editor.on('tap', e => {\n          const targetElm = e.target;\n          const contentEditableRoot = getContentEditableRoot(editor, targetElm);\n          if (isContentEditableFalse(contentEditableRoot)) {\n            e.preventDefault();\n            selectNode(editor, contentEditableRoot).each(setElementSelection);\n          } else if (isFakeSelectionTargetElement(targetElm)) {\n            selectNode(editor, targetElm).each(setElementSelection);\n          }\n        }, true);\n        editor.on('mousedown', e => {\n          const targetElm = e.target;\n          if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !dom.isChildOf(targetElm, rootNode)) {\n            return;\n          }\n          if (!isXYInContentArea(editor, e.clientX, e.clientY)) {\n            return;\n          }\n          removeElementSelection();\n          hideFakeCaret();\n          const closestContentEditable = getContentEditableRoot(editor, targetElm);\n          if (isContentEditableFalse(closestContentEditable)) {\n            e.preventDefault();\n            selectNode(editor, closestContentEditable).each(setElementSelection);\n          } else {\n            closestFakeCaretCandidate(rootNode, e.clientX, e.clientY).each(caretInfo => {\n              e.preventDefault();\n              const range = showCaret(1, caretInfo.node, caretInfo.position === FakeCaretPosition.Before, false);\n              setRange(range);\n              if (isHTMLElement(closestContentEditable)) {\n                closestContentEditable.focus();\n              } else {\n                editor.getBody().focus();\n              }\n            });\n          }\n        });\n        editor.on('keypress', e => {\n          if (VK.modifierPressed(e)) {\n            return;\n          }\n          if (isContentEditableFalse(selection.getNode())) {\n            e.preventDefault();\n          }\n        });\n        editor.on('GetSelectionRange', e => {\n          let rng = e.range;\n          if (selectedElement) {\n            if (!selectedElement.parentNode) {\n              selectedElement = null;\n              return;\n            }\n            rng = rng.cloneRange();\n            rng.selectNode(selectedElement);\n            e.range = rng;\n          }\n        });\n        editor.on('SetSelectionRange', e => {\n          e.range = normalizeVoidElementSelection(e.range);\n          const rng = setElementSelection(e.range, e.forward);\n          if (rng) {\n            e.range = rng;\n          }\n        });\n        const isPasteBin = node => isElement$6(node) && node.id === 'mcepastebin';\n        editor.on('AfterSetSelectionRange', e => {\n          const rng = e.range;\n          const parent = rng.startContainer.parentElement;\n          if (!isRangeInCaretContainer(rng) && !isPasteBin(parent)) {\n            hideFakeCaret();\n          }\n          if (!isFakeSelectionElement(parent)) {\n            removeElementSelection();\n          }\n        });\n        init$2(editor);\n        setup$4(editor);\n        setup$3(editor);\n      };\n      const isWithinCaretContainer = node => isCaretContainer$2(node) || startsWithCaretContainer$1(node) || endsWithCaretContainer$1(node);\n      const isRangeInCaretContainer = rng => isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer);\n      const normalizeVoidElementSelection = rng => {\n        const voidElements = editor.schema.getVoidElements();\n        const newRng = dom.createRng();\n        const startContainer = rng.startContainer;\n        const startOffset = rng.startOffset;\n        const endContainer = rng.endContainer;\n        const endOffset = rng.endOffset;\n        if (has$2(voidElements, startContainer.nodeName.toLowerCase())) {\n          if (startOffset === 0) {\n            newRng.setStartBefore(startContainer);\n          } else {\n            newRng.setStartAfter(startContainer);\n          }\n        } else {\n          newRng.setStart(startContainer, startOffset);\n        }\n        if (has$2(voidElements, endContainer.nodeName.toLowerCase())) {\n          if (endOffset === 0) {\n            newRng.setEndBefore(endContainer);\n          } else {\n            newRng.setEndAfter(endContainer);\n          }\n        } else {\n          newRng.setEnd(endContainer, endOffset);\n        }\n        return newRng;\n      };\n      const setupOffscreenSelection = (node, targetClone) => {\n        const body = SugarElement.fromDom(editor.getBody());\n        const doc = editor.getDoc();\n        const realSelectionContainer = descendant$1(body, '#' + realSelectionId).getOrThunk(() => {\n          const newContainer = SugarElement.fromHtml('<div data-mce-bogus=\"all\" class=\"mce-offscreen-selection\"></div>', doc);\n          set$3(newContainer, 'id', realSelectionId);\n          append$1(body, newContainer);\n          return newContainer;\n        });\n        const newRange = dom.createRng();\n        empty(realSelectionContainer);\n        append(realSelectionContainer, [SugarElement.fromText(nbsp, doc), SugarElement.fromDom(targetClone), SugarElement.fromText(nbsp, doc)]);\n        newRange.setStart(realSelectionContainer.dom.firstChild, 1);\n        newRange.setEnd(realSelectionContainer.dom.lastChild, 0);\n        setAll(realSelectionContainer, {\n          top: dom.getPos(node, editor.getBody()).y + 'px'\n        });\n        focus$1(realSelectionContainer);\n        const sel = selection.getSel();\n        if (sel) {\n          sel.removeAllRanges();\n          sel.addRange(newRange);\n        }\n        return newRange;\n      };\n      const selectElement = elm => {\n        const targetClone = elm.cloneNode(true);\n        const e = editor.dispatch('ObjectSelected', {\n          target: elm,\n          targetClone\n        });\n        if (e.isDefaultPrevented()) {\n          return null;\n        }\n        const range = setupOffscreenSelection(elm, e.targetClone);\n        const nodeElm = SugarElement.fromDom(elm);\n        each$e(descendants(SugarElement.fromDom(editor.getBody()), \"*[\".concat(elementSelectionAttr, \"]\")), elm => {\n          if (!eq(nodeElm, elm)) {\n            remove$a(elm, elementSelectionAttr);\n          }\n        });\n        if (!dom.getAttrib(elm, elementSelectionAttr)) {\n          elm.setAttribute(elementSelectionAttr, '1');\n        }\n        selectedElement = elm;\n        hideFakeCaret();\n        return range;\n      };\n      const setElementSelection = (range, forward) => {\n        if (!range) {\n          return null;\n        }\n        if (range.collapsed) {\n          if (!isRangeInCaretContainer(range)) {\n            const dir = forward ? 1 : -1;\n            const caretPosition = getNormalizedRangeEndPoint(dir, rootNode, range);\n            const beforeNode = caretPosition.getNode(!forward);\n            if (isNonNullable(beforeNode)) {\n              if (isFakeCaretTarget(beforeNode)) {\n                return showCaret(dir, beforeNode, forward ? !caretPosition.isAtEnd() : false, false);\n              }\n              if (isCaretContainerInline(beforeNode) && isContentEditableFalse$b(beforeNode.nextSibling)) {\n                const rng = dom.createRng();\n                rng.setStart(beforeNode, 0);\n                rng.setEnd(beforeNode, 0);\n                return rng;\n              }\n            }\n            const afterNode = caretPosition.getNode(forward);\n            if (isNonNullable(afterNode)) {\n              if (isFakeCaretTarget(afterNode)) {\n                return showCaret(dir, afterNode, forward ? false : !caretPosition.isAtEnd(), false);\n              }\n              if (isCaretContainerInline(afterNode) && isContentEditableFalse$b(afterNode.previousSibling)) {\n                const rng = dom.createRng();\n                rng.setStart(afterNode, 1);\n                rng.setEnd(afterNode, 1);\n                return rng;\n              }\n            }\n          }\n          return null;\n        }\n        let startContainer = range.startContainer;\n        let startOffset = range.startOffset;\n        const endOffset = range.endOffset;\n        if (isText$a(startContainer) && startOffset === 0 && isContentEditableFalse(startContainer.parentNode)) {\n          startContainer = startContainer.parentNode;\n          startOffset = dom.nodeIndex(startContainer);\n          startContainer = startContainer.parentNode;\n        }\n        if (!isElement$6(startContainer)) {\n          return null;\n        }\n        if (endOffset === startOffset + 1 && startContainer === range.endContainer) {\n          const node = startContainer.childNodes[startOffset];\n          if (isFakeSelectionTargetElement(node)) {\n            return selectElement(node);\n          }\n        }\n        return null;\n      };\n      const removeElementSelection = () => {\n        if (selectedElement) {\n          selectedElement.removeAttribute(elementSelectionAttr);\n        }\n        descendant$1(SugarElement.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$5);\n        selectedElement = null;\n      };\n      const destroy = () => {\n        fakeCaret.destroy();\n        selectedElement = null;\n      };\n      const hideFakeCaret = () => {\n        fakeCaret.hide();\n      };\n      if (!isRtc(editor)) {\n        registerEvents();\n      }\n      return {\n        showCaret,\n        showBlockCaretContainer,\n        hideFakeCaret,\n        destroy\n      };\n    };\n\n    const getNormalizedTextOffset = (container, offset) => {\n      let normalizedOffset = offset;\n      for (let node = container.previousSibling; isText$a(node); node = node.previousSibling) {\n        normalizedOffset += node.data.length;\n      }\n      return normalizedOffset;\n    };\n    const generatePath = (dom, root, node, offset, normalized) => {\n      if (isText$a(node) && (offset < 0 || offset > node.data.length)) {\n        return [];\n      }\n      const p = normalized && isText$a(node) ? [getNormalizedTextOffset(node, offset)] : [offset];\n      let current = node;\n      while (current !== root && current.parentNode) {\n        p.push(dom.nodeIndex(current, normalized));\n        current = current.parentNode;\n      }\n      return current === root ? p.reverse() : [];\n    };\n    const generatePathRange = (dom, root, startNode, startOffset, endNode, endOffset, normalized = false) => {\n      const start = generatePath(dom, root, startNode, startOffset, normalized);\n      const end = generatePath(dom, root, endNode, endOffset, normalized);\n      return {\n        start,\n        end\n      };\n    };\n    const resolvePath = (root, path) => {\n      const nodePath = path.slice();\n      const offset = nodePath.pop();\n      if (!isNumber(offset)) {\n        return Optional.none();\n      } else {\n        const resolvedNode = foldl(nodePath, (optNode, index) => optNode.bind(node => Optional.from(node.childNodes[index])), Optional.some(root));\n        return resolvedNode.bind(node => {\n          if (isText$a(node) && (offset < 0 || offset > node.data.length)) {\n            return Optional.none();\n          } else {\n            return Optional.some({\n              node,\n              offset\n            });\n          }\n        });\n      }\n    };\n    const resolvePathRange = (root, range) => resolvePath(root, range.start).bind(({\n      node: startNode,\n      offset: startOffset\n    }) => resolvePath(root, range.end).map(({\n      node: endNode,\n      offset: endOffset\n    }) => {\n      const rng = document.createRange();\n      rng.setStart(startNode, startOffset);\n      rng.setEnd(endNode, endOffset);\n      return rng;\n    }));\n    const generatePathRangeFromRange = (dom, root, range, normalized = false) => generatePathRange(dom, root, range.startContainer, range.startOffset, range.endContainer, range.endOffset, normalized);\n\n    const cleanEmptyNodes = (dom, node, isRoot) => {\n      if (node && dom.isEmpty(node) && !isRoot(node)) {\n        const parent = node.parentNode;\n        dom.remove(node, isText$a(node.firstChild) && isWhitespaceText(node.firstChild.data));\n        cleanEmptyNodes(dom, parent, isRoot);\n      }\n    };\n    const deleteRng = (dom, rng, isRoot, clean = true) => {\n      const startParent = rng.startContainer.parentNode;\n      const endParent = rng.endContainer.parentNode;\n      rng.deleteContents();\n      if (clean && !isRoot(rng.startContainer)) {\n        if (isText$a(rng.startContainer) && rng.startContainer.data.length === 0) {\n          dom.remove(rng.startContainer);\n        }\n        if (isText$a(rng.endContainer) && rng.endContainer.data.length === 0) {\n          dom.remove(rng.endContainer);\n        }\n        cleanEmptyNodes(dom, startParent, isRoot);\n        if (startParent !== endParent) {\n          cleanEmptyNodes(dom, endParent, isRoot);\n        }\n      }\n    };\n    const getParentBlock = (editor, rng) => Optional.from(editor.dom.getParent(rng.startContainer, editor.dom.isBlock));\n    const resolveFromDynamicPatterns = (patternSet, block, beforeText) => {\n      const dynamicPatterns = patternSet.dynamicPatternsLookup({\n        text: beforeText,\n        block\n      });\n      return {\n        ...patternSet,\n        blockPatterns: getBlockPatterns(dynamicPatterns).concat(patternSet.blockPatterns),\n        inlinePatterns: getInlinePatterns(dynamicPatterns).concat(patternSet.inlinePatterns)\n      };\n    };\n    const getBeforeText = (dom, block, node, offset) => {\n      const rng = dom.createRng();\n      rng.setStart(block, 0);\n      rng.setEnd(node, offset);\n      return rng.toString();\n    };\n\n    const startsWithSingleSpace = s => /^\\s[^\\s]/.test(s);\n    const stripPattern = (dom, block, pattern) => {\n      const firstTextNode = textAfter(block, 0, block);\n      firstTextNode.each(spot => {\n        const node = spot.container;\n        scanRight(node, pattern.start.length, block).each(end => {\n          const rng = dom.createRng();\n          rng.setStart(node, 0);\n          rng.setEnd(end.container, end.offset);\n          deleteRng(dom, rng, e => e === block);\n        });\n        const text = SugarElement.fromDom(node);\n        const textContent = get$3(text);\n        if (startsWithSingleSpace(textContent)) {\n          set(text, textContent.slice(1));\n        }\n      });\n    };\n    const applyPattern$1 = (editor, match) => {\n      const dom = editor.dom;\n      const pattern = match.pattern;\n      const rng = resolvePathRange(dom.getRoot(), match.range).getOrDie('Unable to resolve path range');\n      const isBlockFormatName = (name, formatter) => {\n        const formatSet = formatter.get(name);\n        return isArray$1(formatSet) && head(formatSet).exists(format => has$2(format, 'block'));\n      };\n      getParentBlock(editor, rng).each(block => {\n        if (pattern.type === 'block-format') {\n          if (isBlockFormatName(pattern.format, editor.formatter)) {\n            editor.undoManager.transact(() => {\n              stripPattern(editor.dom, block, pattern);\n              editor.formatter.apply(pattern.format);\n            });\n          }\n        } else if (pattern.type === 'block-command') {\n          editor.undoManager.transact(() => {\n            stripPattern(editor.dom, block, pattern);\n            editor.execCommand(pattern.cmd, false, pattern.value);\n          });\n        }\n      });\n      return true;\n    };\n    const sortPatterns$1 = patterns => sort(patterns, (a, b) => b.start.length - a.start.length);\n    const findPattern$1 = (patterns, text) => {\n      const sortedPatterns = sortPatterns$1(patterns);\n      const nuText = text.replace(nbsp, ' ');\n      return find$2(sortedPatterns, pattern => text.indexOf(pattern.start) === 0 || nuText.indexOf(pattern.start) === 0);\n    };\n    const findPatterns$1 = (editor, block, patternSet, normalizedMatches) => {\n      var _a;\n      const dom = editor.dom;\n      const forcedRootBlock = getForcedRootBlock(editor);\n      if (!dom.is(block, forcedRootBlock)) {\n        return [];\n      }\n      const blockText = (_a = block.textContent) !== null && _a !== void 0 ? _a : '';\n      return findPattern$1(patternSet.blockPatterns, blockText).map(pattern => {\n        if (Tools.trim(blockText).length === pattern.start.length) {\n          return [];\n        }\n        return [{\n          pattern,\n          range: generatePathRange(dom, dom.getRoot(), block, 0, block, 0, normalizedMatches)\n        }];\n      }).getOr([]);\n    };\n    const applyMatches$1 = (editor, matches) => {\n      if (matches.length === 0) {\n        return;\n      }\n      const bookmark = editor.selection.getBookmark();\n      each$e(matches, match => applyPattern$1(editor, match));\n      editor.selection.moveToBookmark(bookmark);\n    };\n\n    const newMarker = (dom, id) => dom.create('span', {\n      'data-mce-type': 'bookmark',\n      id\n    });\n    const rangeFromMarker = (dom, marker) => {\n      const rng = dom.createRng();\n      rng.setStartAfter(marker.start);\n      rng.setEndBefore(marker.end);\n      return rng;\n    };\n    const createMarker = (dom, markerPrefix, pathRange) => {\n      const rng = resolvePathRange(dom.getRoot(), pathRange).getOrDie('Unable to resolve path range');\n      const startNode = rng.startContainer;\n      const endNode = rng.endContainer;\n      const textEnd = rng.endOffset === 0 ? endNode : endNode.splitText(rng.endOffset);\n      const textStart = rng.startOffset === 0 ? startNode : startNode.splitText(rng.startOffset);\n      const startParentNode = textStart.parentNode;\n      const endParentNode = textEnd.parentNode;\n      return {\n        prefix: markerPrefix,\n        end: endParentNode.insertBefore(newMarker(dom, markerPrefix + '-end'), textEnd),\n        start: startParentNode.insertBefore(newMarker(dom, markerPrefix + '-start'), textStart)\n      };\n    };\n    const removeMarker = (dom, marker, isRoot) => {\n      cleanEmptyNodes(dom, dom.get(marker.prefix + '-end'), isRoot);\n      cleanEmptyNodes(dom, dom.get(marker.prefix + '-start'), isRoot);\n    };\n\n    const isReplacementPattern = pattern => pattern.start.length === 0;\n    const matchesPattern = patternContent => (element, offset) => {\n      const text = element.data;\n      const searchText = text.substring(0, offset);\n      const startEndIndex = searchText.lastIndexOf(patternContent.charAt(patternContent.length - 1));\n      const startIndex = searchText.lastIndexOf(patternContent);\n      if (startIndex !== -1) {\n        return startIndex + patternContent.length;\n      } else if (startEndIndex !== -1) {\n        return startEndIndex + 1;\n      } else {\n        return -1;\n      }\n    };\n    const findPatternStartFromSpot = (dom, pattern, block, spot) => {\n      const startPattern = pattern.start;\n      const startSpot = repeatLeft(dom, spot.container, spot.offset, matchesPattern(startPattern), block);\n      return startSpot.bind(spot => {\n        var _a, _b;\n        const startPatternIndex = (_b = (_a = block.textContent) === null || _a === void 0 ? void 0 : _a.indexOf(startPattern)) !== null && _b !== void 0 ? _b : -1;\n        const isCompleteMatch = startPatternIndex !== -1 && spot.offset >= startPatternIndex + startPattern.length;\n        if (isCompleteMatch) {\n          const rng = dom.createRng();\n          rng.setStart(spot.container, spot.offset - startPattern.length);\n          rng.setEnd(spot.container, spot.offset);\n          return Optional.some(rng);\n        } else {\n          const offset = spot.offset - startPattern.length;\n          return scanLeft(spot.container, offset, block).map(nextSpot => {\n            const rng = dom.createRng();\n            rng.setStart(nextSpot.container, nextSpot.offset);\n            rng.setEnd(spot.container, spot.offset);\n            return rng;\n          }).filter(rng => rng.toString() === startPattern).orThunk(() => findPatternStartFromSpot(dom, pattern, block, point(spot.container, 0)));\n        }\n      });\n    };\n    const findPatternStart = (dom, pattern, node, offset, block, requireGap = false) => {\n      if (pattern.start.length === 0 && !requireGap) {\n        const rng = dom.createRng();\n        rng.setStart(node, offset);\n        rng.setEnd(node, offset);\n        return Optional.some(rng);\n      }\n      return textBefore(node, offset, block).bind(spot => {\n        const start = findPatternStartFromSpot(dom, pattern, block, spot);\n        return start.bind(startRange => {\n          var _a;\n          if (requireGap) {\n            if (startRange.endContainer === spot.container && startRange.endOffset === spot.offset) {\n              return Optional.none();\n            } else if (spot.offset === 0 && ((_a = startRange.endContainer.textContent) === null || _a === void 0 ? void 0 : _a.length) === startRange.endOffset) {\n              return Optional.none();\n            }\n          }\n          return Optional.some(startRange);\n        });\n      });\n    };\n    const findPattern = (editor, block, details, normalizedMatches) => {\n      const dom = editor.dom;\n      const root = dom.getRoot();\n      const pattern = details.pattern;\n      const endNode = details.position.container;\n      const endOffset = details.position.offset;\n      return scanLeft(endNode, endOffset - details.pattern.end.length, block).bind(spot => {\n        const endPathRng = generatePathRange(dom, root, spot.container, spot.offset, endNode, endOffset, normalizedMatches);\n        if (isReplacementPattern(pattern)) {\n          return Optional.some({\n            matches: [{\n              pattern,\n              startRng: endPathRng,\n              endRng: endPathRng\n            }],\n            position: spot\n          });\n        } else {\n          const resultsOpt = findPatternsRec(editor, details.remainingPatterns, spot.container, spot.offset, block, normalizedMatches);\n          const results = resultsOpt.getOr({\n            matches: [],\n            position: spot\n          });\n          const pos = results.position;\n          const start = findPatternStart(dom, pattern, pos.container, pos.offset, block, resultsOpt.isNone());\n          return start.map(startRng => {\n            const startPathRng = generatePathRangeFromRange(dom, root, startRng, normalizedMatches);\n            return {\n              matches: results.matches.concat([{\n                pattern,\n                startRng: startPathRng,\n                endRng: endPathRng\n              }]),\n              position: point(startRng.startContainer, startRng.startOffset)\n            };\n          });\n        }\n      });\n    };\n    const findPatternsRec = (editor, patterns, node, offset, block, normalizedMatches) => {\n      const dom = editor.dom;\n      return textBefore(node, offset, dom.getRoot()).bind(endSpot => {\n        const text = getBeforeText(dom, block, node, offset);\n        for (let i = 0; i < patterns.length; i++) {\n          const pattern = patterns[i];\n          if (!endsWith(text, pattern.end)) {\n            continue;\n          }\n          const patternsWithoutCurrent = patterns.slice();\n          patternsWithoutCurrent.splice(i, 1);\n          const result = findPattern(editor, block, {\n            pattern,\n            remainingPatterns: patternsWithoutCurrent,\n            position: endSpot\n          }, normalizedMatches);\n          if (result.isNone() && offset > 0) {\n            return findPatternsRec(editor, patterns, node, offset - 1, block, normalizedMatches);\n          }\n          if (result.isSome()) {\n            return result;\n          }\n        }\n        return Optional.none();\n      });\n    };\n    const applyPattern = (editor, pattern, patternRange) => {\n      editor.selection.setRng(patternRange);\n      if (pattern.type === 'inline-format') {\n        each$e(pattern.format, format => {\n          editor.formatter.apply(format);\n        });\n      } else {\n        editor.execCommand(pattern.cmd, false, pattern.value);\n      }\n    };\n    const applyReplacementPattern = (editor, pattern, marker, isRoot) => {\n      const markerRange = rangeFromMarker(editor.dom, marker);\n      deleteRng(editor.dom, markerRange, isRoot);\n      applyPattern(editor, pattern, markerRange);\n    };\n    const applyPatternWithContent = (editor, pattern, startMarker, endMarker, isRoot) => {\n      const dom = editor.dom;\n      const markerEndRange = rangeFromMarker(dom, endMarker);\n      const markerStartRange = rangeFromMarker(dom, startMarker);\n      deleteRng(dom, markerStartRange, isRoot);\n      deleteRng(dom, markerEndRange, isRoot);\n      const patternMarker = {\n        prefix: startMarker.prefix,\n        start: startMarker.end,\n        end: endMarker.start\n      };\n      const patternRange = rangeFromMarker(dom, patternMarker);\n      applyPattern(editor, pattern, patternRange);\n    };\n    const addMarkers = (dom, matches) => {\n      const markerPrefix = generate$1('mce_textpattern');\n      const matchesWithEnds = foldr(matches, (acc, match) => {\n        const endMarker = createMarker(dom, markerPrefix + \"_end\".concat(acc.length), match.endRng);\n        return acc.concat([{\n          ...match,\n          endMarker\n        }]);\n      }, []);\n      return foldr(matchesWithEnds, (acc, match) => {\n        const idx = matchesWithEnds.length - acc.length - 1;\n        const startMarker = isReplacementPattern(match.pattern) ? match.endMarker : createMarker(dom, markerPrefix + \"_start\".concat(idx), match.startRng);\n        return acc.concat([{\n          ...match,\n          startMarker\n        }]);\n      }, []);\n    };\n    const sortPatterns = patterns => sort(patterns, (a, b) => b.end.length - a.end.length);\n    const getBestMatches = (matches, matchesWithSortedPatterns) => {\n      const hasSameMatches = forall(matches, match => exists(matchesWithSortedPatterns, sortedMatch => match.pattern.start === sortedMatch.pattern.start && match.pattern.end === sortedMatch.pattern.end));\n      if (matches.length === matchesWithSortedPatterns.length) {\n        if (hasSameMatches) {\n          return matches;\n        } else {\n          return matchesWithSortedPatterns;\n        }\n      }\n      return matches.length > matchesWithSortedPatterns.length ? matches : matchesWithSortedPatterns;\n    };\n    const findPatterns = (editor, block, node, offset, patternSet, normalizedMatches) => {\n      const matches = findPatternsRec(editor, patternSet.inlinePatterns, node, offset, block, normalizedMatches).fold(() => [], result => result.matches);\n      const matchesWithSortedPatterns = findPatternsRec(editor, sortPatterns(patternSet.inlinePatterns), node, offset, block, normalizedMatches).fold(() => [], result => result.matches);\n      return getBestMatches(matches, matchesWithSortedPatterns);\n    };\n    const applyMatches = (editor, matches) => {\n      if (matches.length === 0) {\n        return;\n      }\n      const dom = editor.dom;\n      const bookmark = editor.selection.getBookmark();\n      const matchesWithMarkers = addMarkers(dom, matches);\n      each$e(matchesWithMarkers, match => {\n        const block = dom.getParent(match.startMarker.start, dom.isBlock);\n        const isRoot = node => node === block;\n        if (isReplacementPattern(match.pattern)) {\n          applyReplacementPattern(editor, match.pattern, match.endMarker, isRoot);\n        } else {\n          applyPatternWithContent(editor, match.pattern, match.startMarker, match.endMarker, isRoot);\n        }\n        removeMarker(dom, match.endMarker, isRoot);\n        removeMarker(dom, match.startMarker, isRoot);\n      });\n      editor.selection.moveToBookmark(bookmark);\n    };\n\n    const handleEnter = (editor, patternSet) => {\n      const rng = editor.selection.getRng();\n      return getParentBlock(editor, rng).map(block => {\n        var _a;\n        const offset = Math.max(0, rng.startOffset);\n        const dynamicPatternSet = resolveFromDynamicPatterns(patternSet, block, (_a = block.textContent) !== null && _a !== void 0 ? _a : '');\n        const inlineMatches = findPatterns(editor, block, rng.startContainer, offset, dynamicPatternSet, true);\n        const blockMatches = findPatterns$1(editor, block, dynamicPatternSet, true);\n        if (blockMatches.length > 0 || inlineMatches.length > 0) {\n          editor.undoManager.add();\n          editor.undoManager.extra(() => {\n            editor.execCommand('mceInsertNewLine');\n          }, () => {\n            insert$5(editor);\n            applyMatches(editor, inlineMatches);\n            applyMatches$1(editor, blockMatches);\n            const range = editor.selection.getRng();\n            const spot = textBefore(range.startContainer, range.startOffset, editor.dom.getRoot());\n            editor.execCommand('mceInsertNewLine');\n            spot.each(s => {\n              const node = s.container;\n              if (node.data.charAt(s.offset - 1) === zeroWidth) {\n                node.deleteData(s.offset - 1, 1);\n                cleanEmptyNodes(editor.dom, node.parentNode, e => e === editor.dom.getRoot());\n              }\n            });\n          });\n          return true;\n        }\n        return false;\n      }).getOr(false);\n    };\n    const handleInlineKey = (editor, patternSet) => {\n      const rng = editor.selection.getRng();\n      getParentBlock(editor, rng).map(block => {\n        const offset = Math.max(0, rng.startOffset - 1);\n        const beforeText = getBeforeText(editor.dom, block, rng.startContainer, offset);\n        const dynamicPatternSet = resolveFromDynamicPatterns(patternSet, block, beforeText);\n        const inlineMatches = findPatterns(editor, block, rng.startContainer, offset, dynamicPatternSet, false);\n        if (inlineMatches.length > 0) {\n          editor.undoManager.transact(() => {\n            applyMatches(editor, inlineMatches);\n          });\n        }\n      });\n    };\n    const checkKeyEvent = (codes, event, predicate) => {\n      for (let i = 0; i < codes.length; i++) {\n        if (predicate(codes[i], event)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const checkKeyCode = (codes, event) => checkKeyEvent(codes, event, (code, event) => {\n      return code === event.keyCode && !VK.modifierPressed(event);\n    });\n    const checkCharCode = (chars, event) => checkKeyEvent(chars, event, (chr, event) => {\n      return chr.charCodeAt(0) === event.charCode;\n    });\n\n    const setup$2 = editor => {\n      const charCodes = [',', '.', ';', ':', '!', '?'];\n      const keyCodes = [32];\n      const getPatternSet = () => createPatternSet(getTextPatterns(editor), getTextPatternsLookup(editor));\n      const hasDynamicPatterns = () => hasTextPatternsLookup(editor);\n      editor.on('keydown', e => {\n        if (e.keyCode === 13 && !VK.modifierPressed(e) && editor.selection.isCollapsed()) {\n          const patternSet = getPatternSet();\n          const hasPatterns = patternSet.inlinePatterns.length > 0 || patternSet.blockPatterns.length > 0 || hasDynamicPatterns();\n          if (hasPatterns && handleEnter(editor, patternSet)) {\n            e.preventDefault();\n          }\n        }\n      }, true);\n      const handleInlineTrigger = () => {\n        if (editor.selection.isCollapsed()) {\n          const patternSet = getPatternSet();\n          const hasPatterns = patternSet.inlinePatterns.length > 0 || hasDynamicPatterns();\n          if (hasPatterns) {\n            handleInlineKey(editor, patternSet);\n          }\n        }\n      };\n      editor.on('keyup', e => {\n        if (checkKeyCode(keyCodes, e)) {\n          handleInlineTrigger();\n        }\n      });\n      editor.on('keypress', e => {\n        if (checkCharCode(charCodes, e)) {\n          Delay.setEditorTimeout(editor, handleInlineTrigger);\n        }\n      });\n    };\n\n    const setup$1 = editor => {\n      setup$2(editor);\n    };\n\n    const Quirks = editor => {\n      const each = Tools.each;\n      const BACKSPACE = VK.BACKSPACE,\n        DELETE = VK.DELETE,\n        dom = editor.dom,\n        selection = editor.selection,\n        parser = editor.parser;\n      const browser = Env.browser;\n      const isGecko = browser.isFirefox();\n      const isWebKit = browser.isChromium() || browser.isSafari();\n      const isiOS = Env.deviceType.isiPhone() || Env.deviceType.isiPad();\n      const isMac = Env.os.isMacOS() || Env.os.isiOS();\n      const setEditorCommandState = (cmd, state) => {\n        try {\n          editor.getDoc().execCommand(cmd, false, String(state));\n        } catch (ex) {}\n      };\n      const isDefaultPrevented = e => {\n        return e.isDefaultPrevented();\n      };\n      const emptyEditorWhenDeleting = () => {\n        const serializeRng = rng => {\n          const body = dom.create('body');\n          const contents = rng.cloneContents();\n          body.appendChild(contents);\n          return selection.serializer.serialize(body, {\n            format: 'html'\n          });\n        };\n        const allContentsSelected = rng => {\n          const selection = serializeRng(rng);\n          const allRng = dom.createRng();\n          allRng.selectNode(editor.getBody());\n          const allSelection = serializeRng(allRng);\n          return selection === allSelection;\n        };\n        editor.on('keydown', e => {\n          const keyCode = e.keyCode;\n          if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE) && editor.selection.isEditable()) {\n            const isCollapsed = editor.selection.isCollapsed();\n            const body = editor.getBody();\n            if (isCollapsed && !isEmpty$2(SugarElement.fromDom(body))) {\n              return;\n            }\n            if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {\n              return;\n            }\n            e.preventDefault();\n            editor.setContent('');\n            if (body.firstChild && dom.isBlock(body.firstChild)) {\n              editor.selection.setCursorLocation(body.firstChild, 0);\n            } else {\n              editor.selection.setCursorLocation(body, 0);\n            }\n            editor.nodeChanged();\n          }\n        });\n      };\n      const selectAll = () => {\n        editor.shortcuts.add('meta+a', null, 'SelectAll');\n      };\n      const documentElementEditingFocus = () => {\n        if (!editor.inline) {\n          dom.bind(editor.getDoc(), 'mousedown mouseup', e => {\n            let rng;\n            if (e.target === editor.getDoc().documentElement) {\n              rng = selection.getRng();\n              editor.getBody().focus();\n              if (e.type === 'mousedown') {\n                if (isCaretContainer$2(rng.startContainer)) {\n                  return;\n                }\n                selection.placeCaretAt(e.clientX, e.clientY);\n              } else {\n                selection.setRng(rng);\n              }\n            }\n          });\n        }\n      };\n      const removeHrOnBackspace = () => {\n        editor.on('keydown', e => {\n          if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n            if (!editor.getBody().getElementsByTagName('hr').length) {\n              return;\n            }\n            if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n              const node = selection.getNode();\n              const previousSibling = node.previousSibling;\n              if (node.nodeName === 'HR') {\n                dom.remove(node);\n                e.preventDefault();\n                return;\n              }\n              if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') {\n                dom.remove(previousSibling);\n                e.preventDefault();\n              }\n            }\n          }\n        });\n      };\n      const focusBody = () => {\n        if (!Range.prototype.getClientRects) {\n          editor.on('mousedown', e => {\n            if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') {\n              const body = editor.getBody();\n              body.blur();\n              Delay.setEditorTimeout(editor, () => {\n                body.focus();\n              });\n            }\n          });\n        }\n      };\n      const selectControlElements = () => {\n        const visualAidsAnchorClass = getVisualAidsAnchorClass(editor);\n        editor.on('click', e => {\n          const target = e.target;\n          if (/^(IMG|HR)$/.test(target.nodeName) && dom.isEditable(target)) {\n            e.preventDefault();\n            editor.selection.select(target);\n            editor.nodeChanged();\n          }\n          if (target.nodeName === 'A' && dom.hasClass(target, visualAidsAnchorClass) && target.childNodes.length === 0 && dom.isEditable(target.parentNode)) {\n            e.preventDefault();\n            selection.select(target);\n          }\n        });\n      };\n      const removeStylesWhenDeletingAcrossBlockElements = () => {\n        const getAttributeApplyFunction = () => {\n          const template = dom.getAttribs(selection.getStart().cloneNode(false));\n          return () => {\n            const target = selection.getStart();\n            if (target !== editor.getBody()) {\n              dom.setAttrib(target, 'style', null);\n              each(template, attr => {\n                target.setAttributeNode(attr.cloneNode(true));\n              });\n            }\n          };\n        };\n        const isSelectionAcrossElements = () => {\n          return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock);\n        };\n        editor.on('keypress', e => {\n          let applyAttributes;\n          if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) {\n            applyAttributes = getAttributeApplyFunction();\n            editor.getDoc().execCommand('delete', false);\n            applyAttributes();\n            e.preventDefault();\n            return false;\n          } else {\n            return true;\n          }\n        });\n        dom.bind(editor.getDoc(), 'cut', e => {\n          if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {\n            const applyAttributes = getAttributeApplyFunction();\n            Delay.setEditorTimeout(editor, () => {\n              applyAttributes();\n            });\n          }\n        });\n      };\n      const disableBackspaceIntoATable = () => {\n        editor.on('keydown', e => {\n          if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n            if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n              const previousSibling = selection.getNode().previousSibling;\n              if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') {\n                e.preventDefault();\n                return false;\n              }\n            }\n          }\n          return true;\n        });\n      };\n      const removeBlockQuoteOnBackSpace = () => {\n        editor.on('keydown', e => {\n          if (isDefaultPrevented(e) || e.keyCode !== VK.BACKSPACE) {\n            return;\n          }\n          let rng = selection.getRng();\n          const container = rng.startContainer;\n          const offset = rng.startOffset;\n          const root = dom.getRoot();\n          let parent = container;\n          if (!rng.collapsed || offset !== 0) {\n            return;\n          }\n          while (parent.parentNode && parent.parentNode.firstChild === parent && parent.parentNode !== root) {\n            parent = parent.parentNode;\n          }\n          if (parent.nodeName === 'BLOCKQUOTE') {\n            editor.formatter.toggle('blockquote', undefined, parent);\n            rng = dom.createRng();\n            rng.setStart(container, 0);\n            rng.setEnd(container, 0);\n            selection.setRng(rng);\n          }\n        });\n      };\n      const setGeckoEditingOptions = () => {\n        const setOpts = () => {\n          setEditorCommandState('StyleWithCSS', false);\n          setEditorCommandState('enableInlineTableEditing', false);\n          if (!getObjectResizing(editor)) {\n            setEditorCommandState('enableObjectResizing', false);\n          }\n        };\n        if (!isReadOnly$1(editor)) {\n          editor.on('BeforeExecCommand mousedown', setOpts);\n        }\n      };\n      const addBrAfterLastLinks = () => {\n        const fixLinks = () => {\n          each(dom.select('a:not([data-mce-block])'), node => {\n            var _a;\n            let parentNode = node.parentNode;\n            const root = dom.getRoot();\n            if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.lastChild) === node) {\n              while (parentNode && !dom.isBlock(parentNode)) {\n                if (((_a = parentNode.parentNode) === null || _a === void 0 ? void 0 : _a.lastChild) !== parentNode || parentNode === root) {\n                  return;\n                }\n                parentNode = parentNode.parentNode;\n              }\n              dom.add(parentNode, 'br', {\n                'data-mce-bogus': 1\n              });\n            }\n          });\n        };\n        editor.on('SetContent ExecCommand', e => {\n          if (e.type === 'setcontent' || e.command === 'mceInsertLink') {\n            fixLinks();\n          }\n        });\n      };\n      const setDefaultBlockType = () => {\n        editor.on('init', () => {\n          setEditorCommandState('DefaultParagraphSeparator', getForcedRootBlock(editor));\n        });\n      };\n      const isAllContentSelected = editor => {\n        const body = editor.getBody();\n        const rng = editor.selection.getRng();\n        return rng.startContainer === rng.endContainer && rng.startContainer === body && rng.startOffset === 0 && rng.endOffset === body.childNodes.length;\n      };\n      const normalizeSelection = () => {\n        editor.on('keyup focusin mouseup', e => {\n          if (!VK.modifierPressed(e) && !isAllContentSelected(editor)) {\n            selection.normalize();\n          }\n        }, true);\n      };\n      const showBrokenImageIcon = () => {\n        editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}');\n      };\n      const restoreFocusOnKeyDown = () => {\n        if (!editor.inline) {\n          editor.on('keydown', () => {\n            if (document.activeElement === document.body) {\n              editor.getWin().focus();\n            }\n          });\n        }\n      };\n      const bodyHeight = () => {\n        if (!editor.inline) {\n          editor.contentStyles.push('body {min-height: 150px}');\n          editor.on('click', e => {\n            let rng;\n            if (e.target.nodeName === 'HTML') {\n              rng = editor.selection.getRng();\n              editor.getBody().focus();\n              editor.selection.setRng(rng);\n              editor.selection.normalize();\n              editor.nodeChanged();\n            }\n          });\n        }\n      };\n      const blockCmdArrowNavigation = () => {\n        if (isMac) {\n          editor.on('keydown', e => {\n            if (VK.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) {\n              e.preventDefault();\n              const selection = editor.selection.getSel();\n              selection.modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary');\n            }\n          });\n        }\n      };\n      const tapLinksAndImages = () => {\n        editor.on('click', e => {\n          let elm = e.target;\n          do {\n            if (elm.tagName === 'A') {\n              e.preventDefault();\n              return;\n            }\n          } while (elm = elm.parentNode);\n        });\n        editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');\n      };\n      const blockFormSubmitInsideEditor = () => {\n        editor.on('init', () => {\n          editor.dom.bind(editor.getBody(), 'submit', e => {\n            e.preventDefault();\n          });\n        });\n      };\n      const removeAppleInterchangeBrs = () => {\n        parser.addNodeFilter('br', nodes => {\n          let i = nodes.length;\n          while (i--) {\n            if (nodes[i].attr('class') === 'Apple-interchange-newline') {\n              nodes[i].remove();\n            }\n          }\n        });\n      };\n      const refreshContentEditable = noop;\n      const isHidden = () => {\n        if (!isGecko || editor.removed) {\n          return false;\n        }\n        const sel = editor.selection.getSel();\n        return !sel || !sel.rangeCount || sel.rangeCount === 0;\n      };\n      const setupRtc = () => {\n        if (isWebKit) {\n          documentElementEditingFocus();\n          selectControlElements();\n          blockFormSubmitInsideEditor();\n          selectAll();\n          if (isiOS) {\n            restoreFocusOnKeyDown();\n            bodyHeight();\n            tapLinksAndImages();\n          }\n        }\n        if (isGecko) {\n          focusBody();\n          setGeckoEditingOptions();\n          showBrokenImageIcon();\n          blockCmdArrowNavigation();\n        }\n      };\n      const dropDragEndEvent = () => {\n        editor.on('drop', event => {\n          var _a;\n          const data = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData('text/html');\n          if (isString(data) && /^<img[^>]*>$/.test(data)) {\n            editor.dispatch('dragend', new window.DragEvent('dragend', event));\n          }\n        });\n      };\n      const setup = () => {\n        removeBlockQuoteOnBackSpace();\n        emptyEditorWhenDeleting();\n        if (!Env.windowsPhone) {\n          normalizeSelection();\n        }\n        if (isWebKit) {\n          documentElementEditingFocus();\n          selectControlElements();\n          setDefaultBlockType();\n          blockFormSubmitInsideEditor();\n          disableBackspaceIntoATable();\n          removeAppleInterchangeBrs();\n          if (isiOS) {\n            restoreFocusOnKeyDown();\n            bodyHeight();\n            tapLinksAndImages();\n          } else {\n            selectAll();\n          }\n        }\n        if (isGecko) {\n          removeHrOnBackspace();\n          focusBody();\n          removeStylesWhenDeletingAcrossBlockElements();\n          setGeckoEditingOptions();\n          addBrAfterLastLinks();\n          showBrokenImageIcon();\n          blockCmdArrowNavigation();\n          disableBackspaceIntoATable();\n          dropDragEndEvent();\n        }\n      };\n      if (isRtc(editor)) {\n        setupRtc();\n      } else {\n        setup();\n      }\n      return {\n        refreshContentEditable,\n        isHidden\n      };\n    };\n\n    const DOM$6 = DOMUtils.DOM;\n    const appendStyle = (editor, text) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      const container = getStyleContainer(getRootNode(body));\n      const style = SugarElement.fromTag('style');\n      set$3(style, 'type', 'text/css');\n      append$1(style, SugarElement.fromText(text));\n      append$1(container, style);\n      editor.on('remove', () => {\n        remove$5(style);\n      });\n    };\n    const getRootName = editor => editor.inline ? editor.getElement().nodeName.toLowerCase() : undefined;\n    const removeUndefined = obj => filter$4(obj, v => isUndefined(v) === false);\n    const mkParserSettings = editor => {\n      const getOption = editor.options.get;\n      const blobCache = editor.editorUpload.blobCache;\n      return removeUndefined({\n        allow_conditional_comments: getOption('allow_conditional_comments'),\n        allow_html_data_urls: getOption('allow_html_data_urls'),\n        allow_svg_data_urls: getOption('allow_svg_data_urls'),\n        allow_html_in_named_anchor: getOption('allow_html_in_named_anchor'),\n        allow_script_urls: getOption('allow_script_urls'),\n        allow_unsafe_link_target: getOption('allow_unsafe_link_target'),\n        convert_unsafe_embeds: getOption('convert_unsafe_embeds'),\n        convert_fonts_to_spans: getOption('convert_fonts_to_spans'),\n        fix_list_elements: getOption('fix_list_elements'),\n        font_size_legacy_values: getOption('font_size_legacy_values'),\n        forced_root_block: getOption('forced_root_block'),\n        forced_root_block_attrs: getOption('forced_root_block_attrs'),\n        preserve_cdata: getOption('preserve_cdata'),\n        inline_styles: getOption('inline_styles'),\n        root_name: getRootName(editor),\n        sandbox_iframes: getOption('sandbox_iframes'),\n        sanitize: getOption('xss_sanitization'),\n        validate: true,\n        blob_cache: blobCache,\n        document: editor.getDoc()\n      });\n    };\n    const mkSchemaSettings = editor => {\n      const getOption = editor.options.get;\n      return removeUndefined({\n        custom_elements: getOption('custom_elements'),\n        extended_valid_elements: getOption('extended_valid_elements'),\n        invalid_elements: getOption('invalid_elements'),\n        invalid_styles: getOption('invalid_styles'),\n        schema: getOption('schema'),\n        valid_children: getOption('valid_children'),\n        valid_classes: getOption('valid_classes'),\n        valid_elements: getOption('valid_elements'),\n        valid_styles: getOption('valid_styles'),\n        verify_html: getOption('verify_html'),\n        padd_empty_block_inline_children: getOption('format_empty_lines')\n      });\n    };\n    const mkSerializerSettings = editor => {\n      const getOption = editor.options.get;\n      return {\n        ...mkParserSettings(editor),\n        ...mkSchemaSettings(editor),\n        ...removeUndefined({\n          remove_trailing_brs: getOption('remove_trailing_brs'),\n          pad_empty_with_br: getOption('pad_empty_with_br'),\n          url_converter: getOption('url_converter'),\n          url_converter_scope: getOption('url_converter_scope'),\n          element_format: getOption('element_format'),\n          entities: getOption('entities'),\n          entity_encoding: getOption('entity_encoding'),\n          indent: getOption('indent'),\n          indent_after: getOption('indent_after'),\n          indent_before: getOption('indent_before')\n        })\n      };\n    };\n    const createParser = editor => {\n      const parser = DomParser(mkParserSettings(editor), editor.schema);\n      parser.addAttributeFilter('src,href,style,tabindex', (nodes, name) => {\n        const dom = editor.dom;\n        const internalName = 'data-mce-' + name;\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          let value = node.attr(name);\n          if (value && !node.attr(internalName)) {\n            if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) {\n              continue;\n            }\n            if (name === 'style') {\n              value = dom.serializeStyle(dom.parseStyle(value), node.name);\n              if (!value.length) {\n                value = null;\n              }\n              node.attr(internalName, value);\n              node.attr(name, value);\n            } else if (name === 'tabindex') {\n              node.attr(internalName, value);\n              node.attr(name, null);\n            } else {\n              node.attr(internalName, editor.convertURL(value, name, node.name));\n            }\n          }\n        }\n      });\n      parser.addNodeFilter('script', nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          const type = node.attr('type') || 'no/type';\n          if (type.indexOf('mce-') !== 0) {\n            node.attr('type', 'mce-' + type);\n          }\n        }\n      });\n      if (shouldPreserveCData(editor)) {\n        parser.addNodeFilter('#cdata', nodes => {\n          var _a;\n          let i = nodes.length;\n          while (i--) {\n            const node = nodes[i];\n            node.type = 8;\n            node.name = '#comment';\n            node.value = '[CDATA[' + editor.dom.encode((_a = node.value) !== null && _a !== void 0 ? _a : '') + ']]';\n          }\n        });\n      }\n      parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', nodes => {\n        let i = nodes.length;\n        const nonEmptyElements = editor.schema.getNonEmptyElements();\n        while (i--) {\n          const node = nodes[i];\n          if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) {\n            node.append(new AstNode('br', 1));\n          }\n        }\n      });\n      return parser;\n    };\n    const autoFocus = editor => {\n      const autoFocus = getAutoFocus(editor);\n      if (autoFocus) {\n        Delay.setEditorTimeout(editor, () => {\n          let focusEditor;\n          if (autoFocus === true) {\n            focusEditor = editor;\n          } else {\n            focusEditor = editor.editorManager.get(autoFocus);\n          }\n          if (focusEditor && !focusEditor.destroyed) {\n            focusEditor.focus();\n            focusEditor.selection.scrollIntoView();\n          }\n        }, 100);\n      }\n    };\n    const moveSelectionToFirstCaretPosition = editor => {\n      const root = editor.dom.getRoot();\n      if (!editor.inline && (!hasAnyRanges(editor) || editor.selection.getStart(true) === root)) {\n        firstPositionIn(root).each(pos => {\n          const node = pos.getNode();\n          const caretPos = isTable$2(node) ? firstPositionIn(node).getOr(pos) : pos;\n          editor.selection.setRng(caretPos.toRange());\n        });\n      }\n    };\n    const initEditor = editor => {\n      editor.bindPendingEventDelegates();\n      editor.initialized = true;\n      fireInit(editor);\n      editor.focus(true);\n      moveSelectionToFirstCaretPosition(editor);\n      editor.nodeChanged({\n        initial: true\n      });\n      const initInstanceCallback = getInitInstanceCallback(editor);\n      if (isFunction(initInstanceCallback)) {\n        initInstanceCallback.call(editor, editor);\n      }\n      autoFocus(editor);\n    };\n    const getStyleSheetLoader$1 = editor => editor.inline ? editor.ui.styleSheetLoader : editor.dom.styleSheetLoader;\n    const makeStylesheetLoadingPromises = (editor, css, framedFonts) => {\n      const {\n        pass: bundledCss,\n        fail: normalCss\n      } = partition$2(css, name => tinymce.Resource.has(toContentSkinResourceName(name)));\n      const bundledPromises = bundledCss.map(url => {\n        const css = tinymce.Resource.get(toContentSkinResourceName(url));\n        if (isString(css)) {\n          return Promise.resolve(getStyleSheetLoader$1(editor).loadRawCss(url, css));\n        }\n        return Promise.resolve();\n      });\n      const promises = [...bundledPromises, getStyleSheetLoader$1(editor).loadAll(normalCss)];\n      if (editor.inline) {\n        return promises;\n      } else {\n        return promises.concat([editor.ui.styleSheetLoader.loadAll(framedFonts)]);\n      }\n    };\n    const loadContentCss = editor => {\n      const styleSheetLoader = getStyleSheetLoader$1(editor);\n      const fontCss = getFontCss(editor);\n      const css = editor.contentCSS;\n      const removeCss = () => {\n        styleSheetLoader.unloadAll(css);\n        if (!editor.inline) {\n          editor.ui.styleSheetLoader.unloadAll(fontCss);\n        }\n      };\n      const loaded = () => {\n        if (editor.removed) {\n          removeCss();\n        } else {\n          editor.on('remove', removeCss);\n        }\n      };\n      if (editor.contentStyles.length > 0) {\n        let contentCssText = '';\n        Tools.each(editor.contentStyles, style => {\n          contentCssText += style + '\\r\\n';\n        });\n        editor.dom.addStyle(contentCssText);\n      }\n      const allStylesheets = Promise.all(makeStylesheetLoadingPromises(editor, css, fontCss)).then(loaded).catch(loaded);\n      const contentStyle = getContentStyle(editor);\n      if (contentStyle) {\n        appendStyle(editor, contentStyle);\n      }\n      return allStylesheets;\n    };\n    const preInit = editor => {\n      const doc = editor.getDoc(),\n        body = editor.getBody();\n      firePreInit(editor);\n      if (!shouldBrowserSpellcheck(editor)) {\n        doc.body.spellcheck = false;\n        DOM$6.setAttrib(body, 'spellcheck', 'false');\n      }\n      editor.quirks = Quirks(editor);\n      firePostRender(editor);\n      const directionality = getDirectionality(editor);\n      if (directionality !== undefined) {\n        body.dir = directionality;\n      }\n      const protect = getProtect(editor);\n      if (protect) {\n        editor.on('BeforeSetContent', e => {\n          Tools.each(protect, pattern => {\n            e.content = e.content.replace(pattern, str => {\n              return '<!--mce:protected ' + escape(str) + '-->';\n            });\n          });\n        });\n      }\n      editor.on('SetContent', () => {\n        editor.addVisual(editor.getBody());\n      });\n      editor.on('compositionstart compositionend', e => {\n        editor.composing = e.type === 'compositionstart';\n      });\n    };\n    const loadInitialContent = editor => {\n      if (!isRtc(editor)) {\n        editor.load({\n          initial: true,\n          format: 'html'\n        });\n      }\n      editor.startContent = editor.getContent({\n        format: 'raw'\n      });\n    };\n    const initEditorWithInitialContent = editor => {\n      if (editor.removed !== true) {\n        loadInitialContent(editor);\n        initEditor(editor);\n      }\n    };\n    const startProgress = editor => {\n      let canceled = false;\n      const progressTimeout = setTimeout(() => {\n        if (!canceled) {\n          editor.setProgressState(true);\n        }\n      }, 500);\n      return () => {\n        clearTimeout(progressTimeout);\n        canceled = true;\n        editor.setProgressState(false);\n      };\n    };\n    const contentBodyLoaded = editor => {\n      const targetElm = editor.getElement();\n      let doc = editor.getDoc();\n      if (editor.inline) {\n        DOM$6.addClass(targetElm, 'mce-content-body');\n        editor.contentDocument = doc = document;\n        editor.contentWindow = window;\n        editor.bodyElement = targetElm;\n        editor.contentAreaContainer = targetElm;\n      }\n      const body = editor.getBody();\n      body.disabled = true;\n      editor.readonly = isReadOnly$1(editor);\n      editor._editableRoot = hasEditableRoot$1(editor);\n      if (!editor.readonly && editor.hasEditableRoot()) {\n        if (editor.inline && DOM$6.getStyle(body, 'position', true) === 'static') {\n          body.style.position = 'relative';\n        }\n        body.contentEditable = 'true';\n      }\n      body.disabled = false;\n      editor.editorUpload = EditorUpload(editor);\n      editor.schema = Schema(mkSchemaSettings(editor));\n      editor.dom = DOMUtils(doc, {\n        keep_values: true,\n        url_converter: editor.convertURL,\n        url_converter_scope: editor,\n        update_styles: true,\n        root_element: editor.inline ? editor.getBody() : null,\n        collect: editor.inline,\n        schema: editor.schema,\n        contentCssCors: shouldUseContentCssCors(editor),\n        referrerPolicy: getReferrerPolicy(editor),\n        onSetAttrib: e => {\n          editor.dispatch('SetAttrib', e);\n        },\n        force_hex_color: shouldForceHexColor(editor)\n      });\n      editor.parser = createParser(editor);\n      editor.serializer = DomSerializer(mkSerializerSettings(editor), editor);\n      editor.selection = EditorSelection(editor.dom, editor.getWin(), editor.serializer, editor);\n      editor.annotator = Annotator(editor);\n      editor.formatter = Formatter(editor);\n      editor.undoManager = UndoManager(editor);\n      editor._nodeChangeDispatcher = new NodeChange(editor);\n      editor._selectionOverrides = SelectionOverrides(editor);\n      setup$p(editor);\n      setup$6(editor);\n      setup$n(editor);\n      if (!isRtc(editor)) {\n        setup$5(editor);\n        setup$1(editor);\n      }\n      const caret = setup$b(editor);\n      setup$q(editor, caret);\n      setup$o(editor);\n      setup$r(editor);\n      setup$7(editor);\n      const setupRtcThunk = setup$t(editor);\n      preInit(editor);\n      setupRtcThunk.fold(() => {\n        const cancelProgress = startProgress(editor);\n        loadContentCss(editor).then(() => {\n          initEditorWithInitialContent(editor);\n          cancelProgress();\n        });\n      }, setupRtc => {\n        editor.setProgressState(true);\n        loadContentCss(editor).then(() => {\n          setupRtc().then(_rtcMode => {\n            editor.setProgressState(false);\n            initEditorWithInitialContent(editor);\n            bindEvents(editor);\n          }, err => {\n            editor.notificationManager.open({\n              type: 'error',\n              text: String(err)\n            });\n            initEditorWithInitialContent(editor);\n            bindEvents(editor);\n          });\n        });\n      });\n    };\n\n    const filter = always;\n    const bind = (element, event, handler) => bind$2(element, event, filter, handler);\n\n    const DOM$5 = DOMUtils.DOM;\n    const createIframeElement = (id, title, customAttrs, tabindex) => {\n      const iframe = SugarElement.fromTag('iframe');\n      tabindex.each(t => set$3(iframe, 'tabindex', t));\n      setAll$1(iframe, customAttrs);\n      setAll$1(iframe, {\n        id: id + '_ifr',\n        frameBorder: '0',\n        allowTransparency: 'true',\n        title\n      });\n      add$2(iframe, 'tox-edit-area__iframe');\n      return iframe;\n    };\n    const getIframeHtml = editor => {\n      let iframeHTML = getDocType(editor) + '<html><head>';\n      if (getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {\n        iframeHTML += '<base href=\"' + editor.documentBaseURI.getURI() + '\" />';\n      }\n      iframeHTML += '<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />';\n      const bodyId = getBodyId(editor);\n      const bodyClass = getBodyClass(editor);\n      const translatedAriaText = editor.translate(getIframeAriaText(editor));\n      if (getContentSecurityPolicy(editor)) {\n        iframeHTML += '<meta http-equiv=\"Content-Security-Policy\" content=\"' + getContentSecurityPolicy(editor) + '\" />';\n      }\n      iframeHTML += '</head>' + \"<body id=\\\"\".concat(bodyId, \"\\\" class=\\\"mce-content-body \").concat(bodyClass, \"\\\" data-id=\\\"\").concat(editor.id, \"\\\" aria-label=\\\"\").concat(translatedAriaText, \"\\\">\") + '<br>' + '</body></html>';\n      return iframeHTML;\n    };\n    const createIframe = (editor, boxInfo) => {\n      const iframeTitle = editor.translate('Rich Text Area');\n      const tabindex = getOpt(SugarElement.fromDom(editor.getElement()), 'tabindex').bind(toInt);\n      const ifr = createIframeElement(editor.id, iframeTitle, getIframeAttrs(editor), tabindex).dom;\n      ifr.onload = () => {\n        ifr.onload = null;\n        editor.dispatch('load');\n      };\n      editor.contentAreaContainer = boxInfo.iframeContainer;\n      editor.iframeElement = ifr;\n      editor.iframeHTML = getIframeHtml(editor);\n      DOM$5.add(boxInfo.iframeContainer, ifr);\n    };\n    const setupIframeBody = editor => {\n      const iframe = editor.iframeElement;\n      const ready = () => {\n        editor.contentDocument = iframe.contentDocument;\n        contentBodyLoaded(editor);\n      };\n      if (shouldUseDocumentWrite(editor) || Env.browser.isFirefox()) {\n        const doc = editor.getDoc();\n        doc.open();\n        doc.write(editor.iframeHTML);\n        doc.close();\n        ready();\n      } else {\n        const binder = bind(SugarElement.fromDom(iframe), 'load', () => {\n          binder.unbind();\n          ready();\n        });\n        iframe.srcdoc = editor.iframeHTML;\n      }\n    };\n    const init$1 = (editor, boxInfo) => {\n      createIframe(editor, boxInfo);\n      if (boxInfo.editorContainer) {\n        boxInfo.editorContainer.style.display = editor.orgDisplay;\n        editor.hidden = DOM$5.isHidden(boxInfo.editorContainer);\n      }\n      editor.getElement().style.display = 'none';\n      DOM$5.setAttrib(editor.id, 'aria-hidden', 'true');\n      editor.getElement().style.visibility = editor.orgVisibility;\n      setupIframeBody(editor);\n    };\n\n    const DOM$4 = DOMUtils.DOM;\n    const initPlugin = (editor, initializedPlugins, plugin) => {\n      const Plugin = PluginManager.get(plugin);\n      const pluginUrl = PluginManager.urls[plugin] || editor.documentBaseUrl.replace(/\\/$/, '');\n      plugin = Tools.trim(plugin);\n      if (Plugin && Tools.inArray(initializedPlugins, plugin) === -1) {\n        if (editor.plugins[plugin]) {\n          return;\n        }\n        try {\n          const pluginInstance = Plugin(editor, pluginUrl) || {};\n          editor.plugins[plugin] = pluginInstance;\n          if (isFunction(pluginInstance.init)) {\n            pluginInstance.init(editor, pluginUrl);\n            initializedPlugins.push(plugin);\n          }\n        } catch (e) {\n          pluginInitError(editor, plugin, e);\n        }\n      }\n    };\n    const trimLegacyPrefix = name => {\n      return name.replace(/^\\-/, '');\n    };\n    const initPlugins = editor => {\n      const initializedPlugins = [];\n      each$e(getPlugins(editor), name => {\n        initPlugin(editor, initializedPlugins, trimLegacyPrefix(name));\n      });\n    };\n    const initIcons = editor => {\n      const iconPackName = Tools.trim(getIconPackName(editor));\n      const currentIcons = editor.ui.registry.getAll().icons;\n      const loadIcons = {\n        ...IconManager.get('default').icons,\n        ...IconManager.get(iconPackName).icons\n      };\n      each$d(loadIcons, (svgData, icon) => {\n        if (!has$2(currentIcons, icon)) {\n          editor.ui.registry.addIcon(icon, svgData);\n        }\n      });\n    };\n    const initTheme = editor => {\n      const theme = getTheme(editor);\n      if (isString(theme)) {\n        const Theme = ThemeManager.get(theme);\n        editor.theme = Theme(editor, ThemeManager.urls[theme]) || {};\n        if (isFunction(editor.theme.init)) {\n          editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\\/$/, ''));\n        }\n      } else {\n        editor.theme = {};\n      }\n    };\n    const initModel = editor => {\n      const model = getModel(editor);\n      const Model = ModelManager.get(model);\n      editor.model = Model(editor, ModelManager.urls[model]);\n    };\n    const renderFromLoadedTheme = editor => {\n      const render = editor.theme.renderUI;\n      return render ? render() : renderThemeFalse(editor);\n    };\n    const renderFromThemeFunc = editor => {\n      const elm = editor.getElement();\n      const theme = getTheme(editor);\n      const info = theme(editor, elm);\n      if (info.editorContainer.nodeType) {\n        info.editorContainer.id = info.editorContainer.id || editor.id + '_parent';\n      }\n      if (info.iframeContainer && info.iframeContainer.nodeType) {\n        info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer';\n      }\n      info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight;\n      return info;\n    };\n    const createThemeFalseResult = (element, iframe) => {\n      return {\n        editorContainer: element,\n        iframeContainer: iframe,\n        api: {}\n      };\n    };\n    const renderThemeFalseIframe = targetElement => {\n      const iframeContainer = DOM$4.create('div');\n      DOM$4.insertAfter(iframeContainer, targetElement);\n      return createThemeFalseResult(iframeContainer, iframeContainer);\n    };\n    const renderThemeFalse = editor => {\n      const targetElement = editor.getElement();\n      return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement);\n    };\n    const renderThemeUi = editor => {\n      const elm = editor.getElement();\n      editor.orgDisplay = elm.style.display;\n      if (isString(getTheme(editor))) {\n        return renderFromLoadedTheme(editor);\n      } else if (isFunction(getTheme(editor))) {\n        return renderFromThemeFunc(editor);\n      } else {\n        return renderThemeFalse(editor);\n      }\n    };\n    const augmentEditorUiApi = (editor, api) => {\n      const uiApiFacade = {\n        show: Optional.from(api.show).getOr(noop),\n        hide: Optional.from(api.hide).getOr(noop),\n        isEnabled: Optional.from(api.isEnabled).getOr(always),\n        setEnabled: state => {\n          if (!editor.mode.isReadOnly()) {\n            Optional.from(api.setEnabled).each(f => f(state));\n          }\n        }\n      };\n      editor.ui = {\n        ...editor.ui,\n        ...uiApiFacade\n      };\n    };\n    const init = async editor => {\n      editor.dispatch('ScriptsLoaded');\n      initIcons(editor);\n      initTheme(editor);\n      initModel(editor);\n      initPlugins(editor);\n      const renderInfo = await renderThemeUi(editor);\n      augmentEditorUiApi(editor, Optional.from(renderInfo.api).getOr({}));\n      editor.editorContainer = renderInfo.editorContainer;\n      appendContentCssFromSettings(editor);\n      if (editor.inline) {\n        contentBodyLoaded(editor);\n      } else {\n        init$1(editor, {\n          editorContainer: renderInfo.editorContainer,\n          iframeContainer: renderInfo.iframeContainer\n        });\n      }\n    };\n\n    const DOM$3 = DOMUtils.DOM;\n    const hasSkipLoadPrefix = name => name.charAt(0) === '-';\n    const loadLanguage = (scriptLoader, editor) => {\n      const languageCode = getLanguageCode(editor);\n      const languageUrl = getLanguageUrl(editor);\n      if (!I18n.hasCode(languageCode) && languageCode !== 'en') {\n        const url = isNotEmpty(languageUrl) ? languageUrl : \"\".concat(editor.editorManager.baseURL, \"/langs/\").concat(languageCode, \".js\");\n        scriptLoader.add(url).catch(() => {\n          languageLoadError(editor, url, languageCode);\n        });\n      }\n    };\n    const loadTheme = (editor, suffix) => {\n      const theme = getTheme(editor);\n      if (isString(theme) && !hasSkipLoadPrefix(theme) && !has$2(ThemeManager.urls, theme)) {\n        const themeUrl = getThemeUrl(editor);\n        const url = themeUrl ? editor.documentBaseURI.toAbsolute(themeUrl) : \"themes/\".concat(theme, \"/theme\").concat(suffix, \".js\");\n        ThemeManager.load(theme, url).catch(() => {\n          themeLoadError(editor, url, theme);\n        });\n      }\n    };\n    const loadModel = (editor, suffix) => {\n      const model = getModel(editor);\n      if (model !== 'plugin' && !has$2(ModelManager.urls, model)) {\n        const modelUrl = getModelUrl(editor);\n        const url = isString(modelUrl) ? editor.documentBaseURI.toAbsolute(modelUrl) : \"models/\".concat(model, \"/model\").concat(suffix, \".js\");\n        ModelManager.load(model, url).catch(() => {\n          modelLoadError(editor, url, model);\n        });\n      }\n    };\n    const getIconsUrlMetaFromUrl = editor => Optional.from(getIconsUrl(editor)).filter(isNotEmpty).map(url => ({\n      url,\n      name: Optional.none()\n    }));\n    const getIconsUrlMetaFromName = (editor, name, suffix) => Optional.from(name).filter(name => isNotEmpty(name) && !IconManager.has(name)).map(name => ({\n      url: \"\".concat(editor.editorManager.baseURL, \"/icons/\").concat(name, \"/icons\").concat(suffix, \".js\"),\n      name: Optional.some(name)\n    }));\n    const loadIcons = (scriptLoader, editor, suffix) => {\n      const defaultIconsUrl = getIconsUrlMetaFromName(editor, 'default', suffix);\n      const customIconsUrl = getIconsUrlMetaFromUrl(editor).orThunk(() => getIconsUrlMetaFromName(editor, getIconPackName(editor), ''));\n      each$e(cat([defaultIconsUrl, customIconsUrl]), urlMeta => {\n        scriptLoader.add(urlMeta.url).catch(() => {\n          iconsLoadError(editor, urlMeta.url, urlMeta.name.getOrUndefined());\n        });\n      });\n    };\n    const loadPlugins = (editor, suffix) => {\n      const loadPlugin = (name, url) => {\n        PluginManager.load(name, url).catch(() => {\n          pluginLoadError(editor, url, name);\n        });\n      };\n      each$d(getExternalPlugins$1(editor), (url, name) => {\n        loadPlugin(name, url);\n        editor.options.set('plugins', getPlugins(editor).concat(name));\n      });\n      each$e(getPlugins(editor), plugin => {\n        plugin = Tools.trim(plugin);\n        if (plugin && !PluginManager.urls[plugin] && !hasSkipLoadPrefix(plugin)) {\n          loadPlugin(plugin, \"plugins/\".concat(plugin, \"/plugin\").concat(suffix, \".js\"));\n        }\n      });\n    };\n    const isThemeLoaded = editor => {\n      const theme = getTheme(editor);\n      return !isString(theme) || isNonNullable(ThemeManager.get(theme));\n    };\n    const isModelLoaded = editor => {\n      const model = getModel(editor);\n      return isNonNullable(ModelManager.get(model));\n    };\n    const loadScripts = (editor, suffix) => {\n      const scriptLoader = ScriptLoader.ScriptLoader;\n      const initEditor = () => {\n        if (!editor.removed && isThemeLoaded(editor) && isModelLoaded(editor)) {\n          init(editor);\n        }\n      };\n      loadTheme(editor, suffix);\n      loadModel(editor, suffix);\n      loadLanguage(scriptLoader, editor);\n      loadIcons(scriptLoader, editor, suffix);\n      loadPlugins(editor, suffix);\n      scriptLoader.loadQueue().then(initEditor, initEditor);\n    };\n    const getStyleSheetLoader = (element, editor) => instance.forElement(element, {\n      contentCssCors: hasContentCssCors(editor),\n      referrerPolicy: getReferrerPolicy(editor)\n    });\n    const render = editor => {\n      const id = editor.id;\n      I18n.setCode(getLanguageCode(editor));\n      const readyHandler = () => {\n        DOM$3.unbind(window, 'ready', readyHandler);\n        editor.render();\n      };\n      if (!EventUtils.Event.domLoaded) {\n        DOM$3.bind(window, 'ready', readyHandler);\n        return;\n      }\n      if (!editor.getElement()) {\n        return;\n      }\n      const element = SugarElement.fromDom(editor.getElement());\n      const snapshot = clone$4(element);\n      editor.on('remove', () => {\n        eachr(element.dom.attributes, attr => remove$a(element, attr.name));\n        setAll$1(element, snapshot);\n      });\n      editor.ui.styleSheetLoader = getStyleSheetLoader(element, editor);\n      if (!isInline$1(editor)) {\n        editor.orgVisibility = editor.getElement().style.visibility;\n        editor.getElement().style.visibility = 'hidden';\n      } else {\n        editor.inline = true;\n      }\n      const form = editor.getElement().form || DOM$3.getParent(id, 'form');\n      if (form) {\n        editor.formElement = form;\n        if (hasHiddenInput(editor) && !isTextareaOrInput(editor.getElement())) {\n          DOM$3.insertAfter(DOM$3.create('input', {\n            type: 'hidden',\n            name: id\n          }), id);\n          editor.hasHiddenInput = true;\n        }\n        editor.formEventDelegate = e => {\n          editor.dispatch(e.type, e);\n        };\n        DOM$3.bind(form, 'submit reset', editor.formEventDelegate);\n        editor.on('reset', () => {\n          editor.resetContent();\n        });\n        if (shouldPatchSubmit(editor) && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {\n          form._mceOldSubmit = form.submit;\n          form.submit = () => {\n            editor.editorManager.triggerSave();\n            editor.setDirty(false);\n            return form._mceOldSubmit(form);\n          };\n        }\n      }\n      editor.windowManager = WindowManager(editor);\n      editor.notificationManager = NotificationManager(editor);\n      if (isEncodingXml(editor)) {\n        editor.on('GetContent', e => {\n          if (e.save) {\n            e.content = DOM$3.encode(e.content);\n          }\n        });\n      }\n      if (shouldAddFormSubmitTrigger(editor)) {\n        editor.on('submit', () => {\n          if (editor.initialized) {\n            editor.save();\n          }\n        });\n      }\n      if (shouldAddUnloadTrigger(editor)) {\n        editor._beforeUnload = () => {\n          if (editor.initialized && !editor.destroyed && !editor.isHidden()) {\n            editor.save({\n              format: 'raw',\n              no_events: true,\n              set_dirty: false\n            });\n          }\n        };\n        editor.editorManager.on('BeforeUnload', editor._beforeUnload);\n      }\n      editor.editorManager.add(editor);\n      loadScripts(editor, editor.suffix);\n    };\n\n    const setEditableRoot = (editor, state) => {\n      if (editor._editableRoot !== state) {\n        editor._editableRoot = state;\n        if (!editor.readonly) {\n          editor.getBody().contentEditable = String(editor.hasEditableRoot());\n          editor.nodeChanged();\n        }\n        fireEditableRootStateChange(editor, state);\n      }\n    };\n    const hasEditableRoot = editor => editor._editableRoot;\n\n    const sectionResult = (sections, settings) => ({\n      sections: constant(sections),\n      options: constant(settings)\n    });\n    const deviceDetection = detect$2().deviceType;\n    const isPhone = deviceDetection.isPhone();\n    const isTablet = deviceDetection.isTablet();\n    const normalizePlugins = plugins => {\n      if (isNullable(plugins)) {\n        return [];\n      } else {\n        const pluginNames = isArray$1(plugins) ? plugins : plugins.split(/[ ,]/);\n        const trimmedPlugins = map$3(pluginNames, trim$4);\n        return filter$5(trimmedPlugins, isNotEmpty);\n      }\n    };\n    const extractSections = (keys, options) => {\n      const result = bifilter(options, (value, key) => {\n        return contains$2(keys, key);\n      });\n      return sectionResult(result.t, result.f);\n    };\n    const getSection = (sectionResult, name, defaults = {}) => {\n      const sections = sectionResult.sections();\n      const sectionOptions = get$a(sections, name).getOr({});\n      return Tools.extend({}, defaults, sectionOptions);\n    };\n    const hasSection = (sectionResult, name) => {\n      return has$2(sectionResult.sections(), name);\n    };\n    const getSectionConfig = (sectionResult, name) => {\n      return hasSection(sectionResult, name) ? sectionResult.sections()[name] : {};\n    };\n    const getMobileOverrideOptions = (mobileOptions, isPhone) => {\n      const defaultMobileOptions = {\n        table_grid: false,\n        object_resizing: false,\n        resize: false,\n        toolbar_mode: get$a(mobileOptions, 'toolbar_mode').getOr('scrolling'),\n        toolbar_sticky: false\n      };\n      const defaultPhoneOptions = {\n        menubar: false\n      };\n      return {\n        ...defaultMobileOptions,\n        ...(isPhone ? defaultPhoneOptions : {})\n      };\n    };\n    const getExternalPlugins = (overrideOptions, options) => {\n      var _a;\n      const userDefinedExternalPlugins = (_a = options.external_plugins) !== null && _a !== void 0 ? _a : {};\n      if (overrideOptions && overrideOptions.external_plugins) {\n        return Tools.extend({}, overrideOptions.external_plugins, userDefinedExternalPlugins);\n      } else {\n        return userDefinedExternalPlugins;\n      }\n    };\n    const combinePlugins = (forcedPlugins, plugins) => [...normalizePlugins(forcedPlugins), ...normalizePlugins(plugins)];\n    const getPlatformPlugins = (isMobileDevice, sectionResult, desktopPlugins, mobilePlugins) => {\n      if (isMobileDevice && hasSection(sectionResult, 'mobile')) {\n        return mobilePlugins;\n      } else {\n        return desktopPlugins;\n      }\n    };\n    const processPlugins = (isMobileDevice, sectionResult, defaultOverrideOptions, options) => {\n      const forcedPlugins = normalizePlugins(defaultOverrideOptions.forced_plugins);\n      const desktopPlugins = normalizePlugins(options.plugins);\n      const mobileConfig = getSectionConfig(sectionResult, 'mobile');\n      const mobilePlugins = mobileConfig.plugins ? normalizePlugins(mobileConfig.plugins) : desktopPlugins;\n      const platformPlugins = getPlatformPlugins(isMobileDevice, sectionResult, desktopPlugins, mobilePlugins);\n      const combinedPlugins = combinePlugins(forcedPlugins, platformPlugins);\n      return Tools.extend(options, {\n        forced_plugins: forcedPlugins,\n        plugins: combinedPlugins\n      });\n    };\n    const isOnMobile = (isMobileDevice, sectionResult) => {\n      return isMobileDevice && hasSection(sectionResult, 'mobile');\n    };\n    const combineOptions = (isMobileDevice, isPhone, defaultOptions, defaultOverrideOptions, options) => {\n      var _a;\n      const deviceOverrideOptions = isMobileDevice ? {\n        mobile: getMobileOverrideOptions((_a = options.mobile) !== null && _a !== void 0 ? _a : {}, isPhone)\n      } : {};\n      const sectionResult = extractSections(['mobile'], deepMerge(deviceOverrideOptions, options));\n      const extendedOptions = Tools.extend(defaultOptions, defaultOverrideOptions, sectionResult.options(), isOnMobile(isMobileDevice, sectionResult) ? getSection(sectionResult, 'mobile') : {}, {\n        external_plugins: getExternalPlugins(defaultOverrideOptions, sectionResult.options())\n      });\n      return processPlugins(isMobileDevice, sectionResult, defaultOverrideOptions, extendedOptions);\n    };\n    const normalizeOptions = (defaultOverrideOptions, options) => combineOptions(isPhone || isTablet, isPhone, options, defaultOverrideOptions, options);\n\n    const addVisual = (editor, elm) => addVisual$1(editor, elm);\n\n    const registerExecCommands$3 = editor => {\n      const toggleFormat = (name, value) => {\n        editor.formatter.toggle(name, value);\n        editor.nodeChanged();\n      };\n      const toggleAlign = align => () => {\n        each$e('left,center,right,justify'.split(','), name => {\n          if (align !== name) {\n            editor.formatter.remove('align' + name);\n          }\n        });\n        if (align !== 'none') {\n          toggleFormat('align' + align);\n        }\n      };\n      editor.editorCommands.addCommands({\n        JustifyLeft: toggleAlign('left'),\n        JustifyCenter: toggleAlign('center'),\n        JustifyRight: toggleAlign('right'),\n        JustifyFull: toggleAlign('justify'),\n        JustifyNone: toggleAlign('none')\n      });\n    };\n    const registerQueryStateCommands$1 = editor => {\n      const alignStates = name => () => {\n        const selection = editor.selection;\n        const nodes = selection.isCollapsed() ? [editor.dom.getParent(selection.getNode(), editor.dom.isBlock)] : selection.getSelectedBlocks();\n        return exists(nodes, node => isNonNullable(editor.formatter.matchNode(node, name)));\n      };\n      editor.editorCommands.addCommands({\n        JustifyLeft: alignStates('alignleft'),\n        JustifyCenter: alignStates('aligncenter'),\n        JustifyRight: alignStates('alignright'),\n        JustifyFull: alignStates('alignjustify')\n      }, 'state');\n    };\n    const registerCommands$b = editor => {\n      registerExecCommands$3(editor);\n      registerQueryStateCommands$1(editor);\n    };\n\n    const registerCommands$a = editor => {\n      editor.editorCommands.addCommands({\n        'Cut,Copy,Paste': command => {\n          const doc = editor.getDoc();\n          let failed;\n          try {\n            doc.execCommand(command);\n          } catch (ex) {\n            failed = true;\n          }\n          if (command === 'paste' && !doc.queryCommandEnabled(command)) {\n            failed = true;\n          }\n          if (failed || !doc.queryCommandSupported(command)) {\n            let msg = editor.translate(\"Your browser doesn't support direct access to the clipboard. \" + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.');\n            if (Env.os.isMacOS() || Env.os.isiOS()) {\n              msg = msg.replace(/Ctrl\\+/g, '\\u2318+');\n            }\n            editor.notificationManager.open({\n              text: msg,\n              type: 'error'\n            });\n          }\n        }\n      });\n    };\n\n    const trimOrPadLeftRight = (dom, rng, html, schema) => {\n      const root = SugarElement.fromDom(dom.getRoot());\n      if (needsToBeNbspLeft(root, CaretPosition.fromRangeStart(rng), schema)) {\n        html = html.replace(/^ /, '&nbsp;');\n      } else {\n        html = html.replace(/^&nbsp;/, ' ');\n      }\n      if (needsToBeNbspRight(root, CaretPosition.fromRangeEnd(rng), schema)) {\n        html = html.replace(/(&nbsp;| )(<br( \\/)>)?$/, '&nbsp;');\n      } else {\n        html = html.replace(/&nbsp;(<br( \\/)?>)?$/, ' ');\n      }\n      return html;\n    };\n\n    const processValue$1 = value => {\n      if (typeof value !== 'string') {\n        const details = Tools.extend({\n          paste: value.paste,\n          data: {\n            paste: value.paste\n          }\n        }, value);\n        return {\n          content: value.content,\n          details\n        };\n      }\n      return {\n        content: value,\n        details: {}\n      };\n    };\n    const trimOrPad = (editor, value) => {\n      const selection = editor.selection;\n      const dom = editor.dom;\n      if (/^ | $/.test(value)) {\n        return trimOrPadLeftRight(dom, selection.getRng(), value, editor.schema);\n      } else {\n        return value;\n      }\n    };\n    const insertAtCaret = (editor, value) => {\n      if (editor.selection.isEditable()) {\n        const {\n          content,\n          details\n        } = processValue$1(value);\n        preProcessSetContent(editor, {\n          ...details,\n          content: trimOrPad(editor, content),\n          format: 'html',\n          set: false,\n          selection: true\n        }).each(args => {\n          const insertedContent = insertContent$1(editor, args.content, details);\n          postProcessSetContent(editor, insertedContent, args);\n          editor.addVisual();\n        });\n      }\n    };\n\n    const registerCommands$9 = editor => {\n      editor.editorCommands.addCommands({\n        mceCleanup: () => {\n          const bm = editor.selection.getBookmark();\n          editor.setContent(editor.getContent());\n          editor.selection.moveToBookmark(bm);\n        },\n        insertImage: (_command, _ui, value) => {\n          insertAtCaret(editor, editor.dom.createHTML('img', {\n            src: value\n          }));\n        },\n        insertHorizontalRule: () => {\n          editor.execCommand('mceInsertContent', false, '<hr>');\n        },\n        insertText: (_command, _ui, value) => {\n          insertAtCaret(editor, editor.dom.encode(value));\n        },\n        insertHTML: (_command, _ui, value) => {\n          insertAtCaret(editor, value);\n        },\n        mceInsertContent: (_command, _ui, value) => {\n          insertAtCaret(editor, value);\n        },\n        mceSetContent: (_command, _ui, value) => {\n          editor.setContent(value);\n        },\n        mceReplaceContent: (_command, _ui, value) => {\n          editor.execCommand('mceInsertContent', false, value.replace(/\\{\\$selection\\}/g, editor.selection.getContent({\n            format: 'text'\n          })));\n        },\n        mceNewDocument: () => {\n          editor.setContent(getNewDocumentContent(editor));\n        }\n      });\n    };\n\n    const legacyPropNames = {\n      'font-size': 'size',\n      'font-family': 'face'\n    };\n    const isFont = isTag('font');\n    const getSpecifiedFontProp = (propName, rootElm, elm) => {\n      const getProperty = elm => getRaw(elm, propName).orThunk(() => {\n        if (isFont(elm)) {\n          return get$a(legacyPropNames, propName).bind(legacyPropName => getOpt(elm, legacyPropName));\n        } else {\n          return Optional.none();\n        }\n      });\n      const isRoot = elm => eq(SugarElement.fromDom(rootElm), elm);\n      return closest$1(SugarElement.fromDom(elm), elm => getProperty(elm), isRoot);\n    };\n    const normalizeFontFamily = fontFamily => fontFamily.replace(/[\\'\\\"\\\\]/g, '').replace(/,\\s+/g, ',');\n    const getComputedFontProp = (propName, elm) => Optional.from(DOMUtils.DOM.getStyle(elm, propName, true));\n    const getFontProp = propName => (rootElm, elm) => Optional.from(elm).map(SugarElement.fromDom).filter(isElement$7).bind(element => getSpecifiedFontProp(propName, rootElm, element.dom).or(getComputedFontProp(propName, element.dom))).getOr('');\n    const getFontSize = getFontProp('font-size');\n    const getFontFamily = compose(normalizeFontFamily, getFontProp('font-family'));\n\n    const findFirstCaretElement = editor => firstPositionIn(editor.getBody()).bind(caret => {\n      const container = caret.container();\n      return Optional.from(isText$a(container) ? container.parentNode : container);\n    });\n    const getCaretElement = editor => Optional.from(editor.selection.getRng()).bind(rng => {\n      const root = editor.getBody();\n      const atStartOfNode = rng.startContainer === root && rng.startOffset === 0;\n      return atStartOfNode ? Optional.none() : Optional.from(editor.selection.getStart(true));\n    });\n    const bindRange = (editor, binder) => getCaretElement(editor).orThunk(curry(findFirstCaretElement, editor)).map(SugarElement.fromDom).filter(isElement$7).bind(binder);\n    const mapRange = (editor, mapper) => bindRange(editor, compose1(Optional.some, mapper));\n\n    const fromFontSizeNumber = (editor, value) => {\n      if (/^[0-9.]+$/.test(value)) {\n        const fontSizeNumber = parseInt(value, 10);\n        if (fontSizeNumber >= 1 && fontSizeNumber <= 7) {\n          const fontSizes = getFontStyleValues(editor);\n          const fontClasses = getFontSizeClasses(editor);\n          if (fontClasses.length > 0) {\n            return fontClasses[fontSizeNumber - 1] || value;\n          } else {\n            return fontSizes[fontSizeNumber - 1] || value;\n          }\n        } else {\n          return value;\n        }\n      } else {\n        return value;\n      }\n    };\n    const normalizeFontNames = font => {\n      const fonts = font.split(/\\s*,\\s*/);\n      return map$3(fonts, font => {\n        if (font.indexOf(' ') !== -1 && !(startsWith(font, '\"') || startsWith(font, \"'\"))) {\n          return \"'\".concat(font, \"'\");\n        } else {\n          return font;\n        }\n      }).join(',');\n    };\n    const fontNameAction = (editor, value) => {\n      const font = fromFontSizeNumber(editor, value);\n      editor.formatter.toggle('fontname', {\n        value: normalizeFontNames(font)\n      });\n      editor.nodeChanged();\n    };\n    const fontNameQuery = editor => mapRange(editor, elm => getFontFamily(editor.getBody(), elm.dom)).getOr('');\n    const fontSizeAction = (editor, value) => {\n      editor.formatter.toggle('fontsize', {\n        value: fromFontSizeNumber(editor, value)\n      });\n      editor.nodeChanged();\n    };\n    const fontSizeQuery = editor => mapRange(editor, elm => getFontSize(editor.getBody(), elm.dom)).getOr('');\n\n    const lineHeightQuery = editor => mapRange(editor, elm => {\n      const root = SugarElement.fromDom(editor.getBody());\n      const specifiedStyle = closest$1(elm, elm => getRaw(elm, 'line-height'), curry(eq, root));\n      const computedStyle = () => {\n        const lineHeight = parseFloat(get$7(elm, 'line-height'));\n        const fontSize = parseFloat(get$7(elm, 'font-size'));\n        return String(lineHeight / fontSize);\n      };\n      return specifiedStyle.getOrThunk(computedStyle);\n    }).getOr('');\n    const lineHeightAction = (editor, lineHeight) => {\n      editor.formatter.toggle('lineheight', {\n        value: String(lineHeight)\n      });\n      editor.nodeChanged();\n    };\n\n    const registerExecCommands$2 = editor => {\n      const toggleFormat = (name, value) => {\n        editor.formatter.toggle(name, value);\n        editor.nodeChanged();\n      };\n      editor.editorCommands.addCommands({\n        'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': command => {\n          toggleFormat(command);\n        },\n        'ForeColor,HiliteColor': (command, _ui, value) => {\n          toggleFormat(command, {\n            value\n          });\n        },\n        'BackColor': (_command, _ui, value) => {\n          toggleFormat('hilitecolor', {\n            value\n          });\n        },\n        'FontName': (_command, _ui, value) => {\n          fontNameAction(editor, value);\n        },\n        'FontSize': (_command, _ui, value) => {\n          fontSizeAction(editor, value);\n        },\n        'LineHeight': (_command, _ui, value) => {\n          lineHeightAction(editor, value);\n        },\n        'Lang': (command, _ui, lang) => {\n          var _a;\n          toggleFormat(command, {\n            value: lang.code,\n            customValue: (_a = lang.customCode) !== null && _a !== void 0 ? _a : null\n          });\n        },\n        'RemoveFormat': command => {\n          editor.formatter.remove(command);\n        },\n        'mceBlockQuote': () => {\n          toggleFormat('blockquote');\n        },\n        'FormatBlock': (_command, _ui, value) => {\n          toggleFormat(isString(value) ? value : 'p');\n        },\n        'mceToggleFormat': (_command, _ui, value) => {\n          toggleFormat(value);\n        }\n      });\n    };\n    const registerQueryValueCommands = editor => {\n      const isFormatMatch = name => editor.formatter.match(name);\n      editor.editorCommands.addCommands({\n        'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': command => isFormatMatch(command),\n        'mceBlockQuote': () => isFormatMatch('blockquote')\n      }, 'state');\n      editor.editorCommands.addQueryValueHandler('FontName', () => fontNameQuery(editor));\n      editor.editorCommands.addQueryValueHandler('FontSize', () => fontSizeQuery(editor));\n      editor.editorCommands.addQueryValueHandler('LineHeight', () => lineHeightQuery(editor));\n    };\n    const registerCommands$8 = editor => {\n      registerExecCommands$2(editor);\n      registerQueryValueCommands(editor);\n    };\n\n    const registerCommands$7 = editor => {\n      editor.editorCommands.addCommands({\n        mceAddUndoLevel: () => {\n          editor.undoManager.add();\n        },\n        mceEndUndoLevel: () => {\n          editor.undoManager.add();\n        },\n        Undo: () => {\n          editor.undoManager.undo();\n        },\n        Redo: () => {\n          editor.undoManager.redo();\n        }\n      });\n    };\n\n    const registerCommands$6 = editor => {\n      editor.editorCommands.addCommands({\n        Indent: () => {\n          indent(editor);\n        },\n        Outdent: () => {\n          outdent(editor);\n        }\n      });\n      editor.editorCommands.addCommands({\n        Outdent: () => canOutdent(editor)\n      }, 'state');\n    };\n\n    const registerCommands$5 = editor => {\n      const applyLinkToSelection = (_command, _ui, value) => {\n        const linkDetails = isString(value) ? {\n          href: value\n        } : value;\n        const anchor = editor.dom.getParent(editor.selection.getNode(), 'a');\n        if (isObject(linkDetails) && isString(linkDetails.href)) {\n          linkDetails.href = linkDetails.href.replace(/ /g, '%20');\n          if (!anchor || !linkDetails.href) {\n            editor.formatter.remove('link');\n          }\n          if (linkDetails.href) {\n            editor.formatter.apply('link', linkDetails, anchor);\n          }\n        }\n      };\n      editor.editorCommands.addCommands({\n        unlink: () => {\n          if (editor.selection.isEditable()) {\n            if (editor.selection.isCollapsed()) {\n              const elm = editor.dom.getParent(editor.selection.getStart(), 'a');\n              if (elm) {\n                editor.dom.remove(elm, true);\n              }\n              return;\n            }\n            editor.formatter.remove('link');\n          }\n        },\n        mceInsertLink: applyLinkToSelection,\n        createLink: applyLinkToSelection\n      });\n    };\n\n    const registerExecCommands$1 = editor => {\n      editor.editorCommands.addCommands({\n        'InsertUnorderedList,InsertOrderedList': command => {\n          editor.getDoc().execCommand(command);\n          const listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');\n          if (listElm) {\n            const listParent = listElm.parentNode;\n            if (listParent && /^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {\n              const bm = editor.selection.getBookmark();\n              editor.dom.split(listParent, listElm);\n              editor.selection.moveToBookmark(bm);\n            }\n          }\n        }\n      });\n    };\n    const registerQueryStateCommands = editor => {\n      editor.editorCommands.addCommands({\n        'InsertUnorderedList,InsertOrderedList': command => {\n          const list = editor.dom.getParent(editor.selection.getNode(), 'ul,ol');\n          return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL');\n        }\n      }, 'state');\n    };\n    const registerCommands$4 = editor => {\n      registerExecCommands$1(editor);\n      registerQueryStateCommands(editor);\n    };\n\n    const getTopParentBlock = (editor, node, root, container) => {\n      const dom = editor.dom;\n      const selector = node => dom.isBlock(node) && node.parentElement === root;\n      const topParentBlock = selector(node) ? node : dom.getParent(container, selector, root);\n      return Optional.from(topParentBlock).map(SugarElement.fromDom);\n    };\n    const insert = (editor, before) => {\n      const dom = editor.dom;\n      const rng = editor.selection.getRng();\n      const node = before ? editor.selection.getStart() : editor.selection.getEnd();\n      const container = before ? rng.startContainer : rng.endContainer;\n      const root = getEditableRoot(dom, container);\n      if (!root || !root.isContentEditable) {\n        return;\n      }\n      const insertFn = before ? before$3 : after$4;\n      const newBlockName = getForcedRootBlock(editor);\n      getTopParentBlock(editor, node, root, container).each(parentBlock => {\n        const newBlock = createNewBlock(editor, container, parentBlock.dom, root, false, newBlockName);\n        insertFn(parentBlock, SugarElement.fromDom(newBlock));\n        editor.selection.setCursorLocation(newBlock, 0);\n        editor.dispatch('NewBlock', {\n          newBlock\n        });\n        fireInputEvent(editor, 'insertParagraph');\n      });\n    };\n    const insertBefore = editor => insert(editor, true);\n    const insertAfter = editor => insert(editor, false);\n\n    const registerCommands$3 = editor => {\n      editor.editorCommands.addCommands({\n        InsertNewBlockBefore: () => {\n          insertBefore(editor);\n        },\n        InsertNewBlockAfter: () => {\n          insertAfter(editor);\n        }\n      });\n    };\n\n    const registerCommands$2 = editor => {\n      editor.editorCommands.addCommands({\n        insertParagraph: () => {\n          insertBreak(blockbreak, editor);\n        },\n        mceInsertNewLine: (_command, _ui, value) => {\n          insert$1(editor, value);\n        },\n        InsertLineBreak: (_command, _ui, _value) => {\n          insertBreak(linebreak, editor);\n        }\n      });\n    };\n\n    const registerCommands$1 = editor => {\n      editor.editorCommands.addCommands({\n        mceSelectNodeDepth: (_command, _ui, value) => {\n          let counter = 0;\n          editor.dom.getParent(editor.selection.getNode(), node => {\n            if (isElement$6(node) && counter++ === value) {\n              editor.selection.select(node);\n              return false;\n            } else {\n              return true;\n            }\n          }, editor.getBody());\n        },\n        mceSelectNode: (_command, _ui, value) => {\n          editor.selection.select(value);\n        },\n        selectAll: () => {\n          const editingHost = editor.dom.getParent(editor.selection.getStart(), isContentEditableTrue$3);\n          if (editingHost) {\n            const rng = editor.dom.createRng();\n            rng.selectNodeContents(editingHost);\n            editor.selection.setRng(rng);\n          }\n        }\n      });\n    };\n\n    const registerExecCommands = editor => {\n      editor.editorCommands.addCommands({\n        mceRemoveNode: (_command, _ui, value) => {\n          const node = value !== null && value !== void 0 ? value : editor.selection.getNode();\n          if (node !== editor.getBody()) {\n            const bm = editor.selection.getBookmark();\n            editor.dom.remove(node, true);\n            editor.selection.moveToBookmark(bm);\n          }\n        },\n        mcePrint: () => {\n          editor.getWin().print();\n        },\n        mceFocus: (_command, _ui, value) => {\n          focus(editor, value === true);\n        },\n        mceToggleVisualAid: () => {\n          editor.hasVisual = !editor.hasVisual;\n          editor.addVisual();\n        }\n      });\n    };\n    const registerCommands = editor => {\n      registerCommands$b(editor);\n      registerCommands$a(editor);\n      registerCommands$7(editor);\n      registerCommands$1(editor);\n      registerCommands$9(editor);\n      registerCommands$5(editor);\n      registerCommands$6(editor);\n      registerCommands$3(editor);\n      registerCommands$2(editor);\n      registerCommands$4(editor);\n      registerCommands$8(editor);\n      registerExecCommands(editor);\n    };\n\n    const selectionSafeCommands = ['toggleview'];\n    const isSelectionSafeCommand = command => contains$2(selectionSafeCommands, command.toLowerCase());\n    class EditorCommands {\n      constructor(editor) {\n        this.commands = {\n          state: {},\n          exec: {},\n          value: {}\n        };\n        this.editor = editor;\n      }\n      execCommand(command, ui = false, value, args) {\n        const editor = this.editor;\n        const lowerCaseCommand = command.toLowerCase();\n        const skipFocus = args === null || args === void 0 ? void 0 : args.skip_focus;\n        if (editor.removed) {\n          return false;\n        }\n        if (lowerCaseCommand !== 'mcefocus') {\n          if (!/^(mceAddUndoLevel|mceEndUndoLevel)$/i.test(lowerCaseCommand) && !skipFocus) {\n            editor.focus();\n          } else {\n            restore(editor);\n          }\n        }\n        const eventArgs = editor.dispatch('BeforeExecCommand', {\n          command,\n          ui,\n          value\n        });\n        if (eventArgs.isDefaultPrevented()) {\n          return false;\n        }\n        const func = this.commands.exec[lowerCaseCommand];\n        if (isFunction(func)) {\n          func(lowerCaseCommand, ui, value);\n          editor.dispatch('ExecCommand', {\n            command,\n            ui,\n            value\n          });\n          return true;\n        }\n        return false;\n      }\n      queryCommandState(command) {\n        if (!isSelectionSafeCommand(command) && this.editor.quirks.isHidden() || this.editor.removed) {\n          return false;\n        }\n        const lowerCaseCommand = command.toLowerCase();\n        const func = this.commands.state[lowerCaseCommand];\n        if (isFunction(func)) {\n          return func(lowerCaseCommand);\n        }\n        return false;\n      }\n      queryCommandValue(command) {\n        if (!isSelectionSafeCommand(command) && this.editor.quirks.isHidden() || this.editor.removed) {\n          return '';\n        }\n        const lowerCaseCommand = command.toLowerCase();\n        const func = this.commands.value[lowerCaseCommand];\n        if (isFunction(func)) {\n          return func(lowerCaseCommand);\n        }\n        return '';\n      }\n      addCommands(commandList, type = 'exec') {\n        const commands = this.commands;\n        each$d(commandList, (callback, command) => {\n          each$e(command.toLowerCase().split(','), command => {\n            commands[type][command] = callback;\n          });\n        });\n      }\n      addCommand(command, callback, scope) {\n        const lowerCaseCommand = command.toLowerCase();\n        this.commands.exec[lowerCaseCommand] = (_command, ui, value) => callback.call(scope !== null && scope !== void 0 ? scope : this.editor, ui, value);\n      }\n      queryCommandSupported(command) {\n        const lowerCaseCommand = command.toLowerCase();\n        if (this.commands.exec[lowerCaseCommand]) {\n          return true;\n        } else {\n          return false;\n        }\n      }\n      addQueryStateHandler(command, callback, scope) {\n        this.commands.state[command.toLowerCase()] = () => callback.call(scope !== null && scope !== void 0 ? scope : this.editor);\n      }\n      addQueryValueHandler(command, callback, scope) {\n        this.commands.value[command.toLowerCase()] = () => callback.call(scope !== null && scope !== void 0 ? scope : this.editor);\n      }\n    }\n\n    const internalContentEditableAttr = 'data-mce-contenteditable';\n    const toggleClass = (elm, cls, state) => {\n      if (has(elm, cls) && !state) {\n        remove$7(elm, cls);\n      } else if (state) {\n        add$2(elm, cls);\n      }\n    };\n    const setEditorCommandState = (editor, cmd, state) => {\n      try {\n        editor.getDoc().execCommand(cmd, false, String(state));\n      } catch (ex) {}\n    };\n    const setContentEditable = (elm, state) => {\n      elm.dom.contentEditable = state ? 'true' : 'false';\n    };\n    const switchOffContentEditableTrue = elm => {\n      each$e(descendants(elm, '*[contenteditable=\"true\"]'), elm => {\n        set$3(elm, internalContentEditableAttr, 'true');\n        setContentEditable(elm, false);\n      });\n    };\n    const switchOnContentEditableTrue = elm => {\n      each$e(descendants(elm, \"*[\".concat(internalContentEditableAttr, \"=\\\"true\\\"]\")), elm => {\n        remove$a(elm, internalContentEditableAttr);\n        setContentEditable(elm, true);\n      });\n    };\n    const removeFakeSelection = editor => {\n      Optional.from(editor.selection.getNode()).each(elm => {\n        elm.removeAttribute('data-mce-selected');\n      });\n    };\n    const restoreFakeSelection = editor => {\n      editor.selection.setRng(editor.selection.getRng());\n    };\n    const toggleReadOnly = (editor, state) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      toggleClass(body, 'mce-content-readonly', state);\n      if (state) {\n        editor.selection.controlSelection.hideResizeRect();\n        editor._selectionOverrides.hideFakeCaret();\n        removeFakeSelection(editor);\n        editor.readonly = true;\n        setContentEditable(body, false);\n        switchOffContentEditableTrue(body);\n      } else {\n        editor.readonly = false;\n        if (editor.hasEditableRoot()) {\n          setContentEditable(body, true);\n        }\n        switchOnContentEditableTrue(body);\n        setEditorCommandState(editor, 'StyleWithCSS', false);\n        setEditorCommandState(editor, 'enableInlineTableEditing', false);\n        setEditorCommandState(editor, 'enableObjectResizing', false);\n        if (hasEditorOrUiFocus(editor)) {\n          editor.focus();\n        }\n        restoreFakeSelection(editor);\n        editor.nodeChanged();\n      }\n    };\n    const isReadOnly = editor => editor.readonly;\n    const registerFilters = editor => {\n      editor.parser.addAttributeFilter('contenteditable', nodes => {\n        if (isReadOnly(editor)) {\n          each$e(nodes, node => {\n            node.attr(internalContentEditableAttr, node.attr('contenteditable'));\n            node.attr('contenteditable', 'false');\n          });\n        }\n      });\n      editor.serializer.addAttributeFilter(internalContentEditableAttr, nodes => {\n        if (isReadOnly(editor)) {\n          each$e(nodes, node => {\n            node.attr('contenteditable', node.attr(internalContentEditableAttr));\n          });\n        }\n      });\n      editor.serializer.addTempAttr(internalContentEditableAttr);\n    };\n    const registerReadOnlyContentFilters = editor => {\n      if (editor.serializer) {\n        registerFilters(editor);\n      } else {\n        editor.on('PreInit', () => {\n          registerFilters(editor);\n        });\n      }\n    };\n    const isClickEvent = e => e.type === 'click';\n    const allowedEvents = ['copy'];\n    const isReadOnlyAllowedEvent = e => contains$2(allowedEvents, e.type);\n    const getAnchorHrefOpt = (editor, elm) => {\n      const isRoot = elm => eq(elm, SugarElement.fromDom(editor.getBody()));\n      return closest$3(elm, 'a', isRoot).bind(a => getOpt(a, 'href'));\n    };\n    const processReadonlyEvents = (editor, e) => {\n      if (isClickEvent(e) && !VK.metaKeyPressed(e)) {\n        const elm = SugarElement.fromDom(e.target);\n        getAnchorHrefOpt(editor, elm).each(href => {\n          e.preventDefault();\n          if (/^#/.test(href)) {\n            const targetEl = editor.dom.select(\"\".concat(href, \",[name=\\\"\").concat(removeLeading(href, '#'), \"\\\"]\"));\n            if (targetEl.length) {\n              editor.selection.scrollIntoView(targetEl[0], true);\n            }\n          } else {\n            window.open(href, '_blank', 'rel=noopener noreferrer,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes');\n          }\n        });\n      } else if (isReadOnlyAllowedEvent(e)) {\n        editor.dispatch(e.type, e);\n      }\n    };\n    const registerReadOnlySelectionBlockers = editor => {\n      editor.on('ShowCaret', e => {\n        if (isReadOnly(editor)) {\n          e.preventDefault();\n        }\n      });\n      editor.on('ObjectSelected', e => {\n        if (isReadOnly(editor)) {\n          e.preventDefault();\n        }\n      });\n    };\n\n    const nativeEvents = Tools.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel', ' ');\n    class EventDispatcher {\n      static isNative(name) {\n        return !!nativeEvents[name.toLowerCase()];\n      }\n      constructor(settings) {\n        this.bindings = {};\n        this.settings = settings || {};\n        this.scope = this.settings.scope || this;\n        this.toggleEvent = this.settings.toggleEvent || never;\n      }\n      fire(name, args) {\n        return this.dispatch(name, args);\n      }\n      dispatch(name, args) {\n        const lcName = name.toLowerCase();\n        const event = normalize$3(lcName, args !== null && args !== void 0 ? args : {}, this.scope);\n        if (this.settings.beforeFire) {\n          this.settings.beforeFire(event);\n        }\n        const handlers = this.bindings[lcName];\n        if (handlers) {\n          for (let i = 0, l = handlers.length; i < l; i++) {\n            const callback = handlers[i];\n            if (callback.removed) {\n              continue;\n            }\n            if (callback.once) {\n              this.off(lcName, callback.func);\n            }\n            if (event.isImmediatePropagationStopped()) {\n              return event;\n            }\n            if (callback.func.call(this.scope, event) === false) {\n              event.preventDefault();\n              return event;\n            }\n          }\n        }\n        return event;\n      }\n      on(name, callback, prepend, extra) {\n        if (callback === false) {\n          callback = never;\n        }\n        if (callback) {\n          const wrappedCallback = {\n            func: callback,\n            removed: false\n          };\n          if (extra) {\n            Tools.extend(wrappedCallback, extra);\n          }\n          const names = name.toLowerCase().split(' ');\n          let i = names.length;\n          while (i--) {\n            const currentName = names[i];\n            let handlers = this.bindings[currentName];\n            if (!handlers) {\n              handlers = [];\n              this.toggleEvent(currentName, true);\n            }\n            if (prepend) {\n              handlers = [wrappedCallback, ...handlers];\n            } else {\n              handlers = [...handlers, wrappedCallback];\n            }\n            this.bindings[currentName] = handlers;\n          }\n        }\n        return this;\n      }\n      off(name, callback) {\n        if (name) {\n          const names = name.toLowerCase().split(' ');\n          let i = names.length;\n          while (i--) {\n            const currentName = names[i];\n            let handlers = this.bindings[currentName];\n            if (!currentName) {\n              each$d(this.bindings, (_value, bindingName) => {\n                this.toggleEvent(bindingName, false);\n                delete this.bindings[bindingName];\n              });\n              return this;\n            }\n            if (handlers) {\n              if (!callback) {\n                handlers.length = 0;\n              } else {\n                const filteredHandlers = partition$2(handlers, handler => handler.func === callback);\n                handlers = filteredHandlers.fail;\n                this.bindings[currentName] = handlers;\n                each$e(filteredHandlers.pass, handler => {\n                  handler.removed = true;\n                });\n              }\n              if (!handlers.length) {\n                this.toggleEvent(name, false);\n                delete this.bindings[currentName];\n              }\n            }\n          }\n        } else {\n          each$d(this.bindings, (_value, name) => {\n            this.toggleEvent(name, false);\n          });\n          this.bindings = {};\n        }\n        return this;\n      }\n      once(name, callback, prepend) {\n        return this.on(name, callback, prepend, {\n          once: true\n        });\n      }\n      has(name) {\n        name = name.toLowerCase();\n        const binding = this.bindings[name];\n        return !(!binding || binding.length === 0);\n      }\n    }\n\n    const getEventDispatcher = obj => {\n      if (!obj._eventDispatcher) {\n        obj._eventDispatcher = new EventDispatcher({\n          scope: obj,\n          toggleEvent: (name, state) => {\n            if (EventDispatcher.isNative(name) && obj.toggleNativeEvent) {\n              obj.toggleNativeEvent(name, state);\n            }\n          }\n        });\n      }\n      return obj._eventDispatcher;\n    };\n    const Observable = {\n      fire(name, args, bubble) {\n        return this.dispatch(name, args, bubble);\n      },\n      dispatch(name, args, bubble) {\n        const self = this;\n        if (self.removed && name !== 'remove' && name !== 'detach') {\n          return normalize$3(name.toLowerCase(), args !== null && args !== void 0 ? args : {}, self);\n        }\n        const dispatcherArgs = getEventDispatcher(self).dispatch(name, args);\n        if (bubble !== false && self.parent) {\n          let parent = self.parent();\n          while (parent && !dispatcherArgs.isPropagationStopped()) {\n            parent.dispatch(name, dispatcherArgs, false);\n            parent = parent.parent ? parent.parent() : undefined;\n          }\n        }\n        return dispatcherArgs;\n      },\n      on(name, callback, prepend) {\n        return getEventDispatcher(this).on(name, callback, prepend);\n      },\n      off(name, callback) {\n        return getEventDispatcher(this).off(name, callback);\n      },\n      once(name, callback) {\n        return getEventDispatcher(this).once(name, callback);\n      },\n      hasEventListeners(name) {\n        return getEventDispatcher(this).has(name);\n      }\n    };\n\n    const DOM$2 = DOMUtils.DOM;\n    let customEventRootDelegates;\n    const getEventTarget = (editor, eventName) => {\n      if (eventName === 'selectionchange') {\n        return editor.getDoc();\n      }\n      if (!editor.inline && /^(?:mouse|touch|click|contextmenu|drop|dragover|dragend)/.test(eventName)) {\n        return editor.getDoc().documentElement;\n      }\n      const eventRoot = getEventRoot(editor);\n      if (eventRoot) {\n        if (!editor.eventRoot) {\n          editor.eventRoot = DOM$2.select(eventRoot)[0];\n        }\n        return editor.eventRoot;\n      }\n      return editor.getBody();\n    };\n    const isListening = editor => !editor.hidden && !isReadOnly(editor);\n    const fireEvent = (editor, eventName, e) => {\n      if (isListening(editor)) {\n        editor.dispatch(eventName, e);\n      } else if (isReadOnly(editor)) {\n        processReadonlyEvents(editor, e);\n      }\n    };\n    const bindEventDelegate = (editor, eventName) => {\n      if (!editor.delegates) {\n        editor.delegates = {};\n      }\n      if (editor.delegates[eventName] || editor.removed) {\n        return;\n      }\n      const eventRootElm = getEventTarget(editor, eventName);\n      if (getEventRoot(editor)) {\n        if (!customEventRootDelegates) {\n          customEventRootDelegates = {};\n          editor.editorManager.on('removeEditor', () => {\n            if (!editor.editorManager.activeEditor) {\n              if (customEventRootDelegates) {\n                each$d(customEventRootDelegates, (_value, name) => {\n                  editor.dom.unbind(getEventTarget(editor, name));\n                });\n                customEventRootDelegates = null;\n              }\n            }\n          });\n        }\n        if (customEventRootDelegates[eventName]) {\n          return;\n        }\n        const delegate = e => {\n          const target = e.target;\n          const editors = editor.editorManager.get();\n          let i = editors.length;\n          while (i--) {\n            const body = editors[i].getBody();\n            if (body === target || DOM$2.isChildOf(target, body)) {\n              fireEvent(editors[i], eventName, e);\n            }\n          }\n        };\n        customEventRootDelegates[eventName] = delegate;\n        DOM$2.bind(eventRootElm, eventName, delegate);\n      } else {\n        const delegate = e => {\n          fireEvent(editor, eventName, e);\n        };\n        DOM$2.bind(eventRootElm, eventName, delegate);\n        editor.delegates[eventName] = delegate;\n      }\n    };\n    const EditorObservable = {\n      ...Observable,\n      bindPendingEventDelegates() {\n        const self = this;\n        Tools.each(self._pendingNativeEvents, name => {\n          bindEventDelegate(self, name);\n        });\n      },\n      toggleNativeEvent(name, state) {\n        const self = this;\n        if (name === 'focus' || name === 'blur') {\n          return;\n        }\n        if (self.removed) {\n          return;\n        }\n        if (state) {\n          if (self.initialized) {\n            bindEventDelegate(self, name);\n          } else {\n            if (!self._pendingNativeEvents) {\n              self._pendingNativeEvents = [name];\n            } else {\n              self._pendingNativeEvents.push(name);\n            }\n          }\n        } else if (self.initialized && self.delegates) {\n          self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\n          delete self.delegates[name];\n        }\n      },\n      unbindAllNativeEvents() {\n        const self = this;\n        const body = self.getBody();\n        const dom = self.dom;\n        if (self.delegates) {\n          each$d(self.delegates, (value, name) => {\n            self.dom.unbind(getEventTarget(self, name), name, value);\n          });\n          delete self.delegates;\n        }\n        if (!self.inline && body && dom) {\n          body.onload = null;\n          dom.unbind(self.getWin());\n          dom.unbind(self.getDoc());\n        }\n        if (dom) {\n          dom.unbind(body);\n          dom.unbind(self.getContainer());\n        }\n      }\n    };\n\n    const stringListProcessor = value => {\n      if (isString(value)) {\n        return {\n          value: value.split(/[ ,]/),\n          valid: true\n        };\n      } else if (isArrayOf(value, isString)) {\n        return {\n          value,\n          valid: true\n        };\n      } else {\n        return {\n          valid: false,\n          message: \"The value must be a string[] or a comma/space separated string.\"\n        };\n      }\n    };\n    const getBuiltInProcessor = type => {\n      const validator = (() => {\n        switch (type) {\n          case 'array':\n            return isArray$1;\n          case 'boolean':\n            return isBoolean;\n          case 'function':\n            return isFunction;\n          case 'number':\n            return isNumber;\n          case 'object':\n            return isObject;\n          case 'string':\n            return isString;\n          case 'string[]':\n            return stringListProcessor;\n          case 'object[]':\n            return val => isArrayOf(val, isObject);\n          case 'regexp':\n            return val => is$4(val, RegExp);\n          default:\n            return always;\n        }\n      })();\n      return value => processValue(value, validator, \"The value must be a \".concat(type, \".\"));\n    };\n    const isBuiltInSpec = spec => isString(spec.processor);\n    const getErrorMessage = (message, result) => {\n      const additionalText = isEmpty$3(result.message) ? '' : \". \".concat(result.message);\n      return message + additionalText;\n    };\n    const isValidResult = result => result.valid;\n    const processValue = (value, processor, message = '') => {\n      const result = processor(value);\n      if (isBoolean(result)) {\n        return result ? {\n          value: value,\n          valid: true\n        } : {\n          valid: false,\n          message\n        };\n      } else {\n        return result;\n      }\n    };\n    const processDefaultValue = (name, defaultValue, processor) => {\n      if (!isUndefined(defaultValue)) {\n        const result = processValue(defaultValue, processor);\n        if (isValidResult(result)) {\n          return result.value;\n        } else {\n          console.error(getErrorMessage(\"Invalid default value passed for the \\\"\".concat(name, \"\\\" option\"), result));\n        }\n      }\n      return undefined;\n    };\n    const create$5 = (editor, initialOptions) => {\n      const registry = {};\n      const values = {};\n      const setValue = (name, value, processor) => {\n        const result = processValue(value, processor);\n        if (isValidResult(result)) {\n          values[name] = result.value;\n          return true;\n        } else {\n          console.warn(getErrorMessage(\"Invalid value passed for the \".concat(name, \" option\"), result));\n          return false;\n        }\n      };\n      const register = (name, spec) => {\n        const processor = isBuiltInSpec(spec) ? getBuiltInProcessor(spec.processor) : spec.processor;\n        const defaultValue = processDefaultValue(name, spec.default, processor);\n        registry[name] = {\n          ...spec,\n          default: defaultValue,\n          processor\n        };\n        const initValue = get$a(values, name).orThunk(() => get$a(initialOptions, name));\n        initValue.each(value => setValue(name, value, processor));\n      };\n      const isRegistered = name => has$2(registry, name);\n      const get = name => get$a(values, name).orThunk(() => get$a(registry, name).map(spec => spec.default)).getOrUndefined();\n      const set = (name, value) => {\n        if (!isRegistered(name)) {\n          console.warn(\"\\\"\".concat(name, \"\\\" is not a registered option. Ensure the option has been registered before setting a value.\"));\n          return false;\n        } else {\n          const spec = registry[name];\n          if (spec.immutable) {\n            console.error(\"\\\"\".concat(name, \"\\\" is an immutable option and cannot be updated\"));\n            return false;\n          } else {\n            return setValue(name, value, spec.processor);\n          }\n        }\n      };\n      const unset = name => {\n        const registered = isRegistered(name);\n        if (registered) {\n          delete values[name];\n        }\n        return registered;\n      };\n      const isSet = name => has$2(values, name);\n      return {\n        register,\n        isRegistered,\n        get,\n        set,\n        unset,\n        isSet\n      };\n    };\n\n    const defaultModes = ['design', 'readonly'];\n    const switchToMode = (editor, activeMode, availableModes, mode) => {\n      const oldMode = availableModes[activeMode.get()];\n      const newMode = availableModes[mode];\n      try {\n        newMode.activate();\n      } catch (e) {\n        console.error(\"problem while activating editor mode \".concat(mode, \":\"), e);\n        return;\n      }\n      oldMode.deactivate();\n      if (oldMode.editorReadOnly !== newMode.editorReadOnly) {\n        toggleReadOnly(editor, newMode.editorReadOnly);\n      }\n      activeMode.set(mode);\n      fireSwitchMode(editor, mode);\n    };\n    const setMode = (editor, availableModes, activeMode, mode) => {\n      if (mode === activeMode.get()) {\n        return;\n      } else if (!has$2(availableModes, mode)) {\n        throw new Error(\"Editor mode '\".concat(mode, \"' is invalid\"));\n      }\n      if (editor.initialized) {\n        switchToMode(editor, activeMode, availableModes, mode);\n      } else {\n        editor.on('init', () => switchToMode(editor, activeMode, availableModes, mode));\n      }\n    };\n    const registerMode = (availableModes, mode, api) => {\n      if (contains$2(defaultModes, mode)) {\n        throw new Error(\"Cannot override default mode \".concat(mode));\n      }\n      return {\n        ...availableModes,\n        [mode]: {\n          ...api,\n          deactivate: () => {\n            try {\n              api.deactivate();\n            } catch (e) {\n              console.error(\"problem while deactivating editor mode \".concat(mode, \":\"), e);\n            }\n          }\n        }\n      };\n    };\n\n    const create$4 = editor => {\n      const activeMode = Cell('design');\n      const availableModes = Cell({\n        design: {\n          activate: noop,\n          deactivate: noop,\n          editorReadOnly: false\n        },\n        readonly: {\n          activate: noop,\n          deactivate: noop,\n          editorReadOnly: true\n        }\n      });\n      registerReadOnlyContentFilters(editor);\n      registerReadOnlySelectionBlockers(editor);\n      return {\n        isReadOnly: () => isReadOnly(editor),\n        set: mode => setMode(editor, availableModes.get(), activeMode, mode),\n        get: () => activeMode.get(),\n        register: (mode, api) => {\n          availableModes.set(registerMode(availableModes.get(), mode, api));\n        }\n      };\n    };\n\n    const each$2 = Tools.each,\n      explode = Tools.explode;\n    const keyCodeLookup = {\n      f1: 112,\n      f2: 113,\n      f3: 114,\n      f4: 115,\n      f5: 116,\n      f6: 117,\n      f7: 118,\n      f8: 119,\n      f9: 120,\n      f10: 121,\n      f11: 122,\n      f12: 123\n    };\n    const modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access');\n    const isModifier = key => key in modifierNames;\n    const parseShortcut = pattern => {\n      const shortcut = {};\n      const isMac = Env.os.isMacOS() || Env.os.isiOS();\n      each$2(explode(pattern.toLowerCase(), '+'), value => {\n        if (isModifier(value)) {\n          shortcut[value] = true;\n        } else {\n          if (/^[0-9]{2,}$/.test(value)) {\n            shortcut.keyCode = parseInt(value, 10);\n          } else {\n            shortcut.charCode = value.charCodeAt(0);\n            shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);\n          }\n        }\n      });\n      const id = [shortcut.keyCode];\n      let key;\n      for (key in modifierNames) {\n        if (shortcut[key]) {\n          id.push(key);\n        } else {\n          shortcut[key] = false;\n        }\n      }\n      shortcut.id = id.join(',');\n      if (shortcut.access) {\n        shortcut.alt = true;\n        if (isMac) {\n          shortcut.ctrl = true;\n        } else {\n          shortcut.shift = true;\n        }\n      }\n      if (shortcut.meta) {\n        if (isMac) {\n          shortcut.meta = true;\n        } else {\n          shortcut.ctrl = true;\n          shortcut.meta = false;\n        }\n      }\n      return shortcut;\n    };\n    class Shortcuts {\n      constructor(editor) {\n        this.shortcuts = {};\n        this.pendingPatterns = [];\n        this.editor = editor;\n        const self = this;\n        editor.on('keyup keypress keydown', e => {\n          if ((self.hasModifier(e) || self.isFunctionKey(e)) && !e.isDefaultPrevented()) {\n            each$2(self.shortcuts, shortcut => {\n              if (self.matchShortcut(e, shortcut)) {\n                self.pendingPatterns = shortcut.subpatterns.slice(0);\n                if (e.type === 'keydown') {\n                  self.executeShortcutAction(shortcut);\n                }\n              }\n            });\n            if (self.matchShortcut(e, self.pendingPatterns[0])) {\n              if (self.pendingPatterns.length === 1) {\n                if (e.type === 'keydown') {\n                  self.executeShortcutAction(self.pendingPatterns[0]);\n                }\n              }\n              self.pendingPatterns.shift();\n            }\n          }\n        });\n      }\n      add(pattern, desc, cmdFunc, scope) {\n        const self = this;\n        const func = self.normalizeCommandFunc(cmdFunc);\n        each$2(explode(Tools.trim(pattern)), pattern => {\n          const shortcut = self.createShortcut(pattern, desc, func, scope);\n          self.shortcuts[shortcut.id] = shortcut;\n        });\n        return true;\n      }\n      remove(pattern) {\n        const shortcut = this.createShortcut(pattern);\n        if (this.shortcuts[shortcut.id]) {\n          delete this.shortcuts[shortcut.id];\n          return true;\n        }\n        return false;\n      }\n      normalizeCommandFunc(cmdFunc) {\n        const self = this;\n        const cmd = cmdFunc;\n        if (typeof cmd === 'string') {\n          return () => {\n            self.editor.execCommand(cmd, false, null);\n          };\n        } else if (Tools.isArray(cmd)) {\n          return () => {\n            self.editor.execCommand(cmd[0], cmd[1], cmd[2]);\n          };\n        } else {\n          return cmd;\n        }\n      }\n      createShortcut(pattern, desc, cmdFunc, scope) {\n        const shortcuts = Tools.map(explode(pattern, '>'), parseShortcut);\n        shortcuts[shortcuts.length - 1] = Tools.extend(shortcuts[shortcuts.length - 1], {\n          func: cmdFunc,\n          scope: scope || this.editor\n        });\n        return Tools.extend(shortcuts[0], {\n          desc: this.editor.translate(desc),\n          subpatterns: shortcuts.slice(1)\n        });\n      }\n      hasModifier(e) {\n        return e.altKey || e.ctrlKey || e.metaKey;\n      }\n      isFunctionKey(e) {\n        return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123;\n      }\n      matchShortcut(e, shortcut) {\n        if (!shortcut) {\n          return false;\n        }\n        if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) {\n          return false;\n        }\n        if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) {\n          return false;\n        }\n        if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) {\n          e.preventDefault();\n          return true;\n        }\n        return false;\n      }\n      executeShortcutAction(shortcut) {\n        return shortcut.func ? shortcut.func.call(shortcut.scope) : null;\n      }\n    }\n\n    const create$3 = () => {\n      const buttons = {};\n      const menuItems = {};\n      const popups = {};\n      const icons = {};\n      const contextMenus = {};\n      const contextToolbars = {};\n      const sidebars = {};\n      const views = {};\n      const add = (collection, type) => (name, spec) => {\n        collection[name.toLowerCase()] = {\n          ...spec,\n          type\n        };\n      };\n      const addIcon = (name, svgData) => icons[name.toLowerCase()] = svgData;\n      return {\n        addButton: add(buttons, 'button'),\n        addGroupToolbarButton: add(buttons, 'grouptoolbarbutton'),\n        addToggleButton: add(buttons, 'togglebutton'),\n        addMenuButton: add(buttons, 'menubutton'),\n        addSplitButton: add(buttons, 'splitbutton'),\n        addMenuItem: add(menuItems, 'menuitem'),\n        addNestedMenuItem: add(menuItems, 'nestedmenuitem'),\n        addToggleMenuItem: add(menuItems, 'togglemenuitem'),\n        addAutocompleter: add(popups, 'autocompleter'),\n        addContextMenu: add(contextMenus, 'contextmenu'),\n        addContextToolbar: add(contextToolbars, 'contexttoolbar'),\n        addContextForm: add(contextToolbars, 'contextform'),\n        addSidebar: add(sidebars, 'sidebar'),\n        addView: add(views, 'views'),\n        addIcon,\n        getAll: () => ({\n          buttons,\n          menuItems,\n          icons,\n          popups,\n          contextMenus,\n          contextToolbars,\n          sidebars,\n          views\n        })\n      };\n    };\n\n    const registry = () => {\n      const bridge = create$3();\n      return {\n        addAutocompleter: bridge.addAutocompleter,\n        addButton: bridge.addButton,\n        addContextForm: bridge.addContextForm,\n        addContextMenu: bridge.addContextMenu,\n        addContextToolbar: bridge.addContextToolbar,\n        addIcon: bridge.addIcon,\n        addMenuButton: bridge.addMenuButton,\n        addMenuItem: bridge.addMenuItem,\n        addNestedMenuItem: bridge.addNestedMenuItem,\n        addSidebar: bridge.addSidebar,\n        addSplitButton: bridge.addSplitButton,\n        addToggleButton: bridge.addToggleButton,\n        addGroupToolbarButton: bridge.addGroupToolbarButton,\n        addToggleMenuItem: bridge.addToggleMenuItem,\n        addView: bridge.addView,\n        getAll: bridge.getAll\n      };\n    };\n\n    const DOM$1 = DOMUtils.DOM;\n    const extend = Tools.extend,\n      each$1 = Tools.each;\n    class Editor {\n      constructor(id, options, editorManager) {\n        this.plugins = {};\n        this.contentCSS = [];\n        this.contentStyles = [];\n        this.loadedCSS = {};\n        this.isNotDirty = false;\n        this.composing = false;\n        this.destroyed = false;\n        this.hasHiddenInput = false;\n        this.iframeElement = null;\n        this.initialized = false;\n        this.readonly = false;\n        this.removed = false;\n        this.startContent = '';\n        this._pendingNativeEvents = [];\n        this._skinLoaded = false;\n        this._editableRoot = true;\n        this.editorManager = editorManager;\n        this.documentBaseUrl = editorManager.documentBaseURL;\n        extend(this, EditorObservable);\n        const self = this;\n        this.id = id;\n        this.hidden = false;\n        const normalizedOptions = normalizeOptions(editorManager.defaultOptions, options);\n        this.options = create$5(self, normalizedOptions);\n        register$7(self);\n        const getOption = this.options.get;\n        if (getOption('deprecation_warnings')) {\n          logWarnings(options, normalizedOptions);\n        }\n        const suffix = getOption('suffix');\n        if (suffix) {\n          editorManager.suffix = suffix;\n        }\n        this.suffix = editorManager.suffix;\n        const baseUrl = getOption('base_url');\n        if (baseUrl) {\n          editorManager._setBaseUrl(baseUrl);\n        }\n        this.baseUri = editorManager.baseURI;\n        const referrerPolicy = getReferrerPolicy(self);\n        if (referrerPolicy) {\n          ScriptLoader.ScriptLoader._setReferrerPolicy(referrerPolicy);\n          DOMUtils.DOM.styleSheetLoader._setReferrerPolicy(referrerPolicy);\n        }\n        const contentCssCors = hasContentCssCors(self);\n        if (isNonNullable(contentCssCors)) {\n          DOMUtils.DOM.styleSheetLoader._setContentCssCors(contentCssCors);\n        }\n        AddOnManager.languageLoad = getOption('language_load');\n        AddOnManager.baseURL = editorManager.baseURL;\n        this.setDirty(false);\n        this.documentBaseURI = new URI(getDocumentBaseUrl(self), {\n          base_uri: this.baseUri\n        });\n        this.baseURI = this.baseUri;\n        this.inline = isInline$1(self);\n        this.hasVisual = isVisualAidsEnabled(self);\n        this.shortcuts = new Shortcuts(this);\n        this.editorCommands = new EditorCommands(this);\n        registerCommands(this);\n        const cacheSuffix = getOption('cache_suffix');\n        if (cacheSuffix) {\n          Env.cacheSuffix = cacheSuffix.replace(/^[\\?\\&]+/, '');\n        }\n        this.ui = {\n          registry: registry(),\n          styleSheetLoader: undefined,\n          show: noop,\n          hide: noop,\n          setEnabled: noop,\n          isEnabled: always\n        };\n        this.mode = create$4(self);\n        editorManager.dispatch('SetupEditor', {\n          editor: this\n        });\n        const setupCallback = getSetupCallback(self);\n        if (isFunction(setupCallback)) {\n          setupCallback.call(self, self);\n        }\n      }\n      render() {\n        render(this);\n      }\n      focus(skipFocus) {\n        this.execCommand('mceFocus', false, skipFocus);\n      }\n      hasFocus() {\n        return hasFocus(this);\n      }\n      translate(text) {\n        return I18n.translate(text);\n      }\n      getParam(name, defaultVal, type) {\n        const options = this.options;\n        if (!options.isRegistered(name)) {\n          if (isNonNullable(type)) {\n            options.register(name, {\n              processor: type,\n              default: defaultVal\n            });\n          } else {\n            options.register(name, {\n              processor: always,\n              default: defaultVal\n            });\n          }\n        }\n        return !options.isSet(name) && !isUndefined(defaultVal) ? defaultVal : options.get(name);\n      }\n      hasPlugin(name, loaded) {\n        const hasPlugin = contains$2(getPlugins(this), name);\n        if (hasPlugin) {\n          return loaded ? PluginManager.get(name) !== undefined : true;\n        } else {\n          return false;\n        }\n      }\n      nodeChanged(args) {\n        this._nodeChangeDispatcher.nodeChanged(args);\n      }\n      addCommand(name, callback, scope) {\n        this.editorCommands.addCommand(name, callback, scope);\n      }\n      addQueryStateHandler(name, callback, scope) {\n        this.editorCommands.addQueryStateHandler(name, callback, scope);\n      }\n      addQueryValueHandler(name, callback, scope) {\n        this.editorCommands.addQueryValueHandler(name, callback, scope);\n      }\n      addShortcut(pattern, desc, cmdFunc, scope) {\n        this.shortcuts.add(pattern, desc, cmdFunc, scope);\n      }\n      execCommand(cmd, ui, value, args) {\n        return this.editorCommands.execCommand(cmd, ui, value, args);\n      }\n      queryCommandState(cmd) {\n        return this.editorCommands.queryCommandState(cmd);\n      }\n      queryCommandValue(cmd) {\n        return this.editorCommands.queryCommandValue(cmd);\n      }\n      queryCommandSupported(cmd) {\n        return this.editorCommands.queryCommandSupported(cmd);\n      }\n      show() {\n        const self = this;\n        if (self.hidden) {\n          self.hidden = false;\n          if (self.inline) {\n            self.getBody().contentEditable = 'true';\n          } else {\n            DOM$1.show(self.getContainer());\n            DOM$1.hide(self.id);\n          }\n          self.load();\n          self.dispatch('show');\n        }\n      }\n      hide() {\n        const self = this;\n        if (!self.hidden) {\n          self.save();\n          if (self.inline) {\n            self.getBody().contentEditable = 'false';\n            if (self === self.editorManager.focusedEditor) {\n              self.editorManager.focusedEditor = null;\n            }\n          } else {\n            DOM$1.hide(self.getContainer());\n            DOM$1.setStyle(self.id, 'display', self.orgDisplay);\n          }\n          self.hidden = true;\n          self.dispatch('hide');\n        }\n      }\n      isHidden() {\n        return this.hidden;\n      }\n      setProgressState(state, time) {\n        this.dispatch('ProgressState', {\n          state,\n          time\n        });\n      }\n      load(args = {}) {\n        const self = this;\n        const elm = self.getElement();\n        if (self.removed) {\n          return '';\n        }\n        if (elm) {\n          const loadArgs = {\n            ...args,\n            load: true\n          };\n          const value = isTextareaOrInput(elm) ? elm.value : elm.innerHTML;\n          const html = self.setContent(value, loadArgs);\n          if (!loadArgs.no_events) {\n            self.dispatch('LoadContent', {\n              ...loadArgs,\n              element: elm\n            });\n          }\n          return html;\n        } else {\n          return '';\n        }\n      }\n      save(args = {}) {\n        const self = this;\n        let elm = self.getElement();\n        if (!elm || !self.initialized || self.removed) {\n          return '';\n        }\n        const getArgs = {\n          ...args,\n          save: true,\n          element: elm\n        };\n        let html = self.getContent(getArgs);\n        const saveArgs = {\n          ...getArgs,\n          content: html\n        };\n        if (!saveArgs.no_events) {\n          self.dispatch('SaveContent', saveArgs);\n        }\n        if (saveArgs.format === 'raw') {\n          self.dispatch('RawSaveContent', saveArgs);\n        }\n        html = saveArgs.content;\n        if (!isTextareaOrInput(elm)) {\n          if (args.is_removing || !self.inline) {\n            elm.innerHTML = html;\n          }\n          const form = DOM$1.getParent(self.id, 'form');\n          if (form) {\n            each$1(form.elements, elm => {\n              if (elm.name === self.id) {\n                elm.value = html;\n                return false;\n              } else {\n                return true;\n              }\n            });\n          }\n        } else {\n          elm.value = html;\n        }\n        saveArgs.element = getArgs.element = elm = null;\n        if (saveArgs.set_dirty !== false) {\n          self.setDirty(false);\n        }\n        return html;\n      }\n      setContent(content, args) {\n        return setContent(this, content, args);\n      }\n      getContent(args) {\n        return getContent(this, args);\n      }\n      insertContent(content, args) {\n        if (args) {\n          content = extend({\n            content\n          }, args);\n        }\n        this.execCommand('mceInsertContent', false, content);\n      }\n      resetContent(initialContent) {\n        if (initialContent === undefined) {\n          setContent(this, this.startContent, {\n            format: 'raw'\n          });\n        } else {\n          setContent(this, initialContent);\n        }\n        this.undoManager.reset();\n        this.setDirty(false);\n        this.nodeChanged();\n      }\n      isDirty() {\n        return !this.isNotDirty;\n      }\n      setDirty(state) {\n        const oldState = !this.isNotDirty;\n        this.isNotDirty = !state;\n        if (state && state !== oldState) {\n          this.dispatch('dirty');\n        }\n      }\n      getContainer() {\n        const self = this;\n        if (!self.container) {\n          self.container = self.editorContainer || DOM$1.get(self.id + '_parent');\n        }\n        return self.container;\n      }\n      getContentAreaContainer() {\n        return this.contentAreaContainer;\n      }\n      getElement() {\n        if (!this.targetElm) {\n          this.targetElm = DOM$1.get(this.id);\n        }\n        return this.targetElm;\n      }\n      getWin() {\n        const self = this;\n        if (!self.contentWindow) {\n          const elm = self.iframeElement;\n          if (elm) {\n            self.contentWindow = elm.contentWindow;\n          }\n        }\n        return self.contentWindow;\n      }\n      getDoc() {\n        const self = this;\n        if (!self.contentDocument) {\n          const win = self.getWin();\n          if (win) {\n            self.contentDocument = win.document;\n          }\n        }\n        return self.contentDocument;\n      }\n      getBody() {\n        var _a, _b;\n        const doc = this.getDoc();\n        return (_b = (_a = this.bodyElement) !== null && _a !== void 0 ? _a : doc === null || doc === void 0 ? void 0 : doc.body) !== null && _b !== void 0 ? _b : null;\n      }\n      convertURL(url, name, elm) {\n        const self = this,\n          getOption = self.options.get;\n        const urlConverterCallback = getUrlConverterCallback(self);\n        if (isFunction(urlConverterCallback)) {\n          return urlConverterCallback.call(self, url, elm, true, name);\n        }\n        if (!getOption('convert_urls') || elm === 'link' || isObject(elm) && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) {\n          return url;\n        }\n        const urlObject = new URI(url);\n        if (urlObject.protocol !== 'http' && urlObject.protocol !== 'https' && urlObject.protocol !== '') {\n          return url;\n        }\n        if (getOption('relative_urls')) {\n          return self.documentBaseURI.toRelative(url);\n        }\n        url = self.documentBaseURI.toAbsolute(url, getOption('remove_script_host'));\n        return url;\n      }\n      addVisual(elm) {\n        addVisual(this, elm);\n      }\n      setEditableRoot(state) {\n        setEditableRoot(this, state);\n      }\n      hasEditableRoot() {\n        return hasEditableRoot(this);\n      }\n      remove() {\n        remove$1(this);\n      }\n      destroy(automatic) {\n        destroy(this, automatic);\n      }\n      uploadImages() {\n        return this.editorUpload.uploadImages();\n      }\n      _scanForImages() {\n        return this.editorUpload.scanForImages();\n      }\n    }\n\n    const DOM = DOMUtils.DOM;\n    const each = Tools.each;\n    let boundGlobalEvents = false;\n    let beforeUnloadDelegate;\n    let editors = [];\n    const globalEventDelegate = e => {\n      const type = e.type;\n      each(EditorManager.get(), editor => {\n        switch (type) {\n          case 'scroll':\n            editor.dispatch('ScrollWindow', e);\n            break;\n          case 'resize':\n            editor.dispatch('ResizeWindow', e);\n            break;\n        }\n      });\n    };\n    const toggleGlobalEvents = state => {\n      if (state !== boundGlobalEvents) {\n        const DOM = DOMUtils.DOM;\n        if (state) {\n          DOM.bind(window, 'resize', globalEventDelegate);\n          DOM.bind(window, 'scroll', globalEventDelegate);\n        } else {\n          DOM.unbind(window, 'resize', globalEventDelegate);\n          DOM.unbind(window, 'scroll', globalEventDelegate);\n        }\n        boundGlobalEvents = state;\n      }\n    };\n    const removeEditorFromList = targetEditor => {\n      const oldEditors = editors;\n      editors = filter$5(editors, editor => {\n        return targetEditor !== editor;\n      });\n      if (EditorManager.activeEditor === targetEditor) {\n        EditorManager.activeEditor = editors.length > 0 ? editors[0] : null;\n      }\n      if (EditorManager.focusedEditor === targetEditor) {\n        EditorManager.focusedEditor = null;\n      }\n      return oldEditors.length !== editors.length;\n    };\n    const purgeDestroyedEditor = editor => {\n      if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) {\n        removeEditorFromList(editor);\n        editor.unbindAllNativeEvents();\n        editor.destroy(true);\n        editor.removed = true;\n      }\n    };\n    const isQuirksMode = document.compatMode !== 'CSS1Compat';\n    const EditorManager = {\n      ...Observable,\n      baseURI: null,\n      baseURL: null,\n      defaultOptions: {},\n      documentBaseURL: null,\n      suffix: null,\n      majorVersion: '6',\n      minorVersion: '8.4',\n      releaseDate: '2024-06-19',\n      i18n: I18n,\n      activeEditor: null,\n      focusedEditor: null,\n      setup() {\n        const self = this;\n        let baseURL = '';\n        let suffix = '';\n        let documentBaseURL = URI.getDocumentBaseUrl(document.location);\n        if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(documentBaseURL)) {\n          documentBaseURL = documentBaseURL.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n          if (!/[\\/\\\\]$/.test(documentBaseURL)) {\n            documentBaseURL += '/';\n          }\n        }\n        const preInit = window.tinymce || window.tinyMCEPreInit;\n        if (preInit) {\n          baseURL = preInit.base || preInit.baseURL;\n          suffix = preInit.suffix;\n        } else {\n          const scripts = document.getElementsByTagName('script');\n          for (let i = 0; i < scripts.length; i++) {\n            const src = scripts[i].src || '';\n            if (src === '') {\n              continue;\n            }\n            const srcScript = src.substring(src.lastIndexOf('/'));\n            if (/tinymce(\\.full|\\.jquery|)(\\.min|\\.dev|)\\.js/.test(src)) {\n              if (srcScript.indexOf('.min') !== -1) {\n                suffix = '.min';\n              }\n              baseURL = src.substring(0, src.lastIndexOf('/'));\n              break;\n            }\n          }\n          if (!baseURL && document.currentScript) {\n            const src = document.currentScript.src;\n            if (src.indexOf('.min') !== -1) {\n              suffix = '.min';\n            }\n            baseURL = src.substring(0, src.lastIndexOf('/'));\n          }\n        }\n        self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);\n        self.documentBaseURL = documentBaseURL;\n        self.baseURI = new URI(self.baseURL);\n        self.suffix = suffix;\n        setup$w(self);\n      },\n      overrideDefaults(defaultOptions) {\n        const baseUrl = defaultOptions.base_url;\n        if (baseUrl) {\n          this._setBaseUrl(baseUrl);\n        }\n        const suffix = defaultOptions.suffix;\n        if (suffix) {\n          this.suffix = suffix;\n        }\n        this.defaultOptions = defaultOptions;\n        const pluginBaseUrls = defaultOptions.plugin_base_urls;\n        if (pluginBaseUrls !== undefined) {\n          each$d(pluginBaseUrls, (pluginBaseUrl, pluginName) => {\n            AddOnManager.PluginManager.urls[pluginName] = pluginBaseUrl;\n          });\n        }\n      },\n      init(options) {\n        const self = this;\n        let result;\n        const invalidInlineTargets = Tools.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu', ' ');\n        const isInvalidInlineTarget = (options, elm) => options.inline && elm.tagName.toLowerCase() in invalidInlineTargets;\n        const createId = elm => {\n          let id = elm.id;\n          if (!id) {\n            id = get$a(elm, 'name').filter(name => !DOM.get(name)).getOrThunk(DOM.uniqueId);\n            elm.setAttribute('id', id);\n          }\n          return id;\n        };\n        const execCallback = name => {\n          const callback = options[name];\n          if (!callback) {\n            return;\n          }\n          return callback.apply(self, []);\n        };\n        const findTargets = options => {\n          if (Env.browser.isIE() || Env.browser.isEdge()) {\n            initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tiny.cloud/docs/tinymce/6/support/#supportedwebbrowsers');\n            return [];\n          } else if (isQuirksMode) {\n            initError('Failed to initialize the editor as the document is not in standards mode. ' + 'TinyMCE requires standards mode.');\n            return [];\n          } else if (isString(options.selector)) {\n            return DOM.select(options.selector);\n          } else if (isNonNullable(options.target)) {\n            return [options.target];\n          } else {\n            return [];\n          }\n        };\n        let provideResults = editors => {\n          result = editors;\n        };\n        const initEditors = () => {\n          let initCount = 0;\n          const editors = [];\n          let targets;\n          const createEditor = (id, options, targetElm) => {\n            const editor = new Editor(id, options, self);\n            editors.push(editor);\n            editor.on('init', () => {\n              if (++initCount === targets.length) {\n                provideResults(editors);\n              }\n            });\n            editor.targetElm = editor.targetElm || targetElm;\n            editor.render();\n          };\n          DOM.unbind(window, 'ready', initEditors);\n          execCallback('onpageload');\n          targets = unique$1(findTargets(options));\n          Tools.each(targets, elm => {\n            purgeDestroyedEditor(self.get(elm.id));\n          });\n          targets = Tools.grep(targets, elm => {\n            return !self.get(elm.id);\n          });\n          if (targets.length === 0) {\n            provideResults([]);\n          } else {\n            each(targets, elm => {\n              if (isInvalidInlineTarget(options, elm)) {\n                initError('Could not initialize inline editor on invalid inline target element', elm);\n              } else {\n                createEditor(createId(elm), options, elm);\n              }\n            });\n          }\n        };\n        DOM.bind(window, 'ready', initEditors);\n        return new Promise(resolve => {\n          if (result) {\n            resolve(result);\n          } else {\n            provideResults = editors => {\n              resolve(editors);\n            };\n          }\n        });\n      },\n      get(id) {\n        if (arguments.length === 0) {\n          return editors.slice(0);\n        } else if (isString(id)) {\n          return find$2(editors, editor => {\n            return editor.id === id;\n          }).getOr(null);\n        } else if (isNumber(id)) {\n          return editors[id] ? editors[id] : null;\n        } else {\n          return null;\n        }\n      },\n      add(editor) {\n        const self = this;\n        const existingEditor = self.get(editor.id);\n        if (existingEditor === editor) {\n          return editor;\n        }\n        if (existingEditor === null) {\n          editors.push(editor);\n        }\n        toggleGlobalEvents(true);\n        self.activeEditor = editor;\n        self.dispatch('AddEditor', {\n          editor\n        });\n        if (!beforeUnloadDelegate) {\n          beforeUnloadDelegate = e => {\n            const event = self.dispatch('BeforeUnload');\n            if (event.returnValue) {\n              e.preventDefault();\n              e.returnValue = event.returnValue;\n              return event.returnValue;\n            }\n          };\n          window.addEventListener('beforeunload', beforeUnloadDelegate);\n        }\n        return editor;\n      },\n      createEditor(id, options) {\n        return this.add(new Editor(id, options, this));\n      },\n      remove(selector) {\n        const self = this;\n        let editor;\n        if (!selector) {\n          for (let i = editors.length - 1; i >= 0; i--) {\n            self.remove(editors[i]);\n          }\n          return;\n        }\n        if (isString(selector)) {\n          each(DOM.select(selector), elm => {\n            editor = self.get(elm.id);\n            if (editor) {\n              self.remove(editor);\n            }\n          });\n          return;\n        }\n        editor = selector;\n        if (isNull(self.get(editor.id))) {\n          return null;\n        }\n        if (removeEditorFromList(editor)) {\n          self.dispatch('RemoveEditor', {\n            editor\n          });\n        }\n        if (editors.length === 0) {\n          window.removeEventListener('beforeunload', beforeUnloadDelegate);\n        }\n        editor.remove();\n        toggleGlobalEvents(editors.length > 0);\n        return editor;\n      },\n      execCommand(cmd, ui, value) {\n        var _a;\n        const self = this;\n        const editorId = isObject(value) ? (_a = value.id) !== null && _a !== void 0 ? _a : value.index : value;\n        switch (cmd) {\n          case 'mceAddEditor':\n            {\n              if (!self.get(editorId)) {\n                const editorOptions = value.options;\n                new Editor(editorId, editorOptions, self).render();\n              }\n              return true;\n            }\n          case 'mceRemoveEditor':\n            {\n              const editor = self.get(editorId);\n              if (editor) {\n                editor.remove();\n              }\n              return true;\n            }\n          case 'mceToggleEditor':\n            {\n              const editor = self.get(editorId);\n              if (!editor) {\n                self.execCommand('mceAddEditor', false, value);\n                return true;\n              }\n              if (editor.isHidden()) {\n                editor.show();\n              } else {\n                editor.hide();\n              }\n              return true;\n            }\n        }\n        if (self.activeEditor) {\n          return self.activeEditor.execCommand(cmd, ui, value);\n        }\n        return false;\n      },\n      triggerSave: () => {\n        each(editors, editor => {\n          editor.save();\n        });\n      },\n      addI18n: (code, items) => {\n        I18n.add(code, items);\n      },\n      translate: text => {\n        return I18n.translate(text);\n      },\n      setActive(editor) {\n        const activeEditor = this.activeEditor;\n        if (this.activeEditor !== editor) {\n          if (activeEditor) {\n            activeEditor.dispatch('deactivate', {\n              relatedTarget: editor\n            });\n          }\n          editor.dispatch('activate', {\n            relatedTarget: activeEditor\n          });\n        }\n        this.activeEditor = editor;\n      },\n      _setBaseUrl(baseUrl) {\n        this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\\/+$/, ''));\n        this.baseURI = new URI(this.baseURL);\n      }\n    };\n    EditorManager.setup();\n\n    const setup = () => {\n      const dataValue = value$2();\n      const FakeClipboardItem = items => ({\n        items,\n        types: keys(items),\n        getType: type => get$a(items, type).getOrUndefined()\n      });\n      const write = data => {\n        dataValue.set(data);\n      };\n      const read = () => dataValue.get().getOrUndefined();\n      const clear = dataValue.clear;\n      return {\n        FakeClipboardItem,\n        write,\n        read,\n        clear\n      };\n    };\n    const FakeClipboard = setup();\n\n    const min = Math.min,\n      max = Math.max,\n      round = Math.round;\n    const relativePosition = (rect, targetRect, rel) => {\n      let x = targetRect.x;\n      let y = targetRect.y;\n      const w = rect.w;\n      const h = rect.h;\n      const targetW = targetRect.w;\n      const targetH = targetRect.h;\n      const relChars = (rel || '').split('');\n      if (relChars[0] === 'b') {\n        y += targetH;\n      }\n      if (relChars[1] === 'r') {\n        x += targetW;\n      }\n      if (relChars[0] === 'c') {\n        y += round(targetH / 2);\n      }\n      if (relChars[1] === 'c') {\n        x += round(targetW / 2);\n      }\n      if (relChars[3] === 'b') {\n        y -= h;\n      }\n      if (relChars[4] === 'r') {\n        x -= w;\n      }\n      if (relChars[3] === 'c') {\n        y -= round(h / 2);\n      }\n      if (relChars[4] === 'c') {\n        x -= round(w / 2);\n      }\n      return create$2(x, y, w, h);\n    };\n    const findBestRelativePosition = (rect, targetRect, constrainRect, rels) => {\n      for (let i = 0; i < rels.length; i++) {\n        const pos = relativePosition(rect, targetRect, rels[i]);\n        if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) {\n          return rels[i];\n        }\n      }\n      return null;\n    };\n    const inflate = (rect, w, h) => {\n      return create$2(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);\n    };\n    const intersect = (rect, cropRect) => {\n      const x1 = max(rect.x, cropRect.x);\n      const y1 = max(rect.y, cropRect.y);\n      const x2 = min(rect.x + rect.w, cropRect.x + cropRect.w);\n      const y2 = min(rect.y + rect.h, cropRect.y + cropRect.h);\n      if (x2 - x1 < 0 || y2 - y1 < 0) {\n        return null;\n      }\n      return create$2(x1, y1, x2 - x1, y2 - y1);\n    };\n    const clamp = (rect, clampRect, fixedSize) => {\n      let x1 = rect.x;\n      let y1 = rect.y;\n      let x2 = rect.x + rect.w;\n      let y2 = rect.y + rect.h;\n      const cx2 = clampRect.x + clampRect.w;\n      const cy2 = clampRect.y + clampRect.h;\n      const underflowX1 = max(0, clampRect.x - x1);\n      const underflowY1 = max(0, clampRect.y - y1);\n      const overflowX2 = max(0, x2 - cx2);\n      const overflowY2 = max(0, y2 - cy2);\n      x1 += underflowX1;\n      y1 += underflowY1;\n      if (fixedSize) {\n        x2 += underflowX1;\n        y2 += underflowY1;\n        x1 -= overflowX2;\n        y1 -= overflowY2;\n      }\n      x2 -= overflowX2;\n      y2 -= overflowY2;\n      return create$2(x1, y1, x2 - x1, y2 - y1);\n    };\n    const create$2 = (x, y, w, h) => {\n      return {\n        x,\n        y,\n        w,\n        h\n      };\n    };\n    const fromClientRect = clientRect => {\n      return create$2(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\n    };\n    const Rect = {\n      inflate,\n      relativePosition,\n      findBestRelativePosition,\n      intersect,\n      clamp,\n      create: create$2,\n      fromClientRect\n    };\n\n    const awaiter = (resolveCb, rejectCb, timeout = 1000) => {\n      let done = false;\n      let timer = null;\n      const complete = completer => (...args) => {\n        if (!done) {\n          done = true;\n          if (timer !== null) {\n            clearTimeout(timer);\n            timer = null;\n          }\n          completer.apply(null, args);\n        }\n      };\n      const resolve = complete(resolveCb);\n      const reject = complete(rejectCb);\n      const start = (...args) => {\n        if (!done && timer === null) {\n          timer = setTimeout(() => reject.apply(null, args), timeout);\n        }\n      };\n      return {\n        start,\n        resolve,\n        reject\n      };\n    };\n    const create$1 = () => {\n      const tasks = {};\n      const resultFns = {};\n      const resources = {};\n      const load = (id, url) => {\n        const loadErrMsg = \"Script at URL \\\"\".concat(url, \"\\\" failed to load\");\n        const runErrMsg = \"Script at URL \\\"\".concat(url, \"\\\" did not call `tinymce.Resource.add('\").concat(id, \"', data)` within 1 second\");\n        if (tasks[id] !== undefined) {\n          return tasks[id];\n        } else {\n          const task = new Promise((resolve, reject) => {\n            const waiter = awaiter(resolve, reject);\n            resultFns[id] = waiter.resolve;\n            ScriptLoader.ScriptLoader.loadScript(url).then(() => waiter.start(runErrMsg), () => waiter.reject(loadErrMsg));\n          });\n          tasks[id] = task;\n          return task;\n        }\n      };\n      const add = (id, data) => {\n        if (resultFns[id] !== undefined) {\n          resultFns[id](data);\n          delete resultFns[id];\n        }\n        tasks[id] = Promise.resolve(data);\n        resources[id] = data;\n      };\n      const has = id => {\n        return id in resources;\n      };\n      const unload = id => {\n        delete tasks[id];\n      };\n      const get = id => resources[id];\n      return {\n        load,\n        add,\n        has,\n        get,\n        unload\n      };\n    };\n    const Resource = create$1();\n\n    const create = () => (() => {\n      let data = {};\n      let keys = [];\n      const storage = {\n        getItem: key => {\n          const item = data[key];\n          return item ? item : null;\n        },\n        setItem: (key, value) => {\n          keys.push(key);\n          data[key] = String(value);\n        },\n        key: index => {\n          return keys[index];\n        },\n        removeItem: key => {\n          keys = keys.filter(k => k === key);\n          delete data[key];\n        },\n        clear: () => {\n          keys = [];\n          data = {};\n        },\n        length: 0\n      };\n      Object.defineProperty(storage, 'length', {\n        get: () => keys.length,\n        configurable: false,\n        enumerable: false\n      });\n      return storage;\n    })();\n\n    let localStorage;\n    try {\n      const test = '__storage_test__';\n      localStorage = window.localStorage;\n      localStorage.setItem(test, test);\n      localStorage.removeItem(test);\n    } catch (e) {\n      localStorage = create();\n    }\n    var LocalStorage = localStorage;\n\n    const publicApi = {\n      geom: {\n        Rect\n      },\n      util: {\n        Delay,\n        Tools,\n        VK,\n        URI,\n        EventDispatcher,\n        Observable,\n        I18n,\n        LocalStorage,\n        ImageUploader\n      },\n      dom: {\n        EventUtils,\n        TreeWalker: DomTreeWalker,\n        TextSeeker,\n        DOMUtils,\n        ScriptLoader,\n        RangeUtils,\n        Serializer: DomSerializer,\n        StyleSheetLoader,\n        ControlSelection,\n        BookmarkManager,\n        Selection: EditorSelection,\n        Event: EventUtils.Event\n      },\n      html: {\n        Styles,\n        Entities,\n        Node: AstNode,\n        Schema,\n        DomParser,\n        Writer,\n        Serializer: HtmlSerializer\n      },\n      Env,\n      AddOnManager,\n      Annotator,\n      Formatter,\n      UndoManager,\n      EditorCommands,\n      WindowManager,\n      NotificationManager,\n      EditorObservable,\n      Shortcuts,\n      Editor,\n      FocusManager,\n      EditorManager,\n      DOM: DOMUtils.DOM,\n      ScriptLoader: ScriptLoader.ScriptLoader,\n      PluginManager,\n      ThemeManager,\n      ModelManager,\n      IconManager,\n      Resource,\n      FakeClipboard,\n      trim: Tools.trim,\n      isArray: Tools.isArray,\n      is: Tools.is,\n      toArray: Tools.toArray,\n      makeMap: Tools.makeMap,\n      each: Tools.each,\n      map: Tools.map,\n      grep: Tools.grep,\n      inArray: Tools.inArray,\n      extend: Tools.extend,\n      walk: Tools.walk,\n      resolve: Tools.resolve,\n      explode: Tools.explode,\n      _addCacheSuffix: Tools._addCacheSuffix\n    };\n    const tinymce$1 = Tools.extend(EditorManager, publicApi);\n\n    const exportToModuleLoaders = tinymce => {\n      if (typeof module === 'object') {\n        try {\n          module.exports = tinymce;\n        } catch (_) {}\n      }\n    };\n    const exportToWindowGlobal = tinymce => {\n      window.tinymce = tinymce;\n      window.tinyMCE = tinymce;\n    };\n    if (!(window.tinymce || window.tinyMCE)) {\n      exportToWindowGlobal(tinymce$1);\n    }\n    exportToModuleLoaders(tinymce$1);\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    let unique = 0;\n    const generate = prefix => {\n      const date = new Date();\n      const time = date.getTime();\n      const random = Math.floor(Math.random() * 1000000000);\n      unique++;\n      return prefix + '_' + random + unique + String(time);\n    };\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const isString = isType$1('string');\n    const isBoolean = isSimpleType('boolean');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n\n    const compose1 = (fbc, fab) => a => fbc(fab(a));\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const tripleEquals = (a, b) => {\n      return a === b;\n    };\n    const never = constant(false);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const nativeIndexOf = Array.prototype.indexOf;\n    const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n    const contains = (xs, x) => rawIndexOf(xs, x) > -1;\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const filter = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    const foldl = (xs, f, acc) => {\n      each$1(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n\n    const keys = Object.keys;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n\n    typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const COMMENT = 8;\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const name = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n    const type = element => element.dom.nodeType;\n    const isType = t => element => type(element) === t;\n    const isComment = element => type(element) === COMMENT || name(element) === '#comment';\n    const isElement = isType(ELEMENT);\n    const isText = isType(TEXT);\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set$2 = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const setAll = (element, attrs) => {\n      const dom = element.dom;\n      each(attrs, (v, k) => {\n        rawSet(dom, k, v);\n      });\n    };\n    const get$2 = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const getOpt = (element, key) => Optional.from(get$2(element, key));\n    const remove$2 = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n    const clone = element => foldl(element.dom.attributes, (acc, attr) => {\n      acc[attr.name] = attr.value;\n      return acc;\n    }, {});\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    const is$2 = (element, selector) => {\n      const dom = element.dom;\n      if (dom.nodeType !== ELEMENT) {\n        return false;\n      } else {\n        const elem = dom;\n        if (elem.matches !== undefined) {\n          return elem.matches(selector);\n        } else if (elem.msMatchesSelector !== undefined) {\n          return elem.msMatchesSelector(selector);\n        } else if (elem.webkitMatchesSelector !== undefined) {\n          return elem.webkitMatchesSelector(selector);\n        } else if (elem.mozMatchesSelector !== undefined) {\n          return elem.mozMatchesSelector(selector);\n        } else {\n          throw new Error('Browser lacks native selectors');\n        }\n      }\n    };\n    const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;\n    const all = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom);\n    };\n    const one = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n    };\n\n    const eq = (e1, e2) => e1.dom === e2.dom;\n    const is$1 = is$2;\n\n    const is = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n\n    const blank = r => s => s.replace(r, '');\n    const trim = blank(/^\\s+|\\s+$/g);\n\n    const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n    const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const parents = (element, isRoot) => {\n      const stop = isFunction(isRoot) ? isRoot : never;\n      let dom = element.dom;\n      const ret = [];\n      while (dom.parentNode !== null && dom.parentNode !== undefined) {\n        const rawParent = dom.parentNode;\n        const p = SugarElement.fromDom(rawParent);\n        ret.push(p);\n        if (stop(p) === true) {\n          break;\n        } else {\n          dom = rawParent;\n        }\n      }\n      return ret;\n    };\n    const prevSibling = element => Optional.from(element.dom.previousSibling).map(SugarElement.fromDom);\n    const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);\n    const children = element => map(element.dom.childNodes, SugarElement.fromDom);\n    const child = (element, index) => {\n      const cs = element.dom.childNodes;\n      return Optional.from(cs[index]).map(SugarElement.fromDom);\n    };\n    const firstChild = element => child(element, 0);\n\n    const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getShadowRoot = e => {\n      const r = getRootNode(e);\n      return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n    };\n    const getShadowHost = e => SugarElement.fromDom(e.dom.host);\n\n    const inBody = element => {\n      const dom = isText(element) ? element.dom.parentNode : element.dom;\n      if (dom === undefined || dom === null || dom.ownerDocument === null) {\n        return false;\n      }\n      const doc = dom.ownerDocument;\n      return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n    };\n\n    const internalSet = (dom, property, value) => {\n      if (!isString(value)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value);\n      }\n      if (isSupported(dom)) {\n        dom.style.setProperty(property, value);\n      }\n    };\n    const internalRemove = (dom, property) => {\n      if (isSupported(dom)) {\n        dom.style.removeProperty(property);\n      }\n    };\n    const set$1 = (element, property, value) => {\n      const dom = element.dom;\n      internalSet(dom, property, value);\n    };\n    const get$1 = (element, property) => {\n      const dom = element.dom;\n      const styles = window.getComputedStyle(dom);\n      const r = styles.getPropertyValue(property);\n      return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n    };\n    const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n    const getRaw = (element, property) => {\n      const dom = element.dom;\n      const raw = getUnsafeProperty(dom, property);\n      return Optional.from(raw).filter(r => r.length > 0);\n    };\n    const remove$1 = (element, property) => {\n      const dom = element.dom;\n      internalRemove(dom, property);\n      if (is(getOpt(element, 'style').map(trim), '')) {\n        remove$2(element, 'style');\n      }\n    };\n\n    const before = (marker, element) => {\n      const parent$1 = parent(marker);\n      parent$1.each(v => {\n        v.dom.insertBefore(element.dom, marker.dom);\n      });\n    };\n    const after$1 = (marker, element) => {\n      const sibling = nextSibling(marker);\n      sibling.fold(() => {\n        const parent$1 = parent(marker);\n        parent$1.each(v => {\n          append$1(v, element);\n        });\n      }, v => {\n        before(v, element);\n      });\n    };\n    const prepend = (parent, element) => {\n      const firstChild$1 = firstChild(parent);\n      firstChild$1.fold(() => {\n        append$1(parent, element);\n      }, v => {\n        parent.dom.insertBefore(element.dom, v.dom);\n      });\n    };\n    const append$1 = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n    const wrap = (element, wrapper) => {\n      before(element, wrapper);\n      append$1(wrapper, element);\n    };\n\n    const after = (marker, elements) => {\n      each$1(elements, (x, i) => {\n        const e = i === 0 ? marker : elements[i - 1];\n        after$1(e, x);\n      });\n    };\n    const append = (parent, elements) => {\n      each$1(elements, x => {\n        append$1(parent, x);\n      });\n    };\n\n    const descendants$1 = (scope, predicate) => {\n      let result = [];\n      each$1(children(scope), x => {\n        if (predicate(x)) {\n          result = result.concat([x]);\n        }\n        result = result.concat(descendants$1(x, predicate));\n      });\n      return result;\n    };\n\n    var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n      if (is(scope, a)) {\n        return Optional.some(scope);\n      } else if (isFunction(isRoot) && isRoot(scope)) {\n        return Optional.none();\n      } else {\n        return ancestor(scope, a, isRoot);\n      }\n    };\n\n    const ancestor$1 = (scope, predicate, isRoot) => {\n      let element = scope.dom;\n      const stop = isFunction(isRoot) ? isRoot : never;\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        if (predicate(el)) {\n          return Optional.some(el);\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n\n    const remove = element => {\n      const dom = element.dom;\n      if (dom.parentNode !== null) {\n        dom.parentNode.removeChild(dom);\n      }\n    };\n    const unwrap = wrapper => {\n      const children$1 = children(wrapper);\n      if (children$1.length > 0) {\n        after(wrapper, children$1);\n      }\n      remove(wrapper);\n    };\n\n    const descendants = (scope, selector) => all(selector, scope);\n\n    const ancestor = (scope, selector, isRoot) => ancestor$1(scope, e => is$2(e, selector), isRoot);\n    const descendant = (scope, selector) => one(selector, scope);\n    const closest = (scope, selector, isRoot) => {\n      const is = (element, selector) => is$2(element, selector);\n      return ClosestOrAncestor(is, ancestor, scope, selector, isRoot);\n    };\n\n    const NodeValue = (is, name) => {\n      const get = element => {\n        if (!is(element)) {\n          throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n        }\n        return getOption(element).getOr('');\n      };\n      const getOption = element => is(element) ? Optional.from(element.dom.nodeValue) : Optional.none();\n      const set = (element, value) => {\n        if (!is(element)) {\n          throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n        }\n        element.dom.nodeValue = value;\n      };\n      return {\n        get,\n        getOption,\n        set\n      };\n    };\n\n    const api = NodeValue(isText, 'text');\n    const get = element => api.get(element);\n    const set = (element, value) => api.set(element, value);\n\n    var TagBoundaries = ['body', 'p', 'div', 'article', 'aside', 'figcaption', 'figure', 'footer', 'header', 'nav', 'section', 'ol', 'ul', 'li', 'table', 'thead', 'tbody', 'tfoot', 'caption', 'tr', 'td', 'th', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'pre', 'address'];\n\n    var DomUniverse = () => {\n      const clone$1 = element => {\n        return SugarElement.fromDom(element.dom.cloneNode(false));\n      };\n      const document = element => documentOrOwner(element).dom;\n      const isBoundary = element => {\n        if (!isElement(element)) {\n          return false;\n        }\n        if (name(element) === 'body') {\n          return true;\n        }\n        return contains(TagBoundaries, name(element));\n      };\n      const isEmptyTag = element => {\n        if (!isElement(element)) {\n          return false;\n        }\n        return contains(['br', 'img', 'hr', 'input'], name(element));\n      };\n      const isNonEditable = element => isElement(element) && get$2(element, 'contenteditable') === 'false';\n      const comparePosition = (element, other) => {\n        return element.dom.compareDocumentPosition(other.dom);\n      };\n      const copyAttributesTo = (source, destination) => {\n        const as = clone(source);\n        setAll(destination, as);\n      };\n      const isSpecial = element => {\n        const tag = name(element);\n        return contains(['script', 'noscript', 'iframe', 'noframes', 'noembed', 'title', 'style', 'textarea', 'xmp'], tag);\n      };\n      const getLanguage = element => isElement(element) ? getOpt(element, 'lang') : Optional.none();\n      return {\n        up: constant({\n          selector: ancestor,\n          closest: closest,\n          predicate: ancestor$1,\n          all: parents\n        }),\n        down: constant({\n          selector: descendants,\n          predicate: descendants$1\n        }),\n        styles: constant({\n          get: get$1,\n          getRaw: getRaw,\n          set: set$1,\n          remove: remove$1\n        }),\n        attrs: constant({\n          get: get$2,\n          set: set$2,\n          remove: remove$2,\n          copyTo: copyAttributesTo\n        }),\n        insert: constant({\n          before: before,\n          after: after$1,\n          afterAll: after,\n          append: append$1,\n          appendAll: append,\n          prepend: prepend,\n          wrap: wrap\n        }),\n        remove: constant({\n          unwrap: unwrap,\n          remove: remove\n        }),\n        create: constant({\n          nu: SugarElement.fromTag,\n          clone: clone$1,\n          text: SugarElement.fromText\n        }),\n        query: constant({\n          comparePosition,\n          prevSibling: prevSibling,\n          nextSibling: nextSibling\n        }),\n        property: constant({\n          children: children,\n          name: name,\n          parent: parent,\n          document,\n          isText: isText,\n          isComment: isComment,\n          isElement: isElement,\n          isSpecial,\n          getLanguage,\n          getText: get,\n          setText: set,\n          isBoundary,\n          isEmptyTag,\n          isNonEditable\n        }),\n        eq: eq,\n        is: is$1\n      };\n    };\n\n    const point = (element, offset) => ({\n      element,\n      offset\n    });\n\n    const scan = (universe, element, direction) => {\n      if (universe.property().isText(element) && universe.property().getText(element).trim().length === 0 || universe.property().isComment(element)) {\n        return direction(element).bind(elem => {\n          return scan(universe, elem, direction).orThunk(() => {\n            return Optional.some(elem);\n          });\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const toEnd = (universe, element) => {\n      if (universe.property().isText(element)) {\n        return universe.property().getText(element).length;\n      }\n      const children = universe.property().children(element);\n      return children.length;\n    };\n    const freefallRtl$2 = (universe, element) => {\n      const candidate = scan(universe, element, universe.query().prevSibling).getOr(element);\n      if (universe.property().isText(candidate)) {\n        return point(candidate, toEnd(universe, candidate));\n      }\n      const children = universe.property().children(candidate);\n      return children.length > 0 ? freefallRtl$2(universe, children[children.length - 1]) : point(candidate, toEnd(universe, candidate));\n    };\n\n    const freefallRtl$1 = freefallRtl$2;\n\n    const universe = DomUniverse();\n    const freefallRtl = element => {\n      return freefallRtl$1(universe, element);\n    };\n\n    const fireToggleAccordionEvent = (editor, element, state) => editor.dispatch('ToggledAccordion', {\n      element,\n      state\n    });\n    const fireToggleAllAccordionsEvent = (editor, elements, state) => editor.dispatch('ToggledAllAccordions', {\n      elements,\n      state\n    });\n\n    const accordionTag = 'details';\n    const accordionDetailsClass = 'mce-accordion';\n    const accordionSummaryClass = 'mce-accordion-summary';\n    const accordionBodyWrapperClass = 'mce-accordion-body';\n    const accordionBodyWrapperTag = 'div';\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const isSummary = node => (node === null || node === void 0 ? void 0 : node.nodeName) === 'SUMMARY';\n    const isDetails = node => (node === null || node === void 0 ? void 0 : node.nodeName) === 'DETAILS';\n    const isOpen = details => details.hasAttribute('open');\n    const isInSummary = editor => {\n      const node = editor.selection.getNode();\n      return isSummary(node) || Boolean(editor.dom.getParent(node, isSummary));\n    };\n    const isAtDetailsStart = editor => {\n      const rng = editor.selection.getRng();\n      return isDetails(rng.startContainer) && rng.collapsed && rng.startOffset === 0;\n    };\n    const isInsertAllowed = editor => !isInSummary(editor) && editor.dom.isEditable(editor.selection.getNode());\n    const getSelectedDetails = editor => Optional.from(editor.dom.getParent(editor.selection.getNode(), isDetails));\n    const isDetailsSelected = editor => getSelectedDetails(editor).isSome();\n    const insertBogus = element => {\n      element.innerHTML = '<br data-mce-bogus=\"1\" />';\n      return element;\n    };\n    const createParagraph = editor => insertBogus(editor.dom.create('p'));\n    const createSummary = editor => insertBogus(editor.dom.create('summary'));\n    const insertAndSelectParagraphAfter = (editor, target) => {\n      const paragraph = createParagraph(editor);\n      target.insertAdjacentElement('afterend', paragraph);\n      editor.selection.setCursorLocation(paragraph, 0);\n    };\n    const normalizeContent = (editor, accordion) => {\n      if (isSummary(accordion === null || accordion === void 0 ? void 0 : accordion.lastChild)) {\n        const paragraph = createParagraph(editor);\n        accordion.appendChild(paragraph);\n        editor.selection.setCursorLocation(paragraph, 0);\n      }\n    };\n    const normalizeSummary = (editor, accordion) => {\n      if (!isSummary(accordion === null || accordion === void 0 ? void 0 : accordion.firstChild)) {\n        const summary = createSummary(editor);\n        accordion.prepend(summary);\n        editor.selection.setCursorLocation(summary, 0);\n      }\n    };\n    const normalizeAccordion = editor => accordion => {\n      normalizeContent(editor, accordion);\n      normalizeSummary(editor, accordion);\n    };\n    const normalizeDetails = editor => {\n      global$3.each(global$3.grep(editor.dom.select('details', editor.getBody())), normalizeAccordion(editor));\n    };\n\n    const insertAccordion = editor => {\n      if (!isInsertAllowed(editor)) {\n        return;\n      }\n      const editorBody = SugarElement.fromDom(editor.getBody());\n      const uid = generate('acc');\n      const summaryText = editor.dom.encode(editor.selection.getRng().toString() || editor.translate('Accordion summary...'));\n      const bodyText = editor.dom.encode(editor.translate('Accordion body...'));\n      const accordionSummaryHtml = \"<summary class=\\\"\".concat(accordionSummaryClass, \"\\\">\").concat(summaryText, \"</summary>\");\n      const accordionBodyHtml = \"<\".concat(accordionBodyWrapperTag, \" class=\\\"\").concat(accordionBodyWrapperClass, \"\\\"><p>\").concat(bodyText, \"</p></\").concat(accordionBodyWrapperTag, \">\");\n      editor.undoManager.transact(() => {\n        editor.insertContent([\"<details data-mce-id=\\\"\".concat(uid, \"\\\" class=\\\"\").concat(accordionDetailsClass, \"\\\" open=\\\"open\\\">\"), accordionSummaryHtml, accordionBodyHtml, \"</details>\"].join(''));\n        descendant(editorBody, \"[data-mce-id=\\\"\".concat(uid, \"\\\"]\")).each(detailsElm => {\n          remove$2(detailsElm, 'data-mce-id');\n          descendant(detailsElm, \"summary\").each(summaryElm => {\n            const rng = editor.dom.createRng();\n            const des = freefallRtl(summaryElm);\n            rng.setStart(des.element.dom, des.offset);\n            rng.setEnd(des.element.dom, des.offset);\n            editor.selection.setRng(rng);\n          });\n        });\n      });\n    };\n    const toggleDetailsElement = (details, state) => {\n      const shouldOpen = state !== null && state !== void 0 ? state : !isOpen(details);\n      if (shouldOpen) {\n        details.setAttribute('open', 'open');\n      } else {\n        details.removeAttribute('open');\n      }\n      return shouldOpen;\n    };\n    const toggleAccordion = (editor, state) => {\n      getSelectedDetails(editor).each(details => {\n        fireToggleAccordionEvent(editor, details, toggleDetailsElement(details, state));\n      });\n    };\n    const removeAccordion = editor => {\n      getSelectedDetails(editor).each(details => {\n        const {\n          nextSibling\n        } = details;\n        if (nextSibling) {\n          editor.selection.select(nextSibling, true);\n          editor.selection.collapse(true);\n        } else {\n          insertAndSelectParagraphAfter(editor, details);\n        }\n        details.remove();\n      });\n    };\n    const toggleAllAccordions = (editor, state) => {\n      const accordions = Array.from(editor.getBody().querySelectorAll('details'));\n      if (accordions.length === 0) {\n        return;\n      }\n      each$1(accordions, accordion => toggleDetailsElement(accordion, state !== null && state !== void 0 ? state : !isOpen(accordion)));\n      fireToggleAllAccordionsEvent(editor, accordions, state);\n    };\n\n    const register$1 = editor => {\n      editor.addCommand('InsertAccordion', () => insertAccordion(editor));\n      editor.addCommand('ToggleAccordion', (_ui, value) => toggleAccordion(editor, value));\n      editor.addCommand('ToggleAllAccordions', (_ui, value) => toggleAllAccordions(editor, value));\n      editor.addCommand('RemoveAccordion', () => removeAccordion(editor));\n    };\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n    const getClassList = node => {\n      var _a, _b;\n      return (_b = (_a = node.attr('class')) === null || _a === void 0 ? void 0 : _a.split(' ')) !== null && _b !== void 0 ? _b : [];\n    };\n    const addClasses = (node, classes) => {\n      const classListSet = new Set([...getClassList(node), ...classes]);\n      const newClassList = Array.from(classListSet);\n      if (newClassList.length > 0) {\n        node.attr('class', newClassList.join(' '));\n      }\n    };\n    const removeClasses = (node, classes) => {\n      const newClassList = filter(getClassList(node), clazz => !classes.has(clazz));\n      node.attr('class', newClassList.length > 0 ? newClassList.join(' ') : null);\n    };\n    const isAccordionDetailsNode = node => node.name === accordionTag && contains(getClassList(node), accordionDetailsClass);\n    const isAccordionBodyWrapperNode = node => node.name === accordionBodyWrapperTag && contains(getClassList(node), accordionBodyWrapperClass);\n    const getAccordionChildren = accordionNode => {\n      const children = accordionNode.children();\n      let summaryNode;\n      let wrapperNode;\n      const otherNodes = [];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.name === 'summary' && isNullable(summaryNode)) {\n          summaryNode = child;\n        } else if (isAccordionBodyWrapperNode(child) && isNullable(wrapperNode)) {\n          wrapperNode = child;\n        } else {\n          otherNodes.push(child);\n        }\n      }\n      return {\n        summaryNode,\n        wrapperNode,\n        otherNodes\n      };\n    };\n    const padInputNode = node => {\n      const br = new global$2('br', 1);\n      br.attr('data-mce-bogus', '1');\n      node.empty();\n      node.append(br);\n    };\n    const setup$2 = editor => {\n      editor.on('PreInit', () => {\n        const {\n          serializer,\n          parser\n        } = editor;\n        parser.addNodeFilter(accordionTag, nodes => {\n          for (let i = 0; i < nodes.length; i++) {\n            const node = nodes[i];\n            if (isAccordionDetailsNode(node)) {\n              const accordionNode = node;\n              const {\n                summaryNode,\n                wrapperNode,\n                otherNodes\n              } = getAccordionChildren(accordionNode);\n              const hasSummaryNode = isNonNullable(summaryNode);\n              const newSummaryNode = hasSummaryNode ? summaryNode : new global$2('summary', 1);\n              if (isNullable(newSummaryNode.firstChild)) {\n                padInputNode(newSummaryNode);\n              }\n              addClasses(newSummaryNode, [accordionSummaryClass]);\n              if (!hasSummaryNode) {\n                if (isNonNullable(accordionNode.firstChild)) {\n                  accordionNode.insert(newSummaryNode, accordionNode.firstChild, true);\n                } else {\n                  accordionNode.append(newSummaryNode);\n                }\n              }\n              const hasWrapperNode = isNonNullable(wrapperNode);\n              const newWrapperNode = hasWrapperNode ? wrapperNode : new global$2(accordionBodyWrapperTag, 1);\n              newWrapperNode.attr('data-mce-bogus', '1');\n              addClasses(newWrapperNode, [accordionBodyWrapperClass]);\n              if (otherNodes.length > 0) {\n                for (let j = 0; j < otherNodes.length; j++) {\n                  const otherNode = otherNodes[j];\n                  newWrapperNode.append(otherNode);\n                }\n              }\n              if (isNullable(newWrapperNode.firstChild)) {\n                const pNode = new global$2('p', 1);\n                padInputNode(pNode);\n                newWrapperNode.append(pNode);\n              }\n              if (!hasWrapperNode) {\n                accordionNode.append(newWrapperNode);\n              }\n            }\n          }\n        });\n        serializer.addNodeFilter(accordionTag, nodes => {\n          const summaryClassRemoveSet = new Set([accordionSummaryClass]);\n          for (let i = 0; i < nodes.length; i++) {\n            const node = nodes[i];\n            if (isAccordionDetailsNode(node)) {\n              const accordionNode = node;\n              const {\n                summaryNode,\n                wrapperNode\n              } = getAccordionChildren(accordionNode);\n              if (isNonNullable(summaryNode)) {\n                removeClasses(summaryNode, summaryClassRemoveSet);\n              }\n              if (isNonNullable(wrapperNode)) {\n                wrapperNode.unwrap();\n              }\n            }\n          }\n        });\n      });\n    };\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    const setupEnterKeyInSummary = editor => {\n      editor.on('keydown', event => {\n        if (!event.shiftKey && event.keyCode === global$1.ENTER && isInSummary(editor) || isAtDetailsStart(editor)) {\n          event.preventDefault();\n          editor.execCommand('ToggleAccordion');\n        }\n      });\n    };\n    const setup$1 = editor => {\n      setupEnterKeyInSummary(editor);\n      editor.on('ExecCommand', e => {\n        const cmd = e.command.toLowerCase();\n        if ((cmd === 'delete' || cmd === 'forwarddelete') && isDetailsSelected(editor)) {\n          normalizeDetails(editor);\n        }\n      });\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.Env');\n\n    const setup = editor => {\n      if (global.browser.isSafari()) {\n        editor.on('click', e => {\n          if (isSummary(e.target)) {\n            const summary = e.target;\n            const rng = editor.selection.getRng();\n            if (rng.collapsed && rng.startContainer === summary.parentNode && rng.startOffset === 0) {\n              editor.selection.setCursorLocation(summary, 0);\n            }\n          }\n        });\n      }\n    };\n\n    const onSetup = editor => buttonApi => {\n      const onNodeChange = () => buttonApi.setEnabled(isInsertAllowed(editor));\n      editor.on('NodeChange', onNodeChange);\n      return () => editor.off('NodeChange', onNodeChange);\n    };\n    const register = editor => {\n      const onAction = () => editor.execCommand('InsertAccordion');\n      editor.ui.registry.addButton('accordion', {\n        icon: 'accordion',\n        tooltip: 'Insert accordion',\n        onSetup: onSetup(editor),\n        onAction\n      });\n      editor.ui.registry.addMenuItem('accordion', {\n        icon: 'accordion',\n        text: 'Accordion',\n        onSetup: onSetup(editor),\n        onAction\n      });\n      editor.ui.registry.addToggleButton('accordiontoggle', {\n        icon: 'accordion-toggle',\n        tooltip: 'Toggle accordion',\n        onAction: () => editor.execCommand('ToggleAccordion')\n      });\n      editor.ui.registry.addToggleButton('accordionremove', {\n        icon: 'remove',\n        tooltip: 'Delete accordion',\n        onAction: () => editor.execCommand('RemoveAccordion')\n      });\n      editor.ui.registry.addContextToolbar('accordion', {\n        predicate: accordion => editor.dom.is(accordion, 'details') && editor.getBody().contains(accordion) && editor.dom.isEditable(accordion.parentNode),\n        items: 'accordiontoggle accordionremove',\n        scope: 'node',\n        position: 'node'\n      });\n    };\n\n    var Plugin = () => {\n      global$4.add('accordion', editor => {\n        register(editor);\n        register$1(editor);\n        setup$1(editor);\n        setup$2(editor);\n        setup(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const applyListFormat = (editor, listName, styleValue) => {\n      const cmd = listName === 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList';\n      editor.execCommand(cmd, false, styleValue === false ? null : {\n        'list-style-type': styleValue\n      });\n    };\n\n    const register$2 = editor => {\n      editor.addCommand('ApplyUnorderedListStyle', (ui, value) => {\n        applyListFormat(editor, 'UL', value['list-style-type']);\n      });\n      editor.addCommand('ApplyOrderedListStyle', (ui, value) => {\n        applyListFormat(editor, 'OL', value['list-style-type']);\n      });\n    };\n\n    const option = name => editor => editor.options.get(name);\n    const register$1 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('advlist_number_styles', {\n        processor: 'string[]',\n        default: 'default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman'.split(',')\n      });\n      registerOption('advlist_bullet_styles', {\n        processor: 'string[]',\n        default: 'default,circle,square'.split(',')\n      });\n    };\n    const getNumberStyles = option('advlist_number_styles');\n    const getBulletStyles = option('advlist_bullet_styles');\n\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const findUntil = (xs, pred, until) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(x);\n        } else if (until(x, i)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n\n    const isCustomList = list => /\\btox\\-/.test(list.className);\n    const isChildOfBody = (editor, elm) => {\n      return editor.dom.isChildOf(elm, editor.getBody());\n    };\n    const matchNodeNames = regex => node => isNonNullable(node) && regex.test(node.nodeName);\n    const isListNode = matchNodeNames(/^(OL|UL|DL)$/);\n    const isTableCellNode = matchNodeNames(/^(TH|TD)$/);\n    const inList = (editor, parents, nodeName) => findUntil(parents, parent => isListNode(parent) && !isCustomList(parent), isTableCellNode).exists(list => list.nodeName === nodeName && isChildOfBody(editor, list));\n    const getSelectedStyleType = editor => {\n      const listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');\n      const style = editor.dom.getStyle(listElm, 'listStyleType');\n      return Optional.from(style);\n    };\n    const isWithinNonEditable = (editor, element) => element !== null && !editor.dom.isEditable(element);\n    const isWithinNonEditableList = (editor, element) => {\n      const parentList = editor.dom.getParent(element, 'ol,ul,dl');\n      return isWithinNonEditable(editor, parentList) && editor.selection.isEditable();\n    };\n    const setNodeChangeHandler = (editor, nodeChangeHandler) => {\n      const initialNode = editor.selection.getNode();\n      nodeChangeHandler({\n        parents: editor.dom.getParents(initialNode),\n        element: initialNode\n      });\n      editor.on('NodeChange', nodeChangeHandler);\n      return () => editor.off('NodeChange', nodeChangeHandler);\n    };\n\n    const styleValueToText = styleValue => {\n      return styleValue.replace(/\\-/g, ' ').replace(/\\b\\w/g, chr => {\n        return chr.toUpperCase();\n      });\n    };\n    const normalizeStyleValue = styleValue => isNullable(styleValue) || styleValue === 'default' ? '' : styleValue;\n    const makeSetupHandler = (editor, nodeName) => api => {\n      const updateButtonState = (editor, parents) => {\n        const element = editor.selection.getStart(true);\n        api.setActive(inList(editor, parents, nodeName));\n        api.setEnabled(!isWithinNonEditableList(editor, element) && editor.selection.isEditable());\n      };\n      const nodeChangeHandler = e => updateButtonState(editor, e.parents);\n      return setNodeChangeHandler(editor, nodeChangeHandler);\n    };\n    const addSplitButton = (editor, id, tooltip, cmd, nodeName, styles) => {\n      editor.ui.registry.addSplitButton(id, {\n        tooltip,\n        icon: nodeName === 'OL' ? 'ordered-list' : 'unordered-list',\n        presets: 'listpreview',\n        columns: 3,\n        fetch: callback => {\n          const items = global.map(styles, styleValue => {\n            const iconStyle = nodeName === 'OL' ? 'num' : 'bull';\n            const iconName = styleValue === 'disc' || styleValue === 'decimal' ? 'default' : styleValue;\n            const itemValue = normalizeStyleValue(styleValue);\n            const displayText = styleValueToText(styleValue);\n            return {\n              type: 'choiceitem',\n              value: itemValue,\n              icon: 'list-' + iconStyle + '-' + iconName,\n              text: displayText\n            };\n          });\n          callback(items);\n        },\n        onAction: () => editor.execCommand(cmd),\n        onItemAction: (_splitButtonApi, value) => {\n          applyListFormat(editor, nodeName, value);\n        },\n        select: value => {\n          const listStyleType = getSelectedStyleType(editor);\n          return listStyleType.map(listStyle => value === listStyle).getOr(false);\n        },\n        onSetup: makeSetupHandler(editor, nodeName)\n      });\n    };\n    const addButton = (editor, id, tooltip, cmd, nodeName, styleValue) => {\n      editor.ui.registry.addToggleButton(id, {\n        active: false,\n        tooltip,\n        icon: nodeName === 'OL' ? 'ordered-list' : 'unordered-list',\n        onSetup: makeSetupHandler(editor, nodeName),\n        onAction: () => editor.queryCommandState(cmd) || styleValue === '' ? editor.execCommand(cmd) : applyListFormat(editor, nodeName, styleValue)\n      });\n    };\n    const addControl = (editor, id, tooltip, cmd, nodeName, styles) => {\n      if (styles.length > 1) {\n        addSplitButton(editor, id, tooltip, cmd, nodeName, styles);\n      } else {\n        addButton(editor, id, tooltip, cmd, nodeName, normalizeStyleValue(styles[0]));\n      }\n    };\n    const register = editor => {\n      addControl(editor, 'numlist', 'Numbered list', 'InsertOrderedList', 'OL', getNumberStyles(editor));\n      addControl(editor, 'bullist', 'Bullet list', 'InsertUnorderedList', 'UL', getBulletStyles(editor));\n    };\n\n    var Plugin = () => {\n      global$1.add('advlist', editor => {\n        if (editor.hasPlugin('lists')) {\n          register$1(editor);\n          register(editor);\n          register$2(editor);\n        } else {\n          console.error('Please use the Lists plugin together with the Advanced List plugin.');\n        }\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var Plugin = () => {\n      global.add('align_listitems', editor => {\n        const addListStylePosition = node => node ? editor.dom.setStyle(node, 'list-style-position', 'inside') : null;\n        editor.on('ExecCommand', ({\n          command,\n          target\n        }) => {\n          let tag;\n          switch (command) {\n            case 'InsertOrderedList':\n              tag = 'ol';\n              break;\n            case 'InsertUnorderedList':\n              tag = 'ul';\n              break;\n            default:\n              return;\n          }\n          const node = target.selection.getStart().closest(tag);\n          addListStylePosition(node);\n        });\n        editor.on('PastePostProcess', ({\n          node\n        }) => {\n          const nodes = [...node.querySelectorAll('ol,ul')];\n          nodes.forEach(addListStylePosition);\n        });\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('allow_html_in_named_anchor', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const allowHtmlInNamedAnchor = option('allow_html_in_named_anchor');\n\n    const namedAnchorSelector = 'a:not([href])';\n    const isEmptyString = str => !str;\n    const getIdFromAnchor = elm => {\n      const id = elm.getAttribute('id') || elm.getAttribute('name');\n      return id || '';\n    };\n    const isAnchor = elm => elm.nodeName.toLowerCase() === 'a';\n    const isNamedAnchor = elm => isAnchor(elm) && !elm.getAttribute('href') && getIdFromAnchor(elm) !== '';\n    const isEmptyNamedAnchor = elm => isNamedAnchor(elm) && !elm.firstChild;\n\n    const removeEmptyNamedAnchorsInSelection = editor => {\n      const dom = editor.dom;\n      global$1(dom).walk(editor.selection.getRng(), nodes => {\n        global.each(nodes, node => {\n          if (isEmptyNamedAnchor(node)) {\n            dom.remove(node, false);\n          }\n        });\n      });\n    };\n    const isValidId = id => /^[A-Za-z][A-Za-z0-9\\-:._]*$/.test(id);\n    const getNamedAnchor = editor => editor.dom.getParent(editor.selection.getStart(), namedAnchorSelector);\n    const getId = editor => {\n      const anchor = getNamedAnchor(editor);\n      if (anchor) {\n        return getIdFromAnchor(anchor);\n      } else {\n        return '';\n      }\n    };\n    const createAnchor = (editor, id) => {\n      editor.undoManager.transact(() => {\n        if (!allowHtmlInNamedAnchor(editor)) {\n          editor.selection.collapse(true);\n        }\n        if (editor.selection.isCollapsed()) {\n          editor.insertContent(editor.dom.createHTML('a', {\n            id\n          }));\n        } else {\n          removeEmptyNamedAnchorsInSelection(editor);\n          editor.formatter.remove('namedAnchor', undefined, undefined, true);\n          editor.formatter.apply('namedAnchor', {\n            value: id\n          });\n          editor.addVisual();\n        }\n      });\n    };\n    const updateAnchor = (editor, id, anchorElement) => {\n      anchorElement.removeAttribute('name');\n      anchorElement.id = id;\n      editor.addVisual();\n      editor.undoManager.add();\n    };\n    const insert = (editor, id) => {\n      const anchor = getNamedAnchor(editor);\n      if (anchor) {\n        updateAnchor(editor, id, anchor);\n      } else {\n        createAnchor(editor, id);\n      }\n      editor.focus();\n    };\n\n    const insertAnchor = (editor, newId) => {\n      if (!isValidId(newId)) {\n        editor.windowManager.alert('ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.');\n        return false;\n      } else {\n        insert(editor, newId);\n        return true;\n      }\n    };\n    const open = editor => {\n      const currentId = getId(editor);\n      editor.windowManager.open({\n        title: 'Anchor',\n        size: 'normal',\n        body: {\n          type: 'panel',\n          items: [{\n            name: 'id',\n            type: 'input',\n            label: 'ID',\n            placeholder: 'example'\n          }]\n        },\n        buttons: [{\n          type: 'cancel',\n          name: 'cancel',\n          text: 'Cancel'\n        }, {\n          type: 'submit',\n          name: 'save',\n          text: 'Save',\n          primary: true\n        }],\n        initialData: {\n          id: currentId\n        },\n        onSubmit: api => {\n          if (insertAnchor(editor, api.getData().id)) {\n            api.close();\n          }\n        }\n      });\n    };\n\n    const register$1 = editor => {\n      editor.addCommand('mceAnchor', () => {\n        open(editor);\n      });\n    };\n\n    const isNamedAnchorNode = node => isEmptyString(node.attr('href')) && !isEmptyString(node.attr('id') || node.attr('name'));\n    const isEmptyNamedAnchorNode = node => isNamedAnchorNode(node) && !node.firstChild;\n    const setContentEditable = state => nodes => {\n      for (let i = 0; i < nodes.length; i++) {\n        const node = nodes[i];\n        if (isEmptyNamedAnchorNode(node)) {\n          node.attr('contenteditable', state);\n        }\n      }\n    };\n    const setup = editor => {\n      editor.on('PreInit', () => {\n        editor.parser.addNodeFilter('a', setContentEditable('false'));\n        editor.serializer.addNodeFilter('a', setContentEditable(null));\n      });\n    };\n\n    const registerFormats = editor => {\n      editor.formatter.register('namedAnchor', {\n        inline: 'a',\n        selector: namedAnchorSelector,\n        remove: 'all',\n        split: true,\n        deep: true,\n        attributes: {\n          id: '%value'\n        },\n        onmatch: (node, _fmt, _itemName) => {\n          return isNamedAnchor(node);\n        }\n      });\n    };\n\n    const onSetupEditable = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const register = editor => {\n      const onAction = () => editor.execCommand('mceAnchor');\n      editor.ui.registry.addToggleButton('anchor', {\n        icon: 'bookmark',\n        tooltip: 'Anchor',\n        onAction,\n        onSetup: buttonApi => {\n          const unbindSelectorChanged = editor.selection.selectorChangedWithUnbind('a:not([href])', buttonApi.setActive).unbind;\n          const unbindEditableChanged = onSetupEditable(editor)(buttonApi);\n          return () => {\n            unbindSelectorChanged();\n            unbindEditableChanged();\n          };\n        }\n      });\n      editor.ui.registry.addMenuItem('anchor', {\n        icon: 'bookmark',\n        text: 'Anchor...',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n    };\n\n    var Plugin = () => {\n      global$2.add('anchor', editor => {\n        register$2(editor);\n        setup(editor);\n        register$1(editor);\n        register(editor);\n        editor.on('PreInit', () => {\n          registerFormats(editor);\n        });\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n  'use strict';\n\n  var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n  const link = () => /(?:[A-Za-z][A-Za-z\\d.+-]{0,14}:\\/\\/(?:[-.~*+=!&;:'%@?^${}(),\\w]+@)?|www\\.|[-;:&=+$,.\\w]+@)[A-Za-z\\d-]+(?:\\.[A-Za-z\\d-]+)*(?::\\d+)?(?:\\/(?:[-.~*+=!;:'%@$(),\\/\\w]*[-~*+=%@$()\\/\\w])?)?(?:\\?(?:[-.~*+=!&;:'%@?^${}(),\\/\\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\\/\\w]+))?/g;\n\n  const option = name => editor => editor.options.get(name);\n  const register = editor => {\n    const registerOption = editor.options.register;\n    registerOption('autolink_pattern', {\n      processor: 'regexp',\n      default: new RegExp('^' + link().source + '$', 'i')\n    });\n    registerOption('link_default_target', {\n      processor: 'string'\n    });\n    registerOption('link_default_protocol', {\n      processor: 'string',\n      default: 'https'\n    });\n  };\n  const getAutoLinkPattern = option('autolink_pattern');\n  const getDefaultLinkTarget = option('link_default_target');\n  const getDefaultLinkProtocol = option('link_default_protocol');\n  const allowUnsafeLinkTarget = option('allow_unsafe_link_target');\n\n  const hasProto = (v, constructor, predicate) => {\n    var _a;\n    if (predicate(v, constructor.prototype)) {\n      return true;\n    } else {\n      return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n    }\n  };\n  const typeOf = x => {\n    const t = typeof x;\n    if (x === null) {\n      return 'null';\n    } else if (t === 'object' && Array.isArray(x)) {\n      return 'array';\n    } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n      return 'string';\n    } else {\n      return t;\n    }\n  };\n  const isType = type => value => typeOf(value) === type;\n  const eq = t => a => t === a;\n  const isString = isType('string');\n  const isUndefined = eq(undefined);\n  const isNullable = a => a === null || a === undefined;\n  const isNonNullable = a => !isNullable(a);\n\n  const not = f => t => !f(t);\n\n  const hasOwnProperty = Object.hasOwnProperty;\n  const has = (obj, key) => hasOwnProperty.call(obj, key);\n\n  const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n  const contains = (str, substr, start = 0, end) => {\n    const idx = str.indexOf(substr, start);\n    if (idx !== -1) {\n      return isUndefined(end) ? true : idx + substr.length <= end;\n    } else {\n      return false;\n    }\n  };\n  const startsWith = (str, prefix) => {\n    return checkRange(str, prefix, 0);\n  };\n\n  const zeroWidth = '\\uFEFF';\n  const isZwsp = char => char === zeroWidth;\n  const removeZwsp = s => s.replace(/\\uFEFF/g, '');\n\n  var global = tinymce.util.Tools.resolve('tinymce.dom.TextSeeker');\n\n  const isTextNode = node => node.nodeType === 3;\n  const isElement = node => node.nodeType === 1;\n  const isBracketOrSpace = char => /^[(\\[{ \\u00a0]$/.test(char);\n  const hasProtocol = url => /^([A-Za-z][A-Za-z\\d.+-]*:\\/\\/)|mailto:/.test(url);\n  const isPunctuation = char => /[?!,.;:]/.test(char);\n  const findChar = (text, index, predicate) => {\n    for (let i = index - 1; i >= 0; i--) {\n      const char = text.charAt(i);\n      if (!isZwsp(char) && predicate(char)) {\n        return i;\n      }\n    }\n    return -1;\n  };\n  const freefallRtl = (container, offset) => {\n    let tempNode = container;\n    let tempOffset = offset;\n    while (isElement(tempNode) && tempNode.childNodes[tempOffset]) {\n      tempNode = tempNode.childNodes[tempOffset];\n      tempOffset = isTextNode(tempNode) ? tempNode.data.length : tempNode.childNodes.length;\n    }\n    return {\n      container: tempNode,\n      offset: tempOffset\n    };\n  };\n\n  const parseCurrentLine = (editor, offset) => {\n    var _a;\n    const voidElements = editor.schema.getVoidElements();\n    const autoLinkPattern = getAutoLinkPattern(editor);\n    const {\n      dom,\n      selection\n    } = editor;\n    if (dom.getParent(selection.getNode(), 'a[href]') !== null) {\n      return null;\n    }\n    const rng = selection.getRng();\n    const textSeeker = global(dom, node => {\n      return dom.isBlock(node) || has(voidElements, node.nodeName.toLowerCase()) || dom.getContentEditable(node) === 'false';\n    });\n    const {\n      container: endContainer,\n      offset: endOffset\n    } = freefallRtl(rng.endContainer, rng.endOffset);\n    const root = (_a = dom.getParent(endContainer, dom.isBlock)) !== null && _a !== void 0 ? _a : dom.getRoot();\n    const endSpot = textSeeker.backwards(endContainer, endOffset + offset, (node, offset) => {\n      const text = node.data;\n      const idx = findChar(text, offset, not(isBracketOrSpace));\n      return idx === -1 || isPunctuation(text[idx]) ? idx : idx + 1;\n    }, root);\n    if (!endSpot) {\n      return null;\n    }\n    let lastTextNode = endSpot.container;\n    const startSpot = textSeeker.backwards(endSpot.container, endSpot.offset, (node, offset) => {\n      lastTextNode = node;\n      const idx = findChar(node.data, offset, isBracketOrSpace);\n      return idx === -1 ? idx : idx + 1;\n    }, root);\n    const newRng = dom.createRng();\n    if (!startSpot) {\n      newRng.setStart(lastTextNode, 0);\n    } else {\n      newRng.setStart(startSpot.container, startSpot.offset);\n    }\n    newRng.setEnd(endSpot.container, endSpot.offset);\n    const rngText = removeZwsp(newRng.toString());\n    const matches = rngText.match(autoLinkPattern);\n    if (matches) {\n      let url = matches[0];\n      if (startsWith(url, 'www.')) {\n        const protocol = getDefaultLinkProtocol(editor);\n        url = protocol + '://' + url;\n      } else if (contains(url, '@') && !hasProtocol(url)) {\n        url = 'mailto:' + url;\n      }\n      return {\n        rng: newRng,\n        url\n      };\n    } else {\n      return null;\n    }\n  };\n  const convertToLink = (editor, result) => {\n    const {\n      dom,\n      selection\n    } = editor;\n    const {\n      rng,\n      url\n    } = result;\n    const bookmark = selection.getBookmark();\n    selection.setRng(rng);\n    const command = 'createlink';\n    const args = {\n      command,\n      ui: false,\n      value: url\n    };\n    const beforeExecEvent = editor.dispatch('BeforeExecCommand', args);\n    if (!beforeExecEvent.isDefaultPrevented()) {\n      editor.getDoc().execCommand(command, false, url);\n      editor.dispatch('ExecCommand', args);\n      const defaultLinkTarget = getDefaultLinkTarget(editor);\n      if (isString(defaultLinkTarget)) {\n        const anchor = selection.getNode();\n        dom.setAttrib(anchor, 'target', defaultLinkTarget);\n        if (defaultLinkTarget === '_blank' && !allowUnsafeLinkTarget(editor)) {\n          dom.setAttrib(anchor, 'rel', 'noopener');\n        }\n      }\n    }\n    selection.moveToBookmark(bookmark);\n    editor.nodeChanged();\n  };\n  const handleSpacebar = editor => {\n    const result = parseCurrentLine(editor, -1);\n    if (isNonNullable(result)) {\n      convertToLink(editor, result);\n    }\n  };\n  const handleBracket = handleSpacebar;\n  const handleEnter = editor => {\n    const result = parseCurrentLine(editor, 0);\n    if (isNonNullable(result)) {\n      convertToLink(editor, result);\n    }\n  };\n  const setup = editor => {\n    editor.on('keydown', e => {\n      if (e.keyCode === 13 && !e.isDefaultPrevented()) {\n        handleEnter(editor);\n      }\n    });\n    editor.on('keyup', e => {\n      if (e.keyCode === 32) {\n        handleSpacebar(editor);\n      } else if (e.keyCode === 48 && e.shiftKey || e.keyCode === 221) {\n        handleBracket(editor);\n      }\n    });\n  };\n\n  var Plugin = () => {\n    global$1.add('autolink', editor => {\n      register(editor);\n      setup(editor);\n    });\n  };\n\n  Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const fireInsertCustomChar = (editor, chr) => {\n      return editor.dispatch('insertCustomChar', {\n        chr\n      });\n    };\n\n    const insertChar = (editor, chr) => {\n      const evtChr = fireInsertCustomChar(editor, chr).chr;\n      editor.execCommand('mceInsertContent', false, evtChr);\n    };\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq = t => a => t === a;\n    const isArray$1 = isType('array');\n    const isNull = eq(null);\n    const isUndefined = eq(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const never = constant(false);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const nativePush = Array.prototype.push;\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const findUntil = (xs, pred, until) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(x);\n        } else if (until(x, i)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const find = (xs, pred) => {\n      return findUntil(xs, pred, never);\n    };\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray$1(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const bind = (xs, f) => flatten(map(xs, f));\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      const charMapProcessor = value => isFunction(value) || isArray$1(value);\n      registerOption('charmap', {\n        processor: charMapProcessor\n      });\n      registerOption('charmap_append', {\n        processor: charMapProcessor\n      });\n    };\n    const getCharMap$1 = option('charmap');\n    const getCharMapAppend = option('charmap_append');\n\n    const isArray = global.isArray;\n    const UserDefined = 'User Defined';\n    const getDefaultCharMap = () => {\n      return [{\n        name: 'Currency',\n        characters: [[36, 'dollar sign'], [162, 'cent sign'], [8364, 'euro sign'], [163, 'pound sign'], [165, 'yen sign'], [164, 'currency sign'], [8352, 'euro-currency sign'], [8353, 'colon sign'], [8354, 'cruzeiro sign'], [8355, 'french franc sign'], [8356, 'lira sign'], [8357, 'mill sign'], [8358, 'naira sign'], [8359, 'peseta sign'], [8360, 'rupee sign'], [8361, 'won sign'], [8362, 'new sheqel sign'], [8363, 'dong sign'], [8365, 'kip sign'], [8366, 'tugrik sign'], [8367, 'drachma sign'], [8368, 'german penny symbol'], [8369, 'peso sign'], [8370, 'guarani sign'], [8371, 'austral sign'], [8372, 'hryvnia sign'], [8373, 'cedi sign'], [8374, 'livre tournois sign'], [8375, 'spesmilo sign'], [8376, 'tenge sign'], [8377, 'indian rupee sign'], [8378, 'turkish lira sign'], [8379, 'nordic mark sign'], [8380, 'manat sign'], [8381, 'ruble sign'], [20870, 'yen character'], [20803, 'yuan character'], [22291, 'yuan character, in hong kong and taiwan'], [22278, 'yen/yuan character variant one']]\n      }, {\n        name: 'Text',\n        characters: [[169, 'copyright sign'], [174, 'registered sign'], [8482, 'trade mark sign'], [8240, 'per mille sign'], [181, 'micro sign'], [183, 'middle dot'], [8226, 'bullet'], [8230, 'three dot leader'], [8242, 'minutes / feet'], [8243, 'seconds / inches'], [167, 'section sign'], [182, 'paragraph sign'], [223, 'sharp s / ess-zed']]\n      }, {\n        name: 'Quotations',\n        characters: [[8249, 'single left-pointing angle quotation mark'], [8250, 'single right-pointing angle quotation mark'], [171, 'left pointing guillemet'], [187, 'right pointing guillemet'], [8216, 'left single quotation mark'], [8217, 'right single quotation mark'], [8220, 'left double quotation mark'], [8221, 'right double quotation mark'], [8218, 'single low-9 quotation mark'], [8222, 'double low-9 quotation mark'], [60, 'less-than sign'], [62, 'greater-than sign'], [8804, 'less-than or equal to'], [8805, 'greater-than or equal to'], [8211, 'en dash'], [8212, 'em dash'], [175, 'macron'], [8254, 'overline'], [164, 'currency sign'], [166, 'broken bar'], [168, 'diaeresis'], [161, 'inverted exclamation mark'], [191, 'turned question mark'], [710, 'circumflex accent'], [732, 'small tilde'], [176, 'degree sign'], [8722, 'minus sign'], [177, 'plus-minus sign'], [247, 'division sign'], [8260, 'fraction slash'], [215, 'multiplication sign'], [185, 'superscript one'], [178, 'superscript two'], [179, 'superscript three'], [188, 'fraction one quarter'], [189, 'fraction one half'], [190, 'fraction three quarters']]\n      }, {\n        name: 'Mathematical',\n        characters: [[402, 'function / florin'], [8747, 'integral'], [8721, 'n-ary sumation'], [8734, 'infinity'], [8730, 'square root'], [8764, 'similar to'], [8773, 'approximately equal to'], [8776, 'almost equal to'], [8800, 'not equal to'], [8801, 'identical to'], [8712, 'element of'], [8713, 'not an element of'], [8715, 'contains as member'], [8719, 'n-ary product'], [8743, 'logical and'], [8744, 'logical or'], [172, 'not sign'], [8745, 'intersection'], [8746, 'union'], [8706, 'partial differential'], [8704, 'for all'], [8707, 'there exists'], [8709, 'diameter'], [8711, 'backward difference'], [8727, 'asterisk operator'], [8733, 'proportional to'], [8736, 'angle']]\n      }, {\n        name: 'Extended Latin',\n        characters: [[192, 'A - grave'], [193, 'A - acute'], [194, 'A - circumflex'], [195, 'A - tilde'], [196, 'A - diaeresis'], [197, 'A - ring above'], [256, 'A - macron'], [198, 'ligature AE'], [199, 'C - cedilla'], [200, 'E - grave'], [201, 'E - acute'], [202, 'E - circumflex'], [203, 'E - diaeresis'], [274, 'E - macron'], [204, 'I - grave'], [205, 'I - acute'], [206, 'I - circumflex'], [207, 'I - diaeresis'], [298, 'I - macron'], [208, 'ETH'], [209, 'N - tilde'], [210, 'O - grave'], [211, 'O - acute'], [212, 'O - circumflex'], [213, 'O - tilde'], [214, 'O - diaeresis'], [216, 'O - slash'], [332, 'O - macron'], [338, 'ligature OE'], [352, 'S - caron'], [217, 'U - grave'], [218, 'U - acute'], [219, 'U - circumflex'], [220, 'U - diaeresis'], [362, 'U - macron'], [221, 'Y - acute'], [376, 'Y - diaeresis'], [562, 'Y - macron'], [222, 'THORN'], [224, 'a - grave'], [225, 'a - acute'], [226, 'a - circumflex'], [227, 'a - tilde'], [228, 'a - diaeresis'], [229, 'a - ring above'], [257, 'a - macron'], [230, 'ligature ae'], [231, 'c - cedilla'], [232, 'e - grave'], [233, 'e - acute'], [234, 'e - circumflex'], [235, 'e - diaeresis'], [275, 'e - macron'], [236, 'i - grave'], [237, 'i - acute'], [238, 'i - circumflex'], [239, 'i - diaeresis'], [299, 'i - macron'], [240, 'eth'], [241, 'n - tilde'], [242, 'o - grave'], [243, 'o - acute'], [244, 'o - circumflex'], [245, 'o - tilde'], [246, 'o - diaeresis'], [248, 'o slash'], [333, 'o macron'], [339, 'ligature oe'], [353, 's - caron'], [249, 'u - grave'], [250, 'u - acute'], [251, 'u - circumflex'], [252, 'u - diaeresis'], [363, 'u - macron'], [253, 'y - acute'], [254, 'thorn'], [255, 'y - diaeresis'], [563, 'y - macron'], [913, 'Alpha'], [914, 'Beta'], [915, 'Gamma'], [916, 'Delta'], [917, 'Epsilon'], [918, 'Zeta'], [919, 'Eta'], [920, 'Theta'], [921, 'Iota'], [922, 'Kappa'], [923, 'Lambda'], [924, 'Mu'], [925, 'Nu'], [926, 'Xi'], [927, 'Omicron'], [928, 'Pi'], [929, 'Rho'], [931, 'Sigma'], [932, 'Tau'], [933, 'Upsilon'], [934, 'Phi'], [935, 'Chi'], [936, 'Psi'], [937, 'Omega'], [945, 'alpha'], [946, 'beta'], [947, 'gamma'], [948, 'delta'], [949, 'epsilon'], [950, 'zeta'], [951, 'eta'], [952, 'theta'], [953, 'iota'], [954, 'kappa'], [955, 'lambda'], [956, 'mu'], [957, 'nu'], [958, 'xi'], [959, 'omicron'], [960, 'pi'], [961, 'rho'], [962, 'final sigma'], [963, 'sigma'], [964, 'tau'], [965, 'upsilon'], [966, 'phi'], [967, 'chi'], [968, 'psi'], [969, 'omega']]\n      }, {\n        name: 'Symbols',\n        characters: [[8501, 'alef symbol'], [982, 'pi symbol'], [8476, 'real part symbol'], [978, 'upsilon - hook symbol'], [8472, 'Weierstrass p'], [8465, 'imaginary part']]\n      }, {\n        name: 'Arrows',\n        characters: [[8592, 'leftwards arrow'], [8593, 'upwards arrow'], [8594, 'rightwards arrow'], [8595, 'downwards arrow'], [8596, 'left right arrow'], [8629, 'carriage return'], [8656, 'leftwards double arrow'], [8657, 'upwards double arrow'], [8658, 'rightwards double arrow'], [8659, 'downwards double arrow'], [8660, 'left right double arrow'], [8756, 'therefore'], [8834, 'subset of'], [8835, 'superset of'], [8836, 'not a subset of'], [8838, 'subset of or equal to'], [8839, 'superset of or equal to'], [8853, 'circled plus'], [8855, 'circled times'], [8869, 'perpendicular'], [8901, 'dot operator'], [8968, 'left ceiling'], [8969, 'right ceiling'], [8970, 'left floor'], [8971, 'right floor'], [9001, 'left-pointing angle bracket'], [9002, 'right-pointing angle bracket'], [9674, 'lozenge'], [9824, 'black spade suit'], [9827, 'black club suit'], [9829, 'black heart suit'], [9830, 'black diamond suit'], [8194, 'en space'], [8195, 'em space'], [8201, 'thin space'], [8204, 'zero width non-joiner'], [8205, 'zero width joiner'], [8206, 'left-to-right mark'], [8207, 'right-to-left mark']]\n      }];\n    };\n    const charmapFilter = charmap => {\n      return global.grep(charmap, item => {\n        return isArray(item) && item.length === 2;\n      });\n    };\n    const getCharsFromOption = optionValue => {\n      if (isArray(optionValue)) {\n        return charmapFilter(optionValue);\n      }\n      if (typeof optionValue === 'function') {\n        return optionValue();\n      }\n      return [];\n    };\n    const extendCharMap = (editor, charmap) => {\n      const userCharMap = getCharMap$1(editor);\n      if (userCharMap) {\n        charmap = [{\n          name: UserDefined,\n          characters: getCharsFromOption(userCharMap)\n        }];\n      }\n      const userCharMapAppend = getCharMapAppend(editor);\n      if (userCharMapAppend) {\n        const userDefinedGroup = global.grep(charmap, cg => cg.name === UserDefined);\n        if (userDefinedGroup.length) {\n          userDefinedGroup[0].characters = [...userDefinedGroup[0].characters, ...getCharsFromOption(userCharMapAppend)];\n          return charmap;\n        }\n        return charmap.concat({\n          name: UserDefined,\n          characters: getCharsFromOption(userCharMapAppend)\n        });\n      }\n      return charmap;\n    };\n    const getCharMap = editor => {\n      const groups = extendCharMap(editor, getDefaultCharMap());\n      return groups.length > 1 ? [{\n        name: 'All',\n        characters: bind(groups, g => g.characters)\n      }].concat(groups) : groups;\n    };\n\n    const get = editor => {\n      const getCharMap$1 = () => {\n        return getCharMap(editor);\n      };\n      const insertChar$1 = chr => {\n        insertChar(editor, chr);\n      };\n      return {\n        getCharMap: getCharMap$1,\n        insertChar: insertChar$1\n      };\n    };\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    const last = (fn, rate) => {\n      let timer = null;\n      const cancel = () => {\n        if (!isNull(timer)) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      const throttle = (...args) => {\n        cancel();\n        timer = setTimeout(() => {\n          timer = null;\n          fn.apply(null, args);\n        }, rate);\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n\n    const contains = (str, substr, start = 0, end) => {\n      const idx = str.indexOf(substr, start);\n      if (idx !== -1) {\n        return isUndefined(end) ? true : idx + substr.length <= end;\n      } else {\n        return false;\n      }\n    };\n    const fromCodePoint = String.fromCodePoint;\n\n    const charMatches = (charCode, name, lowerCasePattern) => {\n      if (contains(fromCodePoint(charCode).toLowerCase(), lowerCasePattern)) {\n        return true;\n      } else {\n        return contains(name.toLowerCase(), lowerCasePattern) || contains(name.toLowerCase().replace(/\\s+/g, ''), lowerCasePattern);\n      }\n    };\n    const scan = (group, pattern) => {\n      const matches = [];\n      const lowerCasePattern = pattern.toLowerCase();\n      each(group.characters, g => {\n        if (charMatches(g[0], g[1], lowerCasePattern)) {\n          matches.push(g);\n        }\n      });\n      return map(matches, m => ({\n        text: m[1],\n        value: fromCodePoint(m[0]),\n        icon: fromCodePoint(m[0])\n      }));\n    };\n\n    const patternName = 'pattern';\n    const open = (editor, charMap) => {\n      const makeGroupItems = () => [{\n        label: 'Search',\n        type: 'input',\n        name: patternName\n      }, {\n        type: 'collection',\n        name: 'results'\n      }];\n      const makeTabs = () => map(charMap, charGroup => ({\n        title: charGroup.name,\n        name: charGroup.name,\n        items: makeGroupItems()\n      }));\n      const makePanel = () => ({\n        type: 'panel',\n        items: makeGroupItems()\n      });\n      const makeTabPanel = () => ({\n        type: 'tabpanel',\n        tabs: makeTabs()\n      });\n      const currentTab = charMap.length === 1 ? Cell(UserDefined) : Cell('All');\n      const scanAndSet = (dialogApi, pattern) => {\n        find(charMap, group => group.name === currentTab.get()).each(f => {\n          const items = scan(f, pattern);\n          dialogApi.setData({\n            results: items\n          });\n        });\n      };\n      const SEARCH_DELAY = 40;\n      const updateFilter = last(dialogApi => {\n        const pattern = dialogApi.getData().pattern;\n        scanAndSet(dialogApi, pattern);\n      }, SEARCH_DELAY);\n      const body = charMap.length === 1 ? makePanel() : makeTabPanel();\n      const initialData = {\n        pattern: '',\n        results: scan(charMap[0], '')\n      };\n      const bridgeSpec = {\n        title: 'Special Character',\n        size: 'normal',\n        body,\n        buttons: [{\n          type: 'cancel',\n          name: 'close',\n          text: 'Close',\n          primary: true\n        }],\n        initialData,\n        onAction: (api, details) => {\n          if (details.name === 'results') {\n            insertChar(editor, details.value);\n            api.close();\n          }\n        },\n        onTabChange: (dialogApi, details) => {\n          currentTab.set(details.newTabName);\n          updateFilter.throttle(dialogApi);\n        },\n        onChange: (dialogApi, changeData) => {\n          if (changeData.name === patternName) {\n            updateFilter.throttle(dialogApi);\n          }\n        }\n      };\n      const dialogApi = editor.windowManager.open(bridgeSpec);\n      dialogApi.focus(patternName);\n    };\n\n    const register$1 = (editor, charMap) => {\n      editor.addCommand('mceShowCharmap', () => {\n        open(editor, charMap);\n      });\n    };\n\n    const init = (editor, all) => {\n      editor.ui.registry.addAutocompleter('charmap', {\n        trigger: ':',\n        columns: 'auto',\n        minChars: 2,\n        fetch: (pattern, _maxResults) => new Promise((resolve, _reject) => {\n          resolve(scan(all, pattern));\n        }),\n        onAction: (autocompleteApi, rng, value) => {\n          editor.selection.setRng(rng);\n          editor.insertContent(value);\n          autocompleteApi.hide();\n        }\n      });\n    };\n\n    const onSetupEditable = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const register = editor => {\n      const onAction = () => editor.execCommand('mceShowCharmap');\n      editor.ui.registry.addButton('charmap', {\n        icon: 'insert-character',\n        tooltip: 'Special character',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n      editor.ui.registry.addMenuItem('charmap', {\n        icon: 'insert-character',\n        text: 'Special character...',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n    };\n\n    var Plugin = () => {\n      global$1.add('charmap', editor => {\n        register$2(editor);\n        const charMap = getCharMap(editor);\n        register$1(editor, charMap);\n        register(editor);\n        init(editor, charMap[0]);\n        return get(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const isString = isType$1('string');\n    const isBoolean = isSimpleType('boolean');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n\n    const name = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n    const type = element => element.dom.nodeType;\n    const isType = t => element => type(element) === t;\n    const isElement = isType(ELEMENT);\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n    const isTag = tag => e => isElement(e) && name(e) === tag;\n\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const never = constant(false);\n\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n\n    const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;\n    const all = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom);\n    };\n    const one = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n    };\n\n    const isEqualNode = (e1, e2) => e1.dom.isEqualNode(e2.dom);\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set$1 = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const get = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const has = (element, key) => {\n      const dom = element.dom;\n      return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;\n    };\n\n    const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const child = (element, index) => {\n      const cs = element.dom.childNodes;\n      return Optional.from(cs[index]).map(SugarElement.fromDom);\n    };\n    const firstChild = element => child(element, 0);\n\n    const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getContentContainer = dos => isShadowRoot(dos) ? dos : SugarElement.fromDom(documentOrOwner(dos).dom.body);\n\n    const ancestor = (scope, predicate, isRoot) => {\n      let element = scope.dom;\n      const stop = isFunction(isRoot) ? isRoot : never;\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        if (predicate(el)) {\n          return Optional.some(el);\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n\n    const before = (marker, element) => {\n      const parent$1 = parent(marker);\n      parent$1.each(v => {\n        v.dom.insertBefore(element.dom, marker.dom);\n      });\n    };\n    const append = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n\n    const remove = element => {\n      const dom = element.dom;\n      if (dom.parentNode !== null) {\n        dom.parentNode.removeChild(dom);\n      }\n    };\n\n    const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n    const internalSet = (dom, property, value) => {\n      if (!isString(value)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value);\n      }\n      if (isSupported(dom)) {\n        dom.style.setProperty(property, value);\n      }\n    };\n    const set = (element, property, value) => {\n      const dom = element.dom;\n      internalSet(dom, property, value);\n    };\n\n    const read = (element, attr) => {\n      const value = get(element, attr);\n      return value === undefined || value === '' ? [] : value.split(' ');\n    };\n    const add$3 = (element, attr, id) => {\n      const old = read(element, attr);\n      const nu = old.concat([id]);\n      set$1(element, attr, nu.join(' '));\n      return true;\n    };\n\n    const supports = element => element.dom.classList !== undefined;\n    const add$2 = (element, clazz) => add$3(element, 'class', clazz);\n\n    const add$1 = (element, clazz) => {\n      if (supports(element)) {\n        element.dom.classList.add(clazz);\n      } else {\n        add$2(element, clazz);\n      }\n    };\n\n    const focus = (element, preventScroll = false) => element.dom.focus({\n      preventScroll\n    });\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.EditorManager');\n\n    var global = tinymce.util.Tools.resolve('tinymce.Resource');\n\n    const CM_SETTINGS = {\n      lineWrapping: true,\n      lineNumbers: true,\n      foldGutter: true,\n      gutter: true,\n      matchBrackets: true,\n      styleActiveLine: true,\n      indentUnit: 1,\n      tabSize: 1\n    };\n    const CURSOR_MARKER_CODE = '<!--sn_cursor-->';\n    const CUSTOM_EDITOR_ID = 'plugins.codemirrror.customeditor';\n    const CANCEL_BUTTON = 0;\n    const SAVE_BUTTON = 1;\n\n    const stopPropagation = event => event.stopPropagation();\n    const load = baseUrl => new Promise(resolve => tinymce.ScriptLoader.loadScript(\"\".concat(baseUrl, \"/codemirror.min.js\")).then(() => resolve(CodeMirror)));\n    const getAutocompleteConfig = (codeMirror, container) => {\n      const completeAfter = (cm, pred) => {\n        if (!pred || pred()) {\n          const showHint = () => {\n            if (!cm.state.completionActive) {\n              cm.showHint({\n                completeSingle: false,\n                container: container.dom\n              });\n            }\n          };\n          setTimeout(showHint, 100);\n        }\n        return codeMirror.Pass;\n      };\n      return {\n        completeAfter,\n        completeIfAfterLt: cm => completeAfter(cm, () => {\n          const cursor = cm.getCursor();\n          return '<' === cm.getRange(codeMirror.Pos(cursor.line, cursor.ch - 1), cursor);\n        }),\n        completeIfInTag: cm => completeAfter(cm, () => {\n          const tok = cm.getTokenAt(cm.getCursor());\n          const isString = tok.type === 'string';\n          const isStringEdge = /['\"]/.test(tok.string.charAt(tok.string.length - 1));\n          if (isString && (!isStringEdge || tok.string.length === 1)) {\n            return false;\n          }\n          return codeMirror.innerMode(cm.getMode(), tok.state).state.tagName;\n        })\n      };\n    };\n    const setupCodemirror = (codeMirror, div, settings, editor) => {\n      const container = getContentContainer(getRootNode(SugarElement.fromDom(editor.getElement())));\n      const autoComplete = getAutocompleteConfig(codeMirror, container);\n      const config = {\n        lineWrapping: settings.lineWrapping,\n        lineNumbers: settings.lineNumbers,\n        foldGutter: settings.foldGutter,\n        theme: settings.theme,\n        direction: settings.direction,\n        matchTags: {\n          bothTags: true\n        },\n        keyMap: 'sublime',\n        gutters: settings.gutter ? ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'] : [],\n        extraKeys: {\n          'Alt-F': 'findPersistent',\n          'Ctrl-J': 'toMatchingTag',\n          'Ctrl-B': 'selectNextOccurrence',\n          '\\'<\\'': autoComplete.completeAfter,\n          '\\'/\\'': autoComplete.completeIfAfterLt,\n          '\\' \\'': autoComplete.completeIfInTag,\n          '\\'=\\'': autoComplete.completeIfInTag,\n          'Ctrl-Q': cmi => cmi.foldCode(cmi.getCursor())\n        },\n        mode: 'text/html',\n        value: '',\n        styleActiveLine: true,\n        screenReaderLabel: 'Source code'\n      };\n      const cmi = codeMirror(div, config);\n      div.addEventListener('keyup', stopPropagation);\n      div.addEventListener('keydown', stopPropagation);\n      div.addEventListener('keypress', stopPropagation);\n      setTimeout(() => {\n        cmi.focus();\n        if (settings.cursor) {\n          cmi.doc.setCursor(settings.cursor);\n        }\n      });\n      setTimeout(() => cmi.refresh(), 200);\n      return {\n        cmi,\n        unbind: () => {\n          div.removeEventListener('keyup', stopPropagation);\n          div.removeEventListener('keydown', stopPropagation);\n          div.removeEventListener('keypress', stopPropagation);\n        }\n      };\n    };\n    const checkLineBoundary = (charPos, line) => !(charPos === 0 || charPos === line.length);\n    const checkMode = ({\n      name\n    }) => !name || name === 'xml';\n    const moveCursorIfInEntity = cmi => {\n      const cursor = cmi.getCursor();\n      const token = cmi.getTokenAt(cursor, true);\n      if (token && token.type === 'atom' && token.end !== cursor.ch) {\n        cmi.doc.setCursor({\n          line: cursor.line,\n          ch: token.start\n        });\n      }\n    };\n    const moveCursorIfInTag = (codeMirror, cmi) => {\n      const cursor = cmi.getCursor();\n      const {\n        line,\n        ch\n      } = cursor;\n      const range = cmi.getViewport();\n      const match = codeMirror.findMatchingTag(cmi, cursor, range);\n      if (match) {\n        let pos;\n        const isOpen = match.at === 'open';\n        const hit = match[match.at][isOpen ? 'to' : 'from'];\n        if (isOpen && !(hit.line === line && hit.ch === ch)) {\n          pos = {\n            line: match.open.to.line,\n            ch: match.open.to.ch\n          };\n        } else if (!isOpen && !(hit.line === line && hit.ch === ch)) {\n          pos = {\n            line: match.close.from.line,\n            ch: match.close.from.ch\n          };\n        }\n        if (pos) {\n          cmi.doc.setCursor(pos);\n        }\n      }\n    };\n    const moveCursorIfInIframe = (codeMirror, cmi) => {\n      var _a;\n      const cursor = cmi.getCursor();\n      const range = cmi.getViewport();\n      const match = codeMirror.findEnclosingTag(cmi, cursor, range, 'iframe');\n      const openingTagCursorLocation = (_a = match === null || match === void 0 ? void 0 : match.open) === null || _a === void 0 ? void 0 : _a.from;\n      if (match && openingTagCursorLocation) {\n        cmi.doc.setCursor(openingTagCursorLocation);\n      }\n    };\n    const markCursorPosition = (codeMirror, id, cmi) => {\n      const {\n        doc\n      } = cmi;\n      if (doc.somethingSelected()) {\n        doc.setCursor(doc.getCursor());\n      }\n      moveCursorIfInEntity(cmi);\n      moveCursorIfInTag(codeMirror, cmi);\n      moveCursorIfInIframe(codeMirror, cmi);\n      const cursor = cmi.getCursor();\n      const {\n        line,\n        ch\n      } = cursor;\n      const curLine = cmi.getLine(line);\n      let addCursorMarker = true;\n      addCursorMarker = addCursorMarker && checkLineBoundary(ch, curLine);\n      addCursorMarker = addCursorMarker && checkMode(cmi.getModeAt(cursor, true));\n      const tinyCursor = \"<span id=\\\"\".concat(id, \"\\\"></span>\");\n      if (addCursorMarker) {\n        doc.replaceSelection(tinyCursor);\n      }\n      return {\n        id,\n        value: cmi.doc.getValue()\n      };\n    };\n    const setupSourceEscape = (cmi, div) => {\n      const handleTab = index => {\n        const focusableElements = all('.tox-dialog__footer .tox-button', getRootNode(div));\n        if (focusableElements.length === 2) {\n          focus(focusableElements[index]);\n        }\n      };\n      const escKeyMap = {\n        Esc: cmi => {\n          cmi.addKeyMap(tabKeyMap);\n          return CodeMirror.pass;\n        }\n      };\n      const tabKeyMap = {\n        'Tab': cmi => {\n          handleTab(CANCEL_BUTTON);\n          cmi.removeKeyMap(tabKeyMap);\n          return false;\n        },\n        'Shift-Tab': cmi => {\n          handleTab(SAVE_BUTTON);\n          cmi.removeKeyMap(tabKeyMap);\n          return false;\n        },\n        'default': cmi => {\n          cmi.removeKeyMap(tabKeyMap);\n          return CodeMirror.pass;\n        }\n      };\n      const focusableElement = cmi.getInputField();\n      focusableElement === null || focusableElement === void 0 ? void 0 : focusableElement.setAttribute('tabIndex', '-1');\n      focusableElement === null || focusableElement === void 0 ? void 0 : focusableElement.setAttribute('data-alloy-tabstop', 'true');\n      cmi.addKeyMap(escKeyMap);\n    };\n    const addAccessKeyInfoPanel = div => {\n      const isMac = tinymce.Env.os.isMacOS();\n      const dom = one('.tox-dialog__footer .tox-dialog__footer-start', getRootNode(div));\n      const node = document.createElement('div');\n      const td1 = '<td class=\"footer-key-info-panel-key\">';\n      const td2 = '<td class=\"footer-key-info-panel-value\">';\n      node.innerHTML = '<table class=\"footer-key-info-panel-parent\" cellspacing=\"0\" cellpadding=\"0\"><tr>' + td1 + (isMac ? '&#8984;-F' : 'Ctrl-F</td>') + td2 + tinymce.translate('Start search') + '</td>' + td1 + (isMac ? '&#8984;-G' : 'Ctrl-G') + '</td>' + td2 + 'Find next' + '</td>' + td1 + (isMac ? '&#8984;-Shift-G' : 'Shift-Ctrl-F') + '</td>' + td2 + tinymce.translate('Find previous') + '</td></tr>' + '<tr>' + td1 + (isMac ? '&#8984;-Option-F' : 'Shift-Ctrl-F') + '</td>' + td2 + tinymce.translate('Replace') + '</td>' + td1 + (isMac ? 'Shift-&#8984;-Option-F' : 'Shift-Ctrl-R') + '</td>' + td2 + tinymce.translate('Replace all') + '</td></tr></table>';\n      dom.each(parent => append(parent, SugarElement.fromDom(node)));\n    };\n    const setupResource = (root, settings) => new Promise(resolve => {\n      const editor = global$1.get(settings.editorId);\n      const div = SugarElement.fromDom(root);\n      set(div, 'width', '100%');\n      parent(div).filter(isElement).each(el => add$1(el, 'sn-codemirror'));\n      load(settings.baseUrl).then(codeMirror => {\n        const {\n          cmi,\n          unbind\n        } = setupCodemirror(codeMirror, root, settings, editor);\n        setupSourceEscape(cmi, div);\n        addAccessKeyInfoPanel(div);\n        return Promise.resolve({\n          getValue: () => markCursorPosition(codeMirror, editor.dom.uniqueId(), cmi),\n          setValue: value => cmi.doc.setValue(value),\n          destroy: unbind\n        });\n      }).then(resolve);\n    });\n    const add = () => {\n      global.add(CUSTOM_EDITOR_ID, setupResource);\n    };\n    var CustomEditor = {\n      add\n    };\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('_do_not_use_is_dark_theme', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const isDarkTheme = option('_do_not_use_is_dark_theme');\n\n    const isBogus = node => has(node, 'data-mce-bogus');\n    const isIndexBookmark = bookmark => bookmark.hasOwnProperty('name');\n    const addCursorMarkers = (bookmarkNode, isBody) => {\n      const cursorElement = SugarElement.fromHtml(CURSOR_MARKER_CODE);\n      let bookmark = SugarElement.fromDom(bookmarkNode);\n      bookmark = ancestor(bookmark, isBogus, isBody).getOr(bookmark);\n      before(bookmark, cursorElement);\n      return cursorElement;\n    };\n    const createCursorPosition = (line, ch) => ({\n      line,\n      ch\n    });\n    const getCursorPosition = content => {\n      const lines = content.split(/\\r?\\n/);\n      const length = lines.length;\n      for (let lineIdx = 0; lineIdx < length; ++lineIdx) {\n        const line = lines[lineIdx];\n        const cursorIndex = line.indexOf(CURSOR_MARKER_CODE);\n        if (cursorIndex >= 0) {\n          if (line === CURSOR_MARKER_CODE) {\n            return lineIdx === 0 ? createCursorPosition(lineIdx, 0) : createCursorPosition(lineIdx - 1, lines[lineIdx - 1].length);\n          }\n          return createCursorPosition(lineIdx, cursorIndex);\n        }\n      }\n      return createCursorPosition(0, 0);\n    };\n    const getContentWithMarkers = editor => {\n      const body = SugarElement.fromDom(editor.getBody());\n      const bookmark = editor.selection.getBookmark();\n      const bookmarkNode = isIndexBookmark(bookmark) ? editor.dom.select(bookmark.name)[bookmark.index] : editor.dom.select(\"#\".concat(bookmark.id, \"_start\"))[0];\n      const cursorMarker = Optional.from(bookmarkNode).map(node => addCursorMarkers(node, node => isEqualNode(node, body)));\n      const content = editor.getContent({\n        source_view: true\n      });\n      cursorMarker.each(remove);\n      editor.selection.moveToBookmark(bookmark);\n      return content;\n    };\n    const collectSettings = (editor, url) => new Promise(resolve => {\n      resolve({\n        ...CM_SETTINGS,\n        baseUrl: url,\n        direction: editor.getBody().dir || 'ltr',\n        editorId: editor.id,\n        theme: isDarkTheme(editor) ? 'tomorrow-night-eighties' : 'default'\n      });\n    });\n    const contentProcessor = editor => () => {\n      const markedContent = getContentWithMarkers(editor);\n      const cursor = getCursorPosition(markedContent);\n      return {\n        content: editor.getContent({\n          source_view: true\n        }),\n        cursor\n      };\n    };\n    const submitHandler = editor => ({\n      id,\n      value\n    }) => {\n      editor.focus();\n      editor.undoManager.transact(() => {\n        editor.setContent(value);\n      });\n      const el = editor.dom.select(\"span#\".concat(id))[0];\n      if (el) {\n        editor.selection.scrollIntoView(el);\n        editor.selection.setCursorLocation(el, 0);\n        editor.dom.remove(el);\n      } else {\n        const firstChildIsStyleTag = firstChild(SugarElement.fromDom(editor.getBody())).map(isTag('style')).getOrNull();\n        if (firstChildIsStyleTag) {\n          const val = \"<span id=\\\"\".concat(id, \"\\\"></span>\").concat(value);\n          editor.setContent(val);\n          const el = editor.dom.select(\"span#\".concat(id))[0];\n          editor.selection.setCursorLocation(el, 0);\n          editor.dom.remove(el);\n        } else {\n          editor.selection.setCursorLocation();\n        }\n      }\n      editor.nodeChanged();\n    };\n    const makeDialog = helpers => settings => {\n      const {\n        content: codeview,\n        cursor\n      } = helpers.processContent();\n      const cmSettings = {\n        ...settings,\n        cursor\n      };\n      const config = {\n        title: 'Source Code',\n        size: 'large',\n        body: {\n          type: 'panel',\n          items: [{\n            name: 'codeview',\n            type: 'customeditor',\n            tag: 'div',\n            scriptId: CUSTOM_EDITOR_ID,\n            scriptUrl: \"\".concat(cmSettings.baseUrl, \"/customeditor.min.js\"),\n            settings: cmSettings\n          }]\n        },\n        buttons: [{\n          type: 'cancel',\n          name: 'cancel',\n          text: 'Cancel'\n        }, {\n          type: 'submit',\n          name: 'save',\n          text: 'Save',\n          primary: true\n        }],\n        initialData: {\n          codeview\n        },\n        onSubmit: api => {\n          helpers.onSubmit(api.getData().codeview);\n          api.close();\n        }\n      };\n      return config;\n    };\n    const Dialog = (editor, url) => {\n      const helpers = {\n        onSubmit: submitHandler(editor),\n        processContent: contentProcessor(editor)\n      };\n      const open = () => {\n        collectSettings(editor, url).then(makeDialog(helpers)).then(editor.windowManager.open).then(CustomEditor.add);\n      };\n      return {\n        open\n      };\n    };\n\n    const register$1 = (editor, url) => {\n      editor.addCommand('mceCodeEditor', Dialog(editor, url).open);\n    };\n\n    const register = editor => {\n      editor.ui.registry.addToggleButton('code', {\n        icon: 'sourcecode',\n        tooltip: 'Source code',\n        onAction: () => editor.execCommand('mceCodeEditor')\n      });\n      editor.ui.registry.addMenuItem('code', {\n        icon: 'sourcecode',\n        text: 'Source code',\n        onAction: () => editor.execCommand('mceCodeEditor')\n      });\n    };\n\n    var Plugin = () => {\n      global$2.add('codemirror', (editor, url) => {\n        register$2(editor);\n        register(editor);\n        register$1(editor, url);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n\n    const noop = () => {};\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const get$1 = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get$1(xs, 0);\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const prismjs = function (global, module, exports) {\n      const oldprism = window.Prism;\n      window.Prism = {\n        manual: true\n      };\n      var _self = typeof window !== 'undefined' ? window : typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ? self : {};\n      var Prism = function (_self) {\n        var lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n        var uniqueId = 0;\n        var plainTextGrammar = {};\n        var _ = {\n          manual: _self.Prism && _self.Prism.manual,\n          disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n          util: {\n            encode: function encode(tokens) {\n              if (tokens instanceof Token) {\n                return new Token(tokens.type, encode(tokens.content), tokens.alias);\n              } else if (Array.isArray(tokens)) {\n                return tokens.map(encode);\n              } else {\n                return tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n              }\n            },\n            type: function (o) {\n              return Object.prototype.toString.call(o).slice(8, -1);\n            },\n            objId: function (obj) {\n              if (!obj['__id']) {\n                Object.defineProperty(obj, '__id', {\n                  value: ++uniqueId\n                });\n              }\n              return obj['__id'];\n            },\n            clone: function deepClone(o, visited) {\n              visited = visited || {};\n              var clone;\n              var id;\n              switch (_.util.type(o)) {\n                case 'Object':\n                  id = _.util.objId(o);\n                  if (visited[id]) {\n                    return visited[id];\n                  }\n                  clone = {};\n                  visited[id] = clone;\n                  for (var key in o) {\n                    if (o.hasOwnProperty(key)) {\n                      clone[key] = deepClone(o[key], visited);\n                    }\n                  }\n                  return clone;\n                case 'Array':\n                  id = _.util.objId(o);\n                  if (visited[id]) {\n                    return visited[id];\n                  }\n                  clone = [];\n                  visited[id] = clone;\n                  o.forEach(function (v, i) {\n                    clone[i] = deepClone(v, visited);\n                  });\n                  return clone;\n                default:\n                  return o;\n              }\n            },\n            getLanguage: function (element) {\n              while (element) {\n                var m = lang.exec(element.className);\n                if (m) {\n                  return m[1].toLowerCase();\n                }\n                element = element.parentElement;\n              }\n              return 'none';\n            },\n            setLanguage: function (element, language) {\n              element.className = element.className.replace(RegExp(lang, 'gi'), '');\n              element.classList.add('language-' + language);\n            },\n            currentScript: function () {\n              if (typeof document === 'undefined') {\n                return null;\n              }\n              if ('currentScript' in document && 1 < 2) {\n                return document.currentScript;\n              }\n              try {\n                throw new Error();\n              } catch (err) {\n                var src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n                if (src) {\n                  var scripts = document.getElementsByTagName('script');\n                  for (var i in scripts) {\n                    if (scripts[i].src == src) {\n                      return scripts[i];\n                    }\n                  }\n                }\n                return null;\n              }\n            },\n            isActive: function (element, className, defaultActivation) {\n              var no = 'no-' + className;\n              while (element) {\n                var classList = element.classList;\n                if (classList.contains(className)) {\n                  return true;\n                }\n                if (classList.contains(no)) {\n                  return false;\n                }\n                element = element.parentElement;\n              }\n              return !!defaultActivation;\n            }\n          },\n          languages: {\n            plain: plainTextGrammar,\n            plaintext: plainTextGrammar,\n            text: plainTextGrammar,\n            txt: plainTextGrammar,\n            extend: function (id, redef) {\n              var lang = _.util.clone(_.languages[id]);\n              for (var key in redef) {\n                lang[key] = redef[key];\n              }\n              return lang;\n            },\n            insertBefore: function (inside, before, insert, root) {\n              root = root || _.languages;\n              var grammar = root[inside];\n              var ret = {};\n              for (var token in grammar) {\n                if (grammar.hasOwnProperty(token)) {\n                  if (token == before) {\n                    for (var newToken in insert) {\n                      if (insert.hasOwnProperty(newToken)) {\n                        ret[newToken] = insert[newToken];\n                      }\n                    }\n                  }\n                  if (!insert.hasOwnProperty(token)) {\n                    ret[token] = grammar[token];\n                  }\n                }\n              }\n              var old = root[inside];\n              root[inside] = ret;\n              _.languages.DFS(_.languages, function (key, value) {\n                if (value === old && key != inside) {\n                  this[key] = ret;\n                }\n              });\n              return ret;\n            },\n            DFS: function DFS(o, callback, type, visited) {\n              visited = visited || {};\n              var objId = _.util.objId;\n              for (var i in o) {\n                if (o.hasOwnProperty(i)) {\n                  callback.call(o, i, o[i], type || i);\n                  var property = o[i];\n                  var propertyType = _.util.type(property);\n                  if (propertyType === 'Object' && !visited[objId(property)]) {\n                    visited[objId(property)] = true;\n                    DFS(property, callback, null, visited);\n                  } else if (propertyType === 'Array' && !visited[objId(property)]) {\n                    visited[objId(property)] = true;\n                    DFS(property, callback, i, visited);\n                  }\n                }\n              }\n            }\n          },\n          plugins: {},\n          highlightAll: function (async, callback) {\n            _.highlightAllUnder(document, async, callback);\n          },\n          highlightAllUnder: function (container, async, callback) {\n            var env = {\n              callback: callback,\n              container: container,\n              selector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n            };\n            _.hooks.run('before-highlightall', env);\n            env.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n            _.hooks.run('before-all-elements-highlight', env);\n            for (var i = 0, element; element = env.elements[i++];) {\n              _.highlightElement(element, async === true, env.callback);\n            }\n          },\n          highlightElement: function (element, async, callback) {\n            var language = _.util.getLanguage(element);\n            var grammar = _.languages[language];\n            _.util.setLanguage(element, language);\n            var parent = element.parentElement;\n            if (parent && parent.nodeName.toLowerCase() === 'pre') {\n              _.util.setLanguage(parent, language);\n            }\n            var code = element.textContent;\n            var env = {\n              element: element,\n              language: language,\n              grammar: grammar,\n              code: code\n            };\n            function insertHighlightedCode(highlightedCode) {\n              env.highlightedCode = highlightedCode;\n              _.hooks.run('before-insert', env);\n              env.element.innerHTML = env.highlightedCode;\n              _.hooks.run('after-highlight', env);\n              _.hooks.run('complete', env);\n              callback && callback.call(env.element);\n            }\n            _.hooks.run('before-sanity-check', env);\n            parent = env.element.parentElement;\n            if (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n              parent.setAttribute('tabindex', '0');\n            }\n            if (!env.code) {\n              _.hooks.run('complete', env);\n              callback && callback.call(env.element);\n              return;\n            }\n            _.hooks.run('before-highlight', env);\n            if (!env.grammar) {\n              insertHighlightedCode(_.util.encode(env.code));\n              return;\n            }\n            if (async && _self.Worker) {\n              var worker = new Worker(_.filename);\n              worker.onmessage = function (evt) {\n                insertHighlightedCode(evt.data);\n              };\n              worker.postMessage(JSON.stringify({\n                language: env.language,\n                code: env.code,\n                immediateClose: true\n              }));\n            } else {\n              insertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n            }\n          },\n          highlight: function (text, grammar, language) {\n            var env = {\n              code: text,\n              grammar: grammar,\n              language: language\n            };\n            _.hooks.run('before-tokenize', env);\n            if (!env.grammar) {\n              throw new Error('The language \"' + env.language + '\" has no grammar.');\n            }\n            env.tokens = _.tokenize(env.code, env.grammar);\n            _.hooks.run('after-tokenize', env);\n            return Token.stringify(_.util.encode(env.tokens), env.language);\n          },\n          tokenize: function (text, grammar) {\n            var rest = grammar.rest;\n            if (rest) {\n              for (var token in rest) {\n                grammar[token] = rest[token];\n              }\n              delete grammar.rest;\n            }\n            var tokenList = new LinkedList();\n            addAfter(tokenList, tokenList.head, text);\n            matchGrammar(text, tokenList, grammar, tokenList.head, 0);\n            return toArray(tokenList);\n          },\n          hooks: {\n            all: {},\n            add: function (name, callback) {\n              var hooks = _.hooks.all;\n              hooks[name] = hooks[name] || [];\n              hooks[name].push(callback);\n            },\n            run: function (name, env) {\n              var callbacks = _.hooks.all[name];\n              if (!callbacks || !callbacks.length) {\n                return;\n              }\n              for (var i = 0, callback; callback = callbacks[i++];) {\n                callback(env);\n              }\n            }\n          },\n          Token: Token\n        };\n        _self.Prism = _;\n        function Token(type, content, alias, matchedStr) {\n          this.type = type;\n          this.content = content;\n          this.alias = alias;\n          this.length = (matchedStr || '').length | 0;\n        }\n        Token.stringify = function stringify(o, language) {\n          if (typeof o == 'string') {\n            return o;\n          }\n          if (Array.isArray(o)) {\n            var s = '';\n            o.forEach(function (e) {\n              s += stringify(e, language);\n            });\n            return s;\n          }\n          var env = {\n            type: o.type,\n            content: stringify(o.content, language),\n            tag: 'span',\n            classes: ['token', o.type],\n            attributes: {},\n            language: language\n          };\n          var aliases = o.alias;\n          if (aliases) {\n            if (Array.isArray(aliases)) {\n              Array.prototype.push.apply(env.classes, aliases);\n            } else {\n              env.classes.push(aliases);\n            }\n          }\n          _.hooks.run('wrap', env);\n          var attributes = '';\n          for (var name in env.attributes) {\n            attributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n          }\n          return '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n        };\n        function matchPattern(pattern, pos, text, lookbehind) {\n          pattern.lastIndex = pos;\n          var match = pattern.exec(text);\n          if (match && lookbehind && match[1]) {\n            var lookbehindLength = match[1].length;\n            match.index += lookbehindLength;\n            match[0] = match[0].slice(lookbehindLength);\n          }\n          return match;\n        }\n        function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n          for (var token in grammar) {\n            if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n              continue;\n            }\n            var patterns = grammar[token];\n            patterns = Array.isArray(patterns) ? patterns : [patterns];\n            for (var j = 0; j < patterns.length; ++j) {\n              if (rematch && rematch.cause == token + ',' + j) {\n                return;\n              }\n              var patternObj = patterns[j];\n              var inside = patternObj.inside;\n              var lookbehind = !!patternObj.lookbehind;\n              var greedy = !!patternObj.greedy;\n              var alias = patternObj.alias;\n              if (greedy && !patternObj.pattern.global) {\n                var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n                patternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n              }\n              var pattern = patternObj.pattern || patternObj;\n              for (var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next) {\n                if (rematch && pos >= rematch.reach) {\n                  break;\n                }\n                var str = currentNode.value;\n                if (tokenList.length > text.length) {\n                  return;\n                }\n                if (str instanceof Token) {\n                  continue;\n                }\n                var removeCount = 1;\n                var match;\n                if (greedy) {\n                  match = matchPattern(pattern, pos, text, lookbehind);\n                  if (!match || match.index >= text.length) {\n                    break;\n                  }\n                  var from = match.index;\n                  var to = match.index + match[0].length;\n                  var p = pos;\n                  p += currentNode.value.length;\n                  while (from >= p) {\n                    currentNode = currentNode.next;\n                    p += currentNode.value.length;\n                  }\n                  p -= currentNode.value.length;\n                  pos = p;\n                  if (currentNode.value instanceof Token) {\n                    continue;\n                  }\n                  for (var k = currentNode; k !== tokenList.tail && (p < to || typeof k.value === 'string'); k = k.next) {\n                    removeCount++;\n                    p += k.value.length;\n                  }\n                  removeCount--;\n                  str = text.slice(pos, p);\n                  match.index -= pos;\n                } else {\n                  match = matchPattern(pattern, 0, str, lookbehind);\n                  if (!match) {\n                    continue;\n                  }\n                }\n                var from = match.index;\n                var matchStr = match[0];\n                var before = str.slice(0, from);\n                var after = str.slice(from + matchStr.length);\n                var reach = pos + str.length;\n                if (rematch && reach > rematch.reach) {\n                  rematch.reach = reach;\n                }\n                var removeFrom = currentNode.prev;\n                if (before) {\n                  removeFrom = addAfter(tokenList, removeFrom, before);\n                  pos += before.length;\n                }\n                removeRange(tokenList, removeFrom, removeCount);\n                var wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n                currentNode = addAfter(tokenList, removeFrom, wrapped);\n                if (after) {\n                  addAfter(tokenList, currentNode, after);\n                }\n                if (removeCount > 1) {\n                  var nestedRematch = {\n                    cause: token + ',' + j,\n                    reach: reach\n                  };\n                  matchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n                  if (rematch && nestedRematch.reach > rematch.reach) {\n                    rematch.reach = nestedRematch.reach;\n                  }\n                }\n              }\n            }\n          }\n        }\n        function LinkedList() {\n          var head = {\n            value: null,\n            prev: null,\n            next: null\n          };\n          var tail = {\n            value: null,\n            prev: head,\n            next: null\n          };\n          head.next = tail;\n          this.head = head;\n          this.tail = tail;\n          this.length = 0;\n        }\n        function addAfter(list, node, value) {\n          var next = node.next;\n          var newNode = {\n            value: value,\n            prev: node,\n            next: next\n          };\n          node.next = newNode;\n          next.prev = newNode;\n          list.length++;\n          return newNode;\n        }\n        function removeRange(list, node, count) {\n          var next = node.next;\n          for (var i = 0; i < count && next !== list.tail; i++) {\n            next = next.next;\n          }\n          node.next = next;\n          next.prev = node;\n          list.length -= i;\n        }\n        function toArray(list) {\n          var array = [];\n          var node = list.head.next;\n          while (node !== list.tail) {\n            array.push(node.value);\n            node = node.next;\n          }\n          return array;\n        }\n        if (!_self.document) {\n          if (!_self.addEventListener) {\n            return _;\n          }\n          if (!_.disableWorkerMessageHandler) {\n            _self.addEventListener('message', function (evt) {\n              var message = JSON.parse(evt.data);\n              var lang = message.language;\n              var code = message.code;\n              var immediateClose = message.immediateClose;\n              _self.postMessage(_.highlight(code, _.languages[lang], lang));\n              if (immediateClose) {\n                _self.close();\n              }\n            }, false);\n          }\n          return _;\n        }\n        var script = _.util.currentScript();\n        if (script) {\n          _.filename = script.src;\n          if (script.hasAttribute('data-manual')) {\n            _.manual = true;\n          }\n        }\n        function highlightAutomaticallyCallback() {\n          if (!_.manual) {\n            _.highlightAll();\n          }\n        }\n        if (!_.manual) {\n          var readyState = document.readyState;\n          if (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n            document.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n          } else {\n            if (window.requestAnimationFrame) {\n              window.requestAnimationFrame(highlightAutomaticallyCallback);\n            } else {\n              window.setTimeout(highlightAutomaticallyCallback, 16);\n            }\n          }\n        }\n        return _;\n      }(_self);\n      if (typeof module !== 'undefined' && module.exports) {\n        module.exports = Prism;\n      }\n      if (typeof global !== 'undefined') {\n        global.Prism = Prism;\n      }\n      Prism.languages.clike = {\n        'comment': [{\n          pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n          lookbehind: true,\n          greedy: true\n        }, {\n          pattern: /(^|[^\\\\:])\\/\\/.*/,\n          lookbehind: true,\n          greedy: true\n        }],\n        'string': {\n          pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n          greedy: true\n        },\n        'class-name': {\n          pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n          lookbehind: true,\n          inside: {\n            'punctuation': /[.\\\\]/\n          }\n        },\n        'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n        'boolean': /\\b(?:false|true)\\b/,\n        'function': /\\b\\w+(?=\\()/,\n        'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n        'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n        'punctuation': /[{}[\\];(),.:]/\n      };\n      (function (Prism) {\n        function getPlaceholder(language, index) {\n          return '___' + language.toUpperCase() + index + '___';\n        }\n        Object.defineProperties(Prism.languages['markup-templating'] = {}, {\n          buildPlaceholders: {\n            value: function (env, language, placeholderPattern, replaceFilter) {\n              if (env.language !== language) {\n                return;\n              }\n              var tokenStack = env.tokenStack = [];\n              env.code = env.code.replace(placeholderPattern, function (match) {\n                if (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n                  return match;\n                }\n                var i = tokenStack.length;\n                var placeholder;\n                while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {\n                  ++i;\n                }\n                tokenStack[i] = match;\n                return placeholder;\n              });\n              env.grammar = Prism.languages.markup;\n            }\n          },\n          tokenizePlaceholders: {\n            value: function (env, language) {\n              if (env.language !== language || !env.tokenStack) {\n                return;\n              }\n              env.grammar = Prism.languages[language];\n              var j = 0;\n              var keys = Object.keys(env.tokenStack);\n              function walkTokens(tokens) {\n                for (var i = 0; i < tokens.length; i++) {\n                  if (j >= keys.length) {\n                    break;\n                  }\n                  var token = tokens[i];\n                  if (typeof token === 'string' || token.content && typeof token.content === 'string') {\n                    var k = keys[j];\n                    var t = env.tokenStack[k];\n                    var s = typeof token === 'string' ? token : token.content;\n                    var placeholder = getPlaceholder(language, k);\n                    var index = s.indexOf(placeholder);\n                    if (index > -1) {\n                      ++j;\n                      var before = s.substring(0, index);\n                      var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);\n                      var after = s.substring(index + placeholder.length);\n                      var replacement = [];\n                      if (before) {\n                        replacement.push.apply(replacement, walkTokens([before]));\n                      }\n                      replacement.push(middle);\n                      if (after) {\n                        replacement.push.apply(replacement, walkTokens([after]));\n                      }\n                      if (typeof token === 'string') {\n                        tokens.splice.apply(tokens, [i, 1].concat(replacement));\n                      } else {\n                        token.content = replacement;\n                      }\n                    }\n                  } else if (token.content) {\n                    walkTokens(token.content);\n                  }\n                }\n                return tokens;\n              }\n              walkTokens(env.tokens);\n            }\n          }\n        });\n      })(Prism);\n      Prism.languages.c = Prism.languages.extend('clike', {\n        'comment': {\n          pattern: /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n          greedy: true\n        },\n        'string': {\n          pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n          greedy: true\n        },\n        'class-name': {\n          pattern: /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n          lookbehind: true\n        },\n        'keyword': /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,\n        'function': /\\b[a-z_]\\w*(?=\\s*\\()/i,\n        'number': /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n        'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n      });\n      Prism.languages.insertBefore('c', 'string', {\n        'char': {\n          pattern: /'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,\n          greedy: true\n        }\n      });\n      Prism.languages.insertBefore('c', 'string', {\n        'macro': {\n          pattern: /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n          lookbehind: true,\n          greedy: true,\n          alias: 'property',\n          inside: {\n            'string': [{\n              pattern: /^(#\\s*include\\s*)<[^>]+>/,\n              lookbehind: true\n            }, Prism.languages.c['string']],\n            'char': Prism.languages.c['char'],\n            'comment': Prism.languages.c['comment'],\n            'macro-name': [{\n              pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n              lookbehind: true\n            }, {\n              pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n              lookbehind: true,\n              alias: 'function'\n            }],\n            'directive': {\n              pattern: /^(#\\s*)[a-z]+/,\n              lookbehind: true,\n              alias: 'keyword'\n            },\n            'directive-hash': /^#/,\n            'punctuation': /##|\\\\(?=[\\r\\n])/,\n            'expression': {\n              pattern: /\\S[\\s\\S]*/,\n              inside: Prism.languages.c\n            }\n          }\n        }\n      });\n      Prism.languages.insertBefore('c', 'function', {\n        'constant': /\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/\n      });\n      delete Prism.languages.c['boolean'];\n      (function (Prism) {\n        var keyword = /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/;\n        var modName = /\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(/<keyword>/g, function () {\n          return keyword.source;\n        });\n        Prism.languages.cpp = Prism.languages.extend('c', {\n          'class-name': [{\n            pattern: RegExp(/(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+/.source.replace(/<keyword>/g, function () {\n              return keyword.source;\n            })),\n            lookbehind: true\n          }, /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/, /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i, /\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/],\n          'keyword': keyword,\n          'number': {\n            pattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n            greedy: true\n          },\n          'operator': />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n          'boolean': /\\b(?:false|true)\\b/\n        });\n        Prism.languages.insertBefore('cpp', 'string', {\n          'module': {\n            pattern: RegExp(/(\\b(?:import|module)\\s+)/.source + '(?:' + /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source + '|' + /<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>/.source.replace(/<mod-name>/g, function () {\n              return modName;\n            }) + ')'),\n            lookbehind: true,\n            greedy: true,\n            inside: {\n              'string': /^[<\"][\\s\\S]+/,\n              'operator': /:/,\n              'punctuation': /\\./\n            }\n          },\n          'raw-string': {\n            pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n            alias: 'string',\n            greedy: true\n          }\n        });\n        Prism.languages.insertBefore('cpp', 'keyword', {\n          'generic-function': {\n            pattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n            inside: {\n              'function': /^\\w+/,\n              'generic': {\n                pattern: /<[\\s\\S]+/,\n                alias: 'class-name',\n                inside: Prism.languages.cpp\n              }\n            }\n          }\n        });\n        Prism.languages.insertBefore('cpp', 'operator', {\n          'double-colon': {\n            pattern: /::/,\n            alias: 'punctuation'\n          }\n        });\n        Prism.languages.insertBefore('cpp', 'class-name', {\n          'base-clause': {\n            pattern: /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n            lookbehind: true,\n            greedy: true,\n            inside: Prism.languages.extend('cpp', {})\n          }\n        });\n        Prism.languages.insertBefore('inside', 'double-colon', {\n          'class-name': /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n        }, Prism.languages.cpp['base-clause']);\n      })(Prism);\n      (function (Prism) {\n        function replace(pattern, replacements) {\n          return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n            return '(?:' + replacements[+index] + ')';\n          });\n        }\n        function re(pattern, replacements, flags) {\n          return RegExp(replace(pattern, replacements), flags || '');\n        }\n        function nested(pattern, depthLog2) {\n          for (var i = 0; i < depthLog2; i++) {\n            pattern = pattern.replace(/<<self>>/g, function () {\n              return '(?:' + pattern + ')';\n            });\n          }\n          return pattern.replace(/<<self>>/g, '[^\\\\s\\\\S]');\n        }\n        var keywordKinds = {\n          type: 'bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void',\n          typeDeclaration: 'class enum interface record struct',\n          contextual: 'add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)',\n          other: 'abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield'\n        };\n        function keywordsToPattern(words) {\n          return '\\\\b(?:' + words.trim().replace(/ /g, '|') + ')\\\\b';\n        }\n        var typeDeclarationKeywords = keywordsToPattern(keywordKinds.typeDeclaration);\n        var keywords = RegExp(keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.typeDeclaration + ' ' + keywordKinds.contextual + ' ' + keywordKinds.other));\n        var nonTypeKeywords = keywordsToPattern(keywordKinds.typeDeclaration + ' ' + keywordKinds.contextual + ' ' + keywordKinds.other);\n        var nonContextualKeywords = keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.typeDeclaration + ' ' + keywordKinds.other);\n        var generic = nested(/<(?:[^<>;=+\\-*/%&|^]|<<self>>)*>/.source, 2);\n        var nestedRound = nested(/\\((?:[^()]|<<self>>)*\\)/.source, 2);\n        var name = /@?\\b[A-Za-z_]\\w*\\b/.source;\n        var genericName = replace(/<<0>>(?:\\s*<<1>>)?/.source, [name, generic]);\n        var identifier = replace(/(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*/.source, [nonTypeKeywords, genericName]);\n        var array = /\\[\\s*(?:,\\s*)*\\]/.source;\n        var typeExpressionWithoutTuple = replace(/<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?/.source, [identifier, array]);\n        var tupleElement = replace(/[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source, [generic, nestedRound, array]);\n        var tuple = replace(/\\(<<0>>+(?:,<<0>>+)+\\)/.source, [tupleElement]);\n        var typeExpression = replace(/(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?/.source, [tuple, identifier, array]);\n        var typeInside = {\n          'keyword': keywords,\n          'punctuation': /[<>()?,.:[\\]]/\n        };\n        var character = /'(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'/.source;\n        var regularString = /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/.source;\n        var verbatimString = /@\"(?:\"\"|\\\\[\\s\\S]|[^\\\\\"])*\"(?!\")/.source;\n        Prism.languages.csharp = Prism.languages.extend('clike', {\n          'string': [{\n            pattern: re(/(^|[^$\\\\])<<0>>/.source, [verbatimString]),\n            lookbehind: true,\n            greedy: true\n          }, {\n            pattern: re(/(^|[^@$\\\\])<<0>>/.source, [regularString]),\n            lookbehind: true,\n            greedy: true\n          }],\n          'class-name': [{\n            pattern: re(/(\\busing\\s+static\\s+)<<0>>(?=\\s*;)/.source, [identifier]),\n            lookbehind: true,\n            inside: typeInside\n          }, {\n            pattern: re(/(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)/.source, [name, typeExpression]),\n            lookbehind: true,\n            inside: typeInside\n          }, {\n            pattern: re(/(\\busing\\s+)<<0>>(?=\\s*=)/.source, [name]),\n            lookbehind: true\n          }, {\n            pattern: re(/(\\b<<0>>\\s+)<<1>>/.source, [typeDeclarationKeywords, genericName]),\n            lookbehind: true,\n            inside: typeInside\n          }, {\n            pattern: re(/(\\bcatch\\s*\\(\\s*)<<0>>/.source, [identifier]),\n            lookbehind: true,\n            inside: typeInside\n          }, {\n            pattern: re(/(\\bwhere\\s+)<<0>>/.source, [name]),\n            lookbehind: true\n          }, {\n            pattern: re(/(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>/.source, [typeExpressionWithoutTuple]),\n            lookbehind: true,\n            inside: typeInside\n          }, {\n            pattern: re(/\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))/.source, [typeExpression, nonContextualKeywords, name]),\n            inside: typeInside\n          }],\n          'keyword': keywords,\n          'number': /(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:[dflmu]|lu|ul)?\\b/i,\n          'operator': />>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,\n          'punctuation': /\\?\\.?|::|[{}[\\];(),.:]/\n        });\n        Prism.languages.insertBefore('csharp', 'number', {\n          'range': {\n            pattern: /\\.\\./,\n            alias: 'operator'\n          }\n        });\n        Prism.languages.insertBefore('csharp', 'punctuation', {\n          'named-parameter': {\n            pattern: re(/([(,]\\s*)<<0>>(?=\\s*:)/.source, [name]),\n            lookbehind: true,\n            alias: 'punctuation'\n          }\n        });\n        Prism.languages.insertBefore('csharp', 'class-name', {\n          'namespace': {\n            pattern: re(/(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])/.source, [name]),\n            lookbehind: true,\n            inside: {\n              'punctuation': /\\./\n            }\n          },\n          'type-expression': {\n            pattern: re(/(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))/.source, [nestedRound]),\n            lookbehind: true,\n            alias: 'class-name',\n            inside: typeInside\n          },\n          'return-type': {\n            pattern: re(/<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))/.source, [typeExpression, identifier]),\n            inside: typeInside,\n            alias: 'class-name'\n          },\n          'constructor-invocation': {\n            pattern: re(/(\\bnew\\s+)<<0>>(?=\\s*[[({])/.source, [typeExpression]),\n            lookbehind: true,\n            inside: typeInside,\n            alias: 'class-name'\n          },\n          'generic-method': {\n            pattern: re(/<<0>>\\s*<<1>>(?=\\s*\\()/.source, [name, generic]),\n            inside: {\n              'function': re(/^<<0>>/.source, [name]),\n              'generic': {\n                pattern: RegExp(generic),\n                alias: 'class-name',\n                inside: typeInside\n              }\n            }\n          },\n          'type-list': {\n            pattern: re(/\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))/.source, [typeDeclarationKeywords, genericName, name, typeExpression, keywords.source, nestedRound, /\\bnew\\s*\\(\\s*\\)/.source]),\n            lookbehind: true,\n            inside: {\n              'record-arguments': {\n                pattern: re(/(^(?!new\\s*\\()<<0>>\\s*)<<1>>/.source, [genericName, nestedRound]),\n                lookbehind: true,\n                greedy: true,\n                inside: Prism.languages.csharp\n              },\n              'keyword': keywords,\n              'class-name': {\n                pattern: RegExp(typeExpression),\n                greedy: true,\n                inside: typeInside\n              },\n              'punctuation': /[,()]/\n            }\n          },\n          'preprocessor': {\n            pattern: /(^[\\t ]*)#.*/m,\n            lookbehind: true,\n            alias: 'property',\n            inside: {\n              'directive': {\n                pattern: /(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,\n                lookbehind: true,\n                alias: 'keyword'\n              }\n            }\n          }\n        });\n        var regularStringOrCharacter = regularString + '|' + character;\n        var regularStringCharacterOrComment = replace(/\\/(?![*/])|\\/\\/[^\\r\\n]*[\\r\\n]|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>/.source, [regularStringOrCharacter]);\n        var roundExpression = nested(replace(/[^\"'/()]|<<0>>|\\(<<self>>*\\)/.source, [regularStringCharacterOrComment]), 2);\n        var attrTarget = /\\b(?:assembly|event|field|method|module|param|property|return|type)\\b/.source;\n        var attr = replace(/<<0>>(?:\\s*\\(<<1>>*\\))?/.source, [identifier, roundExpression]);\n        Prism.languages.insertBefore('csharp', 'class-name', {\n          'attribute': {\n            pattern: re(/((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])/.source, [attrTarget, attr]),\n            lookbehind: true,\n            greedy: true,\n            inside: {\n              'target': {\n                pattern: re(/^<<0>>(?=\\s*:)/.source, [attrTarget]),\n                alias: 'keyword'\n              },\n              'attribute-arguments': {\n                pattern: re(/\\(<<0>>*\\)/.source, [roundExpression]),\n                inside: Prism.languages.csharp\n              },\n              'class-name': {\n                pattern: RegExp(identifier),\n                inside: {\n                  'punctuation': /\\./\n                }\n              },\n              'punctuation': /[:,]/\n            }\n          }\n        });\n        var formatString = /:[^}\\r\\n]+/.source;\n        var mInterpolationRound = nested(replace(/[^\"'/()]|<<0>>|\\(<<self>>*\\)/.source, [regularStringCharacterOrComment]), 2);\n        var mInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [mInterpolationRound, formatString]);\n        var sInterpolationRound = nested(replace(/[^\"'/()]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>|\\(<<self>>*\\)/.source, [regularStringOrCharacter]), 2);\n        var sInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [sInterpolationRound, formatString]);\n        function createInterpolationInside(interpolation, interpolationRound) {\n          return {\n            'interpolation': {\n              pattern: re(/((?:^|[^{])(?:\\{\\{)*)<<0>>/.source, [interpolation]),\n              lookbehind: true,\n              inside: {\n                'format-string': {\n                  pattern: re(/(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)/.source, [interpolationRound, formatString]),\n                  lookbehind: true,\n                  inside: {\n                    'punctuation': /^:/\n                  }\n                },\n                'punctuation': /^\\{|\\}$/,\n                'expression': {\n                  pattern: /[\\s\\S]+/,\n                  alias: 'language-csharp',\n                  inside: Prism.languages.csharp\n                }\n              }\n            },\n            'string': /[\\s\\S]+/\n          };\n        }\n        Prism.languages.insertBefore('csharp', 'string', {\n          'interpolation-string': [{\n            pattern: re(/(^|[^\\\\])(?:\\$@|@\\$)\"(?:\"\"|\\\\[\\s\\S]|\\{\\{|<<0>>|[^\\\\{\"])*\"/.source, [mInterpolation]),\n            lookbehind: true,\n            greedy: true,\n            inside: createInterpolationInside(mInterpolation, mInterpolationRound)\n          }, {\n            pattern: re(/(^|[^@\\\\])\\$\"(?:\\\\.|\\{\\{|<<0>>|[^\\\\\"{])*\"/.source, [sInterpolation]),\n            lookbehind: true,\n            greedy: true,\n            inside: createInterpolationInside(sInterpolation, sInterpolationRound)\n          }],\n          'char': {\n            pattern: RegExp(character),\n            greedy: true\n          }\n        });\n        Prism.languages.dotnet = Prism.languages.cs = Prism.languages.csharp;\n      })(Prism);\n      (function (Prism) {\n        var string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n        Prism.languages.css = {\n          'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n          'atrule': {\n            pattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n            inside: {\n              'rule': /^@[\\w-]+/,\n              'selector-function-argument': {\n                pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n                lookbehind: true,\n                alias: 'selector'\n              },\n              'keyword': {\n                pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n                lookbehind: true\n              }\n            }\n          },\n          'url': {\n            pattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n            greedy: true,\n            inside: {\n              'function': /^url/i,\n              'punctuation': /^\\(|\\)$/,\n              'string': {\n                pattern: RegExp('^' + string.source + '$'),\n                alias: 'url'\n              }\n            }\n          },\n          'selector': {\n            pattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n            lookbehind: true\n          },\n          'string': {\n            pattern: string,\n            greedy: true\n          },\n          'property': {\n            pattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n            lookbehind: true\n          },\n          'important': /!important\\b/i,\n          'function': {\n            pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n            lookbehind: true\n          },\n          'punctuation': /[(){};:,]/\n        };\n        Prism.languages.css['atrule'].inside.rest = Prism.languages.css;\n        var markup = Prism.languages.markup;\n        if (markup) {\n          markup.tag.addInlined('style', 'css');\n          markup.tag.addAttribute('style', 'css');\n        }\n      })(Prism);\n      (function (Prism) {\n        var keywords = /\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/;\n        var classNamePrefix = /(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source;\n        var className = {\n          pattern: RegExp(/(^|[^\\w.])/.source + classNamePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n          lookbehind: true,\n          inside: {\n            'namespace': {\n              pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n              inside: {\n                'punctuation': /\\./\n              }\n            },\n            'punctuation': /\\./\n          }\n        };\n        Prism.languages.java = Prism.languages.extend('clike', {\n          'string': {\n            pattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n            lookbehind: true,\n            greedy: true\n          },\n          'class-name': [className, {\n            pattern: RegExp(/(^|[^\\w.])/.source + classNamePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)/.source),\n            lookbehind: true,\n            inside: className.inside\n          }, {\n            pattern: RegExp(/(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)/.source + classNamePrefix + /[A-Z]\\w*\\b/.source),\n            lookbehind: true,\n            inside: className.inside\n          }],\n          'keyword': keywords,\n          'function': [Prism.languages.clike.function, {\n            pattern: /(::\\s*)[a-z_]\\w*/,\n            lookbehind: true\n          }],\n          'number': /\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n          'operator': {\n            pattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,\n            lookbehind: true\n          },\n          'constant': /\\b[A-Z][A-Z_\\d]+\\b/\n        });\n        Prism.languages.insertBefore('java', 'string', {\n          'triple-quoted-string': {\n            pattern: /\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,\n            greedy: true,\n            alias: 'string'\n          },\n          'char': {\n            pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,\n            greedy: true\n          }\n        });\n        Prism.languages.insertBefore('java', 'class-name', {\n          'annotation': {\n            pattern: /(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,\n            lookbehind: true,\n            alias: 'punctuation'\n          },\n          'generics': {\n            pattern: /<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,\n            inside: {\n              'class-name': className,\n              'keyword': keywords,\n              'punctuation': /[<>(),.:]/,\n              'operator': /[?&|]/\n            }\n          },\n          'import': [{\n            pattern: RegExp(/(\\bimport\\s+)/.source + classNamePrefix + /(?:[A-Z]\\w*|\\*)(?=\\s*;)/.source),\n            lookbehind: true,\n            inside: {\n              'namespace': className.inside.namespace,\n              'punctuation': /\\./,\n              'operator': /\\*/,\n              'class-name': /\\w+/\n            }\n          }, {\n            pattern: RegExp(/(\\bimport\\s+static\\s+)/.source + classNamePrefix + /(?:\\w+|\\*)(?=\\s*;)/.source),\n            lookbehind: true,\n            alias: 'static',\n            inside: {\n              'namespace': className.inside.namespace,\n              'static': /\\b\\w+$/,\n              'punctuation': /\\./,\n              'operator': /\\*/,\n              'class-name': /\\w+/\n            }\n          }],\n          'namespace': {\n            pattern: RegExp(/(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?/.source.replace(/<keyword>/g, function () {\n              return keywords.source;\n            })),\n            lookbehind: true,\n            inside: {\n              'punctuation': /\\./\n            }\n          }\n        });\n      })(Prism);\n      Prism.languages.javascript = Prism.languages.extend('clike', {\n        'class-name': [Prism.languages.clike['class-name'], {\n          pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n          lookbehind: true\n        }],\n        'keyword': [{\n          pattern: /((?:^|\\})\\s*)catch\\b/,\n          lookbehind: true\n        }, {\n          pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n          lookbehind: true\n        }],\n        'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n        'number': {\n          pattern: RegExp(/(^|[^\\w$])/.source + '(?:' + (/NaN|Infinity/.source + '|' + /0[bB][01]+(?:_[01]+)*n?/.source + '|' + /0[oO][0-7]+(?:_[0-7]+)*n?/.source + '|' + /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source + '|' + /\\d+(?:_\\d+)*n/.source + '|' + /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source) + ')' + /(?![\\w$])/.source),\n          lookbehind: true\n        },\n        'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n      });\n      Prism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n      Prism.languages.insertBefore('javascript', 'keyword', {\n        'regex': {\n          pattern: RegExp(/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source + /\\//.source + '(?:' + /(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source + '|' + /(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source + ')' + /(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source),\n          lookbehind: true,\n          greedy: true,\n          inside: {\n            'regex-source': {\n              pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n              lookbehind: true,\n              alias: 'language-regex',\n              inside: Prism.languages.regex\n            },\n            'regex-delimiter': /^\\/|\\/$/,\n            'regex-flags': /^[a-z]+$/\n          }\n        },\n        'function-variable': {\n          pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n          alias: 'function'\n        },\n        'parameter': [{\n          pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n          lookbehind: true,\n          inside: Prism.languages.javascript\n        }, {\n          pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n          lookbehind: true,\n          inside: Prism.languages.javascript\n        }, {\n          pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n          lookbehind: true,\n          inside: Prism.languages.javascript\n        }, {\n          pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n          lookbehind: true,\n          inside: Prism.languages.javascript\n        }],\n        'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n      });\n      Prism.languages.insertBefore('javascript', 'string', {\n        'hashbang': {\n          pattern: /^#!.*/,\n          greedy: true,\n          alias: 'comment'\n        },\n        'template-string': {\n          pattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n          greedy: true,\n          inside: {\n            'template-punctuation': {\n              pattern: /^`|`$/,\n              alias: 'string'\n            },\n            'interpolation': {\n              pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n              lookbehind: true,\n              inside: {\n                'interpolation-punctuation': {\n                  pattern: /^\\$\\{|\\}$/,\n                  alias: 'punctuation'\n                },\n                rest: Prism.languages.javascript\n              }\n            },\n            'string': /[\\s\\S]+/\n          }\n        },\n        'string-property': {\n          pattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n          lookbehind: true,\n          greedy: true,\n          alias: 'property'\n        }\n      });\n      Prism.languages.insertBefore('javascript', 'operator', {\n        'literal-property': {\n          pattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n          lookbehind: true,\n          alias: 'property'\n        }\n      });\n      if (Prism.languages.markup) {\n        Prism.languages.markup.tag.addInlined('script', 'javascript');\n        Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, 'javascript');\n      }\n      Prism.languages.js = Prism.languages.javascript;\n      Prism.languages.markup = {\n        'comment': {\n          pattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n          greedy: true\n        },\n        'prolog': {\n          pattern: /<\\?[\\s\\S]+?\\?>/,\n          greedy: true\n        },\n        'doctype': {\n          pattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n          greedy: true,\n          inside: {\n            'internal-subset': {\n              pattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n              lookbehind: true,\n              greedy: true,\n              inside: null\n            },\n            'string': {\n              pattern: /\"[^\"]*\"|'[^']*'/,\n              greedy: true\n            },\n            'punctuation': /^<!|>$|[[\\]]/,\n            'doctype-tag': /^DOCTYPE/i,\n            'name': /[^\\s<>'\"]+/\n          }\n        },\n        'cdata': {\n          pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n          greedy: true\n        },\n        'tag': {\n          pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n          greedy: true,\n          inside: {\n            'tag': {\n              pattern: /^<\\/?[^\\s>\\/]+/,\n              inside: {\n                'punctuation': /^<\\/?/,\n                'namespace': /^[^\\s>\\/:]+:/\n              }\n            },\n            'special-attr': [],\n            'attr-value': {\n              pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n              inside: {\n                'punctuation': [{\n                  pattern: /^=/,\n                  alias: 'attr-equals'\n                }, {\n                  pattern: /^(\\s*)[\"']|[\"']$/,\n                  lookbehind: true\n                }]\n              }\n            },\n            'punctuation': /\\/?>/,\n            'attr-name': {\n              pattern: /[^\\s>\\/]+/,\n              inside: {\n                'namespace': /^[^\\s>\\/:]+:/\n              }\n            }\n          }\n        },\n        'entity': [{\n          pattern: /&[\\da-z]{1,8};/i,\n          alias: 'named-entity'\n        }, /&#x?[\\da-f]{1,8};/i]\n      };\n      Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity'];\n      Prism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n      Prism.hooks.add('wrap', function (env) {\n        if (env.type === 'entity') {\n          env.attributes['title'] = env.content.replace(/&amp;/, '&');\n        }\n      });\n      Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n        value: function addInlined(tagName, lang) {\n          var includedCdataInside = {};\n          includedCdataInside['language-' + lang] = {\n            pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n            lookbehind: true,\n            inside: Prism.languages[lang]\n          };\n          includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n          var inside = {\n            'included-cdata': {\n              pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n              inside: includedCdataInside\n            }\n          };\n          inside['language-' + lang] = {\n            pattern: /[\\s\\S]+/,\n            inside: Prism.languages[lang]\n          };\n          var def = {};\n          def[tagName] = {\n            pattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () {\n              return tagName;\n            }), 'i'),\n            lookbehind: true,\n            greedy: true,\n            inside: inside\n          };\n          Prism.languages.insertBefore('markup', 'cdata', def);\n        }\n      });\n      Object.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n        value: function (attrName, lang) {\n          Prism.languages.markup.tag.inside['special-attr'].push({\n            pattern: RegExp(/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source, 'i'),\n            lookbehind: true,\n            inside: {\n              'attr-name': /^[^\\s=]+/,\n              'attr-value': {\n                pattern: /=[\\s\\S]+/,\n                inside: {\n                  'value': {\n                    pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n                    lookbehind: true,\n                    alias: [lang, 'language-' + lang],\n                    inside: Prism.languages[lang]\n                  },\n                  'punctuation': [{\n                    pattern: /^=/,\n                    alias: 'attr-equals'\n                  }, /\"|'/]\n                }\n              }\n            }\n          });\n        }\n      });\n      Prism.languages.html = Prism.languages.markup;\n      Prism.languages.mathml = Prism.languages.markup;\n      Prism.languages.svg = Prism.languages.markup;\n      Prism.languages.xml = Prism.languages.extend('markup', {});\n      Prism.languages.ssml = Prism.languages.xml;\n      Prism.languages.atom = Prism.languages.xml;\n      Prism.languages.rss = Prism.languages.xml;\n      (function (Prism) {\n        var comment = /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*|#(?!\\[).*/;\n        var constant = [{\n          pattern: /\\b(?:false|true)\\b/i,\n          alias: 'boolean'\n        }, {\n          pattern: /(::\\s*)\\b[a-z_]\\w*\\b(?!\\s*\\()/i,\n          greedy: true,\n          lookbehind: true\n        }, {\n          pattern: /(\\b(?:case|const)\\s+)\\b[a-z_]\\w*(?=\\s*[;=])/i,\n          greedy: true,\n          lookbehind: true\n        }, /\\b(?:null)\\b/i, /\\b[A-Z_][A-Z0-9_]*\\b(?!\\s*\\()/];\n        var number = /\\b0b[01]+(?:_[01]+)*\\b|\\b0o[0-7]+(?:_[0-7]+)*\\b|\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b|(?:\\b\\d+(?:_\\d+)*\\.?(?:\\d+(?:_\\d+)*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i;\n        var operator = /<?=>|\\?\\?=?|\\.{3}|\\??->|[!=]=?=?|::|\\*\\*=?|--|\\+\\+|&&|\\|\\||<<|>>|[?~]|[/^|%*&<>.+-]=?/;\n        var punctuation = /[{}\\[\\](),:;]/;\n        Prism.languages.php = {\n          'delimiter': {\n            pattern: /\\?>$|^<\\?(?:php(?=\\s)|=)?/i,\n            alias: 'important'\n          },\n          'comment': comment,\n          'variable': /\\$+(?:\\w+\\b|(?=\\{))/,\n          'package': {\n            pattern: /(namespace\\s+|use\\s+(?:function\\s+)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n            lookbehind: true,\n            inside: {\n              'punctuation': /\\\\/\n            }\n          },\n          'class-name-definition': {\n            pattern: /(\\b(?:class|enum|interface|trait)\\s+)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n            lookbehind: true,\n            alias: 'class-name'\n          },\n          'function-definition': {\n            pattern: /(\\bfunction\\s+)[a-z_]\\w*(?=\\s*\\()/i,\n            lookbehind: true,\n            alias: 'function'\n          },\n          'keyword': [{\n            pattern: /(\\(\\s*)\\b(?:array|bool|boolean|float|int|integer|object|string)\\b(?=\\s*\\))/i,\n            alias: 'type-casting',\n            greedy: true,\n            lookbehind: true\n          }, {\n            pattern: /([(,?]\\s*)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|object|self|static|string)\\b(?=\\s*\\$)/i,\n            alias: 'type-hint',\n            greedy: true,\n            lookbehind: true\n          }, {\n            pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|never|object|self|static|string|void)\\b/i,\n            alias: 'return-type',\n            greedy: true,\n            lookbehind: true\n          }, {\n            pattern: /\\b(?:array(?!\\s*\\()|bool|float|int|iterable|mixed|object|string|void)\\b/i,\n            alias: 'type-declaration',\n            greedy: true\n          }, {\n            pattern: /(\\|\\s*)(?:false|null)\\b|\\b(?:false|null)(?=\\s*\\|)/i,\n            alias: 'type-declaration',\n            greedy: true,\n            lookbehind: true\n          }, {\n            pattern: /\\b(?:parent|self|static)(?=\\s*::)/i,\n            alias: 'static-context',\n            greedy: true\n          }, {\n            pattern: /(\\byield\\s+)from\\b/i,\n            lookbehind: true\n          }, /\\bclass\\b/i, {\n            pattern: /((?:^|[^\\s>:]|(?:^|[^-])>|(?:^|[^:]):)\\s*)\\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\\b/i,\n            lookbehind: true\n          }],\n          'argument-name': {\n            pattern: /([(,]\\s*)\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n            lookbehind: true\n          },\n          'class-name': [{\n            pattern: /(\\b(?:extends|implements|instanceof|new(?!\\s+self|\\s+static))\\s+|\\bcatch\\s*\\()\\b[a-z_]\\w*(?!\\\\)\\b/i,\n            greedy: true,\n            lookbehind: true\n          }, {\n            pattern: /(\\|\\s*)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n            greedy: true,\n            lookbehind: true\n          }, {\n            pattern: /\\b[a-z_]\\w*(?!\\\\)\\b(?=\\s*\\|)/i,\n            greedy: true\n          }, {\n            pattern: /(\\|\\s*)(?:\\\\?\\b[a-z_]\\w*)+\\b/i,\n            alias: 'class-name-fully-qualified',\n            greedy: true,\n            lookbehind: true,\n            inside: {\n              'punctuation': /\\\\/\n            }\n          }, {\n            pattern: /(?:\\\\?\\b[a-z_]\\w*)+\\b(?=\\s*\\|)/i,\n            alias: 'class-name-fully-qualified',\n            greedy: true,\n            inside: {\n              'punctuation': /\\\\/\n            }\n          }, {\n            pattern: /(\\b(?:extends|implements|instanceof|new(?!\\s+self\\b|\\s+static\\b))\\s+|\\bcatch\\s*\\()(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n            alias: 'class-name-fully-qualified',\n            greedy: true,\n            lookbehind: true,\n            inside: {\n              'punctuation': /\\\\/\n            }\n          }, {\n            pattern: /\\b[a-z_]\\w*(?=\\s*\\$)/i,\n            alias: 'type-declaration',\n            greedy: true\n          }, {\n            pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n            alias: ['class-name-fully-qualified', 'type-declaration'],\n            greedy: true,\n            inside: {\n              'punctuation': /\\\\/\n            }\n          }, {\n            pattern: /\\b[a-z_]\\w*(?=\\s*::)/i,\n            alias: 'static-context',\n            greedy: true\n          }, {\n            pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*::)/i,\n            alias: ['class-name-fully-qualified', 'static-context'],\n            greedy: true,\n            inside: {\n              'punctuation': /\\\\/\n            }\n          }, {\n            pattern: /([(,?]\\s*)[a-z_]\\w*(?=\\s*\\$)/i,\n            alias: 'type-hint',\n            greedy: true,\n            lookbehind: true\n          }, {\n            pattern: /([(,?]\\s*)(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n            alias: ['class-name-fully-qualified', 'type-hint'],\n            greedy: true,\n            lookbehind: true,\n            inside: {\n              'punctuation': /\\\\/\n            }\n          }, {\n            pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n            alias: 'return-type',\n            greedy: true,\n            lookbehind: true\n          }, {\n            pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n            alias: ['class-name-fully-qualified', 'return-type'],\n            greedy: true,\n            lookbehind: true,\n            inside: {\n              'punctuation': /\\\\/\n            }\n          }],\n          'constant': constant,\n          'function': {\n            pattern: /(^|[^\\\\\\w])\\\\?[a-z_](?:[\\w\\\\]*\\w)?(?=\\s*\\()/i,\n            lookbehind: true,\n            inside: {\n              'punctuation': /\\\\/\n            }\n          },\n          'property': {\n            pattern: /(->\\s*)\\w+/,\n            lookbehind: true\n          },\n          'number': number,\n          'operator': operator,\n          'punctuation': punctuation\n        };\n        var string_interpolation = {\n          pattern: /\\{\\$(?:\\{(?:\\{[^{}]+\\}|[^{}]+)\\}|[^{}])+\\}|(^|[^\\\\{])\\$+(?:\\w+(?:\\[[^\\r\\n\\[\\]]+\\]|->\\w+)?)/,\n          lookbehind: true,\n          inside: Prism.languages.php\n        };\n        var string = [{\n          pattern: /<<<'([^']+)'[\\r\\n](?:.*[\\r\\n])*?\\1;/,\n          alias: 'nowdoc-string',\n          greedy: true,\n          inside: {\n            'delimiter': {\n              pattern: /^<<<'[^']+'|[a-z_]\\w*;$/i,\n              alias: 'symbol',\n              inside: {\n                'punctuation': /^<<<'?|[';]$/\n              }\n            }\n          }\n        }, {\n          pattern: /<<<(?:\"([^\"]+)\"[\\r\\n](?:.*[\\r\\n])*?\\1;|([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\2;)/i,\n          alias: 'heredoc-string',\n          greedy: true,\n          inside: {\n            'delimiter': {\n              pattern: /^<<<(?:\"[^\"]+\"|[a-z_]\\w*)|[a-z_]\\w*;$/i,\n              alias: 'symbol',\n              inside: {\n                'punctuation': /^<<<\"?|[\";]$/\n              }\n            },\n            'interpolation': string_interpolation\n          }\n        }, {\n          pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n          alias: 'backtick-quoted-string',\n          greedy: true\n        }, {\n          pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n          alias: 'single-quoted-string',\n          greedy: true\n        }, {\n          pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n          alias: 'double-quoted-string',\n          greedy: true,\n          inside: {\n            'interpolation': string_interpolation\n          }\n        }];\n        Prism.languages.insertBefore('php', 'variable', {\n          'string': string,\n          'attribute': {\n            pattern: /#\\[(?:[^\"'\\/#]|\\/(?![*/])|\\/\\/.*$|#(?!\\[).*$|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*')+\\](?=\\s*[a-z$#])/im,\n            greedy: true,\n            inside: {\n              'attribute-content': {\n                pattern: /^(#\\[)[\\s\\S]+(?=\\]$)/,\n                lookbehind: true,\n                inside: {\n                  'comment': comment,\n                  'string': string,\n                  'attribute-class-name': [{\n                    pattern: /([^:]|^)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n                    alias: 'class-name',\n                    greedy: true,\n                    lookbehind: true\n                  }, {\n                    pattern: /([^:]|^)(?:\\\\?\\b[a-z_]\\w*)+/i,\n                    alias: ['class-name', 'class-name-fully-qualified'],\n                    greedy: true,\n                    lookbehind: true,\n                    inside: {\n                      'punctuation': /\\\\/\n                    }\n                  }],\n                  'constant': constant,\n                  'number': number,\n                  'operator': operator,\n                  'punctuation': punctuation\n                }\n              },\n              'delimiter': {\n                pattern: /^#\\[|\\]$/,\n                alias: 'punctuation'\n              }\n            }\n          }\n        });\n        Prism.hooks.add('before-tokenize', function (env) {\n          if (!/<\\?/.test(env.code)) {\n            return;\n          }\n          var phpPattern = /<\\?(?:[^\"'/#]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|(?:\\/\\/|#(?!\\[))(?:[^?\\n\\r]|\\?(?!>))*(?=$|\\?>|[\\r\\n])|#\\[|\\/\\*(?:[^*]|\\*(?!\\/))*(?:\\*\\/|$))*?(?:\\?>|$)/g;\n          Prism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern);\n        });\n        Prism.hooks.add('after-tokenize', function (env) {\n          Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php');\n        });\n      })(Prism);\n      Prism.languages.python = {\n        'comment': {\n          pattern: /(^|[^\\\\])#.*/,\n          lookbehind: true,\n          greedy: true\n        },\n        'string-interpolation': {\n          pattern: /(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n          greedy: true,\n          inside: {\n            'interpolation': {\n              pattern: /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n              lookbehind: true,\n              inside: {\n                'format-spec': {\n                  pattern: /(:)[^:(){}]+(?=\\}$)/,\n                  lookbehind: true\n                },\n                'conversion-option': {\n                  pattern: /![sra](?=[:}]$)/,\n                  alias: 'punctuation'\n                },\n                rest: null\n              }\n            },\n            'string': /[\\s\\S]+/\n          }\n        },\n        'triple-quoted-string': {\n          pattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n          greedy: true,\n          alias: 'string'\n        },\n        'string': {\n          pattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n          greedy: true\n        },\n        'function': {\n          pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n          lookbehind: true\n        },\n        'class-name': {\n          pattern: /(\\bclass\\s+)\\w+/i,\n          lookbehind: true\n        },\n        'decorator': {\n          pattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,\n          lookbehind: true,\n          alias: ['annotation', 'punctuation'],\n          inside: {\n            'punctuation': /\\./\n          }\n        },\n        'keyword': /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n        'builtin': /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n        'boolean': /\\b(?:False|None|True)\\b/,\n        'number': /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,\n        'operator': /[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n        'punctuation': /[{}[\\];(),.:]/\n      };\n      Prism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;\n      Prism.languages.py = Prism.languages.python;\n      (function (Prism) {\n        Prism.languages.ruby = Prism.languages.extend('clike', {\n          'comment': {\n            pattern: /#.*|^=begin\\s[\\s\\S]*?^=end/m,\n            greedy: true\n          },\n          'class-name': {\n            pattern: /(\\b(?:class|module)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+|\\b[A-Z_]\\w*(?=\\s*\\.\\s*new\\b)/,\n            lookbehind: true,\n            inside: {\n              'punctuation': /[.\\\\]/\n            }\n          },\n          'keyword': /\\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\\b/,\n          'operator': /\\.{2,3}|&\\.|===|<?=>|[!=]?~|(?:&&|\\|\\||<<|>>|\\*\\*|[+\\-*/%<>!^&|=])=?|[?:]/,\n          'punctuation': /[(){}[\\].,;]/\n        });\n        Prism.languages.insertBefore('ruby', 'operator', {\n          'double-colon': {\n            pattern: /::/,\n            alias: 'punctuation'\n          }\n        });\n        var interpolation = {\n          pattern: /((?:^|[^\\\\])(?:\\\\{2})*)#\\{(?:[^{}]|\\{[^{}]*\\})*\\}/,\n          lookbehind: true,\n          inside: {\n            'content': {\n              pattern: /^(#\\{)[\\s\\S]+(?=\\}$)/,\n              lookbehind: true,\n              inside: Prism.languages.ruby\n            },\n            'delimiter': {\n              pattern: /^#\\{|\\}$/,\n              alias: 'punctuation'\n            }\n          }\n        };\n        delete Prism.languages.ruby.function;\n        var percentExpression = '(?:' + [/([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source, /\\((?:[^()\\\\]|\\\\[\\s\\S]|\\((?:[^()\\\\]|\\\\[\\s\\S])*\\))*\\)/.source, /\\{(?:[^{}\\\\]|\\\\[\\s\\S]|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\})*\\}/.source, /\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S]|\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\])*\\]/.source, /<(?:[^<>\\\\]|\\\\[\\s\\S]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)*>/.source].join('|') + ')';\n        var symbolName = /(?:\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|(?:\\b[a-zA-Z_]\\w*|[^\\s\\0-\\x7F]+)[?!]?|\\$.)/.source;\n        Prism.languages.insertBefore('ruby', 'keyword', {\n          'regex-literal': [{\n            pattern: RegExp(/%r/.source + percentExpression + /[egimnosux]{0,6}/.source),\n            greedy: true,\n            inside: {\n              'interpolation': interpolation,\n              'regex': /[\\s\\S]+/\n            }\n          }, {\n            pattern: /(^|[^/])\\/(?!\\/)(?:\\[[^\\r\\n\\]]+\\]|\\\\.|[^[/\\\\\\r\\n])+\\/[egimnosux]{0,6}(?=\\s*(?:$|[\\r\\n,.;})#]))/,\n            lookbehind: true,\n            greedy: true,\n            inside: {\n              'interpolation': interpolation,\n              'regex': /[\\s\\S]+/\n            }\n          }],\n          'variable': /[@$]+[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n          'symbol': [{\n            pattern: RegExp(/(^|[^:]):/.source + symbolName),\n            lookbehind: true,\n            greedy: true\n          }, {\n            pattern: RegExp(/([\\r\\n{(,][ \\t]*)/.source + symbolName + /(?=:(?!:))/.source),\n            lookbehind: true,\n            greedy: true\n          }],\n          'method-definition': {\n            pattern: /(\\bdef\\s+)\\w+(?:\\s*\\.\\s*\\w+)?/,\n            lookbehind: true,\n            inside: {\n              'function': /\\b\\w+$/,\n              'keyword': /^self\\b/,\n              'class-name': /^\\w+/,\n              'punctuation': /\\./\n            }\n          }\n        });\n        Prism.languages.insertBefore('ruby', 'string', {\n          'string-literal': [{\n            pattern: RegExp(/%[qQiIwWs]?/.source + percentExpression),\n            greedy: true,\n            inside: {\n              'interpolation': interpolation,\n              'string': /[\\s\\S]+/\n            }\n          }, {\n            pattern: /(\"|')(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\#\\r\\n])*\\1/,\n            greedy: true,\n            inside: {\n              'interpolation': interpolation,\n              'string': /[\\s\\S]+/\n            }\n          }, {\n            pattern: /<<[-~]?([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n            alias: 'heredoc-string',\n            greedy: true,\n            inside: {\n              'delimiter': {\n                pattern: /^<<[-~]?[a-z_]\\w*|\\b[a-z_]\\w*$/i,\n                inside: {\n                  'symbol': /\\b\\w+/,\n                  'punctuation': /^<<[-~]?/\n                }\n              },\n              'interpolation': interpolation,\n              'string': /[\\s\\S]+/\n            }\n          }, {\n            pattern: /<<[-~]?'([a-z_]\\w*)'[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n            alias: 'heredoc-string',\n            greedy: true,\n            inside: {\n              'delimiter': {\n                pattern: /^<<[-~]?'[a-z_]\\w*'|\\b[a-z_]\\w*$/i,\n                inside: {\n                  'symbol': /\\b\\w+/,\n                  'punctuation': /^<<[-~]?'|'$/\n                }\n              },\n              'string': /[\\s\\S]+/\n            }\n          }],\n          'command-literal': [{\n            pattern: RegExp(/%x/.source + percentExpression),\n            greedy: true,\n            inside: {\n              'interpolation': interpolation,\n              'command': {\n                pattern: /[\\s\\S]+/,\n                alias: 'string'\n              }\n            }\n          }, {\n            pattern: /`(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|[^\\\\`#\\r\\n])*`/,\n            greedy: true,\n            inside: {\n              'interpolation': interpolation,\n              'command': {\n                pattern: /[\\s\\S]+/,\n                alias: 'string'\n              }\n            }\n          }]\n        });\n        delete Prism.languages.ruby.string;\n        Prism.languages.insertBefore('ruby', 'number', {\n          'builtin': /\\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\\b/,\n          'constant': /\\b[A-Z][A-Z0-9_]*(?:[?!]|\\b)/\n        });\n        Prism.languages.rb = Prism.languages.ruby;\n      })(Prism);\n      window.Prism = oldprism;\n      return Prism;\n    }(undefined, undefined);\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('codesample_languages', {\n        processor: 'object[]'\n      });\n      registerOption('codesample_global_prismjs', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const getLanguages$1 = option('codesample_languages');\n    const useGlobalPrismJS = option('codesample_global_prismjs');\n\n    const get = editor => Global.Prism && useGlobalPrismJS(editor) ? Global.Prism : prismjs;\n\n    const isCodeSample = elm => {\n      return isNonNullable(elm) && elm.nodeName === 'PRE' && elm.className.indexOf('language-') !== -1;\n    };\n\n    const getSelectedCodeSample = editor => {\n      const node = editor.selection ? editor.selection.getNode() : null;\n      return isCodeSample(node) ? Optional.some(node) : Optional.none();\n    };\n    const insertCodeSample = (editor, language, code) => {\n      const dom = editor.dom;\n      editor.undoManager.transact(() => {\n        const node = getSelectedCodeSample(editor);\n        code = global$1.DOM.encode(code);\n        return node.fold(() => {\n          editor.insertContent('<pre id=\"__new\" class=\"language-' + language + '\">' + code + '</pre>');\n          const newPre = dom.select('#__new')[0];\n          dom.setAttrib(newPre, 'id', null);\n          editor.selection.select(newPre);\n        }, n => {\n          dom.setAttrib(n, 'class', 'language-' + language);\n          n.innerHTML = code;\n          get(editor).highlightElement(n);\n          editor.selection.select(n);\n        });\n      });\n    };\n    const getCurrentCode = editor => {\n      const node = getSelectedCodeSample(editor);\n      return node.bind(n => Optional.from(n.textContent)).getOr('');\n    };\n\n    const getLanguages = editor => {\n      const defaultLanguages = [{\n        text: 'HTML/XML',\n        value: 'markup'\n      }, {\n        text: 'JavaScript',\n        value: 'javascript'\n      }, {\n        text: 'CSS',\n        value: 'css'\n      }, {\n        text: 'PHP',\n        value: 'php'\n      }, {\n        text: 'Ruby',\n        value: 'ruby'\n      }, {\n        text: 'Python',\n        value: 'python'\n      }, {\n        text: 'Java',\n        value: 'java'\n      }, {\n        text: 'C',\n        value: 'c'\n      }, {\n        text: 'C#',\n        value: 'csharp'\n      }, {\n        text: 'C++',\n        value: 'cpp'\n      }];\n      const customLanguages = getLanguages$1(editor);\n      return customLanguages ? customLanguages : defaultLanguages;\n    };\n    const getCurrentLanguage = (editor, fallback) => {\n      const node = getSelectedCodeSample(editor);\n      return node.fold(() => fallback, n => {\n        const matches = n.className.match(/language-(\\w+)/);\n        return matches ? matches[1] : fallback;\n      });\n    };\n\n    const open = editor => {\n      const languages = getLanguages(editor);\n      const defaultLanguage = head(languages).fold(constant(''), l => l.value);\n      const currentLanguage = getCurrentLanguage(editor, defaultLanguage);\n      const currentCode = getCurrentCode(editor);\n      editor.windowManager.open({\n        title: 'Insert/Edit Code Sample',\n        size: 'large',\n        body: {\n          type: 'panel',\n          items: [{\n            type: 'listbox',\n            name: 'language',\n            label: 'Language',\n            items: languages\n          }, {\n            type: 'textarea',\n            name: 'code',\n            label: 'Code view'\n          }]\n        },\n        buttons: [{\n          type: 'cancel',\n          name: 'cancel',\n          text: 'Cancel'\n        }, {\n          type: 'submit',\n          name: 'save',\n          text: 'Save',\n          primary: true\n        }],\n        initialData: {\n          language: currentLanguage,\n          code: currentCode\n        },\n        onSubmit: api => {\n          const data = api.getData();\n          insertCodeSample(editor, data.language, data.code);\n          api.close();\n        }\n      });\n    };\n\n    const register$1 = editor => {\n      editor.addCommand('codesample', () => {\n        const node = editor.selection.getNode();\n        if (editor.selection.isCollapsed() || isCodeSample(node)) {\n          open(editor);\n        } else {\n          editor.formatter.toggle('code');\n        }\n      });\n    };\n\n    const blank = r => s => s.replace(r, '');\n    const trim = blank(/^\\s+|\\s+$/g);\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const setup = editor => {\n      editor.on('PreProcess', e => {\n        const dom = editor.dom;\n        const pres = dom.select('pre[contenteditable=false]', e.node);\n        global.each(global.grep(pres, isCodeSample), elm => {\n          const code = elm.textContent;\n          dom.setAttrib(elm, 'class', trim(dom.getAttrib(elm, 'class')));\n          dom.setAttrib(elm, 'contentEditable', null);\n          dom.setAttrib(elm, 'data-mce-highlighted', null);\n          let child;\n          while (child = elm.firstChild) {\n            elm.removeChild(child);\n          }\n          const codeElm = dom.add(elm, 'code');\n          codeElm.textContent = code;\n        });\n      });\n      editor.on('SetContent', () => {\n        const dom = editor.dom;\n        const unprocessedCodeSamples = global.grep(dom.select('pre'), elm => {\n          return isCodeSample(elm) && dom.getAttrib(elm, 'data-mce-highlighted') !== 'true';\n        });\n        if (unprocessedCodeSamples.length) {\n          editor.undoManager.transact(() => {\n            global.each(unprocessedCodeSamples, elm => {\n              var _a;\n              global.each(dom.select('br', elm), elm => {\n                dom.replace(editor.getDoc().createTextNode('\\n'), elm);\n              });\n              elm.innerHTML = dom.encode((_a = elm.textContent) !== null && _a !== void 0 ? _a : '');\n              get(editor).highlightElement(elm);\n              dom.setAttrib(elm, 'data-mce-highlighted', true);\n              elm.className = trim(elm.className);\n            });\n          });\n        }\n      });\n      editor.on('PreInit', () => {\n        editor.parser.addNodeFilter('pre', nodes => {\n          var _a;\n          for (let i = 0, l = nodes.length; i < l; i++) {\n            const node = nodes[i];\n            const isCodeSample = ((_a = node.attr('class')) !== null && _a !== void 0 ? _a : '').indexOf('language-') !== -1;\n            if (isCodeSample) {\n              node.attr('contenteditable', 'false');\n              node.attr('data-mce-highlighted', 'false');\n            }\n          }\n        });\n      });\n    };\n\n    const onSetupEditable = (editor, onChanged = noop) => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n        onChanged(api);\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const isCodeSampleSelection = editor => {\n      const node = editor.selection.getStart();\n      return editor.dom.is(node, 'pre[class*=\"language-\"]');\n    };\n    const register = editor => {\n      const onAction = () => editor.execCommand('codesample');\n      editor.ui.registry.addToggleButton('codesample', {\n        icon: 'code-sample',\n        tooltip: 'Insert/edit code sample',\n        onAction,\n        onSetup: onSetupEditable(editor, api => {\n          api.setActive(isCodeSampleSelection(editor));\n        })\n      });\n      editor.ui.registry.addMenuItem('codesample', {\n        text: 'Code sample...',\n        icon: 'code-sample',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n    };\n\n    var Plugin = () => {\n      global$2.add('codesample', editor => {\n        register$2(editor);\n        setup(editor);\n        register(editor);\n        register$1(editor);\n        editor.on('dblclick', ev => {\n          if (isCodeSample(ev.target)) {\n            open(editor);\n          }\n        });\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const isString = isType$1('string');\n    const isBoolean = isSimpleType('boolean');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n\n    const compose1 = (fbc, fab) => a => fbc(fab(a));\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const never = constant(false);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const filter = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    const is = (element, selector) => {\n      const dom = element.dom;\n      if (dom.nodeType !== ELEMENT) {\n        return false;\n      } else {\n        const elem = dom;\n        if (elem.matches !== undefined) {\n          return elem.matches(selector);\n        } else if (elem.msMatchesSelector !== undefined) {\n          return elem.msMatchesSelector(selector);\n        } else if (elem.webkitMatchesSelector !== undefined) {\n          return elem.webkitMatchesSelector(selector);\n        } else if (elem.mozMatchesSelector !== undefined) {\n          return elem.mozMatchesSelector(selector);\n        } else {\n          throw new Error('Browser lacks native selectors');\n        }\n      }\n    };\n\n    typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const name = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n    const type = element => element.dom.nodeType;\n    const isType = t => element => type(element) === t;\n    const isElement = isType(ELEMENT);\n    const isText = isType(TEXT);\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n    const isTag = tag => e => isElement(e) && name(e) === tag;\n\n    const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const children$2 = element => map(element.dom.childNodes, SugarElement.fromDom);\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const remove = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n\n    const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getShadowRoot = e => {\n      const r = getRootNode(e);\n      return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n    };\n    const getShadowHost = e => SugarElement.fromDom(e.dom.host);\n\n    const inBody = element => {\n      const dom = isText(element) ? element.dom.parentNode : element.dom;\n      if (dom === undefined || dom === null || dom.ownerDocument === null) {\n        return false;\n      }\n      const doc = dom.ownerDocument;\n      return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n    };\n\n    const ancestor$1 = (scope, predicate, isRoot) => {\n      let element = scope.dom;\n      const stop = isFunction(isRoot) ? isRoot : never;\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        if (predicate(el)) {\n          return Optional.some(el);\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n\n    const ancestor = (scope, selector, isRoot) => ancestor$1(scope, e => is(e, selector), isRoot);\n\n    const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n    const get = (element, property) => {\n      const dom = element.dom;\n      const styles = window.getComputedStyle(dom);\n      const r = styles.getPropertyValue(property);\n      return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n    };\n    const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n\n    const getDirection = element => get(element, 'direction') === 'rtl' ? 'rtl' : 'ltr';\n\n    const children$1 = (scope, predicate) => filter(children$2(scope), predicate);\n\n    const children = (scope, selector) => children$1(scope, e => is(e, selector));\n\n    const getParentElement = element => parent(element).filter(isElement);\n    const getNormalizedBlock = (element, isListItem) => {\n      const normalizedElement = isListItem ? ancestor(element, 'ol,ul') : Optional.some(element);\n      return normalizedElement.getOr(element);\n    };\n    const isListItem = isTag('li');\n    const setDirOnElements = (dom, blocks, dir) => {\n      each(blocks, block => {\n        const blockElement = SugarElement.fromDom(block);\n        const isBlockElementListItem = isListItem(blockElement);\n        const normalizedBlock = getNormalizedBlock(blockElement, isBlockElementListItem);\n        const normalizedBlockParent = getParentElement(normalizedBlock);\n        normalizedBlockParent.each(parent => {\n          dom.setStyle(normalizedBlock.dom, 'direction', null);\n          const parentDirection = getDirection(parent);\n          if (parentDirection === dir) {\n            remove(normalizedBlock, 'dir');\n          } else {\n            set(normalizedBlock, 'dir', dir);\n          }\n          if (getDirection(normalizedBlock) !== dir) {\n            dom.setStyle(normalizedBlock.dom, 'direction', dir);\n          }\n          if (isBlockElementListItem) {\n            const listItems = children(normalizedBlock, 'li[dir],li[style]');\n            each(listItems, listItem => {\n              remove(listItem, 'dir');\n              dom.setStyle(listItem.dom, 'direction', null);\n            });\n          }\n        });\n      });\n    };\n    const setDir = (editor, dir) => {\n      if (editor.selection.isEditable()) {\n        setDirOnElements(editor.dom, editor.selection.getSelectedBlocks(), dir);\n        editor.nodeChanged();\n      }\n    };\n\n    const register$1 = editor => {\n      editor.addCommand('mceDirectionLTR', () => {\n        setDir(editor, 'ltr');\n      });\n      editor.addCommand('mceDirectionRTL', () => {\n        setDir(editor, 'rtl');\n      });\n    };\n\n    const getNodeChangeHandler = (editor, dir) => api => {\n      const nodeChangeHandler = e => {\n        const element = SugarElement.fromDom(e.element);\n        api.setActive(getDirection(element) === dir);\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChangeHandler);\n      api.setEnabled(editor.selection.isEditable());\n      return () => editor.off('NodeChange', nodeChangeHandler);\n    };\n    const register = editor => {\n      editor.ui.registry.addToggleButton('ltr', {\n        tooltip: 'Left to right',\n        icon: 'ltr',\n        onAction: () => editor.execCommand('mceDirectionLTR'),\n        onSetup: getNodeChangeHandler(editor, 'ltr')\n      });\n      editor.ui.registry.addToggleButton('rtl', {\n        tooltip: 'Right to left',\n        icon: 'rtl',\n        onAction: () => editor.execCommand('mceDirectionRTL'),\n        onSetup: getNodeChangeHandler(editor, 'rtl')\n      });\n    };\n\n    var Plugin = () => {\n      global.add('directionality', editor => {\n        register$1(editor);\n        register(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const eq = t => a => t === a;\n    const isNull = eq(null);\n    const isUndefined = eq(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n\n    const noop = () => {};\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const never = constant(false);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const exists = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const map$1 = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    const last = (fn, rate) => {\n      let timer = null;\n      const cancel = () => {\n        if (!isNull(timer)) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      const throttle = (...args) => {\n        cancel();\n        timer = setTimeout(() => {\n          timer = null;\n          fn.apply(null, args);\n        }, rate);\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n\n    const insertEmoticon = (editor, ch) => {\n      editor.insertContent(ch);\n    };\n\n    const keys = Object.keys;\n    const hasOwnProperty = Object.hasOwnProperty;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const map = (obj, f) => {\n      return tupleMap(obj, (x, i) => ({\n        k: i,\n        v: f(x, i)\n      }));\n    };\n    const tupleMap = (obj, f) => {\n      const r = {};\n      each(obj, (x, i) => {\n        const tuple = f(x, i);\n        r[tuple.k] = tuple.v;\n      });\n      return r;\n    };\n    const has = (obj, key) => hasOwnProperty.call(obj, key);\n\n    const shallow = (old, nu) => {\n      return nu;\n    };\n    const baseMerge = merger => {\n      return (...objects) => {\n        if (objects.length === 0) {\n          throw new Error(\"Can't merge zero objects\");\n        }\n        const ret = {};\n        for (let j = 0; j < objects.length; j++) {\n          const curObject = objects[j];\n          for (const key in curObject) {\n            if (has(curObject, key)) {\n              ret[key] = merger(ret[key], curObject[key]);\n            }\n          }\n        }\n        return ret;\n      };\n    };\n    const merge = baseMerge(shallow);\n\n    const singleton = doRevoke => {\n      const subject = Cell(Optional.none());\n      const revoke = () => subject.get().each(doRevoke);\n      const clear = () => {\n        revoke();\n        subject.set(Optional.none());\n      };\n      const isSet = () => subject.get().isSome();\n      const get = () => subject.get();\n      const set = s => {\n        revoke();\n        subject.set(Optional.some(s));\n      };\n      return {\n        clear,\n        isSet,\n        get,\n        set\n      };\n    };\n    const value = () => {\n      const subject = singleton(noop);\n      const on = f => subject.get().each(f);\n      return {\n        ...subject,\n        on\n      };\n    };\n\n    const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n    const contains = (str, substr, start = 0, end) => {\n      const idx = str.indexOf(substr, start);\n      if (idx !== -1) {\n        return isUndefined(end) ? true : idx + substr.length <= end;\n      } else {\n        return false;\n      }\n    };\n    const startsWith = (str, prefix) => {\n      return checkRange(str, prefix, 0);\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.Resource');\n\n    const DEFAULT_ID = 'tinymce.plugins.emoticons';\n    const option = name => editor => editor.options.get(name);\n    const register$2 = (editor, pluginUrl) => {\n      const registerOption = editor.options.register;\n      registerOption('emoticons_database', {\n        processor: 'string',\n        default: 'emojis'\n      });\n      registerOption('emoticons_database_url', {\n        processor: 'string',\n        default: \"\".concat(pluginUrl, \"/js/\").concat(getEmojiDatabase(editor)).concat(editor.suffix, \".js\")\n      });\n      registerOption('emoticons_database_id', {\n        processor: 'string',\n        default: DEFAULT_ID\n      });\n      registerOption('emoticons_append', {\n        processor: 'object',\n        default: {}\n      });\n      registerOption('emoticons_images_url', {\n        processor: 'string',\n        default: 'https://twemoji.maxcdn.com/v/13.0.1/72x72/'\n      });\n    };\n    const getEmojiDatabase = option('emoticons_database');\n    const getEmojiDatabaseUrl = option('emoticons_database_url');\n    const getEmojiDatabaseId = option('emoticons_database_id');\n    const getAppendedEmoji = option('emoticons_append');\n    const getEmojiImageUrl = option('emoticons_images_url');\n\n    const ALL_CATEGORY = 'All';\n    const categoryNameMap = {\n      symbols: 'Symbols',\n      people: 'People',\n      animals_and_nature: 'Animals and Nature',\n      food_and_drink: 'Food and Drink',\n      activity: 'Activity',\n      travel_and_places: 'Travel and Places',\n      objects: 'Objects',\n      flags: 'Flags',\n      user: 'User Defined'\n    };\n    const translateCategory = (categories, name) => has(categories, name) ? categories[name] : name;\n    const getUserDefinedEmoji = editor => {\n      const userDefinedEmoticons = getAppendedEmoji(editor);\n      return map(userDefinedEmoticons, value => ({\n        keywords: [],\n        category: 'user',\n        ...value\n      }));\n    };\n    const initDatabase = (editor, databaseUrl, databaseId) => {\n      const categories = value();\n      const all = value();\n      const emojiImagesUrl = getEmojiImageUrl(editor);\n      const getEmoji = lib => {\n        if (startsWith(lib.char, '<img')) {\n          return lib.char.replace(/src=\"([^\"]+)\"/, (match, url) => \"src=\\\"\".concat(emojiImagesUrl).concat(url, \"\\\"\"));\n        } else {\n          return lib.char;\n        }\n      };\n      const processEmojis = emojis => {\n        const cats = {};\n        const everything = [];\n        each(emojis, (lib, title) => {\n          const entry = {\n            title,\n            keywords: lib.keywords,\n            char: getEmoji(lib),\n            category: translateCategory(categoryNameMap, lib.category)\n          };\n          const current = cats[entry.category] !== undefined ? cats[entry.category] : [];\n          cats[entry.category] = current.concat([entry]);\n          everything.push(entry);\n        });\n        categories.set(cats);\n        all.set(everything);\n      };\n      editor.on('init', () => {\n        global.load(databaseId, databaseUrl).then(emojis => {\n          const userEmojis = getUserDefinedEmoji(editor);\n          processEmojis(merge(emojis, userEmojis));\n        }, err => {\n          console.log(\"Failed to load emojis: \".concat(err));\n          categories.set({});\n          all.set([]);\n        });\n      });\n      const listCategory = category => {\n        if (category === ALL_CATEGORY) {\n          return listAll();\n        }\n        return categories.get().bind(cats => Optional.from(cats[category])).getOr([]);\n      };\n      const listAll = () => all.get().getOr([]);\n      const listCategories = () => [ALL_CATEGORY].concat(keys(categories.get().getOr({})));\n      const waitForLoad = () => {\n        if (hasLoaded()) {\n          return Promise.resolve(true);\n        } else {\n          return new Promise((resolve, reject) => {\n            let numRetries = 15;\n            const interval = setInterval(() => {\n              if (hasLoaded()) {\n                clearInterval(interval);\n                resolve(true);\n              } else {\n                numRetries--;\n                if (numRetries < 0) {\n                  console.log('Could not load emojis from url: ' + databaseUrl);\n                  clearInterval(interval);\n                  reject(false);\n                }\n              }\n            }, 100);\n          });\n        }\n      };\n      const hasLoaded = () => categories.isSet() && all.isSet();\n      return {\n        listCategories,\n        hasLoaded,\n        waitForLoad,\n        listAll,\n        listCategory\n      };\n    };\n\n    const emojiMatches = (emoji, lowerCasePattern) => contains(emoji.title.toLowerCase(), lowerCasePattern) || exists(emoji.keywords, k => contains(k.toLowerCase(), lowerCasePattern));\n    const emojisFrom = (list, pattern, maxResults) => {\n      const matches = [];\n      const lowerCasePattern = pattern.toLowerCase();\n      const reachedLimit = maxResults.fold(() => never, max => size => size >= max);\n      for (let i = 0; i < list.length; i++) {\n        if (pattern.length === 0 || emojiMatches(list[i], lowerCasePattern)) {\n          matches.push({\n            value: list[i].char,\n            text: list[i].title,\n            icon: list[i].char\n          });\n          if (reachedLimit(matches.length)) {\n            break;\n          }\n        }\n      }\n      return matches;\n    };\n\n    const patternName = 'pattern';\n    const open = (editor, database) => {\n      const initialState = {\n        pattern: '',\n        results: emojisFrom(database.listAll(), '', Optional.some(300))\n      };\n      const currentTab = Cell(ALL_CATEGORY);\n      const scan = dialogApi => {\n        const dialogData = dialogApi.getData();\n        const category = currentTab.get();\n        const candidates = database.listCategory(category);\n        const results = emojisFrom(candidates, dialogData[patternName], category === ALL_CATEGORY ? Optional.some(300) : Optional.none());\n        dialogApi.setData({\n          results\n        });\n      };\n      const updateFilter = last(dialogApi => {\n        scan(dialogApi);\n      }, 200);\n      const searchField = {\n        label: 'Search',\n        type: 'input',\n        name: patternName\n      };\n      const resultsField = {\n        type: 'collection',\n        name: 'results'\n      };\n      const getInitialState = () => {\n        const body = {\n          type: 'tabpanel',\n          tabs: map$1(database.listCategories(), cat => ({\n            title: cat,\n            name: cat,\n            items: [searchField, resultsField]\n          }))\n        };\n        return {\n          title: 'Emojis',\n          size: 'normal',\n          body,\n          initialData: initialState,\n          onTabChange: (dialogApi, details) => {\n            currentTab.set(details.newTabName);\n            updateFilter.throttle(dialogApi);\n          },\n          onChange: updateFilter.throttle,\n          onAction: (dialogApi, actionData) => {\n            if (actionData.name === 'results') {\n              insertEmoticon(editor, actionData.value);\n              dialogApi.close();\n            }\n          },\n          buttons: [{\n            type: 'cancel',\n            text: 'Close',\n            primary: true\n          }]\n        };\n      };\n      const dialogApi = editor.windowManager.open(getInitialState());\n      dialogApi.focus(patternName);\n      if (!database.hasLoaded()) {\n        dialogApi.block('Loading emojis...');\n        database.waitForLoad().then(() => {\n          dialogApi.redial(getInitialState());\n          updateFilter.throttle(dialogApi);\n          dialogApi.focus(patternName);\n          dialogApi.unblock();\n        }).catch(_err => {\n          dialogApi.redial({\n            title: 'Emojis',\n            body: {\n              type: 'panel',\n              items: [{\n                type: 'alertbanner',\n                level: 'error',\n                icon: 'warning',\n                text: 'Could not load emojis'\n              }]\n            },\n            buttons: [{\n              type: 'cancel',\n              text: 'Close',\n              primary: true\n            }],\n            initialData: {\n              pattern: '',\n              results: []\n            }\n          });\n          dialogApi.focus(patternName);\n          dialogApi.unblock();\n        });\n      }\n    };\n\n    const register$1 = (editor, database) => {\n      editor.addCommand('mceEmoticons', () => open(editor, database));\n    };\n\n    const setup = editor => {\n      editor.on('PreInit', () => {\n        editor.parser.addAttributeFilter('data-emoticon', nodes => {\n          each$1(nodes, node => {\n            node.attr('data-mce-resize', 'false');\n            node.attr('data-mce-placeholder', '1');\n          });\n        });\n      });\n    };\n\n    const init = (editor, database) => {\n      editor.ui.registry.addAutocompleter('emoticons', {\n        trigger: ':',\n        columns: 'auto',\n        minChars: 2,\n        fetch: (pattern, maxResults) => database.waitForLoad().then(() => {\n          const candidates = database.listAll();\n          return emojisFrom(candidates, pattern, Optional.some(maxResults));\n        }),\n        onAction: (autocompleteApi, rng, value) => {\n          editor.selection.setRng(rng);\n          editor.insertContent(value);\n          autocompleteApi.hide();\n        }\n      });\n    };\n\n    const onSetupEditable = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const register = editor => {\n      const onAction = () => editor.execCommand('mceEmoticons');\n      editor.ui.registry.addButton('emoticons', {\n        tooltip: 'Emojis',\n        icon: 'emoji',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n      editor.ui.registry.addMenuItem('emoticons', {\n        text: 'Emojis...',\n        icon: 'emoji',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n    };\n\n    var Plugin = () => {\n      global$1.add('emoticons', (editor, pluginUrl) => {\n        register$2(editor, pluginUrl);\n        const databaseUrl = getEmojiDatabaseUrl(editor);\n        const databaseId = getEmojiDatabaseId(editor);\n        const database = initDatabase(editor, databaseUrl, databaseId);\n        register$1(editor, database);\n        register(editor);\n        init(editor, database);\n        setup(editor);\n      });\n    };\n\n    Plugin();\n\n})();\nwindow.tinymce.Resource.add(\"tinymce.plugins.emoticons\",{100:{keywords:[\"score\",\"perfect\",\"numbers\",\"century\",\"exam\",\"quiz\",\"test\",\"pass\",\"hundred\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💯\" src=\"1f4af.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},1234:{keywords:[\"numbers\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔢\" src=\"1f522.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},grinning:{keywords:[\"face\",\"smile\",\"happy\",\"joy\",\":D\",\"grin\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😀\" src=\"1f600.png\"/>',fitzpatrick_scale:false,category:\"people\"},grimacing:{keywords:[\"face\",\"grimace\",\"teeth\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😬\" src=\"1f62c.png\"/>',fitzpatrick_scale:false,category:\"people\"},grin:{keywords:[\"face\",\"happy\",\"smile\",\"joy\",\"kawaii\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😁\" src=\"1f601.png\"/>',fitzpatrick_scale:false,category:\"people\"},joy:{keywords:[\"face\",\"cry\",\"tears\",\"weep\",\"happy\",\"happytears\",\"haha\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😂\" src=\"1f602.png\"/>',fitzpatrick_scale:false,category:\"people\"},rofl:{keywords:[\"face\",\"rolling\",\"floor\",\"laughing\",\"lol\",\"haha\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤣\" src=\"1f923.png\"/>',fitzpatrick_scale:false,category:\"people\"},partying:{keywords:[\"face\",\"celebration\",\"woohoo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥳\" src=\"1f973.png\"/>',fitzpatrick_scale:false,category:\"people\"},smiley:{keywords:[\"face\",\"happy\",\"joy\",\"haha\",\":D\",\":)\",\"smile\",\"funny\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😃\" src=\"1f603.png\"/>',fitzpatrick_scale:false,category:\"people\"},smile:{keywords:[\"face\",\"happy\",\"joy\",\"funny\",\"haha\",\"laugh\",\"like\",\":D\",\":)\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😄\" src=\"1f604.png\"/>',fitzpatrick_scale:false,category:\"people\"},sweat_smile:{keywords:[\"face\",\"hot\",\"happy\",\"laugh\",\"sweat\",\"smile\",\"relief\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😅\" src=\"1f605.png\"/>',fitzpatrick_scale:false,category:\"people\"},laughing:{keywords:[\"happy\",\"joy\",\"lol\",\"satisfied\",\"haha\",\"face\",\"glad\",\"XD\",\"laugh\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😆\" src=\"1f606.png\"/>',fitzpatrick_scale:false,category:\"people\"},innocent:{keywords:[\"face\",\"angel\",\"heaven\",\"halo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😇\" src=\"1f607.png\"/>',fitzpatrick_scale:false,category:\"people\"},wink:{keywords:[\"face\",\"happy\",\"mischievous\",\"secret\",\";)\",\"smile\",\"eye\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😉\" src=\"1f609.png\"/>',fitzpatrick_scale:false,category:\"people\"},blush:{keywords:[\"face\",\"smile\",\"happy\",\"flushed\",\"crush\",\"embarrassed\",\"shy\",\"joy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😊\" src=\"1f60a.png\"/>',fitzpatrick_scale:false,category:\"people\"},slightly_smiling_face:{keywords:[\"face\",\"smile\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙂\" src=\"1f642.png\"/>',fitzpatrick_scale:false,category:\"people\"},upside_down_face:{keywords:[\"face\",\"flipped\",\"silly\",\"smile\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙃\" src=\"1f643.png\"/>',fitzpatrick_scale:false,category:\"people\"},relaxed:{keywords:[\"face\",\"blush\",\"massage\",\"happiness\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☺️\" src=\"263a.png\"/>',fitzpatrick_scale:false,category:\"people\"},yum:{keywords:[\"happy\",\"joy\",\"tongue\",\"smile\",\"face\",\"silly\",\"yummy\",\"nom\",\"delicious\",\"savouring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😋\" src=\"1f60b.png\"/>',fitzpatrick_scale:false,category:\"people\"},relieved:{keywords:[\"face\",\"relaxed\",\"phew\",\"massage\",\"happiness\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😌\" src=\"1f60c.png\"/>',fitzpatrick_scale:false,category:\"people\"},heart_eyes:{keywords:[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"crush\",\"heart\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😍\" src=\"1f60d.png\"/>',fitzpatrick_scale:false,category:\"people\"},smiling_face_with_three_hearts:{keywords:[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"crush\",\"hearts\",\"adore\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥰\" src=\"1f970.png\"/>',fitzpatrick_scale:false,category:\"people\"},kissing_heart:{keywords:[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"kiss\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😘\" src=\"1f618.png\"/>',fitzpatrick_scale:false,category:\"people\"},kissing:{keywords:[\"love\",\"like\",\"face\",\"3\",\"valentines\",\"infatuation\",\"kiss\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😗\" src=\"1f617.png\"/>',fitzpatrick_scale:false,category:\"people\"},kissing_smiling_eyes:{keywords:[\"face\",\"affection\",\"valentines\",\"infatuation\",\"kiss\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😙\" src=\"1f619.png\"/>',fitzpatrick_scale:false,category:\"people\"},kissing_closed_eyes:{keywords:[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"kiss\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😚\" src=\"1f61a.png\"/>',fitzpatrick_scale:false,category:\"people\"},stuck_out_tongue_winking_eye:{keywords:[\"face\",\"prank\",\"childish\",\"playful\",\"mischievous\",\"smile\",\"wink\",\"tongue\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😜\" src=\"1f61c.png\"/>',fitzpatrick_scale:false,category:\"people\"},zany:{keywords:[\"face\",\"goofy\",\"crazy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤪\" src=\"1f92a.png\"/>',fitzpatrick_scale:false,category:\"people\"},raised_eyebrow:{keywords:[\"face\",\"distrust\",\"scepticism\",\"disapproval\",\"disbelief\",\"surprise\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤨\" src=\"1f928.png\"/>',fitzpatrick_scale:false,category:\"people\"},monocle:{keywords:[\"face\",\"stuffy\",\"wealthy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧐\" src=\"1f9d0.png\"/>',fitzpatrick_scale:false,category:\"people\"},stuck_out_tongue_closed_eyes:{keywords:[\"face\",\"prank\",\"playful\",\"mischievous\",\"smile\",\"tongue\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😝\" src=\"1f61d.png\"/>',fitzpatrick_scale:false,category:\"people\"},stuck_out_tongue:{keywords:[\"face\",\"prank\",\"childish\",\"playful\",\"mischievous\",\"smile\",\"tongue\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😛\" src=\"1f61b.png\"/>',fitzpatrick_scale:false,category:\"people\"},money_mouth_face:{keywords:[\"face\",\"rich\",\"dollar\",\"money\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤑\" src=\"1f911.png\"/>',fitzpatrick_scale:false,category:\"people\"},nerd_face:{keywords:[\"face\",\"nerdy\",\"geek\",\"dork\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤓\" src=\"1f913.png\"/>',fitzpatrick_scale:false,category:\"people\"},sunglasses:{keywords:[\"face\",\"cool\",\"smile\",\"summer\",\"beach\",\"sunglass\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😎\" src=\"1f60e.png\"/>',fitzpatrick_scale:false,category:\"people\"},star_struck:{keywords:[\"face\",\"smile\",\"starry\",\"eyes\",\"grinning\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤩\" src=\"1f929.png\"/>',fitzpatrick_scale:false,category:\"people\"},clown_face:{keywords:[\"face\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤡\" src=\"1f921.png\"/>',fitzpatrick_scale:false,category:\"people\"},cowboy_hat_face:{keywords:[\"face\",\"cowgirl\",\"hat\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤠\" src=\"1f920.png\"/>',fitzpatrick_scale:false,category:\"people\"},hugs:{keywords:[\"face\",\"smile\",\"hug\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤗\" src=\"1f917.png\"/>',fitzpatrick_scale:false,category:\"people\"},smirk:{keywords:[\"face\",\"smile\",\"mean\",\"prank\",\"smug\",\"sarcasm\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😏\" src=\"1f60f.png\"/>',fitzpatrick_scale:false,category:\"people\"},no_mouth:{keywords:[\"face\",\"hellokitty\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😶\" src=\"1f636.png\"/>',fitzpatrick_scale:false,category:\"people\"},neutral_face:{keywords:[\"indifference\",\"meh\",\":|\",\"neutral\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😐\" src=\"1f610.png\"/>',fitzpatrick_scale:false,category:\"people\"},expressionless:{keywords:[\"face\",\"indifferent\",\"-_-\",\"meh\",\"deadpan\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😑\" src=\"1f611.png\"/>',fitzpatrick_scale:false,category:\"people\"},unamused:{keywords:[\"indifference\",\"bored\",\"straight face\",\"serious\",\"sarcasm\",\"unimpressed\",\"skeptical\",\"dubious\",\"side_eye\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😒\" src=\"1f612.png\"/>',fitzpatrick_scale:false,category:\"people\"},roll_eyes:{keywords:[\"face\",\"eyeroll\",\"frustrated\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙄\" src=\"1f644.png\"/>',fitzpatrick_scale:false,category:\"people\"},thinking:{keywords:[\"face\",\"hmmm\",\"think\",\"consider\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤔\" src=\"1f914.png\"/>',fitzpatrick_scale:false,category:\"people\"},lying_face:{keywords:[\"face\",\"lie\",\"pinocchio\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤥\" src=\"1f925.png\"/>',fitzpatrick_scale:false,category:\"people\"},hand_over_mouth:{keywords:[\"face\",\"whoops\",\"shock\",\"surprise\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤭\" src=\"1f92d.png\"/>',fitzpatrick_scale:false,category:\"people\"},shushing:{keywords:[\"face\",\"quiet\",\"shhh\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤫\" src=\"1f92b.png\"/>',fitzpatrick_scale:false,category:\"people\"},symbols_over_mouth:{keywords:[\"face\",\"swearing\",\"cursing\",\"cussing\",\"profanity\",\"expletive\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤬\" src=\"1f92c.png\"/>',fitzpatrick_scale:false,category:\"people\"},exploding_head:{keywords:[\"face\",\"shocked\",\"mind\",\"blown\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤯\" src=\"1f92f.png\"/>',fitzpatrick_scale:false,category:\"people\"},flushed:{keywords:[\"face\",\"blush\",\"shy\",\"flattered\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😳\" src=\"1f633.png\"/>',fitzpatrick_scale:false,category:\"people\"},disappointed:{keywords:[\"face\",\"sad\",\"upset\",\"depressed\",\":(\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😞\" src=\"1f61e.png\"/>',fitzpatrick_scale:false,category:\"people\"},worried:{keywords:[\"face\",\"concern\",\"nervous\",\":(\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😟\" src=\"1f61f.png\"/>',fitzpatrick_scale:false,category:\"people\"},angry:{keywords:[\"mad\",\"face\",\"annoyed\",\"frustrated\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😠\" src=\"1f620.png\"/>',fitzpatrick_scale:false,category:\"people\"},rage:{keywords:[\"angry\",\"mad\",\"hate\",\"despise\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😡\" src=\"1f621.png\"/>',fitzpatrick_scale:false,category:\"people\"},pensive:{keywords:[\"face\",\"sad\",\"depressed\",\"upset\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😔\" src=\"1f614.png\"/>',fitzpatrick_scale:false,category:\"people\"},confused:{keywords:[\"face\",\"indifference\",\"huh\",\"weird\",\"hmmm\",\":/\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😕\" src=\"1f615.png\"/>',fitzpatrick_scale:false,category:\"people\"},slightly_frowning_face:{keywords:[\"face\",\"frowning\",\"disappointed\",\"sad\",\"upset\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙁\" src=\"1f641.png\"/>',fitzpatrick_scale:false,category:\"people\"},frowning_face:{keywords:[\"face\",\"sad\",\"upset\",\"frown\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☹\" src=\"2639.png\"/>',fitzpatrick_scale:false,category:\"people\"},persevere:{keywords:[\"face\",\"sick\",\"no\",\"upset\",\"oops\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😣\" src=\"1f623.png\"/>',fitzpatrick_scale:false,category:\"people\"},confounded:{keywords:[\"face\",\"confused\",\"sick\",\"unwell\",\"oops\",\":S\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😖\" src=\"1f616.png\"/>',fitzpatrick_scale:false,category:\"people\"},tired_face:{keywords:[\"sick\",\"whine\",\"upset\",\"frustrated\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😫\" src=\"1f62b.png\"/>',fitzpatrick_scale:false,category:\"people\"},weary:{keywords:[\"face\",\"tired\",\"sleepy\",\"sad\",\"frustrated\",\"upset\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😩\" src=\"1f629.png\"/>',fitzpatrick_scale:false,category:\"people\"},pleading:{keywords:[\"face\",\"begging\",\"mercy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥺\" src=\"1f97a.png\"/>',fitzpatrick_scale:false,category:\"people\"},triumph:{keywords:[\"face\",\"gas\",\"phew\",\"proud\",\"pride\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😤\" src=\"1f624.png\"/>',fitzpatrick_scale:false,category:\"people\"},open_mouth:{keywords:[\"face\",\"surprise\",\"impressed\",\"wow\",\"whoa\",\":O\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😮\" src=\"1f62e.png\"/>',fitzpatrick_scale:false,category:\"people\"},scream:{keywords:[\"face\",\"munch\",\"scared\",\"omg\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😱\" src=\"1f631.png\"/>',fitzpatrick_scale:false,category:\"people\"},fearful:{keywords:[\"face\",\"scared\",\"terrified\",\"nervous\",\"oops\",\"huh\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😨\" src=\"1f628.png\"/>',fitzpatrick_scale:false,category:\"people\"},cold_sweat:{keywords:[\"face\",\"nervous\",\"sweat\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😰\" src=\"1f630.png\"/>',fitzpatrick_scale:false,category:\"people\"},hushed:{keywords:[\"face\",\"woo\",\"shh\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😯\" src=\"1f62f.png\"/>',fitzpatrick_scale:false,category:\"people\"},frowning:{keywords:[\"face\",\"aw\",\"what\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😦\" src=\"1f626.png\"/>',fitzpatrick_scale:false,category:\"people\"},anguished:{keywords:[\"face\",\"stunned\",\"nervous\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😧\" src=\"1f627.png\"/>',fitzpatrick_scale:false,category:\"people\"},cry:{keywords:[\"face\",\"tears\",\"sad\",\"depressed\",\"upset\",\":'(\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😢\" src=\"1f622.png\"/>',fitzpatrick_scale:false,category:\"people\"},disappointed_relieved:{keywords:[\"face\",\"phew\",\"sweat\",\"nervous\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😥\" src=\"1f625.png\"/>',fitzpatrick_scale:false,category:\"people\"},drooling_face:{keywords:[\"face\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤤\" src=\"1f924.png\"/>',fitzpatrick_scale:false,category:\"people\"},sleepy:{keywords:[\"face\",\"tired\",\"rest\",\"nap\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😪\" src=\"1f62a.png\"/>',fitzpatrick_scale:false,category:\"people\"},sweat:{keywords:[\"face\",\"hot\",\"sad\",\"tired\",\"exercise\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😓\" src=\"1f613.png\"/>',fitzpatrick_scale:false,category:\"people\"},hot:{keywords:[\"face\",\"feverish\",\"heat\",\"red\",\"sweating\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥵\" src=\"1f975.png\"/>',fitzpatrick_scale:false,category:\"people\"},cold:{keywords:[\"face\",\"blue\",\"freezing\",\"frozen\",\"frostbite\",\"icicles\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥶\" src=\"1f976.png\"/>',fitzpatrick_scale:false,category:\"people\"},sob:{keywords:[\"face\",\"cry\",\"tears\",\"sad\",\"upset\",\"depressed\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😭\" src=\"1f62d.png\"/>',fitzpatrick_scale:false,category:\"people\"},dizzy_face:{keywords:[\"spent\",\"unconscious\",\"xox\",\"dizzy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😵\" src=\"1f635.png\"/>',fitzpatrick_scale:false,category:\"people\"},astonished:{keywords:[\"face\",\"xox\",\"surprised\",\"poisoned\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😲\" src=\"1f632.png\"/>',fitzpatrick_scale:false,category:\"people\"},zipper_mouth_face:{keywords:[\"face\",\"sealed\",\"zipper\",\"secret\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤐\" src=\"1f910.png\"/>',fitzpatrick_scale:false,category:\"people\"},nauseated_face:{keywords:[\"face\",\"vomit\",\"gross\",\"green\",\"sick\",\"throw up\",\"ill\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤢\" src=\"1f922.png\"/>',fitzpatrick_scale:false,category:\"people\"},sneezing_face:{keywords:[\"face\",\"gesundheit\",\"sneeze\",\"sick\",\"allergy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤧\" src=\"1f927.png\"/>',fitzpatrick_scale:false,category:\"people\"},vomiting:{keywords:[\"face\",\"sick\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤮\" src=\"1f92e.png\"/>',fitzpatrick_scale:false,category:\"people\"},mask:{keywords:[\"face\",\"sick\",\"ill\",\"disease\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😷\" src=\"1f637.png\"/>',fitzpatrick_scale:false,category:\"people\"},face_with_thermometer:{keywords:[\"sick\",\"temperature\",\"thermometer\",\"cold\",\"fever\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤒\" src=\"1f912.png\"/>',fitzpatrick_scale:false,category:\"people\"},face_with_head_bandage:{keywords:[\"injured\",\"clumsy\",\"bandage\",\"hurt\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤕\" src=\"1f915.png\"/>',fitzpatrick_scale:false,category:\"people\"},woozy:{keywords:[\"face\",\"dizzy\",\"intoxicated\",\"tipsy\",\"wavy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥴\" src=\"1f974.png\"/>',fitzpatrick_scale:false,category:\"people\"},sleeping:{keywords:[\"face\",\"tired\",\"sleepy\",\"night\",\"zzz\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😴\" src=\"1f634.png\"/>',fitzpatrick_scale:false,category:\"people\"},zzz:{keywords:[\"sleepy\",\"tired\",\"dream\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💤\" src=\"1f4a4.png\"/>',fitzpatrick_scale:false,category:\"people\"},poop:{keywords:[\"hankey\",\"shitface\",\"fail\",\"turd\",\"shit\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💩\" src=\"1f4a9.png\"/>',fitzpatrick_scale:false,category:\"people\"},smiling_imp:{keywords:[\"devil\",\"horns\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😈\" src=\"1f608.png\"/>',fitzpatrick_scale:false,category:\"people\"},imp:{keywords:[\"devil\",\"angry\",\"horns\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👿\" src=\"1f47f.png\"/>',fitzpatrick_scale:false,category:\"people\"},japanese_ogre:{keywords:[\"monster\",\"red\",\"mask\",\"halloween\",\"scary\",\"creepy\",\"devil\",\"demon\",\"japanese\",\"ogre\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👹\" src=\"1f479.png\"/>',fitzpatrick_scale:false,category:\"people\"},japanese_goblin:{keywords:[\"red\",\"evil\",\"mask\",\"monster\",\"scary\",\"creepy\",\"japanese\",\"goblin\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👺\" src=\"1f47a.png\"/>',fitzpatrick_scale:false,category:\"people\"},skull:{keywords:[\"dead\",\"skeleton\",\"creepy\",\"death\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💀\" src=\"1f480.png\"/>',fitzpatrick_scale:false,category:\"people\"},ghost:{keywords:[\"halloween\",\"spooky\",\"scary\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👻\" src=\"1f47b.png\"/>',fitzpatrick_scale:false,category:\"people\"},alien:{keywords:[\"UFO\",\"paul\",\"weird\",\"outer_space\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👽\" src=\"1f47d.png\"/>',fitzpatrick_scale:false,category:\"people\"},robot:{keywords:[\"computer\",\"machine\",\"bot\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤖\" src=\"1f916.png\"/>',fitzpatrick_scale:false,category:\"people\"},smiley_cat:{keywords:[\"animal\",\"cats\",\"happy\",\"smile\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😺\" src=\"1f63a.png\"/>',fitzpatrick_scale:false,category:\"people\"},smile_cat:{keywords:[\"animal\",\"cats\",\"smile\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😸\" src=\"1f638.png\"/>',fitzpatrick_scale:false,category:\"people\"},joy_cat:{keywords:[\"animal\",\"cats\",\"haha\",\"happy\",\"tears\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😹\" src=\"1f639.png\"/>',fitzpatrick_scale:false,category:\"people\"},heart_eyes_cat:{keywords:[\"animal\",\"love\",\"like\",\"affection\",\"cats\",\"valentines\",\"heart\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😻\" src=\"1f63b.png\"/>',fitzpatrick_scale:false,category:\"people\"},smirk_cat:{keywords:[\"animal\",\"cats\",\"smirk\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😼\" src=\"1f63c.png\"/>',fitzpatrick_scale:false,category:\"people\"},kissing_cat:{keywords:[\"animal\",\"cats\",\"kiss\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😽\" src=\"1f63d.png\"/>',fitzpatrick_scale:false,category:\"people\"},scream_cat:{keywords:[\"animal\",\"cats\",\"munch\",\"scared\",\"scream\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙀\" src=\"1f640.png\"/>',fitzpatrick_scale:false,category:\"people\"},crying_cat_face:{keywords:[\"animal\",\"tears\",\"weep\",\"sad\",\"cats\",\"upset\",\"cry\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😿\" src=\"1f63f.png\"/>',fitzpatrick_scale:false,category:\"people\"},pouting_cat:{keywords:[\"animal\",\"cats\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"😾\" src=\"1f63e.png\"/>',fitzpatrick_scale:false,category:\"people\"},palms_up:{keywords:[\"hands\",\"gesture\",\"cupped\",\"prayer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤲\" src=\"1f932.png\"/>',fitzpatrick_scale:true,category:\"people\"},raised_hands:{keywords:[\"gesture\",\"hooray\",\"yea\",\"celebration\",\"hands\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙌\" src=\"1f64c.png\"/>',fitzpatrick_scale:true,category:\"people\"},clap:{keywords:[\"hands\",\"praise\",\"applause\",\"congrats\",\"yay\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👏\" src=\"1f44f.png\"/>',fitzpatrick_scale:true,category:\"people\"},wave:{keywords:[\"hands\",\"gesture\",\"goodbye\",\"solong\",\"farewell\",\"hello\",\"hi\",\"palm\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👋\" src=\"1f44b.png\"/>',fitzpatrick_scale:true,category:\"people\"},call_me_hand:{keywords:[\"hands\",\"gesture\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤙\" src=\"1f919.png\"/>',fitzpatrick_scale:true,category:\"people\"},\"+1\":{keywords:[\"thumbsup\",\"yes\",\"awesome\",\"good\",\"agree\",\"accept\",\"cool\",\"hand\",\"like\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👍\" src=\"1f44d.png\"/>',fitzpatrick_scale:true,category:\"people\"},\"-1\":{keywords:[\"thumbsdown\",\"no\",\"dislike\",\"hand\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👎\" src=\"1f44e.png\"/>',fitzpatrick_scale:true,category:\"people\"},facepunch:{keywords:[\"angry\",\"violence\",\"fist\",\"hit\",\"attack\",\"hand\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👊\" src=\"1f44a.png\"/>',fitzpatrick_scale:true,category:\"people\"},fist:{keywords:[\"fingers\",\"hand\",\"grasp\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✊\" src=\"270a.png\"/>',fitzpatrick_scale:true,category:\"people\"},fist_left:{keywords:[\"hand\",\"fistbump\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤛\" src=\"1f91b.png\"/>',fitzpatrick_scale:true,category:\"people\"},fist_right:{keywords:[\"hand\",\"fistbump\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤜\" src=\"1f91c.png\"/>',fitzpatrick_scale:true,category:\"people\"},v:{keywords:[\"fingers\",\"ohyeah\",\"hand\",\"peace\",\"victory\",\"two\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✌\" src=\"270c.png\"/>',fitzpatrick_scale:true,category:\"people\"},ok_hand:{keywords:[\"fingers\",\"limbs\",\"perfect\",\"ok\",\"okay\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👌\" src=\"1f44c.png\"/>',fitzpatrick_scale:true,category:\"people\"},raised_hand:{keywords:[\"fingers\",\"stop\",\"highfive\",\"palm\",\"ban\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✋\" src=\"270b.png\"/>',fitzpatrick_scale:true,category:\"people\"},raised_back_of_hand:{keywords:[\"fingers\",\"raised\",\"backhand\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤚\" src=\"1f91a.png\"/>',fitzpatrick_scale:true,category:\"people\"},open_hands:{keywords:[\"fingers\",\"butterfly\",\"hands\",\"open\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👐\" src=\"1f450.png\"/>',fitzpatrick_scale:true,category:\"people\"},muscle:{keywords:[\"arm\",\"flex\",\"hand\",\"summer\",\"strong\",\"biceps\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💪\" src=\"1f4aa.png\"/>',fitzpatrick_scale:true,category:\"people\"},pray:{keywords:[\"please\",\"hope\",\"wish\",\"namaste\",\"highfive\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙏\" src=\"1f64f.png\"/>',fitzpatrick_scale:true,category:\"people\"},foot:{keywords:[\"kick\",\"stomp\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦶\" src=\"1f9b6.png\"/>',fitzpatrick_scale:true,category:\"people\"},leg:{keywords:[\"kick\",\"limb\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦵\" src=\"1f9b5.png\"/>',fitzpatrick_scale:true,category:\"people\"},handshake:{keywords:[\"agreement\",\"shake\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤝\" src=\"1f91d.png\"/>',fitzpatrick_scale:false,category:\"people\"},point_up:{keywords:[\"hand\",\"fingers\",\"direction\",\"up\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☝\" src=\"261d.png\"/>',fitzpatrick_scale:true,category:\"people\"},point_up_2:{keywords:[\"fingers\",\"hand\",\"direction\",\"up\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👆\" src=\"1f446.png\"/>',fitzpatrick_scale:true,category:\"people\"},point_down:{keywords:[\"fingers\",\"hand\",\"direction\",\"down\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👇\" src=\"1f447.png\"/>',fitzpatrick_scale:true,category:\"people\"},point_left:{keywords:[\"direction\",\"fingers\",\"hand\",\"left\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👈\" src=\"1f448.png\"/>',fitzpatrick_scale:true,category:\"people\"},point_right:{keywords:[\"fingers\",\"hand\",\"direction\",\"right\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👉\" src=\"1f449.png\"/>',fitzpatrick_scale:true,category:\"people\"},fu:{keywords:[\"hand\",\"fingers\",\"rude\",\"middle\",\"flipping\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖕\" src=\"1f595.png\"/>',fitzpatrick_scale:true,category:\"people\"},raised_hand_with_fingers_splayed:{keywords:[\"hand\",\"fingers\",\"palm\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖐\" src=\"1f590.png\"/>',fitzpatrick_scale:true,category:\"people\"},love_you:{keywords:[\"hand\",\"fingers\",\"gesture\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤟\" src=\"1f91f.png\"/>',fitzpatrick_scale:true,category:\"people\"},metal:{keywords:[\"hand\",\"fingers\",\"evil_eye\",\"sign_of_horns\",\"rock_on\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤘\" src=\"1f918.png\"/>',fitzpatrick_scale:true,category:\"people\"},crossed_fingers:{keywords:[\"good\",\"lucky\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤞\" src=\"1f91e.png\"/>',fitzpatrick_scale:true,category:\"people\"},vulcan_salute:{keywords:[\"hand\",\"fingers\",\"spock\",\"star trek\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖖\" src=\"1f596.png\"/>',fitzpatrick_scale:true,category:\"people\"},writing_hand:{keywords:[\"lower_left_ballpoint_pen\",\"stationery\",\"write\",\"compose\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✍\" src=\"270d.png\"/>',fitzpatrick_scale:true,category:\"people\"},selfie:{keywords:[\"camera\",\"phone\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤳\" src=\"1f933.png\"/>',fitzpatrick_scale:true,category:\"people\"},nail_care:{keywords:[\"beauty\",\"manicure\",\"finger\",\"fashion\",\"nail\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💅\" src=\"1f485.png\"/>',fitzpatrick_scale:true,category:\"people\"},lips:{keywords:[\"mouth\",\"kiss\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👄\" src=\"1f444.png\"/>',fitzpatrick_scale:false,category:\"people\"},tooth:{keywords:[\"teeth\",\"dentist\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦷\" src=\"1f9b7.png\"/>',fitzpatrick_scale:false,category:\"people\"},tongue:{keywords:[\"mouth\",\"playful\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👅\" src=\"1f445.png\"/>',fitzpatrick_scale:false,category:\"people\"},ear:{keywords:[\"face\",\"hear\",\"sound\",\"listen\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👂\" src=\"1f442.png\"/>',fitzpatrick_scale:true,category:\"people\"},nose:{keywords:[\"smell\",\"sniff\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👃\" src=\"1f443.png\"/>',fitzpatrick_scale:true,category:\"people\"},eye:{keywords:[\"face\",\"look\",\"see\",\"watch\",\"stare\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👁\" src=\"1f441.png\"/>',fitzpatrick_scale:false,category:\"people\"},eyes:{keywords:[\"look\",\"watch\",\"stalk\",\"peek\",\"see\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👀\" src=\"1f440.png\"/>',fitzpatrick_scale:false,category:\"people\"},brain:{keywords:[\"smart\",\"intelligent\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧠\" src=\"1f9e0.png\"/>',fitzpatrick_scale:false,category:\"people\"},bust_in_silhouette:{keywords:[\"user\",\"person\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👤\" src=\"1f464.png\"/>',fitzpatrick_scale:false,category:\"people\"},busts_in_silhouette:{keywords:[\"user\",\"person\",\"human\",\"group\",\"team\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👥\" src=\"1f465.png\"/>',fitzpatrick_scale:false,category:\"people\"},speaking_head:{keywords:[\"user\",\"person\",\"human\",\"sing\",\"say\",\"talk\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗣\" src=\"1f5e3.png\"/>',fitzpatrick_scale:false,category:\"people\"},baby:{keywords:[\"child\",\"boy\",\"girl\",\"toddler\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👶\" src=\"1f476.png\"/>',fitzpatrick_scale:true,category:\"people\"},child:{keywords:[\"gender-neutral\",\"young\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧒\" src=\"1f9d2.png\"/>',fitzpatrick_scale:true,category:\"people\"},boy:{keywords:[\"man\",\"male\",\"guy\",\"teenager\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👦\" src=\"1f466.png\"/>',fitzpatrick_scale:true,category:\"people\"},girl:{keywords:[\"female\",\"woman\",\"teenager\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👧\" src=\"1f467.png\"/>',fitzpatrick_scale:true,category:\"people\"},adult:{keywords:[\"gender-neutral\",\"person\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧑\" src=\"1f9d1.png\"/>',fitzpatrick_scale:true,category:\"people\"},man:{keywords:[\"mustache\",\"father\",\"dad\",\"guy\",\"classy\",\"sir\",\"moustache\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨\" src=\"1f468.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman:{keywords:[\"female\",\"girls\",\"lady\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩\" src=\"1f469.png\"/>',fitzpatrick_scale:true,category:\"people\"},blonde_woman:{keywords:[\"woman\",\"female\",\"girl\",\"blonde\",\"person\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👱‍♀️\" src=\"1f471-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},blonde_man:{keywords:[\"man\",\"male\",\"boy\",\"blonde\",\"guy\",\"person\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👱\" src=\"1f471.png\"/>',fitzpatrick_scale:true,category:\"people\"},bearded_person:{keywords:[\"person\",\"bewhiskered\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧔\" src=\"1f9d4.png\"/>',fitzpatrick_scale:true,category:\"people\"},older_adult:{keywords:[\"human\",\"elder\",\"senior\",\"gender-neutral\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧓\" src=\"1f9d3.png\"/>',fitzpatrick_scale:true,category:\"people\"},older_man:{keywords:[\"human\",\"male\",\"men\",\"old\",\"elder\",\"senior\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👴\" src=\"1f474.png\"/>',fitzpatrick_scale:true,category:\"people\"},older_woman:{keywords:[\"human\",\"female\",\"women\",\"lady\",\"old\",\"elder\",\"senior\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👵\" src=\"1f475.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_with_gua_pi_mao:{keywords:[\"male\",\"boy\",\"chinese\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👲\" src=\"1f472.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_with_headscarf:{keywords:[\"female\",\"hijab\",\"mantilla\",\"tichel\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧕\" src=\"1f9d5.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_with_turban:{keywords:[\"female\",\"indian\",\"hinduism\",\"arabs\",\"woman\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👳‍♀️\" src=\"1f473-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_with_turban:{keywords:[\"male\",\"indian\",\"hinduism\",\"arabs\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👳\" src=\"1f473.png\"/>',fitzpatrick_scale:true,category:\"people\"},policewoman:{keywords:[\"woman\",\"police\",\"law\",\"legal\",\"enforcement\",\"arrest\",\"911\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👮‍♀️\" src=\"1f46e-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},policeman:{keywords:[\"man\",\"police\",\"law\",\"legal\",\"enforcement\",\"arrest\",\"911\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👮\" src=\"1f46e.png\"/>',fitzpatrick_scale:true,category:\"people\"},construction_worker_woman:{keywords:[\"female\",\"human\",\"wip\",\"build\",\"construction\",\"worker\",\"labor\",\"woman\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👷‍♀️\" src=\"1f477-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},construction_worker_man:{keywords:[\"male\",\"human\",\"wip\",\"guy\",\"build\",\"construction\",\"worker\",\"labor\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👷\" src=\"1f477.png\"/>',fitzpatrick_scale:true,category:\"people\"},guardswoman:{keywords:[\"uk\",\"gb\",\"british\",\"female\",\"royal\",\"woman\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💂‍♀️\" src=\"1f482-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},guardsman:{keywords:[\"uk\",\"gb\",\"british\",\"male\",\"guy\",\"royal\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💂\" src=\"1f482.png\"/>',fitzpatrick_scale:true,category:\"people\"},female_detective:{keywords:[\"human\",\"spy\",\"detective\",\"female\",\"woman\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕵️‍♀️\" src=\"1f575-fe0f-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},male_detective:{keywords:[\"human\",\"spy\",\"detective\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕵\" src=\"1f575.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_health_worker:{keywords:[\"doctor\",\"nurse\",\"therapist\",\"healthcare\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍⚕️\" src=\"1f469-200d-2695-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_health_worker:{keywords:[\"doctor\",\"nurse\",\"therapist\",\"healthcare\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍⚕️\" src=\"1f468-200d-2695-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_farmer:{keywords:[\"rancher\",\"gardener\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🌾\" src=\"1f469-200d-1f33e.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_farmer:{keywords:[\"rancher\",\"gardener\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🌾\" src=\"1f468-200d-1f33e.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_cook:{keywords:[\"chef\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🍳\" src=\"1f469-200d-1f373.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_cook:{keywords:[\"chef\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🍳\" src=\"1f468-200d-1f373.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_student:{keywords:[\"graduate\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🎓\" src=\"1f469-200d-1f393.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_student:{keywords:[\"graduate\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🎓\" src=\"1f468-200d-1f393.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_singer:{keywords:[\"rockstar\",\"entertainer\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🎤\" src=\"1f469-200d-1f3a4.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_singer:{keywords:[\"rockstar\",\"entertainer\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🎤\" src=\"1f468-200d-1f3a4.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_teacher:{keywords:[\"instructor\",\"professor\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🏫\" src=\"1f469-200d-1f3eb.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_teacher:{keywords:[\"instructor\",\"professor\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🏫\" src=\"1f468-200d-1f3eb.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_factory_worker:{keywords:[\"assembly\",\"industrial\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🏭\" src=\"1f469-200d-1f3ed.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_factory_worker:{keywords:[\"assembly\",\"industrial\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🏭\" src=\"1f468-200d-1f3ed.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_technologist:{keywords:[\"coder\",\"developer\",\"engineer\",\"programmer\",\"software\",\"woman\",\"human\",\"laptop\",\"computer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍💻\" src=\"1f469-200d-1f4bb.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_technologist:{keywords:[\"coder\",\"developer\",\"engineer\",\"programmer\",\"software\",\"man\",\"human\",\"laptop\",\"computer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍💻\" src=\"1f468-200d-1f4bb.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_office_worker:{keywords:[\"business\",\"manager\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍💼\" src=\"1f469-200d-1f4bc.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_office_worker:{keywords:[\"business\",\"manager\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍💼\" src=\"1f468-200d-1f4bc.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_mechanic:{keywords:[\"plumber\",\"woman\",\"human\",\"wrench\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🔧\" src=\"1f469-200d-1f527.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_mechanic:{keywords:[\"plumber\",\"man\",\"human\",\"wrench\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🔧\" src=\"1f468-200d-1f527.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_scientist:{keywords:[\"biologist\",\"chemist\",\"engineer\",\"physicist\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🔬\" src=\"1f469-200d-1f52c.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_scientist:{keywords:[\"biologist\",\"chemist\",\"engineer\",\"physicist\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🔬\" src=\"1f468-200d-1f52c.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_artist:{keywords:[\"painter\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🎨\" src=\"1f469-200d-1f3a8.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_artist:{keywords:[\"painter\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🎨\" src=\"1f468-200d-1f3a8.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_firefighter:{keywords:[\"fireman\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🚒\" src=\"1f469-200d-1f692.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_firefighter:{keywords:[\"fireman\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🚒\" src=\"1f468-200d-1f692.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_pilot:{keywords:[\"aviator\",\"plane\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍✈️\" src=\"1f469-200d-2708-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_pilot:{keywords:[\"aviator\",\"plane\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍✈️\" src=\"1f468-200d-2708-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_astronaut:{keywords:[\"space\",\"rocket\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍🚀\" src=\"1f469-200d-1f680.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_astronaut:{keywords:[\"space\",\"rocket\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍🚀\" src=\"1f468-200d-1f680.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_judge:{keywords:[\"justice\",\"court\",\"woman\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍⚖️\" src=\"1f469-200d-2696-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_judge:{keywords:[\"justice\",\"court\",\"man\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍⚖️\" src=\"1f468-200d-2696-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_superhero:{keywords:[\"woman\",\"female\",\"good\",\"heroine\",\"superpowers\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦸‍♀️\" src=\"1f9b8-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_superhero:{keywords:[\"man\",\"male\",\"good\",\"hero\",\"superpowers\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦸‍♂️\" src=\"1f9b8-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_supervillain:{keywords:[\"woman\",\"female\",\"evil\",\"bad\",\"criminal\",\"heroine\",\"superpowers\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦹‍♀️\" src=\"1f9b9-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_supervillain:{keywords:[\"man\",\"male\",\"evil\",\"bad\",\"criminal\",\"hero\",\"superpowers\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦹‍♂️\" src=\"1f9b9-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},mrs_claus:{keywords:[\"woman\",\"female\",\"xmas\",\"mother christmas\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤶\" src=\"1f936.png\"/>',fitzpatrick_scale:true,category:\"people\"},santa:{keywords:[\"festival\",\"man\",\"male\",\"xmas\",\"father christmas\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎅\" src=\"1f385.png\"/>',fitzpatrick_scale:true,category:\"people\"},sorceress:{keywords:[\"woman\",\"female\",\"mage\",\"witch\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧙‍♀️\" src=\"1f9d9-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},wizard:{keywords:[\"man\",\"male\",\"mage\",\"sorcerer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧙‍♂️\" src=\"1f9d9-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_elf:{keywords:[\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧝‍♀️\" src=\"1f9dd-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_elf:{keywords:[\"man\",\"male\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧝‍♂️\" src=\"1f9dd-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_vampire:{keywords:[\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧛‍♀️\" src=\"1f9db-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_vampire:{keywords:[\"man\",\"male\",\"dracula\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧛‍♂️\" src=\"1f9db-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_zombie:{keywords:[\"woman\",\"female\",\"undead\",\"walking dead\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧟‍♀️\" src=\"1f9df-200d-2640-fe0f.png\"/>',fitzpatrick_scale:false,category:\"people\"},man_zombie:{keywords:[\"man\",\"male\",\"dracula\",\"undead\",\"walking dead\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧟‍♂️\" src=\"1f9df-200d-2642-fe0f.png\"/>',fitzpatrick_scale:false,category:\"people\"},woman_genie:{keywords:[\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧞‍♀️\" src=\"1f9de-200d-2640-fe0f.png\"/>',fitzpatrick_scale:false,category:\"people\"},man_genie:{keywords:[\"man\",\"male\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧞‍♂️\" src=\"1f9de-200d-2642-fe0f.png\"/>',fitzpatrick_scale:false,category:\"people\"},mermaid:{keywords:[\"woman\",\"female\",\"merwoman\",\"ariel\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧜‍♀️\" src=\"1f9dc-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},merman:{keywords:[\"man\",\"male\",\"triton\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧜‍♂️\" src=\"1f9dc-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_fairy:{keywords:[\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧚‍♀️\" src=\"1f9da-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_fairy:{keywords:[\"man\",\"male\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧚‍♂️\" src=\"1f9da-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},angel:{keywords:[\"heaven\",\"wings\",\"halo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👼\" src=\"1f47c.png\"/>',fitzpatrick_scale:true,category:\"people\"},pregnant_woman:{keywords:[\"baby\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤰\" src=\"1f930.png\"/>',fitzpatrick_scale:true,category:\"people\"},breastfeeding:{keywords:[\"nursing\",\"baby\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤱\" src=\"1f931.png\"/>',fitzpatrick_scale:true,category:\"people\"},princess:{keywords:[\"girl\",\"woman\",\"female\",\"blond\",\"crown\",\"royal\",\"queen\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👸\" src=\"1f478.png\"/>',fitzpatrick_scale:true,category:\"people\"},prince:{keywords:[\"boy\",\"man\",\"male\",\"crown\",\"royal\",\"king\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤴\" src=\"1f934.png\"/>',fitzpatrick_scale:true,category:\"people\"},bride_with_veil:{keywords:[\"couple\",\"marriage\",\"wedding\",\"woman\",\"bride\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👰\" src=\"1f470.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_in_tuxedo:{keywords:[\"couple\",\"marriage\",\"wedding\",\"groom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤵\" src=\"1f935.png\"/>',fitzpatrick_scale:true,category:\"people\"},running_woman:{keywords:[\"woman\",\"walking\",\"exercise\",\"race\",\"running\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏃‍♀️\" src=\"1f3c3-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},running_man:{keywords:[\"man\",\"walking\",\"exercise\",\"race\",\"running\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏃\" src=\"1f3c3.png\"/>',fitzpatrick_scale:true,category:\"people\"},walking_woman:{keywords:[\"human\",\"feet\",\"steps\",\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚶‍♀️\" src=\"1f6b6-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},walking_man:{keywords:[\"human\",\"feet\",\"steps\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚶\" src=\"1f6b6.png\"/>',fitzpatrick_scale:true,category:\"people\"},dancer:{keywords:[\"female\",\"girl\",\"woman\",\"fun\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💃\" src=\"1f483.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_dancing:{keywords:[\"male\",\"boy\",\"fun\",\"dancer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕺\" src=\"1f57a.png\"/>',fitzpatrick_scale:true,category:\"people\"},dancing_women:{keywords:[\"female\",\"bunny\",\"women\",\"girls\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👯\" src=\"1f46f.png\"/>',fitzpatrick_scale:false,category:\"people\"},dancing_men:{keywords:[\"male\",\"bunny\",\"men\",\"boys\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👯‍♂️\" src=\"1f46f-200d-2642-fe0f.png\"/>',fitzpatrick_scale:false,category:\"people\"},couple:{keywords:[\"pair\",\"people\",\"human\",\"love\",\"date\",\"dating\",\"like\",\"affection\",\"valentines\",\"marriage\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👫\" src=\"1f46b.png\"/>',fitzpatrick_scale:false,category:\"people\"},two_men_holding_hands:{keywords:[\"pair\",\"couple\",\"love\",\"like\",\"bromance\",\"friendship\",\"people\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👬\" src=\"1f46c.png\"/>',fitzpatrick_scale:false,category:\"people\"},two_women_holding_hands:{keywords:[\"pair\",\"friendship\",\"couple\",\"love\",\"like\",\"female\",\"people\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👭\" src=\"1f46d.png\"/>',fitzpatrick_scale:false,category:\"people\"},bowing_woman:{keywords:[\"woman\",\"female\",\"girl\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙇‍♀️\" src=\"1f647-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},bowing_man:{keywords:[\"man\",\"male\",\"boy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙇\" src=\"1f647.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_facepalming:{keywords:[\"man\",\"male\",\"boy\",\"disbelief\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤦‍♂️\" src=\"1f926-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_facepalming:{keywords:[\"woman\",\"female\",\"girl\",\"disbelief\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤦‍♀️\" src=\"1f926-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_shrugging:{keywords:[\"woman\",\"female\",\"girl\",\"confused\",\"indifferent\",\"doubt\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤷\" src=\"1f937.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_shrugging:{keywords:[\"man\",\"male\",\"boy\",\"confused\",\"indifferent\",\"doubt\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤷‍♂️\" src=\"1f937-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},tipping_hand_woman:{keywords:[\"female\",\"girl\",\"woman\",\"human\",\"information\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💁\" src=\"1f481.png\"/>',fitzpatrick_scale:true,category:\"people\"},tipping_hand_man:{keywords:[\"male\",\"boy\",\"man\",\"human\",\"information\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💁‍♂️\" src=\"1f481-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},no_good_woman:{keywords:[\"female\",\"girl\",\"woman\",\"nope\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙅\" src=\"1f645.png\"/>',fitzpatrick_scale:true,category:\"people\"},no_good_man:{keywords:[\"male\",\"boy\",\"man\",\"nope\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙅‍♂️\" src=\"1f645-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},ok_woman:{keywords:[\"women\",\"girl\",\"female\",\"pink\",\"human\",\"woman\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙆\" src=\"1f646.png\"/>',fitzpatrick_scale:true,category:\"people\"},ok_man:{keywords:[\"men\",\"boy\",\"male\",\"blue\",\"human\",\"man\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙆‍♂️\" src=\"1f646-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},raising_hand_woman:{keywords:[\"female\",\"girl\",\"woman\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙋\" src=\"1f64b.png\"/>',fitzpatrick_scale:true,category:\"people\"},raising_hand_man:{keywords:[\"male\",\"boy\",\"man\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙋‍♂️\" src=\"1f64b-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},pouting_woman:{keywords:[\"female\",\"girl\",\"woman\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙎\" src=\"1f64e.png\"/>',fitzpatrick_scale:true,category:\"people\"},pouting_man:{keywords:[\"male\",\"boy\",\"man\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙎‍♂️\" src=\"1f64e-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},frowning_woman:{keywords:[\"female\",\"girl\",\"woman\",\"sad\",\"depressed\",\"discouraged\",\"unhappy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙍\" src=\"1f64d.png\"/>',fitzpatrick_scale:true,category:\"people\"},frowning_man:{keywords:[\"male\",\"boy\",\"man\",\"sad\",\"depressed\",\"discouraged\",\"unhappy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙍‍♂️\" src=\"1f64d-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},haircut_woman:{keywords:[\"female\",\"girl\",\"woman\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💇\" src=\"1f487.png\"/>',fitzpatrick_scale:true,category:\"people\"},haircut_man:{keywords:[\"male\",\"boy\",\"man\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💇‍♂️\" src=\"1f487-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},massage_woman:{keywords:[\"female\",\"girl\",\"woman\",\"head\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💆\" src=\"1f486.png\"/>',fitzpatrick_scale:true,category:\"people\"},massage_man:{keywords:[\"male\",\"boy\",\"man\",\"head\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💆‍♂️\" src=\"1f486-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},woman_in_steamy_room:{keywords:[\"female\",\"woman\",\"spa\",\"steamroom\",\"sauna\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧖‍♀️\" src=\"1f9d6-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},man_in_steamy_room:{keywords:[\"male\",\"man\",\"spa\",\"steamroom\",\"sauna\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧖‍♂️\" src=\"1f9d6-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"people\"},couple_with_heart_woman_man:{keywords:[\"pair\",\"love\",\"like\",\"affection\",\"human\",\"dating\",\"valentines\",\"marriage\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💑\" src=\"1f491.png\"/>',fitzpatrick_scale:false,category:\"people\"},couple_with_heart_woman_woman:{keywords:[\"pair\",\"love\",\"like\",\"affection\",\"human\",\"dating\",\"valentines\",\"marriage\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍❤️‍👩\" src=\"1f469-200d-2764-fe0f-200d-1f469.png\"/>',fitzpatrick_scale:false,category:\"people\"},couple_with_heart_man_man:{keywords:[\"pair\",\"love\",\"like\",\"affection\",\"human\",\"dating\",\"valentines\",\"marriage\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍❤️‍👨\" src=\"1f468-200d-2764-fe0f-200d-1f468.png\"/>',fitzpatrick_scale:false,category:\"people\"},couplekiss_man_woman:{keywords:[\"pair\",\"valentines\",\"love\",\"like\",\"dating\",\"marriage\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💏\" src=\"1f48f.png\"/>',fitzpatrick_scale:false,category:\"people\"},couplekiss_woman_woman:{keywords:[\"pair\",\"valentines\",\"love\",\"like\",\"dating\",\"marriage\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍❤️‍💋‍👩\" src=\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png\"/>',fitzpatrick_scale:false,category:\"people\"},couplekiss_man_man:{keywords:[\"pair\",\"valentines\",\"love\",\"like\",\"dating\",\"marriage\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍❤️‍💋‍👨\" src=\"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_woman_boy:{keywords:[\"home\",\"parents\",\"child\",\"mom\",\"dad\",\"father\",\"mother\",\"people\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👪\" src=\"1f46a.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_woman_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"child\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👩‍👧\" src=\"1f468-200d-1f469-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_woman_girl_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👩‍👧‍👦\" src=\"1f468-200d-1f469-200d-1f467-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_woman_boy_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👩‍👦‍👦\" src=\"1f468-200d-1f469-200d-1f466-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_woman_girl_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👩‍👧‍👧\" src=\"1f468-200d-1f469-200d-1f467-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_woman_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👩‍👦\" src=\"1f469-200d-1f469-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_woman_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👩‍👧\" src=\"1f469-200d-1f469-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_woman_girl_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👩‍👧‍👦\" src=\"1f469-200d-1f469-200d-1f467-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_woman_boy_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👩‍👦‍👦\" src=\"1f469-200d-1f469-200d-1f466-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_woman_girl_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👩‍👧‍👧\" src=\"1f469-200d-1f469-200d-1f467-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_man_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👨‍👦\" src=\"1f468-200d-1f468-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_man_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👨‍👧\" src=\"1f468-200d-1f468-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_man_girl_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👨‍👧‍👦\" src=\"1f468-200d-1f468-200d-1f467-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_man_boy_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👨‍👦‍👦\" src=\"1f468-200d-1f468-200d-1f466-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_man_girl_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👨‍👧‍👧\" src=\"1f468-200d-1f468-200d-1f467-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"child\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👦\" src=\"1f469-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_girl:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"child\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👧\" src=\"1f469-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_girl_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👧‍👦\" src=\"1f469-200d-1f467-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_boy_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👦‍👦\" src=\"1f469-200d-1f466-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_woman_girl_girl:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👩‍👧‍👧\" src=\"1f469-200d-1f467-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"child\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👦\" src=\"1f468-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_girl:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"child\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👧\" src=\"1f468-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_girl_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👧‍👦\" src=\"1f468-200d-1f467-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_boy_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👦‍👦\" src=\"1f468-200d-1f466-200d-1f466.png\"/>',fitzpatrick_scale:false,category:\"people\"},family_man_girl_girl:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👨‍👧‍👧\" src=\"1f468-200d-1f467-200d-1f467.png\"/>',fitzpatrick_scale:false,category:\"people\"},yarn:{keywords:[\"ball\",\"crochet\",\"knit\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧶\" src=\"1f9f6.png\"/>',fitzpatrick_scale:false,category:\"people\"},thread:{keywords:[\"needle\",\"sewing\",\"spool\",\"string\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧵\" src=\"1f9f5.png\"/>',fitzpatrick_scale:false,category:\"people\"},coat:{keywords:[\"jacket\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧥\" src=\"1f9e5.png\"/>',fitzpatrick_scale:false,category:\"people\"},labcoat:{keywords:[\"doctor\",\"experiment\",\"scientist\",\"chemist\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥼\" src=\"1f97c.png\"/>',fitzpatrick_scale:false,category:\"people\"},womans_clothes:{keywords:[\"fashion\",\"shopping_bags\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👚\" src=\"1f45a.png\"/>',fitzpatrick_scale:false,category:\"people\"},tshirt:{keywords:[\"fashion\",\"cloth\",\"casual\",\"shirt\",\"tee\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👕\" src=\"1f455.png\"/>',fitzpatrick_scale:false,category:\"people\"},jeans:{keywords:[\"fashion\",\"shopping\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👖\" src=\"1f456.png\"/>',fitzpatrick_scale:false,category:\"people\"},necktie:{keywords:[\"shirt\",\"suitup\",\"formal\",\"fashion\",\"cloth\",\"business\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👔\" src=\"1f454.png\"/>',fitzpatrick_scale:false,category:\"people\"},dress:{keywords:[\"clothes\",\"fashion\",\"shopping\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👗\" src=\"1f457.png\"/>',fitzpatrick_scale:false,category:\"people\"},bikini:{keywords:[\"swimming\",\"female\",\"woman\",\"girl\",\"fashion\",\"beach\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👙\" src=\"1f459.png\"/>',fitzpatrick_scale:false,category:\"people\"},kimono:{keywords:[\"dress\",\"fashion\",\"women\",\"female\",\"japanese\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👘\" src=\"1f458.png\"/>',fitzpatrick_scale:false,category:\"people\"},lipstick:{keywords:[\"female\",\"girl\",\"fashion\",\"woman\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💄\" src=\"1f484.png\"/>',fitzpatrick_scale:false,category:\"people\"},kiss:{keywords:[\"face\",\"lips\",\"love\",\"like\",\"affection\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💋\" src=\"1f48b.png\"/>',fitzpatrick_scale:false,category:\"people\"},footprints:{keywords:[\"feet\",\"tracking\",\"walking\",\"beach\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👣\" src=\"1f463.png\"/>',fitzpatrick_scale:false,category:\"people\"},flat_shoe:{keywords:[\"ballet\",\"slip-on\",\"slipper\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥿\" src=\"1f97f.png\"/>',fitzpatrick_scale:false,category:\"people\"},high_heel:{keywords:[\"fashion\",\"shoes\",\"female\",\"pumps\",\"stiletto\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👠\" src=\"1f460.png\"/>',fitzpatrick_scale:false,category:\"people\"},sandal:{keywords:[\"shoes\",\"fashion\",\"flip flops\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👡\" src=\"1f461.png\"/>',fitzpatrick_scale:false,category:\"people\"},boot:{keywords:[\"shoes\",\"fashion\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👢\" src=\"1f462.png\"/>',fitzpatrick_scale:false,category:\"people\"},mans_shoe:{keywords:[\"fashion\",\"male\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👞\" src=\"1f45e.png\"/>',fitzpatrick_scale:false,category:\"people\"},athletic_shoe:{keywords:[\"shoes\",\"sports\",\"sneakers\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👟\" src=\"1f45f.png\"/>',fitzpatrick_scale:false,category:\"people\"},hiking_boot:{keywords:[\"backpacking\",\"camping\",\"hiking\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥾\" src=\"1f97e.png\"/>',fitzpatrick_scale:false,category:\"people\"},socks:{keywords:[\"stockings\",\"clothes\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧦\" src=\"1f9e6.png\"/>',fitzpatrick_scale:false,category:\"people\"},gloves:{keywords:[\"hands\",\"winter\",\"clothes\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧤\" src=\"1f9e4.png\"/>',fitzpatrick_scale:false,category:\"people\"},scarf:{keywords:[\"neck\",\"winter\",\"clothes\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧣\" src=\"1f9e3.png\"/>',fitzpatrick_scale:false,category:\"people\"},womans_hat:{keywords:[\"fashion\",\"accessories\",\"female\",\"lady\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👒\" src=\"1f452.png\"/>',fitzpatrick_scale:false,category:\"people\"},tophat:{keywords:[\"magic\",\"gentleman\",\"classy\",\"circus\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎩\" src=\"1f3a9.png\"/>',fitzpatrick_scale:false,category:\"people\"},billed_hat:{keywords:[\"cap\",\"baseball\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧢\" src=\"1f9e2.png\"/>',fitzpatrick_scale:false,category:\"people\"},rescue_worker_helmet:{keywords:[\"construction\",\"build\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛑\" src=\"26d1.png\"/>',fitzpatrick_scale:false,category:\"people\"},mortar_board:{keywords:[\"school\",\"college\",\"degree\",\"university\",\"graduation\",\"cap\",\"hat\",\"legal\",\"learn\",\"education\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎓\" src=\"1f393.png\"/>',fitzpatrick_scale:false,category:\"people\"},crown:{keywords:[\"king\",\"kod\",\"leader\",\"royalty\",\"lord\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👑\" src=\"1f451.png\"/>',fitzpatrick_scale:false,category:\"people\"},school_satchel:{keywords:[\"student\",\"education\",\"bag\",\"backpack\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎒\" src=\"1f392.png\"/>',fitzpatrick_scale:false,category:\"people\"},luggage:{keywords:[\"packing\",\"travel\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧳\" src=\"1f9f3.png\"/>',fitzpatrick_scale:false,category:\"people\"},pouch:{keywords:[\"bag\",\"accessories\",\"shopping\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👝\" src=\"1f45d.png\"/>',fitzpatrick_scale:false,category:\"people\"},purse:{keywords:[\"fashion\",\"accessories\",\"money\",\"sales\",\"shopping\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👛\" src=\"1f45b.png\"/>',fitzpatrick_scale:false,category:\"people\"},handbag:{keywords:[\"fashion\",\"accessory\",\"accessories\",\"shopping\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👜\" src=\"1f45c.png\"/>',fitzpatrick_scale:false,category:\"people\"},briefcase:{keywords:[\"business\",\"documents\",\"work\",\"law\",\"legal\",\"job\",\"career\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💼\" src=\"1f4bc.png\"/>',fitzpatrick_scale:false,category:\"people\"},eyeglasses:{keywords:[\"fashion\",\"accessories\",\"eyesight\",\"nerdy\",\"dork\",\"geek\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👓\" src=\"1f453.png\"/>',fitzpatrick_scale:false,category:\"people\"},dark_sunglasses:{keywords:[\"face\",\"cool\",\"accessories\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕶\" src=\"1f576.png\"/>',fitzpatrick_scale:false,category:\"people\"},goggles:{keywords:[\"eyes\",\"protection\",\"safety\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥽\" src=\"1f97d.png\"/>',fitzpatrick_scale:false,category:\"people\"},ring:{keywords:[\"wedding\",\"propose\",\"marriage\",\"valentines\",\"diamond\",\"fashion\",\"jewelry\",\"gem\",\"engagement\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💍\" src=\"1f48d.png\"/>',fitzpatrick_scale:false,category:\"people\"},closed_umbrella:{keywords:[\"weather\",\"rain\",\"drizzle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌂\" src=\"1f302.png\"/>',fitzpatrick_scale:false,category:\"people\"},dog:{keywords:[\"animal\",\"friend\",\"nature\",\"woof\",\"puppy\",\"pet\",\"faithful\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐶\" src=\"1f436.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cat:{keywords:[\"animal\",\"meow\",\"nature\",\"pet\",\"kitten\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐱\" src=\"1f431.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},mouse:{keywords:[\"animal\",\"nature\",\"cheese_wedge\",\"rodent\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐭\" src=\"1f42d.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},hamster:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐹\" src=\"1f439.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},rabbit:{keywords:[\"animal\",\"nature\",\"pet\",\"spring\",\"magic\",\"bunny\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐰\" src=\"1f430.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},fox_face:{keywords:[\"animal\",\"nature\",\"face\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦊\" src=\"1f98a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},bear:{keywords:[\"animal\",\"nature\",\"wild\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐻\" src=\"1f43b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},panda_face:{keywords:[\"animal\",\"nature\",\"panda\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐼\" src=\"1f43c.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},koala:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐨\" src=\"1f428.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},tiger:{keywords:[\"animal\",\"cat\",\"danger\",\"wild\",\"nature\",\"roar\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐯\" src=\"1f42f.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},lion:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦁\" src=\"1f981.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cow:{keywords:[\"beef\",\"ox\",\"animal\",\"nature\",\"moo\",\"milk\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐮\" src=\"1f42e.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},pig:{keywords:[\"animal\",\"oink\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐷\" src=\"1f437.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},pig_nose:{keywords:[\"animal\",\"oink\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐽\" src=\"1f43d.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},frog:{keywords:[\"animal\",\"nature\",\"croak\",\"toad\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐸\" src=\"1f438.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},squid:{keywords:[\"animal\",\"nature\",\"ocean\",\"sea\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦑\" src=\"1f991.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},octopus:{keywords:[\"animal\",\"creature\",\"ocean\",\"sea\",\"nature\",\"beach\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐙\" src=\"1f419.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},shrimp:{keywords:[\"animal\",\"ocean\",\"nature\",\"seafood\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦐\" src=\"1f990.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},monkey_face:{keywords:[\"animal\",\"nature\",\"circus\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐵\" src=\"1f435.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},gorilla:{keywords:[\"animal\",\"nature\",\"circus\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦍\" src=\"1f98d.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},see_no_evil:{keywords:[\"monkey\",\"animal\",\"nature\",\"haha\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙈\" src=\"1f648.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},hear_no_evil:{keywords:[\"animal\",\"monkey\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙉\" src=\"1f649.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},speak_no_evil:{keywords:[\"monkey\",\"animal\",\"nature\",\"omg\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🙊\" src=\"1f64a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},monkey:{keywords:[\"animal\",\"nature\",\"banana\",\"circus\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐒\" src=\"1f412.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},chicken:{keywords:[\"animal\",\"cluck\",\"nature\",\"bird\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐔\" src=\"1f414.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},penguin:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐧\" src=\"1f427.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},bird:{keywords:[\"animal\",\"nature\",\"fly\",\"tweet\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐦\" src=\"1f426.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},baby_chick:{keywords:[\"animal\",\"chicken\",\"bird\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐤\" src=\"1f424.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},hatching_chick:{keywords:[\"animal\",\"chicken\",\"egg\",\"born\",\"baby\",\"bird\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐣\" src=\"1f423.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},hatched_chick:{keywords:[\"animal\",\"chicken\",\"baby\",\"bird\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐥\" src=\"1f425.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},duck:{keywords:[\"animal\",\"nature\",\"bird\",\"mallard\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦆\" src=\"1f986.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},eagle:{keywords:[\"animal\",\"nature\",\"bird\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦅\" src=\"1f985.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},owl:{keywords:[\"animal\",\"nature\",\"bird\",\"hoot\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦉\" src=\"1f989.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},bat:{keywords:[\"animal\",\"nature\",\"blind\",\"vampire\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦇\" src=\"1f987.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},wolf:{keywords:[\"animal\",\"nature\",\"wild\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐺\" src=\"1f43a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},boar:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐗\" src=\"1f417.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},horse:{keywords:[\"animal\",\"brown\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐴\" src=\"1f434.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},unicorn:{keywords:[\"animal\",\"nature\",\"mystical\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦄\" src=\"1f984.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},honeybee:{keywords:[\"animal\",\"insect\",\"nature\",\"bug\",\"spring\",\"honey\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐝\" src=\"1f41d.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},bug:{keywords:[\"animal\",\"insect\",\"nature\",\"worm\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐛\" src=\"1f41b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},butterfly:{keywords:[\"animal\",\"insect\",\"nature\",\"caterpillar\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦋\" src=\"1f98b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},snail:{keywords:[\"slow\",\"animal\",\"shell\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐌\" src=\"1f40c.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},beetle:{keywords:[\"animal\",\"insect\",\"nature\",\"ladybug\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐞\" src=\"1f41e.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},ant:{keywords:[\"animal\",\"insect\",\"nature\",\"bug\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐜\" src=\"1f41c.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},grasshopper:{keywords:[\"animal\",\"cricket\",\"chirp\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦗\" src=\"1f997.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},spider:{keywords:[\"animal\",\"arachnid\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕷\" src=\"1f577.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},scorpion:{keywords:[\"animal\",\"arachnid\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦂\" src=\"1f982.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},crab:{keywords:[\"animal\",\"crustacean\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦀\" src=\"1f980.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},snake:{keywords:[\"animal\",\"evil\",\"nature\",\"hiss\",\"python\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐍\" src=\"1f40d.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},lizard:{keywords:[\"animal\",\"nature\",\"reptile\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦎\" src=\"1f98e.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},\"t-rex\":{keywords:[\"animal\",\"nature\",\"dinosaur\",\"tyrannosaurus\",\"extinct\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦖\" src=\"1f996.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sauropod:{keywords:[\"animal\",\"nature\",\"dinosaur\",\"brachiosaurus\",\"brontosaurus\",\"diplodocus\",\"extinct\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦕\" src=\"1f995.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},turtle:{keywords:[\"animal\",\"slow\",\"nature\",\"tortoise\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐢\" src=\"1f422.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},tropical_fish:{keywords:[\"animal\",\"swim\",\"ocean\",\"beach\",\"nemo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐠\" src=\"1f420.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},fish:{keywords:[\"animal\",\"food\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐟\" src=\"1f41f.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},blowfish:{keywords:[\"animal\",\"nature\",\"food\",\"sea\",\"ocean\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐡\" src=\"1f421.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},dolphin:{keywords:[\"animal\",\"nature\",\"fish\",\"sea\",\"ocean\",\"flipper\",\"fins\",\"beach\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐬\" src=\"1f42c.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},shark:{keywords:[\"animal\",\"nature\",\"fish\",\"sea\",\"ocean\",\"jaws\",\"fins\",\"beach\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦈\" src=\"1f988.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},whale:{keywords:[\"animal\",\"nature\",\"sea\",\"ocean\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐳\" src=\"1f433.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},whale2:{keywords:[\"animal\",\"nature\",\"sea\",\"ocean\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐋\" src=\"1f40b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},crocodile:{keywords:[\"animal\",\"nature\",\"reptile\",\"lizard\",\"alligator\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐊\" src=\"1f40a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},leopard:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐆\" src=\"1f406.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},zebra:{keywords:[\"animal\",\"nature\",\"stripes\",\"safari\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦓\" src=\"1f993.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},tiger2:{keywords:[\"animal\",\"nature\",\"roar\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐅\" src=\"1f405.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},water_buffalo:{keywords:[\"animal\",\"nature\",\"ox\",\"cow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐃\" src=\"1f403.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},ox:{keywords:[\"animal\",\"cow\",\"beef\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐂\" src=\"1f402.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cow2:{keywords:[\"beef\",\"ox\",\"animal\",\"nature\",\"moo\",\"milk\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐄\" src=\"1f404.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},deer:{keywords:[\"animal\",\"nature\",\"horns\",\"venison\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦌\" src=\"1f98c.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},dromedary_camel:{keywords:[\"animal\",\"hot\",\"desert\",\"hump\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐪\" src=\"1f42a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},camel:{keywords:[\"animal\",\"nature\",\"hot\",\"desert\",\"hump\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐫\" src=\"1f42b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},giraffe:{keywords:[\"animal\",\"nature\",\"spots\",\"safari\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦒\" src=\"1f992.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},elephant:{keywords:[\"animal\",\"nature\",\"nose\",\"th\",\"circus\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐘\" src=\"1f418.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},rhinoceros:{keywords:[\"animal\",\"nature\",\"horn\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦏\" src=\"1f98f.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},goat:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐐\" src=\"1f410.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},ram:{keywords:[\"animal\",\"sheep\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐏\" src=\"1f40f.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sheep:{keywords:[\"animal\",\"nature\",\"wool\",\"shipit\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐑\" src=\"1f411.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},racehorse:{keywords:[\"animal\",\"gamble\",\"luck\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐎\" src=\"1f40e.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},pig2:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐖\" src=\"1f416.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},rat:{keywords:[\"animal\",\"mouse\",\"rodent\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐀\" src=\"1f400.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},mouse2:{keywords:[\"animal\",\"nature\",\"rodent\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐁\" src=\"1f401.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},rooster:{keywords:[\"animal\",\"nature\",\"chicken\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐓\" src=\"1f413.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},turkey:{keywords:[\"animal\",\"bird\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦃\" src=\"1f983.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},dove:{keywords:[\"animal\",\"bird\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕊\" src=\"1f54a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},dog2:{keywords:[\"animal\",\"nature\",\"friend\",\"doge\",\"pet\",\"faithful\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐕\" src=\"1f415.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},poodle:{keywords:[\"dog\",\"animal\",\"101\",\"nature\",\"pet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐩\" src=\"1f429.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cat2:{keywords:[\"animal\",\"meow\",\"pet\",\"cats\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐈\" src=\"1f408.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},rabbit2:{keywords:[\"animal\",\"nature\",\"pet\",\"magic\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐇\" src=\"1f407.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},chipmunk:{keywords:[\"animal\",\"nature\",\"rodent\",\"squirrel\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐿\" src=\"1f43f.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},hedgehog:{keywords:[\"animal\",\"nature\",\"spiny\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦔\" src=\"1f994.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},raccoon:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦝\" src=\"1f99d.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},llama:{keywords:[\"animal\",\"nature\",\"alpaca\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦙\" src=\"1f999.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},hippopotamus:{keywords:[\"animal\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦛\" src=\"1f99b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},kangaroo:{keywords:[\"animal\",\"nature\",\"australia\",\"joey\",\"hop\",\"marsupial\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦘\" src=\"1f998.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},badger:{keywords:[\"animal\",\"nature\",\"honey\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦡\" src=\"1f9a1.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},swan:{keywords:[\"animal\",\"nature\",\"bird\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦢\" src=\"1f9a2.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},peacock:{keywords:[\"animal\",\"nature\",\"peahen\",\"bird\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦚\" src=\"1f99a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},parrot:{keywords:[\"animal\",\"nature\",\"bird\",\"pirate\",\"talk\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦜\" src=\"1f99c.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},lobster:{keywords:[\"animal\",\"nature\",\"bisque\",\"claws\",\"seafood\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦞\" src=\"1f99e.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},mosquito:{keywords:[\"animal\",\"nature\",\"insect\",\"malaria\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦟\" src=\"1f99f.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},paw_prints:{keywords:[\"animal\",\"tracking\",\"footprints\",\"dog\",\"cat\",\"pet\",\"feet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐾\" src=\"1f43e.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},dragon:{keywords:[\"animal\",\"myth\",\"nature\",\"chinese\",\"green\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐉\" src=\"1f409.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},dragon_face:{keywords:[\"animal\",\"myth\",\"nature\",\"chinese\",\"green\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐲\" src=\"1f432.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cactus:{keywords:[\"vegetable\",\"plant\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌵\" src=\"1f335.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},christmas_tree:{keywords:[\"festival\",\"vacation\",\"december\",\"xmas\",\"celebration\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎄\" src=\"1f384.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},evergreen_tree:{keywords:[\"plant\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌲\" src=\"1f332.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},deciduous_tree:{keywords:[\"plant\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌳\" src=\"1f333.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},palm_tree:{keywords:[\"plant\",\"vegetable\",\"nature\",\"summer\",\"beach\",\"mojito\",\"tropical\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌴\" src=\"1f334.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},seedling:{keywords:[\"plant\",\"nature\",\"grass\",\"lawn\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌱\" src=\"1f331.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},herb:{keywords:[\"vegetable\",\"plant\",\"medicine\",\"weed\",\"grass\",\"lawn\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌿\" src=\"1f33f.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},shamrock:{keywords:[\"vegetable\",\"plant\",\"nature\",\"irish\",\"clover\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☘\" src=\"2618.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},four_leaf_clover:{keywords:[\"vegetable\",\"plant\",\"nature\",\"lucky\",\"irish\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍀\" src=\"1f340.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},bamboo:{keywords:[\"plant\",\"nature\",\"vegetable\",\"panda\",\"pine_decoration\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎍\" src=\"1f38d.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},tanabata_tree:{keywords:[\"plant\",\"nature\",\"branch\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎋\" src=\"1f38b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},leaves:{keywords:[\"nature\",\"plant\",\"tree\",\"vegetable\",\"grass\",\"lawn\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍃\" src=\"1f343.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},fallen_leaf:{keywords:[\"nature\",\"plant\",\"vegetable\",\"leaves\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍂\" src=\"1f342.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},maple_leaf:{keywords:[\"nature\",\"plant\",\"vegetable\",\"ca\",\"fall\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍁\" src=\"1f341.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},ear_of_rice:{keywords:[\"nature\",\"plant\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌾\" src=\"1f33e.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},hibiscus:{keywords:[\"plant\",\"vegetable\",\"flowers\",\"beach\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌺\" src=\"1f33a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sunflower:{keywords:[\"nature\",\"plant\",\"fall\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌻\" src=\"1f33b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},rose:{keywords:[\"flowers\",\"valentines\",\"love\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌹\" src=\"1f339.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},wilted_flower:{keywords:[\"plant\",\"nature\",\"flower\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥀\" src=\"1f940.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},tulip:{keywords:[\"flowers\",\"plant\",\"nature\",\"summer\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌷\" src=\"1f337.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},blossom:{keywords:[\"nature\",\"flowers\",\"yellow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌼\" src=\"1f33c.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cherry_blossom:{keywords:[\"nature\",\"plant\",\"spring\",\"flower\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌸\" src=\"1f338.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},bouquet:{keywords:[\"flowers\",\"nature\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💐\" src=\"1f490.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},mushroom:{keywords:[\"plant\",\"vegetable\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍄\" src=\"1f344.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},chestnut:{keywords:[\"food\",\"squirrel\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌰\" src=\"1f330.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},jack_o_lantern:{keywords:[\"halloween\",\"light\",\"pumpkin\",\"creepy\",\"fall\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎃\" src=\"1f383.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},shell:{keywords:[\"nature\",\"sea\",\"beach\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🐚\" src=\"1f41a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},spider_web:{keywords:[\"animal\",\"insect\",\"arachnid\",\"silk\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕸\" src=\"1f578.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},earth_americas:{keywords:[\"globe\",\"world\",\"USA\",\"international\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌎\" src=\"1f30e.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},earth_africa:{keywords:[\"globe\",\"world\",\"international\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌍\" src=\"1f30d.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},earth_asia:{keywords:[\"globe\",\"world\",\"east\",\"international\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌏\" src=\"1f30f.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},full_moon:{keywords:[\"nature\",\"yellow\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌕\" src=\"1f315.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},waning_gibbous_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\",\"waxing_gibbous_moon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌖\" src=\"1f316.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},last_quarter_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌗\" src=\"1f317.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},waning_crescent_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌘\" src=\"1f318.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},new_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌑\" src=\"1f311.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},waxing_crescent_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌒\" src=\"1f312.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},first_quarter_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌓\" src=\"1f313.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},waxing_gibbous_moon:{keywords:[\"nature\",\"night\",\"sky\",\"gray\",\"twilight\",\"planet\",\"space\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌔\" src=\"1f314.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},new_moon_with_face:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌚\" src=\"1f31a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},full_moon_with_face:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌝\" src=\"1f31d.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},first_quarter_moon_with_face:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌛\" src=\"1f31b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},last_quarter_moon_with_face:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌜\" src=\"1f31c.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sun_with_face:{keywords:[\"nature\",\"morning\",\"sky\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌞\" src=\"1f31e.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},crescent_moon:{keywords:[\"night\",\"sleep\",\"sky\",\"evening\",\"magic\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌙\" src=\"1f319.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},star:{keywords:[\"night\",\"yellow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⭐\" src=\"2b50.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},star2:{keywords:[\"night\",\"sparkle\",\"awesome\",\"good\",\"magic\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌟\" src=\"1f31f.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},dizzy:{keywords:[\"star\",\"sparkle\",\"shoot\",\"magic\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💫\" src=\"1f4ab.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sparkles:{keywords:[\"stars\",\"shine\",\"shiny\",\"cool\",\"awesome\",\"good\",\"magic\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✨\" src=\"2728.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},comet:{keywords:[\"space\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☄\" src=\"2604.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sunny:{keywords:[\"weather\",\"nature\",\"brightness\",\"summer\",\"beach\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☀️\" src=\"2600.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sun_behind_small_cloud:{keywords:[\"weather\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌤\" src=\"1f324.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},partly_sunny:{keywords:[\"weather\",\"nature\",\"cloudy\",\"morning\",\"fall\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛅\" src=\"26c5.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sun_behind_large_cloud:{keywords:[\"weather\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌥\" src=\"1f325.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sun_behind_rain_cloud:{keywords:[\"weather\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌦\" src=\"1f326.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud:{keywords:[\"weather\",\"sky\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☁️\" src=\"2601.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud_with_rain:{keywords:[\"weather\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌧\" src=\"1f327.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud_with_lightning_and_rain:{keywords:[\"weather\",\"lightning\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛈\" src=\"26c8.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud_with_lightning:{keywords:[\"weather\",\"thunder\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌩\" src=\"1f329.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},zap:{keywords:[\"thunder\",\"weather\",\"lightning bolt\",\"fast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚡\" src=\"26a1.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},fire:{keywords:[\"hot\",\"cook\",\"flame\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔥\" src=\"1f525.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},boom:{keywords:[\"bomb\",\"explode\",\"explosion\",\"collision\",\"blown\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💥\" src=\"1f4a5.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},snowflake:{keywords:[\"winter\",\"season\",\"cold\",\"weather\",\"christmas\",\"xmas\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❄️\" src=\"2744.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud_with_snow:{keywords:[\"weather\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌨\" src=\"1f328.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},snowman:{keywords:[\"winter\",\"season\",\"cold\",\"weather\",\"christmas\",\"xmas\",\"frozen\",\"without_snow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛄\" src=\"26c4.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},snowman_with_snow:{keywords:[\"winter\",\"season\",\"cold\",\"weather\",\"christmas\",\"xmas\",\"frozen\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☃\" src=\"2603.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},wind_face:{keywords:[\"gust\",\"air\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌬\" src=\"1f32c.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},dash:{keywords:[\"wind\",\"air\",\"fast\",\"shoo\",\"fart\",\"smoke\",\"puff\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💨\" src=\"1f4a8.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},tornado:{keywords:[\"weather\",\"cyclone\",\"twister\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌪\" src=\"1f32a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},fog:{keywords:[\"weather\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌫\" src=\"1f32b.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},open_umbrella:{keywords:[\"weather\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☂\" src=\"2602.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},umbrella:{keywords:[\"rainy\",\"weather\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☔\" src=\"2614.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},droplet:{keywords:[\"water\",\"drip\",\"faucet\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💧\" src=\"1f4a7.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},sweat_drops:{keywords:[\"water\",\"drip\",\"oops\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💦\" src=\"1f4a6.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},ocean:{keywords:[\"sea\",\"water\",\"wave\",\"nature\",\"tsunami\",\"disaster\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌊\" src=\"1f30a.png\"/>',fitzpatrick_scale:false,category:\"animals_and_nature\"},green_apple:{keywords:[\"fruit\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍏\" src=\"1f34f.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},apple:{keywords:[\"fruit\",\"mac\",\"school\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍎\" src=\"1f34e.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},pear:{keywords:[\"fruit\",\"nature\",\"food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍐\" src=\"1f350.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},tangerine:{keywords:[\"food\",\"fruit\",\"nature\",\"orange\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍊\" src=\"1f34a.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},lemon:{keywords:[\"fruit\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍋\" src=\"1f34b.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},banana:{keywords:[\"fruit\",\"food\",\"monkey\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍌\" src=\"1f34c.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},watermelon:{keywords:[\"fruit\",\"food\",\"picnic\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍉\" src=\"1f349.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},grapes:{keywords:[\"fruit\",\"food\",\"wine\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍇\" src=\"1f347.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},strawberry:{keywords:[\"fruit\",\"food\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍓\" src=\"1f353.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},melon:{keywords:[\"fruit\",\"nature\",\"food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍈\" src=\"1f348.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},cherries:{keywords:[\"food\",\"fruit\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍒\" src=\"1f352.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},peach:{keywords:[\"fruit\",\"nature\",\"food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍑\" src=\"1f351.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},pineapple:{keywords:[\"fruit\",\"nature\",\"food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍍\" src=\"1f34d.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},coconut:{keywords:[\"fruit\",\"nature\",\"food\",\"palm\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥥\" src=\"1f965.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},kiwi_fruit:{keywords:[\"fruit\",\"food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥝\" src=\"1f95d.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},mango:{keywords:[\"fruit\",\"food\",\"tropical\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥭\" src=\"1f96d.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},avocado:{keywords:[\"fruit\",\"food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥑\" src=\"1f951.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},broccoli:{keywords:[\"fruit\",\"food\",\"vegetable\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥦\" src=\"1f966.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},tomato:{keywords:[\"fruit\",\"vegetable\",\"nature\",\"food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍅\" src=\"1f345.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},eggplant:{keywords:[\"vegetable\",\"nature\",\"food\",\"aubergine\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍆\" src=\"1f346.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},cucumber:{keywords:[\"fruit\",\"food\",\"pickle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥒\" src=\"1f952.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},carrot:{keywords:[\"vegetable\",\"food\",\"orange\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥕\" src=\"1f955.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},hot_pepper:{keywords:[\"food\",\"spicy\",\"chilli\",\"chili\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌶\" src=\"1f336.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},potato:{keywords:[\"food\",\"tuber\",\"vegatable\",\"starch\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥔\" src=\"1f954.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},corn:{keywords:[\"food\",\"vegetable\",\"plant\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌽\" src=\"1f33d.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},leafy_greens:{keywords:[\"food\",\"vegetable\",\"plant\",\"bok choy\",\"cabbage\",\"kale\",\"lettuce\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥬\" src=\"1f96c.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},sweet_potato:{keywords:[\"food\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍠\" src=\"1f360.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},peanuts:{keywords:[\"food\",\"nut\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥜\" src=\"1f95c.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},honey_pot:{keywords:[\"bees\",\"sweet\",\"kitchen\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍯\" src=\"1f36f.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},croissant:{keywords:[\"food\",\"bread\",\"french\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥐\" src=\"1f950.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},bread:{keywords:[\"food\",\"wheat\",\"breakfast\",\"toast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍞\" src=\"1f35e.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},baguette_bread:{keywords:[\"food\",\"bread\",\"french\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥖\" src=\"1f956.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},bagel:{keywords:[\"food\",\"bread\",\"bakery\",\"schmear\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥯\" src=\"1f96f.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},pretzel:{keywords:[\"food\",\"bread\",\"twisted\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥨\" src=\"1f968.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},cheese:{keywords:[\"food\",\"chadder\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧀\" src=\"1f9c0.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},egg:{keywords:[\"food\",\"chicken\",\"breakfast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥚\" src=\"1f95a.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},bacon:{keywords:[\"food\",\"breakfast\",\"pork\",\"pig\",\"meat\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥓\" src=\"1f953.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},steak:{keywords:[\"food\",\"cow\",\"meat\",\"cut\",\"chop\",\"lambchop\",\"porkchop\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥩\" src=\"1f969.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},pancakes:{keywords:[\"food\",\"breakfast\",\"flapjacks\",\"hotcakes\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥞\" src=\"1f95e.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},poultry_leg:{keywords:[\"food\",\"meat\",\"drumstick\",\"bird\",\"chicken\",\"turkey\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍗\" src=\"1f357.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},meat_on_bone:{keywords:[\"good\",\"food\",\"drumstick\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍖\" src=\"1f356.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},bone:{keywords:[\"skeleton\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦴\" src=\"1f9b4.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},fried_shrimp:{keywords:[\"food\",\"animal\",\"appetizer\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍤\" src=\"1f364.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},fried_egg:{keywords:[\"food\",\"breakfast\",\"kitchen\",\"egg\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍳\" src=\"1f373.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},hamburger:{keywords:[\"meat\",\"fast food\",\"beef\",\"cheeseburger\",\"mcdonalds\",\"burger king\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍔\" src=\"1f354.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},fries:{keywords:[\"chips\",\"snack\",\"fast food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍟\" src=\"1f35f.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},stuffed_flatbread:{keywords:[\"food\",\"flatbread\",\"stuffed\",\"gyro\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥙\" src=\"1f959.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},hotdog:{keywords:[\"food\",\"frankfurter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌭\" src=\"1f32d.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},pizza:{keywords:[\"food\",\"party\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍕\" src=\"1f355.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},sandwich:{keywords:[\"food\",\"lunch\",\"bread\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥪\" src=\"1f96a.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},canned_food:{keywords:[\"food\",\"soup\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥫\" src=\"1f96b.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},spaghetti:{keywords:[\"food\",\"italian\",\"noodle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍝\" src=\"1f35d.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},taco:{keywords:[\"food\",\"mexican\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌮\" src=\"1f32e.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},burrito:{keywords:[\"food\",\"mexican\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌯\" src=\"1f32f.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},green_salad:{keywords:[\"food\",\"healthy\",\"lettuce\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥗\" src=\"1f957.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},shallow_pan_of_food:{keywords:[\"food\",\"cooking\",\"casserole\",\"paella\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥘\" src=\"1f958.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},ramen:{keywords:[\"food\",\"japanese\",\"noodle\",\"chopsticks\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍜\" src=\"1f35c.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},stew:{keywords:[\"food\",\"meat\",\"soup\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍲\" src=\"1f372.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},fish_cake:{keywords:[\"food\",\"japan\",\"sea\",\"beach\",\"narutomaki\",\"pink\",\"swirl\",\"kamaboko\",\"surimi\",\"ramen\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍥\" src=\"1f365.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},fortune_cookie:{keywords:[\"food\",\"prophecy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥠\" src=\"1f960.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},sushi:{keywords:[\"food\",\"fish\",\"japanese\",\"rice\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍣\" src=\"1f363.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},bento:{keywords:[\"food\",\"japanese\",\"box\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍱\" src=\"1f371.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},curry:{keywords:[\"food\",\"spicy\",\"hot\",\"indian\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍛\" src=\"1f35b.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},rice_ball:{keywords:[\"food\",\"japanese\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍙\" src=\"1f359.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},rice:{keywords:[\"food\",\"china\",\"asian\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍚\" src=\"1f35a.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},rice_cracker:{keywords:[\"food\",\"japanese\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍘\" src=\"1f358.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},oden:{keywords:[\"food\",\"japanese\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍢\" src=\"1f362.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},dango:{keywords:[\"food\",\"dessert\",\"sweet\",\"japanese\",\"barbecue\",\"meat\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍡\" src=\"1f361.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},shaved_ice:{keywords:[\"hot\",\"dessert\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍧\" src=\"1f367.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},ice_cream:{keywords:[\"food\",\"hot\",\"dessert\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍨\" src=\"1f368.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},icecream:{keywords:[\"food\",\"hot\",\"dessert\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍦\" src=\"1f366.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},pie:{keywords:[\"food\",\"dessert\",\"pastry\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥧\" src=\"1f967.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},cake:{keywords:[\"food\",\"dessert\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍰\" src=\"1f370.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},cupcake:{keywords:[\"food\",\"dessert\",\"bakery\",\"sweet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧁\" src=\"1f9c1.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},moon_cake:{keywords:[\"food\",\"autumn\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥮\" src=\"1f96e.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},birthday:{keywords:[\"food\",\"dessert\",\"cake\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎂\" src=\"1f382.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},custard:{keywords:[\"dessert\",\"food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍮\" src=\"1f36e.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},candy:{keywords:[\"snack\",\"dessert\",\"sweet\",\"lolly\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍬\" src=\"1f36c.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},lollipop:{keywords:[\"food\",\"snack\",\"candy\",\"sweet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍭\" src=\"1f36d.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},chocolate_bar:{keywords:[\"food\",\"snack\",\"dessert\",\"sweet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍫\" src=\"1f36b.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},popcorn:{keywords:[\"food\",\"movie theater\",\"films\",\"snack\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍿\" src=\"1f37f.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},dumpling:{keywords:[\"food\",\"empanada\",\"pierogi\",\"potsticker\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥟\" src=\"1f95f.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},doughnut:{keywords:[\"food\",\"dessert\",\"snack\",\"sweet\",\"donut\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍩\" src=\"1f369.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},cookie:{keywords:[\"food\",\"snack\",\"oreo\",\"chocolate\",\"sweet\",\"dessert\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍪\" src=\"1f36a.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},milk_glass:{keywords:[\"beverage\",\"drink\",\"cow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥛\" src=\"1f95b.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},beer:{keywords:[\"relax\",\"beverage\",\"drink\",\"drunk\",\"party\",\"pub\",\"summer\",\"alcohol\",\"booze\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍺\" src=\"1f37a.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},beers:{keywords:[\"relax\",\"beverage\",\"drink\",\"drunk\",\"party\",\"pub\",\"summer\",\"alcohol\",\"booze\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍻\" src=\"1f37b.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},clinking_glasses:{keywords:[\"beverage\",\"drink\",\"party\",\"alcohol\",\"celebrate\",\"cheers\",\"wine\",\"champagne\",\"toast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥂\" src=\"1f942.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},wine_glass:{keywords:[\"drink\",\"beverage\",\"drunk\",\"alcohol\",\"booze\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍷\" src=\"1f377.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},tumbler_glass:{keywords:[\"drink\",\"beverage\",\"drunk\",\"alcohol\",\"liquor\",\"booze\",\"bourbon\",\"scotch\",\"whisky\",\"glass\",\"shot\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥃\" src=\"1f943.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},cocktail:{keywords:[\"drink\",\"drunk\",\"alcohol\",\"beverage\",\"booze\",\"mojito\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍸\" src=\"1f378.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},tropical_drink:{keywords:[\"beverage\",\"cocktail\",\"summer\",\"beach\",\"alcohol\",\"booze\",\"mojito\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍹\" src=\"1f379.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},champagne:{keywords:[\"drink\",\"wine\",\"bottle\",\"celebration\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍾\" src=\"1f37e.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},sake:{keywords:[\"wine\",\"drink\",\"drunk\",\"beverage\",\"japanese\",\"alcohol\",\"booze\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍶\" src=\"1f376.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},tea:{keywords:[\"drink\",\"bowl\",\"breakfast\",\"green\",\"british\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍵\" src=\"1f375.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},cup_with_straw:{keywords:[\"drink\",\"soda\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥤\" src=\"1f964.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},coffee:{keywords:[\"beverage\",\"caffeine\",\"latte\",\"espresso\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☕\" src=\"2615.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},baby_bottle:{keywords:[\"food\",\"container\",\"milk\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍼\" src=\"1f37c.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},salt:{keywords:[\"condiment\",\"shaker\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧂\" src=\"1f9c2.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},spoon:{keywords:[\"cutlery\",\"kitchen\",\"tableware\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥄\" src=\"1f944.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},fork_and_knife:{keywords:[\"cutlery\",\"kitchen\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍴\" src=\"1f374.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},plate_with_cutlery:{keywords:[\"food\",\"eat\",\"meal\",\"lunch\",\"dinner\",\"restaurant\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🍽\" src=\"1f37d.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},bowl_with_spoon:{keywords:[\"food\",\"breakfast\",\"cereal\",\"oatmeal\",\"porridge\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥣\" src=\"1f963.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},takeout_box:{keywords:[\"food\",\"leftovers\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥡\" src=\"1f961.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},chopsticks:{keywords:[\"food\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥢\" src=\"1f962.png\"/>',fitzpatrick_scale:false,category:\"food_and_drink\"},soccer:{keywords:[\"sports\",\"football\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚽\" src=\"26bd.png\"/>',fitzpatrick_scale:false,category:\"activity\"},basketball:{keywords:[\"sports\",\"balls\",\"NBA\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏀\" src=\"1f3c0.png\"/>',fitzpatrick_scale:false,category:\"activity\"},football:{keywords:[\"sports\",\"balls\",\"NFL\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏈\" src=\"1f3c8.png\"/>',fitzpatrick_scale:false,category:\"activity\"},baseball:{keywords:[\"sports\",\"balls\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚾\" src=\"26be.png\"/>',fitzpatrick_scale:false,category:\"activity\"},softball:{keywords:[\"sports\",\"balls\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥎\" src=\"1f94e.png\"/>',fitzpatrick_scale:false,category:\"activity\"},tennis:{keywords:[\"sports\",\"balls\",\"green\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎾\" src=\"1f3be.png\"/>',fitzpatrick_scale:false,category:\"activity\"},volleyball:{keywords:[\"sports\",\"balls\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏐\" src=\"1f3d0.png\"/>',fitzpatrick_scale:false,category:\"activity\"},rugby_football:{keywords:[\"sports\",\"team\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏉\" src=\"1f3c9.png\"/>',fitzpatrick_scale:false,category:\"activity\"},flying_disc:{keywords:[\"sports\",\"frisbee\",\"ultimate\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥏\" src=\"1f94f.png\"/>',fitzpatrick_scale:false,category:\"activity\"},\"8ball\":{keywords:[\"pool\",\"hobby\",\"game\",\"luck\",\"magic\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎱\" src=\"1f3b1.png\"/>',fitzpatrick_scale:false,category:\"activity\"},golf:{keywords:[\"sports\",\"business\",\"flag\",\"hole\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛳\" src=\"26f3.png\"/>',fitzpatrick_scale:false,category:\"activity\"},golfing_woman:{keywords:[\"sports\",\"business\",\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏌️‍♀️\" src=\"1f3cc-fe0f-200d-2640-fe0f.png\"/>',fitzpatrick_scale:false,category:\"activity\"},golfing_man:{keywords:[\"sports\",\"business\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏌\" src=\"1f3cc.png\"/>',fitzpatrick_scale:true,category:\"activity\"},ping_pong:{keywords:[\"sports\",\"pingpong\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏓\" src=\"1f3d3.png\"/>',fitzpatrick_scale:false,category:\"activity\"},badminton:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏸\" src=\"1f3f8.png\"/>',fitzpatrick_scale:false,category:\"activity\"},goal_net:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥅\" src=\"1f945.png\"/>',fitzpatrick_scale:false,category:\"activity\"},ice_hockey:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏒\" src=\"1f3d2.png\"/>',fitzpatrick_scale:false,category:\"activity\"},field_hockey:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏑\" src=\"1f3d1.png\"/>',fitzpatrick_scale:false,category:\"activity\"},lacrosse:{keywords:[\"sports\",\"ball\",\"stick\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥍\" src=\"1f94d.png\"/>',fitzpatrick_scale:false,category:\"activity\"},cricket:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏏\" src=\"1f3cf.png\"/>',fitzpatrick_scale:false,category:\"activity\"},ski:{keywords:[\"sports\",\"winter\",\"cold\",\"snow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎿\" src=\"1f3bf.png\"/>',fitzpatrick_scale:false,category:\"activity\"},skier:{keywords:[\"sports\",\"winter\",\"snow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛷\" src=\"26f7.png\"/>',fitzpatrick_scale:false,category:\"activity\"},snowboarder:{keywords:[\"sports\",\"winter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏂\" src=\"1f3c2.png\"/>',fitzpatrick_scale:true,category:\"activity\"},person_fencing:{keywords:[\"sports\",\"fencing\",\"sword\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤺\" src=\"1f93a.png\"/>',fitzpatrick_scale:false,category:\"activity\"},women_wrestling:{keywords:[\"sports\",\"wrestlers\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤼‍♀️\" src=\"1f93c-200d-2640-fe0f.png\"/>',fitzpatrick_scale:false,category:\"activity\"},men_wrestling:{keywords:[\"sports\",\"wrestlers\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤼‍♂️\" src=\"1f93c-200d-2642-fe0f.png\"/>',fitzpatrick_scale:false,category:\"activity\"},woman_cartwheeling:{keywords:[\"gymnastics\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤸‍♀️\" src=\"1f938-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},man_cartwheeling:{keywords:[\"gymnastics\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤸‍♂️\" src=\"1f938-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},woman_playing_handball:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤾‍♀️\" src=\"1f93e-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},man_playing_handball:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤾‍♂️\" src=\"1f93e-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},ice_skate:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛸\" src=\"26f8.png\"/>',fitzpatrick_scale:false,category:\"activity\"},curling_stone:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥌\" src=\"1f94c.png\"/>',fitzpatrick_scale:false,category:\"activity\"},skateboard:{keywords:[\"board\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛹\" src=\"1f6f9.png\"/>',fitzpatrick_scale:false,category:\"activity\"},sled:{keywords:[\"sleigh\",\"luge\",\"toboggan\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛷\" src=\"1f6f7.png\"/>',fitzpatrick_scale:false,category:\"activity\"},bow_and_arrow:{keywords:[\"sports\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏹\" src=\"1f3f9.png\"/>',fitzpatrick_scale:false,category:\"activity\"},fishing_pole_and_fish:{keywords:[\"food\",\"hobby\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎣\" src=\"1f3a3.png\"/>',fitzpatrick_scale:false,category:\"activity\"},boxing_glove:{keywords:[\"sports\",\"fighting\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥊\" src=\"1f94a.png\"/>',fitzpatrick_scale:false,category:\"activity\"},martial_arts_uniform:{keywords:[\"judo\",\"karate\",\"taekwondo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥋\" src=\"1f94b.png\"/>',fitzpatrick_scale:false,category:\"activity\"},rowing_woman:{keywords:[\"sports\",\"hobby\",\"water\",\"ship\",\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚣‍♀️\" src=\"1f6a3-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},rowing_man:{keywords:[\"sports\",\"hobby\",\"water\",\"ship\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚣\" src=\"1f6a3.png\"/>',fitzpatrick_scale:true,category:\"activity\"},climbing_woman:{keywords:[\"sports\",\"hobby\",\"woman\",\"female\",\"rock\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧗‍♀️\" src=\"1f9d7-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},climbing_man:{keywords:[\"sports\",\"hobby\",\"man\",\"male\",\"rock\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧗‍♂️\" src=\"1f9d7-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},swimming_woman:{keywords:[\"sports\",\"exercise\",\"human\",\"athlete\",\"water\",\"summer\",\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏊‍♀️\" src=\"1f3ca-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},swimming_man:{keywords:[\"sports\",\"exercise\",\"human\",\"athlete\",\"water\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏊\" src=\"1f3ca.png\"/>',fitzpatrick_scale:true,category:\"activity\"},woman_playing_water_polo:{keywords:[\"sports\",\"pool\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤽‍♀️\" src=\"1f93d-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},man_playing_water_polo:{keywords:[\"sports\",\"pool\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤽‍♂️\" src=\"1f93d-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},woman_in_lotus_position:{keywords:[\"woman\",\"female\",\"meditation\",\"yoga\",\"serenity\",\"zen\",\"mindfulness\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧘‍♀️\" src=\"1f9d8-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},man_in_lotus_position:{keywords:[\"man\",\"male\",\"meditation\",\"yoga\",\"serenity\",\"zen\",\"mindfulness\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧘‍♂️\" src=\"1f9d8-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},surfing_woman:{keywords:[\"sports\",\"ocean\",\"sea\",\"summer\",\"beach\",\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏄‍♀️\" src=\"1f3c4-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},surfing_man:{keywords:[\"sports\",\"ocean\",\"sea\",\"summer\",\"beach\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏄\" src=\"1f3c4.png\"/>',fitzpatrick_scale:true,category:\"activity\"},bath:{keywords:[\"clean\",\"shower\",\"bathroom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛀\" src=\"1f6c0.png\"/>',fitzpatrick_scale:true,category:\"activity\"},basketball_woman:{keywords:[\"sports\",\"human\",\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛹️‍♀️\" src=\"26f9-fe0f-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},basketball_man:{keywords:[\"sports\",\"human\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛹\" src=\"26f9.png\"/>',fitzpatrick_scale:true,category:\"activity\"},weight_lifting_woman:{keywords:[\"sports\",\"training\",\"exercise\",\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏋️‍♀️\" src=\"1f3cb-fe0f-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},weight_lifting_man:{keywords:[\"sports\",\"training\",\"exercise\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏋\" src=\"1f3cb.png\"/>',fitzpatrick_scale:true,category:\"activity\"},biking_woman:{keywords:[\"sports\",\"bike\",\"exercise\",\"hipster\",\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚴‍♀️\" src=\"1f6b4-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},biking_man:{keywords:[\"sports\",\"bike\",\"exercise\",\"hipster\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚴\" src=\"1f6b4.png\"/>',fitzpatrick_scale:true,category:\"activity\"},mountain_biking_woman:{keywords:[\"transportation\",\"sports\",\"human\",\"race\",\"bike\",\"woman\",\"female\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚵‍♀️\" src=\"1f6b5-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},mountain_biking_man:{keywords:[\"transportation\",\"sports\",\"human\",\"race\",\"bike\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚵\" src=\"1f6b5.png\"/>',fitzpatrick_scale:true,category:\"activity\"},horse_racing:{keywords:[\"animal\",\"betting\",\"competition\",\"gambling\",\"luck\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏇\" src=\"1f3c7.png\"/>',fitzpatrick_scale:true,category:\"activity\"},business_suit_levitating:{keywords:[\"suit\",\"business\",\"levitate\",\"hover\",\"jump\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕴\" src=\"1f574.png\"/>',fitzpatrick_scale:true,category:\"activity\"},trophy:{keywords:[\"win\",\"award\",\"contest\",\"place\",\"ftw\",\"ceremony\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏆\" src=\"1f3c6.png\"/>',fitzpatrick_scale:false,category:\"activity\"},running_shirt_with_sash:{keywords:[\"play\",\"pageant\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎽\" src=\"1f3bd.png\"/>',fitzpatrick_scale:false,category:\"activity\"},medal_sports:{keywords:[\"award\",\"winning\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏅\" src=\"1f3c5.png\"/>',fitzpatrick_scale:false,category:\"activity\"},medal_military:{keywords:[\"award\",\"winning\",\"army\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎖\" src=\"1f396.png\"/>',fitzpatrick_scale:false,category:\"activity\"},\"1st_place_medal\":{keywords:[\"award\",\"winning\",\"first\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥇\" src=\"1f947.png\"/>',fitzpatrick_scale:false,category:\"activity\"},\"2nd_place_medal\":{keywords:[\"award\",\"second\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥈\" src=\"1f948.png\"/>',fitzpatrick_scale:false,category:\"activity\"},\"3rd_place_medal\":{keywords:[\"award\",\"third\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥉\" src=\"1f949.png\"/>',fitzpatrick_scale:false,category:\"activity\"},reminder_ribbon:{keywords:[\"sports\",\"cause\",\"support\",\"awareness\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎗\" src=\"1f397.png\"/>',fitzpatrick_scale:false,category:\"activity\"},rosette:{keywords:[\"flower\",\"decoration\",\"military\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏵\" src=\"1f3f5.png\"/>',fitzpatrick_scale:false,category:\"activity\"},ticket:{keywords:[\"event\",\"concert\",\"pass\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎫\" src=\"1f3ab.png\"/>',fitzpatrick_scale:false,category:\"activity\"},tickets:{keywords:[\"sports\",\"concert\",\"entrance\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎟\" src=\"1f39f.png\"/>',fitzpatrick_scale:false,category:\"activity\"},performing_arts:{keywords:[\"acting\",\"theater\",\"drama\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎭\" src=\"1f3ad.png\"/>',fitzpatrick_scale:false,category:\"activity\"},art:{keywords:[\"design\",\"paint\",\"draw\",\"colors\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎨\" src=\"1f3a8.png\"/>',fitzpatrick_scale:false,category:\"activity\"},circus_tent:{keywords:[\"festival\",\"carnival\",\"party\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎪\" src=\"1f3aa.png\"/>',fitzpatrick_scale:false,category:\"activity\"},woman_juggling:{keywords:[\"juggle\",\"balance\",\"skill\",\"multitask\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤹‍♀️\" src=\"1f939-200d-2640-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},man_juggling:{keywords:[\"juggle\",\"balance\",\"skill\",\"multitask\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🤹‍♂️\" src=\"1f939-200d-2642-fe0f.png\"/>',fitzpatrick_scale:true,category:\"activity\"},microphone:{keywords:[\"sound\",\"music\",\"PA\",\"sing\",\"talkshow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎤\" src=\"1f3a4.png\"/>',fitzpatrick_scale:false,category:\"activity\"},headphones:{keywords:[\"music\",\"score\",\"gadgets\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎧\" src=\"1f3a7.png\"/>',fitzpatrick_scale:false,category:\"activity\"},musical_score:{keywords:[\"treble\",\"clef\",\"compose\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎼\" src=\"1f3bc.png\"/>',fitzpatrick_scale:false,category:\"activity\"},musical_keyboard:{keywords:[\"piano\",\"instrument\",\"compose\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎹\" src=\"1f3b9.png\"/>',fitzpatrick_scale:false,category:\"activity\"},drum:{keywords:[\"music\",\"instrument\",\"drumsticks\",\"snare\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🥁\" src=\"1f941.png\"/>',fitzpatrick_scale:false,category:\"activity\"},saxophone:{keywords:[\"music\",\"instrument\",\"jazz\",\"blues\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎷\" src=\"1f3b7.png\"/>',fitzpatrick_scale:false,category:\"activity\"},trumpet:{keywords:[\"music\",\"brass\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎺\" src=\"1f3ba.png\"/>',fitzpatrick_scale:false,category:\"activity\"},guitar:{keywords:[\"music\",\"instrument\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎸\" src=\"1f3b8.png\"/>',fitzpatrick_scale:false,category:\"activity\"},violin:{keywords:[\"music\",\"instrument\",\"orchestra\",\"symphony\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎻\" src=\"1f3bb.png\"/>',fitzpatrick_scale:false,category:\"activity\"},clapper:{keywords:[\"movie\",\"film\",\"record\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎬\" src=\"1f3ac.png\"/>',fitzpatrick_scale:false,category:\"activity\"},video_game:{keywords:[\"play\",\"console\",\"PS4\",\"controller\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎮\" src=\"1f3ae.png\"/>',fitzpatrick_scale:false,category:\"activity\"},space_invader:{keywords:[\"game\",\"arcade\",\"play\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"👾\" src=\"1f47e.png\"/>',fitzpatrick_scale:false,category:\"activity\"},dart:{keywords:[\"game\",\"play\",\"bar\",\"target\",\"bullseye\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎯\" src=\"1f3af.png\"/>',fitzpatrick_scale:false,category:\"activity\"},game_die:{keywords:[\"dice\",\"random\",\"tabletop\",\"play\",\"luck\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎲\" src=\"1f3b2.png\"/>',fitzpatrick_scale:false,category:\"activity\"},chess_pawn:{keywords:[\"expendable\"],char:\"♟\",fitzpatrick_scale:false,category:\"activity\"},slot_machine:{keywords:[\"bet\",\"gamble\",\"vegas\",\"fruit machine\",\"luck\",\"casino\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎰\" src=\"1f3b0.png\"/>',fitzpatrick_scale:false,category:\"activity\"},jigsaw:{keywords:[\"interlocking\",\"puzzle\",\"piece\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧩\" src=\"1f9e9.png\"/>',fitzpatrick_scale:false,category:\"activity\"},bowling:{keywords:[\"sports\",\"fun\",\"play\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎳\" src=\"1f3b3.png\"/>',fitzpatrick_scale:false,category:\"activity\"},red_car:{keywords:[\"red\",\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚗\" src=\"1f697.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},taxi:{keywords:[\"uber\",\"vehicle\",\"cars\",\"transportation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚕\" src=\"1f695.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},blue_car:{keywords:[\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚙\" src=\"1f699.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},bus:{keywords:[\"car\",\"vehicle\",\"transportation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚌\" src=\"1f68c.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},trolleybus:{keywords:[\"bart\",\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚎\" src=\"1f68e.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},racing_car:{keywords:[\"sports\",\"race\",\"fast\",\"formula\",\"f1\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏎\" src=\"1f3ce.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},police_car:{keywords:[\"vehicle\",\"cars\",\"transportation\",\"law\",\"legal\",\"enforcement\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚓\" src=\"1f693.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},ambulance:{keywords:[\"health\",\"911\",\"hospital\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚑\" src=\"1f691.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},fire_engine:{keywords:[\"transportation\",\"cars\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚒\" src=\"1f692.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},minibus:{keywords:[\"vehicle\",\"car\",\"transportation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚐\" src=\"1f690.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},truck:{keywords:[\"cars\",\"transportation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚚\" src=\"1f69a.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},articulated_lorry:{keywords:[\"vehicle\",\"cars\",\"transportation\",\"express\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚛\" src=\"1f69b.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},tractor:{keywords:[\"vehicle\",\"car\",\"farming\",\"agriculture\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚜\" src=\"1f69c.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},kick_scooter:{keywords:[\"vehicle\",\"kick\",\"razor\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛴\" src=\"1f6f4.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},motorcycle:{keywords:[\"race\",\"sports\",\"fast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏍\" src=\"1f3cd.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},bike:{keywords:[\"sports\",\"bicycle\",\"exercise\",\"hipster\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚲\" src=\"1f6b2.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},motor_scooter:{keywords:[\"vehicle\",\"vespa\",\"sasha\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛵\" src=\"1f6f5.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},rotating_light:{keywords:[\"police\",\"ambulance\",\"911\",\"emergency\",\"alert\",\"error\",\"pinged\",\"law\",\"legal\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚨\" src=\"1f6a8.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},oncoming_police_car:{keywords:[\"vehicle\",\"law\",\"legal\",\"enforcement\",\"911\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚔\" src=\"1f694.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},oncoming_bus:{keywords:[\"vehicle\",\"transportation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚍\" src=\"1f68d.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},oncoming_automobile:{keywords:[\"car\",\"vehicle\",\"transportation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚘\" src=\"1f698.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},oncoming_taxi:{keywords:[\"vehicle\",\"cars\",\"uber\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚖\" src=\"1f696.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},aerial_tramway:{keywords:[\"transportation\",\"vehicle\",\"ski\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚡\" src=\"1f6a1.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},mountain_cableway:{keywords:[\"transportation\",\"vehicle\",\"ski\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚠\" src=\"1f6a0.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},suspension_railway:{keywords:[\"vehicle\",\"transportation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚟\" src=\"1f69f.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},railway_car:{keywords:[\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚃\" src=\"1f683.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},train:{keywords:[\"transportation\",\"vehicle\",\"carriage\",\"public\",\"travel\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚋\" src=\"1f68b.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},monorail:{keywords:[\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚝\" src=\"1f69d.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},bullettrain_side:{keywords:[\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚄\" src=\"1f684.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},bullettrain_front:{keywords:[\"transportation\",\"vehicle\",\"speed\",\"fast\",\"public\",\"travel\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚅\" src=\"1f685.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},light_rail:{keywords:[\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚈\" src=\"1f688.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},mountain_railway:{keywords:[\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚞\" src=\"1f69e.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},steam_locomotive:{keywords:[\"transportation\",\"vehicle\",\"train\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚂\" src=\"1f682.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},train2:{keywords:[\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚆\" src=\"1f686.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},metro:{keywords:[\"transportation\",\"blue-square\",\"mrt\",\"underground\",\"tube\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚇\" src=\"1f687.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},tram:{keywords:[\"transportation\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚊\" src=\"1f68a.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},station:{keywords:[\"transportation\",\"vehicle\",\"public\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚉\" src=\"1f689.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},flying_saucer:{keywords:[\"transportation\",\"vehicle\",\"ufo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛸\" src=\"1f6f8.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},helicopter:{keywords:[\"transportation\",\"vehicle\",\"fly\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚁\" src=\"1f681.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},small_airplane:{keywords:[\"flight\",\"transportation\",\"fly\",\"vehicle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛩\" src=\"1f6e9.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},airplane:{keywords:[\"vehicle\",\"transportation\",\"flight\",\"fly\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✈️\" src=\"2708.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},flight_departure:{keywords:[\"airport\",\"flight\",\"landing\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛫\" src=\"1f6eb.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},flight_arrival:{keywords:[\"airport\",\"flight\",\"boarding\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛬\" src=\"1f6ec.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},sailboat:{keywords:[\"ship\",\"summer\",\"transportation\",\"water\",\"sailing\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛵\" src=\"26f5.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},motor_boat:{keywords:[\"ship\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛥\" src=\"1f6e5.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},speedboat:{keywords:[\"ship\",\"transportation\",\"vehicle\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚤\" src=\"1f6a4.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},ferry:{keywords:[\"boat\",\"ship\",\"yacht\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛴\" src=\"26f4.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},passenger_ship:{keywords:[\"yacht\",\"cruise\",\"ferry\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛳\" src=\"1f6f3.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},rocket:{keywords:[\"launch\",\"ship\",\"staffmode\",\"NASA\",\"outer space\",\"outer_space\",\"fly\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚀\" src=\"1f680.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},artificial_satellite:{keywords:[\"communication\",\"gps\",\"orbit\",\"spaceflight\",\"NASA\",\"ISS\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛰\" src=\"1f6f0.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},seat:{keywords:[\"sit\",\"airplane\",\"transport\",\"bus\",\"flight\",\"fly\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💺\" src=\"1f4ba.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},canoe:{keywords:[\"boat\",\"paddle\",\"water\",\"ship\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛶\" src=\"1f6f6.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},anchor:{keywords:[\"ship\",\"ferry\",\"sea\",\"boat\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚓\" src=\"2693.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},construction:{keywords:[\"wip\",\"progress\",\"caution\",\"warning\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚧\" src=\"1f6a7.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},fuelpump:{keywords:[\"gas station\",\"petroleum\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛽\" src=\"26fd.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},busstop:{keywords:[\"transportation\",\"wait\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚏\" src=\"1f68f.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},vertical_traffic_light:{keywords:[\"transportation\",\"driving\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚦\" src=\"1f6a6.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},traffic_light:{keywords:[\"transportation\",\"signal\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚥\" src=\"1f6a5.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},checkered_flag:{keywords:[\"contest\",\"finishline\",\"race\",\"gokart\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏁\" src=\"1f3c1.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},ship:{keywords:[\"transportation\",\"titanic\",\"deploy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚢\" src=\"1f6a2.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},ferris_wheel:{keywords:[\"photo\",\"carnival\",\"londoneye\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎡\" src=\"1f3a1.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},roller_coaster:{keywords:[\"carnival\",\"playground\",\"photo\",\"fun\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎢\" src=\"1f3a2.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},carousel_horse:{keywords:[\"photo\",\"carnival\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎠\" src=\"1f3a0.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},building_construction:{keywords:[\"wip\",\"working\",\"progress\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏗\" src=\"1f3d7.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},foggy:{keywords:[\"photo\",\"mountain\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌁\" src=\"1f301.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},tokyo_tower:{keywords:[\"photo\",\"japanese\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗼\" src=\"1f5fc.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},factory:{keywords:[\"building\",\"industry\",\"pollution\",\"smoke\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏭\" src=\"1f3ed.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},fountain:{keywords:[\"photo\",\"summer\",\"water\",\"fresh\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛲\" src=\"26f2.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},rice_scene:{keywords:[\"photo\",\"japan\",\"asia\",\"tsukimi\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎑\" src=\"1f391.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},mountain:{keywords:[\"photo\",\"nature\",\"environment\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛰\" src=\"26f0.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},mountain_snow:{keywords:[\"photo\",\"nature\",\"environment\",\"winter\",\"cold\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏔\" src=\"1f3d4.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},mount_fuji:{keywords:[\"photo\",\"mountain\",\"nature\",\"japanese\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗻\" src=\"1f5fb.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},volcano:{keywords:[\"photo\",\"nature\",\"disaster\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌋\" src=\"1f30b.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},japan:{keywords:[\"nation\",\"country\",\"japanese\",\"asia\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗾\" src=\"1f5fe.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},camping:{keywords:[\"photo\",\"outdoors\",\"tent\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏕\" src=\"1f3d5.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},tent:{keywords:[\"photo\",\"camping\",\"outdoors\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛺\" src=\"26fa.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},national_park:{keywords:[\"photo\",\"environment\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏞\" src=\"1f3de.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},motorway:{keywords:[\"road\",\"cupertino\",\"interstate\",\"highway\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛣\" src=\"1f6e3.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},railway_track:{keywords:[\"train\",\"transportation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛤\" src=\"1f6e4.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},sunrise:{keywords:[\"morning\",\"view\",\"vacation\",\"photo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌅\" src=\"1f305.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},sunrise_over_mountains:{keywords:[\"view\",\"vacation\",\"photo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌄\" src=\"1f304.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},desert:{keywords:[\"photo\",\"warm\",\"saharah\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏜\" src=\"1f3dc.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},beach_umbrella:{keywords:[\"weather\",\"summer\",\"sunny\",\"sand\",\"mojito\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏖\" src=\"1f3d6.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},desert_island:{keywords:[\"photo\",\"tropical\",\"mojito\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏝\" src=\"1f3dd.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},city_sunrise:{keywords:[\"photo\",\"good morning\",\"dawn\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌇\" src=\"1f307.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},city_sunset:{keywords:[\"photo\",\"evening\",\"sky\",\"buildings\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌆\" src=\"1f306.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},cityscape:{keywords:[\"photo\",\"night life\",\"urban\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏙\" src=\"1f3d9.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},night_with_stars:{keywords:[\"evening\",\"city\",\"downtown\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌃\" src=\"1f303.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},bridge_at_night:{keywords:[\"photo\",\"sanfrancisco\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌉\" src=\"1f309.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},milky_way:{keywords:[\"photo\",\"space\",\"stars\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌌\" src=\"1f30c.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},stars:{keywords:[\"night\",\"photo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌠\" src=\"1f320.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},sparkler:{keywords:[\"stars\",\"night\",\"shine\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎇\" src=\"1f387.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},fireworks:{keywords:[\"photo\",\"festival\",\"carnival\",\"congratulations\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎆\" src=\"1f386.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},rainbow:{keywords:[\"nature\",\"happy\",\"unicorn_face\",\"photo\",\"sky\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌈\" src=\"1f308.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},houses:{keywords:[\"buildings\",\"photo\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏘\" src=\"1f3d8.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},european_castle:{keywords:[\"building\",\"royalty\",\"history\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏰\" src=\"1f3f0.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},japanese_castle:{keywords:[\"photo\",\"building\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏯\" src=\"1f3ef.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},stadium:{keywords:[\"photo\",\"place\",\"sports\",\"concert\",\"venue\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏟\" src=\"1f3df.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},statue_of_liberty:{keywords:[\"american\",\"newyork\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗽\" src=\"1f5fd.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},house:{keywords:[\"building\",\"home\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏠\" src=\"1f3e0.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},house_with_garden:{keywords:[\"home\",\"plant\",\"nature\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏡\" src=\"1f3e1.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},derelict_house:{keywords:[\"abandon\",\"evict\",\"broken\",\"building\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏚\" src=\"1f3da.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},office:{keywords:[\"building\",\"bureau\",\"work\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏢\" src=\"1f3e2.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},department_store:{keywords:[\"building\",\"shopping\",\"mall\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏬\" src=\"1f3ec.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},post_office:{keywords:[\"building\",\"envelope\",\"communication\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏣\" src=\"1f3e3.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},european_post_office:{keywords:[\"building\",\"email\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏤\" src=\"1f3e4.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},hospital:{keywords:[\"building\",\"health\",\"surgery\",\"doctor\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏥\" src=\"1f3e5.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},bank:{keywords:[\"building\",\"money\",\"sales\",\"cash\",\"business\",\"enterprise\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏦\" src=\"1f3e6.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},hotel:{keywords:[\"building\",\"accomodation\",\"checkin\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏨\" src=\"1f3e8.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},convenience_store:{keywords:[\"building\",\"shopping\",\"groceries\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏪\" src=\"1f3ea.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},school:{keywords:[\"building\",\"student\",\"education\",\"learn\",\"teach\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏫\" src=\"1f3eb.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},love_hotel:{keywords:[\"like\",\"affection\",\"dating\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏩\" src=\"1f3e9.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},wedding:{keywords:[\"love\",\"like\",\"affection\",\"couple\",\"marriage\",\"bride\",\"groom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💒\" src=\"1f492.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},classical_building:{keywords:[\"art\",\"culture\",\"history\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏛\" src=\"1f3db.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},church:{keywords:[\"building\",\"religion\",\"christ\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛪\" src=\"26ea.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},mosque:{keywords:[\"islam\",\"worship\",\"minaret\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕌\" src=\"1f54c.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},synagogue:{keywords:[\"judaism\",\"worship\",\"temple\",\"jewish\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕍\" src=\"1f54d.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},kaaba:{keywords:[\"mecca\",\"mosque\",\"islam\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕋\" src=\"1f54b.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},shinto_shrine:{keywords:[\"temple\",\"japan\",\"kyoto\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛩\" src=\"26e9.png\"/>',fitzpatrick_scale:false,category:\"travel_and_places\"},watch:{keywords:[\"time\",\"accessories\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⌚\" src=\"231a.png\"/>',fitzpatrick_scale:false,category:\"objects\"},iphone:{keywords:[\"technology\",\"apple\",\"gadgets\",\"dial\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📱\" src=\"1f4f1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},calling:{keywords:[\"iphone\",\"incoming\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📲\" src=\"1f4f2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},computer:{keywords:[\"technology\",\"laptop\",\"screen\",\"display\",\"monitor\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💻\" src=\"1f4bb.png\"/>',fitzpatrick_scale:false,category:\"objects\"},keyboard:{keywords:[\"technology\",\"computer\",\"type\",\"input\",\"text\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⌨\" src=\"2328.png\"/>',fitzpatrick_scale:false,category:\"objects\"},desktop_computer:{keywords:[\"technology\",\"computing\",\"screen\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖥\" src=\"1f5a5.png\"/>',fitzpatrick_scale:false,category:\"objects\"},printer:{keywords:[\"paper\",\"ink\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖨\" src=\"1f5a8.png\"/>',fitzpatrick_scale:false,category:\"objects\"},computer_mouse:{keywords:[\"click\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖱\" src=\"1f5b1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},trackball:{keywords:[\"technology\",\"trackpad\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖲\" src=\"1f5b2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},joystick:{keywords:[\"game\",\"play\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕹\" src=\"1f579.png\"/>',fitzpatrick_scale:false,category:\"objects\"},clamp:{keywords:[\"tool\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗜\" src=\"1f5dc.png\"/>',fitzpatrick_scale:false,category:\"objects\"},minidisc:{keywords:[\"technology\",\"record\",\"data\",\"disk\",\"90s\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💽\" src=\"1f4bd.png\"/>',fitzpatrick_scale:false,category:\"objects\"},floppy_disk:{keywords:[\"oldschool\",\"technology\",\"save\",\"90s\",\"80s\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💾\" src=\"1f4be.png\"/>',fitzpatrick_scale:false,category:\"objects\"},cd:{keywords:[\"technology\",\"dvd\",\"disk\",\"disc\",\"90s\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💿\" src=\"1f4bf.png\"/>',fitzpatrick_scale:false,category:\"objects\"},dvd:{keywords:[\"cd\",\"disk\",\"disc\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📀\" src=\"1f4c0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},vhs:{keywords:[\"record\",\"video\",\"oldschool\",\"90s\",\"80s\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📼\" src=\"1f4fc.png\"/>',fitzpatrick_scale:false,category:\"objects\"},camera:{keywords:[\"gadgets\",\"photography\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📷\" src=\"1f4f7.png\"/>',fitzpatrick_scale:false,category:\"objects\"},camera_flash:{keywords:[\"photography\",\"gadgets\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📸\" src=\"1f4f8.png\"/>',fitzpatrick_scale:false,category:\"objects\"},video_camera:{keywords:[\"film\",\"record\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📹\" src=\"1f4f9.png\"/>',fitzpatrick_scale:false,category:\"objects\"},movie_camera:{keywords:[\"film\",\"record\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎥\" src=\"1f3a5.png\"/>',fitzpatrick_scale:false,category:\"objects\"},film_projector:{keywords:[\"video\",\"tape\",\"record\",\"movie\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📽\" src=\"1f4fd.png\"/>',fitzpatrick_scale:false,category:\"objects\"},film_strip:{keywords:[\"movie\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎞\" src=\"1f39e.png\"/>',fitzpatrick_scale:false,category:\"objects\"},telephone_receiver:{keywords:[\"technology\",\"communication\",\"dial\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📞\" src=\"1f4de.png\"/>',fitzpatrick_scale:false,category:\"objects\"},phone:{keywords:[\"technology\",\"communication\",\"dial\",\"telephone\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☎️\" src=\"260e.png\"/>',fitzpatrick_scale:false,category:\"objects\"},pager:{keywords:[\"bbcall\",\"oldschool\",\"90s\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📟\" src=\"1f4df.png\"/>',fitzpatrick_scale:false,category:\"objects\"},fax:{keywords:[\"communication\",\"technology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📠\" src=\"1f4e0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},tv:{keywords:[\"technology\",\"program\",\"oldschool\",\"show\",\"television\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📺\" src=\"1f4fa.png\"/>',fitzpatrick_scale:false,category:\"objects\"},radio:{keywords:[\"communication\",\"music\",\"podcast\",\"program\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📻\" src=\"1f4fb.png\"/>',fitzpatrick_scale:false,category:\"objects\"},studio_microphone:{keywords:[\"sing\",\"recording\",\"artist\",\"talkshow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎙\" src=\"1f399.png\"/>',fitzpatrick_scale:false,category:\"objects\"},level_slider:{keywords:[\"scale\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎚\" src=\"1f39a.png\"/>',fitzpatrick_scale:false,category:\"objects\"},control_knobs:{keywords:[\"dial\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎛\" src=\"1f39b.png\"/>',fitzpatrick_scale:false,category:\"objects\"},compass:{keywords:[\"magnetic\",\"navigation\",\"orienteering\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧭\" src=\"1f9ed.png\"/>',fitzpatrick_scale:false,category:\"objects\"},stopwatch:{keywords:[\"time\",\"deadline\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏱\" src=\"23f1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},timer_clock:{keywords:[\"alarm\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏲\" src=\"23f2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},alarm_clock:{keywords:[\"time\",\"wake\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏰\" src=\"23f0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},mantelpiece_clock:{keywords:[\"time\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕰\" src=\"1f570.png\"/>',fitzpatrick_scale:false,category:\"objects\"},hourglass_flowing_sand:{keywords:[\"oldschool\",\"time\",\"countdown\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏳\" src=\"23f3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},hourglass:{keywords:[\"time\",\"clock\",\"oldschool\",\"limit\",\"exam\",\"quiz\",\"test\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⌛\" src=\"231b.png\"/>',fitzpatrick_scale:false,category:\"objects\"},satellite:{keywords:[\"communication\",\"future\",\"radio\",\"space\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📡\" src=\"1f4e1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},battery:{keywords:[\"power\",\"energy\",\"sustain\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔋\" src=\"1f50b.png\"/>',fitzpatrick_scale:false,category:\"objects\"},electric_plug:{keywords:[\"charger\",\"power\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔌\" src=\"1f50c.png\"/>',fitzpatrick_scale:false,category:\"objects\"},bulb:{keywords:[\"light\",\"electricity\",\"idea\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💡\" src=\"1f4a1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},flashlight:{keywords:[\"dark\",\"camping\",\"sight\",\"night\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔦\" src=\"1f526.png\"/>',fitzpatrick_scale:false,category:\"objects\"},candle:{keywords:[\"fire\",\"wax\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕯\" src=\"1f56f.png\"/>',fitzpatrick_scale:false,category:\"objects\"},fire_extinguisher:{keywords:[\"quench\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧯\" src=\"1f9ef.png\"/>',fitzpatrick_scale:false,category:\"objects\"},wastebasket:{keywords:[\"bin\",\"trash\",\"rubbish\",\"garbage\",\"toss\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗑\" src=\"1f5d1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},oil_drum:{keywords:[\"barrell\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛢\" src=\"1f6e2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},money_with_wings:{keywords:[\"dollar\",\"bills\",\"payment\",\"sale\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💸\" src=\"1f4b8.png\"/>',fitzpatrick_scale:false,category:\"objects\"},dollar:{keywords:[\"money\",\"sales\",\"bill\",\"currency\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💵\" src=\"1f4b5.png\"/>',fitzpatrick_scale:false,category:\"objects\"},yen:{keywords:[\"money\",\"sales\",\"japanese\",\"dollar\",\"currency\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💴\" src=\"1f4b4.png\"/>',fitzpatrick_scale:false,category:\"objects\"},euro:{keywords:[\"money\",\"sales\",\"dollar\",\"currency\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💶\" src=\"1f4b6.png\"/>',fitzpatrick_scale:false,category:\"objects\"},pound:{keywords:[\"british\",\"sterling\",\"money\",\"sales\",\"bills\",\"uk\",\"england\",\"currency\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💷\" src=\"1f4b7.png\"/>',fitzpatrick_scale:false,category:\"objects\"},moneybag:{keywords:[\"dollar\",\"payment\",\"coins\",\"sale\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💰\" src=\"1f4b0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},credit_card:{keywords:[\"money\",\"sales\",\"dollar\",\"bill\",\"payment\",\"shopping\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💳\" src=\"1f4b3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},gem:{keywords:[\"blue\",\"ruby\",\"diamond\",\"jewelry\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💎\" src=\"1f48e.png\"/>',fitzpatrick_scale:false,category:\"objects\"},balance_scale:{keywords:[\"law\",\"fairness\",\"weight\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚖\" src=\"2696.png\"/>',fitzpatrick_scale:false,category:\"objects\"},toolbox:{keywords:[\"tools\",\"diy\",\"fix\",\"maintainer\",\"mechanic\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧰\" src=\"1f9f0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},wrench:{keywords:[\"tools\",\"diy\",\"ikea\",\"fix\",\"maintainer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔧\" src=\"1f527.png\"/>',fitzpatrick_scale:false,category:\"objects\"},hammer:{keywords:[\"tools\",\"build\",\"create\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔨\" src=\"1f528.png\"/>',fitzpatrick_scale:false,category:\"objects\"},hammer_and_pick:{keywords:[\"tools\",\"build\",\"create\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚒\" src=\"2692.png\"/>',fitzpatrick_scale:false,category:\"objects\"},hammer_and_wrench:{keywords:[\"tools\",\"build\",\"create\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛠\" src=\"1f6e0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},pick:{keywords:[\"tools\",\"dig\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛏\" src=\"26cf.png\"/>',fitzpatrick_scale:false,category:\"objects\"},nut_and_bolt:{keywords:[\"handy\",\"tools\",\"fix\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔩\" src=\"1f529.png\"/>',fitzpatrick_scale:false,category:\"objects\"},gear:{keywords:[\"cog\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚙\" src=\"2699.png\"/>',fitzpatrick_scale:false,category:\"objects\"},brick:{keywords:[\"bricks\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧱\" src=\"1f9f1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},chains:{keywords:[\"lock\",\"arrest\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛓\" src=\"26d3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},magnet:{keywords:[\"attraction\",\"magnetic\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧲\" src=\"1f9f2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},gun:{keywords:[\"violence\",\"weapon\",\"pistol\",\"revolver\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔫\" src=\"1f52b.png\"/>',fitzpatrick_scale:false,category:\"objects\"},bomb:{keywords:[\"boom\",\"explode\",\"explosion\",\"terrorism\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💣\" src=\"1f4a3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},firecracker:{keywords:[\"dynamite\",\"boom\",\"explode\",\"explosion\",\"explosive\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧨\" src=\"1f9e8.png\"/>',fitzpatrick_scale:false,category:\"objects\"},hocho:{keywords:[\"knife\",\"blade\",\"cutlery\",\"kitchen\",\"weapon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔪\" src=\"1f52a.png\"/>',fitzpatrick_scale:false,category:\"objects\"},dagger:{keywords:[\"weapon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗡\" src=\"1f5e1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},crossed_swords:{keywords:[\"weapon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚔\" src=\"2694.png\"/>',fitzpatrick_scale:false,category:\"objects\"},shield:{keywords:[\"protection\",\"security\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛡\" src=\"1f6e1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},smoking:{keywords:[\"kills\",\"tobacco\",\"cigarette\",\"joint\",\"smoke\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚬\" src=\"1f6ac.png\"/>',fitzpatrick_scale:false,category:\"objects\"},skull_and_crossbones:{keywords:[\"poison\",\"danger\",\"deadly\",\"scary\",\"death\",\"pirate\",\"evil\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☠\" src=\"2620.png\"/>',fitzpatrick_scale:false,category:\"objects\"},coffin:{keywords:[\"vampire\",\"dead\",\"die\",\"death\",\"rip\",\"graveyard\",\"cemetery\",\"casket\",\"funeral\",\"box\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚰\" src=\"26b0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},funeral_urn:{keywords:[\"dead\",\"die\",\"death\",\"rip\",\"ashes\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚱\" src=\"26b1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},amphora:{keywords:[\"vase\",\"jar\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏺\" src=\"1f3fa.png\"/>',fitzpatrick_scale:false,category:\"objects\"},crystal_ball:{keywords:[\"disco\",\"party\",\"magic\",\"circus\",\"fortune_teller\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔮\" src=\"1f52e.png\"/>',fitzpatrick_scale:false,category:\"objects\"},prayer_beads:{keywords:[\"dhikr\",\"religious\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📿\" src=\"1f4ff.png\"/>',fitzpatrick_scale:false,category:\"objects\"},nazar_amulet:{keywords:[\"bead\",\"charm\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧿\" src=\"1f9ff.png\"/>',fitzpatrick_scale:false,category:\"objects\"},barber:{keywords:[\"hair\",\"salon\",\"style\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💈\" src=\"1f488.png\"/>',fitzpatrick_scale:false,category:\"objects\"},alembic:{keywords:[\"distilling\",\"science\",\"experiment\",\"chemistry\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚗\" src=\"2697.png\"/>',fitzpatrick_scale:false,category:\"objects\"},telescope:{keywords:[\"stars\",\"space\",\"zoom\",\"science\",\"astronomy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔭\" src=\"1f52d.png\"/>',fitzpatrick_scale:false,category:\"objects\"},microscope:{keywords:[\"laboratory\",\"experiment\",\"zoomin\",\"science\",\"study\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔬\" src=\"1f52c.png\"/>',fitzpatrick_scale:false,category:\"objects\"},hole:{keywords:[\"embarrassing\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕳\" src=\"1f573.png\"/>',fitzpatrick_scale:false,category:\"objects\"},pill:{keywords:[\"health\",\"medicine\",\"doctor\",\"pharmacy\",\"drug\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💊\" src=\"1f48a.png\"/>',fitzpatrick_scale:false,category:\"objects\"},syringe:{keywords:[\"health\",\"hospital\",\"drugs\",\"blood\",\"medicine\",\"needle\",\"doctor\",\"nurse\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💉\" src=\"1f489.png\"/>',fitzpatrick_scale:false,category:\"objects\"},dna:{keywords:[\"biologist\",\"genetics\",\"life\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧬\" src=\"1f9ec.png\"/>',fitzpatrick_scale:false,category:\"objects\"},microbe:{keywords:[\"amoeba\",\"bacteria\",\"germs\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🦠\" src=\"1f9a0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},petri_dish:{keywords:[\"bacteria\",\"biology\",\"culture\",\"lab\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧫\" src=\"1f9eb.png\"/>',fitzpatrick_scale:false,category:\"objects\"},test_tube:{keywords:[\"chemistry\",\"experiment\",\"lab\",\"science\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧪\" src=\"1f9ea.png\"/>',fitzpatrick_scale:false,category:\"objects\"},thermometer:{keywords:[\"weather\",\"temperature\",\"hot\",\"cold\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌡\" src=\"1f321.png\"/>',fitzpatrick_scale:false,category:\"objects\"},broom:{keywords:[\"cleaning\",\"sweeping\",\"witch\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧹\" src=\"1f9f9.png\"/>',fitzpatrick_scale:false,category:\"objects\"},basket:{keywords:[\"laundry\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧺\" src=\"1f9fa.png\"/>',fitzpatrick_scale:false,category:\"objects\"},toilet_paper:{keywords:[\"roll\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧻\" src=\"1f9fb.png\"/>',fitzpatrick_scale:false,category:\"objects\"},label:{keywords:[\"sale\",\"tag\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏷\" src=\"1f3f7.png\"/>',fitzpatrick_scale:false,category:\"objects\"},bookmark:{keywords:[\"favorite\",\"label\",\"save\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔖\" src=\"1f516.png\"/>',fitzpatrick_scale:false,category:\"objects\"},toilet:{keywords:[\"restroom\",\"wc\",\"washroom\",\"bathroom\",\"potty\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚽\" src=\"1f6bd.png\"/>',fitzpatrick_scale:false,category:\"objects\"},shower:{keywords:[\"clean\",\"water\",\"bathroom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚿\" src=\"1f6bf.png\"/>',fitzpatrick_scale:false,category:\"objects\"},bathtub:{keywords:[\"clean\",\"shower\",\"bathroom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛁\" src=\"1f6c1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},soap:{keywords:[\"bar\",\"bathing\",\"cleaning\",\"lather\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧼\" src=\"1f9fc.png\"/>',fitzpatrick_scale:false,category:\"objects\"},sponge:{keywords:[\"absorbing\",\"cleaning\",\"porous\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧽\" src=\"1f9fd.png\"/>',fitzpatrick_scale:false,category:\"objects\"},lotion_bottle:{keywords:[\"moisturizer\",\"sunscreen\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧴\" src=\"1f9f4.png\"/>',fitzpatrick_scale:false,category:\"objects\"},key:{keywords:[\"lock\",\"door\",\"password\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔑\" src=\"1f511.png\"/>',fitzpatrick_scale:false,category:\"objects\"},old_key:{keywords:[\"lock\",\"door\",\"password\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗝\" src=\"1f5dd.png\"/>',fitzpatrick_scale:false,category:\"objects\"},couch_and_lamp:{keywords:[\"read\",\"chill\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛋\" src=\"1f6cb.png\"/>',fitzpatrick_scale:false,category:\"objects\"},sleeping_bed:{keywords:[\"bed\",\"rest\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛌\" src=\"1f6cc.png\"/>',fitzpatrick_scale:true,category:\"objects\"},bed:{keywords:[\"sleep\",\"rest\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛏\" src=\"1f6cf.png\"/>',fitzpatrick_scale:false,category:\"objects\"},door:{keywords:[\"house\",\"entry\",\"exit\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚪\" src=\"1f6aa.png\"/>',fitzpatrick_scale:false,category:\"objects\"},bellhop_bell:{keywords:[\"service\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛎\" src=\"1f6ce.png\"/>',fitzpatrick_scale:false,category:\"objects\"},teddy_bear:{keywords:[\"plush\",\"stuffed\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧸\" src=\"1f9f8.png\"/>',fitzpatrick_scale:false,category:\"objects\"},framed_picture:{keywords:[\"photography\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖼\" src=\"1f5bc.png\"/>',fitzpatrick_scale:false,category:\"objects\"},world_map:{keywords:[\"location\",\"direction\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗺\" src=\"1f5fa.png\"/>',fitzpatrick_scale:false,category:\"objects\"},parasol_on_ground:{keywords:[\"weather\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛱\" src=\"26f1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},moyai:{keywords:[\"rock\",\"easter island\",\"moai\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗿\" src=\"1f5ff.png\"/>',fitzpatrick_scale:false,category:\"objects\"},shopping:{keywords:[\"mall\",\"buy\",\"purchase\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛍\" src=\"1f6cd.png\"/>',fitzpatrick_scale:false,category:\"objects\"},shopping_cart:{keywords:[\"trolley\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛒\" src=\"1f6d2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},balloon:{keywords:[\"party\",\"celebration\",\"birthday\",\"circus\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎈\" src=\"1f388.png\"/>',fitzpatrick_scale:false,category:\"objects\"},flags:{keywords:[\"fish\",\"japanese\",\"koinobori\",\"carp\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎏\" src=\"1f38f.png\"/>',fitzpatrick_scale:false,category:\"objects\"},ribbon:{keywords:[\"decoration\",\"pink\",\"girl\",\"bowtie\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎀\" src=\"1f380.png\"/>',fitzpatrick_scale:false,category:\"objects\"},gift:{keywords:[\"present\",\"birthday\",\"christmas\",\"xmas\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎁\" src=\"1f381.png\"/>',fitzpatrick_scale:false,category:\"objects\"},confetti_ball:{keywords:[\"festival\",\"party\",\"birthday\",\"circus\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎊\" src=\"1f38a.png\"/>',fitzpatrick_scale:false,category:\"objects\"},tada:{keywords:[\"party\",\"congratulations\",\"birthday\",\"magic\",\"circus\",\"celebration\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎉\" src=\"1f389.png\"/>',fitzpatrick_scale:false,category:\"objects\"},dolls:{keywords:[\"japanese\",\"toy\",\"kimono\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎎\" src=\"1f38e.png\"/>',fitzpatrick_scale:false,category:\"objects\"},wind_chime:{keywords:[\"nature\",\"ding\",\"spring\",\"bell\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎐\" src=\"1f390.png\"/>',fitzpatrick_scale:false,category:\"objects\"},crossed_flags:{keywords:[\"japanese\",\"nation\",\"country\",\"border\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎌\" src=\"1f38c.png\"/>',fitzpatrick_scale:false,category:\"objects\"},izakaya_lantern:{keywords:[\"light\",\"paper\",\"halloween\",\"spooky\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏮\" src=\"1f3ee.png\"/>',fitzpatrick_scale:false,category:\"objects\"},red_envelope:{keywords:[\"gift\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧧\" src=\"1f9e7.png\"/>',fitzpatrick_scale:false,category:\"objects\"},email:{keywords:[\"letter\",\"postal\",\"inbox\",\"communication\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✉️\" src=\"2709.png\"/>',fitzpatrick_scale:false,category:\"objects\"},envelope_with_arrow:{keywords:[\"email\",\"communication\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📩\" src=\"1f4e9.png\"/>',fitzpatrick_scale:false,category:\"objects\"},incoming_envelope:{keywords:[\"email\",\"inbox\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📨\" src=\"1f4e8.png\"/>',fitzpatrick_scale:false,category:\"objects\"},\"e-mail\":{keywords:[\"communication\",\"inbox\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📧\" src=\"1f4e7.png\"/>',fitzpatrick_scale:false,category:\"objects\"},love_letter:{keywords:[\"email\",\"like\",\"affection\",\"envelope\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💌\" src=\"1f48c.png\"/>',fitzpatrick_scale:false,category:\"objects\"},postbox:{keywords:[\"email\",\"letter\",\"envelope\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📮\" src=\"1f4ee.png\"/>',fitzpatrick_scale:false,category:\"objects\"},mailbox_closed:{keywords:[\"email\",\"communication\",\"inbox\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📪\" src=\"1f4ea.png\"/>',fitzpatrick_scale:false,category:\"objects\"},mailbox:{keywords:[\"email\",\"inbox\",\"communication\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📫\" src=\"1f4eb.png\"/>',fitzpatrick_scale:false,category:\"objects\"},mailbox_with_mail:{keywords:[\"email\",\"inbox\",\"communication\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📬\" src=\"1f4ec.png\"/>',fitzpatrick_scale:false,category:\"objects\"},mailbox_with_no_mail:{keywords:[\"email\",\"inbox\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📭\" src=\"1f4ed.png\"/>',fitzpatrick_scale:false,category:\"objects\"},package:{keywords:[\"mail\",\"gift\",\"cardboard\",\"box\",\"moving\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📦\" src=\"1f4e6.png\"/>',fitzpatrick_scale:false,category:\"objects\"},postal_horn:{keywords:[\"instrument\",\"music\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📯\" src=\"1f4ef.png\"/>',fitzpatrick_scale:false,category:\"objects\"},inbox_tray:{keywords:[\"email\",\"documents\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📥\" src=\"1f4e5.png\"/>',fitzpatrick_scale:false,category:\"objects\"},outbox_tray:{keywords:[\"inbox\",\"email\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📤\" src=\"1f4e4.png\"/>',fitzpatrick_scale:false,category:\"objects\"},scroll:{keywords:[\"documents\",\"ancient\",\"history\",\"paper\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📜\" src=\"1f4dc.png\"/>',fitzpatrick_scale:false,category:\"objects\"},page_with_curl:{keywords:[\"documents\",\"office\",\"paper\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📃\" src=\"1f4c3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},bookmark_tabs:{keywords:[\"favorite\",\"save\",\"order\",\"tidy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📑\" src=\"1f4d1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},receipt:{keywords:[\"accounting\",\"expenses\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧾\" src=\"1f9fe.png\"/>',fitzpatrick_scale:false,category:\"objects\"},bar_chart:{keywords:[\"graph\",\"presentation\",\"stats\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📊\" src=\"1f4ca.png\"/>',fitzpatrick_scale:false,category:\"objects\"},chart_with_upwards_trend:{keywords:[\"graph\",\"presentation\",\"stats\",\"recovery\",\"business\",\"economics\",\"money\",\"sales\",\"good\",\"success\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📈\" src=\"1f4c8.png\"/>',fitzpatrick_scale:false,category:\"objects\"},chart_with_downwards_trend:{keywords:[\"graph\",\"presentation\",\"stats\",\"recession\",\"business\",\"economics\",\"money\",\"sales\",\"bad\",\"failure\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📉\" src=\"1f4c9.png\"/>',fitzpatrick_scale:false,category:\"objects\"},page_facing_up:{keywords:[\"documents\",\"office\",\"paper\",\"information\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📄\" src=\"1f4c4.png\"/>',fitzpatrick_scale:false,category:\"objects\"},date:{keywords:[\"calendar\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📅\" src=\"1f4c5.png\"/>',fitzpatrick_scale:false,category:\"objects\"},calendar:{keywords:[\"schedule\",\"date\",\"planning\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📆\" src=\"1f4c6.png\"/>',fitzpatrick_scale:false,category:\"objects\"},spiral_calendar:{keywords:[\"date\",\"schedule\",\"planning\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗓\" src=\"1f5d3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},card_index:{keywords:[\"business\",\"stationery\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📇\" src=\"1f4c7.png\"/>',fitzpatrick_scale:false,category:\"objects\"},card_file_box:{keywords:[\"business\",\"stationery\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗃\" src=\"1f5c3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},ballot_box:{keywords:[\"election\",\"vote\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗳\" src=\"1f5f3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},file_cabinet:{keywords:[\"filing\",\"organizing\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗄\" src=\"1f5c4.png\"/>',fitzpatrick_scale:false,category:\"objects\"},clipboard:{keywords:[\"stationery\",\"documents\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📋\" src=\"1f4cb.png\"/>',fitzpatrick_scale:false,category:\"objects\"},spiral_notepad:{keywords:[\"memo\",\"stationery\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗒\" src=\"1f5d2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},file_folder:{keywords:[\"documents\",\"business\",\"office\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📁\" src=\"1f4c1.png\"/>',fitzpatrick_scale:false,category:\"objects\"},open_file_folder:{keywords:[\"documents\",\"load\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📂\" src=\"1f4c2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},card_index_dividers:{keywords:[\"organizing\",\"business\",\"stationery\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗂\" src=\"1f5c2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},newspaper_roll:{keywords:[\"press\",\"headline\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗞\" src=\"1f5de.png\"/>',fitzpatrick_scale:false,category:\"objects\"},newspaper:{keywords:[\"press\",\"headline\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📰\" src=\"1f4f0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},notebook:{keywords:[\"stationery\",\"record\",\"notes\",\"paper\",\"study\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📓\" src=\"1f4d3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},closed_book:{keywords:[\"read\",\"library\",\"knowledge\",\"textbook\",\"learn\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📕\" src=\"1f4d5.png\"/>',fitzpatrick_scale:false,category:\"objects\"},green_book:{keywords:[\"read\",\"library\",\"knowledge\",\"study\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📗\" src=\"1f4d7.png\"/>',fitzpatrick_scale:false,category:\"objects\"},blue_book:{keywords:[\"read\",\"library\",\"knowledge\",\"learn\",\"study\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📘\" src=\"1f4d8.png\"/>',fitzpatrick_scale:false,category:\"objects\"},orange_book:{keywords:[\"read\",\"library\",\"knowledge\",\"textbook\",\"study\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📙\" src=\"1f4d9.png\"/>',fitzpatrick_scale:false,category:\"objects\"},notebook_with_decorative_cover:{keywords:[\"classroom\",\"notes\",\"record\",\"paper\",\"study\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📔\" src=\"1f4d4.png\"/>',fitzpatrick_scale:false,category:\"objects\"},ledger:{keywords:[\"notes\",\"paper\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📒\" src=\"1f4d2.png\"/>',fitzpatrick_scale:false,category:\"objects\"},books:{keywords:[\"literature\",\"library\",\"study\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📚\" src=\"1f4da.png\"/>',fitzpatrick_scale:false,category:\"objects\"},open_book:{keywords:[\"book\",\"read\",\"library\",\"knowledge\",\"literature\",\"learn\",\"study\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📖\" src=\"1f4d6.png\"/>',fitzpatrick_scale:false,category:\"objects\"},safety_pin:{keywords:[\"diaper\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧷\" src=\"1f9f7.png\"/>',fitzpatrick_scale:false,category:\"objects\"},link:{keywords:[\"rings\",\"url\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔗\" src=\"1f517.png\"/>',fitzpatrick_scale:false,category:\"objects\"},paperclip:{keywords:[\"documents\",\"stationery\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📎\" src=\"1f4ce.png\"/>',fitzpatrick_scale:false,category:\"objects\"},paperclips:{keywords:[\"documents\",\"stationery\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖇\" src=\"1f587.png\"/>',fitzpatrick_scale:false,category:\"objects\"},scissors:{keywords:[\"stationery\",\"cut\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✂️\" src=\"2702.png\"/>',fitzpatrick_scale:false,category:\"objects\"},triangular_ruler:{keywords:[\"stationery\",\"math\",\"architect\",\"sketch\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📐\" src=\"1f4d0.png\"/>',fitzpatrick_scale:false,category:\"objects\"},straight_ruler:{keywords:[\"stationery\",\"calculate\",\"length\",\"math\",\"school\",\"drawing\",\"architect\",\"sketch\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📏\" src=\"1f4cf.png\"/>',fitzpatrick_scale:false,category:\"objects\"},abacus:{keywords:[\"calculation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧮\" src=\"1f9ee.png\"/>',fitzpatrick_scale:false,category:\"objects\"},pushpin:{keywords:[\"stationery\",\"mark\",\"here\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📌\" src=\"1f4cc.png\"/>',fitzpatrick_scale:false,category:\"objects\"},round_pushpin:{keywords:[\"stationery\",\"location\",\"map\",\"here\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📍\" src=\"1f4cd.png\"/>',fitzpatrick_scale:false,category:\"objects\"},triangular_flag_on_post:{keywords:[\"mark\",\"milestone\",\"place\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚩\" src=\"1f6a9.png\"/>',fitzpatrick_scale:false,category:\"objects\"},white_flag:{keywords:[\"losing\",\"loser\",\"lost\",\"surrender\",\"give up\",\"fail\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏳\" src=\"1f3f3.png\"/>',fitzpatrick_scale:false,category:\"objects\"},black_flag:{keywords:[\"pirate\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏴\" src=\"1f3f4.png\"/>',fitzpatrick_scale:false,category:\"objects\"},rainbow_flag:{keywords:[\"flag\",\"rainbow\",\"pride\",\"gay\",\"lgbt\",\"glbt\",\"queer\",\"homosexual\",\"lesbian\",\"bisexual\",\"transgender\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏳️‍🌈\" src=\"1f3f3-fe0f-200d-1f308.png\"/>',fitzpatrick_scale:false,category:\"objects\"},closed_lock_with_key:{keywords:[\"security\",\"privacy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔐\" src=\"1f510.png\"/>',fitzpatrick_scale:false,category:\"objects\"},lock:{keywords:[\"security\",\"password\",\"padlock\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔒\" src=\"1f512.png\"/>',fitzpatrick_scale:false,category:\"objects\"},unlock:{keywords:[\"privacy\",\"security\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔓\" src=\"1f513.png\"/>',fitzpatrick_scale:false,category:\"objects\"},lock_with_ink_pen:{keywords:[\"security\",\"secret\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔏\" src=\"1f50f.png\"/>',fitzpatrick_scale:false,category:\"objects\"},pen:{keywords:[\"stationery\",\"writing\",\"write\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖊\" src=\"1f58a.png\"/>',fitzpatrick_scale:false,category:\"objects\"},fountain_pen:{keywords:[\"stationery\",\"writing\",\"write\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖋\" src=\"1f58b.png\"/>',fitzpatrick_scale:false,category:\"objects\"},black_nib:{keywords:[\"pen\",\"stationery\",\"writing\",\"write\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✒️\" src=\"2712.png\"/>',fitzpatrick_scale:false,category:\"objects\"},memo:{keywords:[\"write\",\"documents\",\"stationery\",\"pencil\",\"paper\",\"writing\",\"legal\",\"exam\",\"quiz\",\"test\",\"study\",\"compose\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📝\" src=\"1f4dd.png\"/>',fitzpatrick_scale:false,category:\"objects\"},pencil2:{keywords:[\"stationery\",\"write\",\"paper\",\"writing\",\"school\",\"study\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✏️\" src=\"270f.png\"/>',fitzpatrick_scale:false,category:\"objects\"},crayon:{keywords:[\"drawing\",\"creativity\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖍\" src=\"1f58d.png\"/>',fitzpatrick_scale:false,category:\"objects\"},paintbrush:{keywords:[\"drawing\",\"creativity\",\"art\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖌\" src=\"1f58c.png\"/>',fitzpatrick_scale:false,category:\"objects\"},mag:{keywords:[\"search\",\"zoom\",\"find\",\"detective\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔍\" src=\"1f50d.png\"/>',fitzpatrick_scale:false,category:\"objects\"},mag_right:{keywords:[\"search\",\"zoom\",\"find\",\"detective\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔎\" src=\"1f50e.png\"/>',fitzpatrick_scale:false,category:\"objects\"},heart:{keywords:[\"love\",\"like\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❤️\" src=\"2764.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},orange_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🧡\" src=\"1f9e1.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},yellow_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💛\" src=\"1f49b.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},green_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💚\" src=\"1f49a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},blue_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💙\" src=\"1f499.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},purple_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💜\" src=\"1f49c.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},black_heart:{keywords:[\"evil\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🖤\" src=\"1f5a4.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},broken_heart:{keywords:[\"sad\",\"sorry\",\"break\",\"heart\",\"heartbreak\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💔\" src=\"1f494.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heavy_heart_exclamation:{keywords:[\"decoration\",\"love\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❣\" src=\"2763.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},two_hearts:{keywords:[\"love\",\"like\",\"affection\",\"valentines\",\"heart\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💕\" src=\"1f495.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},revolving_hearts:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💞\" src=\"1f49e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heartbeat:{keywords:[\"love\",\"like\",\"affection\",\"valentines\",\"pink\",\"heart\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💓\" src=\"1f493.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heartpulse:{keywords:[\"like\",\"love\",\"affection\",\"valentines\",\"pink\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💗\" src=\"1f497.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},sparkling_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💖\" src=\"1f496.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},cupid:{keywords:[\"love\",\"like\",\"heart\",\"affection\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💘\" src=\"1f498.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},gift_heart:{keywords:[\"love\",\"valentines\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💝\" src=\"1f49d.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heart_decoration:{keywords:[\"purple-square\",\"love\",\"like\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💟\" src=\"1f49f.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},peace_symbol:{keywords:[\"hippie\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☮\" src=\"262e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},latin_cross:{keywords:[\"christianity\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✝\" src=\"271d.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},star_and_crescent:{keywords:[\"islam\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☪\" src=\"262a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},om:{keywords:[\"hinduism\",\"buddhism\",\"sikhism\",\"jainism\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕉\" src=\"1f549.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},wheel_of_dharma:{keywords:[\"hinduism\",\"buddhism\",\"sikhism\",\"jainism\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☸\" src=\"2638.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},star_of_david:{keywords:[\"judaism\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✡\" src=\"2721.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},six_pointed_star:{keywords:[\"purple-square\",\"religion\",\"jewish\",\"hexagram\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔯\" src=\"1f52f.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},menorah:{keywords:[\"hanukkah\",\"candles\",\"jewish\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕎\" src=\"1f54e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},yin_yang:{keywords:[\"balance\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☯\" src=\"262f.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},orthodox_cross:{keywords:[\"suppedaneum\",\"religion\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☦\" src=\"2626.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},place_of_worship:{keywords:[\"religion\",\"church\",\"temple\",\"prayer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛐\" src=\"1f6d0.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},ophiuchus:{keywords:[\"sign\",\"purple-square\",\"constellation\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛎\" src=\"26ce.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},aries:{keywords:[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♈\" src=\"2648.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},taurus:{keywords:[\"purple-square\",\"sign\",\"zodiac\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♉\" src=\"2649.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},gemini:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♊\" src=\"264a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},cancer:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♋\" src=\"264b.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},leo:{keywords:[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♌\" src=\"264c.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},virgo:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♍\" src=\"264d.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},libra:{keywords:[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♎\" src=\"264e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},scorpius:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\",\"scorpio\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♏\" src=\"264f.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},sagittarius:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♐\" src=\"2650.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},capricorn:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♑\" src=\"2651.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},aquarius:{keywords:[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♒\" src=\"2652.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},pisces:{keywords:[\"purple-square\",\"sign\",\"zodiac\",\"astrology\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♓\" src=\"2653.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},id:{keywords:[\"purple-square\",\"words\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆔\" src=\"1f194.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},atom_symbol:{keywords:[\"science\",\"physics\",\"chemistry\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚛\" src=\"269b.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u7a7a:{keywords:[\"kanji\",\"japanese\",\"chinese\",\"empty\",\"sky\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈳\" src=\"1f233.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u5272:{keywords:[\"cut\",\"divide\",\"chinese\",\"kanji\",\"pink-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈹\" src=\"1f239.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},radioactive:{keywords:[\"nuclear\",\"danger\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☢\" src=\"2622.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},biohazard:{keywords:[\"danger\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☣\" src=\"2623.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},mobile_phone_off:{keywords:[\"mute\",\"orange-square\",\"silence\",\"quiet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📴\" src=\"1f4f4.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},vibration_mode:{keywords:[\"orange-square\",\"phone\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📳\" src=\"1f4f3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u6709:{keywords:[\"orange-square\",\"chinese\",\"have\",\"kanji\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈶\" src=\"1f236.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u7121:{keywords:[\"nothing\",\"chinese\",\"kanji\",\"japanese\",\"orange-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈚\" src=\"1f21a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u7533:{keywords:[\"chinese\",\"japanese\",\"kanji\",\"orange-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈸\" src=\"1f238.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u55b6:{keywords:[\"japanese\",\"opening hours\",\"orange-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈺\" src=\"1f23a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u6708:{keywords:[\"chinese\",\"month\",\"moon\",\"japanese\",\"orange-square\",\"kanji\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈷️\" src=\"1f237.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},eight_pointed_black_star:{keywords:[\"orange-square\",\"shape\",\"polygon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✴️\" src=\"2734.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},vs:{keywords:[\"words\",\"orange-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆚\" src=\"1f19a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},accept:{keywords:[\"ok\",\"good\",\"chinese\",\"kanji\",\"agree\",\"yes\",\"orange-circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🉑\" src=\"1f251.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},white_flower:{keywords:[\"japanese\",\"spring\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💮\" src=\"1f4ae.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},ideograph_advantage:{keywords:[\"chinese\",\"kanji\",\"obtain\",\"get\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🉐\" src=\"1f250.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},secret:{keywords:[\"privacy\",\"chinese\",\"sshh\",\"kanji\",\"red-circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"㊙️\" src=\"3299.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},congratulations:{keywords:[\"chinese\",\"kanji\",\"japanese\",\"red-circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"㊗️\" src=\"3297.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u5408:{keywords:[\"japanese\",\"chinese\",\"join\",\"kanji\",\"red-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈴\" src=\"1f234.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u6e80:{keywords:[\"full\",\"chinese\",\"japanese\",\"red-square\",\"kanji\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈵\" src=\"1f235.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u7981:{keywords:[\"kanji\",\"japanese\",\"chinese\",\"forbidden\",\"limit\",\"restricted\",\"red-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈲\" src=\"1f232.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},a:{keywords:[\"red-square\",\"alphabet\",\"letter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🅰️\" src=\"1f170.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},b:{keywords:[\"red-square\",\"alphabet\",\"letter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🅱️\" src=\"1f171.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},ab:{keywords:[\"red-square\",\"alphabet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆎\" src=\"1f18e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},cl:{keywords:[\"alphabet\",\"words\",\"red-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆑\" src=\"1f191.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},o2:{keywords:[\"alphabet\",\"red-square\",\"letter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🅾️\" src=\"1f17e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},sos:{keywords:[\"help\",\"red-square\",\"words\",\"emergency\",\"911\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆘\" src=\"1f198.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},no_entry:{keywords:[\"limit\",\"security\",\"privacy\",\"bad\",\"denied\",\"stop\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⛔\" src=\"26d4.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},name_badge:{keywords:[\"fire\",\"forbid\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📛\" src=\"1f4db.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},no_entry_sign:{keywords:[\"forbid\",\"stop\",\"limit\",\"denied\",\"disallow\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚫\" src=\"1f6ab.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},x:{keywords:[\"no\",\"delete\",\"remove\",\"cancel\",\"red\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❌\" src=\"274c.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},o:{keywords:[\"circle\",\"round\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⭕\" src=\"2b55.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},stop_sign:{keywords:[\"stop\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛑\" src=\"1f6d1.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},anger:{keywords:[\"angry\",\"mad\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💢\" src=\"1f4a2.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},hotsprings:{keywords:[\"bath\",\"warm\",\"relax\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♨️\" src=\"2668.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},no_pedestrians:{keywords:[\"rules\",\"crossing\",\"walking\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚷\" src=\"1f6b7.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},do_not_litter:{keywords:[\"trash\",\"bin\",\"garbage\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚯\" src=\"1f6af.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},no_bicycles:{keywords:[\"cyclist\",\"prohibited\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚳\" src=\"1f6b3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},\"non-potable_water\":{keywords:[\"drink\",\"faucet\",\"tap\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚱\" src=\"1f6b1.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},underage:{keywords:[\"18\",\"drink\",\"pub\",\"night\",\"minor\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔞\" src=\"1f51e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},no_mobile_phones:{keywords:[\"iphone\",\"mute\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📵\" src=\"1f4f5.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},exclamation:{keywords:[\"heavy_exclamation_mark\",\"danger\",\"surprise\",\"punctuation\",\"wow\",\"warning\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❗\" src=\"2757.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},grey_exclamation:{keywords:[\"surprise\",\"punctuation\",\"gray\",\"wow\",\"warning\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❕\" src=\"2755.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},question:{keywords:[\"doubt\",\"confused\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❓\" src=\"2753.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},grey_question:{keywords:[\"doubts\",\"gray\",\"huh\",\"confused\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❔\" src=\"2754.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},bangbang:{keywords:[\"exclamation\",\"surprise\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"‼️\" src=\"203c.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},interrobang:{keywords:[\"wat\",\"punctuation\",\"surprise\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⁉️\" src=\"2049.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},low_brightness:{keywords:[\"sun\",\"afternoon\",\"warm\",\"summer\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔅\" src=\"1f505.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},high_brightness:{keywords:[\"sun\",\"light\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔆\" src=\"1f506.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},trident:{keywords:[\"weapon\",\"spear\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔱\" src=\"1f531.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},fleur_de_lis:{keywords:[\"decorative\",\"scout\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚜\" src=\"269c.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},part_alternation_mark:{keywords:[\"graph\",\"presentation\",\"stats\",\"business\",\"economics\",\"bad\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"〽️\" src=\"303d.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},warning:{keywords:[\"exclamation\",\"wip\",\"alert\",\"error\",\"problem\",\"issue\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚠️\" src=\"26a0.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},children_crossing:{keywords:[\"school\",\"warning\",\"danger\",\"sign\",\"driving\",\"yellow-diamond\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚸\" src=\"1f6b8.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},beginner:{keywords:[\"badge\",\"shield\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔰\" src=\"1f530.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},recycle:{keywords:[\"arrow\",\"environment\",\"garbage\",\"trash\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♻️\" src=\"267b.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},u6307:{keywords:[\"chinese\",\"point\",\"green-square\",\"kanji\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈯\" src=\"1f22f.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},chart:{keywords:[\"green-square\",\"graph\",\"presentation\",\"stats\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💹\" src=\"1f4b9.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},sparkle:{keywords:[\"stars\",\"green-square\",\"awesome\",\"good\",\"fireworks\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❇️\" src=\"2747.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},eight_spoked_asterisk:{keywords:[\"star\",\"sparkle\",\"green-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✳️\" src=\"2733.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},negative_squared_cross_mark:{keywords:[\"x\",\"green-square\",\"no\",\"deny\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"❎\" src=\"274e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},white_check_mark:{keywords:[\"green-square\",\"ok\",\"agree\",\"vote\",\"election\",\"answer\",\"tick\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✅\" src=\"2705.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},diamond_shape_with_a_dot_inside:{keywords:[\"jewel\",\"blue\",\"gem\",\"crystal\",\"fancy\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💠\" src=\"1f4a0.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},cyclone:{keywords:[\"weather\",\"swirl\",\"blue\",\"cloud\",\"vortex\",\"spiral\",\"whirlpool\",\"spin\",\"tornado\",\"hurricane\",\"typhoon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌀\" src=\"1f300.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},loop:{keywords:[\"tape\",\"cassette\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"➿\" src=\"27bf.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},globe_with_meridians:{keywords:[\"earth\",\"international\",\"world\",\"internet\",\"interweb\",\"i18n\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🌐\" src=\"1f310.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},m:{keywords:[\"alphabet\",\"blue-circle\",\"letter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"Ⓜ️\" src=\"24c2.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},atm:{keywords:[\"money\",\"sales\",\"cash\",\"blue-square\",\"payment\",\"bank\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏧\" src=\"1f3e7.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},sa:{keywords:[\"japanese\",\"blue-square\",\"katakana\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈂️\" src=\"1f202.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},passport_control:{keywords:[\"custom\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛂\" src=\"1f6c2.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},customs:{keywords:[\"passport\",\"border\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛃\" src=\"1f6c3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},baggage_claim:{keywords:[\"blue-square\",\"airport\",\"transport\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛄\" src=\"1f6c4.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},left_luggage:{keywords:[\"blue-square\",\"travel\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🛅\" src=\"1f6c5.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},wheelchair:{keywords:[\"blue-square\",\"disabled\",\"a11y\",\"accessibility\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♿\" src=\"267f.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},no_smoking:{keywords:[\"cigarette\",\"blue-square\",\"smell\",\"smoke\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚭\" src=\"1f6ad.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},wc:{keywords:[\"toilet\",\"restroom\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚾\" src=\"1f6be.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},parking:{keywords:[\"cars\",\"blue-square\",\"alphabet\",\"letter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🅿️\" src=\"1f17f.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},potable_water:{keywords:[\"blue-square\",\"liquid\",\"restroom\",\"cleaning\",\"faucet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚰\" src=\"1f6b0.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},mens:{keywords:[\"toilet\",\"restroom\",\"wc\",\"blue-square\",\"gender\",\"male\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚹\" src=\"1f6b9.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},womens:{keywords:[\"purple-square\",\"woman\",\"female\",\"toilet\",\"loo\",\"restroom\",\"gender\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚺\" src=\"1f6ba.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},baby_symbol:{keywords:[\"orange-square\",\"child\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚼\" src=\"1f6bc.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},restroom:{keywords:[\"blue-square\",\"toilet\",\"refresh\",\"wc\",\"gender\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚻\" src=\"1f6bb.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},put_litter_in_its_place:{keywords:[\"blue-square\",\"sign\",\"human\",\"info\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🚮\" src=\"1f6ae.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},cinema:{keywords:[\"blue-square\",\"record\",\"film\",\"movie\",\"curtain\",\"stage\",\"theater\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎦\" src=\"1f3a6.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},signal_strength:{keywords:[\"blue-square\",\"reception\",\"phone\",\"internet\",\"connection\",\"wifi\",\"bluetooth\",\"bars\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📶\" src=\"1f4f6.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},koko:{keywords:[\"blue-square\",\"here\",\"katakana\",\"japanese\",\"destination\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🈁\" src=\"1f201.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},ng:{keywords:[\"blue-square\",\"words\",\"shape\",\"icon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆖\" src=\"1f196.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},ok:{keywords:[\"good\",\"agree\",\"yes\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆗\" src=\"1f197.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},up:{keywords:[\"blue-square\",\"above\",\"high\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆙\" src=\"1f199.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},cool:{keywords:[\"words\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆒\" src=\"1f192.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},new:{keywords:[\"blue-square\",\"words\",\"start\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆕\" src=\"1f195.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},free:{keywords:[\"blue-square\",\"words\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🆓\" src=\"1f193.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},zero:{keywords:[\"0\",\"numbers\",\"blue-square\",\"null\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"0️⃣\" src=\"30-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},one:{keywords:[\"blue-square\",\"numbers\",\"1\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"1️⃣\" src=\"31-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},two:{keywords:[\"numbers\",\"2\",\"prime\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"2️⃣\" src=\"32-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},three:{keywords:[\"3\",\"numbers\",\"prime\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"3️⃣\" src=\"33-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},four:{keywords:[\"4\",\"numbers\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"4️⃣\" src=\"34-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},five:{keywords:[\"5\",\"numbers\",\"blue-square\",\"prime\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"5️⃣\" src=\"35-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},six:{keywords:[\"6\",\"numbers\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"6️⃣\" src=\"36-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},seven:{keywords:[\"7\",\"numbers\",\"blue-square\",\"prime\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"7️⃣\" src=\"37-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},eight:{keywords:[\"8\",\"blue-square\",\"numbers\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"8️⃣\" src=\"38-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},nine:{keywords:[\"blue-square\",\"numbers\",\"9\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"9️⃣\" src=\"39-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},keycap_ten:{keywords:[\"numbers\",\"10\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔟\" src=\"1f51f.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},asterisk:{keywords:[\"star\",\"keycap\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"*⃣\" src=\"2a-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},eject_button:{keywords:[\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏏️\" src=\"23cf.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_forward:{keywords:[\"blue-square\",\"right\",\"direction\",\"play\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"▶️\" src=\"25b6.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},pause_button:{keywords:[\"pause\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏸\" src=\"23f8.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},next_track_button:{keywords:[\"forward\",\"next\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏭\" src=\"23ed.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},stop_button:{keywords:[\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏹\" src=\"23f9.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},record_button:{keywords:[\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏺\" src=\"23fa.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},play_or_pause_button:{keywords:[\"blue-square\",\"play\",\"pause\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏯\" src=\"23ef.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},previous_track_button:{keywords:[\"backward\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏮\" src=\"23ee.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},fast_forward:{keywords:[\"blue-square\",\"play\",\"speed\",\"continue\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏩\" src=\"23e9.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},rewind:{keywords:[\"play\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏪\" src=\"23ea.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},twisted_rightwards_arrows:{keywords:[\"blue-square\",\"shuffle\",\"music\",\"random\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔀\" src=\"1f500.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},repeat:{keywords:[\"loop\",\"record\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔁\" src=\"1f501.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},repeat_one:{keywords:[\"blue-square\",\"loop\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔂\" src=\"1f502.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_backward:{keywords:[\"blue-square\",\"left\",\"direction\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"◀️\" src=\"25c0.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_up_small:{keywords:[\"blue-square\",\"triangle\",\"direction\",\"point\",\"forward\",\"top\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔼\" src=\"1f53c.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_down_small:{keywords:[\"blue-square\",\"direction\",\"bottom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔽\" src=\"1f53d.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_double_up:{keywords:[\"blue-square\",\"direction\",\"top\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏫\" src=\"23eb.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_double_down:{keywords:[\"blue-square\",\"direction\",\"bottom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⏬\" src=\"23ec.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_right:{keywords:[\"blue-square\",\"next\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"➡️\" src=\"27a1.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_left:{keywords:[\"blue-square\",\"previous\",\"back\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⬅️\" src=\"2b05.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_up:{keywords:[\"blue-square\",\"continue\",\"top\",\"direction\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⬆️\" src=\"2b06.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_down:{keywords:[\"blue-square\",\"direction\",\"bottom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⬇️\" src=\"2b07.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_upper_right:{keywords:[\"blue-square\",\"point\",\"direction\",\"diagonal\",\"northeast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"↗️\" src=\"2197.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_lower_right:{keywords:[\"blue-square\",\"direction\",\"diagonal\",\"southeast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"↘️\" src=\"2198.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_lower_left:{keywords:[\"blue-square\",\"direction\",\"diagonal\",\"southwest\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"↙️\" src=\"2199.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_upper_left:{keywords:[\"blue-square\",\"point\",\"direction\",\"diagonal\",\"northwest\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"↖️\" src=\"2196.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_up_down:{keywords:[\"blue-square\",\"direction\",\"way\",\"vertical\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"↕️\" src=\"2195.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},left_right_arrow:{keywords:[\"shape\",\"direction\",\"horizontal\",\"sideways\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"↔️\" src=\"2194.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrows_counterclockwise:{keywords:[\"blue-square\",\"sync\",\"cycle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔄\" src=\"1f504.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_right_hook:{keywords:[\"blue-square\",\"return\",\"rotate\",\"direction\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"↪️\" src=\"21aa.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},leftwards_arrow_with_hook:{keywords:[\"back\",\"return\",\"blue-square\",\"undo\",\"enter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"↩️\" src=\"21a9.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_heading_up:{keywords:[\"blue-square\",\"direction\",\"top\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⤴️\" src=\"2934.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrow_heading_down:{keywords:[\"blue-square\",\"direction\",\"bottom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⤵️\" src=\"2935.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},hash:{keywords:[\"symbol\",\"blue-square\",\"twitter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"#️⃣\" src=\"23-20e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},information_source:{keywords:[\"blue-square\",\"alphabet\",\"letter\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"ℹ️\" src=\"2139.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},abc:{keywords:[\"blue-square\",\"alphabet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔤\" src=\"1f524.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},abcd:{keywords:[\"blue-square\",\"alphabet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔡\" src=\"1f521.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},capital_abcd:{keywords:[\"alphabet\",\"words\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔠\" src=\"1f520.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},symbols:{keywords:[\"blue-square\",\"music\",\"note\",\"ampersand\",\"percent\",\"glyphs\",\"characters\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔣\" src=\"1f523.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},musical_note:{keywords:[\"score\",\"tone\",\"sound\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎵\" src=\"1f3b5.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},notes:{keywords:[\"music\",\"score\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎶\" src=\"1f3b6.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},wavy_dash:{keywords:[\"draw\",\"line\",\"moustache\",\"mustache\",\"squiggle\",\"scribble\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"〰️\" src=\"3030.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},curly_loop:{keywords:[\"scribble\",\"draw\",\"shape\",\"squiggle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"➰\" src=\"27b0.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heavy_check_mark:{keywords:[\"ok\",\"nike\",\"answer\",\"yes\",\"tick\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✔️\" src=\"2714.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},arrows_clockwise:{keywords:[\"sync\",\"cycle\",\"round\",\"repeat\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔃\" src=\"1f503.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heavy_plus_sign:{keywords:[\"math\",\"calculation\",\"addition\",\"more\",\"increase\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"➕\" src=\"2795.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heavy_minus_sign:{keywords:[\"math\",\"calculation\",\"subtract\",\"less\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"➖\" src=\"2796.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heavy_division_sign:{keywords:[\"divide\",\"math\",\"calculation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"➗\" src=\"2797.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heavy_multiplication_x:{keywords:[\"math\",\"calculation\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"✖️\" src=\"2716.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},infinity:{keywords:[\"forever\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♾\" src=\"267e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},heavy_dollar_sign:{keywords:[\"money\",\"sales\",\"payment\",\"currency\",\"buck\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💲\" src=\"1f4b2.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},currency_exchange:{keywords:[\"money\",\"sales\",\"dollar\",\"travel\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💱\" src=\"1f4b1.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},copyright:{keywords:[\"ip\",\"license\",\"circle\",\"law\",\"legal\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"©️\" src=\"a9.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},registered:{keywords:[\"alphabet\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"®️\" src=\"ae.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},tm:{keywords:[\"trademark\",\"brand\",\"law\",\"legal\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"™️\" src=\"2122.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},end:{keywords:[\"words\",\"arrow\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔚\" src=\"1f51a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},back:{keywords:[\"arrow\",\"words\",\"return\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔙\" src=\"1f519.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},on:{keywords:[\"arrow\",\"words\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔛\" src=\"1f51b.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},top:{keywords:[\"words\",\"blue-square\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔝\" src=\"1f51d.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},soon:{keywords:[\"arrow\",\"words\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔜\" src=\"1f51c.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},ballot_box_with_check:{keywords:[\"ok\",\"agree\",\"confirm\",\"black-square\",\"vote\",\"election\",\"yes\",\"tick\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"☑️\" src=\"2611.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},radio_button:{keywords:[\"input\",\"old\",\"music\",\"circle\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔘\" src=\"1f518.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},white_circle:{keywords:[\"shape\",\"round\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚪\" src=\"26aa.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},black_circle:{keywords:[\"shape\",\"button\",\"round\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⚫\" src=\"26ab.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},red_circle:{keywords:[\"shape\",\"error\",\"danger\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔴\" src=\"1f534.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},large_blue_circle:{keywords:[\"shape\",\"icon\",\"button\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔵\" src=\"1f535.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},small_orange_diamond:{keywords:[\"shape\",\"jewel\",\"gem\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔸\" src=\"1f538.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},small_blue_diamond:{keywords:[\"shape\",\"jewel\",\"gem\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔹\" src=\"1f539.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},large_orange_diamond:{keywords:[\"shape\",\"jewel\",\"gem\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔶\" src=\"1f536.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},large_blue_diamond:{keywords:[\"shape\",\"jewel\",\"gem\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔷\" src=\"1f537.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},small_red_triangle:{keywords:[\"shape\",\"direction\",\"up\",\"top\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔺\" src=\"1f53a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},black_small_square:{keywords:[\"shape\",\"icon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"▪️\" src=\"25aa.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},white_small_square:{keywords:[\"shape\",\"icon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"▫️\" src=\"25ab.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},black_large_square:{keywords:[\"shape\",\"icon\",\"button\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⬛\" src=\"2b1b.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},white_large_square:{keywords:[\"shape\",\"icon\",\"stone\",\"button\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"⬜\" src=\"2b1c.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},small_red_triangle_down:{keywords:[\"shape\",\"direction\",\"bottom\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔻\" src=\"1f53b.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},black_medium_square:{keywords:[\"shape\",\"button\",\"icon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"◼️\" src=\"25fc.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},white_medium_square:{keywords:[\"shape\",\"stone\",\"icon\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"◻️\" src=\"25fb.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},black_medium_small_square:{keywords:[\"icon\",\"shape\",\"button\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"◾\" src=\"25fe.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},white_medium_small_square:{keywords:[\"shape\",\"stone\",\"icon\",\"button\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"◽\" src=\"25fd.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},black_square_button:{keywords:[\"shape\",\"input\",\"frame\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔲\" src=\"1f532.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},white_square_button:{keywords:[\"shape\",\"input\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔳\" src=\"1f533.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},speaker:{keywords:[\"sound\",\"volume\",\"silence\",\"broadcast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔈\" src=\"1f508.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},sound:{keywords:[\"volume\",\"speaker\",\"broadcast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔉\" src=\"1f509.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},loud_sound:{keywords:[\"volume\",\"noise\",\"noisy\",\"speaker\",\"broadcast\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔊\" src=\"1f50a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},mute:{keywords:[\"sound\",\"volume\",\"silence\",\"quiet\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔇\" src=\"1f507.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},mega:{keywords:[\"sound\",\"speaker\",\"volume\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📣\" src=\"1f4e3.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},loudspeaker:{keywords:[\"volume\",\"sound\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"📢\" src=\"1f4e2.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},bell:{keywords:[\"sound\",\"notification\",\"christmas\",\"xmas\",\"chime\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔔\" src=\"1f514.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},no_bell:{keywords:[\"sound\",\"volume\",\"mute\",\"quiet\",\"silent\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🔕\" src=\"1f515.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},black_joker:{keywords:[\"poker\",\"cards\",\"game\",\"play\",\"magic\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🃏\" src=\"1f0cf.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},mahjong:{keywords:[\"game\",\"play\",\"chinese\",\"kanji\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🀄\" src=\"1f004.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},spades:{keywords:[\"poker\",\"cards\",\"suits\",\"magic\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♠️\" src=\"2660.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clubs:{keywords:[\"poker\",\"cards\",\"magic\",\"suits\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♣️\" src=\"2663.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},hearts:{keywords:[\"poker\",\"cards\",\"magic\",\"suits\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♥️\" src=\"2665.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},diamonds:{keywords:[\"poker\",\"cards\",\"magic\",\"suits\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"♦️\" src=\"2666.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},flower_playing_cards:{keywords:[\"game\",\"sunset\",\"red\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🎴\" src=\"1f3b4.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},thought_balloon:{keywords:[\"bubble\",\"cloud\",\"speech\",\"thinking\",\"dream\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💭\" src=\"1f4ad.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},right_anger_bubble:{keywords:[\"caption\",\"speech\",\"thinking\",\"mad\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗯\" src=\"1f5ef.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},speech_balloon:{keywords:[\"bubble\",\"words\",\"message\",\"talk\",\"chatting\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"💬\" src=\"1f4ac.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},left_speech_bubble:{keywords:[\"words\",\"message\",\"talk\",\"chatting\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🗨\" src=\"1f5e8.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock1:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕐\" src=\"1f550.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock2:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕑\" src=\"1f551.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock3:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕒\" src=\"1f552.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock4:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕓\" src=\"1f553.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock5:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕔\" src=\"1f554.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock6:{keywords:[\"time\",\"late\",\"early\",\"schedule\",\"dawn\",\"dusk\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕕\" src=\"1f555.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock7:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕖\" src=\"1f556.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock8:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕗\" src=\"1f557.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock9:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕘\" src=\"1f558.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock10:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕙\" src=\"1f559.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock11:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕚\" src=\"1f55a.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock12:{keywords:[\"time\",\"noon\",\"midnight\",\"midday\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕛\" src=\"1f55b.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock130:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕜\" src=\"1f55c.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock230:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕝\" src=\"1f55d.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock330:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕞\" src=\"1f55e.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock430:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕟\" src=\"1f55f.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock530:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕠\" src=\"1f560.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock630:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕡\" src=\"1f561.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock730:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕢\" src=\"1f562.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock830:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕣\" src=\"1f563.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock930:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕤\" src=\"1f564.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock1030:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕥\" src=\"1f565.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock1130:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕦\" src=\"1f566.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},clock1230:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🕧\" src=\"1f567.png\"/>',fitzpatrick_scale:false,category:\"symbols\"},afghanistan:{keywords:[\"af\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇫\" src=\"1f1e6-1f1eb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},aland_islands:{keywords:[\"Åland\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇽\" src=\"1f1e6-1f1fd.png\"/>',fitzpatrick_scale:false,category:\"flags\"},albania:{keywords:[\"al\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇱\" src=\"1f1e6-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},algeria:{keywords:[\"dz\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇩🇿\" src=\"1f1e9-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},american_samoa:{keywords:[\"american\",\"ws\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇸\" src=\"1f1e6-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},andorra:{keywords:[\"ad\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇩\" src=\"1f1e6-1f1e9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},angola:{keywords:[\"ao\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇴\" src=\"1f1e6-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},anguilla:{keywords:[\"ai\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇮\" src=\"1f1e6-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},antarctica:{keywords:[\"aq\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇶\" src=\"1f1e6-1f1f6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},antigua_barbuda:{keywords:[\"antigua\",\"barbuda\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇬\" src=\"1f1e6-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},argentina:{keywords:[\"ar\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇷\" src=\"1f1e6-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},armenia:{keywords:[\"am\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇲\" src=\"1f1e6-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},aruba:{keywords:[\"aw\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇼\" src=\"1f1e6-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},australia:{keywords:[\"au\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇺\" src=\"1f1e6-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},austria:{keywords:[\"at\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇹\" src=\"1f1e6-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},azerbaijan:{keywords:[\"az\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇿\" src=\"1f1e6-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},bahamas:{keywords:[\"bs\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇸\" src=\"1f1e7-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},bahrain:{keywords:[\"bh\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇭\" src=\"1f1e7-1f1ed.png\"/>',fitzpatrick_scale:false,category:\"flags\"},bangladesh:{keywords:[\"bd\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇩\" src=\"1f1e7-1f1e9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},barbados:{keywords:[\"bb\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇧\" src=\"1f1e7-1f1e7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},belarus:{keywords:[\"by\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇾\" src=\"1f1e7-1f1fe.png\"/>',fitzpatrick_scale:false,category:\"flags\"},belgium:{keywords:[\"be\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇪\" src=\"1f1e7-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},belize:{keywords:[\"bz\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇿\" src=\"1f1e7-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},benin:{keywords:[\"bj\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇯\" src=\"1f1e7-1f1ef.png\"/>',fitzpatrick_scale:false,category:\"flags\"},bermuda:{keywords:[\"bm\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇲\" src=\"1f1e7-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},bhutan:{keywords:[\"bt\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇹\" src=\"1f1e7-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},bolivia:{keywords:[\"bo\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇴\" src=\"1f1e7-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},caribbean_netherlands:{keywords:[\"bonaire\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇶\" src=\"1f1e7-1f1f6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},bosnia_herzegovina:{keywords:[\"bosnia\",\"herzegovina\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇦\" src=\"1f1e7-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},botswana:{keywords:[\"bw\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇼\" src=\"1f1e7-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},brazil:{keywords:[\"br\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇷\" src=\"1f1e7-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},british_indian_ocean_territory:{keywords:[\"british\",\"indian\",\"ocean\",\"territory\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇴\" src=\"1f1ee-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},british_virgin_islands:{keywords:[\"british\",\"virgin\",\"islands\",\"bvi\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇻🇬\" src=\"1f1fb-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},brunei:{keywords:[\"bn\",\"darussalam\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇳\" src=\"1f1e7-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},bulgaria:{keywords:[\"bg\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇬\" src=\"1f1e7-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},burkina_faso:{keywords:[\"burkina\",\"faso\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇫\" src=\"1f1e7-1f1eb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},burundi:{keywords:[\"bi\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇮\" src=\"1f1e7-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cape_verde:{keywords:[\"cabo\",\"verde\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇻\" src=\"1f1e8-1f1fb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cambodia:{keywords:[\"kh\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇭\" src=\"1f1f0-1f1ed.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cameroon:{keywords:[\"cm\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇲\" src=\"1f1e8-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},canada:{keywords:[\"ca\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇦\" src=\"1f1e8-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},canary_islands:{keywords:[\"canary\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇨\" src=\"1f1ee-1f1e8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cayman_islands:{keywords:[\"cayman\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇾\" src=\"1f1f0-1f1fe.png\"/>',fitzpatrick_scale:false,category:\"flags\"},central_african_republic:{keywords:[\"central\",\"african\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇫\" src=\"1f1e8-1f1eb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},chad:{keywords:[\"td\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇩\" src=\"1f1f9-1f1e9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},chile:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇱\" src=\"1f1e8-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cn:{keywords:[\"china\",\"chinese\",\"prc\",\"flag\",\"country\",\"nation\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇳\" src=\"1f1e8-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},christmas_island:{keywords:[\"christmas\",\"island\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇽\" src=\"1f1e8-1f1fd.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cocos_islands:{keywords:[\"cocos\",\"keeling\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇨\" src=\"1f1e8-1f1e8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},colombia:{keywords:[\"co\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇴\" src=\"1f1e8-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},comoros:{keywords:[\"km\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇲\" src=\"1f1f0-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},congo_brazzaville:{keywords:[\"congo\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇬\" src=\"1f1e8-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},congo_kinshasa:{keywords:[\"congo\",\"democratic\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇩\" src=\"1f1e8-1f1e9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cook_islands:{keywords:[\"cook\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇰\" src=\"1f1e8-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},costa_rica:{keywords:[\"costa\",\"rica\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇷\" src=\"1f1e8-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},croatia:{keywords:[\"hr\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇭🇷\" src=\"1f1ed-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cuba:{keywords:[\"cu\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇺\" src=\"1f1e8-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},curacao:{keywords:[\"curaçao\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇼\" src=\"1f1e8-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cyprus:{keywords:[\"cy\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇾\" src=\"1f1e8-1f1fe.png\"/>',fitzpatrick_scale:false,category:\"flags\"},czech_republic:{keywords:[\"cz\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇿\" src=\"1f1e8-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},denmark:{keywords:[\"dk\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇩🇰\" src=\"1f1e9-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},djibouti:{keywords:[\"dj\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇩🇯\" src=\"1f1e9-1f1ef.png\"/>',fitzpatrick_scale:false,category:\"flags\"},dominica:{keywords:[\"dm\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇩🇲\" src=\"1f1e9-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},dominican_republic:{keywords:[\"dominican\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇩🇴\" src=\"1f1e9-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},ecuador:{keywords:[\"ec\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇪🇨\" src=\"1f1ea-1f1e8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},egypt:{keywords:[\"eg\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇪🇬\" src=\"1f1ea-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},el_salvador:{keywords:[\"el\",\"salvador\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇻\" src=\"1f1f8-1f1fb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},equatorial_guinea:{keywords:[\"equatorial\",\"gn\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇶\" src=\"1f1ec-1f1f6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},eritrea:{keywords:[\"er\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇪🇷\" src=\"1f1ea-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},estonia:{keywords:[\"ee\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇪🇪\" src=\"1f1ea-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},ethiopia:{keywords:[\"et\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇪🇹\" src=\"1f1ea-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},eu:{keywords:[\"european\",\"union\",\"flag\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇪🇺\" src=\"1f1ea-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},falkland_islands:{keywords:[\"falkland\",\"islands\",\"malvinas\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇫🇰\" src=\"1f1eb-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},faroe_islands:{keywords:[\"faroe\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇫🇴\" src=\"1f1eb-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},fiji:{keywords:[\"fj\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇫🇯\" src=\"1f1eb-1f1ef.png\"/>',fitzpatrick_scale:false,category:\"flags\"},finland:{keywords:[\"fi\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇫🇮\" src=\"1f1eb-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},fr:{keywords:[\"banner\",\"flag\",\"nation\",\"france\",\"french\",\"country\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇫🇷\" src=\"1f1eb-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},french_guiana:{keywords:[\"french\",\"guiana\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇫\" src=\"1f1ec-1f1eb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},french_polynesia:{keywords:[\"french\",\"polynesia\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇫\" src=\"1f1f5-1f1eb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},french_southern_territories:{keywords:[\"french\",\"southern\",\"territories\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇫\" src=\"1f1f9-1f1eb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},gabon:{keywords:[\"ga\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇦\" src=\"1f1ec-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},gambia:{keywords:[\"gm\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇲\" src=\"1f1ec-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},georgia:{keywords:[\"ge\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇪\" src=\"1f1ec-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},de:{keywords:[\"german\",\"nation\",\"flag\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇩🇪\" src=\"1f1e9-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},ghana:{keywords:[\"gh\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇭\" src=\"1f1ec-1f1ed.png\"/>',fitzpatrick_scale:false,category:\"flags\"},gibraltar:{keywords:[\"gi\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇮\" src=\"1f1ec-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},greece:{keywords:[\"gr\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇷\" src=\"1f1ec-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},greenland:{keywords:[\"gl\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇱\" src=\"1f1ec-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},grenada:{keywords:[\"gd\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇩\" src=\"1f1ec-1f1e9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},guadeloupe:{keywords:[\"gp\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇵\" src=\"1f1ec-1f1f5.png\"/>',fitzpatrick_scale:false,category:\"flags\"},guam:{keywords:[\"gu\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇺\" src=\"1f1ec-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},guatemala:{keywords:[\"gt\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇹\" src=\"1f1ec-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},guernsey:{keywords:[\"gg\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇬\" src=\"1f1ec-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},guinea:{keywords:[\"gn\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇳\" src=\"1f1ec-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},guinea_bissau:{keywords:[\"gw\",\"bissau\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇼\" src=\"1f1ec-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},guyana:{keywords:[\"gy\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇾\" src=\"1f1ec-1f1fe.png\"/>',fitzpatrick_scale:false,category:\"flags\"},haiti:{keywords:[\"ht\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇭🇹\" src=\"1f1ed-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},honduras:{keywords:[\"hn\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇭🇳\" src=\"1f1ed-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},hong_kong:{keywords:[\"hong\",\"kong\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇭🇰\" src=\"1f1ed-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},hungary:{keywords:[\"hu\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇭🇺\" src=\"1f1ed-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},iceland:{keywords:[\"is\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇸\" src=\"1f1ee-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},india:{keywords:[\"in\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇳\" src=\"1f1ee-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},indonesia:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇩\" src=\"1f1ee-1f1e9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},iran:{keywords:[\"iran,\",\"islamic\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇷\" src=\"1f1ee-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},iraq:{keywords:[\"iq\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇶\" src=\"1f1ee-1f1f6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},ireland:{keywords:[\"ie\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇪\" src=\"1f1ee-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},isle_of_man:{keywords:[\"isle\",\"man\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇲\" src=\"1f1ee-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},israel:{keywords:[\"il\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇱\" src=\"1f1ee-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},it:{keywords:[\"italy\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇮🇹\" src=\"1f1ee-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},cote_divoire:{keywords:[\"ivory\",\"coast\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇮\" src=\"1f1e8-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},jamaica:{keywords:[\"jm\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇯🇲\" src=\"1f1ef-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},jp:{keywords:[\"japanese\",\"nation\",\"flag\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇯🇵\" src=\"1f1ef-1f1f5.png\"/>',fitzpatrick_scale:false,category:\"flags\"},jersey:{keywords:[\"je\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇯🇪\" src=\"1f1ef-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},jordan:{keywords:[\"jo\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇯🇴\" src=\"1f1ef-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},kazakhstan:{keywords:[\"kz\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇿\" src=\"1f1f0-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},kenya:{keywords:[\"ke\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇪\" src=\"1f1f0-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},kiribati:{keywords:[\"ki\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇮\" src=\"1f1f0-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},kosovo:{keywords:[\"xk\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇽🇰\" src=\"1f1fd-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},kuwait:{keywords:[\"kw\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇼\" src=\"1f1f0-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},kyrgyzstan:{keywords:[\"kg\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇬\" src=\"1f1f0-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},laos:{keywords:[\"lao\",\"democratic\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇦\" src=\"1f1f1-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},latvia:{keywords:[\"lv\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇻\" src=\"1f1f1-1f1fb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},lebanon:{keywords:[\"lb\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇧\" src=\"1f1f1-1f1e7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},lesotho:{keywords:[\"ls\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇸\" src=\"1f1f1-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},liberia:{keywords:[\"lr\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇷\" src=\"1f1f1-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},libya:{keywords:[\"ly\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇾\" src=\"1f1f1-1f1fe.png\"/>',fitzpatrick_scale:false,category:\"flags\"},liechtenstein:{keywords:[\"li\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇮\" src=\"1f1f1-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},lithuania:{keywords:[\"lt\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇹\" src=\"1f1f1-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},luxembourg:{keywords:[\"lu\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇺\" src=\"1f1f1-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},macau:{keywords:[\"macao\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇴\" src=\"1f1f2-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},macedonia:{keywords:[\"macedonia,\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇰\" src=\"1f1f2-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},madagascar:{keywords:[\"mg\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇬\" src=\"1f1f2-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},malawi:{keywords:[\"mw\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇼\" src=\"1f1f2-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},malaysia:{keywords:[\"my\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇾\" src=\"1f1f2-1f1fe.png\"/>',fitzpatrick_scale:false,category:\"flags\"},maldives:{keywords:[\"mv\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇻\" src=\"1f1f2-1f1fb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},mali:{keywords:[\"ml\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇱\" src=\"1f1f2-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},malta:{keywords:[\"mt\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇹\" src=\"1f1f2-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},marshall_islands:{keywords:[\"marshall\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇭\" src=\"1f1f2-1f1ed.png\"/>',fitzpatrick_scale:false,category:\"flags\"},martinique:{keywords:[\"mq\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇶\" src=\"1f1f2-1f1f6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},mauritania:{keywords:[\"mr\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇷\" src=\"1f1f2-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},mauritius:{keywords:[\"mu\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇺\" src=\"1f1f2-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},mayotte:{keywords:[\"yt\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇾🇹\" src=\"1f1fe-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},mexico:{keywords:[\"mx\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇽\" src=\"1f1f2-1f1fd.png\"/>',fitzpatrick_scale:false,category:\"flags\"},micronesia:{keywords:[\"micronesia,\",\"federated\",\"states\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇫🇲\" src=\"1f1eb-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},moldova:{keywords:[\"moldova,\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇩\" src=\"1f1f2-1f1e9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},monaco:{keywords:[\"mc\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇨\" src=\"1f1f2-1f1e8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},mongolia:{keywords:[\"mn\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇳\" src=\"1f1f2-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},montenegro:{keywords:[\"me\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇪\" src=\"1f1f2-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},montserrat:{keywords:[\"ms\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇸\" src=\"1f1f2-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},morocco:{keywords:[\"ma\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇦\" src=\"1f1f2-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},mozambique:{keywords:[\"mz\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇿\" src=\"1f1f2-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},myanmar:{keywords:[\"mm\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇲\" src=\"1f1f2-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},namibia:{keywords:[\"na\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇦\" src=\"1f1f3-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},nauru:{keywords:[\"nr\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇷\" src=\"1f1f3-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},nepal:{keywords:[\"np\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇵\" src=\"1f1f3-1f1f5.png\"/>',fitzpatrick_scale:false,category:\"flags\"},netherlands:{keywords:[\"nl\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇱\" src=\"1f1f3-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},new_caledonia:{keywords:[\"new\",\"caledonia\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇨\" src=\"1f1f3-1f1e8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},new_zealand:{keywords:[\"new\",\"zealand\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇿\" src=\"1f1f3-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},nicaragua:{keywords:[\"ni\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇮\" src=\"1f1f3-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},niger:{keywords:[\"ne\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇪\" src=\"1f1f3-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},nigeria:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇬\" src=\"1f1f3-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},niue:{keywords:[\"nu\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇺\" src=\"1f1f3-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},norfolk_island:{keywords:[\"norfolk\",\"island\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇫\" src=\"1f1f3-1f1eb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},northern_mariana_islands:{keywords:[\"northern\",\"mariana\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇲🇵\" src=\"1f1f2-1f1f5.png\"/>',fitzpatrick_scale:false,category:\"flags\"},north_korea:{keywords:[\"north\",\"korea\",\"nation\",\"flag\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇵\" src=\"1f1f0-1f1f5.png\"/>',fitzpatrick_scale:false,category:\"flags\"},norway:{keywords:[\"no\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇳🇴\" src=\"1f1f3-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},oman:{keywords:[\"om_symbol\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇴🇲\" src=\"1f1f4-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},pakistan:{keywords:[\"pk\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇰\" src=\"1f1f5-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},palau:{keywords:[\"pw\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇼\" src=\"1f1f5-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},palestinian_territories:{keywords:[\"palestine\",\"palestinian\",\"territories\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇸\" src=\"1f1f5-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},panama:{keywords:[\"pa\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇦\" src=\"1f1f5-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},papua_new_guinea:{keywords:[\"papua\",\"new\",\"guinea\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇬\" src=\"1f1f5-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},paraguay:{keywords:[\"py\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇾\" src=\"1f1f5-1f1fe.png\"/>',fitzpatrick_scale:false,category:\"flags\"},peru:{keywords:[\"pe\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇪\" src=\"1f1f5-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},philippines:{keywords:[\"ph\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇭\" src=\"1f1f5-1f1ed.png\"/>',fitzpatrick_scale:false,category:\"flags\"},pitcairn_islands:{keywords:[\"pitcairn\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇳\" src=\"1f1f5-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},poland:{keywords:[\"pl\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇱\" src=\"1f1f5-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},portugal:{keywords:[\"pt\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇹\" src=\"1f1f5-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},puerto_rico:{keywords:[\"puerto\",\"rico\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇷\" src=\"1f1f5-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},qatar:{keywords:[\"qa\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇶🇦\" src=\"1f1f6-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},reunion:{keywords:[\"réunion\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇷🇪\" src=\"1f1f7-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},romania:{keywords:[\"ro\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇷🇴\" src=\"1f1f7-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},ru:{keywords:[\"russian\",\"federation\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇷🇺\" src=\"1f1f7-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},rwanda:{keywords:[\"rw\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇷🇼\" src=\"1f1f7-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},st_barthelemy:{keywords:[\"saint\",\"barthélemy\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇧🇱\" src=\"1f1e7-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},st_helena:{keywords:[\"saint\",\"helena\",\"ascension\",\"tristan\",\"cunha\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇭\" src=\"1f1f8-1f1ed.png\"/>',fitzpatrick_scale:false,category:\"flags\"},st_kitts_nevis:{keywords:[\"saint\",\"kitts\",\"nevis\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇳\" src=\"1f1f0-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},st_lucia:{keywords:[\"saint\",\"lucia\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇨\" src=\"1f1f1-1f1e8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},st_pierre_miquelon:{keywords:[\"saint\",\"pierre\",\"miquelon\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇵🇲\" src=\"1f1f5-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},st_vincent_grenadines:{keywords:[\"saint\",\"vincent\",\"grenadines\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇻🇨\" src=\"1f1fb-1f1e8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},samoa:{keywords:[\"ws\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇼🇸\" src=\"1f1fc-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},san_marino:{keywords:[\"san\",\"marino\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇲\" src=\"1f1f8-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},sao_tome_principe:{keywords:[\"sao\",\"tome\",\"principe\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇹\" src=\"1f1f8-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},saudi_arabia:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇦\" src=\"1f1f8-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},senegal:{keywords:[\"sn\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇳\" src=\"1f1f8-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},serbia:{keywords:[\"rs\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇷🇸\" src=\"1f1f7-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},seychelles:{keywords:[\"sc\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇨\" src=\"1f1f8-1f1e8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},sierra_leone:{keywords:[\"sierra\",\"leone\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇱\" src=\"1f1f8-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},singapore:{keywords:[\"sg\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇬\" src=\"1f1f8-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},sint_maarten:{keywords:[\"sint\",\"maarten\",\"dutch\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇽\" src=\"1f1f8-1f1fd.png\"/>',fitzpatrick_scale:false,category:\"flags\"},slovakia:{keywords:[\"sk\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇰\" src=\"1f1f8-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},slovenia:{keywords:[\"si\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇮\" src=\"1f1f8-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},solomon_islands:{keywords:[\"solomon\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇧\" src=\"1f1f8-1f1e7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},somalia:{keywords:[\"so\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇴\" src=\"1f1f8-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},south_africa:{keywords:[\"south\",\"africa\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇿🇦\" src=\"1f1ff-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},south_georgia_south_sandwich_islands:{keywords:[\"south\",\"georgia\",\"sandwich\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇸\" src=\"1f1ec-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},kr:{keywords:[\"south\",\"korea\",\"nation\",\"flag\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇰🇷\" src=\"1f1f0-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},south_sudan:{keywords:[\"south\",\"sd\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇸\" src=\"1f1f8-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},es:{keywords:[\"spain\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇪🇸\" src=\"1f1ea-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},sri_lanka:{keywords:[\"sri\",\"lanka\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇱🇰\" src=\"1f1f1-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},sudan:{keywords:[\"sd\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇩\" src=\"1f1f8-1f1e9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},suriname:{keywords:[\"sr\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇷\" src=\"1f1f8-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},swaziland:{keywords:[\"sz\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇿\" src=\"1f1f8-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},sweden:{keywords:[\"se\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇪\" src=\"1f1f8-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},switzerland:{keywords:[\"ch\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇨🇭\" src=\"1f1e8-1f1ed.png\"/>',fitzpatrick_scale:false,category:\"flags\"},syria:{keywords:[\"syrian\",\"arab\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇸🇾\" src=\"1f1f8-1f1fe.png\"/>',fitzpatrick_scale:false,category:\"flags\"},taiwan:{keywords:[\"tw\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇼\" src=\"1f1f9-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},tajikistan:{keywords:[\"tj\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇯\" src=\"1f1f9-1f1ef.png\"/>',fitzpatrick_scale:false,category:\"flags\"},tanzania:{keywords:[\"tanzania,\",\"united\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇿\" src=\"1f1f9-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},thailand:{keywords:[\"th\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇭\" src=\"1f1f9-1f1ed.png\"/>',fitzpatrick_scale:false,category:\"flags\"},timor_leste:{keywords:[\"timor\",\"leste\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇱\" src=\"1f1f9-1f1f1.png\"/>',fitzpatrick_scale:false,category:\"flags\"},togo:{keywords:[\"tg\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇬\" src=\"1f1f9-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},tokelau:{keywords:[\"tk\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇰\" src=\"1f1f9-1f1f0.png\"/>',fitzpatrick_scale:false,category:\"flags\"},tonga:{keywords:[\"to\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇴\" src=\"1f1f9-1f1f4.png\"/>',fitzpatrick_scale:false,category:\"flags\"},trinidad_tobago:{keywords:[\"trinidad\",\"tobago\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇹\" src=\"1f1f9-1f1f9.png\"/>',fitzpatrick_scale:false,category:\"flags\"},tunisia:{keywords:[\"tn\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇳\" src=\"1f1f9-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},tr:{keywords:[\"turkey\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇷\" src=\"1f1f9-1f1f7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},turkmenistan:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇲\" src=\"1f1f9-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},turks_caicos_islands:{keywords:[\"turks\",\"caicos\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇨\" src=\"1f1f9-1f1e8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},tuvalu:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇹🇻\" src=\"1f1f9-1f1fb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},uganda:{keywords:[\"ug\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇺🇬\" src=\"1f1fa-1f1ec.png\"/>',fitzpatrick_scale:false,category:\"flags\"},ukraine:{keywords:[\"ua\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇺🇦\" src=\"1f1fa-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},united_arab_emirates:{keywords:[\"united\",\"arab\",\"emirates\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇦🇪\" src=\"1f1e6-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},uk:{keywords:[\"united\",\"kingdom\",\"great\",\"britain\",\"northern\",\"ireland\",\"flag\",\"nation\",\"country\",\"banner\",\"british\",\"UK\",\"english\",\"england\",\"union jack\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇬🇧\" src=\"1f1ec-1f1e7.png\"/>',fitzpatrick_scale:false,category:\"flags\"},england:{keywords:[\"flag\",\"english\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏴󠁧󠁢󠁥󠁮󠁧󠁿\" src=\"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png\"/>',fitzpatrick_scale:false,category:\"flags\"},scotland:{keywords:[\"flag\",\"scottish\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏴󠁧󠁢󠁳󠁣󠁴󠁿\" src=\"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png\"/>',fitzpatrick_scale:false,category:\"flags\"},wales:{keywords:[\"flag\",\"welsh\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏴󠁧󠁢󠁷󠁬󠁳󠁿\" src=\"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png\"/>',fitzpatrick_scale:false,category:\"flags\"},us:{keywords:[\"united\",\"states\",\"america\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇺🇸\" src=\"1f1fa-1f1f8.png\"/>',fitzpatrick_scale:false,category:\"flags\"},us_virgin_islands:{keywords:[\"virgin\",\"islands\",\"us\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇻🇮\" src=\"1f1fb-1f1ee.png\"/>',fitzpatrick_scale:false,category:\"flags\"},uruguay:{keywords:[\"uy\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇺🇾\" src=\"1f1fa-1f1fe.png\"/>',fitzpatrick_scale:false,category:\"flags\"},uzbekistan:{keywords:[\"uz\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇺🇿\" src=\"1f1fa-1f1ff.png\"/>',fitzpatrick_scale:false,category:\"flags\"},vanuatu:{keywords:[\"vu\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇻🇺\" src=\"1f1fb-1f1fa.png\"/>',fitzpatrick_scale:false,category:\"flags\"},vatican_city:{keywords:[\"vatican\",\"city\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇻🇦\" src=\"1f1fb-1f1e6.png\"/>',fitzpatrick_scale:false,category:\"flags\"},venezuela:{keywords:[\"ve\",\"bolivarian\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇻🇪\" src=\"1f1fb-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},vietnam:{keywords:[\"viet\",\"nam\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇻🇳\" src=\"1f1fb-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},wallis_futuna:{keywords:[\"wallis\",\"futuna\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇼🇫\" src=\"1f1fc-1f1eb.png\"/>',fitzpatrick_scale:false,category:\"flags\"},western_sahara:{keywords:[\"western\",\"sahara\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇪🇭\" src=\"1f1ea-1f1ed.png\"/>',fitzpatrick_scale:false,category:\"flags\"},yemen:{keywords:[\"ye\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇾🇪\" src=\"1f1fe-1f1ea.png\"/>',fitzpatrick_scale:false,category:\"flags\"},zambia:{keywords:[\"zm\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇿🇲\" src=\"1f1ff-1f1f2.png\"/>',fitzpatrick_scale:false,category:\"flags\"},zimbabwe:{keywords:[\"zw\",\"flag\",\"nation\",\"country\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇿🇼\" src=\"1f1ff-1f1fc.png\"/>',fitzpatrick_scale:false,category:\"flags\"},united_nations:{keywords:[\"un\",\"flag\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🇺🇳\" src=\"1f1fa-1f1f3.png\"/>',fitzpatrick_scale:false,category:\"flags\"},pirate_flag:{keywords:[\"skull\",\"crossbones\",\"flag\",\"banner\"],char:'<img data-emoticon=\"true\" style=\"width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em\" draggable=\"false\" alt=\"🏴‍☠️\" src=\"1f3f4-200d-2620-fe0f.png\"/>',fitzpatrick_scale:false,category:\"flags\"}});window.tinymce.Resource.add(\"tinymce.plugins.emoticons\",{grinning:{keywords:[\"face\",\"smile\",\"happy\",\"joy\",\":D\",\"grin\"],char:\"😀\",fitzpatrick_scale:false,category:\"people\"},grimacing:{keywords:[\"face\",\"grimace\",\"teeth\"],char:\"😬\",fitzpatrick_scale:false,category:\"people\"},grin:{keywords:[\"face\",\"happy\",\"smile\",\"joy\",\"kawaii\"],char:\"😁\",fitzpatrick_scale:false,category:\"people\"},joy:{keywords:[\"face\",\"cry\",\"tears\",\"weep\",\"happy\",\"happytears\",\"haha\"],char:\"😂\",fitzpatrick_scale:false,category:\"people\"},rofl:{keywords:[\"face\",\"rolling\",\"floor\",\"laughing\",\"lol\",\"haha\"],char:\"🤣\",fitzpatrick_scale:false,category:\"people\"},partying:{keywords:[\"face\",\"celebration\",\"woohoo\"],char:\"🥳\",fitzpatrick_scale:false,category:\"people\"},smiley:{keywords:[\"face\",\"happy\",\"joy\",\"haha\",\":D\",\":)\",\"smile\",\"funny\"],char:\"😃\",fitzpatrick_scale:false,category:\"people\"},smile:{keywords:[\"face\",\"happy\",\"joy\",\"funny\",\"haha\",\"laugh\",\"like\",\":D\",\":)\"],char:\"😄\",fitzpatrick_scale:false,category:\"people\"},sweat_smile:{keywords:[\"face\",\"hot\",\"happy\",\"laugh\",\"sweat\",\"smile\",\"relief\"],char:\"😅\",fitzpatrick_scale:false,category:\"people\"},laughing:{keywords:[\"happy\",\"joy\",\"lol\",\"satisfied\",\"haha\",\"face\",\"glad\",\"XD\",\"laugh\"],char:\"😆\",fitzpatrick_scale:false,category:\"people\"},innocent:{keywords:[\"face\",\"angel\",\"heaven\",\"halo\"],char:\"😇\",fitzpatrick_scale:false,category:\"people\"},wink:{keywords:[\"face\",\"happy\",\"mischievous\",\"secret\",\";)\",\"smile\",\"eye\"],char:\"😉\",fitzpatrick_scale:false,category:\"people\"},blush:{keywords:[\"face\",\"smile\",\"happy\",\"flushed\",\"crush\",\"embarrassed\",\"shy\",\"joy\"],char:\"😊\",fitzpatrick_scale:false,category:\"people\"},slightly_smiling_face:{keywords:[\"face\",\"smile\"],char:\"🙂\",fitzpatrick_scale:false,category:\"people\"},upside_down_face:{keywords:[\"face\",\"flipped\",\"silly\",\"smile\"],char:\"🙃\",fitzpatrick_scale:false,category:\"people\"},relaxed:{keywords:[\"face\",\"blush\",\"massage\",\"happiness\"],char:\"☺️\",fitzpatrick_scale:false,category:\"people\"},yum:{keywords:[\"happy\",\"joy\",\"tongue\",\"smile\",\"face\",\"silly\",\"yummy\",\"nom\",\"delicious\",\"savouring\"],char:\"😋\",fitzpatrick_scale:false,category:\"people\"},relieved:{keywords:[\"face\",\"relaxed\",\"phew\",\"massage\",\"happiness\"],char:\"😌\",fitzpatrick_scale:false,category:\"people\"},heart_eyes:{keywords:[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"crush\",\"heart\"],char:\"😍\",fitzpatrick_scale:false,category:\"people\"},smiling_face_with_three_hearts:{keywords:[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"crush\",\"hearts\",\"adore\"],char:\"🥰\",fitzpatrick_scale:false,category:\"people\"},kissing_heart:{keywords:[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"kiss\"],char:\"😘\",fitzpatrick_scale:false,category:\"people\"},kissing:{keywords:[\"love\",\"like\",\"face\",\"3\",\"valentines\",\"infatuation\",\"kiss\"],char:\"😗\",fitzpatrick_scale:false,category:\"people\"},kissing_smiling_eyes:{keywords:[\"face\",\"affection\",\"valentines\",\"infatuation\",\"kiss\"],char:\"😙\",fitzpatrick_scale:false,category:\"people\"},kissing_closed_eyes:{keywords:[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"kiss\"],char:\"😚\",fitzpatrick_scale:false,category:\"people\"},stuck_out_tongue_winking_eye:{keywords:[\"face\",\"prank\",\"childish\",\"playful\",\"mischievous\",\"smile\",\"wink\",\"tongue\"],char:\"😜\",fitzpatrick_scale:false,category:\"people\"},zany:{keywords:[\"face\",\"goofy\",\"crazy\"],char:\"🤪\",fitzpatrick_scale:false,category:\"people\"},raised_eyebrow:{keywords:[\"face\",\"distrust\",\"scepticism\",\"disapproval\",\"disbelief\",\"surprise\"],char:\"🤨\",fitzpatrick_scale:false,category:\"people\"},monocle:{keywords:[\"face\",\"stuffy\",\"wealthy\"],char:\"🧐\",fitzpatrick_scale:false,category:\"people\"},stuck_out_tongue_closed_eyes:{keywords:[\"face\",\"prank\",\"playful\",\"mischievous\",\"smile\",\"tongue\"],char:\"😝\",fitzpatrick_scale:false,category:\"people\"},stuck_out_tongue:{keywords:[\"face\",\"prank\",\"childish\",\"playful\",\"mischievous\",\"smile\",\"tongue\"],char:\"😛\",fitzpatrick_scale:false,category:\"people\"},money_mouth_face:{keywords:[\"face\",\"rich\",\"dollar\",\"money\"],char:\"🤑\",fitzpatrick_scale:false,category:\"people\"},nerd_face:{keywords:[\"face\",\"nerdy\",\"geek\",\"dork\"],char:\"🤓\",fitzpatrick_scale:false,category:\"people\"},sunglasses:{keywords:[\"face\",\"cool\",\"smile\",\"summer\",\"beach\",\"sunglass\"],char:\"😎\",fitzpatrick_scale:false,category:\"people\"},star_struck:{keywords:[\"face\",\"smile\",\"starry\",\"eyes\",\"grinning\"],char:\"🤩\",fitzpatrick_scale:false,category:\"people\"},clown_face:{keywords:[\"face\"],char:\"🤡\",fitzpatrick_scale:false,category:\"people\"},cowboy_hat_face:{keywords:[\"face\",\"cowgirl\",\"hat\"],char:\"🤠\",fitzpatrick_scale:false,category:\"people\"},hugs:{keywords:[\"face\",\"smile\",\"hug\"],char:\"🤗\",fitzpatrick_scale:false,category:\"people\"},smirk:{keywords:[\"face\",\"smile\",\"mean\",\"prank\",\"smug\",\"sarcasm\"],char:\"😏\",fitzpatrick_scale:false,category:\"people\"},no_mouth:{keywords:[\"face\",\"hellokitty\"],char:\"😶\",fitzpatrick_scale:false,category:\"people\"},neutral_face:{keywords:[\"indifference\",\"meh\",\":|\",\"neutral\"],char:\"😐\",fitzpatrick_scale:false,category:\"people\"},expressionless:{keywords:[\"face\",\"indifferent\",\"-_-\",\"meh\",\"deadpan\"],char:\"😑\",fitzpatrick_scale:false,category:\"people\"},unamused:{keywords:[\"indifference\",\"bored\",\"straight face\",\"serious\",\"sarcasm\",\"unimpressed\",\"skeptical\",\"dubious\",\"side_eye\"],char:\"😒\",fitzpatrick_scale:false,category:\"people\"},roll_eyes:{keywords:[\"face\",\"eyeroll\",\"frustrated\"],char:\"🙄\",fitzpatrick_scale:false,category:\"people\"},thinking:{keywords:[\"face\",\"hmmm\",\"think\",\"consider\"],char:\"🤔\",fitzpatrick_scale:false,category:\"people\"},lying_face:{keywords:[\"face\",\"lie\",\"pinocchio\"],char:\"🤥\",fitzpatrick_scale:false,category:\"people\"},hand_over_mouth:{keywords:[\"face\",\"whoops\",\"shock\",\"surprise\"],char:\"🤭\",fitzpatrick_scale:false,category:\"people\"},shushing:{keywords:[\"face\",\"quiet\",\"shhh\"],char:\"🤫\",fitzpatrick_scale:false,category:\"people\"},symbols_over_mouth:{keywords:[\"face\",\"swearing\",\"cursing\",\"cussing\",\"profanity\",\"expletive\"],char:\"🤬\",fitzpatrick_scale:false,category:\"people\"},exploding_head:{keywords:[\"face\",\"shocked\",\"mind\",\"blown\"],char:\"🤯\",fitzpatrick_scale:false,category:\"people\"},flushed:{keywords:[\"face\",\"blush\",\"shy\",\"flattered\"],char:\"😳\",fitzpatrick_scale:false,category:\"people\"},disappointed:{keywords:[\"face\",\"sad\",\"upset\",\"depressed\",\":(\"],char:\"😞\",fitzpatrick_scale:false,category:\"people\"},worried:{keywords:[\"face\",\"concern\",\"nervous\",\":(\"],char:\"😟\",fitzpatrick_scale:false,category:\"people\"},angry:{keywords:[\"mad\",\"face\",\"annoyed\",\"frustrated\"],char:\"😠\",fitzpatrick_scale:false,category:\"people\"},rage:{keywords:[\"angry\",\"mad\",\"hate\",\"despise\"],char:\"😡\",fitzpatrick_scale:false,category:\"people\"},pensive:{keywords:[\"face\",\"sad\",\"depressed\",\"upset\"],char:\"😔\",fitzpatrick_scale:false,category:\"people\"},confused:{keywords:[\"face\",\"indifference\",\"huh\",\"weird\",\"hmmm\",\":/\"],char:\"😕\",fitzpatrick_scale:false,category:\"people\"},slightly_frowning_face:{keywords:[\"face\",\"frowning\",\"disappointed\",\"sad\",\"upset\"],char:\"🙁\",fitzpatrick_scale:false,category:\"people\"},frowning_face:{keywords:[\"face\",\"sad\",\"upset\",\"frown\"],char:\"☹\",fitzpatrick_scale:false,category:\"people\"},persevere:{keywords:[\"face\",\"sick\",\"no\",\"upset\",\"oops\"],char:\"😣\",fitzpatrick_scale:false,category:\"people\"},confounded:{keywords:[\"face\",\"confused\",\"sick\",\"unwell\",\"oops\",\":S\"],char:\"😖\",fitzpatrick_scale:false,category:\"people\"},tired_face:{keywords:[\"sick\",\"whine\",\"upset\",\"frustrated\"],char:\"😫\",fitzpatrick_scale:false,category:\"people\"},weary:{keywords:[\"face\",\"tired\",\"sleepy\",\"sad\",\"frustrated\",\"upset\"],char:\"😩\",fitzpatrick_scale:false,category:\"people\"},pleading:{keywords:[\"face\",\"begging\",\"mercy\"],char:\"🥺\",fitzpatrick_scale:false,category:\"people\"},triumph:{keywords:[\"face\",\"gas\",\"phew\",\"proud\",\"pride\"],char:\"😤\",fitzpatrick_scale:false,category:\"people\"},open_mouth:{keywords:[\"face\",\"surprise\",\"impressed\",\"wow\",\"whoa\",\":O\"],char:\"😮\",fitzpatrick_scale:false,category:\"people\"},scream:{keywords:[\"face\",\"munch\",\"scared\",\"omg\"],char:\"😱\",fitzpatrick_scale:false,category:\"people\"},fearful:{keywords:[\"face\",\"scared\",\"terrified\",\"nervous\",\"oops\",\"huh\"],char:\"😨\",fitzpatrick_scale:false,category:\"people\"},cold_sweat:{keywords:[\"face\",\"nervous\",\"sweat\"],char:\"😰\",fitzpatrick_scale:false,category:\"people\"},hushed:{keywords:[\"face\",\"woo\",\"shh\"],char:\"😯\",fitzpatrick_scale:false,category:\"people\"},frowning:{keywords:[\"face\",\"aw\",\"what\"],char:\"😦\",fitzpatrick_scale:false,category:\"people\"},anguished:{keywords:[\"face\",\"stunned\",\"nervous\"],char:\"😧\",fitzpatrick_scale:false,category:\"people\"},cry:{keywords:[\"face\",\"tears\",\"sad\",\"depressed\",\"upset\",\":'(\"],char:\"😢\",fitzpatrick_scale:false,category:\"people\"},disappointed_relieved:{keywords:[\"face\",\"phew\",\"sweat\",\"nervous\"],char:\"😥\",fitzpatrick_scale:false,category:\"people\"},drooling_face:{keywords:[\"face\"],char:\"🤤\",fitzpatrick_scale:false,category:\"people\"},sleepy:{keywords:[\"face\",\"tired\",\"rest\",\"nap\"],char:\"😪\",fitzpatrick_scale:false,category:\"people\"},sweat:{keywords:[\"face\",\"hot\",\"sad\",\"tired\",\"exercise\"],char:\"😓\",fitzpatrick_scale:false,category:\"people\"},hot:{keywords:[\"face\",\"feverish\",\"heat\",\"red\",\"sweating\"],char:\"🥵\",fitzpatrick_scale:false,category:\"people\"},cold:{keywords:[\"face\",\"blue\",\"freezing\",\"frozen\",\"frostbite\",\"icicles\"],char:\"🥶\",fitzpatrick_scale:false,category:\"people\"},sob:{keywords:[\"face\",\"cry\",\"tears\",\"sad\",\"upset\",\"depressed\"],char:\"😭\",fitzpatrick_scale:false,category:\"people\"},dizzy_face:{keywords:[\"spent\",\"unconscious\",\"xox\",\"dizzy\"],char:\"😵\",fitzpatrick_scale:false,category:\"people\"},astonished:{keywords:[\"face\",\"xox\",\"surprised\",\"poisoned\"],char:\"😲\",fitzpatrick_scale:false,category:\"people\"},zipper_mouth_face:{keywords:[\"face\",\"sealed\",\"zipper\",\"secret\"],char:\"🤐\",fitzpatrick_scale:false,category:\"people\"},nauseated_face:{keywords:[\"face\",\"vomit\",\"gross\",\"green\",\"sick\",\"throw up\",\"ill\"],char:\"🤢\",fitzpatrick_scale:false,category:\"people\"},sneezing_face:{keywords:[\"face\",\"gesundheit\",\"sneeze\",\"sick\",\"allergy\"],char:\"🤧\",fitzpatrick_scale:false,category:\"people\"},vomiting:{keywords:[\"face\",\"sick\"],char:\"🤮\",fitzpatrick_scale:false,category:\"people\"},mask:{keywords:[\"face\",\"sick\",\"ill\",\"disease\"],char:\"😷\",fitzpatrick_scale:false,category:\"people\"},face_with_thermometer:{keywords:[\"sick\",\"temperature\",\"thermometer\",\"cold\",\"fever\"],char:\"🤒\",fitzpatrick_scale:false,category:\"people\"},face_with_head_bandage:{keywords:[\"injured\",\"clumsy\",\"bandage\",\"hurt\"],char:\"🤕\",fitzpatrick_scale:false,category:\"people\"},woozy:{keywords:[\"face\",\"dizzy\",\"intoxicated\",\"tipsy\",\"wavy\"],char:\"🥴\",fitzpatrick_scale:false,category:\"people\"},sleeping:{keywords:[\"face\",\"tired\",\"sleepy\",\"night\",\"zzz\"],char:\"😴\",fitzpatrick_scale:false,category:\"people\"},zzz:{keywords:[\"sleepy\",\"tired\",\"dream\"],char:\"💤\",fitzpatrick_scale:false,category:\"people\"},poop:{keywords:[\"hankey\",\"shitface\",\"fail\",\"turd\",\"shit\"],char:\"💩\",fitzpatrick_scale:false,category:\"people\"},smiling_imp:{keywords:[\"devil\",\"horns\"],char:\"😈\",fitzpatrick_scale:false,category:\"people\"},imp:{keywords:[\"devil\",\"angry\",\"horns\"],char:\"👿\",fitzpatrick_scale:false,category:\"people\"},japanese_ogre:{keywords:[\"monster\",\"red\",\"mask\",\"halloween\",\"scary\",\"creepy\",\"devil\",\"demon\",\"japanese\",\"ogre\"],char:\"👹\",fitzpatrick_scale:false,category:\"people\"},japanese_goblin:{keywords:[\"red\",\"evil\",\"mask\",\"monster\",\"scary\",\"creepy\",\"japanese\",\"goblin\"],char:\"👺\",fitzpatrick_scale:false,category:\"people\"},skull:{keywords:[\"dead\",\"skeleton\",\"creepy\",\"death\"],char:\"💀\",fitzpatrick_scale:false,category:\"people\"},ghost:{keywords:[\"halloween\",\"spooky\",\"scary\"],char:\"👻\",fitzpatrick_scale:false,category:\"people\"},alien:{keywords:[\"UFO\",\"paul\",\"weird\",\"outer_space\"],char:\"👽\",fitzpatrick_scale:false,category:\"people\"},robot:{keywords:[\"computer\",\"machine\",\"bot\"],char:\"🤖\",fitzpatrick_scale:false,category:\"people\"},smiley_cat:{keywords:[\"animal\",\"cats\",\"happy\",\"smile\"],char:\"😺\",fitzpatrick_scale:false,category:\"people\"},smile_cat:{keywords:[\"animal\",\"cats\",\"smile\"],char:\"😸\",fitzpatrick_scale:false,category:\"people\"},joy_cat:{keywords:[\"animal\",\"cats\",\"haha\",\"happy\",\"tears\"],char:\"😹\",fitzpatrick_scale:false,category:\"people\"},heart_eyes_cat:{keywords:[\"animal\",\"love\",\"like\",\"affection\",\"cats\",\"valentines\",\"heart\"],char:\"😻\",fitzpatrick_scale:false,category:\"people\"},smirk_cat:{keywords:[\"animal\",\"cats\",\"smirk\"],char:\"😼\",fitzpatrick_scale:false,category:\"people\"},kissing_cat:{keywords:[\"animal\",\"cats\",\"kiss\"],char:\"😽\",fitzpatrick_scale:false,category:\"people\"},scream_cat:{keywords:[\"animal\",\"cats\",\"munch\",\"scared\",\"scream\"],char:\"🙀\",fitzpatrick_scale:false,category:\"people\"},crying_cat_face:{keywords:[\"animal\",\"tears\",\"weep\",\"sad\",\"cats\",\"upset\",\"cry\"],char:\"😿\",fitzpatrick_scale:false,category:\"people\"},pouting_cat:{keywords:[\"animal\",\"cats\"],char:\"😾\",fitzpatrick_scale:false,category:\"people\"},palms_up:{keywords:[\"hands\",\"gesture\",\"cupped\",\"prayer\"],char:\"🤲\",fitzpatrick_scale:true,category:\"people\"},raised_hands:{keywords:[\"gesture\",\"hooray\",\"yea\",\"celebration\",\"hands\"],char:\"🙌\",fitzpatrick_scale:true,category:\"people\"},clap:{keywords:[\"hands\",\"praise\",\"applause\",\"congrats\",\"yay\"],char:\"👏\",fitzpatrick_scale:true,category:\"people\"},wave:{keywords:[\"hands\",\"gesture\",\"goodbye\",\"solong\",\"farewell\",\"hello\",\"hi\",\"palm\"],char:\"👋\",fitzpatrick_scale:true,category:\"people\"},call_me_hand:{keywords:[\"hands\",\"gesture\"],char:\"🤙\",fitzpatrick_scale:true,category:\"people\"},\"+1\":{keywords:[\"thumbsup\",\"yes\",\"awesome\",\"good\",\"agree\",\"accept\",\"cool\",\"hand\",\"like\"],char:\"👍\",fitzpatrick_scale:true,category:\"people\"},\"-1\":{keywords:[\"thumbsdown\",\"no\",\"dislike\",\"hand\"],char:\"👎\",fitzpatrick_scale:true,category:\"people\"},facepunch:{keywords:[\"angry\",\"violence\",\"fist\",\"hit\",\"attack\",\"hand\"],char:\"👊\",fitzpatrick_scale:true,category:\"people\"},fist:{keywords:[\"fingers\",\"hand\",\"grasp\"],char:\"✊\",fitzpatrick_scale:true,category:\"people\"},fist_left:{keywords:[\"hand\",\"fistbump\"],char:\"🤛\",fitzpatrick_scale:true,category:\"people\"},fist_right:{keywords:[\"hand\",\"fistbump\"],char:\"🤜\",fitzpatrick_scale:true,category:\"people\"},v:{keywords:[\"fingers\",\"ohyeah\",\"hand\",\"peace\",\"victory\",\"two\"],char:\"✌\",fitzpatrick_scale:true,category:\"people\"},ok_hand:{keywords:[\"fingers\",\"limbs\",\"perfect\",\"ok\",\"okay\"],char:\"👌\",fitzpatrick_scale:true,category:\"people\"},raised_hand:{keywords:[\"fingers\",\"stop\",\"highfive\",\"palm\",\"ban\"],char:\"✋\",fitzpatrick_scale:true,category:\"people\"},raised_back_of_hand:{keywords:[\"fingers\",\"raised\",\"backhand\"],char:\"🤚\",fitzpatrick_scale:true,category:\"people\"},open_hands:{keywords:[\"fingers\",\"butterfly\",\"hands\",\"open\"],char:\"👐\",fitzpatrick_scale:true,category:\"people\"},muscle:{keywords:[\"arm\",\"flex\",\"hand\",\"summer\",\"strong\",\"biceps\"],char:\"💪\",fitzpatrick_scale:true,category:\"people\"},pray:{keywords:[\"please\",\"hope\",\"wish\",\"namaste\",\"highfive\"],char:\"🙏\",fitzpatrick_scale:true,category:\"people\"},foot:{keywords:[\"kick\",\"stomp\"],char:\"🦶\",fitzpatrick_scale:true,category:\"people\"},leg:{keywords:[\"kick\",\"limb\"],char:\"🦵\",fitzpatrick_scale:true,category:\"people\"},handshake:{keywords:[\"agreement\",\"shake\"],char:\"🤝\",fitzpatrick_scale:false,category:\"people\"},point_up:{keywords:[\"hand\",\"fingers\",\"direction\",\"up\"],char:\"☝\",fitzpatrick_scale:true,category:\"people\"},point_up_2:{keywords:[\"fingers\",\"hand\",\"direction\",\"up\"],char:\"👆\",fitzpatrick_scale:true,category:\"people\"},point_down:{keywords:[\"fingers\",\"hand\",\"direction\",\"down\"],char:\"👇\",fitzpatrick_scale:true,category:\"people\"},point_left:{keywords:[\"direction\",\"fingers\",\"hand\",\"left\"],char:\"👈\",fitzpatrick_scale:true,category:\"people\"},point_right:{keywords:[\"fingers\",\"hand\",\"direction\",\"right\"],char:\"👉\",fitzpatrick_scale:true,category:\"people\"},fu:{keywords:[\"hand\",\"fingers\",\"rude\",\"middle\",\"flipping\"],char:\"🖕\",fitzpatrick_scale:true,category:\"people\"},raised_hand_with_fingers_splayed:{keywords:[\"hand\",\"fingers\",\"palm\"],char:\"🖐\",fitzpatrick_scale:true,category:\"people\"},love_you:{keywords:[\"hand\",\"fingers\",\"gesture\"],char:\"🤟\",fitzpatrick_scale:true,category:\"people\"},metal:{keywords:[\"hand\",\"fingers\",\"evil_eye\",\"sign_of_horns\",\"rock_on\"],char:\"🤘\",fitzpatrick_scale:true,category:\"people\"},crossed_fingers:{keywords:[\"good\",\"lucky\"],char:\"🤞\",fitzpatrick_scale:true,category:\"people\"},vulcan_salute:{keywords:[\"hand\",\"fingers\",\"spock\",\"star trek\"],char:\"🖖\",fitzpatrick_scale:true,category:\"people\"},writing_hand:{keywords:[\"lower_left_ballpoint_pen\",\"stationery\",\"write\",\"compose\"],char:\"✍\",fitzpatrick_scale:true,category:\"people\"},selfie:{keywords:[\"camera\",\"phone\"],char:\"🤳\",fitzpatrick_scale:true,category:\"people\"},nail_care:{keywords:[\"beauty\",\"manicure\",\"finger\",\"fashion\",\"nail\"],char:\"💅\",fitzpatrick_scale:true,category:\"people\"},lips:{keywords:[\"mouth\",\"kiss\"],char:\"👄\",fitzpatrick_scale:false,category:\"people\"},tooth:{keywords:[\"teeth\",\"dentist\"],char:\"🦷\",fitzpatrick_scale:false,category:\"people\"},tongue:{keywords:[\"mouth\",\"playful\"],char:\"👅\",fitzpatrick_scale:false,category:\"people\"},ear:{keywords:[\"face\",\"hear\",\"sound\",\"listen\"],char:\"👂\",fitzpatrick_scale:true,category:\"people\"},nose:{keywords:[\"smell\",\"sniff\"],char:\"👃\",fitzpatrick_scale:true,category:\"people\"},eye:{keywords:[\"face\",\"look\",\"see\",\"watch\",\"stare\"],char:\"👁\",fitzpatrick_scale:false,category:\"people\"},eyes:{keywords:[\"look\",\"watch\",\"stalk\",\"peek\",\"see\"],char:\"👀\",fitzpatrick_scale:false,category:\"people\"},brain:{keywords:[\"smart\",\"intelligent\"],char:\"🧠\",fitzpatrick_scale:false,category:\"people\"},bust_in_silhouette:{keywords:[\"user\",\"person\",\"human\"],char:\"👤\",fitzpatrick_scale:false,category:\"people\"},busts_in_silhouette:{keywords:[\"user\",\"person\",\"human\",\"group\",\"team\"],char:\"👥\",fitzpatrick_scale:false,category:\"people\"},speaking_head:{keywords:[\"user\",\"person\",\"human\",\"sing\",\"say\",\"talk\"],char:\"🗣\",fitzpatrick_scale:false,category:\"people\"},baby:{keywords:[\"child\",\"boy\",\"girl\",\"toddler\"],char:\"👶\",fitzpatrick_scale:true,category:\"people\"},child:{keywords:[\"gender-neutral\",\"young\"],char:\"🧒\",fitzpatrick_scale:true,category:\"people\"},boy:{keywords:[\"man\",\"male\",\"guy\",\"teenager\"],char:\"👦\",fitzpatrick_scale:true,category:\"people\"},girl:{keywords:[\"female\",\"woman\",\"teenager\"],char:\"👧\",fitzpatrick_scale:true,category:\"people\"},adult:{keywords:[\"gender-neutral\",\"person\"],char:\"🧑\",fitzpatrick_scale:true,category:\"people\"},man:{keywords:[\"mustache\",\"father\",\"dad\",\"guy\",\"classy\",\"sir\",\"moustache\"],char:\"👨\",fitzpatrick_scale:true,category:\"people\"},woman:{keywords:[\"female\",\"girls\",\"lady\"],char:\"👩\",fitzpatrick_scale:true,category:\"people\"},blonde_woman:{keywords:[\"woman\",\"female\",\"girl\",\"blonde\",\"person\"],char:\"👱‍♀️\",fitzpatrick_scale:true,category:\"people\"},blonde_man:{keywords:[\"man\",\"male\",\"boy\",\"blonde\",\"guy\",\"person\"],char:\"👱\",fitzpatrick_scale:true,category:\"people\"},bearded_person:{keywords:[\"person\",\"bewhiskered\"],char:\"🧔\",fitzpatrick_scale:true,category:\"people\"},older_adult:{keywords:[\"human\",\"elder\",\"senior\",\"gender-neutral\"],char:\"🧓\",fitzpatrick_scale:true,category:\"people\"},older_man:{keywords:[\"human\",\"male\",\"men\",\"old\",\"elder\",\"senior\"],char:\"👴\",fitzpatrick_scale:true,category:\"people\"},older_woman:{keywords:[\"human\",\"female\",\"women\",\"lady\",\"old\",\"elder\",\"senior\"],char:\"👵\",fitzpatrick_scale:true,category:\"people\"},man_with_gua_pi_mao:{keywords:[\"male\",\"boy\",\"chinese\"],char:\"👲\",fitzpatrick_scale:true,category:\"people\"},woman_with_headscarf:{keywords:[\"female\",\"hijab\",\"mantilla\",\"tichel\"],char:\"🧕\",fitzpatrick_scale:true,category:\"people\"},woman_with_turban:{keywords:[\"female\",\"indian\",\"hinduism\",\"arabs\",\"woman\"],char:\"👳‍♀️\",fitzpatrick_scale:true,category:\"people\"},man_with_turban:{keywords:[\"male\",\"indian\",\"hinduism\",\"arabs\"],char:\"👳\",fitzpatrick_scale:true,category:\"people\"},policewoman:{keywords:[\"woman\",\"police\",\"law\",\"legal\",\"enforcement\",\"arrest\",\"911\",\"female\"],char:\"👮‍♀️\",fitzpatrick_scale:true,category:\"people\"},policeman:{keywords:[\"man\",\"police\",\"law\",\"legal\",\"enforcement\",\"arrest\",\"911\"],char:\"👮\",fitzpatrick_scale:true,category:\"people\"},construction_worker_woman:{keywords:[\"female\",\"human\",\"wip\",\"build\",\"construction\",\"worker\",\"labor\",\"woman\"],char:\"👷‍♀️\",fitzpatrick_scale:true,category:\"people\"},construction_worker_man:{keywords:[\"male\",\"human\",\"wip\",\"guy\",\"build\",\"construction\",\"worker\",\"labor\"],char:\"👷\",fitzpatrick_scale:true,category:\"people\"},guardswoman:{keywords:[\"uk\",\"gb\",\"british\",\"female\",\"royal\",\"woman\"],char:\"💂‍♀️\",fitzpatrick_scale:true,category:\"people\"},guardsman:{keywords:[\"uk\",\"gb\",\"british\",\"male\",\"guy\",\"royal\"],char:\"💂\",fitzpatrick_scale:true,category:\"people\"},female_detective:{keywords:[\"human\",\"spy\",\"detective\",\"female\",\"woman\"],char:\"🕵️‍♀️\",fitzpatrick_scale:true,category:\"people\"},male_detective:{keywords:[\"human\",\"spy\",\"detective\"],char:\"🕵\",fitzpatrick_scale:true,category:\"people\"},woman_health_worker:{keywords:[\"doctor\",\"nurse\",\"therapist\",\"healthcare\",\"woman\",\"human\"],char:\"👩‍⚕️\",fitzpatrick_scale:true,category:\"people\"},man_health_worker:{keywords:[\"doctor\",\"nurse\",\"therapist\",\"healthcare\",\"man\",\"human\"],char:\"👨‍⚕️\",fitzpatrick_scale:true,category:\"people\"},woman_farmer:{keywords:[\"rancher\",\"gardener\",\"woman\",\"human\"],char:\"👩‍🌾\",fitzpatrick_scale:true,category:\"people\"},man_farmer:{keywords:[\"rancher\",\"gardener\",\"man\",\"human\"],char:\"👨‍🌾\",fitzpatrick_scale:true,category:\"people\"},woman_cook:{keywords:[\"chef\",\"woman\",\"human\"],char:\"👩‍🍳\",fitzpatrick_scale:true,category:\"people\"},man_cook:{keywords:[\"chef\",\"man\",\"human\"],char:\"👨‍🍳\",fitzpatrick_scale:true,category:\"people\"},woman_student:{keywords:[\"graduate\",\"woman\",\"human\"],char:\"👩‍🎓\",fitzpatrick_scale:true,category:\"people\"},man_student:{keywords:[\"graduate\",\"man\",\"human\"],char:\"👨‍🎓\",fitzpatrick_scale:true,category:\"people\"},woman_singer:{keywords:[\"rockstar\",\"entertainer\",\"woman\",\"human\"],char:\"👩‍🎤\",fitzpatrick_scale:true,category:\"people\"},man_singer:{keywords:[\"rockstar\",\"entertainer\",\"man\",\"human\"],char:\"👨‍🎤\",fitzpatrick_scale:true,category:\"people\"},woman_teacher:{keywords:[\"instructor\",\"professor\",\"woman\",\"human\"],char:\"👩‍🏫\",fitzpatrick_scale:true,category:\"people\"},man_teacher:{keywords:[\"instructor\",\"professor\",\"man\",\"human\"],char:\"👨‍🏫\",fitzpatrick_scale:true,category:\"people\"},woman_factory_worker:{keywords:[\"assembly\",\"industrial\",\"woman\",\"human\"],char:\"👩‍🏭\",fitzpatrick_scale:true,category:\"people\"},man_factory_worker:{keywords:[\"assembly\",\"industrial\",\"man\",\"human\"],char:\"👨‍🏭\",fitzpatrick_scale:true,category:\"people\"},woman_technologist:{keywords:[\"coder\",\"developer\",\"engineer\",\"programmer\",\"software\",\"woman\",\"human\",\"laptop\",\"computer\"],char:\"👩‍💻\",fitzpatrick_scale:true,category:\"people\"},man_technologist:{keywords:[\"coder\",\"developer\",\"engineer\",\"programmer\",\"software\",\"man\",\"human\",\"laptop\",\"computer\"],char:\"👨‍💻\",fitzpatrick_scale:true,category:\"people\"},woman_office_worker:{keywords:[\"business\",\"manager\",\"woman\",\"human\"],char:\"👩‍💼\",fitzpatrick_scale:true,category:\"people\"},man_office_worker:{keywords:[\"business\",\"manager\",\"man\",\"human\"],char:\"👨‍💼\",fitzpatrick_scale:true,category:\"people\"},woman_mechanic:{keywords:[\"plumber\",\"woman\",\"human\",\"wrench\"],char:\"👩‍🔧\",fitzpatrick_scale:true,category:\"people\"},man_mechanic:{keywords:[\"plumber\",\"man\",\"human\",\"wrench\"],char:\"👨‍🔧\",fitzpatrick_scale:true,category:\"people\"},woman_scientist:{keywords:[\"biologist\",\"chemist\",\"engineer\",\"physicist\",\"woman\",\"human\"],char:\"👩‍🔬\",fitzpatrick_scale:true,category:\"people\"},man_scientist:{keywords:[\"biologist\",\"chemist\",\"engineer\",\"physicist\",\"man\",\"human\"],char:\"👨‍🔬\",fitzpatrick_scale:true,category:\"people\"},woman_artist:{keywords:[\"painter\",\"woman\",\"human\"],char:\"👩‍🎨\",fitzpatrick_scale:true,category:\"people\"},man_artist:{keywords:[\"painter\",\"man\",\"human\"],char:\"👨‍🎨\",fitzpatrick_scale:true,category:\"people\"},woman_firefighter:{keywords:[\"fireman\",\"woman\",\"human\"],char:\"👩‍🚒\",fitzpatrick_scale:true,category:\"people\"},man_firefighter:{keywords:[\"fireman\",\"man\",\"human\"],char:\"👨‍🚒\",fitzpatrick_scale:true,category:\"people\"},woman_pilot:{keywords:[\"aviator\",\"plane\",\"woman\",\"human\"],char:\"👩‍✈️\",fitzpatrick_scale:true,category:\"people\"},man_pilot:{keywords:[\"aviator\",\"plane\",\"man\",\"human\"],char:\"👨‍✈️\",fitzpatrick_scale:true,category:\"people\"},woman_astronaut:{keywords:[\"space\",\"rocket\",\"woman\",\"human\"],char:\"👩‍🚀\",fitzpatrick_scale:true,category:\"people\"},man_astronaut:{keywords:[\"space\",\"rocket\",\"man\",\"human\"],char:\"👨‍🚀\",fitzpatrick_scale:true,category:\"people\"},woman_judge:{keywords:[\"justice\",\"court\",\"woman\",\"human\"],char:\"👩‍⚖️\",fitzpatrick_scale:true,category:\"people\"},man_judge:{keywords:[\"justice\",\"court\",\"man\",\"human\"],char:\"👨‍⚖️\",fitzpatrick_scale:true,category:\"people\"},woman_superhero:{keywords:[\"woman\",\"female\",\"good\",\"heroine\",\"superpowers\"],char:\"🦸‍♀️\",fitzpatrick_scale:true,category:\"people\"},man_superhero:{keywords:[\"man\",\"male\",\"good\",\"hero\",\"superpowers\"],char:\"🦸‍♂️\",fitzpatrick_scale:true,category:\"people\"},woman_supervillain:{keywords:[\"woman\",\"female\",\"evil\",\"bad\",\"criminal\",\"heroine\",\"superpowers\"],char:\"🦹‍♀️\",fitzpatrick_scale:true,category:\"people\"},man_supervillain:{keywords:[\"man\",\"male\",\"evil\",\"bad\",\"criminal\",\"hero\",\"superpowers\"],char:\"🦹‍♂️\",fitzpatrick_scale:true,category:\"people\"},mrs_claus:{keywords:[\"woman\",\"female\",\"xmas\",\"mother christmas\"],char:\"🤶\",fitzpatrick_scale:true,category:\"people\"},santa:{keywords:[\"festival\",\"man\",\"male\",\"xmas\",\"father christmas\"],char:\"🎅\",fitzpatrick_scale:true,category:\"people\"},sorceress:{keywords:[\"woman\",\"female\",\"mage\",\"witch\"],char:\"🧙‍♀️\",fitzpatrick_scale:true,category:\"people\"},wizard:{keywords:[\"man\",\"male\",\"mage\",\"sorcerer\"],char:\"🧙‍♂️\",fitzpatrick_scale:true,category:\"people\"},woman_elf:{keywords:[\"woman\",\"female\"],char:\"🧝‍♀️\",fitzpatrick_scale:true,category:\"people\"},man_elf:{keywords:[\"man\",\"male\"],char:\"🧝‍♂️\",fitzpatrick_scale:true,category:\"people\"},woman_vampire:{keywords:[\"woman\",\"female\"],char:\"🧛‍♀️\",fitzpatrick_scale:true,category:\"people\"},man_vampire:{keywords:[\"man\",\"male\",\"dracula\"],char:\"🧛‍♂️\",fitzpatrick_scale:true,category:\"people\"},woman_zombie:{keywords:[\"woman\",\"female\",\"undead\",\"walking dead\"],char:\"🧟‍♀️\",fitzpatrick_scale:false,category:\"people\"},man_zombie:{keywords:[\"man\",\"male\",\"dracula\",\"undead\",\"walking dead\"],char:\"🧟‍♂️\",fitzpatrick_scale:false,category:\"people\"},woman_genie:{keywords:[\"woman\",\"female\"],char:\"🧞‍♀️\",fitzpatrick_scale:false,category:\"people\"},man_genie:{keywords:[\"man\",\"male\"],char:\"🧞‍♂️\",fitzpatrick_scale:false,category:\"people\"},mermaid:{keywords:[\"woman\",\"female\",\"merwoman\",\"ariel\"],char:\"🧜‍♀️\",fitzpatrick_scale:true,category:\"people\"},merman:{keywords:[\"man\",\"male\",\"triton\"],char:\"🧜‍♂️\",fitzpatrick_scale:true,category:\"people\"},woman_fairy:{keywords:[\"woman\",\"female\"],char:\"🧚‍♀️\",fitzpatrick_scale:true,category:\"people\"},man_fairy:{keywords:[\"man\",\"male\"],char:\"🧚‍♂️\",fitzpatrick_scale:true,category:\"people\"},angel:{keywords:[\"heaven\",\"wings\",\"halo\"],char:\"👼\",fitzpatrick_scale:true,category:\"people\"},pregnant_woman:{keywords:[\"baby\"],char:\"🤰\",fitzpatrick_scale:true,category:\"people\"},breastfeeding:{keywords:[\"nursing\",\"baby\"],char:\"🤱\",fitzpatrick_scale:true,category:\"people\"},princess:{keywords:[\"girl\",\"woman\",\"female\",\"blond\",\"crown\",\"royal\",\"queen\"],char:\"👸\",fitzpatrick_scale:true,category:\"people\"},prince:{keywords:[\"boy\",\"man\",\"male\",\"crown\",\"royal\",\"king\"],char:\"🤴\",fitzpatrick_scale:true,category:\"people\"},bride_with_veil:{keywords:[\"couple\",\"marriage\",\"wedding\",\"woman\",\"bride\"],char:\"👰\",fitzpatrick_scale:true,category:\"people\"},man_in_tuxedo:{keywords:[\"couple\",\"marriage\",\"wedding\",\"groom\"],char:\"🤵\",fitzpatrick_scale:true,category:\"people\"},running_woman:{keywords:[\"woman\",\"walking\",\"exercise\",\"race\",\"running\",\"female\"],char:\"🏃‍♀️\",fitzpatrick_scale:true,category:\"people\"},running_man:{keywords:[\"man\",\"walking\",\"exercise\",\"race\",\"running\"],char:\"🏃\",fitzpatrick_scale:true,category:\"people\"},walking_woman:{keywords:[\"human\",\"feet\",\"steps\",\"woman\",\"female\"],char:\"🚶‍♀️\",fitzpatrick_scale:true,category:\"people\"},walking_man:{keywords:[\"human\",\"feet\",\"steps\"],char:\"🚶\",fitzpatrick_scale:true,category:\"people\"},dancer:{keywords:[\"female\",\"girl\",\"woman\",\"fun\"],char:\"💃\",fitzpatrick_scale:true,category:\"people\"},man_dancing:{keywords:[\"male\",\"boy\",\"fun\",\"dancer\"],char:\"🕺\",fitzpatrick_scale:true,category:\"people\"},dancing_women:{keywords:[\"female\",\"bunny\",\"women\",\"girls\"],char:\"👯\",fitzpatrick_scale:false,category:\"people\"},dancing_men:{keywords:[\"male\",\"bunny\",\"men\",\"boys\"],char:\"👯‍♂️\",fitzpatrick_scale:false,category:\"people\"},couple:{keywords:[\"pair\",\"people\",\"human\",\"love\",\"date\",\"dating\",\"like\",\"affection\",\"valentines\",\"marriage\"],char:\"👫\",fitzpatrick_scale:false,category:\"people\"},two_men_holding_hands:{keywords:[\"pair\",\"couple\",\"love\",\"like\",\"bromance\",\"friendship\",\"people\",\"human\"],char:\"👬\",fitzpatrick_scale:false,category:\"people\"},two_women_holding_hands:{keywords:[\"pair\",\"friendship\",\"couple\",\"love\",\"like\",\"female\",\"people\",\"human\"],char:\"👭\",fitzpatrick_scale:false,category:\"people\"},bowing_woman:{keywords:[\"woman\",\"female\",\"girl\"],char:\"🙇‍♀️\",fitzpatrick_scale:true,category:\"people\"},bowing_man:{keywords:[\"man\",\"male\",\"boy\"],char:\"🙇\",fitzpatrick_scale:true,category:\"people\"},man_facepalming:{keywords:[\"man\",\"male\",\"boy\",\"disbelief\"],char:\"🤦‍♂️\",fitzpatrick_scale:true,category:\"people\"},woman_facepalming:{keywords:[\"woman\",\"female\",\"girl\",\"disbelief\"],char:\"🤦‍♀️\",fitzpatrick_scale:true,category:\"people\"},woman_shrugging:{keywords:[\"woman\",\"female\",\"girl\",\"confused\",\"indifferent\",\"doubt\"],char:\"🤷\",fitzpatrick_scale:true,category:\"people\"},man_shrugging:{keywords:[\"man\",\"male\",\"boy\",\"confused\",\"indifferent\",\"doubt\"],char:\"🤷‍♂️\",fitzpatrick_scale:true,category:\"people\"},tipping_hand_woman:{keywords:[\"female\",\"girl\",\"woman\",\"human\",\"information\"],char:\"💁\",fitzpatrick_scale:true,category:\"people\"},tipping_hand_man:{keywords:[\"male\",\"boy\",\"man\",\"human\",\"information\"],char:\"💁‍♂️\",fitzpatrick_scale:true,category:\"people\"},no_good_woman:{keywords:[\"female\",\"girl\",\"woman\",\"nope\"],char:\"🙅\",fitzpatrick_scale:true,category:\"people\"},no_good_man:{keywords:[\"male\",\"boy\",\"man\",\"nope\"],char:\"🙅‍♂️\",fitzpatrick_scale:true,category:\"people\"},ok_woman:{keywords:[\"women\",\"girl\",\"female\",\"pink\",\"human\",\"woman\"],char:\"🙆\",fitzpatrick_scale:true,category:\"people\"},ok_man:{keywords:[\"men\",\"boy\",\"male\",\"blue\",\"human\",\"man\"],char:\"🙆‍♂️\",fitzpatrick_scale:true,category:\"people\"},raising_hand_woman:{keywords:[\"female\",\"girl\",\"woman\"],char:\"🙋\",fitzpatrick_scale:true,category:\"people\"},raising_hand_man:{keywords:[\"male\",\"boy\",\"man\"],char:\"🙋‍♂️\",fitzpatrick_scale:true,category:\"people\"},pouting_woman:{keywords:[\"female\",\"girl\",\"woman\"],char:\"🙎\",fitzpatrick_scale:true,category:\"people\"},pouting_man:{keywords:[\"male\",\"boy\",\"man\"],char:\"🙎‍♂️\",fitzpatrick_scale:true,category:\"people\"},frowning_woman:{keywords:[\"female\",\"girl\",\"woman\",\"sad\",\"depressed\",\"discouraged\",\"unhappy\"],char:\"🙍\",fitzpatrick_scale:true,category:\"people\"},frowning_man:{keywords:[\"male\",\"boy\",\"man\",\"sad\",\"depressed\",\"discouraged\",\"unhappy\"],char:\"🙍‍♂️\",fitzpatrick_scale:true,category:\"people\"},haircut_woman:{keywords:[\"female\",\"girl\",\"woman\"],char:\"💇\",fitzpatrick_scale:true,category:\"people\"},haircut_man:{keywords:[\"male\",\"boy\",\"man\"],char:\"💇‍♂️\",fitzpatrick_scale:true,category:\"people\"},massage_woman:{keywords:[\"female\",\"girl\",\"woman\",\"head\"],char:\"💆\",fitzpatrick_scale:true,category:\"people\"},massage_man:{keywords:[\"male\",\"boy\",\"man\",\"head\"],char:\"💆‍♂️\",fitzpatrick_scale:true,category:\"people\"},woman_in_steamy_room:{keywords:[\"female\",\"woman\",\"spa\",\"steamroom\",\"sauna\"],char:\"🧖‍♀️\",fitzpatrick_scale:true,category:\"people\"},man_in_steamy_room:{keywords:[\"male\",\"man\",\"spa\",\"steamroom\",\"sauna\"],char:\"🧖‍♂️\",fitzpatrick_scale:true,category:\"people\"},couple_with_heart_woman_man:{keywords:[\"pair\",\"love\",\"like\",\"affection\",\"human\",\"dating\",\"valentines\",\"marriage\"],char:\"💑\",fitzpatrick_scale:false,category:\"people\"},couple_with_heart_woman_woman:{keywords:[\"pair\",\"love\",\"like\",\"affection\",\"human\",\"dating\",\"valentines\",\"marriage\"],char:\"👩‍❤️‍👩\",fitzpatrick_scale:false,category:\"people\"},couple_with_heart_man_man:{keywords:[\"pair\",\"love\",\"like\",\"affection\",\"human\",\"dating\",\"valentines\",\"marriage\"],char:\"👨‍❤️‍👨\",fitzpatrick_scale:false,category:\"people\"},couplekiss_man_woman:{keywords:[\"pair\",\"valentines\",\"love\",\"like\",\"dating\",\"marriage\"],char:\"💏\",fitzpatrick_scale:false,category:\"people\"},couplekiss_woman_woman:{keywords:[\"pair\",\"valentines\",\"love\",\"like\",\"dating\",\"marriage\"],char:\"👩‍❤️‍💋‍👩\",fitzpatrick_scale:false,category:\"people\"},couplekiss_man_man:{keywords:[\"pair\",\"valentines\",\"love\",\"like\",\"dating\",\"marriage\"],char:\"👨‍❤️‍💋‍👨\",fitzpatrick_scale:false,category:\"people\"},family_man_woman_boy:{keywords:[\"home\",\"parents\",\"child\",\"mom\",\"dad\",\"father\",\"mother\",\"people\",\"human\"],char:\"👪\",fitzpatrick_scale:false,category:\"people\"},family_man_woman_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"child\"],char:\"👨‍👩‍👧\",fitzpatrick_scale:false,category:\"people\"},family_man_woman_girl_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👨‍👩‍👧‍👦\",fitzpatrick_scale:false,category:\"people\"},family_man_woman_boy_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👨‍👩‍👦‍👦\",fitzpatrick_scale:false,category:\"people\"},family_man_woman_girl_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👨‍👩‍👧‍👧\",fitzpatrick_scale:false,category:\"people\"},family_woman_woman_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👩‍👩‍👦\",fitzpatrick_scale:false,category:\"people\"},family_woman_woman_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👩‍👩‍👧\",fitzpatrick_scale:false,category:\"people\"},family_woman_woman_girl_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👩‍👩‍👧‍👦\",fitzpatrick_scale:false,category:\"people\"},family_woman_woman_boy_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👩‍👩‍👦‍👦\",fitzpatrick_scale:false,category:\"people\"},family_woman_woman_girl_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👩‍👩‍👧‍👧\",fitzpatrick_scale:false,category:\"people\"},family_man_man_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👨‍👨‍👦\",fitzpatrick_scale:false,category:\"people\"},family_man_man_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👨‍👨‍👧\",fitzpatrick_scale:false,category:\"people\"},family_man_man_girl_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👨‍👨‍👧‍👦\",fitzpatrick_scale:false,category:\"people\"},family_man_man_boy_boy:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👨‍👨‍👦‍👦\",fitzpatrick_scale:false,category:\"people\"},family_man_man_girl_girl:{keywords:[\"home\",\"parents\",\"people\",\"human\",\"children\"],char:\"👨‍👨‍👧‍👧\",fitzpatrick_scale:false,category:\"people\"},family_woman_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"child\"],char:\"👩‍👦\",fitzpatrick_scale:false,category:\"people\"},family_woman_girl:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"child\"],char:\"👩‍👧\",fitzpatrick_scale:false,category:\"people\"},family_woman_girl_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:\"👩‍👧‍👦\",fitzpatrick_scale:false,category:\"people\"},family_woman_boy_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:\"👩‍👦‍👦\",fitzpatrick_scale:false,category:\"people\"},family_woman_girl_girl:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:\"👩‍👧‍👧\",fitzpatrick_scale:false,category:\"people\"},family_man_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"child\"],char:\"👨‍👦\",fitzpatrick_scale:false,category:\"people\"},family_man_girl:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"child\"],char:\"👨‍👧\",fitzpatrick_scale:false,category:\"people\"},family_man_girl_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:\"👨‍👧‍👦\",fitzpatrick_scale:false,category:\"people\"},family_man_boy_boy:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:\"👨‍👦‍👦\",fitzpatrick_scale:false,category:\"people\"},family_man_girl_girl:{keywords:[\"home\",\"parent\",\"people\",\"human\",\"children\"],char:\"👨‍👧‍👧\",fitzpatrick_scale:false,category:\"people\"},yarn:{keywords:[\"ball\",\"crochet\",\"knit\"],char:\"🧶\",fitzpatrick_scale:false,category:\"people\"},thread:{keywords:[\"needle\",\"sewing\",\"spool\",\"string\"],char:\"🧵\",fitzpatrick_scale:false,category:\"people\"},coat:{keywords:[\"jacket\"],char:\"🧥\",fitzpatrick_scale:false,category:\"people\"},labcoat:{keywords:[\"doctor\",\"experiment\",\"scientist\",\"chemist\"],char:\"🥼\",fitzpatrick_scale:false,category:\"people\"},womans_clothes:{keywords:[\"fashion\",\"shopping_bags\",\"female\"],char:\"👚\",fitzpatrick_scale:false,category:\"people\"},tshirt:{keywords:[\"fashion\",\"cloth\",\"casual\",\"shirt\",\"tee\"],char:\"👕\",fitzpatrick_scale:false,category:\"people\"},jeans:{keywords:[\"fashion\",\"shopping\"],char:\"👖\",fitzpatrick_scale:false,category:\"people\"},necktie:{keywords:[\"shirt\",\"suitup\",\"formal\",\"fashion\",\"cloth\",\"business\"],char:\"👔\",fitzpatrick_scale:false,category:\"people\"},dress:{keywords:[\"clothes\",\"fashion\",\"shopping\"],char:\"👗\",fitzpatrick_scale:false,category:\"people\"},bikini:{keywords:[\"swimming\",\"female\",\"woman\",\"girl\",\"fashion\",\"beach\",\"summer\"],char:\"👙\",fitzpatrick_scale:false,category:\"people\"},kimono:{keywords:[\"dress\",\"fashion\",\"women\",\"female\",\"japanese\"],char:\"👘\",fitzpatrick_scale:false,category:\"people\"},lipstick:{keywords:[\"female\",\"girl\",\"fashion\",\"woman\"],char:\"💄\",fitzpatrick_scale:false,category:\"people\"},kiss:{keywords:[\"face\",\"lips\",\"love\",\"like\",\"affection\",\"valentines\"],char:\"💋\",fitzpatrick_scale:false,category:\"people\"},footprints:{keywords:[\"feet\",\"tracking\",\"walking\",\"beach\"],char:\"👣\",fitzpatrick_scale:false,category:\"people\"},flat_shoe:{keywords:[\"ballet\",\"slip-on\",\"slipper\"],char:\"🥿\",fitzpatrick_scale:false,category:\"people\"},high_heel:{keywords:[\"fashion\",\"shoes\",\"female\",\"pumps\",\"stiletto\"],char:\"👠\",fitzpatrick_scale:false,category:\"people\"},sandal:{keywords:[\"shoes\",\"fashion\",\"flip flops\"],char:\"👡\",fitzpatrick_scale:false,category:\"people\"},boot:{keywords:[\"shoes\",\"fashion\"],char:\"👢\",fitzpatrick_scale:false,category:\"people\"},mans_shoe:{keywords:[\"fashion\",\"male\"],char:\"👞\",fitzpatrick_scale:false,category:\"people\"},athletic_shoe:{keywords:[\"shoes\",\"sports\",\"sneakers\"],char:\"👟\",fitzpatrick_scale:false,category:\"people\"},hiking_boot:{keywords:[\"backpacking\",\"camping\",\"hiking\"],char:\"🥾\",fitzpatrick_scale:false,category:\"people\"},socks:{keywords:[\"stockings\",\"clothes\"],char:\"🧦\",fitzpatrick_scale:false,category:\"people\"},gloves:{keywords:[\"hands\",\"winter\",\"clothes\"],char:\"🧤\",fitzpatrick_scale:false,category:\"people\"},scarf:{keywords:[\"neck\",\"winter\",\"clothes\"],char:\"🧣\",fitzpatrick_scale:false,category:\"people\"},womans_hat:{keywords:[\"fashion\",\"accessories\",\"female\",\"lady\",\"spring\"],char:\"👒\",fitzpatrick_scale:false,category:\"people\"},tophat:{keywords:[\"magic\",\"gentleman\",\"classy\",\"circus\"],char:\"🎩\",fitzpatrick_scale:false,category:\"people\"},billed_hat:{keywords:[\"cap\",\"baseball\"],char:\"🧢\",fitzpatrick_scale:false,category:\"people\"},rescue_worker_helmet:{keywords:[\"construction\",\"build\"],char:\"⛑\",fitzpatrick_scale:false,category:\"people\"},mortar_board:{keywords:[\"school\",\"college\",\"degree\",\"university\",\"graduation\",\"cap\",\"hat\",\"legal\",\"learn\",\"education\"],char:\"🎓\",fitzpatrick_scale:false,category:\"people\"},crown:{keywords:[\"king\",\"kod\",\"leader\",\"royalty\",\"lord\"],char:\"👑\",fitzpatrick_scale:false,category:\"people\"},school_satchel:{keywords:[\"student\",\"education\",\"bag\",\"backpack\"],char:\"🎒\",fitzpatrick_scale:false,category:\"people\"},luggage:{keywords:[\"packing\",\"travel\"],char:\"🧳\",fitzpatrick_scale:false,category:\"people\"},pouch:{keywords:[\"bag\",\"accessories\",\"shopping\"],char:\"👝\",fitzpatrick_scale:false,category:\"people\"},purse:{keywords:[\"fashion\",\"accessories\",\"money\",\"sales\",\"shopping\"],char:\"👛\",fitzpatrick_scale:false,category:\"people\"},handbag:{keywords:[\"fashion\",\"accessory\",\"accessories\",\"shopping\"],char:\"👜\",fitzpatrick_scale:false,category:\"people\"},briefcase:{keywords:[\"business\",\"documents\",\"work\",\"law\",\"legal\",\"job\",\"career\"],char:\"💼\",fitzpatrick_scale:false,category:\"people\"},eyeglasses:{keywords:[\"fashion\",\"accessories\",\"eyesight\",\"nerdy\",\"dork\",\"geek\"],char:\"👓\",fitzpatrick_scale:false,category:\"people\"},dark_sunglasses:{keywords:[\"face\",\"cool\",\"accessories\"],char:\"🕶\",fitzpatrick_scale:false,category:\"people\"},goggles:{keywords:[\"eyes\",\"protection\",\"safety\"],char:\"🥽\",fitzpatrick_scale:false,category:\"people\"},ring:{keywords:[\"wedding\",\"propose\",\"marriage\",\"valentines\",\"diamond\",\"fashion\",\"jewelry\",\"gem\",\"engagement\"],char:\"💍\",fitzpatrick_scale:false,category:\"people\"},closed_umbrella:{keywords:[\"weather\",\"rain\",\"drizzle\"],char:\"🌂\",fitzpatrick_scale:false,category:\"people\"},dog:{keywords:[\"animal\",\"friend\",\"nature\",\"woof\",\"puppy\",\"pet\",\"faithful\"],char:\"🐶\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cat:{keywords:[\"animal\",\"meow\",\"nature\",\"pet\",\"kitten\"],char:\"🐱\",fitzpatrick_scale:false,category:\"animals_and_nature\"},mouse:{keywords:[\"animal\",\"nature\",\"cheese_wedge\",\"rodent\"],char:\"🐭\",fitzpatrick_scale:false,category:\"animals_and_nature\"},hamster:{keywords:[\"animal\",\"nature\"],char:\"🐹\",fitzpatrick_scale:false,category:\"animals_and_nature\"},rabbit:{keywords:[\"animal\",\"nature\",\"pet\",\"spring\",\"magic\",\"bunny\"],char:\"🐰\",fitzpatrick_scale:false,category:\"animals_and_nature\"},fox_face:{keywords:[\"animal\",\"nature\",\"face\"],char:\"🦊\",fitzpatrick_scale:false,category:\"animals_and_nature\"},bear:{keywords:[\"animal\",\"nature\",\"wild\"],char:\"🐻\",fitzpatrick_scale:false,category:\"animals_and_nature\"},panda_face:{keywords:[\"animal\",\"nature\",\"panda\"],char:\"🐼\",fitzpatrick_scale:false,category:\"animals_and_nature\"},koala:{keywords:[\"animal\",\"nature\"],char:\"🐨\",fitzpatrick_scale:false,category:\"animals_and_nature\"},tiger:{keywords:[\"animal\",\"cat\",\"danger\",\"wild\",\"nature\",\"roar\"],char:\"🐯\",fitzpatrick_scale:false,category:\"animals_and_nature\"},lion:{keywords:[\"animal\",\"nature\"],char:\"🦁\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cow:{keywords:[\"beef\",\"ox\",\"animal\",\"nature\",\"moo\",\"milk\"],char:\"🐮\",fitzpatrick_scale:false,category:\"animals_and_nature\"},pig:{keywords:[\"animal\",\"oink\",\"nature\"],char:\"🐷\",fitzpatrick_scale:false,category:\"animals_and_nature\"},pig_nose:{keywords:[\"animal\",\"oink\"],char:\"🐽\",fitzpatrick_scale:false,category:\"animals_and_nature\"},frog:{keywords:[\"animal\",\"nature\",\"croak\",\"toad\"],char:\"🐸\",fitzpatrick_scale:false,category:\"animals_and_nature\"},squid:{keywords:[\"animal\",\"nature\",\"ocean\",\"sea\"],char:\"🦑\",fitzpatrick_scale:false,category:\"animals_and_nature\"},octopus:{keywords:[\"animal\",\"creature\",\"ocean\",\"sea\",\"nature\",\"beach\"],char:\"🐙\",fitzpatrick_scale:false,category:\"animals_and_nature\"},shrimp:{keywords:[\"animal\",\"ocean\",\"nature\",\"seafood\"],char:\"🦐\",fitzpatrick_scale:false,category:\"animals_and_nature\"},monkey_face:{keywords:[\"animal\",\"nature\",\"circus\"],char:\"🐵\",fitzpatrick_scale:false,category:\"animals_and_nature\"},gorilla:{keywords:[\"animal\",\"nature\",\"circus\"],char:\"🦍\",fitzpatrick_scale:false,category:\"animals_and_nature\"},see_no_evil:{keywords:[\"monkey\",\"animal\",\"nature\",\"haha\"],char:\"🙈\",fitzpatrick_scale:false,category:\"animals_and_nature\"},hear_no_evil:{keywords:[\"animal\",\"monkey\",\"nature\"],char:\"🙉\",fitzpatrick_scale:false,category:\"animals_and_nature\"},speak_no_evil:{keywords:[\"monkey\",\"animal\",\"nature\",\"omg\"],char:\"🙊\",fitzpatrick_scale:false,category:\"animals_and_nature\"},monkey:{keywords:[\"animal\",\"nature\",\"banana\",\"circus\"],char:\"🐒\",fitzpatrick_scale:false,category:\"animals_and_nature\"},chicken:{keywords:[\"animal\",\"cluck\",\"nature\",\"bird\"],char:\"🐔\",fitzpatrick_scale:false,category:\"animals_and_nature\"},penguin:{keywords:[\"animal\",\"nature\"],char:\"🐧\",fitzpatrick_scale:false,category:\"animals_and_nature\"},bird:{keywords:[\"animal\",\"nature\",\"fly\",\"tweet\",\"spring\"],char:\"🐦\",fitzpatrick_scale:false,category:\"animals_and_nature\"},baby_chick:{keywords:[\"animal\",\"chicken\",\"bird\"],char:\"🐤\",fitzpatrick_scale:false,category:\"animals_and_nature\"},hatching_chick:{keywords:[\"animal\",\"chicken\",\"egg\",\"born\",\"baby\",\"bird\"],char:\"🐣\",fitzpatrick_scale:false,category:\"animals_and_nature\"},hatched_chick:{keywords:[\"animal\",\"chicken\",\"baby\",\"bird\"],char:\"🐥\",fitzpatrick_scale:false,category:\"animals_and_nature\"},duck:{keywords:[\"animal\",\"nature\",\"bird\",\"mallard\"],char:\"🦆\",fitzpatrick_scale:false,category:\"animals_and_nature\"},eagle:{keywords:[\"animal\",\"nature\",\"bird\"],char:\"🦅\",fitzpatrick_scale:false,category:\"animals_and_nature\"},owl:{keywords:[\"animal\",\"nature\",\"bird\",\"hoot\"],char:\"🦉\",fitzpatrick_scale:false,category:\"animals_and_nature\"},bat:{keywords:[\"animal\",\"nature\",\"blind\",\"vampire\"],char:\"🦇\",fitzpatrick_scale:false,category:\"animals_and_nature\"},wolf:{keywords:[\"animal\",\"nature\",\"wild\"],char:\"🐺\",fitzpatrick_scale:false,category:\"animals_and_nature\"},boar:{keywords:[\"animal\",\"nature\"],char:\"🐗\",fitzpatrick_scale:false,category:\"animals_and_nature\"},horse:{keywords:[\"animal\",\"brown\",\"nature\"],char:\"🐴\",fitzpatrick_scale:false,category:\"animals_and_nature\"},unicorn:{keywords:[\"animal\",\"nature\",\"mystical\"],char:\"🦄\",fitzpatrick_scale:false,category:\"animals_and_nature\"},honeybee:{keywords:[\"animal\",\"insect\",\"nature\",\"bug\",\"spring\",\"honey\"],char:\"🐝\",fitzpatrick_scale:false,category:\"animals_and_nature\"},bug:{keywords:[\"animal\",\"insect\",\"nature\",\"worm\"],char:\"🐛\",fitzpatrick_scale:false,category:\"animals_and_nature\"},butterfly:{keywords:[\"animal\",\"insect\",\"nature\",\"caterpillar\"],char:\"🦋\",fitzpatrick_scale:false,category:\"animals_and_nature\"},snail:{keywords:[\"slow\",\"animal\",\"shell\"],char:\"🐌\",fitzpatrick_scale:false,category:\"animals_and_nature\"},beetle:{keywords:[\"animal\",\"insect\",\"nature\",\"ladybug\"],char:\"🐞\",fitzpatrick_scale:false,category:\"animals_and_nature\"},ant:{keywords:[\"animal\",\"insect\",\"nature\",\"bug\"],char:\"🐜\",fitzpatrick_scale:false,category:\"animals_and_nature\"},grasshopper:{keywords:[\"animal\",\"cricket\",\"chirp\"],char:\"🦗\",fitzpatrick_scale:false,category:\"animals_and_nature\"},spider:{keywords:[\"animal\",\"arachnid\"],char:\"🕷\",fitzpatrick_scale:false,category:\"animals_and_nature\"},scorpion:{keywords:[\"animal\",\"arachnid\"],char:\"🦂\",fitzpatrick_scale:false,category:\"animals_and_nature\"},crab:{keywords:[\"animal\",\"crustacean\"],char:\"🦀\",fitzpatrick_scale:false,category:\"animals_and_nature\"},snake:{keywords:[\"animal\",\"evil\",\"nature\",\"hiss\",\"python\"],char:\"🐍\",fitzpatrick_scale:false,category:\"animals_and_nature\"},lizard:{keywords:[\"animal\",\"nature\",\"reptile\"],char:\"🦎\",fitzpatrick_scale:false,category:\"animals_and_nature\"},\"t-rex\":{keywords:[\"animal\",\"nature\",\"dinosaur\",\"tyrannosaurus\",\"extinct\"],char:\"🦖\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sauropod:{keywords:[\"animal\",\"nature\",\"dinosaur\",\"brachiosaurus\",\"brontosaurus\",\"diplodocus\",\"extinct\"],char:\"🦕\",fitzpatrick_scale:false,category:\"animals_and_nature\"},turtle:{keywords:[\"animal\",\"slow\",\"nature\",\"tortoise\"],char:\"🐢\",fitzpatrick_scale:false,category:\"animals_and_nature\"},tropical_fish:{keywords:[\"animal\",\"swim\",\"ocean\",\"beach\",\"nemo\"],char:\"🐠\",fitzpatrick_scale:false,category:\"animals_and_nature\"},fish:{keywords:[\"animal\",\"food\",\"nature\"],char:\"🐟\",fitzpatrick_scale:false,category:\"animals_and_nature\"},blowfish:{keywords:[\"animal\",\"nature\",\"food\",\"sea\",\"ocean\"],char:\"🐡\",fitzpatrick_scale:false,category:\"animals_and_nature\"},dolphin:{keywords:[\"animal\",\"nature\",\"fish\",\"sea\",\"ocean\",\"flipper\",\"fins\",\"beach\"],char:\"🐬\",fitzpatrick_scale:false,category:\"animals_and_nature\"},shark:{keywords:[\"animal\",\"nature\",\"fish\",\"sea\",\"ocean\",\"jaws\",\"fins\",\"beach\"],char:\"🦈\",fitzpatrick_scale:false,category:\"animals_and_nature\"},whale:{keywords:[\"animal\",\"nature\",\"sea\",\"ocean\"],char:\"🐳\",fitzpatrick_scale:false,category:\"animals_and_nature\"},whale2:{keywords:[\"animal\",\"nature\",\"sea\",\"ocean\"],char:\"🐋\",fitzpatrick_scale:false,category:\"animals_and_nature\"},crocodile:{keywords:[\"animal\",\"nature\",\"reptile\",\"lizard\",\"alligator\"],char:\"🐊\",fitzpatrick_scale:false,category:\"animals_and_nature\"},leopard:{keywords:[\"animal\",\"nature\"],char:\"🐆\",fitzpatrick_scale:false,category:\"animals_and_nature\"},zebra:{keywords:[\"animal\",\"nature\",\"stripes\",\"safari\"],char:\"🦓\",fitzpatrick_scale:false,category:\"animals_and_nature\"},tiger2:{keywords:[\"animal\",\"nature\",\"roar\"],char:\"🐅\",fitzpatrick_scale:false,category:\"animals_and_nature\"},water_buffalo:{keywords:[\"animal\",\"nature\",\"ox\",\"cow\"],char:\"🐃\",fitzpatrick_scale:false,category:\"animals_and_nature\"},ox:{keywords:[\"animal\",\"cow\",\"beef\"],char:\"🐂\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cow2:{keywords:[\"beef\",\"ox\",\"animal\",\"nature\",\"moo\",\"milk\"],char:\"🐄\",fitzpatrick_scale:false,category:\"animals_and_nature\"},deer:{keywords:[\"animal\",\"nature\",\"horns\",\"venison\"],char:\"🦌\",fitzpatrick_scale:false,category:\"animals_and_nature\"},dromedary_camel:{keywords:[\"animal\",\"hot\",\"desert\",\"hump\"],char:\"🐪\",fitzpatrick_scale:false,category:\"animals_and_nature\"},camel:{keywords:[\"animal\",\"nature\",\"hot\",\"desert\",\"hump\"],char:\"🐫\",fitzpatrick_scale:false,category:\"animals_and_nature\"},giraffe:{keywords:[\"animal\",\"nature\",\"spots\",\"safari\"],char:\"🦒\",fitzpatrick_scale:false,category:\"animals_and_nature\"},elephant:{keywords:[\"animal\",\"nature\",\"nose\",\"th\",\"circus\"],char:\"🐘\",fitzpatrick_scale:false,category:\"animals_and_nature\"},rhinoceros:{keywords:[\"animal\",\"nature\",\"horn\"],char:\"🦏\",fitzpatrick_scale:false,category:\"animals_and_nature\"},goat:{keywords:[\"animal\",\"nature\"],char:\"🐐\",fitzpatrick_scale:false,category:\"animals_and_nature\"},ram:{keywords:[\"animal\",\"sheep\",\"nature\"],char:\"🐏\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sheep:{keywords:[\"animal\",\"nature\",\"wool\",\"shipit\"],char:\"🐑\",fitzpatrick_scale:false,category:\"animals_and_nature\"},racehorse:{keywords:[\"animal\",\"gamble\",\"luck\"],char:\"🐎\",fitzpatrick_scale:false,category:\"animals_and_nature\"},pig2:{keywords:[\"animal\",\"nature\"],char:\"🐖\",fitzpatrick_scale:false,category:\"animals_and_nature\"},rat:{keywords:[\"animal\",\"mouse\",\"rodent\"],char:\"🐀\",fitzpatrick_scale:false,category:\"animals_and_nature\"},mouse2:{keywords:[\"animal\",\"nature\",\"rodent\"],char:\"🐁\",fitzpatrick_scale:false,category:\"animals_and_nature\"},rooster:{keywords:[\"animal\",\"nature\",\"chicken\"],char:\"🐓\",fitzpatrick_scale:false,category:\"animals_and_nature\"},turkey:{keywords:[\"animal\",\"bird\"],char:\"🦃\",fitzpatrick_scale:false,category:\"animals_and_nature\"},dove:{keywords:[\"animal\",\"bird\"],char:\"🕊\",fitzpatrick_scale:false,category:\"animals_and_nature\"},dog2:{keywords:[\"animal\",\"nature\",\"friend\",\"doge\",\"pet\",\"faithful\"],char:\"🐕\",fitzpatrick_scale:false,category:\"animals_and_nature\"},poodle:{keywords:[\"dog\",\"animal\",\"101\",\"nature\",\"pet\"],char:\"🐩\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cat2:{keywords:[\"animal\",\"meow\",\"pet\",\"cats\"],char:\"🐈\",fitzpatrick_scale:false,category:\"animals_and_nature\"},rabbit2:{keywords:[\"animal\",\"nature\",\"pet\",\"magic\",\"spring\"],char:\"🐇\",fitzpatrick_scale:false,category:\"animals_and_nature\"},chipmunk:{keywords:[\"animal\",\"nature\",\"rodent\",\"squirrel\"],char:\"🐿\",fitzpatrick_scale:false,category:\"animals_and_nature\"},hedgehog:{keywords:[\"animal\",\"nature\",\"spiny\"],char:\"🦔\",fitzpatrick_scale:false,category:\"animals_and_nature\"},raccoon:{keywords:[\"animal\",\"nature\"],char:\"🦝\",fitzpatrick_scale:false,category:\"animals_and_nature\"},llama:{keywords:[\"animal\",\"nature\",\"alpaca\"],char:\"🦙\",fitzpatrick_scale:false,category:\"animals_and_nature\"},hippopotamus:{keywords:[\"animal\",\"nature\"],char:\"🦛\",fitzpatrick_scale:false,category:\"animals_and_nature\"},kangaroo:{keywords:[\"animal\",\"nature\",\"australia\",\"joey\",\"hop\",\"marsupial\"],char:\"🦘\",fitzpatrick_scale:false,category:\"animals_and_nature\"},badger:{keywords:[\"animal\",\"nature\",\"honey\"],char:\"🦡\",fitzpatrick_scale:false,category:\"animals_and_nature\"},swan:{keywords:[\"animal\",\"nature\",\"bird\"],char:\"🦢\",fitzpatrick_scale:false,category:\"animals_and_nature\"},peacock:{keywords:[\"animal\",\"nature\",\"peahen\",\"bird\"],char:\"🦚\",fitzpatrick_scale:false,category:\"animals_and_nature\"},parrot:{keywords:[\"animal\",\"nature\",\"bird\",\"pirate\",\"talk\"],char:\"🦜\",fitzpatrick_scale:false,category:\"animals_and_nature\"},lobster:{keywords:[\"animal\",\"nature\",\"bisque\",\"claws\",\"seafood\"],char:\"🦞\",fitzpatrick_scale:false,category:\"animals_and_nature\"},mosquito:{keywords:[\"animal\",\"nature\",\"insect\",\"malaria\"],char:\"🦟\",fitzpatrick_scale:false,category:\"animals_and_nature\"},paw_prints:{keywords:[\"animal\",\"tracking\",\"footprints\",\"dog\",\"cat\",\"pet\",\"feet\"],char:\"🐾\",fitzpatrick_scale:false,category:\"animals_and_nature\"},dragon:{keywords:[\"animal\",\"myth\",\"nature\",\"chinese\",\"green\"],char:\"🐉\",fitzpatrick_scale:false,category:\"animals_and_nature\"},dragon_face:{keywords:[\"animal\",\"myth\",\"nature\",\"chinese\",\"green\"],char:\"🐲\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cactus:{keywords:[\"vegetable\",\"plant\",\"nature\"],char:\"🌵\",fitzpatrick_scale:false,category:\"animals_and_nature\"},christmas_tree:{keywords:[\"festival\",\"vacation\",\"december\",\"xmas\",\"celebration\"],char:\"🎄\",fitzpatrick_scale:false,category:\"animals_and_nature\"},evergreen_tree:{keywords:[\"plant\",\"nature\"],char:\"🌲\",fitzpatrick_scale:false,category:\"animals_and_nature\"},deciduous_tree:{keywords:[\"plant\",\"nature\"],char:\"🌳\",fitzpatrick_scale:false,category:\"animals_and_nature\"},palm_tree:{keywords:[\"plant\",\"vegetable\",\"nature\",\"summer\",\"beach\",\"mojito\",\"tropical\"],char:\"🌴\",fitzpatrick_scale:false,category:\"animals_and_nature\"},seedling:{keywords:[\"plant\",\"nature\",\"grass\",\"lawn\",\"spring\"],char:\"🌱\",fitzpatrick_scale:false,category:\"animals_and_nature\"},herb:{keywords:[\"vegetable\",\"plant\",\"medicine\",\"weed\",\"grass\",\"lawn\"],char:\"🌿\",fitzpatrick_scale:false,category:\"animals_and_nature\"},shamrock:{keywords:[\"vegetable\",\"plant\",\"nature\",\"irish\",\"clover\"],char:\"☘\",fitzpatrick_scale:false,category:\"animals_and_nature\"},four_leaf_clover:{keywords:[\"vegetable\",\"plant\",\"nature\",\"lucky\",\"irish\"],char:\"🍀\",fitzpatrick_scale:false,category:\"animals_and_nature\"},bamboo:{keywords:[\"plant\",\"nature\",\"vegetable\",\"panda\",\"pine_decoration\"],char:\"🎍\",fitzpatrick_scale:false,category:\"animals_and_nature\"},tanabata_tree:{keywords:[\"plant\",\"nature\",\"branch\",\"summer\"],char:\"🎋\",fitzpatrick_scale:false,category:\"animals_and_nature\"},leaves:{keywords:[\"nature\",\"plant\",\"tree\",\"vegetable\",\"grass\",\"lawn\",\"spring\"],char:\"🍃\",fitzpatrick_scale:false,category:\"animals_and_nature\"},fallen_leaf:{keywords:[\"nature\",\"plant\",\"vegetable\",\"leaves\"],char:\"🍂\",fitzpatrick_scale:false,category:\"animals_and_nature\"},maple_leaf:{keywords:[\"nature\",\"plant\",\"vegetable\",\"ca\",\"fall\"],char:\"🍁\",fitzpatrick_scale:false,category:\"animals_and_nature\"},ear_of_rice:{keywords:[\"nature\",\"plant\"],char:\"🌾\",fitzpatrick_scale:false,category:\"animals_and_nature\"},hibiscus:{keywords:[\"plant\",\"vegetable\",\"flowers\",\"beach\"],char:\"🌺\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sunflower:{keywords:[\"nature\",\"plant\",\"fall\"],char:\"🌻\",fitzpatrick_scale:false,category:\"animals_and_nature\"},rose:{keywords:[\"flowers\",\"valentines\",\"love\",\"spring\"],char:\"🌹\",fitzpatrick_scale:false,category:\"animals_and_nature\"},wilted_flower:{keywords:[\"plant\",\"nature\",\"flower\"],char:\"🥀\",fitzpatrick_scale:false,category:\"animals_and_nature\"},tulip:{keywords:[\"flowers\",\"plant\",\"nature\",\"summer\",\"spring\"],char:\"🌷\",fitzpatrick_scale:false,category:\"animals_and_nature\"},blossom:{keywords:[\"nature\",\"flowers\",\"yellow\"],char:\"🌼\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cherry_blossom:{keywords:[\"nature\",\"plant\",\"spring\",\"flower\"],char:\"🌸\",fitzpatrick_scale:false,category:\"animals_and_nature\"},bouquet:{keywords:[\"flowers\",\"nature\",\"spring\"],char:\"💐\",fitzpatrick_scale:false,category:\"animals_and_nature\"},mushroom:{keywords:[\"plant\",\"vegetable\"],char:\"🍄\",fitzpatrick_scale:false,category:\"animals_and_nature\"},chestnut:{keywords:[\"food\",\"squirrel\"],char:\"🌰\",fitzpatrick_scale:false,category:\"animals_and_nature\"},jack_o_lantern:{keywords:[\"halloween\",\"light\",\"pumpkin\",\"creepy\",\"fall\"],char:\"🎃\",fitzpatrick_scale:false,category:\"animals_and_nature\"},shell:{keywords:[\"nature\",\"sea\",\"beach\"],char:\"🐚\",fitzpatrick_scale:false,category:\"animals_and_nature\"},spider_web:{keywords:[\"animal\",\"insect\",\"arachnid\",\"silk\"],char:\"🕸\",fitzpatrick_scale:false,category:\"animals_and_nature\"},earth_americas:{keywords:[\"globe\",\"world\",\"USA\",\"international\"],char:\"🌎\",fitzpatrick_scale:false,category:\"animals_and_nature\"},earth_africa:{keywords:[\"globe\",\"world\",\"international\"],char:\"🌍\",fitzpatrick_scale:false,category:\"animals_and_nature\"},earth_asia:{keywords:[\"globe\",\"world\",\"east\",\"international\"],char:\"🌏\",fitzpatrick_scale:false,category:\"animals_and_nature\"},full_moon:{keywords:[\"nature\",\"yellow\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌕\",fitzpatrick_scale:false,category:\"animals_and_nature\"},waning_gibbous_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\",\"waxing_gibbous_moon\"],char:\"🌖\",fitzpatrick_scale:false,category:\"animals_and_nature\"},last_quarter_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌗\",fitzpatrick_scale:false,category:\"animals_and_nature\"},waning_crescent_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌘\",fitzpatrick_scale:false,category:\"animals_and_nature\"},new_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌑\",fitzpatrick_scale:false,category:\"animals_and_nature\"},waxing_crescent_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌒\",fitzpatrick_scale:false,category:\"animals_and_nature\"},first_quarter_moon:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌓\",fitzpatrick_scale:false,category:\"animals_and_nature\"},waxing_gibbous_moon:{keywords:[\"nature\",\"night\",\"sky\",\"gray\",\"twilight\",\"planet\",\"space\",\"evening\",\"sleep\"],char:\"🌔\",fitzpatrick_scale:false,category:\"animals_and_nature\"},new_moon_with_face:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌚\",fitzpatrick_scale:false,category:\"animals_and_nature\"},full_moon_with_face:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌝\",fitzpatrick_scale:false,category:\"animals_and_nature\"},first_quarter_moon_with_face:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌛\",fitzpatrick_scale:false,category:\"animals_and_nature\"},last_quarter_moon_with_face:{keywords:[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],char:\"🌜\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sun_with_face:{keywords:[\"nature\",\"morning\",\"sky\"],char:\"🌞\",fitzpatrick_scale:false,category:\"animals_and_nature\"},crescent_moon:{keywords:[\"night\",\"sleep\",\"sky\",\"evening\",\"magic\"],char:\"🌙\",fitzpatrick_scale:false,category:\"animals_and_nature\"},star:{keywords:[\"night\",\"yellow\"],char:\"⭐\",fitzpatrick_scale:false,category:\"animals_and_nature\"},star2:{keywords:[\"night\",\"sparkle\",\"awesome\",\"good\",\"magic\"],char:\"🌟\",fitzpatrick_scale:false,category:\"animals_and_nature\"},dizzy:{keywords:[\"star\",\"sparkle\",\"shoot\",\"magic\"],char:\"💫\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sparkles:{keywords:[\"stars\",\"shine\",\"shiny\",\"cool\",\"awesome\",\"good\",\"magic\"],char:\"✨\",fitzpatrick_scale:false,category:\"animals_and_nature\"},comet:{keywords:[\"space\"],char:\"☄\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sunny:{keywords:[\"weather\",\"nature\",\"brightness\",\"summer\",\"beach\",\"spring\"],char:\"☀️\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sun_behind_small_cloud:{keywords:[\"weather\"],char:\"🌤\",fitzpatrick_scale:false,category:\"animals_and_nature\"},partly_sunny:{keywords:[\"weather\",\"nature\",\"cloudy\",\"morning\",\"fall\",\"spring\"],char:\"⛅\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sun_behind_large_cloud:{keywords:[\"weather\"],char:\"🌥\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sun_behind_rain_cloud:{keywords:[\"weather\"],char:\"🌦\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud:{keywords:[\"weather\",\"sky\"],char:\"☁️\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud_with_rain:{keywords:[\"weather\"],char:\"🌧\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud_with_lightning_and_rain:{keywords:[\"weather\",\"lightning\"],char:\"⛈\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud_with_lightning:{keywords:[\"weather\",\"thunder\"],char:\"🌩\",fitzpatrick_scale:false,category:\"animals_and_nature\"},zap:{keywords:[\"thunder\",\"weather\",\"lightning bolt\",\"fast\"],char:\"⚡\",fitzpatrick_scale:false,category:\"animals_and_nature\"},fire:{keywords:[\"hot\",\"cook\",\"flame\"],char:\"🔥\",fitzpatrick_scale:false,category:\"animals_and_nature\"},boom:{keywords:[\"bomb\",\"explode\",\"explosion\",\"collision\",\"blown\"],char:\"💥\",fitzpatrick_scale:false,category:\"animals_and_nature\"},snowflake:{keywords:[\"winter\",\"season\",\"cold\",\"weather\",\"christmas\",\"xmas\"],char:\"❄️\",fitzpatrick_scale:false,category:\"animals_and_nature\"},cloud_with_snow:{keywords:[\"weather\"],char:\"🌨\",fitzpatrick_scale:false,category:\"animals_and_nature\"},snowman:{keywords:[\"winter\",\"season\",\"cold\",\"weather\",\"christmas\",\"xmas\",\"frozen\",\"without_snow\"],char:\"⛄\",fitzpatrick_scale:false,category:\"animals_and_nature\"},snowman_with_snow:{keywords:[\"winter\",\"season\",\"cold\",\"weather\",\"christmas\",\"xmas\",\"frozen\"],char:\"☃\",fitzpatrick_scale:false,category:\"animals_and_nature\"},wind_face:{keywords:[\"gust\",\"air\"],char:\"🌬\",fitzpatrick_scale:false,category:\"animals_and_nature\"},dash:{keywords:[\"wind\",\"air\",\"fast\",\"shoo\",\"fart\",\"smoke\",\"puff\"],char:\"💨\",fitzpatrick_scale:false,category:\"animals_and_nature\"},tornado:{keywords:[\"weather\",\"cyclone\",\"twister\"],char:\"🌪\",fitzpatrick_scale:false,category:\"animals_and_nature\"},fog:{keywords:[\"weather\"],char:\"🌫\",fitzpatrick_scale:false,category:\"animals_and_nature\"},open_umbrella:{keywords:[\"weather\",\"spring\"],char:\"☂\",fitzpatrick_scale:false,category:\"animals_and_nature\"},umbrella:{keywords:[\"rainy\",\"weather\",\"spring\"],char:\"☔\",fitzpatrick_scale:false,category:\"animals_and_nature\"},droplet:{keywords:[\"water\",\"drip\",\"faucet\",\"spring\"],char:\"💧\",fitzpatrick_scale:false,category:\"animals_and_nature\"},sweat_drops:{keywords:[\"water\",\"drip\",\"oops\"],char:\"💦\",fitzpatrick_scale:false,category:\"animals_and_nature\"},ocean:{keywords:[\"sea\",\"water\",\"wave\",\"nature\",\"tsunami\",\"disaster\"],char:\"🌊\",fitzpatrick_scale:false,category:\"animals_and_nature\"},green_apple:{keywords:[\"fruit\",\"nature\"],char:\"🍏\",fitzpatrick_scale:false,category:\"food_and_drink\"},apple:{keywords:[\"fruit\",\"mac\",\"school\"],char:\"🍎\",fitzpatrick_scale:false,category:\"food_and_drink\"},pear:{keywords:[\"fruit\",\"nature\",\"food\"],char:\"🍐\",fitzpatrick_scale:false,category:\"food_and_drink\"},tangerine:{keywords:[\"food\",\"fruit\",\"nature\",\"orange\"],char:\"🍊\",fitzpatrick_scale:false,category:\"food_and_drink\"},lemon:{keywords:[\"fruit\",\"nature\"],char:\"🍋\",fitzpatrick_scale:false,category:\"food_and_drink\"},banana:{keywords:[\"fruit\",\"food\",\"monkey\"],char:\"🍌\",fitzpatrick_scale:false,category:\"food_and_drink\"},watermelon:{keywords:[\"fruit\",\"food\",\"picnic\",\"summer\"],char:\"🍉\",fitzpatrick_scale:false,category:\"food_and_drink\"},grapes:{keywords:[\"fruit\",\"food\",\"wine\"],char:\"🍇\",fitzpatrick_scale:false,category:\"food_and_drink\"},strawberry:{keywords:[\"fruit\",\"food\",\"nature\"],char:\"🍓\",fitzpatrick_scale:false,category:\"food_and_drink\"},melon:{keywords:[\"fruit\",\"nature\",\"food\"],char:\"🍈\",fitzpatrick_scale:false,category:\"food_and_drink\"},cherries:{keywords:[\"food\",\"fruit\"],char:\"🍒\",fitzpatrick_scale:false,category:\"food_and_drink\"},peach:{keywords:[\"fruit\",\"nature\",\"food\"],char:\"🍑\",fitzpatrick_scale:false,category:\"food_and_drink\"},pineapple:{keywords:[\"fruit\",\"nature\",\"food\"],char:\"🍍\",fitzpatrick_scale:false,category:\"food_and_drink\"},coconut:{keywords:[\"fruit\",\"nature\",\"food\",\"palm\"],char:\"🥥\",fitzpatrick_scale:false,category:\"food_and_drink\"},kiwi_fruit:{keywords:[\"fruit\",\"food\"],char:\"🥝\",fitzpatrick_scale:false,category:\"food_and_drink\"},mango:{keywords:[\"fruit\",\"food\",\"tropical\"],char:\"🥭\",fitzpatrick_scale:false,category:\"food_and_drink\"},avocado:{keywords:[\"fruit\",\"food\"],char:\"🥑\",fitzpatrick_scale:false,category:\"food_and_drink\"},broccoli:{keywords:[\"fruit\",\"food\",\"vegetable\"],char:\"🥦\",fitzpatrick_scale:false,category:\"food_and_drink\"},tomato:{keywords:[\"fruit\",\"vegetable\",\"nature\",\"food\"],char:\"🍅\",fitzpatrick_scale:false,category:\"food_and_drink\"},eggplant:{keywords:[\"vegetable\",\"nature\",\"food\",\"aubergine\"],char:\"🍆\",fitzpatrick_scale:false,category:\"food_and_drink\"},cucumber:{keywords:[\"fruit\",\"food\",\"pickle\"],char:\"🥒\",fitzpatrick_scale:false,category:\"food_and_drink\"},carrot:{keywords:[\"vegetable\",\"food\",\"orange\"],char:\"🥕\",fitzpatrick_scale:false,category:\"food_and_drink\"},hot_pepper:{keywords:[\"food\",\"spicy\",\"chilli\",\"chili\"],char:\"🌶\",fitzpatrick_scale:false,category:\"food_and_drink\"},potato:{keywords:[\"food\",\"tuber\",\"vegatable\",\"starch\"],char:\"🥔\",fitzpatrick_scale:false,category:\"food_and_drink\"},corn:{keywords:[\"food\",\"vegetable\",\"plant\"],char:\"🌽\",fitzpatrick_scale:false,category:\"food_and_drink\"},leafy_greens:{keywords:[\"food\",\"vegetable\",\"plant\",\"bok choy\",\"cabbage\",\"kale\",\"lettuce\"],char:\"🥬\",fitzpatrick_scale:false,category:\"food_and_drink\"},sweet_potato:{keywords:[\"food\",\"nature\"],char:\"🍠\",fitzpatrick_scale:false,category:\"food_and_drink\"},peanuts:{keywords:[\"food\",\"nut\"],char:\"🥜\",fitzpatrick_scale:false,category:\"food_and_drink\"},honey_pot:{keywords:[\"bees\",\"sweet\",\"kitchen\"],char:\"🍯\",fitzpatrick_scale:false,category:\"food_and_drink\"},croissant:{keywords:[\"food\",\"bread\",\"french\"],char:\"🥐\",fitzpatrick_scale:false,category:\"food_and_drink\"},bread:{keywords:[\"food\",\"wheat\",\"breakfast\",\"toast\"],char:\"🍞\",fitzpatrick_scale:false,category:\"food_and_drink\"},baguette_bread:{keywords:[\"food\",\"bread\",\"french\"],char:\"🥖\",fitzpatrick_scale:false,category:\"food_and_drink\"},bagel:{keywords:[\"food\",\"bread\",\"bakery\",\"schmear\"],char:\"🥯\",fitzpatrick_scale:false,category:\"food_and_drink\"},pretzel:{keywords:[\"food\",\"bread\",\"twisted\"],char:\"🥨\",fitzpatrick_scale:false,category:\"food_and_drink\"},cheese:{keywords:[\"food\",\"chadder\"],char:\"🧀\",fitzpatrick_scale:false,category:\"food_and_drink\"},egg:{keywords:[\"food\",\"chicken\",\"breakfast\"],char:\"🥚\",fitzpatrick_scale:false,category:\"food_and_drink\"},bacon:{keywords:[\"food\",\"breakfast\",\"pork\",\"pig\",\"meat\"],char:\"🥓\",fitzpatrick_scale:false,category:\"food_and_drink\"},steak:{keywords:[\"food\",\"cow\",\"meat\",\"cut\",\"chop\",\"lambchop\",\"porkchop\"],char:\"🥩\",fitzpatrick_scale:false,category:\"food_and_drink\"},pancakes:{keywords:[\"food\",\"breakfast\",\"flapjacks\",\"hotcakes\"],char:\"🥞\",fitzpatrick_scale:false,category:\"food_and_drink\"},poultry_leg:{keywords:[\"food\",\"meat\",\"drumstick\",\"bird\",\"chicken\",\"turkey\"],char:\"🍗\",fitzpatrick_scale:false,category:\"food_and_drink\"},meat_on_bone:{keywords:[\"good\",\"food\",\"drumstick\"],char:\"🍖\",fitzpatrick_scale:false,category:\"food_and_drink\"},bone:{keywords:[\"skeleton\"],char:\"🦴\",fitzpatrick_scale:false,category:\"food_and_drink\"},fried_shrimp:{keywords:[\"food\",\"animal\",\"appetizer\",\"summer\"],char:\"🍤\",fitzpatrick_scale:false,category:\"food_and_drink\"},fried_egg:{keywords:[\"food\",\"breakfast\",\"kitchen\",\"egg\"],char:\"🍳\",fitzpatrick_scale:false,category:\"food_and_drink\"},hamburger:{keywords:[\"meat\",\"fast food\",\"beef\",\"cheeseburger\",\"mcdonalds\",\"burger king\"],char:\"🍔\",fitzpatrick_scale:false,category:\"food_and_drink\"},fries:{keywords:[\"chips\",\"snack\",\"fast food\"],char:\"🍟\",fitzpatrick_scale:false,category:\"food_and_drink\"},stuffed_flatbread:{keywords:[\"food\",\"flatbread\",\"stuffed\",\"gyro\"],char:\"🥙\",fitzpatrick_scale:false,category:\"food_and_drink\"},hotdog:{keywords:[\"food\",\"frankfurter\"],char:\"🌭\",fitzpatrick_scale:false,category:\"food_and_drink\"},pizza:{keywords:[\"food\",\"party\"],char:\"🍕\",fitzpatrick_scale:false,category:\"food_and_drink\"},sandwich:{keywords:[\"food\",\"lunch\",\"bread\"],char:\"🥪\",fitzpatrick_scale:false,category:\"food_and_drink\"},canned_food:{keywords:[\"food\",\"soup\"],char:\"🥫\",fitzpatrick_scale:false,category:\"food_and_drink\"},spaghetti:{keywords:[\"food\",\"italian\",\"noodle\"],char:\"🍝\",fitzpatrick_scale:false,category:\"food_and_drink\"},taco:{keywords:[\"food\",\"mexican\"],char:\"🌮\",fitzpatrick_scale:false,category:\"food_and_drink\"},burrito:{keywords:[\"food\",\"mexican\"],char:\"🌯\",fitzpatrick_scale:false,category:\"food_and_drink\"},green_salad:{keywords:[\"food\",\"healthy\",\"lettuce\"],char:\"🥗\",fitzpatrick_scale:false,category:\"food_and_drink\"},shallow_pan_of_food:{keywords:[\"food\",\"cooking\",\"casserole\",\"paella\"],char:\"🥘\",fitzpatrick_scale:false,category:\"food_and_drink\"},ramen:{keywords:[\"food\",\"japanese\",\"noodle\",\"chopsticks\"],char:\"🍜\",fitzpatrick_scale:false,category:\"food_and_drink\"},stew:{keywords:[\"food\",\"meat\",\"soup\"],char:\"🍲\",fitzpatrick_scale:false,category:\"food_and_drink\"},fish_cake:{keywords:[\"food\",\"japan\",\"sea\",\"beach\",\"narutomaki\",\"pink\",\"swirl\",\"kamaboko\",\"surimi\",\"ramen\"],char:\"🍥\",fitzpatrick_scale:false,category:\"food_and_drink\"},fortune_cookie:{keywords:[\"food\",\"prophecy\"],char:\"🥠\",fitzpatrick_scale:false,category:\"food_and_drink\"},sushi:{keywords:[\"food\",\"fish\",\"japanese\",\"rice\"],char:\"🍣\",fitzpatrick_scale:false,category:\"food_and_drink\"},bento:{keywords:[\"food\",\"japanese\",\"box\"],char:\"🍱\",fitzpatrick_scale:false,category:\"food_and_drink\"},curry:{keywords:[\"food\",\"spicy\",\"hot\",\"indian\"],char:\"🍛\",fitzpatrick_scale:false,category:\"food_and_drink\"},rice_ball:{keywords:[\"food\",\"japanese\"],char:\"🍙\",fitzpatrick_scale:false,category:\"food_and_drink\"},rice:{keywords:[\"food\",\"china\",\"asian\"],char:\"🍚\",fitzpatrick_scale:false,category:\"food_and_drink\"},rice_cracker:{keywords:[\"food\",\"japanese\"],char:\"🍘\",fitzpatrick_scale:false,category:\"food_and_drink\"},oden:{keywords:[\"food\",\"japanese\"],char:\"🍢\",fitzpatrick_scale:false,category:\"food_and_drink\"},dango:{keywords:[\"food\",\"dessert\",\"sweet\",\"japanese\",\"barbecue\",\"meat\"],char:\"🍡\",fitzpatrick_scale:false,category:\"food_and_drink\"},shaved_ice:{keywords:[\"hot\",\"dessert\",\"summer\"],char:\"🍧\",fitzpatrick_scale:false,category:\"food_and_drink\"},ice_cream:{keywords:[\"food\",\"hot\",\"dessert\"],char:\"🍨\",fitzpatrick_scale:false,category:\"food_and_drink\"},icecream:{keywords:[\"food\",\"hot\",\"dessert\",\"summer\"],char:\"🍦\",fitzpatrick_scale:false,category:\"food_and_drink\"},pie:{keywords:[\"food\",\"dessert\",\"pastry\"],char:\"🥧\",fitzpatrick_scale:false,category:\"food_and_drink\"},cake:{keywords:[\"food\",\"dessert\"],char:\"🍰\",fitzpatrick_scale:false,category:\"food_and_drink\"},cupcake:{keywords:[\"food\",\"dessert\",\"bakery\",\"sweet\"],char:\"🧁\",fitzpatrick_scale:false,category:\"food_and_drink\"},moon_cake:{keywords:[\"food\",\"autumn\"],char:\"🥮\",fitzpatrick_scale:false,category:\"food_and_drink\"},birthday:{keywords:[\"food\",\"dessert\",\"cake\"],char:\"🎂\",fitzpatrick_scale:false,category:\"food_and_drink\"},custard:{keywords:[\"dessert\",\"food\"],char:\"🍮\",fitzpatrick_scale:false,category:\"food_and_drink\"},candy:{keywords:[\"snack\",\"dessert\",\"sweet\",\"lolly\"],char:\"🍬\",fitzpatrick_scale:false,category:\"food_and_drink\"},lollipop:{keywords:[\"food\",\"snack\",\"candy\",\"sweet\"],char:\"🍭\",fitzpatrick_scale:false,category:\"food_and_drink\"},chocolate_bar:{keywords:[\"food\",\"snack\",\"dessert\",\"sweet\"],char:\"🍫\",fitzpatrick_scale:false,category:\"food_and_drink\"},popcorn:{keywords:[\"food\",\"movie theater\",\"films\",\"snack\"],char:\"🍿\",fitzpatrick_scale:false,category:\"food_and_drink\"},dumpling:{keywords:[\"food\",\"empanada\",\"pierogi\",\"potsticker\"],char:\"🥟\",fitzpatrick_scale:false,category:\"food_and_drink\"},doughnut:{keywords:[\"food\",\"dessert\",\"snack\",\"sweet\",\"donut\"],char:\"🍩\",fitzpatrick_scale:false,category:\"food_and_drink\"},cookie:{keywords:[\"food\",\"snack\",\"oreo\",\"chocolate\",\"sweet\",\"dessert\"],char:\"🍪\",fitzpatrick_scale:false,category:\"food_and_drink\"},milk_glass:{keywords:[\"beverage\",\"drink\",\"cow\"],char:\"🥛\",fitzpatrick_scale:false,category:\"food_and_drink\"},beer:{keywords:[\"relax\",\"beverage\",\"drink\",\"drunk\",\"party\",\"pub\",\"summer\",\"alcohol\",\"booze\"],char:\"🍺\",fitzpatrick_scale:false,category:\"food_and_drink\"},beers:{keywords:[\"relax\",\"beverage\",\"drink\",\"drunk\",\"party\",\"pub\",\"summer\",\"alcohol\",\"booze\"],char:\"🍻\",fitzpatrick_scale:false,category:\"food_and_drink\"},clinking_glasses:{keywords:[\"beverage\",\"drink\",\"party\",\"alcohol\",\"celebrate\",\"cheers\",\"wine\",\"champagne\",\"toast\"],char:\"🥂\",fitzpatrick_scale:false,category:\"food_and_drink\"},wine_glass:{keywords:[\"drink\",\"beverage\",\"drunk\",\"alcohol\",\"booze\"],char:\"🍷\",fitzpatrick_scale:false,category:\"food_and_drink\"},tumbler_glass:{keywords:[\"drink\",\"beverage\",\"drunk\",\"alcohol\",\"liquor\",\"booze\",\"bourbon\",\"scotch\",\"whisky\",\"glass\",\"shot\"],char:\"🥃\",fitzpatrick_scale:false,category:\"food_and_drink\"},cocktail:{keywords:[\"drink\",\"drunk\",\"alcohol\",\"beverage\",\"booze\",\"mojito\"],char:\"🍸\",fitzpatrick_scale:false,category:\"food_and_drink\"},tropical_drink:{keywords:[\"beverage\",\"cocktail\",\"summer\",\"beach\",\"alcohol\",\"booze\",\"mojito\"],char:\"🍹\",fitzpatrick_scale:false,category:\"food_and_drink\"},champagne:{keywords:[\"drink\",\"wine\",\"bottle\",\"celebration\"],char:\"🍾\",fitzpatrick_scale:false,category:\"food_and_drink\"},sake:{keywords:[\"wine\",\"drink\",\"drunk\",\"beverage\",\"japanese\",\"alcohol\",\"booze\"],char:\"🍶\",fitzpatrick_scale:false,category:\"food_and_drink\"},tea:{keywords:[\"drink\",\"bowl\",\"breakfast\",\"green\",\"british\"],char:\"🍵\",fitzpatrick_scale:false,category:\"food_and_drink\"},cup_with_straw:{keywords:[\"drink\",\"soda\"],char:\"🥤\",fitzpatrick_scale:false,category:\"food_and_drink\"},coffee:{keywords:[\"beverage\",\"caffeine\",\"latte\",\"espresso\"],char:\"☕\",fitzpatrick_scale:false,category:\"food_and_drink\"},baby_bottle:{keywords:[\"food\",\"container\",\"milk\"],char:\"🍼\",fitzpatrick_scale:false,category:\"food_and_drink\"},salt:{keywords:[\"condiment\",\"shaker\"],char:\"🧂\",fitzpatrick_scale:false,category:\"food_and_drink\"},spoon:{keywords:[\"cutlery\",\"kitchen\",\"tableware\"],char:\"🥄\",fitzpatrick_scale:false,category:\"food_and_drink\"},fork_and_knife:{keywords:[\"cutlery\",\"kitchen\"],char:\"🍴\",fitzpatrick_scale:false,category:\"food_and_drink\"},plate_with_cutlery:{keywords:[\"food\",\"eat\",\"meal\",\"lunch\",\"dinner\",\"restaurant\"],char:\"🍽\",fitzpatrick_scale:false,category:\"food_and_drink\"},bowl_with_spoon:{keywords:[\"food\",\"breakfast\",\"cereal\",\"oatmeal\",\"porridge\"],char:\"🥣\",fitzpatrick_scale:false,category:\"food_and_drink\"},takeout_box:{keywords:[\"food\",\"leftovers\"],char:\"🥡\",fitzpatrick_scale:false,category:\"food_and_drink\"},chopsticks:{keywords:[\"food\"],char:\"🥢\",fitzpatrick_scale:false,category:\"food_and_drink\"},soccer:{keywords:[\"sports\",\"football\"],char:\"⚽\",fitzpatrick_scale:false,category:\"activity\"},basketball:{keywords:[\"sports\",\"balls\",\"NBA\"],char:\"🏀\",fitzpatrick_scale:false,category:\"activity\"},football:{keywords:[\"sports\",\"balls\",\"NFL\"],char:\"🏈\",fitzpatrick_scale:false,category:\"activity\"},baseball:{keywords:[\"sports\",\"balls\"],char:\"⚾\",fitzpatrick_scale:false,category:\"activity\"},softball:{keywords:[\"sports\",\"balls\"],char:\"🥎\",fitzpatrick_scale:false,category:\"activity\"},tennis:{keywords:[\"sports\",\"balls\",\"green\"],char:\"🎾\",fitzpatrick_scale:false,category:\"activity\"},volleyball:{keywords:[\"sports\",\"balls\"],char:\"🏐\",fitzpatrick_scale:false,category:\"activity\"},rugby_football:{keywords:[\"sports\",\"team\"],char:\"🏉\",fitzpatrick_scale:false,category:\"activity\"},flying_disc:{keywords:[\"sports\",\"frisbee\",\"ultimate\"],char:\"🥏\",fitzpatrick_scale:false,category:\"activity\"},\"8ball\":{keywords:[\"pool\",\"hobby\",\"game\",\"luck\",\"magic\"],char:\"🎱\",fitzpatrick_scale:false,category:\"activity\"},golf:{keywords:[\"sports\",\"business\",\"flag\",\"hole\",\"summer\"],char:\"⛳\",fitzpatrick_scale:false,category:\"activity\"},golfing_woman:{keywords:[\"sports\",\"business\",\"woman\",\"female\"],char:\"🏌️‍♀️\",fitzpatrick_scale:false,category:\"activity\"},golfing_man:{keywords:[\"sports\",\"business\"],char:\"🏌\",fitzpatrick_scale:true,category:\"activity\"},ping_pong:{keywords:[\"sports\",\"pingpong\"],char:\"🏓\",fitzpatrick_scale:false,category:\"activity\"},badminton:{keywords:[\"sports\"],char:\"🏸\",fitzpatrick_scale:false,category:\"activity\"},goal_net:{keywords:[\"sports\"],char:\"🥅\",fitzpatrick_scale:false,category:\"activity\"},ice_hockey:{keywords:[\"sports\"],char:\"🏒\",fitzpatrick_scale:false,category:\"activity\"},field_hockey:{keywords:[\"sports\"],char:\"🏑\",fitzpatrick_scale:false,category:\"activity\"},lacrosse:{keywords:[\"sports\",\"ball\",\"stick\"],char:\"🥍\",fitzpatrick_scale:false,category:\"activity\"},cricket:{keywords:[\"sports\"],char:\"🏏\",fitzpatrick_scale:false,category:\"activity\"},ski:{keywords:[\"sports\",\"winter\",\"cold\",\"snow\"],char:\"🎿\",fitzpatrick_scale:false,category:\"activity\"},skier:{keywords:[\"sports\",\"winter\",\"snow\"],char:\"⛷\",fitzpatrick_scale:false,category:\"activity\"},snowboarder:{keywords:[\"sports\",\"winter\"],char:\"🏂\",fitzpatrick_scale:true,category:\"activity\"},person_fencing:{keywords:[\"sports\",\"fencing\",\"sword\"],char:\"🤺\",fitzpatrick_scale:false,category:\"activity\"},women_wrestling:{keywords:[\"sports\",\"wrestlers\"],char:\"🤼‍♀️\",fitzpatrick_scale:false,category:\"activity\"},men_wrestling:{keywords:[\"sports\",\"wrestlers\"],char:\"🤼‍♂️\",fitzpatrick_scale:false,category:\"activity\"},woman_cartwheeling:{keywords:[\"gymnastics\"],char:\"🤸‍♀️\",fitzpatrick_scale:true,category:\"activity\"},man_cartwheeling:{keywords:[\"gymnastics\"],char:\"🤸‍♂️\",fitzpatrick_scale:true,category:\"activity\"},woman_playing_handball:{keywords:[\"sports\"],char:\"🤾‍♀️\",fitzpatrick_scale:true,category:\"activity\"},man_playing_handball:{keywords:[\"sports\"],char:\"🤾‍♂️\",fitzpatrick_scale:true,category:\"activity\"},ice_skate:{keywords:[\"sports\"],char:\"⛸\",fitzpatrick_scale:false,category:\"activity\"},curling_stone:{keywords:[\"sports\"],char:\"🥌\",fitzpatrick_scale:false,category:\"activity\"},skateboard:{keywords:[\"board\"],char:\"🛹\",fitzpatrick_scale:false,category:\"activity\"},sled:{keywords:[\"sleigh\",\"luge\",\"toboggan\"],char:\"🛷\",fitzpatrick_scale:false,category:\"activity\"},bow_and_arrow:{keywords:[\"sports\"],char:\"🏹\",fitzpatrick_scale:false,category:\"activity\"},fishing_pole_and_fish:{keywords:[\"food\",\"hobby\",\"summer\"],char:\"🎣\",fitzpatrick_scale:false,category:\"activity\"},boxing_glove:{keywords:[\"sports\",\"fighting\"],char:\"🥊\",fitzpatrick_scale:false,category:\"activity\"},martial_arts_uniform:{keywords:[\"judo\",\"karate\",\"taekwondo\"],char:\"🥋\",fitzpatrick_scale:false,category:\"activity\"},rowing_woman:{keywords:[\"sports\",\"hobby\",\"water\",\"ship\",\"woman\",\"female\"],char:\"🚣‍♀️\",fitzpatrick_scale:true,category:\"activity\"},rowing_man:{keywords:[\"sports\",\"hobby\",\"water\",\"ship\"],char:\"🚣\",fitzpatrick_scale:true,category:\"activity\"},climbing_woman:{keywords:[\"sports\",\"hobby\",\"woman\",\"female\",\"rock\"],char:\"🧗‍♀️\",fitzpatrick_scale:true,category:\"activity\"},climbing_man:{keywords:[\"sports\",\"hobby\",\"man\",\"male\",\"rock\"],char:\"🧗‍♂️\",fitzpatrick_scale:true,category:\"activity\"},swimming_woman:{keywords:[\"sports\",\"exercise\",\"human\",\"athlete\",\"water\",\"summer\",\"woman\",\"female\"],char:\"🏊‍♀️\",fitzpatrick_scale:true,category:\"activity\"},swimming_man:{keywords:[\"sports\",\"exercise\",\"human\",\"athlete\",\"water\",\"summer\"],char:\"🏊\",fitzpatrick_scale:true,category:\"activity\"},woman_playing_water_polo:{keywords:[\"sports\",\"pool\"],char:\"🤽‍♀️\",fitzpatrick_scale:true,category:\"activity\"},man_playing_water_polo:{keywords:[\"sports\",\"pool\"],char:\"🤽‍♂️\",fitzpatrick_scale:true,category:\"activity\"},woman_in_lotus_position:{keywords:[\"woman\",\"female\",\"meditation\",\"yoga\",\"serenity\",\"zen\",\"mindfulness\"],char:\"🧘‍♀️\",fitzpatrick_scale:true,category:\"activity\"},man_in_lotus_position:{keywords:[\"man\",\"male\",\"meditation\",\"yoga\",\"serenity\",\"zen\",\"mindfulness\"],char:\"🧘‍♂️\",fitzpatrick_scale:true,category:\"activity\"},surfing_woman:{keywords:[\"sports\",\"ocean\",\"sea\",\"summer\",\"beach\",\"woman\",\"female\"],char:\"🏄‍♀️\",fitzpatrick_scale:true,category:\"activity\"},surfing_man:{keywords:[\"sports\",\"ocean\",\"sea\",\"summer\",\"beach\"],char:\"🏄\",fitzpatrick_scale:true,category:\"activity\"},bath:{keywords:[\"clean\",\"shower\",\"bathroom\"],char:\"🛀\",fitzpatrick_scale:true,category:\"activity\"},basketball_woman:{keywords:[\"sports\",\"human\",\"woman\",\"female\"],char:\"⛹️‍♀️\",fitzpatrick_scale:true,category:\"activity\"},basketball_man:{keywords:[\"sports\",\"human\"],char:\"⛹\",fitzpatrick_scale:true,category:\"activity\"},weight_lifting_woman:{keywords:[\"sports\",\"training\",\"exercise\",\"woman\",\"female\"],char:\"🏋️‍♀️\",fitzpatrick_scale:true,category:\"activity\"},weight_lifting_man:{keywords:[\"sports\",\"training\",\"exercise\"],char:\"🏋\",fitzpatrick_scale:true,category:\"activity\"},biking_woman:{keywords:[\"sports\",\"bike\",\"exercise\",\"hipster\",\"woman\",\"female\"],char:\"🚴‍♀️\",fitzpatrick_scale:true,category:\"activity\"},biking_man:{keywords:[\"sports\",\"bike\",\"exercise\",\"hipster\"],char:\"🚴\",fitzpatrick_scale:true,category:\"activity\"},mountain_biking_woman:{keywords:[\"transportation\",\"sports\",\"human\",\"race\",\"bike\",\"woman\",\"female\"],char:\"🚵‍♀️\",fitzpatrick_scale:true,category:\"activity\"},mountain_biking_man:{keywords:[\"transportation\",\"sports\",\"human\",\"race\",\"bike\"],char:\"🚵\",fitzpatrick_scale:true,category:\"activity\"},horse_racing:{keywords:[\"animal\",\"betting\",\"competition\",\"gambling\",\"luck\"],char:\"🏇\",fitzpatrick_scale:true,category:\"activity\"},business_suit_levitating:{keywords:[\"suit\",\"business\",\"levitate\",\"hover\",\"jump\"],char:\"🕴\",fitzpatrick_scale:true,category:\"activity\"},trophy:{keywords:[\"win\",\"award\",\"contest\",\"place\",\"ftw\",\"ceremony\"],char:\"🏆\",fitzpatrick_scale:false,category:\"activity\"},running_shirt_with_sash:{keywords:[\"play\",\"pageant\"],char:\"🎽\",fitzpatrick_scale:false,category:\"activity\"},medal_sports:{keywords:[\"award\",\"winning\"],char:\"🏅\",fitzpatrick_scale:false,category:\"activity\"},medal_military:{keywords:[\"award\",\"winning\",\"army\"],char:\"🎖\",fitzpatrick_scale:false,category:\"activity\"},\"1st_place_medal\":{keywords:[\"award\",\"winning\",\"first\"],char:\"🥇\",fitzpatrick_scale:false,category:\"activity\"},\"2nd_place_medal\":{keywords:[\"award\",\"second\"],char:\"🥈\",fitzpatrick_scale:false,category:\"activity\"},\"3rd_place_medal\":{keywords:[\"award\",\"third\"],char:\"🥉\",fitzpatrick_scale:false,category:\"activity\"},reminder_ribbon:{keywords:[\"sports\",\"cause\",\"support\",\"awareness\"],char:\"🎗\",fitzpatrick_scale:false,category:\"activity\"},rosette:{keywords:[\"flower\",\"decoration\",\"military\"],char:\"🏵\",fitzpatrick_scale:false,category:\"activity\"},ticket:{keywords:[\"event\",\"concert\",\"pass\"],char:\"🎫\",fitzpatrick_scale:false,category:\"activity\"},tickets:{keywords:[\"sports\",\"concert\",\"entrance\"],char:\"🎟\",fitzpatrick_scale:false,category:\"activity\"},performing_arts:{keywords:[\"acting\",\"theater\",\"drama\"],char:\"🎭\",fitzpatrick_scale:false,category:\"activity\"},art:{keywords:[\"design\",\"paint\",\"draw\",\"colors\"],char:\"🎨\",fitzpatrick_scale:false,category:\"activity\"},circus_tent:{keywords:[\"festival\",\"carnival\",\"party\"],char:\"🎪\",fitzpatrick_scale:false,category:\"activity\"},woman_juggling:{keywords:[\"juggle\",\"balance\",\"skill\",\"multitask\"],char:\"🤹‍♀️\",fitzpatrick_scale:true,category:\"activity\"},man_juggling:{keywords:[\"juggle\",\"balance\",\"skill\",\"multitask\"],char:\"🤹‍♂️\",fitzpatrick_scale:true,category:\"activity\"},microphone:{keywords:[\"sound\",\"music\",\"PA\",\"sing\",\"talkshow\"],char:\"🎤\",fitzpatrick_scale:false,category:\"activity\"},headphones:{keywords:[\"music\",\"score\",\"gadgets\"],char:\"🎧\",fitzpatrick_scale:false,category:\"activity\"},musical_score:{keywords:[\"treble\",\"clef\",\"compose\"],char:\"🎼\",fitzpatrick_scale:false,category:\"activity\"},musical_keyboard:{keywords:[\"piano\",\"instrument\",\"compose\"],char:\"🎹\",fitzpatrick_scale:false,category:\"activity\"},drum:{keywords:[\"music\",\"instrument\",\"drumsticks\",\"snare\"],char:\"🥁\",fitzpatrick_scale:false,category:\"activity\"},saxophone:{keywords:[\"music\",\"instrument\",\"jazz\",\"blues\"],char:\"🎷\",fitzpatrick_scale:false,category:\"activity\"},trumpet:{keywords:[\"music\",\"brass\"],char:\"🎺\",fitzpatrick_scale:false,category:\"activity\"},guitar:{keywords:[\"music\",\"instrument\"],char:\"🎸\",fitzpatrick_scale:false,category:\"activity\"},violin:{keywords:[\"music\",\"instrument\",\"orchestra\",\"symphony\"],char:\"🎻\",fitzpatrick_scale:false,category:\"activity\"},clapper:{keywords:[\"movie\",\"film\",\"record\"],char:\"🎬\",fitzpatrick_scale:false,category:\"activity\"},video_game:{keywords:[\"play\",\"console\",\"PS4\",\"controller\"],char:\"🎮\",fitzpatrick_scale:false,category:\"activity\"},space_invader:{keywords:[\"game\",\"arcade\",\"play\"],char:\"👾\",fitzpatrick_scale:false,category:\"activity\"},dart:{keywords:[\"game\",\"play\",\"bar\",\"target\",\"bullseye\"],char:\"🎯\",fitzpatrick_scale:false,category:\"activity\"},game_die:{keywords:[\"dice\",\"random\",\"tabletop\",\"play\",\"luck\"],char:\"🎲\",fitzpatrick_scale:false,category:\"activity\"},chess_pawn:{keywords:[\"expendable\"],char:\"♟\",fitzpatrick_scale:false,category:\"activity\"},slot_machine:{keywords:[\"bet\",\"gamble\",\"vegas\",\"fruit machine\",\"luck\",\"casino\"],char:\"🎰\",fitzpatrick_scale:false,category:\"activity\"},jigsaw:{keywords:[\"interlocking\",\"puzzle\",\"piece\"],char:\"🧩\",fitzpatrick_scale:false,category:\"activity\"},bowling:{keywords:[\"sports\",\"fun\",\"play\"],char:\"🎳\",fitzpatrick_scale:false,category:\"activity\"},red_car:{keywords:[\"red\",\"transportation\",\"vehicle\"],char:\"🚗\",fitzpatrick_scale:false,category:\"travel_and_places\"},taxi:{keywords:[\"uber\",\"vehicle\",\"cars\",\"transportation\"],char:\"🚕\",fitzpatrick_scale:false,category:\"travel_and_places\"},blue_car:{keywords:[\"transportation\",\"vehicle\"],char:\"🚙\",fitzpatrick_scale:false,category:\"travel_and_places\"},bus:{keywords:[\"car\",\"vehicle\",\"transportation\"],char:\"🚌\",fitzpatrick_scale:false,category:\"travel_and_places\"},trolleybus:{keywords:[\"bart\",\"transportation\",\"vehicle\"],char:\"🚎\",fitzpatrick_scale:false,category:\"travel_and_places\"},racing_car:{keywords:[\"sports\",\"race\",\"fast\",\"formula\",\"f1\"],char:\"🏎\",fitzpatrick_scale:false,category:\"travel_and_places\"},police_car:{keywords:[\"vehicle\",\"cars\",\"transportation\",\"law\",\"legal\",\"enforcement\"],char:\"🚓\",fitzpatrick_scale:false,category:\"travel_and_places\"},ambulance:{keywords:[\"health\",\"911\",\"hospital\"],char:\"🚑\",fitzpatrick_scale:false,category:\"travel_and_places\"},fire_engine:{keywords:[\"transportation\",\"cars\",\"vehicle\"],char:\"🚒\",fitzpatrick_scale:false,category:\"travel_and_places\"},minibus:{keywords:[\"vehicle\",\"car\",\"transportation\"],char:\"🚐\",fitzpatrick_scale:false,category:\"travel_and_places\"},truck:{keywords:[\"cars\",\"transportation\"],char:\"🚚\",fitzpatrick_scale:false,category:\"travel_and_places\"},articulated_lorry:{keywords:[\"vehicle\",\"cars\",\"transportation\",\"express\"],char:\"🚛\",fitzpatrick_scale:false,category:\"travel_and_places\"},tractor:{keywords:[\"vehicle\",\"car\",\"farming\",\"agriculture\"],char:\"🚜\",fitzpatrick_scale:false,category:\"travel_and_places\"},kick_scooter:{keywords:[\"vehicle\",\"kick\",\"razor\"],char:\"🛴\",fitzpatrick_scale:false,category:\"travel_and_places\"},motorcycle:{keywords:[\"race\",\"sports\",\"fast\"],char:\"🏍\",fitzpatrick_scale:false,category:\"travel_and_places\"},bike:{keywords:[\"sports\",\"bicycle\",\"exercise\",\"hipster\"],char:\"🚲\",fitzpatrick_scale:false,category:\"travel_and_places\"},motor_scooter:{keywords:[\"vehicle\",\"vespa\",\"sasha\"],char:\"🛵\",fitzpatrick_scale:false,category:\"travel_and_places\"},rotating_light:{keywords:[\"police\",\"ambulance\",\"911\",\"emergency\",\"alert\",\"error\",\"pinged\",\"law\",\"legal\"],char:\"🚨\",fitzpatrick_scale:false,category:\"travel_and_places\"},oncoming_police_car:{keywords:[\"vehicle\",\"law\",\"legal\",\"enforcement\",\"911\"],char:\"🚔\",fitzpatrick_scale:false,category:\"travel_and_places\"},oncoming_bus:{keywords:[\"vehicle\",\"transportation\"],char:\"🚍\",fitzpatrick_scale:false,category:\"travel_and_places\"},oncoming_automobile:{keywords:[\"car\",\"vehicle\",\"transportation\"],char:\"🚘\",fitzpatrick_scale:false,category:\"travel_and_places\"},oncoming_taxi:{keywords:[\"vehicle\",\"cars\",\"uber\"],char:\"🚖\",fitzpatrick_scale:false,category:\"travel_and_places\"},aerial_tramway:{keywords:[\"transportation\",\"vehicle\",\"ski\"],char:\"🚡\",fitzpatrick_scale:false,category:\"travel_and_places\"},mountain_cableway:{keywords:[\"transportation\",\"vehicle\",\"ski\"],char:\"🚠\",fitzpatrick_scale:false,category:\"travel_and_places\"},suspension_railway:{keywords:[\"vehicle\",\"transportation\"],char:\"🚟\",fitzpatrick_scale:false,category:\"travel_and_places\"},railway_car:{keywords:[\"transportation\",\"vehicle\"],char:\"🚃\",fitzpatrick_scale:false,category:\"travel_and_places\"},train:{keywords:[\"transportation\",\"vehicle\",\"carriage\",\"public\",\"travel\"],char:\"🚋\",fitzpatrick_scale:false,category:\"travel_and_places\"},monorail:{keywords:[\"transportation\",\"vehicle\"],char:\"🚝\",fitzpatrick_scale:false,category:\"travel_and_places\"},bullettrain_side:{keywords:[\"transportation\",\"vehicle\"],char:\"🚄\",fitzpatrick_scale:false,category:\"travel_and_places\"},bullettrain_front:{keywords:[\"transportation\",\"vehicle\",\"speed\",\"fast\",\"public\",\"travel\"],char:\"🚅\",fitzpatrick_scale:false,category:\"travel_and_places\"},light_rail:{keywords:[\"transportation\",\"vehicle\"],char:\"🚈\",fitzpatrick_scale:false,category:\"travel_and_places\"},mountain_railway:{keywords:[\"transportation\",\"vehicle\"],char:\"🚞\",fitzpatrick_scale:false,category:\"travel_and_places\"},steam_locomotive:{keywords:[\"transportation\",\"vehicle\",\"train\"],char:\"🚂\",fitzpatrick_scale:false,category:\"travel_and_places\"},train2:{keywords:[\"transportation\",\"vehicle\"],char:\"🚆\",fitzpatrick_scale:false,category:\"travel_and_places\"},metro:{keywords:[\"transportation\",\"blue-square\",\"mrt\",\"underground\",\"tube\"],char:\"🚇\",fitzpatrick_scale:false,category:\"travel_and_places\"},tram:{keywords:[\"transportation\",\"vehicle\"],char:\"🚊\",fitzpatrick_scale:false,category:\"travel_and_places\"},station:{keywords:[\"transportation\",\"vehicle\",\"public\"],char:\"🚉\",fitzpatrick_scale:false,category:\"travel_and_places\"},flying_saucer:{keywords:[\"transportation\",\"vehicle\",\"ufo\"],char:\"🛸\",fitzpatrick_scale:false,category:\"travel_and_places\"},helicopter:{keywords:[\"transportation\",\"vehicle\",\"fly\"],char:\"🚁\",fitzpatrick_scale:false,category:\"travel_and_places\"},small_airplane:{keywords:[\"flight\",\"transportation\",\"fly\",\"vehicle\"],char:\"🛩\",fitzpatrick_scale:false,category:\"travel_and_places\"},airplane:{keywords:[\"vehicle\",\"transportation\",\"flight\",\"fly\"],char:\"✈️\",fitzpatrick_scale:false,category:\"travel_and_places\"},flight_departure:{keywords:[\"airport\",\"flight\",\"landing\"],char:\"🛫\",fitzpatrick_scale:false,category:\"travel_and_places\"},flight_arrival:{keywords:[\"airport\",\"flight\",\"boarding\"],char:\"🛬\",fitzpatrick_scale:false,category:\"travel_and_places\"},sailboat:{keywords:[\"ship\",\"summer\",\"transportation\",\"water\",\"sailing\"],char:\"⛵\",fitzpatrick_scale:false,category:\"travel_and_places\"},motor_boat:{keywords:[\"ship\"],char:\"🛥\",fitzpatrick_scale:false,category:\"travel_and_places\"},speedboat:{keywords:[\"ship\",\"transportation\",\"vehicle\",\"summer\"],char:\"🚤\",fitzpatrick_scale:false,category:\"travel_and_places\"},ferry:{keywords:[\"boat\",\"ship\",\"yacht\"],char:\"⛴\",fitzpatrick_scale:false,category:\"travel_and_places\"},passenger_ship:{keywords:[\"yacht\",\"cruise\",\"ferry\"],char:\"🛳\",fitzpatrick_scale:false,category:\"travel_and_places\"},rocket:{keywords:[\"launch\",\"ship\",\"staffmode\",\"NASA\",\"outer space\",\"outer_space\",\"fly\"],char:\"🚀\",fitzpatrick_scale:false,category:\"travel_and_places\"},artificial_satellite:{keywords:[\"communication\",\"gps\",\"orbit\",\"spaceflight\",\"NASA\",\"ISS\"],char:\"🛰\",fitzpatrick_scale:false,category:\"travel_and_places\"},seat:{keywords:[\"sit\",\"airplane\",\"transport\",\"bus\",\"flight\",\"fly\"],char:\"💺\",fitzpatrick_scale:false,category:\"travel_and_places\"},canoe:{keywords:[\"boat\",\"paddle\",\"water\",\"ship\"],char:\"🛶\",fitzpatrick_scale:false,category:\"travel_and_places\"},anchor:{keywords:[\"ship\",\"ferry\",\"sea\",\"boat\"],char:\"⚓\",fitzpatrick_scale:false,category:\"travel_and_places\"},construction:{keywords:[\"wip\",\"progress\",\"caution\",\"warning\"],char:\"🚧\",fitzpatrick_scale:false,category:\"travel_and_places\"},fuelpump:{keywords:[\"gas station\",\"petroleum\"],char:\"⛽\",fitzpatrick_scale:false,category:\"travel_and_places\"},busstop:{keywords:[\"transportation\",\"wait\"],char:\"🚏\",fitzpatrick_scale:false,category:\"travel_and_places\"},vertical_traffic_light:{keywords:[\"transportation\",\"driving\"],char:\"🚦\",fitzpatrick_scale:false,category:\"travel_and_places\"},traffic_light:{keywords:[\"transportation\",\"signal\"],char:\"🚥\",fitzpatrick_scale:false,category:\"travel_and_places\"},checkered_flag:{keywords:[\"contest\",\"finishline\",\"race\",\"gokart\"],char:\"🏁\",fitzpatrick_scale:false,category:\"travel_and_places\"},ship:{keywords:[\"transportation\",\"titanic\",\"deploy\"],char:\"🚢\",fitzpatrick_scale:false,category:\"travel_and_places\"},ferris_wheel:{keywords:[\"photo\",\"carnival\",\"londoneye\"],char:\"🎡\",fitzpatrick_scale:false,category:\"travel_and_places\"},roller_coaster:{keywords:[\"carnival\",\"playground\",\"photo\",\"fun\"],char:\"🎢\",fitzpatrick_scale:false,category:\"travel_and_places\"},carousel_horse:{keywords:[\"photo\",\"carnival\"],char:\"🎠\",fitzpatrick_scale:false,category:\"travel_and_places\"},building_construction:{keywords:[\"wip\",\"working\",\"progress\"],char:\"🏗\",fitzpatrick_scale:false,category:\"travel_and_places\"},foggy:{keywords:[\"photo\",\"mountain\"],char:\"🌁\",fitzpatrick_scale:false,category:\"travel_and_places\"},tokyo_tower:{keywords:[\"photo\",\"japanese\"],char:\"🗼\",fitzpatrick_scale:false,category:\"travel_and_places\"},factory:{keywords:[\"building\",\"industry\",\"pollution\",\"smoke\"],char:\"🏭\",fitzpatrick_scale:false,category:\"travel_and_places\"},fountain:{keywords:[\"photo\",\"summer\",\"water\",\"fresh\"],char:\"⛲\",fitzpatrick_scale:false,category:\"travel_and_places\"},rice_scene:{keywords:[\"photo\",\"japan\",\"asia\",\"tsukimi\"],char:\"🎑\",fitzpatrick_scale:false,category:\"travel_and_places\"},mountain:{keywords:[\"photo\",\"nature\",\"environment\"],char:\"⛰\",fitzpatrick_scale:false,category:\"travel_and_places\"},mountain_snow:{keywords:[\"photo\",\"nature\",\"environment\",\"winter\",\"cold\"],char:\"🏔\",fitzpatrick_scale:false,category:\"travel_and_places\"},mount_fuji:{keywords:[\"photo\",\"mountain\",\"nature\",\"japanese\"],char:\"🗻\",fitzpatrick_scale:false,category:\"travel_and_places\"},volcano:{keywords:[\"photo\",\"nature\",\"disaster\"],char:\"🌋\",fitzpatrick_scale:false,category:\"travel_and_places\"},japan:{keywords:[\"nation\",\"country\",\"japanese\",\"asia\"],char:\"🗾\",fitzpatrick_scale:false,category:\"travel_and_places\"},camping:{keywords:[\"photo\",\"outdoors\",\"tent\"],char:\"🏕\",fitzpatrick_scale:false,category:\"travel_and_places\"},tent:{keywords:[\"photo\",\"camping\",\"outdoors\"],char:\"⛺\",fitzpatrick_scale:false,category:\"travel_and_places\"},national_park:{keywords:[\"photo\",\"environment\",\"nature\"],char:\"🏞\",fitzpatrick_scale:false,category:\"travel_and_places\"},motorway:{keywords:[\"road\",\"cupertino\",\"interstate\",\"highway\"],char:\"🛣\",fitzpatrick_scale:false,category:\"travel_and_places\"},railway_track:{keywords:[\"train\",\"transportation\"],char:\"🛤\",fitzpatrick_scale:false,category:\"travel_and_places\"},sunrise:{keywords:[\"morning\",\"view\",\"vacation\",\"photo\"],char:\"🌅\",fitzpatrick_scale:false,category:\"travel_and_places\"},sunrise_over_mountains:{keywords:[\"view\",\"vacation\",\"photo\"],char:\"🌄\",fitzpatrick_scale:false,category:\"travel_and_places\"},desert:{keywords:[\"photo\",\"warm\",\"saharah\"],char:\"🏜\",fitzpatrick_scale:false,category:\"travel_and_places\"},beach_umbrella:{keywords:[\"weather\",\"summer\",\"sunny\",\"sand\",\"mojito\"],char:\"🏖\",fitzpatrick_scale:false,category:\"travel_and_places\"},desert_island:{keywords:[\"photo\",\"tropical\",\"mojito\"],char:\"🏝\",fitzpatrick_scale:false,category:\"travel_and_places\"},city_sunrise:{keywords:[\"photo\",\"good morning\",\"dawn\"],char:\"🌇\",fitzpatrick_scale:false,category:\"travel_and_places\"},city_sunset:{keywords:[\"photo\",\"evening\",\"sky\",\"buildings\"],char:\"🌆\",fitzpatrick_scale:false,category:\"travel_and_places\"},cityscape:{keywords:[\"photo\",\"night life\",\"urban\"],char:\"🏙\",fitzpatrick_scale:false,category:\"travel_and_places\"},night_with_stars:{keywords:[\"evening\",\"city\",\"downtown\"],char:\"🌃\",fitzpatrick_scale:false,category:\"travel_and_places\"},bridge_at_night:{keywords:[\"photo\",\"sanfrancisco\"],char:\"🌉\",fitzpatrick_scale:false,category:\"travel_and_places\"},milky_way:{keywords:[\"photo\",\"space\",\"stars\"],char:\"🌌\",fitzpatrick_scale:false,category:\"travel_and_places\"},stars:{keywords:[\"night\",\"photo\"],char:\"🌠\",fitzpatrick_scale:false,category:\"travel_and_places\"},sparkler:{keywords:[\"stars\",\"night\",\"shine\"],char:\"🎇\",fitzpatrick_scale:false,category:\"travel_and_places\"},fireworks:{keywords:[\"photo\",\"festival\",\"carnival\",\"congratulations\"],char:\"🎆\",fitzpatrick_scale:false,category:\"travel_and_places\"},rainbow:{keywords:[\"nature\",\"happy\",\"unicorn_face\",\"photo\",\"sky\",\"spring\"],char:\"🌈\",fitzpatrick_scale:false,category:\"travel_and_places\"},houses:{keywords:[\"buildings\",\"photo\"],char:\"🏘\",fitzpatrick_scale:false,category:\"travel_and_places\"},european_castle:{keywords:[\"building\",\"royalty\",\"history\"],char:\"🏰\",fitzpatrick_scale:false,category:\"travel_and_places\"},japanese_castle:{keywords:[\"photo\",\"building\"],char:\"🏯\",fitzpatrick_scale:false,category:\"travel_and_places\"},stadium:{keywords:[\"photo\",\"place\",\"sports\",\"concert\",\"venue\"],char:\"🏟\",fitzpatrick_scale:false,category:\"travel_and_places\"},statue_of_liberty:{keywords:[\"american\",\"newyork\"],char:\"🗽\",fitzpatrick_scale:false,category:\"travel_and_places\"},house:{keywords:[\"building\",\"home\"],char:\"🏠\",fitzpatrick_scale:false,category:\"travel_and_places\"},house_with_garden:{keywords:[\"home\",\"plant\",\"nature\"],char:\"🏡\",fitzpatrick_scale:false,category:\"travel_and_places\"},derelict_house:{keywords:[\"abandon\",\"evict\",\"broken\",\"building\"],char:\"🏚\",fitzpatrick_scale:false,category:\"travel_and_places\"},office:{keywords:[\"building\",\"bureau\",\"work\"],char:\"🏢\",fitzpatrick_scale:false,category:\"travel_and_places\"},department_store:{keywords:[\"building\",\"shopping\",\"mall\"],char:\"🏬\",fitzpatrick_scale:false,category:\"travel_and_places\"},post_office:{keywords:[\"building\",\"envelope\",\"communication\"],char:\"🏣\",fitzpatrick_scale:false,category:\"travel_and_places\"},european_post_office:{keywords:[\"building\",\"email\"],char:\"🏤\",fitzpatrick_scale:false,category:\"travel_and_places\"},hospital:{keywords:[\"building\",\"health\",\"surgery\",\"doctor\"],char:\"🏥\",fitzpatrick_scale:false,category:\"travel_and_places\"},bank:{keywords:[\"building\",\"money\",\"sales\",\"cash\",\"business\",\"enterprise\"],char:\"🏦\",fitzpatrick_scale:false,category:\"travel_and_places\"},hotel:{keywords:[\"building\",\"accomodation\",\"checkin\"],char:\"🏨\",fitzpatrick_scale:false,category:\"travel_and_places\"},convenience_store:{keywords:[\"building\",\"shopping\",\"groceries\"],char:\"🏪\",fitzpatrick_scale:false,category:\"travel_and_places\"},school:{keywords:[\"building\",\"student\",\"education\",\"learn\",\"teach\"],char:\"🏫\",fitzpatrick_scale:false,category:\"travel_and_places\"},love_hotel:{keywords:[\"like\",\"affection\",\"dating\"],char:\"🏩\",fitzpatrick_scale:false,category:\"travel_and_places\"},wedding:{keywords:[\"love\",\"like\",\"affection\",\"couple\",\"marriage\",\"bride\",\"groom\"],char:\"💒\",fitzpatrick_scale:false,category:\"travel_and_places\"},classical_building:{keywords:[\"art\",\"culture\",\"history\"],char:\"🏛\",fitzpatrick_scale:false,category:\"travel_and_places\"},church:{keywords:[\"building\",\"religion\",\"christ\"],char:\"⛪\",fitzpatrick_scale:false,category:\"travel_and_places\"},mosque:{keywords:[\"islam\",\"worship\",\"minaret\"],char:\"🕌\",fitzpatrick_scale:false,category:\"travel_and_places\"},synagogue:{keywords:[\"judaism\",\"worship\",\"temple\",\"jewish\"],char:\"🕍\",fitzpatrick_scale:false,category:\"travel_and_places\"},kaaba:{keywords:[\"mecca\",\"mosque\",\"islam\"],char:\"🕋\",fitzpatrick_scale:false,category:\"travel_and_places\"},shinto_shrine:{keywords:[\"temple\",\"japan\",\"kyoto\"],char:\"⛩\",fitzpatrick_scale:false,category:\"travel_and_places\"},watch:{keywords:[\"time\",\"accessories\"],char:\"⌚\",fitzpatrick_scale:false,category:\"objects\"},iphone:{keywords:[\"technology\",\"apple\",\"gadgets\",\"dial\"],char:\"📱\",fitzpatrick_scale:false,category:\"objects\"},calling:{keywords:[\"iphone\",\"incoming\"],char:\"📲\",fitzpatrick_scale:false,category:\"objects\"},computer:{keywords:[\"technology\",\"laptop\",\"screen\",\"display\",\"monitor\"],char:\"💻\",fitzpatrick_scale:false,category:\"objects\"},keyboard:{keywords:[\"technology\",\"computer\",\"type\",\"input\",\"text\"],char:\"⌨\",fitzpatrick_scale:false,category:\"objects\"},desktop_computer:{keywords:[\"technology\",\"computing\",\"screen\"],char:\"🖥\",fitzpatrick_scale:false,category:\"objects\"},printer:{keywords:[\"paper\",\"ink\"],char:\"🖨\",fitzpatrick_scale:false,category:\"objects\"},computer_mouse:{keywords:[\"click\"],char:\"🖱\",fitzpatrick_scale:false,category:\"objects\"},trackball:{keywords:[\"technology\",\"trackpad\"],char:\"🖲\",fitzpatrick_scale:false,category:\"objects\"},joystick:{keywords:[\"game\",\"play\"],char:\"🕹\",fitzpatrick_scale:false,category:\"objects\"},clamp:{keywords:[\"tool\"],char:\"🗜\",fitzpatrick_scale:false,category:\"objects\"},minidisc:{keywords:[\"technology\",\"record\",\"data\",\"disk\",\"90s\"],char:\"💽\",fitzpatrick_scale:false,category:\"objects\"},floppy_disk:{keywords:[\"oldschool\",\"technology\",\"save\",\"90s\",\"80s\"],char:\"💾\",fitzpatrick_scale:false,category:\"objects\"},cd:{keywords:[\"technology\",\"dvd\",\"disk\",\"disc\",\"90s\"],char:\"💿\",fitzpatrick_scale:false,category:\"objects\"},dvd:{keywords:[\"cd\",\"disk\",\"disc\"],char:\"📀\",fitzpatrick_scale:false,category:\"objects\"},vhs:{keywords:[\"record\",\"video\",\"oldschool\",\"90s\",\"80s\"],char:\"📼\",fitzpatrick_scale:false,category:\"objects\"},camera:{keywords:[\"gadgets\",\"photography\"],char:\"📷\",fitzpatrick_scale:false,category:\"objects\"},camera_flash:{keywords:[\"photography\",\"gadgets\"],char:\"📸\",fitzpatrick_scale:false,category:\"objects\"},video_camera:{keywords:[\"film\",\"record\"],char:\"📹\",fitzpatrick_scale:false,category:\"objects\"},movie_camera:{keywords:[\"film\",\"record\"],char:\"🎥\",fitzpatrick_scale:false,category:\"objects\"},film_projector:{keywords:[\"video\",\"tape\",\"record\",\"movie\"],char:\"📽\",fitzpatrick_scale:false,category:\"objects\"},film_strip:{keywords:[\"movie\"],char:\"🎞\",fitzpatrick_scale:false,category:\"objects\"},telephone_receiver:{keywords:[\"technology\",\"communication\",\"dial\"],char:\"📞\",fitzpatrick_scale:false,category:\"objects\"},phone:{keywords:[\"technology\",\"communication\",\"dial\",\"telephone\"],char:\"☎️\",fitzpatrick_scale:false,category:\"objects\"},pager:{keywords:[\"bbcall\",\"oldschool\",\"90s\"],char:\"📟\",fitzpatrick_scale:false,category:\"objects\"},fax:{keywords:[\"communication\",\"technology\"],char:\"📠\",fitzpatrick_scale:false,category:\"objects\"},tv:{keywords:[\"technology\",\"program\",\"oldschool\",\"show\",\"television\"],char:\"📺\",fitzpatrick_scale:false,category:\"objects\"},radio:{keywords:[\"communication\",\"music\",\"podcast\",\"program\"],char:\"📻\",fitzpatrick_scale:false,category:\"objects\"},studio_microphone:{keywords:[\"sing\",\"recording\",\"artist\",\"talkshow\"],char:\"🎙\",fitzpatrick_scale:false,category:\"objects\"},level_slider:{keywords:[\"scale\"],char:\"🎚\",fitzpatrick_scale:false,category:\"objects\"},control_knobs:{keywords:[\"dial\"],char:\"🎛\",fitzpatrick_scale:false,category:\"objects\"},compass:{keywords:[\"magnetic\",\"navigation\",\"orienteering\"],char:\"🧭\",fitzpatrick_scale:false,category:\"objects\"},stopwatch:{keywords:[\"time\",\"deadline\"],char:\"⏱\",fitzpatrick_scale:false,category:\"objects\"},timer_clock:{keywords:[\"alarm\"],char:\"⏲\",fitzpatrick_scale:false,category:\"objects\"},alarm_clock:{keywords:[\"time\",\"wake\"],char:\"⏰\",fitzpatrick_scale:false,category:\"objects\"},mantelpiece_clock:{keywords:[\"time\"],char:\"🕰\",fitzpatrick_scale:false,category:\"objects\"},hourglass_flowing_sand:{keywords:[\"oldschool\",\"time\",\"countdown\"],char:\"⏳\",fitzpatrick_scale:false,category:\"objects\"},hourglass:{keywords:[\"time\",\"clock\",\"oldschool\",\"limit\",\"exam\",\"quiz\",\"test\"],char:\"⌛\",fitzpatrick_scale:false,category:\"objects\"},satellite:{keywords:[\"communication\",\"future\",\"radio\",\"space\"],char:\"📡\",fitzpatrick_scale:false,category:\"objects\"},battery:{keywords:[\"power\",\"energy\",\"sustain\"],char:\"🔋\",fitzpatrick_scale:false,category:\"objects\"},electric_plug:{keywords:[\"charger\",\"power\"],char:\"🔌\",fitzpatrick_scale:false,category:\"objects\"},bulb:{keywords:[\"light\",\"electricity\",\"idea\"],char:\"💡\",fitzpatrick_scale:false,category:\"objects\"},flashlight:{keywords:[\"dark\",\"camping\",\"sight\",\"night\"],char:\"🔦\",fitzpatrick_scale:false,category:\"objects\"},candle:{keywords:[\"fire\",\"wax\"],char:\"🕯\",fitzpatrick_scale:false,category:\"objects\"},fire_extinguisher:{keywords:[\"quench\"],char:\"🧯\",fitzpatrick_scale:false,category:\"objects\"},wastebasket:{keywords:[\"bin\",\"trash\",\"rubbish\",\"garbage\",\"toss\"],char:\"🗑\",fitzpatrick_scale:false,category:\"objects\"},oil_drum:{keywords:[\"barrell\"],char:\"🛢\",fitzpatrick_scale:false,category:\"objects\"},money_with_wings:{keywords:[\"dollar\",\"bills\",\"payment\",\"sale\"],char:\"💸\",fitzpatrick_scale:false,category:\"objects\"},dollar:{keywords:[\"money\",\"sales\",\"bill\",\"currency\"],char:\"💵\",fitzpatrick_scale:false,category:\"objects\"},yen:{keywords:[\"money\",\"sales\",\"japanese\",\"dollar\",\"currency\"],char:\"💴\",fitzpatrick_scale:false,category:\"objects\"},euro:{keywords:[\"money\",\"sales\",\"dollar\",\"currency\"],char:\"💶\",fitzpatrick_scale:false,category:\"objects\"},pound:{keywords:[\"british\",\"sterling\",\"money\",\"sales\",\"bills\",\"uk\",\"england\",\"currency\"],char:\"💷\",fitzpatrick_scale:false,category:\"objects\"},moneybag:{keywords:[\"dollar\",\"payment\",\"coins\",\"sale\"],char:\"💰\",fitzpatrick_scale:false,category:\"objects\"},credit_card:{keywords:[\"money\",\"sales\",\"dollar\",\"bill\",\"payment\",\"shopping\"],char:\"💳\",fitzpatrick_scale:false,category:\"objects\"},gem:{keywords:[\"blue\",\"ruby\",\"diamond\",\"jewelry\"],char:\"💎\",fitzpatrick_scale:false,category:\"objects\"},balance_scale:{keywords:[\"law\",\"fairness\",\"weight\"],char:\"⚖\",fitzpatrick_scale:false,category:\"objects\"},toolbox:{keywords:[\"tools\",\"diy\",\"fix\",\"maintainer\",\"mechanic\"],char:\"🧰\",fitzpatrick_scale:false,category:\"objects\"},wrench:{keywords:[\"tools\",\"diy\",\"ikea\",\"fix\",\"maintainer\"],char:\"🔧\",fitzpatrick_scale:false,category:\"objects\"},hammer:{keywords:[\"tools\",\"build\",\"create\"],char:\"🔨\",fitzpatrick_scale:false,category:\"objects\"},hammer_and_pick:{keywords:[\"tools\",\"build\",\"create\"],char:\"⚒\",fitzpatrick_scale:false,category:\"objects\"},hammer_and_wrench:{keywords:[\"tools\",\"build\",\"create\"],char:\"🛠\",fitzpatrick_scale:false,category:\"objects\"},pick:{keywords:[\"tools\",\"dig\"],char:\"⛏\",fitzpatrick_scale:false,category:\"objects\"},nut_and_bolt:{keywords:[\"handy\",\"tools\",\"fix\"],char:\"🔩\",fitzpatrick_scale:false,category:\"objects\"},gear:{keywords:[\"cog\"],char:\"⚙\",fitzpatrick_scale:false,category:\"objects\"},brick:{keywords:[\"bricks\"],char:\"🧱\",fitzpatrick_scale:false,category:\"objects\"},chains:{keywords:[\"lock\",\"arrest\"],char:\"⛓\",fitzpatrick_scale:false,category:\"objects\"},magnet:{keywords:[\"attraction\",\"magnetic\"],char:\"🧲\",fitzpatrick_scale:false,category:\"objects\"},gun:{keywords:[\"violence\",\"weapon\",\"pistol\",\"revolver\"],char:\"🔫\",fitzpatrick_scale:false,category:\"objects\"},bomb:{keywords:[\"boom\",\"explode\",\"explosion\",\"terrorism\"],char:\"💣\",fitzpatrick_scale:false,category:\"objects\"},firecracker:{keywords:[\"dynamite\",\"boom\",\"explode\",\"explosion\",\"explosive\"],char:\"🧨\",fitzpatrick_scale:false,category:\"objects\"},hocho:{keywords:[\"knife\",\"blade\",\"cutlery\",\"kitchen\",\"weapon\"],char:\"🔪\",fitzpatrick_scale:false,category:\"objects\"},dagger:{keywords:[\"weapon\"],char:\"🗡\",fitzpatrick_scale:false,category:\"objects\"},crossed_swords:{keywords:[\"weapon\"],char:\"⚔\",fitzpatrick_scale:false,category:\"objects\"},shield:{keywords:[\"protection\",\"security\"],char:\"🛡\",fitzpatrick_scale:false,category:\"objects\"},smoking:{keywords:[\"kills\",\"tobacco\",\"cigarette\",\"joint\",\"smoke\"],char:\"🚬\",fitzpatrick_scale:false,category:\"objects\"},skull_and_crossbones:{keywords:[\"poison\",\"danger\",\"deadly\",\"scary\",\"death\",\"pirate\",\"evil\"],char:\"☠\",fitzpatrick_scale:false,category:\"objects\"},coffin:{keywords:[\"vampire\",\"dead\",\"die\",\"death\",\"rip\",\"graveyard\",\"cemetery\",\"casket\",\"funeral\",\"box\"],char:\"⚰\",fitzpatrick_scale:false,category:\"objects\"},funeral_urn:{keywords:[\"dead\",\"die\",\"death\",\"rip\",\"ashes\"],char:\"⚱\",fitzpatrick_scale:false,category:\"objects\"},amphora:{keywords:[\"vase\",\"jar\"],char:\"🏺\",fitzpatrick_scale:false,category:\"objects\"},crystal_ball:{keywords:[\"disco\",\"party\",\"magic\",\"circus\",\"fortune_teller\"],char:\"🔮\",fitzpatrick_scale:false,category:\"objects\"},prayer_beads:{keywords:[\"dhikr\",\"religious\"],char:\"📿\",fitzpatrick_scale:false,category:\"objects\"},nazar_amulet:{keywords:[\"bead\",\"charm\"],char:\"🧿\",fitzpatrick_scale:false,category:\"objects\"},barber:{keywords:[\"hair\",\"salon\",\"style\"],char:\"💈\",fitzpatrick_scale:false,category:\"objects\"},alembic:{keywords:[\"distilling\",\"science\",\"experiment\",\"chemistry\"],char:\"⚗\",fitzpatrick_scale:false,category:\"objects\"},telescope:{keywords:[\"stars\",\"space\",\"zoom\",\"science\",\"astronomy\"],char:\"🔭\",fitzpatrick_scale:false,category:\"objects\"},microscope:{keywords:[\"laboratory\",\"experiment\",\"zoomin\",\"science\",\"study\"],char:\"🔬\",fitzpatrick_scale:false,category:\"objects\"},hole:{keywords:[\"embarrassing\"],char:\"🕳\",fitzpatrick_scale:false,category:\"objects\"},pill:{keywords:[\"health\",\"medicine\",\"doctor\",\"pharmacy\",\"drug\"],char:\"💊\",fitzpatrick_scale:false,category:\"objects\"},syringe:{keywords:[\"health\",\"hospital\",\"drugs\",\"blood\",\"medicine\",\"needle\",\"doctor\",\"nurse\"],char:\"💉\",fitzpatrick_scale:false,category:\"objects\"},dna:{keywords:[\"biologist\",\"genetics\",\"life\"],char:\"🧬\",fitzpatrick_scale:false,category:\"objects\"},microbe:{keywords:[\"amoeba\",\"bacteria\",\"germs\"],char:\"🦠\",fitzpatrick_scale:false,category:\"objects\"},petri_dish:{keywords:[\"bacteria\",\"biology\",\"culture\",\"lab\"],char:\"🧫\",fitzpatrick_scale:false,category:\"objects\"},test_tube:{keywords:[\"chemistry\",\"experiment\",\"lab\",\"science\"],char:\"🧪\",fitzpatrick_scale:false,category:\"objects\"},thermometer:{keywords:[\"weather\",\"temperature\",\"hot\",\"cold\"],char:\"🌡\",fitzpatrick_scale:false,category:\"objects\"},broom:{keywords:[\"cleaning\",\"sweeping\",\"witch\"],char:\"🧹\",fitzpatrick_scale:false,category:\"objects\"},basket:{keywords:[\"laundry\"],char:\"🧺\",fitzpatrick_scale:false,category:\"objects\"},toilet_paper:{keywords:[\"roll\"],char:\"🧻\",fitzpatrick_scale:false,category:\"objects\"},label:{keywords:[\"sale\",\"tag\"],char:\"🏷\",fitzpatrick_scale:false,category:\"objects\"},bookmark:{keywords:[\"favorite\",\"label\",\"save\"],char:\"🔖\",fitzpatrick_scale:false,category:\"objects\"},toilet:{keywords:[\"restroom\",\"wc\",\"washroom\",\"bathroom\",\"potty\"],char:\"🚽\",fitzpatrick_scale:false,category:\"objects\"},shower:{keywords:[\"clean\",\"water\",\"bathroom\"],char:\"🚿\",fitzpatrick_scale:false,category:\"objects\"},bathtub:{keywords:[\"clean\",\"shower\",\"bathroom\"],char:\"🛁\",fitzpatrick_scale:false,category:\"objects\"},soap:{keywords:[\"bar\",\"bathing\",\"cleaning\",\"lather\"],char:\"🧼\",fitzpatrick_scale:false,category:\"objects\"},sponge:{keywords:[\"absorbing\",\"cleaning\",\"porous\"],char:\"🧽\",fitzpatrick_scale:false,category:\"objects\"},lotion_bottle:{keywords:[\"moisturizer\",\"sunscreen\"],char:\"🧴\",fitzpatrick_scale:false,category:\"objects\"},key:{keywords:[\"lock\",\"door\",\"password\"],char:\"🔑\",fitzpatrick_scale:false,category:\"objects\"},old_key:{keywords:[\"lock\",\"door\",\"password\"],char:\"🗝\",fitzpatrick_scale:false,category:\"objects\"},couch_and_lamp:{keywords:[\"read\",\"chill\"],char:\"🛋\",fitzpatrick_scale:false,category:\"objects\"},sleeping_bed:{keywords:[\"bed\",\"rest\"],char:\"🛌\",fitzpatrick_scale:true,category:\"objects\"},bed:{keywords:[\"sleep\",\"rest\"],char:\"🛏\",fitzpatrick_scale:false,category:\"objects\"},door:{keywords:[\"house\",\"entry\",\"exit\"],char:\"🚪\",fitzpatrick_scale:false,category:\"objects\"},bellhop_bell:{keywords:[\"service\"],char:\"🛎\",fitzpatrick_scale:false,category:\"objects\"},teddy_bear:{keywords:[\"plush\",\"stuffed\"],char:\"🧸\",fitzpatrick_scale:false,category:\"objects\"},framed_picture:{keywords:[\"photography\"],char:\"🖼\",fitzpatrick_scale:false,category:\"objects\"},world_map:{keywords:[\"location\",\"direction\"],char:\"🗺\",fitzpatrick_scale:false,category:\"objects\"},parasol_on_ground:{keywords:[\"weather\",\"summer\"],char:\"⛱\",fitzpatrick_scale:false,category:\"objects\"},moyai:{keywords:[\"rock\",\"easter island\",\"moai\"],char:\"🗿\",fitzpatrick_scale:false,category:\"objects\"},shopping:{keywords:[\"mall\",\"buy\",\"purchase\"],char:\"🛍\",fitzpatrick_scale:false,category:\"objects\"},shopping_cart:{keywords:[\"trolley\"],char:\"🛒\",fitzpatrick_scale:false,category:\"objects\"},balloon:{keywords:[\"party\",\"celebration\",\"birthday\",\"circus\"],char:\"🎈\",fitzpatrick_scale:false,category:\"objects\"},flags:{keywords:[\"fish\",\"japanese\",\"koinobori\",\"carp\",\"banner\"],char:\"🎏\",fitzpatrick_scale:false,category:\"objects\"},ribbon:{keywords:[\"decoration\",\"pink\",\"girl\",\"bowtie\"],char:\"🎀\",fitzpatrick_scale:false,category:\"objects\"},gift:{keywords:[\"present\",\"birthday\",\"christmas\",\"xmas\"],char:\"🎁\",fitzpatrick_scale:false,category:\"objects\"},confetti_ball:{keywords:[\"festival\",\"party\",\"birthday\",\"circus\"],char:\"🎊\",fitzpatrick_scale:false,category:\"objects\"},tada:{keywords:[\"party\",\"congratulations\",\"birthday\",\"magic\",\"circus\",\"celebration\"],char:\"🎉\",fitzpatrick_scale:false,category:\"objects\"},dolls:{keywords:[\"japanese\",\"toy\",\"kimono\"],char:\"🎎\",fitzpatrick_scale:false,category:\"objects\"},wind_chime:{keywords:[\"nature\",\"ding\",\"spring\",\"bell\"],char:\"🎐\",fitzpatrick_scale:false,category:\"objects\"},crossed_flags:{keywords:[\"japanese\",\"nation\",\"country\",\"border\"],char:\"🎌\",fitzpatrick_scale:false,category:\"objects\"},izakaya_lantern:{keywords:[\"light\",\"paper\",\"halloween\",\"spooky\"],char:\"🏮\",fitzpatrick_scale:false,category:\"objects\"},red_envelope:{keywords:[\"gift\"],char:\"🧧\",fitzpatrick_scale:false,category:\"objects\"},email:{keywords:[\"letter\",\"postal\",\"inbox\",\"communication\"],char:\"✉️\",fitzpatrick_scale:false,category:\"objects\"},envelope_with_arrow:{keywords:[\"email\",\"communication\"],char:\"📩\",fitzpatrick_scale:false,category:\"objects\"},incoming_envelope:{keywords:[\"email\",\"inbox\"],char:\"📨\",fitzpatrick_scale:false,category:\"objects\"},\"e-mail\":{keywords:[\"communication\",\"inbox\"],char:\"📧\",fitzpatrick_scale:false,category:\"objects\"},love_letter:{keywords:[\"email\",\"like\",\"affection\",\"envelope\",\"valentines\"],char:\"💌\",fitzpatrick_scale:false,category:\"objects\"},postbox:{keywords:[\"email\",\"letter\",\"envelope\"],char:\"📮\",fitzpatrick_scale:false,category:\"objects\"},mailbox_closed:{keywords:[\"email\",\"communication\",\"inbox\"],char:\"📪\",fitzpatrick_scale:false,category:\"objects\"},mailbox:{keywords:[\"email\",\"inbox\",\"communication\"],char:\"📫\",fitzpatrick_scale:false,category:\"objects\"},mailbox_with_mail:{keywords:[\"email\",\"inbox\",\"communication\"],char:\"📬\",fitzpatrick_scale:false,category:\"objects\"},mailbox_with_no_mail:{keywords:[\"email\",\"inbox\"],char:\"📭\",fitzpatrick_scale:false,category:\"objects\"},package:{keywords:[\"mail\",\"gift\",\"cardboard\",\"box\",\"moving\"],char:\"📦\",fitzpatrick_scale:false,category:\"objects\"},postal_horn:{keywords:[\"instrument\",\"music\"],char:\"📯\",fitzpatrick_scale:false,category:\"objects\"},inbox_tray:{keywords:[\"email\",\"documents\"],char:\"📥\",fitzpatrick_scale:false,category:\"objects\"},outbox_tray:{keywords:[\"inbox\",\"email\"],char:\"📤\",fitzpatrick_scale:false,category:\"objects\"},scroll:{keywords:[\"documents\",\"ancient\",\"history\",\"paper\"],char:\"📜\",fitzpatrick_scale:false,category:\"objects\"},page_with_curl:{keywords:[\"documents\",\"office\",\"paper\"],char:\"📃\",fitzpatrick_scale:false,category:\"objects\"},bookmark_tabs:{keywords:[\"favorite\",\"save\",\"order\",\"tidy\"],char:\"📑\",fitzpatrick_scale:false,category:\"objects\"},receipt:{keywords:[\"accounting\",\"expenses\"],char:\"🧾\",fitzpatrick_scale:false,category:\"objects\"},bar_chart:{keywords:[\"graph\",\"presentation\",\"stats\"],char:\"📊\",fitzpatrick_scale:false,category:\"objects\"},chart_with_upwards_trend:{keywords:[\"graph\",\"presentation\",\"stats\",\"recovery\",\"business\",\"economics\",\"money\",\"sales\",\"good\",\"success\"],char:\"📈\",fitzpatrick_scale:false,category:\"objects\"},chart_with_downwards_trend:{keywords:[\"graph\",\"presentation\",\"stats\",\"recession\",\"business\",\"economics\",\"money\",\"sales\",\"bad\",\"failure\"],char:\"📉\",fitzpatrick_scale:false,category:\"objects\"},page_facing_up:{keywords:[\"documents\",\"office\",\"paper\",\"information\"],char:\"📄\",fitzpatrick_scale:false,category:\"objects\"},date:{keywords:[\"calendar\",\"schedule\"],char:\"📅\",fitzpatrick_scale:false,category:\"objects\"},calendar:{keywords:[\"schedule\",\"date\",\"planning\"],char:\"📆\",fitzpatrick_scale:false,category:\"objects\"},spiral_calendar:{keywords:[\"date\",\"schedule\",\"planning\"],char:\"🗓\",fitzpatrick_scale:false,category:\"objects\"},card_index:{keywords:[\"business\",\"stationery\"],char:\"📇\",fitzpatrick_scale:false,category:\"objects\"},card_file_box:{keywords:[\"business\",\"stationery\"],char:\"🗃\",fitzpatrick_scale:false,category:\"objects\"},ballot_box:{keywords:[\"election\",\"vote\"],char:\"🗳\",fitzpatrick_scale:false,category:\"objects\"},file_cabinet:{keywords:[\"filing\",\"organizing\"],char:\"🗄\",fitzpatrick_scale:false,category:\"objects\"},clipboard:{keywords:[\"stationery\",\"documents\"],char:\"📋\",fitzpatrick_scale:false,category:\"objects\"},spiral_notepad:{keywords:[\"memo\",\"stationery\"],char:\"🗒\",fitzpatrick_scale:false,category:\"objects\"},file_folder:{keywords:[\"documents\",\"business\",\"office\"],char:\"📁\",fitzpatrick_scale:false,category:\"objects\"},open_file_folder:{keywords:[\"documents\",\"load\"],char:\"📂\",fitzpatrick_scale:false,category:\"objects\"},card_index_dividers:{keywords:[\"organizing\",\"business\",\"stationery\"],char:\"🗂\",fitzpatrick_scale:false,category:\"objects\"},newspaper_roll:{keywords:[\"press\",\"headline\"],char:\"🗞\",fitzpatrick_scale:false,category:\"objects\"},newspaper:{keywords:[\"press\",\"headline\"],char:\"📰\",fitzpatrick_scale:false,category:\"objects\"},notebook:{keywords:[\"stationery\",\"record\",\"notes\",\"paper\",\"study\"],char:\"📓\",fitzpatrick_scale:false,category:\"objects\"},closed_book:{keywords:[\"read\",\"library\",\"knowledge\",\"textbook\",\"learn\"],char:\"📕\",fitzpatrick_scale:false,category:\"objects\"},green_book:{keywords:[\"read\",\"library\",\"knowledge\",\"study\"],char:\"📗\",fitzpatrick_scale:false,category:\"objects\"},blue_book:{keywords:[\"read\",\"library\",\"knowledge\",\"learn\",\"study\"],char:\"📘\",fitzpatrick_scale:false,category:\"objects\"},orange_book:{keywords:[\"read\",\"library\",\"knowledge\",\"textbook\",\"study\"],char:\"📙\",fitzpatrick_scale:false,category:\"objects\"},notebook_with_decorative_cover:{keywords:[\"classroom\",\"notes\",\"record\",\"paper\",\"study\"],char:\"📔\",fitzpatrick_scale:false,category:\"objects\"},ledger:{keywords:[\"notes\",\"paper\"],char:\"📒\",fitzpatrick_scale:false,category:\"objects\"},books:{keywords:[\"literature\",\"library\",\"study\"],char:\"📚\",fitzpatrick_scale:false,category:\"objects\"},open_book:{keywords:[\"book\",\"read\",\"library\",\"knowledge\",\"literature\",\"learn\",\"study\"],char:\"📖\",fitzpatrick_scale:false,category:\"objects\"},safety_pin:{keywords:[\"diaper\"],char:\"🧷\",fitzpatrick_scale:false,category:\"objects\"},link:{keywords:[\"rings\",\"url\"],char:\"🔗\",fitzpatrick_scale:false,category:\"objects\"},paperclip:{keywords:[\"documents\",\"stationery\"],char:\"📎\",fitzpatrick_scale:false,category:\"objects\"},paperclips:{keywords:[\"documents\",\"stationery\"],char:\"🖇\",fitzpatrick_scale:false,category:\"objects\"},scissors:{keywords:[\"stationery\",\"cut\"],char:\"✂️\",fitzpatrick_scale:false,category:\"objects\"},triangular_ruler:{keywords:[\"stationery\",\"math\",\"architect\",\"sketch\"],char:\"📐\",fitzpatrick_scale:false,category:\"objects\"},straight_ruler:{keywords:[\"stationery\",\"calculate\",\"length\",\"math\",\"school\",\"drawing\",\"architect\",\"sketch\"],char:\"📏\",fitzpatrick_scale:false,category:\"objects\"},abacus:{keywords:[\"calculation\"],char:\"🧮\",fitzpatrick_scale:false,category:\"objects\"},pushpin:{keywords:[\"stationery\",\"mark\",\"here\"],char:\"📌\",fitzpatrick_scale:false,category:\"objects\"},round_pushpin:{keywords:[\"stationery\",\"location\",\"map\",\"here\"],char:\"📍\",fitzpatrick_scale:false,category:\"objects\"},triangular_flag_on_post:{keywords:[\"mark\",\"milestone\",\"place\"],char:\"🚩\",fitzpatrick_scale:false,category:\"objects\"},white_flag:{keywords:[\"losing\",\"loser\",\"lost\",\"surrender\",\"give up\",\"fail\"],char:\"🏳\",fitzpatrick_scale:false,category:\"objects\"},black_flag:{keywords:[\"pirate\"],char:\"🏴\",fitzpatrick_scale:false,category:\"objects\"},rainbow_flag:{keywords:[\"flag\",\"rainbow\",\"pride\",\"gay\",\"lgbt\",\"glbt\",\"queer\",\"homosexual\",\"lesbian\",\"bisexual\",\"transgender\"],char:\"🏳️‍🌈\",fitzpatrick_scale:false,category:\"objects\"},closed_lock_with_key:{keywords:[\"security\",\"privacy\"],char:\"🔐\",fitzpatrick_scale:false,category:\"objects\"},lock:{keywords:[\"security\",\"password\",\"padlock\"],char:\"🔒\",fitzpatrick_scale:false,category:\"objects\"},unlock:{keywords:[\"privacy\",\"security\"],char:\"🔓\",fitzpatrick_scale:false,category:\"objects\"},lock_with_ink_pen:{keywords:[\"security\",\"secret\"],char:\"🔏\",fitzpatrick_scale:false,category:\"objects\"},pen:{keywords:[\"stationery\",\"writing\",\"write\"],char:\"🖊\",fitzpatrick_scale:false,category:\"objects\"},fountain_pen:{keywords:[\"stationery\",\"writing\",\"write\"],char:\"🖋\",fitzpatrick_scale:false,category:\"objects\"},black_nib:{keywords:[\"pen\",\"stationery\",\"writing\",\"write\"],char:\"✒️\",fitzpatrick_scale:false,category:\"objects\"},memo:{keywords:[\"write\",\"documents\",\"stationery\",\"pencil\",\"paper\",\"writing\",\"legal\",\"exam\",\"quiz\",\"test\",\"study\",\"compose\"],char:\"📝\",fitzpatrick_scale:false,category:\"objects\"},pencil2:{keywords:[\"stationery\",\"write\",\"paper\",\"writing\",\"school\",\"study\"],char:\"✏️\",fitzpatrick_scale:false,category:\"objects\"},crayon:{keywords:[\"drawing\",\"creativity\"],char:\"🖍\",fitzpatrick_scale:false,category:\"objects\"},paintbrush:{keywords:[\"drawing\",\"creativity\",\"art\"],char:\"🖌\",fitzpatrick_scale:false,category:\"objects\"},mag:{keywords:[\"search\",\"zoom\",\"find\",\"detective\"],char:\"🔍\",fitzpatrick_scale:false,category:\"objects\"},mag_right:{keywords:[\"search\",\"zoom\",\"find\",\"detective\"],char:\"🔎\",fitzpatrick_scale:false,category:\"objects\"},heart:{keywords:[\"love\",\"like\",\"valentines\"],char:\"❤️\",fitzpatrick_scale:false,category:\"symbols\"},orange_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:\"🧡\",fitzpatrick_scale:false,category:\"symbols\"},yellow_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:\"💛\",fitzpatrick_scale:false,category:\"symbols\"},green_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:\"💚\",fitzpatrick_scale:false,category:\"symbols\"},blue_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:\"💙\",fitzpatrick_scale:false,category:\"symbols\"},purple_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:\"💜\",fitzpatrick_scale:false,category:\"symbols\"},black_heart:{keywords:[\"evil\"],char:\"🖤\",fitzpatrick_scale:false,category:\"symbols\"},broken_heart:{keywords:[\"sad\",\"sorry\",\"break\",\"heart\",\"heartbreak\"],char:\"💔\",fitzpatrick_scale:false,category:\"symbols\"},heavy_heart_exclamation:{keywords:[\"decoration\",\"love\"],char:\"❣\",fitzpatrick_scale:false,category:\"symbols\"},two_hearts:{keywords:[\"love\",\"like\",\"affection\",\"valentines\",\"heart\"],char:\"💕\",fitzpatrick_scale:false,category:\"symbols\"},revolving_hearts:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:\"💞\",fitzpatrick_scale:false,category:\"symbols\"},heartbeat:{keywords:[\"love\",\"like\",\"affection\",\"valentines\",\"pink\",\"heart\"],char:\"💓\",fitzpatrick_scale:false,category:\"symbols\"},heartpulse:{keywords:[\"like\",\"love\",\"affection\",\"valentines\",\"pink\"],char:\"💗\",fitzpatrick_scale:false,category:\"symbols\"},sparkling_heart:{keywords:[\"love\",\"like\",\"affection\",\"valentines\"],char:\"💖\",fitzpatrick_scale:false,category:\"symbols\"},cupid:{keywords:[\"love\",\"like\",\"heart\",\"affection\",\"valentines\"],char:\"💘\",fitzpatrick_scale:false,category:\"symbols\"},gift_heart:{keywords:[\"love\",\"valentines\"],char:\"💝\",fitzpatrick_scale:false,category:\"symbols\"},heart_decoration:{keywords:[\"purple-square\",\"love\",\"like\"],char:\"💟\",fitzpatrick_scale:false,category:\"symbols\"},peace_symbol:{keywords:[\"hippie\"],char:\"☮\",fitzpatrick_scale:false,category:\"symbols\"},latin_cross:{keywords:[\"christianity\"],char:\"✝\",fitzpatrick_scale:false,category:\"symbols\"},star_and_crescent:{keywords:[\"islam\"],char:\"☪\",fitzpatrick_scale:false,category:\"symbols\"},om:{keywords:[\"hinduism\",\"buddhism\",\"sikhism\",\"jainism\"],char:\"🕉\",fitzpatrick_scale:false,category:\"symbols\"},wheel_of_dharma:{keywords:[\"hinduism\",\"buddhism\",\"sikhism\",\"jainism\"],char:\"☸\",fitzpatrick_scale:false,category:\"symbols\"},star_of_david:{keywords:[\"judaism\"],char:\"✡\",fitzpatrick_scale:false,category:\"symbols\"},six_pointed_star:{keywords:[\"purple-square\",\"religion\",\"jewish\",\"hexagram\"],char:\"🔯\",fitzpatrick_scale:false,category:\"symbols\"},menorah:{keywords:[\"hanukkah\",\"candles\",\"jewish\"],char:\"🕎\",fitzpatrick_scale:false,category:\"symbols\"},yin_yang:{keywords:[\"balance\"],char:\"☯\",fitzpatrick_scale:false,category:\"symbols\"},orthodox_cross:{keywords:[\"suppedaneum\",\"religion\"],char:\"☦\",fitzpatrick_scale:false,category:\"symbols\"},place_of_worship:{keywords:[\"religion\",\"church\",\"temple\",\"prayer\"],char:\"🛐\",fitzpatrick_scale:false,category:\"symbols\"},ophiuchus:{keywords:[\"sign\",\"purple-square\",\"constellation\",\"astrology\"],char:\"⛎\",fitzpatrick_scale:false,category:\"symbols\"},aries:{keywords:[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],char:\"♈\",fitzpatrick_scale:false,category:\"symbols\"},taurus:{keywords:[\"purple-square\",\"sign\",\"zodiac\",\"astrology\"],char:\"♉\",fitzpatrick_scale:false,category:\"symbols\"},gemini:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:\"♊\",fitzpatrick_scale:false,category:\"symbols\"},cancer:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:\"♋\",fitzpatrick_scale:false,category:\"symbols\"},leo:{keywords:[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],char:\"♌\",fitzpatrick_scale:false,category:\"symbols\"},virgo:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:\"♍\",fitzpatrick_scale:false,category:\"symbols\"},libra:{keywords:[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],char:\"♎\",fitzpatrick_scale:false,category:\"symbols\"},scorpius:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\",\"scorpio\"],char:\"♏\",fitzpatrick_scale:false,category:\"symbols\"},sagittarius:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:\"♐\",fitzpatrick_scale:false,category:\"symbols\"},capricorn:{keywords:[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],char:\"♑\",fitzpatrick_scale:false,category:\"symbols\"},aquarius:{keywords:[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],char:\"♒\",fitzpatrick_scale:false,category:\"symbols\"},pisces:{keywords:[\"purple-square\",\"sign\",\"zodiac\",\"astrology\"],char:\"♓\",fitzpatrick_scale:false,category:\"symbols\"},id:{keywords:[\"purple-square\",\"words\"],char:\"🆔\",fitzpatrick_scale:false,category:\"symbols\"},atom_symbol:{keywords:[\"science\",\"physics\",\"chemistry\"],char:\"⚛\",fitzpatrick_scale:false,category:\"symbols\"},u7a7a:{keywords:[\"kanji\",\"japanese\",\"chinese\",\"empty\",\"sky\",\"blue-square\"],char:\"🈳\",fitzpatrick_scale:false,category:\"symbols\"},u5272:{keywords:[\"cut\",\"divide\",\"chinese\",\"kanji\",\"pink-square\"],char:\"🈹\",fitzpatrick_scale:false,category:\"symbols\"},radioactive:{keywords:[\"nuclear\",\"danger\"],char:\"☢\",fitzpatrick_scale:false,category:\"symbols\"},biohazard:{keywords:[\"danger\"],char:\"☣\",fitzpatrick_scale:false,category:\"symbols\"},mobile_phone_off:{keywords:[\"mute\",\"orange-square\",\"silence\",\"quiet\"],char:\"📴\",fitzpatrick_scale:false,category:\"symbols\"},vibration_mode:{keywords:[\"orange-square\",\"phone\"],char:\"📳\",fitzpatrick_scale:false,category:\"symbols\"},u6709:{keywords:[\"orange-square\",\"chinese\",\"have\",\"kanji\"],char:\"🈶\",fitzpatrick_scale:false,category:\"symbols\"},u7121:{keywords:[\"nothing\",\"chinese\",\"kanji\",\"japanese\",\"orange-square\"],char:\"🈚\",fitzpatrick_scale:false,category:\"symbols\"},u7533:{keywords:[\"chinese\",\"japanese\",\"kanji\",\"orange-square\"],char:\"🈸\",fitzpatrick_scale:false,category:\"symbols\"},u55b6:{keywords:[\"japanese\",\"opening hours\",\"orange-square\"],char:\"🈺\",fitzpatrick_scale:false,category:\"symbols\"},u6708:{keywords:[\"chinese\",\"month\",\"moon\",\"japanese\",\"orange-square\",\"kanji\"],char:\"🈷️\",fitzpatrick_scale:false,category:\"symbols\"},eight_pointed_black_star:{keywords:[\"orange-square\",\"shape\",\"polygon\"],char:\"✴️\",fitzpatrick_scale:false,category:\"symbols\"},vs:{keywords:[\"words\",\"orange-square\"],char:\"🆚\",fitzpatrick_scale:false,category:\"symbols\"},accept:{keywords:[\"ok\",\"good\",\"chinese\",\"kanji\",\"agree\",\"yes\",\"orange-circle\"],char:\"🉑\",fitzpatrick_scale:false,category:\"symbols\"},white_flower:{keywords:[\"japanese\",\"spring\"],char:\"💮\",fitzpatrick_scale:false,category:\"symbols\"},ideograph_advantage:{keywords:[\"chinese\",\"kanji\",\"obtain\",\"get\",\"circle\"],char:\"🉐\",fitzpatrick_scale:false,category:\"symbols\"},secret:{keywords:[\"privacy\",\"chinese\",\"sshh\",\"kanji\",\"red-circle\"],char:\"㊙️\",fitzpatrick_scale:false,category:\"symbols\"},congratulations:{keywords:[\"chinese\",\"kanji\",\"japanese\",\"red-circle\"],char:\"㊗️\",fitzpatrick_scale:false,category:\"symbols\"},u5408:{keywords:[\"japanese\",\"chinese\",\"join\",\"kanji\",\"red-square\"],char:\"🈴\",fitzpatrick_scale:false,category:\"symbols\"},u6e80:{keywords:[\"full\",\"chinese\",\"japanese\",\"red-square\",\"kanji\"],char:\"🈵\",fitzpatrick_scale:false,category:\"symbols\"},u7981:{keywords:[\"kanji\",\"japanese\",\"chinese\",\"forbidden\",\"limit\",\"restricted\",\"red-square\"],char:\"🈲\",fitzpatrick_scale:false,category:\"symbols\"},a:{keywords:[\"red-square\",\"alphabet\",\"letter\"],char:\"🅰️\",fitzpatrick_scale:false,category:\"symbols\"},b:{keywords:[\"red-square\",\"alphabet\",\"letter\"],char:\"🅱️\",fitzpatrick_scale:false,category:\"symbols\"},ab:{keywords:[\"red-square\",\"alphabet\"],char:\"🆎\",fitzpatrick_scale:false,category:\"symbols\"},cl:{keywords:[\"alphabet\",\"words\",\"red-square\"],char:\"🆑\",fitzpatrick_scale:false,category:\"symbols\"},o2:{keywords:[\"alphabet\",\"red-square\",\"letter\"],char:\"🅾️\",fitzpatrick_scale:false,category:\"symbols\"},sos:{keywords:[\"help\",\"red-square\",\"words\",\"emergency\",\"911\"],char:\"🆘\",fitzpatrick_scale:false,category:\"symbols\"},no_entry:{keywords:[\"limit\",\"security\",\"privacy\",\"bad\",\"denied\",\"stop\",\"circle\"],char:\"⛔\",fitzpatrick_scale:false,category:\"symbols\"},name_badge:{keywords:[\"fire\",\"forbid\"],char:\"📛\",fitzpatrick_scale:false,category:\"symbols\"},no_entry_sign:{keywords:[\"forbid\",\"stop\",\"limit\",\"denied\",\"disallow\",\"circle\"],char:\"🚫\",fitzpatrick_scale:false,category:\"symbols\"},x:{keywords:[\"no\",\"delete\",\"remove\",\"cancel\",\"red\"],char:\"❌\",fitzpatrick_scale:false,category:\"symbols\"},o:{keywords:[\"circle\",\"round\"],char:\"⭕\",fitzpatrick_scale:false,category:\"symbols\"},stop_sign:{keywords:[\"stop\"],char:\"🛑\",fitzpatrick_scale:false,category:\"symbols\"},anger:{keywords:[\"angry\",\"mad\"],char:\"💢\",fitzpatrick_scale:false,category:\"symbols\"},hotsprings:{keywords:[\"bath\",\"warm\",\"relax\"],char:\"♨️\",fitzpatrick_scale:false,category:\"symbols\"},no_pedestrians:{keywords:[\"rules\",\"crossing\",\"walking\",\"circle\"],char:\"🚷\",fitzpatrick_scale:false,category:\"symbols\"},do_not_litter:{keywords:[\"trash\",\"bin\",\"garbage\",\"circle\"],char:\"🚯\",fitzpatrick_scale:false,category:\"symbols\"},no_bicycles:{keywords:[\"cyclist\",\"prohibited\",\"circle\"],char:\"🚳\",fitzpatrick_scale:false,category:\"symbols\"},\"non-potable_water\":{keywords:[\"drink\",\"faucet\",\"tap\",\"circle\"],char:\"🚱\",fitzpatrick_scale:false,category:\"symbols\"},underage:{keywords:[\"18\",\"drink\",\"pub\",\"night\",\"minor\",\"circle\"],char:\"🔞\",fitzpatrick_scale:false,category:\"symbols\"},no_mobile_phones:{keywords:[\"iphone\",\"mute\",\"circle\"],char:\"📵\",fitzpatrick_scale:false,category:\"symbols\"},exclamation:{keywords:[\"heavy_exclamation_mark\",\"danger\",\"surprise\",\"punctuation\",\"wow\",\"warning\"],char:\"❗\",fitzpatrick_scale:false,category:\"symbols\"},grey_exclamation:{keywords:[\"surprise\",\"punctuation\",\"gray\",\"wow\",\"warning\"],char:\"❕\",fitzpatrick_scale:false,category:\"symbols\"},question:{keywords:[\"doubt\",\"confused\"],char:\"❓\",fitzpatrick_scale:false,category:\"symbols\"},grey_question:{keywords:[\"doubts\",\"gray\",\"huh\",\"confused\"],char:\"❔\",fitzpatrick_scale:false,category:\"symbols\"},bangbang:{keywords:[\"exclamation\",\"surprise\"],char:\"‼️\",fitzpatrick_scale:false,category:\"symbols\"},interrobang:{keywords:[\"wat\",\"punctuation\",\"surprise\"],char:\"⁉️\",fitzpatrick_scale:false,category:\"symbols\"},100:{keywords:[\"score\",\"perfect\",\"numbers\",\"century\",\"exam\",\"quiz\",\"test\",\"pass\",\"hundred\"],char:\"💯\",fitzpatrick_scale:false,category:\"symbols\"},low_brightness:{keywords:[\"sun\",\"afternoon\",\"warm\",\"summer\"],char:\"🔅\",fitzpatrick_scale:false,category:\"symbols\"},high_brightness:{keywords:[\"sun\",\"light\"],char:\"🔆\",fitzpatrick_scale:false,category:\"symbols\"},trident:{keywords:[\"weapon\",\"spear\"],char:\"🔱\",fitzpatrick_scale:false,category:\"symbols\"},fleur_de_lis:{keywords:[\"decorative\",\"scout\"],char:\"⚜\",fitzpatrick_scale:false,category:\"symbols\"},part_alternation_mark:{keywords:[\"graph\",\"presentation\",\"stats\",\"business\",\"economics\",\"bad\"],char:\"〽️\",fitzpatrick_scale:false,category:\"symbols\"},warning:{keywords:[\"exclamation\",\"wip\",\"alert\",\"error\",\"problem\",\"issue\"],char:\"⚠️\",fitzpatrick_scale:false,category:\"symbols\"},children_crossing:{keywords:[\"school\",\"warning\",\"danger\",\"sign\",\"driving\",\"yellow-diamond\"],char:\"🚸\",fitzpatrick_scale:false,category:\"symbols\"},beginner:{keywords:[\"badge\",\"shield\"],char:\"🔰\",fitzpatrick_scale:false,category:\"symbols\"},recycle:{keywords:[\"arrow\",\"environment\",\"garbage\",\"trash\"],char:\"♻️\",fitzpatrick_scale:false,category:\"symbols\"},u6307:{keywords:[\"chinese\",\"point\",\"green-square\",\"kanji\"],char:\"🈯\",fitzpatrick_scale:false,category:\"symbols\"},chart:{keywords:[\"green-square\",\"graph\",\"presentation\",\"stats\"],char:\"💹\",fitzpatrick_scale:false,category:\"symbols\"},sparkle:{keywords:[\"stars\",\"green-square\",\"awesome\",\"good\",\"fireworks\"],char:\"❇️\",fitzpatrick_scale:false,category:\"symbols\"},eight_spoked_asterisk:{keywords:[\"star\",\"sparkle\",\"green-square\"],char:\"✳️\",fitzpatrick_scale:false,category:\"symbols\"},negative_squared_cross_mark:{keywords:[\"x\",\"green-square\",\"no\",\"deny\"],char:\"❎\",fitzpatrick_scale:false,category:\"symbols\"},white_check_mark:{keywords:[\"green-square\",\"ok\",\"agree\",\"vote\",\"election\",\"answer\",\"tick\"],char:\"✅\",fitzpatrick_scale:false,category:\"symbols\"},diamond_shape_with_a_dot_inside:{keywords:[\"jewel\",\"blue\",\"gem\",\"crystal\",\"fancy\"],char:\"💠\",fitzpatrick_scale:false,category:\"symbols\"},cyclone:{keywords:[\"weather\",\"swirl\",\"blue\",\"cloud\",\"vortex\",\"spiral\",\"whirlpool\",\"spin\",\"tornado\",\"hurricane\",\"typhoon\"],char:\"🌀\",fitzpatrick_scale:false,category:\"symbols\"},loop:{keywords:[\"tape\",\"cassette\"],char:\"➿\",fitzpatrick_scale:false,category:\"symbols\"},globe_with_meridians:{keywords:[\"earth\",\"international\",\"world\",\"internet\",\"interweb\",\"i18n\"],char:\"🌐\",fitzpatrick_scale:false,category:\"symbols\"},m:{keywords:[\"alphabet\",\"blue-circle\",\"letter\"],char:\"Ⓜ️\",fitzpatrick_scale:false,category:\"symbols\"},atm:{keywords:[\"money\",\"sales\",\"cash\",\"blue-square\",\"payment\",\"bank\"],char:\"🏧\",fitzpatrick_scale:false,category:\"symbols\"},sa:{keywords:[\"japanese\",\"blue-square\",\"katakana\"],char:\"🈂️\",fitzpatrick_scale:false,category:\"symbols\"},passport_control:{keywords:[\"custom\",\"blue-square\"],char:\"🛂\",fitzpatrick_scale:false,category:\"symbols\"},customs:{keywords:[\"passport\",\"border\",\"blue-square\"],char:\"🛃\",fitzpatrick_scale:false,category:\"symbols\"},baggage_claim:{keywords:[\"blue-square\",\"airport\",\"transport\"],char:\"🛄\",fitzpatrick_scale:false,category:\"symbols\"},left_luggage:{keywords:[\"blue-square\",\"travel\"],char:\"🛅\",fitzpatrick_scale:false,category:\"symbols\"},wheelchair:{keywords:[\"blue-square\",\"disabled\",\"a11y\",\"accessibility\"],char:\"♿\",fitzpatrick_scale:false,category:\"symbols\"},no_smoking:{keywords:[\"cigarette\",\"blue-square\",\"smell\",\"smoke\"],char:\"🚭\",fitzpatrick_scale:false,category:\"symbols\"},wc:{keywords:[\"toilet\",\"restroom\",\"blue-square\"],char:\"🚾\",fitzpatrick_scale:false,category:\"symbols\"},parking:{keywords:[\"cars\",\"blue-square\",\"alphabet\",\"letter\"],char:\"🅿️\",fitzpatrick_scale:false,category:\"symbols\"},potable_water:{keywords:[\"blue-square\",\"liquid\",\"restroom\",\"cleaning\",\"faucet\"],char:\"🚰\",fitzpatrick_scale:false,category:\"symbols\"},mens:{keywords:[\"toilet\",\"restroom\",\"wc\",\"blue-square\",\"gender\",\"male\"],char:\"🚹\",fitzpatrick_scale:false,category:\"symbols\"},womens:{keywords:[\"purple-square\",\"woman\",\"female\",\"toilet\",\"loo\",\"restroom\",\"gender\"],char:\"🚺\",fitzpatrick_scale:false,category:\"symbols\"},baby_symbol:{keywords:[\"orange-square\",\"child\"],char:\"🚼\",fitzpatrick_scale:false,category:\"symbols\"},restroom:{keywords:[\"blue-square\",\"toilet\",\"refresh\",\"wc\",\"gender\"],char:\"🚻\",fitzpatrick_scale:false,category:\"symbols\"},put_litter_in_its_place:{keywords:[\"blue-square\",\"sign\",\"human\",\"info\"],char:\"🚮\",fitzpatrick_scale:false,category:\"symbols\"},cinema:{keywords:[\"blue-square\",\"record\",\"film\",\"movie\",\"curtain\",\"stage\",\"theater\"],char:\"🎦\",fitzpatrick_scale:false,category:\"symbols\"},signal_strength:{keywords:[\"blue-square\",\"reception\",\"phone\",\"internet\",\"connection\",\"wifi\",\"bluetooth\",\"bars\"],char:\"📶\",fitzpatrick_scale:false,category:\"symbols\"},koko:{keywords:[\"blue-square\",\"here\",\"katakana\",\"japanese\",\"destination\"],char:\"🈁\",fitzpatrick_scale:false,category:\"symbols\"},ng:{keywords:[\"blue-square\",\"words\",\"shape\",\"icon\"],char:\"🆖\",fitzpatrick_scale:false,category:\"symbols\"},ok:{keywords:[\"good\",\"agree\",\"yes\",\"blue-square\"],char:\"🆗\",fitzpatrick_scale:false,category:\"symbols\"},up:{keywords:[\"blue-square\",\"above\",\"high\"],char:\"🆙\",fitzpatrick_scale:false,category:\"symbols\"},cool:{keywords:[\"words\",\"blue-square\"],char:\"🆒\",fitzpatrick_scale:false,category:\"symbols\"},new:{keywords:[\"blue-square\",\"words\",\"start\"],char:\"🆕\",fitzpatrick_scale:false,category:\"symbols\"},free:{keywords:[\"blue-square\",\"words\"],char:\"🆓\",fitzpatrick_scale:false,category:\"symbols\"},zero:{keywords:[\"0\",\"numbers\",\"blue-square\",\"null\"],char:\"0️⃣\",fitzpatrick_scale:false,category:\"symbols\"},one:{keywords:[\"blue-square\",\"numbers\",\"1\"],char:\"1️⃣\",fitzpatrick_scale:false,category:\"symbols\"},two:{keywords:[\"numbers\",\"2\",\"prime\",\"blue-square\"],char:\"2️⃣\",fitzpatrick_scale:false,category:\"symbols\"},three:{keywords:[\"3\",\"numbers\",\"prime\",\"blue-square\"],char:\"3️⃣\",fitzpatrick_scale:false,category:\"symbols\"},four:{keywords:[\"4\",\"numbers\",\"blue-square\"],char:\"4️⃣\",fitzpatrick_scale:false,category:\"symbols\"},five:{keywords:[\"5\",\"numbers\",\"blue-square\",\"prime\"],char:\"5️⃣\",fitzpatrick_scale:false,category:\"symbols\"},six:{keywords:[\"6\",\"numbers\",\"blue-square\"],char:\"6️⃣\",fitzpatrick_scale:false,category:\"symbols\"},seven:{keywords:[\"7\",\"numbers\",\"blue-square\",\"prime\"],char:\"7️⃣\",fitzpatrick_scale:false,category:\"symbols\"},eight:{keywords:[\"8\",\"blue-square\",\"numbers\"],char:\"8️⃣\",fitzpatrick_scale:false,category:\"symbols\"},nine:{keywords:[\"blue-square\",\"numbers\",\"9\"],char:\"9️⃣\",fitzpatrick_scale:false,category:\"symbols\"},keycap_ten:{keywords:[\"numbers\",\"10\",\"blue-square\"],char:\"🔟\",fitzpatrick_scale:false,category:\"symbols\"},asterisk:{keywords:[\"star\",\"keycap\"],char:\"*⃣\",fitzpatrick_scale:false,category:\"symbols\"},1234:{keywords:[\"numbers\",\"blue-square\"],char:\"🔢\",fitzpatrick_scale:false,category:\"symbols\"},eject_button:{keywords:[\"blue-square\"],char:\"⏏️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_forward:{keywords:[\"blue-square\",\"right\",\"direction\",\"play\"],char:\"▶️\",fitzpatrick_scale:false,category:\"symbols\"},pause_button:{keywords:[\"pause\",\"blue-square\"],char:\"⏸\",fitzpatrick_scale:false,category:\"symbols\"},next_track_button:{keywords:[\"forward\",\"next\",\"blue-square\"],char:\"⏭\",fitzpatrick_scale:false,category:\"symbols\"},stop_button:{keywords:[\"blue-square\"],char:\"⏹\",fitzpatrick_scale:false,category:\"symbols\"},record_button:{keywords:[\"blue-square\"],char:\"⏺\",fitzpatrick_scale:false,category:\"symbols\"},play_or_pause_button:{keywords:[\"blue-square\",\"play\",\"pause\"],char:\"⏯\",fitzpatrick_scale:false,category:\"symbols\"},previous_track_button:{keywords:[\"backward\"],char:\"⏮\",fitzpatrick_scale:false,category:\"symbols\"},fast_forward:{keywords:[\"blue-square\",\"play\",\"speed\",\"continue\"],char:\"⏩\",fitzpatrick_scale:false,category:\"symbols\"},rewind:{keywords:[\"play\",\"blue-square\"],char:\"⏪\",fitzpatrick_scale:false,category:\"symbols\"},twisted_rightwards_arrows:{keywords:[\"blue-square\",\"shuffle\",\"music\",\"random\"],char:\"🔀\",fitzpatrick_scale:false,category:\"symbols\"},repeat:{keywords:[\"loop\",\"record\"],char:\"🔁\",fitzpatrick_scale:false,category:\"symbols\"},repeat_one:{keywords:[\"blue-square\",\"loop\"],char:\"🔂\",fitzpatrick_scale:false,category:\"symbols\"},arrow_backward:{keywords:[\"blue-square\",\"left\",\"direction\"],char:\"◀️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_up_small:{keywords:[\"blue-square\",\"triangle\",\"direction\",\"point\",\"forward\",\"top\"],char:\"🔼\",fitzpatrick_scale:false,category:\"symbols\"},arrow_down_small:{keywords:[\"blue-square\",\"direction\",\"bottom\"],char:\"🔽\",fitzpatrick_scale:false,category:\"symbols\"},arrow_double_up:{keywords:[\"blue-square\",\"direction\",\"top\"],char:\"⏫\",fitzpatrick_scale:false,category:\"symbols\"},arrow_double_down:{keywords:[\"blue-square\",\"direction\",\"bottom\"],char:\"⏬\",fitzpatrick_scale:false,category:\"symbols\"},arrow_right:{keywords:[\"blue-square\",\"next\"],char:\"➡️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_left:{keywords:[\"blue-square\",\"previous\",\"back\"],char:\"⬅️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_up:{keywords:[\"blue-square\",\"continue\",\"top\",\"direction\"],char:\"⬆️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_down:{keywords:[\"blue-square\",\"direction\",\"bottom\"],char:\"⬇️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_upper_right:{keywords:[\"blue-square\",\"point\",\"direction\",\"diagonal\",\"northeast\"],char:\"↗️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_lower_right:{keywords:[\"blue-square\",\"direction\",\"diagonal\",\"southeast\"],char:\"↘️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_lower_left:{keywords:[\"blue-square\",\"direction\",\"diagonal\",\"southwest\"],char:\"↙️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_upper_left:{keywords:[\"blue-square\",\"point\",\"direction\",\"diagonal\",\"northwest\"],char:\"↖️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_up_down:{keywords:[\"blue-square\",\"direction\",\"way\",\"vertical\"],char:\"↕️\",fitzpatrick_scale:false,category:\"symbols\"},left_right_arrow:{keywords:[\"shape\",\"direction\",\"horizontal\",\"sideways\"],char:\"↔️\",fitzpatrick_scale:false,category:\"symbols\"},arrows_counterclockwise:{keywords:[\"blue-square\",\"sync\",\"cycle\"],char:\"🔄\",fitzpatrick_scale:false,category:\"symbols\"},arrow_right_hook:{keywords:[\"blue-square\",\"return\",\"rotate\",\"direction\"],char:\"↪️\",fitzpatrick_scale:false,category:\"symbols\"},leftwards_arrow_with_hook:{keywords:[\"back\",\"return\",\"blue-square\",\"undo\",\"enter\"],char:\"↩️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_heading_up:{keywords:[\"blue-square\",\"direction\",\"top\"],char:\"⤴️\",fitzpatrick_scale:false,category:\"symbols\"},arrow_heading_down:{keywords:[\"blue-square\",\"direction\",\"bottom\"],char:\"⤵️\",fitzpatrick_scale:false,category:\"symbols\"},hash:{keywords:[\"symbol\",\"blue-square\",\"twitter\"],char:\"#️⃣\",fitzpatrick_scale:false,category:\"symbols\"},information_source:{keywords:[\"blue-square\",\"alphabet\",\"letter\"],char:\"ℹ️\",fitzpatrick_scale:false,category:\"symbols\"},abc:{keywords:[\"blue-square\",\"alphabet\"],char:\"🔤\",fitzpatrick_scale:false,category:\"symbols\"},abcd:{keywords:[\"blue-square\",\"alphabet\"],char:\"🔡\",fitzpatrick_scale:false,category:\"symbols\"},capital_abcd:{keywords:[\"alphabet\",\"words\",\"blue-square\"],char:\"🔠\",fitzpatrick_scale:false,category:\"symbols\"},symbols:{keywords:[\"blue-square\",\"music\",\"note\",\"ampersand\",\"percent\",\"glyphs\",\"characters\"],char:\"🔣\",fitzpatrick_scale:false,category:\"symbols\"},musical_note:{keywords:[\"score\",\"tone\",\"sound\"],char:\"🎵\",fitzpatrick_scale:false,category:\"symbols\"},notes:{keywords:[\"music\",\"score\"],char:\"🎶\",fitzpatrick_scale:false,category:\"symbols\"},wavy_dash:{keywords:[\"draw\",\"line\",\"moustache\",\"mustache\",\"squiggle\",\"scribble\"],char:\"〰️\",fitzpatrick_scale:false,category:\"symbols\"},curly_loop:{keywords:[\"scribble\",\"draw\",\"shape\",\"squiggle\"],char:\"➰\",fitzpatrick_scale:false,category:\"symbols\"},heavy_check_mark:{keywords:[\"ok\",\"nike\",\"answer\",\"yes\",\"tick\"],char:\"✔️\",fitzpatrick_scale:false,category:\"symbols\"},arrows_clockwise:{keywords:[\"sync\",\"cycle\",\"round\",\"repeat\"],char:\"🔃\",fitzpatrick_scale:false,category:\"symbols\"},heavy_plus_sign:{keywords:[\"math\",\"calculation\",\"addition\",\"more\",\"increase\"],char:\"➕\",fitzpatrick_scale:false,category:\"symbols\"},heavy_minus_sign:{keywords:[\"math\",\"calculation\",\"subtract\",\"less\"],char:\"➖\",fitzpatrick_scale:false,category:\"symbols\"},heavy_division_sign:{keywords:[\"divide\",\"math\",\"calculation\"],char:\"➗\",fitzpatrick_scale:false,category:\"symbols\"},heavy_multiplication_x:{keywords:[\"math\",\"calculation\"],char:\"✖️\",fitzpatrick_scale:false,category:\"symbols\"},infinity:{keywords:[\"forever\"],char:\"♾\",fitzpatrick_scale:false,category:\"symbols\"},heavy_dollar_sign:{keywords:[\"money\",\"sales\",\"payment\",\"currency\",\"buck\"],char:\"💲\",fitzpatrick_scale:false,category:\"symbols\"},currency_exchange:{keywords:[\"money\",\"sales\",\"dollar\",\"travel\"],char:\"💱\",fitzpatrick_scale:false,category:\"symbols\"},copyright:{keywords:[\"ip\",\"license\",\"circle\",\"law\",\"legal\"],char:\"©️\",fitzpatrick_scale:false,category:\"symbols\"},registered:{keywords:[\"alphabet\",\"circle\"],char:\"®️\",fitzpatrick_scale:false,category:\"symbols\"},tm:{keywords:[\"trademark\",\"brand\",\"law\",\"legal\"],char:\"™️\",fitzpatrick_scale:false,category:\"symbols\"},end:{keywords:[\"words\",\"arrow\"],char:\"🔚\",fitzpatrick_scale:false,category:\"symbols\"},back:{keywords:[\"arrow\",\"words\",\"return\"],char:\"🔙\",fitzpatrick_scale:false,category:\"symbols\"},on:{keywords:[\"arrow\",\"words\"],char:\"🔛\",fitzpatrick_scale:false,category:\"symbols\"},top:{keywords:[\"words\",\"blue-square\"],char:\"🔝\",fitzpatrick_scale:false,category:\"symbols\"},soon:{keywords:[\"arrow\",\"words\"],char:\"🔜\",fitzpatrick_scale:false,category:\"symbols\"},ballot_box_with_check:{keywords:[\"ok\",\"agree\",\"confirm\",\"black-square\",\"vote\",\"election\",\"yes\",\"tick\"],char:\"☑️\",fitzpatrick_scale:false,category:\"symbols\"},radio_button:{keywords:[\"input\",\"old\",\"music\",\"circle\"],char:\"🔘\",fitzpatrick_scale:false,category:\"symbols\"},white_circle:{keywords:[\"shape\",\"round\"],char:\"⚪\",fitzpatrick_scale:false,category:\"symbols\"},black_circle:{keywords:[\"shape\",\"button\",\"round\"],char:\"⚫\",fitzpatrick_scale:false,category:\"symbols\"},red_circle:{keywords:[\"shape\",\"error\",\"danger\"],char:\"🔴\",fitzpatrick_scale:false,category:\"symbols\"},large_blue_circle:{keywords:[\"shape\",\"icon\",\"button\"],char:\"🔵\",fitzpatrick_scale:false,category:\"symbols\"},small_orange_diamond:{keywords:[\"shape\",\"jewel\",\"gem\"],char:\"🔸\",fitzpatrick_scale:false,category:\"symbols\"},small_blue_diamond:{keywords:[\"shape\",\"jewel\",\"gem\"],char:\"🔹\",fitzpatrick_scale:false,category:\"symbols\"},large_orange_diamond:{keywords:[\"shape\",\"jewel\",\"gem\"],char:\"🔶\",fitzpatrick_scale:false,category:\"symbols\"},large_blue_diamond:{keywords:[\"shape\",\"jewel\",\"gem\"],char:\"🔷\",fitzpatrick_scale:false,category:\"symbols\"},small_red_triangle:{keywords:[\"shape\",\"direction\",\"up\",\"top\"],char:\"🔺\",fitzpatrick_scale:false,category:\"symbols\"},black_small_square:{keywords:[\"shape\",\"icon\"],char:\"▪️\",fitzpatrick_scale:false,category:\"symbols\"},white_small_square:{keywords:[\"shape\",\"icon\"],char:\"▫️\",fitzpatrick_scale:false,category:\"symbols\"},black_large_square:{keywords:[\"shape\",\"icon\",\"button\"],char:\"⬛\",fitzpatrick_scale:false,category:\"symbols\"},white_large_square:{keywords:[\"shape\",\"icon\",\"stone\",\"button\"],char:\"⬜\",fitzpatrick_scale:false,category:\"symbols\"},small_red_triangle_down:{keywords:[\"shape\",\"direction\",\"bottom\"],char:\"🔻\",fitzpatrick_scale:false,category:\"symbols\"},black_medium_square:{keywords:[\"shape\",\"button\",\"icon\"],char:\"◼️\",fitzpatrick_scale:false,category:\"symbols\"},white_medium_square:{keywords:[\"shape\",\"stone\",\"icon\"],char:\"◻️\",fitzpatrick_scale:false,category:\"symbols\"},black_medium_small_square:{keywords:[\"icon\",\"shape\",\"button\"],char:\"◾\",fitzpatrick_scale:false,category:\"symbols\"},white_medium_small_square:{keywords:[\"shape\",\"stone\",\"icon\",\"button\"],char:\"◽\",fitzpatrick_scale:false,category:\"symbols\"},black_square_button:{keywords:[\"shape\",\"input\",\"frame\"],char:\"🔲\",fitzpatrick_scale:false,category:\"symbols\"},white_square_button:{keywords:[\"shape\",\"input\"],char:\"🔳\",fitzpatrick_scale:false,category:\"symbols\"},speaker:{keywords:[\"sound\",\"volume\",\"silence\",\"broadcast\"],char:\"🔈\",fitzpatrick_scale:false,category:\"symbols\"},sound:{keywords:[\"volume\",\"speaker\",\"broadcast\"],char:\"🔉\",fitzpatrick_scale:false,category:\"symbols\"},loud_sound:{keywords:[\"volume\",\"noise\",\"noisy\",\"speaker\",\"broadcast\"],char:\"🔊\",fitzpatrick_scale:false,category:\"symbols\"},mute:{keywords:[\"sound\",\"volume\",\"silence\",\"quiet\"],char:\"🔇\",fitzpatrick_scale:false,category:\"symbols\"},mega:{keywords:[\"sound\",\"speaker\",\"volume\"],char:\"📣\",fitzpatrick_scale:false,category:\"symbols\"},loudspeaker:{keywords:[\"volume\",\"sound\"],char:\"📢\",fitzpatrick_scale:false,category:\"symbols\"},bell:{keywords:[\"sound\",\"notification\",\"christmas\",\"xmas\",\"chime\"],char:\"🔔\",fitzpatrick_scale:false,category:\"symbols\"},no_bell:{keywords:[\"sound\",\"volume\",\"mute\",\"quiet\",\"silent\"],char:\"🔕\",fitzpatrick_scale:false,category:\"symbols\"},black_joker:{keywords:[\"poker\",\"cards\",\"game\",\"play\",\"magic\"],char:\"🃏\",fitzpatrick_scale:false,category:\"symbols\"},mahjong:{keywords:[\"game\",\"play\",\"chinese\",\"kanji\"],char:\"🀄\",fitzpatrick_scale:false,category:\"symbols\"},spades:{keywords:[\"poker\",\"cards\",\"suits\",\"magic\"],char:\"♠️\",fitzpatrick_scale:false,category:\"symbols\"},clubs:{keywords:[\"poker\",\"cards\",\"magic\",\"suits\"],char:\"♣️\",fitzpatrick_scale:false,category:\"symbols\"},hearts:{keywords:[\"poker\",\"cards\",\"magic\",\"suits\"],char:\"♥️\",fitzpatrick_scale:false,category:\"symbols\"},diamonds:{keywords:[\"poker\",\"cards\",\"magic\",\"suits\"],char:\"♦️\",fitzpatrick_scale:false,category:\"symbols\"},flower_playing_cards:{keywords:[\"game\",\"sunset\",\"red\"],char:\"🎴\",fitzpatrick_scale:false,category:\"symbols\"},thought_balloon:{keywords:[\"bubble\",\"cloud\",\"speech\",\"thinking\",\"dream\"],char:\"💭\",fitzpatrick_scale:false,category:\"symbols\"},right_anger_bubble:{keywords:[\"caption\",\"speech\",\"thinking\",\"mad\"],char:\"🗯\",fitzpatrick_scale:false,category:\"symbols\"},speech_balloon:{keywords:[\"bubble\",\"words\",\"message\",\"talk\",\"chatting\"],char:\"💬\",fitzpatrick_scale:false,category:\"symbols\"},left_speech_bubble:{keywords:[\"words\",\"message\",\"talk\",\"chatting\"],char:\"🗨\",fitzpatrick_scale:false,category:\"symbols\"},clock1:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕐\",fitzpatrick_scale:false,category:\"symbols\"},clock2:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕑\",fitzpatrick_scale:false,category:\"symbols\"},clock3:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕒\",fitzpatrick_scale:false,category:\"symbols\"},clock4:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕓\",fitzpatrick_scale:false,category:\"symbols\"},clock5:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕔\",fitzpatrick_scale:false,category:\"symbols\"},clock6:{keywords:[\"time\",\"late\",\"early\",\"schedule\",\"dawn\",\"dusk\"],char:\"🕕\",fitzpatrick_scale:false,category:\"symbols\"},clock7:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕖\",fitzpatrick_scale:false,category:\"symbols\"},clock8:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕗\",fitzpatrick_scale:false,category:\"symbols\"},clock9:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕘\",fitzpatrick_scale:false,category:\"symbols\"},clock10:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕙\",fitzpatrick_scale:false,category:\"symbols\"},clock11:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕚\",fitzpatrick_scale:false,category:\"symbols\"},clock12:{keywords:[\"time\",\"noon\",\"midnight\",\"midday\",\"late\",\"early\",\"schedule\"],char:\"🕛\",fitzpatrick_scale:false,category:\"symbols\"},clock130:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕜\",fitzpatrick_scale:false,category:\"symbols\"},clock230:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕝\",fitzpatrick_scale:false,category:\"symbols\"},clock330:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕞\",fitzpatrick_scale:false,category:\"symbols\"},clock430:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕟\",fitzpatrick_scale:false,category:\"symbols\"},clock530:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕠\",fitzpatrick_scale:false,category:\"symbols\"},clock630:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕡\",fitzpatrick_scale:false,category:\"symbols\"},clock730:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕢\",fitzpatrick_scale:false,category:\"symbols\"},clock830:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕣\",fitzpatrick_scale:false,category:\"symbols\"},clock930:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕤\",fitzpatrick_scale:false,category:\"symbols\"},clock1030:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕥\",fitzpatrick_scale:false,category:\"symbols\"},clock1130:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕦\",fitzpatrick_scale:false,category:\"symbols\"},clock1230:{keywords:[\"time\",\"late\",\"early\",\"schedule\"],char:\"🕧\",fitzpatrick_scale:false,category:\"symbols\"},afghanistan:{keywords:[\"af\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇫\",fitzpatrick_scale:false,category:\"flags\"},aland_islands:{keywords:[\"Åland\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇽\",fitzpatrick_scale:false,category:\"flags\"},albania:{keywords:[\"al\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇱\",fitzpatrick_scale:false,category:\"flags\"},algeria:{keywords:[\"dz\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇩🇿\",fitzpatrick_scale:false,category:\"flags\"},american_samoa:{keywords:[\"american\",\"ws\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇸\",fitzpatrick_scale:false,category:\"flags\"},andorra:{keywords:[\"ad\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇩\",fitzpatrick_scale:false,category:\"flags\"},angola:{keywords:[\"ao\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇴\",fitzpatrick_scale:false,category:\"flags\"},anguilla:{keywords:[\"ai\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇮\",fitzpatrick_scale:false,category:\"flags\"},antarctica:{keywords:[\"aq\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇶\",fitzpatrick_scale:false,category:\"flags\"},antigua_barbuda:{keywords:[\"antigua\",\"barbuda\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇬\",fitzpatrick_scale:false,category:\"flags\"},argentina:{keywords:[\"ar\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇷\",fitzpatrick_scale:false,category:\"flags\"},armenia:{keywords:[\"am\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇲\",fitzpatrick_scale:false,category:\"flags\"},aruba:{keywords:[\"aw\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇼\",fitzpatrick_scale:false,category:\"flags\"},australia:{keywords:[\"au\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇺\",fitzpatrick_scale:false,category:\"flags\"},austria:{keywords:[\"at\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇹\",fitzpatrick_scale:false,category:\"flags\"},azerbaijan:{keywords:[\"az\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇿\",fitzpatrick_scale:false,category:\"flags\"},bahamas:{keywords:[\"bs\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇸\",fitzpatrick_scale:false,category:\"flags\"},bahrain:{keywords:[\"bh\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇭\",fitzpatrick_scale:false,category:\"flags\"},bangladesh:{keywords:[\"bd\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇩\",fitzpatrick_scale:false,category:\"flags\"},barbados:{keywords:[\"bb\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇧\",fitzpatrick_scale:false,category:\"flags\"},belarus:{keywords:[\"by\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇾\",fitzpatrick_scale:false,category:\"flags\"},belgium:{keywords:[\"be\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇪\",fitzpatrick_scale:false,category:\"flags\"},belize:{keywords:[\"bz\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇿\",fitzpatrick_scale:false,category:\"flags\"},benin:{keywords:[\"bj\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇯\",fitzpatrick_scale:false,category:\"flags\"},bermuda:{keywords:[\"bm\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇲\",fitzpatrick_scale:false,category:\"flags\"},bhutan:{keywords:[\"bt\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇹\",fitzpatrick_scale:false,category:\"flags\"},bolivia:{keywords:[\"bo\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇴\",fitzpatrick_scale:false,category:\"flags\"},caribbean_netherlands:{keywords:[\"bonaire\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇶\",fitzpatrick_scale:false,category:\"flags\"},bosnia_herzegovina:{keywords:[\"bosnia\",\"herzegovina\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇦\",fitzpatrick_scale:false,category:\"flags\"},botswana:{keywords:[\"bw\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇼\",fitzpatrick_scale:false,category:\"flags\"},brazil:{keywords:[\"br\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇷\",fitzpatrick_scale:false,category:\"flags\"},british_indian_ocean_territory:{keywords:[\"british\",\"indian\",\"ocean\",\"territory\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇴\",fitzpatrick_scale:false,category:\"flags\"},british_virgin_islands:{keywords:[\"british\",\"virgin\",\"islands\",\"bvi\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇻🇬\",fitzpatrick_scale:false,category:\"flags\"},brunei:{keywords:[\"bn\",\"darussalam\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇳\",fitzpatrick_scale:false,category:\"flags\"},bulgaria:{keywords:[\"bg\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇬\",fitzpatrick_scale:false,category:\"flags\"},burkina_faso:{keywords:[\"burkina\",\"faso\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇫\",fitzpatrick_scale:false,category:\"flags\"},burundi:{keywords:[\"bi\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇮\",fitzpatrick_scale:false,category:\"flags\"},cape_verde:{keywords:[\"cabo\",\"verde\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇻\",fitzpatrick_scale:false,category:\"flags\"},cambodia:{keywords:[\"kh\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇰🇭\",fitzpatrick_scale:false,category:\"flags\"},cameroon:{keywords:[\"cm\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇲\",fitzpatrick_scale:false,category:\"flags\"},canada:{keywords:[\"ca\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇦\",fitzpatrick_scale:false,category:\"flags\"},canary_islands:{keywords:[\"canary\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇨\",fitzpatrick_scale:false,category:\"flags\"},cayman_islands:{keywords:[\"cayman\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇰🇾\",fitzpatrick_scale:false,category:\"flags\"},central_african_republic:{keywords:[\"central\",\"african\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇫\",fitzpatrick_scale:false,category:\"flags\"},chad:{keywords:[\"td\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇩\",fitzpatrick_scale:false,category:\"flags\"},chile:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇱\",fitzpatrick_scale:false,category:\"flags\"},cn:{keywords:[\"china\",\"chinese\",\"prc\",\"flag\",\"country\",\"nation\",\"banner\"],char:\"🇨🇳\",fitzpatrick_scale:false,category:\"flags\"},christmas_island:{keywords:[\"christmas\",\"island\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇽\",fitzpatrick_scale:false,category:\"flags\"},cocos_islands:{keywords:[\"cocos\",\"keeling\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇨\",fitzpatrick_scale:false,category:\"flags\"},colombia:{keywords:[\"co\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇴\",fitzpatrick_scale:false,category:\"flags\"},comoros:{keywords:[\"km\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇰🇲\",fitzpatrick_scale:false,category:\"flags\"},congo_brazzaville:{keywords:[\"congo\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇬\",fitzpatrick_scale:false,category:\"flags\"},congo_kinshasa:{keywords:[\"congo\",\"democratic\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇩\",fitzpatrick_scale:false,category:\"flags\"},cook_islands:{keywords:[\"cook\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇰\",fitzpatrick_scale:false,category:\"flags\"},costa_rica:{keywords:[\"costa\",\"rica\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇷\",fitzpatrick_scale:false,category:\"flags\"},croatia:{keywords:[\"hr\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇭🇷\",fitzpatrick_scale:false,category:\"flags\"},cuba:{keywords:[\"cu\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇺\",fitzpatrick_scale:false,category:\"flags\"},curacao:{keywords:[\"curaçao\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇼\",fitzpatrick_scale:false,category:\"flags\"},cyprus:{keywords:[\"cy\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇾\",fitzpatrick_scale:false,category:\"flags\"},czech_republic:{keywords:[\"cz\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇿\",fitzpatrick_scale:false,category:\"flags\"},denmark:{keywords:[\"dk\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇩🇰\",fitzpatrick_scale:false,category:\"flags\"},djibouti:{keywords:[\"dj\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇩🇯\",fitzpatrick_scale:false,category:\"flags\"},dominica:{keywords:[\"dm\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇩🇲\",fitzpatrick_scale:false,category:\"flags\"},dominican_republic:{keywords:[\"dominican\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇩🇴\",fitzpatrick_scale:false,category:\"flags\"},ecuador:{keywords:[\"ec\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇪🇨\",fitzpatrick_scale:false,category:\"flags\"},egypt:{keywords:[\"eg\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇪🇬\",fitzpatrick_scale:false,category:\"flags\"},el_salvador:{keywords:[\"el\",\"salvador\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇻\",fitzpatrick_scale:false,category:\"flags\"},equatorial_guinea:{keywords:[\"equatorial\",\"gn\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇶\",fitzpatrick_scale:false,category:\"flags\"},eritrea:{keywords:[\"er\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇪🇷\",fitzpatrick_scale:false,category:\"flags\"},estonia:{keywords:[\"ee\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇪🇪\",fitzpatrick_scale:false,category:\"flags\"},ethiopia:{keywords:[\"et\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇪🇹\",fitzpatrick_scale:false,category:\"flags\"},eu:{keywords:[\"european\",\"union\",\"flag\",\"banner\"],char:\"🇪🇺\",fitzpatrick_scale:false,category:\"flags\"},falkland_islands:{keywords:[\"falkland\",\"islands\",\"malvinas\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇫🇰\",fitzpatrick_scale:false,category:\"flags\"},faroe_islands:{keywords:[\"faroe\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇫🇴\",fitzpatrick_scale:false,category:\"flags\"},fiji:{keywords:[\"fj\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇫🇯\",fitzpatrick_scale:false,category:\"flags\"},finland:{keywords:[\"fi\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇫🇮\",fitzpatrick_scale:false,category:\"flags\"},fr:{keywords:[\"banner\",\"flag\",\"nation\",\"france\",\"french\",\"country\"],char:\"🇫🇷\",fitzpatrick_scale:false,category:\"flags\"},french_guiana:{keywords:[\"french\",\"guiana\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇫\",fitzpatrick_scale:false,category:\"flags\"},french_polynesia:{keywords:[\"french\",\"polynesia\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇫\",fitzpatrick_scale:false,category:\"flags\"},french_southern_territories:{keywords:[\"french\",\"southern\",\"territories\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇫\",fitzpatrick_scale:false,category:\"flags\"},gabon:{keywords:[\"ga\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇦\",fitzpatrick_scale:false,category:\"flags\"},gambia:{keywords:[\"gm\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇲\",fitzpatrick_scale:false,category:\"flags\"},georgia:{keywords:[\"ge\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇪\",fitzpatrick_scale:false,category:\"flags\"},de:{keywords:[\"german\",\"nation\",\"flag\",\"country\",\"banner\"],char:\"🇩🇪\",fitzpatrick_scale:false,category:\"flags\"},ghana:{keywords:[\"gh\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇭\",fitzpatrick_scale:false,category:\"flags\"},gibraltar:{keywords:[\"gi\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇮\",fitzpatrick_scale:false,category:\"flags\"},greece:{keywords:[\"gr\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇷\",fitzpatrick_scale:false,category:\"flags\"},greenland:{keywords:[\"gl\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇱\",fitzpatrick_scale:false,category:\"flags\"},grenada:{keywords:[\"gd\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇩\",fitzpatrick_scale:false,category:\"flags\"},guadeloupe:{keywords:[\"gp\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇵\",fitzpatrick_scale:false,category:\"flags\"},guam:{keywords:[\"gu\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇺\",fitzpatrick_scale:false,category:\"flags\"},guatemala:{keywords:[\"gt\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇹\",fitzpatrick_scale:false,category:\"flags\"},guernsey:{keywords:[\"gg\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇬\",fitzpatrick_scale:false,category:\"flags\"},guinea:{keywords:[\"gn\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇳\",fitzpatrick_scale:false,category:\"flags\"},guinea_bissau:{keywords:[\"gw\",\"bissau\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇼\",fitzpatrick_scale:false,category:\"flags\"},guyana:{keywords:[\"gy\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇾\",fitzpatrick_scale:false,category:\"flags\"},haiti:{keywords:[\"ht\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇭🇹\",fitzpatrick_scale:false,category:\"flags\"},honduras:{keywords:[\"hn\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇭🇳\",fitzpatrick_scale:false,category:\"flags\"},hong_kong:{keywords:[\"hong\",\"kong\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇭🇰\",fitzpatrick_scale:false,category:\"flags\"},hungary:{keywords:[\"hu\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇭🇺\",fitzpatrick_scale:false,category:\"flags\"},iceland:{keywords:[\"is\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇸\",fitzpatrick_scale:false,category:\"flags\"},india:{keywords:[\"in\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇳\",fitzpatrick_scale:false,category:\"flags\"},indonesia:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇩\",fitzpatrick_scale:false,category:\"flags\"},iran:{keywords:[\"iran,\",\"islamic\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇷\",fitzpatrick_scale:false,category:\"flags\"},iraq:{keywords:[\"iq\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇶\",fitzpatrick_scale:false,category:\"flags\"},ireland:{keywords:[\"ie\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇪\",fitzpatrick_scale:false,category:\"flags\"},isle_of_man:{keywords:[\"isle\",\"man\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇲\",fitzpatrick_scale:false,category:\"flags\"},israel:{keywords:[\"il\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇱\",fitzpatrick_scale:false,category:\"flags\"},it:{keywords:[\"italy\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇮🇹\",fitzpatrick_scale:false,category:\"flags\"},cote_divoire:{keywords:[\"ivory\",\"coast\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇮\",fitzpatrick_scale:false,category:\"flags\"},jamaica:{keywords:[\"jm\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇯🇲\",fitzpatrick_scale:false,category:\"flags\"},jp:{keywords:[\"japanese\",\"nation\",\"flag\",\"country\",\"banner\"],char:\"🇯🇵\",fitzpatrick_scale:false,category:\"flags\"},jersey:{keywords:[\"je\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇯🇪\",fitzpatrick_scale:false,category:\"flags\"},jordan:{keywords:[\"jo\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇯🇴\",fitzpatrick_scale:false,category:\"flags\"},kazakhstan:{keywords:[\"kz\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇰🇿\",fitzpatrick_scale:false,category:\"flags\"},kenya:{keywords:[\"ke\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇰🇪\",fitzpatrick_scale:false,category:\"flags\"},kiribati:{keywords:[\"ki\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇰🇮\",fitzpatrick_scale:false,category:\"flags\"},kosovo:{keywords:[\"xk\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇽🇰\",fitzpatrick_scale:false,category:\"flags\"},kuwait:{keywords:[\"kw\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇰🇼\",fitzpatrick_scale:false,category:\"flags\"},kyrgyzstan:{keywords:[\"kg\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇰🇬\",fitzpatrick_scale:false,category:\"flags\"},laos:{keywords:[\"lao\",\"democratic\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇦\",fitzpatrick_scale:false,category:\"flags\"},latvia:{keywords:[\"lv\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇻\",fitzpatrick_scale:false,category:\"flags\"},lebanon:{keywords:[\"lb\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇧\",fitzpatrick_scale:false,category:\"flags\"},lesotho:{keywords:[\"ls\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇸\",fitzpatrick_scale:false,category:\"flags\"},liberia:{keywords:[\"lr\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇷\",fitzpatrick_scale:false,category:\"flags\"},libya:{keywords:[\"ly\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇾\",fitzpatrick_scale:false,category:\"flags\"},liechtenstein:{keywords:[\"li\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇮\",fitzpatrick_scale:false,category:\"flags\"},lithuania:{keywords:[\"lt\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇹\",fitzpatrick_scale:false,category:\"flags\"},luxembourg:{keywords:[\"lu\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇺\",fitzpatrick_scale:false,category:\"flags\"},macau:{keywords:[\"macao\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇴\",fitzpatrick_scale:false,category:\"flags\"},macedonia:{keywords:[\"macedonia,\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇰\",fitzpatrick_scale:false,category:\"flags\"},madagascar:{keywords:[\"mg\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇬\",fitzpatrick_scale:false,category:\"flags\"},malawi:{keywords:[\"mw\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇼\",fitzpatrick_scale:false,category:\"flags\"},malaysia:{keywords:[\"my\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇾\",fitzpatrick_scale:false,category:\"flags\"},maldives:{keywords:[\"mv\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇻\",fitzpatrick_scale:false,category:\"flags\"},mali:{keywords:[\"ml\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇱\",fitzpatrick_scale:false,category:\"flags\"},malta:{keywords:[\"mt\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇹\",fitzpatrick_scale:false,category:\"flags\"},marshall_islands:{keywords:[\"marshall\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇭\",fitzpatrick_scale:false,category:\"flags\"},martinique:{keywords:[\"mq\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇶\",fitzpatrick_scale:false,category:\"flags\"},mauritania:{keywords:[\"mr\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇷\",fitzpatrick_scale:false,category:\"flags\"},mauritius:{keywords:[\"mu\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇺\",fitzpatrick_scale:false,category:\"flags\"},mayotte:{keywords:[\"yt\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇾🇹\",fitzpatrick_scale:false,category:\"flags\"},mexico:{keywords:[\"mx\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇽\",fitzpatrick_scale:false,category:\"flags\"},micronesia:{keywords:[\"micronesia,\",\"federated\",\"states\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇫🇲\",fitzpatrick_scale:false,category:\"flags\"},moldova:{keywords:[\"moldova,\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇩\",fitzpatrick_scale:false,category:\"flags\"},monaco:{keywords:[\"mc\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇨\",fitzpatrick_scale:false,category:\"flags\"},mongolia:{keywords:[\"mn\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇳\",fitzpatrick_scale:false,category:\"flags\"},montenegro:{keywords:[\"me\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇪\",fitzpatrick_scale:false,category:\"flags\"},montserrat:{keywords:[\"ms\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇸\",fitzpatrick_scale:false,category:\"flags\"},morocco:{keywords:[\"ma\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇦\",fitzpatrick_scale:false,category:\"flags\"},mozambique:{keywords:[\"mz\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇿\",fitzpatrick_scale:false,category:\"flags\"},myanmar:{keywords:[\"mm\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇲\",fitzpatrick_scale:false,category:\"flags\"},namibia:{keywords:[\"na\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇦\",fitzpatrick_scale:false,category:\"flags\"},nauru:{keywords:[\"nr\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇷\",fitzpatrick_scale:false,category:\"flags\"},nepal:{keywords:[\"np\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇵\",fitzpatrick_scale:false,category:\"flags\"},netherlands:{keywords:[\"nl\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇱\",fitzpatrick_scale:false,category:\"flags\"},new_caledonia:{keywords:[\"new\",\"caledonia\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇨\",fitzpatrick_scale:false,category:\"flags\"},new_zealand:{keywords:[\"new\",\"zealand\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇿\",fitzpatrick_scale:false,category:\"flags\"},nicaragua:{keywords:[\"ni\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇮\",fitzpatrick_scale:false,category:\"flags\"},niger:{keywords:[\"ne\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇪\",fitzpatrick_scale:false,category:\"flags\"},nigeria:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇬\",fitzpatrick_scale:false,category:\"flags\"},niue:{keywords:[\"nu\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇺\",fitzpatrick_scale:false,category:\"flags\"},norfolk_island:{keywords:[\"norfolk\",\"island\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇫\",fitzpatrick_scale:false,category:\"flags\"},northern_mariana_islands:{keywords:[\"northern\",\"mariana\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇲🇵\",fitzpatrick_scale:false,category:\"flags\"},north_korea:{keywords:[\"north\",\"korea\",\"nation\",\"flag\",\"country\",\"banner\"],char:\"🇰🇵\",fitzpatrick_scale:false,category:\"flags\"},norway:{keywords:[\"no\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇳🇴\",fitzpatrick_scale:false,category:\"flags\"},oman:{keywords:[\"om_symbol\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇴🇲\",fitzpatrick_scale:false,category:\"flags\"},pakistan:{keywords:[\"pk\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇰\",fitzpatrick_scale:false,category:\"flags\"},palau:{keywords:[\"pw\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇼\",fitzpatrick_scale:false,category:\"flags\"},palestinian_territories:{keywords:[\"palestine\",\"palestinian\",\"territories\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇸\",fitzpatrick_scale:false,category:\"flags\"},panama:{keywords:[\"pa\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇦\",fitzpatrick_scale:false,category:\"flags\"},papua_new_guinea:{keywords:[\"papua\",\"new\",\"guinea\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇬\",fitzpatrick_scale:false,category:\"flags\"},paraguay:{keywords:[\"py\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇾\",fitzpatrick_scale:false,category:\"flags\"},peru:{keywords:[\"pe\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇪\",fitzpatrick_scale:false,category:\"flags\"},philippines:{keywords:[\"ph\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇭\",fitzpatrick_scale:false,category:\"flags\"},pitcairn_islands:{keywords:[\"pitcairn\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇳\",fitzpatrick_scale:false,category:\"flags\"},poland:{keywords:[\"pl\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇱\",fitzpatrick_scale:false,category:\"flags\"},portugal:{keywords:[\"pt\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇹\",fitzpatrick_scale:false,category:\"flags\"},puerto_rico:{keywords:[\"puerto\",\"rico\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇷\",fitzpatrick_scale:false,category:\"flags\"},qatar:{keywords:[\"qa\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇶🇦\",fitzpatrick_scale:false,category:\"flags\"},reunion:{keywords:[\"réunion\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇷🇪\",fitzpatrick_scale:false,category:\"flags\"},romania:{keywords:[\"ro\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇷🇴\",fitzpatrick_scale:false,category:\"flags\"},ru:{keywords:[\"russian\",\"federation\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇷🇺\",fitzpatrick_scale:false,category:\"flags\"},rwanda:{keywords:[\"rw\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇷🇼\",fitzpatrick_scale:false,category:\"flags\"},st_barthelemy:{keywords:[\"saint\",\"barthélemy\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇧🇱\",fitzpatrick_scale:false,category:\"flags\"},st_helena:{keywords:[\"saint\",\"helena\",\"ascension\",\"tristan\",\"cunha\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇭\",fitzpatrick_scale:false,category:\"flags\"},st_kitts_nevis:{keywords:[\"saint\",\"kitts\",\"nevis\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇰🇳\",fitzpatrick_scale:false,category:\"flags\"},st_lucia:{keywords:[\"saint\",\"lucia\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇨\",fitzpatrick_scale:false,category:\"flags\"},st_pierre_miquelon:{keywords:[\"saint\",\"pierre\",\"miquelon\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇵🇲\",fitzpatrick_scale:false,category:\"flags\"},st_vincent_grenadines:{keywords:[\"saint\",\"vincent\",\"grenadines\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇻🇨\",fitzpatrick_scale:false,category:\"flags\"},samoa:{keywords:[\"ws\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇼🇸\",fitzpatrick_scale:false,category:\"flags\"},san_marino:{keywords:[\"san\",\"marino\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇲\",fitzpatrick_scale:false,category:\"flags\"},sao_tome_principe:{keywords:[\"sao\",\"tome\",\"principe\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇹\",fitzpatrick_scale:false,category:\"flags\"},saudi_arabia:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇦\",fitzpatrick_scale:false,category:\"flags\"},senegal:{keywords:[\"sn\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇳\",fitzpatrick_scale:false,category:\"flags\"},serbia:{keywords:[\"rs\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇷🇸\",fitzpatrick_scale:false,category:\"flags\"},seychelles:{keywords:[\"sc\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇨\",fitzpatrick_scale:false,category:\"flags\"},sierra_leone:{keywords:[\"sierra\",\"leone\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇱\",fitzpatrick_scale:false,category:\"flags\"},singapore:{keywords:[\"sg\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇬\",fitzpatrick_scale:false,category:\"flags\"},sint_maarten:{keywords:[\"sint\",\"maarten\",\"dutch\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇽\",fitzpatrick_scale:false,category:\"flags\"},slovakia:{keywords:[\"sk\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇰\",fitzpatrick_scale:false,category:\"flags\"},slovenia:{keywords:[\"si\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇮\",fitzpatrick_scale:false,category:\"flags\"},solomon_islands:{keywords:[\"solomon\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇧\",fitzpatrick_scale:false,category:\"flags\"},somalia:{keywords:[\"so\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇴\",fitzpatrick_scale:false,category:\"flags\"},south_africa:{keywords:[\"south\",\"africa\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇿🇦\",fitzpatrick_scale:false,category:\"flags\"},south_georgia_south_sandwich_islands:{keywords:[\"south\",\"georgia\",\"sandwich\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇬🇸\",fitzpatrick_scale:false,category:\"flags\"},kr:{keywords:[\"south\",\"korea\",\"nation\",\"flag\",\"country\",\"banner\"],char:\"🇰🇷\",fitzpatrick_scale:false,category:\"flags\"},south_sudan:{keywords:[\"south\",\"sd\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇸\",fitzpatrick_scale:false,category:\"flags\"},es:{keywords:[\"spain\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇪🇸\",fitzpatrick_scale:false,category:\"flags\"},sri_lanka:{keywords:[\"sri\",\"lanka\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇱🇰\",fitzpatrick_scale:false,category:\"flags\"},sudan:{keywords:[\"sd\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇩\",fitzpatrick_scale:false,category:\"flags\"},suriname:{keywords:[\"sr\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇷\",fitzpatrick_scale:false,category:\"flags\"},swaziland:{keywords:[\"sz\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇿\",fitzpatrick_scale:false,category:\"flags\"},sweden:{keywords:[\"se\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇪\",fitzpatrick_scale:false,category:\"flags\"},switzerland:{keywords:[\"ch\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇨🇭\",fitzpatrick_scale:false,category:\"flags\"},syria:{keywords:[\"syrian\",\"arab\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇸🇾\",fitzpatrick_scale:false,category:\"flags\"},taiwan:{keywords:[\"tw\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇼\",fitzpatrick_scale:false,category:\"flags\"},tajikistan:{keywords:[\"tj\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇯\",fitzpatrick_scale:false,category:\"flags\"},tanzania:{keywords:[\"tanzania,\",\"united\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇿\",fitzpatrick_scale:false,category:\"flags\"},thailand:{keywords:[\"th\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇭\",fitzpatrick_scale:false,category:\"flags\"},timor_leste:{keywords:[\"timor\",\"leste\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇱\",fitzpatrick_scale:false,category:\"flags\"},togo:{keywords:[\"tg\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇬\",fitzpatrick_scale:false,category:\"flags\"},tokelau:{keywords:[\"tk\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇰\",fitzpatrick_scale:false,category:\"flags\"},tonga:{keywords:[\"to\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇴\",fitzpatrick_scale:false,category:\"flags\"},trinidad_tobago:{keywords:[\"trinidad\",\"tobago\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇹\",fitzpatrick_scale:false,category:\"flags\"},tunisia:{keywords:[\"tn\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇳\",fitzpatrick_scale:false,category:\"flags\"},tr:{keywords:[\"turkey\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇷\",fitzpatrick_scale:false,category:\"flags\"},turkmenistan:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇲\",fitzpatrick_scale:false,category:\"flags\"},turks_caicos_islands:{keywords:[\"turks\",\"caicos\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇨\",fitzpatrick_scale:false,category:\"flags\"},tuvalu:{keywords:[\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇹🇻\",fitzpatrick_scale:false,category:\"flags\"},uganda:{keywords:[\"ug\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇺🇬\",fitzpatrick_scale:false,category:\"flags\"},ukraine:{keywords:[\"ua\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇺🇦\",fitzpatrick_scale:false,category:\"flags\"},united_arab_emirates:{keywords:[\"united\",\"arab\",\"emirates\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇦🇪\",fitzpatrick_scale:false,category:\"flags\"},uk:{keywords:[\"united\",\"kingdom\",\"great\",\"britain\",\"northern\",\"ireland\",\"flag\",\"nation\",\"country\",\"banner\",\"british\",\"UK\",\"english\",\"england\",\"union jack\"],char:\"🇬🇧\",fitzpatrick_scale:false,category:\"flags\"},england:{keywords:[\"flag\",\"english\"],char:\"🏴󠁧󠁢󠁥󠁮󠁧󠁿\",fitzpatrick_scale:false,category:\"flags\"},scotland:{keywords:[\"flag\",\"scottish\"],char:\"🏴󠁧󠁢󠁳󠁣󠁴󠁿\",fitzpatrick_scale:false,category:\"flags\"},wales:{keywords:[\"flag\",\"welsh\"],char:\"🏴󠁧󠁢󠁷󠁬󠁳󠁿\",fitzpatrick_scale:false,category:\"flags\"},us:{keywords:[\"united\",\"states\",\"america\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇺🇸\",fitzpatrick_scale:false,category:\"flags\"},us_virgin_islands:{keywords:[\"virgin\",\"islands\",\"us\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇻🇮\",fitzpatrick_scale:false,category:\"flags\"},uruguay:{keywords:[\"uy\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇺🇾\",fitzpatrick_scale:false,category:\"flags\"},uzbekistan:{keywords:[\"uz\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇺🇿\",fitzpatrick_scale:false,category:\"flags\"},vanuatu:{keywords:[\"vu\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇻🇺\",fitzpatrick_scale:false,category:\"flags\"},vatican_city:{keywords:[\"vatican\",\"city\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇻🇦\",fitzpatrick_scale:false,category:\"flags\"},venezuela:{keywords:[\"ve\",\"bolivarian\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇻🇪\",fitzpatrick_scale:false,category:\"flags\"},vietnam:{keywords:[\"viet\",\"nam\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇻🇳\",fitzpatrick_scale:false,category:\"flags\"},wallis_futuna:{keywords:[\"wallis\",\"futuna\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇼🇫\",fitzpatrick_scale:false,category:\"flags\"},western_sahara:{keywords:[\"western\",\"sahara\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇪🇭\",fitzpatrick_scale:false,category:\"flags\"},yemen:{keywords:[\"ye\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇾🇪\",fitzpatrick_scale:false,category:\"flags\"},zambia:{keywords:[\"zm\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇿🇲\",fitzpatrick_scale:false,category:\"flags\"},zimbabwe:{keywords:[\"zw\",\"flag\",\"nation\",\"country\",\"banner\"],char:\"🇿🇼\",fitzpatrick_scale:false,category:\"flags\"},united_nations:{keywords:[\"un\",\"flag\",\"banner\"],char:\"🇺🇳\",fitzpatrick_scale:false,category:\"flags\"},pirate_flag:{keywords:[\"skull\",\"crossbones\",\"flag\",\"banner\"],char:\"🏴‍☠️\",fitzpatrick_scale:false,category:\"flags\"}});/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const get$5 = fullscreenState => ({\n      isFullscreen: () => fullscreenState.get() !== null\n    });\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq$1 = t => a => t === a;\n    const isString = isType$1('string');\n    const isObject = isType$1('object');\n    const isArray = isType$1('array');\n    const isNull = eq$1(null);\n    const isBoolean = isSimpleType('boolean');\n    const isUndefined = eq$1(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n\n    const noop = () => {};\n    const compose = (fa, fb) => {\n      return (...args) => {\n        return fa(fb.apply(null, args));\n      };\n    };\n    const compose1 = (fbc, fab) => a => fbc(fab(a));\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    function curry(fn, ...initialArgs) {\n      return (...restArgs) => {\n        const all = initialArgs.concat(restArgs);\n        return fn.apply(null, all);\n      };\n    }\n    const never = constant(false);\n    const always = constant(true);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const nativePush = Array.prototype.push;\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const filter$1 = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    const findUntil = (xs, pred, until) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(x);\n        } else if (until(x, i)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const find$1 = (xs, pred) => {\n      return findUntil(xs, pred, never);\n    };\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const bind$3 = (xs, f) => flatten(map(xs, f));\n    const get$4 = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get$4(xs, 0);\n    const findMap = (arr, f) => {\n      for (let i = 0; i < arr.length; i++) {\n        const r = f(arr[i], i);\n        if (r.isSome()) {\n          return r;\n        }\n      }\n      return Optional.none();\n    };\n\n    const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();\n\n    const singleton = doRevoke => {\n      const subject = Cell(Optional.none());\n      const revoke = () => subject.get().each(doRevoke);\n      const clear = () => {\n        revoke();\n        subject.set(Optional.none());\n      };\n      const isSet = () => subject.get().isSome();\n      const get = () => subject.get();\n      const set = s => {\n        revoke();\n        subject.set(Optional.some(s));\n      };\n      return {\n        clear,\n        isSet,\n        get,\n        set\n      };\n    };\n    const unbindable = () => singleton(s => s.unbind());\n    const value = () => {\n      const subject = singleton(noop);\n      const on = f => subject.get().each(f);\n      return {\n        ...subject,\n        on\n      };\n    };\n\n    const first = (fn, rate) => {\n      let timer = null;\n      const cancel = () => {\n        if (!isNull(timer)) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      const throttle = (...args) => {\n        if (isNull(timer)) {\n          timer = setTimeout(() => {\n            timer = null;\n            fn.apply(null, args);\n          }, rate);\n        }\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n\n    const keys = Object.keys;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve = (p, scope) => {\n      const parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve(name, scope);\n    };\n    const getOrDie = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf(x).constructor.name));\n    };\n\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const type = element => element.dom.nodeType;\n    const isType = t => element => type(element) === t;\n    const isHTMLElement = element => isElement(element) && isPrototypeOf(element.dom);\n    const isElement = isType(ELEMENT);\n    const isText = isType(TEXT);\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set$1 = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const get$3 = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const remove = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n\n    const supports = element => element.dom.classList !== undefined;\n\n    const has = (element, clazz) => supports(element) && element.dom.classList.contains(clazz);\n\n    const contains = (str, substr, start = 0, end) => {\n      const idx = str.indexOf(substr, start);\n      if (idx !== -1) {\n        return isUndefined(end) ? true : idx + substr.length <= end;\n      } else {\n        return false;\n      }\n    };\n\n    const isSupported$1 = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    const is = (element, selector) => {\n      const dom = element.dom;\n      if (dom.nodeType !== ELEMENT) {\n        return false;\n      } else {\n        const elem = dom;\n        if (elem.matches !== undefined) {\n          return elem.matches(selector);\n        } else if (elem.msMatchesSelector !== undefined) {\n          return elem.msMatchesSelector(selector);\n        } else if (elem.webkitMatchesSelector !== undefined) {\n          return elem.webkitMatchesSelector(selector);\n        } else if (elem.mozMatchesSelector !== undefined) {\n          return elem.mozMatchesSelector(selector);\n        } else {\n          throw new Error('Browser lacks native selectors');\n        }\n      }\n    };\n    const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;\n    const all$1 = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom);\n    };\n\n    const eq = (e1, e2) => e1.dom === e2.dom;\n\n    const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const parents = (element, isRoot) => {\n      const stop = isFunction(isRoot) ? isRoot : never;\n      let dom = element.dom;\n      const ret = [];\n      while (dom.parentNode !== null && dom.parentNode !== undefined) {\n        const rawParent = dom.parentNode;\n        const p = SugarElement.fromDom(rawParent);\n        ret.push(p);\n        if (stop(p) === true) {\n          break;\n        } else {\n          dom = rawParent;\n        }\n      }\n      return ret;\n    };\n    const siblings$2 = element => {\n      const filterSelf = elements => filter$1(elements, x => !eq(element, x));\n      return parent(element).map(children).map(filterSelf).getOr([]);\n    };\n    const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);\n    const children = element => map(element.dom.childNodes, SugarElement.fromDom);\n\n    const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const isSupported = constant(supported);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getShadowRoot = e => {\n      const r = getRootNode(e);\n      return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n    };\n    const getShadowHost = e => SugarElement.fromDom(e.dom.host);\n    const getOriginalEventTarget = event => {\n      if (isSupported() && isNonNullable(event.target)) {\n        const el = SugarElement.fromDom(event.target);\n        if (isElement(el) && isOpenShadowHost(el)) {\n          if (event.composed && event.composedPath) {\n            const composedPath = event.composedPath();\n            if (composedPath) {\n              return head(composedPath);\n            }\n          }\n        }\n      }\n      return Optional.from(event.target);\n    };\n    const isOpenShadowHost = element => isNonNullable(element.dom.shadowRoot);\n\n    const inBody = element => {\n      const dom = isText(element) ? element.dom.parentNode : element.dom;\n      if (dom === undefined || dom === null || dom.ownerDocument === null) {\n        return false;\n      }\n      const doc = dom.ownerDocument;\n      return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n    };\n    const getBody = doc => {\n      const b = doc.dom.body;\n      if (b === null || b === undefined) {\n        throw new Error('Body is not available yet');\n      }\n      return SugarElement.fromDom(b);\n    };\n\n    const internalSet = (dom, property, value) => {\n      if (!isString(value)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value);\n      }\n      if (isSupported$1(dom)) {\n        dom.style.setProperty(property, value);\n      }\n    };\n    const set = (element, property, value) => {\n      const dom = element.dom;\n      internalSet(dom, property, value);\n    };\n    const setAll = (element, css) => {\n      const dom = element.dom;\n      each(css, (v, k) => {\n        internalSet(dom, k, v);\n      });\n    };\n    const get$2 = (element, property) => {\n      const dom = element.dom;\n      const styles = window.getComputedStyle(dom);\n      const r = styles.getPropertyValue(property);\n      return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n    };\n    const getUnsafeProperty = (dom, property) => isSupported$1(dom) ? dom.style.getPropertyValue(property) : '';\n\n    const mkEvent = (target, x, y, stop, prevent, kill, raw) => ({\n      target,\n      x,\n      y,\n      stop,\n      prevent,\n      kill,\n      raw\n    });\n    const fromRawEvent = rawEvent => {\n      const target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target));\n      const stop = () => rawEvent.stopPropagation();\n      const prevent = () => rawEvent.preventDefault();\n      const kill = compose(prevent, stop);\n      return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent);\n    };\n    const handle = (filter, handler) => rawEvent => {\n      if (filter(rawEvent)) {\n        handler(fromRawEvent(rawEvent));\n      }\n    };\n    const binder = (element, event, filter, handler, useCapture) => {\n      const wrapped = handle(filter, handler);\n      element.dom.addEventListener(event, wrapped, useCapture);\n      return {\n        unbind: curry(unbind, element, event, wrapped, useCapture)\n      };\n    };\n    const bind$2 = (element, event, filter, handler) => binder(element, event, filter, handler, false);\n    const unbind = (element, event, handler, useCapture) => {\n      element.dom.removeEventListener(event, handler, useCapture);\n    };\n\n    const filter = always;\n    const bind$1 = (element, event, handler) => bind$2(element, event, filter, handler);\n\n    const cached = f => {\n      let called = false;\n      let r;\n      return (...args) => {\n        if (!called) {\n          called = true;\n          r = f.apply(null, args);\n        }\n        return r;\n      };\n    };\n\n    const DeviceType = (os, browser, userAgent, mediaMatch) => {\n      const isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n      const isiPhone = os.isiOS() && !isiPad;\n      const isMobile = os.isiOS() || os.isAndroid();\n      const isTouch = isMobile || mediaMatch('(pointer:coarse)');\n      const isTablet = isiPad || !isiPhone && isMobile && mediaMatch('(min-device-width:768px)');\n      const isPhone = isiPhone || isMobile && !isTablet;\n      const iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n      const isDesktop = !isPhone && !isTablet && !iOSwebview;\n      return {\n        isiPad: constant(isiPad),\n        isiPhone: constant(isiPhone),\n        isTablet: constant(isTablet),\n        isPhone: constant(isPhone),\n        isTouch: constant(isTouch),\n        isAndroid: os.isAndroid,\n        isiOS: os.isiOS,\n        isWebView: constant(iOSwebview),\n        isDesktop: constant(isDesktop)\n      };\n    };\n\n    const firstMatch = (regexes, s) => {\n      for (let i = 0; i < regexes.length; i++) {\n        const x = regexes[i];\n        if (x.test(s)) {\n          return x;\n        }\n      }\n      return undefined;\n    };\n    const find = (regexes, agent) => {\n      const r = firstMatch(regexes, agent);\n      if (!r) {\n        return {\n          major: 0,\n          minor: 0\n        };\n      }\n      const group = i => {\n        return Number(agent.replace(r, '$' + i));\n      };\n      return nu$2(group(1), group(2));\n    };\n    const detect$3 = (versionRegexes, agent) => {\n      const cleanedAgent = String(agent).toLowerCase();\n      if (versionRegexes.length === 0) {\n        return unknown$2();\n      }\n      return find(versionRegexes, cleanedAgent);\n    };\n    const unknown$2 = () => {\n      return nu$2(0, 0);\n    };\n    const nu$2 = (major, minor) => {\n      return {\n        major,\n        minor\n      };\n    };\n    const Version = {\n      nu: nu$2,\n      detect: detect$3,\n      unknown: unknown$2\n    };\n\n    const detectBrowser$1 = (browsers, userAgentData) => {\n      return findMap(userAgentData.brands, uaBrand => {\n        const lcBrand = uaBrand.brand.toLowerCase();\n        return find$1(browsers, browser => {\n          var _a;\n          return lcBrand === ((_a = browser.brand) === null || _a === void 0 ? void 0 : _a.toLowerCase());\n        }).map(info => ({\n          current: info.name,\n          version: Version.nu(parseInt(uaBrand.version, 10), 0)\n        }));\n      });\n    };\n\n    const detect$2 = (candidates, userAgent) => {\n      const agent = String(userAgent).toLowerCase();\n      return find$1(candidates, candidate => {\n        return candidate.search(agent);\n      });\n    };\n    const detectBrowser = (browsers, userAgent) => {\n      return detect$2(browsers, userAgent).map(browser => {\n        const version = Version.detect(browser.versionRegexes, userAgent);\n        return {\n          current: browser.name,\n          version\n        };\n      });\n    };\n    const detectOs = (oses, userAgent) => {\n      return detect$2(oses, userAgent).map(os => {\n        const version = Version.detect(os.versionRegexes, userAgent);\n        return {\n          current: os.name,\n          version\n        };\n      });\n    };\n\n    const normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n    const checkContains = target => {\n      return uastring => {\n        return contains(uastring, target);\n      };\n    };\n    const browsers = [{\n      name: 'Edge',\n      versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n      search: uastring => {\n        return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');\n      }\n    }, {\n      name: 'Chromium',\n      brand: 'Chromium',\n      versionRegexes: [/.*?chrome\\/([0-9]+)\\.([0-9]+).*/, normalVersionRegex],\n      search: uastring => {\n        return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');\n      }\n    }, {\n      name: 'IE',\n      versionRegexes: [/.*?msie\\ ?([0-9]+)\\.([0-9]+).*/, /.*?rv:([0-9]+)\\.([0-9]+).*/],\n      search: uastring => {\n        return contains(uastring, 'msie') || contains(uastring, 'trident');\n      }\n    }, {\n      name: 'Opera',\n      versionRegexes: [normalVersionRegex, /.*?opera\\/([0-9]+)\\.([0-9]+).*/],\n      search: checkContains('opera')\n    }, {\n      name: 'Firefox',\n      versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n      search: checkContains('firefox')\n    }, {\n      name: 'Safari',\n      versionRegexes: [normalVersionRegex, /.*?cpu os ([0-9]+)_([0-9]+).*/],\n      search: uastring => {\n        return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');\n      }\n    }];\n    const oses = [{\n      name: 'Windows',\n      search: checkContains('win'),\n      versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n    }, {\n      name: 'iOS',\n      search: uastring => {\n        return contains(uastring, 'iphone') || contains(uastring, 'ipad');\n      },\n      versionRegexes: [/.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]\n    }, {\n      name: 'Android',\n      search: checkContains('android'),\n      versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n    }, {\n      name: 'macOS',\n      search: checkContains('mac os x'),\n      versionRegexes: [/.*?mac\\ os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n    }, {\n      name: 'Linux',\n      search: checkContains('linux'),\n      versionRegexes: []\n    }, {\n      name: 'Solaris',\n      search: checkContains('sunos'),\n      versionRegexes: []\n    }, {\n      name: 'FreeBSD',\n      search: checkContains('freebsd'),\n      versionRegexes: []\n    }, {\n      name: 'ChromeOS',\n      search: checkContains('cros'),\n      versionRegexes: [/.*?chrome\\/([0-9]+)\\.([0-9]+).*/]\n    }];\n    const PlatformInfo = {\n      browsers: constant(browsers),\n      oses: constant(oses)\n    };\n\n    const edge = 'Edge';\n    const chromium = 'Chromium';\n    const ie = 'IE';\n    const opera = 'Opera';\n    const firefox = 'Firefox';\n    const safari = 'Safari';\n    const unknown$1 = () => {\n      return nu$1({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    const nu$1 = info => {\n      const current = info.current;\n      const version = info.version;\n      const isBrowser = name => () => current === name;\n      return {\n        current,\n        version,\n        isEdge: isBrowser(edge),\n        isChromium: isBrowser(chromium),\n        isIE: isBrowser(ie),\n        isOpera: isBrowser(opera),\n        isFirefox: isBrowser(firefox),\n        isSafari: isBrowser(safari)\n      };\n    };\n    const Browser = {\n      unknown: unknown$1,\n      nu: nu$1,\n      edge: constant(edge),\n      chromium: constant(chromium),\n      ie: constant(ie),\n      opera: constant(opera),\n      firefox: constant(firefox),\n      safari: constant(safari)\n    };\n\n    const windows = 'Windows';\n    const ios = 'iOS';\n    const android = 'Android';\n    const linux = 'Linux';\n    const macos = 'macOS';\n    const solaris = 'Solaris';\n    const freebsd = 'FreeBSD';\n    const chromeos = 'ChromeOS';\n    const unknown = () => {\n      return nu({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    const nu = info => {\n      const current = info.current;\n      const version = info.version;\n      const isOS = name => () => current === name;\n      return {\n        current,\n        version,\n        isWindows: isOS(windows),\n        isiOS: isOS(ios),\n        isAndroid: isOS(android),\n        isMacOS: isOS(macos),\n        isLinux: isOS(linux),\n        isSolaris: isOS(solaris),\n        isFreeBSD: isOS(freebsd),\n        isChromeOS: isOS(chromeos)\n      };\n    };\n    const OperatingSystem = {\n      unknown,\n      nu,\n      windows: constant(windows),\n      ios: constant(ios),\n      android: constant(android),\n      linux: constant(linux),\n      macos: constant(macos),\n      solaris: constant(solaris),\n      freebsd: constant(freebsd),\n      chromeos: constant(chromeos)\n    };\n\n    const detect$1 = (userAgent, userAgentDataOpt, mediaMatch) => {\n      const browsers = PlatformInfo.browsers();\n      const oses = PlatformInfo.oses();\n      const browser = userAgentDataOpt.bind(userAgentData => detectBrowser$1(browsers, userAgentData)).orThunk(() => detectBrowser(browsers, userAgent)).fold(Browser.unknown, Browser.nu);\n      const os = detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n      const deviceType = DeviceType(os, browser, userAgent, mediaMatch);\n      return {\n        browser,\n        os,\n        deviceType\n      };\n    };\n    const PlatformDetection = {\n      detect: detect$1\n    };\n\n    const mediaMatch = query => window.matchMedia(query).matches;\n    let platform = cached(() => PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch));\n    const detect = () => platform();\n\n    const r = (left, top) => {\n      const translate = (x, y) => r(left + x, top + y);\n      return {\n        left,\n        top,\n        translate\n      };\n    };\n    const SugarPosition = r;\n\n    const get$1 = _DOC => {\n      const doc = _DOC !== undefined ? _DOC.dom : document;\n      const x = doc.body.scrollLeft || doc.documentElement.scrollLeft;\n      const y = doc.body.scrollTop || doc.documentElement.scrollTop;\n      return SugarPosition(x, y);\n    };\n\n    const get = _win => {\n      const win = _win === undefined ? window : _win;\n      if (detect().browser.isFirefox()) {\n        return Optional.none();\n      } else {\n        return Optional.from(win.visualViewport);\n      }\n    };\n    const bounds = (x, y, width, height) => ({\n      x,\n      y,\n      width,\n      height,\n      right: x + width,\n      bottom: y + height\n    });\n    const getBounds = _win => {\n      const win = _win === undefined ? window : _win;\n      const doc = win.document;\n      const scroll = get$1(SugarElement.fromDom(doc));\n      return get(win).fold(() => {\n        const html = win.document.documentElement;\n        const width = html.clientWidth;\n        const height = html.clientHeight;\n        return bounds(scroll.left, scroll.top, width, height);\n      }, visualViewport => bounds(Math.max(visualViewport.pageLeft, scroll.left), Math.max(visualViewport.pageTop, scroll.top), visualViewport.width, visualViewport.height));\n    };\n    const bind = (name, callback, _win) => get(_win).map(visualViewport => {\n      const handler = e => callback(fromRawEvent(e));\n      visualViewport.addEventListener(name, handler);\n      return {\n        unbind: () => visualViewport.removeEventListener(name, handler)\n      };\n    }).getOrThunk(() => ({\n      unbind: noop\n    }));\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var global = tinymce.util.Tools.resolve('tinymce.Env');\n\n    const fireFullscreenStateChanged = (editor, state) => {\n      editor.dispatch('FullscreenStateChanged', {\n        state\n      });\n      editor.dispatch('ResizeEditor');\n    };\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('fullscreen_native', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const getFullscreenNative = option('fullscreen_native');\n\n    const getFullscreenRoot = editor => {\n      const elem = SugarElement.fromDom(editor.getElement());\n      return getShadowRoot(elem).map(getShadowHost).getOrThunk(() => getBody(owner(elem)));\n    };\n    const getFullscreenElement = root => {\n      if (root.fullscreenElement !== undefined) {\n        return root.fullscreenElement;\n      } else if (root.msFullscreenElement !== undefined) {\n        return root.msFullscreenElement;\n      } else if (root.webkitFullscreenElement !== undefined) {\n        return root.webkitFullscreenElement;\n      } else {\n        return null;\n      }\n    };\n    const getFullscreenchangeEventName = () => {\n      if (document.fullscreenElement !== undefined) {\n        return 'fullscreenchange';\n      } else if (document.msFullscreenElement !== undefined) {\n        return 'MSFullscreenChange';\n      } else if (document.webkitFullscreenElement !== undefined) {\n        return 'webkitfullscreenchange';\n      } else {\n        return 'fullscreenchange';\n      }\n    };\n    const requestFullscreen = sugarElem => {\n      const elem = sugarElem.dom;\n      if (elem.requestFullscreen) {\n        elem.requestFullscreen();\n      } else if (elem.msRequestFullscreen) {\n        elem.msRequestFullscreen();\n      } else if (elem.webkitRequestFullScreen) {\n        elem.webkitRequestFullScreen();\n      }\n    };\n    const exitFullscreen = sugarDoc => {\n      const doc = sugarDoc.dom;\n      if (doc.exitFullscreen) {\n        doc.exitFullscreen();\n      } else if (doc.msExitFullscreen) {\n        doc.msExitFullscreen();\n      } else if (doc.webkitCancelFullScreen) {\n        doc.webkitCancelFullScreen();\n      }\n    };\n    const isFullscreenElement = elem => elem.dom === getFullscreenElement(owner(elem).dom);\n\n    const ancestors$1 = (scope, predicate, isRoot) => filter$1(parents(scope, isRoot), predicate);\n    const siblings$1 = (scope, predicate) => filter$1(siblings$2(scope), predicate);\n\n    const all = selector => all$1(selector);\n    const ancestors = (scope, selector, isRoot) => ancestors$1(scope, e => is(e, selector), isRoot);\n    const siblings = (scope, selector) => siblings$1(scope, e => is(e, selector));\n\n    const attr = 'data-ephox-mobile-fullscreen-style';\n    const siblingStyles = 'display:none!important;';\n    const ancestorPosition = 'position:absolute!important;';\n    const ancestorStyles = 'top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;';\n    const bgFallback = 'background-color:rgb(255,255,255)!important;';\n    const isAndroid = global.os.isAndroid();\n    const matchColor = editorBody => {\n      const color = get$2(editorBody, 'background-color');\n      return color !== undefined && color !== '' ? 'background-color:' + color + '!important' : bgFallback;\n    };\n    const clobberStyles = (dom, container, editorBody) => {\n      const gatherSiblings = element => {\n        return siblings(element, '*:not(.tox-silver-sink)');\n      };\n      const clobber = clobberStyle => element => {\n        const styles = get$3(element, 'style');\n        const backup = styles === undefined ? 'no-styles' : styles.trim();\n        if (backup === clobberStyle) {\n          return;\n        } else {\n          set$1(element, attr, backup);\n          setAll(element, dom.parseStyle(clobberStyle));\n        }\n      };\n      const ancestors$1 = ancestors(container, '*');\n      const siblings$1 = bind$3(ancestors$1, gatherSiblings);\n      const bgColor = matchColor(editorBody);\n      each$1(siblings$1, clobber(siblingStyles));\n      each$1(ancestors$1, clobber(ancestorPosition + ancestorStyles + bgColor));\n      const containerStyles = isAndroid === true ? '' : ancestorPosition;\n      clobber(containerStyles + ancestorStyles + bgColor)(container);\n    };\n    const restoreStyles = dom => {\n      const clobberedEls = all('[' + attr + ']');\n      each$1(clobberedEls, element => {\n        const restore = get$3(element, attr);\n        if (restore && restore !== 'no-styles') {\n          setAll(element, dom.parseStyle(restore));\n        } else {\n          remove(element, 'style');\n        }\n        remove(element, attr);\n      });\n    };\n\n    const DOM = global$1.DOM;\n    const getScrollPos = () => getBounds(window);\n    const setScrollPos = pos => window.scrollTo(pos.x, pos.y);\n    const viewportUpdate = get().fold(() => ({\n      bind: noop,\n      unbind: noop\n    }), visualViewport => {\n      const editorContainer = value();\n      const resizeBinder = unbindable();\n      const scrollBinder = unbindable();\n      const refreshScroll = () => {\n        document.body.scrollTop = 0;\n        document.documentElement.scrollTop = 0;\n      };\n      const refreshVisualViewport = () => {\n        window.requestAnimationFrame(() => {\n          editorContainer.on(container => setAll(container, {\n            top: visualViewport.offsetTop + 'px',\n            left: visualViewport.offsetLeft + 'px',\n            height: visualViewport.height + 'px',\n            width: visualViewport.width + 'px'\n          }));\n        });\n      };\n      const update = first(() => {\n        refreshScroll();\n        refreshVisualViewport();\n      }, 50);\n      const bind$1 = element => {\n        editorContainer.set(element);\n        update.throttle();\n        resizeBinder.set(bind('resize', update.throttle));\n        scrollBinder.set(bind('scroll', update.throttle));\n      };\n      const unbind = () => {\n        editorContainer.on(() => {\n          resizeBinder.clear();\n          scrollBinder.clear();\n        });\n        editorContainer.clear();\n      };\n      return {\n        bind: bind$1,\n        unbind\n      };\n    });\n    const toggleFullscreen = (editor, fullscreenState) => {\n      const body = document.body;\n      const documentElement = document.documentElement;\n      const editorContainer = editor.getContainer();\n      const editorContainerS = SugarElement.fromDom(editorContainer);\n      const sinkContainerS = nextSibling(editorContainerS).filter(elm => isHTMLElement(elm) && has(elm, 'tox-silver-sink'));\n      const fullscreenRoot = getFullscreenRoot(editor);\n      const fullscreenInfo = fullscreenState.get();\n      const editorBody = SugarElement.fromDom(editor.getBody());\n      const isTouch = global.deviceType.isTouch();\n      const editorContainerStyle = editorContainer.style;\n      const iframe = editor.iframeElement;\n      const iframeStyle = iframe === null || iframe === void 0 ? void 0 : iframe.style;\n      const handleClasses = handler => {\n        handler(body, 'tox-fullscreen');\n        handler(documentElement, 'tox-fullscreen');\n        handler(editorContainer, 'tox-fullscreen');\n        getShadowRoot(editorContainerS).map(root => getShadowHost(root).dom).each(host => {\n          handler(host, 'tox-fullscreen');\n          handler(host, 'tox-shadowhost');\n        });\n      };\n      const cleanup = () => {\n        if (isTouch) {\n          restoreStyles(editor.dom);\n        }\n        handleClasses(DOM.removeClass);\n        viewportUpdate.unbind();\n        Optional.from(fullscreenState.get()).each(info => info.fullscreenChangeHandler.unbind());\n      };\n      if (!fullscreenInfo) {\n        const fullscreenChangeHandler = bind$1(owner(fullscreenRoot), getFullscreenchangeEventName(), _evt => {\n          if (getFullscreenNative(editor)) {\n            if (!isFullscreenElement(fullscreenRoot) && fullscreenState.get() !== null) {\n              toggleFullscreen(editor, fullscreenState);\n            }\n          }\n        });\n        const newFullScreenInfo = {\n          scrollPos: getScrollPos(),\n          containerWidth: editorContainerStyle.width,\n          containerHeight: editorContainerStyle.height,\n          containerTop: editorContainerStyle.top,\n          containerLeft: editorContainerStyle.left,\n          iframeWidth: iframeStyle.width,\n          iframeHeight: iframeStyle.height,\n          fullscreenChangeHandler,\n          sinkCssPosition: sinkContainerS.map(elm => get$2(elm, 'position'))\n        };\n        if (isTouch) {\n          clobberStyles(editor.dom, editorContainerS, editorBody);\n        }\n        iframeStyle.width = iframeStyle.height = '100%';\n        editorContainerStyle.width = editorContainerStyle.height = '';\n        handleClasses(DOM.addClass);\n        sinkContainerS.each(elm => {\n          set(elm, 'position', 'fixed');\n        });\n        viewportUpdate.bind(editorContainerS);\n        editor.on('remove', cleanup);\n        fullscreenState.set(newFullScreenInfo);\n        if (getFullscreenNative(editor)) {\n          requestFullscreen(fullscreenRoot);\n        }\n        fireFullscreenStateChanged(editor, true);\n      } else {\n        fullscreenInfo.fullscreenChangeHandler.unbind();\n        if (getFullscreenNative(editor) && isFullscreenElement(fullscreenRoot)) {\n          exitFullscreen(owner(fullscreenRoot));\n        }\n        iframeStyle.width = fullscreenInfo.iframeWidth;\n        iframeStyle.height = fullscreenInfo.iframeHeight;\n        editorContainerStyle.width = fullscreenInfo.containerWidth;\n        editorContainerStyle.height = fullscreenInfo.containerHeight;\n        editorContainerStyle.top = fullscreenInfo.containerTop;\n        editorContainerStyle.left = fullscreenInfo.containerLeft;\n        lift2(sinkContainerS, fullscreenInfo.sinkCssPosition, (elm, val) => {\n          set(elm, 'position', val);\n        });\n        cleanup();\n        setScrollPos(fullscreenInfo.scrollPos);\n        fullscreenState.set(null);\n        fireFullscreenStateChanged(editor, false);\n        editor.off('remove', cleanup);\n      }\n    };\n\n    const register$1 = (editor, fullscreenState) => {\n      editor.addCommand('mceFullScreen', () => {\n        toggleFullscreen(editor, fullscreenState);\n      });\n    };\n\n    const makeSetupHandler = (editor, fullscreenState) => api => {\n      api.setActive(fullscreenState.get() !== null);\n      const editorEventCallback = e => api.setActive(e.state);\n      editor.on('FullscreenStateChanged', editorEventCallback);\n      return () => editor.off('FullscreenStateChanged', editorEventCallback);\n    };\n    const register = (editor, fullscreenState) => {\n      const onAction = () => editor.execCommand('mceFullScreen');\n      editor.ui.registry.addToggleMenuItem('fullscreen', {\n        text: 'Fullscreen',\n        icon: 'fullscreen',\n        shortcut: 'Meta+Shift+F',\n        onAction,\n        onSetup: makeSetupHandler(editor, fullscreenState)\n      });\n      editor.ui.registry.addToggleButton('fullscreen', {\n        tooltip: 'Fullscreen',\n        icon: 'fullscreen',\n        onAction,\n        onSetup: makeSetupHandler(editor, fullscreenState)\n      });\n    };\n\n    var Plugin = () => {\n      global$2.add('fullscreen', editor => {\n        const fullscreenState = Cell(null);\n        if (editor.inline) {\n          return get$5(fullscreenState);\n        }\n        register$2(editor);\n        register$1(editor, fullscreenState);\n        register(editor, fullscreenState);\n        editor.addShortcut('Meta+Shift+F', '', 'mceFullScreen');\n        return get$5(fullscreenState);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const getPrototypeOf = Object.getPrototypeOf;\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq = t => a => t === a;\n    const is = (value, constructor) => isObject(value) && hasProto(value, constructor, (o, proto) => getPrototypeOf(o) === proto);\n    const isString = isType('string');\n    const isObject = isType('object');\n    const isPlainObject = value => is(value, Object);\n    const isArray = isType('array');\n    const isNull = eq(null);\n    const isBoolean = isSimpleType('boolean');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n    const isArrayOf = (value, pred) => {\n      if (isArray(value)) {\n        for (let i = 0, len = value.length; i < len; ++i) {\n          if (!pred(value[i])) {\n            return false;\n          }\n        }\n        return true;\n      }\n      return false;\n    };\n\n    const noop = () => {};\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const keys = Object.keys;\n    const hasOwnProperty = Object.hasOwnProperty;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const objAcc = r => (x, i) => {\n      r[i] = x;\n    };\n    const internalFilter = (obj, pred, onTrue, onFalse) => {\n      each(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const filter = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\n    const has = (obj, key) => hasOwnProperty.call(obj, key);\n    const hasNonNullableKey = (obj, key) => has(obj, key) && obj[key] !== undefined && obj[key] !== null;\n\n    const nativePush = Array.prototype.push;\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const get = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get(xs, 0);\n    const findMap = (arr, f) => {\n      for (let i = 0; i < arr.length; i++) {\n        const r = f(arr[i], i);\n        if (r.isSome()) {\n          return r;\n        }\n      }\n      return Optional.none();\n    };\n\n    typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const remove = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.URI');\n\n    const isNotEmpty = s => s.length > 0;\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('image_dimensions', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('image_advtab', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('image_uploadtab', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('image_prepend_url', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('image_class_list', {\n        processor: 'object[]'\n      });\n      registerOption('image_description', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('image_title', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('image_caption', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('image_list', {\n        processor: value => {\n          const valid = value === false || isString(value) || isArrayOf(value, isObject) || isFunction(value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: 'Must be false, a string, an array or a function.'\n          };\n        },\n        default: false\n      });\n      registerOption('sn_settings', {\n        processor: 'object',\n        default: {}\n      });\n    };\n    const hasDimensions = option('image_dimensions');\n    const hasAdvTab = option('image_advtab');\n    const hasUploadTab = option('image_uploadtab');\n    const getPrependUrl = option('image_prepend_url');\n    const getClassList = option('image_class_list');\n    const hasDescription = option('image_description');\n    const hasImageTitle = option('image_title');\n    const hasImageCaption = option('image_caption');\n    const getImageList = option('image_list');\n    const showAccessibilityOptions = option('a11y_advanced_options');\n    const isAutomaticUploadsEnabled = option('automatic_uploads');\n    const hasUploadUrl = editor => isNotEmpty(editor.options.get('images_upload_url'));\n    const hasUploadHandler = editor => isNonNullable(editor.options.get('images_upload_handler'));\n    const getSnImageSettings = editor => {\n      const {\n        allowLibraryUploads = true,\n        showLibraryTab = false,\n        libraryFilePicker = callback => callback(null),\n        labels = {}\n      } = editor.options.get('sn_settings').image || {};\n      return {\n        allowLibraryUploads,\n        showLibraryTab,\n        libraryFilePicker,\n        labels: {\n          tabName: 'Image Library',\n          dropzone: 'Upload to Public Library',\n          search: 'Search Library',\n          ...labels\n        }\n      };\n    };\n\n    const parseIntAndGetMax = (val1, val2) => Math.max(parseInt(val1, 10), parseInt(val2, 10));\n    const getImageSize = url => new Promise(callback => {\n      const img = document.createElement('img');\n      const done = dimensions => {\n        img.onload = img.onerror = null;\n        if (img.parentNode) {\n          img.parentNode.removeChild(img);\n        }\n        callback(dimensions);\n      };\n      img.onload = () => {\n        const width = parseIntAndGetMax(img.width, img.clientWidth);\n        const height = parseIntAndGetMax(img.height, img.clientHeight);\n        const dimensions = {\n          width,\n          height\n        };\n        done(Promise.resolve(dimensions));\n      };\n      img.onerror = () => {\n        done(Promise.reject(\"Failed to get image dimensions for: \".concat(url)));\n      };\n      const style = img.style;\n      style.visibility = 'hidden';\n      style.position = 'fixed';\n      style.bottom = style.left = '0px';\n      style.width = style.height = 'auto';\n      document.body.appendChild(img);\n      img.src = url;\n    });\n    const removePixelSuffix = value => {\n      if (value) {\n        value = value.replace(/px$/, '');\n      }\n      return value;\n    };\n    const addPixelSuffix = value => {\n      if (value.length > 0 && /^[0-9]+$/.test(value)) {\n        value += 'px';\n      }\n      return value;\n    };\n    const mergeMargins = css => {\n      if (css.margin) {\n        const splitMargin = String(css.margin).split(' ');\n        switch (splitMargin.length) {\n          case 1:\n            css['margin-top'] = css['margin-top'] || splitMargin[0];\n            css['margin-right'] = css['margin-right'] || splitMargin[0];\n            css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];\n            css['margin-left'] = css['margin-left'] || splitMargin[0];\n            break;\n          case 2:\n            css['margin-top'] = css['margin-top'] || splitMargin[0];\n            css['margin-right'] = css['margin-right'] || splitMargin[1];\n            css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];\n            css['margin-left'] = css['margin-left'] || splitMargin[1];\n            break;\n          case 3:\n            css['margin-top'] = css['margin-top'] || splitMargin[0];\n            css['margin-right'] = css['margin-right'] || splitMargin[1];\n            css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];\n            css['margin-left'] = css['margin-left'] || splitMargin[1];\n            break;\n          case 4:\n            css['margin-top'] = css['margin-top'] || splitMargin[0];\n            css['margin-right'] = css['margin-right'] || splitMargin[1];\n            css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];\n            css['margin-left'] = css['margin-left'] || splitMargin[3];\n        }\n        delete css.margin;\n      }\n      return css;\n    };\n    const createImageList = (editor, callback) => {\n      const imageList = getImageList(editor);\n      if (isString(imageList)) {\n        fetch(imageList).then(res => {\n          if (res.ok) {\n            res.json().then(callback);\n          }\n        });\n      } else if (isFunction(imageList)) {\n        imageList(callback);\n      } else {\n        callback(imageList);\n      }\n    };\n    const waitLoadImage = (editor, data, imgElm) => {\n      const selectImage = () => {\n        imgElm.onload = imgElm.onerror = null;\n        if (editor.selection) {\n          editor.selection.select(imgElm);\n          editor.nodeChanged();\n        }\n      };\n      imgElm.onload = () => {\n        if (!data.width && !data.height && hasDimensions(editor)) {\n          editor.dom.setAttribs(imgElm, {\n            width: String(imgElm.clientWidth),\n            height: String(imgElm.clientHeight)\n          });\n        }\n        selectImage();\n      };\n      imgElm.onerror = selectImage;\n    };\n    const blobToDataUri = blob => new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.onload = () => {\n        resolve(reader.result);\n      };\n      reader.onerror = () => {\n        var _a;\n        reject((_a = reader.error) === null || _a === void 0 ? void 0 : _a.message);\n      };\n      reader.readAsDataURL(blob);\n    });\n    const isPlaceholderImage = imgElm => imgElm.nodeName === 'IMG' && (imgElm.hasAttribute('data-mce-object') || imgElm.hasAttribute('data-mce-placeholder'));\n    const isSafeImageUrl = (editor, src) => {\n      const getOption = editor.options.get;\n      return global$2.isDomSafe(src, 'img', {\n        allow_html_data_urls: getOption('allow_html_data_urls'),\n        allow_script_urls: getOption('allow_script_urls'),\n        allow_svg_data_urls: getOption('allow_svg_data_urls')\n      });\n    };\n\n    const DOM = global$3.DOM;\n    const getHspace = image => {\n      if (image.style.marginLeft && image.style.marginRight && image.style.marginLeft === image.style.marginRight) {\n        return removePixelSuffix(image.style.marginLeft);\n      } else {\n        return '';\n      }\n    };\n    const getVspace = image => {\n      if (image.style.marginTop && image.style.marginBottom && image.style.marginTop === image.style.marginBottom) {\n        return removePixelSuffix(image.style.marginTop);\n      } else {\n        return '';\n      }\n    };\n    const getBorder = image => {\n      if (image.style.borderWidth) {\n        return removePixelSuffix(image.style.borderWidth);\n      } else {\n        return '';\n      }\n    };\n    const getAttrib = (image, name) => {\n      var _a;\n      if (image.hasAttribute(name)) {\n        return (_a = image.getAttribute(name)) !== null && _a !== void 0 ? _a : '';\n      } else {\n        return '';\n      }\n    };\n    const hasCaption = image => image.parentNode !== null && image.parentNode.nodeName === 'FIGURE';\n    const updateAttrib = (image, name, value) => {\n      if (value === '' || value === null) {\n        image.removeAttribute(name);\n      } else {\n        image.setAttribute(name, value);\n      }\n    };\n    const wrapInFigure = image => {\n      const figureElm = DOM.create('figure', {\n        class: 'image'\n      });\n      DOM.insertAfter(figureElm, image);\n      figureElm.appendChild(image);\n      figureElm.appendChild(DOM.create('figcaption', {\n        contentEditable: 'true'\n      }, 'Caption'));\n      figureElm.contentEditable = 'false';\n    };\n    const removeFigure = image => {\n      const figureElm = image.parentNode;\n      if (isNonNullable(figureElm)) {\n        DOM.insertAfter(image, figureElm);\n        DOM.remove(figureElm);\n      }\n    };\n    const toggleCaption = image => {\n      if (hasCaption(image)) {\n        removeFigure(image);\n      } else {\n        wrapInFigure(image);\n      }\n    };\n    const normalizeStyle = (image, normalizeCss) => {\n      const attrValue = image.getAttribute('style');\n      const value = normalizeCss(attrValue !== null ? attrValue : '');\n      if (value.length > 0) {\n        image.setAttribute('style', value);\n        image.setAttribute('data-mce-style', value);\n      } else {\n        image.removeAttribute('style');\n      }\n    };\n    const setSize = (name, normalizeCss) => (image, name, value) => {\n      const styles = image.style;\n      if (styles[name]) {\n        styles[name] = addPixelSuffix(value);\n        normalizeStyle(image, normalizeCss);\n      } else {\n        updateAttrib(image, name, value);\n      }\n    };\n    const getSize = (image, name) => {\n      if (image.style[name]) {\n        return removePixelSuffix(image.style[name]);\n      } else {\n        return getAttrib(image, name);\n      }\n    };\n    const setHspace = (image, value) => {\n      const pxValue = addPixelSuffix(value);\n      image.style.marginLeft = pxValue;\n      image.style.marginRight = pxValue;\n    };\n    const setVspace = (image, value) => {\n      const pxValue = addPixelSuffix(value);\n      image.style.marginTop = pxValue;\n      image.style.marginBottom = pxValue;\n    };\n    const setBorder = (image, value) => {\n      const pxValue = addPixelSuffix(value);\n      image.style.borderWidth = pxValue;\n    };\n    const setBorderStyle = (image, value) => {\n      image.style.borderStyle = value;\n    };\n    const getBorderStyle = image => {\n      var _a;\n      return (_a = image.style.borderStyle) !== null && _a !== void 0 ? _a : '';\n    };\n    const isFigure = elm => isNonNullable(elm) && elm.nodeName === 'FIGURE';\n    const isImage = elm => elm.nodeName === 'IMG';\n    const getIsDecorative = image => DOM.getAttrib(image, 'alt').length === 0 && DOM.getAttrib(image, 'role') === 'presentation';\n    const getAlt = image => {\n      if (getIsDecorative(image)) {\n        return '';\n      } else {\n        return getAttrib(image, 'alt');\n      }\n    };\n    const defaultData = () => ({\n      src: '',\n      alt: '',\n      title: '',\n      width: '',\n      height: '',\n      class: '',\n      style: '',\n      caption: false,\n      hspace: '',\n      vspace: '',\n      border: '',\n      borderStyle: '',\n      isDecorative: false\n    });\n    const getStyleValue = (normalizeCss, data) => {\n      var _a;\n      const image = document.createElement('img');\n      updateAttrib(image, 'style', data.style);\n      if (getHspace(image) || data.hspace !== '') {\n        setHspace(image, data.hspace);\n      }\n      if (getVspace(image) || data.vspace !== '') {\n        setVspace(image, data.vspace);\n      }\n      if (getBorder(image) || data.border !== '') {\n        setBorder(image, data.border);\n      }\n      if (getBorderStyle(image) || data.borderStyle !== '') {\n        setBorderStyle(image, data.borderStyle);\n      }\n      return normalizeCss((_a = image.getAttribute('style')) !== null && _a !== void 0 ? _a : '');\n    };\n    const create = (normalizeCss, data) => {\n      const image = document.createElement('img');\n      write(normalizeCss, {\n        ...data,\n        caption: false\n      }, image);\n      setAlt(image, data.alt, data.isDecorative);\n      if (data.caption) {\n        const figure = DOM.create('figure', {\n          class: 'image'\n        });\n        figure.appendChild(image);\n        figure.appendChild(DOM.create('figcaption', {\n          contentEditable: 'true'\n        }, 'Caption'));\n        figure.contentEditable = 'false';\n        return figure;\n      } else {\n        return image;\n      }\n    };\n    const read = (normalizeCss, image) => ({\n      src: getAttrib(image, 'src'),\n      alt: getAlt(image),\n      title: getAttrib(image, 'title'),\n      width: getSize(image, 'width'),\n      height: getSize(image, 'height'),\n      class: getAttrib(image, 'class'),\n      style: normalizeCss(getAttrib(image, 'style')),\n      caption: hasCaption(image),\n      hspace: getHspace(image),\n      vspace: getVspace(image),\n      border: getBorder(image),\n      borderStyle: getBorderStyle(image),\n      isDecorative: getIsDecorative(image)\n    });\n    const updateProp = (image, oldData, newData, name, set) => {\n      if (newData[name] !== oldData[name]) {\n        set(image, name, String(newData[name]));\n      }\n    };\n    const setAlt = (image, alt, isDecorative) => {\n      if (isDecorative) {\n        DOM.setAttrib(image, 'role', 'presentation');\n        const sugarImage = SugarElement.fromDom(image);\n        set(sugarImage, 'alt', '');\n      } else {\n        if (isNull(alt)) {\n          const sugarImage = SugarElement.fromDom(image);\n          remove(sugarImage, 'alt');\n        } else {\n          const sugarImage = SugarElement.fromDom(image);\n          set(sugarImage, 'alt', alt);\n        }\n        if (DOM.getAttrib(image, 'role') === 'presentation') {\n          DOM.setAttrib(image, 'role', '');\n        }\n      }\n    };\n    const updateAlt = (image, oldData, newData) => {\n      if (newData.alt !== oldData.alt || newData.isDecorative !== oldData.isDecorative) {\n        setAlt(image, newData.alt, newData.isDecorative);\n      }\n    };\n    const normalized = (set, normalizeCss) => (image, name, value) => {\n      set(image, value);\n      normalizeStyle(image, normalizeCss);\n    };\n    const write = (normalizeCss, newData, image) => {\n      const oldData = read(normalizeCss, image);\n      updateProp(image, oldData, newData, 'caption', (image, _name, _value) => toggleCaption(image));\n      updateProp(image, oldData, newData, 'src', updateAttrib);\n      updateProp(image, oldData, newData, 'title', updateAttrib);\n      updateProp(image, oldData, newData, 'width', setSize('width', normalizeCss));\n      updateProp(image, oldData, newData, 'height', setSize('height', normalizeCss));\n      updateProp(image, oldData, newData, 'class', updateAttrib);\n      updateProp(image, oldData, newData, 'style', normalized((image, value) => updateAttrib(image, 'style', value), normalizeCss));\n      updateProp(image, oldData, newData, 'hspace', normalized(setHspace, normalizeCss));\n      updateProp(image, oldData, newData, 'vspace', normalized(setVspace, normalizeCss));\n      updateProp(image, oldData, newData, 'border', normalized(setBorder, normalizeCss));\n      updateProp(image, oldData, newData, 'borderStyle', normalized(setBorderStyle, normalizeCss));\n      updateAlt(image, oldData, newData);\n    };\n\n    const normalizeCss$1 = (editor, cssText) => {\n      const css = editor.dom.styles.parse(cssText);\n      const mergedCss = mergeMargins(css);\n      const compressed = editor.dom.styles.parse(editor.dom.styles.serialize(mergedCss));\n      return editor.dom.styles.serialize(compressed);\n    };\n    const getSelectedImage = editor => {\n      const imgElm = editor.selection.getNode();\n      const figureElm = editor.dom.getParent(imgElm, 'figure.image');\n      if (figureElm) {\n        return editor.dom.select('img', figureElm)[0];\n      }\n      if (imgElm && (imgElm.nodeName !== 'IMG' || isPlaceholderImage(imgElm))) {\n        return null;\n      }\n      return imgElm;\n    };\n    const splitTextBlock = (editor, figure) => {\n      var _a;\n      const dom = editor.dom;\n      const textBlockElements = filter(editor.schema.getTextBlockElements(), (_, parentElm) => !editor.schema.isValidChild(parentElm, 'figure'));\n      const textBlock = dom.getParent(figure.parentNode, node => hasNonNullableKey(textBlockElements, node.nodeName), editor.getBody());\n      if (textBlock) {\n        return (_a = dom.split(textBlock, figure)) !== null && _a !== void 0 ? _a : figure;\n      } else {\n        return figure;\n      }\n    };\n    const readImageDataFromSelection = editor => {\n      const image = getSelectedImage(editor);\n      return image ? read(css => normalizeCss$1(editor, css), image) : defaultData();\n    };\n    const insertImageAtCaret = (editor, data) => {\n      const elm = create(css => normalizeCss$1(editor, css), data);\n      editor.dom.setAttrib(elm, 'data-mce-id', '__mcenew');\n      editor.focus();\n      editor.selection.setContent(elm.outerHTML);\n      const insertedElm = editor.dom.select('*[data-mce-id=\"__mcenew\"]')[0];\n      editor.dom.setAttrib(insertedElm, 'data-mce-id', null);\n      editor.dom.setAttrib(insertedElm, 'data-library', data.fromLibrary);\n      if (isFigure(insertedElm)) {\n        const figure = splitTextBlock(editor, insertedElm);\n        editor.selection.select(figure);\n      } else {\n        editor.selection.select(insertedElm);\n      }\n    };\n    const syncSrcAttr = (editor, image) => {\n      editor.dom.setAttrib(image, 'src', image.getAttribute('src'));\n    };\n    const deleteImage = (editor, image) => {\n      if (image) {\n        const elm = editor.dom.is(image.parentNode, 'figure.image') ? image.parentNode : image;\n        editor.dom.remove(elm);\n        editor.focus();\n        editor.nodeChanged();\n        if (editor.dom.isEmpty(editor.getBody())) {\n          editor.setContent('');\n          editor.selection.setCursorLocation();\n        }\n      }\n    };\n    const writeImageDataToSelection = (editor, data) => {\n      const image = getSelectedImage(editor);\n      if (image) {\n        write(css => normalizeCss$1(editor, css), data, image);\n        syncSrcAttr(editor, image);\n        if (isFigure(image.parentNode)) {\n          const figure = image.parentNode;\n          splitTextBlock(editor, figure);\n          editor.selection.select(image.parentNode);\n        } else {\n          editor.selection.select(image);\n          waitLoadImage(editor, data, image);\n        }\n      }\n    };\n    const sanitizeImageData = (editor, data) => {\n      const src = data.src;\n      return {\n        ...data,\n        src: isSafeImageUrl(editor, src) ? src : ''\n      };\n    };\n    const insertOrUpdateImage = (editor, partialData) => {\n      const image = getSelectedImage(editor);\n      if (image) {\n        const selectedImageData = read(css => normalizeCss$1(editor, css), image);\n        const data = {\n          ...selectedImageData,\n          ...partialData\n        };\n        const sanitizedData = sanitizeImageData(editor, data);\n        if (data.src) {\n          writeImageDataToSelection(editor, sanitizedData);\n        } else {\n          deleteImage(editor, image);\n        }\n      } else if (partialData.src) {\n        insertImageAtCaret(editor, {\n          ...defaultData(),\n          ...partialData\n        });\n      }\n    };\n\n    const deep = (old, nu) => {\n      const bothObjects = isPlainObject(old) && isPlainObject(nu);\n      return bothObjects ? deepMerge(old, nu) : nu;\n    };\n    const baseMerge = merger => {\n      return (...objects) => {\n        if (objects.length === 0) {\n          throw new Error(\"Can't merge zero objects\");\n        }\n        const ret = {};\n        for (let j = 0; j < objects.length; j++) {\n          const curObject = objects[j];\n          for (const key in curObject) {\n            if (has(curObject, key)) {\n              ret[key] = merger(ret[key], curObject[key]);\n            }\n          }\n        }\n        return ret;\n      };\n    };\n    const deepMerge = baseMerge(deep);\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.util.ImageUploader');\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const getValue = item => isString(item.value) ? item.value : '';\n    const getText = item => {\n      if (isString(item.text)) {\n        return item.text;\n      } else if (isString(item.title)) {\n        return item.title;\n      } else {\n        return '';\n      }\n    };\n    const sanitizeList = (list, extractValue) => {\n      const out = [];\n      global.each(list, item => {\n        const text = getText(item);\n        if (item.menu !== undefined) {\n          const items = sanitizeList(item.menu, extractValue);\n          out.push({\n            text,\n            items\n          });\n        } else {\n          const value = extractValue(item);\n          out.push({\n            text,\n            value\n          });\n        }\n      });\n      return out;\n    };\n    const sanitizer = (extractor = getValue) => list => {\n      if (list) {\n        return Optional.from(list).map(list => sanitizeList(list, extractor));\n      } else {\n        return Optional.none();\n      }\n    };\n    const sanitize = list => sanitizer(getValue)(list);\n    const isGroup = item => has(item, 'items');\n    const findEntryDelegate = (list, value) => findMap(list, item => {\n      if (isGroup(item)) {\n        return findEntryDelegate(item.items, value);\n      } else if (item.value === value) {\n        return Optional.some(item);\n      } else {\n        return Optional.none();\n      }\n    });\n    const findEntry = (optList, value) => optList.bind(list => findEntryDelegate(list, value));\n    const ListUtils = {\n      sanitizer,\n      sanitize,\n      findEntry\n    };\n\n    const makeTab$3 = _info => ({\n      title: 'Advanced',\n      name: 'advanced',\n      items: [{\n        type: 'grid',\n        columns: 2,\n        items: [{\n          type: 'input',\n          label: 'Vertical space',\n          name: 'vspace',\n          inputMode: 'numeric'\n        }, {\n          type: 'input',\n          label: 'Horizontal space',\n          name: 'hspace',\n          inputMode: 'numeric'\n        }, {\n          type: 'input',\n          label: 'Border width',\n          name: 'border',\n          inputMode: 'numeric'\n        }, {\n          type: 'listbox',\n          name: 'borderstyle',\n          label: 'Border style',\n          items: [{\n            text: 'Select...',\n            value: ''\n          }, {\n            text: 'Solid',\n            value: 'solid'\n          }, {\n            text: 'Dotted',\n            value: 'dotted'\n          }, {\n            text: 'Dashed',\n            value: 'dashed'\n          }, {\n            text: 'Double',\n            value: 'double'\n          }, {\n            text: 'Groove',\n            value: 'groove'\n          }, {\n            text: 'Ridge',\n            value: 'ridge'\n          }, {\n            text: 'Inset',\n            value: 'inset'\n          }, {\n            text: 'Outset',\n            value: 'outset'\n          }, {\n            text: 'None',\n            value: 'none'\n          }, {\n            text: 'Hidden',\n            value: 'hidden'\n          }]\n        }]\n      }]\n    });\n    const AdvTab = {\n      makeTab: makeTab$3\n    };\n\n    const collect = editor => {\n      const urlListSanitizer = ListUtils.sanitizer(item => editor.convertURL(item.value || item.url || '', 'src'));\n      const futureImageList = new Promise(completer => {\n        createImageList(editor, imageList => {\n          completer(urlListSanitizer(imageList).map(items => flatten([[{\n            text: 'None',\n            value: ''\n          }], items])));\n        });\n      });\n      const classList = ListUtils.sanitize(getClassList(editor));\n      const hasAdvTab$1 = hasAdvTab(editor);\n      const hasUploadTab$1 = hasUploadTab(editor);\n      const hasUploadUrl$1 = hasUploadUrl(editor);\n      const hasUploadHandler$1 = hasUploadHandler(editor);\n      const image = readImageDataFromSelection(editor);\n      const hasDescription$1 = hasDescription(editor);\n      const hasImageTitle$1 = hasImageTitle(editor);\n      const hasDimensions$1 = hasDimensions(editor);\n      const hasImageCaption$1 = hasImageCaption(editor);\n      const hasAccessibilityOptions = showAccessibilityOptions(editor);\n      const automaticUploads = isAutomaticUploadsEnabled(editor);\n      const prependURL = Optional.some(getPrependUrl(editor)).filter(preUrl => isString(preUrl) && preUrl.length > 0);\n      const libraryTab = getSnImageSettings(editor);\n      return futureImageList.then(imageList => ({\n        image,\n        imageList,\n        classList,\n        hasAdvTab: hasAdvTab$1,\n        hasUploadTab: hasUploadTab$1,\n        hasUploadUrl: hasUploadUrl$1,\n        hasUploadHandler: hasUploadHandler$1,\n        hasDescription: hasDescription$1,\n        hasImageTitle: hasImageTitle$1,\n        hasDimensions: hasDimensions$1,\n        hasImageCaption: hasImageCaption$1,\n        prependURL,\n        hasAccessibilityOptions,\n        automaticUploads,\n        libraryTab\n      }));\n    };\n\n    const makeTab$2 = _info => {\n      const {\n        allowLibraryUploads,\n        labels\n      } = _info.libraryTab;\n      const {\n        tabName,\n        dropZone,\n        search\n      } = labels;\n      const items = [{\n        type: 'label',\n        label: search,\n        items: [{\n          type: 'button',\n          name: 'librarysearch',\n          text: search,\n          icon: 'search'\n        }]\n      }];\n      if (allowLibraryUploads) {\n        items.push({\n          type: 'dropzone',\n          name: 'libraryfile',\n          label: dropZone\n        });\n      }\n      return {\n        title: tabName,\n        name: 'librarytab',\n        items\n      };\n    };\n    const LibraryTab = {\n      makeTab: makeTab$2\n    };\n\n    const makeItems = info => {\n      const imageUrl = {\n        name: 'src',\n        type: 'urlinput',\n        filetype: 'image',\n        label: 'Source',\n        picker_text: 'Browse files'\n      };\n      const imageList = info.imageList.map(items => ({\n        name: 'images',\n        type: 'listbox',\n        label: 'Image list',\n        items\n      }));\n      const imageDescription = {\n        name: 'alt',\n        type: 'input',\n        label: 'Alternative description',\n        enabled: !(info.hasAccessibilityOptions && info.image.isDecorative)\n      };\n      const imageTitle = {\n        name: 'title',\n        type: 'input',\n        label: 'Image title'\n      };\n      const imageDimensions = {\n        name: 'dimensions',\n        type: 'sizeinput'\n      };\n      const isDecorative = {\n        type: 'label',\n        label: 'Accessibility',\n        items: [{\n          name: 'isDecorative',\n          type: 'checkbox',\n          label: 'Image is decorative'\n        }]\n      };\n      const classList = info.classList.map(items => ({\n        name: 'classes',\n        type: 'listbox',\n        label: 'Class',\n        items\n      }));\n      const caption = {\n        type: 'label',\n        label: 'Caption',\n        items: [{\n          type: 'checkbox',\n          name: 'caption',\n          label: 'Show caption'\n        }]\n      };\n      const getDialogContainerType = useColumns => useColumns ? {\n        type: 'grid',\n        columns: 2\n      } : {\n        type: 'panel'\n      };\n      return flatten([[imageUrl], imageList.toArray(), info.hasAccessibilityOptions && info.hasDescription ? [isDecorative] : [], info.hasDescription ? [imageDescription] : [], info.hasImageTitle ? [imageTitle] : [], info.hasDimensions ? [imageDimensions] : [], [{\n        ...getDialogContainerType(info.classList.isSome() && info.hasImageCaption),\n        items: flatten([classList.toArray(), info.hasImageCaption ? [caption] : []])\n      }]]);\n    };\n    const makeTab$1 = info => ({\n      title: 'General',\n      name: 'general',\n      items: makeItems(info)\n    });\n    const MainTab = {\n      makeTab: makeTab$1,\n      makeItems\n    };\n\n    const makeTab = _info => {\n      const items = [{\n        type: 'dropzone',\n        name: 'fileinput'\n      }];\n      return {\n        title: 'Upload',\n        name: 'upload',\n        items\n      };\n    };\n    const UploadTab = {\n      makeTab\n    };\n\n    const createState = info => ({\n      prevImage: ListUtils.findEntry(info.imageList, info.image.src),\n      prevAlt: info.image.alt,\n      open: true\n    });\n    const fromImageData = image => ({\n      src: {\n        value: image.src,\n        meta: {}\n      },\n      images: image.src,\n      alt: image.alt,\n      title: image.title,\n      dimensions: {\n        width: image.width,\n        height: image.height\n      },\n      classes: image.class,\n      caption: image.caption,\n      style: image.style,\n      vspace: image.vspace,\n      border: image.border,\n      hspace: image.hspace,\n      borderstyle: image.borderStyle,\n      fileinput: [],\n      libraryfile: [],\n      isDecorative: image.isDecorative\n    });\n    const toImageData = (data, removeEmptyAlt) => ({\n      src: data.src.value,\n      alt: (data.alt === null || data.alt.length === 0) && removeEmptyAlt ? null : data.alt,\n      title: data.title,\n      width: data.dimensions.width,\n      height: data.dimensions.height,\n      class: data.classes,\n      style: data.style,\n      caption: data.caption,\n      hspace: data.hspace,\n      vspace: data.vspace,\n      border: data.border,\n      borderStyle: data.borderstyle,\n      isDecorative: data.isDecorative,\n      fromLibrary: data.libraryfile.length > 0\n    });\n    const addPrependUrl2 = (info, srcURL) => {\n      if (!/^(?:[a-zA-Z]+:)?\\/\\//.test(srcURL)) {\n        return info.prependURL.bind(prependUrl => {\n          if (srcURL.substring(0, prependUrl.length) !== prependUrl) {\n            return Optional.some(prependUrl + srcURL);\n          }\n          return Optional.none();\n        });\n      }\n      return Optional.none();\n    };\n    const addPrependUrl = (info, api) => {\n      const data = api.getData();\n      addPrependUrl2(info, data.src.value).each(srcURL => {\n        api.setData({\n          src: {\n            value: srcURL,\n            meta: data.src.meta\n          }\n        });\n      });\n    };\n    const formFillFromMeta2 = (info, data, meta) => {\n      if (info.hasDescription && isString(meta.alt)) {\n        data.alt = meta.alt;\n      }\n      if (info.hasAccessibilityOptions) {\n        data.isDecorative = meta.isDecorative || data.isDecorative || false;\n      }\n      if (info.hasImageTitle && isString(meta.title)) {\n        data.title = meta.title;\n      }\n      if (info.hasDimensions) {\n        if (isString(meta.width)) {\n          data.dimensions.width = meta.width;\n        }\n        if (isString(meta.height)) {\n          data.dimensions.height = meta.height;\n        }\n      }\n      if (isString(meta.class)) {\n        ListUtils.findEntry(info.classList, meta.class).each(entry => {\n          data.classes = entry.value;\n        });\n      }\n      if (info.hasImageCaption) {\n        if (isBoolean(meta.caption)) {\n          data.caption = meta.caption;\n        }\n      }\n      if (info.hasAdvTab) {\n        if (isString(meta.style)) {\n          data.style = meta.style;\n        }\n        if (isString(meta.vspace)) {\n          data.vspace = meta.vspace;\n        }\n        if (isString(meta.border)) {\n          data.border = meta.border;\n        }\n        if (isString(meta.hspace)) {\n          data.hspace = meta.hspace;\n        }\n        if (isString(meta.borderstyle)) {\n          data.borderstyle = meta.borderstyle;\n        }\n      }\n    };\n    const formFillFromMeta = (info, api) => {\n      const data = api.getData();\n      const meta = data.src.meta;\n      if (meta !== undefined) {\n        const newData = deepMerge({}, data);\n        formFillFromMeta2(info, newData, meta);\n        api.setData(newData);\n      }\n    };\n    const calculateImageSize = (helpers, info, state, api) => {\n      const data = api.getData();\n      const url = data.src.value;\n      const meta = data.src.meta || {};\n      if (!meta.width && !meta.height && info.hasDimensions) {\n        if (isNotEmpty(url)) {\n          helpers.imageSize(url).then(size => {\n            if (state.open) {\n              api.setData({\n                dimensions: size\n              });\n            }\n          }).catch(e => console.error(e));\n        } else {\n          api.setData({\n            dimensions: {\n              width: '',\n              height: ''\n            }\n          });\n        }\n      }\n    };\n    const updateImagesDropdown = (info, state, api) => {\n      const data = api.getData();\n      const image = ListUtils.findEntry(info.imageList, data.src.value);\n      state.prevImage = image;\n      api.setData({\n        images: image.map(entry => entry.value).getOr('')\n      });\n    };\n    const changeSrc = (helpers, info, state, api) => {\n      addPrependUrl(info, api);\n      formFillFromMeta(info, api);\n      calculateImageSize(helpers, info, state, api);\n      updateImagesDropdown(info, state, api);\n    };\n    const changeImages = (helpers, info, state, api) => {\n      const data = api.getData();\n      const image = ListUtils.findEntry(info.imageList, data.images);\n      image.each(img => {\n        const updateAlt = data.alt === '' || state.prevImage.map(image => image.text === data.alt).getOr(false);\n        if (updateAlt) {\n          if (img.value === '') {\n            api.setData({\n              src: img,\n              alt: state.prevAlt\n            });\n          } else {\n            api.setData({\n              src: img,\n              alt: img.text\n            });\n          }\n        } else {\n          api.setData({\n            src: img\n          });\n        }\n      });\n      state.prevImage = image;\n      changeSrc(helpers, info, state, api);\n    };\n    const changeFileInput = (helpers, info, state, api) => {\n      const data = api.getData();\n      api.block('Uploading image');\n      head(data.fileinput).fold(() => {\n        api.unblock();\n      }, file => {\n        const blobUri = URL.createObjectURL(file);\n        const finalize = () => {\n          api.unblock();\n          URL.revokeObjectURL(blobUri);\n        };\n        const updateSrcAndSwitchTab = url => {\n          api.setData({\n            src: {\n              value: url,\n              meta: {}\n            }\n          });\n          api.showTab('general');\n          changeSrc(helpers, info, state, api);\n        };\n        blobToDataUri(file).then(dataUrl => {\n          const blobInfo = helpers.createBlobCache(file, blobUri, dataUrl);\n          if (info.automaticUploads) {\n            helpers.uploadImage(blobInfo).then(result => {\n              updateSrcAndSwitchTab(result.url);\n              finalize();\n            }).catch(err => {\n              finalize();\n              helpers.alertErr(err);\n            });\n          } else {\n            helpers.addToBlobCache(blobInfo);\n            updateSrcAndSwitchTab(blobInfo.blobUri());\n            api.unblock();\n          }\n        });\n      });\n    };\n    const changeLibraryFileHandler = (helpers, info, state, api) => {\n      const data = api.getData();\n      api.block('Uploading image');\n      head(data.libraryfile).fold(() => {\n        api.unblock();\n      }, file => {\n        const blobUri = URL.createObjectURL(file);\n        const updateSrcAndSwitchTab = url => {\n          api.setData({\n            src: {\n              value: url,\n              meta: {}\n            }\n          });\n          api.showTab('general');\n          changeSrc(helpers, info, state, api);\n        };\n        blobToDataUri(file).then(dataUrl => {\n          const blobInfo = helpers.createBlobCache(file, blobUri, dataUrl);\n          helpers.addToBlobCache(blobInfo);\n          updateSrcAndSwitchTab(blobInfo.blobUri());\n          api.unblock();\n        });\n      });\n    };\n    const changeHandler = (helpers, info, state) => (api, evt) => {\n      if (evt.name === 'src') {\n        changeSrc(helpers, info, state, api);\n      } else if (evt.name === 'images') {\n        changeImages(helpers, info, state, api);\n      } else if (evt.name === 'alt') {\n        state.prevAlt = api.getData().alt;\n      } else if (evt.name === 'fileinput') {\n        changeFileInput(helpers, info, state, api);\n      } else if (evt.name === 'isDecorative') {\n        api.setEnabled('alt', !api.getData().isDecorative);\n      } else if (evt.name === 'libraryfile') {\n        changeLibraryFileHandler(helpers, info, state, api);\n      }\n    };\n    const actionHandler = (helpers, info, state) => (api, evt) => {\n      if (evt.name === 'librarysearch') {\n        const successCallback = filename => {\n          api.setData({\n            src: {\n              value: filename,\n              meta: {}\n            }\n          });\n          api.showTab('general');\n          changeSrc(helpers, info, state, api);\n        };\n        info.libraryTab.libraryFilePicker(helpers.getEditor(), successCallback);\n      }\n    };\n    const closeHandler = state => () => {\n      state.open = false;\n    };\n    const makeDialogBody = info => {\n      if (info.hasAdvTab || info.hasUploadUrl || info.hasUploadHandler) {\n        const tabPanel = {\n          type: 'tabpanel',\n          tabs: flatten([[MainTab.makeTab(info)], info.hasAdvTab ? [AdvTab.makeTab(info)] : [], info.hasUploadTab && (info.hasUploadUrl || info.hasUploadHandler) ? [UploadTab.makeTab(info)] : [], info.libraryTab.showLibraryTab ? [LibraryTab.makeTab(info)] : []])\n        };\n        return tabPanel;\n      } else {\n        const panel = {\n          type: 'panel',\n          items: MainTab.makeItems(info)\n        };\n        return panel;\n      }\n    };\n    const submitHandler = (editor, info, helpers) => api => {\n      const data = deepMerge(fromImageData(info.image), api.getData());\n      const finalData = {\n        ...data,\n        style: getStyleValue(helpers.normalizeCss, toImageData(data, false))\n      };\n      editor.execCommand('mceUpdateImage', false, toImageData(finalData, info.hasAccessibilityOptions));\n      editor.editorUpload.uploadImagesAuto();\n      api.close();\n    };\n    const imageSize = editor => url => {\n      if (!isSafeImageUrl(editor, url)) {\n        return Promise.resolve({\n          width: '',\n          height: ''\n        });\n      } else {\n        return getImageSize(editor.documentBaseURI.toAbsolute(url)).then(dimensions => ({\n          width: String(dimensions.width),\n          height: String(dimensions.height)\n        }));\n      }\n    };\n    const createBlobCache = editor => (file, blobUri, dataUrl) => {\n      var _a;\n      return editor.editorUpload.blobCache.create({\n        blob: file,\n        blobUri,\n        name: (_a = file.name) === null || _a === void 0 ? void 0 : _a.replace(/\\.[^\\.]+$/, ''),\n        filename: file.name,\n        base64: dataUrl.split(',')[1]\n      });\n    };\n    const addToBlobCache = editor => blobInfo => {\n      editor.editorUpload.blobCache.add(blobInfo);\n    };\n    const alertErr = editor => message => {\n      editor.windowManager.alert(message);\n    };\n    const normalizeCss = editor => cssText => normalizeCss$1(editor, cssText);\n    const parseStyle = editor => cssText => editor.dom.parseStyle(cssText);\n    const serializeStyle = editor => (stylesArg, name) => editor.dom.serializeStyle(stylesArg, name);\n    const uploadImage = editor => blobInfo => global$1(editor).upload([blobInfo], false).then(results => {\n      var _a;\n      if (results.length === 0) {\n        return Promise.reject('Failed to upload image');\n      } else if (results[0].status === false) {\n        return Promise.reject((_a = results[0].error) === null || _a === void 0 ? void 0 : _a.message);\n      } else {\n        return results[0];\n      }\n    });\n    const Dialog = editor => {\n      const helpers = {\n        imageSize: imageSize(editor),\n        addToBlobCache: addToBlobCache(editor),\n        createBlobCache: createBlobCache(editor),\n        alertErr: alertErr(editor),\n        normalizeCss: normalizeCss(editor),\n        parseStyle: parseStyle(editor),\n        serializeStyle: serializeStyle(editor),\n        uploadImage: uploadImage(editor),\n        getEditor: () => editor\n      };\n      const open = () => {\n        collect(editor).then(info => {\n          const state = createState(info);\n          return {\n            title: 'Insert/Edit Image',\n            size: 'normal',\n            body: makeDialogBody(info),\n            buttons: [{\n              type: 'cancel',\n              name: 'cancel',\n              text: 'Cancel'\n            }, {\n              type: 'submit',\n              name: 'save',\n              text: 'Save',\n              primary: true\n            }],\n            initialData: fromImageData(info.image),\n            onSubmit: submitHandler(editor, info, helpers),\n            onChange: changeHandler(helpers, info, state),\n            onAction: actionHandler(helpers, info, state),\n            onClose: closeHandler(state)\n          };\n        }).then(editor.windowManager.open);\n      };\n      return {\n        open\n      };\n    };\n\n    const register$1 = editor => {\n      editor.addCommand('mceImage', Dialog(editor).open);\n      editor.addCommand('mceUpdateImage', (_ui, data) => {\n        editor.undoManager.transact(() => insertOrUpdateImage(editor, data));\n      });\n    };\n\n    const hasImageClass = node => {\n      const className = node.attr('class');\n      return isNonNullable(className) && /\\bimage\\b/.test(className);\n    };\n    const toggleContentEditableState = state => nodes => {\n      let i = nodes.length;\n      const toggleContentEditable = node => {\n        node.attr('contenteditable', state ? 'true' : null);\n      };\n      while (i--) {\n        const node = nodes[i];\n        if (hasImageClass(node)) {\n          node.attr('contenteditable', state ? 'false' : null);\n          global.each(node.getAll('figcaption'), toggleContentEditable);\n        }\n      }\n    };\n    const setup = editor => {\n      editor.on('PreInit', () => {\n        editor.parser.addNodeFilter('figure', toggleContentEditableState(true));\n        editor.serializer.addNodeFilter('figure', toggleContentEditableState(false));\n      });\n    };\n\n    const onSetupEditable = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const register = editor => {\n      editor.ui.registry.addToggleButton('image', {\n        icon: 'image',\n        tooltip: 'Insert/edit image',\n        onAction: Dialog(editor).open,\n        onSetup: buttonApi => {\n          buttonApi.setActive(isNonNullable(getSelectedImage(editor)));\n          const unbindSelectorChanged = editor.selection.selectorChangedWithUnbind('img:not([data-mce-object]):not([data-mce-placeholder]),figure.image', buttonApi.setActive).unbind;\n          const unbindEditable = onSetupEditable(editor)(buttonApi);\n          return () => {\n            unbindSelectorChanged();\n            unbindEditable();\n          };\n        }\n      });\n      editor.ui.registry.addMenuItem('image', {\n        icon: 'image',\n        text: 'Image...',\n        onAction: Dialog(editor).open,\n        onSetup: onSetupEditable(editor)\n      });\n      editor.ui.registry.addContextMenu('image', {\n        update: element => editor.selection.isEditable() && (isFigure(element) || isImage(element) && !isPlaceholderImage(element)) ? ['image'] : []\n      });\n    };\n\n    var Plugin = () => {\n      global$4.add('image', editor => {\n        setup(editor);\n        register$2(editor);\n        register(editor);\n        register$1(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('insertdatetime_dateformat', {\n        processor: 'string',\n        default: editor.translate('%Y-%m-%d')\n      });\n      registerOption('insertdatetime_timeformat', {\n        processor: 'string',\n        default: editor.translate('%H:%M:%S')\n      });\n      registerOption('insertdatetime_formats', {\n        processor: 'string[]',\n        default: ['%H:%M:%S', '%Y-%m-%d', '%I:%M:%S %p', '%D']\n      });\n      registerOption('insertdatetime_element', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const getDateFormat = option('insertdatetime_dateformat');\n    const getTimeFormat = option('insertdatetime_timeformat');\n    const getFormats = option('insertdatetime_formats');\n    const shouldInsertTimeElement = option('insertdatetime_element');\n    const getDefaultDateTime = editor => {\n      const formats = getFormats(editor);\n      return formats.length > 0 ? formats[0] : getTimeFormat(editor);\n    };\n\n    const daysShort = 'Sun Mon Tue Wed Thu Fri Sat Sun'.split(' ');\n    const daysLong = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' ');\n    const monthsShort = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ');\n    const monthsLong = 'January February March April May June July August September October November December'.split(' ');\n    const addZeros = (value, len) => {\n      value = '' + value;\n      if (value.length < len) {\n        for (let i = 0; i < len - value.length; i++) {\n          value = '0' + value;\n        }\n      }\n      return value;\n    };\n    const getDateTime = (editor, fmt, date = new Date()) => {\n      fmt = fmt.replace('%D', '%m/%d/%Y');\n      fmt = fmt.replace('%r', '%I:%M:%S %p');\n      fmt = fmt.replace('%Y', '' + date.getFullYear());\n      fmt = fmt.replace('%y', '' + date.getYear());\n      fmt = fmt.replace('%m', addZeros(date.getMonth() + 1, 2));\n      fmt = fmt.replace('%d', addZeros(date.getDate(), 2));\n      fmt = fmt.replace('%H', '' + addZeros(date.getHours(), 2));\n      fmt = fmt.replace('%M', '' + addZeros(date.getMinutes(), 2));\n      fmt = fmt.replace('%S', '' + addZeros(date.getSeconds(), 2));\n      fmt = fmt.replace('%I', '' + ((date.getHours() + 11) % 12 + 1));\n      fmt = fmt.replace('%p', '' + (date.getHours() < 12 ? 'AM' : 'PM'));\n      fmt = fmt.replace('%B', '' + editor.translate(monthsLong[date.getMonth()]));\n      fmt = fmt.replace('%b', '' + editor.translate(monthsShort[date.getMonth()]));\n      fmt = fmt.replace('%A', '' + editor.translate(daysLong[date.getDay()]));\n      fmt = fmt.replace('%a', '' + editor.translate(daysShort[date.getDay()]));\n      fmt = fmt.replace('%%', '%');\n      return fmt;\n    };\n    const updateElement = (editor, timeElm, computerTime, userTime) => {\n      const newTimeElm = editor.dom.create('time', {\n        datetime: computerTime\n      }, userTime);\n      editor.dom.replace(newTimeElm, timeElm);\n      editor.selection.select(newTimeElm, true);\n      editor.selection.collapse(false);\n    };\n    const insertDateTime = (editor, format) => {\n      if (shouldInsertTimeElement(editor)) {\n        const userTime = getDateTime(editor, format);\n        let computerTime;\n        if (/%[HMSIp]/.test(format)) {\n          computerTime = getDateTime(editor, '%Y-%m-%dT%H:%M');\n        } else {\n          computerTime = getDateTime(editor, '%Y-%m-%d');\n        }\n        const timeElm = editor.dom.getParent(editor.selection.getStart(), 'time');\n        if (timeElm) {\n          updateElement(editor, timeElm, computerTime, userTime);\n        } else {\n          editor.insertContent('<time datetime=\"' + computerTime + '\">' + userTime + '</time>');\n        }\n      } else {\n        editor.insertContent(getDateTime(editor, format));\n      }\n    };\n\n    const register$1 = editor => {\n      editor.addCommand('mceInsertDate', (_ui, value) => {\n        insertDateTime(editor, value !== null && value !== void 0 ? value : getDateFormat(editor));\n      });\n      editor.addCommand('mceInsertTime', (_ui, value) => {\n        insertDateTime(editor, value !== null && value !== void 0 ? value : getTimeFormat(editor));\n      });\n    };\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const onSetupEditable = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const register = editor => {\n      const formats = getFormats(editor);\n      const defaultFormat = Cell(getDefaultDateTime(editor));\n      const insertDateTime = format => editor.execCommand('mceInsertDate', false, format);\n      editor.ui.registry.addSplitButton('insertdatetime', {\n        icon: 'insert-time',\n        tooltip: 'Insert date/time',\n        select: value => value === defaultFormat.get(),\n        fetch: done => {\n          done(global.map(formats, format => ({\n            type: 'choiceitem',\n            text: getDateTime(editor, format),\n            value: format\n          })));\n        },\n        onAction: _api => {\n          insertDateTime(defaultFormat.get());\n        },\n        onItemAction: (_api, value) => {\n          defaultFormat.set(value);\n          insertDateTime(value);\n        },\n        onSetup: onSetupEditable(editor)\n      });\n      const makeMenuItemHandler = format => () => {\n        defaultFormat.set(format);\n        insertDateTime(format);\n      };\n      editor.ui.registry.addNestedMenuItem('insertdatetime', {\n        icon: 'insert-time',\n        text: 'Date/time',\n        getSubmenuItems: () => global.map(formats, format => ({\n          type: 'menuitem',\n          text: getDateTime(editor, format),\n          onAction: makeMenuItemHandler(format)\n        })),\n        onSetup: onSetupEditable(editor)\n      });\n    };\n\n    var Plugin = () => {\n      global$1.add('insertdatetime', editor => {\n        register$2(editor);\n        register$1(editor);\n        register(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq = t => a => t === a;\n    const isString = isType('string');\n    const isObject = isType('object');\n    const isArray = isType('array');\n    const isNull = eq(null);\n    const isBoolean = isSimpleType('boolean');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isArrayOf = (value, pred) => {\n      if (isArray(value)) {\n        for (let i = 0, len = value.length; i < len; ++i) {\n          if (!pred(value[i])) {\n            return false;\n          }\n        }\n        return true;\n      }\n      return false;\n    };\n\n    const noop = () => {};\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const tripleEquals = (a, b) => {\n      return a === b;\n    };\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const nativeIndexOf = Array.prototype.indexOf;\n    const nativePush = Array.prototype.push;\n    const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n    const contains = (xs, x) => rawIndexOf(xs, x) > -1;\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const foldl = (xs, f, acc) => {\n      each$1(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const bind = (xs, f) => flatten(map(xs, f));\n    const findMap = (arr, f) => {\n      for (let i = 0; i < arr.length; i++) {\n        const r = f(arr[i], i);\n        if (r.isSome()) {\n          return r;\n        }\n      }\n      return Optional.none();\n    };\n\n    const is = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n    const cat = arr => {\n      const r = [];\n      const push = x => {\n        r.push(x);\n      };\n      for (let i = 0; i < arr.length; i++) {\n        arr[i].each(push);\n      }\n      return r;\n    };\n    const someIf = (b, a) => b ? Optional.some(a) : Optional.none();\n\n    const option = name => editor => editor.options.get(name);\n    const register$1 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('link_assume_external_targets', {\n        processor: value => {\n          const valid = isString(value) || isBoolean(value);\n          if (valid) {\n            if (value === true) {\n              return {\n                value: 1,\n                valid\n              };\n            } else if (value === 'http' || value === 'https') {\n              return {\n                value,\n                valid\n              };\n            } else {\n              return {\n                value: 0,\n                valid\n              };\n            }\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a string or a boolean.'\n            };\n          }\n        },\n        default: false\n      });\n      registerOption('link_context_toolbar', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('link_list', {\n        processor: value => isString(value) || isFunction(value) || isArrayOf(value, isObject)\n      });\n      registerOption('link_default_target', {\n        processor: 'string'\n      });\n      registerOption('link_default_protocol', {\n        processor: 'string',\n        default: 'https'\n      });\n      registerOption('link_target_list', {\n        processor: value => isBoolean(value) || isArrayOf(value, isObject),\n        default: true\n      });\n      registerOption('link_rel_list', {\n        processor: 'object[]',\n        default: []\n      });\n      registerOption('link_class_list', {\n        processor: 'object[]',\n        default: []\n      });\n      registerOption('link_title', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('allow_unsafe_link_target', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('link_quicklink', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const assumeExternalTargets = option('link_assume_external_targets');\n    const hasContextToolbar = option('link_context_toolbar');\n    const getLinkList = option('link_list');\n    const getDefaultLinkTarget = option('link_default_target');\n    const getDefaultLinkProtocol = option('link_default_protocol');\n    const getTargetList = option('link_target_list');\n    const getRelList = option('link_rel_list');\n    const getLinkClassList = option('link_class_list');\n    const shouldShowLinkTitle = option('link_title');\n    const allowUnsafeLinkTarget = option('allow_unsafe_link_target');\n    const useQuickLink = option('link_quicklink');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const getValue = item => isString(item.value) ? item.value : '';\n    const getText = item => {\n      if (isString(item.text)) {\n        return item.text;\n      } else if (isString(item.title)) {\n        return item.title;\n      } else {\n        return '';\n      }\n    };\n    const sanitizeList = (list, extractValue) => {\n      const out = [];\n      global$4.each(list, item => {\n        const text = getText(item);\n        if (item.menu !== undefined) {\n          const items = sanitizeList(item.menu, extractValue);\n          out.push({\n            text,\n            items\n          });\n        } else {\n          const value = extractValue(item);\n          out.push({\n            text,\n            value\n          });\n        }\n      });\n      return out;\n    };\n    const sanitizeWith = (extracter = getValue) => list => Optional.from(list).map(list => sanitizeList(list, extracter));\n    const sanitize = list => sanitizeWith(getValue)(list);\n    const createUi = (name, label) => items => ({\n      name,\n      type: 'listbox',\n      label,\n      items\n    });\n    const ListOptions = {\n      sanitize,\n      sanitizeWith,\n      createUi,\n      getValue\n    };\n\n    const keys = Object.keys;\n    const hasOwnProperty = Object.hasOwnProperty;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const objAcc = r => (x, i) => {\n      r[i] = x;\n    };\n    const internalFilter = (obj, pred, onTrue, onFalse) => {\n      each(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const filter = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\n    const has = (obj, key) => hasOwnProperty.call(obj, key);\n    const hasNonNullableKey = (obj, key) => has(obj, key) && obj[key] !== undefined && obj[key] !== null;\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.URI');\n\n    const isAnchor = elm => isNonNullable(elm) && elm.nodeName.toLowerCase() === 'a';\n    const isLink = elm => isAnchor(elm) && !!getHref(elm);\n    const collectNodesInRange = (rng, predicate) => {\n      if (rng.collapsed) {\n        return [];\n      } else {\n        const contents = rng.cloneContents();\n        const firstChild = contents.firstChild;\n        const walker = new global$3(firstChild, contents);\n        const elements = [];\n        let current = firstChild;\n        do {\n          if (predicate(current)) {\n            elements.push(current);\n          }\n        } while (current = walker.next());\n        return elements;\n      }\n    };\n    const hasProtocol = url => /^\\w+:/i.test(url);\n    const getHref = elm => {\n      var _a, _b;\n      return (_b = (_a = elm.getAttribute('data-mce-href')) !== null && _a !== void 0 ? _a : elm.getAttribute('href')) !== null && _b !== void 0 ? _b : '';\n    };\n    const applyRelTargetRules = (rel, isUnsafe) => {\n      const rules = ['noopener'];\n      const rels = rel ? rel.split(/\\s+/) : [];\n      const toString = rels => global$4.trim(rels.sort().join(' '));\n      const addTargetRules = rels => {\n        rels = removeTargetRules(rels);\n        return rels.length > 0 ? rels.concat(rules) : rules;\n      };\n      const removeTargetRules = rels => rels.filter(val => global$4.inArray(rules, val) === -1);\n      const newRels = isUnsafe ? addTargetRules(rels) : removeTargetRules(rels);\n      return newRels.length > 0 ? toString(newRels) : '';\n    };\n    const trimCaretContainers = text => text.replace(/\\uFEFF/g, '');\n    const getAnchorElement = (editor, selectedElm) => {\n      selectedElm = selectedElm || getLinksInSelection(editor.selection.getRng())[0] || editor.selection.getNode();\n      if (isImageFigure(selectedElm)) {\n        return Optional.from(editor.dom.select('a[href]', selectedElm)[0]);\n      } else {\n        return Optional.from(editor.dom.getParent(selectedElm, 'a[href]'));\n      }\n    };\n    const isInAnchor = (editor, selectedElm) => getAnchorElement(editor, selectedElm).isSome();\n    const getAnchorText = (selection, anchorElm) => {\n      const text = anchorElm.fold(() => selection.getContent({\n        format: 'text'\n      }), anchorElm => anchorElm.innerText || anchorElm.textContent || '');\n      return trimCaretContainers(text);\n    };\n    const getLinksInSelection = rng => collectNodesInRange(rng, isLink);\n    const getLinks$1 = elements => global$4.grep(elements, isLink);\n    const hasLinks = elements => getLinks$1(elements).length > 0;\n    const hasLinksInSelection = rng => getLinksInSelection(rng).length > 0;\n    const isOnlyTextSelected = editor => {\n      const inlineTextElements = editor.schema.getTextInlineElements();\n      const isElement = elm => elm.nodeType === 1 && !isAnchor(elm) && !has(inlineTextElements, elm.nodeName.toLowerCase());\n      const isInBlockAnchor = getAnchorElement(editor).exists(anchor => anchor.hasAttribute('data-mce-block'));\n      if (isInBlockAnchor) {\n        return false;\n      }\n      const rng = editor.selection.getRng();\n      if (!rng.collapsed) {\n        const elements = collectNodesInRange(rng, isElement);\n        return elements.length === 0;\n      } else {\n        return true;\n      }\n    };\n    const isImageFigure = elm => isNonNullable(elm) && elm.nodeName === 'FIGURE' && /\\bimage\\b/i.test(elm.className);\n    const getLinkAttrs = data => {\n      const attrs = ['title', 'rel', 'class', 'target'];\n      return foldl(attrs, (acc, key) => {\n        data[key].each(value => {\n          acc[key] = value.length > 0 ? value : null;\n        });\n        return acc;\n      }, {\n        href: data.href\n      });\n    };\n    const handleExternalTargets = (href, assumeExternalTargets) => {\n      if ((assumeExternalTargets === 'http' || assumeExternalTargets === 'https') && !hasProtocol(href)) {\n        return assumeExternalTargets + '://' + href;\n      }\n      return href;\n    };\n    const applyLinkOverrides = (editor, linkAttrs) => {\n      const newLinkAttrs = {\n        ...linkAttrs\n      };\n      if (getRelList(editor).length === 0 && !allowUnsafeLinkTarget(editor)) {\n        const newRel = applyRelTargetRules(newLinkAttrs.rel, newLinkAttrs.target === '_blank');\n        newLinkAttrs.rel = newRel ? newRel : null;\n      }\n      if (Optional.from(newLinkAttrs.target).isNone() && getTargetList(editor) === false) {\n        newLinkAttrs.target = getDefaultLinkTarget(editor);\n      }\n      newLinkAttrs.href = handleExternalTargets(newLinkAttrs.href, assumeExternalTargets(editor));\n      return newLinkAttrs;\n    };\n    const updateLink = (editor, anchorElm, text, linkAttrs) => {\n      text.each(text => {\n        if (has(anchorElm, 'innerText')) {\n          anchorElm.innerText = text;\n        } else {\n          anchorElm.textContent = text;\n        }\n      });\n      editor.dom.setAttribs(anchorElm, linkAttrs);\n      editor.selection.select(anchorElm);\n    };\n    const createLink = (editor, selectedElm, text, linkAttrs) => {\n      const dom = editor.dom;\n      if (isImageFigure(selectedElm)) {\n        linkImageFigure(dom, selectedElm, linkAttrs);\n      } else {\n        text.fold(() => {\n          editor.execCommand('mceInsertLink', false, linkAttrs);\n        }, text => {\n          editor.insertContent(dom.createHTML('a', linkAttrs, dom.encode(text)));\n        });\n      }\n    };\n    const linkDomMutation = (editor, attachState, data) => {\n      const selectedElm = editor.selection.getNode();\n      const anchorElm = getAnchorElement(editor, selectedElm);\n      const linkAttrs = applyLinkOverrides(editor, getLinkAttrs(data));\n      editor.undoManager.transact(() => {\n        if (data.href === attachState.href) {\n          attachState.attach();\n        }\n        anchorElm.fold(() => {\n          createLink(editor, selectedElm, data.text, linkAttrs);\n        }, elm => {\n          editor.focus();\n          updateLink(editor, elm, data.text, linkAttrs);\n        });\n      });\n    };\n    const unlinkSelection = editor => {\n      const dom = editor.dom,\n        selection = editor.selection;\n      const bookmark = selection.getBookmark();\n      const rng = selection.getRng().cloneRange();\n      const startAnchorElm = dom.getParent(rng.startContainer, 'a[href]', editor.getBody());\n      const endAnchorElm = dom.getParent(rng.endContainer, 'a[href]', editor.getBody());\n      if (startAnchorElm) {\n        rng.setStartBefore(startAnchorElm);\n      }\n      if (endAnchorElm) {\n        rng.setEndAfter(endAnchorElm);\n      }\n      selection.setRng(rng);\n      editor.execCommand('unlink');\n      selection.moveToBookmark(bookmark);\n    };\n    const unlinkDomMutation = editor => {\n      editor.undoManager.transact(() => {\n        const node = editor.selection.getNode();\n        if (isImageFigure(node)) {\n          unlinkImageFigure(editor, node);\n        } else {\n          unlinkSelection(editor);\n        }\n        editor.focus();\n      });\n    };\n    const unwrapOptions = data => {\n      const {\n        class: cls,\n        href,\n        rel,\n        target,\n        text,\n        title\n      } = data;\n      return filter({\n        class: cls.getOrNull(),\n        href,\n        rel: rel.getOrNull(),\n        target: target.getOrNull(),\n        text: text.getOrNull(),\n        title: title.getOrNull()\n      }, (v, _k) => isNull(v) === false);\n    };\n    const sanitizeData = (editor, data) => {\n      const getOption = editor.options.get;\n      const uriOptions = {\n        allow_html_data_urls: getOption('allow_html_data_urls'),\n        allow_script_urls: getOption('allow_script_urls'),\n        allow_svg_data_urls: getOption('allow_svg_data_urls')\n      };\n      const href = data.href;\n      return {\n        ...data,\n        href: global$2.isDomSafe(href, 'a', uriOptions) ? href : ''\n      };\n    };\n    const link = (editor, attachState, data) => {\n      const sanitizedData = sanitizeData(editor, data);\n      editor.hasPlugin('rtc', true) ? editor.execCommand('createlink', false, unwrapOptions(sanitizedData)) : linkDomMutation(editor, attachState, sanitizedData);\n    };\n    const unlink = editor => {\n      editor.hasPlugin('rtc', true) ? editor.execCommand('unlink') : unlinkDomMutation(editor);\n    };\n    const unlinkImageFigure = (editor, fig) => {\n      var _a;\n      const img = editor.dom.select('img', fig)[0];\n      if (img) {\n        const a = editor.dom.getParents(img, 'a[href]', fig)[0];\n        if (a) {\n          (_a = a.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(img, a);\n          editor.dom.remove(a);\n        }\n      }\n    };\n    const linkImageFigure = (dom, fig, attrs) => {\n      var _a;\n      const img = dom.select('img', fig)[0];\n      if (img) {\n        const a = dom.create('a', attrs);\n        (_a = img.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(a, img);\n        a.appendChild(img);\n      }\n    };\n\n    const isListGroup = item => hasNonNullableKey(item, 'items');\n    const findTextByValue = (value, catalog) => findMap(catalog, item => {\n      if (isListGroup(item)) {\n        return findTextByValue(value, item.items);\n      } else {\n        return someIf(item.value === value, item);\n      }\n    });\n    const getDelta = (persistentText, fieldName, catalog, data) => {\n      const value = data[fieldName];\n      const hasPersistentText = persistentText.length > 0;\n      return value !== undefined ? findTextByValue(value, catalog).map(i => ({\n        url: {\n          value: i.value,\n          meta: {\n            text: hasPersistentText ? persistentText : i.text,\n            attach: noop\n          }\n        },\n        text: hasPersistentText ? persistentText : i.text\n      })) : Optional.none();\n    };\n    const findCatalog = (catalogs, fieldName) => {\n      if (fieldName === 'link') {\n        return catalogs.link;\n      } else if (fieldName === 'anchor') {\n        return catalogs.anchor;\n      } else {\n        return Optional.none();\n      }\n    };\n    const init = (initialData, linkCatalog) => {\n      const persistentData = {\n        text: initialData.text,\n        title: initialData.title\n      };\n      const getTitleFromUrlChange = url => {\n        var _a;\n        return someIf(persistentData.title.length <= 0, Optional.from((_a = url.meta) === null || _a === void 0 ? void 0 : _a.title).getOr(''));\n      };\n      const getTextFromUrlChange = url => {\n        var _a;\n        return someIf(persistentData.text.length <= 0, Optional.from((_a = url.meta) === null || _a === void 0 ? void 0 : _a.text).getOr(url.value));\n      };\n      const onUrlChange = data => {\n        const text = getTextFromUrlChange(data.url);\n        const title = getTitleFromUrlChange(data.url);\n        if (text.isSome() || title.isSome()) {\n          return Optional.some({\n            ...text.map(text => ({\n              text\n            })).getOr({}),\n            ...title.map(title => ({\n              title\n            })).getOr({})\n          });\n        } else {\n          return Optional.none();\n        }\n      };\n      const onCatalogChange = (data, change) => {\n        const catalog = findCatalog(linkCatalog, change).getOr([]);\n        return getDelta(persistentData.text, change, catalog, data);\n      };\n      const onChange = (getData, change) => {\n        const name = change.name;\n        if (name === 'url') {\n          return onUrlChange(getData());\n        } else if (contains(['anchor', 'link'], name)) {\n          return onCatalogChange(getData(), name);\n        } else if (name === 'text' || name === 'title') {\n          persistentData[name] = getData()[name];\n          return Optional.none();\n        } else {\n          return Optional.none();\n        }\n      };\n      return {\n        onChange\n      };\n    };\n    const DialogChanges = {\n      init,\n      getDelta\n    };\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n    const delayedConfirm = (editor, message, callback) => {\n      const rng = editor.selection.getRng();\n      global$1.setEditorTimeout(editor, () => {\n        editor.windowManager.confirm(message, state => {\n          editor.selection.setRng(rng);\n          callback(state);\n        });\n      });\n    };\n    const tryEmailTransform = data => {\n      const url = data.href;\n      const suggestMailTo = url.indexOf('@') > 0 && url.indexOf('/') === -1 && url.indexOf('mailto:') === -1;\n      return suggestMailTo ? Optional.some({\n        message: 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?',\n        preprocess: oldData => ({\n          ...oldData,\n          href: 'mailto:' + url\n        })\n      }) : Optional.none();\n    };\n    const tryProtocolTransform = (assumeExternalTargets, defaultLinkProtocol) => data => {\n      const url = data.href;\n      const suggestProtocol = assumeExternalTargets === 1 && !hasProtocol(url) || assumeExternalTargets === 0 && /^\\s*www(\\.|\\d\\.)/i.test(url);\n      return suggestProtocol ? Optional.some({\n        message: \"The URL you entered seems to be an external link. Do you want to add the required \".concat(defaultLinkProtocol, \":// prefix?\"),\n        preprocess: oldData => ({\n          ...oldData,\n          href: defaultLinkProtocol + '://' + url\n        })\n      }) : Optional.none();\n    };\n    const preprocess = (editor, data) => findMap([tryEmailTransform, tryProtocolTransform(assumeExternalTargets(editor), getDefaultLinkProtocol(editor))], f => f(data)).fold(() => Promise.resolve(data), transform => new Promise(callback => {\n      delayedConfirm(editor, transform.message, state => {\n        callback(state ? transform.preprocess(data) : data);\n      });\n    }));\n    const DialogConfirms = {\n      preprocess\n    };\n\n    const getAnchors = editor => {\n      const anchorNodes = editor.dom.select('a:not([href])');\n      const anchors = bind(anchorNodes, anchor => {\n        const id = anchor.name || anchor.id;\n        return id ? [{\n          text: id,\n          value: '#' + id\n        }] : [];\n      });\n      return anchors.length > 0 ? Optional.some([{\n        text: 'None',\n        value: ''\n      }].concat(anchors)) : Optional.none();\n    };\n    const AnchorListOptions = {\n      getAnchors\n    };\n\n    const getClasses = editor => {\n      const list = getLinkClassList(editor);\n      if (list.length > 0) {\n        return ListOptions.sanitize(list);\n      }\n      return Optional.none();\n    };\n    const ClassListOptions = {\n      getClasses\n    };\n\n    const parseJson = text => {\n      try {\n        return Optional.some(JSON.parse(text));\n      } catch (err) {\n        return Optional.none();\n      }\n    };\n    const getLinks = editor => {\n      const extractor = item => editor.convertURL(item.value || item.url || '', 'href');\n      const linkList = getLinkList(editor);\n      return new Promise(resolve => {\n        if (isString(linkList)) {\n          fetch(linkList).then(res => res.ok ? res.text().then(parseJson) : Promise.reject()).then(resolve, () => resolve(Optional.none()));\n        } else if (isFunction(linkList)) {\n          linkList(output => resolve(Optional.some(output)));\n        } else {\n          resolve(Optional.from(linkList));\n        }\n      }).then(optItems => optItems.bind(ListOptions.sanitizeWith(extractor)).map(items => {\n        if (items.length > 0) {\n          const noneItem = [{\n            text: 'None',\n            value: ''\n          }];\n          return noneItem.concat(items);\n        } else {\n          return items;\n        }\n      }));\n    };\n    const LinkListOptions = {\n      getLinks\n    };\n\n    const getRels = (editor, initialTarget) => {\n      const list = getRelList(editor);\n      if (list.length > 0) {\n        const isTargetBlank = is(initialTarget, '_blank');\n        const enforceSafe = allowUnsafeLinkTarget(editor) === false;\n        const safeRelExtractor = item => applyRelTargetRules(ListOptions.getValue(item), isTargetBlank);\n        const sanitizer = enforceSafe ? ListOptions.sanitizeWith(safeRelExtractor) : ListOptions.sanitize;\n        return sanitizer(list);\n      }\n      return Optional.none();\n    };\n    const RelOptions = {\n      getRels\n    };\n\n    const fallbacks = [{\n      text: 'Current window',\n      value: ''\n    }, {\n      text: 'New window',\n      value: '_blank'\n    }];\n    const getTargets = editor => {\n      const list = getTargetList(editor);\n      if (isArray(list)) {\n        return ListOptions.sanitize(list).orThunk(() => Optional.some(fallbacks));\n      } else if (list === false) {\n        return Optional.none();\n      }\n      return Optional.some(fallbacks);\n    };\n    const TargetOptions = {\n      getTargets\n    };\n\n    const nonEmptyAttr = (dom, elem, name) => {\n      const val = dom.getAttrib(elem, name);\n      return val !== null && val.length > 0 ? Optional.some(val) : Optional.none();\n    };\n    const extractFromAnchor = (editor, anchor) => {\n      const dom = editor.dom;\n      const onlyText = isOnlyTextSelected(editor);\n      const text = onlyText ? Optional.some(getAnchorText(editor.selection, anchor)) : Optional.none();\n      const url = anchor.bind(anchorElm => Optional.from(dom.getAttrib(anchorElm, 'href')));\n      const target = anchor.bind(anchorElm => Optional.from(dom.getAttrib(anchorElm, 'target')));\n      const rel = anchor.bind(anchorElm => nonEmptyAttr(dom, anchorElm, 'rel'));\n      const linkClass = anchor.bind(anchorElm => nonEmptyAttr(dom, anchorElm, 'class'));\n      const title = anchor.bind(anchorElm => nonEmptyAttr(dom, anchorElm, 'title'));\n      return {\n        url,\n        text,\n        title,\n        target,\n        rel,\n        linkClass\n      };\n    };\n    const collect = (editor, linkNode) => LinkListOptions.getLinks(editor).then(links => {\n      const anchor = extractFromAnchor(editor, linkNode);\n      return {\n        anchor,\n        catalogs: {\n          targets: TargetOptions.getTargets(editor),\n          rels: RelOptions.getRels(editor, anchor.target),\n          classes: ClassListOptions.getClasses(editor),\n          anchor: AnchorListOptions.getAnchors(editor),\n          link: links\n        },\n        optNode: linkNode,\n        flags: {\n          titleEnabled: shouldShowLinkTitle(editor)\n        }\n      };\n    });\n    const DialogInfo = {\n      collect\n    };\n\n    const handleSubmit = (editor, info) => api => {\n      const data = api.getData();\n      if (!data.url.value) {\n        unlink(editor);\n        api.close();\n        return;\n      }\n      const getChangedValue = key => Optional.from(data[key]).filter(value => !is(info.anchor[key], value));\n      const changedData = {\n        href: data.url.value,\n        text: getChangedValue('text'),\n        target: getChangedValue('target'),\n        rel: getChangedValue('rel'),\n        class: getChangedValue('linkClass'),\n        title: getChangedValue('title')\n      };\n      const attachState = {\n        href: data.url.value,\n        attach: data.url.meta !== undefined && data.url.meta.attach ? data.url.meta.attach : noop\n      };\n      DialogConfirms.preprocess(editor, changedData).then(pData => {\n        link(editor, attachState, pData);\n      });\n      api.close();\n    };\n    const collectData = editor => {\n      const anchorNode = getAnchorElement(editor);\n      return DialogInfo.collect(editor, anchorNode);\n    };\n    const getInitialData = (info, defaultTarget) => {\n      const anchor = info.anchor;\n      const url = anchor.url.getOr('');\n      return {\n        url: {\n          value: url,\n          meta: {\n            original: {\n              value: url\n            }\n          }\n        },\n        text: anchor.text.getOr(''),\n        title: anchor.title.getOr(''),\n        anchor: url,\n        link: url,\n        rel: anchor.rel.getOr(''),\n        target: anchor.target.or(defaultTarget).getOr(''),\n        linkClass: anchor.linkClass.getOr('')\n      };\n    };\n    const makeDialog = (settings, onSubmit, editor) => {\n      const urlInput = [{\n        name: 'url',\n        type: 'urlinput',\n        filetype: 'file',\n        label: 'URL',\n        picker_text: 'Browse links'\n      }];\n      const displayText = settings.anchor.text.map(() => ({\n        name: 'text',\n        type: 'input',\n        label: 'Text to display'\n      })).toArray();\n      const titleText = settings.flags.titleEnabled ? [{\n        name: 'title',\n        type: 'input',\n        label: 'Title'\n      }] : [];\n      const defaultTarget = Optional.from(getDefaultLinkTarget(editor));\n      const initialData = getInitialData(settings, defaultTarget);\n      const catalogs = settings.catalogs;\n      const dialogDelta = DialogChanges.init(initialData, catalogs);\n      const body = {\n        type: 'panel',\n        items: flatten([urlInput, displayText, titleText, cat([catalogs.anchor.map(ListOptions.createUi('anchor', 'Anchors')), catalogs.rels.map(ListOptions.createUi('rel', 'Rel')), catalogs.targets.map(ListOptions.createUi('target', 'Open link in...')), catalogs.link.map(ListOptions.createUi('link', 'Link list')), catalogs.classes.map(ListOptions.createUi('linkClass', 'Class'))])])\n      };\n      return {\n        title: 'Insert/Edit Link',\n        size: 'normal',\n        body,\n        buttons: [{\n          type: 'cancel',\n          name: 'cancel',\n          text: 'Cancel'\n        }, {\n          type: 'submit',\n          name: 'save',\n          text: 'Save',\n          primary: true\n        }],\n        initialData,\n        onChange: (api, {\n          name\n        }) => {\n          dialogDelta.onChange(api.getData, {\n            name\n          }).each(newData => {\n            api.setData(newData);\n          });\n        },\n        onSubmit\n      };\n    };\n    const open$1 = editor => {\n      const data = collectData(editor);\n      data.then(info => {\n        const onSubmit = handleSubmit(editor, info);\n        return makeDialog(info, onSubmit, editor);\n      }).then(spec => {\n        editor.windowManager.open(spec);\n      });\n    };\n\n    const register = editor => {\n      editor.addCommand('mceLink', (_ui, value) => {\n        if ((value === null || value === void 0 ? void 0 : value.dialog) === true || !useQuickLink(editor)) {\n          open$1(editor);\n        } else {\n          editor.dispatch('contexttoolbar-show', {\n            toolbarKey: 'quicklink'\n          });\n        }\n      });\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    const appendClickRemove = (link, evt) => {\n      document.body.appendChild(link);\n      link.dispatchEvent(evt);\n      document.body.removeChild(link);\n    };\n    const open = url => {\n      const link = document.createElement('a');\n      link.target = '_blank';\n      link.href = url;\n      link.rel = 'noreferrer noopener';\n      const evt = document.createEvent('MouseEvents');\n      evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n      appendClickRemove(link, evt);\n    };\n\n    const getLink = (editor, elm) => editor.dom.getParent(elm, 'a[href]');\n    const getSelectedLink = editor => getLink(editor, editor.selection.getStart());\n    const hasOnlyAltModifier = e => {\n      return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;\n    };\n    const gotoLink = (editor, a) => {\n      if (a) {\n        const href = getHref(a);\n        if (/^#/.test(href)) {\n          const targetEl = editor.dom.select(href);\n          if (targetEl.length) {\n            editor.selection.scrollIntoView(targetEl[0], true);\n          }\n        } else {\n          open(a.href);\n        }\n      }\n    };\n    const openDialog = editor => () => {\n      editor.execCommand('mceLink', false, {\n        dialog: true\n      });\n    };\n    const gotoSelectedLink = editor => () => {\n      gotoLink(editor, getSelectedLink(editor));\n    };\n    const setupGotoLinks = editor => {\n      editor.on('click', e => {\n        const link = getLink(editor, e.target);\n        if (link && global.metaKeyPressed(e)) {\n          e.preventDefault();\n          gotoLink(editor, link);\n        }\n      });\n      editor.on('keydown', e => {\n        if (!e.isDefaultPrevented() && e.keyCode === 13 && hasOnlyAltModifier(e)) {\n          const link = getSelectedLink(editor);\n          if (link) {\n            e.preventDefault();\n            gotoLink(editor, link);\n          }\n        }\n      });\n    };\n    const toggleState = (editor, toggler) => {\n      editor.on('NodeChange', toggler);\n      return () => editor.off('NodeChange', toggler);\n    };\n    const toggleLinkState = editor => api => {\n      const updateState = () => {\n        api.setActive(!editor.mode.isReadOnly() && isInAnchor(editor, editor.selection.getNode()));\n        api.setEnabled(editor.selection.isEditable());\n      };\n      updateState();\n      return toggleState(editor, updateState);\n    };\n    const toggleLinkMenuState = editor => api => {\n      const updateState = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      updateState();\n      return toggleState(editor, updateState);\n    };\n    const hasExactlyOneLinkInSelection = editor => {\n      const links = editor.selection.isCollapsed() ? getLinks$1(editor.dom.getParents(editor.selection.getStart())) : getLinksInSelection(editor.selection.getRng());\n      return links.length === 1;\n    };\n    const toggleGotoLinkState = editor => api => {\n      const updateState = () => api.setEnabled(hasExactlyOneLinkInSelection(editor));\n      updateState();\n      return toggleState(editor, updateState);\n    };\n    const toggleUnlinkState = editor => api => {\n      const hasLinks$1 = parents => hasLinks(parents) || hasLinksInSelection(editor.selection.getRng());\n      const parents = editor.dom.getParents(editor.selection.getStart());\n      const updateEnabled = parents => {\n        api.setEnabled(hasLinks$1(parents) && editor.selection.isEditable());\n      };\n      updateEnabled(parents);\n      return toggleState(editor, e => updateEnabled(e.parents));\n    };\n\n    const setup = editor => {\n      editor.addShortcut('Meta+K', '', () => {\n        editor.execCommand('mceLink');\n      });\n    };\n\n    const setupButtons = editor => {\n      editor.ui.registry.addToggleButton('link', {\n        icon: 'link',\n        tooltip: 'Insert/edit link',\n        onAction: openDialog(editor),\n        onSetup: toggleLinkState(editor)\n      });\n      editor.ui.registry.addButton('openlink', {\n        icon: 'new-tab',\n        tooltip: 'Open link',\n        onAction: gotoSelectedLink(editor),\n        onSetup: toggleGotoLinkState(editor)\n      });\n      editor.ui.registry.addButton('unlink', {\n        icon: 'unlink',\n        tooltip: 'Remove link',\n        onAction: () => unlink(editor),\n        onSetup: toggleUnlinkState(editor)\n      });\n    };\n    const setupMenuItems = editor => {\n      editor.ui.registry.addMenuItem('openlink', {\n        text: 'Open link',\n        icon: 'new-tab',\n        onAction: gotoSelectedLink(editor),\n        onSetup: toggleGotoLinkState(editor)\n      });\n      editor.ui.registry.addMenuItem('link', {\n        icon: 'link',\n        text: 'Link...',\n        shortcut: 'Meta+K',\n        onSetup: toggleLinkMenuState(editor),\n        onAction: openDialog(editor)\n      });\n      editor.ui.registry.addMenuItem('unlink', {\n        icon: 'unlink',\n        text: 'Remove link',\n        onAction: () => unlink(editor),\n        onSetup: toggleUnlinkState(editor)\n      });\n    };\n    const setupContextMenu = editor => {\n      const inLink = 'link unlink openlink';\n      const noLink = 'link';\n      editor.ui.registry.addContextMenu('link', {\n        update: element => {\n          const isEditable = editor.dom.isEditable(element);\n          if (!isEditable) {\n            return '';\n          }\n          return hasLinks(editor.dom.getParents(element, 'a')) ? inLink : noLink;\n        }\n      });\n    };\n    const setupContextToolbars = editor => {\n      const collapseSelectionToEnd = editor => {\n        editor.selection.collapse(false);\n      };\n      const onSetupLink = buttonApi => {\n        const node = editor.selection.getNode();\n        buttonApi.setEnabled(isInAnchor(editor, node));\n        return noop;\n      };\n      const getLinkText = value => {\n        const anchor = getAnchorElement(editor);\n        const onlyText = isOnlyTextSelected(editor);\n        if (anchor.isNone() && onlyText) {\n          const text = getAnchorText(editor.selection, anchor);\n          return someIf(text.length === 0, value);\n        } else {\n          return Optional.none();\n        }\n      };\n      editor.ui.registry.addContextForm('quicklink', {\n        launch: {\n          type: 'contextformtogglebutton',\n          icon: 'link',\n          tooltip: 'Link',\n          onSetup: toggleLinkState(editor)\n        },\n        label: 'Link',\n        predicate: node => hasContextToolbar(editor) && isInAnchor(editor, node),\n        initValue: () => {\n          const elm = getAnchorElement(editor);\n          return elm.fold(constant(''), getHref);\n        },\n        commands: [{\n          type: 'contextformtogglebutton',\n          icon: 'link',\n          tooltip: 'Link',\n          primary: true,\n          onSetup: buttonApi => {\n            const node = editor.selection.getNode();\n            buttonApi.setActive(isInAnchor(editor, node));\n            return toggleLinkState(editor)(buttonApi);\n          },\n          onAction: formApi => {\n            const value = formApi.getValue();\n            const text = getLinkText(value);\n            const attachState = {\n              href: value,\n              attach: noop\n            };\n            link(editor, attachState, {\n              href: value,\n              text,\n              title: Optional.none(),\n              rel: Optional.none(),\n              target: Optional.none(),\n              class: Optional.none()\n            });\n            collapseSelectionToEnd(editor);\n            formApi.hide();\n          }\n        }, {\n          type: 'contextformbutton',\n          icon: 'unlink',\n          tooltip: 'Remove link',\n          onSetup: onSetupLink,\n          onAction: formApi => {\n            unlink(editor);\n            formApi.hide();\n          }\n        }, {\n          type: 'contextformbutton',\n          icon: 'new-tab',\n          tooltip: 'Open link',\n          onSetup: onSetupLink,\n          onAction: formApi => {\n            gotoSelectedLink(editor)();\n            formApi.hide();\n          }\n        }]\n      });\n    };\n\n    var Plugin = () => {\n      global$5.add('link', editor => {\n        register$1(editor);\n        setupButtons(editor);\n        setupMenuItems(editor);\n        setupContextMenu(editor);\n        setupContextToolbars(editor);\n        setupGotoLinks(editor);\n        register(editor);\n        setup(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const zwCharsRegex = /[\\u200B-\\u200D\\uFEFF]/g;\n    const cleanStr = str => str.replace(zwCharsRegex, '').trim();\n    const strIsEqual = (str1, str2) => cleanStr(str1) === cleanStr(str2);\n    const toPt = fontSize => \"\".concat(Math.round(parseInt(fontSize, 10) * 72 / 96), \"pt\");\n    const wrapContent = (li, selectionStart, dom) => {\n      const liRange = dom.createRng();\n      liRange.selectNodeContents(li);\n      liRange.setEndBefore(selectionStart);\n      const beforeContent = liRange.cloneContents();\n      let wrapperElement = null;\n      if (beforeContent.textContent.length) {\n        if (beforeContent.childNodes.length === 1 && beforeContent.childElementCount === 1) {\n          wrapperElement = li.firstElementChild;\n        } else {\n          wrapperElement = dom.create('span');\n          liRange.surroundContents(wrapperElement);\n        }\n      }\n      return wrapperElement;\n    };\n\n    const FontSizeHandler = ({\n      dom,\n      selection\n    }, value) => {\n      let resizeItems = [];\n      const selectedBlocks = selection.getSelectedBlocks();\n      const selectedLiBlocks = selectedBlocks.filter(el => dom.is(el, 'li'));\n      if (selectedLiBlocks.length) {\n        const highlightedStart = selection.getStart();\n        const firstListItem = dom.getParent(highlightedStart, 'li');\n        if (firstListItem && selectedLiBlocks.length === 1) {\n          const resizeFirstItem = strIsEqual(firstListItem.innerText, selection.getContent({\n            format: 'text'\n          }));\n          if (resizeFirstItem) {\n            resizeItems.push(firstListItem);\n          }\n        }\n        if (selectedBlocks.length > 1) {\n          const selRange = selection.getRng().cloneRange();\n          if (firstListItem) {\n            const firstLiRange = dom.createRng();\n            firstLiRange.selectNodeContents(firstListItem);\n            const resizeFirstItem = firstLiRange.compareBoundaryPoints(selRange.END_TO_END, selRange) < 0;\n            if (!resizeFirstItem) {\n              selectedLiBlocks.shift();\n            } else {\n              const wrapperElement = wrapContent(firstListItem, selection.getStart(), dom);\n              if (wrapperElement) {\n                const oldFont = toPt(dom.win.getComputedStyle(wrapperElement).fontSize);\n                dom.setStyle(wrapperElement, 'font-size', oldFont);\n              }\n            }\n          }\n          const highlightedEnd = selection.getEnd();\n          const lastListItem = dom.getParent(highlightedEnd, 'li');\n          if (lastListItem && firstListItem !== lastListItem) {\n            const lastLiRange = dom.createRng();\n            lastLiRange.selectNodeContents(lastListItem);\n            selRange.setStart(lastLiRange.startContainer, lastLiRange.startOffset);\n            const resizeLastItem = strIsEqual(lastListItem.innerText, selRange.cloneContents().textContent);\n            if (!resizeLastItem) {\n              selectedLiBlocks.pop();\n            }\n          }\n          resizeItems = selectedLiBlocks;\n        }\n        resizeItems.forEach(item => dom.setStyle(item, 'font-size', value));\n      }\n    };\n\n    const InsertListHandler = ({\n      dom,\n      selection\n    }) => {\n      const selectedBlocks = selection.getSelectedBlocks();\n      const selectedLiBlocks = selectedBlocks.filter(el => dom.is(el, 'li'));\n      const newFormatListSpan = selectedLiBlocks[0].querySelector('span[data-mce-type=\"format-caret\"] > span');\n      if (newFormatListSpan) {\n        dom.setStyle(selectedLiBlocks[0], 'font-size', dom.getStyle(newFormatListSpan, 'font-size'));\n      } else {\n        selectedBlocks.filter(block => block.lastChild === block.lastElementChild).forEach(block => {\n          const fontSize = dom.getStyle(block.lastElementChild, 'font-size');\n          if (fontSize) {\n            const wrapperElement = wrapContent(block, block.lastElementChild, dom);\n            if (wrapperElement) {\n              const oldFont = toPt(dom.win.getComputedStyle(wrapperElement).fontSize);\n              dom.setStyle(wrapperElement, 'font-size', oldFont);\n            }\n            dom.setStyle(block, 'font-size', fontSize);\n          }\n        });\n      }\n    };\n\n    const ExecCommandHandler = ({\n      target: editor,\n      command,\n      value\n    }) => {\n      if (command === 'FontSize') {\n        FontSizeHandler(editor, value);\n      } else if (command === 'InsertOrderedList' || command === 'InsertUnorderedList') {\n        InsertListHandler(editor);\n      }\n    };\n    const PastePostProssesHandler = editor => args => {\n      const {\n        dom\n      } = editor;\n      const liNodes = [...args.node.querySelectorAll('li')];\n      liNodes.filter(liNode => liNode.children.length).forEach(liNode => {\n        const nodes = [...liNode.querySelectorAll(':first-child')];\n        let span;\n        for (let i = 0; i < nodes.length; ++i) {\n          const node = nodes[i];\n          if (dom.is(node, 'li')) {\n            return;\n          }\n          if (dom.is(node, 'span')) {\n            span = node;\n            break;\n          }\n        }\n        if (span) {\n          liNode.style.cssText = span.style.cssText;\n          dom.replace(dom.create('text', {}, span.innerHTML), span);\n        }\n      });\n    };\n    const register = editor => {\n      editor.on('ExecCommand', ExecCommandHandler);\n      editor.on('PastePostProcess', PastePostProssesHandler(editor));\n    };\n\n    var Plugin = () => {\n      global.add('listitem_fix', editor => {\n        register(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$7 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const isString = isType$1('string');\n    const isObject = isType$1('object');\n    const isArray = isType$1('array');\n    const isBoolean = isSimpleType('boolean');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n\n    const noop = () => {};\n    const compose1 = (fbc, fab) => a => fbc(fab(a));\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const tripleEquals = (a, b) => {\n      return a === b;\n    };\n    function curry(fn, ...initialArgs) {\n      return (...restArgs) => {\n        const all = initialArgs.concat(restArgs);\n        return fn.apply(null, all);\n      };\n    }\n    const not = f => t => !f(t);\n    const never = constant(false);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const nativeSlice = Array.prototype.slice;\n    const nativeIndexOf = Array.prototype.indexOf;\n    const nativePush = Array.prototype.push;\n    const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n    const contains$1 = (xs, x) => rawIndexOf(xs, x) > -1;\n    const exists = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const filter$1 = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    const groupBy = (xs, f) => {\n      if (xs.length === 0) {\n        return [];\n      } else {\n        let wasType = f(xs[0]);\n        const r = [];\n        let group = [];\n        for (let i = 0, len = xs.length; i < len; i++) {\n          const x = xs[i];\n          const type = f(x);\n          if (type !== wasType) {\n            r.push(group);\n            group = [];\n          }\n          wasType = type;\n          group.push(x);\n        }\n        if (group.length !== 0) {\n          r.push(group);\n        }\n        return r;\n      }\n    };\n    const foldl = (xs, f, acc) => {\n      each$1(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const findUntil = (xs, pred, until) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(x);\n        } else if (until(x, i)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const find = (xs, pred) => {\n      return findUntil(xs, pred, never);\n    };\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const bind = (xs, f) => flatten(map(xs, f));\n    const reverse = xs => {\n      const r = nativeSlice.call(xs, 0);\n      r.reverse();\n      return r;\n    };\n    const get$1 = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get$1(xs, 0);\n    const last = xs => get$1(xs, xs.length - 1);\n    const unique = (xs, comparator) => {\n      const r = [];\n      const isDuplicated = isFunction(comparator) ? x => exists(r, i => comparator(i, x)) : x => contains$1(r, x);\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (!isDuplicated(x)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n\n    const is$2 = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n    const equals = (lhs, rhs, comparator = tripleEquals) => lift2(lhs, rhs, comparator).getOr(lhs.isNone() && rhs.isNone());\n    const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();\n\n    const COMMENT = 8;\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom$1(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom$1(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom$1(node);\n    };\n    const fromDom$1 = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$1);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom: fromDom$1,\n      fromPoint\n    };\n\n    const is$1 = (element, selector) => {\n      const dom = element.dom;\n      if (dom.nodeType !== ELEMENT) {\n        return false;\n      } else {\n        const elem = dom;\n        if (elem.matches !== undefined) {\n          return elem.matches(selector);\n        } else if (elem.msMatchesSelector !== undefined) {\n          return elem.msMatchesSelector(selector);\n        } else if (elem.webkitMatchesSelector !== undefined) {\n          return elem.webkitMatchesSelector(selector);\n        } else if (elem.mozMatchesSelector !== undefined) {\n          return elem.mozMatchesSelector(selector);\n        } else {\n          throw new Error('Browser lacks native selectors');\n        }\n      }\n    };\n\n    const eq = (e1, e2) => e1.dom === e2.dom;\n    const contains = (e1, e2) => {\n      const d1 = e1.dom;\n      const d2 = e2.dom;\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n    const is = is$1;\n\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve = (p, scope) => {\n      const parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve(name, scope);\n    };\n    const getOrDie = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf(x).constructor.name));\n    };\n\n    const name = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n    const type = element => element.dom.nodeType;\n    const isType = t => element => type(element) === t;\n    const isComment = element => type(element) === COMMENT || name(element) === '#comment';\n    const isHTMLElement = element => isElement$1(element) && isPrototypeOf(element.dom);\n    const isElement$1 = isType(ELEMENT);\n    const isText = isType(TEXT);\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n    const isTag = tag => e => isElement$1(e) && name(e) === tag;\n\n    const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const parentElement = element => Optional.from(element.dom.parentElement).map(SugarElement.fromDom);\n    const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);\n    const children = element => map(element.dom.childNodes, SugarElement.fromDom);\n    const child = (element, index) => {\n      const cs = element.dom.childNodes;\n      return Optional.from(cs[index]).map(SugarElement.fromDom);\n    };\n    const firstChild = element => child(element, 0);\n    const lastChild = element => child(element, element.dom.childNodes.length - 1);\n\n    const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getShadowRoot = e => {\n      const r = getRootNode(e);\n      return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n    };\n    const getShadowHost = e => SugarElement.fromDom(e.dom.host);\n\n    const inBody = element => {\n      const dom = isText(element) ? element.dom.parentNode : element.dom;\n      if (dom === undefined || dom === null || dom.ownerDocument === null) {\n        return false;\n      }\n      const doc = dom.ownerDocument;\n      return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n    };\n\n    var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n      if (is(scope, a)) {\n        return Optional.some(scope);\n      } else if (isFunction(isRoot) && isRoot(scope)) {\n        return Optional.none();\n      } else {\n        return ancestor(scope, a, isRoot);\n      }\n    };\n\n    const ancestor$3 = (scope, predicate, isRoot) => {\n      let element = scope.dom;\n      const stop = isFunction(isRoot) ? isRoot : never;\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        if (predicate(el)) {\n          return Optional.some(el);\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const closest$2 = (scope, predicate, isRoot) => {\n      const is = (s, test) => test(s);\n      return ClosestOrAncestor(is, ancestor$3, scope, predicate, isRoot);\n    };\n\n    const ancestor$2 = (scope, selector, isRoot) => ancestor$3(scope, e => is$1(e, selector), isRoot);\n    const closest$1 = (scope, selector, isRoot) => {\n      const is = (element, selector) => is$1(element, selector);\n      return ClosestOrAncestor(is, ancestor$2, scope, selector, isRoot);\n    };\n\n    const closest = target => closest$1(target, '[contenteditable]');\n    const isEditable = (element, assumeEditable = false) => {\n      if (inBody(element)) {\n        return element.dom.isContentEditable;\n      } else {\n        return closest(element).fold(constant(assumeEditable), editable => getRaw(editable) === 'true');\n      }\n    };\n    const getRaw = element => element.dom.contentEditable;\n\n    const before$1 = (marker, element) => {\n      const parent$1 = parent(marker);\n      parent$1.each(v => {\n        v.dom.insertBefore(element.dom, marker.dom);\n      });\n    };\n    const after = (marker, element) => {\n      const sibling = nextSibling(marker);\n      sibling.fold(() => {\n        const parent$1 = parent(marker);\n        parent$1.each(v => {\n          append$1(v, element);\n        });\n      }, v => {\n        before$1(v, element);\n      });\n    };\n    const prepend = (parent, element) => {\n      const firstChild$1 = firstChild(parent);\n      firstChild$1.fold(() => {\n        append$1(parent, element);\n      }, v => {\n        parent.dom.insertBefore(element.dom, v.dom);\n      });\n    };\n    const append$1 = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n\n    const before = (marker, elements) => {\n      each$1(elements, x => {\n        before$1(marker, x);\n      });\n    };\n    const append = (parent, elements) => {\n      each$1(elements, x => {\n        append$1(parent, x);\n      });\n    };\n\n    const empty = element => {\n      element.dom.textContent = '';\n      each$1(children(element), rogue => {\n        remove(rogue);\n      });\n    };\n    const remove = element => {\n      const dom = element.dom;\n      if (dom.parentNode !== null) {\n        dom.parentNode.removeChild(dom);\n      }\n    };\n\n    var global$6 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    const fromDom = nodes => map(nodes, SugarElement.fromDom);\n\n    const keys = Object.keys;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const objAcc = r => (x, i) => {\n      r[i] = x;\n    };\n    const internalFilter = (obj, pred, onTrue, onFalse) => {\n      each(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const filter = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const setAll = (element, attrs) => {\n      const dom = element.dom;\n      each(attrs, (v, k) => {\n        rawSet(dom, k, v);\n      });\n    };\n    const clone$1 = element => foldl(element.dom.attributes, (acc, attr) => {\n      acc[attr.name] = attr.value;\n      return acc;\n    }, {});\n\n    const clone = (original, isDeep) => SugarElement.fromDom(original.dom.cloneNode(isDeep));\n    const deep = original => clone(original, true);\n    const shallowAs = (original, tag) => {\n      const nu = SugarElement.fromTag(tag);\n      const attributes = clone$1(original);\n      setAll(nu, attributes);\n      return nu;\n    };\n    const mutate = (original, tag) => {\n      const nu = shallowAs(original, tag);\n      after(original, nu);\n      const children$1 = children(original);\n      append(nu, children$1);\n      remove(original);\n      return nu;\n    };\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const matchNodeName = name => node => isNonNullable(node) && node.nodeName.toLowerCase() === name;\n    const matchNodeNames = regex => node => isNonNullable(node) && regex.test(node.nodeName);\n    const isTextNode$1 = node => isNonNullable(node) && node.nodeType === 3;\n    const isElement = node => isNonNullable(node) && node.nodeType === 1;\n    const isListNode = matchNodeNames(/^(OL|UL|DL)$/);\n    const isOlUlNode = matchNodeNames(/^(OL|UL)$/);\n    const isOlNode = matchNodeName('ol');\n    const isListItemNode = matchNodeNames(/^(LI|DT|DD)$/);\n    const isDlItemNode = matchNodeNames(/^(DT|DD)$/);\n    const isTableCellNode = matchNodeNames(/^(TH|TD)$/);\n    const isBr = matchNodeName('br');\n    const isFirstChild = node => {\n      var _a;\n      return ((_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.firstChild) === node;\n    };\n    const isTextBlock = (editor, node) => isNonNullable(node) && node.nodeName in editor.schema.getTextBlockElements();\n    const isBlock = (node, blockElements) => isNonNullable(node) && node.nodeName in blockElements;\n    const isVoid = (editor, node) => isNonNullable(node) && node.nodeName in editor.schema.getVoidElements();\n    const isBogusBr = (dom, node) => {\n      if (!isBr(node)) {\n        return false;\n      }\n      return dom.isBlock(node.nextSibling) && !isBr(node.previousSibling);\n    };\n    const isEmpty$2 = (dom, elm, keepBookmarks) => {\n      const empty = dom.isEmpty(elm);\n      if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) {\n        return false;\n      }\n      return empty;\n    };\n    const isChildOfBody = (dom, elm) => dom.isChildOf(elm, dom.getRoot());\n\n    const option = name => editor => editor.options.get(name);\n    const register$3 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('lists_indent_on_tab', {\n        processor: 'boolean',\n        default: true\n      });\n    };\n    const shouldIndentOnTab = option('lists_indent_on_tab');\n    const getForcedRootBlock = option('forced_root_block');\n    const getForcedRootBlockAttrs = option('forced_root_block_attrs');\n\n    const createTextBlock = (editor, contentNode) => {\n      const dom = editor.dom;\n      const blockElements = editor.schema.getBlockElements();\n      const fragment = dom.createFragment();\n      const blockName = getForcedRootBlock(editor);\n      const blockAttrs = getForcedRootBlockAttrs(editor);\n      let node;\n      let textBlock;\n      let hasContentNode = false;\n      textBlock = dom.create(blockName, blockAttrs);\n      if (!isBlock(contentNode.firstChild, blockElements)) {\n        fragment.appendChild(textBlock);\n      }\n      while (node = contentNode.firstChild) {\n        const nodeName = node.nodeName;\n        if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {\n          hasContentNode = true;\n        }\n        if (isBlock(node, blockElements)) {\n          fragment.appendChild(node);\n          textBlock = null;\n        } else {\n          if (!textBlock) {\n            textBlock = dom.create(blockName, blockAttrs);\n            fragment.appendChild(textBlock);\n          }\n          textBlock.appendChild(node);\n        }\n      }\n      if (!hasContentNode && textBlock) {\n        textBlock.appendChild(dom.create('br', {\n          'data-mce-bogus': '1'\n        }));\n      }\n      return fragment;\n    };\n\n    const DOM$2 = global$3.DOM;\n    const splitList = (editor, list, li) => {\n      const removeAndKeepBookmarks = targetNode => {\n        const parent = targetNode.parentNode;\n        if (parent) {\n          global$2.each(bookmarks, node => {\n            parent.insertBefore(node, li.parentNode);\n          });\n        }\n        DOM$2.remove(targetNode);\n      };\n      const bookmarks = DOM$2.select('span[data-mce-type=\"bookmark\"]', list);\n      const newBlock = createTextBlock(editor, li);\n      const tmpRng = DOM$2.createRng();\n      tmpRng.setStartAfter(li);\n      tmpRng.setEndAfter(list);\n      const fragment = tmpRng.extractContents();\n      for (let node = fragment.firstChild; node; node = node.firstChild) {\n        if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {\n          DOM$2.remove(node);\n          break;\n        }\n      }\n      if (!editor.dom.isEmpty(fragment)) {\n        DOM$2.insertAfter(fragment, list);\n      }\n      DOM$2.insertAfter(newBlock, list);\n      const parent = li.parentElement;\n      if (parent && isEmpty$2(editor.dom, parent)) {\n        removeAndKeepBookmarks(parent);\n      }\n      DOM$2.remove(li);\n      if (isEmpty$2(editor.dom, list)) {\n        DOM$2.remove(list);\n      }\n    };\n\n    const isDescriptionDetail = isTag('dd');\n    const isDescriptionTerm = isTag('dt');\n    const outdentDlItem = (editor, item) => {\n      if (isDescriptionDetail(item)) {\n        mutate(item, 'dt');\n      } else if (isDescriptionTerm(item)) {\n        parentElement(item).each(dl => splitList(editor, dl.dom, item.dom));\n      }\n    };\n    const indentDlItem = item => {\n      if (isDescriptionTerm(item)) {\n        mutate(item, 'dd');\n      }\n    };\n    const dlIndentation = (editor, indentation, dlItems) => {\n      if (indentation === 'Indent') {\n        each$1(dlItems, indentDlItem);\n      } else {\n        each$1(dlItems, item => outdentDlItem(editor, item));\n      }\n    };\n\n    const getNormalizedPoint = (container, offset) => {\n      if (isTextNode$1(container)) {\n        return {\n          container,\n          offset\n        };\n      }\n      const node = global$6.getNode(container, offset);\n      if (isTextNode$1(node)) {\n        return {\n          container: node,\n          offset: offset >= container.childNodes.length ? node.data.length : 0\n        };\n      } else if (node.previousSibling && isTextNode$1(node.previousSibling)) {\n        return {\n          container: node.previousSibling,\n          offset: node.previousSibling.data.length\n        };\n      } else if (node.nextSibling && isTextNode$1(node.nextSibling)) {\n        return {\n          container: node.nextSibling,\n          offset: 0\n        };\n      }\n      return {\n        container,\n        offset\n      };\n    };\n    const normalizeRange = rng => {\n      const outRng = rng.cloneRange();\n      const rangeStart = getNormalizedPoint(rng.startContainer, rng.startOffset);\n      outRng.setStart(rangeStart.container, rangeStart.offset);\n      const rangeEnd = getNormalizedPoint(rng.endContainer, rng.endOffset);\n      outRng.setEnd(rangeEnd.container, rangeEnd.offset);\n      return outRng;\n    };\n\n    const listNames = ['OL', 'UL', 'DL'];\n    const listSelector = listNames.join(',');\n    const getParentList = (editor, node) => {\n      const selectionStart = node || editor.selection.getStart(true);\n      return editor.dom.getParent(selectionStart, listSelector, getClosestListHost(editor, selectionStart));\n    };\n    const isParentListSelected = (parentList, selectedBlocks) => isNonNullable(parentList) && selectedBlocks.length === 1 && selectedBlocks[0] === parentList;\n    const findSubLists = parentList => filter$1(parentList.querySelectorAll(listSelector), isListNode);\n    const getSelectedSubLists = editor => {\n      const parentList = getParentList(editor);\n      const selectedBlocks = editor.selection.getSelectedBlocks();\n      if (isParentListSelected(parentList, selectedBlocks)) {\n        return findSubLists(parentList);\n      } else {\n        return filter$1(selectedBlocks, elm => {\n          return isListNode(elm) && parentList !== elm;\n        });\n      }\n    };\n    const findParentListItemsNodes = (editor, elms) => {\n      const listItemsElms = global$2.map(elms, elm => {\n        const parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListHost(editor, elm));\n        return parentLi ? parentLi : elm;\n      });\n      return unique(listItemsElms);\n    };\n    const getSelectedListItems = editor => {\n      const selectedBlocks = editor.selection.getSelectedBlocks();\n      return filter$1(findParentListItemsNodes(editor, selectedBlocks), isListItemNode);\n    };\n    const getSelectedDlItems = editor => filter$1(getSelectedListItems(editor), isDlItemNode);\n    const getClosestEditingHost = (editor, elm) => {\n      const parentTableCell = editor.dom.getParents(elm, 'TD,TH');\n      return parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();\n    };\n    const isListHost = (schema, node) => !isListNode(node) && !isListItemNode(node) && exists(listNames, listName => schema.isValidChild(node.nodeName, listName));\n    const getClosestListHost = (editor, elm) => {\n      const parentBlocks = editor.dom.getParents(elm, editor.dom.isBlock);\n      const parentBlock = find(parentBlocks, elm => isListHost(editor.schema, elm));\n      return parentBlock.getOr(editor.getBody());\n    };\n    const isListInsideAnLiWithFirstAndLastNotListElement = list => parent(list).exists(parent => isListItemNode(parent.dom) && firstChild(parent).exists(firstChild => !isListNode(firstChild.dom)) && lastChild(parent).exists(lastChild => !isListNode(lastChild.dom)));\n    const findLastParentListNode = (editor, elm) => {\n      const parentLists = editor.dom.getParents(elm, 'ol,ul', getClosestListHost(editor, elm));\n      return last(parentLists);\n    };\n    const getSelectedLists = editor => {\n      const firstList = findLastParentListNode(editor, editor.selection.getStart());\n      const subsequentLists = filter$1(editor.selection.getSelectedBlocks(), isOlUlNode);\n      return firstList.toArray().concat(subsequentLists);\n    };\n    const getParentLists = editor => {\n      const elm = editor.selection.getStart();\n      return editor.dom.getParents(elm, 'ol,ul', getClosestListHost(editor, elm));\n    };\n    const getSelectedListRoots = editor => {\n      const selectedLists = getSelectedLists(editor);\n      const parentLists = getParentLists(editor);\n      return find(parentLists, p => isListInsideAnLiWithFirstAndLastNotListElement(SugarElement.fromDom(p))).fold(() => getUniqueListRoots(editor, selectedLists), l => [l]);\n    };\n    const getUniqueListRoots = (editor, lists) => {\n      const listRoots = map(lists, list => findLastParentListNode(editor, list).getOr(list));\n      return unique(listRoots);\n    };\n\n    const isCustomList = list => /\\btox\\-/.test(list.className);\n    const inList = (parents, listName) => findUntil(parents, isListNode, isTableCellNode).exists(list => list.nodeName === listName && !isCustomList(list));\n    const isWithinNonEditable = (editor, element) => element !== null && !editor.dom.isEditable(element);\n    const selectionIsWithinNonEditableList = editor => {\n      const parentList = getParentList(editor);\n      return isWithinNonEditable(editor, parentList);\n    };\n    const isWithinNonEditableList = (editor, element) => {\n      const parentList = editor.dom.getParent(element, 'ol,ul,dl');\n      return isWithinNonEditable(editor, parentList);\n    };\n    const setNodeChangeHandler = (editor, nodeChangeHandler) => {\n      const initialNode = editor.selection.getNode();\n      nodeChangeHandler({\n        parents: editor.dom.getParents(initialNode),\n        element: initialNode\n      });\n      editor.on('NodeChange', nodeChangeHandler);\n      return () => editor.off('NodeChange', nodeChangeHandler);\n    };\n\n    const fromElements = (elements, scope) => {\n      const doc = scope || document;\n      const fragment = doc.createDocumentFragment();\n      each$1(elements, element => {\n        fragment.appendChild(element.dom);\n      });\n      return SugarElement.fromDom(fragment);\n    };\n\n    const fireListEvent = (editor, action, element) => editor.dispatch('ListMutation', {\n      action,\n      element\n    });\n\n    const blank = r => s => s.replace(r, '');\n    const trim = blank(/^\\s+|\\s+$/g);\n    const isNotEmpty = s => s.length > 0;\n    const isEmpty$1 = s => !isNotEmpty(s);\n\n    const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n    const internalSet = (dom, property, value) => {\n      if (!isString(value)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value);\n      }\n      if (isSupported(dom)) {\n        dom.style.setProperty(property, value);\n      }\n    };\n    const set = (element, property, value) => {\n      const dom = element.dom;\n      internalSet(dom, property, value);\n    };\n\n    const isList = el => is(el, 'OL,UL');\n    const isListItem = el => is(el, 'LI');\n    const hasFirstChildList = el => firstChild(el).exists(isList);\n    const hasLastChildList = el => lastChild(el).exists(isList);\n\n    const isEntryList = entry => 'listAttributes' in entry;\n    const isEntryComment = entry => 'isComment' in entry;\n    const isEntryFragment = entry => 'isFragment' in entry;\n    const isIndented = entry => entry.depth > 0;\n    const isSelected = entry => entry.isSelected;\n    const cloneItemContent = li => {\n      const children$1 = children(li);\n      const content = hasLastChildList(li) ? children$1.slice(0, -1) : children$1;\n      return map(content, deep);\n    };\n    const createEntry = (li, depth, isSelected) => parent(li).filter(isElement$1).map(list => ({\n      depth,\n      dirty: false,\n      isSelected,\n      content: cloneItemContent(li),\n      itemAttributes: clone$1(li),\n      listAttributes: clone$1(list),\n      listType: name(list),\n      isInPreviousLi: false\n    }));\n\n    const joinSegment = (parent, child) => {\n      append$1(parent.item, child.list);\n    };\n    const joinSegments = segments => {\n      for (let i = 1; i < segments.length; i++) {\n        joinSegment(segments[i - 1], segments[i]);\n      }\n    };\n    const appendSegments = (head$1, tail) => {\n      lift2(last(head$1), head(tail), joinSegment);\n    };\n    const createSegment = (scope, listType) => {\n      const segment = {\n        list: SugarElement.fromTag(listType, scope),\n        item: SugarElement.fromTag('li', scope)\n      };\n      append$1(segment.list, segment.item);\n      return segment;\n    };\n    const createSegments = (scope, entry, size) => {\n      const segments = [];\n      for (let i = 0; i < size; i++) {\n        segments.push(createSegment(scope, isEntryList(entry) ? entry.listType : entry.parentListType));\n      }\n      return segments;\n    };\n    const populateSegments = (segments, entry) => {\n      for (let i = 0; i < segments.length - 1; i++) {\n        set(segments[i].item, 'list-style-type', 'none');\n      }\n      last(segments).each(segment => {\n        if (isEntryList(entry)) {\n          setAll(segment.list, entry.listAttributes);\n          setAll(segment.item, entry.itemAttributes);\n        }\n        append(segment.item, entry.content);\n      });\n    };\n    const normalizeSegment = (segment, entry) => {\n      if (name(segment.list) !== entry.listType) {\n        segment.list = mutate(segment.list, entry.listType);\n      }\n      setAll(segment.list, entry.listAttributes);\n    };\n    const createItem = (scope, attr, content) => {\n      const item = SugarElement.fromTag('li', scope);\n      setAll(item, attr);\n      append(item, content);\n      return item;\n    };\n    const appendItem = (segment, item) => {\n      append$1(segment.list, item);\n      segment.item = item;\n    };\n    const writeShallow = (scope, cast, entry) => {\n      const newCast = cast.slice(0, entry.depth);\n      last(newCast).each(segment => {\n        if (isEntryList(entry)) {\n          const item = createItem(scope, entry.itemAttributes, entry.content);\n          appendItem(segment, item);\n          normalizeSegment(segment, entry);\n        } else if (isEntryFragment(entry)) {\n          append(segment.item, entry.content);\n        } else {\n          const item = SugarElement.fromHtml(\"<!--\".concat(entry.content, \"-->\"));\n          append$1(segment.list, item);\n        }\n      });\n      return newCast;\n    };\n    const writeDeep = (scope, cast, entry) => {\n      const segments = createSegments(scope, entry, entry.depth - cast.length);\n      joinSegments(segments);\n      populateSegments(segments, entry);\n      appendSegments(cast, segments);\n      return cast.concat(segments);\n    };\n    const composeList = (scope, entries) => {\n      let firstCommentEntryOpt = Optional.none();\n      const cast = foldl(entries, (cast, entry, i) => {\n        if (!isEntryComment(entry)) {\n          return entry.depth > cast.length ? writeDeep(scope, cast, entry) : writeShallow(scope, cast, entry);\n        } else {\n          if (i === 0) {\n            firstCommentEntryOpt = Optional.some(entry);\n            return cast;\n          }\n          return writeShallow(scope, cast, entry);\n        }\n      }, []);\n      firstCommentEntryOpt.each(firstCommentEntry => {\n        const item = SugarElement.fromHtml(\"<!--\".concat(firstCommentEntry.content, \"-->\"));\n        head(cast).each(fistCast => {\n          prepend(fistCast.list, item);\n        });\n      });\n      return head(cast).map(segment => segment.list);\n    };\n\n    const indentEntry = (indentation, entry) => {\n      switch (indentation) {\n        case 'Indent':\n          entry.depth++;\n          break;\n        case 'Outdent':\n          entry.depth--;\n          break;\n        case 'Flatten':\n          entry.depth = 0;\n      }\n      entry.dirty = true;\n    };\n\n    const cloneListProperties = (target, source) => {\n      if (isEntryList(target) && isEntryList(source)) {\n        target.listType = source.listType;\n        target.listAttributes = {\n          ...source.listAttributes\n        };\n      }\n    };\n    const cleanListProperties = entry => {\n      entry.listAttributes = filter(entry.listAttributes, (_value, key) => key !== 'start');\n    };\n    const closestSiblingEntry = (entries, start) => {\n      const depth = entries[start].depth;\n      const matches = entry => entry.depth === depth && !entry.dirty;\n      const until = entry => entry.depth < depth;\n      return findUntil(reverse(entries.slice(0, start)), matches, until).orThunk(() => findUntil(entries.slice(start + 1), matches, until));\n    };\n    const normalizeEntries = entries => {\n      each$1(entries, (entry, i) => {\n        closestSiblingEntry(entries, i).fold(() => {\n          if (entry.dirty && isEntryList(entry)) {\n            cleanListProperties(entry);\n          }\n        }, matchingEntry => cloneListProperties(entry, matchingEntry));\n      });\n      return entries;\n    };\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    const parseSingleItem = (depth, itemSelection, selectionState, item) => {\n      var _a;\n      if (isComment(item)) {\n        return [{\n          depth: depth + 1,\n          content: (_a = item.dom.nodeValue) !== null && _a !== void 0 ? _a : '',\n          dirty: false,\n          isSelected: false,\n          isComment: true\n        }];\n      }\n      itemSelection.each(selection => {\n        if (eq(selection.start, item)) {\n          selectionState.set(true);\n        }\n      });\n      const currentItemEntry = createEntry(item, depth, selectionState.get());\n      itemSelection.each(selection => {\n        if (eq(selection.end, item)) {\n          selectionState.set(false);\n        }\n      });\n      const childListEntries = lastChild(item).filter(isList).map(list => parseList(depth, itemSelection, selectionState, list)).getOr([]);\n      return currentItemEntry.toArray().concat(childListEntries);\n    };\n    const parseItem = (depth, itemSelection, selectionState, item) => firstChild(item).filter(isList).fold(() => parseSingleItem(depth, itemSelection, selectionState, item), list => {\n      const parsedSiblings = foldl(children(item), (acc, liChild, i) => {\n        if (i === 0) {\n          return acc;\n        } else {\n          if (isListItem(liChild)) {\n            return acc.concat(parseSingleItem(depth, itemSelection, selectionState, liChild));\n          } else {\n            const fragment = {\n              isFragment: true,\n              depth,\n              content: [liChild],\n              isSelected: false,\n              dirty: false,\n              parentListType: name(list)\n            };\n            return acc.concat(fragment);\n          }\n        }\n      }, []);\n      return parseList(depth, itemSelection, selectionState, list).concat(parsedSiblings);\n    });\n    const parseList = (depth, itemSelection, selectionState, list) => bind(children(list), element => {\n      const parser = isList(element) ? parseList : parseItem;\n      const newDepth = depth + 1;\n      return parser(newDepth, itemSelection, selectionState, element);\n    });\n    const parseLists = (lists, itemSelection) => {\n      const selectionState = Cell(false);\n      const initialDepth = 0;\n      return map(lists, list => ({\n        sourceList: list,\n        entries: parseList(initialDepth, itemSelection, selectionState, list)\n      }));\n    };\n\n    const outdentedComposer = (editor, entries) => {\n      const normalizedEntries = normalizeEntries(entries);\n      return map(normalizedEntries, entry => {\n        const content = !isEntryComment(entry) ? fromElements(entry.content) : fromElements([SugarElement.fromHtml(\"<!--\".concat(entry.content, \"-->\"))]);\n        return SugarElement.fromDom(createTextBlock(editor, content.dom));\n      });\n    };\n    const indentedComposer = (editor, entries) => {\n      const normalizedEntries = normalizeEntries(entries);\n      return composeList(editor.contentDocument, normalizedEntries).toArray();\n    };\n    const composeEntries = (editor, entries) => bind(groupBy(entries, isIndented), entries => {\n      const groupIsIndented = head(entries).exists(isIndented);\n      return groupIsIndented ? indentedComposer(editor, entries) : outdentedComposer(editor, entries);\n    });\n    const indentSelectedEntries = (entries, indentation) => {\n      each$1(filter$1(entries, isSelected), entry => indentEntry(indentation, entry));\n    };\n    const getItemSelection = editor => {\n      const selectedListItems = map(getSelectedListItems(editor), SugarElement.fromDom);\n      return lift2(find(selectedListItems, not(hasFirstChildList)), find(reverse(selectedListItems), not(hasFirstChildList)), (start, end) => ({\n        start,\n        end\n      }));\n    };\n    const listIndentation = (editor, lists, indentation) => {\n      const entrySets = parseLists(lists, getItemSelection(editor));\n      each$1(entrySets, entrySet => {\n        indentSelectedEntries(entrySet.entries, indentation);\n        const composedLists = composeEntries(editor, entrySet.entries);\n        each$1(composedLists, composedList => {\n          fireListEvent(editor, indentation === 'Indent' ? 'IndentList' : 'OutdentList', composedList.dom);\n        });\n        before(entrySet.sourceList, composedLists);\n        remove(entrySet.sourceList);\n      });\n    };\n\n    const selectionIndentation = (editor, indentation) => {\n      const lists = fromDom(getSelectedListRoots(editor));\n      const dlItems = fromDom(getSelectedDlItems(editor));\n      let isHandled = false;\n      if (lists.length || dlItems.length) {\n        const bookmark = editor.selection.getBookmark();\n        listIndentation(editor, lists, indentation);\n        dlIndentation(editor, indentation, dlItems);\n        editor.selection.moveToBookmark(bookmark);\n        editor.selection.setRng(normalizeRange(editor.selection.getRng()));\n        editor.nodeChanged();\n        isHandled = true;\n      }\n      return isHandled;\n    };\n    const handleIndentation = (editor, indentation) => !selectionIsWithinNonEditableList(editor) && selectionIndentation(editor, indentation);\n    const indentListSelection = editor => handleIndentation(editor, 'Indent');\n    const outdentListSelection = editor => handleIndentation(editor, 'Outdent');\n    const flattenListSelection = editor => handleIndentation(editor, 'Flatten');\n\n    const zeroWidth = '\\uFEFF';\n    const isZwsp = char => char === zeroWidth;\n\n    const ancestor$1 = (scope, predicate, isRoot) => ancestor$3(scope, predicate, isRoot).isSome();\n\n    const ancestor = (element, target) => ancestor$1(element, curry(eq, target));\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager');\n\n    const DOM$1 = global$3.DOM;\n    const createBookmark = rng => {\n      const bookmark = {};\n      const setupEndPoint = start => {\n        let container = rng[start ? 'startContainer' : 'endContainer'];\n        let offset = rng[start ? 'startOffset' : 'endOffset'];\n        if (isElement(container)) {\n          const offsetNode = DOM$1.create('span', {\n            'data-mce-type': 'bookmark'\n          });\n          if (container.hasChildNodes()) {\n            offset = Math.min(offset, container.childNodes.length - 1);\n            if (start) {\n              container.insertBefore(offsetNode, container.childNodes[offset]);\n            } else {\n              DOM$1.insertAfter(offsetNode, container.childNodes[offset]);\n            }\n          } else {\n            container.appendChild(offsetNode);\n          }\n          container = offsetNode;\n          offset = 0;\n        }\n        bookmark[start ? 'startContainer' : 'endContainer'] = container;\n        bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n      };\n      setupEndPoint(true);\n      if (!rng.collapsed) {\n        setupEndPoint();\n      }\n      return bookmark;\n    };\n    const resolveBookmark = bookmark => {\n      const restoreEndPoint = start => {\n        const nodeIndex = container => {\n          var _a;\n          let node = (_a = container.parentNode) === null || _a === void 0 ? void 0 : _a.firstChild;\n          let idx = 0;\n          while (node) {\n            if (node === container) {\n              return idx;\n            }\n            if (!isElement(node) || node.getAttribute('data-mce-type') !== 'bookmark') {\n              idx++;\n            }\n            node = node.nextSibling;\n          }\n          return -1;\n        };\n        let container = bookmark[start ? 'startContainer' : 'endContainer'];\n        let offset = bookmark[start ? 'startOffset' : 'endOffset'];\n        if (!container) {\n          return;\n        }\n        if (isElement(container) && container.parentNode) {\n          const node = container;\n          offset = nodeIndex(container);\n          container = container.parentNode;\n          DOM$1.remove(node);\n          if (!container.hasChildNodes() && DOM$1.isBlock(container)) {\n            container.appendChild(DOM$1.create('br'));\n          }\n        }\n        bookmark[start ? 'startContainer' : 'endContainer'] = container;\n        bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n      };\n      restoreEndPoint(true);\n      restoreEndPoint();\n      const rng = DOM$1.createRng();\n      rng.setStart(bookmark.startContainer, bookmark.startOffset);\n      if (bookmark.endContainer) {\n        rng.setEnd(bookmark.endContainer, bookmark.endOffset);\n      }\n      return normalizeRange(rng);\n    };\n\n    const listToggleActionFromListName = listName => {\n      switch (listName) {\n        case 'UL':\n          return 'ToggleUlList';\n        case 'OL':\n          return 'ToggleOlList';\n        case 'DL':\n          return 'ToggleDLList';\n      }\n    };\n\n    const updateListStyle = (dom, el, detail) => {\n      const type = detail['list-style-type'] ? detail['list-style-type'] : null;\n      dom.setStyle(el, 'list-style-type', type);\n    };\n    const setAttribs = (elm, attrs) => {\n      global$2.each(attrs, (value, key) => {\n        elm.setAttribute(key, value);\n      });\n    };\n    const updateListAttrs = (dom, el, detail) => {\n      setAttribs(el, detail['list-attributes']);\n      global$2.each(dom.select('li', el), li => {\n        setAttribs(li, detail['list-item-attributes']);\n      });\n    };\n    const updateListWithDetails = (dom, el, detail) => {\n      updateListStyle(dom, el, detail);\n      updateListAttrs(dom, el, detail);\n    };\n    const removeStyles = (dom, element, styles) => {\n      global$2.each(styles, style => dom.setStyle(element, style, ''));\n    };\n    const isInline = (editor, node) => isNonNullable(node) && !isBlock(node, editor.schema.getBlockElements());\n    const getEndPointNode = (editor, rng, start, root) => {\n      let container = rng[start ? 'startContainer' : 'endContainer'];\n      const offset = rng[start ? 'startOffset' : 'endOffset'];\n      if (isElement(container)) {\n        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n      }\n      if (!start && isBr(container.nextSibling)) {\n        container = container.nextSibling;\n      }\n      const findBlockAncestor = node => {\n        while (!editor.dom.isBlock(node) && node.parentNode && root !== node) {\n          node = node.parentNode;\n        }\n        return node;\n      };\n      const findBetterContainer = (container, forward) => {\n        var _a;\n        const walker = new global$5(container, findBlockAncestor(container));\n        const dir = forward ? 'next' : 'prev';\n        let node;\n        while (node = walker[dir]()) {\n          if (!(isVoid(editor, node) || isZwsp(node.textContent) || ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.length) === 0)) {\n            return Optional.some(node);\n          }\n        }\n        return Optional.none();\n      };\n      if (start && isTextNode$1(container)) {\n        if (isZwsp(container.textContent)) {\n          container = findBetterContainer(container, false).getOr(container);\n        } else {\n          if (container.parentNode !== null && isInline(editor, container.parentNode)) {\n            container = container.parentNode;\n          }\n          while (container.previousSibling !== null && (isInline(editor, container.previousSibling) || isTextNode$1(container.previousSibling))) {\n            container = container.previousSibling;\n          }\n        }\n      }\n      if (!start && isTextNode$1(container)) {\n        if (isZwsp(container.textContent)) {\n          container = findBetterContainer(container, true).getOr(container);\n        } else {\n          if (container.parentNode !== null && isInline(editor, container.parentNode)) {\n            container = container.parentNode;\n          }\n          while (container.nextSibling !== null && (isInline(editor, container.nextSibling) || isTextNode$1(container.nextSibling))) {\n            container = container.nextSibling;\n          }\n        }\n      }\n      while (container.parentNode !== root) {\n        const parent = container.parentNode;\n        if (isTextBlock(editor, container)) {\n          return container;\n        }\n        if (/^(TD|TH)$/.test(parent.nodeName)) {\n          return container;\n        }\n        container = parent;\n      }\n      return container;\n    };\n    const getSelectedTextBlocks = (editor, rng, root) => {\n      const textBlocks = [];\n      const dom = editor.dom;\n      const startNode = getEndPointNode(editor, rng, true, root);\n      const endNode = getEndPointNode(editor, rng, false, root);\n      let block;\n      const siblings = [];\n      for (let node = startNode; node; node = node.nextSibling) {\n        siblings.push(node);\n        if (node === endNode) {\n          break;\n        }\n      }\n      global$2.each(siblings, node => {\n        var _a;\n        if (isTextBlock(editor, node)) {\n          textBlocks.push(node);\n          block = null;\n          return;\n        }\n        if (dom.isBlock(node) || isBr(node)) {\n          if (isBr(node)) {\n            dom.remove(node);\n          }\n          block = null;\n          return;\n        }\n        const nextSibling = node.nextSibling;\n        if (global$1.isBookmarkNode(node)) {\n          if (isListNode(nextSibling) || isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) {\n            block = null;\n            return;\n          }\n        }\n        if (!block) {\n          block = dom.create('p');\n          (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(block, node);\n          textBlocks.push(block);\n        }\n        block.appendChild(node);\n      });\n      return textBlocks;\n    };\n    const hasCompatibleStyle = (dom, sib, detail) => {\n      const sibStyle = dom.getStyle(sib, 'list-style-type');\n      let detailStyle = detail ? detail['list-style-type'] : '';\n      detailStyle = detailStyle === null ? '' : detailStyle;\n      return sibStyle === detailStyle;\n    };\n    const getRootSearchStart = (editor, range) => {\n      const start = editor.selection.getStart(true);\n      const startPoint = getEndPointNode(editor, range, true, editor.getBody());\n      if (ancestor(SugarElement.fromDom(startPoint), SugarElement.fromDom(range.commonAncestorContainer))) {\n        return range.commonAncestorContainer;\n      } else {\n        return start;\n      }\n    };\n    const applyList = (editor, listName, detail) => {\n      const rng = editor.selection.getRng();\n      let listItemName = 'LI';\n      const root = getClosestListHost(editor, getRootSearchStart(editor, rng));\n      const dom = editor.dom;\n      if (dom.getContentEditable(editor.selection.getNode()) === 'false') {\n        return;\n      }\n      listName = listName.toUpperCase();\n      if (listName === 'DL') {\n        listItemName = 'DT';\n      }\n      const bookmark = createBookmark(rng);\n      const selectedTextBlocks = filter$1(getSelectedTextBlocks(editor, rng, root), editor.dom.isEditable);\n      global$2.each(selectedTextBlocks, block => {\n        let listBlock;\n        const sibling = block.previousSibling;\n        const parent = block.parentNode;\n        if (!isListItemNode(parent)) {\n          if (sibling && isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) {\n            listBlock = sibling;\n            block = dom.rename(block, listItemName);\n            sibling.appendChild(block);\n          } else {\n            listBlock = dom.create(listName);\n            parent.insertBefore(listBlock, block);\n            listBlock.appendChild(block);\n            block = dom.rename(block, listItemName);\n          }\n          removeStyles(dom, block, ['margin', 'margin-right', 'margin-bottom', 'margin-left', 'margin-top', 'padding', 'padding-right', 'padding-bottom', 'padding-left', 'padding-top']);\n          updateListWithDetails(dom, listBlock, detail);\n          mergeWithAdjacentLists(editor.dom, listBlock);\n        }\n      });\n      editor.selection.setRng(resolveBookmark(bookmark));\n    };\n    const isValidLists = (list1, list2) => {\n      return isListNode(list1) && list1.nodeName === (list2 === null || list2 === void 0 ? void 0 : list2.nodeName);\n    };\n    const hasSameListStyle = (dom, list1, list2) => {\n      const targetStyle = dom.getStyle(list1, 'list-style-type', true);\n      const style = dom.getStyle(list2, 'list-style-type', true);\n      return targetStyle === style;\n    };\n    const hasSameClasses = (elm1, elm2) => {\n      return elm1.className === elm2.className;\n    };\n    const shouldMerge = (dom, list1, list2) => {\n      return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2);\n    };\n    const mergeWithAdjacentLists = (dom, listBlock) => {\n      let node;\n      let sibling = listBlock.nextSibling;\n      if (shouldMerge(dom, listBlock, sibling)) {\n        const liSibling = sibling;\n        while (node = liSibling.firstChild) {\n          listBlock.appendChild(node);\n        }\n        dom.remove(liSibling);\n      }\n      sibling = listBlock.previousSibling;\n      if (shouldMerge(dom, listBlock, sibling)) {\n        const liSibling = sibling;\n        while (node = liSibling.lastChild) {\n          listBlock.insertBefore(node, listBlock.firstChild);\n        }\n        dom.remove(liSibling);\n      }\n    };\n    const updateList$1 = (editor, list, listName, detail) => {\n      if (list.nodeName !== listName) {\n        const newList = editor.dom.rename(list, listName);\n        updateListWithDetails(editor.dom, newList, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), newList);\n      } else {\n        updateListWithDetails(editor.dom, list, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), list);\n      }\n    };\n    const updateCustomList = (editor, list, listName, detail) => {\n      list.classList.forEach((cls, _, classList) => {\n        if (cls.startsWith('tox-')) {\n          classList.remove(cls);\n          if (classList.length === 0) {\n            list.removeAttribute('class');\n          }\n        }\n      });\n      if (list.nodeName !== listName) {\n        const newList = editor.dom.rename(list, listName);\n        updateListWithDetails(editor.dom, newList, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), newList);\n      } else {\n        updateListWithDetails(editor.dom, list, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), list);\n      }\n    };\n    const toggleMultipleLists = (editor, parentList, lists, listName, detail) => {\n      const parentIsList = isListNode(parentList);\n      if (parentIsList && parentList.nodeName === listName && !hasListStyleDetail(detail) && !isCustomList(parentList)) {\n        flattenListSelection(editor);\n      } else {\n        applyList(editor, listName, detail);\n        const bookmark = createBookmark(editor.selection.getRng());\n        const allLists = parentIsList ? [parentList, ...lists] : lists;\n        const updateFunction = parentIsList && isCustomList(parentList) ? updateCustomList : updateList$1;\n        global$2.each(allLists, elm => {\n          updateFunction(editor, elm, listName, detail);\n        });\n        editor.selection.setRng(resolveBookmark(bookmark));\n      }\n    };\n    const hasListStyleDetail = detail => {\n      return 'list-style-type' in detail;\n    };\n    const toggleSingleList = (editor, parentList, listName, detail) => {\n      if (parentList === editor.getBody()) {\n        return;\n      }\n      if (parentList) {\n        if (parentList.nodeName === listName && !hasListStyleDetail(detail) && !isCustomList(parentList)) {\n          flattenListSelection(editor);\n        } else {\n          const bookmark = createBookmark(editor.selection.getRng());\n          if (isCustomList(parentList)) {\n            parentList.classList.forEach((cls, _, classList) => {\n              if (cls.startsWith('tox-')) {\n                classList.remove(cls);\n                if (classList.length === 0) {\n                  parentList.removeAttribute('class');\n                }\n              }\n            });\n          }\n          updateListWithDetails(editor.dom, parentList, detail);\n          const newList = editor.dom.rename(parentList, listName);\n          mergeWithAdjacentLists(editor.dom, newList);\n          editor.selection.setRng(resolveBookmark(bookmark));\n          applyList(editor, listName, detail);\n          fireListEvent(editor, listToggleActionFromListName(listName), newList);\n        }\n      } else {\n        applyList(editor, listName, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), parentList);\n      }\n    };\n    const toggleList = (editor, listName, _detail) => {\n      const parentList = getParentList(editor);\n      if (isWithinNonEditableList(editor, parentList)) {\n        return;\n      }\n      const selectedSubLists = getSelectedSubLists(editor);\n      const detail = isObject(_detail) ? _detail : {};\n      if (selectedSubLists.length > 0) {\n        toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);\n      } else {\n        toggleSingleList(editor, parentList, listName, detail);\n      }\n    };\n\n    const DOM = global$3.DOM;\n    const normalizeList = (dom, list) => {\n      const parentNode = list.parentElement;\n      if (parentNode && parentNode.nodeName === 'LI' && parentNode.firstChild === list) {\n        const sibling = parentNode.previousSibling;\n        if (sibling && sibling.nodeName === 'LI') {\n          sibling.appendChild(list);\n          if (isEmpty$2(dom, parentNode)) {\n            DOM.remove(parentNode);\n          }\n        } else {\n          DOM.setStyle(parentNode, 'listStyleType', 'none');\n        }\n      }\n      if (isListNode(parentNode)) {\n        const sibling = parentNode.previousSibling;\n        if (sibling && sibling.nodeName === 'LI') {\n          sibling.appendChild(list);\n        }\n      }\n    };\n    const normalizeLists = (dom, element) => {\n      const lists = global$2.grep(dom.select('ol,ul', element));\n      global$2.each(lists, list => {\n        normalizeList(dom, list);\n      });\n    };\n\n    const findNextCaretContainer = (editor, rng, isForward, root) => {\n      let node = rng.startContainer;\n      const offset = rng.startOffset;\n      if (isTextNode$1(node) && (isForward ? offset < node.data.length : offset > 0)) {\n        return node;\n      }\n      const nonEmptyBlocks = editor.schema.getNonEmptyElements();\n      if (isElement(node)) {\n        node = global$6.getNode(node, offset);\n      }\n      const walker = new global$5(node, root);\n      if (isForward) {\n        if (isBogusBr(editor.dom, node)) {\n          walker.next();\n        }\n      }\n      const walkFn = isForward ? walker.next.bind(walker) : walker.prev2.bind(walker);\n      while (node = walkFn()) {\n        if (node.nodeName === 'LI' && !node.hasChildNodes()) {\n          return node;\n        }\n        if (nonEmptyBlocks[node.nodeName]) {\n          return node;\n        }\n        if (isTextNode$1(node) && node.data.length > 0) {\n          return node;\n        }\n      }\n      return null;\n    };\n    const hasOnlyOneBlockChild = (dom, elm) => {\n      const childNodes = elm.childNodes;\n      return childNodes.length === 1 && !isListNode(childNodes[0]) && dom.isBlock(childNodes[0]);\n    };\n    const isUnwrappable = node => Optional.from(node).map(SugarElement.fromDom).filter(isHTMLElement).exists(el => isEditable(el) && !contains$1(['details'], name(el)));\n    const unwrapSingleBlockChild = (dom, elm) => {\n      if (hasOnlyOneBlockChild(dom, elm) && isUnwrappable(elm.firstChild)) {\n        dom.remove(elm.firstChild, true);\n      }\n    };\n    const moveChildren = (dom, fromElm, toElm) => {\n      let node;\n      const targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm;\n      unwrapSingleBlockChild(dom, fromElm);\n      if (!isEmpty$2(dom, fromElm, true)) {\n        while (node = fromElm.firstChild) {\n          targetElm.appendChild(node);\n        }\n      }\n    };\n    const mergeLiElements = (dom, fromElm, toElm) => {\n      let listNode;\n      const ul = fromElm.parentNode;\n      if (!isChildOfBody(dom, fromElm) || !isChildOfBody(dom, toElm)) {\n        return;\n      }\n      if (isListNode(toElm.lastChild)) {\n        listNode = toElm.lastChild;\n      }\n      if (ul === toElm.lastChild) {\n        if (isBr(ul.previousSibling)) {\n          dom.remove(ul.previousSibling);\n        }\n      }\n      const node = toElm.lastChild;\n      if (node && isBr(node) && fromElm.hasChildNodes()) {\n        dom.remove(node);\n      }\n      if (isEmpty$2(dom, toElm, true)) {\n        empty(SugarElement.fromDom(toElm));\n      }\n      moveChildren(dom, fromElm, toElm);\n      if (listNode) {\n        toElm.appendChild(listNode);\n      }\n      const contains$1 = contains(SugarElement.fromDom(toElm), SugarElement.fromDom(fromElm));\n      const nestedLists = contains$1 ? dom.getParents(fromElm, isListNode, toElm) : [];\n      dom.remove(fromElm);\n      each$1(nestedLists, list => {\n        if (isEmpty$2(dom, list) && list !== dom.getRoot()) {\n          dom.remove(list);\n        }\n      });\n    };\n    const mergeIntoEmptyLi = (editor, fromLi, toLi) => {\n      empty(SugarElement.fromDom(toLi));\n      mergeLiElements(editor.dom, fromLi, toLi);\n      editor.selection.setCursorLocation(toLi, 0);\n    };\n    const mergeForward = (editor, rng, fromLi, toLi) => {\n      const dom = editor.dom;\n      if (dom.isEmpty(toLi)) {\n        mergeIntoEmptyLi(editor, fromLi, toLi);\n      } else {\n        const bookmark = createBookmark(rng);\n        mergeLiElements(dom, fromLi, toLi);\n        editor.selection.setRng(resolveBookmark(bookmark));\n      }\n    };\n    const mergeBackward = (editor, rng, fromLi, toLi) => {\n      const bookmark = createBookmark(rng);\n      mergeLiElements(editor.dom, fromLi, toLi);\n      const resolvedBookmark = resolveBookmark(bookmark);\n      editor.selection.setRng(resolvedBookmark);\n    };\n    const backspaceDeleteFromListToListCaret = (editor, isForward) => {\n      const dom = editor.dom,\n        selection = editor.selection;\n      const selectionStartElm = selection.getStart();\n      const root = getClosestEditingHost(editor, selectionStartElm);\n      const li = dom.getParent(selection.getStart(), 'LI', root);\n      if (li) {\n        const ul = li.parentElement;\n        if (ul === editor.getBody() && isEmpty$2(dom, ul)) {\n          return true;\n        }\n        const rng = normalizeRange(selection.getRng());\n        const otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n        const willMergeParentIntoChild = otherLi && (isForward ? dom.isChildOf(li, otherLi) : dom.isChildOf(otherLi, li));\n        if (otherLi && otherLi !== li && !willMergeParentIntoChild) {\n          editor.undoManager.transact(() => {\n            if (isForward) {\n              mergeForward(editor, rng, otherLi, li);\n            } else {\n              if (isFirstChild(li)) {\n                outdentListSelection(editor);\n              } else {\n                mergeBackward(editor, rng, li, otherLi);\n              }\n            }\n          });\n          return true;\n        } else if (willMergeParentIntoChild && !isForward && otherLi !== li) {\n          editor.undoManager.transact(() => {\n            if (rng.commonAncestorContainer.parentElement) {\n              const bookmark = createBookmark(rng);\n              const oldParentElRef = rng.commonAncestorContainer.parentElement;\n              moveChildren(dom, rng.commonAncestorContainer.parentElement, otherLi);\n              oldParentElRef.remove();\n              const resolvedBookmark = resolveBookmark(bookmark);\n              editor.selection.setRng(resolvedBookmark);\n            }\n          });\n          return true;\n        } else if (!otherLi) {\n          if (!isForward && rng.startOffset === 0 && rng.endOffset === 0) {\n            editor.undoManager.transact(() => {\n              flattenListSelection(editor);\n            });\n            return true;\n          }\n        }\n      }\n      return false;\n    };\n    const removeBlock = (dom, block, root) => {\n      const parentBlock = dom.getParent(block.parentNode, dom.isBlock, root);\n      dom.remove(block);\n      if (parentBlock && dom.isEmpty(parentBlock)) {\n        dom.remove(parentBlock);\n      }\n    };\n    const backspaceDeleteIntoListCaret = (editor, isForward) => {\n      const dom = editor.dom;\n      const selectionStartElm = editor.selection.getStart();\n      const root = getClosestEditingHost(editor, selectionStartElm);\n      const block = dom.getParent(selectionStartElm, dom.isBlock, root);\n      if (block && dom.isEmpty(block)) {\n        const rng = normalizeRange(editor.selection.getRng());\n        const otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n        if (otherLi) {\n          const findValidElement = element => contains$1(['td', 'th', 'caption'], name(element));\n          const findRoot = node => node.dom === root;\n          const otherLiCell = closest$2(SugarElement.fromDom(otherLi), findValidElement, findRoot);\n          const caretCell = closest$2(SugarElement.fromDom(rng.startContainer), findValidElement, findRoot);\n          if (!equals(otherLiCell, caretCell, eq)) {\n            return false;\n          }\n          editor.undoManager.transact(() => {\n            const parentNode = otherLi.parentNode;\n            removeBlock(dom, block, root);\n            mergeWithAdjacentLists(dom, parentNode);\n            editor.selection.select(otherLi, true);\n            editor.selection.collapse(isForward);\n          });\n          return true;\n        }\n      }\n      return false;\n    };\n    const backspaceDeleteCaret = (editor, isForward) => {\n      return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward);\n    };\n    const hasListSelection = editor => {\n      const selectionStartElm = editor.selection.getStart();\n      const root = getClosestEditingHost(editor, selectionStartElm);\n      const startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);\n      return startListParent || getSelectedListItems(editor).length > 0;\n    };\n    const backspaceDeleteRange = editor => {\n      if (hasListSelection(editor)) {\n        editor.undoManager.transact(() => {\n          editor.execCommand('Delete');\n          normalizeLists(editor.dom, editor.getBody());\n        });\n        return true;\n      }\n      return false;\n    };\n    const backspaceDelete = (editor, isForward) => {\n      const selection = editor.selection;\n      return !isWithinNonEditableList(editor, selection.getNode()) && (selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor));\n    };\n    const setup$2 = editor => {\n      editor.on('ExecCommand', e => {\n        const cmd = e.command.toLowerCase();\n        if ((cmd === 'delete' || cmd === 'forwarddelete') && hasListSelection(editor)) {\n          normalizeLists(editor.dom, editor.getBody());\n        }\n      });\n      editor.on('keydown', e => {\n        if (e.keyCode === global$4.BACKSPACE) {\n          if (backspaceDelete(editor, false)) {\n            e.preventDefault();\n          }\n        } else if (e.keyCode === global$4.DELETE) {\n          if (backspaceDelete(editor, true)) {\n            e.preventDefault();\n          }\n        }\n      });\n    };\n\n    const get = editor => ({\n      backspaceDelete: isForward => {\n        backspaceDelete(editor, isForward);\n      }\n    });\n\n    const updateList = (editor, update) => {\n      const parentList = getParentList(editor);\n      if (parentList === null || isWithinNonEditableList(editor, parentList)) {\n        return;\n      }\n      editor.undoManager.transact(() => {\n        if (isObject(update.styles)) {\n          editor.dom.setStyles(parentList, update.styles);\n        }\n        if (isObject(update.attrs)) {\n          each(update.attrs, (v, k) => editor.dom.setAttrib(parentList, k, v));\n        }\n      });\n    };\n\n    const parseAlphabeticBase26 = str => {\n      const chars = reverse(trim(str).split(''));\n      const values = map(chars, (char, i) => {\n        const charValue = char.toUpperCase().charCodeAt(0) - 'A'.charCodeAt(0) + 1;\n        return Math.pow(26, i) * charValue;\n      });\n      return foldl(values, (sum, v) => sum + v, 0);\n    };\n    const composeAlphabeticBase26 = value => {\n      value--;\n      if (value < 0) {\n        return '';\n      } else {\n        const remainder = value % 26;\n        const quotient = Math.floor(value / 26);\n        const rest = composeAlphabeticBase26(quotient);\n        const char = String.fromCharCode('A'.charCodeAt(0) + remainder);\n        return rest + char;\n      }\n    };\n    const isUppercase = str => /^[A-Z]+$/.test(str);\n    const isLowercase = str => /^[a-z]+$/.test(str);\n    const isNumeric = str => /^[0-9]+$/.test(str);\n    const deduceListType = start => {\n      if (isNumeric(start)) {\n        return 2;\n      } else if (isUppercase(start)) {\n        return 0;\n      } else if (isLowercase(start)) {\n        return 1;\n      } else if (isEmpty$1(start)) {\n        return 3;\n      } else {\n        return 4;\n      }\n    };\n    const parseStartValue = start => {\n      switch (deduceListType(start)) {\n        case 2:\n          return Optional.some({\n            listStyleType: Optional.none(),\n            start\n          });\n        case 0:\n          return Optional.some({\n            listStyleType: Optional.some('upper-alpha'),\n            start: parseAlphabeticBase26(start).toString()\n          });\n        case 1:\n          return Optional.some({\n            listStyleType: Optional.some('lower-alpha'),\n            start: parseAlphabeticBase26(start).toString()\n          });\n        case 3:\n          return Optional.some({\n            listStyleType: Optional.none(),\n            start: ''\n          });\n        case 4:\n          return Optional.none();\n      }\n    };\n    const parseDetail = detail => {\n      const start = parseInt(detail.start, 10);\n      if (is$2(detail.listStyleType, 'upper-alpha')) {\n        return composeAlphabeticBase26(start);\n      } else if (is$2(detail.listStyleType, 'lower-alpha')) {\n        return composeAlphabeticBase26(start).toLowerCase();\n      } else {\n        return detail.start;\n      }\n    };\n\n    const open = editor => {\n      const currentList = getParentList(editor);\n      if (!isOlNode(currentList) || isWithinNonEditableList(editor, currentList)) {\n        return;\n      }\n      editor.windowManager.open({\n        title: 'List Properties',\n        body: {\n          type: 'panel',\n          items: [{\n            type: 'input',\n            name: 'start',\n            label: 'Start list at number',\n            inputMode: 'numeric'\n          }]\n        },\n        initialData: {\n          start: parseDetail({\n            start: editor.dom.getAttrib(currentList, 'start', '1'),\n            listStyleType: Optional.from(editor.dom.getStyle(currentList, 'list-style-type'))\n          })\n        },\n        buttons: [{\n          type: 'cancel',\n          name: 'cancel',\n          text: 'Cancel'\n        }, {\n          type: 'submit',\n          name: 'save',\n          text: 'Save',\n          primary: true\n        }],\n        onSubmit: api => {\n          const data = api.getData();\n          parseStartValue(data.start).each(detail => {\n            editor.execCommand('mceListUpdate', false, {\n              attrs: {\n                start: detail.start === '1' ? '' : detail.start\n              },\n              styles: {\n                'list-style-type': detail.listStyleType.getOr('')\n              }\n            });\n          });\n          api.close();\n        }\n      });\n    };\n\n    const queryListCommandState = (editor, listName) => () => {\n      const parentList = getParentList(editor);\n      return isNonNullable(parentList) && parentList.nodeName === listName;\n    };\n    const registerDialog = editor => {\n      editor.addCommand('mceListProps', () => {\n        open(editor);\n      });\n    };\n    const register$2 = editor => {\n      editor.on('BeforeExecCommand', e => {\n        const cmd = e.command.toLowerCase();\n        if (cmd === 'indent') {\n          indentListSelection(editor);\n        } else if (cmd === 'outdent') {\n          outdentListSelection(editor);\n        }\n      });\n      editor.addCommand('InsertUnorderedList', (ui, detail) => {\n        toggleList(editor, 'UL', detail);\n      });\n      editor.addCommand('InsertOrderedList', (ui, detail) => {\n        toggleList(editor, 'OL', detail);\n      });\n      editor.addCommand('InsertDefinitionList', (ui, detail) => {\n        toggleList(editor, 'DL', detail);\n      });\n      editor.addCommand('RemoveList', () => {\n        flattenListSelection(editor);\n      });\n      registerDialog(editor);\n      editor.addCommand('mceListUpdate', (ui, detail) => {\n        if (isObject(detail)) {\n          updateList(editor, detail);\n        }\n      });\n      editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));\n      editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));\n      editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n    const isTextNode = node => node.type === 3;\n    const isEmpty = nodeBuffer => nodeBuffer.length === 0;\n    const wrapInvalidChildren = list => {\n      const insertListItem = (buffer, refNode) => {\n        const li = global.create('li');\n        each$1(buffer, node => li.append(node));\n        if (refNode) {\n          list.insert(li, refNode, true);\n        } else {\n          list.append(li);\n        }\n      };\n      const reducer = (buffer, node) => {\n        if (isTextNode(node)) {\n          return [...buffer, node];\n        } else if (!isEmpty(buffer) && !isTextNode(node)) {\n          insertListItem(buffer, node);\n          return [];\n        } else {\n          return buffer;\n        }\n      };\n      const restBuffer = foldl(list.children(), reducer, []);\n      if (!isEmpty(restBuffer)) {\n        insertListItem(restBuffer);\n      }\n    };\n    const setup$1 = editor => {\n      editor.on('PreInit', () => {\n        const {\n          parser\n        } = editor;\n        parser.addNodeFilter('ul,ol', nodes => each$1(nodes, wrapInvalidChildren));\n      });\n    };\n\n    const setupTabKey = editor => {\n      editor.on('keydown', e => {\n        if (e.keyCode !== global$4.TAB || global$4.metaKeyPressed(e)) {\n          return;\n        }\n        editor.undoManager.transact(() => {\n          if (e.shiftKey ? outdentListSelection(editor) : indentListSelection(editor)) {\n            e.preventDefault();\n          }\n        });\n      });\n    };\n    const setup = editor => {\n      if (shouldIndentOnTab(editor)) {\n        setupTabKey(editor);\n      }\n      setup$2(editor);\n    };\n\n    const setupToggleButtonHandler = (editor, listName) => api => {\n      const toggleButtonHandler = e => {\n        api.setActive(inList(e.parents, listName));\n        api.setEnabled(!isWithinNonEditableList(editor, e.element) && editor.selection.isEditable());\n      };\n      api.setEnabled(editor.selection.isEditable());\n      return setNodeChangeHandler(editor, toggleButtonHandler);\n    };\n    const register$1 = editor => {\n      const exec = command => () => editor.execCommand(command);\n      if (!editor.hasPlugin('advlist')) {\n        editor.ui.registry.addToggleButton('numlist', {\n          icon: 'ordered-list',\n          active: false,\n          tooltip: 'Numbered list',\n          onAction: exec('InsertOrderedList'),\n          onSetup: setupToggleButtonHandler(editor, 'OL')\n        });\n        editor.ui.registry.addToggleButton('bullist', {\n          icon: 'unordered-list',\n          active: false,\n          tooltip: 'Bullet list',\n          onAction: exec('InsertUnorderedList'),\n          onSetup: setupToggleButtonHandler(editor, 'UL')\n        });\n      }\n    };\n\n    const setupMenuButtonHandler = (editor, listName) => api => {\n      const menuButtonHandler = e => api.setEnabled(inList(e.parents, listName) && !isWithinNonEditableList(editor, e.element));\n      return setNodeChangeHandler(editor, menuButtonHandler);\n    };\n    const register = editor => {\n      const listProperties = {\n        text: 'List properties...',\n        icon: 'ordered-list',\n        onAction: () => editor.execCommand('mceListProps'),\n        onSetup: setupMenuButtonHandler(editor, 'OL')\n      };\n      editor.ui.registry.addMenuItem('listprops', listProperties);\n      editor.ui.registry.addContextMenu('lists', {\n        update: node => {\n          const parentList = getParentList(editor, node);\n          return isOlNode(parentList) ? ['listprops'] : [];\n        }\n      });\n    };\n\n    var Plugin = () => {\n      global$7.add('lists', editor => {\n        register$3(editor);\n        setup$1(editor);\n        if (!editor.hasPlugin('rtc', true)) {\n          setup(editor);\n          register$2(editor);\n        } else {\n          registerDialog(editor);\n        }\n        register$1(editor);\n        register(editor);\n        return get(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$6 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq = t => a => t === a;\n    const isString = isType('string');\n    const isObject = isType('object');\n    const isArray = isType('array');\n    const isBoolean = isSimpleType('boolean');\n    const isUndefined = eq(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n\n    const noop = () => {};\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const apply = f => {\n      return f();\n    };\n    const always = constant(true);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const nativeSlice = Array.prototype.slice;\n    const nativePush = Array.prototype.push;\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const filter = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const from = isFunction(Array.from) ? Array.from : x => nativeSlice.call(x);\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    const keys = Object.keys;\n    const hasOwnProperty = Object.hasOwnProperty;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const get$2 = (obj, key) => {\n      return has(obj, key) ? Optional.from(obj[key]) : Optional.none();\n    };\n    const has = (obj, key) => hasOwnProperty.call(obj, key);\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('audio_template_callback', {\n        processor: 'function'\n      });\n      registerOption('video_template_callback', {\n        processor: 'function'\n      });\n      registerOption('iframe_template_callback', {\n        processor: 'function'\n      });\n      registerOption('media_live_embeds', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('media_filter_html', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('media_url_resolver', {\n        processor: 'function'\n      });\n      registerOption('media_alt_source', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('media_poster', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('media_dimensions', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('sn_settings', {\n        processor: 'object',\n        default: {}\n      });\n    };\n    const getAudioTemplateCallback = option('audio_template_callback');\n    const getVideoTemplateCallback = option('video_template_callback');\n    const getIframeTemplateCallback = option('iframe_template_callback');\n    const hasLiveEmbeds = option('media_live_embeds');\n    const shouldFilterHtml = option('media_filter_html');\n    const getUrlResolver = option('media_url_resolver');\n    const hasAltSource = option('media_alt_source');\n    const hasPoster = option('media_poster');\n    const hasDimensions = option('media_dimensions');\n    const getSnMediaSettings = editor => {\n      const snSettings = option('sn_settings')(editor);\n      const {\n        allowLibrarySearch = true,\n        attachmentList = [],\n        showLocalsTab = false,\n        libraryFilePicker = (_editor, callback) => callback(''),\n        labels = {},\n        mediaUploadHandler\n      } = (snSettings === null || snSettings === void 0 ? void 0 : snSettings.media) || {};\n      return {\n        allowLibrarySearch,\n        attachmentList,\n        showLocalsTab,\n        libraryFilePicker,\n        labels: {\n          tabName: 'Local Media',\n          search: 'Search Library',\n          attachmentList: 'Attachment List',\n          typeAttachment: 'Attachment',\n          typeLibrary: 'Public Library',\n          waitOpen: 'Loading Attachments',\n          ...labels\n        },\n        mediaUploadHandler\n      };\n    };\n    const isAutomaticUploadsEnabled = editor => option('automatic_uploads');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.html.DomParser');\n\n    const DOM$1 = global$4.DOM;\n    const trimPx = value => value.replace(/px$/, '');\n    const getEphoxEmbedData = node => {\n      const style = node.attr('style');\n      const styles = style ? DOM$1.parseStyle(style) : {};\n      return {\n        type: 'ephox-embed-iri',\n        source: node.attr('data-ephox-embed-iri'),\n        altsource: '',\n        poster: '',\n        width: get$2(styles, 'max-width').map(trimPx).getOr(''),\n        height: get$2(styles, 'max-height').map(trimPx).getOr('')\n      };\n    };\n    const htmlToData = (html, schema) => {\n      let data = {};\n      const parser = global$3({\n        validate: false,\n        forced_root_block: false\n      }, schema);\n      const rootNode = parser.parse(html);\n      for (let node = rootNode; node; node = node.walk()) {\n        if (node.type === 1) {\n          const name = node.name;\n          if (node.attr('data-ephox-embed-iri')) {\n            data = getEphoxEmbedData(node);\n            break;\n          } else {\n            if (!data.source && name === 'param') {\n              data.source = node.attr('movie');\n            }\n            if (name === 'iframe' || name === 'object' || name === 'embed' || name === 'video' || name === 'audio') {\n              if (!data.type) {\n                data.type = name;\n              }\n              data = global$5.extend(node.attributes.map, data);\n            }\n            if (name === 'source') {\n              if (!data.source) {\n                data.source = node.attr('src');\n              } else if (!data.altsource) {\n                data.altsource = node.attr('src');\n              }\n            }\n            if (name === 'img' && !data.poster) {\n              data.poster = node.attr('src');\n            }\n          }\n        }\n      }\n      data.source = data.source || data.src || '';\n      data.altsource = data.altsource || '';\n      data.poster = data.poster || '';\n      return data;\n    };\n\n    const guess = url => {\n      var _a;\n      const mimes = {\n        mp3: 'audio/mpeg',\n        m4a: 'audio/x-m4a',\n        wav: 'audio/wav',\n        mp4: 'video/mp4',\n        webm: 'video/webm',\n        ogg: 'video/ogg',\n        swf: 'application/x-shockwave-flash'\n      };\n      const fileEnd = (_a = url.toLowerCase().split('.').pop()) !== null && _a !== void 0 ? _a : '';\n      return get$2(mimes, fileEnd).getOr('');\n    };\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.html.Serializer');\n\n    const Parser = (schema, settings = {}) => global$3({\n      forced_root_block: false,\n      validate: false,\n      allow_conditional_comments: true,\n      ...settings\n    }, schema);\n\n    const DOM = global$4.DOM;\n    const addPx = value => /^[0-9.]+$/.test(value) ? value + 'px' : value;\n    const updateEphoxEmbed = (data, node) => {\n      const style = node.attr('style');\n      const styleMap = style ? DOM.parseStyle(style) : {};\n      if (isNonNullable(data.width)) {\n        styleMap['max-width'] = addPx(data.width);\n      }\n      if (isNonNullable(data.height)) {\n        styleMap['max-height'] = addPx(data.height);\n      }\n      node.attr('style', DOM.serializeStyle(styleMap));\n    };\n    const sources = ['source', 'altsource'];\n    const updateHtml = (html, data, updateAll, schema) => {\n      let numSources = 0;\n      let sourceCount = 0;\n      const parser = Parser(schema);\n      parser.addNodeFilter('source', nodes => numSources = nodes.length);\n      const rootNode = parser.parse(html);\n      for (let node = rootNode; node; node = node.walk()) {\n        if (node.type === 1) {\n          const name = node.name;\n          if (node.attr('data-ephox-embed-iri')) {\n            updateEphoxEmbed(data, node);\n            break;\n          } else {\n            switch (name) {\n              case 'video':\n              case 'object':\n              case 'embed':\n              case 'img':\n              case 'iframe':\n                if (data.height !== undefined && data.width !== undefined) {\n                  node.attr('width', data.width);\n                  node.attr('height', data.height);\n                }\n                break;\n            }\n            if (updateAll) {\n              switch (name) {\n                case 'video':\n                  node.attr('poster', data.poster);\n                  node.attr('src', null);\n                  for (let index = numSources; index < 2; index++) {\n                    if (data[sources[index]]) {\n                      const source = new global$2('source', 1);\n                      source.attr('src', data[sources[index]]);\n                      source.attr('type', data[sources[index] + 'mime'] || null);\n                      node.append(source);\n                    }\n                  }\n                  break;\n                case 'iframe':\n                  node.attr('src', data.source);\n                  break;\n                case 'object':\n                  const hasImage = node.getAll('img').length > 0;\n                  if (data.poster && !hasImage) {\n                    node.attr('src', data.poster);\n                    const img = new global$2('img', 1);\n                    img.attr('src', data.poster);\n                    img.attr('width', data.width);\n                    img.attr('height', data.height);\n                    node.append(img);\n                  }\n                  break;\n                case 'source':\n                  if (sourceCount < 2) {\n                    node.attr('src', data[sources[sourceCount]]);\n                    node.attr('type', data[sources[sourceCount] + 'mime'] || null);\n                    if (!data[sources[sourceCount]]) {\n                      node.remove();\n                      continue;\n                    }\n                  }\n                  sourceCount++;\n                  break;\n                case 'img':\n                  if (!data.poster) {\n                    node.remove();\n                  }\n                  break;\n              }\n            }\n          }\n        }\n      }\n      return global$1({}, schema).serialize(rootNode);\n    };\n\n    const urlPatterns = [{\n      regex: /youtu\\.be\\/([\\w\\-_\\?&=.]+)/i,\n      type: 'iframe',\n      w: 560,\n      h: 314,\n      url: 'www.youtube.com/embed/$1',\n      allowFullscreen: true\n    }, {\n      regex: /youtube\\.com(.+)v=([^&]+)(&([a-z0-9&=\\-_]+))?/i,\n      type: 'iframe',\n      w: 560,\n      h: 314,\n      url: 'www.youtube.com/embed/$2?$4',\n      allowFullscreen: true\n    }, {\n      regex: /youtube.com\\/embed\\/([a-z0-9\\?&=\\-_]+)/i,\n      type: 'iframe',\n      w: 560,\n      h: 314,\n      url: 'www.youtube.com/embed/$1',\n      allowFullscreen: true\n    }, {\n      regex: /vimeo\\.com\\/([0-9]+)\\?h=(\\w+)/,\n      type: 'iframe',\n      w: 425,\n      h: 350,\n      url: 'player.vimeo.com/video/$1?h=$2&title=0&byline=0&portrait=0&color=8dc7dc',\n      allowFullscreen: true\n    }, {\n      regex: /vimeo\\.com\\/(.*)\\/([0-9]+)\\?h=(\\w+)/,\n      type: 'iframe',\n      w: 425,\n      h: 350,\n      url: 'player.vimeo.com/video/$2?h=$3&title=0&amp;byline=0',\n      allowFullscreen: true\n    }, {\n      regex: /vimeo\\.com\\/([0-9]+)/,\n      type: 'iframe',\n      w: 425,\n      h: 350,\n      url: 'player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc',\n      allowFullscreen: true\n    }, {\n      regex: /vimeo\\.com\\/(.*)\\/([0-9]+)/,\n      type: 'iframe',\n      w: 425,\n      h: 350,\n      url: 'player.vimeo.com/video/$2?title=0&amp;byline=0',\n      allowFullscreen: true\n    }, {\n      regex: /maps\\.google\\.([a-z]{2,3})\\/maps\\/(.+)msid=(.+)/,\n      type: 'iframe',\n      w: 425,\n      h: 350,\n      url: 'maps.google.com/maps/ms?msid=$2&output=embed\"',\n      allowFullscreen: false\n    }, {\n      regex: /dailymotion\\.com\\/video\\/([^_]+)/,\n      type: 'iframe',\n      w: 480,\n      h: 270,\n      url: 'www.dailymotion.com/embed/video/$1',\n      allowFullscreen: true\n    }, {\n      regex: /dai\\.ly\\/([^_]+)/,\n      type: 'iframe',\n      w: 480,\n      h: 270,\n      url: 'www.dailymotion.com/embed/video/$1',\n      allowFullscreen: true\n    }];\n    const getProtocol = url => {\n      const protocolMatches = url.match(/^(https?:\\/\\/|www\\.)(.+)$/i);\n      if (protocolMatches && protocolMatches.length > 1) {\n        return protocolMatches[1] === 'www.' ? 'https://' : protocolMatches[1];\n      } else {\n        return 'https://';\n      }\n    };\n    const getUrl = (pattern, url) => {\n      const protocol = getProtocol(url);\n      const match = pattern.regex.exec(url);\n      let newUrl = protocol + pattern.url;\n      if (isNonNullable(match)) {\n        for (let i = 0; i < match.length; i++) {\n          newUrl = newUrl.replace('$' + i, () => match[i] ? match[i] : '');\n        }\n      }\n      return newUrl.replace(/\\?$/, '');\n    };\n    const matchPattern = url => {\n      const patterns = urlPatterns.filter(pattern => pattern.regex.test(url));\n      if (patterns.length > 0) {\n        return global$5.extend({}, patterns[0], {\n          url: getUrl(patterns[0], url)\n        });\n      } else {\n        return null;\n      }\n    };\n\n    const getIframeHtml = (data, iframeTemplateCallback) => {\n      if (iframeTemplateCallback) {\n        return iframeTemplateCallback(data);\n      } else {\n        const allowFullscreen = data.allowfullscreen ? ' allowFullscreen=\"1\"' : '';\n        return '<iframe src=\"' + data.source + '\" width=\"' + data.width + '\" height=\"' + data.height + '\"' + allowFullscreen + '></iframe>';\n      }\n    };\n    const getFlashHtml = data => {\n      let html = '<object data=\"' + data.source + '\" width=\"' + data.width + '\" height=\"' + data.height + '\" type=\"application/x-shockwave-flash\">';\n      if (data.poster) {\n        html += '<img src=\"' + data.poster + '\" width=\"' + data.width + '\" height=\"' + data.height + '\" />';\n      }\n      html += '</object>';\n      return html;\n    };\n    const getAudioHtml = (data, audioTemplateCallback) => {\n      if (audioTemplateCallback) {\n        return audioTemplateCallback(data);\n      } else {\n        return '<audio controls=\"controls\" src=\"' + data.source + '\">' + (data.altsource ? '\\n<source src=\"' + data.altsource + '\"' + (data.altsourcemime ? ' type=\"' + data.altsourcemime + '\"' : '') + ' />\\n' : '') + '</audio>';\n      }\n    };\n    const getVideoHtml = (data, videoTemplateCallback) => {\n      if (videoTemplateCallback) {\n        return videoTemplateCallback(data);\n      } else {\n        return '<video width=\"' + data.width + '\" height=\"' + data.height + '\"' + (data.poster ? ' poster=\"' + data.poster + '\"' : '') + ' controls=\"controls\">\\n' + '<source src=\"' + data.source + '\"' + (data.sourcemime ? ' type=\"' + data.sourcemime + '\"' : '') + ' />\\n' + (data.altsource ? '<source src=\"' + data.altsource + '\"' + (data.altsourcemime ? ' type=\"' + data.altsourcemime + '\"' : '') + ' />\\n' : '') + '</video>';\n      }\n    };\n    const dataToHtml = (editor, dataIn) => {\n      var _a;\n      const data = global$5.extend({}, dataIn);\n      if (!data.source) {\n        global$5.extend(data, htmlToData((_a = data.embed) !== null && _a !== void 0 ? _a : '', editor.schema));\n        if (!data.source) {\n          return '';\n        }\n      }\n      if (!data.altsource) {\n        data.altsource = '';\n      }\n      if (!data.poster) {\n        data.poster = '';\n      }\n      data.source = editor.convertURL(data.source, 'source');\n      data.altsource = editor.convertURL(data.altsource, 'source');\n      data.sourcemime = guess(data.source);\n      data.altsourcemime = guess(data.altsource);\n      data.poster = editor.convertURL(data.poster, 'poster');\n      const pattern = matchPattern(data.source);\n      if (pattern) {\n        data.source = pattern.url;\n        data.type = pattern.type;\n        data.allowfullscreen = pattern.allowFullscreen;\n        data.width = data.width || String(pattern.w);\n        data.height = data.height || String(pattern.h);\n      }\n      if (data.embed) {\n        return updateHtml(data.embed, data, true, editor.schema);\n      } else {\n        const audioTemplateCallback = getAudioTemplateCallback(editor);\n        const videoTemplateCallback = getVideoTemplateCallback(editor);\n        const iframeTemplateCallback = getIframeTemplateCallback(editor);\n        data.width = data.width || '300';\n        data.height = data.height || '150';\n        global$5.each(data, (value, key) => {\n          data[key] = editor.dom.encode('' + value);\n        });\n        if (data.type === 'iframe') {\n          return getIframeHtml(data, iframeTemplateCallback);\n        } else if (data.sourcemime === 'application/x-shockwave-flash') {\n          return getFlashHtml(data);\n        } else if (data.sourcemime.indexOf('audio') !== -1) {\n          return getAudioHtml(data, audioTemplateCallback);\n        } else {\n          return getVideoHtml(data, videoTemplateCallback);\n        }\n      }\n    };\n\n    const isMediaElement = element => element.hasAttribute('data-mce-object') || element.hasAttribute('data-ephox-embed-iri');\n    const setup$3 = editor => {\n      editor.on('click keyup touchend', () => {\n        const selectedNode = editor.selection.getNode();\n        if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {\n          if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) {\n            selectedNode.setAttribute('data-mce-selected', '2');\n          }\n        }\n      });\n      editor.on('ObjectResized', e => {\n        const target = e.target;\n        if (target.getAttribute('data-mce-object')) {\n          let html = target.getAttribute('data-mce-html');\n          if (html) {\n            html = unescape(html);\n            target.setAttribute('data-mce-html', escape(updateHtml(html, {\n              width: String(e.width),\n              height: String(e.height)\n            }, false, editor.schema)));\n          }\n        }\n      });\n    };\n\n    const cache = {};\n    const embedPromise = (data, dataToHtml, handler) => {\n      return new Promise((res, rej) => {\n        const wrappedResolve = response => {\n          if (response.html) {\n            cache[data.source] = response;\n          }\n          return res({\n            url: data.source,\n            html: response.html ? response.html : dataToHtml(data)\n          });\n        };\n        if (cache[data.source]) {\n          wrappedResolve(cache[data.source]);\n        } else {\n          handler({\n            url: data.source\n          }, wrappedResolve, rej);\n        }\n      });\n    };\n    const defaultPromise = (data, dataToHtml) => Promise.resolve({\n      html: dataToHtml(data),\n      url: data.source\n    });\n    const loadedData = editor => data => dataToHtml(editor, data);\n    const getEmbedHtml = (editor, data) => {\n      const embedHandler = getUrlResolver(editor);\n      return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor));\n    };\n    const isCached = url => has(cache, url);\n\n    const handleBrowseLibrary = (editor, settings) => api => settings.libraryFilePicker(editor, file => {\n      api.setData({\n        source: {\n          value: file,\n          meta: {}\n        }\n      });\n      api.showTab('general');\n    });\n    const handleSourceUpdate = (editor, config, settings, dialog) => {\n      new Promise(resolve => {\n        dialog.block('');\n        const body = config.body;\n        const index = body.tabs.findIndex(({\n          title\n        }) => title === settings.labels.tabName);\n        body.tabs[index] = makeTab(editor, dialog.getData(), settings, resolve);\n        config.initialData = dialog.getData();\n      }).then(() => {\n        dialog.redial(config);\n        dialog.showTab('local');\n        dialog.unblock();\n      });\n    };\n    const urlListSanitizer = (editor, list) => {\n      return [...(list === null || list === void 0 ? void 0 : list.map(({\n        title,\n        value\n      }) => ({\n        text: title,\n        value: editor.convertURL(value, '')\n      })))];\n    };\n    const makeTab = (editor, {\n      localsTabSourceType\n    }, settings, onListLoaded) => {\n      const items = [];\n      const {\n        allowLibrarySearch,\n        attachmentList,\n        labels\n      } = settings;\n      if (allowLibrarySearch) {\n        items.push({\n          type: 'selectbox',\n          name: 'localsTabSourceType',\n          label: 'Source',\n          size: 1,\n          items: [{\n            text: labels.typeAttachment,\n            value: 'attachment'\n          }, {\n            text: labels.typeLibrary,\n            value: 'library'\n          }]\n        });\n      }\n      let callLoaded = true;\n      if (localsTabSourceType === 'attachment') {\n        if (attachmentList) {\n          const attachConfig = {\n            type: 'listbox',\n            name: 'attachments',\n            label: labels.attachmentList,\n            items: [{\n              text: 'None',\n              value: ''\n            }]\n          };\n          if (isFunction(attachmentList)) {\n            attachmentList(attachmentItems => {\n              attachConfig.items = [...attachConfig.items, ...urlListSanitizer(editor, attachmentItems || [])];\n              onListLoaded();\n            });\n            callLoaded = false;\n          } else if (isArray(attachmentList)) {\n            attachConfig.items = [...attachConfig.items, ...urlListSanitizer(editor, attachmentList || [])];\n          }\n          items.push(attachConfig);\n        }\n      } else {\n        items.push({\n          type: 'label',\n          label: labels.search,\n          items: [{\n            type: 'button',\n            name: 'librarysearch',\n            text: labels.search,\n            icon: 'search'\n          }]\n        });\n      }\n      if (callLoaded) {\n        onListLoaded();\n      }\n      return {\n        title: labels.tabName,\n        name: 'local',\n        items\n      };\n    };\n    const LocalsTab = {\n      makeTab,\n      handleSourceUpdate,\n      handleBrowseLibrary\n    };\n\n    const extractMeta = (sourceInput, data) => get$2(data, sourceInput).bind(mainData => get$2(mainData, 'meta'));\n    const getValue = (data, metaData, sourceInput) => prop => {\n      const getFromData = () => get$2(data, prop);\n      const getFromMetaData = () => get$2(metaData, prop);\n      const getNonEmptyValue = c => get$2(c, 'value').bind(v => v.length > 0 ? Optional.some(v) : Optional.none());\n      const getFromValueFirst = () => getFromData().bind(child => isObject(child) ? getNonEmptyValue(child).orThunk(getFromMetaData) : getFromMetaData().orThunk(() => Optional.from(child)));\n      const getFromMetaFirst = () => getFromMetaData().orThunk(() => getFromData().bind(child => isObject(child) ? getNonEmptyValue(child) : Optional.from(child)));\n      return {\n        [prop]: (prop === sourceInput ? getFromValueFirst() : getFromMetaFirst()).getOr('')\n      };\n    };\n    const getDimensions = (data, metaData) => {\n      const dimensions = {};\n      get$2(data, 'dimensions').each(dims => {\n        each$1(['width', 'height'], prop => {\n          get$2(metaData, prop).orThunk(() => get$2(dims, prop)).each(value => dimensions[prop] = value);\n        });\n      });\n      return dimensions;\n    };\n    const unwrap = (data, sourceInput) => {\n      const metaData = sourceInput && sourceInput !== 'dimensions' ? extractMeta(sourceInput, data).getOr({}) : {};\n      const get = getValue(data, metaData, sourceInput);\n      return {\n        ...get('source'),\n        ...get('altsource'),\n        ...get('poster'),\n        ...get('embed'),\n        ...getDimensions(data, metaData),\n        ...get('attachments')\n      };\n    };\n    const wrap = (data, localsTabSourceType) => {\n      const wrapped = {\n        ...data,\n        source: {\n          value: get$2(data, 'source').getOr('')\n        },\n        altsource: {\n          value: get$2(data, 'altsource').getOr('')\n        },\n        poster: {\n          value: get$2(data, 'poster').getOr('')\n        },\n        ...(localsTabSourceType ? {\n          localsTabSourceType\n        } : {})\n      };\n      each$1(['width', 'height'], prop => {\n        get$2(data, prop).each(value => {\n          const dimensions = wrapped.dimensions || {};\n          dimensions[prop] = value;\n          wrapped.dimensions = dimensions;\n        });\n      });\n      return wrapped;\n    };\n    const handleError = editor => error => {\n      const errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.';\n      editor.notificationManager.open({\n        type: 'error',\n        text: errorMessage\n      });\n    };\n    const getEditorData = editor => {\n      const element = editor.selection.getNode();\n      const snippet = isMediaElement(element) ? editor.serializer.serialize(element, {\n        selection: true\n      }) : '';\n      const data = htmlToData(snippet, editor.schema);\n      const getDimensionsOfElement = () => {\n        if (isEmbedIframe(data.source, data.type)) {\n          const rect = editor.dom.getRect(element);\n          return {\n            width: rect.w.toString().replace(/px$/, ''),\n            height: rect.h.toString().replace(/px$/, '')\n          };\n        } else {\n          return {};\n        }\n      };\n      const dimensions = getDimensionsOfElement();\n      return {\n        embed: snippet,\n        ...data,\n        ...dimensions\n      };\n    };\n    const addEmbedHtml = (api, editor) => response => {\n      if (isString(response.url) && response.url.trim().length > 0) {\n        const html = response.html;\n        const snippetData = htmlToData(html, editor.schema);\n        const nuData = {\n          ...snippetData,\n          source: response.url,\n          embed: html\n        };\n        api.setData(wrap(nuData));\n      }\n    };\n    const selectPlaceholder = (editor, beforeObjects) => {\n      const afterObjects = editor.dom.select('*[data-mce-object]');\n      for (let i = 0; i < beforeObjects.length; i++) {\n        for (let y = afterObjects.length - 1; y >= 0; y--) {\n          if (beforeObjects[i] === afterObjects[y]) {\n            afterObjects.splice(y, 1);\n          }\n        }\n      }\n      editor.selection.select(afterObjects[0]);\n    };\n    const handleInsert = (editor, html) => {\n      const beforeObjects = editor.dom.select('*[data-mce-object]');\n      editor.insertContent(html);\n      selectPlaceholder(editor, beforeObjects);\n      editor.nodeChanged();\n    };\n    const isEmbedIframe = (url, mediaDataType) => isNonNullable(mediaDataType) && mediaDataType === 'ephox-embed-iri' && isNonNullable(matchPattern(url));\n    const shouldInsertAsNewIframe = (prevData, newData) => {\n      const hasDimensionsChanged = (prevData, newData) => prevData.width !== newData.width || prevData.height !== newData.height;\n      return hasDimensionsChanged(prevData, newData) && isEmbedIframe(newData.source, prevData.type);\n    };\n    const submitForm = (prevData, newData, editor) => {\n      var _a;\n      newData.embed = shouldInsertAsNewIframe(prevData, newData) && hasDimensions(editor) ? dataToHtml(editor, {\n        ...newData,\n        embed: ''\n      }) : updateHtml((_a = newData.embed) !== null && _a !== void 0 ? _a : '', newData, false, editor.schema);\n      if (newData.embed && (prevData.source === newData.source || isCached(newData.source))) {\n        handleInsert(editor, newData.embed);\n      } else {\n        getEmbedHtml(editor, newData).then(response => {\n          handleInsert(editor, response.html);\n        }).catch(handleError(editor));\n      }\n    };\n    const showDialog = editor => {\n      const editorData = getEditorData(editor);\n      const currentData = Cell(editorData);\n      const initialData = wrap(editorData, 'attachment');\n      const handleSource = (prevData, api) => {\n        const serviceData = unwrap(api.getData(), 'source');\n        if (prevData.source !== serviceData.source) {\n          addEmbedHtml(win, editor)({\n            url: serviceData.source,\n            html: ''\n          });\n          getEmbedHtml(editor, serviceData).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n        }\n      };\n      const handleEmbed = api => {\n        var _a;\n        const data = unwrap(api.getData());\n        const dataFromEmbed = htmlToData((_a = data.embed) !== null && _a !== void 0 ? _a : '', editor.schema);\n        api.setData(wrap(dataFromEmbed));\n      };\n      const handleUpdate = (api, sourceInput, prevData) => {\n        const dialogData = unwrap(api.getData(), sourceInput);\n        const data = shouldInsertAsNewIframe(prevData, dialogData) && hasDimensions(editor) ? {\n          ...dialogData,\n          embed: ''\n        } : dialogData;\n        const embed = dataToHtml(editor, data);\n        api.setData(wrap({\n          ...data,\n          embed\n        }));\n      };\n      const mediaInput = [{\n        name: 'source',\n        type: 'urlinput',\n        filetype: 'media',\n        label: 'Source',\n        picker_text: 'Browse files'\n      }];\n      const sizeInput = !hasDimensions(editor) ? [] : [{\n        type: 'sizeinput',\n        name: 'dimensions',\n        label: 'Constrain proportions',\n        constrain: true\n      }];\n      const generalTab = {\n        title: 'General',\n        name: 'general',\n        items: flatten([mediaInput, sizeInput])\n      };\n      const embedTextarea = {\n        type: 'textarea',\n        name: 'embed',\n        label: 'Paste your embed code below:'\n      };\n      const embedTab = {\n        title: 'Embed',\n        items: [embedTextarea]\n      };\n      const advancedFormItems = [];\n      if (hasAltSource(editor)) {\n        advancedFormItems.push({\n          name: 'altsource',\n          type: 'urlinput',\n          filetype: 'media',\n          label: 'Alternative source URL'\n        });\n      }\n      if (hasPoster(editor)) {\n        advancedFormItems.push({\n          name: 'poster',\n          type: 'urlinput',\n          filetype: 'image',\n          label: 'Media poster (Image URL)'\n        });\n      }\n      const advancedTab = {\n        title: 'Advanced',\n        name: 'advanced',\n        items: advancedFormItems\n      };\n      const tabs = [generalTab, embedTab];\n      if (advancedFormItems.length > 0) {\n        tabs.push(advancedTab);\n      }\n      const snMediaSettings = getSnMediaSettings(editor);\n      let attachmentsLoaded = null;\n      if (snMediaSettings.showLocalsTab) {\n        attachmentsLoaded = new Promise(resolve => {\n          tabs.push(LocalsTab.makeTab(editor, initialData, snMediaSettings, resolve));\n        });\n      }\n      const body = {\n        type: 'tabpanel',\n        tabs\n      };\n      const config = {\n        title: 'Insert/Edit Media',\n        size: 'normal',\n        body,\n        buttons: [{\n          type: 'cancel',\n          name: 'cancel',\n          text: 'Cancel'\n        }, {\n          type: 'submit',\n          name: 'save',\n          text: 'Save',\n          primary: true\n        }],\n        onAction: LocalsTab.handleBrowseLibrary(editor, snMediaSettings),\n        onSubmit: api => {\n          const serviceData = unwrap(api.getData());\n          submitForm(currentData.get(), serviceData, editor);\n          api.close();\n        },\n        onChange: (api, detail) => {\n          switch (detail.name) {\n            case 'source':\n              handleSource(currentData.get(), api);\n              break;\n            case 'embed':\n              handleEmbed(api);\n              break;\n            case 'dimensions':\n            case 'altsource':\n            case 'poster':\n              handleUpdate(api, detail.name, currentData.get());\n              break;\n            case 'attachments':\n              const data = global$5.extend({}, unwrap(api.getData()));\n              data.source = data.attachments;\n              api.setData(wrap(data));\n              handleSource(currentData.get(), api);\n              api.showTab('general');\n              break;\n            case 'localsTabSourceType':\n              LocalsTab.handleSourceUpdate(editor, config, snMediaSettings, win);\n              break;\n          }\n          currentData.set(unwrap(api.getData()));\n        },\n        initialData\n      };\n      const win = editor.windowManager.open(config);\n      const firstItem = 'name' in body.tabs[0].items[0] ? body.tabs[0].items[0].name : 'source';\n      if (attachmentsLoaded) {\n        win.block(snMediaSettings.labels.waitOpen);\n        attachmentsLoaded.then(() => win.redial(config)).then(() => win.unblock()).then(() => win.focus(firstItem));\n      } else {\n        win.focus(firstItem);\n      }\n    };\n\n    const get$1 = editor => {\n      const showDialog$1 = () => {\n        showDialog(editor);\n      };\n      return {\n        showDialog: showDialog$1\n      };\n    };\n\n    const register$1 = editor => {\n      const showDialog$1 = () => {\n        showDialog(editor);\n      };\n      editor.addCommand('mceMedia', showDialog$1);\n    };\n\n    const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n    const contains = (str, substr, start = 0, end) => {\n      const idx = str.indexOf(substr, start);\n      if (idx !== -1) {\n        return isUndefined(end) ? true : idx + substr.length <= end;\n      } else {\n        return false;\n      }\n    };\n    const startsWith = (str, prefix) => {\n      return checkRange(str, prefix, 0);\n    };\n\n    typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n\n    const name = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const get = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom$1(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom$1(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom$1(node);\n    };\n    const fromDom$1 = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$1);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom: fromDom$1,\n      fromPoint\n    };\n\n    const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;\n    const one = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n    };\n\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const parentElement = element => Optional.from(element.dom.parentElement).map(SugarElement.fromDom);\n\n    const append = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n\n    const remove = element => {\n      const dom = element.dom;\n      if (dom.parentNode !== null) {\n        dom.parentNode.removeChild(dom);\n      }\n    };\n\n    const fromDom = nodes => map(nodes, SugarElement.fromDom);\n\n    var global = tinymce.util.Tools.resolve('tinymce.Env');\n\n    const getSrc = el => {\n      var _a;\n      return !el ? '' : el.src || ((_a = el.querySelector('source')) === null || _a === void 0 ? void 0 : _a.src);\n    };\n    const setSrc = (el, src) => {\n      if (el) {\n        const sourceEl = el.querySelector('source') || el;\n        if (sourceEl.src !== src) {\n          sourceEl.src = src;\n        }\n      }\n    };\n\n    const videoToBlobInfo = (blobCache, video) => {\n      const videoSrc = getSrc(video);\n      if (startsWith(videoSrc, 'blob:')) {\n        const blobInfo = blobCache.getByUri(videoSrc);\n        if (isNonNullable(blobInfo)) {\n          return Promise.resolve(blobInfo);\n        }\n      }\n      return Promise.reject('Unknown media format');\n    };\n    const getAllVideos = elm => {\n      return elm ? from(elm.getElementsByTagName('video')) : [];\n    };\n    const VideoScanner = (uploadStatus, blobCache) => {\n      const cachedPromises = {};\n      const findAll = (elm, predicate = always) => {\n        const videos = filter(getAllVideos(elm), video => {\n          const src = getSrc(video);\n          if (video.hasAttribute('data-mce-bogus')) {\n            return false;\n          }\n          if (video.hasAttribute('data-mce-placeholder')) {\n            return false;\n          }\n          if (!src || src === global.transparentSrc) {\n            return false;\n          }\n          if (startsWith(src, 'blob:')) {\n            return !uploadStatus.isUploaded(src) && predicate(video);\n          }\n          if (startsWith(src, 'data:')) {\n            return predicate(video);\n          }\n          return false;\n        });\n        const promises = map(videos, video => {\n          const videoSrc = getSrc(video);\n          if (has(cachedPromises, videoSrc)) {\n            return cachedPromises[getSrc(video)].then(videoInfo => {\n              if (isString(videoInfo)) {\n                return videoInfo;\n              } else {\n                return {\n                  video,\n                  blobInfo: videoInfo.blobInfo\n                };\n              }\n            });\n          } else {\n            const newPromise = videoToBlobInfo(blobCache, video).then(blobInfo => {\n              delete cachedPromises[getSrc(video)];\n              return {\n                video,\n                blobInfo\n              };\n            }).catch(error => {\n              delete cachedPromises[getSrc(video)];\n              return error;\n            });\n            cachedPromises[getSrc(video)] = newPromise;\n            return newPromise;\n          }\n        });\n        return Promise.all(promises);\n      };\n      return {\n        findAll\n      };\n    };\n\n    const Uploader = (uploadStatus, settings) => {\n      const pendingPromises = {};\n      const handlerSuccess = (blobInfo, url) => ({\n        url,\n        blobInfo,\n        status: true\n      });\n      const handlerFailure = (blobInfo, error) => ({\n        url: '',\n        blobInfo,\n        status: false,\n        error\n      });\n      const resolvePending = (blobUri, result) => {\n        global$5.each(pendingPromises[blobUri], resolve => {\n          resolve(result);\n        });\n        delete pendingPromises[blobUri];\n      };\n      const uploadBlobInfo = (blobInfo, handler, openNotification) => {\n        uploadStatus.markPending(blobInfo.blobUri());\n        return new Promise(resolve => {\n          let notification;\n          let progress;\n          try {\n            const closeNotification = () => {\n              if (notification) {\n                notification.close();\n                progress = noop;\n              }\n            };\n            const success = url => {\n              closeNotification();\n              uploadStatus.markUploaded(blobInfo.blobUri(), url);\n              resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url));\n              resolve(handlerSuccess(blobInfo, url));\n            };\n            const failure = error => {\n              closeNotification();\n              uploadStatus.removeFailed(blobInfo.blobUri());\n              resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error));\n              resolve(handlerFailure(blobInfo, error));\n            };\n            progress = percent => {\n              if (percent < 0 || percent > 100) {\n                return;\n              }\n              Optional.from(notification).orThunk(() => Optional.from(openNotification).map(apply)).each(n => {\n                notification = n;\n                n.progressBar.value(percent);\n              });\n            };\n            handler(blobInfo, progress).then(success, err => {\n              failure(isString(err) ? {\n                message: err\n              } : err);\n            });\n          } catch (ex) {\n            resolve(handlerFailure(blobInfo, ex));\n          }\n        });\n      };\n      const pendingUploadBlobInfo = blobInfo => {\n        const blobUri = blobInfo.blobUri();\n        return new Promise(resolve => {\n          pendingPromises[blobUri] = pendingPromises[blobUri] || [];\n          pendingPromises[blobUri].push(resolve);\n        });\n      };\n      const noUpload = () => new Promise(resolve => {\n        resolve([]);\n      });\n      const uploadBlobs = (blobInfos, openNotification) => {\n        if (isUndefined(settings.handler)) return noUpload();\n        blobInfos = global$5.grep(blobInfos, blobInfo => !uploadStatus.isUploaded(blobInfo.blobUri()));\n        return Promise.all(global$5.map(blobInfos, blobInfo => uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification)));\n      };\n      const upload = uploadBlobs;\n      return {\n        upload\n      };\n    };\n\n    const openNotification = editor => () => editor.notificationManager.open({\n      text: editor.translate('Media uploading...'),\n      type: 'info',\n      timeout: -1,\n      progressBar: true\n    });\n    const displayError = (editor, message) => editor.notificationManager.open({\n      type: 'error',\n      text: editor.translate(message)\n    });\n    const createUploader = (editor, uploadStatus) => Uploader(uploadStatus, {\n      handler: getSnMediaSettings(editor).mediaUploadHandler\n    });\n\n    const Rtc = {\n      isRtc: editor => has(editor.plugins, 'rtc')\n    };\n    const isEmptyForPadding = (editor, element) => editor.dom.isEmpty(element.dom) && isNonNullable(editor.schema.getTextBlockElements()[name(element)]);\n    const addPaddingToEmpty = editor => element => {\n      if (isEmptyForPadding(editor, element)) {\n        append(element, SugarElement.fromHtml('<br data-mce-bogus=\"1\" />'));\n      }\n    };\n    const EditorUpload = editor => {\n      let blobCache, uploader, videoScanner;\n      let uploadStatus;\n      const aliveGuard = (editor, callback) => {\n        return result => {\n          if (editor.selection) {\n            return callback(result);\n          }\n          return [];\n        };\n      };\n      const replaceString = (content, search, replace) => {\n        let index = 0;\n        do {\n          index = content.indexOf(search, index);\n          if (index !== -1) {\n            content = content.substring(0, index) + replace + content.substr(index + search.length);\n            index += replace.length - search.length + 1;\n          }\n        } while (index !== -1);\n        return content;\n      };\n      const replaceVideoUrl = (content, targetUrl, replacementUrl) => {\n        const replacementString = \"src=\\\"\".concat(replacementUrl, \"\\\"\").concat(replacementUrl === global.transparentSrc ? ' data-mce-placeholder=\"1\"' : '');\n        content = replaceString(content, \"src=\\\"\".concat(targetUrl, \"\\\"\"), replacementString);\n        content = replaceString(content, \"data-mce-html=\\\"\".concat(escape(\"\\n<source src=\\\"\".concat(targetUrl, \"\\\" />\")), \"\\\"\"), \"data-mce-html=\\\"\".concat(escape(\"\\n<source src=\\\"\".concat(replacementUrl, \"\\\" />\")), \"\\\"\"));\n        return content;\n      };\n      const replaceUrlInUndoStack = (targetUrl, replacementUrl) => {\n        each$1(editor.undoManager.data, level => {\n          if (level.type === 'fragmented') {\n            level.fragments = map(level.fragments, fragment => replaceVideoUrl(fragment, targetUrl, replacementUrl));\n          } else {\n            level.content = replaceVideoUrl(level.content, targetUrl, replacementUrl);\n          }\n        });\n      };\n      const replaceVideoUriInView = (video, resultUri) => {\n        const src = editor.convertURL(resultUri, 'src');\n        replaceUrlInUndoStack(getSrc(video), resultUri);\n        setSrc(video, resultUri);\n        parentElement(SugarElement.fromDom(video)).each(parent => set(parent, 'data-mce-html', \"\".concat(escape(\"\\n<source src=\\\"\".concat(src, \"\\\" />\")))));\n        video.load();\n      };\n      const uploadVideos = () => {\n        if (!uploader) {\n          uploader = createUploader(editor, uploadStatus);\n        }\n        return scanForVideos().then(aliveGuard(editor, videoInfo => {\n          const blobInfos = map(videoInfo, videoInfo => videoInfo.blobInfo);\n          return uploader.upload(blobInfos, openNotification(editor)).then(aliveGuard(editor, result => {\n            const videosToRemove = [];\n            let shouldDispatchChange = false;\n            const filteredResult = map(result, (uploadInfo, index) => {\n              const {\n                blobInfo,\n                video\n              } = videoInfo[index];\n              let removed = false;\n              if (uploadInfo.status) {\n                if (uploadInfo.url && !contains(getSrc(video), uploadInfo.url)) {\n                  shouldDispatchChange = true;\n                }\n                blobCache.removeByUri(getSrc(video));\n                if (Rtc.isRtc(editor)) ; else {\n                  replaceVideoUriInView(video, uploadInfo.url);\n                }\n              } else if (uploadInfo.error) {\n                if (uploadInfo.error.remove) {\n                  replaceUrlInUndoStack(getSrc(video), global.transparentSrc);\n                  videosToRemove.push(video);\n                  removed = true;\n                }\n                const errorMessage = \"Failed to upload video: \".concat(uploadInfo.error.message);\n                displayError(editor, errorMessage);\n              }\n              return {\n                element: video,\n                status: uploadInfo.status,\n                uploadUri: uploadInfo.url,\n                blobInfo,\n                removed\n              };\n            });\n            if (videosToRemove.length > 0 && !Rtc.isRtc(editor)) {\n              editor.undoManager.transact(() => {\n                each$1(fromDom(videosToRemove), sugarElement => {\n                  const parentOpt = parent(sugarElement);\n                  const grandParentOpt = parentOpt.bind(parent);\n                  parentOpt.each(remove);\n                  grandParentOpt.each(addPaddingToEmpty(editor));\n                  const src = getSrc(sugarElement.dom);\n                  blobCache.removeByUri(src);\n                  const selectorAttr = get(sugarElement, 'src') ? \"[data-mce-p-src='\".concat(src, \"']\") : \"[data-mce-html='\".concat(escape(\"\\n<source src=\\\"\".concat(src, \"\\\" />\")), \"']\");\n                  one(selectorAttr).map(element => editor.dom.getParent(element.dom, '.mce-offscreen-selection')).each(editor.dom.remove);\n                });\n              });\n            } else if (shouldDispatchChange) {\n              editor.undoManager.dispatchChange();\n            }\n            return filteredResult;\n          }));\n        }));\n      };\n      const uploadVideoAuto = () => {\n        isAutomaticUploadsEnabled() ? uploadVideos() : Promise.resolve([]);\n      };\n      const scanForVideos = () => {\n        return videoScanner.findAll(editor.getBody()).then(aliveGuard(editor, result => {\n          const filteredResult = filter(result, resultItem => {\n            if (isString(resultItem)) {\n              return false;\n            } else {\n              return true;\n            }\n          });\n          if (Rtc.isRtc(editor)) ; else {\n            each$1(filteredResult, resultItem => {\n              replaceUrlInUndoStack(getSrc(resultItem.video), resultItem.blobInfo.blobUri());\n              setSrc(resultItem.video, resultItem.blobInfo.blobUri());\n            });\n          }\n          return filteredResult;\n        }));\n      };\n      const destroy = () => {\n        uploadStatus.destroy();\n        videoScanner = uploader = null;\n      };\n      editor.on('SetContent', () => {\n        if (isAutomaticUploadsEnabled()) {\n          uploadVideoAuto();\n        } else {\n          scanForVideos();\n        }\n      });\n      editor.on('PostRender', () => {\n        editor.parser.addNodeFilter('video', videos => {\n          each$1(videos, vid => {\n            const src = vid.attr('src');\n            if (!src || blobCache.getByUri(src)) {\n              return;\n            }\n            const resultUri = uploadStatus.getResultUri(src);\n            if (resultUri) {\n              vid.attr('src', resultUri);\n            }\n          });\n        });\n      });\n      editor.on('PreInit', () => {\n        blobCache = editor.editorUpload.blobCache;\n        uploadStatus = editor.editorUpload.uploadStatus;\n        videoScanner = VideoScanner(uploadStatus, blobCache);\n      });\n      editor.on('remove', () => {\n        destroy();\n      });\n    };\n    const setup$2 = EditorUpload;\n\n    const isLiveEmbedNode = node => {\n      const name = node.name;\n      return name === 'iframe' || name === 'video' || name === 'audio';\n    };\n    const getDimension = (node, styles, dimension, defaultValue = null) => {\n      const value = node.attr(dimension);\n      if (isNonNullable(value)) {\n        return value;\n      } else if (!has(styles, dimension)) {\n        return defaultValue;\n      } else {\n        return null;\n      }\n    };\n    const setDimensions = (node, previewNode, styles) => {\n      const useDefaults = previewNode.name === 'img' || node.name === 'video';\n      const defaultWidth = useDefaults ? '300' : null;\n      const fallbackHeight = node.name === 'audio' ? '30' : '150';\n      const defaultHeight = useDefaults ? fallbackHeight : null;\n      previewNode.attr({\n        width: getDimension(node, styles, 'width', defaultWidth),\n        height: getDimension(node, styles, 'height', defaultHeight)\n      });\n    };\n    const appendNodeContent = (editor, nodeName, previewNode, html) => {\n      const newNode = Parser(editor.schema).parse(html, {\n        context: nodeName\n      });\n      while (newNode.firstChild) {\n        previewNode.append(newNode.firstChild);\n      }\n    };\n    const createPlaceholderNode = (editor, node) => {\n      const name = node.name;\n      const placeHolder = new global$2('img', 1);\n      retainAttributesAndInnerHtml(editor, node, placeHolder);\n      setDimensions(node, placeHolder, {});\n      placeHolder.attr({\n        'style': node.attr('style'),\n        'src': global.transparentSrc,\n        'data-mce-object': name,\n        'class': 'mce-object mce-object-' + name\n      });\n      return placeHolder;\n    };\n    const createPreviewNode = (editor, node) => {\n      var _a;\n      const name = node.name;\n      const previewWrapper = new global$2('span', 1);\n      previewWrapper.attr({\n        'contentEditable': 'false',\n        'style': node.attr('style'),\n        'data-mce-object': name,\n        'class': 'mce-preview-object mce-object-' + name\n      });\n      retainAttributesAndInnerHtml(editor, node, previewWrapper);\n      const styles = editor.dom.parseStyle((_a = node.attr('style')) !== null && _a !== void 0 ? _a : '');\n      const previewNode = new global$2(name, 1);\n      setDimensions(node, previewNode, styles);\n      previewNode.attr({\n        src: node.attr('src'),\n        style: node.attr('style'),\n        class: node.attr('class')\n      });\n      if (name === 'iframe') {\n        previewNode.attr({\n          allowfullscreen: node.attr('allowfullscreen'),\n          frameborder: '0',\n          sandbox: node.attr('sandbox')\n        });\n      } else {\n        const attrs = ['controls', 'crossorigin', 'currentTime', 'loop', 'muted', 'poster', 'preload'];\n        each$1(attrs, attrName => {\n          previewNode.attr(attrName, node.attr(attrName));\n        });\n        const sanitizedHtml = previewWrapper.attr('data-mce-html');\n        if (isNonNullable(sanitizedHtml)) {\n          appendNodeContent(editor, name, previewNode, unescape(sanitizedHtml));\n        }\n      }\n      const shimNode = new global$2('span', 1);\n      shimNode.attr('class', 'mce-shim');\n      previewWrapper.append(previewNode);\n      previewWrapper.append(shimNode);\n      return previewWrapper;\n    };\n    const retainAttributesAndInnerHtml = (editor, sourceNode, targetNode) => {\n      var _a;\n      const attribs = (_a = sourceNode.attributes) !== null && _a !== void 0 ? _a : [];\n      let ai = attribs.length;\n      while (ai--) {\n        const attrName = attribs[ai].name;\n        let attrValue = attribs[ai].value;\n        if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style' && !startsWith(attrName, 'data-mce-')) {\n          if (attrName === 'data' || attrName === 'src') {\n            attrValue = editor.convertURL(attrValue, attrName);\n          }\n          targetNode.attr('data-mce-p-' + attrName, attrValue);\n        }\n      }\n      const serializer = global$1({\n        inner: true\n      }, editor.schema);\n      const tempNode = new global$2('div', 1);\n      each$1(sourceNode.children(), child => tempNode.append(child));\n      const innerHtml = serializer.serialize(tempNode);\n      if (innerHtml) {\n        targetNode.attr('data-mce-html', escape(innerHtml));\n        targetNode.empty();\n      }\n    };\n    const isPageEmbedWrapper = node => {\n      const nodeClass = node.attr('class');\n      return isString(nodeClass) && /\\btiny-pageembed\\b/.test(nodeClass);\n    };\n    const isWithinEmbedWrapper = node => {\n      let tempNode = node;\n      while (tempNode = tempNode.parent) {\n        if (tempNode.attr('data-ephox-embed-iri') || isPageEmbedWrapper(tempNode)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const placeHolderConverter = editor => nodes => {\n      let i = nodes.length;\n      let node;\n      while (i--) {\n        node = nodes[i];\n        if (!node.parent) {\n          continue;\n        }\n        if (node.parent.attr('data-mce-object')) {\n          continue;\n        }\n        if (isLiveEmbedNode(node) && hasLiveEmbeds(editor)) {\n          if (!isWithinEmbedWrapper(node)) {\n            node.replace(createPreviewNode(editor, node));\n          }\n        } else {\n          if (!isWithinEmbedWrapper(node)) {\n            node.replace(createPlaceholderNode(editor, node));\n          }\n        }\n      }\n    };\n\n    const parseAndSanitize = (editor, context, html) => {\n      const getEditorOption = editor.options.get;\n      const sanitize = getEditorOption('xss_sanitization');\n      const validate = shouldFilterHtml(editor);\n      return Parser(editor.schema, {\n        sanitize,\n        validate\n      }).parse(html, {\n        context\n      });\n    };\n\n    const setup$1 = editor => {\n      editor.on('PreInit', () => {\n        const {\n          schema,\n          serializer,\n          parser\n        } = editor;\n        const boolAttrs = schema.getBoolAttrs();\n        each$1('webkitallowfullscreen mozallowfullscreen'.split(' '), name => {\n          boolAttrs[name] = {};\n        });\n        each({\n          embed: ['wmode']\n        }, (attrs, name) => {\n          const rule = schema.getElementRule(name);\n          if (rule) {\n            each$1(attrs, attr => {\n              rule.attributes[attr] = {};\n              rule.attributesOrder.push(attr);\n            });\n          }\n        });\n        parser.addNodeFilter('iframe,video,audio,object,embed', placeHolderConverter(editor));\n        serializer.addAttributeFilter('data-mce-object', (nodes, name) => {\n          var _a;\n          let i = nodes.length;\n          while (i--) {\n            const node = nodes[i];\n            if (!node.parent) {\n              continue;\n            }\n            const realElmName = node.attr(name);\n            const realElm = new global$2(realElmName, 1);\n            if (realElmName !== 'audio') {\n              const className = node.attr('class');\n              if (className && className.indexOf('mce-preview-object') !== -1 && node.firstChild) {\n                realElm.attr({\n                  width: node.firstChild.attr('width'),\n                  height: node.firstChild.attr('height')\n                });\n              } else {\n                realElm.attr({\n                  width: node.attr('width'),\n                  height: node.attr('height')\n                });\n              }\n            }\n            realElm.attr({\n              style: node.attr('style')\n            });\n            const attribs = (_a = node.attributes) !== null && _a !== void 0 ? _a : [];\n            let ai = attribs.length;\n            while (ai--) {\n              const attrName = attribs[ai].name;\n              if (attrName.indexOf('data-mce-p-') === 0) {\n                realElm.attr(attrName.substr(11), attribs[ai].value);\n              }\n            }\n            const innerHtml = node.attr('data-mce-html');\n            if (innerHtml) {\n              const fragment = parseAndSanitize(editor, realElmName, unescape(innerHtml));\n              each$1(fragment.children(), child => realElm.append(child));\n            }\n            node.replace(realElm);\n          }\n        });\n      });\n      editor.on('SetContent', () => {\n        const dom = editor.dom;\n        each$1(dom.select('span.mce-preview-object'), elm => {\n          if (dom.select('span.mce-shim', elm).length === 0) {\n            dom.add(elm, 'span', {\n              class: 'mce-shim'\n            });\n          }\n        });\n      });\n    };\n\n    const setup = editor => {\n      editor.on('ResolveName', e => {\n        let name;\n        if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) {\n          e.name = name;\n        }\n      });\n    };\n\n    const onSetupEditable = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const register = editor => {\n      const onAction = () => editor.execCommand('mceMedia');\n      editor.ui.registry.addToggleButton('media', {\n        tooltip: 'Insert/edit media',\n        icon: 'embed',\n        onAction,\n        onSetup: buttonApi => {\n          const selection = editor.selection;\n          buttonApi.setActive(isMediaElement(selection.getNode()));\n          const unbindSelectorChanged = selection.selectorChangedWithUnbind('img[data-mce-object],span[data-mce-object],div[data-ephox-embed-iri]', buttonApi.setActive).unbind;\n          const unbindEditable = onSetupEditable(editor)(buttonApi);\n          return () => {\n            unbindSelectorChanged();\n            unbindEditable();\n          };\n        }\n      });\n      editor.ui.registry.addMenuItem('media', {\n        icon: 'embed',\n        text: 'Media...',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n    };\n\n    var Plugin = () => {\n      global$6.add('media', editor => {\n        register$2(editor);\n        register$1(editor);\n        register(editor);\n        setup(editor);\n        setup$1(editor);\n        setup$3(editor);\n        setup$2(editor);\n        return get$1(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const isSimpleType = type => value => typeof value === type;\n    const isBoolean = isSimpleType('boolean');\n    const isNumber = isSimpleType('number');\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('nonbreaking_force_tab', {\n        processor: value => {\n          if (isBoolean(value)) {\n            return {\n              value: value ? 3 : 0,\n              valid: true\n            };\n          } else if (isNumber(value)) {\n            return {\n              value,\n              valid: true\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a boolean or number.'\n            };\n          }\n        },\n        default: false\n      });\n      registerOption('nonbreaking_wrap', {\n        processor: 'boolean',\n        default: true\n      });\n    };\n    const getKeyboardSpaces = option('nonbreaking_force_tab');\n    const wrapNbsps = option('nonbreaking_wrap');\n\n    const stringRepeat = (string, repeats) => {\n      let str = '';\n      for (let index = 0; index < repeats; index++) {\n        str += string;\n      }\n      return str;\n    };\n    const isVisualCharsEnabled = editor => editor.plugins.visualchars ? editor.plugins.visualchars.isEnabled() : false;\n    const insertNbsp = (editor, times) => {\n      const classes = () => isVisualCharsEnabled(editor) ? 'mce-nbsp-wrap mce-nbsp' : 'mce-nbsp-wrap';\n      const nbspSpan = () => \"<span class=\\\"\".concat(classes(), \"\\\" contenteditable=\\\"false\\\">\").concat(stringRepeat('&nbsp;', times), \"</span>\");\n      const shouldWrap = wrapNbsps(editor);\n      const html = shouldWrap || editor.plugins.visualchars ? nbspSpan() : stringRepeat('&nbsp;', times);\n      editor.undoManager.transact(() => editor.insertContent(html));\n    };\n\n    const register$1 = editor => {\n      editor.addCommand('mceNonBreaking', () => {\n        insertNbsp(editor, 1);\n      });\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    const setup = editor => {\n      const spaces = getKeyboardSpaces(editor);\n      if (spaces > 0) {\n        editor.on('keydown', e => {\n          if (e.keyCode === global.TAB && !e.isDefaultPrevented()) {\n            if (e.shiftKey) {\n              return;\n            }\n            e.preventDefault();\n            e.stopImmediatePropagation();\n            insertNbsp(editor, spaces);\n          }\n        });\n      }\n    };\n\n    const onSetupEditable = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const register = editor => {\n      const onAction = () => editor.execCommand('mceNonBreaking');\n      editor.ui.registry.addButton('nonbreaking', {\n        icon: 'non-breaking',\n        tooltip: 'Nonbreaking space',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n      editor.ui.registry.addMenuItem('nonbreaking', {\n        icon: 'non-breaking',\n        text: 'Nonbreaking space',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n    };\n\n    var Plugin = () => {\n      global$1.add('nonbreaking', editor => {\n        register$2(editor);\n        register$1(editor);\n        register(editor);\n        setup(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var global = tinymce.util.Tools.resolve('tinymce.Env');\n\n    const option = name => editor => editor.options.get(name);\n    const register$2 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('pagebreak_separator', {\n        processor: 'string',\n        default: '<!-- pagebreak -->'\n      });\n      registerOption('pagebreak_split_block', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const getSeparatorHtml = option('pagebreak_separator');\n    const shouldSplitBlock = option('pagebreak_split_block');\n\n    const pageBreakClass = 'mce-pagebreak';\n    const getPlaceholderHtml = shouldSplitBlock => {\n      const html = \"<img src=\\\"\".concat(global.transparentSrc, \"\\\" class=\\\"\").concat(pageBreakClass, \"\\\" data-mce-resize=\\\"false\\\" data-mce-placeholder />\");\n      return shouldSplitBlock ? \"<p>\".concat(html, \"</p>\") : html;\n    };\n    const setup$1 = editor => {\n      const separatorHtml = getSeparatorHtml(editor);\n      const shouldSplitBlock$1 = () => shouldSplitBlock(editor);\n      const pageBreakSeparatorRegExp = new RegExp(separatorHtml.replace(/[\\?\\.\\*\\[\\]\\(\\)\\{\\}\\+\\^\\$\\:]/g, a => {\n        return '\\\\' + a;\n      }), 'gi');\n      editor.on('BeforeSetContent', e => {\n        e.content = e.content.replace(pageBreakSeparatorRegExp, getPlaceholderHtml(shouldSplitBlock$1()));\n      });\n      editor.on('PreInit', () => {\n        editor.serializer.addNodeFilter('img', nodes => {\n          let i = nodes.length,\n            node,\n            className;\n          while (i--) {\n            node = nodes[i];\n            className = node.attr('class');\n            if (className && className.indexOf(pageBreakClass) !== -1) {\n              const parentNode = node.parent;\n              if (parentNode && editor.schema.getBlockElements()[parentNode.name] && shouldSplitBlock$1()) {\n                parentNode.type = 3;\n                parentNode.value = separatorHtml;\n                parentNode.raw = true;\n                node.remove();\n                continue;\n              }\n              node.type = 3;\n              node.value = separatorHtml;\n              node.raw = true;\n            }\n          }\n        });\n      });\n    };\n\n    const register$1 = editor => {\n      editor.addCommand('mcePageBreak', () => {\n        editor.insertContent(getPlaceholderHtml(shouldSplitBlock(editor)));\n      });\n    };\n\n    const setup = editor => {\n      editor.on('ResolveName', e => {\n        if (e.target.nodeName === 'IMG' && editor.dom.hasClass(e.target, pageBreakClass)) {\n          e.name = 'pagebreak';\n        }\n      });\n    };\n\n    const onSetupEditable = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const register = editor => {\n      const onAction = () => editor.execCommand('mcePageBreak');\n      editor.ui.registry.addButton('pagebreak', {\n        icon: 'page-break',\n        tooltip: 'Page break',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n      editor.ui.registry.addMenuItem('pagebreak', {\n        text: 'Page break',\n        icon: 'page-break',\n        onAction,\n        onSetup: onSetupEditable(editor)\n      });\n    };\n\n    var Plugin = () => {\n      global$1.add('pagebreak', editor => {\n        register$2(editor);\n        register$1(editor);\n        register(editor);\n        setup$1(editor);\n        setup(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const option = name => editor => editor.options.get(name);\n    const getContentStyle = option('content_style');\n    const shouldUseContentCssCors = option('content_css_cors');\n    const getBodyClass = option('body_class');\n    const getBodyId = option('body_id');\n\n    const getPreviewHtml = editor => {\n      var _a;\n      let headHtml = '';\n      const encode = editor.dom.encode;\n      const contentStyle = (_a = getContentStyle(editor)) !== null && _a !== void 0 ? _a : '';\n      headHtml += '<base href=\"' + encode(editor.documentBaseURI.getURI()) + '\">';\n      const cors = shouldUseContentCssCors(editor) ? ' crossorigin=\"anonymous\"' : '';\n      global.each(editor.contentCSS, url => {\n        headHtml += '<link type=\"text/css\" rel=\"stylesheet\" href=\"' + encode(editor.documentBaseURI.toAbsolute(url)) + '\"' + cors + '>';\n      });\n      if (contentStyle) {\n        headHtml += '<style type=\"text/css\">' + contentStyle + '</style>';\n      }\n      const bodyId = getBodyId(editor);\n      const bodyClass = getBodyClass(editor);\n      const isMetaKeyPressed = global$1.os.isMacOS() || global$1.os.isiOS() ? 'e.metaKey' : 'e.ctrlKey && !e.altKey';\n      const preventClicksOnLinksScript = '<script>' + 'document.addEventListener && document.addEventListener(\"click\", function(e) {' + 'for (var elm = e.target; elm; elm = elm.parentNode) {' + 'if (elm.nodeName === \"A\" && !(' + isMetaKeyPressed + ')) {' + 'e.preventDefault();' + '}' + '}' + '}, false);' + '</script> ';\n      const directionality = editor.getBody().dir;\n      const dirAttr = directionality ? ' dir=\"' + encode(directionality) + '\"' : '';\n      const previewHtml = '<!DOCTYPE html>' + '<html>' + '<head>' + headHtml + '</head>' + '<body id=\"' + encode(bodyId) + '\" class=\"mce-content-body ' + encode(bodyClass) + '\"' + dirAttr + '>' + editor.getContent() + preventClicksOnLinksScript + '</body>' + '</html>';\n      return previewHtml;\n    };\n\n    const open = editor => {\n      const content = getPreviewHtml(editor);\n      const dataApi = editor.windowManager.open({\n        title: 'Preview',\n        size: 'large',\n        body: {\n          type: 'panel',\n          items: [{\n            name: 'preview',\n            type: 'iframe',\n            sandboxed: true,\n            transparent: false\n          }]\n        },\n        buttons: [{\n          type: 'cancel',\n          name: 'close',\n          text: 'Close',\n          primary: true\n        }],\n        initialData: {\n          preview: content\n        }\n      });\n      dataApi.focus('close');\n    };\n\n    const register$1 = editor => {\n      editor.addCommand('mcePreview', () => {\n        open(editor);\n      });\n    };\n\n    const register = editor => {\n      const onAction = () => editor.execCommand('mcePreview');\n      editor.ui.registry.addButton('preview', {\n        icon: 'preview',\n        tooltip: 'Preview',\n        onAction\n      });\n      editor.ui.registry.addMenuItem('preview', {\n        icon: 'preview',\n        text: 'Preview',\n        onAction\n      });\n    };\n\n    var Plugin = () => {\n      global$2.add('preview', editor => {\n        register$1(editor);\n        register(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const isSimpleType = type => value => typeof value === type;\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const never = constant(false);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const hasOwnProperty = Object.hasOwnProperty;\n    const get$1 = (obj, key) => {\n      return has(obj, key) ? Optional.from(obj[key]) : Optional.none();\n    };\n    const has = (obj, key) => hasOwnProperty.call(obj, key);\n\n    const option = name => editor => editor.options.get(name);\n    const register$1 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('sn_settings', {\n        processor: 'object',\n        default: {}\n      });\n    };\n    const showBottomBorder = editor => {\n      const snSettings = option('sn_settings')(editor);\n      return get$1(snSettings, 'readonlyBottomBorder').getOr(false);\n    };\n\n    typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const ELEMENT = 1;\n\n    const get = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const getOpt = (element, key) => Optional.from(get(element, key));\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    const is = (element, selector) => {\n      const dom = element.dom;\n      if (dom.nodeType !== ELEMENT) {\n        return false;\n      } else {\n        const elem = dom;\n        if (elem.matches !== undefined) {\n          return elem.matches(selector);\n        } else if (elem.msMatchesSelector !== undefined) {\n          return elem.msMatchesSelector(selector);\n        } else if (elem.webkitMatchesSelector !== undefined) {\n          return elem.webkitMatchesSelector(selector);\n        } else if (elem.mozMatchesSelector !== undefined) {\n          return elem.mozMatchesSelector(selector);\n        } else {\n          throw new Error('Browser lacks native selectors');\n        }\n      }\n    };\n\n    const eq = (e1, e2) => e1.dom === e2.dom;\n\n    var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n      if (is(scope, a)) {\n        return Optional.some(scope);\n      } else if (isFunction(isRoot) && isRoot(scope)) {\n        return Optional.none();\n      } else {\n        return ancestor(scope, a, isRoot);\n      }\n    };\n\n    const ancestor$1 = (scope, predicate, isRoot) => {\n      let element = scope.dom;\n      const stop = isFunction(isRoot) ? isRoot : never;\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        if (predicate(el)) {\n          return Optional.some(el);\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n\n    const ancestor = (scope, selector, isRoot) => ancestor$1(scope, e => is(e, selector), isRoot);\n    const closest = (scope, selector, isRoot) => {\n      const is$1 = (element, selector) => is(element, selector);\n      return ClosestOrAncestor(is$1, ancestor, scope, selector, isRoot);\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    const getHeight = editor => editor.dom.getStyle(editor.getContainer(), 'height');\n    const setHeight = (editor, height) => editor.dom.setStyle(editor.getContainer(), 'height', height);\n    const getDimensions = editor => ({\n      min_height: editor.options.get('min_height'),\n      height: editor.options.get('height'),\n      max_height: editor.options.get('max_height'),\n      current: getHeight(editor)\n    });\n    const setDimmensions = (editor, dimensions) => {\n      const {\n        min_height,\n        height,\n        max_height,\n        current\n      } = dimensions;\n      editor.options.set('min_height', min_height);\n      editor.options.set('height', height);\n      editor.options.set('max_height', max_height);\n      setHeight(editor, current);\n    };\n    const toggleClasses = editor => {\n      const container = editor.getContainer();\n      const {\n        toggleClass\n      } = editor.dom;\n      toggleClass(container, 'sn-mce-readonly');\n      if (showBottomBorder(editor)) {\n        toggleClass(container, 'sn-mce-readonly-border-bottom');\n      }\n    };\n    const getAnchorHrefOpt = (editor, elm) => {\n      const isRoot = elm => eq(elm, SugarElement.fromDom(editor.getBody()));\n      return closest(elm, 'a', isRoot).bind(a => getOpt(a, 'href'));\n    };\n    const handleOnClick = editor => event => {\n      const target = event.target;\n      const elm = SugarElement.fromDom(target);\n      getAnchorHrefOpt(editor, elm).each(href => {\n        if (!global.metaKeyPressed(event) && !/^#/.test(href)) {\n          event.stopImmediatePropagation();\n        }\n      });\n    };\n    const addClickEventListener = editor => {\n      editor.getWin().addEventListener('click', handleOnClick(editor), true);\n    };\n    const removeClickEventListener = editor => {\n      editor.getWin().removeEventListener('click', handleOnClick(editor), true);\n    };\n    const register = editor => {\n      let dimensions;\n      editor.mode.register('readonlynoborder', {\n        activate: () => {\n          dimensions = getDimensions(editor);\n          toggleClasses(editor);\n          setHeight(editor, editor.getDoc().documentElement.scrollHeight);\n          addClickEventListener(editor);\n        },\n        deactivate: () => {\n          toggleClasses(editor);\n          setDimmensions(editor, dimensions);\n          removeClickEventListener(editor);\n        },\n        editorReadOnly: true\n      });\n      editor.on('SwitchMode', ({\n        mode\n      }) => {\n        if (mode === 'readonly') {\n          editor.mode.set('readonlynoborder');\n        }\n      });\n    };\n\n    var Plugin = () => {\n      global$1.add('readonlynoborder', editor => {\n        register$1(editor);\n        register(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const isString = isType$1('string');\n    const isArray = isType$1('array');\n    const isBoolean = isSimpleType('boolean');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isNumber = isSimpleType('number');\n\n    const noop = () => {};\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const always = constant(true);\n\n    const punctuationStr = \"[~\\u2116|!-*+-\\\\/:;?@\\\\[-`{}\\xA1\\xAB\\xB7\\xBB\\xBF;\\xB7\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1361-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u3008\\u3009\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30\\u2E31\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]\";\n\n    const punctuation$1 = constant(punctuationStr);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const punctuation = punctuation$1;\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const nativeSlice = Array.prototype.slice;\n    const nativePush = Array.prototype.push;\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const eachr = (xs, f) => {\n      for (let i = xs.length - 1; i >= 0; i--) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const groupBy = (xs, f) => {\n      if (xs.length === 0) {\n        return [];\n      } else {\n        let wasType = f(xs[0]);\n        const r = [];\n        let group = [];\n        for (let i = 0, len = xs.length; i < len; i++) {\n          const x = xs[i];\n          const type = f(x);\n          if (type !== wasType) {\n            r.push(group);\n            group = [];\n          }\n          wasType = type;\n          group.push(x);\n        }\n        if (group.length !== 0) {\n          r.push(group);\n        }\n        return r;\n      }\n    };\n    const foldl = (xs, f, acc) => {\n      each(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const bind = (xs, f) => flatten(map(xs, f));\n    const sort = (xs, comparator) => {\n      const copy = nativeSlice.call(xs, 0);\n      copy.sort(comparator);\n      return copy;\n    };\n\n    const hasOwnProperty = Object.hasOwnProperty;\n    const has = (obj, key) => hasOwnProperty.call(obj, key);\n\n    typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const type = element => element.dom.nodeType;\n    const isType = t => element => type(element) === t;\n    const isText$1 = isType(TEXT);\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;\n    const all = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom);\n    };\n\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const children = element => map(element.dom.childNodes, SugarElement.fromDom);\n    const spot = (element, offset) => ({\n      element,\n      offset\n    });\n    const leaf = (element, offset) => {\n      const cs = children(element);\n      return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);\n    };\n\n    const before = (marker, element) => {\n      const parent$1 = parent(marker);\n      parent$1.each(v => {\n        v.dom.insertBefore(element.dom, marker.dom);\n      });\n    };\n    const append = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n    const wrap = (element, wrapper) => {\n      before(element, wrapper);\n      append(wrapper, element);\n    };\n\n    const NodeValue = (is, name) => {\n      const get = element => {\n        if (!is(element)) {\n          throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n        }\n        return getOption(element).getOr('');\n      };\n      const getOption = element => is(element) ? Optional.from(element.dom.nodeValue) : Optional.none();\n      const set = (element, value) => {\n        if (!is(element)) {\n          throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n        }\n        element.dom.nodeValue = value;\n      };\n      return {\n        get,\n        getOption,\n        set\n      };\n    };\n\n    const api = NodeValue(isText$1, 'text');\n    const get$1 = element => api.get(element);\n\n    const compareDocumentPosition = (a, b, match) => {\n      return (a.compareDocumentPosition(b) & match) !== 0;\n    };\n    const documentPositionPreceding = (a, b) => {\n      return compareDocumentPosition(a, b, Node.DOCUMENT_POSITION_PRECEDING);\n    };\n\n    const descendants = (scope, selector) => all(selector, scope);\n\n    var global = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n    const isSimpleBoundary = (dom, node) => dom.isBlock(node) || has(dom.schema.getVoidElements(), node.nodeName);\n    const isContentEditableFalse = (dom, node) => !dom.isEditable(node);\n    const isContentEditableTrueInCef = (dom, node) => dom.getContentEditable(node) === 'true' && node.parentNode && !dom.isEditable(node.parentNode);\n    const isHidden = (dom, node) => !dom.isBlock(node) && has(dom.schema.getWhitespaceElements(), node.nodeName);\n    const isBoundary = (dom, node) => isSimpleBoundary(dom, node) || isContentEditableFalse(dom, node) || isHidden(dom, node) || isContentEditableTrueInCef(dom, node);\n    const isText = node => node.nodeType === 3;\n    const nuSection = () => ({\n      sOffset: 0,\n      fOffset: 0,\n      elements: []\n    });\n    const toLeaf = (node, offset) => leaf(SugarElement.fromDom(node), offset);\n    const walk = (dom, walkerFn, startNode, callbacks, endNode, skipStart = true) => {\n      let next = skipStart ? walkerFn(false) : startNode;\n      while (next) {\n        const isCefNode = isContentEditableFalse(dom, next);\n        if (isCefNode || isHidden(dom, next)) {\n          const stopWalking = isCefNode ? callbacks.cef(next) : callbacks.boundary(next);\n          if (stopWalking) {\n            break;\n          } else {\n            next = walkerFn(true);\n            continue;\n          }\n        } else if (isSimpleBoundary(dom, next)) {\n          if (callbacks.boundary(next)) {\n            break;\n          }\n        } else if (isText(next)) {\n          callbacks.text(next);\n        }\n        if (next === endNode) {\n          break;\n        } else {\n          next = walkerFn(false);\n        }\n      }\n    };\n    const collectTextToBoundary = (dom, section, node, rootNode, forwards) => {\n      var _a;\n      if (isBoundary(dom, node)) {\n        return;\n      }\n      const rootBlock = (_a = dom.getParent(rootNode, dom.isBlock)) !== null && _a !== void 0 ? _a : dom.getRoot();\n      const walker = new global(node, rootBlock);\n      const walkerFn = forwards ? walker.next.bind(walker) : walker.prev.bind(walker);\n      walk(dom, walkerFn, node, {\n        boundary: always,\n        cef: always,\n        text: next => {\n          if (forwards) {\n            section.fOffset += next.length;\n          } else {\n            section.sOffset += next.length;\n          }\n          section.elements.push(SugarElement.fromDom(next));\n        }\n      });\n    };\n    const collect = (dom, rootNode, startNode, endNode, callbacks, skipStart = true) => {\n      const walker = new global(startNode, rootNode);\n      const sections = [];\n      let current = nuSection();\n      collectTextToBoundary(dom, current, startNode, rootNode, false);\n      const finishSection = () => {\n        if (current.elements.length > 0) {\n          sections.push(current);\n          current = nuSection();\n        }\n        return false;\n      };\n      walk(dom, walker.next.bind(walker), startNode, {\n        boundary: finishSection,\n        cef: node => {\n          finishSection();\n          if (callbacks) {\n            sections.push(...callbacks.cef(node));\n          }\n          return false;\n        },\n        text: next => {\n          current.elements.push(SugarElement.fromDom(next));\n          if (callbacks) {\n            callbacks.text(next, current);\n          }\n        }\n      }, endNode, skipStart);\n      if (endNode) {\n        collectTextToBoundary(dom, current, endNode, rootNode, true);\n      }\n      finishSection();\n      return sections;\n    };\n    const collectRangeSections = (dom, rng) => {\n      const start = toLeaf(rng.startContainer, rng.startOffset);\n      const startNode = start.element.dom;\n      const end = toLeaf(rng.endContainer, rng.endOffset);\n      const endNode = end.element.dom;\n      return collect(dom, rng.commonAncestorContainer, startNode, endNode, {\n        text: (node, section) => {\n          if (node === endNode) {\n            section.fOffset += node.length - end.offset;\n          } else if (node === startNode) {\n            section.sOffset += start.offset;\n          }\n        },\n        cef: node => {\n          const sections = bind(descendants(SugarElement.fromDom(node), '*[contenteditable=true]'), e => {\n            const ceTrueNode = e.dom;\n            return collect(dom, ceTrueNode, ceTrueNode);\n          });\n          return sort(sections, (a, b) => documentPositionPreceding(a.elements[0].dom, b.elements[0].dom) ? 1 : -1);\n        }\n      }, false);\n    };\n    const fromRng = (dom, rng) => rng.collapsed ? [] : collectRangeSections(dom, rng);\n    const fromNode = (dom, node) => {\n      const rng = dom.createRng();\n      rng.selectNode(node);\n      return fromRng(dom, rng);\n    };\n    const fromNodes = (dom, nodes) => bind(nodes, node => fromNode(dom, node));\n\n    const find$2 = (text, pattern, start = 0, finish = text.length) => {\n      const regex = pattern.regex;\n      regex.lastIndex = start;\n      const results = [];\n      let match;\n      while (match = regex.exec(text)) {\n        const matchedText = match[pattern.matchIndex];\n        const matchStart = match.index + match[0].indexOf(matchedText);\n        const matchFinish = matchStart + matchedText.length;\n        if (matchFinish > finish) {\n          break;\n        }\n        results.push({\n          start: matchStart,\n          finish: matchFinish\n        });\n        regex.lastIndex = matchFinish;\n      }\n      return results;\n    };\n    const extract = (elements, matches) => {\n      const nodePositions = foldl(elements, (acc, element) => {\n        const content = get$1(element);\n        const start = acc.last;\n        const finish = start + content.length;\n        const positions = bind(matches, (match, matchIdx) => {\n          if (match.start < finish && match.finish > start) {\n            return [{\n              element,\n              start: Math.max(start, match.start) - start,\n              finish: Math.min(finish, match.finish) - start,\n              matchId: matchIdx\n            }];\n          } else {\n            return [];\n          }\n        });\n        return {\n          results: acc.results.concat(positions),\n          last: finish\n        };\n      }, {\n        results: [],\n        last: 0\n      }).results;\n      return groupBy(nodePositions, position => position.matchId);\n    };\n\n    const find$1 = (pattern, sections) => bind(sections, section => {\n      const elements = section.elements;\n      const content = map(elements, get$1).join('');\n      const positions = find$2(content, pattern, section.sOffset, content.length - section.fOffset);\n      return extract(elements, positions);\n    });\n    const mark = (matches, replacementNode) => {\n      eachr(matches, (match, idx) => {\n        eachr(match, pos => {\n          const wrapper = SugarElement.fromDom(replacementNode.cloneNode(false));\n          set(wrapper, 'data-mce-index', idx);\n          const textNode = pos.element.dom;\n          if (textNode.length === pos.finish && pos.start === 0) {\n            wrap(pos.element, wrapper);\n          } else {\n            if (textNode.length !== pos.finish) {\n              textNode.splitText(pos.finish);\n            }\n            const matchNode = textNode.splitText(pos.start);\n            wrap(SugarElement.fromDom(matchNode), wrapper);\n          }\n        });\n      });\n    };\n    const findAndMark = (dom, pattern, node, replacementNode) => {\n      const textSections = fromNode(dom, node);\n      const matches = find$1(pattern, textSections);\n      mark(matches, replacementNode);\n      return matches.length;\n    };\n    const findAndMarkInSelection = (dom, pattern, selection, replacementNode) => {\n      const bookmark = selection.getBookmark();\n      const nodes = dom.select('td[data-mce-selected],th[data-mce-selected]');\n      const textSections = nodes.length > 0 ? fromNodes(dom, nodes) : fromRng(dom, selection.getRng());\n      const matches = find$1(pattern, textSections);\n      mark(matches, replacementNode);\n      selection.moveToBookmark(bookmark);\n      return matches.length;\n    };\n\n    const getElmIndex = elm => {\n      return elm.getAttribute('data-mce-index');\n    };\n    const markAllMatches = (editor, currentSearchState, pattern, inSelection) => {\n      const marker = editor.dom.create('span', {\n        'data-mce-bogus': 1\n      });\n      marker.className = 'mce-match-marker';\n      const node = editor.getBody();\n      done(editor, currentSearchState, false);\n      if (inSelection) {\n        return findAndMarkInSelection(editor.dom, pattern, editor.selection, marker);\n      } else {\n        return findAndMark(editor.dom, pattern, node, marker);\n      }\n    };\n    const unwrap = node => {\n      var _a;\n      const parentNode = node.parentNode;\n      if (node.firstChild) {\n        parentNode.insertBefore(node.firstChild, node);\n      }\n      (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(node);\n    };\n    const findSpansByIndex = (editor, index) => {\n      const spans = [];\n      const nodes = global$1.toArray(editor.getBody().getElementsByTagName('span'));\n      if (nodes.length) {\n        for (let i = 0; i < nodes.length; i++) {\n          const nodeIndex = getElmIndex(nodes[i]);\n          if (nodeIndex === null || !nodeIndex.length) {\n            continue;\n          }\n          if (nodeIndex === index.toString()) {\n            spans.push(nodes[i]);\n          }\n        }\n      }\n      return spans;\n    };\n    const moveSelection = (editor, currentSearchState, forward) => {\n      const searchState = currentSearchState.get();\n      let testIndex = searchState.index;\n      const dom = editor.dom;\n      if (forward) {\n        if (testIndex + 1 === searchState.count) {\n          testIndex = 0;\n        } else {\n          testIndex++;\n        }\n      } else {\n        if (testIndex - 1 === -1) {\n          testIndex = searchState.count - 1;\n        } else {\n          testIndex--;\n        }\n      }\n      dom.removeClass(findSpansByIndex(editor, searchState.index), 'mce-match-marker-selected');\n      const spans = findSpansByIndex(editor, testIndex);\n      if (spans.length) {\n        dom.addClass(findSpansByIndex(editor, testIndex), 'mce-match-marker-selected');\n        editor.selection.scrollIntoView(spans[0]);\n        return testIndex;\n      }\n      return -1;\n    };\n    const removeNode = (dom, node) => {\n      const parent = node.parentNode;\n      dom.remove(node);\n      if (parent && dom.isEmpty(parent)) {\n        dom.remove(parent);\n      }\n    };\n    const escapeSearchText = (text, wholeWord) => {\n      const escapedText = text.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&').replace(/\\s/g, '[^\\\\S\\\\r\\\\n\\\\uFEFF]');\n      const wordRegex = '(' + escapedText + ')';\n      return wholeWord ? \"(?:^|\\\\s|\".concat(punctuation(), \")\") + wordRegex + \"(?=$|\\\\s|\".concat(punctuation(), \")\") : wordRegex;\n    };\n    const find = (editor, currentSearchState, text, matchCase, wholeWord, inSelection) => {\n      const selection = editor.selection;\n      const escapedText = escapeSearchText(text, wholeWord);\n      const isForwardSelection = selection.isForward();\n      const pattern = {\n        regex: new RegExp(escapedText, matchCase ? 'g' : 'gi'),\n        matchIndex: 1\n      };\n      const count = markAllMatches(editor, currentSearchState, pattern, inSelection);\n      if (global$2.browser.isSafari()) {\n        selection.setRng(selection.getRng(), isForwardSelection);\n      }\n      if (count) {\n        const newIndex = moveSelection(editor, currentSearchState, true);\n        currentSearchState.set({\n          index: newIndex,\n          count,\n          text,\n          matchCase,\n          wholeWord,\n          inSelection\n        });\n      }\n      return count;\n    };\n    const next = (editor, currentSearchState) => {\n      const index = moveSelection(editor, currentSearchState, true);\n      currentSearchState.set({\n        ...currentSearchState.get(),\n        index\n      });\n    };\n    const prev = (editor, currentSearchState) => {\n      const index = moveSelection(editor, currentSearchState, false);\n      currentSearchState.set({\n        ...currentSearchState.get(),\n        index\n      });\n    };\n    const isMatchSpan = node => {\n      const matchIndex = getElmIndex(node);\n      return matchIndex !== null && matchIndex.length > 0;\n    };\n    const replace = (editor, currentSearchState, text, forward, all) => {\n      const searchState = currentSearchState.get();\n      const currentIndex = searchState.index;\n      let currentMatchIndex,\n        nextIndex = currentIndex;\n      forward = forward !== false;\n      const node = editor.getBody();\n      const nodes = global$1.grep(global$1.toArray(node.getElementsByTagName('span')), isMatchSpan);\n      for (let i = 0; i < nodes.length; i++) {\n        const nodeIndex = getElmIndex(nodes[i]);\n        let matchIndex = currentMatchIndex = parseInt(nodeIndex, 10);\n        if (all || matchIndex === searchState.index) {\n          if (text.length) {\n            nodes[i].innerText = text;\n            unwrap(nodes[i]);\n          } else {\n            removeNode(editor.dom, nodes[i]);\n          }\n          while (nodes[++i]) {\n            matchIndex = parseInt(getElmIndex(nodes[i]), 10);\n            if (matchIndex === currentMatchIndex) {\n              removeNode(editor.dom, nodes[i]);\n            } else {\n              i--;\n              break;\n            }\n          }\n          if (forward) {\n            nextIndex--;\n          }\n        } else if (currentMatchIndex > currentIndex) {\n          nodes[i].setAttribute('data-mce-index', String(currentMatchIndex - 1));\n        }\n      }\n      currentSearchState.set({\n        ...searchState,\n        count: all ? 0 : searchState.count - 1,\n        index: nextIndex\n      });\n      if (forward) {\n        next(editor, currentSearchState);\n      } else {\n        prev(editor, currentSearchState);\n      }\n      return !all && currentSearchState.get().count > 0;\n    };\n    const done = (editor, currentSearchState, keepEditorSelection) => {\n      let startContainer;\n      let endContainer;\n      const searchState = currentSearchState.get();\n      const nodes = global$1.toArray(editor.getBody().getElementsByTagName('span'));\n      for (let i = 0; i < nodes.length; i++) {\n        const nodeIndex = getElmIndex(nodes[i]);\n        if (nodeIndex !== null && nodeIndex.length) {\n          if (nodeIndex === searchState.index.toString()) {\n            if (!startContainer) {\n              startContainer = nodes[i].firstChild;\n            }\n            endContainer = nodes[i].firstChild;\n          }\n          unwrap(nodes[i]);\n        }\n      }\n      currentSearchState.set({\n        ...searchState,\n        index: -1,\n        count: 0,\n        text: ''\n      });\n      if (startContainer && endContainer) {\n        const rng = editor.dom.createRng();\n        rng.setStart(startContainer, 0);\n        rng.setEnd(endContainer, endContainer.data.length);\n        if (keepEditorSelection !== false) {\n          editor.selection.setRng(rng);\n        }\n        return rng;\n      } else {\n        return undefined;\n      }\n    };\n    const hasNext = (editor, currentSearchState) => currentSearchState.get().count > 1;\n    const hasPrev = (editor, currentSearchState) => currentSearchState.get().count > 1;\n\n    const get = (editor, currentState) => {\n      const done$1 = keepEditorSelection => {\n        return done(editor, currentState, keepEditorSelection);\n      };\n      const find$1 = (text, matchCase, wholeWord, inSelection = false) => {\n        return find(editor, currentState, text, matchCase, wholeWord, inSelection);\n      };\n      const next$1 = () => {\n        return next(editor, currentState);\n      };\n      const prev$1 = () => {\n        return prev(editor, currentState);\n      };\n      const replace$1 = (text, forward, all) => {\n        return replace(editor, currentState, text, forward, all);\n      };\n      return {\n        done: done$1,\n        find: find$1,\n        next: next$1,\n        prev: prev$1,\n        replace: replace$1\n      };\n    };\n\n    const singleton = doRevoke => {\n      const subject = Cell(Optional.none());\n      const revoke = () => subject.get().each(doRevoke);\n      const clear = () => {\n        revoke();\n        subject.set(Optional.none());\n      };\n      const isSet = () => subject.get().isSome();\n      const get = () => subject.get();\n      const set = s => {\n        revoke();\n        subject.set(Optional.some(s));\n      };\n      return {\n        clear,\n        isSet,\n        get,\n        set\n      };\n    };\n    const value = () => {\n      const subject = singleton(noop);\n      const on = f => subject.get().each(f);\n      return {\n        ...subject,\n        on\n      };\n    };\n\n    const open = (editor, currentSearchState) => {\n      const dialogApi = value();\n      editor.undoManager.add();\n      const selectedText = global$1.trim(editor.selection.getContent({\n        format: 'text'\n      }));\n      const updateButtonStates = api => {\n        api.setEnabled('next', hasNext(editor, currentSearchState));\n        api.setEnabled('prev', hasPrev(editor, currentSearchState));\n      };\n      const updateSearchState = api => {\n        const data = api.getData();\n        const current = currentSearchState.get();\n        currentSearchState.set({\n          ...current,\n          matchCase: data.matchcase,\n          wholeWord: data.wholewords,\n          inSelection: data.inselection\n        });\n      };\n      const disableAll = (api, disable) => {\n        const buttons = ['replace', 'replaceall', 'prev', 'next'];\n        const toggle = name => api.setEnabled(name, !disable);\n        each(buttons, toggle);\n      };\n      const toggleNotFoundAlert = (isVisible, api) => {\n        api.redial(getDialogSpec(isVisible, api.getData()));\n      };\n      const focusButtonIfRequired = (api, name) => {\n        if (global$2.browser.isSafari() && global$2.deviceType.isTouch() && (name === 'find' || name === 'replace' || name === 'replaceall')) {\n          api.focus(name);\n        }\n      };\n      const reset = api => {\n        done(editor, currentSearchState, false);\n        disableAll(api, true);\n        updateButtonStates(api);\n      };\n      const doFind = api => {\n        const data = api.getData();\n        const last = currentSearchState.get();\n        if (!data.findtext.length) {\n          reset(api);\n          return;\n        }\n        if (last.text === data.findtext && last.matchCase === data.matchcase && last.wholeWord === data.wholewords) {\n          next(editor, currentSearchState);\n        } else {\n          const count = find(editor, currentSearchState, data.findtext, data.matchcase, data.wholewords, data.inselection);\n          if (count <= 0) {\n            toggleNotFoundAlert(true, api);\n          }\n          disableAll(api, count === 0);\n        }\n        updateButtonStates(api);\n      };\n      const initialState = currentSearchState.get();\n      const initialData = {\n        findtext: selectedText,\n        replacetext: '',\n        wholewords: initialState.wholeWord,\n        matchcase: initialState.matchCase,\n        inselection: initialState.inSelection\n      };\n      const getPanelItems = error => {\n        const items = [{\n          type: 'bar',\n          items: [{\n            type: 'input',\n            name: 'findtext',\n            placeholder: 'Find',\n            maximized: true,\n            inputMode: 'search'\n          }, {\n            type: 'button',\n            name: 'prev',\n            text: 'Previous',\n            icon: 'action-prev',\n            enabled: false,\n            borderless: true\n          }, {\n            type: 'button',\n            name: 'next',\n            text: 'Next',\n            icon: 'action-next',\n            enabled: false,\n            borderless: true\n          }]\n        }, {\n          type: 'input',\n          name: 'replacetext',\n          placeholder: 'Replace with',\n          inputMode: 'search'\n        }];\n        if (error) {\n          items.push({\n            type: 'alertbanner',\n            level: 'error',\n            text: 'Could not find the specified string.',\n            icon: 'warning'\n          });\n        }\n        return items;\n      };\n      const getDialogSpec = (showNoMatchesAlertBanner, initialData) => ({\n        title: 'Find and Replace',\n        size: 'normal',\n        body: {\n          type: 'panel',\n          items: getPanelItems(showNoMatchesAlertBanner)\n        },\n        buttons: [{\n          type: 'menu',\n          name: 'options',\n          icon: 'preferences',\n          tooltip: 'Preferences',\n          align: 'start',\n          items: [{\n            type: 'togglemenuitem',\n            name: 'matchcase',\n            text: 'Match case'\n          }, {\n            type: 'togglemenuitem',\n            name: 'wholewords',\n            text: 'Find whole words only'\n          }, {\n            type: 'togglemenuitem',\n            name: 'inselection',\n            text: 'Find in selection'\n          }]\n        }, {\n          type: 'custom',\n          name: 'find',\n          text: 'Find',\n          primary: true\n        }, {\n          type: 'custom',\n          name: 'replace',\n          text: 'Replace',\n          enabled: false\n        }, {\n          type: 'custom',\n          name: 'replaceall',\n          text: 'Replace all',\n          enabled: false\n        }],\n        initialData,\n        onChange: (api, details) => {\n          if (showNoMatchesAlertBanner) {\n            toggleNotFoundAlert(false, api);\n          }\n          if (details.name === 'findtext' && currentSearchState.get().count > 0) {\n            reset(api);\n          }\n        },\n        onAction: (api, details) => {\n          const data = api.getData();\n          switch (details.name) {\n            case 'find':\n              doFind(api);\n              break;\n            case 'replace':\n              if (!replace(editor, currentSearchState, data.replacetext)) {\n                reset(api);\n              } else {\n                updateButtonStates(api);\n              }\n              break;\n            case 'replaceall':\n              replace(editor, currentSearchState, data.replacetext, true, true);\n              reset(api);\n              break;\n            case 'prev':\n              prev(editor, currentSearchState);\n              updateButtonStates(api);\n              break;\n            case 'next':\n              next(editor, currentSearchState);\n              updateButtonStates(api);\n              break;\n            case 'matchcase':\n            case 'wholewords':\n            case 'inselection':\n              toggleNotFoundAlert(false, api);\n              updateSearchState(api);\n              reset(api);\n              break;\n          }\n          focusButtonIfRequired(api, details.name);\n        },\n        onSubmit: api => {\n          doFind(api);\n          focusButtonIfRequired(api, 'find');\n        },\n        onClose: () => {\n          editor.focus();\n          done(editor, currentSearchState);\n          editor.undoManager.add();\n        }\n      });\n      dialogApi.set(editor.windowManager.open(getDialogSpec(false, initialData), {\n        inline: 'toolbar'\n      }));\n    };\n\n    const register$1 = (editor, currentSearchState) => {\n      editor.addCommand('SearchReplace', () => {\n        open(editor, currentSearchState);\n      });\n    };\n\n    const showDialog = (editor, currentSearchState) => () => {\n      open(editor, currentSearchState);\n    };\n    const register = (editor, currentSearchState) => {\n      editor.ui.registry.addMenuItem('searchreplace', {\n        text: 'Find and replace...',\n        shortcut: 'Meta+F',\n        onAction: showDialog(editor, currentSearchState),\n        icon: 'search'\n      });\n      editor.ui.registry.addButton('searchreplace', {\n        tooltip: 'Find and replace',\n        onAction: showDialog(editor, currentSearchState),\n        icon: 'search'\n      });\n      editor.shortcuts.add('Meta+F', '', showDialog(editor, currentSearchState));\n    };\n\n    var Plugin = () => {\n      global$3.add('searchreplace', editor => {\n        const currentSearchState = Cell({\n          index: -1,\n          count: 0,\n          text: '',\n          matchCase: false,\n          wholeWord: false,\n          inSelection: false\n        });\n        register$1(editor, currentSearchState);\n        register(editor, currentSearchState);\n        return get(editor, currentSearchState);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const isArray = isType$1('array');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const identity = x => {\n      return x;\n    };\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const nativeIndexOf = Array.prototype.indexOf;\n    const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n    const contains = (xs, x) => rawIndexOf(xs, x) > -1;\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const forall = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        const x = xs[i];\n        if (pred(x, i) !== true) {\n          return false;\n        }\n      }\n      return true;\n    };\n\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const type = element => element.dom.nodeType;\n    const isType = t => element => type(element) === t;\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n\n    const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n    const children = element => map(element.dom.childNodes, SugarElement.fromDom);\n\n    const append = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n\n    const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getContentContainer = dos => isShadowRoot(dos) ? dos : SugarElement.fromDom(documentOrOwner(dos).dom.body);\n\n    const body = () => getBody(SugarElement.fromDom(document));\n    const getBody = doc => {\n      const b = doc.dom.body;\n      if (b === null || b === undefined) {\n        throw new Error('Body is not available yet');\n      }\n      return SugarElement.fromDom(b);\n    };\n\n    const prefixName = name => constant('alloy.' + name);\n    const attachedToDom = prefixName('system.attached');\n\n    const emit = (component, event) => {\n      dispatchWith(component, component.element, event, {});\n    };\n    const dispatchWith = (component, target, event, properties) => {\n      const data = {\n        target,\n        ...properties\n      };\n      component.getSystem().triggerEvent(event, target, data);\n    };\n\n    const keys = Object.keys;\n\n    const generate$1 = cases => {\n      if (!isArray(cases)) {\n        throw new Error('cases must be an array');\n      }\n      if (cases.length === 0) {\n        throw new Error('there must be at least one case');\n      }\n      const constructors = [];\n      const adt = {};\n      each(cases, (acase, count) => {\n        const keys$1 = keys(acase);\n        if (keys$1.length !== 1) {\n          throw new Error('one and only one name per case');\n        }\n        const key = keys$1[0];\n        const value = acase[key];\n        if (adt[key] !== undefined) {\n          throw new Error('duplicate key detected:' + key);\n        } else if (key === 'cata') {\n          throw new Error('cannot have a case named cata (sorry)');\n        } else if (!isArray(value)) {\n          throw new Error('case arguments must be an array');\n        }\n        constructors.push(key);\n        adt[key] = (...args) => {\n          const argLength = args.length;\n          if (argLength !== value.length) {\n            throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n          }\n          const match = branches => {\n            const branchKeys = keys(branches);\n            if (constructors.length !== branchKeys.length) {\n              throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n            }\n            const allReqd = forall(constructors, reqKey => {\n              return contains(branchKeys, reqKey);\n            });\n            if (!allReqd) {\n              throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n            }\n            return branches[key].apply(null, args);\n          };\n          return {\n            fold: (...foldArgs) => {\n              if (foldArgs.length !== cases.length) {\n                throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length);\n              }\n              const target = foldArgs[count];\n              return target.apply(null, args);\n            },\n            match,\n            log: label => {\n              console.log(label, {\n                constructors,\n                constructor: key,\n                params: args\n              });\n            }\n          };\n        };\n      });\n      return adt;\n    };\n    const Adt = {\n      generate: generate$1\n    };\n\n    Adt.generate([{\n      bothErrors: ['error1', 'error2']\n    }, {\n      firstError: ['error1', 'value2']\n    }, {\n      secondError: ['value1', 'error2']\n    }, {\n      bothValues: ['value1', 'value2']\n    }]);\n\n    let unique = 0;\n    const generate = prefix => {\n      const date = new Date();\n      const time = date.getTime();\n      const random = Math.floor(Math.random() * 1000000000);\n      unique++;\n      return prefix + '_' + random + unique + String(time);\n    };\n\n    generate('alloy-premade');\n\n    const fireAttaching = component => {\n      const children = component.components();\n      each(children, fireAttaching);\n      emit(component, attachedToDom());\n    };\n\n    const attachSystem = (element, guiSystem) => {\n      attachSystemWith(element, guiSystem, append);\n    };\n    const attachSystemWith = (element, guiSystem, inserter) => {\n      inserter(element, guiSystem.element);\n      const children$1 = children(guiSystem.element);\n      each(children$1, child => {\n        guiSystem.getByDom(child).each(fireAttaching);\n      });\n    };\n\n    const getDocument = () => SugarElement.fromDom(document);\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.StyleSheetLoader');\n\n    var global = tinymce.util.Tools.resolve('tinymce.EditorManager');\n\n    const getSkinUrl = editor => {\n      const skin = editor.options.get('skin');\n      let skinUrl = editor.options.get('skin_url');\n      if (skin !== false) {\n        const skinName = skin ? skin : 'oxide';\n        if (skinUrl) {\n          skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);\n        } else {\n          skinUrl = global.baseURL + '/skins/ui/' + skinName;\n        }\n      }\n      return skinUrl;\n    };\n    const isSkinDisabled = editor => editor.options.get('skin') === false;\n\n    const SN_TINYMCE_HOIST_TAG = 'sn-tinymce-hoist';\n    let skinLoaded = false;\n    let hoistEl;\n    const createHoistElement = () => {\n      if (!hoistEl) {\n        hoistEl = getDocument().dom.createElement(SN_TINYMCE_HOIST_TAG);\n        hoistEl.attachShadow({\n          mode: 'open'\n        });\n        append(body(), SugarElement.fromDom(hoistEl));\n      }\n    };\n    const loadSkin = editor => {\n      if (!skinLoaded && hoistEl) {\n        const {\n          shadowRoot\n        } = hoistEl;\n        if (!shadowRoot) return;\n        const styleSheetLoader = global$1(shadowRoot, {\n          contentCssCors: editor.getParam('content_css_cors'),\n          referrerPolicy: editor.getParam('referrer_policy', '', 'string')\n        });\n        const stylesheetUrl = \"\".concat(getSkinUrl(editor), \"/skin.min.css\");\n        if (isSkinDisabled(editor) === false) {\n          styleSheetLoader.load(stylesheetUrl);\n        }\n        skinLoaded = true;\n      }\n    };\n    const moveSink = (editor, parent) => {\n      if (!parent) return;\n      const root = SugarElement.fromDom(parent);\n      const uiRoot = getContentContainer(getRootNode(root));\n      const uiMothership = editor.theme.ui.getRootComponent();\n      if (!uiRoot.dom.contains(uiMothership.element.dom)) {\n        attachSystem(uiRoot, uiMothership);\n      }\n      const style = uiMothership.element.dom.style;\n      style.zIndex = '65536';\n      style.position = 'absolute';\n      style.width = '100%';\n    };\n    const hoistSink = editor => {\n      if (hoistEl) moveSink(editor, hoistEl.shadowRoot);\n    };\n    const restoreSink = editor => {\n      moveSink(editor, editor.getElement());\n    };\n    const setupHoist = editor => {\n      createHoistElement();\n      loadSkin(editor);\n    };\n    const removeHoist = editor => {\n      if (!hoistEl) return;\n      editor.theme.ui.getRootComponent().destroy();\n      const editors = global.get();\n      if (editors.length === 0 || editors.length === 1 && editors[0] === editor) {\n        hoistEl.remove();\n        hoistEl = null;\n        skinLoaded = false;\n      }\n    };\n\n    const isFullScreen = editor => {\n      return editor.plugins.fullscreen && editor.plugins.fullscreen.isFullscreen();\n    };\n    const areNotificationsOpen = editor => {\n      const notifications = editor.notificationManager.getNotifications();\n      return notifications === null || notifications === void 0 ? void 0 : notifications.length;\n    };\n    const hoistNotificationsOnFullScreen = editor => {\n      editor.on('FullscreenStateChanged', ({\n        state\n      }) => {\n        if (state && areNotificationsOpen(editor)) {\n          hoistSink(editor);\n        } else {\n          restoreSink(editor);\n        }\n      });\n      editor.on('BeforeOpenNotification', () => {\n        if (isFullScreen(editor)) {\n          hoistSink(editor);\n        }\n      });\n    };\n\n    const dismissPopups$1 = constant('dismiss.popups');\n\n    const debounce = (callback, time) => {\n      let timeout = null;\n      let debounced = false;\n      let stopped = false;\n      const func = function (...args) {\n        const context = this;\n        debounced = !!timeout;\n        return new Promise(resolve => {\n          const later = () => {\n            timeout = null;\n            if (debounced) {\n              callback.apply(context, args).then(data => !stopped && resolve(data));\n            }\n          };\n          stopped = false;\n          clearTimeout(timeout);\n          timeout = setTimeout(later, time);\n          if (!debounced) {\n            callback.apply(context, args).then(data => !stopped && resolve(data));\n          }\n        });\n      };\n      func.stop = () => {\n        stopped = true;\n        clearTimeout(timeout);\n      };\n      return func;\n    };\n\n    let count = 0;\n    const seed = () => {\n      const rnd = () => {\n        return Math.round(Math.random() * 4294967295).toString(36);\n      };\n      const now = new Date().getTime();\n      return 's' + now.toString(36) + rnd() + rnd() + rnd();\n    };\n    const uuid = prefix => {\n      return prefix + count++ + seed();\n    };\n\n    const EVENT_PREFIX = 'sn-tinymce-findAncestors';\n    const hostMap = new WeakMap();\n    const editorMap = new Map();\n    const findAncestors = element => new Promise(resolve => {\n      const eventName = uuid(EVENT_PREFIX);\n      const findListener = e => {\n        window.removeEventListener(eventName, findListener);\n        const path = e.composedPath();\n        resolve([...path.filter(n => n !== element && n.nodeType === Node.ELEMENT_NODE), document, window]);\n      };\n      window.addEventListener(eventName, findListener);\n      const event = new window.CustomEvent(eventName, {\n        bubbles: true,\n        composed: true,\n        cancelable: false\n      });\n      element.dispatchEvent(event);\n    });\n    const dismissPopups = editor => {\n      const channel = dismissPopups$1();\n      editor.theme.ui.getRootComponent().broadcastOn([channel], {\n        target: editor.theme.ui.getRootComponent().element\n      });\n      editor.dispatch('sn_popups_fix.dismiss_popups');\n    };\n    const scrollHandler = debounce(source => new Promise(() => {\n      for (const [editor, ancestors] of Array.from(editorMap.entries())) {\n        if (ancestors.indexOf(source) >= 0) {\n          dismissPopups(editor);\n          restoreSink(editor);\n          editor.nodeChanged();\n        }\n      }\n    }), 100);\n    const scrollListener = event => {\n      const [source] = event.composedPath();\n      scrollHandler(source);\n    };\n    const addWindowHandlers = editor => {\n      const oldOpen = editor.windowManager.open;\n      editor.windowManager.open = (...args) => {\n        hoistSink(editor);\n        return oldOpen.apply(editor, args);\n      };\n      editor.on('CloseWindow', () => {\n        restoreSink(editor);\n      });\n    };\n    const getPopupButtons = editor => {\n      const tinymceContainer = editor.getContainer();\n      return [...tinymceContainer.querySelectorAll('button.tox-tbtn--select[aria-haspopup=\"true\"], div.tox-split-button[aria-haspopup=\"true\"], button.tox-mbtn.tox-mbtn--select[aria-haspopup=\"true\"]')];\n    };\n    const addPopupButtonClickListenersOnNodeChange = editor => {\n      const onNodeChange = () => {\n        const buttons = getPopupButtons(editor);\n        if (buttons.length !== 0) {\n          addPopupButtonClickListeners(editor);\n          editor.off('NodeChange', onNodeChange);\n        }\n      };\n      editor.on('NodeChange', onNodeChange);\n    };\n    const addPopupButtonClickListeners = editor => {\n      const buttons = getPopupButtons(editor);\n      for (const button of buttons) {\n        button.addEventListener('click', () => {\n          hoistSink(editor);\n        });\n      }\n      editor.on('click focus', () => {\n        restoreSink(editor);\n      });\n    };\n    const getHostsFromAncestors = ancestors => [...ancestors.map(el => el.shadowRoot).filter(identity), window];\n    const addOutsideScrollListener = editor => {\n      const target = editor.getContainer();\n      findAncestors(target).then(ancestors => {\n        const hosts = getHostsFromAncestors(ancestors);\n        for (const host of hosts) {\n          let editorSet = hostMap.get(host);\n          if (!editorSet) {\n            host.addEventListener('scroll', scrollListener, true);\n            editorSet = new Set();\n            hostMap.set(host, editorSet);\n          }\n          editorSet.add(editor);\n        }\n        editorMap.set(editor, ancestors);\n      });\n    };\n    const removeOutsideScrollListener = editor => {\n      const ancestors = editorMap.get(editor);\n      if (!ancestors) return;\n      const hosts = getHostsFromAncestors(ancestors);\n      for (const host of hosts) {\n        const editorSet = hostMap.get(host);\n        editorSet === null || editorSet === void 0 ? void 0 : editorSet.delete(editor);\n        if (!editorSet || editorSet.size === 0) {\n          host.removeEventListener('scroll', scrollListener, true);\n          hostMap.delete(host);\n        }\n      }\n      editorMap.delete(editor);\n    };\n\n    var Plugin = () => {\n      global$2.add('sn_popups_fix', editor => {\n        editor.on('init', () => {\n          setupHoist(editor);\n          addPopupButtonClickListenersOnNodeChange(editor);\n          addOutsideScrollListener(editor);\n          addWindowHandlers(editor);\n          hoistNotificationsOnFullScreen(editor);\n        });\n        editor.on('remove', () => {\n          removeHoist(editor);\n          removeOutsideScrollListener(editor);\n        });\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq$1 = t => a => t === a;\n    const isString = isType$1('string');\n    const isArray = isType$1('array');\n    const isBoolean = isSimpleType('boolean');\n    const isUndefined = eq$1(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n\n    const noop = () => {};\n    const compose1 = (fbc, fab) => a => fbc(fab(a));\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const identity = x => {\n      return x;\n    };\n    const tripleEquals = (a, b) => {\n      return a === b;\n    };\n    function curry(fn, ...initialArgs) {\n      return (...restArgs) => {\n        const all = initialArgs.concat(restArgs);\n        return fn.apply(null, all);\n      };\n    }\n    const call = f => {\n      f();\n    };\n    const never = constant(false);\n    const always = constant(true);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const keys = Object.keys;\n    const hasOwnProperty = Object.hasOwnProperty;\n    const each$1 = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const objAcc = r => (x, i) => {\n      r[i] = x;\n    };\n    const internalFilter = (obj, pred, onTrue, onFalse) => {\n      each$1(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const filter$1 = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\n    const mapToArray = (obj, f) => {\n      const r = [];\n      each$1(obj, (value, name) => {\n        r.push(f(value, name));\n      });\n      return r;\n    };\n    const values = obj => {\n      return mapToArray(obj, identity);\n    };\n    const size = obj => {\n      return keys(obj).length;\n    };\n    const get$4 = (obj, key) => {\n      return has(obj, key) ? Optional.from(obj[key]) : Optional.none();\n    };\n    const has = (obj, key) => hasOwnProperty.call(obj, key);\n    const hasNonNullableKey = (obj, key) => has(obj, key) && obj[key] !== undefined && obj[key] !== null;\n    const isEmpty$1 = r => {\n      for (const x in r) {\n        if (hasOwnProperty.call(r, x)) {\n          return false;\n        }\n      }\n      return true;\n    };\n\n    const nativeIndexOf = Array.prototype.indexOf;\n    const nativePush = Array.prototype.push;\n    const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n    const contains = (xs, x) => rawIndexOf(xs, x) > -1;\n    const exists = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const range = (num, f) => {\n      const r = [];\n      for (let i = 0; i < num; i++) {\n        r.push(f(i));\n      }\n      return r;\n    };\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const eachr = (xs, f) => {\n      for (let i = xs.length - 1; i >= 0; i--) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const partition = (xs, pred) => {\n      const pass = [];\n      const fail = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        const arr = pred(x, i) ? pass : fail;\n        arr.push(x);\n      }\n      return {\n        pass,\n        fail\n      };\n    };\n    const filter = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    const foldr = (xs, f, acc) => {\n      eachr(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const foldl = (xs, f, acc) => {\n      each(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const findUntil = (xs, pred, until) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(x);\n        } else if (until(x, i)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const find = (xs, pred) => {\n      return findUntil(xs, pred, never);\n    };\n    const flatten$1 = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const bind = (xs, f) => flatten$1(map(xs, f));\n    const forall = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        const x = xs[i];\n        if (pred(x, i) !== true) {\n          return false;\n        }\n      }\n      return true;\n    };\n    const mapToObject = (xs, f) => {\n      const r = {};\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        r[String(x)] = f(x, i);\n      }\n      return r;\n    };\n    const get$3 = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get$3(xs, 0);\n    const last = xs => get$3(xs, xs.length - 1);\n    const findMap = (arr, f) => {\n      for (let i = 0; i < arr.length; i++) {\n        const r = f(arr[i], i);\n        if (r.isSome()) {\n          return r;\n        }\n      }\n      return Optional.none();\n    };\n\n    const COMMENT = 8;\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom$1(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom$1(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom$1(node);\n    };\n    const fromDom$1 = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$1);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom: fromDom$1,\n      fromPoint\n    };\n\n    const is$2 = (element, selector) => {\n      const dom = element.dom;\n      if (dom.nodeType !== ELEMENT) {\n        return false;\n      } else {\n        const elem = dom;\n        if (elem.matches !== undefined) {\n          return elem.matches(selector);\n        } else if (elem.msMatchesSelector !== undefined) {\n          return elem.msMatchesSelector(selector);\n        } else if (elem.webkitMatchesSelector !== undefined) {\n          return elem.webkitMatchesSelector(selector);\n        } else if (elem.mozMatchesSelector !== undefined) {\n          return elem.mozMatchesSelector(selector);\n        } else {\n          throw new Error('Browser lacks native selectors');\n        }\n      }\n    };\n    const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;\n    const all$1 = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom);\n    };\n    const one = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n    };\n\n    const eq = (e1, e2) => e1.dom === e2.dom;\n    const is$1 = is$2;\n\n    typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const name = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n    const type = element => element.dom.nodeType;\n    const isType = t => element => type(element) === t;\n    const isComment = element => type(element) === COMMENT || name(element) === '#comment';\n    const isElement = isType(ELEMENT);\n    const isText = isType(TEXT);\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n    const isTag = tag => e => isElement(e) && name(e) === tag;\n\n    const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const parents = (element, isRoot) => {\n      const stop = isFunction(isRoot) ? isRoot : never;\n      let dom = element.dom;\n      const ret = [];\n      while (dom.parentNode !== null && dom.parentNode !== undefined) {\n        const rawParent = dom.parentNode;\n        const p = SugarElement.fromDom(rawParent);\n        ret.push(p);\n        if (stop(p) === true) {\n          break;\n        } else {\n          dom = rawParent;\n        }\n      }\n      return ret;\n    };\n    const prevSibling = element => Optional.from(element.dom.previousSibling).map(SugarElement.fromDom);\n    const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);\n    const children$3 = element => map(element.dom.childNodes, SugarElement.fromDom);\n    const child$3 = (element, index) => {\n      const cs = element.dom.childNodes;\n      return Optional.from(cs[index]).map(SugarElement.fromDom);\n    };\n    const firstChild = element => child$3(element, 0);\n\n    const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getShadowRoot = e => {\n      const r = getRootNode(e);\n      return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n    };\n    const getShadowHost = e => SugarElement.fromDom(e.dom.host);\n\n    const inBody = element => {\n      const dom = isText(element) ? element.dom.parentNode : element.dom;\n      if (dom === undefined || dom === null || dom.ownerDocument === null) {\n        return false;\n      }\n      const doc = dom.ownerDocument;\n      return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n    };\n\n    var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n      if (is(scope, a)) {\n        return Optional.some(scope);\n      } else if (isFunction(isRoot) && isRoot(scope)) {\n        return Optional.none();\n      } else {\n        return ancestor(scope, a, isRoot);\n      }\n    };\n\n    const ancestor$1 = (scope, predicate, isRoot) => {\n      let element = scope.dom;\n      const stop = isFunction(isRoot) ? isRoot : never;\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        if (predicate(el)) {\n          return Optional.some(el);\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const closest$2 = (scope, predicate, isRoot) => {\n      const is = (s, test) => test(s);\n      return ClosestOrAncestor(is, ancestor$1, scope, predicate, isRoot);\n    };\n    const child$2 = (scope, predicate) => {\n      const pred = node => predicate(SugarElement.fromDom(node));\n      const result = find(scope.dom.childNodes, pred);\n      return result.map(SugarElement.fromDom);\n    };\n\n    const ancestor = (scope, selector, isRoot) => ancestor$1(scope, e => is$2(e, selector), isRoot);\n    const child$1 = (scope, selector) => child$2(scope, e => is$2(e, selector));\n    const descendant = (scope, selector) => one(selector, scope);\n    const closest$1 = (scope, selector, isRoot) => {\n      const is = (element, selector) => is$2(element, selector);\n      return ClosestOrAncestor(is, ancestor, scope, selector, isRoot);\n    };\n\n    const closest = target => closest$1(target, '[contenteditable]');\n    const isEditable = (element, assumeEditable = false) => {\n      if (inBody(element)) {\n        return element.dom.isContentEditable;\n      } else {\n        return closest(element).fold(constant(assumeEditable), editable => getRaw$1(editable) === 'true');\n      }\n    };\n    const getRaw$1 = element => element.dom.contentEditable;\n\n    const getNodeName = elm => elm.nodeName.toLowerCase();\n    const getBody = editor => SugarElement.fromDom(editor.getBody());\n    const getIsRoot = editor => element => eq(element, getBody(editor));\n    const removePxSuffix = size => size ? size.replace(/px$/, '') : '';\n    const addPxSuffix = size => /^\\d+(\\.\\d+)?$/.test(size) ? size + 'px' : size;\n    const getSelectionStart = editor => SugarElement.fromDom(editor.selection.getStart());\n    const getSelectionEnd = editor => SugarElement.fromDom(editor.selection.getEnd());\n    const isInEditableContext = cell => closest$2(cell, isTag('table')).forall(isEditable);\n\n    const children$2 = (scope, predicate) => filter(children$3(scope), predicate);\n    const descendants$1 = (scope, predicate) => {\n      let result = [];\n      each(children$3(scope), x => {\n        if (predicate(x)) {\n          result = result.concat([x]);\n        }\n        result = result.concat(descendants$1(x, predicate));\n      });\n      return result;\n    };\n\n    const children$1 = (scope, selector) => children$2(scope, e => is$2(e, selector));\n    const descendants = (scope, selector) => all$1(selector, scope);\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set$2 = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const setAll = (element, attrs) => {\n      const dom = element.dom;\n      each$1(attrs, (v, k) => {\n        rawSet(dom, k, v);\n      });\n    };\n    const get$2 = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const getOpt = (element, key) => Optional.from(get$2(element, key));\n    const remove$2 = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n    const clone = element => foldl(element.dom.attributes, (acc, attr) => {\n      acc[attr.name] = attr.value;\n      return acc;\n    }, {});\n\n    const is = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n    const cat = arr => {\n      const r = [];\n      const push = x => {\n        r.push(x);\n      };\n      for (let i = 0; i < arr.length; i++) {\n        arr[i].each(push);\n      }\n      return r;\n    };\n    const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();\n    const flatten = oot => oot.bind(identity);\n    const someIf = (b, a) => b ? Optional.some(a) : Optional.none();\n\n    const removeFromStart = (str, numChars) => {\n      return str.substring(numChars);\n    };\n\n    const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n    const removeLeading = (str, prefix) => {\n      return startsWith(str, prefix) ? removeFromStart(str, prefix.length) : str;\n    };\n    const startsWith = (str, prefix) => {\n      return checkRange(str, prefix, 0);\n    };\n    const blank = r => s => s.replace(r, '');\n    const trim = blank(/^\\s+|\\s+$/g);\n    const isNotEmpty = s => s.length > 0;\n    const isEmpty = s => !isNotEmpty(s);\n    const toInt = (value, radix = 10) => {\n      const num = parseInt(value, radix);\n      return isNaN(num) ? Optional.none() : Optional.some(num);\n    };\n    const toFloat = value => {\n      const num = parseFloat(value);\n      return isNaN(num) ? Optional.none() : Optional.some(num);\n    };\n\n    const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n    const internalSet = (dom, property, value) => {\n      if (!isString(value)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value);\n      }\n      if (isSupported(dom)) {\n        dom.style.setProperty(property, value);\n      }\n    };\n    const internalRemove = (dom, property) => {\n      if (isSupported(dom)) {\n        dom.style.removeProperty(property);\n      }\n    };\n    const set$1 = (element, property, value) => {\n      const dom = element.dom;\n      internalSet(dom, property, value);\n    };\n    const get$1 = (element, property) => {\n      const dom = element.dom;\n      const styles = window.getComputedStyle(dom);\n      const r = styles.getPropertyValue(property);\n      return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n    };\n    const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n    const getRaw = (element, property) => {\n      const dom = element.dom;\n      const raw = getUnsafeProperty(dom, property);\n      return Optional.from(raw).filter(r => r.length > 0);\n    };\n    const remove$1 = (element, property) => {\n      const dom = element.dom;\n      internalRemove(dom, property);\n      if (is(getOpt(element, 'style').map(trim), '')) {\n        remove$2(element, 'style');\n      }\n    };\n\n    const getAttrValue = (cell, name, fallback = 0) => getOpt(cell, name).map(value => parseInt(value, 10)).getOr(fallback);\n\n    const firstLayer = (scope, selector) => {\n      return filterFirstLayer(scope, selector, always);\n    };\n    const filterFirstLayer = (scope, selector, predicate) => {\n      return bind(children$3(scope), x => {\n        if (is$2(x, selector)) {\n          return predicate(x) ? [x] : [];\n        } else {\n          return filterFirstLayer(x, selector, predicate);\n        }\n      });\n    };\n\n    const validSectionList = ['tfoot', 'thead', 'tbody', 'colgroup'];\n    const isValidSection = parentName => contains(validSectionList, parentName);\n    const grid = (rows, columns) => ({\n      rows,\n      columns\n    });\n    const detail = (element, rowspan, colspan) => ({\n      element,\n      rowspan,\n      colspan\n    });\n    const extended = (element, rowspan, colspan, row, column, isLocked) => ({\n      element,\n      rowspan,\n      colspan,\n      row,\n      column,\n      isLocked\n    });\n    const rowdetail = (element, cells, section) => ({\n      element,\n      cells,\n      section\n    });\n    const bounds = (startRow, startCol, finishRow, finishCol) => ({\n      startRow,\n      startCol,\n      finishRow,\n      finishCol\n    });\n    const columnext = (element, colspan, column) => ({\n      element,\n      colspan,\n      column\n    });\n    const colgroup = (element, columns) => ({\n      element,\n      columns\n    });\n\n    const lookup = (tags, element, isRoot = never) => {\n      if (isRoot(element)) {\n        return Optional.none();\n      }\n      if (contains(tags, name(element))) {\n        return Optional.some(element);\n      }\n      const isRootOrUpperTable = elm => is$2(elm, 'table') || isRoot(elm);\n      return ancestor(element, tags.join(','), isRootOrUpperTable);\n    };\n    const cell = (element, isRoot) => lookup(['td', 'th'], element, isRoot);\n    const cells = ancestor => firstLayer(ancestor, 'th,td');\n    const columns = ancestor => {\n      if (is$2(ancestor, 'colgroup')) {\n        return children$1(ancestor, 'col');\n      } else {\n        return bind(columnGroups(ancestor), columnGroup => children$1(columnGroup, 'col'));\n      }\n    };\n    const table = (element, isRoot) => closest$1(element, 'table', isRoot);\n    const rows = ancestor => firstLayer(ancestor, 'tr');\n    const columnGroups = ancestor => table(ancestor).fold(constant([]), table => children$1(table, 'colgroup'));\n\n    const fromRowsOrColGroups = (elems, getSection) => map(elems, row => {\n      if (name(row) === 'colgroup') {\n        const cells = map(columns(row), column => {\n          const colspan = getAttrValue(column, 'span', 1);\n          return detail(column, 1, colspan);\n        });\n        return rowdetail(row, cells, 'colgroup');\n      } else {\n        const cells$1 = map(cells(row), cell => {\n          const rowspan = getAttrValue(cell, 'rowspan', 1);\n          const colspan = getAttrValue(cell, 'colspan', 1);\n          return detail(cell, rowspan, colspan);\n        });\n        return rowdetail(row, cells$1, getSection(row));\n      }\n    });\n    const getParentSection = group => parent(group).map(parent => {\n      const parentName = name(parent);\n      return isValidSection(parentName) ? parentName : 'tbody';\n    }).getOr('tbody');\n    const fromTable$1 = table => {\n      const rows$1 = rows(table);\n      const columnGroups$1 = columnGroups(table);\n      const elems = [...columnGroups$1, ...rows$1];\n      return fromRowsOrColGroups(elems, getParentSection);\n    };\n\n    const LOCKED_COL_ATTR = 'data-snooker-locked-cols';\n    const getLockedColumnsFromTable = table => getOpt(table, LOCKED_COL_ATTR).bind(lockedColStr => Optional.from(lockedColStr.match(/\\d+/g))).map(lockedCols => mapToObject(lockedCols, always));\n\n    const key = (row, column) => {\n      return row + ',' + column;\n    };\n    const getAt = (warehouse, row, column) => Optional.from(warehouse.access[key(row, column)]);\n    const findItem = (warehouse, item, comparator) => {\n      const filtered = filterItems(warehouse, detail => {\n        return comparator(item, detail.element);\n      });\n      return filtered.length > 0 ? Optional.some(filtered[0]) : Optional.none();\n    };\n    const filterItems = (warehouse, predicate) => {\n      const all = bind(warehouse.all, r => {\n        return r.cells;\n      });\n      return filter(all, predicate);\n    };\n    const generateColumns = rowData => {\n      const columnsGroup = {};\n      let index = 0;\n      each(rowData.cells, column => {\n        const colspan = column.colspan;\n        range(colspan, columnIndex => {\n          const colIndex = index + columnIndex;\n          columnsGroup[colIndex] = columnext(column.element, colspan, colIndex);\n        });\n        index += colspan;\n      });\n      return columnsGroup;\n    };\n    const generate$1 = list => {\n      const access = {};\n      const cells = [];\n      const tableOpt = head(list).map(rowData => rowData.element).bind(table);\n      const lockedColumns = tableOpt.bind(getLockedColumnsFromTable).getOr({});\n      let maxRows = 0;\n      let maxColumns = 0;\n      let rowCount = 0;\n      const {\n        pass: colgroupRows,\n        fail: rows\n      } = partition(list, rowData => rowData.section === 'colgroup');\n      each(rows, rowData => {\n        const currentRow = [];\n        each(rowData.cells, rowCell => {\n          let start = 0;\n          while (access[key(rowCount, start)] !== undefined) {\n            start++;\n          }\n          const isLocked = hasNonNullableKey(lockedColumns, start.toString());\n          const current = extended(rowCell.element, rowCell.rowspan, rowCell.colspan, rowCount, start, isLocked);\n          for (let occupiedColumnPosition = 0; occupiedColumnPosition < rowCell.colspan; occupiedColumnPosition++) {\n            for (let occupiedRowPosition = 0; occupiedRowPosition < rowCell.rowspan; occupiedRowPosition++) {\n              const rowPosition = rowCount + occupiedRowPosition;\n              const columnPosition = start + occupiedColumnPosition;\n              const newpos = key(rowPosition, columnPosition);\n              access[newpos] = current;\n              maxColumns = Math.max(maxColumns, columnPosition + 1);\n            }\n          }\n          currentRow.push(current);\n        });\n        maxRows++;\n        cells.push(rowdetail(rowData.element, currentRow, rowData.section));\n        rowCount++;\n      });\n      const {\n        columns,\n        colgroups\n      } = last(colgroupRows).map(rowData => {\n        const columns = generateColumns(rowData);\n        const colgroup$1 = colgroup(rowData.element, values(columns));\n        return {\n          colgroups: [colgroup$1],\n          columns\n        };\n      }).getOrThunk(() => ({\n        colgroups: [],\n        columns: {}\n      }));\n      const grid$1 = grid(maxRows, maxColumns);\n      return {\n        grid: grid$1,\n        access,\n        all: cells,\n        columns,\n        colgroups\n      };\n    };\n    const fromTable = table => {\n      const list = fromTable$1(table);\n      return generate$1(list);\n    };\n    const justCells = warehouse => bind(warehouse.all, w => w.cells);\n    const justColumns = warehouse => values(warehouse.columns);\n    const hasColumns = warehouse => keys(warehouse.columns).length > 0;\n    const getColumnAt = (warehouse, columnIndex) => Optional.from(warehouse.columns[columnIndex]);\n    const Warehouse = {\n      fromTable,\n      generate: generate$1,\n      getAt,\n      findItem,\n      filterItems,\n      justCells,\n      justColumns,\n      hasColumns,\n      getColumnAt\n    };\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const getTDTHOverallStyle = (dom, elm, name) => {\n      const cells = dom.select('td,th', elm);\n      let firstChildStyle;\n      for (let i = 0; i < cells.length; i++) {\n        const currentStyle = dom.getStyle(cells[i], name);\n        if (isUndefined(firstChildStyle)) {\n          firstChildStyle = currentStyle;\n        }\n        if (firstChildStyle !== currentStyle) {\n          return '';\n        }\n      }\n      return firstChildStyle;\n    };\n    const setAlign = (editor, elm, name) => {\n      global$2.each('left center right'.split(' '), align => {\n        if (align !== name) {\n          editor.formatter.remove('align' + align, {}, elm);\n        }\n      });\n      if (name) {\n        editor.formatter.apply('align' + name, {}, elm);\n      }\n    };\n    const setVAlign = (editor, elm, name) => {\n      global$2.each('top middle bottom'.split(' '), align => {\n        if (align !== name) {\n          editor.formatter.remove('valign' + align, {}, elm);\n        }\n      });\n      if (name) {\n        editor.formatter.apply('valign' + name, {}, elm);\n      }\n    };\n\n    const fireTableModified = (editor, table, data) => {\n      editor.dispatch('TableModified', {\n        ...data,\n        table\n      });\n    };\n\n    const toNumber = (px, fallback) => toFloat(px).getOr(fallback);\n    const getProp = (element, name, fallback) => toNumber(get$1(element, name), fallback);\n    const calcContentBoxSize = (element, size, upper, lower) => {\n      const paddingUpper = getProp(element, \"padding-\".concat(upper), 0);\n      const paddingLower = getProp(element, \"padding-\".concat(lower), 0);\n      const borderUpper = getProp(element, \"border-\".concat(upper, \"-width\"), 0);\n      const borderLower = getProp(element, \"border-\".concat(lower, \"-width\"), 0);\n      return size - paddingUpper - paddingLower - borderUpper - borderLower;\n    };\n    const getCalculatedWidth = (element, boxSizing) => {\n      const dom = element.dom;\n      const width = dom.getBoundingClientRect().width || dom.offsetWidth;\n      return boxSizing === 'border-box' ? width : calcContentBoxSize(element, width, 'left', 'right');\n    };\n    const getInnerWidth = element => getCalculatedWidth(element, 'content-box');\n\n    const getInner = getInnerWidth;\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    const defaultTableToolbar = 'tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol';\n    const defaultCellBorderWidths = range(5, i => {\n      const size = \"\".concat(i + 1, \"px\");\n      return {\n        title: size,\n        value: size\n      };\n    });\n    const defaultCellBorderStyles = map(['Solid', 'Dotted', 'Dashed', 'Double', 'Groove', 'Ridge', 'Inset', 'Outset', 'None', 'Hidden'], type => {\n      return {\n        title: type,\n        value: type.toLowerCase()\n      };\n    });\n    const defaultWidth = '100%';\n    const getPixelForcedWidth = editor => {\n      var _a;\n      const dom = editor.dom;\n      const parentBlock = (_a = dom.getParent(editor.selection.getStart(), dom.isBlock)) !== null && _a !== void 0 ? _a : editor.getBody();\n      return getInner(SugarElement.fromDom(parentBlock)) + 'px';\n    };\n    const determineDefaultStyles = (editor, defaultStyles) => {\n      if (isResponsiveForced(editor) || !shouldStyleWithCss(editor)) {\n        return defaultStyles;\n      } else if (isPixelsForced(editor)) {\n        return {\n          ...defaultStyles,\n          width: getPixelForcedWidth(editor)\n        };\n      } else {\n        return {\n          ...defaultStyles,\n          width: defaultWidth\n        };\n      }\n    };\n    const determineDefaultAttributes = (editor, defaultAttributes) => {\n      if (isResponsiveForced(editor) || shouldStyleWithCss(editor)) {\n        return defaultAttributes;\n      } else if (isPixelsForced(editor)) {\n        return {\n          ...defaultAttributes,\n          width: getPixelForcedWidth(editor)\n        };\n      } else {\n        return {\n          ...defaultAttributes,\n          width: defaultWidth\n        };\n      }\n    };\n    const option = name => editor => editor.options.get(name);\n    const register = editor => {\n      const registerOption = editor.options.register;\n      registerOption('table_border_widths', {\n        processor: 'object[]',\n        default: defaultCellBorderWidths\n      });\n      registerOption('table_border_styles', {\n        processor: 'object[]',\n        default: defaultCellBorderStyles\n      });\n      registerOption('table_cell_advtab', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('table_row_advtab', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('table_advtab', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('table_appearance_options', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('table_grid', {\n        processor: 'boolean',\n        default: !global$1.deviceType.isTouch()\n      });\n      registerOption('table_cell_class_list', {\n        processor: 'object[]',\n        default: []\n      });\n      registerOption('table_row_class_list', {\n        processor: 'object[]',\n        default: []\n      });\n      registerOption('table_class_list', {\n        processor: 'object[]',\n        default: []\n      });\n      registerOption('table_toolbar', {\n        processor: 'string',\n        default: defaultTableToolbar\n      });\n      registerOption('table_background_color_map', {\n        processor: 'object[]',\n        default: []\n      });\n      registerOption('table_border_color_map', {\n        processor: 'object[]',\n        default: []\n      });\n    };\n    const getTableSizingMode = option('table_sizing_mode');\n    const getTableBorderWidths = option('table_border_widths');\n    const getTableBorderStyles = option('table_border_styles');\n    const hasAdvancedCellTab = option('table_cell_advtab');\n    const hasAdvancedRowTab = option('table_row_advtab');\n    const hasAdvancedTableTab = option('table_advtab');\n    const hasAppearanceOptions = option('table_appearance_options');\n    const hasTableGrid = option('table_grid');\n    const shouldStyleWithCss = option('table_style_by_css');\n    const getCellClassList = option('table_cell_class_list');\n    const getRowClassList = option('table_row_class_list');\n    const getTableClassList = option('table_class_list');\n    const getToolbar = option('table_toolbar');\n    const getTableBackgroundColorMap = option('table_background_color_map');\n    const getTableBorderColorMap = option('table_border_color_map');\n    const isPixelsForced = editor => getTableSizingMode(editor) === 'fixed';\n    const isResponsiveForced = editor => getTableSizingMode(editor) === 'responsive';\n    const getDefaultStyles = editor => {\n      const options = editor.options;\n      const defaultStyles = options.get('table_default_styles');\n      return options.isSet('table_default_styles') ? defaultStyles : determineDefaultStyles(editor, defaultStyles);\n    };\n    const getDefaultAttributes = editor => {\n      const options = editor.options;\n      const defaultAttributes = options.get('table_default_attributes');\n      return options.isSet('table_default_attributes') ? defaultAttributes : determineDefaultAttributes(editor, defaultAttributes);\n    };\n\n    const isWithin = (bounds, detail) => {\n      return detail.column >= bounds.startCol && detail.column + detail.colspan - 1 <= bounds.finishCol && detail.row >= bounds.startRow && detail.row + detail.rowspan - 1 <= bounds.finishRow;\n    };\n    const isRectangular = (warehouse, bounds) => {\n      let isRect = true;\n      const detailIsWithin = curry(isWithin, bounds);\n      for (let i = bounds.startRow; i <= bounds.finishRow; i++) {\n        for (let j = bounds.startCol; j <= bounds.finishCol; j++) {\n          isRect = isRect && Warehouse.getAt(warehouse, i, j).exists(detailIsWithin);\n        }\n      }\n      return isRect ? Optional.some(bounds) : Optional.none();\n    };\n\n    const getBounds = (detailA, detailB) => {\n      return bounds(Math.min(detailA.row, detailB.row), Math.min(detailA.column, detailB.column), Math.max(detailA.row + detailA.rowspan - 1, detailB.row + detailB.rowspan - 1), Math.max(detailA.column + detailA.colspan - 1, detailB.column + detailB.colspan - 1));\n    };\n    const getAnyBox = (warehouse, startCell, finishCell) => {\n      const startCoords = Warehouse.findItem(warehouse, startCell, eq);\n      const finishCoords = Warehouse.findItem(warehouse, finishCell, eq);\n      return startCoords.bind(sc => {\n        return finishCoords.map(fc => {\n          return getBounds(sc, fc);\n        });\n      });\n    };\n    const getBox$1 = (warehouse, startCell, finishCell) => {\n      return getAnyBox(warehouse, startCell, finishCell).bind(bounds => {\n        return isRectangular(warehouse, bounds);\n      });\n    };\n\n    const getBox = (table, first, last) => {\n      const warehouse = getWarehouse(table);\n      return getBox$1(warehouse, first, last);\n    };\n    const getWarehouse = Warehouse.fromTable;\n\n    const before = (marker, element) => {\n      const parent$1 = parent(marker);\n      parent$1.each(v => {\n        v.dom.insertBefore(element.dom, marker.dom);\n      });\n    };\n    const after$1 = (marker, element) => {\n      const sibling = nextSibling(marker);\n      sibling.fold(() => {\n        const parent$1 = parent(marker);\n        parent$1.each(v => {\n          append$1(v, element);\n        });\n      }, v => {\n        before(v, element);\n      });\n    };\n    const prepend = (parent, element) => {\n      const firstChild$1 = firstChild(parent);\n      firstChild$1.fold(() => {\n        append$1(parent, element);\n      }, v => {\n        parent.dom.insertBefore(element.dom, v.dom);\n      });\n    };\n    const append$1 = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n    const wrap = (element, wrapper) => {\n      before(element, wrapper);\n      append$1(wrapper, element);\n    };\n\n    const after = (marker, elements) => {\n      each(elements, (x, i) => {\n        const e = i === 0 ? marker : elements[i - 1];\n        after$1(e, x);\n      });\n    };\n    const append = (parent, elements) => {\n      each(elements, x => {\n        append$1(parent, x);\n      });\n    };\n\n    const remove = element => {\n      const dom = element.dom;\n      if (dom.parentNode !== null) {\n        dom.parentNode.removeChild(dom);\n      }\n    };\n    const unwrap = wrapper => {\n      const children = children$3(wrapper);\n      if (children.length > 0) {\n        after(wrapper, children);\n      }\n      remove(wrapper);\n    };\n\n    const NodeValue = (is, name) => {\n      const get = element => {\n        if (!is(element)) {\n          throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n        }\n        return getOption(element).getOr('');\n      };\n      const getOption = element => is(element) ? Optional.from(element.dom.nodeValue) : Optional.none();\n      const set = (element, value) => {\n        if (!is(element)) {\n          throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n        }\n        element.dom.nodeValue = value;\n      };\n      return {\n        get,\n        getOption,\n        set\n      };\n    };\n\n    const api = NodeValue(isText, 'text');\n    const get = element => api.get(element);\n    const set = (element, value) => api.set(element, value);\n\n    var TagBoundaries = ['body', 'p', 'div', 'article', 'aside', 'figcaption', 'figure', 'footer', 'header', 'nav', 'section', 'ol', 'ul', 'li', 'table', 'thead', 'tbody', 'tfoot', 'caption', 'tr', 'td', 'th', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'pre', 'address'];\n\n    var DomUniverse = () => {\n      const clone$1 = element => {\n        return SugarElement.fromDom(element.dom.cloneNode(false));\n      };\n      const document = element => documentOrOwner(element).dom;\n      const isBoundary = element => {\n        if (!isElement(element)) {\n          return false;\n        }\n        if (name(element) === 'body') {\n          return true;\n        }\n        return contains(TagBoundaries, name(element));\n      };\n      const isEmptyTag = element => {\n        if (!isElement(element)) {\n          return false;\n        }\n        return contains(['br', 'img', 'hr', 'input'], name(element));\n      };\n      const isNonEditable = element => isElement(element) && get$2(element, 'contenteditable') === 'false';\n      const comparePosition = (element, other) => {\n        return element.dom.compareDocumentPosition(other.dom);\n      };\n      const copyAttributesTo = (source, destination) => {\n        const as = clone(source);\n        setAll(destination, as);\n      };\n      const isSpecial = element => {\n        const tag = name(element);\n        return contains(['script', 'noscript', 'iframe', 'noframes', 'noembed', 'title', 'style', 'textarea', 'xmp'], tag);\n      };\n      const getLanguage = element => isElement(element) ? getOpt(element, 'lang') : Optional.none();\n      return {\n        up: constant({\n          selector: ancestor,\n          closest: closest$1,\n          predicate: ancestor$1,\n          all: parents\n        }),\n        down: constant({\n          selector: descendants,\n          predicate: descendants$1\n        }),\n        styles: constant({\n          get: get$1,\n          getRaw: getRaw,\n          set: set$1,\n          remove: remove$1\n        }),\n        attrs: constant({\n          get: get$2,\n          set: set$2,\n          remove: remove$2,\n          copyTo: copyAttributesTo\n        }),\n        insert: constant({\n          before: before,\n          after: after$1,\n          afterAll: after,\n          append: append$1,\n          appendAll: append,\n          prepend: prepend,\n          wrap: wrap\n        }),\n        remove: constant({\n          unwrap: unwrap,\n          remove: remove\n        }),\n        create: constant({\n          nu: SugarElement.fromTag,\n          clone: clone$1,\n          text: SugarElement.fromText\n        }),\n        query: constant({\n          comparePosition,\n          prevSibling: prevSibling,\n          nextSibling: nextSibling\n        }),\n        property: constant({\n          children: children$3,\n          name: name,\n          parent: parent,\n          document,\n          isText: isText,\n          isComment: isComment,\n          isElement: isElement,\n          isSpecial,\n          getLanguage,\n          getText: get,\n          setText: set,\n          isBoundary,\n          isEmptyTag,\n          isNonEditable\n        }),\n        eq: eq,\n        is: is$1\n      };\n    };\n\n    const all = (universe, look, elements, f) => {\n      const head = elements[0];\n      const tail = elements.slice(1);\n      return f(universe, look, head, tail);\n    };\n    const oneAll = (universe, look, elements) => {\n      return elements.length > 0 ? all(universe, look, elements, unsafeOne) : Optional.none();\n    };\n    const unsafeOne = (universe, look, head, tail) => {\n      const start = look(universe, head);\n      return foldr(tail, (b, a) => {\n        const current = look(universe, a);\n        return commonElement(universe, b, current);\n      }, start);\n    };\n    const commonElement = (universe, start, end) => {\n      return start.bind(s => {\n        return end.filter(curry(universe.eq, s));\n      });\n    };\n\n    const sharedOne$1 = oneAll;\n\n    const universe = DomUniverse();\n    const sharedOne = (look, elements) => {\n      return sharedOne$1(universe, (_universe, element) => {\n        return look(element);\n      }, elements);\n    };\n\n    const lookupTable = container => {\n      return ancestor(container, 'table');\n    };\n    const retrieve$1 = (container, selector) => {\n      const sels = descendants(container, selector);\n      return sels.length > 0 ? Optional.some(sels) : Optional.none();\n    };\n    const getEdges = (container, firstSelectedSelector, lastSelectedSelector) => {\n      return descendant(container, firstSelectedSelector).bind(first => {\n        return descendant(container, lastSelectedSelector).bind(last => {\n          return sharedOne(lookupTable, [first, last]).map(table => {\n            return {\n              first,\n              last,\n              table\n            };\n          });\n        });\n      });\n    };\n\n    const retrieve = (container, selector) => {\n      return retrieve$1(container, selector);\n    };\n    const retrieveBox = (container, firstSelectedSelector, lastSelectedSelector) => {\n      return getEdges(container, firstSelectedSelector, lastSelectedSelector).bind(edges => {\n        const isRoot = ancestor => {\n          return eq(container, ancestor);\n        };\n        const sectionSelector = 'thead,tfoot,tbody,table';\n        const firstAncestor = ancestor(edges.first, sectionSelector, isRoot);\n        const lastAncestor = ancestor(edges.last, sectionSelector, isRoot);\n        return firstAncestor.bind(fA => {\n          return lastAncestor.bind(lA => {\n            return eq(fA, lA) ? getBox(edges.table, edges.first, edges.last) : Optional.none();\n          });\n        });\n      });\n    };\n\n    const fromDom = nodes => map(nodes, SugarElement.fromDom);\n\n    const strSelected = 'data-mce-selected';\n    const strSelectedSelector = 'td[' + strSelected + '],th[' + strSelected + ']';\n    const strFirstSelected = 'data-mce-first-selected';\n    const strFirstSelectedSelector = 'td[' + strFirstSelected + '],th[' + strFirstSelected + ']';\n    const strLastSelected = 'data-mce-last-selected';\n    const strLastSelectedSelector = 'td[' + strLastSelected + '],th[' + strLastSelected + ']';\n    const ephemera = {\n      selected: strSelected,\n      selectedSelector: strSelectedSelector,\n      firstSelected: strFirstSelected,\n      firstSelectedSelector: strFirstSelectedSelector,\n      lastSelected: strLastSelected,\n      lastSelectedSelector: strLastSelectedSelector\n    };\n\n    const getSelectionCellFallback = element => table(element).bind(table => retrieve(table, ephemera.firstSelectedSelector)).fold(constant(element), cells => cells[0]);\n    const getSelectionFromSelector = selector => (initCell, isRoot) => {\n      const cellName = name(initCell);\n      const cell = cellName === 'col' || cellName === 'colgroup' ? getSelectionCellFallback(initCell) : initCell;\n      return closest$1(cell, selector, isRoot);\n    };\n    const getSelectionCellOrCaption = getSelectionFromSelector('th,td,caption');\n    const getSelectionCell = getSelectionFromSelector('th,td');\n    const getCellsFromSelection = editor => fromDom(editor.model.table.getSelectedCells());\n    const getRowsFromSelection = (selected, selector) => {\n      const cellOpt = getSelectionCell(selected);\n      const rowsOpt = cellOpt.bind(cell => table(cell)).map(table => rows(table));\n      return lift2(cellOpt, rowsOpt, (cell, rows) => filter(rows, row => exists(fromDom(row.dom.cells), rowCell => get$2(rowCell, selector) === '1' || eq(rowCell, cell)))).getOr([]);\n    };\n\n    const verticalAlignValues = [{\n      text: 'None',\n      value: ''\n    }, {\n      text: 'Top',\n      value: 'top'\n    }, {\n      text: 'Middle',\n      value: 'middle'\n    }, {\n      text: 'Bottom',\n      value: 'bottom'\n    }];\n\n    const hexColour = value => ({\n      value: normalizeHex(value)\n    });\n    const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n    const longformRegex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\n    const isHexString = hex => shorthandRegex.test(hex) || longformRegex.test(hex);\n    const normalizeHex = hex => removeLeading(hex, '#').toUpperCase();\n    const fromString$1 = hex => isHexString(hex) ? Optional.some({\n      value: normalizeHex(hex)\n    }) : Optional.none();\n    const toHex = component => {\n      const hex = component.toString(16);\n      return (hex.length === 1 ? '0' + hex : hex).toUpperCase();\n    };\n    const fromRgba = rgbaColour => {\n      const value = toHex(rgbaColour.red) + toHex(rgbaColour.green) + toHex(rgbaColour.blue);\n      return hexColour(value);\n    };\n\n    const rgbRegex = /^\\s*rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)\\s*$/i;\n    const rgbaRegex = /^\\s*rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?(?:\\.\\d+)?)\\s*\\)\\s*$/i;\n    const rgbaColour = (red, green, blue, alpha) => ({\n      red,\n      green,\n      blue,\n      alpha\n    });\n    const fromStringValues = (red, green, blue, alpha) => {\n      const r = parseInt(red, 10);\n      const g = parseInt(green, 10);\n      const b = parseInt(blue, 10);\n      const a = parseFloat(alpha);\n      return rgbaColour(r, g, b, a);\n    };\n    const fromString = rgbaString => {\n      if (rgbaString === 'transparent') {\n        return Optional.some(rgbaColour(0, 0, 0, 0));\n      }\n      const rgbMatch = rgbRegex.exec(rgbaString);\n      if (rgbMatch !== null) {\n        return Optional.some(fromStringValues(rgbMatch[1], rgbMatch[2], rgbMatch[3], '1'));\n      }\n      const rgbaMatch = rgbaRegex.exec(rgbaString);\n      if (rgbaMatch !== null) {\n        return Optional.some(fromStringValues(rgbaMatch[1], rgbaMatch[2], rgbaMatch[3], rgbaMatch[4]));\n      }\n      return Optional.none();\n    };\n\n    const anyToHex = color => fromString$1(color).orThunk(() => fromString(color).map(fromRgba)).getOrThunk(() => {\n      const canvas = document.createElement('canvas');\n      canvas.height = 1;\n      canvas.width = 1;\n      const canvasContext = canvas.getContext('2d');\n      canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n      canvasContext.fillStyle = '#FFFFFF';\n      canvasContext.fillStyle = color;\n      canvasContext.fillRect(0, 0, 1, 1);\n      const rgba = canvasContext.getImageData(0, 0, 1, 1).data;\n      const r = rgba[0];\n      const g = rgba[1];\n      const b = rgba[2];\n      const a = rgba[3];\n      return fromRgba(rgbaColour(r, g, b, a));\n    });\n    const rgbaToHexString = color => fromString(color).map(fromRgba).map(h => '#' + h.value).getOr(color);\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    const singleton = doRevoke => {\n      const subject = Cell(Optional.none());\n      const revoke = () => subject.get().each(doRevoke);\n      const clear = () => {\n        revoke();\n        subject.set(Optional.none());\n      };\n      const isSet = () => subject.get().isSome();\n      const get = () => subject.get();\n      const set = s => {\n        revoke();\n        subject.set(Optional.some(s));\n      };\n      return {\n        clear,\n        isSet,\n        get,\n        set\n      };\n    };\n    const unbindable = () => singleton(s => s.unbind());\n\n    const onSetupToggle = (editor, formatName, formatValue) => {\n      return api => {\n        const boundCallback = unbindable();\n        const isNone = isEmpty(formatValue);\n        const init = () => {\n          const selectedCells = getCellsFromSelection(editor);\n          const checkNode = cell => editor.formatter.match(formatName, {\n            value: formatValue\n          }, cell.dom, isNone);\n          if (isNone) {\n            api.setActive(!exists(selectedCells, checkNode));\n            boundCallback.set(editor.formatter.formatChanged(formatName, match => api.setActive(!match), true));\n          } else {\n            api.setActive(forall(selectedCells, checkNode));\n            boundCallback.set(editor.formatter.formatChanged(formatName, api.setActive, false, {\n              value: formatValue\n            }));\n          }\n        };\n        editor.initialized ? init() : editor.on('init', init);\n        return boundCallback.clear;\n      };\n    };\n    const isListGroup = item => hasNonNullableKey(item, 'menu');\n    const buildListItems = items => map(items, item => {\n      const text = item.text || item.title || '';\n      if (isListGroup(item)) {\n        return {\n          text,\n          items: buildListItems(item.menu)\n        };\n      } else {\n        return {\n          text,\n          value: item.value\n        };\n      }\n    });\n    const buildMenuItems = (editor, items, format, onAction) => map(items, item => {\n      const text = item.text || item.title;\n      if (isListGroup(item)) {\n        return {\n          type: 'nestedmenuitem',\n          text,\n          getSubmenuItems: () => buildMenuItems(editor, item.menu, format, onAction)\n        };\n      } else {\n        return {\n          text,\n          type: 'togglemenuitem',\n          onAction: () => onAction(item.value),\n          onSetup: onSetupToggle(editor, format, item.value)\n        };\n      }\n    });\n    const applyTableCellStyle = (editor, style) => value => {\n      editor.execCommand('mceTableApplyCellStyle', false, {\n        [style]: value\n      });\n    };\n    const filterNoneItem = list => bind(list, item => {\n      if (isListGroup(item)) {\n        return [{\n          ...item,\n          menu: filterNoneItem(item.menu)\n        }];\n      } else {\n        return isNotEmpty(item.value) ? [item] : [];\n      }\n    });\n    const generateMenuItemsCallback = (editor, items, format, onAction) => callback => callback(buildMenuItems(editor, items, format, onAction));\n    const buildColorMenu = (editor, colorList, style) => {\n      const colorMap = map(colorList, entry => ({\n        text: entry.title,\n        value: '#' + anyToHex(entry.value).value,\n        type: 'choiceitem'\n      }));\n      return [{\n        type: 'fancymenuitem',\n        fancytype: 'colorswatch',\n        initData: {\n          colors: colorMap.length > 0 ? colorMap : undefined,\n          allowCustomColors: false\n        },\n        onAction: data => {\n          const value = data.value === 'remove' ? '' : data.value;\n          editor.execCommand('mceTableApplyCellStyle', false, {\n            [style]: value\n          });\n        }\n      }];\n    };\n    const changeRowHeader = editor => () => {\n      const currentType = editor.queryCommandValue('mceTableRowType');\n      const newType = currentType === 'header' ? 'body' : 'header';\n      editor.execCommand('mceTableRowType', false, {\n        type: newType\n      });\n    };\n    const changeColumnHeader = editor => () => {\n      const currentType = editor.queryCommandValue('mceTableColType');\n      const newType = currentType === 'th' ? 'td' : 'th';\n      editor.execCommand('mceTableColType', false, {\n        type: newType\n      });\n    };\n\n    const getClassList$1 = editor => {\n      const classes = buildListItems(getCellClassList(editor));\n      if (classes.length > 0) {\n        return Optional.some({\n          name: 'class',\n          type: 'listbox',\n          label: 'Class',\n          items: classes\n        });\n      }\n      return Optional.none();\n    };\n    const children = [{\n      name: 'width',\n      type: 'input',\n      label: 'Width'\n    }, {\n      name: 'height',\n      type: 'input',\n      label: 'Height'\n    }, {\n      name: 'celltype',\n      type: 'listbox',\n      label: 'Cell type',\n      items: [{\n        text: 'Cell',\n        value: 'td'\n      }, {\n        text: 'Header cell',\n        value: 'th'\n      }]\n    }, {\n      name: 'scope',\n      type: 'listbox',\n      label: 'Scope',\n      items: [{\n        text: 'None',\n        value: ''\n      }, {\n        text: 'Row',\n        value: 'row'\n      }, {\n        text: 'Column',\n        value: 'col'\n      }, {\n        text: 'Row group',\n        value: 'rowgroup'\n      }, {\n        text: 'Column group',\n        value: 'colgroup'\n      }]\n    }, {\n      name: 'halign',\n      type: 'listbox',\n      label: 'Horizontal align',\n      items: [{\n        text: 'None',\n        value: ''\n      }, {\n        text: 'Left',\n        value: 'left'\n      }, {\n        text: 'Center',\n        value: 'center'\n      }, {\n        text: 'Right',\n        value: 'right'\n      }]\n    }, {\n      name: 'valign',\n      type: 'listbox',\n      label: 'Vertical align',\n      items: verticalAlignValues\n    }];\n    const getItems$2 = editor => children.concat(getClassList$1(editor).toArray());\n\n    const getAdvancedTab = (editor, dialogName) => {\n      const emptyBorderStyle = [{\n        text: 'Select...',\n        value: ''\n      }];\n      const advTabItems = [{\n        name: 'borderstyle',\n        type: 'listbox',\n        label: 'Border style',\n        items: emptyBorderStyle.concat(buildListItems(getTableBorderStyles(editor)))\n      }, {\n        name: 'bordercolor',\n        type: 'colorinput',\n        label: 'Border color'\n      }, {\n        name: 'backgroundcolor',\n        type: 'colorinput',\n        label: 'Background color'\n      }];\n      const borderWidth = {\n        name: 'borderwidth',\n        type: 'input',\n        label: 'Border width'\n      };\n      const items = dialogName === 'cell' ? [borderWidth].concat(advTabItems) : advTabItems;\n      return {\n        title: 'Advanced',\n        name: 'advanced',\n        items\n      };\n    };\n\n    const normal = (editor, element) => {\n      const dom = editor.dom;\n      const setAttrib = (attr, value) => {\n        dom.setAttrib(element, attr, value);\n      };\n      const setStyle = (prop, value) => {\n        dom.setStyle(element, prop, value);\n      };\n      const setFormat = (formatName, value) => {\n        if (value === '') {\n          editor.formatter.remove(formatName, {\n            value: null\n          }, element, true);\n        } else {\n          editor.formatter.apply(formatName, {\n            value\n          }, element);\n        }\n      };\n      return {\n        setAttrib,\n        setStyle,\n        setFormat\n      };\n    };\n    const DomModifier = {\n      normal\n    };\n\n    const isHeaderCell = isTag('th');\n    const getRowHeaderType = (isHeaderRow, isHeaderCells) => {\n      if (isHeaderRow && isHeaderCells) {\n        return 'sectionCells';\n      } else if (isHeaderRow) {\n        return 'section';\n      } else {\n        return 'cells';\n      }\n    };\n    const getRowType$1 = row => {\n      const isHeaderRow = row.section === 'thead';\n      const isHeaderCells = is(findCommonCellType(row.cells), 'th');\n      if (row.section === 'tfoot') {\n        return {\n          type: 'footer'\n        };\n      } else if (isHeaderRow || isHeaderCells) {\n        return {\n          type: 'header',\n          subType: getRowHeaderType(isHeaderRow, isHeaderCells)\n        };\n      } else {\n        return {\n          type: 'body'\n        };\n      }\n    };\n    const findCommonCellType = cells => {\n      const headerCells = filter(cells, cell => isHeaderCell(cell.element));\n      if (headerCells.length === 0) {\n        return Optional.some('td');\n      } else if (headerCells.length === cells.length) {\n        return Optional.some('th');\n      } else {\n        return Optional.none();\n      }\n    };\n    const findCommonRowType = rows => {\n      const rowTypes = map(rows, row => getRowType$1(row).type);\n      const hasHeader = contains(rowTypes, 'header');\n      const hasFooter = contains(rowTypes, 'footer');\n      if (!hasHeader && !hasFooter) {\n        return Optional.some('body');\n      } else {\n        const hasBody = contains(rowTypes, 'body');\n        if (hasHeader && !hasBody && !hasFooter) {\n          return Optional.some('header');\n        } else if (!hasHeader && !hasBody && hasFooter) {\n          return Optional.some('footer');\n        } else {\n          return Optional.none();\n        }\n      }\n    };\n\n    const cached = f => {\n      let called = false;\n      let r;\n      return (...args) => {\n        if (!called) {\n          called = true;\n          r = f.apply(null, args);\n        }\n        return r;\n      };\n    };\n\n    const findInWarehouse = (warehouse, element) => findMap(warehouse.all, r => find(r.cells, e => eq(element, e.element)));\n    const extractCells = (warehouse, target, predicate) => {\n      const details = map(target.selection, cell$1 => {\n        return cell(cell$1).bind(lc => findInWarehouse(warehouse, lc)).filter(predicate);\n      });\n      const cells = cat(details);\n      return someIf(cells.length > 0, cells);\n    };\n    const onMergable = (_warehouse, target) => target.mergable;\n    const onUnmergable = (_warehouse, target) => target.unmergable;\n    const onCells = (warehouse, target) => extractCells(warehouse, target, always);\n    const isUnlockedTableCell = (warehouse, cell) => findInWarehouse(warehouse, cell).exists(detail => !detail.isLocked);\n    const allUnlocked = (warehouse, cells) => forall(cells, cell => isUnlockedTableCell(warehouse, cell));\n    const onUnlockedMergable = (warehouse, target) => onMergable(warehouse, target).filter(mergeable => allUnlocked(warehouse, mergeable.cells));\n    const onUnlockedUnmergable = (warehouse, target) => onUnmergable(warehouse, target).filter(cells => allUnlocked(warehouse, cells));\n\n    const generate = cases => {\n      if (!isArray(cases)) {\n        throw new Error('cases must be an array');\n      }\n      if (cases.length === 0) {\n        throw new Error('there must be at least one case');\n      }\n      const constructors = [];\n      const adt = {};\n      each(cases, (acase, count) => {\n        const keys$1 = keys(acase);\n        if (keys$1.length !== 1) {\n          throw new Error('one and only one name per case');\n        }\n        const key = keys$1[0];\n        const value = acase[key];\n        if (adt[key] !== undefined) {\n          throw new Error('duplicate key detected:' + key);\n        } else if (key === 'cata') {\n          throw new Error('cannot have a case named cata (sorry)');\n        } else if (!isArray(value)) {\n          throw new Error('case arguments must be an array');\n        }\n        constructors.push(key);\n        adt[key] = (...args) => {\n          const argLength = args.length;\n          if (argLength !== value.length) {\n            throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n          }\n          const match = branches => {\n            const branchKeys = keys(branches);\n            if (constructors.length !== branchKeys.length) {\n              throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n            }\n            const allReqd = forall(constructors, reqKey => {\n              return contains(branchKeys, reqKey);\n            });\n            if (!allReqd) {\n              throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n            }\n            return branches[key].apply(null, args);\n          };\n          return {\n            fold: (...foldArgs) => {\n              if (foldArgs.length !== cases.length) {\n                throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length);\n              }\n              const target = foldArgs[count];\n              return target.apply(null, args);\n            },\n            match,\n            log: label => {\n              console.log(label, {\n                constructors,\n                constructor: key,\n                params: args\n              });\n            }\n          };\n        };\n      });\n      return adt;\n    };\n    const Adt = {\n      generate\n    };\n\n    const adt = Adt.generate([{\n      none: []\n    }, {\n      only: ['index']\n    }, {\n      left: ['index', 'next']\n    }, {\n      middle: ['prev', 'index', 'next']\n    }, {\n      right: ['prev', 'index']\n    }]);\n    ({\n      ...adt\n    });\n\n    const opGetRowsType = (table, target) => {\n      const house = Warehouse.fromTable(table);\n      const details = onCells(house, target);\n      return details.bind(selectedCells => {\n        const lastSelectedCell = selectedCells[selectedCells.length - 1];\n        const minRowRange = selectedCells[0].row;\n        const maxRowRange = lastSelectedCell.row + lastSelectedCell.rowspan;\n        const selectedRows = house.all.slice(minRowRange, maxRowRange);\n        return findCommonRowType(selectedRows);\n      }).getOr('');\n    };\n    const getRowsType = opGetRowsType;\n\n    const rgbToHex = value => startsWith(value, 'rgb') ? rgbaToHexString(value) : value;\n    const extractAdvancedStyles = elm => {\n      const element = SugarElement.fromDom(elm);\n      return {\n        borderwidth: getRaw(element, 'border-width').getOr(''),\n        borderstyle: getRaw(element, 'border-style').getOr(''),\n        bordercolor: getRaw(element, 'border-color').map(rgbToHex).getOr(''),\n        backgroundcolor: getRaw(element, 'background-color').map(rgbToHex).getOr('')\n      };\n    };\n    const getSharedValues = data => {\n      const baseData = data[0];\n      const comparisonData = data.slice(1);\n      each(comparisonData, items => {\n        each(keys(baseData), key => {\n          each$1(items, (itemValue, itemKey) => {\n            const comparisonValue = baseData[key];\n            if (comparisonValue !== '' && key === itemKey) {\n              if (comparisonValue !== itemValue) {\n                baseData[key] = '';\n              }\n            }\n          });\n        });\n      });\n      return baseData;\n    };\n    const getAlignment = (formats, formatName, editor, elm) => find(formats, name => !isUndefined(editor.formatter.matchNode(elm, formatName + name))).getOr('');\n    const getHAlignment = curry(getAlignment, ['left', 'center', 'right'], 'align');\n    const getVAlignment = curry(getAlignment, ['top', 'middle', 'bottom'], 'valign');\n    const extractDataFromSettings = (editor, hasAdvTableTab) => {\n      const style = getDefaultStyles(editor);\n      const attrs = getDefaultAttributes(editor);\n      const extractAdvancedStyleData = () => ({\n        borderstyle: get$4(style, 'border-style').getOr(''),\n        bordercolor: rgbToHex(get$4(style, 'border-color').getOr('')),\n        backgroundcolor: rgbToHex(get$4(style, 'background-color').getOr(''))\n      });\n      const defaultData = {\n        height: '',\n        width: '100%',\n        cellspacing: '',\n        cellpadding: '',\n        caption: false,\n        class: '',\n        align: '',\n        border: ''\n      };\n      const getBorder = () => {\n        const borderWidth = style['border-width'];\n        if (shouldStyleWithCss(editor) && borderWidth) {\n          return {\n            border: borderWidth\n          };\n        }\n        return get$4(attrs, 'border').fold(() => ({}), border => ({\n          border\n        }));\n      };\n      const advStyle = hasAdvTableTab ? extractAdvancedStyleData() : {};\n      const getCellPaddingCellSpacing = () => {\n        const spacing = get$4(style, 'border-spacing').or(get$4(attrs, 'cellspacing')).fold(() => ({}), cellspacing => ({\n          cellspacing\n        }));\n        const padding = get$4(style, 'border-padding').or(get$4(attrs, 'cellpadding')).fold(() => ({}), cellpadding => ({\n          cellpadding\n        }));\n        return {\n          ...spacing,\n          ...padding\n        };\n      };\n      const data = {\n        ...defaultData,\n        ...style,\n        ...attrs,\n        ...advStyle,\n        ...getBorder(),\n        ...getCellPaddingCellSpacing()\n      };\n      return data;\n    };\n    const getRowType = elm => table(SugarElement.fromDom(elm)).map(table => {\n      const target = {\n        selection: fromDom(elm.cells)\n      };\n      return getRowsType(table, target);\n    }).getOr('');\n    const extractDataFromTableElement = (editor, elm, hasAdvTableTab) => {\n      const getBorder = (dom, elm) => {\n        const optBorderWidth = getRaw(SugarElement.fromDom(elm), 'border-width');\n        if (shouldStyleWithCss(editor) && optBorderWidth.isSome()) {\n          return optBorderWidth.getOr('');\n        }\n        return dom.getAttrib(elm, 'border') || getTDTHOverallStyle(editor.dom, elm, 'border-width') || getTDTHOverallStyle(editor.dom, elm, 'border') || '';\n      };\n      const dom = editor.dom;\n      const cellspacing = shouldStyleWithCss(editor) ? dom.getStyle(elm, 'border-spacing') || dom.getAttrib(elm, 'cellspacing') : dom.getAttrib(elm, 'cellspacing') || dom.getStyle(elm, 'border-spacing');\n      const cellpadding = shouldStyleWithCss(editor) ? getTDTHOverallStyle(dom, elm, 'padding') || dom.getAttrib(elm, 'cellpadding') : dom.getAttrib(elm, 'cellpadding') || getTDTHOverallStyle(dom, elm, 'padding');\n      return {\n        width: dom.getStyle(elm, 'width') || dom.getAttrib(elm, 'width'),\n        height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'),\n        cellspacing: cellspacing !== null && cellspacing !== void 0 ? cellspacing : '',\n        cellpadding: cellpadding !== null && cellpadding !== void 0 ? cellpadding : '',\n        border: getBorder(dom, elm),\n        caption: !!dom.select('caption', elm)[0],\n        class: dom.getAttrib(elm, 'class', ''),\n        align: getHAlignment(editor, elm),\n        ...(hasAdvTableTab ? extractAdvancedStyles(elm) : {})\n      };\n    };\n    const extractDataFromRowElement = (editor, elm, hasAdvancedRowTab) => {\n      const dom = editor.dom;\n      return {\n        height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'),\n        class: dom.getAttrib(elm, 'class', ''),\n        type: getRowType(elm),\n        align: getHAlignment(editor, elm),\n        ...(hasAdvancedRowTab ? extractAdvancedStyles(elm) : {})\n      };\n    };\n    const extractDataFromCellElement = (editor, cell, hasAdvancedCellTab, column) => {\n      const dom = editor.dom;\n      const colElm = column.getOr(cell);\n      const getStyle = (element, style) => dom.getStyle(element, style) || dom.getAttrib(element, style);\n      return {\n        width: getStyle(colElm, 'width'),\n        height: getStyle(cell, 'height'),\n        scope: dom.getAttrib(cell, 'scope'),\n        celltype: getNodeName(cell),\n        class: dom.getAttrib(cell, 'class', ''),\n        halign: getHAlignment(editor, cell),\n        valign: getVAlignment(editor, cell),\n        ...(hasAdvancedCellTab ? extractAdvancedStyles(cell) : {})\n      };\n    };\n\n    const getSelectedCells = (table, cells) => {\n      const warehouse = Warehouse.fromTable(table);\n      const allCells = Warehouse.justCells(warehouse);\n      const filtered = filter(allCells, cellA => exists(cells, cellB => eq(cellA.element, cellB)));\n      return map(filtered, cell => ({\n        element: cell.element.dom,\n        column: Warehouse.getColumnAt(warehouse, cell.column).map(col => col.element.dom)\n      }));\n    };\n    const updateSimpleProps$1 = (modifier, colModifier, data, shouldUpdate) => {\n      if (shouldUpdate('scope')) {\n        modifier.setAttrib('scope', data.scope);\n      }\n      if (shouldUpdate('class')) {\n        modifier.setAttrib('class', data.class);\n      }\n      if (shouldUpdate('height')) {\n        modifier.setStyle('height', addPxSuffix(data.height));\n      }\n      if (shouldUpdate('width')) {\n        colModifier.setStyle('width', addPxSuffix(data.width));\n      }\n    };\n    const updateAdvancedProps$1 = (modifier, data, shouldUpdate) => {\n      if (shouldUpdate('backgroundcolor')) {\n        modifier.setFormat('tablecellbackgroundcolor', data.backgroundcolor);\n      }\n      if (shouldUpdate('bordercolor')) {\n        modifier.setFormat('tablecellbordercolor', data.bordercolor);\n      }\n      if (shouldUpdate('borderstyle')) {\n        modifier.setFormat('tablecellborderstyle', data.borderstyle);\n      }\n      if (shouldUpdate('borderwidth')) {\n        modifier.setFormat('tablecellborderwidth', addPxSuffix(data.borderwidth));\n      }\n    };\n    const applyStyleData$1 = (editor, cells, data, wasChanged) => {\n      const isSingleCell = cells.length === 1;\n      each(cells, item => {\n        const cellElm = item.element;\n        const shouldOverrideCurrentValue = isSingleCell ? always : wasChanged;\n        const modifier = DomModifier.normal(editor, cellElm);\n        const colModifier = item.column.map(col => DomModifier.normal(editor, col)).getOr(modifier);\n        updateSimpleProps$1(modifier, colModifier, data, shouldOverrideCurrentValue);\n        if (hasAdvancedCellTab(editor)) {\n          updateAdvancedProps$1(modifier, data, shouldOverrideCurrentValue);\n        }\n        if (wasChanged('halign')) {\n          setAlign(editor, cellElm, data.halign);\n        }\n        if (wasChanged('valign')) {\n          setVAlign(editor, cellElm, data.valign);\n        }\n      });\n    };\n    const applyStructureData$1 = (editor, data) => {\n      editor.execCommand('mceTableCellType', false, {\n        type: data.celltype,\n        no_events: true\n      });\n    };\n    const applyCellData = (editor, cells, oldData, data) => {\n      const modifiedData = filter$1(data, (value, key) => oldData[key] !== value);\n      if (size(modifiedData) > 0 && cells.length >= 1) {\n        table(cells[0]).each(table => {\n          const selectedCells = getSelectedCells(table, cells);\n          const styleModified = size(filter$1(modifiedData, (_value, key) => key !== 'scope' && key !== 'celltype')) > 0;\n          const structureModified = has(modifiedData, 'celltype');\n          if (styleModified || has(modifiedData, 'scope')) {\n            applyStyleData$1(editor, selectedCells, data, curry(has, modifiedData));\n          }\n          if (structureModified) {\n            applyStructureData$1(editor, data);\n          }\n          fireTableModified(editor, table.dom, {\n            structure: structureModified,\n            style: styleModified\n          });\n        });\n      }\n    };\n    const onSubmitCellForm = (editor, cells, oldData, api) => {\n      const data = api.getData();\n      api.close();\n      editor.undoManager.transact(() => {\n        applyCellData(editor, cells, oldData, data);\n        editor.focus();\n      });\n    };\n    const getData$1 = (editor, cells) => {\n      const cellsData = table(cells[0]).map(table => map(getSelectedCells(table, cells), item => extractDataFromCellElement(editor, item.element, hasAdvancedCellTab(editor), item.column)));\n      return getSharedValues(cellsData.getOrDie());\n    };\n    const open$2 = editor => {\n      const cells = getCellsFromSelection(editor);\n      if (cells.length === 0) {\n        return;\n      }\n      const data = getData$1(editor, cells);\n      const dialogTabPanel = {\n        type: 'tabpanel',\n        tabs: [{\n          title: 'General',\n          name: 'general',\n          items: getItems$2(editor)\n        }, getAdvancedTab(editor, 'cell')]\n      };\n      const dialogPanel = {\n        type: 'panel',\n        items: [{\n          type: 'grid',\n          columns: 2,\n          items: getItems$2(editor)\n        }]\n      };\n      editor.windowManager.open({\n        title: 'Cell Properties',\n        size: 'normal',\n        body: hasAdvancedCellTab(editor) ? dialogTabPanel : dialogPanel,\n        buttons: [{\n          type: 'cancel',\n          name: 'cancel',\n          text: 'Cancel'\n        }, {\n          type: 'submit',\n          name: 'save',\n          text: 'Save',\n          primary: true\n        }],\n        initialData: data,\n        onSubmit: curry(onSubmitCellForm, editor, cells, data)\n      });\n    };\n\n    const getClassList = editor => {\n      const classes = buildListItems(getRowClassList(editor));\n      if (classes.length > 0) {\n        return Optional.some({\n          name: 'class',\n          type: 'listbox',\n          label: 'Class',\n          items: classes\n        });\n      }\n      return Optional.none();\n    };\n    const formChildren = [{\n      type: 'listbox',\n      name: 'type',\n      label: 'Row type',\n      items: [{\n        text: 'Header',\n        value: 'header'\n      }, {\n        text: 'Body',\n        value: 'body'\n      }, {\n        text: 'Footer',\n        value: 'footer'\n      }]\n    }, {\n      type: 'listbox',\n      name: 'align',\n      label: 'Alignment',\n      items: [{\n        text: 'None',\n        value: ''\n      }, {\n        text: 'Left',\n        value: 'left'\n      }, {\n        text: 'Center',\n        value: 'center'\n      }, {\n        text: 'Right',\n        value: 'right'\n      }]\n    }, {\n      label: 'Height',\n      name: 'height',\n      type: 'input'\n    }];\n    const getItems$1 = editor => formChildren.concat(getClassList(editor).toArray());\n\n    const updateSimpleProps = (modifier, data, shouldUpdate) => {\n      if (shouldUpdate('class')) {\n        modifier.setAttrib('class', data.class);\n      }\n      if (shouldUpdate('height')) {\n        modifier.setStyle('height', addPxSuffix(data.height));\n      }\n    };\n    const updateAdvancedProps = (modifier, data, shouldUpdate) => {\n      if (shouldUpdate('backgroundcolor')) {\n        modifier.setStyle('background-color', data.backgroundcolor);\n      }\n      if (shouldUpdate('bordercolor')) {\n        modifier.setStyle('border-color', data.bordercolor);\n      }\n      if (shouldUpdate('borderstyle')) {\n        modifier.setStyle('border-style', data.borderstyle);\n      }\n    };\n    const applyStyleData = (editor, rows, data, wasChanged) => {\n      const isSingleRow = rows.length === 1;\n      const shouldOverrideCurrentValue = isSingleRow ? always : wasChanged;\n      each(rows, rowElm => {\n        const modifier = DomModifier.normal(editor, rowElm);\n        updateSimpleProps(modifier, data, shouldOverrideCurrentValue);\n        if (hasAdvancedRowTab(editor)) {\n          updateAdvancedProps(modifier, data, shouldOverrideCurrentValue);\n        }\n        if (wasChanged('align')) {\n          setAlign(editor, rowElm, data.align);\n        }\n      });\n    };\n    const applyStructureData = (editor, data) => {\n      editor.execCommand('mceTableRowType', false, {\n        type: data.type,\n        no_events: true\n      });\n    };\n    const applyRowData = (editor, rows, oldData, data) => {\n      const modifiedData = filter$1(data, (value, key) => oldData[key] !== value);\n      if (size(modifiedData) > 0) {\n        const typeModified = has(modifiedData, 'type');\n        const styleModified = typeModified ? size(modifiedData) > 1 : true;\n        if (styleModified) {\n          applyStyleData(editor, rows, data, curry(has, modifiedData));\n        }\n        if (typeModified) {\n          applyStructureData(editor, data);\n        }\n        table(SugarElement.fromDom(rows[0])).each(table => fireTableModified(editor, table.dom, {\n          structure: typeModified,\n          style: styleModified\n        }));\n      }\n    };\n    const onSubmitRowForm = (editor, rows, oldData, api) => {\n      const data = api.getData();\n      api.close();\n      editor.undoManager.transact(() => {\n        applyRowData(editor, rows, oldData, data);\n        editor.focus();\n      });\n    };\n    const open$1 = editor => {\n      const rows = getRowsFromSelection(getSelectionStart(editor), ephemera.selected);\n      if (rows.length === 0) {\n        return;\n      }\n      const rowsData = map(rows, rowElm => extractDataFromRowElement(editor, rowElm.dom, hasAdvancedRowTab(editor)));\n      const data = getSharedValues(rowsData);\n      const dialogTabPanel = {\n        type: 'tabpanel',\n        tabs: [{\n          title: 'General',\n          name: 'general',\n          items: getItems$1(editor)\n        }, getAdvancedTab(editor, 'row')]\n      };\n      const dialogPanel = {\n        type: 'panel',\n        items: [{\n          type: 'grid',\n          columns: 2,\n          items: getItems$1(editor)\n        }]\n      };\n      editor.windowManager.open({\n        title: 'Row Properties',\n        size: 'normal',\n        body: hasAdvancedRowTab(editor) ? dialogTabPanel : dialogPanel,\n        buttons: [{\n          type: 'cancel',\n          name: 'cancel',\n          text: 'Cancel'\n        }, {\n          type: 'submit',\n          name: 'save',\n          text: 'Save',\n          primary: true\n        }],\n        initialData: data,\n        onSubmit: curry(onSubmitRowForm, editor, map(rows, r => r.dom), data)\n      });\n    };\n\n    const getItems = (editor, classes, insertNewTable) => {\n      const rowColCountItems = !insertNewTable ? [] : [{\n        type: 'input',\n        name: 'cols',\n        label: 'Cols',\n        inputMode: 'numeric'\n      }, {\n        type: 'input',\n        name: 'rows',\n        label: 'Rows',\n        inputMode: 'numeric'\n      }];\n      const alwaysItems = [{\n        type: 'input',\n        name: 'width',\n        label: 'Width'\n      }, {\n        type: 'input',\n        name: 'height',\n        label: 'Height'\n      }];\n      const appearanceItems = hasAppearanceOptions(editor) ? [{\n        type: 'input',\n        name: 'cellspacing',\n        label: 'Cell spacing',\n        inputMode: 'numeric'\n      }, {\n        type: 'input',\n        name: 'cellpadding',\n        label: 'Cell padding',\n        inputMode: 'numeric'\n      }, {\n        type: 'input',\n        name: 'border',\n        label: 'Border width'\n      }, {\n        type: 'label',\n        label: 'Caption',\n        items: [{\n          type: 'checkbox',\n          name: 'caption',\n          label: 'Show caption'\n        }]\n      }] : [];\n      const alignmentItem = [{\n        type: 'listbox',\n        name: 'align',\n        label: 'Alignment',\n        items: [{\n          text: 'None',\n          value: ''\n        }, {\n          text: 'Left',\n          value: 'left'\n        }, {\n          text: 'Center',\n          value: 'center'\n        }, {\n          text: 'Right',\n          value: 'right'\n        }]\n      }];\n      const classListItem = classes.length > 0 ? [{\n        type: 'listbox',\n        name: 'class',\n        label: 'Class',\n        items: classes\n      }] : [];\n      return rowColCountItems.concat(alwaysItems).concat(appearanceItems).concat(alignmentItem).concat(classListItem);\n    };\n\n    const styleTDTH = (dom, elm, name, value) => {\n      if (elm.tagName === 'TD' || elm.tagName === 'TH') {\n        if (isString(name) && isNonNullable(value)) {\n          dom.setStyle(elm, name, value);\n        } else {\n          dom.setStyles(elm, name);\n        }\n      } else {\n        if (elm.children) {\n          for (let i = 0; i < elm.children.length; i++) {\n            styleTDTH(dom, elm.children[i], name, value);\n          }\n        }\n      }\n    };\n    const applyDataToElement = (editor, tableElm, data, shouldApplyOnCell) => {\n      const dom = editor.dom;\n      const attrs = {};\n      const styles = {};\n      const shouldStyleWithCss$1 = shouldStyleWithCss(editor);\n      const hasAdvancedTableTab$1 = hasAdvancedTableTab(editor);\n      if (!isUndefined(data.class)) {\n        attrs.class = data.class;\n      }\n      styles.height = addPxSuffix(data.height);\n      if (shouldStyleWithCss$1) {\n        styles.width = addPxSuffix(data.width);\n      } else if (dom.getAttrib(tableElm, 'width')) {\n        attrs.width = removePxSuffix(data.width);\n      }\n      if (shouldStyleWithCss$1) {\n        styles['border-width'] = addPxSuffix(data.border);\n        styles['border-spacing'] = addPxSuffix(data.cellspacing);\n      } else {\n        attrs.border = data.border;\n        attrs.cellpadding = data.cellpadding;\n        attrs.cellspacing = data.cellspacing;\n      }\n      if (shouldStyleWithCss$1 && tableElm.children) {\n        const cellStyles = {};\n        if (shouldApplyOnCell.border) {\n          cellStyles['border-width'] = addPxSuffix(data.border);\n        }\n        if (shouldApplyOnCell.cellpadding) {\n          cellStyles.padding = addPxSuffix(data.cellpadding);\n        }\n        if (hasAdvancedTableTab$1 && shouldApplyOnCell.bordercolor) {\n          cellStyles['border-color'] = data.bordercolor;\n        }\n        if (!isEmpty$1(cellStyles)) {\n          for (let i = 0; i < tableElm.children.length; i++) {\n            styleTDTH(dom, tableElm.children[i], cellStyles);\n          }\n        }\n      }\n      if (hasAdvancedTableTab$1) {\n        const advData = data;\n        styles['background-color'] = advData.backgroundcolor;\n        styles['border-color'] = advData.bordercolor;\n        styles['border-style'] = advData.borderstyle;\n      }\n      dom.setStyles(tableElm, {\n        ...getDefaultStyles(editor),\n        ...styles\n      });\n      dom.setAttribs(tableElm, {\n        ...getDefaultAttributes(editor),\n        ...attrs\n      });\n    };\n    const onSubmitTableForm = (editor, tableElm, oldData, api) => {\n      const dom = editor.dom;\n      const data = api.getData();\n      const modifiedData = filter$1(data, (value, key) => oldData[key] !== value);\n      api.close();\n      if (data.class === '') {\n        delete data.class;\n      }\n      editor.undoManager.transact(() => {\n        if (!tableElm) {\n          const cols = toInt(data.cols).getOr(1);\n          const rows = toInt(data.rows).getOr(1);\n          editor.execCommand('mceInsertTable', false, {\n            rows,\n            columns: cols\n          });\n          tableElm = getSelectionCell(getSelectionStart(editor), getIsRoot(editor)).bind(cell => table(cell, getIsRoot(editor))).map(table => table.dom).getOrDie();\n        }\n        if (size(modifiedData) > 0) {\n          const applicableCellProperties = {\n            border: has(modifiedData, 'border'),\n            bordercolor: has(modifiedData, 'bordercolor'),\n            cellpadding: has(modifiedData, 'cellpadding')\n          };\n          applyDataToElement(editor, tableElm, data, applicableCellProperties);\n          const captionElm = dom.select('caption', tableElm)[0];\n          if (captionElm && !data.caption || !captionElm && data.caption) {\n            editor.execCommand('mceTableToggleCaption');\n          }\n          setAlign(editor, tableElm, data.align);\n        }\n        editor.focus();\n        editor.addVisual();\n        if (size(modifiedData) > 0) {\n          const captionModified = has(modifiedData, 'caption');\n          const styleModified = captionModified ? size(modifiedData) > 1 : true;\n          fireTableModified(editor, tableElm, {\n            structure: captionModified,\n            style: styleModified\n          });\n        }\n      });\n    };\n    const open = (editor, insertNewTable) => {\n      const dom = editor.dom;\n      let tableElm;\n      let data = extractDataFromSettings(editor, hasAdvancedTableTab(editor));\n      if (insertNewTable) {\n        data.cols = '1';\n        data.rows = '1';\n        if (hasAdvancedTableTab(editor)) {\n          data.borderstyle = '';\n          data.bordercolor = '';\n          data.backgroundcolor = '';\n        }\n      } else {\n        tableElm = dom.getParent(editor.selection.getStart(), 'table', editor.getBody());\n        if (tableElm) {\n          data = extractDataFromTableElement(editor, tableElm, hasAdvancedTableTab(editor));\n        } else {\n          if (hasAdvancedTableTab(editor)) {\n            data.borderstyle = '';\n            data.bordercolor = '';\n            data.backgroundcolor = '';\n          }\n        }\n      }\n      const classes = buildListItems(getTableClassList(editor));\n      if (classes.length > 0) {\n        if (data.class) {\n          data.class = data.class.replace(/\\s*mce\\-item\\-table\\s*/g, '');\n        }\n      }\n      const generalPanel = {\n        type: 'grid',\n        columns: 2,\n        items: getItems(editor, classes, insertNewTable)\n      };\n      const nonAdvancedForm = () => ({\n        type: 'panel',\n        items: [generalPanel]\n      });\n      const advancedForm = () => ({\n        type: 'tabpanel',\n        tabs: [{\n          title: 'General',\n          name: 'general',\n          items: [generalPanel]\n        }, getAdvancedTab(editor, 'table')]\n      });\n      const dialogBody = hasAdvancedTableTab(editor) ? advancedForm() : nonAdvancedForm();\n      editor.windowManager.open({\n        title: 'Table Properties',\n        size: 'normal',\n        body: dialogBody,\n        onSubmit: curry(onSubmitTableForm, editor, tableElm, data),\n        buttons: [{\n          type: 'cancel',\n          name: 'cancel',\n          text: 'Cancel'\n        }, {\n          type: 'submit',\n          name: 'save',\n          text: 'Save',\n          primary: true\n        }],\n        initialData: data\n      });\n    };\n\n    const registerCommands = editor => {\n      const runAction = f => {\n        if (isInEditableContext(getSelectionStart(editor))) {\n          f();\n        }\n      };\n      each$1({\n        mceTableProps: curry(open, editor, false),\n        mceTableRowProps: curry(open$1, editor),\n        mceTableCellProps: curry(open$2, editor),\n        mceInsertTableDialog: curry(open, editor, true)\n      }, (func, name) => editor.addCommand(name, () => runAction(func)));\n    };\n\n    const child = (scope, selector) => child$1(scope, selector).isSome();\n\n    const selection = identity;\n    const unmergable = selectedCells => {\n      const hasSpan = (elem, type) => getOpt(elem, type).exists(span => parseInt(span, 10) > 1);\n      const hasRowOrColSpan = elem => hasSpan(elem, 'rowspan') || hasSpan(elem, 'colspan');\n      return selectedCells.length > 0 && forall(selectedCells, hasRowOrColSpan) ? Optional.some(selectedCells) : Optional.none();\n    };\n    const mergable = (table, selectedCells, ephemera) => {\n      if (selectedCells.length <= 1) {\n        return Optional.none();\n      } else {\n        return retrieveBox(table, ephemera.firstSelectedSelector, ephemera.lastSelectedSelector).map(bounds => ({\n          bounds,\n          cells: selectedCells\n        }));\n      }\n    };\n\n    const noMenu = cell => ({\n      element: cell,\n      mergable: Optional.none(),\n      unmergable: Optional.none(),\n      selection: [cell]\n    });\n    const forMenu = (selectedCells, table, cell) => ({\n      element: cell,\n      mergable: mergable(table, selectedCells, ephemera),\n      unmergable: unmergable(selectedCells),\n      selection: selection(selectedCells)\n    });\n\n    const getSelectionTargets = editor => {\n      const targets = Cell(Optional.none());\n      const changeHandlers = Cell([]);\n      let selectionDetails = Optional.none();\n      const isCaption = isTag('caption');\n      const isDisabledForSelection = key => selectionDetails.forall(details => !details[key]);\n      const getStart = () => getSelectionCellOrCaption(getSelectionStart(editor), getIsRoot(editor));\n      const getEnd = () => getSelectionCellOrCaption(getSelectionEnd(editor), getIsRoot(editor));\n      const findTargets = () => getStart().bind(startCellOrCaption => flatten(lift2(table(startCellOrCaption), getEnd().bind(table), (startTable, endTable) => {\n        if (eq(startTable, endTable)) {\n          if (isCaption(startCellOrCaption)) {\n            return Optional.some(noMenu(startCellOrCaption));\n          } else {\n            return Optional.some(forMenu(getCellsFromSelection(editor), startTable, startCellOrCaption));\n          }\n        }\n        return Optional.none();\n      })));\n      const getExtractedDetails = targets => {\n        const tableOpt = table(targets.element);\n        return tableOpt.map(table => {\n          const warehouse = Warehouse.fromTable(table);\n          const selectedCells = onCells(warehouse, targets).getOr([]);\n          const locked = foldl(selectedCells, (acc, cell) => {\n            if (cell.isLocked) {\n              acc.onAny = true;\n              if (cell.column === 0) {\n                acc.onFirst = true;\n              } else if (cell.column + cell.colspan >= warehouse.grid.columns) {\n                acc.onLast = true;\n              }\n            }\n            return acc;\n          }, {\n            onAny: false,\n            onFirst: false,\n            onLast: false\n          });\n          return {\n            mergeable: onUnlockedMergable(warehouse, targets).isSome(),\n            unmergeable: onUnlockedUnmergable(warehouse, targets).isSome(),\n            locked\n          };\n        });\n      };\n      const resetTargets = () => {\n        targets.set(cached(findTargets)());\n        selectionDetails = targets.get().bind(getExtractedDetails);\n        each(changeHandlers.get(), call);\n      };\n      const setupHandler = handler => {\n        handler();\n        changeHandlers.set(changeHandlers.get().concat([handler]));\n        return () => {\n          changeHandlers.set(filter(changeHandlers.get(), h => h !== handler));\n        };\n      };\n      const onSetup = (api, isDisabled) => setupHandler(() => targets.get().fold(() => {\n        api.setEnabled(false);\n      }, targets => {\n        api.setEnabled(!isDisabled(targets) && editor.selection.isEditable());\n      }));\n      const onSetupWithToggle = (api, isDisabled, isActive) => setupHandler(() => targets.get().fold(() => {\n        api.setEnabled(false);\n        api.setActive(false);\n      }, targets => {\n        api.setEnabled(!isDisabled(targets) && editor.selection.isEditable());\n        api.setActive(isActive(targets));\n      }));\n      const isDisabledFromLocked = lockedDisable => selectionDetails.exists(details => details.locked[lockedDisable]);\n      const onSetupTable = api => onSetup(api, _ => false);\n      const onSetupCellOrRow = api => onSetup(api, targets => isCaption(targets.element));\n      const onSetupColumn = lockedDisable => api => onSetup(api, targets => isCaption(targets.element) || isDisabledFromLocked(lockedDisable));\n      const onSetupPasteable = getClipboardData => api => onSetup(api, targets => isCaption(targets.element) || getClipboardData().isNone());\n      const onSetupPasteableColumn = (getClipboardData, lockedDisable) => api => onSetup(api, targets => isCaption(targets.element) || getClipboardData().isNone() || isDisabledFromLocked(lockedDisable));\n      const onSetupMergeable = api => onSetup(api, _targets => isDisabledForSelection('mergeable'));\n      const onSetupUnmergeable = api => onSetup(api, _targets => isDisabledForSelection('unmergeable'));\n      const onSetupTableWithCaption = api => {\n        return onSetupWithToggle(api, never, targets => {\n          const tableOpt = table(targets.element, getIsRoot(editor));\n          return tableOpt.exists(table => child(table, 'caption'));\n        });\n      };\n      const onSetupTableHeaders = (command, headerType) => api => {\n        return onSetupWithToggle(api, targets => isCaption(targets.element), () => editor.queryCommandValue(command) === headerType);\n      };\n      const onSetupTableRowHeaders = onSetupTableHeaders('mceTableRowType', 'header');\n      const onSetupTableColumnHeaders = onSetupTableHeaders('mceTableColType', 'th');\n      editor.on('NodeChange ExecCommand TableSelectorChange', resetTargets);\n      return {\n        onSetupTable,\n        onSetupCellOrRow,\n        onSetupColumn,\n        onSetupPasteable,\n        onSetupPasteableColumn,\n        onSetupMergeable,\n        onSetupUnmergeable,\n        resetTargets,\n        onSetupTableWithCaption,\n        onSetupTableRowHeaders,\n        onSetupTableColumnHeaders,\n        targets: targets.get\n      };\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.FakeClipboard');\n\n    const tableTypeBase = 'x-tinymce/dom-table-';\n    const tableTypeRow = tableTypeBase + 'rows';\n    const tableTypeColumn = tableTypeBase + 'columns';\n    const getData = type => {\n      var _a;\n      const items = (_a = global.read()) !== null && _a !== void 0 ? _a : [];\n      return findMap(items, item => Optional.from(item.getType(type)));\n    };\n    const getRows = () => getData(tableTypeRow);\n    const getColumns = () => getData(tableTypeColumn);\n\n    const onSetupEditable$1 = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const addButtons = (editor, selectionTargets) => {\n      editor.ui.registry.addMenuButton('table', {\n        tooltip: 'Table',\n        icon: 'table',\n        onSetup: onSetupEditable$1(editor),\n        fetch: callback => callback('inserttable | cell row column | advtablesort | tableprops deletetable')\n      });\n      const cmd = command => () => editor.execCommand(command);\n      const addButtonIfRegistered = (name, spec) => {\n        if (editor.queryCommandSupported(spec.command)) {\n          editor.ui.registry.addButton(name, {\n            ...spec,\n            onAction: isFunction(spec.onAction) ? spec.onAction : cmd(spec.command)\n          });\n        }\n      };\n      const addToggleButtonIfRegistered = (name, spec) => {\n        if (editor.queryCommandSupported(spec.command)) {\n          editor.ui.registry.addToggleButton(name, {\n            ...spec,\n            onAction: isFunction(spec.onAction) ? spec.onAction : cmd(spec.command)\n          });\n        }\n      };\n      addButtonIfRegistered('tableprops', {\n        tooltip: 'Table properties',\n        command: 'mceTableProps',\n        icon: 'table',\n        onSetup: selectionTargets.onSetupTable\n      });\n      addButtonIfRegistered('tabledelete', {\n        tooltip: 'Delete table',\n        command: 'mceTableDelete',\n        icon: 'table-delete-table',\n        onSetup: selectionTargets.onSetupTable\n      });\n      addButtonIfRegistered('tablecellprops', {\n        tooltip: 'Cell properties',\n        command: 'mceTableCellProps',\n        icon: 'table-cell-properties',\n        onSetup: selectionTargets.onSetupCellOrRow\n      });\n      addButtonIfRegistered('tablemergecells', {\n        tooltip: 'Merge cells',\n        command: 'mceTableMergeCells',\n        icon: 'table-merge-cells',\n        onSetup: selectionTargets.onSetupMergeable\n      });\n      addButtonIfRegistered('tablesplitcells', {\n        tooltip: 'Split cell',\n        command: 'mceTableSplitCells',\n        icon: 'table-split-cells',\n        onSetup: selectionTargets.onSetupUnmergeable\n      });\n      addButtonIfRegistered('tableinsertrowbefore', {\n        tooltip: 'Insert row before',\n        command: 'mceTableInsertRowBefore',\n        icon: 'table-insert-row-above',\n        onSetup: selectionTargets.onSetupCellOrRow\n      });\n      addButtonIfRegistered('tableinsertrowafter', {\n        tooltip: 'Insert row after',\n        command: 'mceTableInsertRowAfter',\n        icon: 'table-insert-row-after',\n        onSetup: selectionTargets.onSetupCellOrRow\n      });\n      addButtonIfRegistered('tabledeleterow', {\n        tooltip: 'Delete row',\n        command: 'mceTableDeleteRow',\n        icon: 'table-delete-row',\n        onSetup: selectionTargets.onSetupCellOrRow\n      });\n      addButtonIfRegistered('tablerowprops', {\n        tooltip: 'Row properties',\n        command: 'mceTableRowProps',\n        icon: 'table-row-properties',\n        onSetup: selectionTargets.onSetupCellOrRow\n      });\n      addButtonIfRegistered('tableinsertcolbefore', {\n        tooltip: 'Insert column before',\n        command: 'mceTableInsertColBefore',\n        icon: 'table-insert-column-before',\n        onSetup: selectionTargets.onSetupColumn('onFirst')\n      });\n      addButtonIfRegistered('tableinsertcolafter', {\n        tooltip: 'Insert column after',\n        command: 'mceTableInsertColAfter',\n        icon: 'table-insert-column-after',\n        onSetup: selectionTargets.onSetupColumn('onLast')\n      });\n      addButtonIfRegistered('tabledeletecol', {\n        tooltip: 'Delete column',\n        command: 'mceTableDeleteCol',\n        icon: 'table-delete-column',\n        onSetup: selectionTargets.onSetupColumn('onAny')\n      });\n      addButtonIfRegistered('tablecutrow', {\n        tooltip: 'Cut row',\n        command: 'mceTableCutRow',\n        icon: 'cut-row',\n        onSetup: selectionTargets.onSetupCellOrRow\n      });\n      addButtonIfRegistered('tablecopyrow', {\n        tooltip: 'Copy row',\n        command: 'mceTableCopyRow',\n        icon: 'duplicate-row',\n        onSetup: selectionTargets.onSetupCellOrRow\n      });\n      addButtonIfRegistered('tablepasterowbefore', {\n        tooltip: 'Paste row before',\n        command: 'mceTablePasteRowBefore',\n        icon: 'paste-row-before',\n        onSetup: selectionTargets.onSetupPasteable(getRows)\n      });\n      addButtonIfRegistered('tablepasterowafter', {\n        tooltip: 'Paste row after',\n        command: 'mceTablePasteRowAfter',\n        icon: 'paste-row-after',\n        onSetup: selectionTargets.onSetupPasteable(getRows)\n      });\n      addButtonIfRegistered('tablecutcol', {\n        tooltip: 'Cut column',\n        command: 'mceTableCutCol',\n        icon: 'cut-column',\n        onSetup: selectionTargets.onSetupColumn('onAny')\n      });\n      addButtonIfRegistered('tablecopycol', {\n        tooltip: 'Copy column',\n        command: 'mceTableCopyCol',\n        icon: 'duplicate-column',\n        onSetup: selectionTargets.onSetupColumn('onAny')\n      });\n      addButtonIfRegistered('tablepastecolbefore', {\n        tooltip: 'Paste column before',\n        command: 'mceTablePasteColBefore',\n        icon: 'paste-column-before',\n        onSetup: selectionTargets.onSetupPasteableColumn(getColumns, 'onFirst')\n      });\n      addButtonIfRegistered('tablepastecolafter', {\n        tooltip: 'Paste column after',\n        command: 'mceTablePasteColAfter',\n        icon: 'paste-column-after',\n        onSetup: selectionTargets.onSetupPasteableColumn(getColumns, 'onLast')\n      });\n      addButtonIfRegistered('tableinsertdialog', {\n        tooltip: 'Insert table',\n        command: 'mceInsertTableDialog',\n        icon: 'table',\n        onSetup: onSetupEditable$1(editor)\n      });\n      const tableClassList = filterNoneItem(getTableClassList(editor));\n      if (tableClassList.length !== 0 && editor.queryCommandSupported('mceTableToggleClass')) {\n        editor.ui.registry.addMenuButton('tableclass', {\n          icon: 'table-classes',\n          tooltip: 'Table styles',\n          fetch: generateMenuItemsCallback(editor, tableClassList, 'tableclass', value => editor.execCommand('mceTableToggleClass', false, value)),\n          onSetup: selectionTargets.onSetupTable\n        });\n      }\n      const tableCellClassList = filterNoneItem(getCellClassList(editor));\n      if (tableCellClassList.length !== 0 && editor.queryCommandSupported('mceTableCellToggleClass')) {\n        editor.ui.registry.addMenuButton('tablecellclass', {\n          icon: 'table-cell-classes',\n          tooltip: 'Cell styles',\n          fetch: generateMenuItemsCallback(editor, tableCellClassList, 'tablecellclass', value => editor.execCommand('mceTableCellToggleClass', false, value)),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n      }\n      if (editor.queryCommandSupported('mceTableApplyCellStyle')) {\n        editor.ui.registry.addMenuButton('tablecellvalign', {\n          icon: 'vertical-align',\n          tooltip: 'Vertical align',\n          fetch: generateMenuItemsCallback(editor, verticalAlignValues, 'tablecellverticalalign', applyTableCellStyle(editor, 'vertical-align')),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n        editor.ui.registry.addMenuButton('tablecellborderwidth', {\n          icon: 'border-width',\n          tooltip: 'Border width',\n          fetch: generateMenuItemsCallback(editor, getTableBorderWidths(editor), 'tablecellborderwidth', applyTableCellStyle(editor, 'border-width')),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n        editor.ui.registry.addMenuButton('tablecellborderstyle', {\n          icon: 'border-style',\n          tooltip: 'Border style',\n          fetch: generateMenuItemsCallback(editor, getTableBorderStyles(editor), 'tablecellborderstyle', applyTableCellStyle(editor, 'border-style')),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n        editor.ui.registry.addMenuButton('tablecellbackgroundcolor', {\n          icon: 'cell-background-color',\n          tooltip: 'Background color',\n          fetch: callback => callback(buildColorMenu(editor, getTableBackgroundColorMap(editor), 'background-color')),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n        editor.ui.registry.addMenuButton('tablecellbordercolor', {\n          icon: 'cell-border-color',\n          tooltip: 'Border color',\n          fetch: callback => callback(buildColorMenu(editor, getTableBorderColorMap(editor), 'border-color')),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n      }\n      addToggleButtonIfRegistered('tablecaption', {\n        tooltip: 'Table caption',\n        icon: 'table-caption',\n        command: 'mceTableToggleCaption',\n        onSetup: selectionTargets.onSetupTableWithCaption\n      });\n      addToggleButtonIfRegistered('tablerowheader', {\n        tooltip: 'Row header',\n        icon: 'table-top-header',\n        command: 'mceTableRowType',\n        onAction: changeRowHeader(editor),\n        onSetup: selectionTargets.onSetupTableRowHeaders\n      });\n      addToggleButtonIfRegistered('tablecolheader', {\n        tooltip: 'Column header',\n        icon: 'table-left-header',\n        command: 'mceTableColType',\n        onAction: changeColumnHeader(editor),\n        onSetup: selectionTargets.onSetupTableColumnHeaders\n      });\n    };\n    const addToolbars = editor => {\n      const isEditableTable = table => editor.dom.is(table, 'table') && editor.getBody().contains(table) && editor.dom.isEditable(table.parentNode);\n      const toolbar = getToolbar(editor);\n      if (toolbar.length > 0) {\n        editor.ui.registry.addContextToolbar('table', {\n          predicate: isEditableTable,\n          items: toolbar,\n          scope: 'node',\n          position: 'node'\n        });\n      }\n    };\n\n    const onSetupEditable = editor => api => {\n      const nodeChanged = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      editor.on('NodeChange', nodeChanged);\n      nodeChanged();\n      return () => {\n        editor.off('NodeChange', nodeChanged);\n      };\n    };\n    const addMenuItems = (editor, selectionTargets) => {\n      const cmd = command => () => editor.execCommand(command);\n      const addMenuIfRegistered = (name, spec) => {\n        if (editor.queryCommandSupported(spec.command)) {\n          editor.ui.registry.addMenuItem(name, {\n            ...spec,\n            onAction: isFunction(spec.onAction) ? spec.onAction : cmd(spec.command)\n          });\n          return true;\n        } else {\n          return false;\n        }\n      };\n      const addToggleMenuIfRegistered = (name, spec) => {\n        if (editor.queryCommandSupported(spec.command)) {\n          editor.ui.registry.addToggleMenuItem(name, {\n            ...spec,\n            onAction: isFunction(spec.onAction) ? spec.onAction : cmd(spec.command)\n          });\n        }\n      };\n      const insertTableAction = data => {\n        editor.execCommand('mceInsertTable', false, {\n          rows: data.numRows,\n          columns: data.numColumns\n        });\n      };\n      const hasRowMenuItems = [addMenuIfRegistered('tableinsertrowbefore', {\n        text: 'Insert row before',\n        icon: 'table-insert-row-above',\n        command: 'mceTableInsertRowBefore',\n        onSetup: selectionTargets.onSetupCellOrRow\n      }), addMenuIfRegistered('tableinsertrowafter', {\n        text: 'Insert row after',\n        icon: 'table-insert-row-after',\n        command: 'mceTableInsertRowAfter',\n        onSetup: selectionTargets.onSetupCellOrRow\n      }), addMenuIfRegistered('tabledeleterow', {\n        text: 'Delete row',\n        icon: 'table-delete-row',\n        command: 'mceTableDeleteRow',\n        onSetup: selectionTargets.onSetupCellOrRow\n      }), addMenuIfRegistered('tablerowprops', {\n        text: 'Row properties',\n        icon: 'table-row-properties',\n        command: 'mceTableRowProps',\n        onSetup: selectionTargets.onSetupCellOrRow\n      }), addMenuIfRegistered('tablecutrow', {\n        text: 'Cut row',\n        icon: 'cut-row',\n        command: 'mceTableCutRow',\n        onSetup: selectionTargets.onSetupCellOrRow\n      }), addMenuIfRegistered('tablecopyrow', {\n        text: 'Copy row',\n        icon: 'duplicate-row',\n        command: 'mceTableCopyRow',\n        onSetup: selectionTargets.onSetupCellOrRow\n      }), addMenuIfRegistered('tablepasterowbefore', {\n        text: 'Paste row before',\n        icon: 'paste-row-before',\n        command: 'mceTablePasteRowBefore',\n        onSetup: selectionTargets.onSetupPasteable(getRows)\n      }), addMenuIfRegistered('tablepasterowafter', {\n        text: 'Paste row after',\n        icon: 'paste-row-after',\n        command: 'mceTablePasteRowAfter',\n        onSetup: selectionTargets.onSetupPasteable(getRows)\n      })];\n      const hasColumnMenuItems = [addMenuIfRegistered('tableinsertcolumnbefore', {\n        text: 'Insert column before',\n        icon: 'table-insert-column-before',\n        command: 'mceTableInsertColBefore',\n        onSetup: selectionTargets.onSetupColumn('onFirst')\n      }), addMenuIfRegistered('tableinsertcolumnafter', {\n        text: 'Insert column after',\n        icon: 'table-insert-column-after',\n        command: 'mceTableInsertColAfter',\n        onSetup: selectionTargets.onSetupColumn('onLast')\n      }), addMenuIfRegistered('tabledeletecolumn', {\n        text: 'Delete column',\n        icon: 'table-delete-column',\n        command: 'mceTableDeleteCol',\n        onSetup: selectionTargets.onSetupColumn('onAny')\n      }), addMenuIfRegistered('tablecutcolumn', {\n        text: 'Cut column',\n        icon: 'cut-column',\n        command: 'mceTableCutCol',\n        onSetup: selectionTargets.onSetupColumn('onAny')\n      }), addMenuIfRegistered('tablecopycolumn', {\n        text: 'Copy column',\n        icon: 'duplicate-column',\n        command: 'mceTableCopyCol',\n        onSetup: selectionTargets.onSetupColumn('onAny')\n      }), addMenuIfRegistered('tablepastecolumnbefore', {\n        text: 'Paste column before',\n        icon: 'paste-column-before',\n        command: 'mceTablePasteColBefore',\n        onSetup: selectionTargets.onSetupPasteableColumn(getColumns, 'onFirst')\n      }), addMenuIfRegistered('tablepastecolumnafter', {\n        text: 'Paste column after',\n        icon: 'paste-column-after',\n        command: 'mceTablePasteColAfter',\n        onSetup: selectionTargets.onSetupPasteableColumn(getColumns, 'onLast')\n      })];\n      const hasCellMenuItems = [addMenuIfRegistered('tablecellprops', {\n        text: 'Cell properties',\n        icon: 'table-cell-properties',\n        command: 'mceTableCellProps',\n        onSetup: selectionTargets.onSetupCellOrRow\n      }), addMenuIfRegistered('tablemergecells', {\n        text: 'Merge cells',\n        icon: 'table-merge-cells',\n        command: 'mceTableMergeCells',\n        onSetup: selectionTargets.onSetupMergeable\n      }), addMenuIfRegistered('tablesplitcells', {\n        text: 'Split cell',\n        icon: 'table-split-cells',\n        command: 'mceTableSplitCells',\n        onSetup: selectionTargets.onSetupUnmergeable\n      })];\n      if (!hasTableGrid(editor)) {\n        editor.ui.registry.addMenuItem('inserttable', {\n          text: 'Table',\n          icon: 'table',\n          onAction: cmd('mceInsertTableDialog'),\n          onSetup: onSetupEditable(editor)\n        });\n      } else {\n        editor.ui.registry.addNestedMenuItem('inserttable', {\n          text: 'Table',\n          icon: 'table',\n          getSubmenuItems: () => [{\n            type: 'fancymenuitem',\n            fancytype: 'inserttable',\n            onAction: insertTableAction\n          }],\n          onSetup: onSetupEditable(editor)\n        });\n      }\n      editor.ui.registry.addMenuItem('inserttabledialog', {\n        text: 'Insert table',\n        icon: 'table',\n        onAction: cmd('mceInsertTableDialog'),\n        onSetup: onSetupEditable(editor)\n      });\n      addMenuIfRegistered('tableprops', {\n        text: 'Table properties',\n        onSetup: selectionTargets.onSetupTable,\n        command: 'mceTableProps'\n      });\n      addMenuIfRegistered('deletetable', {\n        text: 'Delete table',\n        icon: 'table-delete-table',\n        onSetup: selectionTargets.onSetupTable,\n        command: 'mceTableDelete'\n      });\n      if (contains(hasRowMenuItems, true)) {\n        editor.ui.registry.addNestedMenuItem('row', {\n          type: 'nestedmenuitem',\n          text: 'Row',\n          getSubmenuItems: constant('tableinsertrowbefore tableinsertrowafter tabledeleterow tablerowprops | tablecutrow tablecopyrow tablepasterowbefore tablepasterowafter')\n        });\n      }\n      if (contains(hasColumnMenuItems, true)) {\n        editor.ui.registry.addNestedMenuItem('column', {\n          type: 'nestedmenuitem',\n          text: 'Column',\n          getSubmenuItems: constant('tableinsertcolumnbefore tableinsertcolumnafter tabledeletecolumn | tablecutcolumn tablecopycolumn tablepastecolumnbefore tablepastecolumnafter')\n        });\n      }\n      if (contains(hasCellMenuItems, true)) {\n        editor.ui.registry.addNestedMenuItem('cell', {\n          type: 'nestedmenuitem',\n          text: 'Cell',\n          getSubmenuItems: constant('tablecellprops tablemergecells tablesplitcells')\n        });\n      }\n      editor.ui.registry.addContextMenu('table', {\n        update: () => {\n          selectionTargets.resetTargets();\n          return selectionTargets.targets().fold(constant(''), targets => {\n            if (name(targets.element) === 'caption') {\n              return 'tableprops deletetable';\n            } else {\n              return 'cell row column | advtablesort | tableprops deletetable';\n            }\n          });\n        }\n      });\n      const tableClassList = filterNoneItem(getTableClassList(editor));\n      if (tableClassList.length !== 0 && editor.queryCommandSupported('mceTableToggleClass')) {\n        editor.ui.registry.addNestedMenuItem('tableclass', {\n          icon: 'table-classes',\n          text: 'Table styles',\n          getSubmenuItems: () => buildMenuItems(editor, tableClassList, 'tableclass', value => editor.execCommand('mceTableToggleClass', false, value)),\n          onSetup: selectionTargets.onSetupTable\n        });\n      }\n      const tableCellClassList = filterNoneItem(getCellClassList(editor));\n      if (tableCellClassList.length !== 0 && editor.queryCommandSupported('mceTableCellToggleClass')) {\n        editor.ui.registry.addNestedMenuItem('tablecellclass', {\n          icon: 'table-cell-classes',\n          text: 'Cell styles',\n          getSubmenuItems: () => buildMenuItems(editor, tableCellClassList, 'tablecellclass', value => editor.execCommand('mceTableCellToggleClass', false, value)),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n      }\n      if (editor.queryCommandSupported('mceTableApplyCellStyle')) {\n        editor.ui.registry.addNestedMenuItem('tablecellvalign', {\n          icon: 'vertical-align',\n          text: 'Vertical align',\n          getSubmenuItems: () => buildMenuItems(editor, verticalAlignValues, 'tablecellverticalalign', applyTableCellStyle(editor, 'vertical-align')),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n        editor.ui.registry.addNestedMenuItem('tablecellborderwidth', {\n          icon: 'border-width',\n          text: 'Border width',\n          getSubmenuItems: () => buildMenuItems(editor, getTableBorderWidths(editor), 'tablecellborderwidth', applyTableCellStyle(editor, 'border-width')),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n        editor.ui.registry.addNestedMenuItem('tablecellborderstyle', {\n          icon: 'border-style',\n          text: 'Border style',\n          getSubmenuItems: () => buildMenuItems(editor, getTableBorderStyles(editor), 'tablecellborderstyle', applyTableCellStyle(editor, 'border-style')),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n        editor.ui.registry.addNestedMenuItem('tablecellbackgroundcolor', {\n          icon: 'cell-background-color',\n          text: 'Background color',\n          getSubmenuItems: () => buildColorMenu(editor, getTableBackgroundColorMap(editor), 'background-color'),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n        editor.ui.registry.addNestedMenuItem('tablecellbordercolor', {\n          icon: 'cell-border-color',\n          text: 'Border color',\n          getSubmenuItems: () => buildColorMenu(editor, getTableBorderColorMap(editor), 'border-color'),\n          onSetup: selectionTargets.onSetupCellOrRow\n        });\n      }\n      addToggleMenuIfRegistered('tablecaption', {\n        icon: 'table-caption',\n        text: 'Table caption',\n        command: 'mceTableToggleCaption',\n        onSetup: selectionTargets.onSetupTableWithCaption\n      });\n      addToggleMenuIfRegistered('tablerowheader', {\n        text: 'Row header',\n        icon: 'table-top-header',\n        command: 'mceTableRowType',\n        onAction: changeRowHeader(editor),\n        onSetup: selectionTargets.onSetupTableRowHeaders\n      });\n      addToggleMenuIfRegistered('tablecolheader', {\n        text: 'Column header',\n        icon: 'table-left-header',\n        command: 'mceTableColType',\n        onAction: changeColumnHeader(editor),\n        onSetup: selectionTargets.onSetupTableRowHeaders\n      });\n    };\n\n    const Plugin = editor => {\n      const selectionTargets = getSelectionTargets(editor);\n      register(editor);\n      registerCommands(editor);\n      addMenuItems(editor, selectionTargets);\n      addButtons(editor, selectionTargets);\n      addToolbars(editor);\n    };\n    var Plugin$1 = () => {\n      global$3.add('table', Plugin);\n    };\n\n    Plugin$1();\n\n})();\n/*!\n * Tiny Table of Contents plugin\n *\n * Copyright (c) 2023 Ephox Corporation DBA Tiny Technologies, Inc.\n * Licensed under the Tiny commercial license. See https://www.tiny.cloud/legal/\n *\n * Version: 1.2.0-51\n */\n\n!function(){\"use strict\";const t=t=>parseInt(t,10),e=(t,e)=>{const n=t-e;return 0===n?0:n>0?1:-1},n=(t,e,n)=>({major:t,minor:e,patch:n}),o=e=>{const o=/([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:(\\-.+)?)/.exec(e);return o?n(t(o[1]),t(o[2]),t(o[3])):n(0,0,0)},r=(\"string\",t=>\"string\"===(t=>{const e=typeof t;return null===t?\"null\":\"object\"===e&&Array.isArray(t)?\"array\":\"object\"===e&&(n=o=t,(r=String).prototype.isPrototypeOf(n)||(null===(s=o.constructor)||void 0===s?void 0:s.name)===r.name)?\"string\":e;var n,o,r,s})(t));const s=t=>!(t=>null==t)(t),i=t=>\"number\"==typeof t;class l{constructor(t,e){this.tag=t,this.value=e}static some(t){return new l(!0,t)}static none(){return l.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?l.some(t(this.value)):l.none()}bind(t){return this.tag?t(this.value):l.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:l.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:\"Called getOrDie on None\")}static from(t){return s(t)?l.some(t):l.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:\"none()\"}}l.singletonNone=new l(!1);const a=t=>e=>e.options.get(t),c=a(\"tableofcontents_class\"),d=a(\"tableofcontents_header\"),u=a(\"tableofcontents_depth\"),h=a(\"tableofcontents_includeheader\"),f=a(\"tableofcontents_orderedlist\"),g=a(\"tableofcontents_orderedlist_type\"),m=(t=>{let e=0;return()=>\"mcetoc_\"+(new Date).getTime().toString(32)+(e++).toString(32)})(),p=t=>{const e=c(t),n=d(t),o=(t=>{const e=[];for(let n=1;n<=t;n++)e.push(\"h\"+n);return e.join(\",\")})(u(t));let r=t.dom.select(o);return r.length&&/^h[1-9]$/i.test(n)&&(r=((t,e)=>{const n=[];for(let o=0,r=t.length;o<r;o++){const r=t[o];e(r)&&n.push(r)}return n})(r,(n=>{const o=n.parentElement;return s(o)&&!t.dom.hasClass(o,e)&&!t.dom.isEmpty(n)}))),((t,e)=>{const n=t.length,o=new Array(n);for(let r=0;r<n;r++){const n=t[r];o[r]=e(n)}return o})(r,(t=>({id:t.id||m(),level:parseInt(t.nodeName.replace(/^H/i,\"\"),10),title:t.innerText,element:t})))},b=(t,e)=>{let n=\"\";const o=p(t),r=f(t)?\"ol\":\"ul\",s=[r];let i=(t=>{let e=9;for(const n of t)if(n.level<e&&(e=n.level),1===e)return e;return e})(o)-1;if(!o.length)return\"\";if(f(t)&&s.push(`type=\"${g(t)}\"`),h(t)){const o=e.getOr(t.translate(\"Table of Contents\"));n+=((t,e)=>{const n=\"</\"+t+\">\";return\"<\"+t+' contenteditable=\"true\">'+tinymce.DOM.encode(e)+n})(d(t),o)}for(let t=0;t<o.length;t++){const e=o[t];e.element.id=e.id;const l=o[t+1]&&o[t+1].level;if(i===e.level)n+=\"<li>\";else for(let t=i;t<e.level;t++)n+=`<${s.join(\" \")}><li>`;if(n+='<a href=\"#'+e.id+'\">'+e.title+\"</a>\",l!==e.level&&l)for(let t=e.level;t>l;t--)n+=t===l+1?`</li></${r}><li>`:`</li></${r}>`;else n+=\"</li>\",l||(n+=`</${r}>`);i=e.level}return n},v=t=>{const e=c(t),n=t.dom.select(\".\"+e);n.length&&t.undoManager.transact((()=>{var e,o;t.dom.setHTML(n,b(t,(e=n[0],l.from(null===(o=e.firstElementChild)||void 0===o?void 0:o.innerHTML))))}))},_=t=>e=>{const n=()=>{const n=t.selection.isEditable();e.setEnabled(!t.readonly&&n&&(t=>p(t).length>0)(t))};return t.on(\"NodeChange LoadContent SetContent change\",n),n(),()=>t.off(\"NodeChange LoadContent SetContent change\",n)},y=t=>e=>t.dom.is(e,\".\"+c(t))&&t.getBody().contains(e);tinymce.PluginManager.requireLangPack(\"tableofcontents\",\"ar,bg_BG,ca,cs,da,de,el,es,eu,fa,fi,fr_FR,he_IL,hi,hr,hu_HU,id,it,ja,kk,ko_KR,ms,nb_NO,nl,pl,pt_BR,pt_PT,ro,ru,sk,sl_SI,sv_SE,th_TH,tr,uk,vi,zh_CN,zh_TW\"),tinymce.PluginManager.add(\"tableofcontents\",(t=>{((t,n)=>!!t&&-1===((t,n)=>{const o=e(t.major,n.major);if(0!==o)return o;const r=e(t.minor,n.minor);if(0!==r)return r;const s=e(t.patch,n.patch);return 0!==s?s:0})((t=>o((t=>[t.majorVersion,t.minorVersion].join(\".\").split(\".\").slice(0,3).join(\".\"))(t)))(t),o(n)))(tinymce,\"6.4.0\")?console.error(\"The tinydrive plugin requires at least version 6.4.0 of TinyMCE.\"):((t=>{const e=t.options.register;e(\"tableofcontents_class\",{processor:\"string\",default:\"mce-toc\"}),e(\"tableofcontents_header\",{processor:t=>r(t)&&/^h[1-6]$/.test(t),default:\"h2\"}),e(\"tableofcontents_depth\",{processor:t=>i(t)&&t>=1&&t<=9,default:3}),e(\"tableofcontents_includeheader\",{processor:\"boolean\",default:!0}),e(\"tableofcontents_orderedlist\",{processor:\"boolean\",default:!1}),e(\"tableofcontents_orderedlist_type\",{processor:t=>r(t)&&[\"1\",\"A\",\"a\",\"I\",\"i\"].includes(t),default:\"1\"})})(t),(t=>{t.addCommand(\"mceInsertToc\",(()=>{(t=>{const e=c(t),n=t.dom.select(\".\"+e);((t,e)=>!e.length||t.dom.getParents(e[0],\".mce-offscreen-selection\").length>0)(t,n)?t.insertContent(((t,e)=>{const n=b(t,e);return'<div class=\"'+t.dom.encode(c(t))+'\" contenteditable=\"false\" data-mce-toc=\"true\">'+n+\"</div>\"})(t,l.none())):v(t)})(t)})),t.addCommand(\"mceUpdateToc\",(()=>{v(t)}))})(t),(t=>{const e=()=>t.execCommand(\"mceInsertToc\");t.ui.registry.addButton(\"tableofcontents\",{icon:\"toc\",tooltip:\"Table of contents\",onAction:e,onSetup:_(t)}),t.ui.registry.addButton(\"tableofcontentsupdate\",{icon:\"reload\",tooltip:\"Update\",onAction:()=>t.execCommand(\"mceUpdateToc\")}),t.ui.registry.addMenuItem(\"tableofcontents\",{icon:\"toc\",text:\"Table of contents\",onAction:e,onSetup:_(t)}),t.ui.registry.addContextToolbar(\"tableofcontents\",{items:\"tableofcontentsupdate\",predicate:y(t),scope:\"node\",position:\"node\"})})(t),(t=>{const e=c(t),n=\"data-mce-toc\";t.on(\"PreProcess\",(n=>{const o=t.dom,r=o.select(\".\"+e,n.node)[0];r&&((t,e)=>{for(let e=0,r=t.length;e<r;e++)n=t[e],o.setAttrib(n,\"contentEditable\",null);var n})([r].concat(o.select(\"[contenteditable]\",r)))})),t.on(\"PreInit\",(()=>{t.serializer.addTempAttr(n)})),t.on(\"SetContent\",(()=>{const o=t.dom,r=o.select(\".\"+e)[0];if(r){o.setAttribs(r,{contentEditable:!1,[n]:!0});const t=r.firstElementChild;s(t)&&o.setAttrib(t,\"contentEditable\",!0)}}))})(t))}))}();/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const fireVisualBlocks = (editor, state) => {\n      editor.dispatch('VisualBlocks', {\n        state\n      });\n    };\n\n    const toggleVisualBlocks = (editor, pluginUrl, enabledState) => {\n      const dom = editor.dom;\n      dom.toggleClass(editor.getBody(), 'mce-visualblocks');\n      enabledState.set(!enabledState.get());\n      fireVisualBlocks(editor, enabledState.get());\n    };\n\n    const register$2 = (editor, pluginUrl, enabledState) => {\n      editor.addCommand('mceVisualBlocks', () => {\n        toggleVisualBlocks(editor, pluginUrl, enabledState);\n      });\n    };\n\n    const option = name => editor => editor.options.get(name);\n    const register$1 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('visualblocks_default_state', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const isEnabledByDefault = option('visualblocks_default_state');\n\n    const setup = (editor, pluginUrl, enabledState) => {\n      editor.on('PreviewFormats AfterPreviewFormats', e => {\n        if (enabledState.get()) {\n          editor.dom.toggleClass(editor.getBody(), 'mce-visualblocks', e.type === 'afterpreviewformats');\n        }\n      });\n      editor.on('init', () => {\n        if (isEnabledByDefault(editor)) {\n          toggleVisualBlocks(editor, pluginUrl, enabledState);\n        }\n      });\n    };\n\n    const toggleActiveState = (editor, enabledState) => api => {\n      api.setActive(enabledState.get());\n      const editorEventCallback = e => api.setActive(e.state);\n      editor.on('VisualBlocks', editorEventCallback);\n      return () => editor.off('VisualBlocks', editorEventCallback);\n    };\n    const register = (editor, enabledState) => {\n      const onAction = () => editor.execCommand('mceVisualBlocks');\n      editor.ui.registry.addToggleButton('visualblocks', {\n        icon: 'visualblocks',\n        tooltip: 'Show blocks',\n        onAction,\n        onSetup: toggleActiveState(editor, enabledState)\n      });\n      editor.ui.registry.addToggleMenuItem('visualblocks', {\n        text: 'Show blocks',\n        icon: 'visualblocks',\n        onAction,\n        onSetup: toggleActiveState(editor, enabledState)\n      });\n    };\n\n    var Plugin = () => {\n      global.add('visualblocks', (editor, pluginUrl) => {\n        register$1(editor);\n        const enabledState = Cell(false);\n        register$2(editor, pluginUrl, enabledState);\n        register(editor, enabledState);\n        setup(editor, pluginUrl, enabledState);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const get$2 = toggleState => {\n      const isEnabled = () => {\n        return toggleState.get();\n      };\n      return {\n        isEnabled\n      };\n    };\n\n    const fireVisualChars = (editor, state) => {\n      return editor.dispatch('VisualChars', {\n        state\n      });\n    };\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq = t => a => t === a;\n    const isString = isType$1('string');\n    const isObject = isType$1('object');\n    const isNull = eq(null);\n    const isBoolean = isSimpleType('boolean');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isNumber = isSimpleType('number');\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const filter = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n\n    const keys = Object.keys;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve = (p, scope) => {\n      const parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve(name, scope);\n    };\n    const getOrDie = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf(x).constructor.name));\n    };\n\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const type = element => element.dom.nodeType;\n    const value = element => element.dom.nodeValue;\n    const isType = t => element => type(element) === t;\n    const isHTMLElement = element => isElement(element) && isPrototypeOf(element.dom);\n    const isElement = isType(ELEMENT);\n    const isText = isType(TEXT);\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const get$1 = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const remove$3 = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n\n    const read = (element, attr) => {\n      const value = get$1(element, attr);\n      return value === undefined || value === '' ? [] : value.split(' ');\n    };\n    const add$2 = (element, attr, id) => {\n      const old = read(element, attr);\n      const nu = old.concat([id]);\n      set(element, attr, nu.join(' '));\n      return true;\n    };\n    const remove$2 = (element, attr, id) => {\n      const nu = filter(read(element, attr), v => v !== id);\n      if (nu.length > 0) {\n        set(element, attr, nu.join(' '));\n      } else {\n        remove$3(element, attr);\n      }\n      return false;\n    };\n\n    const supports = element => element.dom.classList !== undefined;\n    const get = element => read(element, 'class');\n    const add$1 = (element, clazz) => add$2(element, 'class', clazz);\n    const remove$1 = (element, clazz) => remove$2(element, 'class', clazz);\n\n    const add = (element, clazz) => {\n      if (supports(element)) {\n        element.dom.classList.add(clazz);\n      } else {\n        add$1(element, clazz);\n      }\n    };\n    const cleanClass = element => {\n      const classList = supports(element) ? element.dom.classList : get(element);\n      if (classList.length === 0) {\n        remove$3(element, 'class');\n      }\n    };\n    const remove = (element, clazz) => {\n      if (supports(element)) {\n        const classList = element.dom.classList;\n        classList.remove(clazz);\n      } else {\n        remove$1(element, clazz);\n      }\n      cleanClass(element);\n    };\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    const charMap = {\n      '\\xA0': 'nbsp',\n      '\\xAD': 'shy'\n    };\n    const charMapToRegExp = (charMap, global) => {\n      let regExp = '';\n      each(charMap, (_value, key) => {\n        regExp += key;\n      });\n      return new RegExp('[' + regExp + ']', global ? 'g' : '');\n    };\n    const charMapToSelector = charMap => {\n      let selector = '';\n      each(charMap, value => {\n        if (selector) {\n          selector += ',';\n        }\n        selector += 'span.mce-' + value;\n      });\n      return selector;\n    };\n    const regExp = charMapToRegExp(charMap);\n    const regExpGlobal = charMapToRegExp(charMap, true);\n    const selector = charMapToSelector(charMap);\n    const nbspClass = 'mce-nbsp';\n\n    const getRaw = element => element.dom.contentEditable;\n\n    const wrapCharWithSpan = value => '<span data-mce-bogus=\"1\" class=\"mce-' + charMap[value] + '\">' + value + '</span>';\n\n    const isWrappedNbsp = node => node.nodeName.toLowerCase() === 'span' && node.classList.contains('mce-nbsp-wrap');\n    const isMatch = n => {\n      const value$1 = value(n);\n      return isText(n) && isString(value$1) && regExp.test(value$1);\n    };\n    const isContentEditableFalse = node => isHTMLElement(node) && getRaw(node) === 'false';\n    const isChildEditable = (node, currentState) => {\n      if (isHTMLElement(node) && !isWrappedNbsp(node.dom)) {\n        const value = getRaw(node);\n        if (value === 'true') {\n          return true;\n        } else if (value === 'false') {\n          return false;\n        }\n      }\n      return currentState;\n    };\n    const filterEditableDescendants = (scope, predicate, editable) => {\n      let result = [];\n      const dom = scope.dom;\n      const children = map(dom.childNodes, SugarElement.fromDom);\n      const isEditable = node => isWrappedNbsp(node.dom) || !isContentEditableFalse(node);\n      each$1(children, x => {\n        if (editable && isEditable(x) && predicate(x)) {\n          result = result.concat([x]);\n        }\n        result = result.concat(filterEditableDescendants(x, predicate, isChildEditable(x, editable)));\n      });\n      return result;\n    };\n    const findParentElm = (elm, rootElm) => {\n      while (elm.parentNode) {\n        if (elm.parentNode === rootElm) {\n          return rootElm;\n        }\n        elm = elm.parentNode;\n      }\n      return undefined;\n    };\n    const replaceWithSpans = text => text.replace(regExpGlobal, wrapCharWithSpan);\n\n    const show = (editor, rootElm) => {\n      const dom = editor.dom;\n      const nodeList = filterEditableDescendants(SugarElement.fromDom(rootElm), isMatch, editor.dom.isEditable(rootElm));\n      each$1(nodeList, n => {\n        var _a;\n        const parent = n.dom.parentNode;\n        if (isWrappedNbsp(parent)) {\n          add(SugarElement.fromDom(parent), nbspClass);\n        } else {\n          const withSpans = replaceWithSpans(dom.encode((_a = value(n)) !== null && _a !== void 0 ? _a : ''));\n          const div = dom.create('div', {}, withSpans);\n          let node;\n          while (node = div.lastChild) {\n            dom.insertAfter(node, n.dom);\n          }\n          editor.dom.remove(n.dom);\n        }\n      });\n    };\n    const hide = (editor, rootElm) => {\n      const nodeList = editor.dom.select(selector, rootElm);\n      each$1(nodeList, node => {\n        if (isWrappedNbsp(node)) {\n          remove(SugarElement.fromDom(node), nbspClass);\n        } else {\n          editor.dom.remove(node, true);\n        }\n      });\n    };\n    const toggle = editor => {\n      const body = editor.getBody();\n      const bookmark = editor.selection.getBookmark();\n      let parentNode = findParentElm(editor.selection.getNode(), body);\n      parentNode = parentNode !== undefined ? parentNode : body;\n      hide(editor, parentNode);\n      show(editor, parentNode);\n      editor.selection.moveToBookmark(bookmark);\n    };\n\n    const applyVisualChars = (editor, toggleState) => {\n      fireVisualChars(editor, toggleState.get());\n      const body = editor.getBody();\n      if (toggleState.get() === true) {\n        show(editor, body);\n      } else {\n        hide(editor, body);\n      }\n    };\n    const toggleVisualChars = (editor, toggleState) => {\n      toggleState.set(!toggleState.get());\n      const bookmark = editor.selection.getBookmark();\n      applyVisualChars(editor, toggleState);\n      editor.selection.moveToBookmark(bookmark);\n    };\n\n    const register$2 = (editor, toggleState) => {\n      editor.addCommand('mceVisualChars', () => {\n        toggleVisualChars(editor, toggleState);\n      });\n    };\n\n    const option = name => editor => editor.options.get(name);\n    const register$1 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('visualchars_default_state', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const isEnabledByDefault = option('visualchars_default_state');\n\n    const setup$1 = (editor, toggleState) => {\n      editor.on('init', () => {\n        applyVisualChars(editor, toggleState);\n      });\n    };\n\n    const first = (fn, rate) => {\n      let timer = null;\n      const cancel = () => {\n        if (!isNull(timer)) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      const throttle = (...args) => {\n        if (isNull(timer)) {\n          timer = setTimeout(() => {\n            timer = null;\n            fn.apply(null, args);\n          }, rate);\n        }\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n\n    const setup = (editor, toggleState) => {\n      const debouncedToggle = first(() => {\n        toggle(editor);\n      }, 300);\n      editor.on('keydown', e => {\n        if (toggleState.get() === true) {\n          e.keyCode === 13 ? toggle(editor) : debouncedToggle.throttle();\n        }\n      });\n      editor.on('remove', debouncedToggle.cancel);\n    };\n\n    const toggleActiveState = (editor, enabledStated) => api => {\n      api.setActive(enabledStated.get());\n      const editorEventCallback = e => api.setActive(e.state);\n      editor.on('VisualChars', editorEventCallback);\n      return () => editor.off('VisualChars', editorEventCallback);\n    };\n    const register = (editor, toggleState) => {\n      const onAction = () => editor.execCommand('mceVisualChars');\n      editor.ui.registry.addToggleButton('visualchars', {\n        tooltip: 'Show invisible characters',\n        icon: 'visualchars',\n        onAction,\n        onSetup: toggleActiveState(editor, toggleState)\n      });\n      editor.ui.registry.addToggleMenuItem('visualchars', {\n        text: 'Show invisible characters',\n        icon: 'visualchars',\n        onAction,\n        onSetup: toggleActiveState(editor, toggleState)\n      });\n    };\n\n    var Plugin = () => {\n      global.add('visualchars', editor => {\n        register$1(editor);\n        const toggleState = Cell(isEnabledByDefault(editor));\n        register$2(editor, toggleState);\n        register(editor, toggleState);\n        setup(editor, toggleState);\n        setup$1(editor, toggleState);\n        return get$2(toggleState);\n      });\n    };\n\n    Plugin();\n\n})();\n/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const eq = t => a => t === a;\n    const isNull = eq(null);\n\n    const identity = x => {\n      return x;\n    };\n\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n\n    const punctuationStr = \"[~\\u2116|!-*+-\\\\/:;?@\\\\[-`{}\\xA1\\xAB\\xB7\\xBB\\xBF;\\xB7\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1361-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u3008\\u3009\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30\\u2E31\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]\";\n    const regExps = {\n      aletter: '[A-Za-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05F3\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u10a0-\\u10c5\\u10d0-\\u10fa\\u10fc\\u1100-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1a00-\\u1a16\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bc0-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u24B6-\\u24E9\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2d00-\\u2d25\\u2d30-\\u2d65\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005\\u303b\\u303c\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790\\ua791\\ua7a0-\\ua7a9\\ua7fa-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]',\n      midnumlet: \"[-'\\\\.\\u2018\\u2019\\u2024\\uFE52\\uFF07\\uFF0E]\",\n      midletter: '[:\\xB7\\xB7\\u05F4\\u2027\\uFE13\\uFE55\\uFF1A]',\n      midnum: '[\\xB1+*/,;;\\u0589\\u060C\\u060D\\u066C\\u07F8\\u2044\\uFE10\\uFE14\\uFE50\\uFE54\\uFF0C\\uFF1B]',\n      numeric: '[0-9\\u0660-\\u0669\\u066B\\u06f0-\\u06f9\\u07c0-\\u07c9\\u0966-\\u096f\\u09e6-\\u09ef\\u0a66-\\u0a6f\\u0ae6-\\u0aef\\u0b66-\\u0b6f\\u0be6-\\u0bef\\u0c66-\\u0c6f\\u0ce6-\\u0cef\\u0d66-\\u0d6f\\u0e50-\\u0e59\\u0ed0-\\u0ed9\\u0f20-\\u0f29\\u1040-\\u1049\\u1090-\\u1099\\u17e0-\\u17e9\\u1810-\\u1819\\u1946-\\u194f\\u19d0-\\u19d9\\u1a80-\\u1a89\\u1a90-\\u1a99\\u1b50-\\u1b59\\u1bb0-\\u1bb9\\u1c40-\\u1c49\\u1c50-\\u1c59\\ua620-\\ua629\\ua8d0-\\ua8d9\\ua900-\\ua909\\ua9d0-\\ua9d9\\uaa50-\\uaa59\\uabf0-\\uabf9]',\n      cr: '\\\\r',\n      lf: '\\\\n',\n      newline: '[\\x0B\\f\\x85\\u2028\\u2029]',\n      extend: '[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0c01-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d02\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f\\u109a-\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b6-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u19b0-\\u19c0\\u19c8\\u19c9\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1baa\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2\\u1dc0-\\u1de6\\u1dfc-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\uA672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa7b\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe3-\\uabea\\uabec\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]',\n      format: '[\\xAD\\u0600-\\u0603\\u06DD\\u070F\\u17b4\\u17b5\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\uFEFF\\uFFF9-\\uFFFB]',\n      katakana: '[\\u3031-\\u3035\\u309B\\u309C\\u30A0-\\u30fa\\u30fc-\\u30ff\\u31f0-\\u31ff\\u32D0-\\u32FE\\u3300-\\u3357\\uff66-\\uff9d]',\n      extendnumlet: '[=_\\u203f\\u2040\\u2054\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff3f\\u2200-\\u22FF<>]',\n      punctuation: punctuationStr\n    };\n    const characterIndices = {\n      ALETTER: 0,\n      MIDNUMLET: 1,\n      MIDLETTER: 2,\n      MIDNUM: 3,\n      NUMERIC: 4,\n      CR: 5,\n      LF: 6,\n      NEWLINE: 7,\n      EXTEND: 8,\n      FORMAT: 9,\n      KATAKANA: 10,\n      EXTENDNUMLET: 11,\n      AT: 12,\n      OTHER: 13\n    };\n    const SETS$1 = [new RegExp(regExps.aletter), new RegExp(regExps.midnumlet), new RegExp(regExps.midletter), new RegExp(regExps.midnum), new RegExp(regExps.numeric), new RegExp(regExps.cr), new RegExp(regExps.lf), new RegExp(regExps.newline), new RegExp(regExps.extend), new RegExp(regExps.format), new RegExp(regExps.katakana), new RegExp(regExps.extendnumlet), new RegExp('@')];\n    const EMPTY_STRING$1 = '';\n    const PUNCTUATION$1 = new RegExp('^' + regExps.punctuation + '$');\n    const WHITESPACE$1 = /^\\s+$/;\n\n    const SETS = SETS$1;\n    const OTHER = characterIndices.OTHER;\n    const getType = char => {\n      let type = OTHER;\n      const setsLength = SETS.length;\n      for (let j = 0; j < setsLength; ++j) {\n        const set = SETS[j];\n        if (set && set.test(char)) {\n          type = j;\n          break;\n        }\n      }\n      return type;\n    };\n    const memoize = func => {\n      const cache = {};\n      return char => {\n        if (cache[char]) {\n          return cache[char];\n        } else {\n          const result = func(char);\n          cache[char] = result;\n          return result;\n        }\n      };\n    };\n    const classify = characters => {\n      const memoized = memoize(getType);\n      return map(characters, memoized);\n    };\n\n    const isWordBoundary = (map, index) => {\n      const type = map[index];\n      const nextType = map[index + 1];\n      if (index < 0 || index > map.length - 1 && index !== 0) {\n        return false;\n      }\n      if (type === characterIndices.ALETTER && nextType === characterIndices.ALETTER) {\n        return false;\n      }\n      const nextNextType = map[index + 2];\n      if (type === characterIndices.ALETTER && (nextType === characterIndices.MIDLETTER || nextType === characterIndices.MIDNUMLET || nextType === characterIndices.AT) && nextNextType === characterIndices.ALETTER) {\n        return false;\n      }\n      const prevType = map[index - 1];\n      if ((type === characterIndices.MIDLETTER || type === characterIndices.MIDNUMLET || nextType === characterIndices.AT) && nextType === characterIndices.ALETTER && prevType === characterIndices.ALETTER) {\n        return false;\n      }\n      if ((type === characterIndices.NUMERIC || type === characterIndices.ALETTER) && (nextType === characterIndices.NUMERIC || nextType === characterIndices.ALETTER)) {\n        return false;\n      }\n      if ((type === characterIndices.MIDNUM || type === characterIndices.MIDNUMLET) && nextType === characterIndices.NUMERIC && prevType === characterIndices.NUMERIC) {\n        return false;\n      }\n      if (type === characterIndices.NUMERIC && (nextType === characterIndices.MIDNUM || nextType === characterIndices.MIDNUMLET) && nextNextType === characterIndices.NUMERIC) {\n        return false;\n      }\n      if ((type === characterIndices.EXTEND || type === characterIndices.FORMAT) && (nextType === characterIndices.ALETTER || nextType === characterIndices.NUMERIC || nextType === characterIndices.KATAKANA || nextType === characterIndices.EXTEND || nextType === characterIndices.FORMAT) || (nextType === characterIndices.EXTEND || nextType === characterIndices.FORMAT && (nextNextType === characterIndices.ALETTER || nextNextType === characterIndices.NUMERIC || nextNextType === characterIndices.KATAKANA || nextNextType === characterIndices.EXTEND || nextNextType === characterIndices.FORMAT)) && (type === characterIndices.ALETTER || type === characterIndices.NUMERIC || type === characterIndices.KATAKANA || type === characterIndices.EXTEND || type === characterIndices.FORMAT)) {\n        return false;\n      }\n      if (type === characterIndices.CR && nextType === characterIndices.LF) {\n        return false;\n      }\n      if (type === characterIndices.NEWLINE || type === characterIndices.CR || type === characterIndices.LF) {\n        return true;\n      }\n      if (nextType === characterIndices.NEWLINE || nextType === characterIndices.CR || nextType === characterIndices.LF) {\n        return true;\n      }\n      if (type === characterIndices.KATAKANA && nextType === characterIndices.KATAKANA) {\n        return false;\n      }\n      if (nextType === characterIndices.EXTENDNUMLET && (type === characterIndices.ALETTER || type === characterIndices.NUMERIC || type === characterIndices.KATAKANA || type === characterIndices.EXTENDNUMLET)) {\n        return false;\n      }\n      if (type === characterIndices.EXTENDNUMLET && (nextType === characterIndices.ALETTER || nextType === characterIndices.NUMERIC || nextType === characterIndices.KATAKANA)) {\n        return false;\n      }\n      if (type === characterIndices.AT) {\n        return false;\n      }\n      return true;\n    };\n\n    const EMPTY_STRING = EMPTY_STRING$1;\n    const WHITESPACE = WHITESPACE$1;\n    const PUNCTUATION = PUNCTUATION$1;\n    const isProtocol = str => str === 'http' || str === 'https';\n    const findWordEnd = (characters, startIndex) => {\n      let i;\n      for (i = startIndex; i < characters.length; i++) {\n        if (WHITESPACE.test(characters[i])) {\n          break;\n        }\n      }\n      return i;\n    };\n    const findUrlEnd = (characters, startIndex) => {\n      const endIndex = findWordEnd(characters, startIndex + 1);\n      const peakedWord = characters.slice(startIndex + 1, endIndex).join(EMPTY_STRING);\n      return peakedWord.substr(0, 3) === '://' ? endIndex : startIndex;\n    };\n    const findWordsWithIndices = (chars, sChars, characterMap, options) => {\n      const words = [];\n      const indices = [];\n      let word = [];\n      for (let i = 0; i < characterMap.length; ++i) {\n        word.push(chars[i]);\n        if (isWordBoundary(characterMap, i)) {\n          const ch = sChars[i];\n          if ((options.includeWhitespace || !WHITESPACE.test(ch)) && (options.includePunctuation || !PUNCTUATION.test(ch))) {\n            const startOfWord = i - word.length + 1;\n            const endOfWord = i + 1;\n            const str = sChars.slice(startOfWord, endOfWord).join(EMPTY_STRING);\n            if (isProtocol(str)) {\n              const endOfUrl = findUrlEnd(sChars, i);\n              const url = chars.slice(endOfWord, endOfUrl);\n              Array.prototype.push.apply(word, url);\n              i = endOfUrl;\n            }\n            words.push(word);\n            indices.push({\n              start: startOfWord,\n              end: endOfWord\n            });\n          }\n          word = [];\n        }\n      }\n      return {\n        words,\n        indices\n      };\n    };\n    const getDefaultOptions = () => ({\n      includeWhitespace: false,\n      includePunctuation: false\n    });\n    const getWordsWithIndices = (chars, extract, options) => {\n      options = {\n        ...getDefaultOptions(),\n        ...options\n      };\n      const extractedChars = map(chars, extract);\n      const characterMap = classify(extractedChars);\n      return findWordsWithIndices(chars, extractedChars, characterMap, options);\n    };\n    const getWords$1 = (chars, extract, options) => getWordsWithIndices(chars, extract, options).words;\n\n    const getWords = getWords$1;\n\n    const removeZwsp$1 = s => s.replace(/\\uFEFF/g, '');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n    const getText = (node, schema) => {\n      const blockElements = schema.getBlockElements();\n      const voidElements = schema.getVoidElements();\n      const isNewline = node => blockElements[node.nodeName] || voidElements[node.nodeName];\n      const textBlocks = [];\n      let txt = '';\n      const treeWalker = new global$1(node, node);\n      let tempNode;\n      while (tempNode = treeWalker.next()) {\n        if (tempNode.nodeType === 3) {\n          txt += removeZwsp$1(tempNode.data);\n        } else if (isNewline(tempNode) && txt.length) {\n          textBlocks.push(txt);\n          txt = '';\n        }\n      }\n      if (txt.length) {\n        textBlocks.push(txt);\n      }\n      return textBlocks;\n    };\n\n    const removeZwsp = text => text.replace(/\\u200B/g, '');\n    const strLen = str => str.replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, '_').length;\n    const countWords = (node, schema) => {\n      const text = removeZwsp(getText(node, schema).join('\\n'));\n      return getWords(text.split(''), identity).length;\n    };\n    const countCharacters = (node, schema) => {\n      const text = getText(node, schema).join('');\n      return strLen(text);\n    };\n    const countCharactersWithoutSpaces = (node, schema) => {\n      const text = getText(node, schema).join('').replace(/\\s/g, '');\n      return strLen(text);\n    };\n\n    const createBodyCounter = (editor, count) => () => count(editor.getBody(), editor.schema);\n    const createSelectionCounter = (editor, count) => () => count(editor.selection.getRng().cloneContents(), editor.schema);\n    const createBodyWordCounter = editor => createBodyCounter(editor, countWords);\n    const get = editor => ({\n      body: {\n        getWordCount: createBodyWordCounter(editor),\n        getCharacterCount: createBodyCounter(editor, countCharacters),\n        getCharacterCountWithoutSpaces: createBodyCounter(editor, countCharactersWithoutSpaces)\n      },\n      selection: {\n        getWordCount: createSelectionCounter(editor, countWords),\n        getCharacterCount: createSelectionCounter(editor, countCharacters),\n        getCharacterCountWithoutSpaces: createSelectionCounter(editor, countCharactersWithoutSpaces)\n      },\n      getCount: createBodyWordCounter(editor)\n    });\n\n    const open = (editor, api) => {\n      editor.windowManager.open({\n        title: 'Word Count',\n        body: {\n          type: 'panel',\n          items: [{\n            type: 'table',\n            header: ['Count', 'Document', 'Selection'],\n            cells: [['Words', String(api.body.getWordCount()), String(api.selection.getWordCount())], ['Characters (no spaces)', String(api.body.getCharacterCountWithoutSpaces()), String(api.selection.getCharacterCountWithoutSpaces())], ['Characters', String(api.body.getCharacterCount()), String(api.selection.getCharacterCount())]]\n          }]\n        },\n        buttons: [{\n          type: 'cancel',\n          name: 'close',\n          text: 'Close',\n          primary: true\n        }]\n      });\n    };\n\n    const register$1 = (editor, api) => {\n      editor.addCommand('mceWordCount', () => open(editor, api));\n    };\n\n    const first = (fn, rate) => {\n      let timer = null;\n      const cancel = () => {\n        if (!isNull(timer)) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      const throttle = (...args) => {\n        if (isNull(timer)) {\n          timer = setTimeout(() => {\n            timer = null;\n            fn.apply(null, args);\n          }, rate);\n        }\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n    const fireWordCountUpdate = (editor, api) => {\n      editor.dispatch('wordCountUpdate', {\n        wordCount: {\n          words: api.body.getWordCount(),\n          characters: api.body.getCharacterCount(),\n          charactersWithoutSpaces: api.body.getCharacterCountWithoutSpaces()\n        }\n      });\n    };\n\n    const updateCount = (editor, api) => {\n      fireWordCountUpdate(editor, api);\n    };\n    const setup = (editor, api, delay) => {\n      const debouncedUpdate = first(() => updateCount(editor, api), delay);\n      editor.on('init', () => {\n        updateCount(editor, api);\n        global.setEditorTimeout(editor, () => {\n          editor.on('SetContent BeforeAddUndo Undo Redo ViewUpdate keyup', debouncedUpdate.throttle);\n        }, 0);\n        editor.on('remove', debouncedUpdate.cancel);\n      });\n    };\n\n    const register = editor => {\n      const onAction = () => editor.execCommand('mceWordCount');\n      editor.ui.registry.addButton('wordcount', {\n        tooltip: 'Word count',\n        icon: 'character-count',\n        onAction\n      });\n      editor.ui.registry.addMenuItem('wordcount', {\n        text: 'Word count',\n        icon: 'character-count',\n        onAction\n      });\n    };\n\n    var Plugin = (delay = 300) => {\n      global$2.add('wordcount', editor => {\n        const api = get(editor);\n        register$1(editor, api);\n        register(editor);\n        setup(editor, api, delay);\n        return api;\n      });\n    };\n\n    Plugin();\n\n})();\ntinymce.IconManager.add('default', {\n  icons: {\n    'accessibility-check': '<svg width=\"24\" height=\"24\"><path d=\"M12 2a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1.1.9-2 2-2Zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5c0-.6-.4-1-1-1a1 1 0 0 0-1 1v5c0 .6-.4 1-1 1a1 1 0 0 1-1-1V9H4a1 1 0 1 1 0-2h16c.6 0 1 .4 1 1s-.4 1-1 1Z\" fill-rule=\"nonzero\"/></svg>',\n    'accordion-toggle': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 15c0-.6.4-1 1-1h6c.6 0 1 .4 1 1s-.4 1-1 1h-6a1 1 0 0 1-1-1Z\"/><path opacity=\".2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 15c0-.6.4-1 1-1h6c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1-1-1Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 19c0-.6.4-1 1-1h6c.6 0 1 .4 1 1s-.4 1-1 1h-6a1 1 0 0 1-1-1Z\"/><path opacity=\".2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 19c0-.6.4-1 1-1h6c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1-1-1Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.3 7.3a1 1 0 0 1 1.4 0L16 9.6l2.3-2.3a1 1 0 1 1 1.4 1.4L16 12.4l-3.7-3.7a1 1 0 0 1 0-1.4ZM4.3 11.7a1 1 0 0 1 0-1.4L6.6 8 4.3 5.7a1 1 0 0 1 1.4-1.4L9.4 8l-3.7 3.7a1 1 0 0 1-1.4 0Z\"/></svg>',\n    'accordion': '<svg width=\"24\" height=\"24\"><rect x=\"12\" y=\"7\" width=\"10\" height=\"2\" rx=\"1\"/><rect x=\"12\" y=\"11\" width=\"10\" height=\"2\" rx=\"1\"/><rect x=\"12\" y=\"15\" width=\"6\" height=\"2\" rx=\"1\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.3 7.3a1 1 0 0 1 1.4 0L6 9.6l2.3-2.3a1 1 0 0 1 1.4 1.4L6 12.4 2.3 8.7a1 1 0 0 1 0-1.4Z\"/></svg>',\n    'action-next': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M5.7 7.3a1 1 0 0 0-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 1 0-1.4-1.4L12 13.6 5.7 7.3Z\"/></svg>',\n    'action-prev': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M18.3 15.7a1 1 0 0 0 1.4-1.4L12 6.6l-7.7 7.7a1 1 0 0 0 1.4 1.4L12 9.4l6.3 6.3Z\"/></svg>',\n    'addtag': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 5a2 2 0 0 1 1.6.8L21 12l-4.4 6.2a2 2 0 0 1-1.6.8h-3v-2h3l3.5-5L15 7H5v3H3V7c0-1.1.9-2 2-2h10Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6 12a1 1 0 0 0-1 1v2H3a1 1 0 1 0 0 2h2v2a1 1 0 1 0 2 0v-2h2a1 1 0 1 0 0-2H7v-2c0-.6-.4-1-1-1Z\"/></svg>',\n    'ai-prompt': '<svg width=\"24\" height=\"24\"><g clip-path=\"url(#a)\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 6.7a1 1 0 0 0-1.4 0l-9.9 10a1 1 0 0 0 0 1.3l2.1 2.1c.4.4 1 .4 1.4 0l10-9.9c.3-.3.3-1 0-1.4l-2.2-2Zm1.4 2.8-2-2-3 2.7 2.2 2.2 2.8-2.9Z\"/><path d=\"m18.5 7.3-.7-1.5-1.5-.8 1.5-.7.7-1.5.7 1.5 1.5.7-1.5.8-.7 1.5ZM18.5 16.5l-.7-1.6-1.5-.7 1.5-.7.7-1.6.7 1.6 1.5.7-1.5.7-.7 1.6ZM9.7 7.3 9 5.8 7.5 5 9 4.3l.7-1.5.7 1.5L12 5l-1.5.8-.7 1.5Z\"/></g><defs><clipPath id=\"a\"><path d=\"M0 0h24v24H0z\"/></clipPath></defs></svg>',\n    'ai': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3H5Zm6.8 11.5.5 1.2a68.3 68.3 0 0 0 .7 1.1l.4.1c.3 0 .5 0 .7-.3.2-.1.3-.3.3-.6l-.3-1-2.6-6.2a20.4 20.4 0 0 0-.5-1.3l-.5-.4-.7-.2c-.2 0-.5 0-.6.2-.2 0-.4.2-.5.4l-.3.6-.3.7L5.7 15l-.2.6-.1.4c0 .3 0 .5.3.7l.6.2c.3 0 .5 0 .7-.2l.4-1 .5-1.2h3.9ZM9.8 9l1.5 4h-3l1.5-4Zm5.6-.9v7.6c0 .4 0 .7.2 1l.7.2c.3 0 .6 0 .8-.3l.2-.9V8.1c0-.4 0-.7-.2-.9a1 1 0 0 0-.8-.3c-.2 0-.5.1-.7.3l-.2 1Z\"/></svg>',\n    'align-center': '<svg width=\"24\" height=\"24\"><path d=\"M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2Zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2Zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'align-justify': '<svg width=\"24\" height=\"24\"><path d=\"M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'align-left': '<svg width=\"24\" height=\"24\"><path d=\"M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'align-none': '<svg width=\"24\" height=\"24\"><path d=\"M14.2 5 13 7H5a1 1 0 1 1 0-2h9.2Zm4 0h.8a1 1 0 0 1 0 2h-2l1.2-2Zm-6.4 4-1.2 2H5a1 1 0 0 1 0-2h6.8Zm4 0H19a1 1 0 0 1 0 2h-4.4l1.2-2Zm-6.4 4-1.2 2H5a1 1 0 0 1 0-2h4.4Zm4 0H19a1 1 0 0 1 0 2h-6.8l1.2-2ZM7 17l-1.2 2H5a1 1 0 0 1 0-2h2Zm4 0h8a1 1 0 0 1 0 2H9.8l1.2-2Zm5.2-13.5 1.3.7-9.7 16.3-1.3-.7 9.7-16.3Z\" fill-rule=\"evenodd\"/></svg>',\n    'align-right': '<svg width=\"24\" height=\"24\"><path d=\"M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'arrow-left': '<svg width=\"24\" height=\"24\"><path d=\"m5.6 13 12 6a1 1 0 0 0 1.4-1V6a1 1 0 0 0-1.4-.9l-12 6a1 1 0 0 0 0 1.8Z\" fill-rule=\"evenodd\"/></svg>',\n    'arrow-right': '<svg width=\"24\" height=\"24\"><path d=\"m18.5 13-12 6A1 1 0 0 1 5 18V6a1 1 0 0 1 1.4-.9l12 6a1 1 0 0 1 0 1.8Z\" fill-rule=\"evenodd\"/></svg>',\n    'bold': '<svg width=\"24\" height=\"24\"><path d=\"M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 0 1-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8Zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4Zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4Z\" fill-rule=\"evenodd\"/></svg>',\n    'bookmark': '<svg width=\"24\" height=\"24\"><path d=\"M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 0 0-1 1Z\" fill-rule=\"nonzero\"/></svg>',\n    'border-style': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><rect width=\"18\" height=\"2\" x=\"3\" y=\"6\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"3\" y=\"16\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"6.8\" y=\"16\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"10.6\" y=\"16\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"14.4\" y=\"16\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"18.2\" y=\"16\" rx=\"1\"/><rect width=\"8\" height=\"2\" x=\"3\" y=\"11\" rx=\"1\"/><rect width=\"8\" height=\"2\" x=\"13\" y=\"11\" rx=\"1\"/></g></svg>',\n    'border-width': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><rect width=\"18\" height=\"5\" x=\"3\" y=\"5\" rx=\"1\"/><rect width=\"18\" height=\"3.5\" x=\"3\" y=\"11.5\" rx=\"1\"/><rect width=\"18\" height=\"2\" x=\"3\" y=\"17\" rx=\"1\"/></g></svg>',\n    'brightness': '<svg width=\"24\" height=\"24\"><path d=\"M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3Zm0-10a1 1 0 0 1-.7-.3A1 1 0 0 1 11 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3Zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-1a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1ZM7 12c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H5a1 1 0 0 1-.7-.3A1 1 0 0 1 4 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7Zm10 3.5.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 0 1-.8.3 1 1 0 0 1-.6-.3l-.8-.7a1 1 0 0 1-.3-.8c0-.2.1-.5.3-.7a1 1 0 0 1 1.4 0Zm-10-7-.7-.8a1 1 0 0 1-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.8-.3Zm10 0a1 1 0 0 1-.8.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7Zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 0 1 0 1.4l-.8.8a1 1 0 0 1-.6.3 1 1 0 0 1-.8-.3 1 1 0 0 1-.3-.8c0-.2.1-.5.3-.6l.7-.8ZM12 8a4 4 0 0 1 3.7 2.4 4 4 0 0 1 0 3.2A4 4 0 0 1 12 16a4 4 0 0 1-3.7-2.4 4 4 0 0 1 0-3.2A4 4 0 0 1 12 8Zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7Z\" fill-rule=\"evenodd\"/></svg>',\n    'browse': '<svg width=\"24\" height=\"24\"><path d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 9.4-2.3 2.3a1 1 0 1 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 0 1-1.4 1.4L13 13.4V20a1 1 0 0 1-2 0v-6.6Z\" fill-rule=\"nonzero\"/></svg>',\n    'cancel': '<svg width=\"24\" height=\"24\"><path d=\"M12 4.6a7.4 7.4 0 1 1 0 14.8 7.4 7.4 0 0 1 0-14.8ZM12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18Zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7Z\" fill-rule=\"nonzero\"/></svg>',\n    'cell-background-color': '<svg width=\"24\" height=\"24\"><path d=\"m15.7 2 1.6 1.6-2.7 2.6 5.9 5.8c.7.7.7 1.7 0 2.4l-6.3 6.1a1.7 1.7 0 0 1-2.4 0l-6.3-6.1c-.7-.7-.7-1.7 0-2.4L15.7 2ZM18 12l-4.5-4L9 12h9ZM4 16s2 2.4 2 3.8C6 21 5.1 22 4 22s-2-1-2-2.2C2 18.4 4 16 4 16Z\"/></svg>',\n    'cell-border-color': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M5 13v5h2v2H5a2 2 0 0 1-2-2v-5h2zm8-7V4h6a2 2 0 0 1 2 2h-8z\" opacity=\".2\"/><path fill-rule=\"nonzero\" d=\"M13 4v2H5v7H3V6c0-1.1.9-2 2-2h8zm-2.6 14.1.1-.1.1.1.2.3.2.2.2.2c.4.6.8 1.2.8 1.7 0 .8-.7 1.5-1.5 1.5S9 21.3 9 20.5c0-.5.4-1.1.8-1.7l.2-.2.2-.2.2-.3z\"/><path d=\"m13 11-2 2H5v-2h6V6h2z\"/><path fill-rule=\"nonzero\" d=\"m18.4 8 1 1-1.8 1.9 4 4c.5.4.5 1.1 0 1.6l-4.3 4.2a1.2 1.2 0 0 1-1.6 0l-4.4-4.2c-.4-.5-.4-1.2 0-1.7l7-6.8Zm1.6 7-3-3-3 3h6Z\"/></g></svg>',\n    'change-case': '<svg width=\"24\" height=\"24\"><path d=\"M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 0 1-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 0 1-1 .7h-.2a.7.7 0 0 1-.7-1l4-12a1 1 0 0 1 2 0l4 12a.7.7 0 0 1-.8 1h-.2a1 1 0 0 1-1-.7l-.8-2.6zm-.3-1.5-2-6.5-1.9 6.5h3.9z\" fill-rule=\"evenodd\"/></svg>',\n    'character-count': '<svg width=\"24\" height=\"24\"><path d=\"M4 11.5h16v1H4v-1Zm4.8-6.8V10H7.7V5.8h-1v-1h2ZM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1Zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1ZM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2V18.7l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 0 1-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 0 0-.5-.1 1 1 0 0 0-.4 0l-.3.4h-1Zm2.3.8h-.2l-.2.1-.4.1a1 1 0 0 0-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6Zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4Zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 0 0 1.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 0 0-.6-.3l-.6.3-.2.8Zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 0 0-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 0 1-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 0 1-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1Z\" fill-rule=\"evenodd\"/></svg>',\n    'checklist-rtl': '<svg width=\"24\" height=\"24\"><path d=\"M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z\" fill-rule=\"evenodd\"/></svg>',\n    'checklist': '<svg width=\"24\" height=\"24\"><path d=\"M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8a1 1 0 0 1 0 2h-8a1 1 0 0 1 0-2ZM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8Zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8Zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8Z\" fill-rule=\"evenodd\"/></svg>',\n    'checkmark': '<svg width=\"24\" height=\"24\"><path d=\"M18.2 5.4a1 1 0 0 1 1.6 1.2l-8 12a1 1 0 0 1-1.5.1l-5-5a1 1 0 1 1 1.4-1.4l4.1 4.1 7.4-11Z\" fill-rule=\"nonzero\"/></svg>',\n    'chevron-down': '<svg width=\"10\" height=\"10\"><path d=\"M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 0 1 0-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8Z\" fill-rule=\"nonzero\"/></svg>',\n    'chevron-left': '<svg width=\"10\" height=\"10\"><path d=\"M7.8 1.3 4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 0 1 0-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1Z\" fill-rule=\"nonzero\"/></svg>',\n    'chevron-right': '<svg width=\"10\" height=\"10\"><path d=\"M2.2 1.3a.8.8 0 0 1 0-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 0 1 0-1.1L6 5 2.2 1.3Z\" fill-rule=\"nonzero\"/></svg>',\n    'chevron-up': '<svg width=\"10\" height=\"10\"><path d=\"M8.7 7.8 5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 0 1 0-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0Z\" fill-rule=\"nonzero\"/></svg>',\n    'close': '<svg width=\"24\" height=\"24\"><path d=\"M17.3 8.2 13.4 12l3.9 3.8a1 1 0 0 1-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 0 1-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 0 1 1.5-1.5l3.8 3.9 3.8-3.9a1 1 0 0 1 1.5 1.5Z\" fill-rule=\"evenodd\"/></svg>',\n    'code-sample': '<svg width=\"24\" height=\"26\"><path d=\"M7.1 11a2.8 2.8 0 0 1-.8 2 2.8 2.8 0 0 1 .8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11Zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 0 1-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 0 1 .8-2 2.8 2.8 0 0 1-.8-2Zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2ZM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 0 1-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 0 1-.5-.5V17a3 3 0 0 0 1-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5Z\" fill-rule=\"evenodd\"/></svg>',\n    'color-levels': '<svg width=\"24\" height=\"24\"><path d=\"M17.5 11.4A9 9 0 0 1 18 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 0 1-3.7 3 5.7 5.7 0 0 1-3.2 0A5.9 5.9 0 0 1 7.6 18a6.2 6.2 0 0 1-1.4-2.6 6.7 6.7 0 0 1 0-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 0 1 2.3-4A20 20 0 0 1 12 4a26.4 26.4 0 0 1 3.2 3.4 18.2 18.2 0 0 1 2.3 4Zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 0 0-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 0 1-1.3 3 5.3 5.3 0 0 1-2.3 1.5 4.9 4.9 0 0 1-2 .1 4.3 4.3 0 0 0 2.4.8 4 4 0 0 0 2-.6 4 4 0 0 0 1.5-1.5Z\" fill-rule=\"evenodd\"/></svg>',\n    'color-picker': '<svg width=\"24\" height=\"24\"><path d=\"M12 3a9 9 0 0 0 0 18 1.5 1.5 0 0 0 1.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 0 0 5-5c0-4.4-4-8-9-8Zm-5.5 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Zm3-4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Zm3 4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Z\" fill-rule=\"nonzero\"/></svg>',\n    'color-swatch-remove-color': '<svg width=\"24\" height=\"24\"><path stroke=\"#000\" stroke-width=\"2\" d=\"M21 3 3 21\" fill-rule=\"evenodd\"/></svg>',\n    'color-swatch': '<svg width=\"24\" height=\"24\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"1\" fill-rule=\"evenodd\"/></svg>',\n    'comment-add': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"m9 19 3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2Zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23Z\"/><path d=\"M13 10h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 0v-2H9a1 1 0 0 1 0-2h2V8a1 1 0 0 1 2 0v2Z\"/></g></svg>',\n    'comment': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"m9 19 3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2Zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23Z\"/></svg>',\n    'contrast': '<svg width=\"24\" height=\"24\"><path d=\"M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4Zm-6 8a6 6 0 0 0 6 6V6a6 6 0 0 0-6 6Z\" fill-rule=\"evenodd\"/></svg>',\n    'copy': '<svg width=\"24\" height=\"24\"><path d=\"M16 3H6a2 2 0 0 0-2 2v11h2V5h10V3Zm1 4a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7Zm0 12V9h-7v10h7Z\" fill-rule=\"nonzero\"/></svg>',\n    'crop': '<svg width=\"24\" height=\"24\"><path d=\"M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-2H7V9H5a1 1 0 1 1 0-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3ZM9 9v5l5-5H9Zm1 6h5v-5l-5 5Z\" fill-rule=\"evenodd\"/></svg>',\n    'cut-column': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M7.2 4.5c.9 0 1.6.4 2.2 1A3.7 3.7 0 0 1 10.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 0 1 2 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 0 1 7 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7Zm12.3 5h-3v10h3v-10ZM8 13.8h-.3l-.4.2a2.8 2.8 0 0 0-.7.4v.1a2.8 2.8 0 0 0-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 0 0 .8-.3 2.4 2.4 0 0 0 .7-.7 2.5 2.5 0 0 0 .3-.8 1.5 1.5 0 0 0 0-.8 1 1 0 0 0-.2-.4 1 1 0 0 0-.5-.2H8Zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4ZM7 5.8h-.4a1 1 0 0 0-.5.3 1 1 0 0 0-.2.5v.7a2.5 2.5 0 0 0 .3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 0 0 0-.8 2.6 2.6 0 0 0-.3-.8A2.5 2.5 0 0 0 7.7 6l-.4-.1H7Z\"/></svg>',\n    'cut-row': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l2 2V3h14ZM8.5 15.3h-.3a2.6 2.6 0 0 0-.8.4 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3L9 18V18l.4-.4.2-.4.1-.4v-.7a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2h-.5Zm7 0H15a1 1 0 0 0-.4.3 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4a2.8 2.8 0 0 0 .5.7h.1a2.8 2.8 0 0 0 .8.6l.4.1h.7l.5-.2.2-.5v-.7a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3h-.3ZM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4Zm8.5-7.1h-11v2h11v-2Z\"/></svg>',\n    'cut': '<svg width=\"24\" height=\"24\"><path d=\"M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 0 1 0 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8Zm-8.5 2.2.1-.4v-.7a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2 1.6 1.6 0 0 0-.8 0 2.6 2.6 0 0 0-.8.3 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3 2.8 2.8 0 0 0 1-1Zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4Zm5.4 4 .2-.5v-.7a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3 1.5 1.5 0 0 0-.8 0 1 1 0 0 0-.4.2 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4l.3.4.3.4a2.8 2.8 0 0 0 .8.5l.4.1h.7l.5-.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'document-properties': '<svg width=\"24\" height=\"24\"><path d=\"M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3ZM17 19H7V5h6v4h4v10Z\" fill-rule=\"nonzero\"/></svg>',\n    'drag': '<svg width=\"24\" height=\"24\"><path d=\"M13 5h2v2h-2V5Zm0 4h2v2h-2V9ZM9 9h2v2H9V9Zm4 4h2v2h-2v-2Zm-4 0h2v2H9v-2Zm0 4h2v2H9v-2Zm4 0h2v2h-2v-2ZM9 5h2v2H9V5Z\" fill-rule=\"evenodd\"/></svg>',\n    'duplicate-column': '<svg width=\"24\" height=\"24\"><path d=\"M17 6v16h-7V6h7Zm-2 2h-3v12h3V8Zm-2-6v2H8v15H6V2h7Z\"/></svg>',\n    'duplicate-row': '<svg width=\"24\" height=\"24\"><path d=\"M22 11v7H6v-7h16Zm-2 2H8v3h12v-3Zm-1-6v2H4v5H2V7h17Z\"/></svg>',\n    'duplicate': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10Zm3 8h-2V9h-7v10h9a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7a2 2 0 0 1 2 2v2Z\"/><path d=\"M17 14h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1h-1a1 1 0 0 1 0-2h1v-1a1 1 0 0 1 2 0v1Z\"/></g></svg>',\n    'edit-block': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"m19.8 8.8-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5Zm-2-.2 1-.9v-.3l-2.2-2.2a.3.3 0 0 0-.3 0l-1 1L18 8.5Zm-1 1-2.5-2.4-6 6 2.5 2.5 6-6Zm-7 7.1-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5Z\"/></svg>',\n    'edit-image': '<svg width=\"24\" height=\"24\"><path d=\"M18 16h2V7a2 2 0 0 0-2-2H7v2h11v9ZM6 17h15a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1H6a2 2 0 0 1-2-2V7H3a1 1 0 1 1 0-2h1V4a1 1 0 1 1 2 0v13Zm3-5.3 1.3 2 3-4.7 3.7 6H7l2-3.3Z\" fill-rule=\"nonzero\"/></svg>',\n    'embed-page': '<svg width=\"24\" height=\"24\"><path d=\"M19 6V5H5v14h2A13 13 0 0 1 19 6Zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4Zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6Zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3Zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 0 0 8 19h3ZM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 0 0-4 4.5h2.2Zm-3.4 0a12 12 0 0 1 2.8-4 12 12 0 0 0-5 4h2.2Z\" fill-rule=\"nonzero\"/></svg>',\n    'embed': '<svg width=\"24\" height=\"24\"><path d=\"M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm1 2v14h14V5H5Zm4.8 2.6 5.6 4a.5.5 0 0 1 0 .8l-5.6 4A.5.5 0 0 1 9 16V8a.5.5 0 0 1 .8-.4Z\" fill-rule=\"nonzero\"/></svg>',\n    'emoji': '<svg width=\"24\" height=\"24\"><path d=\"M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1Zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1Zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm0 14.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13Z\" fill-rule=\"nonzero\"/></svg>',\n    'export': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M14.4 3 18 7v1h-5V5H7v14h9a1 1 0 0 1 2 0c0 1-.8 2-1.9 2H7c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h7.5Z\"/><path d=\"M18.1 12c.5 0 .9.4.9 1 0 .5-.3 1-.8 1h-7.3c-.5 0-.9-.4-.9-1 0-.5.3-1 .8-1h7.3Z\"/><path d=\"M16.4 9.2a1 1 0 0 1 1.4.2l2.4 3.6-2.4 3.6a1 1 0 0 1-1.7-1v-.2l1.7-2.4-1.6-2.4a1 1 0 0 1 .2-1.4Z\"/></g></svg>',\n    'fill': '<svg width=\"24\" height=\"26\"><path d=\"m16.6 12-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 0 0 2.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2ZM5.2 13 10 8.2l4.8 4.8H5.2ZM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.3-2-3.5-2-3.5Z\" fill-rule=\"nonzero\"/></svg>',\n    'flip-horizontally': '<svg width=\"24\" height=\"24\"><path d=\"M14 19h2v-2h-2v2Zm4-8h2V9h-2v2ZM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 0 0-2 2Zm14-2v2h2a2 2 0 0 0-2-2Zm-7 16h2V3h-2v18Zm7-6h2v-2h-2v2Zm-4-8h2V5h-2v2Zm4 12a2 2 0 0 0 2-2h-2v2Z\" fill-rule=\"nonzero\"/></svg>',\n    'flip-vertically': '<svg width=\"24\" height=\"24\"><path d=\"M5 14v2h2v-2H5Zm8 4v2h2v-2h-2Zm4-14H7a2 2 0 0 0-2 2v3h2V6h10v3h2V6a2 2 0 0 0-2-2Zm2 14h-2v2a2 2 0 0 0 2-2ZM3 11v2h18v-2H3Zm6 7v2h2v-2H9Zm8-4v2h2v-2h-2ZM5 18c0 1.1.9 2 2 2v-2H5Z\" fill-rule=\"nonzero\"/></svg>',\n    'footnote': '<svg width=\"24\" height=\"24\"><path d=\"M19 13c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2h14Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19 4v6h-1V5h-1.5V4h2.6Z\"/><path d=\"M12 18c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2h7ZM14 8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2h9Z\"/></svg>',\n    'format-painter': '<svg width=\"24\" height=\"24\"><path d=\"M18 5V4c0-.5-.4-1-1-1H5a1 1 0 0 0-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3Z\" fill-rule=\"nonzero\"/></svg>',\n    'format': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M17 5a1 1 0 0 1 0 2h-4v11a1 1 0 0 1-2 0V7H7a1 1 0 1 1 0-2h10Z\"/></svg>',\n    'fullscreen': '<svg width=\"24\" height=\"24\"><path d=\"m15.3 10-1.2-1.3 2.9-3h-2.3a.9.9 0 1 1 0-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 1 1-1.8 0V7l-2.9 3Zm0 4 3 3v-2.3a.9.9 0 1 1 1.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 1 1 0-1.8H17l-3-2.9 1.3-1.2ZM10 15.4l-2.9 3h2.3a.9.9 0 1 1 0 1.7H5a.9.9 0 0 1-.9-.9v-4.4a.9.9 0 1 1 1.8 0V17l2.9-3 1.2 1.3ZM8.7 10 5.7 7v2.3a.9.9 0 0 1-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 0 1 0 1.8H7l3 2.9-1.3 1.2Z\" fill-rule=\"nonzero\"/></svg>',\n    'gallery': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"m5 15.7 2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7ZM5 18V19h3l1.8-1.9-2-2L5 17.9Zm14-3-2.5-2.4-6.4 6.5H19v-4ZM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V7c0-.6.4-1 1-1Zm6 7a2 2 0 1 1 0-4 2 2 0 0 1 0 4ZM4.5 4h15a.5.5 0 1 1 0 1h-15a.5.5 0 0 1 0-1Zm2-2h11a.5.5 0 1 1 0 1h-11a.5.5 0 0 1 0-1Z\"/></svg>',\n    'gamma': '<svg width=\"24\" height=\"24\"><path d=\"M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm1 2v14h14V5H5Zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 0 0-.4-.8l-.1-.2H8v-1l.3-.1.3-.1h.7a1 1 0 0 1 .6.5l.1.3a8.5 8.5 0 0 1 .3.6l1.9 4.6 2-5.2a1 1 0 0 1 1-.6.5.5 0 0 1 .5.6L13 14v2.8a.7.7 0 0 1-1.4 0Z\" fill-rule=\"nonzero\"/></svg>',\n    'help': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M12 5.5a6.5 6.5 0 0 0-6 9 6.3 6.3 0 0 0 1.4 2l1 1a6.3 6.3 0 0 0 3.6 1 6.5 6.5 0 0 0 6-9 6.3 6.3 0 0 0-1.4-2l-1-1a6.3 6.3 0 0 0-3.6-1ZM12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4Z\"/><path d=\"M9.6 9.7a.7.7 0 0 1-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 0 0-.8.8.8.8 0 0 1-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8Z\" fill-rule=\"nonzero\"/><circle cx=\"12\" cy=\"16\" r=\"1\"/></g></svg>',\n    'highlight-bg-color': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path class=\"tox-icon-highlight-bg-color__color\" d=\"M3 18h18v3H3z\"/><path fill-rule=\"nonzero\" d=\"M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 0 1 2.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6\"/></g></svg>',\n    'home': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/></svg>',\n    'horizontal-rule': '<svg width=\"24\" height=\"24\"><path d=\"M4 11h16v2H4z\" fill-rule=\"evenodd\"/></svg>',\n    'image-options': '<svg width=\"24\" height=\"24\"><path d=\"M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Z\" fill-rule=\"nonzero\"/></svg>',\n    'image': '<svg width=\"24\" height=\"24\"><path d=\"m5 15.7 3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7ZM5 18V19h3l2.8-2.9-2-2L5 17.9Zm14-3-2.5-2.4-6.4 6.5H19v-4ZM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm6 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\" fill-rule=\"nonzero\"/></svg>',\n    'indent': '<svg width=\"24\" height=\"24\"><path d=\"M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2Zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2Zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6Z\" fill-rule=\"evenodd\"/></svg>',\n    'info': '<svg width=\"24\" height=\"24\"><path d=\"M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4Zm-1 3v2h2V7h-2Zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4Z\" fill-rule=\"evenodd\"/></svg>',\n    'insert-character': '<svg width=\"24\" height=\"24\"><path d=\"M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 0 0 1.8-2.9 6.3 6.3 0 0 0-.1-4.1 5.8 5.8 0 0 0-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 0 0-3.9 1.8 6.3 6.3 0 0 0-1.3 6 6.2 6.2 0 0 0 1.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 0 1 4 11c0-1 .2-1.9.6-2.7A7 7 0 0 1 6.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 0 1 5.7 2 7 7 0 0 1 1.7 2.3 6 6 0 0 1 .2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 0 1-3.6 2.5v.5Z\" fill-rule=\"evenodd\"/></svg>',\n    'insert-time': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M12 19a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm0 2a9 9 0 1 1 0-18 9 9 0 0 1 0 18Z\"/><path d=\"M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 0 0-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1Z\"/></g></svg>',\n    'invert': '<svg width=\"24\" height=\"24\"><path d=\"M18 19.3 16.5 18a5.8 5.8 0 0 1-3.1 1.9 6.1 6.1 0 0 1-5.5-1.6A5.8 5.8 0 0 1 6 14v-.3l.1-1.2A13.9 13.9 0 0 1 7.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6Zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 0 0 .2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 0 0-3-4.2L12 6a26.1 26.1 0 0 0-2.2 2.5l-1-1a20.9 20.9 0 0 1 2.9-3.3L12 4l1 .8a22.2 22.2 0 0 1 4 5.4c.6 1.2 1 2.4 1 3.6Z\" fill-rule=\"evenodd\"/></svg>',\n    'italic': '<svg width=\"24\" height=\"24\"><path d=\"m16.7 4.7-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8Z\" fill-rule=\"evenodd\"/></svg>',\n    'language': '<svg width=\"24\" height=\"24\"><path d=\"M12 3a9 9 0 1 1 0 18 9 9 0 0 1 0-18Zm4.3 13.3c-.5 1-1.2 2-2 2.9a7.5 7.5 0 0 0 3.2-2.1l-.2-.2a6 6 0 0 0-1-.6Zm-8.6 0c-.5.2-.9.5-1.2.8.9 1 2 1.7 3.2 2a10 10 0 0 1-2-2.8Zm3.6-.8c-.8 0-1.6.1-2.2.3.5 1 1.2 1.9 2.1 2.7Zm1.5 0v3c.9-.8 1.6-1.7 2.1-2.7-.6-.2-1.4-.3-2.1-.3Zm-6-2.7H4.5c.2 1 .5 2.1 1 3h.3l1.3-1a10 10 0 0 1-.3-2Zm12.7 0h-2.3c0 .7-.1 1.4-.3 2l1.6 1.1c.5-1 .9-2 1-3.1Zm-3.8 0h-3V14c1 0 2 .1 2.7.4.2-.5.3-1 .3-1.6Zm-4.4 0h-3l.3 1.6c.8-.3 1.7-.4 2.7-.4v-1.3Zm-5.5-5c-.7 1-1.1 2.2-1.3 3.5h2.3c0-1 .2-1.8.5-2.6l-1.5-1Zm2.9 1.4v.1c-.2.6-.4 1.3-.4 2h3V9.4c-1 0-1.8-.1-2.6-.3Zm6.6 0h-.1l-2.4.3v1.8h3l-.5-2.1Zm3-1.4-.3.1-1.3.8c.3.8.5 1.6.5 2.6h2.3a7.5 7.5 0 0 0-1.3-3.5Zm-9 0 2 .2V5.5a9 9 0 0 0-2 2.2Zm3.5-2.3V8c.6 0 1.3 0 1.9-.2a9 9 0 0 0-2-2.3Zm-3-.7h-.1c-1.1.4-2.1 1-3 1.8l1.2.7a10 10 0 0 1 1.9-2.5Zm4.4 0 .1.1a10 10 0 0 1 1.8 2.4l1.1-.7a7.5 7.5 0 0 0-3-1.8Z\"/></svg>',\n    'line-height': '<svg width=\"24\" height=\"24\"><path d=\"M21 5a1 1 0 0 1 .1 2H13a1 1 0 0 1-.1-2H21zm0 4a1 1 0 0 1 .1 2H13a1 1 0 0 1-.1-2H21zm0 4a1 1 0 0 1 .1 2H13a1 1 0 0 1-.1-2H21zm0 4a1 1 0 0 1 .1 2H13a1 1 0 0 1-.1-2H21zM7 3.6l3.7 3.7a1 1 0 0 1-1.3 1.5h-.1L8 7.3v9.2l1.3-1.3a1 1 0 0 1 1.3 0h.1c.4.4.4 1 0 1.3v.1L7 20.4l-3.7-3.7a1 1 0 0 1 1.3-1.5h.1L6 16.7V7.4L4.7 8.7a1 1 0 0 1-1.3 0h-.1a1 1 0 0 1 0-1.3v-.1L7 3.6z\"/></svg>',\n    'line': '<svg width=\"24\" height=\"24\"><path d=\"m15 9-8 8H4v-3l8-8 3 3Zm1-1-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1ZM4 18h16v2H4v-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'link': '<svg width=\"24\" height=\"24\"><path d=\"M6.2 12.3a1 1 0 0 1 1.4 1.4l-2 2a2 2 0 1 0 2.6 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2Zm11.6-.6a1 1 0 0 1-1.4-1.4l2-2a2 2 0 1 0-2.6-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2Z\" fill-rule=\"nonzero\"/></svg>',\n    'list-bull-circle': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path d=\"M11 16a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM11 26a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM11 36a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z\" fill-rule=\"nonzero\"/><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/></g></svg>',\n    'list-bull-default': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><circle cx=\"11\" cy=\"14\" r=\"3\"/><circle cx=\"11\" cy=\"24\" r=\"3\"/><circle cx=\"11\" cy=\"34\" r=\"3\"/><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/></g></svg>',\n    'list-bull-square': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path d=\"M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z\"/><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/></g></svg>',\n    'list-num-default-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M37.4 17v-4.8h-.1l-1.5 1v-1.1l1.6-1.1h1.2v6zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z\"/></g></svg>',\n    'list-num-default': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2Zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7Zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5Zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7ZM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7Zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7Z\"/></g></svg>',\n    'list-num-lower-alpha-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7Zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6ZM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7ZM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4Zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3ZM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z\"/></g></svg>',\n    'list-num-lower-alpha': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6Zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7Zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4Zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3Zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7Zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-lower-greek-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8Zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4ZM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7ZM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22Zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3ZM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7ZM37.1 34.6 34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2Zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1ZM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-lower-greek': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4Zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8Zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7Zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3ZM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22Zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7Zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2Zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1Zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-lower-roman-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M32.9 16v-1.2h-1.3V16H33Zm0 10v-1.2h-1.3V26H33Zm0 10v-1.2h-1.3V36H33Z\"/><path fill-rule=\"nonzero\" d=\"M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z\"/></g></svg>',\n    'list-num-lower-roman': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M15.1 16v-1.2h1.3V16H15Zm0 10v-1.2h1.3V26H15Zm0 10v-1.2h1.3V36H15Z\"/><path fill-rule=\"nonzero\" d=\"M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z\"/></g></svg>',\n    'list-num-upper-alpha-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"m39.3 17-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3Zm-1.6-4.7-.7 2.3h1.6l-.8-2.3ZM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7Zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7Zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1Zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26ZM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2Zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-upper-alpha': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"m12.6 17-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3ZM11 12.3l-.7 2.3h1.6l-.8-2.3Zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7ZM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7ZM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1Zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26Zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2Zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-upper-roman-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M31.6 17v-1.2H33V17h-1.3Zm0 10v-1.2H33V27h-1.3Zm0 10v-1.2H33V37h-1.3Z\"/><path fill-rule=\"nonzero\" d=\"M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z\"/></g></svg>',\n    'list-num-upper-roman': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M15.1 17v-1.2h1.3V17H15Zm0 10v-1.2h1.3V27H15Zm0 10v-1.2h1.3V37H15Z\"/><path fill-rule=\"nonzero\" d=\"M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z\"/></g></svg>',\n    'lock': '<svg width=\"24\" height=\"24\"><path d=\"M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3ZM10 8v3h4V8a1 1 0 0 0-.3-.7A1 1 0 0 0 13 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7Z\" fill-rule=\"evenodd\"/></svg>',\n    'ltr': '<svg width=\"24\" height=\"24\"><path d=\"M11 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 7.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L11 5ZM4.4 16.2 6.2 15l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6Z\" fill-rule=\"evenodd\"/></svg>',\n    'minus': '<svg width=\"24\" height=\"24\"><path d=\"M19 11a1 1 0 0 1 .1 2H5a1 1 0 0 1-.1-2H19Z\"/></svg>',\n    'more-drawer': '<svg width=\"24\" height=\"24\"><path d=\"M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Z\" fill-rule=\"nonzero\"/></svg>',\n    'new-document': '<svg width=\"24\" height=\"24\"><path d=\"M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3ZM17 19H7V5h6v4h4v10Z\" fill-rule=\"nonzero\"/></svg>',\n    'new-tab': '<svg width=\"24\" height=\"24\"><path d=\"m15 13 2-2v8H5V7h8l-2 2H7v8h8v-4Zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19Z\" fill-rule=\"evenodd\"/></svg>',\n    'non-breaking': '<svg width=\"24\" height=\"24\"><path d=\"M11 11H8a1 1 0 1 1 0-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-3Zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1Z\" fill-rule=\"evenodd\"/></svg>',\n    'notice': '<svg width=\"24\" height=\"24\"><path d=\"M15.5 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7ZM13 17v-2h-2v2h2Zm0-4V7h-2v6h2Z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"/></svg>',\n    'ordered-list-rtl': '<svg width=\"24\" height=\"24\"><path d=\"M6 17h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2Zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2Zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2Zm13-1v3.5a.5.5 0 1 1-1 0V5h-.5a.5.5 0 1 1 0-1H19Zm-1 8.8.2.2h1.3a.5.5 0 1 1 0 1h-1.6a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2h-1.3a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3Zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 0 1 0-1h1.2a.3.3 0 1 0 0-.6h-1.3a.4.4 0 1 1 0-.8h1.3a.3.3 0 0 0 0-.6h-1.2a.5.5 0 1 1 0-1H19c.6 0 1 .4 1 1Z\" fill-rule=\"evenodd\"/></svg>',\n    'ordered-list': '<svg width=\"24\" height=\"24\"><path d=\"M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 1 1 0-2ZM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.5V5h-.5a.5.5 0 0 1 0-1H6Zm-1 8.8.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2H4.5a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3ZM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 0 1 0-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 1 1 0-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 1 1 0-1H6c.6 0 1 .4 1 1Z\" fill-rule=\"evenodd\"/></svg>',\n    'orientation': '<svg width=\"24\" height=\"24\"><path d=\"M7.3 6.4 1 13l6.4 6.5 6.5-6.5-6.5-6.5ZM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7ZM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 0 1 0-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 1 1-4.3 16.9l1.5-1.5A7 7 0 1 0 13 6h-1Z\" fill-rule=\"nonzero\"/></svg>',\n    'outdent': '<svg width=\"24\" height=\"24\"><path d=\"M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2Zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2Zm1.6-3.8a1 1 0 0 1-1.2 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 0 1 1.2 1.6L6.8 12l1.8 1.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'page-break': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2Zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 0 1 0-2Zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2ZM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1ZM6 22a1 1 0 0 1-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5H7v5c0 .6-.4 1-1 1Z\"/></g></svg>',\n    'paragraph': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M10 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 6.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L10 5Z\"/></svg>',\n    'paste-column-after': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0 1 12 1Zm8 7v12h-6V8h6Zm-1.5 1.5h-3v9h3v-9ZM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z\"/></svg>',\n    'paste-column-before': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v2H4V5c0-1 .8-2 1.9-2H9.2A3 3 0 0 1 12 1Zm-2 7v12H4V8h6ZM8.5 9.5h-3v9h3v-9ZM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z\"/></svg>',\n    'paste-row-after': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0 1 12 1Zm10 11v5H8v-5h14Zm-1.5 1.5h-11v2h11v-2ZM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z\"/></svg>',\n    'paste-row-before': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0 1 12 1Zm10 7v5H8V8h14Zm-1.5 1.5h-11v2h11v-2ZM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z\"/></svg>',\n    'paste-text': '<svg width=\"24\" height=\"24\"><path d=\"M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9ZM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1Zm1.5-9.5v9h9v-9h-9ZM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1Zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2Z\" fill-rule=\"nonzero\"/></svg>',\n    'paste': '<svg width=\"24\" height=\"24\"><path d=\"M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9ZM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1Zm1.5-9.5v9h9v-9h-9ZM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1Z\" fill-rule=\"nonzero\"/></svg>',\n    'permanent-pen': '<svg width=\"24\" height=\"24\"><path d=\"M10.5 17.5 8 20H3v-3l3.5-3.5a2 2 0 0 1 0-3L14 3l1 1-7.3 7.3a1 1 0 0 0 0 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 0 1-2.8 0l-.1-.1Z\" fill-rule=\"nonzero\"/></svg>',\n    'plus': '<svg width=\"24\" height=\"24\"><path d=\"M12 4c.5 0 1 .4 1 .9V11h6a1 1 0 0 1 .1 2H13v6a1 1 0 0 1-2 .1V13H5a1 1 0 0 1-.1-2H11V5c0-.6.4-1 1-1Z\"/></svg>',\n    'preferences': '<svg width=\"24\" height=\"24\"><path d=\"m20.1 13.5-1.9.2a5.8 5.8 0 0 1-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 0 1-1.4 0l-1.5-1.2a6.2 6.2 0 0 1-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 0 1-1-.9l-.2-1.9a5.8 5.8 0 0 1-1.5-.6l-1.5 1.2a1 1 0 0 1-1.4 0l-.7-.7a1 1 0 0 1 0-1.4l1.2-1.5a6.2 6.2 0 0 1-.6-1.5l-1.9-.2a1 1 0 0 1-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 0 1 .6-1.5L5.2 7.3a1 1 0 0 1 0-1.4l.7-.7a1 1 0 0 1 1.4 0l1.5 1.2a6.2 6.2 0 0 1 1.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 0 1 1.5.6l1.5-1.2a1 1 0 0 1 1.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 0 1 .6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1ZM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\" fill-rule=\"evenodd\"/></svg>',\n    'preview': '<svg width=\"24\" height=\"24\"><path d=\"M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 0 0 2.1-2.8 15.7 15.7 0 0 0-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 0 0-6.7 3.2A16.2 16.2 0 0 0 3.2 12c0 .2.2.3.3.5Zm-2.4-1 .7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 0 1 2.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 0 1-2.8-3.7 1 1 0 0 1 0-1Zm12-3.3a2 2 0 1 0 2.7 2.6 4 4 0 1 1-2.6-2.6Z\" fill-rule=\"nonzero\"/></svg>',\n    'print': '<svg width=\"24\" height=\"24\"><path d=\"M18 8H6a3 3 0 0 0-3 3v6h2v3h14v-3h2v-6a3 3 0 0 0-3-3Zm-1 10H7v-4h10v4Zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5Zm.5-8H6v2h12V5Z\" fill-rule=\"nonzero\"/></svg>',\n    'quote': '<svg width=\"24\" height=\"24\"><path d=\"M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3Zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3Z\" fill-rule=\"nonzero\"/></svg>',\n    'redo': '<svg width=\"24\" height=\"24\"><path d=\"M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 1 1-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 1 1 1.4-1.4l5 5a1 1 0 0 1 0 1.4l-5 5a1 1 0 0 1-1.4-1.4l3.3-3.3Z\" fill-rule=\"nonzero\"/></svg>',\n    'reload': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"m5 22.1-1.2-4.7v-.2a1 1 0 0 1 1-1l5 .4a1 1 0 1 1-.2 2l-2.2-.2a7.8 7.8 0 0 0 8.4.2 7.5 7.5 0 0 0 3.5-6.4 1 1 0 1 1 2 0 9.5 9.5 0 0 1-4.5 8 9.9 9.9 0 0 1-10.2 0l.4 1.4a1 1 0 1 1-2 .5ZM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 0 0-9.5-1 7.5 7.5 0 0 0-3.6 7 1 1 0 0 1-2 0 9.5 9.5 0 0 1 4.5-8.6 10 10 0 0 1 10.9.3l-.3-1a1 1 0 0 1 2-.5l1.1 4.8a1 1 0 0 1-1 1.2l-5-.4a1 1 0 0 1-.9-1Z\"/></g></svg>',\n    'remove-formatting': '<svg width=\"24\" height=\"24\"><path d=\"M13.2 6a1 1 0 0 1 0 .2l-2.6 10a1 1 0 0 1-1 .8h-.2a.8.8 0 0 1-.8-1l2.6-10H8a1 1 0 1 1 0-2h9a1 1 0 0 1 0 2h-3.8ZM5 18h7a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2Zm13 1.5L16.5 18 15 19.5a.7.7 0 0 1-1-1l1.5-1.5-1.5-1.5a.7.7 0 0 1 1-1l1.5 1.5 1.5-1.5a.7.7 0 0 1 1 1L17.5 17l1.5 1.5a.7.7 0 0 1-1 1Z\" fill-rule=\"evenodd\"/></svg>',\n    'remove': '<svg width=\"24\" height=\"24\"><path d=\"M16 7h3a1 1 0 0 1 0 2h-1v9a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V9H5a1 1 0 1 1 0-2h3V6a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1Zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 0 0-1 1v1h4Zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9Zm-7 3a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4Zm4 0a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4Z\" fill-rule=\"nonzero\"/></svg>',\n    'resize-handle': '<svg width=\"10\" height=\"10\"><g fill-rule=\"nonzero\"><path d=\"M8.1 1.1A.5.5 0 1 1 9 2l-7 7A.5.5 0 1 1 1 8l7-7ZM8.1 5.1A.5.5 0 1 1 9 6l-3 3A.5.5 0 1 1 5 8l3-3Z\"/></g></svg>',\n    'resize': '<svg width=\"24\" height=\"24\"><path d=\"M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-6a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3A1 1 0 0 1 4 11V5Z\" fill-rule=\"evenodd\"/></svg>',\n    'restore-draft': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1Z\"/><path d=\"M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10Z\" fill-rule=\"nonzero\"/></g></svg>',\n    'rotate-left': '<svg width=\"24\" height=\"24\"><path d=\"M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10Z\" fill-rule=\"nonzero\"/></svg>',\n    'rotate-right': '<svg width=\"24\" height=\"24\"><path d=\"M20 8V5a1 1 0 0 1 2 0v6c0 .6-.4 1-1 1h-6a1 1 0 0 1 0-2h4.3L16 7A7.2 7.2 0 0 0 7.7 6a7 7 0 0 0 3 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 0 1 1.4 1.5A9.2 9.2 0 0 1 2.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8Z\" fill-rule=\"nonzero\"/></svg>',\n    'rtl': '<svg width=\"24\" height=\"24\"><path d=\"M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 4.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L8 5Zm12 11.2a1 1 0 1 1-1 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 1 1 1 1.6L18.4 15l1.8 1.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'save': '<svg width=\"24\" height=\"24\"><path d=\"M5 16h14a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2Zm0 2v2h14v-2H5Zm10 0h2v2h-2v-2Zm-4-6.4L8.7 9.3a1 1 0 1 0-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 1 0-1.4-1.4L13 11.6V4a1 1 0 0 0-2 0v7.6Z\" fill-rule=\"nonzero\"/></svg>',\n    'search': '<svg width=\"24\" height=\"24\"><path d=\"M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3Zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z\" fill-rule=\"nonzero\"/></svg>',\n    'select-all': '<svg width=\"24\" height=\"24\"><path d=\"M3 5h2V3a2 2 0 0 0-2 2Zm0 8h2v-2H3v2Zm4 8h2v-2H7v2ZM3 9h2V7H3v2Zm10-6h-2v2h2V3Zm6 0v2h2a2 2 0 0 0-2-2ZM5 21v-2H3c0 1.1.9 2 2 2Zm-2-4h2v-2H3v2ZM9 3H7v2h2V3Zm2 18h2v-2h-2v2Zm8-8h2v-2h-2v2Zm0 8a2 2 0 0 0 2-2h-2v2Zm0-12h2V7h-2v2Zm0 8h2v-2h-2v2Zm-4 4h2v-2h-2v2Zm0-16h2V3h-2v2ZM7 17h10V7H7v10Zm2-8h6v6H9V9Z\" fill-rule=\"nonzero\"/></svg>',\n    'selected': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Zm3.6 10.9L7 12.3a.7.7 0 0 0-1 1L9.6 17 18 8.6a.7.7 0 0 0 0-1 .7.7 0 0 0-1 0l-7.4 7.3Z\"/></svg>',\n    'send': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"m13.3 22 7-18.3-18.3 7L9 15l4.3 7ZM18 6.8l-.7-.7L9.4 14l.7.7L18 6.8Z\"/></svg>',\n    'settings': '<svg width=\"24\" height=\"24\"><path d=\"M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V8H5a1 1 0 1 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6ZM8 8h2V6H8v2Zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V13H5a1 1 0 0 1 0-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6ZM14 13h2v-2h-2v2Zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V18H5a1 1 0 0 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6ZM8 18h2v-2H8v2Z\" fill-rule=\"evenodd\"/></svg>',\n    'sharpen': '<svg width=\"24\" height=\"24\"><path d=\"m16 6 4 4-8 9-8-9 4-4h8Zm-4 10.2 5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'sourcecode': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 0 1 0-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7ZM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 0 0-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7Z\"/></g></svg>',\n    'spell-check': '<svg width=\"24\" height=\"24\"><path d=\"M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6Zm0-3v2h2V5H6Zm13 0h-3v5h3v1h-3a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1Zm-5 1.5-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5ZM13 10V8h-2v2h2Zm0-3V5h-2v2h2Zm3 5 1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12Z\" fill-rule=\"evenodd\"/></svg>',\n    'strike-through': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 0 1 7 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1Z\"/><path d=\"M5 11h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2Z\" fill-rule=\"nonzero\"/></g></svg>',\n    'subscript': '<svg width=\"24\" height=\"24\"><path d=\"m10.4 10 4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10ZM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 0 0-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 0 1-1.3 1.3l-.6.6h2.6V19Z\" fill-rule=\"nonzero\"/></svg>',\n    'superscript': '<svg width=\"24\" height=\"24\"><path d=\"M15 9.4 10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4Zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11Z\" fill-rule=\"nonzero\"/></svg>',\n    'table-caption': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><rect width=\"12\" height=\"2\" x=\"3\" y=\"4\" rx=\"1\"/><path d=\"M19 8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-8c0-1.1.9-2 2-2h14ZM5 15v3h6v-3H5Zm14 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z\"/></g></svg>',\n    'table-cell-classes': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M13 4v9H3V6c0-1.1.9-2 2-2h8Zm-2 2H5v5h6V6Z\"/><path fill-rule=\"nonzero\" d=\"M13 4h6a2 2 0 0 1 2 2v7h-8v-2h6V6h-6V4Z\" opacity=\".2\"/><path d=\"m18 20-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3.1.2-2.4 2 .7 3z\"/><path fill-rule=\"nonzero\" d=\"M3 13v5c0 1.1.9 2 2 2h8v-7h-2v5H5v-5H3Z\" opacity=\".2\"/></g></svg>',\n    'table-cell-properties': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 9H5v5h6v-5Zm8 0h-6v5h6v-5Zm-8-7H5v5h6V6Z\"/></svg>',\n    'table-cell-select-all': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 2H5v12h14V6Z\"/><path d=\"M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2Z\" opacity=\".2\"/></g></svg>',\n    'table-cell-select-inner': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 2H5v12h14V6Z\" opacity=\".2\"/><path d=\"M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2Z\"/></g></svg>',\n    'table-classes': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v7h-8v7H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 9H5v5h6v-5Zm8-7h-6v5h6V6Zm-8 0H5v5h6V6Z\"/><path d=\"m18 20-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3.1.2-2.4 2 .7 3z\"/></g></svg>',\n    'table-delete-column': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2Zm.3.5 1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5Z\"/></svg>',\n    'table-delete-row': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6Zm-4.7 1.8 1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3Z\"/></svg>',\n    'table-delete-table': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 6v12h14V6H5Z\"/><path d=\"m14.4 8.6 1.1 1-2.4 2.4 2.4 2.4-1.1 1.1-2.4-2.4-2.4 2.4-1-1.1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z\"/></g></svg>',\n    'table-insert-column-after': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M20 4c.6 0 1 .4 1 1v2a1 1 0 0 1-2 0V6h-8v12h8v-1a1 1 0 0 1 2 0v2c0 .5-.4 1-.9 1H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h15ZM9 13H5v5h4v-5Zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H17v2a1 1 0 0 1-2 .1V13h-2a1 1 0 0 1-.1-2H15V9c0-.6.4-1 1-1ZM9 6H5v5h4V6Z\"/></svg>',\n    'table-insert-column-before': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a1 1 0 0 1-1-1v-2a1 1 0 0 1 2 0v1h8V6H5v1a1 1 0 1 1-2 0V5c0-.6.4-1 1-1h15Zm0 9h-4v5h4v-5ZM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H9v2a1 1 0 0 1-2 .1V13H5a1 1 0 0 1-.1-2H7V9c0-.6.4-1 1-1Zm11-2h-4v5h4V6Z\"/></svg>',\n    'table-insert-row-above': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M6 4a1 1 0 1 1 0 2H5v6h14V6h-1a1 1 0 0 1 0-2h2c.6 0 1 .4 1 1v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5c0-.6.4-1 1-1h2Zm5 10H5v4h6v-4Zm8 0h-6v4h6v-4ZM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 .1V8H9a1 1 0 0 1 0-2h2V4c0-.6.4-1 1-1Z\"/></svg>',\n    'table-insert-row-after': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 0 1 .1 2H13v2a1 1 0 0 1-2 .1V18H9a1 1 0 0 1-.1-2H11v-2c0-.6.4-1 1-1Zm6 7a1 1 0 0 1 0-2h1v-6H5v6h1a1 1 0 0 1 0 2H4a1 1 0 0 1-1-1V6c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v13c0 .5-.4 1-.9 1H18ZM11 6H5v4h6V6Zm8 0h-6v4h6V6Z\"/></svg>',\n    'table-left-header': '<svg width=\"24\" height=\"24\"><path d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 9h-4v5h4v-5Zm-6 0H9v5h4v-5Zm0-7H9v5h4V6Zm6 0h-4v5h4V6Z\"/></svg>',\n    'table-merge-cells': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 15.5V18h3v-2.5H5Zm14-5h-9V18h9v-7.5ZM19 6h-4v2.5h4V6ZM8 6H5v2.5h3V6Zm5 0h-3v2.5h3V6Zm-8 7.5h3v-3H5v3Z\"/></svg>',\n    'table-row-numbering-rtl': '<svg width=\"24\" height=\"24\"><path d=\"M6 4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H6Zm0 12h8v3H6v-3Zm11 0c.6 0 1 .4 1 1v1a1 1 0 0 1-2 0v-1c0-.6.4-1 1-1ZM6 11h8v3H6v-3Zm11 0c.6 0 1 .4 1 1v1a1 1 0 0 1-2 0v-1c0-.6.4-1 1-1ZM6 6h8v3H6V6Zm11 0c.6 0 1 .4 1 1v1a1 1 0 1 1-2 0V7c0-.6.4-1 1-1Z\"/></svg>',\n    'table-row-numbering': '<svg width=\"24\" height=\"24\"><path d=\"M18 4a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h12Zm0 12h-8v3h8v-3ZM7 16a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1c0-.6-.4-1-1-1Zm11-5h-8v3h8v-3ZM7 11a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1c0-.6-.4-1-1-1Zm11-5h-8v3h8V6ZM7 6a1 1 0 0 0-1 1v1a1 1 0 1 0 2 0V7c0-.6-.4-1-1-1Z\"/></svg>',\n    'table-row-properties': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 15v3h6v-3H5Zm14 0h-6v3h6v-3Zm0-9h-6v3h6V6ZM5 9h6V6H5v3Z\"/></svg>',\n    'table-split-cells': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM8 15.5H5V18h3v-2.5Zm11-5h-9V18h9v-7.5Zm-2.5 1 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2Zm-8.5-1H5v3h3v-3ZM19 6h-4v2.5h4V6ZM8 6H5v2.5h3V6Zm5 0h-3v2.5h3V6Z\"/></svg>',\n    'table-top-header': '<svg width=\"24\" height=\"24\"><path d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z\"/></svg>',\n    'table': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 14v4h6v-4H5Zm14 0h-6v4h6v-4Zm0-6h-6v4h6V8ZM5 12h6V8H5v4Z\"/></svg>',\n    'template-add': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9 12v4H5a2 2 0 0 0-2 2v3h9.3a6 6 0 0 1-.3-2H5v-1h7a6 6 0 0 1 .8-2H11v-5l-.8-.6a3 3 0 1 1 3.6 0l-.8.6v4.7a6 6 0 0 1 2-1.9V12a5 5 0 1 0-6 0Z\"/><path d=\"M18 15c.5 0 1 .4 1 .9V18h2a1 1 0 0 1 .1 2H19v2a1 1 0 0 1-2 .1V20h-2a1 1 0 0 1-.1-2H17v-2c0-.6.4-1 1-1Z\"/></svg>',\n    'template': '<svg width=\"24\" height=\"24\"><path d=\"M19 19v-1H5v1h14ZM9 16v-4a5 5 0 1 1 6 0v4h4a2 2 0 0 1 2 2v3H3v-3c0-1.1.9-2 2-2h4Zm4 0v-5l.8-.6a3 3 0 1 0-3.6 0l.8.6v5h2Z\" fill-rule=\"nonzero\"/></svg>',\n    'temporary-placeholder': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M9 7.6V6h2.5V4.5a.5.5 0 1 1 1 0V6H15v1.6a8 8 0 1 1-6 0Zm-2.6 5.3a.5.5 0 0 0 .3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 0 1 3.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 0 0-4.1 3.7Z\"/><circle cx=\"14\" cy=\"4\" r=\"1\"/><circle cx=\"12\" cy=\"2\" r=\"1\"/><circle cx=\"10\" cy=\"4\" r=\"1\"/></g></svg>',\n    'text-color': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path class=\"tox-icon-text-color__color\" d=\"M3 18h18v3H3z\"/><path d=\"M8.7 16h-.8a.5.5 0 0 1-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 0 1-.5.6h-.8a.5.5 0 0 1-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4Zm2.6-7.6-.6 2a.5.5 0 0 0 .5.6h1.6a.5.5 0 0 0 .5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4Z\"/></g></svg>',\n    'text-size-decrease': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14 5a1 1 0 1 1 0 2h-4v11a1 1 0 1 1-2 0V7H4a1 1 0 0 1 0-2h10ZM14 12a1 1 0 1 0 0 2h6a1 1 0 1 0 0-2h-6Z\"/></svg>',\n    'text-size-increase': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14 5a1 1 0 1 1 0 2h-4v11a1 1 0 1 1-2 0V7H4a1 1 0 0 1 0-2h10ZM17 9a1 1 0 0 0-1 1v2h-2a1 1 0 1 0 0 2h2v2a1 1 0 1 0 2 0v-2h2a1 1 0 1 0 0-2h-2v-2c0-.6-.4-1-1-1Z\"/></svg>',\n    'toc': '<svg width=\"24\" height=\"24\"><path d=\"M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2Zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2Zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2Zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2Zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'translate': '<svg width=\"24\" height=\"24\"><path d=\"m12.7 14.3-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 0 1 0-1l3.1-3A12.4 12.4 0 0 1 6.7 9H8a10.1 10.1 0 0 0 1.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 1 1 0-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 0 1-1 2.4 13.5 13.5 0 0 1-1.7 2.3l1.9 1.8Zm4.3-3 2.7 7.3a.5.5 0 0 1-.4.7 1 1 0 0 1-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 0 1-1 .7.5.5 0 0 1-.4-.7l2.7-7.4a1 1 0 0 1 2 0Zm-2.2 4.4h2.4L16 12.5l-1.2 3.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'typography': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17 5a1 1 0 1 1 0 2h-4v11a1 1 0 1 1-2 0V7H7a1 1 0 0 1 0-2h10Z\"/><path d=\"m17.5 14 .8-1.7 1.7-.8-1.7-.8-.8-1.7-.8 1.7-1.7.8 1.7.8.8 1.7ZM7 14l1 2 2 1-2 1-1 2-1-2-2-1 2-1 1-2Z\"/></svg>',\n    'underline': '<svg width=\"24\" height=\"24\"><path d=\"M16 5c.6 0 1 .4 1 1v5.5a4 4 0 0 1-.4 1.8l-1 1.4a5.3 5.3 0 0 1-5.5 1 5 5 0 0 1-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 0 1-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 0 0 2.2.8 3.4 3.4 0 0 0 2.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1ZM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'undo': '<svg width=\"24\" height=\"24\"><path d=\"M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 0 1-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 1 1-1.4 1.4l-5-5a1 1 0 0 1 0-1.4l5-5a1 1 0 0 1 1.4 1.4L6.4 8Z\" fill-rule=\"nonzero\"/></svg>',\n    'unlink': '<svg width=\"24\" height=\"24\"><path d=\"M6.2 12.3a1 1 0 0 1 1.4 1.4l-2 2a2 2 0 1 0 2.6 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2Zm11.6-.6a1 1 0 0 1-1.4-1.4l2.1-2a2 2 0 1 0-2.7-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2ZM7.6 6.3a.8.8 0 0 1-1 1.1L3.3 4.2a.7.7 0 1 1 1-1l3.2 3.1ZM5.1 8.6a.8.8 0 0 1 0 1.5H3a.8.8 0 0 1 0-1.5H5Zm5-3.5a.8.8 0 0 1-1.5 0V3a.8.8 0 0 1 1.5 0V5Zm6 11.8a.8.8 0 0 1 1-1l3.2 3.2a.8.8 0 0 1-1 1L16 17Zm-2.2 2a.8.8 0 0 1 1.5 0V21a.8.8 0 0 1-1.5 0V19Zm5-3.5a.7.7 0 1 1 0-1.5H21a.8.8 0 0 1 0 1.5H19Z\" fill-rule=\"nonzero\"/></svg>',\n    'unlock': '<svg width=\"24\" height=\"24\"><path d=\"M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 0 0-.3-.7A1 1 0 0 0 16 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2Z\" fill-rule=\"evenodd\"/></svg>',\n    'unordered-list': '<svg width=\"24\" height=\"24\"><path d=\"M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2ZM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1Zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1Zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1Z\" fill-rule=\"evenodd\"/></svg>',\n    'unselected': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Zm0 1a1 1 0 0 0-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6Z\"/></svg>',\n    'upload': '<svg width=\"24\" height=\"24\"><path d=\"M18 19v-2a1 1 0 0 1 2 0v3c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 2 0v2h12ZM11 6.4 8.7 8.7a1 1 0 0 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 1 1-1.4 1.4L13 6.4V16a1 1 0 0 1-2 0V6.4Z\" fill-rule=\"nonzero\"/></svg>',\n    'user': '<svg width=\"24\" height=\"24\"><path d=\"M12 24a12 12 0 1 1 0-24 12 12 0 0 1 0 24Zm-8.7-5.3a11 11 0 0 0 17.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7ZM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13Z\" fill-rule=\"nonzero\"/></svg>',\n    'vertical-align': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><rect width=\"18\" height=\"2\" x=\"3\" y=\"11\" rx=\"1\"/><path d=\"M12 2c.6 0 1 .4 1 1v4l2-1.3a1 1 0 0 1 1.2 1.5l-.1.1-4.1 3-4-3a1 1 0 0 1 1-1.7l2 1.5V3c0-.6.4-1 1-1zm0 11.8 4 2.9a1 1 0 0 1-1 1.7l-2-1.5V21c0 .5-.4 1-.9 1H12a1 1 0 0 1-1-1v-4l-2 1.3a1 1 0 0 1-1.2-.1l-.1-.1a1 1 0 0 1 .1-1.3l.1-.1 4.1-3z\"/></g></svg>',\n    'visualblocks': '<svg width=\"24\" height=\"24\"><path d=\"M9 19v2H7v-2h2Zm-4 0v2a2 2 0 0 1-2-2h2Zm8 0v2h-2v-2h2Zm8 0a2 2 0 0 1-2 2v-2h2Zm-4 0v2h-2v-2h2ZM15 7a1 1 0 0 1 0 2v7a1 1 0 0 1-2 0V9h-1v7a1 1 0 0 1-2 0v-4a2.5 2.5 0 0 1-.2-5H15ZM5 15v2H3v-2h2Zm16 0v2h-2v-2h2ZM5 11v2H3v-2h2Zm16 0v2h-2v-2h2ZM5 7v2H3V7h2Zm16 0v2h-2V7h2ZM5 3v2H3c0-1.1.9-2 2-2Zm8 0v2h-2V3h2Zm6 0a2 2 0 0 1 2 2h-2V3ZM9 3v2H7V3h2Zm8 0v2h-2V3h2Z\" fill-rule=\"evenodd\"/></svg>',\n    'visualchars': '<svg width=\"24\" height=\"24\"><path d=\"M10 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 6.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L10 5Z\" fill-rule=\"evenodd\"/></svg>',\n    'warning': '<svg width=\"24\" height=\"24\"><path d=\"M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6ZM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3Zm.7-3 .3-4a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7l.3 4h1.4Z\" fill-rule=\"evenodd\"/></svg>',\n    'zoom-in': '<svg width=\"24\" height=\"24\"><path d=\"M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3Zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12Zm-1-9a1 1 0 0 1 2 0v6a1 1 0 0 1-2 0V8Zm-2 4a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8Z\" fill-rule=\"nonzero\"/></svg>',\n    'zoom-out': '<svg width=\"24\" height=\"24\"><path d=\"M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3Zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12Zm-3-5a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8Z\" fill-rule=\"nonzero\"/></svg>',\n  }\n});/**\n * TinyMCE version 6.8.4 (2024-06-19)\n */\n\n(function () {\n    'use strict';\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.ModelManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq$2 = t => a => t === a;\n    const isString = isType$1('string');\n    const isObject = isType$1('object');\n    const isArray = isType$1('array');\n    const isNull = eq$2(null);\n    const isBoolean = isSimpleType('boolean');\n    const isUndefined = eq$2(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n\n    const noop = () => {};\n    const compose = (fa, fb) => {\n      return (...args) => {\n        return fa(fb.apply(null, args));\n      };\n    };\n    const compose1 = (fbc, fab) => a => fbc(fab(a));\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const identity = x => {\n      return x;\n    };\n    const tripleEquals = (a, b) => {\n      return a === b;\n    };\n    function curry(fn, ...initialArgs) {\n      return (...restArgs) => {\n        const all = initialArgs.concat(restArgs);\n        return fn.apply(null, all);\n      };\n    }\n    const not = f => t => !f(t);\n    const die = msg => {\n      return () => {\n        throw new Error(msg);\n      };\n    };\n    const apply = f => {\n      return f();\n    };\n    const never = constant(false);\n    const always = constant(true);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const nativeSlice = Array.prototype.slice;\n    const nativeIndexOf = Array.prototype.indexOf;\n    const nativePush = Array.prototype.push;\n    const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n    const contains$2 = (xs, x) => rawIndexOf(xs, x) > -1;\n    const exists = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const range$1 = (num, f) => {\n      const r = [];\n      for (let i = 0; i < num; i++) {\n        r.push(f(i));\n      }\n      return r;\n    };\n    const map$1 = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$2 = (xs, f) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const eachr = (xs, f) => {\n      for (let i = xs.length - 1; i >= 0; i--) {\n        const x = xs[i];\n        f(x, i);\n      }\n    };\n    const partition = (xs, pred) => {\n      const pass = [];\n      const fail = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        const arr = pred(x, i) ? pass : fail;\n        arr.push(x);\n      }\n      return {\n        pass,\n        fail\n      };\n    };\n    const filter$2 = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    const foldr = (xs, f, acc) => {\n      eachr(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const foldl = (xs, f, acc) => {\n      each$2(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const findUntil = (xs, pred, until) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(x);\n        } else if (until(x, i)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const find$1 = (xs, pred) => {\n      return findUntil(xs, pred, never);\n    };\n    const findIndex = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(i);\n        }\n      }\n      return Optional.none();\n    };\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const bind$2 = (xs, f) => flatten(map$1(xs, f));\n    const forall = (xs, pred) => {\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        const x = xs[i];\n        if (pred(x, i) !== true) {\n          return false;\n        }\n      }\n      return true;\n    };\n    const reverse = xs => {\n      const r = nativeSlice.call(xs, 0);\n      r.reverse();\n      return r;\n    };\n    const mapToObject = (xs, f) => {\n      const r = {};\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        r[String(x)] = f(x, i);\n      }\n      return r;\n    };\n    const sort$1 = (xs, comparator) => {\n      const copy = nativeSlice.call(xs, 0);\n      copy.sort(comparator);\n      return copy;\n    };\n    const get$d = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get$d(xs, 0);\n    const last$2 = xs => get$d(xs, xs.length - 1);\n    const findMap = (arr, f) => {\n      for (let i = 0; i < arr.length; i++) {\n        const r = f(arr[i], i);\n        if (r.isSome()) {\n          return r;\n        }\n      }\n      return Optional.none();\n    };\n\n    const keys = Object.keys;\n    const hasOwnProperty = Object.hasOwnProperty;\n    const each$1 = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const map = (obj, f) => {\n      return tupleMap(obj, (x, i) => ({\n        k: i,\n        v: f(x, i)\n      }));\n    };\n    const tupleMap = (obj, f) => {\n      const r = {};\n      each$1(obj, (x, i) => {\n        const tuple = f(x, i);\n        r[tuple.k] = tuple.v;\n      });\n      return r;\n    };\n    const objAcc = r => (x, i) => {\n      r[i] = x;\n    };\n    const internalFilter = (obj, pred, onTrue, onFalse) => {\n      each$1(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const filter$1 = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\n    const mapToArray = (obj, f) => {\n      const r = [];\n      each$1(obj, (value, name) => {\n        r.push(f(value, name));\n      });\n      return r;\n    };\n    const values = obj => {\n      return mapToArray(obj, identity);\n    };\n    const get$c = (obj, key) => {\n      return has$1(obj, key) ? Optional.from(obj[key]) : Optional.none();\n    };\n    const has$1 = (obj, key) => hasOwnProperty.call(obj, key);\n    const hasNonNullableKey = (obj, key) => has$1(obj, key) && obj[key] !== undefined && obj[key] !== null;\n    const isEmpty = r => {\n      for (const x in r) {\n        if (hasOwnProperty.call(r, x)) {\n          return false;\n        }\n      }\n      return true;\n    };\n\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve$2 = (p, scope) => {\n      const parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve$2(name, scope);\n    };\n    const getOrDie = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve$2('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf(x).constructor.name));\n    };\n\n    const COMMENT = 8;\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const name = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n    const type = element => element.dom.nodeType;\n    const isType = t => element => type(element) === t;\n    const isComment = element => type(element) === COMMENT || name(element) === '#comment';\n    const isHTMLElement = element => isElement(element) && isPrototypeOf(element.dom);\n    const isElement = isType(ELEMENT);\n    const isText = isType(TEXT);\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n    const isTag = tag => e => isElement(e) && name(e) === tag;\n\n    const rawSet = (dom, key, value) => {\n      if (isString(value) || isBoolean(value) || isNumber(value)) {\n        dom.setAttribute(key, value + '');\n      } else {\n        console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    const set$2 = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const setAll$1 = (element, attrs) => {\n      const dom = element.dom;\n      each$1(attrs, (v, k) => {\n        rawSet(dom, k, v);\n      });\n    };\n    const setOptions = (element, attrs) => {\n      each$1(attrs, (v, k) => {\n        v.fold(() => {\n          remove$7(element, k);\n        }, value => {\n          rawSet(element.dom, k, value);\n        });\n      });\n    };\n    const get$b = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const getOpt = (element, key) => Optional.from(get$b(element, key));\n    const remove$7 = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n    const clone$2 = element => foldl(element.dom.attributes, (acc, attr) => {\n      acc[attr.name] = attr.value;\n      return acc;\n    }, {});\n\n    const fromHtml$1 = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom$1(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom$1(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom$1(node);\n    };\n    const fromDom$1 = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return {\n        dom: node\n      };\n    };\n    const fromPoint$1 = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$1);\n    const SugarElement = {\n      fromHtml: fromHtml$1,\n      fromTag,\n      fromText,\n      fromDom: fromDom$1,\n      fromPoint: fromPoint$1\n    };\n\n    const is$2 = (element, selector) => {\n      const dom = element.dom;\n      if (dom.nodeType !== ELEMENT) {\n        return false;\n      } else {\n        const elem = dom;\n        if (elem.matches !== undefined) {\n          return elem.matches(selector);\n        } else if (elem.msMatchesSelector !== undefined) {\n          return elem.msMatchesSelector(selector);\n        } else if (elem.webkitMatchesSelector !== undefined) {\n          return elem.webkitMatchesSelector(selector);\n        } else if (elem.mozMatchesSelector !== undefined) {\n          return elem.mozMatchesSelector(selector);\n        } else {\n          throw new Error('Browser lacks native selectors');\n        }\n      }\n    };\n    const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;\n    const all$1 = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? [] : map$1(base.querySelectorAll(selector), SugarElement.fromDom);\n    };\n    const one = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n    };\n\n    const eq$1 = (e1, e2) => e1.dom === e2.dom;\n    const contains$1 = (e1, e2) => {\n      const d1 = e1.dom;\n      const d2 = e2.dom;\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n    const is$1 = is$2;\n\n    const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n    const documentElement = element => SugarElement.fromDom(documentOrOwner(element).dom.documentElement);\n    const defaultView = element => SugarElement.fromDom(documentOrOwner(element).dom.defaultView);\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const parentElement = element => Optional.from(element.dom.parentElement).map(SugarElement.fromDom);\n    const parents = (element, isRoot) => {\n      const stop = isFunction(isRoot) ? isRoot : never;\n      let dom = element.dom;\n      const ret = [];\n      while (dom.parentNode !== null && dom.parentNode !== undefined) {\n        const rawParent = dom.parentNode;\n        const p = SugarElement.fromDom(rawParent);\n        ret.push(p);\n        if (stop(p) === true) {\n          break;\n        } else {\n          dom = rawParent;\n        }\n      }\n      return ret;\n    };\n    const prevSibling = element => Optional.from(element.dom.previousSibling).map(SugarElement.fromDom);\n    const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);\n    const children$2 = element => map$1(element.dom.childNodes, SugarElement.fromDom);\n    const child$2 = (element, index) => {\n      const cs = element.dom.childNodes;\n      return Optional.from(cs[index]).map(SugarElement.fromDom);\n    };\n    const firstChild = element => child$2(element, 0);\n\n    const before$3 = (marker, element) => {\n      const parent$1 = parent(marker);\n      parent$1.each(v => {\n        v.dom.insertBefore(element.dom, marker.dom);\n      });\n    };\n    const after$5 = (marker, element) => {\n      const sibling = nextSibling(marker);\n      sibling.fold(() => {\n        const parent$1 = parent(marker);\n        parent$1.each(v => {\n          append$1(v, element);\n        });\n      }, v => {\n        before$3(v, element);\n      });\n    };\n    const prepend = (parent, element) => {\n      const firstChild$1 = firstChild(parent);\n      firstChild$1.fold(() => {\n        append$1(parent, element);\n      }, v => {\n        parent.dom.insertBefore(element.dom, v.dom);\n      });\n    };\n    const append$1 = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n    const appendAt = (parent, element, index) => {\n      child$2(parent, index).fold(() => {\n        append$1(parent, element);\n      }, v => {\n        before$3(v, element);\n      });\n    };\n    const wrap = (element, wrapper) => {\n      before$3(element, wrapper);\n      append$1(wrapper, element);\n    };\n\n    const after$4 = (marker, elements) => {\n      each$2(elements, (x, i) => {\n        const e = i === 0 ? marker : elements[i - 1];\n        after$5(e, x);\n      });\n    };\n    const append = (parent, elements) => {\n      each$2(elements, x => {\n        append$1(parent, x);\n      });\n    };\n\n    const empty = element => {\n      element.dom.textContent = '';\n      each$2(children$2(element), rogue => {\n        remove$6(rogue);\n      });\n    };\n    const remove$6 = element => {\n      const dom = element.dom;\n      if (dom.parentNode !== null) {\n        dom.parentNode.removeChild(dom);\n      }\n    };\n    const unwrap = wrapper => {\n      const children = children$2(wrapper);\n      if (children.length > 0) {\n        after$4(wrapper, children);\n      }\n      remove$6(wrapper);\n    };\n\n    const clone$1 = (original, isDeep) => SugarElement.fromDom(original.dom.cloneNode(isDeep));\n    const shallow = original => clone$1(original, false);\n    const deep = original => clone$1(original, true);\n    const shallowAs = (original, tag) => {\n      const nu = SugarElement.fromTag(tag);\n      const attributes = clone$2(original);\n      setAll$1(nu, attributes);\n      return nu;\n    };\n    const copy$2 = (original, tag) => {\n      const nu = shallowAs(original, tag);\n      const cloneChildren = children$2(deep(original));\n      append(nu, cloneChildren);\n      return nu;\n    };\n    const mutate$1 = (original, tag) => {\n      const nu = shallowAs(original, tag);\n      after$5(original, nu);\n      const children = children$2(original);\n      append(nu, children);\n      remove$6(original);\n      return nu;\n    };\n\n    const validSectionList = ['tfoot', 'thead', 'tbody', 'colgroup'];\n    const isValidSection = parentName => contains$2(validSectionList, parentName);\n    const grid = (rows, columns) => ({\n      rows,\n      columns\n    });\n    const address = (row, column) => ({\n      row,\n      column\n    });\n    const detail = (element, rowspan, colspan) => ({\n      element,\n      rowspan,\n      colspan\n    });\n    const detailnew = (element, rowspan, colspan, isNew) => ({\n      element,\n      rowspan,\n      colspan,\n      isNew\n    });\n    const extended = (element, rowspan, colspan, row, column, isLocked) => ({\n      element,\n      rowspan,\n      colspan,\n      row,\n      column,\n      isLocked\n    });\n    const rowdetail = (element, cells, section) => ({\n      element,\n      cells,\n      section\n    });\n    const rowdetailnew = (element, cells, section, isNew) => ({\n      element,\n      cells,\n      section,\n      isNew\n    });\n    const elementnew = (element, isNew, isLocked) => ({\n      element,\n      isNew,\n      isLocked\n    });\n    const rowcells = (element, cells, section, isNew) => ({\n      element,\n      cells,\n      section,\n      isNew\n    });\n    const bounds = (startRow, startCol, finishRow, finishCol) => ({\n      startRow,\n      startCol,\n      finishRow,\n      finishCol\n    });\n    const columnext = (element, colspan, column) => ({\n      element,\n      colspan,\n      column\n    });\n    const colgroup = (element, columns) => ({\n      element,\n      columns\n    });\n\n    const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const isSupported$1 = constant(supported);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getShadowRoot = e => {\n      const r = getRootNode(e);\n      return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n    };\n    const getShadowHost = e => SugarElement.fromDom(e.dom.host);\n    const getOriginalEventTarget = event => {\n      if (isSupported$1() && isNonNullable(event.target)) {\n        const el = SugarElement.fromDom(event.target);\n        if (isElement(el) && isOpenShadowHost(el)) {\n          if (event.composed && event.composedPath) {\n            const composedPath = event.composedPath();\n            if (composedPath) {\n              return head(composedPath);\n            }\n          }\n        }\n      }\n      return Optional.from(event.target);\n    };\n    const isOpenShadowHost = element => isNonNullable(element.dom.shadowRoot);\n\n    const inBody = element => {\n      const dom = isText(element) ? element.dom.parentNode : element.dom;\n      if (dom === undefined || dom === null || dom.ownerDocument === null) {\n        return false;\n      }\n      const doc = dom.ownerDocument;\n      return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n    };\n    const body$1 = () => getBody$1(SugarElement.fromDom(document));\n    const getBody$1 = doc => {\n      const b = doc.dom.body;\n      if (b === null || b === undefined) {\n        throw new Error('Body is not available yet');\n      }\n      return SugarElement.fromDom(b);\n    };\n\n    const ancestors$4 = (scope, predicate, isRoot) => filter$2(parents(scope, isRoot), predicate);\n    const children$1 = (scope, predicate) => filter$2(children$2(scope), predicate);\n    const descendants$1 = (scope, predicate) => {\n      let result = [];\n      each$2(children$2(scope), x => {\n        if (predicate(x)) {\n          result = result.concat([x]);\n        }\n        result = result.concat(descendants$1(x, predicate));\n      });\n      return result;\n    };\n\n    const ancestors$3 = (scope, selector, isRoot) => ancestors$4(scope, e => is$2(e, selector), isRoot);\n    const children = (scope, selector) => children$1(scope, e => is$2(e, selector));\n    const descendants = (scope, selector) => all$1(selector, scope);\n\n    var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n      if (is(scope, a)) {\n        return Optional.some(scope);\n      } else if (isFunction(isRoot) && isRoot(scope)) {\n        return Optional.none();\n      } else {\n        return ancestor(scope, a, isRoot);\n      }\n    };\n\n    const ancestor$2 = (scope, predicate, isRoot) => {\n      let element = scope.dom;\n      const stop = isFunction(isRoot) ? isRoot : never;\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        if (predicate(el)) {\n          return Optional.some(el);\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const closest$2 = (scope, predicate, isRoot) => {\n      const is = (s, test) => test(s);\n      return ClosestOrAncestor(is, ancestor$2, scope, predicate, isRoot);\n    };\n    const child$1 = (scope, predicate) => {\n      const pred = node => predicate(SugarElement.fromDom(node));\n      const result = find$1(scope.dom.childNodes, pred);\n      return result.map(SugarElement.fromDom);\n    };\n    const descendant$1 = (scope, predicate) => {\n      const descend = node => {\n        for (let i = 0; i < node.childNodes.length; i++) {\n          const child = SugarElement.fromDom(node.childNodes[i]);\n          if (predicate(child)) {\n            return Optional.some(child);\n          }\n          const res = descend(node.childNodes[i]);\n          if (res.isSome()) {\n            return res;\n          }\n        }\n        return Optional.none();\n      };\n      return descend(scope.dom);\n    };\n\n    const ancestor$1 = (scope, selector, isRoot) => ancestor$2(scope, e => is$2(e, selector), isRoot);\n    const child = (scope, selector) => child$1(scope, e => is$2(e, selector));\n    const descendant = (scope, selector) => one(selector, scope);\n    const closest$1 = (scope, selector, isRoot) => {\n      const is = (element, selector) => is$2(element, selector);\n      return ClosestOrAncestor(is, ancestor$1, scope, selector, isRoot);\n    };\n\n    const is = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n    const cat = arr => {\n      const r = [];\n      const push = x => {\n        r.push(x);\n      };\n      for (let i = 0; i < arr.length; i++) {\n        arr[i].each(push);\n      }\n      return r;\n    };\n    const bindFrom = (a, f) => a !== undefined && a !== null ? f(a) : Optional.none();\n    const someIf = (b, a) => b ? Optional.some(a) : Optional.none();\n\n    const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n    const contains = (str, substr, start = 0, end) => {\n      const idx = str.indexOf(substr, start);\n      if (idx !== -1) {\n        return isUndefined(end) ? true : idx + substr.length <= end;\n      } else {\n        return false;\n      }\n    };\n    const startsWith = (str, prefix) => {\n      return checkRange(str, prefix, 0);\n    };\n    const endsWith = (str, suffix) => {\n      return checkRange(str, suffix, str.length - suffix.length);\n    };\n    const blank = r => s => s.replace(r, '');\n    const trim = blank(/^\\s+|\\s+$/g);\n    const isNotEmpty = s => s.length > 0;\n    const toFloat = value => {\n      const num = parseFloat(value);\n      return isNaN(num) ? Optional.none() : Optional.some(num);\n    };\n\n    const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n    const internalSet = (dom, property, value) => {\n      if (!isString(value)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value);\n      }\n      if (isSupported(dom)) {\n        dom.style.setProperty(property, value);\n      }\n    };\n    const internalRemove = (dom, property) => {\n      if (isSupported(dom)) {\n        dom.style.removeProperty(property);\n      }\n    };\n    const set$1 = (element, property, value) => {\n      const dom = element.dom;\n      internalSet(dom, property, value);\n    };\n    const setAll = (element, css) => {\n      const dom = element.dom;\n      each$1(css, (v, k) => {\n        internalSet(dom, k, v);\n      });\n    };\n    const get$a = (element, property) => {\n      const dom = element.dom;\n      const styles = window.getComputedStyle(dom);\n      const r = styles.getPropertyValue(property);\n      return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n    };\n    const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n    const getRaw$2 = (element, property) => {\n      const dom = element.dom;\n      const raw = getUnsafeProperty(dom, property);\n      return Optional.from(raw).filter(r => r.length > 0);\n    };\n    const remove$5 = (element, property) => {\n      const dom = element.dom;\n      internalRemove(dom, property);\n      if (is(getOpt(element, 'style').map(trim), '')) {\n        remove$7(element, 'style');\n      }\n    };\n    const copy$1 = (source, target) => {\n      const sourceDom = source.dom;\n      const targetDom = target.dom;\n      if (isSupported(sourceDom) && isSupported(targetDom)) {\n        targetDom.style.cssText = sourceDom.style.cssText;\n      }\n    };\n\n    const getAttrValue = (cell, name, fallback = 0) => getOpt(cell, name).map(value => parseInt(value, 10)).getOr(fallback);\n    const getSpan = (cell, type) => getAttrValue(cell, type, 1);\n    const hasColspan = cellOrCol => {\n      if (isTag('col')(cellOrCol)) {\n        return getAttrValue(cellOrCol, 'span', 1) > 1;\n      } else {\n        return getSpan(cellOrCol, 'colspan') > 1;\n      }\n    };\n    const hasRowspan = cell => getSpan(cell, 'rowspan') > 1;\n    const getCssValue = (element, property) => parseInt(get$a(element, property), 10);\n    const minWidth = constant(10);\n    const minHeight = constant(10);\n\n    const firstLayer = (scope, selector) => {\n      return filterFirstLayer(scope, selector, always);\n    };\n    const filterFirstLayer = (scope, selector, predicate) => {\n      return bind$2(children$2(scope), x => {\n        if (is$2(x, selector)) {\n          return predicate(x) ? [x] : [];\n        } else {\n          return filterFirstLayer(x, selector, predicate);\n        }\n      });\n    };\n\n    const lookup = (tags, element, isRoot = never) => {\n      if (isRoot(element)) {\n        return Optional.none();\n      }\n      if (contains$2(tags, name(element))) {\n        return Optional.some(element);\n      }\n      const isRootOrUpperTable = elm => is$2(elm, 'table') || isRoot(elm);\n      return ancestor$1(element, tags.join(','), isRootOrUpperTable);\n    };\n    const cell = (element, isRoot) => lookup(['td', 'th'], element, isRoot);\n    const cells$1 = ancestor => firstLayer(ancestor, 'th,td');\n    const columns$1 = ancestor => {\n      if (is$2(ancestor, 'colgroup')) {\n        return children(ancestor, 'col');\n      } else {\n        return bind$2(columnGroups(ancestor), columnGroup => children(columnGroup, 'col'));\n      }\n    };\n    const table = (element, isRoot) => closest$1(element, 'table', isRoot);\n    const rows$1 = ancestor => firstLayer(ancestor, 'tr');\n    const columnGroups = ancestor => table(ancestor).fold(constant([]), table => children(table, 'colgroup'));\n\n    const fromRowsOrColGroups = (elems, getSection) => map$1(elems, row => {\n      if (name(row) === 'colgroup') {\n        const cells = map$1(columns$1(row), column => {\n          const colspan = getAttrValue(column, 'span', 1);\n          return detail(column, 1, colspan);\n        });\n        return rowdetail(row, cells, 'colgroup');\n      } else {\n        const cells = map$1(cells$1(row), cell => {\n          const rowspan = getAttrValue(cell, 'rowspan', 1);\n          const colspan = getAttrValue(cell, 'colspan', 1);\n          return detail(cell, rowspan, colspan);\n        });\n        return rowdetail(row, cells, getSection(row));\n      }\n    });\n    const getParentSection = group => parent(group).map(parent => {\n      const parentName = name(parent);\n      return isValidSection(parentName) ? parentName : 'tbody';\n    }).getOr('tbody');\n    const fromTable$1 = table => {\n      const rows = rows$1(table);\n      const columnGroups$1 = columnGroups(table);\n      const elems = [...columnGroups$1, ...rows];\n      return fromRowsOrColGroups(elems, getParentSection);\n    };\n    const fromPastedRows = (elems, section) => fromRowsOrColGroups(elems, () => section);\n\n    const cached = f => {\n      let called = false;\n      let r;\n      return (...args) => {\n        if (!called) {\n          called = true;\n          r = f.apply(null, args);\n        }\n        return r;\n      };\n    };\n\n    const DeviceType = (os, browser, userAgent, mediaMatch) => {\n      const isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n      const isiPhone = os.isiOS() && !isiPad;\n      const isMobile = os.isiOS() || os.isAndroid();\n      const isTouch = isMobile || mediaMatch('(pointer:coarse)');\n      const isTablet = isiPad || !isiPhone && isMobile && mediaMatch('(min-device-width:768px)');\n      const isPhone = isiPhone || isMobile && !isTablet;\n      const iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n      const isDesktop = !isPhone && !isTablet && !iOSwebview;\n      return {\n        isiPad: constant(isiPad),\n        isiPhone: constant(isiPhone),\n        isTablet: constant(isTablet),\n        isPhone: constant(isPhone),\n        isTouch: constant(isTouch),\n        isAndroid: os.isAndroid,\n        isiOS: os.isiOS,\n        isWebView: constant(iOSwebview),\n        isDesktop: constant(isDesktop)\n      };\n    };\n\n    const firstMatch = (regexes, s) => {\n      for (let i = 0; i < regexes.length; i++) {\n        const x = regexes[i];\n        if (x.test(s)) {\n          return x;\n        }\n      }\n      return undefined;\n    };\n    const find = (regexes, agent) => {\n      const r = firstMatch(regexes, agent);\n      if (!r) {\n        return {\n          major: 0,\n          minor: 0\n        };\n      }\n      const group = i => {\n        return Number(agent.replace(r, '$' + i));\n      };\n      return nu$2(group(1), group(2));\n    };\n    const detect$5 = (versionRegexes, agent) => {\n      const cleanedAgent = String(agent).toLowerCase();\n      if (versionRegexes.length === 0) {\n        return unknown$2();\n      }\n      return find(versionRegexes, cleanedAgent);\n    };\n    const unknown$2 = () => {\n      return nu$2(0, 0);\n    };\n    const nu$2 = (major, minor) => {\n      return {\n        major,\n        minor\n      };\n    };\n    const Version = {\n      nu: nu$2,\n      detect: detect$5,\n      unknown: unknown$2\n    };\n\n    const detectBrowser$1 = (browsers, userAgentData) => {\n      return findMap(userAgentData.brands, uaBrand => {\n        const lcBrand = uaBrand.brand.toLowerCase();\n        return find$1(browsers, browser => {\n          var _a;\n          return lcBrand === ((_a = browser.brand) === null || _a === void 0 ? void 0 : _a.toLowerCase());\n        }).map(info => ({\n          current: info.name,\n          version: Version.nu(parseInt(uaBrand.version, 10), 0)\n        }));\n      });\n    };\n\n    const detect$4 = (candidates, userAgent) => {\n      const agent = String(userAgent).toLowerCase();\n      return find$1(candidates, candidate => {\n        return candidate.search(agent);\n      });\n    };\n    const detectBrowser = (browsers, userAgent) => {\n      return detect$4(browsers, userAgent).map(browser => {\n        const version = Version.detect(browser.versionRegexes, userAgent);\n        return {\n          current: browser.name,\n          version\n        };\n      });\n    };\n    const detectOs = (oses, userAgent) => {\n      return detect$4(oses, userAgent).map(os => {\n        const version = Version.detect(os.versionRegexes, userAgent);\n        return {\n          current: os.name,\n          version\n        };\n      });\n    };\n\n    const normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n    const checkContains = target => {\n      return uastring => {\n        return contains(uastring, target);\n      };\n    };\n    const browsers = [{\n      name: 'Edge',\n      versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n      search: uastring => {\n        return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');\n      }\n    }, {\n      name: 'Chromium',\n      brand: 'Chromium',\n      versionRegexes: [/.*?chrome\\/([0-9]+)\\.([0-9]+).*/, normalVersionRegex],\n      search: uastring => {\n        return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');\n      }\n    }, {\n      name: 'IE',\n      versionRegexes: [/.*?msie\\ ?([0-9]+)\\.([0-9]+).*/, /.*?rv:([0-9]+)\\.([0-9]+).*/],\n      search: uastring => {\n        return contains(uastring, 'msie') || contains(uastring, 'trident');\n      }\n    }, {\n      name: 'Opera',\n      versionRegexes: [normalVersionRegex, /.*?opera\\/([0-9]+)\\.([0-9]+).*/],\n      search: checkContains('opera')\n    }, {\n      name: 'Firefox',\n      versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n      search: checkContains('firefox')\n    }, {\n      name: 'Safari',\n      versionRegexes: [normalVersionRegex, /.*?cpu os ([0-9]+)_([0-9]+).*/],\n      search: uastring => {\n        return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');\n      }\n    }];\n    const oses = [{\n      name: 'Windows',\n      search: checkContains('win'),\n      versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n    }, {\n      name: 'iOS',\n      search: uastring => {\n        return contains(uastring, 'iphone') || contains(uastring, 'ipad');\n      },\n      versionRegexes: [/.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]\n    }, {\n      name: 'Android',\n      search: checkContains('android'),\n      versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n    }, {\n      name: 'macOS',\n      search: checkContains('mac os x'),\n      versionRegexes: [/.*?mac\\ os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n    }, {\n      name: 'Linux',\n      search: checkContains('linux'),\n      versionRegexes: []\n    }, {\n      name: 'Solaris',\n      search: checkContains('sunos'),\n      versionRegexes: []\n    }, {\n      name: 'FreeBSD',\n      search: checkContains('freebsd'),\n      versionRegexes: []\n    }, {\n      name: 'ChromeOS',\n      search: checkContains('cros'),\n      versionRegexes: [/.*?chrome\\/([0-9]+)\\.([0-9]+).*/]\n    }];\n    const PlatformInfo = {\n      browsers: constant(browsers),\n      oses: constant(oses)\n    };\n\n    const edge = 'Edge';\n    const chromium = 'Chromium';\n    const ie = 'IE';\n    const opera = 'Opera';\n    const firefox = 'Firefox';\n    const safari = 'Safari';\n    const unknown$1 = () => {\n      return nu$1({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    const nu$1 = info => {\n      const current = info.current;\n      const version = info.version;\n      const isBrowser = name => () => current === name;\n      return {\n        current,\n        version,\n        isEdge: isBrowser(edge),\n        isChromium: isBrowser(chromium),\n        isIE: isBrowser(ie),\n        isOpera: isBrowser(opera),\n        isFirefox: isBrowser(firefox),\n        isSafari: isBrowser(safari)\n      };\n    };\n    const Browser = {\n      unknown: unknown$1,\n      nu: nu$1,\n      edge: constant(edge),\n      chromium: constant(chromium),\n      ie: constant(ie),\n      opera: constant(opera),\n      firefox: constant(firefox),\n      safari: constant(safari)\n    };\n\n    const windows = 'Windows';\n    const ios = 'iOS';\n    const android = 'Android';\n    const linux = 'Linux';\n    const macos = 'macOS';\n    const solaris = 'Solaris';\n    const freebsd = 'FreeBSD';\n    const chromeos = 'ChromeOS';\n    const unknown = () => {\n      return nu({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    const nu = info => {\n      const current = info.current;\n      const version = info.version;\n      const isOS = name => () => current === name;\n      return {\n        current,\n        version,\n        isWindows: isOS(windows),\n        isiOS: isOS(ios),\n        isAndroid: isOS(android),\n        isMacOS: isOS(macos),\n        isLinux: isOS(linux),\n        isSolaris: isOS(solaris),\n        isFreeBSD: isOS(freebsd),\n        isChromeOS: isOS(chromeos)\n      };\n    };\n    const OperatingSystem = {\n      unknown,\n      nu,\n      windows: constant(windows),\n      ios: constant(ios),\n      android: constant(android),\n      linux: constant(linux),\n      macos: constant(macos),\n      solaris: constant(solaris),\n      freebsd: constant(freebsd),\n      chromeos: constant(chromeos)\n    };\n\n    const detect$3 = (userAgent, userAgentDataOpt, mediaMatch) => {\n      const browsers = PlatformInfo.browsers();\n      const oses = PlatformInfo.oses();\n      const browser = userAgentDataOpt.bind(userAgentData => detectBrowser$1(browsers, userAgentData)).orThunk(() => detectBrowser(browsers, userAgent)).fold(Browser.unknown, Browser.nu);\n      const os = detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n      const deviceType = DeviceType(os, browser, userAgent, mediaMatch);\n      return {\n        browser,\n        os,\n        deviceType\n      };\n    };\n    const PlatformDetection = {\n      detect: detect$3\n    };\n\n    const mediaMatch = query => window.matchMedia(query).matches;\n    let platform = cached(() => PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch));\n    const detect$2 = () => platform();\n\n    const Dimension = (name, getOffset) => {\n      const set = (element, h) => {\n        if (!isNumber(h) && !h.match(/^[0-9]+$/)) {\n          throw new Error(name + '.set accepts only positive integer values. Value was ' + h);\n        }\n        const dom = element.dom;\n        if (isSupported(dom)) {\n          dom.style[name] = h + 'px';\n        }\n      };\n      const get = element => {\n        const r = getOffset(element);\n        if (r <= 0 || r === null) {\n          const css = get$a(element, name);\n          return parseFloat(css) || 0;\n        }\n        return r;\n      };\n      const getOuter = get;\n      const aggregate = (element, properties) => foldl(properties, (acc, property) => {\n        const val = get$a(element, property);\n        const value = val === undefined ? 0 : parseInt(val, 10);\n        return isNaN(value) ? acc : acc + value;\n      }, 0);\n      const max = (element, value, properties) => {\n        const cumulativeInclusions = aggregate(element, properties);\n        const absoluteMax = value > cumulativeInclusions ? value - cumulativeInclusions : 0;\n        return absoluteMax;\n      };\n      return {\n        set,\n        get,\n        getOuter,\n        aggregate,\n        max\n      };\n    };\n\n    const toNumber = (px, fallback) => toFloat(px).getOr(fallback);\n    const getProp = (element, name, fallback) => toNumber(get$a(element, name), fallback);\n    const calcContentBoxSize = (element, size, upper, lower) => {\n      const paddingUpper = getProp(element, \"padding-\".concat(upper), 0);\n      const paddingLower = getProp(element, \"padding-\".concat(lower), 0);\n      const borderUpper = getProp(element, \"border-\".concat(upper, \"-width\"), 0);\n      const borderLower = getProp(element, \"border-\".concat(lower, \"-width\"), 0);\n      return size - paddingUpper - paddingLower - borderUpper - borderLower;\n    };\n    const getCalculatedWidth = (element, boxSizing) => {\n      const dom = element.dom;\n      const width = dom.getBoundingClientRect().width || dom.offsetWidth;\n      return boxSizing === 'border-box' ? width : calcContentBoxSize(element, width, 'left', 'right');\n    };\n    const getHeight$1 = element => getProp(element, 'height', element.dom.offsetHeight);\n    const getWidth = element => getProp(element, 'width', element.dom.offsetWidth);\n    const getInnerWidth = element => getCalculatedWidth(element, 'content-box');\n\n    const api$2 = Dimension('width', element => element.dom.offsetWidth);\n    const get$9 = element => api$2.get(element);\n    const getOuter$2 = element => api$2.getOuter(element);\n    const getInner = getInnerWidth;\n    const getRuntime$1 = getWidth;\n\n    const addCells = (gridRow, index, cells) => {\n      const existingCells = gridRow.cells;\n      const before = existingCells.slice(0, index);\n      const after = existingCells.slice(index);\n      const newCells = before.concat(cells).concat(after);\n      return setCells(gridRow, newCells);\n    };\n    const addCell = (gridRow, index, cell) => addCells(gridRow, index, [cell]);\n    const mutateCell = (gridRow, index, cell) => {\n      const cells = gridRow.cells;\n      cells[index] = cell;\n    };\n    const setCells = (gridRow, cells) => rowcells(gridRow.element, cells, gridRow.section, gridRow.isNew);\n    const mapCells = (gridRow, f) => {\n      const cells = gridRow.cells;\n      const r = map$1(cells, f);\n      return rowcells(gridRow.element, r, gridRow.section, gridRow.isNew);\n    };\n    const getCell = (gridRow, index) => gridRow.cells[index];\n    const getCellElement = (gridRow, index) => getCell(gridRow, index).element;\n    const cellLength = gridRow => gridRow.cells.length;\n    const extractGridDetails = grid => {\n      const result = partition(grid, row => row.section === 'colgroup');\n      return {\n        rows: result.fail,\n        cols: result.pass\n      };\n    };\n    const clone = (gridRow, cloneRow, cloneCell) => {\n      const newCells = map$1(gridRow.cells, cloneCell);\n      return rowcells(cloneRow(gridRow.element), newCells, gridRow.section, true);\n    };\n\n    const LOCKED_COL_ATTR = 'data-snooker-locked-cols';\n    const getLockedColumnsFromTable = table => getOpt(table, LOCKED_COL_ATTR).bind(lockedColStr => Optional.from(lockedColStr.match(/\\d+/g))).map(lockedCols => mapToObject(lockedCols, always));\n    const getLockedColumnsFromGrid = grid => {\n      const locked = foldl(extractGridDetails(grid).rows, (acc, row) => {\n        each$2(row.cells, (cell, idx) => {\n          if (cell.isLocked) {\n            acc[idx] = true;\n          }\n        });\n        return acc;\n      }, {});\n      const lockedArr = mapToArray(locked, (_val, key) => parseInt(key, 10));\n      return sort$1(lockedArr);\n    };\n\n    const key = (row, column) => {\n      return row + ',' + column;\n    };\n    const getAt = (warehouse, row, column) => Optional.from(warehouse.access[key(row, column)]);\n    const findItem = (warehouse, item, comparator) => {\n      const filtered = filterItems(warehouse, detail => {\n        return comparator(item, detail.element);\n      });\n      return filtered.length > 0 ? Optional.some(filtered[0]) : Optional.none();\n    };\n    const filterItems = (warehouse, predicate) => {\n      const all = bind$2(warehouse.all, r => {\n        return r.cells;\n      });\n      return filter$2(all, predicate);\n    };\n    const generateColumns = rowData => {\n      const columnsGroup = {};\n      let index = 0;\n      each$2(rowData.cells, column => {\n        const colspan = column.colspan;\n        range$1(colspan, columnIndex => {\n          const colIndex = index + columnIndex;\n          columnsGroup[colIndex] = columnext(column.element, colspan, colIndex);\n        });\n        index += colspan;\n      });\n      return columnsGroup;\n    };\n    const generate$1 = list => {\n      const access = {};\n      const cells = [];\n      const tableOpt = head(list).map(rowData => rowData.element).bind(table);\n      const lockedColumns = tableOpt.bind(getLockedColumnsFromTable).getOr({});\n      let maxRows = 0;\n      let maxColumns = 0;\n      let rowCount = 0;\n      const {\n        pass: colgroupRows,\n        fail: rows\n      } = partition(list, rowData => rowData.section === 'colgroup');\n      each$2(rows, rowData => {\n        const currentRow = [];\n        each$2(rowData.cells, rowCell => {\n          let start = 0;\n          while (access[key(rowCount, start)] !== undefined) {\n            start++;\n          }\n          const isLocked = hasNonNullableKey(lockedColumns, start.toString());\n          const current = extended(rowCell.element, rowCell.rowspan, rowCell.colspan, rowCount, start, isLocked);\n          for (let occupiedColumnPosition = 0; occupiedColumnPosition < rowCell.colspan; occupiedColumnPosition++) {\n            for (let occupiedRowPosition = 0; occupiedRowPosition < rowCell.rowspan; occupiedRowPosition++) {\n              const rowPosition = rowCount + occupiedRowPosition;\n              const columnPosition = start + occupiedColumnPosition;\n              const newpos = key(rowPosition, columnPosition);\n              access[newpos] = current;\n              maxColumns = Math.max(maxColumns, columnPosition + 1);\n            }\n          }\n          currentRow.push(current);\n        });\n        maxRows++;\n        cells.push(rowdetail(rowData.element, currentRow, rowData.section));\n        rowCount++;\n      });\n      const {\n        columns,\n        colgroups\n      } = last$2(colgroupRows).map(rowData => {\n        const columns = generateColumns(rowData);\n        const colgroup$1 = colgroup(rowData.element, values(columns));\n        return {\n          colgroups: [colgroup$1],\n          columns\n        };\n      }).getOrThunk(() => ({\n        colgroups: [],\n        columns: {}\n      }));\n      const grid$1 = grid(maxRows, maxColumns);\n      return {\n        grid: grid$1,\n        access,\n        all: cells,\n        columns,\n        colgroups\n      };\n    };\n    const fromTable = table => {\n      const list = fromTable$1(table);\n      return generate$1(list);\n    };\n    const justCells = warehouse => bind$2(warehouse.all, w => w.cells);\n    const justColumns = warehouse => values(warehouse.columns);\n    const hasColumns = warehouse => keys(warehouse.columns).length > 0;\n    const getColumnAt = (warehouse, columnIndex) => Optional.from(warehouse.columns[columnIndex]);\n    const Warehouse = {\n      fromTable,\n      generate: generate$1,\n      getAt,\n      findItem,\n      filterItems,\n      justCells,\n      justColumns,\n      hasColumns,\n      getColumnAt\n    };\n\n    const columns = (warehouse, isValidCell = always) => {\n      const grid = warehouse.grid;\n      const cols = range$1(grid.columns, identity);\n      const rowsArr = range$1(grid.rows, identity);\n      return map$1(cols, col => {\n        const getBlock = () => bind$2(rowsArr, r => Warehouse.getAt(warehouse, r, col).filter(detail => detail.column === col).toArray());\n        const isValid = detail => detail.colspan === 1 && isValidCell(detail.element);\n        const getFallback = () => Warehouse.getAt(warehouse, 0, col);\n        return decide(getBlock, isValid, getFallback);\n      });\n    };\n    const decide = (getBlock, isValid, getFallback) => {\n      const inBlock = getBlock();\n      const validInBlock = find$1(inBlock, isValid);\n      const detailOption = validInBlock.orThunk(() => Optional.from(inBlock[0]).orThunk(getFallback));\n      return detailOption.map(detail => detail.element);\n    };\n    const rows = warehouse => {\n      const grid = warehouse.grid;\n      const rowsArr = range$1(grid.rows, identity);\n      const cols = range$1(grid.columns, identity);\n      return map$1(rowsArr, row => {\n        const getBlock = () => bind$2(cols, c => Warehouse.getAt(warehouse, row, c).filter(detail => detail.row === row).fold(constant([]), detail => [detail]));\n        const isSingle = detail => detail.rowspan === 1;\n        const getFallback = () => Warehouse.getAt(warehouse, row, 0);\n        return decide(getBlock, isSingle, getFallback);\n      });\n    };\n\n    const deduce = (xs, index) => {\n      if (index < 0 || index >= xs.length - 1) {\n        return Optional.none();\n      }\n      const current = xs[index].fold(() => {\n        const rest = reverse(xs.slice(0, index));\n        return findMap(rest, (a, i) => a.map(aa => ({\n          value: aa,\n          delta: i + 1\n        })));\n      }, c => Optional.some({\n        value: c,\n        delta: 0\n      }));\n      const next = xs[index + 1].fold(() => {\n        const rest = xs.slice(index + 1);\n        return findMap(rest, (a, i) => a.map(aa => ({\n          value: aa,\n          delta: i + 1\n        })));\n      }, n => Optional.some({\n        value: n,\n        delta: 1\n      }));\n      return current.bind(c => next.map(n => {\n        const extras = n.delta + c.delta;\n        return Math.abs(n.value - c.value) / extras;\n      }));\n    };\n\n    const onDirection = (isLtr, isRtl) => element => getDirection(element) === 'rtl' ? isRtl : isLtr;\n    const getDirection = element => get$a(element, 'direction') === 'rtl' ? 'rtl' : 'ltr';\n\n    const api$1 = Dimension('height', element => {\n      const dom = element.dom;\n      return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight;\n    });\n    const get$8 = element => api$1.get(element);\n    const getOuter$1 = element => api$1.getOuter(element);\n    const getRuntime = getHeight$1;\n\n    const r = (left, top) => {\n      const translate = (x, y) => r(left + x, top + y);\n      return {\n        left,\n        top,\n        translate\n      };\n    };\n    const SugarPosition = r;\n\n    const boxPosition = dom => {\n      const box = dom.getBoundingClientRect();\n      return SugarPosition(box.left, box.top);\n    };\n    const firstDefinedOrZero = (a, b) => {\n      if (a !== undefined) {\n        return a;\n      } else {\n        return b !== undefined ? b : 0;\n      }\n    };\n    const absolute = element => {\n      const doc = element.dom.ownerDocument;\n      const body = doc.body;\n      const win = doc.defaultView;\n      const html = doc.documentElement;\n      if (body === element.dom) {\n        return SugarPosition(body.offsetLeft, body.offsetTop);\n      }\n      const scrollTop = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageYOffset, html.scrollTop);\n      const scrollLeft = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageXOffset, html.scrollLeft);\n      const clientTop = firstDefinedOrZero(html.clientTop, body.clientTop);\n      const clientLeft = firstDefinedOrZero(html.clientLeft, body.clientLeft);\n      return viewport(element).translate(scrollLeft - clientLeft, scrollTop - clientTop);\n    };\n    const viewport = element => {\n      const dom = element.dom;\n      const doc = dom.ownerDocument;\n      const body = doc.body;\n      if (body === dom) {\n        return SugarPosition(body.offsetLeft, body.offsetTop);\n      }\n      if (!inBody(element)) {\n        return SugarPosition(0, 0);\n      }\n      return boxPosition(dom);\n    };\n\n    const rowInfo = (row, y) => ({\n      row,\n      y\n    });\n    const colInfo = (col, x) => ({\n      col,\n      x\n    });\n    const rtlEdge = cell => {\n      const pos = absolute(cell);\n      return pos.left + getOuter$2(cell);\n    };\n    const ltrEdge = cell => {\n      return absolute(cell).left;\n    };\n    const getLeftEdge = (index, cell) => {\n      return colInfo(index, ltrEdge(cell));\n    };\n    const getRightEdge = (index, cell) => {\n      return colInfo(index, rtlEdge(cell));\n    };\n    const getTop$1 = cell => {\n      return absolute(cell).top;\n    };\n    const getTopEdge = (index, cell) => {\n      return rowInfo(index, getTop$1(cell));\n    };\n    const getBottomEdge = (index, cell) => {\n      return rowInfo(index, getTop$1(cell) + getOuter$1(cell));\n    };\n    const findPositions = (getInnerEdge, getOuterEdge, array) => {\n      if (array.length === 0) {\n        return [];\n      }\n      const lines = map$1(array.slice(1), (cellOption, index) => {\n        return cellOption.map(cell => {\n          return getInnerEdge(index, cell);\n        });\n      });\n      const lastLine = array[array.length - 1].map(cell => {\n        return getOuterEdge(array.length - 1, cell);\n      });\n      return lines.concat([lastLine]);\n    };\n    const negate = step => {\n      return -step;\n    };\n    const height = {\n      delta: identity,\n      positions: optElements => findPositions(getTopEdge, getBottomEdge, optElements),\n      edge: getTop$1\n    };\n    const ltr$1 = {\n      delta: identity,\n      edge: ltrEdge,\n      positions: optElements => findPositions(getLeftEdge, getRightEdge, optElements)\n    };\n    const rtl$1 = {\n      delta: negate,\n      edge: rtlEdge,\n      positions: optElements => findPositions(getRightEdge, getLeftEdge, optElements)\n    };\n    const detect$1 = onDirection(ltr$1, rtl$1);\n    const width = {\n      delta: (amount, table) => detect$1(table).delta(amount, table),\n      positions: (cols, table) => detect$1(table).positions(cols, table),\n      edge: cell => detect$1(cell).edge(cell)\n    };\n\n    const units = {\n      unsupportedLength: ['em', 'ex', 'cap', 'ch', 'ic', 'rem', 'lh', 'rlh', 'vw', 'vh', 'vi', 'vb', 'vmin', 'vmax', 'cm', 'mm', 'Q', 'in', 'pc', 'pt', 'px'],\n      fixed: ['px', 'pt'],\n      relative: ['%'],\n      empty: ['']\n    };\n    const pattern = (() => {\n      const decimalDigits = '[0-9]+';\n      const signedInteger = '[+-]?' + decimalDigits;\n      const exponentPart = '[eE]' + signedInteger;\n      const dot = '\\\\.';\n      const opt = input => \"(?:\".concat(input, \")?\");\n      const unsignedDecimalLiteral = ['Infinity', decimalDigits + dot + opt(decimalDigits) + opt(exponentPart), dot + decimalDigits + opt(exponentPart), decimalDigits + opt(exponentPart)].join('|');\n      const float = \"[+-]?(?:\".concat(unsignedDecimalLiteral, \")\");\n      return new RegExp(\"^(\".concat(float, \")(.*)$\"));\n    })();\n    const isUnit = (unit, accepted) => exists(accepted, acc => exists(units[acc], check => unit === check));\n    const parse = (input, accepted) => {\n      const match = Optional.from(pattern.exec(input));\n      return match.bind(array => {\n        const value = Number(array[1]);\n        const unitRaw = array[2];\n        if (isUnit(unitRaw, accepted)) {\n          return Optional.some({\n            value,\n            unit: unitRaw\n          });\n        } else {\n          return Optional.none();\n        }\n      });\n    };\n\n    const rPercentageBasedSizeRegex = /(\\d+(\\.\\d+)?)%/;\n    const rPixelBasedSizeRegex = /(\\d+(\\.\\d+)?)px|em/;\n    const isCol$2 = isTag('col');\n    const getPercentSize = (elm, outerGetter, innerGetter) => {\n      const relativeParent = parentElement(elm).getOrThunk(() => getBody$1(owner(elm)));\n      return outerGetter(elm) / innerGetter(relativeParent) * 100;\n    };\n    const setPixelWidth = (cell, amount) => {\n      set$1(cell, 'width', amount + 'px');\n    };\n    const setPercentageWidth = (cell, amount) => {\n      set$1(cell, 'width', amount + '%');\n    };\n    const setHeight = (cell, amount) => {\n      set$1(cell, 'height', amount + 'px');\n    };\n    const getHeightValue = cell => getRuntime(cell) + 'px';\n    const convert = (cell, number, getter, setter) => {\n      const newSize = table(cell).map(table => {\n        const total = getter(table);\n        return Math.floor(number / 100 * total);\n      }).getOr(number);\n      setter(cell, newSize);\n      return newSize;\n    };\n    const normalizePixelSize = (value, cell, getter, setter) => {\n      const number = parseFloat(value);\n      return endsWith(value, '%') && name(cell) !== 'table' ? convert(cell, number, getter, setter) : number;\n    };\n    const getTotalHeight = cell => {\n      const value = getHeightValue(cell);\n      if (!value) {\n        return get$8(cell);\n      }\n      return normalizePixelSize(value, cell, get$8, setHeight);\n    };\n    const get$7 = (cell, type, f) => {\n      const v = f(cell);\n      const span = getSpan(cell, type);\n      return v / span;\n    };\n    const getRaw$1 = (element, prop) => {\n      return getRaw$2(element, prop).orThunk(() => {\n        return getOpt(element, prop).map(val => val + 'px');\n      });\n    };\n    const getRawWidth$1 = element => getRaw$1(element, 'width');\n    const getRawHeight = element => getRaw$1(element, 'height');\n    const getPercentageWidth = cell => getPercentSize(cell, get$9, getInner);\n    const getPixelWidth$1 = cell => isCol$2(cell) ? get$9(cell) : getRuntime$1(cell);\n    const getHeight = cell => {\n      return get$7(cell, 'rowspan', getTotalHeight);\n    };\n    const getGenericWidth = cell => {\n      const width = getRawWidth$1(cell);\n      return width.bind(w => parse(w, ['fixed', 'relative', 'empty']));\n    };\n    const setGenericWidth = (cell, amount, unit) => {\n      set$1(cell, 'width', amount + unit);\n    };\n    const getPixelTableWidth = table => get$9(table) + 'px';\n    const getPercentTableWidth = table => getPercentSize(table, get$9, getInner) + '%';\n    const isPercentSizing$1 = table => getRawWidth$1(table).exists(size => rPercentageBasedSizeRegex.test(size));\n    const isPixelSizing$1 = table => getRawWidth$1(table).exists(size => rPixelBasedSizeRegex.test(size));\n    const isNoneSizing$1 = table => getRawWidth$1(table).isNone();\n    const percentageBasedSizeRegex = constant(rPercentageBasedSizeRegex);\n\n    const isCol$1 = isTag('col');\n    const getRawW = cell => {\n      return getRawWidth$1(cell).getOrThunk(() => getPixelWidth$1(cell) + 'px');\n    };\n    const getRawH = cell => {\n      return getRawHeight(cell).getOrThunk(() => getHeight(cell) + 'px');\n    };\n    const justCols = warehouse => map$1(Warehouse.justColumns(warehouse), column => Optional.from(column.element));\n    const isValidColumn = cell => {\n      const browser = detect$2().browser;\n      const supportsColWidths = browser.isChromium() || browser.isFirefox();\n      return isCol$1(cell) ? supportsColWidths : true;\n    };\n    const getDimension = (cellOpt, index, backups, filter, getter, fallback) => cellOpt.filter(filter).fold(() => fallback(deduce(backups, index)), cell => getter(cell));\n    const getWidthFrom = (warehouse, table, getWidth, fallback) => {\n      const columnCells = columns(warehouse);\n      const columns$1 = Warehouse.hasColumns(warehouse) ? justCols(warehouse) : columnCells;\n      const backups = [Optional.some(width.edge(table))].concat(map$1(width.positions(columnCells, table), pos => pos.map(p => p.x)));\n      const colFilter = not(hasColspan);\n      return map$1(columns$1, (cellOption, c) => {\n        return getDimension(cellOption, c, backups, colFilter, column => {\n          if (isValidColumn(column)) {\n            return getWidth(column);\n          } else {\n            const cell = bindFrom(columnCells[c], identity);\n            return getDimension(cell, c, backups, colFilter, cell => fallback(Optional.some(get$9(cell))), fallback);\n          }\n        }, fallback);\n      });\n    };\n    const getDeduced = deduced => {\n      return deduced.map(d => {\n        return d + 'px';\n      }).getOr('');\n    };\n    const getRawWidths = (warehouse, table) => {\n      return getWidthFrom(warehouse, table, getRawW, getDeduced);\n    };\n    const getPercentageWidths = (warehouse, table, tableSize) => {\n      return getWidthFrom(warehouse, table, getPercentageWidth, deduced => {\n        return deduced.fold(() => {\n          return tableSize.minCellWidth();\n        }, cellWidth => {\n          return cellWidth / tableSize.pixelWidth() * 100;\n        });\n      });\n    };\n    const getPixelWidths = (warehouse, table, tableSize) => {\n      return getWidthFrom(warehouse, table, getPixelWidth$1, deduced => {\n        return deduced.getOrThunk(tableSize.minCellWidth);\n      });\n    };\n    const getHeightFrom = (warehouse, table, direction, getHeight, fallback) => {\n      const rows$1 = rows(warehouse);\n      const backups = [Optional.some(direction.edge(table))].concat(map$1(direction.positions(rows$1, table), pos => pos.map(p => p.y)));\n      return map$1(rows$1, (cellOption, c) => {\n        return getDimension(cellOption, c, backups, not(hasRowspan), getHeight, fallback);\n      });\n    };\n    const getPixelHeights = (warehouse, table, direction) => {\n      return getHeightFrom(warehouse, table, direction, getHeight, deduced => {\n        return deduced.getOrThunk(minHeight);\n      });\n    };\n    const getRawHeights = (warehouse, table, direction) => {\n      return getHeightFrom(warehouse, table, direction, getRawH, getDeduced);\n    };\n\n    const widthLookup = (table, getter) => () => {\n      if (inBody(table)) {\n        return getter(table);\n      } else {\n        return parseFloat(getRaw$2(table, 'width').getOr('0'));\n      }\n    };\n    const noneSize = table => {\n      const getWidth = widthLookup(table, get$9);\n      const zero = constant(0);\n      const getWidths = (warehouse, tableSize) => getPixelWidths(warehouse, table, tableSize);\n      return {\n        width: getWidth,\n        pixelWidth: getWidth,\n        getWidths,\n        getCellDelta: zero,\n        singleColumnWidth: constant([0]),\n        minCellWidth: zero,\n        setElementWidth: noop,\n        adjustTableWidth: noop,\n        isRelative: true,\n        label: 'none'\n      };\n    };\n    const percentageSize = table => {\n      const getFloatWidth = widthLookup(table, elem => parseFloat(getPercentTableWidth(elem)));\n      const getWidth = widthLookup(table, get$9);\n      const getCellDelta = delta => delta / getWidth() * 100;\n      const singleColumnWidth = (w, _delta) => [100 - w];\n      const minCellWidth = () => minWidth() / getWidth() * 100;\n      const adjustTableWidth = delta => {\n        const currentWidth = getFloatWidth();\n        const change = delta / 100 * currentWidth;\n        const newWidth = currentWidth + change;\n        setPercentageWidth(table, newWidth);\n      };\n      const getWidths = (warehouse, tableSize) => getPercentageWidths(warehouse, table, tableSize);\n      return {\n        width: getFloatWidth,\n        pixelWidth: getWidth,\n        getWidths,\n        getCellDelta,\n        singleColumnWidth,\n        minCellWidth,\n        setElementWidth: setPercentageWidth,\n        adjustTableWidth,\n        isRelative: true,\n        label: 'percent'\n      };\n    };\n    const pixelSize = table => {\n      const getWidth = widthLookup(table, get$9);\n      const getCellDelta = identity;\n      const singleColumnWidth = (w, delta) => {\n        const newNext = Math.max(minWidth(), w + delta);\n        return [newNext - w];\n      };\n      const adjustTableWidth = delta => {\n        const newWidth = getWidth() + delta;\n        setPixelWidth(table, newWidth);\n      };\n      const getWidths = (warehouse, tableSize) => getPixelWidths(warehouse, table, tableSize);\n      return {\n        width: getWidth,\n        pixelWidth: getWidth,\n        getWidths,\n        getCellDelta,\n        singleColumnWidth,\n        minCellWidth: minWidth,\n        setElementWidth: setPixelWidth,\n        adjustTableWidth,\n        isRelative: false,\n        label: 'pixel'\n      };\n    };\n    const chooseSize = (element, width) => {\n      const percentMatch = percentageBasedSizeRegex().exec(width);\n      if (percentMatch !== null) {\n        return percentageSize(element);\n      } else {\n        return pixelSize(element);\n      }\n    };\n    const getTableSize = table => {\n      const width = getRawWidth$1(table);\n      return width.fold(() => noneSize(table), w => chooseSize(table, w));\n    };\n    const TableSize = {\n      getTableSize,\n      pixelSize,\n      percentageSize,\n      noneSize\n    };\n\n    const statsStruct = (minRow, minCol, maxRow, maxCol, allCells, selectedCells) => ({\n      minRow,\n      minCol,\n      maxRow,\n      maxCol,\n      allCells,\n      selectedCells\n    });\n    const findSelectedStats = (house, isSelected) => {\n      const totalColumns = house.grid.columns;\n      const totalRows = house.grid.rows;\n      let minRow = totalRows;\n      let minCol = totalColumns;\n      let maxRow = 0;\n      let maxCol = 0;\n      const allCells = [];\n      const selectedCells = [];\n      each$1(house.access, detail => {\n        allCells.push(detail);\n        if (isSelected(detail)) {\n          selectedCells.push(detail);\n          const startRow = detail.row;\n          const endRow = startRow + detail.rowspan - 1;\n          const startCol = detail.column;\n          const endCol = startCol + detail.colspan - 1;\n          if (startRow < minRow) {\n            minRow = startRow;\n          } else if (endRow > maxRow) {\n            maxRow = endRow;\n          }\n          if (startCol < minCol) {\n            minCol = startCol;\n          } else if (endCol > maxCol) {\n            maxCol = endCol;\n          }\n        }\n      });\n      return statsStruct(minRow, minCol, maxRow, maxCol, allCells, selectedCells);\n    };\n    const makeCell = (list, seenSelected, rowIndex) => {\n      const row = list[rowIndex].element;\n      const td = SugarElement.fromTag('td');\n      append$1(td, SugarElement.fromTag('br'));\n      const f = seenSelected ? append$1 : prepend;\n      f(row, td);\n    };\n    const fillInGaps = (list, house, stats, isSelected) => {\n      const rows = filter$2(list, row => row.section !== 'colgroup');\n      const totalColumns = house.grid.columns;\n      const totalRows = house.grid.rows;\n      for (let i = 0; i < totalRows; i++) {\n        let seenSelected = false;\n        for (let j = 0; j < totalColumns; j++) {\n          if (!(i < stats.minRow || i > stats.maxRow || j < stats.minCol || j > stats.maxCol)) {\n            const needCell = Warehouse.getAt(house, i, j).filter(isSelected).isNone();\n            if (needCell) {\n              makeCell(rows, seenSelected, i);\n            } else {\n              seenSelected = true;\n            }\n          }\n        }\n      }\n    };\n    const clean = (replica, stats, house, widthDelta) => {\n      each$1(house.columns, col => {\n        if (col.column < stats.minCol || col.column > stats.maxCol) {\n          remove$6(col.element);\n        }\n      });\n      const emptyRows = filter$2(firstLayer(replica, 'tr'), row => row.dom.childElementCount === 0);\n      each$2(emptyRows, remove$6);\n      if (stats.minCol === stats.maxCol || stats.minRow === stats.maxRow) {\n        each$2(firstLayer(replica, 'th,td'), cell => {\n          remove$7(cell, 'rowspan');\n          remove$7(cell, 'colspan');\n        });\n      }\n      remove$7(replica, LOCKED_COL_ATTR);\n      remove$7(replica, 'data-snooker-col-series');\n      const tableSize = TableSize.getTableSize(replica);\n      tableSize.adjustTableWidth(widthDelta);\n    };\n    const getTableWidthDelta = (table, warehouse, tableSize, stats) => {\n      if (stats.minCol === 0 && warehouse.grid.columns === stats.maxCol + 1) {\n        return 0;\n      }\n      const colWidths = getPixelWidths(warehouse, table, tableSize);\n      const allColsWidth = foldl(colWidths, (acc, width) => acc + width, 0);\n      const selectedColsWidth = foldl(colWidths.slice(stats.minCol, stats.maxCol + 1), (acc, width) => acc + width, 0);\n      const newWidth = selectedColsWidth / allColsWidth * tableSize.pixelWidth();\n      const delta = newWidth - tableSize.pixelWidth();\n      return tableSize.getCellDelta(delta);\n    };\n    const extract$1 = (table, selectedSelector) => {\n      const isSelected = detail => is$2(detail.element, selectedSelector);\n      const replica = deep(table);\n      const list = fromTable$1(replica);\n      const tableSize = TableSize.getTableSize(table);\n      const replicaHouse = Warehouse.generate(list);\n      const replicaStats = findSelectedStats(replicaHouse, isSelected);\n      const selector = 'th:not(' + selectedSelector + ')' + ',td:not(' + selectedSelector + ')';\n      const unselectedCells = filterFirstLayer(replica, 'th,td', cell => is$2(cell, selector));\n      each$2(unselectedCells, remove$6);\n      fillInGaps(list, replicaHouse, replicaStats, isSelected);\n      const house = Warehouse.fromTable(table);\n      const widthDelta = getTableWidthDelta(table, house, tableSize, replicaStats);\n      clean(replica, replicaStats, replicaHouse, widthDelta);\n      return replica;\n    };\n\n    const nbsp = '\\xA0';\n\n    const NodeValue = (is, name) => {\n      const get = element => {\n        if (!is(element)) {\n          throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n        }\n        return getOption(element).getOr('');\n      };\n      const getOption = element => is(element) ? Optional.from(element.dom.nodeValue) : Optional.none();\n      const set = (element, value) => {\n        if (!is(element)) {\n          throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n        }\n        element.dom.nodeValue = value;\n      };\n      return {\n        get,\n        getOption,\n        set\n      };\n    };\n\n    const api = NodeValue(isText, 'text');\n    const get$6 = element => api.get(element);\n    const getOption = element => api.getOption(element);\n    const set = (element, value) => api.set(element, value);\n\n    const getEnd = element => name(element) === 'img' ? 1 : getOption(element).fold(() => children$2(element).length, v => v.length);\n    const isTextNodeWithCursorPosition = el => getOption(el).filter(text => text.trim().length !== 0 || text.indexOf(nbsp) > -1).isSome();\n    const isContentEditableFalse = elem => isHTMLElement(elem) && get$b(elem, 'contenteditable') === 'false';\n    const elementsWithCursorPosition = ['img', 'br'];\n    const isCursorPosition = elem => {\n      const hasCursorPosition = isTextNodeWithCursorPosition(elem);\n      return hasCursorPosition || contains$2(elementsWithCursorPosition, name(elem)) || isContentEditableFalse(elem);\n    };\n\n    const first = element => descendant$1(element, isCursorPosition);\n    const last$1 = element => descendantRtl(element, isCursorPosition);\n    const descendantRtl = (scope, predicate) => {\n      const descend = element => {\n        const children = children$2(element);\n        for (let i = children.length - 1; i >= 0; i--) {\n          const child = children[i];\n          if (predicate(child)) {\n            return Optional.some(child);\n          }\n          const res = descend(child);\n          if (res.isSome()) {\n            return res;\n          }\n        }\n        return Optional.none();\n      };\n      return descend(scope);\n    };\n\n    const transferableAttributes = {\n      scope: ['row', 'col']\n    };\n    const createCell = doc => () => {\n      const td = SugarElement.fromTag('td', doc.dom);\n      append$1(td, SugarElement.fromTag('br', doc.dom));\n      return td;\n    };\n    const createCol = doc => () => {\n      return SugarElement.fromTag('col', doc.dom);\n    };\n    const createColgroup = doc => () => {\n      return SugarElement.fromTag('colgroup', doc.dom);\n    };\n    const createRow$1 = doc => () => {\n      return SugarElement.fromTag('tr', doc.dom);\n    };\n    const replace$1 = (cell, tag, attrs) => {\n      const replica = copy$2(cell, tag);\n      each$1(attrs, (v, k) => {\n        if (v === null) {\n          remove$7(replica, k);\n        } else {\n          set$2(replica, k, v);\n        }\n      });\n      return replica;\n    };\n    const pasteReplace = cell => {\n      return cell;\n    };\n    const cloneFormats = (oldCell, newCell, formats) => {\n      const first$1 = first(oldCell);\n      return first$1.map(firstText => {\n        const formatSelector = formats.join(',');\n        const parents = ancestors$3(firstText, formatSelector, element => {\n          return eq$1(element, oldCell);\n        });\n        return foldr(parents, (last, parent) => {\n          const clonedFormat = shallow(parent);\n          append$1(last, clonedFormat);\n          return clonedFormat;\n        }, newCell);\n      }).getOr(newCell);\n    };\n    const cloneAppropriateAttributes = (original, clone) => {\n      each$1(transferableAttributes, (validAttributes, attributeName) => getOpt(original, attributeName).filter(attribute => contains$2(validAttributes, attribute)).each(attribute => set$2(clone, attributeName, attribute)));\n    };\n    const cellOperations = (mutate, doc, formatsToClone) => {\n      const cloneCss = (prev, clone) => {\n        copy$1(prev.element, clone);\n        remove$5(clone, 'height');\n        if (prev.colspan !== 1) {\n          remove$5(clone, 'width');\n        }\n      };\n      const newCell = prev => {\n        const td = SugarElement.fromTag(name(prev.element), doc.dom);\n        const formats = formatsToClone.getOr(['strong', 'em', 'b', 'i', 'span', 'font', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'div']);\n        const lastNode = formats.length > 0 ? cloneFormats(prev.element, td, formats) : td;\n        append$1(lastNode, SugarElement.fromTag('br'));\n        cloneCss(prev, td);\n        cloneAppropriateAttributes(prev.element, td);\n        mutate(prev.element, td);\n        return td;\n      };\n      const newCol = prev => {\n        const col = SugarElement.fromTag(name(prev.element), doc.dom);\n        cloneCss(prev, col);\n        mutate(prev.element, col);\n        return col;\n      };\n      return {\n        col: newCol,\n        colgroup: createColgroup(doc),\n        row: createRow$1(doc),\n        cell: newCell,\n        replace: replace$1,\n        colGap: createCol(doc),\n        gap: createCell(doc)\n      };\n    };\n    const paste$1 = doc => {\n      return {\n        col: createCol(doc),\n        colgroup: createColgroup(doc),\n        row: createRow$1(doc),\n        cell: createCell(doc),\n        replace: pasteReplace,\n        colGap: createCol(doc),\n        gap: createCell(doc)\n      };\n    };\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      return children$2(SugarElement.fromDom(div));\n    };\n    const fromDom = nodes => map$1(nodes, SugarElement.fromDom);\n\n    const option = name => editor => editor.options.get(name);\n    const defaultWidth = '100%';\n    const getPixelForcedWidth = editor => {\n      var _a;\n      const dom = editor.dom;\n      const parentBlock = (_a = dom.getParent(editor.selection.getStart(), dom.isBlock)) !== null && _a !== void 0 ? _a : editor.getBody();\n      return getInner(SugarElement.fromDom(parentBlock)) + 'px';\n    };\n    const determineDefaultTableStyles = (editor, defaultStyles) => {\n      if (isTableResponsiveForced(editor) || !shouldStyleWithCss(editor)) {\n        return defaultStyles;\n      } else if (isTablePixelsForced(editor)) {\n        return {\n          ...defaultStyles,\n          width: getPixelForcedWidth(editor)\n        };\n      } else {\n        return {\n          ...defaultStyles,\n          width: defaultWidth\n        };\n      }\n    };\n    const determineDefaultTableAttributes = (editor, defaultAttributes) => {\n      if (isTableResponsiveForced(editor) || shouldStyleWithCss(editor)) {\n        return defaultAttributes;\n      } else if (isTablePixelsForced(editor)) {\n        return {\n          ...defaultAttributes,\n          width: getPixelForcedWidth(editor)\n        };\n      } else {\n        return {\n          ...defaultAttributes,\n          width: defaultWidth\n        };\n      }\n    };\n    const register = editor => {\n      const registerOption = editor.options.register;\n      registerOption('table_clone_elements', {\n        processor: 'string[]'\n      });\n      registerOption('table_use_colgroups', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('table_header_type', {\n        processor: value => {\n          const valid = contains$2(['section', 'cells', 'sectionCells', 'auto'], value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: 'Must be one of: section, cells, sectionCells or auto.'\n          };\n        },\n        default: 'section'\n      });\n      registerOption('table_sizing_mode', {\n        processor: 'string',\n        default: 'auto'\n      });\n      registerOption('table_default_attributes', {\n        processor: 'object',\n        default: {\n          border: '1'\n        }\n      });\n      registerOption('table_default_styles', {\n        processor: 'object',\n        default: {\n          'border-collapse': 'collapse'\n        }\n      });\n      registerOption('table_column_resizing', {\n        processor: value => {\n          const valid = contains$2(['preservetable', 'resizetable'], value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: 'Must be preservetable, or resizetable.'\n          };\n        },\n        default: 'preservetable'\n      });\n      registerOption('table_resize_bars', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('table_style_by_css', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('table_merge_content_on_paste', {\n        processor: 'boolean',\n        default: true\n      });\n    };\n    const getTableCloneElements = editor => {\n      return Optional.from(editor.options.get('table_clone_elements'));\n    };\n    const hasTableObjectResizing = editor => {\n      const objectResizing = editor.options.get('object_resizing');\n      return contains$2(objectResizing.split(','), 'table');\n    };\n    const getTableHeaderType = option('table_header_type');\n    const getTableColumnResizingBehaviour = option('table_column_resizing');\n    const isPreserveTableColumnResizing = editor => getTableColumnResizingBehaviour(editor) === 'preservetable';\n    const isResizeTableColumnResizing = editor => getTableColumnResizingBehaviour(editor) === 'resizetable';\n    const getTableSizingMode = option('table_sizing_mode');\n    const isTablePercentagesForced = editor => getTableSizingMode(editor) === 'relative';\n    const isTablePixelsForced = editor => getTableSizingMode(editor) === 'fixed';\n    const isTableResponsiveForced = editor => getTableSizingMode(editor) === 'responsive';\n    const hasTableResizeBars = option('table_resize_bars');\n    const shouldStyleWithCss = option('table_style_by_css');\n    const shouldMergeContentOnPaste = option('table_merge_content_on_paste');\n    const getTableDefaultAttributes = editor => {\n      const options = editor.options;\n      const defaultAttributes = options.get('table_default_attributes');\n      return options.isSet('table_default_attributes') ? defaultAttributes : determineDefaultTableAttributes(editor, defaultAttributes);\n    };\n    const getTableDefaultStyles = editor => {\n      const options = editor.options;\n      const defaultStyles = options.get('table_default_styles');\n      return options.isSet('table_default_styles') ? defaultStyles : determineDefaultTableStyles(editor, defaultStyles);\n    };\n    const tableUseColumnGroup = option('table_use_colgroups');\n\n    const closest = target => closest$1(target, '[contenteditable]');\n    const isEditable$1 = (element, assumeEditable = false) => {\n      if (inBody(element)) {\n        return element.dom.isContentEditable;\n      } else {\n        return closest(element).fold(constant(assumeEditable), editable => getRaw(editable) === 'true');\n      }\n    };\n    const getRaw = element => element.dom.contentEditable;\n\n    const getBody = editor => SugarElement.fromDom(editor.getBody());\n    const getIsRoot = editor => element => eq$1(element, getBody(editor));\n    const removeDataStyle = table => {\n      remove$7(table, 'data-mce-style');\n      const removeStyleAttribute = element => remove$7(element, 'data-mce-style');\n      each$2(cells$1(table), removeStyleAttribute);\n      each$2(columns$1(table), removeStyleAttribute);\n      each$2(rows$1(table), removeStyleAttribute);\n    };\n    const getSelectionStart = editor => SugarElement.fromDom(editor.selection.getStart());\n    const getPixelWidth = elm => elm.getBoundingClientRect().width;\n    const getPixelHeight = elm => elm.getBoundingClientRect().height;\n    const getRawWidth = (editor, elm) => {\n      const raw = editor.dom.getStyle(elm, 'width') || editor.dom.getAttrib(elm, 'width');\n      return Optional.from(raw).filter(isNotEmpty);\n    };\n    const isPercentage$1 = value => /^(\\d+(\\.\\d+)?)%$/.test(value);\n    const isPixel = value => /^(\\d+(\\.\\d+)?)px$/.test(value);\n    const isInEditableContext$1 = cell => closest$2(cell, isTag('table')).exists(isEditable$1);\n\n    const inSelection = (bounds, detail) => {\n      const leftEdge = detail.column;\n      const rightEdge = detail.column + detail.colspan - 1;\n      const topEdge = detail.row;\n      const bottomEdge = detail.row + detail.rowspan - 1;\n      return leftEdge <= bounds.finishCol && rightEdge >= bounds.startCol && topEdge <= bounds.finishRow && bottomEdge >= bounds.startRow;\n    };\n    const isWithin = (bounds, detail) => {\n      return detail.column >= bounds.startCol && detail.column + detail.colspan - 1 <= bounds.finishCol && detail.row >= bounds.startRow && detail.row + detail.rowspan - 1 <= bounds.finishRow;\n    };\n    const isRectangular = (warehouse, bounds) => {\n      let isRect = true;\n      const detailIsWithin = curry(isWithin, bounds);\n      for (let i = bounds.startRow; i <= bounds.finishRow; i++) {\n        for (let j = bounds.startCol; j <= bounds.finishCol; j++) {\n          isRect = isRect && Warehouse.getAt(warehouse, i, j).exists(detailIsWithin);\n        }\n      }\n      return isRect ? Optional.some(bounds) : Optional.none();\n    };\n\n    const getBounds = (detailA, detailB) => {\n      return bounds(Math.min(detailA.row, detailB.row), Math.min(detailA.column, detailB.column), Math.max(detailA.row + detailA.rowspan - 1, detailB.row + detailB.rowspan - 1), Math.max(detailA.column + detailA.colspan - 1, detailB.column + detailB.colspan - 1));\n    };\n    const getAnyBox = (warehouse, startCell, finishCell) => {\n      const startCoords = Warehouse.findItem(warehouse, startCell, eq$1);\n      const finishCoords = Warehouse.findItem(warehouse, finishCell, eq$1);\n      return startCoords.bind(sc => {\n        return finishCoords.map(fc => {\n          return getBounds(sc, fc);\n        });\n      });\n    };\n    const getBox$1 = (warehouse, startCell, finishCell) => {\n      return getAnyBox(warehouse, startCell, finishCell).bind(bounds => {\n        return isRectangular(warehouse, bounds);\n      });\n    };\n\n    const moveBy$1 = (warehouse, cell, row, column) => {\n      return Warehouse.findItem(warehouse, cell, eq$1).bind(detail => {\n        const startRow = row > 0 ? detail.row + detail.rowspan - 1 : detail.row;\n        const startCol = column > 0 ? detail.column + detail.colspan - 1 : detail.column;\n        const dest = Warehouse.getAt(warehouse, startRow + row, startCol + column);\n        return dest.map(d => {\n          return d.element;\n        });\n      });\n    };\n    const intercepts$1 = (warehouse, start, finish) => {\n      return getAnyBox(warehouse, start, finish).map(bounds => {\n        const inside = Warehouse.filterItems(warehouse, curry(inSelection, bounds));\n        return map$1(inside, detail => {\n          return detail.element;\n        });\n      });\n    };\n    const parentCell = (warehouse, innerCell) => {\n      const isContainedBy = (c1, c2) => {\n        return contains$1(c2, c1);\n      };\n      return Warehouse.findItem(warehouse, innerCell, isContainedBy).map(detail => {\n        return detail.element;\n      });\n    };\n\n    const moveBy = (cell, deltaRow, deltaColumn) => {\n      return table(cell).bind(table => {\n        const warehouse = getWarehouse(table);\n        return moveBy$1(warehouse, cell, deltaRow, deltaColumn);\n      });\n    };\n    const intercepts = (table, first, last) => {\n      const warehouse = getWarehouse(table);\n      return intercepts$1(warehouse, first, last);\n    };\n    const nestedIntercepts = (table, first, firstTable, last, lastTable) => {\n      const warehouse = getWarehouse(table);\n      const optStartCell = eq$1(table, firstTable) ? Optional.some(first) : parentCell(warehouse, first);\n      const optLastCell = eq$1(table, lastTable) ? Optional.some(last) : parentCell(warehouse, last);\n      return optStartCell.bind(startCell => optLastCell.bind(lastCell => intercepts$1(warehouse, startCell, lastCell)));\n    };\n    const getBox = (table, first, last) => {\n      const warehouse = getWarehouse(table);\n      return getBox$1(warehouse, first, last);\n    };\n    const getWarehouse = Warehouse.fromTable;\n\n    var TagBoundaries = ['body', 'p', 'div', 'article', 'aside', 'figcaption', 'figure', 'footer', 'header', 'nav', 'section', 'ol', 'ul', 'li', 'table', 'thead', 'tbody', 'tfoot', 'caption', 'tr', 'td', 'th', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'pre', 'address'];\n\n    var DomUniverse = () => {\n      const clone = element => {\n        return SugarElement.fromDom(element.dom.cloneNode(false));\n      };\n      const document = element => documentOrOwner(element).dom;\n      const isBoundary = element => {\n        if (!isElement(element)) {\n          return false;\n        }\n        if (name(element) === 'body') {\n          return true;\n        }\n        return contains$2(TagBoundaries, name(element));\n      };\n      const isEmptyTag = element => {\n        if (!isElement(element)) {\n          return false;\n        }\n        return contains$2(['br', 'img', 'hr', 'input'], name(element));\n      };\n      const isNonEditable = element => isElement(element) && get$b(element, 'contenteditable') === 'false';\n      const comparePosition = (element, other) => {\n        return element.dom.compareDocumentPosition(other.dom);\n      };\n      const copyAttributesTo = (source, destination) => {\n        const as = clone$2(source);\n        setAll$1(destination, as);\n      };\n      const isSpecial = element => {\n        const tag = name(element);\n        return contains$2(['script', 'noscript', 'iframe', 'noframes', 'noembed', 'title', 'style', 'textarea', 'xmp'], tag);\n      };\n      const getLanguage = element => isElement(element) ? getOpt(element, 'lang') : Optional.none();\n      return {\n        up: constant({\n          selector: ancestor$1,\n          closest: closest$1,\n          predicate: ancestor$2,\n          all: parents\n        }),\n        down: constant({\n          selector: descendants,\n          predicate: descendants$1\n        }),\n        styles: constant({\n          get: get$a,\n          getRaw: getRaw$2,\n          set: set$1,\n          remove: remove$5\n        }),\n        attrs: constant({\n          get: get$b,\n          set: set$2,\n          remove: remove$7,\n          copyTo: copyAttributesTo\n        }),\n        insert: constant({\n          before: before$3,\n          after: after$5,\n          afterAll: after$4,\n          append: append$1,\n          appendAll: append,\n          prepend: prepend,\n          wrap: wrap\n        }),\n        remove: constant({\n          unwrap: unwrap,\n          remove: remove$6\n        }),\n        create: constant({\n          nu: SugarElement.fromTag,\n          clone,\n          text: SugarElement.fromText\n        }),\n        query: constant({\n          comparePosition,\n          prevSibling: prevSibling,\n          nextSibling: nextSibling\n        }),\n        property: constant({\n          children: children$2,\n          name: name,\n          parent: parent,\n          document,\n          isText: isText,\n          isComment: isComment,\n          isElement: isElement,\n          isSpecial,\n          getLanguage,\n          getText: get$6,\n          setText: set,\n          isBoundary,\n          isEmptyTag,\n          isNonEditable\n        }),\n        eq: eq$1,\n        is: is$1\n      };\n    };\n\n    const all = (universe, look, elements, f) => {\n      const head = elements[0];\n      const tail = elements.slice(1);\n      return f(universe, look, head, tail);\n    };\n    const oneAll = (universe, look, elements) => {\n      return elements.length > 0 ? all(universe, look, elements, unsafeOne) : Optional.none();\n    };\n    const unsafeOne = (universe, look, head, tail) => {\n      const start = look(universe, head);\n      return foldr(tail, (b, a) => {\n        const current = look(universe, a);\n        return commonElement(universe, b, current);\n      }, start);\n    };\n    const commonElement = (universe, start, end) => {\n      return start.bind(s => {\n        return end.filter(curry(universe.eq, s));\n      });\n    };\n\n    const eq = (universe, item) => {\n      return curry(universe.eq, item);\n    };\n    const ancestors$2 = (universe, start, end, isRoot = never) => {\n      const ps1 = [start].concat(universe.up().all(start));\n      const ps2 = [end].concat(universe.up().all(end));\n      const prune = path => {\n        const index = findIndex(path, isRoot);\n        return index.fold(() => {\n          return path;\n        }, ind => {\n          return path.slice(0, ind + 1);\n        });\n      };\n      const pruned1 = prune(ps1);\n      const pruned2 = prune(ps2);\n      const shared = find$1(pruned1, x => {\n        return exists(pruned2, eq(universe, x));\n      });\n      return {\n        firstpath: pruned1,\n        secondpath: pruned2,\n        shared\n      };\n    };\n\n    const sharedOne$1 = oneAll;\n    const ancestors$1 = ancestors$2;\n\n    const universe$3 = DomUniverse();\n    const sharedOne = (look, elements) => {\n      return sharedOne$1(universe$3, (_universe, element) => {\n        return look(element);\n      }, elements);\n    };\n    const ancestors = (start, finish, isRoot) => {\n      return ancestors$1(universe$3, start, finish, isRoot);\n    };\n\n    const lookupTable = container => {\n      return ancestor$1(container, 'table');\n    };\n    const identify = (start, finish, isRoot) => {\n      const getIsRoot = rootTable => {\n        return element => {\n          return isRoot !== undefined && isRoot(element) || eq$1(element, rootTable);\n        };\n      };\n      if (eq$1(start, finish)) {\n        return Optional.some({\n          boxes: Optional.some([start]),\n          start,\n          finish\n        });\n      } else {\n        return lookupTable(start).bind(startTable => {\n          return lookupTable(finish).bind(finishTable => {\n            if (eq$1(startTable, finishTable)) {\n              return Optional.some({\n                boxes: intercepts(startTable, start, finish),\n                start,\n                finish\n              });\n            } else if (contains$1(startTable, finishTable)) {\n              const ancestorCells = ancestors$3(finish, 'td,th', getIsRoot(startTable));\n              const finishCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : finish;\n              return Optional.some({\n                boxes: nestedIntercepts(startTable, start, startTable, finish, finishTable),\n                start,\n                finish: finishCell\n              });\n            } else if (contains$1(finishTable, startTable)) {\n              const ancestorCells = ancestors$3(start, 'td,th', getIsRoot(finishTable));\n              const startCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : start;\n              return Optional.some({\n                boxes: nestedIntercepts(finishTable, start, startTable, finish, finishTable),\n                start,\n                finish: startCell\n              });\n            } else {\n              return ancestors(start, finish).shared.bind(lca => {\n                return closest$1(lca, 'table', isRoot).bind(lcaTable => {\n                  const finishAncestorCells = ancestors$3(finish, 'td,th', getIsRoot(lcaTable));\n                  const finishCell = finishAncestorCells.length > 0 ? finishAncestorCells[finishAncestorCells.length - 1] : finish;\n                  const startAncestorCells = ancestors$3(start, 'td,th', getIsRoot(lcaTable));\n                  const startCell = startAncestorCells.length > 0 ? startAncestorCells[startAncestorCells.length - 1] : start;\n                  return Optional.some({\n                    boxes: nestedIntercepts(lcaTable, start, startTable, finish, finishTable),\n                    start: startCell,\n                    finish: finishCell\n                  });\n                });\n              });\n            }\n          });\n        });\n      }\n    };\n    const retrieve$1 = (container, selector) => {\n      const sels = descendants(container, selector);\n      return sels.length > 0 ? Optional.some(sels) : Optional.none();\n    };\n    const getLast = (boxes, lastSelectedSelector) => {\n      return find$1(boxes, box => {\n        return is$2(box, lastSelectedSelector);\n      });\n    };\n    const getEdges = (container, firstSelectedSelector, lastSelectedSelector) => {\n      return descendant(container, firstSelectedSelector).bind(first => {\n        return descendant(container, lastSelectedSelector).bind(last => {\n          return sharedOne(lookupTable, [first, last]).map(table => {\n            return {\n              first,\n              last,\n              table\n            };\n          });\n        });\n      });\n    };\n    const expandTo = (finish, firstSelectedSelector) => {\n      return ancestor$1(finish, 'table').bind(table => {\n        return descendant(table, firstSelectedSelector).bind(start => {\n          return identify(start, finish).bind(identified => {\n            return identified.boxes.map(boxes => {\n              return {\n                boxes,\n                start: identified.start,\n                finish: identified.finish\n              };\n            });\n          });\n        });\n      });\n    };\n    const shiftSelection = (boxes, deltaRow, deltaColumn, firstSelectedSelector, lastSelectedSelector) => {\n      return getLast(boxes, lastSelectedSelector).bind(last => {\n        return moveBy(last, deltaRow, deltaColumn).bind(finish => {\n          return expandTo(finish, firstSelectedSelector);\n        });\n      });\n    };\n\n    const retrieve = (container, selector) => {\n      return retrieve$1(container, selector);\n    };\n    const retrieveBox = (container, firstSelectedSelector, lastSelectedSelector) => {\n      return getEdges(container, firstSelectedSelector, lastSelectedSelector).bind(edges => {\n        const isRoot = ancestor => {\n          return eq$1(container, ancestor);\n        };\n        const sectionSelector = 'thead,tfoot,tbody,table';\n        const firstAncestor = ancestor$1(edges.first, sectionSelector, isRoot);\n        const lastAncestor = ancestor$1(edges.last, sectionSelector, isRoot);\n        return firstAncestor.bind(fA => {\n          return lastAncestor.bind(lA => {\n            return eq$1(fA, lA) ? getBox(edges.table, edges.first, edges.last) : Optional.none();\n          });\n        });\n      });\n    };\n\n    const selection = identity;\n    const unmergable = selectedCells => {\n      const hasSpan = (elem, type) => getOpt(elem, type).exists(span => parseInt(span, 10) > 1);\n      const hasRowOrColSpan = elem => hasSpan(elem, 'rowspan') || hasSpan(elem, 'colspan');\n      return selectedCells.length > 0 && forall(selectedCells, hasRowOrColSpan) ? Optional.some(selectedCells) : Optional.none();\n    };\n    const mergable = (table, selectedCells, ephemera) => {\n      if (selectedCells.length <= 1) {\n        return Optional.none();\n      } else {\n        return retrieveBox(table, ephemera.firstSelectedSelector, ephemera.lastSelectedSelector).map(bounds => ({\n          bounds,\n          cells: selectedCells\n        }));\n      }\n    };\n\n    const strSelected = 'data-mce-selected';\n    const strSelectedSelector = 'td[' + strSelected + '],th[' + strSelected + ']';\n    const strAttributeSelector = '[' + strSelected + ']';\n    const strFirstSelected = 'data-mce-first-selected';\n    const strFirstSelectedSelector = 'td[' + strFirstSelected + '],th[' + strFirstSelected + ']';\n    const strLastSelected = 'data-mce-last-selected';\n    const strLastSelectedSelector = 'td[' + strLastSelected + '],th[' + strLastSelected + ']';\n    const attributeSelector = strAttributeSelector;\n    const ephemera = {\n      selected: strSelected,\n      selectedSelector: strSelectedSelector,\n      firstSelected: strFirstSelected,\n      firstSelectedSelector: strFirstSelectedSelector,\n      lastSelected: strLastSelected,\n      lastSelectedSelector: strLastSelectedSelector\n    };\n\n    const forMenu = (selectedCells, table, cell) => ({\n      element: cell,\n      mergable: mergable(table, selectedCells, ephemera),\n      unmergable: unmergable(selectedCells),\n      selection: selection(selectedCells)\n    });\n    const paste = (element, clipboard, generators) => ({\n      element,\n      clipboard,\n      generators\n    });\n    const pasteRows = (selectedCells, _cell, clipboard, generators) => ({\n      selection: selection(selectedCells),\n      clipboard,\n      generators\n    });\n\n    const getSelectionCellFallback = element => table(element).bind(table => retrieve(table, ephemera.firstSelectedSelector)).fold(constant(element), cells => cells[0]);\n    const getSelectionFromSelector = selector => (initCell, isRoot) => {\n      const cellName = name(initCell);\n      const cell = cellName === 'col' || cellName === 'colgroup' ? getSelectionCellFallback(initCell) : initCell;\n      return closest$1(cell, selector, isRoot);\n    };\n    const getSelectionCellOrCaption = getSelectionFromSelector('th,td,caption');\n    const getSelectionCell = getSelectionFromSelector('th,td');\n    const getCellsFromSelection = editor => fromDom(editor.model.table.getSelectedCells());\n    const getCellsFromFakeSelection = editor => filter$2(getCellsFromSelection(editor), cell => is$2(cell, ephemera.selectedSelector));\n\n    const extractSelected = cells => {\n      return table(cells[0]).map(table => {\n        const replica = extract$1(table, attributeSelector);\n        removeDataStyle(replica);\n        return [replica];\n      });\n    };\n    const serializeElements = (editor, elements) => map$1(elements, elm => editor.selection.serializer.serialize(elm.dom, {})).join('');\n    const getTextContent = elements => map$1(elements, element => element.dom.innerText).join('');\n    const registerEvents = (editor, actions) => {\n      editor.on('BeforeGetContent', e => {\n        const multiCellContext = cells => {\n          e.preventDefault();\n          extractSelected(cells).each(elements => {\n            e.content = e.format === 'text' ? getTextContent(elements) : serializeElements(editor, elements);\n          });\n        };\n        if (e.selection === true) {\n          const cells = getCellsFromFakeSelection(editor);\n          if (cells.length >= 1) {\n            multiCellContext(cells);\n          }\n        }\n      });\n      editor.on('BeforeSetContent', e => {\n        if (e.selection === true && e.paste === true) {\n          const selectedCells = getCellsFromSelection(editor);\n          head(selectedCells).each(cell => {\n            table(cell).each(table => {\n              const elements = filter$2(fromHtml(e.content), content => {\n                return name(content) !== 'meta';\n              });\n              const isTable = isTag('table');\n              if (shouldMergeContentOnPaste(editor) && elements.length === 1 && isTable(elements[0])) {\n                e.preventDefault();\n                const doc = SugarElement.fromDom(editor.getDoc());\n                const generators = paste$1(doc);\n                const targets = paste(cell, elements[0], generators);\n                actions.pasteCells(table, targets).each(() => {\n                  editor.focus();\n                });\n              }\n            });\n          });\n        }\n      });\n    };\n\n    const point = (element, offset) => ({\n      element,\n      offset\n    });\n\n    const scan$1 = (universe, element, direction) => {\n      if (universe.property().isText(element) && universe.property().getText(element).trim().length === 0 || universe.property().isComment(element)) {\n        return direction(element).bind(elem => {\n          return scan$1(universe, elem, direction).orThunk(() => {\n            return Optional.some(elem);\n          });\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const toEnd = (universe, element) => {\n      if (universe.property().isText(element)) {\n        return universe.property().getText(element).length;\n      }\n      const children = universe.property().children(element);\n      return children.length;\n    };\n    const freefallRtl$2 = (universe, element) => {\n      const candidate = scan$1(universe, element, universe.query().prevSibling).getOr(element);\n      if (universe.property().isText(candidate)) {\n        return point(candidate, toEnd(universe, candidate));\n      }\n      const children = universe.property().children(candidate);\n      return children.length > 0 ? freefallRtl$2(universe, children[children.length - 1]) : point(candidate, toEnd(universe, candidate));\n    };\n\n    const freefallRtl$1 = freefallRtl$2;\n\n    const universe$2 = DomUniverse();\n    const freefallRtl = element => {\n      return freefallRtl$1(universe$2, element);\n    };\n\n    const halve = (main, other) => {\n      if (!hasColspan(main)) {\n        const width = getGenericWidth(main);\n        width.each(w => {\n          const newWidth = w.value / 2;\n          setGenericWidth(main, newWidth, w.unit);\n          setGenericWidth(other, newWidth, w.unit);\n        });\n      }\n    };\n\n    const zero = array => map$1(array, constant(0));\n    const surround = (sizes, startIndex, endIndex, results, f) => f(sizes.slice(0, startIndex)).concat(results).concat(f(sizes.slice(endIndex)));\n    const clampDeltaHelper = predicate => (sizes, index, delta, minCellSize) => {\n      if (!predicate(delta)) {\n        return delta;\n      } else {\n        const newSize = Math.max(minCellSize, sizes[index] - Math.abs(delta));\n        const diff = Math.abs(newSize - sizes[index]);\n        return delta >= 0 ? diff : -diff;\n      }\n    };\n    const clampNegativeDelta = clampDeltaHelper(delta => delta < 0);\n    const clampDelta = clampDeltaHelper(always);\n    const resizeTable = () => {\n      const calcFixedDeltas = (sizes, index, next, delta, minCellSize) => {\n        const clampedDelta = clampNegativeDelta(sizes, index, delta, minCellSize);\n        return surround(sizes, index, next + 1, [clampedDelta, 0], zero);\n      };\n      const calcRelativeDeltas = (sizes, index, delta, minCellSize) => {\n        const ratio = (100 + delta) / 100;\n        const newThis = Math.max(minCellSize, (sizes[index] + delta) / ratio);\n        return map$1(sizes, (size, idx) => {\n          const newSize = idx === index ? newThis : size / ratio;\n          return newSize - size;\n        });\n      };\n      const calcLeftEdgeDeltas = (sizes, index, next, delta, minCellSize, isRelative) => {\n        if (isRelative) {\n          return calcRelativeDeltas(sizes, index, delta, minCellSize);\n        } else {\n          return calcFixedDeltas(sizes, index, next, delta, minCellSize);\n        }\n      };\n      const calcMiddleDeltas = (sizes, _prev, index, next, delta, minCellSize, isRelative) => calcLeftEdgeDeltas(sizes, index, next, delta, minCellSize, isRelative);\n      const resizeTable = (resizer, delta) => resizer(delta);\n      const calcRightEdgeDeltas = (sizes, _prev, index, delta, minCellSize, isRelative) => {\n        if (isRelative) {\n          return calcRelativeDeltas(sizes, index, delta, minCellSize);\n        } else {\n          const clampedDelta = clampNegativeDelta(sizes, index, delta, minCellSize);\n          return zero(sizes.slice(0, index)).concat([clampedDelta]);\n        }\n      };\n      const calcRedestributedWidths = (sizes, totalWidth, pixelDelta, isRelative) => {\n        if (isRelative) {\n          const tableWidth = totalWidth + pixelDelta;\n          const ratio = tableWidth / totalWidth;\n          const newSizes = map$1(sizes, size => size / ratio);\n          return {\n            delta: ratio * 100 - 100,\n            newSizes\n          };\n        } else {\n          return {\n            delta: pixelDelta,\n            newSizes: sizes\n          };\n        }\n      };\n      return {\n        resizeTable,\n        clampTableDelta: clampNegativeDelta,\n        calcLeftEdgeDeltas,\n        calcMiddleDeltas,\n        calcRightEdgeDeltas,\n        calcRedestributedWidths\n      };\n    };\n    const preserveTable = () => {\n      const calcLeftEdgeDeltas = (sizes, index, next, delta, minCellSize) => {\n        const idx = delta >= 0 ? next : index;\n        const clampedDelta = clampDelta(sizes, idx, delta, minCellSize);\n        return surround(sizes, index, next + 1, [clampedDelta, -clampedDelta], zero);\n      };\n      const calcMiddleDeltas = (sizes, _prev, index, next, delta, minCellSize) => calcLeftEdgeDeltas(sizes, index, next, delta, minCellSize);\n      const resizeTable = (resizer, delta, isLastColumn) => {\n        if (isLastColumn) {\n          resizer(delta);\n        }\n      };\n      const calcRightEdgeDeltas = (sizes, _prev, _index, delta, _minCellSize, isRelative) => {\n        if (isRelative) {\n          return zero(sizes);\n        } else {\n          const diff = delta / sizes.length;\n          return map$1(sizes, constant(diff));\n        }\n      };\n      const clampTableDelta = (sizes, index, delta, minCellSize, isLastColumn) => {\n        if (isLastColumn) {\n          if (delta >= 0) {\n            return delta;\n          } else {\n            const maxDelta = foldl(sizes, (a, b) => a + b - minCellSize, 0);\n            return Math.max(-maxDelta, delta);\n          }\n        } else {\n          return clampNegativeDelta(sizes, index, delta, minCellSize);\n        }\n      };\n      const calcRedestributedWidths = (sizes, _totalWidth, _pixelDelta, _isRelative) => ({\n        delta: 0,\n        newSizes: sizes\n      });\n      return {\n        resizeTable,\n        clampTableDelta,\n        calcLeftEdgeDeltas,\n        calcMiddleDeltas,\n        calcRightEdgeDeltas,\n        calcRedestributedWidths\n      };\n    };\n\n    const getGridSize = table => {\n      const warehouse = Warehouse.fromTable(table);\n      return warehouse.grid;\n    };\n\n    const isHeaderCell = isTag('th');\n    const isHeaderCells = cells => forall(cells, cell => isHeaderCell(cell.element));\n    const getRowHeaderType = (isHeaderRow, isHeaderCells) => {\n      if (isHeaderRow && isHeaderCells) {\n        return 'sectionCells';\n      } else if (isHeaderRow) {\n        return 'section';\n      } else {\n        return 'cells';\n      }\n    };\n    const getRowType = row => {\n      const isHeaderRow = row.section === 'thead';\n      const isHeaderCells = is(findCommonCellType(row.cells), 'th');\n      if (row.section === 'tfoot') {\n        return {\n          type: 'footer'\n        };\n      } else if (isHeaderRow || isHeaderCells) {\n        return {\n          type: 'header',\n          subType: getRowHeaderType(isHeaderRow, isHeaderCells)\n        };\n      } else {\n        return {\n          type: 'body'\n        };\n      }\n    };\n    const findCommonCellType = cells => {\n      const headerCells = filter$2(cells, cell => isHeaderCell(cell.element));\n      if (headerCells.length === 0) {\n        return Optional.some('td');\n      } else if (headerCells.length === cells.length) {\n        return Optional.some('th');\n      } else {\n        return Optional.none();\n      }\n    };\n    const findCommonRowType = rows => {\n      const rowTypes = map$1(rows, row => getRowType(row).type);\n      const hasHeader = contains$2(rowTypes, 'header');\n      const hasFooter = contains$2(rowTypes, 'footer');\n      if (!hasHeader && !hasFooter) {\n        return Optional.some('body');\n      } else {\n        const hasBody = contains$2(rowTypes, 'body');\n        if (hasHeader && !hasBody && !hasFooter) {\n          return Optional.some('header');\n        } else if (!hasHeader && !hasBody && hasFooter) {\n          return Optional.some('footer');\n        } else {\n          return Optional.none();\n        }\n      }\n    };\n    const findTableRowHeaderType = warehouse => findMap(warehouse.all, row => {\n      const rowType = getRowType(row);\n      return rowType.type === 'header' ? Optional.from(rowType.subType) : Optional.none();\n    });\n\n    const transformCell = (cell, comparator, substitution) => elementnew(substitution(cell.element, comparator), true, cell.isLocked);\n    const transformRow = (row, section) => row.section !== section ? rowcells(row.element, row.cells, section, row.isNew) : row;\n    const section = () => ({\n      transformRow,\n      transformCell: (cell, comparator, substitution) => {\n        const newCell = substitution(cell.element, comparator);\n        const fixedCell = name(newCell) !== 'td' ? mutate$1(newCell, 'td') : newCell;\n        return elementnew(fixedCell, cell.isNew, cell.isLocked);\n      }\n    });\n    const sectionCells = () => ({\n      transformRow,\n      transformCell\n    });\n    const cells = () => ({\n      transformRow: (row, section) => {\n        const newSection = section === 'thead' ? 'tbody' : section;\n        return transformRow(row, newSection);\n      },\n      transformCell\n    });\n    const fallback = () => ({\n      transformRow: identity,\n      transformCell\n    });\n    const getTableSectionType = (table, fallback) => {\n      const warehouse = Warehouse.fromTable(table);\n      const type = findTableRowHeaderType(warehouse).getOr(fallback);\n      switch (type) {\n        case 'section':\n          return section();\n        case 'sectionCells':\n          return sectionCells();\n        case 'cells':\n          return cells();\n      }\n    };\n    const TableSection = {\n      getTableSectionType,\n      section,\n      sectionCells,\n      cells,\n      fallback\n    };\n\n    const setIfNot = (element, property, value, ignore) => {\n      if (value === ignore) {\n        remove$7(element, property);\n      } else {\n        set$2(element, property, value);\n      }\n    };\n    const insert$1 = (table, selector, element) => {\n      last$2(children(table, selector)).fold(() => prepend(table, element), child => after$5(child, element));\n    };\n    const generateSection = (table, sectionName) => {\n      const section = child(table, sectionName).getOrThunk(() => {\n        const newSection = SugarElement.fromTag(sectionName, owner(table).dom);\n        if (sectionName === 'thead') {\n          insert$1(table, 'caption,colgroup', newSection);\n        } else if (sectionName === 'colgroup') {\n          insert$1(table, 'caption', newSection);\n        } else {\n          append$1(table, newSection);\n        }\n        return newSection;\n      });\n      empty(section);\n      return section;\n    };\n    const render$1 = (table, grid) => {\n      const newRows = [];\n      const newCells = [];\n      const syncRows = gridSection => map$1(gridSection, row => {\n        if (row.isNew) {\n          newRows.push(row.element);\n        }\n        const tr = row.element;\n        empty(tr);\n        each$2(row.cells, cell => {\n          if (cell.isNew) {\n            newCells.push(cell.element);\n          }\n          setIfNot(cell.element, 'colspan', cell.colspan, 1);\n          setIfNot(cell.element, 'rowspan', cell.rowspan, 1);\n          append$1(tr, cell.element);\n        });\n        return tr;\n      });\n      const syncColGroup = gridSection => bind$2(gridSection, colGroup => map$1(colGroup.cells, col => {\n        setIfNot(col.element, 'span', col.colspan, 1);\n        return col.element;\n      }));\n      const renderSection = (gridSection, sectionName) => {\n        const section = generateSection(table, sectionName);\n        const sync = sectionName === 'colgroup' ? syncColGroup : syncRows;\n        const sectionElems = sync(gridSection);\n        append(section, sectionElems);\n      };\n      const removeSection = sectionName => {\n        child(table, sectionName).each(remove$6);\n      };\n      const renderOrRemoveSection = (gridSection, sectionName) => {\n        if (gridSection.length > 0) {\n          renderSection(gridSection, sectionName);\n        } else {\n          removeSection(sectionName);\n        }\n      };\n      const headSection = [];\n      const bodySection = [];\n      const footSection = [];\n      const columnGroupsSection = [];\n      each$2(grid, row => {\n        switch (row.section) {\n          case 'thead':\n            headSection.push(row);\n            break;\n          case 'tbody':\n            bodySection.push(row);\n            break;\n          case 'tfoot':\n            footSection.push(row);\n            break;\n          case 'colgroup':\n            columnGroupsSection.push(row);\n            break;\n        }\n      });\n      renderOrRemoveSection(columnGroupsSection, 'colgroup');\n      renderOrRemoveSection(headSection, 'thead');\n      renderOrRemoveSection(bodySection, 'tbody');\n      renderOrRemoveSection(footSection, 'tfoot');\n      return {\n        newRows,\n        newCells\n      };\n    };\n    const copy = grid => map$1(grid, row => {\n      const tr = shallow(row.element);\n      each$2(row.cells, cell => {\n        const clonedCell = deep(cell.element);\n        setIfNot(clonedCell, 'colspan', cell.colspan, 1);\n        setIfNot(clonedCell, 'rowspan', cell.rowspan, 1);\n        append$1(tr, clonedCell);\n      });\n      return tr;\n    });\n\n    const getColumn = (grid, index) => {\n      return map$1(grid, row => {\n        return getCell(row, index);\n      });\n    };\n    const getRow = (grid, index) => {\n      return grid[index];\n    };\n    const findDiff = (xs, comp) => {\n      if (xs.length === 0) {\n        return 0;\n      }\n      const first = xs[0];\n      const index = findIndex(xs, x => {\n        return !comp(first.element, x.element);\n      });\n      return index.getOr(xs.length);\n    };\n    const subgrid = (grid, row, column, comparator) => {\n      const gridRow = getRow(grid, row);\n      const isColRow = gridRow.section === 'colgroup';\n      const colspan = findDiff(gridRow.cells.slice(column), comparator);\n      const rowspan = isColRow ? 1 : findDiff(getColumn(grid.slice(row), column), comparator);\n      return {\n        colspan,\n        rowspan\n      };\n    };\n\n    const toDetails = (grid, comparator) => {\n      const seen = map$1(grid, row => map$1(row.cells, never));\n      const updateSeen = (rowIndex, columnIndex, rowspan, colspan) => {\n        for (let row = rowIndex; row < rowIndex + rowspan; row++) {\n          for (let column = columnIndex; column < columnIndex + colspan; column++) {\n            seen[row][column] = true;\n          }\n        }\n      };\n      return map$1(grid, (row, rowIndex) => {\n        const details = bind$2(row.cells, (cell, columnIndex) => {\n          if (seen[rowIndex][columnIndex] === false) {\n            const result = subgrid(grid, rowIndex, columnIndex, comparator);\n            updateSeen(rowIndex, columnIndex, result.rowspan, result.colspan);\n            return [detailnew(cell.element, result.rowspan, result.colspan, cell.isNew)];\n          } else {\n            return [];\n          }\n        });\n        return rowdetailnew(row.element, details, row.section, row.isNew);\n      });\n    };\n    const toGrid = (warehouse, generators, isNew) => {\n      const grid = [];\n      each$2(warehouse.colgroups, colgroup => {\n        const colgroupCols = [];\n        for (let columnIndex = 0; columnIndex < warehouse.grid.columns; columnIndex++) {\n          const element = Warehouse.getColumnAt(warehouse, columnIndex).map(column => elementnew(column.element, isNew, false)).getOrThunk(() => elementnew(generators.colGap(), true, false));\n          colgroupCols.push(element);\n        }\n        grid.push(rowcells(colgroup.element, colgroupCols, 'colgroup', isNew));\n      });\n      for (let rowIndex = 0; rowIndex < warehouse.grid.rows; rowIndex++) {\n        const rowCells = [];\n        for (let columnIndex = 0; columnIndex < warehouse.grid.columns; columnIndex++) {\n          const element = Warehouse.getAt(warehouse, rowIndex, columnIndex).map(item => elementnew(item.element, isNew, item.isLocked)).getOrThunk(() => elementnew(generators.gap(), true, false));\n          rowCells.push(element);\n        }\n        const rowDetail = warehouse.all[rowIndex];\n        const row = rowcells(rowDetail.element, rowCells, rowDetail.section, isNew);\n        grid.push(row);\n      }\n      return grid;\n    };\n\n    const fromWarehouse = (warehouse, generators) => toGrid(warehouse, generators, false);\n    const toDetailList = grid => toDetails(grid, eq$1);\n    const findInWarehouse = (warehouse, element) => findMap(warehouse.all, r => find$1(r.cells, e => eq$1(element, e.element)));\n    const extractCells = (warehouse, target, predicate) => {\n      const details = map$1(target.selection, cell$1 => {\n        return cell(cell$1).bind(lc => findInWarehouse(warehouse, lc)).filter(predicate);\n      });\n      const cells = cat(details);\n      return someIf(cells.length > 0, cells);\n    };\n    const run = (operation, extract, adjustment, postAction, genWrappers) => (table, target, generators, behaviours) => {\n      const warehouse = Warehouse.fromTable(table);\n      const tableSection = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.section).getOrThunk(TableSection.fallback);\n      const output = extract(warehouse, target).map(info => {\n        const model = fromWarehouse(warehouse, generators);\n        const result = operation(model, info, eq$1, genWrappers(generators), tableSection);\n        const lockedColumns = getLockedColumnsFromGrid(result.grid);\n        const grid = toDetailList(result.grid);\n        return {\n          info,\n          grid,\n          cursor: result.cursor,\n          lockedColumns\n        };\n      });\n      return output.bind(out => {\n        const newElements = render$1(table, out.grid);\n        const tableSizing = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.sizing).getOrThunk(() => TableSize.getTableSize(table));\n        const resizing = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.resize).getOrThunk(preserveTable);\n        adjustment(table, out.grid, out.info, {\n          sizing: tableSizing,\n          resize: resizing,\n          section: tableSection\n        });\n        postAction(table);\n        remove$7(table, LOCKED_COL_ATTR);\n        if (out.lockedColumns.length > 0) {\n          set$2(table, LOCKED_COL_ATTR, out.lockedColumns.join(','));\n        }\n        return Optional.some({\n          cursor: out.cursor,\n          newRows: newElements.newRows,\n          newCells: newElements.newCells\n        });\n      });\n    };\n    const onPaste = (warehouse, target) => cell(target.element).bind(cell => findInWarehouse(warehouse, cell).map(details => {\n      const value = {\n        ...details,\n        generators: target.generators,\n        clipboard: target.clipboard\n      };\n      return value;\n    }));\n    const onPasteByEditor = (warehouse, target) => extractCells(warehouse, target, always).map(cells => ({\n      cells,\n      generators: target.generators,\n      clipboard: target.clipboard\n    }));\n    const onMergable = (_warehouse, target) => target.mergable;\n    const onUnmergable = (_warehouse, target) => target.unmergable;\n    const onCells = (warehouse, target) => extractCells(warehouse, target, always);\n    const onUnlockedCells = (warehouse, target) => extractCells(warehouse, target, detail => !detail.isLocked);\n    const isUnlockedTableCell = (warehouse, cell) => findInWarehouse(warehouse, cell).exists(detail => !detail.isLocked);\n    const allUnlocked = (warehouse, cells) => forall(cells, cell => isUnlockedTableCell(warehouse, cell));\n    const onUnlockedMergable = (warehouse, target) => onMergable(warehouse, target).filter(mergeable => allUnlocked(warehouse, mergeable.cells));\n    const onUnlockedUnmergable = (warehouse, target) => onUnmergable(warehouse, target).filter(cells => allUnlocked(warehouse, cells));\n\n    const merge$2 = (grid, bounds, comparator, substitution) => {\n      const rows = extractGridDetails(grid).rows;\n      if (rows.length === 0) {\n        return grid;\n      }\n      for (let i = bounds.startRow; i <= bounds.finishRow; i++) {\n        for (let j = bounds.startCol; j <= bounds.finishCol; j++) {\n          const row = rows[i];\n          const isLocked = getCell(row, j).isLocked;\n          mutateCell(row, j, elementnew(substitution(), false, isLocked));\n        }\n      }\n      return grid;\n    };\n    const unmerge = (grid, target, comparator, substitution) => {\n      const rows = extractGridDetails(grid).rows;\n      let first = true;\n      for (let i = 0; i < rows.length; i++) {\n        for (let j = 0; j < cellLength(rows[0]); j++) {\n          const row = rows[i];\n          const currentCell = getCell(row, j);\n          const currentCellElm = currentCell.element;\n          const isToReplace = comparator(currentCellElm, target);\n          if (isToReplace && !first) {\n            mutateCell(row, j, elementnew(substitution(), true, currentCell.isLocked));\n          } else if (isToReplace) {\n            first = false;\n          }\n        }\n      }\n      return grid;\n    };\n    const uniqueCells = (row, comparator) => {\n      return foldl(row, (rest, cell) => {\n        return exists(rest, currentCell => {\n          return comparator(currentCell.element, cell.element);\n        }) ? rest : rest.concat([cell]);\n      }, []);\n    };\n    const splitCols = (grid, index, comparator, substitution) => {\n      if (index > 0 && index < grid[0].cells.length) {\n        each$2(grid, row => {\n          const prevCell = row.cells[index - 1];\n          let offset = 0;\n          const substitute = substitution();\n          while (row.cells.length > index + offset && comparator(prevCell.element, row.cells[index + offset].element)) {\n            mutateCell(row, index + offset, elementnew(substitute, true, row.cells[index + offset].isLocked));\n            offset++;\n          }\n        });\n      }\n      return grid;\n    };\n    const splitRows = (grid, index, comparator, substitution) => {\n      const rows = extractGridDetails(grid).rows;\n      if (index > 0 && index < rows.length) {\n        const rowPrevCells = rows[index - 1].cells;\n        const cells = uniqueCells(rowPrevCells, comparator);\n        each$2(cells, cell => {\n          let replacement = Optional.none();\n          for (let i = index; i < rows.length; i++) {\n            for (let j = 0; j < cellLength(rows[0]); j++) {\n              const row = rows[i];\n              const current = getCell(row, j);\n              const isToReplace = comparator(current.element, cell.element);\n              if (isToReplace) {\n                if (replacement.isNone()) {\n                  replacement = Optional.some(substitution());\n                }\n                replacement.each(sub => {\n                  mutateCell(row, j, elementnew(sub, true, current.isLocked));\n                });\n              }\n            }\n          }\n        });\n      }\n      return grid;\n    };\n\n    const value$1 = value => {\n      const applyHelper = fn => fn(value);\n      const constHelper = constant(value);\n      const outputHelper = () => output;\n      const output = {\n        tag: true,\n        inner: value,\n        fold: (_onError, onValue) => onValue(value),\n        isValue: always,\n        isError: never,\n        map: mapper => Result.value(mapper(value)),\n        mapError: outputHelper,\n        bind: applyHelper,\n        exists: applyHelper,\n        forall: applyHelper,\n        getOr: constHelper,\n        or: outputHelper,\n        getOrThunk: constHelper,\n        orThunk: outputHelper,\n        getOrDie: constHelper,\n        each: fn => {\n          fn(value);\n        },\n        toOptional: () => Optional.some(value)\n      };\n      return output;\n    };\n    const error = error => {\n      const outputHelper = () => output;\n      const output = {\n        tag: false,\n        inner: error,\n        fold: (onError, _onValue) => onError(error),\n        isValue: never,\n        isError: always,\n        map: outputHelper,\n        mapError: mapper => Result.error(mapper(error)),\n        bind: outputHelper,\n        exists: never,\n        forall: always,\n        getOr: identity,\n        or: identity,\n        getOrThunk: apply,\n        orThunk: apply,\n        getOrDie: die(String(error)),\n        each: noop,\n        toOptional: Optional.none\n      };\n      return output;\n    };\n    const fromOption = (optional, err) => optional.fold(() => error(err), value$1);\n    const Result = {\n      value: value$1,\n      error,\n      fromOption\n    };\n\n    const measure = (startAddress, gridA, gridB) => {\n      if (startAddress.row >= gridA.length || startAddress.column > cellLength(gridA[0])) {\n        return Result.error('invalid start address out of table bounds, row: ' + startAddress.row + ', column: ' + startAddress.column);\n      }\n      const rowRemainder = gridA.slice(startAddress.row);\n      const colRemainder = rowRemainder[0].cells.slice(startAddress.column);\n      const colRequired = cellLength(gridB[0]);\n      const rowRequired = gridB.length;\n      return Result.value({\n        rowDelta: rowRemainder.length - rowRequired,\n        colDelta: colRemainder.length - colRequired\n      });\n    };\n    const measureWidth = (gridA, gridB) => {\n      const colLengthA = cellLength(gridA[0]);\n      const colLengthB = cellLength(gridB[0]);\n      return {\n        rowDelta: 0,\n        colDelta: colLengthA - colLengthB\n      };\n    };\n    const measureHeight = (gridA, gridB) => {\n      const rowLengthA = gridA.length;\n      const rowLengthB = gridB.length;\n      return {\n        rowDelta: rowLengthA - rowLengthB,\n        colDelta: 0\n      };\n    };\n    const generateElements = (amount, row, generators, isLocked) => {\n      const generator = row.section === 'colgroup' ? generators.col : generators.cell;\n      return range$1(amount, idx => elementnew(generator(), true, isLocked(idx)));\n    };\n    const rowFill = (grid, amount, generators, lockedColumns) => {\n      const exampleRow = grid[grid.length - 1];\n      return grid.concat(range$1(amount, () => {\n        const generator = exampleRow.section === 'colgroup' ? generators.colgroup : generators.row;\n        const row = clone(exampleRow, generator, identity);\n        const elements = generateElements(row.cells.length, row, generators, idx => has$1(lockedColumns, idx.toString()));\n        return setCells(row, elements);\n      }));\n    };\n    const colFill = (grid, amount, generators, startIndex) => map$1(grid, row => {\n      const newChildren = generateElements(amount, row, generators, never);\n      return addCells(row, startIndex, newChildren);\n    });\n    const lockedColFill = (grid, generators, lockedColumns) => map$1(grid, row => {\n      return foldl(lockedColumns, (acc, colNum) => {\n        const newChild = generateElements(1, row, generators, always)[0];\n        return addCell(acc, colNum, newChild);\n      }, row);\n    });\n    const tailor = (gridA, delta, generators) => {\n      const fillCols = delta.colDelta < 0 ? colFill : identity;\n      const fillRows = delta.rowDelta < 0 ? rowFill : identity;\n      const lockedColumns = getLockedColumnsFromGrid(gridA);\n      const gridWidth = cellLength(gridA[0]);\n      const isLastColLocked = exists(lockedColumns, locked => locked === gridWidth - 1);\n      const modifiedCols = fillCols(gridA, Math.abs(delta.colDelta), generators, isLastColLocked ? gridWidth - 1 : gridWidth);\n      const newLockedColumns = getLockedColumnsFromGrid(modifiedCols);\n      return fillRows(modifiedCols, Math.abs(delta.rowDelta), generators, mapToObject(newLockedColumns, always));\n    };\n\n    const isSpanning = (grid, row, col, comparator) => {\n      const candidate = getCell(grid[row], col);\n      const matching = curry(comparator, candidate.element);\n      const currentRow = grid[row];\n      return grid.length > 1 && cellLength(currentRow) > 1 && (col > 0 && matching(getCellElement(currentRow, col - 1)) || col < currentRow.cells.length - 1 && matching(getCellElement(currentRow, col + 1)) || row > 0 && matching(getCellElement(grid[row - 1], col)) || row < grid.length - 1 && matching(getCellElement(grid[row + 1], col)));\n    };\n    const mergeTables = (startAddress, gridA, gridBRows, generator, comparator, lockedColumns) => {\n      const startRow = startAddress.row;\n      const startCol = startAddress.column;\n      const mergeHeight = gridBRows.length;\n      const mergeWidth = cellLength(gridBRows[0]);\n      const endRow = startRow + mergeHeight;\n      const endCol = startCol + mergeWidth + lockedColumns.length;\n      const lockedColumnObj = mapToObject(lockedColumns, always);\n      for (let r = startRow; r < endRow; r++) {\n        let skippedCol = 0;\n        for (let c = startCol; c < endCol; c++) {\n          if (lockedColumnObj[c]) {\n            skippedCol++;\n            continue;\n          }\n          if (isSpanning(gridA, r, c, comparator)) {\n            unmerge(gridA, getCellElement(gridA[r], c), comparator, generator.cell);\n          }\n          const gridBColIndex = c - startCol - skippedCol;\n          const newCell = getCell(gridBRows[r - startRow], gridBColIndex);\n          const newCellElm = newCell.element;\n          const replacement = generator.replace(newCellElm);\n          mutateCell(gridA[r], c, elementnew(replacement, true, newCell.isLocked));\n        }\n      }\n      return gridA;\n    };\n    const getValidStartAddress = (currentStartAddress, grid, lockedColumns) => {\n      const gridColLength = cellLength(grid[0]);\n      const adjustedRowAddress = extractGridDetails(grid).cols.length + currentStartAddress.row;\n      const possibleColAddresses = range$1(gridColLength - currentStartAddress.column, num => num + currentStartAddress.column);\n      const validColAddress = find$1(possibleColAddresses, num => forall(lockedColumns, col => col !== num)).getOr(gridColLength - 1);\n      return {\n        row: adjustedRowAddress,\n        column: validColAddress\n      };\n    };\n    const getLockedColumnsWithinBounds = (startAddress, rows, lockedColumns) => filter$2(lockedColumns, colNum => colNum >= startAddress.column && colNum <= cellLength(rows[0]) + startAddress.column);\n    const merge$1 = (startAddress, gridA, gridB, generator, comparator) => {\n      const lockedColumns = getLockedColumnsFromGrid(gridA);\n      const validStartAddress = getValidStartAddress(startAddress, gridA, lockedColumns);\n      const gridBRows = extractGridDetails(gridB).rows;\n      const lockedColumnsWithinBounds = getLockedColumnsWithinBounds(validStartAddress, gridBRows, lockedColumns);\n      const result = measure(validStartAddress, gridA, gridBRows);\n      return result.map(diff => {\n        const delta = {\n          ...diff,\n          colDelta: diff.colDelta - lockedColumnsWithinBounds.length\n        };\n        const fittedGrid = tailor(gridA, delta, generator);\n        const newLockedColumns = getLockedColumnsFromGrid(fittedGrid);\n        const newLockedColumnsWithinBounds = getLockedColumnsWithinBounds(validStartAddress, gridBRows, newLockedColumns);\n        return mergeTables(validStartAddress, fittedGrid, gridBRows, generator, comparator, newLockedColumnsWithinBounds);\n      });\n    };\n    const insertCols = (index, gridA, gridB, generator, comparator) => {\n      splitCols(gridA, index, comparator, generator.cell);\n      const delta = measureHeight(gridB, gridA);\n      const fittedNewGrid = tailor(gridB, delta, generator);\n      const secondDelta = measureHeight(gridA, fittedNewGrid);\n      const fittedOldGrid = tailor(gridA, secondDelta, generator);\n      return map$1(fittedOldGrid, (gridRow, i) => {\n        return addCells(gridRow, index, fittedNewGrid[i].cells);\n      });\n    };\n    const insertRows = (index, gridA, gridB, generator, comparator) => {\n      splitRows(gridA, index, comparator, generator.cell);\n      const locked = getLockedColumnsFromGrid(gridA);\n      const diff = measureWidth(gridA, gridB);\n      const delta = {\n        ...diff,\n        colDelta: diff.colDelta - locked.length\n      };\n      const fittedOldGrid = tailor(gridA, delta, generator);\n      const {\n        cols: oldCols,\n        rows: oldRows\n      } = extractGridDetails(fittedOldGrid);\n      const newLocked = getLockedColumnsFromGrid(fittedOldGrid);\n      const secondDiff = measureWidth(gridB, gridA);\n      const secondDelta = {\n        ...secondDiff,\n        colDelta: secondDiff.colDelta + newLocked.length\n      };\n      const fittedGridB = lockedColFill(gridB, generator, newLocked);\n      const fittedNewGrid = tailor(fittedGridB, secondDelta, generator);\n      return [...oldCols, ...oldRows.slice(0, index), ...fittedNewGrid, ...oldRows.slice(index, oldRows.length)];\n    };\n\n    const cloneRow = (row, cloneCell, comparator, substitution) => clone(row, elem => substitution(elem, comparator), cloneCell);\n    const insertRowAt = (grid, index, example, comparator, substitution) => {\n      const {\n        rows,\n        cols\n      } = extractGridDetails(grid);\n      const before = rows.slice(0, index);\n      const after = rows.slice(index);\n      const newRow = cloneRow(rows[example], (ex, c) => {\n        const withinSpan = index > 0 && index < rows.length && comparator(getCellElement(rows[index - 1], c), getCellElement(rows[index], c));\n        const ret = withinSpan ? getCell(rows[index], c) : elementnew(substitution(ex.element, comparator), true, ex.isLocked);\n        return ret;\n      }, comparator, substitution);\n      return [...cols, ...before, newRow, ...after];\n    };\n    const getElementFor = (row, column, section, withinSpan, example, comparator, substitution) => {\n      if (section === 'colgroup' || !withinSpan) {\n        const cell = getCell(row, example);\n        return elementnew(substitution(cell.element, comparator), true, false);\n      } else {\n        return getCell(row, column);\n      }\n    };\n    const insertColumnAt = (grid, index, example, comparator, substitution) => map$1(grid, row => {\n      const withinSpan = index > 0 && index < cellLength(row) && comparator(getCellElement(row, index - 1), getCellElement(row, index));\n      const sub = getElementFor(row, index, row.section, withinSpan, example, comparator, substitution);\n      return addCell(row, index, sub);\n    });\n    const deleteColumnsAt = (grid, columns) => bind$2(grid, row => {\n      const existingCells = row.cells;\n      const cells = foldr(columns, (acc, column) => column >= 0 && column < acc.length ? acc.slice(0, column).concat(acc.slice(column + 1)) : acc, existingCells);\n      return cells.length > 0 ? [rowcells(row.element, cells, row.section, row.isNew)] : [];\n    });\n    const deleteRowsAt = (grid, start, finish) => {\n      const {\n        rows,\n        cols\n      } = extractGridDetails(grid);\n      return [...cols, ...rows.slice(0, start), ...rows.slice(finish + 1)];\n    };\n\n    const notInStartRow = (grid, rowIndex, colIndex, comparator) => getCellElement(grid[rowIndex], colIndex) !== undefined && rowIndex > 0 && comparator(getCellElement(grid[rowIndex - 1], colIndex), getCellElement(grid[rowIndex], colIndex));\n    const notInStartColumn = (row, index, comparator) => index > 0 && comparator(getCellElement(row, index - 1), getCellElement(row, index));\n    const isDuplicatedCell = (grid, rowIndex, colIndex, comparator) => notInStartRow(grid, rowIndex, colIndex, comparator) || notInStartColumn(grid[rowIndex], colIndex, comparator);\n    const rowReplacerPredicate = (targetRow, columnHeaders) => {\n      const entireTableIsHeader = forall(columnHeaders, identity) && isHeaderCells(targetRow.cells);\n      return entireTableIsHeader ? always : (cell, _rowIndex, colIndex) => {\n        const type = name(cell.element);\n        return !(type === 'th' && columnHeaders[colIndex]);\n      };\n    };\n    const columnReplacePredicate = (targetColumn, rowHeaders) => {\n      const entireTableIsHeader = forall(rowHeaders, identity) && isHeaderCells(targetColumn);\n      return entireTableIsHeader ? always : (cell, rowIndex, _colIndex) => {\n        const type = name(cell.element);\n        return !(type === 'th' && rowHeaders[rowIndex]);\n      };\n    };\n    const determineScope = (applyScope, cell, newScope, isInHeader) => {\n      const hasSpan = scope => scope === 'row' ? hasRowspan(cell) : hasColspan(cell);\n      const getScope = scope => hasSpan(scope) ? \"\".concat(scope, \"group\") : scope;\n      if (applyScope) {\n        return isHeaderCell(cell) ? getScope(newScope) : null;\n      } else if (isInHeader && isHeaderCell(cell)) {\n        const oppositeScope = newScope === 'row' ? 'col' : 'row';\n        return getScope(oppositeScope);\n      } else {\n        return null;\n      }\n    };\n    const rowScopeGenerator = (applyScope, columnHeaders) => (cell, rowIndex, columnIndex) => Optional.some(determineScope(applyScope, cell.element, 'col', columnHeaders[columnIndex]));\n    const columnScopeGenerator = (applyScope, rowHeaders) => (cell, rowIndex) => Optional.some(determineScope(applyScope, cell.element, 'row', rowHeaders[rowIndex]));\n    const replace = (cell, comparator, substitute) => elementnew(substitute(cell.element, comparator), true, cell.isLocked);\n    const replaceIn = (grid, targets, comparator, substitute, replacer, genScope, shouldReplace) => {\n      const isTarget = cell => {\n        return exists(targets, target => {\n          return comparator(cell.element, target.element);\n        });\n      };\n      return map$1(grid, (row, rowIndex) => {\n        return mapCells(row, (cell, colIndex) => {\n          if (isTarget(cell)) {\n            const newCell = shouldReplace(cell, rowIndex, colIndex) ? replacer(cell, comparator, substitute) : cell;\n            genScope(newCell, rowIndex, colIndex).each(scope => {\n              setOptions(newCell.element, {\n                scope: Optional.from(scope)\n              });\n            });\n            return newCell;\n          } else {\n            return cell;\n          }\n        });\n      });\n    };\n    const getColumnCells = (rows, columnIndex, comparator) => bind$2(rows, (row, i) => {\n      return isDuplicatedCell(rows, i, columnIndex, comparator) ? [] : [getCell(row, columnIndex)];\n    });\n    const getRowCells = (rows, rowIndex, comparator) => {\n      const targetRow = rows[rowIndex];\n      return bind$2(targetRow.cells, (item, i) => {\n        return isDuplicatedCell(rows, rowIndex, i, comparator) ? [] : [item];\n      });\n    };\n    const replaceColumns = (grid, indexes, applyScope, comparator, substitution) => {\n      const rows = extractGridDetails(grid).rows;\n      const targets = bind$2(indexes, index => getColumnCells(rows, index, comparator));\n      const rowHeaders = map$1(rows, row => isHeaderCells(row.cells));\n      const shouldReplaceCell = columnReplacePredicate(targets, rowHeaders);\n      const scopeGenerator = columnScopeGenerator(applyScope, rowHeaders);\n      return replaceIn(grid, targets, comparator, substitution, replace, scopeGenerator, shouldReplaceCell);\n    };\n    const replaceRows = (grid, indexes, section, applyScope, comparator, substitution, tableSection) => {\n      const {\n        cols,\n        rows\n      } = extractGridDetails(grid);\n      const targetRow = rows[indexes[0]];\n      const targets = bind$2(indexes, index => getRowCells(rows, index, comparator));\n      const columnHeaders = map$1(targetRow.cells, (_cell, index) => isHeaderCells(getColumnCells(rows, index, comparator)));\n      const newRows = [...rows];\n      each$2(indexes, index => {\n        newRows[index] = tableSection.transformRow(rows[index], section);\n      });\n      const newGrid = [...cols, ...newRows];\n      const shouldReplaceCell = rowReplacerPredicate(targetRow, columnHeaders);\n      const scopeGenerator = rowScopeGenerator(applyScope, columnHeaders);\n      return replaceIn(newGrid, targets, comparator, substitution, tableSection.transformCell, scopeGenerator, shouldReplaceCell);\n    };\n    const replaceCells = (grid, details, comparator, substitution) => {\n      const rows = extractGridDetails(grid).rows;\n      const targetCells = map$1(details, detail => getCell(rows[detail.row], detail.column));\n      return replaceIn(grid, targetCells, comparator, substitution, replace, Optional.none, always);\n    };\n\n    const generate = cases => {\n      if (!isArray(cases)) {\n        throw new Error('cases must be an array');\n      }\n      if (cases.length === 0) {\n        throw new Error('there must be at least one case');\n      }\n      const constructors = [];\n      const adt = {};\n      each$2(cases, (acase, count) => {\n        const keys$1 = keys(acase);\n        if (keys$1.length !== 1) {\n          throw new Error('one and only one name per case');\n        }\n        const key = keys$1[0];\n        const value = acase[key];\n        if (adt[key] !== undefined) {\n          throw new Error('duplicate key detected:' + key);\n        } else if (key === 'cata') {\n          throw new Error('cannot have a case named cata (sorry)');\n        } else if (!isArray(value)) {\n          throw new Error('case arguments must be an array');\n        }\n        constructors.push(key);\n        adt[key] = (...args) => {\n          const argLength = args.length;\n          if (argLength !== value.length) {\n            throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n          }\n          const match = branches => {\n            const branchKeys = keys(branches);\n            if (constructors.length !== branchKeys.length) {\n              throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n            }\n            const allReqd = forall(constructors, reqKey => {\n              return contains$2(branchKeys, reqKey);\n            });\n            if (!allReqd) {\n              throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n            }\n            return branches[key].apply(null, args);\n          };\n          return {\n            fold: (...foldArgs) => {\n              if (foldArgs.length !== cases.length) {\n                throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length);\n              }\n              const target = foldArgs[count];\n              return target.apply(null, args);\n            },\n            match,\n            log: label => {\n              console.log(label, {\n                constructors,\n                constructor: key,\n                params: args\n              });\n            }\n          };\n        };\n      });\n      return adt;\n    };\n    const Adt = {\n      generate\n    };\n\n    const adt$6 = Adt.generate([{\n      none: []\n    }, {\n      only: ['index']\n    }, {\n      left: ['index', 'next']\n    }, {\n      middle: ['prev', 'index', 'next']\n    }, {\n      right: ['prev', 'index']\n    }]);\n    const ColumnContext = {\n      ...adt$6\n    };\n\n    const neighbours = (input, index) => {\n      if (input.length === 0) {\n        return ColumnContext.none();\n      }\n      if (input.length === 1) {\n        return ColumnContext.only(0);\n      }\n      if (index === 0) {\n        return ColumnContext.left(0, 1);\n      }\n      if (index === input.length - 1) {\n        return ColumnContext.right(index - 1, index);\n      }\n      if (index > 0 && index < input.length - 1) {\n        return ColumnContext.middle(index - 1, index, index + 1);\n      }\n      return ColumnContext.none();\n    };\n    const determine = (input, column, step, tableSize, resize) => {\n      const result = input.slice(0);\n      const context = neighbours(input, column);\n      const onNone = constant(map$1(result, constant(0)));\n      const onOnly = index => tableSize.singleColumnWidth(result[index], step);\n      const onLeft = (index, next) => resize.calcLeftEdgeDeltas(result, index, next, step, tableSize.minCellWidth(), tableSize.isRelative);\n      const onMiddle = (prev, index, next) => resize.calcMiddleDeltas(result, prev, index, next, step, tableSize.minCellWidth(), tableSize.isRelative);\n      const onRight = (prev, index) => resize.calcRightEdgeDeltas(result, prev, index, step, tableSize.minCellWidth(), tableSize.isRelative);\n      return context.fold(onNone, onOnly, onLeft, onMiddle, onRight);\n    };\n\n    const total = (start, end, measures) => {\n      let r = 0;\n      for (let i = start; i < end; i++) {\n        r += measures[i] !== undefined ? measures[i] : 0;\n      }\n      return r;\n    };\n    const recalculateWidthForCells = (warehouse, widths) => {\n      const all = Warehouse.justCells(warehouse);\n      return map$1(all, cell => {\n        const width = total(cell.column, cell.column + cell.colspan, widths);\n        return {\n          element: cell.element,\n          width,\n          colspan: cell.colspan\n        };\n      });\n    };\n    const recalculateWidthForColumns = (warehouse, widths) => {\n      const groups = Warehouse.justColumns(warehouse);\n      return map$1(groups, (column, index) => ({\n        element: column.element,\n        width: widths[index],\n        colspan: column.colspan\n      }));\n    };\n    const recalculateHeightForCells = (warehouse, heights) => {\n      const all = Warehouse.justCells(warehouse);\n      return map$1(all, cell => {\n        const height = total(cell.row, cell.row + cell.rowspan, heights);\n        return {\n          element: cell.element,\n          height,\n          rowspan: cell.rowspan\n        };\n      });\n    };\n    const matchRowHeight = (warehouse, heights) => {\n      return map$1(warehouse.all, (row, i) => {\n        return {\n          element: row.element,\n          height: heights[i]\n        };\n      });\n    };\n\n    const sumUp = newSize => foldr(newSize, (b, a) => b + a, 0);\n    const recalculate = (warehouse, widths) => {\n      if (Warehouse.hasColumns(warehouse)) {\n        return recalculateWidthForColumns(warehouse, widths);\n      } else {\n        return recalculateWidthForCells(warehouse, widths);\n      }\n    };\n    const recalculateAndApply = (warehouse, widths, tableSize) => {\n      const newSizes = recalculate(warehouse, widths);\n      each$2(newSizes, cell => {\n        tableSize.setElementWidth(cell.element, cell.width);\n      });\n    };\n    const adjustWidth = (table, delta, index, resizing, tableSize) => {\n      const warehouse = Warehouse.fromTable(table);\n      const step = tableSize.getCellDelta(delta);\n      const widths = tableSize.getWidths(warehouse, tableSize);\n      const isLastColumn = index === warehouse.grid.columns - 1;\n      const clampedStep = resizing.clampTableDelta(widths, index, step, tableSize.minCellWidth(), isLastColumn);\n      const deltas = determine(widths, index, clampedStep, tableSize, resizing);\n      const newWidths = map$1(deltas, (dx, i) => dx + widths[i]);\n      recalculateAndApply(warehouse, newWidths, tableSize);\n      resizing.resizeTable(tableSize.adjustTableWidth, clampedStep, isLastColumn);\n    };\n    const adjustHeight = (table, delta, index, direction) => {\n      const warehouse = Warehouse.fromTable(table);\n      const heights = getPixelHeights(warehouse, table, direction);\n      const newHeights = map$1(heights, (dy, i) => index === i ? Math.max(delta + dy, minHeight()) : dy);\n      const newCellSizes = recalculateHeightForCells(warehouse, newHeights);\n      const newRowSizes = matchRowHeight(warehouse, newHeights);\n      each$2(newRowSizes, row => {\n        setHeight(row.element, row.height);\n      });\n      each$2(newCellSizes, cell => {\n        setHeight(cell.element, cell.height);\n      });\n      const total = sumUp(newHeights);\n      setHeight(table, total);\n    };\n    const adjustAndRedistributeWidths$1 = (_table, list, details, tableSize, resizeBehaviour) => {\n      const warehouse = Warehouse.generate(list);\n      const sizes = tableSize.getWidths(warehouse, tableSize);\n      const tablePixelWidth = tableSize.pixelWidth();\n      const {\n        newSizes,\n        delta\n      } = resizeBehaviour.calcRedestributedWidths(sizes, tablePixelWidth, details.pixelDelta, tableSize.isRelative);\n      recalculateAndApply(warehouse, newSizes, tableSize);\n      tableSize.adjustTableWidth(delta);\n    };\n    const adjustWidthTo = (_table, list, _info, tableSize) => {\n      const warehouse = Warehouse.generate(list);\n      const widths = tableSize.getWidths(warehouse, tableSize);\n      recalculateAndApply(warehouse, widths, tableSize);\n    };\n\n    const uniqueColumns = details => {\n      const uniqueCheck = (rest, detail) => {\n        const columnExists = exists(rest, currentDetail => currentDetail.column === detail.column);\n        return columnExists ? rest : rest.concat([detail]);\n      };\n      return foldl(details, uniqueCheck, []).sort((detailA, detailB) => detailA.column - detailB.column);\n    };\n\n    const isCol = isTag('col');\n    const isColgroup = isTag('colgroup');\n    const isRow$1 = element => name(element) === 'tr' || isColgroup(element);\n    const elementToData = element => {\n      const colspan = getAttrValue(element, 'colspan', 1);\n      const rowspan = getAttrValue(element, 'rowspan', 1);\n      return {\n        element,\n        colspan,\n        rowspan\n      };\n    };\n    const modification = (generators, toData = elementToData) => {\n      const nuCell = data => isCol(data.element) ? generators.col(data) : generators.cell(data);\n      const nuRow = data => isColgroup(data.element) ? generators.colgroup(data) : generators.row(data);\n      const add = element => {\n        if (isRow$1(element)) {\n          return nuRow({\n            element\n          });\n        } else {\n          const cell = element;\n          const replacement = nuCell(toData(cell));\n          recent = Optional.some({\n            item: cell,\n            replacement\n          });\n          return replacement;\n        }\n      };\n      let recent = Optional.none();\n      const getOrInit = (element, comparator) => {\n        return recent.fold(() => {\n          return add(element);\n        }, p => {\n          return comparator(element, p.item) ? p.replacement : add(element);\n        });\n      };\n      return {\n        getOrInit\n      };\n    };\n    const transform$1 = tag => {\n      return generators => {\n        const list = [];\n        const find = (element, comparator) => {\n          return find$1(list, x => {\n            return comparator(x.item, element);\n          });\n        };\n        const makeNew = element => {\n          const attrs = tag === 'td' ? {\n            scope: null\n          } : {};\n          const cell = generators.replace(element, tag, attrs);\n          list.push({\n            item: element,\n            sub: cell\n          });\n          return cell;\n        };\n        const replaceOrInit = (element, comparator) => {\n          if (isRow$1(element) || isCol(element)) {\n            return element;\n          } else {\n            const cell = element;\n            return find(cell, comparator).fold(() => {\n              return makeNew(cell);\n            }, p => {\n              return comparator(element, p.item) ? p.sub : makeNew(cell);\n            });\n          }\n        };\n        return {\n          replaceOrInit\n        };\n      };\n    };\n    const getScopeAttribute = cell => getOpt(cell, 'scope').map(attribute => attribute.substr(0, 3));\n    const merging = generators => {\n      const unmerge = cell => {\n        const scope = getScopeAttribute(cell);\n        scope.each(attribute => set$2(cell, 'scope', attribute));\n        return () => {\n          const raw = generators.cell({\n            element: cell,\n            colspan: 1,\n            rowspan: 1\n          });\n          remove$5(raw, 'width');\n          remove$5(cell, 'width');\n          scope.each(attribute => set$2(raw, 'scope', attribute));\n          return raw;\n        };\n      };\n      const merge = cells => {\n        const getScopeProperty = () => {\n          const stringAttributes = cat(map$1(cells, getScopeAttribute));\n          if (stringAttributes.length === 0) {\n            return Optional.none();\n          } else {\n            const baseScope = stringAttributes[0];\n            const scopes = ['row', 'col'];\n            const isMixed = exists(stringAttributes, attribute => {\n              return attribute !== baseScope && contains$2(scopes, attribute);\n            });\n            return isMixed ? Optional.none() : Optional.from(baseScope);\n          }\n        };\n        remove$5(cells[0], 'width');\n        getScopeProperty().fold(() => remove$7(cells[0], 'scope'), attribute => set$2(cells[0], 'scope', attribute + 'group'));\n        return constant(cells[0]);\n      };\n      return {\n        unmerge,\n        merge\n      };\n    };\n    const Generators = {\n      modification,\n      transform: transform$1,\n      merging\n    };\n\n    const blockList = ['body', 'p', 'div', 'article', 'aside', 'figcaption', 'figure', 'footer', 'header', 'nav', 'section', 'ol', 'ul', 'table', 'thead', 'tfoot', 'tbody', 'caption', 'tr', 'td', 'th', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'pre', 'address'];\n    const isList$1 = (universe, item) => {\n      const tagName = universe.property().name(item);\n      return contains$2(['ol', 'ul'], tagName);\n    };\n    const isBlock$1 = (universe, item) => {\n      const tagName = universe.property().name(item);\n      return contains$2(blockList, tagName);\n    };\n    const isEmptyTag$1 = (universe, item) => {\n      return contains$2(['br', 'img', 'hr', 'input'], universe.property().name(item));\n    };\n\n    const universe$1 = DomUniverse();\n    const isBlock = element => {\n      return isBlock$1(universe$1, element);\n    };\n    const isList = element => {\n      return isList$1(universe$1, element);\n    };\n    const isEmptyTag = element => {\n      return isEmptyTag$1(universe$1, element);\n    };\n\n    const merge = cells => {\n      const isBr = isTag('br');\n      const advancedBr = children => {\n        return forall(children, c => {\n          return isBr(c) || isText(c) && get$6(c).trim().length === 0;\n        });\n      };\n      const isListItem = el => {\n        return name(el) === 'li' || ancestor$2(el, isList).isSome();\n      };\n      const siblingIsBlock = el => {\n        return nextSibling(el).map(rightSibling => {\n          if (isBlock(rightSibling)) {\n            return true;\n          }\n          if (isEmptyTag(rightSibling)) {\n            return name(rightSibling) === 'img' ? false : true;\n          }\n          return false;\n        }).getOr(false);\n      };\n      const markCell = cell => {\n        return last$1(cell).bind(rightEdge => {\n          const rightSiblingIsBlock = siblingIsBlock(rightEdge);\n          return parent(rightEdge).map(parent => {\n            return rightSiblingIsBlock === true || isListItem(parent) || isBr(rightEdge) || isBlock(parent) && !eq$1(cell, parent) ? [] : [SugarElement.fromTag('br')];\n          });\n        }).getOr([]);\n      };\n      const markContent = () => {\n        const content = bind$2(cells, cell => {\n          const children = children$2(cell);\n          return advancedBr(children) ? [] : children.concat(markCell(cell));\n        });\n        return content.length === 0 ? [SugarElement.fromTag('br')] : content;\n      };\n      const contents = markContent();\n      empty(cells[0]);\n      append(cells[0], contents);\n    };\n\n    const isEditable = elem => isEditable$1(elem, true);\n    const prune = table => {\n      const cells = cells$1(table);\n      if (cells.length === 0) {\n        remove$6(table);\n      }\n    };\n    const outcome = (grid, cursor) => ({\n      grid,\n      cursor\n    });\n    const findEditableCursorPosition = rows => findMap(rows, row => findMap(row.cells, cell => {\n      const elem = cell.element;\n      return someIf(isEditable(elem), elem);\n    }));\n    const elementFromGrid = (grid, row, column) => {\n      var _a, _b;\n      const rows = extractGridDetails(grid).rows;\n      return Optional.from((_b = (_a = rows[row]) === null || _a === void 0 ? void 0 : _a.cells[column]) === null || _b === void 0 ? void 0 : _b.element).filter(isEditable).orThunk(() => findEditableCursorPosition(rows));\n    };\n    const bundle = (grid, row, column) => {\n      const cursorElement = elementFromGrid(grid, row, column);\n      return outcome(grid, cursorElement);\n    };\n    const uniqueRows = details => {\n      const rowCompilation = (rest, detail) => {\n        const rowExists = exists(rest, currentDetail => currentDetail.row === detail.row);\n        return rowExists ? rest : rest.concat([detail]);\n      };\n      return foldl(details, rowCompilation, []).sort((detailA, detailB) => detailA.row - detailB.row);\n    };\n    const opInsertRowsBefore = (grid, details, comparator, genWrappers) => {\n      const targetIndex = details[0].row;\n      const rows = uniqueRows(details);\n      const newGrid = foldr(rows, (acc, row) => {\n        const newG = insertRowAt(acc.grid, targetIndex, row.row + acc.delta, comparator, genWrappers.getOrInit);\n        return {\n          grid: newG,\n          delta: acc.delta + 1\n        };\n      }, {\n        grid,\n        delta: 0\n      }).grid;\n      return bundle(newGrid, targetIndex, details[0].column);\n    };\n    const opInsertRowsAfter = (grid, details, comparator, genWrappers) => {\n      const rows = uniqueRows(details);\n      const target = rows[rows.length - 1];\n      const targetIndex = target.row + target.rowspan;\n      const newGrid = foldr(rows, (newG, row) => {\n        return insertRowAt(newG, targetIndex, row.row, comparator, genWrappers.getOrInit);\n      }, grid);\n      return bundle(newGrid, targetIndex, details[0].column);\n    };\n    const opInsertColumnsBefore = (grid, extractDetail, comparator, genWrappers) => {\n      const details = extractDetail.details;\n      const columns = uniqueColumns(details);\n      const targetIndex = columns[0].column;\n      const newGrid = foldr(columns, (acc, col) => {\n        const newG = insertColumnAt(acc.grid, targetIndex, col.column + acc.delta, comparator, genWrappers.getOrInit);\n        return {\n          grid: newG,\n          delta: acc.delta + 1\n        };\n      }, {\n        grid,\n        delta: 0\n      }).grid;\n      return bundle(newGrid, details[0].row, targetIndex);\n    };\n    const opInsertColumnsAfter = (grid, extractDetail, comparator, genWrappers) => {\n      const details = extractDetail.details;\n      const target = details[details.length - 1];\n      const targetIndex = target.column + target.colspan;\n      const columns = uniqueColumns(details);\n      const newGrid = foldr(columns, (newG, col) => {\n        return insertColumnAt(newG, targetIndex, col.column, comparator, genWrappers.getOrInit);\n      }, grid);\n      return bundle(newGrid, details[0].row, targetIndex);\n    };\n    const opMakeColumnsHeader = (initialGrid, details, comparator, genWrappers) => {\n      const columns = uniqueColumns(details);\n      const columnIndexes = map$1(columns, detail => detail.column);\n      const newGrid = replaceColumns(initialGrid, columnIndexes, true, comparator, genWrappers.replaceOrInit);\n      return bundle(newGrid, details[0].row, details[0].column);\n    };\n    const opMakeCellsHeader = (initialGrid, details, comparator, genWrappers) => {\n      const newGrid = replaceCells(initialGrid, details, comparator, genWrappers.replaceOrInit);\n      return bundle(newGrid, details[0].row, details[0].column);\n    };\n    const opUnmakeColumnsHeader = (initialGrid, details, comparator, genWrappers) => {\n      const columns = uniqueColumns(details);\n      const columnIndexes = map$1(columns, detail => detail.column);\n      const newGrid = replaceColumns(initialGrid, columnIndexes, false, comparator, genWrappers.replaceOrInit);\n      return bundle(newGrid, details[0].row, details[0].column);\n    };\n    const opUnmakeCellsHeader = (initialGrid, details, comparator, genWrappers) => {\n      const newGrid = replaceCells(initialGrid, details, comparator, genWrappers.replaceOrInit);\n      return bundle(newGrid, details[0].row, details[0].column);\n    };\n    const makeRowsSection = (section, applyScope) => (initialGrid, details, comparator, genWrappers, tableSection) => {\n      const rows = uniqueRows(details);\n      const rowIndexes = map$1(rows, detail => detail.row);\n      const newGrid = replaceRows(initialGrid, rowIndexes, section, applyScope, comparator, genWrappers.replaceOrInit, tableSection);\n      return bundle(newGrid, details[0].row, details[0].column);\n    };\n    const opMakeRowsHeader = makeRowsSection('thead', true);\n    const opMakeRowsBody = makeRowsSection('tbody', false);\n    const opMakeRowsFooter = makeRowsSection('tfoot', false);\n    const opEraseColumns = (grid, extractDetail, _comparator, _genWrappers) => {\n      const columns = uniqueColumns(extractDetail.details);\n      const newGrid = deleteColumnsAt(grid, map$1(columns, column => column.column));\n      const maxColIndex = newGrid.length > 0 ? newGrid[0].cells.length - 1 : 0;\n      return bundle(newGrid, columns[0].row, Math.min(columns[0].column, maxColIndex));\n    };\n    const opEraseRows = (grid, details, _comparator, _genWrappers) => {\n      const rows = uniqueRows(details);\n      const newGrid = deleteRowsAt(grid, rows[0].row, rows[rows.length - 1].row);\n      const maxRowIndex = newGrid.length > 0 ? newGrid.length - 1 : 0;\n      return bundle(newGrid, Math.min(details[0].row, maxRowIndex), details[0].column);\n    };\n    const opMergeCells = (grid, mergable, comparator, genWrappers) => {\n      const cells = mergable.cells;\n      merge(cells);\n      const newGrid = merge$2(grid, mergable.bounds, comparator, genWrappers.merge(cells));\n      return outcome(newGrid, Optional.from(cells[0]));\n    };\n    const opUnmergeCells = (grid, unmergable, comparator, genWrappers) => {\n      const unmerge$1 = (b, cell) => unmerge(b, cell, comparator, genWrappers.unmerge(cell));\n      const newGrid = foldr(unmergable, unmerge$1, grid);\n      return outcome(newGrid, Optional.from(unmergable[0]));\n    };\n    const opPasteCells = (grid, pasteDetails, comparator, _genWrappers) => {\n      const gridify = (table, generators) => {\n        const wh = Warehouse.fromTable(table);\n        return toGrid(wh, generators, true);\n      };\n      const gridB = gridify(pasteDetails.clipboard, pasteDetails.generators);\n      const startAddress = address(pasteDetails.row, pasteDetails.column);\n      const mergedGrid = merge$1(startAddress, grid, gridB, pasteDetails.generators, comparator);\n      return mergedGrid.fold(() => outcome(grid, Optional.some(pasteDetails.element)), newGrid => {\n        return bundle(newGrid, pasteDetails.row, pasteDetails.column);\n      });\n    };\n    const gridifyRows = (rows, generators, context) => {\n      const pasteDetails = fromPastedRows(rows, context.section);\n      const wh = Warehouse.generate(pasteDetails);\n      return toGrid(wh, generators, true);\n    };\n    const opPasteColsBefore = (grid, pasteDetails, comparator, _genWrappers) => {\n      const rows = extractGridDetails(grid).rows;\n      const index = pasteDetails.cells[0].column;\n      const context = rows[pasteDetails.cells[0].row];\n      const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n      const mergedGrid = insertCols(index, grid, gridB, pasteDetails.generators, comparator);\n      return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n    };\n    const opPasteColsAfter = (grid, pasteDetails, comparator, _genWrappers) => {\n      const rows = extractGridDetails(grid).rows;\n      const index = pasteDetails.cells[pasteDetails.cells.length - 1].column + pasteDetails.cells[pasteDetails.cells.length - 1].colspan;\n      const context = rows[pasteDetails.cells[0].row];\n      const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n      const mergedGrid = insertCols(index, grid, gridB, pasteDetails.generators, comparator);\n      return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n    };\n    const opPasteRowsBefore = (grid, pasteDetails, comparator, _genWrappers) => {\n      const rows = extractGridDetails(grid).rows;\n      const index = pasteDetails.cells[0].row;\n      const context = rows[index];\n      const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n      const mergedGrid = insertRows(index, grid, gridB, pasteDetails.generators, comparator);\n      return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n    };\n    const opPasteRowsAfter = (grid, pasteDetails, comparator, _genWrappers) => {\n      const rows = extractGridDetails(grid).rows;\n      const index = pasteDetails.cells[pasteDetails.cells.length - 1].row + pasteDetails.cells[pasteDetails.cells.length - 1].rowspan;\n      const context = rows[pasteDetails.cells[0].row];\n      const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n      const mergedGrid = insertRows(index, grid, gridB, pasteDetails.generators, comparator);\n      return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n    };\n    const opGetColumnsType = (table, target) => {\n      const house = Warehouse.fromTable(table);\n      const details = onCells(house, target);\n      return details.bind(selectedCells => {\n        const lastSelectedCell = selectedCells[selectedCells.length - 1];\n        const minColRange = selectedCells[0].column;\n        const maxColRange = lastSelectedCell.column + lastSelectedCell.colspan;\n        const selectedColumnCells = flatten(map$1(house.all, row => filter$2(row.cells, cell => cell.column >= minColRange && cell.column < maxColRange)));\n        return findCommonCellType(selectedColumnCells);\n      }).getOr('');\n    };\n    const opGetCellsType = (table, target) => {\n      const house = Warehouse.fromTable(table);\n      const details = onCells(house, target);\n      return details.bind(findCommonCellType).getOr('');\n    };\n    const opGetRowsType = (table, target) => {\n      const house = Warehouse.fromTable(table);\n      const details = onCells(house, target);\n      return details.bind(selectedCells => {\n        const lastSelectedCell = selectedCells[selectedCells.length - 1];\n        const minRowRange = selectedCells[0].row;\n        const maxRowRange = lastSelectedCell.row + lastSelectedCell.rowspan;\n        const selectedRows = house.all.slice(minRowRange, maxRowRange);\n        return findCommonRowType(selectedRows);\n      }).getOr('');\n    };\n    const resize = (table, list, details, behaviours) => adjustWidthTo(table, list, details, behaviours.sizing);\n    const adjustAndRedistributeWidths = (table, list, details, behaviours) => adjustAndRedistributeWidths$1(table, list, details, behaviours.sizing, behaviours.resize);\n    const firstColumnIsLocked = (_warehouse, details) => exists(details, detail => detail.column === 0 && detail.isLocked);\n    const lastColumnIsLocked = (warehouse, details) => exists(details, detail => detail.column + detail.colspan >= warehouse.grid.columns && detail.isLocked);\n    const getColumnsWidth = (warehouse, details) => {\n      const columns$1 = columns(warehouse);\n      const uniqueCols = uniqueColumns(details);\n      return foldl(uniqueCols, (acc, detail) => {\n        const column = columns$1[detail.column];\n        const colWidth = column.map(getOuter$2).getOr(0);\n        return acc + colWidth;\n      }, 0);\n    };\n    const insertColumnsExtractor = before => (warehouse, target) => onCells(warehouse, target).filter(details => {\n      const checkLocked = before ? firstColumnIsLocked : lastColumnIsLocked;\n      return !checkLocked(warehouse, details);\n    }).map(details => ({\n      details,\n      pixelDelta: getColumnsWidth(warehouse, details)\n    }));\n    const eraseColumnsExtractor = (warehouse, target) => onUnlockedCells(warehouse, target).map(details => ({\n      details,\n      pixelDelta: -getColumnsWidth(warehouse, details)\n    }));\n    const pasteColumnsExtractor = before => (warehouse, target) => onPasteByEditor(warehouse, target).filter(details => {\n      const checkLocked = before ? firstColumnIsLocked : lastColumnIsLocked;\n      return !checkLocked(warehouse, details.cells);\n    });\n    const headerCellGenerator = Generators.transform('th');\n    const bodyCellGenerator = Generators.transform('td');\n    const insertRowsBefore = run(opInsertRowsBefore, onCells, noop, noop, Generators.modification);\n    const insertRowsAfter = run(opInsertRowsAfter, onCells, noop, noop, Generators.modification);\n    const insertColumnsBefore = run(opInsertColumnsBefore, insertColumnsExtractor(true), adjustAndRedistributeWidths, noop, Generators.modification);\n    const insertColumnsAfter = run(opInsertColumnsAfter, insertColumnsExtractor(false), adjustAndRedistributeWidths, noop, Generators.modification);\n    const eraseColumns = run(opEraseColumns, eraseColumnsExtractor, adjustAndRedistributeWidths, prune, Generators.modification);\n    const eraseRows = run(opEraseRows, onCells, noop, prune, Generators.modification);\n    const makeColumnsHeader = run(opMakeColumnsHeader, onUnlockedCells, noop, noop, headerCellGenerator);\n    const unmakeColumnsHeader = run(opUnmakeColumnsHeader, onUnlockedCells, noop, noop, bodyCellGenerator);\n    const makeRowsHeader = run(opMakeRowsHeader, onUnlockedCells, noop, noop, headerCellGenerator);\n    const makeRowsBody = run(opMakeRowsBody, onUnlockedCells, noop, noop, bodyCellGenerator);\n    const makeRowsFooter = run(opMakeRowsFooter, onUnlockedCells, noop, noop, bodyCellGenerator);\n    const makeCellsHeader = run(opMakeCellsHeader, onUnlockedCells, noop, noop, headerCellGenerator);\n    const unmakeCellsHeader = run(opUnmakeCellsHeader, onUnlockedCells, noop, noop, bodyCellGenerator);\n    const mergeCells = run(opMergeCells, onUnlockedMergable, resize, noop, Generators.merging);\n    const unmergeCells = run(opUnmergeCells, onUnlockedUnmergable, resize, noop, Generators.merging);\n    const pasteCells = run(opPasteCells, onPaste, resize, noop, Generators.modification);\n    const pasteColsBefore = run(opPasteColsBefore, pasteColumnsExtractor(true), noop, noop, Generators.modification);\n    const pasteColsAfter = run(opPasteColsAfter, pasteColumnsExtractor(false), noop, noop, Generators.modification);\n    const pasteRowsBefore = run(opPasteRowsBefore, onPasteByEditor, noop, noop, Generators.modification);\n    const pasteRowsAfter = run(opPasteRowsAfter, onPasteByEditor, noop, noop, Generators.modification);\n    const getColumnsType = opGetColumnsType;\n    const getCellsType = opGetCellsType;\n    const getRowsType = opGetRowsType;\n\n    const fireNewRow = (editor, row) => editor.dispatch('NewRow', {\n      node: row\n    });\n    const fireNewCell = (editor, cell) => editor.dispatch('NewCell', {\n      node: cell\n    });\n    const fireTableModified = (editor, table, data) => {\n      editor.dispatch('TableModified', {\n        ...data,\n        table\n      });\n    };\n    const fireTableSelectionChange = (editor, cells, start, finish, otherCells) => {\n      editor.dispatch('TableSelectionChange', {\n        cells,\n        start,\n        finish,\n        otherCells\n      });\n    };\n    const fireTableSelectionClear = editor => {\n      editor.dispatch('TableSelectionClear');\n    };\n    const fireObjectResizeStart = (editor, target, width, height, origin) => {\n      editor.dispatch('ObjectResizeStart', {\n        target,\n        width,\n        height,\n        origin\n      });\n    };\n    const fireObjectResized = (editor, target, width, height, origin) => {\n      editor.dispatch('ObjectResized', {\n        target,\n        width,\n        height,\n        origin\n      });\n    };\n    const styleModified = {\n      structure: false,\n      style: true\n    };\n    const structureModified = {\n      structure: true,\n      style: false\n    };\n    const styleAndStructureModified = {\n      structure: true,\n      style: true\n    };\n\n    const get$5 = (editor, table) => {\n      if (isTablePercentagesForced(editor)) {\n        return TableSize.percentageSize(table);\n      } else if (isTablePixelsForced(editor)) {\n        return TableSize.pixelSize(table);\n      } else {\n        return TableSize.getTableSize(table);\n      }\n    };\n\n    const TableActions = (editor, resizeHandler, cellSelectionHandler) => {\n      const isTableBody = editor => name(getBody(editor)) === 'table';\n      const lastRowGuard = table => !isTableBody(editor) || getGridSize(table).rows > 1;\n      const lastColumnGuard = table => !isTableBody(editor) || getGridSize(table).columns > 1;\n      const cloneFormats = getTableCloneElements(editor);\n      const colMutationOp = isResizeTableColumnResizing(editor) ? noop : halve;\n      const getTableSectionType = table => {\n        switch (getTableHeaderType(editor)) {\n          case 'section':\n            return TableSection.section();\n          case 'sectionCells':\n            return TableSection.sectionCells();\n          case 'cells':\n            return TableSection.cells();\n          default:\n            return TableSection.getTableSectionType(table, 'section');\n        }\n      };\n      const setSelectionFromAction = (table, result) => result.cursor.fold(() => {\n        const cells = cells$1(table);\n        return head(cells).filter(inBody).map(firstCell => {\n          cellSelectionHandler.clearSelectedCells(table.dom);\n          const rng = editor.dom.createRng();\n          rng.selectNode(firstCell.dom);\n          editor.selection.setRng(rng);\n          set$2(firstCell, 'data-mce-selected', '1');\n          return rng;\n        });\n      }, cell => {\n        const des = freefallRtl(cell);\n        const rng = editor.dom.createRng();\n        rng.setStart(des.element.dom, des.offset);\n        rng.setEnd(des.element.dom, des.offset);\n        editor.selection.setRng(rng);\n        cellSelectionHandler.clearSelectedCells(table.dom);\n        return Optional.some(rng);\n      });\n      const execute = (operation, guard, mutate, effect) => (table, target, noEvents = false) => {\n        removeDataStyle(table);\n        const doc = SugarElement.fromDom(editor.getDoc());\n        const generators = cellOperations(mutate, doc, cloneFormats);\n        const behaviours = {\n          sizing: get$5(editor, table),\n          resize: isResizeTableColumnResizing(editor) ? resizeTable() : preserveTable(),\n          section: getTableSectionType(table)\n        };\n        return guard(table) ? operation(table, target, generators, behaviours).bind(result => {\n          resizeHandler.refresh(table.dom);\n          each$2(result.newRows, row => {\n            fireNewRow(editor, row.dom);\n          });\n          each$2(result.newCells, cell => {\n            fireNewCell(editor, cell.dom);\n          });\n          const range = setSelectionFromAction(table, result);\n          if (inBody(table)) {\n            removeDataStyle(table);\n            if (!noEvents) {\n              fireTableModified(editor, table.dom, effect);\n            }\n          }\n          return range.map(rng => ({\n            rng,\n            effect\n          }));\n        }) : Optional.none();\n      };\n      const deleteRow = execute(eraseRows, lastRowGuard, noop, structureModified);\n      const deleteColumn = execute(eraseColumns, lastColumnGuard, noop, structureModified);\n      const insertRowsBefore$1 = execute(insertRowsBefore, always, noop, structureModified);\n      const insertRowsAfter$1 = execute(insertRowsAfter, always, noop, structureModified);\n      const insertColumnsBefore$1 = execute(insertColumnsBefore, always, colMutationOp, structureModified);\n      const insertColumnsAfter$1 = execute(insertColumnsAfter, always, colMutationOp, structureModified);\n      const mergeCells$1 = execute(mergeCells, always, noop, structureModified);\n      const unmergeCells$1 = execute(unmergeCells, always, noop, structureModified);\n      const pasteColsBefore$1 = execute(pasteColsBefore, always, noop, structureModified);\n      const pasteColsAfter$1 = execute(pasteColsAfter, always, noop, structureModified);\n      const pasteRowsBefore$1 = execute(pasteRowsBefore, always, noop, structureModified);\n      const pasteRowsAfter$1 = execute(pasteRowsAfter, always, noop, structureModified);\n      const pasteCells$1 = execute(pasteCells, always, noop, styleAndStructureModified);\n      const makeCellsHeader$1 = execute(makeCellsHeader, always, noop, structureModified);\n      const unmakeCellsHeader$1 = execute(unmakeCellsHeader, always, noop, structureModified);\n      const makeColumnsHeader$1 = execute(makeColumnsHeader, always, noop, structureModified);\n      const unmakeColumnsHeader$1 = execute(unmakeColumnsHeader, always, noop, structureModified);\n      const makeRowsHeader$1 = execute(makeRowsHeader, always, noop, structureModified);\n      const makeRowsBody$1 = execute(makeRowsBody, always, noop, structureModified);\n      const makeRowsFooter$1 = execute(makeRowsFooter, always, noop, structureModified);\n      const getTableCellType = getCellsType;\n      const getTableColType = getColumnsType;\n      const getTableRowType = getRowsType;\n      return {\n        deleteRow,\n        deleteColumn,\n        insertRowsBefore: insertRowsBefore$1,\n        insertRowsAfter: insertRowsAfter$1,\n        insertColumnsBefore: insertColumnsBefore$1,\n        insertColumnsAfter: insertColumnsAfter$1,\n        mergeCells: mergeCells$1,\n        unmergeCells: unmergeCells$1,\n        pasteColsBefore: pasteColsBefore$1,\n        pasteColsAfter: pasteColsAfter$1,\n        pasteRowsBefore: pasteRowsBefore$1,\n        pasteRowsAfter: pasteRowsAfter$1,\n        pasteCells: pasteCells$1,\n        makeCellsHeader: makeCellsHeader$1,\n        unmakeCellsHeader: unmakeCellsHeader$1,\n        makeColumnsHeader: makeColumnsHeader$1,\n        unmakeColumnsHeader: unmakeColumnsHeader$1,\n        makeRowsHeader: makeRowsHeader$1,\n        makeRowsBody: makeRowsBody$1,\n        makeRowsFooter: makeRowsFooter$1,\n        getTableRowType,\n        getTableCellType,\n        getTableColType\n      };\n    };\n\n    const constrainSpan = (element, property, value) => {\n      const currentColspan = getAttrValue(element, property, 1);\n      if (value === 1 || currentColspan <= 1) {\n        remove$7(element, property);\n      } else {\n        set$2(element, property, Math.min(value, currentColspan));\n      }\n    };\n    const isColInRange = (minColRange, maxColRange) => cell => {\n      const endCol = cell.column + cell.colspan - 1;\n      const startCol = cell.column;\n      return endCol >= minColRange && startCol < maxColRange;\n    };\n    const generateColGroup = (house, minColRange, maxColRange) => {\n      if (Warehouse.hasColumns(house)) {\n        const colsToCopy = filter$2(Warehouse.justColumns(house), isColInRange(minColRange, maxColRange));\n        const copiedCols = map$1(colsToCopy, c => {\n          const clonedCol = deep(c.element);\n          constrainSpan(clonedCol, 'span', maxColRange - minColRange);\n          return clonedCol;\n        });\n        const fakeColgroup = SugarElement.fromTag('colgroup');\n        append(fakeColgroup, copiedCols);\n        return [fakeColgroup];\n      } else {\n        return [];\n      }\n    };\n    const generateRows = (house, minColRange, maxColRange) => map$1(house.all, row => {\n      const cellsToCopy = filter$2(row.cells, isColInRange(minColRange, maxColRange));\n      const copiedCells = map$1(cellsToCopy, cell => {\n        const clonedCell = deep(cell.element);\n        constrainSpan(clonedCell, 'colspan', maxColRange - minColRange);\n        return clonedCell;\n      });\n      const fakeTR = SugarElement.fromTag('tr');\n      append(fakeTR, copiedCells);\n      return fakeTR;\n    });\n    const copyCols = (table, target) => {\n      const house = Warehouse.fromTable(table);\n      const details = onUnlockedCells(house, target);\n      return details.map(selectedCells => {\n        const lastSelectedCell = selectedCells[selectedCells.length - 1];\n        const minColRange = selectedCells[0].column;\n        const maxColRange = lastSelectedCell.column + lastSelectedCell.colspan;\n        const fakeColGroups = generateColGroup(house, minColRange, maxColRange);\n        const fakeRows = generateRows(house, minColRange, maxColRange);\n        return [...fakeColGroups, ...fakeRows];\n      });\n    };\n\n    const copyRows = (table, target, generators) => {\n      const warehouse = Warehouse.fromTable(table);\n      const details = onCells(warehouse, target);\n      return details.bind(selectedCells => {\n        const grid = toGrid(warehouse, generators, false);\n        const rows = extractGridDetails(grid).rows;\n        const slicedGrid = rows.slice(selectedCells[0].row, selectedCells[selectedCells.length - 1].row + selectedCells[selectedCells.length - 1].rowspan);\n        const filteredGrid = bind$2(slicedGrid, row => {\n          const newCells = filter$2(row.cells, cell => !cell.isLocked);\n          return newCells.length > 0 ? [{\n            ...row,\n            cells: newCells\n          }] : [];\n        });\n        const slicedDetails = toDetailList(filteredGrid);\n        return someIf(slicedDetails.length > 0, slicedDetails);\n      }).map(slicedDetails => copy(slicedDetails));\n    };\n\n    const adt$5 = Adt.generate([{\n      invalid: ['raw']\n    }, {\n      pixels: ['value']\n    }, {\n      percent: ['value']\n    }]);\n    const validateFor = (suffix, type, value) => {\n      const rawAmount = value.substring(0, value.length - suffix.length);\n      const amount = parseFloat(rawAmount);\n      return rawAmount === amount.toString() ? type(amount) : adt$5.invalid(value);\n    };\n    const from = value => {\n      if (endsWith(value, '%')) {\n        return validateFor('%', adt$5.percent, value);\n      }\n      if (endsWith(value, 'px')) {\n        return validateFor('px', adt$5.pixels, value);\n      }\n      return adt$5.invalid(value);\n    };\n    const Size = {\n      ...adt$5,\n      from\n    };\n\n    const redistributeToPercent = (widths, totalWidth) => {\n      return map$1(widths, w => {\n        const colType = Size.from(w);\n        return colType.fold(() => {\n          return w;\n        }, px => {\n          const ratio = px / totalWidth * 100;\n          return ratio + '%';\n        }, pc => {\n          return pc + '%';\n        });\n      });\n    };\n    const redistributeToPx = (widths, totalWidth, newTotalWidth) => {\n      const scale = newTotalWidth / totalWidth;\n      return map$1(widths, w => {\n        const colType = Size.from(w);\n        return colType.fold(() => {\n          return w;\n        }, px => {\n          return px * scale + 'px';\n        }, pc => {\n          return pc / 100 * newTotalWidth + 'px';\n        });\n      });\n    };\n    const redistributeEmpty = (newWidthType, columns) => {\n      const f = newWidthType.fold(() => constant(''), pixels => {\n        const num = pixels / columns;\n        return constant(num + 'px');\n      }, () => {\n        const num = 100 / columns;\n        return constant(num + '%');\n      });\n      return range$1(columns, f);\n    };\n    const redistributeValues = (newWidthType, widths, totalWidth) => {\n      return newWidthType.fold(() => {\n        return widths;\n      }, px => {\n        return redistributeToPx(widths, totalWidth, px);\n      }, _pc => {\n        return redistributeToPercent(widths, totalWidth);\n      });\n    };\n    const redistribute$1 = (widths, totalWidth, newWidth) => {\n      const newType = Size.from(newWidth);\n      const floats = forall(widths, s => {\n        return s === '0px';\n      }) ? redistributeEmpty(newType, widths.length) : redistributeValues(newType, widths, totalWidth);\n      return normalize(floats);\n    };\n    const sum = (values, fallback) => {\n      if (values.length === 0) {\n        return fallback;\n      }\n      return foldr(values, (rest, v) => {\n        return Size.from(v).fold(constant(0), identity, identity) + rest;\n      }, 0);\n    };\n    const roundDown = (num, unit) => {\n      const floored = Math.floor(num);\n      return {\n        value: floored + unit,\n        remainder: num - floored\n      };\n    };\n    const add$3 = (value, amount) => {\n      return Size.from(value).fold(constant(value), px => {\n        return px + amount + 'px';\n      }, pc => {\n        return pc + amount + '%';\n      });\n    };\n    const normalize = values => {\n      if (values.length === 0) {\n        return values;\n      }\n      const scan = foldr(values, (rest, value) => {\n        const info = Size.from(value).fold(() => ({\n          value,\n          remainder: 0\n        }), num => roundDown(num, 'px'), num => ({\n          value: num + '%',\n          remainder: 0\n        }));\n        return {\n          output: [info.value].concat(rest.output),\n          remainder: rest.remainder + info.remainder\n        };\n      }, {\n        output: [],\n        remainder: 0\n      });\n      const r = scan.output;\n      return r.slice(0, r.length - 1).concat([add$3(r[r.length - 1], Math.round(scan.remainder))]);\n    };\n    const validate = Size.from;\n\n    const redistributeToW = (newWidths, cells, unit) => {\n      each$2(cells, cell => {\n        const widths = newWidths.slice(cell.column, cell.colspan + cell.column);\n        const w = sum(widths, minWidth());\n        set$1(cell.element, 'width', w + unit);\n      });\n    };\n    const redistributeToColumns = (newWidths, columns, unit) => {\n      each$2(columns, (column, index) => {\n        const width = sum([newWidths[index]], minWidth());\n        set$1(column.element, 'width', width + unit);\n      });\n    };\n    const redistributeToH = (newHeights, rows, cells, unit) => {\n      each$2(cells, cell => {\n        const heights = newHeights.slice(cell.row, cell.rowspan + cell.row);\n        const h = sum(heights, minHeight());\n        set$1(cell.element, 'height', h + unit);\n      });\n      each$2(rows, (row, i) => {\n        set$1(row.element, 'height', newHeights[i]);\n      });\n    };\n    const getUnit = newSize => {\n      return validate(newSize).fold(constant('px'), constant('px'), constant('%'));\n    };\n    const redistribute = (table, optWidth, optHeight) => {\n      const warehouse = Warehouse.fromTable(table);\n      const rows = warehouse.all;\n      const cells = Warehouse.justCells(warehouse);\n      const columns = Warehouse.justColumns(warehouse);\n      optWidth.each(newWidth => {\n        const widthUnit = getUnit(newWidth);\n        const totalWidth = get$9(table);\n        const oldWidths = getRawWidths(warehouse, table);\n        const nuWidths = redistribute$1(oldWidths, totalWidth, newWidth);\n        if (Warehouse.hasColumns(warehouse)) {\n          redistributeToColumns(nuWidths, columns, widthUnit);\n        } else {\n          redistributeToW(nuWidths, cells, widthUnit);\n        }\n        set$1(table, 'width', newWidth);\n      });\n      optHeight.each(newHeight => {\n        const hUnit = getUnit(newHeight);\n        const totalHeight = get$8(table);\n        const oldHeights = getRawHeights(warehouse, table, height);\n        const nuHeights = redistribute$1(oldHeights, totalHeight, newHeight);\n        redistributeToH(nuHeights, rows, cells, hUnit);\n        set$1(table, 'height', newHeight);\n      });\n    };\n    const isPercentSizing = isPercentSizing$1;\n    const isPixelSizing = isPixelSizing$1;\n    const isNoneSizing = isNoneSizing$1;\n\n    const cleanupLegacyAttributes = element => {\n      remove$7(element, 'width');\n    };\n    const convertToPercentSize = table => {\n      const newWidth = getPercentTableWidth(table);\n      redistribute(table, Optional.some(newWidth), Optional.none());\n      cleanupLegacyAttributes(table);\n    };\n    const convertToPixelSize = table => {\n      const newWidth = getPixelTableWidth(table);\n      redistribute(table, Optional.some(newWidth), Optional.none());\n      cleanupLegacyAttributes(table);\n    };\n    const convertToNoneSize = table => {\n      remove$5(table, 'width');\n      const columns = columns$1(table);\n      const rowElements = columns.length > 0 ? columns : cells$1(table);\n      each$2(rowElements, cell => {\n        remove$5(cell, 'width');\n        cleanupLegacyAttributes(cell);\n      });\n      cleanupLegacyAttributes(table);\n    };\n\n    const DefaultRenderOptions = {\n      styles: {\n        'border-collapse': 'collapse',\n        'width': '100%'\n      },\n      attributes: {\n        border: '1'\n      },\n      colGroups: false\n    };\n    const tableHeaderCell = () => SugarElement.fromTag('th');\n    const tableCell = () => SugarElement.fromTag('td');\n    const tableColumn = () => SugarElement.fromTag('col');\n    const createRow = (columns, rowHeaders, columnHeaders, rowIndex) => {\n      const tr = SugarElement.fromTag('tr');\n      for (let j = 0; j < columns; j++) {\n        const td = rowIndex < rowHeaders || j < columnHeaders ? tableHeaderCell() : tableCell();\n        if (j < columnHeaders) {\n          set$2(td, 'scope', 'row');\n        }\n        if (rowIndex < rowHeaders) {\n          set$2(td, 'scope', 'col');\n        }\n        append$1(td, SugarElement.fromTag('br'));\n        append$1(tr, td);\n      }\n      return tr;\n    };\n    const createGroupRow = columns => {\n      const columnGroup = SugarElement.fromTag('colgroup');\n      range$1(columns, () => append$1(columnGroup, tableColumn()));\n      return columnGroup;\n    };\n    const createRows = (rows, columns, rowHeaders, columnHeaders) => range$1(rows, r => createRow(columns, rowHeaders, columnHeaders, r));\n    const render = (rows, columns, rowHeaders, columnHeaders, headerType, renderOpts = DefaultRenderOptions) => {\n      const table = SugarElement.fromTag('table');\n      const rowHeadersGoInThead = headerType !== 'cells';\n      setAll(table, renderOpts.styles);\n      setAll$1(table, renderOpts.attributes);\n      if (renderOpts.colGroups) {\n        append$1(table, createGroupRow(columns));\n      }\n      const actualRowHeaders = Math.min(rows, rowHeaders);\n      if (rowHeadersGoInThead && rowHeaders > 0) {\n        const thead = SugarElement.fromTag('thead');\n        append$1(table, thead);\n        const theadRowHeaders = headerType === 'sectionCells' ? actualRowHeaders : 0;\n        const theadRows = createRows(rowHeaders, columns, theadRowHeaders, columnHeaders);\n        append(thead, theadRows);\n      }\n      const tbody = SugarElement.fromTag('tbody');\n      append$1(table, tbody);\n      const numRows = rowHeadersGoInThead ? rows - actualRowHeaders : rows;\n      const numRowHeaders = rowHeadersGoInThead ? 0 : rowHeaders;\n      const tbodyRows = createRows(numRows, columns, numRowHeaders, columnHeaders);\n      append(tbody, tbodyRows);\n      return table;\n    };\n\n    const get$4 = element => element.dom.innerHTML;\n    const getOuter = element => {\n      const container = SugarElement.fromTag('div');\n      const clone = SugarElement.fromDom(element.dom.cloneNode(true));\n      append$1(container, clone);\n      return get$4(container);\n    };\n\n    const placeCaretInCell = (editor, cell) => {\n      editor.selection.select(cell.dom, true);\n      editor.selection.collapse(true);\n    };\n    const selectFirstCellInTable = (editor, tableElm) => {\n      descendant(tableElm, 'td,th').each(curry(placeCaretInCell, editor));\n    };\n    const fireEvents = (editor, table) => {\n      each$2(descendants(table, 'tr'), row => {\n        fireNewRow(editor, row.dom);\n        each$2(descendants(row, 'th,td'), cell => {\n          fireNewCell(editor, cell.dom);\n        });\n      });\n    };\n    const isPercentage = width => isString(width) && width.indexOf('%') !== -1;\n    const insert = (editor, columns, rows, colHeaders, rowHeaders) => {\n      const defaultStyles = getTableDefaultStyles(editor);\n      const options = {\n        styles: defaultStyles,\n        attributes: getTableDefaultAttributes(editor),\n        colGroups: tableUseColumnGroup(editor)\n      };\n      editor.undoManager.ignore(() => {\n        const table = render(rows, columns, rowHeaders, colHeaders, getTableHeaderType(editor), options);\n        set$2(table, 'data-mce-id', '__mce');\n        const html = getOuter(table);\n        editor.insertContent(html);\n        editor.addVisual();\n      });\n      return descendant(getBody(editor), 'table[data-mce-id=\"__mce\"]').map(table => {\n        if (isTablePixelsForced(editor)) {\n          convertToPixelSize(table);\n        } else if (isTableResponsiveForced(editor)) {\n          convertToNoneSize(table);\n        } else if (isTablePercentagesForced(editor) || isPercentage(defaultStyles.width)) {\n          convertToPercentSize(table);\n        }\n        removeDataStyle(table);\n        remove$7(table, 'data-mce-id');\n        fireEvents(editor, table);\n        selectFirstCellInTable(editor, table);\n        return table.dom;\n      }).getOrNull();\n    };\n    const insertTable = (editor, rows, columns, options = {}) => {\n      const checkInput = val => isNumber(val) && val > 0;\n      if (checkInput(rows) && checkInput(columns)) {\n        const headerRows = options.headerRows || 0;\n        const headerColumns = options.headerColumns || 0;\n        return insert(editor, columns, rows, headerColumns, headerRows);\n      } else {\n        console.error('Invalid values for mceInsertTable - rows and columns values are required to insert a table.');\n        return null;\n      }\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.FakeClipboard');\n\n    const tableTypeBase = 'x-tinymce/dom-table-';\n    const tableTypeRow = tableTypeBase + 'rows';\n    const tableTypeColumn = tableTypeBase + 'columns';\n    const setData = items => {\n      const fakeClipboardItem = global.FakeClipboardItem(items);\n      global.write([fakeClipboardItem]);\n    };\n    const getData = type => {\n      var _a;\n      const items = (_a = global.read()) !== null && _a !== void 0 ? _a : [];\n      return findMap(items, item => Optional.from(item.getType(type)));\n    };\n    const clearData = type => {\n      if (getData(type).isSome()) {\n        global.clear();\n      }\n    };\n    const setRows = rowsOpt => {\n      rowsOpt.fold(clearRows, rows => setData({\n        [tableTypeRow]: rows\n      }));\n    };\n    const getRows = () => getData(tableTypeRow);\n    const clearRows = () => clearData(tableTypeRow);\n    const setColumns = columnsOpt => {\n      columnsOpt.fold(clearColumns, columns => setData({\n        [tableTypeColumn]: columns\n      }));\n    };\n    const getColumns = () => getData(tableTypeColumn);\n    const clearColumns = () => clearData(tableTypeColumn);\n\n    const getSelectionStartCellOrCaption = editor => getSelectionCellOrCaption(getSelectionStart(editor), getIsRoot(editor)).filter(isInEditableContext$1);\n    const getSelectionStartCell = editor => getSelectionCell(getSelectionStart(editor), getIsRoot(editor)).filter(isInEditableContext$1);\n    const registerCommands = (editor, actions) => {\n      const isRoot = getIsRoot(editor);\n      const eraseTable = () => getSelectionStartCellOrCaption(editor).each(cellOrCaption => {\n        table(cellOrCaption, isRoot).filter(not(isRoot)).each(table => {\n          const cursor = SugarElement.fromText('');\n          after$5(table, cursor);\n          remove$6(table);\n          if (editor.dom.isEmpty(editor.getBody())) {\n            editor.setContent('');\n            editor.selection.setCursorLocation();\n          } else {\n            const rng = editor.dom.createRng();\n            rng.setStart(cursor.dom, 0);\n            rng.setEnd(cursor.dom, 0);\n            editor.selection.setRng(rng);\n            editor.nodeChanged();\n          }\n        });\n      });\n      const setSizingMode = sizing => getSelectionStartCellOrCaption(editor).each(cellOrCaption => {\n        const isForcedSizing = isTableResponsiveForced(editor) || isTablePixelsForced(editor) || isTablePercentagesForced(editor);\n        if (!isForcedSizing) {\n          table(cellOrCaption, isRoot).each(table => {\n            if (sizing === 'relative' && !isPercentSizing(table)) {\n              convertToPercentSize(table);\n            } else if (sizing === 'fixed' && !isPixelSizing(table)) {\n              convertToPixelSize(table);\n            } else if (sizing === 'responsive' && !isNoneSizing(table)) {\n              convertToNoneSize(table);\n            }\n            removeDataStyle(table);\n            fireTableModified(editor, table.dom, structureModified);\n          });\n        }\n      });\n      const getTableFromCell = cell => table(cell, isRoot);\n      const performActionOnSelection = action => getSelectionStartCell(editor).bind(cell => getTableFromCell(cell).map(table => action(table, cell)));\n      const toggleTableClass = (_ui, clazz) => {\n        performActionOnSelection(table => {\n          editor.formatter.toggle('tableclass', {\n            value: clazz\n          }, table.dom);\n          fireTableModified(editor, table.dom, styleModified);\n        });\n      };\n      const toggleTableCellClass = (_ui, clazz) => {\n        performActionOnSelection(table => {\n          const selectedCells = getCellsFromSelection(editor);\n          const allHaveClass = forall(selectedCells, cell => editor.formatter.match('tablecellclass', {\n            value: clazz\n          }, cell.dom));\n          const formatterAction = allHaveClass ? editor.formatter.remove : editor.formatter.apply;\n          each$2(selectedCells, cell => formatterAction('tablecellclass', {\n            value: clazz\n          }, cell.dom));\n          fireTableModified(editor, table.dom, styleModified);\n        });\n      };\n      const toggleCaption = () => {\n        getSelectionStartCellOrCaption(editor).each(cellOrCaption => {\n          table(cellOrCaption, isRoot).each(table => {\n            child(table, 'caption').fold(() => {\n              const caption = SugarElement.fromTag('caption');\n              append$1(caption, SugarElement.fromText('Caption'));\n              appendAt(table, caption, 0);\n              editor.selection.setCursorLocation(caption.dom, 0);\n            }, caption => {\n              if (isTag('caption')(cellOrCaption)) {\n                one('td', table).each(td => editor.selection.setCursorLocation(td.dom, 0));\n              }\n              remove$6(caption);\n            });\n            fireTableModified(editor, table.dom, structureModified);\n          });\n        });\n      };\n      const postExecute = _data => {\n        editor.focus();\n      };\n      const actOnSelection = (execute, noEvents = false) => performActionOnSelection((table, startCell) => {\n        const targets = forMenu(getCellsFromSelection(editor), table, startCell);\n        execute(table, targets, noEvents).each(postExecute);\n      });\n      const copyRowSelection = () => performActionOnSelection((table, startCell) => {\n        const targets = forMenu(getCellsFromSelection(editor), table, startCell);\n        const generators = cellOperations(noop, SugarElement.fromDom(editor.getDoc()), Optional.none());\n        return copyRows(table, targets, generators);\n      });\n      const copyColSelection = () => performActionOnSelection((table, startCell) => {\n        const targets = forMenu(getCellsFromSelection(editor), table, startCell);\n        return copyCols(table, targets);\n      });\n      const pasteOnSelection = (execute, getRows) => getRows().each(rows => {\n        const clonedRows = map$1(rows, row => deep(row));\n        performActionOnSelection((table, startCell) => {\n          const generators = paste$1(SugarElement.fromDom(editor.getDoc()));\n          const targets = pasteRows(getCellsFromSelection(editor), startCell, clonedRows, generators);\n          execute(table, targets).each(postExecute);\n        });\n      });\n      const actOnType = getAction => (_ui, args) => get$c(args, 'type').each(type => {\n        actOnSelection(getAction(type), args.no_events);\n      });\n      each$1({\n        mceTableSplitCells: () => actOnSelection(actions.unmergeCells),\n        mceTableMergeCells: () => actOnSelection(actions.mergeCells),\n        mceTableInsertRowBefore: () => actOnSelection(actions.insertRowsBefore),\n        mceTableInsertRowAfter: () => actOnSelection(actions.insertRowsAfter),\n        mceTableInsertColBefore: () => actOnSelection(actions.insertColumnsBefore),\n        mceTableInsertColAfter: () => actOnSelection(actions.insertColumnsAfter),\n        mceTableDeleteCol: () => actOnSelection(actions.deleteColumn),\n        mceTableDeleteRow: () => actOnSelection(actions.deleteRow),\n        mceTableCutCol: () => copyColSelection().each(selection => {\n          setColumns(selection);\n          actOnSelection(actions.deleteColumn);\n        }),\n        mceTableCutRow: () => copyRowSelection().each(selection => {\n          setRows(selection);\n          actOnSelection(actions.deleteRow);\n        }),\n        mceTableCopyCol: () => copyColSelection().each(selection => setColumns(selection)),\n        mceTableCopyRow: () => copyRowSelection().each(selection => setRows(selection)),\n        mceTablePasteColBefore: () => pasteOnSelection(actions.pasteColsBefore, getColumns),\n        mceTablePasteColAfter: () => pasteOnSelection(actions.pasteColsAfter, getColumns),\n        mceTablePasteRowBefore: () => pasteOnSelection(actions.pasteRowsBefore, getRows),\n        mceTablePasteRowAfter: () => pasteOnSelection(actions.pasteRowsAfter, getRows),\n        mceTableDelete: eraseTable,\n        mceTableCellToggleClass: toggleTableCellClass,\n        mceTableToggleClass: toggleTableClass,\n        mceTableToggleCaption: toggleCaption,\n        mceTableSizingMode: (_ui, sizing) => setSizingMode(sizing),\n        mceTableCellType: actOnType(type => type === 'th' ? actions.makeCellsHeader : actions.unmakeCellsHeader),\n        mceTableColType: actOnType(type => type === 'th' ? actions.makeColumnsHeader : actions.unmakeColumnsHeader),\n        mceTableRowType: actOnType(type => {\n          switch (type) {\n            case 'header':\n              return actions.makeRowsHeader;\n            case 'footer':\n              return actions.makeRowsFooter;\n            default:\n              return actions.makeRowsBody;\n          }\n        })\n      }, (func, name) => editor.addCommand(name, func));\n      editor.addCommand('mceInsertTable', (_ui, args) => {\n        insertTable(editor, args.rows, args.columns, args.options);\n      });\n      editor.addCommand('mceTableApplyCellStyle', (_ui, args) => {\n        const getFormatName = style => 'tablecell' + style.toLowerCase().replace('-', '');\n        if (!isObject(args)) {\n          return;\n        }\n        const cells = filter$2(getCellsFromSelection(editor), isInEditableContext$1);\n        if (cells.length === 0) {\n          return;\n        }\n        const validArgs = filter$1(args, (value, style) => editor.formatter.has(getFormatName(style)) && isString(value));\n        if (isEmpty(validArgs)) {\n          return;\n        }\n        each$1(validArgs, (value, style) => {\n          const formatName = getFormatName(style);\n          each$2(cells, cell => {\n            if (value === '') {\n              editor.formatter.remove(formatName, {\n                value: null\n              }, cell.dom, true);\n            } else {\n              editor.formatter.apply(formatName, {\n                value\n              }, cell.dom);\n            }\n          });\n        });\n        getTableFromCell(cells[0]).each(table => fireTableModified(editor, table.dom, styleModified));\n      });\n    };\n\n    const registerQueryCommands = (editor, actions) => {\n      const isRoot = getIsRoot(editor);\n      const lookupOnSelection = action => getSelectionCell(getSelectionStart(editor)).bind(cell => table(cell, isRoot).map(table => {\n        const targets = forMenu(getCellsFromSelection(editor), table, cell);\n        return action(table, targets);\n      })).getOr('');\n      each$1({\n        mceTableRowType: () => lookupOnSelection(actions.getTableRowType),\n        mceTableCellType: () => lookupOnSelection(actions.getTableCellType),\n        mceTableColType: () => lookupOnSelection(actions.getTableColType)\n      }, (func, name) => editor.addQueryValueHandler(name, func));\n    };\n\n    const adt$4 = Adt.generate([{\n      before: ['element']\n    }, {\n      on: ['element', 'offset']\n    }, {\n      after: ['element']\n    }]);\n    const cata$1 = (subject, onBefore, onOn, onAfter) => subject.fold(onBefore, onOn, onAfter);\n    const getStart$1 = situ => situ.fold(identity, identity, identity);\n    const before$2 = adt$4.before;\n    const on = adt$4.on;\n    const after$3 = adt$4.after;\n    const Situ = {\n      before: before$2,\n      on,\n      after: after$3,\n      cata: cata$1,\n      getStart: getStart$1\n    };\n\n    const create$4 = (selection, kill) => ({\n      selection,\n      kill\n    });\n    const Response = {\n      create: create$4\n    };\n\n    const selectNode = (win, element) => {\n      const rng = win.document.createRange();\n      rng.selectNode(element.dom);\n      return rng;\n    };\n    const selectNodeContents = (win, element) => {\n      const rng = win.document.createRange();\n      selectNodeContentsUsing(rng, element);\n      return rng;\n    };\n    const selectNodeContentsUsing = (rng, element) => rng.selectNodeContents(element.dom);\n    const setStart = (rng, situ) => {\n      situ.fold(e => {\n        rng.setStartBefore(e.dom);\n      }, (e, o) => {\n        rng.setStart(e.dom, o);\n      }, e => {\n        rng.setStartAfter(e.dom);\n      });\n    };\n    const setFinish = (rng, situ) => {\n      situ.fold(e => {\n        rng.setEndBefore(e.dom);\n      }, (e, o) => {\n        rng.setEnd(e.dom, o);\n      }, e => {\n        rng.setEndAfter(e.dom);\n      });\n    };\n    const relativeToNative = (win, startSitu, finishSitu) => {\n      const range = win.document.createRange();\n      setStart(range, startSitu);\n      setFinish(range, finishSitu);\n      return range;\n    };\n    const exactToNative = (win, start, soffset, finish, foffset) => {\n      const rng = win.document.createRange();\n      rng.setStart(start.dom, soffset);\n      rng.setEnd(finish.dom, foffset);\n      return rng;\n    };\n    const toRect = rect => ({\n      left: rect.left,\n      top: rect.top,\n      right: rect.right,\n      bottom: rect.bottom,\n      width: rect.width,\n      height: rect.height\n    });\n    const getFirstRect$1 = rng => {\n      const rects = rng.getClientRects();\n      const rect = rects.length > 0 ? rects[0] : rng.getBoundingClientRect();\n      return rect.width > 0 || rect.height > 0 ? Optional.some(rect).map(toRect) : Optional.none();\n    };\n\n    const adt$3 = Adt.generate([{\n      ltr: ['start', 'soffset', 'finish', 'foffset']\n    }, {\n      rtl: ['start', 'soffset', 'finish', 'foffset']\n    }]);\n    const fromRange = (win, type, range) => type(SugarElement.fromDom(range.startContainer), range.startOffset, SugarElement.fromDom(range.endContainer), range.endOffset);\n    const getRanges = (win, selection) => selection.match({\n      domRange: rng => {\n        return {\n          ltr: constant(rng),\n          rtl: Optional.none\n        };\n      },\n      relative: (startSitu, finishSitu) => {\n        return {\n          ltr: cached(() => relativeToNative(win, startSitu, finishSitu)),\n          rtl: cached(() => Optional.some(relativeToNative(win, finishSitu, startSitu)))\n        };\n      },\n      exact: (start, soffset, finish, foffset) => {\n        return {\n          ltr: cached(() => exactToNative(win, start, soffset, finish, foffset)),\n          rtl: cached(() => Optional.some(exactToNative(win, finish, foffset, start, soffset)))\n        };\n      }\n    });\n    const doDiagnose = (win, ranges) => {\n      const rng = ranges.ltr();\n      if (rng.collapsed) {\n        const reversed = ranges.rtl().filter(rev => rev.collapsed === false);\n        return reversed.map(rev => adt$3.rtl(SugarElement.fromDom(rev.endContainer), rev.endOffset, SugarElement.fromDom(rev.startContainer), rev.startOffset)).getOrThunk(() => fromRange(win, adt$3.ltr, rng));\n      } else {\n        return fromRange(win, adt$3.ltr, rng);\n      }\n    };\n    const diagnose = (win, selection) => {\n      const ranges = getRanges(win, selection);\n      return doDiagnose(win, ranges);\n    };\n    const asLtrRange = (win, selection) => {\n      const diagnosis = diagnose(win, selection);\n      return diagnosis.match({\n        ltr: (start, soffset, finish, foffset) => {\n          const rng = win.document.createRange();\n          rng.setStart(start.dom, soffset);\n          rng.setEnd(finish.dom, foffset);\n          return rng;\n        },\n        rtl: (start, soffset, finish, foffset) => {\n          const rng = win.document.createRange();\n          rng.setStart(finish.dom, foffset);\n          rng.setEnd(start.dom, soffset);\n          return rng;\n        }\n      });\n    };\n    adt$3.ltr;\n    adt$3.rtl;\n\n    const create$3 = (start, soffset, finish, foffset) => ({\n      start,\n      soffset,\n      finish,\n      foffset\n    });\n    const SimRange = {\n      create: create$3\n    };\n\n    const create$2 = (start, soffset, finish, foffset) => {\n      return {\n        start: Situ.on(start, soffset),\n        finish: Situ.on(finish, foffset)\n      };\n    };\n    const Situs = {\n      create: create$2\n    };\n\n    const convertToRange = (win, selection) => {\n      const rng = asLtrRange(win, selection);\n      return SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset);\n    };\n    const makeSitus = Situs.create;\n\n    const sync = (container, isRoot, start, soffset, finish, foffset, selectRange) => {\n      if (!(eq$1(start, finish) && soffset === foffset)) {\n        return closest$1(start, 'td,th', isRoot).bind(s => {\n          return closest$1(finish, 'td,th', isRoot).bind(f => {\n            return detect(container, isRoot, s, f, selectRange);\n          });\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const detect = (container, isRoot, start, finish, selectRange) => {\n      if (!eq$1(start, finish)) {\n        return identify(start, finish, isRoot).bind(cellSel => {\n          const boxes = cellSel.boxes.getOr([]);\n          if (boxes.length > 1) {\n            selectRange(container, boxes, cellSel.start, cellSel.finish);\n            return Optional.some(Response.create(Optional.some(makeSitus(start, 0, start, getEnd(start))), true));\n          } else {\n            return Optional.none();\n          }\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const update = (rows, columns, container, selected, annotations) => {\n      const updateSelection = newSels => {\n        annotations.clearBeforeUpdate(container);\n        annotations.selectRange(container, newSels.boxes, newSels.start, newSels.finish);\n        return newSels.boxes;\n      };\n      return shiftSelection(selected, rows, columns, annotations.firstSelectedSelector, annotations.lastSelectedSelector).map(updateSelection);\n    };\n\n    const traverse = (item, mode) => ({\n      item,\n      mode\n    });\n    const backtrack = (universe, item, _direction, transition = sidestep) => {\n      return universe.property().parent(item).map(p => {\n        return traverse(p, transition);\n      });\n    };\n    const sidestep = (universe, item, direction, transition = advance) => {\n      return direction.sibling(universe, item).map(p => {\n        return traverse(p, transition);\n      });\n    };\n    const advance = (universe, item, direction, transition = advance) => {\n      const children = universe.property().children(item);\n      const result = direction.first(children);\n      return result.map(r => {\n        return traverse(r, transition);\n      });\n    };\n    const successors = [{\n      current: backtrack,\n      next: sidestep,\n      fallback: Optional.none()\n    }, {\n      current: sidestep,\n      next: advance,\n      fallback: Optional.some(backtrack)\n    }, {\n      current: advance,\n      next: advance,\n      fallback: Optional.some(sidestep)\n    }];\n    const go = (universe, item, mode, direction, rules = successors) => {\n      const ruleOpt = find$1(rules, succ => {\n        return succ.current === mode;\n      });\n      return ruleOpt.bind(rule => {\n        return rule.current(universe, item, direction, rule.next).orThunk(() => {\n          return rule.fallback.bind(fb => {\n            return go(universe, item, fb, direction);\n          });\n        });\n      });\n    };\n\n    const left$1 = () => {\n      const sibling = (universe, item) => {\n        return universe.query().prevSibling(item);\n      };\n      const first = children => {\n        return children.length > 0 ? Optional.some(children[children.length - 1]) : Optional.none();\n      };\n      return {\n        sibling,\n        first\n      };\n    };\n    const right$1 = () => {\n      const sibling = (universe, item) => {\n        return universe.query().nextSibling(item);\n      };\n      const first = children => {\n        return children.length > 0 ? Optional.some(children[0]) : Optional.none();\n      };\n      return {\n        sibling,\n        first\n      };\n    };\n    const Walkers = {\n      left: left$1,\n      right: right$1\n    };\n\n    const hone = (universe, item, predicate, mode, direction, isRoot) => {\n      const next = go(universe, item, mode, direction);\n      return next.bind(n => {\n        if (isRoot(n.item)) {\n          return Optional.none();\n        } else {\n          return predicate(n.item) ? Optional.some(n.item) : hone(universe, n.item, predicate, n.mode, direction, isRoot);\n        }\n      });\n    };\n    const left = (universe, item, predicate, isRoot) => {\n      return hone(universe, item, predicate, sidestep, Walkers.left(), isRoot);\n    };\n    const right = (universe, item, predicate, isRoot) => {\n      return hone(universe, item, predicate, sidestep, Walkers.right(), isRoot);\n    };\n\n    const isLeaf = universe => element => universe.property().children(element).length === 0;\n    const before$1 = (universe, item, isRoot) => {\n      return seekLeft$1(universe, item, isLeaf(universe), isRoot);\n    };\n    const after$2 = (universe, item, isRoot) => {\n      return seekRight$1(universe, item, isLeaf(universe), isRoot);\n    };\n    const seekLeft$1 = left;\n    const seekRight$1 = right;\n\n    const universe = DomUniverse();\n    const before = (element, isRoot) => {\n      return before$1(universe, element, isRoot);\n    };\n    const after$1 = (element, isRoot) => {\n      return after$2(universe, element, isRoot);\n    };\n    const seekLeft = (element, predicate, isRoot) => {\n      return seekLeft$1(universe, element, predicate, isRoot);\n    };\n    const seekRight = (element, predicate, isRoot) => {\n      return seekRight$1(universe, element, predicate, isRoot);\n    };\n\n    const ancestor = (scope, predicate, isRoot) => ancestor$2(scope, predicate, isRoot).isSome();\n\n    const adt$2 = Adt.generate([{\n      none: ['message']\n    }, {\n      success: []\n    }, {\n      failedUp: ['cell']\n    }, {\n      failedDown: ['cell']\n    }]);\n    const isOverlapping = (bridge, before, after) => {\n      const beforeBounds = bridge.getRect(before);\n      const afterBounds = bridge.getRect(after);\n      return afterBounds.right > beforeBounds.left && afterBounds.left < beforeBounds.right;\n    };\n    const isRow = elem => {\n      return closest$1(elem, 'tr');\n    };\n    const verify = (bridge, before, beforeOffset, after, afterOffset, failure, isRoot) => {\n      return closest$1(after, 'td,th', isRoot).bind(afterCell => {\n        return closest$1(before, 'td,th', isRoot).map(beforeCell => {\n          if (!eq$1(afterCell, beforeCell)) {\n            return sharedOne(isRow, [afterCell, beforeCell]).fold(() => {\n              return isOverlapping(bridge, beforeCell, afterCell) ? adt$2.success() : failure(beforeCell);\n            }, _sharedRow => {\n              return failure(beforeCell);\n            });\n          } else {\n            return eq$1(after, afterCell) && getEnd(afterCell) === afterOffset ? failure(beforeCell) : adt$2.none('in same cell');\n          }\n        });\n      }).getOr(adt$2.none('default'));\n    };\n    const cata = (subject, onNone, onSuccess, onFailedUp, onFailedDown) => {\n      return subject.fold(onNone, onSuccess, onFailedUp, onFailedDown);\n    };\n    const BeforeAfter = {\n      ...adt$2,\n      verify,\n      cata\n    };\n\n    const inParent = (parent, children, element, index) => ({\n      parent,\n      children,\n      element,\n      index\n    });\n    const indexInParent = element => parent(element).bind(parent => {\n      const children = children$2(parent);\n      return indexOf(children, element).map(index => inParent(parent, children, element, index));\n    });\n    const indexOf = (elements, element) => findIndex(elements, curry(eq$1, element));\n\n    const isBr = isTag('br');\n    const gatherer = (cand, gather, isRoot) => {\n      return gather(cand, isRoot).bind(target => {\n        return isText(target) && get$6(target).trim().length === 0 ? gatherer(target, gather, isRoot) : Optional.some(target);\n      });\n    };\n    const handleBr = (isRoot, element, direction) => {\n      return direction.traverse(element).orThunk(() => {\n        return gatherer(element, direction.gather, isRoot);\n      }).map(direction.relative);\n    };\n    const findBr = (element, offset) => {\n      return child$2(element, offset).filter(isBr).orThunk(() => {\n        return child$2(element, offset - 1).filter(isBr);\n      });\n    };\n    const handleParent = (isRoot, element, offset, direction) => {\n      return findBr(element, offset).bind(br => {\n        return direction.traverse(br).fold(() => {\n          return gatherer(br, direction.gather, isRoot).map(direction.relative);\n        }, adjacent => {\n          return indexInParent(adjacent).map(info => {\n            return Situ.on(info.parent, info.index);\n          });\n        });\n      });\n    };\n    const tryBr = (isRoot, element, offset, direction) => {\n      const target = isBr(element) ? handleBr(isRoot, element, direction) : handleParent(isRoot, element, offset, direction);\n      return target.map(tgt => {\n        return {\n          start: tgt,\n          finish: tgt\n        };\n      });\n    };\n    const process = analysis => {\n      return BeforeAfter.cata(analysis, _message => {\n        return Optional.none();\n      }, () => {\n        return Optional.none();\n      }, cell => {\n        return Optional.some(point(cell, 0));\n      }, cell => {\n        return Optional.some(point(cell, getEnd(cell)));\n      });\n    };\n\n    const moveDown = (caret, amount) => {\n      return {\n        left: caret.left,\n        top: caret.top + amount,\n        right: caret.right,\n        bottom: caret.bottom + amount\n      };\n    };\n    const moveUp = (caret, amount) => {\n      return {\n        left: caret.left,\n        top: caret.top - amount,\n        right: caret.right,\n        bottom: caret.bottom - amount\n      };\n    };\n    const translate = (caret, xDelta, yDelta) => {\n      return {\n        left: caret.left + xDelta,\n        top: caret.top + yDelta,\n        right: caret.right + xDelta,\n        bottom: caret.bottom + yDelta\n      };\n    };\n    const getTop = caret => {\n      return caret.top;\n    };\n    const getBottom = caret => {\n      return caret.bottom;\n    };\n\n    const getPartialBox = (bridge, element, offset) => {\n      if (offset >= 0 && offset < getEnd(element)) {\n        return bridge.getRangedRect(element, offset, element, offset + 1);\n      } else if (offset > 0) {\n        return bridge.getRangedRect(element, offset - 1, element, offset);\n      }\n      return Optional.none();\n    };\n    const toCaret = rect => ({\n      left: rect.left,\n      top: rect.top,\n      right: rect.right,\n      bottom: rect.bottom\n    });\n    const getElemBox = (bridge, element) => {\n      return Optional.some(bridge.getRect(element));\n    };\n    const getBoxAt = (bridge, element, offset) => {\n      if (isElement(element)) {\n        return getElemBox(bridge, element).map(toCaret);\n      } else if (isText(element)) {\n        return getPartialBox(bridge, element, offset).map(toCaret);\n      } else {\n        return Optional.none();\n      }\n    };\n    const getEntireBox = (bridge, element) => {\n      if (isElement(element)) {\n        return getElemBox(bridge, element).map(toCaret);\n      } else if (isText(element)) {\n        return bridge.getRangedRect(element, 0, element, getEnd(element)).map(toCaret);\n      } else {\n        return Optional.none();\n      }\n    };\n\n    const JUMP_SIZE = 5;\n    const NUM_RETRIES = 100;\n    const adt$1 = Adt.generate([{\n      none: []\n    }, {\n      retry: ['caret']\n    }]);\n    const isOutside = (caret, box) => {\n      return caret.left < box.left || Math.abs(box.right - caret.left) < 1 || caret.left > box.right;\n    };\n    const inOutsideBlock = (bridge, element, caret) => {\n      return closest$2(element, isBlock).fold(never, cell => {\n        return getEntireBox(bridge, cell).exists(box => {\n          return isOutside(caret, box);\n        });\n      });\n    };\n    const adjustDown = (bridge, element, guessBox, original, caret) => {\n      const lowerCaret = moveDown(caret, JUMP_SIZE);\n      if (Math.abs(guessBox.bottom - original.bottom) < 1) {\n        return adt$1.retry(lowerCaret);\n      } else if (guessBox.top > caret.bottom) {\n        return adt$1.retry(lowerCaret);\n      } else if (guessBox.top === caret.bottom) {\n        return adt$1.retry(moveDown(caret, 1));\n      } else {\n        return inOutsideBlock(bridge, element, caret) ? adt$1.retry(translate(lowerCaret, JUMP_SIZE, 0)) : adt$1.none();\n      }\n    };\n    const adjustUp = (bridge, element, guessBox, original, caret) => {\n      const higherCaret = moveUp(caret, JUMP_SIZE);\n      if (Math.abs(guessBox.top - original.top) < 1) {\n        return adt$1.retry(higherCaret);\n      } else if (guessBox.bottom < caret.top) {\n        return adt$1.retry(higherCaret);\n      } else if (guessBox.bottom === caret.top) {\n        return adt$1.retry(moveUp(caret, 1));\n      } else {\n        return inOutsideBlock(bridge, element, caret) ? adt$1.retry(translate(higherCaret, JUMP_SIZE, 0)) : adt$1.none();\n      }\n    };\n    const upMovement = {\n      point: getTop,\n      adjuster: adjustUp,\n      move: moveUp,\n      gather: before\n    };\n    const downMovement = {\n      point: getBottom,\n      adjuster: adjustDown,\n      move: moveDown,\n      gather: after$1\n    };\n    const isAtTable = (bridge, x, y) => {\n      return bridge.elementFromPoint(x, y).filter(elm => {\n        return name(elm) === 'table';\n      }).isSome();\n    };\n    const adjustForTable = (bridge, movement, original, caret, numRetries) => {\n      return adjustTil(bridge, movement, original, movement.move(caret, JUMP_SIZE), numRetries);\n    };\n    const adjustTil = (bridge, movement, original, caret, numRetries) => {\n      if (numRetries === 0) {\n        return Optional.some(caret);\n      }\n      if (isAtTable(bridge, caret.left, movement.point(caret))) {\n        return adjustForTable(bridge, movement, original, caret, numRetries - 1);\n      }\n      return bridge.situsFromPoint(caret.left, movement.point(caret)).bind(guess => {\n        return guess.start.fold(Optional.none, element => {\n          return getEntireBox(bridge, element).bind(guessBox => {\n            return movement.adjuster(bridge, element, guessBox, original, caret).fold(Optional.none, newCaret => {\n              return adjustTil(bridge, movement, original, newCaret, numRetries - 1);\n            });\n          }).orThunk(() => {\n            return Optional.some(caret);\n          });\n        }, Optional.none);\n      });\n    };\n    const checkScroll = (movement, adjusted, bridge) => {\n      if (movement.point(adjusted) > bridge.getInnerHeight()) {\n        return Optional.some(movement.point(adjusted) - bridge.getInnerHeight());\n      } else if (movement.point(adjusted) < 0) {\n        return Optional.some(-movement.point(adjusted));\n      } else {\n        return Optional.none();\n      }\n    };\n    const retry = (movement, bridge, caret) => {\n      const moved = movement.move(caret, JUMP_SIZE);\n      const adjusted = adjustTil(bridge, movement, caret, moved, NUM_RETRIES).getOr(moved);\n      return checkScroll(movement, adjusted, bridge).fold(() => {\n        return bridge.situsFromPoint(adjusted.left, movement.point(adjusted));\n      }, delta => {\n        bridge.scrollBy(0, delta);\n        return bridge.situsFromPoint(adjusted.left, movement.point(adjusted) - delta);\n      });\n    };\n    const Retries = {\n      tryUp: curry(retry, upMovement),\n      tryDown: curry(retry, downMovement),\n      getJumpSize: constant(JUMP_SIZE)\n    };\n\n    const MAX_RETRIES = 20;\n    const findSpot = (bridge, isRoot, direction) => {\n      return bridge.getSelection().bind(sel => {\n        return tryBr(isRoot, sel.finish, sel.foffset, direction).fold(() => {\n          return Optional.some(point(sel.finish, sel.foffset));\n        }, brNeighbour => {\n          const range = bridge.fromSitus(brNeighbour);\n          const analysis = BeforeAfter.verify(bridge, sel.finish, sel.foffset, range.finish, range.foffset, direction.failure, isRoot);\n          return process(analysis);\n        });\n      });\n    };\n    const scan = (bridge, isRoot, element, offset, direction, numRetries) => {\n      if (numRetries === 0) {\n        return Optional.none();\n      }\n      return tryCursor(bridge, isRoot, element, offset, direction).bind(situs => {\n        const range = bridge.fromSitus(situs);\n        const analysis = BeforeAfter.verify(bridge, element, offset, range.finish, range.foffset, direction.failure, isRoot);\n        return BeforeAfter.cata(analysis, () => {\n          return Optional.none();\n        }, () => {\n          return Optional.some(situs);\n        }, cell => {\n          if (eq$1(element, cell) && offset === 0) {\n            return tryAgain(bridge, element, offset, moveUp, direction);\n          } else {\n            return scan(bridge, isRoot, cell, 0, direction, numRetries - 1);\n          }\n        }, cell => {\n          if (eq$1(element, cell) && offset === getEnd(cell)) {\n            return tryAgain(bridge, element, offset, moveDown, direction);\n          } else {\n            return scan(bridge, isRoot, cell, getEnd(cell), direction, numRetries - 1);\n          }\n        });\n      });\n    };\n    const tryAgain = (bridge, element, offset, move, direction) => {\n      return getBoxAt(bridge, element, offset).bind(box => {\n        return tryAt(bridge, direction, move(box, Retries.getJumpSize()));\n      });\n    };\n    const tryAt = (bridge, direction, box) => {\n      const browser = detect$2().browser;\n      if (browser.isChromium() || browser.isSafari() || browser.isFirefox()) {\n        return direction.retry(bridge, box);\n      } else {\n        return Optional.none();\n      }\n    };\n    const tryCursor = (bridge, isRoot, element, offset, direction) => {\n      return getBoxAt(bridge, element, offset).bind(box => {\n        return tryAt(bridge, direction, box);\n      });\n    };\n    const handle$1 = (bridge, isRoot, direction) => {\n      return findSpot(bridge, isRoot, direction).bind(spot => {\n        return scan(bridge, isRoot, spot.element, spot.offset, direction, MAX_RETRIES).map(bridge.fromSitus);\n      });\n    };\n\n    const inSameTable = (elem, table) => {\n      return ancestor(elem, e => {\n        return parent(e).exists(p => {\n          return eq$1(p, table);\n        });\n      });\n    };\n    const simulate = (bridge, isRoot, direction, initial, anchor) => {\n      return closest$1(initial, 'td,th', isRoot).bind(start => {\n        return closest$1(start, 'table', isRoot).bind(table => {\n          if (!inSameTable(anchor, table)) {\n            return Optional.none();\n          }\n          return handle$1(bridge, isRoot, direction).bind(range => {\n            return closest$1(range.finish, 'td,th', isRoot).map(finish => {\n              return {\n                start,\n                finish,\n                range\n              };\n            });\n          });\n        });\n      });\n    };\n    const navigate = (bridge, isRoot, direction, initial, anchor, precheck) => {\n      return precheck(initial, isRoot).orThunk(() => {\n        return simulate(bridge, isRoot, direction, initial, anchor).map(info => {\n          const range = info.range;\n          return Response.create(Optional.some(makeSitus(range.start, range.soffset, range.finish, range.foffset)), true);\n        });\n      });\n    };\n    const firstUpCheck = (initial, isRoot) => {\n      return closest$1(initial, 'tr', isRoot).bind(startRow => {\n        return closest$1(startRow, 'table', isRoot).bind(table => {\n          const rows = descendants(table, 'tr');\n          if (eq$1(startRow, rows[0])) {\n            return seekLeft(table, element => {\n              return last$1(element).isSome();\n            }, isRoot).map(last => {\n              const lastOffset = getEnd(last);\n              return Response.create(Optional.some(makeSitus(last, lastOffset, last, lastOffset)), true);\n            });\n          } else {\n            return Optional.none();\n          }\n        });\n      });\n    };\n    const lastDownCheck = (initial, isRoot) => {\n      return closest$1(initial, 'tr', isRoot).bind(startRow => {\n        return closest$1(startRow, 'table', isRoot).bind(table => {\n          const rows = descendants(table, 'tr');\n          if (eq$1(startRow, rows[rows.length - 1])) {\n            return seekRight(table, element => {\n              return first(element).isSome();\n            }, isRoot).map(first => {\n              return Response.create(Optional.some(makeSitus(first, 0, first, 0)), true);\n            });\n          } else {\n            return Optional.none();\n          }\n        });\n      });\n    };\n    const select = (bridge, container, isRoot, direction, initial, anchor, selectRange) => {\n      return simulate(bridge, isRoot, direction, initial, anchor).bind(info => {\n        return detect(container, isRoot, info.start, info.finish, selectRange);\n      });\n    };\n\n    const Cell = initial => {\n      let value = initial;\n      const get = () => {\n        return value;\n      };\n      const set = v => {\n        value = v;\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    const singleton = doRevoke => {\n      const subject = Cell(Optional.none());\n      const revoke = () => subject.get().each(doRevoke);\n      const clear = () => {\n        revoke();\n        subject.set(Optional.none());\n      };\n      const isSet = () => subject.get().isSome();\n      const get = () => subject.get();\n      const set = s => {\n        revoke();\n        subject.set(Optional.some(s));\n      };\n      return {\n        clear,\n        isSet,\n        get,\n        set\n      };\n    };\n    const value = () => {\n      const subject = singleton(noop);\n      const on = f => subject.get().each(f);\n      return {\n        ...subject,\n        on\n      };\n    };\n\n    const findCell = (target, isRoot) => closest$1(target, 'td,th', isRoot);\n    const isInEditableContext = cell => parentElement(cell).exists(isEditable$1);\n    const MouseSelection = (bridge, container, isRoot, annotations) => {\n      const cursor = value();\n      const clearstate = cursor.clear;\n      const applySelection = event => {\n        cursor.on(start => {\n          annotations.clearBeforeUpdate(container);\n          findCell(event.target, isRoot).each(finish => {\n            identify(start, finish, isRoot).each(cellSel => {\n              const boxes = cellSel.boxes.getOr([]);\n              if (boxes.length === 1) {\n                const singleCell = boxes[0];\n                const isNonEditableCell = getRaw(singleCell) === 'false';\n                const isCellClosestContentEditable = is(closest(event.target), singleCell, eq$1);\n                if (isNonEditableCell && isCellClosestContentEditable) {\n                  annotations.selectRange(container, boxes, singleCell, singleCell);\n                  bridge.selectContents(singleCell);\n                }\n              } else if (boxes.length > 1) {\n                annotations.selectRange(container, boxes, cellSel.start, cellSel.finish);\n                bridge.selectContents(finish);\n              }\n            });\n          });\n        });\n      };\n      const mousedown = event => {\n        annotations.clear(container);\n        findCell(event.target, isRoot).filter(isInEditableContext).each(cursor.set);\n      };\n      const mouseover = event => {\n        applySelection(event);\n      };\n      const mouseup = event => {\n        applySelection(event);\n        clearstate();\n      };\n      return {\n        clearstate,\n        mousedown,\n        mouseover,\n        mouseup\n      };\n    };\n\n    const down = {\n      traverse: nextSibling,\n      gather: after$1,\n      relative: Situ.before,\n      retry: Retries.tryDown,\n      failure: BeforeAfter.failedDown\n    };\n    const up = {\n      traverse: prevSibling,\n      gather: before,\n      relative: Situ.before,\n      retry: Retries.tryUp,\n      failure: BeforeAfter.failedUp\n    };\n\n    const isKey = key => {\n      return keycode => {\n        return keycode === key;\n      };\n    };\n    const isUp = isKey(38);\n    const isDown = isKey(40);\n    const isNavigation = keycode => {\n      return keycode >= 37 && keycode <= 40;\n    };\n    const ltr = {\n      isBackward: isKey(37),\n      isForward: isKey(39)\n    };\n    const rtl = {\n      isBackward: isKey(39),\n      isForward: isKey(37)\n    };\n\n    const get$3 = _DOC => {\n      const doc = _DOC !== undefined ? _DOC.dom : document;\n      const x = doc.body.scrollLeft || doc.documentElement.scrollLeft;\n      const y = doc.body.scrollTop || doc.documentElement.scrollTop;\n      return SugarPosition(x, y);\n    };\n    const by = (x, y, _DOC) => {\n      const doc = _DOC !== undefined ? _DOC.dom : document;\n      const win = doc.defaultView;\n      if (win) {\n        win.scrollBy(x, y);\n      }\n    };\n\n    const adt = Adt.generate([{\n      domRange: ['rng']\n    }, {\n      relative: ['startSitu', 'finishSitu']\n    }, {\n      exact: ['start', 'soffset', 'finish', 'foffset']\n    }]);\n    const exactFromRange = simRange => adt.exact(simRange.start, simRange.soffset, simRange.finish, simRange.foffset);\n    const getStart = selection => selection.match({\n      domRange: rng => SugarElement.fromDom(rng.startContainer),\n      relative: (startSitu, _finishSitu) => Situ.getStart(startSitu),\n      exact: (start, _soffset, _finish, _foffset) => start\n    });\n    const domRange = adt.domRange;\n    const relative = adt.relative;\n    const exact = adt.exact;\n    const getWin = selection => {\n      const start = getStart(selection);\n      return defaultView(start);\n    };\n    const range = SimRange.create;\n    const SimSelection = {\n      domRange,\n      relative,\n      exact,\n      exactFromRange,\n      getWin,\n      range\n    };\n\n    const caretPositionFromPoint = (doc, x, y) => {\n      var _a, _b;\n      return Optional.from((_b = (_a = doc.dom).caretPositionFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y)).bind(pos => {\n        if (pos.offsetNode === null) {\n          return Optional.none();\n        }\n        const r = doc.dom.createRange();\n        r.setStart(pos.offsetNode, pos.offset);\n        r.collapse();\n        return Optional.some(r);\n      });\n    };\n    const caretRangeFromPoint = (doc, x, y) => {\n      var _a, _b;\n      return Optional.from((_b = (_a = doc.dom).caretRangeFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y));\n    };\n    const availableSearch = (() => {\n      if (document.caretPositionFromPoint) {\n        return caretPositionFromPoint;\n      } else if (document.caretRangeFromPoint) {\n        return caretRangeFromPoint;\n      } else {\n        return Optional.none;\n      }\n    })();\n    const fromPoint = (win, x, y) => {\n      const doc = SugarElement.fromDom(win.document);\n      return availableSearch(doc, x, y).map(rng => SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset));\n    };\n\n    const beforeSpecial = (element, offset) => {\n      const name$1 = name(element);\n      if ('input' === name$1) {\n        return Situ.after(element);\n      } else if (!contains$2(['br', 'img'], name$1)) {\n        return Situ.on(element, offset);\n      } else {\n        return offset === 0 ? Situ.before(element) : Situ.after(element);\n      }\n    };\n    const preprocessRelative = (startSitu, finishSitu) => {\n      const start = startSitu.fold(Situ.before, beforeSpecial, Situ.after);\n      const finish = finishSitu.fold(Situ.before, beforeSpecial, Situ.after);\n      return SimSelection.relative(start, finish);\n    };\n    const preprocessExact = (start, soffset, finish, foffset) => {\n      const startSitu = beforeSpecial(start, soffset);\n      const finishSitu = beforeSpecial(finish, foffset);\n      return SimSelection.relative(startSitu, finishSitu);\n    };\n\n    const makeRange = (start, soffset, finish, foffset) => {\n      const doc = owner(start);\n      const rng = doc.dom.createRange();\n      rng.setStart(start.dom, soffset);\n      rng.setEnd(finish.dom, foffset);\n      return rng;\n    };\n    const after = (start, soffset, finish, foffset) => {\n      const r = makeRange(start, soffset, finish, foffset);\n      const same = eq$1(start, finish) && soffset === foffset;\n      return r.collapsed && !same;\n    };\n\n    const getNativeSelection = win => Optional.from(win.getSelection());\n    const doSetNativeRange = (win, rng) => {\n      getNativeSelection(win).each(selection => {\n        selection.removeAllRanges();\n        selection.addRange(rng);\n      });\n    };\n    const doSetRange = (win, start, soffset, finish, foffset) => {\n      const rng = exactToNative(win, start, soffset, finish, foffset);\n      doSetNativeRange(win, rng);\n    };\n    const setLegacyRtlRange = (win, selection, start, soffset, finish, foffset) => {\n      selection.collapse(start.dom, soffset);\n      selection.extend(finish.dom, foffset);\n    };\n    const setRangeFromRelative = (win, relative) => diagnose(win, relative).match({\n      ltr: (start, soffset, finish, foffset) => {\n        doSetRange(win, start, soffset, finish, foffset);\n      },\n      rtl: (start, soffset, finish, foffset) => {\n        getNativeSelection(win).each(selection => {\n          if (selection.setBaseAndExtent) {\n            selection.setBaseAndExtent(start.dom, soffset, finish.dom, foffset);\n          } else if (selection.extend) {\n            try {\n              setLegacyRtlRange(win, selection, start, soffset, finish, foffset);\n            } catch (e) {\n              doSetRange(win, finish, foffset, start, soffset);\n            }\n          } else {\n            doSetRange(win, finish, foffset, start, soffset);\n          }\n        });\n      }\n    });\n    const setExact = (win, start, soffset, finish, foffset) => {\n      const relative = preprocessExact(start, soffset, finish, foffset);\n      setRangeFromRelative(win, relative);\n    };\n    const setRelative = (win, startSitu, finishSitu) => {\n      const relative = preprocessRelative(startSitu, finishSitu);\n      setRangeFromRelative(win, relative);\n    };\n    const readRange = selection => {\n      if (selection.rangeCount > 0) {\n        const firstRng = selection.getRangeAt(0);\n        const lastRng = selection.getRangeAt(selection.rangeCount - 1);\n        return Optional.some(SimRange.create(SugarElement.fromDom(firstRng.startContainer), firstRng.startOffset, SugarElement.fromDom(lastRng.endContainer), lastRng.endOffset));\n      } else {\n        return Optional.none();\n      }\n    };\n    const doGetExact = selection => {\n      if (selection.anchorNode === null || selection.focusNode === null) {\n        return readRange(selection);\n      } else {\n        const anchor = SugarElement.fromDom(selection.anchorNode);\n        const focus = SugarElement.fromDom(selection.focusNode);\n        return after(anchor, selection.anchorOffset, focus, selection.focusOffset) ? Optional.some(SimRange.create(anchor, selection.anchorOffset, focus, selection.focusOffset)) : readRange(selection);\n      }\n    };\n    const setToElement = (win, element, selectNodeContents$1 = true) => {\n      const rngGetter = selectNodeContents$1 ? selectNodeContents : selectNode;\n      const rng = rngGetter(win, element);\n      doSetNativeRange(win, rng);\n    };\n    const getExact = win => getNativeSelection(win).filter(sel => sel.rangeCount > 0).bind(doGetExact);\n    const get$2 = win => getExact(win).map(range => SimSelection.exact(range.start, range.soffset, range.finish, range.foffset));\n    const getFirstRect = (win, selection) => {\n      const rng = asLtrRange(win, selection);\n      return getFirstRect$1(rng);\n    };\n    const getAtPoint = (win, x, y) => fromPoint(win, x, y);\n    const clear = win => {\n      getNativeSelection(win).each(selection => selection.removeAllRanges());\n    };\n\n    const WindowBridge = win => {\n      const elementFromPoint = (x, y) => {\n        return SugarElement.fromPoint(SugarElement.fromDom(win.document), x, y);\n      };\n      const getRect = element => {\n        return element.dom.getBoundingClientRect();\n      };\n      const getRangedRect = (start, soffset, finish, foffset) => {\n        const sel = SimSelection.exact(start, soffset, finish, foffset);\n        return getFirstRect(win, sel);\n      };\n      const getSelection = () => {\n        return get$2(win).map(exactAdt => {\n          return convertToRange(win, exactAdt);\n        });\n      };\n      const fromSitus = situs => {\n        const relative = SimSelection.relative(situs.start, situs.finish);\n        return convertToRange(win, relative);\n      };\n      const situsFromPoint = (x, y) => {\n        return getAtPoint(win, x, y).map(exact => {\n          return Situs.create(exact.start, exact.soffset, exact.finish, exact.foffset);\n        });\n      };\n      const clearSelection = () => {\n        clear(win);\n      };\n      const collapseSelection = (toStart = false) => {\n        get$2(win).each(sel => sel.fold(rng => rng.collapse(toStart), (startSitu, finishSitu) => {\n          const situ = toStart ? startSitu : finishSitu;\n          setRelative(win, situ, situ);\n        }, (start, soffset, finish, foffset) => {\n          const node = toStart ? start : finish;\n          const offset = toStart ? soffset : foffset;\n          setExact(win, node, offset, node, offset);\n        }));\n      };\n      const selectNode = element => {\n        setToElement(win, element, false);\n      };\n      const selectContents = element => {\n        setToElement(win, element);\n      };\n      const setSelection = sel => {\n        setExact(win, sel.start, sel.soffset, sel.finish, sel.foffset);\n      };\n      const setRelativeSelection = (start, finish) => {\n        setRelative(win, start, finish);\n      };\n      const getInnerHeight = () => {\n        return win.innerHeight;\n      };\n      const getScrollY = () => {\n        const pos = get$3(SugarElement.fromDom(win.document));\n        return pos.top;\n      };\n      const scrollBy = (x, y) => {\n        by(x, y, SugarElement.fromDom(win.document));\n      };\n      return {\n        elementFromPoint,\n        getRect,\n        getRangedRect,\n        getSelection,\n        fromSitus,\n        situsFromPoint,\n        clearSelection,\n        collapseSelection,\n        setSelection,\n        setRelativeSelection,\n        selectNode,\n        selectContents,\n        getInnerHeight,\n        getScrollY,\n        scrollBy\n      };\n    };\n\n    const rc = (rows, cols) => ({\n      rows,\n      cols\n    });\n    const mouse = (win, container, isRoot, annotations) => {\n      const bridge = WindowBridge(win);\n      const handlers = MouseSelection(bridge, container, isRoot, annotations);\n      return {\n        clearstate: handlers.clearstate,\n        mousedown: handlers.mousedown,\n        mouseover: handlers.mouseover,\n        mouseup: handlers.mouseup\n      };\n    };\n    const isEditableNode = node => closest$2(node, isHTMLElement).exists(isEditable$1);\n    const isEditableSelection = (start, finish) => isEditableNode(start) || isEditableNode(finish);\n    const keyboard = (win, container, isRoot, annotations) => {\n      const bridge = WindowBridge(win);\n      const clearToNavigate = () => {\n        annotations.clear(container);\n        return Optional.none();\n      };\n      const keydown = (event, start, soffset, finish, foffset, direction) => {\n        const realEvent = event.raw;\n        const keycode = realEvent.which;\n        const shiftKey = realEvent.shiftKey === true;\n        const handler = retrieve$1(container, annotations.selectedSelector).fold(() => {\n          if (isNavigation(keycode) && !shiftKey) {\n            annotations.clearBeforeUpdate(container);\n          }\n          if (isNavigation(keycode) && shiftKey && !isEditableSelection(start, finish)) {\n            return Optional.none;\n          } else if (isDown(keycode) && shiftKey) {\n            return curry(select, bridge, container, isRoot, down, finish, start, annotations.selectRange);\n          } else if (isUp(keycode) && shiftKey) {\n            return curry(select, bridge, container, isRoot, up, finish, start, annotations.selectRange);\n          } else if (isDown(keycode)) {\n            return curry(navigate, bridge, isRoot, down, finish, start, lastDownCheck);\n          } else if (isUp(keycode)) {\n            return curry(navigate, bridge, isRoot, up, finish, start, firstUpCheck);\n          } else {\n            return Optional.none;\n          }\n        }, selected => {\n          const update$1 = attempts => {\n            return () => {\n              const navigation = findMap(attempts, delta => {\n                return update(delta.rows, delta.cols, container, selected, annotations);\n              });\n              return navigation.fold(() => {\n                return getEdges(container, annotations.firstSelectedSelector, annotations.lastSelectedSelector).map(edges => {\n                  const relative = isDown(keycode) || direction.isForward(keycode) ? Situ.after : Situ.before;\n                  bridge.setRelativeSelection(Situ.on(edges.first, 0), relative(edges.table));\n                  annotations.clear(container);\n                  return Response.create(Optional.none(), true);\n                });\n              }, _ => {\n                return Optional.some(Response.create(Optional.none(), true));\n              });\n            };\n          };\n          if (isNavigation(keycode) && shiftKey && !isEditableSelection(start, finish)) {\n            return Optional.none;\n          } else if (isDown(keycode) && shiftKey) {\n            return update$1([rc(+1, 0)]);\n          } else if (isUp(keycode) && shiftKey) {\n            return update$1([rc(-1, 0)]);\n          } else if (direction.isBackward(keycode) && shiftKey) {\n            return update$1([rc(0, -1), rc(-1, 0)]);\n          } else if (direction.isForward(keycode) && shiftKey) {\n            return update$1([rc(0, +1), rc(+1, 0)]);\n          } else if (isNavigation(keycode) && !shiftKey) {\n            return clearToNavigate;\n          } else {\n            return Optional.none;\n          }\n        });\n        return handler();\n      };\n      const keyup = (event, start, soffset, finish, foffset) => {\n        return retrieve$1(container, annotations.selectedSelector).fold(() => {\n          const realEvent = event.raw;\n          const keycode = realEvent.which;\n          const shiftKey = realEvent.shiftKey === true;\n          if (!shiftKey) {\n            return Optional.none();\n          }\n          if (isNavigation(keycode) && isEditableSelection(start, finish)) {\n            return sync(container, isRoot, start, soffset, finish, foffset, annotations.selectRange);\n          } else {\n            return Optional.none();\n          }\n        }, Optional.none);\n      };\n      return {\n        keydown,\n        keyup\n      };\n    };\n    const external = (win, container, isRoot, annotations) => {\n      const bridge = WindowBridge(win);\n      return (start, finish) => {\n        annotations.clearBeforeUpdate(container);\n        identify(start, finish, isRoot).each(cellSel => {\n          const boxes = cellSel.boxes.getOr([]);\n          annotations.selectRange(container, boxes, cellSel.start, cellSel.finish);\n          bridge.selectContents(finish);\n          bridge.collapseSelection();\n        });\n      };\n    };\n\n    const read = (element, attr) => {\n      const value = get$b(element, attr);\n      return value === undefined || value === '' ? [] : value.split(' ');\n    };\n    const add$2 = (element, attr, id) => {\n      const old = read(element, attr);\n      const nu = old.concat([id]);\n      set$2(element, attr, nu.join(' '));\n      return true;\n    };\n    const remove$4 = (element, attr, id) => {\n      const nu = filter$2(read(element, attr), v => v !== id);\n      if (nu.length > 0) {\n        set$2(element, attr, nu.join(' '));\n      } else {\n        remove$7(element, attr);\n      }\n      return false;\n    };\n\n    const supports = element => element.dom.classList !== undefined;\n    const get$1 = element => read(element, 'class');\n    const add$1 = (element, clazz) => add$2(element, 'class', clazz);\n    const remove$3 = (element, clazz) => remove$4(element, 'class', clazz);\n\n    const add = (element, clazz) => {\n      if (supports(element)) {\n        element.dom.classList.add(clazz);\n      } else {\n        add$1(element, clazz);\n      }\n    };\n    const cleanClass = element => {\n      const classList = supports(element) ? element.dom.classList : get$1(element);\n      if (classList.length === 0) {\n        remove$7(element, 'class');\n      }\n    };\n    const remove$2 = (element, clazz) => {\n      if (supports(element)) {\n        const classList = element.dom.classList;\n        classList.remove(clazz);\n      } else {\n        remove$3(element, clazz);\n      }\n      cleanClass(element);\n    };\n    const has = (element, clazz) => supports(element) && element.dom.classList.contains(clazz);\n\n    const remove$1 = (element, classes) => {\n      each$2(classes, x => {\n        remove$2(element, x);\n      });\n    };\n\n    const addClass = clazz => element => {\n      add(element, clazz);\n    };\n    const removeClasses = classes => element => {\n      remove$1(element, classes);\n    };\n\n    const byClass = ephemera => {\n      const addSelectionClass = addClass(ephemera.selected);\n      const removeSelectionClasses = removeClasses([ephemera.selected, ephemera.lastSelected, ephemera.firstSelected]);\n      const clear = container => {\n        const sels = descendants(container, ephemera.selectedSelector);\n        each$2(sels, removeSelectionClasses);\n      };\n      const selectRange = (container, cells, start, finish) => {\n        clear(container);\n        each$2(cells, addSelectionClass);\n        add(start, ephemera.firstSelected);\n        add(finish, ephemera.lastSelected);\n      };\n      return {\n        clearBeforeUpdate: clear,\n        clear,\n        selectRange,\n        selectedSelector: ephemera.selectedSelector,\n        firstSelectedSelector: ephemera.firstSelectedSelector,\n        lastSelectedSelector: ephemera.lastSelectedSelector\n      };\n    };\n    const byAttr = (ephemera, onSelection, onClear) => {\n      const removeSelectionAttributes = element => {\n        remove$7(element, ephemera.selected);\n        remove$7(element, ephemera.firstSelected);\n        remove$7(element, ephemera.lastSelected);\n      };\n      const addSelectionAttribute = element => {\n        set$2(element, ephemera.selected, '1');\n      };\n      const clear = container => {\n        clearBeforeUpdate(container);\n        onClear();\n      };\n      const clearBeforeUpdate = container => {\n        const sels = descendants(container, \"\".concat(ephemera.selectedSelector, \",\").concat(ephemera.firstSelectedSelector, \",\").concat(ephemera.lastSelectedSelector));\n        each$2(sels, removeSelectionAttributes);\n      };\n      const selectRange = (container, cells, start, finish) => {\n        clear(container);\n        each$2(cells, addSelectionAttribute);\n        set$2(start, ephemera.firstSelected, '1');\n        set$2(finish, ephemera.lastSelected, '1');\n        onSelection(cells, start, finish);\n      };\n      return {\n        clearBeforeUpdate,\n        clear,\n        selectRange,\n        selectedSelector: ephemera.selectedSelector,\n        firstSelectedSelector: ephemera.firstSelectedSelector,\n        lastSelectedSelector: ephemera.lastSelectedSelector\n      };\n    };\n    const SelectionAnnotation = {\n      byClass,\n      byAttr\n    };\n\n    const fold = (subject, onNone, onMultiple, onSingle) => {\n      switch (subject.tag) {\n        case 'none':\n          return onNone();\n        case 'single':\n          return onSingle(subject.element);\n        case 'multiple':\n          return onMultiple(subject.elements);\n      }\n    };\n    const none = () => ({\n      tag: 'none'\n    });\n    const multiple = elements => ({\n      tag: 'multiple',\n      elements\n    });\n    const single = element => ({\n      tag: 'single',\n      element\n    });\n\n    const Selections = (lazyRoot, getStart, selectedSelector) => {\n      const get = () => retrieve(lazyRoot(), selectedSelector).fold(() => getStart().fold(none, single), multiple);\n      return {\n        get\n      };\n    };\n\n    const getUpOrLeftCells = (grid, selectedCells) => {\n      const upGrid = grid.slice(0, selectedCells[selectedCells.length - 1].row + 1);\n      const upDetails = toDetailList(upGrid);\n      return bind$2(upDetails, detail => {\n        const slicedCells = detail.cells.slice(0, selectedCells[selectedCells.length - 1].column + 1);\n        return map$1(slicedCells, cell => cell.element);\n      });\n    };\n    const getDownOrRightCells = (grid, selectedCells) => {\n      const downGrid = grid.slice(selectedCells[0].row + selectedCells[0].rowspan - 1, grid.length);\n      const downDetails = toDetailList(downGrid);\n      return bind$2(downDetails, detail => {\n        const slicedCells = detail.cells.slice(selectedCells[0].column + selectedCells[0].colspan - 1, detail.cells.length);\n        return map$1(slicedCells, cell => cell.element);\n      });\n    };\n    const getOtherCells = (table, target, generators) => {\n      const warehouse = Warehouse.fromTable(table);\n      const details = onCells(warehouse, target);\n      return details.map(selectedCells => {\n        const grid = toGrid(warehouse, generators, false);\n        const {\n          rows\n        } = extractGridDetails(grid);\n        const upOrLeftCells = getUpOrLeftCells(rows, selectedCells);\n        const downOrRightCells = getDownOrRightCells(rows, selectedCells);\n        return {\n          upOrLeftCells,\n          downOrRightCells\n        };\n      });\n    };\n\n    const mkEvent = (target, x, y, stop, prevent, kill, raw) => ({\n      target,\n      x,\n      y,\n      stop,\n      prevent,\n      kill,\n      raw\n    });\n    const fromRawEvent$1 = rawEvent => {\n      const target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target));\n      const stop = () => rawEvent.stopPropagation();\n      const prevent = () => rawEvent.preventDefault();\n      const kill = compose(prevent, stop);\n      return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent);\n    };\n    const handle = (filter, handler) => rawEvent => {\n      if (filter(rawEvent)) {\n        handler(fromRawEvent$1(rawEvent));\n      }\n    };\n    const binder = (element, event, filter, handler, useCapture) => {\n      const wrapped = handle(filter, handler);\n      element.dom.addEventListener(event, wrapped, useCapture);\n      return {\n        unbind: curry(unbind, element, event, wrapped, useCapture)\n      };\n    };\n    const bind$1 = (element, event, filter, handler) => binder(element, event, filter, handler, false);\n    const unbind = (element, event, handler, useCapture) => {\n      element.dom.removeEventListener(event, handler, useCapture);\n    };\n\n    const filter = always;\n    const bind = (element, event, handler) => bind$1(element, event, filter, handler);\n    const fromRawEvent = fromRawEvent$1;\n\n    const hasInternalTarget = e => !has(SugarElement.fromDom(e.target), 'ephox-snooker-resizer-bar');\n    const TableCellSelectionHandler = (editor, resizeHandler) => {\n      const cellSelection = Selections(() => SugarElement.fromDom(editor.getBody()), () => getSelectionCell(getSelectionStart(editor), getIsRoot(editor)), ephemera.selectedSelector);\n      const onSelection = (cells, start, finish) => {\n        const tableOpt = table(start);\n        tableOpt.each(table => {\n          const cloneFormats = getTableCloneElements(editor);\n          const generators = cellOperations(noop, SugarElement.fromDom(editor.getDoc()), cloneFormats);\n          const selectedCells = getCellsFromSelection(editor);\n          const otherCells = getOtherCells(table, {\n            selection: selectedCells\n          }, generators);\n          fireTableSelectionChange(editor, cells, start, finish, otherCells);\n        });\n      };\n      const onClear = () => fireTableSelectionClear(editor);\n      const annotations = SelectionAnnotation.byAttr(ephemera, onSelection, onClear);\n      editor.on('init', _e => {\n        const win = editor.getWin();\n        const body = getBody(editor);\n        const isRoot = getIsRoot(editor);\n        const syncSelection = () => {\n          const sel = editor.selection;\n          const start = SugarElement.fromDom(sel.getStart());\n          const end = SugarElement.fromDom(sel.getEnd());\n          const shared = sharedOne(table, [start, end]);\n          shared.fold(() => annotations.clear(body), noop);\n        };\n        const mouseHandlers = mouse(win, body, isRoot, annotations);\n        const keyHandlers = keyboard(win, body, isRoot, annotations);\n        const external$1 = external(win, body, isRoot, annotations);\n        const hasShiftKey = event => event.raw.shiftKey === true;\n        editor.on('TableSelectorChange', e => external$1(e.start, e.finish));\n        const handleResponse = (event, response) => {\n          if (!hasShiftKey(event)) {\n            return;\n          }\n          if (response.kill) {\n            event.kill();\n          }\n          response.selection.each(ns => {\n            const relative = SimSelection.relative(ns.start, ns.finish);\n            const rng = asLtrRange(win, relative);\n            editor.selection.setRng(rng);\n          });\n        };\n        const keyup = event => {\n          const wrappedEvent = fromRawEvent(event);\n          if (wrappedEvent.raw.shiftKey && isNavigation(wrappedEvent.raw.which)) {\n            const rng = editor.selection.getRng();\n            const start = SugarElement.fromDom(rng.startContainer);\n            const end = SugarElement.fromDom(rng.endContainer);\n            keyHandlers.keyup(wrappedEvent, start, rng.startOffset, end, rng.endOffset).each(response => {\n              handleResponse(wrappedEvent, response);\n            });\n          }\n        };\n        const keydown = event => {\n          const wrappedEvent = fromRawEvent(event);\n          resizeHandler.hide();\n          const rng = editor.selection.getRng();\n          const start = SugarElement.fromDom(rng.startContainer);\n          const end = SugarElement.fromDom(rng.endContainer);\n          const direction = onDirection(ltr, rtl)(SugarElement.fromDom(editor.selection.getStart()));\n          keyHandlers.keydown(wrappedEvent, start, rng.startOffset, end, rng.endOffset, direction).each(response => {\n            handleResponse(wrappedEvent, response);\n          });\n          resizeHandler.show();\n        };\n        const isLeftMouse = raw => raw.button === 0;\n        const isLeftButtonPressed = raw => {\n          if (raw.buttons === undefined) {\n            return true;\n          }\n          return (raw.buttons & 1) !== 0;\n        };\n        const dragStart = _e => {\n          mouseHandlers.clearstate();\n        };\n        const mouseDown = e => {\n          if (isLeftMouse(e) && hasInternalTarget(e)) {\n            mouseHandlers.mousedown(fromRawEvent(e));\n          }\n        };\n        const mouseOver = e => {\n          if (isLeftButtonPressed(e) && hasInternalTarget(e)) {\n            mouseHandlers.mouseover(fromRawEvent(e));\n          }\n        };\n        const mouseUp = e => {\n          if (isLeftMouse(e) && hasInternalTarget(e)) {\n            mouseHandlers.mouseup(fromRawEvent(e));\n          }\n        };\n        const getDoubleTap = () => {\n          const lastTarget = Cell(SugarElement.fromDom(body));\n          const lastTimeStamp = Cell(0);\n          const touchEnd = t => {\n            const target = SugarElement.fromDom(t.target);\n            if (isTag('td')(target) || isTag('th')(target)) {\n              const lT = lastTarget.get();\n              const lTS = lastTimeStamp.get();\n              if (eq$1(lT, target) && t.timeStamp - lTS < 300) {\n                t.preventDefault();\n                external$1(target, target);\n              }\n            }\n            lastTarget.set(target);\n            lastTimeStamp.set(t.timeStamp);\n          };\n          return {\n            touchEnd\n          };\n        };\n        const doubleTap = getDoubleTap();\n        editor.on('dragstart', dragStart);\n        editor.on('mousedown', mouseDown);\n        editor.on('mouseover', mouseOver);\n        editor.on('mouseup', mouseUp);\n        editor.on('touchend', doubleTap.touchEnd);\n        editor.on('keyup', keyup);\n        editor.on('keydown', keydown);\n        editor.on('NodeChange', syncSelection);\n      });\n      editor.on('PreInit', () => {\n        editor.serializer.addTempAttr(ephemera.firstSelected);\n        editor.serializer.addTempAttr(ephemera.lastSelected);\n      });\n      const clearSelectedCells = container => annotations.clear(SugarElement.fromDom(container));\n      const getSelectedCells = () => fold(cellSelection.get(), constant([]), cells => {\n        return map$1(cells, cell => cell.dom);\n      }, cell => [cell.dom]);\n      return {\n        getSelectedCells,\n        clearSelectedCells\n      };\n    };\n\n    const Event = fields => {\n      let handlers = [];\n      const bind = handler => {\n        if (handler === undefined) {\n          throw new Error('Event bind error: undefined handler');\n        }\n        handlers.push(handler);\n      };\n      const unbind = handler => {\n        handlers = filter$2(handlers, h => {\n          return h !== handler;\n        });\n      };\n      const trigger = (...args) => {\n        const event = {};\n        each$2(fields, (name, i) => {\n          event[name] = args[i];\n        });\n        each$2(handlers, handler => {\n          handler(event);\n        });\n      };\n      return {\n        bind,\n        unbind,\n        trigger\n      };\n    };\n\n    const create$1 = typeDefs => {\n      const registry = map(typeDefs, event => {\n        return {\n          bind: event.bind,\n          unbind: event.unbind\n        };\n      });\n      const trigger = map(typeDefs, event => {\n        return event.trigger;\n      });\n      return {\n        registry,\n        trigger\n      };\n    };\n\n    const last = (fn, rate) => {\n      let timer = null;\n      const cancel = () => {\n        if (!isNull(timer)) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      const throttle = (...args) => {\n        cancel();\n        timer = setTimeout(() => {\n          timer = null;\n          fn.apply(null, args);\n        }, rate);\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n\n    const sort = arr => {\n      return arr.slice(0).sort();\n    };\n    const reqMessage = (required, keys) => {\n      throw new Error('All required keys (' + sort(required).join(', ') + ') were not specified. Specified keys were: ' + sort(keys).join(', ') + '.');\n    };\n    const unsuppMessage = unsupported => {\n      throw new Error('Unsupported keys for object: ' + sort(unsupported).join(', '));\n    };\n    const validateStrArr = (label, array) => {\n      if (!isArray(array)) {\n        throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.');\n      }\n      each$2(array, a => {\n        if (!isString(a)) {\n          throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.');\n        }\n      });\n    };\n    const invalidTypeMessage = (incorrect, type) => {\n      throw new Error('All values need to be of type: ' + type + '. Keys (' + sort(incorrect).join(', ') + ') were not.');\n    };\n    const checkDupes = everything => {\n      const sorted = sort(everything);\n      const dupe = find$1(sorted, (s, i) => {\n        return i < sorted.length - 1 && s === sorted[i + 1];\n      });\n      dupe.each(d => {\n        throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].');\n      });\n    };\n\n    const base = (handleUnsupported, required) => {\n      return baseWith(handleUnsupported, required, {\n        validate: isFunction,\n        label: 'function'\n      });\n    };\n    const baseWith = (handleUnsupported, required, pred) => {\n      if (required.length === 0) {\n        throw new Error('You must specify at least one required field.');\n      }\n      validateStrArr('required', required);\n      checkDupes(required);\n      return obj => {\n        const keys$1 = keys(obj);\n        const allReqd = forall(required, req => {\n          return contains$2(keys$1, req);\n        });\n        if (!allReqd) {\n          reqMessage(required, keys$1);\n        }\n        handleUnsupported(required, keys$1);\n        const invalidKeys = filter$2(required, key => {\n          return !pred.validate(obj[key], key);\n        });\n        if (invalidKeys.length > 0) {\n          invalidTypeMessage(invalidKeys, pred.label);\n        }\n        return obj;\n      };\n    };\n    const handleExact = (required, keys) => {\n      const unsupported = filter$2(keys, key => {\n        return !contains$2(required, key);\n      });\n      if (unsupported.length > 0) {\n        unsuppMessage(unsupported);\n      }\n    };\n    const exactly = required => base(handleExact, required);\n\n    const DragMode = exactly(['compare', 'extract', 'mutate', 'sink']);\n    const DragSink = exactly(['element', 'start', 'stop', 'destroy']);\n    const DragApi = exactly(['forceDrop', 'drop', 'move', 'delayDrop']);\n\n    const InDrag = () => {\n      let previous = Optional.none();\n      const reset = () => {\n        previous = Optional.none();\n      };\n      const update = (mode, nu) => {\n        const result = previous.map(old => {\n          return mode.compare(old, nu);\n        });\n        previous = Optional.some(nu);\n        return result;\n      };\n      const onEvent = (event, mode) => {\n        const dataOption = mode.extract(event);\n        dataOption.each(data => {\n          const offset = update(mode, data);\n          offset.each(d => {\n            events.trigger.move(d);\n          });\n        });\n      };\n      const events = create$1({\n        move: Event(['info'])\n      });\n      return {\n        onEvent,\n        reset,\n        events: events.registry\n      };\n    };\n\n    const NoDrag = () => {\n      const events = create$1({\n        move: Event(['info'])\n      });\n      return {\n        onEvent: noop,\n        reset: noop,\n        events: events.registry\n      };\n    };\n\n    const Movement = () => {\n      const noDragState = NoDrag();\n      const inDragState = InDrag();\n      let dragState = noDragState;\n      const on = () => {\n        dragState.reset();\n        dragState = inDragState;\n      };\n      const off = () => {\n        dragState.reset();\n        dragState = noDragState;\n      };\n      const onEvent = (event, mode) => {\n        dragState.onEvent(event, mode);\n      };\n      const isOn = () => {\n        return dragState === inDragState;\n      };\n      return {\n        on,\n        off,\n        isOn,\n        onEvent,\n        events: inDragState.events\n      };\n    };\n\n    const setup = (mutation, mode, settings) => {\n      let active = false;\n      const events = create$1({\n        start: Event([]),\n        stop: Event([])\n      });\n      const movement = Movement();\n      const drop = () => {\n        sink.stop();\n        if (movement.isOn()) {\n          movement.off();\n          events.trigger.stop();\n        }\n      };\n      const throttledDrop = last(drop, 200);\n      const go = parent => {\n        sink.start(parent);\n        movement.on();\n        events.trigger.start();\n      };\n      const mousemove = event => {\n        throttledDrop.cancel();\n        movement.onEvent(event, mode);\n      };\n      movement.events.move.bind(event => {\n        mode.mutate(mutation, event.info);\n      });\n      const on = () => {\n        active = true;\n      };\n      const off = () => {\n        active = false;\n      };\n      const isActive = () => active;\n      const runIfActive = f => {\n        return (...args) => {\n          if (active) {\n            f.apply(null, args);\n          }\n        };\n      };\n      const sink = mode.sink(DragApi({\n        forceDrop: drop,\n        drop: runIfActive(drop),\n        move: runIfActive(mousemove),\n        delayDrop: runIfActive(throttledDrop.throttle)\n      }), settings);\n      const destroy = () => {\n        sink.destroy();\n      };\n      return {\n        element: sink.element,\n        go,\n        on,\n        off,\n        isActive,\n        destroy,\n        events: events.registry\n      };\n    };\n\n    const css = namespace => {\n      const dashNamespace = namespace.replace(/\\./g, '-');\n      const resolve = str => {\n        return dashNamespace + '-' + str;\n      };\n      return {\n        resolve\n      };\n    };\n\n    const styles$1 = css('ephox-dragster');\n    const resolve$1 = styles$1.resolve;\n\n    const Blocker = options => {\n      const settings = {\n        layerClass: resolve$1('blocker'),\n        ...options\n      };\n      const div = SugarElement.fromTag('div');\n      set$2(div, 'role', 'presentation');\n      setAll(div, {\n        position: 'fixed',\n        left: '0px',\n        top: '0px',\n        width: '100%',\n        height: '100%'\n      });\n      add(div, resolve$1('blocker'));\n      add(div, settings.layerClass);\n      const element = constant(div);\n      const destroy = () => {\n        remove$6(div);\n      };\n      return {\n        element,\n        destroy\n      };\n    };\n\n    const compare = (old, nu) => {\n      return SugarPosition(nu.left - old.left, nu.top - old.top);\n    };\n    const extract = event => {\n      return Optional.some(SugarPosition(event.x, event.y));\n    };\n    const mutate = (mutation, info) => {\n      mutation.mutate(info.left, info.top);\n    };\n    const sink = (dragApi, settings) => {\n      const blocker = Blocker(settings);\n      const mdown = bind(blocker.element(), 'mousedown', dragApi.forceDrop);\n      const mup = bind(blocker.element(), 'mouseup', dragApi.drop);\n      const mmove = bind(blocker.element(), 'mousemove', dragApi.move);\n      const mout = bind(blocker.element(), 'mouseout', dragApi.delayDrop);\n      const destroy = () => {\n        blocker.destroy();\n        mup.unbind();\n        mmove.unbind();\n        mout.unbind();\n        mdown.unbind();\n      };\n      const start = parent => {\n        append$1(parent, blocker.element());\n      };\n      const stop = () => {\n        remove$6(blocker.element());\n      };\n      return DragSink({\n        element: blocker.element,\n        start,\n        stop,\n        destroy\n      });\n    };\n    var MouseDrag = DragMode({\n      compare,\n      extract,\n      sink,\n      mutate\n    });\n\n    const transform = (mutation, settings = {}) => {\n      var _a;\n      const mode = (_a = settings.mode) !== null && _a !== void 0 ? _a : MouseDrag;\n      return setup(mutation, mode, settings);\n    };\n\n    const styles = css('ephox-snooker');\n    const resolve = styles.resolve;\n\n    const Mutation = () => {\n      const events = create$1({\n        drag: Event(['xDelta', 'yDelta'])\n      });\n      const mutate = (x, y) => {\n        events.trigger.drag(x, y);\n      };\n      return {\n        mutate,\n        events: events.registry\n      };\n    };\n\n    const BarMutation = () => {\n      const events = create$1({\n        drag: Event(['xDelta', 'yDelta', 'target'])\n      });\n      let target = Optional.none();\n      const delegate = Mutation();\n      delegate.events.drag.bind(event => {\n        target.each(t => {\n          events.trigger.drag(event.xDelta, event.yDelta, t);\n        });\n      });\n      const assign = t => {\n        target = Optional.some(t);\n      };\n      const get = () => {\n        return target;\n      };\n      return {\n        assign,\n        get,\n        mutate: delegate.mutate,\n        events: events.registry\n      };\n    };\n\n    const col = (column, x, y, w, h) => {\n      const bar = SugarElement.fromTag('div');\n      setAll(bar, {\n        position: 'absolute',\n        left: x - w / 2 + 'px',\n        top: y + 'px',\n        height: h + 'px',\n        width: w + 'px'\n      });\n      setAll$1(bar, {\n        'data-column': column,\n        'role': 'presentation'\n      });\n      return bar;\n    };\n    const row = (r, x, y, w, h) => {\n      const bar = SugarElement.fromTag('div');\n      setAll(bar, {\n        position: 'absolute',\n        left: x + 'px',\n        top: y - h / 2 + 'px',\n        height: h + 'px',\n        width: w + 'px'\n      });\n      setAll$1(bar, {\n        'data-row': r,\n        'role': 'presentation'\n      });\n      return bar;\n    };\n\n    const resizeBar = resolve('resizer-bar');\n    const resizeRowBar = resolve('resizer-rows');\n    const resizeColBar = resolve('resizer-cols');\n    const BAR_THICKNESS = 7;\n    const resizableRows = (warehouse, isResizable) => bind$2(warehouse.all, (row, i) => isResizable(row.element) ? [i] : []);\n    const resizableColumns = (warehouse, isResizable) => {\n      const resizableCols = [];\n      range$1(warehouse.grid.columns, index => {\n        const colElmOpt = Warehouse.getColumnAt(warehouse, index).map(col => col.element);\n        if (colElmOpt.forall(isResizable)) {\n          resizableCols.push(index);\n        }\n      });\n      return filter$2(resizableCols, colIndex => {\n        const columnCells = Warehouse.filterItems(warehouse, cell => cell.column === colIndex);\n        return forall(columnCells, cell => isResizable(cell.element));\n      });\n    };\n    const destroy = wire => {\n      const previous = descendants(wire.parent(), '.' + resizeBar);\n      each$2(previous, remove$6);\n    };\n    const drawBar = (wire, positions, create) => {\n      const origin = wire.origin();\n      each$2(positions, cpOption => {\n        cpOption.each(cp => {\n          const bar = create(origin, cp);\n          add(bar, resizeBar);\n          append$1(wire.parent(), bar);\n        });\n      });\n    };\n    const refreshCol = (wire, colPositions, position, tableHeight) => {\n      drawBar(wire, colPositions, (origin, cp) => {\n        const colBar = col(cp.col, cp.x - origin.left, position.top - origin.top, BAR_THICKNESS, tableHeight);\n        add(colBar, resizeColBar);\n        return colBar;\n      });\n    };\n    const refreshRow = (wire, rowPositions, position, tableWidth) => {\n      drawBar(wire, rowPositions, (origin, cp) => {\n        const rowBar = row(cp.row, position.left - origin.left, cp.y - origin.top, tableWidth, BAR_THICKNESS);\n        add(rowBar, resizeRowBar);\n        return rowBar;\n      });\n    };\n    const refreshGrid = (warhouse, wire, table, rows, cols) => {\n      const position = absolute(table);\n      const isResizable = wire.isResizable;\n      const rowPositions = rows.length > 0 ? height.positions(rows, table) : [];\n      const resizableRowBars = rowPositions.length > 0 ? resizableRows(warhouse, isResizable) : [];\n      const resizableRowPositions = filter$2(rowPositions, (_pos, i) => exists(resizableRowBars, barIndex => i === barIndex));\n      refreshRow(wire, resizableRowPositions, position, getOuter$2(table));\n      const colPositions = cols.length > 0 ? width.positions(cols, table) : [];\n      const resizableColBars = colPositions.length > 0 ? resizableColumns(warhouse, isResizable) : [];\n      const resizableColPositions = filter$2(colPositions, (_pos, i) => exists(resizableColBars, barIndex => i === barIndex));\n      refreshCol(wire, resizableColPositions, position, getOuter$1(table));\n    };\n    const refresh = (wire, table) => {\n      destroy(wire);\n      if (wire.isResizable(table)) {\n        const warehouse = Warehouse.fromTable(table);\n        const rows$1 = rows(warehouse);\n        const cols = columns(warehouse);\n        refreshGrid(warehouse, wire, table, rows$1, cols);\n      }\n    };\n    const each = (wire, f) => {\n      const bars = descendants(wire.parent(), '.' + resizeBar);\n      each$2(bars, f);\n    };\n    const hide = wire => {\n      each(wire, bar => {\n        set$1(bar, 'display', 'none');\n      });\n    };\n    const show = wire => {\n      each(wire, bar => {\n        set$1(bar, 'display', 'block');\n      });\n    };\n    const isRowBar = element => {\n      return has(element, resizeRowBar);\n    };\n    const isColBar = element => {\n      return has(element, resizeColBar);\n    };\n\n    const resizeBarDragging = resolve('resizer-bar-dragging');\n    const BarManager = wire => {\n      const mutation = BarMutation();\n      const resizing = transform(mutation, {});\n      let hoverTable = Optional.none();\n      const getResizer = (element, type) => {\n        return Optional.from(get$b(element, type));\n      };\n      mutation.events.drag.bind(event => {\n        getResizer(event.target, 'data-row').each(_dataRow => {\n          const currentRow = getCssValue(event.target, 'top');\n          set$1(event.target, 'top', currentRow + event.yDelta + 'px');\n        });\n        getResizer(event.target, 'data-column').each(_dataCol => {\n          const currentCol = getCssValue(event.target, 'left');\n          set$1(event.target, 'left', currentCol + event.xDelta + 'px');\n        });\n      });\n      const getDelta = (target, dir) => {\n        const newX = getCssValue(target, dir);\n        const oldX = getAttrValue(target, 'data-initial-' + dir, 0);\n        return newX - oldX;\n      };\n      resizing.events.stop.bind(() => {\n        mutation.get().each(target => {\n          hoverTable.each(table => {\n            getResizer(target, 'data-row').each(row => {\n              const delta = getDelta(target, 'top');\n              remove$7(target, 'data-initial-top');\n              events.trigger.adjustHeight(table, delta, parseInt(row, 10));\n            });\n            getResizer(target, 'data-column').each(column => {\n              const delta = getDelta(target, 'left');\n              remove$7(target, 'data-initial-left');\n              events.trigger.adjustWidth(table, delta, parseInt(column, 10));\n            });\n            refresh(wire, table);\n          });\n        });\n      });\n      const handler = (target, dir) => {\n        events.trigger.startAdjust();\n        mutation.assign(target);\n        set$2(target, 'data-initial-' + dir, getCssValue(target, dir));\n        add(target, resizeBarDragging);\n        set$1(target, 'opacity', '0.2');\n        resizing.go(wire.parent());\n      };\n      const mousedown = bind(wire.parent(), 'mousedown', event => {\n        if (isRowBar(event.target)) {\n          handler(event.target, 'top');\n        }\n        if (isColBar(event.target)) {\n          handler(event.target, 'left');\n        }\n      });\n      const isRoot = e => {\n        return eq$1(e, wire.view());\n      };\n      const findClosestEditableTable = target => closest$1(target, 'table', isRoot).filter(isEditable$1);\n      const mouseover = bind(wire.view(), 'mouseover', event => {\n        findClosestEditableTable(event.target).fold(() => {\n          if (inBody(event.target)) {\n            destroy(wire);\n          }\n        }, table => {\n          if (resizing.isActive()) {\n            hoverTable = Optional.some(table);\n            refresh(wire, table);\n          }\n        });\n      });\n      const destroy$1 = () => {\n        mousedown.unbind();\n        mouseover.unbind();\n        resizing.destroy();\n        destroy(wire);\n      };\n      const refresh$1 = tbl => {\n        refresh(wire, tbl);\n      };\n      const events = create$1({\n        adjustHeight: Event(['table', 'delta', 'row']),\n        adjustWidth: Event(['table', 'delta', 'column']),\n        startAdjust: Event([])\n      });\n      return {\n        destroy: destroy$1,\n        refresh: refresh$1,\n        on: resizing.on,\n        off: resizing.off,\n        hideBars: curry(hide, wire),\n        showBars: curry(show, wire),\n        events: events.registry\n      };\n    };\n\n    const create = (wire, resizing, lazySizing) => {\n      const hdirection = height;\n      const vdirection = width;\n      const manager = BarManager(wire);\n      const events = create$1({\n        beforeResize: Event(['table', 'type']),\n        afterResize: Event(['table', 'type']),\n        startDrag: Event([])\n      });\n      manager.events.adjustHeight.bind(event => {\n        const table = event.table;\n        events.trigger.beforeResize(table, 'row');\n        const delta = hdirection.delta(event.delta, table);\n        adjustHeight(table, delta, event.row, hdirection);\n        events.trigger.afterResize(table, 'row');\n      });\n      manager.events.startAdjust.bind(_event => {\n        events.trigger.startDrag();\n      });\n      manager.events.adjustWidth.bind(event => {\n        const table = event.table;\n        events.trigger.beforeResize(table, 'col');\n        const delta = vdirection.delta(event.delta, table);\n        const tableSize = lazySizing(table);\n        adjustWidth(table, delta, event.column, resizing, tableSize);\n        events.trigger.afterResize(table, 'col');\n      });\n      return {\n        on: manager.on,\n        off: manager.off,\n        refreshBars: manager.refresh,\n        hideBars: manager.hideBars,\n        showBars: manager.showBars,\n        destroy: manager.destroy,\n        events: events.registry\n      };\n    };\n    const TableResize = {\n      create\n    };\n\n    const only = (element, isResizable) => {\n      const parent = isDocument(element) ? documentElement(element) : element;\n      return {\n        parent: constant(parent),\n        view: constant(element),\n        origin: constant(SugarPosition(0, 0)),\n        isResizable\n      };\n    };\n    const detached = (editable, chrome, isResizable) => {\n      const origin = () => absolute(chrome);\n      return {\n        parent: constant(chrome),\n        view: constant(editable),\n        origin,\n        isResizable\n      };\n    };\n    const body = (editable, chrome, isResizable) => {\n      return {\n        parent: constant(chrome),\n        view: constant(editable),\n        origin: constant(SugarPosition(0, 0)),\n        isResizable\n      };\n    };\n    const ResizeWire = {\n      only,\n      detached,\n      body\n    };\n\n    const createContainer = () => {\n      const container = SugarElement.fromTag('div');\n      setAll(container, {\n        position: 'static',\n        height: '0',\n        width: '0',\n        padding: '0',\n        margin: '0',\n        border: '0'\n      });\n      append$1(body$1(), container);\n      return container;\n    };\n    const get = (editor, isResizable) => {\n      return editor.inline ? ResizeWire.body(SugarElement.fromDom(editor.getBody()), createContainer(), isResizable) : ResizeWire.only(SugarElement.fromDom(editor.getDoc()), isResizable);\n    };\n    const remove = (editor, wire) => {\n      if (editor.inline) {\n        remove$6(wire.parent());\n      }\n    };\n\n    const isTable = node => isNonNullable(node) && node.nodeName === 'TABLE';\n    const barResizerPrefix = 'bar-';\n    const isResizable = elm => get$b(elm, 'data-mce-resize') !== 'false';\n    const syncPixels = table => {\n      const warehouse = Warehouse.fromTable(table);\n      if (!Warehouse.hasColumns(warehouse)) {\n        each$2(cells$1(table), cell => {\n          const computedWidth = get$a(cell, 'width');\n          set$1(cell, 'width', computedWidth);\n          remove$7(cell, 'width');\n        });\n      }\n    };\n    const TableResizeHandler = editor => {\n      const selectionRng = value();\n      const tableResize = value();\n      const resizeWire = value();\n      let startW;\n      let startRawW;\n      const lazySizing = table => get$5(editor, table);\n      const lazyResizingBehaviour = () => isPreserveTableColumnResizing(editor) ? preserveTable() : resizeTable();\n      const getNumColumns = table => getGridSize(table).columns;\n      const afterCornerResize = (table, origin, width) => {\n        const isRightEdgeResize = endsWith(origin, 'e');\n        if (startRawW === '') {\n          convertToPercentSize(table);\n        }\n        if (width !== startW && startRawW !== '') {\n          set$1(table, 'width', startRawW);\n          const resizing = lazyResizingBehaviour();\n          const tableSize = lazySizing(table);\n          const col = isPreserveTableColumnResizing(editor) || isRightEdgeResize ? getNumColumns(table) - 1 : 0;\n          adjustWidth(table, width - startW, col, resizing, tableSize);\n        } else if (isPercentage$1(startRawW)) {\n          const percentW = parseFloat(startRawW.replace('%', ''));\n          const targetPercentW = width * percentW / startW;\n          set$1(table, 'width', targetPercentW + '%');\n        }\n        if (isPixel(startRawW)) {\n          syncPixels(table);\n        }\n      };\n      const destroy = () => {\n        tableResize.on(sz => {\n          sz.destroy();\n        });\n        resizeWire.on(w => {\n          remove(editor, w);\n        });\n      };\n      editor.on('init', () => {\n        const rawWire = get(editor, isResizable);\n        resizeWire.set(rawWire);\n        if (hasTableObjectResizing(editor) && hasTableResizeBars(editor)) {\n          const resizing = lazyResizingBehaviour();\n          const sz = TableResize.create(rawWire, resizing, lazySizing);\n          sz.on();\n          sz.events.startDrag.bind(_event => {\n            selectionRng.set(editor.selection.getRng());\n          });\n          sz.events.beforeResize.bind(event => {\n            const rawTable = event.table.dom;\n            fireObjectResizeStart(editor, rawTable, getPixelWidth(rawTable), getPixelHeight(rawTable), barResizerPrefix + event.type);\n          });\n          sz.events.afterResize.bind(event => {\n            const table = event.table;\n            const rawTable = table.dom;\n            removeDataStyle(table);\n            selectionRng.on(rng => {\n              editor.selection.setRng(rng);\n              editor.focus();\n            });\n            fireObjectResized(editor, rawTable, getPixelWidth(rawTable), getPixelHeight(rawTable), barResizerPrefix + event.type);\n            editor.undoManager.add();\n          });\n          tableResize.set(sz);\n        }\n      });\n      editor.on('ObjectResizeStart', e => {\n        const targetElm = e.target;\n        if (isTable(targetElm)) {\n          const table = SugarElement.fromDom(targetElm);\n          each$2(editor.dom.select('.mce-clonedresizable'), clone => {\n            editor.dom.addClass(clone, 'mce-' + getTableColumnResizingBehaviour(editor) + '-columns');\n          });\n          if (!isPixelSizing(table) && isTablePixelsForced(editor)) {\n            convertToPixelSize(table);\n          } else if (!isPercentSizing(table) && isTablePercentagesForced(editor)) {\n            convertToPercentSize(table);\n          }\n          if (isNoneSizing(table) && startsWith(e.origin, barResizerPrefix)) {\n            convertToPercentSize(table);\n          }\n          startW = e.width;\n          startRawW = isTableResponsiveForced(editor) ? '' : getRawWidth(editor, targetElm).getOr('');\n        }\n      });\n      editor.on('ObjectResized', e => {\n        const targetElm = e.target;\n        if (isTable(targetElm)) {\n          const table = SugarElement.fromDom(targetElm);\n          const origin = e.origin;\n          if (startsWith(origin, 'corner-')) {\n            afterCornerResize(table, origin, e.width);\n          }\n          removeDataStyle(table);\n          fireTableModified(editor, table.dom, styleModified);\n        }\n      });\n      editor.on('SwitchMode', () => {\n        tableResize.on(resize => {\n          if (editor.mode.isReadOnly()) {\n            resize.hideBars();\n          } else {\n            resize.showBars();\n          }\n        });\n      });\n      editor.on('dragstart dragend', e => {\n        tableResize.on(resize => {\n          if (e.type === 'dragstart') {\n            resize.hideBars();\n            resize.off();\n          } else {\n            resize.on();\n            resize.showBars();\n          }\n        });\n      });\n      editor.on('remove', () => {\n        destroy();\n      });\n      const refresh = table => {\n        tableResize.on(resize => resize.refreshBars(SugarElement.fromDom(table)));\n      };\n      const hide = () => {\n        tableResize.on(resize => resize.hideBars());\n      };\n      const show = () => {\n        tableResize.on(resize => resize.showBars());\n      };\n      return {\n        refresh,\n        hide,\n        show\n      };\n    };\n\n    const setupTable = editor => {\n      register(editor);\n      const resizeHandler = TableResizeHandler(editor);\n      const cellSelectionHandler = TableCellSelectionHandler(editor, resizeHandler);\n      const actions = TableActions(editor, resizeHandler, cellSelectionHandler);\n      registerCommands(editor, actions);\n      registerQueryCommands(editor, actions);\n      registerEvents(editor, actions);\n      return {\n        getSelectedCells: cellSelectionHandler.getSelectedCells,\n        clearSelectedCells: cellSelectionHandler.clearSelectedCells\n      };\n    };\n\n    const DomModel = editor => {\n      const table = setupTable(editor);\n      return {\n        table\n      };\n    };\n    var Model = () => {\n      global$1.add('dom', DomModel);\n    };\n\n    Model();\n\n})();\n","\"use strict\";\n\nimport format from 'string-template';\n\nconst SN_TRANSLATE = 'sn-translate';\nconst TRANSLATIONS = '__TRANSLATIONS__';\nconst TRANSLATIONS_PREFIX = '__TECTONIC_TRANSLATIONS_PREFIX__';\nconst TRANSLATIONS_STORE = '__TECTONIC_TRANSLATIONS__';\nconst STATIC_TRANSLATIONS = window && window[TRANSLATIONS] || (window[TRANSLATIONS] = {});\nconst DEFAULT_TRANSLATIONS = Object.assign({}, STATIC_TRANSLATIONS);\n\nif (!window[TRANSLATIONS_STORE])\n\twindow[TRANSLATIONS_STORE] = DEFAULT_TRANSLATIONS;\n\nfunction attachToWindow () {\n\tconst translationProperties = Reflect.getOwnPropertyDescriptor(window, TRANSLATIONS);\n\tif (translationProperties.configurable) {\n\t\tObject.defineProperty(window, TRANSLATIONS, {\n\t\t\tconfigurable: false,\n\t\t\tget() {\n\t\t\t\treturn Object.assign({}, window[TRANSLATIONS_STORE]);\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tif (!window[TRANSLATIONS_STORE])\n\t\t\t\t\twindow[TRANSLATIONS_STORE] = Object.assign({}, STATIC_TRANSLATIONS);\n\n\t\t\t\tappendTranslations(value);\n\t\t\t}\n\t\t})\n\t} else {\n\t\tconsole.warn(`[${SN_TRANSLATE}] If you're seeing this message, it probably means that you've loaded two copies of ${SN_TRANSLATE} on the page. At this time, only a single copy of ${SN_TRANSLATE} can be loaded at a time.`);\n\t}\n}\n\nfunction getPrefix() {\n\tif (!window)\n\t\treturn '';\n\n\tif (window[TRANSLATIONS_PREFIX])\n\t\treturn window[TRANSLATIONS_PREFIX];\n\n\tconst enabled = window.__TRANSLATIONS_PREFIX_ENABLED__;\n\tconst prefixName = window.__TRANSLATIONS_PREFIX__ || 'SNT';\n\twindow.__TRANSLATIONS_PREFIX_ENABLED__ = void 0;\n\twindow.__TRANSLATIONS_PREFIX__ = void 0;\n\twindow[TRANSLATIONS_PREFIX] = enabled ? `${prefixName}:` : '';\n\n\treturn window[TRANSLATIONS_PREFIX];\n}\n\nexport function appendTranslations(translations) {\n\tfor (const k in translations)\n\t\twindow[TRANSLATIONS_STORE][k] = translations[k];\n}\n\n\n/**\n * the first parameter of t can be a string or an object of the format:\n * {code: 'code', message: 'Hello!', comment: 'used by translators, ignored by t'}\n * t can transform ordered parameters or named parameters: 'User Status: {0} or 'User Status: {firstName}'\n * @param {*} val \n * @param  {...any} rest \n */\nexport function t(val, ...rest) {\n\tif (!window[TRANSLATIONS_STORE])\n\t\twindow[TRANSLATIONS_STORE] = DEFAULT_TRANSLATIONS;\n \n\tconst translations = window[TRANSLATIONS_STORE];\n\tconst prefix = getPrefix();    \n\n\tlet key = val;\n\tlet codeKey;\n\n\t//check for possible new format of translations\n\tif(val && typeof val === 'object' && val.message) {\n\t\tkey = val.message;\n\t\tif(val.code)\n\t\t\tcodeKey = `${val.code}:${val.message}`;\n\t}\n\n\tconst translation = translations[codeKey] || translations[key] || key; \t//requirements order of precedence\n\treturn format(`${prefix}${translation}`, ...rest);\n}\n\nexport function hasTranslation(str) {\n\treturn window[TRANSLATIONS_STORE].hasOwnProperty(str)\n}\n\nattachToWindow();\n","import {createContext} from '@servicenow/ui-core';\nimport {has} from 'lodash'\n\nlet USER_PREFS;\nconst USER_PREF_CONTEXTS_MAP = {};\n\n/**\n * <strong>*** Internal to UXF and should not be used by component authors ***</strong> <br/>\n * functions used to set the context when the component connects.\n * @param {Object} userPrefs - preference map\n * @param {function} updateContext - updateContext function from the coeffects\n */\nexport const setUserPrefs = (userPrefs, updateContext) => {\n\tUSER_PREFS = userPrefs;\n\n\tif(updateContext){\n\t\tfor (const [key, value] of Object.entries(USER_PREF_CONTEXTS_MAP)) {\n\t\t\tif( value.value !== USER_PREFS[key] ){\n\t\t\t\tconst updatedContextObj = {\n\t\t\t\t\tcontext: value.context,\n\t\t\t\t\tvalue: USER_PREFS[key]\n\t\t\t\t};\n\t\t\t\tUSER_PREF_CONTEXTS_MAP[key] = updatedContextObj;\n\t\t\t\tupdateContext(updatedContextObj);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * <strong>*** Internal to UXF and should not be used by component authors ***</strong> <br/>\n * function used to update userPreferences during runtime\n * @param {Object} updatedUserPref -\n * @param {function} updateContext - updateContext function from the coeffects\n */\nexport const updateUserPref = (updatedUserPref, updateContext) => {\n\tconst {name, value} = updatedUserPref;\n\tUSER_PREFS[name] = value;\n\tif(updateContext && USER_PREF_CONTEXTS_MAP[name]){\n\t\tconst updatedContextObj = {\n\t\t\tcontext: USER_PREF_CONTEXTS_MAP[name].context,\n\t\t\tvalue\n\t\t};\n\t\tupdateContext(updatedContextObj);\n\t}\n}\n\n/**\n * This is the ONLY public function exposed to component Authors!! <br/>\n * getUserPrefContext is used to get the context (symbol) of a user preference to subscribe to the changes of the userPreference.\n * Example usage:\n *      const ctx = getUserPrefContext('workspace.showRibbon');\n *      const val = state.context[ctx];\n * @param {String} userPrefName - The name/key of userPreference. Ex: workspace.showRibbon\n * @returns {Symbol} - Symbol used to uniquely identify the context\n */\nexport const getUserPrefContext = userPrefName => {\n\tif(has(USER_PREF_CONTEXTS_MAP, userPrefName)){\n\t\treturn USER_PREF_CONTEXTS_MAP[userPrefName].context;\n\t}\n\tif(has(USER_PREFS,userPrefName)) {\n\t\tconst context = createContext(userPrefName, {default: USER_PREFS[userPrefName]});\n\t\tUSER_PREF_CONTEXTS_MAP[userPrefName] = {context, value: USER_PREFS[userPrefName]};\n\t\treturn context;\n\t}\n\tconsole.warn(`Requested userPref : ${userPrefName} does not exist!!!`);\n}\n","import {createContext} from '@servicenow/ui-core';\nimport {has} from 'lodash';\n\nlet SYS_PROPS;\nconst SYS_PROPS_CONTEXTS_MAP = {};\n\n/**\n * <strong>*** Internal to UXF and should not be used by component authors ***</strong> <br/>\n * functions used to set the context when the component connects.\n * @param {Object} sysProps  - properties map\n * @param {function} updateContext - updateContext function from the coeffects\n */\nexport const setSysProps = (sysProps, updateContext) =>{\n\tSYS_PROPS = sysProps;\n\tif (updateContext) {\n\t\tfor (const [key, value] of Object.entries(SYS_PROPS_CONTEXTS_MAP)) {\n\t\t\tif (value.value !== SYS_PROPS[key]) {\n\t\t\t\tconst updatedContextObject = {\n\t\t\t\t\tcontext: value.context,\n\t\t\t\t\tvalue: SYS_PROPS[key],\n\t\t\t\t}\n\t\t\t\tSYS_PROPS_CONTEXTS_MAP[key] = updatedContextObject\n\t\t\t\tupdateContext(updatedContextObject)\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * This is the ONLY public function exposed to component Authors!! <br/>\n * getSysPropContext is used to get the context (symbol) of a user preference to subscribe to the changes of the sysProps.\n * Example usage:\n *      const ctx = getSysPropContext('glide.product.name');\n *      const val = state.context[ctx];\n * @param sysPropsName - The name/key of userPreference. Ex: glide.product.name\n * @returns {Symbol} - Symbol used to uniquely identify the context\n */\nexport const getSysPropContext = (sysPropsName) =>{\n\tif (has(SYS_PROPS_CONTEXTS_MAP, sysPropsName)) {\n\t\treturn SYS_PROPS_CONTEXTS_MAP[sysPropsName].context;\n\t}\n\tif (has(SYS_PROPS, sysPropsName)) {\n\t\tconst sysPropsContext = createContext(sysPropsName, {default: SYS_PROPS[sysPropsName]});\n\t\tSYS_PROPS_CONTEXTS_MAP[sysPropsName] = {context: sysPropsContext, value: SYS_PROPS[sysPropsName]};\n\t\treturn sysPropsContext;\n\t}\n\tconsole.warn(`Requested sysProp : ${sysPropsName} does not exist!!!`);\n}\n","export const a11yPreferences = Object.freeze( {\n  GLIDE_POLARIS_ACCESSIBILITY_PRESENCE_ICON: 'glide.polaris.accessibility.presence_icon',\n  GLIDE_POLARIS_ACCESSIBILITY_TRUNCATION_TAB_STOP: 'glide.polaris.accessibility.truncation_tab_stop',\n  GLIDE_UI_ACCESSIBILITY: 'glide.ui.accessibility',\n  GLIDE_UI_REPORT_ACCESSIBILITY_SCREEN_READER_TABLE: 'glide.ui.report.accessibility.screen_reader_table',\n  GLIDE_POLARIS_ANIMATION_DISABLED: 'glide.polaris.animation_disabled',\n  GLIDE_UI_KEYBOARD_SHORTCUTS_ENABLED: 'glide.ui.keyboard.shortcuts.enabled',\n  GLIDE_UI_ACCESSIBILITY_ACCESSIBLE_DATEFORMAT : 'glide.ui.accessibility.accessible.dateFormat',\n  GLIDE_UI_REPORT_ACCESSIBILITY_PATTERSN: 'glide.ui.report.accessibility.patterns',\n  GLIDE_UI_ACCESSIBILITY_SHOW_TRUNCATED_TEXT:'glide.ui.accessibility.show_truncated_text',\n  GLIDE_UI_ACCESSIBILITY_SHOW_HIDDEN_CONTROLS: 'glide.ui.accessibility.show_hidden_controls',\n  GLIDE_UI_ACCESSIBILITY_ACCESSIBLE_TOOLTIPS: 'glide.ui.accessibility.accessible.tooltips',\n  GLIDE_UI_ACCESSIBILITY_FOCUS_FIRST_FIELD: 'glide.ui.accessibility.focus_first_field',\n  GLIDE_UI_ACCESSIBILITY_SLUSHBUCKET_RECORD_PREVIEW_TOOLTIPS : 'glide.ui.accessibility.slushbucket.record_preview_tooltips',\n} )\n\n\n","import { actionTypes } from '@servicenow/ui-core';\n\nconst { COMPONENT_RENDER_REQUESTED } = actionTypes;\n\nexport const renderSkipBehavior = {\n\tname: 'RENDER_SKIP_BEHAVIOR',\n\tactionHandlers: {\n\t\t[COMPONENT_RENDER_REQUESTED]({ action }) {\n\t\t\tconst { meta } = action;\n\t\t\tif (!meta.firstRenderOnConnect) {\n\t\t\t\taction.preventDefault();\n\t\t\t}\n\t\t},\n\t},\n};\n","/** Cache Buster hash from ux_globals  */\nconst UX_GLOBAL_CLIENT_CACHE_BUSTER = window?.ux_globals?.uxGlobalsClientCacheBuster || '';\n\n/**\n * Construct the URL to get only the requested experience on demand\n * @param {String} pageRegistryId - the requested experience pageRegistryId\n * @param {String} cacheBuster - the cache buster hash\n * @returns {String} returns the formatted client Cacheable ux_globals Request Url\n */\nexport const getClientCacheableUxGlobalExperienceRequestUrl = (pageRegistryId = '', cacheBuster = '') => {\n\treturn `/$uxappimmutables.do?sysparm_request_type=ux_globals_experience&sysparm_page_registry=${pageRegistryId}&uxpcb=${cacheBuster}`;\n};\n\n/**\n * Function used to make the Client Cacheable ux_global Experience Request for the requestedExperience via network call.\n * @param pageRegistryId - the requested experience pageRegistryId\n * @returns {Promise<Object>} returns the requested experienceContent;\n */\nexport const fetchExperienceForUxGlobals = async (pageRegistryId = '') => {\n\tconst requestUrl = getClientCacheableUxGlobalExperienceRequestUrl(pageRegistryId, UX_GLOBAL_CLIENT_CACHE_BUSTER);\n\tconst headers = new Headers();\n\theaders.set('Accept', 'application/json');\n\tconst request = new Request(requestUrl, {headers});\n\tconst response = await fetch(request);\n\tconst experienceContent = await response.json();\n\tconst experienceConfigs = Object.assign(window?.ux_globals?.experienceConfigs, experienceContent);\n\treturn experienceConfigs;\n};\n\n/**\n * Function to determine if the requested experience is complete. When the experience doesn't contain the appRouteConfiguration\n * Then it's an incomplete experience and needs to fetch remaining data.\n * @param {String}requestedExpKey - The requested experience key\n * @returns {boolean}\n */\nexport const isCompleteExperienceConfigs = (requestedExpKey ='') => {\n\tconst uxGlobalExperienceConfigs = window?.ux_globals?.experienceConfigs || {};\n\tconst {appRouteConfiguration= null} = uxGlobalExperienceConfigs[requestedExpKey] || {};//try to destructure and default to falsey value\n\treturn !!appRouteConfiguration;\n};\n\n/**\n * Function to check if requested experience is supported. It's a supported experience if the route is part of the\n * experienceConfigs.  Non supported experiences should open in new tab.\n * @param {String} requestedExpKey - the requested experience\n * @param {Object} prevExperienceRouteConfigs - the  experienceConfig object\n * @returns {boolean}\n */\nexport const isSupportedExperience = (requestedExpKey='', prevExperienceRouteConfigs={}) => {\n\treturn (requestedExpKey in prevExperienceRouteConfigs);//check if key exists in experienceConfigs\n};\n\n/**\n * Function used to fetch the requested experience configs.\n * will then merge the returned configs to the existing configs wit the new data to make the requestedExperience Full.\n * @param {String}requestedExpKey - the requested experience key\n * @param {Object}prevExperienceRouteConfigs - the ExperienceConfig object from ux_globals\n * @returns {Promise<Object>} returns the merged experienceRouteConfigs\n */\nexport const fetchRequestedExperienceConfig = async (requestedExpKey = '', uxglobalsExperienceConfigs = {}, prevRouterConfig = {}) => {\n\tconst {experienceId} = uxglobalsExperienceConfigs[requestedExpKey] || {};\n\tconst experienceConfigs = await fetchExperienceForUxGlobals(experienceId);\n\treturn {...prevRouterConfig.experienceRouteConfigs, ...experienceConfigs};\n};\n\nexport const getRequestedExperienceConfig = async (requestedExpKey = '' ) => {\n\tconst uxGlobalExperienceConfigs = window?.ux_globals?.experienceConfigs || {};\n\tconst isSupported = isSupportedExperience(requestedExpKey, uxGlobalExperienceConfigs);\n\tif (!isSupported) \n\t\treturn null; //return if not supported experience\n\tconst isFullExpConfigs = isCompleteExperienceConfigs(requestedExpKey);\n\tconst experienceConfigs = isFullExpConfigs ? \n\t\tuxGlobalExperienceConfigs : \n\t\tawait fetchRequestedExperienceConfig(requestedExpKey, uxGlobalExperienceConfigs);\n\treturn experienceConfigs;\n};","import get from 'lodash/get';\n\nconst getPageSettings = key => get(window, `ux_globals.pageSettings.${key}`, null);\n\nexport default getPageSettings;\n","import get from 'lodash/get';\n\nconst getProperty = (propertyName, defaultValue = null) => get(window, `ux_globals.sysprops['${propertyName}']`, defaultValue);\n\nexport default getProperty;\n","import get from 'lodash/get';\n\nexport const createPreSourceBehavior = (componentTagName, {name:dsName = 'undefined', transform = d => d}) => {\n\tconst storeSeed = get(window, `ux_globals.presource['${componentTagName}:${dsName}']`, {});\n\tlet initialState = storeSeed;\n\ttry {initialState = (typeof transform === 'function') ? transform(storeSeed) : storeSeed;}catch(e) {console.error(e);initialState = storeSeed;}\n\treturn {\n\t\tname: dsName, // this.props.behaviors[dsName], available onConnect\n\t\tinitialState\n\t};\n};\n\nexport const getBehaviorProp = (state, name, defVal = {}) => !name ? undefined : get(state, `behaviors['${name}']`, defVal);\n","import get from \"lodash/get\";\nimport {\n\tcreatePreSourceBehavior,\n\tgetBehaviorProp\n} from \"./createPreSourceBehavior\";\n\nconst USER_DATA_KEY = \"wsUserData\";\nconst USER_ROLES_KEY = \"agentRoles\";\nconst USER_PREF_KEY = \"wsUserDataPreferences\";\nconst WS_CONFIG_SYS_ID_KEY = \"wsConfigSysId\";\n\nexport const preUserData = createPreSourceBehavior(\"sn-workspace-header\", {\n\tname: USER_DATA_KEY,\n\ttransform: data => get(data, \"data.GlideDomain_Query.user\", {})\n});\n\nexport const preUserRoles = createPreSourceBehavior(\"sn-workspace-content\", {\n\tname: USER_ROLES_KEY,\n\ttransform: result => get(result, \"data.GlideDomain_Query.user.roles\", [])\n});\n\nexport const preWsConfigSysId = createPreSourceBehavior(\"sn-workspace-header\", {\n\tname: WS_CONFIG_SYS_ID_KEY,\n\ttransform: data =>\n\t\tget(\n\t\t\tdata,\n\t\t\t[\n\t\t\t\t\"data\",\n\t\t\t\t\"GlideRecord_Query\",\n\t\t\t\t\"sys_aw_master_config\",\n\t\t\t\t\"_results\",\n\t\t\t\t0,\n\t\t\t\t\"sys_id\",\n\t\t\t\t\"value\"\n\t\t\t],\n\t\t\t\"\"\n\t\t)\n});\n\nexport const preUserPrefs = (function(userData) {\n\treturn {\n\t\tname: USER_PREF_KEY,\n\t\tinitialState: userData.initialState.preferences || []\n\t};\n})(preUserData);\n","var nargs = /\\{([0-9a-zA-Z_]+)\\}/g\n\nmodule.exports = template\n\nfunction template(string) {\n    var args\n\n    if (arguments.length === 2 && typeof arguments[1] === \"object\") {\n        args = arguments[1]\n    } else {\n        args = new Array(arguments.length - 1)\n        for (var i = 1; i < arguments.length; ++i) {\n            args[i - 1] = arguments[i]\n        }\n    }\n\n    if (!args || !args.hasOwnProperty) {\n        args = {}\n    }\n\n    return string.replace(nargs, function replaceArg(match, i, index) {\n        var result\n\n        if (string[index - 1] === \"{\" &&\n            string[index + match.length] === \"}\") {\n            return i\n        } else {\n            result = args.hasOwnProperty(i) ? args[i] : null\n            if (result === null || result === undefined) {\n                return \"\"\n            }\n\n            return result\n        }\n    })\n}\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n  byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n  var i = offset || 0;\n  var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n  return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nexport default bytesToUuid;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nexport default function rng() {\n  if (!getRandomValues) {\n    throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n  }\n\n  return getRandomValues(rnds8);\n}","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js';\n\nfunction v4(options, buf, offset) {\n  var i = buf && offset || 0;\n\n  if (typeof options == 'string') {\n    buf = options === 'binary' ? new Array(16) : null;\n    options = null;\n  }\n\n  options = options || {};\n  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    for (var ii = 0; ii < 16; ++ii) {\n      buf[i + ii] = rnds[ii];\n    }\n  }\n\n  return buf || bytesToUuid(rnds);\n}\n\nexport default v4;","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.tree{word-wrap:break-word;display:flex;flex-flow:column nowrap;overflow-wrap:break-word;width:100%;word-break:break-word}a:hover{cursor:pointer}.link{color:RGB(var(--now-color--link-2,1,119,142));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.link:focus-visible{outline:2px solid var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))}ul.tree-children{list-style-type:none;margin:0;margin-block-start:0;padding-inline-start:0}:host(:not([dir=rtl])) ul.tree-children,:root:not([dir=rtl]) ul.tree-children{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.tree-children,:root[dir=rtl] ul.tree-children{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}ul.tree-children-scroll{list-style-type:none;margin:0;margin-block-start:0;max-height:calc(.25rem*var(--classicsponlydonotuse--rem-multipy) + 1rem*var(--classicsponlydonotuse--rem-multipy) + 2.5rem*var(--classicsponlydonotuse--rem-multipy)*9);overflow-y:auto;padding-inline-start:0}:host(:not([dir=rtl])) ul.tree-children-scroll,:root:not([dir=rtl]) ul.tree-children-scroll{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.tree-children-scroll,:root[dir=rtl] ul.tree-children-scroll{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}ul.tree-children-first-level{list-style-type:none;margin:0;margin-block-start:0;padding-bottom:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:0}:host(:not([dir=rtl])) ul.tree-children-first-level,:root:not([dir=rtl]) ul.tree-children-first-level{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.tree-children-first-level,:root[dir=rtl] ul.tree-children-first-level{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) ul.tree-children-first-level,:root:not([dir=rtl]) ul.tree-children-first-level{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.tree-children-first-level,:root[dir=rtl] ul.tree-children-first-level{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}ul.tree-children-first-level-scroll{list-style-type:none;margin:0;margin-block-start:0;padding-bottom:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:0}:host(:not([dir=rtl])) ul.tree-children-first-level-scroll,:root:not([dir=rtl]) ul.tree-children-first-level-scroll{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.tree-children-first-level-scroll,:root[dir=rtl] ul.tree-children-first-level-scroll{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) ul.tree-children-first-level-scroll,:root:not([dir=rtl]) ul.tree-children-first-level-scroll{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.tree-children-first-level-scroll,:root[dir=rtl] ul.tree-children-first-level-scroll{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}ul.tree-children-no-indent{list-style-type:none;margin-block-start:0;margin:0;padding-inline-start:0}:host(:not([dir=rtl])) ul.tree-children-no-indent,:root:not([dir=rtl]) ul.tree-children-no-indent{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.tree-children-no-indent,:root[dir=rtl] ul.tree-children-no-indent{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}ul.tree-children-no-indent-scroll{list-style-type:none;margin-block-start:0;margin:0;max-height:calc(.25rem*var(--classicsponlydonotuse--rem-multipy) + 1rem*var(--classicsponlydonotuse--rem-multipy) + 2.5rem*var(--classicsponlydonotuse--rem-multipy)*9);overflow-y:auto;padding-inline-start:0}:host(:not([dir=rtl])) ul.tree-children-no-indent-scroll,:root:not([dir=rtl]) ul.tree-children-no-indent-scroll{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.tree-children-no-indent-scroll,:root[dir=rtl] ul.tree-children-no-indent-scroll{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.facets-show-more-button{margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(-.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .facets-show-more-button,:root:not([dir=rtl]) .facets-show-more-button{margin-left:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .facets-show-more-button,:root[dir=rtl] .facets-show-more-button{margin-right:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.option-checkbox{width:100%}:host{font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.tree-expand-button{align-items:center;color:RGB(var(--now-color--neutral-15,44,53,55));cursor:pointer;display:flex;height:inherit;justify-content:center}.tree-expand-button:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}.tree-expand-button::-moz-focus-inner{border-style:none}.tree-expand-button-selected{align-items:center;color:RGB(var(--now-color--neutral-15,44,53,55));color:RGB(var(--now-color--primary-1,30,133,109));cursor:pointer;display:flex;height:inherit;justify-content:center}.tree-expand-button-selected:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}.tree-expand-button-selected::-moz-focus-inner{border-style:none}.tree-expand-button-focus{height:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.tree-expand-button-focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}.tree-expand-button-focus::-moz-focus-inner{border-style:none}:host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 )}.tree-item{align-items:center;display:flex;flex-flow:row nowrap;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400;justify-content:space-between;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.tree-item:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}.tree-item::-moz-focus-inner{border-style:none}.tree-item:hover{font-weight:600}.tree-item-selected{align-items:center;color:RGB(var(--now-color--secondary-1,1,119,142));display:flex;flex-flow:row nowrap;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400;justify-content:space-between;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.tree-item-selected:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}.tree-item-selected::-moz-focus-inner{border-style:none}.tree-item-selected:hover{font-weight:600}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,.input-container,:after,:before{box-sizing:border-box}.input-container{align-items:center;background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border:var(--now-form-control--border-width,1px) solid var(--searchinput-border_color,RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214))));border-top-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));border-top-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));display:flex}:host(:not([dir=rtl])) .input-container,:root:not([dir=rtl]) .input-container{border-bottom-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-container,:root[dir=rtl] .input-container{border-bottom-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .input-container,:root:not([dir=rtl]) .input-container{border-bottom-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-container,:root[dir=rtl] .input-container{border-bottom-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.input-container.input-container--is-popover-open{border-bottom-color:transparent}:host(:not([dir=rtl])) .input-container.input-container--is-popover-open,:root:not([dir=rtl]) .input-container.input-container--is-popover-open{border-bottom-left-radius:0}:host([dir=rtl]) .input-container.input-container--is-popover-open,:root[dir=rtl] .input-container.input-container--is-popover-open{border-bottom-right-radius:0}:host(:not([dir=rtl])) .input-container.input-container--is-popover-open,:root:not([dir=rtl]) .input-container.input-container--is-popover-open{border-bottom-right-radius:0}:host([dir=rtl]) .input-container.input-container--is-popover-open,:root[dir=rtl] .input-container.input-container--is-popover-open{border-bottom-left-radius:0}.input-container.input-container--has-focus{box-shadow:inset 0 0 0 2px RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}.input-container.-global{max-height:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.input-container__input{background-color:transparent;border:none;box-sizing:border-box;color:var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-family:inherit;font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));outline:none;overflow:hidden;padding:0;text-overflow:ellipsis;width:100%}.input-container__input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-weight:400;letter-spacing:inherit;line-height:inherit;word-spacing:inherit}now-icon[icon=send-outline]{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) now-icon[icon=send-outline],:root:not([dir=rtl]) now-icon[icon=send-outline]{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) now-icon[icon=send-outline],:root[dir=rtl] now-icon[icon=send-outline]{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) now-icon[icon=send-outline],:root:not([dir=rtl]) now-icon[icon=send-outline]{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) now-icon[icon=send-outline],:root[dir=rtl] now-icon[icon=send-outline]{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.input-container.input-container--has-focus{border:1px solid HighLight}}.search-popover{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border:1px solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));border-top:none;border-top-left-radius:0;border-top-right-radius:0;box-sizing:border-box;margin:0;max-height:calc(39.5625rem*var(--classicsponlydonotuse--rem-multipy));overflow:auto;position:absolute;width:100%;z-index:1000}:host(:not([dir=rtl])) .search-popover,:root:not([dir=rtl]) .search-popover{border-bottom-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover,:root[dir=rtl] .search-popover{border-bottom-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover,:root:not([dir=rtl]) .search-popover{border-bottom-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover,:root[dir=rtl] .search-popover{border-bottom-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover,:root:not([dir=rtl]) .search-popover{text-align:left}:host([dir=rtl]) .search-popover,:root[dir=rtl] .search-popover{text-align:right}.search-popover ul{list-style:none;margin:0;padding:0}.search-popover .sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.search-popover__section-header{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__section-header,:root:not([dir=rtl]) .search-popover__section-header{text-align:left}:host([dir=rtl]) .search-popover__section-header,:root[dir=rtl] .search-popover__section-header{text-align:right}.search-popover:not(.-global)>ul:not(:first-of-type)>.search-popover__section-header{padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}ul.search-popover__utterance-container{background:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)));border-image:linear-gradient(180deg,var(--utterance-gradient_color--top,RGB(var(--now-color_grouped--teal-3,88,148,139))) 0,var(--utterance-gradient_color--bottom,RGB(var(--now-color_grouped--green-1,185,200,171))) 100%) 1;border-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) solid;border-radius:0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0;display:flex;flex-direction:column;flex-wrap:wrap;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1rem*var(--classicsponlydonotuse--rem-multipy)) 0}:host(:not([dir=rtl])) ul.search-popover__utterance-container,:root:not([dir=rtl]) ul.search-popover__utterance-container{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.search-popover__utterance-container,:root[dir=rtl] ul.search-popover__utterance-container{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) ul.search-popover__utterance-container,:root:not([dir=rtl]) ul.search-popover__utterance-container{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.search-popover__utterance-container,:root[dir=rtl] ul.search-popover__utterance-container{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) ul.search-popover__utterance-container,:root:not([dir=rtl]) ul.search-popover__utterance-container{padding-left:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.search-popover__utterance-container,:root[dir=rtl] ul.search-popover__utterance-container{padding-right:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}ul.search-popover__utterance-container.header-placement{gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0}:host(:not([dir=rtl])) ul.search-popover__utterance-container.header-placement,:root:not([dir=rtl]) ul.search-popover__utterance-container.header-placement{padding-left:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) ul.search-popover__utterance-container.header-placement,:root[dir=rtl] ul.search-popover__utterance-container.header-placement{padding-right:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}ul.search-popover__utterance-container.-global{border-image:linear-gradient(180deg,var(--utterance-gradient_color--top,RGB(var(--now-color_grouped--purple-3,154,132,178))) 25%,var(--utterance-gradient_color--bottom,RGB(var(--now-color_grouped--blue-2,120,176,204))) 75%) 1;margin-top:0}:host(:not([dir=rtl])) ul.search-popover__utterance-container.-global,:root:not([dir=rtl]) ul.search-popover__utterance-container.-global{margin-left:0}:host([dir=rtl]) ul.search-popover__utterance-container.-global,:root[dir=rtl] ul.search-popover__utterance-container.-global{margin-right:0}:host(:not([dir=rtl])) ul.search-popover__utterance-container.-global,:root:not([dir=rtl]) ul.search-popover__utterance-container.-global{margin-right:0}:host([dir=rtl]) ul.search-popover__utterance-container.-global,:root[dir=rtl] ul.search-popover__utterance-container.-global{margin-left:0}.search-popover__utterance-container-label{align-items:center;display:flex;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__utterance-container-label span{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__utterance-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1rem*var(--classicsponlydonotuse--rem-multipy));max-width:100%}.search-popover__utterance-list.header-placement{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-utterance{max-width:100%}.search-popover__item-utterance .search-popover__item-metadata{color:RGB(var(--now-text-link--primary--color,var(--now-color--secondary-1,1,119,142)));width:100%}.search-popover__item-utterance .search-popover__item-metadata .search-popover__item-metadata-label{cursor:pointer;margin-block-end:0;margin-block-start:0}.search-popover__item-utterance .search-popover__item-metadata:hover{color:RGB(var(--now-text-link--primary--color--hover,var(--now-color--secondary-2,1,89,107)))}.search-popover__item-utterance .search-popover__item-metadata:focus{color:RGB(var(--now-text-link--primary--color--active,var(--now-color--secondary-3,1,60,71)))}.search-popover__item-utterance now-text-link{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-popover__item{align-items:center;cursor:pointer;display:flex}.search-popover__item.-search-popover__item--is-active:hover{background-color:RGB(var(--now-color--primary-0,221,237,233))}.search-popover:not(.-global)>ul:not(:first-of-type)>.search-popover__item,.search-popover__item-icon{padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-icon{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__item-icon,:root:not([dir=rtl]) .search-popover__item-icon{padding-left:0}:host([dir=rtl]) .search-popover__item-icon,:root[dir=rtl] .search-popover__item-icon{padding-right:0}:host(:not([dir=rtl])) .search-popover__item-icon,:root:not([dir=rtl]) .search-popover__item-icon{padding-right:0}:host([dir=rtl]) .search-popover__item-icon,:root[dir=rtl] .search-popover__item-icon{padding-left:0}.search-popover__item-icon.-na-self-service now-icon.search-popover__item-icon-na-self-service{size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-metadata{align-items:center;display:flex;flex:1 1 auto;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));text-decoration:none;width:1%}.search-popover__item-metadata::-moz-focus-inner{border-style:none}.search-popover__item-metadata:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.search-popover__item-metadata:focus{outline:1px solid highlight}}.search-popover__item-primary-text{align-items:baseline;color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));display:flex;flex:1 1 auto;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));max-width:calc(100% - 1rem*var(--classicsponlydonotuse--rem-multipy) - .5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__item-primary-text,:root:not([dir=rtl]) .search-popover__item-primary-text{margin-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-primary-text,:root[dir=rtl] .search-popover__item-primary-text{margin-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-primary-text .search-popover__item--content-container{width:100%}.search-popover__item-primary-text p{display:block;margin-bottom:0;margin-top:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-popover__item-primary-text p.click-breadcrumb{-webkit-line-clamp:1;-webkit-box-orient:vertical;color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:-webkit-box;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis}.search-popover__item-primary-text p.click-breadcrumb span{margin-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-primary-text p.click-breadcrumb span:last-child{margin-right:0}.search-popover__item-primary-text--match{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}:host(:not([dir=rtl])) .search-popover__item-primary-text--match,:root:not([dir=rtl]) .search-popover__item-primary-text--match{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-primary-text--match,:root[dir=rtl] .search-popover__item-primary-text--match{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-button{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) .search-popover__item-button,:root:not([dir=rtl]) .search-popover__item-button{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-button,:root[dir=rtl] .search-popover__item-button{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.utterance_popover_trigger_no_border{--now-card--border-width:0px}.global-search-icon-mobile{align-items:center;color:RGB(var(--unified_nav-search--icon-color--collapsed,var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255))));display:inline-flex;height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile,:root:not([dir=rtl]) .global-search-icon-mobile{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile,:root[dir=rtl] .global-search-icon-mobile{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile,:root:not([dir=rtl]) .global-search-icon-mobile{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile,:root[dir=rtl] .global-search-icon-mobile{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.global-search-icon-mobile .search-icon-container{border-radius:50%;color:RGB(var(--unified_nav-search--icon-color--collapsed,var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255))));cursor:pointer;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile .search-icon-container,:root:not([dir=rtl]) .global-search-icon-mobile .search-icon-container{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile .search-icon-container,:root[dir=rtl] .global-search-icon-mobile .search-icon-container{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile .search-icon-container,:root:not([dir=rtl]) .global-search-icon-mobile .search-icon-container{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile .search-icon-container,:root[dir=rtl] .global-search-icon-mobile .search-icon-container{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.global-search-icon-mobile .search-icon-container:focus,.global-search-icon-mobile .search-icon-container:hover{background-color:RGB(var(--now-color--neutral-12,66,80,81))}.global-search-icon-mobile.-active-icon{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) .global-search-icon-mobile.-active-icon,:root:not([dir=rtl]) .global-search-icon-mobile.-active-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile.-active-icon,:root[dir=rtl] .global-search-icon-mobile.-active-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile.-active-icon,:root:not([dir=rtl]) .global-search-icon-mobile.-active-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile.-active-icon,:root[dir=rtl] .global-search-icon-mobile.-active-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-global-search-icon{align-items:center;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));display:inline-flex;height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .-global-search-icon,:root:not([dir=rtl]) .-global-search-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .-global-search-icon,:root[dir=rtl] .-global-search-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .-global-search-icon,:root:not([dir=rtl]) .-global-search-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .-global-search-icon,:root[dir=rtl] .-global-search-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-global-search-icon.-active-icon{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) .-global-search-icon.-active-icon,:root:not([dir=rtl]) .-global-search-icon.-active-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .-global-search-icon.-active-icon,:root[dir=rtl] .-global-search-icon.-active-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .-global-search-icon.-active-icon,:root:not([dir=rtl]) .-global-search-icon.-active-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .-global-search-icon.-active-icon,:root[dir=rtl] .-global-search-icon.-active-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.input-sparkle-icon{align-items:center;display:inline-flex;height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .input-sparkle-icon,:root:not([dir=rtl]) .input-sparkle-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-sparkle-icon,:root[dir=rtl] .input-sparkle-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host{--unified_nav-input--color:var(--nav_menu-input--color);--unified_nav-input--color--placeholder:var( --nav_menu-input--color--placeholder );--unified_nav-input--color--opened:var(--nav_menu-input--color--opened);--unified_nav-input--background-color:var( --nav_menu-input--background-color );--unified_nav-input--background-color--hover:var( --nav_menu-input--background-color--hover );--unified_nav-input--background-color--opened:var( --nav_menu-input--background-color--opened );--unified_nav-input--border-color:var(--nav_menu-input--border-color);--unified_nav-search--icon-color--collapsed:var( --nav_menu-input--search-icon-color--collapsed );--utterance-gradient_color--bottom:var( --nass-utterance-gradient_color--bottom );--utterance-gradient_color--top:var(--nass-utterance-gradient_color--top);--utterance-sparkle_color--bottom:var( --nass-utterance-sparkle-gradient_color--bottom );--utterance-sparkle_color--top:var( --nass-utterance-sparkle-gradient_color--top );--input-sparkle-gradient_color--bottom:var( --nass-input-sparkle-gradient_color--bottom );--input-sparkle-gradient_color--top:var( --nass-input-sparkle-gradient_color--top );--searchinput-border_color:var(--search-input_border--color);--unified_nav-focus-ring--color:var(--nav_menu-focus-ring--color);--unified_nav-focus-ring-inner--color:var( --nav_menu-focus-ring-inner--color )}:host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.search-combobox{font-style:normal;font-variant:normal;font-weight:400;letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:none;white-space:normal;width:100%;word-spacing:inherit}.search-combobox--header .input-container{padding-bottom:now-mx-rtl-property(calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));padding-top:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .input-container,:root:not([dir=rtl]) .search-combobox--header .input-container{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .input-container,:root[dir=rtl] .search-combobox--header .input-container{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .input-container,:root:not([dir=rtl]) .search-combobox--header .input-container{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .input-container,:root[dir=rtl] .search-combobox--header .input-container{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .input-container.-global{background-color:RGB(var(--unified_nav-input--background-color,var(--now-color_chrome--brand-4,77,96,97)));border:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0;width:244px!important}:host(:not([dir=rtl])) .search-combobox--header .input-container.-global,:root:not([dir=rtl]) .search-combobox--header .input-container.-global{padding-right:0}:host([dir=rtl]) .search-combobox--header .input-container.-global,:root[dir=rtl] .search-combobox--header .input-container.-global{padding-left:0}:host(:not([dir=rtl])) .search-combobox--header .input-container.-global,:root:not([dir=rtl]) .search-combobox--header .input-container.-global{padding-left:0}:host([dir=rtl]) .search-combobox--header .input-container.-global,:root[dir=rtl] .search-combobox--header .input-container.-global{padding-right:0}.search-combobox--header .input-container.-global:hover{background:RGBA(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)),var(--now-opacity--most,.8));border:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.search-combobox--header .input-container.-global:hover{border:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}}.search-combobox--header .input-container.-global.-active-input{border:1px solid RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))!important;border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important;width:320px!important}.search-combobox--header .input-container.-global.-active-input,.search-combobox--header .input-container.-global.-active-input:hover{background:RGB(var(--unified_nav-input--background-color--opened,var(--now-color--neutral-0,255,255,255)))!important}.search-combobox--header .input-container.-global.-na-self-service{height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));padding-bottom:calc(.375rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.375rem*var(--classicsponlydonotuse--rem-multipy));width:calc(17.0625rem*var(--classicsponlydonotuse--rem-multipy))!important}:host(:not([dir=rtl])) .search-combobox--header .input-container.-global.-na-self-service,:root:not([dir=rtl]) .search-combobox--header .input-container.-global.-na-self-service{padding-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .input-container.-global.-na-self-service,:root[dir=rtl] .search-combobox--header .input-container.-global.-na-self-service{padding-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .input-container.na-self-service{padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .input-container.na-self-service,:root:not([dir=rtl]) .search-combobox--header .input-container.na-self-service{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .input-container.na-self-service,:root[dir=rtl] .search-combobox--header .input-container.na-self-service{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .input-container.na-self-service,:root:not([dir=rtl]) .search-combobox--header .input-container.na-self-service{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .input-container.na-self-service,:root[dir=rtl] .search-combobox--header .input-container.na-self-service{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .input-container__input{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .input-container__input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--header .input-container__input.na-self-service::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400;letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--header .input-container__input.-global{color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .input-container__input.-global::placeholder{color:RGB(var(--unified_nav-input--color--placeholder,var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255))));font-size:inherit;font-weight:400;letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--header .input-container__input.-global.can-animate{transition:background-color RGB(var(--unified_nav-input--background-color--opened,var(--now-color--neutral-0,255,255,255)));transition:opacity var(--now-opacity--least,.1)}.search-combobox--header .input-container__input.-global.-active-input{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)))}.search-combobox--header .input-container__input.-global.-active-input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:inherit;font-weight:400;letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--header .input-container__input.-global.-na-self-service::placeholder{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400;height:20px;letter-spacing:inherit;line-height:inherit;width:200px;word-spacing:inherit}:host(:not([dir=rtl])) .search-combobox--header .input-container__button-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--header .input-container__button-icon:first-of-type{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .input-container__button-icon:first-of-type,:root[dir=rtl] .search-combobox--header .input-container__button-icon:first-of-type{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .input-container__button-icon:nth-of-type(2),:root:not([dir=rtl]) .search-combobox--header .input-container__button-icon:nth-of-type(2){padding-left:0}:host([dir=rtl]) .search-combobox--header .input-container__button-icon:nth-of-type(2),:root[dir=rtl] .search-combobox--header .input-container__button-icon:nth-of-type(2){padding-right:0}.search-combobox--header .input-container__button-icon.-global:first-of-type{color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)))}:host(:not([dir=rtl])) .search-combobox--header .input-container__button-icon.-global:first-of-type,:root:not([dir=rtl]) .search-combobox--header .input-container__button-icon.-global:first-of-type{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .input-container__button-icon.-global:first-of-type,:root[dir=rtl] .search-combobox--header .input-container__button-icon.-global:first-of-type{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .nass-search-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--header .nass-search-icon:first-of-type{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .nass-search-icon:first-of-type,:root[dir=rtl] .search-combobox--header .nass-search-icon:first-of-type{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .-global-search-icon{align-items:center;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));display:inline-flex;height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .-global-search-icon,:root:not([dir=rtl]) .search-combobox--header .-global-search-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .-global-search-icon,:root[dir=rtl] .search-combobox--header .-global-search-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .-global-search-icon,:root:not([dir=rtl]) .search-combobox--header .-global-search-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .-global-search-icon,:root[dir=rtl] .search-combobox--header .-global-search-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .-global-search-icon.-active{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .-global-search-icon.-active,:root:not([dir=rtl]) .search-combobox--header .-global-search-icon.-active{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .-global-search-icon.-active,:root[dir=rtl] .search-combobox--header .-global-search-icon.-active{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .-global-search-icon.-active,:root:not([dir=rtl]) .search-combobox--header .-global-search-icon.-active{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .-global-search-icon.-active,:root[dir=rtl] .search-combobox--header .-global-search-icon.-active{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .-global-search-icon.-now-assist{padding-bottom:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .-global-search-icon.-now-assist,:root:not([dir=rtl]) .search-combobox--header .-global-search-icon.-now-assist{padding-left:0}:host([dir=rtl]) .search-combobox--header .-global-search-icon.-now-assist,:root[dir=rtl] .search-combobox--header .-global-search-icon.-now-assist{padding-right:0}.search-combobox--header .input-sparkle-icon{align-items:center;display:inline-flex;height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .input-sparkle-icon,:root:not([dir=rtl]) .search-combobox--header .input-sparkle-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .input-sparkle-icon,:root[dir=rtl] .search-combobox--header .input-sparkle-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .input-container__global-cancel-icon{background:transparent;border:none;border-radius:100%;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));cursor:pointer;height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));outline:none;width:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .input-container__global-cancel-icon:focus,.search-combobox--header .input-container__global-cancel-icon:hover{background-color:RGB(var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)));border-color:RGB(var(--now-color--neutral-7,135,147,148))}.search-combobox--header .input-container__global-cancel-icon.can-animate{transition:background-color RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));transition:opacity var(--now-opacity--least,.1)}.search-combobox--header .input-container__global-cancel-icon now-icon[icon=filter-outline]{background:RGB(var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)));border:RGB(var(--now-color--neutral-7,135,147,148));margin-block-start:calc(-.5rem*var(--classicsponlydonotuse--rem-multipy));position:absolute;top:40%}:host(:not([dir=rtl])) .search-combobox--header .input-container__global-cancel-icon now-icon[icon=filter-outline],:root:not([dir=rtl]) .search-combobox--header .input-container__global-cancel-icon now-icon[icon=filter-outline]{left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .input-container__global-cancel-icon now-icon[icon=filter-outline],:root[dir=rtl] .search-combobox--header .input-container__global-cancel-icon now-icon[icon=filter-outline]{right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .context-dropdown-container,:root:not([dir=rtl]) .search-combobox--header .context-dropdown-container{border-left:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}:host([dir=rtl]) .search-combobox--header .context-dropdown-container,:root[dir=rtl] .search-combobox--header .context-dropdown-container{border-right:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}.search-combobox--header .context-dropdown-container:hover{background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)))}.search-combobox--header .context-dropdown-container:focus-within{--now-color_focus-ring:transparent;--now-color_focus-ring_shadow:transparent;background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 0 0 calc(.126rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring--color,var(--now-color--focus-2,1,119,142))),inset 0 0 0 calc(.063rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring-inner--color,var(--now-color--neutral-1,246,247,247)))}.search-combobox--header .context-dropdown-container .dropdown-search-context{align-items:center;background-color:inherit;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));justify-content:center}.search-combobox--header .context-dropdown-container .dropdown-search-context-active{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)))}.search-combobox--header .search-popover{border:1px solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));border-top:none;box-shadow:0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));padding-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover,:root:not([dir=rtl]) .search-combobox--header .search-popover{padding-left:0}:host([dir=rtl]) .search-combobox--header .search-popover,:root[dir=rtl] .search-combobox--header .search-popover{padding-right:0}:host(:not([dir=rtl])) .search-combobox--header .search-popover,:root:not([dir=rtl]) .search-combobox--header .search-popover{padding-right:0}:host([dir=rtl]) .search-combobox--header .search-popover,:root[dir=rtl] .search-combobox--header .search-popover{padding-left:0}.search-combobox--header .search-popover.na-self-service{padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover.na-self-service,:root:not([dir=rtl]) .search-combobox--header .search-popover.na-self-service{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover.na-self-service,:root[dir=rtl] .search-combobox--header .search-popover.na-self-service{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover.na-self-service,:root:not([dir=rtl]) .search-combobox--header .search-popover.na-self-service{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover.na-self-service,:root[dir=rtl] .search-combobox--header .search-popover.na-self-service{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__item{padding-bottom:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item,:root:not([dir=rtl]) .search-combobox--header .search-popover__item{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item,:root[dir=rtl] .search-combobox--header .search-popover__item{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item,:root:not([dir=rtl]) .search-combobox--header .search-popover__item{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item,:root[dir=rtl] .search-combobox--header .search-popover__item{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__item.-search-popover__item--is-active:hover{background-color:RGB(var(--now-color--primary-0,221,237,233))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item.-na-self-service,:root:not([dir=rtl]) .search-combobox--header .search-popover__item.-na-self-service{padding-left:0}:host([dir=rtl]) .search-combobox--header .search-popover__item.-na-self-service,:root[dir=rtl] .search-combobox--header .search-popover__item.-na-self-service{padding-right:0}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item.-na-self-service,:root:not([dir=rtl]) .search-combobox--header .search-popover__item.-na-self-service{padding-right:0}:host([dir=rtl]) .search-combobox--header .search-popover__item.-na-self-service,:root[dir=rtl] .search-combobox--header .search-popover__item.-na-self-service{padding-left:0}.search-combobox--header .search-popover__section-header{padding-bottom:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--header .search-popover__section-header{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__section-header,:root[dir=rtl] .search-combobox--header .search-popover__section-header{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--header .search-popover__section-header{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__section-header,:root[dir=rtl] .search-combobox--header .search-popover__section-header{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__section-header:first-child{padding-top:0}.search-combobox--header .search-popover__section-header.na-self-service{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__section-header.na-self-service,:root:not([dir=rtl]) .search-combobox--header .search-popover__section-header.na-self-service{padding-left:0}:host([dir=rtl]) .search-combobox--header .search-popover__section-header.na-self-service,:root[dir=rtl] .search-combobox--header .search-popover__section-header.na-self-service{padding-right:0}:host(:not([dir=rtl])) .search-combobox--header .search-popover__section-header.na-self-service,:root:not([dir=rtl]) .search-combobox--header .search-popover__section-header.na-self-service{padding-right:0}:host([dir=rtl]) .search-combobox--header .search-popover__section-header.na-self-service,:root[dir=rtl] .search-combobox--header .search-popover__section-header.na-self-service{padding-left:0}.search-combobox--header .search-popover__item-button{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item-button,:root:not([dir=rtl]) .search-combobox--header .search-popover__item-button{padding-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item-button,:root[dir=rtl] .search-combobox--header .search-popover__item-button{padding-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover.-global{border:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));margin-top:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));max-height:calc(24.75rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy));width:calc(22.25rem*var(--classicsponlydonotuse--rem-multipy));z-index:999}.search-combobox--header .search-popover.-global.-na-self-service{max-height:calc(19.3125rem*var(--classicsponlydonotuse--rem-multipy));width:calc(27.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__section-header.-global{color:RGB(var(--now-color--primary-2,23,100,82));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0!important}.search-combobox--header .section-divider-global{border-top:1px;border-color:var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214));margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__item.-is-active-global:focus,.search-combobox--header .search-popover__item.-is-active-global:hover{background-color:RGB(var(--now-color--primary-1,30,133,109),var(--now-opacity--least,.1))}.search-combobox--header .search-popover__item-view-all{cursor:pointer}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item-view-all,:root:not([dir=rtl]) .search-combobox--header .search-popover__item-view-all{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item-view-all,:root[dir=rtl] .search-combobox--header .search-popover__item-view-all{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item-view-all,:root:not([dir=rtl]) .search-combobox--header .search-popover__item-view-all{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item-view-all,:root[dir=rtl] .search-combobox--header .search-popover__item-view-all{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__item-text-link{-webkit-line-clamp:1;-webkit-box-orient:vertical;align-items:center;display:flex;display:-webkit-box;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;overflow:hidden;text-align:center;text-overflow:ellipsis}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item-text-link,:root:not([dir=rtl]) .search-combobox--header .search-popover__item-text-link{margin-right:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item-text-link,:root[dir=rtl] .search-combobox--header .search-popover__item-text-link{margin-left:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item-text-link,:root:not([dir=rtl]) .search-combobox--header .search-popover__item-text-link{margin-left:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item-text-link,:root[dir=rtl] .search-combobox--header .search-popover__item-text-link{margin-right:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__item-metadata-global{align-items:center;display:flex;flex:auto;overflow:hidden;text-decoration:none}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item,:root:not([dir=rtl]) .search-combobox--header .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item,:root[dir=rtl] .search-combobox--header .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item .search-popover__item-icon.-global{padding-bottom:calc(1.375rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__item-primary-text.-global{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item-primary-text.-global,:root:not([dir=rtl]) .search-combobox--header .search-popover__item-primary-text.-global{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item-primary-text.-global,:root[dir=rtl] .search-combobox--header .search-popover__item-primary-text.-global{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--header .search-popover__item-primary-text.-na-self-service{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item-primary-text.-na-self-service,:root:not([dir=rtl]) .search-combobox--header .search-popover__item-primary-text.-na-self-service{margin-left:0}:host([dir=rtl]) .search-combobox--header .search-popover__item-primary-text.-na-self-service,:root[dir=rtl] .search-combobox--header .search-popover__item-primary-text.-na-self-service{margin-right:0}:host(:not([dir=rtl])) .search-combobox--header .search-popover__item-primary-text.-na-self-service,:root:not([dir=rtl]) .search-combobox--header .search-popover__item-primary-text.-na-self-service{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--header .search-popover__item-primary-text.-na-self-service,:root[dir=rtl] .search-combobox--header .search-popover__item-primary-text.-na-self-service{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.search-combobox--header .search-popover__item-text-link{padding:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0}.search-combobox--header .search-popover__item.-is-active-global:hover{background-color:highlight}.search-combobox--header .search-popover__item.-is-active-global:hover .search-popover__item-metadata-global{border:.1px solid transparent;forced-color-adjust:none;text-decoration:none}.search-combobox--header .search-popover__item.-is-active-global:hover now-icon.search-popover__item-icon{color:highlighttext;text-decoration:none}}.search-combobox--body .input-container{padding-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .input-container,:root:not([dir=rtl]) .search-combobox--body .input-container{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .input-container,:root[dir=rtl] .search-combobox--body .input-container{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .input-container,:root:not([dir=rtl]) .search-combobox--body .input-container{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .input-container,:root[dir=rtl] .search-combobox--body .input-container{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .input-container__input{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .input-container__button-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--body .input-container__button-icon:first-of-type{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .input-container__button-icon:first-of-type,:root[dir=rtl] .search-combobox--body .input-container__button-icon:first-of-type{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .input-container__button-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--body .input-container__button-icon:first-of-type{padding-right:0}:host([dir=rtl]) .search-combobox--body .input-container__button-icon:first-of-type,:root[dir=rtl] .search-combobox--body .input-container__button-icon:first-of-type{padding-left:0}:host(:not([dir=rtl])) .search-combobox--body .input-container__button-icon:nth-of-type(2),:root:not([dir=rtl]) .search-combobox--body .input-container__button-icon:nth-of-type(2){padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .input-container__button-icon:nth-of-type(2),:root[dir=rtl] .search-combobox--body .input-container__button-icon:nth-of-type(2){padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .input-container-search-icon-global:first-of-type,:root:not([dir=rtl]) .search-combobox--body .input-container-search-icon-global:first-of-type{padding-left:0}:host([dir=rtl]) .search-combobox--body .input-container-search-icon-global:first-of-type,:root[dir=rtl] .search-combobox--body .input-container-search-icon-global:first-of-type{padding-right:0}:host(:not([dir=rtl])) .search-combobox--body .input-container-search-icon-global:first-of-type,:root:not([dir=rtl]) .search-combobox--body .input-container-search-icon-global:first-of-type{padding-right:0}:host([dir=rtl]) .search-combobox--body .input-container-search-icon-global:first-of-type,:root[dir=rtl] .search-combobox--body .input-container-search-icon-global:first-of-type{padding-left:0}.search-combobox--body .search-popover{padding-bottom:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .search-popover,:root:not([dir=rtl]) .search-combobox--body .search-popover{padding-left:0}:host([dir=rtl]) .search-combobox--body .search-popover,:root[dir=rtl] .search-combobox--body .search-popover{padding-right:0}:host(:not([dir=rtl])) .search-combobox--body .search-popover,:root:not([dir=rtl]) .search-combobox--body .search-popover{padding-right:0}:host([dir=rtl]) .search-combobox--body .search-popover,:root[dir=rtl] .search-combobox--body .search-popover{padding-left:0}.search-combobox--body .search-popover__item{padding-bottom:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item,:root:not([dir=rtl]) .search-combobox--body .search-popover__item{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__item,:root[dir=rtl] .search-combobox--body .search-popover__item{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item,:root:not([dir=rtl]) .search-combobox--body .search-popover__item{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__item,:root[dir=rtl] .search-combobox--body .search-popover__item{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .search-popover__section-header{padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--body .search-popover__section-header{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__section-header,:root[dir=rtl] .search-combobox--body .search-popover__section-header{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--body .search-popover__section-header{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__section-header,:root[dir=rtl] .search-combobox--body .search-popover__section-header{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .search-popover__section-header:first-child{padding-top:0}.search-combobox--body .search-popover.-global{border:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));margin-top:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));max-height:calc(24.75rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy));width:calc(22.25rem*var(--classicsponlydonotuse--rem-multipy));z-index:999}.search-combobox--body .search-popover.-global.-na-self-service{max-height:calc(19.3125rem*var(--classicsponlydonotuse--rem-multipy));width:calc(27.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .search-popover__section-header.-global{color:RGB(var(--now-color--primary-2,23,100,82));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0!important}.search-combobox--body .section-divider-global{border-top:1px;border-color:var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214));margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .search-popover__item.-is-active-global:focus,.search-combobox--body .search-popover__item.-is-active-global:hover{background-color:RGB(var(--now-color--primary-1,30,133,109),var(--now-opacity--least,.1))}.search-combobox--body .search-popover__item-view-all{cursor:pointer}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item-view-all,:root:not([dir=rtl]) .search-combobox--body .search-popover__item-view-all{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__item-view-all,:root[dir=rtl] .search-combobox--body .search-popover__item-view-all{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item-view-all,:root:not([dir=rtl]) .search-combobox--body .search-popover__item-view-all{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__item-view-all,:root[dir=rtl] .search-combobox--body .search-popover__item-view-all{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .search-popover__item-text-link{-webkit-line-clamp:1;-webkit-box-orient:vertical;align-items:center;display:flex;display:-webkit-box;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;overflow:hidden;text-align:center;text-overflow:ellipsis}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item-text-link,:root:not([dir=rtl]) .search-combobox--body .search-popover__item-text-link{margin-right:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__item-text-link,:root[dir=rtl] .search-combobox--body .search-popover__item-text-link{margin-left:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item-text-link,:root:not([dir=rtl]) .search-combobox--body .search-popover__item-text-link{margin-left:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__item-text-link,:root[dir=rtl] .search-combobox--body .search-popover__item-text-link{margin-right:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .search-popover__item-metadata-global{align-items:center;display:flex;flex:auto;overflow:hidden;text-decoration:none}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item,:root:not([dir=rtl]) .search-combobox--body .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item,:root[dir=rtl] .search-combobox--body .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item .search-popover__item-icon.-global{padding-bottom:calc(1.375rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .search-popover__item-primary-text.-global{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item-primary-text.-global,:root:not([dir=rtl]) .search-combobox--body .search-popover__item-primary-text.-global{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__item-primary-text.-global,:root[dir=rtl] .search-combobox--body .search-popover__item-primary-text.-global{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--body .search-popover__item-primary-text.-na-self-service{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item-primary-text.-na-self-service,:root:not([dir=rtl]) .search-combobox--body .search-popover__item-primary-text.-na-self-service{margin-left:0}:host([dir=rtl]) .search-combobox--body .search-popover__item-primary-text.-na-self-service,:root[dir=rtl] .search-combobox--body .search-popover__item-primary-text.-na-self-service{margin-right:0}:host(:not([dir=rtl])) .search-combobox--body .search-popover__item-primary-text.-na-self-service,:root:not([dir=rtl]) .search-combobox--body .search-popover__item-primary-text.-na-self-service{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--body .search-popover__item-primary-text.-na-self-service,:root[dir=rtl] .search-combobox--body .search-popover__item-primary-text.-na-self-service{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.search-combobox--body .search-popover__item-text-link{padding:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0}.search-combobox--body .search-popover__item.-is-active-global:hover{background-color:highlight}.search-combobox--body .search-popover__item.-is-active-global:hover .search-popover__item-metadata-global{border:.1px solid transparent;forced-color-adjust:none;text-decoration:none}.search-combobox--body .search-popover__item.-is-active-global:hover now-icon.search-popover__item-icon{color:highlighttext;text-decoration:none}}.search-combobox--fullpage-header .input-container{border:none;border-top-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));border-top-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:50.8%}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container,:root[dir=rtl] .search-combobox--fullpage-header .input-container{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container,:root[dir=rtl] .search-combobox--fullpage-header .input-container{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container,:root[dir=rtl] .search-combobox--fullpage-header .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container,:root[dir=rtl] .search-combobox--fullpage-header .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-header .input-container:hover{background:RGB(var(--now-color_surface--brand-1,236,244,241));outline:1px solid RGB(var(--now-color--primary-1,30,133,109))}.search-combobox--fullpage-header .input-container.input-container--has-focus{outline:1px solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.search-combobox--fullpage-header .input-container.multi-line-input{height:unset!important;min-height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-header .input-container__input{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-header .input-container__input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--fullpage-header .input-container__input.multi-line-input{field-sizing:content;font-family:inherit;max-height:calc(7.875rem*var(--classicsponlydonotuse--rem-multipy));overflow-y:auto;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0;resize:none}.search-combobox--fullpage-header .input-container__input.multi-line-input::-webkit-scrollbar-button{display:none}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container__button-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container__button-icon:first-of-type{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container__button-icon:first-of-type,:root[dir=rtl] .search-combobox--fullpage-header .input-container__button-icon:first-of-type{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container__button-icon:nth-of-type(2),:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container__button-icon:nth-of-type(2){padding-left:0}:host([dir=rtl]) .search-combobox--fullpage-header .input-container__button-icon:nth-of-type(2),:root[dir=rtl] .search-combobox--fullpage-header .input-container__button-icon:nth-of-type(2){padding-right:0}:host(:not([dir=rtl])) .search-combobox--fullpage-header .context-dropdown-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .context-dropdown-container{border-left:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}:host([dir=rtl]) .search-combobox--fullpage-header .context-dropdown-container,:root[dir=rtl] .search-combobox--fullpage-header .context-dropdown-container{border-right:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}.search-combobox--fullpage-header .context-dropdown-container:hover{background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)))}.search-combobox--fullpage-header .context-dropdown-container:focus-within{--now-color_focus-ring:transparent;--now-color_focus-ring_shadow:transparent;background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 0 0 calc(.126rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring--color,var(--now-color--focus-2,1,119,142))),inset 0 0 0 calc(.063rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring-inner--color,var(--now-color--neutral-1,246,247,247)))}.search-combobox--fullpage-header .context-dropdown-container .dropdown-search-context{align-items:center;background-color:inherit;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));justify-content:center}.search-combobox--fullpage-header .context-dropdown-container .dropdown-search-context-active{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)))}.search-combobox--fullpage-header .search-popover{border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));border-top:1px solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));margin-top:1px;padding-bottom:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .search-popover,:root:not([dir=rtl]) .search-combobox--fullpage-header .search-popover{padding-left:0}:host([dir=rtl]) .search-combobox--fullpage-header .search-popover,:root[dir=rtl] .search-combobox--fullpage-header .search-popover{padding-right:0}:host(:not([dir=rtl])) .search-combobox--fullpage-header .search-popover,:root:not([dir=rtl]) .search-combobox--fullpage-header .search-popover{padding-right:0}:host([dir=rtl]) .search-combobox--fullpage-header .search-popover,:root[dir=rtl] .search-combobox--fullpage-header .search-popover{padding-left:0}:host(:not([dir=rtl])) .search-combobox--fullpage-header .search-popover,:root:not([dir=rtl]) .search-combobox--fullpage-header .search-popover{border-bottom-right-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .search-popover,:root[dir=rtl] .search-combobox--fullpage-header .search-popover{border-bottom-left-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .search-popover,:root:not([dir=rtl]) .search-combobox--fullpage-header .search-popover{border-bottom-left-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .search-popover,:root[dir=rtl] .search-combobox--fullpage-header .search-popover{border-bottom-right-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-header .search-popover__item{padding-bottom:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0}:host(:not([dir=rtl])) .search-combobox--fullpage-header .search-popover__item,:root:not([dir=rtl]) .search-combobox--fullpage-header .search-popover__item{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .search-popover__item,:root[dir=rtl] .search-combobox--fullpage-header .search-popover__item{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .search-popover__item,:root:not([dir=rtl]) .search-combobox--fullpage-header .search-popover__item{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .search-popover__item,:root[dir=rtl] .search-combobox--fullpage-header .search-popover__item{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-header .search-popover__item.-search-popover__item--is-active:hover{background-color:RGB(var(--now-color--primary-0,221,237,233))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--fullpage-header .search-popover__section-header{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .search-popover__section-header,:root[dir=rtl] .search-combobox--fullpage-header .search-popover__section-header{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--fullpage-header .search-popover__section-header{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .search-popover__section-header,:root[dir=rtl] .search-combobox--fullpage-header .search-popover__section-header{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-header .search-popover__item-button{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .search-popover__item-button,:root:not([dir=rtl]) .search-combobox--fullpage-header .search-popover__item-button{padding-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .search-popover__item-button,:root[dir=rtl] .search-combobox--fullpage-header .search-popover__item-button{padding-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-body .input-container{border:none;border-top-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));border-top-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:calc(47rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container,:root[dir=rtl] .search-combobox--fullpage-body .input-container{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container,:root[dir=rtl] .search-combobox--fullpage-body .input-container{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container,:root[dir=rtl] .search-combobox--fullpage-body .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container,:root[dir=rtl] .search-combobox--fullpage-body .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-body .input-container:hover{background:RGB(var(--now-color_surface--brand-1,236,244,241));outline:1px solid RGB(var(--now-color--primary-1,30,133,109))}.search-combobox--fullpage-body .input-container.input-container--has-focus{outline:1px solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.search-combobox--fullpage-body .input-container.multi-line-input{height:unset!important;min-height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-body .input-container__input{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-body .input-container__input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--fullpage-body .input-container__input.multi-line-input{field-sizing:content;font-family:inherit;max-height:calc(7.875rem*var(--classicsponlydonotuse--rem-multipy));overflow-y:auto;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0;resize:none}.search-combobox--fullpage-body .input-container__input.multi-line-input::-webkit-scrollbar-button{display:none}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container__button-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container__button-icon:first-of-type{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container__button-icon:first-of-type,:root[dir=rtl] .search-combobox--fullpage-body .input-container__button-icon:first-of-type{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container__button-icon:nth-of-type(2),:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container__button-icon:nth-of-type(2){padding-left:0}:host([dir=rtl]) .search-combobox--fullpage-body .input-container__button-icon:nth-of-type(2),:root[dir=rtl] .search-combobox--fullpage-body .input-container__button-icon:nth-of-type(2){padding-right:0}:host(:not([dir=rtl])) .search-combobox--fullpage-body .context-dropdown-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .context-dropdown-container{border-left:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}:host([dir=rtl]) .search-combobox--fullpage-body .context-dropdown-container,:root[dir=rtl] .search-combobox--fullpage-body .context-dropdown-container{border-right:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}.search-combobox--fullpage-body .context-dropdown-container:hover{background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)))}.search-combobox--fullpage-body .context-dropdown-container:focus-within{--now-color_focus-ring:transparent;--now-color_focus-ring_shadow:transparent;background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 0 0 calc(.126rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring--color,var(--now-color--focus-2,1,119,142))),inset 0 0 0 calc(.063rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring-inner--color,var(--now-color--neutral-1,246,247,247)))}.search-combobox--fullpage-body .context-dropdown-container .dropdown-search-context{align-items:center;background-color:inherit;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));justify-content:center}.search-combobox--fullpage-body .context-dropdown-container .dropdown-search-context-active{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)))}.search-combobox--dynamic-landing .input-container{border:none;border-top-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));border-top-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .input-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing .input-container{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .input-container,:root[dir=rtl] .search-combobox--dynamic-landing .input-container{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .input-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing .input-container{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .input-container,:root[dir=rtl] .search-combobox--dynamic-landing .input-container{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .input-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .input-container,:root[dir=rtl] .search-combobox--dynamic-landing .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .input-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .input-container,:root[dir=rtl] .search-combobox--dynamic-landing .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing .input-container.input-container--has-focus{outline:1px solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.search-combobox--dynamic-landing .input-container.multi-line-input{height:unset!important;min-height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing .input-container__input{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing .input-container__input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--dynamic-landing .input-container__input.multi-line-input{field-sizing:content;font-family:inherit;max-height:calc(7.875rem*var(--classicsponlydonotuse--rem-multipy));overflow-y:auto;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0;resize:none}.search-combobox--dynamic-landing .input-container__input.multi-line-input::-webkit-scrollbar-button{display:none}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .input-container__button-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--dynamic-landing .input-container__button-icon:first-of-type{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .input-container__button-icon:first-of-type,:root[dir=rtl] .search-combobox--dynamic-landing .input-container__button-icon:first-of-type{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .input-container__button-icon:nth-of-type(2),:root:not([dir=rtl]) .search-combobox--dynamic-landing .input-container__button-icon:nth-of-type(2){padding-left:0}:host([dir=rtl]) .search-combobox--dynamic-landing .input-container__button-icon:nth-of-type(2),:root[dir=rtl] .search-combobox--dynamic-landing .input-container__button-icon:nth-of-type(2){padding-right:0}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .context-dropdown-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing .context-dropdown-container{border-left:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}:host([dir=rtl]) .search-combobox--dynamic-landing .context-dropdown-container,:root[dir=rtl] .search-combobox--dynamic-landing .context-dropdown-container{border-right:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}.search-combobox--dynamic-landing .context-dropdown-container:hover{background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)))}.search-combobox--dynamic-landing .context-dropdown-container:focus-within{--now-color_focus-ring:transparent;--now-color_focus-ring_shadow:transparent;background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 0 0 calc(.126rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring--color,var(--now-color--focus-2,1,119,142))),inset 0 0 0 calc(.063rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring-inner--color,var(--now-color--neutral-1,246,247,247)))}.search-combobox--dynamic-landing .context-dropdown-container .dropdown-search-context{align-items:center;background-color:inherit;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));justify-content:center}.search-combobox--dynamic-landing .context-dropdown-container .dropdown-search-context-active{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)))}.search-combobox--dynamic-landing .search-popover{border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));border-top:1px solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));margin-top:1px;padding-bottom:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .search-popover,:root:not([dir=rtl]) .search-combobox--dynamic-landing .search-popover{padding-left:0}:host([dir=rtl]) .search-combobox--dynamic-landing .search-popover,:root[dir=rtl] .search-combobox--dynamic-landing .search-popover{padding-right:0}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .search-popover,:root:not([dir=rtl]) .search-combobox--dynamic-landing .search-popover{padding-right:0}:host([dir=rtl]) .search-combobox--dynamic-landing .search-popover,:root[dir=rtl] .search-combobox--dynamic-landing .search-popover{padding-left:0}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .search-popover,:root:not([dir=rtl]) .search-combobox--dynamic-landing .search-popover{border-bottom-right-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .search-popover,:root[dir=rtl] .search-combobox--dynamic-landing .search-popover{border-bottom-left-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .search-popover,:root:not([dir=rtl]) .search-combobox--dynamic-landing .search-popover{border-bottom-left-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .search-popover,:root[dir=rtl] .search-combobox--dynamic-landing .search-popover{border-bottom-right-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing .search-popover__item{padding-bottom:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .search-popover__item,:root:not([dir=rtl]) .search-combobox--dynamic-landing .search-popover__item{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .search-popover__item,:root[dir=rtl] .search-combobox--dynamic-landing .search-popover__item{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .search-popover__item,:root:not([dir=rtl]) .search-combobox--dynamic-landing .search-popover__item{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .search-popover__item,:root[dir=rtl] .search-combobox--dynamic-landing .search-popover__item{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--dynamic-landing .search-popover__section-header{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .search-popover__section-header,:root[dir=rtl] .search-combobox--dynamic-landing .search-popover__section-header{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--dynamic-landing .search-popover__section-header{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing .search-popover__section-header,:root[dir=rtl] .search-combobox--dynamic-landing .search-popover__section-header{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing-header .input-container{border:var(--now-form-control--border-width,1px) solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));border-top-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));border-top-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:none;height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy));outline:none;width:100%}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .input-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .input-container{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .input-container,:root[dir=rtl] .search-combobox--dynamic-landing-header .input-container{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .input-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .input-container{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .input-container,:root[dir=rtl] .search-combobox--dynamic-landing-header .input-container{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .input-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .input-container,:root[dir=rtl] .search-combobox--dynamic-landing-header .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .input-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .input-container,:root[dir=rtl] .search-combobox--dynamic-landing-header .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing-header .input-container.input-container--has-focus{outline:1px solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.search-combobox--dynamic-landing-header .input-container.multi-line-input{height:unset!important;min-height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing-header .input-container__input{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.search-combobox--dynamic-landing-header .input-container__input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--dynamic-landing-header .input-container__input.multi-line-input{field-sizing:content;font-family:inherit;max-height:calc(7.875rem*var(--classicsponlydonotuse--rem-multipy));overflow-y:auto;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0;resize:none}.search-combobox--dynamic-landing-header .input-container__input.multi-line-input::-webkit-scrollbar-button{display:none}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .input-container__button-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .input-container__button-icon:first-of-type{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .input-container__button-icon:first-of-type,:root[dir=rtl] .search-combobox--dynamic-landing-header .input-container__button-icon:first-of-type{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .input-container__button-icon:nth-of-type(2),:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .input-container__button-icon:nth-of-type(2){padding-left:0}:host([dir=rtl]) .search-combobox--dynamic-landing-header .input-container__button-icon:nth-of-type(2),:root[dir=rtl] .search-combobox--dynamic-landing-header .input-container__button-icon:nth-of-type(2){padding-right:0}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .context-dropdown-container,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .context-dropdown-container{border-left:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .context-dropdown-container,:root[dir=rtl] .search-combobox--dynamic-landing-header .context-dropdown-container{border-right:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}.search-combobox--dynamic-landing-header .context-dropdown-container:hover{background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)))}.search-combobox--dynamic-landing-header .context-dropdown-container:focus-within{--now-color_focus-ring:transparent;--now-color_focus-ring_shadow:transparent;background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 0 0 calc(.126rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring--color,var(--now-color--focus-2,1,119,142))),inset 0 0 0 calc(.063rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring-inner--color,var(--now-color--neutral-1,246,247,247)))}.search-combobox--dynamic-landing-header .context-dropdown-container .dropdown-search-context{align-items:center;background-color:inherit;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));justify-content:center}.search-combobox--dynamic-landing-header .context-dropdown-container .dropdown-search-context-active{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)))}.search-combobox--dynamic-landing-header .search-popover{border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));border-top:1px solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));margin-top:1px;padding-bottom:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .search-popover,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover{padding-left:0}:host([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover,:root[dir=rtl] .search-combobox--dynamic-landing-header .search-popover{padding-right:0}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .search-popover,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover{padding-right:0}:host([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover,:root[dir=rtl] .search-combobox--dynamic-landing-header .search-popover{padding-left:0}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .search-popover,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover{border-bottom-right-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover,:root[dir=rtl] .search-combobox--dynamic-landing-header .search-popover{border-bottom-left-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .search-popover,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover{border-bottom-left-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover,:root[dir=rtl] .search-combobox--dynamic-landing-header .search-popover{border-bottom-right-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing-header .search-popover__item{padding-bottom:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .search-popover__item,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__item{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__item,:root[dir=rtl] .search-combobox--dynamic-landing-header .search-popover__item{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .search-popover__item,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__item{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__item,:root[dir=rtl] .search-combobox--dynamic-landing-header .search-popover__item{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing-header .search-popover__item.-search-popover__item--is-active:hover{background-color:RGB(var(--now-color--primary-0,221,237,233))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__section-header{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__section-header,:root[dir=rtl] .search-combobox--dynamic-landing-header .search-popover__section-header{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .search-popover__section-header,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__section-header{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__section-header,:root[dir=rtl] .search-combobox--dynamic-landing-header .search-popover__section-header{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--dynamic-landing-header .search-popover__item-button{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) .search-combobox--dynamic-landing-header .search-popover__item-button,:root:not([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__item-button{padding-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--dynamic-landing-header .search-popover__item-button,:root[dir=rtl] .search-combobox--dynamic-landing-header .search-popover__item-button{padding-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}@media screen and (max-width:767px){.search-combobox--fullpage-body .input-container{border:none;border-top-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));border-top-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:100%}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container,:root[dir=rtl] .search-combobox--fullpage-body .input-container{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container,:root[dir=rtl] .search-combobox--fullpage-body .input-container{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container,:root[dir=rtl] .search-combobox--fullpage-body .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container,:root[dir=rtl] .search-combobox--fullpage-body .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-body .input-container:hover{background:RGB(var(--now-color_surface--brand-1,236,244,241));outline:1px solid RGB(var(--now-color--primary-1,30,133,109))}.search-combobox--fullpage-body .input-container.input-container--has-focus{outline:1px solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.search-combobox--fullpage-body .input-container.multi-line-input{height:unset!important;min-height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-body .input-container__input{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-body .input-container__input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--fullpage-body .input-container__input.multi-line-input{field-sizing:content;font-family:inherit;max-height:calc(7.875rem*var(--classicsponlydonotuse--rem-multipy));overflow-y:auto;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0;resize:none}.search-combobox--fullpage-body .input-container__input.multi-line-input::-webkit-scrollbar-button{display:none}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container__button-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container__button-icon:first-of-type{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-body .input-container__button-icon:first-of-type,:root[dir=rtl] .search-combobox--fullpage-body .input-container__button-icon:first-of-type{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-body .input-container__button-icon:nth-of-type(2),:root:not([dir=rtl]) .search-combobox--fullpage-body .input-container__button-icon:nth-of-type(2){padding-left:0}:host([dir=rtl]) .search-combobox--fullpage-body .input-container__button-icon:nth-of-type(2),:root[dir=rtl] .search-combobox--fullpage-body .input-container__button-icon:nth-of-type(2){padding-right:0}:host(:not([dir=rtl])) .search-combobox--fullpage-body .context-dropdown-container,:root:not([dir=rtl]) .search-combobox--fullpage-body .context-dropdown-container{border-left:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}:host([dir=rtl]) .search-combobox--fullpage-body .context-dropdown-container,:root[dir=rtl] .search-combobox--fullpage-body .context-dropdown-container{border-right:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}.search-combobox--fullpage-body .context-dropdown-container:hover{background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)))}.search-combobox--fullpage-body .context-dropdown-container:focus-within{--now-color_focus-ring:transparent;--now-color_focus-ring_shadow:transparent;background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 0 0 calc(.126rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring--color,var(--now-color--focus-2,1,119,142))),inset 0 0 0 calc(.063rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring-inner--color,var(--now-color--neutral-1,246,247,247)))}.search-combobox--fullpage-body .context-dropdown-container .dropdown-search-context{align-items:center;background-color:inherit;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));justify-content:center}.search-combobox--fullpage-body .context-dropdown-container .dropdown-search-context-active{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)))}.search-combobox--fullpage-header .input-container{border:none;border-top-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));border-top-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:100%}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container,:root[dir=rtl] .search-combobox--fullpage-header .input-container{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container,:root[dir=rtl] .search-combobox--fullpage-header .input-container{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container,:root[dir=rtl] .search-combobox--fullpage-header .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container{border-bottom-left-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container,:root[dir=rtl] .search-combobox--fullpage-header .input-container{border-bottom-right-radius:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-header .input-container:hover{background:RGB(var(--now-color_surface--brand-1,236,244,241));outline:1px solid RGB(var(--now-color--primary-1,30,133,109))}.search-combobox--fullpage-header .input-container.input-container--has-focus{outline:1px solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.search-combobox--fullpage-header .input-container.multi-line-input{height:unset!important;min-height:calc(2.875rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-header .input-container__input{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--fullpage-header .input-container__input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-combobox--fullpage-header .input-container__input.multi-line-input{field-sizing:content;font-family:inherit;max-height:calc(7.875rem*var(--classicsponlydonotuse--rem-multipy));overflow-y:auto;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0;resize:none}.search-combobox--fullpage-header .input-container__input.multi-line-input::-webkit-scrollbar-button{display:none}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container__button-icon:first-of-type,:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container__button-icon:first-of-type{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--fullpage-header .input-container__button-icon:first-of-type,:root[dir=rtl] .search-combobox--fullpage-header .input-container__button-icon:first-of-type{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--fullpage-header .input-container__button-icon:nth-of-type(2),:root:not([dir=rtl]) .search-combobox--fullpage-header .input-container__button-icon:nth-of-type(2){padding-left:0}:host([dir=rtl]) .search-combobox--fullpage-header .input-container__button-icon:nth-of-type(2),:root[dir=rtl] .search-combobox--fullpage-header .input-container__button-icon:nth-of-type(2){padding-right:0}:host(:not([dir=rtl])) .search-combobox--fullpage-header .context-dropdown-container,:root:not([dir=rtl]) .search-combobox--fullpage-header .context-dropdown-container{border-left:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}:host([dir=rtl]) .search-combobox--fullpage-header .context-dropdown-container,:root[dir=rtl] .search-combobox--fullpage-header .context-dropdown-container{border-right:1px solid RGB(var(--unified_nav-input--border-color,var(--now-color_chrome--divider-1,144,155,156)))}.search-combobox--fullpage-header .context-dropdown-container:hover{background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)))}.search-combobox--fullpage-header .context-dropdown-container:focus-within{--now-color_focus-ring:transparent;--now-color_focus-ring_shadow:transparent;background-color:RGB(var(--unified_nav-input--background-color--hover,var(--now-color_chrome--brand-3,114,128,129)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 0 0 calc(.126rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring--color,var(--now-color--focus-2,1,119,142))),inset 0 0 0 calc(.063rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--unified_nav-focus-ring-inner--color,var(--now-color--neutral-1,246,247,247)))}.search-combobox--fullpage-header .context-dropdown-container .dropdown-search-context{align-items:center;background-color:inherit;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));justify-content:center}.search-combobox--fullpage-header .context-dropdown-container .dropdown-search-context-active{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)))}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--unified_nav-input--color:var(--nav_menu-input--color);--unified_nav-input--color--placeholder:var( --nav_menu-input--color--placeholder );--unified_nav-input--color--opened:var(--nav_menu-input--color--opened);--unified_nav-input--background-color:var( --nav_menu-input--background-color );--unified_nav-input--background-color--hover:var( --nav_menu-input--background-color--hover );--unified_nav-input--background-color--opened:var( --nav_menu-input--background-color--opened );--unified_nav-input--border-color:var(--nav_menu-input--border-color);--unified_nav-search--icon-color--collapsed:var( --nav_menu-input--search-icon-color--collapsed );--utterance-gradient_color--bottom:var( --nass-utterance-gradient_color--bottom );--utterance-gradient_color--top:var(--nass-utterance-gradient_color--top);--utterance-sparkle_color--bottom:var( --nass-utterance-sparkle-gradient_color--bottom );--utterance-sparkle_color--top:var( --nass-utterance-sparkle-gradient_color--top );--input-sparkle-gradient_color--bottom:var( --nass-input-sparkle-gradient_color--bottom );--input-sparkle-gradient_color--top:var( --nass-input-sparkle-gradient_color--top );--searchinput-border_color:var(--search-input_border--color);--unified_nav-focus-ring--color:var(--nav_menu-focus-ring--color);--unified_nav-focus-ring-inner--color:var( --nav_menu-focus-ring-inner--color )}:host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.popover{flex-direction:column;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.onboarding-popover-header-section,.popover{display:flex}.onboarding-popover-label{font-weight:600;justify-content:center}.onboarding-popover-content,.onboarding-popover-label{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.onboarding-popover-content{font-weight:400;width:calc(15.25rem*var(--classicsponlydonotuse--rem-multipy))}.onboarding-close-popover{align-items:flex-start;color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));height:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));justify-content:space-between;margin-right:calc(-.125rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(-.5rem*var(--classicsponlydonotuse--rem-multipy));padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));width:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}@media only screen and (max-width:520px){.popover{height:calc(10.3125rem*var(--classicsponlydonotuse--rem-multipy))}.onboarding-close-popover,.onboarding-popover-sparkle-icon{height:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));width:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.onboarding-close-popover{margin-right:calc(-.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.onboarding-popover-footer-link{height:calc(2.75rem*var(--classicsponlydonotuse--rem-multipy))}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,.input-container,:after,:before{box-sizing:border-box}.input-container{border:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));border-top-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));border-top-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));display:flex}:host(:not([dir=rtl])) .input-container,:root:not([dir=rtl]) .input-container{border-bottom-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-container,:root[dir=rtl] .input-container{border-bottom-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .input-container,:root:not([dir=rtl]) .input-container{border-bottom-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-container,:root[dir=rtl] .input-container{border-bottom-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.input-container__input{background-color:transparent;border:none;box-sizing:border-box;color:var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28));font-family:inherit;font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));min-height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));outline:none;padding:0;width:100%}.input-container__mobile-cancel{padding-bottom:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .input-container__mobile-cancel,:root:not([dir=rtl]) .input-container__mobile-cancel{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-container__mobile-cancel,:root[dir=rtl] .input-container__mobile-cancel{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .input-container__mobile-cancel,:root:not([dir=rtl]) .input-container__mobile-cancel{padding-right:0}:host([dir=rtl]) .input-container__mobile-cancel,:root[dir=rtl] .input-container__mobile-cancel{padding-left:0}.search-popover{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));border-top:none;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));box-sizing:border-box;margin:0;position:absolute;text-align:left;width:100%;z-index:1000}:host(:not([dir=rtl])) .search-popover,:root:not([dir=rtl]) .search-popover{border-bottom-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover,:root[dir=rtl] .search-popover{border-bottom-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover,:root:not([dir=rtl]) .search-popover{border-bottom-left-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover,:root[dir=rtl] .search-popover{border-bottom-right-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover .search-popover__item:first-child{padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover ul{list-style:none;margin:0;padding:0}.search-popover .sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.search-popover__section-header{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__section-header,:root:not([dir=rtl]) .search-popover__section-header{padding-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__section-header,:root[dir=rtl] .search-popover__section-header{padding-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__section-header,:root:not([dir=rtl]) .search-popover__section-header{padding-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__section-header,:root[dir=rtl] .search-popover__section-header{padding-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__section-header,:root:not([dir=rtl]) .search-popover__section-header{text-align:left}:host([dir=rtl]) .search-popover__section-header,:root[dir=rtl] .search-popover__section-header{text-align:right}.search-popover__item{cursor:pointer}.search-popover__item-icon{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__item-icon,:root:not([dir=rtl]) .search-popover__item-icon{padding-left:0}:host([dir=rtl]) .search-popover__item-icon,:root[dir=rtl] .search-popover__item-icon{padding-right:0}:host(:not([dir=rtl])) .search-popover__item-icon,:root:not([dir=rtl]) .search-popover__item-icon{padding-right:0}:host([dir=rtl]) .search-popover__item-icon,:root[dir=rtl] .search-popover__item-icon{padding-left:0}.search-popover__item-metadata{align-items:center;display:flex;flex:1 1 auto;text-decoration:none;width:1%}.search-popover__item-metadata::-moz-focus-inner{border-style:none}.search-popover__item-metadata:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.search-popover__item-metadata:focus{outline:1px solid highlight}}.search-popover__item-primary-text{-webkit-line-clamp:1;-webkit-box-orient:vertical;align-items:baseline;color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));display:-webkit-box;display:flex;flex:1 1 auto;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis}:host(:not([dir=rtl])) .search-popover__item-primary-text,:root:not([dir=rtl]) .search-popover__item-primary-text{margin-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-primary-text,:root[dir=rtl] .search-popover__item-primary-text{margin-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-primary-text p{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;margin-bottom:0;margin-top:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-popover__item-primary-text p.click-breadcrumb{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-primary-text p.click-breadcrumb span{margin-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-primary-text p.click-breadcrumb span:last-child{margin-right:0}.search-popover__item-primary-text--match{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}:host(:not([dir=rtl])) .search-popover__item-primary-text--match,:root:not([dir=rtl]) .search-popover__item-primary-text--match{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-primary-text--match,:root[dir=rtl] .search-popover__item-primary-text--match{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-button{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) .search-popover__item-button,:root:not([dir=rtl]) .search-popover__item-button{padding-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-button,:root[dir=rtl] .search-popover__item-button{padding-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.global-search-icon-mobile{align-items:center;color:RGB(var(--unified_nav-search--icon-color--collapsed,var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255))));display:inline-flex;height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile,:root:not([dir=rtl]) .global-search-icon-mobile{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile,:root[dir=rtl] .global-search-icon-mobile{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile,:root:not([dir=rtl]) .global-search-icon-mobile{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile,:root[dir=rtl] .global-search-icon-mobile{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.global-search-icon-mobile .search-icon-container{border-radius:50%;color:RGB(var(--unified_nav-search--icon-color--collapsed,var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255))));cursor:pointer;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile .search-icon-container,:root:not([dir=rtl]) .global-search-icon-mobile .search-icon-container{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile .search-icon-container,:root[dir=rtl] .global-search-icon-mobile .search-icon-container{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile .search-icon-container,:root:not([dir=rtl]) .global-search-icon-mobile .search-icon-container{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile .search-icon-container,:root[dir=rtl] .global-search-icon-mobile .search-icon-container{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.global-search-icon-mobile .search-icon-container:focus,.global-search-icon-mobile .search-icon-container:hover{background-color:RGB(var(--now-color--neutral-12,66,80,81))}.global-search-icon-mobile.-active-icon{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) .global-search-icon-mobile.-active-icon,:root:not([dir=rtl]) .global-search-icon-mobile.-active-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile.-active-icon,:root[dir=rtl] .global-search-icon-mobile.-active-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .global-search-icon-mobile.-active-icon,:root:not([dir=rtl]) .global-search-icon-mobile.-active-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .global-search-icon-mobile.-active-icon,:root[dir=rtl] .global-search-icon-mobile.-active-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-global-search-icon{align-items:center;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)));display:inline-flex;height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .-global-search-icon,:root:not([dir=rtl]) .-global-search-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .-global-search-icon,:root[dir=rtl] .-global-search-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .-global-search-icon,:root:not([dir=rtl]) .-global-search-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .-global-search-icon,:root[dir=rtl] .-global-search-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-global-search-icon.-active-icon{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}:host(:not([dir=rtl])) .-global-search-icon.-active-icon,:root:not([dir=rtl]) .-global-search-icon.-active-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .-global-search-icon.-active-icon,:root[dir=rtl] .-global-search-icon.-active-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .-global-search-icon.-active-icon,:root:not([dir=rtl]) .-global-search-icon.-active-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .-global-search-icon.-active-icon,:root[dir=rtl] .-global-search-icon.-active-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.input-sparkle-icon{align-items:center;display:inline-flex;height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;width:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .input-sparkle-icon,:root:not([dir=rtl]) .input-sparkle-icon{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-sparkle-icon,:root[dir=rtl] .input-sparkle-icon{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.search-combobox{font-style:normal;font-variant:normal;font-weight:400;letter-spacing:inherit;position:relative;text-indent:0;text-shadow:none;text-transform:none;white-space:normal;width:100%;word-spacing:inherit}.searchcombobox-mobile-input-wrapper{display:flex;flex-direction:column;height:100%}.search-combobox--mobile{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));bottom:0;left:0;position:absolute;right:0;top:0}.search-combobox--mobile.-global{display:flex;flex:1;flex-direction:column;position:relative!important}.search-combobox--mobile .search-combobox__mobile-input-wrapper{align-items:center;background-color:RGB(var(--now-color--primary-3,15,67,55));display:flex;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--mobile .search-combobox__mobile-input-wrapper,:root:not([dir=rtl]) .search-combobox--mobile .search-combobox__mobile-input-wrapper{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--mobile .search-combobox__mobile-input-wrapper,:root[dir=rtl] .search-combobox--mobile .search-combobox__mobile-input-wrapper{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-combobox--mobile .search-combobox__mobile-input-wrapper,:root:not([dir=rtl]) .search-combobox--mobile .search-combobox__mobile-input-wrapper{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-combobox--mobile .search-combobox__mobile-input-wrapper,:root[dir=rtl] .search-combobox--mobile .search-combobox__mobile-input-wrapper{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-combobox--mobile .mobile-global-search{align-items:center;background-color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));display:flex;flex:1;min-width:0;padding-bottom:0!important;padding-top:0!important}.search-combobox--mobile .-global-search-icon{color:RGB(var(--unified_nav-input--color--opened,var(--now-color--neutral-18,22,27,28)))}.mobile-search-init{border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));display:flex}.mobile-search-init.mobile-search-init--header-view now-icon{background:transparent;color:RGB(var(--unified_nav-input--color,var(--now-color--neutral-0,255,255,255)))}.mobile-search-init.mobile-search-init--page-view{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .mobile-search-init.mobile-search-init--page-view,:root:not([dir=rtl]) .mobile-search-init.mobile-search-init--page-view{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .mobile-search-init.mobile-search-init--page-view,:root[dir=rtl] .mobile-search-init.mobile-search-init--page-view{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .mobile-search-init.mobile-search-init--page-view,:root:not([dir=rtl]) .mobile-search-init.mobile-search-init--page-view{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .mobile-search-init.mobile-search-init--page-view,:root[dir=rtl] .mobile-search-init.mobile-search-init--page-view{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.mobile-search-init.mobile-search-init--page-view input{background:transparent;border:none;box-sizing:border-box;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-bottom:0;padding-top:0;width:100%}:host(:not([dir=rtl])) .mobile-search-init.mobile-search-init--page-view input,:root:not([dir=rtl]) .mobile-search-init.mobile-search-init--page-view input{padding-left:0}:host([dir=rtl]) .mobile-search-init.mobile-search-init--page-view input,:root[dir=rtl] .mobile-search-init.mobile-search-init--page-view input{padding-right:0}:host(:not([dir=rtl])) .mobile-search-init.mobile-search-init--page-view input,:root:not([dir=rtl]) .mobile-search-init.mobile-search-init--page-view input{padding-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .mobile-search-init.mobile-search-init--page-view input,:root[dir=rtl] .mobile-search-init.mobile-search-init--page-view input{padding-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.mobile-search-init.mobile-search-init--page-view input::-moz-focus-inner{border-style:none}.mobile-search-init.mobile-search-init--page-view input:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.mobile-search-init.mobile-search-init--page-view input:focus{outline:1px solid highlight}}.mobile-search-init.mobile-search-init--page-view input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.mobile-search-init.mobile-search-init--page-view now-icon{background-color:transparent;border:none;color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));cursor:pointer;outline:none;padding:0}.mobile-search-init.mobile-search-init--page-view now-icon::-moz-focus-inner{border-style:none}.mobile-search-init.mobile-search-init--page-view now-icon:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.mobile-search-init.mobile-search-init--page-view now-icon:focus{outline:1px solid highlight}}.input-container{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));flex-grow:1;padding-bottom:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .input-container,:root:not([dir=rtl]) .input-container{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-container,:root[dir=rtl] .input-container{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .input-container,:root:not([dir=rtl]) .input-container{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-container,:root[dir=rtl] .input-container{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.input-container .input-container__icon--search{display:none}.input-container .input-container__icon--cancel{padding-bottom:0;padding-top:0}:host(:not([dir=rtl])) .input-container .input-container__icon--cancel,:root:not([dir=rtl]) .input-container .input-container__icon--cancel{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .input-container .input-container__icon--cancel,:root[dir=rtl] .input-container .input-container__icon--cancel{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .input-container .input-container__icon--cancel,:root:not([dir=rtl]) .input-container .input-container__icon--cancel{padding-right:0}:host([dir=rtl]) .input-container .input-container__icon--cancel,:root[dir=rtl] .input-container .input-container__icon--cancel{padding-left:0}.input-container__input{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.input-container__input::placeholder{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));letter-spacing:inherit;line-height:inherit;word-spacing:inherit}.search-popover{border:none;box-shadow:none;height:100%;overflow:auto;padding-bottom:calc(2rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0}:host(:not([dir=rtl])) .search-popover,:root:not([dir=rtl]) .search-popover{padding-left:0}:host([dir=rtl]) .search-popover,:root[dir=rtl] .search-popover{padding-right:0}:host(:not([dir=rtl])) .search-popover,:root:not([dir=rtl]) .search-popover{padding-right:0}:host([dir=rtl]) .search-popover,:root[dir=rtl] .search-popover{padding-left:0}.search-popover__item{align-items:center;display:flex;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__item,:root:not([dir=rtl]) .search-popover__item{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item,:root[dir=rtl] .search-popover__item{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__item,:root:not([dir=rtl]) .search-popover__item{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item,:root[dir=rtl] .search-popover__item{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item.-search-popover__item--is-active:hover{background-color:RGB(var(--now-color--primary-0,221,237,233))}.search-popover__section-header{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__section-header,:root:not([dir=rtl]) .search-popover__section-header{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__section-header,:root[dir=rtl] .search-popover__section-header{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__section-header,:root:not([dir=rtl]) .search-popover__section-header{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__section-header,:root[dir=rtl] .search-popover__section-header{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__section-header:first-child{padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover.-global{border:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));flex:1;max-height:none;padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative;z-index:999}.search-popover__section-header.-global{color:RGB(var(--now-color--primary-2,23,100,82));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0!important}.section-divider-global{border-top:1px;border-color:var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214));margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item.-is-active-global{background-color:RGB(var(--now-color--primary-1,30,133,109),var(--now-opacity--least,.1))}@media(forced-colors:active){.search-popover__item.-is-active-global:hover{background-color:highlight}.search-popover__item.-is-active-global:hover .search-popover__item-metadata-global{border:.1px solid transparent;forced-color-adjust:none;text-decoration:none}.search-popover__item.-is-active-global:hover now-icon.search-popover__item-icon{color:highlighttext}}.search-popover__item-view-all{cursor:pointer}:host(:not([dir=rtl])) .search-popover__item-view-all,:root:not([dir=rtl]) .search-popover__item-view-all{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-view-all,:root[dir=rtl] .search-popover__item-view-all{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__item-view-all,:root:not([dir=rtl]) .search-popover__item-view-all{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-view-all,:root[dir=rtl] .search-popover__item-view-all{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-text-link{-webkit-line-clamp:1;-webkit-box-orient:vertical;align-items:center;display:flex;display:-webkit-box;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;overflow:hidden;text-align:center;text-overflow:ellipsis}:host(:not([dir=rtl])) .search-popover__item-text-link,:root:not([dir=rtl]) .search-popover__item-text-link{margin-right:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-text-link,:root[dir=rtl] .search-popover__item-text-link{margin-left:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__item-text-link,:root:not([dir=rtl]) .search-popover__item-text-link{margin-left:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-text-link,:root[dir=rtl] .search-popover__item-text-link{margin-right:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-metadata-global{align-items:center;display:flex;flex:auto;overflow:hidden;text-decoration:none}:host(:not([dir=rtl])) .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item,:root:not([dir=rtl]) .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item,:root[dir=rtl] .search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-metadata-global.search-popover__item-metadata-global-stacked-item .search-popover__item-icon.-global{padding-bottom:calc(1.375rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-primary-text.-global{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-popover__item-primary-text.-global,:root:not([dir=rtl]) .search-popover__item-primary-text.-global{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .search-popover__item-primary-text.-global,:root[dir=rtl] .search-popover__item-primary-text.-global{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.search-popover__item-primary-text.-global .search-popover__item--content-container{width:100%}.search-popover__item-primary-text.-global p{display:block}:host{--unified_nav-input--color:var(--nav_menu-input--color);--unified_nav-input--color--placeholder:var( --nav_menu-input--color--placeholder );--unified_nav-input--color--opened:var(--nav_menu-input--color--opened);--unified_nav-input--background-color:var( --nav_menu-input--background-color );--unified_nav-input--background-color--hover:var( --nav_menu-input--background-color--hover );--unified_nav-input--background-color--opened:var( --nav_menu-input--background-color--opened );--unified_nav-input--border-color:var(--nav_menu-input--border-color);--unified_nav-search--icon-color--collapsed:var( --nav_menu-input--search-icon-color--collapsed );--utterance-gradient_color--bottom:var( --nass-utterance-gradient_color--bottom );--utterance-gradient_color--top:var(--nass-utterance-gradient_color--top);--utterance-sparkle_color--bottom:var( --nass-utterance-sparkle-gradient_color--bottom );--utterance-sparkle_color--top:var( --nass-utterance-sparkle-gradient_color--top );--input-sparkle-gradient_color--bottom:var( --nass-input-sparkle-gradient_color--bottom );--input-sparkle-gradient_color--top:var( --nass-input-sparkle-gradient_color--top );--searchinput-border_color:var(--search-input_border--color);--unified_nav-focus-ring--color:var(--nav_menu-focus-ring--color);--unified_nav-focus-ring-inner--color:var( --nav_menu-focus-ring-inner--color )}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".accordion.disabled{filter:grayscale(1);opacity:var(--now-opacity--mid,.5);pointer-events:none}.accordion-collapsed{align-items:center;box-sizing:border-box;color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));display:flex;flex-flow:row nowrap;justify-content:space-between;padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}:host(:not([dir=rtl])) .accordion-collapsed,:root:not([dir=rtl]) .accordion-collapsed{padding-left:0}:host([dir=rtl]) .accordion-collapsed,:root[dir=rtl] .accordion-collapsed{padding-right:0}:host(:not([dir=rtl])) .accordion-collapsed,:root:not([dir=rtl]) .accordion-collapsed{padding-right:0}:host([dir=rtl]) .accordion-collapsed,:root[dir=rtl] .accordion-collapsed{padding-left:0}.accordion-expanded{align-items:center;align-items:flex-start;box-sizing:border-box;color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));display:flex;flex-flow:row nowrap;justify-content:space-between;padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}:host(:not([dir=rtl])) .accordion-expanded,:root:not([dir=rtl]) .accordion-expanded{padding-left:0}:host([dir=rtl]) .accordion-expanded,:root[dir=rtl] .accordion-expanded{padding-right:0}:host(:not([dir=rtl])) .accordion-expanded,:root:not([dir=rtl]) .accordion-expanded{padding-right:0}:host([dir=rtl]) .accordion-expanded,:root[dir=rtl] .accordion-expanded{padding-left:0}.single-select-accordion-expanded{align-items:center;align-items:flex-start;box-sizing:border-box;color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));display:flex;flex-flow:row nowrap;justify-content:space-between;padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}:host(:not([dir=rtl])) .single-select-accordion-expanded,:root:not([dir=rtl]) .single-select-accordion-expanded{padding-left:0}:host([dir=rtl]) .single-select-accordion-expanded,:root[dir=rtl] .single-select-accordion-expanded{padding-right:0}:host(:not([dir=rtl])) .single-select-accordion-expanded,:root:not([dir=rtl]) .single-select-accordion-expanded{padding-right:0}:host([dir=rtl]) .single-select-accordion-expanded,:root[dir=rtl] .single-select-accordion-expanded{padding-left:0}.accordion-title{align-items:left;background:transparent;border:none;cursor:pointer;display:flex;flex-flow:column wrap;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));justify-content:space-between;margin-bottom:0;margin-top:0;outline:none;padding-bottom:0;padding-top:0;width:100%;word-break:break-word}:host(:not([dir=rtl])) .accordion-title,:root:not([dir=rtl]) .accordion-title{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .accordion-title,:root[dir=rtl] .accordion-title{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .accordion-title,:root:not([dir=rtl]) .accordion-title{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .accordion-title,:root[dir=rtl] .accordion-title{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .accordion-title,:root:not([dir=rtl]) .accordion-title{padding-left:0}:host([dir=rtl]) .accordion-title,:root[dir=rtl] .accordion-title{padding-right:0}:host(:not([dir=rtl])) .accordion-title,:root:not([dir=rtl]) .accordion-title{padding-right:0}:host([dir=rtl]) .accordion-title,:root[dir=rtl] .accordion-title{padding-left:0}.accordion-sub-label{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:flex;flex-direction:column;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.accordion-controls{align-items:center;cursor:pointer;display:flex;flex-direction:column;flex-flow:row nowrap;-webkit-user-select:none;user-select:none}.clear-button{cursor:pointer;visibility:hidden}.tree-root-header{align-items:flex-end;display:flex;flex-flow:row nowrap;justify-content:space-between;outline:none;padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.tree-root-header now-heading{flex:1 1 0;min-width:0;overflow:hidden}.tree-root-header button{color:RGB(var(--now-color_brand--secondary,var(--now-color--brand-2,129,181,161)))}.tree-root-header-hidden{overflow:hidden;width:0}.clear-button{visibility:visible}.clear-button-hidden{visibility:hidden}.header-button-container{align-items:center;display:flex;flex-flow:\\\"row nowrap\\\"}.button-separator{margin-left:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-right:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.tree-expand-button{align-items:center;color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));cursor:pointer;display:flex;height:inherit;justify-content:center}.tree-expand-button::-moz-focus-inner{border-style:none}.tree-expand-button:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.tree-expand-button:focus{outline:1px solid highlight}}.tree-expand-button-selected{align-items:center;color:RGB(var(--now-color--primary-1,30,133,109));cursor:pointer;display:flex;height:inherit;justify-content:center}.tree-expand-button-selected::-moz-focus-inner{border-style:none}.tree-expand-button-selected:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.tree-expand-button-selected:focus{outline:1px solid highlight}}.tree-expand-button-icon{height:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.tree-expand-button{background-color:buttonface!important;border-style:solid!important;border-width:1px;box-shadow:none!important;color:buttontext!important;forced-color-adjust:none}.tree-expand-button .accordion-sub-label{color:inherit}.tree-expand-button:focus,.tree-expand-button:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.tree-expand-button.expanded{background-color:selecteditem!important;color:selecteditemtext!important}.tree-expand-button.expanded:focus,.tree-expand-button.expanded:hover{border-color:highlight!important}}.applied-facets{padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:inherit}.applied-facets .labels-with-pills,.applied-facets .labels-with-pills .applied-facet-pill{padding-bottom:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.applied-facets .labels-with-pills .applied-facet-pill{max-width:100%;padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .applied-facets .labels-with-pills .applied-facet-pill,:root:not([dir=rtl]) .applied-facets .labels-with-pills .applied-facet-pill{padding-left:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .applied-facets .labels-with-pills .applied-facet-pill,:root[dir=rtl] .applied-facets .labels-with-pills .applied-facet-pill{padding-right:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .applied-facets .labels-with-pills .applied-facet-pill,:root:not([dir=rtl]) .applied-facets .labels-with-pills .applied-facet-pill{padding-right:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .applied-facets .labels-with-pills .applied-facet-pill,:root[dir=rtl] .applied-facets .labels-with-pills .applied-facet-pill{padding-left:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.show-more-less{padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.divider-primary{background-color:RGB(var(--now-color_divider--primary,var(--now-color--neutral-7,135,147,148)))}.divider-primary,.divider-secondary{height:1px;margin:0;padding:0;width:100%}.divider-secondary{background-color:RGB(var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))}.divider-tertiary{background:RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));height:1px;margin:0;padding:0;width:100%}@media(forced-colors:active){.divider-primary,.divider-secondary,.divider-tertiary{background:canvastext!important}}.panel{border:none;box-sizing:border-box;list-style-type:none;margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:0;padding-bottom:0;padding-inline-start:0;padding-top:0;width:100%}:host(:not([dir=rtl])) .panel,:root:not([dir=rtl]) .panel{padding-left:0}:host([dir=rtl]) .panel,:root[dir=rtl] .panel{padding-right:0}:host(:not([dir=rtl])) .panel,:root:not([dir=rtl]) .panel{padding-right:0}:host([dir=rtl]) .panel,:root[dir=rtl] .panel{padding-left:0}.panel-drill{border:none;box-sizing:border-box;list-style-type:none;margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:0;padding-bottom:0;padding-inline-start:0;padding-top:0;width:100%}:host(:not([dir=rtl])) .panel-drill,:root:not([dir=rtl]) .panel-drill{padding-left:0}:host([dir=rtl]) .panel-drill,:root[dir=rtl] .panel-drill{padding-right:0}:host(:not([dir=rtl])) .panel-drill,:root:not([dir=rtl]) .panel-drill{padding-right:0}:host([dir=rtl]) .panel-drill,:root[dir=rtl] .panel-drill{padding-left:0}:host(:not([dir=rtl])) .panel-drill,:root:not([dir=rtl]) .panel-drill{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .panel-drill,:root[dir=rtl] .panel-drill{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .panel-drill,:root:not([dir=rtl]) .panel-drill{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .panel-drill,:root[dir=rtl] .panel-drill{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.container-loader{align-items:center;display:flex;height:calc(7.375rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center}@keyframes transitionClosed{0%{width:100%}to{width:0}}.facet-panel-tree{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 rgba(23,40,52,.08);color:RGB(var(--now-color_brand--primary,var(--now-color--brand-1,41,62,64)));display:flex;flex-flow:column nowrap;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:normal;font-variant:normal;font-weight:400;letter-spacing:inherit;overflow:hidden;padding-bottom:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));text-indent:0;text-shadow:none;text-transform:none;white-space:normal;width:100%;word-spacing:inherit}:host(:not([dir=rtl])) .facet-panel-tree,:root:not([dir=rtl]) .facet-panel-tree{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .facet-panel-tree,:root[dir=rtl] .facet-panel-tree{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .facet-panel-tree,:root:not([dir=rtl]) .facet-panel-tree{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .facet-panel-tree,:root[dir=rtl] .facet-panel-tree{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.facet-panel-tree-empty{border:none;color:RGB(var(--now-color_brand--primary,var(--now-color--brand-1,41,62,64)));display:flex;flex-flow:column nowrap;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;padding-bottom:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}:host(:not([dir=rtl])) .facet-panel-tree-empty,:root:not([dir=rtl]) .facet-panel-tree-empty{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .facet-panel-tree-empty,:root[dir=rtl] .facet-panel-tree-empty{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .facet-panel-tree-empty,:root:not([dir=rtl]) .facet-panel-tree-empty{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .facet-panel-tree-empty,:root[dir=rtl] .facet-panel-tree-empty{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.facet-panel-tree-hidden{animation-duration:.25s;animation-fill-mode:forwards;animation-name:transitionClosed}.facet-panel-tree-na-self-service{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 rgba(23,40,52,.08);color:RGB(var(--now-color_brand--primary,var(--now-color--brand-1,41,62,64)));display:flex;flex-flow:column nowrap;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:normal;font-variant:normal;font-weight:400;letter-spacing:inherit;overflow:hidden;padding-bottom:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));text-indent:0;text-shadow:none;text-transform:none;white-space:normal;width:100%;word-spacing:inherit}:host(:not([dir=rtl])) .facet-panel-tree-na-self-service,:root:not([dir=rtl]) .facet-panel-tree-na-self-service{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .facet-panel-tree-na-self-service,:root[dir=rtl] .facet-panel-tree-na-self-service{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .facet-panel-tree-na-self-service,:root:not([dir=rtl]) .facet-panel-tree-na-self-service{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .facet-panel-tree-na-self-service,:root[dir=rtl] .facet-panel-tree-na-self-service{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.facet-panel-tree-global{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border:none;border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 rgba(23,40,52,.08);height:100%;overflow-y:auto}.facet-panel-tree-item{overflow:hidden}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".drill-header{align-items:center;background-color:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)));border-bottom:1px solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));display:flex;flex-flow:row nowrap;justify-content:space-between;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-header,:root:not([dir=rtl]) .drill-header{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-header,:root[dir=rtl] .drill-header{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-header,:root:not([dir=rtl]) .drill-header{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-header,:root[dir=rtl] .drill-header{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.drill-header-left,.drill-header-right{display:flex;flex-flow:row nowrap}.drill-header-right{align-items:center;justify-content:flex-end}.drill-header-right .clear-button{margin-bottom:0;margin-top:0;padding-bottom:0;padding-top:0;visibility:visible}:host(:not([dir=rtl])) .drill-header-right .clear-button,:root:not([dir=rtl]) .drill-header-right .clear-button{padding-left:0}:host([dir=rtl]) .drill-header-right .clear-button,:root[dir=rtl] .drill-header-right .clear-button{padding-right:0}:host(:not([dir=rtl])) .drill-header-right .clear-button,:root:not([dir=rtl]) .drill-header-right .clear-button{padding-right:0}:host([dir=rtl]) .drill-header-right .clear-button,:root[dir=rtl] .drill-header-right .clear-button{padding-left:0}:host(:not([dir=rtl])) .drill-header-right .clear-button,:root:not([dir=rtl]) .drill-header-right .clear-button{margin-left:0}:host([dir=rtl]) .drill-header-right .clear-button,:root[dir=rtl] .drill-header-right .clear-button{margin-right:0}:host(:not([dir=rtl])) .drill-header-right .clear-button,:root:not([dir=rtl]) .drill-header-right .clear-button{margin-right:0}:host([dir=rtl]) .drill-header-right .clear-button,:root[dir=rtl] .drill-header-right .clear-button{margin-left:0}.drill-header-right .clear-button-hidden{margin-bottom:0;margin-top:0;padding-bottom:0;padding-top:0;visibility:hidden}:host(:not([dir=rtl])) .drill-header-right .clear-button-hidden,:root:not([dir=rtl]) .drill-header-right .clear-button-hidden{padding-left:0}:host([dir=rtl]) .drill-header-right .clear-button-hidden,:root[dir=rtl] .drill-header-right .clear-button-hidden{padding-right:0}:host(:not([dir=rtl])) .drill-header-right .clear-button-hidden,:root:not([dir=rtl]) .drill-header-right .clear-button-hidden{padding-right:0}:host([dir=rtl]) .drill-header-right .clear-button-hidden,:root[dir=rtl] .drill-header-right .clear-button-hidden{padding-left:0}:host(:not([dir=rtl])) .drill-header-right .clear-button-hidden,:root:not([dir=rtl]) .drill-header-right .clear-button-hidden{margin-left:0}:host([dir=rtl]) .drill-header-right .clear-button-hidden,:root[dir=rtl] .drill-header-right .clear-button-hidden{margin-right:0}:host(:not([dir=rtl])) .drill-header-right .clear-button-hidden,:root:not([dir=rtl]) .drill-header-right .clear-button-hidden{margin-right:0}:host([dir=rtl]) .drill-header-right .clear-button-hidden,:root[dir=rtl] .drill-header-right .clear-button-hidden{margin-left:0}.drill-header-right .done-button{margin-bottom:0;margin-top:0}:host(:not([dir=rtl])) .drill-header-right .done-button,:root:not([dir=rtl]) .drill-header-right .done-button{margin-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-header-right .done-button,:root[dir=rtl] .drill-header-right .done-button{margin-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-header-right .done-button,:root:not([dir=rtl]) .drill-header-right .done-button{margin-right:0}:host([dir=rtl]) .drill-header-right .done-button,:root[dir=rtl] .drill-header-right .done-button{margin-left:0}.drill-root-header{align-items:center;background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));display:flex;flex-flow:row nowrap;justify-content:space-between;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-root-header,:root:not([dir=rtl]) .drill-root-header{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-root-header,:root[dir=rtl] .drill-root-header{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-root-header,:root:not([dir=rtl]) .drill-root-header{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-root-header,:root[dir=rtl] .drill-root-header{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.drill-root-header-right{align-items:center;display:flex;flex-flow:row nowrap;justify-content:flex-end}.drill-root-header-right .clear-button{padding-bottom:0;padding-top:0;visibility:visible}:host(:not([dir=rtl])) .drill-root-header-right .clear-button,:root:not([dir=rtl]) .drill-root-header-right .clear-button{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-root-header-right .clear-button,:root[dir=rtl] .drill-root-header-right .clear-button{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-root-header-right .clear-button,:root:not([dir=rtl]) .drill-root-header-right .clear-button{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-root-header-right .clear-button,:root[dir=rtl] .drill-root-header-right .clear-button{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.drill-root-header-right .clear-button-hidden{padding-bottom:0;padding-top:0;visibility:hidden}:host(:not([dir=rtl])) .drill-root-header-right .clear-button-hidden,:root:not([dir=rtl]) .drill-root-header-right .clear-button-hidden{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-root-header-right .clear-button-hidden,:root[dir=rtl] .drill-root-header-right .clear-button-hidden{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-root-header-right .clear-button-hidden,:root:not([dir=rtl]) .drill-root-header-right .clear-button-hidden{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-root-header-right .clear-button-hidden,:root[dir=rtl] .drill-root-header-right .clear-button-hidden{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.drill-filters{box-sizing:border-box;color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));cursor:pointer;display:flex;flex-flow:row nowrap;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}:host(:not([dir=rtl])) .drill-filters,:root:not([dir=rtl]) .drill-filters{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-filters,:root[dir=rtl] .drill-filters{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-filters,:root:not([dir=rtl]) .drill-filters{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-filters,:root[dir=rtl] .drill-filters{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.drill-filters::-moz-focus-inner{border-style:none}.drill-filters:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.drill-filters:focus{outline:1px solid highlight}}.drill-filters-controls{font-weight:600}.drill-filter,.drill-filters-controls{align-items:center;display:flex;flex-flow:row nowrap}.drill-filter{background:transparent;border:none;cursor:pointer;justify-content:space-between;line-height:1.25;margin-bottom:0;margin-top:0;outline:none;padding-bottom:0;padding-top:0;width:100%}:host(:not([dir=rtl])) .drill-filter,:root:not([dir=rtl]) .drill-filter{margin-left:0}:host([dir=rtl]) .drill-filter,:root[dir=rtl] .drill-filter{margin-right:0}:host(:not([dir=rtl])) .drill-filter,:root:not([dir=rtl]) .drill-filter{margin-right:0}:host([dir=rtl]) .drill-filter,:root[dir=rtl] .drill-filter{margin-left:0}:host(:not([dir=rtl])) .drill-filter,:root:not([dir=rtl]) .drill-filter{padding-left:0}:host([dir=rtl]) .drill-filter,:root[dir=rtl] .drill-filter{padding-right:0}:host(:not([dir=rtl])) .drill-filter,:root:not([dir=rtl]) .drill-filter{padding-right:0}:host([dir=rtl]) .drill-filter,:root[dir=rtl] .drill-filter{padding-left:0}.drill-filter-text{display:flex;flex-flow:column nowrap;justify-content:center}.drill-expand-button-selected{align-items:center;color:RGB(var(--now-color--primary-1,30,133,109));cursor:pointer;display:flex;justify-content:center;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.drill-expand-button-selected::-moz-focus-inner{border-style:none}.drill-expand-button-selected:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.drill-expand-button-selected:focus{outline:1px solid highlight}}:host(:not([dir=rtl])) .drill-expand-button-selected,:root:not([dir=rtl]) .drill-expand-button-selected{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-expand-button-selected,:root[dir=rtl] .drill-expand-button-selected{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-expand-button-selected,:root:not([dir=rtl]) .drill-expand-button-selected{padding-right:0}:host([dir=rtl]) .drill-expand-button-selected,:root[dir=rtl] .drill-expand-button-selected{padding-left:0}.drill-expand-button{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.drill-expand-button::-moz-focus-inner{border-style:none}.drill-expand-button:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.drill-expand-button:focus{outline:1px solid highlight}}:host(:not([dir=rtl])) .drill-expand-button,:root:not([dir=rtl]) .drill-expand-button{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .drill-expand-button,:root[dir=rtl] .drill-expand-button{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .drill-expand-button,:root:not([dir=rtl]) .drill-expand-button{padding-right:0}:host([dir=rtl]) .drill-expand-button,:root[dir=rtl] .drill-expand-button{padding-left:0}.applied-facets{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .applied-facets,:root:not([dir=rtl]) .applied-facets{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .applied-facets,:root[dir=rtl] .applied-facets{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .applied-facets,:root:not([dir=rtl]) .applied-facets{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .applied-facets,:root[dir=rtl] .applied-facets{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.applied-facets .applied-facet-pill{max-width:100%;padding-bottom:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .applied-facets .applied-facet-pill,:root:not([dir=rtl]) .applied-facets .applied-facet-pill{padding-left:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .applied-facets .applied-facet-pill,:root[dir=rtl] .applied-facets .applied-facet-pill{padding-right:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .applied-facets .applied-facet-pill,:root:not([dir=rtl]) .applied-facets .applied-facet-pill{padding-right:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .applied-facets .applied-facet-pill,:root[dir=rtl] .applied-facets .applied-facet-pill{padding-left:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.divider-primary{background-color:RGB(var(--now-color_divider--primary,var(--now-color--neutral-7,135,147,148)))}.divider-primary,.divider-secondary{height:1px;margin:0;padding:0;width:100%}.divider-secondary{background-color:RGB(var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))}.divider-tertiary{background:RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));height:1px;margin:0;padding:0;width:100%}@media(forced-colors:active){.divider-primary,.divider-secondary,.divider-tertiary{background:canvastext!important}}.panel{border:none;box-sizing:border-box;list-style-type:none;margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:0;padding-bottom:0;padding-inline-start:0;padding-top:0;width:100%}:host(:not([dir=rtl])) .panel,:root:not([dir=rtl]) .panel{padding-left:0}:host([dir=rtl]) .panel,:root[dir=rtl] .panel{padding-right:0}:host(:not([dir=rtl])) .panel,:root:not([dir=rtl]) .panel{padding-right:0}:host([dir=rtl]) .panel,:root[dir=rtl] .panel{padding-left:0}.panel-drill{border:none;box-sizing:border-box;list-style-type:none;margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:0;padding-bottom:0;padding-inline-start:0;padding-top:0;width:100%}:host(:not([dir=rtl])) .panel-drill,:root:not([dir=rtl]) .panel-drill{padding-left:0}:host([dir=rtl]) .panel-drill,:root[dir=rtl] .panel-drill{padding-right:0}:host(:not([dir=rtl])) .panel-drill,:root:not([dir=rtl]) .panel-drill{padding-right:0}:host([dir=rtl]) .panel-drill,:root[dir=rtl] .panel-drill{padding-left:0}:host(:not([dir=rtl])) .panel-drill,:root:not([dir=rtl]) .panel-drill{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .panel-drill,:root[dir=rtl] .panel-drill{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .panel-drill,:root:not([dir=rtl]) .panel-drill{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .panel-drill,:root[dir=rtl] .panel-drill{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.container-loader{align-items:center;display:flex;height:calc(7.375rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center}.facet-panel-drill{color:RGB(var(--now-color_brand--primary,var(--now-color--brand-1,41,62,64)));display:flex;flex-flow:column nowrap;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:normal;font-variant:normal;font-weight:400;height:100%;letter-spacing:inherit;padding-bottom:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-bottom:0;padding-top:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:0;text-indent:0;text-shadow:none;text-transform:none;white-space:normal;width:100%;word-spacing:inherit}:host(:not([dir=rtl])) .facet-panel-drill,:root:not([dir=rtl]) .facet-panel-drill{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .facet-panel-drill,:root[dir=rtl] .facet-panel-drill{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .facet-panel-drill,:root:not([dir=rtl]) .facet-panel-drill{padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .facet-panel-drill,:root[dir=rtl] .facet-panel-drill{padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .facet-panel-drill,:root:not([dir=rtl]) .facet-panel-drill{padding-left:0}:host([dir=rtl]) .facet-panel-drill,:root[dir=rtl] .facet-panel-drill{padding-right:0}:host(:not([dir=rtl])) .facet-panel-drill,:root:not([dir=rtl]) .facet-panel-drill{padding-right:0}:host([dir=rtl]) .facet-panel-drill,:root[dir=rtl] .facet-panel-drill{padding-left:0}.facet-options{padding-bottom:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .facet-options,:root:not([dir=rtl]) .facet-options{padding-left:0}:host([dir=rtl]) .facet-options,:root[dir=rtl] .facet-options{padding-right:0}:host(:not([dir=rtl])) .facet-options,:root:not([dir=rtl]) .facet-options{padding-right:0}:host([dir=rtl]) .facet-options,:root[dir=rtl] .facet-options{padding-left:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.genius-card__about-popover{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));padding:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0}.genius-card__about-popover,.genius-card__about-popover-link{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__about-popover-link{padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.genius-card-footer-container-followup .genius-card-footer-followup{margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-container{background-color:var(--card-background_color,RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));border:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-sizing:border-box;padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative}.genius-card-container.-onebox{border:none;border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-container.-onebox.-global{box-shadow:none}.genius-card-container.-thumbnail{border:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));cursor:pointer;height:calc(7.25rem*var(--classicsponlydonotuse--rem-multipy));max-width:calc(11.5rem*var(--classicsponlydonotuse--rem-multipy));min-width:calc(11.5rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden}.genius-card-container.-sythesized{border-image:linear-gradient(180deg,var(--synthesized-gr-gradient_color--top,RGB(var(--now-color_grouped--teal-3,88,148,139))) 0,var(--synthesized-gr-gradient_color--bottom,RGB(var(--now-color_grouped--green-1,185,200,171))) 100%) 1;border-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) solid;border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))!important;position:relative}.genius-card-container.-active{border:2px solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.genius-card-header{display:flex;justify-content:space-between;margin-bottom:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header .genius-card-header__element .synthesized-gr-highlighted-text-container{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header .genius-card-header__element .synthesized-gr-highlighted-text-container .synthesized-gr-highlighted-text{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.genius-card-header__element{display:flex}.genius-card-header__element:first-of-type{margin-bottom:0;margin-top:0}:host(:not([dir=rtl])) .genius-card-header__element:first-of-type,:root:not([dir=rtl]) .genius-card-header__element:first-of-type{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__element:first-of-type,:root[dir=rtl] .genius-card-header__element:first-of-type{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__element:first-of-type,:root:not([dir=rtl]) .genius-card-header__element:first-of-type{margin-left:0}:host([dir=rtl]) .genius-card-header__element:first-of-type,:root[dir=rtl] .genius-card-header__element:first-of-type{margin-right:0}.genius-card-header__element:nth-of-type(2){margin:0 0 0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header__element .header-highlighted-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host(:not([dir=rtl])) .genius-card-header__element .genius-card-about-container,:root:not([dir=rtl]) .genius-card-header__element .genius-card-about-container{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__element .genius-card-about-container,:root[dir=rtl] .genius-card-header__element .genius-card-about-container{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header__feedback{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.3333}:host(:not([dir=rtl])) .genius-card-header__feedback,:root:not([dir=rtl]) .genius-card-header__feedback{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback,:root[dir=rtl] .genius-card-header__feedback{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__feedback,:root:not([dir=rtl]) .genius-card-header__feedback{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback,:root[dir=rtl] .genius-card-header__feedback{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header__feedback-separator{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.3333}:host(:not([dir=rtl])) .genius-card-header__feedback-separator,:root:not([dir=rtl]) .genius-card-header__feedback-separator{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback-separator,:root[dir=rtl] .genius-card-header__feedback-separator{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__feedback-separator,:root:not([dir=rtl]) .genius-card-header__feedback-separator{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback-separator,:root[dir=rtl] .genius-card-header__feedback-separator{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__feedback-separator,:root:not([dir=rtl]) .genius-card-header__feedback-separator{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback-separator,:root[dir=rtl] .genius-card-header__feedback-separator{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__feedback-separator,:root:not([dir=rtl]) .genius-card-header__feedback-separator{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback-separator,:root[dir=rtl] .genius-card-header__feedback-separator{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-body{display:flex;height:auto}.genius-card-body.-min-height{min-height:calc(8.79375rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__text{margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__text:first-of-type{margin-top:0}.genius-card-body__column{display:flex;flex-direction:column;justify-content:flex-start}.genius-card-body__column:last-of-type{flex-grow:1}.genius-card-body__column.-truncate{overflow:hidden}.genius-card-feedback-wrapper{display:flex;justify-content:space-between}.genius-card-feedback-wrapper.margin-top{margin-top:calc(.625rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-feedback-wrapper.align-content{align-items:center}.genius-card-feedback-wrapper.align-for-demo{flex-direction:column}.genius-card-footer-container{display:flex;flex-direction:column}.genius-card-footer{align-items:baseline;display:flex;min-width:0;width:80%}.genius-card-action-link-citation-control{align-items:center;display:flex;flex-direction:row}:host(:not([dir=rtl])) .genius-card-action-link-citation-control,:root:not([dir=rtl]) .genius-card-action-link-citation-control{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-link-citation-control,:root[dir=rtl] .genius-card-action-link-citation-control{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-link-citation-control now-image{max-width:calc(1.5625rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-link-citation-control now-text-link{line-height:3}.genius-card-action-label-mini{display:flex;flex-direction:row;margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-label-mini .source-label{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-label-mini .genius-card-action-citation-image-mini{padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-action-label-mini .genius-card-action-citation-image-mini,:root:not([dir=rtl]) .genius-card-action-label-mini .genius-card-action-citation-image-mini{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-label-mini .genius-card-action-citation-image-mini,:root[dir=rtl] .genius-card-action-label-mini .genius-card-action-citation-image-mini{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-label{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-action-label,:root:not([dir=rtl]) .genius-card-action-label{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-label,:root[dir=rtl] .genius-card-action-label{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-body-attachment{padding-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer-label{--now-button--bare--font-weight:400}:host(:not([dir=rtl])) .genius-card-action-link,:root:not([dir=rtl]) .genius-card-action-link{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-link,:root[dir=rtl] .genius-card-action-link{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-template{max-width:calc(20rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.attachment-content__main{max-width:calc(22.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.attachment-content__main-heading-link-icon{position:absolute;right:0}.attachment-content_card{display:flex;flex:1 1 auto;flex-direction:row;margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));position:relative}:host(:not([dir=rtl])) .attachment-content_card,:root:not([dir=rtl]) .attachment-content_card{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .attachment-content_card,:root[dir=rtl] .attachment-content_card{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-action-link-image,:root:not([dir=rtl]) .genius-card-action-link-image{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-link-image,:root[dir=rtl] .genius-card-action-link-image{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-action-link-image,:root:not([dir=rtl]) .genius-card-action-link-image{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-link-image,:root[dir=rtl] .genius-card-action-link-image{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer__control{align-items:flex-start;display:flex;flex-direction:column;margin-bottom:0;margin-top:0}:host(:not([dir=rtl])) .genius-card-footer__control,:root:not([dir=rtl]) .genius-card-footer__control{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-footer__control,:root[dir=rtl] .genius-card-footer__control{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-footer__control,:root:not([dir=rtl]) .genius-card-footer__control{margin-left:0}:host([dir=rtl]) .genius-card-footer__control,:root[dir=rtl] .genius-card-footer__control{margin-right:0}.genius-card-footer__control now-text-link{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer__control.-genius-links{align-items:center;flex-direction:row;flex-wrap:wrap;width:100%}.genius-card-action-card{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-card-content{align-items:center;display:flex;flex-direction:row;height:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}:host(:not([dir=rtl])) .genius-card-action-card-content now-image,:root:not([dir=rtl]) .genius-card-action-card-content now-image{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-card-content now-image,:root[dir=rtl] .genius-card-action-card-content now-image{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-citation{-webkit-box-orient:vertical;display:-webkit-box;max-width:calc(10.5rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis}@media only screen and (max-width:576px){.genius-card-container{box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));height:100%}.genius-card-feedback-wrapper.align-content{align-items:flex-end}.genius-card-footer{flex-direction:column}.genius-card-footer>.genius-card-footer__control:not(:last-child){margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer__control,.genius-card-footer__control now-button{width:100%}.genius-card-footer__control.-genius-links{align-items:flex-start;flex-direction:column}:host(:not([dir=rtl])) .genius-card-header__feedback,:root:not([dir=rtl]) .genius-card-header__feedback{margin-left:unset!important}:host([dir=rtl]) .genius-card-header__feedback,:root[dir=rtl] .genius-card-header__feedback{margin-right:unset!important}}@media only screen and (max-width:767px){.genius-card-body,.genius-card-header{flex-direction:column}.genius-card-feedback-wrapper.align-content{align-items:flex-end}.genius-card-footer-container{flex-direction:column}.genius-card-footer.-global{flex-direction:column;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer__control.-genius-links{align-items:flex-start;flex-direction:column}.genius-card-feedback-container{position:unset!important;top:unset!important}:host(:not([dir=rtl])) .genius-card-feedback-container,:root:not([dir=rtl]) .genius-card-feedback-container{right:unset!important}:host([dir=rtl]) .genius-card-feedback-container,:root[dir=rtl] .genius-card-feedback-container{left:unset!important}:host(:not([dir=rtl])) .genius-card-header__feedback.-global,:root:not([dir=rtl]) .genius-card-header__feedback.-global{margin-left:unset!important}:host([dir=rtl]) .genius-card-header__feedback.-global,:root[dir=rtl] .genius-card-header__feedback.-global{margin-right:unset!important}.genius-card-header__feedback-container{margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__marker--avatar.-global,.genius-card__marker--icon.-global,.genius-card__marker--image.-global{margin-top:unset!important}.genius-card__identifier-text{margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header-section{display:block!important}}.genius-card-feedback-container{align-items:flex-end;bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex;flex-direction:column}.genius-card-feedback-container.align-for-demo{flex-direction:row-reverse}.genius-card-header-section{display:inline}.genius-card-about-container{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.3333}:host(:not([dir=rtl])) .genius-card-about-container .genius-card__about,:root:not([dir=rtl]) .genius-card-about-container .genius-card__about{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-about-container .genius-card__about,:root[dir=rtl] .genius-card-about-container .genius-card__about{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-about-container .genius-card__about-separator{color:RGB(var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))}:host(:not([dir=rtl])) .genius-card-about-container .genius-card__about-separator,:root:not([dir=rtl]) .genius-card-about-container .genius-card__about-separator{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-about-container .genius-card__about-separator,:root[dir=rtl] .genius-card-about-container .genius-card__about-separator{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-about-container .genius-card__about-separator,:root:not([dir=rtl]) .genius-card-about-container .genius-card__about-separator{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-about-container .genius-card__about-separator,:root[dir=rtl] .genius-card-about-container .genius-card__about-separator{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.genius-card__description.-mini{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-text{-webkit-line-clamp:2;margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-text,.genius-card__description-text.-global{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.genius-card__description-text.-global{-webkit-line-clamp:14}.genius-card__description-text.genius-card__description-text-mini{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.genius-card__description-text:first-of-type{margin-top:0}.genius-card__description-font-size-sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-font-size-md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-font-size-lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-font-size-xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description--stacked{margin:0;padding:0}.genius-card__description-container pre{white-space:pre-wrap}.genius-card__description-container table{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;flex-wrap:nowrap}.genius-card__description-container table p{margin:0}.genius-card__description-container tr{display:flex;flex-direction:row;flex-wrap:nowrap;width:100%}.genius-card__description-container td{display:flex;flex-basis:0;flex-flow:row wrap;flex-grow:1}.genius-card__description-container ol,.genius-card__description-container p{margin:0}.genius-card__description-container .description-wrapper{position:relative;width:100%}.genius-card__description-container .description-wrapper.-global{width:100ch}.genius-card__description-container .description-wrapper.-mini{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;width:100%}.genius-card__description-container .description-wrapper.-mini h1,.genius-card__description-container .description-wrapper.-mini h2,.genius-card__description-container .description-wrapper.-mini h3,.genius-card__description-container .description-wrapper.-mini h4,.genius-card__description-container .description-wrapper.-mini h5,.genius-card__description-container .description-wrapper.-mini h6{margin:0}.genius-card__description-container .description-wrapper.-collapsed{overflow:clip}.genius-card__description-container .description-wrapper.-collapsed .collapsible__description-text{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.sythesized-text-wrapper .hand_over_to_va{margin:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0}.sythesized-text-wrapper .sythesized-text-container ol,.sythesized-text-wrapper .sythesized-text-container p,.sythesized-text-wrapper .sythesized-text-container ul{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.sythesized-text-wrapper .sythesized-text-container.-collapsed{overflow:clip}.sythesized-text-wrapper .sythesized-text-container.-collapsed .collapsible__description-text{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.sythesized-text-wrapper .sythesized-text-container a{color:RGB(var(--now-text-link--primary--color,var(--now-color--secondary-1,1,119,142)))}.sythesized-text-wrapper .sythesized-text-container a:hover{color:RGB(var(--now-text-link--primary--color--hover,var(--now-color--secondary-2,1,89,107)))}.sythesized-text-wrapper .sythesized-text-container a:active{color:RGB(var(--now-text-link--primary--color--active,var(--now-color--secondary-3,1,60,71)))}.sythesized-text-wrapper .buttons-container{align-items:center;display:flex;flex-direction:row;justify-content:flex-end}.sythesized-text-wrapper .buttons-container .show-more{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sythesized-text-wrapper .buttons-container .show-more,:root:not([dir=rtl]) .sythesized-text-wrapper .buttons-container .show-more{margin-right:auto}:host([dir=rtl]) .sythesized-text-wrapper .buttons-container .show-more,:root[dir=rtl] .sythesized-text-wrapper .buttons-container .show-more{margin-left:auto}.sythesized-text-wrapper .buttons-container.-global .show-more{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sythesized-text-wrapper .buttons-container .hand_over_to_va,:root:not([dir=rtl]) .sythesized-text-wrapper .buttons-container .hand_over_to_va{margin-left:auto}:host([dir=rtl]) .sythesized-text-wrapper .buttons-container .hand_over_to_va,:root[dir=rtl] .sythesized-text-wrapper .buttons-container .hand_over_to_va{margin-right:auto}:host(:not([dir=rtl])) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va,:root:not([dir=rtl]) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va{margin-left:auto}:host([dir=rtl]) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va,:root[dir=rtl] .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va{margin-right:auto}.sythesized-text-wrapper .buttons-container .follow-up-btn-content{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));white-space:nowrap}@media only screen and (max-width:1020px){.genius-card__description-container .description-wrapper,.genius-card__description-container .description-wrapper.-global{width:100%}}@media only screen and (max-width:576px){.sythesized-text-wrapper .buttons-container{align-items:flex-start;flex-direction:column}:host(:not([dir=rtl])) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va,:root:not([dir=rtl]) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va{margin-left:0}:host([dir=rtl]) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va,:root[dir=rtl] .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va{margin-right:0}}.genius-card__heading-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));display:-webkit-box;font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis}.genius-card__heading-text-mini,.genius-card__heading-text-onebox-mobile{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.genius-card__heading-font-size-sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__heading-font-size-md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__heading-font-size-lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__heading-font-size-xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier,.genius-card__identifier-text{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.genius-card__identifier-text{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}:host(:not([dir=rtl])) .genius-card__identifier-text,:root:not([dir=rtl]) .genius-card__identifier-text{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__identifier-text,:root[dir=rtl] .genius-card__identifier-text{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__identifier-text:last-of-type,:root:not([dir=rtl]) .genius-card__identifier-text:last-of-type{margin-right:0}:host([dir=rtl]) .genius-card__identifier-text:last-of-type,:root[dir=rtl] .genius-card__identifier-text:last-of-type{margin-left:0}.genius-card__identifier-text.genius-card__identifier-text--critical{color:RGB(var(--now-color_alert--critical-2,200,60,54))}.genius-card__identifier-text.-global{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.genius-card__identifier-text.-bottom-margin{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier-font-size-sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier-font-size-md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier-font-size-lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier-font-size-xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__label-values{margin-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker,:root:not([dir=rtl]) .genius-card__marker{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__marker,:root[dir=rtl] .genius-card__marker{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker.-mini,:root:not([dir=rtl]) .genius-card__marker.-mini{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__marker.-mini,:root[dir=rtl] .genius-card__marker.-mini{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__marker.genius-card__marker--icon{margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy) + .5rem*var(--classicsponlydonotuse--rem-multipy) + 1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker.genius-card__marker--icon,:root:not([dir=rtl]) .genius-card__marker.genius-card__marker--icon{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__marker.genius-card__marker--icon,:root[dir=rtl] .genius-card__marker.genius-card__marker--icon{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker.genius-card__marker--icon.-global,:root:not([dir=rtl]) .genius-card__marker.genius-card__marker--icon.-global{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}:host([dir=rtl]) .genius-card__marker.genius-card__marker--icon.-global,:root[dir=rtl] .genius-card__marker.genius-card__marker--icon.-global{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),.genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini){margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy) + .5rem*var(--classicsponlydonotuse--rem-multipy) + 1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:host(:not([dir=rtl])) .genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:root:not([dir=rtl]) .genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:root:not([dir=rtl]) .genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini){margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:host([dir=rtl]) .genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:root[dir=rtl] .genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:root[dir=rtl] .genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini){margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}@media only screen and (max-width:576px){.genius-card__marker--icon{display:none}}.divider-primary{background-color:RGB(var(--now-color_divider--primary,var(--now-color--neutral-7,135,147,148)))}.divider-primary,.divider-secondary{height:1px;margin:0;padding:0;width:100%}.divider-secondary{background-color:RGB(var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))}.divider-tertiary{background:RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));height:1px;margin:0;padding:0;width:100%}@media(forced-colors:active){.divider-primary,.divider-secondary,.divider-tertiary{background:canvastext!important}}.nlq-card-container{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container .pills-container{margin-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container .pills-container .choose-table-label{display:inline-block;margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .nlq-card-container .pills-container .choose-table-label,:root:not([dir=rtl]) .nlq-card-container .pills-container .choose-table-label{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .nlq-card-container .pills-container .choose-table-label,:root[dir=rtl] .nlq-card-container .pills-container .choose-table-label{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container .preview-label{display:inline-block;margin:calc(1rem*var(--classicsponlydonotuse--rem-multipy)) 0}.nlq-card-container .record-list-container{margin:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0}.nlq-card-container .record-list-container .now-list-loading-container{align-items:center;display:flex;height:calc(12.5rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center}.nlq-card-container .active-table-name{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.nlq-card-container .active-table-label{margin-bottom:calc(-1rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container .nlq-gr-link{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container span.nlq-multitable-dropdown{margin-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));width:calc(13.5rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable{min-height:calc(28.125rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable .record-list-container{align-items:center;display:flex;justify-content:center;min-height:calc(15rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.nlq-multitable .record-list-container now-list{width:100%}.nlq-multitable .record-list-container now-loader{margin:auto}.nlq-multitable h3{margin:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0}.nlq-multitable p{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:0}.nlq-multitable now-select{margin:0;width:calc(13.5rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable .preview-label{margin:0}.nlq-multitable .nlq-error-body{align-items:center;display:flex;height:calc(18.75rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center}.nlq-multitable .nlq-error-body .nlq-error-body-contents{height:calc(2.5625rem*var(--classicsponlydonotuse--rem-multipy));text-align:center;width:calc(27.5rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable .nlq-error-body .nlq-error-body-contents now-icon{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(-.25rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable .nlq-error-body .nlq-error-body-contents .nlq-error-title{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600}.nlq-multitable .nlq-error-body .nlq-error-body-contents .nlq-error-detail{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400;margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host{--synthesized-gr-gradient_color--top:var( --nass-synthesized-gr-gradient_color--top );--synthesized-gr-gradient_color--bottom:var( --nass-synthesized-gr-gradient_color--bottom );--synthesized-gr-sparkle-gradient_color--top:var( --nass-synthesized-gr-sparkle-gradient_color--top );--synthesized-gr-sparkle-gradient_color--bottom:var( --nass-synthesized-gr-sparkle-gradient_color--bottom );--card-background_color:var(--genius-card_color--background)}.genius-card-thumbnail{background-color:var(--card-background_color,RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))}.genius-card-thumbnail .genius-card-thumbnail-body{display:flex}.genius-card-thumbnail .genius-card-thumbnail-body .genius-card-body__column{display:flex;justify-content:flex-start}.genius-card-thumbnail .genius-card-header,.genius-card-thumbnail .genius-card_nlq__description-text{-webkit-line-clamp:1;-webkit-box-orient:vertical;color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:-webkit-box;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis}.genius-card-thumbnail .genius-card_nlq__description-text{display:block;margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.popover-content-main .kb-card{min-width:calc(9.375rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kb-card .kb-card-container{display:flex;flex-direction:column;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kb-card .kb-card-container .header{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kb-card .kb-card-container .header now-icon{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));line-height:1}.popover-content-main .kb-card .kb-card-container .header now-image{max-width:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kg-card{min-width:calc(9.375rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kg-card .kg-card-container{display:flex;flex-direction:column;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kg-card .kg-card-container .header{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kg-card .kg-card-container .header now-icon{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));line-height:1.5}.popover-content-main .kg-card .kg-card-container .header now-image{max-width:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .catalog-card{display:flex;flex-direction:row;max-width:calc(35rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .catalog-card.-has-picture{gap:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .catalog-card.-has-picture .catalog-image now-image{height:100%}.popover-content-main .catalog-card .catalog-description{color:--now-color_text--primary;display:flex;flex-direction:column;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popover-content-main .catalog-card .catalog-description .details{display:flex;flex-direction:column;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .catalog-card .catalog-description .details .header{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600;overflow:hidden;text-overflow:ellipsis}.popover-content-main .catalog-card .catalog-description .actions{display:flex;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .people-card{min-width:calc(18.75rem*var(--classicsponlydonotuse--rem-multipy));padding:0}.popover-content-main .people-card .header-container{display:flex;flex-direction:row;gap:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .people-card .header-container .title-container{display:flex;flex-direction:column;width:100%}.popover-content-main .people-card .header-container .title-container .name{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600;overflow:hidden;text-overflow:ellipsis}.popover-content-main .people-card .header-container .title-container .department{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .people-card .header-container .title-container .info-container{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.citation-popover .kb-trigger{background:none;border:none;border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));cursor:pointer;padding:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.citation-popover .kb-trigger::-moz-focus-inner{border-style:none}.citation-popover .kb-trigger:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.citation-popover .kb-trigger:focus{outline:1px solid highlight}}.view-records-popover .header{display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.view-records-popover .header,.view-records-popover .header now-icon{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.view-records-popover .header now-icon{line-height:1.5}.view-records-popover .popover-content ul{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.view-records-popover .popover-content ul li::marker{color:RGB(var(--now-color--link-4,1,89,107))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text{padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ol,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text p,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul{margin-block-end:0;margin-block-start:0}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text li{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ol,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul{list-style-position:outside;margin-left:20px;padding-left:0}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul ul,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul ul ul,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul ul ul ul,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul ul ul ul ul{list-style-type:disc;margin-left:20px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul{font-size:inherit;line-height:inherit;list-style-position:outside;list-style-type:disc;margin-block-end:0;margin-block-start:0;margin-left:20px;padding-left:0}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul.level-1{margin-left:40px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul.level-2{margin-left:60px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul.level-3{margin-left:80px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul.level-4{margin-left:100px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-li{margin:0;margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding:0}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-dot{display:none}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text a{color:RGB(var(--now-text-link--primary--color,var(--now-color--secondary-1,1,119,142)))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text a:hover{color:RGB(var(--now-text-link--primary--color--hover,var(--now-color--secondary-2,1,89,107)))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text a:active{color:RGB(var(--now-text-link--primary--color--active,var(--now-color--secondary-3,1,60,71)))}.streaming-text-and-action-wrapper .streaming-text-wrapper .buttons-container{align-items:center;display:flex;flex-direction:row;justify-content:flex-end}.streaming-text-and-action-wrapper .streaming-text-wrapper .buttons-container .show-more,.streaming-text-and-action-wrapper .streaming-text-wrapper .buttons-container.-global .show-more{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .streaming-text-and-action-wrapper .hand_over_to_va,:root:not([dir=rtl]) .streaming-text-and-action-wrapper .hand_over_to_va{margin-left:auto}:host([dir=rtl]) .streaming-text-and-action-wrapper .hand_over_to_va,:root[dir=rtl] .streaming-text-and-action-wrapper .hand_over_to_va{margin-right:auto}.streaming-text-and-action-wrapper .follow-up-btn-content{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));white-space:nowrap}@media only screen and (max-width:576px){.streaming-text-and-action-wrapper .streaming-text-wrapper .buttons-container{align-items:flex-start;flex-direction:column}:host(:not([dir=rtl])) .streaming-text-and-action-wrapper .buttons-container .hand_over_to_va,:root:not([dir=rtl]) .streaming-text-and-action-wrapper .buttons-container .hand_over_to_va{margin-left:0}:host([dir=rtl]) .streaming-text-and-action-wrapper .buttons-container .hand_over_to_va,:root[dir=rtl] .streaming-text-and-action-wrapper .buttons-container .hand_over_to_va{margin-right:0}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.genius-card-footer-container-followup .genius-card-footer-followup{margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-container{background-color:var(--card-background_color,RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));border:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));box-sizing:border-box;padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative}.genius-card-container.-onebox{border:none;border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-container.-onebox.-global{box-shadow:none}.genius-card-container.-thumbnail{border:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));cursor:pointer;height:calc(7.25rem*var(--classicsponlydonotuse--rem-multipy));max-width:calc(11.5rem*var(--classicsponlydonotuse--rem-multipy));min-width:calc(11.5rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden}.genius-card-container.-sythesized{border-image:linear-gradient(180deg,var(--synthesized-gr-gradient_color--top,RGB(var(--now-color_grouped--teal-3,88,148,139))) 0,var(--synthesized-gr-gradient_color--bottom,RGB(var(--now-color_grouped--green-1,185,200,171))) 100%) 1;border-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) solid;border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))!important;position:relative}.genius-card-container.-active{border:2px solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.genius-card-header{display:flex;justify-content:space-between;margin-bottom:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header .genius-card-header__element .synthesized-gr-highlighted-text-container{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header .genius-card-header__element .synthesized-gr-highlighted-text-container .synthesized-gr-highlighted-text{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.genius-card-header__element{display:flex}.genius-card-header__element:first-of-type{margin-bottom:0;margin-top:0}:host(:not([dir=rtl])) .genius-card-header__element:first-of-type,:root:not([dir=rtl]) .genius-card-header__element:first-of-type{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__element:first-of-type,:root[dir=rtl] .genius-card-header__element:first-of-type{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__element:first-of-type,:root:not([dir=rtl]) .genius-card-header__element:first-of-type{margin-left:0}:host([dir=rtl]) .genius-card-header__element:first-of-type,:root[dir=rtl] .genius-card-header__element:first-of-type{margin-right:0}.genius-card-header__element:nth-of-type(2){margin:0 0 0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header__element .header-highlighted-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host(:not([dir=rtl])) .genius-card-header__element .genius-card-about-container,:root:not([dir=rtl]) .genius-card-header__element .genius-card-about-container{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__element .genius-card-about-container,:root[dir=rtl] .genius-card-header__element .genius-card-about-container{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header__feedback{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.3333}:host(:not([dir=rtl])) .genius-card-header__feedback,:root:not([dir=rtl]) .genius-card-header__feedback{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback,:root[dir=rtl] .genius-card-header__feedback{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__feedback,:root:not([dir=rtl]) .genius-card-header__feedback{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback,:root[dir=rtl] .genius-card-header__feedback{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header__feedback-separator{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.3333}:host(:not([dir=rtl])) .genius-card-header__feedback-separator,:root:not([dir=rtl]) .genius-card-header__feedback-separator{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback-separator,:root[dir=rtl] .genius-card-header__feedback-separator{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__feedback-separator,:root:not([dir=rtl]) .genius-card-header__feedback-separator{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback-separator,:root[dir=rtl] .genius-card-header__feedback-separator{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__feedback-separator,:root:not([dir=rtl]) .genius-card-header__feedback-separator{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback-separator,:root[dir=rtl] .genius-card-header__feedback-separator{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-header__feedback-separator,:root:not([dir=rtl]) .genius-card-header__feedback-separator{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-header__feedback-separator,:root[dir=rtl] .genius-card-header__feedback-separator{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-body{display:flex;height:auto}.genius-card-body.-min-height{min-height:calc(8.79375rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__text{margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__text:first-of-type{margin-top:0}.genius-card-body__column{display:flex;flex-direction:column;justify-content:flex-start}.genius-card-body__column:last-of-type{flex-grow:1}.genius-card-body__column.-truncate{overflow:hidden}.genius-card-feedback-wrapper{display:flex;justify-content:space-between}.genius-card-feedback-wrapper.margin-top{margin-top:calc(.625rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-feedback-wrapper.align-content{align-items:center}.genius-card-feedback-wrapper.align-for-demo{flex-direction:column}.genius-card-footer-container{display:flex;flex-direction:column}.genius-card-footer{align-items:baseline;display:flex;min-width:0;width:80%}.genius-card-action-link-citation-control{align-items:center;display:flex;flex-direction:row}:host(:not([dir=rtl])) .genius-card-action-link-citation-control,:root:not([dir=rtl]) .genius-card-action-link-citation-control{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-link-citation-control,:root[dir=rtl] .genius-card-action-link-citation-control{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-link-citation-control now-image{max-width:calc(1.5625rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-link-citation-control now-text-link{line-height:3}.genius-card-action-label-mini{display:flex;flex-direction:row;margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-label-mini .source-label{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-label-mini .genius-card-action-citation-image-mini{padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-action-label-mini .genius-card-action-citation-image-mini,:root:not([dir=rtl]) .genius-card-action-label-mini .genius-card-action-citation-image-mini{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-label-mini .genius-card-action-citation-image-mini,:root[dir=rtl] .genius-card-action-label-mini .genius-card-action-citation-image-mini{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-label{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-action-label,:root:not([dir=rtl]) .genius-card-action-label{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-label,:root[dir=rtl] .genius-card-action-label{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-body-attachment{padding-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer-label{--now-button--bare--font-weight:400}:host(:not([dir=rtl])) .genius-card-action-link,:root:not([dir=rtl]) .genius-card-action-link{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-link,:root[dir=rtl] .genius-card-action-link{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-template{max-width:calc(20rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.attachment-content__main{max-width:calc(22.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.attachment-content__main-heading-link-icon{position:absolute;right:0}.attachment-content_card{display:flex;flex:1 1 auto;flex-direction:row;margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));position:relative}:host(:not([dir=rtl])) .attachment-content_card,:root:not([dir=rtl]) .attachment-content_card{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .attachment-content_card,:root[dir=rtl] .attachment-content_card{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-action-link-image,:root:not([dir=rtl]) .genius-card-action-link-image{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-link-image,:root[dir=rtl] .genius-card-action-link-image{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-action-link-image,:root:not([dir=rtl]) .genius-card-action-link-image{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-link-image,:root[dir=rtl] .genius-card-action-link-image{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer__control{align-items:flex-start;display:flex;flex-direction:column;margin-bottom:0;margin-top:0}:host(:not([dir=rtl])) .genius-card-footer__control,:root:not([dir=rtl]) .genius-card-footer__control{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-footer__control,:root[dir=rtl] .genius-card-footer__control{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-footer__control,:root:not([dir=rtl]) .genius-card-footer__control{margin-left:0}:host([dir=rtl]) .genius-card-footer__control,:root[dir=rtl] .genius-card-footer__control{margin-right:0}.genius-card-footer__control now-text-link{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer__control.-genius-links{align-items:center;flex-direction:row;flex-wrap:wrap;width:100%}.genius-card-action-card{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-card-content{align-items:center;display:flex;flex-direction:row;height:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}:host(:not([dir=rtl])) .genius-card-action-card-content now-image,:root:not([dir=rtl]) .genius-card-action-card-content now-image{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-action-card-content now-image,:root[dir=rtl] .genius-card-action-card-content now-image{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-action-citation{-webkit-box-orient:vertical;display:-webkit-box;max-width:calc(10.5rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis}@media only screen and (max-width:576px){.genius-card-container{box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));height:100%}.genius-card-feedback-wrapper.align-content{align-items:flex-end}.genius-card-footer{flex-direction:column}.genius-card-footer>.genius-card-footer__control:not(:last-child){margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer__control,.genius-card-footer__control now-button{width:100%}.genius-card-footer__control.-genius-links{align-items:flex-start;flex-direction:column}:host(:not([dir=rtl])) .genius-card-header__feedback,:root:not([dir=rtl]) .genius-card-header__feedback{margin-left:unset!important}:host([dir=rtl]) .genius-card-header__feedback,:root[dir=rtl] .genius-card-header__feedback{margin-right:unset!important}}@media only screen and (max-width:767px){.genius-card-body,.genius-card-header{flex-direction:column}.genius-card-feedback-wrapper.align-content{align-items:flex-end}.genius-card-footer-container{flex-direction:column}.genius-card-footer.-global{flex-direction:column;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-footer__control.-genius-links{align-items:flex-start;flex-direction:column}.genius-card-feedback-container{position:unset!important;top:unset!important}:host(:not([dir=rtl])) .genius-card-feedback-container,:root:not([dir=rtl]) .genius-card-feedback-container{right:unset!important}:host([dir=rtl]) .genius-card-feedback-container,:root[dir=rtl] .genius-card-feedback-container{left:unset!important}:host(:not([dir=rtl])) .genius-card-header__feedback.-global,:root:not([dir=rtl]) .genius-card-header__feedback.-global{margin-left:unset!important}:host([dir=rtl]) .genius-card-header__feedback.-global,:root[dir=rtl] .genius-card-header__feedback.-global{margin-right:unset!important}.genius-card-header__feedback-container{margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__marker--avatar.-global,.genius-card__marker--icon.-global,.genius-card__marker--image.-global{margin-top:unset!important}.genius-card__identifier-text{margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-header-section{display:block!important}}.genius-card-feedback-container{align-items:flex-end;bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex;flex-direction:column}.genius-card-feedback-container.align-for-demo{flex-direction:row-reverse}.genius-card-header-section{display:inline}.genius-card-about-container{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.3333}:host(:not([dir=rtl])) .genius-card-about-container .genius-card__about,:root:not([dir=rtl]) .genius-card-about-container .genius-card__about{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-about-container .genius-card__about,:root[dir=rtl] .genius-card-about-container .genius-card__about{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card-about-container .genius-card__about-separator{color:RGB(var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))}:host(:not([dir=rtl])) .genius-card-about-container .genius-card__about-separator,:root:not([dir=rtl]) .genius-card-about-container .genius-card__about-separator{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-about-container .genius-card__about-separator,:root[dir=rtl] .genius-card-about-container .genius-card__about-separator{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card-about-container .genius-card__about-separator,:root:not([dir=rtl]) .genius-card-about-container .genius-card__about-separator{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card-about-container .genius-card__about-separator,:root[dir=rtl] .genius-card-about-container .genius-card__about-separator{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.genius-card__description.-mini{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-text{-webkit-line-clamp:2;margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-text,.genius-card__description-text.-global{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.genius-card__description-text.-global{-webkit-line-clamp:14}.genius-card__description-text.genius-card__description-text-mini{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.genius-card__description-text:first-of-type{margin-top:0}.genius-card__description-font-size-sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-font-size-md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-font-size-lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description-font-size-xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__description--stacked{margin:0;padding:0}.genius-card__description-container pre{white-space:pre-wrap}.genius-card__description-container table{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;flex-wrap:nowrap}.genius-card__description-container table p{margin:0}.genius-card__description-container tr{display:flex;flex-direction:row;flex-wrap:nowrap;width:100%}.genius-card__description-container td{display:flex;flex-basis:0;flex-flow:row wrap;flex-grow:1}.genius-card__description-container ol,.genius-card__description-container p{margin:0}.genius-card__description-container .description-wrapper{position:relative;width:100%}.genius-card__description-container .description-wrapper.-global{width:100ch}.genius-card__description-container .description-wrapper.-mini{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;width:100%}.genius-card__description-container .description-wrapper.-mini h1,.genius-card__description-container .description-wrapper.-mini h2,.genius-card__description-container .description-wrapper.-mini h3,.genius-card__description-container .description-wrapper.-mini h4,.genius-card__description-container .description-wrapper.-mini h5,.genius-card__description-container .description-wrapper.-mini h6{margin:0}.genius-card__description-container .description-wrapper.-collapsed{overflow:clip}.genius-card__description-container .description-wrapper.-collapsed .collapsible__description-text{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.sythesized-text-wrapper .hand_over_to_va{margin:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0}.sythesized-text-wrapper .sythesized-text-container ol,.sythesized-text-wrapper .sythesized-text-container p,.sythesized-text-wrapper .sythesized-text-container ul{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.sythesized-text-wrapper .sythesized-text-container.-collapsed{overflow:clip}.sythesized-text-wrapper .sythesized-text-container.-collapsed .collapsible__description-text{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.sythesized-text-wrapper .sythesized-text-container a{color:RGB(var(--now-text-link--primary--color,var(--now-color--secondary-1,1,119,142)))}.sythesized-text-wrapper .sythesized-text-container a:hover{color:RGB(var(--now-text-link--primary--color--hover,var(--now-color--secondary-2,1,89,107)))}.sythesized-text-wrapper .sythesized-text-container a:active{color:RGB(var(--now-text-link--primary--color--active,var(--now-color--secondary-3,1,60,71)))}.sythesized-text-wrapper .buttons-container{align-items:center;display:flex;flex-direction:row;justify-content:flex-end}.sythesized-text-wrapper .buttons-container .show-more{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sythesized-text-wrapper .buttons-container .show-more,:root:not([dir=rtl]) .sythesized-text-wrapper .buttons-container .show-more{margin-right:auto}:host([dir=rtl]) .sythesized-text-wrapper .buttons-container .show-more,:root[dir=rtl] .sythesized-text-wrapper .buttons-container .show-more{margin-left:auto}.sythesized-text-wrapper .buttons-container.-global .show-more{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sythesized-text-wrapper .buttons-container .hand_over_to_va,:root:not([dir=rtl]) .sythesized-text-wrapper .buttons-container .hand_over_to_va{margin-left:auto}:host([dir=rtl]) .sythesized-text-wrapper .buttons-container .hand_over_to_va,:root[dir=rtl] .sythesized-text-wrapper .buttons-container .hand_over_to_va{margin-right:auto}:host(:not([dir=rtl])) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va,:root:not([dir=rtl]) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va{margin-left:auto}:host([dir=rtl]) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va,:root[dir=rtl] .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va{margin-right:auto}.sythesized-text-wrapper .buttons-container .follow-up-btn-content{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));white-space:nowrap}@media only screen and (max-width:1020px){.genius-card__description-container .description-wrapper,.genius-card__description-container .description-wrapper.-global{width:100%}}@media only screen and (max-width:576px){.sythesized-text-wrapper .buttons-container{align-items:flex-start;flex-direction:column}:host(:not([dir=rtl])) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va,:root:not([dir=rtl]) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va{margin-left:0}:host([dir=rtl]) .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va,:root[dir=rtl] .sythesized-text-wrapper .buttons-container.-global .hand_over_to_va{margin-right:0}}.genius-card__heading-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));display:-webkit-box;font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis}.genius-card__heading-text-mini,.genius-card__heading-text-onebox-mobile{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.genius-card__heading-font-size-sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__heading-font-size-md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__heading-font-size-lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__heading-font-size-xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier,.genius-card__identifier-text{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.genius-card__identifier-text{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}:host(:not([dir=rtl])) .genius-card__identifier-text,:root:not([dir=rtl]) .genius-card__identifier-text{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__identifier-text,:root[dir=rtl] .genius-card__identifier-text{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__identifier-text:last-of-type,:root:not([dir=rtl]) .genius-card__identifier-text:last-of-type{margin-right:0}:host([dir=rtl]) .genius-card__identifier-text:last-of-type,:root[dir=rtl] .genius-card__identifier-text:last-of-type{margin-left:0}.genius-card__identifier-text.genius-card__identifier-text--critical{color:RGB(var(--now-color_alert--critical-2,200,60,54))}.genius-card__identifier-text.-global{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.genius-card__identifier-text.-bottom-margin{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier-font-size-sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier-font-size-md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier-font-size-lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__identifier-font-size-xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__label-values{margin-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker,:root:not([dir=rtl]) .genius-card__marker{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__marker,:root[dir=rtl] .genius-card__marker{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker.-mini,:root:not([dir=rtl]) .genius-card__marker.-mini{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__marker.-mini,:root[dir=rtl] .genius-card__marker.-mini{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.genius-card__marker.genius-card__marker--icon{margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy) + .5rem*var(--classicsponlydonotuse--rem-multipy) + 1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker.genius-card__marker--icon,:root:not([dir=rtl]) .genius-card__marker.genius-card__marker--icon{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__marker.genius-card__marker--icon,:root[dir=rtl] .genius-card__marker.genius-card__marker--icon{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker.genius-card__marker--icon.-global,:root:not([dir=rtl]) .genius-card__marker.genius-card__marker--icon.-global{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}:host([dir=rtl]) .genius-card__marker.genius-card__marker--icon.-global,:root[dir=rtl] .genius-card__marker.genius-card__marker--icon.-global{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),.genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini){margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy) + .5rem*var(--classicsponlydonotuse--rem-multipy) + 1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:host(:not([dir=rtl])) .genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:root:not([dir=rtl]) .genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:root:not([dir=rtl]) .genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini){margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:host([dir=rtl]) .genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:root[dir=rtl] .genius-card__marker.genius-card__marker--avatar.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini),:root[dir=rtl] .genius-card__marker.genius-card__marker--image.-global:not(.genius-card__marker.genius-card__marker--image.-mini,.genius-card__marker.genius-card__marker--avatar.-mini){margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}@media only screen and (max-width:576px){.genius-card__marker--icon{display:none}}.divider-primary{background-color:RGB(var(--now-color_divider--primary,var(--now-color--neutral-7,135,147,148)))}.divider-primary,.divider-secondary{height:1px;margin:0;padding:0;width:100%}.divider-secondary{background-color:RGB(var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))}.divider-tertiary{background:RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));height:1px;margin:0;padding:0;width:100%}@media(forced-colors:active){.divider-primary,.divider-secondary,.divider-tertiary{background:canvastext!important}}.nlq-card-container{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container .pills-container{margin-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container .pills-container .choose-table-label{display:inline-block;margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .nlq-card-container .pills-container .choose-table-label,:root:not([dir=rtl]) .nlq-card-container .pills-container .choose-table-label{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .nlq-card-container .pills-container .choose-table-label,:root[dir=rtl] .nlq-card-container .pills-container .choose-table-label{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container .preview-label{display:inline-block;margin:calc(1rem*var(--classicsponlydonotuse--rem-multipy)) 0}.nlq-card-container .record-list-container{margin:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0}.nlq-card-container .record-list-container .now-list-loading-container{align-items:center;display:flex;height:calc(12.5rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center}.nlq-card-container .active-table-name{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.nlq-card-container .active-table-label{margin-bottom:calc(-1rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container .nlq-gr-link{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-card-container span.nlq-multitable-dropdown{margin-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));width:calc(13.5rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable{min-height:calc(28.125rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable .record-list-container{align-items:center;display:flex;justify-content:center;min-height:calc(15rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.nlq-multitable .record-list-container now-list{width:100%}.nlq-multitable .record-list-container now-loader{margin:auto}.nlq-multitable h3{margin:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0}.nlq-multitable p{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:0}.nlq-multitable now-select{margin:0;width:calc(13.5rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable .preview-label{margin:0}.nlq-multitable .nlq-error-body{align-items:center;display:flex;height:calc(18.75rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center}.nlq-multitable .nlq-error-body .nlq-error-body-contents{height:calc(2.5625rem*var(--classicsponlydonotuse--rem-multipy));text-align:center;width:calc(27.5rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable .nlq-error-body .nlq-error-body-contents now-icon{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(-.25rem*var(--classicsponlydonotuse--rem-multipy))}.nlq-multitable .nlq-error-body .nlq-error-body-contents .nlq-error-title{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600}.nlq-multitable .nlq-error-body .nlq-error-body-contents .nlq-error-detail{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400;margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host{--synthesized-gr-gradient_color--top:var( --nass-synthesized-gr-gradient_color--top );--synthesized-gr-gradient_color--bottom:var( --nass-synthesized-gr-gradient_color--bottom );--synthesized-gr-sparkle-gradient_color--top:var( --nass-synthesized-gr-sparkle-gradient_color--top );--synthesized-gr-sparkle-gradient_color--bottom:var( --nass-synthesized-gr-sparkle-gradient_color--bottom );--card-background_color:var(--genius-card_color--background)}.genius-card-thumbnail{background-color:var(--card-background_color,RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))}.genius-card-thumbnail .genius-card-thumbnail-body{display:flex}.genius-card-thumbnail .genius-card-thumbnail-body .genius-card-body__column{display:flex;justify-content:flex-start}.genius-card-thumbnail .genius-card-header,.genius-card-thumbnail .genius-card_nlq__description-text{-webkit-line-clamp:1;-webkit-box-orient:vertical;color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:-webkit-box;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis}.genius-card-thumbnail .genius-card_nlq__description-text{display:block;margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.popover-content-main .kb-card{min-width:calc(9.375rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kb-card .kb-card-container{display:flex;flex-direction:column;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kb-card .kb-card-container .header{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kb-card .kb-card-container .header now-icon{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));line-height:1}.popover-content-main .kb-card .kb-card-container .header now-image{max-width:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kg-card{min-width:calc(9.375rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kg-card .kg-card-container{display:flex;flex-direction:column;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kg-card .kg-card-container .header{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .kg-card .kg-card-container .header now-icon{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));line-height:1.5}.popover-content-main .kg-card .kg-card-container .header now-image{max-width:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .catalog-card{display:flex;flex-direction:row;max-width:calc(35rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .catalog-card.-has-picture{gap:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .catalog-card.-has-picture .catalog-image now-image{height:100%}.popover-content-main .catalog-card .catalog-description{color:--now-color_text--primary;display:flex;flex-direction:column;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popover-content-main .catalog-card .catalog-description .details{display:flex;flex-direction:column;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .catalog-card .catalog-description .details .header{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600;overflow:hidden;text-overflow:ellipsis}.popover-content-main .catalog-card .catalog-description .actions{display:flex;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .people-card{min-width:calc(18.75rem*var(--classicsponlydonotuse--rem-multipy));padding:0}.popover-content-main .people-card .header-container{display:flex;flex-direction:row;gap:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .people-card .header-container .title-container{display:flex;flex-direction:column;width:100%}.popover-content-main .people-card .header-container .title-container .name{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600;overflow:hidden;text-overflow:ellipsis}.popover-content-main .people-card .header-container .title-container .department{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.popover-content-main .people-card .header-container .title-container .info-container{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.citation-popover .kb-trigger{background:none;border:none;border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));cursor:pointer;padding:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.citation-popover .kb-trigger::-moz-focus-inner{border-style:none}.citation-popover .kb-trigger:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.citation-popover .kb-trigger:focus{outline:1px solid highlight}}.view-records-popover .header{display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.view-records-popover .header,.view-records-popover .header now-icon{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.view-records-popover .header now-icon{line-height:1.5}.view-records-popover .popover-content ul{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.view-records-popover .popover-content ul li::marker{color:RGB(var(--now-color--link-4,1,89,107))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text{padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ol,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text p,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul{margin-block-end:0;margin-block-start:0}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text li{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ol,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul{list-style-position:outside;margin-left:20px;padding-left:0}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul ul,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul ul ul,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul ul ul ul,.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text ul ul ul ul ul{list-style-type:disc;margin-left:20px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul{font-size:inherit;line-height:inherit;list-style-position:outside;list-style-type:disc;margin-block-end:0;margin-block-start:0;margin-left:20px;padding-left:0}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul.level-1{margin-left:40px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul.level-2{margin-left:60px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul.level-3{margin-left:80px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-ul.level-4{margin-left:100px}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-li{margin:0;margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding:0}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text .ghost-dot{display:none}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text a{color:RGB(var(--now-text-link--primary--color,var(--now-color--secondary-1,1,119,142)))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text a:hover{color:RGB(var(--now-text-link--primary--color--hover,var(--now-color--secondary-2,1,89,107)))}.streaming-text-and-action-wrapper .streaming-text-wrapper .streaming-text-container .streaming-text a:active{color:RGB(var(--now-text-link--primary--color--active,var(--now-color--secondary-3,1,60,71)))}.streaming-text-and-action-wrapper .streaming-text-wrapper .buttons-container{align-items:center;display:flex;flex-direction:row;justify-content:flex-end}.streaming-text-and-action-wrapper .streaming-text-wrapper .buttons-container .show-more,.streaming-text-and-action-wrapper .streaming-text-wrapper .buttons-container.-global .show-more{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .streaming-text-and-action-wrapper .hand_over_to_va,:root:not([dir=rtl]) .streaming-text-and-action-wrapper .hand_over_to_va{margin-left:auto}:host([dir=rtl]) .streaming-text-and-action-wrapper .hand_over_to_va,:root[dir=rtl] .streaming-text-and-action-wrapper .hand_over_to_va{margin-right:auto}.streaming-text-and-action-wrapper .follow-up-btn-content{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));white-space:nowrap}@media only screen and (max-width:576px){.streaming-text-and-action-wrapper .streaming-text-wrapper .buttons-container{align-items:flex-start;flex-direction:column}:host(:not([dir=rtl])) .streaming-text-and-action-wrapper .buttons-container .hand_over_to_va,:root:not([dir=rtl]) .streaming-text-and-action-wrapper .buttons-container .hand_over_to_va{margin-left:0}:host([dir=rtl]) .streaming-text-and-action-wrapper .buttons-container .hand_over_to_va,:root[dir=rtl] .streaming-text-and-action-wrapper .buttons-container .hand_over_to_va{margin-right:0}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-line-height-crop{display:block}.now-line-height-crop:after,.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-line-height-crop+.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-line-height-crop--sm{display:block}.now-line-height-crop--sm:after,.now-line-height-crop--sm:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop--sm:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-line-height-crop--sm:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-line-height-crop--sm+.now-line-height-crop--sm{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-heading--lg,.now-heading--md,.now-heading--xl{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-weight:600}.now-heading--md{font-size:var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy)))}.now-heading--lg{font-size:var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy)))}.now-heading--xl{font-size:var(--now-font-size--xl,calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--normal{font-weight:400}.now-text--semibold{font-weight:600}.now-text--bold{font-weight:700}.now-text--sm{font-size:var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--md{font-size:var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--lg{font-size:var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--primary{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.now-text--secondary{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))}.now-text--tertiary{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.main-content-title{-webkit-line-clamp:2;align-items:center;color:RGB(var(--now-display-type--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))));display:-webkit-box;display:flex;flex-direction:row;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.25;margin:0;overflow:hidden;text-overflow:ellipsis}.main-content-title:focus-within{overflow:visible}.main-content-title:focus-within .title-link{border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));outline:1px solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline-offset:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.title-link{overflow:visible;text-overflow:ellipsis}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.title-font-size-sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.title-font-size-md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.title-font-size-lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.title-font-size-xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.summaryText{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:RGB(var(--now-display-type--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))));display:-webkit-box;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0;overflow:hidden;text-overflow:ellipsis;width:95%}.summaryText.emptyLabelValue{margin-bottom:0}.summaryText p{display:inline}.summary-font-size-sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.summary-font-size-md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.summary-font-size-lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.summary-font-size-xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.summary-text-raw-response{width:80%}.header-section{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.header-section .header-section__identifier-container{-webkit-line-clamp:1;-webkit-box-orient:vertical;align-items:normal;display:-webkit-box;display:flex;flex-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}.header-section .header-section__identifier-container:has(.header-section__identifier){min-height:18px}.header-section .header-section__identifier-container .header-section__identifier{min-width:0;overflow:hidden}.header-section .header-section__identifier-container .open-in-new-tab-button{position:absolute}:host(:not([dir=rtl])) .header-section .header-section__identifier-container .open-in-new-tab-button,:root:not([dir=rtl]) .header-section .header-section__identifier-container .open-in-new-tab-button{right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .header-section .header-section__identifier-container .open-in-new-tab-button,:root[dir=rtl] .header-section .header-section__identifier-container .open-in-new-tab-button{left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.header-section .header-section__identifier_icon{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}:host(:not([dir=rtl])) .header-section .header-section__identifier_icon,:root:not([dir=rtl]) .header-section .header-section__identifier_icon{margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .header-section .header-section__identifier_icon,:root[dir=rtl] .header-section .header-section__identifier_icon{margin-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.header-section .header-section__feedback-dropdown{display:flex;justify-content:flex-end}.label-value-section{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.label-value-section .label-value-section__stacked{display:flex}.label-value-section .label-value-section__stacked>div{max-width:25%}:host(:not([dir=rtl])) .label-value-section .label-value-section__stacked>div:not(:last-child),:root:not([dir=rtl]) .label-value-section .label-value-section__stacked>div:not(:last-child){padding-right:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .label-value-section .label-value-section__stacked>div:not(:last-child),:root[dir=rtl] .label-value-section .label-value-section__stacked>div:not(:last-child){padding-left:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .label-value-section .label-value-section__separator,:root:not([dir=rtl]) .label-value-section .label-value-section__separator{margin-left:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .label-value-section .label-value-section__separator,:root[dir=rtl] .label-value-section .label-value-section__separator{margin-right:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.label-value-section .label-value-section__inline{overflow:hidden;text-overflow:ellipsis}.footer-content-section__button{padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.attachment-container{flex-wrap:wrap;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.attachment-container,.attachment-content{align-items:center;display:flex;flex-direction:row}.attachment-content{border:1px solid RGBA(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.attachment-content__marker-icon{display:flex;justify-content:flex-start;min-height:calc(1rem*var(--classicsponlydonotuse--rem-multipy));min-width:calc(1rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden}.attachment-content__main{display:flex;flex-direction:row;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.attachment-content__main-heading-link{color:RGBA(var(--now-color--secondary-1,1,119,142));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));text-decoration:none}.attachment-content__main-heading-link::-moz-focus-inner{border-style:none}.attachment-content__main-heading-link:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.attachment-content__main-heading-link:focus{outline:1px solid highlight}}.attachment-content__main-heading-link:hover{color:RGB(var(--now-color--secondary-2,1,89,107));text-decoration:underline}.attachment-content__main-heading-link:active{color:RGB(var(--now-color--secondary-3,1,60,71));text-decoration:underline}.attachment-content__main-heading-link-icon,.attachment-content__main-heading-link:visited{color:RGB(var(--now-color--secondary-1,1,119,142))}:host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );--searchresult-title-highlight--background-color:var( --search-result-title-highlight--background-color,RGB(var(--now-color_alert--warning-1,227,218,96)) );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.card-outer-container{align-items:center;display:flex;flex-direction:row}.card-outer-container.show-card-border{border-bottom:1px solid RGBA(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)))}.card-outer-container.remove-bottom-border{border-bottom:unset!important}.card-outer-container .preview-image-container{align-items:center;display:flex;height:calc(4.375rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;width:auto}:host(:not([dir=rtl])) .card-outer-container .preview-image-container,:root:not([dir=rtl]) .card-outer-container .preview-image-container{margin-left:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .card-outer-container .preview-image-container,:root[dir=rtl] .card-outer-container .preview-image-container{margin-right:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.card-outer-container .preview-image{max-height:100%;max-width:100%;object-fit:contain}.now-card-template{--now-card--border-width:0px;--now-opacity--less:0;--now-card--scale-size-block:0;--now-card--scale-size-inline:0;font-style:normal;font-variant:normal;font-weight:400;height:100%;letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:none;white-space:normal;width:100%;word-spacing:inherit}.now-card-template .now-card-container{display:flex;flex-direction:row;height:100%;padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy)) 0 calc(1rem*var(--classicsponlydonotuse--rem-multipy)) 0;width:70%}.now-card-template .now-card-container.right-panel{width:100%}.now-card-template .now-card-container.right-panel:hover{background-color:RGBA(var(--now-color--primary-0,221,237,233),var(--now-opacity--mid,.5))}.now-card-template .now-card-container.debug-view{padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy)) 0 calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0}.now-card-template .now-card-container.hide-icon{padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.now-card-template .now-card-container .marker-image{flex-shrink:0;max-height:calc(2rem*var(--classicsponlydonotuse--rem-multipy));max-width:calc(2rem*var(--classicsponlydonotuse--rem-multipy));object-fit:contain}.now-card-template .now-card-container .header-content-label,.now-card-template .now-card-container .header-content-section{min-width:0;width:100%}.now-card-template .now-card-container .header-content-section.hasMargin{margin-left:calc(3.7rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-template .now-card-container .header-content-section.panel-view{margin-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-template .now-card-container .marker-icon-placement{align-items:center;justify-content:center}.now-card-template .now-card-container .align-no-header{margin-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-template .now-card-container .add-top-margin{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-template .now-card-container .main-content-marker{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:flex;justify-content:center;min-width:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden}.now-card-template .now-card-container .align-margin{min-height:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .now-card-template .now-card-container .align-margin,:root:not([dir=rtl]) .now-card-template .now-card-container .align-margin{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .now-card-template .now-card-container .align-margin,:root[dir=rtl] .now-card-template .now-card-container .align-margin{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-template .main-content{display:flex;flex-direction:column;margin:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 0 0}.now-card-template .details-container-top{padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.right-panel-view{--now-card--border-width:0px;-webkit-line-clamp:1;-webkit-box-orient:vertical;--now-opacity--less:0;--now-card--scale-size-block:0;--now-card--scale-size-inline:0;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.full-page-view{--now-card--border-width:0px;background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 rgba(23,40,52,.08)}@media(forced-colors:active){.now-card-template:focus .now-card-container *,.now-card-template:hover .now-card-container *{color:highlight;forced-color-adjust:none}.now-card-template .now-card-container *{color:buttontext;forced-color-adjust:none}}mark{background-color:RGB(var(--now-color_alert--warning-1,227,218,96));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-weight:600}@media screen and (max-width:420px){.card-outer-container{align-items:start;flex-direction:column}.preview-image-container{padding-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .preview-image-container,:root:not([dir=rtl]) .preview-image-container{margin-left:calc(2rem*var(--classicsponlydonotuse--rem-multipy))!important}:host([dir=rtl]) .preview-image-container,:root[dir=rtl] .preview-image-container{margin-right:calc(2rem*var(--classicsponlydonotuse--rem-multipy))!important}.now-card-container{padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))!important;width:100%!important}.label-value-section__stacked{flex-direction:column!important}.label-value-section__stacked-item{align-self:flex-start!important;max-width:100%!important}}.raw-response-container{background-color:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)));border-color:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)));border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.25;margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));white-space:pre-wrap;width:max-content}:host(:not([dir=rtl])) .raw-response-container,:root:not([dir=rtl]) .raw-response-container{margin-left:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .raw-response-container,:root[dir=rtl] .raw-response-container{margin-right:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.raw-response-container__text:not(:last-child){display:block;padding-bottom:calc(.375rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .raw-response-container__icon,:root:not([dir=rtl]) .raw-response-container__icon{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .raw-response-container__icon,:root[dir=rtl] .raw-response-container__icon{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.search-results-container--pagination{display:flex;justify-content:center;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .search-results-container--pagination,:root:not([dir=rtl]) .search-results-container--pagination{padding-left:0}:host([dir=rtl]) .search-results-container--pagination,:root[dir=rtl] .search-results-container--pagination{padding-right:0}:host(:not([dir=rtl])) .search-results-container--pagination,:root:not([dir=rtl]) .search-results-container--pagination{padding-right:0}:host([dir=rtl]) .search-results-container--pagination,:root[dir=rtl] .search-results-container--pagination{padding-left:0}.genius-results-container.-global{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:auto}.no-results-message__term{font-weight:600}.no-results-message__description{margin-top:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.no-results-message-container{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));text-align:center}.no-results-message__empty-state-container{height:500px;width:100%}.empty-page-message__empty-page-container{height:500px;text-align:center;width:100%}.search-results-container--panel-footer{display:flex;justify-content:center}.search-results-container--no-header{--now-container--border-width:0px;background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));font-style:normal;font-variant:normal;font-weight:400;letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:none;white-space:normal;word-spacing:inherit}.search-results-container--no-header .global-results-layout{display:flex;flex-direction:column}.search-results-container--no-header .global-search{display:flex;flex-direction:column;width:100%}.search-results-container--no-header.global{width:100%}.search-results-container--no-header now-alert-list{position:absolute;top:calc(-4.375rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.search-results-container--no-header.panel-view{--now-container--border-width:0px}.search-results-container--no-header.raw-view{height:calc(51rem*var(--classicsponlydonotuse--rem-multipy))}#debug-view{height:calc(60rem*var(--classicsponlydonotuse--rem-multipy))}.dropdown-containers{align-items:center;display:flex;flex-shrink:0;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.header-message-container{align-items:baseline;display:flex;flex-direction:row;justify-content:space-between;position:relative}.header-message-container.global{align-items:baseline;display:flex!important;margin-left:0!important;margin-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))!important;margin-top:0!important}.header-message-container.global .header-message-view-all-flex-wrapper{align-items:baseline;display:flex;flex-direction:column;position:relative}.header-message-container.global .wrapper{display:flex;flex-direction:row}.header-message-container.global .show-filters-button-view{float:right;width:100%}.header-message-container.global .header-message-primary{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600;overflow-wrap:anywhere}.header-message-container.global .header-message-primary em{font-weight:700}.header-message-container.global .header-message-secondary{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.header-message-container.na-self-service{margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-top:0}:host(:not([dir=rtl])) .header-message-container.na-self-service,:root:not([dir=rtl]) .header-message-container.na-self-service{margin-left:0}:host([dir=rtl]) .header-message-container.na-self-service,:root[dir=rtl] .header-message-container.na-self-service{margin-right:0}:host(:not([dir=rtl])) .header-message-container.na-self-service,:root:not([dir=rtl]) .header-message-container.na-self-service{margin-right:0}:host([dir=rtl]) .header-message-container.na-self-service,:root[dir=rtl] .header-message-container.na-self-service{margin-left:0}.header-message-container.na-self-service em{font-style:italic;font-weight:700}@media screen and (max-width:770px){.header-message-container{flex-wrap:wrap;justify-content:flex-start;row-gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.header-message-container.global .wrapper{display:flex;flex-direction:column}:host(:not([dir=rtl])) .dropdown-containers .filter__dropdown__views,:root:not([dir=rtl]) .dropdown-containers .filter__dropdown__views{padding-left:0}:host([dir=rtl]) .dropdown-containers .filter__dropdown__views,:root[dir=rtl] .dropdown-containers .filter__dropdown__views{padding-right:0}}.message{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-weight:400}:host(:not([dir=rtl])) .header-message-disclaimer,:root:not([dir=rtl]) .header-message-disclaimer{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .header-message-disclaimer,:root[dir=rtl] .header-message-disclaimer{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.result-count-disclaimer-content{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));max-width:calc(19rem*var(--classicsponlydonotuse--rem-multipy));padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.header-message-font-size-sm,.result-count-disclaimer-content{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.header-message-font-size-md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.header-message-font-size-lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.header-message-font-size-xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.global-list{--now-button--bare--font-weight:400;bottom:0;display:flex;flex-direction:column;margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin-right:0;position:sticky}.global-list>now-button-bare{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.header-message-na-self-service{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400}.header-spellcheck-nass{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:400}.corrected-header-na-self-service{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));font-style:italic;font-weight:700}:host(:not([dir=rtl])) .filter__dropdown__views,:root:not([dir=rtl]) .filter__dropdown__views{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .filter__dropdown__views,:root[dir=rtl] .filter__dropdown__views{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.filter__dropdown__views--label{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:700}:host(:not([dir=rtl])) .filter__dropdown__views>now-dropdown,:root:not([dir=rtl]) .filter__dropdown__views>now-dropdown{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .filter__dropdown__views>now-dropdown,:root[dir=rtl] .filter__dropdown__views>now-dropdown{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}@keyframes loading{0%{left:-100%}to{left:100%}}.loading:after{animation:loading 1.5s infinite;background:linear-gradient(90deg,RGBA(var(--now-color--neutral-0,255,255,255),0),RGBA(var(--now-color--neutral-0,255,255,255),var(--now-opacity--mid,.5)),RGBA(var(--now-color--neutral-0,255,255,255),0));content:\\\"\\\";display:block;height:100%;position:absolute;width:100%}.placeholder-search-results{border:var(--now-container--border-width,1px) solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));display:flex;flex-direction:column;margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.placeholder-search-results .placeholder-search-results-item:not(:last-child){border-bottom:var(--now-container--border-width,1px) solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)))}.placeholder-search-results .placeholder-search-results-item:not(:last-child).panel-view{border-bottom:unset}.placeholder-search-results.panel-view{border:unset}.placeholder-search-result-card{margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;position:relative}:host(:not([dir=rtl])) .placeholder-search-result-card,:root:not([dir=rtl]) .placeholder-search-result-card{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .placeholder-search-result-card,:root[dir=rtl] .placeholder-search-result-card{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .placeholder-search-result-card,:root:not([dir=rtl]) .placeholder-search-result-card{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .placeholder-search-result-card,:root[dir=rtl] .placeholder-search-result-card{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.placeholder-search-result-card .placeholder-search-result-card-container{align-items:center;display:flex;flex-direction:row;height:100%}.placeholder-search-result-card .placeholder-search-results-marker-container{text-align:center}:host(:not([dir=rtl])) .placeholder-search-result-card .placeholder-search-results-marker-container,:root:not([dir=rtl]) .placeholder-search-result-card .placeholder-search-results-marker-container{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .placeholder-search-result-card .placeholder-search-results-marker-container,:root[dir=rtl] .placeholder-search-result-card .placeholder-search-results-marker-container{margin-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.placeholder-search-result-card .placeholder-search-results-content{display:flex;flex-direction:column;height:auto;width:100%}.placeholder-search-result-card .placeholder-search-results-marker{height:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));width:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.placeholder-search-result-card .placeholder-search-results-marker,.placeholder-search-result-card .search-result-title{background-color:RGB(var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.placeholder-search-result-card .search-result-title{height:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));width:25%}.placeholder-search-result-card .search-result-description,.placeholder-search-result-card .search-result-description.-md,.placeholder-search-result-card .search-result-description.-sm{height:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.placeholder-search-result-card .search-result-description.-sm{width:45%}.placeholder-search-result-card .search-result-description.-md,.placeholder-search-result-card .search-result-description.-sm{background-color:RGB(var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.placeholder-search-result-card .search-result-description.-md{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));width:65%}.search-results-container{--now-container--border-width:0px;background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 rgba(23,40,52,.08);font-style:normal;font-variant:normal;font-weight:400;letter-spacing:inherit;padding:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));text-indent:0;text-shadow:none;text-transform:none;white-space:normal;word-spacing:inherit}.search-results-container .global-results-layout{display:flex;flex-direction:column}.search-results-container .global-search{display:flex;flex-direction:column;width:100%}.search-results-container.global{width:100%}.search-results-container now-alert-list{position:absolute;top:calc(-4.375rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.search-results-container.panel-view{--now-container--border-width:0px}.search-results-container.raw-view{height:calc(51rem*var(--classicsponlydonotuse--rem-multipy))}.container-loader{--now-container--border-width:0px;align-items:center;background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));display:flex;height:calc(12.4375rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;padding:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.container-loader.-is-global{box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 rgba(23,40,52,.08)}:host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-line-height-crop{display:block}.now-line-height-crop:after,.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-line-height-crop+.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-line-height-crop--sm{display:block}.now-line-height-crop--sm:after,.now-line-height-crop--sm:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop--sm:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-line-height-crop--sm:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-line-height-crop--sm+.now-line-height-crop--sm{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-heading--lg,.now-heading--md,.now-heading--xl{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-weight:600}.now-heading--md{font-size:var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy)))}.now-heading--lg{font-size:var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy)))}.now-heading--xl{font-size:var(--now-font-size--xl,calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--normal{font-weight:400}.now-text--semibold{font-weight:600}.now-text--bold{font-weight:700}.now-text--sm{font-size:var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--md{font-size:var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--lg{font-size:var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--primary{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.now-text--secondary{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))}.now-text--tertiary{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.loading-steps-container{overflow:hidden;position:relative}.loading-step,.loading-steps-container{height:calc(1.875rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.loading-step{animation:slideUp 8s infinite;bottom:0;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));left:0;line-height:calc(1.875rem*var(--classicsponlydonotuse--rem-multipy));opacity:0;position:absolute;text-align:center}.loading-step:first-child{animation-delay:0s}.loading-step:nth-child(2){animation-delay:2s}.loading-step:nth-child(3){animation-delay:4s}.loading-step:nth-child(4){animation-delay:6s}@keyframes slideUp{0%,20%{opacity:0;transform:translateY(30px)}25%,45%{opacity:1;transform:translateY(0)}50%,70%{opacity:1;transform:translateY(-30px)}75%,to{opacity:0;transform:translateY(-60px)}}.genius-results-loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.genius-results-loading-container .bubble-loader{height:calc(7.8125rem*var(--classicsponlydonotuse--rem-multipy));width:calc(7.8125rem*var(--classicsponlydonotuse--rem-multipy))}:host{--synthesized-gr-gradient_color--top:var(--nass-synthesized-gr-gradient_color--top);--synthesized-gr-gradient_color--bottom:var(--nass-synthesized-gr-gradient_color--bottom);--card-background_color:var(--genius-card_color--background);--sparkle-loading-animated-icon_color:var(--genius-result-sparkle-loading-animated-icon_color)}.synthesized-genius-results-loading-container{display:flex;flex-direction:column;width:100%}.synthesized-genius-results-loading-container .header{align-items:center;display:flex;width:100%}:host(:not([dir=rtl])) .synthesized-genius-results-loading-container .header now-carousel-text,:root:not([dir=rtl]) .synthesized-genius-results-loading-container .header now-carousel-text{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .synthesized-genius-results-loading-container .header now-carousel-text,:root[dir=rtl] .synthesized-genius-results-loading-container .header now-carousel-text{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.synthesized-genius-results-loading-container .skeleton-loader{display:flex;flex-direction:column;gap:10px;inline-size:60vw;margin-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy));max-inline-size:600px;text-align:center}@keyframes skeleton-loader-bones-animation{0%{background-color:RGBA(var(--now-color--neutral-2,228,230,231),1)}50%{background-color:RGBA(var(--now-color--neutral-2,228,230,231),.45)}to{background-color:RGBA(var(--now-color--neutral-2,228,230,231),1)}}.synthesized-genius-results-loading-container .skeleton-loader .skeleton-bone{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:skeleton-loader-bones-animation;animation-timing-function:ease-in-out;background-color:RGB(var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)));block-size:20px;border-radius:50px;display:flex}.synthesized-genius-results-loading-container .skeleton-loader :first-child{animation-delay:0ms;inline-size:100%}.synthesized-genius-results-loading-container .skeleton-loader :nth-child(2){animation-delay:50ms;inline-size:80%}.synthesized-genius-results-loading-container .skeleton-loader :nth-child(3){animation-delay:.1s;inline-size:60%}:host{--carousel-color:var(--carousel-background-color);--carousel-loading-color:var(--carousel-loading-background-color);display:flex;font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));width:100%}now-button-bare{flex:0;max-width:250px;width:100%}.now-data-row-header{align-items:center;display:flex;flex:1;justify-content:space-between;padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-data-row-view-more{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));min-width:55px}now-template-message-empty-state{align-items:center;border:RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))) solid calc(.125rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;min-height:150px;width:100%}.gr-carousel-container,now-template-message-empty-state{display:flex;margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.gr-carousel-container{background-color:var(--carousel-color,RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));flex-direction:column}.gr-carousel-container.-is-global{background-color:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))}.gr-carousel-container.-loading{align-items:flex-start;background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border-image:linear-gradient(180deg,var(--synthesized-gr-gradient_color--top,RGB(var(--now-color_grouped--teal-3,88,148,139))) 0,var(--synthesized-gr-gradient_color--bottom,RGB(var(--now-color_grouped--green-1,185,200,171))) 100%) 1;border-left:4px solid transparent;border-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) solid;box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))!important;height:auto;justify-content:flex-start;padding:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.gr-carousel-container.-mobile{background-color:transparent;border-radius:0;box-shadow:none}.gr-carousel-container .now-data-row-root-element.-horizontal{width:100%}.gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container{grid-gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));display:grid;grid-auto-columns:var(--now-data-row-min-card-width);grid-auto-flow:column;grid-template-columns:repeat(var(--now-data-row-max-visible-cards),var(--now-data-row-min-card-width));margin:calc(1rem*var(--classicsponlydonotuse--rem-multipy)) 0;overflow-x:auto;scroll-snap-type:x proximity}.gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container.-overflow-clip{overflow-x:clip}.gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container>:not(now-template-message-empty-state){flex-shrink:0;width:inherit}:host(:not([dir=rtl])) .gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container>:not(now-template-message-empty-state),:root:not([dir=rtl]) .gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container>:not(now-template-message-empty-state){margin-right:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container>:not(now-template-message-empty-state),:root[dir=rtl] .gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container>:not(now-template-message-empty-state){margin-left:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container.-is-empty{display:flex;flex-wrap:nowrap;margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));overflow-x:auto}.gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-header{padding-left:3px;padding-right:calc(var(--now-data-row-container-remainder-width) + 3px)}.gr-carousel-container .now-data-row-root-element.-vertical{width:100%}.gr-carousel-container .now-data-row-root-element.-vertical .now-data-row-container{align-items:center;display:flex;flex-direction:column;flex-wrap:nowrap}.gr-carousel-container .now-data-row-root-element.-vertical .now-data-row-footer{display:flex;justify-content:center;padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.gr-carousel-container .now-data-row-root-element.-vertical .now-data-row-container>:not(now-template-message-empty-state){margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.gr-carousel-container .now-data-row-root-element .now-content-card-size-sm{height:176px}.gr-carousel-container .now-data-row-root-element .now-content-card-size-md{height:218px}.gr-carousel-container .now-data-row-root-element .now-content-card-size-lg{height:260px}@media only screen and (max-width:576px){.gr-carousel-container{background:transparent;border:none;box-shadow:none}.gr-carousel-container .now-data-row-root-element.-horizontal{border-top:none}.gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container{width:calc(100vw - 66px)}.gr-carousel-container .now-data-row-root-element.-horizontal .now-data-row-container sn-carousel *{max-width:65vw!important;min-width:65vw!important}}sn-declarative-mediator{width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--synthesized-gr-gradient_color--top:var(--nass-synthesized-gr-gradient_color--top);--synthesized-gr-gradient_color--bottom:var(--nass-synthesized-gr-gradient_color--bottom);--carousel-color:var(--carousel-background-color);--carousel-loading-color:var(--carousel-loading-background-color);--card-background_color:var(--genius-card_color--background);--sparkle-loading-animated-icon_color:var(--genius-result-sparkle-loading-animated-icon_color)}.loading-steps-container{overflow:hidden;position:relative}.loading-step,.loading-steps-container{height:calc(1.875rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.loading-step{animation:slideUp 8s infinite;bottom:0;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));left:0;line-height:calc(1.875rem*var(--classicsponlydonotuse--rem-multipy));opacity:0;position:absolute;text-align:center}.loading-step:first-child{animation-delay:0s}.loading-step:nth-child(2){animation-delay:2s}.loading-step:nth-child(3){animation-delay:4s}.loading-step:nth-child(4){animation-delay:6s}@keyframes slideUp{0%,20%{opacity:0;transform:translateY(30px)}25%,45%{opacity:1;transform:translateY(0)}50%,70%{opacity:1;transform:translateY(-30px)}75%,to{opacity:0;transform:translateY(-60px)}}.loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.loading-container .skeleton-loading-container{flex:2;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.loading-container .skeleton-loading-container .animated-background:last-child{width:75%}@keyframes placeHolderShimmer{0%{background-position:calc(-50rem*var(--classicsponlydonotuse--rem-multipy)) 0}to{background-position:calc(50rem*var(--classicsponlydonotuse--rem-multipy)) 0}}.animated-background{animation-duration:3s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:placeHolderShimmer;animation-timing-function:linear;background:linear-gradient(-45deg,rgba(var(--now-color--neutral-5,172,180,181),.8) 0,rgba(var(--now-color--neutral-5,172,180,181),0) 50%,rgba(var(--now-color--neutral-5,172,180,181),.8) 100%);background-size:calc(50rem*var(--classicsponlydonotuse--rem-multipy)) calc(1rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));height:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative}@media screen and (max-width:1140px){.loading-container{flex-direction:column}.loading-container .skeleton-loading-container{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}}:host{font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.topics-card{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));min-height:296px;padding:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));width:332px}.topics-card.-loading{background-color:transparent;box-shadow:none;min-height:auto;padding:0}.topics-container .topics-header-text{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600}.topics-container .topics-content{column-gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));display:flex;flex-direction:column;padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.topics-container .topics-content .topic-button{padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.topics-container.no-card{align-items:center;background-color:transparent;display:flex;flex-direction:column;width:100%}.topics-container.no-card .topics-content{display:flex;flex-direction:row;justify-content:center}@media only screen and (max-width:1140px){.topics-card{min-height:auto;width:100%}.topics-card.no-card{width:100%}.topics-container .topics-content{display:flex;flex-direction:row;flex-wrap:wrap}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.top-results-wrapper{display:flex;flex-direction:column}.top-results-wrapper.-center{align-items:center}.top-results-wrapper.-center .result-info-container{width:100%}.top-results-wrapper .result-info-container{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.top-results-wrapper .top-results-container{display:flex;justify-content:space-between;width:100%}.top-results-wrapper .top-results-container.-center{justify-content:center}.top-results-wrapper .top-results-container .carousel-wrapper{width:100%}.top-results-wrapper .top-results-container .carousel-wrapper .result-info-container{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.top-results-wrapper .top-results-container .carousel-wrapper.margin-right{margin-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}@media only screen and (max-width:1140px){.top-results-wrapper{display:block;width:100%}.top-results-wrapper .top-results-container{display:flex;flex-direction:column}.top-results-wrapper .top-results-container .carousel-wrapper{width:100%}.top-results-wrapper .top-results-container .topics-card{height:auto;margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:100%}}.empty-state-wrapper{align-items:center;background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));display:flex;flex-direction:column;height:256px;justify-content:center;margin-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.empty-state-wrapper .empty-state-heading-container,.empty-state-wrapper .empty-state-message-container{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));display:flex;justify-content:center}.empty-state-wrapper .empty-state-message-container{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));text-align:center}@media only screen and (max-width:1140px){.empty-state-wrapper{width:100%}}.genius-results-loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.genius-results-loading-container .bubble-loader{height:calc(7.8125rem*var(--classicsponlydonotuse--rem-multipy));width:calc(7.8125rem*var(--classicsponlydonotuse--rem-multipy))}.synthesized-genius-results-loading-container{display:flex;flex-direction:column;width:100%}.synthesized-genius-results-loading-container .header{align-items:center;display:flex;width:100%}:host(:not([dir=rtl])) .synthesized-genius-results-loading-container .header now-carousel-text,:root:not([dir=rtl]) .synthesized-genius-results-loading-container .header now-carousel-text{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .synthesized-genius-results-loading-container .header now-carousel-text,:root[dir=rtl] .synthesized-genius-results-loading-container .header now-carousel-text{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.synthesized-genius-results-loading-container .skeleton-loader{display:flex;flex-direction:column;gap:10px;inline-size:60vw;margin-top:calc(1rem*var(--classicsponlydonotuse--rem-multipy));max-inline-size:600px;text-align:center}@keyframes skeleton-loader-bones-animation{0%{background-color:RGBA(var(--now-color--neutral-2,228,230,231),1)}50%{background-color:RGBA(var(--now-color--neutral-2,228,230,231),.45)}to{background-color:RGBA(var(--now-color--neutral-2,228,230,231),1)}}.synthesized-genius-results-loading-container .skeleton-loader .skeleton-bone{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:skeleton-loader-bones-animation;animation-timing-function:ease-in-out;background-color:RGB(var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)));block-size:20px;border-radius:50px;display:flex}.synthesized-genius-results-loading-container .skeleton-loader :first-child{animation-delay:0ms;inline-size:100%}.synthesized-genius-results-loading-container .skeleton-loader :nth-child(2){animation-delay:50ms;inline-size:80%}.synthesized-genius-results-loading-container .skeleton-loader :nth-child(3){animation-delay:.1s;inline-size:60%}:host{--synthesized-gr-gradient_color--top:var(--nass-synthesized-gr-gradient_color--top);--synthesized-gr-gradient_color--bottom:var(--nass-synthesized-gr-gradient_color--bottom);--carousel-color:var(--carousel-background-color);--carousel-loading-color:var(--carousel-loading-background-color);--card-background_color:var(--genius-card_color--background);--sparkle-loading-animated-icon_color:var(--genius-result-sparkle-loading-animated-icon_color);font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.loading-steps-container{overflow:hidden;position:relative}.loading-step,.loading-steps-container{height:calc(1.875rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.loading-step{animation:slideUp 8s infinite;bottom:0;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));left:0;line-height:calc(1.875rem*var(--classicsponlydonotuse--rem-multipy));opacity:0;position:absolute;text-align:center}.loading-step:first-child{animation-delay:0s}.loading-step:nth-child(2){animation-delay:2s}.loading-step:nth-child(3){animation-delay:4s}.loading-step:nth-child(4){animation-delay:6s}@keyframes slideUp{0%,20%{opacity:0;transform:translateY(30px)}25%,45%{opacity:1;transform:translateY(0)}50%,70%{opacity:1;transform:translateY(-30px)}75%,to{opacity:0;transform:translateY(-60px)}}.loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.loading-container .skeleton-loading-container{flex:2;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.loading-container .skeleton-loading-container .animated-background:last-child{width:75%}@keyframes placeHolderShimmer{0%{background-position:calc(-50rem*var(--classicsponlydonotuse--rem-multipy)) 0}to{background-position:calc(50rem*var(--classicsponlydonotuse--rem-multipy)) 0}}.animated-background{animation-duration:3s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:placeHolderShimmer;animation-timing-function:linear;background:linear-gradient(-45deg,rgba(var(--now-color--neutral-5,172,180,181),.8) 0,rgba(var(--now-color--neutral-5,172,180,181),0) 50%,rgba(var(--now-color--neutral-5,172,180,181),.8) 100%);background-size:calc(50rem*var(--classicsponlydonotuse--rem-multipy)) calc(1rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));height:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative}@media screen and (max-width:1140px){.loading-container{flex-direction:column}.loading-container .skeleton-loading-container{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--classicsponlydonotuse--rem-multipy-ais:var( --classicsponlydonotuse--rem-multipy,1 );font-family:var(--ais-font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))}.tab-filter__container{display:flex;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:none;white-space:normal;word-spacing:inherit}.tab-filter__tabs{width:90%}@media screen and (max-width:767px){.tab-filter__tabs{width:100%}}.tab-filter__dropdown,.tab-filter__dropdown__views{border-block-end-color:RGB(var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)));border-block-end-style:solid;border-block-end-width:1px}:host(:not([dir=rtl])) .tab-filter__dropdown__views,:root:not([dir=rtl]) .tab-filter__dropdown__views{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .tab-filter__dropdown__views,:root[dir=rtl] .tab-filter__dropdown__views{padding-right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.tab-filter__dropdown__views--label{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.tab-filter__dropdown__views{align-items:baseline;display:flex}.tab-filter__dropdown__views now-dropdown{width:200px}:host(:not([dir=rtl])) .tab-filter__dropdown__views now-dropdown,:root:not([dir=rtl]) .tab-filter__dropdown__views now-dropdown{padding-left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .tab-filter__dropdown__views now-dropdown,:root[dir=rtl] .tab-filter__dropdown__views now-dropdown{padding-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.field-decorations-container{display:flex;gap:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-form-field-layout.-horizontal{align-items:start;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr);grid-template-rows:1fr max-content}.sn-form-field-layout.-horizontal.align-center{align-items:center}.-vertical .form-field-label-wrap{margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-label-wrap{justify-content:end}.-horizontal:not(.align-center) .form-field-label-wrap{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .sn-control-highlighted-field-label-end{margin-inline-start:auto}.-vertical .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){max-width:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end{flex:1;flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){min-width:0}.-horizontal:not(.align-center) .sn-control-highlighted-field-label-end{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-message-container{grid-column-start:2}now-highlighted-value.first-label-end{max-width:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-form-field_message--border-width,0);display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-color_alert--info-1,104,171,218)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,none)}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.now-form-field-label-label .will-truncate{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-form-field-label-label .will-truncate:after{content:\\\"\\\";display:block}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}input,textarea{font-family:inherit}.sn-custom-highlighted-label{align-items:center;display:flex}.sn-custom-highlighted-label.-vertical{padding-inline-start:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-custom-highlighted-label-popover{display:flex;gap:calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy))}.sn-custom-highlighted-label-popover.spacing{padding:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy))}.sn-custom-highlighted-label-popover-description{display:flex;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));gap:calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-custom-highlighted-label-popover-close{margin:calc(var(--now-scale-space--xxs, 1)*-.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-custom-highlighted-label now-icon{vertical-align:unset}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.now-m-block--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--sm{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--sm,.now-m-block-start--sm{margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--sm{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--sm{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--sm,.now-m-inline-start--sm{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--sm{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--md{margin-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--md,.now-m-block-start--md{margin-block-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--md{margin-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--md{margin-inline-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--md,.now-m-inline-start--md{margin-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--md{margin-inline-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--lg{margin-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--lg,.now-m-block-start--lg{margin-block-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--lg{margin-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--lg{margin-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--lg,.now-m-inline-start--lg{margin-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--lg{margin-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xl{margin-block-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xl,.now-m-block-start--xl{margin-block-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xl{margin-block-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xl{margin-inline-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xl,.now-m-inline-start--xl{margin-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xl{margin-inline-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxl{margin-block-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxl,.now-m-block-start--xxl{margin-block-start:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxl{margin-block-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxl{margin-inline-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxl,.now-m-inline-start--xxl{margin-inline-start:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxl{margin-inline-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--3xl{margin-block-end:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--3xl,.now-m-block-start--3xl{margin-block-start:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--3xl{margin-block-end:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--3xl{margin-inline-end:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--3xl,.now-m-inline-start--3xl{margin-inline-start:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--3xl{margin-inline-end:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--0{margin-block-end:0}.now-m-block--0,.now-m-block-start--0{margin-block-start:0}.now-m-block-end--0{margin-block-end:0}.now-m-inline--0{margin-inline-end:0}.now-m-inline--0,.now-m-inline-start--0{margin-inline-start:0}.now-m-inline-end--0{margin-inline-end:0}.now-p-block--xxs{padding-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xxs,.now-p-block-start--xxs{padding-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--xxs{padding-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xxs{padding-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xxs,.now-p-inline-start--xxs{padding-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--xxs{padding-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xs{padding-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xs,.now-p-block-start--xs{padding-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--xs{padding-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xs{padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xs,.now-p-inline-start--xs{padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--xs{padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--sm{padding-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--sm,.now-p-block-start--sm{padding-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--sm{padding-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--sm{padding-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--sm,.now-p-inline-start--sm{padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--sm{padding-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--md{padding-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--md,.now-p-block-start--md{padding-block-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--md{padding-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--md{padding-inline-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--md,.now-p-inline-start--md{padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--md{padding-inline-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--lg{padding-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--lg,.now-p-block-start--lg{padding-block-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--lg{padding-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--lg{padding-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--lg,.now-p-inline-start--lg{padding-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--lg{padding-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xl{padding-block-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xl,.now-p-block-start--xl{padding-block-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--xl{padding-block-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xl{padding-inline-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xl,.now-p-inline-start--xl{padding-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--xl{padding-inline-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xxl{padding-block-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xxl,.now-p-block-start--xxl{padding-block-start:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--xxl{padding-block-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xxl{padding-inline-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xxl,.now-p-inline-start--xxl{padding-inline-start:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--xxl{padding-inline-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--3xl{padding-block-end:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--3xl,.now-p-block-start--3xl{padding-block-start:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--3xl{padding-block-end:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--3xl{padding-inline-end:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--3xl,.now-p-inline-start--3xl{padding-inline-start:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--3xl{padding-inline-end:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--0{padding-block-end:0}.now-p-block--0,.now-p-block-start--0{padding-block-start:0}.now-p-block-end--0{padding-block-end:0}.now-p-inline--0{padding-inline-end:0}.now-p-inline--0,.now-p-inline-start--0{padding-inline-start:0}.now-p-inline-end--0{padding-inline-end:0}.now-line-height-crop{display:block}.now-line-height-crop:after,.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-line-height-crop+.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-line-height-crop--sm{display:block}.now-line-height-crop--sm:after,.now-line-height-crop--sm:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop--sm:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-line-height-crop--sm:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-line-height-crop--sm+.now-line-height-crop--sm{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-heading--lg,.now-heading--md,.now-heading--xl{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-weight:600}.now-heading--md{font-size:var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy)))}.now-heading--lg{font-size:var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy)))}.now-heading--xl{font-size:var(--now-font-size--xl,calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--normal{font-weight:400}.now-text--semibold{font-weight:600}.now-text--bold{font-weight:700}.now-text--sm{font-size:var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--md{font-size:var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--lg{font-size:var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy)))}.now-text--primary{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.now-text--secondary{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))}.now-text--tertiary{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}:host{display:grid;width:100%}.carousel-wrapper{display:flex;flex-direction:column;overflow:hidden;width:100%}.carousel-title{overflow:hidden}.carousel-header{align-items:center;display:flex;height:100%;justify-content:space-between;overflow:hidden;padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.carousel-header .title-wrapper{align-items:center;display:inline-flex;overflow:hidden}:host(:not([dir=rtl])) .carousel-header .title-wrapper.right,:root:not([dir=rtl]) .carousel-header .title-wrapper.right{margin-left:auto}:host([dir=rtl]) .carousel-header .title-wrapper.right,:root[dir=rtl] .carousel-header .title-wrapper.right{margin-right:auto}.carousel-header .title-badge{flex:1 0 0px;min-width:0}:host(:not([dir=rtl])) .carousel-header .title-badge,:root:not([dir=rtl]) .carousel-header .title-badge{padding-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .carousel-header .title-badge,:root[dir=rtl] .carousel-header .title-badge{padding-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .carousel-header .header-link,:root:not([dir=rtl]) .carousel-header .header-link{padding-left:calc(3.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .carousel-header .header-link,:root[dir=rtl] .carousel-header .header-link{padding-right:calc(3.25rem*var(--classicsponlydonotuse--rem-multipy))}.carousel-track{display:flex;justify-content:flex-start;overflow-x:clip;position:relative}.content-container{display:flex;height:100%;width:100%}::slotted(*){flex:none;height:100%;width:auto}.arrows.bottom-left{bottom:calc(-.75rem*var(--classicsponlydonotuse--rem-multipy));display:inherit;position:absolute}:host(:not([dir=rtl])) .arrows.bottom-left,:root:not([dir=rtl]) .arrows.bottom-left{left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .arrows.bottom-left,:root[dir=rtl] .arrows.bottom-left{right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.arrows.bottom-right{bottom:calc(-.75rem*var(--classicsponlydonotuse--rem-multipy));display:inherit;position:absolute}:host(:not([dir=rtl])) .arrows.bottom-right,:root:not([dir=rtl]) .arrows.bottom-right{right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .arrows.bottom-right,:root[dir=rtl] .arrows.bottom-right{left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.arrows .arrow{z-index:2}.arrows .arrow .nav-button{background-color:RGB(var(--now-view-control_item--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));border-radius:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));position:absolute}.arrows .arrow.left.center{height:100%;position:absolute;width:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.arrows .arrow.left.center .nav-button{left:50%;top:50%;transform:translate(-50%,-50%)}:host(:not([dir=rtl])) .arrows .arrow.left.center.compact,:root:not([dir=rtl]) .arrows .arrow.left.center.compact{left:calc(3.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .arrows .arrow.left.center.compact,:root[dir=rtl] .arrows .arrow.left.center.compact{right:calc(3.25rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .arrows .arrow.left.center.not-compact,:root:not([dir=rtl]) .arrows .arrow.left.center.not-compact{left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .arrows .arrow.left.center.not-compact,:root[dir=rtl] .arrows .arrow.left.center.not-compact{right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.arrows .arrow.left.bottom-left .nav-button{top:0}:host(:not([dir=rtl])) .arrows .arrow.left.bottom-left .nav-button,:root:not([dir=rtl]) .arrows .arrow.left.bottom-left .nav-button{left:0}:host([dir=rtl]) .arrows .arrow.left.bottom-left .nav-button,:root[dir=rtl] .arrows .arrow.left.bottom-left .nav-button{right:0}.arrows .arrow.left.bottom-right .nav-button{top:0}:host(:not([dir=rtl])) .arrows .arrow.left.bottom-right .nav-button,:root:not([dir=rtl]) .arrows .arrow.left.bottom-right .nav-button{right:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .arrows .arrow.left.bottom-right .nav-button,:root[dir=rtl] .arrows .arrow.left.bottom-right .nav-button{left:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.arrows .arrow.left.bottom-split{bottom:calc(-.75rem*var(--classicsponlydonotuse--rem-multipy));position:absolute}:host(:not([dir=rtl])) .arrows .arrow.left.bottom-split,:root:not([dir=rtl]) .arrows .arrow.left.bottom-split{left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .arrows .arrow.left.bottom-split,:root[dir=rtl] .arrows .arrow.left.bottom-split{right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.arrows .arrow.left.bottom-split .nav-button{top:0}:host(:not([dir=rtl])) .arrows .arrow.left.bottom-split .nav-button,:root:not([dir=rtl]) .arrows .arrow.left.bottom-split .nav-button{left:0}:host([dir=rtl]) .arrows .arrow.left.bottom-split .nav-button,:root[dir=rtl] .arrows .arrow.left.bottom-split .nav-button{right:0}.arrows .arrow.left.hide{visibility:hidden}.arrows .arrow.left.show{display:inline-block}.arrows .arrow.right.bottom-left .nav-button{top:0}:host(:not([dir=rtl])) .arrows .arrow.right.bottom-left .nav-button,:root:not([dir=rtl]) .arrows .arrow.right.bottom-left .nav-button{left:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .arrows .arrow.right.bottom-left .nav-button,:root[dir=rtl] .arrows .arrow.right.bottom-left .nav-button{right:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.arrows .arrow.right.bottom-right .nav-button{top:0}:host(:not([dir=rtl])) .arrows .arrow.right.bottom-right .nav-button,:root:not([dir=rtl]) .arrows .arrow.right.bottom-right .nav-button{right:0}:host([dir=rtl]) .arrows .arrow.right.bottom-right .nav-button,:root[dir=rtl] .arrows .arrow.right.bottom-right .nav-button{left:0}.arrows .arrow.right.center{height:100%;position:absolute;width:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .arrows .arrow.right.center,:root:not([dir=rtl]) .arrows .arrow.right.center{right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .arrows .arrow.right.center,:root[dir=rtl] .arrows .arrow.right.center{left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.arrows .arrow.right.center .nav-button{left:50%;top:50%;transform:translate(-50%,-50%)}.arrows .arrow.right.bottom-split{bottom:calc(-.75rem*var(--classicsponlydonotuse--rem-multipy));position:absolute}:host(:not([dir=rtl])) .arrows .arrow.right.bottom-split,:root:not([dir=rtl]) .arrows .arrow.right.bottom-split{right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .arrows .arrow.right.bottom-split,:root[dir=rtl] .arrows .arrow.right.bottom-split{left:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.arrows .arrow.right.bottom-split .nav-button{top:0}:host(:not([dir=rtl])) .arrows .arrow.right.bottom-split .nav-button,:root:not([dir=rtl]) .arrows .arrow.right.bottom-split .nav-button{right:0}:host([dir=rtl]) .arrows .arrow.right.bottom-split .nav-button,:root[dir=rtl] .arrows .arrow.right.bottom-split .nav-button{left:0}.arrows .arrow.right.hide{visibility:hidden}.arrows .arrow.right.show{display:inline-block}.carousel-footer{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));position:relative}.carousel-footer .show-arrows{height:calc(1.875rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.indicators nav div button{background-color:buttonface!important}.indicators nav div button:focus,.indicators nav div button:hover{border-color:highlight!important}.indicators nav div button.selected{background-color:selecteditem!important;border-color:selecteditemtext!important;color:selecteditemtext!important}}:host(:not([dir=rtl])) .indicators.bottom-left,:root:not([dir=rtl]) .indicators.bottom-left{float:right}:host([dir=rtl]) .indicators.bottom-left,:root[dir=rtl] .indicators.bottom-left{float:left}:host(:not([dir=rtl])) .indicators.bottom-right,:root:not([dir=rtl]) .indicators.bottom-right{float:left}:host([dir=rtl]) .indicators.bottom-right,:root[dir=rtl] .indicators.bottom-right{float:right}.indicators.bottom-split,.indicators.center{margin-left:auto;margin-right:auto}.indicators.center nav{margin-bottom:0;margin-top:0}.indicators nav{display:flex;justify-content:center;list-style:none;margin-bottom:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding:0}.indicators nav div{height:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .indicators nav div,:root:not([dir=rtl]) .indicators nav div{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .indicators nav div,:root[dir=rtl] .indicators nav div{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .indicators nav div:last-child,:root:not([dir=rtl]) .indicators nav div:last-child{margin-right:0}:host([dir=rtl]) .indicators nav div:last-child,:root[dir=rtl] .indicators nav div:last-child{margin-left:0}.indicators nav div button{background-color:transparent;border:1px solid RGB(var(--now-actionable--primary--border-color,var(--now-color--primary-1,30,133,109)));border-radius:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));cursor:pointer;height:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding:0;position:absolute;width:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.indicators nav div button.selected{background-color:RGB(var(--now-color--primary-1,30,133,109));border:1px solid RGB(var(--now-color--primary-1,30,133,109))}.indicators nav div button:hover:not(.selected){background-color:RGB(var(--now-actionable--primary--background-color--hover,var(--now-color--primary-2,23,100,82)));border:1px solid RGB(var(--now-actionable--primary--border-color--hover,var(--now-color--primary-2,23,100,82)))}.indicators nav div button:focus{border:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) solid RGB(var(--now-color--focus-2,1,119,142));box-shadow:inset 0 0 0 1px #fff}.indicators nav div button:focus-visible{outline:none}.indicators nav div button:active{background-color:RGB(var(--now-actionable--primary--background-color--active,var(--now-color--primary-3,15,67,55)));border:1px solid RGB(var(--now-actionable--primary--background-color--active,var(--now-color--primary-3,15,67,55)))}.gradient{height:100%;pointer-events:none;position:absolute;width:56px;z-index:1}:host(:not([dir=rtl])) .gradient.left,:root:not([dir=rtl]) .gradient.left{left:0}:host([dir=rtl]) .gradient.left,:root[dir=rtl] .gradient.left{right:0}:host(:not([dir=rtl])) .gradient.left.primary,:root:not([dir=rtl]) .gradient.left.primary{background-image:linear-gradient(to left,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))}:host([dir=rtl]) .gradient.left.primary,:root[dir=rtl] .gradient.left.primary{background-image:linear-gradient(to right,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))}:host(:not([dir=rtl])) .gradient.left.secondary,:root:not([dir=rtl]) .gradient.left.secondary{background-image:linear-gradient(to left,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--secondary--background-color,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))))}:host([dir=rtl]) .gradient.left.secondary,:root[dir=rtl] .gradient.left.secondary{background-image:linear-gradient(to right,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--secondary--background-color,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))))}:host(:not([dir=rtl])) .gradient.left.tertiary,:root:not([dir=rtl]) .gradient.left.tertiary{background-image:linear-gradient(to left,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--secondary--background-color--focus,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))))}:host([dir=rtl]) .gradient.left.tertiary,:root[dir=rtl] .gradient.left.tertiary{background-image:linear-gradient(to right,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--secondary--background-color--focus,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))))}.gradient.left.dark{opacity:.1}:host(:not([dir=rtl])) .gradient.left.dark,:root:not([dir=rtl]) .gradient.left.dark{background-image:linear-gradient(to left,hsla(0,0%,100%,0),RGB(var(--now-color--neutral-16,37,45,46)))}:host([dir=rtl]) .gradient.left.dark,:root[dir=rtl] .gradient.left.dark{background-image:linear-gradient(to right,hsla(0,0%,100%,0),RGB(var(--now-color--neutral-16,37,45,46)))}.gradient.left.none{visibility:hidden}:host(:not([dir=rtl])) .gradient.right,:root:not([dir=rtl]) .gradient.right{right:0}:host([dir=rtl]) .gradient.right,:root[dir=rtl] .gradient.right{left:0}:host(:not([dir=rtl])) .gradient.right.primary,:root:not([dir=rtl]) .gradient.right.primary{background-image:linear-gradient(to right,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))}:host([dir=rtl]) .gradient.right.primary,:root[dir=rtl] .gradient.right.primary{background-image:linear-gradient(to left,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))}:host(:not([dir=rtl])) .gradient.right.secondary,:root:not([dir=rtl]) .gradient.right.secondary{background-image:linear-gradient(to right,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--secondary--background-color,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))))}:host([dir=rtl]) .gradient.right.secondary,:root[dir=rtl] .gradient.right.secondary{background-image:linear-gradient(to left,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--secondary--background-color,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))))}:host(:not([dir=rtl])) .gradient.right.tertiary,:root:not([dir=rtl]) .gradient.right.tertiary{background-image:linear-gradient(to right,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--secondary--background-color--focus,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))))}:host([dir=rtl]) .gradient.right.tertiary,:root[dir=rtl] .gradient.right.tertiary{background-image:linear-gradient(to left,hsla(0,0%,100%,0),RGB(var(--now-view-control_item--secondary--background-color--focus,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))))}.gradient.right.dark{opacity:.1}:host(:not([dir=rtl])) .gradient.right.dark,:root:not([dir=rtl]) .gradient.right.dark{background-image:linear-gradient(to right,hsla(0,0%,100%,0),RGB(var(--now-color--neutral-16,37,45,46)))}:host([dir=rtl]) .gradient.right.dark,:root[dir=rtl] .gradient.right.dark{background-image:linear-gradient(to left,hsla(0,0%,100%,0),RGB(var(--now-color--neutral-16,37,45,46)))}.gradient.right.none{visibility:hidden}.pause-play-button{position:absolute;z-index:3}.pause-play-button.not-compact{padding-left:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-top:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.pause-play-button.compact{height:100%;margin-top:calc(-.8125rem*var(--classicsponlydonotuse--rem-multipy));top:50%;width:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .pause-play-button.compact,:root:not([dir=rtl]) .pause-play-button.compact{left:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .pause-play-button.compact,:root[dir=rtl] .pause-play-button.compact{right:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:flex}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".list-container{height:424px}.tree-container{height:424px;position:relative}.loader-container{align-items:center;display:flex;height:424px;justify-content:center;width:100%}.multi{height:422px}.with-footer{height:350px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.field-decorations-container{display:flex;gap:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-form-field-layout.-horizontal{align-items:start;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr);grid-template-rows:1fr max-content}.sn-form-field-layout.-horizontal.align-center{align-items:center}.-vertical .form-field-label-wrap{margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-label-wrap{justify-content:end}.-horizontal:not(.align-center) .form-field-label-wrap{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .sn-control-highlighted-field-label-end{margin-inline-start:auto}.-vertical .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){max-width:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end{flex:1;flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){min-width:0}.-horizontal:not(.align-center) .sn-control-highlighted-field-label-end{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-message-container{grid-column-start:2}now-highlighted-value.first-label-end{max-width:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block-end:0;margin-block-start:0}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label{align-items:center;block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,none)}.now-form-field-label-identifier.now-line-height-crop{display:block}.now-form-field-label-identifier.now-line-height-crop:after,.now-form-field-label-identifier.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier.now-line-height-crop+.now-form-field-label-identifier.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.now-form-field-label-label .will-truncate{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-form-field-label-label .will-truncate:after{content:\\\"\\\";display:block}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important;margin-inline-start:0!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important;margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline-end:0;padding-inline-start:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}}input,textarea{font-family:inherit}now-button-iconic.recommendation-icon{display:initial}.sn-recommendations-info-popover-spacing{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy))}.sn-recommendations-info-popover-spacing a{text-decoration:none}.sn-recommendations-info-popover-spacing a:hover{text-decoration:underline}.sn-recommendations-info-popover-description{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-form-field_message--border-width,0);display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-color_alert--info-1,104,171,218)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,none)}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.now-form-field-label-label .will-truncate{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-form-field-label-label .will-truncate:after{content:\\\"\\\";display:block}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}.field-decorations-container{display:flex;gap:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-form-field-layout.-horizontal{align-items:start;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr);grid-template-rows:1fr max-content}.sn-form-field-layout.-horizontal.align-center{align-items:center}.-vertical .form-field-label-wrap{margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-label-wrap{justify-content:end}.-horizontal:not(.align-center) .form-field-label-wrap{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .sn-control-highlighted-field-label-end{margin-inline-start:auto}.-vertical .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){max-width:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end{flex:1;flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){min-width:0}.-horizontal:not(.align-center) .sn-control-highlighted-field-label-end{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-message-container{grid-column-start:2}now-highlighted-value.first-label-end{max-width:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control{border:0;display:flex;flex-direction:column;margin-block-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));padding:0;position:relative;width:100%}.sn-control .form-field-label-wrap{align-items:center;display:flex;height:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control .sn-control-highlighted-field-label-end{align-items:center;display:flex}.sn-control-input{border:0;display:flex;flex-direction:column;padding:0;position:relative;width:100%}.sn-control-label{align-items:center;color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));display:flex;font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;min-width:0;padding:0 0 calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy));text-transform:var(--now-form-field_label--text-transform,none)}.sn-control-label-label{margin-inline-start:0}.sn-control-label>span.now-line-height-crop{display:block}.sn-control-label>span.now-line-height-crop:after,.sn-control-label>span.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.sn-control-label>span.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.sn-control-label>span.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.sn-control-label>span.now-line-height-crop+.sn-control-label>span.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.sn-control-label>span.now-line-height-crop>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-control-label>span.now-line-height-crop>span:after{content:\\\"\\\";display:block}.sn-control-label .sn-control-field-helper,.sn-control-label>now-icon,.sn-control-label>sn-icon{display:inline-block;line-height:0;padding-inline-start:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control.has-error .sn-control-label{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control sn-record-choice-search[disabled=true],.sn-control sn-record-dropdown-internal[readonly=true]{pointer-events:none}.sn-control-controls,.sn-control-icon{align-items:center;display:flex;flex:0 0 auto;justify-content:center}.sn-control-controls now-button,.sn-control-controls sn-record-control,.sn-control-icon now-button,.sn-control-icon sn-record-control{margin-right:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-icon{margin:0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-field{background-color:RGBA(var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field--background-color-alpha,0));border-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));border-radius:var(--now-form-field--border-radius,0);border-style:solid;border-width:var(--now-form-field--border-width,0);box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGBA(var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)),var(--now-form-field_inset--color-alpha,0)),0 var(--now-form-field--border-block-end-width,1px) 0 0 RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));color:RGB(var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));display:flex;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative}.sn-control-field,.sn-control-field.read-only{padding-inline-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-field.read-only{background-color:RGBA(var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));border-width:var(--now-form-field--border-width--readonly,var(--now-form-field--border-width,0));box-shadow:0 var(--now-form-field--border-block-end-width--readonly,0) 0 0 RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));color:RGB(var(--now-form-field--color--readonly,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.sn-control-field.read-only .empty-read-only{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}.sn-control-field.read-only::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}.sn-control.is-focus .sn-control-field.read-only,.sn-control:focus .sn-control-field.read-only{background-color:RGBA(var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.sn-control.is-focus .sn-control-field.read-only:after,.sn-control:focus .sn-control-field.read-only:after{background-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:0;content:\\\"\\\";height:var(--now-form-field--border-block-end-width--readonly,0);left:0;position:absolute;right:0}.sn-control-field.is-disabled{border-color:RGBA(var(--now-form-field--border-color--disabled,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))),var(--now-opacity--less,.25));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));cursor:not-allowed}.sn-control-field:not(.is-focus,.read-only) :after{background-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-1);content:\\\"\\\";height:var(--now-form-field--border-block-end-width,1px);left:0;position:absolute;right:0}.sn-control-field:not(.is-focus).read-only :after{background-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:0;content:\\\"\\\";height:var(--now-form-field--border-block-end-width--readonly,0);left:0;position:absolute;right:0}.sn-control-field:not(.read-only).is-hover{background-color:RGBA(var(--now-form-field--background-color--hover,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))),var(--now-form-field--background-color-alpha--hover,1));border-color:RGB(var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGBA(var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)),var(--now-form-field_inset--color-alpha,0)),0 var(--now-form-field--border-block-end-width,1px) 0 0 RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))}.sn-control-field:not(.read-only).is-hover :after{background:RGB(var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-2);content:\\\"\\\";height:calc(var(--now-form-field--border-block-end-width, 1px)*2);left:0;position:absolute;right:0}.sn-control.is-focus .sn-control-field:not(.read-only),.sn-control:focus .sn-control-field:not(.read-only){background-color:RGB(var(--now-form-field--background-color--focus,var(--now-color--secondary-0,217,235,238)));border-color:RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)));box-shadow:0 calc(var(--now-form-field--border-block-end-width, 1px)*2) 0 0 RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 var(--now-form-field--border-width,0) RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)),var(--now-opacity--least,.1))}@media(forced-colors:active){.sn-control.is-focus .sn-control-field:not(.read-only),.sn-control:focus .sn-control-field:not(.read-only){border-color:highlight;outline:calc(.0625rem*var(--classicsponlydonotuse--rem-multipy)) solid highlight}}.sn-control.is-focus .sn-control-field:not(.read-only):after,.sn-control:focus .sn-control-field:not(.read-only):after{background:RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-2);content:\\\"\\\";height:calc(var(--now-form-field--border-block-end-width, 1px)*2);left:0;position:absolute;right:0}.sn-control.has-error .sn-control-field:not(.read-only){border-color:RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)));box-shadow:0 var(--now-form-field--border-block-end-width,1px) 0 RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control.has-error .sn-control-field:not(.read-only):after{background:RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control.has-error.is-readonly .sn-control-field:not(.read-only){box-shadow:0 var(--now-form-field--border-block-end-width--readonly,0) 0 RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control-field::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--most,.8))}.sn-control.-standalone .sn-control-field{border:1px solid;border-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))}.sn-control.-standalone .sn-control-field:after{display:none}.sn-control.-worknote .sn-control-field{background:RGBA(var(--now-color_alert--warning-0,244,240,191),var(--now-opacity--mid,.5))}.sn-control.-borderless .sn-control-field{border:none}.sn-control-field.no-border{border:none;box-shadow:none}.sn-control-character-counter,.sn-control-description{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin:0;padding:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy)) 0;position:relative}.has-error .sn-control-character-counter,.has-error .sn-control-description,.sn-control-character-counter.error,.sn-control-description.error{color:RGB(var(--now-color_alert--critical-3,160,48,43))}.sn-control-character-counter.warning,.sn-control-description.warning{color:RGB(var(--now-color_alert--warning-3,198,185,22))}.sn-control-messages{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));padding-top:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-message,.sn-control-messages{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.sn-control-message{border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);line-height:1.3333;margin:0 0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.sn-control-message:last-of-type{margin:0}.sn-control-message.-multi{flex-direction:column}.sn-control-message.-danger{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-primary,.sn-control-message.-success{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-suggestion{background-color:RGBA(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.sn-control-message-row{align-items:center;display:flex;line-height:1.3333;margin:0 0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.sn-control-message-row:last-of-type{margin:0}.sn-control-message-content now-icon{display:flex;margin-inline-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-message-content>span{align-self:center;display:block}.sn-control-message-content>span:after,.sn-control-message-content>span:before{block-size:0;content:\\\"\\\";display:block}.sn-control-message-content>span:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.sn-control-message-content>span:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.sn-control-message-content>span+.sn-control-message-content>span{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.sn-control-message-content>span>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-control-message-content>span>span:after{content:\\\"\\\";display:block}.sn-control-group{align-items:center;display:flex;position:relative}.sn-control .sn-form-field{display:flex;flex-direction:column;flex-wrap:wrap}.default-fieldset{border:none;display:inline-block;margin:0;min-width:0;padding:0;width:100%}.decorations-icon-wrapper{all:inherit;margin-inline-start:calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy))}.fit-to-parent{block-size:100%}.fit-to-parent now-textarea{margin-block:0;padding-block-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-form-field_message--border-width,0);display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-color_alert--info-1,104,171,218)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,none)}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.now-form-field-label-label .will-truncate{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-form-field-label-label .will-truncate:after{content:\\\"\\\";display:block}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}.field-decorations-container{display:flex;gap:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-form-field-layout.-horizontal{align-items:start;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr);grid-template-rows:1fr max-content}.sn-form-field-layout.-horizontal.align-center{align-items:center}.-vertical .form-field-label-wrap{margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-label-wrap{justify-content:end}.-horizontal:not(.align-center) .form-field-label-wrap{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .sn-control-highlighted-field-label-end{margin-inline-start:auto}.-vertical .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){max-width:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end{flex:1;flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){min-width:0}.-horizontal:not(.align-center) .sn-control-highlighted-field-label-end{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-message-container{grid-column-start:2}now-highlighted-value.first-label-end{max-width:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control{border:0;display:flex;flex-direction:column;margin-block-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));padding:0;position:relative;width:100%}.sn-control .form-field-label-wrap{align-items:center;display:flex;height:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control .sn-control-highlighted-field-label-end{align-items:center;display:flex}.sn-control-input{border:0;display:flex;flex-direction:column;padding:0;position:relative;width:100%}.sn-control-label{align-items:center;color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));display:flex;font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;min-width:0;padding:0 0 calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy));text-transform:var(--now-form-field_label--text-transform,none)}.sn-control-label-label{margin-inline-start:0}.sn-control-label>span.now-line-height-crop{display:block}.sn-control-label>span.now-line-height-crop:after,.sn-control-label>span.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.sn-control-label>span.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.sn-control-label>span.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.sn-control-label>span.now-line-height-crop+.sn-control-label>span.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.sn-control-label>span.now-line-height-crop>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-control-label>span.now-line-height-crop>span:after{content:\\\"\\\";display:block}.sn-control-label .sn-control-field-helper,.sn-control-label>now-icon,.sn-control-label>sn-icon{display:inline-block;line-height:0;padding-inline-start:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control.has-error .sn-control-label{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control sn-record-choice-search[disabled=true],.sn-control sn-record-dropdown-internal[readonly=true]{pointer-events:none}.sn-control-controls,.sn-control-icon{align-items:center;display:flex;flex:0 0 auto;justify-content:center}.sn-control-controls now-button,.sn-control-controls sn-record-control,.sn-control-icon now-button,.sn-control-icon sn-record-control{margin-right:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-icon{margin:0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-field{background-color:RGBA(var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field--background-color-alpha,0));border-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));border-radius:var(--now-form-field--border-radius,0);border-style:solid;border-width:var(--now-form-field--border-width,0);box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGBA(var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)),var(--now-form-field_inset--color-alpha,0)),0 var(--now-form-field--border-block-end-width,1px) 0 0 RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));color:RGB(var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));display:flex;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative}.sn-control-field,.sn-control-field.read-only{padding-inline-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-field.read-only{background-color:RGBA(var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));border-width:var(--now-form-field--border-width--readonly,var(--now-form-field--border-width,0));box-shadow:0 var(--now-form-field--border-block-end-width--readonly,0) 0 0 RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));color:RGB(var(--now-form-field--color--readonly,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.sn-control-field.read-only .empty-read-only{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}.sn-control-field.read-only::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}.sn-control.is-focus .sn-control-field.read-only,.sn-control:focus .sn-control-field.read-only{background-color:RGBA(var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.sn-control.is-focus .sn-control-field.read-only:after,.sn-control:focus .sn-control-field.read-only:after{background-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:0;content:\\\"\\\";height:var(--now-form-field--border-block-end-width--readonly,0);left:0;position:absolute;right:0}.sn-control-field.is-disabled{border-color:RGBA(var(--now-form-field--border-color--disabled,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))),var(--now-opacity--less,.25));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));cursor:not-allowed}.sn-control-field:not(.is-focus,.read-only) :after{background-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-1);content:\\\"\\\";height:var(--now-form-field--border-block-end-width,1px);left:0;position:absolute;right:0}.sn-control-field:not(.is-focus).read-only :after{background-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:0;content:\\\"\\\";height:var(--now-form-field--border-block-end-width--readonly,0);left:0;position:absolute;right:0}.sn-control-field:not(.read-only).is-hover{background-color:RGBA(var(--now-form-field--background-color--hover,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))),var(--now-form-field--background-color-alpha--hover,1));border-color:RGB(var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGBA(var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)),var(--now-form-field_inset--color-alpha,0)),0 var(--now-form-field--border-block-end-width,1px) 0 0 RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))}.sn-control-field:not(.read-only).is-hover :after{background:RGB(var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-2);content:\\\"\\\";height:calc(var(--now-form-field--border-block-end-width, 1px)*2);left:0;position:absolute;right:0}.sn-control.is-focus .sn-control-field:not(.read-only),.sn-control:focus .sn-control-field:not(.read-only){background-color:RGB(var(--now-form-field--background-color--focus,var(--now-color--secondary-0,217,235,238)));border-color:RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)));box-shadow:0 calc(var(--now-form-field--border-block-end-width, 1px)*2) 0 0 RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 var(--now-form-field--border-width,0) RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)),var(--now-opacity--least,.1))}@media(forced-colors:active){.sn-control.is-focus .sn-control-field:not(.read-only),.sn-control:focus .sn-control-field:not(.read-only){border-color:highlight;outline:calc(.0625rem*var(--classicsponlydonotuse--rem-multipy)) solid highlight}}.sn-control.is-focus .sn-control-field:not(.read-only):after,.sn-control:focus .sn-control-field:not(.read-only):after{background:RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-2);content:\\\"\\\";height:calc(var(--now-form-field--border-block-end-width, 1px)*2);left:0;position:absolute;right:0}.sn-control.has-error .sn-control-field:not(.read-only){border-color:RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)));box-shadow:0 var(--now-form-field--border-block-end-width,1px) 0 RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control.has-error .sn-control-field:not(.read-only):after{background:RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control.has-error.is-readonly .sn-control-field:not(.read-only){box-shadow:0 var(--now-form-field--border-block-end-width--readonly,0) 0 RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control-field::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--most,.8))}.sn-control.-standalone .sn-control-field{border:1px solid;border-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))}.sn-control.-standalone .sn-control-field:after{display:none}.sn-control.-worknote .sn-control-field{background:RGBA(var(--now-color_alert--warning-0,244,240,191),var(--now-opacity--mid,.5))}.sn-control.-borderless .sn-control-field{border:none}.sn-control-field.no-border{border:none;box-shadow:none}.sn-control-character-counter,.sn-control-description{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin:0;padding:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy)) 0;position:relative}.has-error .sn-control-character-counter,.has-error .sn-control-description,.sn-control-character-counter.error,.sn-control-description.error{color:RGB(var(--now-color_alert--critical-3,160,48,43))}.sn-control-character-counter.warning,.sn-control-description.warning{color:RGB(var(--now-color_alert--warning-3,198,185,22))}.sn-control-messages{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));padding-top:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-message,.sn-control-messages{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.sn-control-message{border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);line-height:1.3333;margin:0 0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.sn-control-message:last-of-type{margin:0}.sn-control-message.-multi{flex-direction:column}.sn-control-message.-danger{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-primary,.sn-control-message.-success{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-suggestion{background-color:RGBA(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.sn-control-message-row{align-items:center;display:flex;line-height:1.3333;margin:0 0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.sn-control-message-row:last-of-type{margin:0}.sn-control-message-content now-icon{display:flex;margin-inline-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-message-content>span{align-self:center;display:block}.sn-control-message-content>span:after,.sn-control-message-content>span:before{block-size:0;content:\\\"\\\";display:block}.sn-control-message-content>span:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.sn-control-message-content>span:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.sn-control-message-content>span+.sn-control-message-content>span{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.sn-control-message-content>span>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-control-message-content>span>span:after{content:\\\"\\\";display:block}.sn-control-group{align-items:center;display:flex;position:relative}.default-fieldset{border:none;display:inline-block;margin:0;min-width:0;padding:0;width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.field-decorations-container{display:flex;gap:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-form-field-layout.-horizontal{align-items:start;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr);grid-template-rows:1fr max-content}.sn-form-field-layout.-horizontal.align-center{align-items:center}.-vertical .form-field-label-wrap{margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-label-wrap{justify-content:end}.-horizontal:not(.align-center) .form-field-label-wrap{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .sn-control-highlighted-field-label-end{margin-inline-start:auto}.-vertical .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){max-width:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end{flex:1;flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){min-width:0}.-horizontal:not(.align-center) .sn-control-highlighted-field-label-end{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-message-container{grid-column-start:2}now-highlighted-value.first-label-end{max-width:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-form-field_message--border-width,0);display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-color_alert--info-1,104,171,218)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,none)}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.now-form-field-label-label .will-truncate{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-form-field-label-label .will-truncate:after{content:\\\"\\\";display:block}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}input,textarea{font-family:inherit}:host(sn-record-control){align-items:center;display:inline-flex;margin-right:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}now-button{align-items:center;display:inline-flex}now-button span{display:block}now-button span:after,now-button span:before{block-size:0;content:\\\"\\\";display:block}now-button span:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}now-button span:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}now-button span+now-button span{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}:host(:not([dir=rtl])) now-button now-icon:first-child,:root:not([dir=rtl]) now-button now-icon:first-child{margin-right:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) now-button now-icon:first-child,:root[dir=rtl] now-button now-icon:first-child{margin-left:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) now-button now-icon:last-child,:root:not([dir=rtl]) now-button now-icon:last-child{margin-left:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) now-button now-icon:last-child,:root[dir=rtl] now-button now-icon:last-child{margin-right:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.field-decorations-container{display:flex;gap:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-form-field-layout.-horizontal{align-items:start;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr);grid-template-rows:1fr max-content}.sn-form-field-layout.-horizontal.align-center{align-items:center}.-vertical .form-field-label-wrap{margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-label-wrap{justify-content:end}.-horizontal:not(.align-center) .form-field-label-wrap{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .sn-control-highlighted-field-label-end{margin-inline-start:auto}.-vertical .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){max-width:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end{flex:1;flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){min-width:0}.-horizontal:not(.align-center) .sn-control-highlighted-field-label-end{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-message-container{grid-column-start:2}now-highlighted-value.first-label-end{max-width:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-form-field_message--border-width,0);display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-color_alert--info-1,104,171,218)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,none)}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.now-form-field-label-label .will-truncate{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-form-field-label-label .will-truncate:after{content:\\\"\\\";display:block}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}input,textarea{font-family:inherit}now-input{width:100%}:host(sn-record-input.is-focused) .sn-control-field{background:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))}.sn-control{border:0;display:flex;flex-direction:column;margin-block-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));padding:0;position:relative;width:100%}.sn-control .form-field-label-wrap{align-items:center;display:flex;height:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control .sn-control-highlighted-field-label-end{align-items:center;display:flex}.sn-control-input{border:0;display:flex;flex-direction:column;padding:0;position:relative;width:100%}.sn-control-label{align-items:center;color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));display:flex;font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;min-width:0;padding:0 0 calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy));text-transform:var(--now-form-field_label--text-transform,none)}.sn-control-label-label{margin-inline-start:0}.sn-control-label>span.now-line-height-crop{display:block}.sn-control-label>span.now-line-height-crop:after,.sn-control-label>span.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.sn-control-label>span.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.sn-control-label>span.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.sn-control-label>span.now-line-height-crop+.sn-control-label>span.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.sn-control-label>span.now-line-height-crop>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-control-label>span.now-line-height-crop>span:after{content:\\\"\\\";display:block}.sn-control-label .sn-control-field-helper,.sn-control-label>now-icon,.sn-control-label>sn-icon{display:inline-block;line-height:0;padding-inline-start:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control.has-error .sn-control-label{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control sn-record-choice-search[disabled=true],.sn-control sn-record-dropdown-internal[readonly=true]{pointer-events:none}.sn-control-controls,.sn-control-icon{align-items:center;display:flex;flex:0 0 auto;justify-content:center}.sn-control-controls now-button,.sn-control-controls sn-record-control,.sn-control-icon now-button,.sn-control-icon sn-record-control{margin-right:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-icon{margin:0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-field{background-color:RGBA(var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field--background-color-alpha,0));border-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));border-radius:var(--now-form-field--border-radius,0);border-style:solid;border-width:var(--now-form-field--border-width,0);box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGBA(var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)),var(--now-form-field_inset--color-alpha,0)),0 var(--now-form-field--border-block-end-width,1px) 0 0 RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));color:RGB(var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));display:flex;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative}.sn-control-field,.sn-control-field.read-only{padding-inline-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-field.read-only{background-color:RGBA(var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));border-width:var(--now-form-field--border-width--readonly,var(--now-form-field--border-width,0));box-shadow:0 var(--now-form-field--border-block-end-width--readonly,0) 0 0 RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));color:RGB(var(--now-form-field--color--readonly,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.sn-control-field.read-only .empty-read-only{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}.sn-control-field.read-only::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}.sn-control.is-focus .sn-control-field.read-only,.sn-control:focus .sn-control-field.read-only{background-color:RGBA(var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.sn-control.is-focus .sn-control-field.read-only:after,.sn-control:focus .sn-control-field.read-only:after{background-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:0;content:\\\"\\\";height:var(--now-form-field--border-block-end-width--readonly,0);left:0;position:absolute;right:0}.sn-control-field.is-disabled{border-color:RGBA(var(--now-form-field--border-color--disabled,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))),var(--now-opacity--less,.25));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));cursor:not-allowed}.sn-control-field:not(.is-focus,.read-only) :after{background-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-1);content:\\\"\\\";height:var(--now-form-field--border-block-end-width,1px);left:0;position:absolute;right:0}.sn-control-field:not(.is-focus).read-only :after{background-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:0;content:\\\"\\\";height:var(--now-form-field--border-block-end-width--readonly,0);left:0;position:absolute;right:0}.sn-control-field:not(.read-only).is-hover{background-color:RGBA(var(--now-form-field--background-color--hover,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))),var(--now-form-field--background-color-alpha--hover,1));border-color:RGB(var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGBA(var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)),var(--now-form-field_inset--color-alpha,0)),0 var(--now-form-field--border-block-end-width,1px) 0 0 RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))}.sn-control-field:not(.read-only).is-hover :after{background:RGB(var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-2);content:\\\"\\\";height:calc(var(--now-form-field--border-block-end-width, 1px)*2);left:0;position:absolute;right:0}.sn-control.is-focus .sn-control-field:not(.read-only),.sn-control:focus .sn-control-field:not(.read-only){background-color:RGB(var(--now-form-field--background-color--focus,var(--now-color--secondary-0,217,235,238)));border-color:RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)));box-shadow:0 calc(var(--now-form-field--border-block-end-width, 1px)*2) 0 0 RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 var(--now-form-field--border-width,0) RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)),var(--now-opacity--least,.1))}@media(forced-colors:active){.sn-control.is-focus .sn-control-field:not(.read-only),.sn-control:focus .sn-control-field:not(.read-only){border-color:highlight;outline:calc(.0625rem*var(--classicsponlydonotuse--rem-multipy)) solid highlight}}.sn-control.is-focus .sn-control-field:not(.read-only):after,.sn-control:focus .sn-control-field:not(.read-only):after{background:RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-2);content:\\\"\\\";height:calc(var(--now-form-field--border-block-end-width, 1px)*2);left:0;position:absolute;right:0}.sn-control.has-error .sn-control-field:not(.read-only){border-color:RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)));box-shadow:0 var(--now-form-field--border-block-end-width,1px) 0 RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control.has-error .sn-control-field:not(.read-only):after{background:RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control.has-error.is-readonly .sn-control-field:not(.read-only){box-shadow:0 var(--now-form-field--border-block-end-width--readonly,0) 0 RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control-field::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--most,.8))}.sn-control.-standalone .sn-control-field{border:1px solid;border-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))}.sn-control.-standalone .sn-control-field:after{display:none}.sn-control.-worknote .sn-control-field{background:RGBA(var(--now-color_alert--warning-0,244,240,191),var(--now-opacity--mid,.5))}.sn-control.-borderless .sn-control-field{border:none}.sn-control-field.no-border{border:none;box-shadow:none}.sn-control-character-counter,.sn-control-description{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin:0;padding:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy)) 0;position:relative}.has-error .sn-control-character-counter,.has-error .sn-control-description,.sn-control-character-counter.error,.sn-control-description.error{color:RGB(var(--now-color_alert--critical-3,160,48,43))}.sn-control-character-counter.warning,.sn-control-description.warning{color:RGB(var(--now-color_alert--warning-3,198,185,22))}.sn-control-messages{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));padding-top:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-message,.sn-control-messages{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.sn-control-message{border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);line-height:1.3333;margin:0 0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.sn-control-message:last-of-type{margin:0}.sn-control-message.-multi{flex-direction:column}.sn-control-message.-danger{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-primary,.sn-control-message.-success{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-suggestion{background-color:RGBA(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.sn-control-message-row{align-items:center;display:flex;line-height:1.3333;margin:0 0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.sn-control-message-row:last-of-type{margin:0}.sn-control-message-content now-icon{display:flex;margin-inline-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-message-content>span{align-self:center;display:block}.sn-control-message-content>span:after,.sn-control-message-content>span:before{block-size:0;content:\\\"\\\";display:block}.sn-control-message-content>span:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.sn-control-message-content>span:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.sn-control-message-content>span+.sn-control-message-content>span{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.sn-control-message-content>span>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-control-message-content>span>span:after{content:\\\"\\\";display:block}.sn-control-group{align-items:center;display:flex;position:relative}.sn-dropdown{background:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border:1px solid;border-color:RGB(var(--now-color--primary-2,23,100,82));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));left:auto;list-style:none;margin:-2px 0 0;padding:0;position:fixed;z-index:1000}.sn-dropdown-header{align-items:center;background:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)));display:flex;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600;overflow:hidden;padding-bottom:calc(var(--now-scale-space--sm, 1)*6px);padding-top:calc(var(--now-scale-space--sm, 1)*6px);text-overflow:ellipsis;white-space:nowrap;width:100%}.sn-dropdown-header:after{content:\\\"\\\";display:block}:host(:not([dir=rtl])) .sn-dropdown-header,:root:not([dir=rtl]) .sn-dropdown-header{padding-left:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-header,:root[dir=rtl] .sn-dropdown-header{padding-right:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sn-dropdown-header,:root:not([dir=rtl]) .sn-dropdown-header{padding-right:calc(var(--now-scale-space--xl, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-header,:root[dir=rtl] .sn-dropdown-header{padding-left:calc(var(--now-scale-space--xl, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-dropdown-list{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));list-style:none;margin:0;max-height:300px;overflow-x:hidden;overflow-y:auto;padding:0;position:relative;width:100%}.sn-dropdown-list-item{background:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));cursor:pointer;display:flex;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-bottom:calc(var(--now-scale-space--sm, 1)*6px);padding-top:calc(var(--now-scale-space--sm, 1)*6px);position:relative;text-decoration:none}:host(:not([dir=rtl])) .sn-dropdown-list-item,:root:not([dir=rtl]) .sn-dropdown-list-item{padding-left:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-list-item,:root[dir=rtl] .sn-dropdown-list-item{padding-right:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sn-dropdown-list-item,:root:not([dir=rtl]) .sn-dropdown-list-item{padding-right:calc(var(--now-scale-space--xl, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-list-item,:root[dir=rtl] .sn-dropdown-list-item{padding-left:calc(var(--now-scale-space--xl, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-dropdown-list-item.is-focus,.sn-dropdown-list-item.is-hover,.sn-dropdown-list-item:focus,.sn-dropdown-list-item:hover{background:RGB(var(--now-color--secondary-0,217,235,238))}.sn-dropdown-list-item-content{align-items:center;display:inline-flex;flex:1 1 auto;flex-wrap:wrap;overflow:hidden;position:relative}.sn-dropdown-list-item-content>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-dropdown-list-item-content>span:after{content:\\\"\\\";display:block}.sn-dropdown-list-item-content .sn-secondary-delimiter{white-space:pre}.sn-dropdown-list-item-content .highlight{background-color:RGBA(var(--now-color_alert--warning-0,244,240,191),var(--now-opacity--more,.65));font-weight:600}.sn-dropdown-list-item-title{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative;width:100%}.sn-dropdown-list-selected-icon{align-items:center;color:RGB(var(--now-color--secondary-1,1,119,142));display:flex;flex:0 0 auto;justify-content:center;width:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sn-dropdown-list-selected-icon,:root:not([dir=rtl]) .sn-dropdown-list-selected-icon{margin-right:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-list-selected-icon,:root[dir=rtl] .sn-dropdown-list-selected-icon{margin-left:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-el-input{align-items:center;background:transparent;border:0;color:inherit;cursor:text;display:inline-flex;flex:1 1 auto;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field--font-style,normal);font-weight:var(--now-form-field--font-weight,normal);height:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);margin:0;min-width:1px;padding:0;padding-inline-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));position:relative;text-transform:var(--now-form-field--text-transform,none);width:100%}.sn-el-input:focus{outline:none}.sn-el-input::-ms-clear{display:none}.sn-el-input:-moz-ui-invalid{box-shadow:none}.is-disabled .sn-el-input,.sn-el-input.is-disabled{cursor:not-allowed}.sn-el-input::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--most,.8))}.is-align-end .sn-el-input,.is-reversed .sn-el-input{text-align:end}.is-align-end-reversed .sn-el-input{text-align:start}.sn-el-input:read-only::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}now-textarea{display:inline}now-textarea.fit-to-parent{margin-block:0;padding-block-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.fit-to-parent{block-size:100%}:not([type=textarea i]) .sn-control-field{height:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".now-resizable-target{position:absolute;z-index:1000}.now-resizable-target.-inline{block-size:100%;inline-size:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));inset-block-start:0}.now-resizable-target.-inline.-right{inset-inline-end:0}:host([dir=rtl]) .now-resizable-target.-inline.-right{inset-inline:calc(-.25rem*var(--classicsponlydonotuse--rem-multipy)) auto}.now-resizable-target.-inline.-right.-cursor{cursor:ew-resize}.now-resizable-target.-inline.-left{inset-inline-start:0}:host([dir=rtl]) .now-resizable-target.-inline.-left{inset-inline:auto calc(-.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-resizable-target.-inline.-left.-cursor{cursor:ew-resize}.now-resizable-target.-block{block-size:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));inline-size:100%;inset-inline-start:0}.now-resizable-target.-block.-top{inset-block-start:0}.now-resizable-target.-block.-top.-cursor{cursor:ns-resize}.now-resizable-target.-block.-bottom{inset-block-end:0}.now-resizable-target.-block.-bottom.-cursor{cursor:ns-resize}.now-resizable-target.-corner{block-size:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-resizable-target.-corner.-top-left{inset-block-start:0;inset-inline-start:0}:host([dir=rtl]) .now-resizable-target.-corner.-top-left{inset-inline:auto 0}.now-resizable-target.-corner.-top-left.-cursor{cursor:nwse-resize}.now-resizable-target.-corner.-top-right{inset-block-start:0;inset-inline-end:0}:host([dir=rtl]) .now-resizable-target.-corner.-top-right{inset-inline:0 auto}.now-resizable-target.-corner.-top-right.-cursor{cursor:nesw-resize}.now-resizable-target.-corner.-bottom-right{block-size:unset;inline-size:unset;inset-block-end:0;inset-inline-end:0}:host([dir=rtl]) .now-resizable-target.-corner.-bottom-right{block-size:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));inset-inline:0 auto}.now-resizable-target.-corner.-bottom-right.-cursor{cursor:nwse-resize}.now-resizable-target.-corner.-bottom-left{inset-block-end:0;inset-inline-start:0}:host([dir=rtl]) .now-resizable-target.-corner.-bottom-left{block-size:unset;inline-size:unset;inset-inline:auto 0;rotate:90deg}.now-resizable-target.-corner.-bottom-left.-cursor{cursor:nesw-resize}.is-active .now-resizable-target{border-color:RGB(var(--now-color--focus-2,1,119,142))}.is-active .now-resizable-target.-inline{block-size:calc(100% - 1.5rem*var(--classicsponlydonotuse--rem-multipy)*2);margin-block:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.is-active .now-resizable-target.-inline.-right{border-inline-end-style:solid;border-inline-end-width:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.is-active .now-resizable-target.-inline.-left{border-inline-start-style:solid;border-inline-start-width:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.is-active .now-resizable-target.-block{inline-size:calc(100% - 1.5rem*var(--classicsponlydonotuse--rem-multipy)*2);margin-inline:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.is-active .now-resizable-target.-block.-top{border-block-start-style:solid;border-block-start-width:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.is-active .now-resizable-target.-block.-bottom{border-block-end-style:solid;border-block-end-width:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-resizable-target-button{background-color:transparent;border:0;border-radius:var(--now-button-stateful--primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));color:RGB(var(--now-button-stateful--primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))));cursor:inherit;display:flex;padding:0}.now-resizable-target-button::-moz-focus-inner{border-style:none}.now-resizable-target-button:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-resizable-target-button:focus{outline:1px solid highlight}}.now-resizable-target-button:hover{background-color:RGB(var(--now-button-stateful--primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button-stateful--primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-resizable-target-button:active{background-color:RGB(var(--now-button-stateful--primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button-stateful--primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-resizable-target-button.is-selected{color:RGB(var(--now-button-stateful--primary--color--selected,var(--now-actionable_icon--primary_bare--color--selected,var(--now-color--primary-2,23,100,82))))}.now-resizable-target-button.is-selected:hover{background-color:RGB(var(--now-button-stateful--primary--background-color--selected_hover,var(--now-actionable--primary_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button-stateful--primary--color--selected_hover,var(--now-actionable_icon--primary_bare--color--selected_hover,var(--now-color--primary-3,15,67,55))))}.now-resizable-target-button.is-selected:active{background-color:RGB(var(--now-button-stateful--primary--background-color--selected_active,var(--now-actionable--primary_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button-stateful--primary--color--selected_active,var(--now-actionable_icon--primary_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-resizable-target-button>svg{fill:currentcolor}@media(forced-colors:active){.now-resizable-target-button{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-resizable-target-button now-icon,.now-resizable-target-button now-icon-animated{color:inherit!important}.now-resizable-target-button:focus,.now-resizable-target-button:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-resizable-target-button.is-disabled,.now-resizable-target-button.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-resizable-target-button.is-selected{background-color:selecteditem!important;border-color:selecteditemtext;color:selecteditemtext!important}.now-resizable-target-button.is-selected.is-disabled{background-color:buttonface!important;color:graytext!important}.now-resizable-target-button>svg{forced-color-adjust:auto}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-button{align-items:center;border-end-end-radius:var(--now-button--border-end-end-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-end-start-radius:var(--now-button--border-end-start-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-start-end-radius:var(--now-button--border-start-end-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-start-start-radius:var(--now-button--border-start-start-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-style:solid;cursor:pointer;display:flex;font-family:var(--now-button--font-family,var(--now-actionable--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-style:var(--now-button--font-style,var(--now-actionable--font-style,normal));font-variant:normal;font-weight:var(--now-button--font-weight,var(--now-actionable--font-weight,bold));inline-size:inherit;justify-content:center;letter-spacing:inherit;margin:0;text-indent:0;text-shadow:none;text-transform:var(--now-button--text-transform,var(--now-actionable--text-transform,none));white-space:normal;word-spacing:inherit}.now-button:hover{box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-button:focus::-moz-focus-inner{border-style:none}.now-button:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button:focus:focus{outline:1px solid highlight}}.now-button.-sm{font-size:var(--now-actionable--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;min-block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-button.-sm .now-line-height-crop{display:block}.now-button.-sm .now-line-height-crop:after,.now-button.-sm .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button.-sm .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-button.-sm .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-button.-sm .now-line-height-crop+.now-button.-sm .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-button.-sm:not(.only-icon) .now-button-icon{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-button.-md{font-size:var(--now-actionable--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1));padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-button.-md .now-line-height-crop{display:block}.now-button.-md .now-line-height-crop:after,.now-button.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button.-md .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-button.-md .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-button.-md .now-line-height-crop+.now-button.-md .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-button.-md:not(.only-icon) .now-button-icon{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-button.-lg{font-size:var(--now-actionable--font-size--lg,var(--now-font-size--lg1,calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-block-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1));padding-inline:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-button.-lg .now-line-height-crop{display:block}.now-button.-lg .now-line-height-crop:after,.now-button.-lg .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button.-lg .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-button.-lg .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-button.-lg .now-line-height-crop+.now-button.-lg .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-button.-lg:not(.only-icon) .now-button-icon{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-button.-primary{background-color:RGB(var(--now-button--primary--background-color,var(--now-actionable--primary--background-color,var(--now-color--primary-1,30,133,109))));border-color:RGB(var(--now-button--primary--border-color,var(--now-actionable--primary--border-color,var(--now-color--primary-1,30,133,109))));border-end-end-radius:var(--now-button--primary--border-end-end-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-end-start-radius:var(--now-button--primary--border-end-start-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-start-end-radius:var(--now-button--primary--border-start-end-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-start-start-radius:var(--now-button--primary--border-start-start-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button--primary--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0)));color:RGB(var(--now-button--primary--color,var(--now-actionable_label--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary .now-button-icon{color:RGB(var(--now-button_icon--primary--color,var(--now-actionable_icon--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button--primary--background-color--hover,var(--now-actionable--primary--background-color--hover,var(--now-color--primary-2,23,100,82))));border-color:RGB(var(--now-button--primary--border-color--hover,var(--now-actionable--primary--border-color--hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-button--primary--color--hover,var(--now-actionable_label--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--primary--color--hover,var(--now-actionable_icon--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):active{background-color:RGB(var(--now-button--primary--background-color--active,var(--now-actionable--primary--background-color--active,var(--now-color--primary-3,15,67,55))));border-color:RGB(var(--now-button--primary--border-color--active,var(--now-actionable--primary--border-color--active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-button--primary--color--active,var(--now-actionable_label--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--primary--color--active,var(--now-actionable_icon--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.is-disabled{opacity:var(--now-button--primary--opacity--disabled,var(--now-actionable--primary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-primary.-positive{background-color:RGB(var(--now-button--primary-positive--background-color,var(--now-actionable--primary-positive--background-color,var(--now-color_alert--positive-3,30,105,34))));border-color:RGB(var(--now-button--primary-positive--border-color,var(--now-actionable--primary-positive--border-color,var(--now-color_alert--positive-3,30,105,34))));border-end-end-radius:var(--now-button--primary-positive--border-end-end-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-end-start-radius:var(--now-button--primary-positive--border-end-start-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-start-end-radius:var(--now-button--primary-positive--border-start-end-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-start-start-radius:var(--now-button--primary-positive--border-start-start-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button--primary-positive--border-width,var(--now-actionable--primary-positive--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0))));color:RGB(var(--now-button--primary-positive--color,var(--now-actionable_label--primary-positive--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive .now-button-icon{color:RGB(var(--now-button_icon--primary-positive--color,var(--now-actionable_icon--primary-positive--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):hover{background-color:RGB(var(--now-button--primary-positive--background-color--hover,var(--now-actionable--primary-positive--background-color--hover,var(--now-color_alert--positive-4,22,79,26))));border-color:RGB(var(--now-button--primary-positive--border-color--hover,var(--now-actionable--primary-positive--border-color--hover,var(--now-color_alert--positive-4,22,79,26))));color:RGB(var(--now-button--primary-positive--color--hover,var(--now-actionable_label--primary-positive--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--primary-positive--color--hover,var(--now-actionable_icon--primary-positive--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):active{background-color:RGB(var(--now-button--primary-positive--background-color--active,var(--now-actionable--primary-positive--background-color--active,var(--now-color_alert--positive-5,15,52,17))));border-color:RGB(var(--now-button--primary-positive--border-color--active,var(--now-actionable--primary-positive--border-color--active,var(--now-color_alert--positive-5,15,52,17))));color:RGB(var(--now-button--primary-positive--color--active,var(--now-actionable_label--primary-positive--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--primary-positive--color--active,var(--now-actionable_icon--primary-positive--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive.is-disabled{opacity:var(--now-button--primary-positive--opacity--disabled,var(--now-actionable--primary-positive--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-primary.-negative{background-color:RGB(var(--now-button--primary-negative--background-color,var(--now-actionable--primary-negative--background-color,var(--now-color_alert--critical-3,160,48,43))));border-color:RGB(var(--now-button--primary-negative--border-color,var(--now-actionable--primary-negative--border-color,var(--now-color_alert--critical-3,160,48,43))));border-end-end-radius:var(--now-button--primary-negative--border-end-end-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-end-start-radius:var(--now-button--primary-negative--border-end-start-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-start-end-radius:var(--now-button--primary-negative--border-start-end-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-start-start-radius:var(--now-button--primary-negative--border-start-start-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button--primary-negative--border-width,var(--now-actionable--primary-negative--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0))));color:RGB(var(--now-button--primary-negative--color,var(--now-actionable_label--primary-negative--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative .now-button-icon{color:RGB(var(--now-button_icon--primary-negative--color,var(--now-actionable_icon--primary-negative--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):hover{background-color:RGB(var(--now-button--primary-negative--background-color--hover,var(--now-actionable--primary-negative--background-color--hover,var(--now-color_alert--critical-4,120,36,32))));border-color:RGB(var(--now-button--primary-negative--border-color--hover,var(--now-actionable--primary-negative--border-color--hover,var(--now-color_alert--critical-4,120,36,32))));color:RGB(var(--now-button--primary-negative--color--hover,var(--now-actionable_label--primary-negative--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--primary-negative--color--hover,var(--now-actionable_icon--primary-negative--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):active{background-color:RGB(var(--now-button--primary-negative--background-color--active,var(--now-actionable--primary-negative--background-color--active,var(--now-color_alert--critical-5,80,24,22))));border-color:RGB(var(--now-button--primary-negative--border-color--active,var(--now-actionable--primary-negative--border-color--active,var(--now-color_alert--critical-5,80,24,22))));color:RGB(var(--now-button--primary-negative--color--active,var(--now-actionable_label--primary-negative--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--primary-negative--color--active,var(--now-actionable_icon--primary-negative--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative.is-disabled{opacity:var(--now-button--primary-negative--opacity--disabled,var(--now-actionable--primary-negative--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-secondary{background-color:RGB(var(--now-button--secondary--background-color,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142))),var(--now-button--secondary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--secondary--border-color,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142))));border-end-end-radius:var(--now-button--secondary--border-end-end-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-end-start-radius:var(--now-button--secondary--border-end-start-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-start-end-radius:var(--now-button--secondary--border-start-end-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-start-start-radius:var(--now-button--secondary--border-start-start-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button--secondary--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--secondary--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-button.-secondary .now-button-icon{color:RGB(var(--now-button_icon--secondary--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-button.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button--secondary--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))),var(--now-button--secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--secondary--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))));color:RGB(var(--now-button--secondary--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-button.-secondary:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--secondary--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-button.-secondary:not(.is-disabled):active{background-color:RGB(var(--now-button--secondary--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))),var(--now-button--secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--secondary--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))));color:RGB(var(--now-button--secondary--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-button.-secondary:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--secondary--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-button.-secondary.is-disabled{opacity:var(--now-button--secondary--opacity--disabled,var(--now-actionable--secondary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-secondary.-positive{background-color:RGB(var(--now-button--secondary-positive--background-color,var(--now-actionable--secondary-positive--background-color,var(--now-color_alert--positive-3,30,105,34))),var(--now-button--secondary-positive--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--secondary-positive--border-color,var(--now-actionable--secondary-positive--border-color,var(--now-color_alert--positive-3,30,105,34))));border-end-end-radius:var(--now-button--secondary-positive--border-end-end-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-end-start-radius:var(--now-button--secondary-positive--border-end-start-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-start-end-radius:var(--now-button--secondary-positive--border-start-end-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-start-start-radius:var(--now-button--secondary-positive--border-start-start-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button--secondary-positive--border-width,var(--now-actionable--secondary-positive--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button--secondary-positive--color,var(--now-actionable_label--secondary-positive--color,var(--now-color_alert--positive-3,30,105,34))))}.now-button.-secondary.-positive .now-button-icon{color:RGB(var(--now-button_icon--secondary-positive--color,var(--now-actionable_icon--secondary-positive--color,var(--now-color_alert--positive-3,30,105,34))))}.now-button.-secondary.-positive:not(.is-disabled):hover{background-color:RGB(var(--now-button--secondary-positive--background-color--hover,var(--now-actionable--secondary-positive--background-color--hover,var(--now-color_alert--positive-3,30,105,34))),var(--now-button--secondary-positive--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--secondary-positive--border-color--hover,var(--now-actionable--secondary-positive--border-color--hover,var(--now-color_alert--positive-4,22,79,26))));color:RGB(var(--now-button--secondary-positive--color--hover,var(--now-actionable_label--secondary-positive--color--hover,var(--now-color_alert--positive-4,22,79,26))))}.now-button.-secondary.-positive:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--secondary-positive--color--hover,var(--now-actionable_icon--secondary-positive--color--hover,var(--now-color_alert--positive-4,22,79,26))))}.now-button.-secondary.-positive:not(.is-disabled):active{background-color:RGB(var(--now-button--secondary-positive--background-color--active,var(--now-actionable--secondary-positive--background-color--active,var(--now-color_alert--positive-3,30,105,34))),var(--now-button--secondary-positive--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--secondary-positive--border-color--active,var(--now-actionable--secondary-positive--border-color--active,var(--now-color_alert--positive-5,15,52,17))));color:RGB(var(--now-button--secondary-positive--color--active,var(--now-actionable_label--secondary-positive--color--active,var(--now-color_alert--positive-5,15,52,17))))}.now-button.-secondary.-positive:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--secondary-positive--color--active,var(--now-actionable_icon--secondary-positive--color--active,var(--now-color_alert--positive-5,15,52,17))))}.now-button.-secondary.-positive.is-disabled{opacity:var(--now-button--secondary-positive--opacity--disabled,var(--now-actionable--secondary-positive--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-secondary.-negative{background-color:RGB(var(--now-button--secondary-negative--background-color,var(--now-actionable--secondary-negative--background-color,var(--now-color_alert--critical-0,241,206,205))),var(--now-button--secondary-negative--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--secondary-negative--border-color,var(--now-actionable--secondary-negative--border-color,var(--now-color_alert--critical-3,160,48,43))));border-end-end-radius:var(--now-button--secondary-negative--border-end-end-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-end-start-radius:var(--now-button--secondary-negative--border-end-start-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-start-end-radius:var(--now-button--secondary-negative--border-start-end-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-start-start-radius:var(--now-button--secondary-negative--border-start-start-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button--secondary-negative--border-width,var(--now-actionable--secondary-negative--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button--secondary-negative--color,var(--now-actionable_label--secondary-negative--color,var(--now-color_alert--critical-3,160,48,43))))}.now-button.-secondary.-negative .now-button-icon{color:RGB(var(--now-button_icon--secondary-negative--color,var(--now-actionable_icon--secondary-negative--color,var(--now-color_alert--critical-3,160,48,43))))}.now-button.-secondary.-negative:not(.is-disabled):hover{background-color:RGB(var(--now-button--secondary-negative--background-color--hover,var(--now-actionable--secondary-negative--background-color--hover,var(--now-color_alert--critical-3,160,48,43))),var(--now-button--secondary-negative--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--secondary-negative--border-color--hover,var(--now-actionable--secondary-negative--border-color--hover,var(--now-color_alert--critical-4,120,36,32))));color:RGB(var(--now-button--secondary-negative--color--hover,var(--now-actionable_label--secondary-negative--color--hover,var(--now-color_alert--critical-4,120,36,32))))}.now-button.-secondary.-negative:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--secondary-negative--color--hover,var(--now-actionable_icon--secondary-negative--color--hover,var(--now-color_alert--critical-4,120,36,32))))}.now-button.-secondary.-negative:not(.is-disabled):active{background-color:RGB(var(--now-button--secondary-negative--background-color--active,var(--now-actionable--secondary-negative--background-color--active,var(--now-color_alert--critical-3,160,48,43))),var(--now-button--secondary-negative--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--secondary-negative--border-color--active,var(--now-actionable--secondary-negative--border-color--active,var(--now-color_alert--critical-5,80,24,22))));color:RGB(var(--now-button--secondary-negative--color--active,var(--now-actionable_label--secondary-negative--color--active,var(--now-color_alert--critical-5,80,24,22))))}.now-button.-secondary.-negative:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--secondary-negative--color--active,var(--now-actionable_icon--secondary-negative--color--active,var(--now-color_alert--critical-5,80,24,22))))}.now-button.-secondary.-negative.is-disabled{opacity:var(--now-button--secondary-negative--opacity--disabled,var(--now-actionable--secondary-negative--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-tertiary{background-color:RGB(var(--now-button--tertiary--background-color,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--tertiary--border-color,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))),var(--now-button--tertiary--border-color-alpha,1));border-end-end-radius:var(--now-button--tertiary--border-end-end-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-end-start-radius:var(--now-button--tertiary--border-end-start-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-start-end-radius:var(--now-button--tertiary--border-start-end-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-start-start-radius:var(--now-button--tertiary--border-start-start-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button--tertiary--border-width,var(--now-actionable--tertiary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--tertiary--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))),var(--now-button--tertiary--color-alpha,1))}.now-button.-tertiary .now-button-icon{color:RGB(var(--now-button_icon--tertiary--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-button.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button--tertiary--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--tertiary--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--border-color-alpha--hover,1));color:RGB(var(--now-button--tertiary--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--color-alpha--hover,1))}.now-button.-tertiary:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--tertiary--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.now-button.-tertiary:not(.is-disabled):active{background-color:RGB(var(--now-button--tertiary--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--tertiary--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))),var(--now-button--tertiary--border-color-alpha--active,1));color:RGB(var(--now-button--tertiary--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--tertiary--color-alpha--active,1))}.now-button.-tertiary:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--tertiary--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button.-tertiary.is-disabled{opacity:var(--now-button--tertiary--opacity--disabled,var(--now-actionable--tertiary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button.is-disabled:hover{box-shadow:none}.now-button.is-disabled:focus::-moz-focus-inner{border-style:none}.now-button.is-disabled:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button.is-disabled:focus:focus{outline:1px solid highlight}}.now-button.is-bare,.now-button.is-bare:active,.now-button.is-bare:hover{background-color:transparent;border-color:transparent;border-width:0}.now-button.is-bare:focus::-moz-focus-inner{border-style:none}.now-button.is-bare:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-button.is-bare:focus:focus{outline:1px solid highlight}}.now-button.is-bare.only-icon:hover{background-color:RGB(var(--now-color--neutral-9,99,114,116),.1)}.now-button.is-bare.only-icon:active{background-color:RGB(var(--now-color--neutral-9,99,114,116),.35)}.now-button.is-bare.-inherit,.now-button.is-bare.-inherit:active,.now-button.is-bare.-inherit:hover{color:inherit}.now-button.is-bare.-primary{color:RGB(var(--now-button--bare_primary--color,var(--now-actionable_label--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button.is-bare.-primary:not(.is-disabled):hover{background-color:RGBA(var(--now-button--bare_primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button--bare_primary--color--hover,var(--now-actionable_label--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button.is-bare.-primary:not(.is-disabled):active{background-color:RGBA(var(--now-button--bare_primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button--bare_primary--color--active,var(--now-actionable_label--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button.is-bare.-secondary{color:RGB(var(--now-button--bare_secondary--color,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button.is-bare.-secondary:not(.is-disabled):hover{background-color:RGBA(var(--now-button--bare_secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button--bare_secondary--color--hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button.is-bare.-secondary:not(.is-disabled):active{background-color:RGBA(var(--now-button--bare_secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button--bare_secondary--color--active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button.is-bare.-tertiary{color:RGB(var(--now-button--bare_tertiary--color,var(--now-actionable_label--tertiary_bare--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button.is-bare.-tertiary:not(.is-disabled):hover{background-color:RGBA(var(--now-button--bare_tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button--bare_tertiary--color--hover,var(--now-actionable_label--tertiary_bare--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button.is-bare.-tertiary:not(.is-disabled):active{background-color:RGBA(var(--now-button--bare_tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button--bare_tertiary--color--active,var(--now-actionable_label--tertiary_bare--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button.is-bare.is-disabled,.now-button.is-bare.is-disabled:hover{background-color:transparent;border-color:transparent}.now-button.only-icon{padding-inline:0}.now-button.only-icon.-sm{inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button.only-icon.-md{inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button.only-icon.-lg{inline-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2)}@media(forced-colors:active){.now-button{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button now-icon,.now-button now-icon-animated{color:inherit!important}.now-button:focus,.now-button:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button.is-disabled,.now-button.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-button .now-line-height-crop{forced-color-adjust:none}.now-button ::slotted(*){forced-color-adjust:none}}:host{display:block}.now-alert-list{inset-block-start:0;inset-inline:0;margin:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:absolute;z-index:3000}.now-alert-list.is-collapsed{block-size:calc(4.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-alert-list-ul{list-style-type:none;margin-block:0;padding-inline-start:0;position:relative}.now-alert-list-ul>li{position:relative}.now-alert-list-ul>li:focus{outline:none}.now-alert-list-ul>li:focus:after{block-size:100%;border-radius:var(--now-alert--border-radius,var(--now-messaging--border-radius,4px));box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));content:\\\"\\\";inline-size:100%;inset-block-start:0;inset-inline-start:0;pointer-events:none;position:absolute}.now-alert-list-ul>li:focus::-moz-focus-inner{border-style:none}.now-alert-list-controller{--now-button--font-style:var(--now-alert-list_controller--font-style,var(--now-messaging-controller--font-style,var(--now-messaging--font-style,normal)));--now-button--font-weight:var(--now-alert-list_controller--font-weight,var(--now-messaging-controller--font-weight,bold));--now-button--font-family:var(--now-alert-list_controller--font-family,var(--now-messaging-controller--font-family,var(--now-messaging--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));--now-button--text-transform:var(--now-alert-list_controller--text-transform,var(--now-messaging-controller--text-transform,var(--now-messaging--text-transform,none)));background-color:RGB(var(--now-alert-list_controller--background-color,var(--now-messaging-controller--background-color,var(--now-color_alert--low-0,217,217,217))));border-color:RGB(var(--now-alert-list_controller--border-color,var(--now-messaging-controller--border-color,var(--now-color_alert--low-1,159,159,159))));border-radius:var(--now-alert-list_controller--border-radius,var(--now-messaging-controller--border-radius,var(--now-messaging--border-radius,4px)));border-style:solid;border-width:var(--now-alert-list_controller--border-width,var(--now-messaging-controller--border-width,var(--now-messaging--border-width,1px)));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));display:flex;flex-wrap:wrap;inline-size:100%;justify-content:space-between;margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));position:relative;z-index:3}.now-alert-list-controller-toggle{flex-grow:1;margin:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-alert-list-controller-toggle-button{--now-button--scale-size-inline:1;--now-button--scale-size-block:1;--now-button--secondary--border-color:var(--now-alert-list_controller-toggle--border-color,var(--now-messaging-controller_toggle--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--secondary--border-color--hover:var(--now-alert-list_controller-toggle--border-color--hover,var(--now-messaging-controller_toggle--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--secondary--border-color--active:var(--now-alert-list_controller-toggle--border-color--active,var(--now-messaging-controller_toggle--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--secondary--border-width:var(--now-alert-list_controller-toggle--border-width,var(--now-messaging-controller_toggle--border-width,var(--now-messaging_action--primary_bare--border-width,0px)));--now-button--secondary--border-radius:var(--now-alert-list_controller-toggle--border-radius,var(--now-messaging-controller_toggle--border-radius,var(--now-messaging_action--primary_bare--border-radius,var(--now-messaging--border-radius,4px))));--now-button--secondary--color:var(--now-alert-list_controller-toggle--color,var(--now-messaging-controller_toggle_label--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--secondary--color--hover:var(--now-alert-list_controller-toggle--color--hover,var(--now-messaging-controller_toggle_label--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--secondary--color--active:var(--now-alert-list_controller-toggle--color--active,var(--now-messaging-controller_toggle_label--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--secondary--background-color:var(--now-alert-list_controller-toggle--background-color,var(--now-messaging-controller_toggle--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--secondary--background-color-alpha:var(--now-alert-list_controller-toggle--background-color-alpha,var(--now-messaging-controller_toggle--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0)));--now-button--secondary--background-color--hover:var(--now-alert-list_controller-toggle--background-color--hover,var(--now-messaging-controller_toggle--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--secondary--background-color-alpha--hover:var(--now-alert-list_controller-toggle--background-color-alpha--hover,var(--now-messaging-controller_toggle--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25))));--now-button--secondary--background-color--active:var(--now-alert-list_controller-toggle--background-color--active,var(--now-messaging-controller_toggle--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--secondary--background-color-alpha--active:var(--now-alert-list_controller-toggle--background-color-alpha--active,var(--now-messaging-controller_toggle--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65))));inline-size:100%}.now-alert-list-controller-toggle-button:hover{box-shadow:none}.now-alert-list-controller-dismiss{margin-inline:auto}.now-alert-list-controller-dismiss-button{--now-button--tertiary--border-color:var(--now-alert-list_controller-dismiss--border-color,var(--now-messaging-controller_action--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha:var(--now-alert-list_controller-dismiss--border-color-alpha,var(--now-messaging-controller_action--border-color-alpha,var(--now-messaging_action--primary--border-color-alpha,1)));--now-button--tertiary--border-color-alpha--hover:var(--now-alert-list_controller-dismiss--border-color-alpha--hover,var(--now-messaging-controller_action--border-color-alpha--hover,var(--now-messaging_action--primary--border-color-alpha--hover,1)));--now-button--tertiary--border-color-alpha--active:var(--now-alert-list_controller-dismiss--border-color-alpha--active,var(--now-messaging-controller_action--border-color-alpha--active,var(--now-messaging_action--primary--border-color-alpha--active,1)));--now-button--tertiary--border-color--hover:var(--now-alert-list_controller-dismiss--border-color--hover,var(--now-messaging-controller_action--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color--active:var(--now-alert-list_controller-dismiss--border-color--active,var(--now-messaging-controller_action--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--color:var(--now-alert-list_controller-dismiss--color,var(--now-messaging-controller_action_label--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--hover:var(--now-alert-list_controller-dismiss--color--hover,var(--now-messaging-controller_action_label--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--active:var(--now-alert-list_controller-dismiss--color--active,var(--now-messaging-controller_action_label--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--background-color:var(--now-alert-list_controller-dismiss--background-color,var(--now-messaging-controller_action--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha:var(--now-alert-list_controller-dismiss--background-color-alpha,var(--now-messaging-controller_action--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0)));--now-button--tertiary--background-color--hover:var(--now-alert-list_controller-dismiss--background-color--hover,var(--now-messaging-controller_action--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--hover:var(--now-alert-list_controller-dismiss--background-color-alpha--hover,var(--now-messaging-controller_action--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25))));--now-button--tertiary--background-color--active:var(--now-alert-list_controller-dismiss--background-color--active,var(--now-messaging-controller_action--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--active:var(--now-alert-list_controller-dismiss--background-color-alpha--active,var(--now-messaging-controller_action--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65))));margin:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.now-alert-list-controller{border-width:1px}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}:host{display:block}.now-alert{border-radius:var(--now-alert--border-radius,var(--now-messaging--border-radius,4px));border-style:solid;border-width:var(--now-alert--border-width,var(--now-messaging--border-width,1px));color:RGB(var(--now-alert--color,var(--now-messaging_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));display:flex;font-family:var(--now-alert--font-family,var(--now-messaging--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-size:var(--now-messaging_message--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-alert--font-style,var(--now-messaging--font-style,normal));font-variant:normal;font-weight:var(--now-alert--font-weight,var(--now-messaging--font-weight,normal));inline-size:100%;letter-spacing:inherit;line-height:1.25;margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));min-block-size:calc(3.125rem*var(--classicsponlydonotuse--rem-multipy));padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));text-align:start;text-indent:0;text-shadow:none;text-transform:var(--now-alert--text-transform,var(--now-messaging--text-transform,none));white-space:normal;word-spacing:inherit}.now-alert.-dismiss{flex-wrap:wrap;padding-block:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0;padding-inline:0}.now-alert.-critical{background-color:RGB(var(--now-alert--critical--background-color,var(--now-messaging--primary_critical--background-color,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-alert--critical--border-color,var(--now-messaging--primary_critical--border-color,var(--now-color_alert--critical-1,221,133,129))))}.now-alert.-high{background-color:RGB(var(--now-alert--high--background-color,var(--now-messaging--primary_high--background-color,var(--now-color_alert--high-0,247,228,200))));border-color:RGB(var(--now-alert--high--border-color,var(--now-messaging--primary_high--border-color,var(--now-color_alert--high-1,234,186,117))))}.now-alert.-warning{background-color:RGB(var(--now-alert--warning--background-color,var(--now-messaging--primary_warning--background-color,var(--now-color_alert--warning-0,244,240,191))));border-color:RGB(var(--now-alert--warning--border-color,var(--now-messaging--primary_warning--border-color,var(--now-color_alert--warning-1,227,218,96))))}.now-alert.-moderate{background-color:RGB(var(--now-alert--moderate--background-color,var(--now-messaging--primary_moderate--background-color,var(--now-color_alert--moderate-0,212,213,243))));border-color:RGB(var(--now-alert--moderate--border-color,var(--now-messaging--primary_moderate--border-color,var(--now-color_alert--moderate-1,148,149,225))))}.now-alert.-info{background-color:RGB(var(--now-alert--info--background-color,var(--now-messaging--primary_info--background-color,var(--now-color_alert--info-0,195,221,240))));border-color:RGB(var(--now-alert--info--border-color,var(--now-messaging--primary_info--border-color,var(--now-color_alert--info-1,104,171,218))))}.now-alert.-positive{background-color:RGB(var(--now-alert--positive--background-color,var(--now-messaging--primary_positive--background-color,var(--now-color_alert--positive-0,201,224,202))));border-color:RGB(var(--now-alert--positive--border-color,var(--now-messaging--primary_positive--border-color,var(--now-color_alert--positive-1,119,178,123))))}.now-alert.-low{background-color:RGB(var(--now-alert--low--background-color,var(--now-messaging--primary_low--background-color,var(--now-color_alert--low-0,217,217,217))));border-color:RGB(var(--now-alert--low--border-color,var(--now-messaging--primary_low--border-color,var(--now-color_alert--low-1,159,159,159))))}.now-alert.show-shadow{box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-alert .now-line-height-crop{display:block}.now-alert .now-line-height-crop:after,.now-alert .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-alert .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-alert .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-alert .now-line-height-crop+.now-alert .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-alert-header{color:RGB(var(--now-alert_header--color,var(--now-messaging_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-alert_header--font-family,var(--now-messaging_header--primary--font-family,var(--now-messaging--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-messaging_header--font-size--md,var(--now-display-type_header--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-alert_header--font-style,var(--now-messaging_header--primary--font-style,var(--now-messaging--font-style,normal)));font-weight:var(--now-alert_header--font-weight,var(--now-messaging_header--primary--font-weight,bold));line-height:1.25;text-transform:var(--now-alert_header--text-transform,var(--now-messaging_header--primary--text-transform,var(--now-messaging--text-transform,none)))}.-critical .now-alert-header{color:RGB(var(--now-alert_header--critical--color,var(--now-messaging_header--primary_critical--color,var(--now-messaging_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-high .now-alert-header{color:RGB(var(--now-alert_header--high--color,var(--now-messaging_header--primary_high--color,var(--now-messaging_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-warning .now-alert-header{color:RGB(var(--now-alert_header--warning--color,var(--now-messaging_header--primary_warning--color,var(--now-messaging_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-moderate .now-alert-header{color:RGB(var(--now-alert_header--moderate--color,var(--now-messaging_header--primary_moderate--color,var(--now-messaging_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-info .now-alert-header{color:RGB(var(--now-alert_header--info--color,var(--now-messaging_header--primary_info--color,var(--now-messaging_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-positive .now-alert-header{color:RGB(var(--now-alert_header--positive--color,var(--now-messaging_header--primary_positive--color,var(--now-messaging_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-low .now-alert-header{color:RGB(var(--now-alert_header--low--color,var(--now-messaging_header--primary_low--color,var(--now-messaging_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-alert-icon{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));max-block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy));max-inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy));padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-critical .now-alert-icon{color:RGB(var(--now-alert_icon--critical--color,var(--now-messaging_icon--primary_critical--color,var(--now-messaging_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-high .now-alert-icon{color:RGB(var(--now-alert_icon--high--color,var(--now-messaging_icon--primary_high--color,var(--now-messaging_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-warning .now-alert-icon{color:RGB(var(--now-alert_icon--warning--color,var(--now-messaging_icon--primary_warning--color,var(--now-messaging_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-moderate .now-alert-icon{color:RGB(var(--now-alert_icon--moderate--color,var(--now-messaging_icon--primary_moderate--color,var(--now-messaging_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-info .now-alert-icon{color:RGB(var(--now-alert_icon--info--color,var(--now-messaging_icon--primary_info--color,var(--now-messaging_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-positive .now-alert-icon{color:RGB(var(--now-alert_icon--positive--color,var(--now-messaging_icon--primary_positive--color,var(--now-messaging_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.-low .now-alert-icon{color:RGB(var(--now-alert_icon--low--color,var(--now-messaging_icon--primary_low--color,var(--now-messaging_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-alert-container{align-self:center;flex:auto;-webkit-hyphens:auto;hyphens:auto;min-inline-size:0;word-break:break-word}.now-alert-container.is-button-wrapped{align-self:flex-start;padding-block-start:calc(.3125rem*var(--classicsponlydonotuse--rem-multipy))}.now-alert-content:not(.is-expanded){-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.now-alert-content.is-expanded{overflow-y:auto}.now-alert-content.is-expanded::-moz-focus-inner{border-style:none}.now-alert-content.is-expanded:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-alert-content.is-expanded:focus{outline:1px solid highlight}}.now-alert-content a{color:RGB(var(--now-text-link--secondary--color,var(--now-actionable_link_label--secondary--color,var(--now-color--link-3,1,104,124))))}.now-alert-content a:hover{color:RGB(var(--now-text-link--secondary--color--hover,var(--now-actionable_link_label--secondary--color--hover,var(--now-color--link-4,1,89,107))))}.now-alert-content a:active{color:RGB(var(--now-text-link--secondary--color--active,var(--now-actionable_link_label--secondary--color--active,var(--now-color--neutral-18,22,27,28))))}.now-alert-content a::-moz-focus-inner{border-style:none}.now-alert-content a:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-alert-content a:focus{outline:1px solid highlight}}.now-alert-timer-label{align-self:center;margin-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-alert-timer-label.-critical{color:RGB(var(--now-alert_timer-label--critical--color,var(--now-messaging_progress-bar_label--primary_critical--color,var(--now-color_alert--critical-4,120,36,32))))}.now-alert-timer-label.-high{color:RGB(var(--now-alert_timer-label--high--color,var(--now-messaging_progress-bar_label--primary_high--color,var(--now-color_alert--high-4,133,87,20))))}.now-alert-timer-label.-warning{color:RGB(var(--now-alert_timer-label--warning--color,var(--now-messaging_progress-bar_label--primary_warning--color,var(--now-color_alert--warning-5,99,92,11))))}.now-alert-timer-label.-moderate{color:RGB(var(--now-alert_timer-label--moderate--color,var(--now-messaging_progress-bar_label--primary_moderate--color,var(--now-color_alert--moderate-4,50,52,124))))}.now-alert-timer-label.-info{color:RGB(var(--now-alert_timer-label--info--color,var(--now-messaging_progress-bar_label--primary_info--color,var(--now-color_alert--info-4,8,72,118))))}.now-alert-timer-label.-positive{color:RGB(var(--now-alert_timer-label--positive--color,var(--now-messaging_progress-bar_label--primary_positive--color,var(--now-color_alert--positive-4,22,79,26))))}.now-alert-timer-label.-low{color:RGB(var(--now-alert_timer-label--low--color,var(--now-messaging_progress-bar_label--primary_low--color,var(--now-color_alert--low-4,61,61,61))))}.now-alert-content-wrapper{display:flex;flex-basis:100%;min-inline-size:0;padding-block-end:calc(.375rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-alert-content-wrapper.-progress-bar-hidden{padding-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-alert-progress-bar{block-size:var(--now-alert_progress-bar--block-size,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-end-end-radius:var(--now-alert--border-radius,var(--now-messaging--border-radius,4px));border-end-start-radius:var(--now-alert--border-radius,var(--now-messaging--border-radius,4px));inline-size:var(--now-alert_progress-bar--inline-size,100%);inset-block:0;transition:var(--now-alert_progress_bar--transition,none)}.now-alert-progress-bar.-critical{background-color:RGB(var(--now-alert_progress-bar--critical--background-color,var(--now-messaging_progress-bar--primary_critical--background-color,var(--now-color_alert--critical-4,120,36,32))))}.now-alert-progress-bar.-high{background-color:RGB(var(--now-alert_progress-bar--high--background-color,var(--now-messaging_progress-bar--primary_high--background-color,var(--now-color_alert--high-4,133,87,20))))}.now-alert-progress-bar.-warning{background-color:RGB(var(--now-alert_progress-bar--warning--background-color,var(--now-messaging_progress-bar--primary_warning--background-color,var(--now-color_alert--warning-5,99,92,11))))}.now-alert-progress-bar.-moderate{background-color:RGB(var(--now-alert_progress-bar--moderate--background-color,var(--now-messaging_progress-bar--primary_moderate--background-color,var(--now-color_alert--moderate-4,50,52,124))))}.now-alert-progress-bar.-info{background-color:RGB(var(--now-alert_progress-bar--info--background-color,var(--now-messaging_progress-bar--primary_info--background-color,var(--now-color_alert--info-4,8,72,118))))}.now-alert-progress-bar.-positive{background-color:RGB(var(--now-alert_progress-bar--positive--background-color,var(--now-messaging_progress-bar--primary_positive--background-color,var(--now-color_alert--positive-4,22,79,26))))}.now-alert-progress-bar.-low{background-color:RGB(var(--now-alert_progress-bar--low--background-color,var(--now-messaging_progress-bar--primary_low--background-color,var(--now-color_alert--low-4,61,61,61))))}.now-alert-button-container{align-items:center;display:flex;margin-inline-start:auto}.now-alert-expand-button{inline-size:100%;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));max-inline-size:-moz-fit-content;max-inline-size:fit-content}.now-alert-button,.now-alert-button-iconic{margin-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-alert-button{--now-button--scale-size-inline:1;--now-button--scale-size-block:1;--now-button--tertiary--border-width:var(--now-alert_button--border-width,var(--now-messaging_action--primary--border-width,var(--now-messaging--border-width,1px)));--now-button--tertiary--border-radius:var(--now-alert_button--border-radius,var(--now-messaging_action--primary--border-radius,var(--now-messaging--border-radius,4px)));--now-button--tertiary--border-color:var(--now-alert_button--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81))));--now-button--tertiary--border-color-alpha:var(--now-alert_button--border-color-alpha,var(--now-messaging_action--primary--border-color-alpha,1));--now-button--tertiary--border-color--hover:var(--now-alert_button--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81))));--now-button--tertiary--border-color-alpha--hover:var(--now-alert_button--border-color-alpha--hover,var(--now-messaging_action--primary--border-color-alpha--hover,1));--now-button--tertiary--border-color--active:var(--now-alert_button--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81))));--now-button--tertiary--border-color-alpha--active:var(--now-alert_button--border-color-alpha--active,var(--now-messaging_action--primary--border-color-alpha--active,1));--now-button--tertiary--color:var(--now-alert_button--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-button--tertiary--color--hover:var(--now-alert_button--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-button--tertiary--color--active:var(--now-alert_button--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-button--tertiary--background-color:var(--now-alert_button--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));--now-button--tertiary--background-color-alpha:var(--now-alert_button--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0));--now-button--tertiary--background-color--hover:var(--now-alert_button--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));--now-button--tertiary--background-color-alpha--hover:var(--now-alert_button--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25)));--now-button--tertiary--background-color--active:var(--now-alert_button--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));--now-button--tertiary--background-color-alpha--active:var(--now-alert_button--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65)))}.-critical .now-alert-button{--now-button--tertiary--border-color:var(--now-alert_button--critical--border-color,var(--now-messaging_action--primary_critical--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha:var(--now-alert_button--critical--border-color-alpha,var(--now-messaging_action--primary_critical--border-color-alpha,var(--now-messaging_action--primary--border-color-alpha,1)));--now-button--tertiary--border-color--hover:var(--now-alert_button--critical--border-color--hover,var(--now-messaging_action--primary_critical--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--hover:var(--now-alert_button--critical--border-color-alpha--hover,var(--now-messaging_action--primary_critical--border-color-alpha--hover,var(--now-messaging_action--primary--border-color-alpha--hover,1)));--now-button--tertiary--border-color--active:var(--now-alert_button--critical--border-color--active,var(--now-messaging_action--primary_critical--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--active:var(--now-alert_button--critical--border-color-alpha--active,var(--now-messaging_action--primary_critical--border-color-alpha--active,var(--now-messaging_action--primary--border-color-alpha--active,1)));--now-button--tertiary--color:var(--now-alert_button--critical--color,var(--now-messaging_action_label--primary_critical--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--hover:var(--now-alert_button--critical--color--hover,var(--now-messaging_action_label--primary_critical--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--active:var(--now-alert_button--critical--color--active,var(--now-messaging_action_label--primary_critical--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--background-color:var(--now-alert_button--critical--background-color,var(--now-messaging_action--primary_critical--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha:var(--now-alert_button--critical--background-color-alpha,var(--now-messaging_action--primary_critical--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0)));--now-button--tertiary--background-color--hover:var(--now-alert_button--critical--background-color--hover,var(--now-messaging_action--primary_critical--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--hover:var(--now-alert_button--critical--background-color-alpha--hover,var(--now-messaging_action--primary_critical--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25))));--now-button--tertiary--background-color--active:var(--now-alert_button--critical--background-color--active,var(--now-messaging_action--primary_critical--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--active:var(--now-alert_button--critical--background-color-alpha--active,var(--now-messaging_action--primary_critical--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65))))}.-high .now-alert-button{--now-button--tertiary--border-color:var(--now-alert_button--high--border-color,var(--now-messaging_action--primary_high--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha:var(--now-alert_button--high--border-color-alpha,var(--now-messaging_action--primary_high--border-color-alpha,var(--now-messaging_action--primary--border-color-alpha,1)));--now-button--tertiary--border-color--hover:var(--now-alert_button--high--border-color--hover,var(--now-messaging_action--primary_high--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--hover:var(--now-alert_button--high--border-color-alpha--hover,var(--now-messaging_action--primary_high--border-color-alpha--hover,var(--now-messaging_action--primary--border-color-alpha--hover,1)));--now-button--tertiary--border-color--active:var(--now-alert_button--high--border-color--active,var(--now-messaging_action--primary_high--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--active:var(--now-alert_button--high--border-color-alpha--active,var(--now-messaging_action--primary_high--border-color-alpha--active,var(--now-messaging_action--primary--border-color-alpha--active,1)));--now-button--tertiary--color:var(--now-alert_button--high--color,var(--now-messaging_action_label--primary_high--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--hover:var(--now-alert_button--high--color--hover,var(--now-messaging_action_label--primary_high--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--active:var(--now-alert_button--high--color--active,var(--now-messaging_action_label--primary_high--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--background-color:var(--now-alert_button--high--background-color,var(--now-messaging_action--primary_high--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha:var(--now-alert_button--high--background-color-alpha,var(--now-messaging_action--primary_high--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0)));--now-button--tertiary--background-color--hover:var(--now-alert_button--high--background-color--hover,var(--now-messaging_action--primary_high--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--hover:var(--now-alert_button--high--background-color-alpha--hover,var(--now-messaging_action--primary_high--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25))));--now-button--tertiary--background-color--active:var(--now-alert_button--high--background-color--active,var(--now-messaging_action--primary_high--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--active:var(--now-alert_button--high--background-color-alpha--active,var(--now-messaging_action--primary_high--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65))))}.-warning .now-alert-button{--now-button--tertiary--border-color:var(--now-alert_button--warning--border-color,var(--now-messaging_action--primary_warning--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha:var(--now-alert_button--warning--border-color-alpha,var(--now-messaging_action--primary_warning--border-color-alpha,var(--now-messaging_action--primary--border-color-alpha,1)));--now-button--tertiary--border-color--hover:var(--now-alert_button--warning--border-color--hover,var(--now-messaging_action--primary_warning--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--hover:var(--now-alert_button--warning--border-color-alpha--hover,var(--now-messaging_action--primary_warning--border-color-alpha--hover,var(--now-messaging_action--primary--border-color-alpha--hover,1)));--now-button--tertiary--border-color--active:var(--now-alert_button--warning--border-color--active,var(--now-messaging_action--primary_warning--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--active:var(--now-alert_button--warning--border-color-alpha--active,var(--now-messaging_action--primary_warning--border-color-alpha--active,var(--now-messaging_action--primary--border-color-alpha--active,1)));--now-button--tertiary--color:var(--now-alert_button--warning--color,var(--now-messaging_action_label--primary_warning--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--hover:var(--now-alert_button--warning--color--hover,var(--now-messaging_action_label--primary_warning--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--active:var(--now-alert_button--warning--color--active,var(--now-messaging_action_label--primary_warning--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--background-color:var(--now-alert_button--warning--background-color,var(--now-messaging_action--primary_warning--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha:var(--now-alert_button--warning--background-color-alpha,var(--now-messaging_action--primary_warning--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0)));--now-button--tertiary--background-color--hover:var(--now-alert_button--warning--background-color--hover,var(--now-messaging_action--primary_warning--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--hover:var(--now-alert_button--warning--background-color-alpha--hover,var(--now-messaging_action--primary_warning--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25))));--now-button--tertiary--background-color--active:var(--now-alert_button--warning--background-color--active,var(--now-messaging_action--primary_warning--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--active:var(--now-alert_button--warning--background-color-alpha--active,var(--now-messaging_action--primary_warning--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65))))}.-moderate .now-alert-button{--now-button--tertiary--border-color:var(--now-alert_button--moderate--border-color,var(--now-messaging_action--primary_moderate--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha:var(--now-alert_button--moderate--border-color-alpha,var(--now-messaging_action--primary_moderate--border-color-alpha,var(--now-messaging_action--primary--border-color-alpha,1)));--now-button--tertiary--border-color--hover:var(--now-alert_button--moderate--border-color--hover,var(--now-messaging_action--primary_moderate--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--hover:var(--now-alert_button--moderate--border-color-alpha--hover,var(--now-messaging_action--primary_moderate--border-color-alpha--hover,var(--now-messaging_action--primary--border-color-alpha--hover,1)));--now-button--tertiary--border-color--active:var(--now-alert_button--moderate--border-color--active,var(--now-messaging_action--primary_moderate--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--active:var(--now-alert_button--moderate--border-color-alpha--active,var(--now-messaging_action--primary_moderate--border-color-alpha--active,var(--now-messaging_action--primary--border-color-alpha--active,1)));--now-button--tertiary--color:var(--now-alert_button--moderate--color,var(--now-messaging_action_label--primary_moderate--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--hover:var(--now-alert_button--moderate--color--hover,var(--now-messaging_action_label--primary_moderate--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--active:var(--now-alert_button--moderate--color--active,var(--now-messaging_action_label--primary_moderate--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--background-color:var(--now-alert_button--moderate--background-color,var(--now-messaging_action--primary_moderate--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha:var(--now-alert_button--moderate--background-color-alpha,var(--now-messaging_action--primary_moderate--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0)));--now-button--tertiary--background-color--hover:var(--now-alert_button--moderate--background-color--hover,var(--now-messaging_action--primary_moderate--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--hover:var(--now-alert_button--moderate--background-color-alpha--hover,var(--now-messaging_action--primary_moderate--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25))));--now-button--tertiary--background-color--active:var(--now-alert_button--moderate--background-color--active,var(--now-messaging_action--primary_moderate--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--active:var(--now-alert_button--moderate--background-color-alpha--active,var(--now-messaging_action--primary_moderate--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65))))}.-info .now-alert-button{--now-button--tertiary--border-color:var(--now-alert_button--info--border-color,var(--now-messaging_action--primary_info--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha:var(--now-alert_button--info--border-color-alpha,var(--now-messaging_action--primary_info--border-color-alpha,var(--now-messaging_action--primary--border-color-alpha,1)));--now-button--tertiary--border-color--hover:var(--now-alert_button--info--border-color--hover,var(--now-messaging_action--primary_info--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--hover:var(--now-alert_button--info--border-color-alpha--hover,var(--now-messaging_action--primary_info--border-color-alpha--hover,var(--now-messaging_action--primary--border-color-alpha--hover,1)));--now-button--tertiary--border-color--active:var(--now-alert_button--info--border-color--active,var(--now-messaging_action--primary_info--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--active:var(--now-alert_button--info--border-color-alpha--active,var(--now-messaging_action--primary_info--border-color-alpha--active,var(--now-messaging_action--primary--border-color-alpha--active,1)));--now-button--tertiary--color:var(--now-alert_button--info--color,var(--now-messaging_action_label--primary_info--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--hover:var(--now-alert_button--info--color--hover,var(--now-messaging_action_label--primary_info--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--active:var(--now-alert_button--info--color--active,var(--now-messaging_action_label--primary_info--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--background-color:var(--now-alert_button--info--background-color,var(--now-messaging_action--primary_info--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha:var(--now-alert_button--info--background-color-alpha,var(--now-messaging_action--primary_info--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0)));--now-button--tertiary--background-color--hover:var(--now-alert_button--info--background-color--hover,var(--now-messaging_action--primary_info--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--hover:var(--now-alert_button--info--background-color-alpha--hover,var(--now-messaging_action--primary_info--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25))));--now-button--tertiary--background-color--active:var(--now-alert_button--info--background-color--active,var(--now-messaging_action--primary_info--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--active:var(--now-alert_button--info--background-color-alpha--active,var(--now-messaging_action--primary_info--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65))))}.-positive .now-alert-button{--now-button--tertiary--border-color:var(--now-alert_button--positive--border-color,var(--now-messaging_action--primary_positive--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha:var(--now-alert_button--positive--border-color-alpha,var(--now-messaging_action--primary_positive--border-color-alpha,var(--now-messaging_action--primary--border-color-alpha,1)));--now-button--tertiary--border-color--hover:var(--now-alert_button--positive--border-color--hover,var(--now-messaging_action--primary_positive--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--hover:var(--now-alert_button--positive--border-color-alpha--hover,var(--now-messaging_action--primary_positive--border-color-alpha--hover,var(--now-messaging_action--primary--border-color-alpha--hover,1)));--now-button--tertiary--border-color--active:var(--now-alert_button--positive--border-color--active,var(--now-messaging_action--primary_positive--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--active:var(--now-alert_button--positive--border-color-alpha--active,var(--now-messaging_action--primary_positive--border-color-alpha--active,var(--now-messaging_action--primary--border-color-alpha--active,1)));--now-button--tertiary--color:var(--now-alert_button--positive--color,var(--now-messaging_action_label--primary_positive--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--hover:var(--now-alert_button--positive--color--hover,var(--now-messaging_action_label--primary_positive--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--active:var(--now-alert_button--positive--color--active,var(--now-messaging_action_label--primary_positive--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--background-color:var(--now-alert_button--positive--background-color,var(--now-messaging_action--primary_positive--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha:var(--now-alert_button--positive--background-color-alpha,var(--now-messaging_action--primary_positive--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0)));--now-button--tertiary--background-color--hover:var(--now-alert_button--positive--background-color--hover,var(--now-messaging_action--primary_positive--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--hover:var(--now-alert_button--positive--background-color-alpha--hover,var(--now-messaging_action--primary_positive--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25))));--now-button--tertiary--background-color--active:var(--now-alert_button--positive--background-color--active,var(--now-messaging_action--primary_positive--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--active:var(--now-alert_button--positive--background-color-alpha--active,var(--now-messaging_action--primary_positive--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65))))}.-low .now-alert-button{--now-button--tertiary--border-color:var(--now-alert_button--low--border-color,var(--now-messaging_action--primary_low--border-color,var(--now-messaging_action--primary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha:var(--now-alert_button--low--border-color-alpha,var(--now-messaging_action--primary_low--border-color-alpha,var(--now-messaging_action--primary--border-color-alpha,1)));--now-button--tertiary--border-color--hover:var(--now-alert_button--low--border-color--hover,var(--now-messaging_action--primary_low--border-color--hover,var(--now-messaging_action--primary--border-color--hover,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--hover:var(--now-alert_button--low--border-color-alpha--hover,var(--now-messaging_action--primary_low--border-color-alpha--hover,var(--now-messaging_action--primary--border-color-alpha--hover,1)));--now-button--tertiary--border-color--active:var(--now-alert_button--low--border-color--active,var(--now-messaging_action--primary_low--border-color--active,var(--now-messaging_action--primary--border-color--active,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))));--now-button--tertiary--border-color-alpha--active:var(--now-alert_button--low--border-color-alpha--active,var(--now-messaging_action--primary_low--border-color-alpha--active,var(--now-messaging_action--primary--border-color-alpha--active,1)));--now-button--tertiary--color:var(--now-alert_button--low--color,var(--now-messaging_action_label--primary_low--color,var(--now-messaging_action_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--hover:var(--now-alert_button--low--color--hover,var(--now-messaging_action_label--primary_low--color--hover,var(--now-messaging_action_label--primary--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--color--active:var(--now-alert_button--low--color--active,var(--now-messaging_action_label--primary_low--color--active,var(--now-messaging_action_label--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-button--tertiary--background-color:var(--now-alert_button--low--background-color,var(--now-messaging_action--primary_low--background-color,var(--now-messaging_action--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha:var(--now-alert_button--low--background-color-alpha,var(--now-messaging_action--primary_low--background-color-alpha,var(--now-messaging_action--primary--background-color-alpha,0)));--now-button--tertiary--background-color--hover:var(--now-alert_button--low--background-color--hover,var(--now-messaging_action--primary_low--background-color--hover,var(--now-messaging_action--primary--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--hover:var(--now-alert_button--low--background-color-alpha--hover,var(--now-messaging_action--primary_low--background-color-alpha--hover,var(--now-messaging_action--primary--background-color-alpha--hover,var(--now-opacity--less,0.25))));--now-button--tertiary--background-color--active:var(--now-alert_button--low--background-color--active,var(--now-messaging_action--primary_low--background-color--active,var(--now-messaging_action--primary--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button--tertiary--background-color-alpha--active:var(--now-alert_button--low--background-color-alpha--active,var(--now-messaging_action--primary_low--background-color-alpha--active,var(--now-messaging_action--primary--background-color-alpha--active,var(--now-opacity--more,0.65))))}.now-alert-button-iconic{--now-button--scale-size:1;--now-button-iconic--bare_tertiary--border-width:var(--now-alert_button-iconic--border-width,var(--now-messaging_action--primary_bare--border-width,0px));--now-button-iconic--bare_tertiary--border-radius:var(--now-alert_button-iconic--border-radius,var(--now-messaging_action--primary_bare--border-radius,var(--now-messaging--border-radius,4px)));--now-button-iconic--bare_tertiary--border-color--hover:var(--now-alert_button-iconic--border-color--hover,var(--now-messaging_action--primary_bare--border-color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))));--now-button-iconic--bare_tertiary--border-color-alpha--hover:var(--now-alert_button-iconic--border-color-alpha--hover,var(--now-messaging_action--primary_bare--border-color-alpha--hover,0));--now-button-iconic--bare_tertiary--border-color--active:var(--now-alert_button-iconic--border-color--active,var(--now-messaging_action--primary_bare--border-color--active,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));--now-button-iconic--bare_tertiary--border-color-alpha--active:var(--now-alert_button-iconic--border-color-alpha--active,var(--now-messaging_action--primary_bare--border-color-alpha--active,0));--now-button-iconic--bare_tertiary--color:var(--now-alert_button-iconic--color,var(--now-messaging_action_icon--primary_bare--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));--now-button-iconic--bare_tertiary--color--hover:var(--now-alert_button-iconic--color--hover,var(--now-messaging_action_icon--primary_bare--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))));--now-button-iconic--bare_tertiary--color--active:var(--now-alert_button-iconic--color--active,var(--now-messaging_action_icon--primary_bare--color--active,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-alert_button-iconic--background-color--hover,var(--now-messaging_action--primary_bare--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-alert_button-iconic--background-color-alpha--hover,var(--now-messaging_action--primary_bare--background-color-alpha--hover,0));--now-button-iconic--bare_tertiary--background-color--active:var(--now-alert_button-iconic--background-color--active,var(--now-messaging_action--primary_bare--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-alert_button-iconic--background-color-alpha--active,var(--now-messaging_action--primary_bare--background-color-alpha--active,0))}.-critical .now-alert-button-iconic{--now-button-iconic--bare_tertiary--border-color--hover:var(--now-alert_button-iconic--critical--border-color--hover,var(--now-messaging_action--primary_bare_critical--border-color--hover,var(--now-color_alert--critical-4,120,36,32)));--now-button-iconic--bare_tertiary--border-color-alpha--hover:var(--now-alert_button-iconic--critical--border-color-alpha--hover,var(--now-messaging_action--primary_bare_critical--border-color-alpha--hover,var(--now-messaging_action--primary_bare--border-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--border-color--active:var(--now-alert_button-iconic--critical--border-color--active,var(--now-messaging_action--primary_bare_critical--border-color--active,var(--now-color_alert--critical-5,80,24,22)));--now-button-iconic--bare_tertiary--border-color-alpha--active:var(--now-alert_button-iconic--critical--border-color-alpha--active,var(--now-messaging_action--primary_bare_critical--border-color-alpha--active,var(--now-messaging_action--primary_bare--border-color-alpha--active,0)));--now-button-iconic--bare_tertiary--color:var(--now-alert_button-iconic--critical--color,var(--now-messaging_action_icon--primary_bare_critical--color,var(--now-color_alert--critical-3,160,48,43)));--now-button-iconic--bare_tertiary--color--hover:var(--now-alert_button-iconic--critical--color--hover,var(--now-messaging_action_icon--primary_bare_critical--color--hover,var(--now-color_alert--critical-4,120,36,32)));--now-button-iconic--bare_tertiary--color--active:var(--now-alert_button-iconic--critical--color--active,var(--now-messaging_action_icon--primary_bare_critical--color--active,var(--now-color_alert--critical-5,80,24,22)));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-alert_button-iconic--critical--background-color--hover,var(--now-messaging_action--primary_bare_critical--background-color--hover,var(--now-messaging_action--primary_bare--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-alert_button-iconic--critical--background-color-alpha--hover,var(--now-messaging_action--primary_bare_critical--background-color-alpha--hover,var(--now-messaging_action--primary_bare--background-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--background-color--active:var(--now-alert_button-iconic--critical--background-color--active,var(--now-messaging_action--primary_bare_critical--background-color--active,var(--now-messaging_action--primary_bare--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-alert_button-iconic--critical--background-color-alpha--active,var(--now-messaging_action--primary_bare_critical--background-color-alpha--active,var(--now-messaging_action--primary_bare--background-color-alpha--active,0)))}.-high .now-alert-button-iconic{--now-button-iconic--bare_tertiary--border-color--hover:var(--now-alert_button-iconic--high--border-color--hover,var(--now-messaging_action--primary_bare_high--border-color--hover,var(--now-color_alert--high-4,133,87,20)));--now-button-iconic--bare_tertiary--border-color-alpha--hover:var(--now-alert_button-iconic--high--border-color-alpha--hover,var(--now-messaging_action--primary_bare_high--border-color-alpha--hover,var(--now-messaging_action--primary_bare--border-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--border-color--active:var(--now-alert_button-iconic--high--border-color--active,var(--now-messaging_action--primary_bare_high--border-color--active,var(--now-color_alert--high-5,88,58,14)));--now-button-iconic--bare_tertiary--border-color-alpha--active:var(--now-alert_button-iconic--high--border-color-alpha--active,var(--now-messaging_action--primary_bare_high--border-color-alpha--active,var(--now-messaging_action--primary_bare--border-color-alpha--active,0)));--now-button-iconic--bare_tertiary--color:var(--now-alert_button-iconic--high--color,var(--now-messaging_action_icon--primary_bare_high--color,var(--now-color_alert--high-3,177,116,27)));--now-button-iconic--bare_tertiary--color--hover:var(--now-alert_button-iconic--high--color--hover,var(--now-messaging_action_icon--primary_bare_high--color--hover,var(--now-color_alert--high-4,133,87,20)));--now-button-iconic--bare_tertiary--color--active:var(--now-alert_button-iconic--high--color--active,var(--now-messaging_action_icon--primary_bare_high--color--active,var(--now-color_alert--high-5,88,58,14)));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-alert_button-iconic--high--background-color--hover,var(--now-messaging_action--primary_bare_high--background-color--hover,var(--now-messaging_action--primary_bare--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-alert_button-iconic--high--background-color-alpha--hover,var(--now-messaging_action--primary_bare_high--background-color-alpha--hover,var(--now-messaging_action--primary_bare--background-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--background-color--active:var(--now-alert_button-iconic--high--background-color--active,var(--now-messaging_action--primary_bare_high--background-color--active,var(--now-messaging_action--primary_bare--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-alert_button-iconic--high--background-color-alpha--active,var(--now-messaging_action--primary_bare_high--background-color-alpha--active,var(--now-messaging_action--primary_bare--background-color-alpha--active,0)))}.-warning .now-alert-button-iconic{--now-button-iconic--bare_tertiary--border-color--hover:var(--now-alert_button-iconic--warning--border-color--hover,var(--now-messaging_action--primary_bare_warning--border-color--hover,var(--now-color_alert--warning-5,99,92,11)));--now-button-iconic--bare_tertiary--border-color-alpha--hover:var(--now-alert_button-iconic--warning--border-color-alpha--hover,var(--now-messaging_action--primary_bare_warning--border-color-alpha--hover,var(--now-messaging_action--primary_bare--border-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--border-color--active:var(--now-alert_button-iconic--warning--border-color--active,var(--now-messaging_action--primary_bare_warning--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-button-iconic--bare_tertiary--border-color-alpha--active:var(--now-alert_button-iconic--warning--border-color-alpha--active,var(--now-messaging_action--primary_bare_warning--border-color-alpha--active,var(--now-messaging_action--primary_bare--border-color-alpha--active,0)));--now-button-iconic--bare_tertiary--color:var(--now-alert_button-iconic--warning--color,var(--now-messaging_action_icon--primary_bare_warning--color,var(--now-color_alert--warning-4,149,139,17)));--now-button-iconic--bare_tertiary--color--hover:var(--now-alert_button-iconic--warning--color--hover,var(--now-messaging_action_icon--primary_bare_warning--color--hover,var(--now-color_alert--warning-5,99,92,11)));--now-button-iconic--bare_tertiary--color--active:var(--now-alert_button-iconic--warning--color--active,var(--now-messaging_action_icon--primary_bare_warning--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-alert_button-iconic--warning--background-color--hover,var(--now-messaging_action--primary_bare_warning--background-color--hover,var(--now-messaging_action--primary_bare--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-alert_button-iconic--warning--background-color-alpha--hover,var(--now-messaging_action--primary_bare_warning--background-color-alpha--hover,var(--now-messaging_action--primary_bare--background-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--background-color--active:var(--now-alert_button-iconic--warning--background-color--active,var(--now-messaging_action--primary_bare_warning--background-color--active,var(--now-messaging_action--primary_bare--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-alert_button-iconic--warning--background-color-alpha--active,var(--now-messaging_action--primary_bare_warning--background-color-alpha--active,var(--now-messaging_action--primary_bare--background-color-alpha--active,0)))}.-moderate .now-alert-button-iconic{--now-button-iconic--bare_tertiary--border-color--hover:var(--now-alert_button-iconic--moderate--border-color--hover,var(--now-messaging_action--primary_bare_moderate--border-color--hover,var(--now-color_alert--moderate-4,50,52,124)));--now-button-iconic--bare_tertiary--border-color-alpha--hover:var(--now-alert_button-iconic--moderate--border-color-alpha--hover,var(--now-messaging_action--primary_bare_moderate--border-color-alpha--hover,var(--now-messaging_action--primary_bare--border-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--border-color--active:var(--now-alert_button-iconic--moderate--border-color--active,var(--now-messaging_action--primary_bare_moderate--border-color--active,var(--now-color_alert--moderate-5,34,34,83)));--now-button-iconic--bare_tertiary--border-color-alpha--active:var(--now-alert_button-iconic--moderate--border-color-alpha--active,var(--now-messaging_action--primary_bare_moderate--border-color-alpha--active,var(--now-messaging_action--primary_bare--border-color-alpha--active,0)));--now-button-iconic--bare_tertiary--color:var(--now-alert_button-iconic--moderate--color,var(--now-messaging_action_icon--primary_bare_moderate--color,var(--now-color_alert--moderate-3,67,69,166)));--now-button-iconic--bare_tertiary--color--hover:var(--now-alert_button-iconic--moderate--color--hover,var(--now-messaging_action_icon--primary_bare_moderate--color--hover,var(--now-color_alert--moderate-4,50,52,124)));--now-button-iconic--bare_tertiary--color--active:var(--now-alert_button-iconic--moderate--color--active,var(--now-messaging_action_icon--primary_bare_moderate--color--active,var(--now-color_alert--moderate-5,34,34,83)));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-alert_button-iconic--moderate--background-color--hover,var(--now-messaging_action--primary_bare_moderate--background-color--hover,var(--now-messaging_action--primary_bare--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-alert_button-iconic--moderate--background-color-alpha--hover,var(--now-messaging_action--primary_bare_moderate--background-color-alpha--hover,var(--now-messaging_action--primary_bare--background-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--background-color--active:var(--now-alert_button-iconic--moderate--background-color--active,var(--now-messaging_action--primary_bare_moderate--background-color--active,var(--now-messaging_action--primary_bare--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-alert_button-iconic--moderate--background-color-alpha--active,var(--now-messaging_action--primary_bare_moderate--background-color-alpha--active,var(--now-messaging_action--primary_bare--background-color-alpha--active,0)))}.-info .now-alert-button-iconic{--now-button-iconic--bare_tertiary--border-color--hover:var(--now-alert_button-iconic--info--border-color--hover,var(--now-messaging_action--primary_bare_info--border-color--hover,var(--now-color_alert--info-4,8,72,118)));--now-button-iconic--bare_tertiary--border-color-alpha--hover:var(--now-alert_button-iconic--info--border-color-alpha--hover,var(--now-messaging_action--primary_bare_info--border-color-alpha--hover,var(--now-messaging_action--primary_bare--border-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--border-color--active:var(--now-alert_button-iconic--info--border-color--active,var(--now-messaging_action--primary_bare_info--border-color--active,var(--now-color_alert--info-5,6,48,78)));--now-button-iconic--bare_tertiary--border-color-alpha--active:var(--now-alert_button-iconic--info--border-color-alpha--active,var(--now-messaging_action--primary_bare_info--border-color-alpha--active,var(--now-messaging_action--primary_bare--border-color-alpha--active,0)));--now-button-iconic--bare_tertiary--color:var(--now-alert_button-iconic--info--color,var(--now-messaging_action_icon--primary_bare_info--color,var(--now-color_alert--info-3,11,96,157)));--now-button-iconic--bare_tertiary--color--hover:var(--now-alert_button-iconic--info--color--hover,var(--now-messaging_action_icon--primary_bare_info--color--hover,var(--now-color_alert--info-4,8,72,118)));--now-button-iconic--bare_tertiary--color--active:var(--now-alert_button-iconic--info--color--active,var(--now-messaging_action_icon--primary_bare_info--color--active,var(--now-color_alert--info-5,6,48,78)));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-alert_button-iconic--info--background-color--hover,var(--now-messaging_action--primary_bare_info--background-color--hover,var(--now-messaging_action--primary_bare--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-alert_button-iconic--info--background-color-alpha--hover,var(--now-messaging_action--primary_bare_info--background-color-alpha--hover,var(--now-messaging_action--primary_bare--background-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--background-color--active:var(--now-alert_button-iconic--info--background-color--active,var(--now-messaging_action--primary_bare_info--background-color--active,var(--now-messaging_action--primary_bare--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-alert_button-iconic--info--background-color-alpha--active,var(--now-messaging_action--primary_bare_info--background-color-alpha--active,var(--now-messaging_action--primary_bare--background-color-alpha--active,0)))}.-positive .now-alert-button-iconic{--now-button-iconic--bare_tertiary--border-color--hover:var(--now-alert_button-iconic--positive--border-color--hover,var(--now-messaging_action--primary_bare_positive--border-color--hover,var(--now-color_alert--positive-4,22,79,26)));--now-button-iconic--bare_tertiary--border-color-alpha--hover:var(--now-alert_button-iconic--positive--border-color-alpha--hover,var(--now-messaging_action--primary_bare_positive--border-color-alpha--hover,var(--now-messaging_action--primary_bare--border-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--border-color--active:var(--now-alert_button-iconic--positive--border-color--active,var(--now-messaging_action--primary_bare_positive--border-color--active,var(--now-color_alert--positive-5,15,52,17)));--now-button-iconic--bare_tertiary--border-color-alpha--active:var(--now-alert_button-iconic--positive--border-color-alpha--active,var(--now-messaging_action--primary_bare_positive--border-color-alpha--active,var(--now-messaging_action--primary_bare--border-color-alpha--active,0)));--now-button-iconic--bare_tertiary--color:var(--now-alert_button-iconic--positive--color,var(--now-messaging_action_icon--primary_bare_positive--color,var(--now-color_alert--positive-3,30,105,34)));--now-button-iconic--bare_tertiary--color--hover:var(--now-alert_button-iconic--positive--color--hover,var(--now-messaging_action_icon--primary_bare_positive--color--hover,var(--now-color_alert--positive-4,22,79,26)));--now-button-iconic--bare_tertiary--color--active:var(--now-alert_button-iconic--positive--color--active,var(--now-messaging_action_icon--primary_bare_positive--color--active,var(--now-color_alert--positive-5,15,52,17)));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-alert_button-iconic--positive--background-color--hover,var(--now-messaging_action--primary_bare_positive--background-color--hover,var(--now-messaging_action--primary_bare--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-alert_button-iconic--positive--background-color-alpha--hover,var(--now-messaging_action--primary_bare_positive--background-color-alpha--hover,var(--now-messaging_action--primary_bare--background-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--background-color--active:var(--now-alert_button-iconic--positive--background-color--active,var(--now-messaging_action--primary_bare_positive--background-color--active,var(--now-messaging_action--primary_bare--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-alert_button-iconic--positive--background-color-alpha--active,var(--now-messaging_action--primary_bare_positive--background-color-alpha--active,var(--now-messaging_action--primary_bare--background-color-alpha--active,0)))}.-low .now-alert-button-iconic{--now-button-iconic--bare_tertiary--border-color--hover:var(--now-alert_button-iconic--low--border-color--hover,var(--now-messaging_action--primary_bare_low--border-color--hover,var(--now-color_alert--low-4,61,61,61)));--now-button-iconic--bare_tertiary--border-color-alpha--hover:var(--now-alert_button-iconic--low--border-color-alpha--hover,var(--now-messaging_action--primary_bare_low--border-color-alpha--hover,var(--now-messaging_action--primary_bare--border-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--border-color--active:var(--now-alert_button-iconic--low--border-color--active,var(--now-messaging_action--primary_bare_low--border-color--active,var(--now-color_alert--low-5,41,41,41)));--now-button-iconic--bare_tertiary--border-color-alpha--active:var(--now-alert_button-iconic--low--border-color-alpha--active,var(--now-messaging_action--primary_bare_low--border-color-alpha--active,var(--now-messaging_action--primary_bare--border-color-alpha--active,0)));--now-button-iconic--bare_tertiary--color:var(--now-alert_button-iconic--low--color,var(--now-messaging_action_icon--primary_bare_low--color,var(--now-color_alert--low-3,82,82,82)));--now-button-iconic--bare_tertiary--color--hover:var(--now-alert_button-iconic--low--color--hover,var(--now-messaging_action_icon--primary_bare_low--color--hover,var(--now-color_alert--low-4,61,61,61)));--now-button-iconic--bare_tertiary--color--active:var(--now-alert_button-iconic--low--color--active,var(--now-messaging_action_icon--primary_bare_low--color--active,var(--now-color_alert--low-5,41,41,41)));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-alert_button-iconic--low--background-color--hover,var(--now-messaging_action--primary_bare_low--background-color--hover,var(--now-messaging_action--primary_bare--background-color--hover,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-alert_button-iconic--low--background-color-alpha--hover,var(--now-messaging_action--primary_bare_low--background-color-alpha--hover,var(--now-messaging_action--primary_bare--background-color-alpha--hover,0)));--now-button-iconic--bare_tertiary--background-color--active:var(--now-alert_button-iconic--low--background-color--active,var(--now-messaging_action--primary_bare_low--background-color--active,var(--now-messaging_action--primary_bare--background-color--active,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-alert_button-iconic--low--background-color-alpha--active,var(--now-messaging_action--primary_bare_low--background-color-alpha--active,var(--now-messaging_action--primary_bare--background-color-alpha--active,0)))}.-critical .now-alert-text-link{--now-text-link--secondary--color:var(--now-alert_text-link--critical--color,var(--now-messaging_link--primary--color,var(--now-color--link-3,1,104,124)));--now-text-link--secondary--color--hover:var(--now-alert_text-link--critical--color--hover,var(--now-messaging_link--primary--color--hover,var(--now-color--link-4,1,89,107)));--now-text-link--secondary--color--active:var(--now-alert_text-link--critical--color--active,var(--now-messaging_link--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.-high .now-alert-text-link{--now-text-link--secondary--color:var(--now-alert_text-link--high--color,var(--now-messaging_link--primary--color,var(--now-color--link-3,1,104,124)));--now-text-link--secondary--color--hover:var(--now-alert_text-link--high--color--hover,var(--now-messaging_link--primary--color--hover,var(--now-color--link-4,1,89,107)));--now-text-link--secondary--color--active:var(--now-alert_text-link--high--color--active,var(--now-messaging_link--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.-warning .now-alert-text-link{--now-text-link--secondary--color:var(--now-alert_text-link--warning--color,var(--now-messaging_link--primary--color,var(--now-color--link-3,1,104,124)));--now-text-link--secondary--color--hover:var(--now-alert_text-link--warning--color--hover,var(--now-messaging_link--primary--color--hover,var(--now-color--link-4,1,89,107)));--now-text-link--secondary--color--active:var(--now-alert_text-link--warning--color--active,var(--now-messaging_link--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.-moderate .now-alert-text-link{--now-text-link--secondary--color:var(--now-alert_text-link--moderate--color,var(--now-messaging_link--primary--color,var(--now-color--link-3,1,104,124)));--now-text-link--secondary--color--hover:var(--now-alert_text-link--moderate--color--hover,var(--now-messaging_link--primary--color--hover,var(--now-color--link-4,1,89,107)));--now-text-link--secondary--color--active:var(--now-alert_text-link--moderate--color--active,var(--now-messaging_link--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.-info .now-alert-text-link{--now-text-link--secondary--color:var(--now-alert_text-link--info--color,var(--now-messaging_link--primary--color,var(--now-color--link-3,1,104,124)));--now-text-link--secondary--color--hover:var(--now-alert_text-link--info--color--hover,var(--now-messaging_link--primary--color--hover,var(--now-color--link-4,1,89,107)));--now-text-link--secondary--color--active:var(--now-alert_text-link--info--color--active,var(--now-messaging_link--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.-positive .now-alert-text-link{--now-text-link--secondary--color:var(--now-alert_text-link--positive--color,var(--now-messaging_link--primary--color,var(--now-color--link-3,1,104,124)));--now-text-link--secondary--color--hover:var(--now-alert_text-link--positive--color--hover,var(--now-messaging_link--primary--color--hover,var(--now-color--link-4,1,89,107)));--now-text-link--secondary--color--active:var(--now-alert_text-link--positive--color--active,var(--now-messaging_link--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.-low .now-alert-text-link{--now-text-link--secondary--color:var(--now-alert_text-link--low--color,var(--now-messaging_link--primary--color,var(--now-color--link-3,1,104,124)));--now-text-link--secondary--color--hover:var(--now-alert_text-link--low--color--hover,var(--now-messaging_link--primary--color--hover,var(--now-color--link-4,1,89,107)));--now-text-link--secondary--color--active:var(--now-alert_text-link--low--color--active,var(--now-messaging_link--primary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}@media(forced-colors:active){.now-alert{border-width:1px}.now-alert-content:not(.is-expanded){padding-block:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-alert-progress-bar{background-color:highlight!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}:host{--now-line-height:0;display:inline-block;vertical-align:middle}.now-avatar{display:inline-block;position:relative}.now-avatar.-xxs .now-avatar-content,.now-avatar.-xxs .now-avatar-img{block-size:calc(.875rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(.875rem*var(--classicsponlydonotuse--rem-multipy))}.now-avatar.-xs .now-avatar-content,.now-avatar.-xs .now-avatar-img{block-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-avatar.-sm .now-avatar-content,.now-avatar.-sm .now-avatar-img{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-avatar.-md .now-avatar-content,.now-avatar.-md .now-avatar-img{block-size:calc(2.625rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(2.625rem*var(--classicsponlydonotuse--rem-multipy))}.now-avatar.-lg .now-avatar-content,.now-avatar.-lg .now-avatar-img{block-size:calc(4.5rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(4.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-avatar.-xl .now-avatar-content,.now-avatar.-xl .now-avatar-img{block-size:calc(9rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(9rem*var(--classicsponlydonotuse--rem-multipy))}.now-avatar.has-image .now-avatar-content{border:none}.now-avatar-content{align-items:center;background-color:RGB(var(--now-avatar--background-color,var(--now-identifier-user--background-color,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))));background-position:50%;background-size:cover;border-color:RGB(var(--now-avatar--border-color,var(--now-identifier-user--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)))));border-radius:var(--now-avatar--border-radius,var(--now-identifier-user--border-radius,50%));border-style:solid;border-width:var(--now-avatar--border-width,var(--now-identifier-user--border-width,var(--now-identifier--border-width,1px)));color:RGB(var(--now-avatar--color,var(--now-identifier-user_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))));display:flex;font-family:var(--now-avatar--font-family,var(--now-identifier-user--font-family,var(--now-identifier--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-avatar--font-style,var(--now-identifier-user--font-style,var(--now-identifier--font-style,normal)));font-variant:normal;font-weight:var(--now-avatar--font-weight,var(--now-identifier-user--font-weight,var(--now-identifier--font-weight,normal)));justify-content:center;letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:var(--now-avatar--text-transform,var(--now-identifier-user--text-transform,uppercase));white-space:normal;word-spacing:inherit}.now-avatar-content::-moz-focus-inner{border-style:none}.now-avatar-content:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))}@media(forced-colors:active){.now-avatar-content:focus{outline:1px solid highlight}}.now-avatar-content.-button{cursor:pointer;padding:0}.now-avatar-content.-link{cursor:pointer;text-decoration:none}.now-avatar-content:focus{outline:none}.now-avatar-content:focus:after{block-size:100%;border-radius:inherit;box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));content:\\\"\\\";inline-size:100%;inset-block-start:0;inset-inline-start:0;pointer-events:none;position:absolute}.now-avatar-content:focus::-moz-focus-inner{border-style:none}.-xxs .now-avatar-label{font-size:var(--now-identifier_label--font-size--xs,var(--now-font-size--xs,calc(.625rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.1}.-xxs .now-avatar-label .now-line-height-crop{display:block}.-xxs .now-avatar-label .now-line-height-crop:after,.-xxs .now-avatar-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-xxs .now-avatar-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*.88)}.-xxs .now-avatar-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*.88)}.-xxs .now-avatar-label .now-line-height-crop+.-xxs .now-avatar-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*.88*-1)}.-xs .now-avatar-label{font-size:var(--now-identifier_label--font-size--xs,var(--now-font-size--xs,calc(.625rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.2}.-xs .now-avatar-label .now-line-height-crop{display:block}.-xs .now-avatar-label .now-line-height-crop:after,.-xs .now-avatar-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-xs .now-avatar-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*.96)}.-xs .now-avatar-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*.96)}.-xs .now-avatar-label .now-line-height-crop+.-xs .now-avatar-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*.96*-1)}.-sm .now-avatar-label{font-size:var(--now-identifier_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333}.-sm .now-avatar-label .now-line-height-crop{display:block}.-sm .now-avatar-label .now-line-height-crop:after,.-sm .now-avatar-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-sm .now-avatar-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.-sm .now-avatar-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.-sm .now-avatar-label .now-line-height-crop+.-sm .now-avatar-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-md .now-avatar-label{font-size:var(--now-identifier_label--font-size--lg,var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.-md .now-avatar-label .now-line-height-crop{display:block}.-md .now-avatar-label .now-line-height-crop:after,.-md .now-avatar-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-md .now-avatar-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-md .now-avatar-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-md .now-avatar-label .now-line-height-crop+.-md .now-avatar-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.-lg .now-avatar-label{font-size:var(--now-identifier_label--font-size--lg3,var(--now-font-size--lg3,calc(2rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.-lg .now-avatar-label .now-line-height-crop{display:block}.-lg .now-avatar-label .now-line-height-crop:after,.-lg .now-avatar-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-lg .now-avatar-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-lg .now-avatar-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-lg .now-avatar-label .now-line-height-crop+.-lg .now-avatar-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.-xl .now-avatar-label{font-size:var(--now-identifier_label--font-size--xl3,var(--now-font-size--xl3,calc(4rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.-xl .now-avatar-label .now-line-height-crop{display:block}.-xl .now-avatar-label .now-line-height-crop:after,.-xl .now-avatar-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-xl .now-avatar-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-xl .now-avatar-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-xl .now-avatar-label .now-line-height-crop+.-xl .now-avatar-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-avatar-img{border-radius:var(--now-avatar--border-radius,var(--now-identifier-user--border-radius,50%));object-fit:cover}.now-avatar-icon{color:RGB(var(--now-avatar_icon--color,var(--now-identifier-user_icon--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.-xs .now-avatar-icon,.-xxs .now-avatar-icon{transform:scale(.75)}.-xl .now-avatar-icon{transform:scale(2)}.now-avatar-icon-presence{position:absolute}.-xxs .now-avatar-icon-presence{inset-block-end:calc(-.1875rem*var(--classicsponlydonotuse--rem-multipy));inset-inline-end:calc(-.1875rem*var(--classicsponlydonotuse--rem-multipy));transform:scale(.75)}.-xs .now-avatar-icon-presence{inset-block-end:calc(-.125rem*var(--classicsponlydonotuse--rem-multipy));inset-inline-end:calc(-.125rem*var(--classicsponlydonotuse--rem-multipy));transform:scale(.75)}.-md .now-avatar-icon-presence,.-sm .now-avatar-icon-presence{inset-block-end:-1px;inset-inline-end:-1px}.-lg .now-avatar-icon-presence{inset-block-end:calc(-.25rem*var(--classicsponlydonotuse--rem-multipy));inset-inline-end:calc(-.25rem*var(--classicsponlydonotuse--rem-multipy))}.-xl .now-avatar-icon-presence{inset-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));inset-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));transform:scale(2)}@media(forced-colors:active){.now-avatar.has-image .now-avatar-content{outline:1px solid canvastext}.now-avatar:not(.has-image) .now-avatar-content{border-width:1px}.now-avatar-content:focus{color:highlight}.now-avatar:not(.has-image) .now-avatar-content:focus{border:1px solid highlight!important;outline:none!important}.now-avatar.has-image .now-avatar-content:focus{outline:1px solid highlight!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-badge{align-items:center;border-radius:var(--now-badge--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))));border-style:solid;border-width:var(--now-badge--border-width,var(--now-indicator--border-width,0));display:flex;font-family:var(--now-badge--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-style:var(--now-badge--font-style,var(--now-indicator--font-style,normal));font-variant:normal;font-weight:var(--now-badge--font-weight,var(--now-indicator--font-weight,normal));justify-content:center;letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:var(--now-badge--text-transform,var(--now-indicator--text-transform,none));white-space:normal;word-spacing:inherit}.now-badge.-sm{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-badge--scale-size-block, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);font-size:var(--now-indicator_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;min-inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-badge--scale-size-inline, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-badge--scale-size-inline, 1))}.now-badge.-md{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-badge--scale-size-block, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);font-size:var(--now-indicator_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-badge--scale-size-inline, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-badge--scale-size-inline, 1))}.now-badge.-md .now-line-height-crop{display:block}.now-badge.-md .now-line-height-crop:after,.now-badge.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-badge.-md .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-badge.-md .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-badge.-md .now-line-height-crop+.now-badge.-md .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-badge.-lg{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-badge--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);font-size:var(--now-indicator_label--font-size--lg,var(--now-font-size--lg1,calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-badge--scale-size-inline, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-badge--scale-size-inline, 1))}.now-badge.-lg .now-line-height-crop{display:block}.now-badge.-lg .now-line-height-crop:after,.now-badge.-lg .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-badge.-lg .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-badge.-lg .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-badge.-lg .now-line-height-crop+.now-badge.-lg .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-badge.-primary{border-radius:var(--now-badge--primary--border-radius,var(--now-indicator--primary--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)))));border-width:var(--now-badge--primary--border-width,var(--now-indicator--primary--border-width,var(--now-indicator--border-width,0)));color:var(--now-badge--primary--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)));font-family:var(--now-badge--primary--font-family,var(--now-indicator--primary--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-badge--primary--font-style,var(--now-indicator--primary--font-style,var(--now-indicator--font-style,normal)));font-weight:var(--now-badge--primary--font-weight,var(--now-indicator--primary--font-weight,var(--now-indicator--font-weight,normal)));text-transform:var(--now-badge--primary--text-transform,var(--now-indicator--primary--text-transform,var(--now-indicator--text-transform,none)))}.now-badge.-secondary{border-radius:var(--now-badge--secondary--border-radius,var(--now-indicator--primary--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)))));border-width:var(--now-badge--secondary--border-width,var(--now-indicator--primary--border-width,var(--now-indicator--border-width,0)));color:var(--now-badge--secondary--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)));font-family:var(--now-badge--secondary--font-family,var(--now-indicator--primary--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-badge--secondary--font-style,var(--now-indicator--primary--font-style,var(--now-indicator--font-style,normal)));font-weight:var(--now-badge--secondary--font-weight,var(--now-indicator--primary--font-weight,var(--now-indicator--font-weight,normal)));text-transform:var(--now-badge--secondary--text-transform,var(--now-indicator--primary--text-transform,var(--now-indicator--text-transform,none)))}.now-badge.-critical.-primary{background-color:RGB(var(--now-badge--primary_critical--background-color,var(--now-indicator--primary_critical--background-color,var(--now-color_alert--critical-2,200,60,54))));border-color:RGB(var(--now-badge--primary_critical--border-color,var(--now-indicator--primary_critical--border-color,var(--now-color_alert--critical-3,160,48,43))));color:RGB(var(--now-badge--primary_critical--color,var(--now-indicator_label--primary_critical--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-critical.-secondary{background-color:RGB(var(--now-badge--secondary_critical--background-color,var(--now-indicator--secondary_critical--background-color,var(--now-color_alert--critical-1,221,133,129))));border-color:RGB(var(--now-badge--secondary_critical--border-color,var(--now-indicator--secondary_critical--border-color,var(--now-color_alert--critical-2,200,60,54))));color:RGB(var(--now-badge--secondary_critical--color,var(--now-indicator_label--secondary_critical--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-high.-primary{background-color:RGB(var(--now-badge--primary_high--background-color,var(--now-indicator--primary_high--background-color,var(--now-color_alert--high-2,221,145,34))));border-color:RGB(var(--now-badge--primary_high--border-color,var(--now-indicator--primary_high--border-color,var(--now-color_alert--high-3,177,116,27))));color:RGB(var(--now-badge--primary_high--color,var(--now-indicator_label--primary_high--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-high.-secondary{background-color:RGB(var(--now-badge--secondary_high--background-color,var(--now-indicator--secondary_high--background-color,var(--now-color_alert--high-1,234,186,117))));border-color:RGB(var(--now-badge--secondary_high--border-color,var(--now-indicator--secondary_high--border-color,var(--now-color_alert--high-2,221,145,34))));color:RGB(var(--now-badge--secondary_high--color,var(--now-indicator_label--secondary_high--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-warning.-primary{background-color:RGB(var(--now-badge--primary_warning--background-color,var(--now-indicator--primary_warning--background-color,var(--now-color_alert--warning-2,210,195,0))));border-color:RGB(var(--now-badge--primary_warning--border-color,var(--now-indicator--primary_warning--border-color,var(--now-color_alert--warning-3,198,185,22))));color:RGB(var(--now-badge--primary_warning--color,var(--now-indicator_label--primary_warning--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-warning.-secondary{background-color:RGB(var(--now-badge--secondary_warning--background-color,var(--now-indicator--secondary_warning--background-color,var(--now-color_alert--warning-1,227,218,96))));border-color:RGB(var(--now-badge--secondary_warning--border-color,var(--now-indicator--secondary_warning--border-color,var(--now-color_alert--warning-2,210,195,0))));color:RGB(var(--now-badge--secondary_warning--color,var(--now-indicator_label--secondary_warning--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-moderate.-primary{background-color:RGB(var(--now-badge--primary_moderate--background-color,var(--now-indicator--primary_moderate--background-color,var(--now-color_alert--moderate-2,84,86,207))));border-color:RGB(var(--now-badge--primary_moderate--border-color,var(--now-indicator--primary_moderate--border-color,var(--now-color_alert--moderate-3,67,69,166))));color:RGB(var(--now-badge--primary_moderate--color,var(--now-indicator_label--primary_moderate--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-moderate.-secondary{background-color:RGB(var(--now-badge--secondary_moderate--background-color,var(--now-indicator--secondary_moderate--background-color,var(--now-color_alert--moderate-1,148,149,225))));border-color:RGB(var(--now-badge--secondary_moderate--border-color,var(--now-indicator--secondary_moderate--border-color,var(--now-color_alert--moderate-2,84,86,207))));color:RGB(var(--now-badge--secondary_moderate--color,var(--now-indicator_label--secondary_moderate--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-info.-primary{background-color:RGB(var(--now-badge--primary_info--background-color,var(--now-indicator--primary_info--background-color,var(--now-color_alert--info-2,14,120,196))));border-color:RGB(var(--now-badge--primary_info--border-color,var(--now-indicator--primary_info--border-color,var(--now-color_alert--info-3,11,96,157))));color:RGB(var(--now-badge--primary_info--color,var(--now-indicator_label--primary_info--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-info.-secondary{background-color:RGB(var(--now-badge--secondary_info--background-color,var(--now-indicator--secondary_info--background-color,var(--now-color_alert--info-1,104,171,218))));border-color:RGB(var(--now-badge--secondary_info--border-color,var(--now-indicator--secondary_info--border-color,var(--now-color_alert--info-2,14,120,196))));color:RGB(var(--now-badge--secondary_info--color,var(--now-indicator_label--secondary_info--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-positive.-primary{background-color:RGB(var(--now-badge--primary_positive--background-color,var(--now-indicator--primary_positive--background-color,var(--now-color_alert--positive-2,37,131,43))));border-color:RGB(var(--now-badge--primary_positive--border-color,var(--now-indicator--primary_positive--border-color,var(--now-color_alert--positive-3,30,105,34))));color:RGB(var(--now-badge--primary_positive--color,var(--now-indicator_label--primary_positive--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-positive.-secondary{background-color:RGB(var(--now-badge--secondary_positive--background-color,var(--now-indicator--secondary_positive--background-color,var(--now-color_alert--positive-1,119,178,123))));border-color:RGB(var(--now-badge--secondary_positive--border-color,var(--now-indicator--secondary_positive--border-color,var(--now-color_alert--positive-2,37,131,43))));color:RGB(var(--now-badge--secondary_positive--color,var(--now-indicator_label--secondary_positive--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-low.-primary{background-color:RGB(var(--now-badge--primary_low--background-color,var(--now-indicator--primary_low--background-color,var(--now-color_alert--low-2,102,102,102))));border-color:RGB(var(--now-badge--primary_low--border-color,var(--now-indicator--primary_low--border-color,var(--now-color_alert--low-3,82,82,82))));color:RGB(var(--now-badge--primary_low--color,var(--now-indicator_label--primary_low--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-low.-secondary{background-color:RGB(var(--now-badge--secondary_low--background-color,var(--now-indicator--secondary_low--background-color,var(--now-color_alert--low-1,159,159,159))));border-color:RGB(var(--now-badge--secondary_low--border-color,var(--now-indicator--secondary_low--border-color,var(--now-color_alert--low-2,102,102,102))));color:RGB(var(--now-badge--secondary_low--color,var(--now-indicator_label--secondary_low--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-yellow.-primary{background-color:RGB(var(--now-badge--primary_yellow--background-color,var(--now-indicator--primary_yellow--background-color,var(--now-color_grouped--yellow-2,240,207,101))));border-color:RGB(var(--now-badge--primary_yellow--border-color,var(--now-indicator--primary_yellow--border-color,var(--now-color_grouped--yellow-3,204,176,86))));color:RGB(var(--now-badge--primary_yellow--color,var(--now-indicator_label--primary_yellow--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-yellow.-secondary{background-color:RGB(var(--now-badge--secondary_yellow--background-color,var(--now-indicator--secondary_yellow--background-color,var(--now-color_grouped--yellow-1,245,224,155))));border-color:RGB(var(--now-badge--secondary_yellow--border-color,var(--now-indicator--secondary_yellow--border-color,var(--now-color_grouped--yellow-2,240,207,101))));color:RGB(var(--now-badge--secondary_yellow--color,var(--now-indicator_label--secondary_yellow--color,var(--now-color_grouped--yellow-5,132,114,56))))}.now-badge.-orange.-primary{background-color:RGB(var(--now-badge--primary_orange--background-color,var(--now-indicator--primary_orange--background-color,var(--now-color_grouped--orange-2,215,129,106))));border-color:RGB(var(--now-badge--primary_orange--border-color,var(--now-indicator--primary_orange--border-color,var(--now-color_grouped--orange-3,183,110,90))));color:RGB(var(--now-badge--primary_orange--color,var(--now-indicator_label--primary_orange--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-orange.-secondary{background-color:RGB(var(--now-badge--secondary_orange--background-color,var(--now-indicator--secondary_orange--background-color,var(--now-color_grouped--orange-1,229,173,158))));border-color:RGB(var(--now-badge--secondary_orange--border-color,var(--now-indicator--secondary_orange--border-color,var(--now-color_grouped--orange-2,215,129,106))));color:RGB(var(--now-badge--secondary_orange--color,var(--now-indicator_label--secondary_orange--color,var(--now-color_grouped--orange-5,118,71,58))))}.now-badge.-magenta.-primary{background-color:RGB(var(--now-badge--primary_magenta--background-color,var(--now-indicator--primary_magenta--background-color,var(--now-color_grouped--magenta-2,203,121,193))));border-color:RGB(var(--now-badge--primary_magenta--border-color,var(--now-indicator--primary_magenta--border-color,var(--now-color_grouped--magenta-3,173,103,164))));color:RGB(var(--now-badge--primary_magenta--color,var(--now-indicator_label--primary_magenta--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-magenta.-secondary{background-color:RGB(var(--now-badge--secondary_magenta--background-color,var(--now-indicator--secondary_magenta--background-color,var(--now-color_grouped--magenta-1,221,168,215))));border-color:RGB(var(--now-badge--secondary_magenta--border-color,var(--now-indicator--secondary_magenta--border-color,var(--now-color_grouped--magenta-2,203,121,193))));color:RGB(var(--now-badge--secondary_magenta--color,var(--now-indicator_label--secondary_magenta--color,var(--now-color_grouped--magenta-5,112,67,106))))}.now-badge.-purple.-primary{background-color:RGB(var(--now-badge--primary_purple--background-color,var(--now-indicator--primary_purple--background-color,var(--now-color_grouped--purple-2,181,155,209))));border-color:RGB(var(--now-badge--primary_purple--border-color,var(--now-indicator--primary_purple--border-color,var(--now-color_grouped--purple-3,154,132,178))));color:RGB(var(--now-badge--primary_purple--color,var(--now-indicator_label--primary_purple--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-purple.-secondary{background-color:RGB(var(--now-badge--secondary_purple--background-color,var(--now-indicator--secondary_purple--background-color,var(--now-color_grouped--purple-1,207,190,225))));border-color:RGB(var(--now-badge--secondary_purple--border-color,var(--now-indicator--secondary_purple--border-color,var(--now-color_grouped--purple-2,181,155,209))));color:RGB(var(--now-badge--secondary_purple--color,var(--now-indicator_label--secondary_purple--color,var(--now-color_grouped--purple-5,100,85,115))))}.now-badge.-blue.-primary{background-color:RGB(var(--now-badge--primary_blue--background-color,var(--now-indicator--primary_blue--background-color,var(--now-color_grouped--blue-2,120,176,204))));border-color:RGB(var(--now-badge--primary_blue--border-color,var(--now-indicator--primary_blue--border-color,var(--now-color_grouped--blue-3,102,150,173))));color:RGB(var(--now-badge--primary_blue--color,var(--now-indicator_label--primary_blue--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-blue.-secondary{background-color:RGB(var(--now-badge--secondary_blue--background-color,var(--now-indicator--secondary_blue--background-color,var(--now-color_grouped--blue-1,167,204,222))));border-color:RGB(var(--now-badge--secondary_blue--border-color,var(--now-indicator--secondary_blue--border-color,var(--now-color_grouped--blue-2,120,176,204))));color:RGB(var(--now-badge--secondary_blue--color,var(--now-indicator_label--secondary_blue--color,var(--now-color_grouped--blue-5,66,97,112))))}.now-badge.-green-yellow.-primary{background-color:RGB(var(--now-badge--primary_green-yellow--background-color,var(--now-indicator--primary_green-yellow--background-color,var(--now-color_grouped--green-yellow-2,154,173,94))));border-color:RGB(var(--now-badge--primary_green-yellow--border-color,var(--now-indicator--primary_green-yellow--border-color,var(--now-color_grouped--green-yellow-3,131,147,80))));color:RGB(var(--now-badge--primary_green-yellow--color,var(--now-indicator_label--primary_green-yellow--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-green-yellow.-secondary{background-color:RGB(var(--now-badge--secondary_green-yellow--background-color,var(--now-indicator--secondary_green-yellow--background-color,var(--now-color_grouped--green-yellow-1,189,202,150))));border-color:RGB(var(--now-badge--secondary_green-yellow--border-color,var(--now-indicator--secondary_green-yellow--border-color,var(--now-color_grouped--green-yellow-2,154,173,94))));color:RGB(var(--now-badge--secondary_green-yellow--color,var(--now-indicator_label--secondary_green-yellow--color,var(--now-color_grouped--green-yellow-5,85,95,52))))}.now-badge.-pink.-primary{background-color:RGB(var(--now-badge--primary_pink--background-color,var(--now-indicator--primary_pink--background-color,var(--now-color_grouped--pink-2,203,121,143))));border-color:RGB(var(--now-badge--primary_pink--border-color,var(--now-indicator--primary_pink--border-color,var(--now-color_grouped--pink-3,173,103,122))));color:RGB(var(--now-badge--primary_pink--color,var(--now-indicator_label--primary_pink--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-pink.-secondary{background-color:RGB(var(--now-badge--secondary_pink--background-color,var(--now-indicator--secondary_pink--background-color,var(--now-color_grouped--pink-1,221,168,182))));border-color:RGB(var(--now-badge--secondary_pink--border-color,var(--now-indicator--secondary_pink--border-color,var(--now-color_grouped--pink-2,203,121,143))));color:RGB(var(--now-badge--secondary_pink--color,var(--now-indicator_label--secondary_pink--color,var(--now-color_grouped--pink-5,112,67,79))))}.now-badge.-brown.-primary{background-color:RGB(var(--now-badge--primary_brown--background-color,var(--now-indicator--primary_brown--background-color,var(--now-color_grouped--brown-2,156,138,119))));border-color:RGB(var(--now-badge--primary_brown--border-color,var(--now-indicator--primary_brown--border-color,var(--now-color_grouped--brown-3,133,117,101))));color:RGB(var(--now-badge--primary_brown--color,var(--now-indicator_label--primary_brown--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-brown.-secondary{background-color:RGB(var(--now-badge--secondary_brown--background-color,var(--now-indicator--secondary_brown--background-color,var(--now-color_grouped--brown-1,191,179,167))));border-color:RGB(var(--now-badge--secondary_brown--border-color,var(--now-indicator--secondary_brown--border-color,var(--now-color_grouped--brown-2,156,138,119))));color:RGB(var(--now-badge--secondary_brown--color,var(--now-indicator_label--secondary_brown--color,var(--now-color_grouped--brown-5,86,76,66))))}.now-badge.-green.-primary{background-color:RGB(var(--now-badge--primary_green--background-color,var(--now-indicator--primary_green--background-color,var(--now-color_grouped--green-2,147,170,125))));border-color:RGB(var(--now-badge--primary_green--border-color,var(--now-indicator--primary_green--border-color,var(--now-color_grouped--green-3,125,145,106))));color:RGB(var(--now-badge--primary_green--color,var(--now-indicator_label--primary_green--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-green.-secondary{background-color:RGB(var(--now-badge--secondary_green--background-color,var(--now-indicator--secondary_green--background-color,var(--now-color_grouped--green-1,185,200,171))));border-color:RGB(var(--now-badge--secondary_green--border-color,var(--now-indicator--secondary_green--border-color,var(--now-color_grouped--green-2,147,170,125))));color:RGB(var(--now-badge--secondary_green--color,var(--now-indicator_label--secondary_green--color,var(--now-color_grouped--green-5,81,94,69))))}.now-badge.-teal.-primary{background-color:RGB(var(--now-badge--primary_teal--background-color,var(--now-indicator--primary_teal--background-color,var(--now-color_grouped--teal-2,104,174,163))));border-color:RGB(var(--now-badge--primary_teal--border-color,var(--now-indicator--primary_teal--border-color,var(--now-color_grouped--teal-3,88,148,139))));color:RGB(var(--now-badge--primary_teal--color,var(--now-indicator_label--primary_teal--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-teal.-secondary{background-color:RGB(var(--now-badge--secondary_teal--background-color,var(--now-indicator--secondary_teal--background-color,var(--now-color_grouped--teal-1,157,202,195))));border-color:RGB(var(--now-badge--secondary_teal--border-color,var(--now-indicator--secondary_teal--border-color,var(--now-color_grouped--teal-2,104,174,163))));color:RGB(var(--now-badge--secondary_teal--color,var(--now-indicator_label--secondary_teal--color,var(--now-color_grouped--teal-5,57,96,90))))}.now-badge.-gray.-primary{background-color:RGB(var(--now-badge--primary_gray--background-color,var(--now-indicator--primary_gray--background-color,var(--now-color_grouped--gray-2,139,145,150))));border-color:RGB(var(--now-badge--primary_gray--border-color,var(--now-indicator--primary_gray--border-color,var(--now-color_grouped--gray-3,118,123,128))));color:RGB(var(--now-badge--primary_gray--color,var(--now-indicator_label--primary_gray--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-gray.-secondary{background-color:RGB(var(--now-badge--secondary_gray--background-color,var(--now-indicator--secondary_gray--background-color,var(--now-color_grouped--gray-1,180,184,187))));border-color:RGB(var(--now-badge--secondary_gray--border-color,var(--now-indicator--secondary_gray--border-color,var(--now-color_grouped--gray-2,139,145,150))));color:RGB(var(--now-badge--secondary_gray--color,var(--now-indicator_label--secondary_gray--color,var(--now-color_grouped--gray-5,77,80,83))))}@media(forced-colors:active){.now-badge{border:none;outline:1px solid canvastext}.now-badge .now-line-height-crop{color:canvastext;forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host{--now-line-height:0;display:inline-block;vertical-align:middle}.now-button-bare{align-items:center;background-color:transparent;border-color:transparent;border-radius:var(--now-button--bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px)));border-style:solid;cursor:pointer;display:flex;font-family:var(--now-button--bare--font-family,var(--now-actionable--bare--font-family,var(--now-actionable--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-button--bare--font-style,var(--now-actionable--bare--font-style,var(--now-actionable--font-style,normal)));font-variant:normal;font-weight:var(--now-button--bare--font-weight,var(--now-actionable--bare--font-weight,var(--now-actionable--font-weight,bold)));inline-size:inherit;justify-content:center;letter-spacing:inherit;margin:0;max-inline-size:calc(100vw - 1.0625rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:0;text-indent:0;text-shadow:none;text-transform:var(--now-button--bare--text-transform,var(--now-actionable--bare--text-transform,var(--now-actionable--text-transform,none)));white-space:var(--now-button--bare--text-wrap,var(--now-actionable--text-wrap,normal));word-spacing:inherit}.now-button-bare:focus::-moz-focus-inner{border-style:none}.now-button-bare:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-button-bare:focus:focus{outline:1px solid highlight}}.now-button-bare.-sm{font-size:var(--now-actionable--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;min-block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1))}.now-button-bare.-sm.hide-block-padding{min-block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-block:0}.now-button-bare.-sm.show-inline-padding{padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-button-bare.-sm .now-line-height-crop{display:block}.now-button-bare.-sm .now-line-height-crop:after,.now-button-bare.-sm .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button-bare.-sm .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-button-bare.-sm .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-button-bare.-sm .now-line-height-crop+.now-button-bare.-sm .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-button-bare.-md{font-size:var(--now-actionable--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1))}.now-button-bare.-md.hide-block-padding{min-block-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:0}.now-button-bare.-md.show-inline-padding{padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-button-bare.-md .now-line-height-crop{display:block}.now-button-bare.-md .now-line-height-crop:after,.now-button-bare.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button-bare.-md .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-button-bare.-md .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-button-bare.-md .now-line-height-crop+.now-button-bare.-md .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-button-bare.-lg{font-size:var(--now-actionable--font-size--lg,var(--now-font-size--lg1,calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-block-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1))}.now-button-bare.-lg.hide-block-padding{min-block-size:calc(1.75rem*var(--classicsponlydonotuse--rem-multipy));padding-block:0}.now-button-bare.-lg.show-inline-padding{padding-inline:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-button-bare.-lg .now-line-height-crop{display:block}.now-button-bare.-lg .now-line-height-crop:after,.now-button-bare.-lg .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button-bare.-lg .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-button-bare.-lg .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-button-bare.-lg .now-line-height-crop+.now-button-bare.-lg .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-button-bare.-primary{border-radius:var(--now-button--bare_primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button--bare_primary--border-width,var(--now-actionable--primary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--bare_primary--color,var(--now-actionable_label--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button-bare.-primary .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button-bare.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button--bare_primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--bare_primary--border-color--hover,var(--now-actionable--primary_bare--border-color--hover,var(--now-color--primary-3,15,67,55))),var(--now-button--bare_primary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_primary--color--hover,var(--now-actionable_label--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button-bare.-primary:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button-bare.-primary:not(.is-disabled):active{background-color:RGB(var(--now-button--bare_primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--bare_primary--border-color--active,var(--now-actionable--primary_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--bare_primary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_primary--color--active,var(--now-actionable_label--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary.is-disabled{opacity:var(--now-button--bare_primary--opacity--disabled,var(--now-actionable--primary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-bare.-primary.high-contrast{color:RGB(var(--now-button--bare_primary_high-contrast--color,var(--now-actionable_label--primary_high-contrast_bare--color,var(--now-color--primary-3,15,67,55))))}.now-button-bare.-primary.high-contrast .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary_high-contrast--color,var(--now-actionable_icon--primary_high-contrast_bare--color,var(--now-color--primary-3,15,67,55))))}.now-button-bare.-primary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button--bare_primary_high-contrast--color--hover,var(--now-actionable_label--primary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary.high-contrast:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary_high-contrast--color--hover,var(--now-actionable_icon--primary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button--bare_primary_high-contrast--color--active,var(--now-actionable_label--primary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary.high-contrast:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary_high-contrast--color--active,var(--now-actionable_icon--primary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-secondary{border-radius:var(--now-button--bare_secondary--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button--bare_secondary--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--bare_secondary--color,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button-bare.-secondary .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_secondary--color,var(--now-actionable_icon--secondary_bare--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button-bare.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button--bare_secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--bare_secondary--border-color--hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107)))),var(--now-button--bare_secondary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_secondary--color--hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button-bare.-secondary:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_secondary--color--hover,var(--now-actionable_icon--secondary_bare--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button-bare.-secondary:not(.is-disabled):active{background-color:RGB(var(--now-button--bare_secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--bare_secondary--border-color--active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71)))),var(--now-button--bare_secondary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_secondary--color--active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button-bare.-secondary:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_secondary--color--active,var(--now-actionable_icon--secondary_bare--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button-bare.-secondary.is-disabled{opacity:var(--now-button--bare_secondary--opacity--disabled,var(--now-actionable--secondary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-bare.-secondary.high-contrast{color:RGB(var(--now-button--bare_secondary_high-contrast--color,var(--now-actionable_label--secondary_high-contrast_bare--color,var(--now-color--secondary-2,1,89,107))))}.now-button-bare.-secondary.high-contrast .now-button-bare-icon{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color,var(--now-actionable_icon--secondary_high-contrast_bare--color,var(--now-color--secondary-2,1,89,107))))}.now-button-bare.-secondary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button--bare_secondary_high-contrast--color--hover,var(--now-actionable_label--secondary_high-contrast_bare--color--hover,var(--now-color--secondary-3,1,60,71))))}.now-button-bare.-secondary.high-contrast:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color--hover,var(--now-actionable_icon--secondary_high-contrast_bare--color--hover,var(--now-color--secondary-3,1,60,71))))}.now-button-bare.-secondary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button--bare_secondary_high-contrast--color--active,var(--now-actionable_label--secondary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-secondary.high-contrast:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color--active,var(--now-actionable_icon--secondary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-tertiary{border-radius:var(--now-button--bare_tertiary--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button--bare_tertiary--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--bare_tertiary--color,var(--now-actionable_label--tertiary_bare--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button-bare.-tertiary .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary--color,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button-bare.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button--bare_tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--bare_tertiary--border-color--hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_tertiary--color--hover,var(--now-actionable_label--tertiary_bare--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button-bare.-tertiary:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary--color--hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button-bare.-tertiary:not(.is-disabled):active{background-color:RGB(var(--now-button--bare_tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--bare_tertiary--border-color--active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))),var(--now-button--bare_tertiary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_tertiary--color--active,var(--now-actionable_label--tertiary_bare--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button-bare.-tertiary:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary--color--active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button-bare.-tertiary.is-disabled{opacity:var(--now-button--bare_tertiary--opacity--disabled,var(--now-actionable--tertiary_bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-bare.-tertiary.high-contrast{color:RGB(var(--now-button--bare_tertiary_high-contrast--color,var(--now-actionable_label--tertiary_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--bare_tertiary_high-contrast--color-alpha,1))}.now-button-bare.-tertiary.high-contrast .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary_high-contrast--color,var(--now-actionable_icon--tertiary_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-tertiary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button--bare_tertiary_high-contrast--color--hover,var(--now-actionable_label--tertiary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--bare_tertiary_high-contrast--color-alpha--hover,1))}.now-button-bare.-tertiary.high-contrast:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary_high-contrast--color--hover,var(--now-actionable_icon--tertiary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-tertiary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button--bare_tertiary_high-contrast--color--active,var(--now-actionable_label--tertiary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--bare_tertiary_high-contrast--color-alpha--active,1))}.now-button-bare.-tertiary.high-contrast:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary_high-contrast--color--active,var(--now-actionable_icon--tertiary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-bare.is-disabled:hover{box-shadow:none}.now-button-bare.is-disabled:focus::-moz-focus-inner{border-style:none}.now-button-bare.is-disabled:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-bare.is-disabled:focus:focus{outline:1px solid highlight}}.now-button-bare .now-line-height-crop{min-inline-size:0}.now-button-bare-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-button-bare-label:after{content:\\\"\\\";display:block}@media(forced-colors:active){.now-button-bare{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button-bare now-icon,.now-button-bare now-icon-animated{color:inherit!important}.now-button-bare:focus,.now-button-bare:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button-bare.is-disabled,.now-button-bare.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-button-bare .now-line-height-crop{forced-color-adjust:none}.now-button-bare ::slotted(*){forced-color-adjust:none}.now-button-bare.hide-block-padding.-sm{padding-block:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))!important}.now-button-bare.hide-block-padding.-md{padding-block:calc(.1875rem*var(--classicsponlydonotuse--rem-multipy))!important}.now-button-bare.hide-block-padding.-lg{padding-block:calc(.375rem*var(--classicsponlydonotuse--rem-multipy))!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-button-circular{align-items:center;background-color:RGB(var(--now-button-circular--background-color,var(--now-actionable--brand-primary--background-color,var(--now-color--primary-1,30,133,109))));block-size:calc(3.75rem*var(--classicsponlydonotuse--rem-multipy));border-color:RGB(var(--now-button-circular--border-color,var(--now-actionable--brand-primary--border-color,var(--now-color--primary-1,30,133,109))));border-radius:50%;border-style:solid;border-width:var(--now-button-circular--border-width,var(--now-actionable--brand-primary--border-width,var(--now-actionable--contained_brand--border-width,0)));color:RGB(var(--now-button-circular--color,var(--now-actionable_icon--brand-primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))));cursor:pointer;display:flex;inline-size:inherit;inline-size:calc(3.75rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center}.now-button-circular:not(.is-disabled):hover{background-color:RGB(var(--now-button-circular--background-color--hover,var(--now-actionable--brand-primary--background-color--hover,var(--now-color--primary-2,23,100,82))));border-color:RGB(var(--now-button-circular--border-color--hover,var(--now-actionable--brand-primary--border-color--hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-button-circular--color--hover,var(--now-actionable_icon--brand-primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-circular:not(.is-disabled):active{background-color:RGB(var(--now-button-circular--background-color--active,var(--now-actionable--brand-primary--background-color--active,var(--now-color--primary-3,15,67,55))));border-color:RGB(var(--now-button-circular--border-color--active,var(--now-actionable--brand-primary--border-color--active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-button-circular--color--active,var(--now-actionable_icon--brand-primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-circular:focus::-moz-focus-inner{border-style:none}.now-button-circular:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-circular:focus:focus{outline:1px solid highlight}}.now-button-circular.has-shadow{box-shadow:0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-button-circular.has-shadow:hover{box-shadow:0 calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) calc(1rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-button-circular.has-shadow:focus{box-shadow:0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25)),inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))}.now-button-circular.is-disabled{color:RGB(var(--now-button-circular--color,var(--now-actionable_icon--brand-primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))));cursor:not-allowed;opacity:var(--now-button-circular--opacity--disabled,var(--now-actionable--brand-primary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}@media(forced-colors:active){.now-button-circular{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button-circular now-icon,.now-button-circular now-icon-animated{color:inherit!important}.now-button-circular:focus,.now-button-circular:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button-circular.is-disabled,.now-button-circular.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-button-circular .now-line-height-crop{forced-color-adjust:none}.now-button-circular ::slotted(*){forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-button-iconic{align-items:center;border-radius:var(--now-button-iconic--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-style:solid;cursor:pointer;display:flex;inline-size:inherit;justify-content:center;margin:0;padding:0}.now-button-iconic:not(.is-bare):hover{box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-button-iconic:focus::-moz-focus-inner{border-style:none}.now-button-iconic:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-iconic:focus:focus{outline:1px solid highlight}}.now-button-iconic.-sm{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button-iconic.-md{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button-iconic.-lg{block-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button-iconic.-primary{background-color:RGB(var(--now-button-iconic--primary--background-color,var(--now-actionable--primary--background-color,var(--now-color--primary-1,30,133,109))));border-color:RGB(var(--now-button-iconic--primary--border-color,var(--now-actionable--primary--border-color,var(--now-color--primary-1,30,133,109))));border-radius:var(--now-button-iconic--primary--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button-iconic--primary--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0)));color:RGB(var(--now-button-iconic--primary--color,var(--now-actionable_icon--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-iconic.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--primary--background-color--hover,var(--now-actionable--primary--background-color--hover,var(--now-color--primary-2,23,100,82))));border-color:RGB(var(--now-button-iconic--primary--border-color--hover,var(--now-actionable--primary--border-color--hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-button-iconic--primary--color--hover,var(--now-actionable_icon--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-iconic.-primary:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--primary--background-color--active,var(--now-actionable--primary--background-color--active,var(--now-color--primary-3,15,67,55))));border-color:RGB(var(--now-button-iconic--primary--border-color--active,var(--now-actionable--primary--border-color--active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-button-iconic--primary--color--active,var(--now-actionable_icon--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-iconic.-primary.is-disabled{opacity:var(--now-button-iconic--primary--opacity--disabled,var(--now-actionable--primary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.-secondary{background-color:RGB(var(--now-button-iconic--secondary--background-color,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142))),var(--now-button-iconic--secondary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button-iconic--secondary--border-color,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142))));border-radius:var(--now-button-iconic--secondary--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button-iconic--secondary--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--secondary--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-button-iconic.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--secondary--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))),var(--now-button-iconic--secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--secondary--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))));color:RGB(var(--now-button-iconic--secondary--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-button-iconic.-secondary:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--secondary--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))),var(--now-button-iconic--secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-iconic--secondary--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))));color:RGB(var(--now-button-iconic--secondary--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-button-iconic.-secondary.is-disabled{opacity:var(--now-button-iconic--secondary--opacity--disabled,var(--now-actionable--secondary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.-tertiary{background-color:RGB(var(--now-button-iconic--tertiary--background-color,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button-iconic--tertiary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button-iconic--tertiary--border-color,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))),var(--now-button-iconic--tertiary--border-color-alpha,var(--now-actionable--iconic--border-color-alpha,1)));border-radius:var(--now-button-iconic--tertiary--border-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button-iconic--tertiary--border-width,var(--now-actionable--tertiary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--tertiary--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-button-iconic.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--tertiary--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button-iconic--tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--tertiary--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button-iconic--tertiary--border-color-alpha--hover,var(--now-actionable--iconic--border-color-alpha,1)));color:RGB(var(--now-button-iconic--tertiary--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.now-button-iconic.-tertiary:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--tertiary--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button-iconic--tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-iconic--tertiary--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--tertiary--border-color-alpha--active,var(--now-actionable--iconic--border-color-alpha,1)));color:RGB(var(--now-button-iconic--tertiary--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.-tertiary.is-disabled{opacity:var(--now-button-iconic--tertiary--opacity--disabled,var(--now-actionable--tertiary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.is-bare,.now-button-iconic.is-bare:active,.now-button-iconic.is-bare:hover{background-color:transparent;border-color:transparent;border-width:0}.now-button-iconic.is-bare:focus::-moz-focus-inner{border-style:none}.now-button-iconic.is-bare:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-button-iconic.is-bare:focus:focus{outline:1px solid highlight}}.now-button-iconic.is-bare.-primary{border-radius:var(--now-button-iconic--bare_primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button-iconic--bare_primary--border-width,var(--now-actionable--primary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--bare_primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button-iconic.is-bare.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button-iconic--bare_primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_primary--border-color--hover,var(--now-actionable--primary_bare--border-color--hover,var(--now-color--primary-3,15,67,55))),var(--now-button-iconic--bare_primary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button-iconic.is-bare.-primary:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--bare_primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button-iconic--bare_primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-iconic--bare_primary--border-color--active,var(--now-actionable--primary_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_primary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-primary.is-disabled{opacity:var(--now-button-iconic--bare_primary--opacity--disabled,var(--now-actionable--primary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.is-bare.-primary.high-contrast{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color,var(--now-actionable_icon--primary_high-contrast_bare--color,var(--now-color--primary-3,15,67,55))))}.now-button-iconic.is-bare.-primary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color--hover,var(--now-actionable_icon--primary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-primary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color--active,var(--now-actionable_icon--primary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-secondary{border-radius:var(--now-button-iconic--bare_secondary--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button-iconic--bare_secondary--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--bare_secondary--color,var(--now-actionable_icon--secondary_bare--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button-iconic.is-bare.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-button-iconic--bare_secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_secondary--border-color--hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107)))),var(--now-button-iconic--bare_secondary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_secondary--color--hover,var(--now-actionable_icon--secondary_bare--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button-iconic.is-bare.-secondary:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--bare_secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-button-iconic--bare_secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-iconic--bare_secondary--border-color--active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71)))),var(--now-button-iconic--bare_secondary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_secondary--color--active,var(--now-actionable_icon--secondary_bare--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button-iconic.is-bare.-secondary.is-disabled{opacity:var(--now-button-iconic--bare_secondary--opacity--disabled,var(--now-actionable--secondary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.is-bare.-secondary.high-contrast{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color,var(--now-actionable_icon--secondary_high-contrast_bare--color,var(--now-color--secondary-2,1,89,107))))}.now-button-iconic.is-bare.-secondary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color--hover,var(--now-actionable_icon--secondary_high-contrast_bare--color--hover,var(--now-color--secondary-3,1,60,71))))}.now-button-iconic.is-bare.-secondary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color--active,var(--now-actionable_icon--secondary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-tertiary{border-radius:var(--now-button-iconic--bare_tertiary--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button-iconic--bare_tertiary--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--bare_tertiary--color,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button-iconic.is-bare.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-iconic--bare_tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-iconic--bare_tertiary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_tertiary--color--hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button-iconic.is-bare.-tertiary:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-iconic--bare_tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))),var(--now-button-iconic--bare_tertiary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_tertiary--color--active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button-iconic.is-bare.-tertiary.is-disabled{opacity:var(--now-button-iconic--bare_tertiary--opacity--disabled,var(--now-actionable--tertiary_bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-iconic.is-bare.-tertiary.high-contrast{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color,var(--now-actionable_icon--tertiary_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-tertiary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--hover,var(--now-actionable_icon--tertiary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--hover,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-iconic.is-bare.-tertiary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--active,var(--now-actionable_icon--tertiary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--active,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-iconic.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-iconic.is-disabled:hover{box-shadow:none}.now-button-iconic.is-disabled:focus::-moz-focus-inner{border-style:none}.now-button-iconic.is-disabled:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-iconic.is-disabled:focus:focus{outline:1px solid highlight}}.now-button-iconic.hide-padding{block-size:auto;border-width:0;inline-size:auto}@media(forced-colors:active){.now-button-iconic{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button-iconic now-icon,.now-button-iconic now-icon-animated{color:inherit!important}.now-button-iconic:focus,.now-button-iconic:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button-iconic.is-disabled,.now-button-iconic.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-button-stateful{align-items:center;background-color:transparent;border-color:transparent;border-style:solid;cursor:pointer;display:flex;inline-size:inherit;justify-content:center;margin:0;padding:0}.now-button-stateful:focus::-moz-focus-inner{border-style:none}.now-button-stateful:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-stateful:focus:focus{outline:1px solid highlight}}.now-button-stateful.-sm{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button-stateful.-md{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button-stateful.-lg{block-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button-stateful.-primary{border-radius:var(--now-button-stateful--primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button-stateful--primary--border-width,var(--now-actionable--primary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-stateful--primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button-stateful.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary--border-color--hover,var(--now-actionable--primary_bare--border-color--hover,var(--now-color--primary-3,15,67,55))),var(--now-button-stateful--primary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary--border-color--active,var(--now-actionable--primary_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.is-disabled{opacity:var(--now-button-stateful--primary--opacity--disabled,var(--now-actionable--primary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-primary.is-selected{color:RGB(var(--now-button-stateful--primary--color--selected,var(--now-actionable_icon--primary_bare--color--selected,var(--now-color--primary-2,23,100,82))))}.now-button-stateful.-primary.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary--background-color--selected_hover,var(--now-actionable--primary_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary--border-color--selected_hover,var(--now-actionable--primary_bare--border-color--selected_hover,var(--now-color--primary-3,15,67,55))),var(--now-button-stateful--primary--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary--color--selected_hover,var(--now-actionable_icon--primary_bare--color--selected_hover,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary--background-color--selected_active,var(--now-actionable--primary_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary--border-color--selected_active,var(--now-actionable--primary_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary--color--selected_active,var(--now-actionable_icon--primary_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.high-contrast{color:RGB(var(--now-button-stateful--primary_high-contrast--color,var(--now-actionable_icon--primary_high-contrast_bare--color,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary_high-contrast--background-color--hover,var(--now-actionable--primary_high-contrast_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_high-contrast--border-color--hover,var(--now-actionable--primary_high-contrast_bare--border-color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_high-contrast--color--hover,var(--now-actionable_icon--primary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary_high-contrast--background-color--active,var(--now-actionable--primary_high-contrast_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary_high-contrast--border-color--active,var(--now-actionable--primary_high-contrast_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_high-contrast--color--active,var(--now-actionable_icon--primary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.high-contrast.is-selected{color:RGB(var(--now-button-stateful--primary_high-contrast--color--selected,var(--now-actionable_icon--primary_high-contrast_bare--color--selected,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary_high-contrast--background-color--selected_hover,var(--now-actionable--primary_high-contrast_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_high-contrast--border-color--selected_hover,var(--now-actionable--primary_high-contrast_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_high-contrast--color--selected_hover,var(--now-actionable_icon--primary_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.high-contrast.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary_high-contrast--background-color--selected_active,var(--now-actionable--primary_high-contrast_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary_high-contrast--border-color--selected_active,var(--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_high-contrast--color--selected_active,var(--now-actionable_icon--primary_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-highlighted.is-selected,.now-button-stateful.-primary.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--primary_highlighted--background-color--selected,var(--now-actionable--primary_highlighted_bare--background-color--selected,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_highlighted--border-color--selected,var(--now-actionable--primary_bare--border-color--selected,var(--now-color--primary-2,23,100,82))),var(--now-button-stateful--primary_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted--color--selected,var(--now-actionable_icon--primary_highlighted_bare--color--selected,var(--now-color--primary-2,23,100,82))))}.now-button-stateful.-primary.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-primary.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary_highlighted--background-color--selected_hover,var(--now-actionable--primary_highlighted_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_highlighted--border-color--selected_hover,var(--now-actionable--primary_bare--border-color--selected_hover,var(--now-color--primary-3,15,67,55))),var(--now-button-stateful--primary_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted--color--selected_hover,var(--now-actionable_icon--primary_highlighted_bare--color--selected_hover,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-primary.is-highlighted.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary_highlighted--background-color--selected_active,var(--now-actionable--primary_highlighted_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary_highlighted--border-color--selected_active,var(--now-actionable--primary_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted--color--selected_active,var(--now-actionable_icon--primary_highlighted_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-highlighted.is-selected.high-contrast,.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--background-color--selected,var(--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--border-color--selected,var(--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected,var(--now-color--primary-3,15,67,55))),var(--now-button-stateful--primary_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--color--selected,var(--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--color--selected_hover,var(--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--color--selected_active,var(--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection,.now-button-stateful.-primary.-selection.-highlighted,.now-button-stateful.-primary.-selection.is-highlighted{border-radius:var(--now-button-stateful--primary-selection--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px)));border-width:var(--now-button-stateful--primary-selection--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)));color:RGB(var(--now-button-stateful--primary-selection--color,var(--now-actionable_icon--primary-selection_bare--color,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-primary.-selection.-highlighted:not(.is-disabled):hover,.now-button-stateful.-primary.-selection.is-highlighted:not(.is-disabled):hover,.now-button-stateful.-primary.-selection:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection--background-color--hover,var(--now-actionable--primary-selection_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection--border-color--hover,var(--now-actionable--primary-selection_bare--border-color--hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--primary-selection--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection--color--hover,var(--now-actionable_icon--primary-selection_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.-highlighted:not(.is-disabled):active,.now-button-stateful.-primary.-selection.is-highlighted:not(.is-disabled):active,.now-button-stateful.-primary.-selection:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary-selection--background-color--active,var(--now-actionable--primary-selection_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary-selection--border-color--active,var(--now-actionable--primary-selection_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection--color--active,var(--now-actionable_icon--primary-selection_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.is-disabled{opacity:var(--now-button-stateful--primary-selection--opacity--disabled,var(--now-actionable--primary-selection_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-primary.-selection.is-selected{color:RGB(var(--now-button-stateful--primary-selection--color--selected,var(--now-actionable_icon--primary-selection_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-primary.-selection.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection--background-color--selected_hover,var(--now-actionable--primary-selection_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection--border-color--selected_hover,var(--now-actionable--primary-selection_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--primary-selection--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection--color--selected_hover,var(--now-actionable_icon--primary-selection_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary-selection--background-color--selected_active,var(--now-actionable--primary-selection_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary-selection--border-color--selected_active,var(--now-actionable--primary-selection_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection--color--selected_active,var(--now-actionable_icon--primary-selection_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.high-contrast{color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color,var(--now-actionable_label--primary-selection_high-contrast_bare--color,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--background-color--hover,var(--now-actionable--primary-selection_high-contrast_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--border-color--hover,var(--now-actionable--primary-selection_high-contrast_bare--border-color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--hover,var(--now-actionable_label--primary-selection_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--background-color--active,var(--now-actionable--primary-selection_high-contrast_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--border-color--active,var(--now-actionable--primary-selection_high-contrast_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--active,var(--now-actionable_label--primary-selection_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.high-contrast.is-selected{color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--selected,var(--now-actionable_label--primary-selection_high-contrast_bare--color--selected,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--background-color--selected_hover,var(--now-actionable--primary-selection_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--border-color--selected_hover,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--selected_hover,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.high-contrast.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--background-color--selected_active,var(--now-actionable--primary-selection_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--border-color--selected_active,var(--now-actionable--primary-selection_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--selected_active,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected,.now-button-stateful.-primary.-selection.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted--background-color--selected,var(--now-actionable--primary-selection_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted--border-color--selected,var(--now-actionable--primary-selection_highlighted_bare--border-color--selected,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--primary-selection_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted--color--selected,var(--now-actionable_label--primary-selection_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-primary.-selection.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted--background-color--selected_hover,var(--now-actionable--primary-selection_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted--border-color--selected_hover,var(--now-actionable--primary-selection_highlighted_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted--color--selected_hover,var(--now-actionable_label--primary-selection_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-primary.-selection.is-highlighted.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted--background-color--selected_active,var(--now-actionable--primary-selection_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted--border-color--selected_active,var(--now-actionable--primary-selection_highlighted_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted--color--selected_active,var(--now-actionable_label--primary-selection_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast,.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color--selected,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color--selected,var(--now-actionable--primary-selection_high-contrast_bare--border-color--selected,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--color--selected,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--color--selected_hover,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--color--selected_active,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary{border-radius:var(--now-button-stateful--secondary--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button-stateful--secondary--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-stateful--secondary--color,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button-stateful.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-button-stateful--secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary--border-color--hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107)))),var(--now-button-stateful--secondary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary--color--hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button-stateful.-secondary:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-button-stateful--secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary--border-color--active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71)))),var(--now-button-stateful--secondary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary--color--active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button-stateful.-secondary.is-disabled{opacity:var(--now-button-stateful--secondary--opacity--disabled,var(--now-actionable--secondary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-secondary.is-selected{color:RGB(var(--now-button-stateful--secondary--color--selected,var(--now-actionable_label--secondary_bare--color--selected,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142))))))}.now-button-stateful.-secondary.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))))),var(--now-button-stateful--secondary--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary--color--selected_hover,var(--now-actionable_label--secondary_bare--color--selected_hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))))}.now-button-stateful.-secondary.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))))),var(--now-button-stateful--secondary--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary--color--selected_active,var(--now-actionable_label--secondary_bare--color--selected_active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71))))))}.now-button-stateful.-secondary.high-contrast{color:RGB(var(--now-button-stateful--secondary_high-contrast--color,var(--now-actionable_label--secondary_high-contrast_bare--color,var(--now-color--secondary-2,1,89,107))))}.now-button-stateful.-secondary.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary_high-contrast--background-color--hover,var(--now-actionable--secondary_high-contrast_bare--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_high-contrast--border-color--hover,var(--now-actionable--secondary_high-contrast_bare--border-color--hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))))),var(--now-button-stateful--secondary_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_high-contrast--color--hover,var(--now-actionable_label--secondary_high-contrast_bare--color--hover,var(--now-color--secondary-3,1,60,71))))}.now-button-stateful.-secondary.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary_high-contrast--background-color--active,var(--now-actionable--secondary_high-contrast_bare--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary_high-contrast--border-color--active,var(--now-actionable--secondary_high-contrast_bare--border-color--active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))))),var(--now-button-stateful--secondary_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_high-contrast--color--active,var(--now-actionable_label--secondary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.high-contrast.is-selected{color:RGB(var(--now-button-stateful--secondary_high-contrast--color--selected,var(--now-actionable_label--secondary_high-contrast_bare--color--selected,var(--now-color--secondary-2,1,89,107))))}.now-button-stateful.-secondary.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary_high-contrast--background-color--selected_hover,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))))))),var(--now-button-stateful--secondary_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_high-contrast--border-color--selected_hover,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))))))),var(--now-button-stateful--secondary_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_high-contrast--color--selected_hover,var(--now-actionable_label--secondary_high-contrast_bare--color--selected_hover,var(--now-color--secondary-3,1,60,71))))}.now-button-stateful.-secondary.high-contrast.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary_high-contrast--background-color--selected_active,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_active,var(--now-actionable--secondary_highlighted_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))))))),var(--now-button-stateful--secondary_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary_high-contrast--border-color--selected_active,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-actionable--secondary_highlighted_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))))))),var(--now-button-stateful--secondary_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_high-contrast--color--selected_active,var(--now-actionable_label--secondary_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-highlighted.is-selected,.now-button-stateful.-secondary.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--secondary_highlighted--background-color--selected,var(--now-actionable--secondary_highlighted_bare--background-color--selected,var(--now-actionable--secondary_bare--background-color--selected,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_highlighted--border-color--selected,var(--now-actionable--secondary_highlighted_bare--border-color--selected,var(--now-actionable--secondary_bare--border-color--selected,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted--color--selected,var(--now-actionable_label--secondary_highlighted_bare--color--selected,var(--now-actionable_label--secondary_bare--color--selected,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))))}.now-button-stateful.-secondary.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-secondary.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary_highlighted--background-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))))),var(--now-button-stateful--secondary_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_highlighted--border-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107)))))),var(--now-button-stateful--secondary_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted--color--selected_hover,var(--now-actionable_label--secondary_highlighted_bare--color--selected_hover,var(--now-actionable_label--secondary_bare--color--selected_hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))))}.now-button-stateful.-secondary.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-secondary.is-highlighted.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary_highlighted--background-color--selected_active,var(--now-actionable--secondary_highlighted_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))))),var(--now-button-stateful--secondary_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary_highlighted--border-color--selected_active,var(--now-actionable--secondary_highlighted_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71)))))),var(--now-button-stateful--secondary_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted--color--selected_active,var(--now-actionable_label--secondary_highlighted_bare--color--selected_active,var(--now-actionable_label--secondary_bare--color--selected_active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))))}.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast,.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--background-color--selected,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected,var(--now-actionable--secondary_highlighted_bare--background-color--selected,var(--now-actionable--secondary_bare--background-color--selected,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142)))))),var(--now-button-stateful--secondary_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--border-color--selected,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected,var(--now-actionable--secondary_highlighted_bare--border-color--selected,var(--now-actionable--secondary_bare--border-color--selected,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142)))))),var(--now-button-stateful--secondary_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--color--selected,var(--now-actionable_label--secondary_high-contrast_bare--color--selected,var(--now-color--secondary-2,1,89,107))))}.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))))))),var(--now-button-stateful--secondary_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))))))),var(--now-button-stateful--secondary_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--color--selected_hover,var(--now-actionable_label--secondary_high-contrast_bare--color--selected_hover,var(--now-color--secondary-3,1,60,71))))}.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_active,var(--now-actionable--secondary_highlighted_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))))))),var(--now-button-stateful--secondary_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-actionable--secondary_highlighted_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))))))),var(--now-button-stateful--secondary_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--color--selected_active,var(--now-actionable_label--secondary_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-selection,.now-button-stateful.-secondary.-selection.-highlighted,.now-button-stateful.-secondary.-selection.is-highlighted{border-radius:var(--now-button-stateful--secondary-selection--border-radius,var(--now-actionable--secondary-selection_bare--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button-stateful--secondary-selection--border-width,var(--now-actionable--secondary-selection_bare--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button-stateful--secondary-selection--color,var(--now-actionable_icon--primary-selection_bare--color,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.-highlighted:not(.is-disabled):hover,.now-button-stateful.-secondary.-selection.is-highlighted:not(.is-disabled):hover,.now-button-stateful.-secondary.-selection:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection--background-color--hover,var(--now-actionable--secondary-selection_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection--border-color--hover,var(--now-actionable--secondary-selection_bare--border-color--hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--secondary-selection--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection--color--hover,var(--now-actionable_icon--primary-selection_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.-highlighted:not(.is-disabled):active,.now-button-stateful.-secondary.-selection.is-highlighted:not(.is-disabled):active,.now-button-stateful.-secondary.-selection:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary-selection--background-color--active,var(--now-actionable--secondary-selection_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary-selection--border-color--active,var(--now-actionable--secondary-selection_bare--border-color--active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection--color--active,var(--now-actionable_icon--primary-selection_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-selection.is-disabled{opacity:var(--now-button-stateful--secondary-selection--opacity--disabled,var(--now-actionable--secondary-selection_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-secondary.-selection.is-selected{color:RGB(var(--now-button-stateful--secondary-selection--color--selected,var(--now-actionable_icon--secondary-selection_bare--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-button-stateful.-secondary.-selection.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection--background-color--selected_hover,var(--now-actionable--secondary-selection_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection--border-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected_hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--secondary-selection--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection--color--selected_hover,var(--now-actionable_icon--secondary-selection_bare--color--selected_hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary-selection--background-color--selected_active,var(--now-actionable--secondary-selection_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary-selection--border-color--selected_active,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected_active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection--color--selected_active,var(--now-actionable_icon--secondary-selection_bare--color--selected_active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.high-contrast{color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--background-color--hover,var(--now-actionable--secondary-selection_high-contrast_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--border-color--hover,var(--now-actionable--secondary-selection_high-contrast_bare--border-color--hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--hover,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--background-color--active,var(--now-actionable--secondary-selection_high-contrast_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--border-color--active,var(--now-actionable--secondary-selection_high-contrast_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--secondary-selection_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--active,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-selection.high-contrast.is-selected{color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--selected,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--background-color--selected_hover,var(--now-actionable--secondary-selection_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--border-color--selected_hover,var(--now-actionable--secondary-selection_high-contrast_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--selected_hover,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.high-contrast.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--background-color--selected_active,var(--now-actionable--secondary-selection_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--border-color--selected_active,var(--now-actionable--secondary-selection_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--secondary-selection_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--selected_active,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--background-color--selected,var(--now-actionable--secondary-selection_highlighted_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--border-color--selected,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted--color--selected,var(--now-actionable_icon--secondary-selection_highlighted_bare--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--background-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--border-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected_hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--secondary-selection_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted--color--selected_hover,var(--now-actionable_icon--secondary-selection_highlighted_bare--color--selected_hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--background-color--selected_active,var(--now-actionable--secondary-selection_highlighted_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted--background-color-alpha--selected_active,now-actionable--background-color-alpha--active));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--border-color--selected_active,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected_active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted--color--selected_active,var(--now-actionable_icon--secondary-selection_highlighted_bare--color--selected_active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color--selected,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color--selected,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--color--selected,var(--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--color--selected_hover,var(--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--color--selected_active,var(--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary{border-radius:var(--now-button-stateful--tertiary--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button-stateful--tertiary--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-stateful--tertiary--color,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button-stateful.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-stateful--tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary--border-color--hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-stateful--tertiary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary--color--hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button-stateful.-tertiary:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-stateful--tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary--border-color--active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))),var(--now-button-stateful--tertiary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary--color--active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button-stateful.-tertiary.is-disabled{opacity:var(--now-button-stateful--tertiary--opacity--disabled,var(--now-actionable--tertiary_bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.is-selected{color:RGB(var(--now-button-stateful--tertiary--color--selected,var(--now-actionable_icon--tertiary_bare--color--selected,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))))}.now-button-stateful.-tertiary.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary--color--selected_hover,var(--now-actionable_icon--tertiary_bare--color--selected_hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))))}.now-button-stateful.-tertiary.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))))),var(--now-button-stateful--tertiary--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary--color--selected_active,var(--now-actionable_icon--tertiary_bare--color--selected_active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))))}.now-button-stateful.-tertiary.high-contrast{color:RGB(var(--now-button-stateful--tertiary_high-contrast--color,var(--now-actionable_icon--tertiary_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary_high-contrast--color-alpha,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-stateful.-tertiary.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary_high-contrast--background-color--hover,var(--now-actionable--tertiary_high-contrast_bare--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_high-contrast--border-color--hover,var(--now-actionable--tertiary_high-contrast_bare--border-color--hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--hover,var(--now-actionable_icon--tertiary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary_high-contrast--color-alpha--hover,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-stateful.-tertiary.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary_high-contrast--background-color--active,var(--now-actionable--tertiary_high-contrast_bare--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary_high-contrast--border-color--active,var(--now-actionable--tertiary_high-contrast_bare--border-color--active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))))),var(--now-button-stateful--tertiary_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--active,var(--now-actionable_icon--tertiary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary_high-contrast--color-alpha--active,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-stateful.-tertiary.high-contrast.is-selected{color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--selected,var(--now-actionable_icon--tertiary_high-contrast_bare--color--selected,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary_high-contrast--background-color--selected_hover,var(--now-actionable--tertiary_high-contrast_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_high-contrast--border-color--selected_hover,var(--now-actionable--tertiary_high-contrast_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--selected_hover,var(--now-actionable_icon--tertiary_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.high-contrast.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary_high-contrast--background-color--selected_active,var(--now-actionable--tertiary_high-contrast_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary_high-contrast--border-color--selected_active,var(--now-actionable--tertiary_high-contrast_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))))),var(--now-button-stateful--tertiary_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--selected_active,var(--now-actionable_icon--tertiary_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-highlighted.is-selected,.now-button-stateful.-tertiary.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--tertiary_highlighted--background-color--selected,var(--now-actionable--tertiary_highlighted_bare--background-color--selected,var(--now-actionable--tertiary_bare--background-color--selected,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted--border-color--selected,var(--now-actionable--tertiary_highlighted_bare--border-color--selected,var(--now-actionable--tertiary_bare--border-color--selected,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))))),var(--now-button-stateful--tertiary_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted--color--selected,var(--now-actionable_icon--tertiary_highlighted_bare--color--selected,var(--now-actionable_icon--tertiary_bare--color--selected,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))))}.now-button-stateful.-tertiary.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-tertiary.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary_highlighted--background-color--selected_hover,var(--now-actionable--tertiary_highlighted_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted--border-color--selected_hover,var(--now-actionable--tertiary_highlighted_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted--color--selected_hover,var(--now-actionable_icon--tertiary_highlighted_bare--color--selected_hover,var(--now-actionable_icon--tertiary_bare--color--selected_hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))))}.now-button-stateful.-tertiary.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-tertiary.is-highlighted.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary_highlighted--background-color--selected_active,var(--now-actionable--tertiary_highlighted_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted--border-color--selected_active,var(--now-actionable--tertiary_highlighted_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))))),var(--now-button-stateful--tertiary_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted--color--selected_active,var(--now-actionable_icon--tertiary_highlighted_bare--color--selected_active,var(--now-actionable_icon--tertiary_bare--color--selected_active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))))}.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast,.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color--selected,var(--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected,var(--now-actionable--tertiary_highlighted_bare--background-color--selected,var(--now-actionable--tertiary_bare--background-color--selected,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color--selected,var(--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected,var(--now-actionable--tertiary_highlighted_bare--border-color--selected,var(--now-actionable--tertiary_bare--border-color--selected,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--color--selected,var(--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-actionable--tertiary_highlighted_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-actionable--tertiary_highlighted_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--color--selected_hover,var(--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected_active,var(--now-actionable--tertiary_highlighted_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-actionable--tertiary_highlighted_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--color--selected_active,var(--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-selection,.now-button-stateful.-tertiary.-selection.highlighted,.now-button-stateful.-tertiary.-selection.is-highlighted{border-radius:var(--now-button-stateful--tertiary-selection--border-radius,var(--now-actionable--tertiary-selection_bare--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button-stateful--tertiary-selection--border-width,var(--now-actionable--tertiary-selection_bare--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button-stateful--tertiary-selection--color,var(--now-actionable_icon--tertiary-selection_bare--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-button-stateful.-tertiary.-selection.highlighted:not(.is-disabled):hover,.now-button-stateful.-tertiary.-selection.is-highlighted:not(.is-disabled):hover,.now-button-stateful.-tertiary.-selection:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection--background-color--hover,var(--now-actionable--tertiary-selection_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection--border-color--hover,var(--now-actionable--tertiary-selection_bare--border-color--hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--tertiary-selection--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection--color--hover,var(--now-actionable_icon--tertiary-selection_bare--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.highlighted:not(.is-disabled):active,.now-button-stateful.-tertiary.-selection.is-highlighted:not(.is-disabled):active,.now-button-stateful.-tertiary.-selection:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary-selection--background-color--active,var(--now-actionable--tertiary-selection_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary-selection--border-color--active,var(--now-actionable--tertiary-selection_bare--border-color--active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection--color--active,var(--now-actionable_icon--tertiary-selection_bare--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.is-disabled{opacity:var(--now-button-stateful--tertiary-selection--opacity--disabled,var(--now-actionable--tertiary-selection_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-tertiary.-selection.is-selected{color:RGB(var(--now-button-stateful--tertiary-selection--color--selected,var(--now-actionable_icon--tertiary-selection_bare--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-button-stateful.-tertiary.-selection.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection--background-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection--border-color--selected_hover,var(--now-actionable--tertiary-selection_bare--border-color--selected_hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--tertiary-selection--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection--color--selected_hover,var(--now-actionable_icon--tertiary-selection_bare--color--selected_hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary-selection--background-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary-selection--border-color--selected_active,var(--now-actionable--tertiary-selection_bare--border-color--selected_active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection--color--selected_active,var(--now-actionable_icon--tertiary-selection_bare--color--selected_active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.high-contrast{color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-selection.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--background-color--hover,var(--now-actionable--tertiary-selection_high-contrast_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--border-color--hover,var(--now-actionable--tertiary-selection_high-contrast_bare--border-color--hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--hover,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--background-color--active,var(--now-actionable--tertiary-selection_high-contrast_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--border-color--active,var(--now-actionable--tertiary-selection_high-contrast_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary-selection_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--active,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-selection.high-contrast.is-selected{color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--selected,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--background-color--selected_hover,var(--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--border-color--selected_hover,var(--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--selected_hover,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.high-contrast.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--background-color--selected_active,var(--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--border-color--selected_active,var(--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary-selection_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--selected_active,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--background-color--selected,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--border-color--selected,var(--now-actionable--tertiary-selection_highlighted_bare--border-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--color--selected,var(--now-actionable_icon--tertiary-selection_bare--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--background-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--border-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_bare--border-color--selected_hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--tertiary-selection_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--color--selected_hover,var(--now-actionable_icon--tertiary-selection_bare--color--selected_hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--background-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--border-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_bare--border-color--selected_active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--color--selected_active,var(--now-actionable_icon--tertiary-selection_bare--color--selected_active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color--selected,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color--selected,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--color--selected,var(--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--color--selected_hover,var(--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--color--selected_active,var(--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.is-disabled,.now-button-stateful.is-disabled:hover{cursor:not-allowed}.now-button-stateful.is-disabled:hover,.now-button-stateful.is-disabled:hover:hover{box-shadow:none}.now-button-stateful.is-disabled:focus::-moz-focus-inner,.now-button-stateful.is-disabled:hover:focus::-moz-focus-inner{border-style:none}.now-button-stateful.is-disabled:focus:focus,.now-button-stateful.is-disabled:hover:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-stateful.is-disabled:focus:focus,.now-button-stateful.is-disabled:hover:focus:focus{outline:1px solid highlight}}.now-button-stateful.hide-padding{block-size:auto;border-width:0;inline-size:auto}@media(forced-colors:active){.now-button-stateful{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button-stateful now-icon,.now-button-stateful now-icon-animated{color:inherit!important}.now-button-stateful:focus,.now-button-stateful:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button-stateful.is-disabled,.now-button-stateful.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-button-stateful.is-selected{background-color:selecteditem!important;border-color:selecteditemtext;color:selecteditemtext!important}.now-button-stateful.is-selected.is-disabled{background-color:buttonface!important;color:graytext!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-button{align-items:center;border-end-end-radius:var(--now-button--border-end-end-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-end-start-radius:var(--now-button--border-end-start-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-start-end-radius:var(--now-button--border-start-end-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-start-start-radius:var(--now-button--border-start-start-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-style:solid;cursor:pointer;display:flex;font-family:var(--now-button--font-family,var(--now-actionable--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-style:var(--now-button--font-style,var(--now-actionable--font-style,normal));font-variant:normal;font-weight:var(--now-button--font-weight,var(--now-actionable--font-weight,bold));inline-size:inherit;justify-content:center;letter-spacing:inherit;margin:0;text-indent:0;text-shadow:none;text-transform:var(--now-button--text-transform,var(--now-actionable--text-transform,none));white-space:normal;word-spacing:inherit}.now-button:hover{box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-button:focus::-moz-focus-inner{border-style:none}.now-button:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button:focus:focus{outline:1px solid highlight}}.now-button.-sm{font-size:var(--now-actionable--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;min-block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-button.-sm .now-line-height-crop{display:block}.now-button.-sm .now-line-height-crop:after,.now-button.-sm .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button.-sm .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-button.-sm .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-button.-sm .now-line-height-crop+.now-button.-sm .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-button.-sm:not(.only-icon) .now-button-icon{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-button.-md{font-size:var(--now-actionable--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1));padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-button.-md .now-line-height-crop{display:block}.now-button.-md .now-line-height-crop:after,.now-button.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button.-md .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-button.-md .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-button.-md .now-line-height-crop+.now-button.-md .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-button.-md:not(.only-icon) .now-button-icon{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-button.-lg{font-size:var(--now-actionable--font-size--lg,var(--now-font-size--lg1,calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-block-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1));padding-inline:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-button.-lg .now-line-height-crop{display:block}.now-button.-lg .now-line-height-crop:after,.now-button.-lg .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button.-lg .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-button.-lg .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-button.-lg .now-line-height-crop+.now-button.-lg .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-button.-lg:not(.only-icon) .now-button-icon{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-button.-primary{background-color:RGB(var(--now-button--primary--background-color,var(--now-actionable--primary--background-color,var(--now-color--primary-1,30,133,109))));border-color:RGB(var(--now-button--primary--border-color,var(--now-actionable--primary--border-color,var(--now-color--primary-1,30,133,109))));border-end-end-radius:var(--now-button--primary--border-end-end-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-end-start-radius:var(--now-button--primary--border-end-start-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-start-end-radius:var(--now-button--primary--border-start-end-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-start-start-radius:var(--now-button--primary--border-start-start-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button--primary--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0)));color:RGB(var(--now-button--primary--color,var(--now-actionable_label--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary .now-button-icon{color:RGB(var(--now-button_icon--primary--color,var(--now-actionable_icon--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button--primary--background-color--hover,var(--now-actionable--primary--background-color--hover,var(--now-color--primary-2,23,100,82))));border-color:RGB(var(--now-button--primary--border-color--hover,var(--now-actionable--primary--border-color--hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-button--primary--color--hover,var(--now-actionable_label--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--primary--color--hover,var(--now-actionable_icon--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):active{background-color:RGB(var(--now-button--primary--background-color--active,var(--now-actionable--primary--background-color--active,var(--now-color--primary-3,15,67,55))));border-color:RGB(var(--now-button--primary--border-color--active,var(--now-actionable--primary--border-color--active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-button--primary--color--active,var(--now-actionable_label--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--primary--color--active,var(--now-actionable_icon--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.is-disabled{opacity:var(--now-button--primary--opacity--disabled,var(--now-actionable--primary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-primary.-positive{background-color:RGB(var(--now-button--primary-positive--background-color,var(--now-actionable--primary-positive--background-color,var(--now-color_alert--positive-3,30,105,34))));border-color:RGB(var(--now-button--primary-positive--border-color,var(--now-actionable--primary-positive--border-color,var(--now-color_alert--positive-3,30,105,34))));border-end-end-radius:var(--now-button--primary-positive--border-end-end-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-end-start-radius:var(--now-button--primary-positive--border-end-start-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-start-end-radius:var(--now-button--primary-positive--border-start-end-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-start-start-radius:var(--now-button--primary-positive--border-start-start-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button--primary-positive--border-width,var(--now-actionable--primary-positive--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0))));color:RGB(var(--now-button--primary-positive--color,var(--now-actionable_label--primary-positive--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive .now-button-icon{color:RGB(var(--now-button_icon--primary-positive--color,var(--now-actionable_icon--primary-positive--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):hover{background-color:RGB(var(--now-button--primary-positive--background-color--hover,var(--now-actionable--primary-positive--background-color--hover,var(--now-color_alert--positive-4,22,79,26))));border-color:RGB(var(--now-button--primary-positive--border-color--hover,var(--now-actionable--primary-positive--border-color--hover,var(--now-color_alert--positive-4,22,79,26))));color:RGB(var(--now-button--primary-positive--color--hover,var(--now-actionable_label--primary-positive--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--primary-positive--color--hover,var(--now-actionable_icon--primary-positive--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):active{background-color:RGB(var(--now-button--primary-positive--background-color--active,var(--now-actionable--primary-positive--background-color--active,var(--now-color_alert--positive-5,15,52,17))));border-color:RGB(var(--now-button--primary-positive--border-color--active,var(--now-actionable--primary-positive--border-color--active,var(--now-color_alert--positive-5,15,52,17))));color:RGB(var(--now-button--primary-positive--color--active,var(--now-actionable_label--primary-positive--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--primary-positive--color--active,var(--now-actionable_icon--primary-positive--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive.is-disabled{opacity:var(--now-button--primary-positive--opacity--disabled,var(--now-actionable--primary-positive--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-primary.-negative{background-color:RGB(var(--now-button--primary-negative--background-color,var(--now-actionable--primary-negative--background-color,var(--now-color_alert--critical-3,160,48,43))));border-color:RGB(var(--now-button--primary-negative--border-color,var(--now-actionable--primary-negative--border-color,var(--now-color_alert--critical-3,160,48,43))));border-end-end-radius:var(--now-button--primary-negative--border-end-end-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-end-start-radius:var(--now-button--primary-negative--border-end-start-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-start-end-radius:var(--now-button--primary-negative--border-start-end-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-start-start-radius:var(--now-button--primary-negative--border-start-start-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button--primary-negative--border-width,var(--now-actionable--primary-negative--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0))));color:RGB(var(--now-button--primary-negative--color,var(--now-actionable_label--primary-negative--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative .now-button-icon{color:RGB(var(--now-button_icon--primary-negative--color,var(--now-actionable_icon--primary-negative--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):hover{background-color:RGB(var(--now-button--primary-negative--background-color--hover,var(--now-actionable--primary-negative--background-color--hover,var(--now-color_alert--critical-4,120,36,32))));border-color:RGB(var(--now-button--primary-negative--border-color--hover,var(--now-actionable--primary-negative--border-color--hover,var(--now-color_alert--critical-4,120,36,32))));color:RGB(var(--now-button--primary-negative--color--hover,var(--now-actionable_label--primary-negative--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--primary-negative--color--hover,var(--now-actionable_icon--primary-negative--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):active{background-color:RGB(var(--now-button--primary-negative--background-color--active,var(--now-actionable--primary-negative--background-color--active,var(--now-color_alert--critical-5,80,24,22))));border-color:RGB(var(--now-button--primary-negative--border-color--active,var(--now-actionable--primary-negative--border-color--active,var(--now-color_alert--critical-5,80,24,22))));color:RGB(var(--now-button--primary-negative--color--active,var(--now-actionable_label--primary-negative--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--primary-negative--color--active,var(--now-actionable_icon--primary-negative--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative.is-disabled{opacity:var(--now-button--primary-negative--opacity--disabled,var(--now-actionable--primary-negative--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-secondary{background-color:RGB(var(--now-button--secondary--background-color,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142))),var(--now-button--secondary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--secondary--border-color,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142))));border-end-end-radius:var(--now-button--secondary--border-end-end-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-end-start-radius:var(--now-button--secondary--border-end-start-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-start-end-radius:var(--now-button--secondary--border-start-end-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-start-start-radius:var(--now-button--secondary--border-start-start-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button--secondary--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--secondary--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-button.-secondary .now-button-icon{color:RGB(var(--now-button_icon--secondary--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-button.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button--secondary--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))),var(--now-button--secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--secondary--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))));color:RGB(var(--now-button--secondary--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-button.-secondary:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--secondary--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-button.-secondary:not(.is-disabled):active{background-color:RGB(var(--now-button--secondary--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))),var(--now-button--secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--secondary--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))));color:RGB(var(--now-button--secondary--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-button.-secondary:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--secondary--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-button.-secondary.is-disabled{opacity:var(--now-button--secondary--opacity--disabled,var(--now-actionable--secondary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-secondary.-positive{background-color:RGB(var(--now-button--secondary-positive--background-color,var(--now-actionable--secondary-positive--background-color,var(--now-color_alert--positive-3,30,105,34))),var(--now-button--secondary-positive--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--secondary-positive--border-color,var(--now-actionable--secondary-positive--border-color,var(--now-color_alert--positive-3,30,105,34))));border-end-end-radius:var(--now-button--secondary-positive--border-end-end-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-end-start-radius:var(--now-button--secondary-positive--border-end-start-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-start-end-radius:var(--now-button--secondary-positive--border-start-end-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-start-start-radius:var(--now-button--secondary-positive--border-start-start-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button--secondary-positive--border-width,var(--now-actionable--secondary-positive--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button--secondary-positive--color,var(--now-actionable_label--secondary-positive--color,var(--now-color_alert--positive-3,30,105,34))))}.now-button.-secondary.-positive .now-button-icon{color:RGB(var(--now-button_icon--secondary-positive--color,var(--now-actionable_icon--secondary-positive--color,var(--now-color_alert--positive-3,30,105,34))))}.now-button.-secondary.-positive:not(.is-disabled):hover{background-color:RGB(var(--now-button--secondary-positive--background-color--hover,var(--now-actionable--secondary-positive--background-color--hover,var(--now-color_alert--positive-3,30,105,34))),var(--now-button--secondary-positive--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--secondary-positive--border-color--hover,var(--now-actionable--secondary-positive--border-color--hover,var(--now-color_alert--positive-4,22,79,26))));color:RGB(var(--now-button--secondary-positive--color--hover,var(--now-actionable_label--secondary-positive--color--hover,var(--now-color_alert--positive-4,22,79,26))))}.now-button.-secondary.-positive:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--secondary-positive--color--hover,var(--now-actionable_icon--secondary-positive--color--hover,var(--now-color_alert--positive-4,22,79,26))))}.now-button.-secondary.-positive:not(.is-disabled):active{background-color:RGB(var(--now-button--secondary-positive--background-color--active,var(--now-actionable--secondary-positive--background-color--active,var(--now-color_alert--positive-3,30,105,34))),var(--now-button--secondary-positive--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--secondary-positive--border-color--active,var(--now-actionable--secondary-positive--border-color--active,var(--now-color_alert--positive-5,15,52,17))));color:RGB(var(--now-button--secondary-positive--color--active,var(--now-actionable_label--secondary-positive--color--active,var(--now-color_alert--positive-5,15,52,17))))}.now-button.-secondary.-positive:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--secondary-positive--color--active,var(--now-actionable_icon--secondary-positive--color--active,var(--now-color_alert--positive-5,15,52,17))))}.now-button.-secondary.-positive.is-disabled{opacity:var(--now-button--secondary-positive--opacity--disabled,var(--now-actionable--secondary-positive--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-secondary.-negative{background-color:RGB(var(--now-button--secondary-negative--background-color,var(--now-actionable--secondary-negative--background-color,var(--now-color_alert--critical-0,241,206,205))),var(--now-button--secondary-negative--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--secondary-negative--border-color,var(--now-actionable--secondary-negative--border-color,var(--now-color_alert--critical-3,160,48,43))));border-end-end-radius:var(--now-button--secondary-negative--border-end-end-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-end-start-radius:var(--now-button--secondary-negative--border-end-start-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-start-end-radius:var(--now-button--secondary-negative--border-start-end-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-start-start-radius:var(--now-button--secondary-negative--border-start-start-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-button--secondary-negative--border-width,var(--now-actionable--secondary-negative--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button--secondary-negative--color,var(--now-actionable_label--secondary-negative--color,var(--now-color_alert--critical-3,160,48,43))))}.now-button.-secondary.-negative .now-button-icon{color:RGB(var(--now-button_icon--secondary-negative--color,var(--now-actionable_icon--secondary-negative--color,var(--now-color_alert--critical-3,160,48,43))))}.now-button.-secondary.-negative:not(.is-disabled):hover{background-color:RGB(var(--now-button--secondary-negative--background-color--hover,var(--now-actionable--secondary-negative--background-color--hover,var(--now-color_alert--critical-3,160,48,43))),var(--now-button--secondary-negative--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--secondary-negative--border-color--hover,var(--now-actionable--secondary-negative--border-color--hover,var(--now-color_alert--critical-4,120,36,32))));color:RGB(var(--now-button--secondary-negative--color--hover,var(--now-actionable_label--secondary-negative--color--hover,var(--now-color_alert--critical-4,120,36,32))))}.now-button.-secondary.-negative:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--secondary-negative--color--hover,var(--now-actionable_icon--secondary-negative--color--hover,var(--now-color_alert--critical-4,120,36,32))))}.now-button.-secondary.-negative:not(.is-disabled):active{background-color:RGB(var(--now-button--secondary-negative--background-color--active,var(--now-actionable--secondary-negative--background-color--active,var(--now-color_alert--critical-3,160,48,43))),var(--now-button--secondary-negative--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--secondary-negative--border-color--active,var(--now-actionable--secondary-negative--border-color--active,var(--now-color_alert--critical-5,80,24,22))));color:RGB(var(--now-button--secondary-negative--color--active,var(--now-actionable_label--secondary-negative--color--active,var(--now-color_alert--critical-5,80,24,22))))}.now-button.-secondary.-negative:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--secondary-negative--color--active,var(--now-actionable_icon--secondary-negative--color--active,var(--now-color_alert--critical-5,80,24,22))))}.now-button.-secondary.-negative.is-disabled{opacity:var(--now-button--secondary-negative--opacity--disabled,var(--now-actionable--secondary-negative--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-tertiary{background-color:RGB(var(--now-button--tertiary--background-color,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--tertiary--border-color,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))),var(--now-button--tertiary--border-color-alpha,1));border-end-end-radius:var(--now-button--tertiary--border-end-end-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-end-start-radius:var(--now-button--tertiary--border-end-start-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-start-end-radius:var(--now-button--tertiary--border-start-end-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-start-start-radius:var(--now-button--tertiary--border-start-start-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-button--tertiary--border-width,var(--now-actionable--tertiary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--tertiary--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))),var(--now-button--tertiary--color-alpha,1))}.now-button.-tertiary .now-button-icon{color:RGB(var(--now-button_icon--tertiary--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-button.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button--tertiary--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--tertiary--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--border-color-alpha--hover,1));color:RGB(var(--now-button--tertiary--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--color-alpha--hover,1))}.now-button.-tertiary:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--tertiary--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.now-button.-tertiary:not(.is-disabled):active{background-color:RGB(var(--now-button--tertiary--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button--tertiary--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))),var(--now-button--tertiary--border-color-alpha--active,1));color:RGB(var(--now-button--tertiary--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--tertiary--color-alpha--active,1))}.now-button.-tertiary:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--tertiary--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button.-tertiary.is-disabled{opacity:var(--now-button--tertiary--opacity--disabled,var(--now-actionable--tertiary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button.is-disabled:hover{box-shadow:none}.now-button.is-disabled:focus::-moz-focus-inner{border-style:none}.now-button.is-disabled:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button.is-disabled:focus:focus{outline:1px solid highlight}}.now-button.is-bare,.now-button.is-bare:active,.now-button.is-bare:hover{background-color:transparent;border-color:transparent;border-width:0}.now-button.is-bare:focus::-moz-focus-inner{border-style:none}.now-button.is-bare:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-button.is-bare:focus:focus{outline:1px solid highlight}}.now-button.is-bare.only-icon:hover{background-color:RGB(var(--now-color--neutral-9,99,114,116),.1)}.now-button.is-bare.only-icon:active{background-color:RGB(var(--now-color--neutral-9,99,114,116),.35)}.now-button.is-bare.-inherit,.now-button.is-bare.-inherit:active,.now-button.is-bare.-inherit:hover{color:inherit}.now-button.is-bare.-primary{color:RGB(var(--now-button--bare_primary--color,var(--now-actionable_label--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button.is-bare.-primary:not(.is-disabled):hover{background-color:RGBA(var(--now-button--bare_primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button--bare_primary--color--hover,var(--now-actionable_label--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button.is-bare.-primary:not(.is-disabled):active{background-color:RGBA(var(--now-button--bare_primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button--bare_primary--color--active,var(--now-actionable_label--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button.is-bare.-secondary{color:RGB(var(--now-button--bare_secondary--color,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button.is-bare.-secondary:not(.is-disabled):hover{background-color:RGBA(var(--now-button--bare_secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button--bare_secondary--color--hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button.is-bare.-secondary:not(.is-disabled):active{background-color:RGBA(var(--now-button--bare_secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button--bare_secondary--color--active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button.is-bare.-tertiary{color:RGB(var(--now-button--bare_tertiary--color,var(--now-actionable_label--tertiary_bare--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button.is-bare.-tertiary:not(.is-disabled):hover{background-color:RGBA(var(--now-button--bare_tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button--bare_tertiary--color--hover,var(--now-actionable_label--tertiary_bare--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button.is-bare.-tertiary:not(.is-disabled):active{background-color:RGBA(var(--now-button--bare_tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button--bare_tertiary--color--active,var(--now-actionable_label--tertiary_bare--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button.is-bare.is-disabled,.now-button.is-bare.is-disabled:hover{background-color:transparent;border-color:transparent}.now-button.only-icon{padding-inline:0}.now-button.only-icon.-sm{inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button.only-icon.-md{inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-button.only-icon.-lg{inline-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2)}@media(forced-colors:active){.now-button{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button now-icon,.now-button now-icon-animated{color:inherit!important}.now-button:focus,.now-button:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button.is-disabled,.now-button.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-button .now-line-height-crop{forced-color-adjust:none}.now-button ::slotted(*){forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:block}.now-card-actions{display:flex}.now-card-actions-button{inline-size:100%}.now-card-actions-button:not(:first-child){margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){:host{background-color:canvas!important;color:canvastext!important;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:block}.now-card-divider{border-block-end:none;border-block-start-color:RGB(var(--now-card-divider--color,var(--now-container-card_divider--tertiary--color,var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)))));border-block-start-style:solid;border-block-start-width:var(--now-card-divider--width,var(--now-container-card_divider--tertiary--width,var(--now-container-card_divider--width,1px)));border-inline-end:none;border-inline-start:none}.now-card-divider.-sm{margin-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-divider.-md{margin-block:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-divider.-lg{margin-block:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-divider.-none{margin-block:0}.now-card-divider.-full-width{margin-inline:calc(-1rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.now-card-divider{border-block-start-width:1px}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--now-line-height:0;display:block}.now-card-footer{align-items:center;display:flex}.now-card-footer ::slotted(*){display:inline-flex;max-inline-size:100%}.now-card-footer-p{color:RGB(var(--now-card-footer--color,var(--now-container-card_footer--tertiary--color,var(--now-display-type--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))));font-family:var(--now-card-footer--font-family,var(--now-container-card_footer--font-family,var(--now-container--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-container_footer--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-card-footer--font-style,var(--now-container-card_footer--font-style,var(--now-container--font-style,normal)));font-weight:var(--now-card-footer--font-weight,var(--now-container-card_footer--font-weight,var(--now-container--font-weight,normal)));line-height:1.3333;margin-block:0;min-inline-size:0;text-transform:var(--now-card-footer--text-transform,var(--now-container-card_footer--text-transform,var(--now-container--text-transform,none)))}.now-card-footer-p .now-line-height-crop{display:block}.now-card-footer-p .now-line-height-crop:after,.now-card-footer-p .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-card-footer-p .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-card-footer-p .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-card-footer-p .now-line-height-crop+.now-card-footer-p .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-card-footer-slot{min-inline-size:0}.now-card-footer-slot.-half{flex-basis:50%}.now-card-footer-slot.-one-quarter{flex-basis:25%}.now-card-footer-slot.-three-quarter{flex-basis:75%}.now-card-footer-slot.-start{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-footer-slot.-end{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-footer-slot+.now-card-footer-slot{text-align:end}.now-card-footer-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-card-footer-label:after{content:\\\"\\\";display:block}@media(forced-colors:active){:host{background-color:canvas!important;color:canvastext!important;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--sm{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--sm,.now-m-block-start--sm{margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--sm{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--sm{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--sm,.now-m-inline-start--sm{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--sm{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host{--now-line-height:0;display:block}.now-card-header{display:flex}.now-card-header.-block-center{align-items:center}.now-card-header-headings{flex-grow:1;min-inline-size:0}.now-card-header-heading{line-height:1.25;margin-block:0}.now-card-header-heading.-sm{font-family:var(--now-card-header_heading--title--font-family,var(--now-container-card_subheader--font-family,var(--now-display-type--title-primary--font-family,var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-size:var(--now-container_header--font-size--md,var(--now-display-type_header--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-card-header_heading--title--font-style,var(--now-container-card_subheader--font-style,var(--now-display-type--title-primary--font-style,var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-card-header_heading--title--font-weight,var(--now-container-card_subheader--font-weight,var(--now-display-type--title-primary--font-weight,var(--now-display-type--primary--font-weight,600))));text-transform:var(--now-card-header_heading--title--text-transform,var(--now-container-card_subheader--text-transform,var(--now-display-type--title-primary--text-transform,var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none)))))}.now-card-header-heading.-sm .now-line-height-crop{display:block}.now-card-header-heading.-sm .now-line-height-crop:after,.now-card-header-heading.-sm .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-card-header-heading.-sm .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-card-header-heading.-sm .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-card-header-heading.-sm .now-line-height-crop+.now-card-header-heading.-sm .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-card-header-heading.-md{font-family:var(--now-card-header_heading--header--font-family,var(--now-container-card_header--font-family,var(--now-display-type--head-primary--font-family,var(--now-display-type--header-primary--font-family,var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))))));font-size:var(--now-container_header--font-size--lg,var(--now-display-type_header--font-size--lg,var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-card-header_heading--header--font-style,var(--now-container-card_header--font-style,var(--now-display-type--head-primary--font-style,var(--now-display-type--header-primary--font-style,var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal))))));font-weight:var(--now-card-header_heading--header--font-weight,var(--now-container-card_header--font-weight,var(--now-display-type--head-primary--font-weight,var(--now-display-type--header-primary--font-weight,var(--now-display-type--primary--font-weight,600)))));text-transform:var(--now-card-header_heading--header--text-transform,var(--now-container-card_header--text-transform,var(--now-display-type--head-primary--text-transform,var(--now-display-type--header-primary--text-transform,var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none))))))}.now-card-header-heading.-md .now-line-height-crop{display:block}.now-card-header-heading.-md .now-line-height-crop:after,.now-card-header-heading.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-card-header-heading.-md .now-line-height-crop:before{margin-block-start:calc(var(--now-display-type--line-height-crop--before, -.25em)*1)}.now-card-header-heading.-md .now-line-height-crop:after{margin-block-end:calc(var(--now-display-type--line-height-crop--after, -.125em)*1)}.now-card-header-heading.-md .now-line-height-crop+.now-card-header-heading.-md .now-line-height-crop{margin-block-start:calc(var(--now-display-type--line-height-crop--after, -.125em)*1*-1)}.now-card-header-heading.-lg{font-family:var(--now-card-header_heading--header--font-family,var(--now-container-card_header--font-family,var(--now-display-type--head-primary--font-family,var(--now-display-type--header-primary--font-family,var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))))));font-size:var(--now-container_header--font-size--lg1,var(--now-display-type_header--font-size--lg1,var(--now-font-size--lg1,calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-card-header_heading--header--font-style,var(--now-container-card_header--font-style,var(--now-display-type--head-primary--font-style,var(--now-display-type--header-primary--font-style,var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal))))));font-weight:var(--now-card-header_heading--header--font-weight,var(--now-container-card_header--font-weight,var(--now-display-type--head-primary--font-weight,var(--now-display-type--header-primary--font-weight,var(--now-display-type--primary--font-weight,600)))));text-transform:var(--now-card-header_heading--header--text-transform,var(--now-container-card_header--text-transform,var(--now-display-type--head-primary--text-transform,var(--now-display-type--header-primary--text-transform,var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none))))))}.now-card-header-heading.-lg .now-line-height-crop{display:block}.now-card-header-heading.-lg .now-line-height-crop:after,.now-card-header-heading.-lg .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-card-header-heading.-lg .now-line-height-crop:before{margin-block-start:calc(var(--now-display-type--line-height-crop--before, -.25em)*1)}.now-card-header-heading.-lg .now-line-height-crop:after{margin-block-end:calc(var(--now-display-type--line-height-crop--after, -.125em)*1)}.now-card-header-heading.-lg .now-line-height-crop+.now-card-header-heading.-lg .now-line-height-crop{margin-block-start:calc(var(--now-display-type--line-height-crop--after, -.125em)*1*-1)}.now-card-header-heading.-primary{color:RGB(var(--now-card-header_heading--primary--color,var(--now-container-card_header--secondary--color,var(--now-display-type--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-card-header-heading.-secondary{color:RGB(var(--now-card-header_heading--secondary--color,var(--now-container-card_header--primary--color,var(--now-display-type--primary--color,var(--now-display-type--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))))}.now-card-header-heading.-tertiary{color:RGB(var(--now-card-header_heading--tertiary--color,var(--now-container-card_header--secondary--color,var(--now-display-type--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-card-header-heading+.now-card-header-caption{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-header-caption{color:RGB(var(--now-card-header_caption--color,var(--now-container-card_subheader--tertiary--color,var(--now-container-card--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))));font-family:var(--now-card-header_caption--font-family,var(--now-container-card--font-family,var(--now-container--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-card-header_caption--font-style,var(--now-container-card--font-style,var(--now-container--font-style,normal)));font-weight:var(--now-card-header_caption--font-weight,var(--now-container-card--font-weight,var(--now-container--font-weight,normal)));margin-block:0;text-transform:var(--now-card-header_caption--text-transform,var(--now-container-card--text-transform,var(--now-container--text-transform,none)))}.now-card-header-caption.-sm{font-size:var(--now-container_subheader--font-size--sm,var(--now-display-type_subheader--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))));line-height:1.3333}.now-card-header-caption.-sm .now-line-height-crop{display:block}.now-card-header-caption.-sm .now-line-height-crop:after,.now-card-header-caption.-sm .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-card-header-caption.-sm .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-card-header-caption.-sm .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-card-header-caption.-sm .now-line-height-crop+.now-card-header-caption.-sm .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-card-header-caption.-md{font-size:var(--now-container_subheader--font-size--md,var(--now-display-type_subheader--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy)))));line-height:1.25}.now-card-header-caption.-md .now-line-height-crop{display:block}.now-card-header-caption.-md .now-line-height-crop:after,.now-card-header-caption.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-card-header-caption.-md .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-card-header-caption.-md .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-card-header-caption.-md .now-line-height-crop+.now-card-header-caption.-md .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.show-one-line .now-card-header-caption-label,.show-one-line .now-card-header-heading-label{display:block;inline-size:-moz-fit-content;inline-size:fit-content;max-inline-size:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.show-one-line .now-card-header-caption-label:after,.show-one-line .now-card-header-heading-label:after{content:\\\"\\\";display:block}.show-two-lines .now-card-header-caption-label,.show-two-lines .now-card-header-heading-label{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;min-block-size:2.5em;overflow:hidden;overflow-wrap:break-word}.now-card-tagline{align-items:center;display:flex}.now-card-tagline.-secondary{color:RGB(var(--now-card-header_tagline--secondary--color,var(--now-container-card_tagline--primary--color,var(--now-color--secondary-1,1,119,142))))}.now-card-tagline.-tertiary{color:RGB(var(--now-card-header_tagline--tertiary--color,var(--now-container-card_tagline--tertiary--color,var(--now-container-card--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-card-tagline .now-card-tagline-p{flex-grow:1;font-family:var(--now-card-header_tagline--font-family,var(--now-container-card_tagline--font-family,var(--now-container-card--font-family,var(--now-container--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-container_header--font-size--sm,var(--now-display-type_header--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-card-header_tagline--font-style,var(--now-container-card_tagline--font-style,var(--now-container-card--font-style,var(--now-container--font-style,normal))));font-weight:var(--now-card-header_tagline--font-weight,var(--now-container-card_tagline--font-weight,var(--now-container-card--font-weight,var(--now-container--font-weight,normal))));line-height:1.3333;margin-block:0;min-inline-size:0;text-transform:var(--now-card-header_tagline--text-transform,var(--now-container-card_tagline--text-transform,var(--now-container-card--text-transform,var(--now-container--text-transform,none))))}.now-card-tagline .now-line-height-crop{display:block}.now-card-tagline .now-line-height-crop:after,.now-card-tagline .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-card-tagline .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-card-tagline .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-card-tagline .now-line-height-crop+.now-card-tagline .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-card-tagline-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-card-tagline-label:after{content:\\\"\\\";display:block}.now-card-header-actions.-sm{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-header-actions.-md{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-header-metadata ::slotted(*){margin-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-header-identifier ::slotted(now-icon){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-card-header-identifier ::slotted(img),.now-card-header-identifier ::slotted(now-avatar){margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){:host{background-color:canvas!important;color:canvastext!important;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:block}.nowCardContainer{block-size:inherit;position:relative}.nowCardContainer:hover .now-card{background-color:RGB(var(--now-card--background-color--hover,var(--now-container-card--primary_actionable--background-color--hover,var(--now-container-card--primary_actionable--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-card--background-color-alpha--hover,var(--now-container-card--background-color-alpha,1)));border-color:RGB(var(--now-card--border-color--hover,var(--now-container-card--primary_actionable--border-color--hover,var(--now-color_border--secondary,var(--now-color--neutral-5,172,180,181)))));border-width:var(--now-card--border-width--hover,var(--now-container-card--primary_actionable--border-width--hover,var(--now-container-card--actionable--border-width--hover,var(--now-container-card--actionable--border-width,var(--now-container-card--border-width,var(--now-container--border-width,1px))))));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-card{background-color:RGB(var(--now-card--background-color,var(--now-container-card--background-color,var(--now-container--color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-card--background-color-alpha,var(--now-container-card--background-color-alpha,1)));block-size:inherit;border-color:RGB(var(--now-card--border-color,var(--now-container-card--border-color,var(--now-container--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))))));border-radius:var(--now-card--border-radius,var(--now-container-card--border-radius,var(--now-container--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy)))));border-style:solid;border-width:var(--now-card--border-width,var(--now-container-card--border-width,var(--now-container--border-width,1px)));box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));overflow:hidden}.now-card.hide-shadow{box-shadow:none}.now-card.is-interactive{background-color:RGB(var(--now-card--background-color,var(--now-container-card--background-color,var(--now-container--color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-card--background-color-alpha,var(--now-container-card--background-color-alpha,1)));block-size:100%;cursor:pointer;inline-size:100%;inset-block-start:0;inset-inline-start:0;outline:none;padding:0;position:absolute}.now-card.is-interactive::-moz-focus-inner{border-style:none}.now-card.is-interactive:focus{box-shadow:0 0 0 2px RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),0 0 0 4px RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.now-card.is-interactive.is-selected{background-color:RGB(var(--now-card--background-color--selected,var(--now-container-card--primary_actionable--background-color--selected,var(--now-container-card--primary_actionable--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-card--background-color-alpha--selected,var(--now-container-card--background-color-alpha,1)));border-color:RGB(var(--now-card--border-color--selected,var(--now-container-card--primary_actionable--border-color--selected,var(--now-color--primary-1,30,133,109))));border-width:var(--now-card--border-width--selected,var(--now-container-card--primary_actionable--border-width--selected,var(--now-container-card--actionable--border-width--selected,var(--now-container-card--actionable--border-width,var(--now-container-card--border-width,var(--now-container--border-width,1px))))));box-shadow:inset 0 0 0 1px RGB(var(--now-card--border-color--selected,var(--now-container-card--primary_actionable--border-color--selected,var(--now-color--primary-1,30,133,109)))),0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-card.is-interactive.is-selected:focus{box-shadow:inset 0 0 0 1px RGB(var(--now-card--border-color--selected,var(--now-container-card--primary_actionable--border-color--selected,var(--now-color--primary-1,30,133,109)))),0 0 0 2px RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),0 0 0 4px RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-card.is-interactive.is-pressed,.now-card.is-interactive:active{background-color:RGB(var(--now-card--background-color--active,var(--now-container-card--primary_actionable--background-color--active,var(--now-container-card--primary_actionable--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-card--background-color-alpha--active,var(--now-container-card--background-color-alpha,1)));border-color:RGB(var(--now-card--border-color--active,var(--now-container-card--primary_actionable--border-color--active,var(--now-color--primary-3,15,67,55))));border-width:var(--now-card--border-width--active,var(--now-container-card--primary_actionable--border-width--active,var(--now-container-card--actionable--border-width--active,var(--now-container-card--actionable--border-width,var(--now-container-card--border-width,var(--now-container--border-width,1px))))));box-shadow:none}.now-card.has-sidebar:after{content:\\\"\\\";inline-size:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));inset-block:0;inset-inline-start:0;position:absolute}.now-card.has-sidebar.-critical.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_critical--background-color,var(--now-container-card_status--primary_critical--background-color,var(--now-color_alert--critical-2,200,60,54))))}.now-card.has-sidebar.-critical.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_critical--background-color,var(--now-container-card_status--secondary_critical--background-color,var(--now-color_alert--critical-1,221,133,129))))}.now-card.has-sidebar.-critical.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_critical--background-color,var(--now-container-card_status--tertiary_critical--background-color,var(--now-color_alert--critical-0,241,206,205))))}.now-card.has-sidebar.-high.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_high--background-color,var(--now-container-card_status--primary_high--background-color,var(--now-color_alert--high-2,221,145,34))))}.now-card.has-sidebar.-high.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_high--background-color,var(--now-container-card_status--secondary_high--background-color,var(--now-color_alert--high-1,234,186,117))))}.now-card.has-sidebar.-high.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_high--background-color,var(--now-container-card_status--tertiary_high--background-color,var(--now-color_alert--high-0,247,228,200))))}.now-card.has-sidebar.-warning.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_warning--background-color,var(--now-container-card_status--primary_warning--background-color,var(--now-color_alert--warning-2,210,195,0))))}.now-card.has-sidebar.-warning.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_warning--background-color,var(--now-container-card_status--secondary_warning--background-color,var(--now-color_alert--warning-1,227,218,96))))}.now-card.has-sidebar.-warning.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_warning--background-color,var(--now-container-card_status--tertiary_warning--background-color,var(--now-color_alert--warning-0,244,240,191))))}.now-card.has-sidebar.-moderate.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_moderate--background-color,var(--now-container-card_status--primary_moderate--background-color,var(--now-color_alert--moderate-2,84,86,207))))}.now-card.has-sidebar.-moderate.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_moderate--background-color,var(--now-container-card_status--secondary_moderate--background-color,var(--now-color_alert--moderate-1,148,149,225))))}.now-card.has-sidebar.-moderate.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_moderate--background-color,var(--now-container-card_status--tertiary_moderate--background-color,var(--now-color_alert--moderate-0,212,213,243))))}.now-card.has-sidebar.-positive.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_positive--background-color,var(--now-container-card_status--primary_positive--background-color,var(--now-color_alert--positive-2,37,131,43))))}.now-card.has-sidebar.-positive.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_positive--background-color,var(--now-container-card_status--secondary_positive--background-color,var(--now-color_alert--positive-1,119,178,123))))}.now-card.has-sidebar.-positive.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_positive--background-color,var(--now-container-card_status--tertiary_positive--background-color,var(--now-color_alert--positive-0,201,224,202))))}.now-card.has-sidebar.-info.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_info--background-color,var(--now-container-card_status--primary_info--background-color,var(--now-color_alert--info-2,14,120,196))))}.now-card.has-sidebar.-info.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_info--background-color,var(--now-container-card_status--secondary_info--background-color,var(--now-color_alert--info-1,104,171,218))))}.now-card.has-sidebar.-info.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_info--background-color,var(--now-container-card_status--tertiary_info--background-color,var(--now-color_alert--info-0,195,221,240))))}.now-card.has-sidebar.-low.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_low--background-color,var(--now-container-card_status--primary_low--background-color,var(--now-color_alert--low-2,102,102,102))))}.now-card.has-sidebar.-low.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_low--background-color,var(--now-container-card_status--secondary_low--background-color,var(--now-color_alert--low-1,159,159,159))))}.now-card.has-sidebar.-low.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_low--background-color,var(--now-container-card_status--tertiary_low--background-color,var(--now-color_alert--low-0,217,217,217))))}.now-card.has-sidebar.-magenta.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_magenta--background-color,var(--now-container-card_status--primary_magenta--background-color,var(--now-color_grouped--magenta-4,142,85,135))))}.now-card.has-sidebar.-magenta.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_magenta--background-color,var(--now-container-card_status--secondary_magenta--background-color,var(--now-color_grouped--magenta-1,221,168,215))))}.now-card.has-sidebar.-magenta.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_magenta--background-color,var(--now-container-card_status--tertiary_magenta--background-color,var(--now-color_grouped--magenta-0,239,215,236))))}.now-card.has-sidebar.-pink.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_pink--background-color,var(--now-container-card_status--primary_pink--background-color,var(--now-color_grouped--pink-4,142,85,100))))}.now-card.has-sidebar.-pink.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_pink--background-color,var(--now-container-card_status--secondary_pink--background-color,var(--now-color_grouped--pink-1,221,168,182))))}.now-card.has-sidebar.-pink.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_pink--background-color,var(--now-container-card_status--tertiary_pink--background-color,var(--now-color_grouped--pink-0,239,215,221))))}.now-card.has-sidebar.-orange.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_orange--background-color,var(--now-container-card_status--primary_orange--background-color,var(--now-color_grouped--orange-4,151,90,74))))}.now-card.has-sidebar.-orange.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_orange--background-color,var(--now-container-card_status--secondary_orange--background-color,var(--now-color_grouped--orange-1,229,173,158))))}.now-card.has-sidebar.-orange.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_orange--background-color,var(--now-container-card_status--tertiary_orange--background-color,var(--now-color_grouped--orange-0,243,217,210))))}.now-card.has-sidebar.-yellow.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_yellow--background-color,var(--now-container-card_status--primary_yellow--background-color,var(--now-color_grouped--yellow-4,168,145,71))))}.now-card.has-sidebar.-yellow.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_yellow--background-color,var(--now-container-card_status--secondary_yellow--background-color,var(--now-color_grouped--yellow-1,245,224,155))))}.now-card.has-sidebar.-yellow.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_yellow--background-color,var(--now-container-card_status--tertiary_yellow--background-color,var(--now-color_grouped--yellow-0,251,241,209))))}.now-card.has-sidebar.-brown.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_brown--background-color,var(--now-container-card_status--primary_brown--background-color,var(--now-color_grouped--brown-4,109,97,83))))}.now-card.has-sidebar.-brown.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_brown--background-color,var(--now-container-card_status--secondary_brown--background-color,var(--now-color_grouped--brown-1,191,179,167))))}.now-card.has-sidebar.-brown.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_brown--background-color,var(--now-container-card_status--tertiary_brown--background-color,var(--now-color_grouped--brown-0,225,220,214))))}.now-card.has-sidebar.-green.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_green--background-color,var(--now-container-card_status--primary_green--background-color,var(--now-color_grouped--green-4,103,119,88))))}.now-card.has-sidebar.-green.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_green--background-color,var(--now-container-card_status--secondary_green--background-color,var(--now-color_grouped--green-1,185,200,171))))}.now-card.has-sidebar.-green.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_green--background-color,var(--now-container-card_status--tertiary_green--background-color,var(--now-color_grouped--green-0,223,230,216))))}.now-card.has-sidebar.-green-yellow.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_green-yellow--background-color,var(--now-container-card_status--primary_green-yellow--background-color,var(--now-color_grouped--green-yellow-4,108,121,66))))}.now-card.has-sidebar.-green-yellow.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_green-yellow--background-color,var(--now-container-card_status--secondary_green-yellow--background-color,var(--now-color_grouped--green-yellow-1,189,202,150))))}.now-card.has-sidebar.-green-yellow.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_green-yellow--background-color,var(--now-container-card_status--tertiary_green-yellow--background-color,var(--now-color_grouped--green-yellow-0,225,230,207))))}.now-card.has-sidebar.-blue.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_blue--background-color,var(--now-container-card_status--primary_blue--background-color,var(--now-color_grouped--blue-4,84,123,143))))}.now-card.has-sidebar.-blue.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_blue--background-color,var(--now-container-card_status--secondary_blue--background-color,var(--now-color_grouped--blue-1,167,204,222))))}.now-card.has-sidebar.-blue.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_blue--background-color,var(--now-container-card_status--tertiary_blue--background-color,var(--now-color_grouped--blue-0,215,231,240))))}.now-card.has-sidebar.-gray.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_gray--background-color,var(--now-container-card_status--primary_gray--background-color,var(--now-color_grouped--gray-4,97,102,105))))}.now-card.has-sidebar.-gray.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_gray--background-color,var(--now-container-card_status--secondary_gray--background-color,var(--now-color_grouped--gray-1,180,184,187))))}.now-card.has-sidebar.-gray.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_gray--background-color,var(--now-container-card_status--tertiary_gray--background-color,var(--now-color_grouped--gray-0,220,222,224))))}.now-card.has-sidebar.-teal.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_teal--background-color,var(--now-container-card_status--primary_teal--background-color,var(--now-color_grouped--teal-4,73,122,114))))}.now-card.has-sidebar.-teal.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_teal--background-color,var(--now-container-card_status--secondary_teal--background-color,var(--now-color_grouped--teal-1,157,202,195))))}.now-card.has-sidebar.-teal.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_teal--background-color,var(--now-container-card_status--tertiary_teal--background-color,var(--now-color_grouped--teal-0,210,231,227))))}.now-card.has-sidebar.-purple.-primary:after{background-color:RGB(var(--now-card_sidebar--primary_purple--background-color,var(--now-container-card_status--primary_purple--background-color,var(--now-color_grouped--purple-4,127,109,146))))}.now-card.has-sidebar.-purple.-secondary:after{background-color:RGB(var(--now-card_sidebar--secondary_purple--background-color,var(--now-container-card_status--secondary_purple--background-color,var(--now-color_grouped--purple-1,207,190,225))))}.now-card.has-sidebar.-purple.-tertiary:after{background-color:RGB(var(--now-card_sidebar--tertiary_purple--background-color,var(--now-container-card_status--tertiary_purple--background-color,var(--now-color_grouped--purple-0,233,225,241))))}.now-card.is-selected.has-sidebar:after{block-size:calc(100% - 2px);inset-block:1px;inset-inline-start:1px}.now-card-slot{font-family:var(--now-card--font-family,var(--now-container-card--font-family,var(--now-container--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-card--font-style,var(--now-container-card--font-style,var(--now-container--font-style,normal)));font-variant:normal;font-weight:var(--now-card--font-weight,var(--now-container-card--font-weight,var(--now-container--font-weight,normal)));letter-spacing:inherit;position:relative;text-indent:0;text-shadow:none;text-transform:var(--now-card--text-transform,var(--now-container-card--text-transform,var(--now-container--text-transform,none)));white-space:normal;word-spacing:inherit}.now-card-slot.is-interactive{block-size:inherit;cursor:pointer}.now-card-slot.-sm{padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-card--scale-size-block, 1)) calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-card--scale-size-inline, 1))}.now-card-slot.-md{padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-card--scale-size-block, 1)) calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-card--scale-size-inline, 1))}.now-card-slot.-lg{padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-card--scale-size, 1))}@media(forced-colors:active){.now-card{border-width:1px}.now-card.is-interactive{background-color:buttonface;border-color:buttonborder}.now-card.is-interactive:focus,.nowCardContainer:hover .now-card.is-interactive{background-color:highlighttext;border-color:highlight}.now-card.is-interactive:focus::-moz-focus-inner{border-style:none}.now-card.is-interactive:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}}@media(forced-colors:active)and (forced-colors:active){.now-card.is-interactive:focus:focus{outline:1px solid highlight}}@media(forced-colors:active){.now-card.is-interactive.is-selected{background-color:selecteditem!important;border-color:selecteditemtext!important}.now-card-slot.is-interactive{padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:block}.now-carousel-text{overflow:hidden}.now-carousel-text:focus-within{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))}.now-carousel-text-labels{display:grid;grid-template-areas:\\\"stack\\\"}.now-carousel-text-label{grid-area:stack;-ms-grid-column:1;-ms-grid-row:1;max-inline-size:100%;min-inline-size:0}.now-carousel-text-label.-previous{transform:translateY(-100%)}.now-carousel-text-label-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-carousel-text-label-text:after{content:\\\"\\\";display:block}.now-carousel-text-label-text:focus{outline:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--now-line-height:0;display:inline-block}.now-checkbox{cursor:default;display:flex;font-family:var(--now-checkbox--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-style:var(--now-checkbox--font-style,var(--now-form-control--font-style,normal));font-variant:normal;font-weight:var(--now-checkbox--font-weight,var(--now-form-control--font-weight,normal));letter-spacing:inherit;outline:none;position:relative;text-indent:0;text-shadow:none;text-transform:var(--now-checkbox--text-transform,var(--now-form-control--text-transform,none));white-space:normal;word-spacing:inherit}.now-checkbox.-sm{min-block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-checkbox.-md{min-block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size-block, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-checkbox--scale-size-block, 1))}.now-checkbox.is-disabled{cursor:not-allowed}.now-checkbox-label-parent{display:flex}.-start.is-full-width .now-checkbox-label-parent{flex:2;justify-content:flex-end}.-start.-sm .now-checkbox-label-parent{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-start.-md .now-checkbox-label-parent{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-end.-sm .now-checkbox-label-parent{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-end.-md .now-checkbox-label-parent{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-checkbox--scale-size-inline, 1))}.-end.is-full-width .now-checkbox-label-parent{flex:3}.now-checkbox-input-parent{text-align:start}.is-full-width.-start .now-checkbox-input-parent{flex:3}.is-full-width.-end .now-checkbox-input-parent{display:flex;flex:2;justify-content:flex-end}.now-checkbox-input{margin:0;opacity:0;position:absolute;z-index:1}.-sm .now-checkbox-input{block-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-checkbox-input{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2)}.is-disabled .now-checkbox-input,.is-readonly .now-checkbox-input{cursor:not-allowed}.now-checkbox-visual-input{background-clip:padding-box;background-color:RGB(var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));border-color:RGB(var(--now-checkbox--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));border-radius:var(--now-checkbox--border-radius,var(--now-form-control--border-radius,0));border-style:solid;border-width:var(--now-checkbox--border-width,var(--now-form-control--border-width,1px));color:RGB(var(--now-checkbox_icon--color,var(--now-color--neutral-18,22,27,28)));flex-shrink:0;position:relative}.now-checkbox:not(.is-disabled,.is-readonly):hover .now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--hover,var(--now-color--secondary-0,217,235,238)));border-color:RGB(var(--now-checkbox--border-color--hover,var(--now-color--secondary-1,1,119,142)));color:RGB(var(--now-checkbox_icon--color--hover,var(--now-color--secondary-1,1,119,142)))}.now-checkbox.is-checked:not(.is-disabled,.is-readonly):hover .now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--checked_hover,var(--now-color--secondary-0,217,235,238)),var(--now-checkbox--background-color-alpha--checked_hover,1));border-color:RGB(var(--now-checkbox--border-color--checked_hover,var(--now-checkbox--border-color--hover,var(--now-color--secondary-1,1,119,142))))}.now-checkbox.is-invalid:not(.is-disabled,.is-readonly):hover .now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--invalid_hover,var(--now-checkbox--background-color--invalid,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-checkbox--border-color--invalid_hover,var(--now-checkbox--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))));color:RGB(var(--now-checkbox_icon--color--invalid_hover,var(--now-checkbox_icon--color--invalid,var(--now-color_alert--critical-5,80,24,22))))}.now-checkbox.is-invalid.is-checked:not(.is-disabled,.is-readonly):hover .now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--checked_invalid_hover,var(--now-checkbox--background-color--invalid,var(--now-color_alert--critical-0,241,206,205))),var(--now-checkbox--background-color-alpha--checked_invalid_hover,0));border-color:RGB(var(--now-checkbox--border-color--checked_invalid_hover,var(--now-checkbox--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}:focus+.now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--focus,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));border-color:RGB(var(--now-checkbox--border-color--focus,var(--now-color--secondary-1,1,119,142)));border-width:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy)/2);color:RGB(var(--now-checkbox_icon--color--focus,var(--now-color--secondary-1,1,119,142)))}.is-checked :focus+.now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--checked_focus,var(--now-checkbox--background-color--checked,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));border-color:RGB(var(--now-checkbox--border-color--checked_focus,var(--now-color--secondary-1,1,119,142)))}.is-invalid:not(.is-disabled,.is-readonly) :focus+.now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--invalid_focus,var(--now-checkbox--background-color--invalid,var(--now-color_alert--critical-0,241,206,205))));color:RGB(var(--now-checkbox_icon--color--invalid_focus,var(--now-checkbox_icon--color--invalid,var(--now-color_alert--critical-5,80,24,22))))}.is-checked.is-invalid:not(.is-disabled,.is-readonly) :focus+.now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--checked_invalid_focus,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));border-color:RGB(var(--now-checkbox--border-color--checked_invalid_focus,var(--now-checkbox--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-sm .now-checkbox-visual-input{block-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-checkbox-visual-input{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2)}.-sm :focus+.now-checkbox-visual-input{box-shadow:inset 0 0 0 1px RGB(var(--now-checkbox_focus-ring--border-color--focus,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),0 0 0 var(--now-checkbox_focus-ring--width,0) RGB(var(--now-checkbox--border-color--focus,var(--now-color--secondary-1,1,119,142)),var(--now-opacity--least,.1));clip-path:circle(calc(.61869rem*var(--classicsponlydonotuse--rem-multipy)) at calc(.375rem*var(--classicsponlydonotuse--rem-multipy)) calc(.375rem*var(--classicsponlydonotuse--rem-multipy)))}.-md :focus+.now-checkbox-visual-input{box-shadow:inset 0 0 0 calc(.5px + var(--now-checkbox--scale-size, 1)*1px/2) RGB(var(--now-checkbox_focus-ring--border-color--focus,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),0 0 0 calc(var(--now-checkbox_focus-ring--width, 0px)/2 + var(--now-checkbox--scale-size, 1)*var(--now-checkbox_focus-ring--width, 0px)/2) RGB(var(--now-checkbox--border-color--focus,var(--now-color--secondary-1,1,119,142)),var(--now-opacity--least,.1));clip-path:circle(calc(.7955rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*.7955rem*var(--classicsponlydonotuse--rem-multipy)/2) at calc(.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)/2) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)/2))}.-md.is-invalid :focus+.now-checkbox-visual-input{box-shadow:inset 0 0 0 calc(.5px + var(--now-checkbox--scale-size, 1)*1px/2) RGB(var(--now-checkbox_focus-ring--border-color--invalid_focus,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),0 0 0 2px RGB(var(--now-color--neutral-0,255,255,255)),0 0 0 calc(var(--now-checkbox_focus-ring--width, 0px)/2 + var(--now-checkbox--scale-size, 1)*var(--now-checkbox_focus-ring--width, 0px)/2 + 2px) RGB(var(--now-checkbox--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)),var(--now-opacity--least,.1));clip-path:circle(calc(.92588rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*.92588rem*var(--classicsponlydonotuse--rem-multipy)/2) at calc(.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)/2) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-checkbox--scale-size, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)/2))}.is-checked .now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--checked,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-checkbox--background-color-alpha--checked,1));border-color:RGB(var(--now-checkbox--border-color--checked,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))}.is-invalid .now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--invalid,var(--now-color_alert--critical-0,241,206,205)),var(--now-checkbox--background-color-alpha--invalid,0))}.is-invalid .now-checkbox-visual-input,.is-invalid.is-readonly .now-checkbox-visual-input{border-color:RGB(var(--now-checkbox--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)));border-width:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-sm.is-invalid :focus+.now-checkbox-visual-input{box-shadow:inset 0 0 0 1px RGB(var(--now-checkbox_focus-ring--border-color--invalid_focus,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),0 0 0 1px RGB(var(--now-color--neutral-0,255,255,255)),0 0 0 calc(var(--now-checkbox_focus-ring--width, 0px) + 1px) RGB(var(--now-checkbox--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)),var(--now-opacity--least,.1));clip-path:circle(calc(.61869rem*var(--classicsponlydonotuse--rem-multipy)) at calc(.375rem*var(--classicsponlydonotuse--rem-multipy)) calc(.375rem*var(--classicsponlydonotuse--rem-multipy)))}.now-checkbox:not(.is-disabled,.is-readonly) .now-checkbox-input:active+.now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--active,var(--now-color--secondary-0,217,235,238)));color:RGB(var(--now-checkbox_icon--color--active,var(--now-checkbox_icon--color,var(--now-color--neutral-18,22,27,28))))}.is-checked:not(.is-disabled,.is-readonly) .now-checkbox-input:active+.now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--checked_active,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-checkbox--background-color-alpha--checked_active,0));border-color:RGB(var(--now-checkbox--border-color--checked_active,var(--now-color--secondary-1,1,119,142)))}.is-invalid:not(.is-disabled,.is-readonly) .now-checkbox-input:active+.now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--invalid_active,var(--now-checkbox--background-color--invalid,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-checkbox--border-color--invalid_active,var(--now-checkbox--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))));color:RGB(var(--now-checkbox_icon--color--invalid_active,var(--now-checkbox_icon--color--invalid,var(--now-color_alert--critical-5,80,24,22))))}.is-invalid.is-checked:not(.is-disabled,.is-readonly) .now-checkbox-input:active+.now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--checked_invalid_active,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-checkbox--background-color-alpha--checked_invalid_active,0));border-color:RGB(var(--now-checkbox--border-color--checked_invalid_active,var(--now-checkbox--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.is-invalid.is-checked .now-checkbox-visual-input,.is-invalid.is-checked.is-readonly .now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--checked_invalid,var(--now-checkbox--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-checkbox--background-color-alpha--checked_invalid,1));border-color:RGB(var(--now-checkbox--border-color--checked_invalid,var(--now-checkbox--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.is-readonly .now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--readonly,var(--now-color--neutral-3,209,214,214)));border-color:RGB(var(--now-checkbox--border-color--readonly,var(--now-checkbox--background-color--readonly,var(--now-color--neutral-3,209,214,214))))}.is-readonly:not(.is-invalid) .now-checkbox-visual-input{color:RGB(var(--now-checkbox_icon--color--readonly,var(--now-checkbox_icon--color,var(--now-color--neutral-18,22,27,28))))}.is-readonly.is-checked .now-checkbox-visual-input{background-color:RGB(var(--now-checkbox--background-color--checked_readonly,var(--now-checkbox--background-color--readonly,var(--now-color--neutral-3,209,214,214))));border-color:RGB(var(--now-checkbox--border-color--checked_readonly,var(--now-checkbox--border-color--readonly,var(--now-checkbox--background-color--readonly,var(--now-color--neutral-3,209,214,214)))))}.is-disabled .now-checkbox-visual-input{opacity:var(--now-checkbox--opacity--disabled,var(--now-opacity--less,.25))}.now-checkbox-icon{color:inherit;line-height:0!important;position:absolute}.-sm .now-checkbox-icon{inset-block-start:-1px;inset-inline-start:-1px;transform:scale(.75)}.-sm.is-invalid .now-checkbox-icon{inset-block-start:calc(-.125rem*var(--classicsponlydonotuse--rem-multipy));inset-inline-start:calc(-.125rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-checkbox-icon{--now-icon--scale-size:var(--now-checkbox--scale-size,1);margin:calc(1px*var(--now-checkbox--scale-size, 1))}.-md.is-invalid .now-checkbox-icon{margin:0}.now-checkbox-input:active+.now-checkbox-icon,.now-checkbox-input:focus+.now-checkbox-icon,.now-checkbox-input:hover+.now-checkbox-icon{color:RGB(var(--now-checkbox_icon--color--hover,var(--now-color--secondary-1,1,119,142)))}.-sm .now-checkbox-input:focus+.now-checkbox-visual-input .now-checkbox-icon{inset-block-start:calc(-.125rem*var(--classicsponlydonotuse--rem-multipy));inset-inline-start:calc(-.125rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-checkbox-input:focus+.now-checkbox-visual-input .now-checkbox-icon{margin:0}.is-invalid:not(.is-disabled,.is-readonly) .now-checkbox-input:focus+.now-checkbox-icon,.is-invalid:not(.is-disabled,.is-readonly) .now-checkbox-input:hover+.now-checkbox-icon{color:RGB(var(--now-checkbox_icon--color--invalid,var(--now-color_alert--critical-5,80,24,22)))}.now-checkbox-label{color:RGB(var(--now-checkbox_label--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));cursor:inherit}.-sm .now-checkbox-label{font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-checkbox-label .now-line-height-crop{display:block}.-sm .now-checkbox-label .now-line-height-crop:after,.-sm .now-checkbox-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-sm .now-checkbox-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.-sm .now-checkbox-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.-sm .now-checkbox-label .now-line-height-crop+.-sm .now-checkbox-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-md .now-checkbox-label{font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)*(var(--now-checkbox--scale-size-block, 1)*2 - 1))}.-md .now-checkbox-label .now-line-height-crop{display:block}.-md .now-checkbox-label .now-line-height-crop:after,.-md .now-checkbox-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-md .now-checkbox-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-md .now-checkbox-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-md .now-checkbox-label .now-line-height-crop+.-md .now-checkbox-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.is-disabled .now-checkbox-label{cursor:not-allowed;opacity:var(--now-checkbox--opacity--disabled,var(--now-opacity--less,.25))}.-start .now-checkbox-label-inline-slot ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-end .now-checkbox-label-inline-slot ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-checkbox-label-start-slot{align-items:start;display:flex}.-start .now-checkbox-label-start-slot ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-end .now-checkbox-label-start-slot ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-checkbox-required-indicator{color:RGB(var(--now-checkbox_required-indicator--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.-sm .now-checkbox-required-indicator{transform:scale(.75)}.-start.-sm .now-checkbox-required-indicator{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-end.-sm .now-checkbox-required-indicator{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-checkbox-required-indicator{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)*(var(--now-checkbox--scale-size-block, 1)*2 - 1))}.-start.-md .now-checkbox-required-indicator{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-end.-md .now-checkbox-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.is-disabled .now-checkbox-required-indicator{opacity:var(--now-opacity--less,.25)}.is-invalid .now-checkbox-required-indicator{color:RGB(var(--now-checkbox_required-indicator--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}@media(forced-colors:active){.now-checkbox-visual-input{background-color:buttonface!important;border-color:buttonborder!important}:focus+.now-checkbox-visual-input{border-width:1px;outline:1px solid highlight}.is-checked .now-checkbox-visual-input{background-color:selecteditem!important;color:selecteditemtext!important}.is-disabled .now-checkbox-visual-input{opacity:1}.is-disabled .now-checkbox-visual-input,.is-readonly .now-checkbox-visual-input{border-color:graytext!important}.is-checked.is-disabled .now-checkbox-visual-input,.is-checked.is-readonly .now-checkbox-visual-input{background-color:graytext!important}.is-checked.is-disabled .now-checkbox-visual-input{color:highlighttext!important}.is-readonly .now-checkbox-icon{color:highlighttext}.now-checkbox-label{color:canvastext}.now-checkbox-label .now-line-height-crop{forced-color-adjust:none}.is-disabled .now-checkbox-label{color:graytext;opacity:1}.is-disabled .now-checkbox-required-indicator{opacity:1}.is-disabled .now-checkbox-required-indicator,.is-readonly .now-checkbox-required-indicator{color:graytext}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".now-collapse{block-size:0;overflow:hidden;visibility:hidden}.is-expanded{block-size:auto;overflow:visible;visibility:visible}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-line-height-crop{display:block}.now-line-height-crop:after,.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-line-height-crop+.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-line-height-crop--sm{display:block}.now-line-height-crop--sm:after,.now-line-height-crop--sm:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop--sm:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-line-height-crop--sm:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-line-height-crop--sm+.now-line-height-crop--sm{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-heading--lg,.now-heading--md,.now-heading--xl{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-weight:600}.now-heading--md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-heading--lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-heading--xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--normal{font-weight:400}.now-text--semibold{font-weight:600}.now-text--bold{font-weight:700}.now-text--sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--primary{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.now-text--secondary{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))}.now-text--tertiary{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}:host{width:100%}.now-data-set-title{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-data-set-root-element{margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.now-data-set-header{padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-data-set-toolbar{display:flex;justify-content:flex-end}now-template-message-empty-state{display:flex;justify-content:center;padding-bottom:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}sn-declarative-mediator{width:100%}.now-data-set-pagination-root{display:flex;justify-content:center;margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-top:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-line-height-crop{display:block}.now-line-height-crop:after,.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-line-height-crop+.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-line-height-crop--sm{display:block}.now-line-height-crop--sm:after,.now-line-height-crop--sm:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop--sm:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-line-height-crop--sm:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-line-height-crop--sm+.now-line-height-crop--sm{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-heading--lg,.now-heading--md,.now-heading--xl{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-weight:600}.now-heading--md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-heading--lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-heading--xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--normal{font-weight:400}.now-text--semibold{font-weight:600}.now-text--bold{font-weight:700}.now-text--sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--primary{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.now-text--secondary{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))}.now-text--tertiary{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.data-set-toolbar,.now-align.-block-end{align-items:flex-end}.data-set-toolbar{display:flex;margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.data-set-toolbar .data-set-item{display:flex;flex-direction:column}:host(:not([dir=rtl])) .data-set-toolbar .data-set-item,:root:not([dir=rtl]) .data-set-toolbar .data-set-item{margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .data-set-toolbar .data-set-item,:root[dir=rtl] .data-set-toolbar .data-set-item{margin-right:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.data-set-toolbar .data-set-item now-label-value-inline{margin-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.data-set-toolbar .data-set-item now-dropdown{max-width:calc(9.375rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-line-height-crop{display:block}.now-line-height-crop:after,.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-line-height-crop+.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-line-height-crop--sm{display:block}.now-line-height-crop--sm:after,.now-line-height-crop--sm:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop--sm:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-line-height-crop--sm:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-line-height-crop--sm+.now-line-height-crop--sm{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-heading--lg,.now-heading--md,.now-heading--xl{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-weight:600}.now-heading--md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-heading--lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-heading--xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--normal{font-weight:400}.now-text--semibold{font-weight:600}.now-text--bold{font-weight:700}.now-text--sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--primary{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.now-text--secondary{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))}.now-text--tertiary{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.data-set-grid{grid-gap:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:grid;margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.data-set-grid-item-sm{height:178px}.data-set-grid-item-md{height:218px}.data-set-grid-item-lg{height:260px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-line-height-crop{display:block}.now-line-height-crop:after,.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-line-height-crop+.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-line-height-crop--sm{display:block}.now-line-height-crop--sm:after,.now-line-height-crop--sm:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop--sm:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-line-height-crop--sm:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-line-height-crop--sm+.now-line-height-crop--sm{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-heading--lg,.now-heading--md,.now-heading--xl{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-weight:600}.now-heading--md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-heading--lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-heading--xl{font-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--normal{font-weight:400}.now-text--semibold{font-weight:600}.now-text--bold{font-weight:700}.now-text--sm{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--md{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--lg{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-text--primary{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.now-text--secondary{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))}.now-text--tertiary{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.data-set-list{--mv9-JrZp--kvZptZ-9Apz8:0;border:var(--now-container--border-width,1px) solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)));border-radius:var(--now-container--border-radius,0);display:grid;list-style:none;margin-bottom:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-top:0;padding-inline-start:0}.data-set-list .data-set-list-item:not(:last-child){border-bottom:var(--now-container--border-width,1px) solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.now-m-block--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host{display:block}.now-date-time-calendar{background-color:RGB(var(--now-date-time--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));font-family:var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-size:var(--now-menu_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-date-time--font-style,var(--now-menu--font-style,normal));font-variant:normal;font-weight:var(--now-date-time--font-weight,bold);letter-spacing:inherit;line-height:1.3333;max-inline-size:calc(17.5rem*var(--classicsponlydonotuse--rem-multipy));text-indent:0;text-shadow:none;text-transform:var(--now-date-time--text-transform,var(--now-menu--text-transform,none));white-space:normal;word-spacing:inherit}.now-date-time-calendar.is-week{max-inline-size:calc(22rem*var(--classicsponlydonotuse--rem-multipy))}.now-date-time-calendar-header{background-color:RGB(var(--now-date-time_header--background-color,var(--now-date-time--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));display:flex;justify-content:center;padding-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1));padding-block-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1));padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-calendar-header .now-date-time-calendar-pagination-button.-previous{margin-inline-end:auto}.now-date-time-calendar-header .now-date-time-calendar-pagination-button.-next{margin-inline-start:auto}.now-date-time-calendar-header .now-date-time-calendar-control-button{--now-button--bare--font-family:var(--now-date-time_header--font-family,var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));--now-button--bare--font-style:var(--now-date-time_header--font-style,var(--now-date-time--font-style,var(--now-menu--font-style,normal)));--now-button--bare--font-weight:var(--now-date-time_header--font-weight,var(--now-date-time--font-weight,bold));--now-button--bare--text-transform:var(--now-date-time_header--text-transform,var(--now-date-time--text-transform,var(--now-menu--text-transform,none)))}.now-date-time-calendar-header .now-date-time-calendar-control-button.-start{margin-inline-start:auto}.now-date-time-calendar-header .now-date-time-calendar-control-button.-end{margin-inline-end:auto;margin-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-calendar-grid-container{padding-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1));padding-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1));padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-calendar-grid-container.-year{max-block-size:calc(176px*var(--now-date-time--scale-size-block, 1));overflow-y:auto}.now-date-time-calendar-grid{border-collapse:collapse;border-style:none;border-width:0;inline-size:100%;max-inline-size:100%;table-layout:fixed}.now-date-time-calendar-grid-heading{background-color:RGB(var(--now-date-time_cell-heading--background-color,var(--now-date-time_cell--background-color,var(--now-date-time--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-date-time_cell-heading--background-color-alpha,var(--now-date-time_cell--background-color-alpha,0)));block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-date-time_cell--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);color:RGB(var(--now-date-time_cell-heading--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))));font-family:var(--now-date-time_cell-heading--font-family,var(--now-date-time_cell--font-family,var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-menu_header--font-size--sm,var(--now-display-type_header--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-date-time_cell-heading--font-style,var(--now-date-time_cell--font-style,var(--now-date-time--font-style,var(--now-menu--font-style,normal))));font-weight:var(--now-date-time_cell-heading--font-weight,normal);inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-date-time_cell--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);line-height:1.3333;padding-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time_cell--scale-size, 1));padding-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time_cell--scale-size, 1));text-transform:var(--now-date-time_cell-heading--text-transform,var(--now-date-time_cell--text-transform,var(--now-date-time--text-transform,var(--now-menu--text-transform,none))))}.-week-year .now-date-time-calendar-grid-heading:first-child{inline-size:calc(4rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-date-time_cell--scale-size, 1)*4rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-date-time-calendar-grid-column{padding-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time_cell--scale-size, 1));padding-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time_cell--scale-size, 1))}.now-date-time-calendar-grid-column,.now-date-time-calendar-grid-heading{padding-inline:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time_cell--scale-size, 1))}.now-date-time-calendar-grid-cell{align-items:center;background-color:RGB(var(--now-date-time_cell--background-color,var(--now-date-time--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-date-time_cell--background-color-alpha,0));block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-date-time_cell--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);border-color:RGB(var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));border-radius:var(--now-date-time_cell--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-date-time_cell--border-width,0);color:RGB(var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));cursor:pointer;display:flex;font-family:var(--now-date-time_cell--font-family,var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-menu_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-date-time_cell--font-style,var(--now-date-time--font-style,var(--now-menu--font-style,normal)));font-variant:normal;font-weight:var(--now-date-time_cell--font-weight,var(--now-date-time--font-weight,bold));inline-size:100%;justify-content:center;letter-spacing:inherit;line-height:1.3333;text-indent:0;text-shadow:none;text-transform:var(--now-date-time_cell--text-transform,var(--now-date-time--text-transform,var(--now-menu--text-transform,none)));white-space:normal;word-spacing:inherit}.-date .now-date-time-calendar-grid-cell,.-date-time .now-date-time-calendar-grid-cell,.-week-year .now-date-time-calendar-grid-cell{inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-date-time_cell--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-date-time-calendar-grid-cell:hover{background-color:RGB(var(--now-date-time_cell--background-color--hover,var(--now-color--secondary-1,1,119,142)),var(--now-date-time_cell--background-color-alpha--hover,var(--now-opacity--least,.1)));border-color:RGB(var(--now-date-time_cell--border-color--hover,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));color:RGB(var(--now-date-time_cell--color--hover,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-date-time-calendar-grid-cell:active{background-color:RGB(var(--now-date-time_cell--background-color--active,var(--now-color--secondary-1,1,119,142)),var(--now-date-time_cell--background-color-alpha--active,var(--now-opacity--less,.25)));border-color:RGB(var(--now-date-time_cell--border-color--active,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));color:RGB(var(--now-date-time_cell--color--active,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-date-time-calendar-grid-cell::-moz-focus-inner{border-style:none}.now-date-time-calendar-grid-cell:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-date-time-calendar-grid-cell:focus{outline:1px solid highlight}}.now-date-time-calendar-grid-cell.is-adjacent{background-color:RGB(var(--now-date-time_cell--background-color--adjacent,var(--now-date-time_cell--background-color,var(--now-date-time--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-date-time_cell--background-color-alpha--adjacent,var(--now-date-time_cell--background-color-alpha,0)));border-color:RGB(var(--now-date-time_cell--border-color--adjacent,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-date-time_cell--border-radius--adjacent,var(--now-date-time_cell--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-width:var(--now-date-time_cell--border-width--adjacent,var(--now-date-time_cell--border-width,0));color:RGB(var(--now-date-time_cell--color--adjacent,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-date-time_cell--color-alpha--adjacent,.6));font-family:var(--now-date-time_cell--font-family--adjacent,var(--now-date-time_cell--font-family,var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-style:var(--now-date-time_cell--font-style--adjacent,var(--now-date-time_cell--font-style,var(--now-date-time--font-style,var(--now-menu--font-style,normal))));font-weight:var(--now-date-time_cell--font-weight--adjacent,normal);text-transform:var(--now-date-time_cell--text-transform--adjacent,var(--now-date-time_cell--text-transform,var(--now-date-time--text-transform,var(--now-menu--text-transform,none))))}.now-date-time-calendar-grid-cell.is-adjacent:hover{background-color:RGB(var(--now-date-time_cell--background-color--adjacent_hover,var(--now-date-time_cell--background-color--hover,var(--now-color--secondary-1,1,119,142))),var(--now-date-time_cell--background-color-alpha--adjacent_hover,var(--now-date-time_cell--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-date-time_cell--border-color--adjacent_hover,var(--now-date-time_cell--border-color--hover,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--adjacent_hover,var(--now-date-time_cell--color--hover,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))),var(--now-date-time_cell--color-alpha--adjacent_hover,var(--now-date-time_cell--color-alpha--adjacent,.6)))}.now-date-time-calendar-grid-cell.is-adjacent:active{background-color:RGB(var(--now-date-time_cell--background-color--adjacent_active,var(--now-date-time_cell--background-color--active,var(--now-color--secondary-1,1,119,142))),var(--now-date-time_cell--background-color-alpha--adjacent_active,var(--now-date-time_cell--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-date-time_cell--border-color--adjacent_active,var(--now-date-time_cell--border-color--active,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--adjacent_active,var(--now-date-time_cell--color--active,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))),var(--now-date-time_cell--color-alpha--adjacent_active,var(--now-date-time_cell--color-alpha--adjacent,.6)))}.now-date-time-calendar-grid-cell.is-week{background-color:RGB(var(--now-date-time_cell--background-color--week,var(--now-date-time_cell--background-color,var(--now-date-time--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-date-time_cell--background-color-alpha--week,var(--now-date-time_cell--background-color-alpha,0)));border-color:RGB(var(--now-date-time_cell--border-color--week,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-date-time_cell--border-radius--week,var(--now-date-time_cell--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-width:var(--now-date-time_cell--border-width--week,var(--now-date-time_cell--border-width,0));color:RGB(var(--now-date-time_cell--color--week,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))));font-family:var(--now-date-time_cell--font-family--week,var(--now-date-time_cell--font-family,var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-style:var(--now-date-time_cell--font-style--week,var(--now-date-time_cell--font-style,var(--now-date-time--font-style,var(--now-menu--font-style,normal))));font-weight:var(--now-date-time_cell--font-weight--week,normal);inline-size:calc(4rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-date-time_cell--scale-size, 1)*4rem*var(--classicsponlydonotuse--rem-multipy)/2);text-transform:var(--now-date-time_cell--text-transform--week,var(--now-date-time_cell--text-transform,var(--now-date-time--text-transform,var(--now-menu--text-transform,none))))}.now-date-time-calendar-grid-cell.is-now{background-color:RGB(var(--now-date-time_cell--background-color--now,var(--now-date-time_cell--background-color,var(--now-date-time--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-date-time_cell--background-color-alpha--now,var(--now-date-time_cell--background-color-alpha,0)));border-color:RGB(var(--now-date-time_cell--border-color--now,var(--now-color--secondary-1,1,119,142)));border-radius:var(--now-date-time_cell--border-radius--now,var(--now-date-time_cell--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-width:var(--now-date-time_cell--border-width--now,1px);color:RGB(var(--now-date-time_cell--color--now,var(--now-color--secondary-1,1,119,142)))}.now-date-time-calendar-grid-cell.is-now:hover{background-color:RGB(var(--now-date-time_cell--background-color--now_hover,var(--now-date-time_cell--background-color--hover,var(--now-color--secondary-1,1,119,142))),var(--now-date-time_cell--background-color-alpha--now_hover,var(--now-date-time_cell--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-date-time_cell--border-color--now_hover,var(--now-color--secondary-2,1,89,107)));color:RGB(var(--now-date-time_cell--color--now_hover,var(--now-color--secondary-2,1,89,107)))}.now-date-time-calendar-grid-cell.is-now:active{background-color:RGB(var(--now-date-time_cell--background-color--now_active,var(--now-date-time_cell--background-color--active,var(--now-color--secondary-1,1,119,142))),var(--now-date-time_cell--background-color-alpha--now_active,var(--now-date-time_cell--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-date-time_cell--border-color--now_active,var(--now-color--secondary-3,1,60,71)));color:RGB(var(--now-date-time_cell--color--now_active,var(--now-color--secondary-3,1,60,71)))}.now-date-time-calendar-grid-cell.is-selected{background-color:RGB(var(--now-date-time_cell--background-color--selected,var(--now-color--secondary-1,1,119,142)),var(--now-date-time_cell--background-color-alpha--selected,1));border-color:RGB(var(--now-date-time_cell--border-color--selected,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-date-time_cell--border-radius--selected,var(--now-date-time_cell--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-width:var(--now-date-time_cell--border-width--selected,var(--now-date-time_cell--border-width,0));color:RGB(var(--now-date-time_cell--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255))))}.now-date-time-calendar-grid-cell.is-selected:hover{background-color:RGB(var(--now-date-time_cell--background-color--selected_hover,var(--now-color--secondary-2,1,89,107)),var(--now-date-time_cell--background-color-alpha--selected_hover,1));border-color:RGB(var(--now-date-time_cell--border-color--selected_hover,var(--now-date-time_cell--border-color--hover,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--selected_hover,var(--now-date-time_cell--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-date-time-calendar-grid-cell.is-selected:active{background-color:RGB(var(--now-date-time_cell--background-color--selected_active,var(--now-color--secondary-3,1,60,71)),var(--now-date-time_cell--background-color-alpha--selected_active,1));border-color:RGB(var(--now-date-time_cell--border-color--selected_active,var(--now-date-time_cell--border-color--active,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--selected_active,var(--now-date-time_cell--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-date-time-calendar-grid-cell.is-range{background-color:RGB(var(--now-date-time_cell--background-color--range,var(--now-color_selection--secondary-0,245,248,249)),var(--now-date-time_cell--background-color-alpha--range,1));border-color:RGB(var(--now-date-time_cell--border-color--range,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-date-time_cell--border-radius--range,var(--now-date-time_cell--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-width:var(--now-date-time_cell--border-width--range,var(--now-date-time_cell--border-width,0));color:RGB(var(--now-date-time_cell--color--range,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-date-time-calendar-grid-cell.is-range:hover{background-color:RGB(var(--now-date-time_cell--background-color--range_hover,var(--now-color_selection--secondary-1,237,243,245)),var(--now-date-time_cell--background-color-alpha--range_hover,1));border-color:RGB(var(--now-date-time_cell--border-color--range_hover,var(--now-date-time_cell--border-color--hover,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--range_hover,var(--now-date-time_cell--color--range,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-date-time-calendar-grid-cell.is-range:active{background-color:RGB(var(--now-date-time_cell--background-color--range_active,var(--now-date-time_cell--background-color--range,var(--now-color_selection--secondary-0,245,248,249))),var(--now-date-time_cell--background-color-alpha--range_active,1));border-color:RGB(var(--now-date-time_cell--border-color--range_active,var(--now-date-time_cell--border-color--active,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--range_active,var(--now-date-time_cell--color--range,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-date-time-calendar-grid-cell.is-week-range{background-color:RGB(var(--now-date-time_cell--background-color--week-range,var(--now-color_selection--secondary-0,245,248,249)),var(--now-date-time_cell--background-color-alpha--week-range,1));border-color:RGB(var(--now-date-time_cell--border-color--week-range,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-date-time_cell--border-radius--week-range,var(--now-date-time_cell--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-width:var(--now-date-time_cell--border-width--week-range,var(--now-date-time_cell--border-width,0));color:RGB(var(--now-date-time_cell--color--week-range,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-date-time-calendar-grid-cell.is-week-range:hover{background-color:RGB(var(--now-date-time_cell--background-color--week-range_hover,var(--now-date-time_cell--background-color--week-range,var(--now-color_selection--secondary-0,245,248,249))),var(--now-date-time_cell--background-color-alpha--week-range_hover,var(--now-date-time_cell--background-color-alpha--week-range,1)));border-color:RGB(var(--now-date-time_cell--border-color--week-range_hover,var(--now-date-time_cell--border-color--week-range,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--range_hover,var(--now-date-time_cell--color--range,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-date-time-calendar-grid-cell.is-week-range:active{background-color:RGB(var(--now-date-time_cell--background-color--week-range_active,var(--now-date-time_cell--background-color--week-range,var(--now-color_selection--secondary-0,245,248,249))),var(--now-date-time_cell--background-color-alpha--week-range_active,var(--now-date-time_cell--background-color-alpha--week-range,1)));border-color:RGB(var(--now-date-time_cell--border-color--week-range_active,var(--now-date-time_cell--border-color--week-range,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--week-range_active,var(--now-date-time_cell--color--week-range,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-date-time-calendar-grid-cell.is-week-preview{background-color:RGB(var(--now-date-time_cell--background-color--week-preview,var(--now-color--secondary-1,1,119,142)),var(--now-date-time_cell--background-color-alpha--week-preview,var(--now-opacity--least,.1)));border-color:RGB(var(--now-date-time_cell--border-color--week-preview,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-date-time_cell--border-radius--week-preview,var(--now-date-time_cell--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-width:var(--now-date-time_cell--border-width--week-preview,var(--now-date-time_cell--border-width,0));color:RGB(var(--now-date-time_cell--color--week-preview,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-date-time-calendar-grid-cell.is-week-preview:hover{background-color:RGB(var(--now-date-time_cell--background-color--week-preview_hover,var(--now-date-time_cell--background-color--week-preview,var(--now-color--secondary-1,1,119,142))),var(--now-date-time_cell--background-color-alpha--week-preview_hover,var(--now-date-time_cell--background-color-alpha--week-preview,var(--now-opacity--least,.1))));border-color:RGB(var(--now-date-time_cell--border-color--week-preview_hover,var(--now-date-time_cell--border-color--hover,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--range_hover,var(--now-date-time_cell--color--range,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-date-time-calendar-grid-cell.is-week-preview:active{background-color:RGB(var(--now-date-time_cell--background-color--week-preview_active,var(--now-date-time_cell--background-color--week-preview,var(--now-color--secondary-1,1,119,142))),var(--now-date-time_cell--background-color-alpha--week-preview_active,var(--now-date-time_cell--background-color-alpha--week-preview,var(--now-opacity--least,.1))));border-color:RGB(var(--now-date-time_cell--border-color--week-preview_active,var(--now-date-time_cell--border-color--active,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-date-time_cell--color--week-preview_active,var(--now-date-time_cell--color--week-preview,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-date-time-calendar-grid-cell.is-preview{background-color:RGB(var(--now-date-time_cell--background-color--preview,var(--now-color_selection--secondary-0,245,248,249)),var(--now-date-time_cell--background-color-alpha--preview,1));border-color:RGB(var(--now-date-time_cell--border-color--preview,var(--now-date-time_cell--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-date-time_cell--border-radius--preview,var(--now-date-time_cell--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-width:var(--now-date-time_cell--border-width--preview,var(--now-date-time_cell--border-width,0));color:RGB(var(--now-date-time_cell--color--preview,var(--now-date-time_cell--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-date-time-calendar-grid-cell.is-disabled{cursor:not-allowed;opacity:var(--now-date-time_cell--opacity--disabled,var(--now-date-time--opacity--disabled,var(--now-opacity--less,.25)))}.now-date-time-calendar-input-time{margin-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1));margin-block-start:0;margin-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-calendar-input-time.-interval{display:flex;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-calendar-footer{--now-button--bare--font-family:var(--now-date-time_footer--font-family,var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));--now-button--bare--font-style:var(--now-date-time_footer--font-style,var(--now-date-time--font-style,var(--now-menu--font-style,normal)));--now-button--bare--font-weight:var(--now-date-time_footer--font-weight,var(--now-date-time--font-weight,bold));--now-button--bare--text-transform:var(--now-date-time_footer--text-transform,var(--now-date-time--text-transform,var(--now-menu--text-transform,none)));background-color:RGB(var(--now-date-time_footer--background-color,var(--now-date-time--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));border-block-start-color:RGB(var(--now-date-time_footer-divider--color,var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214))));border-block-start-style:solid;border-block-start-width:var(--now-date-time_footer-divider--width,1px);display:flex;justify-content:center;padding-block:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1));padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-calendar-footer.has-footer-actions{--now-button--font-family:var(--now-date-time_footer--font-family,var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));--now-button--font-style:var(--now-date-time_footer--font-style,var(--now-date-time--font-style,var(--now-menu--font-style,normal)));--now-button--font-weight:var(--now-date-time_footer--font-weight,var(--now-date-time--font-weight,bold));--now-button--text-transform:var(--now-date-time_footer--text-transform,var(--now-date-time--text-transform,var(--now-menu--text-transform,none)))}.now-date-time-calendar-footer.has-footer-actions .now-date-time-calendar-footer-action:first-child{margin-inline-end:auto}.now-date-time-calendar-footer.has-footer-actions .now-date-time-calendar-footer-action:not(:first-child){margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time_footer--scale-size, 1))}.now-date-time-calendar-footer.-interval{justify-content:flex-end}.now-date-time-calendar-footer.-interval .now-date-time-calendar-footer-action:first-child{margin-inline-end:unset}.now-line-height-crop{display:block}.now-line-height-crop:after,.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-line-height-crop+.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}@media(forced-colors:active){.now-date-time-calendar-control-button .now-line-height-crop{forced-color-adjust:none}.now-date-time-calendar-grid-cell{background-color:buttonface;color:buttontext!important}.now-date-time-calendar-grid-cell:hover:not(.is-disabled){background-color:highlighttext;border-color:highlight;border-width:1px;color:highlight!important}.now-date-time-calendar-grid-cell.is-now{border-color:buttonborder}.now-date-time-calendar-grid-cell.is-preview:not(:hover,:focus),.now-date-time-calendar-grid-cell.is-range,.now-date-time-calendar-grid-cell.is-selected,.now-date-time-calendar-grid-cell.is-week-preview,.now-date-time-calendar-grid-cell.is-week-range{background-color:selecteditem;color:selecteditemtext!important}.now-date-time-calendar-grid-cell.is-disabled{color:graytext!important;opacity:1}.now-date-time-calendar-grid-cell.is-disabled.is-selected{background-color:graytext!important;color:buttonface!important}.now-date-time-calendar-grid-cell span{forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-form-field_message--border-width,0);display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:var(--now-form-control_message--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-color_alert--info-1,104,171,218)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}:host{display:inline-block;margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-date-time-interval{align-items:flex-end;display:flex;flex-flow:wrap}.now-date-time-interval.-vertical{flex-direction:column}.now-date-time-interval.-vertical.-md-sm{gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1))}.now-date-time-interval.-vertical.-md-md{gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1))}.now-date-time-interval.-vertical.-md-lg{gap:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1))}.now-date-time-interval.-vertical.-sm-sm{gap:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1))}.now-date-time-interval.-vertical.-sm-md{gap:calc(.5625rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1))}.now-date-time-interval.-vertical.-sm-lg{gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-block, 1))}.now-date-time-interval.-adaptive.-md-sm{gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-interval.-adaptive.-md-md{gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-interval.-adaptive.-md-lg{gap:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-interval.-adaptive.-sm-sm{gap:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-interval.-adaptive.-sm-md{gap:calc(.5625rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-interval.-adaptive.-sm-lg{gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-date-time--scale-size-inline, 1))}.now-date-time-interval.-horizontal-field-layout{align-items:center;flex-direction:column}.now-date-time-input{flex:1;inline-size:100%;margin-block:0;min-inline-size:calc(9.375rem*var(--classicsponlydonotuse--rem-multipy))}.now-date-time-slot{align-items:center;display:flex}.now-date-time-slot.-sm.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.now-date-time-slot.-sm.-end ::slotted(*){margin-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0!important}.now-date-time-slot.-md.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.now-date-time-slot.-md.-start ::slotted(.is-first-child){margin-inline-start:0!important}.now-date-time-slot.-md.-end ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.now-date-time-input-icon{align-self:center}.now-date-time-input-icon.-sm{padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))!important}.now-date-time-input-icon.-md{padding-inline:calc(.625rem*var(--classicsponlydonotuse--rem-multipy)) calc(.375rem*var(--classicsponlydonotuse--rem-multipy))!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-date-time-input{inline-size:100%;margin-block:0}.now-date-time-slot{align-items:center;display:flex}.now-date-time-slot.-sm.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.now-date-time-slot.-sm.-end ::slotted(*){margin-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0!important}.now-date-time-slot.-md.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.now-date-time-slot.-md.-start ::slotted(:first-child){margin-inline-start:0!important}.now-date-time-slot.-md.-end ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.now-date-time-input-icon{align-self:center}.now-date-time-input-icon.-sm{padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))!important}.now-date-time-input-icon.-md{padding-inline:calc(.625rem*var(--classicsponlydonotuse--rem-multipy)) calc(.375rem*var(--classicsponlydonotuse--rem-multipy))!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-input-date-time-input{inline-size:100%;margin-block:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--lg{margin-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--lg,.now-m-block-start--lg{margin-block-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--lg{margin-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--lg{margin-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--lg,.now-m-inline-start--lg{margin-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--lg{margin-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-date-time-presets{display:flex;flex-wrap:wrap}.now-date-time-presets-list{block-size:calc(17.5rem*var(--classicsponlydonotuse--rem-multipy));border-inline-end:var(--now-date-time_presets-divider--width,1px) solid RGB(var(--now-date-time_presets-divider--color,var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214))));flex-grow:1;min-inline-size:calc(12.5rem*var(--classicsponlydonotuse--rem-multipy));overflow-y:auto}.now-date-time-presets-list.is-wrapped{border-block-end:var(--now-date-time_presets-divider--width,1px) solid RGB(var(--now-date-time_presets-divider--color,var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214))));border-inline-end:none}.now-date-time-presets-listitem{background-color:RGB(var(--now-date-time_presets-item--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));color:RGB(var(--now-date-time_presets-item--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));display:flex;font-family:var(--now-date-time_presets-item--font-family,var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-menu_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-date-time_presets-item--font-style,var(--now-date-time--font-style,var(--now-menu--font-style,normal)));font-weight:var(--now-date-time_presets-item--font-weight,normal);line-height:1.25;padding-block:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));text-transform:var(--now-date-time_presets-item--text-transform,var(--now-date-time--text-transform,var(--now-menu--text-transform,none)))}.now-date-time-presets-listitem::-moz-focus-inner{border-style:none}.now-date-time-presets-listitem:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-date-time-presets-listitem:focus{outline:1px solid highlight}}.now-date-time-presets-listitem:hover{background-color:RGB(var(--now-date-time_presets-item--background-color--hover,var(--now-color_selection--secondary-0,245,248,249)),var(--now-date-time_presets-item--background-color-alpha--hover,1));color:RGB(var(--now-date-time_presets-item--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));cursor:pointer}.now-date-time-presets-checkmark{color:RGB(var(--now-date-time_presets-item_checkmark--color,var(--now-color_selection--primary-2,30,133,109)));inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-date-time-presets-header{background-color:RGB(var(--now-date-time_presets-header--background-color,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))));color:RGB(var(--now-date-time_presets-header--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));font-family:var(--now-date-time_presets-header--font-family,var(--now-date-time--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-menu_header--font-size--sm,var(--now-display-type_header--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-date-time_presets-header--font-style,var(--now-date-time--font-style,var(--now-menu--font-style,normal)));font-weight:var(--now-date-time_presets-header--font-weight,normal);line-height:1.3333;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));text-transform:var(--now-date-time_presets-header--text-transform,var(--now-date-time--text-transform,var(--now-menu--text-transform,none)))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.now-m-block--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--sm{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--sm,.now-m-block-start--sm{margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--sm{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--sm{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--sm,.now-m-inline-start--sm{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--sm{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--sm{padding-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--sm,.now-p-block-start--sm{padding-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--sm{padding-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--sm{padding-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--sm,.now-p-inline-start--sm{padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--sm{padding-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host{display:block}.now-dropdown-list{background-color:RGB(var(--now-dropdown-list--background-color,var(--now-menu-list--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));block-size:inherit;color:RGB(var(--now-dropdown-list--color,var(--now-menu-list_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));display:flex;flex-direction:column;font-family:var(--now-dropdown-list--font-family,var(--now-menu-list_label--primary--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:normal;font-variant:normal;font-weight:400;letter-spacing:inherit;max-block-size:inherit;max-inline-size:100%;outline:none;text-indent:0;text-shadow:none;text-transform:none;white-space:normal;word-spacing:inherit}.now-dropdown-list-item-container{block-size:100%;border-color:RGB(var(--now-dropdown-list--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-radius:var(--now-popover--border-radius,var(--now-menu_container--primary--border-radius,var(--now-menu--border-radius,4px)));border-style:solid;border-width:var(--now-dropdown-list--border-width,var(--now-menu_container--primary--border-width,var(--now-menu--border-width,1px)));outline:none;overflow:auto}.now-dropdown-list-search+.now-dropdown-list-item-container{border-block-start-width:0;border-start-end-radius:0;border-start-start-radius:0}.now-dropdown-list-item-img{border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));object-fit:cover}.now-dropdown-list-item{align-items:center;background-color:RGB(var(--now-dropdown-list--background-color,var(--now-menu-list--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));color:RGB(var(--now-dropdown-list--color,var(--now-menu-list_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));display:flex;padding-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-dropdown-list_item--scale-size-inline, var(--now-button--scale-size-inline, 1)));padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-dropdown-list_item--scale-size-inline, var(--now-button--scale-size-inline, 1)))}.now-dropdown-list-item.-sm{padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-dropdown-list-item.-sm .now-dropdown-list-item-img{block-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-dropdown-list-item.-md{padding-block:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-dropdown-list_item--scale-size-block, var(--now-button--scale-size-block, 1)))}.now-dropdown-list-item.-md .now-dropdown-list-item-img{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-dropdown-list-item.-md .now-dropdown-list-item-img,.now-dropdown-list-item.-sm .now-dropdown-list-item-img{margin-inline:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-dropdown-list-item.is-selected{background-color:RGB(var(--now-dropdown-list--background-color--selected,var(--now-menu-list--primary--background-color--selected,var(--now-menu-list--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))));color:RGB(var(--now-dropdown-list--color--selected,var(--now-menu-list_label--primary--color--selected,var(--now-menu-list_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-dropdown-list-item.is-focused{background-color:RGB(var(--now-dropdown-list--background-color--focus,var(--now-menu-list--primary--background-color--focus,var(--now-color--interactive-0,217,235,238))),var(--now-dropdown-list--background-color-alpha--focus,var(--now-menu-list--primary--background-color-alpha--focus,var(--now-opacity--mid,.5))));box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));color:RGB(var(--now-dropdown-list--color--focus,var(--now-menu-list_label--primary--color--focus,var(--now-menu-list_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))));cursor:pointer;outline:none}.now-dropdown-list-item.is-disabled{color:RGB(var(--now-dropdown-list--color--disabled,var(--now-menu-list_label--primary--color--disabled,var(--now-menu-list_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))),var(--now-dropdown-list--opacity--disabled,var(--now-menu-list--primary--opacity--disabled,var(--now-opacity--less,.25))));cursor:not-allowed}.now-dropdown-list-item.is-disabled .now-dropdown-list-item-img{opacity:var(--now-dropdown-list--opacity--disabled,var(--now-menu-list--primary--opacity--disabled,var(--now-opacity--less,.25)))}.now-dropdown-list-item .has-highlight{background-color:RGB(var(--now-dropdown-list--background-color--highlighted,var(--now-menu-list_label--primary--background-color--highlighted,var(--now-color_alert--warning-0,244,240,191))));color:RGB(var(--now-dropdown-list--color--highlighted,var(--now-menu-list_label--primary--color--highlighted,var(--now-menu-list_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))));font-weight:600}.now-dropdown-list-item.is-select-none{padding-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-dropdown-list_item--scale-size-inline, var(--now-button--scale-size-inline, 1)))}.now-dropdown-list-item.-sm.is-select-none{padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-dropdown-list-checkmark{color:RGB(var(--now-dropdown-list_checkmark--color,var(--now-menu-list_selection--primary--color,var(--now-color_selection--primary-2,30,133,109))));flex-shrink:0;inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.is-focused .now-dropdown-list-checkmark{color:RGB(var(--now-dropdown-list_checkmark--color--focus,var(--now-menu-list_selection--primary--color--focus,var(--now-color_selection--primary-2,30,133,109))))}.is-disabled .now-dropdown-list-checkmark{color:RGB(var(--now-dropdown-list_checkmark--color,var(--now-menu-list_selection--primary--color,var(--now-color_selection--primary-2,30,133,109))),var(--now-opacity--less,.25))}.-sm .now-dropdown-list-checkmark{inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-dropdown-list-icon{color:RGB(var(--now-dropdown-list_icon--color,var(--now-menu-list_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.is-selected .now-dropdown-list-icon{color:RGB(var(--now-dropdown-list_icon--color--selected,var(--now-menu-list_icon--primary--color--selected,var(--now-menu-list_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.is-focused .now-dropdown-list-icon{color:RGB(var(--now-dropdown-list_icon--color--focus,var(--now-menu-list_icon--primary--color--focus,var(--now-menu-list_icon--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-dropdown-list-labels{min-inline-size:0}.now-dropdown-list-label{align-items:center;display:flex;font-family:var(--now-dropdown-list--font-family,var(--now-menu-list_label--primary--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-dropdown-list--font-style,var(--now-menu-list_label--primary--font-style,var(--now-menu--font-style,normal)));font-weight:var(--now-dropdown-list--font-weight,var(--now-menu-list_label--primary--font-weight,var(--now-menu--font-weight,normal)));min-block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));text-transform:var(--now-dropdown-list--text-transform,var(--now-menu-list_label--primary--text-transform,var(--now-menu--text-transform,none)))}.-sm .now-dropdown-list-label{font-size:var(--now-menu_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333}.-sm .now-dropdown-list-label .now-line-height-crop{display:block}.-sm .now-dropdown-list-label .now-line-height-crop:after,.-sm .now-dropdown-list-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-sm .now-dropdown-list-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.-sm .now-dropdown-list-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.-sm .now-dropdown-list-label .now-line-height-crop+.-sm .now-dropdown-list-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-sm .now-dropdown-list-label .now-line-height-crop:first-child{min-inline-size:0}.-md .now-dropdown-list-label{font-size:var(--now-menu_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.-md .now-dropdown-list-label .now-line-height-crop{display:block}.-md .now-dropdown-list-label .now-line-height-crop:after,.-md .now-dropdown-list-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-md .now-dropdown-list-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-md .now-dropdown-list-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-md .now-dropdown-list-label .now-line-height-crop+.-md .now-dropdown-list-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.-md .now-dropdown-list-label .now-line-height-crop:first-child{min-inline-size:0}.now-dropdown-list-sublabel{color:RGB(var(--now-dropdown-list_sublabel--color,var(--now-menu-list_sublabel--primary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))));font-family:var(--now-dropdown-list_sublabel--font-family,var(--now-menu-list_sublabel--primary--font-family,var(--now-menu_sublabel--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-menu_sublabel--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-dropdown-list_sublabel--font-style,var(--now-menu-list_sublabel--primary--font-style,var(--now-menu_sublabel--font-style,var(--now-menu--font-style,normal))));font-weight:var(--now-dropdown-list_sublabel--font-weight,var(--now-menu-list_sublabel--primary--font-weight,var(--now-menu_sublabel--font-weight,var(--now-menu--font-weight,normal))));line-height:1.3333;text-transform:var(--now-dropdown-list_sublabel--text-transform,var(--now-menu-list_sublabel--primary--text-transform,var(--now-menu_sublabel--text-transform,var(--now-menu--text-transform,none))))}.is-selected .now-dropdown-list-sublabel{color:RGB(var(--now-dropdown-list_sublabel--color--selected,var(--now-menu-list_sublabel--primary--color--selected,var(--now-menu-list_sublabel--primary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.is-focused .now-dropdown-list-sublabel{color:RGB(var(--now-dropdown-list_sublabel--color--focus,var(--now-menu-list_sublabel--primary--color--focus,var(--now-menu-list_sublabel--primary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.is-disabled .now-dropdown-list-sublabel{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)),.3)}.now-dropdown-list-label-highlighted,.now-dropdown-list-sublabel{word-break:break-word}.now-dropdown-list-header{align-items:center;background-color:RGB(var(--now-dropdown-list_heading--background-color,var(--now-menu-list_header--primary--background-color,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))));color:RGB(var(--now-dropdown-list_heading--color,var(--now-menu-list_header--primary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))));display:flex;font-family:var(--now-dropdown-list_heading--font-family,var(--now-menu-list_header--primary--font-family,var(--now-menu_heading--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-menu_header--font-size--sm,var(--now-display-type_header--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-dropdown-list_heading--font-style,var(--now-menu-list_header--primary--font-style,var(--now-menu_heading--font-style,var(--now-menu--font-style,normal))));font-weight:var(--now-dropdown-list_heading--font-weight,var(--now-menu-list_header--primary--font-weight,var(--now-menu_heading--font-weight,var(--now-menu--font-weight,normal))));padding-block:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-dropdown-list_heading--scale-size-block, var(--now-button--scale-size-block, 1)));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-dropdown-list_heading--scale-size-inline, var(--now-button--scale-size-inline, 1)));text-transform:var(--now-dropdown-list_heading--text-transform,var(--now-menu-list_header--primary--text-transform,var(--now-menu_heading--text-transform,var(--now-menu--text-transform,none))))}.now-dropdown-list-header .now-line-height-crop{display:block;min-inline-size:0}.now-dropdown-list-header .now-line-height-crop:after,.now-dropdown-list-header .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-dropdown-list-header .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-dropdown-list-header .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-dropdown-list-header .now-line-height-crop+.now-dropdown-list-header .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-dropdown-ul{list-style-type:none;margin-block:0;padding-inline-start:0}.now-dropdown-list-divider{border-block-end:none;border-block-start-color:RGB(var(--now-dropdown-list_divider--color,var(--now-menu-list_divider--tertiary--color,var(--now-menu_divider--color,var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214))))));border-block-start-style:solid;border-block-start-width:var(--now-dropdown-list_divider--width,var(--now-menu-list_divider--tertiary--width,var(--now-menu_divider--width,1px)));border-inline-end:none;border-inline-start:none;margin-block:0}.now-dropdown-list-search{align-items:center;background-color:RGB(var(--now-dropdown-list_search--background-color,var(--now-menu_input--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-dropdown-list_item--scale-size-block, var(--now-button--scale-size-block, 1))*2rem*var(--classicsponlydonotuse--rem-multipy)/2);border-block-end-color:RGB(var(--now-dropdown-list_search--border-color,var(--now-menu_input--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-block-end-width:var(--now-dropdown-list_search--border-width,var(--now-menu_input--primary--border-width,1px));border-block-start-color:RGB(var(--now-dropdown-list--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-block-start-width:var(--now-dropdown-list--border-width,var(--now-menu_container--primary--border-width,var(--now-menu--border-width,1px)));border-inline-color:RGB(var(--now-dropdown-list--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-inline-width:var(--now-dropdown-list--border-width,var(--now-menu_container--primary--border-width,var(--now-menu--border-width,1px)));border-start-end-radius:var(--now-popover--border-radius,var(--now-menu_container--primary--border-radius,var(--now-menu--border-radius,4px)));border-start-start-radius:var(--now-popover--border-radius,var(--now-menu_container--primary--border-radius,var(--now-menu--border-radius,4px)));border-style:solid;display:flex;flex-shrink:0}.now-dropdown-list-search:hover{background:RGB(var(--now-dropdown-list_search--background-color--hover,var(--now-menu_input--primary--background-color--hover,var(--now-form-control-input--primary--background-color--hover,var(--now-color--primary-0,221,237,233)))))}.now-dropdown-list-search.-sm{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-dropdown-list-search-field{background-color:transparent;block-size:100%;border:none;color:var(--now-dropdown-list_search--color,var(--now-menu_input_value--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));flex:1;font-family:var(--now-dropdown-list_search--font-family,var(--now-menu_input--primary--font-family,var(--now-form-control_value--primary--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-menu_field--font-size--sm,var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-dropdown-list_search--font-style,var(--now-menu_input--primary--font-style,var(--now-form-control_value--primary--font-style,var(--now-form-control--font-style,normal))));font-variant:normal;font-weight:var(--now-dropdown-list_search--font-weight,var(--now-menu_input--primary--font-weight,var(--now-form-control_value--primary--font-weight,var(--now-form-control--font-weight,normal))));inline-size:100%;letter-spacing:inherit;line-height:1.3333;outline:none;padding-block:0;padding-inline:0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy));text-indent:0;text-shadow:none;text-transform:var(--now-dropdown-list_search--text-transform,var(--now-menu_input--primary--text-transform,var(--now-form-control_value--primary--text-transform,var(--now-form-control--text-transform,none))));white-space:normal;word-spacing:inherit}.now-dropdown-list-search-field::placeholder{color:RGB(var(--now-dropdown-list_search--color--placeholder,var(--now-menu_input_placeholder--primary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))));opacity:1}@media(forced-colors:active){.now-dropdown-list-item-container{border-color:highlight;border-width:1px}.now-dropdown-list-item.is-focused,.now-dropdown-list-item.is-selected.is-focused,.now-dropdown-list-item.is-selected:hover{background-color:highlight}.now-dropdown-list-item.is-focused .now-dropdown-list-labels,.now-dropdown-list-item.is-focused .now-dropdown-list-sublabel,.now-dropdown-list-item.is-selected.is-focused .now-dropdown-list-labels,.now-dropdown-list-item.is-selected.is-focused .now-dropdown-list-sublabel,.now-dropdown-list-item.is-selected:hover .now-dropdown-list-labels,.now-dropdown-list-item.is-selected:hover .now-dropdown-list-sublabel{color:highlighttext;forced-color-adjust:none}.now-dropdown-list-item.is-focused .now-dropdown-list-checkmark,.now-dropdown-list-item.is-focused .now-dropdown-list-icon,.now-dropdown-list-item.is-focused .now-dropdown-list-identifier,.now-dropdown-list-item.is-selected.is-focused .now-dropdown-list-checkmark,.now-dropdown-list-item.is-selected.is-focused .now-dropdown-list-icon,.now-dropdown-list-item.is-selected.is-focused .now-dropdown-list-identifier,.now-dropdown-list-item.is-selected:hover .now-dropdown-list-checkmark,.now-dropdown-list-item.is-selected:hover .now-dropdown-list-icon,.now-dropdown-list-item.is-selected:hover .now-dropdown-list-identifier{color:highlighttext}.now-dropdown-list-item.is-selected{background-color:selecteditem}.now-dropdown-list-item.is-selected .now-dropdown-list-labels,.now-dropdown-list-item.is-selected .now-dropdown-list-sublabel{color:selecteditemtext;forced-color-adjust:none}.now-dropdown-list-item.is-selected .now-dropdown-list-checkmark,.now-dropdown-list-item.is-selected .now-dropdown-list-icon,.now-dropdown-list-item.is-selected .now-dropdown-list-identifier{color:selecteditemtext}.now-dropdown-list-item.is-disabled,.now-dropdown-list-item.is-disabled:hover{background-color:canvas}.now-dropdown-list-item.is-disabled .now-dropdown-list-icon,.now-dropdown-list-item.is-disabled .now-dropdown-list-identifier,.now-dropdown-list-item.is-disabled .now-dropdown-list-labels,.now-dropdown-list-item.is-disabled .now-dropdown-list-sublabel,.now-dropdown-list-item.is-disabled:hover .now-dropdown-list-icon,.now-dropdown-list-item.is-disabled:hover .now-dropdown-list-identifier,.now-dropdown-list-item.is-disabled:hover .now-dropdown-list-labels,.now-dropdown-list-item.is-disabled:hover .now-dropdown-list-sublabel{color:graytext}.now-dropdown-list-item.is-disabled .now-dropdown-list-icon,.now-dropdown-list-item.is-disabled .now-dropdown-list-identifier,.now-dropdown-list-item.is-disabled .now-dropdown-list-item-img,.now-dropdown-list-item.is-disabled:hover .now-dropdown-list-icon,.now-dropdown-list-item.is-disabled:hover .now-dropdown-list-identifier,.now-dropdown-list-item.is-disabled:hover .now-dropdown-list-item-img{opacity:1}.now-dropdown-list-item .has-highlight{background-color:mark;color:marktext}.now-dropdown-list-divider{border-block-start-width:1px}.now-dropdown-list-search{border-block-start-color:highlight;border-inline-color:highlight}.now-dropdown-list-search-field::placeholder{color:graytext}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-dropdown-panel{font-style:normal;font-variant:normal;font-weight:400;letter-spacing:inherit;overflow:auto;position:fixed;text-indent:0;text-shadow:none;text-transform:none;visibility:hidden;white-space:normal;word-spacing:inherit;z-index:1000}.now-dropdown-panel-list{block-size:100%;border-color:RGB(var(--now-dropdown-list--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-radius:var(--now-popover--border-radius,var(--now-menu_container--primary--border-radius,var(--now-menu--border-radius,4px)));border-style:solid;border-width:var(--now-dropdown-list--border-width,var(--now-menu_container--primary--border-width,var(--now-menu--border-width,1px)));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));list-style:none;margin-block:0;outline:none;overflow-y:auto;padding-inline-start:0}.now-dropdown-panel-item{align-items:center;background-color:RGB(var(--now-dropdown-list--background-color,var(--now-menu-list--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-dropdown-list_item--scale-size-block, var(--now-button--scale-size-block, 1))*2rem*var(--classicsponlydonotuse--rem-multipy)/2);color:RGB(var(--now-dropdown-list--color,var(--now-menu-list_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));display:flex;font-family:var(--now-dropdown-list--font-family,var(--now-menu-list_label--primary--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-menu_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-dropdown-list--font-style,var(--now-menu-list_label--primary--font-style,var(--now-menu--font-style,normal)));font-weight:var(--now-dropdown-list--font-weight,var(--now-menu-list_label--primary--font-weight,var(--now-menu--font-weight,normal)));line-height:1.25;padding-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-dropdown-list_item--scale-size-inline, var(--now-button--scale-size-inline, 1)));padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-dropdown-list_item--scale-size-inline, var(--now-button--scale-size-inline, 1)));text-transform:var(--now-dropdown-list--text-transform,var(--now-menu-list_label--primary--text-transform,var(--now-menu--text-transform,none)))}.now-dropdown-panel-item:focus{background-color:RGB(var(--now-dropdown-list--background-color--focus,var(--now-menu-list--primary--background-color--focus,var(--now-color--interactive-0,217,235,238))));color:RGB(var(--now-dropdown-list--color--focus,var(--now-menu-list_label--primary--color--focus,var(--now-menu-list_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))));cursor:pointer;outline:none}.now-dropdown-panel-item.is-disabled{color:RGB(var(--now-dropdown-list--color--disabled,var(--now-menu-list_label--primary--color--disabled,var(--now-menu-list_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))),var(--now-opacity--less,.25));cursor:not-allowed}.now-dropdown-panel-item .now-line-height-crop{display:block;min-inline-size:0}.now-dropdown-panel-item .now-line-height-crop:after,.now-dropdown-panel-item .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-dropdown-panel-item .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-dropdown-panel-item .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-dropdown-panel-item .now-line-height-crop+.now-dropdown-panel-item .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-dropdown-panel-item .now-line-height-crop+.now-line-height-crop{min-inline-size:auto}.now-dropdown-panel-labels{display:flex;min-inline-size:0}.now-dropdown-panel-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-dropdown-panel-label:after{content:\\\"\\\";display:block}.now-dropdown-panel-checkmark{color:RGB(var(--now-dropdown-list_checkmark--color,var(--now-menu-list_selection--primary--color,var(--now-color_selection--primary-2,30,133,109))));margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.is-disabled .now-dropdown-panel-checkmark{color:RGB(var(--now-dropdown-list_checkmark--color,var(--now-menu-list_selection--primary--color,var(--now-color_selection--primary-2,30,133,109))),var(--now-opacity--less,.25))}.now-dropdown-panel-header{align-items:center;background-color:RGB(var(--now-dropdown-list_heading--background-color,var(--now-menu-list_header--primary--background-color,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))));block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-dropdown-list_heading--scale-size-block, var(--now-button--scale-size-block, 1))*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);color:RGB(var(--now-dropdown-list_heading--color,var(--now-menu-list_header--primary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))));display:flex;font-family:var(--now-dropdown-list_heading--font-family,var(--now-menu-list_header--primary--font-family,var(--now-menu_heading--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-menu_header--font-size--sm,var(--now-display-type_header--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-dropdown-list_heading--font-style,var(--now-menu-list_header--primary--font-style,var(--now-menu_heading--font-style,var(--now-menu--font-style,normal))));font-weight:var(--now-dropdown-list_heading--font-weight,var(--now-menu-list_header--primary--font-weight,var(--now-menu_heading--font-weight,var(--now-menu--font-weight,normal))));line-height:1.3333;margin-block:0;padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-dropdown-list_heading--scale-size-inline, var(--now-button--scale-size-inline, 1)));text-transform:var(--now-dropdown-list_heading--text-transform,var(--now-menu-list_header--primary--text-transform,var(--now-menu_heading--text-transform,var(--now-menu--text-transform,none))))}.now-dropdown-panel-header .now-line-height-crop{display:block;min-inline-size:0}.now-dropdown-panel-header .now-line-height-crop:after,.now-dropdown-panel-header .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-dropdown-panel-header .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-dropdown-panel-header .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-dropdown-panel-header .now-line-height-crop+.now-dropdown-panel-header .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-dropdown-panel-header-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-dropdown-panel-header-label:after{content:\\\"\\\";display:block}.now-dropdown-panel-divider{border-block-end:none;border-block-start-color:RGB(var(--now-dropdown-list_divider--color,var(--now-menu-list_divider--tertiary--color,var(--now-menu_divider--color,var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214))))));border-block-start-style:solid;border-block-start-width:var(--now-dropdown-list_divider--width,var(--now-menu-list_divider--tertiary--width,var(--now-menu_divider--width,1px)));border-inline-end:none;border-inline-start:none;margin-block:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.now-p-block--xxs{padding-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xxs,.now-p-block-start--xxs{padding-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--xxs{padding-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xxs{padding-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xxs,.now-p-inline-start--xxs{padding-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--xxs{padding-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xs{padding-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block--xs,.now-p-block-start--xs{padding-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-block-end--xs{padding-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xs{padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline--xs,.now-p-inline-start--xs{padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-p-inline-end--xs{padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host{display:inline-block;vertical-align:middle}.now-dropdown-container{display:flex}.now-dropdown-container.-top{flex-direction:column}.now-dropdown-container.-start{align-items:center}.now-dropdown-label{color:RGB(var(--now-dropdown_label--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));font-family:var(--now-dropdown_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-style:var(--now-dropdown_label--font-style,normal);font-variant:normal;font-weight:var(--now-dropdown_label--font-weight,normal);letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:var(--now-dropdown_label--text-transform,none);white-space:normal;word-spacing:inherit}.-start .now-dropdown-label{flex-basis:fit-content;text-align:end}.-sm .now-dropdown-label{font-size:var(--now-actionable--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333}.-sm .now-dropdown-label .now-line-height-crop{display:block}.-sm .now-dropdown-label .now-line-height-crop:after,.-sm .now-dropdown-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-sm .now-dropdown-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.-sm .now-dropdown-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.-sm .now-dropdown-label .now-line-height-crop+.-sm .now-dropdown-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-sm.-start .now-dropdown-label{margin-inline-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm.-top .now-dropdown-label{margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-dropdown-label{font-size:var(--now-actionable--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.-md .now-dropdown-label .now-line-height-crop{display:block}.-md .now-dropdown-label .now-line-height-crop:after,.-md .now-dropdown-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-md .now-dropdown-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-md .now-dropdown-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-md .now-dropdown-label .now-line-height-crop+.-md .now-dropdown-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.-md.-start .now-dropdown-label{margin-inline-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md.-top .now-dropdown-label{margin-block-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-lg .now-dropdown-label{font-size:var(--now-actionable--font-size--lg,var(--now-font-size--lg1,calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.-lg .now-dropdown-label .now-line-height-crop{display:block}.-lg .now-dropdown-label .now-line-height-crop:after,.-lg .now-dropdown-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-lg .now-dropdown-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-lg .now-dropdown-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-lg .now-dropdown-label .now-line-height-crop+.-lg .now-dropdown-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.-lg.-start .now-dropdown-label{margin-inline-end:calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy))}.-lg.-top .now-dropdown-label{margin-block-end:calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy))}.-start .now-dropdown-popover{min-inline-size:0}.now-dropdown{align-items:center;border-style:solid;border-width:var(--now-dropdown--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)));cursor:pointer;display:flex;inline-size:inherit;inline-size:100%;justify-content:center;margin:0;max-inline-size:inherit;padding-block:0}.now-dropdown::-moz-focus-inner{border-style:none}.now-dropdown:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-dropdown:focus{outline:1px solid highlight}}.now-dropdown:not(.is-bare):hover{box-shadow:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-dropdown.has-label:not(.is-bare){font-family:var(--now-dropdown--font-family,var(--now-actionable--contained--font-family,var(--now-actionable--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-dropdown--font-style,var(--now-actionable--contained--font-style,var(--now-actionable--font-style,normal)));font-variant:normal;font-weight:var(--now-dropdown--font-weight,var(--now-actionable--contained--font-weight,var(--now-actionable--font-weight,bold)));letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:var(--now-dropdown--text-transform,var(--now-actionable--contained--text-transform,var(--now-actionable--text-transform,none)));white-space:var(--now-dropdown--text-wrap,var(--now-actionable--text-wrap,normal));word-spacing:inherit}.now-dropdown.has-caret,.now-dropdown.has-label{border-end-end-radius:var(--now-dropdown--border-bottom-right-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-end-start-radius:var(--now-dropdown--border-bottom-left-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-start-end-radius:var(--now-dropdown--border-top-right-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)));border-start-start-radius:var(--now-dropdown--border-top-left-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))}.now-dropdown:not(.has-caret,.has-label){border-radius:var(--now-button-iconic--border-radius,var(--now-button--border-radius,var(--now-actionable--border-radius)))}.now-dropdown.-sm{font-size:var(--now-actionable--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;min-block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-dropdown.-sm.hide-block-padding{min-block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-block:0}.now-dropdown.-sm.has-caret.has-label:not(.is-bare){padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-dropdown.-sm:not(.has-caret,.has-label){block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);min-block-size:auto;padding:0}.now-dropdown.-sm.has-caret:not(.has-label){padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-dropdown.-sm.has-label .now-line-height-crop{display:block}.now-dropdown.-sm.has-label .now-line-height-crop:after,.now-dropdown.-sm.has-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-dropdown.-sm.has-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-dropdown.-sm.has-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-dropdown.-sm.has-label .now-line-height-crop+.now-dropdown.-sm.has-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-dropdown.-md{font-size:var(--now-actionable--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1));padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-dropdown.-md.hide-block-padding{min-block-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:0}.now-dropdown.-md.has-caret.has-label:not(.is-bare){padding-inline-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-dropdown.-md:not(.has-caret,.has-label){block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);min-block-size:auto;padding:0}.now-dropdown.-md.has-caret:not(.has-label){padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-dropdown.-md.has-label .now-line-height-crop{display:block}.now-dropdown.-md.has-label .now-line-height-crop:after,.now-dropdown.-md.has-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-dropdown.-md.has-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-dropdown.-md.has-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-dropdown.-md.has-label .now-line-height-crop+.now-dropdown.-md.has-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-dropdown.-lg{font-size:var(--now-actionable--font-size--lg,var(--now-font-size--lg1,calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;min-block-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:calc(.375rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-block, 1));padding-inline:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-dropdown.-lg.hide-block-padding{min-block-size:calc(1.75rem*var(--classicsponlydonotuse--rem-multipy));padding-block:0}.now-dropdown.-lg.has-caret.has-label:not(.is-bare){padding-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-dropdown.-lg:not(.has-caret,.has-label){block-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*3rem*var(--classicsponlydonotuse--rem-multipy)/2);min-block-size:auto;padding:0}.now-dropdown.-lg.has-caret:not(.has-label){padding-inline:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1))}.now-dropdown.-lg.has-label .now-line-height-crop{display:block}.now-dropdown.-lg.has-label .now-line-height-crop:after,.now-dropdown.-lg.has-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-dropdown.-lg.has-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-dropdown.-lg.has-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-dropdown.-lg.has-label .now-line-height-crop+.now-dropdown.-lg.has-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-dropdown.-primary{background-color:RGB(var(--now-dropdown--primary--background-color,var(--now-actionable--primary--background-color,var(--now-color--primary-1,30,133,109))));border-color:RGB(var(--now-dropdown--primary--border-color,var(--now-actionable--primary--border-color,var(--now-color--primary-1,30,133,109))));border-radius:var(--now-dropdown--primary--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-dropdown--primary--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0)));color:RGB(var(--now-dropdown--primary--color,var(--now-actionable_label--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-dropdown.-primary .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--primary--color,var(--now-actionable_icon--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-dropdown.-primary .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--primary--color,var(--now-actionable_trigger-icon--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-dropdown.-primary:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--primary--background-color--hover,var(--now-actionable--primary--background-color--hover,var(--now-color--primary-2,23,100,82))));border-color:RGB(var(--now-dropdown--primary--border-color--hover,var(--now-actionable--primary--border-color--hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-dropdown--primary--color--hover,var(--now-actionable_label--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-dropdown.-primary:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--primary--color--hover,var(--now-actionable_icon--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-dropdown.-primary:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--primary--color--hover,var(--now-actionable_trigger-icon--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-dropdown.-primary.is-opened:not(:hover),.now-dropdown.-primary:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--primary--background-color--active,var(--now-actionable--primary--background-color--active,var(--now-color--primary-3,15,67,55))));border-color:RGB(var(--now-dropdown--primary--border-color--active,var(--now-actionable--primary--border-color--active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-dropdown--primary--color--active,var(--now-actionable_label--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-dropdown.-primary.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.-primary:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--primary--color--active,var(--now-actionable_icon--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-dropdown.-primary.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.-primary:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--primary--color--active,var(--now-actionable_trigger-icon--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-dropdown.-primary.is-disabled{opacity:var(--now-dropdown--primary--opacity--disabled,var(--now-actionable--primary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-dropdown.-primary.-selection{background-color:RGB(var(--now-dropdown--primary-selection--background-color,var(--now-actionable--primary-selection--background-color,var(--now-color_selection--primary-2,30,133,109))));border-color:RGB(var(--now-dropdown--primary-selection--border-color,var(--now-actionable--primary-selection--border-color,var(--now-color_selection--primary-4,15,67,55))));border-radius:var(--now-dropdown--primary-selection--border-radius,var(--now-actionable--primary-selection--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-dropdown--primary-selection--border-width,var(--now-actionable--primary-selection--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0))));color:RGB(var(--now-dropdown--primary-selection--color,var(--now-actionable_label--primary-selection--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-primary.-selection .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--primary-selection--color,var(--now-actionable_icon--primary-selection--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-primary.-selection .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--primary-selection--color,var(--now-actionable_trigger-icon--primary-selection--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-primary.-selection:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--primary-selection--background-color--hover,var(--now-actionable--primary-selection--background-color--hover,var(--now-color_selection--primary-3,23,100,82))));border-color:RGB(var(--now-dropdown--primary-selection--border-color--hover,var(--now-actionable--primary-selection--border-color--hover,var(--now-color_selection--primary-4,15,67,55))));color:RGB(var(--now-dropdown--primary-selection--color--hover,var(--now-actionable_label--primary-selection--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-primary.-selection:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--primary-selection--color--hover,var(--now-actionable_icon--primary-selection--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-primary.-selection:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--primary-selection--color--hover,var(--now-actionable_trigger-icon--primary-selection--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-primary.-selection.is-opened:not(:hover),.now-dropdown.-primary.-selection:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--primary-selection--background-color--active,var(--now-actionable--primary-selection--background-color--active,var(--now-color_selection--primary-4,15,67,55))));border-color:RGB(var(--now-dropdown--primary-selection--border-color--active,var(--now-actionable--primary-selection--border-color--active,var(--now-color_selection--primary-4,15,67,55))));color:RGB(var(--now-dropdown--primary-selection--color--active,var(--now-actionable_label--primary-selection--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-primary.-selection.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.-primary.-selection:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--primary-selection--color--active,var(--now-actionable_icon--primary-selection--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-primary.-selection.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.-primary.-selection:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--primary-selection--color--active,var(--now-actionable_trigger-icon--primary-selection--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-primary.-selection.is-disabled{opacity:var(--now-dropdown--primary-selection--opacity--disabled,var(--now-actionable--primary-selection--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-dropdown.-secondary{background-color:RGB(var(--now-dropdown--secondary--background-color,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142))),var(--now-dropdown--secondary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-dropdown--secondary--border-color,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142))));border-radius:var(--now-dropdown--secondary--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-dropdown--secondary--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-dropdown--secondary--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-dropdown.-secondary .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--secondary--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-dropdown.-secondary .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--secondary--color,var(--now-actionable_trigger-icon--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-dropdown.-secondary:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--secondary--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))),var(--now-dropdown--secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--secondary--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))));color:RGB(var(--now-dropdown--secondary--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-dropdown.-secondary:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--secondary--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-dropdown.-secondary:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--secondary--color--hover,var(--now-actionable_trigger-icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-dropdown.-secondary.is-opened:not(:hover),.now-dropdown.-secondary:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--secondary--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))),var(--now-dropdown--secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--secondary--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))));color:RGB(var(--now-dropdown--secondary--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-dropdown.-secondary.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.-secondary:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--secondary--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-dropdown.-secondary.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.-secondary:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--secondary--color--active,var(--now-actionable_trigger-icon--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-dropdown.-secondary.is-disabled{opacity:var(--now-dropdown--secondary--opacity--disabled,var(--now-actionable--secondary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-dropdown.-secondary.-selected,.now-dropdown.-secondary.-selection{background-color:RGB(var(--now-dropdown--secondary-selection--background-color,var(--now-actionable--secondary-selection--background-color,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--secondary-selection--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-dropdown--secondary-selection--border-color,var(--now-actionable--secondary-selection--border-color,var(--now-color_selection--primary-2,30,133,109))));border-radius:var(--now-dropdown--secondary-selection--border-radius,var(--now-actionable--secondary-selection--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-dropdown--secondary-selection--border-width,var(--now-actionable--secondary-selection--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-dropdown--secondary-selection--color,var(--now-actionable_label--secondary-selection--color,var(--now-color_selection--primary-2,30,133,109))))}.now-dropdown.-secondary.-selected .now-dropdown-icon,.now-dropdown.-secondary.-selection .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--secondary-selection--color,var(--now-actionable_icon--secondary-selection--color,var(--now-color_selection--primary-2,30,133,109))))}.now-dropdown.-secondary.-selected .now-dropdown-icon.-caret,.now-dropdown.-secondary.-selection .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--secondary-selection--color,var(--now-actionable_trigger-icon--secondary-selection--color,var(--now-color_selection--primary-2,30,133,109))))}.now-dropdown.-secondary.-selected:hover:not(.is-disabled),.now-dropdown.-secondary.-selection:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--secondary-selection--background-color--hover,var(--now-actionable--secondary-selection--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--secondary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--secondary-selection--border-color--hover,var(--now-actionable--secondary-selection--border-color--hover,var(--now-color_selection--primary-3,23,100,82))));color:RGB(var(--now-dropdown--secondary-selection--color--hover,var(--now-actionable_label--secondary-selection--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.-secondary.-selected:hover:not(.is-disabled) .now-dropdown-icon,.now-dropdown.-secondary.-selection:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--secondary-selection--color--hover,var(--now-actionable_icon--secondary-selection--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.-secondary.-selected:hover:not(.is-disabled) .now-dropdown-icon.-caret,.now-dropdown.-secondary.-selection:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--secondary-selection--color--hover,var(--now-actionable_trigger-icon--secondary-selection--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.-secondary.-selected.is-opened:not(:hover),.now-dropdown.-secondary.-selected:active:not(.is-disabled),.now-dropdown.-secondary.-selection.is-opened:not(:hover),.now-dropdown.-secondary.-selection:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--secondary-selection--background-color--active,var(--now-actionable--secondary-selection--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--secondary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--secondary-selection--border-color--active,var(--now-actionable--secondary-selection--border-color--active,var(--now-color_selection--primary-4,15,67,55))));color:RGB(var(--now-dropdown--secondary-selection--color--active,var(--now-actionable_label--secondary-selection--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.-secondary.-selected.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.-secondary.-selected:active:not(.is-disabled) .now-dropdown-icon,.now-dropdown.-secondary.-selection.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.-secondary.-selection:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--secondary-selection--color--active,var(--now-actionable_icon--secondary-selection--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.-secondary.-selected.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.-secondary.-selected:active:not(.is-disabled) .now-dropdown-icon.-caret,.now-dropdown.-secondary.-selection.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.-secondary.-selection:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--secondary-selection--color--active,var(--now-actionable_trigger-icon--secondary-selection--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.-secondary.-selected.is-disabled,.now-dropdown.-secondary.-selection.is-disabled{opacity:var(--now-dropdown--secondary-selection--opacity--disabled,var(--now-actionable--secondary-selection--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-dropdown.-tertiary{background-color:RGB(var(--now-dropdown--tertiary--background-color,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-dropdown--tertiary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-dropdown--tertiary--border-color,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))),var(--now-dropdown--tertiary--border-color-alpha,1));border-radius:var(--now-dropdown--tertiary--border-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-dropdown--tertiary--border-width,var(--now-actionable--tertiary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-dropdown--tertiary--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))),var(--now-dropdown--tertiary--color-alpha,var(--now-actionable--color-alpha,1)))}.now-dropdown.-tertiary .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--tertiary--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-dropdown.-tertiary .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--tertiary--color,var(--now-actionable_trigger-icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-dropdown.-tertiary:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--tertiary--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-dropdown--tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--tertiary--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-dropdown--tertiary--border-color-alpha--hover,var(--now-actionable--iconic--border-color-alpha,1)));color:RGB(var(--now-dropdown--tertiary--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))),var(--now-dropdown--tertiary--color-alpha--hover,var(--now-actionable--color-alpha,1)))}.now-dropdown.-tertiary:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--tertiary--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.now-dropdown.-tertiary:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--tertiary--color--hover,var(--now-actionable_trigger-icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.now-dropdown.-tertiary.is-opened:not(:hover),.now-dropdown.-tertiary:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--tertiary--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-dropdown--tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--tertiary--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))),var(--now-dropdown--tertiary--border-color-alpha--active,var(--now-actionable--iconic--border-color-alpha,1)));color:RGB(var(--now-dropdown--tertiary--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-dropdown--tertiary--color-alpha--active,var(--now-actionable--color-alpha,1)))}.now-dropdown.-tertiary.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.-tertiary:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--tertiary--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-tertiary.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.-tertiary:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--tertiary--color--active,var(--now-actionable_trigger-icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.-tertiary.is-disabled{opacity:var(--now-dropdown--tertiary--opacity--disabled,var(--now-actionable--tertiary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-dropdown.-tertiary.-selected,.now-dropdown.-tertiary.-selection{background-color:RGB(var(--now-dropdown--tertiary-selection--background-color,var(--now-actionable--tertiary-selection--background-color,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--tertiary-selection--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-dropdown--tertiary-selection--border-color,var(--now-actionable--tertiary-selection--border-color,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81))))),var(--now-dropdown--tertiary-selection--border-color-alpha,1));border-radius:var(--now-dropdown--tertiary-selection--border-radius,var(--now-actionable--tertiary-selection--border-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-dropdown--tertiary-selection--border-width,var(--now-actionable--tertiary-selection--border-width,var(--now-actionable--tertiary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-dropdown--tertiary-selection--color,var(--now-actionable_label--tertiary-selection--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-dropdown.-tertiary.-selected .now-dropdown-icon,.now-dropdown.-tertiary.-selection .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--tertiary-selection--color,var(--now-actionable_icon--tertiary-selection--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-dropdown.-tertiary.-selected .now-dropdown-icon.-caret,.now-dropdown.-tertiary.-selection .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--tertiary-selection--color,var(--now-actionable_trigger-icon--tertiary-selection--color,var(--now-actionable_trigger-icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-dropdown.-tertiary.-selected:hover:not(.is-disabled),.now-dropdown.-tertiary.-selection:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--tertiary-selection--background-color--hover,var(--now-actionable--tertiary-selection--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--tertiary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--tertiary-selection--border-color--hover,var(--now-actionable--tertiary-selection--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-dropdown--tertiary-selection--border-color-alpha--hover,1));color:RGB(var(--now-dropdown--tertiary-selection--color--hover,var(--now-actionable_label--tertiary-selection--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-dropdown.-tertiary.-selected:hover:not(.is-disabled) .now-dropdown-icon,.now-dropdown.-tertiary.-selection:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--tertiary-selection--color--hover,var(--now-actionable_icon--tertiary-selection--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-dropdown.-tertiary.-selected:hover:not(.is-disabled) .now-dropdown-icon.-caret,.now-dropdown.-tertiary.-selection:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--tertiary-selection--color--hover,var(--now-actionable_trigger-icon--tertiary-selection--color--hover,var(--now-actionable_trigger-icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-dropdown.-tertiary.-selected.is-opened:not(:hover),.now-dropdown.-tertiary.-selected:active:not(.is-disabled),.now-dropdown.-tertiary.-selection.is-opened:not(:hover),.now-dropdown.-tertiary.-selection:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--tertiary-selection--background-color--active,var(--now-actionable--tertiary-selection--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--tertiary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--tertiary-selection--border-color--active,var(--now-actionable--tertiary-selection--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))),var(--now-dropdown--tertiary-selection--border-color-alpha--active,1));color:RGB(var(--now-dropdown--tertiary-selection--color--active,var(--now-actionable_label--tertiary-selection--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-dropdown.-tertiary.-selected.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.-tertiary.-selected:active:not(.is-disabled) .now-dropdown-icon,.now-dropdown.-tertiary.-selection.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.-tertiary.-selection:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--tertiary-selection--color--active,var(--now-actionable_icon--tertiary-selection--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-dropdown.-tertiary.-selected.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.-tertiary.-selected:active:not(.is-disabled) .now-dropdown-icon.-caret,.now-dropdown.-tertiary.-selection.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.-tertiary.-selection:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--tertiary-selection--color--active,var(--now-actionable_trigger-icon--tertiary-selection--color--active,var(--now-actionable_trigger-icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-dropdown.-tertiary.-selected.is-disabled,.now-dropdown.-tertiary.-selection.is-disabled{opacity:var(--now-dropdown--tertiary-selection--opacity--disabled,var(--now-actionable--tertiary-selection--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-dropdown.is-bare{background-color:transparent;border-color:transparent;inline-size:100%}.now-dropdown.is-bare.has-label{font-family:var(--now-dropdown--bare--font-family,var(--now-actionable--bare--font-family,var(--now-actionable--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-dropdown--bare--font-style,var(--now-actionable--bare--font-style,var(--now-actionable--font-style,normal)));font-variant:normal;font-weight:var(--now-dropdown--bare--font-weight,var(--now-actionable--bare--font-weight,var(--now-actionable--font-weight,bold)));letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:var(--now-dropdown--bare--text-transform,var(--now-actionable--bare--text-transform,var(--now-actionable--text-transform,none)));white-space:var(--now-dropdown--bare--text-wrap,var(--now-actionable--text-wrap,normal));word-spacing:inherit}.now-dropdown.is-bare.has-label:not(.show-padding){padding-inline:0}.now-dropdown.is-bare.-primary{border-radius:var(--now-dropdown--bare_primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-dropdown--bare_primary--border-width,var(--now-actionable--primary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-dropdown--bare_primary--color,var(--now-actionable_label--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-dropdown.is-bare.-primary .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-dropdown.is-bare.-primary .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-dropdown.is-bare.-primary:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-dropdown--bare_primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--bare_primary--border-color--hover,var(--now-actionable--primary_bare--border-color--hover,var(--now-color--primary-3,15,67,55))),var(--now-dropdown--bare_primary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_primary--color--hover,var(--now-actionable_label--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-dropdown.is-bare.-primary:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-dropdown.is-bare.-primary:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-dropdown.is-bare.-primary.is-opened:not(:hover),.now-dropdown.is-bare.-primary:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-dropdown--bare_primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--bare_primary--border-color--active,var(--now-actionable--primary_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-dropdown--bare_primary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_primary--color--active,var(--now-actionable_label--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.is-bare.-primary.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.is-bare.-primary:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.is-bare.-primary.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-primary:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.is-bare.-primary.is-disabled{opacity:var(--now-dropdown--bare_primary--opacity--disabled,var(--now-actionable--primary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-dropdown.is-bare.-primary.-selection{background-color:transparent;border-color:transparent;border-radius:var(--now-dropdown--bare_primary-selection--border-radius,var(--now-actionable--primary-selection_bare--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-dropdown--bare_primary-selection--border-width,var(--now-actionable--primary-selection_bare--border-width,var(--now-actionable--primary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-dropdown--bare_primary-selection--color,var(--now-actionable_label--primary-selection_bare--color,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.is-bare.-primary.-selection .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_primary-selection--color,var(--now-actionable_icon--primary-selection_bare--color,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.is-bare.-primary.-selection .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_primary-selection--color,var(--now-actionable_trigger-icon--primary-selection_bare--color,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.is-bare.-primary.-selection:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_primary-selection--background-color--hover,var(--now-actionable--primary-selection_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--bare_primary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--bare_primary-selection--border-color--hover,var(--now-actionable--primary-selection_bare--border-color--hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-dropdown--bare_primary-selection--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_primary-selection--color--hover,var(--now-actionable--primary-selection_bare--border-color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.is-bare.-primary.-selection:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_primary-selection--color--hover,var(--now-actionable_icon--primary-selection_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.is-bare.-primary.-selection:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_primary-selection--color--hover,var(--now-actionable_trigger-icon--primary-selection_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.is-bare.-primary.-selection.is-opened:not(:hover),.now-dropdown.is-bare.-primary.-selection:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_primary-selection--background-color--active,var(--now-actionable--primary-selection_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--bare_primary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--bare_primary-selection--border-color--active,var(--now-actionable--primary-selection_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-dropdown--bare_primary-selection--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_primary-selection--color--active,var(--now-actionable--primary-selection_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.is-bare.-primary.-selection.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.is-bare.-primary.-selection:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_primary-selection--color--active,var(--now-actionable_icon--primary-selection_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.is-bare.-primary.-selection.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-primary.-selection:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_primary-selection--color--active,var(--now-actionable_trigger-icon--primary-selection_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-dropdown.is-bare.-primary.-selection.is-disabled{opacity:var(--now-dropdown--bare_primary-selection--opacity--disabled,var(--now-actionable--primary-selection_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-dropdown.is-bare.-secondary{border-radius:var(--now-dropdown--bare_secondary--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-dropdown--bare_secondary--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-dropdown--bare_secondary--color,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-dropdown.is-bare.-secondary .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_secondary--color,var(--now-actionable_icon--secondary_bare--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-dropdown.is-bare.-secondary .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_secondary--color,var(--now-actionable_trigger-icon--secondary_bare--color,var(--now-actionable_trigger-icon--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-dropdown.is-bare.-secondary:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-dropdown--bare_secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--bare_secondary--border-color--hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107)))),var(--now-dropdown--bare_secondary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_secondary--color--hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-dropdown.is-bare.-secondary:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_secondary--color--hover,var(--now-actionable_icon--secondary_bare--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-dropdown.is-bare.-secondary:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_secondary--color--hover,var(--now-actionable_trigger-icon--secondary_bare--color--hover,var(--now-actionable_trigger-icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-dropdown.is-bare.-secondary.is-opened:not(:hover),.now-dropdown.is-bare.-secondary:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-dropdown--bare_secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--bare_secondary--border-color--active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71)))),var(--now-dropdown--bare_secondary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_secondary--color--active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-dropdown.is-bare.-secondary.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.is-bare.-secondary:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_secondary--color--active,var(--now-actionable_icon--secondary_bare--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-dropdown.is-bare.-secondary.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-secondary:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_secondary--color--active,var(--now-actionable_trigger-icon--secondary_bare--color--active,var(--now-actionable_trigger-icon--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-dropdown.is-bare.-secondary.is-disabled{opacity:var(--now-dropdown--bare_secondary--opacity--disabled,var(--now-actionable--secondary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-dropdown.is-bare.-secondary.-selected,.now-dropdown.is-bare.-secondary.-selection{background-color:transparent;border-color:transparent;border-radius:var(--now-dropdown--bare_secondary-selection--border-radius,var(--now-actionable--secondary-selection_bare--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-dropdown--bare_secondary-selection--border-width,var(--now-actionable--secondary-selection_bare--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-dropdown--bare_secondary-selection--color,var(--now-actionable_label--secondary-selection_bare--color,var(--now-color_selection--primary-2,30,133,109))))}.now-dropdown.is-bare.-secondary.-selected .now-dropdown-icon,.now-dropdown.is-bare.-secondary.-selection .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_secondary-selection--color,var(--now-actionable_icon--secondary-selection_bare--color,var(--now-color_selection--primary-2,30,133,109))))}.now-dropdown.is-bare.-secondary.-selected .now-dropdown-icon.-caret,.now-dropdown.is-bare.-secondary.-selection .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_secondary-selection--color,var(--now-actionable_trigger-icon--secondary-selection_bare--color,var(--now-color_selection--primary-2,30,133,109))))}.now-dropdown.is-bare.-secondary.-selected:hover:not(.is-disabled),.now-dropdown.is-bare.-secondary.-selection:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_secondary-selection--background-color--hover,var(--now-actionable--secondary-selection_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--bare_secondary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--bare_secondary-selection--border-color--hover,var(--now-actionable--secondary-selection_bare--border-color--hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-dropdown--bare_secondary-selection--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_secondary-selection--color--hover,var(--now-actionable_label--secondary-selection_bare--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.is-bare.-secondary.-selected:hover:not(.is-disabled) .now-dropdown-icon,.now-dropdown.is-bare.-secondary.-selection:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_secondary-selection--color--hover,var(--now-actionable_icon--secondary-selection_bare--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.is-bare.-secondary.-selected:hover:not(.is-disabled) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-secondary.-selection:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_secondary-selection--color--hover,var(--now-actionable_trigger-icon--secondary-selection_bare--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.is-bare.-secondary.-selected.is-opened:not(:hover),.now-dropdown.is-bare.-secondary.-selected:active:not(.is-disabled),.now-dropdown.is-bare.-secondary.-selection.is-opened:not(:hover),.now-dropdown.is-bare.-secondary.-selection:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_secondary-selection--background-color--active,var(--now-actionable--secondary-selection_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--bare_secondary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--bare_secondary-selection--border-color--active,var(--now-actionable--secondary-selection_bare--border-color--active,var(--now-color_selection--primary-4,15,67,55))),var(--now-dropdown--bare_secondary-selection--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_secondary-selection--color--active,var(--now-actionable_label--secondary-selection_bare--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.is-bare.-secondary.-selected.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.is-bare.-secondary.-selected:active:not(.is-disabled) .now-dropdown-icon,.now-dropdown.is-bare.-secondary.-selection.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.is-bare.-secondary.-selection:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_secondary-selection--color--active,var(--now-actionable_icon--secondary-selection_bare--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.is-bare.-secondary.-selected.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-secondary.-selected:active:not(.is-disabled) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-secondary.-selection.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-secondary.-selection:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_secondary-selection--color--active,var(--now-actionable_trigger-icon--secondary-selection_bare--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.is-bare.-secondary.-selected.is-disabled,.now-dropdown.is-bare.-secondary.-selection.is-disabled{opacity:var(--now-dropdown--bare_secondary-selection--opacity--disabled,var(--now-actionable--secondary-selection_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-dropdown.is-bare.-tertiary{border-radius:var(--now-dropdown--bare_tertiary--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));border-width:var(--now-dropdown--bare_tertiary--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-dropdown--bare_tertiary--color,var(--now-actionable_label--tertiary_bare--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-dropdown.is-bare.-tertiary .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_tertiary--color,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-dropdown.is-bare.-tertiary .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_tertiary--color,var(--now-actionable_trigger-icon--tertiary_bare--color,var(--now-actionable_trigger-icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-dropdown.is-bare.-tertiary:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-dropdown--bare_tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--bare_tertiary--border-color--hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-dropdown--bare_tertiary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_tertiary--color--hover,var(--now-actionable_label--tertiary_bare--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-dropdown.is-bare.-tertiary:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_tertiary--color--hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-dropdown.is-bare.-tertiary:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_tertiary--color--hover,var(--now-actionable_trigger-icon--tertiary_bare--color--hover,var(--now-actionable_trigger-icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-dropdown.is-bare.-tertiary.is-opened:not(:hover),.now-dropdown.is-bare.-tertiary:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-dropdown--bare_tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--bare_tertiary--border-color--active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))),var(--now-dropdown--bare_tertiary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_tertiary--color--active,var(--now-actionable_label--tertiary_bare--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-dropdown.is-bare.-tertiary.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.is-bare.-tertiary:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_tertiary--color--active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-dropdown.is-bare.-tertiary.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-tertiary:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_tertiary--color--active,var(--now-actionable_trigger-icon--tertiary_bare--color--active,var(--now-actionable_trigger-icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-dropdown.is-bare.-tertiary.is-disabled{opacity:var(--now-dropdown--bare_tertiary--opacity--disabled,var(--now-actionable--tertiary_bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-dropdown.is-bare.-tertiary.-selected,.now-dropdown.is-bare.-tertiary.-selection{background-color:transparent;border-color:transparent;border-radius:var(--now-dropdown--bare_tertiary-selection--border-radius,var(--now-actionable--tertiary-selection_bare--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px)))));border-width:var(--now-dropdown--bare_tertiary-selection--border-width,var(--now-actionable--tertiary-selection_bare--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-dropdown--bare_tertiary-selection--color,var(--now-actionable_label--tertiary-selection_bare--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-dropdown.is-bare.-tertiary.-selected .now-dropdown-icon,.now-dropdown.is-bare.-tertiary.-selection .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_tertiary-selection--color,var(--now-actionable_icon--tertiary-selection_bare--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-dropdown.is-bare.-tertiary.-selected .now-dropdown-icon.-caret,.now-dropdown.is-bare.-tertiary.-selection .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_tertiary-selection--color,var(--now-actionable_trigger-icon--tertiary-selection_bare--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-dropdown.is-bare.-tertiary.-selected:hover:not(.is-disabled),.now-dropdown.is-bare.-tertiary.-selection:hover:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_tertiary-selection--background-color--hover,var(--now-actionable--tertiary-selection_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--bare_tertiary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-dropdown--bare_tertiary-selection--border-color--hover,var(--now-actionable--tertiary-selection_bare--border-color--hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-dropdown--bare_tertiary-selection--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_tertiary-selection--color--hover,var(--now-actionable_label--tertiary-selection_bare--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.is-bare.-tertiary.-selected:hover:not(.is-disabled) .now-dropdown-icon,.now-dropdown.is-bare.-tertiary.-selection:hover:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_tertiary-selection--color--hover,var(--now-actionable_icon--tertiary-selection_bare--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.is-bare.-tertiary.-selected:hover:not(.is-disabled) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-tertiary.-selection:hover:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_tertiary-selection--color--hover,var(--now-actionable_trigger-icon--tertiary-selection_bare--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-dropdown.is-bare.-tertiary.-selected.is-opened:not(:hover),.now-dropdown.is-bare.-tertiary.-selected:active:not(.is-disabled),.now-dropdown.is-bare.-tertiary.-selection.is-opened:not(:hover),.now-dropdown.is-bare.-tertiary.-selection:active:not(.is-disabled){background-color:RGB(var(--now-dropdown--bare_tertiary-selection--background-color--active,var(--now-actionable--tertiary-selection_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-dropdown--bare_tertiary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-dropdown--bare_tertiary-selection--border-color--active,var(--now-actionable--tertiary-selection_bare--border-color--active,var(--now-color_selection--primary-4,15,67,55))),var(--now-dropdown--bare_tertiary-selection--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-dropdown--bare_tertiary-selection--color--active,var(--now-actionable_label--tertiary-selection_bare--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.is-bare.-tertiary.-selected.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.is-bare.-tertiary.-selected:active:not(.is-disabled) .now-dropdown-icon,.now-dropdown.is-bare.-tertiary.-selection.is-opened:not(:hover) .now-dropdown-icon,.now-dropdown.is-bare.-tertiary.-selection:active:not(.is-disabled) .now-dropdown-icon{color:RGB(var(--now-dropdown_icon--bare_tertiary-selection--color--active,var(--now-actionable_icon--tertiary-selection_bare--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.is-bare.-tertiary.-selected.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-tertiary.-selected:active:not(.is-disabled) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-tertiary.-selection.is-opened:not(:hover) .now-dropdown-icon.-caret,.now-dropdown.is-bare.-tertiary.-selection:active:not(.is-disabled) .now-dropdown-icon.-caret{color:RGB(var(--now-dropdown_trigger-icon--bare_tertiary-selection--color--active,var(--now-actionable_trigger-icon--tertiary-selection_bare--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-dropdown.is-bare.-tertiary.-selected.is-disabled,.now-dropdown.is-bare.-tertiary.-selection.is-disabled{opacity:var(--now-dropdown--bare_tertiary-selection--opacity--disabled,var(--now-actionable--tertiary-selection_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-dropdown.is-bare::-moz-focus-inner{border-style:none}.now-dropdown.is-bare:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-dropdown.is-bare:focus{outline:1px solid highlight}}.now-dropdown.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-dropdown.is-disabled:hover{box-shadow:none}.now-dropdown.is-disabled:focus::-moz-focus-inner{border-style:none}.now-dropdown.is-disabled:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-dropdown.is-disabled:focus:focus{outline:1px solid highlight}}.now-dropdown .now-line-height-crop{min-inline-size:0}.now-dropdown-icon.-caret{margin-inline-start:auto}.now-dropdown-trigger-label{display:block;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap}.now-dropdown-trigger-label:after{content:\\\"\\\";display:block}@media(forced-colors:active){.now-dropdown{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-dropdown now-icon,.now-dropdown now-icon-animated{color:inherit!important}.now-dropdown:focus,.now-dropdown:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-dropdown.is-disabled,.now-dropdown.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-dropdown .now-line-height-crop{forced-color-adjust:none}.now-dropdown ::slotted(*){forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:block}.now-heading{font-variant:normal;letter-spacing:inherit;margin-block-start:0;text-align:start;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit}.now-heading.-header{margin-block-end:1em}.now-heading.-header.-hero{color:RGB(var(--now-heading--header-hero--color,var(--now-display-type--head-primary--color,var(--now-display-type--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))));font-family:var(--now-heading--header-hero--font-family,var(--now-display-type--head-primary--font-family,var(--now-display-type--header-primary--font-family,var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-size:var(--now-display-type_header--font-size--lg3,var(--now-font-size--lg3,calc(2rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-heading--header-hero--font-style,var(--now-display-type--head-primary--font-style,var(--now-display-type--header-primary--font-style,var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-heading--header-hero--font-weight,var(--now-display-type--head-primary--font-weight,var(--now-display-type--header-primary--font-weight,var(--now-display-type--primary--font-weight,600))));text-transform:var(--now-heading--header-hero--text-transform,var(--now-display-type--head-primary--text-transform,var(--now-display-type--header-primary--text-transform,var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none)))))}.now-heading.-header.-primary{color:RGB(var(--now-heading--header-primary--color,var(--now-display-type--head-primary--color,var(--now-display-type--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))));font-family:var(--now-heading--header-primary--font-family,var(--now-display-type--head-primary--font-family,var(--now-display-type--header-primary--font-family,var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-size:var(--now-display-type_header--font-size--lg1,var(--now-font-size--lg1,calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-heading--header-primary--font-style,var(--now-display-type--head-primary--font-style,var(--now-display-type--header-primary--font-style,var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-heading--header-primary--font-weight,var(--now-display-type--head-primary--font-weight,var(--now-display-type--header-primary--font-weight,var(--now-display-type--primary--font-weight,600))));text-transform:var(--now-heading--header-primary--text-transform,var(--now-display-type--head-primary--text-transform,var(--now-display-type--header-primary--text-transform,var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none)))))}.now-heading.-header.-secondary{color:RGB(var(--now-heading--header-secondary--color,var(--now-display-type--head-secondary--color,var(--now-display-type--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))));font-family:var(--now-heading--header-secondary--font-family,var(--now-display-type--head-secondary--font-family,var(--now-display-type--header-secondary--font-family,var(--now-display-type--secondary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-size:var(--now-display-type_header--font-size--lg,var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-heading--header-secondary--font-style,var(--now-display-type--head-secondary--font-style,var(--now-display-type--header-secondary--font-style,var(--now-display-type--secondary--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-heading--header-secondary--font-weight,var(--now-display-type--head-secondary--font-weight,var(--now-display-type--header-secondary--font-weight,var(--now-display-type--secondary--font-weight,var(--now-display-type--font-weight,normal)))));text-transform:var(--now-heading--header-secondary--text-transform,var(--now-display-type--head-secondary--text-transform,var(--now-display-type--header-secondary--text-transform,var(--now-display-type--secondary--text-transform,var(--now-display-type--text-transform,none)))))}.now-heading.-header.-tertiary{color:RGB(var(--now-heading--header-tertiary--color,var(--now-display-type--head-tertiary--color,var(--now-display-type--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))));font-family:var(--now-heading--header-tertiary--font-family,var(--now-display-type--head-tertiary--font-family,var(--now-display-type--header-tertiary--font-family,var(--now-display-type--tertiary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-style:var(--now-heading--header-tertiary--font-style,var(--now-display-type--head-tertiary--font-style,var(--now-display-type--header-tertiary--font-style,var(--now-display-type--tertiary--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-heading--header-tertiary--font-weight,var(--now-display-type--head-tertiary--font-weight,var(--now-display-type--header-tertiary--font-weight,var(--now-display-type--tertiary--font-weight,var(--now-display-type--font-weight,normal)))));text-transform:var(--now-heading--header-tertiary--text-transform,var(--now-display-type--head-tertiary--text-transform,var(--now-display-type--header-tertiary--text-transform,var(--now-display-type--tertiary--text-transform,var(--now-display-type--text-transform,none)))))}.now-heading.-header.-tertiary,.now-heading.-title{font-size:var(--now-display-type_header--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))))}.now-heading.-title{margin-block-end:.5em}.now-heading.-title.-primary{color:RGB(var(--now-heading--title-primary--color,var(--now-display-type--subhead-primary--color,var(--now-display-type--primary--color,var(--now-display-type--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))));font-family:var(--now-heading--title-primary--font-family,var(--now-display-type--subhead-primary--font-family,var(--now-display-type--title-primary--font-family,var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-style:var(--now-heading--title-primary--font-style,var(--now-display-type--subhead-primary--font-style,var(--now-display-type--title-primary--font-style,var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-heading--title-primary--font-weight,var(--now-display-type--subhead-primary--font-weight,var(--now-display-type--title-primary--font-weight,var(--now-display-type--primary--font-weight,600))));text-transform:var(--now-heading--title-primary--text-transform,var(--now-display-type--subhead-primary--text-transform,var(--now-display-type--title-primary--text-transform,var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none)))))}.now-heading.-title.-secondary{color:RGB(var(--now-heading--title-secondary--color,var(--now-display-type--subhead-secondary--color,var(--now-display-type--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))));font-family:var(--now-heading--title-secondary--font-family,var(--now-display-type--subhead-secondary--font-family,var(--now-display-type--title-secondary--font-family,var(--now-display-type--secondary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-style:var(--now-heading--title-secondary--font-style,var(--now-display-type--subhead-secondary--font-style,var(--now-display-type--title-secondary--font-style,var(--now-display-type--secondary--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-heading--title-secondary--font-weight,var(--now-display-type--subhead-secondary--font-weight,var(--now-display-type--title-secondary--font-weight,var(--now-display-type--secondary--font-weight,var(--now-display-type--font-weight,normal)))));text-transform:var(--now-heading--title-secondary--text-transform,var(--now-display-type--subhead-secondary--text-transform,var(--now-display-type--title-secondary--text-transform,var(--now-display-type--secondary--text-transform,var(--now-display-type--text-transform,none)))))}.now-heading.-title.-tertiary{color:RGB(var(--now-heading--title-tertiary--color,var(--now-display-type--subhead-tertiary--color,var(--now-display-type--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))));font-family:var(--now-heading--title-tertiary--font-family,var(--now-display-type--subhead-tertiary--font-family,var(--now-display-type--title-tertiary--font-family,var(--now-display-type--tertiary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-style:var(--now-heading--title-tertiary--font-style,var(--now-display-type--subhead-tertiary--font-style,var(--now-display-type--title-tertiary--font-style,var(--now-display-type--tertiary--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-heading--title-tertiary--font-weight,var(--now-display-type--subhead-tertiary--font-weight,var(--now-display-type--title-tertiary--font-weight,var(--now-display-type--tertiary--font-weight,var(--now-display-type--font-weight,normal)))));text-transform:var(--now-heading--title-tertiary--text-transform,var(--now-display-type--subhead-tertiary--text-transform,var(--now-display-type--title-tertiary--text-transform,var(--now-display-type--tertiary--text-transform,var(--now-display-type--text-transform,none)))))}.now-heading.has-no-margin{margin-block-end:0}.now-heading.wont-wrap{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-heading.wont-wrap:after{content:\\\"\\\";display:block}.now-heading.-start{text-align:start}.now-heading.-center{text-align:center}.now-heading.-end{text-align:end}.now-heading.-justify{text-align:justify}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-highlighted-value{align-items:center;border-radius:var(--now-highlighted-value--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))));border-style:solid;border-width:var(--now-highlighted-value--border-width,var(--now-indicator--border-width,0));display:flex;font-family:var(--now-highlighted-value--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-style:var(--now-highlighted-value--font-style,var(--now-indicator--font-style,normal));font-variant:normal;font-weight:var(--now-highlighted-value--font-weight,var(--now-indicator--font-weight,normal));inline-size:inherit;justify-content:center;letter-spacing:inherit;min-inline-size:0;text-align:start;text-indent:0;text-shadow:none;text-transform:var(--now-highlighted-value--text-transform,var(--now-indicator--text-transform,none));white-space:normal;word-spacing:inherit}.now-highlighted-value.-sm{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-highlighted-value--scale-size-block, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);font-size:var(--now-indicator_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-highlighted-value--scale-size-block, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-highlighted-value--scale-size-inline, 1))}.now-highlighted-value.-sm .now-highlighted-value-icon{margin-inline-start:calc(-.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-highlighted-value.-md{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-highlighted-value--scale-size-block, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);font-size:var(--now-indicator_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-highlighted-value--scale-size-block, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-highlighted-value--scale-size-inline, 1))}.now-highlighted-value.-md .now-highlighted-value-icon{margin-inline-start:calc(-.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-highlighted-value.-primary{border-radius:var(--now-highlighted-value--primary--border-radius,var(--now-indicator--primary--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)))));border-width:var(--now-highlighted-value--primary--border-width,var(--now-indicator--primary--border-width,var(--now-indicator--border-width,0)));color:RGB(var(--now-highlighted-value--primary--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255))));font-family:var(--now-highlighted-value--primary--font-family,var(--now-indicator--primary--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-highlighted-value--primary--font-style,var(--now-indicator--primary--font-style,var(--now-indicator--font-style,normal)));font-weight:var(--now-highlighted-value--primary--font-weight,var(--now-indicator--primary--font-weight,var(--now-indicator--font-weight,normal)));text-transform:var(--now-highlighted-value--primary--text-transform,var(--now-indicator--primary--text-transform,var(--now-indicator--text-transform,none)))}.now-highlighted-value.-secondary{border-radius:var(--now-highlighted-value--secondary--border-radius,var(--now-indicator--secondary--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)))));border-width:var(--now-highlighted-value--secondary--border-width,var(--now-indicator--secondary--border-width,var(--now-indicator--border-width,0)));color:RGB(var(--now-highlighted-value--secondary--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-highlighted-value--secondary--font-family,var(--now-indicator--secondary--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-highlighted-value--secondary--font-style,var(--now-indicator--secondary--font-style,var(--now-indicator--font-style,normal)));font-weight:var(--now-highlighted-value--secondary--font-weight,var(--now-indicator--secondary--font-weight,var(--now-indicator--font-weight,normal)));text-transform:var(--now-highlighted-value--secondary--text-transform,var(--now-indicator--secondary--text-transform,var(--now-indicator--text-transform,none)))}.now-highlighted-value.-tertiary{border-radius:var(--now-highlighted-value--tertiary--border-radius,var(--now-indicator--tertiary--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)))));border-width:var(--now-highlighted-value--tertiary--border-width,var(--now-indicator--tertiary--border-width,var(--now-indicator--border-width,0)));color:RGB(var(--now-highlighted-value--tertiary--color,var(--now-indicator_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-highlighted-value--tertiary--font-family,var(--now-indicator--tertiary--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-highlighted-value--tertiary--font-style,var(--now-indicator--tertiary--font-style,var(--now-indicator--font-style,normal)));font-weight:var(--now-highlighted-value--tertiary--font-weight,var(--now-indicator--tertiary--font-weight,var(--now-indicator--font-weight,normal)));text-transform:var(--now-highlighted-value--tertiary--text-transform,var(--now-indicator--tertiary--text-transform,var(--now-indicator--text-transform,none)))}.now-highlighted-value.-critical.-primary{background-color:RGB(var(--now-highlighted-value--primary_critical--background-color,var(--now-indicator--primary_critical--background-color,var(--now-color_alert--critical-2,200,60,54))));border-color:RGB(var(--now-highlighted-value--primary_critical--border-color,var(--now-indicator--primary_critical--border-color,var(--now-color_alert--critical-3,160,48,43))));color:RGB(var(--now-highlighted-value--primary_critical--color,var(--now-indicator_label--primary_critical--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-critical.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_critical--color,var(--now-indicator_icon--primary_critical--color,var(--now-indicator_icon--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-critical.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_critical--background-color,var(--now-indicator--secondary_critical--background-color,var(--now-color_alert--critical-1,221,133,129))));border-color:RGB(var(--now-highlighted-value--secondary_critical--border-color,var(--now-indicator--secondary_critical--border-color,var(--now-color_alert--critical-2,200,60,54))));color:RGB(var(--now-highlighted-value--secondary_critical--color,var(--now-indicator_label--secondary_critical--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-critical.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_critical--color,var(--now-indicator_icon--secondary_critical--color,var(--now-color_alert--critical-4,120,36,32))))}.now-highlighted-value.-critical.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_critical--background-color,var(--now-indicator--tertiary_critical--background-color,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-highlighted-value--tertiary_critical--border-color,var(--now-indicator--tertiary_critical--border-color,var(--now-color_alert--critical-1,221,133,129))));color:RGB(var(--now-highlighted-value--tertiary_critical--color,var(--now-indicator_label--tertiary_critical--color,var(--now-indicator_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-critical.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_critical--color,var(--now-indicator_icon--tertiary_critical--color,var(--now-color_alert--critical-4,120,36,32))))}.now-highlighted-value.-high.-primary{background-color:RGB(var(--now-highlighted-value--primary_high--background-color,var(--now-indicator--primary_high--background-color,var(--now-color_alert--high-2,221,145,34))));border-color:RGB(var(--now-highlighted-value--primary_high--border-color,var(--now-indicator--primary_high--border-color,var(--now-color_alert--high-3,177,116,27))));color:RGB(var(--now-highlighted-value--primary_high--color,var(--now-indicator_label--primary_high--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-high.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_high--color,var(--now-indicator_icon--primary_high--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-high.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_high--background-color,var(--now-indicator--secondary_high--background-color,var(--now-color_alert--high-1,234,186,117))));border-color:RGB(var(--now-highlighted-value--secondary_high--border-color,var(--now-indicator--secondary_high--border-color,var(--now-color_alert--high-2,221,145,34))));color:RGB(var(--now-highlighted-value--secondary_high--color,var(--now-indicator_label--secondary_high--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-high.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_high--color,var(--now-indicator_icon--secondary_high--color,var(--now-color_alert--high-4,133,87,20))))}.now-highlighted-value.-high.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_high--background-color,var(--now-indicator--tertiary_high--background-color,var(--now-color_alert--high-0,247,228,200))));border-color:RGB(var(--now-highlighted-value--tertiary_high--border-color,var(--now-indicator--tertiary_high--border-color,var(--now-color_alert--high-1,234,186,117))));color:RGB(var(--now-highlighted-value--tertiary_high--color,var(--now-indicator_label--tertiary_high--color,var(--now-indicator_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-high.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_high--color,var(--now-indicator_icon--tertiary_high--color,var(--now-color_alert--high-4,133,87,20))))}.now-highlighted-value.-warning.-primary{background-color:RGB(var(--now-highlighted-value--primary_warning--background-color,var(--now-indicator--primary_warning--background-color,var(--now-color_alert--warning-2,210,195,0))));border-color:RGB(var(--now-highlighted-value--primary_warning--border-color,var(--now-indicator--primary_warning--border-color,var(--now-color_alert--warning-3,198,185,22))));color:RGB(var(--now-highlighted-value--primary_warning--color,var(--now-indicator_label--primary_warning--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-warning.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_warning--color,var(--now-indicator_icon--primary_warning--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-warning.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_warning--background-color,var(--now-indicator--secondary_warning--background-color,var(--now-color_alert--warning-1,227,218,96))));border-color:RGB(var(--now-highlighted-value--secondary_warning--border-color,var(--now-indicator--secondary_warning--border-color,var(--now-color_alert--warning-2,210,195,0))));color:RGB(var(--now-highlighted-value--secondary_warning--color,var(--now-indicator_label--secondary_warning--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-warning.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_warning--color,var(--now-indicator_icon--secondary_warning--color,var(--now-color_alert--warning-4,149,139,17))))}.now-highlighted-value.-warning.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_warning--background-color,var(--now-indicator--tertiary_warning--background-color,var(--now-color_alert--warning-0,244,240,191))));border-color:RGB(var(--now-highlighted-value--tertiary_warning--border-color,var(--now-indicator--tertiary_warning--border-color,var(--now-color_alert--warning-1,227,218,96))));color:RGB(var(--now-highlighted-value--tertiary_warning--color,var(--now-indicator_label--tertiary_warning--color,var(--now-indicator_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-warning.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_warning--color,var(--now-indicator_icon--tertiary_warning--color,var(--now-color_alert--warning-4,149,139,17))))}.now-highlighted-value.-moderate.-primary{background-color:RGB(var(--now-highlighted-value--primary_moderate--background-color,var(--now-indicator--primary_moderate--background-color,var(--now-color_alert--moderate-2,84,86,207))));border-color:RGB(var(--now-highlighted-value--primary_moderate--border-color,var(--now-indicator--primary_moderate--border-color,var(--now-color_alert--moderate-3,67,69,166))));color:RGB(var(--now-highlighted-value--primary_moderate--color,var(--now-indicator_label--primary_moderate--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-moderate.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_moderate--color,var(--now-indicator_icon--primary_moderate--color,var(--now-indicator_icon--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-moderate.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_moderate--background-color,var(--now-indicator--secondary_moderate--background-color,var(--now-color_alert--moderate-1,148,149,225))));border-color:RGB(var(--now-highlighted-value--secondary_moderate--border-color,var(--now-indicator--secondary_moderate--border-color,var(--now-color_alert--moderate-2,84,86,207))));color:RGB(var(--now-highlighted-value--secondary_moderate--color,var(--now-indicator_label--secondary_moderate--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-moderate.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_moderate--color,var(--now-indicator_icon--secondary_moderate--color,var(--now-color_alert--moderate-4,50,52,124))))}.now-highlighted-value.-moderate.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_moderate--background-color,var(--now-indicator--tertiary_moderate--background-color,var(--now-color_alert--moderate-0,212,213,243))));border-color:RGB(var(--now-highlighted-value--tertiary_moderate--border-color,var(--now-indicator--tertiary_moderate--border-color,var(--now-color_alert--moderate-1,148,149,225))));color:RGB(var(--now-highlighted-value--tertiary_moderate--color,var(--now-indicator_label--tertiary_moderate--color,var(--now-indicator_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-moderate.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_moderate--color,var(--now-indicator_icon--tertiary_moderate--color,var(--now-color_alert--moderate-4,50,52,124))))}.now-highlighted-value.-positive.-primary{background-color:RGB(var(--now-highlighted-value--primary_positive--background-color,var(--now-indicator--primary_positive--background-color,var(--now-color_alert--positive-2,37,131,43))));border-color:RGB(var(--now-highlighted-value--primary_positive--border-color,var(--now-indicator--primary_positive--border-color,var(--now-color_alert--positive-3,30,105,34))));color:RGB(var(--now-highlighted-value--primary_positive--color,var(--now-indicator_label--primary_positive--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-positive.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_positive--color,var(--now-indicator_icon--primary_positive--color,var(--now-indicator_icon--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-positive.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_positive--background-color,var(--now-indicator--secondary_positive--background-color,var(--now-color_alert--positive-1,119,178,123))));border-color:RGB(var(--now-highlighted-value--secondary_positive--border-color,var(--now-indicator--secondary_positive--border-color,var(--now-color_alert--positive-2,37,131,43))));color:RGB(var(--now-highlighted-value--secondary_positive--color,var(--now-indicator_label--secondary_positive--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-positive.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_positive--color,var(--now-indicator_icon--secondary_positive--color,var(--now-color_alert--positive-4,22,79,26))))}.now-highlighted-value.-positive.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_positive--background-color,var(--now-indicator--tertiary_positive--background-color,var(--now-color_alert--positive-0,201,224,202))));border-color:RGB(var(--now-highlighted-value--tertiary_positive--border-color,var(--now-indicator--tertiary_positive--border-color,var(--now-color_alert--positive-1,119,178,123))));color:RGB(var(--now-highlighted-value--tertiary_positive--color,var(--now-indicator_label--tertiary_positive--color,var(--now-indicator_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-positive.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_positive--color,var(--now-indicator_icon--tertiary_positive--color,var(--now-color_alert--positive-4,22,79,26))))}.now-highlighted-value.-info.-primary{background-color:RGB(var(--now-highlighted-value--primary_info--background-color,var(--now-indicator--primary_info--background-color,var(--now-color_alert--info-2,14,120,196))));border-color:RGB(var(--now-highlighted-value--primary_info--border-color,var(--now-indicator--primary_info--border-color,var(--now-color_alert--info-3,11,96,157))));color:RGB(var(--now-highlighted-value--primary_info--color,var(--now-indicator_label--primary_info--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-info.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_info--color,var(--now-indicator_icon--primary_info--color,var(--now-indicator_icon--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-info.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_info--background-color,var(--now-indicator--secondary_info--background-color,var(--now-color_alert--info-1,104,171,218))));border-color:RGB(var(--now-highlighted-value--secondary_info--border-color,var(--now-indicator--secondary_info--border-color,var(--now-color_alert--info-2,14,120,196))));color:RGB(var(--now-highlighted-value--secondary_info--color,var(--now-indicator_label--secondary_info--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-info.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_info--color,var(--now-indicator_icon--secondary_info--color,var(--now-color_alert--info-4,8,72,118))))}.now-highlighted-value.-info.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_info--background-color,var(--now-indicator--tertiary_info--background-color,var(--now-color_alert--info-0,195,221,240))));border-color:RGB(var(--now-highlighted-value--tertiary_info--border-color,var(--now-indicator--tertiary_info--border-color,var(--now-color_alert--info-1,104,171,218))));color:RGB(var(--now-highlighted-value--tertiary_info--color,var(--now-indicator_label--tertiary_info--color,var(--now-indicator_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-info.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_info--color,var(--now-indicator_icon--tertiary_info--color,var(--now-color_alert--info-4,8,72,118))))}.now-highlighted-value.-low.-primary{background-color:RGB(var(--now-highlighted-value--primary_low--background-color,var(--now-indicator--primary_low--background-color,var(--now-color_alert--low-2,102,102,102))));border-color:RGB(var(--now-highlighted-value--primary_low--border-color,var(--now-indicator--primary_low--border-color,var(--now-color_alert--low-3,82,82,82))));color:RGB(var(--now-highlighted-value--primary_low--color,var(--now-indicator_label--primary_low--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-low.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_low--color,var(--now-indicator_icon--primary_low--color,var(--now-indicator_icon--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-highlighted-value.-low.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_low--background-color,var(--now-indicator--secondary_low--background-color,var(--now-color_alert--low-1,159,159,159))));border-color:RGB(var(--now-highlighted-value--secondary_low--border-color,var(--now-indicator--secondary_low--border-color,var(--now-color_alert--low-2,102,102,102))));color:RGB(var(--now-highlighted-value--secondary_low--color,var(--now-indicator_label--secondary_low--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-low.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_low--color,var(--now-indicator_icon--secondary_low--color,var(--now-color_alert--low-4,61,61,61))))}.now-highlighted-value.-low.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_low--background-color,var(--now-indicator--tertiary_low--background-color,var(--now-color_alert--low-0,217,217,217))));border-color:RGB(var(--now-highlighted-value--tertiary_low--border-color,var(--now-indicator--tertiary_low--border-color,var(--now-color_alert--low-1,159,159,159))));color:RGB(var(--now-highlighted-value--tertiary_low--color,var(--now-indicator_label--tertiary_low--color,var(--now-indicator_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-low.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_low--color,var(--now-indicator_icon--tertiary_low--color,var(--now-color_alert--low-4,61,61,61))))}.now-highlighted-value.-magenta.-primary{background-color:RGB(var(--now-highlighted-value--primary_magenta--background-color,var(--now-indicator--primary_magenta--background-color,var(--now-color_grouped--magenta-2,203,121,193))));border-color:RGB(var(--now-highlighted-value--primary_magenta--border-color,var(--now-indicator--primary_magenta--border-color,var(--now-color_grouped--magenta-3,173,103,164))));color:RGB(var(--now-highlighted-value--primary_magenta--color,var(--now-indicator_label--primary_magenta--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-magenta.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_magenta--color,var(--now-indicator_icon--primary_magenta--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-magenta.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_magenta--background-color,var(--now-indicator--secondary_magenta--background-color,var(--now-color_grouped--magenta-1,221,168,215))));border-color:RGB(var(--now-highlighted-value--secondary_magenta--border-color,var(--now-indicator--secondary_magenta--border-color,var(--now-color_grouped--magenta-2,203,121,193))));color:RGB(var(--now-highlighted-value--secondary_magenta--color,var(--now-indicator_label--secondary_magenta--color,var(--now-color_grouped--magenta-5,112,67,106))))}.now-highlighted-value.-magenta.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_magenta--color,var(--now-indicator_icon--secondary_magenta--color,var(--now-color_grouped--magenta-5,112,67,106))))}.now-highlighted-value.-magenta.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_magenta--background-color,var(--now-indicator--tertiary_magenta--background-color,var(--now-color_grouped--magenta-0,239,215,236))));border-color:RGB(var(--now-highlighted-value--tertiary_magenta--border-color,var(--now-indicator--tertiary_magenta--border-color,var(--now-color_grouped--magenta-1,221,168,215))));color:RGB(var(--now-highlighted-value--tertiary_magenta--color,var(--now-indicator_label--tertiary_magenta--color,var(--now-color_grouped--magenta-5,112,67,106))))}.now-highlighted-value.-magenta.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_magenta--color,var(--now-indicator_icon--tertiary_magenta--color,var(--now-color_grouped--magenta-4,142,85,135))))}.now-highlighted-value.-pink.-primary{background-color:RGB(var(--now-highlighted-value--primary_pink--background-color,var(--now-indicator--primary_pink--background-color,var(--now-color_grouped--pink-2,203,121,143))));border-color:RGB(var(--now-highlighted-value--primary_pink--border-color,var(--now-indicator--primary_pink--border-color,var(--now-color_grouped--pink-3,173,103,122))));color:RGB(var(--now-highlighted-value--primary_pink--color,var(--now-indicator_label--primary_pink--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-pink.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_pink--color,var(--now-indicator_icon--primary_pink--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-pink.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_pink--background-color,var(--now-indicator--secondary_pink--background-color,var(--now-color_grouped--pink-1,221,168,182))));border-color:RGB(var(--now-highlighted-value--secondary_pink--border-color,var(--now-indicator--secondary_pink--border-color,var(--now-color_grouped--pink-2,203,121,143))));color:RGB(var(--now-highlighted-value--secondary_pink--color,var(--now-indicator_label--secondary_pink--color,var(--now-color_grouped--pink-5,112,67,79))))}.now-highlighted-value.-pink.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_pink--color,var(--now-indicator_icon--secondary_pink--color,var(--now-color_grouped--pink-5,112,67,79))))}.now-highlighted-value.-pink.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_pink--background-color,var(--now-indicator--tertiary_pink--background-color,var(--now-color_grouped--pink-0,239,215,221))));border-color:RGB(var(--now-highlighted-value--tertiary_pink--border-color,var(--now-indicator--tertiary_pink--border-color,var(--now-color_grouped--pink-1,221,168,182))));color:RGB(var(--now-highlighted-value--tertiary_pink--color,var(--now-indicator_label--tertiary_pink--color,var(--now-color_grouped--pink-5,112,67,79))))}.now-highlighted-value.-pink.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_pink--color,var(--now-indicator_icon--tertiary_pink--color,var(--now-color_grouped--pink-4,142,85,100))))}.now-highlighted-value.-orange.-primary{background-color:RGB(var(--now-highlighted-value--primary_orange--background-color,var(--now-indicator--primary_orange--background-color,var(--now-color_grouped--orange-2,215,129,106))));border-color:RGB(var(--now-highlighted-value--primary_orange--border-color,var(--now-indicator--primary_orange--border-color,var(--now-color_grouped--orange-3,183,110,90))));color:RGB(var(--now-highlighted-value--primary_orange--color,var(--now-indicator_label--primary_orange--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-orange.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_orange--color,var(--now-indicator_icon--primary_orange--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-orange.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_orange--background-color,var(--now-indicator--secondary_orange--background-color,var(--now-color_grouped--orange-1,229,173,158))));border-color:RGB(var(--now-highlighted-value--secondary_orange--border-color,var(--now-indicator--secondary_orange--border-color,var(--now-color_grouped--orange-2,215,129,106))));color:RGB(var(--now-highlighted-value--secondary_orange--color,var(--now-indicator_label--secondary_orange--color,var(--now-color_grouped--orange-5,118,71,58))))}.now-highlighted-value.-orange.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_orange--color,var(--now-indicator_icon--secondary_orange--color,var(--now-color_grouped--orange-5,118,71,58))))}.now-highlighted-value.-orange.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_orange--background-color,var(--now-indicator--tertiary_orange--background-color,var(--now-color_grouped--orange-0,243,217,210))));border-color:RGB(var(--now-highlighted-value--tertiary_orange--border-color,var(--now-indicator--tertiary_orange--border-color,var(--now-color_grouped--orange-1,229,173,158))));color:RGB(var(--now-highlighted-value--tertiary_orange--color,var(--now-indicator_label--tertiary_orange--color,var(--now-color_grouped--orange-5,118,71,58))))}.now-highlighted-value.-orange.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_orange--color,var(--now-indicator_icon--tertiary_orange--color,var(--now-color_grouped--orange-4,151,90,74))))}.now-highlighted-value.-yellow.-primary{background-color:RGB(var(--now-highlighted-value--primary_yellow--background-color,var(--now-indicator--primary_yellow--background-color,var(--now-color_grouped--yellow-2,240,207,101))));border-color:RGB(var(--now-highlighted-value--primary_yellow--border-color,var(--now-indicator--primary_yellow--border-color,var(--now-color_grouped--yellow-3,204,176,86))));color:RGB(var(--now-highlighted-value--primary_yellow--color,var(--now-indicator_label--primary_yellow--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-yellow.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_yellow--color,var(--now-indicator_icon--primary_yellow--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-yellow.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_yellow--background-color,var(--now-indicator--secondary_yellow--background-color,var(--now-color_grouped--yellow-1,245,224,155))));border-color:RGB(var(--now-highlighted-value--secondary_yellow--border-color,var(--now-indicator--secondary_yellow--border-color,var(--now-color_grouped--yellow-2,240,207,101))));color:RGB(var(--now-highlighted-value--secondary_yellow--color,var(--now-indicator_label--secondary_yellow--color,var(--now-color_grouped--yellow-5,132,114,56))))}.now-highlighted-value.-yellow.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_yellow--color,var(--now-indicator_icon--secondary_yellow--color,var(--now-color_grouped--yellow-5,132,114,56))))}.now-highlighted-value.-yellow.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_yellow--background-color,var(--now-indicator--tertiary_yellow--background-color,var(--now-color_grouped--yellow-0,251,241,209))));border-color:RGB(var(--now-highlighted-value--tertiary_yellow--border-color,var(--now-indicator--tertiary_yellow--border-color,var(--now-color_grouped--yellow-1,245,224,155))));color:RGB(var(--now-highlighted-value--tertiary_yellow--color,var(--now-indicator_label--tertiary_yellow--color,var(--now-color_grouped--yellow-5,132,114,56))))}.now-highlighted-value.-yellow.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_yellow--color,var(--now-indicator_icon--tertiary_yellow--color,var(--now-color_grouped--yellow-4,168,145,71))))}.now-highlighted-value.-brown.-primary{background-color:RGB(var(--now-highlighted-value--primary_brown--background-color,var(--now-indicator--primary_brown--background-color,var(--now-color_grouped--brown-2,156,138,119))));border-color:RGB(var(--now-highlighted-value--primary_brown--border-color,var(--now-indicator--primary_brown--border-color,var(--now-color_grouped--brown-3,133,117,101))));color:RGB(var(--now-highlighted-value--primary_brown--color,var(--now-indicator_label--primary_brown--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-brown.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_brown--color,var(--now-indicator_icon--primary_brown--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-brown.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_brown--background-color,var(--now-indicator--secondary_brown--background-color,var(--now-color_grouped--brown-1,191,179,167))));border-color:RGB(var(--now-highlighted-value--secondary_brown--border-color,var(--now-indicator--secondary_brown--border-color,var(--now-color_grouped--brown-2,156,138,119))));color:RGB(var(--now-highlighted-value--secondary_brown--color,var(--now-indicator_label--secondary_brown--color,var(--now-color_grouped--brown-5,86,76,66))))}.now-highlighted-value.-brown.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_brown--color,var(--now-indicator_icon--secondary_brown--color,var(--now-color_grouped--brown-5,86,76,66))))}.now-highlighted-value.-brown.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_brown--background-color,var(--now-indicator--tertiary_brown--background-color,var(--now-color_grouped--brown-0,225,220,214))));border-color:RGB(var(--now-highlighted-value--tertiary_brown--border-color,var(--now-indicator--tertiary_brown--border-color,var(--now-color_grouped--brown-1,191,179,167))));color:RGB(var(--now-highlighted-value--tertiary_brown--color,var(--now-indicator_label--tertiary_brown--color,var(--now-color_grouped--brown-5,86,76,66))))}.now-highlighted-value.-brown.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_brown--color,var(--now-indicator_icon--tertiary_brown--color,var(--now-color_grouped--brown-4,109,97,83))))}.now-highlighted-value.-green.-primary{background-color:RGB(var(--now-highlighted-value--primary_green--background-color,var(--now-indicator--primary_green--background-color,var(--now-color_grouped--green-2,147,170,125))));border-color:RGB(var(--now-highlighted-value--primary_green--border-color,var(--now-indicator--primary_green--border-color,var(--now-color_grouped--green-3,125,145,106))));color:RGB(var(--now-highlighted-value--primary_green--color,var(--now-indicator_label--primary_green--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-green.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_green--color,var(--now-indicator_icon--primary_green--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-green.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_green--background-color,var(--now-indicator--secondary_green--background-color,var(--now-color_grouped--green-1,185,200,171))));border-color:RGB(var(--now-highlighted-value--secondary_green--border-color,var(--now-indicator--secondary_green--border-color,var(--now-color_grouped--green-2,147,170,125))));color:RGB(var(--now-highlighted-value--secondary_green--color,var(--now-indicator_label--secondary_green--color,var(--now-color_grouped--green-5,81,94,69))))}.now-highlighted-value.-green.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_green--color,var(--now-indicator_icon--secondary_green--color,var(--now-color_grouped--green-5,81,94,69))))}.now-highlighted-value.-green.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_green--background-color,var(--now-indicator--tertiary_green--background-color,var(--now-color_grouped--green-0,223,230,216))));border-color:RGB(var(--now-highlighted-value--tertiary_green--border-color,var(--now-indicator--tertiary_green--border-color,var(--now-color_grouped--green-1,185,200,171))));color:RGB(var(--now-highlighted-value--tertiary_green--color,var(--now-indicator_label--tertiary_green--color,var(--now-color_grouped--green-5,81,94,69))))}.now-highlighted-value.-green.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_green--color,var(--now-indicator_icon--tertiary_green--color,var(--now-color_grouped--green-4,103,119,88))))}.now-highlighted-value.-green-yellow.-primary{background-color:RGB(var(--now-highlighted-value--primary_green-yellow--background-color,var(--now-indicator--primary_green-yellow--background-color,var(--now-color_grouped--green-yellow-2,154,173,94))));border-color:RGB(var(--now-highlighted-value--primary_green-yellow--border-color,var(--now-indicator--primary_green-yellow--border-color,var(--now-color_grouped--green-yellow-3,131,147,80))));color:RGB(var(--now-highlighted-value--primary_green-yellow--color,var(--now-indicator_label--primary_green-yellow--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-green-yellow.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_green-yellow--color,var(--now-indicator_icon--primary_green-yellow--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-green-yellow.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_green-yellow--background-color,var(--now-indicator--secondary_green-yellow--background-color,var(--now-color_grouped--green-yellow-1,189,202,150))));border-color:RGB(var(--now-highlighted-value--secondary_green-yellow--border-color,var(--now-indicator--secondary_green-yellow--border-color,var(--now-color_grouped--green-yellow-2,154,173,94))));color:RGB(var(--now-highlighted-value--secondary_green-yellow--color,var(--now-indicator_label--secondary_green-yellow--color,var(--now-color_grouped--green-yellow-5,85,95,52))))}.now-highlighted-value.-green-yellow.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_green-yellow--color,var(--now-indicator_icon--secondary_green-yellow--color,var(--now-color_grouped--green-yellow-5,85,95,52))))}.now-highlighted-value.-green-yellow.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_green-yellow--background-color,var(--now-indicator--tertiary_green-yellow--background-color,var(--now-color_grouped--green-yellow-0,225,230,207))));border-color:RGB(var(--now-highlighted-value--tertiary_green-yellow--border-color,var(--now-indicator--tertiary_green-yellow--border-color,var(--now-color_grouped--green-yellow-1,189,202,150))));color:RGB(var(--now-highlighted-value--tertiary_green-yellow--color,var(--now-indicator_label--tertiary_green-yellow--color,var(--now-color_grouped--green-yellow-5,85,95,52))))}.now-highlighted-value.-green-yellow.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_green-yellow--color,var(--now-indicator_icon--tertiary_green-yellow--color,var(--now-color_grouped--green-yellow-4,108,121,66))))}.now-highlighted-value.-blue.-primary{background-color:RGB(var(--now-highlighted-value--primary_blue--background-color,var(--now-indicator--primary_blue--background-color,var(--now-color_grouped--blue-2,120,176,204))));border-color:RGB(var(--now-highlighted-value--primary_blue--border-color,var(--now-indicator--primary_blue--border-color,var(--now-color_grouped--blue-3,102,150,173))));color:RGB(var(--now-highlighted-value--primary_blue--color,var(--now-indicator_label--primary_blue--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-blue.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_blue--color,var(--now-indicator_icon--primary_blue--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-blue.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_blue--background-color,var(--now-indicator--secondary_blue--background-color,var(--now-color_grouped--blue-1,167,204,222))));border-color:RGB(var(--now-highlighted-value--secondary_blue--border-color,var(--now-indicator--secondary_blue--border-color,var(--now-color_grouped--blue-2,120,176,204))));color:RGB(var(--now-highlighted-value--secondary_blue--color,var(--now-indicator_label--secondary_blue--color,var(--now-color_grouped--blue-5,66,97,112))))}.now-highlighted-value.-blue.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_blue--color,var(--now-indicator_icon--secondary_blue--color,var(--now-color_grouped--blue-5,66,97,112))))}.now-highlighted-value.-blue.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_blue--background-color,var(--now-indicator--tertiary_blue--background-color,var(--now-color_grouped--blue-0,215,231,240))));border-color:RGB(var(--now-highlighted-value--tertiary_blue--border-color,var(--now-indicator--tertiary_blue--border-color,var(--now-color_grouped--blue-1,167,204,222))));color:RGB(var(--now-highlighted-value--tertiary_blue--color,var(--now-indicator_label--tertiary_blue--color,var(--now-color_grouped--blue-5,66,97,112))))}.now-highlighted-value.-blue.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_blue--color,var(--now-indicator_icon--tertiary_blue--color,var(--now-color_grouped--blue-4,84,123,143))))}.now-highlighted-value.-gray.-primary{background-color:RGB(var(--now-highlighted-value--primary_gray--background-color,var(--now-indicator--primary_gray--background-color,var(--now-color_grouped--gray-2,139,145,150))));border-color:RGB(var(--now-highlighted-value--primary_gray--border-color,var(--now-indicator--primary_gray--border-color,var(--now-color_grouped--gray-3,118,123,128))));color:RGB(var(--now-highlighted-value--primary_gray--color,var(--now-indicator_label--primary_gray--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-gray.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_gray--color,var(--now-indicator_icon--primary_gray--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-gray.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_gray--background-color,var(--now-indicator--secondary_gray--background-color,var(--now-color_grouped--gray-1,180,184,187))));border-color:RGB(var(--now-highlighted-value--secondary_gray--border-color,var(--now-indicator--secondary_gray--border-color,var(--now-color_grouped--gray-2,139,145,150))));color:RGB(var(--now-highlighted-value--secondary_gray--color,var(--now-indicator_label--secondary_gray--color,var(--now-color_grouped--gray-5,77,80,83))))}.now-highlighted-value.-gray.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_gray--color,var(--now-indicator_icon--secondary_gray--color,var(--now-color_grouped--gray-5,77,80,83))))}.now-highlighted-value.-gray.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_gray--background-color,var(--now-indicator--tertiary_gray--background-color,var(--now-color_grouped--gray-0,220,222,224))));border-color:RGB(var(--now-highlighted-value--tertiary_gray--border-color,var(--now-indicator--tertiary_gray--border-color,var(--now-color_grouped--gray-1,180,184,187))));color:RGB(var(--now-highlighted-value--tertiary_gray--color,var(--now-indicator_label--tertiary_gray--color,var(--now-color_grouped--gray-5,77,80,83))))}.now-highlighted-value.-gray.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_gray--color,var(--now-indicator_icon--tertiary_gray--color,var(--now-color_grouped--gray-4,97,102,105))))}.now-highlighted-value.-teal.-primary{background-color:RGB(var(--now-highlighted-value--primary_teal--background-color,var(--now-indicator--primary_teal--background-color,var(--now-color_grouped--teal-2,104,174,163))));border-color:RGB(var(--now-highlighted-value--primary_teal--border-color,var(--now-indicator--primary_teal--border-color,var(--now-color_grouped--teal-3,88,148,139))));color:RGB(var(--now-highlighted-value--primary_teal--color,var(--now-indicator_label--primary_teal--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-teal.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_teal--color,var(--now-indicator_icon--primary_teal--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-teal.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_teal--background-color,var(--now-indicator--secondary_teal--background-color,var(--now-color_grouped--teal-1,157,202,195))));border-color:RGB(var(--now-highlighted-value--secondary_teal--border-color,var(--now-indicator--secondary_teal--border-color,var(--now-color_grouped--teal-2,104,174,163))));color:RGB(var(--now-highlighted-value--secondary_teal--color,var(--now-indicator_label--secondary_teal--color,var(--now-color_grouped--teal-5,57,96,90))))}.now-highlighted-value.-teal.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_teal--color,var(--now-indicator_icon--secondary_teal--color,var(--now-color_grouped--teal-5,57,96,90))))}.now-highlighted-value.-teal.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_teal--background-color,var(--now-indicator--tertiary_teal--background-color,var(--now-color_grouped--teal-0,210,231,227))));border-color:RGB(var(--now-highlighted-value--tertiary_teal--border-color,var(--now-indicator--tertiary_teal--border-color,var(--now-color_grouped--teal-1,157,202,195))));color:RGB(var(--now-highlighted-value--tertiary_teal--color,var(--now-indicator_label--tertiary_teal--color,var(--now-color_grouped--teal-5,57,96,90))))}.now-highlighted-value.-teal.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_teal--color,var(--now-indicator_icon--tertiary_teal--color,var(--now-color_grouped--teal-4,73,122,114))))}.now-highlighted-value.-purple.-primary{background-color:RGB(var(--now-highlighted-value--primary_purple--background-color,var(--now-indicator--primary_purple--background-color,var(--now-color_grouped--purple-2,181,155,209))));border-color:RGB(var(--now-highlighted-value--primary_purple--border-color,var(--now-indicator--primary_purple--border-color,var(--now-color_grouped--purple-3,154,132,178))));color:RGB(var(--now-highlighted-value--primary_purple--color,var(--now-indicator_label--primary_purple--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-purple.-primary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--primary_purple--color,var(--now-indicator_icon--primary_purple--color,var(--now-indicator_icon--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-highlighted-value.-purple.-secondary{background-color:RGB(var(--now-highlighted-value--secondary_purple--background-color,var(--now-indicator--secondary_purple--background-color,var(--now-color_grouped--purple-1,207,190,225))));border-color:RGB(var(--now-highlighted-value--secondary_purple--border-color,var(--now-indicator--secondary_purple--border-color,var(--now-color_grouped--purple-2,181,155,209))));color:RGB(var(--now-highlighted-value--secondary_purple--color,var(--now-indicator_label--secondary_purple--color,var(--now-color_grouped--purple-5,100,85,115))))}.now-highlighted-value.-purple.-secondary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--secondary_purple--color,var(--now-indicator_icon--secondary_purple--color,var(--now-color_grouped--purple-5,100,85,115))))}.now-highlighted-value.-purple.-tertiary{background-color:RGB(var(--now-highlighted-value--tertiary_purple--background-color,var(--now-indicator--tertiary_purple--background-color,var(--now-color_grouped--purple-0,233,225,241))));border-color:RGB(var(--now-highlighted-value--tertiary_purple--border-color,var(--now-indicator--tertiary_purple--border-color,var(--now-color_grouped--purple-1,207,190,225))));color:RGB(var(--now-highlighted-value--tertiary_purple--color,var(--now-indicator_label--tertiary_purple--color,var(--now-color_grouped--purple-5,100,85,115))))}.now-highlighted-value.-purple.-tertiary .now-highlighted-value-icon{color:RGB(var(--now-highlighted-value_icon--tertiary_purple--color,var(--now-indicator_icon--tertiary_purple--color,var(--now-color_grouped--purple-4,127,109,146))))}.now-highlighted-value.-itomonlydonotuse-nocpit0{background-color:hsla(0,74%,69%,.3)}.now-highlighted-value.-itomonlydonotuse-nocpit0 .now-highlighted-value-icon{color:#ea7575}.now-highlighted-value.-itomonlydonotuse-nocpit1{background-color:rgba(248,158,93,.3)}.now-highlighted-value.-itomonlydonotuse-nocpit1 .now-highlighted-value-icon{color:#f89e5d}.now-highlighted-value.-itomonlydonotuse-nocpit2{background-color:rgba(252,199,66,.3)}.now-highlighted-value.-itomonlydonotuse-nocpit2 .now-highlighted-value-icon{color:#fcc742}.now-highlighted-value.-itomonlydonotuse-nocpit3{background-color:rgba(82,182,237,.3)}.now-highlighted-value.-itomonlydonotuse-nocpit3 .now-highlighted-value-icon{color:#52b6ed}.now-highlighted-value.-itomonlydonotuse-nocpit4{background-color:rgba(17,182,154,.3)}.now-highlighted-value.-itomonlydonotuse-nocpit4 .now-highlighted-value-icon{color:#11b69a}.now-highlighted-value.will-wrap{block-size:auto;word-break:break-word}.now-highlighted-value-icon{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-highlighted-value-label{inline-size:100%}.now-highlighted-value-label.will-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-highlighted-value-label.will-truncate:after{content:\\\"\\\";display:block}@media(forced-colors:active){.now-highlighted-value{border:none;outline:1px solid canvastext}.now-highlighted-value .now-highlighted-value-label{color:canvastext;forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--now-line-height:0;color:inherit;display:inline-block;vertical-align:middle}.now-icon-animated{fill-rule:evenodd;fill:currentcolor}.now-icon-animated path{fill:currentcolor}.now-icon-animated.-sm{block-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-icon-animated.-md{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-icon-animated.-lg{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-icon-animated.-xl{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){svg{forced-color-adjust:auto}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--now-line-height:0;color:inherit;display:inline-block;vertical-align:middle}:host .-spin{animation:spin 2s linear infinite}@media(prefers-reduced-motion:reduce){:host .-spin{animation:none}}.now-icon{fill-rule:evenodd;fill:currentcolor}.now-icon.-sm{block-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-icon.-md{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-icon.-lg{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-icon.-xl{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}.now-icon.is-custom{object-fit:fill}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.now-icon-presence{fill-rule:evenodd;fill:currentcolor}.now-icon-presence.-available{color:RGB(var(--now-color_presence--available,75,166,107))}.now-icon-presence.-busy{color:RGB(var(--now-color_presence--busy,234,60,16))}.now-icon-presence.-away{color:RGB(var(--now-color_presence--away,226,121,24))}.now-icon-presence.-offline{color:RGB(var(--now-color_presence--offline,135,147,148))}@media(forced-colors:active){svg{forced-color-adjust:auto}.now-icon-presence{color:inherit!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".now-illustration-custom{margin:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:block}.now-illustration{align-items:center;block-size:100%;display:flex;justify-content:center;margin:0}.now-illustration-image{max-inline-size:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{display:block;inline-size:100%}img,picture{block-size:inherit;display:block;inline-size:inherit}img.-flip,picture.-flip{transform:scaleX(-1)}.now-image-link,picture{inline-size:100%}.now-image-link{display:block}.now-image-link:focus{box-shadow:0 0 0 1px RGB(var(--now-color--neutral-0,255,255,255)),0 0 0 3px RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-image-link:focus{outline:1px solid highlight}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,var(--now-form-control_message--border-radius,2px));border-style:solid;border-width:var(--now-form-field_message--border-width,var(--now-form-control_message--border-width,0));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-form-control_message--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-form-control_message--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_message--font-style,var(--now-form-control_message--font-style,var(--now-form-control--font-style,normal)));font-weight:var(--now-form-field_message--font-weight,var(--now-form-control_message--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,var(--now-form-control_message--text-transform,var(--now-form-control--text-transform,none)));word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-form-control_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-form-control_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129))));color:RGB(var(--now-form-field_message--critical--color,var(--now-form-control_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-control_message_icon--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-form-control_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191))));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-form-control_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96))));color:RGB(var(--now-form-field_message--warning--color,var(--now-form-control_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-control_message_icon--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-form-control_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202))));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-form-control_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123))));color:RGB(var(--now-form-field_message--positive--color,var(--now-form-control_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-control_message_icon--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-form-control_message--info--background-color,var(--now-color_alert--info-0,195,221,240))));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-form-control_message--info--border-color,var(--now-color_alert--info-1,104,171,218))));color:RGB(var(--now-form-field_message--info--color,var(--now-form-control_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-control_message_icon--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-form-control_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field_message--suggestion--background-color-alpha,var(--now-form-control_message--secondary--background-color-alpha,0)));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-form-control_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-form-control_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-control_message_icon--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.-vertical.will-wrap .now-form-field-label{align-items:end}.-horizontal.will-wrap .now-form-field-label{justify-content:center}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.will-wrap .now-form-field-label .now-form-field-label-text{word-break:break-word}.-horizontal:not(.will-wrap) .now-form-field-label,.-vertical:not(.will-wrap) .now-form-field-label{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after{content:\\\"\\\";display:block}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.will-wrap .now-form-field-label-end{flex-direction:column;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical.will-wrap .now-form-field-label-end{align-items:end}.-horizontal.will-wrap .now-form-field-label-end{align-items:start;justify-content:center}.now-form-field-label-start{display:flex}.-vertical .now-form-field-label-start ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-start ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-form-control_label--secondary--font-family,var(--now-form-control_label--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-form-control_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_label--font-style,var(--now-form-control_label--secondary--font-style,var(--now-form-control_label--font-style,var(--now-form-control--font-style,normal))));font-weight:var(--now-form-field_label--font-weight,var(--now-form-control_label--secondary--font-weight,var(--now-form-control_label--font-weight,var(--now-form-control--font-weight,normal))));line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,var(--now-form-control_label--secondary--text-transform,var(--now-form-control_label--text-transform,var(--now-form-control--text-transform,none))))}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-form-control_label--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{display:block;padding-block-end:calc(var(--now-line-height-crop--after)*1*-1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after,.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop+.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}:host{display:inline-block;margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-input{font-variant:normal;letter-spacing:inherit;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit}.now-input-field{background-color:RGB(var(--now-input--background-color,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-input--background-color-alpha,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-input--border-radius,var(--now-form-control-input--primary--border-radius,4px));border-width:var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0));position:relative}.-sm .now-input-field{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))),var(--now-input_inset--color-alpha,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.-sm .now-input-field:not(.is-disabled).has-hover,.-sm .now-input-field:not(.is-disabled):hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color--hover,var(--now-form-control-input_inner-shadow--primary--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-input_inset--color-alpha--hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.-sm .now-input-field.is-invalid{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color--invalid,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--invalid,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-sm .now-input-field.is-invalid.has-hover,.-sm .now-input-field.is-invalid.is-disabled:hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color--invalid_hover,var(--now-form-control-input_inner-shadow--primary--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-input_inset--color-alpha--invalid_hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-md .now-input-field{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))),var(--now-input_inset--color-alpha,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.-md .now-input-field:not(.is-disabled).has-hover,.-md .now-input-field:not(.is-disabled):hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--hover,var(--now-form-control-input_inner-shadow--primary--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-input_inset--color-alpha--hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.-md .now-input-field.is-invalid{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--invalid,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-md .now-input-field.is-invalid.has-hover,.-md .now-input-field.is-invalid.is-disabled:hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid_hover,var(--now-form-control-input_inner-shadow--primary--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-input_inset--color-alpha--invalid_hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-input-field:not(.is-disabled).has-hover,.now-input-field:not(.is-disabled):hover{background-color:RGB(var(--now-input--background-color--hover,var(--now-form-control-input--primary--background-color--hover,var(--now-color--primary-0,221,237,233))),var(--now-input--background-color-alpha--hover,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.now-input-field:not(.is-disabled).is-invalid.has-focus,.now-input-field:not(.is-disabled).is-invalid:focus,.now-input-field:not(.is-disabled).is-invalid:focus-within{background-color:RGB(var(--now-input--background-color--invalid_focus,var(--now-form-control-input--primary--background-color--invalid_focus,var(--now-form-control-input--primary--background-color--invalid,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))),var(--now-input--background-color-alpha--invalid_focus,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-sm .now-input-field:not(.is-disabled).is-invalid.has-focus,.-sm .now-input-field:not(.is-disabled).is-invalid:focus,.-sm .now-input-field:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))))),var(--now-input_inset--color-alpha--invalid_focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 calc(var(--now-form-field_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.-md .now-input-field:not(.is-disabled).is-invalid.has-focus,.-md .now-input-field:not(.is-disabled).is-invalid:focus,.-md .now-input-field:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))))),var(--now-input_inset--color-alpha--invalid_focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.now-input-field.is-invalid{background-color:RGB(var(--now-input--background-color--invalid,var(--now-form-control-input--primary--background-color--invalid,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-input--background-color-alpha--invalid,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.now-input-field.is-invalid.has-hover,.now-input-field.is-invalid.is-disabled:hover,.now-input-field.is-invalid:hover{background-color:RGB(var(--now-input--background-color--invalid_hover,var(--now-form-control-input--primary--background-color--invalid_hover,var(--now-color_alert--critical-0,241,206,205))),var(--now-input--background-color-alpha--invalid_hover,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-input-field.is-disabled{opacity:var(--now-input--opacity--disabled,var(--now-form-control-input--opacity--disabled,var(--now-form-control--opacity--disabled,.25)))}.-md .now-input-field.is-readonly,.-md .now-input-field.is-readonly.has-hover,.-md .now-input-field.is-readonly:hover,.-sm .now-input-field.is-readonly,.-sm .now-input-field.is-readonly.has-hover,.-sm .now-input-field.is-readonly:hover{background-color:RGB(var(--now-input--background-color--readonly,var(--now-form-control-input--primary--background-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-input--background-color-alpha--readonly,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--readonly,var(--now-form-control-input--primary--border-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-input--background-color-alpha--readonly,var(--now-form-control-input--background-color-alpha,1)));border-radius:var(--now-input--border-radius--readonly,var(--now-form-control-input--primary--border-radius,4px));border-width:var(--now-input--border-width--readonly,var(--now-form-control-input--primary--border-width,0));box-shadow:0 var(--now-input--border-block-end-width--readonly,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color--readonly,var(--now-form-control-input--primary--border-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))))}.now-input-field:not(.is-disabled).has-focus{background-color:RGB(var(--now-input--background-color--focus,var(--now-form-control-input--primary--background-color--focus,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-input--background-color-alpha--focus,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))))}.-sm .now-input-field:not(.is-disabled).has-focus{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--focus,var(--now-form-control-input_inner-shadow--primary--color--focus,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),0 0 0 calc(var(--now-form-field_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.-md .now-input-field:not(.is-disabled).has-focus{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--focus,var(--now-form-control-input_inner-shadow--primary--color--focus,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.now-input-native,.now-input-native-backdrop{background:none;block-size:100%;border:none;box-shadow:none;color:RGB(var(--now-input--color,var(--now-form-control_value--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-form-field--font-family,var(--now-form-control_value--primary--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-form-field--font-style,var(--now-form-control_value--primary--font-style,var(--now-form-control--font-style,normal)));font-variant:normal;font-weight:var(--now-form-field--font-weight,var(--now-form-control_value--primary--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;letter-spacing:inherit;line-height:1;margin:0;min-inline-size:0;outline:none;padding-block:0;padding-inline-start:0;text-indent:0;text-shadow:none;text-transform:var(--now-form-field--text-transform,var(--now-form-control_value--primary--text-transform,var(--now-form-control--text-transform,none)));white-space:normal;word-spacing:inherit}.-sm .now-input-native,.-sm .now-input-native-backdrop{font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))))}.-sm .now-input-native-backdrop[type=number],.-sm .now-input-native[type=number]{padding-inline-end:0}.-sm .now-input-native+.now-form-field-slot.-end,.-sm .now-input-native-backdrop+.now-form-field-slot.-end{padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-input-native,.-md .now-input-native-backdrop{font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))))}.-md .now-input-native+.now-form-field-slot.-end,.-md .now-input-native-backdrop+.now-form-field-slot.-end{padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-input-native-backdrop::placeholder,.now-input-native::placeholder{color:RGB(var(--now-input_placeholder--color,var(--now-form-control_value--placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))),.95);opacity:1}.now-input-native-backdrop[placeholder],.now-input-native[placeholder]{text-overflow:ellipsis}.has-focus .now-input-native-backdrop::placeholder,.has-focus .now-input-native::placeholder,.has-hover:not(.is-disabled) .now-input-native-backdrop::placeholder,.has-hover:not(.is-disabled) .now-input-native::placeholder,.is-invalid.has-focus .now-input-native-backdrop::placeholder,.is-invalid.has-focus .now-input-native::placeholder{color:RGB(var(--now-input_placeholder--color--hover,var(--now-form-control_value--placeholder--color--hover,var(--now-form-control_value--placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))),.85)}.is-readonly .now-input-native,.is-readonly .now-input-native-backdrop{color:RGB(var(--now-input--color--readonly,var(--now-form-control_value--color--readonly,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));cursor:not-allowed}.now-input-native-backdrop:disabled,.now-input-native:disabled{cursor:not-allowed}.now-input-native-backdrop[type=number],.now-input-native[type=number]{-webkit-appearance:textfield;appearance:textfield;text-align:end}.-start .now-input-native,.-start .now-input-native-backdrop{text-align:start}.-center .now-input-native,.-center .now-input-native-backdrop{text-align:center}.-end .now-input-native,.-end .now-input-native-backdrop{text-align:end}.now-input-native-backdrop[type=number]::-webkit-inner-spin-button,.now-input-native-backdrop[type=number]::-webkit-outer-spin-button,.now-input-native[type=number]::-webkit-inner-spin-button,.now-input-native[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.is-invalid .now-input-native,.is-invalid .now-input-native-backdrop{color:RGB(var(--now-input--color--invalid,var(--now-form-control_value--color--invalid,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-input-caret-container{inset-inline-start:-9999px;position:absolute}.now-input-native-container{block-size:100%;display:grid;grid-template-columns:1fr;inline-size:100%;position:relative}.now-input-native-container .now-input-native-backdrop{align-content:center;color:transparent;display:grid;inline-size:calc(100% - var(--now-input--border-width, var(--now-form-control-input--primary--border-width, 0px))*2);overflow-x:auto;scrollbar-width:none;white-space:pre;z-index:1}.now-input-native-container .now-input-native-backdrop::-webkit-scrollbar{display:none}.now-input-native-container .now-input-native{z-index:2}.now-input-native-container .now-input-native::selection{background-color:RGBA(var(--now-input--selection--background-color,var(--now-form-control_value--selection--background-color,var(--now-color--focus-1,77,160,176))),.9);color:RGB(var(--now-input--selection--color,var(--now-form-control_value--selection--color,var(--now-form-control_value--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-input-native-container .now-input-native,.now-input-native-container .now-input-native-backdrop{grid-column-start:1;grid-row-start:1}.now-input-native-selection{background-color:RGB(var(--now-input--selection--background-color,var(--now-form-control_value--selection--background-color,var(--now-color--focus-1,77,160,176))));color:transparent;padding-block:1px}.now-input-password-validation{color:RGB(var(--now-form-field_label--color,var(--now-form-control_label--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))));display:block;font-size:var(--now-form-control_message--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-input-password-validation.-valid{color:RGB(var(--now-form-field_label--color--valid,var(--now-form-control_label--color--valid,var(--now-color_alert--positive-3,30,105,34))))}.now-input-password-validation.-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.-sm .now-input-password-mask-button{margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-input-password-mask-button{margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-input{inline-size:100%;margin-block:0}.now-input-phone-dropdown{line-height:0}.-sm .now-input-phone-dropdown{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-input-phone-dropdown{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".now-form-field-message{border-radius:var(--now-form-field_message--border-radius,var(--now-form-control_message--border-radius,2px));border-style:solid;border-width:var(--now-form-field_message--border-width,var(--now-form-control_message--border-width,0));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-form-control_message--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-form-control_message--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_message--font-style,var(--now-form-control_message--font-style,var(--now-form-control--font-style,normal)));font-weight:var(--now-form-field_message--font-weight,var(--now-form-control_message--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,var(--now-form-control_message--text-transform,var(--now-form-control--text-transform,none)));word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-form-control_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-form-control_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129))));color:RGB(var(--now-form-field_message--critical--color,var(--now-form-control_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-control_message_icon--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-form-control_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191))));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-form-control_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96))));color:RGB(var(--now-form-field_message--warning--color,var(--now-form-control_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-control_message_icon--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-form-control_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202))));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-form-control_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123))));color:RGB(var(--now-form-field_message--positive--color,var(--now-form-control_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-control_message_icon--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-form-control_message--info--background-color,var(--now-color_alert--info-0,195,221,240))));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-form-control_message--info--border-color,var(--now-color_alert--info-1,104,171,218))));color:RGB(var(--now-form-field_message--info--color,var(--now-form-control_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-control_message_icon--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-form-control_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field_message--suggestion--background-color-alpha,var(--now-form-control_message--secondary--background-color-alpha,0)));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-form-control_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-form-control_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-control_message_icon--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.-vertical.will-wrap .now-form-field-label{align-items:end}.-horizontal.will-wrap .now-form-field-label{justify-content:center}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.will-wrap .now-form-field-label .now-form-field-label-text{word-break:break-word}.-horizontal:not(.will-wrap) .now-form-field-label,.-vertical:not(.will-wrap) .now-form-field-label{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after{content:\\\"\\\";display:block}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.will-wrap .now-form-field-label-end{flex-direction:column;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical.will-wrap .now-form-field-label-end{align-items:end}.-horizontal.will-wrap .now-form-field-label-end{align-items:start;justify-content:center}.now-form-field-label-start{display:flex}.-vertical .now-form-field-label-start ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-start ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-form-control_label--secondary--font-family,var(--now-form-control_label--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-form-control_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_label--font-style,var(--now-form-control_label--secondary--font-style,var(--now-form-control_label--font-style,var(--now-form-control--font-style,normal))));font-weight:var(--now-form-field_label--font-weight,var(--now-form-control_label--secondary--font-weight,var(--now-form-control_label--font-weight,var(--now-form-control--font-weight,normal))));line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,var(--now-form-control_label--secondary--text-transform,var(--now-form-control_label--text-transform,var(--now-form-control--text-transform,none))))}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-form-control_label--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{display:block;padding-block-end:calc(var(--now-line-height-crop--after)*1*-1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after,.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop+.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host{margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-input{font-variant:normal;letter-spacing:inherit;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit}.now-input-field{background-color:RGB(var(--now-input--background-color,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-input--background-color-alpha,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-input--border-radius,var(--now-form-control-input--primary--border-radius,4px));border-width:var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0));position:relative}.-sm .now-input-field{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))),var(--now-input_inset--color-alpha,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.-sm .now-input-field:not(.is-disabled).has-hover,.-sm .now-input-field:not(.is-disabled):hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color--hover,var(--now-form-control-input_inner-shadow--primary--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-input_inset--color-alpha--hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.-sm .now-input-field.is-invalid{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color--invalid,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--invalid,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-sm .now-input-field.is-invalid.has-hover,.-sm .now-input-field.is-invalid.is-disabled:hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color--invalid_hover,var(--now-form-control-input_inner-shadow--primary--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-input_inset--color-alpha--invalid_hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-md .now-input-field{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))),var(--now-input_inset--color-alpha,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.-md .now-input-field:not(.is-disabled).has-hover,.-md .now-input-field:not(.is-disabled):hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--hover,var(--now-form-control-input_inner-shadow--primary--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-input_inset--color-alpha--hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.-md .now-input-field.is-invalid{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--invalid,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-md .now-input-field.is-invalid.has-hover,.-md .now-input-field.is-invalid.is-disabled:hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid_hover,var(--now-form-control-input_inner-shadow--primary--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-input_inset--color-alpha--invalid_hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-input-field:not(.is-disabled).has-hover,.now-input-field:not(.is-disabled):hover{background-color:RGB(var(--now-input--background-color--hover,var(--now-form-control-input--primary--background-color--hover,var(--now-color--primary-0,221,237,233))),var(--now-input--background-color-alpha--hover,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.now-input-field:not(.is-disabled).is-invalid.has-focus,.now-input-field:not(.is-disabled).is-invalid:focus,.now-input-field:not(.is-disabled).is-invalid:focus-within{background-color:RGB(var(--now-input--background-color--invalid_focus,var(--now-form-control-input--primary--background-color--invalid_focus,var(--now-form-control-input--primary--background-color--invalid,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))),var(--now-input--background-color-alpha--invalid_focus,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-sm .now-input-field:not(.is-disabled).is-invalid.has-focus,.-sm .now-input-field:not(.is-disabled).is-invalid:focus,.-sm .now-input-field:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))))),var(--now-input_inset--color-alpha--invalid_focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 calc(var(--now-form-field_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.-md .now-input-field:not(.is-disabled).is-invalid.has-focus,.-md .now-input-field:not(.is-disabled).is-invalid:focus,.-md .now-input-field:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))))),var(--now-input_inset--color-alpha--invalid_focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.now-input-field.is-invalid{background-color:RGB(var(--now-input--background-color--invalid,var(--now-form-control-input--primary--background-color--invalid,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-input--background-color-alpha--invalid,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.now-input-field.is-invalid.has-hover,.now-input-field.is-invalid.is-disabled:hover,.now-input-field.is-invalid:hover{background-color:RGB(var(--now-input--background-color--invalid_hover,var(--now-form-control-input--primary--background-color--invalid_hover,var(--now-color_alert--critical-0,241,206,205))),var(--now-input--background-color-alpha--invalid_hover,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-input-field.is-disabled{opacity:var(--now-input--opacity--disabled,var(--now-form-control-input--opacity--disabled,var(--now-form-control--opacity--disabled,.25)))}.-md .now-input-field.is-readonly,.-md .now-input-field.is-readonly.has-hover,.-md .now-input-field.is-readonly:hover,.-sm .now-input-field.is-readonly,.-sm .now-input-field.is-readonly.has-hover,.-sm .now-input-field.is-readonly:hover{background-color:RGB(var(--now-input--background-color--readonly,var(--now-form-control-input--primary--background-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-input--background-color-alpha--readonly,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--readonly,var(--now-form-control-input--primary--border-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-input--background-color-alpha--readonly,var(--now-form-control-input--background-color-alpha,1)));border-radius:var(--now-input--border-radius--readonly,var(--now-form-control-input--primary--border-radius,4px));border-width:var(--now-input--border-width--readonly,var(--now-form-control-input--primary--border-width,0));box-shadow:0 var(--now-input--border-block-end-width--readonly,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color--readonly,var(--now-form-control-input--primary--border-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))))}.now-input-field:not(.is-disabled).has-focus{background-color:RGB(var(--now-input--background-color--focus,var(--now-form-control-input--primary--background-color--focus,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-input--background-color-alpha--focus,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))))}.-sm .now-input-field:not(.is-disabled).has-focus{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--focus,var(--now-form-control-input_inner-shadow--primary--color--focus,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),0 0 0 calc(var(--now-form-field_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.-md .now-input-field:not(.is-disabled).has-focus{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--focus,var(--now-form-control-input_inner-shadow--primary--color--focus,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.now-input-native,.now-input-native-backdrop{background:none;block-size:100%;border:none;box-shadow:none;color:RGB(var(--now-input--color,var(--now-form-control_value--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-form-field--font-family,var(--now-form-control_value--primary--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-form-field--font-style,var(--now-form-control_value--primary--font-style,var(--now-form-control--font-style,normal)));font-variant:normal;font-weight:var(--now-form-field--font-weight,var(--now-form-control_value--primary--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;letter-spacing:inherit;line-height:1;margin:0;min-inline-size:0;outline:none;padding-block:0;padding-inline-start:0;text-indent:0;text-shadow:none;text-transform:var(--now-form-field--text-transform,var(--now-form-control_value--primary--text-transform,var(--now-form-control--text-transform,none)));white-space:normal;word-spacing:inherit}.-sm .now-input-native,.-sm .now-input-native-backdrop{font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))))}.-sm .now-input-native-backdrop[type=number],.-sm .now-input-native[type=number]{padding-inline-end:0}.-sm .now-input-native+.now-form-field-slot.-end,.-sm .now-input-native-backdrop+.now-form-field-slot.-end{padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-input-native,.-md .now-input-native-backdrop{font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))))}.-md .now-input-native+.now-form-field-slot.-end,.-md .now-input-native-backdrop+.now-form-field-slot.-end{padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-input-native-backdrop::placeholder,.now-input-native::placeholder{color:RGB(var(--now-input_placeholder--color,var(--now-form-control_value--placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))),.95);opacity:1}.now-input-native-backdrop[placeholder],.now-input-native[placeholder]{text-overflow:ellipsis}.has-focus .now-input-native-backdrop::placeholder,.has-focus .now-input-native::placeholder,.has-hover:not(.is-disabled) .now-input-native-backdrop::placeholder,.has-hover:not(.is-disabled) .now-input-native::placeholder,.is-invalid.has-focus .now-input-native-backdrop::placeholder,.is-invalid.has-focus .now-input-native::placeholder{color:RGB(var(--now-input_placeholder--color--hover,var(--now-form-control_value--placeholder--color--hover,var(--now-form-control_value--placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))),.85)}.is-readonly .now-input-native,.is-readonly .now-input-native-backdrop{color:RGB(var(--now-input--color--readonly,var(--now-form-control_value--color--readonly,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));cursor:not-allowed}.now-input-native-backdrop:disabled,.now-input-native:disabled{cursor:not-allowed}.now-input-native-backdrop[type=number],.now-input-native[type=number]{-webkit-appearance:textfield;appearance:textfield;text-align:end}.-start .now-input-native,.-start .now-input-native-backdrop{text-align:start}.-center .now-input-native,.-center .now-input-native-backdrop{text-align:center}.-end .now-input-native,.-end .now-input-native-backdrop{text-align:end}.now-input-native-backdrop[type=number]::-webkit-inner-spin-button,.now-input-native-backdrop[type=number]::-webkit-outer-spin-button,.now-input-native[type=number]::-webkit-inner-spin-button,.now-input-native[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.is-invalid .now-input-native,.is-invalid .now-input-native-backdrop{color:RGB(var(--now-input--color--invalid,var(--now-form-control_value--color--invalid,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-input-caret-container{inset-inline-start:-9999px;position:absolute}.now-input-native-container{block-size:100%;display:grid;grid-template-columns:1fr;inline-size:100%;position:relative}.now-input-native-container .now-input-native-backdrop{align-content:center;color:transparent;display:grid;inline-size:calc(100% - var(--now-input--border-width, var(--now-form-control-input--primary--border-width, 0px))*2);overflow-x:auto;scrollbar-width:none;white-space:pre;z-index:1}.now-input-native-container .now-input-native-backdrop::-webkit-scrollbar{display:none}.now-input-native-container .now-input-native{z-index:2}.now-input-native-container .now-input-native::selection{background-color:RGBA(var(--now-input--selection--background-color,var(--now-form-control_value--selection--background-color,var(--now-color--focus-1,77,160,176))),.9);color:RGB(var(--now-input--selection--color,var(--now-form-control_value--selection--color,var(--now-form-control_value--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-input-native-container .now-input-native,.now-input-native-container .now-input-native-backdrop{grid-column-start:1;grid-row-start:1}.now-input-native-selection{background-color:RGB(var(--now-input--selection--background-color,var(--now-form-control_value--selection--background-color,var(--now-color--focus-1,77,160,176))));color:transparent;padding-block:1px}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host{--now-line-height:inherit;display:inline-block}.now-text-link{cursor:pointer;font-family:var(--now-text-link--font-family,inherit);font-style:var(--now-text-link--font-style,inherit);font-weight:var(--now-text-link--font-weight,inherit);text-decoration:none;text-transform:var(--now-text-link--text-transform,inherit)}.now-text-link::-moz-focus-inner{border-style:none}.now-text-link:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-text-link:focus{outline:1px solid highlight}}.now-text-link:active,.now-text-link:hover{text-decoration:underline}.now-text-link.-primary{color:RGB(var(--now-text-link--primary--color,var(--now-actionable_link_label--primary--color,var(--now-color--link-2,1,119,142))))}.now-text-link.-primary:hover{color:RGB(var(--now-text-link--primary--color--hover,var(--now-actionable_link_label--primary--color--hover,var(--now-color--link-3,1,104,124))))}.now-text-link.-primary:active{color:RGB(var(--now-text-link--primary--color--active,var(--now-actionable_link_label--primary--color--active,var(--now-color--link-4,1,89,107))))}.now-text-link.-secondary{color:RGB(var(--now-text-link--secondary--color,var(--now-actionable_link_label--secondary--color,var(--now-color--link-3,1,104,124))))}.now-text-link.-secondary:hover{color:RGB(var(--now-text-link--secondary--color--hover,var(--now-actionable_link_label--secondary--color--hover,var(--now-color--link-4,1,89,107))))}.now-text-link.-secondary:active{color:RGB(var(--now-text-link--secondary--color--active,var(--now-actionable_link_label--secondary--color--active,var(--now-color--neutral-18,22,27,28))))}.now-text-link.show-underline{text-decoration:underline}.now-text-link-icon{--now-line-height:inherit}.-primary .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--primary--color,var(--now-actionable_link_icon-start--primary--color,var(--now-color--link-2,1,119,142))))}.-primary:hover .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--primary--color--hover,var(--now-actionable_link_icon-start--primary--color--hover,var(--now-color--link-3,1,104,124))))}.-primary:active .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--primary--color--active,var(--now-actionable_link_icon-start--primary--color--active,var(--now-color--link-4,1,89,107))))}.-secondary .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--secondary--color,var(--now-actionable_link_icon-start--secondary--color,var(--now-color--link-3,1,104,124))))}.-secondary:hover .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--secondary--color--hover,var(--now-actionable_link_icon-start--secondary--color--hover,var(--now-color--link-4,1,89,107))))}.-secondary:active .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--secondary--color--active,var(--now-actionable_link_icon-start--secondary--color--active,var(--now-color--neutral-18,22,27,28))))}.-primary .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--primary--color,var(--now-actionable_link_icon-end--primary--color,var(--now-color--link-2,1,119,142))))}.-primary:hover .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--primary--color--hover,now-actionable_link_icon-end--primary--color--hover))}.-primary:active .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--primary--color--active,now-actionable_link_icon-end--primary--color--active))}.-secondary .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--secondary--color,var(--now-actionable_link_icon-end--secondary--color,var(--now-color--link-3,1,104,124))))}.-secondary:hover .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--secondary--color--hover,var(--now-actionable_link_icon-end--secondary--color--hover,var(--now-color--link-4,1,89,107))))}.-secondary:active .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--secondary--color--active,var(--now-actionable_link_icon-end--secondary--color--active,var(--now-color--neutral-18,22,27,28))))}@media(forced-colors:active){.now-text-link{text-decoration:underline}.now-text-link.show-tooltip{outline-offset:-1px}}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.now-input-url{align-items:center;display:flex;justify-content:space-between;padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1));padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-input-url.is-readonly{padding-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-input-url.is-disabled{cursor:not-allowed}.now-input-field.is-url{padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-input-url.now-input-field.is-readonly,.now-input-url.now-input-field:hover.is-readonly{background-color:transparent;border:none;box-shadow:none;padding-inline:0}.now-input-field.is-hidden,.now-input-url.is-hidden{display:none}.now-input-url-text-link{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-input-url-text-link:after{content:\\\"\\\";display:block}.-sm .now-input-url-text-link{font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333}.-md .now-input-url-text-link{font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.is-disabled .now-input-url-text-link{color:RGB(var(--now-text-link--primary--color,var(--now-actionable_link_label--primary--color,var(--now-color--link-2,1,119,142))));font-family:var(--now-text-link--font-family,inherit);font-style:var(--now-text-link--font-style,inherit);font-weight:var(--now-text-link--font-weight,inherit);text-decoration:underline;text-transform:var(--now-text-link--text-transform,inherit)}.-sm .now-input-url-button{margin-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-input-url-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,var(--now-form-control_message--border-radius,2px));border-style:solid;border-width:var(--now-form-field_message--border-width,var(--now-form-control_message--border-width,0));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-form-control_message--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-form-control_message--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_message--font-style,var(--now-form-control_message--font-style,var(--now-form-control--font-style,normal)));font-weight:var(--now-form-field_message--font-weight,var(--now-form-control_message--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,var(--now-form-control_message--text-transform,var(--now-form-control--text-transform,none)));word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-form-control_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-form-control_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129))));color:RGB(var(--now-form-field_message--critical--color,var(--now-form-control_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-control_message_icon--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-form-control_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191))));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-form-control_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96))));color:RGB(var(--now-form-field_message--warning--color,var(--now-form-control_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-control_message_icon--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-form-control_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202))));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-form-control_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123))));color:RGB(var(--now-form-field_message--positive--color,var(--now-form-control_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-control_message_icon--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-form-control_message--info--background-color,var(--now-color_alert--info-0,195,221,240))));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-form-control_message--info--border-color,var(--now-color_alert--info-1,104,171,218))));color:RGB(var(--now-form-field_message--info--color,var(--now-form-control_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-control_message_icon--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-form-control_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field_message--suggestion--background-color-alpha,var(--now-form-control_message--secondary--background-color-alpha,0)));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-form-control_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-form-control_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-control_message_icon--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.-vertical.will-wrap .now-form-field-label{align-items:end}.-horizontal.will-wrap .now-form-field-label{justify-content:center}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.will-wrap .now-form-field-label .now-form-field-label-text{word-break:break-word}.-horizontal:not(.will-wrap) .now-form-field-label,.-vertical:not(.will-wrap) .now-form-field-label{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after{content:\\\"\\\";display:block}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.will-wrap .now-form-field-label-end{flex-direction:column;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical.will-wrap .now-form-field-label-end{align-items:end}.-horizontal.will-wrap .now-form-field-label-end{align-items:start;justify-content:center}.now-form-field-label-start{display:flex}.-vertical .now-form-field-label-start ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-start ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-form-control_label--secondary--font-family,var(--now-form-control_label--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-form-control_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_label--font-style,var(--now-form-control_label--secondary--font-style,var(--now-form-control_label--font-style,var(--now-form-control--font-style,normal))));font-weight:var(--now-form-field_label--font-weight,var(--now-form-control_label--secondary--font-weight,var(--now-form-control_label--font-weight,var(--now-form-control--font-weight,normal))));line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,var(--now-form-control_label--secondary--text-transform,var(--now-form-control_label--text-transform,var(--now-form-control--text-transform,none))))}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-form-control_label--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{display:block;padding-block-end:calc(var(--now-line-height-crop--after)*1*-1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after,.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop+.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}:host{display:inline-block;margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-input{font-variant:normal;letter-spacing:inherit;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit}.now-input-field{background-color:RGB(var(--now-input--background-color,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-input--background-color-alpha,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-input--border-radius,var(--now-form-control-input--primary--border-radius,4px));border-width:var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0));position:relative}.-sm .now-input-field{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))),var(--now-input_inset--color-alpha,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.-sm .now-input-field:not(.is-disabled).has-hover,.-sm .now-input-field:not(.is-disabled):hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color--hover,var(--now-form-control-input_inner-shadow--primary--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-input_inset--color-alpha--hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.-sm .now-input-field.is-invalid{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color--invalid,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--invalid,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-sm .now-input-field.is-invalid.has-hover,.-sm .now-input-field.is-invalid.is-disabled:hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-input_inset--color--invalid_hover,var(--now-form-control-input_inner-shadow--primary--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-input_inset--color-alpha--invalid_hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-md .now-input-field{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))),var(--now-input_inset--color-alpha,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.-md .now-input-field:not(.is-disabled).has-hover,.-md .now-input-field:not(.is-disabled):hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--hover,var(--now-form-control-input_inner-shadow--primary--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-input_inset--color-alpha--hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.-md .now-input-field.is-invalid{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--invalid,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-input--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-md .now-input-field.is-invalid.has-hover,.-md .now-input-field.is-invalid.is-disabled:hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid_hover,var(--now-form-control-input_inner-shadow--primary--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-input_inset--color-alpha--invalid_hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-input-field:not(.is-disabled).has-hover,.now-input-field:not(.is-disabled):hover{background-color:RGB(var(--now-input--background-color--hover,var(--now-form-control-input--primary--background-color--hover,var(--now-color--primary-0,221,237,233))),var(--now-input--background-color-alpha--hover,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.now-input-field:not(.is-disabled).is-invalid.has-focus,.now-input-field:not(.is-disabled).is-invalid:focus,.now-input-field:not(.is-disabled).is-invalid:focus-within{background-color:RGB(var(--now-input--background-color--invalid_focus,var(--now-form-control-input--primary--background-color--invalid_focus,var(--now-form-control-input--primary--background-color--invalid,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))),var(--now-input--background-color-alpha--invalid_focus,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-sm .now-input-field:not(.is-disabled).is-invalid.has-focus,.-sm .now-input-field:not(.is-disabled).is-invalid:focus,.-sm .now-input-field:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))))),var(--now-input_inset--color-alpha--invalid_focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 calc(var(--now-form-field_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.-md .now-input-field:not(.is-disabled).is-invalid.has-focus,.-md .now-input-field:not(.is-disabled).is-invalid:focus,.-md .now-input-field:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))))),var(--now-input_inset--color-alpha--invalid_focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-input--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.now-input-field.is-invalid{background-color:RGB(var(--now-input--background-color--invalid,var(--now-form-control-input--primary--background-color--invalid,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-input--background-color-alpha--invalid,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.now-input-field.is-invalid.has-hover,.now-input-field.is-invalid.is-disabled:hover,.now-input-field.is-invalid:hover{background-color:RGB(var(--now-input--background-color--invalid_hover,var(--now-form-control-input--primary--background-color--invalid_hover,var(--now-color_alert--critical-0,241,206,205))),var(--now-input--background-color-alpha--invalid_hover,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-input-field.is-disabled{opacity:var(--now-input--opacity--disabled,var(--now-form-control-input--opacity--disabled,var(--now-form-control--opacity--disabled,.25)))}.-md .now-input-field.is-readonly,.-md .now-input-field.is-readonly.has-hover,.-md .now-input-field.is-readonly:hover,.-sm .now-input-field.is-readonly,.-sm .now-input-field.is-readonly.has-hover,.-sm .now-input-field.is-readonly:hover{background-color:RGB(var(--now-input--background-color--readonly,var(--now-form-control-input--primary--background-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-input--background-color-alpha--readonly,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--readonly,var(--now-form-control-input--primary--border-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-input--background-color-alpha--readonly,var(--now-form-control-input--background-color-alpha,1)));border-radius:var(--now-input--border-radius--readonly,var(--now-form-control-input--primary--border-radius,4px));border-width:var(--now-input--border-width--readonly,var(--now-form-control-input--primary--border-width,0));box-shadow:0 var(--now-input--border-block-end-width--readonly,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-input--border-color--readonly,var(--now-form-control-input--primary--border-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))))}.now-input-field:not(.is-disabled).has-focus{background-color:RGB(var(--now-input--background-color--focus,var(--now-form-control-input--primary--background-color--focus,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-input--background-color-alpha--focus,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))))}.-sm .now-input-field:not(.is-disabled).has-focus{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--focus,var(--now-form-control-input_inner-shadow--primary--color--focus,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),0 0 0 calc(var(--now-form-field_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.-md .now-input-field:not(.is-disabled).has-focus{box-shadow:0 calc(var(--now-input--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-input_inset--color--focus,var(--now-form-control-input_inner-shadow--primary--color--focus,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-input_inset--color-alpha--focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-input--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-input--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.now-input-native,.now-input-native-backdrop{background:none;block-size:100%;border:none;box-shadow:none;color:RGB(var(--now-input--color,var(--now-form-control_value--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-form-field--font-family,var(--now-form-control_value--primary--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-form-field--font-style,var(--now-form-control_value--primary--font-style,var(--now-form-control--font-style,normal)));font-variant:normal;font-weight:var(--now-form-field--font-weight,var(--now-form-control_value--primary--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;letter-spacing:inherit;line-height:1;margin:0;min-inline-size:0;outline:none;padding-block:0;padding-inline-start:0;text-indent:0;text-shadow:none;text-transform:var(--now-form-field--text-transform,var(--now-form-control_value--primary--text-transform,var(--now-form-control--text-transform,none)));white-space:normal;word-spacing:inherit}.-sm .now-input-native,.-sm .now-input-native-backdrop{font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))))}.-sm .now-input-native-backdrop[type=number],.-sm .now-input-native[type=number]{padding-inline-end:0}.-sm .now-input-native+.now-form-field-slot.-end,.-sm .now-input-native-backdrop+.now-form-field-slot.-end{padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-input-native,.-md .now-input-native-backdrop{font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))))}.-md .now-input-native+.now-form-field-slot.-end,.-md .now-input-native-backdrop+.now-form-field-slot.-end{padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-input-native-backdrop::placeholder,.now-input-native::placeholder{color:RGB(var(--now-input_placeholder--color,var(--now-form-control_value--placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))),.95);opacity:1}.now-input-native-backdrop[placeholder],.now-input-native[placeholder]{text-overflow:ellipsis}.has-focus .now-input-native-backdrop::placeholder,.has-focus .now-input-native::placeholder,.has-hover:not(.is-disabled) .now-input-native-backdrop::placeholder,.has-hover:not(.is-disabled) .now-input-native::placeholder,.is-invalid.has-focus .now-input-native-backdrop::placeholder,.is-invalid.has-focus .now-input-native::placeholder{color:RGB(var(--now-input_placeholder--color--hover,var(--now-form-control_value--placeholder--color--hover,var(--now-form-control_value--placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))),.85)}.is-readonly .now-input-native,.is-readonly .now-input-native-backdrop{color:RGB(var(--now-input--color--readonly,var(--now-form-control_value--color--readonly,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));cursor:not-allowed}.now-input-native-backdrop:disabled,.now-input-native:disabled{cursor:not-allowed}.now-input-native-backdrop[type=number],.now-input-native[type=number]{-webkit-appearance:textfield;appearance:textfield;text-align:end}.-start .now-input-native,.-start .now-input-native-backdrop{text-align:start}.-center .now-input-native,.-center .now-input-native-backdrop{text-align:center}.-end .now-input-native,.-end .now-input-native-backdrop{text-align:end}.now-input-native-backdrop[type=number]::-webkit-inner-spin-button,.now-input-native-backdrop[type=number]::-webkit-outer-spin-button,.now-input-native[type=number]::-webkit-inner-spin-button,.now-input-native[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.is-invalid .now-input-native,.is-invalid .now-input-native-backdrop{color:RGB(var(--now-input--color--invalid,var(--now-form-control_value--color--invalid,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-input-caret-container{inset-inline-start:-9999px;position:absolute}.now-input-native-container{block-size:100%;display:grid;grid-template-columns:1fr;inline-size:100%;position:relative}.now-input-native-container .now-input-native-backdrop{align-content:center;color:transparent;display:grid;inline-size:calc(100% - var(--now-input--border-width, var(--now-form-control-input--primary--border-width, 0px))*2);overflow-x:auto;scrollbar-width:none;white-space:pre;z-index:1}.now-input-native-container .now-input-native-backdrop::-webkit-scrollbar{display:none}.now-input-native-container .now-input-native{z-index:2}.now-input-native-container .now-input-native::selection{background-color:RGBA(var(--now-input--selection--background-color,var(--now-form-control_value--selection--background-color,var(--now-color--focus-1,77,160,176))),.9);color:RGB(var(--now-input--selection--color,var(--now-form-control_value--selection--color,var(--now-form-control_value--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-input-native-container .now-input-native,.now-input-native-container .now-input-native-backdrop{grid-column-start:1;grid-row-start:1}.now-input-native-selection{background-color:RGB(var(--now-input--selection--background-color,var(--now-form-control_value--selection--background-color,var(--now-color--focus-1,77,160,176))));color:transparent;padding-block:1px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".now-form-field-popover-content{font-size:var(--now-form-control_message--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover-ul{margin-block:0;margin-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:0}.now-form-field-popover-ul li:not(:last-child){margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--now-line-height:0;display:inline-block}:host([truncated]){inline-size:inherit}.now-label-value-inline{color:RGB(var(--now-label-value-inline--color,var(--now-display-type--body-inline--color,var(--now-display-type--body_label--color,var(--now-display-type_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))));font-family:var(--now-label-value-inline--font-family,var(--now-display-type--body-inline_label--font-family,var(--now-display-type--body_label--font-family,var(--now-display-type_label--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-label-value-inline--font-style,var(--now-display-type--body-inline_label--font-style,var(--now-display-type--body_label--font-style,var(--now-display-type_label--font-style,var(--now-display-type--font-style,normal)))));font-variant:normal;font-weight:var(--now-label-value-inline--font-weight,var(--now-display-type--body-inline_label--font-weight,var(--now-display-type--body_label--font-weight,var(--now-display-type_label--font-weight,var(--now-display-type--font-weight,normal)))));letter-spacing:inherit;line-height:1.3333;text-indent:0;text-shadow:none;text-transform:var(--now-label-value-inline--text-transform,var(--now-display-type--body-inline_label--text-transform,var(--now-display-type--body_label--text-transform,var(--now-display-type_label--text-transform,var(--now-display-type--text-transform,none)))));white-space:normal;word-spacing:inherit}.now-label-value-inline.will-truncate .now-label-value-pair{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-label-value-inline.will-truncate .now-label-value-pair:after{content:\\\"\\\";display:block}.now-label-value-inline-label{color:RGB(var(--now-label-value-inline_label--color,var(--now-display-type--body-inline_label--color,var(--now-display-type--body-inline--color,var(--now-display-type--body_label--color,var(--now-display-type_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))));font-family:var(--now-label-value-inline_label--font-family,var(--now-display-type--body-inline_label--font-family,var(--now-display-type--body_label--font-family,var(--now-display-type_label--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-size:var(--now-display-type_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-label-value-inline_label--font-style,var(--now-display-type--body-inline_label--font-style,var(--now-display-type--body_label--font-style,var(--now-display-type_label--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-label-value-inline_label--font-weight,var(--now-display-type--body-inline_label--font-weight,var(--now-display-type--body_label--font-weight,var(--now-display-type_label--font-weight,var(--now-display-type--font-weight,normal)))));line-height:1.3333;text-transform:var(--now-label-value-inline_label--text-transform,var(--now-display-type--body-inline_label--text-transform,var(--now-display-type--body_label--text-transform,var(--now-display-type_label--text-transform,var(--now-display-type--text-transform,none)))))}.now-label-value-inline-value{color:RGB(var(--now-label-value-inline_value--color,var(--now-display-type--body-inline_value--color,var(--now-display-type--body-inline--color,var(--now-display-type--body_label--color,var(--now-display-type_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))));font-family:var(--now-label-value-inline_value--font-family,var(--now-display-type--body-inline_value--font-family,var(--now-display-type--body_value--font-family,var(--now-display-type_value--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-size:var(--now-display-type_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-label-value-inline_value--font-style,var(--now-display-type--body-inline_value--font-style,var(--now-display-type--body_value--font-style,var(--now-display-type_value--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-label-value-inline_value--font-weight,var(--now-display-type--body-inline_value--font-weight,var(--now-display-type--body_value--font-weight,var(--now-display-type_value--font-weight,var(--now-display-type--font-weight,normal)))));line-height:1.3333;text-transform:var(--now-label-value-inline_value--text-transform,var(--now-display-type--body-inline_value--text-transform,var(--now-display-type--body_value--text-transform,var(--now-display-type_value--text-transform,var(--now-display-type--text-transform,none)))))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}:host{display:block}.now-label-value{margin-block:0;text-align:start;word-break:break-word}.now-label-value.-md .now-label-value-highlighted-value-parent{block-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value-previous{color:RGB(var(--now-label-value_previous--color,var(--now-display-type--body_previous--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))));display:inline;font-style:var(--now-label-value_previous--font-style,var(--now-display-type--body_previous--font-style,italic));font-weight:var(--now-label-value_previous--font-weight,var(--now-display-type--body_previous--font-weight,normal));text-decoration:var(--now-label-value_previous--text-decoration,var(--now-display-type--body_previous--text-decoration,line-through));text-transform:var(--now-label-value_previous--text-transform,var(--now-display-type--body_previous--text-transform,var(--now-display-type_value--text-transform,var(--now-display-type--text-transform,none))))}.now-label-value-previous-delimiter{font-weight:var(--now-label-value_previous_delimiter--font-weight,var(--now-display-type--body_previous_delimiter--font-weight,600))}.now-label-value-highlighted-value-parent{align-items:center;display:flex}.now-label-value-highlighted-value{--now-highlighted-value--height-scale:1;--now-highlighted-value--width-scale:1;inline-size:100%;max-inline-size:-moz-fit-content;max-inline-size:fit-content}.now-label-value.-stacked dt{color:RGB(var(--now-label-value-stacked_label--color,var(--now-display-type--body-stacked_label--color,var(--now-display-type--body_label--color,var(--now-display-type_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))));font-family:var(--now-label-value-stacked_label--font-family,var(--now-display-type--body-stacked_label--font-family,var(--now-display-type--body_label--font-family,var(--now-display-type_label--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-size:var(--now-display-type_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-label-value-stacked_label--font-style,var(--now-display-type--body-stacked_label--font-style,var(--now-display-type--body_label--font-style,var(--now-display-type_label--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-label-value-stacked_label--font-weight,var(--now-display-type--body-stacked_label--font-weight,var(--now-display-type--body_label--font-weight,var(--now-display-type_label--font-weight,var(--now-display-type--font-weight,normal)))));line-height:1.3333;text-transform:var(--now-label-value-stacked_label--text-transform,var(--now-display-type--body-stacked_label--text-transform,var(--now-display-type--body_label--text-transform,var(--now-display-type_label--text-transform,var(--now-display-type--text-transform,none)))))}.now-label-value.-stacked dd{color:RGB(var(--now-label-value-stacked_value--color,var(--now-display-type--body-stacked_value--color,var(--now-display-type--body_value--color,var(--now-display-type_value--color,var(--now-display-type--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))));font-family:var(--now-label-value-stacked_value--font-family,var(--now-display-type--body-stacked_value--font-family,var(--now-display-type--body_value--font-family,var(--now-display-type_value--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-style:var(--now-label-value-stacked_value--font-style,var(--now-display-type--body-stacked_value--font-style,var(--now-display-type--body_value--font-style,var(--now-display-type_value--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-label-value-stacked_value--font-weight,var(--now-display-type--body-stacked_value--font-weight,var(--now-display-type--body_value--font-weight,var(--now-display-type_value--font-weight,var(--now-display-type--font-weight,normal)))));margin-inline-start:0;text-transform:var(--now-label-value-stacked_value--text-transform,var(--now-display-type--body-stacked_value--text-transform,var(--now-display-type--body_value--text-transform,var(--now-display-type_value--text-transform,var(--now-display-type--text-transform,none)))))}.now-label-value.-stacked.-sm dd{font-size:var(--now-display-type_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333}.now-label-value.-stacked.-md dd{font-size:var(--now-display-type_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.now-label-value.-stacked.-sm.-horizontal dd>*{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.-vertical .now-label-value-pair:not(:last-child){margin-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.-vertical dd{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.-vertical dd>:not(:last-child){margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.-horizontal{display:flex;flex-wrap:wrap;margin-block-end:calc(-1rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.-horizontal .now-label-value-pair{margin-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:calc(3.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.-horizontal .now-label-value-pair:not(:last-child){margin-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.-horizontal dd{display:flex;flex-wrap:wrap}.now-label-value.-stacked.-horizontal dd>*{min-inline-size:0}.now-label-value.-stacked.-horizontal dd>:not(:last-child){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.-horizontal.-equal{grid-gap:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:grid;grid-template-columns:repeat(auto-fit,minmax(calc(3.125rem*var(--classicsponlydonotuse--rem-multipy)),1fr));margin-block-end:0}.now-label-value.-stacked.-horizontal.-equal .now-label-value-pair{margin-block-end:0;margin-inline-end:0}.now-label-value.-stacked.-horizontal.-sm dd{align-items:center}.now-label-value.-stacked.-horizontal.-md dd>*{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.will-truncate .now-label-value-pair{min-inline-size:calc(3.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-stacked.will-truncate .now-label-value-label,.now-label-value.-stacked.will-truncate .now-label-value-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-label-value.-stacked.will-truncate .now-label-value-label:after,.now-label-value.-stacked.will-truncate .now-label-value-value:after{content:\\\"\\\";display:block}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}:host{display:block}.now-label-value{margin-block:0;text-align:start;word-break:break-word}.now-label-value.-md .now-label-value-highlighted-value-parent{block-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value-previous{color:RGB(var(--now-label-value_previous--color,var(--now-display-type--body_previous--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))));display:inline;font-style:var(--now-label-value_previous--font-style,var(--now-display-type--body_previous--font-style,italic));font-weight:var(--now-label-value_previous--font-weight,var(--now-display-type--body_previous--font-weight,normal));text-decoration:var(--now-label-value_previous--text-decoration,var(--now-display-type--body_previous--text-decoration,line-through));text-transform:var(--now-label-value_previous--text-transform,var(--now-display-type--body_previous--text-transform,var(--now-display-type_value--text-transform,var(--now-display-type--text-transform,none))))}.now-label-value-previous-delimiter{font-weight:var(--now-label-value_previous_delimiter--font-weight,var(--now-display-type--body_previous_delimiter--font-weight,600))}.now-label-value-highlighted-value-parent{align-items:center;display:flex}.now-label-value-highlighted-value{--now-highlighted-value--height-scale:1;--now-highlighted-value--width-scale:1;inline-size:100%;max-inline-size:-moz-fit-content;max-inline-size:fit-content}.now-label-value.-tabbed{display:grid;gap:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy));grid-template-columns:fit-content(calc(50% - .25rem*var(--classicsponlydonotuse--rem-multipy))) minmax(0,auto)}.now-label-value.-tabbed.-sm dd,.now-label-value.-tabbed.-sm dt{line-height:1.3333}.now-label-value.-tabbed.-sm dt{font-size:var(--now-display-type_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))))}.now-label-value.-tabbed.-sm dd{font-size:var(--now-display-type_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))))}.now-label-value.-tabbed.-md dd,.now-label-value.-tabbed.-md dt{line-height:1.25}.now-label-value.-tabbed.-md dt{font-size:var(--now-display-type_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))))}.now-label-value.-tabbed.-md dd{font-size:var(--now-display-type_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))))}.now-label-value.-tabbed dt{color:RGB(var(--now-label-value-tabbed_label--color,var(--now-display-type--body-tabbed_label--color,var(--now-display-type--body_label--color,var(--now-display-type_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))));font-family:var(--now-label-value-tabbed_label--font-family,var(--now-display-type--body-tabbed_label--font-family,var(--now-display-type--body_label--font-family,var(--now-display-type_label--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-style:var(--now-label-value-tabbed_label--font-style,var(--now-display-type--body-tabbed_label--font-style,var(--now-display-type--body_label--font-style,var(--now-display-type_label--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-label-value-tabbed_label--font-weight,var(--now-display-type--body-tabbed_label--font-weight,var(--now-display-type--body_label--font-weight,var(--now-display-type_label--font-weight,var(--now-display-type--font-weight,normal)))));min-inline-size:0;text-transform:var(--now-label-value-tabbed_label--text-transform,var(--now-display-type--body-tabbed_label--text-transform,var(--now-display-type--body_label--text-transform,var(--now-display-type_label--text-transform,var(--now-display-type--text-transform,none)))))}.now-label-value.-tabbed dd{color:RGB(var(--now-label-value-tabbed_value--color,var(--now-display-type--body-tabbed_value--color,var(--now-display-type--body_value--color,var(--now-display-type_value--color,var(--now-display-type--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))));font-family:var(--now-label-value-tabbed_value--font-family,var(--now-display-type--body-tabbed_value--font-family,var(--now-display-type--body_value--font-family,var(--now-display-type_value--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-style:var(--now-label-value-tabbed_value--font-style,var(--now-display-type--body-tabbed_value--font-style,var(--now-display-type--body_value--font-style,var(--now-display-type_value--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-label-value-tabbed_value--font-weight,var(--now-display-type--body-tabbed_value--font-weight,var(--now-display-type--body_value--font-weight,var(--now-display-type_value--font-weight,var(--now-display-type--font-weight,normal)))));margin-inline-start:0;text-transform:var(--now-label-value-tabbed_value--text-transform,var(--now-display-type--body-tabbed_value--text-transform,var(--now-display-type--body_value--text-transform,var(--now-display-type_value--text-transform,var(--now-display-type--text-transform,none)))))}.now-label-value.-tabbed dd>:not(:last-child){margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-label-value.-tabbed.has-multiple{grid-template-columns:fit-content(calc(30% - .25rem*var(--classicsponlydonotuse--rem-multipy))) minmax(0,auto)}.now-label-value.-tabbed .now-label-value-label:not(.will-wrap){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-label-value.-tabbed .now-label-value-label:not(.will-wrap):after{content:\\\"\\\";display:block}.now-label-value.-tabbed .now-label-value-label.will-wrap{word-wrap:break-word}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"table{border-collapse:collapse;height:-moz-fit-content;height:fit-content;position:relative;table-layout:auto;text-align:start;width:100%}table,table div.html-icon{font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}table div.html-icon{--now-line-height:0;line-height:var(--now-line-height,1.25);vertical-align:middle}table div.html-icon>svg.now-icon{fill:currentcolor;fill-rule:evenodd}table div.html-icon>svg.now-icon.-sm{block-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy)/2)}table div.html-icon>svg.now-icon.-md{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2)}table div.html-icon svg.now-icon{color:inherit}table .drag-handle{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);block-size:auto;border-radius:var(--now-button-iconic--bare_primary--border-radius,var(--now-button-iconic--bare--border-radius,var(--now-button--bare--border-radius,var(--now-button--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button-iconic--bare_primary--border-width,var(--now-button-iconic--bare--border-width,var(--now-button--bare--border-width,0)));color:RGB(var(--now-button-iconic--bare_primary--color,var(--now-button--bare_primary--color,var(--now-color--primary-1,30,133,109))));cursor:grab;inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:auto;padding:0;vertical-align:middle}table .drag-handle,table .drag-handle:active,table .drag-handle:hover{background-color:transparent;border-color:transparent;border-width:0}table .drag-handle:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_primary--background-color--hover,var(--now-button--bare_primary--background-color--hover,var(--now-color--primary-2,23,100,82))),var(--now-button-iconic--bare_primary--background-color-alpha--hover,var(--now-button--bare_primary--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button-iconic--bare_primary--color--hover,var(--now-button--bare_primary--color--hover,var(--now-color--primary-2,23,100,82))))}table .drag-handle:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--bare_primary--background-color--active,var(--now-button--bare_primary--background-color--active,var(--now-color--primary-2,23,100,82))),var(--now-button-iconic--bare_primary--background-color-alpha--active,var(--now-button--bare_primary--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button-iconic--bare_primary--color--active,var(--now-button--bare_primary--color--active,var(--now-color--primary-3,15,67,55))))}table .drag-handle.is-disabled{opacity:var(--now-button-iconic--bare_primary--opacity--disabled,var(--now-button-iconic--bare--opacity--disabled,var(--now-button-iconic--opacity--disabled,var(--now-button--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))))}table .drag-handle.high-contrast{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color,var(--now-color--primary-2,23,100,82)))}table .drag-handle.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color--hover,var(--now-color--primary-3,15,67,55)))}table .drag-handle.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}table .group-row-toggle,table .group-toggle-all-button{align-items:center;block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);border-radius:var(--now-button-iconic--bare_tertiary--border-radius,var(--now-button-iconic--bare--border-radius,var(--now-button--bare--border-radius,var(--now-button--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button-iconic--bare_tertiary--border-width,var(--now-button-iconic--bare--border-width,var(--now-button--bare--border-width,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color,var(--now-button--bare_tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);justify-content:center}table .group-row-toggle,table .group-row-toggle:active,table .group-row-toggle:hover,table .group-toggle-all-button,table .group-toggle-all-button:active,table .group-toggle-all-button:hover{background-color:transparent;border-color:transparent;border-width:0}table .group-row-toggle:not(.is-disabled):hover,table .group-toggle-all-button:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--hover,var(--now-button--bare_tertiary--background-color--hover,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--background-color-alpha--hover,var(--now-button--bare_tertiary--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--hover,var(--now-button--bare_tertiary--border-color--hover,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--border-color-alpha--hover,var(--now-button--bare_tertiary--border-color-alpha--hover,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color--hover,var(--now-button--bare_tertiary--color--hover,var(--now-color--neutral-12,66,80,81))))}table .group-row-toggle:not(.is-disabled):active,table .group-toggle-all-button:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--active,var(--now-button--bare_tertiary--background-color--active,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--background-color-alpha--active,var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--active,var(--now-button--bare_tertiary--border-color--active,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--border-color-alpha--active,var(--now-button--bare_tertiary--border-color-alpha--active,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color--active,var(--now-button--bare_tertiary--color--active,var(--now-color--secondary-3,1,60,71))))}table .group-row-toggle.is-disabled,table .group-toggle-all-button.is-disabled{opacity:var(--now-button-iconic--bare_tertiary--opacity--disabled,var(--now-button-iconic--bare--opacity--disabled,var(--now-button-iconic--opacity--disabled,var(--now-button--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))))}table .group-row-toggle.high-contrast,table .group-toggle-all-button.high-contrast{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color,var(--now-button--bare_tertiary_high-contrast--color,var(--now-button--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}table .group-row-toggle.high-contrast:not(.is-disabled):hover,table .group-toggle-all-button.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--hover,var(--now-button--bare_tertiary_high-contrast--color--hover,var(--now-color--secondary-3,1,60,71))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--hover,var(--now-button--bare_tertiary_high-contrast--color-alpha--hover,var(--now-button--bare_tertiary_high-contrast--color-alpha,1))))}table .group-row-toggle.high-contrast:not(.is-disabled):active,table .group-toggle-all-button.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--active,var(--now-button--bare_tertiary_high-contrast--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--active,var(--now-button--bare_tertiary_high-contrast--color-alpha--active,var(--now-button--bare_tertiary_high-contrast--color-alpha,1))))}table .group-row-toggle .html-group-button,table .group-toggle-all-button .html-group-button{transition:all .15s ease}table .group-row-toggle .html-group-button[dir=rtl],table .group-toggle-all-button .html-group-button[dir=rtl]{transform:rotate(180deg)}table .group-row-toggle .html-group-button.group-expanded,table .group-row-toggle .html-group-button.groups-expanded,table .group-toggle-all-button .html-group-button.group-expanded,table .group-toggle-all-button .html-group-button.groups-expanded{transform:rotate(90deg)}table .group-row-toggle .html-group-button.group-expanded[dir=rtl],table .group-row-toggle .html-group-button.groups-expanded[dir=rtl],table .group-toggle-all-button .html-group-button.group-expanded[dir=rtl],table .group-toggle-all-button .html-group-button.groups-expanded[dir=rtl]{transform:rotate(-90deg)}table .row-actions-button{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);border-radius:var(--now-button-iconic--bare_tertiary--border-radius,var(--now-button-iconic--bare--border-radius,var(--now-button--bare--border-radius,var(--now-button--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button-iconic--bare_tertiary--border-width,var(--now-button-iconic--bare--border-width,var(--now-button--bare--border-width,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color,var(--now-button--bare_tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2)}table .row-actions-button,table .row-actions-button:active,table .row-actions-button:hover{background-color:transparent;border-color:transparent;border-width:0}table .row-actions-button:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--hover,var(--now-button--bare_tertiary--background-color--hover,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--background-color-alpha--hover,var(--now-button--bare_tertiary--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--hover,var(--now-button--bare_tertiary--border-color--hover,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--border-color-alpha--hover,var(--now-button--bare_tertiary--border-color-alpha--hover,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color--hover,var(--now-button--bare_tertiary--color--hover,var(--now-color--neutral-12,66,80,81))))}table .row-actions-button:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--active,var(--now-button--bare_tertiary--background-color--active,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--background-color-alpha--active,var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--active,var(--now-button--bare_tertiary--border-color--active,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--border-color-alpha--active,var(--now-button--bare_tertiary--border-color-alpha--active,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color--active,var(--now-button--bare_tertiary--color--active,var(--now-color--secondary-3,1,60,71))))}table .row-actions-button.is-disabled{opacity:var(--now-button-iconic--bare_tertiary--opacity--disabled,var(--now-button-iconic--bare--opacity--disabled,var(--now-button-iconic--opacity--disabled,var(--now-button--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))))}table .row-actions-button.high-contrast{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color,var(--now-button--bare_tertiary_high-contrast--color,var(--now-button--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}table .row-actions-button.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--hover,var(--now-button--bare_tertiary_high-contrast--color--hover,var(--now-color--secondary-3,1,60,71))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--hover,var(--now-button--bare_tertiary_high-contrast--color-alpha--hover,var(--now-button--bare_tertiary_high-contrast--color-alpha,1))))}table .row-actions-button.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--active,var(--now-button--bare_tertiary_high-contrast--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--active,var(--now-button--bare_tertiary_high-contrast--color-alpha--active,var(--now-button--bare_tertiary_high-contrast--color-alpha,1))))}table tr{height:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-grid-cell--scale-size-block, 1)*2.5rem*var(--classicsponlydonotuse--rem-multipy)/2);min-height:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-grid-cell--scale-size-block, 1)*2.5rem*var(--classicsponlydonotuse--rem-multipy)/2)}table tr now-icon,table tr svg.now-icon.-md{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}table tr now-icon.critical,table tr svg.now-icon.-md.critical{color:RGB(var(--now-color_alert--critical-4,120,36,32))}table tr now-icon.high,table tr svg.now-icon.-md.high{color:RGB(var(--now-color_alert--high-4,133,87,20))}table tr now-icon.warning,table tr svg.now-icon.-md.warning{color:RGB(var(--now-color_alert--warning-4,149,139,17))}table tr now-icon.moderate,table tr svg.now-icon.-md.moderate{color:RGB(var(--now-color_alert--moderate-4,50,52,124))}table tr now-icon.info,table tr svg.now-icon.-md.info{color:RGB(var(--now-color_alert--info-4,8,72,118))}table tr now-icon.positive,table tr svg.now-icon.-md.positive{color:RGB(var(--now-color_alert--positive-4,22,79,26))}table tr now-icon.low,table tr svg.now-icon.-md.low{color:RGB(var(--now-color_alert--low-4,61,61,61))}table td,table th{padding:0}table td::-moz-focus-inner,table th::-moz-focus-inner{border-style:none}table td:focus,table th:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){table td:focus,table th:focus{outline:1px solid highlight}}table td.text-align-default,table th.text-align-default{text-align:start}table td.text-align-center,table th.text-align-center{text-align:center}table td.text-align-inverse,table th.text-align-inverse{text-align:end}table td.column-active,table td:hover:not(.special-column-cell):not(.group-row-container):not(.skeleton-cell):not(.custom-row-content),table th.column-active,table th:hover:not(.special-column-cell):not(.group-row-container):not(.skeleton-cell):not(.custom-row-content){background:RGBA(var(--now-color--primary-1,30,133,109),var(--now-opacity--least,.1))}table td .include-large-padding,table th .include-large-padding{margin-inline-start:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}table td .include-small-padding,table th .include-small-padding{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}table td .large-grouped-row-indent,table th .large-grouped-row-indent{margin-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}table td .small-grouped-row-indent,table th .small-grouped-row-indent{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}table td .cell-content:not(.special-column-cell-content):not(.group-row-content),table th .cell-content:not(.special-column-cell-content):not(.group-row-content){flex-grow:1;margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));text-overflow:ellipsis}:host(:not([dir=rtl])) table td .cell-content:not(.special-column-cell-content):not(.group-row-content),:host(:not([dir=rtl])) table th .cell-content:not(.special-column-cell-content):not(.group-row-content),:root:not([dir=rtl]) table td .cell-content:not(.special-column-cell-content):not(.group-row-content),:root:not([dir=rtl]) table th .cell-content:not(.special-column-cell-content):not(.group-row-content){margin-left:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) table td .cell-content:not(.special-column-cell-content):not(.group-row-content),:host([dir=rtl]) table th .cell-content:not(.special-column-cell-content):not(.group-row-content),:root[dir=rtl] table td .cell-content:not(.special-column-cell-content):not(.group-row-content),:root[dir=rtl] table th .cell-content:not(.special-column-cell-content):not(.group-row-content){margin-right:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) table td .cell-content:not(.special-column-cell-content):not(.group-row-content),:host(:not([dir=rtl])) table th .cell-content:not(.special-column-cell-content):not(.group-row-content),:root:not([dir=rtl]) table td .cell-content:not(.special-column-cell-content):not(.group-row-content),:root:not([dir=rtl]) table th .cell-content:not(.special-column-cell-content):not(.group-row-content){margin-right:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) table td .cell-content:not(.special-column-cell-content):not(.group-row-content),:host([dir=rtl]) table th .cell-content:not(.special-column-cell-content):not(.group-row-content),:root[dir=rtl] table td .cell-content:not(.special-column-cell-content):not(.group-row-content),:root[dir=rtl] table th .cell-content:not(.special-column-cell-content):not(.group-row-content){margin-left:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}table td .cell-content:not(.special-column-cell-content):not(.group-row-content):not(.group-row-content):not(.custom-row-content),table th .cell-content:not(.special-column-cell-content):not(.group-row-content):not(.group-row-content):not(.custom-row-content){overflow:hidden}table td.special-column-cell,table th.special-column-cell{width:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}table td.special-column-cell .live-list-eyelash,table th.special-column-cell .live-list-eyelash{inset-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));inset-inline-start:calc(2rem*var(--classicsponlydonotuse--rem-multipy));position:absolute}table td.special-column-cell .header-cell-content,table td.special-column-cell .row-cell-content,table th.special-column-cell .header-cell-content,table th.special-column-cell .row-cell-content{max-width:max-content;min-width:max-content}table td .special-column-cell-content,table th .special-column-cell-content{align-items:center;display:flex;justify-content:center;overflow:visible;padding:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy));white-space:nowrap}table td .special-column-cell-content .row-cell-actions-button,table th .special-column-cell-content .row-cell-actions-button{margin-inline-end:unset}table td .row-drag,table th .row-drag{opacity:0}table td .row-drag .always-show,table th .row-drag .always-show{opacity:1}table th.column-active:not(.column-source-placeholder){box-shadow:inset 0 0 0 1px RGBA(var(--now-color--primary-1,30,133,109))}table tr.row-drag-clone td,table tr.row-drag-clone td:focus,table tr.row-drag-clone td:hover{background-color:RGB(var(--now-color--primary-0,221,237,233))!important;border-color:RGB(var(--now-color--primary-1,30,133,109));border-style:solid;border-width:1px 0;height:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-grid-cell--scale-size-block, 1)*2.5rem*var(--classicsponlydonotuse--rem-multipy)/2);opacity:1;text-align:center;vertical-align:middle}table tr.row-drag-clone td:first-child{border-inline-start-width:1px}table tr.row-drag-clone td:last-child{border-inline-end-width:1px}table td,table.truncate tr{line-height:1.25}@media(forced-colors:active){table{border-collapse:separate;border-spacing:0}}thead{background:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));inset-block-start:0;position:sticky;z-index:1}thead tr{box-sizing:border-box;display:table-row;line-height:20px}th,thead tr{white-space:nowrap}th button{display:inline-flex}th:focus .column-drag-drop-handle-wrapper,th:focus-within .column-drag-drop-handle-wrapper,th:hover .column-drag-drop-handle-wrapper{opacity:1}th .header-cell-content{display:flex;height:100%;text-overflow:ellipsis}th .header-cell-content .special-column-cell-content{align-items:center;display:flex}th .column-drag-drop-handle-wrapper{margin:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy));min-width:calc(1rem*var(--classicsponlydonotuse--rem-multipy));opacity:0}th .header-cell-content-child{align-items:center;display:flex;height:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-grid-cell--scale-size-block, 1)*2.5rem*var(--classicsponlydonotuse--rem-multipy)/2);width:100%}th .header-cell-aligned-items{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%}th .header-cell-aligned-items .header-cell-icon{display:inline-block}th .header-cell-text{background:inherit;border:inherit;color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)),var(--now-color--neutral-18,22,27,28),22,27,28);font-family:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap;word-spacing:inherit}th .header-cell-text.header-cell-text-button:focus,th .header-cell-text.header-cell-text-button:hover{cursor:pointer;text-decoration:underline}th .header-cell-button-label{display:inline-block;max-width:-moz-fit-content;max-width:fit-content;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}th .column-header-actions-button{align-items:center;block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);border-radius:var(--now-button-iconic--bare_tertiary--border-radius,var(--now-button-iconic--bare--border-radius,var(--now-button--bare--border-radius,var(--now-button--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button-iconic--bare_tertiary--border-width,var(--now-button-iconic--bare--border-width,var(--now-button--bare--border-width,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color,var(--now-button--bare_tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));cursor:pointer;inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);justify-content:center;margin:0;opacity:0;padding:0;vertical-align:middle}th .column-header-actions-button,th .column-header-actions-button:active,th .column-header-actions-button:hover{background-color:transparent;border-color:transparent;border-width:0}th .column-header-actions-button:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--hover,var(--now-button--bare_tertiary--background-color--hover,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--background-color-alpha--hover,var(--now-button--bare_tertiary--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--hover,var(--now-button--bare_tertiary--border-color--hover,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--border-color-alpha--hover,var(--now-button--bare_tertiary--border-color-alpha--hover,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color--hover,var(--now-button--bare_tertiary--color--hover,var(--now-color--neutral-12,66,80,81))))}th .column-header-actions-button:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--active,var(--now-button--bare_tertiary--background-color--active,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--background-color-alpha--active,var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--active,var(--now-button--bare_tertiary--border-color--active,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--border-color-alpha--active,var(--now-button--bare_tertiary--border-color-alpha--active,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color--active,var(--now-button--bare_tertiary--color--active,var(--now-color--secondary-3,1,60,71))))}th .column-header-actions-button.is-disabled{opacity:var(--now-button-iconic--bare_tertiary--opacity--disabled,var(--now-button-iconic--bare--opacity--disabled,var(--now-button-iconic--opacity--disabled,var(--now-button--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))))}th .column-header-actions-button.high-contrast{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color,var(--now-button--bare_tertiary_high-contrast--color,var(--now-button--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}th .column-header-actions-button.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--hover,var(--now-button--bare_tertiary_high-contrast--color--hover,var(--now-color--secondary-3,1,60,71))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--hover,var(--now-button--bare_tertiary_high-contrast--color-alpha--hover,var(--now-button--bare_tertiary_high-contrast--color-alpha,1))))}th .column-header-actions-button.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--active,var(--now-button--bare_tertiary_high-contrast--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--active,var(--now-button--bare_tertiary_high-contrast--color-alpha--active,var(--now-button--bare_tertiary_high-contrast--color-alpha,1))))}th .column-header-actions-button:not(.drag-handle){min-inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2)}th .column-header-actions-button:focus,th .column-header-actions-button:hover{opacity:1}th .column-header-actions-button:hover{border-color:RGB(var(--now-button--secondary--border-color--hover));border-style:solid;border-width:var(--now-button--secondary--border-width,var(--now-button--border-width,var(--now-actionable--border-width,1px)))}th .column-header-actions-button.active-popover-trigger{background-color:RGBA(var(--now-button--bare_tertiary--background-color--active,var(--now-color--neutral-12,66,80,81)),var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-opacity--less,.25)));color:RGB(var(--now-button--bare_tertiary--color--active,var(--now-color--secondary-3,1,60,71)));opacity:1}th:focus-within:not(.special-column-cell){background:RGBA(var(--now-color--primary-1,30,133,109),var(--now-opacity--least,.1))}th.text-align-default .header-cell-aligned-items{justify-content:start}th.text-align-center .header-cell-aligned-items{justify-content:center}th.text-align-inverse .header-cell-aligned-items{justify-content:end}th .resize-slider-container{align-items:stretch;box-shadow:inset -1px 0 RGB(var(--now-color_chrome--divider-2,118,132,133));justify-content:flex-end;opacity:0;z-index:1}th .resize-slider-container,th .resize-slider-container .resize-slider{display:flex;width:calc(.375rem*var(--classicsponlydonotuse--rem-multipy))}th .resize-slider-container .resize-slider{align-self:stretch;background:RGB(var(--now-color_chrome--divider-2,118,132,133));cursor:col-resize;justify-content:center;opacity:inherit;outline:none}th .resize-slider-container .resize-slider.active{background:RGB(var(--now-color_chrome--divider-2,118,132,133));opacity:1}th .resize-slider-container .resize-slider-guide{background:RGB(var(--now-color_chrome--divider-2,118,132,133));height:100%;inset-block-start:0;position:absolute;width:1px;z-index:-1}th .resize-slider-container:active,th .resize-slider-container:focus,th .resize-slider-container:hover{opacity:1}.parent-col-cell-content{inset-inline-start:0;position:sticky}.column-drop-area-divider{background-color:RGB(var(--now-color--primary-1,30,133,109));inset-block-start:0;position:absolute;width:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.always-show .column-drag-drop-handle-wrapper .column-drag-handle now-button-iconic,.always-show .column-header-actions-button,.always-show .resize-slider-container{opacity:1}@media(forced-colors:active){.header-cell:focus,.header-cell:hover{border:1px solid Highlight;outline:none}.header-cell:focus .header-cell-text,.header-cell:hover .header-cell-text{border:1px solid buttonborder}.header-cell .header-cell-text:focus,.header-cell .header-cell-text:hover{border:1px solid Highlight;color:Highlight}.column-drop-area-divider{background-color:Highlight}}.column-filtering-row{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));text-overflow:ellipsis;vertical-align:bottom}.column-filtering-row .column-filtering-label-cell .column-filtering-label-cell-content{align-items:center;display:flex;flex-flow:row wrap;float:inline-end;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));justify-content:flex-end;padding:0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0}.column-filtering-row .column-filtering-cell{min-width:144px}.column-filtering-row .column-filtering-cell .column-filtering-cell-content.cell-content{align-items:flex-start;display:flex;flex-direction:column;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));justify-content:center;margin-block-end:calc(.375rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.column-filtering-row .column-filtering-cell .column-filtering-cell-content.cell-content .column-filtering-operator-dropdown{margin:0}.column-filtering-row .column-filtering-cell .column-filtering-cell-content.cell-content .choice-filter-text,.column-filtering-row .column-filtering-cell .column-filtering-cell-content.cell-content .custom-top-text{height:24px;overflow:hidden;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0;text-overflow:ellipsis;white-space:nowrap;width:-webkit-fill-available;width:stretch}.column-filtering-row .column-filtering-cell .column-filtering-cell-content.cell-content .column-filtering-bottom-container{display:flex;flex-direction:row;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.column-filtering-row .column-filtering-cell .column-filtering-cell-content.cell-content .column-filtering-value-input{flex:1;margin:0}.column-filtering-row .column-filtering-cell .column-filtering-cell-content.cell-content now-button{width:100%}tbody .row-drag-dest-placeholder{border:2px solid RGB(var(--now-color--primary-1,30,133,109));height:1px}tr{outline:none;position:relative;transition:display .2s ease}tr::-moz-focus-inner{border-style:none}tr:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){tr:focus{outline:1px solid highlight}}tr.is-hidden{display:none}tr.virtualized-list{height:64px}tr:not(.is-shade-alternate-rows-off):not(.is-checked):not(.is-highlighted).is-odd{background:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))}tr:not(.is-shade-alternate-rows-off):not(.is-checked):not(.is-highlighted).is-even{background:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))}tr.is-shade-alternate-rows-off{border-block-start:1px solid RGB(var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)))}tr.is-checked,tr.is-highlighted{background:RGB(var(--now-color--primary-1,30,133,109),var(--now-opacity--less,.25))}tr.is-checked.is-highlighted{background:RGB(var(--now-color--primary-1,30,133,109),calc(var(--now-opacity--least, .1) + var(--now-opacity--less, .25)))}tr.is-active:not(.is-checked){background:RGB(var(--now-color--primary-1,30,133,109),var(--now-opacity--least,.1))}tr.is-active.is-highlighted{background:RGB(var(--now-color--primary-1,30,133,109),calc(var(--now-opacity--least, .1) + var(--now-opacity--less, .25)))}tr.grouped-row{background:RGB(var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))}tr.row-drag-src-placeholder{background:RGBA(var(--now-color--primary-1,30,133,109),var(--now-opacity--least,.1))}tr.loader-row .loader-cell{overflow:unset}tr.loader-row .loader-cell .custom-cell-loader{inset-inline-start:0;justify-content:start;padding-inline-start:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy));position:sticky;width:max-content}td.cell-selected{background:RGBA(var(--now-color--primary-1,30,133,109),var(--now-opacity--least,.1))}td.top-side-border{box-shadow:inset 0 1px 0 0 RGB(var(--now-color--primary-1,30,133,109)),inset 1px 0 0 0 RGB(var(--now-color--primary-1,30,133,109)),inset -1px 0 0 0 RGB(var(--now-color--primary-1,30,133,109))}td.bottom-side-border{box-shadow:inset 0 -1px 0 0 RGB(var(--now-color--primary-1,30,133,109)),inset 1px 0 0 0 RGB(var(--now-color--primary-1,30,133,109)),inset -1px 0 0 0 RGB(var(--now-color--primary-1,30,133,109))}td.side-border{box-shadow:inset 1px 0 0 0 RGB(var(--now-color--primary-1,30,133,109)),inset -1px 0 0 0 RGB(var(--now-color--primary-1,30,133,109))}td.top-bottom-side-border{box-shadow:inset 0 1px 0 0 RGB(var(--now-color--primary-1,30,133,109)),inset 0 -1px 0 0 RGB(var(--now-color--primary-1,30,133,109)),inset 1px 0 0 0 RGB(var(--now-color--primary-1,30,133,109)),inset -1px 0 0 0 RGB(var(--now-color--primary-1,30,133,109))}td{position:relative}td:not(.group-row-container):not(.custom-row-content){overflow:hidden}td:focus .row-cell-actions-button:not(:disabled),td:hover .row-cell-actions-button:not(:disabled){opacity:1}td:first-child.is-group-opened:before{border-start-start-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));content:\\\"\\\";height:100%;inset-block-start:0;position:absolute}:host(:not([dir=rtl])) td:first-child.is-group-opened:before,:root:not([dir=rtl]) td:first-child.is-group-opened:before{border-left:4px solid RGB(var(--now-color_alert--info-3,11,96,157))}:host([dir=rtl]) td:first-child.is-group-opened:before,:root[dir=rtl] td:first-child.is-group-opened:before{border-right:4px solid RGB(var(--now-color_alert--info-3,11,96,157))}:host(:not([dir=rtl])) td:first-child.is-group-opened:before,:root:not([dir=rtl]) td:first-child.is-group-opened:before{left:0}:host([dir=rtl]) td:first-child.is-group-opened:before,:root[dir=rtl] td:first-child.is-group-opened:before{right:0}td:first-child.is-group-closed:before{border-end-end-radius:0;border-end-start-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));border-start-end-radius:0;border-start-start-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));content:\\\"\\\";height:100%;inset-block-start:0;position:absolute}:host(:not([dir=rtl])) td:first-child.is-group-closed:before,:root:not([dir=rtl]) td:first-child.is-group-closed:before{border-left:4px solid RGB(var(--now-color_alert--info-3,11,96,157))}:host([dir=rtl]) td:first-child.is-group-closed:before,:root[dir=rtl] td:first-child.is-group-closed:before{border-right:4px solid RGB(var(--now-color_alert--info-3,11,96,157))}:host(:not([dir=rtl])) td:first-child.is-group-closed:before,:root:not([dir=rtl]) td:first-child.is-group-closed:before{left:0}:host([dir=rtl]) td:first-child.is-group-closed:before,:root[dir=rtl] td:first-child.is-group-closed:before{right:0}td:first-child.is-child-row:before{content:\\\"\\\";height:100%;inset-block-start:0;position:absolute}:host(:not([dir=rtl])) td:first-child.is-child-row:before,:root:not([dir=rtl]) td:first-child.is-child-row:before{border-left:4px solid RGB(var(--now-color_alert--info-3,11,96,157))}:host([dir=rtl]) td:first-child.is-child-row:before,:root[dir=rtl] td:first-child.is-child-row:before{border-right:4px solid RGB(var(--now-color_alert--info-3,11,96,157))}:host(:not([dir=rtl])) td:first-child.is-child-row:before,:root:not([dir=rtl]) td:first-child.is-child-row:before{left:0}:host([dir=rtl]) td:first-child.is-child-row:before,:root[dir=rtl] td:first-child.is-child-row:before{right:0}td:first-child.is-last-child-row:before{border-end-start-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));content:\\\"\\\";height:100%;inset-block-start:0;position:absolute}:host(:not([dir=rtl])) td:first-child.is-last-child-row:before,:root:not([dir=rtl]) td:first-child.is-last-child-row:before{border-left:4px solid RGB(var(--now-color_alert--info-3,11,96,157))}:host([dir=rtl]) td:first-child.is-last-child-row:before,:root[dir=rtl] td:first-child.is-last-child-row:before{border-right:4px solid RGB(var(--now-color_alert--info-3,11,96,157))}:host(:not([dir=rtl])) td:first-child.is-last-child-row:before,:root:not([dir=rtl]) td:first-child.is-last-child-row:before{left:0}:host([dir=rtl]) td:first-child.is-last-child-row:before,:root[dir=rtl] td:first-child.is-last-child-row:before{right:0}@media(forced-colors:active){td.data-column:focus,td.data-column:hover{border:1px solid Highlight;outline:none}td .link-cell-link,td .link-cell-link:focus,td .link-cell-link:hover{color:linktext}}table.wrap td:not(.special-column-cell):not(.group-row-container):not(.column-filtering-cell) .cell-content{-webkit-box-orient:vertical;word-wrap:break-word;-webkit-line-clamp:5;display:-webkit-box;white-space:normal}table.wrap td:not(.special-column-cell):not(.group-row-container):not(.column-filtering-cell) .cell-content.date-time-cell-content{width:max-content}table.wrap td:not(.special-column-cell):not(.group-row-container):not(.column-filtering-cell) .preserve-whitespace{white-space:break-spaces!important}table.virtualized-list td:not(.special-column-cell):not(.group-row-container):not(.column-filtering-cell) .cell-content{-webkit-box-orient:vertical;word-wrap:break-word;-webkit-line-clamp:2;display:-webkit-box;white-space:normal}table.virtualized-list td:not(.special-column-cell):not(.group-row-container):not(.column-filtering-cell) .cell-content.date-time-cell-content{width:max-content}table.truncate td .cell-content{white-space:nowrap}.row-cell-content{align-items:center;display:flex;justify-content:space-between}.row-cell-content .currency-cell-content-highlighted,.row-cell-content .number-cell-content-highlighted{display:contents}.row-cell-content.is-highlighted{color:RGB(var(--now-color--primary-2,23,100,82));font-weight:700}.row-cell-content.is-grayed-out{opacity:var(--now-opacity--less,.25)}.row-cell-actions-button{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);border-radius:var(--now-button-iconic--bare_tertiary--border-radius,var(--now-button-iconic--bare--border-radius,var(--now-button--bare--border-radius,var(--now-button--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button-iconic--bare_tertiary--border-width,var(--now-button-iconic--bare--border-width,var(--now-button--bare--border-width,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color,var(--now-button--bare_tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));cursor:pointer;inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));opacity:0}.row-cell-actions-button,.row-cell-actions-button:active,.row-cell-actions-button:hover{background-color:transparent;border-color:transparent;border-width:0}.row-cell-actions-button:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--hover,var(--now-button--bare_tertiary--background-color--hover,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--background-color-alpha--hover,var(--now-button--bare_tertiary--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--hover,var(--now-button--bare_tertiary--border-color--hover,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--border-color-alpha--hover,var(--now-button--bare_tertiary--border-color-alpha--hover,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color--hover,var(--now-button--bare_tertiary--color--hover,var(--now-color--neutral-12,66,80,81))))}.row-cell-actions-button:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--active,var(--now-button--bare_tertiary--background-color--active,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--background-color-alpha--active,var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--active,var(--now-button--bare_tertiary--border-color--active,var(--now-color--neutral-12,66,80,81))),var(--now-button-iconic--bare_tertiary--border-color-alpha--active,var(--now-button--bare_tertiary--border-color-alpha--active,0)));color:RGB(var(--now-button-iconic--bare_tertiary--color--active,var(--now-button--bare_tertiary--color--active,var(--now-color--secondary-3,1,60,71))))}.row-cell-actions-button.is-disabled{opacity:var(--now-button-iconic--bare_tertiary--opacity--disabled,var(--now-button-iconic--bare--opacity--disabled,var(--now-button-iconic--opacity--disabled,var(--now-button--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))))}.row-cell-actions-button.high-contrast{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color,var(--now-button--bare_tertiary_high-contrast--color,var(--now-button--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.row-cell-actions-button.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--hover,var(--now-button--bare_tertiary_high-contrast--color--hover,var(--now-color--secondary-3,1,60,71))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--hover,var(--now-button--bare_tertiary_high-contrast--color-alpha--hover,var(--now-button--bare_tertiary_high-contrast--color-alpha,1))))}.row-cell-actions-button.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--active,var(--now-button--bare_tertiary_high-contrast--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--active,var(--now-button--bare_tertiary_high-contrast--color-alpha--active,var(--now-button--bare_tertiary_high-contrast--color-alpha,1))))}.row-cell-actions-button.always-show:not(:disabled),.row-cell-actions-button:focus:not(:disabled),.row-cell-actions-button:hover:not(:disabled){opacity:1}.row-cell-actions-button.active-popover-trigger{background-color:RGBA(var(--now-button--bare_tertiary--background-color--active,var(--now-color--neutral-12,66,80,81)),var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-opacity--less,.25)));color:RGB(var(--now-button--bare_tertiary--color--active,var(--now-color--secondary-3,1,60,71)));opacity:1}.row-cell-actions-button:disabled{cursor:not-allowed}.row-cell-actions-button-placeholder{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.row-drag:focus .row-cell-content,.row-drag:focus-within .row-cell-content,.row-drag:hover .row-cell-content{opacity:1}.row-drag .row-cell-content{align-items:center;justify-content:center;opacity:0}.group-badge-cell-content,.parent-badge-cell-content{align-items:center;display:flex}.custom-row-container-center,.custom-row-container-default,.custom-row-container-inverse{inset-inline-start:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy));position:sticky;width:-moz-fit-content;width:fit-content}.custom-row-container-default{inset-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.custom-row-container-center{inset-inline-start:50%;transform:translateX(-50%)}.custom-row-container-inverse{inset-inline-start:85%}.link-cell-content .icon-link,.link-cell-content:not(.disabled),.link-cell-link,.person-cell-content:not(.disabled),.person-cell-link,.url-cell-link{color:RGB(var(--now-color--link-2));cursor:pointer;text-decoration:none}.cell-selected .link-cell-content .icon-link,.cell-selected .link-cell-content:not(.disabled),.cell-selected .link-cell-link,.cell-selected .person-cell-content:not(.disabled),.cell-selected .person-cell-link,.cell-selected .url-cell-link,.is-checked .link-cell-content .icon-link,.is-checked .link-cell-content:not(.disabled),.is-checked .link-cell-link,.is-checked .person-cell-content:not(.disabled),.is-checked .person-cell-link,.is-checked .url-cell-link,.is-highlighted .link-cell-content .icon-link,.is-highlighted .link-cell-content:not(.disabled),.is-highlighted .link-cell-link,.is-highlighted .person-cell-content:not(.disabled),.is-highlighted .person-cell-link,.is-highlighted .url-cell-link{color:RGB(var(--now-color--link-3,1,104,124))}.is-grayed-out .link-cell-content .icon-link,.is-grayed-out .link-cell-content:not(.disabled),.is-grayed-out .link-cell-link,.is-grayed-out .person-cell-content:not(.disabled),.is-grayed-out .person-cell-link,.is-grayed-out .url-cell-link{color:RGBA(var(--now-color--primary-2,23,100,82),var(--now-opacity--less,.25))}.link-cell-content .icon-link .live-list-eyelash,.link-cell-content:not(.disabled) .live-list-eyelash,.link-cell-link .live-list-eyelash,.person-cell-content:not(.disabled) .live-list-eyelash,.person-cell-link .live-list-eyelash,.url-cell-link .live-list-eyelash{inset-block-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inset-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));position:absolute}.link-cell-content .icon-link:focus,.link-cell-content .icon-link:hover,.link-cell-content:not(.disabled):focus,.link-cell-content:not(.disabled):hover,.link-cell-link:focus,.link-cell-link:hover,.person-cell-content:not(.disabled):focus,.person-cell-content:not(.disabled):hover,.person-cell-link:focus,.person-cell-link:hover,.url-cell-link:focus,.url-cell-link:hover{color:RGB(var(--now-color--link-3));text-decoration:underline}.is-grayed-out .link-cell-content .icon-link:focus,.is-grayed-out .link-cell-content .icon-link:hover,.is-grayed-out .link-cell-content:not(.disabled):focus,.is-grayed-out .link-cell-content:not(.disabled):hover,.is-grayed-out .link-cell-link:focus,.is-grayed-out .link-cell-link:hover,.is-grayed-out .person-cell-content:not(.disabled):focus,.is-grayed-out .person-cell-content:not(.disabled):hover,.is-grayed-out .person-cell-link:focus,.is-grayed-out .person-cell-link:hover,.is-grayed-out .url-cell-link:focus,.is-grayed-out .url-cell-link:hover{color:RGBA(var(--now-color--primary-2,23,100,82),var(--now-opacity--less,.25));text-decoration:none}.link-cell-content .icon-link:active,.link-cell-content:not(.disabled):active,.link-cell-link:active,.person-cell-content:not(.disabled):active,.person-cell-link:active,.url-cell-link:active{color:RGB(var(--now-color--link-4));text-decoration:underline}.is-grayed-out .link-cell-content .icon-link:active,.is-grayed-out .link-cell-content:not(.disabled):active,.is-grayed-out .link-cell-link:active,.is-grayed-out .person-cell-content:not(.disabled):active,.is-grayed-out .person-cell-link:active,.is-grayed-out .url-cell-link:active{color:RGBA(var(--now-color--primary-2,23,100,82),var(--now-opacity--less,.25));text-decoration:none}.link-cell-content .icon-link.inline,.link-cell-content:not(.disabled).inline,.link-cell-link.inline,.person-cell-content:not(.disabled).inline,.person-cell-link.inline,.url-cell-link.inline{display:inline}.boolean-cell-content,.url-cell-content{display:block;white-space:nowrap}.boolean-cell-content div.boolean-icon,.boolean-cell-content div.url-icon,.url-cell-content div.boolean-icon,.url-cell-content div.url-icon{display:inline-block}.boolean-cell-content div.boolean-icon,.url-cell-content div.boolean-icon{inset-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));position:relative}.boolean-cell-content.highlighted-value .cell-content,.boolean-cell-content.highlighted-value .url-icon,.url-cell-content.highlighted-value .cell-content,.url-cell-content.highlighted-value .url-icon{display:inline-block}.text-align-default .currency-cell-content,.text-align-default .number-cell-content{text-align:right}.text-align-inverse .currency-cell-content,.text-align-inverse .number-cell-content{text-align:left}.boolean-icon{margin:0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.url-icon{margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:0;margin-inline-end:0;margin-inline-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));vertical-align:middle}.pill-cell-pill{margin:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 0;max-width:100%}.hidden-pills-message{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:inline-block;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));vertical-align:middle}.icon-cell-content{padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(1rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.image-cell-content img{height:32px;object-fit:cover;vertical-align:middle;width:32px}.person-cell-content{align-items:center;display:flex;white-space:nowrap}.person-cell-content .person-cell-avatar{margin-inline-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.person-cell-content .person-cell-link{overflow:hidden;text-overflow:ellipsis}.person-cell-content .highlighted-value .cell-content{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))!important}.preserve-whitespace{white-space:pre!important}.custom-cell-error-content,.custom-cell-loader-content{align-items:center;justify-content:flex-start}.custom-cell-error-content now-icon{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:0}.custom-cell-error{color:RGB(var(--now-color_alert--critical-2,200,60,54))}.custom-cell-loader{display:flex;justify-content:center}.group-row-content{align-items:center;display:flex;justify-content:space-between;padding:0 calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.highlighted-content{background-color:RGB(var(--now-color--secondary-1,1,119,142));color:RGB(var(--now-color--neutral-0,255,255,255))}.group-row-actions{inset-inline-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));position:sticky}.always-show .row-cell-actions-button,.always-show .row-cell-content,.always-show .row-drag-handle now-button-iconic{opacity:1}@media(forced-colors:active){.grouped-row .group-row-container:focus,.grouped-row .group-row-container:hover{border:1px solid Highlight;outline:none}}td.text-align-inverse .percent-complete-wrapper{justify-content:flex-end}td.text-align-center .percent-complete-wrapper{justify-content:center}.link-cell-content .icon-link{border-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) solid transparent;transition:border-color .3s}.link-cell-content .icon-link:hover{border-block-end-color:RGB(var(--now-color--secondary-2,1,89,107))}td.html .row-cell-content{align-items:start!important;max-height:240px;overflow-y:auto!important}td.html .html-cell-content{-webkit-box-orient:unset!important}td.html .row-cell-actions-button{position:sticky;top:50%;transform:translateY(-50%)}@keyframes custom-loader{0%{opacity:1}50%{opacity:.5}to{opacity:.3}}.percent-complete-wrapper{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));height:100%;justify-content:flex-start}.percent-complete-wrapper .percent-complete-bar-container,.percent-complete-wrapper .percent-complete-text-container{display:flex;flex-direction:column;max-width:160px}.percent-complete-wrapper .percent-complete-bar-container{flex:1;max-width:160px;min-width:64px}.percent-complete-wrapper .percent-complete-text{font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));max-width:160px}.percent-complete-wrapper .percent-complete-text-target{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.percent-complete-wrapper .percent-complete-bar{border:1px solid RGB(var(--now-color_chrome--brand-3,114,128,129));box-sizing:content-box;height:16px;overflow:hidden;position:relative}.percent-complete-wrapper .percent-complete-bar-target{background-color:RGB(var(--now-color_chrome--brand-1,187,194,194))}.percent-complete-wrapper .percent-complete-bar-actual{background-color:RGB(var(--now-color--primary-1,30,133,109))}.percent-complete-wrapper .percent-complete-bar-actual.percent-complete-negative-value,.percent-complete-wrapper .percent-complete-bar-target.percent-complete-negative-value{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))}tfoot{inset-block-end:0;position:sticky;z-index:1}.overlay{background-color:RGBA(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)),1);display:flex;flex-direction:column;height:100%;justify-content:center}.body-only-overlay{padding-top:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-grid-cell--scale-size-block, 1)*2.5rem*var(--classicsponlydonotuse--rem-multipy)/2);position:absolute;top:0;width:100%}.overlay.type-message.body-only-overlay{padding-top:unset;position:relative}.overlay-content{overflow:hidden;padding:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}now-template-message-empty-state.overlay-content{height:70%}.skeleton-loader-gradient{background:linear-gradient(180deg,RGBA(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)),0) 0,RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))) 100%);height:50%;inset-block-end:0;overflow:auto;position:absolute;width:100%;z-index:1}.skeleton-table th .skeleton-cell-content{box-shadow:0 1px 1px 0 RGB(var(--now-color--neutral-7,135,147,148)) inset}.skeleton-table.full-table-overlay col:nth-child(2){width:20%}.skeleton-table.full-table-overlay col:nth-child(3){width:40%}.skeleton-cell-content{animation:skeleton-pulse 1.5s ease-in-out infinite;background:RGB(var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)));border-radius:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));display:block;height:calc(1rem*var(--classicsponlydonotuse--rem-multipy));min-height:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.skeleton-cell-content{background:canvastext}}@keyframes skeleton-pulse{0%,to{opacity:.1}50%{opacity:.5}}.custom-overlay-error-content,.custom-overlay-loader-content{align-items:center;display:flex}.custom-overlay-error-content{flex-direction:unset}.custom-overlay-error-icon{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.custom-overlay-error{color:RGB(var(--now-color_alert--critical-2,200,60,54))}.floating-target{height:0;position:absolute;width:0}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.actionable-message{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))!important;overflow:unset!important;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.actionable-message .actionable-message-content{align-items:center;border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));display:flex;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));justify-content:flex-start;min-height:40px;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.actionable-message .actionable-message-content.critical{background-color:RGB(var(--now-color_alert--critical-0,241,206,205))}.actionable-message .actionable-message-content.high{background-color:RGB(var(--now-color_alert--high-0,247,228,200))}.actionable-message .actionable-message-content.warning{background-color:RGB(var(--now-color_alert--warning-0,244,240,191))}.actionable-message .actionable-message-content.moderate{background-color:RGB(var(--now-color_alert--moderate-0,212,213,243))}.actionable-message .actionable-message-content.info{background-color:RGB(var(--now-color_alert--info-0,195,221,240))}.actionable-message .actionable-message-content.positive{background-color:RGB(var(--now-color_alert--positive-0,201,224,202))}.actionable-message .actionable-message-content.low{background-color:RGB(var(--now-color_alert--low-0,217,217,217))}.actionable-message .actionable-message-content now-icon{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.actionable-message .actionable-message-content .actionable-message-label-group{display:flex;margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));max-width:100%;position:sticky}.actionable-message .actionable-message-content .actionable-message-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actionable-message .actionable-message-content now-button-bare{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}now-list{min-height:calc(12.5rem*var(--classicsponlydonotuse--rem-multipy))}.scroll-container{display:flex;flex-direction:column;height:100%;min-height:calc(9.375rem*var(--classicsponlydonotuse--rem-multipy));overflow:auto;position:relative;scroll-padding-top:100px;width:100%}.scroll-container.disable-scroll{overflow:hidden}.parent-container{height:100%;overflow:hidden;position:relative;width:100%}.scroll-to-top-button{border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));inset-block-end:56px;inset-inline-start:calc(100% - 50px);position:sticky}.now-a11y-label{-webkit-user-select:none;user-select:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".gallery-card-field .boolean-cell-content{align-items:center;display:flex;justify-content:flex-start}.gallery-card-field .percent-complete-wrapper{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));height:100%;justify-content:space-between}.gallery-card-field .percent-complete-bar-container,.gallery-card-field .percent-complete-text-container{display:flex;flex-direction:column;max-width:160px}.gallery-card-field .percent-complete-bar-container{flex:1;max-width:160px;min-width:64px}.gallery-card-field .percent-complete-text{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));height:14px;margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));max-width:160px}.gallery-card-field .percent-complete-text-target{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));height:14px}.gallery-card-field .percent-complete-bar{border:1px solid RGB(var(--now-color_chrome--brand-3,114,128,129));box-sizing:content-box;height:8px;overflow:hidden;position:relative}.gallery-card-field .percent-complete-bar-target{background-color:RGB(var(--now-color_chrome--brand-1,187,194,194))}.gallery-card-field .percent-complete-bar-actual{background-color:RGB(var(--now-color--primary-1,30,133,109))}.gallery-card-field .percent-complete-bar-actual.percent-complete-negative-value,.gallery-card-field .percent-complete-bar-target.percent-complete-negative-value{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))}.gallery-card-field-value.field-pills{min-height:24px;width:100%}.gallery-card-field-value .pill-container{align-items:center;display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.gallery-card-field-value .pills-cell-content{display:flex;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));max-width:100%}.gallery-card-field-value .pills-cell-content.is-hidden-count-shown{max-width:calc(100% - 3em)}.gallery-card-field .gallery-card-field-value:has(.percent-complete-cell-content){min-height:28px}.gallery-card-field .url-cell-content .url-cell-link{align-items:flex-end;display:flex;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));justify-content:flex-start}.gallery-card-field .url-cell-content .url-cell-link .url-cell-link-label{-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;display:-webkit-box;max-width:calc(100% - 1rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;word-break:break-word}.gallery-card-field .link-cell-content,.gallery-card-field .link-cell-content:not(.disabled),.gallery-card-field .link-cell-link,.gallery-card-field .person-cell-link,.gallery-card-field .person-field-content:not(.disabled),.gallery-card-field .url-cell-link{color:RGB(var(--now-color--secondary-1,1,119,142));cursor:pointer;text-decoration:none}.cell-selected .gallery-card-field .link-cell-content,.cell-selected .gallery-card-field .link-cell-content:not(.disabled),.cell-selected .gallery-card-field .link-cell-link,.cell-selected .gallery-card-field .person-cell-link,.cell-selected .gallery-card-field .person-field-content:not(.disabled),.cell-selected .gallery-card-field .url-cell-link,.is-checked .gallery-card-field .link-cell-content,.is-checked .gallery-card-field .link-cell-content:not(.disabled),.is-checked .gallery-card-field .link-cell-link,.is-checked .gallery-card-field .person-cell-link,.is-checked .gallery-card-field .person-field-content:not(.disabled),.is-checked .gallery-card-field .url-cell-link,.is-highlighted .gallery-card-field .link-cell-content,.is-highlighted .gallery-card-field .link-cell-content:not(.disabled),.is-highlighted .gallery-card-field .link-cell-link,.is-highlighted .gallery-card-field .person-cell-link,.is-highlighted .gallery-card-field .person-field-content:not(.disabled),.is-highlighted .gallery-card-field .url-cell-link{color:RGB(var(--now-color--link-3,1,104,124))}.is-grayed-out .gallery-card-field .link-cell-content,.is-grayed-out .gallery-card-field .link-cell-content:not(.disabled),.is-grayed-out .gallery-card-field .link-cell-link,.is-grayed-out .gallery-card-field .person-cell-link,.is-grayed-out .gallery-card-field .person-field-content:not(.disabled),.is-grayed-out .gallery-card-field .url-cell-link{color:RGBA(var(--now-color--primary-2,23,100,82),var(--now-opacity--less,.25))}.gallery-card-field .link-cell-content .live-list-eyelash,.gallery-card-field .link-cell-content:not(.disabled) .live-list-eyelash,.gallery-card-field .link-cell-link .live-list-eyelash,.gallery-card-field .person-cell-link .live-list-eyelash,.gallery-card-field .person-field-content:not(.disabled) .live-list-eyelash,.gallery-card-field .url-cell-link .live-list-eyelash{inset-block-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inset-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));position:absolute}.gallery-card-field .link-cell-content:focus,.gallery-card-field .link-cell-content:hover,.gallery-card-field .link-cell-content:not(.disabled):focus,.gallery-card-field .link-cell-content:not(.disabled):hover,.gallery-card-field .link-cell-link:focus,.gallery-card-field .link-cell-link:hover,.gallery-card-field .person-cell-link:focus,.gallery-card-field .person-cell-link:hover,.gallery-card-field .person-field-content:not(.disabled):focus,.gallery-card-field .person-field-content:not(.disabled):hover,.gallery-card-field .url-cell-link:focus,.gallery-card-field .url-cell-link:hover{color:RGB(var(--now-color--secondary-2,1,89,107));text-decoration:underline}.is-grayed-out .gallery-card-field .link-cell-content:focus,.is-grayed-out .gallery-card-field .link-cell-content:hover,.is-grayed-out .gallery-card-field .link-cell-content:not(.disabled):focus,.is-grayed-out .gallery-card-field .link-cell-content:not(.disabled):hover,.is-grayed-out .gallery-card-field .link-cell-link:focus,.is-grayed-out .gallery-card-field .link-cell-link:hover,.is-grayed-out .gallery-card-field .person-cell-link:focus,.is-grayed-out .gallery-card-field .person-cell-link:hover,.is-grayed-out .gallery-card-field .person-field-content:not(.disabled):focus,.is-grayed-out .gallery-card-field .person-field-content:not(.disabled):hover,.is-grayed-out .gallery-card-field .url-cell-link:focus,.is-grayed-out .gallery-card-field .url-cell-link:hover{color:RGBA(var(--now-color--primary-2,23,100,82),var(--now-opacity--less,.25));text-decoration:none}.gallery-card-field .link-cell-content:active,.gallery-card-field .link-cell-content:not(.disabled):active,.gallery-card-field .link-cell-link:active,.gallery-card-field .person-cell-link:active,.gallery-card-field .person-field-content:not(.disabled):active,.gallery-card-field .url-cell-link:active{color:RGB(var(--now-color--secondary-3,1,60,71));text-decoration:underline}.is-grayed-out .gallery-card-field .link-cell-content:active,.is-grayed-out .gallery-card-field .link-cell-content:not(.disabled):active,.is-grayed-out .gallery-card-field .link-cell-link:active,.is-grayed-out .gallery-card-field .person-cell-link:active,.is-grayed-out .gallery-card-field .person-field-content:not(.disabled):active,.is-grayed-out .gallery-card-field .url-cell-link:active{color:RGBA(var(--now-color--primary-2,23,100,82),var(--now-opacity--less,.25));text-decoration:none}.gallery-card-field .link-cell-content.inline,.gallery-card-field .link-cell-content:not(.disabled).inline,.gallery-card-field .link-cell-link.inline,.gallery-card-field .person-cell-link.inline,.gallery-card-field .person-field-content:not(.disabled).inline,.gallery-card-field .url-cell-link.inline{display:inline}@media(forced-colors:active){.gallery-card-field .link-cell-link,.gallery-card-field .link-cell-link:focus,.gallery-card-field .link-cell-link:hover{color:linktext}}.gallery-card-field .person-cell-content{align-items:center;display:flex;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));white-space:nowrap}.gallery-card-field .person-cell-content .person-cell-link,.gallery-card-field .person-cell-content .person-cell-text{overflow:hidden;text-overflow:ellipsis}.gallery-card-field .person-cell-content .highlighted-value .cell-content{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))!important}.gallery-card-field .custom-cell-error-content,.gallery-card-field .custom-cell-loader-content{align-items:center;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));justify-content:flex-start}.gallery-card-field .custom-cell-error-content now-icon{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:0}.gallery-card-field .custom-cell-error{color:RGB(var(--now-color_alert--critical-2,200,60,54))}.gallery-card-field .custom-cell-loader{display:flex;justify-content:center}.gallery-card-field .custom-cell-content.cell-content{height:24px}.hidden-pills-message{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:inline-block;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy));vertical-align:middle;word-break:keep-all}.person-cell-content:not(.disabled),.person-cell-link{color:RGB(var(--now-color--secondary-1,1,119,142));cursor:pointer;text-decoration:none}.person-cell-content:not(.disabled).cell-selected,.person-cell-content:not(.disabled).is-highlighted,.person-cell-link.cell-selected,.person-cell-link.is-highlighted{color:RGB(var(--now-color--link-3,1,104,124));text-decoration:none}.person-cell-content:not(.disabled).is-grayed-out,.person-cell-link.is-grayed-out{color:RGBA(var(--now-color--primary-2,23,100,82),var(--now-opacity--less,.25))}.person-cell-content:not(.disabled):focus,.person-cell-content:not(.disabled):hover,.person-cell-link:focus,.person-cell-link:hover{color:RGB(var(--now-color--secondary-2,1,89,107));text-decoration:underline}.person-cell-content:not(.disabled):focus.is-grayed-out,.person-cell-content:not(.disabled):hover.is-grayed-out,.person-cell-link:focus.is-grayed-out,.person-cell-link:hover.is-grayed-out{color:RGBA(var(--now-color--primary-2,23,100,82),var(--now-opacity--less,.25));text-decoration:none}.person-cell-content:not(.disabled):active,.person-cell-link:active{color:RGB(var(--now-color--secondary-3,1,60,71));text-decoration:underline}.person-cell-content:not(.disabled):active.is-grayed-out,.person-cell-link:active.is-grayed-out{color:RGBA(var(--now-color--primary-2,23,100,82),var(--now-opacity--less,.25));text-decoration:none}.person-cell-content:not(.disabled).inline,.person-cell-link.inline{display:inline}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.actionable-message{background-color:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))!important;overflow:unset!important;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.actionable-message .actionable-message-content{align-items:center;display:flex;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));justify-content:flex-start;min-height:40px;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.actionable-message .actionable-message-content.critical{background-color:RGB(var(--now-color_alert--critical-0,241,206,205))}.actionable-message .actionable-message-content.high{background-color:RGB(var(--now-color_alert--high-0,247,228,200))}.actionable-message .actionable-message-content.warning{background-color:RGB(var(--now-color_alert--warning-0,244,240,191))}.actionable-message .actionable-message-content.moderate{background-color:RGB(var(--now-color_alert--moderate-0,212,213,243))}.actionable-message .actionable-message-content.info{background-color:RGB(var(--now-color_alert--info-0,195,221,240))}.actionable-message .actionable-message-content.positive{background-color:RGB(var(--now-color_alert--positive-0,201,224,202))}.actionable-message .actionable-message-content.low{background-color:RGB(var(--now-color_alert--low-0,217,217,217))}.actionable-message .actionable-message-content now-icon{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))}.actionable-message .actionable-message-content .actionable-message-label-group{display:flex;margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));max-width:100%;position:sticky}.actionable-message .actionable-message-content .actionable-message-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actionable-message .actionable-message-content now-button-bare{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.actionable-message{padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) 0;position:sticky;z-index:1}.actionable-message .actionable-message-content{border:1px solid;border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.actionable-message .actionable-message-content.critical{border-color:RGB(var(--now-color_alert--critical-1,221,133,129))}.actionable-message .actionable-message-content.high{border-color:RGB(var(--now-color_alert--high-1,234,186,117))}.actionable-message .actionable-message-content.warning{border-color:RGB(var(--now-color_alert--warning-1,227,218,96))}.actionable-message .actionable-message-content.moderate{border-color:RGB(var(--now-color_alert--moderate-1,148,149,225))}.actionable-message .actionable-message-content.info{border-color:RGB(var(--now-color_alert--info-1,104,171,218))}.actionable-message .actionable-message-content.positive{border-color:RGB(var(--now-color_alert--positive-1,119,178,123))}.actionable-message .actionable-message-content.low{border-color:RGB(var(--now-color_alert--low-1,159,159,159))}.actionable-message .actionable-message-content now-icon{align-self:flex-start;padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.actionable-message .actionable-message-content .actionable-message-label-group{flex-wrap:wrap;gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy));min-width:0}.actionable-message .actionable-message-content .actionable-message-text{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;white-space:normal}.actionable-message .actionable-message-content .actionable-message-action{display:flex;overflow:hidden}.actionable-message .actionable-message-content .actionable-message-button{margin-inline-start:0;width:100%}.actionable-message.actionable-message-top{inset-block-start:0}.actionable-message.actionable-message-bottom{inset-block-end:0}.gallery-card-header-label .boolean-cell-content{align-items:center;display:flex;justify-content:flex-start}.gallery{padding:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.gallery-card-field{align-items:flex-start;display:flex;flex-direction:column;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));min-width:128px}.gallery-card-field-label{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))}.gallery-card-field-label,.gallery-card-field-value{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));max-width:100%;overflow:hidden;word-break:break-word}.gallery-card-field-value{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));min-height:15px}.gallery-card-body-text .gallery-card-field{margin-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));max-width:unset;width:100%}.gallery-card-body-text .gallery-card-field-value{-webkit-line-clamp:2;line-clamp:2;min-height:30px}.gallery-card-grouped-view{padding:0 calc(1rem*var(--classicsponlydonotuse--rem-multipy)) 0 0}.gallery-card-grouped-view .gallery-card-container{margin:unset;padding-bottom:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-left:unset}.gallery-card-body-fields{display:grid;gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));grid-template-columns:repeat(auto-fit,minmax(128px,1fr));padding-top:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.gallery-card-metadata{align-items:center;display:flex;justify-content:space-between}.gallery-card-metadata-highlighted-value{max-width:128px}.gallery-card-default-actions{display:flex;justify-content:space-between}.gallery-card-default-actions,.gallery-card-default-actions>:not(:first-child){margin-left:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.gallery-card-container{display:grid;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));grid-template-columns:repeat(auto-fill,minmax(min(100%,max(360px,(100% - calc(2.25rem*var(--classicsponlydonotuse--rem-multipy)))/4)),1fr));padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.gallery-card-container now-card{box-sizing:border-box}.gallery-card-container .gallery-card-grouped-view{grid-column:span 4/auto;padding:0 calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) 0 0}.gallery-card-container.gallery-grouped{row-gap:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.gallery-virtualized-container{padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.gallery-virtualized-container .gallery-virtualized-page-container{display:flex;flex-direction:column;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.gallery-virtualized-container .gallery-virtualized-page-container .gallery-card-container{padding-top:0}.gallery-virtualized-container .gallery-virtualized-status-row-content{height:56px;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0}.gallery-virtualized-container .gallery-virtualized-status-row-content now-loader{padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0}.gallery-virtualized-container .gallery-virtualized-scroll-to-top-button{border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));inset-block-end:56px;inset-inline-start:calc(100% - 2.5rem*var(--classicsponlydonotuse--rem-multipy));position:sticky}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.gallery-card-expand-all-button{padding-top:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.gallery-card-now-accordion{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.gallery-card-field-body-text-container{align-items:flex-end;display:flex;flex-direction:row;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));justify-content:flex-start}.gallery-card-field-body-text{-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;align-self:flex-start;display:-webkit-box;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));max-width:100%;max-width:unset;min-height:30px;overflow:hidden;width:100%;word-break:break-word}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}@keyframes custom-loader{0%{opacity:1}50%{opacity:.5}to{opacity:.3}}.popover-cell-editor-content-container{max-width:350px;min-width:150px;padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.popover-cell-editor-content-container:has(now-list-html-cell-editor-content){max-width:600px!important;min-width:320px!important;padding:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.popover-cell-editor-button-container{display:flex;flex-direction:row;justify-content:flex-end;margin-block-start:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}.popover-cell-editor-button-container now-button+now-button{margin-inline-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.cell-editor-highlighted-message,.cell-editor-info-text,.choice-type-cell-editor-content,.input-type-cell-editor-content,.loader-cell-editor-content,.now-record-html-editor-content{width:100%}.icon-preview-label-cell-editor-content,.person-preview-label-cell-editor-content{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));font-size:12px;line-height:2.5;margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.cell-editor-info-text{margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.popover-cell-editor-content-loader{align-items:center;display:flex;height:87px;justify-content:center;width:100%}.popover-cell-editor-person-preview-name{margin-inline-start:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));vertical-align:middle}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}@keyframes custom-loader{0%{opacity:1}50%{opacity:.5}to{opacity:.3}}.popover-choice-column-filter-content-container{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));max-width:304px;min-width:128px;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.popover-choice-column-filter-content-container .choice-filter-popover-header{align-items:center;display:flex;flex-wrap:wrap;margin-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.popover-choice-column-filter-content-container .choice-filter-popover-header .choice-filter-popover-title{font-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-choice-column-filter-content-container .choice-filter-popover-header .choice-filter-popover-close{cursor:pointer}.popover-choice-column-filter-content-container .choice-filter-popover-header .choice-filter-popover-header-content,.popover-choice-column-filter-content-container .choice-filter-popover-header .choice-filter-popover-header-content now-input{width:100%}.popover-choice-column-filter-content-container .choice-filter-popover-header .choice-filter-popover-header-select-all-none{align-items:center;display:flex}.popover-choice-column-filter-content-container .choice-filter-popover-header .choice-filter-popover-header-select-all-none now-button-bare{margin:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.popover-choice-column-filter-content-container .choice-filter-popover-header .choice-filter-popover-header-select-all-none now-button-bare:first-of-type{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.popover-choice-column-filter-content-container .choice-filter-popover-body{display:flex;flex-direction:column;max-height:244px;overflow-y:auto}.popover-choice-column-filter-content-container .choice-filter-popover-body now-checkbox{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.popover-choice-column-filter-content-container .choice-filter-popover-footer{display:flex;justify-content:flex-end;margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.popover-choice-column-filter-content-container .choice-filter-popover-footer now-button{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}@keyframes custom-loader{0%{opacity:1}50%{opacity:.5}to{opacity:.3}}.popover-content{padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.custom-popover-error-icon{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.custom-popover-error{color:RGB(var(--now-color_alert--critical-2,200,60,54))}.custom-popover-error-content,.custom-popover-loader-content{align-items:center;display:flex;justify-content:flex-start}.custom-popover-loader{display:flex;justify-content:center}.custom-popover-loader>div{animation:custom-loader .8s infinite alternate;background:RGB(var(--now-color_divider--primary,var(--now-color--neutral-7,135,147,148)));border-radius:50%;height:8px;opacity:1;width:8px}.custom-popover-loader>div:nth-child(2){animation-delay:.3s;margin-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.custom-popover-loader>div:nth-child(3){animation-delay:.5s;margin-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"now-dropdown-list{max-height:300px;width:200px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.popover-content-container{padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.popover-text-container{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));max-height:200px;max-width:300px;overflow:scroll}.popover-button-container{display:flex;flex-direction:row;justify-content:flex-end;margin-inline-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.popover-button-container now-button+now-button{margin-inline-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}@keyframes custom-loader{0%{opacity:1}50%{opacity:.5}to{opacity:.3}}div.html-icon{--now-line-height:0;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));line-height:var(--now-line-height,1.25);vertical-align:middle}div.html-icon>svg.now-icon{fill:currentcolor;fill-rule:evenodd}div.html-icon>svg.now-icon.-sm{block-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy)/2)}div.html-icon>svg.now-icon.-md{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-icon--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2)}div.html-icon svg.now-icon{color:inherit}.column-active-dragging-item{align-items:center;background:RGB(var(--now-color--primary-0,221,237,233));border:1px solid RGB(var(--now-color--primary-1,30,133,109));color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:flex;font-weight:700;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:0}.column-active-dragging-item .column-drag-handle{margin:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.column-active-dragging-item .column-drag-handle .drag-handle{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);block-size:auto;border-radius:var(--now-button-iconic--bare_primary--border-radius,var(--now-button-iconic--bare--border-radius,var(--now-button--bare--border-radius,var(--now-button--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button-iconic--bare_primary--border-width,var(--now-button-iconic--bare--border-width,var(--now-button--bare--border-width,0)));color:RGB(var(--now-button-iconic--bare_primary--color,var(--now-button--bare_primary--color,var(--now-color--primary-1,30,133,109))));inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:auto;padding:0;vertical-align:middle}.column-active-dragging-item .column-drag-handle .drag-handle,.column-active-dragging-item .column-drag-handle .drag-handle:active,.column-active-dragging-item .column-drag-handle .drag-handle:hover{background-color:transparent;border-color:transparent;border-width:0}.column-active-dragging-item .column-drag-handle .drag-handle:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_primary--background-color--hover,var(--now-button--bare_primary--background-color--hover,var(--now-color--primary-2,23,100,82))),var(--now-button-iconic--bare_primary--background-color-alpha--hover,var(--now-button--bare_primary--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button-iconic--bare_primary--color--hover,var(--now-button--bare_primary--color--hover,var(--now-color--primary-2,23,100,82))))}.column-active-dragging-item .column-drag-handle .drag-handle:not(.is-disabled):active{background-color:RGB(var(--now-button-iconic--bare_primary--background-color--active,var(--now-button--bare_primary--background-color--active,var(--now-color--primary-2,23,100,82))),var(--now-button-iconic--bare_primary--background-color-alpha--active,var(--now-button--bare_primary--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button-iconic--bare_primary--color--active,var(--now-button--bare_primary--color--active,var(--now-color--primary-3,15,67,55))))}.column-active-dragging-item .column-drag-handle .drag-handle.is-disabled{opacity:var(--now-button-iconic--bare_primary--opacity--disabled,var(--now-button-iconic--bare--opacity--disabled,var(--now-button-iconic--opacity--disabled,var(--now-button--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))))}.column-active-dragging-item .column-drag-handle .drag-handle.high-contrast{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color,var(--now-color--primary-2,23,100,82)))}.column-active-dragging-item .column-drag-handle .drag-handle.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color--hover,var(--now-color--primary-3,15,67,55)))}.column-active-dragging-item .column-drag-handle .drag-handle.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}@media(forced-colors:active){.column-active-dragging-item{border:1px solid Highlight}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.time-ago-display{color:RGB(var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)));display:block;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.time-ago-display.main-value{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.time-ago-display .time-ago-display-placeholder{min-height:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(.render-as-link) .time-ago-display{color:RGB(var(--now-color--secondary-1,1,119,142))}:host(.render-as-link) .time-ago-display:focus,:host(.render-as-link) .time-ago-display:hover{color:RGB(var(--now-color--secondary-2,1,89,107));text-decoration:underline}:host(.render-as-link) .time-ago-display:active{color:RGB(var(--now-color--secondary-3,1,60,71));text-decoration:underline}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--sm{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--sm,.now-m-block-start--sm{margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--sm{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--sm{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--sm,.now-m-inline-start--sm{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--sm{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}:host{display:block}.now-loader-custom{display:flex;justify-content:center}.now-loader-custom-animation{display:block}.now-loader-custom-label{display:none;font-family:var(--now-loader-custom--font-family,var(--now-loading_indicator--font-family,var(--now-loading_label--primary--font-family,var(--now-loading--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-style:var(--now-loader-custom--font-style,var(--now-loading_indicator--font-style,var(--now-loading_label--primary--font-style,var(--now-loading--font-style,normal))));font-variant:normal;font-weight:var(--now-loader-custom--font-weight,var(--now-loading_indicator--font-weight,var(--now-loading_label--primary--font-weight,var(--now-loading--font-weight,normal))));letter-spacing:inherit;margin-block-end:0;text-align:center;text-indent:0;text-shadow:none;text-transform:var(--now-loader-custom--text-transform,var(--now-loading_indicator--text-transform,var(--now-loading_label--primary--text-transform,var(--now-loading--text-transform,none))));white-space:normal;word-break:break-word;word-spacing:inherit}.-sm .now-loader-custom-label{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-loader-custom-label,.-sm .now-loader-custom-label{font-size:var(--now-loading_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))))}.-lg .now-loader-custom-label,.-md .now-loader-custom-label{margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-lg .now-loader-custom-label{font-size:var(--now-loading_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}@keyframes pulseAnimation{0%,to{opacity:1}50%{opacity:.1}}@keyframes pulseAnimationForcedColors{0%,to{background-color:canvastext}50%{background-color:canvas}}@keyframes transitionIntoFrame100{0%{inline-size:0}to{inline-size:100%}}@keyframes transitionIntoFrame75{0%{inline-size:0}to{inline-size:75%}}@keyframes transitionIntoFrame50{0%{inline-size:0}to{inline-size:50%}}@keyframes transitionIntoFrame25{0%{inline-size:0}to{inline-size:25%}}:host{display:block}.now-loader-skeleton{display:flex;flex-direction:column;gap:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inline-size:100%}.now-loader-skeleton-bone{background-color:RGB(var(--now-loader-skeleton--background-color,var(--now-loading_placeholder--background-color,var(--now-color_surface--neutral-4,221,225,225))));block-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.375rem*var(--classicsponlydonotuse--rem-multipy));display:flex;inline-size:0}.now-loader-skeleton-bone.has-width-100{animation:pulseAnimation 1.5s ease-in-out 1.225s infinite,transitionIntoFrame100 1s cubic-bezier(.4,0,.19,.99) 0s forwards;max-inline-size:100%}.now-loader-skeleton-bone.has-width-75{animation:pulseAnimation 1.5s ease-in-out 1.375s infinite,transitionIntoFrame75 1s cubic-bezier(.4,0,.19,.99) 75ms forwards;max-inline-size:75%}.now-loader-skeleton-bone.has-width-50{animation:pulseAnimation 1.5s ease-in-out 1.525s infinite,transitionIntoFrame50 1s cubic-bezier(.4,0,.19,.99) .15s forwards;max-inline-size:50%}.now-loader-skeleton-bone.has-width-25{animation:pulseAnimation 1.5s ease-in-out 1.675s infinite,transitionIntoFrame25 1s cubic-bezier(.4,0,.19,.99) 225ms forwards;max-inline-size:25%}@media(prefers-reduced-motion){.now-loader-skeleton-bone{inline-size:100%}.now-loader-skeleton-bone.has-width-100,.now-loader-skeleton-bone.has-width-25,.now-loader-skeleton-bone.has-width-50,.now-loader-skeleton-bone.has-width-75{animation:none!important}}@media(forced-colors:active){.now-loader-skeleton-bone{background-color:canvastext;border:calc(.0625rem*var(--classicsponlydonotuse--rem-multipy)) solid canvastext;forced-color-adjust:none}.now-loader-skeleton-bone.has-width-100{animation:pulseAnimationForcedColors 1.5s ease-in-out 1.225s infinite,transitionIntoFrame100 1s cubic-bezier(.4,0,.19,.99) 0s forwards;max-inline-size:100%}.now-loader-skeleton-bone.has-width-75{animation:pulseAnimationForcedColors 1.5s ease-in-out 1.375s infinite,transitionIntoFrame75 1s cubic-bezier(.4,0,.19,.99) 75ms forwards;max-inline-size:75%}.now-loader-skeleton-bone.has-width-50{animation:pulseAnimationForcedColors 1.5s ease-in-out 1.525s infinite,transitionIntoFrame50 1s cubic-bezier(.4,0,.19,.99) .15s forwards;max-inline-size:50%}.now-loader-skeleton-bone.has-width-25{animation:pulseAnimationForcedColors 1.5s ease-in-out 1.675s infinite,transitionIntoFrame25 1s cubic-bezier(.4,0,.19,.99) 225ms forwards;max-inline-size:25%}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xl{margin-block-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xl,.now-m-block-start--xl{margin-block-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xl{margin-block-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xl{margin-inline-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xl,.now-m-inline-start--xl{margin-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xl{margin-inline-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host{display:block}.now-loader{align-items:center;display:flex;flex-direction:column;font-variant:normal;letter-spacing:inherit;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit}.now-loader-icon{color:RGB(var(--now-loader_icon--color,var(--now-loading_indicator--primary--color,var(--now-color--primary-1,30,133,109))));-webkit-user-select:none;user-select:none}.now-loader-label{color:RGB(var(--now-loader_label--color,var(--now-loading_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-loader--font-family,var(--now-loading_indicator--font-family,var(--now-loading_label--primary--font-family,var(--now-loading--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-loading_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-loader--font-style,var(--now-loading_indicator--font-style,var(--now-loading_label--primary--font-style,var(--now-loading--font-style,normal))));font-weight:var(--now-loader--font-weight,var(--now-loading_indicator--font-weight,var(--now-loading_label--primary--font-weight,var(--now-loading--font-weight,normal))));line-height:1.25;margin-block-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy));max-inline-size:calc(18.75rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));text-align:center;text-transform:var(--now-loader--text-transform,var(--now-loading_indicator--text-transform,var(--now-loading_label--primary--text-transform,var(--now-loading--text-transform,none))))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:block}.now-message{block-size:inherit;display:flex;inline-size:inherit}.now-message.-adaptive,.now-message.-horizontal{align-items:center;flex-wrap:wrap}.now-message.-adaptive .now-message-child,.now-message.-horizontal .now-message-child{flex-basis:calc(12.5rem*var(--classicsponlydonotuse--rem-multipy));flex-grow:1}.now-message.-horizontal .now-message-child{align-items:center;display:flex;flex-wrap:wrap}.now-message.-vertical{flex-direction:column}.now-message.-vertical slot[name=media]::slotted(*){align-self:flex-start}.now-message.-vertical.-centered{align-items:center;flex-direction:column}.now-message.-vertical.-centered .now-message-child{align-items:center;display:flex;flex-direction:column}.now-message.-vertical.-centered slot[name=media]::slotted(*){align-self:center}.now-message.-vertical.-centered slot[name=message]::slotted(*){text-align:center}.now-message.-vertical.-centered slot[name=actions]::slotted(*){display:flex;flex-wrap:wrap;justify-content:center}.now-message slot[name=media]::slotted(*){display:block;max-inline-size:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}:host{--now-modal--width--custom:calc(62.5rem*var(--classicsponlydonotuse--rem-multipy));--now-modal--height--custom:calc(46.875rem*var(--classicsponlydonotuse--rem-multipy));display:block}.now-modal-overlay{background-color:RGB(var(--now-modal_overlay--background-color,var(--now-window_overlay--background-color,var(--now-color--neutral-21,0,0,0))),var(--now-modal_overlay--background-color-alpha,var(--now-window_overlay--background-color-alpha,var(--now-opacity--mid,.5))));inset:0;overflow-y:auto;position:fixed;z-index:4000}.now-modal-overlay.hide-overlay{background-color:transparent}.now-modal[hidden]{display:block;visibility:hidden}.now-modal{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;position:absolute;visibility:visible;z-index:4000}@media(min-width:26.25rem){.now-modal.is-opened.-custom,.now-modal.is-opened.-sm{align-items:center;display:flex;justify-content:center}}@media(min-width:26.25rem)and (max-height:19.6875rem){.now-modal.is-opened.-custom,.now-modal.is-opened.-sm{block-size:auto;min-block-size:100%}}@media(min-width:37.5rem){.now-modal.is-opened.-md{align-items:center;display:flex;justify-content:center}}@media(min-width:37.5rem)and (max-height:28.125rem){.now-modal.is-opened.-md{block-size:auto;min-block-size:100%}}@media(min-width:50rem){.now-modal.is-opened.-lg{align-items:center;display:flex;justify-content:center}}@media(min-width:50rem)and (max-height:37.5rem){.now-modal.is-opened.-lg{block-size:auto;min-block-size:100%}}.now-modal.is-legacy-mode{block-size:auto;min-block-size:100%}@media(min-height:37.5rem)and (min-width:50rem){.now-modal.is-legacy-mode.is-opened.-lg .now-modal-dialog{max-block-size:none}}.now-modal.is-legacy-mode .now-modal-body{overflow:initial}.now-modal-dialog{background-color:RGB(var(--now-modal--background-color,var(--now-window--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));block-size:100%;display:flex;flex-direction:column;font-family:var(--now-modal--font-family,var(--now-window--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-variant:normal;inline-size:100%;letter-spacing:inherit;padding:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-modal--scale-size, 1));position:relative;text-align:start;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit;z-index:4001}.now-modal-dialog.hide-padding{padding:0}@media(max-width:26.25rem)and (max-height:19.6875rem){.is-opened.-sm .now-modal-dialog{block-size:auto;min-block-size:100%}}@media(min-width:26.25rem){.is-opened.-sm .now-modal-dialog{border-color:RGB(var(--now-modal--border-color,var(--now-window--border-color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-radius:var(--now-modal--border-radius,var(--now-window--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-style:solid;border-width:var(--now-modal--border-width,var(--now-window--border-width,1px));box-shadow:0 calc(1rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));max-inline-size:calc(26.25rem*var(--classicsponlydonotuse--rem-multipy))}}@media(min-width:26.25rem)and (min-height:8.3125rem){.is-opened.-sm .now-modal-dialog{block-size:auto;max-block-size:calc(19.6875rem*var(--classicsponlydonotuse--rem-multipy));min-block-size:calc(8.3125rem*var(--classicsponlydonotuse--rem-multipy))}}@media(max-width:37.5rem)and (max-height:28.125rem){.is-opened.-md .now-modal-dialog{block-size:auto;min-block-size:100%}}@media(min-width:37.5rem){.is-opened.-md .now-modal-dialog{border-color:RGB(var(--now-modal--border-color,var(--now-window--border-color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-radius:var(--now-modal--border-radius,var(--now-window--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-style:solid;border-width:var(--now-modal--border-width,var(--now-window--border-width,1px));box-shadow:0 calc(1rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));max-inline-size:calc(37.5rem*var(--classicsponlydonotuse--rem-multipy))}}@media(min-width:37.5rem)and (min-height:11.875rem){.is-opened.-md .now-modal-dialog{block-size:auto;max-block-size:calc(28.125rem*var(--classicsponlydonotuse--rem-multipy));min-block-size:calc(11.875rem*var(--classicsponlydonotuse--rem-multipy))}}@media(max-width:50rem)and (max-height:37.5rem){.is-opened.-lg .now-modal-dialog{block-size:auto;min-block-size:100%}}@media(min-width:50rem){.is-opened.-lg .now-modal-dialog{border-color:RGB(var(--now-modal--border-color,var(--now-window--border-color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-radius:var(--now-modal--border-radius,var(--now-window--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-style:solid;border-width:var(--now-modal--border-width,var(--now-window--border-width,1px));box-shadow:0 calc(1rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));max-inline-size:calc(50rem*var(--classicsponlydonotuse--rem-multipy))}}@media(min-width:50rem)and (min-height:15.875rem){.is-opened.-lg .now-modal-dialog{block-size:auto;max-block-size:calc(37.5rem*var(--classicsponlydonotuse--rem-multipy));min-block-size:calc(15.875rem*var(--classicsponlydonotuse--rem-multipy))}}@media(max-width:26.25rem)and (max-height:19.6875rem){.is-opened.-custom .now-modal-dialog,.is-opened.-fullscreen .now-modal-dialog{block-size:auto;min-block-size:100%}}@media(min-width:26.25rem){.is-opened.-custom .now-modal-dialog{border-color:RGB(var(--now-modal--border-color,var(--now-window--border-color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-radius:var(--now-modal--border-radius,var(--now-window--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-style:solid;border-width:var(--now-modal--border-width,var(--now-window--border-width,1px));box-shadow:0 calc(1rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));inline-size:var(--now-modal--width--custom);max-inline-size:100%;min-inline-size:calc(26.25rem*var(--classicsponlydonotuse--rem-multipy))}}@media(min-width:26.25rem)and (min-height:8.3125rem){.is-opened.-custom .now-modal-dialog{block-size:var(--now-modal--height--custom);max-block-size:90%;min-block-size:calc(8.3125rem*var(--classicsponlydonotuse--rem-multipy))}}@media(max-width:37.5rem)and (max-height:11.875rem){.is-opened.-formsonlydonotuse-md .now-modal-dialog{block-size:auto;min-block-size:100%}}@media(min-width:37.5rem){.is-opened.-formsonlydonotuse-md .now-modal-dialog{border-color:RGB(var(--now-modal--border-color,var(--now-window--border-color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-radius:var(--now-modal--border-radius,var(--now-window--border-radius,calc(.25rem*var(--classicsponlydonotuse--rem-multipy))));border-style:solid;border-width:var(--now-modal--border-width,var(--now-window--border-width,1px));box-shadow:0 calc(1rem*var(--classicsponlydonotuse--rem-multipy)) calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));max-inline-size:calc(37.5rem*var(--classicsponlydonotuse--rem-multipy))}}@media(min-width:37.5rem)and (min-height:11.875rem){.is-opened.-formsonlydonotuse-md .now-modal-dialog{block-size:auto;max-block-size:calc(34.125rem*var(--classicsponlydonotuse--rem-multipy));min-block-size:calc(11.875rem*var(--classicsponlydonotuse--rem-multipy))}}.now-modal-header{flex:none}.now-modal-button-iconic{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-modal--scale-size-inline, 1))}:host(:not([dir=rtl])) .now-modal-button-iconic,:root:not([dir=rtl]) .now-modal-button-iconic{float:right}:host([dir=rtl]) .now-modal-button-iconic,:root[dir=rtl] .now-modal-button-iconic{float:left}.now-modal-heading{color:RGB(var(--now-modal_heading--color,var(--now-window_header_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-modal_heading--font-family,var(--now-window_header--font-family,var(--now-display-type--header-primary--font-family,var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))))));font-size:var(--now-window_header--font-size--lg,var(--now-display-type_header--font-size--lg,var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy)))));font-style:var(--now-modal_heading--font-style,var(--now-window_header--font-style,var(--now-display-type--header-primary--font-style,var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal)))));font-weight:var(--now-modal_heading--font-weight,var(--now-window_header--font-weight,var(--now-display-type--header-primary--font-weight,var(--now-display-type--primary--font-weight,600))));line-height:1.25;margin-block-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-modal--scale-size-block, 1));margin-block-start:0;overflow:hidden;text-overflow:ellipsis;text-transform:var(--now-modal_heading--text-transform,var(--now-window_header--text-transform,var(--now-display-type--header-primary--text-transform,var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none)))));white-space:nowrap}.now-modal-heading:after{content:\\\"\\\";display:block}.now-modal-body{flex:auto;overflow:auto}.now-modal-body:focus-visible{outline:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) solid RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}@media(forced-colors:active){.now-modal-body:focus-visible{outline:1px solid highlight}}.now-modal-body.is-full-width{inline-size:calc(100% + 1.5rem*var(--classicsponlydonotuse--rem-multipy)/2*2 + var(--now-modal--scale-size, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2*2);margin-inline:calc(-1.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-modal--scale-size, 1))}.now-modal-p{font-size:var(--now-window_body--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-modal--font-style,var(--now-window--font-style,normal));font-weight:var(--now-modal--font-weight,var(--now-window--font-weight,normal));line-height:normal;margin-block:0;text-transform:var(--now-modal--text-transform,var(--now-window--text-transform,none))}.now-modal-footer{display:flex;flex:none;flex-direction:column;overflow-x:auto;overflow-y:hidden;padding-block-start:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-modal--scale-size-block, 1))}@media(min-width:26.25rem){.-custom .now-modal-footer,.-fullscreen .now-modal-footer,.-sm .now-modal-footer{flex-direction:row}.-custom .now-modal-footer .now-modal-footer-button,.-fullscreen .now-modal-footer .now-modal-footer-button,.-sm .now-modal-footer .now-modal-footer-button{inline-size:auto}.-custom .now-modal-footer .now-modal-footer-button:nth-last-child(2),.-custom .now-modal-footer .now-modal-footer-button:only-child,.-fullscreen .now-modal-footer .now-modal-footer-button:nth-last-child(2),.-fullscreen .now-modal-footer .now-modal-footer-button:only-child,.-sm .now-modal-footer .now-modal-footer-button:nth-last-child(2),.-sm .now-modal-footer .now-modal-footer-button:only-child{margin-inline-start:auto}.-custom .now-modal-footer .now-modal-footer-button:not(:last-child),.-fullscreen .now-modal-footer .now-modal-footer-button:not(:last-child),.-sm .now-modal-footer .now-modal-footer-button:not(:last-child){margin-block-end:0;margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-modal--scale-size-inline, 1))}}@media(min-width:37.5rem){.-md .now-modal-footer{flex-direction:row}.-md .now-modal-footer .now-modal-footer-button{inline-size:auto}.-md .now-modal-footer .now-modal-footer-button:nth-last-child(2),.-md .now-modal-footer .now-modal-footer-button:only-child{margin-inline-start:auto}.-md .now-modal-footer .now-modal-footer-button:not(:last-child){margin-block-end:0;margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-modal--scale-size-inline, 1))}}@media(min-width:50rem){.-lg .now-modal-footer{flex-direction:row}.-lg .now-modal-footer .now-modal-footer-button{inline-size:auto}.-lg .now-modal-footer .now-modal-footer-button:nth-last-child(2),.-lg .now-modal-footer .now-modal-footer-button:only-child{margin-inline-start:auto}.-lg .now-modal-footer .now-modal-footer-button:not(:last-child){margin-block-end:0;margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-modal--scale-size-inline, 1))}}.now-modal-footer-button{inline-size:100%}.now-modal-footer-button:not(:last-child){margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-modal--scale-size-block, 1))}@media(forced-colors:active){.now-modal.is-opened.-custom .now-modal-dialog,.now-modal.is-opened.-lg .now-modal-dialog,.now-modal.is-opened.-md .now-modal-dialog,.now-modal.is-opened.-sm .now-modal-dialog{border-width:1px}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}:host{display:block}.now-pagination-control{align-items:center;display:flex;flex-wrap:wrap;font-family:var(--now-pagination-control--font-family,var(--now-view-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-size:var(--now-view-control_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-pagination-control--font-style,var(--now-view-control--font-style,normal));font-variant:normal;font-weight:var(--now-pagination-control--font-weight,var(--now-view-control--font-weight,normal));justify-content:center;letter-spacing:inherit;margin-inline:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));text-indent:0;text-shadow:none;text-transform:var(--now-pagination-control--text-transform,var(--now-view-control--text-transform,none));white-space:normal;word-spacing:inherit}.now-pagination-control.only-two-children{justify-content:space-between}.now-pagination-control.only-prev-next{justify-content:flex-end}.now-pagination-control.hide-inline-padding{margin-inline:0}.now-pagination-control .now-line-height-crop{display:block}.now-pagination-control .now-line-height-crop:after,.now-pagination-control .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-pagination-control .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-pagination-control .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-pagination-control .now-line-height-crop+.now-pagination-control .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-pagination-control-page-range-label{color:RGB(var(--now-pagination-control_page-range-label--color,var(--now-view-control_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-pagination-control_page-range-label--font-family,var(--now-view-control_label--font-family,var(--now-view-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-pagination-control_page-range-label--font-style,var(--now-view-control_label--font-style,var(--now-view-control--font-style,normal)));font-weight:var(--now-pagination-control_page-range-label--font-weight,var(--now-view-control_label--font-weight,var(--now-view-control--font-weight,normal)));margin-block:0;text-transform:var(--now-pagination-control_page-range-label--text-transform,var(--now-view-control_label--text-transform,var(--now-view-control--text-transform,none)))}.now-pagination-control-pages{align-items:flex-start;display:flex;justify-content:center;margin:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)) auto}.now-pagination-control-pages.has-one-sibling{margin-inline:0}.now-pagination-control-pages.has-input-control{align-items:center}.now-pagination-control-button-iconic{--now-button-iconic--bare_tertiary--border-radius:var(--now-pagination-control_button-iconic--border-radius,var(--now-view-control_action--bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,4px))));--now-button-iconic--bare_tertiary--border-width:var(--now-pagination-control_button-iconic--border-width,var(--now-view-control_action--bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));--now-button-iconic--bare_tertiary--border-color--hover:var(--now-pagination-control_button-iconic--border-color--hover,var(--now-view-control_action--tertiary--border-color--hover,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))));--now-button-iconic--bare_tertiary--border-color-alpha--hover:var(--now-pagination-control_button-iconic--border-color-alpha--hover,var(--now-view-control_action--tertiary--border-color-alpha--hover,var(--now-view-control_action--tertiary--border-color-alpha,0)));--now-button-iconic--bare_tertiary--border-color--active:var(--now-pagination-control_button-iconic--border-color--active,var(--now-view-control_action--tertiary--border-color--active,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))));--now-button-iconic--bare_tertiary--border-color-alpha--active:var(--now-pagination-control_button-iconic--border-color-alpha--active,var(--now-view-control_action--tertiary--border-color-alpha--active,var(--now-view-control_action--tertiary--border-color-alpha,0)));--now-button-iconic--bare_tertiary--color:var(--now-pagination-control_button-iconic--color,var(--now-view-control_action_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));--now-button-iconic--bare_tertiary--color--hover:var(--now-pagination-control_button-iconic--color--hover,var(--now-view-control_action_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))));--now-button-iconic--bare_tertiary--color--active:var(--now-pagination-control_button-iconic--color--active,var(--now-view-control_action_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-pagination-control_button-iconic--background-color--hover,var(--now-view-control_action--tertiary--background-color--hover,var(--now-view-control_action--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-pagination-control_button-iconic--background-color-alpha--hover,var(--now-view-control_action--tertiary--background-color-alpha--hover,var(--now-opacity--least,0.1)));--now-button-iconic--bare_tertiary--background-color--active:var(--now-pagination-control_button-iconic--background-color--active,var(--now-view-control_action--tertiary--background-color--active,var(--now-view-control_action--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-pagination-control_button-iconic--background-color-alpha--active,var(--now-view-control_action--tertiary--background-color-alpha--active,var(--now-opacity--less,0.25)));--now-button-iconic--bare_tertiary--opacity--disabled:var(--now-pagination-control_button-iconic--opacity--disabled,var(--now-view-control_action--tertiary--opacity--disabled,var(--now-opacity--less,0.25)))}.now-pagination-control-button{align-items:center;background-color:RGB(var(--now-pagination-control_button--background-color,var(--now-view-control_item--secondary--background-color,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))),var(--now-pagination-control_button--background-color-alpha,var(--now-view-control_item--secondary--background-color-alpha,0)));block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);border-color:RGB(var(--now-pagination-control_button--border-color,var(--now-view-control_item--secondary--border-color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-pagination-control_button--border-color-alpha,var(--now-view-control_item--secondary--border-color-alpha,var(--now-view-control_action--bare--border-color-alpha,0))));border-radius:var(--now-pagination-control_button--border-radius,var(--now-view-control_item--secondary--border-radius,var(--now-view-control_item--border-radius,0)));border-style:solid;border-width:var(--now-pagination-control_button--border-width,var(--now-view-control_item--secondary--border-width,var(--now-view-control_action--bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)))));color:var(--now-pagination-control_button--color,var(--now-view-control_item_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));cursor:pointer;display:flex;font-family:var(--now-pagination-control_button--font-family,var(--now-view-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-size:var(--now-view-control_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-pagination-control_button--font-style,var(--now-view-control--font-style,normal));font-weight:var(--now-pagination-control_button--font-weight,var(--now-view-control--font-weight,normal));justify-content:center;line-height:1.25;margin-block:0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline:0;min-inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-button--scale-size-inline, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-block:0;padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-button--scale-size-inline, 1));white-space:nowrap}.now-pagination-control-button::-moz-focus-inner{border-style:none}.now-pagination-control-button:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-pagination-control-button:focus{outline:1px solid highlight}}.now-pagination-control-button:hover{background-color:RGB(var(--now-pagination-control_button--background-color--hover,var(--now-view-control_item--secondary--background-color--hover,var(--now-color--secondary-2,1,89,107))),var(--now-pagination-control_button--background-color-alpha--hover,var(--now-view-control_item--secondary--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-pagination-control_button--border-color--hover,var(--now-view-control_item--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))),var(--now-pagination-control_button--border-color-alpha--hover,var(--now-view-control_item--secondary--border-color-alpha--hover,var(--now-view-control_item--secondary--border-color-alpha,var(--now-view-control_action--bare--border-color-alpha,0)))));color:RGB(var(--now-pagination-control_button--color--hover,var(--now-view-control_item_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-pagination-control-button:active{background-color:RGB(var(--now-pagination-control_button--background-color--active,var(--now-view-control_item--secondary--background-color--active,var(--now-color--secondary-2,1,89,107))),var(--now-pagination-control_button--background-color-alpha--active,var(--now-view-control_item--secondary--background-color-alpha--active,var(--now-opacity--less,.25))));border-color:RGB(var(--now-pagination-control_button--border-color--active,var(--now-view-control_item--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))),var(--now-pagination-control_button--border-color-alpha--active,var(--now-view-control_item--secondary--border-color-alpha--active,var(--now-view-control_item--secondary--border-color-alpha,var(--now-view-control_action--bare--border-color-alpha,0)))));color:RGB(var(--now-pagination-control_button--color--active,var(--now-view-control_item_label--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-pagination-control-button.is-selected{background-color:RGB(var(--now-pagination-control_button--background-color--selected,var(--now-view-control_item--secondary--background-color--selected,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-pagination-control_button--background-color-alpha--selected,var(--now-view-control_item--secondary--background-color-alpha--selected,1)));border-color:RGB(var(--now-pagination-control_button--border-color--selected,var(--now-view-control_item--secondary--border-color--selected,var(--now-view-control_item--secondary--border-color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))),var(--now-pagination-control_button--border-color-alpha--selected,var(--now-view-control_item--secondary--border-color-alpha--selected,var(--now-view-control_item--secondary--border-color-alpha,var(--now-view-control_action--bare--border-color-alpha,0)))));border-width:var(--now-pagination-control_button--border-width--selected,var(--now-view-control_item--secondary--border-width--selected,var(--now-view-control_item--secondary--border-width,var(--now-view-control_action--bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))))));color:RGB(var(--now-pagination-control_button--color--selected,var(--now-view-control_item_label--secondary--color--selected,var(--now-view-control_item_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))));font-family:var(--now-pagination-control_button--font-family--selected,var(--now-view-control_item_label--secondary--font-family,var(--now-view-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-pagination-control_button--font-style--selected,var(--now-view-control_item_label--secondary--font-style,var(--now-view-control--font-style,normal)));font-weight:var(--now-pagination-control_button--font-weight--selected,var(--now-view-control_item_label--primary--font-weight--selected,bold))}.now-pagination-control-button.is-selected:hover{background-color:RGB(var(--now-pagination-control_button--background-color--selected_hover,var(--now-view-control_item--secondary--background-color--selected_hover,var(--now-view-control_item--secondary--background-color--selected,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))))),var(--now-pagination-control_button--background-color-alpha--selected_hover,var(--now-view-control_item--secondary--background-color-alpha--selected_hover,var(--now-view-control_item--secondary--background-color-alpha--selected,1))));border-color:RGB(var(--now-pagination-control_button--border-color--selected_hover,var(--now-view-control_item--secondary--border-color--selected_hover,var(--now-view-control_item--secondary--border-color--selected,var(--now-view-control_item--secondary--border-color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))),var(--now-pagination-control_button--border-color-alpha--selected_hover,var(--now-view-control_item--secondary--border-color-alpha--selected_hover,var(--now-view-control_item--secondary--border-color-alpha,var(--now-view-control_action--bare--border-color-alpha,0)))));color:RGB(var(--now-pagination-control_button--color--selected_hover,var(--now-view-control_item_label--secondary--color--selected_hover,var(--now-view-control_item_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-pagination-control-button.is-selected:active{background-color:RGB(var(--now-pagination-control_button--background-color--selected_active,var(--now-view-control_item--secondary--background-color--selected_active,var(--now-view-control_item--secondary--background-color--selected,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))))),var(--now-pagination-control_button--background-color-alpha--selected_active,var(--now-view-control_item--secondary--background-color-alpha--selected_active,var(--now-view-control_item--secondary--background-color-alpha--selected,1))));border-color:RGB(var(--now-pagination-control_button--border-color--selected_active,var(--now-view-control_item--secondary--border-color--selected_active,var(--now-view-control_item--secondary--border-color--selected,var(--now-view-control_item--secondary--border-color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))),var(--now-pagination-control_button--border-color-alpha--selected_active,var(--now-view-control_item--secondary--border-color-alpha--selected_active,var(--now-view-control_item--secondary--border-color-alpha,var(--now-view-control_action--bare--border-color-alpha,0)))));color:RGB(var(--now-pagination-control_button--color--selected_active,var(--now-view-control_item_label--secondary--color--selected_active,var(--now-view-control_item_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-pagination-control-input-container{align-items:center;display:flex;flex-wrap:wrap;margin-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-pagination-control-input-label{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-pagination-control-form-field{background-color:RGB(var(--now-form-field--background-color,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field--background-color-alpha,var(--now-form-control-input--background-color-alpha,1)));block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy));border-color:RGB(var(--now-form-field--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-form-field--border-radius,var(--now-form-control-input--primary--border-radius,4px));border-style:solid;border-width:var(--now-form-field--border-width,var(--now-form-control-input--primary--border-width,0));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-form-field_inset--color,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))),var(--now-form-field_inset--color-alpha,var(--now-opacity--least,.1))),0 var(--now-form-field--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-form-field--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));margin-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-pagination-control-form-field:hover{background-color:RGB(var(--now-form-field--background-color--hover,var(--now-form-control-input--primary--background-color--hover,var(--now-color--primary-0,221,237,233))),var(--now-form-field--background-color-alpha--hover,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-form-field--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-form-field_inset--color--hover,var(--now-form-control-input_inner-shadow--primary--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-form-field_inset--color-alpha--hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-form-field--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-form-field--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.now-pagination-control-form-field.has-focus,.now-pagination-control-form-field:focus{background-color:RGB(var(--now-form-field--background-color--focus,var(--now-form-control-input--primary--background-color--focus,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-form-field--background-color-alpha--focus,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-form-field--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))));box-shadow:0 calc(var(--now-form-field--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-form-field--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-form-field_inset--color--focus,var(--now-form-control-input_inner-shadow--primary--color--focus,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-form-field_inset--color-alpha--focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-form-field--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-form-field--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-form-field--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.now-pagination-control-native-input{-webkit-appearance:textfield;appearance:textfield;background:none;block-size:100%;border:none;color:RGB(var(--now-pagination-control--color,var(--now-view-control_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-pagination-control--font-family,var(--now-view-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-pagination-control--font-style,var(--now-view-control--font-style,normal));font-variant:normal;font-weight:var(--now-pagination-control--font-weight,var(--now-view-control--font-weight,normal));inline-size:100%;letter-spacing:inherit;line-height:1;min-inline-size:0;outline:none;padding:0;text-align:center;text-indent:0;text-shadow:none;text-transform:var(--now-pagination-control--text-transform,var(--now-view-control--text-transform,none));white-space:normal;word-spacing:inherit}.now-pagination-control-native-input::-webkit-inner-spin-button,.now-pagination-control-native-input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.now-pagination-control-dropdown{--now-dropdown--bare_secondary--border-radius:var(--now-pagination-control_dropdown--border-radius,var(--now-view-control_action--border-radius,var(--now-view-control--border-radius,0)));--now-dropdown--bare_secondary--border-width:var(--now-pagination-control_dropdown--border-width,var(--now-view-control_action--border-width,var(--now-view-control--border-width,0)));--now-dropdown--bare--font-family:var(--now-pagination-control_dropdown--font-family,var(--now-view-control_action--font-family,var(--now-view-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));--now-dropdown--bare--font-style:var(--now-pagination-control_dropdown--font-style,var(--now-view-control_action--font-style,var(--now-view-control--font-style,normal)));--now-dropdown--bare--font-weight:var(--now-pagination-control_dropdown--font-weight,var(--now-view-control_action--font-weight,var(--now-view-control--font-weight,normal)));--now-dropdown--bare_secondary--border-color--hover:var(--now-pagination-control_dropdown--border-color--hover,var(--now-view-control_action--bare_primary--border-color--hover,var(--now-color--secondary-2,1,89,107)));--now-dropdown--bare_secondary--border-color-alpha--hover:var(--now-pagination-control_dropdown--border-color-alpha--hover,var(--now-view-control_action--bare_primary--border-color-alpha,var(--now-view-control_action--bare--border-color-alpha,0)));--now-dropdown--bare_secondary--border-color--active:var(--now-pagination-control_dropdown--border-color--active,var(--now-view-control_action--bare_primary--border-color--active,var(--now-color--secondary-3,1,60,71)));--now-dropdown--bare_secondary--border-color-alpha--active:var(--now-pagination-control_dropdown--border-color-alpha--active,var(--now-view-control_action--bare_primary--border-color-alpha--active,var(--now-view-control_action--bare_primary--border-color-alpha,var(--now-view-control_action--bare--border-color-alpha,0))));--now-dropdown--bare_secondary--color:var(--now-pagination-control_dropdown--color,var(--now-view-control_action_label--bare_primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-dropdown--bare_secondary--color--hover:var(--now-pagination-control_dropdown--color--hover,var(--now-view-control_action_label--bare_primary--color--hover,var(--now-color--secondary-2,1,89,107)));--now-dropdown--bare_secondary--color--active:var(--now-pagination-control_dropdown--color--active,var(--now-view-control_action_label--bare_primary--color--active,var(--now-color--secondary-3,1,60,71)));--now-dropdown_trigger-icon--bare_secondary--color:var(--now-pagination-control_dropdown_trigger-icon--color,var(--now-view-control_action_trigger-icon--bare_primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-dropdown_trigger-icon--bare_secondary--color--hover:var(--now-pagination-control_dropdown_trigger-icon--color--hover,var(--now-view-control_action_trigger-icon--bare_primary--color--hover,var(--now-color--secondary-2,1,89,107)));--now-dropdown_trigger-icon--bare_secondary--color--active:var(--now-pagination-control_dropdown_trigger-icon--color--active,var(--now-view-control_action_trigger-icon--bare_primary--color--active,var(--now-color--secondary-3,1,60,71)));--now-dropdown--bare_secondary--background-color--hover:var(--now-pagination-control_dropdown--background-color--hover,var(--now-view-control_action--bare_primary--background-color--hover,var(--now-color--secondary-1,1,119,142)));--now-dropdown--bare_secondary--background-color-alpha--hover:var(--now-pagination-control_dropdown--background-color-alpha--hover,var(--now-view-control_action--bare_primary--background-color-alpha--hover,var(--now-view-control_action--bare--background-color-alpha--hover,var(--now-opacity--least,0.1))));--now-dropdown--bare_secondary--background-color--active:var(--now-pagination-control_dropdown--background-color--active,var(--now-view-control_action--bare_primary--background-color--active,var(--now-color--secondary-1,1,119,142)));--now-dropdown--bare_secondary--background-color-alpha--active:var(--now-pagination-control_dropdown--background-color-alpha--active,var(--now-view-control_action--bare_primary--background-color-alpha--active,var(--now-view-control_action--bare--background-color-alpha--active,var(--now-opacity--less,0.25))));--now-dropdown_label--font-style:var(--now-pagination-control_dropdown_label--font-style,var(--now-view-control_label--font-style,var(--now-view-control--font-style,normal)));--now-dropdown_label--font-weight:var(--now-pagination-control_dropdown_label--font-weight,var(--now-view-control_label--font-weight,var(--now-view-control--font-weight,normal)));--now-dropdown_label--font-family:var(--now-pagination-control_dropdown_label--font-family,var(--now-view-control_label--font-family,var(--now-view-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));--now-dropdown_label--text-transform:var(--now-pagination-control_dropdown_label--text-transform,var(--now-view-control_label--text-transform,var(--now-view-control--text-transform,none)));--now-dropdown_label--color:var(--now-pagination-control_dropdown_label--color,var(--now-view-control_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}@media(forced-colors:active){.now-pagination-control-button{border-style:solid;border-width:1px}.now-pagination-control-button:focus,.now-pagination-control-button:hover{background-color:highlighttext;border-color:highlight;color:highlight}.now-pagination-control-button.is-selected{background-color:selecteditem;color:selecteditemtext;forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}:host{--now-line-height:0;display:inline-block;vertical-align:middle}:host([size=xs]){min-inline-size:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=sm]){min-inline-size:calc(3.125rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=md]){min-inline-size:calc(4.75rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=xs][show-identifier]){min-inline-size:calc(3.375rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=sm][show-identifier]){min-inline-size:calc(4.375rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=md][show-identifier]){min-inline-size:calc(6rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=xs][can-dismiss]){min-inline-size:calc(3.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=sm][can-dismiss]){min-inline-size:calc(4.125rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=md][can-dismiss]){min-inline-size:calc(6rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=xs][show-identifier][can-dismiss]){min-inline-size:calc(4.375rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=sm][show-identifier][can-dismiss]){min-inline-size:calc(5.375rem*var(--classicsponlydonotuse--rem-multipy))}:host([size=md][show-identifier][can-dismiss]){min-inline-size:calc(7.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-pill{align-items:center;display:flex;font-variant:normal;letter-spacing:inherit;position:relative;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit}.now-pill .now-line-height-crop{inline-size:100%;min-inline-size:0}.now-pill-label-wrapper{align-items:center;background-color:RGB(var(--now-pill--background-color,var(--now-form-control-pill--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));border-color:RGB(var(--now-pill--border-color,var(--now-form-control-pill--border-color,var(--now-color_border--secondary,var(--now-color--neutral-5,172,180,181)))));border-style:solid;border-width:var(--now-pill--border-width,var(--now-form-control-pill--border-width,1px));color:RGB(var(--now-pill--color,var(--now-form-control-pill_label--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));display:flex;font-family:var(--now-pill--font-family,var(--now-form-control-pill--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-pill--font-style,var(--now-form-control-pill--font-style,var(--now-form-control--font-style,normal)));font-weight:var(--now-pill--font-weight,var(--now-form-control-pill--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;justify-content:center;text-transform:var(--now-pill--text-transform,var(--now-form-control-pill--text-transform,var(--now-form-control--text-transform,none)))}.-xs .now-pill-label-wrapper{block-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.5625rem*var(--classicsponlydonotuse--rem-multipy));font-size:var(--now-form-control_value--font-size--xs,var(--now-font-size--xs,calc(.625rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.2;padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-xs .now-pill-label-wrapper.show-identifier{padding-inline-start:0}.-xs .now-pill-label-wrapper .now-line-height-crop{display:block}.-xs .now-pill-label-wrapper .now-line-height-crop:after,.-xs .now-pill-label-wrapper .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-xs .now-pill-label-wrapper .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*.96)}.-xs .now-pill-label-wrapper .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*.96)}.-xs .now-pill-label-wrapper .now-line-height-crop+.-xs .now-pill-label-wrapper .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*.96*-1)}.-xs .now-pill-label-wrapper.show-dismiss{padding-inline-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-pill-label-wrapper{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-pill-label-wrapper.show-identifier{padding-inline-start:0}.-sm .now-pill-label-wrapper .now-line-height-crop{display:block}.-sm .now-pill-label-wrapper .now-line-height-crop:after,.-sm .now-pill-label-wrapper .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-sm .now-pill-label-wrapper .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.-sm .now-pill-label-wrapper .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.-sm .now-pill-label-wrapper .now-line-height-crop+.-sm .now-pill-label-wrapper .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-sm .now-pill-label-wrapper.show-dismiss{padding-inline-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-pill-label-wrapper{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-pill-label-wrapper.show-dismiss{padding-inline-end:calc(2.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-pill-label-wrapper.show-identifier{padding-inline-start:0}.-md .now-pill-label-wrapper .now-line-height-crop{display:block}.-md .now-pill-label-wrapper .now-line-height-crop:after,.-md .now-pill-label-wrapper .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-md .now-pill-label-wrapper .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-md .now-pill-label-wrapper .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-md .now-pill-label-wrapper .now-line-height-crop+.-md .now-pill-label-wrapper .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-pill-label-wrapper.-button{cursor:pointer;margin:0;padding-block:0}.now-pill-label-wrapper.-button:not(.is-disabled).has-hover,.now-pill-label-wrapper.-button:not(.is-disabled):hover{background-color:RGB(var(--now-pill--background-color--hover,var(--now-form-control-pill--background-color--hover,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))));border-color:RGB(var(--now-pill--border-color--hover,var(--now-form-control-pill--border-color--hover,var(--now-form-control-pill--border-color,var(--now-color_border--secondary,var(--now-color--neutral-5,172,180,181))))));color:RGB(var(--now-pill--color--hover,var(--now-form-control-pill_label--color--hover,var(--now-color--primary-1,30,133,109))))}.now-pill-label-wrapper.-button:not(.is-disabled).has-hover .now-pill-identifier,.now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-identifier{background-color:RGB(var(--now-pill_identifier--background-color--hover,var(--now-form-control-pill_identifier--background-color--hover,var(--now-form-control-pill--background-color--hover,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247))))));border-color:RGB(var(--now-pill_identifier--border-color--hover,var(--now-form-control-pill_identifier--border-color--hover,var(--now-form-control-pill_identifier--border-color,var(--now-color_border--secondary,var(--now-color--neutral-5,172,180,181))))));color:RGB(var(--now-pill_identifier--color--hover,var(--now-form-control-pill_identifier_icon--color--hover,var(--now-color--primary-1,30,133,109))))}.now-pill-label-wrapper.-button:not(.is-disabled):active{background-color:RGB(var(--now-pill--background-color--active,var(--now-form-control-pill--background-color--active,var(--now-color--primary-0,221,237,233))));border-color:RGB(var(--now-pill--border-color--active,var(--now-form-control-pill--border-color--active,var(--now-color--primary-1,30,133,109))));color:RGB(var(--now-pill--color--active,var(--now-form-control-pill_label--color--active,var(--now-color--primary-2,23,100,82))))}.now-pill-label-wrapper.-button:not(.is-disabled):active .now-pill-identifier{background-color:RGB(var(--now-pill_identifier--background-color--active,var(--now-form-control-pill_identifier--background-color--active,var(--now-form-control-pill--background-color--active,var(--now-color--primary-0,221,237,233)))));border-color:RGB(var(--now-pill_identifier--border-color--active,var(--now-form-control-pill_identifier--border-color--active,var(--now-color--primary-1,30,133,109))));color:RGB(var(--now-pill_identifier--color--active,var(--now-form-control-pill_identifier_icon--color--active,var(--now-color--primary-2,23,100,82))))}.now-pill-label-wrapper.-button.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-pill-label-wrapper.-button.is-disabled:hover{box-shadow:none}.now-pill-label-wrapper.-button.is-disabled:focus::-moz-focus-inner{border-style:none}.now-pill-label-wrapper.-button.is-disabled:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-pill-label-wrapper.-button.is-disabled:focus:focus{outline:1px solid highlight}}.now-pill-label-wrapper.-button:focus{outline:none}.now-pill-label-wrapper.-button:focus:after{block-size:100%;border-radius:inherit;box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));content:\\\"\\\";inline-size:100%;inset-block-start:0;inset-inline-start:0;pointer-events:none;position:absolute}.now-pill-label-wrapper.-button:focus::-moz-focus-inner{border-style:none}.is-selected .now-pill-label-wrapper.-button{background-color:RGB(var(--now-pill--background-color--selected,var(--now-form-control-pill--background-color--selected,var(--now-color--primary-1,30,133,109))));border-color:RGB(var(--now-pill--border-color--selected,var(--now-form-control-pill--border-color--selected,var(--now-color--primary-1,30,133,109))));color:RGB(var(--now-pill--color--selected,var(--now-form-control-pill_label--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.is-selected .now-pill-label-wrapper.-button:not(.is-disabled).has-hover,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover{background-color:RGB(var(--now-pill--background-color--selected_hover,var(--now-form-control-pill--background-color--selected_hover,var(--now-color--primary-2,23,100,82))));border-color:RGB(var(--now-pill--border-color--selected_hover,var(--now-form-control-pill--border-color--selected_hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-pill--color--selected_hover,var(--now-form-control-pill_label--color--selected_hover,var(--now-form-control-pill_label--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255))))))}.is-selected .now-pill-label-wrapper.-button:not(.is-disabled).has-hover .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-identifier{background-color:RGB(var(--now-pill_identifier--background-color--selected_hover,var(--now-form-control-pill_identifier--background-color--selected_hover,var(--now-form-control-pill_identifier--background-color--selected,var(--now-color--primary-0,221,237,233)))));border-color:RGB(var(--now-pill_identifier--border-color--selected_hover,var(--now-form-control-pill_identifier--border-color--selected_hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-pill_identifier--color--selected_hover,var(--now-form-control-pill_identifier_icon--color--selected_hover,var(--now-form-control-pill_identifier_icon--color--selected,var(--now-color--primary-2,23,100,82)))))}.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):active{background-color:RGB(var(--now-pill--background-color--selected_active,var(--now-form-control-pill--background-color--selected_active,var(--now-color--primary-3,15,67,55))));border-color:RGB(var(--now-pill--border-color--selected_active,var(--now-form-control-pill--border-color--selected_active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-pill--color--selected_active,var(--now-form-control-pill_label--color--selected_active,var(--now-form-control-pill_label--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255))))))}.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):active .now-pill-identifier{background-color:RGB(var(--now-pill_identifier--background-color--selected_active,var(--now-form-control-pill_identifier--background-color--selected_active,var(--now-form-control-pill_identifier--background-color--selected,var(--now-color--primary-0,221,237,233)))));border-color:RGB(var(--now-pill_identifier--border-color--selected_active,var(--now-form-control-pill_identifier--border-color--selected_active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-pill_identifier--color--selected_active,var(--now-form-control-pill_identifier_icon--color--selected_active,var(--now-form-control-pill_identifier_icon--color--selected,var(--now-color--primary-2,23,100,82)))))}.is-selected .now-pill-label-wrapper.-label{background-color:RGB(var(--now-pill--background-color--selected,var(--now-form-control-pill--background-color--selected,var(--now-color--primary-1,30,133,109))));border-color:RGB(var(--now-pill--border-color--selected,var(--now-form-control-pill--border-color--selected,var(--now-color--primary-1,30,133,109))));color:RGB(var(--now-pill--color--selected,var(--now-form-control-pill_label--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-pill-button-iconic{--now-button-iconic--bare_tertiary--background-color-alpha--hover:0;--now-button-iconic--bare_tertiary--background-color-alpha--active:0;--now-button-iconic--bare_tertiary--color:var(--now-pill_button-iconic--color,var(--now-form-control-pill_action_icon--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-button-iconic--bare_tertiary--color--hover:var(--now-pill_button-iconic--color--hover,var(--now-form-control-pill_action_icon--color--hover,var(--now-color--primary-1,30,133,109)));--now-button-iconic--bare_tertiary--color--active:var(--now-pill_button-iconic--color--active,var(--now-form-control-pill_action_icon--color--active,var(--now-color--primary-2,23,100,82)));position:absolute}.-sm .now-pill-button-iconic,.-xs .now-pill-button-iconic{inset-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-pill-button-iconic{inset-inline-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.is-selected .now-pill-button-iconic{--now-button-iconic--bare_tertiary--color:var(--now-pill_button-iconic--color--selected,var(--now-form-control-pill_action_icon--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255))))}.is-selected .now-pill-button-iconic:hover{--now-button-iconic--bare_tertiary--color--hover:var(--now-pill_button-iconic--color--selected_hover,var(--now-form-control-pill_action_icon--color--selected_hover,var(--now-form-control-pill_action_icon--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.is-selected .now-pill-button-iconic:active{--now-button-iconic--bare_tertiary--color--active:var(--now-pill_button-iconic--color--selected_active,var(--now-form-control-pill_action_icon--color--selected_active,var(--now-form-control-pill_action_icon--color--selected,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.is-selected .now-pill-button-iconic:focus-within{--now-color_focus-ring:var(--now-color--neutral-0,255,255,255)}.now-pill-identifier{align-items:center;background-color:RGB(var(--now-pill_identifier--background-color,var(--now-form-control-pill_identifier--background-color,var(--now-form-control-pill--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));border-color:RGB(var(--now-pill_identifier--border-color,var(--now-form-control-pill_identifier--border-color,var(--now-color_border--secondary,var(--now-color--neutral-5,172,180,181)))));border-style:solid;border-width:var(--now-pill--border-width,var(--now-form-control-pill--border-width,1px));color:RGB(var(--now-pill_identifier--color,var(--now-form-control-pill_identifier_icon--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));display:flex;flex-shrink:0;justify-content:center;margin-block:calc(var(--now-pill--border-width, var(--now-form-control-pill--border-width, 1px))*-1);margin-inline:calc(var(--now-pill--border-width, var(--now-form-control-pill--border-width, 1px))*-1) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-xs .now-pill-identifier{block-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.5625rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-pill-identifier{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-pill-identifier{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(1rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.is-selected .now-pill-identifier{background-color:RGB(var(--now-pill_identifier--background-color--selected,var(--now-form-control-pill_identifier--background-color--selected,var(--now-color--primary-0,221,237,233))));border-color:RGB(var(--now-pill_identifier--border-color--selected,var(--now-form-control-pill_identifier--border-color--selected,var(--now-color--primary-1,30,133,109))));color:RGB(var(--now-pill_identifier--color--selected,var(--now-form-control-pill_identifier_icon--color--selected,var(--now-color--primary-2,23,100,82))))}.-xs .now-pill-icon{transform:scale(.75)}.now-pill-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-pill-label:after{content:\\\"\\\";display:block}@media(forced-colors:active){.now-pill-button,.now-pill-identifier,.now-pill-label-wrapper.-button{background-color:buttonface;border-color:buttonborder;border-style:solid;border-width:1px}.now-pill-identifier{background-color:buttonface}.now-pill-label{forced-color-adjust:none}.now-pill-button:not(.is-disabled) .now-pill-label,.now-pill-label-wrapper.-button:not(.is-disabled) .now-pill-label{color:buttontext}.now-pill-button:not(.is-disabled).has-hover .now-pill-identifier,.now-pill-label-wrapper.-button:not(.is-disabled).has-hover .now-pill-identifier{background-color:buttonface}.now-pill-button:not(.is-disabled):focus,.now-pill-button:not(.is-disabled):hover,.now-pill-label-wrapper.-button:not(.is-disabled):focus,.now-pill-label-wrapper.-button:not(.is-disabled):hover{background-color:highlighttext;border-color:highlight}.now-pill-button:not(.is-disabled):focus .now-pill-identifier,.now-pill-button:not(.is-disabled):hover .now-pill-identifier,.now-pill-label-wrapper.-button:not(.is-disabled):focus .now-pill-identifier,.now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-identifier{background-color:highlighttext;border-color:highlight;color:highlight}.now-pill-button:not(.is-disabled):focus .now-pill-label,.now-pill-button:not(.is-disabled):hover .now-pill-label,.now-pill-label-wrapper.-button:not(.is-disabled):focus .now-pill-label,.now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-label{color:highlight}.is-selected .now-pill-button:not(.is-disabled),.is-selected .now-pill-label-wrapper.-button:not(.is-disabled){background-color:selecteditem}.is-selected .now-pill-button:not(.is-disabled) .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled) .now-pill-identifier{background-color:selecteditem;border-color:buttonborder;color:selecteditemtext}.is-selected .now-pill-button:not(.is-disabled) .now-pill-label,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled) .now-pill-label{color:selecteditemtext}.is-selected .now-pill-button:not(.is-disabled).has-hover .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled).has-hover .now-pill-identifier{border-color:selecteditemtext}.is-selected .now-pill-button:not(.is-disabled).has-hover,.is-selected .now-pill-button:not(.is-disabled):focus,.is-selected .now-pill-button:not(.is-disabled):hover,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled).has-hover,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):focus,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover{background-color:selecteditem}.is-selected .now-pill-button:not(.is-disabled).has-hover .now-pill-identifier,.is-selected .now-pill-button:not(.is-disabled):focus .now-pill-identifier,.is-selected .now-pill-button:not(.is-disabled):hover .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled).has-hover .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):focus .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-identifier{background-color:selecteditem;border-color:buttonborder;color:selecteditemtext}.is-selected .now-pill-button:not(.is-disabled):focus,.is-selected .now-pill-button:not(.is-disabled):focus .now-pill-identifier,.is-selected .now-pill-button:not(.is-disabled):hover,.is-selected .now-pill-button:not(.is-disabled):hover .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):focus,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):focus .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-identifier{border-color:highlight}.now-pill-button.is-disabled,.now-pill-label-wrapper.-button.is-disabled{color:graytext;opacity:1}.is-selected .now-pill-button.is-disabled,.is-selected .now-pill-button.is-disabled .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button.is-disabled,.is-selected .now-pill-label-wrapper.-button.is-disabled .now-pill-identifier{background-color:graytext;color:buttonface}.now-pill-label-wrapper.-label{background-color:canvas;border-color:canvastext;border-style:solid;border-width:1px}.now-pill-label-wrapper.-label .now-pill-label{color:canvastext}.now-pill-label-wrapper.-label .now-pill-identifier{background-color:canvas;border-color:canvastext;color:canvastext}.is-selected .now-pill-label-wrapper.-label{background-color:selecteditem}.is-selected .now-pill-label-wrapper.-label .now-pill-identifier{background-color:selecteditem;border-color:canvastext;color:selecteditemtext}.is-selected .now-pill-label-wrapper.-label .now-pill-label{color:selecteditemtext}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{block-size:0;display:block;inline-size:0;position:relative}.fit-content-area{visibility:hidden;z-index:4000}.fit-content-area.has-tail:after,.fit-content-area.has-tail:before{block-size:0;border:solid transparent;content:\\\" \\\";inline-size:0;pointer-events:none;position:absolute}.fit-content-area.has-tail:before{border-width:calc(.625rem*var(--classicsponlydonotuse--rem-multipy));filter:drop-shadow(0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(56,56,56,var(--now-opacity--less,.25)))}.fit-content-area.has-tail:after{border-width:calc(.5625rem*var(--classicsponlydonotuse--rem-multipy))}.fit-content-area.has-tail.-up:before{border-block-end-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-block-start:0;inset-block-start:calc(-.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-up:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-up:before{inset-inline-start:var(--popover-tail,1px)}:host([dir=rtl]) .fit-content-area.has-tail.-up:before,:root[dir=rtl] .fit-content-area.has-tail.-up:before{inset-inline-end:var(--popover-tail,1px)}.fit-content-area.has-tail.-up:after{border-block-end-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));border-block-start:0;inset-block-start:calc(-.4375rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-up:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-up:after{inset-inline-start:calc(var(--popover-tail, 0px) + 1px)}:host([dir=rtl]) .fit-content-area.has-tail.-up:after,:root[dir=rtl] .fit-content-area.has-tail.-up:after{inset-inline-end:calc(var(--popover-tail, 0px) + 1px)}.fit-content-area.has-tail.-up.has-focus:before{border-block-end-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.fit-content-area.has-tail.-down:before{border-block-end:0;border-block-start-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));inset-block-end:calc(-.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-down:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-down:before{inset-inline-start:var(--popover-tail,1px)}:host([dir=rtl]) .fit-content-area.has-tail.-down:before,:root[dir=rtl] .fit-content-area.has-tail.-down:before{inset-inline-end:var(--popover-tail,1px)}.fit-content-area.has-tail.-down:after{border-block-end:0;border-block-start-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));inset-block-end:calc(-.4375rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-down:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-down:after{inset-inline-start:calc(var(--popover-tail, 0px) + 1px)}:host([dir=rtl]) .fit-content-area.has-tail.-down:after,:root[dir=rtl] .fit-content-area.has-tail.-down:after{inset-inline-end:calc(var(--popover-tail, 0px) + 1px)}.fit-content-area.has-tail.-down.has-focus:before{border-block-start-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.fit-content-area.has-tail.-right:before{inset-block-start:var(--popover-tail,1px)}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:before{inset-inline-end:calc(-.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .fit-content-area.has-tail.-right:before,:root[dir=rtl] .fit-content-area.has-tail.-right:before{inset-inline-start:calc(-.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:before{border-inline-start-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}:host([dir=rtl]) .fit-content-area.has-tail.-right:before,:root[dir=rtl] .fit-content-area.has-tail.-right:before{border-inline-end-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:before{border-inline-end:0}:host([dir=rtl]) .fit-content-area.has-tail.-right:before,:root[dir=rtl] .fit-content-area.has-tail.-right:before{border-inline-start:0}.fit-content-area.has-tail.-right:after{inset-block-start:calc(var(--popover-tail, 0px) + 1px)}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:after{inset-inline-end:calc(-.4375rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .fit-content-area.has-tail.-right:after,:root[dir=rtl] .fit-content-area.has-tail.-right:after{inset-inline-start:calc(-.4375rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:after{border-inline-start-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))))}:host([dir=rtl]) .fit-content-area.has-tail.-right:after,:root[dir=rtl] .fit-content-area.has-tail.-right:after{border-inline-end-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:after{border-inline-end:0}:host([dir=rtl]) .fit-content-area.has-tail.-right:after,:root[dir=rtl] .fit-content-area.has-tail.-right:after{border-inline-start:0}.fit-content-area.has-tail.-right.has-focus:before{border-inline-start-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.fit-content-area.has-tail.-left:before{inset-block-start:var(--popover-tail,1px)}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:before{inset-inline-start:calc(-.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .fit-content-area.has-tail.-left:before,:root[dir=rtl] .fit-content-area.has-tail.-left:before{inset-inline-end:calc(-.5rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:before{border-inline-end-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}:host([dir=rtl]) .fit-content-area.has-tail.-left:before,:root[dir=rtl] .fit-content-area.has-tail.-left:before{border-inline-start-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:before{border-inline-start:0}:host([dir=rtl]) .fit-content-area.has-tail.-left:before,:root[dir=rtl] .fit-content-area.has-tail.-left:before{border-inline-end:0}.fit-content-area.has-tail.-left:after{inset-block-start:calc(var(--popover-tail, 0px) + 1px)}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:after{inset-inline-start:calc(-.4375rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .fit-content-area.has-tail.-left:after,:root[dir=rtl] .fit-content-area.has-tail.-left:after{inset-inline-end:calc(-.4375rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:after{border-inline-end-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))))}:host([dir=rtl]) .fit-content-area.has-tail.-left:after,:root[dir=rtl] .fit-content-area.has-tail.-left:after{border-inline-start-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:after{border-inline-start:0}:host([dir=rtl]) .fit-content-area.has-tail.-left:after,:root[dir=rtl] .fit-content-area.has-tail.-left:after{border-inline-end:0}.fit-content-area.has-tail.-left.has-focus:before{border-inline-end-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.fit-content{background-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));border-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-radius:var(--now-popover--border-radius,var(--now-menu_container--primary--border-radius,var(--now-menu--border-radius,4px)));border-style:solid;border-width:var(--now-popover--border-width,var(--now-menu_container--primary--border-width,var(--now-menu--border-width,1px)));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));max-block-size:100%;max-inline-size:100%;overflow:auto;position:fixed}.has-tail.-down .fit-content,.has-tail.-up .fit-content{min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.has-tail.-left .fit-content,.has-tail.-right .fit-content{min-block-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))}.disable-scroll .fit-content{overflow:hidden}.is-bare .fit-content{border-width:0}.fit-content:focus{border-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}.fit-content-transform{transform:translateZ(0)}@media(forced-colors:active){.fit-content-area.has-tail:after,.fit-content-area.has-tail:before{forced-color-adjust:none}.fit-content-area.has-tail.-up:before{border-block-end-color:canvastext}.fit-content-area.has-tail.-up:after{border-block-end-color:canvas}.fit-content-area.has-tail.-up.has-focus:before{border-block-end-color:highlight}.fit-content-area.has-tail.-down:before{border-block-start-color:canvastext}.fit-content-area.has-tail.-down:after{border-block-start-color:canvas}.fit-content-area.has-tail.-down.has-focus:before{border-block-start-color:highlight}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:before{border-inline-start-color:canvastext}:host([dir=rtl]) .fit-content-area.has-tail.-right:before,:root[dir=rtl] .fit-content-area.has-tail.-right:before{border-inline-end-color:canvastext}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:after{border-inline-start-color:canvas}:host([dir=rtl]) .fit-content-area.has-tail.-right:after,:root[dir=rtl] .fit-content-area.has-tail.-right:after{border-inline-end-color:canvas}.fit-content-area.has-tail.-right.has-focus:before{border-inline-start-color:highlight}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:before{border-inline-end-color:canvastext}:host([dir=rtl]) .fit-content-area.has-tail.-left:before,:root[dir=rtl] .fit-content-area.has-tail.-left:before{border-inline-start-color:canvastext}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:after{border-inline-end-color:canvas}:host([dir=rtl]) .fit-content-area.has-tail.-left:after,:root[dir=rtl] .fit-content-area.has-tail.-left:after{border-inline-start-color:canvas}.fit-content-area.has-tail.-left.has-focus:before{border-inline-end-color:highlight}.fit-content{background-color:canvas;border-color:canvastext;border-width:1px!important}.fit-content:focus{border-color:highlight}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:block}:host([dir=ltr]) .now-progress-bar-path.is-indeterminate:not(.is-inactive){animation:indeterminateLoadingLTR 2.5s cubic-bezier(.62,.21,.48,.88) infinite}:host([dir=rtl]) .now-progress-bar-path.is-indeterminate:not(.is-inactive){animation:indeterminateLoadingRTL 2.5s cubic-bezier(.62,.21,.48,.88) infinite}:host([dir=rtl]) .now-progress-bar-path{--now-border-radius:var(--now-progress-bar--border-radius,var(--now-loading_progress_track--border-radius,var(--now-loading--border-radius,0px)));--now-border-width:var(--now-progress-bar--border-width,var(--now-loading_progress_track--border-width,var(--now-loading--border-width,1px)));border-end-end-radius:calc(var(--now-border-radius) - var(--now-border-width));border-end-start-radius:0;border-start-end-radius:calc(var(--now-border-radius) - var(--now-border-width));border-start-start-radius:0}:host([dir=rtl]) .now-progress-bar-path.is-indeterminate{border-radius:0}.now-progress-bar-bar{overflow:hidden}.now-progress-bar-track{background-color:RGB(var(--now-progress-bar--background-color,var(--now-loading_progress_track--background-color,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))));border-color:RGB(var(--now-progress-bar--border-color,var(--now-loading_progress_track--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-progress-bar--border-radius,var(--now-loading_progress_track--border-radius,var(--now-loading--border-radius,0)));border-style:solid;border-width:var(--now-progress-bar--border-width,var(--now-loading_progress_track--border-width,var(--now-loading--border-width,1px)));position:relative;transform:translateZ(0)}.now-progress-bar-track.is-indeterminate{border-radius:0}.now-progress-bar-track.-xs{block-size:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-progress-bar-track.-sm{block-size:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-progress-bar-track.-md{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-progress-bar-track.-lg{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}@keyframes indeterminateLoadingLTR{0%{inline-size:5%;inset-inline-end:100%}60%{inline-size:35%}to{inline-size:5%;inset-inline-end:-5%}}@keyframes indeterminateLoadingRTL{0%{inline-size:5%;inset-inline-start:100%}60%{inline-size:35%}to{inline-size:5%;inset-inline-start:-5%}}.now-progress-bar-path{--now-border-radius:var(--now-progress-bar--border-radius,var(--now-loading_progress_track--border-radius,var(--now-loading--border-radius,0px)));--now-border-width:var(--now-progress-bar--border-width,var(--now-loading_progress_track--border-width,var(--now-loading--border-width,1px)));border-block-end-width:0;border-block-start-width:0;border-end-start-radius:calc(var(--now-border-radius) - var(--now-border-width));border-inline-end-width:var(--now-progress-bar--border-width,var(--now-loading_progress_track--border-width,var(--now-loading--border-width,1px)));border-inline-start-width:0;border-start-start-radius:calc(var(--now-border-radius) - var(--now-border-width));border-style:solid;inset-block:0;position:absolute;transition:width .25s ease}.now-progress-bar-path:after{background-color:RGB(var(--now-progress-bar_path--marker--border-color,var(--now-loading_progress_bar-marker--color,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))));content:\\\"\\\";inline-size:var(--now-progress-bar_path--marker--border-width,var(--now-loading_progress_bar-marker--border-width,2px));inset-block:calc(var(--now-border-width)*-1);inset-inline-end:calc(var(--now-border-width)*-1);position:absolute}.now-progress-bar-path.is-initial{background-color:RGB(var(--now-progress-bar_path--initial--background-color,var(--now-loading_progress_bar--background-color,var(--now-loading--initial--background-color,var(--now-color--primary-1,30,133,109)))));border-color:RGB(var(--now-progress-bar_path--initial--border-color,var(--now-loading_progress_bar--border-color,var(--now-loading--initial--border-color,var(--now-color--primary-2,23,100,82)))))}.now-progress-bar-path.is-positive{background-color:RGB(var(--now-progress-bar_path--positive--background-color,var(--now-loading_progress_bar--positive--background-color,var(--now-color_alert--positive-3,30,105,34))));border-color:RGB(var(--now-progress-bar_path--positive--border-color,var(--now-loading_progress_bar--positive--border-color,var(--now-color_alert--positive-4,22,79,26))))}.now-progress-bar-path.is-alert{background-color:RGB(var(--now-progress-bar_path--alert--background-color,var(--now-loading_progress_bar--alert--background-color,var(--now-color_alert--high-3,177,116,27))));border-color:RGB(var(--now-progress-bar_path--alert--border-color,var(--now-loading_progress_bar--alert--border-color,var(--now-color_alert--high-4,133,87,20))))}.now-progress-bar-path.is-error{background-color:RGB(var(--now-progress-bar_path--error--background-color,var(--now-loading_progress_bar--error--background-color,var(--now-color_alert--critical-2,200,60,54))));border-color:RGB(var(--now-progress-bar_path--error--border-color,var(--now-loading_progress_bar--error--border-color,var(--now-color_alert--critical-3,160,48,43))))}.now-progress-bar-path.is-inactive{background-color:RGB(var(--now-progress-bar_path--inactive--background-color,var(--now-loading_progress_bar--inactive--background-color,var(--now-loading_progress_track--background-color,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))))));border-color:RGB(var(--now-progress-bar_path--inactive--border-color,var(--now-loading_progress_bar--inactive--border-color,var(--now-color--neutral-11,73,88,90))));border-inline-end-width:0}.now-progress-bar-path.is-inactive:before{background-color:RGB(var(--now-progress-bar_path--marker--border-color,var(--now-loading_progress_bar-marker--color,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))));content:\\\"\\\";inline-size:var(--now-progress-bar_path--marker--border-width,var(--now-loading_progress_bar-marker--border-width,2px));inset-block:calc(var(--now-border-width)*-1);inset-inline-start:calc(var(--now-border-width)*-1);position:absolute}.now-progress-bar-path.is-inactive:after{visibility:hidden}.now-progress-bar-path.is-pink{background-color:RGB(var(--now-progress-bar_path--pink--background-color,var(--now-loading_progress_bar--pink--background-color,var(--now-color_grouped--pink-2,203,121,143))));border-color:RGB(var(--now-progress-bar_path--pink--border-color,var(--now-loading_progress_bar--pink--border-color,var(--now-color_grouped--pink-3,173,103,122))))}.now-progress-bar-path.is-green{background-color:RGB(var(--now-progress-bar_path--green--background-color,var(--now-loading_progress_bar--green--background-color,var(--now-color_grouped--green-2,147,170,125))));border-color:RGB(var(--now-progress-bar_path--green--border-color,var(--now-loading_progress_bar--green--border-color,var(--now-color_grouped--green-3,125,145,106))))}.now-progress-bar-path.is-orange{background-color:RGB(var(--now-progress-bar_path--orange--background-color,var(--now-loading_progress_bar--orange--background-color,var(--now-color_grouped--orange-2,215,129,106))));border-color:RGB(var(--now-progress-bar_path--orange--border-color,var(--now-loading_progress_bar--orange--border-color,var(--now-color_grouped--orange-3,183,110,90))))}.now-progress-bar-path.is-gray{background-color:RGB(var(--now-progress-bar_path--gray--background-color,var(--now-loading_progress_bar--gray--background-color,var(--now-color_grouped--gray-2,139,145,150))));border-color:RGB(var(--now-progress-bar_path--gray--border-color,var(--now-loading_progress_bar--gray--border-color,var(--now-color_grouped--gray-3,118,123,128))))}.now-progress-bar-path.is-indeterminate{border-radius:0}.now-progress-bar-path.is-indeterminate.is-inactive:before{visibility:hidden}.now-progress-bar-path.is-indeterminate:not(.is-inactive){border-inline-start-width:var(--now-progress-bar--border-width,var(--now-loading_progress_track--border-width,var(--now-loading--border-width,1px)))}.now-progress-bar-path.is-indeterminate:not(.is-inactive):before{background-color:RGB(var(--now-progress-bar_path--marker--border-color,var(--now-loading_progress_bar-marker--color,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))));content:\\\"\\\";inline-size:var(--now-progress-bar_path--marker--border-width,var(--now-loading_progress_bar-marker--border-width,2px));inset-block:calc(var(--now-border-width)*-1);inset-inline-start:calc(var(--now-border-width)*-1);position:absolute}.now-progress-bar-label{color:var(--now-progress-bar--color,var(--now-loading_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));font-family:var(--now-progress-bar--font-family,var(--now-loading_progress--font-family,var(--now-loading_label--primary--font-family,var(--now-loading--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-style:var(--now-progress-bar--font-style,var(--now-loading_progress--font-style,var(--now-loading_label--primary--font-style,var(--now-loading--font-style,normal))));font-variant:normal;font-weight:var(--now-progress-bar--font-weight,var(--now-loading_progress--font-weight,var(--now-loading_label--primary--font-weight,var(--now-loading--font-weight,normal))));letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:var(--now-progress-bar--text-transform,var(--now-loading_progress--text-transform,var(--now-loading_label--primary--text-transform,var(--now-loading--text-transform,none))));white-space:normal;word-spacing:inherit}.now-progress-bar-label.-sm,.now-progress-bar-label.-xs{font-size:var(--now-loading_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333}.now-progress-bar-label.-lg,.now-progress-bar-label.-md{font-size:var(--now-loading_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.now-progress-bar-label.-top{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-progress-bar-label.-bottom{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.now-progress-bar-path{background-color:highlight!important}.now-progress-bar-track{border-width:1px}}@media(prefers-reduced-motion:reduce){.now-progress-bar-path.is-indeterminate{animation:none!important;inline-size:25%}.now-progress-bar-path{transition:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,var(--now-form-control_message--border-radius,2px));border-style:solid;border-width:var(--now-form-field_message--border-width,var(--now-form-control_message--border-width,0));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-form-control_message--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-form-control_message--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_message--font-style,var(--now-form-control_message--font-style,var(--now-form-control--font-style,normal)));font-weight:var(--now-form-field_message--font-weight,var(--now-form-control_message--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,var(--now-form-control_message--text-transform,var(--now-form-control--text-transform,none)));word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-form-control_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-form-control_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129))));color:RGB(var(--now-form-field_message--critical--color,var(--now-form-control_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-control_message_icon--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-form-control_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191))));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-form-control_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96))));color:RGB(var(--now-form-field_message--warning--color,var(--now-form-control_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-control_message_icon--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-form-control_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202))));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-form-control_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123))));color:RGB(var(--now-form-field_message--positive--color,var(--now-form-control_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-control_message_icon--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-form-control_message--info--background-color,var(--now-color_alert--info-0,195,221,240))));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-form-control_message--info--border-color,var(--now-color_alert--info-1,104,171,218))));color:RGB(var(--now-form-field_message--info--color,var(--now-form-control_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-control_message_icon--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-form-control_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field_message--suggestion--background-color-alpha,var(--now-form-control_message--secondary--background-color-alpha,0)));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-form-control_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-form-control_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-control_message_icon--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.-vertical.will-wrap .now-form-field-label{align-items:end}.-horizontal.will-wrap .now-form-field-label{justify-content:center}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.will-wrap .now-form-field-label .now-form-field-label-text{word-break:break-word}.-horizontal:not(.will-wrap) .now-form-field-label,.-vertical:not(.will-wrap) .now-form-field-label{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after{content:\\\"\\\";display:block}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.will-wrap .now-form-field-label-end{flex-direction:column;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical.will-wrap .now-form-field-label-end{align-items:end}.-horizontal.will-wrap .now-form-field-label-end{align-items:start;justify-content:center}.now-form-field-label-start{display:flex}.-vertical .now-form-field-label-start ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-start ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-form-control_label--secondary--font-family,var(--now-form-control_label--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-form-control_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_label--font-style,var(--now-form-control_label--secondary--font-style,var(--now-form-control_label--font-style,var(--now-form-control--font-style,normal))));font-weight:var(--now-form-field_label--font-weight,var(--now-form-control_label--secondary--font-weight,var(--now-form-control_label--font-weight,var(--now-form-control--font-weight,normal))));line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,var(--now-form-control_label--secondary--text-transform,var(--now-form-control_label--text-transform,var(--now-form-control--text-transform,none))))}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-form-control_label--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{display:block;padding-block-end:calc(var(--now-line-height-crop--after)*1*-1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after,.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop+.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}:host{--now-line-height:0;display:inline-block;margin-block:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-radio-buttons-fieldset{border:none;margin-inline:0;padding:0}.now-radio-buttons-fieldset-child{display:grid}.-field-vertical .now-radio-buttons-fieldset-child{grid-template-columns:minmax(0,100%)}.-field-vertical .now-form-field-legend.-horizontal{padding-block-start:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-field-horizontal.-md .now-form-field-legend{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-legend.-vertical .now-form-field-label{margin-block-end:0}.now-form-field-legend.-horizontal.will-wrap .now-form-field-label{align-items:start}.-field-horizontal .now-form-field-label-end{align-items:start;margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-field-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.-field-horizontal.-md .now-form-field-label-end{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-radio-buttons{display:flex;font-variant:normal;letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:none;white-space:normal;word-spacing:inherit}.now-radio-buttons.-vertical{flex-direction:column}.now-radio-buttons.-horizontal{flex-wrap:wrap}.now-radio-button{display:flex}.-field-vertical .-vertical .now-radio-button.-md:first-of-type,.-field-vertical .now-radio-button.-sm{margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-radio-buttons--scale-size-block, 1))}.-field-vertical .-vertical .now-radio-button.-md:not(:first-of-type){margin-block-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-radio-buttons--scale-size-block, 1))}.-field-horizontal .-vertical .now-radio-button:not(:first-of-type).-sm,.-field-vertical .-horizontal .now-radio-button.-md{margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-radio-buttons--scale-size-block, 1))}.-field-horizontal .-vertical .now-radio-button:not(:first-of-type).-md{margin-block-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-radio-buttons--scale-size-block, 1))}.-field-horizontal .-horizontal .now-radio-button:not(:last-of-type).-sm{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-radio-buttons--scale-size-block, 1))}.-field-horizontal .-horizontal .now-radio-button:not(:last-of-type).-md{margin-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-radio-buttons--scale-size-block, 1))}.-horizontal .now-radio-button:not(:last-of-type).-sm{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-radio-buttons--scale-size-inline, 1))}.-horizontal .now-radio-button:not(:last-of-type).-md{margin-inline-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-radio-buttons--scale-size-inline, 1))}.now-radio-button.is-disabled{opacity:var(--now-radio-buttons--opacity--disabled,var(--now-form-control-input-selection--opacity--disabled,var(--now-form-control--opacity--disabled,.25)))}.now-radio-button-input{-webkit-appearance:none;appearance:none;background-color:RGB(var(--now-radio-buttons--background-color,var(--now-form-control-input-selection--secondary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));border-color:RGB(var(--now-radio-buttons--border-color,var(--now-form-control-input-selection--secondary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:50%;border-style:solid;border-width:1px;flex-shrink:0;margin-inline-start:0;outline:none;position:relative}.-sm .now-radio-button-input{block-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin-block:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-radio-button-input{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-radio-buttons--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-radio-buttons--scale-size, 1)*1rem*var(--classicsponlydonotuse--rem-multipy)/2);margin-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-radio-buttons--scale-size-inline, 1))}.now-radio-button-input:hover:not(:disabled){background-color:RGB(var(--now-radio-buttons--background-color--hover,var(--now-form-control-input-selection--secondary--background-color--hover,var(--now-color--primary-0,221,237,233))));border-color:RGB(var(--now-radio-buttons--border-color--hover,var(--now-form-control-input-selection--secondary--border-color--hover,var(--now-color--secondary-1,1,119,142))))}.now-radio-button-input:hover:not(:disabled):checked{background-color:RGB(var(--now-radio-buttons--background-color--selected_hover,var(--now-form-control-input-selection--secondary--background-color--selected_hover,var(--now-color--secondary-0,217,235,238))));border-color:RGB(var(--now-radio-buttons--border-color--selected_hover,var(--now-form-control-input-selection--secondary--border-color--selected_hover,var(--now-color--secondary-1,1,119,142))))}.now-radio-button-input:active:not(:disabled){background-color:RGB(var(--now-radio-buttons--background-color--active,var(--now-form-control-input-selection--secondary--background-color--active,var(--now-color--primary-0,221,237,233))));border-color:RGB(var(--now-radio-buttons--border-color--active,var(--now-form-control-input-selection--secondary--border-color--active,var(--now-color--secondary-1,1,119,142))))}.-sm .now-radio-button-input:active:not(:disabled){box-shadow:0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--focus,var(--now-form-control-input-selection--secondary--border-color--focus,var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))),var(--now-opacity--least,.1))}.-md .now-radio-button-input:active:not(:disabled){box-shadow:0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + var(--now-radio-buttons--scale-size, 1)*var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--focus,var(--now-form-control-input-selection--secondary--border-color--focus,var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))),var(--now-opacity--least,.1))}.now-radio-button-input:active:not(:disabled):checked{background-color:RGB(var(--now-radio-buttons--background-color--selected_active,var(--now-form-control-input-selection--secondary--background-color--selected_active,var(--now-form-control-input-selection--secondary--background-color--selected,var(--now-form-control-input-selection--secondary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))));border-color:RGB(var(--now-radio-buttons--border-color--selected_active,var(--now-form-control-input-selection--secondary--border-color--selected_active,var(--now-color--secondary-1,1,119,142))))}.-sm .now-radio-button-input:active:not(:disabled):checked{box-shadow:0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--selected_focus,var(--now-form-control-input-selection--secondary--border-color--selected_focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.-md .now-radio-button-input:active:not(:disabled):checked{box-shadow:0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + var(--now-radio-buttons--scale-size, 1)*var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--selected_focus,var(--now-form-control-input-selection--secondary--border-color--selected_focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.now-radio-button-input:focus{background-color:RGB(var(--now-radio-buttons--background-color--focus,var(--now-form-control-input-selection--secondary--background-color--focus,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))));border-color:RGB(var(--now-radio-buttons--border-color--focus,var(--now-form-control-input-selection--secondary--border-color--focus,var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))))}.-sm .now-radio-button-input:focus{box-shadow:inset 0 0 0 1px RGB(var(--now-radio-buttons--border-color--focus,var(--now-form-control-input-selection--secondary--border-color--focus,var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))))),0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--focus,var(--now-form-control-input-selection--secondary--border-color--focus,var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))),var(--now-opacity--least,.1))}.-md .now-radio-button-input:focus{box-shadow:inset 0 0 0 1px RGB(var(--now-radio-buttons--border-color--focus,var(--now-form-control-input-selection--secondary--border-color--focus,var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))))),0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + var(--now-radio-buttons--scale-size, 1)*var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--focus,var(--now-form-control-input-selection--secondary--border-color--focus,var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))),var(--now-opacity--least,.1))}.now-radio-button-input:focus:checked{background-color:RGB(var(--now-radio-buttons--background-color--selected_focus,var(--now-form-control-input-selection--secondary--background-color--selected_focus,var(--now-form-control-input-selection--secondary--background-color--focus,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247))))));border-color:RGB(var(--now-radio-buttons--border-color--selected_focus,var(--now-form-control-input-selection--secondary--border-color--selected_focus,var(--now-color--secondary-1,1,119,142))))}.-sm .now-radio-button-input:focus:checked{box-shadow:inset 0 0 0 1px RGB(var(--now-radio-buttons--border-color--selected_focus,var(--now-form-control-input-selection--secondary--border-color--selected_focus,var(--now-color--secondary-1,1,119,142)))),0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--selected_focus,var(--now-form-control-input-selection--secondary--border-color--selected_focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.-md .now-radio-button-input:focus:checked{box-shadow:inset 0 0 0 1px RGB(var(--now-radio-buttons--border-color--selected_focus,var(--now-form-control-input-selection--secondary--border-color--selected_focus,var(--now-color--secondary-1,1,119,142)))),0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + var(--now-radio-buttons--scale-size, 1)*var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--selected_focus,var(--now-form-control-input-selection--secondary--border-color--selected_focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.is-invalid:not(.is-disabled,.is-readonly) .now-radio-button-input{background-color:RGB(var(--now-radio-buttons--background-color--invalid,var(--now-form-control-input-selection--secondary--background-color--invalid,var(--now-form-control-input-selection--secondary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));border-color:RGB(var(--now-radio-buttons--border-color--invalid,var(--now-form-control-input-selection--secondary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))));border-width:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.is-invalid:not(.is-disabled,.is-readonly) .now-radio-button-input:checked{background-color:RGB(var(--now-radio-buttons--background-color--selected_invalid,var(--now-form-control-input-selection--secondary--background-color--selected_invalid,var(--now-form-control-input-selection--secondary--background-color--selected,var(--now-form-control-input-selection--secondary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))));border-color:RGB(var(--now-radio-buttons--border-color--selected_invalid,var(--now-form-control-input-selection--secondary--border-color--selected_invalid,var(--now-color_alert--critical-2,200,60,54))))}.is-invalid .now-radio-button-input:hover:not(:disabled){background-color:RGB(var(--now-radio-buttons--background-color--invalid_hover,var(--now-form-control-input-selection--secondary--background-color--invalid_hover,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-radio-buttons--border-color--invalid_hover,var(--now-form-control-input-selection--secondary--border-color--invalid_hover,var(--now-form-control-input-selection--secondary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.is-invalid .now-radio-button-input:hover:not(:disabled):checked{background-color:RGB(var(--now-radio-buttons--background-color--selected_invalid_hover,var(--now-form-control-input-selection--secondary--background-color--selected_invalid_hover,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-radio-buttons--border-color--selected_invalid_hover,var(--now-form-control-input-selection--secondary--border-color--selected_invalid_hover,var(--now-form-control-input-selection--secondary--border-color--selected_invalid,var(--now-color_alert--critical-2,200,60,54)))))}.is-invalid .now-radio-button-input:active:not(:disabled){background-color:RGB(var(--now-radio-buttons--background-color--invalid_active,var(--now-form-control-input-selection--secondary--background-color--invalid_active,var(--now-color_alert--critical-2,200,60,54))),var(--now-opacity--least,.1));border-color:RGB(var(--now-radio-buttons--border-color--invalid_active,var(--now-form-control-input-selection--secondary--border-color--invalid_active,var(--now-form-control-input-selection--secondary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.is-invalid .now-radio-button-input:active:not(:disabled):checked{background-color:RGB(var(--now-radio-buttons--background-color--selected_invalid_active,var(--now-form-control-input-selection--secondary--background-color--selected_invalid_active,var(--now-color_alert--critical-1,221,133,129))),var(--now-opacity--least,.1));border-color:RGB(var(--now-radio-buttons--border-color--selected_invalid_active,var(--now-form-control-input-selection--secondary--border-color--selected_invalid_active,var(--now-form-control-input-selection--secondary--border-color--selected_invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-sm.is-invalid .now-radio-button-input:active:not(:disabled){box-shadow:0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--invalid,var(--now-form-control-input-selection--secondary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))),var(--now-opacity--least,.1))}.-sm.is-invalid .now-radio-button-input:active:not(:disabled):checked{box-shadow:0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--selected_invalid_active,var(--now-form-control-input-selection--secondary--border-color--selected_invalid_active,var(--now-form-control-input-selection--secondary--border-color--selected_invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.-md.is-invalid .now-radio-button-input:active:not(:disabled){box-shadow:0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + var(--now-radio-buttons--scale-size, 1)*var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--invalid,var(--now-form-control-input-selection--secondary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))),var(--now-opacity--least,.1))}.-md.is-invalid .now-radio-button-input:active:not(:disabled):checked{box-shadow:0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + var(--now-radio-buttons--scale-size, 1)*var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-radio-buttons--border-color--selected_invalid_active,var(--now-form-control-input-selection--secondary--border-color--selected_invalid_active,var(--now-form-control-input-selection--secondary--border-color--selected_invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.is-invalid .now-radio-button-input:focus{background-color:RGB(var(--now-radio-buttons--background-color--invalid_focus,var(--now-form-control-input-selection--secondary--background-color--invalid_focus,var(--now-form-control-input-selection--secondary--background-color--invalid,var(--now-form-control-input-selection--secondary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))));border-color:RGB(var(--now-radio-buttons--border-color--invalid_focus,var(--now-form-control-input-selection--secondary--border-color--invalid_focus,var(--now-form-control-input-selection--secondary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.is-invalid .now-radio-button-input:focus:checked{background-color:RGB(var(--now-radio-buttons--background-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--background-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--background-color--selected_focus,var(--now-form-control-input-selection--secondary--background-color--focus,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))))));border-color:RGB(var(--now-radio-buttons--border-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--border-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--border-color--selected_invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-sm.is-invalid .now-radio-button-input:focus{box-shadow:inset 0 0 0 1px RGB(var(--now-radio-buttons--background-color--focus,var(--now-form-control-input-selection--secondary--background-color--focus,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247))))),0 0 0 1px RGB(var(--now-color--neutral-0,255,255,255)),0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + 1px) RGB(var(--now-radio-buttons--border-color--invalid,var(--now-form-control-input-selection--secondary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))),var(--now-opacity--least,.1))}.-sm.is-invalid .now-radio-button-input:focus:checked{box-shadow:inset 0 0 0 1px RGB(var(--now-radio-buttons--background-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--background-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--background-color--selected_focus,var(--now-form-control-input-selection--secondary--background-color--focus,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247))))))),0 0 0 1px RGB(var(--now-color--neutral-0,255,255,255)),0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + 1px) RGB(var(--now-radio-buttons--border-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--border-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--border-color--selected_invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.-md.is-invalid .now-radio-button-input:focus{box-shadow:inset 0 0 0 1px RGB(var(--now-radio-buttons--background-color--focus,var(--now-form-control-input-selection--secondary--background-color--focus,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247))))),0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color--neutral-0,255,255,255)),0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + var(--now-radio-buttons--scale-size, 1)*var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + .125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-radio-buttons--border-color--invalid,var(--now-form-control-input-selection--secondary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))),var(--now-opacity--least,.1))}.-md.is-invalid .now-radio-button-input:focus:checked{box-shadow:inset 0 0 0 1px RGB(var(--now-radio-buttons--background-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--background-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--background-color--selected_focus,var(--now-form-control-input-selection--secondary--background-color--focus,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247))))))),0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color--neutral-0,255,255,255)),0 0 0 calc(var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + var(--now-radio-buttons--scale-size, 1)*var(--now-radio-buttons_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2 + .125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-radio-buttons--border-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--border-color--selected_invalid_focus,var(--now-form-control-input-selection--secondary--border-color--selected_invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.now-radio-button-input:checked{background-color:RGB(var(--now-radio-buttons--background-color--selected,var(--now-form-control-input-selection--secondary--background-color--selected,var(--now-form-control-input-selection--secondary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));border-color:RGB(var(--now-radio-buttons--border-color--selected,var(--now-form-control-input-selection--secondary--border-color--selected,var(--now-form-control-input-selection--secondary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}.now-radio-button-input:checked:after{background-color:RGB(var(--now-radio-buttons_radio--background-color,var(--now-form-control-input-selection_indicator--secondary--color,var(--now-color--primary-1,30,133,109))));border-radius:50%;content:\\\"\\\";position:absolute}.-sm .now-radio-button-input:checked:after{block-size:calc(.375rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(.375rem*var(--classicsponlydonotuse--rem-multipy));inset-block-start:calc(50% - .375rem*var(--classicsponlydonotuse--rem-multipy)/2);inset-inline-start:calc(50% - .375rem*var(--classicsponlydonotuse--rem-multipy)/2)}.-md .now-radio-button-input:checked:after{block-size:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-radio-buttons--scale-size, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)/2);inline-size:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-radio-buttons--scale-size, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)/2);inset-block-start:calc(50% - .5rem*var(--classicsponlydonotuse--rem-multipy)/2/2 - var(--now-radio-buttons--scale-size, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)/2/2);inset-inline-start:calc(50% - .5rem*var(--classicsponlydonotuse--rem-multipy)/2/2 - var(--now-radio-buttons--scale-size, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)/2/2)}.now-radio-button-input:hover:not(:disabled):checked:after{background-color:RGB(var(--now-radio-buttons_radio--background-color--hover,var(--now-form-control-input-selection_indicator--secondary--color--hover,var(--now-form-control-input-selection_indicator--secondary--color,var(--now-color--primary-1,30,133,109)))))}.now-radio-button-input:focus:not(:disabled):checked:after{background-color:RGB(var(--now-radio-buttons_radio--background-color--focus,var(--now-form-control-input-selection_indicator--secondary--color--focus,var(--now-form-control-input-selection_indicator--secondary--color,var(--now-color--primary-1,30,133,109)))))}.now-radio-button-input:active:not(:disabled):checked:after{background-color:RGB(var(--now-radio-buttons_radio--background-color--active,var(--now-form-control-input-selection_indicator--secondary--color--active,var(--now-form-control-input-selection_indicator--secondary--color,var(--now-color--primary-1,30,133,109)))))}.is-invalid .now-radio-button-input:not(:disabled):checked:after{background-color:RGB(var(--now-radio-buttons_radio--background-color--invalid,var(--now-form-control-input-selection_indicator--secondary--color--invalid,var(--now-color_alert--critical-4,120,36,32))))}.is-invalid .now-radio-button-input:hover:not(:disabled):checked:after{background-color:RGB(var(--now-radio-buttons_radio--background-color--invalid_hover,var(--now-form-control-input-selection_indicator--secondary--color--invalid_hover,var(--now-form-control-input-selection_indicator--secondary--color--invalid,var(--now-color_alert--critical-4,120,36,32)))))}.is-invalid .now-radio-button-input:focus:not(:disabled):checked:after{background-color:RGB(var(--now-radio-buttons_radio--background-color--invalid_focus,var(--now-form-control-input-selection_indicator--secondary--color--invalid_focus,var(--now-form-control-input-selection_indicator--secondary--color--invalid,var(--now-color_alert--critical-4,120,36,32)))))}.is-invalid .now-radio-button-input:active:not(:disabled):checked:after{background-color:RGB(var(--now-radio-buttons_radio--background-color--invalid_active,var(--now-form-control-input-selection_indicator--secondary--color--invalid_active,var(--now-form-control-input-selection_indicator--secondary--color--invalid,var(--now-color_alert--critical-4,120,36,32)))))}.is-readonly .now-radio-button-input{background-color:RGB(var(--now-radio-buttons--background-color--readonly,var(--now-form-control-input-selection--secondary--background-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))));border-color:RGB(var(--now-radio-buttons--border-color--readonly,var(--now-form-control-input-selection--secondary--border-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))))}.is-readonly .now-radio-button-input:checked{background-color:RGB(var(--now-radio-buttons--background-color--selected_readonly,var(--now-form-control-input-selection--secondary--background-color--selected_readonly,var(--now-color--neutral-3,209,214,214))));border-color:RGB(var(--now-radio-buttons--border-color--selected_readonly,var(--now-form-control-input-selection--secondary--border-color--selected_readonly,var(--now-form-control-input-selection--secondary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}.is-readonly .now-radio-button-input:checked:after{background-color:RGB(var(--now-radio-buttons_radio--background-color--readonly,var(--now-form-control-input-selection_indicator--secondary--color--readonly,var(--now-form-control-input-selection_indicator--secondary--color,var(--now-color--primary-1,30,133,109)))))}.now-radio-button-label{color:RGB(var(--now-radio-buttons_label--color,var(--now-form-control_label--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-radio-buttons--font-family,var(--now-form-control_label--primary--font-family,var(--now-form-control_label--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-style:var(--now-radio-buttons--font-style,var(--now-form-control_label--primary--font-style,var(--now-form-control_label--font-style,var(--now-form-control--font-style,normal))));font-weight:var(--now-radio-buttons--font-weight,var(--now-form-control_label--primary--font-weight,var(--now-form-control_label--font-weight,var(--now-form-control--font-weight,normal))));text-transform:var(--now-radio-buttons--text-transform,var(--now-form-control_label--primary--text-transform,var(--now-form-control_label--text-transform,var(--now-form-control--text-transform,none))))}.-sm .now-radio-button-label{font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-radio-button-label .now-line-height-crop{display:block}.-sm .now-radio-button-label .now-line-height-crop:after,.-sm .now-radio-button-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-sm .now-radio-button-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.-sm .now-radio-button-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.-sm .now-radio-button-label .now-line-height-crop+.-sm .now-radio-button-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-md .now-radio-button-label{font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*(var(--now-radio-buttons--scale-size, 1)*-0.75 - .75))}.-md .now-radio-button-label .now-line-height-crop{display:block}.-md .now-radio-button-label .now-line-height-crop:after,.-md .now-radio-button-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-md .now-radio-button-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-md .now-radio-button-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-md .now-radio-button-label .now-line-height-crop+.-md .now-radio-button-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-radio-button.-sm:last-of-type .now-radio-button-label .now-line-height-crop{display:block;padding-block-end:calc(var(--now-line-height-crop--after)*1.06664*-1)}.now-radio-button.-sm:last-of-type .now-radio-button-label .now-line-height-crop:after,.now-radio-button.-sm:last-of-type .now-radio-button-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-radio-button.-sm:last-of-type .now-radio-button-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-radio-button.-sm:last-of-type .now-radio-button-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-radio-button.-sm:last-of-type .now-radio-button-label .now-line-height-crop+.now-radio-button.-sm:last-of-type .now-radio-button-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-radio-button.-md:last-of-type .now-radio-button-label .now-line-height-crop{display:block;padding-block-end:calc(var(--now-line-height-crop--after)*1*-1)}.now-radio-button.-md:last-of-type .now-radio-button-label .now-line-height-crop:after,.now-radio-button.-md:last-of-type .now-radio-button-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-radio-button.-md:last-of-type .now-radio-button-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-radio-button.-md:last-of-type .now-radio-button-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-radio-button.-md:last-of-type .now-radio-button-label .now-line-height-crop+.now-radio-button.-md:last-of-type .now-radio-button-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}@media(forced-colors:active){.now-radio-button.is-disabled{opacity:1}.now-radio-button-input:active,.now-radio-button-input:hover{border-color:highlight}.now-radio-button-input:focus{border-color:buttonborder;outline:1px solid highlight}.is-readonly .now-radio-button-input,.now-radio-button-input:disabled{border-color:graytext!important}.is-readonly .now-radio-button-input:checked:after,.now-radio-button-input:disabled:checked:after{background-color:graytext!important}.now-radio-button-input:checked{border-color:selecteditem}.now-radio-button-input:checked:hover{border-color:highlight}.now-radio-button-input:checked:after{background-color:selecteditem!important}.is-disabled .now-radio-button-label{color:graytext}.is-readonly .now-radio-button-label{color:canvastext}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.field-decorations-container{display:flex;gap:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-form-field-layout.-horizontal{align-items:start;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr);grid-template-rows:1fr max-content}.sn-form-field-layout.-horizontal.align-center{align-items:center}.-vertical .form-field-label-wrap{margin-block-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-label-wrap{justify-content:end}.-horizontal:not(.align-center) .form-field-label-wrap{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .sn-control-highlighted-field-label-end{margin-inline-start:auto}.-vertical .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){max-width:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end{flex:1;flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .sn-control-highlighted-field-label-end ::slotted(now-highlighted-value){min-width:0}.-horizontal:not(.align-center) .sn-control-highlighted-field-label-end{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .form-field-message-container{grid-column-start:2}now-highlighted-value.first-label-end{max-width:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-form-field_message--border-width,0);display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-color_alert--info-1,104,171,218)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,none)}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.now-form-field-label-label .will-truncate{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-form-field-label-label .will-truncate:after{content:\\\"\\\";display:block}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}input,textarea{font-family:inherit}now-input{width:100%}:host(sn-record-input.is-focused) .sn-control-field{background:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))}.sn-control{border:0;display:flex;flex-direction:column;margin-block-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));padding:0;position:relative;width:100%}.sn-control .form-field-label-wrap{align-items:center;display:flex;height:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control .sn-control-highlighted-field-label-end{align-items:center;display:flex}.sn-control-input{border:0;display:flex;flex-direction:column;padding:0;position:relative;width:100%}.sn-control-label{align-items:center;color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))));display:flex;font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;min-width:0;padding:0 0 calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy));text-transform:var(--now-form-field_label--text-transform,none)}.sn-control-label-label{margin-inline-start:0}.sn-control-label>span.now-line-height-crop{display:block}.sn-control-label>span.now-line-height-crop:after,.sn-control-label>span.now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.sn-control-label>span.now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.sn-control-label>span.now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.sn-control-label>span.now-line-height-crop+.sn-control-label>span.now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.sn-control-label>span.now-line-height-crop>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-control-label>span.now-line-height-crop>span:after{content:\\\"\\\";display:block}.sn-control-label .sn-control-field-helper,.sn-control-label>now-icon,.sn-control-label>sn-icon{display:inline-block;line-height:0;padding-inline-start:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control.has-error .sn-control-label{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control sn-record-choice-search[disabled=true],.sn-control sn-record-dropdown-internal[readonly=true]{pointer-events:none}.sn-control-controls,.sn-control-icon{align-items:center;display:flex;flex:0 0 auto;justify-content:center}.sn-control-controls now-button,.sn-control-controls sn-record-control,.sn-control-icon now-button,.sn-control-icon sn-record-control{margin-right:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-icon{margin:0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-field{background-color:RGBA(var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field--background-color-alpha,0));border-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));border-radius:var(--now-form-field--border-radius,0);border-style:solid;border-width:var(--now-form-field--border-width,0);box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGBA(var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)),var(--now-form-field_inset--color-alpha,0)),0 var(--now-form-field--border-block-end-width,1px) 0 0 RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));color:RGB(var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));display:flex;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative}.sn-control-field,.sn-control-field.read-only{padding-inline-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-field.read-only{background-color:RGBA(var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));border-width:var(--now-form-field--border-width--readonly,var(--now-form-field--border-width,0));box-shadow:0 var(--now-form-field--border-block-end-width--readonly,0) 0 0 RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));color:RGB(var(--now-form-field--color--readonly,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.sn-control-field.read-only .empty-read-only{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}.sn-control-field.read-only::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}.sn-control.is-focus .sn-control-field.read-only,.sn-control:focus .sn-control-field.read-only{background-color:RGBA(var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))}.sn-control.is-focus .sn-control-field.read-only:after,.sn-control:focus .sn-control-field.read-only:after{background-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:0;content:\\\"\\\";height:var(--now-form-field--border-block-end-width--readonly,0);left:0;position:absolute;right:0}.sn-control-field.is-disabled{border-color:RGBA(var(--now-form-field--border-color--disabled,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))),var(--now-opacity--less,.25));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));cursor:not-allowed}.sn-control-field:not(.is-focus,.read-only) :after{background-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-1);content:\\\"\\\";height:var(--now-form-field--border-block-end-width,1px);left:0;position:absolute;right:0}.sn-control-field:not(.is-focus).read-only :after{background-color:RGB(var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:0;content:\\\"\\\";height:var(--now-form-field--border-block-end-width--readonly,0);left:0;position:absolute;right:0}.sn-control-field:not(.read-only).is-hover{background-color:RGBA(var(--now-form-field--background-color--hover,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))),var(--now-form-field--background-color-alpha--hover,1));border-color:RGB(var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGBA(var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)),var(--now-form-field_inset--color-alpha,0)),0 var(--now-form-field--border-block-end-width,1px) 0 0 RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))}.sn-control-field:not(.read-only).is-hover :after{background:RGB(var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-2);content:\\\"\\\";height:calc(var(--now-form-field--border-block-end-width, 1px)*2);left:0;position:absolute;right:0}.sn-control.is-focus .sn-control-field:not(.read-only),.sn-control:focus .sn-control-field:not(.read-only){background-color:RGB(var(--now-form-field--background-color--focus,var(--now-color--secondary-0,217,235,238)));border-color:RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)));box-shadow:0 calc(var(--now-form-field--border-block-end-width, 1px)*2) 0 0 RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 var(--now-form-field--border-width,0) RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)),var(--now-opacity--least,.1))}@media(forced-colors:active){.sn-control.is-focus .sn-control-field:not(.read-only),.sn-control:focus .sn-control-field:not(.read-only){border-color:highlight;outline:calc(.0625rem*var(--classicsponlydonotuse--rem-multipy)) solid highlight}}.sn-control.is-focus .sn-control-field:not(.read-only):after,.sn-control:focus .sn-control-field:not(.read-only):after{background:RGB(var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)));bottom:calc(var(--now-form-field--border-block-end-width, 1px)*-2);content:\\\"\\\";height:calc(var(--now-form-field--border-block-end-width, 1px)*2);left:0;position:absolute;right:0}.sn-control.has-error .sn-control-field:not(.read-only){border-color:RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)));box-shadow:0 var(--now-form-field--border-block-end-width,1px) 0 RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control.has-error .sn-control-field:not(.read-only):after{background:RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control.has-error.is-readonly .sn-control-field:not(.read-only){box-shadow:0 var(--now-form-field--border-block-end-width--readonly,0) 0 RGB(var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.sn-control-field::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--most,.8))}.sn-control.-standalone .sn-control-field{border:1px solid;border-color:RGB(var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))}.sn-control.-standalone .sn-control-field:after{display:none}.sn-control.-worknote .sn-control-field{background:RGBA(var(--now-color_alert--warning-0,244,240,191),var(--now-opacity--mid,.5))}.sn-control.-borderless .sn-control-field{border:none}.sn-control-field.no-border{border:none;box-shadow:none}.sn-control-character-counter,.sn-control-description{color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin:0;padding:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy)) 0;position:relative}.has-error .sn-control-character-counter,.has-error .sn-control-description,.sn-control-character-counter.error,.sn-control-description.error{color:RGB(var(--now-color_alert--critical-3,160,48,43))}.sn-control-character-counter.warning,.sn-control-description.warning{color:RGB(var(--now-color_alert--warning-3,198,185,22))}.sn-control-messages{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));padding-top:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-message,.sn-control-messages{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.sn-control-message{border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);line-height:1.3333;margin:0 0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.sn-control-message:last-of-type{margin:0}.sn-control-message.-multi{flex-direction:column}.sn-control-message.-danger{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-primary,.sn-control-message.-success{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.sn-control-message.-suggestion{background-color:RGBA(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.sn-control-message-row{align-items:center;display:flex;line-height:1.3333;margin:0 0 calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));width:100%}.sn-control-message-row:last-of-type{margin:0}.sn-control-message-content now-icon{display:flex;margin-inline-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-control-message-content>span{align-self:center;display:block}.sn-control-message-content>span:after,.sn-control-message-content>span:before{block-size:0;content:\\\"\\\";display:block}.sn-control-message-content>span:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.sn-control-message-content>span:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.sn-control-message-content>span+.sn-control-message-content>span{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.sn-control-message-content>span>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-control-message-content>span>span:after{content:\\\"\\\";display:block}.sn-control-group{align-items:center;display:flex;position:relative}.sn-dropdown{background:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));border:1px solid;border-color:RGB(var(--now-color--primary-2,23,100,82));box-shadow:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) 0 RGB(56,56,56,var(--now-opacity--less,.25));color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));left:auto;list-style:none;margin:-2px 0 0;padding:0;position:fixed;z-index:1000}.sn-dropdown-header{align-items:center;background:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)));display:flex;font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-weight:600;overflow:hidden;padding-bottom:calc(var(--now-scale-space--sm, 1)*6px);padding-top:calc(var(--now-scale-space--sm, 1)*6px);text-overflow:ellipsis;white-space:nowrap;width:100%}.sn-dropdown-header:after{content:\\\"\\\";display:block}:host(:not([dir=rtl])) .sn-dropdown-header,:root:not([dir=rtl]) .sn-dropdown-header{padding-left:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-header,:root[dir=rtl] .sn-dropdown-header{padding-right:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sn-dropdown-header,:root:not([dir=rtl]) .sn-dropdown-header{padding-right:calc(var(--now-scale-space--xl, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-header,:root[dir=rtl] .sn-dropdown-header{padding-left:calc(var(--now-scale-space--xl, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-dropdown-list{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));list-style:none;margin:0;max-height:300px;overflow-x:hidden;overflow-y:auto;padding:0;position:relative;width:100%}.sn-dropdown-list-item{background:RGB(var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)));color:RGB(var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)));cursor:pointer;display:flex;font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));padding-bottom:calc(var(--now-scale-space--sm, 1)*6px);padding-top:calc(var(--now-scale-space--sm, 1)*6px);position:relative;text-decoration:none}:host(:not([dir=rtl])) .sn-dropdown-list-item,:root:not([dir=rtl]) .sn-dropdown-list-item{padding-left:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-list-item,:root[dir=rtl] .sn-dropdown-list-item{padding-right:calc(var(--now-scale-space--lg, 1)*1rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sn-dropdown-list-item,:root:not([dir=rtl]) .sn-dropdown-list-item{padding-right:calc(var(--now-scale-space--xl, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-list-item,:root[dir=rtl] .sn-dropdown-list-item{padding-left:calc(var(--now-scale-space--xl, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-dropdown-list-item.is-focus,.sn-dropdown-list-item.is-hover,.sn-dropdown-list-item:focus,.sn-dropdown-list-item:hover{background:RGB(var(--now-color--secondary-0,217,235,238))}.sn-dropdown-list-item-content{align-items:center;display:inline-flex;flex:1 1 auto;flex-wrap:wrap;overflow:hidden;position:relative}.sn-dropdown-list-item-content>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-dropdown-list-item-content>span:after{content:\\\"\\\";display:block}.sn-dropdown-list-item-content .sn-secondary-delimiter{white-space:pre}.sn-dropdown-list-item-content .highlight{background-color:RGBA(var(--now-color_alert--warning-0,244,240,191),var(--now-opacity--more,.65));font-weight:600}.sn-dropdown-list-item-title{color:RGB(var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));position:relative;width:100%}.sn-dropdown-list-selected-icon{align-items:center;color:RGB(var(--now-color--secondary-1,1,119,142));display:flex;flex:0 0 auto;justify-content:center;width:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host(:not([dir=rtl])) .sn-dropdown-list-selected-icon,:root:not([dir=rtl]) .sn-dropdown-list-selected-icon{margin-right:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}:host([dir=rtl]) .sn-dropdown-list-selected-icon,:root[dir=rtl] .sn-dropdown-list-selected-icon{margin-left:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy))}.sn-el-input{align-items:center;background:transparent;border:0;color:inherit;cursor:text;display:inline-flex;flex:1 1 auto;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field--font-style,normal);font-weight:var(--now-form-field--font-weight,normal);height:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);margin:0;min-width:1px;padding:0;padding-inline-end:calc(var(--now-scale-space--xs, 1)*.25rem*var(--classicsponlydonotuse--rem-multipy));position:relative;text-transform:var(--now-form-field--text-transform,none);width:100%}.sn-el-input:focus{outline:none}.sn-el-input::-ms-clear{display:none}.sn-el-input:-moz-ui-invalid{box-shadow:none}.is-disabled .sn-el-input,.sn-el-input.is-disabled{cursor:not-allowed}.sn-el-input::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--most,.8))}.is-align-end .sn-el-input,.is-reversed .sn-el-input{text-align:end}.is-align-end-reversed .sn-el-input{text-align:start}.sn-el-input:read-only::placeholder{color:RGBA(var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))),var(--now-opacity--more,.65))}now-textarea{display:inline}now-textarea.fit-to-parent{margin-block:0;padding-block-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}:not([type=textarea i]) .sn-control-field{height:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.sn-record-dts{background-color:RGB(var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)));border:var(--now-container--border-width,1px) solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));border-radius:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-block-end:calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy));margin-block-start:calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy))}.sn-record-dts-response{margin:0;overflow:auto;overflow-wrap:break-word;padding:0 calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));white-space:pre-wrap}.sn-record-dts-header{align-items:center;display:flex;justify-content:space-between;padding:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.sn-record-dts-translator{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin:0}.sn-record-dts-loader{margin-block-end:calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy))}.sn-record-dts-translate-icon{margin-top:calc(var(--now-scale-space--md, 1)*2rem*var(--classicsponlydonotuse--rem-multipy));position:absolute;right:0;z-index:1}.sn-record-dts-translate-icon-html{margin-top:calc(var(--now-scale-space--md, 1)*3rem*var(--classicsponlydonotuse--rem-multipy));position:absolute;right:calc(1rem*var(--classicsponlydonotuse--rem-multipy));z-index:2}.sn-control.is-readonly .sn-record-dts-translate-icon-html{margin-top:calc(var(--now-scale-space--md, 1)*1em)}.sn-editor .sn-control .form-field-label-wrap .now-form-field-label{min-width:0}.sn-editor .sn-control .sn-control-highlighted-field-label-end now-highlighted-value{max-width:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.sn-mce-readonly{min-height:160px}.fit-to-parent{block-size:100%}.fit-to-parent .sn-control{margin-block:0;padding-block-end:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy));padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,var(--now-form-control_message--border-radius,2px));border-style:solid;border-width:var(--now-form-field_message--border-width,var(--now-form-control_message--border-width,0));display:flex;font-family:var(--now-form-field_message--font-family,var(--now-form-control_message--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-form-control_message--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_message--font-style,var(--now-form-control_message--font-style,var(--now-form-control--font-style,normal)));font-weight:var(--now-form-field_message--font-weight,var(--now-form-control_message--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,var(--now-form-control_message--text-transform,var(--now-form-control--text-transform,none)));word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-form-control_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205))));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-form-control_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129))));color:RGB(var(--now-form-field_message--critical--color,var(--now-form-control_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-control_message_icon--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-form-control_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191))));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-form-control_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96))));color:RGB(var(--now-form-field_message--warning--color,var(--now-form-control_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-control_message_icon--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-form-control_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202))));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-form-control_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123))));color:RGB(var(--now-form-field_message--positive--color,var(--now-form-control_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-control_message_icon--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-form-control_message--info--background-color,var(--now-color_alert--info-0,195,221,240))));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-form-control_message--info--border-color,var(--now-color_alert--info-1,104,171,218))));color:RGB(var(--now-form-field_message--info--color,var(--now-form-control_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-control_message_icon--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-form-control_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-form-field_message--suggestion--background-color-alpha,var(--now-form-control_message--secondary--background-color-alpha,0)));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-form-control_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214)))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-form-control_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-control_message_icon--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.-vertical.will-wrap .now-form-field-label{align-items:end}.-horizontal.will-wrap .now-form-field-label{justify-content:center}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.will-wrap .now-form-field-label .now-form-field-label-text{word-break:break-word}.-horizontal:not(.will-wrap) .now-form-field-label,.-vertical:not(.will-wrap) .now-form-field-label{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after{content:\\\"\\\";display:block}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.will-wrap .now-form-field-label-end{flex-direction:column;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical.will-wrap .now-form-field-label-end{align-items:end}.-horizontal.will-wrap .now-form-field-label-end{align-items:start;justify-content:center}.now-form-field-label-start{display:flex}.-vertical .now-form-field-label-start ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-start ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-form-control_label--secondary--font-family,var(--now-form-control_label--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-form-control_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_label--font-style,var(--now-form-control_label--secondary--font-style,var(--now-form-control_label--font-style,var(--now-form-control--font-style,normal))));font-weight:var(--now-form-field_label--font-weight,var(--now-form-control_label--secondary--font-weight,var(--now-form-control_label--font-weight,var(--now-form-control--font-weight,normal))));line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,var(--now-form-control_label--secondary--text-transform,var(--now-form-control_label--text-transform,var(--now-form-control--text-transform,none))))}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-form-control_label--secondary--color,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43))))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{display:block;padding-block-end:calc(var(--now-line-height-crop--after)*1*-1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after,.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop+.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-form-control_label--color--invalid,var(--now-color_alert--critical-3,160,48,43)))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host{display:inline-block;margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-select{font-variant:normal;letter-spacing:inherit;position:relative;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit}.now-select.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) 0 minmax(0,4fr) 0 minmax(0,1fr)}.now-select.-horizontal .now-form-field-messages{grid-column-start:3}.now-select-trigger{background-color:RGB(var(--now-select--background-color,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-select--background-color-alpha,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-select--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-select--border-radius,var(--now-form-control-input--primary--border-radius,4px));border-width:var(--now-select--border-width,var(--now-form-control-input--primary--border-width,0));color:RGB(var(--now-select--color,var(--now-form-control_value--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));cursor:pointer;font-family:var(--now-form-field--font-family,var(--now-form-control_value--primary--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-form-field--font-style,var(--now-form-control_value--primary--font-style,var(--now-form-control--font-style,normal)));font-variant:normal;font-weight:var(--now-form-field--font-weight,var(--now-form-control_value--primary--font-weight,var(--now-form-control--font-weight,normal)));inline-size:100%;letter-spacing:inherit;outline:none;padding-block:0;text-align:start;text-indent:0;text-shadow:none;text-transform:var(--now-form-field--text-transform,var(--now-form-control_value--primary--text-transform,var(--now-form-control--text-transform,none)));white-space:normal;word-spacing:inherit}.-md .now-select-trigger,.-sm .now-select-trigger{padding-inline-end:0}.-sm .now-select-trigger{box-shadow:inset 0 1px 0 1px RGB(var(--now-select_inset--color,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))),var(--now-select_inset--color-alpha,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-select--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-select--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333}.-sm .now-select-trigger:not(.is-disabled).has-hover,.-sm .now-select-trigger:not(.is-disabled):hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-select_inset--color--hover,var(--now-form-control-input_inner-shadow--primary--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-select_inset--color-alpha--hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.-sm .now-select-trigger.is-invalid{box-shadow:inset 0 1px 0 1px RGB(var(--now-select_inset--color--invalid,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-select_inset--color-alpha--invalid,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-select--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-select--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-sm .now-select-trigger.is-invalid.has-hover,.-sm .now-select-trigger.is-invalid.is-disabled:hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-select_inset--color--invalid_hover,var(--now-form-control-input_inner-shadow--primary--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-select_inset--color-alpha--invalid_hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-md .now-select-trigger{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))),var(--now-select_inset--color-alpha,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-select--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-select--border-color,var(--now-form-control-input--primary--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.-md .now-select-trigger:not(.is-disabled).has-hover,.-md .now-select-trigger:not(.is-disabled):hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color--hover,var(--now-form-control-input_inner-shadow--primary--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-select_inset--color-alpha--hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.-md .now-select-trigger.is-invalid{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color--invalid,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-select_inset--color-alpha--invalid,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 var(--now-select--border-block-end-width,var(--now-form-control-input--primary--border-block-end-width,1px)) 0 0 RGB(var(--now-select--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-md .now-select-trigger.is-invalid.has-hover,.-md .now-select-trigger.is-invalid.is-disabled:hover,.-md .now-select-trigger.is-invalid:hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color--invalid_hover,var(--now-form-control-input_inner-shadow--primary--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-select_inset--color-alpha--invalid_hover,var(--now-form-control-input_inner-shadow--color-alpha,.1))),0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-select-trigger:not(.is-disabled).has-hover,.now-select-trigger:not(.is-disabled):hover{background-color:RGB(var(--now-select--background-color--hover,var(--now-form-control-input--primary--background-color--hover,var(--now-color--primary-0,221,237,233))),var(--now-select--background-color-alpha--hover,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-select--border-color--hover,var(--now-form-control-input--primary--border-color--hover,var(--now-color--primary-1,30,133,109))))}.now-select-trigger:not(.is-disabled).is-invalid.has-focus,.now-select-trigger:not(.is-disabled).is-invalid:focus,.now-select-trigger:not(.is-disabled).is-invalid:focus-within{background-color:RGB(var(--now-select--background-color--invalid_focus,var(--now-form-control-input--primary--background-color--invalid_focus,var(--now-form-control-input--primary--background-color--invalid,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))))),var(--now-select--background-color-alpha--invalid_focus,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-select--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-sm .now-select-trigger:not(.is-disabled).is-invalid.has-focus,.-sm .now-select-trigger:not(.is-disabled).is-invalid:focus,.-sm .now-select-trigger:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))))),var(--now-select_inset--color-alpha--invalid_focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-select--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-select--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 calc(var(--now-form-field_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-select--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.-sm .now-select-trigger:not(.is-disabled):focus{box-shadow:0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color--focus,var(--now-form-control-input_inner-shadow--primary--color--focus,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-select_inset--color-alpha--focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-select--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-select--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),0 0 0 calc(var(--now-form-field_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-select--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.-sm .now-select-trigger:not(.is-disabled).is-open{box-shadow:0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--opened,var(--now-form-control-input--primary--border-color--opened,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color--opened,var(--now-form-control-input_inner-shadow--primary--color--opened,var(--now-color--primary-3,15,67,55))),var(--now-select_inset--color-alpha--opened,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-select--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-select--border-color--opened,var(--now-form-control-input--primary--border-color--opened,var(--now-color--focus-2,1,119,142)))),0 0 0 calc(var(--now-form-field_focus-ring--width, var(--now-form-control_focus-halo--secondary--border-width, 4px))/2) RGB(var(--now-select--border-color--opened,var(--now-form-control-input--primary--border-color--opened,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.-md .now-select-trigger:not(.is-disabled).is-invalid.has-focus,.-md .now-select-trigger:not(.is-disabled).is-invalid:focus,.-md .now-select-trigger:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid_focus,var(--now-form-control-input_inner-shadow--primary--color--invalid,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28))))),var(--now-select_inset--color-alpha--invalid_focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-select--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-select--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-select--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid_focus,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.-md .now-select-trigger:not(.is-disabled):focus{box-shadow:0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color--focus,var(--now-form-control-input_inner-shadow--primary--color--focus,var(--now-form-control-input_inner-shadow--primary--color,var(--now-color--neutral-18,22,27,28)))),var(--now-select_inset--color-alpha--focus,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-select--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-select--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142)))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-select--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.-md .now-select-trigger:not(.is-disabled).is-open{box-shadow:0 calc(var(--now-select--border-block-end-width, var(--now-form-control-input--primary--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-select--border-color--opened,var(--now-form-control-input--primary--border-color--opened,var(--now-color--focus-2,1,119,142)))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-select_inset--color--opened,var(--now-form-control-input_inner-shadow--primary--color--opened,var(--now-color--primary-3,15,67,55))),var(--now-select_inset--color-alpha--opened,var(--now-form-control-input_inner-shadow--color-alpha,.1))),inset 0 0 0 var(--now-select--border-width,var(--now-form-control-input--primary--border-width,0)) RGB(var(--now-select--border-color--opened,var(--now-form-control-input--primary--border-color--opened,var(--now-color--focus-2,1,119,142)))),0 0 0 var(--now-form-field_focus-ring--width,var(--now-form-control_focus-halo--secondary--border-width,4px)) RGB(var(--now-select--border-color--opened,var(--now-form-control-input--primary--border-color--opened,var(--now-color--focus-2,1,119,142))),var(--now-opacity--least,.1))}.now-select-trigger.is-invalid{background-color:RGB(var(--now-select--background-color--invalid,var(--now-form-control-input--primary--background-color--invalid,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-select--background-color-alpha--invalid,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-select--border-color--invalid,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))));color:RGB(var(--now-select--color--invalid,var(--now-form-control_value--color--invalid,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-select-trigger.is-invalid.has-hover,.now-select-trigger.is-invalid.is-disabled:hover,.now-select-trigger.is-invalid:hover{background-color:RGB(var(--now-select--background-color--invalid_hover,var(--now-form-control-input--primary--background-color--invalid_hover,var(--now-color_alert--critical-0,241,206,205))),var(--now-select--background-color-alpha--invalid_hover,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-select--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid_hover,var(--now-form-control-input--primary--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-select-trigger:not(.is-disabled):focus{background-color:RGB(var(--now-select--background-color--focus,var(--now-form-control-input--primary--background-color--focus,var(--now-form-control-input--primary--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-select--background-color-alpha--focus,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-select--border-color--focus,var(--now-form-control-input--primary--border-color--focus,var(--now-color--focus-2,1,119,142))))}.now-select-trigger:not(.is-disabled).is-open{background-color:RGB(var(--now-select--background-color--opened,var(--now-form-control-input--primary--background-color--opened,var(--now-color--primary-0,221,237,233))),var(--now-select--background-color-alpha--opened,var(--now-form-control-input--background-color-alpha,1)));border-color:RGB(var(--now-select--border-color--opened,var(--now-form-control-input--primary--border-color--opened,var(--now-color--focus-2,1,119,142))))}.now-select-trigger.is-disabled{cursor:not-allowed;opacity:var(--now-select--opacity--disabled,var(--now-form-control-input--opacity--disabled,var(--now-form-control--opacity--disabled,.25)))}.now-select-trigger-label{inline-size:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-select-trigger-label:after{content:\\\"\\\";display:block}.-sm .now-select-trigger-label{padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-select-trigger-label.has-decorator{padding-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-select-trigger-label{padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-block, 1));padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1));padding-inline-start:0}.-md .now-select-trigger-label.has-decorator{padding-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.now-select-trigger-icon{align-items:center;color:RGB(var(--now-select_trigger-icon--color,var(--now-form-control-input_trigger--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));display:flex;flex-shrink:0;justify-content:center}:not(.is-disabled).has-hover .now-select-trigger-icon,:not(.is-disabled):hover .now-select-trigger-icon{color:RGB(var(--now-select_trigger-icon--color--hover,var(--now-form-control-input_trigger--primary--color--hover,var(--now-form-control-input_trigger--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}:not(.is-disabled):focus .now-select-trigger-icon{color:RGB(var(--now-select_trigger-icon--color--focus,var(--now-form-control-input_trigger--primary--color--focus,var(--now-form-control-input_trigger--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}:not(.is-disabled).is-open .now-select-trigger-icon{color:RGB(var(--now-select_trigger-icon--color--opened,var(--now-form-control-input_trigger--primary--color--opened,var(--now-form-control-input_trigger--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.is-invalid .now-select-trigger-icon{color:RGB(var(--now-select_trigger-icon--color--invalid,var(--now-form-control-input_trigger--primary--color--invalid,var(--now-form-control-input_trigger--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.is-invalid.has-hover .now-select-trigger-icon,.is-invalid.is-disabled:hover .now-select-trigger-icon{color:RGB(var(--now-select_trigger-icon--color--invalid_hover,var(--now-form-control-input_trigger--primary--color--invalid_hover,var(--now-form-control-input_trigger--primary--color--invalid,var(--now-form-control-input_trigger--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))))}:not(.is-disabled).is-invalid.has-focus .now-select-trigger-icon,:not(.is-disabled).is-invalid:focus .now-select-trigger-icon,:not(.is-disabled).is-invalid:focus-within .now-select-trigger-icon{color:RGB(var(--now-select_trigger-icon--color--invalid_focus,var(--now-form-control-input_trigger--primary--color--invalid_focus,var(--now-form-control-input_trigger--primary--color--invalid,var(--now-form-control-input_trigger--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))))}.-sm .now-select-trigger-icon{block-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-select-trigger-icon.has-1-decorators{margin-inline-start:calc(1.75rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-select-trigger-icon.has-2-decorators{margin-inline-start:calc(3rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-select-trigger-icon{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-select-trigger-icon.has-1-decorators{margin-inline-start:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-select-trigger-icon.has-2-decorators{margin-inline-start:calc(3.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-select-end-slot,.now-select-start-slot{align-items:center;display:flex;justify-content:space-between;pointer-events:none}.-sm .now-select-end-slot,.-sm .now-select-start-slot{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-select-end-slot,.-md .now-select-start-slot{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}.-vertical .now-select-end-slot,.-vertical .now-select-start-slot{inset-block-end:0;position:absolute}.now-select-end-slot ::slotted(*),.now-select-start-slot ::slotted(*){pointer-events:auto}.-sm.-vertical .now-select-start-slot{inset-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md.-vertical .now-select-start-slot{inset-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.-horizontal .now-select-start-slot{inset-block-end:0;position:absolute}.-sm.-horizontal .now-select-start-slot{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy) + var(--now-select--border-width, var(--now-form-control-input--primary--border-width, 0px)))}.-md.-horizontal .now-select-start-slot{margin-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1) + var(--now-select--border-width, var(--now-form-control-input--primary--border-width, 0px)))}.-sm .now-select-end-slot.has-1-decorators{inline-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-select-end-slot.has-2-decorators{inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.-sm.-vertical .now-select-end-slot{inset-inline-end:calc(1.75rem*var(--classicsponlydonotuse--rem-multipy) + var(--now-select--border-width, var(--now-form-control-input--primary--border-width, 0px)))}.-sm.-horizontal .now-select-end-slot.has-1-decorators{margin-inline-start:calc(-2.5rem*var(--classicsponlydonotuse--rem-multipy))}.-sm.-horizontal .now-select-end-slot.has-2-decorators{margin-inline-start:calc(-3.75rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-select-end-slot{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2)}.-md .now-select-end-slot.has-1-decorators{inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-select-end-slot.has-2-decorators{inline-size:calc(3.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md.-vertical .now-select-end-slot{inset-inline-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy) + var(--now-select--border-width, var(--now-form-control-input--primary--border-width, 0px)))}.-md.-horizontal .now-select-end-slot.has-1-decorators{margin-inline-start:calc(-3.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md.-horizontal .now-select-end-slot.has-2-decorators{margin-inline-start:calc(-5.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-select-input{--now-input--background-color--readonly:var(--now-select--background-color--readonly,var(--now-form-control-input--primary--background-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))));--now-input--background-color-alpha--readonly:var(--now-select--background-color-alpha--readonly,var(--now-form-control-input--background-color-alpha,1));--now-input--border-width--readonly:var(--now-select--border-width--readonly,var(--now-form-control-input--primary--border-width,0px));--now-input--border-radius--readonly:var(--now-select--border-radius--readonly,var(--now-form-control-input--primary--border-radius,4px));--now-input--border-block-end-width--readonly:var(--now-select--border-block-end-width--readonly,var(--now-form-control-input--primary--border-block-end-width,1px));--now-input--border-color--readonly:var(--now-select--border-color--readonly,var(--now-form-control-input--primary--border-color--readonly,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231))));inline-size:100%;margin-block:0}.now-select-input-slot{display:flex;pointer-events:none}.-sm .now-select-input-slot ::slotted([slot=end]){margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-select-input-slot ::slotted([slot=start]){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-select-input-slot{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-select-input-slot ::slotted([slot=end]){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-select-input-slot ::slotted([slot=end]),.now-select-input-slot ::slotted([slot=start]){pointer-events:auto}@media(forced-colors:active){.now-select-trigger.is-disabled .now-select-trigger-icon{color:graytext}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.now-m-block--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--md{margin-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--md,.now-m-block-start--md{margin-block-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--md{margin-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--md{margin-inline-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--md,.now-m-inline-start--md{margin-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--md{margin-inline-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}:host{display:block}.now-tabs-vertical-container{block-size:inherit;display:flex;padding-block:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-tabs-vertical-container.-before{flex-direction:row-reverse}.now-tabs-vertical{align-items:flex-start;background-color:RGB(var(--now-tabs-vertical_container--background-color,var(--now-navigation-tabs-vertical_container--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-tabs-vertical_container--background-color-alpha,var(--now-navigation-tabs-vertical_container--background-color-alpha,0)));display:flex;flex-direction:column;font-variant:normal;inline-size:100%;letter-spacing:inherit;text-indent:0;text-shadow:none;white-space:nowrap;word-spacing:inherit}.now-tabs-vertical.-sm.icon-only{inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy))}.now-tabs-vertical.-md.icon-only{inline-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy))}.now-tabs-vertical.-start{border-inline-start-color:RGB(var(--now-tabs-vertical_divider--color,var(--now-navigation-tabs-vertical_divider--color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-inline-start-style:solid;border-inline-start-width:var(--now-tabs-vertical_divider--width,var(--now-navigation-tabs-vertical_divider--width,0))}.now-tabs-vertical.-end{border-inline-end-color:RGB(var(--now-tabs-vertical_divider--color,var(--now-navigation-tabs-vertical_divider--color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-inline-end-style:solid;border-inline-end-width:var(--now-tabs-vertical_divider--width,var(--now-navigation-tabs-vertical_divider--width,0))}.now-tabs-vertical.has-panel-content{inline-size:inherit}.now-tabs-vertical-panel{flex-grow:1;overflow:auto}.now-tab-list{display:flex;flex-direction:column;inline-size:100%}.now-tab{inline-size:100%;min-inline-size:0;position:relative}.now-tab:after{block-size:100%;border-color:RGB(var(--now-tabs-vertical--border-color,var(--now-navigation-tabs-vertical--selection--color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))),var(--now-tabs-vertical--border-color-alpha,var(--now-navigation-tabs-vertical--selection--color-alpha,1)));content:\\\"\\\";inline-size:var(--now-tabs-vertical--border-width--selected,var(--now-navigation-tabs-vertical--selection--border-width--selected,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))));inset-block-end:0;position:absolute}.-start .now-tab:after{inset-inline-start:0}.-end .now-tab:after{inset-inline-end:0}.now-tab:hover:not(.is-disabled):after{background-color:RGB(var(--now-tabs-vertical--border-color--hover,var(--now-navigation-tabs-vertical--selection--color--hover,var(--now-navigation-tabs-vertical--selection--color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181))))),var(--now-tabs-vertical--border-color-alpha--hover,var(--now-navigation-tabs-vertical--selection--color-alpha--hover,0)));border-width:var(--now-tabs-vertical--border-width--hover,var(--now-navigation-tabs-vertical--selection--border-width--hover,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))))}.now-tab:active:not(.is-disabled):after{background-color:RGB(var(--now-tabs-vertical--border-color--active,var(--now-navigation-tabs-vertical--selection--color--active,var(--now-color_selection--primary-4,15,67,55))),var(--now-tabs-vertical--border-color-alpha--active,var(--now-navigation-tabs-vertical--selection--color-alpha--active,0)));border-width:var(--now-tabs-vertical--border-width--active,var(--now-navigation-tabs-vertical--selection--border-width--active,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))))}.now-tab.is-selected:active:after,.now-tab.is-selected:after,.now-tab.is-selected:hover:after{background-color:RGB(var(--now-tabs-vertical--border-color--selected,var(--now-navigation-tabs-vertical--selection--color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-tabs-vertical--border-color-alpha--selected,var(--now-navigation-tabs-vertical--selection--color-alpha--selected,1)));border-width:var(--now-tabs-vertical--border-width--selected,var(--now-navigation-tabs-vertical--selection--border-width--selected,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))))}.show-inline-padding.-sm .now-tab{padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.show-inline-padding.-md .now-tab{padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-tab.-space-between-xxs:not(:last-child){margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs-vertical--scale-size-block, 1))}.now-tab.-space-between-xs:not(:last-child){margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs-vertical--scale-size-block, 1))}.now-tab.-space-between-sm:not(:last-child){margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs-vertical--scale-size-block, 1))}.now-tab.-space-between-md:not(:last-child){margin-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs-vertical--scale-size-block, 1))}.now-tab.-space-between-lg:not(:last-child){margin-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs-vertical--scale-size-block, 1))}.now-tab.-space-between-xl:not(:last-child){margin-block-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs-vertical--scale-size-block, 1))}.now-tab.-space-between-xxl:not(:last-child){margin-block-end:calc(2rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs-vertical--scale-size-block, 1))}.now-tab.-space-between-3xl:not(:last-child){margin-block-end:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs-vertical--scale-size-block, 1))}.now-tab-button{align-items:center;background-color:RGB(var(--now-tabs-vertical--background-color,var(--now-navigation-tabs-vertical--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-tabs-vertical--background-color-alpha,var(--now-navigation-tabs-vertical--background-color-alpha,0)));border:none;color:RGB(var(--now-tabs-vertical--color,var(--now-navigation-tabs-vertical_label--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))));cursor:pointer;display:flex;font-family:var(--now-tabs-vertical--font-family,var(--now-navigation-tabs-vertical--font-family,var(--now-navigation--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-tabs-vertical--font-style,var(--now-navigation-tabs-vertical--font-style,var(--now-navigation--font-style,normal)));font-weight:var(--now-tabs-vertical--font-weight,var(--now-navigation-tabs-vertical--font-weight,var(--now-navigation--font-weight,normal)));inline-size:inherit;inline-size:100%;justify-content:center;margin:0;min-inline-size:0;padding-block:0;text-transform:var(--now-tabs-vertical--text-transform,var(--now-navigation-tabs-vertical--text-transform,var(--now-navigation--text-transform,none)))}.now-tab-button::-moz-focus-inner{border-style:none}.now-tab-button:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-tab-button:focus{outline:1px solid highlight}}.-sm .now-tab-button{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));font-size:var(--now-navigation_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-tab-button .now-line-height-crop{display:block}.-sm .now-tab-button .now-line-height-crop:after,.-sm .now-tab-button .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-sm .now-tab-button .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.-sm .now-tab-button .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.-sm .now-tab-button .now-line-height-crop+.-sm .now-tab-button .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-sm.icon-only .now-tab-button{inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-tab-button{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy));font-size:var(--now-navigation_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-tab-button .now-line-height-crop{display:block}.-md .now-tab-button .now-line-height-crop:after,.-md .now-tab-button .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-md .now-tab-button .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-md .now-tab-button .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-md .now-tab-button .now-line-height-crop+.-md .now-tab-button .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.-md.icon-only .now-tab-button{inline-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.icon-only .now-tab-button{border-radius:var(--now-tabs-vertical--iconic--border-radius,var(--now-navigation-tabs-vertical_container_icon--border-radius,50%))}.now-tab-button:not(.is-disabled):hover{background-color:RGB(var(--now-tabs-vertical--background-color--hover,var(--now-navigation-tabs-vertical--background-color--hover,var(--now-navigation-tabs-vertical--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-tabs-vertical--background-color-alpha--hover,var(--now-navigation-tabs-vertical--background-color-alpha--hover,var(--now-opacity--more,.65))));color:RGB(var(--now-tabs-vertical--color--hover,var(--now-navigation-tabs-vertical_label--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-tab-button:not(.is-disabled):active{background-color:RGB(var(--now-tabs-vertical--background-color--active,var(--now-navigation-tabs-vertical--background-color--active,var(--now-navigation-tabs-vertical--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-tabs-vertical--background-color-alpha--active,var(--now-navigation-tabs-vertical--background-color-alpha--active,var(--now-opacity--most,.8))));color:RGB(var(--now-tabs-vertical--color--active,var(--now-navigation-tabs-vertical_label--color--active,var(--now-color_selection--primary-4,15,67,55))))}.is-selected .now-tab-button{background-color:RGB(var(--now-tabs-vertical--background-color--selected,var(--now-navigation-tabs-vertical--background-color--selected,var(--now-navigation-tabs-vertical--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-tabs-vertical--background-color-alpha--selected,var(--now-navigation-tabs-vertical--background-color-alpha--selected,1)));color:RGB(var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109))));font-style:var(--now-tabs-vertical--font-style--selected,var(--now-navigation-tabs-vertical--font-style--selected,var(--now-navigation--font-style,normal)));font-weight:var(--now-tabs-vertical--font-weight--selected,var(--now-navigation-tabs-vertical--font-weight--selected,var(--now-navigation--font-weight,normal)));text-transform:var(--now-tabs-vertical--text-transform--selected,var(--now-navigation-tabs-vertical--text-transform--selected,var(--now-navigation--text-transform,none)))}.is-selected .now-tab-button .now-tab-icon{color:RGB(var(--now-tabs-vertical_icon--color--selected,var(--now-navigation-tabs-vertical_icon--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.is-disabled .now-tab-button{cursor:not-allowed;opacity:var(--now-tabs-vertical--opacity--disabled,var(--now-navigation-tabs-vertical--opacity--disabled,var(--now-opacity--less,.25)))}.now-tab-button .now-line-height-crop{inline-size:100%;min-inline-size:0}.now-tab-button .now-tab-icon{color:RGB(var(--now-tabs-vertical_icon--color,var(--now-navigation-tabs-vertical_icon--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-tab-button .now-tab-icon:hover:not(.is-disabled){color:RGB(var(--now-tabs-vertical_icon--color--hover,var(--now-navigation-tabs-vertical_icon--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-tab-button .now-tab-icon:active:not(.is-disabled){color:RGB(var(--now-tabs-vertical_icon--color--active,var(--now-navigation-tabs-vertical_icon--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-tab-dropdown{--now-button--scale-size-block:var(--now-tabs--scale-size-block,1);--now-button--scale-size-inline:1;--now-dropdown--bare--font-style:var(--now-tabs-vertical--font-style,var(--now-navigation-tabs-vertical--font-style,var(--now-navigation--font-style,normal)));--now-dropdown--bare--font-weight:var(--now-tabs-vertical--font-weight,var(--now-navigation-tabs-vertical--font-weight,var(--now-navigation--font-weight,normal)));--now-dropdown--bare--font-family:var(--now-tabs-vertical--font-family,var(--now-navigation-tabs-vertical--font-family,var(--now-navigation--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));--now-dropdown--bare--text-transform:var(--now-tabs-vertical--text-transform,var(--now-navigation-tabs-vertical--text-transform,var(--now-navigation--text-transform,none)));--now-dropdown--bare_tertiary--color:var(--now-tabs-vertical--color,var(--now-navigation-tabs-vertical_label--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-dropdown--bare_tertiary--color--hover:var(--now-tabs-vertical--color--hover,var(--now-navigation-tabs-vertical_label--color--hover,var(--now-color_selection--primary-3,23,100,82)));--now-dropdown--bare_tertiary--color--active:var(--now-tabs-vertical--color--active,var(--now-navigation-tabs-vertical_label--color--active,var(--now-color_selection--primary-4,15,67,55)));--now-dropdown--bare_tertiary--background-color--hover:var(--now-tabs-vertical--background-color--hover,var(--now-navigation-tabs-vertical--background-color--hover,var(--now-navigation-tabs-vertical--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-dropdown--bare_tertiary--background-color-alpha--hover:var(--now-tabs-vertical--background-color-alpha--hover,var(--now-navigation-tabs-vertical--background-color-alpha--hover,var(--now-opacity--more,0.65)));--now-dropdown--bare_tertiary--background-color--active:var(--now-tabs-vertical--background-color--active,var(--now-navigation-tabs-vertical--background-color--active,var(--now-navigation-tabs-vertical--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-dropdown--bare_tertiary--background-color-alpha--active:var(--now-tabs-vertical--background-color-alpha--active,var(--now-navigation-tabs-vertical--background-color-alpha--active,var(--now-opacity--most,0.8)));--now-dropdown_icon--bare_tertiary--color:var(--now-tabs-vertical--color,var(--now-navigation-tabs-vertical_label--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-dropdown_icon--bare_tertiary--color--hover:var(--now-tabs-vertical--color--hover,var(--now-navigation-tabs-vertical_label--color--hover,var(--now-color_selection--primary-3,23,100,82)));--now-dropdown_icon--bare_tertiary--color--active:var(--now-tabs-vertical--color--active,var(--now-navigation-tabs-vertical_label--color--active,var(--now-color_selection--primary-4,15,67,55)));--now-dropdown_trigger-icon--bare_tertiary--color:var(--now-tabs-vertical--color,var(--now-navigation-tabs-vertical_label--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-dropdown_trigger-icon--bare_tertiary--color--hover:var(--now-tabs-vertical--color--hover,var(--now-navigation-tabs-vertical_label--color--hover,var(--now-color_selection--primary-3,23,100,82)));--now-dropdown_trigger-icon--bare_tertiary--color--active:var(--now-tabs-vertical--color--active,var(--now-navigation-tabs-vertical_label--color--active,var(--now-color_selection--primary-4,15,67,55)));--now-dropdown--border-top-left-radius:0;--now-dropdown--border-top-right-radius:0;--now-dropdown--border-bottom-left-radius:0;--now-dropdown--border-bottom-right-radius:0;block-size:auto;display:block;inline-size:100%;min-inline-size:0;position:relative}.is-selected .now-tab-dropdown{--now-dropdown--bare--font-style:var(--now-tabs-vertical--font-style--selected,var(--now-navigation-tabs-vertical--font-style--selected,var(--now-navigation--font-style,normal)));--now-dropdown--bare--font-weight:var(--now-tabs-vertical--font-weight--selected,var(--now-navigation-tabs-vertical--font-weight--selected,var(--now-navigation--font-weight,normal)));--now-dropdown--bare--text-transform:var(--now-tabs-vertical--text-transform--selected,var(--now-navigation-tabs-vertical--text-transform--selected,var(--now-navigation--text-transform,none)));--now-dropdown--bare_tertiary--color:var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109)));--now-dropdown--bare_tertiary--color--hover:var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109)));--now-dropdown--bare_tertiary--color--active:var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109)));--now-dropdown_icon--bare_tertiary--color:var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109)));--now-dropdown_icon--bare_tertiary--color--hover:var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109)));--now-dropdown_icon--bare_tertiary--color--active:var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109)));--now-dropdown_trigger-icon--bare_tertiary--color:var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109)));--now-dropdown_trigger-icon--bare_tertiary--color--hover:var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109)));--now-dropdown_trigger-icon--bare_tertiary--color--active:var(--now-tabs-vertical--color--selected,var(--now-navigation-tabs-vertical_label--color--selected,var(--now-color_selection--primary-2,30,133,109)));background-color:RGB(var(--now-tabs-vertical--background-color--selected,var(--now-navigation-tabs-vertical--background-color--selected,var(--now-navigation-tabs-vertical--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-tabs-vertical--background-color-alpha--selected,var(--now-navigation-tabs-vertical--background-color-alpha--selected,1)))}.icon-only .now-tab-dropdown{--now-button--iconic--border-radius:var(--now-tabs-vertical--iconic--border-radius,var(--now-navigation-tabs-vertical_container_icon--border-radius,50%));border-radius:var(--now-tabs-vertical--iconic--border-radius,var(--now-navigation-tabs-vertical_container_icon--border-radius,50%))}.now-tab-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-tab-label:after{content:\\\"\\\";display:block}@media(forced-colors:active){.now-tabs-vertical.-start{border-inline-start-width:1px}.now-tabs-vertical.-end{border-inline-end-width:1px}.now-tab:after{display:none}.now-tab-button{border-style:solid;border-width:1px}.now-tab-button:active:not(.is-disabled),.now-tab-button:not(.is-disabled){background-color:buttonface;color:buttontext}.now-tab-button:focus,.now-tab-button:hover:not(.is-disabled){background-color:highlighttext;border-color:highlight;color:highlight}.now-tab-button.is-selected,.now-tab-button.is-selected:hover{background-color:selecteditem;color:selecteditemtext}.now-tab-button.is-disabled{border-color:graytext;color:graytext;opacity:1}.now-tab-button .now-align{forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.now-m-block--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}:host{display:block}.now-tabs{background-color:RGB(var(--now-tabs_container--background-color,var(--now-navigation-tabs_container--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-tabs_container--background-color-alpha,var(--now-navigation-tabs_container--background-color-alpha,0)));border-block-end-color:RGB(var(--now-tabs_divider--color,var(--now-navigation-tabs_divider--color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-block-end-style:solid;border-block-end-width:var(--now-tabs_divider--width,var(--now-navigation-tabs_divider--width,1px));display:flex;font-variant:normal;letter-spacing:inherit;text-indent:0;text-shadow:none;white-space:nowrap;word-spacing:inherit}.now-tabs.-sm .now-line-height-crop{display:block}.now-tabs.-sm .now-line-height-crop:after,.now-tabs.-sm .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-tabs.-sm .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-tabs.-sm .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-tabs.-sm .now-line-height-crop+.now-tabs.-sm .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-tabs.-md .now-line-height-crop{display:block}.now-tabs.-md .now-line-height-crop:after,.now-tabs.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-tabs.-md .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-tabs.-md .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-tabs.-md .now-line-height-crop+.now-tabs.-md .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-tabs.hide-padding .now-tab+.now-tab,.now-tabs.hide-padding .now-tab-dropdown{margin-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs--scale-size-inline, 1))}.now-tabs.hide-padding.fixed-width .now-tab+.now-tab,.now-tabs.hide-padding.fixed-width .now-tab~.now-tab-dropdown{margin-inline-start:0}.now-tabs.hide-divider{border-block-end-width:0}.now-tab-list{display:flex;min-inline-size:0}.fixed-width .now-tab-list{flex:1}.now-tabs-container{block-size:inherit;display:flex;flex-direction:column}.now-tab-panel{flex-grow:1;overflow:auto}.now-tab{align-items:center;background-color:RGB(var(--now-tabs--background-color,var(--now-navigation-tabs--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-tabs--background-color-alpha,var(--now-navigation-tabs--background-color-alpha,0)));border:none;border-color:RGB(var(--now-tabs--border-color,var(--now-navigation-tabs--selection--color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))),var(--now-tabs--border-color-alpha,var(--now-navigation-tabs--selection--color-alpha,1)));border-start-end-radius:var(--now-tabs--border-radius,var(--now-navigation-tabs--selection--border-radius,0));border-start-start-radius:var(--now-tabs--border-radius,var(--now-navigation-tabs--selection--border-radius,0));border-width:var(--now-tabs--border-width,var(--now-navigation-tabs--selection--border-width,0));color:RGB(var(--now-tabs--color,var(--now-navigation-tabs_label--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))));cursor:pointer;display:flex;font-family:var(--now-tabs--font-family,var(--now-navigation-tabs--font-family,var(--now-navigation--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-tabs--font-style,var(--now-navigation-tabs--font-style,var(--now-navigation--font-style,normal)));font-variant:normal;font-weight:var(--now-tabs--font-weight,var(--now-navigation-tabs--font-weight,var(--now-navigation--font-weight,normal)));inline-size:inherit;inline-size:auto;justify-content:center;letter-spacing:inherit;margin:0;min-inline-size:0;position:relative;text-indent:0;text-shadow:none;text-transform:var(--now-tabs--text-transform,var(--now-navigation-tabs--text-transform,var(--now-navigation--text-transform,none)));white-space:normal;word-spacing:inherit}.now-tab::-moz-focus-inner{border-style:none}.now-tab:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-tab:focus{outline:1px solid highlight}}.now-tab.-sm{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-tabs--scale-size-block, 1)*1.5rem*var(--classicsponlydonotuse--rem-multipy)/2);font-size:var(--now-navigation_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;padding-block:0;padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs--scale-size-inline, 1))}.now-tab.-sm .now-line-height-crop{display:block}.now-tab.-sm .now-line-height-crop:after,.now-tab.-sm .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-tab.-sm .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-tab.-sm .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-tab.-sm .now-line-height-crop+.now-tab.-sm .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-tab.-md{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-tabs--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);font-size:var(--now-navigation_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25;padding-block:0;padding-inline:calc(1rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-tabs--scale-size-inline, 1))}.now-tab.-md .now-line-height-crop{display:block}.now-tab.-md .now-line-height-crop:after,.now-tab.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-tab.-md .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-tab.-md .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-tab.-md .now-line-height-crop+.now-tab.-md .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-tab:hover:not(.is-disabled){background-color:RGB(var(--now-tabs--background-color--hover,var(--now-navigation-tabs--background-color--hover,var(--now-navigation-tabs--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-tabs--background-color-alpha--hover,var(--now-navigation-tabs--background-color-alpha--hover,0)));border-color:RGB(var(--now-tabs--border-color--hover,var(--now-navigation-tabs--selection--color--hover,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))),var(--now-tabs--border-color-alpha--hover,var(--now-navigation-tabs--selection--color-alpha--hover,1)));border-width:var(--now-tabs--border-width--hover,var(--now-navigation-tabs--selection--border-width--hover,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))));color:RGB(var(--now-tabs--color--hover,var(--now-navigation-tabs_label--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-tab:hover:not(.is-disabled):after{background-color:RGB(var(--now-tabs--border-color--hover,var(--now-navigation-tabs--selection--color--hover,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))))}.now-tab:active:not(.is-disabled){background-color:RGB(var(--now-tabs--background-color--active,var(--now-navigation-tabs--background-color--active,var(--now-navigation-tabs--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-tabs--background-color-alpha--active,var(--now-navigation-tabs--background-color-alpha--active,0)));border-color:RGB(var(--now-tabs--border-color--active,var(--now-navigation-tabs--selection--color--active,var(--now-color_selection--primary-4,15,67,55))),var(--now-tabs--border-color-alpha--active,var(--now-navigation-tabs--selection--color-alpha--active,1)));border-width:var(--now-tabs--border-width--active,var(--now-navigation-tabs--selection--border-width--active,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))));color:RGB(var(--now-tabs--color--active,var(--now-navigation-tabs_label--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-tab:active:not(.is-disabled):after{background-color:RGB(var(--now-tabs--border-color--active,var(--now-navigation-tabs--selection--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-tab.is-selected{background-color:RGB(var(--now-tabs--background-color--selected,var(--now-navigation-tabs--background-color--selected,var(--now-navigation-tabs--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-tabs--background-color-alpha--selected,var(--now-navigation-tabs--background-color-alpha--selected,0)));border-color:RGB(var(--now-tabs--border-color--selected,var(--now-navigation-tabs--selection--color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-tabs--border-color-alpha--selected,var(--now-navigation-tabs--selection--color-alpha--selected,1)));border-width:var(--now-tabs--border-width--selected,var(--now-navigation-tabs--selection--border-width--selected,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))));color:RGB(var(--now-tabs--color--selected,var(--now-navigation-tabs_label--color--selected,var(--now-color_selection--primary-2,30,133,109))));font-style:var(--now-tabs--font-style--selected,var(--now-navigation-tabs--font-style--selected,var(--now-navigation--font-style,normal)));font-weight:var(--now-tabs--font-weight--selected,var(--now-navigation-tabs--font-weight--selected,var(--now-navigation--font-weight,normal)));text-transform:var(--now-tabs--text-transform--selected,var(--now-navigation-tabs--text-transform--selected,var(--now-navigation--text-transform,none)))}.now-tab.is-selected .now-tab-icon{color:RGB(var(--now-tabs_icon--color--selected,var(--now-navigation-tabs_icon--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-tab.is-disabled{cursor:not-allowed;opacity:var(--now-tabs--opacity--disabled,var(--now-navigation-tabs--opacity--disabled,var(--now-opacity--less,.25)))}.hide-padding .now-tab{padding-inline:0}.fixed-width .now-tab{flex:1 1 0;min-inline-size:calc(6.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm.fixed-width.icon-only .now-tab{min-inline-size:calc(2.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md.fixed-width.icon-only .now-tab{min-inline-size:calc(3rem*var(--classicsponlydonotuse--rem-multipy))}.now-tab .now-line-height-crop{display:block;min-inline-size:0}.now-tab .now-line-height-crop:after,.now-tab .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-tab .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.now-tab .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.now-tab .now-line-height-crop+.now-tab .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-tab .now-tab-icon{color:RGB(var(--now-tabs_icon--color,var(--now-navigation-tabs_icon--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-tab .now-tab-icon:hover:not(.is-disabled){color:RGB(var(--now-tabs_icon--color--hover,var(--now-navigation-tabs_icon--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-tab .now-tab-icon:active:not(.is-disabled){color:RGB(var(--now-tabs_icon--color--active,var(--now-navigation-tabs_icon--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-tab-dropdown:after,.now-tab:after{block-size:var(--now-tabs--border-width--selected,var(--now-navigation-tabs--selection--border-width--selected,calc(.125rem*var(--classicsponlydonotuse--rem-multipy))));content:\\\"\\\";inline-size:100%;inset-block-end:calc(var(--now-tabs_divider--width, var(--now-navigation-tabs_divider--width, 1px))*-1);inset-inline-start:0;position:absolute}.now-tab-dropdown.is-selected:after,.now-tab.is-selected:after{background-color:RGB(var(--now-tabs--border-color--selected,var(--now-navigation-tabs--selection--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-tab-dropdown{--now-button--scale-size-inline:var(--now-tabs--scale-size-inline,1);--now-button--scale-size-block:var(--now-tabs--scale-size-block,1);--now-dropdown--bare--font-style:var(--now-tabs--font-style,var(--now-navigation-tabs--font-style,var(--now-navigation--font-style,normal)));--now-dropdown--bare--font-weight:var(--now-tabs--font-weight,var(--now-navigation-tabs--font-weight,var(--now-navigation--font-weight,normal)));--now-dropdown--bare--font-family:var(--now-tabs--font-family,var(--now-navigation-tabs--font-family,var(--now-navigation--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));--now-dropdown--bare--text-transform:var(--now-tabs--text-transform,var(--now-navigation-tabs--text-transform,var(--now-navigation--text-transform,none)));--now-dropdown--bare_tertiary--color:var(--now-tabs--color,var(--now-navigation-tabs_label--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-dropdown--bare_tertiary--color--hover:var(--now-tabs--color--hover,var(--now-navigation-tabs_label--color--hover,var(--now-color_selection--primary-3,23,100,82)));--now-dropdown--bare_tertiary--color--active:var(--now-tabs--color--active,var(--now-navigation-tabs_label--color--active,var(--now-color_selection--primary-4,15,67,55)));--now-dropdown--bare_tertiary--background-color--hover:var(--now-tabs--background-color--hover,var(--now-navigation-tabs--background-color--hover,var(--now-navigation-tabs--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-dropdown--bare_tertiary--background-color-alpha--hover:var(--now-tabs--background-color-alpha,var(--now-navigation-tabs--background-color-alpha,0));--now-dropdown--bare_tertiary--background-color--active:var(--now-tabs--background-color--active,var(--now-navigation-tabs--background-color--active,var(--now-navigation-tabs--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));--now-dropdown--bare_tertiary--background-color-alpha--active:var(--now-tabs--background-color-alpha,var(--now-navigation-tabs--background-color-alpha,0));--now-dropdown_icon--bare_tertiary--color:var(--now-tabs--color,var(--now-navigation-tabs_label--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-dropdown_icon--bare_tertiary--color--hover:var(--now-tabs--color--hover,var(--now-navigation-tabs_label--color--hover,var(--now-color_selection--primary-3,23,100,82)));--now-dropdown_icon--bare_tertiary--color--active:var(--now-tabs--color--active,var(--now-navigation-tabs_label--color--active,var(--now-color_selection--primary-4,15,67,55)));--now-dropdown_trigger-icon--bare_tertiary--color:var(--now-tabs--color,var(--now-navigation-tabs_label--color,var(--now-navigation--primary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));--now-dropdown_trigger-icon--bare_tertiary--color--hover:var(--now-tabs--color--hover,var(--now-navigation-tabs_label--color--hover,var(--now-color_selection--primary-3,23,100,82)));--now-dropdown_trigger-icon--bare_tertiary--color--active:var(--now-tabs--color--active,var(--now-navigation-tabs_label--color--active,var(--now-color_selection--primary-4,15,67,55)));--now-dropdown--border-top-left-radius:var(--now-tabs--border-radius,var(--now-navigation-tabs--selection--border-radius,0px));--now-dropdown--border-top-right-radius:var(--now-tabs--border-radius,var(--now-navigation-tabs--selection--border-radius,0px));--now-dropdown--border-bottom-right-radius:0;--now-dropdown--border-bottom-left-radius:0;flex-shrink:0;min-inline-size:0;position:relative}.now-tab-dropdown.is-selected{--now-dropdown--bare--font-style:var(--now-tabs--font-style--selected,var(--now-navigation-tabs--font-style--selected,var(--now-navigation--font-style,normal)));--now-dropdown--bare--font-weight:var(--now-tabs--font-weight--selected,var(--now-navigation-tabs--font-weight--selected,var(--now-navigation--font-weight,normal)));--now-dropdown--bare--text-transform:var(--now-tabs--text-transform--selected,var(--now-navigation-tabs--text-transform--selected,var(--now-navigation--text-transform,none)));--now-dropdown--bare_tertiary--color:var(--now-tabs--color--selected,var(--now-navigation-tabs_label--color--selected,var(--now-color_selection--primary-2,30,133,109)))}.now-tab-count,.now-tab-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-tab-count:after,.now-tab-label:after{content:\\\"\\\";display:block}.now-tab-count{min-inline-size:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}@media(forced-colors:active){.now-tabs{border-block-end-color:canvastext;border-block-end-width:1px}.now-tab{border-style:solid;border-width:1px}.now-tab:active:not(.is-disabled),.now-tab:not(.is-disabled){background-color:buttonface;color:buttontext}.now-tab:focus,.now-tab:hover:not(.is-disabled){background-color:highlighttext;border-color:highlight;color:highlight}.now-tab.is-selected,.now-tab.is-selected:hover{background-color:selecteditem;color:selecteditemtext}.now-tab.is-disabled{border-color:graytext;color:graytext;opacity:1}.now-tab .now-align{forced-color-adjust:none}.now-tab-dropdown:after,.now-tab:after{display:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{block-size:100%;display:inline-block;inline-size:100%}.now-template-message-empty-state{block-size:100%;inline-size:100%}.now-template-message-empty-state-illustration{flex:1 1 auto}.-vertical-centered .now-template-message-empty-state-illustration{block-size:auto;inline-size:100%;max-block-size:calc(22.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-template-message-empty-state-illustration{block-size:100%;max-inline-size:calc(22.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-template-message-empty-state-messages{display:inline-block;inline-size:100%;word-break:break-word}.-md .now-template-message-empty-state-messages,.-sm .now-template-message-empty-state-messages{margin-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-md.-vertical-centered .now-template-message-empty-state-messages,.-sm.-vertical-centered .now-template-message-empty-state-messages{margin-block-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-md.-horizontal .now-template-message-empty-state-messages,.-sm.-horizontal .now-template-message-empty-state-messages{margin-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-lg .now-template-message-empty-state-messages{margin-block-end:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.-lg.-vertical-centered .now-template-message-empty-state-messages{margin-block-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.-lg.-horizontal .now-template-message-empty-state-messages{margin-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-template-message-empty-state-heading{color:RGB(var(--now-template-message-empty-state_heading--color,var(--now-display-type--primary--color,var(--now-display-type--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))));margin-block-start:0}.-sm .now-template-message-empty-state-heading{font-size:var(--now-display-type_header--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333}.-md .now-template-message-empty-state-heading,.-sm .now-template-message-empty-state-heading{font-family:var(--now-template-message-empty-state_heading--title--font-family,var(--now-display-type--title-primary--font-family,var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-style:var(--now-template-message-empty-state_heading--title--font-style,var(--now-display-type--title-primary--font-style,var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal))));font-weight:var(--now-template-message-empty-state_heading--title--font-weight,var(--now-display-type--title-primary--font-weight,var(--now-display-type--primary--font-weight,600)));margin-block-end:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));text-transform:var(--now-template-message-empty-state_heading--title--text-transform,var(--now-display-type--title-primary--text-transform,var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none))))}.-md .now-template-message-empty-state-heading{font-size:var(--now-display-type_header--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.-lg .now-template-message-empty-state-heading{font-family:var(--now-template-message-empty-state_heading--header--font-family,var(--now-display-type--header-primary--font-family,var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)))));font-size:var(--now-display-type_header--font-size--lg,var(--now-font-size--lg,calc(1.25rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-template-message-empty-state_heading--header--font-style,var(--now-display-type--header-primary--font-style,var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal))));font-weight:var(--now-template-message-empty-state_heading--header--font-weight,var(--now-display-type--header-primary--font-weight,var(--now-display-type--primary--font-weight,600)));line-height:1.25;margin-block-end:calc(1rem*var(--classicsponlydonotuse--rem-multipy));text-transform:var(--now-template-message-empty-state_heading--header--text-transform,var(--now-display-type--header-primary--text-transform,var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none))))}.now-template-message-empty-state-heading.no-content{margin-block-end:0}.now-template-message-empty-state-content{color:RGB(var(--now-template-message-empty-state_content--color,var(--now-display-type--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))));font-family:var(--now-template-message-empty-state_content--font-family,var(--now-display-type--tertiary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-template-message-empty-state_content--font-style,var(--now-display-type--tertiary--font-style,var(--now-display-type--font-style,normal)));font-weight:var(--now-template-message-empty-state_content--font-weight,var(--now-display-type--tertiary--font-weight,var(--now-display-type--font-weight,normal)));margin-block:0;text-transform:var(--now-template-message-empty-state_content--text-transform,var(--now-display-type--tertiary--text-transform,var(--now-display-type--text-transform,none)))}.-md .now-template-message-empty-state-content,.-sm .now-template-message-empty-state-content{font-size:var(--now-display-type_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333}.-lg .now-template-message-empty-state-content{font-size:var(--now-display-type_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.25}.-md.-horizontal .now-template-message-empty-state-actions,.-sm.-horizontal .now-template-message-empty-state-actions{margin-inline-start:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-lg.-horizontal .now-template-message-empty-state-actions{margin-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-template-message-empty-state-action{margin-block-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical-centered .now-template-message-empty-state-action{margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-template-message-empty-state-action{margin-inline-end:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xxs{margin-block-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xxs{margin-inline-end:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}:host{--now-line-height:inherit;display:inline-block}.now-text-link{cursor:pointer;font-family:var(--now-text-link--font-family,inherit);font-style:var(--now-text-link--font-style,inherit);font-weight:var(--now-text-link--font-weight,inherit);text-decoration:none;text-transform:var(--now-text-link--text-transform,inherit)}.now-text-link::-moz-focus-inner{border-style:none}.now-text-link:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-text-link:focus{outline:1px solid highlight}}.now-text-link:active,.now-text-link:hover{text-decoration:underline}.now-text-link.-primary{color:RGB(var(--now-text-link--primary--color,var(--now-actionable_link_label--primary--color,var(--now-color--link-2,1,119,142))))}.now-text-link.-primary:hover{color:RGB(var(--now-text-link--primary--color--hover,var(--now-actionable_link_label--primary--color--hover,var(--now-color--link-3,1,104,124))))}.now-text-link.-primary:active{color:RGB(var(--now-text-link--primary--color--active,var(--now-actionable_link_label--primary--color--active,var(--now-color--link-4,1,89,107))))}.now-text-link.-secondary{color:RGB(var(--now-text-link--secondary--color,var(--now-actionable_link_label--secondary--color,var(--now-color--link-3,1,104,124))))}.now-text-link.-secondary:hover{color:RGB(var(--now-text-link--secondary--color--hover,var(--now-actionable_link_label--secondary--color--hover,var(--now-color--link-4,1,89,107))))}.now-text-link.-secondary:active{color:RGB(var(--now-text-link--secondary--color--active,var(--now-actionable_link_label--secondary--color--active,var(--now-color--neutral-18,22,27,28))))}.now-text-link.show-underline{text-decoration:underline}.now-text-link-icon{--now-line-height:inherit}.-primary .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--primary--color,var(--now-actionable_link_icon-start--primary--color,var(--now-color--link-2,1,119,142))))}.-primary:hover .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--primary--color--hover,var(--now-actionable_link_icon-start--primary--color--hover,var(--now-color--link-3,1,104,124))))}.-primary:active .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--primary--color--active,var(--now-actionable_link_icon-start--primary--color--active,var(--now-color--link-4,1,89,107))))}.-secondary .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--secondary--color,var(--now-actionable_link_icon-start--secondary--color,var(--now-color--link-3,1,104,124))))}.-secondary:hover .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--secondary--color--hover,var(--now-actionable_link_icon-start--secondary--color--hover,var(--now-color--link-4,1,89,107))))}.-secondary:active .now-text-link-icon.-start{color:RGB(var(--now-text-link_icon-start--secondary--color--active,var(--now-actionable_link_icon-start--secondary--color--active,var(--now-color--neutral-18,22,27,28))))}.-primary .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--primary--color,var(--now-actionable_link_icon-end--primary--color,var(--now-color--link-2,1,119,142))))}.-primary:hover .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--primary--color--hover,now-actionable_link_icon-end--primary--color--hover))}.-primary:active .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--primary--color--active,now-actionable_link_icon-end--primary--color--active))}.-secondary .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--secondary--color,var(--now-actionable_link_icon-end--secondary--color,var(--now-color--link-3,1,104,124))))}.-secondary:hover .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--secondary--color--hover,var(--now-actionable_link_icon-end--secondary--color--hover,var(--now-color--link-4,1,89,107))))}.-secondary:active .now-text-link-icon.-end{color:RGB(var(--now-text-link_icon-end--secondary--color--active,var(--now-actionable_link_icon-end--secondary--color--active,var(--now-color--neutral-18,22,27,28))))}@media(forced-colors:active){.now-text-link{text-decoration:underline}.now-text-link.show-tooltip{outline-offset:-1px}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-message{border-radius:var(--now-form-field_message--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-form-field_message--border-width,0);display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-color_alert--info-1,104,171,218)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,none)}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.now-form-field-label-label .will-truncate{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-form-field-label-label .will-truncate:after{content:\\\"\\\";display:block}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}:host{display:inline-block;margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-textarea{font-variant:normal;letter-spacing:inherit;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit}.now-textarea.-horizontal{align-items:start;grid-template-rows:minmax(auto,1fr)}.now-textarea.disable-max-height{block-size:100%}.-md.-horizontal .now-form-field-label,.-md.-horizontal .now-form-field-label-end{padding-block-start:calc(var(--now-scale-space--md, 1)*.75rem*var(--classicsponlydonotuse--rem-multipy))}.-sm.-horizontal .now-form-field-label,.-sm.-horizontal .now-form-field-label-end{padding-block-start:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-textarea-field,.now-textarea-field-backdrop,.now-textarea-field-copy{block-size:100%;border-block-end-width:calc(var(--now-textarea--border-block-end-width, var(--now-form-field--border-block-end-width, 1px)) + var(--now-textarea--border-width, var(--now-form-field--border-width, 0px)));border-block-start-width:var(--now-textarea--border-width,var(--now-form-field--border-width,0));border-inline-end-width:var(--now-textarea--border-width,var(--now-form-field--border-width,0));border-inline-start-width:var(--now-textarea--border-width,var(--now-form-field--border-width,0));border-radius:var(--now-textarea--border-radius,var(--now-form-field--border-radius,0));border-style:solid;display:block;font-family:var(--now-form-field--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-style:var(--now-form-field--font-style,normal);font-variant:normal;font-weight:var(--now-form-field--font-weight,normal);inline-size:100%;letter-spacing:inherit;outline:none;text-indent:0;text-shadow:none;text-transform:var(--now-form-field--text-transform,none);word-spacing:inherit}.-sm .now-textarea-field,.-sm .now-textarea-field-backdrop,.-sm .now-textarea-field-copy{box-shadow:inset 0 1px 0 1px RGB(var(--now-textarea_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))),var(--now-textarea_inset--color-alpha,var(--now-form-field_inset--color-alpha,0)));font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.3333;padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)) calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-textarea-field,.-md .now-textarea-field-backdrop,.-md .now-textarea-field-copy{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))),var(--now-textarea_inset--color-alpha,var(--now-form-field_inset--color-alpha,0)));font-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy));line-height:1.25;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-textarea-field-backdrop.has-slotted-content,.now-textarea-field-copy.has-slotted-content,.now-textarea-field.has-slotted-content{padding-inline-start:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-textarea-field-backdrop:not([rows=\\\"\\\"]),.now-textarea-field-copy:not([rows=\\\"\\\"]),.now-textarea-field:not([rows=\\\"\\\"]){max-block-size:calc(16rem*var(--classicsponlydonotuse--rem-multipy));min-block-size:calc(4rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*4rem*var(--classicsponlydonotuse--rem-multipy)/2)}.disable-min-height .now-textarea-field,.disable-min-height .now-textarea-field-backdrop,.disable-min-height .now-textarea-field-copy{min-block-size:0}.now-textarea-field-backdrop::placeholder,.now-textarea-field-copy::placeholder,.now-textarea-field::placeholder{opacity:1}.now-textarea-field-backdrop:not(.is-disabled):hover,.now-textarea-field-copy:not(.is-disabled):hover,.now-textarea-field:not(.is-disabled):hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--color--hover,var(--now-form-field_inset--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-textarea_inset--color-alpha--hover,var(--now-form-field_inset--color-alpha--hover,.1)))}.now-textarea-field-backdrop:focus,.now-textarea-field-backdrop:not(.is-disabled):hover,.now-textarea-field-copy:focus,.now-textarea-field-copy:not(.is-disabled):hover,.now-textarea-field:focus,.now-textarea-field:not(.is-disabled):hover{border-block-end-width:calc(var(--now-textarea--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2 + var(--now-textarea--border-width, var(--now-form-field--border-width, 0px)))}.-sm .now-textarea-field-backdrop:focus,.-sm .now-textarea-field-copy:focus,.-sm .now-textarea-field:focus{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-textarea--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.-md .now-textarea-field-backdrop:focus,.-md .now-textarea-field-copy:focus,.-md .now-textarea-field:focus{box-shadow:inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-textarea--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.now-textarea-field-backdrop.-initial,.now-textarea-field-copy.-initial,.now-textarea-field.-initial{background-color:RGB(var(--now-textarea--background-color,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-textarea--background-color-alpha,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-textarea--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));color:RGB(var(--now-textarea--color,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-textarea-field-backdrop.-initial::placeholder,.now-textarea-field-copy.-initial::placeholder,.now-textarea-field.-initial::placeholder{color:RGB(var(--now-textarea_placeholder--color,var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))),.95)}.now-textarea-field-backdrop.-initial:not(.is-disabled).hover,.now-textarea-field-backdrop.-initial:not(.is-disabled):hover,.now-textarea-field-copy.-initial:not(.is-disabled).hover,.now-textarea-field-copy.-initial:not(.is-disabled):hover,.now-textarea-field.-initial:not(.is-disabled).hover,.now-textarea-field.-initial:not(.is-disabled):hover{background-color:RGB(var(--now-textarea--background-color--hover,var(--now-form-field--background-color--hover,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-textarea--background-color-alpha--hover,var(--now-form-field--background-color-alpha--hover,1)));border-color:RGB(var(--now-textarea--border-color--hover,var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}.now-textarea-field-backdrop.-initial:not(.is-disabled).hover::placeholder,.now-textarea-field-backdrop.-initial:not(.is-disabled):hover::placeholder,.now-textarea-field-copy.-initial:not(.is-disabled).hover::placeholder,.now-textarea-field-copy.-initial:not(.is-disabled):hover::placeholder,.now-textarea-field.-initial:not(.is-disabled).hover::placeholder,.now-textarea-field.-initial:not(.is-disabled):hover::placeholder{color:RGB(var(--now-textarea_placeholder--color--hover,var(--now-form-field_placeholder--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))),.85)}.now-textarea-field-backdrop.-initial:focus,.now-textarea-field-copy.-initial:focus,.now-textarea-field.-initial:focus{background-color:RGB(var(--now-textarea--background-color--focus,var(--now-form-field--background-color--focus,var(--now-color--secondary-0,217,235,238))),var(--now-textarea--background-color-alpha--focus,var(--now-form-field--background-color-alpha--focus,1)));border-color:RGB(var(--now-textarea--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))))}.now-textarea-field-backdrop.-initial:focus::placeholder,.now-textarea-field-copy.-initial:focus::placeholder,.now-textarea-field.-initial:focus::placeholder{color:RGB(var(--now-textarea_placeholder--color--hover,var(--now-form-field_placeholder--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))),.85)}.now-textarea-field-backdrop.is-invalid,.now-textarea-field-copy.is-invalid,.now-textarea-field.is-invalid{background-color:RGB(var(--now-textarea--background-color--invalid,var(--now-form-field--background-color--invalid,var(--now-color_alert--critical-0,241,206,205))),var(--now-textarea--background-color-alpha--invalid,var(--now-form-field--background-color-alpha--invalid,1)));border-color:RGB(var(--now-textarea--border-color--invalid,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--color--invalid,var(--now-form-field_inset--color--invalid,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--color-alpha--invalid,var(--now-form-field_inset--color-alpha--invalid,.1)));color:RGB(var(--now-textarea--color--invalid,var(--now-form-field--color--invalid,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-textarea-field-backdrop.is-invalid:not(.is-disabled).hover,.now-textarea-field-backdrop.is-invalid:not(.is-disabled):hover,.now-textarea-field-copy.is-invalid:not(.is-disabled).hover,.now-textarea-field-copy.is-invalid:not(.is-disabled):hover,.now-textarea-field.is-invalid:not(.is-disabled).hover,.now-textarea-field.is-invalid:not(.is-disabled):hover{background-color:RGB(var(--now-textarea--background-color--invalid_hover,var(--now-form-field--background-color--invalid_hover,var(--now-form-field--background-color--invalid,var(--now-color_alert--critical-0,241,206,205)))),var(--now-textarea--background-color-alpha--invalid_hover,var(--now-form-field--background-color-alpha--invalid_hover,1)));border-color:RGB(var(--now-textarea--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--color--invalid_hover,var(--now-form-field_inset--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-textarea_inset--color-alpha--invalid_hover,var(--now-form-field_inset--color-alpha--invalid_hover,.1)))}.now-textarea-field-backdrop.is-invalid:focus,.now-textarea-field-copy.is-invalid:focus,.now-textarea-field.is-invalid:focus{background-color:RGB(var(--now-textarea--background-color--invalid_focus,var(--now-form-field--background-color--invalid_focus,var(--now-form-field--background-color--invalid,var(--now-color_alert--critical-0,241,206,205)))),var(--now-textarea--background-color-alpha--invalid_focus,var(--now-form-field--background-color-alpha--invalid_focus,1)));border-color:RGB(var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-textarea-field-backdrop.is-invalid:focus::placeholder,.now-textarea-field-copy.is-invalid:focus::placeholder,.now-textarea-field.is-invalid:focus::placeholder{color:RGB(var(--now-textarea_placeholder--color--hover,var(--now-form-field_placeholder--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))),.85)}.-sm .now-textarea-field-backdrop.is-invalid:focus,.-sm .now-textarea-field-copy.is-invalid:focus,.-sm .now-textarea-field.is-invalid:focus{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.-md .now-textarea-field-backdrop.is-invalid:focus,.-md .now-textarea-field-copy.is-invalid:focus,.-md .now-textarea-field.is-invalid:focus{box-shadow:inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.now-textarea-field-backdrop.-blue,.now-textarea-field-copy.-blue,.now-textarea-field.-blue{background-color:RGB(var(--now-textarea--blue--background-color,var(--now-color_grouped--blue-0,215,231,240)),var(--now-textarea--blue--background-color-alpha,1));border-color:RGB(var(--now-textarea--blue--border-color,var(--now-textarea--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-textarea--blue--color,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.-sm .now-textarea-field-backdrop.-blue,.-sm .now-textarea-field-copy.-blue,.-sm .now-textarea-field.-blue{box-shadow:inset 0 1px 0 1px RGB(var(--now-textarea_inset--blue--color,var(--now-textarea_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--blue--color-alpha,var(--now-textarea_inset--color-alpha,var(--now-form-field_inset--color-alpha,0))))}.-md .now-textarea-field-backdrop.-blue,.-md .now-textarea-field-copy.-blue,.-md .now-textarea-field.-blue{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--blue--color,var(--now-textarea_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--blue--color-alpha,var(--now-textarea_inset--color-alpha,var(--now-form-field_inset--color-alpha,0))))}.now-textarea-field-backdrop.-blue::placeholder,.now-textarea-field-copy.-blue::placeholder,.now-textarea-field.-blue::placeholder{color:RGB(var(--now-textarea_placeholder--blue--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))),.95)}.now-textarea-field-backdrop.-blue:not(.is-disabled).hover,.now-textarea-field-backdrop.-blue:not(.is-disabled):hover,.now-textarea-field-copy.-blue:not(.is-disabled).hover,.now-textarea-field-copy.-blue:not(.is-disabled):hover,.now-textarea-field.-blue:not(.is-disabled).hover,.now-textarea-field.-blue:not(.is-disabled):hover{background-color:RGB(var(--now-textarea--blue--background-color--hover,var(--now-form-field--background-color--hover,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-textarea--blue--background-color-alpha--hover,var(--now-textarea--background-color-alpha--hover,var(--now-form-field--background-color-alpha--hover,1))));border-color:RGB(var(--now-textarea--blue--border-color--hover,var(--now-textarea--blue--border-color,var(--now-textarea--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--blue--color--hover,var(--now-textarea_inset--color--hover,var(--now-form-field_inset--color--hover,var(--now-color--primary-3,15,67,55)))),var(--now-textarea_inset--blue--color-alpha--hover,var(--now-textarea_inset--color-alpha--hover,var(--now-form-field_inset--color-alpha--hover,.1))))}.now-textarea-field-backdrop.-blue:not(.is-disabled).hover::placeholder,.now-textarea-field-backdrop.-blue:not(.is-disabled):hover::placeholder,.now-textarea-field-copy.-blue:not(.is-disabled).hover::placeholder,.now-textarea-field-copy.-blue:not(.is-disabled):hover::placeholder,.now-textarea-field.-blue:not(.is-disabled).hover::placeholder,.now-textarea-field.-blue:not(.is-disabled):hover::placeholder{color:RGB(var(--now-textarea_placeholder--blue--color--hover,var(--now-textarea_placeholder--blue--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),.85)}.now-textarea-field-backdrop.-blue:focus,.now-textarea-field-copy.-blue:focus,.now-textarea-field.-blue:focus{background-color:RGB(var(--now-textarea--blue--background-color--focus,var(--now-textarea--blue--background-color,var(--now-color_grouped--blue-0,215,231,240))),var(--now-textarea--blue--background-color-alpha--focus,var(--now-textarea--background-color-alpha--focus,var(--now-form-field--background-color-alpha--focus,1))));border-color:RGB(var(--now-textarea--blue--border-color--focus,var(--now-color--focus-2,1,119,142)))}.-sm .now-textarea-field-backdrop.-blue:focus,.-sm .now-textarea-field-copy.-blue:focus,.-sm .now-textarea-field.-blue:focus{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--blue--color--focus,var(--now-textarea_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--blue--color-alpha--focus,var(--now-textarea_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--blue--border-color--focus,var(--now-color--focus-2,1,119,142))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-textarea--blue--border-color--focus,var(--now-color--focus-2,1,119,142)),var(--now-opacity--least,.1))}.-md .now-textarea-field-backdrop.-blue:focus,.-md .now-textarea-field-copy.-blue:focus,.-md .now-textarea-field.-blue:focus{box-shadow:inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--blue--color--focus,var(--now-textarea_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--blue--color-alpha--focus,var(--now-textarea_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--blue--border-color--focus,var(--now-color--focus-2,1,119,142))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-textarea--blue--border-color--focus,var(--now-color--focus-2,1,119,142)),var(--now-opacity--least,.1))}.now-textarea-field-backdrop.-blue:focus::placeholder,.now-textarea-field-copy.-blue:focus::placeholder,.now-textarea-field.-blue:focus::placeholder{color:RGB(var(--now-textarea_placeholder--blue--color--hover,var(--now-textarea_placeholder--blue--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),.85)}.now-textarea-field-backdrop.-blue.is-invalid,.now-textarea-field-copy.-blue.is-invalid,.now-textarea-field.-blue.is-invalid{background-color:RGB(var(--now-textarea--blue--background-color--invalid,var(--now-textarea--blue--background-color,var(--now-color_grouped--blue-0,215,231,240))),var(--now-textarea--blue--background-color-alpha--invalid,var(--now-textarea--background-color-alpha--invalid,var(--now-form-field--background-color-alpha--invalid,1))));border-color:RGB(var(--now-textarea--blue--border-color--invalid,var(--now-textarea--border-color--invalid,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--blue--color--invalid,var(--now-textarea_inset--color--invalid,var(--now-form-field_inset--color--invalid,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--blue--color-alpha--invalid,var(--now-textarea_inset--color-alpha--invalid,var(--now-form-field_inset--color-alpha--invalid,.1))))}.now-textarea-field-backdrop.-blue.is-invalid:not(.is-disabled).hover,.now-textarea-field-backdrop.-blue.is-invalid:not(.is-disabled):hover,.now-textarea-field-copy.-blue.is-invalid:not(.is-disabled).hover,.now-textarea-field-copy.-blue.is-invalid:not(.is-disabled):hover,.now-textarea-field.-blue.is-invalid:not(.is-disabled).hover,.now-textarea-field.-blue.is-invalid:not(.is-disabled):hover{background-color:RGB(var(--now-textarea--blue--background-color--invalid_hover,var(--now-textarea--background-color--invalid_hover,var(--now-form-field--background-color--invalid_hover,var(--now-form-field--background-color--invalid,var(--now-color_alert--critical-0,241,206,205))))),var(--now-textarea--blue--background-color-alpha--invalid_hover,var(--now-textarea--background-color-alpha--invalid_hover,var(--now-form-field--background-color-alpha--invalid_hover,1))));border-color:RGB(var(--now-textarea--blue--border-color--invalid_hover,var(--now-textarea--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--blue--color--invalid_hover,var(--now-textarea_inset--color--invalid_hover,var(--now-form-field_inset--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22)))),var(--now-textarea_inset--blue--color-alpha--invalid_hover,var(--now-textarea_inset--color-alpha--invalid_hover,var(--now-form-field_inset--color-alpha--invalid_hover,.1))))}.now-textarea-field-backdrop.-blue.is-invalid:focus,.now-textarea-field-copy.-blue.is-invalid:focus,.now-textarea-field.-blue.is-invalid:focus{background-color:RGB(var(--now-textarea--blue--background-color--invalid_focus,var(--now-textarea--blue--background-color,var(--now-color_grouped--blue-0,215,231,240))),var(--now-textarea--blue--background-color-alpha--invalid_focus,var(--now-textarea--background-color-alpha--invalid_focus,var(--now-form-field--background-color-alpha--invalid_focus,1))));border-color:RGB(var(--now-textarea--blue--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))))}.-sm .now-textarea-field-backdrop.-blue.is-invalid:focus,.-sm .now-textarea-field-copy.-blue.is-invalid:focus,.-sm .now-textarea-field.-blue.is-invalid:focus{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--blue--color--invalid_focus,var(--now-textarea_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--blue--color-alpha--invalid_focus,var(--now-textarea_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--blue--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-textarea--blue--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),var(--now-opacity--least,.1))}.-md .now-textarea-field-backdrop.-blue.is-invalid:focus,.-md .now-textarea-field-copy.-blue.is-invalid:focus,.-md .now-textarea-field.-blue.is-invalid:focus{box-shadow:inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--blue--color--invalid_focus,var(--now-textarea_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--blue--color-alpha--invalid_focus,var(--now-textarea_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--blue--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-textarea--blue--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),var(--now-opacity--least,.1))}.now-textarea-field-backdrop.-blue.is-disabled,.now-textarea-field-copy.-blue.is-disabled,.now-textarea-field.-blue.is-disabled{opacity:var(--now-textarea--blue--opacity--disabled,var(--now-textarea--opacity--disabled,var(--now-form-field--opacity--disabled,var(--now-opacity--less,.25))))}.now-textarea-field-backdrop.-yellow,.now-textarea-field-copy.-yellow,.now-textarea-field.-yellow{background-color:RGB(var(--now-textarea--yellow--background-color,var(--now-color_grouped--yellow-1,245,224,155)),var(--now-textarea--yellow--background-color-alpha,1));border-color:RGB(var(--now-textarea--yellow--border-color,var(--now-textarea--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-textarea--yellow--color,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.-sm .now-textarea-field-backdrop.-yellow,.-sm .now-textarea-field-copy.-yellow,.-sm .now-textarea-field.-yellow{box-shadow:inset 0 1px 0 1px RGB(var(--now-textarea_inset--yellow--color,var(--now-textarea_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--yellow--color-alpha,var(--now-textarea_inset--color-alpha,var(--now-form-field_inset--color-alpha,0))))}.-md .now-textarea-field-backdrop.-yellow,.-md .now-textarea-field-copy.-yellow,.-md .now-textarea-field.-yellow{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--yellow--color,var(--now-textarea_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--yellow--color-alpha,var(--now-textarea_inset--color-alpha,var(--now-form-field_inset--color-alpha,0))))}.now-textarea-field-backdrop.-yellow::placeholder,.now-textarea-field-copy.-yellow::placeholder,.now-textarea-field.-yellow::placeholder{color:RGB(var(--now-textarea_placeholder--yellow--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))),.95)}.now-textarea-field-backdrop.-yellow:not(.is-disabled).hover,.now-textarea-field-backdrop.-yellow:not(.is-disabled):hover,.now-textarea-field-copy.-yellow:not(.is-disabled).hover,.now-textarea-field-copy.-yellow:not(.is-disabled):hover,.now-textarea-field.-yellow:not(.is-disabled).hover,.now-textarea-field.-yellow:not(.is-disabled):hover{background-color:RGB(var(--now-textarea--yellow--background-color--hover,var(--now-form-field--background-color--hover,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-textarea--yellow--background-color-alpha--hover,var(--now-textarea--background-color-alpha--hover,var(--now-form-field--background-color-alpha--hover,1))));border-color:RGB(var(--now-textarea--yellow--border-color--hover,var(--now-textarea--yellow--border-color,var(--now-textarea--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--yellow--color--hover,var(--now-textarea_inset--color--hover,var(--now-form-field_inset--color--hover,var(--now-color--primary-3,15,67,55)))),var(--now-textarea_inset--yellow--color-alpha--hover,var(--now-textarea_inset--color-alpha--hover,var(--now-form-field_inset--color-alpha--hover,.1))))}.now-textarea-field-backdrop.-yellow:not(.is-disabled).hover::placeholder,.now-textarea-field-backdrop.-yellow:not(.is-disabled):hover::placeholder,.now-textarea-field-copy.-yellow:not(.is-disabled).hover::placeholder,.now-textarea-field-copy.-yellow:not(.is-disabled):hover::placeholder,.now-textarea-field.-yellow:not(.is-disabled).hover::placeholder,.now-textarea-field.-yellow:not(.is-disabled):hover::placeholder{color:RGB(var(--now-textarea_placeholder--yellow--color--hover,var(--now-textarea_placeholder--yellow--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),.85)}.now-textarea-field-backdrop.-yellow:focus,.now-textarea-field-copy.-yellow:focus,.now-textarea-field.-yellow:focus{background-color:RGB(var(--now-textarea--yellow--background-color--focus,var(--now-textarea--yellow--background-color,var(--now-color_grouped--yellow-1,245,224,155))),var(--now-textarea--yellow--background-color-alpha--focus,var(--now-textarea--background-color-alpha--focus,var(--now-form-field--background-color-alpha--focus,1))));border-color:RGB(var(--now-textarea--yellow--border-color--focus,var(--now-color--focus-2,1,119,142)))}.-sm .now-textarea-field-backdrop.-yellow:focus,.-sm .now-textarea-field-copy.-yellow:focus,.-sm .now-textarea-field.-yellow:focus{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--yellow--color--focus,var(--now-textarea_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--yellow--color-alpha--focus,var(--now-textarea_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--yellow--border-color--focus,var(--now-color--focus-2,1,119,142))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-textarea--yellow--border-color--focus,var(--now-color--focus-2,1,119,142)),var(--now-opacity--least,.1))}.-md .now-textarea-field-backdrop.-yellow:focus,.-md .now-textarea-field-copy.-yellow:focus,.-md .now-textarea-field.-yellow:focus{box-shadow:inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--yellow--color--focus,var(--now-textarea_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--yellow--color-alpha--focus,var(--now-textarea_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--yellow--border-color--focus,var(--now-color--focus-2,1,119,142))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-textarea--yellow--border-color--focus,var(--now-color--focus-2,1,119,142)),var(--now-opacity--least,.1))}.now-textarea-field-backdrop.-yellow:focus::placeholder,.now-textarea-field-copy.-yellow:focus::placeholder,.now-textarea-field.-yellow:focus::placeholder{color:RGB(var(--now-textarea_placeholder--yellow--color--hover,var(--now-textarea_placeholder--yellow--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),.85)}.now-textarea-field-backdrop.-yellow.is-invalid,.now-textarea-field-copy.-yellow.is-invalid,.now-textarea-field.-yellow.is-invalid{background-color:RGB(var(--now-textarea--yellow--background-color--invalid,var(--now-textarea--yellow--background-color,var(--now-color_grouped--yellow-1,245,224,155))),var(--now-textarea--yellow--background-color-alpha--invalid,var(--now-textarea--background-color-alpha--invalid,var(--now-form-field--background-color-alpha--invalid,1))));border-color:RGB(var(--now-textarea--yellow--border-color--invalid,var(--now-textarea--border-color--invalid,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--yellow--color--invalid,var(--now-textarea_inset--color--invalid,var(--now-form-field_inset--color--invalid,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--yellow--color-alpha--invalid,var(--now-textarea_inset--color-alpha--invalid,var(--now-form-field_inset--color-alpha--invalid,.1))))}.now-textarea-field-backdrop.-yellow.is-invalid:not(.is-disabled).hover,.now-textarea-field-backdrop.-yellow.is-invalid:not(.is-disabled):hover,.now-textarea-field-copy.-yellow.is-invalid:not(.is-disabled).hover,.now-textarea-field-copy.-yellow.is-invalid:not(.is-disabled):hover,.now-textarea-field.-yellow.is-invalid:not(.is-disabled).hover,.now-textarea-field.-yellow.is-invalid:not(.is-disabled):hover{background-color:RGB(var(--now-textarea--yellow--background-color--invalid_hover,var(--now-textarea--background-color--invalid_hover,var(--now-form-field--background-color--invalid_hover,var(--now-form-field--background-color--invalid,var(--now-color_alert--critical-0,241,206,205))))),var(--now-textarea--yellow--background-color-alpha--invalid_hover,var(--now-textarea--background-color-alpha--invalid_hover,var(--now-form-field--background-color-alpha--invalid_hover,1))));border-color:RGB(var(--now-textarea--yellow--border-color--invalid_hover,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--yellow--color--invalid_hover,var(--now-textarea_inset--color--invalid_hover,var(--now-form-field_inset--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22)))),var(--now-textarea_inset--yellow--color-alpha--invalid_hover,var(--now-textarea_inset--color-alpha--invalid_hover,var(--now-form-field_inset--color-alpha--invalid_hover,.1))))}.now-textarea-field-backdrop.-yellow.is-invalid:focus,.now-textarea-field-copy.-yellow.is-invalid:focus,.now-textarea-field.-yellow.is-invalid:focus{background-color:RGB(var(--now-textarea--yellow--background-color--invalid_focus,var(--now-textarea--yellow--background-color,var(--now-color_grouped--yellow-1,245,224,155))),var(--now-textarea--yellow--background-color-alpha--invalid_focus,var(--now-textarea--background-color-alpha--invalid_focus,var(--now-form-field--background-color-alpha--invalid_focus,1))));border-color:RGB(var(--now-textarea--yellow--border-color--invalid_focus,var(--now-textarea--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))))}.-sm .now-textarea-field-backdrop.-yellow.is-invalid:focus,.-sm .now-textarea-field-copy.-yellow.is-invalid:focus,.-sm .now-textarea-field.-yellow.is-invalid:focus{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--yellow--color--invalid_focus,var(--now-textarea_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--yellow--color-alpha--invalid_focus,var(--now-textarea_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--yellow--border-color--invalid_focus,var(--now-textarea--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-textarea--yellow--border-color--invalid_focus,var(--now-textarea--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),var(--now-opacity--least,.1))}.-md .now-textarea-field-backdrop.-yellow.is-invalid:focus,.-md .now-textarea-field-copy.-yellow.is-invalid:focus,.-md .now-textarea-field.-yellow.is-invalid:focus{box-shadow:inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--yellow--color--invalid_focus,var(--now-textarea_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--yellow--color-alpha--invalid_focus,var(--now-textarea_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--yellow--border-color--invalid_focus,var(--now-textarea--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-textarea--yellow--border-color--invalid_focus,var(--now-textarea--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),var(--now-opacity--least,.1))}.now-textarea-field-backdrop.-yellow.is-disabled,.now-textarea-field-copy.-yellow.is-disabled,.now-textarea-field.-yellow.is-disabled{opacity:var(--now-textarea--yellow--opacity--disabled,var(--now-textarea--opacity--disabled,var(--now-form-field--opacity--disabled,var(--now-opacity--less,.25))))}.now-textarea-field-backdrop.-green,.now-textarea-field-copy.-green,.now-textarea-field.-green{background-color:RGB(var(--now-textarea--green--background-color,var(--now-color_grouped--green-1,185,200,171)),var(--now-textarea--green--background-color-alpha,1));border-color:RGB(var(--now-textarea--green--border-color,var(--now-textarea--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));color:RGB(var(--now-textarea--green--color,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.-sm .now-textarea-field-backdrop.-green,.-sm .now-textarea-field-copy.-green,.-sm .now-textarea-field.-green{box-shadow:inset 0 1px 0 1px RGB(var(--now-textarea_inset--green--color,var(--now-textarea_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--green--color-alpha,var(--now-textarea_inset--color-alpha,var(--now-form-field_inset--color-alpha,0))))}.-md .now-textarea-field-backdrop.-green,.-md .now-textarea-field-copy.-green,.-md .now-textarea-field.-green{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--green--color,var(--now-textarea_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-textarea_inset--green--color-alpha,var(--now-textarea_inset--color-alpha,var(--now-form-field_inset--color-alpha,0))))}.now-textarea-field-backdrop.-green::placeholder,.now-textarea-field-copy.-green::placeholder,.now-textarea-field.-green::placeholder{color:RGB(var(--now-textarea_placeholder--green--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))),.95)}.now-textarea-field-backdrop.-green:not(.is-disabled).hover,.now-textarea-field-backdrop.-green:not(.is-disabled):hover,.now-textarea-field-copy.-green:not(.is-disabled).hover,.now-textarea-field-copy.-green:not(.is-disabled):hover,.now-textarea-field.-green:not(.is-disabled).hover,.now-textarea-field.-green:not(.is-disabled):hover{background-color:RGB(var(--now-textarea--green--background-color--hover,var(--now-form-field--background-color--hover,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-textarea--green--background-color-alpha--hover,var(--now-textarea--background-color-alpha--hover,var(--now-form-field--background-color-alpha--hover,1))));border-color:RGB(var(--now-textarea--green--border-color--hover,var(--now-textarea--green--border-color,var(--now-textarea--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--green--color--hover,var(--now-textarea_inset--color--hover,var(--now-form-field_inset--color--hover,var(--now-color--primary-3,15,67,55)))),var(--now-textarea_inset--green--color-alpha--hover,var(--now-textarea_inset--color-alpha--hover,var(--now-form-field_inset--color-alpha--hover,.1))))}.now-textarea-field-backdrop.-green:not(.is-disabled).hover::placeholder,.now-textarea-field-backdrop.-green:not(.is-disabled):hover::placeholder,.now-textarea-field-copy.-green:not(.is-disabled).hover::placeholder,.now-textarea-field-copy.-green:not(.is-disabled):hover::placeholder,.now-textarea-field.-green:not(.is-disabled).hover::placeholder,.now-textarea-field.-green:not(.is-disabled):hover::placeholder{color:RGB(var(--now-textarea_placeholder--green--color--hover,var(--now-textarea_placeholder--green--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),.85)}.now-textarea-field-backdrop.-green:focus,.now-textarea-field-copy.-green:focus,.now-textarea-field.-green:focus{background-color:RGB(var(--now-textarea--green--background-color--focus,var(--now-textarea--green--background-color,var(--now-color_grouped--green-1,185,200,171))),var(--now-textarea--green--background-color-alpha--focus,var(--now-textarea--background-color-alpha--focus,var(--now-form-field--background-color-alpha--focus,1))));border-color:RGB(var(--now-textarea--green--border-color--focus,var(--now-color--focus-2,1,119,142)))}.-sm .now-textarea-field-backdrop.-green:focus,.-sm .now-textarea-field-copy.-green:focus,.-sm .now-textarea-field.-green:focus{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--green--color--focus,var(--now-textarea_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--green--color-alpha--focus,var(--now-textarea_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--green--border-color--focus,var(--now-color--focus-2,1,119,142))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-textarea--green--border-color--focus,var(--now-color--focus-2,1,119,142)),var(--now-opacity--least,.1))}.-md .now-textarea-field-backdrop.-green:focus,.-md .now-textarea-field-copy.-green:focus,.-md .now-textarea-field.-green:focus{box-shadow:inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--green--color--focus,var(--now-textarea_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--green--color-alpha--focus,var(--now-textarea_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--green--border-color--focus,var(--now-color--focus-2,1,119,142))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-textarea--green--border-color--focus,var(--now-color--focus-2,1,119,142)),var(--now-opacity--least,.1))}.now-textarea-field-backdrop.-green:focus::placeholder,.now-textarea-field-copy.-green:focus::placeholder,.now-textarea-field.-green:focus::placeholder{color:RGB(var(--now-textarea_placeholder--green--color--hover,var(--now-textarea_placeholder--green--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),.85)}.now-textarea-field-backdrop.-green.is-invalid,.now-textarea-field-copy.-green.is-invalid,.now-textarea-field.-green.is-invalid{background-color:RGB(var(--now-textarea--green--background-color--invalid,var(--now-textarea--green--background-color,var(--now-color_grouped--green-1,185,200,171))),var(--now-textarea--green--background-color-alpha--invalid,var(--now-textarea--background-color-alpha--invalid,var(--now-form-field--background-color-alpha--invalid,1))));border-color:RGB(var(--now-textarea--green--border-color--invalid,var(--now-textarea--border-color--invalid,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--green--color--invalid,var(--now-textarea_inset--color--invalid,var(--now-form-field_inset--color--invalid,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--green--color-alpha--invalid,var(--now-textarea_inset--color-alpha--invalid,var(--now-form-field_inset--color-alpha--invalid,.1))))}.now-textarea-field-backdrop.-green.is-invalid:not(.is-disabled).hover,.now-textarea-field-backdrop.-green.is-invalid:not(.is-disabled):hover,.now-textarea-field-copy.-green.is-invalid:not(.is-disabled).hover,.now-textarea-field-copy.-green.is-invalid:not(.is-disabled):hover,.now-textarea-field.-green.is-invalid:not(.is-disabled).hover,.now-textarea-field.-green.is-invalid:not(.is-disabled):hover{background-color:RGB(var(--now-textarea--green--background-color--invalid_hover,var(--now-textarea--background-color--invalid_hover,var(--now-form-field--background-color--invalid_hover,var(--now-form-field--background-color--invalid,var(--now-color_alert--critical-0,241,206,205))))),var(--now-textarea--green--background-color-alpha--invalid_hover,var(--now-textarea--background-color-alpha--invalid_hover,var(--now-form-field--background-color-alpha--invalid_hover,1))));border-color:RGB(var(--now-textarea--green--border-color--invalid_hover,var(--now-textarea--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))));box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--green--color--invalid_hover,var(--now-textarea_inset--color--invalid_hover,var(--now-form-field_inset--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22)))),var(--now-textarea_inset--green--color-alpha--invalid_hover,var(--now-textarea_inset--color-alpha--invalid_hover,var(--now-form-field_inset--color-alpha--invalid_hover,.1))))}.now-textarea-field-backdrop.-green.is-invalid:focus,.now-textarea-field-copy.-green.is-invalid:focus,.now-textarea-field.-green.is-invalid:focus{background-color:RGB(var(--now-textarea--green--background-color--invalid_focus,var(--now-textarea--green--background-color,var(--now-color_grouped--green-1,185,200,171))),var(--now-textarea--green--background-color-alpha--invalid_focus,var(--now-textarea--background-color-alpha--invalid_focus,var(--now-form-field--background-color-alpha--invalid_focus,1))));border-color:RGB(var(--now-textarea--green--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))))}.-sm .now-textarea-field-backdrop.-green.is-invalid:focus,.-sm .now-textarea-field-copy.-green.is-invalid:focus,.-sm .now-textarea-field.-green.is-invalid:focus{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--green--color--invalid_focus,var(--now-textarea_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--green--color-alpha--invalid_focus,var(--now-textarea_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--green--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-textarea--green--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),var(--now-opacity--least,.1))}.-md .now-textarea-field-backdrop.-green.is-invalid:focus,.-md .now-textarea-field-copy.-green.is-invalid:focus,.-md .now-textarea-field.-green.is-invalid:focus{box-shadow:inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-textarea_inset--green--color--invalid_focus,var(--now-textarea_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))))),var(--now-textarea_inset--green--color-alpha--invalid_focus,var(--now-textarea_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1)))),inset 0 0 0 var(--now-textarea--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-textarea--green--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-textarea--green--border-color--invalid_focus,var(--now-textarea--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),var(--now-opacity--least,.1))}.now-textarea-field-backdrop.-green.is-disabled,.now-textarea-field-copy.-green.is-disabled,.now-textarea-field.-green.is-disabled{opacity:var(--now-textarea--green--opacity--disabled,var(--now-textarea--opacity--disabled,var(--now-form-field--opacity--disabled,var(--now-opacity--less,.25))))}.now-textarea-field-backdrop.-blue.is-readonly,.now-textarea-field-backdrop.-blue.is-readonly.hover,.now-textarea-field-backdrop.-blue.is-readonly:hover,.now-textarea-field-backdrop.-green.is-readonly,.now-textarea-field-backdrop.-green.is-readonly.hover,.now-textarea-field-backdrop.-green.is-readonly:hover,.now-textarea-field-backdrop.-initial.is-readonly,.now-textarea-field-backdrop.-initial.is-readonly.hover,.now-textarea-field-backdrop.-initial.is-readonly:hover,.now-textarea-field-backdrop.-yellow.is-readonly,.now-textarea-field-backdrop.-yellow.is-readonly.hover,.now-textarea-field-backdrop.-yellow.is-readonly:hover,.now-textarea-field-copy.-blue.is-readonly,.now-textarea-field-copy.-blue.is-readonly.hover,.now-textarea-field-copy.-blue.is-readonly:hover,.now-textarea-field-copy.-green.is-readonly,.now-textarea-field-copy.-green.is-readonly.hover,.now-textarea-field-copy.-green.is-readonly:hover,.now-textarea-field-copy.-initial.is-readonly,.now-textarea-field-copy.-initial.is-readonly.hover,.now-textarea-field-copy.-initial.is-readonly:hover,.now-textarea-field-copy.-yellow.is-readonly,.now-textarea-field-copy.-yellow.is-readonly.hover,.now-textarea-field-copy.-yellow.is-readonly:hover,.now-textarea-field.-blue.is-readonly,.now-textarea-field.-blue.is-readonly.hover,.now-textarea-field.-blue.is-readonly:hover,.now-textarea-field.-green.is-readonly,.now-textarea-field.-green.is-readonly.hover,.now-textarea-field.-green.is-readonly:hover,.now-textarea-field.-initial.is-readonly,.now-textarea-field.-initial.is-readonly.hover,.now-textarea-field.-initial.is-readonly:hover,.now-textarea-field.-yellow.is-readonly,.now-textarea-field.-yellow.is-readonly.hover,.now-textarea-field.-yellow.is-readonly:hover{--now-border-width--readonly:var(--now-textarea--border-width--readonly,var(--now-form-field--border-width--readonly,var(--now-form-field--border-width,0px)));background-color:RGB(var(--now-textarea--background-color--readonly,var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-textarea--background-color-alpha--readonly,var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0))));border-block-end-width:calc(var(--now-textarea--border-block-end-width--readonly, var(--now-form-field--border-block-end-width--readonly, 0px)) + var(--now-border-width--readonly));border-block-start-width:var(--now-textarea--border-width--readonly,var(--now-form-field--border-width--readonly,var(--now-form-field--border-width,0)));border-color:RGB(var(--now-textarea--border-color--readonly,var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-inline-end-width:var(--now-textarea--border-width--readonly,var(--now-form-field--border-width--readonly,var(--now-form-field--border-width,0)));border-inline-start-width:var(--now-textarea--border-width--readonly,var(--now-form-field--border-width--readonly,var(--now-form-field--border-width,0)));border-radius:var(--now-textarea--border-radius--readonly,var(--now-form-field--border-radius--readonly,var(--now-form-field--border-radius,0)));box-shadow:none;color:RGB(var(--now-textarea--color--readonly,var(--now-form-field--color--readonly,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))));cursor:not-allowed}.now-textarea-field-backdrop.-blue.is-readonly:focus,.now-textarea-field-backdrop.-green.is-readonly:focus,.now-textarea-field-backdrop.-initial.is-readonly:focus,.now-textarea-field-backdrop.-yellow.is-readonly:focus,.now-textarea-field-copy.-blue.is-readonly:focus,.now-textarea-field-copy.-green.is-readonly:focus,.now-textarea-field-copy.-initial.is-readonly:focus,.now-textarea-field-copy.-yellow.is-readonly:focus,.now-textarea-field.-blue.is-readonly:focus,.now-textarea-field.-green.is-readonly:focus,.now-textarea-field.-initial.is-readonly:focus,.now-textarea-field.-yellow.is-readonly:focus{border-color:RGB(var(--now-textarea--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))));box-shadow:none}.now-textarea-field-backdrop.is-disabled,.now-textarea-field-copy.is-disabled,.now-textarea-field.is-disabled{cursor:not-allowed;opacity:var(--now-textarea--opacity--disabled,var(--now-form-field--opacity--disabled,var(--now-opacity--less,.25)))}.now-textarea-field-backdrop.-resize-horizontal,.now-textarea-field-copy.-resize-horizontal,.now-textarea-field.-resize-horizontal{resize:horizontal}.now-textarea-field-backdrop.-resize-vertical,.now-textarea-field-copy.-resize-vertical,.now-textarea-field.-resize-vertical{resize:vertical}.now-textarea-field-backdrop.-resize-both,.now-textarea-field-copy.-resize-both,.now-textarea-field.-resize-both{resize:both}.now-textarea-field-backdrop.-resize-none,.now-textarea-field-copy.-resize-none,.now-textarea-field.-resize-none{resize:none}.show-borders .now-textarea-field,.show-borders .now-textarea-field-backdrop,.show-borders .now-textarea-field-copy{border-color:RGB(var(--now-textarea--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-style:solid;border-width:1px;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.show-borders .now-textarea-field-backdrop:not(.has-slotted-content),.show-borders .now-textarea-field-copy:not(.has-slotted-content),.show-borders .now-textarea-field:not(.has-slotted-content){padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.disable-max-height .now-textarea-field,.disable-max-height .now-textarea-field-backdrop,.disable-max-height .now-textarea-field-copy{max-block-size:none}.now-textarea-character-counter{font-size:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-textarea-character-counter{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-textarea-character-counter{margin-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-textarea-character-counter.-warning{color:RGB(var(--now-form-field_character-counter--color--warning,var(--now-color_alert--high-3,177,116,27)))}.now-textarea-character-counter.-error{color:RGB(var(--now-form-field_character-counter--color--error,var(--now-color_alert--critical-2,200,60,54)))}.now-textarea-container{block-size:100%;position:relative}.-vertical .now-textarea-container.has-label{block-size:calc(100% - 1rem*var(--classicsponlydonotuse--rem-multipy) - var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-textarea-wrapper{block-size:100%}.now-textarea-wrapper.has-backdrop{display:grid;grid-template-columns:1fr}.now-textarea-wrapper.has-backdrop .now-textarea-field{overscroll-behavior:none;z-index:0}.now-textarea-wrapper.has-backdrop .now-textarea-field::selection{background-color:RGB(var(--now-textarea--selection--background-color,var(--now-color--focus-1,77,160,176)),.9);color:RGB(var(--now-textarea--selection--color,var(--now-textarea--color,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-textarea-wrapper.has-backdrop:not(.is-autoresize) .now-textarea-field-backdrop{display:block}.now-textarea-wrapper.has-backdrop:not(.is-autoresize) .now-textarea-field,.now-textarea-wrapper.has-backdrop:not(.is-autoresize) .now-textarea-field-backdrop{grid-column-start:1;grid-row-start:1}.now-textarea-slot{inset-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));position:absolute;z-index:1}.-sm .now-textarea-slot{inset-block-start:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-textarea-slot{inset-block-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-textarea-field-backdrop,.now-textarea-field-copy{display:none;min-inline-size:20ch;word-break:break-all}.now-textarea-caret-container{inset-inline-start:-9999px;position:absolute}.is-autoresize{overflow:hidden;position:relative}.show-borders .is-autoresize{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.show-borders .is-autoresize .now-textarea-field,.show-borders .is-autoresize .now-textarea-field-copy{margin-block-start:0}.is-autoresize .now-textarea-field{block-size:100%;inline-size:100%;margin:0;overflow:hidden;position:absolute}.is-autoresize .now-textarea-field-copy{display:block;visibility:hidden}.is-autoresize:not(.disable-min-height) .now-textarea-field-copy{padding-block-end:1.5em}.is-autoresize .now-textarea-field-backdrop{display:block;position:absolute}.is-autoresize .now-textarea-field-copy:after{content:attr(data-replicated-value) \\\" \\\";visibility:hidden;white-space:pre-wrap}.is-autoresize .now-textarea-field[cols],.is-autoresize .now-textarea-field[cols]+.now-textarea-field-copy{max-inline-size:100%;min-inline-size:100%}.now-textarea-field-backdrop{box-shadow:unset!important;color:transparent!important;min-block-size:0;min-inline-size:0;overflow:hidden;scrollbar-color:transparent transparent;white-space:pre-wrap;word-break:break-word;z-index:0}.now-textarea-field-selection{background-color:RGB(var(--now-textarea--selection--background-color,var(--now-color--focus-1,77,160,176)),.9);color:transparent}@media(forced-colors:active){.now-textarea-field,.now-textarea-field-backdrop,.now-textarea-field-copy{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-textarea-field-backdrop:not(.is-disabled).has-hover,.now-textarea-field-backdrop:not(.is-disabled):hover,.now-textarea-field-copy:not(.is-disabled).has-hover,.now-textarea-field-copy:not(.is-disabled):hover,.now-textarea-field:not(.is-disabled).has-hover,.now-textarea-field:not(.is-disabled):hover{border-color:highlight!important}.now-textarea-field-backdrop.has-focus,.now-textarea-field-backdrop:focus,.now-textarea-field-copy.has-focus,.now-textarea-field-copy:focus,.now-textarea-field.has-focus,.now-textarea-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-textarea-field-backdrop.is-disabled,.now-textarea-field-copy.is-disabled,.now-textarea-field.is-disabled{border-color:graytext!important;color:graytext!important;opacity:1!important}.now-textarea-field-backdrop.is-readonly,.now-textarea-field-backdrop.is-readonly.has-hover,.now-textarea-field-backdrop.is-readonly:hover,.now-textarea-field-copy.is-readonly,.now-textarea-field-copy.is-readonly.has-hover,.now-textarea-field-copy.is-readonly:hover,.now-textarea-field.is-readonly,.now-textarea-field.is-readonly.has-hover,.now-textarea-field.is-readonly:hover{border-color:graytext!important}.now-textarea-field ::placeholder,.now-textarea-field-backdrop ::placeholder,.now-textarea-field-copy ::placeholder{color:graytext!important}.now-textarea-field .now-input-native-selection,.now-textarea-field-backdrop .now-input-native-selection,.now-textarea-field-copy .now-input-native-selection{border-block-end:1px solid highlight!important}.has-backdrop .now-textarea-field{forced-color-adjust:none}.has-backdrop .now-textarea-field::selection{background-color:highlight!important;color:highlighttext!important}.has-backdrop .now-textarea-field:focus{box-shadow:unset!important}.now-textarea-field-backdrop .now-textarea-field-selection{border-block-end:1px solid highlight!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{block-size:0;display:inline-block;inline-size:0;position:absolute}.fit-content-area{display:block;visibility:hidden;z-index:5000}.fit-content{display:block;max-block-size:100%;max-inline-size:100%;overflow:auto;position:fixed}.now-tooltip{word-wrap:break-word;background-color:RGB(var(--now-tooltip--background-color,var(--now-menu-contextual_container--primary--background-color,var(--now-color--neutral-19,15,18,19))),var(--now-tooltip--background-color-alpha,var(--now-menu-contextual_container--primary--background-color-alpha,1)));border-color:RGB(var(--now-tooltip--border-color,var(--now-menu-contextual_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-radius:var(--now-tooltip--border-radius,var(--now-menu-contextual_container--primary--border-radius,var(--now-menu--border-radius,4px)));border-style:solid;border-width:var(--now-tooltip--border-width,var(--now-menu-contextual_container--primary--border-width,0));color:RGB(var(--now-tooltip--color,var(--now-menu-contextual_container_label--primary--color,var(--now-color--neutral-0,255,255,255))));cursor:default;font-family:var(--now-tooltip--font-family,var(--now-menu-contextual_container--primary--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-menu_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-tooltip--font-style,var(--now-menu-contextual_container--primary--font-style,var(--now-menu--font-style,normal)));font-variant:normal;font-weight:var(--now-tooltip--font-weight,var(--now-menu-contextual_container--primary--font-weight,var(--now-menu--font-weight,normal)));letter-spacing:inherit;line-height:1.3333;max-inline-size:calc(19rem*var(--classicsponlydonotuse--rem-multipy));overflow-wrap:break-word;padding:calc(.5rem*var(--classicsponlydonotuse--rem-multipy));text-align:start;text-indent:0;text-shadow:none;text-transform:var(--now-tooltip--text-transform,var(--now-menu-contextual_container--primary--text-transform,var(--now-menu--text-transform,none)));white-space:normal;word-spacing:inherit}.now-tooltip,.now-tooltip .now-line-height-crop{display:block}.now-tooltip .now-line-height-crop:after,.now-tooltip .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-tooltip .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-tooltip .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-tooltip .now-line-height-crop+.now-tooltip .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}@media(forced-colors:active){.now-tooltip{border-width:1px}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".now-form-field-message{border-radius:var(--now-form-field_message--border-radius,calc(.125rem*var(--classicsponlydonotuse--rem-multipy)));border-style:solid;border-width:var(--now-form-field_message--border-width,0);display:flex;font-family:var(--now-form-field_message--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:var(--now-form-control_message--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_message--font-style,normal);font-weight:var(--now-form-field_message--font-weight,normal);inline-size:100%;line-height:1.3333;margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-block, 1));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field_message--scale-size-inline, 1));text-align:start;text-transform:var(--now-form-field_message--text-transform,none);word-break:break-word}.now-form-field-message.-critical{background-color:RGB(var(--now-form-field_message--critical--background-color,var(--now-color_alert--critical-0,241,206,205)));border-color:RGB(var(--now-form-field_message--critical--border-color,var(--now-color_alert--critical-1,221,133,129)));color:RGB(var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-critical .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--critical--color,var(--now-form-field_message--critical--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-warning{background-color:RGB(var(--now-form-field_message--warning--background-color,var(--now-color_alert--warning-0,244,240,191)));border-color:RGB(var(--now-form-field_message--warning--border-color,var(--now-color_alert--warning-1,227,218,96)));color:RGB(var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-warning .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--warning--color,var(--now-form-field_message--warning--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-positive{background-color:RGB(var(--now-form-field_message--positive--background-color,var(--now-color_alert--positive-0,201,224,202)));border-color:RGB(var(--now-form-field_message--positive--border-color,var(--now-color_alert--positive-1,119,178,123)));color:RGB(var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-positive .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--positive--color,var(--now-form-field_message--positive--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-info{background-color:RGB(var(--now-form-field_message--info--background-color,var(--now-color_alert--info-0,195,221,240)));border-color:RGB(var(--now-form-field_message--info--border-color,var(--now-color_alert--info-1,104,171,218)));color:RGB(var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))}.now-form-field-message.-info .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--info--color,var(--now-form-field_message--info--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-form-field-message.-suggestion{background-color:RGB(var(--now-form-field_message--suggestion--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))),var(--now-form-field_message--suggestion--background-color-alpha,0));border-color:RGB(var(--now-form-field_message--suggestion--border-color,var(--now-color_border--tertiary,var(--now-color--neutral-3,209,214,214))));color:RGB(var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-form-field-message.-suggestion .now-form-field-message-icon{color:RGB(var(--now-form-field_message_icon--suggestion--color,var(--now-form-field_message--suggestion--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-form-field-message .now-line-height-crop{display:block}.now-form-field-message .now-line-height-crop:after,.now-form-field-message .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-message .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-message .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-message .now-line-height-crop+.now-form-field-message .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-message-label{align-self:center;margin-block:0}.now-form-field-label{align-items:center;display:flex}.-vertical .now-form-field-label{margin-block-end:calc(var(--now-scale-space--xxs, 1)*.125rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label{justify-content:end;margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy));min-inline-size:0}.-vertical.will-wrap .now-form-field-label{align-items:end}.-horizontal.will-wrap .now-form-field-label{justify-content:center}.now-form-field-label .is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.will-wrap .now-form-field-label .now-form-field-label-text{word-break:break-word}.-horizontal:not(.will-wrap) .now-form-field-label,.-vertical:not(.will-wrap) .now-form-field-label{block-size:calc(1rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text{display:block;min-inline-size:calc(1.25rem*var(--classicsponlydonotuse--rem-multipy));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.-horizontal:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after,.-vertical:not(.will-wrap) .now-form-field-label .now-form-field-label-text:after{content:\\\"\\\";display:block}.now-form-field-label-end{align-items:center;display:flex}.-vertical .now-form-field-label-end{margin-inline-start:auto}.-vertical .now-form-field-label-end ::slotted(now-highlighted-value){max-inline-size:calc(5.25rem*var(--classicsponlydonotuse--rem-multipy));padding-inline-start:calc(.75rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end{flex-wrap:wrap;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy));margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-end ::slotted(now-highlighted-value){min-inline-size:0}.will-wrap .now-form-field-label-end{flex-direction:column;gap:calc(.125rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical.will-wrap .now-form-field-label-end{align-items:end}.-horizontal.will-wrap .now-form-field-label-end{align-items:start;justify-content:center}.now-form-field-label-start{display:flex}.-vertical .now-form-field-label-start ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-start ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-inline ::slotted(*){margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-label-inline ::slotted(*){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier,.now-form-field-label-label{font-family:var(--now-form-field_label--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-size:var(--now-form-control_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));font-style:var(--now-form-field_label--font-style,normal);font-weight:var(--now-form-field_label--font-weight,normal);line-height:1.3333;text-transform:var(--now-form-field_label--text-transform,none)}.now-form-field-label-icon,.now-form-field-label-identifier,.now-form-field-label-label{color:RGB(var(--now-form-field_label--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.-horizontal .now-form-field-label-icon,.-horizontal .now-form-field-label-identifier{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-vertical .now-form-field-label-icon,.-vertical .now-form-field-label-identifier{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-label-identifier{display:block}.now-form-field-label-identifier:after,.now-form-field-label-identifier:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-identifier:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-identifier:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-identifier+.now-form-field-label-identifier{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-form-field-label-label{align-items:center;display:flex;min-inline-size:0}.now-form-field-label-label.is-invalid{color:RGB(var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54)))}.now-form-field-label-label .now-line-height-crop{display:block}.now-form-field-label-label .now-line-height-crop:after,.now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-form-field-label-label .now-line-height-crop+.now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.-horizontal .now-form-field-label-label .now-line-height-crop:last-of-type,.-vertical .now-form-field-label-label .now-line-height-crop:first-of-type{min-inline-size:0}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{display:block;padding-block-end:calc(var(--now-line-height-crop--after)*1*-1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after,.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1)}.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop+.-vertical.will-wrap .now-form-field-label-label .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1*-1)}.now-form-field{align-items:center;border-style:solid;display:flex}.-sm .now-form-field{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-form-field{block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly),.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled).has-hover,.now-form-field:not(.is-hidden).now-input-url:not(.is-readonly):not(.is-disabled):hover{background:none;border:none;box-shadow:none}.now-form-field.is-disabled{--now-button-iconic--bare_tertiary--opacity--disabled:1;--now-button--bare_tertiary--opacity--disabled:1}.now-form-field-layout.-horizontal{align-items:center;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,1fr)}.now-form-field-layout.-horizontal .now-form-field,.now-form-field-layout.-horizontal .now-form-field-messages{grid-column-start:2}.now-form-field-slot{display:flex}.-sm .now-form-field-slot.-start ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .now-form-field-slot.-end ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))!important}.-sm .is-number .now-form-field-slot.-end{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-start:0!important}.-md .now-form-field-slot.-start ::slotted(*){margin-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-start ::slotted(:first-child){margin-inline-start:0!important}.-md .now-form-field-slot.-end ::slotted(*){margin-inline:0 calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}.-md .now-form-field-slot.-end ::slotted(:last-child){margin-inline-end:0!important}.-md .is-number .now-form-field-slot.-end ::slotted(now-dropdown){margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}:host([class=now-input-date-time-input]) .now-form-field-slot.-end ::slotted(*){margin-inline:0!important}.now-form-field-legend{inline-size:100%;padding-inline:0}.now-form-field-required-indicator{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-popover{display:inline-block;line-height:0}.-vertical .now-form-field-button{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-horizontal .now-form-field-button{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-form-field-button.is-invalid{--now-button--tertiary--color:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--hover:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54));--now-button--tertiary--color--active:var(--now-form-field_label--color--invalid,var(--now-color_alert--critical-2,200,60,54))}@media(forced-colors:active){.now-form-field{background-color:field!important;border-color:buttonborder!important;border-width:1px!important;color:fieldtext!important}.now-form-field:not(.is-disabled).has-hover,.now-form-field:not(.is-disabled):hover{border-color:highlight!important}.now-form-field.has-focus,.now-form-field:focus{border-color:highlight!important;outline:1px solid highlight}.now-form-field.is-disabled{color:graytext!important;opacity:1!important}.now-form-field.is-disabled,.now-form-field.is-readonly,.now-form-field.is-readonly.has-hover,.now-form-field.is-readonly:hover{border-color:graytext!important}.now-form-field ::placeholder{color:graytext!important}.now-form-field .now-input-native-selection{border-block-end:1px solid highlight!important}}:host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.now-align{display:flex}.now-align.-row.-reverse{flex-direction:row-reverse}.now-align.-column{flex-direction:column}.now-align.-column.-reverse{flex-direction:column-reverse}.now-align.-wrap{flex-wrap:wrap}.now-align.-inline{justify-content:space-between}.now-align.-inline-center{justify-content:center}.now-align.-inline-end{justify-content:flex-end}.now-align.-block-start{align-items:flex-start}.now-align.-block-center{align-items:center}.now-align.-block-end{align-items:flex-end}.now-m-block--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-block-end--xs{margin-block-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-m-inline-end--xs{margin-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}:host{display:inline-block;margin-block:calc(var(--now-scale-space--sm, 1)*.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-typeahead-field{background-color:RGB(var(--now-typeahead--background-color,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))),var(--now-typeahead--background-color-alpha,var(--now-form-field--background-color-alpha,0)));border-color:RGB(var(--now-typeahead--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));border-radius:var(--now-typeahead--border-radius,var(--now-form-field--border-radius,0));border-width:var(--now-typeahead--border-width,var(--now-form-field--border-width,0));display:flex}.-sm .now-typeahead-field{box-shadow:inset 0 1px 0 1px RGB(var(--now-typeahead_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))),var(--now-typeahead_inset--color-alpha,var(--now-form-field_inset--color-alpha,0))),0 var(--now-typeahead--border-block-end-width,var(--now-form-field--border-block-end-width,1px)) 0 0 RGB(var(--now-typeahead--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-sm .now-typeahead-field:not(.is-disabled).has-hover,.-sm .now-typeahead-field:not(.is-disabled):hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-typeahead_inset--color--hover,var(--now-form-field_inset--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-typeahead_inset--color-alpha--hover,var(--now-form-field_inset--color-alpha--hover,.1))),0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--hover,var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}.-sm .now-typeahead-field.is-invalid{box-shadow:inset 0 1px 0 1px RGB(var(--now-typeahead_inset--color--invalid,var(--now-form-field_inset--color--invalid,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-typeahead_inset--color-alpha--invalid,var(--now-form-field_inset--color-alpha--invalid,.1))),0 var(--now-typeahead--border-block-end-width,var(--now-form-field--border-block-end-width,1px)) 0 0 RGB(var(--now-typeahead--border-color--invalid,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-sm .now-typeahead-field.is-invalid.has-hover,.-sm .now-typeahead-field.is-invalid.is-disabled:hover{box-shadow:inset 0 1px 0 1px RGB(var(--now-typeahead_inset--color--invalid_hover,var(--now-form-field_inset--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-typeahead_inset--color-alpha--invalid_hover,var(--now-form-field_inset--color-alpha--invalid_hover,.1))),0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-md .now-typeahead-field{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-typeahead_inset--color,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28))),var(--now-typeahead_inset--color-alpha,var(--now-form-field_inset--color-alpha,0))),0 var(--now-typeahead--border-block-end-width,var(--now-form-field--border-block-end-width,1px)) 0 0 RGB(var(--now-typeahead--border-color,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148)))));padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1));padding-inline-start:calc(.5rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.-md .now-typeahead-field:not(.is-disabled).has-hover,.-md .now-typeahead-field:not(.is-disabled):hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-typeahead_inset--color--hover,var(--now-form-field_inset--color--hover,var(--now-color--primary-3,15,67,55))),var(--now-typeahead_inset--color-alpha--hover,var(--now-form-field_inset--color-alpha--hover,.1))),0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--hover,var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}.-md .now-typeahead-field.is-invalid{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-typeahead_inset--color--invalid,var(--now-form-field_inset--color--invalid,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-typeahead_inset--color-alpha--invalid,var(--now-form-field_inset--color-alpha--invalid,.1))),0 var(--now-typeahead--border-block-end-width,var(--now-form-field--border-block-end-width,1px)) 0 0 RGB(var(--now-typeahead--border-color--invalid,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.-md .now-typeahead-field.is-invalid.has-hover,.-md .now-typeahead-field.is-invalid.is-disabled:hover{box-shadow:inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-typeahead_inset--color--invalid_hover,var(--now-form-field_inset--color--invalid_hover,var(--now-color_alert--critical-5,80,24,22))),var(--now-typeahead_inset--color-alpha--invalid_hover,var(--now-form-field_inset--color-alpha--invalid_hover,.1))),0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-typeahead-field:not(.is-disabled).has-hover,.now-typeahead-field:not(.is-disabled):hover{background-color:RGB(var(--now-typeahead--background-color--hover,var(--now-form-field--background-color--hover,var(--now-color_background--tertiary,var(--now-color--neutral-2,228,230,231)))),var(--now-typeahead--background-color-alpha--hover,var(--now-form-field--background-color-alpha--hover,1)));border-color:RGB(var(--now-typeahead--border-color--hover,var(--now-form-field--border-color--hover,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}.now-typeahead-field:not(.is-disabled).is-invalid.has-focus,.now-typeahead-field:not(.is-disabled).is-invalid:focus,.now-typeahead-field:not(.is-disabled).is-invalid:focus-within{background-color:RGB(var(--now-typeahead--background-color--invalid_focus,var(--now-form-field--background-color--invalid_focus,var(--now-form-field--background-color--invalid,var(--now-color_alert--critical-0,241,206,205)))),var(--now-typeahead--background-color-alpha--invalid_focus,var(--now-form-field--background-color-alpha--invalid_focus,1)));border-color:RGB(var(--now-typeahead--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.-sm .now-typeahead-field:not(.is-disabled).is-invalid.has-focus,.-sm .now-typeahead-field:not(.is-disabled).is-invalid:focus,.-sm .now-typeahead-field:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-typeahead_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-typeahead_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1))),inset 0 0 0 var(--now-typeahead--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-typeahead--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-typeahead--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.-md .now-typeahead-field:not(.is-disabled).is-invalid.has-focus,.-md .now-typeahead-field:not(.is-disabled).is-invalid:focus,.-md .now-typeahead-field:not(.is-disabled).is-invalid:focus-within{box-shadow:0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-typeahead_inset--color--invalid_focus,var(--now-form-field_inset--color--invalid_focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-typeahead_inset--color-alpha--invalid_focus,var(--now-form-field_inset--color-alpha--invalid_focus,.1))),inset 0 0 0 var(--now-typeahead--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-typeahead--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-typeahead--border-color--invalid_focus,var(--now-form-field--border-color--invalid_focus,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))),var(--now-opacity--least,.1))}.now-typeahead-field.is-invalid{background-color:RGB(var(--now-typeahead--background-color--invalid,var(--now-form-field--background-color--invalid,var(--now-color_alert--critical-0,241,206,205))),var(--now-typeahead--background-color-alpha--invalid,var(--now-form-field--background-color-alpha--invalid,1)));border-color:RGB(var(--now-typeahead--border-color--invalid,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54))))}.now-typeahead-field.is-invalid.has-hover,.now-typeahead-field.is-invalid.is-disabled:hover,.now-typeahead-field.is-invalid:hover{background-color:RGB(var(--now-typeahead--background-color--invalid_hover,var(--now-form-field--background-color--invalid_hover,var(--now-form-field--background-color--invalid,var(--now-color_alert--critical-0,241,206,205)))),var(--now-typeahead--background-color-alpha--invalid_hover,var(--now-form-field--background-color-alpha--invalid_hover,1)));border-color:RGB(var(--now-typeahead--border-color--invalid_hover,var(--now-form-field--border-color--invalid_hover,var(--now-form-field--border-color--invalid,var(--now-color_alert--critical-2,200,60,54)))))}.now-typeahead-field.is-disabled{opacity:var(--now-typeahead--opacity--disabled,var(--now-form-field--opacity--disabled,var(--now-opacity--less,.25)))}.now-typeahead-field:not(.is-disabled).has-focus{background-color:RGB(var(--now-typeahead--background-color--focus,var(--now-form-field--background-color--focus,var(--now-color--secondary-0,217,235,238))),var(--now-typeahead--background-color-alpha--focus,var(--now-form-field--background-color-alpha--focus,1)));border-color:RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))))}.-sm .now-typeahead-field:not(.is-disabled).has-focus{box-shadow:0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),inset 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-typeahead_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-typeahead_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1))),inset 0 0 0 var(--now-typeahead--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.-md .now-typeahead-field:not(.is-disabled).has-focus{box-shadow:0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),inset 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0 1px RGB(var(--now-typeahead_inset--color--focus,var(--now-form-field_inset--color--focus,var(--now-form-field_inset--color,var(--now-color--neutral-18,22,27,28)))),var(--now-typeahead_inset--color-alpha--focus,var(--now-form-field_inset--color-alpha--focus,.1))),inset 0 0 0 var(--now-typeahead--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.-md .now-typeahead-field.is-readonly,.-md .now-typeahead-field.is-readonly.has-hover,.-md .now-typeahead-field.is-readonly:hover,.-sm .now-typeahead-field.is-readonly,.-sm .now-typeahead-field.is-readonly.has-hover,.-sm .now-typeahead-field.is-readonly:hover{background-color:RGB(var(--now-typeahead--background-color--readonly,var(--now-form-field--background-color--readonly,var(--now-form-field--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))),var(--now-typeahead--background-color-alpha--readonly,var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0))));border-color:RGB(var(--now-typeahead--border-color--readonly,var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))),var(--now-typeahead--background-color-alpha--readonly,var(--now-form-field--background-color-alpha--readonly,var(--now-form-field--background-color-alpha,0))));border-radius:var(--now-typeahead--border-radius--readonly,var(--now-form-field--border-radius--readonly,var(--now-form-field--border-radius,0)));border-width:var(--now-typeahead--border-width--readonly,var(--now-form-field--border-width--readonly,var(--now-form-field--border-width,0)));box-shadow:0 var(--now-typeahead--border-block-end-width--readonly,var(--now-form-field--border-block-end-width--readonly,0)) 0 0 RGB(var(--now-typeahead--border-color--readonly,var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}.now-typeahead-field.is-readonly.has-focus{box-shadow:0 calc(var(--now-typeahead--border-block-end-width--readonly, var(--now-form-field--border-block-end-width--readonly, 0px))*2) 0 0 RGB(var(--now-typeahead--border-color--readonly,var(--now-form-field--border-color--readonly,var(--now-form-field--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}.-sm .now-typeahead-field.is-readonly.has-focus:not(.is-disabled){box-shadow:0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),inset 0 0 0 var(--now-typeahead--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),0 0 0 calc(var(--now-form-field_focus-ring--width, 0px)/2) RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.-md .now-typeahead-field.is-readonly.has-focus:not(.is-disabled){box-shadow:0 calc(var(--now-typeahead--border-block-end-width, var(--now-form-field--border-block-end-width, 1px))*2) 0 0 RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),inset 0 0 0 var(--now-typeahead--border-width,var(--now-form-field--border-width,0)) RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142)))),0 0 0 var(--now-form-field_focus-ring--width,0) RGB(var(--now-typeahead--border-color--focus,var(--now-form-field--border-color--focus,var(--now-color--secondary-1,1,119,142))),var(--now-opacity--least,.1))}.now-typeahead-native-input-container{align-items:center;display:flex;flex-grow:1;max-inline-size:100%}.now-typeahead-native-input{background:none;block-size:100%;border:none;color:RGB(var(--now-typeahead--color,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));font-family:var(--now-form-field--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif));font-style:var(--now-form-field--font-style,normal);font-variant:normal;font-weight:var(--now-form-field--font-weight,normal);inline-size:100%;letter-spacing:inherit;line-height:1;min-inline-size:0;outline:none;padding:0;text-indent:0;text-shadow:none;text-transform:var(--now-form-field--text-transform,none);white-space:normal;word-spacing:inherit}.-sm .now-typeahead-native-input{font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))))}.-md .now-typeahead-native-input{font-size:var(--now-form-control_value--font-size--md,var(--now-font-size--md1,calc(1rem*var(--classicsponlydonotuse--rem-multipy))));padding-inline-end:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-typeahead-native-input::placeholder{color:RGB(var(--now-typeahead_placeholder--color,var(--now-form-field_placeholder--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))),.95);opacity:1}.now-typeahead-native-input[placeholder]{text-overflow:ellipsis}.is-invalid .now-typeahead-native-input:focus::placeholder,.now-typeahead-native-input:focus::placeholder,.now-typeahead-native-input:hover::placeholder{color:RGB(var(--now-typeahead_placeholder--color--hover,var(--now-form-field_placeholder--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))),.85)}.now-typeahead-native-input:disabled,.now-typeahead-native-input:disabled::placeholder{cursor:not-allowed}.is-invalid .now-typeahead-native-input{color:RGB(var(--now-typeahead--color--invalid,var(--now-form-field--color--invalid,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.is-readonly .now-typeahead-native-input{color:RGB(var(--now-typeahead--color--readonly,var(--now-form-field--color--readonly,var(--now-form-field--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))));cursor:not-allowed}.now-typeahead,.now-typeahead-multi{block-size:inherit;display:flex;flex-direction:column;max-block-size:inherit}.-horizontal.has-pills .now-form-field-label,.-horizontal.has-pills .now-form-field-label-end{padding-block-start:calc(.5625rem*var(--classicsponlydonotuse--rem-multipy))}.now-typeahead-multi.-horizontal.has-pills{align-items:start}.now-typeahead-multi .now-typeahead-field{flex-wrap:wrap}.now-typeahead-multi .now-typeahead-field.has-pills{block-size:auto;overflow:auto}.now-typeahead-multi.-sm .now-typeahead-field{padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-typeahead-multi.-sm .now-typeahead-field.has-pills{min-block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));padding-block:calc(.1875rem*var(--classicsponlydonotuse--rem-multipy));padding-inline:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-typeahead-multi.-sm.-vertical .now-typeahead-field{gap:calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) 0}.now-typeahead-multi.-sm.-horizontal .now-typeahead-field.has-pills{gap:calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-typeahead-multi.-md .now-typeahead-field{padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-typeahead-multi.-md .now-typeahead-field.has-pills{gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-block, 1));min-block-size:calc(2rem*var(--classicsponlydonotuse--rem-multipy)/2 + var(--now-form-field--scale-size-block, 1)*2rem*var(--classicsponlydonotuse--rem-multipy)/2);padding:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-typeahead-multi.-md .now-typeahead-native-input{padding-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-typeahead-multi.-md .now-form-field-slot.-start ::slotted(*){margin-inline-end:0!important}.now-typeahead-multi.-horizontal.will-wrap,.now-typeahead-multi.-horizontal.will-wrap .now-form-field-label{align-items:start}.now-typeahead-multi.-horizontal.will-wrap .now-typeahead-field{align-content:start;min-block-size:100%}.now-typeahead-multi.-horizontal.will-wrap .now-typeahead-native-input-container,.now-typeahead-multi.-horizontal.will-wrap .now-typeahead-pills{align-self:start}.now-typeahead-multi.-horizontal.will-wrap.-sm .now-typeahead-field{padding-block:calc(.1875rem*var(--classicsponlydonotuse--rem-multipy))}.now-typeahead-multi.-horizontal.will-wrap.-sm .now-form-field-label,.now-typeahead-multi.-horizontal.will-wrap.-sm .now-form-field-label-end{padding-block-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-typeahead-multi.-horizontal.will-wrap.-md .now-typeahead-field{padding-block:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-inline, 1))}.now-typeahead-multi.-horizontal.will-wrap.-md .now-form-field-label,.now-typeahead-multi.-horizontal.will-wrap.-md .now-form-field-label-end{padding-block-start:calc(.5625rem*var(--classicsponlydonotuse--rem-multipy))}.now-typeahead-popover{display:contents}.now-typeahead-pills{display:flex;flex-wrap:wrap;line-height:0;overflow:auto}.-sm .now-typeahead-pills{gap:calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.-md .now-typeahead-pills{gap:calc(.25rem*var(--classicsponlydonotuse--rem-multipy)*var(--now-form-field--scale-size-block, 1))}.has-pills .now-typeahead-pills{inline-size:100%}.now-typeahead-pills-list{display:flex;flex-wrap:wrap;gap:inherit;inline-size:100%;list-style:none;margin-block:0;padding-inline-start:0}.now-typeahead-pill{display:inline-block;max-inline-size:100%;vertical-align:middle}.now-typeahead-pill:focus{outline:none}.now-typeahead-pill-dismiss{cursor:pointer;line-height:0;margin-inline-start:calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-pill{align-items:center;display:flex;font-variant:normal;letter-spacing:inherit;position:relative;text-indent:0;text-shadow:none;white-space:normal;word-spacing:inherit}.now-pill .now-line-height-crop{inline-size:100%;min-inline-size:0}.now-pill-button{align-items:center;background-color:RGB(var(--now-pill--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));border-color:RGB(var(--now-pill--border-color,var(--now-color_border--secondary,var(--now-color--neutral-5,172,180,181))));border-style:solid;border-width:var(--now-pill--border-width,var(--now-form-control--border-width,1px));color:RGB(var(--now-pill--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));cursor:pointer;display:flex;font-family:var(--now-pill--font-family,var(--now-form-control--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-style:var(--now-pill--font-style,var(--now-form-control--font-style,normal));font-weight:var(--now-pill--font-weight,var(--now-form-control--font-weight,normal));inline-size:100%;justify-content:center;margin:0;padding-block:0;text-transform:var(--now-pill--text-transform,var(--now-form-control--text-transform,none))}.now-pill-button:not(.is-disabled).has-hover,.now-pill-button:not(.is-disabled):hover{background-color:RGB(var(--now-pill--background-color--hover,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247))));border-color:RGB(var(--now-pill--border-color--hover,var(--now-pill--border-color,var(--now-color_border--secondary,var(--now-color--neutral-5,172,180,181)))));color:RGB(var(--now-pill--color--hover,var(--now-color--primary-1,30,133,109)))}.now-pill-button:not(.is-disabled).has-hover .now-pill-identifier,.now-pill-button:not(.is-disabled):hover .now-pill-identifier{background-color:RGB(var(--now-pill_identifier--background-color--hover,var(--now-pill--background-color--hover,var(--now-color_background--secondary,var(--now-color--neutral-1,246,247,247)))));border-color:RGB(var(--now-pill_identifier--border-color--hover,var(--now-pill--border-color--hover,var(--now-pill--border-color,var(--now-color_border--secondary,var(--now-color--neutral-5,172,180,181))))));color:RGB(var(--now-pill_identifier--color--hover,var(--now-pill--color--hover,var(--now-color--primary-1,30,133,109))))}.now-pill-button:not(.is-disabled):active{background-color:RGB(var(--now-pill--background-color--active,var(--now-color--primary-0,221,237,233)));border-color:RGB(var(--now-pill--border-color--active,var(--now-color--primary-1,30,133,109)));color:RGB(var(--now-pill--color--active,var(--now-color--primary-2,23,100,82)))}.now-pill-button:not(.is-disabled):active .now-pill-identifier{background-color:RGB(var(--now-pill_identifier--background-color--active,var(--now-pill--background-color--active,var(--now-color--primary-0,221,237,233))));border-color:RGB(var(--now-pill_identifier--border-color--active,var(--now-pill--border-color--active,var(--now-color--primary-1,30,133,109))));color:RGB(var(--now-pill_identifier--color--active,var(--now-pill--color--active,var(--now-color--primary-2,23,100,82))))}.now-pill-button.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))}.now-pill-button.is-disabled:hover{box-shadow:none}.now-pill-button.is-disabled:focus::-moz-focus-inner{border-style:none}.now-pill-button.is-disabled:focus:focus{box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-pill-button.is-disabled:focus:focus{outline:1px solid highlight}}.now-typeahead-pill:focus .now-pill-button{outline:none}.now-typeahead-pill:focus .now-pill-button:after{block-size:100%;border-radius:inherit;box-shadow:inset 0 0 0 calc(.125rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--classicsponlydonotuse--rem-multipy)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));content:\\\"\\\";inline-size:100%;inset-block-start:0;inset-inline-start:0;pointer-events:none;position:absolute}.now-typeahead-pill:focus .now-pill-button::-moz-focus-inner{border-style:none}@media(forced-colors:active){.now-typeahead-pill:focus .now-pill-button:not(.is-disabled){background-color:highlighttext;border-color:highlight}.now-typeahead-pill:focus .now-pill-button:not(.is-disabled) .now-pill-identifier{background-color:highlighttext;border-color:highlight;color:highlight}.now-typeahead-pill:focus .now-pill-button:not(.is-disabled) .now-pill-label{color:highlight}}.now-pill.-xs .now-pill-button{block-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.5625rem*var(--classicsponlydonotuse--rem-multipy));font-size:var(--now-form-control_value--font-size--xs,var(--now-font-size--xs,calc(.625rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.2;padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-pill.-xs .now-pill-button.show-identifier{padding-inline-start:0}.now-pill.-xs .now-pill-button .now-line-height-crop{display:block}.now-pill.-xs .now-pill-button .now-line-height-crop:after,.now-pill.-xs .now-pill-button .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-pill.-xs .now-pill-button .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*.96)}.now-pill.-xs .now-pill-button .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*.96)}.now-pill.-xs .now-pill-button .now-line-height-crop+.now-pill.-xs .now-pill-button .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*.96*-1)}.now-pill.-sm .now-pill-button{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));font-size:var(--now-form-control_value--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--classicsponlydonotuse--rem-multipy))));line-height:1.3333;padding-inline:calc(.5rem*var(--classicsponlydonotuse--rem-multipy))}.now-pill.-sm .now-pill-button.show-identifier{padding-inline-start:0}.now-pill.-sm .now-pill-button .now-line-height-crop{display:block}.now-pill.-sm .now-pill-button .now-line-height-crop:after,.now-pill.-sm .now-pill-button .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-pill.-sm .now-pill-button .now-line-height-crop:before{margin-block-start:calc(var(--now-line-height-crop--before, -.25em)*1.06664)}.now-pill.-sm .now-pill-button .now-line-height-crop:after{margin-block-end:calc(var(--now-line-height-crop--after, -.125em)*1.06664)}.now-pill.-sm .now-pill-button .now-line-height-crop+.now-pill.-sm .now-pill-button .now-line-height-crop{margin-block-start:calc(var(--now-line-height-crop--after, -.125em)*1.06664*-1)}.now-pill-button-iconic{--now-button-iconic--bare_tertiary--background-color-alpha--hover:0;--now-button-iconic--bare_tertiary--background-color-alpha--active:0;--now-button-iconic--bare_tertiary--color:var(--now-pill_button-iconic--color,var(--now-pill--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-button-iconic--bare_tertiary--color--hover:var(--now-pill_button-iconic--color--hover,var(--now-color--primary-1,30,133,109));--now-button-iconic--bare_tertiary--color--active:var(--now-pill_button-iconic--color--active,var(--now-color--primary-2,23,100,82))}.is-selected .now-pill-button-iconic{--now-button-iconic--bare_tertiary--color:var(--now-pill_button-iconic--color--selected,var(--now-color--neutral-0,255,255,255))}.is-selected .now-pill-button-iconic:hover{--now-button-iconic--bare_tertiary--color--hover:var(--now-pill_button-iconic--color--selected_hover,var(--now-pill--color--selected,var(--now-color--neutral-0,255,255,255)))}.is-selected .now-pill-button-iconic:active{--now-button-iconic--bare_tertiary--color--active:var(--now-pill_button-iconic--color--selected_active,var(--now-pill--color--selected,var(--now-color--neutral-0,255,255,255)))}.is-selected .now-pill-button-iconic:focus-within{--now-color_focus-ring:var(--now-color--neutral-0,255,255,255)}@media(forced-colors:active){.now-pill-button-iconic,:hover .now-pill-button-iconic{color:buttontext}:focus .now-pill-button-iconic,:not(.is-disabled) .now-pill-button-iconic:hover{color:highlight}}.now-pill-identifier{align-items:center;background-color:RGB(var(--now-pill_identifier--background-color,var(--now-pill--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));border-color:RGB(var(--now-pill_identifier--border-color,var(--now-pill--border-color,var(--now-color_border--secondary,var(--now-color--neutral-5,172,180,181)))));border-style:solid;border-width:var(--now-pill--border-width,var(--now-form-control--border-width,1px));color:RGB(var(--now-pill_identifier--color,var(--now-pill--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))));display:flex;flex-shrink:0;justify-content:center;margin-block:calc(var(--now-pill--border-width, var(--now-form-control--border-width, 1px))*-1);margin-inline:calc(var(--now-pill--border-width, var(--now-form-control--border-width, 1px))*-1) calc(.25rem*var(--classicsponlydonotuse--rem-multipy))}.now-pill.-xs .now-pill-identifier{block-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.5625rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.125rem*var(--classicsponlydonotuse--rem-multipy))}.now-pill.-sm .now-pill-identifier{block-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy));border-radius:calc(.75rem*var(--classicsponlydonotuse--rem-multipy));inline-size:calc(1.5rem*var(--classicsponlydonotuse--rem-multipy))}.is-selected .now-pill-identifier{background-color:RGB(var(--now-pill_identifier--background-color--selected,var(--now-color--primary-0,221,237,233)));border-color:RGB(var(--now-pill_identifier--border-color--selected,var(--now-pill--border-color--selected,var(--now-color--primary-1,30,133,109))));color:RGB(var(--now-pill_identifier--color--selected,var(--now-color--primary-3,15,67,55)))}.-xs .now-pill-icon{transform:scale(.75)}.now-pill-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-pill-label:after{content:\\\"\\\";display:block}@media(forced-colors:active){.now-pill-button,.now-pill-identifier,.now-pill-label-wrapper.-button{background-color:buttonface;border-color:buttonborder;border-style:solid;border-width:1px}.now-pill-identifier{background-color:buttonface}.now-pill-label{forced-color-adjust:none}.now-pill-button:not(.is-disabled) .now-pill-label,.now-pill-label-wrapper.-button:not(.is-disabled) .now-pill-label{color:buttontext}.now-pill-button:not(.is-disabled).has-hover .now-pill-identifier,.now-pill-label-wrapper.-button:not(.is-disabled).has-hover .now-pill-identifier{background-color:buttonface}.now-pill-button:not(.is-disabled):focus,.now-pill-button:not(.is-disabled):hover,.now-pill-label-wrapper.-button:not(.is-disabled):focus,.now-pill-label-wrapper.-button:not(.is-disabled):hover{background-color:highlighttext;border-color:highlight}.now-pill-button:not(.is-disabled):focus .now-pill-identifier,.now-pill-button:not(.is-disabled):hover .now-pill-identifier,.now-pill-label-wrapper.-button:not(.is-disabled):focus .now-pill-identifier,.now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-identifier{background-color:highlighttext;border-color:highlight;color:highlight}.now-pill-button:not(.is-disabled):focus .now-pill-label,.now-pill-button:not(.is-disabled):hover .now-pill-label,.now-pill-label-wrapper.-button:not(.is-disabled):focus .now-pill-label,.now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-label{color:highlight}.is-selected .now-pill-button:not(.is-disabled),.is-selected .now-pill-label-wrapper.-button:not(.is-disabled){background-color:selecteditem}.is-selected .now-pill-button:not(.is-disabled) .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled) .now-pill-identifier{background-color:selecteditem;border-color:buttonborder;color:selecteditemtext}.is-selected .now-pill-button:not(.is-disabled) .now-pill-label,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled) .now-pill-label{color:selecteditemtext}.is-selected .now-pill-button:not(.is-disabled).has-hover .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled).has-hover .now-pill-identifier{border-color:selecteditemtext}.is-selected .now-pill-button:not(.is-disabled).has-hover,.is-selected .now-pill-button:not(.is-disabled):focus,.is-selected .now-pill-button:not(.is-disabled):hover,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled).has-hover,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):focus,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover{background-color:selecteditem}.is-selected .now-pill-button:not(.is-disabled).has-hover .now-pill-identifier,.is-selected .now-pill-button:not(.is-disabled):focus .now-pill-identifier,.is-selected .now-pill-button:not(.is-disabled):hover .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled).has-hover .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):focus .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-identifier{background-color:selecteditem;border-color:buttonborder;color:selecteditemtext}.is-selected .now-pill-button:not(.is-disabled):focus,.is-selected .now-pill-button:not(.is-disabled):focus .now-pill-identifier,.is-selected .now-pill-button:not(.is-disabled):hover,.is-selected .now-pill-button:not(.is-disabled):hover .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):focus,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):focus .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover,.is-selected .now-pill-label-wrapper.-button:not(.is-disabled):hover .now-pill-identifier{border-color:highlight}.now-pill-button.is-disabled,.now-pill-label-wrapper.-button.is-disabled{color:graytext;opacity:1}.is-selected .now-pill-button.is-disabled,.is-selected .now-pill-button.is-disabled .now-pill-identifier,.is-selected .now-pill-label-wrapper.-button.is-disabled,.is-selected .now-pill-label-wrapper.-button.is-disabled .now-pill-identifier{background-color:graytext;color:buttonface}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 47962,\n\t\"./af.js\": 47962,\n\t\"./ar\": 85718,\n\t\"./ar-dz\": 81077,\n\t\"./ar-dz.js\": 81077,\n\t\"./ar-kw\": 96805,\n\t\"./ar-kw.js\": 96805,\n\t\"./ar-ly\": 61604,\n\t\"./ar-ly.js\": 61604,\n\t\"./ar-ma\": 79237,\n\t\"./ar-ma.js\": 79237,\n\t\"./ar-ps\": 54554,\n\t\"./ar-ps.js\": 54554,\n\t\"./ar-sa\": 85183,\n\t\"./ar-sa.js\": 85183,\n\t\"./ar-tn\": 601,\n\t\"./ar-tn.js\": 601,\n\t\"./ar.js\": 85718,\n\t\"./az\": 70334,\n\t\"./az.js\": 70334,\n\t\"./be\": 24264,\n\t\"./be.js\": 24264,\n\t\"./bg\": 34674,\n\t\"./bg.js\": 34674,\n\t\"./bm\": 3872,\n\t\"./bm.js\": 3872,\n\t\"./bn\": 38169,\n\t\"./bn-bd\": 25844,\n\t\"./bn-bd.js\": 25844,\n\t\"./bn.js\": 38169,\n\t\"./bo\": 67914,\n\t\"./bo.js\": 67914,\n\t\"./br\": 51053,\n\t\"./br.js\": 51053,\n\t\"./bs\": 1742,\n\t\"./bs.js\": 1742,\n\t\"./ca\": 4301,\n\t\"./ca.js\": 4301,\n\t\"./cs\": 9659,\n\t\"./cs.js\": 9659,\n\t\"./cv\": 77512,\n\t\"./cv.js\": 77512,\n\t\"./cy\": 97269,\n\t\"./cy.js\": 97269,\n\t\"./da\": 238,\n\t\"./da.js\": 238,\n\t\"./de\": 41666,\n\t\"./de-at\": 28762,\n\t\"./de-at.js\": 28762,\n\t\"./de-ch\": 14972,\n\t\"./de-ch.js\": 14972,\n\t\"./de.js\": 41666,\n\t\"./dv\": 75711,\n\t\"./dv.js\": 75711,\n\t\"./el\": 27372,\n\t\"./el.js\": 27372,\n\t\"./en-au\": 1989,\n\t\"./en-au.js\": 1989,\n\t\"./en-ca\": 22479,\n\t\"./en-ca.js\": 22479,\n\t\"./en-gb\": 76694,\n\t\"./en-gb.js\": 76694,\n\t\"./en-ie\": 15805,\n\t\"./en-ie.js\": 15805,\n\t\"./en-il\": 29110,\n\t\"./en-il.js\": 29110,\n\t\"./en-in\": 17356,\n\t\"./en-in.js\": 17356,\n\t\"./en-nz\": 33679,\n\t\"./en-nz.js\": 33679,\n\t\"./en-sg\": 91805,\n\t\"./en-sg.js\": 91805,\n\t\"./eo\": 31189,\n\t\"./eo.js\": 31189,\n\t\"./es\": 20465,\n\t\"./es-do\": 65327,\n\t\"./es-do.js\": 65327,\n\t\"./es-mx\": 63283,\n\t\"./es-mx.js\": 63283,\n\t\"./es-us\": 31158,\n\t\"./es-us.js\": 31158,\n\t\"./es.js\": 20465,\n\t\"./et\": 90340,\n\t\"./et.js\": 90340,\n\t\"./eu\": 96011,\n\t\"./eu.js\": 96011,\n\t\"./fa\": 7968,\n\t\"./fa.js\": 7968,\n\t\"./fi\": 62536,\n\t\"./fi.js\": 62536,\n\t\"./fil\": 48878,\n\t\"./fil.js\": 48878,\n\t\"./fo\": 9534,\n\t\"./fo.js\": 9534,\n\t\"./fr\": 22985,\n\t\"./fr-ca\": 92862,\n\t\"./fr-ca.js\": 92862,\n\t\"./fr-ch\": 8149,\n\t\"./fr-ch.js\": 8149,\n\t\"./fr.js\": 22985,\n\t\"./fy\": 80536,\n\t\"./fy.js\": 80536,\n\t\"./ga\": 92585,\n\t\"./ga.js\": 92585,\n\t\"./gd\": 77830,\n\t\"./gd.js\": 77830,\n\t\"./gl\": 16558,\n\t\"./gl.js\": 16558,\n\t\"./gom-deva\": 14911,\n\t\"./gom-deva.js\": 14911,\n\t\"./gom-latn\": 90384,\n\t\"./gom-latn.js\": 90384,\n\t\"./gu\": 78069,\n\t\"./gu.js\": 78069,\n\t\"./he\": 19174,\n\t\"./he.js\": 19174,\n\t\"./hi\": 3234,\n\t\"./hi.js\": 3234,\n\t\"./hr\": 31415,\n\t\"./hr.js\": 31415,\n\t\"./hu\": 72886,\n\t\"./hu.js\": 72886,\n\t\"./hy-am\": 29169,\n\t\"./hy-am.js\": 29169,\n\t\"./id\": 67704,\n\t\"./id.js\": 67704,\n\t\"./is\": 29917,\n\t\"./is.js\": 29917,\n\t\"./it\": 49704,\n\t\"./it-ch\": 59858,\n\t\"./it-ch.js\": 59858,\n\t\"./it.js\": 49704,\n\t\"./ja\": 50492,\n\t\"./ja.js\": 50492,\n\t\"./jv\": 94937,\n\t\"./jv.js\": 94937,\n\t\"./ka\": 31477,\n\t\"./ka.js\": 31477,\n\t\"./kk\": 7739,\n\t\"./kk.js\": 7739,\n\t\"./km\": 71041,\n\t\"./km.js\": 71041,\n\t\"./kn\": 52296,\n\t\"./kn.js\": 52296,\n\t\"./ko\": 86911,\n\t\"./ko.js\": 86911,\n\t\"./ku\": 94409,\n\t\"./ku-kmr\": 28178,\n\t\"./ku-kmr.js\": 28178,\n\t\"./ku.js\": 94409,\n\t\"./ky\": 79085,\n\t\"./ky.js\": 79085,\n\t\"./lb\": 19763,\n\t\"./lb.js\": 19763,\n\t\"./lo\": 98600,\n\t\"./lo.js\": 98600,\n\t\"./lt\": 59049,\n\t\"./lt.js\": 59049,\n\t\"./lv\": 31911,\n\t\"./lv.js\": 31911,\n\t\"./me\": 35651,\n\t\"./me.js\": 35651,\n\t\"./mi\": 6831,\n\t\"./mi.js\": 6831,\n\t\"./mk\": 77233,\n\t\"./mk.js\": 77233,\n\t\"./ml\": 30756,\n\t\"./ml.js\": 30756,\n\t\"./mn\": 45678,\n\t\"./mn.js\": 45678,\n\t\"./mr\": 11850,\n\t\"./mr.js\": 11850,\n\t\"./ms\": 82105,\n\t\"./ms-my\": 32276,\n\t\"./ms-my.js\": 32276,\n\t\"./ms.js\": 82105,\n\t\"./mt\": 84140,\n\t\"./mt.js\": 84140,\n\t\"./my\": 63167,\n\t\"./my.js\": 63167,\n\t\"./nb\": 70465,\n\t\"./nb.js\": 70465,\n\t\"./ne\": 85396,\n\t\"./ne.js\": 85396,\n\t\"./nl\": 22355,\n\t\"./nl-be\": 96077,\n\t\"./nl-be.js\": 96077,\n\t\"./nl.js\": 22355,\n\t\"./nn\": 54197,\n\t\"./nn.js\": 54197,\n\t\"./oc-lnc\": 16053,\n\t\"./oc-lnc.js\": 16053,\n\t\"./pa-in\": 62224,\n\t\"./pa-in.js\": 62224,\n\t\"./pl\": 29637,\n\t\"./pl.js\": 29637,\n\t\"./pt\": 17085,\n\t\"./pt-br\": 47014,\n\t\"./pt-br.js\": 47014,\n\t\"./pt.js\": 17085,\n\t\"./ro\": 69050,\n\t\"./ro.js\": 69050,\n\t\"./ru\": 39464,\n\t\"./ru.js\": 39464,\n\t\"./sd\": 43506,\n\t\"./sd.js\": 43506,\n\t\"./se\": 97409,\n\t\"./se.js\": 97409,\n\t\"./si\": 29557,\n\t\"./si.js\": 29557,\n\t\"./sk\": 30963,\n\t\"./sk.js\": 30963,\n\t\"./sl\": 10922,\n\t\"./sl.js\": 10922,\n\t\"./sq\": 94061,\n\t\"./sq.js\": 94061,\n\t\"./sr\": 12004,\n\t\"./sr-cyrl\": 35035,\n\t\"./sr-cyrl.js\": 35035,\n\t\"./sr.js\": 12004,\n\t\"./ss\": 17675,\n\t\"./ss.js\": 17675,\n\t\"./sv\": 1624,\n\t\"./sv.js\": 1624,\n\t\"./sw\": 64783,\n\t\"./sw.js\": 64783,\n\t\"./ta\": 8990,\n\t\"./ta.js\": 8990,\n\t\"./te\": 1202,\n\t\"./te.js\": 1202,\n\t\"./tet\": 80228,\n\t\"./tet.js\": 80228,\n\t\"./tg\": 73384,\n\t\"./tg.js\": 73384,\n\t\"./th\": 52565,\n\t\"./th.js\": 52565,\n\t\"./tk\": 94284,\n\t\"./tk.js\": 94284,\n\t\"./tl-ph\": 86002,\n\t\"./tl-ph.js\": 86002,\n\t\"./tlh\": 19229,\n\t\"./tlh.js\": 19229,\n\t\"./tr\": 40683,\n\t\"./tr.js\": 40683,\n\t\"./tzl\": 86399,\n\t\"./tzl.js\": 86399,\n\t\"./tzm\": 75080,\n\t\"./tzm-latn\": 22280,\n\t\"./tzm-latn.js\": 22280,\n\t\"./tzm.js\": 75080,\n\t\"./ug-cn\": 58451,\n\t\"./ug-cn.js\": 58451,\n\t\"./uk\": 68745,\n\t\"./uk.js\": 68745,\n\t\"./ur\": 54450,\n\t\"./ur.js\": 54450,\n\t\"./uz\": 93578,\n\t\"./uz-latn\": 9802,\n\t\"./uz-latn.js\": 9802,\n\t\"./uz.js\": 93578,\n\t\"./vi\": 43896,\n\t\"./vi.js\": 43896,\n\t\"./x-pseudo\": 52524,\n\t\"./x-pseudo.js\": 52524,\n\t\"./yo\": 33593,\n\t\"./yo.js\": 33593,\n\t\"./zh-cn\": 69517,\n\t\"./zh-cn.js\": 69517,\n\t\"./zh-hk\": 36737,\n\t\"./zh-hk.js\": 36737,\n\t\"./zh-mo\": 67796,\n\t\"./zh-mo.js\": 67796,\n\t\"./zh-tw\": 13625,\n\t\"./zh-tw.js\": 13625\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 54551;","\n        var result = require(\"!!../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./index.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./index.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./onboardingPopover.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./index.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./index.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./index.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./aboutPopover.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./index.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./styles.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./index.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./index.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./sn-search-gr-carousel.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./sn-search-topics.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./sn-search-top-results.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./index.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_customLabel.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./carousel.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./view.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./view.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./ariaLiveRegion.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./recommendations-helper.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./controlwrapper.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./controlwrapper.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./style.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./input.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_resizable-target.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-alert-list.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-alert.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-avatar.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-badge.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button-bare.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button-circular.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button-iconic.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button-stateful.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-card-actions.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-card-divider.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-card-footer.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-card-header.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-card.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-carousel-text.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-checkbox.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-collapse.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./now-data-set.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./__sn-data-set-toolbar.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./__sn-data-set-view-grid.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./__sn-data-set-view-list.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-date-time-calendar.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-date-time-interval.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-date-time.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-input-date-time.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-date-time-presets.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-dropdown-list.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-dropdown-panel.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-dropdown.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-heading.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-highlighted-value.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-icon-animated.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-icon.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-illustration-custom.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-illustration.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-image.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-input-password.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-input-phone.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-input-url.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-input.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_popover-content.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-label-value-inline.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-label-value-stacked.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-label-value-tabbed.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./main.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./galleryView.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./styles.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./popoverCellEditorContent.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./popoverChoiceColumnFilterContent.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./popoverCustomContent.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./popoverListContent.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./popoverTextContent.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./columnHeaderClone.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./timeAgoDisplay.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-loader-custom.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-loader-skeleton.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-loader.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-message.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-modal.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-pagination-control.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-pill.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-popover-panel.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-progress-bar.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-radio-buttons.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./html.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-select.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-tabs-vertical.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-tabs.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-template-message-empty-state.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-text-link.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-textarea.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-tooltip.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-typeahead.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst importRes = x({ [\"__DO_NOT_USE_THIS_WILL_BE_REMOVED__createComponentLoaderEffect\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.__esModule\n\t\t\t\t\tif (cjsModule && '__DO_NOT_USE_THIS_WILL_BE_REMOVED__createComponentLoaderEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"].__DO_NOT_USE_THIS_WILL_BE_REMOVED__createComponentLoaderEffect;\n\t\t\t\t\t} else if ('__DO_NOT_USE_THIS_WILL_BE_REMOVED__createComponentLoaderEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.__DO_NOT_USE_THIS_WILL_BE_REMOVED__createComponentLoaderEffect || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"].__DO_NOT_USE_THIS_WILL_BE_REMOVED__createComponentLoaderEffect;\n\t\t\t\t}, [\"__DO_NOT_USE_THIS_WILL_BE_REMOVED__createUxfContractBehavior\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.__esModule\n\t\t\t\t\tif (cjsModule && '__DO_NOT_USE_THIS_WILL_BE_REMOVED__createUxfContractBehavior' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"].__DO_NOT_USE_THIS_WILL_BE_REMOVED__createUxfContractBehavior;\n\t\t\t\t\t} else if ('__DO_NOT_USE_THIS_WILL_BE_REMOVED__createUxfContractBehavior' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.__DO_NOT_USE_THIS_WILL_BE_REMOVED__createUxfContractBehavior || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"].__DO_NOT_USE_THIS_WILL_BE_REMOVED__createUxfContractBehavior;\n\t\t\t\t}, [\"getComponentsByTagNames\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.__esModule\n\t\t\t\t\tif (cjsModule && 'getComponentsByTagNames' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"].getComponentsByTagNames;\n\t\t\t\t\t} else if ('getComponentsByTagNames' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.getComponentsByTagNames || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"].getComponentsByTagNames;\n\t\t\t\t}, [\"uxfViewportBehavior\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.__esModule\n\t\t\t\t\tif (cjsModule && 'uxfViewportBehavior' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"].uxfViewportBehavior;\n\t\t\t\t\t} else if ('uxfViewportBehavior' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__.uxfViewportBehavior || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__[\"default\"].uxfViewportBehavior;\n\t\t\t\t} });\nif (importRes.default && importRes.__esModule) {\n\tmodule.exports = importRes.default;\n\tif (!importRes.default.default)\n\t\tObject.assign(module.exports, {default: importRes.default});\n} else {\n\tmodule.exports = importRes;\n}","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst importRes = x({ [\"getEmbeddableBaseUrl\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__.__esModule\n\t\t\t\t\tif (cjsModule && 'getEmbeddableBaseUrl' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"].getEmbeddableBaseUrl;\n\t\t\t\t\t} else if ('getEmbeddableBaseUrl' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__.getEmbeddableBaseUrl || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__[\"default\"].getEmbeddableBaseUrl;\n\t\t\t\t} });\nif (importRes.default && importRes.__esModule) {\n\tmodule.exports = importRes.default;\n\tif (!importRes.default.default)\n\t\tObject.assign(module.exports, {default: importRes.default});\n} else {\n\tmodule.exports = importRes;\n}","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst importRes = x({ [\"actionTypes\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.__esModule\n\t\t\t\t\tif (cjsModule && 'actionTypes' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].actionTypes;\n\t\t\t\t\t} else if ('actionTypes' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.actionTypes || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].actionTypes;\n\t\t\t\t}, [\"createContext\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.__esModule\n\t\t\t\t\tif (cjsModule && 'createContext' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].createContext;\n\t\t\t\t\t} else if ('createContext' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.createContext || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].createContext;\n\t\t\t\t}, [\"createCustomElement\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.__esModule\n\t\t\t\t\tif (cjsModule && 'createCustomElement' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].createCustomElement;\n\t\t\t\t\t} else if ('createCustomElement' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.createCustomElement || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].createCustomElement;\n\t\t\t\t}, [\"createPresentationalCustomElement\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.__esModule\n\t\t\t\t\tif (cjsModule && 'createPresentationalCustomElement' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].createPresentationalCustomElement;\n\t\t\t\t\t} else if ('createPresentationalCustomElement' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.createPresentationalCustomElement || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].createPresentationalCustomElement;\n\t\t\t\t}, [\"declarativeOperations\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.__esModule\n\t\t\t\t\tif (cjsModule && 'declarativeOperations' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].declarativeOperations;\n\t\t\t\t\t} else if ('declarativeOperations' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.declarativeOperations || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].declarativeOperations;\n\t\t\t\t}, [\"modifierTypes\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.__esModule\n\t\t\t\t\tif (cjsModule && 'modifierTypes' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].modifierTypes;\n\t\t\t\t\t} else if ('modifierTypes' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__.modifierTypes || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__[\"default\"].modifierTypes;\n\t\t\t\t} });\nif (importRes.default && importRes.__esModule) {\n\tmodule.exports = importRes.default;\n\tif (!importRes.default.default)\n\t\tObject.assign(module.exports, {default: importRes.default});\n} else {\n\tmodule.exports = importRes;\n}","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst importRes = x({ [\"createAmbPublishEffect\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__.__esModule\n\t\t\t\t\tif (cjsModule && 'createAmbPublishEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"].createAmbPublishEffect;\n\t\t\t\t\t} else if ('createAmbPublishEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__.createAmbPublishEffect || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"].createAmbPublishEffect;\n\t\t\t\t}, [\"createAmbSubscriptionEffect\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__.__esModule\n\t\t\t\t\tif (cjsModule && 'createAmbSubscriptionEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"].createAmbSubscriptionEffect;\n\t\t\t\t\t} else if ('createAmbSubscriptionEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__.createAmbSubscriptionEffect || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__[\"default\"].createAmbSubscriptionEffect;\n\t\t\t\t} });\nif (importRes.default && importRes.__esModule) {\n\tmodule.exports = importRes.default;\n\tif (!importRes.default.default)\n\t\tObject.assign(module.exports, {default: importRes.default});\n} else {\n\tmodule.exports = importRes;\n}","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst importRes = x({ [\"createGraphQLEffect\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__.__esModule\n\t\t\t\t\tif (cjsModule && 'createGraphQLEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"].createGraphQLEffect;\n\t\t\t\t\t} else if ('createGraphQLEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__.createGraphQLEffect || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__[\"default\"].createGraphQLEffect;\n\t\t\t\t} });\nif (importRes.default && importRes.__esModule) {\n\tmodule.exports = importRes.default;\n\tif (!importRes.default.default)\n\t\tObject.assign(module.exports, {default: importRes.default});\n} else {\n\tmodule.exports = importRes;\n}","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst importRes = x({ [\"createHttpEffect\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__.__esModule\n\t\t\t\t\tif (cjsModule && 'createHttpEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"].createHttpEffect;\n\t\t\t\t\t} else if ('createHttpEffect' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__.createHttpEffect || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__[\"default\"].createHttpEffect;\n\t\t\t\t} });\nif (importRes.default && importRes.__esModule) {\n\tmodule.exports = importRes.default;\n\tif (!importRes.default.default)\n\t\tObject.assign(module.exports, {default: importRes.default});\n} else {\n\tmodule.exports = importRes;\n}","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst importRes = x({ [\"createInteractionId\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.__esModule\n\t\t\t\t\tif (cjsModule && 'createInteractionId' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].createInteractionId;\n\t\t\t\t\t} else if ('createInteractionId' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.createInteractionId || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].createInteractionId;\n\t\t\t\t}, [\"defineMetric\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.__esModule\n\t\t\t\t\tif (cjsModule && 'defineMetric' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].defineMetric;\n\t\t\t\t\t} else if ('defineMetric' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.defineMetric || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].defineMetric;\n\t\t\t\t}, [\"getInteractionId\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.__esModule\n\t\t\t\t\tif (cjsModule && 'getInteractionId' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].getInteractionId;\n\t\t\t\t\t} else if ('getInteractionId' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.getInteractionId || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].getInteractionId;\n\t\t\t\t}, [\"getMetricTypes\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.__esModule\n\t\t\t\t\tif (cjsModule && 'getMetricTypes' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].getMetricTypes;\n\t\t\t\t\t} else if ('getMetricTypes' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.getMetricTypes || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].getMetricTypes;\n\t\t\t\t}, [\"mark\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.__esModule\n\t\t\t\t\tif (cjsModule && 'mark' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].mark;\n\t\t\t\t\t} else if ('mark' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__.mark || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__[\"default\"].mark;\n\t\t\t\t} });\nif (importRes.default && importRes.__esModule) {\n\tmodule.exports = importRes.default;\n\tif (!importRes.default.default)\n\t\tObject.assign(module.exports, {default: importRes.default});\n} else {\n\tmodule.exports = importRes;\n}","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst importRes = x({ [\"Fragment\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.__esModule\n\t\t\t\t\tif (cjsModule && 'Fragment' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].Fragment;\n\t\t\t\t\t} else if ('Fragment' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.Fragment || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].Fragment;\n\t\t\t\t}, [\"createElement\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.__esModule\n\t\t\t\t\tif (cjsModule && 'createElement' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].createElement;\n\t\t\t\t\t} else if ('createElement' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.createElement || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].createElement;\n\t\t\t\t}, [\"createElementFromNode\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.__esModule\n\t\t\t\t\tif (cjsModule && 'createElementFromNode' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].createElementFromNode;\n\t\t\t\t\t} else if ('createElementFromNode' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.createElementFromNode || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].createElementFromNode;\n\t\t\t\t}, [\"createRef\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.__esModule\n\t\t\t\t\tif (cjsModule && 'createRef' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].createRef;\n\t\t\t\t\t} else if ('createRef' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.createRef || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].createRef;\n\t\t\t\t}, [\"createSlot\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.__esModule\n\t\t\t\t\tif (cjsModule && 'createSlot' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].createSlot;\n\t\t\t\t\t} else if ('createSlot' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.createSlot || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].createSlot;\n\t\t\t\t}, [\"dangerouslyCreateElementFromString\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.__esModule\n\t\t\t\t\tif (cjsModule && 'dangerouslyCreateElementFromString' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].dangerouslyCreateElementFromString;\n\t\t\t\t\t} else if ('dangerouslyCreateElementFromString' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.dangerouslyCreateElementFromString || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"].dangerouslyCreateElementFromString;\n\t\t\t\t}, [\"default\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__.__esModule\n\t\t\t\t\tif (cjsModule && 'default' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"];\n\t\t\t\t\t} else if ('default' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__[\"default\"][\"default\"];\n\t\t\t\t} });\nif (importRes.default && importRes.__esModule) {\n\tmodule.exports = importRes.default;\n\tif (!importRes.default.default)\n\t\tObject.assign(module.exports, {default: importRes.default});\n} else {\n\tmodule.exports = importRes;\n}","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _construct(t, e, r) {\n  if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n  var o = [null];\n  o.push.apply(o, e);\n  var p = new (t.bind.apply(t, o))();\n  return r && setPrototypeOf(p, r.prototype), p;\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n  return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n  return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(t) {\n  try {\n    return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n  } catch (n) {\n    return \"function\" == typeof t;\n  }\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n  return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(t) {\n  var r = \"function\" == typeof Map ? new Map() : void 0;\n  return module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {\n    if (null === t || !isNativeFunction(t)) return t;\n    if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n    if (void 0 !== r) {\n      if (r.has(t)) return r.get(t);\n      r.set(t, Wrapper);\n    }\n    function Wrapper() {\n      return construct(t, arguments, getPrototypeOf(this).constructor);\n    }\n    return Wrapper.prototype = Object.create(t.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: !1,\n        writable: !0,\n        configurable: !0\n      }\n    }), setPrototypeOf(Wrapper, t);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _wrapNativeSuper(t);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export const LIB_NAME = '@devsnc/ux-metrics';\n\nexport const DEFAULT_LEVEL = 5;\nexport const MIN_LEVEL = 0;\nexport const MAX_LEVEL = 5;\nexport const markTypes = {\n\tall: 'all',\n\tusage: 'usage',\n\tperformance: 'performance'\n};\n","import {mark, defineMetric, getMetricTypes, getInteractionId} from '@servicenow/ui-metrics';\nimport {DEFAULT_LEVEL, markTypes} from './constants';\nimport validateTrackArguments from './validateTrackArguments';\n\n/**\n * Track usage metric from seismic components\n * @function track\n *\n * @example\n * import track from '@devsnc/ux-metrics';\n * actionHandlers: {\n * \t\t[BUTTON_CLICKED_ACTION](coeffects) {\n *\t\t\ttrack(coeffects, 'BUTTON_CLICKED');\n *\t\t}\n * }\n *\n * @example\n * import track, {markTypes} from '@devsnc/ux-metrics';\n * actionHandlers: {\n * \t\t[BUTTON_CLICKED_ACTION](coeffects) {\n *\t\t\ttrack(\n *                  coeffects,\n *                  'BUTTON_CLICKED',\n *                  {\n *                      \"key\" : \"value\"\n *                  },\n *                  {\n *                      level: 3,\n *                      type: markTypes.usage\n *                  }\n *              );\n *          }\n *      }\n *\n * @param {Object} coeffects - Data object containing details of host, action object\n * @param {String} eventName - Name of the event to be tracked\n * @param {Object} metadata - (Optional) Additional data to be stored along with event name,\n * should be simple key value pairs\n * @param {Object} config - (Optional) Additional config data which is needed to\n * define the event level and type\n * @param {Number} config.level - (Optional) Verbosity level of the event, higher is more important\n * @param {String} config.type - (Optional) mark type of the event,which is one of\n * marktypes(all, usage, performance)\n */\nexport default function track(coeffects = {}, eventName, metadata = {}, config = {}) {\n\ttry {\n\t\tconst {level = DEFAULT_LEVEL, type = markTypes.usage} = config;\n\t\t// no validation in prod but we log error messages in dev environment.\n\t\tif (!validateTrackArguments(coeffects, eventName, metadata, level, type))\n\t\t\treturn;\n\t\tif (!getMetricTypes()[eventName])\n\t\t\tdefineMetric(eventName, level);\n\t\tconst {\n\t\t\thost,\n\t\t\taction: {meta}\n\t\t} = coeffects;\n\t\tconst interactionId = getInteractionId(meta) || '';\n\t\tmark(host, interactionId, eventName, metadata, type);\n\t} catch (err) {\n\t\t// Handle any error so that caller's execution thread is not impacted. Log error for non-prod environment\n\t\tif (process.env.NODE_ENV !== 'production')\n\t\t\tconsole.error('Error occurred in track function', err.message);\n\t}\n}\n","import track from './track.js';\nimport {markTypes} from './constants';\nimport {types} from '@servicenow/ui-metrics';\n\nexport default track;\nexport {\n\tmarkTypes,\n\ttypes\n};\n\nif (globalThis.nowUiFrameworkMetrics) \n\tglobalThis.nowUiFrameworkMetrics.track = track;\n\n","const {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n  freeze = function (x) {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function (x) {\n    return x;\n  };\n}\n\nif (!apply) {\n  apply = function (fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\n\nif (!construct) {\n  construct = function (Func, args) {\n    return new Func(...args);\n  };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply<T>(\n  func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n  return (thisArg: any, ...args: any[]): T => {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n\n    return apply(func, thisArg, args);\n  };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct<T>(func: (...args: any[]) => T): (...args: any[]) => T {\n  return (...args: any[]): T => construct(func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n  set: Record<string, any>,\n  array: readonly any[],\n  transformCaseFunc: ReturnType<typeof unapply<string>> = stringToLowerCase\n): Record<string, any> {\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          (array as any[])[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element] = true;\n  }\n\n  return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray<T>(array: T[]): Array<T | null> {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n\n  return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone<T extends Record<string, any>>(object: T): T {\n  const newObject = create(null);\n\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (\n        value &&\n        typeof value === 'object' &&\n        value.constructor === Object\n      ) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n\n  return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter<T extends Record<string, any>>(\n  object: T,\n  prop: string\n): ReturnType<typeof unapply<any>> | (() => null) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue(): null {\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nexport {\n  // Array\n  arrayForEach,\n  arrayIndexOf,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySlice,\n  arraySplice,\n  // Object\n  entries,\n  freeze,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n  isFrozen,\n  setPrototypeOf,\n  seal,\n  clone,\n  create,\n  objectHasOwnProperty,\n  // RegExp\n  regExpTest,\n  // String\n  stringIndexOf,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringTrim,\n  // Errors\n  typeErrorCreate,\n  // Other\n  lookupGetter,\n  addToSet,\n  // Reflect\n  unapply,\n  unconstruct,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'a',\n  'abbr',\n  'acronym',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'bdi',\n  'bdo',\n  'big',\n  'blink',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'center',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'content',\n  'data',\n  'datalist',\n  'dd',\n  'decorator',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'element',\n  'em',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'font',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'label',\n  'legend',\n  'li',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meter',\n  'nav',\n  'nobr',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'section',\n  'select',\n  'shadow',\n  'small',\n  'source',\n  'spacer',\n  'span',\n  'strike',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'template',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'tt',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n] as const);\n\nexport const svg = freeze([\n  'svg',\n  'a',\n  'altglyph',\n  'altglyphdef',\n  'altglyphitem',\n  'animatecolor',\n  'animatemotion',\n  'animatetransform',\n  'circle',\n  'clippath',\n  'defs',\n  'desc',\n  'ellipse',\n  'filter',\n  'font',\n  'g',\n  'glyph',\n  'glyphref',\n  'hkern',\n  'image',\n  'line',\n  'lineargradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialgradient',\n  'rect',\n  'stop',\n  'style',\n  'switch',\n  'symbol',\n  'text',\n  'textpath',\n  'title',\n  'tref',\n  'tspan',\n  'view',\n  'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n  'animate',\n  'color-profile',\n  'cursor',\n  'discard',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-src',\n  'font-face-uri',\n  'foreignobject',\n  'hatch',\n  'hatchpath',\n  'mesh',\n  'meshgradient',\n  'meshpatch',\n  'meshrow',\n  'missing-glyph',\n  'script',\n  'set',\n  'solidcolor',\n  'unknown',\n  'use',\n] as const);\n\nexport const mathMl = freeze([\n  'math',\n  'menclose',\n  'merror',\n  'mfenced',\n  'mfrac',\n  'mglyph',\n  'mi',\n  'mlabeledtr',\n  'mmultiscripts',\n  'mn',\n  'mo',\n  'mover',\n  'mpadded',\n  'mphantom',\n  'mroot',\n  'mrow',\n  'ms',\n  'mspace',\n  'msqrt',\n  'mstyle',\n  'msub',\n  'msup',\n  'msubsup',\n  'mtable',\n  'mtd',\n  'mtext',\n  'mtr',\n  'munder',\n  'munderover',\n  'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n  'maction',\n  'maligngroup',\n  'malignmark',\n  'mlongdiv',\n  'mscarries',\n  'mscarry',\n  'msgroup',\n  'mstack',\n  'msline',\n  'msrow',\n  'semantics',\n  'annotation',\n  'annotation-xml',\n  'mprescripts',\n  'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'accept',\n  'action',\n  'align',\n  'alt',\n  'autocapitalize',\n  'autocomplete',\n  'autopictureinpicture',\n  'autoplay',\n  'background',\n  'bgcolor',\n  'border',\n  'capture',\n  'cellpadding',\n  'cellspacing',\n  'checked',\n  'cite',\n  'class',\n  'clear',\n  'color',\n  'cols',\n  'colspan',\n  'controls',\n  'controlslist',\n  'coords',\n  'crossorigin',\n  'datetime',\n  'decoding',\n  'default',\n  'dir',\n  'disabled',\n  'disablepictureinpicture',\n  'disableremoteplayback',\n  'download',\n  'draggable',\n  'enctype',\n  'enterkeyhint',\n  'face',\n  'for',\n  'headers',\n  'height',\n  'hidden',\n  'high',\n  'href',\n  'hreflang',\n  'id',\n  'inputmode',\n  'integrity',\n  'ismap',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loading',\n  'loop',\n  'low',\n  'max',\n  'maxlength',\n  'media',\n  'method',\n  'min',\n  'minlength',\n  'multiple',\n  'muted',\n  'name',\n  'nonce',\n  'noshade',\n  'novalidate',\n  'nowrap',\n  'open',\n  'optimum',\n  'pattern',\n  'placeholder',\n  'playsinline',\n  'popover',\n  'popovertarget',\n  'popovertargetaction',\n  'poster',\n  'preload',\n  'pubdate',\n  'radiogroup',\n  'readonly',\n  'rel',\n  'required',\n  'rev',\n  'reversed',\n  'role',\n  'rows',\n  'rowspan',\n  'spellcheck',\n  'scope',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'span',\n  'srclang',\n  'start',\n  'src',\n  'srcset',\n  'step',\n  'style',\n  'summary',\n  'tabindex',\n  'title',\n  'translate',\n  'type',\n  'usemap',\n  'valign',\n  'value',\n  'width',\n  'wrap',\n  'xmlns',\n  'slot',\n] as const);\n\nexport const svg = freeze([\n  'accent-height',\n  'accumulate',\n  'additive',\n  'alignment-baseline',\n  'amplitude',\n  'ascent',\n  'attributename',\n  'attributetype',\n  'azimuth',\n  'basefrequency',\n  'baseline-shift',\n  'begin',\n  'bias',\n  'by',\n  'class',\n  'clip',\n  'clippathunits',\n  'clip-path',\n  'clip-rule',\n  'color',\n  'color-interpolation',\n  'color-interpolation-filters',\n  'color-profile',\n  'color-rendering',\n  'cx',\n  'cy',\n  'd',\n  'dx',\n  'dy',\n  'diffuseconstant',\n  'direction',\n  'display',\n  'divisor',\n  'dur',\n  'edgemode',\n  'elevation',\n  'end',\n  'exponent',\n  'fill',\n  'fill-opacity',\n  'fill-rule',\n  'filter',\n  'filterunits',\n  'flood-color',\n  'flood-opacity',\n  'font-family',\n  'font-size',\n  'font-size-adjust',\n  'font-stretch',\n  'font-style',\n  'font-variant',\n  'font-weight',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyph-name',\n  'glyphref',\n  'gradientunits',\n  'gradienttransform',\n  'height',\n  'href',\n  'id',\n  'image-rendering',\n  'in',\n  'in2',\n  'intercept',\n  'k',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'kerning',\n  'keypoints',\n  'keysplines',\n  'keytimes',\n  'lang',\n  'lengthadjust',\n  'letter-spacing',\n  'kernelmatrix',\n  'kernelunitlength',\n  'lighting-color',\n  'local',\n  'marker-end',\n  'marker-mid',\n  'marker-start',\n  'markerheight',\n  'markerunits',\n  'markerwidth',\n  'maskcontentunits',\n  'maskunits',\n  'max',\n  'mask',\n  'media',\n  'method',\n  'mode',\n  'min',\n  'name',\n  'numoctaves',\n  'offset',\n  'operator',\n  'opacity',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'paint-order',\n  'path',\n  'pathlength',\n  'patterncontentunits',\n  'patterntransform',\n  'patternunits',\n  'points',\n  'preservealpha',\n  'preserveaspectratio',\n  'primitiveunits',\n  'r',\n  'rx',\n  'ry',\n  'radius',\n  'refx',\n  'refy',\n  'repeatcount',\n  'repeatdur',\n  'restart',\n  'result',\n  'rotate',\n  'scale',\n  'seed',\n  'shape-rendering',\n  'slope',\n  'specularconstant',\n  'specularexponent',\n  'spreadmethod',\n  'startoffset',\n  'stddeviation',\n  'stitchtiles',\n  'stop-color',\n  'stop-opacity',\n  'stroke-dasharray',\n  'stroke-dashoffset',\n  'stroke-linecap',\n  'stroke-linejoin',\n  'stroke-miterlimit',\n  'stroke-opacity',\n  'stroke',\n  'stroke-width',\n  'style',\n  'surfacescale',\n  'systemlanguage',\n  'tabindex',\n  'tablevalues',\n  'targetx',\n  'targety',\n  'transform',\n  'transform-origin',\n  'text-anchor',\n  'text-decoration',\n  'text-rendering',\n  'textlength',\n  'type',\n  'u1',\n  'u2',\n  'unicode',\n  'values',\n  'viewbox',\n  'visibility',\n  'version',\n  'vert-adv-y',\n  'vert-origin-x',\n  'vert-origin-y',\n  'width',\n  'word-spacing',\n  'wrap',\n  'writing-mode',\n  'xchannelselector',\n  'ychannelselector',\n  'x',\n  'x1',\n  'x2',\n  'xmlns',\n  'y',\n  'y1',\n  'y2',\n  'z',\n  'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n  'accent',\n  'accentunder',\n  'align',\n  'bevelled',\n  'close',\n  'columnsalign',\n  'columnlines',\n  'columnspan',\n  'denomalign',\n  'depth',\n  'dir',\n  'display',\n  'displaystyle',\n  'encoding',\n  'fence',\n  'frame',\n  'height',\n  'href',\n  'id',\n  'largeop',\n  'length',\n  'linethickness',\n  'lspace',\n  'lquote',\n  'mathbackground',\n  'mathcolor',\n  'mathsize',\n  'mathvariant',\n  'maxsize',\n  'minsize',\n  'movablelimits',\n  'notation',\n  'numalign',\n  'open',\n  'rowalign',\n  'rowlines',\n  'rowspacing',\n  'rowspan',\n  'rspace',\n  'rquote',\n  'scriptlevel',\n  'scriptminsize',\n  'scriptsizemultiplier',\n  'selection',\n  'separator',\n  'separators',\n  'stretchy',\n  'subscriptshift',\n  'supscriptshift',\n  'symmetric',\n  'voffset',\n  'width',\n  'xmlns',\n]);\n\nexport const xml = freeze([\n  'xlink:href',\n  'xml:id',\n  'xlink:title',\n  'xml:space',\n  'xmlns:xlink',\n] as const);\n","import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n  /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n","/* eslint-disable @typescript-eslint/indent */\n\nimport type { TrustedHTML, TrustedTypesWindow } from 'trusted-types/lib';\nimport type { Config, UseProfilesConfig } from './config';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n  addToSet,\n  clone,\n  entries,\n  freeze,\n  arrayForEach,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySplice,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringIndexOf,\n  stringTrim,\n  regExpTest,\n  typeErrorCreate,\n  lookupGetter,\n  create,\n  objectHasOwnProperty,\n} from './utils.js';\n\nexport type { Config } from './config';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5, // Deprecated\n  entityNode: 6, // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n  return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n  trustedTypes: TrustedTypePolicyFactory,\n  purifyHostElement: HTMLScriptElement\n) {\n  if (\n    typeof trustedTypes !== 'object' ||\n    typeof trustedTypes.createPolicy !== 'function'\n  ) {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      },\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn(\n      'TrustedTypes policy ' + policyName + ' could not be created.'\n    );\n    return null;\n  }\n};\n\nconst _createHooksMap = function (): HooksMap {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: [],\n  };\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n  const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n  DOMPurify.version = VERSION;\n\n  DOMPurify.removed = [];\n\n  if (\n    !window ||\n    !window.document ||\n    window.document.nodeType !== NODE_TYPE.document ||\n    !window.Element\n  ) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  let { document } = window;\n\n  const originalDocument = document;\n  const currentScript: HTMLScriptElement =\n    originalDocument.currentScript as HTMLScriptElement;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes,\n  } = window;\n\n  const ElementPrototype = Element.prototype;\n\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName,\n  } = document;\n  const { importNode } = originalDocument;\n\n  let hooks = _createHooksMap();\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported =\n    typeof entries === 'function' &&\n    typeof getParentNode === 'function' &&\n    implementation &&\n    implementation.createHTMLDocument !== undefined;\n\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT,\n  } = EXPRESSIONS;\n\n  let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n    ...TAGS.html,\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.mathMl,\n    ...TAGS.text,\n  ]);\n\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n    ...ATTRS.html,\n    ...ATTRS.svg,\n    ...ATTRS.mathMl,\n    ...ATTRS.xml,\n  ]);\n\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(\n    create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false,\n      },\n    })\n  );\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES: UseProfilesConfig | false = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n    'annotation-xml',\n    'audio',\n    'colgroup',\n    'desc',\n    'foreignobject',\n    'head',\n    'iframe',\n    'math',\n    'mi',\n    'mn',\n    'mo',\n    'ms',\n    'mtext',\n    'noembed',\n    'noframes',\n    'noscript',\n    'plaintext',\n    'script',\n    'style',\n    'svg',\n    'template',\n    'thead',\n    'title',\n    'video',\n    'xmp',\n  ]);\n\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n    'audio',\n    'video',\n    'img',\n    'source',\n    'image',\n    'track',\n  ]);\n\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n    'alt',\n    'class',\n    'for',\n    'id',\n    'label',\n    'name',\n    'pattern',\n    'placeholder',\n    'role',\n    'summary',\n    'title',\n    'value',\n    'style',\n    'xmlns',\n  ]);\n\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n    {},\n    [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n    stringToString\n  );\n\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n    'mi',\n    'mo',\n    'mn',\n    'ms',\n    'mtext',\n  ]);\n\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n    'title',\n    'style',\n    'font',\n    'a',\n    'script',\n  ]);\n\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc: null | Parameters<typeof addToSet>[2] = null;\n\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG: Config | null = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  const formElement = document.createElement('form');\n\n  const isRegexOrFunction = function (\n    testValue: unknown\n  ): testValue is Function | RegExp {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function (cfg: Config = {}): void {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n\n    PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n        ? DEFAULT_PARSER_MEDIA_TYPE\n        : cfg.PARSER_MEDIA_TYPE;\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc =\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n        ? stringToString\n        : stringToLowerCase;\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\n      ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n      : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\n      ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n      : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\n      ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n      : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\n      ? addToSet(\n          clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n          cfg.ADD_URI_SAFE_ATTR,\n          transformCaseFunc\n        )\n      : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\n      ? addToSet(\n          clone(DEFAULT_DATA_URI_TAGS),\n          cfg.ADD_DATA_URI_TAGS,\n          transformCaseFunc\n        )\n      : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\n      ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n      : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\n      ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n      : clone({});\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\n      ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n      : clone({});\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n      ? cfg.USE_PROFILES\n      : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS =\n      cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS =\n      cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n        'boolean'\n    ) {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n        cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, TAGS.text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, TAGS.html);\n        addToSet(ALLOWED_ATTR, ATTRS.html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, TAGS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n    }\n\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n        );\n      }\n\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n        );\n      }\n\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(\n          trustedTypes,\n          currentScript\n        );\n      }\n\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.svgDisallowed,\n  ]);\n  const ALL_MATHML_TAGS = addToSet({}, [\n    ...TAGS.mathMl,\n    ...TAGS.mathMlDisallowed,\n  ]);\n\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function (element: Element): boolean {\n    let parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template',\n      };\n    }\n\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return (\n          tagName === 'svg' &&\n          (parentTagName === 'annotation-xml' ||\n            MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n        );\n      }\n\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (\n        parent.namespaceURI === SVG_NAMESPACE &&\n        !HTML_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      if (\n        parent.namespaceURI === MATHML_NAMESPACE &&\n        !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return (\n        !ALL_MATHML_TAGS[tagName] &&\n        (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n      );\n    }\n\n    // For XHTML and XML documents that support custom namespaces\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      ALLOWED_NAMESPACES[element.namespaceURI]\n    ) {\n      return true;\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function (node: Node): void {\n    arrayPush(DOMPurify.removed, { element: node });\n\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function (name: string, element: Element): void {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element,\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element,\n      });\n    }\n\n    element.removeAttribute(name);\n\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function (dirty: string): Document {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      NAMESPACE === HTML_NAMESPACE\n    ) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty =\n        '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n        dirty +\n        '</body></html>';\n    }\n\n    const dirtyPayload = trustedTypesPolicy\n      ? trustedTypesPolicy.createHTML(dirty)\n      : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT\n          ? emptyHTML\n          : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    const body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(\n        document.createTextNode(leadingWhitespace),\n        body.childNodes[0] || null\n      );\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(\n        doc,\n        WHOLE_DOCUMENT ? 'html' : 'body'\n      )[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function (root: Node): NodeIterator {\n    return createNodeIterator.call(\n      root.ownerDocument || root,\n      root,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_ELEMENT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n        NodeFilter.SHOW_CDATA_SECTION,\n      null\n    );\n  };\n\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function (element: Element): boolean {\n    return (\n      element instanceof HTMLFormElement &&\n      (typeof element.nodeName !== 'string' ||\n        typeof element.textContent !== 'string' ||\n        typeof element.removeChild !== 'function' ||\n        !(element.attributes instanceof NamedNodeMap) ||\n        typeof element.removeAttribute !== 'function' ||\n        typeof element.setAttribute !== 'function' ||\n        typeof element.namespaceURI !== 'string' ||\n        typeof element.insertBefore !== 'function' ||\n        typeof element.hasChildNodes !== 'function')\n    );\n  };\n\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function (value: unknown): value is Node {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n\n  function _executeHooks<\n    T extends\n      | NodeHook\n      | ElementHook\n      | DocumentFragmentHook\n      | UponSanitizeElementHook\n      | UponSanitizeAttributeHook\n  >(hooks: T[], currentNode: Parameters<T>[0], data: Parameters<T>[1]): void {\n    arrayForEach(hooks, (hook) => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function (currentNode: any): boolean {\n    let content = null;\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS,\n    });\n\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.hasChildNodes() &&\n      !_isNode(currentNode.firstElementChild) &&\n      regExpTest(/<[/\\w!]/g, currentNode.innerHTML) &&\n      regExpTest(/<[/\\w!]/g, currentNode.textContent)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any kind of possibly harmful comments */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.nodeType === NODE_TYPE.comment &&\n      regExpTest(/<[/\\w]/g, currentNode.data)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n          regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n        ) {\n          return false;\n        }\n\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n        ) {\n          return false;\n        }\n      }\n\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if (\n      (tagName === 'noscript' ||\n        tagName === 'noembed' ||\n        tagName === 'noframes') &&\n      regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n        content = stringReplace(content, expr, ' ');\n      });\n\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function (\n    lcTag: string,\n    lcName: string,\n    value: string\n  ): boolean {\n    /* Make sure attribute cannot clobber */\n    if (\n      SANITIZE_DOM &&\n      (lcName === 'id' || lcName === 'name') &&\n      (value in document || value in formElement)\n    ) {\n      return false;\n    }\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (\n      ALLOW_DATA_ATTR &&\n      !FORBID_ATTR[lcName] &&\n      regExpTest(DATA_ATTR, lcName)\n    ) {\n      // This attribute is safe\n    } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n      // This attribute is safe\n      /* Otherwise, check the name is permitted */\n    } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n        // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n        (_isBasicCustomElement(lcTag) &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n          ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n            (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n        // Alternative, second condition checks if it's an `is`-attribute, AND\n        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        (lcName === 'is' &&\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n      ) {\n        // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n        // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n      } else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n      // This attribute is safe\n      /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    } else if (\n      regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Keep image data URIs alive if src/xlink:href is allowed */\n      /* Further prevent gadget XSS for dynamically built script tags */\n    } else if (\n      (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n      lcTag !== 'script' &&\n      stringIndexOf(value, 'data:') === 0 &&\n      DATA_URI_TAGS[lcTag]\n    ) {\n      // This attribute is safe\n      /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    } else if (\n      ALLOW_UNKNOWN_PROTOCOLS &&\n      !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Check for binary attributes */\n    } else if (value) {\n      return false;\n    } else {\n      // Binary attributes are safe at this point\n      /* Anything else, presume unsafe, do not add it back */\n    }\n\n    return true;\n  };\n\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function (tagName: string): RegExpMatchArray {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function (currentNode: Element): void {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n    const { attributes } = currentNode;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined,\n    };\n    let l = attributes.length;\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const { name, namespaceURI, value: attrValue } = attr;\n      const lcName = transformCaseFunc(name);\n\n      const initValue = attrValue;\n      let value = name === 'value' ? initValue : stringTrim(initValue);\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Handle attributes that require Trusted Types */\n      if (\n        trustedTypesPolicy &&\n        typeof trustedTypes === 'object' &&\n        typeof trustedTypes.getAttributeType === 'function'\n      ) {\n        if (namespaceURI) {\n          /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n        } else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML': {\n              value = trustedTypesPolicy.createHTML(value);\n              break;\n            }\n\n            case 'TrustedScriptURL': {\n              value = trustedTypesPolicy.createScriptURL(value);\n              break;\n            }\n\n            default: {\n              break;\n            }\n          }\n        }\n      }\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      if (value !== initValue) {\n        try {\n          if (namespaceURI) {\n            currentNode.setAttributeNS(namespaceURI, name, value);\n          } else {\n            /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n            currentNode.setAttribute(name, value);\n          }\n\n          if (_isClobbered(currentNode)) {\n            _forceRemove(currentNode);\n          } else {\n            arrayPop(DOMPurify.removed);\n          }\n        } catch (_) {\n          _removeAttribute(name, currentNode);\n        }\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n    while ((shadowNode = shadowIterator.nextNode())) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg = {}) {\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if ((dirty as Node).nodeName) {\n        const tagName = transformCaseFunc((dirty as Node).nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate(\n            'root node is forbidden and cannot be sanitized in-place'\n          );\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (\n        importedNode.nodeType === NODE_TYPE.element &&\n        importedNode.nodeName === 'BODY'\n      ) {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (\n        !RETURN_DOM &&\n        !SAFE_FOR_TEMPLATES &&\n        !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1\n      ) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n          ? trustedTypesPolicy.createHTML(dirty)\n          : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n    /* Now start iterating over the created document */\n    while ((currentNode = nodeIterator.nextNode())) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Serialize doctype if allowed */\n    if (\n      WHOLE_DOCUMENT &&\n      ALLOWED_TAGS['!doctype'] &&\n      body.ownerDocument &&\n      body.ownerDocument.doctype &&\n      body.ownerDocument.doctype.name &&\n      regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n    ) {\n      serializedHTML =\n        '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? trustedTypesPolicy.createHTML(serializedHTML)\n      : serializedHTML;\n  };\n\n  DOMPurify.setConfig = function (cfg = {}) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n      return index === -1\n        ? undefined\n        : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n\n    return arrayPop(hooks[entryPoint]);\n  };\n\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n\n  return DOMPurify;\n}\n\nexport default createDOMPurify();\n\nexport interface DOMPurify {\n  /**\n   * Creates a DOMPurify instance using the given window-like object. Defaults to `window`.\n   */\n  (root?: WindowLike): DOMPurify;\n\n  /**\n   * Version label, exposed for easier checks\n   * if DOMPurify is up to date or not\n   */\n  version: string;\n\n  /**\n   * Array of elements that DOMPurify removed during sanitation.\n   * Empty if nothing was removed.\n   */\n  removed: Array<RemovedElement | RemovedAttribute>;\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  isSupported: boolean;\n\n  /**\n   * Set the configuration once.\n   *\n   * @param cfg configuration object\n   */\n  setConfig(cfg?: Config): void;\n\n  /**\n   * Removes the configuration.\n   */\n  clearConfig(): void;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty string or DOM node\n   * @param cfg object\n   * @returns Sanitized TrustedHTML.\n   */\n  sanitize(\n    dirty: string | Node,\n    cfg: Config & { RETURN_TRUSTED_TYPE: true }\n  ): TrustedHTML;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty DOM node\n   * @param cfg object\n   * @returns Sanitized DOM node.\n   */\n  sanitize(dirty: Node, cfg: Config & { IN_PLACE: true }): Node;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty string or DOM node\n   * @param cfg object\n   * @returns Sanitized DOM node.\n   */\n  sanitize(dirty: string | Node, cfg: Config & { RETURN_DOM: true }): Node;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty string or DOM node\n   * @param cfg object\n   * @returns Sanitized document fragment.\n   */\n  sanitize(\n    dirty: string | Node,\n    cfg: Config & { RETURN_DOM_FRAGMENT: true }\n  ): DocumentFragment;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty string or DOM node\n   * @param cfg object\n   * @returns Sanitized string.\n   */\n  sanitize(dirty: string | Node, cfg?: Config): string;\n\n  /**\n   * Checks if an attribute value is valid.\n   * Uses last set config, if any. Otherwise, uses config defaults.\n   *\n   * @param tag Tag name of containing element.\n   * @param attr Attribute name.\n   * @param value Attribute value.\n   * @returns Returns true if `value` is valid. Otherwise, returns false.\n   */\n  isValidAttribute(tag: string, attr: string, value: string): boolean;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(entryPoint: BasicHookName, hookFunction: NodeHook): void;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(entryPoint: ElementHookName, hookFunction: ElementHook): void;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(\n    entryPoint: DocumentFragmentHookName,\n    hookFunction: DocumentFragmentHook\n  ): void;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(\n    entryPoint: 'uponSanitizeElement',\n    hookFunction: UponSanitizeElementHook\n  ): void;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(\n    entryPoint: 'uponSanitizeAttribute',\n    hookFunction: UponSanitizeAttributeHook\n  ): void;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: BasicHookName,\n    hookFunction?: NodeHook\n  ): NodeHook | undefined;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: ElementHookName,\n    hookFunction?: ElementHook\n  ): ElementHook | undefined;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: DocumentFragmentHookName,\n    hookFunction?: DocumentFragmentHook\n  ): DocumentFragmentHook | undefined;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: 'uponSanitizeElement',\n    hookFunction?: UponSanitizeElementHook\n  ): UponSanitizeElementHook | undefined;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: 'uponSanitizeAttribute',\n    hookFunction?: UponSanitizeAttributeHook\n  ): UponSanitizeAttributeHook | undefined;\n\n  /**\n   * Removes all DOMPurify hooks at a given entryPoint\n   *\n   * @param entryPoint entry point for the hooks to remove\n   */\n  removeHooks(entryPoint: HookName): void;\n\n  /**\n   * Removes all DOMPurify hooks.\n   */\n  removeAllHooks(): void;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedElement {\n  /**\n   * The element that was removed.\n   */\n  element: Node;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedAttribute {\n  /**\n   * The attribute that was removed.\n   */\n  attribute: Attr | null;\n\n  /**\n   * The element that the attribute was removed.\n   */\n  from: Node;\n}\n\ntype BasicHookName =\n  | 'beforeSanitizeElements'\n  | 'afterSanitizeElements'\n  | 'uponSanitizeShadowNode';\ntype ElementHookName = 'beforeSanitizeAttributes' | 'afterSanitizeAttributes';\ntype DocumentFragmentHookName =\n  | 'beforeSanitizeShadowDOM'\n  | 'afterSanitizeShadowDOM';\ntype UponSanitizeElementHookName = 'uponSanitizeElement';\ntype UponSanitizeAttributeHookName = 'uponSanitizeAttribute';\n\ninterface HooksMap {\n  beforeSanitizeElements: NodeHook[];\n  afterSanitizeElements: NodeHook[];\n  beforeSanitizeShadowDOM: DocumentFragmentHook[];\n  uponSanitizeShadowNode: NodeHook[];\n  afterSanitizeShadowDOM: DocumentFragmentHook[];\n  beforeSanitizeAttributes: ElementHook[];\n  afterSanitizeAttributes: ElementHook[];\n  uponSanitizeElement: UponSanitizeElementHook[];\n  uponSanitizeAttribute: UponSanitizeAttributeHook[];\n}\n\nexport type HookName =\n  | BasicHookName\n  | ElementHookName\n  | DocumentFragmentHookName\n  | UponSanitizeElementHookName\n  | UponSanitizeAttributeHookName;\n\nexport type NodeHook = (\n  this: DOMPurify,\n  currentNode: Node,\n  hookEvent: null,\n  config: Config\n) => void;\n\nexport type ElementHook = (\n  this: DOMPurify,\n  currentNode: Element,\n  hookEvent: null,\n  config: Config\n) => void;\n\nexport type DocumentFragmentHook = (\n  this: DOMPurify,\n  currentNode: DocumentFragment,\n  hookEvent: null,\n  config: Config\n) => void;\n\nexport type UponSanitizeElementHook = (\n  this: DOMPurify,\n  currentNode: Node,\n  hookEvent: UponSanitizeElementHookEvent,\n  config: Config\n) => void;\n\nexport type UponSanitizeAttributeHook = (\n  this: DOMPurify,\n  currentNode: Element,\n  hookEvent: UponSanitizeAttributeHookEvent,\n  config: Config\n) => void;\n\nexport interface UponSanitizeElementHookEvent {\n  tagName: string;\n  allowedTags: Record<string, boolean>;\n}\n\nexport interface UponSanitizeAttributeHookEvent {\n  attrName: string;\n  attrValue: string;\n  keepAttr: boolean;\n  allowedAttributes: Record<string, boolean>;\n  forceKeepAttr: boolean | undefined;\n}\n\n/**\n * A `Window`-like object containing the properties and types that DOMPurify requires.\n */\nexport type WindowLike = Pick<\n  typeof globalThis,\n  | 'DocumentFragment'\n  | 'HTMLTemplateElement'\n  | 'Node'\n  | 'Element'\n  | 'NodeFilter'\n  | 'NamedNodeMap'\n  | 'HTMLFormElement'\n  | 'DOMParser'\n> & {\n  document?: Document;\n  MozNamedAttrMap?: typeof window.NamedNodeMap;\n} & Pick<TrustedTypesWindow, 'trustedTypes'>;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"ais-ux-bundle:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\t\tscript.type = \"module\";\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"externals/ais-ux-bundle/\" + chunkId + \".index.min.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (typeof import.meta.url === \"string\") scriptUrl = import.meta.url\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl + \"../../\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t38792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkais_ux_bundle\"] = self[\"webpackChunkais_ux_bundle\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import {actionTypes} from '@servicenow/ui-core';\n\nconst {COMPONENT_CONNECTED, COMPONENT_DISCONNECTED} = actionTypes;\nconst BEHAVIOR_NAME = 'keyBindings';\n\nconst elementListeners = new Map();\n\n/**\n * This behavior adds keyboard accessibility functionality for Seismic\n * components. You can specify which key events trigger which handlers, and what\n * to do inside of each handler when it detects those key events.\n *\n * After installation import the behavior at the top of your component JS file\n * and register it in your component behaviors list:\n *\n * ```js\n * import keyBindingBehavior from '@servicenow/behavior-key-binding';\n *\n * createCustomElement('sn-example', {\n *   // ...\n *   behaviors: [\n *     {\n *       behavior: keyBindingBehavior,\n *       options: {\n *         keyBindings: {\n *           // accepts a single key value (string) or array of key values (string[])\n *           onEnterKeyPress: 'Enter',\n *           onArrowKeyPress: ['ArrowUp','ArrowDown','ArrowLeft','ArrowRight']\n *         },\n * \t\t   handlers: {\n *           onArrowKeyPress: function(host, event, dispatch, updateState) {\n *             // 'host' is the component that registered this behavior\n *             // 'event' is the native keyboardEvent that was fired\n *             // 'dispatch' can be used for setting properties or firing other actions\n *             // 'updateState' can be used for updating Seismic internal state\n *           },\n *           onEnterKeyPress: function(host, event, dispatch, updateState) {\n *             // since `event` is the native keyboardEvent, you can use any properties or\n * \t\t\t   // methods from the API you wish, e.g. `event.shiftKey` or `event.preventDefault()`\n *           }\n *         }\n *       }\n *     }\n *   ]\n * });\n * ```\n *\n * Please refer to the full list of valid `key` values\n * [on the MDN KeyboardEvents page](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values).\n * Note: the behavior currently fires the handler function on `keydown`\n * **only** - a future enhancement may enable you to specify `keypress` or\n * `keyup` instead. The behavior configuration options only supports detection\n * of single key events, but your handlers can be configured to detect the\n * presence of modifier keys or key combinations.\n *\n * @seismicBehavior keyBindingBehavior\n * @summary Adds keyboard accessibility functionality for Seismic components\n */\nexport default {\n\tname: BEHAVIOR_NAME,\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: ({dispatch, updateState, action: {payload}}) => {\n\t\t\tconst {host, options} = payload;\n\t\t\tconst {keyBindings, handlers} = options;\n\n\t\t\tconst keydownListener = (event) => {\n\t\t\t\tObject.keys(keyBindings).forEach((fn) => {\n\t\t\t\t\t// Supports a simple string (for single key) or array of strings (for multiple keys)\n\t\t\t\t\t// e.g. { 'onTab' : 'Tab' }\n\t\t\t\t\t// e.g. { 'move' : ['ArrowLeft', 'ArrowRight'] }\n\t\t\t\t\tif (\n\t\t\t\t\t\t(Array.isArray(keyBindings[fn]) &&\n\t\t\t\t\t\t\tkeyBindings[fn].includes(event.key)) ||\n\t\t\t\t\t\t(typeof keyBindings[fn] === 'string' &&\n\t\t\t\t\t\t\tkeyBindings[fn] === event.key)\n\t\t\t\t\t) {\n\t\t\t\t\t\thandlers[fn].call(host, host, event, dispatch, updateState);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\n\t\t\telementListeners.set(host, keydownListener);\n\t\t\thost.addEventListener('keydown', keydownListener);\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({action: {payload}}) => {\n\t\t\tconst {host} = payload;\n\t\t\tconst keydownListener = elementListeners.get(host);\n\t\t\tif (keydownListener) {\n\t\t\t\telementListeners.delete(host);\n\t\t\t\thost.removeEventListener('keydown', keydownListener);\n\t\t\t}\n\t\t},\n\t},\n};\n","import { t } from \"sn-translate\";\n\nexport const ROOT_VALUE = \"ROOT\";\nexport const SHOW_LESS = t(\"Show less\");\n\nexport const SELECTOR_TYPE = {\n\tSINGLE: \"single_select\",\n\tMULTIPLE_AND: \"multi_select_and\",\n\tMULTIPLE_OR: \"multi_select_or\",\n\tSINGLE_SELECT: \"single-select\",\n\tMULTIPLE_SELECT: \"multi-select\"\n};\n\nexport const SELECTOR_STATE = {\n\tSELECTED: \"true\",\n\tPARTIAL: \"mixed\",\n\tUNSELECTED: \"false\"\n};\n\nexport const TOGGLE_ACTION = {\n\tSELECTED: \"SELECTED\",\n\tUNSELECTED: \"UNSELECTED\"\n};\n\nexport const DEFAULT_OPTION_LIMIT = 20;\n\nexport const SPACE_KEY = 32;\nexport const ENTER_KEY = 13;\n\nexport const DEFAULT_OVERFLOW_LIMIT = 10;\n","// internal actions\nexport const SECTION_FOLD_TOGGLED = \"SECTION_FOLD_TOGGLED\";\nexport const SELECTION_TOGGLED = \"SELECTION_TOGGLED\";\nexport const SINGLE_SELECT_TOGGLED = \"SINGLE_SELECT_TOGGLED\";\nexport const LINK_CLICKED = \"LINK_CLICKED\";\nexport const SHOW_MORE_CLICKED = \"NOW_BUTTON_BARE#CLICKED\";\n\n// nds actions\nexport const NOW_CHECKBOX_CHECKED_SET = \"NOW_CHECKBOX#CHECKED_SET\";\n\n// externally exposed actions\nexport const SELECTIONS_UPDATED = \"SN-HIERARCHICAL-SELECT#SELECTIONS_UPDATED\";\nexport const TOGGLE_FOCUS_ON_SELECTED_ITEM =\n\t\"SN-HIERARCHICAL-SELECT#TOGGLE_FOCUS_ON_SELECTED_ITEM\";\n","import cloneDeep from \"lodash/cloneDeep\";\nimport get from \"lodash/get\";\nimport {\n\tROOT_VALUE,\n\tSELECTOR_STATE,\n\tSELECTOR_TYPE,\n\tTOGGLE_ACTION,\n\tDEFAULT_OPTION_LIMIT\n} from \"./constants\";\n\nexport const _foundDescendantWithSelectionState = (\n\tselectMetadata,\n\titemValue,\n\tselectorState,\n\toriginalItem\n) => {\n\tif (!selectMetadata || !itemValue || !selectMetadata[itemValue]) {\n\t\treturn false;\n\t}\n\n\tconst item = selectMetadata[itemValue];\n\n\tif (!item.children || item.children.length === 0) {\n\t\tif (itemValue !== originalItem && item.selected === selectorState) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\treturn item.children.some(childId =>\n\t\t_foundDescendantWithSelectionState(\n\t\t\tselectMetadata,\n\t\t\tchildId,\n\t\t\tselectorState,\n\t\t\toriginalItem\n\t\t)\n\t);\n};\n\n// Unselects all siblings.\nexport const _unselectSiblings = (selectMetadata, itemValue) => {\n\tconst parentId =\n\t\titemValue && selectMetadata[itemValue]\n\t\t\t? selectMetadata[itemValue].parent\n\t\t\t: null;\n\tif (\n\t\tparentId &&\n\t\tselectMetadata[parentId] &&\n\t\tselectMetadata[parentId].children\n\t) {\n\t\tconst parentItem = selectMetadata[parentId];\n\t\tparentItem.children.forEach(childId => {\n\t\t\tif (childId !== itemValue && selectMetadata[childId]) {\n\t\t\t\tselectMetadata[childId].selected = SELECTOR_STATE.UNSELECTED;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\n * Updates selected leaves for all items in the tree and returns\n * the final selected leaves for the tree\n */\nexport const _refreshSelectedLeaves = (itemId, selectMetadata) => {\n\tconst item = selectMetadata[itemId];\n\tconst noChildren = !item.children || item.children.length === 0;\n\n\tif (noChildren && item.selected === SELECTOR_STATE.UNSELECTED) {\n\t\treturn [];\n\t}\n\n\tif (noChildren && item.selected === SELECTOR_STATE.SELECTED) {\n\t\treturn [item.value];\n\t}\n\n\tconst selectedLeaves = item.children.reduce(\n\t\t(currentSelectedLeaves, childId) => [\n\t\t\t...currentSelectedLeaves,\n\t\t\t..._refreshSelectedLeaves(childId, selectMetadata)\n\t\t],\n\t\t[]\n\t);\n\n\titem.selectedLeaves = selectedLeaves;\n\treturn selectedLeaves;\n};\n\nconst _refreshSelectedLeavesInRoot = selectMetadata => {\n\tif (!selectMetadata || !selectMetadata[ROOT_VALUE]) {\n\t\treturn;\n\t}\n\n\t_refreshSelectedLeaves(ROOT_VALUE, selectMetadata);\n};\n\nexport const updateSingleSelectState = (selectMetadata, itemValue) => {\n\tconst toggledItemMetadata = selectMetadata[itemValue];\n\tconst rootMetadata = selectMetadata[ROOT_VALUE];\n\tif (toggledItemMetadata) {\n\t\t_unselectSiblings(selectMetadata, itemValue);\n\t\ttoggledItemMetadata.selected =\n\t\t\ttoggledItemMetadata.selected === SELECTOR_STATE.UNSELECTED\n\t\t\t\t? SELECTOR_STATE.SELECTED\n\t\t\t\t: SELECTOR_STATE.UNSELECTED;\n\n\t\trootMetadata.selected = toggledItemMetadata.selected;\n\n\t\trootMetadata.selectedLeaves =\n\t\t\ttoggledItemMetadata.selected === SELECTOR_STATE.UNSELECTED\n\t\t\t\t? []\n\t\t\t\t: [itemValue];\n\t}\n};\n\nexport const _updateDescendantSelectState = (\n\tselectMetadata,\n\titemValue,\n\taction\n) => {\n\tconst item = selectMetadata[itemValue];\n\titem.selected =\n\t\taction === TOGGLE_ACTION.SELECTED\n\t\t\t? SELECTOR_STATE.SELECTED\n\t\t\t: SELECTOR_STATE.UNSELECTED;\n\tif (item.children) {\n\t\titem.children.forEach(childId => {\n\t\t\t_updateDescendantSelectState(selectMetadata, childId, action);\n\t\t});\n\t}\n};\n\nexport const _refreshAncestors = (selectMetadata, itemValue) => {\n\tconst hasUnselectedChildren = _foundDescendantWithSelectionState(\n\t\tselectMetadata,\n\t\titemValue,\n\t\tSELECTOR_STATE.UNSELECTED,\n\t\titemValue\n\t);\n\n\tconst hasSelectedChildren = _foundDescendantWithSelectionState(\n\t\tselectMetadata,\n\t\titemValue,\n\t\tSELECTOR_STATE.SELECTED,\n\t\titemValue\n\t);\n\n\tconst item = selectMetadata[itemValue];\n\n\tif (hasSelectedChildren && hasUnselectedChildren) {\n\t\titem.selected = SELECTOR_STATE.PARTIAL;\n\t} else if (hasSelectedChildren) {\n\t\titem.selected = SELECTOR_STATE.SELECTED;\n\t} else if (hasUnselectedChildren) {\n\t\titem.selected = SELECTOR_STATE.UNSELECTED;\n\t}\n\n\tconst parentId = item.parent;\n\n\tif (itemValue !== ROOT_VALUE) {\n\t\t_refreshAncestors(selectMetadata, parentId);\n\t}\n};\n\nexport const updateSelectStates = (selectMetadata, itemValue, action) => {\n\tif (!selectMetadata || !itemValue || !selectMetadata[itemValue] || !action) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(\n\t\t\t\"One or more params to updateSelectStates is missing or invalid - selectMetadata: \",\n\t\t\tselectMetadata,\n\t\t\t\" itemValue: \",\n\t\t\titemValue,\n\t\t\t\" action: \",\n\t\t\taction\n\t\t);\n\t\treturn selectMetadata;\n\t}\n\tif (itemValue === ROOT_VALUE) {\n\t\t_updateDescendantSelectState(selectMetadata, itemValue, action);\n\t} else {\n\t\tselectMetadata[itemValue].selected =\n\t\t\taction === TOGGLE_ACTION.SELECTED\n\t\t\t\t? SELECTOR_STATE.SELECTED\n\t\t\t\t: SELECTOR_STATE.UNSELECTED;\n\t\t_updateDescendantSelectState(selectMetadata, itemValue, action);\n\t\t_refreshAncestors(selectMetadata, itemValue);\n\t}\n\t_refreshSelectedLeavesInRoot(selectMetadata);\n\treturn selectMetadata;\n};\n\nexport const toggleExpand = (selectMetadata, itemValue) => {\n\tselectMetadata[itemValue].expanded = !selectMetadata[itemValue].expanded;\n};\n\nexport const _getItemType = (selectMetadata, item) => {\n\tif (item && item.type) {\n\t\treturn item.type;\n\t}\n\tif (\n\t\titem.parent &&\n\t\tselectMetadata[item.parent] &&\n\t\tselectMetadata[item.parent].type\n\t) {\n\t\treturn selectMetadata[item.parent].type;\n\t}\n\treturn SELECTOR_TYPE.MULTIPLE_AND;\n};\n\nexport const _getRefToChildren = item => {\n\tif (!item) {\n\t\treturn null;\n\t}\n\n\tif (item.value === ROOT_VALUE) {\n\t\treturn get(item, \"children.data.options\", []);\n\t}\n\n\treturn item.options ? item.options : null;\n};\n\nexport const _getChildrenValues = item => {\n\tconst refToChildren = _getRefToChildren(item);\n\tif (!refToChildren) {\n\t\treturn null;\n\t}\n\n\treturn refToChildren.map(child => child.value);\n};\n\nexport const _getIsExpanded = ({ item, selectMetadata, isInitial }) => {\n\tif (item.value === ROOT_VALUE) {\n\t\treturn true;\n\t}\n\n\tconst isTopLevel = item.level === 1;\n\n\tif (isTopLevel && isInitial) {\n\t\treturn item.index === 0;\n\t}\n\n\tif (!isInitial) {\n\t\treturn Boolean(item.expanded);\n\t}\n\n\tif (item.parent) {\n\t\treturn _getIsExpanded({\n\t\t\titem: selectMetadata[item.parent],\n\t\t\tselectMetadata,\n\t\t\tisInitial\n\t\t});\n\t}\n\n\treturn false;\n};\n\nexport const build = ({ item, selectMetadata, isInitial }) => {\n\tif (!item || !selectMetadata) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(\n\t\t\t\"item: \",\n\t\t\titem,\n\t\t\t\" and selectMetadata: \",\n\t\t\tselectMetadata,\n\t\t\t\" objects expected in build(). One or more of these params are missing or invalid.\"\n\t\t);\n\t\treturn {};\n\t}\n\tconst isRoot = item.value === ROOT_VALUE;\n\tconst type = _getItemType(selectMetadata, item);\n\tconst children = _getChildrenValues(item);\n\tconst expanded = _getIsExpanded({ item, selectMetadata, isInitial });\n\tconst itemValue = item.value ? item.value : item.name;\n\n\tselectMetadata[itemValue] = {\n\t\t...item,\n\t\tlabel: item.label ? item.label : item.name,\n\t\tvalue: itemValue,\n\t\ttype,\n\t\tlevel: item.level,\n\t\tselected: item.selected || SELECTOR_STATE.UNSELECTED,\n\t\texpanded,\n\t\tparent: item.parent,\n\t\tselectedLeaves: [],\n\t\tdata: null,\n\t\toptions: null,\n\t\tchildren\n\t};\n\tif (isRoot) {\n\t\tselectMetadata[itemValue].count = item.data ? item.data.count : 0;\n\t}\n\n\tconst refToChildren = _getRefToChildren(item);\n\tif (refToChildren) {\n\t\trefToChildren.forEach((child, index) =>\n\t\t\tbuild({\n\t\t\t\titem: {\n\t\t\t\t\t...child,\n\t\t\t\t\tparent: itemValue,\n\t\t\t\t\tlevel: item.level + 1,\n\t\t\t\t\tindex\n\t\t\t\t},\n\t\t\t\tselectMetadata,\n\t\t\t\tisInitial\n\t\t\t})\n\t\t);\n\t}\n\treturn selectMetadata;\n};\n\nexport const _mergeMetadata = (selectMetadata, builtData) => {\n\tObject.keys(builtData).forEach(itemValue => {\n\t\tconst selectedItem = selectMetadata[itemValue];\n\t\tif (!selectedItem) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst builtItem = builtData[itemValue];\n\t\tbuiltItem.selected = selectedItem.selected;\n\t\tbuiltItem.expanded = selectedItem.expanded;\n\t});\n\n\t_refreshSelectedLeavesInRoot(builtData);\n\treturn builtData;\n};\n\nexport const _getSelectedFacetFilters = (itemId, selectMetadata) => {\n\tconst leaves = selectMetadata[itemId].selectedLeaves || [];\n\treturn leaves.map(leafId => {\n\t\tconst { value, label } = selectMetadata[leafId];\n\n\t\treturn {\n\t\t\tvalue,\n\t\t\tlabel\n\t\t};\n\t});\n};\n\nexport const _applySelections = (\n\texpectedSelectedItems,\n\tselectMetadata,\n\tonLoad = false\n) => {\n\tconst updatedSelectMetadata = cloneDeep(selectMetadata);\n\t//adding this check to preserve the selection of All single select\n\t//since all is added at component level\n\tif (!onLoad) {\n\t\t// unselect everything before applying selection\n\t\tupdateSelectStates(\n\t\t\tupdatedSelectMetadata,\n\t\t\tROOT_VALUE,\n\t\t\tTOGGLE_ACTION.UNSELECTED\n\t\t);\n\t}\n\n\tif (expectedSelectedItems.length === 0) {\n\t\treturn updatedSelectMetadata;\n\t}\n\n\tlet itemIds = [ROOT_VALUE];\n\n\t// Apply selections from top to bottom level\n\twhile (itemIds.length > 0) {\n\t\tconst [itemId, ...remainingIds] = itemIds;\n\t\tconst item = updatedSelectMetadata[itemId];\n\t\tconst { children } = item;\n\t\tif (expectedSelectedItems.includes(itemId)) {\n\t\t\tupdateSelectStates(updatedSelectMetadata, itemId, TOGGLE_ACTION.SELECTED);\n\t\t}\n\n\t\tif (children && children.length > 0) {\n\t\t\titemIds = [...remainingIds, ...children];\n\t\t} else {\n\t\t\titemIds = [...remainingIds];\n\t\t}\n\t}\n\n\treturn updatedSelectMetadata;\n};\n\nconst _buildDefaultRootItem = (items, type) => ({\n\tvalue: ROOT_VALUE,\n\tchildren: items,\n\tselected: SELECTOR_STATE.UNSELECTED,\n\tselectedLeaves: [],\n\tparent: null,\n\tlevel: 0,\n\ttype\n});\n\nexport const _buildResolvedSelectMetadata = ({\n\tselectMetadata,\n\tselectedItems,\n\titems,\n\ttype,\n\tonLoad\n}) => {\n\tconst rootItem = _buildDefaultRootItem(items, type);\n\tconst isInitial = !selectMetadata || !selectMetadata[ROOT_VALUE];\n\n\t// build metadata\n\tconst builtData = build({\n\t\tselectMetadata: {},\n\t\titem: rootItem,\n\t\tisInitial,\n\t\ttype\n\t});\n\n\tconst mergedMetadata = !isInitial\n\t\t? _mergeMetadata(selectMetadata, builtData)\n\t\t: builtData;\n\n\tconst resolvedData = selectedItems\n\t\t? _applySelections(selectedItems, mergedMetadata, onLoad)\n\t\t: mergedMetadata;\n\n\treturn resolvedData;\n};\n\n// Invoke to build select metadata\nexport const _buildTransformedState = ({ state, properties }, onLoad) => {\n\tconst { selectMetadata } = state;\n\tconst { items, selectedItems, select, optionLimit } = properties;\n\tconst { data } = items;\n\tconst itemsWithOptionLimit = {\n\t\t...items,\n\t\tdata: {\n\t\t\t...data,\n\t\t\toptions: data.options.slice(\n\t\t\t\t0,\n\t\t\t\toptionLimit > 0 ? optionLimit : DEFAULT_OPTION_LIMIT\n\t\t\t)\n\t\t}\n\t};\n\n\tconst resolvedSelectMetadata = _buildResolvedSelectMetadata({\n\t\tselectMetadata,\n\t\tselectedItems,\n\t\titems: itemsWithOptionLimit,\n\t\ttype: select,\n\t\tonLoad\n\t});\n\n\tconst updatedState = {\n\t\t...state,\n\t\tselectMetadata: resolvedSelectMetadata\n\t};\n\n\treturn updatedState;\n};\n","import cloneDeep from \"lodash/cloneDeep\";\nimport {\n\ttoggleExpand,\n\t_buildTransformedState,\n\tupdateSelectStates,\n\tupdateSingleSelectState,\n\t_getSelectedFacetFilters\n} from \"./utils\";\nimport {\n\tSINGLE_SELECT_TOGGLED,\n\tSELECTIONS_UPDATED,\n\tSELECTION_TOGGLED,\n\tTOGGLE_FOCUS_ON_SELECTED_ITEM\n} from \"./actions\";\nimport { ROOT_VALUE, SELECTOR_STATE, TOGGLE_ACTION } from \"./constants\";\n\nexport const componentBootstrappedEffect = ({\n\tstate,\n\tproperties,\n\tupdateState\n}) => {\n\tconst onLoad = true;\n\tconst transformedState = _buildTransformedState(\n\t\t{\n\t\t\tstate,\n\t\t\tproperties\n\t\t},\n\t\tonLoad\n\t);\n\tupdateState(transformedState);\n};\n\nexport const componentPropertyChangedEffect = ({\n\taction,\n\tupdateState,\n\tstate,\n\tproperties\n}) => {\n\tconst onLoad = false;\n\tconst {\n\t\tpayload: { name }\n\t} = action;\n\n\tif (name === \"items\" || name === \"selectedItems\") {\n\t\tconst transformedState = _buildTransformedState(\n\t\t\t{ state, properties },\n\t\t\tonLoad\n\t\t);\n\t\tupdateState({ ...transformedState, showFacetsOverflow: false });\n\t}\n};\n\nexport const nowCheckboxCheckedEffect = ({\n\taction: {\n\t\tpayload: { selected, itemValue, selectMetadata, selectedItems, viaKeyboard }\n\t},\n\tdispatch\n}) => {\n\tconst action =\n\t\tselected === SELECTOR_STATE.SELECTED\n\t\t\t? TOGGLE_ACTION.UNSELECTED\n\t\t\t: TOGGLE_ACTION.SELECTED;\n\n\tdispatch(SELECTION_TOGGLED, {\n\t\titemValue,\n\t\tselectMetadata,\n\t\taction,\n\t\tselectedItems,\n\t\tviaKeyboard\n\t});\n};\n\nexport const linkClickedEffect = ({ action: { payload }, dispatch }) => {\n\tconst {\n\t\tappendedPayload: {\n\t\t\tselectMetadata,\n\t\t\tvalue: itemValue,\n\t\t\tselectedItems,\n\t\t\tviaKeyboard\n\t\t}\n\t} = payload;\n\n\tif (\n\t\tselectedItems.length === 0 ||\n\t\t(selectedItems.length > 0 && itemValue !== selectedItems[0])\n\t) {\n\t\tdispatch(SINGLE_SELECT_TOGGLED, {\n\t\t\tselectMetadata,\n\t\t\titemValue,\n\t\t\tviaKeyboard\n\t\t});\n\t}\n};\n\nexport const selectionToggledEffect = ({\n\taction: {\n\t\tpayload: { itemValue, action, selectMetadata, selectedItems, viaKeyboard }\n\t},\n\tproperties,\n\tupdateState,\n\tdispatch\n}) => {\n\tconst { category, select } = properties;\n\tconst clonedSelectMetadata = cloneDeep(selectMetadata);\n\tconst updatedSelectMetadata = updateSelectStates(\n\t\tclonedSelectMetadata,\n\t\titemValue,\n\t\taction\n\t);\n\n\tconst selectionUpdatePayload = {\n\t\tcategory,\n\t\tselect,\n\t\tselectedFacetFilters: _getSelectedFacetFilters(\n\t\t\tROOT_VALUE,\n\t\t\tupdatedSelectMetadata\n\t\t),\n\t\tselectedItems\n\t};\n\n\tupdateState({\n\t\tselectMetadata: updatedSelectMetadata\n\t});\n\n\tdispatch(TOGGLE_FOCUS_ON_SELECTED_ITEM, {\n\t\ttoggledValue: itemValue,\n\t\tviaKeyboard\n\t});\n\tdispatch(SELECTIONS_UPDATED, selectionUpdatePayload);\n};\n\nexport const singleSelectToggledEffect = ({\n\taction: {\n\t\tpayload: { selectMetadata, itemValue, viaKeyboard }\n\t},\n\tproperties,\n\tupdateState,\n\tdispatch\n}) => {\n\tconst { category, select, selectedItems } = properties;\n\tconst clonedSelectMetadata = cloneDeep(selectMetadata);\n\n\tupdateSingleSelectState(clonedSelectMetadata, itemValue);\n\n\tconst facetFilters = _getSelectedFacetFilters(\n\t\tROOT_VALUE,\n\t\tclonedSelectMetadata\n\t);\n\n\tconst selectionUpdatePayload = {\n\t\tcategory,\n\t\tselect,\n\t\tselectedItems,\n\t\tselectedFacetFilters: facetFilters\n\t};\n\n\tupdateState({\n\t\tselectMetadata: clonedSelectMetadata\n\t});\n\n\tdispatch(TOGGLE_FOCUS_ON_SELECTED_ITEM, {\n\t\ttoggledValue: itemValue,\n\t\tviaKeyboard\n\t});\n\tdispatch(SELECTIONS_UPDATED, selectionUpdatePayload);\n};\n\nexport const sectionFoldToggledEffect = ({\n\taction: {\n\t\tpayload: { itemValue, selectMetadata }\n\t},\n\tupdateState\n}) => {\n\tconst clonedSelectMetadata = cloneDeep(selectMetadata);\n\ttoggleExpand(clonedSelectMetadata, itemValue);\n\tupdateState({\n\t\tselectMetadata: clonedSelectMetadata\n\t});\n};\n\nexport const showMoreClickedEffect = ({\n\tstate: { showFacetsOverflow },\n\tupdateState\n}) => {\n\tupdateState({\n\t\tshowFacetsOverflow: !showFacetsOverflow\n\t});\n};\n","import { actionTypes } from \"@servicenow/ui-core\";\nimport {\n\tSECTION_FOLD_TOGGLED,\n\tSELECTION_TOGGLED,\n\tSINGLE_SELECT_TOGGLED,\n\tNOW_CHECKBOX_CHECKED_SET,\n\tLINK_CLICKED,\n\tSHOW_MORE_CLICKED\n} from \"./actions\";\nimport {\n\tcomponentBootstrappedEffect,\n\tcomponentPropertyChangedEffect,\n\tsectionFoldToggledEffect,\n\tselectionToggledEffect,\n\tsingleSelectToggledEffect,\n\tnowCheckboxCheckedEffect,\n\tlinkClickedEffect,\n\tshowMoreClickedEffect\n} from \"./effects\";\n\nconst { COMPONENT_BOOTSTRAPPED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nexport default {\n\t[COMPONENT_BOOTSTRAPPED]: componentBootstrappedEffect,\n\t[COMPONENT_PROPERTY_CHANGED]: componentPropertyChangedEffect,\n\t[NOW_CHECKBOX_CHECKED_SET]: {\n\t\teffect: nowCheckboxCheckedEffect,\n\t\tstopPropagation: true\n\t},\n\t[SECTION_FOLD_TOGGLED]: {\n\t\teffect: sectionFoldToggledEffect,\n\t\tstopPropagation: true\n\t},\n\t[SELECTION_TOGGLED]: {\n\t\teffect: selectionToggledEffect,\n\t\tstopPropagation: true\n\t},\n\t[SINGLE_SELECT_TOGGLED]: {\n\t\teffect: singleSelectToggledEffect,\n\t\tstopPropagation: true\n\t},\n\t[LINK_CLICKED]: {\n\t\teffect: linkClickedEffect,\n\t\tstopPropagation: true\n\t},\n\t[SHOW_MORE_CLICKED]: {\n\t\teffect: showMoreClickedEffect,\n\t\tstopPropagation: true\n\t}\n};\n","import \"@servicenow/now-icon\";\nimport { t } from \"sn-translate\";\nimport { SECTION_FOLD_TOGGLED } from \"../../actions\";\nimport { SELECTOR_STATE } from \"../../constants\";\n\nconst COLLAPSE_TITLE = t(\"Collapse\");\nconst EXPAND_TITLE = t(\"Expand Section\");\n\nconst TreeExpandButton = ({ dispatch, item, selectMetadata }) => {\n\tconst { expanded, selected, value } = item;\n\tconst icon = expanded ? \"chevron-down-outline\" : \"chevron-right-outline\";\n\n\tconst className =\n\t\tselected === SELECTOR_STATE.UNSELECTED\n\t\t\t? \"tree-expand-button\"\n\t\t\t: \"tree-expand-button-selected\";\n\tconst ariaTitle = expanded ? COLLAPSE_TITLE : EXPAND_TITLE;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={className}\n\t\t\ttitle={ariaTitle}\n\t\t\ttabIndex={-1}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(SECTION_FOLD_TOGGLED, {\n\t\t\t\t\titemValue: value,\n\t\t\t\t\tselectMetadata\n\t\t\t\t});\n\t\t\t}}\n\t\t>\n\t\t\t<div className=\"tree-expand-button-focus\">\n\t\t\t\t<now-icon icon={icon} size=\"md\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default TreeExpandButton;\n","import { LINK_CLICKED } from \"../actions\";\nimport { SPACE_KEY, ENTER_KEY } from \"../constants\";\n\nconst Link = ({ item, selectMetadata, selectedItems, dispatch }) => {\n\tconst { value, label } = item;\n\n\tconst appendedPayload = {\n\t\tselectMetadata,\n\t\tselectedItems,\n\t\tvalue,\n\t\tviaKeyboard: false\n\t};\n\n\tconst clickHandler = event => {\n\t\tif (\n\t\t\tevent.type === \"click\" ||\n\t\t\tevent.keyCode === SPACE_KEY ||\n\t\t\tevent.keyCode === ENTER_KEY\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tappendedPayload.viaKeyboard =\n\t\t\t\tevent.keyCode === SPACE_KEY || event.keyCode === ENTER_KEY;\n\t\t\tdispatch(LINK_CLICKED, { appendedPayload });\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"link\">\n\t\t\t<span>\n\t\t\t\t{/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n\t\t\t\t<a\n\t\t\t\t\trole=\"link\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\ton-click={clickHandler}\n\t\t\t\t\ton-keydown={clickHandler}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</a>\n\t\t\t</span>\n\t\t</div>\n\t);\n};\n\nexport default Link;\n","import \"@servicenow/now-checkbox\";\nimport { SELECTOR_STATE } from \"../constants\";\n\nconst _getCheckedState = selected => {\n\tif (selected === SELECTOR_STATE.SELECTED) {\n\t\treturn true;\n\t}\n\tif (selected === SELECTOR_STATE.PARTIAL) {\n\t\treturn \"indeterminate\";\n\t}\n\treturn false;\n};\n\nconst Checkbox = ({ item, selectMetadata, selectedItems, showCount }) => {\n\tconst { value, label, count, selected, type } = item;\n\n\tconst checked = _getCheckedState(selected);\n\t// Track keyboard state outside the payload object\n\tlet wasKeyboardTriggered = false;\n\n\tconst appendedPayload = {\n\t\ttype,\n\t\tselected,\n\t\titemValue: value,\n\t\tselectMetadata,\n\t\tselectedItems,\n\t\tget viaKeyboard() {\n\t\t\treturn wasKeyboardTriggered;\n\t\t}\n\t};\n\tconst checkboxLabel = showCount && count > 0 ? `${label} (${count}+)` : label;\n\n\treturn (\n\t\t<now-checkbox\n\t\t\tclassName=\"option-checkbox\"\n\t\t\tname={value}\n\t\t\tlabel={checkboxLabel}\n\t\t\tchecked={checked}\n\t\t\tappend-to-payload={appendedPayload}\n\t\t\ton-keydown={event => {\n\t\t\t\tif ([\" \", \"Enter\"].includes(event.key)) {\n\t\t\t\t\twasKeyboardTriggered = true;\n\t\t\t\t}\n\t\t\t}}\n\t\t/>\n\t);\n};\n\nexport default Checkbox;\n","import { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport Link from \"../../views/Link\";\nimport Checkbox from \"../../views/Checkbox\";\nimport TreeExpandButton from \"./TreeExpandButton\";\nimport { SELECTOR_STATE, SELECTOR_TYPE } from \"../../constants\";\n\nconst TreeItem = ({\n\tdispatch,\n\titem,\n\tselectMetadata,\n\tselectedItems,\n\tselect,\n\tshowCount\n}) => {\n\tconst { expanded, children, selected } = item;\n\tconst className =\n\t\tselected === SELECTOR_STATE.SELECTED || selected === SELECTOR_STATE.PARTIAL\n\t\t\t? \"item-selected\"\n\t\t\t: \"item\";\n\n\tconst ariaExpanded =\n\t\tchildren && children.length\n\t\t\t? { \"aria-expanded\": expanded ? \"true\" : \"false\" }\n\t\t\t: {};\n\n\tconst multiSelect = (\n\t\t<Checkbox\n\t\t\tdispatch={dispatch}\n\t\t\titem={item}\n\t\t\tselectMetadata={selectMetadata}\n\t\t\tselectedItems={selectedItems}\n\t\t\tshowCount={showCount}\n\t\t/>\n\t);\n\t{\n\t\tchildren && children.length ? (\n\t\t\t<TreeExpandButton\n\t\t\t\tdispatch={dispatch}\n\t\t\t\titem={item}\n\t\t\t\tselectMetadata={selectMetadata}\n\t\t\t/>\n\t\t) : (\n\t\t\t<Fragment />\n\t\t);\n\t}\n\n\tconst singleSelect = (\n\t\t<Link\n\t\t\tdispatch={dispatch}\n\t\t\titem={item}\n\t\t\tselectMetadata={selectMetadata}\n\t\t\tselectedItems={selectedItems}\n\t\t/>\n\t);\n\n\treturn (\n\t\t<li className={`tree-${className}`} {...ariaExpanded}>\n\t\t\t{select && select === SELECTOR_TYPE.SINGLE ? singleSelect : multiSelect}\n\t\t</li>\n\t);\n};\n\nexport default TreeItem;\n","import { TreeItem } from \"../treeMode/views\";\n\nconst Item = ({\n\tdispatch,\n\titem,\n\tselectMetadata,\n\tselectedItems,\n\tselect,\n\tshowCount\n}) => (\n\t<TreeItem\n\t\tdispatch={dispatch}\n\t\titem={item}\n\t\tselectMetadata={selectMetadata}\n\t\tselectedItems={selectedItems}\n\t\tselect={select}\n\t\tshowCount={showCount}\n\t/>\n);\n\nexport default Item;\n","const MAX_LEVEL = 4; // Max nesting level before no indentation is applied\nconst MAX_CHILDREN_LENGTH = 12; // Max children before allowing scrolling\n\nconst _getTreeClassName = (level, children) => {\n\tconst base = \"tree-children\";\n\tconst indentLevel = level < MAX_LEVEL;\n\tconst isTopLevel = level === 0;\n\tconst levelModifier = isTopLevel ? \"-first-level\" : \"\";\n\tconst indentModifier = indentLevel ? \"\" : \"-no-indent\";\n\tconst scrollModifier =\n\t\tisTopLevel && children && children.length > MAX_CHILDREN_LENGTH\n\t\t\t? \"-scroll\"\n\t\t\t: \"\";\n\n\treturn `${base}${levelModifier}${indentModifier}${scrollModifier}`;\n};\n\nexport default _getTreeClassName;\n","import { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport \"@servicenow/now-collapse\";\nimport Item from \"./Item\";\nimport _getTreeClassName from \"../treeMode/utils/treeClassName\";\n\nconst Tree = ({\n\tselectMetadata,\n\tdispatch,\n\titem,\n\tselectedItems,\n\tselect,\n\tshowCount\n}) => {\n\tconst { level, children, expanded, label, value } = item;\n\tconst hasChildren = Array.isArray(children) && children.length > 0;\n\tconst childrenClassName = _getTreeClassName(level, children);\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<Item\n\t\t\t\titem={item}\n\t\t\t\tdispatch={dispatch}\n\t\t\t\tselectMetadata={selectMetadata}\n\t\t\t\tselectedItems={selectedItems}\n\t\t\t\tselect={select}\n\t\t\t\tshowCount={showCount}\n\t\t\t/>\n\t\t\t{hasChildren ? (\n\t\t\t\t<li>\n\t\t\t\t\t<now-collapse expanded={expanded}>\n\t\t\t\t\t\t<ul className={childrenClassName} aria-labelledby={label}>\n\t\t\t\t\t\t\t{children.map(childKey => {\n\t\t\t\t\t\t\t\tconst child = selectMetadata[childKey];\n\t\t\t\t\t\t\t\tif (child) {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Tree\n\t\t\t\t\t\t\t\t\t\t\tkey={value}\n\t\t\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\t\t\tselectMetadata={selectMetadata}\n\t\t\t\t\t\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\t\t\t\t\t\tselect={select}\n\t\t\t\t\t\t\t\t\t\t\tshowCount={showCount}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn <Fragment />;\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</now-collapse>\n\t\t\t\t</li>\n\t\t\t) : (\n\t\t\t\t<Fragment />\n\t\t\t)}\n\t\t</Fragment>\n\t);\n};\n\nexport default Tree;\n","import { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport { cloneDeep, isEmpty } from \"lodash\";\nimport { t } from \"sn-translate\";\nimport {\n\tDEFAULT_OVERFLOW_LIMIT,\n\tROOT_VALUE,\n\tSELECTOR_TYPE,\n\tSHOW_LESS\n} from \"./constants\";\nimport Tree from \"./views/Tree\";\nimport _getTreeClassName from \"./treeMode/utils/treeClassName\";\n\nconst view = (\n\t{ selectMetadata, showFacetsOverflow, properties },\n\t{ dispatch }\n) => {\n\tconst { name, select, selectedItems, showCount } = properties;\n\tconst root = selectMetadata && selectMetadata[ROOT_VALUE];\n\tif (!root || !root.children) return <Fragment />;\n\n\tconst { level, children } = root;\n\tconst className = _getTreeClassName(level, children);\n\tlet options = [];\n\n\tfor (const [id, item] of Object.entries(selectMetadata)) {\n\t\tif (id !== ROOT_VALUE && item.type === SELECTOR_TYPE.SINGLE) {\n\t\t\toptions.push({\n\t\t\t\tid: id,\n\t\t\t\tlabel: item.label\n\t\t\t});\n\t\t}\n\t}\n\n\tconst facetsOverflow =\n\t\t!isEmpty(root?.children) && root.children?.length > DEFAULT_OVERFLOW_LIMIT\n\t\t\t? root.children.length - DEFAULT_OVERFLOW_LIMIT\n\t\t\t: 0;\n\tconst showOverflowButton = facetsOverflow > 0;\n\tconst facetsOverflowLabel =\n\t\tshowOverflowButton && showFacetsOverflow\n\t\t\t? SHOW_LESS\n\t\t\t: t(\"Show more ({0})\", facetsOverflow);\n\n\tconst showMoreButton = showOverflowButton ? (\n\t\t<now-button-bare\n\t\t\tclassName=\"facets-show-more-button\"\n\t\t\tlabel={facetsOverflowLabel}\n\t\t\tvariant=\"tertiary\"\n\t\t\tsize=\"sm\"\n\t\t/>\n\t) : null;\n\n\tlet optionsToShow = cloneDeep(root.children);\n\tif (!showFacetsOverflow) {\n\t\toptionsToShow = optionsToShow.slice(0, DEFAULT_OVERFLOW_LIMIT);\n\t}\n\n\treturn (\n\t\t<div className=\"tree\">\n\t\t\t<ul className={className} aria-label={name}>\n\t\t\t\t{optionsToShow.map(childId => {\n\t\t\t\t\tconst child = selectMetadata[childId];\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Tree\n\t\t\t\t\t\t\tkey={child.value}\n\t\t\t\t\t\t\tselectMetadata={selectMetadata}\n\t\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\tselectedItems={selectedItems}\n\t\t\t\t\t\t\tselect={select}\n\t\t\t\t\t\t\tshowCount={showCount}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t\t{showMoreButton}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport rtlBehavior from \"@servicenow/behavior-rtl\";\nimport { DEFAULT_OPTION_LIMIT, SELECTOR_TYPE } from \"./constants\";\nimport actionHandlers from \"./actionHandlers\";\nimport styles from \"./index.scss\";\nimport view from \"./view\";\n\n/**\n * Seismic component that allows users to select options from a checkbox list of multi_select_and or radio buttons for single_select options.\n * This component also supports hierarchical relationships between options, where one option can have child options and so on.\n *\n * ```jsx\n * <sn-hierarchical-select\n *  select='multi_select_and'\n *  items={\n *      data: {\n *          options: [\n *              {\n *                  label: 'Ron Kettering',\n *                  value: 'Ron Kettering',\n *                  options: null,\n *              },\n *              {\n *                  label: 'Boris Catino',\n *                  value: 'Boris Catino',\n *                  options: null,\n *              },\n *          ],\n *      }\n *  category='Author'\n *  optionLimit={2},\n * />\n * ```\n *\n * @seismicElement sn-hierarchical-select\n * @summary Seismic component that allows users to select options from a checkbox list of multi_select_and or single_select options.\n */\ncreateCustomElement(\"sn-hierarchical-select\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tstyles,\n\tinitialState: {\n\t\tselectMetadata: null,\n\t\tshowFacetsOverflow: false\n\t},\n\tproperties: {\n\t\t/**\n\t\t * This property contains the items that would be displayed as a checkbox list.\n\t\t * @type {object}\n\t\t */\n\t\titems: {\n\t\t\tdefault: {},\n\t\t\tcast: \"object\",\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the name of the facet for A11y reasons\n\t\t * @type {string}\n\t\t */\n\t\tname: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the category for the option items, this is particulary helpful\n\t\t * in cases where a orchestrator component manages multiple instances of sn-hierarchical-select component.\n\t\t * @type {string}\n\t\t */\n\t\tcategory: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the options that should be selected on initial render.\n\t\t * @type {array}\n\t\t */\n\t\tselectedItems: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies whether the checkbox options should be single select or multi select.\n\t\t * @type {string}\n\t\t */\n\t\tselect: {\n\t\t\tdefault: SELECTOR_TYPE.SINGLE,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the number of options that are rendered.\n\t\t * @type {string}\n\t\t */\n\t\toptionLimit: {\n\t\t\tdefault: DEFAULT_OPTION_LIMIT,\n\t\t\tschema: {\n\t\t\t\ttype: \"integer\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the nowId for the container element.\n\t\t */\n\t\tcontainerId: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies whether the count of options should be displayed.\n\t\t * @type {boolean}\n\t\t */\n\t\tshowCount: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t}\n\t},\n\tbehaviors: [{ behavior: rtlBehavior }],\n\tactionHandlers,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when a user selects any of the options.\n\t\t * @type {{category: string, select: string, selectedItems: array, selectedFacetFilters: array}}\n\t\t */\n\t\t\"SN-HIERARCHICAL-SELECT#SELECTIONS_UPDATED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tcategory: { type: \"string\" },\n\t\t\t\t\tselect: { type: \"string\" },\n\t\t\t\t\tselectedItems: { type: \"array\" },\n\t\t\t\t\tselectedFacetFilters: { type: \"array\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when a user clicks on one of the facet item\n\t\t * @type {{toggledValue: string}}\n\t\t */\n\t\t\"SN-HIERARCHICAL-SELECT#TOGGLE_FOCUS_ON_SELECTED_ITEM\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\ttoggledValue: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n","const ONE_MINUTE = 60000; // milliseconds\n\nconst getUserInfo = location => ({\n    userSessionId: getUserSessionId(),\n    userLanguage: getUserLanguage(),\n    browserInfo: getUserBrowserInfo(),\n    latitude: location.hasOwnProperty('latitude') ? location.latitude : null,\n    longitude: location.hasOwnProperty('longitude') ? location.longitude : null,\n});\n\nconst getUserSessionId = () => {\n    return window.NOW && window.NOW.session_id ? window.NOW.session_id : '';\n};\n\nconst getUserLanguage = () => {\n    if (window.NOW && window.NOW.language && window.NOW.language != '')\n        return window.NOW.language;\n\n    return '';\n};\n\nconst getUserBrowserInfo = () => {\n    return window.navigator.userAgent;\n};\n\nasync function fetchUserLocationAsync() {\n    return new Promise((resolve, reject) => {\n        const onSuccess = pos => {\n            resolve({\n                latitude: pos.coords.latitude,\n                longitude: pos.coords.longitude,\n            });\n        };\n\n        const onError = () => {\n            reject({ latitude: null, longitude: null });\n        };\n\n        window.navigator.geolocation.getCurrentPosition(onSuccess, onError, {\n            enableHighAccuracy: true,\n            timeout: ONE_MINUTE,\n        });\n    });\n}\n\nexport { getUserInfo, fetchUserLocationAsync };\n","const API_URL = '/api/now/analytics/events';\nconst queueLimit = 100;\nconst defaultTimeout = 1000;\n\nlet eventQueue = [];\nlet timer = null;\nlet pendingCalls = [];\nlet eventsRequiringPrecedingCallCompletion = [];\n\nconst postAllEvents = () => {\n    eventQueue.forEach(function (event) {\n        postEvent(event);\n    });\n\n    eventQueue = [];\n    timer = null;\n};\n\nconst processCallCompletion = (event, request) => {\n    // Remove the completed call from the list of pending calls\n    pendingCalls.splice(pendingCalls.indexOf(event), 1);\n\n    // For the events that are depending on preceding calls finishing,\n    // check each one and see if the calls it's dependent on have finishes.\n    // If so, process it.\n    eventsRequiringPrecedingCallCompletion.forEach((queuedEvent) => {\n        let stillWaiting = false;\n        queuedEvent.precedingCalls.forEach((precedingCall) => {\n            if (pendingCalls.includes(precedingCall)) stillWaiting = true;\n        });\n        if (!stillWaiting) {\n            eventsRequiringPrecedingCallCompletion.splice(\n                eventsRequiringPrecedingCallCompletion.indexOf(queuedEvent),\n                1\n            );\n            postEvent(queuedEvent);\n        }\n    });\n\n    // If a callback was provided on the config, call it now that the event has finished being processed\n    const { config } = event;\n    const { callback } = config;\n    if (callback) callback(request);\n};\n\nconst postEvent = (event, isRetry = false) => {\n    const { eventAction, eventPriority, eventBody, config } = event;\n    const { requirePrecedingEventCompletion, callback, trackAsync } = config;\n\n    if (requirePrecedingEventCompletion && pendingCalls.length > 0) {\n        event.precedingCalls = [...pendingCalls];\n        eventsRequiringPrecedingCallCompletion.push(event);\n        return;\n    }\n\n    const xmlhttp = new XMLHttpRequest();\n    const queryParams = `?sysparm_event_action=${eventAction}&sysparm_event_priority=${eventPriority}&sysparm_track_async=${trackAsync}`;\n\n    xmlhttp.open('POST', API_URL + queryParams);\n    xmlhttp.setRequestHeader('Content-Type', 'application/json');\n\n    if (window.g_ck) xmlhttp.setRequestHeader('X-UserToken', g_ck);\n\n    xmlhttp.onreadystatechange = () => {\n        // Call a function when the state changes.\n        if (xmlhttp.readyState === XMLHttpRequest.DONE) {\n            // Request finished\n            if (xmlhttp.status === 401) {\n                if (isRetry) {\n                    console.warn('Received 401 on retry attempt. Aborting retry for event:', eventAction);\n                } else {\n                    const newToken = xmlhttp.getResponseHeader('X-UserToken-Response');\n                    if (newToken) {\n                        if (newToken !== window.g_ck) {\n                            console.warn(\"Received 401 while posting event. Updating token and retrying request\");\n                            window.g_ck = newToken;\n                            postEvent({...event}, true);\n                            return;\n                        } else {\n                            console.warn('Received 401 while posting event but token in response matches current token. Will not retry.');\n                        }\n                    } else {\n                        console.warn('Received 401 without a new token in X-UserToken-Response header while posting event. Will not retry.');\n                    }\n                }\n            }\n            processCallCompletion(event, xmlhttp);\n        }\n    };\n    \n    if (!isRetry) pendingCalls.push(event);\n    xmlhttp.send(JSON.stringify(eventBody));\n};\n\nconst pushEvent = (event, timeout = defaultTimeout) => {\n    eventQueue.push(event);\n    if (eventQueue.length === queueLimit || timeout <= 0) {\n        postAllEvents();\n    } else {\n        // timer is already present we just need to add to the queue\n        // until it flushes itself\n        if (timer) return;\n\n        timer = setTimeout(function () {\n            postAllEvents();\n        }, timeout);\n    }\n};\n\nexport default pushEvent;\n","import { getUserInfo, fetchUserLocationAsync } from './user';\nimport pushEvent from './queue';\n\n/**\n * Glide Signals to track events and collect user analytics\n *\n * #trackEvent(action, priority, eventModel, config) allows to send a custom event to Glide Signals\n */\nconst GlideSignals = {\n    _location: {},\n    priority: {\n        INFO: 'INFO',\n        WARN: 'WARN',\n        ERROR: 'ERROR',\n    },\n\n    postContextProperty(propertyName, propertyVal, isRetry = false) {\n        const xmlhttp = new XMLHttpRequest();\n        const uri = '/api/now/analytics/updateContext';\n\n        const body = {\n            sys_context_property_name: propertyName,\n            sys_context_property_value: propertyVal,\n        };\n        xmlhttp.open('POST', uri);\n        xmlhttp.setRequestHeader('Content-Type', 'application/json');\n\n        if (window.g_ck) xmlhttp.setRequestHeader('X-UserToken', g_ck);\n\n        xmlhttp.onreadystatechange = () => {\n            if (xmlhttp.readyState === XMLHttpRequest.DONE) {\n                if (xmlhttp.status === 401) {\n                    if (isRetry) {\n                        console.warn('Received 401 on retry attempt while updating context property:', propertyName);\n                    } else {\n                        const newToken = xmlhttp.getResponseHeader('X-UserToken-Response');\n                        if (newToken) {\n                            if (newToken !== window.g_ck) {\n                                console.warn(\"Received 401 while updating context property. Updating token and retrying request\");\n                                window.g_ck = newToken;\n                                this.postContextProperty(propertyName, propertyVal, true);\n                                return;\n                            } else {\n                                console.warn('Received 401 while updating context property but token in response matches current token. Will not retry.');\n                            }\n                        } else {\n                            console.warn('Received 401 without a new token in X-UserToken-Response header while updating context property. Will not retry.');\n                        }\n                    }\n                }\n            }\n        };\n\n        xmlhttp.send(JSON.stringify(body));\n    },\n\n    /**\n     * Post an event to the back end Signals REST API\n     *\n     * @param eventAction {string} the name of the event (e.g. SEARCH_EVENT, GENIUS_RESULT_EVENT)\n     * @param eventPriority {string} The priority - see the #priority object above\n     * @param eventModel {Object} the payload containing attributes describing the event being logged\n     * @param config {Object} Optional param to control when and how the event is logged. You can set\n     *                  the following on the config:\n     *                      requirePrecedingEventCompletion: boolean - event should only be logged once all\n     *                          preceding events have finishing being logged\n     *                      trackAsync: boolean - Insert the event in the backend staging table (sys_signal_event_queue)\n     *                          to be fully processed later by a scheduled job\n     *                      callback: function - Provides a way to be notified when the event has been logged. The\n     *                          XMLHttpRequest will be passed to the callback.\n     *                      delayInMs: int - Duration to queue the event before processing - default is 1000\n     */\n    trackEvent(eventAction, eventPriority, eventModel, config = {}) {\n        const user = getUserInfo(this._location);\n        const { delay } = config;\n        pushEvent(\n            {\n                eventAction,\n                eventPriority,\n                eventBody: {\n                    ...eventModel,\n                    ...user,\n                },\n                config: config || {},\n            },\n            delay\n        );\n    },\n\n    async init() {\n        try {\n            this._location = await fetchUserLocationAsync();\n            if (this._location.hasOwnProperty('latitude')) {\n                this.postContextProperty('latitude', this._location.latitude);\n            }\n            if (this._location.hasOwnProperty('longitude')) {\n                this.postContextProperty('longitude', this._location.longitude);\n            }\n        } catch (e) {}\n    },\n};\n\nexport default GlideSignals;\n","import GlideSignals from './src/signals';\n\nexport default GlideSignals;","import GlideSignals from \"sn-signals\";\nimport { t } from \"sn-translate\";\n\nexport const MODE = {\n\tDRILL: \"drill\",\n\tTREE: \"tree\"\n};\n\nexport const SELECTOR_TYPE = {\n\tSINGLE: \"single_select\",\n\tMULTIPLE_AND: \"multi_select_and\",\n\tMULTIPLE_OR: \"multi_select_or\",\n\tMULTIPLE_SELECT_HYPHEN: \"multi-select\",\n\tSINGLE_SELECT_HYPHEN: \"single-select\"\n};\n\nexport const DEFAULT_LABEL = t(\"Filters\");\n\nexport const SIZE = {\n\tSMALL: \"sm\",\n\tLARGE: \"lg\"\n};\n\nexport const APPLIED_FACETS_TRUNCATION = 6;\n\nexport const APPLIED_FACET_LIST = {\n\tEXPAND: \"expand\",\n\tCOLLAPSE: \"collapse\"\n};\n\nexport const USER_FACET_CONFIG_SYS_ID = \"662359bd29021110f8770358248b49c8\";\nexport const CAT_ITEM_CONFIG_SYS_ID = \"1f369d7129421110f8770358248b49a5\";\n\nexport const SPACE_KEY = 32;\nexport const ENTER_KEY = 13;\nexport const CLEAR_ALL_LABEL = t(\"Clear all\");\nexport const CLEAR_ALL_WCAG_LABEL = t(\"Clear all Filters\");\nexport const CLEAR_LABEL = t(\"Clear\");\nexport const SHOW_FEWER_LABEL = t(\"Show fewer\");\nexport const COLLAPSE_LABEL = t(\"Collapse Section\");\nexport const EXPAND_LABEL = t(\"Expand Section\");\nexport const FACET_IDENTIFIER = \"FACET\";\nexport const HIDE_FILTERS_LABEL = t(\"Hide filters\");\n\nexport const INFO_EVENT = GlideSignals.priority.INFO;\nexport const SEISMIC_OR_MOBILE_APPLICATION = \"SeismicOrMobileApplication\";\nexport const SEARCH_REFINED_EVENT = \"SEARCH_REFINED\";\nexport const UP_ARROW_KEY = 38;\nexport const DOWN_ARROW_KEY = 40;\n\nexport const FOCUS_TARGET = {\n\tPILL: \"pill\",\n\tACCORDION: \"accordion\"\n};\n\nexport const TRANSLATION_QUERY = `query($labels: [String!]!)\n{\n\tGlideDomain_Query {\n\t\tgetMessages(key: $labels) {\n\t\t\tkey\n\t\t\tmessage\n\t\t}\n\t}\n}`;\n\nexport const RANGE_FACET_REGEX = /FACET\\(RANGE/;\n\n//To default selection of All radio button\nexport const SINGLE_SELECT_ALL = {\n\tLABEL: t(\"All\"),\n\tID: \"single_select_all\"\n};\n\nexport const ACCORDION_SUBLABEL_AND_FACET = t(\"Contains all selected\");\nexport const ACCORDION_SUBLABEL_OR_FACET = t(\"Contains any selected\");\nexport const STACKED_PILL_OR_FACET_LABEL = t(\"Any of the following selected:\");\nexport const STACKED_PILL_AND_FACET_LABEL = t(\"All of the following selected:\");\nexport const STACKED_TYPE = \"jsx\";\nexport const FACET_TYPE = {\n\tOR: \"OR\",\n\tAND: \"AND\"\n};\n\nexport const SOURCE_FACET_TYPE = SELECTOR_TYPE.MULTIPLE_OR;\nexport const SOURCE_FACET_LABEL = t(\"Source\");\nexport const SOURCE_FACET_CONFIG_ID = \"sources\";\nexport const SOURCE_FACET_OPTION_LIMIT = 10;\n","import { isEmpty } from \"lodash\";\nimport {\n\tAPPLIED_FACETS_TRUNCATION,\n\tFACET_IDENTIFIER,\n\tUP_ARROW_KEY,\n\tDOWN_ARROW_KEY,\n\tRANGE_FACET_REGEX,\n\tSOURCE_FACET_TYPE,\n\tSOURCE_FACET_LABEL,\n\tSOURCE_FACET_CONFIG_ID,\n\tSOURCE_FACET_OPTION_LIMIT,\n\tSELECTOR_TYPE\n} from \"./constants\";\n\nconst _getValues = options => {\n\tif (Array.isArray(options)) {\n\t\treturn options.reduce(\n\t\t\t(acc, option) => acc.concat(option.value, _getValues(option.options)),\n\t\t\t[]\n\t\t);\n\t}\n\treturn [];\n};\n\nexport const _getSelectedFilters = (options, selectedOptions) => {\n\tif (selectedOptions.length === 0) return [];\n\tconst appliedFacetFilters = selectedOptions.map(option => option.facetFilter);\n\n\tconst values = _getValues(options);\n\treturn values.filter(option => appliedFacetFilters.includes(option));\n};\n\n/**\n * Build a metadata map for every facet panel\n *\n * What it does\n *  - Grabs any saved facet state from localStorage so we remember\n *    what the user last did.\n *  - Figures out which facet should start **expanded**:\n *      • the very first facet that actually has options, **or**\n *      • any multi‑select facet that already has something picked.\n *  - Marks a facet **disabled** when it has zero options.\n */\nconst _buildFacetMetadata = (facets, facetsMetadata, selectedOptions) => {\n\tconst updatedFacetsMetadata = {};\n\n\tconst firstExpandableId = facets.findIndex(\n\t\tfacet => facet?.data?.options?.length > 0\n\t);\n\n\tfacets.forEach((facet, index) => {\n\t\tlet {\n\t\t\tfacetConfigSysId,\n\t\t\tdata: { options },\n\t\t\ttype,\n\t\t\tisSortBy\n\t\t} = facet;\n\n\t\tlet storedFacet = JSON.parse(\n\t\t\twindow.localStorage.getItem(_getStorageKey(facetConfigSysId))\n\t\t);\n\t\tif (storedFacet && storedFacet.data) {\n\t\t\toptions = _mergeFacets(storedFacet, facet).data.options;\n\t\t}\n\n\t\tupdatedFacetsMetadata[facetConfigSysId] = {\n\t\t\texpanded:\n\t\t\t\tindex === firstExpandableId ||\n\t\t\t\t(type !== SELECTOR_TYPE.SINGLE &&\n\t\t\t\t\t_getSelectedFilters(options, selectedOptions).length > 0)\n\t\t\t\t\t? true\n\t\t\t\t\t: false,\n\t\t\tselectedFacetFilters: _getSelectedFilters(options, selectedOptions),\n\t\t\tfacetType: type,\n\t\t\tdisabled: options?.length === 0,\n\t\t\tisSortBy\n\t\t};\n\t});\n\n\treturn updatedFacetsMetadata;\n};\n\nexport const _buildState = ({ state, properties }) => {\n\tconst { facetsMetadata } = state;\n\n\tconst { facets, selectedOptions } = properties;\n\tconst updatedFacetsMetadata = _buildFacetMetadata(\n\t\tfacets,\n\t\tfacetsMetadata,\n\t\tselectedOptions\n\t);\n\n\treturn {\n\t\t...state,\n\t\tfacetsMetadata: updatedFacetsMetadata\n\t};\n};\n\n// returns true if any of the facet items are selected\nexport const _anyItemsSelected = (facetsMetadata, appliedFacetFilters) => {\n\tconst selectionsFromMetadata = Object.keys(facetsMetadata).some(\n\t\tcategory => facetsMetadata[category]?.selectedFacetFilters?.length > 0\n\t);\n\n\tconst appliedFilter =\n\t\tappliedFacetFilters &&\n\t\tappliedFacetFilters.map(filter => filter.facetFilter);\n\tconst appliedFiltersReturned = appliedFilter && appliedFilter.length > 0;\n\n\treturn selectionsFromMetadata || appliedFiltersReturned;\n};\n\n// returns the number of selected facet items for a category\nexport const _selectedItemsLength = (facetsMetadata, category) => {\n\treturn facetsMetadata[category]?.selectedFacetFilters?.length || 0;\n};\n\nconst _getLabelsFromFilters = (facetFilters, facets) => {\n\tif (!Array.isArray(facetFilters) || !facetFilters) {\n\t\treturn [];\n\t}\n\tconst regExp = /FACET\\(\"*([^)\"]+)\"*\\)/;\n\treturn facetFilters.map(filter => {\n\t\tconst facet = filter[0];\n\t\tconst applied = filter[1];\n\n\t\t// Source facets labels should come from the source facet\n\t\tconst sourceFacet = facets?.find(\n\t\t\tf => f.facetConfigSysId === SOURCE_FACET_CONFIG_ID\n\t\t);\n\t\tif (sourceFacet) {\n\t\t\tconst sourceOption = sourceFacet.data.options.find(\n\t\t\t\toption => option.value === facet\n\t\t\t);\n\t\t\tif (sourceOption) return [sourceOption.label, applied, facet];\n\t\t}\n\n\t\tif (facet.includes(FACET_IDENTIFIER)) {\n\t\t\tif (RANGE_FACET_REGEX.test(facet)) {\n\t\t\t\treturn [_getLabelFromRangeFilter(facet, facets), applied, facet];\n\t\t\t}\n\t\t\treturn [facet.match(regExp)[1], applied, facet];\n\t\t}\n\t\treturn [_getLabelFromRangeFilter(facet, facets), applied, facet];\n\t});\n};\n\nexport const _getLabelFromRangeFilter = (filter, facets) => {\n\tlet rangeFilterLabel = \"\";\n\tconst storageKey = _getRangeFacetStorageKey(filter);\n\tconst cachedLabel = window.localStorage.getItem(storageKey);\n\n\tif (!isEmpty(cachedLabel)) {\n\t\trangeFilterLabel = cachedLabel.toString();\n\t\treturn rangeFilterLabel;\n\t} else {\n\t\tfacets.forEach(facet => {\n\t\t\tconst facetOptions = facet?.data?.options;\n\t\t\tif (facetOptions.length > 0) {\n\t\t\t\tconst match = facetOptions.find(option => option.value === filter);\n\t\t\t\tif (!isEmpty(match) && match.label) rangeFilterLabel = match.label;\n\t\t\t}\n\t\t});\n\t\twindow.localStorage.setItem(storageKey, rangeFilterLabel);\n\t\treturn rangeFilterLabel;\n\t}\n};\n\nexport const _getAppliedFacetLabelsByType = (\n\tappliedFacetFilters,\n\tfacets,\n\tfacetType\n) => {\n\tconst filterLabelsApplied = _getFacetFiltersBasedOnType(\n\t\tappliedFacetFilters,\n\t\tfacetType,\n\t\tfacets\n\t);\n\n\treturn filterLabelsApplied;\n};\n\nexport const _getFacetFilterIndex = (appliedFilters, pillLabel, facetValue) => {\n\tconst regExp = /FACET\\(\"*([^)\"]+)\"*\\)/;\n\n\tfor (let index in appliedFilters) {\n\t\tif (RANGE_FACET_REGEX.test(appliedFilters[index])) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tconst match = appliedFilters[index].match(regExp);\n\t\t\tif (match && match.length >= 2 && match[1] === pillLabel) return index;\n\t\t\treturn appliedFilters.indexOf(facetValue);\n\t\t}\n\t}\n};\n\nexport const _getRangeFacetFilterIndex = (appliedFilters, rangeFilter) => {\n\tconst rangeIndex = appliedFilters.findIndex(filter => filter === rangeFilter);\n\treturn rangeIndex;\n};\n\nexport const _getTruncatedLabels = (\n\tfilterLabelsApplied,\n\ttruncateAppliedAndFacets,\n\ttruncateAppliedOrFacets\n) => {\n\tif (!Array.isArray(filterLabelsApplied) && filterLabelsApplied.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst labels = filterLabelsApplied.map(label => {\n\t\treturn label[0];\n\t});\n\n\tif (\n\t\t(truncateAppliedAndFacets || truncateAppliedOrFacets) &&\n\t\tfilterLabelsApplied &&\n\t\tlabels.length > APPLIED_FACETS_TRUNCATION\n\t) {\n\t\treturn filterLabelsApplied.slice(0, APPLIED_FACETS_TRUNCATION);\n\t}\n\treturn filterLabelsApplied;\n};\n\nexport const _getFacetFiltersBasedOnType = (\n\tappliedFacetFilters,\n\tfacetType,\n\tfacets\n) => {\n\tif (appliedFacetFilters.length === 0) return [];\n\tconst facetFilters = appliedFacetFilters\n\t\t.filter(filterObjects => {\n\t\t\tconst { type } = filterObjects;\n\t\t\treturn type === facetType;\n\t\t})\n\t\t.map(filter => {\n\t\t\treturn [filter.facetFilter, filter.applied];\n\t\t});\n\n\treturn _getLabelsFromFilters(facetFilters, facets);\n};\n\nexport const _getAccordionFocusTarget = (host, keyPress) => {\n\tlet moveFocusTo;\n\tconst accordionHeaders = host.shadowRoot.querySelectorAll(\n\t\t\".tree-expand-button\"\n\t);\n\tconst focusedElement = host.shadowRoot.querySelector(\":focus\");\n\taccordionHeaders.forEach((item, index) => {\n\t\tif (item === focusedElement) {\n\t\t\tif (keyPress === UP_ARROW_KEY) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmoveFocusTo = accordionHeaders[accordionHeaders.length - 1];\n\t\t\t\t} else {\n\t\t\t\t\tmoveFocusTo = accordionHeaders[index - 1];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (keyPress === DOWN_ARROW_KEY) {\n\t\t\t\tif (index === accordionHeaders.length - 1) {\n\t\t\t\t\tmoveFocusTo = accordionHeaders[0];\n\t\t\t\t} else {\n\t\t\t\t\tmoveFocusTo = accordionHeaders[index + 1];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn moveFocusTo;\n};\n\nexport const _replaceFacetLabels = (facets, translatedLabels) => {\n\tif (isEmpty(facets) || isEmpty(translatedLabels)) return facets;\n\treturn facets.map(facet => {\n\t\treturn {\n\t\t\t...facet,\n\t\t\tdata: {\n\t\t\t\t...facet.data,\n\t\t\t\toptions: facet.data.options.map(option => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tlabel: translatedLabels[`${option.label}`]\n\t\t\t\t\t\t\t? translatedLabels[`${option.label}`]\n\t\t\t\t\t\t\t: option.label\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t}\n\t\t};\n\t});\n};\n\nexport const _checkForRangeFacets = facets => {\n\tif (isEmpty(facets)) return false;\n\treturn facets.some(facet => {\n\t\tconst facetOptions = facet?.data?.options;\n\t\tif (facetOptions.length > 0) {\n\t\t\treturn RANGE_FACET_REGEX.test(facetOptions[0].value);\n\t\t}\n\t\treturn false;\n\t});\n};\n\nexport const _markRangeFacets = facets => {\n\tif (isEmpty(facets)) return facets;\n\treturn facets.map(facet => {\n\t\tconst facetOptions = facet?.data?.options;\n\t\tif (facetOptions.length > 0) {\n\t\t\treturn {\n\t\t\t\t...facet,\n\t\t\t\tisRangeFacet: RANGE_FACET_REGEX.test(facetOptions[0].value)\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t...facet,\n\t\t\tisRangeFacet: false\n\t\t};\n\t});\n};\n\nexport const _getStorageKey = facetConfigSysId => {\n\treturn `search.facet.${facetConfigSysId}`;\n};\n\nexport const _getRangeFacetStorageKey = rangeFilter => {\n\treturn `range.facet.${rangeFilter}`;\n};\n\nexport const _combineSelectedSourcesAndFacets = (\n\tsearchSources,\n\tselectedSearchSources,\n\tselectedOptions\n) => {\n\tif (!searchSources) return selectedOptions;\n\n\tconst availableSourceIds = searchSources\n\t\t.filter(source => source.sysId !== null && source.count !== 0)\n\t\t.map(source => source.sysId);\n\n\tconst combinedSelectedOptions = selectedOptions.filter(\n\t\toption => !availableSourceIds.includes(option.facetFilter)\n\t);\n\n\tif (selectedSearchSources) {\n\t\tconst selectedFilters = selectedOptions.map(option => option.facetFilter);\n\t\tselectedSearchSources.reverse().forEach(sourceId => {\n\t\t\tif (\n\t\t\t\t!availableSourceIds.includes(sourceId) ||\n\t\t\t\tselectedFilters.includes(sourceId)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcombinedSelectedOptions.unshift({\n\t\t\t\tfacetFilter: sourceId,\n\t\t\t\tapplied: true,\n\t\t\t\ttype: SOURCE_FACET_TYPE\n\t\t\t});\n\t\t});\n\t}\n\treturn combinedSelectedOptions;\n};\n\nexport const _focusWithRetry = (getFocusElement, onFocusComplete) => {\n\tconst tryFocus = () => {\n\t\tconst element = getFocusElement();\n\t\tif (element) {\n\t\t\telement.focus();\n\t\t\tif (onFocusComplete) {\n\t\t\t\tonFocusComplete();\n\t\t\t}\n\t\t} else {\n\t\t\t// Recursively attempts to focus an element using requestAnimationFrame - calls itself until the element is focused.\n\t\t\trequestAnimationFrame(tryFocus);\n\t\t}\n\t};\n\trequestAnimationFrame(tryFocus);\n};\n\nexport const _mergeFacets = (savedFacet, newFacet) => {\n\tif (savedFacet) {\n\t\tif (savedFacet.optionLimit === savedFacet.data.options.length) {\n\t\t\treturn savedFacet;\n\t\t}\n\t\tnewFacet.data.options.forEach(newOption => {\n\t\t\tif (\n\t\t\t\t!savedFacet.data.options.find(savedOption => {\n\t\t\t\t\treturn savedOption[\"value\"] === newOption[\"value\"];\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\tsavedFacet.data.options.push(newOption);\n\t\t\t}\n\t\t});\n\t\treturn savedFacet;\n\t} else {\n\t\treturn newFacet;\n\t}\n};\n\nexport const _addSourceFacet = (facetsToDisplay, searchSources) => {\n\tconst sourceFacet = {\n\t\ttype: SOURCE_FACET_TYPE,\n\t\tname: SOURCE_FACET_LABEL,\n\t\tfacetConfigSysId: SOURCE_FACET_CONFIG_ID,\n\t\torder: -1,\n\t\toptionLimit: searchSources?.length || SOURCE_FACET_OPTION_LIMIT,\n\t\tdata: {\n\t\t\tcount: 0,\n\t\t\toptions: []\n\t\t},\n\t\tisRangeFacet: false\n\t};\n\n\tsearchSources.forEach(source => {\n\t\tif (source.sysId === null) {\n\t\t\tsourceFacet.data.count = source.count;\n\t\t\treturn;\n\t\t}\n\t\tif (source.count === 0) return;\n\t\tsourceFacet.data.options.push({\n\t\t\tlabel: source.label,\n\t\t\tvalue: source.sysId,\n\t\t\tcount: source.count\n\t\t});\n\t});\n\n\tconst existingIndex = facetsToDisplay.findIndex(\n\t\tfacet => facet.facetConfigSysId === SOURCE_FACET_CONFIG_ID\n\t);\n\tif (existingIndex !== -1) {\n\t\tfacetsToDisplay[existingIndex] = sourceFacet;\n\t} else {\n\t\tfacetsToDisplay.unshift(sourceFacet);\n\t}\n};\n","import \"@devsnc/sn-hierarchical-select\";\nimport { SELECTOR_TYPE, SOURCE_FACET_CONFIG_ID } from \"../constants\";\nimport { _getStorageKey, _mergeFacets } from \"../utils\";\n\nconst Facet = ({ facet, facetsMetadata, mode, nowId }) => {\n\tconst { type, optionLimit, facetConfigSysId, name } = facet;\n\tconst facetMetadata = facetsMetadata[facetConfigSysId];\n\tconst selectedItems = facetMetadata?.selectedFacetFilters;\n\tif (\n\t\ttype === SELECTOR_TYPE.MULTIPLE_OR &&\n\t\tfacetConfigSysId !== SOURCE_FACET_CONFIG_ID &&\n\t\tfacetMetadata\n\t) {\n\t\tconst storageKey = _getStorageKey(facetConfigSysId);\n\t\tconst savedFacet = JSON.parse(window.localStorage.getItem(storageKey));\n\n\t\tif (selectedItems && selectedItems.length > 0) {\n\t\t\tfacet = _mergeFacets(savedFacet, facet);\n\t\t\tif (savedFacet && !savedFacet.hadSelection) {\n\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\tstorageKey,\n\t\t\t\t\tJSON.stringify({ ...savedFacet, hadSelection: true })\n\t\t\t\t);\n\t\t\t}\n\t\t\t// Never let the internal bookkeeping flag leak into what's actually rendered.\n\t\t\tconst facetForRender = { ...facet };\n\t\t\tdelete facetForRender.hadSelection;\n\t\t\tfacet = facetForRender;\n\t\t} else if (savedFacet) {\n\t\t\tconst currentOptions = facet?.data?.options || [];\n\t\t\tconst savedOptions = savedFacet?.data?.options || [];\n\t\t\tconst savedValues = new Set(savedOptions.map(opt => opt.value));\n\t\t\tconst isSubset = currentOptions.every(opt => savedValues.has(opt.value));\n\n\t\t\tif (!isSubset || !savedFacet.hadSelection) {\n\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\tstorageKey,\n\t\t\t\t\tJSON.stringify({ ...facet, hadSelection: false })\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\twindow.localStorage.setItem(\n\t\t\t\tstorageKey,\n\t\t\t\tJSON.stringify({ ...facet, hadSelection: false })\n\t\t\t);\n\t\t}\n\t}\n\n\tlet facetType = !type || facet.isRangeFacet ? SELECTOR_TYPE.SINGLE : type;\n\n\tfacetType =\n\t\tfacetType === SELECTOR_TYPE.SINGLE_SELECT_HYPHEN\n\t\t\t? SELECTOR_TYPE.SINGLE\n\t\t\t: facetType === SELECTOR_TYPE.MULTIPLE_SELECT_HYPHEN\n\t\t\t? SELECTOR_TYPE.MULTIPLE_AND\n\t\t\t: facetType;\n\n\tconst isSourceFacet = facetConfigSysId === SOURCE_FACET_CONFIG_ID;\n\n\treturn (\n\t\t<sn-hierarchical-select\n\t\t\tselect={facetType}\n\t\t\titems={facet}\n\t\t\tname={name}\n\t\t\toptionLimit={optionLimit}\n\t\t\tmode={mode}\n\t\t\tcategory={facetConfigSysId}\n\t\t\tselectedItems={selectedItems}\n\t\t\tcontainerId={nowId}\n\t\t\tshowCount={isSourceFacet}\n\t\t/>\n\t);\n};\n\nexport default Facet;\n","const Divider = ({ variant }) => {\n\tconst className =\n\t\tvariant === \"secondary\" || variant === \"tertiary\"\n\t\t\t? `divider-${variant}`\n\t\t\t: \"divider-primary\";\n\treturn <div className={className} />;\n};\n\nexport default Divider;\n","export const SECTION_FOLD_TOGGLED = \"SECTION_FOLD_TOGGLED\";\nexport const CLEAR_FOCUS_TARGET = \"CLEAR_FOCUS_TARGET\";\n","import \"@servicenow/now-icon\";\nimport { SECTION_FOLD_TOGGLED } from \"../actions\";\nimport {\n\tSPACE_KEY,\n\tENTER_KEY,\n\tSELECTOR_TYPE,\n\tACCORDION_SUBLABEL_AND_FACET,\n\tACCORDION_SUBLABEL_OR_FACET\n} from \"../../common/constants\";\nimport { _focusWithRetry } from \"../../common/utils\";\n\nconst _getIcon = expanded => (expanded ? \"minus-fill\" : \"plus-fill\");\n\nconst focusExpandButton = (elm, onFocusComplete) => {\n\t_focusWithRetry(() => elm, onFocusComplete);\n};\n\nconst ExpandButton = ({\n\tdispatch,\n\texpanded,\n\tlabel,\n\tnowId,\n\tfacetConfigSysId,\n\tfacetType,\n\tshouldFocus,\n\tonFocusComplete\n}) => {\n\tconst icon = _getIcon(expanded);\n\n\tconst clickHandler = event => {\n\t\tif (\n\t\t\tevent.type === \"click\" ||\n\t\t\tevent.keyCode === SPACE_KEY ||\n\t\t\tevent.keyCode === ENTER_KEY\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tdispatch(SECTION_FOLD_TOGGLED, {\n\t\t\t\tvalue: facetConfigSysId\n\t\t\t});\n\t\t}\n\t};\n\n\tlet subLabel =\n\t\tfacetType === SELECTOR_TYPE.MULTIPLE_OR\n\t\t\t? ACCORDION_SUBLABEL_OR_FACET\n\t\t\t: ACCORDION_SUBLABEL_AND_FACET;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`tree-expand-button${expanded ? \" expanded\" : \"\"}`}\n\t\t\trole=\"button\"\n\t\t\taria-label={\n\t\t\t\tfacetType === SELECTOR_TYPE.SINGLE\n\t\t\t\t\t? `${label}`\n\t\t\t\t\t: `${label}, ${subLabel}`\n\t\t\t}\n\t\t\taria-expanded={expanded ? \"true\" : \"false\"}\n\t\t\ttabIndex={0}\n\t\t\ton-click={clickHandler}\n\t\t\ton-keydown={clickHandler}\n\t\t\thook-insert={({ elm }) => {\n\t\t\t\tif (shouldFocus) {\n\t\t\t\t\tfocusExpandButton(elm, onFocusComplete);\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<div className=\"tree-expand-button-icon\">\n\t\t\t\t<now-icon icon={icon} size=\"sm\" />\n\t\t\t</div>\n\t\t\t<div className=\"accordion-title\" id={`${nowId}_${label}_facet_category`}>\n\t\t\t\t{label}\n\t\t\t\t<div className=\"accordion-sub-label\">\n\t\t\t\t\t{expanded && facetType === SELECTOR_TYPE.MULTIPLE_OR ? (\n\t\t\t\t\t\t<span>{ACCORDION_SUBLABEL_OR_FACET}</span>\n\t\t\t\t\t) : expanded && facetType === SELECTOR_TYPE.MULTIPLE_AND ? (\n\t\t\t\t\t\t<span>{ACCORDION_SUBLABEL_AND_FACET}</span>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\"\"\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ExpandButton;\n","export const SELECTIONS_UPDATED = \"SN-HIERARCHICAL-SELECT#SELECTIONS_UPDATED\";\nexport const TOGGLE_FOCUS_ON_SELECTED_ITEM =\n\t\"SN-HIERARCHICAL-SELECT#TOGGLE_FOCUS_ON_SELECTED_ITEM\";\nexport const ALL_CLEARED = \"ALL_CLEARED\";\nexport const ACCORDION_CLEARED = \"ACCORDION_CLEARED\";\nexport const FACET_SELECTIONS_UPDATED_INTERNAL = \"SELECTIONS_UPDATED\";\nexport const APPLIED_FACETS_EXPANDED_COLLAPSED = \"NOW_BUTTON_BARE#CLICKED\";\nexport const PILL_DISMISSED = \"NOW_PILL#DISMISSED\";\nexport const SORT_FILTER_SELECTED_INTERNAL = \"SORT_FILTER_SELECTED_INTERNAL\";\nexport const HIDE_DESKTOP_FACET_PANEL =\n\t\"SN_SEARCH_FACETS_DESKTOP#TOGGLE_FACET_PANEL_VISIBILITY\";\n\n// Label translation actions\nexport const LABEL_TRANSLATION_STARTED = \"LABEL_TRANSLATION_STARTED\";\nexport const REQUEST_TRANSLATED_LABELS = \"REQUEST_TRANSLATED_LABELS\";\nexport const TRANSLATION_FETCH_STARTED = \"TRANSLATION_FETCH_STARTED\";\nexport const TRANSLATION_FETCH_SUCCEEDED = \"TRANSLATION_FETCH_SUCCEEDED\";\nexport const TRANSLATION_FETCH_FAILED = \"TRANSLATION_FETCH_FAILED\";\n\n// Externally exposed action\nexport const FACET_SELECTIONS_UPDATED = \"SN_SEARCH_FACETS#SELECTIONS_UPDATED\";\nexport const SORT_FILTER_SELECTED = \"SN_SEARCH_FACETS#SORT_FILTER_SELECTED\";\nexport const DONE_BUTTON_CLICKED = \"SN_SEARCH_FACETS#DONE_BUTTON_CLICKED\";\nexport const TOGGLE_FACET_PANEL_VISIBILITY =\n\t\"SN_SEARCH_FACETS#TOGGLE_FACET_PANEL_VISIBILITY\";\n","/* eslint-disable jsx-a11y/role-supports-aria-props */\nimport \"@servicenow/now-button\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport { t } from \"sn-translate\";\n\nimport ExpandButton from \"./ExpandButton\";\nimport { ACCORDION_CLEARED } from \"../../common/actions\";\nimport { _selectedItemsLength } from \"../../common/utils\";\n\nconst Accordion = ({\n\texpanded,\n\tfacetsMetadata,\n\tdispatch,\n\tlabel,\n\tnowId,\n\tfacetConfigSysId,\n\tfacetType,\n\tdisabled,\n\tshouldFocus,\n\tonFocusComplete\n}) => {\n\tconst numSelectedItems = _selectedItemsLength(\n\t\tfacetsMetadata,\n\t\tfacetConfigSysId\n\t);\n\treturn (\n\t\t<div\n\t\t\tclassName={expanded ? \"accordion-expanded\" : \"accordion\"}\n\t\t\tclass={{\n\t\t\t\taccordion: true,\n\t\t\t\t\"accordion-expanded\": expanded,\n\t\t\t\t\"accordion-collapsed\": !expanded,\n\t\t\t\tdisabled: disabled\n\t\t\t}}\n\t\t\taria-expanded={expanded ? \"true\" : \"false\"}\n\t\t\trole=\"group\"\n\t\t>\n\t\t\t<div className=\"accordion-controls\">\n\t\t\t\t<ExpandButton\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tfacetConfigSysId={facetConfigSysId}\n\t\t\t\t\texpanded={expanded}\n\t\t\t\t\tnowId={nowId}\n\t\t\t\t\tfacetType={facetType}\n\t\t\t\t\tshouldFocus={shouldFocus}\n\t\t\t\t\tonFocusComplete={onFocusComplete}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"clear-button\">\n\t\t\t\t{numSelectedItems > 0 ? (\n\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\tlabel={t(\"Clear ({0})\", numSelectedItems)}\n\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t\"aria-label\": t(\n\t\t\t\t\t\t\t\t\t\"Clear ({0}) ({1}) filter\",\n\t\t\t\t\t\t\t\t\tnumSelectedItems,\n\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ton-keydown={event => {\n\t\t\t\t\t\t\tif ([\" \", \"Enter\"].includes(event.key)) {\n\t\t\t\t\t\t\t\tdispatch(ACCORDION_CLEARED, {\n\t\t\t\t\t\t\t\t\tvalue: facetConfigSysId,\n\t\t\t\t\t\t\t\t\tclearedViaKeyboard: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\tdispatch(ACCORDION_CLEARED, {\n\t\t\t\t\t\t\t\tvalue: facetConfigSysId,\n\t\t\t\t\t\t\t\tclearedViaKeyboard: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\thidePadding\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<Fragment />\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Accordion;\n","import \"@servicenow/now-collapse\";\n\nimport Facet from \"../../common/view/Facet\";\nimport Divider from \"../../common/view/Divider\";\nimport Accordion from \"./Accordion\";\nimport { MODE } from \"../../common/constants\";\n\nconst Panel = ({\n\tdispatch,\n\tlabel,\n\texpanded,\n\tfacetsMetadata,\n\tfacetType,\n\tfacet,\n\tshowEndingDivider,\n\tnowId,\n\tisGlobal,\n\tfacetConfigSysId,\n\tdisabled,\n\tshouldFocus,\n\tonFocusComplete\n}) => (\n\t<div className={`${isGlobal ? \"facet-panel-tree-item\" : \"\"}`}>\n\t\t<Divider variant=\"tertiary\" />\n\t\t<Accordion\n\t\t\tdispatch={dispatch}\n\t\t\tlabel={label}\n\t\t\tfacetConfigSysId={facetConfigSysId}\n\t\t\texpanded={expanded}\n\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\tdisabled={disabled}\n\t\t\tfacetType={facetType}\n\t\t\tnowId={nowId}\n\t\t\tshouldFocus={shouldFocus}\n\t\t\tonFocusComplete={onFocusComplete}\n\t\t/>\n\t\t<now-collapse expanded={expanded}>\n\t\t\t<Facet\n\t\t\t\tfacet={facet}\n\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\tmode={MODE.TREE}\n\t\t\t\tnowId={nowId}\n\t\t\t/>\n\t\t</now-collapse>\n\t\t{showEndingDivider ? <Divider variant=\"tertiary\" /> : null}\n\t</div>\n);\n\nexport default Panel;\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-pill.scss';\nimport '@servicenow/now-avatar';\nimport '@servicenow/now-button';\nimport '@servicenow/now-icon';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport {t} from 'sn-translate';\nimport {\n\tconfigAriaLabelRoleSchema,\n\tconfigAriaLabelSchema,\n} from '@servicenow/library-schemas';\n\nimport packageInfo from '../package.json';\nconst {name, version} = packageInfo;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nconst renderIdentifier = (icon, avatarProps, size, selected, configAria) => {\n\tconst avatarSize = {xs: 'xxs', sm: 'xs', md: 'sm'};\n\n\tif (\n\t\ticon ||\n\t\tavatarProps.imageSrc ||\n\t\tavatarProps.icon ||\n\t\tavatarProps.presence\n\t) {\n\t\treturn (\n\t\t\t<span className=\"now-pill-identifier\">\n\t\t\t\t{avatarProps.imageSrc || avatarProps.icon || avatarProps.presence ? (\n\t\t\t\t\t<now-avatar\n\t\t\t\t\t\tuser-name={avatarProps.userName}\n\t\t\t\t\t\ticon={avatarProps.icon}\n\t\t\t\t\t\timageSrc={avatarProps.imageSrc}\n\t\t\t\t\t\tpresence={avatarProps.presence}\n\t\t\t\t\t\tsize={avatarSize[size]}\n\t\t\t\t\t\thide-tooltip\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\tclassName=\"now-pill-icon\"\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tselected\n\t\t\t\t\t\t\t\t? icon.replace('-outline', '-fill')\n\t\t\t\t\t\t\t\t: icon.replace('-fill', '-outline')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsize={size === 'xs' ? 'sm' : size}\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\t\t...filterAriaAttributes(configAria, 'icon'),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t);\n\t}\n};\n\nconst renderLabel = (label, avatarProps, interaction, selected) => {\n\tconst a11yLabel = t(\n\t\t{\n\t\t\tcode: 'now-pills-a11y-label',\n\t\t\tmessage: '{pillLabel} is selected',\n\t\t\tcomment:\n\t\t\t\t'The pillLabel can be any string accompanied by the text \"is selected\", indicating that the pill with that label is also in a selected state.',\n\t\t},\n\t\t{pillLabel: label},\n\t);\n\tconst ariaHidden =\n\t\t(interaction === 'none' && selected) ||\n\t\tavatarProps.userName?.toLowerCase() === label?.toLowerCase()\n\t\t\t? 'true'\n\t\t\t: undefined;\n\treturn (\n\t\t<span className=\"now-line-height-crop\">\n\t\t\t<span\n\t\t\t\tclassName=\"now-pill-label\"\n\t\t\t\taria-hidden={ariaHidden}\n\t\t\t\tdata-truncation={interaction === 'none' ? true : undefined}\n\t\t\t>\n\t\t\t\t{label}\n\t\t\t</span>\n\t\t\t{interaction === 'none' && selected ? (\n\t\t\t\t<span className=\"now-a11y-label\">{a11yLabel}</span>\n\t\t\t) : null}\n\t\t</span>\n\t);\n};\n\nconst renderDismissButton = ({\n\tsize,\n\tlabel,\n\tcanDismiss,\n\ttooltipContent,\n\tdispatch,\n\tupdateState,\n\tdisabled,\n\tinteraction,\n}) => {\n\tif (canDismiss) {\n\t\tconst defaultTooltipText = t({\n\t\t\tcode: 'now-pill-remove-button-tooltip-label',\n\t\t\tmessage: 'Remove',\n\t\t\tcomment:\n\t\t\t\t'Verb. Describes an action button for removing or dismissing the pill.',\n\t\t});\n\t\tconst tooltipText = tooltipContent ? tooltipContent : defaultTooltipText;\n\t\tconst ariaLabel = tooltipContent\n\t\t\t? `${tooltipContent} ${label}`\n\t\t\t: `${defaultTooltipText} ${label}`;\n\n\t\treturn (\n\t\t\t<now-button-iconic\n\t\t\t\tclassName=\"now-pill-button-iconic\"\n\t\t\t\tsize={size === 'xs' ? 'sm' : size}\n\t\t\t\thide-padding\n\t\t\t\tbare\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\ticon=\"close-fill\"\n\t\t\t\tid=\"dismiss\"\n\t\t\t\tdisabled={disabled && interaction === 'select' ? true : undefined}\n\t\t\t\tconfig-aria={{button: {'aria-label': ariaLabel}}}\n\t\t\t\ttooltip-content={disabled ? undefined : tooltipText}\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(() => ({\n\t\t\t\t\t\ttype: 'NOW_PILL#DISMISSED',\n\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t\tshouldDispatch: interaction === 'none' || !disabled,\n\t\t\t\t\t}));\n\t\t\t\t}}\n\t\t\t\ton-mouseenter={() => {\n\t\t\t\t\tupdateState({hasHover: true});\n\t\t\t\t}}\n\t\t\t\ton-mouseleave={() => {\n\t\t\t\t\tupdateState({hasHover: false});\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst handleTooltipShow = (e, dispatch) => {\n\tconst labelSpan = e.target.querySelector('.now-pill-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset) {\n\t\treturn dispatch(TOOLTIP_SHOW, {target: e.target});\n\t}\n};\n\nconst handleTooltipHide = (e, dispatch) => {\n\tconst labelSpan = e.target.querySelector('.now-pill-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset) {\n\t\treturn dispatch(TOOLTIP_HIDE, {target: e.target});\n\t}\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {\n\t\tsize,\n\t\tlabel,\n\t\ticon = state.properties.iconName,\n\t\tdisabled,\n\t\tselected,\n\t\timageSrc,\n\t\tavatarProps,\n\t\tcanDismiss,\n\t\ttooltipContent,\n\t\tconfigAria,\n\t\tnowId,\n\t\tinteraction,\n\t} = state.properties;\n\tconst {hasHover} = state;\n\n\tlet updatedAvatarProps = avatarProps ? avatarProps : {};\n\tif (imageSrc) {\n\t\tupdatedAvatarProps.imageSrc = imageSrc;\n\t}\n\n\treturn (\n\t\t<span\n\t\t\tclass={{\n\t\t\t\t'now-pill': true,\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'is-selected': selected,\n\t\t\t}}\n\t\t>\n\t\t\t{interaction === 'select' ? (\n\t\t\t\t<button\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-pill-label-wrapper': true,\n\t\t\t\t\t\t'-button': true,\n\t\t\t\t\t\t'show-identifier':\n\t\t\t\t\t\t\ticon ||\n\t\t\t\t\t\t\tupdatedAvatarProps.imageSrc ||\n\t\t\t\t\t\t\tupdatedAvatarProps.icon ||\n\t\t\t\t\t\t\tupdatedAvatarProps.presence,\n\t\t\t\t\t\t'show-dismiss': canDismiss,\n\t\t\t\t\t\t'has-hover': hasHover,\n\t\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t}}\n\t\t\t\t\tid=\"label\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tdata-tooltip={label}\n\t\t\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\t\t\ton-mouseenter={(e) => {\n\t\t\t\t\t\tupdateState({hasHover: true});\n\t\t\t\t\t\thandleTooltipShow(e, dispatch);\n\t\t\t\t\t}}\n\t\t\t\t\ton-mouseleave={(e) => {\n\t\t\t\t\t\tupdateState({hasHover: false});\n\t\t\t\t\t\thandleTooltipHide(e, dispatch);\n\t\t\t\t\t}}\n\t\t\t\t\ton-focusin={(e) => handleTooltipShow(e, dispatch)}\n\t\t\t\t\ton-focusout={(e) => handleTooltipHide(e, dispatch)}\n\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\t\t\ttype: 'NOW_PILL#SELECTED_SET',\n\t\t\t\t\t\t\tpayload: {value: !properties.selected},\n\t\t\t\t\t\t\tshouldDispatch: !properties.disabled,\n\t\t\t\t\t\t}));\n\t\t\t\t\t}}\n\t\t\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-pressed={selected ? 'true' : 'false'}\n\t\t\t\t>\n\t\t\t\t\t{renderIdentifier(\n\t\t\t\t\t\ticon,\n\t\t\t\t\t\tupdatedAvatarProps,\n\t\t\t\t\t\tsize,\n\t\t\t\t\t\tselected,\n\t\t\t\t\t\tconfigAria,\n\t\t\t\t\t)}\n\t\t\t\t\t{renderLabel(label, updatedAvatarProps, interaction, selected)}\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\t<span\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-pill-label-wrapper': true,\n\t\t\t\t\t\t'-label': true,\n\t\t\t\t\t\t'show-identifier':\n\t\t\t\t\t\t\ticon ||\n\t\t\t\t\t\t\tupdatedAvatarProps.imageSrc ||\n\t\t\t\t\t\t\tupdatedAvatarProps.icon ||\n\t\t\t\t\t\t\tupdatedAvatarProps.presence,\n\t\t\t\t\t\t'show-dismiss': canDismiss,\n\t\t\t\t\t}}\n\t\t\t\t\tid=\"label\"\n\t\t\t\t>\n\t\t\t\t\t{renderIdentifier(\n\t\t\t\t\t\ticon,\n\t\t\t\t\t\tupdatedAvatarProps,\n\t\t\t\t\t\tsize,\n\t\t\t\t\t\tselected,\n\t\t\t\t\t\tconfigAria,\n\t\t\t\t\t)}\n\t\t\t\t\t{renderLabel(label, updatedAvatarProps, interaction, selected)}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t{renderDismissButton({\n\t\t\t\tsize,\n\t\t\t\tlabel,\n\t\t\t\tcanDismiss,\n\t\t\t\ttooltipContent,\n\t\t\t\tdispatch,\n\t\t\t\tnowId,\n\t\t\t\tupdateState,\n\t\t\t\tdisabled,\n\t\t\t\tinteraction,\n\t\t\t})}\n\t\t</span>\n\t);\n};\n\n/**\n * Pills are UI elements you can use to sort, filter, or tag content. Pills contain\n * information such as an input, action, or attribute. Depending on the use case,\n * pills can be dynamic or predefined.\n *\n * Example use cases:\n * - Indicate selected filters in a list of filters.\n * - Display an avatar to represent a selected user.\n * - Enable selection, deselection, or dismissal.\n *\n *\n * ```jsx\n * <now-pill icon=\"envelope-fill\" can-dismiss />\n * <now-pill avatar-props={{userName: \"Foo\", imageSrc: \"http://foo.png\", presence: \"available\"}} selected />\n * ```\n *\n * @seismicElement now-pill\n * @summary Indicates selected values in multi-select fields.\n * @uib.label Pill\n * @uib.icon pill\n * @uib.description Indicates selected values in multi-select fields.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties label, size, interaction, canDismiss, disabled, icon, avatarProps, selected, manageSelected, tooltipContent, configAria\n * @uib.layout.accessibility.children tooltipContent, configAria\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_PILL#SELECTED_SET, NOW_PILL#DISMISSED\n */\ncreateEnhancedElement('now-pill', {\n\tproperties: {\n\t\t/**\n\t\t * Size of the pill.\n\t\t * @type {('xs'|'sm'|'md')}\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\treflect: true,\n\t\t\tschema: {type: 'string', enum: ['xs', 'sm', 'md']},\n\t\t},\n\t\t/**\n\t\t * Text displayed inside the pill.\n\t\t * @type {string}\n\t\t * @uib.description Text displayed inside the pill.\n\t\t * @uib.defaultValue Issue 42\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {required: true, schema: {type: 'string'}},\n\t\t/** @private */\n\t\ticonName: {},\n\t\t/**\n\t\t * Optional icon displayed at the start of the pill.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * The `-outline` version of this icon displays by default,\n\t\t * even if the `-fill` version is assigned.\n\t\t * The `-fill` version shows if a user selects the pill.\n\t\t * @type {string}\n\t\t * @uib.description Optional icon displayed at the start of the pill.\n\t\t * @uib.defaultValue circle-exclamation-outline\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/** @private */\n\t\tshowIdentifier: {\n\t\t\treflect: true,\n\t\t\tcomputed({properties}) {\n\t\t\t\treturn properties.icon || properties.imageSrc ? true : false;\n\t\t\t},\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Color fill indicating that the pill is selected.\n\t\t * Use `manage-selected` to override the default behavior and handle the\n\t\t * `NOW_PILL#SELECTED_SET` action manually.\n\t\t * @type {boolean}\n\t\t * @uib.description Color fill indicating that the pill is selected.\n\t\t */\n\t\tselected: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selected` property.\n\t\t * An action with type `NOW_PILL#SELECTED_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected property. Use the selected set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelected: {default: false, schema: {type: 'boolean'}},\n\t\t/** @private */\n\t\timageSrc: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, displays a button at the end of the pill.\n\t\t * When the user clicks the button, the pill dispatches an action.\n\t\t * For example, clicking an (X) button removes the pill.\n\t\t * @type {boolean}\n\t\t * @uib.label Dismissible\n\t\t * @uib.description Displays a button at the end of the pill. When the user clicks the button, the pill dispatches an action.\n\t\t */\n\t\tcanDismiss: {default: false, reflect: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Text content shown inside the tooltip for the dismiss button.\n\t\t * If no content is provided, defaults to \"Remove\".\n\t\t * @type {string}\n\t\t * @uib.label Tooltip label for dismiss button\n\t\t * @uib.description Text to display in a tooltip that describes the pill's dismiss button.\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, mutes the interactive pill color and prevents user click interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description When true, mutes the pill color and disables user click interactions.\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object that holds all the information that is needed to render the pill's avatar or image.\n\t\t * The imageSrc property is the location of an image file to display as the avatar inside of the pill.\n\t\t * Presence is the user's presence status, displayed with an indicator icon in the corner.\n\t\t * @type {{ userName: string, imageSrc: string, icon: string, presence: ('available'|'away'|'busy'|'offline') }}\n\t\t * @uib.label Avatar properties\n\t\t * @uib.description Display username, image source or presence for pill's avatar.\n\t\t */\n\t\tavatarProps: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tuserName: {type: 'string'},\n\t\t\t\t\timageSrc: {type: 'string'},\n\t\t\t\t\ticon: {type: 'string'},\n\t\t\t\t\tpresence: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: ['available', 'away', 'busy', 'offline'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-pill. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and one or more corresponding values. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-pill. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ button: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tbutton: configAriaLabelRoleSchema,\n\t\t\t\t\ticon: configAriaLabelSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * `none`: Pill can not be selected.\n\t\t * `select`: Pill can be selected.\n\t\t * @type {('none'|'select')}\n\t\t * @uib.description Sets whether the pill can be selected or not.\n\t\t * @uib.defaultValue select\n\t\t */\n\t\tinteraction: {\n\t\t\tdefault: 'select',\n\t\t\tschema: {type: 'string', enum: ['none', 'select']},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user selects the pill dismiss button, or if the\n\t\t * pill is selected and the user selects the backspace or delete key.\n\t\t * The pill does not handle this action, its parent must handle\n\t\t * and remove the pill from its state so it is no longer rendered.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the user selects the pill dismiss button, or if the pill is selected and the user selects the backspace or delete key.\n\t\t */\n\t\t'NOW_PILL#DISMISSED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user toggles the selected status of the pill.\n\t\t * Set the `manage-selected` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t * @uib.description Dispatched when the user toggles the selected status of the pill.\n\t\t */\n\t\t'NOW_PILL#SELECTED_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect: ({action, host, dispatch}) => {\n\t\t\t\tconst {event} = action.payload;\n\n\t\t\t\tif ([' ', 'Spacebar', 'Enter'].includes(event.key)) {\n\t\t\t\t\taction.preventDefault();\n\t\t\t\t\taction.stopPropagation();\n\n\t\t\t\t\tif (host.shadowRoot.activeElement.id === 'label') {\n\t\t\t\t\t\tdispatch(() => ({\n\t\t\t\t\t\t\ttype: 'NOW_PILL#SELECTED_SET',\n\t\t\t\t\t\t\tpayload: {value: !host.selected},\n\t\t\t\t\t\t}));\n\t\t\t\t\t} else if (host.shadowRoot.activeElement.id === 'dismiss') {\n\t\t\t\t\t\tdispatch(() => ({\n\t\t\t\t\t\t\ttype: 'NOW_PILL#DISMISSED',\n\t\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t} else if (['Backspace', 'Delete'].includes(event.key)) {\n\t\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\t\ttype: 'NOW_PILL#DISMISSED',\n\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t\tshouldDispatch: properties.canDismiss,\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tbehaviors: [focusBehavior, tooltipBehavior, truncationBehavior],\n\tstyles,\n\tinitialState: {\n\t\tcurrentTooltip: {ref: null, content: '', opened: false},\n\t},\n\tview,\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-label-value-inline.scss';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\n\nconst view = (state) => {\n\tconst {label, value, reversed, truncated} = state.properties;\n\n\tif (!reversed) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-label-value-inline': true,\n\t\t\t\t\t'will-truncate': truncated,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"now-label-value-pair\" data-truncation>\n\t\t\t\t\t<span className=\"now-label-value-inline-label\">{label}</span>\n\t\t\t\t\t&nbsp;\n\t\t\t\t\t<span className=\"now-label-value-inline-value\">{value}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-label-value-inline': true,\n\t\t\t\t\t'will-truncate': truncated,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"now-label-value-pair\" data-truncation>\n\t\t\t\t\t<span className=\"now-label-value-inline-value\">{value}</span>\n\t\t\t\t\t&nbsp;\n\t\t\t\t\t<span className=\"now-label-value-inline-label\">{label}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n};\n\n/**\n * The `now-label-value-inline` component is an independent instance of the label-value pairs\n * component that only displays horizontally. Pass settings into `now-label-value-inline` to format the label for your use case.\n *\n * ```jsx\n * <now-label-value-inline label=\"Assigned to\" value=\"Fred Luddy\" />\n * ```\n *\n * @seismicElement now-label-value-inline\n * @summary Single label-value pair shown inline with minimal formatting.\n * @uib.label Label value\n * @uib.icon label-value-inline\n * @uib.description Single label-value pair that displays inline horizontally with minimal formatting.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties label, value, reversed, truncated\n */\ncreateEnhancedElement('now-label-value-inline', {\n\tproperties: {\n\t\t/**\n\t\t * Label text displaying inline with the value. Content is associated with the value, for example, \"Assigned to\".\n\t\t * @type {string}\n\t\t * @uib.description Label text displaying inline with the value\n\t\t * @uib.defaultValue Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Value text displayed inline with the label. Content is a unique value, for example, \"Fred Luddy\".\n\t\t * @type {string}\n\t\t * @uib.description Value text displayed inline with the label\n\t\t * @uib.defaultValue This is the value\n\t\t * @uib.translatable true\n\t\t */\n\t\tvalue: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, reverses the label and value order.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to reverse the label and value order\n\t\t */\n\t\treversed: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, truncates output to a single line within the width of the provided layout.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to truncate output to a single line within the width of the provided layout\n\t\t */\n\t\ttruncated: {default: false, reflect: true, schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [{behavior: truncationBehavior}, {behavior: tooltipBehavior}],\n});\n","import {extensionSplit} from '@servicenow/library-enhanced-utils';\n\nexport default function toExtension(value, whitelist) {\n\tif (!whitelist.includes(value)) {\n\t\treturn {};\n\t}\n\n\treturn extensionSplit(value);\n}\n","import isPlainObject from 'lodash/isPlainObject';\n\nexport default function normalizeValues(value) {\n\tif (typeof value === 'string') {\n\t\treturn [{type: 'string', value}];\n\t}\n\tif (isPlainObject(value)) {\n\t\treturn [value];\n\t}\n\treturn value;\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-highlighted-value.scss';\nimport '@servicenow/now-icon';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\n\nimport packageInfo from '../package.json';\nconst {name, version} = packageInfo;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nconst renderIcon = (icon, showIcon, size) => {\n\tif (icon || showIcon) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\ticon={icon ? icon : 'presence-fill'}\n\t\t\t\tsize={size}\n\t\t\t\tclassName=\"now-highlighted-value-icon\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tlabel = '',\n\t\tstatus,\n\t\tcolor,\n\t\tvariant,\n\t\ticon,\n\t\tshowIcon,\n\t\twillWrap,\n\t\tsize,\n\t\ttooltipContent,\n\t} = state.properties;\n\tconst statusOrColor = status || color;\n\treturn (\n\t\t<span\n\t\t\tclass={{\n\t\t\t\t'now-highlighted-value': true,\n\t\t\t\t['-' + statusOrColor]: statusOrColor,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t'will-wrap': willWrap,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t}}\n\t\t\tdata-tooltip={tooltipContent}\n\t\t\taria-label={tooltipContent}\n\t\t\ton-mouseenter={handleTooltipShow(dispatch)}\n\t\t\ton-mouseleave={handleTooltipHide(dispatch)}\n\t\t\ton-focusin={handleTooltipShow(dispatch)}\n\t\t\ton-focusout={handleTooltipHide(dispatch)}\n\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n\t\t\ttabindex={tooltipContent ? '0' : undefined}\n\t\t>\n\t\t\t{renderIcon(icon, showIcon, size)}\n\t\t\t{willWrap ? (\n\t\t\t\t<span className=\"now-highlighted-value-label\">{label}</span>\n\t\t\t) : (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"now-highlighted-value-label will-truncate\"\n\t\t\t\t\tdata-truncation={!tooltipContent ? true : undefined}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n\n/**\n * Highlighted values communicate the value of an item\n * by promoting visibility and readability.\n *\n * Use highlighted values when you want to convey the status in a certain area,\n * such as a card, list, or widget. A highlighted value may be combined with a status icon.\n *\n * ```jsx\n * <now-highlighted-value label=\"Value\" color=\"warning\" show-icon />\n *\n * <now-highlighted-value label=\"Tag\" color=\"blue\" variant=\"secondary\" icon=\"clock-outline\" />\n * ```\n *\n * @seismicElement now-highlighted-value\n * @summary A colored label with an optional icon to indicate a status.\n * @uib.label Highlighted value\n * @uib.icon highlighted-value\n * @uib.description A colored label with an optional icon to indicate a status.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties label, willWrap, variant, color, icon, size, tooltipContent\n * @uib.layout.identifier.children color, icon\n * @uib.layout.identifier.icon image-outline\n *\n */\ncreateEnhancedElement('now-highlighted-value', {\n\tproperties: {\n\t\t/**\n\t\t * Text displayed as the highlighted value.\n\t\t * @type {string}\n\t\t * @uib.description Text displayed as the highlighted value.\n\t\t * @uib.defaultValue Heads up\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Deprecated. Use `color` instead.\n\t\t * @private\n\t\t */\n\t\tstatus: {},\n\t\t/**\n\t\t * Sets the highlighted value background color.\n\t\t * @type {('critical'|'high'|'warning'|'moderate'|'positive'|'info'|'low'|'magenta'|'pink'|'orange'|'yellow'|'brown'|'green'|'green-yellow'|'blue'|'gray'|'teal'|'purple')}\n\t\t * @uib.label Color\n\t\t * @uib.description Sets the highlighted value background color.\n\t\t */\n\t\tcolor: {\n\t\t\tdefault: 'low',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'critical',\n\t\t\t\t\t'high',\n\t\t\t\t\t'warning',\n\t\t\t\t\t'moderate',\n\t\t\t\t\t'positive',\n\t\t\t\t\t'info',\n\t\t\t\t\t'low',\n\t\t\t\t\t'magenta',\n\t\t\t\t\t'pink',\n\t\t\t\t\t'orange',\n\t\t\t\t\t'yellow',\n\t\t\t\t\t'brown',\n\t\t\t\t\t'green',\n\t\t\t\t\t'green-yellow',\n\t\t\t\t\t'blue',\n\t\t\t\t\t'gray',\n\t\t\t\t\t'teal',\n\t\t\t\t\t'purple',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the shade of the highlighted value background and the color of\n\t\t * the text and/or icon.\n\t\t * @type {('primary'|'secondary'|'tertiary')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Sets the shade of the highlighted value background and the color of the text and/or icon.\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'tertiary',\n\t\t\tschema: {type: 'string', enum: ['primary', 'secondary', 'tertiary']},\n\t\t},\n\t\t/**\n\t\t * Flag that determines whether an icon displays with the label.\n\t\t * @type {boolean}\n\t\t */\n\t\tshowIcon: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When `show-icon` is set, a solid circle displays in the\n\t\t * highlighted value. Set this property with a valid icon name from\n\t\t * the `now-icon` set to display a custom icon instead.\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.description Optional icon to display in the highlighted value\n\t\t * @uib.defaultValue presence-fill\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Set to true to wrap the text if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the text if it does not fit on one line.\n\t\t */\n\t\twillWrap: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Size of the highlighted value.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.label Size\n\t\t * @uib.description Size of the highlighted value\n\t\t * @uib.defaultValue sm\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'sm',\n\t\t\tschema: {type: 'string', enum: ['sm', 'md']},\n\t\t},\n\t\t/**\n\t\t * Text content shown inside the tooltip.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip label\n\t\t * @uib.defaultValue Enter a label\n\t\t * @uib.description Text shown inside the tooltip\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t},\n\tview,\n\tbehaviors: [truncationBehavior, tooltipBehavior],\n\tstyles,\n});\n","import '@servicenow/now-highlighted-value';\nimport '@servicenow/now-text-link';\nimport {t} from 'sn-translate';\nimport DOMPurify from 'dompurify';\nimport {domPurifyConfig} from '@servicenow/library-enhanced-utils';\n\nconst _renderValueDelimiter = (i, delimiter, valueCount) => {\n\tif (i < valueCount - 1) {\n\t\treturn (\n\t\t\t<span data-test=\"value-delimiter\" aria-hidden=\"true\">\n\t\t\t\t{delimiter}\n\t\t\t</span>\n\t\t);\n\t} else {\n\t\treturn '';\n\t}\n};\n\nconst _renderValueWithPrevious = (value, previous) => {\n\treturn t(\n\t\t{\n\t\t\tcode: 'now-label-value-value-previous',\n\t\t\tmessage: '{newValue} was {oldValue}',\n\t\t\tcomment: 'Describes the change in the value of the field.',\n\t\t},\n\t\t{newValue: value, oldValue: previous},\n\t);\n};\n\nconst _renderJSXValueWithPrevious = (value, previous) => {\n\tconst VALUE_TOKEN = '__VALUE__';\n\tconst PREVIOUS_TOKEN = '__PREVIOUS__';\n\tconst TRANSLATION_TEMPLATE = _renderValueWithPrevious(\n\t\tVALUE_TOKEN,\n\t\tPREVIOUS_TOKEN,\n\t);\n\n\tconst indexOfValueToken = TRANSLATION_TEMPLATE.indexOf(VALUE_TOKEN);\n\tconst indexOfPreviousToken = TRANSLATION_TEMPLATE.indexOf(PREVIOUS_TOKEN);\n\tconst firstIndex = Math.min(indexOfValueToken, indexOfPreviousToken);\n\tconst secondIndex = Math.max(indexOfValueToken, indexOfPreviousToken);\n\tconst firstToken =\n\t\tindexOfValueToken < indexOfPreviousToken ? VALUE_TOKEN : PREVIOUS_TOKEN;\n\tconst secondToken =\n\t\tindexOfValueToken < indexOfPreviousToken ? PREVIOUS_TOKEN : VALUE_TOKEN;\n\n\treturn [\n\t\tTRANSLATION_TEMPLATE.slice(0, firstIndex),\n\t\tfirstToken === VALUE_TOKEN ? value : previous,\n\t\tTRANSLATION_TEMPLATE.slice(firstIndex + firstToken.length, secondIndex),\n\t\tsecondToken === VALUE_TOKEN ? value : previous,\n\t\tTRANSLATION_TEMPLATE.slice(secondIndex + secondToken.length),\n\t].filter(Boolean);\n};\n\nconst renderString = ({value, previous}, i, delimiter, valueCount) => {\n\t// NOTE: array index is not a great way to key an element.  They key will ensure that\n\t// snabbdom replaces the node instead of patches, but the lookup could still break\n\t// in scenarios where the array is modified in place.  This isn't likely to happen currently, but\n\t// if in the future we run into element update issues, then we'll need to add `id` to the items schema\n\t// and make the consumers responsible for ensure array items have a unique id.\n\treturn previous ? (\n\t\t<div className=\"now-align -block-end\" key={i}>\n\t\t\t<div className=\"now-label-value-value\" data-truncation>\n\t\t\t\t{_renderValueWithPrevious(value, previous)}\n\t\t\t</div>\n\t\t\t{_renderValueDelimiter(i, delimiter, valueCount)}\n\t\t</div>\n\t) : (\n\t\t<div className=\"now-align -block-end\" key={i}>\n\t\t\t<div className=\"now-label-value-value\" data-truncation>\n\t\t\t\t{value}\n\t\t\t</div>\n\t\t\t{_renderValueDelimiter(i, delimiter, valueCount)}\n\t\t</div>\n\t);\n};\n\nconst renderTextLink = (value, i, truncated, delimiter, valueCount) => (\n\t// NOTE: array index is not a great way to key an element.  They key will ensure that\n\t// snabbdom replaces the node instead of patches, but the lookup could still break\n\t// in scenarios where the array is modified in place.  This isn't likely to happen currently, but\n\t// if in the future we run into element update issues, then we'll need to add `id` to the items schema\n\t// and make the consumers responsible for ensure array items have a unique id.\n\t<div className=\"now-align -block-end\" key={i}>\n\t\t<now-text-link\n\t\t\tclassName=\"now-label-value-value\"\n\t\t\tshow-tooltip={truncated}\n\t\t\tlabel={value.label}\n\t\t\thref={value.href}\n\t\t\tvariant={value.variant}\n\t\t\tunderlined={value.underlined}\n\t\t\topens-window={value.opensWindow}\n\t\t\tappend-to-payload={{item: value}}\n\t\t\ticon-start={value.iconStart}\n\t\t\ticon-end={value.iconEnd}\n\t\t\tconfig-aria={value.configAria}\n\t\t/>\n\t\t{_renderValueDelimiter(i, delimiter, valueCount)}\n\t</div>\n);\n\nconst renderHighlightedValue = (value, i, delimiter, valueCount) => (\n\t// NOTE: array index is not a great way to key an element.  They key will ensure that\n\t// snabbdom replaces the node instead of patches, but the lookup could still break\n\t// in scenarios where the array is modified in place.  This isn't likely to happen currently, but\n\t// if in the future we run into element update issues, then we'll need to add `id` to the items schema\n\t// and make the consumers responsible for ensure array items have a unique id.\n\t<div className=\"now-label-value-highlighted-value-parent\" key={i}>\n\t\t<now-highlighted-value\n\t\t\tclassName=\"now-label-value-highlighted-value\"\n\t\t\tlabel={value.label}\n\t\t\tcolor={value.color || value.status}\n\t\t\tvariant={value.variant}\n\t\t\tshow-icon={value.showIcon}\n\t\t\ticon={value.icon}\n\t\t/>\n\t\t{_renderValueDelimiter(i, delimiter, valueCount)}\n\t</div>\n);\n\nconst renderJSX = ({value, previous}) => {\n\tconst content = previous\n\t\t? _renderJSXValueWithPrevious(\n\t\t\t\tvalue,\n\t\t\t\t<span className=\"now-label-value-previous\">{previous}</span>,\n\t\t\t)\n\t\t: value;\n\treturn (\n\t\t<div className=\"now-label-value-value\" data-truncation>\n\t\t\t{content}\n\t\t</div>\n\t);\n};\n\nconst renderHTML = ({value, previous}) => {\n\tconst content = previous\n\t\t? _renderValueWithPrevious(\n\t\t\t\tvalue,\n\t\t\t\t`<span class=\"now-label-value-previous\">${previous}</span>`,\n\t\t\t)\n\t\t: value;\n\treturn (\n\t\t<div\n\t\t\tclassName=\"now-label-value-value\"\n\t\t\tdata-truncation\n\t\t\tinnerHTML={DOMPurify.sanitize(content, domPurifyConfig)}\n\t\t/>\n\t);\n};\n\nexport default function renderValue(\n\tvalue,\n\ti,\n\ttruncated,\n\tdelimiter,\n\tvalueCount,\n) {\n\tif (value.type === 'string') {\n\t\treturn renderString(value, i, delimiter, valueCount);\n\t}\n\tif (value.type === 'text-link') {\n\t\treturn renderTextLink(value, i, truncated, delimiter, valueCount);\n\t}\n\tif (value.type === 'highlighted-value') {\n\t\treturn renderHighlightedValue(value, i, delimiter, valueCount);\n\t}\n\tif (value.type === 'jsx') {\n\t\treturn renderJSX(value);\n\t}\n\tif (value.type === 'html') {\n\t\treturn renderHTML(value);\n\t}\n}\n","const valueSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\ttype: {\n\t\t\ttype: 'string',\n\t\t\tenum: ['string', 'text-link', 'highlighted-value', 'jsx', 'html'],\n\t\t},\n\t\tvalue: {\n\t\t\toneOf: [{type: 'string', translatable: true}, {type: 'object'}],\n\t\t},\n\t\tprevious: {type: ['string', 'object']},\n\t\tlabel: {type: 'string', translatable: true},\n\t\tcolor: {type: 'string'},\n\t\tvariant: {type: 'string'},\n\t\tshowIcon: {type: 'boolean'},\n\t\ticon: {type: 'string'},\n\t\thref: {type: 'string'},\n\t\tunderlined: {type: 'boolean'},\n\t\topensWindow: {type: 'boolean'},\n\t\ticonStart: {type: 'string'},\n\t\ticonEnd: {type: 'string'},\n\t},\n};\n\nexport const itemsSchema = {\n\ttype: 'array',\n\titems: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\tvalue: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{type: 'string', translatable: true},\n\t\t\t\t\tvalueSchema,\n\t\t\t\t\t{type: 'array', items: valueSchema},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {makeRedispatchEffect} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-label-value-stacked.scss';\nimport toExtension from './utils/to-extension';\nimport normalizeValues from './utils/normalize-values';\nimport renderValue from './utils/render-value';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport {itemsSchema} from './schemas/label-value-schema';\n\nconst renderItem = (\n\t{label, value},\n\tindex,\n\ttruncated,\n\titemMinWidth,\n\tdelimiter,\n) => {\n\tconst valueCount =\n\t\tArray.isArray(value) && value.length > 1 ? value.length : undefined;\n\n\t// NOTE: array index is not a great way to key an element.  They key will ensure that\n\t// snabbdom replaces the node instead of patches, but the lookup could still break\n\t// in scenarios where the array is modified in place.  This isn't likely to happen currently, but\n\t// if in the future we run into element update issues, then we'll need to add `id` to the items schema\n\t// and make the consumers responsible for ensure array items have a unique id.\n\treturn (\n\t\t<div\n\t\t\tkey={index}\n\t\t\tclassName=\"now-label-value-pair\"\n\t\t\tstyle={itemMinWidth ? {'min-inline-size': itemMinWidth} : undefined}\n\t\t>\n\t\t\t<dt>\n\t\t\t\t<div className=\"now-label-value-label\" data-truncation>\n\t\t\t\t\t{label}\n\t\t\t\t</div>\n\t\t\t</dt>\n\t\t\t<dd>\n\t\t\t\t{normalizeValues(value).map((v, i) =>\n\t\t\t\t\trenderValue(v, i, truncated, delimiter, valueCount),\n\t\t\t\t)}\n\t\t\t</dd>\n\t\t</div>\n\t);\n};\n\nconst view = (state) => {\n\tconst {items, align, size, truncated, itemMinWidth, delimiter} =\n\t\tstate.properties;\n\tconst alignClasses = toExtension(align, [\n\t\t'vertical',\n\t\t'horizontal',\n\t\t'horizontal-equal',\n\t]);\n\tconst sizeClasses = toExtension(size, ['sm', 'md']);\n\tconst customColumnRepeat = `repeat(auto-fit, minmax(${itemMinWidth}, 1fr))`;\n\treturn (\n\t\t<dl\n\t\t\tstyle={\n\t\t\t\titemMinWidth ? {'grid-template-columns': customColumnRepeat} : undefined\n\t\t\t}\n\t\t\tclass={{\n\t\t\t\t['now-label-value']: true,\n\t\t\t\t['-stacked']: true,\n\t\t\t\t['will-truncate']: truncated,\n\t\t\t\t...alignClasses,\n\t\t\t\t...sizeClasses,\n\t\t\t}}\n\t\t>\n\t\t\t{items.map((item, index) =>\n\t\t\t\trenderItem(item, index, truncated, itemMinWidth, delimiter),\n\t\t\t)}\n\t\t</dl>\n\t);\n};\n\n/**\n * The stacked label-value component provides the following layout types:\n * - Vertical: Best for layout label-value in a column or if horizontal space is limited.\n * - Horizontal: Best for displaying label-value in columns or for associating label-values with a header or title.\n * - Horizontal-equal: Best if you have the predefined size of the label-value's parent container because it equally fills the container based on its size.\n *\n * ```jsx\n * <now-label-value-stacked\n * \titems={[\n * \t\t{\n * \t\t\tlabel: 'State',\n * \t\t\tvalue: {type: 'string', value: 'Closed', previous: 'Opened'}\n * \t\t},\n * \t\t{\n * \t\t\tlabel: 'Incident',\n * \t\t\tvalue: {\n * \t\t\t\ttype: 'text-link',\n * \t\t\t\tlabel: 'INC0645648',\n * \t\t\t\thref: '#',\n * \t\t\t\tunderlined: true\n * \t\t\t}\n * \t\t},\n * \t\t{\n * \t\t\tlabel: 'State',\n * \t\t\tvalue: {\n * \t\t\t\ttype: 'highlighted-value',\n * \t\t\t\tlabel: 'In Progress',\n * \t\t\t\tcolor: 'positive',\n * \t\t\t\tshowIcon: true\n * \t\t\t}\n * \t\t}\n * \t]}\n * />\n * ```\n *\n * @seismicElement now-label-value-stacked\n * @summary Label-value set showing the labels vertically above values or horizontally side-by-side.\n * @uib.label Label value stacked\n * @uib.icon label-value-stacked\n * @uib.description Label-value set showing the labels vertically above values or horizontally side-by-side.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, align, items, itemMinWidth, truncated, delimiter\n * @uib.actions NOW_LABEL_VALUE_STACKED#TEXT_LINK_CLICKED\n */\ncreateEnhancedElement('now-label-value-stacked', {\n\tproperties: {\n\t\t/**\n\t\t * Array of label-value items. Labels can have one or more values. Values\n\t\t * can be rendered as a string, text link, highlighted value, or from raw\n\t\t * HTML/JSX.\n\t\t *\n\t\t * Label/value items are configured with the following keys:\n\t\t * - `label`: String. Text displayed as the label. Required.\n\t\t * - `value`: String, Object, or Object[]. Single value or array of values. Required.\n\t\t *\n\t\t * Each `value` can be a string for a simple value or an object for more\n\t\t * complex values. Object values are configured using the following keys:\n\t\t *\n\t\t * string type:\n\t\t * - `type`: String. Renders value as a string.\n\t\t * - `value`: String. Current value.\n\t\t * - `previous`: String. Previous value (crossed out).\n\t\t *\n\t\t * highlighted-value type (see now-highlighted-value documentation for details):\n\t\t * - `type`: String. Enter \"highlighted-value\" to render the value with now-highlighted-value.\n\t\t * - `label`: String. Current value. Required.\n\t\t * - `color`: String. Sets the background/icon color. Default value: \"low\".\n\t\t * - `variant`: String. Sets the shade of background/icon. Default value: \"tertiary\".\n\t\t * - `showIcon`: Boolean. When true, shows a solid circle icon next to the label. Default value: false.\n\t\t * - `icon`: String. Which custom icon to display in the highlighted value instead of the solid circle icon.\n\t\t *\n\t\t * text-link type (see now-text-link documentation for details):\n\t\t * - `type`: String. Enter \"text-link\" to render the value with now-text-link component.\n\t\t * - `label`: String. Current value. Required.\n\t\t * - `href`: String. URL opened when user clicks the link. Required.\n\t\t * - `variant`: String. Sets the link color. Default value: \"primary\".\n\t\t * - `underlined`: Boolean. When true, underlines the link. Default value: false.\n\t\t * - `opensWindow`: Boolean. When true, opens the link in a new window or tab. Default value: false.\n\t\t * - `iconStart`: String. Sets the icon at the start of the link\n\t\t * - `iconEnd`: String. Sets the icon at the end of the link\n\t\t * - `configAria`: Object. Sets the configAria\n\t\t *\n\t\t * jsx type:\n\t\t * - `type`: String. Enter \"jsx\" to render the value as raw JSX.\n\t\t * - `value`: JSX. JSX content. Required.\n\t\t * - `previous`: JSX. Previous JSX content to track changes (crossed out).\n\t\t *\n\t\t * html type:\n\t\t * - `type`: String. Enter \"html\" to render the value as raw HTML.\n\t\t * - `value`: String. HTML content. Required.\n\t\t * - `previous`: String. Previous HTML content to track changes (crossed out). Required.\n\t\t *\n\t\t * Note: `<script>` tags, inline JavaScript, and other possible security exploits will be removed.\n\t\t *\n\t\t * @type {{label: string, values: (string|Object|Object[])}[]}\n\t\t * @uib.description Array of label-value items. Labels can have one or more values. Values can be rendered as a string, text link, highlighted value, or from raw HTML. Avoid using HTML as the values won't be able to be localized\n\t\t * @uib.fieldType json\n\t\t * @uib.defaultValue [{\"label\": \"State\", \"value\": {\"type\": \"string\", \"value\": \"Closed\", \"previous\": \"Opened\"}}, {\"label\": \"Impact\", \"value\": {\"type\": \"string\", \"value\": \"1 - High\"}}, {\"label\": \"Category\", \"value\": {\"type\": \"string\", \"value\": \"Software\"}}, {\"label\": \"Assignment group\", \"value\": [{\"type\": \"string\", \"value\": \"Software\"}, {\"type\": \"text-link\", \"label\": \"Hardware\", \"href\": \"#\", \"underlined\": true}, {\"type\": \"string\", \"value\": \"Telephony\"}, {\"type\": \"highlighted-value\", \"label\": \"Routers\"}, {\"type\": \"string\", \"value\": \"Monitors\"}]}, {\"label\": \"Assigned to\", \"value\": {\"type\": \"string\", \"value\": \"Fred Luddy\"}}]\n\t\t * @uib.typeMetadata.emptyStateBehavior EMPTY_ARRAY\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * Positions label/value items in relation to each other:\n\t\t * - \"vertical\": Displays label-value pairs on top of each other.\n\t\t * - \"horizontal\": Displays label-value pairs side-by-side.\n\t\t * - \"horizontal-equal\": Displays label-value pairs side-by-side, expanding to equally fill its parent container.\n\t\t * @type {(\"vertical\"|\"horizontal\"|\"horizontal-equal\")}\n\t\t * @uib.label Alignment\n\t\t * @uib.description Positions label/value items in relation to each other: [vertical] - Displays label-value pairs on top of each other. [horizontal] - Displays label-value pairs side-by-side. [horizontal-equal] - Displays label-value pairs side-by-side, expanding to equally fill the parent container.\n\t\t */\n\t\talign: {\n\t\t\tdefault: 'vertical',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['vertical', 'horizontal', 'horizontal-equal'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the label size and value text.\n\t\t * @type {(\"sm\"|\"md\")}\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md']}},\n\t\t/**\n\t\t * When true, truncates labels and values that do not fit on a single\n\t\t * line within the parent container. Has no effect on `html` or `jsx` items.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to truncate labels and values that do not fit on a single line within the parent container\n\t\t */\n\t\ttruncated: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * The default min-width of an individual label-value pair is 50px. Set this property\n\t\t * to override the min-width of each item. Value must have units.\n\t\t * @type {string}\n\t\t * @uib.label Item min. width\n\t\t * @uib.description Set this property to override the min-width of each item. Value must have units\n\t\t */\n\t\titemMinWidth: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Character displayed as a delimiter between multiple values associated with\n\t\t * a label.\n\t\t * @type {string}\n\t\t * @uib.description Character displayed as a delimiter between multiple values associated with a label\n\t\t */\n\t\tdelimiter: {default: ',', schema: {type: 'string'}},\n\t},\n\tactionHandlers: {\n\t\t'NOW_TEXT_LINK#CLICKED': makeRedispatchEffect(\n\t\t\t'NOW_LABEL_VALUE_STACKED#TEXT_LINK_CLICKED',\n\t\t),\n\t},\n\tview,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t},\n\t\t{\n\t\t\tbehavior: truncationBehavior,\n\t\t},\n\t\t{\n\t\t\tbehavior: tooltipBehavior,\n\t\t},\n\t],\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when a label-value of type `text-link` is clicked.\n\t\t * Payload contains the configuration object from the `items` array\n\t\t * that corresponds to the clicked link. You can add keys to uniquely\n\t\t * identify the link.\n\t\t * @type {{item: Object}}\n\t\t * @uib.description Dispatched when a label-value of type `text-link` is clicked. Payload contains the configuration object from the `items` array that corresponds to the clicked link. You can add keys to uniquely identify the link.\n\t\t */\n\t\t'NOW_LABEL_VALUE_STACKED#TEXT_LINK_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\titem: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {makeRedispatchEffect} from '@servicenow/library-enhanced-utils';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_now-label-value-tabbed.scss';\nimport toExtension from './utils/to-extension';\nimport normalizeValues from './utils/normalize-values';\nimport renderValue from './utils/render-value';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport {itemsSchema} from './schemas/label-value-schema';\nimport themeBehavior from '@servicenow/behavior-theme';\n\nconst renderItem = ({label, value}, index, delimiter, wrapLabel) => {\n\tconst valueCount =\n\t\tArray.isArray(value) && value.length > 1 ? value.length : undefined;\n\n\t// NOTE: array index is not a great way to key an element.  They key will ensure that\n\t// snabbdom replaces the node instead of patches, but the lookup could still break\n\t// in scenarios where the array is modified in place.  This isn't likely to happen currently, but\n\t// if in the future we run into element update issues, then we'll need to add `id` to the items schema\n\t// and make the consumers responsible for ensure array items have a unique id.\n\treturn (\n\t\t<Fragment key={index}>\n\t\t\t<dt>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t['now-label-value-label']: true,\n\t\t\t\t\t\t['will-wrap']: wrapLabel,\n\t\t\t\t\t}}\n\t\t\t\t\tdata-truncation={!wrapLabel ? true : undefined}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</div>\n\t\t\t</dt>\n\t\t\t<dd>\n\t\t\t\t{normalizeValues(value).map((v, i) =>\n\t\t\t\t\trenderValue(v, i, false, delimiter, valueCount),\n\t\t\t\t)}\n\t\t\t</dd>\n\t\t</Fragment>\n\t);\n};\n\nconst view = (state) => {\n\tconst {items, size, delimiter, labelWidth, wrapLabel} = state.properties;\n\tconst sizeClasses = toExtension(size, ['sm', 'md']);\n\tlet style = undefined;\n\n\tif (labelWidth) {\n\t\tconst px = state.behaviors.theme[`$now-global-space--sm`].px / 2 + 'px';\n\t\tstyle = {\n\t\t\t'grid-template-columns': `calc(${labelWidth} -  ${px}) minmax(0, auto)`,\n\t\t};\n\t}\n\n\treturn (\n\t\t<dl\n\t\t\tclass={{\n\t\t\t\t['now-label-value']: true,\n\t\t\t\t['-tabbed']: true,\n\t\t\t\t['has-multiple']: items.length > 1,\n\t\t\t\t...sizeClasses,\n\t\t\t}}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{items.map((item, index) =>\n\t\t\t\trenderItem(item, index, delimiter, wrapLabel),\n\t\t\t)}\n\t\t</dl>\n\t);\n};\n\n/**\n * Label-value set showing the labels and values horizontally side-by-side.\n *\n * ```jsx\n * <now-label-value-tabbed\n * \titems={[\n * \t\t{\n * \t\t\tlabel: 'State',\n * \t\t\tvalue: {type: 'string', value: 'Closed', previous: 'Opened'}\n * \t\t},\n * \t\t{\n * \t\t\tlabel: 'Incident',\n * \t\t\tvalue: {\n * \t\t\t\ttype: 'text-link',\n * \t\t\t\tlabel: 'INC0645648',\n * \t\t\t\thref: '#',\n * \t\t\t\tunderlined: true\n * \t\t\t}\n * \t\t},\n * \t\t{\n * \t\t\tlabel: 'State',\n * \t\t\tvalue: {\n * \t\t\t\ttype: 'highlighted-value',\n * \t\t\t\tlabel: 'In Progress',\n * \t\t\t\tcolor: 'positive',\n * \t\t\t\tshowIcon: true\n * \t\t\t}\n * \t\t}\n * \t]}\n * />\n * ```\n *\n * @seismicElement now-label-value-tabbed\n * @summary  Method to scan and read label-values\n * in a list form with a solution for displaying multiple label-values for cases in which\n * horizontal space is limited.\n * @uib.label Label value tabbed\n * @uib.icon label-value-tabbed\n * @uib.description Method to scan and read label-values in a list form with a solution for displaying multiple label-values for cases in which horizontal space is limited.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, items, delimiter, labelWidth, wrapLabel\n * @uib.actions NOW_LABEL_VALUE_TABBED#TEXT_LINK_CLICKED\n */\ncreateEnhancedElement('now-label-value-tabbed', {\n\tproperties: {\n\t\t/**\n\t\t * Array of label-value items. Labels can have one or more values. Values\n\t\t * can be rendered as a string, text link, highlighted value, or from raw\n\t\t * HTML/JSX.\n\t\t *\n\t\t * Label/value items are configured with the following keys:\n\t\t * - `label`: String. Text displayed as the label. Required.\n\t\t * - `value`: String, Object, or Object[]. Single value or array of values. Required.\n\t\t *\n\t\t * Each `value` can be a string for a simple value or an object for more\n\t\t * complex values. Object values are configured using the following keys:\n\t\t *\n\t\t * String type:\n\t\t * - `type`: String. Renders value as a string.\n\t\t * - `value`: String. Current value.\n\t\t * - `previous`: String. Previous value (crossed out).\n\t\t *\n\t\t * highlighted-value type (see now-highlighted-value documentation for details):\n\t\t * - `type`: String. Enter \"highlighted-value\" to render the value with now-highlighted-value.\n\t\t * - `label`: String. Current value. Required.\n\t\t * - `color`: String. Sets the background/icon color. Default value: \"low\".\n\t\t * - `variant`: String. Sets the shade of background/icon. Default value: \"tertiary\".\n\t\t * - `showIcon`: Boolean. When true, shows a solid circle icon next to the label. Default value: false.\n\t\t * - `icon`: String. Which custom icon to display in the highlighted value instead of the solid circle icon.\n\t\t *\n\t\t * text-link type (see now-text-link documentation for details):\n\t\t * - `type`: String. Enter \"text-link\" to render the value with now-text-link component.\n\t\t * - `label`: String. Current value. Required.\n\t\t * - `href`: String. URL opened when user clicks the link. Required.\n\t\t * - `variant`: String. Sets the link color. Default value: \"primary\".\n\t\t * - `underlined`: Boolean. When true, underlines the link. Default value: false.\n\t\t * - `opensWindow`: Boolean. When true, opens the link in a new window or tab. Default value: false.\n\t\t * - `configAria`: Object. Sets the configAria.\n\t\t *\n\t\t * jsx type:\n\t\t * - `type`: String. Enter \"jsx\" to render the value as raw JSX.\n\t\t * - `value`: JSX. JSX content. Required.\n\t\t * - `previous`: JSX. Previous JSX content to track changes (crossed out).\n\t\t *\n\t\t * html type:\n\t\t * - `type`: String. Enter \"html\" to render the value as raw HTML.\n\t\t * - `value`: String. HTML content. Required.\n\t\t * - `previous`: String. Previous HTML content to track changes (crossed out). Required.\n\t\t *\n\t\t * Note: `<script>` tags, inline JavaScript, and other possible security exploits will be removed.\n\t\t *\n\t\t * @type {{label: string, values: (string|Object|Object[])}[]}\n\t\t * @uib.description Array of label-value items. Labels can have one or more values. Values can be rendered as a string, text link, highlighted value, or from raw HTML. Avoid using HTML as values won't be able to be localized\n\t\t * @uib.fieldType json\n\t\t * @uib.defaultValue [{\"label\": \"State\", \"value\": {\"type\": \"string\", \"value\": \"Closed\", \"previous\": \"Opened\"}}, {\"label\": \"Impact\", \"value\": {\"type\": \"string\", \"value\": \"1 - High\"}}, {\"label\": \"Category\", \"value\": {\"type\": \"string\", \"value\": \"Software\"}}, {\"label\": \"Assignment group\", \"value\": [{\"type\": \"string\", \"value\": \"Software\"}, {\"type\": \"text-link\", \"label\": \"Hardware\", \"href\": \"#\", \"underlined\": true}, {\"type\": \"string\", \"value\": \"Telephony\"}, {\"type\": \"highlighted-value\", \"label\": \"Routers\"}, {\"type\": \"string\", \"value\": \"Monitors\"}]}, {\"label\": \"Assigned to\", \"value\": {\"type\": \"string\", \"value\": \"Fred Luddy\"}}]\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * Sets the label size and value text.\n\t\t * @type {(\"sm\"|\"md\")}\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md']}},\n\t\t/**\n\t\t * Character displayed as delimiter between multiple values associated with\n\t\t * a label.\n\t\t * @type {string}\n\t\t * @uib.description Character displayed as delimiter between multiple values associated with a label.\n\t\t */\n\t\tdelimiter: {default: ',', schema: {type: 'string'}},\n\t\t/**\n\t\t * Set this property to specify the width of the item label. Value must have units.\n\t\t * @type {string}\n\t\t * @uib.label Label width\n\t\t * @uib.description Set this property to specify the width of the item label. Value must have units\n\t\t */\n\t\tlabelWidth: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tactionHandlers: {\n\t\t'NOW_TEXT_LINK#CLICKED': makeRedispatchEffect(\n\t\t\t'NOW_LABEL_VALUE_TABBED#TEXT_LINK_CLICKED',\n\t\t),\n\t},\n\tview,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t},\n\t\t{\n\t\t\tbehavior: truncationBehavior,\n\t\t},\n\t\t{\n\t\t\tbehavior: tooltipBehavior,\n\t\t},\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: ['global.space*'],\n\t\t\t},\n\t\t},\n\t],\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when a label-value of type `text-link` is clicked.\n\t\t * Payload contains the configuration object from the `items` array\n\t\t * that corresponds to the clicked link. You can add keys to uniquely\n\t\t * identify the link.\n\t\t * @type {{item: Object}}\n\t\t * @uib.description Dispatched when a label-value of type `text-link` is clicked. Payload contains the configuration object from the `items` array that corresponds to the clicked link. You can add keys to uniquely identify the link.\n\t\t */\n\t\t'NOW_LABEL_VALUE_TABBED#TEXT_LINK_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\titem: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n});\n","import './now-label-value-inline';\nimport './now-label-value-stacked';\nimport './now-label-value-tabbed';\n\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nexport {itemsSchema} from './schemas/label-value-schema';\n","import \"@servicenow/now-pill\";\nimport \"@servicenow/now-button\";\nimport \"@servicenow/now-label-value\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport { t } from \"sn-translate\";\nimport { isEmpty } from \"lodash\";\nimport Divider from \"./Divider\";\nimport {\n\tAPPLIED_FACETS_TRUNCATION,\n\tAPPLIED_FACET_LIST,\n\tSELECTOR_TYPE,\n\tSHOW_FEWER_LABEL,\n\tSTACKED_PILL_OR_FACET_LABEL,\n\tSTACKED_PILL_AND_FACET_LABEL,\n\tSTACKED_TYPE,\n\tFACET_TYPE\n} from \"../constants\";\nimport {\n\t_getAppliedFacetLabelsByType,\n\t_getTruncatedLabels,\n\t_focusWithRetry\n} from \"../utils\";\n\nconst focusFirstPill = (elm, onFocusComplete) => {\n\t_focusWithRetry(() => {\n\t\t// Focus the dismiss button (X) inside the pill, not the label button\n\t\tconst dismissButton = elm.shadowRoot?.getElementById(\"dismiss\");\n\t\t// now-button-iconic has its own shadow DOM with the actual button inside\n\t\treturn dismissButton?.shadowRoot?.querySelector(\"button\");\n\t}, onFocusComplete);\n};\n\nconst AppliedFacets = ({\n\tappliedFacetFilters,\n\ttruncateAppliedAndFacets,\n\ttruncateAppliedOrFacets,\n\tshowEndingDivider,\n\tenableLabelTranslation,\n\ttranslatedLabels,\n\tfacets,\n\tshouldFocusPill,\n\tonFocusComplete\n}) => {\n\tconst appliedFilters = appliedFacetFilters\n\t\t.map(filter => filter.facetFilter)\n\t\t.filter(item => !isEmpty(item));\n\n\tconst applicableSingleSelectLabels = _getAppliedFacetLabelsByType(\n\t\tappliedFacetFilters,\n\t\tfacets,\n\t\tSELECTOR_TYPE.SINGLE\n\t);\n\n\tconst applicableMultiSelectLabels = _getAppliedFacetLabelsByType(\n\t\tappliedFacetFilters,\n\t\tfacets,\n\t\tSELECTOR_TYPE.MULTIPLE_AND\n\t);\n\n\tconst truncateANDLabels = _getTruncatedLabels(\n\t\t[...applicableSingleSelectLabels, ...applicableMultiSelectLabels],\n\t\ttruncateAppliedAndFacets,\n\t\tfalse\n\t);\n\n\tconst applicableORLabels = _getAppliedFacetLabelsByType(\n\t\tappliedFacetFilters,\n\t\tfacets,\n\t\tSELECTOR_TYPE.MULTIPLE_OR\n\t);\n\n\tconst truncateORLabels = _getTruncatedLabels(\n\t\tapplicableORLabels,\n\t\tfalse,\n\t\ttruncateAppliedOrFacets\n\t);\n\n\tconst orPills = truncateORLabels.map((filter, index) => {\n\t\tconst disabled = !filter[1];\n\t\tconst facetValue = filter[2];\n\t\tconst label =\n\t\t\tenableLabelTranslation && translatedLabels[filter[0]]\n\t\t\t\t? translatedLabels[filter[0]]\n\t\t\t\t: filter[0];\n\n\t\tconst appendPayload = {\n\t\t\tlabel,\n\t\t\tappliedFilters,\n\t\t\tfacets,\n\t\t\tfacetValue,\n\t\t\tdismissedViaKeyboard: false\n\t\t};\n\n\t\t// Only focus first OR pill if there are no AND pills\n\t\tconst isFirstPill = index === 0 && truncateANDLabels.length === 0;\n\n\t\tconst focusHook = ({ elm }) => {\n\t\t\tif (shouldFocusPill && isFirstPill) {\n\t\t\t\tfocusFirstPill(elm, onFocusComplete);\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<now-pill\n\t\t\t\thook-insert={focusHook}\n\t\t\t\thook-postpatch={focusHook}\n\t\t\t\ton-keydown={event => {\n\t\t\t\t\tif ([\" \", \"Enter\"].includes(event.key)) {\n\t\t\t\t\t\tappendPayload.dismissedViaKeyboard = true;\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tlabel={label}\n\t\t\t\tsize=\"sm\"\n\t\t\t\tselected\n\t\t\t\tmanageSelected\n\t\t\t\tcanDismiss\n\t\t\t\tinteraction=\"none\"\n\t\t\t\tappend-to-payload={appendPayload}\n\t\t\t\tstyle={{\n\t\t\t\t\tpaddingTop: \"2px\",\n\t\t\t\t\tpaddingRight: \"8px\",\n\t\t\t\t\tpaddingBottom: \"8px\",\n\t\t\t\t\tmaxWidth: \"100%\"\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t});\n\n\tconst andPills = truncateANDLabels.map((filter, index) => {\n\t\tconst disabled = !filter[1];\n\t\tconst facetValue = filter[2];\n\t\tconst label =\n\t\t\tenableLabelTranslation && translatedLabels[filter[0]]\n\t\t\t\t? translatedLabels[filter[0]]\n\t\t\t\t: filter[0];\n\n\t\tconst appendedPayload = {\n\t\t\tlabel,\n\t\t\tappliedFilters,\n\t\t\tfacets,\n\t\t\tfacetValue,\n\t\t\tdismissedViaKeyboard: false\n\t\t};\n\n\t\tconst isFirstPill = index === 0;\n\n\t\tconst focusHook = ({ elm }) => {\n\t\t\tif (shouldFocusPill && isFirstPill) {\n\t\t\t\tfocusFirstPill(elm, onFocusComplete);\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<now-pill\n\t\t\t\thook-insert={focusHook}\n\t\t\t\thook-postpatch={focusHook}\n\t\t\t\ton-keydown={event => {\n\t\t\t\t\tif ([\" \", \"Enter\", \"Backspace\", \"Delete\"].includes(event.key)) {\n\t\t\t\t\t\tappendedPayload.dismissedViaKeyboard = true;\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tlabel={label}\n\t\t\t\tsize=\"sm\"\n\t\t\t\tselected\n\t\t\t\tmanageSelected\n\t\t\t\tcanDismiss\n\t\t\t\tappend-to-payload={appendedPayload}\n\t\t\t\tstyle={{\n\t\t\t\t\tpaddingTop: \"2px\",\n\t\t\t\t\tpaddingRight: \"8px\",\n\t\t\t\t\tpaddingBottom: \"8px\",\n\t\t\t\t\tmaxWidth: \"100%\"\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t});\n\n\tconst stackedORPills = [\n\t\t{\n\t\t\tlabel: STACKED_PILL_OR_FACET_LABEL,\n\t\t\tvalue: {\n\t\t\t\ttype: STACKED_TYPE,\n\t\t\t\tvalue: orPills\n\t\t\t}\n\t\t}\n\t];\n\n\tconst stackedANDPills = [\n\t\t{\n\t\t\tlabel: STACKED_PILL_AND_FACET_LABEL,\n\t\t\tvalue: {\n\t\t\t\ttype: STACKED_TYPE,\n\t\t\t\tvalue: andPills\n\t\t\t}\n\t\t}\n\t];\n\n\tlet andLength =\n\t\tapplicableSingleSelectLabels.length + applicableMultiSelectLabels.length;\n\n\tlet showORLength =\n\t\tapplicableORLabels.length > APPLIED_FACETS_TRUNCATION\n\t\t\t? applicableORLabels.length - APPLIED_FACETS_TRUNCATION\n\t\t\t: 0;\n\n\tlet showANDLength =\n\t\tandLength > APPLIED_FACETS_TRUNCATION\n\t\t\t? andLength - APPLIED_FACETS_TRUNCATION\n\t\t\t: 0;\n\n\tlet andORShowLength = showANDLength + showORLength;\n\n\tconst showMoreAndLabel = t(\n\t\t\"+ {0} more\",\n\t\tandLength - APPLIED_FACETS_TRUNCATION\n\t);\n\tconst showMoreORLabel = t(\n\t\t\"+ {0} more\",\n\t\tapplicableORLabels.length - APPLIED_FACETS_TRUNCATION\n\t);\n\n\tconst showMoreLabel = t(\"+ {0} more\", andORShowLength);\n\n\tlet truncateAppliedFacets =\n\t\ttruncateAppliedAndFacets || truncateAppliedOrFacets;\n\n\tconst stackedPills = (\n\t\t<div>\n\t\t\t<now-label-value-stacked\n\t\t\t\tclassName=\"labels-with-pills\"\n\t\t\t\titems={stackedANDPills}\n\t\t\t/>\n\t\t\t{andLength > APPLIED_FACETS_TRUNCATION ? (\n\t\t\t\t<now-button-bare\n\t\t\t\t\tlabel={truncateAppliedAndFacets ? showMoreAndLabel : SHOW_FEWER_LABEL}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tclassName=\"show-more-less\"\n\t\t\t\t\tappend-to-payload={\n\t\t\t\t\t\ttruncateAppliedAndFacets\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\taction: APPLIED_FACET_LIST.EXPAND,\n\t\t\t\t\t\t\t\t\ttype: FACET_TYPE.AND\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\taction: APPLIED_FACET_LIST.COLLAPSE,\n\t\t\t\t\t\t\t\t\ttype: FACET_TYPE.AND\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t}\n\t\t\t\t\thidePadding\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Fragment />\n\t\t\t)}\n\n\t\t\t<now-label-value-stacked\n\t\t\t\tclassName=\"labels-with-pills\"\n\t\t\t\titems={stackedORPills}\n\t\t\t/>\n\t\t\t{applicableORLabels.length > APPLIED_FACETS_TRUNCATION ? (\n\t\t\t\t<now-button-bare\n\t\t\t\t\tlabel={truncateAppliedOrFacets ? showMoreORLabel : SHOW_FEWER_LABEL}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tclassName=\"applied-facet-pill\"\n\t\t\t\t\tappend-to-payload={\n\t\t\t\t\t\ttruncateAppliedOrFacets\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\taction: APPLIED_FACET_LIST.EXPAND,\n\t\t\t\t\t\t\t\t\ttype: FACET_TYPE.OR\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\taction: APPLIED_FACET_LIST.COLLAPSE,\n\t\t\t\t\t\t\t\t\ttype: FACET_TYPE.OR\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t}\n\t\t\t\t\thidePadding\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Fragment />\n\t\t\t)}\n\t\t</div>\n\t);\n\n\tconst showFewerOrMore =\n\t\tapplicableORLabels.length > APPLIED_FACETS_TRUNCATION ||\n\t\tandLength > APPLIED_FACETS_TRUNCATION ? (\n\t\t\t<now-button-bare\n\t\t\t\tlabel={truncateAppliedFacets ? showMoreLabel : SHOW_FEWER_LABEL}\n\t\t\t\tsize=\"sm\"\n\t\t\t\tclassName=\"applied-facet-pill\"\n\t\t\t\tappend-to-payload={\n\t\t\t\t\ttruncateAppliedFacets\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\taction: APPLIED_FACET_LIST.EXPAND\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\taction: APPLIED_FACET_LIST.COLLAPSE\n\t\t\t\t\t\t  }\n\t\t\t\t}\n\t\t\t\thidePadding\n\t\t\t/>\n\t\t) : (\n\t\t\t<Fragment />\n\t\t);\n\n\treturn appliedFilters.length > 0 ? (\n\t\t<Fragment>\n\t\t\t<Divider variant=\"tertiary\" />\n\t\t\t<div className=\"applied-facets\">\n\t\t\t\t{andPills.length > 0 && orPills.length === 0 ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{andPills}\n\t\t\t\t\t\t<div> {showFewerOrMore} </div>\n\t\t\t\t\t</div>\n\t\t\t\t) : andPills.length === 0 && orPills.length > 0 ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{orPills}\n\t\t\t\t\t\t<div> {showFewerOrMore} </div>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\tstackedPills\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{showEndingDivider ? <Divider variant=\"tertiary\" /> : \"\"}\n\t\t</Fragment>\n\t) : (\n\t\t\"\"\n\t);\n};\n\nexport default AppliedFacets;\n","import \"@servicenow/now-loader\";\nimport Divider from \"./Divider\";\n\nconst Loader = () => (\n\t<div>\n\t\t<Divider variant=\"tertiary\" />\n\t\t<div className=\"container-loader\">\n\t\t\t<now-loader size=\"md\" />\n\t\t</div>\n\t</div>\n);\n\nexport default Loader;\n","import Panel from \"./Panel\";\nimport AppliedFacets from \"../../common/view/AppliedFacets\";\nimport Loader from \"../../common/view/Loader\";\nimport { CLEAR_FOCUS_TARGET } from \"../actions\";\nimport { FOCUS_TARGET } from \"../../common/constants\";\n\nconst PanelList = ({\n\tfacets,\n\tfacetsMetadata,\n\tappliedFacetFilters,\n\ttruncateAppliedFacets,\n\ttruncateAppliedAndFacets,\n\ttruncateAppliedOrFacets,\n\tnowId,\n\tdispatch,\n\tisGlobal,\n\tenableLabelTranslation,\n\ttranslatedLabels,\n\tfocusTarget,\n\tisLoading\n}) =>\n\tisLoading ? (\n\t\t<Loader />\n\t) : (\n\t\t<ul className=\"panel\" role=\"presentation\">\n\t\t\t{\n\t\t\t\t<AppliedFacets\n\t\t\t\t\tappliedFacetFilters={appliedFacetFilters}\n\t\t\t\t\ttruncateAppliedFacets={truncateAppliedFacets}\n\t\t\t\t\ttruncateAppliedAndFacets={truncateAppliedAndFacets}\n\t\t\t\t\ttruncateAppliedOrFacets={truncateAppliedOrFacets}\n\t\t\t\t\tshowEndingDivider={facets.length === 0}\n\t\t\t\t\tenableLabelTranslation={enableLabelTranslation}\n\t\t\t\t\ttranslatedLabels={translatedLabels}\n\t\t\t\t\tfacets={facets}\n\t\t\t\t\tshouldFocusPill={focusTarget === FOCUS_TARGET.PILL}\n\t\t\t\t\tonFocusComplete={() => dispatch(CLEAR_FOCUS_TARGET)}\n\t\t\t\t/>\n\t\t\t}\n\t\t\t{facets.map((facet, index) => {\n\t\t\t\tconst { name, facetConfigSysId, type } = facet;\n\t\t\t\tconst isExpanded = facetsMetadata[facetConfigSysId]?.expanded;\n\t\t\t\tconst disabled = facetsMetadata[facetConfigSysId]?.disabled;\n\t\t\t\tconst showEndingDivider = index === facets.length - 1;\n\t\t\t\tconst isFirstAccordion = index === 0;\n\t\t\t\treturn (\n\t\t\t\t\t<Panel\n\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\tlabel={name}\n\t\t\t\t\t\tfacetConfigSysId={facetConfigSysId}\n\t\t\t\t\t\tfacetType={type}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\texpanded={isExpanded}\n\t\t\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\t\t\tfacet={facet}\n\t\t\t\t\t\tshowEndingDivider={showEndingDivider}\n\t\t\t\t\t\tnowId={nowId}\n\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\tshouldFocus={\n\t\t\t\t\t\t\tfocusTarget === FOCUS_TARGET.ACCORDION && isFirstAccordion\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonFocusComplete={() => dispatch(CLEAR_FOCUS_TARGET)}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ul>\n\t);\n\nexport default PanelList;\n","import \"@servicenow/now-button\";\nimport \"@servicenow/now-heading\";\nimport {\n\tALL_CLEARED,\n\tTOGGLE_FACET_PANEL_VISIBILITY\n} from \"../../common/actions\";\nimport {\n\tCLEAR_ALL_LABEL,\n\tCLEAR_ALL_WCAG_LABEL,\n\tHIDE_FILTERS_LABEL,\n\tSPACE_KEY,\n\tENTER_KEY\n} from \"../../common/constants\";\nimport { _anyItemsSelected } from \"../../common/utils\";\n\nconst Header = ({\n\tfacetsMetadata,\n\tlabel,\n\tappliedFacetFilters,\n\tnowId,\n\tdispatch,\n\tisGlobal,\n\tfacetPanelIsHidden,\n\tfocusHideFacetsButton,\n\tupdateProperties,\n\tshowHideFiltersButton\n}) => {\n\tconst anyItemsSelected = _anyItemsSelected(\n\t\tfacetsMetadata,\n\t\tappliedFacetFilters\n\t);\n\n\tconst hideButton = [\n\t\t<now-button-bare\n\t\t\thook-update={({ elm }) =>\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tfocusHideFacetsButton &&\n\t\t\t\t\t\telm.shadowRoot.querySelector(\"button\")?.focus();\n\t\t\t\t\tupdateProperties({ focusHideFacetsButton: false });\n\t\t\t\t})\n\t\t\t}\n\t\t\tvariant={isGlobal ? \"secondary\" : \"primary\"}\n\t\t\tlabel={HIDE_FILTERS_LABEL}\n\t\t\tconfigAria={{ \"aria-label\": HIDE_FILTERS_LABEL }}\n\t\t\tsize=\"sm\"\n\t\t\thidePadding\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(TOGGLE_FACET_PANEL_VISIBILITY, {\n\t\t\t\t\tfacetPanelIsHidden: true\n\t\t\t\t});\n\t\t\t}}\n\t\t\ton-keypress={e => {\n\t\t\t\t// to focus show facets button on Enter or Space key\n\t\t\t\tif (e.keyCode == ENTER_KEY || e.keyCode == SPACE_KEY) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tdispatch(TOGGLE_FACET_PANEL_VISIBILITY, {\n\t\t\t\t\t\tfocusShowFacetsButton: true,\n\t\t\t\t\t\tfacetPanelIsHidden: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t/>\n\t];\n\n\tlet clearedViaKeyboard = false;\n\n\tconst clearButton = anyItemsSelected ? (\n\t\t<div className={anyItemsSelected ? \"clear-button\" : \"clear-button-hidden\"}>\n\t\t\t<now-button-bare\n\t\t\t\tlabel={CLEAR_ALL_LABEL}\n\t\t\t\tconfigAria={{ \"aria-label\": CLEAR_ALL_WCAG_LABEL }}\n\t\t\t\tsize=\"sm\"\n\t\t\t\thidePadding\n\t\t\t\ton-keydown={event => {\n\t\t\t\t\tif ([\" \", \"Enter\"].includes(event.key)) {\n\t\t\t\t\t\tclearedViaKeyboard = true;\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(ALL_CLEARED, { clearedViaKeyboard });\n\t\t\t\t\tclearedViaKeyboard = false;\n\t\t\t\t}}\n\t\t\t\tvariant={isGlobal ? \"secondary\" : \"primary\"}\n\t\t\t\tdisabled={!anyItemsSelected}\n\t\t\t/>{\" \"}\n\t\t</div>\n\t) : null;\n\n\treturn (\n\t\t<div className={`tree-root-header${facetPanelIsHidden ? \"-hidden\" : \"\"}`}>\n\t\t\t<now-heading\n\t\t\t\tvariant={isGlobal ? \"title-tertiary\" : \"title-primary\"}\n\t\t\t\tlevel=\"2\"\n\t\t\t\tlabel={label}\n\t\t\t\thasNoMargin\n\t\t\t\twontWrap\n\t\t\t\ttitle={label}\n\t\t\t\tid={`${nowId}_tree_label`}\n\t\t\t/>\n\t\t\t<div className=\"header-button-container\">\n\t\t\t\t{showHideFiltersButton ? hideButton : null}\n\t\t\t\t{showHideFiltersButton && anyItemsSelected ? (\n\t\t\t\t\t<span className=\"button-separator\">|</span>\n\t\t\t\t) : null}\n\t\t\t\t{clearButton}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Header;\n","import isEmpty from \"lodash/isEmpty\";\n\nimport PanelList from \"./PanelList\";\nimport Header from \"./Header\";\n\nconst _isEmptyFacet = facets => {\n\tif (isEmpty(facets)) return true;\n\n\treturn facets.every(facetObject => facetObject.data.options.length === 0);\n};\n\nconst view = (state, { dispatch, updateProperties }) => {\n\tconst {\n\t\tfacetsMetadata,\n\t\ttruncateAppliedFacets,\n\t\ttruncateAppliedAndFacets,\n\t\ttruncateAppliedOrFacets,\n\t\tproperties,\n\t\tfocusTarget\n\t} = state;\n\tconst {\n\t\tlabel,\n\t\tfacets,\n\t\tselectedOptions,\n\t\tnowId,\n\t\tisGlobal,\n\t\tfacetPanelIsHidden,\n\t\tfocusHideFacetsButton,\n\t\tenableLabelTranslation,\n\t\ttranslatedLabels,\n\t\tsearchFromChat,\n\t\tisLoading,\n\t\tsearchSources,\n\t\tshowHideFiltersButton\n\t} = properties;\n\n\tconst showFacets =\n\t\tisLoading ||\n\t\t(!facetPanelIsHidden &&\n\t\t\t((searchSources && searchSources.length > 0) ||\n\t\t\t\t!_isEmptyFacet(facets) ||\n\t\t\t\t!isEmpty(selectedOptions)));\n\n\treturn showFacets ? (\n\t\t<panel\n\t\t\tclass={{\n\t\t\t\t\"facet-panel-tree\": !facetPanelIsHidden,\n\t\t\t\t\"facet-panel-tree-hidden\": facetPanelIsHidden,\n\t\t\t\t\"facet-panel-tree-global\": isGlobal,\n\t\t\t\t\"facet-panel-tree-na-self-service\": searchFromChat\n\t\t\t}}\n\t\t>\n\t\t\t<Header\n\t\t\t\tdispatch={dispatch}\n\t\t\t\tupdateProperties={updateProperties}\n\t\t\t\tlabel={label}\n\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\tappliedFacetFilters={selectedOptions}\n\t\t\t\tnowId={nowId}\n\t\t\t\tisGlobal={isGlobal}\n\t\t\t\tfacetPanelIsHidden={facetPanelIsHidden}\n\t\t\t\tfocusHideFacetsButton={focusHideFacetsButton}\n\t\t\t\tshowHideFiltersButton={showHideFiltersButton}\n\t\t\t/>\n\t\t\t<PanelList\n\t\t\t\tdispatch={dispatch}\n\t\t\t\tfacets={facets}\n\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\tappliedFacetFilters={selectedOptions}\n\t\t\t\ttruncateAppliedFacets={truncateAppliedFacets}\n\t\t\t\ttruncateAppliedAndFacets={truncateAppliedAndFacets}\n\t\t\t\ttruncateAppliedOrFacets={truncateAppliedOrFacets}\n\t\t\t\tnowId={nowId}\n\t\t\t\tisGlobal={isGlobal}\n\t\t\t\tenableLabelTranslation={enableLabelTranslation}\n\t\t\t\ttranslatedLabels={translatedLabels}\n\t\t\t\tfocusTarget={focusTarget}\n\t\t\t\tisLoading={isLoading}\n\t\t\t/>\n\t\t</panel>\n\t) : null;\n};\n\nexport default view;\n","import cloneDeep from \"lodash/cloneDeep\";\nimport { _getAccordionFocusTarget } from \"../common/utils\";\nimport { UP_ARROW_KEY, DOWN_ARROW_KEY } from \"../common/constants\";\n\nexport const sectionFoldToggledEffect = ({ action, state, updateState }) => {\n\tconst { facetsMetadata } = state;\n\tconst updatedFacetsMetadata = cloneDeep(facetsMetadata);\n\tconst {\n\t\tpayload: { value }\n\t} = action;\n\n\tupdatedFacetsMetadata[value].expanded = !updatedFacetsMetadata[value]\n\t\t.expanded;\n\tupdateState({ facetsMetadata: updatedFacetsMetadata });\n};\n\nexport const clearFocusTargetEffect = ({ updateState }) => {\n\tupdateState({\n\t\tfocusTarget: null\n\t});\n};\n\nexport const moveAccordionFocus = (host, event) => {\n\tevent.preventDefault();\n\tlet moveFocusTo;\n\tif (event.keyCode === UP_ARROW_KEY) {\n\t\tmoveFocusTo = _getAccordionFocusTarget(host, UP_ARROW_KEY);\n\t}\n\tif (event.keyCode === DOWN_ARROW_KEY) {\n\t\tmoveFocusTo = _getAccordionFocusTarget(host, DOWN_ARROW_KEY);\n\t}\n\tif (moveFocusTo) moveFocusTo.focus();\n};\n","import { t } from \"sn-translate\";\n\nexport const INITIAL_DRILL_HEADER = \"\";\n\nexport const DONE_LABEL = t(\"Done\");\nexport const BACK_LABEL = t(\"Back\");\n\nexport const RELEVANCY_SORT_ID = \"relevancy\";\nexport const SORT_BY_LABEL = t(\"Sort by\");\nexport const RELEVANCY_SORT_LABEL = t(\"Most relevant\");\n\nexport const RELEVANCY_SORT_FACET = {\n\ttype: \"single-select\",\n\tname: SORT_BY_LABEL,\n\tfacetConfigSysId: SORT_BY_LABEL,\n\tisSortBy: true,\n\tdata: {\n\t\toptions: [\n\t\t\t{\n\t\t\t\tlabel: RELEVANCY_SORT_LABEL,\n\t\t\t\tvalue: RELEVANCY_SORT_ID\n\t\t\t}\n\t\t]\n\t}\n};\n","import cloneDeep from \"lodash/cloneDeep\";\nimport {\n\t_buildState,\n\t_getLabelFromRangeFilter,\n\t_getRangeFacetStorageKey,\n\t_getFacetFilterIndex,\n\t_getRangeFacetFilterIndex\n} from \"./utils\";\nimport {\n\tFACET_SELECTIONS_UPDATED_INTERNAL,\n\tSORT_FILTER_SELECTED_INTERNAL\n} from \"./actions\";\nimport {\n\tAPPLIED_FACET_LIST,\n\tRANGE_FACET_REGEX,\n\tSELECTOR_TYPE,\n\tFACET_TYPE,\n\tSOURCE_FACET_CONFIG_ID,\n\tFOCUS_TARGET\n} from \"./constants\";\nimport { RELEVANCY_SORT_ID } from \"../sn-search-facets-mobile/constants\";\n\n/**\n * Filters selectedOptions to ensure it only includes source filters or non source filters\n *\n * @param {Array<Object>} facets - An array of all available facet categories and their values.\n * @param {Array<Object>} selectedObjects - An array of all currently selected facets\n * @param {boolean} includeSources - Specifies if only source or non source facets should be returns\n * @returns {Array<String>} - The selected facet values.\n */\nconst _filteredFacets = (facets, selectedOptions, includeSources) => {\n\t// If no sources are available return the original array\n\tconst sourceFacet = facets.find(\n\t\tfacet => facet.facetConfigSysId === SOURCE_FACET_CONFIG_ID\n\t);\n\tif (sourceFacet === null) return selectedOptions;\n\n\t// Collect sysIds of source filters\n\tconst sourceIds =\n\t\tsourceFacet?.data?.options?.map(option => option.value) || [];\n\n\t// Compare the selectedOptions to source filters to return either source or non source values\n\tif (includeSources) {\n\t\treturn selectedOptions\n\t\t\t.filter(obj => sourceIds.includes(obj.facetFilter))\n\t\t\t.map(filter => filter.facetFilter);\n\t}\n\treturn selectedOptions\n\t\t.filter(obj => !sourceIds.includes(obj.facetFilter))\n\t\t.map(filter => filter.facetFilter);\n};\n\n/**\n * Filters an array of facetValue strings to include only source or non source values\n *\n * @param {Object} facetsMetadata - An object containing of all currently selected facets.\n * \t\t\t\t\t\t\t\t\tKey is the category\n * @param {Array<String>} filters - Values to filter\n * @param {boolean} includeSources - Specifies if only source or non source values should be returns\n * @returns {Array<String>} - The filtered values.\n */\nconst _allSelectedFilters = (facetsMetadata, filters, includeSources) => {\n\t// If no sources are available return the original filter array or an empty array\n\tif (!facetsMetadata || !facetsMetadata[SOURCE_FACET_CONFIG_ID]) {\n\t\tif (includeSources) return [];\n\t\treturn filters;\n\t}\n\n\t// Return a filtered array of facet values\n\tconst sourceFilters =\n\t\tfacetsMetadata[SOURCE_FACET_CONFIG_ID].selectedFacetFilters;\n\tif (includeSources === true) {\n\t\treturn filters.filter(option => sourceFilters.includes(option));\n\t}\n\treturn filters.filter(option => !sourceFilters.includes(option));\n};\n\nexport const componentBootstrappedEffect = ({\n\tstate,\n\tproperties,\n\tupdateState\n}) => {\n\tupdateState(_buildState({ state, properties }));\n};\n\nexport const componentPropertyChangedEffect = ({\n\taction,\n\tstate,\n\tupdateState,\n\tproperties\n}) => {\n\tconst {\n\t\tpayload: { name, value }\n\t} = action;\n\tif (\n\t\tname === \"facets\" ||\n\t\tname === \"selectedOptions\" ||\n\t\t(name === \"isLoading\" && value === false)\n\t) {\n\t\tconst { pendingFocusTarget } = state;\n\t\tconst newState = _buildState({ state, properties });\n\n\t\t// When loading completes, resolve pending focus target\n\t\tif (name === \"isLoading\" && value === false && pendingFocusTarget) {\n\t\t\tnewState.focusTarget = pendingFocusTarget;\n\t\t\tnewState.pendingFocusTarget = null;\n\t\t}\n\n\t\tupdateState(newState);\n\t}\n};\n\nexport const selectionsUpdatedEffect = ({\n\tstate,\n\taction,\n\tupdateState,\n\tdispatch,\n\tproperties,\n\tupdateProperties\n}) => {\n\tconst { facetsMetadata } = state;\n\tconst { selectedOptions, facets } = properties;\n\tconst {\n\t\tpayload: { category, selectedFacetFilters, select, selectedItems }\n\t} = action;\n\n\tconst updatedFacetsMetadata = cloneDeep(facetsMetadata);\n\tconst updatedFacet = updatedFacetsMetadata[category];\n\tconst selectedFilterValues = selectedFacetFilters.map(option => option.value);\n\n\tupdatedFacetsMetadata[category] = {\n\t\t...updatedFacet,\n\t\tselectedFacetFilters: selectedFilterValues\n\t};\n\n\t//for range facet (single select) values remove the older selection for that particular category\n\tif (select === SELECTOR_TYPE.SINGLE && selectedItems.length > 0) {\n\t\tconst index = selectedOptions.findIndex(\n\t\t\toption =>\n\t\t\t\toption.facetFilter === selectedItems[0] && option.applied === true\n\t\t);\n\t\tif (index > -1) selectedOptions.splice(index, 1);\n\t}\n\n\t//for multi select when checkbox is unselected\n\tif (\n\t\tselectedItems.length >\n\t\tupdatedFacetsMetadata[category].selectedFacetFilters.length\n\t) {\n\t\tconst unselected = selectedItems.filter(\n\t\t\titem =>\n\t\t\t\t!updatedFacetsMetadata[category].selectedFacetFilters.includes(item)\n\t\t);\n\t\tconst index = selectedOptions.findIndex(\n\t\t\toption => option.facetFilter === unselected[0]\n\t\t);\n\t\tif (index > -1) selectedOptions.splice(index, 1);\n\t}\n\n\t//do not add duplicate applied pills as checkbox returns all selected options that might already be present in selectedOptions\n\tconst currentFacetSelection = updatedFacetsMetadata[\n\t\tcategory\n\t].selectedFacetFilters\n\t\t.filter(candidate => {\n\t\t\tlet exists = false;\n\t\t\tselectedOptions.forEach(selectedOption => {\n\t\t\t\texists = exists || selectedOption.facetFilter == candidate;\n\t\t\t});\n\t\t\treturn !exists;\n\t\t})\n\t\t.map(elem => {\n\t\t\treturn {\n\t\t\t\tfacetFilter: elem,\n\t\t\t\tapplied: true,\n\t\t\t\ttype: updatedFacet.facetType,\n\t\t\t\tisSource: category === SOURCE_FACET_CONFIG_ID\n\t\t\t};\n\t\t});\n\tconst updatedSelections = [...selectedOptions, ...currentFacetSelection];\n\n\tupdateProperties({\n\t\tselectedOptions: updatedSelections\n\t});\n\n\tupdateState({\n\t\tfacetsMetadata: updatedFacetsMetadata\n\t});\n\tif (facetsMetadata[category].isSortBy) {\n\t\tconst selectedFilter = JSON.stringify(\n\t\t\tselectedFacetFilters[0].value === RELEVANCY_SORT_ID\n\t\t\t\t? []\n\t\t\t\t: [selectedFacetFilters[0].value]\n\t\t);\n\t\tdispatch(SORT_FILTER_SELECTED_INTERNAL, {\n\t\t\tselectedFilter\n\t\t});\n\t} else {\n\t\tdispatch(FACET_SELECTIONS_UPDATED_INTERNAL, {\n\t\t\tselectedFilters: JSON.stringify(\n\t\t\t\t_filteredFacets(facets, updatedSelections, false)\n\t\t\t),\n\t\t\tsourceFilters: JSON.stringify(\n\t\t\t\t_filteredFacets(facets, updatedSelections, true)\n\t\t\t)\n\t\t});\n\t}\n};\n\nexport const toggleFocusOnSelectedItemEffect = ({\n\taction: { payload },\n\tupdateState\n}) => {\n\tconst { viaKeyboard } = payload || {};\n\n\t// Set pending focus to 'pill' for keyboard, or a placeholder for mouse\n\t// The placeholder ensures consistent loading behavior (spinner first)\n\t// but won't trigger actual focus when resolved\n\tupdateState({\n\t\tpendingFocusTarget: viaKeyboard ? FOCUS_TARGET.PILL : \"none\"\n\t});\n};\n\nexport const allFacetsClearedEffect = ({\n\taction: { payload },\n\tstate,\n\tupdateState,\n\tdispatch,\n\tupdateProperties\n}) => {\n\tconst { clearedViaKeyboard } = payload || {};\n\tconst { facetsMetadata } = state;\n\tconst updatedFacetsMetadata = cloneDeep(facetsMetadata);\n\n\tObject.keys(updatedFacetsMetadata).forEach(category => {\n\t\tupdatedFacetsMetadata[category] = {\n\t\t\t...updatedFacetsMetadata[category],\n\t\t\tselectedFacetFilters: []\n\t\t};\n\t});\n\n\t// Set pending focus to ACCORDION for keyboard, or \"none\" placeholder for mouse\n\t// The placeholder ensures consistent loading behavior (spinner first)\n\tupdateState({\n\t\tfacetsMetadata: updatedFacetsMetadata,\n\t\tpendingFocusTarget: clearedViaKeyboard ? FOCUS_TARGET.ACCORDION : \"none\"\n\t});\n\n\tupdateProperties({\n\t\tselectedOptions: []\n\t});\n\n\tdispatch(FACET_SELECTIONS_UPDATED_INTERNAL, {\n\t\tselectedFilters: JSON.stringify([]),\n\t\tsourceFilters: JSON.stringify([])\n\t});\n};\n\nexport const accordionClearedEffect = ({\n\taction,\n\tstate,\n\tupdateState,\n\tdispatch,\n\tproperties,\n\tupdateProperties\n}) => {\n\tconst {\n\t\tpayload: { value, clearedViaKeyboard }\n\t} = action;\n\tconst { facetsMetadata } = state;\n\tconst { selectedOptions } = properties;\n\tconst updatedFacetsMetadata = cloneDeep(facetsMetadata);\n\n\t//loop through selected filters to only clear applied filters\n\t//and retain pills that are carried over from other tabs\n\tupdatedFacetsMetadata[value].selectedFacetFilters.forEach(item => {\n\t\tconst index = selectedOptions.findIndex(\n\t\t\toption => option.facetFilter === item && option.applied === true\n\t\t);\n\t\tif (index > -1) selectedOptions.splice(index, 1);\n\t});\n\tconst optionsToBeRetained = selectedOptions.map(item => item.facetFilter);\n\n\tupdatedFacetsMetadata[value] = {\n\t\t...updatedFacetsMetadata[value],\n\t\tselectedFacetFilters: []\n\t};\n\n\tupdateProperties({\n\t\tselectedOptions: selectedOptions\n\t});\n\n\t// Determine pending focus target based on keyboard interaction and remaining pills\n\tlet pendingFocusTarget = \"none\";\n\tif (clearedViaKeyboard) {\n\t\t// If pills remain after clearing this accordion, focus the first pill\n\t\t// Otherwise focus the first accordion\n\t\tpendingFocusTarget =\n\t\t\tselectedOptions.length > 0 ? FOCUS_TARGET.PILL : FOCUS_TARGET.ACCORDION;\n\t}\n\n\tupdateState({\n\t\tfacetsMetadata: updatedFacetsMetadata,\n\t\tpendingFocusTarget\n\t});\n\n\tdispatch(FACET_SELECTIONS_UPDATED_INTERNAL, {\n\t\tselectedFilters: JSON.stringify(\n\t\t\t_allSelectedFilters(facetsMetadata, optionsToBeRetained, false)\n\t\t),\n\t\tsourceFilters: JSON.stringify(\n\t\t\t_allSelectedFilters(facetsMetadata, optionsToBeRetained, true)\n\t\t)\n\t});\n};\n\nexport const appliedPillDismissedEffect = ({\n\taction: { payload },\n\tdispatch,\n\tstate,\n\tupdateState\n}) => {\n\tconst { facetsMetadata } = state;\n\tconst {\n\t\tlabel: pillLabel,\n\t\tappliedFilters,\n\t\tfacets,\n\t\tfacetValue,\n\t\tdismissedViaKeyboard\n\t} = payload;\n\tlet rangeFacetPresentNotDismissed = false;\n\n\tif (appliedFilters.length > 0) {\n\t\tconst regularIndex = _getFacetFilterIndex(\n\t\t\tappliedFilters,\n\t\t\tpillLabel,\n\t\t\tfacetValue\n\t\t);\n\n\t\t//index of regular pill selected for dismissal\n\t\tif (regularIndex !== -1) {\n\t\t\tappliedFilters.splice(regularIndex, 1);\n\t\t} else if (regularIndex === -1) {\n\t\t\t//range facet present in the applied filters\n\t\t\tconst rangeFacetFilters = appliedFilters.filter(option =>\n\t\t\t\tRANGE_FACET_REGEX.test(option)\n\t\t\t);\n\n\t\t\trangeFacetFilters.forEach(rangeFilter => {\n\t\t\t\tconst rangeLabel = _getLabelFromRangeFilter(rangeFilter, facets);\n\t\t\t\t//range facet pill is selected for dismissal\n\t\t\t\tif (rangeLabel === pillLabel) {\n\t\t\t\t\trangeFacetPresentNotDismissed = false;\n\t\t\t\t\tconst index = _getRangeFacetFilterIndex(appliedFilters, rangeFilter);\n\t\t\t\t\tif (index != -1) appliedFilters.splice(index, 1);\n\t\t\t\t\tconst key = _getRangeFacetStorageKey(rangeFilter);\n\t\t\t\t\twindow.localStorage.removeItem(key);\n\t\t\t\t} else {\n\t\t\t\t\t//range facet pill is present but not selected for dismissal\n\t\t\t\t\trangeFacetPresentNotDismissed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t//dismiss regular pills when range facet is present in applied filters\n\t\t\tif (rangeFacetPresentNotDismissed) {\n\t\t\t\tappliedFilters.splice(0, rangeFacetFilters.length);\n\t\t\t\tconst index = _getFacetFilterIndex(appliedFilters, pillLabel);\n\t\t\t\tappliedFilters.splice(index, 1);\n\t\t\t\tappliedFilters.unshift(...rangeFacetFilters);\n\t\t\t}\n\t\t}\n\n\t\t// Set pending focus based on remaining pills after dismissal\n\t\t// For keyboard: focus first pill or accordion; for mouse: use placeholder\n\t\t// The placeholder ensures consistent loading behavior (spinner first)\n\t\tif (dismissedViaKeyboard) {\n\t\t\tif (appliedFilters.length > 0) {\n\t\t\t\tupdateState({ pendingFocusTarget: FOCUS_TARGET.PILL });\n\t\t\t} else {\n\t\t\t\tupdateState({ pendingFocusTarget: FOCUS_TARGET.ACCORDION });\n\t\t\t}\n\t\t} else {\n\t\t\tupdateState({ pendingFocusTarget: \"none\" });\n\t\t}\n\n\t\tdispatch(FACET_SELECTIONS_UPDATED_INTERNAL, {\n\t\t\tselectedFilters: JSON.stringify(\n\t\t\t\t_allSelectedFilters(facetsMetadata, appliedFilters, false)\n\t\t\t),\n\t\t\tsourceFilters: JSON.stringify(\n\t\t\t\t_allSelectedFilters(facetsMetadata, appliedFilters, true)\n\t\t\t)\n\t\t});\n\t}\n};\n\nexport const expandCollapseAppliedFacetsEffect = ({ action, updateState }) => {\n\tconst { payload } = action;\n\n\tif (payload.action && payload.action === APPLIED_FACET_LIST.EXPAND) {\n\t\tif (payload.type === FACET_TYPE.AND) {\n\t\t\tupdateState({ truncateAppliedAndFacets: false });\n\t\t} else if (payload.type === FACET_TYPE.OR) {\n\t\t\tupdateState({ truncateAppliedOrFacets: false });\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\ttruncateAppliedAndFacets: false,\n\t\t\t\ttruncateAppliedOrFacets: false\n\t\t\t});\n\t\t}\n\t}\n\n\tif (payload.action && payload.action === APPLIED_FACET_LIST.COLLAPSE) {\n\t\tif (payload.type === FACET_TYPE.AND) {\n\t\t\tupdateState({ truncateAppliedAndFacets: true });\n\t\t} else if (payload.type === FACET_TYPE.OR) {\n\t\t\tupdateState({ truncateAppliedOrFacets: true });\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\ttruncateAppliedAndFacets: true,\n\t\t\t\ttruncateAppliedOrFacets: true\n\t\t\t});\n\t\t}\n\t}\n};\n","import { actionTypes } from \"@servicenow/ui-core\";\nimport {\n\tSELECTIONS_UPDATED,\n\tALL_CLEARED,\n\tACCORDION_CLEARED,\n\tAPPLIED_FACETS_EXPANDED_COLLAPSED,\n\tTOGGLE_FOCUS_ON_SELECTED_ITEM,\n\tPILL_DISMISSED\n} from \"./actions\";\nimport {\n\tcomponentBootstrappedEffect,\n\tselectionsUpdatedEffect,\n\tallFacetsClearedEffect,\n\taccordionClearedEffect,\n\tcomponentPropertyChangedEffect,\n\texpandCollapseAppliedFacetsEffect,\n\ttoggleFocusOnSelectedItemEffect,\n\tappliedPillDismissedEffect\n} from \"./effects\";\n\nconst { COMPONENT_BOOTSTRAPPED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nexport default {\n\t[COMPONENT_BOOTSTRAPPED]: componentBootstrappedEffect,\n\t[COMPONENT_PROPERTY_CHANGED]: componentPropertyChangedEffect,\n\t[SELECTIONS_UPDATED]: {\n\t\teffect: selectionsUpdatedEffect,\n\t\tstopPropagation: true\n\t},\n\t[TOGGLE_FOCUS_ON_SELECTED_ITEM]: {\n\t\teffect: toggleFocusOnSelectedItemEffect,\n\t\tstopPropagation: true\n\t},\n\t[ALL_CLEARED]: {\n\t\teffect: allFacetsClearedEffect,\n\t\tstopPropagation: true\n\t},\n\t[ACCORDION_CLEARED]: {\n\t\teffect: accordionClearedEffect,\n\t\tstopPropagation: true\n\t},\n\t[APPLIED_FACETS_EXPANDED_COLLAPSED]: {\n\t\teffect: expandCollapseAppliedFacetsEffect,\n\t\tstopPropagation: true\n\t},\n\t[PILL_DISMISSED]: {\n\t\teffect: appliedPillDismissedEffect,\n\t\tstopPropagation: true\n\t}\n};\n","import { SECTION_FOLD_TOGGLED, CLEAR_FOCUS_TARGET } from \"./actions\";\n\nimport { sectionFoldToggledEffect, clearFocusTargetEffect } from \"./effects\";\nimport baseActionHandlers from \"../common/actionHandlers\";\n\nexport default {\n\t...baseActionHandlers,\n\t[SECTION_FOLD_TOGGLED]: {\n\t\teffect: sectionFoldToggledEffect,\n\t\tstopPropagation: true\n\t},\n\t[CLEAR_FOCUS_TARGET]: {\n\t\teffect: clearFocusTargetEffect,\n\t\tstopPropagation: true\n\t}\n};\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport rtlBehavior from \"@servicenow/behavior-rtl\";\nimport keyBindingBehavior from \"@servicenow/behavior-key-binding\";\nimport view from \"./view/DesktopView\";\nimport styles from \"./scss/index.scss\";\nimport actionHandlers from \"./actionHandlers\";\nimport { DEFAULT_LABEL } from \"../common/constants\";\nimport { moveAccordionFocus } from \"./effects\";\n\ncreateCustomElement(\"sn-search-facets-desktop\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tinitialState: {\n\t\tfacetsMetadata: {},\n\t\ttruncateAppliedFacets: true,\n\t\ttruncateAppliedAndFacets: true,\n\t\ttruncateAppliedOrFacets: true,\n\t\tfocusTarget: null, // 'pill' | 'accordion'\n\t\tpendingFocusTarget: null, // Pending focus set before loading, resolved to focusTarget when loading completes\n\n\t\thideFacetPanel: false\n\t},\n\tproperties: {\n\t\tfacets: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\tlabel: {\n\t\t\tdefault: DEFAULT_LABEL,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\tselectedOptions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\tisGlobal: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\tfacetPanelIsHidden: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\tfocusHideFacetsButton: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\tenableLabelTranslation: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\ttranslatedLabels: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\tsearchFromChat: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\tisLoading: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\tshowHideFiltersButton: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t}\n\t},\n\tbehaviors: [\n\t\t{ behavior: rtlBehavior },\n\t\t{\n\t\t\tbehavior: keyBindingBehavior,\n\t\t\toptions: {\n\t\t\t\tkeyBindings: {\n\t\t\t\t\tmoveAccordionFocus: [\"ArrowUp\", \"ArrowDown\"]\n\t\t\t\t},\n\t\t\t\thandlers: {\n\t\t\t\t\tmoveAccordionFocus\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t],\n\tstyles,\n\tactionHandlers\n});\n","export const NAVIGATED_TO_CHILD_PANEL = \"NAVIGATED_TO_CHILD_PANEL\";\nexport const NAVIGATED_TO_PARENT_PANEL = \"NAVIGATED_TO_PARENT_PANEL\";\n\nexport const DONE_BUTTON_CLICKED_INTERNAL = \"DONE_BUTTON_CLICKED\";\n","import \"@servicenow/now-icon\";\nimport { NAVIGATED_TO_CHILD_PANEL } from \"../actions\";\nimport { COLLAPSE_LABEL, EXPAND_LABEL } from \"../../common/constants\";\n\nconst ExpandButton = ({ dispatch, expanded, category, facetConfigSysId }) => {\n\tconst className = \"drill-expand-button\";\n\tconst ariaTitle = expanded ? COLLAPSE_LABEL : EXPAND_LABEL;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={className}\n\t\t\ttitle={ariaTitle}\n\t\t\ton-click={() =>\n\t\t\t\tdispatch(NAVIGATED_TO_CHILD_PANEL, {\n\t\t\t\t\titemValue: category,\n\t\t\t\t\tfacetConfigSysId: facetConfigSysId\n\t\t\t\t})\n\t\t\t}\n\t\t>\n\t\t\t<now-icon icon=\"chevron-right-outline\" size=\"md\" />\n\t\t</div>\n\t);\n};\n\nexport default ExpandButton;\n","import \"@servicenow/now-heading\";\nimport ExpandButton from \"./ExpandButton\";\nimport { NAVIGATED_TO_CHILD_PANEL } from \"../actions\";\nimport { SPACE_KEY, ENTER_KEY } from \"../../common/constants\";\n\nconst Filters = ({\n\tdispatch,\n\tlabel,\n\tfacetsMetadata,\n\texpanded,\n\tfacetConfigSysId\n}) => {\n\tconst navigateToChildPanel = event => {\n\t\tif (\n\t\t\tevent.type === \"click\" ||\n\t\t\tevent.keyCode === SPACE_KEY ||\n\t\t\tevent.keyCode === ENTER_KEY\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tdispatch(NAVIGATED_TO_CHILD_PANEL, {\n\t\t\t\titemValue: label,\n\t\t\t\tfacetConfigSysId: facetConfigSysId\n\t\t\t});\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"drill-filters\"\n\t\t\ttabIndex={0}\n\t\t\trole=\"button\"\n\t\t\ton-click={navigateToChildPanel}\n\t\t\ton-keydown={navigateToChildPanel}\n\t\t>\n\t\t\t<div className=\"drill-filter\">\n\t\t\t\t<div className=\"drill-filter-text\">\n\t\t\t\t\t<now-heading\n\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\tlevel=\"2\"\n\t\t\t\t\t\tvariant=\"title-primary\"\n\t\t\t\t\t\thasNoMargin\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"drill-filters-controls\">\n\t\t\t\t<ExpandButton\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\tfacetConfigSysId={facetConfigSysId}\n\t\t\t\t\tcategory={label}\n\t\t\t\t\texpanded={expanded}\n\t\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Filters;\n","import { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\n\nimport Facet from \"../../common/view/Facet\";\nimport Divider from \"../../common/view/Divider\";\nimport Filters from \"./Filters\";\nimport { INITIAL_DRILL_HEADER } from \"../constants\";\nimport { MODE } from \"../../common/constants\";\n\nconst Panel = ({\n\tdrillHeader,\n\tdrillField,\n\tfacetsMetadata,\n\tlabel,\n\tdispatch,\n\texpanded,\n\tfacet,\n\tshowEndingDivider,\n\tnowId\n}) => {\n\tconst { facetConfigSysId } = facet;\n\tif (drillHeader === INITIAL_DRILL_HEADER) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<Divider variant=\"tertiary\" />\n\t\t\t\t<Filters\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\t\texpanded={expanded}\n\t\t\t\t\tfacetConfigSysId={facetConfigSysId}\n\t\t\t\t/>\n\t\t\t\t{showEndingDivider ? <Divider variant=\"tertiary\" /> : null}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (facetConfigSysId === drillField) {\n\t\treturn (\n\t\t\t<div className=\"facet-options\">\n\t\t\t\t<Facet\n\t\t\t\t\tfacet={facet}\n\t\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\t\tmode={MODE.DRILL}\n\t\t\t\t\tnowId={nowId}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn <Fragment />;\n};\n\nexport default Panel;\n","import Panel from \"./Panel\";\nimport Loader from \"../../common/view/Loader\";\nimport AppliedFacets from \"../../common/view/AppliedFacets\";\nimport { INITIAL_DRILL_HEADER } from \"../constants\";\n\nconst PanelList = ({\n\tfacets,\n\tfacetsMetadata,\n\tdispatch,\n\tdrillHeader,\n\tappliedFacetFilters,\n\ttruncateAppliedFacets,\n\tnowId,\n\tenableLabelTranslation,\n\ttranslatedLabels,\n\tdrillField,\n\tisLoading\n}) =>\n\tisLoading ? (\n\t\t<Loader />\n\t) : (\n\t\t<ul className=\"panel\" role=\"presentation\">\n\t\t\t{drillHeader === INITIAL_DRILL_HEADER ? (\n\t\t\t\t<AppliedFacets\n\t\t\t\t\tappliedFacetFilters={appliedFacetFilters}\n\t\t\t\t\ttruncateAppliedFacets={truncateAppliedFacets}\n\t\t\t\t\tshowEndingDivider={facets.length === 0}\n\t\t\t\t\tenableLabelTranslation={enableLabelTranslation}\n\t\t\t\t\ttranslatedLabels={translatedLabels}\n\t\t\t\t\tfacets={facets}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t\"\"\n\t\t\t)}\n\t\t\t{facets.map((facet, index) => {\n\t\t\t\tconst { name, facetConfigSysId } = facet;\n\t\t\t\tconst isExpanded = facetsMetadata[facetConfigSysId]?.expanded;\n\t\t\t\tconst showEndingDivider = index === facets.length - 1;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Panel\n\t\t\t\t\t\tdrillHeader={drillHeader}\n\t\t\t\t\t\tdrillField={drillField}\n\t\t\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\t\t\tlabel={name}\n\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\texpanded={isExpanded}\n\t\t\t\t\t\tfacet={facet}\n\t\t\t\t\t\tshowEndingDivider={showEndingDivider}\n\t\t\t\t\t\tnowId={nowId}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ul>\n\t);\n\nexport default PanelList;\n","import \"@servicenow/now-button\";\nimport \"@servicenow/now-heading\";\nimport { DONE_BUTTON_CLICKED_INTERNAL } from \"../actions\";\nimport { ALL_CLEARED } from \"../../common/actions\";\nimport { CLEAR_ALL_LABEL } from \"../../common/constants\";\nimport { DONE_LABEL, SORT_BY_LABEL } from \"../constants\";\nimport { _anyItemsSelected } from \"../../common/utils\";\n\nconst RootHeader = ({\n\tlabel,\n\tdispatch,\n\tappliedFacetFilters,\n\tfacetsMetadata,\n\tnowId\n}) => {\n\tconst className =\n\t\t!_anyItemsSelected(facetsMetadata, appliedFacetFilters) ||\n\t\tfacetsMetadata[SORT_BY_LABEL]?.selectedFacetFilters.length ===\n\t\t\tappliedFacetFilters.length\n\t\t\t? \"clear-button-hidden\"\n\t\t\t: \"clear-button\";\n\treturn (\n\t\t<div className=\"drill-root-header\">\n\t\t\t<now-heading\n\t\t\t\tvariant=\"title-primary\"\n\t\t\t\tlabel={label}\n\t\t\t\tlevel=\"1\"\n\t\t\t\thasNoMargin\n\t\t\t\tid={`${nowId}_tree_label`}\n\t\t\t/>\n\t\t\t<div className=\"drill-root-header-right\">\n\t\t\t\t<div className={className}>\n\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\tlabel={CLEAR_ALL_LABEL}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\thidePadding\n\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\tdispatch(ALL_CLEARED, { facetsMetadata });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<now-button-bare\n\t\t\t\t\tlabel={DONE_LABEL}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\thidePadding\n\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\tdispatch(DONE_BUTTON_CLICKED_INTERNAL);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default RootHeader;\n","import \"@servicenow/now-button\";\nimport \"@servicenow/now-heading\";\nimport {\n\tNAVIGATED_TO_PARENT_PANEL,\n\tDONE_BUTTON_CLICKED_INTERNAL\n} from \"../actions\";\nimport { ACCORDION_CLEARED } from \"../../common/actions\";\nimport { _selectedItemsLength } from \"../../common/utils\";\nimport { BACK_LABEL, DONE_LABEL } from \"../constants\";\nimport { CLEAR_LABEL } from \"../../common/constants\";\n\nconst CategoryHeader = ({\n\tdispatch,\n\tlabel,\n\tfacetsMetadata,\n\tnowId,\n\tdrillField\n}) => {\n\tconst className =\n\t\t_selectedItemsLength(facetsMetadata, drillField) > 0 &&\n\t\t!facetsMetadata[drillField].isSortBy\n\t\t\t? \"clear-button\"\n\t\t\t: \"clear-button-hidden\";\n\n\treturn (\n\t\t<div className=\"drill-header\">\n\t\t\t<div className=\"drill-header-left\">\n\t\t\t\t<now-button-bare\n\t\t\t\t\ticon-start=\"chevron-left-outline\"\n\t\t\t\t\tlabel={BACK_LABEL}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\thidePadding\n\t\t\t\t\ton-click={() => dispatch(NAVIGATED_TO_PARENT_PANEL, {})}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<now-heading\n\t\t\t\tlabel={label}\n\t\t\t\tvariant=\"title-primary\"\n\t\t\t\thasNoMargin\n\t\t\t\tid={`${nowId}_${label}_facet_category`}\n\t\t\t/>\n\t\t\t<div className=\"drill-header-right\">\n\t\t\t\t<div className={className}>\n\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\tlabel={CLEAR_LABEL}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\thidePadding\n\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\tdispatch(ACCORDION_CLEARED, {\n\t\t\t\t\t\t\t\tvalue: drillField\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"done-button\">\n\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\tlabel={DONE_LABEL}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ton-click={() => dispatch(DONE_BUTTON_CLICKED_INTERNAL)}\n\t\t\t\t\t\thidePadding\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default CategoryHeader;\n","import { INITIAL_DRILL_HEADER } from \"../constants\";\nimport RootHeader from \"./RootHeader\";\nimport CategoryHeader from \"./CategoryHeader\";\n\nconst Header = ({\n\tfacetsMetadata,\n\tdrillHeader,\n\tlabel,\n\tappliedFacetFilters,\n\tdispatch,\n\tnowId,\n\tdrillField\n}) => {\n\tif (drillHeader === INITIAL_DRILL_HEADER) {\n\t\treturn (\n\t\t\t<RootHeader\n\t\t\t\tlabel={label}\n\t\t\t\tdispatch={dispatch}\n\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\tappliedFacetFilters={appliedFacetFilters}\n\t\t\t\tnowId={nowId}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<CategoryHeader\n\t\t\tdrillHeader={drillHeader}\n\t\t\tdrillField={drillField}\n\t\t\tdispatch={dispatch}\n\t\t\tlabel={drillHeader}\n\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\tnowId={nowId}\n\t\t/>\n\t);\n};\n\nexport default Header;\n","import PanelList from \"./PanelList\";\nimport Header from \"./Header\";\nimport {\n\tSORT_BY_LABEL,\n\tRELEVANCY_SORT_ID,\n\tRELEVANCY_SORT_LABEL\n} from \"../constants\";\n\nconst _showSortByFacet = sortFacets => {\n\treturn sortFacets?.data?.options?.length > 0;\n};\n\nconst view = (state, { dispatch }) => {\n\tconst {\n\t\tfacetsMetadata,\n\t\tdrillHeader,\n\t\tdrillField,\n\t\tproperties,\n\t\ttruncateAppliedFacets\n\t} = state;\n\tconst {\n\t\tlabel,\n\t\tselectedOptions,\n\t\tsortFacets,\n\t\tselectedSortFacet,\n\t\tnowId,\n\t\tenableLabelTranslation,\n\t\ttranslatedLabels,\n\t\tfacets,\n\t\tisLoading\n\t} = properties;\n\n\tconst facetsMetadataWithSortBy = facetsMetadata;\n\tconst appliedFilter = selectedOptions.map(filter => filter.facetFilter);\n\tlet appliedFacetFilters = appliedFilter;\n\tlet displayFacets = facets;\n\n\t// add sort by facet filter to facets\n\tif (_showSortByFacet(sortFacets)) {\n\t\tif (!facets.find(facet => facet.isSortBy)) {\n\t\t\tdisplayFacets = [sortFacets, ...facets];\n\t\t}\n\n\t\t// update facetsMetadata with deafult or given sort by selection\n\t\tif (!facetsMetadataWithSortBy[SORT_BY_LABEL]) {\n\t\t\tfacetsMetadataWithSortBy[SORT_BY_LABEL] = {\n\t\t\t\tisSortBy: true,\n\t\t\t\texpanded: false,\n\t\t\t\tselectedFacetFilters: selectedSortFacet\n\t\t\t};\n\t\t}\n\n\t\t// add the selected sort filter to applied facet filter pills\n\t\tappliedFacetFilters = [\n\t\t\tselectedSortFacet[0] === RELEVANCY_SORT_ID\n\t\t\t\t? RELEVANCY_SORT_LABEL\n\t\t\t\t: sortFacets?.data?.options.find(\n\t\t\t\t\t\tfilter => filter.value === selectedSortFacet[0]\n\t\t\t\t  ).label,\n\t\t\t...selectedOptions\n\t\t];\n\t}\n\n\treturn (\n\t\t<panel className=\"facet-panel-drill\">\n\t\t\t<Header\n\t\t\t\tdispatch={dispatch}\n\t\t\t\tlabel={label}\n\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\tdrillHeader={drillHeader}\n\t\t\t\tdrillField={drillField}\n\t\t\t\tappliedFacetFilters={appliedFacetFilters}\n\t\t\t\tnowId={nowId}\n\t\t\t/>\n\t\t\t<PanelList\n\t\t\t\tdispatch={dispatch}\n\t\t\t\tfacets={displayFacets}\n\t\t\t\tfacetsMetadata={facetsMetadata}\n\t\t\t\tdrillHeader={drillHeader}\n\t\t\t\tdrillField={drillField}\n\t\t\t\tappliedFacetFilters={appliedFacetFilters}\n\t\t\t\ttruncateAppliedFacets={truncateAppliedFacets}\n\t\t\t\tnowId={nowId}\n\t\t\t\tenableLabelTranslation={enableLabelTranslation}\n\t\t\t\ttranslatedLabels={translatedLabels}\n\t\t\t\tisLoading={isLoading}\n\t\t\t/>\n\t\t</panel>\n\t);\n};\n\nexport default view;\n","import { INITIAL_DRILL_HEADER } from \"./constants\";\n\nexport const navigatedToParentPanelEffect = ({ updateState }) => {\n\tupdateState({\n\t\tdrillHeader: INITIAL_DRILL_HEADER\n\t});\n};\n\nexport const navigatedToChildPanelEffect = ({ action, updateState }) => {\n\tconst {\n\t\tpayload: { itemValue, facetConfigSysId }\n\t} = action;\n\n\tupdateState({\n\t\tdrillHeader: itemValue,\n\t\tdrillField: facetConfigSysId\n\t});\n};\n","import { NAVIGATED_TO_CHILD_PANEL, NAVIGATED_TO_PARENT_PANEL } from \"./actions\";\nimport {\n\tnavigatedToChildPanelEffect,\n\tnavigatedToParentPanelEffect\n} from \"./effects\";\nimport baseActionHandlers from \"../common/actionHandlers\";\n\nexport default {\n\t...baseActionHandlers,\n\t[NAVIGATED_TO_CHILD_PANEL]: {\n\t\teffect: navigatedToChildPanelEffect,\n\t\tstopPropagation: true\n\t},\n\t[NAVIGATED_TO_PARENT_PANEL]: {\n\t\teffect: navigatedToParentPanelEffect,\n\t\tstopPropagation: true\n\t}\n};\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport { isEmpty } from \"lodash\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport rtlBehavior from \"@servicenow/behavior-rtl\";\nimport view from \"./view/MobileView\";\nimport styles from \"./scss/index.scss\";\nimport actionHandlers from \"./actionHandlers\";\nimport { DEFAULT_LABEL } from \"../common/constants\";\nimport {\n\tINITIAL_DRILL_HEADER,\n\tRELEVANCY_SORT_ID,\n\tRELEVANCY_SORT_FACET\n} from \"./constants\";\n\ncreateCustomElement(\"sn-search-facets-mobile\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tinitialState: {\n\t\tfacetsMetadata: {},\n\t\tdrillHeader: INITIAL_DRILL_HEADER,\n\t\tdrillField: \"\",\n\t\ttruncateAppliedFacets: true\n\t},\n\tproperties: {\n\t\tfacets: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\tlabel: {\n\t\t\tdefault: DEFAULT_LABEL,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\tselectedOptions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\tsortFilters: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Computed property that transforms and stores the sort by data as facet filters.\n\t\t */\n\t\tsortFacets: {\n\t\t\tcomputed({ properties: { sortFilters } }) {\n\t\t\t\tif (isEmpty(sortFilters)) return {};\n\n\t\t\t\tconst sortByFacet = RELEVANCY_SORT_FACET;\n\t\t\t\tconst sortFacetOptions = sortFilters.map(({ sysId, label }) => ({\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue: sysId\n\t\t\t\t}));\n\t\t\t\t/*\n\t\t\t\t * only add sort by options if they've not been accounted for during a previous render;\n\t\t\t\t * length for sort facet options will always be sortFilters.length + 1 (sort filters from api + relevancy sort filter)\n\t\t\t\t */\n\t\t\t\tif (sortByFacet.data.options.length !== sortFilters.length + 1) {\n\t\t\t\t\tsortByFacet.data.options = [\n\t\t\t\t\t\t...sortByFacet.data.options,\n\t\t\t\t\t\t...sortFacetOptions\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\treturn sortByFacet;\n\t\t\t}\n\t\t},\n\t\tselectedSortFilters: {\n\t\t\tdefault: [RELEVANCY_SORT_ID],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\tselectedSortFacet: {\n\t\t\tcomputed({ properties: { selectedSortFilters } }) {\n\t\t\t\tif (isEmpty(selectedSortFilters)) return [RELEVANCY_SORT_ID];\n\n\t\t\t\treturn selectedSortFilters;\n\t\t\t}\n\t\t},\n\t\tenableLabelTranslation: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\ttranslatedLabels: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\tisLoading: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t}\n\t},\n\tbehaviors: [{ behavior: rtlBehavior }],\n\tstyles,\n\tactionHandlers\n});\n","import \"./sn-search-facets-desktop\";\nimport \"./sn-search-facets-mobile\";\nimport { SIZE } from \"./common/constants\";\nimport {\n\t_replaceFacetLabels,\n\t_checkForRangeFacets,\n\t_markRangeFacets,\n\t_addSourceFacet,\n\t_combineSelectedSourcesAndFacets\n} from \"./common/utils\";\n\nconst view = state => {\n\tconst { properties, translatedLabels } = state;\n\tconst {\n\t\tfacets,\n\t\tlabel,\n\t\tsize,\n\t\tselectedOptions,\n\t\tsortFilters,\n\t\tselectedSortFilters,\n\t\tisGlobal,\n\t\tfacetPanelIsHidden,\n\t\tfocusHideFacetsButton,\n\t\tenableLabelTranslation,\n\t\tsearchFromChat,\n\t\tsearchSources,\n\t\tselectedSearchSources,\n\t\tisLoading,\n\t\tshowHideFiltersButton\n\t} = properties;\n\n\tlet facetsToDisplay = facets;\n\tif (enableLabelTranslation) {\n\t\tfacetsToDisplay = _replaceFacetLabels(facets, translatedLabels);\n\t}\n\n\t// check for range facets and add field 'isRangeFacet' to specify if it's a range facet\n\tif (_checkForRangeFacets(facetsToDisplay)) {\n\t\tfacetsToDisplay = _markRangeFacets(facetsToDisplay);\n\t}\n\n\t// Add sources as the first options\n\tif (searchSources && searchSources.length > 0) {\n\t\t_addSourceFacet(facetsToDisplay, searchSources);\n\t}\n\n\t// Combine source filters and facets into one array. Sources are first.\n\tconst combinedSelectedOptions = _combineSelectedSourcesAndFacets(\n\t\tsearchSources,\n\t\tselectedSearchSources,\n\t\tselectedOptions\n\t);\n\n\tconst facetVariant =\n\t\tsize === SIZE.SMALL ? (\n\t\t\t<sn-search-facets-mobile\n\t\t\t\tfacets={facetsToDisplay}\n\t\t\t\tlabel={label}\n\t\t\t\tselectedOptions={combinedSelectedOptions}\n\t\t\t\tsortFilters={sortFilters}\n\t\t\t\tselectedSortFilters={selectedSortFilters}\n\t\t\t\tenableLabelTranslation={enableLabelTranslation}\n\t\t\t\ttranslatedLabels={translatedLabels}\n\t\t\t\tisLoading={isLoading}\n\t\t\t\tshowHideFiltersButton={showHideFiltersButton}\n\t\t\t/>\n\t\t) : (\n\t\t\t<sn-search-facets-desktop\n\t\t\t\tfacets={facetsToDisplay}\n\t\t\t\tlabel={label}\n\t\t\t\tselectedOptions={combinedSelectedOptions}\n\t\t\t\tisGlobal={isGlobal}\n\t\t\t\tfacetPanelIsHidden={facetPanelIsHidden}\n\t\t\t\tfocusHideFacetsButton={focusHideFacetsButton}\n\t\t\t\tenableLabelTranslation={enableLabelTranslation}\n\t\t\t\ttranslatedLabels={translatedLabels}\n\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\tisLoading={isLoading}\n\t\t\t\tsearchSources={searchSources}\n\t\t\t\tshowHideFiltersButton={showHideFiltersButton}\n\t\t\t/>\n\t\t);\n\treturn facetVariant;\n};\n\nexport default view;\n","import GlideSignals from \"sn-signals\";\nimport { SEISMIC_OR_MOBILE_APPLICATION } from \"./constants\";\n\nconst signalTracker = {\n\ttrackEvent(eventAction, eventPriority, eventModel) {\n\t\teventModel.applicationType = SEISMIC_OR_MOBILE_APPLICATION;\n\t\tGlideSignals.trackEvent(eventAction, eventPriority, eventModel);\n\t}\n};\n\nexport default signalTracker;\n","import { createCustomElement, actionTypes } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport { createGraphQLEffect } from \"@servicenow/ui-effect-graphql\";\nimport { isEmpty } from \"lodash\";\n\nimport view from \"./view\";\nimport {\n\tSIZE,\n\tDEFAULT_LABEL,\n\tSEARCH_REFINED_EVENT,\n\tINFO_EVENT,\n\tTRANSLATION_QUERY\n} from \"./common/constants\";\nimport {\n\tFACET_SELECTIONS_UPDATED_INTERNAL,\n\tSORT_FILTER_SELECTED_INTERNAL,\n\tFACET_SELECTIONS_UPDATED,\n\tSORT_FILTER_SELECTED,\n\tDONE_BUTTON_CLICKED,\n\tLABEL_TRANSLATION_STARTED,\n\tREQUEST_TRANSLATED_LABELS,\n\tTRANSLATION_FETCH_STARTED,\n\tTRANSLATION_FETCH_SUCCEEDED,\n\tTRANSLATION_FETCH_FAILED,\n\tHIDE_DESKTOP_FACET_PANEL,\n\tTOGGLE_FACET_PANEL_VISIBILITY\n} from \"./common/actions\";\nimport { DONE_BUTTON_CLICKED_INTERNAL } from \"./sn-search-facets-mobile/actions\";\nimport { RELEVANCY_SORT_ID } from \"./sn-search-facets-mobile/constants\";\n\nimport signalTracker from \"./common/signalTracker\";\n\nconst { COMPONENT_BOOTSTRAPPED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nconst facetSelectionsUpdatedEffect = ({\n\taction: { payload },\n\tdispatch,\n\tproperties\n}) => {\n\tconst { searchContextConfigId, searchTerm } = properties;\n\tsignalTracker.trackEvent(SEARCH_REFINED_EVENT, INFO_EVENT, {\n\t\tsearchContextConfigId,\n\t\tqueryTerm: searchTerm\n\t});\n\tdispatch(FACET_SELECTIONS_UPDATED, payload);\n};\n\nconst sortFilterSelectedEffect = ({ action: { payload }, dispatch }) => {\n\tdispatch(SORT_FILTER_SELECTED, payload);\n};\n\nconst mobileDoneButtonClickedEffect = ({ dispatch }) => {\n\tdispatch(DONE_BUTTON_CLICKED);\n};\n\nconst componentBootstrappedEffect = ({ properties, dispatch }) => {\n\tconst { enableLabelTranslation } = properties;\n\tif (enableLabelTranslation) dispatch(LABEL_TRANSLATION_STARTED);\n};\n\nconst componentPropertyChangedEffect = ({ action, dispatch, properties }) => {\n\tconst { enableLabelTranslation } = properties;\n\tif (enableLabelTranslation) {\n\t\tconst {\n\t\t\tpayload: { name }\n\t\t} = action;\n\n\t\tif (name === \"facets\") {\n\t\t\tdispatch(LABEL_TRANSLATION_STARTED);\n\t\t}\n\t}\n};\n\nconst labelTranslationStartedEffect = ({ dispatch, properties }) => {\n\tconst { facets } = properties;\n\tlet labels = [];\n\tif (!isEmpty(facets)) {\n\t\tlabels = facets\n\t\t\t.map(facet => facet?.data?.options.map(option => option.label))\n\t\t\t.flat();\n\n\t\tdispatch(REQUEST_TRANSLATED_LABELS, { labels });\n\t}\n};\n\nconst fetchTranslationsEffect = createGraphQLEffect(TRANSLATION_QUERY, {\n\tvariableList: [\"labels\"],\n\tstartActionType: TRANSLATION_FETCH_STARTED,\n\tsuccessActionType: TRANSLATION_FETCH_SUCCEEDED,\n\terrorActionType: TRANSLATION_FETCH_FAILED\n});\n\nconst translationFetchSucceededEffect = ({\n\taction: { payload },\n\tupdateState\n}) => {\n\tconst { errors = [] } = payload;\n\n\tif (errors.length) {\n\t\tconsole.error(\n\t\t\t\"GlideDomain_Query.getMessages returned errors: \",\n\t\t\tJSON.stringify(errors)\n\t\t);\n\t\treturn;\n\t}\n\n\tconst { getMessages } = payload.data.GlideDomain_Query;\n\tconst translatedLabels = getMessages.reduce(\n\t\t(map, obj) => ((map[obj.key] = obj.message), map),\n\t\t{}\n\t);\n\tupdateState({ translatedLabels });\n};\n\nconst translationFetchFailedEffect = ({ action }) => {\n\tconsole.error(\"Translation fetch failed: \", JSON.stringify(action.payload));\n};\n\n/**\n * Allows users to narrow a large set of search results down to only those that match the specific criteria.\n *\n * ```jsx\n * <sn-search-facets\n *      size=\"lg\"\n *      facets=[\n *          {\n *              type: 'multi_select_and',\n *              name: 'Location',\n *              optionLimit: 10,\n *              data: {\n *                  count: 11,\n *                  options: [\n *                      {\n *                          label: 'North America',\n *                          value: 'North America',\n *                          count: 5,\n *                          options: null,\n *                      },\n *                      {\n *                          label: 'Asia Pacific',\n *                          value: 'Asia Pacific',\n *                          count: 4,\n *                          options: null,\n *                      },\n *                      {\n *                          label: 'Latin America',\n *                          value: 'Latin America',\n *                          count: 2,\n *                          options: null,\n *                      },\n *                  ],\n *              },\n *          },\n *          {\n *              type: 'multi_select_and',\n *              name: 'Category',\n *              optionLimit: 10,\n *              data: {\n *                  options: [\n *                      {\n *                          label: 'Email',\n *                          value: 'Email',\n *                          options: null,\n *                      },\n *                      {\n *                          label: 'Hardware',\n *                          value: 'Hardware',\n *                          options: null,\n *                      },\n *                      {\n *                          label: 'Change',\n *                          value: 'Change',\n *                          options: null,\n *                      }\n *                  ],\n *              },\n *          },\n *      ]\n *      label=\"Filters\"\n * />\n * ```\n *\n * @seismicElement sn-search-facets\n * @summary Give users a way to narrow down search results by clicking on the metadata value based on the current search results.\n */\ncreateCustomElement(\"sn-search-facets\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tinitialState: {\n\t\ttranslatedLabels: {}\n\t},\n\tproperties: {\n\t\t/**\n\t\t * Contains the search facets data from search service.\n\t\t * @type {array}\n\t\t */\n\t\tfacets: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Label on the top of the facet panel.\n\t\t * @type {string}\n\t\t */\n\t\tlabel: {\n\t\t\tdefault: DEFAULT_LABEL,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the component is being rendered on mobile or desktop.\n\t\t * Options include:\n\t\t * - 'sm': Set for the mobile version.\n\t\t * - 'lg': Set for the desktop version.\n\t\t * @type {'sm'|'lg'}\n\t\t */\n\t\tsize: {\n\t\t\tdefault: SIZE.LARGE,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"lg\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the options that should be selected on initial render.\n\t\t * @type {array}\n\t\t */\n\t\tselectedOptions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sys ID of the search context configuration from the sys_search_context_config table.\n\t\t * This configuration provides search and autocomplete configuration metadata.\n\t\t * @type {string}\n\t\t */\n\t\tsearchContextConfigId: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The search term for which the genius results and search results are shown.\n\t\t * @type {string}\n\t\t */\n\t\tsearchTerm: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The sortFilters response from the Sort Filter GraphQL API, it contains the data for sort by filter items with sysId and label.\n\t\t * @type {Array<{sysId: string, label:string}>}\n\t\t * @uib.description Specifies the items for sort by filters\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tsortFilters: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the ID of the selected sort filter. If this property is not passed in, 'Most relevant' sort filter is selected in the\n\t\t * sort by facet by default.\n\t\t * @type {Array<string>}\n\t\t * @uib.description Specifies the selected sort by filter\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tselectedSortFilters: {\n\t\t\tdefault: [RELEVANCY_SORT_ID],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if component is being rendered in platform global search\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Whether or not the panel should be in a collapsed state.\n\t\t * Only applicable when size = lg. When changed from false to true,\n\t\t * will animate width down to 0 to simulate closing of the panel.\n\t\t * @type {boolean}\n\t\t */\n\t\tfacetPanelIsHidden: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to focus hide factes button for a11y reasons\n\t\t * @type {boolean}\n\t\t */\n\t\tfocusHideFacetsButton: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if component should attempt to translate facet labels from sys_ui_message table.\n\t\t * @type {boolean}\n\t\t */\n\t\tenableLabelTranslation: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the full-page view that is displayed when the \"View All\" link\n\t\t * in the right panel of the NASS VA component is clicked.\n\t\t */\n\t\tsearchFromChat: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the IDs of the available search source (sys_search_filter).\n\t\t */\n\t\tsearchSources: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the IDs of the selected search sources (sys_search_filter).\n\t\t */\n\t\tselectedSearchSources: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Used to indicate that the search results are being fetched, if set to true - the component will show a loading state.\n\t\t * @type {boolean}\n\t\t */\n\t\tisLoading: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Used to show/hide the hideFiltersButton in facet panel\n\t\t */\n\t\tshowHideFiltersButton: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t}\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: componentBootstrappedEffect,\n\t\t[COMPONENT_PROPERTY_CHANGED]: componentPropertyChangedEffect,\n\t\t[FACET_SELECTIONS_UPDATED_INTERNAL]: {\n\t\t\teffect: facetSelectionsUpdatedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[SORT_FILTER_SELECTED_INTERNAL]: {\n\t\t\teffect: sortFilterSelectedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[DONE_BUTTON_CLICKED_INTERNAL]: {\n\t\t\teffect: mobileDoneButtonClickedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[LABEL_TRANSLATION_STARTED]: {\n\t\t\teffect: labelTranslationStartedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[REQUEST_TRANSLATED_LABELS]: fetchTranslationsEffect,\n\t\t[TRANSLATION_FETCH_SUCCEEDED]: {\n\t\t\teffect: translationFetchSucceededEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[TRANSLATION_FETCH_FAILED]: {\n\t\t\teffect: translationFetchFailedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[HIDE_DESKTOP_FACET_PANEL]: ({ dispatch, action }) => {\n\t\t\tconst { payload } = action;\n\t\t\t//For portal need to propogate to outer component\n\t\t\tdispatch(TOGGLE_FACET_PANEL_VISIBILITY, payload);\n\t\t}\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when a user selects any of the options.\n\t\t * The payload contains all the selected filter values, which can then be sent with the search query request to get relevant search results.\n\t\t * @type {{selectedFilters: string}}\n\t\t */\n\t\t\"SN_SEARCH_FACETS#SELECTIONS_UPDATED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tselectedFilters: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when a user selects any of the options for sort by filter in mobile variant.\n\t\t * The payload contains the `ID` for the selected sort filter.\n\t\t * @type {{selectedFilters: string}}\n\t\t */\n\t\t\"SN_SEARCH_FACETS#SORT_FILTER_SELECTED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tselectedFilter: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when a user selects any of the options for sort by filter in mobile variant.\n\t\t * The payload contains the `ID` for the selected sort filter.\n\t\t * @type {{facetPanelIsHidden: boolean}}\n\t\t */\n\t\t\"SN_SEARCH_FACETS#TOGGLE_FACET_PANEL_VISIBILITY\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tfacetPanelIsHidden: { type: \"boolean\" },\n\t\t\t\t\tfocusShowFacetsButton: { type: \"boolean\" }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n","import {actionTypes} from '@servicenow/ui-core';\nimport mapValues from 'lodash/mapValues';\nimport debounce from 'lodash/debounce';\n\nconst {COMPONENT_CONNECTED, COMPONENT_DISCONNECTED} = actionTypes;\nconst BEHAVIOR_NAME = 'mediaQuery';\nconst hostToMatchers = new Map();\n\n/* Remove listener for each query defined */\nconst removeMatchListeners = (host) => {\n\t// Workaround for DEF0104864. It's possible that removeMatchListeners gets\n\t// called without COMPONENT_CONNECTED/createMatchListeners ever happening.\n\t//\n\t// But since the component is already disconnected and cleaned up,\n\t// there isn't anything else we need to do.\n\tif (!hostToMatchers.has(host)) return;\n\n\tconst {matchers, handler} = hostToMatchers.get(host);\n\tObject.keys(matchers).forEach((query) => {\n\t\tconst matcher = matchers[query];\n\t\tmatcher.removeListener(handler);\n\t});\n\n\thostToMatchers.delete(host);\n};\n\n/* Add a `matchMedia` listener for each query */\nconst createMatchListeners = (host, queries, handler) => {\n\tconst matchers = mapValues(queries, (query) => {\n\t\tconst matcher = window.matchMedia(query);\n\t\tmatcher.addListener(handler);\n\t\treturn matcher;\n\t});\n\n\thostToMatchers.set(host, {\n\t\thandler,\n\t\tmatchers,\n\t});\n};\n\n/*\n * Create object of results to return to component\n */\nconst updateMatchResults = (host, updateState) => {\n\t// Since this function is debounced, if the component disconnects it is\n\t// possible for `removeMatchListeners` to have been run before this. In that\n\t// case, we will no longer have `host` as a key in this map.\n\t//\n\t// But since the component has disconnected we don't really need to update\n\t// state anyway, so we can just bail out early.\n\tif (!hostToMatchers.has(host)) {\n\t\treturn;\n\t}\n\n\tconst {matchers} = hostToMatchers.get(host);\n\tconst matchResults = mapValues(matchers, (matcher) => matcher.matches);\n\n\tupdateState(() => {\n\t\treturn {\n\t\t\toperation: 'set',\n\t\t\tpath: `behaviors.${BEHAVIOR_NAME}`,\n\t\t\tvalue: matchResults,\n\t\t};\n\t});\n};\n\n/**\n * This behavior can be used to bind to one or more CSS media queries in JS.\n *\n * This behavior takes in an object of CSS media query definitions through\n * `options`. The behavior will take those media queries: add listeners to the\n * window, evaluate if the current window matches the media queries, and passed\n * back an object in `state.behaviors.mediaQuery` with the results.\n *\n * When a listener is triggered the state will be updated with the new results.\n *\n * After installation import the behavior at the top of your component JS file\n * and register it in your component behaviors list:\n *\n * ```js\n * import mediaQueryBehavior from '@servicenow/behavior-media-query';\n *\n * createCustomElement('sn-example', {\n *   // ...\n *   behaviors: [\n *     {\n *       behavior: mediaQueryBehavior,\n *       options: {\n *         smallQuery: '(max-width: 27em)',\n *         mediumQuery: '(min-width: 27em) and (max-width: 48em)',\n *         largeQuery: '(min-width: 48em)'\n *       }\n *     }\n *   ]\n * });\n * ```\n */\nexport default {\n\tname: BEHAVIOR_NAME,\n\tactionHandlers: {\n\t\t/*\n\t\t * create matchListeners\n\t\t * dispatch results to component\n\t\t */\n\t\t[COMPONENT_CONNECTED]: ({updateState, host, action: {payload}}) => {\n\t\t\tconst queries = payload.options;\n\t\t\tconst handler = debounce(\n\t\t\t\tupdateMatchResults.bind(null, host, updateState),\n\t\t\t\t5,\n\t\t\t);\n\n\t\t\tcreateMatchListeners(host, queries, handler);\n\t\t\tupdateMatchResults(host, updateState);\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({host}) => {\n\t\t\tremoveMatchListeners(host);\n\t\t},\n\t},\n};\n","import { t } from \"sn-translate\";\n\nexport const getOnboardingContent = assistantName =>\n\tt(\n\t\t{\n\t\t\tcode: \"sn-search-combobox\",\n\t\t\tmessage:\n\t\t\t\t\"Chat with {assistantName} to get direct answers and helpful resources to your questions.\",\n\t\t\tcomment:\n\t\t\t\t\"assistantName returns the AI Assistant name being used in content\"\n\t\t},\n\t\t{ assistantName: assistantName }\n\t);\n\nexport const getOnboardingLabel = assistantName =>\n\tt(\n\t\t{\n\t\t\tcode: \"sn-search-combobox\",\n\t\t\tmessage: \"Find what you need faster with {assistantName}\",\n\t\t\tcomment: \"assistantName returns the AI Assistant name being used in label\"\n\t\t},\n\t\t{ assistantName: assistantName }\n\t);\n","// public actions exposed to external components\nexport const SEARCH_EXECUTED = \"SN_SEARCH_COMBOBOX#SEARCH_EXECUTED\";\nexport const NAVIGATION_EXECUTED = \"SN_SEARCH_COMBOBOX#NAVIGATION_EXECUTED\";\nexport const CONTEXT_CHANGED = \"SN_SEARCH_COMBOBOX#CONTEXT_CHANGED\";\nexport const UTTERANCE_CLICKED = \"SN_SEARCH_COMBOBOX#UTTERANCE_CLICKED\";\nexport const SUGGESTIONS_RECEIVED = \"SN_SEARCH_COMBOBOX#SUGGESTIONS_RECEIVED\";\nexport const SUGGESTIONS_FAILED = \"SN_SEARCH_COMBOBOX#SUGGESTIONS_FAILED\";\nexport const SEARCH_CLEARED = \"SN_SEARCH_COMBOBOX#SEARCH_CLEARED\";\n\n// private actions consumed within sn-search-combobox component\nexport const SEARCH_EXECUTED_INTERNAL = \"SEARCH_EXECUTED\";\nexport const NAVIGATION_EXECUTED_INTERNAL = \"NAVIGATION_EXECUTED\";\nexport const CONTEXT_CHANGED_INTERNAL = \"CONTEXT_CHANGED\";\nexport const MOBILE_CANCEL_BUTTON_CLICKED = \"MOBILE_CANCEL_BUTTON_CLICKED\";\nexport const NOW_BUTTON_BARE_CLICKED = \"NOW_BUTTON_BARE#CLICKED\"; // nds action\nexport const NOW_BUTTON_ICONIC_CLICKED = \"NOW_BUTTON_ICONIC#CLICKED\"; // nds action\nexport const NOW_TEXT_LINK_CLICKED = \"NOW_TEXT_LINK#CLICKED\"; //nds action\nexport const HANDLE_TOOLTIP_ON_TRUNCATED_TEXT =\n\t\"HANDLE_TOOLTIP_ON_TRUNCATED_TEXT\";\nexport const SEARCH_CLEARED_INTERNAL = \"SEARCH_CLEARED\";\n\n// SEARCH INPUT\nexport const INPUT_CHANGED = \"INPUT_CHANGED\";\nexport const INPUT_FOCUSED_IN = \"INPUT_FOCUSED_IN\";\nexport const INPUT_FOCUSED_OUT = \"INPUT_FOCUSED_OUT\";\nexport const SHOW_POPOVER = \"SHOW_POPOVER\";\nexport const HIDE_POPOVER = \"HIDE_POPOVER\";\nexport const CONTEXT_DROPDOWN_FOCUSED = \"CONTEXT_DROPDOWN_FOCUSED\";\nexport const CLEAR_SEARCH_TERM = \"CLEAR_SEARCH_TERM\";\n\n// POPOVER\nexport const ARROW_UP_PRESSED = \"ARROW_UP_PRESSED\";\nexport const ARROW_DOWN_PRESSED = \"ARROW_DOWN_PRESSED\";\nexport const ARROW_LEFT_PRESSED = \"ARROW_LEFT_PRESSED\";\nexport const ARROW_RIGHT_PRESSED = \"ARROW_RIGHT_PRESSED\";\nexport const MOUSE_OVERED = \"MOUSE_OVERED\";\n\n// CLEARING SEARCH FROM USER HISTORY\nexport const CLEAR_SEARCH_SELECTED = \"CLEAR_SEARCH_SELECTED\";\nexport const CLEAR_SEARCH_MUTATION = \"CLEAR_SEARCH_MUTATION\";\nexport const CLEAR_SEARCH_MUTATION_SUCCEEDED =\n\t\"CLEAR_SEARCH_MUTATION_SUCCEEDED\";\nexport const CLEAR_SEARCH_MUTATION_FAILED = \"CLEAR_SEARCH_MUTATION_FAILED\";\n\nexport const ITEM_SELECTED = \"ITEM_SELECTED\";\n\n// POPOVER DATA\nexport const DEBOUNCED_SUGGESTION_FETCH = \"DEBOUNCED_SUGGESTION_FETCH\";\nexport const SUGGESTION_FETCH = \"SUGGESTION_FETCH\";\nexport const SUGGESTION_FETCH_STARTED = \"SUGGESTION_FETCH_STARTED\";\nexport const SUGGESTION_FETCH_SUCCEEDED = \"SUGGESTION_FETCH_SUCCEEDED\";\nexport const SUGGESTION_FETCH_FAILED = \"SUGGESTION_FETCH_FAILED\";\n\n// EXACT_MATCH\nexport const EXACT_MATCH_FETCH = \"EXACT_MATCH_FETCH\";\nexport const EXACT_MATCH_STARTED = \"EXACT_MATCH_STARTED\";\nexport const EXACT_MATCH_SUCCEEDED = \"EXACT_MATCH_SUCCEEDED\";\nexport const EXACT_MATCH_FAILED = \"EXACT_MATCH_FAILED\";\nexport const QUEUE_EXACT_MATCH_FETCH = \"QUEUE_EXACT_MATCH_FETCH\";\n\n// TRIGGER FIT RECALCULATON\nexport const FIT_RESIZE = \"FIT_RESIZE\";\n\n// SEARCH CONTEXT SWITCH\nexport const CONTEXT_DROPDOWN_CLICKED = \"NOW_DROPDOWN#OPENED_SET\";\nexport const CONTEXT_ITEM_SELECTED = \"NOW_DROPDOWN#ITEM_CLICKED\";\n\n//SEARCH PANEL DISPLAY\nexport const SHOW_SEARCH_PANEL = \"SHOW_SEARCH_PANEL\";\nexport const HIDE_SEARCH_PANEL = \"HIDE_SEARCH_PANEL\";\nexport const SET_REF = \"SET_REF\";\nexport const SET_INPUT_REF = \"SET_INPUT_REF\";\n\nexport const FETCH_EXACT_MATCH_CONFIG = \"FETCH_EXACT_MATCH_CONFIG\";\nexport const SET_ENABLE_EXACT_MATCH_PROPERTY =\n\t\"SET_ENABLE_EXACT_MATCH_PROPERTY\";\n\nexport const SWITCH_TO_DEFAULT_ENABLE_EXACT_MATCH_PROPERTY =\n\t\"SWITCH_TO_DEFAULT_ENABLE_EXACT_MATCH_PROPERTY\";\n\n// ONBOARDING POPOVER\nexport const DISMISS_ONBOARDING_POPOVER = \"DISMISS_ONBOARDING_POPOVER\";\nexport const SHOW_HIDE_ONBOARDING_POPOVER = \"SHOW_HIDE_ONBOARDING_POPOVER\";\n\n// USER PREF\nexport const USER_PREFERENCES_SET = \"USER_PREFERENCES_SET\";\nexport const USER_PREFERENCES_SET_STARTED = \"USER_PREFERENCES_SET_STARTED\";\nexport const USER_PREFERENCES_SET_SUCCEEDED = \"USER_PREFERENCES_SET_SUCCEEDED\";\nexport const USER_PREFERENCES_SET_FAILED = \"USER_PREFERENCES_SET_FAILED\";\nexport const USER_PREFERENCES_FETCH = \"USER_PREFERENCES_FETCH\";\nexport const USER_PREFERENCES_FETCH_STARTED = \"USER_PREFERENCES_FETCH_STARTED\";\nexport const USER_PREFERENCES_FETCH_SUCCEEDED =\n\t\"USER_PREFERENCES_FETCH_SUCCEEDED\";\nexport const USER_PREFERENCES_FETCH_FAILED = \"USER_PREFERENCES_FETCH_FAILED\";\n\n//Behavior Truncation\nexport const BEHAVIOR_TRUNCATION_EVALUATE = \"BEHAVIOR_TRUNCATION#EVALUATE\";\n","import GlideSignals from \"sn-signals\";\nimport { t } from \"sn-translate\";\n\nconst POPOVER_ITEM_TYPE = {\n\tQUERY_CONTENT: \"QUERY_CONTENT\",\n\t//Recently Viewed results by user\n\tUSER_HISTORY_AND_CLICK: \"USER_HISTORY_AND_CLICK\",\n\tEXACT_MATCH: \"EXACT_MATCH\",\n\t// Recent queries by the user\n\tUSER_HISTORY: \"USER_HISTORY\",\n\t// Recent clicked results by the user\n\tPERSONAL_CLICK: \"PERSONAL_CLICK\",\n\tAUTOCOMPLETE: \"AUTOCOMPLETE\",\n\tPOPULAR_QUERY: \"POPULAR_QUERY\",\n\tNAVIGATION: \"NAVIGATION\",\n\tSECTION_HEADER: \"SECTION_HEADER\",\n\tUSER_SEARCH_TERM: \"USER_SEARCH_TERM\",\n\tFOOTER: \"FOOTER\", //for global search\n\tNOW_ASSIST_SUGGESTED_UTTERANCE: \"NOW_ASSIST_SUGGESTED_UTTERANCE\",\n\tRAG_POPULAR_QUERY: \"RAG_POPULAR_QUERY\"\n};\n\nconst EVENT_TYPE = {\n\tSEARCH_FROM_INPUT: \"SEARCH_FROM_INPUT\",\n\tSEARCH_FROM_POPOVER: \"SEARCH_FROM_POPOVER\",\n\tNAVIGATION: \"NAVIGATION\"\n};\n\nconst UPDATE_ARIA_LIVE_TEXT_SOURCES = {\n\tCLEAR_RECENT_SEARCH_ITEM: \"CLEAR_RECENT_SEARCH_ITEM\",\n\tRESULT_COUNT: \"RESULT_COUNT\"\n};\n\nconst MAX_QUERY_LENGTH = 255; // characters\n\nconst SIZE = {\n\tSMALL: \"sm\",\n\tLARGE: \"lg\"\n};\n\nconst PLACEMENT = {\n\tBODY: \"body\",\n\tHEADER: \"header\",\n\tFULLPAGE_HEADER: \"fullpage-header\",\n\tFULLPAGE_BODY: \"fullpage-body\",\n\tDYNAMIC_LANDING: \"dynamic-landing\",\n\tDYNAMIC_LANDING_HEADER: \"dynamic-landing-header\"\n};\n\nconst AUTOCOMPLETE_QUERY_EVENT = \"AUTOCOMPLETE_QUERY_EVENT\";\nconst INFO_EVENT = GlideSignals.priority.INFO;\nconst SEISMIC_OR_MOBILE_APPLICATION = \"SeismicOrMobileApplication\";\n\nconst INPUT_DEBOUNCE_DELAY = 200; // milliseconds\nconst DEBOUNCE_MODIFIER = \"debounce\";\nconst SUGGESTION_QUERY = `query($searchContextConfigId: String!, $term: String!, $additionalContext: String!){\n    GlideSearch_Query {\n        suggestions(searchContextConfigId: $searchContextConfigId, searchTerm: $term, additionalContext: $additionalContext) {\n            term\n            data {\n                name\n                records {\n                    type\n                    columns {\n                        label\n                        fieldName\n                        value\n                        displayValue\n                    }\n                }\n            }\n        }\n    }\n}`;\n\nconst CLEAR_SEARCH_FROM_HISTORY_MUTATION_QUERY = `mutation($searchContextConfigId: String!, $term: String!){\n    GlideSearch_Mutation {\n        clearSearchFromHistory(searchContextConfigId: $searchContextConfigId, searchTerm: $term) {\n            term\n        }\n    }\n}`;\n\nconst X_IS_LOGGED_IN_HEADER = \"x-is-logged-in\";\n\nconst PERSONAL_CLICK_FIELDS = {\n\tTABLE: \"source_table\",\n\tSYSID: \"result_doc_id\",\n\tURL: \"source_url\",\n\tLABEL: \"name\",\n\tACTION_DATA: \"action_data\"\n};\nconst EXACT_MATCH_FIELDS = {\n\tTABLE: \"source_table_name\",\n\tSYSID: \"sysID\",\n\tRECORD_URL: \"record_url\"\n};\n\nconst QUERY_CONTENT_FIELDS = {\n\tTABLE: \"table\",\n\tSYSID: \"sys_id\",\n\tRECORD_URL: \"url\",\n\tPARENT_TABLE: \"parent_table\",\n\tPARENT_RECORD_SYSID: \"parent_sys_id\",\n\tRECORD_CLASS_NAME: \"record_class_name\"\n};\n\nconst SR_LABELS = {\n\tCLEARED_RECENT_SEARCH_ITEM: t(\"cleared recent search term\"),\n\tEXACT_MATCH_FOUND: t(\"exact match found\"),\n\tNAVIGATION_INSTRUCTIONS: t(\n\t\t\"Use the up and down arrow keys to navigate and press enter to select\"\n\t)\n};\n\nconst LABELS = {\n\tCLEAR_SEARCH: t(\"Clear search term\"),\n\tSUBMIT_SEARCH: t(\"Submit search\"),\n\tCLEAR_RECENT_SEARCH: t(\"Clear recent search\"),\n\tCANCEL_SEARCH: t(\"Cancel search\"),\n\tLOADING_LABEL: t(\"Checking for suggestions...\"),\n\tSHOW_SEARCH_PANEL: t(\"show search panel\"),\n\tSTART_CHAT: t(\"Start chat\"),\n\tDISMISS_POPOVER: t(\"Dismiss\"),\n\tLEARN_MORE: t(\"Learn more link, link opens in a new tab\")\n};\n\nconst KEYCODE = {\n\tENTER: \"Enter\",\n\tSPACE: \"Space\"\n};\n\nconst KEYBOARD_NAVIGATION = {\n\tUP: \"UP\",\n\tDOWN: \"DOWN\",\n\tRIGHT: \"RIGHT\",\n\tLEFT: \"LEFT\"\n};\n\nconst RECENT_SEARCH_SECTION_HEADER = t(\"Recent Searches\");\n\nconst SEARCH_CONTEXT_TRIGGER_LABEL = t(\"Choose search context\");\nconst PANEL_DROPDOWN = t(\"Dropdown\");\nconst DROPDOWN_POSITION = [\"bottom-end top-end\"];\nconst CONTEXT_SWITCH_TOP_OFFSET = 2;\nconst WINDOW_SIZE = {\n\tEXPANDED: \"expanded\",\n\tCOLLAPSED: \"collapsed\",\n\tMOBILE: \"mobile\"\n};\nconst GLOBAL_SEARCH_MOBILE_CONTEXT_CONSTRAIN_WIDTH = {\n\tminWidth: \"target\",\n\tmaxWidth: 244\n};\n\nconst GLOBAL_SEARCH_DROPDOWN_WIDTH = 320;\nconst GLOBAL_RECENT_SEARCH_SECTION_HEADER = t(\"RECENTLY SEARCHED\");\n\nconst GLOBAL_SEARCH_WIDTH = \"356px\";\nconst DEFAULT_PLACEHODLER = t(\"Search\");\nconst GLOBAL_SEARCH_MOBILE_WIDTH = \"300px\";\n\nconst SEARCH_CONTEXTS = [\n\t{\n\t\tid: \"now/cwf/agent\",\n\t\tlabel: \"CSM/FSM Configurable Workspace\",\n\t\tcontext: {\n\t\t\tpath: \"now/cwf/agent\",\n\t\t\texperienceName: \"CSM/FSM Configurable Workspace\"\n\t\t},\n\t\troute: \"search\",\n\t\tsearchDataConfigId: \"c861cea2c7022010099a308dc7c26041\",\n\t\tsearchViewConfigId: \"97a574ea53c0130084acddeeff7b12a6\"\n\t},\n\t{\n\t\tid: \"now/polaris/ui\",\n\t\tlabel: \"Global\",\n\t\tcontext: {\n\t\t\tpath: \"now/polaris/ui\",\n\t\t\texperienceName: \"Global Search\"\n\t\t},\n\t\troute: \"search\",\n\t\tsearchDataConfigId: \"c861cea2c7022010099a308dc7c26041\",\n\t\tsearchViewConfigId: \"0f8b85d0c7922010099a308dc7c2606a\"\n\t}\n];\n\nconst SELECTED_SEARCH_CONTEXT = {\n\tid: \"now/polaris/ui\",\n\tlabel: \"Global\",\n\tcontext: \"now/polaris/ui\",\n\troute: \"search\",\n\tsearchDataConfigId: \"c861cea2c7022010099a308dc7c26041\",\n\tsearchViewConfigId: \"0f8b85d0c7922010099a308dc7c2606a\"\n};\n\nconst DEFAULT_EXACT_MATCH_REGEX = \"^\\\\s*[a-zA-Z]+\\\\d+\\\\s*$\";\n\nconst ICON_TYPE = new Map([\n\t[\"incident\", \"circle-exclamation-outline\"],\n\t[\"sc_cat_item\", \"book-outline\"],\n\t[\"kb_knowledge\", \"document_outline\"],\n\t[\"change_request\", \"arrow-up-down-outline\"],\n\t[\"sys_user_group\", \"user-group-outline\"],\n\t[\"sys_user\", \"user-outline\"],\n\t[\"problem\", \"triangle-exclamation-outline\"],\n\t[\"task\", \"circle-exclamation-outline\"]\n]);\n\nconst EXACT_MATCH_REGEX_SYS_PROPERTY =\n\t\"com.snc.agent_workspace.global_search.typeahead.exact_match_request_criterion_regex\";\n\nconst EXACT_MATCH_SECTION_HEADER = t(\"EXACT MATCH\");\n\nconst SYS_ATTACHMENT = \"sys_attachment\";\n\nconst ATTACHMENT_LABEL = \"Attachment\";\n\nconst EXACT_MATCH_CONFIG_QUERY = `query($searchContextConfigId: String!){\n    GlideRecord_Query {\n      sys_search_context_config (sys_id: $searchContextConfigId) {\n        _results {\n          enable_exact_match{\n            value\n          }\n        }\n      }\n    }\n}`;\n\nconst DATABROKER_URI_QUERY = \"/api/now/uxf/databroker/exec\";\n\nconst EXACT_MATCH_QUERY_PATH = `result[0].executionResult.output`;\n\nconst AI_ASSISTANT = t(\"ServiceNow Otto\"); // Text for the AI assistant in the onboarding placeholder\n\nconst USER_PREF_DISMISSED_PROPERTY =\n\t\"glide.search.onboarding.popover.dismissed\";\n\nconst NASS_INPUT_PLACEHOLDER = t(\"Ask AI for help or search\");\n\nconst NASS_GLOBAL_INPUT_PLACEHOLDER = t(\"Search or ask AI\");\n\nconst AI_SPARKLE_ICON = \"ai-sparkle-outline\";\n\nconst VA_HANDOFF_CLICK = \"VA_HANDOFF_CLICK\";\n\nconst ASK_OTTO = \"Ask ServiceNow Otto\";\n\nconst AI_SPARKLE_ICON_PATHS = [\n\t\"M7.17 2.995a1.63 1.63 0 0 1-1.174 1.173l-.344.089c-.25.064-.25.42 0 .484l.344.089A1.63 1.63 0 0 1 7.17 6.003l.088.345c.064.25.42.25.484 0l.089-.345A1.63 1.63 0 0 1 9.004 4.83l.345-.089c.25-.064.25-.42 0-.484l-.344-.089A1.63 1.63 0 0 1 7.83 2.995l-.089-.345c-.064-.25-.42-.25-.484 0l-.088.345ZM4.18 5.286a2.23 2.23 0 0 1-1.894 1.895c-.37.053-.37.586 0 .639.982.14 1.754.912 1.895 1.894.052.37.585.37.638 0A2.23 2.23 0 0 1 6.714 7.82c.37-.053.37-.586 0-.639A2.23 2.23 0 0 1 4.82 5.286c-.053-.369-.586-.369-.638 0Z\",\n\t\"M11.23 2.89a1.63 1.63 0 0 1-1.338 1.338l-.145.024c-.278.047-.278.446 0 .493l.145.024a1.63 1.63 0 0 1 1.338 1.338l.024.143c.046.278.446.278.493 0l.024-.143a1.63 1.63 0 0 1 1.338-1.338l.175-.03c.277-.046.278-.444.002-.492l-.179-.032a1.63 1.63 0 0 1-1.323-1.323l-.032-.18c-.049-.277-.446-.276-.493.001l-.03.177ZM6.797 5.17A3.46 3.46 0 0 1 4.17 7.799l-1.404.312c-.417.092-.417.688 0 .78l1.404.313a3.46 3.46 0 0 1 2.627 2.627l.313 1.404c.092.418.688.418.78 0l.313-1.404a3.46 3.46 0 0 1 2.627-2.627l1.404-.312c.417-.093.417-.689 0-.781l-1.404-.312A3.46 3.46 0 0 1 8.203 5.17L7.89 3.766c-.092-.417-.688-.417-.78 0l-.313 1.405Z\",\n\t\"M17.796 2.663a3 3 0 0 1-2.134 2.134l-1.382.365c-.347.092-.347.585 0 .677l1.383.365a3 3 0 0 1 2.133 2.134l.366 1.382c.091.347.585.347.676 0l.366-1.382a3 3 0 0 1 2.133-2.134l1.383-.365c.347-.092.347-.585 0-.677l-1.382-.365a3 3 0 0 1-2.134-2.134l-.366-1.382c-.091-.348-.585-.348-.676 0zm-8.38 4.924a6.5 6.5 0 0 1-4.83 4.83l-2.114.5c-.616.145-.616 1.021 0 1.167l2.117.502a6.5 6.5 0 0 1 4.827 4.829l.5 2.114c.146.616 1.022.616 1.168 0l.502-2.117a6.5 6.5 0 0 1 4.826-4.826l2.117-.502c.616-.146.616-1.022 0-1.168l-2.114-.5a6.5 6.5 0 0 1-4.83-4.827l-.5-2.117c-.147-.616-1.023-.616-1.168 0z\",\n\t\"M23.464 4.453a3 3 0 0 1-2.011 2.011l-2.208.663a.39.39 0 0 0 0 .747l2.208.662a3 3 0 0 1 2.011 2.011l.663 2.209a.39.39 0 0 0 .747 0l.664-2.21a3 3 0 0 1 2.01-2.01l2.207-.662a.39.39 0 0 0 0-.747l-2.208-.663a3 3 0 0 1-2.011-2.011l-.662-2.208a.39.39 0 0 0-.747 0zm-12.03 7.417a7 7 0 0 1-4.565 4.564l-4.365 1.38c-.67.212-.67 1.16 0 1.373l4.368 1.382a7 7 0 0 1 4.562 4.564l1.38 4.364c.212.67 1.16.67 1.373 0l1.383-4.367a7 7 0 0 1 4.56-4.56l4.367-1.383c.67-.212.67-1.161 0-1.373l-4.364-1.38a7 7 0 0 1-4.563-4.562l-1.383-4.368c-.212-.67-1.161-.67-1.373 0z\"\n];\n\n// Max characters for placeholder in active global header input\nconst ACTIVE_INPUT_PLACEHOLDER_MAX_LENGTH = 25;\n\nexport {\n\tPOPOVER_ITEM_TYPE,\n\tDEBOUNCE_MODIFIER,\n\tINPUT_DEBOUNCE_DELAY,\n\tSUGGESTION_QUERY,\n\tCLEAR_SEARCH_FROM_HISTORY_MUTATION_QUERY,\n\tX_IS_LOGGED_IN_HEADER,\n\tEVENT_TYPE,\n\tMAX_QUERY_LENGTH,\n\tSIZE,\n\tPLACEMENT,\n\tAUTOCOMPLETE_QUERY_EVENT,\n\tINFO_EVENT,\n\tSEISMIC_OR_MOBILE_APPLICATION,\n\tPERSONAL_CLICK_FIELDS,\n\tLABELS,\n\tKEYCODE,\n\tKEYBOARD_NAVIGATION,\n\tRECENT_SEARCH_SECTION_HEADER,\n\tDROPDOWN_POSITION,\n\tCONTEXT_SWITCH_TOP_OFFSET,\n\tWINDOW_SIZE,\n\tGLOBAL_SEARCH_MOBILE_CONTEXT_CONSTRAIN_WIDTH,\n\tSEARCH_CONTEXT_TRIGGER_LABEL,\n\tGLOBAL_RECENT_SEARCH_SECTION_HEADER,\n\tGLOBAL_SEARCH_WIDTH,\n\tSEARCH_CONTEXTS,\n\tSELECTED_SEARCH_CONTEXT,\n\tDEFAULT_PLACEHODLER,\n\tDEFAULT_EXACT_MATCH_REGEX,\n\tEXACT_MATCH_FIELDS,\n\tQUERY_CONTENT_FIELDS,\n\tICON_TYPE,\n\tEXACT_MATCH_REGEX_SYS_PROPERTY,\n\tGLOBAL_SEARCH_MOBILE_WIDTH,\n\tEXACT_MATCH_SECTION_HEADER,\n\tGLOBAL_SEARCH_DROPDOWN_WIDTH,\n\tPANEL_DROPDOWN,\n\tSYS_ATTACHMENT,\n\tATTACHMENT_LABEL,\n\tUPDATE_ARIA_LIVE_TEXT_SOURCES,\n\tSR_LABELS,\n\tEXACT_MATCH_CONFIG_QUERY,\n\tEXACT_MATCH_QUERY_PATH,\n\tDATABROKER_URI_QUERY,\n\tUSER_PREF_DISMISSED_PROPERTY,\n\tAI_ASSISTANT,\n\tNASS_INPUT_PLACEHOLDER,\n\tAI_SPARKLE_ICON,\n\tVA_HANDOFF_CLICK,\n\tASK_OTTO,\n\tAI_SPARKLE_ICON_PATHS,\n\tNASS_GLOBAL_INPUT_PLACEHOLDER,\n\tACTIVE_INPUT_PLACEHOLDER_MAX_LENGTH\n};\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport \"@servicenow/now-text-link\";\nimport \"@servicenow/now-icon\";\nimport \"@servicenow/now-button\";\nimport styles from \"../../sn-search-combobox-desktop/scss/onboardingPopover.scss\";\nimport {\n\tgetOnboardingContent,\n\tgetOnboardingLabel\n} from \"../utils/onboardingPopoverUtil\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\nimport { DISMISS_ONBOARDING_POPOVER } from \"../actions\";\nimport { AI_ASSISTANT, LABELS } from \"../constants\";\n\ncreateCustomElement(\"sn-search-onboarding-popover\", {\n\tview: ({ properties: { aiAssistant } }) => (\n\t\t<div className=\"popover\">\n\t\t\t<div className=\"onboarding-popover-header-section\">\n\t\t\t\t<div className=\"onboarding-popover-label\">\n\t\t\t\t\t<span className=\"onboarding-popover-heading\" aria-live=\"polite\">\n\t\t\t\t\t\t{getOnboardingLabel(aiAssistant)}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\ticon=\"close-fill\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName=\"onboarding-close-popover\"\n\t\t\t\t\t\thidePadding\n\t\t\t\t\t\tappend-to-payload={{ action: DISMISS_ONBOARDING_POPOVER }}\n\t\t\t\t\t\tconfig-aria={{ \"aria-label\": LABELS.DISMISS_POPOVER }}\n\t\t\t\t\t\ttooltip-content={LABELS.DISMISS_POPOVER}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"onboarding-popover-content\">\n\t\t\t\t<span aria-live=\"polite\">{getOnboardingContent(aiAssistant)}</span>\n\t\t\t</div>\n\t\t</div>\n\t),\n\tproperties: {\n\t\taiAssistant: {\n\t\t\tdefault: AI_ASSISTANT,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t}\n\t},\n\tbehaviors: [{ behavior: mediaQueryBehavior }],\n\tstyles\n});\n","import GlideSignals from \"sn-signals\";\nimport { SEISMIC_OR_MOBILE_APPLICATION } from \"../constants\";\n\nconst signalTracker = {\n\ttrackEvent(eventAction, eventPriority, eventModel) {\n\t\teventModel.applicationType = SEISMIC_OR_MOBILE_APPLICATION;\n\t\tGlideSignals.trackEvent(eventAction, eventPriority, eventModel);\n\t}\n};\n\nexport default signalTracker;\n","import {\n\tPERSONAL_CLICK_FIELDS,\n\tEXACT_MATCH_FIELDS,\n\tQUERY_CONTENT_FIELDS,\n\tPOPOVER_ITEM_TYPE,\n\tSYS_ATTACHMENT\n} from \"../constants\";\n\nfunction getColumnByFieldName(columns, fieldName) {\n\tif (!columns || !Array.isArray(columns)) return {};\n\tconst matches = columns.filter(col => col.fieldName === fieldName);\n\treturn matches.length > 0 ? matches[0] : {};\n}\n\n/**  For Attachments search based suggestions the expected navigation should be to the parent record\n * But parent table details are to be retrieved differently for personal click fields and query content\n **/\n\nfunction getAttachmentTableDetails(navItem, actionDataCol) {\n\tlet parentTableData;\n\tif (navItem.type === POPOVER_ITEM_TYPE.QUERY_CONTENT) {\n\t\tparentTableData = {\n\t\t\tparentTable:\n\t\t\t\tgetColumnByFieldName(navItem.columns, QUERY_CONTENT_FIELDS.PARENT_TABLE)\n\t\t\t\t\t.value || \"\",\n\t\t\tparentSysId:\n\t\t\t\tgetColumnByFieldName(\n\t\t\t\t\tnavItem.columns,\n\t\t\t\t\tQUERY_CONTENT_FIELDS.PARENT_RECORD_SYSID\n\t\t\t\t).value || \"\"\n\t\t};\n\t}\n\tif (\n\t\tnavItem.type === POPOVER_ITEM_TYPE.USER_HISTORY_AND_CLICK ||\n\t\tnavItem.type === POPOVER_ITEM_TYPE.PERSONAL_CLICK\n\t) {\n\t\tconst navData = JSON.parse(actionDataCol.value);\n\t\tconst { parentTable, parentSysId } = navData.actionPayload;\n\t\tparentTableData = {\n\t\t\tparentTable: parentTable,\n\t\t\tparentSysId: parentSysId\n\t\t};\n\t}\n\treturn parentTableData;\n}\nfunction splitHighlighting(text) {\n\tconst highlightFragments = [];\n\tlet rawText = text;\n\tlet index = rawText.indexOf(\"<highlight>\");\n\twhile (index >= 0) {\n\t\thighlightFragments.push(rawText.substring(0, index));\n\t\thighlightFragments.push(\n\t\t\trawText.substring(index + 11, rawText.indexOf(\"</highlight>\"))\n\t\t);\n\t\trawText = rawText.substring(rawText.indexOf(\"</highlight>\") + 12);\n\t\tindex = rawText.indexOf(\"<highlight>\");\n\t}\n\thighlightFragments.push(rawText);\n\treturn highlightFragments.join(\"\");\n}\n\nfunction parseNavItem(navItem) {\n\tconst title =\n\t\tgetColumnByFieldName(navItem.columns, \"title\").value ||\n\t\tgetColumnByFieldName(navItem.columns, \"name\").value ||\n\t\t\"\";\n\tconst newTitle = splitHighlighting(title);\n\n\tconst tableValue =\n\t\tnavItem.table ||\n\t\tgetColumnByFieldName(navItem.columns, PERSONAL_CLICK_FIELDS.TABLE).value ||\n\t\tgetColumnByFieldName(navItem.columns, EXACT_MATCH_FIELDS.TABLE).value ||\n\t\t\"\";\n\tconst table =\n\t\tnavItem.type === POPOVER_ITEM_TYPE.QUERY_CONTENT\n\t\t\t? getColumnByFieldName(navItem.columns, QUERY_CONTENT_FIELDS.TABLE).value\n\t\t\t: tableValue;\n\n\tconst label =\n\t\tnavItem.label ||\n\t\tgetColumnByFieldName(navItem.columns, PERSONAL_CLICK_FIELDS.LABEL).value ||\n\t\t\"\";\n\n\tconst actionDataCol = getColumnByFieldName(\n\t\tnavItem.columns,\n\t\tPERSONAL_CLICK_FIELDS.ACTION_DATA\n\t);\n\tconst recordUrl =\n\t\tgetColumnByFieldName(navItem.columns, EXACT_MATCH_FIELDS.RECORD_URL)\n\t\t\t.value ||\n\t\tgetColumnByFieldName(navItem.columns, QUERY_CONTENT_FIELDS.RECORD_URL)\n\t\t\t.value ||\n\t\t\"\";\n\n\tconst sysId =\n\t\tgetColumnByFieldName(navItem.columns, EXACT_MATCH_FIELDS.SYSID).value ||\n\t\tgetColumnByFieldName(navItem.columns, QUERY_CONTENT_FIELDS.SYSID).value ||\n\t\t\"\";\n\n\tlet actionData = {};\n\tif (recordUrl && table !== SYS_ATTACHMENT) {\n\t\tconst recordClassName =\n\t\t\tnavItem.type === POPOVER_ITEM_TYPE.QUERY_CONTENT\n\t\t\t\t? getColumnByFieldName(\n\t\t\t\t\t\tnavItem.columns,\n\t\t\t\t\t\tQUERY_CONTENT_FIELDS.RECORD_CLASS_NAME\n\t\t\t\t  ).value\n\t\t\t\t: undefined;\n\t\tactionData = {\n\t\t\tactionPayload: {\n\t\t\t\ttable: table,\n\t\t\t\tsysId: sysId,\n\t\t\t\trecordUrl: recordUrl,\n\t\t\t\t...(recordClassName && { recordClassName })\n\t\t\t}\n\t\t};\n\t} else if (table === SYS_ATTACHMENT) {\n\t\tconst parentTableData = getAttachmentTableDetails(navItem, actionDataCol);\n\t\tactionData = {\n\t\t\tactionPayload: {\n\t\t\t\ttable: parentTableData.parentTable,\n\t\t\t\tsysId: parentTableData.parentSysId\n\t\t\t}\n\t\t};\n\t} else if (actionDataCol && actionDataCol.value) {\n\t\ttry {\n\t\t\tactionData = JSON.parse(actionDataCol.value);\n\t\t} catch (e) {\n\t\t\tconsole.debug(\n\t\t\t\t`invalid JSON syntax in actionData: ${actionDataCol.value}`\n\t\t\t);\n\t\t}\n\t}\n\n\treturn {\n\t\ttable,\n\t\tlabel,\n\t\tactionPayload: actionData,\n\t\ttitle: newTitle\n\t};\n}\n\nexport default parseNavItem;\n","import isEmpty from \"lodash/isEmpty\";\nimport {\n\tPOPOVER_ITEM_TYPE,\n\tKEYBOARD_NAVIGATION,\n\tRECENT_SEARCH_SECTION_HEADER,\n\tGLOBAL_RECENT_SEARCH_SECTION_HEADER\n} from \"../constants\";\n\nconst _recentSearchSection = data => {\n\tif (isEmpty(data)) return false;\n\treturn data\n\t\t.filter(option => option.type === POPOVER_ITEM_TYPE.SECTION_HEADER)\n\t\t.some(\n\t\t\toption =>\n\t\t\t\toption.columns[0].displayValue.toLowerCase() ===\n\t\t\t\t\tRECENT_SEARCH_SECTION_HEADER.toLowerCase() ||\n\t\t\t\toption.columns[0].displayValue.toLowerCase() ===\n\t\t\t\t\tGLOBAL_RECENT_SEARCH_SECTION_HEADER.toLowerCase()\n\t\t);\n};\n\nconst getRowColIndex = (activeRowIndex, activeColumnIndex, data, direction) => {\n\tconst len = data.length;\n\tif (len === 0) {\n\t\treturn { rowIndex: -1, columnIndex: 0 };\n\t}\n\tlet columnIndex = activeColumnIndex;\n\tlet rowIndex = activeRowIndex;\n\tconst recentSearchSection = _recentSearchSection(data);\n\n\tswitch (direction) {\n\t\tcase KEYBOARD_NAVIGATION.UP:\n\t\t\tdo {\n\t\t\t\trowIndex = rowIndex < 1 ? -1 : rowIndex - 1;\n\t\t\t\t// move focus to input\n\t\t\t\tif (rowIndex === -1) {\n\t\t\t\t\tcolumnIndex = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (data[rowIndex].type !== POPOVER_ITEM_TYPE.USER_HISTORY) {\n\t\t\t\t\tcolumnIndex = 1;\n\t\t\t\t} else {\n\t\t\t\t\tcolumnIndex = columnIndex > 0 ? columnIndex : 1;\n\t\t\t\t}\n\t\t\t} while (data[rowIndex].type === POPOVER_ITEM_TYPE.SECTION_HEADER);\n\t\t\tbreak;\n\t\tcase KEYBOARD_NAVIGATION.DOWN:\n\t\t\tdo {\n\t\t\t\trowIndex = rowIndex === len - 1 ? rowIndex : rowIndex + 1;\n\t\t\t\t// when focus is on the last element don't move the focus\n\t\t\t\tif (rowIndex === len - 1) {\n\t\t\t\t\tif (data[rowIndex].type !== POPOVER_ITEM_TYPE.USER_HISTORY) {\n\t\t\t\t\t\tcolumnIndex = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolumnIndex = columnIndex > 0 ? columnIndex : 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (data[rowIndex].type !== POPOVER_ITEM_TYPE.USER_HISTORY) {\n\t\t\t\t\tcolumnIndex = 1;\n\t\t\t\t} else {\n\t\t\t\t\tcolumnIndex = columnIndex > 0 ? columnIndex : 1;\n\t\t\t\t}\n\t\t\t} while (data[rowIndex].type === POPOVER_ITEM_TYPE.SECTION_HEADER);\n\t\t\tbreak;\n\t\tcase KEYBOARD_NAVIGATION.LEFT:\n\t\t\tdo {\n\t\t\t\t// no grid navigation\n\t\t\t\tif (\n\t\t\t\t\tdata[rowIndex].type !== POPOVER_ITEM_TYPE.USER_HISTORY ||\n\t\t\t\t\t!recentSearchSection\n\t\t\t\t) {\n\t\t\t\t\trowIndex = rowIndex < 1 ? len - 1 : rowIndex - 1;\n\t\t\t\t\tcolumnIndex = 1;\n\t\t\t\t} // grid navigation\n\t\t\t\telse if (columnIndex === 1) {\n\t\t\t\t\trowIndex = rowIndex < 1 ? len - 1 : rowIndex - 1;\n\t\t\t\t\tcolumnIndex += 1;\n\t\t\t\t} else {\n\t\t\t\t\tcolumnIndex -= 1;\n\t\t\t\t}\n\t\t\t} while (data[rowIndex].type === POPOVER_ITEM_TYPE.SECTION_HEADER);\n\t\t\tbreak;\n\t\tcase KEYBOARD_NAVIGATION.RIGHT:\n\t\t\tdo {\n\t\t\t\t// no grid navigation\n\t\t\t\tif (\n\t\t\t\t\tdata[rowIndex].type !== POPOVER_ITEM_TYPE.USER_HISTORY ||\n\t\t\t\t\t!recentSearchSection\n\t\t\t\t) {\n\t\t\t\t\trowIndex = (rowIndex + 1) % len;\n\t\t\t\t\tcolumnIndex = 1;\n\t\t\t\t} // grid navigation\n\t\t\t\telse if (columnIndex > 1) {\n\t\t\t\t\trowIndex = (rowIndex + 1) % len;\n\t\t\t\t\tcolumnIndex -= 1;\n\t\t\t\t} else {\n\t\t\t\t\tcolumnIndex += 1;\n\t\t\t\t}\n\t\t\t} while (data[rowIndex].type === POPOVER_ITEM_TYPE.SECTION_HEADER);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn { rowIndex, columnIndex };\n};\n\nexport default getRowColIndex;\n","//import get from 'lodash/get';\nimport isEmpty from \"lodash/isEmpty\";\n\nexport const isExactMatchPresent = (exactMatch, term) => {\n\tif (term === exactMatch.term) return exactMatch.hasExactMatch;\n\treturn false;\n};\n\nexport const canTermMatchExactly = (term, criterionRegex, exactMatchEnabled) =>\n\texactMatchEnabled && new RegExp(criterionRegex).test(term);\n\nexport const hasExactMatchReadingFinished = (\n\texactMatch,\n\tterm,\n\ttermCriterionRegex,\n\texactMatchEnabled\n) => {\n\tif (isEmpty(exactMatch)) return true;\n\n\tconst { isFetching } = exactMatch;\n\n\tif (!isFetching) {\n\t\tconst dataTerm = exactMatch.term;\n\t\tif (\n\t\t\tdataTerm !== term &&\n\t\t\tcanTermMatchExactly(term, termCriterionRegex, exactMatchEnabled)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn !isFetching;\n};\n\nexport const generateExactMatchPayload = searchContextConfigId => {\n\tvar payload = [\n\t\t{\n\t\t\ttype: \"TRANSFORM\",\n\t\t\tdefinitionSysId: \"4c6c99688c8eb910f877893fd12bf7e1\",\n\t\t\tinputValues: {\n\t\t\t\tsearchContextConfigId: {\n\t\t\t\t\ttype: \"JSON_LITERAL\",\n\t\t\t\t\tvalue: searchContextConfigId\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t];\n\n\treturn payload;\n};\n","import { createHttpEffect } from \"@servicenow/ui-effect-http\";\nimport { get } from \"lodash\";\nimport {\n\tUSER_PREFERENCES_SET_STARTED,\n\tUSER_PREFERENCES_SET_SUCCEEDED,\n\tUSER_PREFERENCES_SET_FAILED\n} from \"../actions\";\nimport { DATABROKER_URI_QUERY } from \"../constants\";\n\n/**\n * On dismiss of onboarding popover we set a user preference property\n */\n\nexport const generateSaveUserPreferencePayload = (name, value) => {\n\tvar payload = [\n\t\t{\n\t\t\ttype: \"GRAPHQL\",\n\t\t\tdefinitionSysId: \"0b84084c536910105a20ddeeff7b124b\",\n\t\t\tinputValues: {\n\t\t\t\tname: {\n\t\t\t\t\ttype: \"JSON_LITERAL\",\n\t\t\t\t\tvalue: name\n\t\t\t\t},\n\t\t\t\tvalue: {\n\t\t\t\t\ttype: \"JSON_LITERAL\",\n\t\t\t\t\tvalue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t];\n\n\treturn payload;\n};\n\nexport const handleUserPrefSetEffect = createHttpEffect(DATABROKER_URI_QUERY, {\n\tmethod: \"POST\",\n\tdataParam: \"payload\",\n\tbatch: false,\n\tstartActionType: USER_PREFERENCES_SET_STARTED,\n\tsuccessActionType: USER_PREFERENCES_SET_SUCCEEDED,\n\terrorActionType: USER_PREFERENCES_SET_FAILED\n});\n\nexport const handleUserPrefSetStartedEffect = ({ updateState }) =>\n\tupdateState({\n\t\tsettingOnboardingPref: true\n\t});\n\nexport const handleUserPrefSetSucceededEffect = ({ updateState, action }) => {\n\tconst data = action.payload;\n\tconst userPreferencesMutation = get(\n\t\tdata,\n\t\t\"data.GlideDomain_Mutation.user.setPreference.value\"\n\t);\n\n\tif (userPreferencesMutation) {\n\t\tupdateState({\n\t\t\tsettingOnboardingPref: false\n\t\t});\n\t}\n};\n\nexport const handleUserPrefSetFailedEffect = ({\n\tstate,\n\tupdateState,\n\taction\n}) => {\n\tupdateState({\n\t\tsettingOnboardingPref: false,\n\t\terrorFetchingOnboardingPref: action.payload\n\t});\n\tconst { errorFetchingOnboardingPref } = state;\n\tconsole.warn(\n\t\t\"Errored out on setting onboarding user preference\",\n\t\terrorFetchingOnboardingPref\n\t);\n};\n","import { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\n\nconst replaceWhiteSpace = str => (str || \"\").replace(/\\s/g, \"\\u00a0\");\n\n/*\n * Replace the first character of the string with its uppercase version\n * even if the first character is inside a <highlight> tag\n */\nexport const upperFirstHighlighting = text => {\n\treturn text.replace(/^(\\s*<highlight>)?(.)/, (match, tag, firstChar) => {\n\t\tconst prefix = tag || \"\";\n\t\treturn `${prefix}${firstChar.toUpperCase()}`;\n\t});\n};\n\nexport const splitHighlighting = text => {\n\tconst highlightFragments = [];\n\tlet rawText = text;\n\tlet index = rawText.indexOf(\"<highlight>\");\n\twhile (index >= 0) {\n\t\thighlightFragments.push(rawText.substring(0, index));\n\t\thighlightFragments.push(\n\t\t\t<strong>\n\t\t\t\t{rawText.substring(index + 11, rawText.indexOf(\"</highlight>\"))}\n\t\t\t</strong>\n\t\t);\n\t\trawText = rawText.substring(rawText.indexOf(\"</highlight>\") + 12);\n\t\tindex = rawText.indexOf(\"<highlight>\");\n\t}\n\thighlightFragments.push(rawText);\n\treturn <Fragment>{highlightFragments}</Fragment>;\n};\n\nexport const containsHighlightTags = text => {\n\treturn text.indexOf(\"<highlight>\") >= 0 && text.indexOf(\"</highlight>\") >= 0;\n};\n\nexport const stripHighlightTags = text => {\n\treturn text.replace(/<?\\/?highlight>/g, \"\");\n};\n\n// bold the matched string\nconst highlightMatch = (match, str) => {\n\tconst matchText = match || \"\";\n\n\tconst sourceText =\n\t\tnew DOMParser().parseFromString(str, \"text/html\").documentElement\n\t\t\t.textContent || \"\";\n\n\tconst matchStartIndex = sourceText\n\t\t.toLowerCase()\n\t\t.indexOf(matchText.toLowerCase());\n\tconst matchEndIndex =\n\t\tmatchStartIndex !== -1 ? matchStartIndex + matchText.length : 0;\n\n\tconst regularLeftText = replaceWhiteSpace(\n\t\tsourceText.substring(0, matchStartIndex)\n\t);\n\tconst bold = replaceWhiteSpace(\n\t\tsourceText.substring(matchStartIndex, matchEndIndex)\n\t);\n\tconst regularRightText = replaceWhiteSpace(\n\t\tsourceText.substring(matchEndIndex)\n\t);\n\n\tconst leftTextVNode = regularLeftText || null;\n\tconst middleTextVNode = bold ? <strong>{bold}</strong> : null;\n\tconst rightTextVNode = regularRightText || null;\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{leftTextVNode}\n\t\t\t{middleTextVNode}\n\t\t\t{rightTextVNode}\n\t\t</Fragment>\n\t);\n};\n\nexport default highlightMatch;\n","import isEmpty from \"lodash/isEmpty\";\nimport { getProperty } from \"sn-uxpage-presource\";\nimport {\n\tDEBOUNCED_SUGGESTION_FETCH,\n\tSUGGESTION_FETCH,\n\tSEARCH_EXECUTED_INTERNAL,\n\tNAVIGATION_EXECUTED_INTERNAL,\n\tCLEAR_SEARCH_MUTATION,\n\tITEM_SELECTED,\n\tHIDE_POPOVER,\n\tEXACT_MATCH_FETCH,\n\tINPUT_CHANGED,\n\tHIDE_SEARCH_PANEL,\n\tSHOW_POPOVER,\n\tINPUT_FOCUSED_IN,\n\tINPUT_FOCUSED_OUT,\n\tNOW_TEXT_LINK_CLICKED,\n\tUSER_PREFERENCES_SET,\n\tUTTERANCE_CLICKED,\n\tFETCH_EXACT_MATCH_CONFIG,\n\tQUEUE_EXACT_MATCH_FETCH\n} from \"../actions\";\n\nimport {\n\tPOPOVER_ITEM_TYPE,\n\tEVENT_TYPE,\n\tAUTOCOMPLETE_QUERY_EVENT,\n\tINFO_EVENT,\n\tKEYBOARD_NAVIGATION,\n\tDEFAULT_EXACT_MATCH_REGEX,\n\tEXACT_MATCH_REGEX_SYS_PROPERTY,\n\tWINDOW_SIZE,\n\tUPDATE_ARIA_LIVE_TEXT_SOURCES,\n\tSR_LABELS,\n\tUSER_PREF_DISMISSED_PROPERTY\n} from \"../constants\";\n\nimport signalTracker from \"../utils/signalTracker\";\nimport parseNavItem from \"../utils/parseNavItem\";\nimport getRowColIndex from \"../utils/keyboardNavigation\";\nimport {\n\tcanTermMatchExactly,\n\thasExactMatchReadingFinished,\n\tisExactMatchPresent,\n\tgenerateExactMatchPayload\n} from \"../utils/exactMatch\";\nimport { generateSaveUserPreferencePayload } from \"./dismissOnboardingPopoverEffects\";\n\nimport { TOOLTIP_SHOW, TOOLTIP_HIDE } from \"@servicenow/behavior-tooltip\";\nimport { upperFirst } from \"lodash\";\nimport { stripHighlightTags } from \"../utils/highlight\";\n\nconst _getRelativeClickIndex = (data, activeRowIndex, itemType) => {\n\tconst items = data.slice(0, activeRowIndex + 1);\n\tconst itemClickIndex = items.filter(item => item.type === itemType).length;\n\n\treturn itemClickIndex;\n};\n\nconst _getValue = (data, index) => {\n\tconst item = data[index];\n\n\tif (!item) return \"\";\n\n\treturn item.columns[0].value;\n};\n\nconst _setInputFocus = host => {\n\tconst input = host.shadowRoot.querySelector(\"input\");\n\tif (input) input.focus();\n};\n\nconst _setInputBlur = host => {\n\tconst input =\n\t\thost.shadowRoot.querySelector(\"input\") ||\n\t\thost.shadowRoot.querySelector(\n\t\t\t\"input-container__input -global-active-input\"\n\t\t);\n\n\tif (input) input.blur();\n};\n\nconst _enterKeyPressedInInput = activeRowIndex => activeRowIndex === -1;\n\nconst _isViewAllLinkClicked = item => {\n\tif (item && item.type) return item.type === POPOVER_ITEM_TYPE.FOOTER;\n\treturn false;\n};\n\nexport const _isPopoverTermEvent = event => {\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst sourceElement = path.length > 0 ? path[0] : null;\n\tconst isPopoverTerm =\n\t\tsourceElement &&\n\t\tsourceElement.tagName === \"DIV\" &&\n\t\t(sourceElement.className === \"search-popover__item-metadata-global\" ||\n\t\t\tsourceElement.className === \"search-popover__item-metadata\" ||\n\t\t\tsourceElement.className ===\n\t\t\t\t\"search-popover__item-metadata-global search-popover__item-metadata-global-stacked-item\");\n\treturn isPopoverTerm;\n};\n\nexport const _isUtterance = sourceElement => {\n\treturn sourceElement.className === \"search-popover__item-utterance\";\n};\n\nexport const _isDestinationSearchPopoverItem = ev => {\n\treturn ev.relatedTarget?.className === \"search-popover__item-metadata\";\n};\n\nexport const _isViewAllLinkEvent = event => {\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst isViewAllLink =\n\t\tpath &&\n\t\tpath.some(\n\t\t\telement => element.className === \"search-popover__item-text-link\"\n\t\t);\n\treturn isViewAllLink;\n};\n\nexport const _isDropDownEvent = event => {\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst isDropDownEvent =\n\t\tpath &&\n\t\tpath.some(element => element.className === \"context-dropdown-container\");\n\n\treturn isDropDownEvent;\n};\n\nexport const _isClearButtonEvent = event => {\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst isClearButtonEvent =\n\t\tpath &&\n\t\tpath.some(\n\t\t\telement =>\n\t\t\t\telement.className ===\n\t\t\t\t\"now-button-iconic.input-container__global-cancel-icon\"\n\t\t);\n\n\treturn isClearButtonEvent;\n};\n\n/**\n * Multiple NDS components may exist within `sn-search-combobox` and\n * all `now-button-bare` dispatch the same action. Instead of having\n * a huge effect, we will just re-dispatch the appropriate action\n * by leveraging the property `append-to-payload`\n *\n * Ex:\n *  <now-button-bare\n *     append-to-payload={{\n *        action: SHOW_MODAL, <-- Action to redispatch\n *        payload: {          <-- Payload to pass to defined action\n *           type, index\n *         }\n *     }}\n *     ... />\n *\n */\nexport const nowButtonClickedEffect = ({\n\taction: {\n\t\tpayload: { action, payload }\n\t},\n\tdispatch\n}) => {\n\tdispatch(action, payload);\n};\n\nexport const clearSearchSelectedEffect = ({\n\taction,\n\thost,\n\tdispatch,\n\tproperties,\n\tstate,\n\tupdateState\n}) => {\n\tconst { searchContextConfigId } = properties;\n\tconst {\n\t\tpayload: { term }\n\t} = action;\n\n\tdispatch(CLEAR_SEARCH_MUTATION, { searchContextConfigId, term });\n\tsetTimeout(() => _setInputFocus(host), 1000);\n\tupdateState({\n\t\t...state,\n\t\tupdateAriaLiveTextSource:\n\t\t\tUPDATE_ARIA_LIVE_TEXT_SOURCES.CLEAR_RECENT_SEARCH_ITEM,\n\t\tariaLiveBusy: false,\n\t\tariaLiveText: SR_LABELS.CLEARED_RECENT_SEARCH_ITEM\n\t});\n};\n\nexport const inputFocusedInEffect = ({\n\tstate,\n\tproperties,\n\tupdateState,\n\tdispatch,\n\tupdateProperties\n}) => {\n\tconst {\n\t\tterm,\n\t\tsuggestionSearchTermQuery,\n\t\tfetchExactMatchConfigMetdata\n\t} = state;\n\tconst {\n\t\tsearchContextConfigId,\n\t\tdisableAutocomplete,\n\t\tsearchContexts,\n\t\tadditionalContext\n\t} = properties;\n\n\tupdateState({\n\t\t...state,\n\t\tinputHasFocus: true,\n\t\tisInputActive: true,\n\t\tupdateAriaLiveTextSource: UPDATE_ARIA_LIVE_TEXT_SOURCES.RESULT_COUNT,\n\t\tariaLiveBusy: false\n\t});\n\n\tif (term !== suggestionSearchTermQuery) {\n\t\tif (!disableAutocomplete) {\n\t\t\tupdateState({\n\t\t\t\texactMatch: {}\n\t\t\t});\n\t\t\tdispatch(SUGGESTION_FETCH, {\n\t\t\t\tsearchContextConfigId,\n\t\t\t\tterm,\n\t\t\t\tadditionalContext\n\t\t\t});\n\t\t}\n\t}\n\n\tif (\n\t\t!fetchExactMatchConfigMetdata.searchContextConfigId ||\n\t\t(fetchExactMatchConfigMetdata.searchContextConfigId &&\n\t\t\tfetchExactMatchConfigMetdata.searchContextConfigId !==\n\t\t\t\tsearchContextConfigId)\n\t) {\n\t\t// fetch exact match config only if the prop is not provided via search contexts\n\t\tconst matched = searchContexts?.find(\n\t\t\tcontext => context.searchDataConfigId === searchContextConfigId\n\t\t);\n\t\tif (matched && matched?.enableExactMatch !== undefined) {\n\t\t\tupdateProperties({\n\t\t\t\tenableExactMatch: matched.enableExactMatch\n\t\t\t});\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\tfetchExactMatchConfigMetdata: {\n\t\t\t\t\tsearchContextConfigId,\n\t\t\t\t\tisPending: true\n\t\t\t\t},\n\t\t\t\tfetching: true\n\t\t\t});\n\t\t\tdispatch(FETCH_EXACT_MATCH_CONFIG, {\n\t\t\t\tpayload: generateExactMatchPayload(searchContextConfigId)\n\t\t\t});\n\t\t}\n\t}\n};\n\nexport const inputFocusedOutEffect = ({\n\tstate,\n\tupdateState,\n\tproperties,\n\tdispatch,\n\taction: { payload }\n}) => {\n\tconst { isGlobal, windowSize, enableExactMatch } = properties;\n\n\tconst { activeRowIndex, exactMatch, data, term } = state;\n\tconst isEnterKeyPressedInInput = _enterKeyPressedInInput(activeRowIndex);\n\tconst exactMatchFound =\n\t\tenableExactMatch && !isEmpty(exactMatch.exactMatchData);\n\tconst item = exactMatchFound\n\t\t? isEnterKeyPressedInInput\n\t\t\t? exactMatch.exactMatchData[1]\n\t\t\t: exactMatch.exactMatchData[activeRowIndex]\n\t\t: data[activeRowIndex];\n\tconst isViewAllClicked = isGlobal ? _isViewAllLinkClicked(item) : false;\n\n\tif (isViewAllClicked) {\n\t\tdispatch(NOW_TEXT_LINK_CLICKED);\n\t}\n\tupdateState({\n\t\t...state,\n\t\tinputHasFocus: false,\n\t\tisInputActive: false\n\t});\n\tdispatch(HIDE_POPOVER);\n\n\tconst relatedTargetClassName = payload?.className;\n\tif (\n\t\twindowSize == WINDOW_SIZE.COLLAPSED &&\n\t\t!term &&\n\t\trelatedTargetClassName !== \"context-dropdown-container\" &&\n\t\trelatedTargetClassName !== \"dropdown-search-context-active\"\n\t) {\n\t\tdispatch(HIDE_SEARCH_PANEL);\n\t}\n};\n\nconst _navigationItemClicked = type => {\n\tconst navTypes = [\n\t\tPOPOVER_ITEM_TYPE.EXACT_MATCH,\n\t\tPOPOVER_ITEM_TYPE.NAVIGATION,\n\t\tPOPOVER_ITEM_TYPE.PERSONAL_CLICK,\n\t\tPOPOVER_ITEM_TYPE.QUERY_CONTENT\n\t];\n\treturn navTypes.includes(type);\n};\n\nexport const handlers = {\n\t[EVENT_TYPE.SEARCH_FROM_INPUT](\n\t\tterm,\n\t\tsearchContextConfigId,\n\t\tselectedSearchContext,\n\t\tupdateState,\n\t\tdispatch\n\t) {\n\t\tupdateState({\n\t\t\tpath: \"term\",\n\t\t\tvalue: term,\n\t\t\toperation: \"set\"\n\t\t});\n\n\t\tdispatch(SEARCH_EXECUTED_INTERNAL, {\n\t\t\tsearchContextConfigId,\n\t\t\t...(selectedSearchContext && { selectedSearchContext }),\n\t\t\tsearchTerm: term\n\t\t});\n\t},\n\t[EVENT_TYPE.SEARCH_FROM_POPOVER](\n\t\tterm,\n\t\tsearchContextConfigId,\n\t\tselectedSearchContext,\n\t\tdisableAutocomplete,\n\t\tadditionalContext,\n\t\tupdateState,\n\t\tdispatch,\n\t\thost\n\t) {\n\t\tupdateState({\n\t\t\tpath: \"term\",\n\t\t\tvalue: term,\n\t\t\toperation: \"set\"\n\t\t});\n\n\t\t// Manually update uncontrolled input DOM value\n\t\tif (host) {\n\t\t\tconst input = host.shadowRoot.querySelector(\"input\");\n\t\t\tif (input) {\n\t\t\t\tinput.value = term;\n\t\t\t}\n\t\t}\n\n\t\tdispatch(SEARCH_EXECUTED_INTERNAL, {\n\t\t\tsearchContextConfigId,\n\t\t\t...(selectedSearchContext && { selectedSearchContext }),\n\t\t\tsearchTerm: term\n\t\t});\n\n\t\tif (!disableAutocomplete) {\n\t\t\tdispatch(SUGGESTION_FETCH, {\n\t\t\t\tsearchContextConfigId,\n\t\t\t\tterm,\n\t\t\t\tadditionalContext\n\t\t\t});\n\t\t}\n\t},\n\t[EVENT_TYPE.NAVIGATION](\n\t\tsearchContextConfigId,\n\t\tterm,\n\t\tdata,\n\t\tactiveRowIndex,\n\t\titem,\n\t\tdispatch,\n\t\tproperties,\n\t\tupdateState,\n\t\tselectedSearchContext,\n\t\tisGlobal\n\t) {\n\t\tconst navData = parseNavItem(item);\n\t\tlet updatedActionPayloadData = navData.actionPayload;\n\t\tif (isGlobal) {\n\t\t\tupdatedActionPayloadData = {\n\t\t\t\tactionPayload: {\n\t\t\t\t\t...navData.actionPayload.actionPayload,\n\t\t\t\t\tselectedSearchContext,\n\t\t\t\t\ttitle: navData.title\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tsignalTracker.trackEvent(AUTOCOMPLETE_QUERY_EVENT, INFO_EVENT, {\n\t\t\tsearchContextConfigId,\n\t\t\tqueryTerm: term,\n\t\t\tselectedQuery: navData.label,\n\t\t\tqueryType: item.type,\n\t\t\tclickIndex: _getRelativeClickIndex(data, activeRowIndex, item.type)\n\t\t});\n\t\tupdateState({\n\t\t\tdata: [],\n\t\t\tsuggestionSearchTermQuery: undefined,\n\t\t\tshowPopover: false,\n\t\t\tactiveRowIndex: -1,\n\t\t\tactiveColumnIndex: 0,\n\t\t\tisInputActive: false,\n\t\t\tinputHasFocus: false\n\t\t});\n\t\tdispatch(NAVIGATION_EXECUTED_INTERNAL, updatedActionPayloadData);\n\t}\n};\n\nexport const itemSelectedEffect = ({\n\tstate,\n\taction,\n\tproperties,\n\tdispatch,\n\tupdateState,\n\thost\n}) => {\n\tconst { term, activeRowIndex, data, exactMatch } = state;\n\tconst {\n\t\tsearchContextConfigId,\n\t\tdisableAutocomplete,\n\t\tselectedSearchContext,\n\t\tisGlobal,\n\t\tenableExactMatch,\n\t\tadditionalContext\n\t} = properties;\n\n\tconst exactMatchFound =\n\t\tenableExactMatch && !isEmpty(exactMatch.exactMatchData);\n\tconst exactMatchFetching =\n\t\tenableExactMatch && exactMatch && exactMatch.isFetching;\n\n\tlet isViewAllClicked = false;\n\n\tconst isInputEvent = action.payload?.isInputEvent;\n\tif (isInputEvent) {\n\t\tupdateState({\n\t\t\tactiveRowIndex: -1\n\t\t});\n\t}\n\tconst isEnterKeyPressedInInput = _enterKeyPressedInInput(activeRowIndex);\n\n\t// The index of ExactMatch Data ia always one\n\t// retrieving constant 1 prevents stale state of activeRowIndex after frequent popover selections and EnterKey pressed\n\tconst item = exactMatchFound\n\t\t? isEnterKeyPressedInInput\n\t\t\t? exactMatch.exactMatchData[1]\n\t\t\t: exactMatch.exactMatchData[activeRowIndex]\n\t\t: data[activeRowIndex];\n\n\tif (item?.type === POPOVER_ITEM_TYPE.NOW_ASSIST_SUGGESTED_UTTERANCE) {\n\t\tutteranceSelectEffect(\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tstripHighlightTags(item?.columns[0]?.displayValue),\n\t\t\tfalse,\n\t\t\thost\n\t\t);\n\t\treturn;\n\t}\n\n\tif (!isEnterKeyPressedInInput) {\n\t\tisViewAllClicked = _isViewAllLinkClicked(item);\n\t}\n\n\tisGlobal && !exactMatchFetching\n\t\t? isEnterKeyPressedInInput || isViewAllClicked\n\t\t\t? updateState({\n\t\t\t\t\tisInputActive: false,\n\t\t\t\t\tinputHasFocus: false\n\t\t\t  })\n\t\t\t: \"\"\n\t\t: \"\";\n\n\t// do not search if exact match is being fetched\n\tif (\n\t\t(!exactMatchFetching &&\n\t\t\t(isEnterKeyPressedInInput || isInputEvent) &&\n\t\t\t!exactMatchFound) ||\n\t\t(isGlobal && isViewAllClicked)\n\t) {\n\t\thandlers[EVENT_TYPE.SEARCH_FROM_INPUT](\n\t\t\tterm,\n\t\t\tsearchContextConfigId,\n\t\t\tselectedSearchContext,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\thost\n\t\t);\n\t\t_setInputBlur(host);\n\t\treturn;\n\t}\n\n\tlet navigating = false;\n\tlet navData = {};\n\tif (item && item.type) {\n\t\tnavigating = _navigationItemClicked(item.type);\n\t\tnavData = parseNavItem(item);\n\t}\n\n\t/* For new suggestion reader group USER_HISTORY_AND_CLICK\n\t ** The suggestion include both Recent Searches(User History) & Recent Click (User Clicks)\n\t ** For User history part of suggestions it should not be a navigating item but instead should perform a Search again\n\t ** because they do not have any table or sys_id data associated with it\n\t ** !isEmpty(navData.actionPayload) understands this difference and helps in the separation\n\t */\n\tif (\n\t\tnavigating ||\n\t\t(isEnterKeyPressedInInput && exactMatchFound) ||\n\t\t(item &&\n\t\t\titem.type &&\n\t\t\titem.type === POPOVER_ITEM_TYPE.USER_HISTORY_AND_CLICK &&\n\t\t\t!isEmpty(navData.actionPayload))\n\t) {\n\t\thandlers[EVENT_TYPE.NAVIGATION](\n\t\t\tsearchContextConfigId,\n\t\t\tterm,\n\t\t\tdata,\n\t\t\tactiveRowIndex,\n\t\t\titem,\n\t\t\tdispatch,\n\t\t\tenableExactMatch,\n\t\t\tupdateState,\n\t\t\tselectedSearchContext,\n\t\t\tisGlobal\n\t\t);\n\t} else if (data && data[activeRowIndex]) {\n\t\thandlers[EVENT_TYPE.SEARCH_FROM_POPOVER](\n\t\t\t_getValue(data, activeRowIndex),\n\t\t\tsearchContextConfigId,\n\t\t\tselectedSearchContext,\n\t\t\tdisableAutocomplete,\n\t\t\tadditionalContext,\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\thost\n\t\t);\n\n\t\tsignalTracker.trackEvent(AUTOCOMPLETE_QUERY_EVENT, INFO_EVENT, {\n\t\t\tsearchContextConfigId,\n\t\t\tqueryTerm: term,\n\t\t\tselectedQuery: _getValue(data, activeRowIndex),\n\t\t\tqueryType: item.type,\n\t\t\tclickIndex: isEmpty(term)\n\t\t\t\t? _getRelativeClickIndex(data, activeRowIndex, item.type)\n\t\t\t\t: activeRowIndex + 1 // To have the index start from 1\n\t\t});\n\t}\n\n\t// if enter key is pressed while exact match is being fetched,\n\t// queue the enter event\n\tif (exactMatchFetching && isEnterKeyPressedInInput) {\n\t\tupdateState({ queueExactMatchEvent: true });\n\t}\n\n\tdispatch(INPUT_FOCUSED_OUT);\n};\n\nconst _setPopoverSuggestionFocus = (\n\thost,\n\trow,\n\tcolumn,\n\tisGlobal = false,\n\tdata = []\n) => {\n\tconst suggestions = host.shadowRoot.querySelectorAll(\n\t\t\"li.search-popover__item, li.search-popover__item-view-all\"\n\t);\n\t/*\n\t * For View All link focus, the suggestion array should explicitly be set to 0 because the activeRowIndex is -1 by\n\t * default when there are no suggestions passed in data array\n\t */\n\n\t// Map data array index to DOM index by counting section headers before this row\n\tlet domIndex = row;\n\tif (data.length > 0) {\n\t\tlet sectionHeaderCount = 0;\n\t\tfor (let i = 0; i < row && i < data.length; i++) {\n\t\t\tif (data[i].type === POPOVER_ITEM_TYPE.SECTION_HEADER) {\n\t\t\t\tsectionHeaderCount++;\n\t\t\t}\n\t\t}\n\t\tdomIndex = row - sectionHeaderCount;\n\t}\n\n\tconst focusedOption = !isEmpty(suggestions)\n\t\t? isGlobal && suggestions.length === 1\n\t\t\t? suggestions[0]\n\t\t\t: suggestions[domIndex]\n\t\t: null;\n\tif (focusedOption && column > 0) {\n\t\tconst viewAllFocus =\n\t\t\tfocusedOption.className === \"search-popover__item-view-all\";\n\t\tconst selectorQuery =\n\t\t\tcolumn === 1\n\t\t\t\t? isGlobal\n\t\t\t\t\t? viewAllFocus\n\t\t\t\t\t\t? \"now-text-link\"\n\t\t\t\t\t\t: \"div.search-popover__item-metadata-global\"\n\t\t\t\t\t: \"div.search-popover__item-metadata\"\n\t\t\t\t: \"now-button-iconic.search-popover__item-button\";\n\t\tconst focusedColumn = focusedOption.querySelector(selectorQuery);\n\t\tif (focusedOption) focusedOption.focus();\n\t\tif (focusedColumn) focusedColumn.focus();\n\t}\n};\n\nexport const arrowDownEffect = ({ action, state, updateState, properties }) => {\n\tconst { data, activeRowIndex, activeColumnIndex, exactMatch } = state;\n\tconst { isGlobal, enableExactMatch } = properties;\n\tconst {\n\t\tpayload: { host }\n\t} = action;\n\n\tconst item =\n\t\tenableExactMatch && !isEmpty(exactMatch.exactMatchData)\n\t\t\t? exactMatch.exactMatchData\n\t\t\t: data;\n\n\tconst { rowIndex, columnIndex } = getRowColIndex(\n\t\tactiveRowIndex,\n\t\tactiveColumnIndex,\n\t\titem,\n\t\tKEYBOARD_NAVIGATION.DOWN\n\t);\n\n\t_setPopoverSuggestionFocus(host, rowIndex, columnIndex, isGlobal, item);\n\tupdateState({\n\t\t...state,\n\t\tactiveRowIndex: rowIndex,\n\t\tactiveColumnIndex: columnIndex\n\t});\n};\n\nexport const arrowUpEffect = ({ action, state, updateState, properties }) => {\n\tconst { data, activeRowIndex, activeColumnIndex, exactMatch } = state;\n\tconst { isGlobal, enableExactMatch } = properties;\n\tconst {\n\t\tpayload: { host }\n\t} = action;\n\n\tconst item =\n\t\tenableExactMatch && !isEmpty(exactMatch.exactMatchData)\n\t\t\t? exactMatch.exactMatchData\n\t\t\t: data;\n\n\tconst { rowIndex, columnIndex } = getRowColIndex(\n\t\tactiveRowIndex,\n\t\tactiveColumnIndex,\n\t\titem,\n\t\tKEYBOARD_NAVIGATION.UP\n\t);\n\n\tif (rowIndex === -1) _setInputFocus(host);\n\telse _setPopoverSuggestionFocus(host, rowIndex, columnIndex, isGlobal, item);\n\tupdateState({\n\t\t...state,\n\t\tactiveRowIndex: rowIndex,\n\t\tactiveColumnIndex: columnIndex\n\t});\n};\n\nexport const arrowLeftEffect = ({ action, state, updateState, properties }) => {\n\tconst { data, activeRowIndex, activeColumnIndex, exactMatch } = state;\n\tconst { isGlobal, enableExactMatch } = properties;\n\tconst {\n\t\tpayload: { host }\n\t} = action;\n\n\tconst item =\n\t\tenableExactMatch && !isEmpty(exactMatch.exactMatchData)\n\t\t\t? exactMatch.exactMatchData\n\t\t\t: data;\n\n\tconst { rowIndex, columnIndex } = getRowColIndex(\n\t\tactiveRowIndex,\n\t\tactiveColumnIndex,\n\t\titem,\n\t\tKEYBOARD_NAVIGATION.LEFT\n\t);\n\n\t_setPopoverSuggestionFocus(host, rowIndex, columnIndex, isGlobal, item);\n\tupdateState({\n\t\tactiveRowIndex: rowIndex,\n\t\tactiveColumnIndex: columnIndex\n\t});\n};\n\nexport const arrowRightEffect = ({\n\taction,\n\tstate,\n\tupdateState,\n\tproperties\n}) => {\n\tconst { data, activeRowIndex, activeColumnIndex, exactMatch } = state;\n\tconst { isGlobal, enableExactMatch } = properties;\n\tconst {\n\t\tpayload: { host }\n\t} = action;\n\n\tconst item =\n\t\tenableExactMatch && !isEmpty(exactMatch.exactMatchData)\n\t\t\t? exactMatch.exactMatchData\n\t\t\t: data;\n\n\tconst { rowIndex, columnIndex } = getRowColIndex(\n\t\tactiveRowIndex,\n\t\tactiveColumnIndex,\n\t\titem,\n\t\tKEYBOARD_NAVIGATION.RIGHT\n\t);\n\n\t_setPopoverSuggestionFocus(host, rowIndex, columnIndex, isGlobal, item);\n\tupdateState({\n\t\tactiveRowIndex: rowIndex,\n\t\tactiveColumnIndex: columnIndex\n\t});\n};\n\nexport const mouseOverEffect = ({ action, state, updateState }) => {\n\tupdateState({\n\t\t...state,\n\t\tactiveRowIndex: action.payload.index,\n\t\tactiveColumnIndex: 0,\n\t\tupdateAriaLiveTextSource: \"\"\n\t});\n};\n\nexport const showPopoverEffect = ({ state, updateState }) => {\n\tupdateState({\n\t\t...state,\n\t\tshowPopover: true,\n\t\tisInputActive: isEmpty(state.term) ? state.isInputActive : true\n\t});\n};\n\nexport const hidePopoverEffect = ({ updateState }) => {\n\tupdateState({\n\t\tshowPopover: false,\n\t\tactiveRowIndex: -1,\n\t\tactiveColumnIndex: 0\n\t});\n};\n\nexport const contextDropdownFocusedEffect = ({ state, updateState }) => {\n\tupdateState({\n\t\t...state,\n\t\tisInputActive: false\n\t});\n};\n\nexport const inputChangeEffect = ({\n\tproperties,\n\taction,\n\tdispatch,\n\tupdateState,\n\tstate\n}) => {\n\tconst { term, source } = action.payload;\n\tconst {\n\t\tsearchContextConfigId,\n\t\tdisableAutocomplete,\n\t\tenableExactMatch,\n\t\texactMatchRegex,\n\t\tadditionalContext\n\t} = properties;\n\tconst { exactMatch, fetchExactMatchConfigMetdata } = state;\n\n\tupdateState([\n\t\t{\n\t\t\tpath: \"term\",\n\t\t\tvalue: term,\n\t\t\toperation: \"set\"\n\t\t},\n\t\t{\n\t\t\tpath: \"updateAriaLiveTextSource\",\n\t\t\tvalue: \"\",\n\t\t\toperation: \"set\"\n\t\t},\n\t\t{\n\t\t\tpath: \"ariaLiveBusy\",\n\t\t\tvalue: true,\n\t\t\toperation: \"set\"\n\t\t}\n\t]);\n\tconst exactMatchSysProperty = enableExactMatch\n\t\t? getProperty(EXACT_MATCH_REGEX_SYS_PROPERTY)\n\t\t: \"\";\n\n\tlet exactMatchCriterionRegex = exactMatchRegex;\n\n\tif (!exactMatchCriterionRegex) {\n\t\texactMatchCriterionRegex = exactMatchSysProperty\n\t\t\t? exactMatchSysProperty\n\t\t\t: DEFAULT_EXACT_MATCH_REGEX;\n\t}\n\n\tconst canTermExactMatch = canTermMatchExactly(\n\t\tterm,\n\t\texactMatchCriterionRegex,\n\t\tenableExactMatch\n\t);\n\tif (canTermExactMatch) {\n\t\tif (!fetchExactMatchConfigMetdata.isPending && enableExactMatch) {\n\t\t\tdispatch(EXACT_MATCH_FETCH, {\n\t\t\t\tterm,\n\t\t\t\tsearchContextConfigId\n\t\t\t});\n\t\t} else {\n\t\t\tdispatch(QUEUE_EXACT_MATCH_FETCH, {\n\t\t\t\tterm,\n\t\t\t\tsearchContextConfigId\n\t\t\t});\n\t\t}\n\t}\n\tif (\n\t\t!disableAutocomplete &&\n\t\t!isExactMatchPresent(exactMatch, term) &&\n\t\thasExactMatchReadingFinished(\n\t\t\texactMatch,\n\t\t\tterm,\n\t\t\texactMatchCriterionRegex,\n\t\t\tenableExactMatch\n\t\t) &&\n\t\tsource !== \"CLEAR_SEARCH_BUTTON\"\n\t) {\n\t\tupdateState({\n\t\t\texactMatch: {}\n\t\t});\n\t\tdispatch(DEBOUNCED_SUGGESTION_FETCH, {\n\t\t\tsearchContextConfigId,\n\t\t\tterm,\n\t\t\tadditionalContext\n\t\t});\n\t}\n};\n\nexport const _isPopoverButtonEvent = event => {\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst isClearHistoryButton = path.some(\n\t\telement => element.className === \"search-popover__item-button\"\n\t);\n\treturn isClearHistoryButton;\n};\n\nexport const enterKeyHandler = (host, event, dispatch) => {\n\tif (event.isComposing) return;\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst sourceElement = path.length > 0 ? path[0] : null;\n\n\tconst isInputEvent = sourceElement && sourceElement.tagName === \"INPUT\";\n\tconst isPopoverTermEvent =\n\t\t_isPopoverTermEvent(event) || _isUtterance(sourceElement);\n\n\tif (isInputEvent || isPopoverTermEvent) {\n\t\tif (isInputEvent) dispatch(ITEM_SELECTED, { isInputEvent });\n\t\telse dispatch(ITEM_SELECTED);\n\t}\n};\n\n// Returns all focusable popover elements in DOM order, decoupled from arrow key state\nconst _getAllFocusablePopoverItems = host => {\n\tconst selector = [\n\t\t\"li.search-popover__item-utterance\",\n\t\t'li.search-popover__item > div[tabindex][class*=\"search-popover__item-metadata\"]',\n\t\t\"now-button-iconic.search-popover__item-button\",\n\t\t\"li.search-popover__item-view-all now-text-link\"\n\t].join(\", \");\n\treturn Array.from(host.shadowRoot.querySelectorAll(selector));\n};\n\nconst _findCurrentFocusableIndex = (path, allFocusable) => {\n\tconst match = path.find(el => allFocusable.includes(el));\n\treturn match ? allFocusable.indexOf(match) : -1;\n};\n\n// Tab order: Input > Clear > Search > Popover Items > Out\nexport const tabKeyHandler = (host, event, dispatch) => {\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst sourceElement = path.length > 0 ? path[0] : null;\n\n\tconst isPopoverTermEvent = _isPopoverTermEvent(event);\n\tconst isPopoverButtonEvent = _isPopoverButtonEvent(event);\n\tconst isViewAllLinkEvent = _isViewAllLinkEvent(event);\n\tconst isDropDownEvent = _isDropDownEvent(event);\n\tconst isClearButtonEvent = _isClearButtonEvent(event);\n\tconst isUtteranceEvent =\n\t\tsourceElement &&\n\t\tsourceElement.className === \"search-popover__item-utterance\";\n\n\tconst isPopoverItemFocused =\n\t\tisPopoverTermEvent ||\n\t\tisPopoverButtonEvent ||\n\t\tisViewAllLinkEvent ||\n\t\tisUtteranceEvent;\n\n\tconst isSearchButtonEvent =\n\t\tpath &&\n\t\tpath.some(element => {\n\t\t\tconst cls = element.className;\n\t\t\treturn (\n\t\t\t\ttypeof cls === \"string\" &&\n\t\t\t\t(cls.includes(\"input-container__icon--search\") ||\n\t\t\t\t\t(cls.includes(\"input-container__button-icon\") &&\n\t\t\t\t\t\tcls.includes(\"multi-line-input\")))\n\t\t\t);\n\t\t});\n\n\tconst allFocusable = _getAllFocusablePopoverItems(host);\n\tconst hasPopoverItems = allFocusable.length > 0;\n\n\tif (!event.shiftKey) {\n\t\tif (isSearchButtonEvent && hasPopoverItems) {\n\t\t\tevent.preventDefault();\n\t\t\tdispatch(SHOW_POPOVER);\n\t\t\tallFocusable[0].focus();\n\t\t} else if (isPopoverItemFocused) {\n\t\t\tconst currentIndex = _findCurrentFocusableIndex(path, allFocusable);\n\n\t\t\tif (currentIndex !== -1 && currentIndex >= allFocusable.length - 1) {\n\t\t\t\tdispatch(INPUT_FOCUSED_OUT);\n\t\t\t} else if (currentIndex !== -1) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tallFocusable[currentIndex + 1].focus();\n\t\t\t}\n\t\t}\n\n\t\tif (isDropDownEvent) {\n\t\t\tdispatch(INPUT_FOCUSED_OUT);\n\t\t\tdispatch(HIDE_POPOVER);\n\t\t}\n\t} else {\n\t\t// Shift+Tab: reverse direction\n\t\tif (isPopoverItemFocused) {\n\t\t\tconst currentIndex = _findCurrentFocusableIndex(path, allFocusable);\n\n\t\t\tif (currentIndex <= 0) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst searchButton =\n\t\t\t\t\thost.shadowRoot.querySelector(\n\t\t\t\t\t\t\"now-button-iconic.input-container__icon--search\"\n\t\t\t\t\t) ||\n\t\t\t\t\thost.shadowRoot.querySelector(\"now-button-iconic-global-search-icon\");\n\t\t\t\tconst clearButton =\n\t\t\t\t\thost.shadowRoot.querySelector(\n\t\t\t\t\t\t\"now-button-iconic.input-container__button-icon.input-container__icon--cancel\"\n\t\t\t\t\t) ||\n\t\t\t\t\thost.shadowRoot.querySelector(\n\t\t\t\t\t\t\"now-button-iconic.input-container__global-cancel-icon\"\n\t\t\t\t\t);\n\n\t\t\t\tif (searchButton) {\n\t\t\t\t\tsearchButton.focus();\n\t\t\t\t} else if (clearButton) {\n\t\t\t\t\tclearButton.focus();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tallFocusable[currentIndex - 1].focus();\n\t\t\t}\n\t\t} else if (isDropDownEvent || isClearButtonEvent) {\n\t\t\tdispatch(INPUT_FOCUSED_IN);\n\t\t\tdispatch(SHOW_POPOVER);\n\t\t}\n\t}\n};\n\nexport const showSearchPanelInMobileViewEffect = ({\n\tstate,\n\tupdateState,\n\tdispatch,\n\tproperties\n}) => {\n\tupdateState({\n\t\t...state,\n\t\tsearchPanelOpened: true\n\t});\n\tconst { windowSize } = properties;\n\tif (windowSize === WINDOW_SIZE.COLLAPSED) {\n\t\tdispatch(INPUT_CHANGED, { term: \"\" });\n\t}\n};\n\nexport const hideSearchPanelInMobileViewEffect = ({\n\tstate,\n\tdispatch,\n\tupdateState,\n\tproperties\n}) => {\n\tupdateState({\n\t\t...state,\n\t\tsearchPanelOpened: false,\n\t\tactiveRowIndex: -1,\n\t\tterm: \"\"\n\t});\n\tconst { windowSize } = properties;\n\tif (windowSize === WINDOW_SIZE.MOBILE) {\n\t\tdispatch(INPUT_CHANGED, { term: \"\" });\n\t}\n};\n\nexport const handleTooltipOnTruncatedTextEffect = ({ dispatch, action }) => {\n\tconst {\n\t\tpayload: { showToolTip, target }\n\t} = action;\n\tconst primaryTextElement = target.querySelector(\"p.primary-text-container\");\n\tconst breadCrumbElement = target?.querySelector(\"p.click-breadcrumb\");\n\t// show tooltip on title or breadcrumb text overflow only\n\tconst shouldDispatch =\n\t\tshowToolTip &&\n\t\t(primaryTextElement.offsetWidth < primaryTextElement.scrollWidth ||\n\t\t\tbreadCrumbElement?.offsetWidth < breadCrumbElement?.scrollWidth);\n\tdispatch(shouldDispatch ? TOOLTIP_SHOW : TOOLTIP_HIDE, { target: target });\n};\n\nexport const dismissOnboardingPopoverEffect = ({ updateState, dispatch }) => {\n\tupdateState({\n\t\tshowOnboardingPopover: false,\n\t\tshowPopover: true,\n\t\tinputHasFocus: true,\n\t\tisInputActive: true\n\t});\n\n\tdispatch(USER_PREFERENCES_SET, {\n\t\tpayload: generateSaveUserPreferencePayload(\n\t\t\tUSER_PREF_DISMISSED_PROPERTY,\n\t\t\ttrue\n\t\t)\n\t});\n};\n\nexport const utteranceSelectEffect = (\n\tdispatch,\n\tupdateState,\n\tutterance,\n\tisClickEvent,\n\thost = null\n) => {\n\tif (utterance) {\n\t\tconst uppercasedUtterance = upperFirst(utterance);\n\t\tupdateState({\n\t\t\tterm: uppercasedUtterance\n\t\t});\n\t\t// Manually update uncontrolled input DOM value\n\t\tif (host) {\n\t\t\tconst input = host.shadowRoot.querySelector(\"input\");\n\t\t\tif (input) {\n\t\t\t\tinput.value = uppercasedUtterance;\n\t\t\t}\n\t\t}\n\t\tdispatch(UTTERANCE_CLICKED, {\n\t\t\tutterance: uppercasedUtterance\n\t\t});\n\n\t\tif (isClickEvent) {\n\t\t\tdispatch(INPUT_FOCUSED_OUT);\n\t\t}\n\t}\n};\n","import \"@servicenow/now-icon\";\nimport \"@servicenow/now-tooltip\";\nimport \"@servicenow/now-dropdown\";\nimport \"@servicenow/now-popover\";\nimport isEmpty from \"lodash/isEmpty\";\nimport \"./sn-search-onboarding-popover\";\nimport {\n\tINPUT_CHANGED,\n\tSHOW_POPOVER,\n\tINPUT_FOCUSED_IN,\n\tINPUT_FOCUSED_OUT,\n\tITEM_SELECTED,\n\tHIDE_POPOVER,\n\tCONTEXT_DROPDOWN_FOCUSED,\n\tCLEAR_SEARCH_TERM,\n\tSET_INPUT_REF\n} from \"../actions\";\nimport {\n\tPLACEMENT,\n\tLABELS,\n\tCONTEXT_SWITCH_TOP_OFFSET,\n\tDROPDOWN_POSITION,\n\tSEARCH_CONTEXT_TRIGGER_LABEL,\n\tWINDOW_SIZE,\n\tGLOBAL_SEARCH_MOBILE_CONTEXT_CONSTRAIN_WIDTH,\n\tGLOBAL_SEARCH_DROPDOWN_WIDTH,\n\tDEFAULT_PLACEHODLER,\n\tPANEL_DROPDOWN,\n\tNASS_INPUT_PLACEHOLDER,\n\tNASS_GLOBAL_INPUT_PLACEHOLDER,\n\tACTIVE_INPUT_PLACEHOLDER_MAX_LENGTH\n} from \"../constants\";\nimport { t } from \"sn-translate\";\nimport { _isDestinationSearchPopoverItem } from \"../../common/effects/inputEffects\";\n/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */\nlet shouldFocusInput = false;\n\nconst setFocus = (isMobileView, isCollapsedView) => vnode => {\n\tif ((isMobileView && vnode.elm) || (isCollapsedView && vnode.elm)) {\n\t\tvnode.elm.focus();\n\t}\n};\n\nconst removeFocus = (isMobileView, isCollapsedView) => vnode => {\n\tif ((isMobileView && vnode.elm) || (isCollapsedView && vnode.elm)) {\n\t\tvnode.elm.blur();\n\t}\n};\n\n/**\n * Truncates text with ellipsis if it exceeds the max length\n * @param {string} text - The text to truncate\n * @param {number} maxLength - Maximum length before truncation\n * @returns {string} - Truncated text with ellipsis or original text\n */\nconst truncateWithEllipsis = (text, maxLength) => {\n\tif (!text || text.length <= maxLength) {\n\t\treturn text;\n\t}\n\treturn text.substring(0, maxLength) + \"...\";\n};\n\n/**\n * Placeholders for global search , portal search,\n * custom placeholders set by users and now assist self service\n * @returns string\n */\nconst getInputPlaceholderText = (\n\tglobalDesktopHeader,\n\tisInputActive,\n\tshowPopover,\n\tcontextDropdownOpened,\n\tselectedSearchContext,\n\tisGlobal,\n\tplaceholder,\n\tisNowAssistEnabled,\n\tnowAssistPlaceholder,\n\tisFullPageEnabled\n) => {\n\tlet placeholderText = \"\";\n\t//for global/workspace scenarios, else other scenarios\n\tif (globalDesktopHeader) {\n\t\tplaceholderText = isNowAssistEnabled\n\t\t\t? NASS_GLOBAL_INPUT_PLACEHOLDER\n\t\t\t: isInputActive\n\t\t\t? showPopover || contextDropdownOpened\n\t\t\t\t? t(\"Search {0}\", selectedSearchContext.label)\n\t\t\t\t: !isEmpty(placeholder)\n\t\t\t\t? placeholder\n\t\t\t\t: DEFAULT_PLACEHODLER\n\t\t\t: DEFAULT_PLACEHODLER;\n\t} else {\n\t\tplaceholderText =\n\t\t\tisNowAssistEnabled || isFullPageEnabled\n\t\t\t\t? isInputActive\n\t\t\t\t\t? \"\"\n\t\t\t\t\t: nowAssistPlaceholder\n\t\t\t\t\t? nowAssistPlaceholder\n\t\t\t\t\t: NASS_INPUT_PLACEHOLDER\n\t\t\t\t: isGlobal\n\t\t\t\t? DEFAULT_PLACEHODLER\n\t\t\t\t: !isEmpty(placeholder)\n\t\t\t\t? placeholder\n\t\t\t\t: DEFAULT_PLACEHODLER;\n\t}\n\treturn placeholderText;\n};\n\nconst getInputAriaLabel = ({\n\tglobalDesktopHeader,\n\tselectedSearchContext,\n\tisGlobal,\n\tplaceholder,\n\tisNowAssistEnabled,\n\tnowAssistPlaceholder\n}) => {\n\tif (globalDesktopHeader) {\n\t\tif (isNowAssistEnabled) {\n\t\t\treturn NASS_GLOBAL_INPUT_PLACEHOLDER;\n\t\t}\n\t\tif (!isEmpty(placeholder)) {\n\t\t\treturn placeholder;\n\t\t}\n\t\tif (selectedSearchContext?.label) {\n\t\t\treturn t(\"Search {0}\", selectedSearchContext.label);\n\t\t}\n\t\treturn DEFAULT_PLACEHODLER;\n\t}\n\n\tif (isNowAssistEnabled) {\n\t\treturn nowAssistPlaceholder || NASS_INPUT_PLACEHOLDER;\n\t}\n\tif (isGlobal) {\n\t\treturn DEFAULT_PLACEHODLER;\n\t}\n\tif (!isEmpty(placeholder)) {\n\t\treturn placeholder;\n\t}\n\treturn DEFAULT_PLACEHODLER;\n};\n/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */\nconst view = ({\n\thasFocus,\n\tshowPopover,\n\tplaceholder,\n\tnowAssistPlaceholder,\n\tterm,\n\tdispatch,\n\tisMobileView,\n\tplacement,\n\thasSuggestions,\n\tsearchContexts,\n\tselectedSearchContext,\n\tisGlobal,\n\tcontextDropdownOpened,\n\twindowSize,\n\tisInputActive,\n\tanimationsEnabled,\n\tisCollapsedView,\n\tnowId,\n\tisNowAssistEnabled,\n\tenableMultiLineInput,\n\tinputRef,\n\tisFullPageEnabled\n}) => {\n\tlet globalDesktopHeader = isGlobal && placement === PLACEMENT.HEADER;\n\n\tlet isFullPage =\n\t\tplacement === PLACEMENT.FULLPAGE_BODY ||\n\t\tplacement === PLACEMENT.FULLPAGE_HEADER\n\t\t\t? true\n\t\t\t: false;\n\n\t//enable multi-line input for full page\n\tlet inputContainerClassName = `${\n\t\tglobalDesktopHeader && isNowAssistEnabled\n\t\t\t? \"input-container -global -na-self-service\"\n\t\t\t: globalDesktopHeader\n\t\t\t? \"input-container -global\"\n\t\t\t: enableMultiLineInput && !isFullPage\n\t\t\t? \"input-container na-self-service multi-line-input\"\n\t\t\t: isNowAssistEnabled\n\t\t\t? \"input-container na-self-service\"\n\t\t\t: \"input-container\"\n\t}`;\n\n\tif (hasFocus && !isGlobal) {\n\t\tinputContainerClassName += \" input-container--has-focus\";\n\t}\n\n\tif (globalDesktopHeader) {\n\t\tif (isInputActive && (showPopover || contextDropdownOpened)) {\n\t\t\tinputContainerClassName += \" -active-input\";\n\t\t}\n\t} else if (showPopover && !isGlobal) {\n\t\tinputContainerClassName += \" input-container--is-popover-open\";\n\t}\n\n\tconst rawPlaceholderText = getInputPlaceholderText(\n\t\tglobalDesktopHeader,\n\t\tisInputActive,\n\t\tshowPopover,\n\t\tcontextDropdownOpened,\n\t\tselectedSearchContext,\n\t\tisGlobal,\n\t\tplaceholder,\n\t\tisNowAssistEnabled,\n\t\tnowAssistPlaceholder,\n\t\tisFullPageEnabled\n\t);\n\n\t// Truncate placeholder with ellipsis when input is active to prevent text cutoff\n\tconst searchInputPlaceholderText =\n\t\tglobalDesktopHeader && isInputActive\n\t\t\t? truncateWithEllipsis(\n\t\t\t\t\trawPlaceholderText,\n\t\t\t\t\tACTIVE_INPUT_PLACEHOLDER_MAX_LENGTH\n\t\t\t  )\n\t\t\t: rawPlaceholderText;\n\n\t// True only when the displayed placeholder was actually cut short with \"...\"\n\tconst isPlaceholderTruncated =\n\t\tsearchInputPlaceholderText !== rawPlaceholderText;\n\n\tconst searchInputAriaLabel = getInputAriaLabel({\n\t\tglobalDesktopHeader,\n\t\tselectedSearchContext,\n\t\tisGlobal,\n\t\tplaceholder,\n\t\tisNowAssistEnabled,\n\t\tnowAssistPlaceholder\n\t});\n\n\t/*\n\t * focus is in input with text or\n\t * focus is on cancel button\n\t */\n\tconst showCancel = globalDesktopHeader\n\t\t? isInputActive && showPopover\n\t\t\t? (term.length && hasFocus) || (term && !hasFocus)\n\t\t\t: false\n\t\t: (term.length && hasFocus) || (term && !hasFocus);\n\n\t// Buttons should be large for the desktop in-page view, else medium\n\tconst buttonSize = globalDesktopHeader\n\t\t? \"md\"\n\t\t: placement === PLACEMENT.BODY\n\t\t? \"lg\"\n\t\t: \"md\";\n\n\tconst cancelIconName =\n\t\tglobalDesktopHeader && !isInputActive\n\t\t\t? \"circle-close-outline\"\n\t\t\t: placement === PLACEMENT.BODY && !isMobileView\n\t\t\t? \"close-outline\"\n\t\t\t: \"circle-close-outline\";\n\n\t//for full page we have send icon else regular search icon\n\tconst searchIconName = isFullPageEnabled\n\t\t? isInputActive\n\t\t\t? \"send-fill\"\n\t\t\t: \"send-outline\"\n\t\t: \"magnifying-glass-outline\";\n\n\tconst globalSearchIcon = (\n\t\t<span\n\t\t\tclass={{\n\t\t\t\t\"-global-search-icon\": true,\n\t\t\t\t\"-active\":\n\t\t\t\t\t(isInputActive && (showPopover || contextDropdownOpened)) ||\n\t\t\t\t\tisMobileView,\n\t\t\t\t\"-now-assist\": isNowAssistEnabled\n\t\t\t}}\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<now-icon\n\t\t\t\ticon=\"magnifying-glass-outline\"\n\t\t\t\tsize=\"md\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tbutton: { \"aria-label\": t(\"Search\") }\n\t\t\t\t}}\n\t\t\t/>\n\t\t</span>\n\t);\n\n\tconst submitSearchAriaLabel = isFullPageEnabled\n\t\t? LABELS.START_CHAT\n\t\t: LABELS.SUBMIT_SEARCH;\n\n\tconst searchIcon = (addTrigger = false) => (\n\t\t<now-button-iconic\n\t\t\tappend-to-payload={{ action: ITEM_SELECTED }}\n\t\t\tbare\n\t\t\tsize={buttonSize}\n\t\t\tdisabled={\n\t\t\t\t(isNowAssistEnabled || isFullPageEnabled) &&\n\t\t\t\t!isInputActive &&\n\t\t\t\tisEmpty(term)\n\t\t\t}\n\t\t\ticon={searchIconName}\n\t\t\ton-focus={() => {\n\t\t\t\tif (hasSuggestions) {\n\t\t\t\t\tdispatch(SHOW_POPOVER);\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-blur={ev => {\n\t\t\t\tif (!_isDestinationSearchPopoverItem(ev)) {\n\t\t\t\t\tdispatch(HIDE_POPOVER);\n\t\t\t\t}\n\t\t\t}}\n\t\t\tclassName={\n\t\t\t\tenableMultiLineInput\n\t\t\t\t\t? \"input-container__button-icon multi-line-input\"\n\t\t\t\t\t: \"input-container__button-icon input-container__icon--search\"\n\t\t\t}\n\t\t\tvariant=\"tertiary\"\n\t\t\tconfig-aria={{ \"aria-label\": submitSearchAriaLabel }}\n\t\t\ttooltip-content={submitSearchAriaLabel}\n\t\t\t{...(addTrigger && { slot: \"trigger\" })}\n\t\t\t{...(addTrigger && !isInputActive && { disabled: true })}\n\t\t/>\n\t);\n\n\tconst selectedContext = !isEmpty(selectedSearchContext)\n\t\t? selectedSearchContext.id\n\t\t: searchContexts.length > 0\n\t\t? searchContexts[0].id\n\t\t: \"\";\n\n\tconst contextDropdownElement = (\n\t\t<now-dropdown\n\t\t\tclassName=\"context-dropdown-container\"\n\t\t\tid=\"global-search-context-control\"\n\t\t\tbare\n\t\t\tvariant=\"tertiary\"\n\t\t\tsize=\"md\"\n\t\t\titems={searchContexts}\n\t\t\tselectedItems={[selectedContext]}\n\t\t\tmanageOpened\n\t\t\topened={contextDropdownOpened}\n\t\t\tselect=\"single\"\n\t\t\thideLabel\n\t\t\ttooltipContent={SEARCH_CONTEXT_TRIGGER_LABEL}\n\t\t\tpanel-fit-props={{\n\t\t\t\tposition: DROPDOWN_POSITION,\n\t\t\t\toffset: CONTEXT_SWITCH_TOP_OFFSET,\n\t\t\t\tconstrain: {\n\t\t\t\t\tminWidth:\n\t\t\t\t\t\twindowSize === WINDOW_SIZE.MOBILE\n\t\t\t\t\t\t\t? GLOBAL_SEARCH_MOBILE_CONTEXT_CONSTRAIN_WIDTH\n\t\t\t\t\t\t\t: GLOBAL_SEARCH_DROPDOWN_WIDTH\n\t\t\t\t}\n\t\t\t}}\n\t\t\ton-focus={() => {\n\t\t\t\tdispatch(CONTEXT_DROPDOWN_FOCUSED);\n\t\t\t}}\n\t\t\tconfig-aria={{\n\t\t\t\ttrigger: {\n\t\t\t\t\t\"aria-label\": SEARCH_CONTEXT_TRIGGER_LABEL\n\t\t\t\t},\n\t\t\t\tpanel: {\n\t\t\t\t\t\"aria-label\": PANEL_DROPDOWN\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<now-icon\n\t\t\t\ttabindex={windowSize === WINDOW_SIZE.COLLAPSED ? \"0\" : \"\"}\n\t\t\t\tslot=\"trigger-content\"\n\t\t\t\ticon=\"caret-down-fill\"\n\t\t\t\tclassName={\n\t\t\t\t\tisInputActive && (showPopover || contextDropdownOpened)\n\t\t\t\t\t\t? \"dropdown-search-context-active\"\n\t\t\t\t\t\t: \"dropdown-search-context\"\n\t\t\t\t}\n\t\t\t/>\n\t\t</now-dropdown>\n\t);\n\n\tconst cancelElement = (\n\t\t<now-button-iconic\n\t\t\tappend-to-payload={{\n\t\t\t\taction: CLEAR_SEARCH_TERM\n\t\t\t}}\n\t\t\tbare\n\t\t\ttype=\"button\"\n\t\t\tsize={buttonSize}\n\t\t\ticon={cancelIconName}\n\t\t\tclassName={\n\t\t\t\tglobalDesktopHeader\n\t\t\t\t\t? \"input-container__global-cancel-icon\"\n\t\t\t\t\t: animationsEnabled\n\t\t\t\t\t? \"input-container__global-cancel-icon can-animate\"\n\t\t\t\t\t: enableMultiLineInput\n\t\t\t\t\t? \"input-container__button-icon multi-line-input\"\n\t\t\t\t\t: \"input-container__button-icon input-container__icon--cancel\"\n\t\t\t}\n\t\t\ton-focus={() => {\n\t\t\t\tif (hasSuggestions) {\n\t\t\t\t\tdispatch(SHOW_POPOVER);\n\t\t\t\t}\n\t\t\t}}\n\t\t\tvariant=\"tertiary\"\n\t\t\tconfig-aria={{ \"aria-label\": LABELS.CLEAR_SEARCH }}\n\t\t\ttooltip-content={LABELS.CLEAR_SEARCH}\n\t\t/>\n\t);\n\n\tconst textareaElement = (\n\t\t<textarea\n\t\t\tclass={{\n\t\t\t\t\"input-container__input\": true,\n\t\t\t\t\"multi-line-input\": enableMultiLineInput,\n\t\t\t\t\"-active-input\":\n\t\t\t\t\tisInputActive && (showPopover || contextDropdownOpened),\n\t\t\t\t\"can-animate\": animationsEnabled,\n\t\t\t\t\"-na-self-service\": isFullPageEnabled\n\t\t\t}}\n\t\t\trows=\"1\"\n\t\t\taria-label={searchInputAriaLabel}\n\t\t\tplaceholder={searchInputPlaceholderText}\n\t\t\ton-input={ev => {\n\t\t\t\tconst target = ev.target;\n\t\t\t\t// Firefox does not support CSS `field-sizing: content`, so the textarea\n\t\t\t\t// will not auto-grow to fit content. Resize manually as the user types.\n\t\t\t\tif (\n\t\t\t\t\ttypeof CSS !== \"undefined\" &&\n\t\t\t\t\t!CSS.supports(\"field-sizing\", \"content\")\n\t\t\t\t) {\n\t\t\t\t\ttarget.style.height = \"auto\";\n\t\t\t\t\ttarget.style.height = `${target.scrollHeight}px`;\n\t\t\t\t}\n\t\t\t\tdispatch(INPUT_CHANGED, { term: target.value });\n\t\t\t}}\n\t\t\tvalue={term}\n\t\t\ton-focus={() => {\n\t\t\t\tif (shouldFocusInput) {\n\t\t\t\t\tshouldFocusInput = false;\n\t\t\t\t}\n\t\t\t\tdispatch(INPUT_FOCUSED_IN);\n\t\t\t}}\n\t\t\ton-blur={ev => {\n\t\t\t\tif (\n\t\t\t\t\t[\n\t\t\t\t\t\t\"search-popover__item-button\",\n\t\t\t\t\t\t\"search-popover__item-utterance\"\n\t\t\t\t\t].includes(ev.relatedTarget?.className)\n\t\t\t\t) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (shouldFocusInput) {\n\t\t\t\t\tev.target.focus();\n\t\t\t\t} else {\n\t\t\t\t\tdispatch(INPUT_FOCUSED_OUT, ev.relatedTarget);\n\t\t\t\t}\n\t\t\t}}\n\t\t/>\n\t);\n\n\tconst inputElement = (\n\t\t// nds-scanner-disable-start native-element\n\t\t<input\n\t\t\tclass={{\n\t\t\t\t\"input-container__input\": true,\n\t\t\t\t\"-global\": globalDesktopHeader,\n\t\t\t\t\"-active-input\":\n\t\t\t\t\tglobalDesktopHeader &&\n\t\t\t\t\tisInputActive &&\n\t\t\t\t\t(showPopover || contextDropdownOpened),\n\t\t\t\t\"can-animate\": animationsEnabled,\n\t\t\t\t\"-na-self-service\": isNowAssistEnabled && globalDesktopHeader\n\t\t\t}}\n\t\t\taria-autocomplete=\"list\"\n\t\t\t// eslint-disable-next-line jsx-a11y/aria-proptypes\n\t\t\taria-expanded={`${showPopover}`}\n\t\t\ttype=\"text\"\n\t\t\t{...(showPopover && {\n\t\t\t\t\"aria-owns\": `${nowId}-search-popover`,\n\t\t\t\t\"aria-controls\": `${nowId}-search-popover`\n\t\t\t})}\n\t\t\taria-haspopup=\"listbox\"\n\t\t\t// eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n\t\t\trole=\"combobox\"\n\t\t\taria-label={searchInputAriaLabel}\n\t\t\tplaceholder={searchInputPlaceholderText}\n\t\t\ton-input={({ target: { value } }) => {\n\t\t\t\tdispatch(INPUT_CHANGED, { term: value });\n\t\t\t}}\n\t\t\ton-focus={() => {\n\t\t\t\tif (shouldFocusInput) {\n\t\t\t\t\tshouldFocusInput = false;\n\t\t\t\t}\n\t\t\t\tdispatch(INPUT_FOCUSED_IN);\n\t\t\t}}\n\t\t\ton-blur={ev => {\n\t\t\t\tif (\n\t\t\t\t\t[\n\t\t\t\t\t\t\"search-popover__item-button\",\n\t\t\t\t\t\t\"search-popover__item-utterance\"\n\t\t\t\t\t].includes(ev.relatedTarget?.className)\n\t\t\t\t) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (shouldFocusInput) {\n\t\t\t\t\tev.target.focus();\n\t\t\t\t} else {\n\t\t\t\t\tdispatch(INPUT_FOCUSED_OUT, ev.relatedTarget);\n\t\t\t\t}\n\t\t\t}}\n\t\t\thook={{\n\t\t\t\tinsert: vnode => {\n\t\t\t\t\tsetFocus(isMobileView, isCollapsedView)(vnode);\n\t\t\t\t\tif (vnode.elm) {\n\t\t\t\t\t\tdispatch(SET_INPUT_REF, { elm: vnode.elm });\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdestroy: vnode => {\n\t\t\t\t\tremoveFocus(isMobileView, isCollapsedView)(vnode);\n\t\t\t\t\tdispatch(SET_INPUT_REF, { elm: null });\n\t\t\t\t}\n\t\t\t}}\n\t\t/>\n\t\t// nds-scanner-disable-stop native-element\n\t);\n\n\tconst sparkleIcon = (\n\t\t<span className=\"input-sparkle-icon\" aria-hidden=\"true\">\n\t\t\t<now-icon icon=\"ai-sparkle-outline\" size=\"md\" variant=\"tertiary\" />\n\t\t</span>\n\t);\n\n\t// Leading icon logic:\n\t// - Sparkle icon: ServiceNow Otto enabled scenarios (in portal not global)\n\t// - Global search icon: Regular global search\n\t// - No icon: No enhanced experience in portal\n\tconst leadingIcon =\n\t\t(isNowAssistEnabled || isFullPageEnabled) && !globalDesktopHeader\n\t\t\t? sparkleIcon\n\t\t\t: isGlobal || globalDesktopHeader\n\t\t\t? globalSearchIcon\n\t\t\t: null;\n\n\tconst inputTooltip =\n\t\tisGlobal && inputRef && !isInputActive ? (\n\t\t\t<now-tooltip\n\t\t\t\tkey={`input-tooltip-${isInputActive}`}\n\t\t\t\ttarget-ref={inputRef}\n\t\t\t\tcontent={isEmpty(term) ? searchInputPlaceholderText : term}\n\t\t\t\tdelay={500}\n\t\t\t/>\n\t\t) : null;\n\n\t// When the input is active and empty (only the placeholder is showing)\n\t// and that placeholder got cut short with \"...\", show the full\n\t// placeholder text on hover.\n\tconst truncatedPlaceholderTooltip =\n\t\tisGlobal &&\n\t\tinputRef &&\n\t\tisInputActive &&\n\t\tisEmpty(term) &&\n\t\tisPlaceholderTruncated ? (\n\t\t\t<now-tooltip\n\t\t\t\tkey={`input-tooltip-truncated-${isInputActive}`}\n\t\t\t\ttarget-ref={inputRef}\n\t\t\t\tcontent={rawPlaceholderText}\n\t\t\t\tdelay={500}\n\t\t\t/>\n\t\t) : null;\n\n\treturn (\n\t\t<div className={inputContainerClassName}>\n\t\t\t{leadingIcon}\n\t\t\t{enableMultiLineInput && !isFullPage ? textareaElement : inputElement}\n\t\t\t{showCancel ? cancelElement : null}\n\t\t\t{isMobileView || globalDesktopHeader ? null : searchIcon()}\n\t\t\t{globalDesktopHeader && searchContexts.length > 1\n\t\t\t\t? contextDropdownElement\n\t\t\t\t: null}\n\t\t\t{inputTooltip}\n\t\t\t{truncatedPlaceholderTooltip}\n\t\t</div>\n\t);\n};\n\nexport default view;\nexport { getInputAriaLabel };\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport '@servicenow/now-button';\nimport styles from './_now-card-actions.scss';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\n\nconst _renderButtons = (items, dispatch) => {\n\treturn items.map((item) => {\n\t\treturn (\n\t\t\t<now-button\n\t\t\t\tclassName=\"now-card-actions-button\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tvariant={item.variant}\n\t\t\t\tlabel={item.label}\n\t\t\t\ticon={item.icon}\n\t\t\t\tdisabled={item.disabled}\n\t\t\t\ttooltip-content={item.tooltipContent}\n\t\t\t\tconfig-aria={item.configAria}\n\t\t\t\ton-click={() => {\n\t\t\t\t\tif (!item.disabled) {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\titem.clickActionType || 'NOW_CARD_ACTIONS#ACTION_CLICKED',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taction: item,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t});\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {items} = state.properties;\n\treturn (\n\t\t<div className=\"now-card-actions\">{_renderButtons(items, dispatch)}</div>\n\t);\n};\n\n/**\n * Card subcomponent that enables the user to take action. Use card actions\n * to display one to three large action buttons for a card.\n *\n * ```jsx\n * const cardActions = [\n *   {label: 'Decline', variant: 'secondary-negative'},\n *   {label: 'Approve', variant: 'secondary-positive'}\n * ];\n * <now-card-actions items={cardActions} />\n * ```\n *\n * @seismicElement now-card-actions\n * @summary Card subcomponent that enables the user to take action.\n * @uib.label Card Base Actions\n * @uib.icon card-actions\n * @uib.description A card subcomponent that enables the user to take action via one or more buttons\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties items\n * @uib.actions NOW_CARD_ACTIONS#ACTION_CLICKED\n */\ncreateEnhancedElement('now-card-actions', {\n\tpresentational: true,\n\tproperties: {\n\t\t/**\n\t\t * An array of objects that defines the buttons displayed.\n\t\t * The keys for each object are properties for `now-button`. See\n\t\t * `now-button` for more information on using these properties.\n\t\t * - `label: string` required - Label describing the action.\n\t\t * - `icon: string` - Icon displayed with the label.\n\t\t * - `variant: string` - Button style variant.\n\t\t * - `disabled: boolean` - Set to `true` to mute the button color and disable user click interactions.\n\t\t * - `clickActionType: string = \"NOW_CARD_ACTIONS#ACTION_CLICKED\"` - Overrides the default action type dispatched when the user clicks the action\n\t\t * - `tooltipContent: string` - Text to display in the optional tooltip associated with the button.\n\t\t * @type {{ label: string, icon: string, variant: string, disabled: boolean, clickActionType: string, tooltipContent: string}[]}\n\t\t * @uib.description Array of objects that defines the action buttons displayed - each object can have values for 'label', 'icon', 'variant', 'disabled', 'clickActionType', and 'tooltipContent'\n\t\t * @uib.defaultValue [{\"label\": \"Reject\", \"variant\": \"secondary-negative\"},{\"label\": \"Approve\", \"variant\": \"secondary-positive\"}]\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"label\", \"icon\": \"icon\" }\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\t\ticon: {nowUIType: 'icon', type: 'string'},\n\t\t\t\t\t\t// TODO - re-use a typedef from now-button for this?\n\t\t\t\t\t\tvariant: {type: 'string'},\n\t\t\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\t\t\tclickActionType: {type: 'string'},\n\t\t\t\t\t\ttooltipContent: {type: 'string', translatable: true},\n\t\t\t\t\t\tconfigAria: {\n\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\tbutton: configAriaLabelSchema,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconfigAriaLabelSchema,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tview,\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user clicks a button. The payload will include a\n\t\t * reference to the clicked item and action. The action type can be overridden\n\t\t * by configuring `item.clickActionType`.\n\t\t * @type {{action: Object}}\n\t\t * @uib.description Dispatched when the user clicks a button\n\t\t */\n\t\t'NOW_CARD_ACTIONS#ACTION_CLICKED': {},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_now-card-footer.scss';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\n\nconst _renderSlotContent = (label, split) => {\n\tif (label && typeof label === 'string') {\n\t\treturn (\n\t\t\t<p className=\"now-card-footer-p\">\n\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t<span className=\"now-card-footer-label\" data-truncation>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-card-footer-slot': true,\n\t\t\t\t\t\t'-start': true,\n\t\t\t\t\t\t'-half': split !== 'unequal',\n\t\t\t\t\t\t'-three-quarter': split === 'unequal',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"start\">\n\t\t\t\t\t\t<p className=\"now-card-footer-p\">\n\t\t\t\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t\t\t\t<span className=\"now-card-footer-label\" data-truncation>\n\t\t\t\t\t\t\t\t\t{label?.start}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-card-footer-slot': true,\n\t\t\t\t\t\t'-end': true,\n\t\t\t\t\t\t'-half': split !== 'unequal',\n\t\t\t\t\t\t'-one-quarter': split === 'unequal',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"end\">\n\t\t\t\t\t\t<p className=\"now-card-footer-p\">\n\t\t\t\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t\t\t\t<span className=\"now-card-footer-label\" data-truncation>\n\t\t\t\t\t\t\t\t\t{label?.end}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</Fragment>\n\t\t);\n\t}\n};\n\nconst view = (state) => {\n\tconst {label, split} = state.properties;\n\treturn (\n\t\t<div className=\"now-card-footer\">\n\t\t\t<slot>{_renderSlotContent(label, split)}</slot>\n\t\t</div>\n\t);\n};\n\n/**\n * Footer subcomponent for custom cards. Displays text content or more\n * complex slotted content. Either displayed as the full width of the card\n * or subdivided into a two-column display of equal or unequal widths.\n *\n * ```jsx\n * <now-card-footer label=\"Updated 2019-01-15 08:41:09\" />\n *\n * <now-card-footer label={{start: 'Half width', end: 'Half width'}} />\n *\n * <now-card-footer split=\"unequal\">\n *   <now-highlighted-value slot=\"start\" label=\"Start Label\" status=\"high\" show-icon />\n *   <now-highlighted-value slot=\"end\" label=\"End Label\" status=\"high\" show-icon />\n * </now-card-footer>\n * ```\n *\n * @seismicElement now-card-footer\n * @summary Footer subcomponent for custom cards\n */\ncreateEnhancedElement('now-card-footer', {\n\tproperties: {\n\t\t/**\n\t\t * Label(s) for the card footer.\n\t\t *\n\t\t * Accepts a string for the full width layout.\n\t\t *\n\t\t * Accepts an object for the split layouts.\n\t\t * `start` - The label at the start (left for LTR languages) of the footer in a split layout.\n\t\t * `end` - The label at the end (right for LTR languages) of the footer in a split layout.\n\t\t * @type {(string|{start: string, end: string})}\n\t\t */\n\t\tlabel: {\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {start: {type: 'string'}, end: {type: 'string'}},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{type: 'string'},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * `equal` - Two containers, each 50% of the card's width.\n\t\t * `unequal` - Two containers, start (left for LTR languages) 75% of the card's width\n\t\t * and end (right for LTR languages) 25% of the card's width\n\t\t * @type {('equal'|'unequal')}\n\t\t */\n\t\tsplit: {\n\t\t\tdefault: 'equal',\n\t\t\tschema: {type: 'string', enum: ['equal', 'unequal']},\n\t\t},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [{behavior: truncationBehavior}, {behavior: tooltipBehavior}],\n\n\tslots: {\n\t\t/**\n\t\t * Slot for full width footer.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t\t/**\n\t\t * Slot for block-start (left for LTR languages) content with split layout.\n\t\t */\n\t\tstart: {},\n\t\t/**\n\t\t * Slot for block-end (right for LTR languages) content with split layout.\n\t\t */\n\t\tend: {},\n\t},\n});\n","import isEmpty from 'lodash/isEmpty';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-button';\nimport '@servicenow/now-dropdown';\nimport styles from './_now-card-header.scss';\nimport {itemsSchema} from '@servicenow/now-dropdown';\nimport {t} from 'sn-translate';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\n\n// Used to keep track of the original, consumer-provided item in cases where we\n// need to append more info (like a unique ID) to that item.\nconst originalItem = Symbol('original item');\n\n/**\n * Ensures all actions have an `id` property to conform to the dropdown schema.\n * @param {string} prefix - prefix to add to any generated action ID.\n * @param {Array<DropdownItem>} actions - the actions array to check for IDs.\n * @return {Array<DropdownItem>} the unmodified `actions` array if all actions\n * already contain an ID. Otherwise, returns a copy of the `actions` array with\n * an ID for all containing items.\n */\nconst addIds = (prefix, actions) => {\n\treturn actions.map((action, index) => {\n\t\tif (action.id) return action;\n\n\t\tconst actionWithId = {\n\t\t\t...action,\n\t\t\tid: `${prefix}-${index}`,\n\t\t\t[originalItem]: action,\n\t\t};\n\n\t\treturn actionWithId;\n\t});\n};\n\nconst getAriaLabel = (label, heading) => {\n\treturn heading && heading.label ? `${label} ${heading.label}` : label;\n};\n\nconst renderDropdowns = (\n\tdropdowns,\n\tsize,\n\topenDropdowns,\n\theading,\n\tcomponentId,\n) => {\n\tif (isEmpty(dropdowns)) return;\n\n\treturn dropdowns.map((dropdown) => {\n\t\treturn (\n\t\t\t<now-dropdown-custom-target\n\t\t\t\tclass={{'now-card-header-actions': true, ['-' + size]: size}}\n\t\t\t\titems={dropdown.items}\n\t\t\t\tdisabled={dropdown.disabled}\n\t\t\t\tselect=\"none\"\n\t\t\t\tappend-to-meta={{componentId, dropdownId: dropdown?.id}}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tpanel: {'aria-label': getAriaLabel(dropdown.label, heading)},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\ticon={dropdown.icon}\n\t\t\t\t\ttooltip-content={dropdown.label}\n\t\t\t\t\tbare\n\t\t\t\t\tsize={size}\n\t\t\t\t\thide-padding={size === 'md' ? true : undefined}\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t'aria-label': getAriaLabel(dropdown.label, heading),\n\t\t\t\t\t\t'aria-haspopup': 'true',\n\t\t\t\t\t\t'aria-expanded': openDropdowns[dropdown.id] ? 'true' : 'false',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</now-dropdown-custom-target>\n\t\t);\n\t});\n};\n\nconst renderActions = (\n\theading,\n\tdropdowns,\n\tactions,\n\tactionsOverflowLabel,\n\tdispatch,\n\tsize,\n\tactionDropdownOpen,\n\tcomponentId,\n) => {\n\tif (isEmpty(actions)) return;\n\n\tif (\n\t\t(isEmpty(dropdowns) && actions.length < 4) ||\n\t\tdropdowns?.length + actions.length < 4 ||\n\t\tactions.length === 1\n\t) {\n\t\treturn actions.map((action) => {\n\t\t\treturn (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tclass={{'now-card-header-actions': true, ['-' + size]: size}}\n\t\t\t\t\ticon={action.icon}\n\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tbare\n\t\t\t\t\tsize={size}\n\t\t\t\t\thide-padding={size === 'md' ? true : undefined}\n\t\t\t\t\ttooltip-content={action.label}\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t'aria-label': getAriaLabel(action.label, heading),\n\t\t\t\t\t}}\n\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\tif (!action.disabled) {\n\t\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\taction.clickActionType || 'NOW_CARD_HEADER#ACTION_CLICKED',\n\t\t\t\t\t\t\t\t\tpayload: {action: action},\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\t});\n\t} else {\n\t\tconst tooltipText = actionsOverflowLabel\n\t\t\t? actionsOverflowLabel\n\t\t\t: t('Card actions');\n\n\t\treturn (\n\t\t\t<now-dropdown-custom-target\n\t\t\t\tclass={{'now-card-header-actions': true, ['-' + size]: size}}\n\t\t\t\titems={addIds(componentId, actions)}\n\t\t\t\tselect=\"none\"\n\t\t\t\tappend-to-meta={{componentId, actionDropdown: true}}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tpanel: {'aria-label': getAriaLabel(tooltipText, heading)},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\ttooltip-content={tooltipText}\n\t\t\t\t\ticon=\"ellipsis-v-outline\"\n\t\t\t\t\tbare\n\t\t\t\t\thide-padding={size === 'md' ? true : undefined}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t'aria-label': getAriaLabel(tooltipText, heading),\n\t\t\t\t\t\t'aria-haspopup': 'true',\n\t\t\t\t\t\t'aria-expanded': actionDropdownOpen ? 'true' : 'false',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</now-dropdown-custom-target>\n\t\t);\n\t}\n};\n\nconst renderCardInteraction = (\n\theading,\n\tdropdowns,\n\tactions,\n\tactionsOverflowLabel,\n\tdispatch,\n\tsize,\n\topenDropdowns,\n\tactionDropdownOpen,\n\tcomponentId,\n) => {\n\treturn (\n\t\t<Fragment>\n\t\t\t<div className=\"now-card-header-metadata\">\n\t\t\t\t<slot name=\"metadata\" />\n\t\t\t</div>\n\t\t\t{renderDropdowns(dropdowns, size, openDropdowns, heading, componentId)}\n\t\t\t{renderActions(\n\t\t\t\theading,\n\t\t\t\tdropdowns,\n\t\t\t\tactions,\n\t\t\t\tactionsOverflowLabel,\n\t\t\t\tdispatch,\n\t\t\t\tsize,\n\t\t\t\tactionDropdownOpen,\n\t\t\t\tcomponentId,\n\t\t\t)}\n\t\t</Fragment>\n\t);\n};\n\nconst renderTagLine = (\n\ttagline,\n\theading,\n\tdropdowns,\n\tdispatch,\n\tactions,\n\tactionsOverflowLabel,\n\topenDropdowns,\n\tactionDropdownOpen,\n\tcomponentId,\n) => {\n\tif (isEmpty(tagline)) return;\n\n\tconst {label, icon, variant = 'tertiary'} = tagline;\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-card-tagline': true,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t}}\n\t\t>\n\t\t\t{icon ? (\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"now-card-tagline-icon now-m-inline-end--xs\"\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t/>\n\t\t\t) : undefined}\n\t\t\t<p className=\"now-card-tagline-p\">\n\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t<span className=\"now-card-tagline-label\" data-truncation>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t{renderCardInteraction(\n\t\t\t\theading,\n\t\t\t\tdropdowns,\n\t\t\t\tactions,\n\t\t\t\tactionsOverflowLabel,\n\t\t\t\tdispatch,\n\t\t\t\t'sm',\n\t\t\t\topenDropdowns,\n\t\t\t\tactionDropdownOpen,\n\t\t\t\tcomponentId,\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nconst renderHeading = (heading) => {\n\tif (heading) {\n\t\tconst {\n\t\t\tlabel,\n\t\t\tlevel = 3,\n\t\t\tsize = 'sm',\n\t\t\tvariant = 'primary',\n\t\t\tlines = 1,\n\t\t} = heading;\n\n\t\tconst HeadingLevel = `h${level}`;\n\t\treturn (\n\t\t\t<HeadingLevel\n\t\t\t\tclass={{\n\t\t\t\t\t'now-card-header-heading': true,\n\t\t\t\t\t['-' + size]: true,\n\t\t\t\t\t['-' + variant]: true,\n\t\t\t\t\t'show-one-line': lines === 1,\n\t\t\t\t\t'show-two-lines': lines === 2,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t<span className=\"now-card-header-heading-label\" data-truncation>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</HeadingLevel>\n\t\t);\n\t}\n};\n\nconst renderCaption = (caption) => {\n\tif (isEmpty(caption)) return;\n\n\tconst {label, size = 'sm', lines = 1} = caption;\n\treturn (\n\t\t<p\n\t\t\tclass={{\n\t\t\t\t'now-card-header-caption': true,\n\t\t\t\t['-' + size]: true,\n\t\t\t\t'show-one-line': lines === 1,\n\t\t\t\t'show-two-lines': lines === 2,\n\t\t\t}}\n\t\t>\n\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t<span className=\"now-card-header-caption-label\" data-truncation>\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t</p>\n\t);\n};\n\nconst renderHeadingContainer = (\n\ttagline,\n\theading,\n\tcaption,\n\tdropdowns,\n\tactions,\n\tactionsOverflowLabel,\n\tdispatch,\n\topenDropdowns,\n\tactionDropdownOpen,\n\tcomponentId,\n) => {\n\tif (heading) {\n\t\tconst topAlign =\n\t\t\t(heading && heading.lines === 2) || (caption && caption.lines === 2);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-card-header': true,\n\t\t\t\t\t'-block-center': !topAlign,\n\t\t\t\t\t'now-m-block-start--sm': tagline && (tagline.label || tagline.icon),\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"now-card-header-identifier\">\n\t\t\t\t\t<slot name=\"identifier\" />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"now-card-header-headings\">\n\t\t\t\t\t{renderHeading(heading)}\n\t\t\t\t\t{renderCaption(caption)}\n\t\t\t\t</div>\n\t\t\t\t{isEmpty(tagline) &&\n\t\t\t\t\trenderCardInteraction(\n\t\t\t\t\t\theading,\n\t\t\t\t\t\tdropdowns,\n\t\t\t\t\t\tactions,\n\t\t\t\t\t\tactionsOverflowLabel,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t'md',\n\t\t\t\t\t\topenDropdowns,\n\t\t\t\t\t\tactionDropdownOpen,\n\t\t\t\t\t\tcomponentId,\n\t\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\ttagline,\n\t\theading,\n\t\tcaption,\n\t\tdropdowns,\n\t\tactions,\n\t\tactionsOverflowLabel,\n\t\tnowId,\n\t} = state.properties;\n\tconst {openDropdowns, actionDropdownOpen} = state;\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{renderTagLine(\n\t\t\t\ttagline,\n\t\t\t\theading,\n\t\t\t\tdropdowns,\n\t\t\t\tdispatch,\n\t\t\t\tactions,\n\t\t\t\tactionsOverflowLabel,\n\t\t\t\topenDropdowns,\n\t\t\t\tactionDropdownOpen,\n\t\t\t\tnowId,\n\t\t\t)}\n\t\t\t{renderHeadingContainer(\n\t\t\t\ttagline,\n\t\t\t\theading,\n\t\t\t\tcaption,\n\t\t\t\tdropdowns,\n\t\t\t\tactions,\n\t\t\t\tactionsOverflowLabel,\n\t\t\t\tdispatch,\n\t\t\t\topenDropdowns,\n\t\t\t\tactionDropdownOpen,\n\t\t\t\tnowId,\n\t\t\t)}\n\t\t</Fragment>\n\t);\n};\n\n/**\n * Header subcomponent for custom cards. Highly configurable with multi-line\n * headings and captions, a tagline for categories and identifiers, and the\n * option to include multiple dropdowns and/or action menus.\n *\n * ```jsx\n * <now-card-header heading={{label: 'Title for the Card'}} />\n *\n * <now-card-header\n *   tagline={{label: 'Tagline for the card'}}\n *   heading={{label: 'Title for the card', size: 'md', lines: 2}}\n *   caption={{label: 'Caption for the card', lines: 2}}\n *   dropdowns={[{id: 'dropdown1', items: [{id: 'dropItem1', label: 'Action One'}]}]}\n *   actions={[{id: 'action1', icon: 'download-outline', label: 'Download'}]}>\n *   <now-icon slot=\"identifier\" icon=\"document-outline\" />\n * </now-card-header>\n * ```\n *\n * @seismicElement now-card-header\n * @summary Header subcomponent for custom cards.\n * @uib.label Card Base Header\n * @uib.icon card-header\n * @uib.description A card subcomponent that supports multiple headings and action buttons or menus\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties dropdowns, caption, heading, tagline, actions, actionsOverflowLabel\n * @uib.actions NOW_CARD_HEADER#ACTION_CLICKED\n */\ncreateEnhancedElement('now-card-header', {\n\tproperties: {\n\t\t/**\n\t\t * An object with properties to configure a tagline for the card:\n\t\t * - `label` - Text context for the tagline.\n\t\t * - `icon` - Icon that appears before the tagline's `label`.\n\t\t * - `variant = 'tertiary'` - Defines the color of the icon and label.\n\t\t * @type {{label: string, icon: string, variant: ('secondary'|'tertiary')}}\n\t\t * @uib.description Label that categorizes the type of content in the card - the value is an object with values for 'label', 'icon', and 'variant'\n\t\t * @uib.defaultValue {\"label\": \"Article\", \"icon\": \"document-outline\"}\n\t\t */\n\t\ttagline: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\ticon: {type: 'string'},\n\t\t\t\t\tvariant: {type: 'string', enum: ['secondary', 'tertiary']},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An object with properties to configure a heading for the card:\n\t\t * - `label` - Text context for the heading.\n\t\t * - `lines = 1` - Number of lines the heading will extend to before truncating.\n\t\t * - `level = 3` - HTML heading element number used to render the heading.\n\t\t * - `size = 'sm'` - Size of the heading.\n\t\t * - `variant = 'primary'` - Visual styling for the heading.\n\t\t * @type {{label: string, lines: (1|2), level: (1|2|3|4|5|6), size: ('sm'|'md'|'lg'), variant: ('primary'|'secondary'|'tertiary')}}\n\t\t * @uib.description Title for the card - the value is an object with values for 'label', number of 'lines' to display, HTML heading 'level', 'size', and 'variant'\n\t\t * @uib.defaultValue {\"label\": \"Configuring wireless security\", \"size\": \"md\"}\n\t\t */\n\t\theading: {\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\tlines: {type: 'number', enum: [1, 2]},\n\t\t\t\t\tlevel: {type: 'number', enum: [1, 2, 3, 4, 5, 6]},\n\t\t\t\t\tsize: {type: 'string', enum: ['sm', 'md', 'lg']},\n\t\t\t\t\tvariant: {type: 'string', enum: ['primary', 'secondary', 'tertiary']},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An object with properties to configure an optional caption for the card:\n\t\t * - `label` - Text content for the caption.\n\t\t * - `lines = 1` - Number of lines the caption will extend to before truncating.\n\t\t * - `size = 'sm'` - Size of the caption.\n\t\t * @type {{label: string, lines: (1|2), size: ('sm'|'md')}}\n\t\t * @uib.description Text that serves as a subheading for the card - the value is an object with values for 'label', number of 'lines' to display, and 'size'\n\t\t * @uib.defaultValue {\"label\": \"4000 Series Router\"}\n\t\t */\n\t\tcaption: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\tlines: {type: 'number', enum: [1, 2]},\n\t\t\t\t\tsize: {type: 'string', enum: ['sm', 'md']},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Array that defines one or more action dropdowns.\n\t\t * Displayed before `actions` in the card header.\n\t\t *\n\t\t * - `id` required - An id for the dropdown used to correctly update `aria-expanded`.\n\t\t * - `label` required - Description of the dropdown used as the tooltip content and `aria-label` of the dropdown.\n\t\t * - `items` required - Array of objects describing each item in the dropdown.\n\t\t * - `disabled` - Set to `true` to disable the dropdown trigger.\n\t\t * - `icon` - Icon that appears in the dropdown trigger.\n\t\t *\n\t\t * See `now-dropdown` documentation for the expected structure of a DropdownItem object.\n\t\t * @type {{id: (string|number), label: string, items: DropdownItem[], disabled: boolean, icon: string}[]}\n\t\t * @uib.description One or more dropdown menus of actions that a user can take on the card\n\t\t * @uib.defaultValue [{\"id\": \"actions\", \"label\": \"Actions\", \"icon\": \"ellipsis-v-outline\", \"items\": [{\"id\": \"open\", \"label\": \"Open\"}]}]\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"label\", \"icon\": \"icon\" }\n\t\t */\n\t\tdropdowns: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tid: {type: ['string', 'number']},\n\t\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\t\titems: itemsSchema,\n\t\t\t\t\t\ticon: {nowUIType: 'icon', type: 'string'},\n\t\t\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\t\t},\n\t\t\t\t\trequired: ['id', 'label', 'items'],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Array of objects that defines the iconic buttons displayed after the\n\t\t * heading and caption. By default, buttons will render from\n\t\t * right to left (for LTR languages). More than three buttons will be rendered in an overflow dropdown.\n\t\t * The label of this overflow dropdown can be configured with the `actionsOverflowLabel` property.\n\t\t *\n\t\t * The keys of each object are properties for both `now-button-iconic` and\n\t\t * `now-dropdown`. See `now-button-iconic` or `now-dropdown` for more\n\t\t * information on using these properties.\n\t\t * - `icon` required - Icon for the action.\n\t\t * - `label` required - Description of the action used for the tooltip content and `aria-label`.\n\t\t * - `disabled` - Set to `true` to mute the button color and disable user click interactions.\n\t\t * - `clickActionType = \"NOW_CARD_HEADER#ACTION_CLICKED\"` - Overrides the default action type dispatched when the user clicks on the action.\n\t\t * @type {{icon: string, label: string, disabled: boolean, clickActionType: string}[]}\n\t\t * @uib.description Actions that a user can take on the card - will display as iconic buttons or collapse into an overflow menu based on number of actions\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"label\", \"icon\": \"icon\" }\n\t\t */\n\t\tactions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\ticon: {nowUIType: 'icon', type: 'string'},\n\t\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\t\tclickActionType: {type: 'string'},\n\t\t\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Label displayed in tooltip on dropdown menu with overflow actions. See `actions` for more information.\n\t\t * @type {string}\n\t\t * @uib.label Actions overflow dropdown label\n\t\t * @uib.defaultValue Card actions\n\t\t * @uib.description Text displayed in tooltip on dropdown menu with overflow actions\n\t\t * @uib.translatable true\n\t\t */\n\t\tactionsOverflowLabel: {schema: {type: 'string'}},\n\t},\n\tview,\n\tstyles,\n\tinitialState: {\n\t\topenDropdowns: {},\n\t\tactionDropdownOpen: false,\n\t},\n\tbehaviors: [{behavior: truncationBehavior}, {behavior: tooltipBehavior}],\n\tactionHandlers: {\n\t\t'NOW_DROPDOWN_CUSTOM_TARGET#ITEM_CLICKED': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action, dispatch, properties}) => {\n\t\t\t\tconst item = action.payload.item[originalItem] || action.payload.item;\n\t\t\t\tconst actionType =\n\t\t\t\t\titem.clickActionType || 'NOW_CARD_HEADER#ACTION_CLICKED';\n\t\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\t\tconst dropdownId = action?.meta?.appended?.dropdownId;\n\t\t\t\tconst {nowId} = properties;\n\t\t\t\tif (nowId === componentId) {\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: actionType,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\tdropdownId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t'NOW_DROPDOWN_CUSTOM_TARGET#OPENED_SET': ({action, updateState}) => {\n\t\t\tif (action.meta?.appended.actionDropdown) {\n\t\t\t\tupdateState({actionDropdownOpen: action.payload.value});\n\t\t\t} else {\n\t\t\t\tupdateState((state) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\topenDropdowns: {\n\t\t\t\t\t\t\t\t...state.openDropdowns,\n\t\t\t\t\t\t\t\t[action?.meta?.appended?.dropdownId]: action.payload.value,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\toperation: 'merge',\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user clicks an action button or selects an\n\t\t * action from the action dropdown.\n\t\t * Payload will include a reference to the clicked action's configuration as\n\t\t * well as the dropdown id, if specified. Action type can be overridden\n\t\t * by setting `action.clickActionType`.\n\t\t *\n\t\t * @type {{action: Object, dropdownId: (string|number)}}\n\t\t * @uib.description Dispatched when the user clicks an action button or selects an action from the action dropdown\n\t\t */\n\t\t'NOW_CARD_HEADER#ACTION_CLICKED': {},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for the identifier at the beginning of the heading and caption.\n\t\t * @uib.size 24px,24px\n\t\t */\n\t\tidentifier: {},\n\t\t/**\n\t\t * Slot for metadata such as a badge, highlighted-value, or string.\n\t\t * Displayed after the heading and before the dropdown and actions.\n\t\t * @uib.size 12px,12px\n\t\t */\n\t\tmetadata: {},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-card-divider.scss';\n\nconst view = ({properties: {fullWidth, blockSpacing}}) => (\n\t<hr\n\t\tclass={{\n\t\t\t'now-card-divider': true,\n\t\t\t['-' + blockSpacing]: blockSpacing,\n\t\t\t'-full-width': fullWidth,\n\t\t}}\n\t/>\n);\n\n/**\n * Renders a divider within now-card content. This subcomponent is a direct descendent of `now-card`.\n *\n * ```jsx\n * <now-card-divider />\n *\n * <now-card-divider full-width block-spacing='md' />\n *\n * <now-card-divider block-spacing='sm' />\n *\n * <now-card-divider full-width />\n * ```\n *\n * @seismicElement now-card-divider\n * @summary Line that divides content within a card component.\n * @uib.label Card Base Divider\n * @uib.icon card-divider\n * @uib.description A card subcomponent for visually separating sections within a card\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties blockSpacing, fullWidth\n */\ncreateEnhancedElement('now-card-divider', {\n\tpresentational: true,\n\tproperties: {\n\t\t/**\n\t\t * Creates a full-width divider in the enclosing now-card component.\n\t\t * @type {boolean}\n\t\t * @uib.description Configures the divider to display edge-to-edge across the full width of the card\n\t\t */\n\t\tfullWidth: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Adds block spacing to the divider.\n\t\t * @type {('sm'|'md'|'lg'|'none')}\n\t\t * @uib.label Padding\n\t\t * @uib.description Size of padding around the divider\n\t\t */\n\t\tblockSpacing: {\n\t\t\tdefault: 'lg',\n\t\t\tschema: {type: 'string', enum: ['sm', 'md', 'lg', 'none']},\n\t\t},\n\t},\n\tview,\n\tstyles,\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\tfilterAriaAttributes,\n\tisFocusable,\n} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-card.scss';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\n\nconst elementIsFocusable = (evt) => {\n\tconst composedPath = evt.composedPath();\n\tconst currentTarget = evt.currentTarget;\n\tfor (let i = 0; i < composedPath.length; i++) {\n\t\tif (composedPath[i] === currentTarget) {\n\t\t\treturn false;\n\t\t}\n\t\tif (isFocusable(composedPath[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {size, interaction, selected, configAria, sidebar, hideShadow} =\n\t\tstate.properties;\n\tconst color = sidebar && sidebar.color;\n\tconst variant = sidebar && sidebar.variant;\n\tconst {pressed} = state;\n\n\tconst onClick = () => {\n\t\t{\n\t\t\tinteraction === 'click'\n\t\t\t\t? dispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_CARD#CLICKED',\n\t\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t\t};\n\t\t\t\t\t})\n\t\t\t\t: dispatch(({properties}) => ({\n\t\t\t\t\t\ttype: 'NOW_CARD#SELECTED_SET',\n\t\t\t\t\t\tpayload: {value: !properties.selected},\n\t\t\t\t\t}));\n\t\t}\n\t};\n\n\tconst slotOnClick = (evt) => {\n\t\tconst fromTrigger = evt\n\t\t\t.composedPath()\n\t\t\t.some((e) => e?.classList?.contains('now-dropdown-custom-target-slot'));\n\t\tif (fromTrigger) {\n\t\t\tevt.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!elementIsFocusable(evt)) {\n\t\t\tevt.currentTarget.previousElementSibling.focus();\n\t\t\tonClick();\n\t\t}\n\t};\n\n\tconst slotOnPress = (evt) => {\n\t\tif (!elementIsFocusable(evt)) {\n\t\t\tupdateState({pressed: true});\n\t\t}\n\t};\n\n\tconst slotOnRelease = (evt) => {\n\t\tif (!elementIsFocusable(evt)) {\n\t\t\tupdateState({pressed: false});\n\t\t}\n\t};\n\n\treturn interaction === 'none' ? (\n\t\t<div\n\t\t\trole=\"group\"\n\t\t\tclass={{\n\t\t\t\t'now-card': true,\n\t\t\t\t'now-card-slot': true,\n\t\t\t\t'now-card-article': true,\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'has-sidebar': sidebar,\n\t\t\t\t['-' + color]: color,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t'hide-shadow': hideShadow,\n\t\t\t}}\n\t\t\t{...filterAriaAttributes(configAria, 'article')}\n\t\t>\n\t\t\t<slot />\n\t\t</div>\n\t) : (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\tnowCardContainer: true,\n\t\t\t\t'now-card-article': true,\n\t\t\t}}\n\t\t\t{...filterAriaAttributes(configAria, 'article')}\n\t\t>\n\t\t\t<button\n\t\t\t\tclass={{\n\t\t\t\t\t'now-card': true,\n\t\t\t\t\t'is-interactive': true,\n\t\t\t\t\t'is-selected': selected,\n\t\t\t\t\t'is-pressed': pressed,\n\t\t\t\t\t'has-sidebar': sidebar,\n\t\t\t\t\t['-' + color]: color,\n\t\t\t\t\t['-' + variant]: variant,\n\t\t\t\t\t'hide-shadow': hideShadow,\n\t\t\t\t}}\n\t\t\t\ttype=\"button\"\n\t\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\t\taria-pressed={\n\t\t\t\t\tinteraction === 'select' ? (selected ? 'true' : 'false') : undefined\n\t\t\t\t}\n\t\t\t\ton-click={onClick}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-card-slot': true,\n\t\t\t\t\t'is-interactive': true,\n\t\t\t\t\t'is-selected': selected,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t}}\n\t\t\t\ton-click={slotOnClick}\n\t\t\t\ton-mousedown={slotOnPress}\n\t\t\t\ton-mouseup={slotOnRelease}\n\t\t\t\ton-mouseleave={slotOnRelease}\n\t\t\t>\n\t\t\t\t<slot />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * A container for specific information in a simple, easily scannable format.\n * Provides a border, card-level interactivity, and a default slot for holding\n * card subcomponents.\n *\n * ```jsx\n * <now-card size=\"lg\" interaction=\"select\">\n *   <now-card-header ... />\n *   <now-card-footer ... />\n * </now-card>\n * ```\n *\n * @seismicElement now-card\n * @summary A container for specific information in a simple, easily scannable format.\n * @uib.label Card Base Container\n * @uib.icon card-container\n * @uib.description A container for specific information in a simple, easily scannable format\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, interaction, hideShadow, selected, manageSelected, sidebar, configAria\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_CARD#CLICKED, NOW_CARD#SELECTED_SET\n */\ncreateEnhancedElement('now-card', {\n\tproperties: {\n\t\t/**\n\t\t * Defines the card's size.\n\t\t * @type {('sm'|'md'|'lg')}}\n\t\t * @uib.label Size\n\t\t * @uib.defaultValue lg\n\t\t * @uib.description Defines the card's size\n\t\t */\n\t\tsize: {default: 'lg', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * `none`: Card has no actionable state.\n\t\t * `click`: Card can be clicked. Fires `NOW_CARD#CLICKED` when clicked.\n\t\t * `select`: Card can be selected. Fires `NOW_CARD#SELECTED_SET` when selected.\n\t\t * @type {('none'|'click'|'select')}\n\t\t * @uib.label Interaction\n\t\t * @uib.description Sets whether the card can be clicked or selected\n\t\t * @uib.defaultValue none\n\t\t */\n\t\tinteraction: {\n\t\t\tdefault: 'none',\n\t\t\tschema: {type: 'string', enum: ['none', 'click', 'select']},\n\t\t},\n\t\t/**\n\t\t * `false`: Card has dropshadow.\n\t\t * `true`: Card has no dropshadow.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Shadow\n\t\t * @uib.description Removes dropshadow of now-card\n\t\t * @uib.defaultValue false\n\t\t */\n\t\thideShadow: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Indicates the selected state of the card. Should only be used with `interaction='select'`.\n\t\t * Maps to `aria-pressed`.\n\t\t * Use `manage-selected` to override the default behavior and handle the\n\t\t * `NOW_CARD#SELECTED_SET` action manually.\n\t\t * @type {boolean}\n\t\t * @uib.label Selected\n\t\t * @uib.description Indicates the selected state of the card - should only be used with interaction value 'select'\n\t\t */\n\t\tselected: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selected` property.\n\t\t * An action with type `NOW_CARD#SELECTED_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected property. Use the selected set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelected: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-card. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-card (if `interaction` type is not `none`). Note: you must provide an\n\t\t * accessible name to this button by setting an `aria-label` or this will result in\n\t\t * an accessibility violation. The 'article' key corresponds to the `<div>` node.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#button for properties and accepted values.\n\t\t * @type {{'button': {'aria-*': string, role: string}, 'article': {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: {...configAriaLabelSchema, required: ['aria-label']},\n\t\t\t\t\t\t\tarticle: configAriaLabelSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Specifies the color of the sidebar that appears along the side of\n\t\t * the card. The value is an object with values for `color` and `variant`.\n\t\t * @type {{color: ('critical'|'high'|'warning'|'moderate'|'positive'|'info'|'low'|'magenta'|'pink'|'orange'|'yellow'|'brown'|'green'|'green-yellow'|'blue'|'gray'|'teal'|'purple'), variant: ('primary'|'secondary'|'tertiary')}}\n\t\t * @uib.label Sidebar\n\t\t * @uib.description Specifies the color of the sidebar that appears along the side of the card - the value is an object with values for 'color' and 'variant'\n\t\t * @uib.defaultValue {}\n\t\t */\n\t\tsidebar: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcolor: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t'critical',\n\t\t\t\t\t\t\t'high',\n\t\t\t\t\t\t\t'warning',\n\t\t\t\t\t\t\t'moderate',\n\t\t\t\t\t\t\t'positive',\n\t\t\t\t\t\t\t'info',\n\t\t\t\t\t\t\t'low',\n\t\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t\t'pink',\n\t\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t\t'green',\n\t\t\t\t\t\t\t'green-yellow',\n\t\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t\t'teal',\n\t\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\tvariant: {type: 'string', enum: ['primary', 'secondary', 'tertiary']},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\tpressed: false,\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t},\n\t],\n\tslots: {\n\t\t/**\n\t\t * `now-card` is a wrapper for the `defaultSlot`.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the card is clicked when `interaction` is set to `click`.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the card is clicked and 'interaction' is set to 'click'\n\t\t */\n\t\t'NOW_CARD#CLICKED': {},\n\t\t/**\n\t\t * Dispatched when the user toggles the selected status of the card when\n\t\t * `interaction` is set to `select`.\n\t\t * Set the `manage-selected` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t * @uib.description Dispatched when the user toggles the selected status of the card and 'interaction' is set to 'select'\n\t\t */\n\t\t'NOW_CARD#SELECTED_SET': {},\n\t},\n});\n","import './now-card-actions';\nimport './now-card-footer';\nimport './now-card-header';\nimport './now-card-divider';\nimport './now-card';\n\nimport * as info from '../package.json';\nconst {name, version} = info;\n\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import \"@servicenow/now-icon\";\nimport \"@servicenow/now-button\";\nimport {\n\tMOUSE_OVERED,\n\tITEM_SELECTED,\n\tSET_REF,\n\tHANDLE_TOOLTIP_ON_TRUNCATED_TEXT,\n\tBEHAVIOR_TRUNCATION_EVALUATE\n} from \"../../actions\";\nimport { LABELS } from \"../../constants\";\nimport { t } from \"sn-translate\";\nimport { values } from \"lodash\";\nimport { KEYCODE } from \"../../../common/constants\";\n\nconst createActions = (actions, term) =>\n\t(actions || []).map(action => {\n\t\tconst { clickActionType, icon } = action;\n\t\treturn (\n\t\t\t<now-button-iconic\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\taction: clickActionType,\n\t\t\t\t\tpayload: { term }\n\t\t\t\t}}\n\t\t\t\tclassName=\"search-popover__item-button\"\n\t\t\t\tsize=\"md\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tbare\n\t\t\t\ticon={icon}\n\t\t\t\ttabindex={-1}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\t\"aria-label\": `${LABELS.CLEAR_RECENT_SEARCH}: ${term}`\n\t\t\t\t}}\n\t\t\t\ttooltip-content={`${LABELS.CLEAR_RECENT_SEARCH}: ${term}`}\n\t\t\t/>\n\t\t);\n\t});\n\nconst view = ({\n\ticon,\n\tisActive,\n\tindex,\n\tdispatch,\n\tbreadCrumbText,\n\tprimaryText,\n\tsuggestionLabel = \"\",\n\tshowActions,\n\titemActions = [],\n\tisGlobal = false,\n\tnotRecentSearch = false,\n\tshowTooltip = false,\n\ttitleRef,\n\tuserHistoryAndClick = false,\n\ttooltipContent = \"\",\n\tisNowAssistEnabled,\n\thref\n}) => {\n\tconst actions = createActions(itemActions, suggestionLabel);\n\n\tconst findSearchPopoverListItem = function(target) {\n\t\t// the mouse click can happen on any inner elements. Hence, this helps identify parent div recursively for dispatch\n\t\tif (\n\t\t\ttarget?.classList?.contains(\"search-popover__item-metadata-global\") ===\n\t\t\tfalse\n\t\t) {\n\t\t\treturn findSearchPopoverListItem(target.parentNode);\n\t\t}\n\t\treturn target;\n\t};\n\n\tconst onItemSelection = evt => {\n\t\tevt.preventDefault();\n\t\tif (href) return;\n\t\tdispatch(HANDLE_TOOLTIP_ON_TRUNCATED_TEXT, {\n\t\t\tshowToolTip: false,\n\t\t\ttarget: findSearchPopoverListItem(evt.target)\n\t\t});\n\t\t// button-bare dispatches its own action\n\t\tif (!evt.target.matches(\"now-button-iconic\")) {\n\t\t\tdispatch(ITEM_SELECTED);\n\t\t}\n\t};\n\n\t// This is to identify search term suggestion from userHistoryAndClick suggestion reader group\n\tconst isUserHistoryAndClickSearchTerm =\n\t\tuserHistoryAndClick && values(breadCrumbText).some(x => x === undefined);\n\n\tconst getBody = () => {\n\t\tif (breadCrumbText && breadCrumbText[0]) {\n\t\t\tif (breadCrumbText[1]) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"search-popover__item--content-container\">\n\t\t\t\t\t\t<p className=\"primary-text-container\" data-truncation>\n\t\t\t\t\t\t\t{primaryText}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"click-breadcrumb\": true,\n\t\t\t\t\t\t\t\t\"search-popover__item--content\": isGlobal\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-label={t(\n\t\t\t\t\t\t\t\t\"Breadcrumb: {0} {1}\",\n\t\t\t\t\t\t\t\tbreadCrumbText[0],\n\t\t\t\t\t\t\t\tbreadCrumbText[1]\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>{breadCrumbText[0]}</span>\n\t\t\t\t\t\t\t<span>{breadCrumbText[1]}</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t<div className=\"search-popover__item--content-container\">\n\t\t\t\t\t<p className=\"primary-text-container\" data-truncation>\n\t\t\t\t\t\t{primaryText}\n\t\t\t\t\t</p>\n\t\t\t\t\t<p\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\"click-breadcrumb\": true,\n\t\t\t\t\t\t\t\"search-popover__item--content\": isGlobal\n\t\t\t\t\t\t}}\n\t\t\t\t\t\taria-label={t(\"Breadcrumb: {0}\", breadCrumbText[0])}\n\t\t\t\t\t>\n\t\t\t\t\t\t{breadCrumbText[0]}\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<p className=\"primary-text-container\" data-truncation>\n\t\t\t\t{primaryText}\n\t\t\t</p>\n\t\t);\n\t};\n\n\tconst getTooltip = () => {\n\t\tif (showTooltip) {\n\t\t\treturn (\n\t\t\t\t<now-tooltip\n\t\t\t\t\tid=\"titleTooltip\"\n\t\t\t\t\ttarget-ref={titleRef}\n\t\t\t\t\tcontent={t(\"Open record related to attachment\")}\n\t\t\t\t\tdelay={500}\n\t\t\t\t\tposition={[\n\t\t\t\t\t\t\"top-center bottom-center\",\n\t\t\t\t\t\t\"bottom-center top-center\",\n\t\t\t\t\t\t\"center-end center-start\",\n\t\t\t\t\t\t\"center-start center-end\",\n\t\t\t\t\t\t\"top-end top-start\",\n\t\t\t\t\t\t\"bottom-end bottom-start\",\n\t\t\t\t\t\t\"top-start top-end\",\n\t\t\t\t\t\t\"bottom-start bottom-end\"\n\t\t\t\t\t]}\n\t\t\t\t\toffset={8}\n\t\t\t\t/>\n\t\t\t);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t};\n\treturn (\n\t\t<li\n\t\t\tclass={{\n\t\t\t\t\"search-popover__item\": true,\n\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\"-is-active-global\": isGlobal && isActive,\n\t\t\t\t\"-search-popover__item--is-active\": isActive && !isGlobal,\n\t\t\t\t\"-na-self-service\": isNowAssistEnabled\n\t\t\t}}\n\t\t\ton-mousedown={onItemSelection}\n\t\t\ton-mouseover={() => {\n\t\t\t\tdispatch(MOUSE_OVERED, { index });\n\t\t\t\tif (isGlobal) dispatch(BEHAVIOR_TRUNCATION_EVALUATE);\n\t\t\t}}\n\t\t\ttabindex={-1}\n\t\t>\n\t\t\t<a\n\t\t\t\thref={href || \"javascript:void(0)\"}\n\t\t\t\tclass={{\n\t\t\t\t\t\"search-popover__item-metadata\": !isGlobal,\n\t\t\t\t\t\"search-popover__item-metadata-global\": isGlobal,\n\t\t\t\t\t\"search-popover__item-metadata-global-stacked-item\":\n\t\t\t\t\t\tnotRecentSearch && isGlobal && !isUserHistoryAndClickSearchTerm\n\t\t\t\t}}\n\t\t\t\ttabindex={-1}\n\t\t\t\t{...(!isGlobal && {\n\t\t\t\t\t\"hook-insert\": ({ elm }) => {\n\t\t\t\t\t\tif (showTooltip) {\n\t\t\t\t\t\t\tdispatch(SET_REF, {\n\t\t\t\t\t\t\t\telm\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"data-tooltip\": suggestionLabel || tooltipContent,\n\t\t\t\t\t\"on-mouseenter\": event => {\n\t\t\t\t\t\tdispatch(HANDLE_TOOLTIP_ON_TRUNCATED_TEXT, {\n\t\t\t\t\t\t\tshowToolTip: true,\n\t\t\t\t\t\t\ttarget: event.target\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t\"on-mouseleave\": event => {\n\t\t\t\t\t\tdispatch(HANDLE_TOOLTIP_ON_TRUNCATED_TEXT, {\n\t\t\t\t\t\t\tshowToolTip: false,\n\t\t\t\t\t\t\ttarget: event.target\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t\"on-focusin\": event => {\n\t\t\t\t\t\tdispatch(HANDLE_TOOLTIP_ON_TRUNCATED_TEXT, {\n\t\t\t\t\t\t\tshowToolTip: true,\n\t\t\t\t\t\t\ttarget: event.target\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t\"on-focusout\": event => {\n\t\t\t\t\t\tdispatch(HANDLE_TOOLTIP_ON_TRUNCATED_TEXT, {\n\t\t\t\t\t\t\tshowToolTip: false,\n\t\t\t\t\t\t\ttarget: event.target\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t\"on-keypress\": event => {\n\t\t\t\t\t\tif (event.code === KEYCODE.ENTER) {\n\t\t\t\t\t\t\tdispatch(HANDLE_TOOLTIP_ON_TRUNCATED_TEXT, {\n\t\t\t\t\t\t\t\tshowToolTip: false,\n\t\t\t\t\t\t\t\ttarget: event.target\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{!isGlobal && getTooltip()}\n\t\t\t\t<now-icon\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"search-popover__item-icon\": true,\n\t\t\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\t\t\"-na-self-service\": isNowAssistEnabled\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"search-popover__item-primary-text\": true,\n\t\t\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\t\t\"-na-self-service\": isNowAssistEnabled\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{getBody()}\n\t\t\t\t</div>\n\t\t\t</a>\n\t\t\t{showActions ? actions : null}\n\t\t</li>\n\t);\n};\n\nexport default view;\n","import Item from \"./PopoverItem\";\n\nconst view = ({\n\tindex,\n\tterm,\n\tdispatch,\n\tisActive,\n\ttooltipContent,\n\tisNowAssistEnabled,\n\tsearchFromChat\n}) => (\n\t<Item\n\t\tisActive={isActive}\n\t\tindex={index}\n\t\ticon={\n\t\t\tisNowAssistEnabled || searchFromChat\n\t\t\t\t? \"arrow-up-right-outline\"\n\t\t\t\t: \"magnifying-glass-outline\"\n\t\t}\n\t\tprimaryText={term}\n\t\tdispatch={dispatch}\n\t\ttooltipContent={tooltipContent}\n\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\tsearchFromChat={searchFromChat}\n\t/>\n);\n\nexport default view;\n","/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */\nconst view = ({\n\tlabel,\n\tisGlobal,\n\tindex,\n\ttotalSectionsToDisplay,\n\tisNowAssistEnabled,\n\tutteranceCount\n}) => {\n\tconst getLabelName = (label, isGlobal) => {\n\t\tif (isGlobal) {\n\t\t\treturn label.toUpperCase();\n\t\t}\n\t\treturn label;\n\t};\n\tconst labelName = getLabelName(label, isGlobal);\n\n\tvar adjustedIndex = utteranceCount ? index - (utteranceCount + 1) : index;\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t\"search-popover__section-header\": true,\n\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\"na-self-service\": isNowAssistEnabled\n\t\t\t}}\n\t\t\trole=\"presentation\"\n\t\t>\n\t\t\t{isGlobal &&\n\t\t\tadjustedIndex !== totalSectionsToDisplay - 1 &&\n\t\t\tadjustedIndex !== 0 ? (\n\t\t\t\t<hr className=\"section-divider-global\" aria-hidden=\"true\" />\n\t\t\t) : null}\n\t\t\t{isGlobal ? (\n\t\t\t\t<strong id={`result-section-header-${index}`}>{labelName}</strong>\n\t\t\t) : (\n\t\t\t\t<span id={`result-section-header-${index}`}>{labelName}</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import Item from \"./PopoverItem\";\nimport highlightMatch from \"../../utils/highlight\";\nimport { CLEAR_SEARCH_SELECTED } from \"../../actions\";\n\nconst view = ({\n\tterm,\n\tname,\n\tindex,\n\tdispatch,\n\tisActive,\n\tshowActions,\n\tisGlobal,\n\ttooltipContent,\n\tisNowAssistEnabled,\n\tsearchFromChat\n}) => {\n\tconst icon = isGlobal\n\t\t? \"change-outline\"\n\t\t: isNowAssistEnabled || searchFromChat\n\t\t? \"clock-outline\"\n\t\t: \"magnifying-glass-outline\";\n\tconst actions = [\n\t\t{\n\t\t\tclickActionType: CLEAR_SEARCH_SELECTED,\n\t\t\ticon: \"circle-close-outline\"\n\t\t}\n\t];\n\tconst primaryText = highlightMatch(term, name);\n\treturn (\n\t\t<Item\n\t\t\tisActive={isActive}\n\t\t\tindex={index}\n\t\t\ticon={icon}\n\t\t\tprimaryText={primaryText}\n\t\t\tsuggestionLabel={name}\n\t\t\titemActions={actions}\n\t\t\tdispatch={dispatch}\n\t\t\tshowActions={showActions}\n\t\t\tisGlobal={isGlobal}\n\t\t\ttooltipContent={tooltipContent}\n\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\tsearchFromChat={searchFromChat}\n\t\t/>\n\t);\n};\n\nexport default view;\n","import Item from \"./PopoverItem\";\nimport highlightMatch from \"../../utils/highlight\";\n\nconst view = ({\n\tterm,\n\tname,\n\tindex,\n\tdispatch,\n\tisActive,\n\tisGlobal,\n\ttooltipContent,\n\tisNowAssistEnabled,\n\tsearchFromChat\n}) => {\n\tconst icon =\n\t\tisNowAssistEnabled || searchFromChat\n\t\t\t? \"clock-outline\"\n\t\t\t: \"magnifying-glass-outline\";\n\n\tconst primaryText = highlightMatch(term, name);\n\treturn (\n\t\t<Item\n\t\t\tisActive={isActive}\n\t\t\tindex={index}\n\t\t\ticon={icon}\n\t\t\tprimaryText={primaryText}\n\t\t\tdispatch={dispatch}\n\t\t\tisGlobal={isGlobal}\n\t\t\ttooltipContent={tooltipContent}\n\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\tsearchFromChat={searchFromChat}\n\t\t/>\n\t);\n};\n\nexport default view;\n","const view = ({ ariaLiveText, ariaBusyState = false }) => (\n\t<span className=\"sr-only\" aria-live=\"polite\" aria-busy={ariaBusyState}>\n\t\t{ariaLiveText}\n\t</span>\n);\n\nexport default view;\n","import Item from \"./PopoverItem\";\nimport highlightMatch, {\n\tsplitHighlighting,\n\tcontainsHighlightTags\n} from \"../../utils/highlight\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport AriaLiveContainer from \"../../view/ariaLiveContainer\";\nimport { SR_LABELS } from \"../../constants\";\n\nconst view = ({\n\tterm,\n\tbreadCrumbText,\n\tisActive,\n\tname,\n\ticon,\n\tindex,\n\tdispatch,\n\titem,\n\tisGlobal,\n\texactMatch = {},\n\tenableExactMatch = false,\n\ttitleRef,\n\tshowTooltip,\n\ttooltipContent,\n\tisNowAssistEnabled,\n\tsearchFromChat,\n\thref\n}) => {\n\tconst actions = [];\n\tconst ariaLiveTextContainer = enableExactMatch ? (\n\t\t<AriaLiveContainer ariaLiveText={SR_LABELS.EXACT_MATCH_FOUND} />\n\t) : null;\n\n\t// apply highlighting for exact match\n\tlet primaryText =\n\t\texactMatch.hasExactMatch && enableExactMatch\n\t\t\t? item.columns[0].displayValue\n\t\t\t: highlightMatch(term, name);\n\n\t// if the response already has highlight tags in it, apply that highlighting\n\tif (containsHighlightTags(name)) {\n\t\tprimaryText = splitHighlighting(name);\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{ariaLiveTextContainer}\n\t\t\t<Item\n\t\t\t\tisActive={isActive}\n\t\t\t\tbreadCrumbText={breadCrumbText}\n\t\t\t\tindex={index}\n\t\t\t\ticon={icon}\n\t\t\t\tprimaryText={primaryText}\n\t\t\t\titemActions={actions}\n\t\t\t\tdispatch={dispatch}\n\t\t\t\titem={item}\n\t\t\t\tisGlobal={isGlobal}\n\t\t\t\tnotRecentSearch\n\t\t\t\ttitleRef={titleRef}\n\t\t\t\tshowTooltip={showTooltip}\n\t\t\t\tuserHistoryAndClick\n\t\t\t\ttooltipContent={tooltipContent}\n\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\thref={href}\n\t\t\t/>\n\t\t</Fragment>\n\t);\n};\n\nexport default view;\n","import \"@servicenow/now-text-link\";\nimport { NOW_TEXT_LINK_CLICKED, MOUSE_OVERED } from \"../../actions\";\nimport { t } from \"sn-translate\";\nconst view = ({ term, dispatch, index }) => {\n\treturn (\n\t\t<li className=\"search-popover__item-view-all\">\n\t\t\t<span>\n\t\t\t\t{index !== 0 ? <hr className=\"section-divider-global\" /> : null}\n\t\t\t</span>\n\t\t\t<span\n\t\t\t\tclassName=\"search-popover__item-text-link\"\n\t\t\t\ton-mouseover={() => {\n\t\t\t\t\tdispatch(MOUSE_OVERED, { index });\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<now-text-link\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tlabel={`${t(\"View all results for\")} \"${term}\"`}\n\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\taction: NOW_TEXT_LINK_CLICKED\n\t\t\t\t\t}}\n\t\t\t\t\ttabindex={-1}\n\t\t\t\t/>\n\t\t\t</span>\n\t\t</li>\n\t);\n};\n\nexport default view;\n","import { t } from \"sn-translate\";\nimport { upperFirst, lowerCase } from \"lodash\";\nimport {\n\tPOPOVER_ITEM_TYPE,\n\tICON_TYPE,\n\tSYS_ATTACHMENT,\n\tATTACHMENT_LABEL\n} from \"../../constants\";\nimport parseNavItem from \"../../utils/parseNavItem\";\n\nimport SearchTerm from \"./SearchTerm\";\nimport SectionHeader from \"./SectionHeader\";\nimport UserHistory from \"./UserHistory\";\nimport InstanceHistory from \"./InstanceHistory\";\nimport Navigation from \"./Navigation\";\nimport PopoverFooter from \"./PopoverFooter\";\n\nconst getIcon = item => {\n\tif (\n\t\titem.type === POPOVER_ITEM_TYPE.FOOTER ||\n\t\titem.type === POPOVER_ITEM_TYPE.SECTION_HEADER\n\t) {\n\t\treturn null;\n\t}\n\tconst imageType = item.columns.find(column => {\n\t\treturn column.fieldName === \"doctype_image\";\n\t});\n\treturn imageType?.displayValue;\n};\n\nconst getHrefFromActionDataCol = item => {\n\tif (!item?.columns || !Array.isArray(item.columns)) return;\n\tconst actionData = item.columns.find(col => col.fieldName === \"action_data\");\n\tif (!actionData) return;\n\ttry {\n\t\tconst parsed = JSON.parse(actionData.value);\n\t\treturn parsed?.href || undefined;\n\t} catch (e) {\n\t\treturn;\n\t}\n};\n\nconst getHrefFromExactMatch = item => {\n\tif (!item?.columns || !Array.isArray(item.columns)) return;\n\tconst recordUrl = item.columns.find(col => col.fieldName === \"record_url\");\n\treturn recordUrl?.value || undefined;\n};\n\nconst getPopoverItem = ({\n\titem,\n\tdispatch,\n\tisActive,\n\tterm,\n\tindex,\n\tisGlobal,\n\ttotalSectionsToDisplay,\n\texactMatch,\n\tenableExactMatch,\n\ttitleRef,\n\tisNowAssistEnabled,\n\tsearchFromChat,\n\tutteranceCount,\n\thref,\n\tdisableHref\n}) => {\n\tconst itemFooter = item.type === POPOVER_ITEM_TYPE.FOOTER;\n\tlet itemText;\n\tlet breadCrumbText;\n\tlet icon;\n\tlet tableName;\n\tlet number;\n\tlet showTooltip;\n\tif (!itemFooter) {\n\t\titemText = item.columns[0].displayValue;\n\t\tconst numberField = item.columns.find(column => {\n\t\t\treturn column.fieldName === \"number\";\n\t\t});\n\t\tnumber = numberField ? numberField.displayValue : undefined;\n\t\tconst tableNameField = item.columns.find(column => {\n\t\t\treturn column.fieldName === \"source_table_name\";\n\t\t});\n\t\tconst documentType = item.columns.find(column => {\n\t\t\treturn column.fieldName === \"document_type_id\";\n\t\t});\n\t\ttableName = tableNameField ? tableNameField.displayValue : undefined;\n\t\tif (\n\t\t\titem.type != POPOVER_ITEM_TYPE.USER_HISTORY &&\n\t\t\titem.type != POPOVER_ITEM_TYPE.SECTION_HEADER\n\t\t) {\n\t\t\tconst sourceTable = parseNavItem(item).table;\n\t\t\tconst iconFromSuggestionData = getIcon(item);\n\t\t\tconst iconType = iconFromSuggestionData\n\t\t\t\t? iconFromSuggestionData\n\t\t\t\t: ICON_TYPE.get(sourceTable)\n\t\t\t\t? ICON_TYPE.get(sourceTable)\n\t\t\t\t: \"change-outline\";\n\n\t\t\tconst defaultIconType = iconFromSuggestionData\n\t\t\t\t? iconFromSuggestionData\n\t\t\t\t: sourceTable === \"sc_cat_item\"\n\t\t\t\t? \"clipboard-outline\"\n\t\t\t\t: \"document-outline\";\n\n\t\t\ticon = isGlobal ? iconType : defaultIconType;\n\n\t\t\tif (sourceTable === SYS_ATTACHMENT) {\n\t\t\t\tshowTooltip = true;\n\t\t\t\ttableName = documentType\n\t\t\t\t\t? upperFirst(lowerCase(documentType.displayValue))\n\t\t\t\t\t: tableName;\n\t\t\t\ttableName =\n\t\t\t\t\ttableName === ATTACHMENT_LABEL ? t(ATTACHMENT_LABEL) : tableName;\n\t\t\t\tnumber = number ? t(\"From: {0}\", number) : undefined;\n\t\t\t}\n\t\t\tbreadCrumbText = [tableName, number];\n\t\t}\n\t}\n\tconst getTooltipContent = () => {\n\t\t// concatenate primary text with breadcrumb texts for tooltip on trcuncated texts\n\t\tconst breadCrumbTextContent = breadCrumbText\n\t\t\t? breadCrumbText.join(\" \")\n\t\t\t: \"\";\n\t\tconst primaryTextContent = new DOMParser().parseFromString(\n\t\t\titemText,\n\t\t\t\"text/html\"\n\t\t).documentElement.textContent;\n\t\treturn primaryTextContent.concat(\" \", breadCrumbTextContent);\n\t};\n\n\tswitch (item.type) {\n\t\tcase POPOVER_ITEM_TYPE.USER_SEARCH_TERM:\n\t\t\treturn (\n\t\t\t\t<SearchTerm\n\t\t\t\t\tisActive={isActive}\n\t\t\t\t\tindex={index}\n\t\t\t\t\tname={itemText}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\tterm={term}\n\t\t\t\t\ttooltipContent={getTooltipContent()}\n\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\t/>\n\t\t\t);\n\n\t\tcase POPOVER_ITEM_TYPE.SECTION_HEADER:\n\t\t\treturn (\n\t\t\t\t<SectionHeader\n\t\t\t\t\tlabel={itemText}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\tindex={index}\n\t\t\t\t\ttotalSectionsToDisplay={totalSectionsToDisplay}\n\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\tutteranceCount={utteranceCount}\n\t\t\t\t/>\n\t\t\t);\n\n\t\tcase POPOVER_ITEM_TYPE.POPULAR_QUERY:\n\t\t\treturn (\n\t\t\t\t<InstanceHistory\n\t\t\t\t\tisActive={isActive}\n\t\t\t\t\tindex={index}\n\t\t\t\t\tname={itemText}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\tterm={term}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\ttooltipContent={getTooltipContent()}\n\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase POPOVER_ITEM_TYPE.USER_HISTORY:\n\t\t\treturn (\n\t\t\t\t<UserHistory\n\t\t\t\t\tisActive={isActive}\n\t\t\t\t\tindex={index}\n\t\t\t\t\tname={itemText}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\tterm={term}\n\t\t\t\t\tshowActions={!term}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\ttooltipContent={getTooltipContent()}\n\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase POPOVER_ITEM_TYPE.PERSONAL_CLICK:\n\t\t\treturn (\n\t\t\t\t<Navigation\n\t\t\t\t\tisActive={isActive}\n\t\t\t\t\tbreadCrumbText={breadCrumbText}\n\t\t\t\t\tindex={index}\n\t\t\t\t\tname={itemText}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tterm={term}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\titem={item}\n\t\t\t\t\ttooltipContent={getTooltipContent()}\n\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\t\thref={disableHref ? undefined : getHrefFromActionDataCol(item)}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase POPOVER_ITEM_TYPE.EXACT_MATCH:\n\t\t\treturn (\n\t\t\t\t<Navigation\n\t\t\t\t\tisActive={isActive}\n\t\t\t\t\tbreadCrumbText={breadCrumbText}\n\t\t\t\t\tindex={index}\n\t\t\t\t\tname={itemText}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tterm={term}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\titem={item}\n\t\t\t\t\texactMatch={exactMatch}\n\t\t\t\t\tenableExactMatch={enableExactMatch}\n\t\t\t\t\ttooltipContent={getTooltipContent()}\n\t\t\t\t\thref={disableHref ? undefined : getHrefFromExactMatch(item)}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase POPOVER_ITEM_TYPE.QUERY_CONTENT:\n\t\t\treturn (\n\t\t\t\t<Navigation\n\t\t\t\t\tisActive={isActive}\n\t\t\t\t\tbreadCrumbText={breadCrumbText}\n\t\t\t\t\tindex={index}\n\t\t\t\t\tname={itemText}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tterm={term}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\titem={item}\n\t\t\t\t\ttitleRef={titleRef}\n\t\t\t\t\tshowTooltip={showTooltip}\n\t\t\t\t\ttooltipContent={getTooltipContent()}\n\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\t\thref={href}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase POPOVER_ITEM_TYPE.USER_HISTORY_AND_CLICK:\n\t\t\treturn (\n\t\t\t\t<Navigation\n\t\t\t\t\tisActive={isActive}\n\t\t\t\t\tbreadCrumbText={breadCrumbText}\n\t\t\t\t\tindex={index}\n\t\t\t\t\tname={itemText}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tterm={term}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\titem={item}\n\t\t\t\t\ttooltipContent={getTooltipContent()}\n\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\t\thref={disableHref ? undefined : getHrefFromActionDataCol(item)}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase POPOVER_ITEM_TYPE.FOOTER:\n\t\t\tif (isGlobal) {\n\t\t\t\treturn (\n\t\t\t\t\t<ul role=\"presentation\">\n\t\t\t\t\t\t<PopoverFooter\n\t\t\t\t\t\t\tterm={term}\n\t\t\t\t\t\t\tisActive={isActive}\n\t\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ul>\n\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn \"\";\n\t}\n};\n\nexport default getPopoverItem;\n","import { POPOVER_ITEM_TYPE, ASK_OTTO, SR_LABELS } from \"../constants\";\nimport { cloneDeep, filter } from \"lodash\";\nimport { t } from \"sn-translate\";\n\n// group items based on section headers for display purposes\nexport const getGroupedItems = items => {\n\tlet sectionHeaderIndex;\n\tconst itemsClone = cloneDeep(items);\n\treturn itemsClone\n\t\t.map((item, index) => {\n\t\t\t// retain original index while grouping\n\t\t\titem.itemIndex = index;\n\t\t\tif (item.type == POPOVER_ITEM_TYPE.SECTION_HEADER) {\n\t\t\t\tsectionHeaderIndex = index;\n\t\t\t\titemsClone[sectionHeaderIndex].listItems = [\n\t\t\t\t\titemsClone[sectionHeaderIndex]\n\t\t\t\t];\n\t\t\t} else if (item.type == POPOVER_ITEM_TYPE.FOOTER) {\n\t\t\t\titem.listItems = [item];\n\t\t\t} else if (item.type == POPOVER_ITEM_TYPE.USER_HISTORY) {\n\t\t\t\tif (sectionHeaderIndex !== undefined) {\n\t\t\t\t\titemsClone[sectionHeaderIndex]?.listItems.push(item);\n\t\t\t\t\titemsClone[sectionHeaderIndex].suggestionType = item.type;\n\t\t\t\t} else {\n\t\t\t\t\titem.listItems = [item];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (sectionHeaderIndex !== undefined) {\n\t\t\t\t\titemsClone[sectionHeaderIndex]?.listItems.push(item);\n\t\t\t\t\titemsClone[sectionHeaderIndex].suggestionType = item.type;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn item;\n\t\t})\n\t\t.filter(\n\t\t\titem =>\n\t\t\t\titem.type === POPOVER_ITEM_TYPE.SECTION_HEADER ||\n\t\t\t\titem.type === POPOVER_ITEM_TYPE.FOOTER ||\n\t\t\t\t(item.type === POPOVER_ITEM_TYPE.USER_HISTORY &&\n\t\t\t\t\titem.listItems !== undefined)\n\t\t);\n};\n\nexport const getUtterances = items => {\n\tconst utterances = {\n\t\tsectionHeader: t(ASK_OTTO),\n\t\tutterances: []\n\t};\n\tlet sectionHeader = undefined;\n\tlet utteranceStart = undefined;\n\tlet utteranceEnd = undefined;\n\titems.forEach((item, index) => {\n\t\tif (\n\t\t\titem.type === POPOVER_ITEM_TYPE.SECTION_HEADER &&\n\t\t\tutterances.utterances.length === 0\n\t\t) {\n\t\t\tsectionHeader = item?.columns[0]?.displayValue;\n\t\t}\n\t\tif (item.type === POPOVER_ITEM_TYPE.NOW_ASSIST_SUGGESTED_UTTERANCE) {\n\t\t\t// Collect Utterance indexes for pruning\n\t\t\tutterances.utterances.push(item);\n\t\t\tif (utteranceStart === undefined) utteranceStart = index - 1;\n\t\t\tutteranceEnd = index + 1;\n\t\t}\n\t});\n\tif (sectionHeader !== undefined) utterances.sectionHeader = sectionHeader;\n\n\t// Return a pruned version of items without utterances\n\tvar prunedItems = items.slice();\n\tif (utteranceStart !== undefined && utteranceEnd !== undefined) {\n\t\tprunedItems.splice(utteranceStart, utteranceEnd);\n\t}\n\n\treturn [utterances, prunedItems];\n};\n\nexport const getResultsCount = items => {\n\treturn filter(\n\t\titems,\n\t\titem =>\n\t\t\titem.type !== POPOVER_ITEM_TYPE.SECTION_HEADER &&\n\t\t\titem.type !== POPOVER_ITEM_TYPE.FOOTER\n\t).length;\n};\n\nexport const getGroupCount = items => {\n\treturn filter(items, item => item.type === POPOVER_ITEM_TYPE.SECTION_HEADER)\n\t\t.length;\n};\n\nexport const constructAriaLiveText = items => {\n\tconst groupCount = getGroupCount(items);\n\tconst resultCount = getResultsCount(items);\n\t// Count results per group\n\tconst groupDetails = [];\n\tlet currentGroup = null;\n\tlet currentGroupCount = 0;\n\titems.forEach(item => {\n\t\tif (item.type === POPOVER_ITEM_TYPE.SECTION_HEADER) {\n\t\t\t// Save previous group if exists\n\t\t\tif (currentGroup) {\n\t\t\t\tgroupDetails.push({\n\t\t\t\t\tname: currentGroup,\n\t\t\t\t\tcount: currentGroupCount\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Start new group\n\t\t\tcurrentGroup = item.columns?.[0]?.displayValue;\n\t\t\tcurrentGroupCount = 0;\n\t\t} else if (item.type !== POPOVER_ITEM_TYPE.FOOTER) {\n\t\t\t// Count items that are not section headers or footers\n\t\t\tif (currentGroup) {\n\t\t\t\tcurrentGroupCount++;\n\t\t\t}\n\t\t}\n\t});\n\t// Save the last group\n\tif (currentGroup) {\n\t\tgroupDetails.push({\n\t\t\tname: currentGroup,\n\t\t\tcount: currentGroupCount\n\t\t});\n\t}\n\tconst resultLabel =\n\t\tresultCount === 1\n\t\t\t? t(\"showing {0} result\", resultCount)\n\t\t\t: t(\"showing {0} results\", resultCount);\n\t// Build the announcement based on group count\n\tlet announcement;\n\tif (groupDetails.length === 1) {\n\t\t// Single group: \"showing X results in [Group Name]\"\n\t\tannouncement = `${resultLabel} in ${groupDetails[0].name}`;\n\t} else if (groupDetails.length > 1) {\n\t\t// Multiple groups: \"showing X results: A in [Name1], B in [Name2]\"\n\t\tconst groupAnnouncements = groupDetails\n\t\t\t.map(group => `${group.count} in ${group.name}`)\n\t\t\t.join(\", \");\n\t\tannouncement = `${resultLabel}: ${groupAnnouncements}`;\n\t} else {\n\t\t// Fallback if no groups found\n\t\tconst groupLabel = groupCount === 1 ? \"group\" : \"groups\";\n\t\tannouncement = `${resultLabel} in ${groupCount} ${groupLabel}`;\n\t}\n\t// Add navigation instructions for accessibility\n\treturn `${announcement}. ${SR_LABELS.NAVIGATION_INSTRUCTIONS}`;\n};\n","import { utteranceSelectEffect } from \"../../../common/effects/inputEffects\";\nimport { upperFirst } from \"lodash\";\nimport { t } from \"sn-translate\";\nimport {\n\tsplitHighlighting,\n\tcontainsHighlightTags,\n\tstripHighlightTags,\n\tupperFirstHighlighting\n} from \"../../utils/highlight\";\n/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */\nconst view = ({\n\tdispatch,\n\tupdateState,\n\tutterances,\n\tsectionHeader,\n\tutterancePlacement,\n\tisGlobal\n}) => {\n\tvar utteranceDisplayValues = [];\n\n\tutterances.forEach(utterance => {\n\t\tif (utterance?.columns?.length !== 1) return;\n\t\tconst displayValue = upperFirstHighlighting(\n\t\t\tutterance.columns[0].displayValue\n\t\t);\n\n\t\tif (containsHighlightTags(displayValue)) {\n\t\t\tutteranceDisplayValues.push({\n\t\t\t\toriginal: upperFirst(stripHighlightTags(displayValue)),\n\t\t\t\tprocessedValue: splitHighlighting(displayValue)\n\t\t\t});\n\t\t} else {\n\t\t\tutteranceDisplayValues.push({\n\t\t\t\toriginal: upperFirst(displayValue),\n\t\t\t\tprocessedValue: displayValue\n\t\t\t});\n\t\t}\n\t});\n\tif (utteranceDisplayValues.length <= 0) return;\n\n\tconst placementClass =\n\t\tutterancePlacement && utterancePlacement.includes(\"header\")\n\t\t\t? \"header-placement\"\n\t\t\t: \"body-placement\";\n\n\treturn (\n\t\t<ul\n\t\t\tclassName={\n\t\t\t\tisGlobal\n\t\t\t\t\t? `search-popover__utterance-container ${placementClass} -global`\n\t\t\t\t\t: `search-popover__utterance-container ${placementClass}`\n\t\t\t}\n\t\t\trole=\"menu\"\n\t\t>\n\t\t\t<li className=\"search-popover__utterance-container-label\">\n\t\t\t\t<now-icon icon=\"ai-sparkle-outline\" size=\"md\" />\n\t\t\t\t<span>{sectionHeader}</span>\n\t\t\t</li>\n\t\t\t<ul\n\t\t\t\tclassName={`search-popover__utterance-list ${placementClass}`}\n\t\t\t\trole=\"menuitem\"\n\t\t\t>\n\t\t\t\t{utteranceDisplayValues.map(utterance => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tclassName=\"search-popover__item-utterance\"\n\t\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\ton-click={e => {\n\t\t\t\t\t\t\t\tconst host = e.target.getRootNode().host;\n\t\t\t\t\t\t\t\tutteranceSelectEffect(\n\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t\tutterance.original,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\thost\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}} // enter key is handled within enterKeyHandler\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"search-popover__item-metadata\">\n\t\t\t\t\t\t\t\t<now-icon\n\t\t\t\t\t\t\t\t\ticon=\"chat-outline\"\n\t\t\t\t\t\t\t\t\tsize={placementClass === \"header-placement\" ? \"sm\" : \"md\"}\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\taria-label={t(\n\t\t\t\t\t\t\t\t\t\t\"ask ServiceNow Otto about {0}\",\n\t\t\t\t\t\t\t\t\t\tutterance.original\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tclassName=\"search-popover__item-metadata-label\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{utterance.processedValue}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t</ul>\n\t);\n};\n\nexport default view;\n","import \"@servicenow/now-icon\";\nimport { isEmpty } from \"lodash\";\nimport \"@servicenow/now-template-message\";\nimport \"@servicenow/now-loader\";\nimport \"@servicenow/now-popover\";\nimport \"@servicenow/now-card\";\nimport \"./sn-search-onboarding-popover\";\nimport { t } from \"sn-translate\";\nimport getPopoverItem from \"./PopoverItems\";\nimport AriaLiveContainer from \"../view/ariaLiveContainer\";\nimport { LABELS, POPOVER_ITEM_TYPE, PLACEMENT } from \"../constants\";\nimport { getGroupedItems, getUtterances } from \"../utils/resultItemsUtil\";\nimport Utterances from \"./PopoverItems/Utterances\";\n\nconst view = ({\n\tactiveRowIndex,\n\tdata,\n\tterm,\n\tdispatch,\n\tisGlobal,\n\tshowEmptyState,\n\tloadingState,\n\tenableExactMatch,\n\texactMatch,\n\tnowId,\n\ttitleRef,\n\tcontextDropdownOpened,\n\tisInputActive,\n\tariaLiveText,\n\tariaLiveBusy,\n\tisNowAssistEnabled,\n\tsearchFromChat,\n\tutterancePlacement,\n\tupdateState,\n\tdisplayOnboardingPopover,\n\tfetchingOnboardingPref,\n\tshowOnboardingPopover,\n\taiAssistant,\n\tplacement,\n\tdisableHref\n}) => {\n\tconst isTyping = term.length > 0;\n\tif (showEmptyState && !loadingState) {\n\t\treturn (\n\t\t\t<ul\n\t\t\t\tclass={{\n\t\t\t\t\t\"search-popover\": true,\n\t\t\t\t\t\"-global\": isGlobal\n\t\t\t\t}}\n\t\t\t\trole=\"status\"\n\t\t\t\tid={`${nowId}-search-popover`}\n\t\t\t>\n\t\t\t\t<AriaLiveContainer\n\t\t\t\t\tariaLiveText={ariaLiveText}\n\t\t\t\t\tariaBusyState={ariaLiveBusy || !ariaLiveText.length}\n\t\t\t\t/>\n\t\t\t\t<now-template-message-empty-state\n\t\t\t\t\tid={`${nowId}-search-information`}\n\t\t\t\t\talignment=\"horizontal\"\n\t\t\t\t\tillustration=\"first-time-user\"\n\t\t\t\t\theading={{\n\t\t\t\t\t\tlabel: t(\"Search is now even smarter\"),\n\t\t\t\t\t\tlevel: \"1\"\n\t\t\t\t\t}}\n\t\t\t\t\tcontent={t(\"Find knowledge, records, people and more. Try it now!\")}\n\t\t\t\t/>\n\t\t\t</ul>\n\t\t);\n\t}\n\tif (!showEmptyState && loadingState) {\n\t\treturn (\n\t\t\t<ul\n\t\t\t\tclass={{\n\t\t\t\t\t\"search-popover\": true,\n\t\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\t\"na-self-service\": isNowAssistEnabled\n\t\t\t\t}}\n\t\t\t\trole=\"status\"\n\t\t\t\tid={`${nowId}-search-popover`}\n\t\t\t>\n\t\t\t\t<AriaLiveContainer\n\t\t\t\t\tariaLiveText={ariaLiveText}\n\t\t\t\t\tariaBusyState={ariaLiveBusy || !ariaLiveText.length || loadingState}\n\t\t\t\t/>\n\t\t\t\t<now-loader label={LABELS.LOADING_LABEL} size=\"lg\" />\n\t\t\t</ul>\n\t\t);\n\t}\n\n\tif (contextDropdownOpened || !isInputActive) {\n\t\treturn null;\n\t}\n\n\tif (!isGlobal && !isTyping && (!data || data.length === 0)) {\n\t\treturn null;\n\t}\n\n\tconst items =\n\t\tenableExactMatch && !isEmpty(exactMatch.exactMatchData)\n\t\t\t? exactMatch.exactMatchData\n\t\t\t: data;\n\tvar totalSectionsToDisplay = isGlobal && items ? items.length : 0;\n\n\tconst utterances = getUtterances(items)[0];\n\tconst utteranceCount = utterances?.utterances\n\t\t? utterances.utterances.length\n\t\t: 0;\n\n\t// group items based on section headers for display purposes\n\tconst groupedItems = getGroupedItems(items).filter(\n\t\titem =>\n\t\t\titem.suggestionType !== POPOVER_ITEM_TYPE.NOW_ASSIST_SUGGESTED_UTTERANCE\n\t);\n\n\tconst utterancesComponent = (\n\t\t<Utterances\n\t\t\tdispatch={dispatch}\n\t\t\tupdateState={updateState}\n\t\t\tutterances={utterances.utterances}\n\t\t\tsectionHeader={utterances.sectionHeader}\n\t\t\tutterancePlacement={utterancePlacement}\n\t\t\tisGlobal={isGlobal}\n\t\t/>\n\t);\n\n\tconst utterancePopover = (addTrigger = false) => (\n\t\t<now-card\n\t\t\t{...(addTrigger && { slot: \"trigger\" })}\n\t\t\tsize=\"xs\"\n\t\t\tinteraction=\"none\"\n\t\t\tclassName=\"utterance_popover_trigger_no_border\"\n\t\t\thideShadow\n\t\t>\n\t\t\t{utterancesComponent}\n\t\t</now-card>\n\t);\n\n\tconst onboardingPopoverContent = (\n\t\t<now-popover\n\t\t\topened={showOnboardingPopover}\n\t\t\tinteractionType=\"none\"\n\t\t\tpositions={[\n\t\t\t\t{ target: \"center-start\", content: \"center-end\" },\n\t\t\t\t{ target: \"center-start\", content: \"center-end\" }\n\t\t\t]}\n\t\t>\n\t\t\t{utterancePopover(showOnboardingPopover)}\n\t\t\t<now-card slot=\"content\" size=\"xs\" interaction=\"none\" hideShadow>\n\t\t\t\t<sn-search-onboarding-popover aiAssistant={aiAssistant} />\n\t\t\t</now-card>\n\t\t</now-popover>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t\"search-popover\": true,\n\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\"na-self-service\": isNowAssistEnabled\n\t\t\t}}\n\t\t\tid={`${nowId}-search-popover`}\n\t\t>\n\t\t\t<AriaLiveContainer\n\t\t\t\tariaLiveText={ariaLiveText}\n\t\t\t\tariaBusyState={ariaLiveBusy || !ariaLiveText.length || loadingState}\n\t\t\t/>\n\t\t\t{/* when utterances show, we display onboarding popover else we display utterances */}\n\t\t\t{utteranceCount > 0 &&\n\t\t\tdisplayOnboardingPopover &&\n\t\t\tshowOnboardingPopover &&\n\t\t\t!fetchingOnboardingPref &&\n\t\t\tplacement !== PLACEMENT.DYNAMIC_LANDING_HEADER\n\t\t\t\t? onboardingPopoverContent\n\t\t\t\t: utteranceCount > 0\n\t\t\t\t? utterancesComponent\n\t\t\t\t: null}\n\t\t\t{groupedItems.map(group => {\n\t\t\t\tif (group.suggestionType === POPOVER_ITEM_TYPE.RAG_POPULAR_QUERY) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Separate section header from actual list items\n\t\t\t\tconst sectionHeader = group.listItems[0];\n\t\t\t\tconst actualListItems = group.listItems.slice(1);\n\n\t\t\t\treturn (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{/* Render section header outside the list */}\n\t\t\t\t\t\t{getPopoverItem({\n\t\t\t\t\t\t\titem: sectionHeader,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tisActive: false,\n\t\t\t\t\t\t\tterm,\n\t\t\t\t\t\t\tindex: sectionHeader.itemIndex,\n\t\t\t\t\t\t\tisGlobal,\n\t\t\t\t\t\t\ttotalSectionsToDisplay,\n\t\t\t\t\t\t\texactMatch,\n\t\t\t\t\t\t\tenableExactMatch,\n\t\t\t\t\t\t\ttitleRef,\n\t\t\t\t\t\t\tisNowAssistEnabled,\n\t\t\t\t\t\t\tsearchFromChat,\n\t\t\t\t\t\t\tutteranceCount\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{/* Render actual list items inside ul */}\n\t\t\t\t\t\t<ul aria-labelledby={`result-section-header-${group.itemIndex}`}>\n\t\t\t\t\t\t\t{actualListItems.map(item => {\n\t\t\t\t\t\t\t\tconst isActive = item.itemIndex === activeRowIndex;\n\t\t\t\t\t\t\t\tconst index = item.itemIndex;\n\t\t\t\t\t\t\t\tconst href = item?.columns?.find(\n\t\t\t\t\t\t\t\t\tcolumn => column?.fieldName === \"url\"\n\t\t\t\t\t\t\t\t)?.value;\n\t\t\t\t\t\t\t\treturn getPopoverItem({\n\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\tisActive,\n\t\t\t\t\t\t\t\t\tterm,\n\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\tisGlobal,\n\t\t\t\t\t\t\t\t\ttotalSectionsToDisplay,\n\t\t\t\t\t\t\t\t\texactMatch,\n\t\t\t\t\t\t\t\t\tenableExactMatch,\n\t\t\t\t\t\t\t\t\ttitleRef,\n\t\t\t\t\t\t\t\t\tisNowAssistEnabled,\n\t\t\t\t\t\t\t\t\tsearchFromChat,\n\t\t\t\t\t\t\t\t\tutteranceCount,\n\t\t\t\t\t\t\t\t\thref: disableHref ? undefined : href,\n\t\t\t\t\t\t\t\t\tdisableHref\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import \"@servicenow/now-button\";\n\nimport { SHOW_SEARCH_PANEL } from \"../../common/actions/index\";\nimport { KEYCODE, LABELS } from \"../../common/constants\";\n\nconst view = ({ dispatch, isGlobal }) => {\n\tconst nowButtonIconicSearch = (\n\t\t<now-button-iconic\n\t\t\tbare\n\t\t\ttype=\"button\"\n\t\t\ticon=\"magnifying-glass-fill\"\n\t\t\tsize=\"md\"\n\t\t\tvariant=\"tertiary\"\n\t\t\ton-click={() => dispatch(SHOW_SEARCH_PANEL)}\n\t\t\ton-keydown={evt => {\n\t\t\t\tif (evt.code === KEYCODE.ENTER || evt.code === KEYCODE.SPACE) {\n\t\t\t\t\tdispatch(SHOW_SEARCH_PANEL);\n\t\t\t\t}\n\t\t\t}}\n\t\t/>\n\t);\n\n\tconst nowIconSearch = (\n\t\t<span\n\t\t\trole=\"button\"\n\t\t\ton-click={() => dispatch(SHOW_SEARCH_PANEL)}\n\t\t\ttabindex=\"0\"\n\t\t\taria-label={LABELS.SHOW_SEARCH_PANEL}\n\t\t\tclassName=\"search-icon-container\"\n\t\t\ton-keydown={evt => {\n\t\t\t\tif (evt.code === KEYCODE.ENTER || evt.code === KEYCODE.SPACE) {\n\t\t\t\t\tdispatch(SHOW_SEARCH_PANEL);\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<now-icon icon=\"magnifyingGlassOutline\" size=\"md\" />\n\t\t</span>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={\n\t\t\t\tisGlobal\n\t\t\t\t\t? \"global-search-icon-mobile\"\n\t\t\t\t\t: \"mobile-search-init mobile-search-init--header-view\"\n\t\t\t}\n\t\t>\n\t\t\t{isGlobal ? nowIconSearch : nowButtonIconicSearch}\n\t\t</div>\n\t);\n};\nexport default view;\n","import \"@servicenow/now-button\";\nimport Input from \"../../common/view/Input\";\nimport Popover from \"../../common/view/Popover\";\nimport MobileStartViewInHeader from \"../../sn-search-combobox-mobile/view/MobileStartViewInHeader\";\nimport { WINDOW_SIZE, PLACEMENT } from \"../../common/constants\";\nimport { isEmpty } from \"lodash\";\n/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */\nconst view = (state, { updateState, dispatch }) => {\n\tconst {\n\t\tshowPopover,\n\t\tterm,\n\t\tactiveRowIndex,\n\t\tdata,\n\t\tinputHasFocus,\n\t\tcontextDropdownOpened,\n\t\tfetching,\n\t\tisInputActive,\n\t\texactMatch,\n\t\tsearchPanelOpened,\n\t\tsuggestionTypeFooter,\n\t\ttitleRef,\n\t\tinputRef,\n\t\tariaLiveText,\n\t\tariaLiveBusy,\n\t\tshowOnboardingPopover,\n\t\tfetchingOnboardingPref,\n\t\tsettingOnboardingPref,\n\t\tproperties: {\n\t\t\tplaceholder,\n\t\t\tnowAssistPlaceholder,\n\t\t\tplacement,\n\t\t\tnowId,\n\t\t\tsearchContexts,\n\t\t\tselectedSearchContext,\n\t\t\tisGlobal,\n\t\t\twindowSize,\n\t\t\tcanAnimate,\n\t\t\tenableExactMatch,\n\t\t\texactMatchRegex,\n\t\t\tisNowAssistEnabled,\n\t\t\taiAssistant,\n\t\t\tsearchFromChat,\n\t\t\tutterancePlacement,\n\t\t\tdisplayOnboardingPopover,\n\t\t\tonboardingDismissed,\n\t\t\tshowUtterances,\n\t\t\tenableMultiLineInput,\n\t\t\tisFullPageEnabled,\n\t\t\tdisableHref\n\t\t}\n\t} = state;\n\n\tconst collapsedView =\n\t\twindowSize === WINDOW_SIZE.COLLAPSED &&\n\t\tisGlobal &&\n\t\tplacement === PLACEMENT.HEADER;\n\tconst hasSuggestions = data && data.length > 0;\n\n\t/*\n\tThe state of fetching is set to false once the suggestion fetch i.e data is completed.\n\tRefer suggestionEffects.js\n\t*/\n\tconst showEmptyState =\n\t\tisGlobal && !fetching && !term.length > 0 ? !hasSuggestions : false;\n\n\tlet enablePopover = isGlobal\n\t\t? showPopover\n\t\t: showPopover &&\n\t\t  (hasSuggestions || (exactMatch && !isEmpty(exactMatch.exactMatchData)));\n\tif (placement === PLACEMENT.FULLPAGE_BODY) enablePopover = false; // no popover for fullpage experience\n\tconst loadingState = isGlobal && enablePopover && fetching;\n\n\t// Switches view according to the window size\n\tif (collapsedView && !searchPanelOpened) {\n\t\treturn (\n\t\t\t<div role=\"search\">\n\t\t\t\t<MobileStartViewInHeader dispatch={dispatch} isGlobal={isGlobal} />\n\t\t\t</div>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<div role=\"search\" aria-label=\"Global\">\n\t\t\t\t<div\n\t\t\t\t\tclassName={`search-combobox search-combobox--${placement} search-combobox--desktop`}\n\t\t\t\t>\n\t\t\t\t\t<Input\n\t\t\t\t\t\thasFocus={inputHasFocus}\n\t\t\t\t\t\tshowPopover={enablePopover}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tnowAssistPlaceholder={nowAssistPlaceholder}\n\t\t\t\t\t\tterm={term}\n\t\t\t\t\t\thasSuggestions={hasSuggestions}\n\t\t\t\t\t\tplacement={placement}\n\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\tnowId={nowId}\n\t\t\t\t\t\tsearchContexts={searchContexts}\n\t\t\t\t\t\tselectedSearchContext={selectedSearchContext}\n\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\tcontextDropdownOpened={contextDropdownOpened}\n\t\t\t\t\t\twindowSize={windowSize}\n\t\t\t\t\t\tisInputActive={isInputActive}\n\t\t\t\t\t\tanimationsEnabled={canAnimate}\n\t\t\t\t\t\tisCollapsedView={collapsedView}\n\t\t\t\t\t\tsearchPanelOpened={searchPanelOpened}\n\t\t\t\t\t\tsuggestionTypeFooter={suggestionTypeFooter}\n\t\t\t\t\t\texactMatchRegex={exactMatchRegex}\n\t\t\t\t\t\tshowOnboardingPopover={showOnboardingPopover}\n\t\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\t\tfetchingOnboardingPref={fetchingOnboardingPref}\n\t\t\t\t\t\tsettingOnboardingPref={settingOnboardingPref}\n\t\t\t\t\t\taiAssistant={aiAssistant}\n\t\t\t\t\t\tdisplayOnboardingPopover={displayOnboardingPopover}\n\t\t\t\t\t\tonboardingDismissed={onboardingDismissed}\n\t\t\t\t\t\tenableMultiLineInput={enableMultiLineInput}\n\t\t\t\t\t\tinputRef={inputRef}\n\t\t\t\t\t\tisFullPageEnabled={isFullPageEnabled}\n\t\t\t\t\t/>\n\t\t\t\t\t{enablePopover ? (\n\t\t\t\t\t\t<Popover\n\t\t\t\t\t\t\tactiveRowIndex={activeRowIndex}\n\t\t\t\t\t\t\tdata={data}\n\t\t\t\t\t\t\tterm={term}\n\t\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\t\tnowId={nowId}\n\t\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\t\tshowEmptyState={showEmptyState}\n\t\t\t\t\t\t\tutterancePlacement={utterancePlacement}\n\t\t\t\t\t\t\tloadingState={loadingState}\n\t\t\t\t\t\t\texactMatch={exactMatch}\n\t\t\t\t\t\t\tenableExactMatch={enableExactMatch}\n\t\t\t\t\t\t\ttitleRef={titleRef}\n\t\t\t\t\t\t\tupdateState={updateState}\n\t\t\t\t\t\t\tariaLiveText={ariaLiveText}\n\t\t\t\t\t\t\tariaLiveBusy={ariaLiveBusy}\n\t\t\t\t\t\t\tcontextDropdownOpened={contextDropdownOpened}\n\t\t\t\t\t\t\tisInputActive={isInputActive}\n\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\t\t\t\tshowUtterances={showUtterances}\n\t\t\t\t\t\t\tdisplayOnboardingPopover={displayOnboardingPopover}\n\t\t\t\t\t\t\tonboardingDismissed={onboardingDismissed}\n\t\t\t\t\t\t\tshowOnboardingPopover={showOnboardingPopover}\n\t\t\t\t\t\t\tfetchingOnboardingPref={fetchingOnboardingPref}\n\t\t\t\t\t\t\tsettingOnboardingPref={settingOnboardingPref}\n\t\t\t\t\t\t\taiAssistant={aiAssistant}\n\t\t\t\t\t\t\tplacement={placement}\n\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n};\n\nexport default view;\n","import { POPOVER_ITEM_TYPE } from \"../constants\";\n\nfunction transformSuggestionResponse(dataResponse) {\n\tconst output = [];\n\tdataResponse.forEach(group => {\n\t\tif (group.name) {\n\t\t\toutput.push({\n\t\t\t\ttype: POPOVER_ITEM_TYPE.SECTION_HEADER,\n\t\t\t\tcolumns: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfieldName: \"name\",\n\t\t\t\t\t\tlabel: \"Name\",\n\t\t\t\t\t\tvalue: group.name,\n\t\t\t\t\t\tdisplayValue: group.name\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t});\n\t\t}\n\t\toutput.push(...group.records);\n\t});\n\treturn output;\n}\n\nexport default transformSuggestionResponse;\n","import { createGraphQLEffect } from \"@servicenow/ui-effect-graphql\";\nimport get from \"lodash/get\";\nimport {\n\tSUGGESTION_QUERY,\n\tPLACEMENT,\n\tPOPOVER_ITEM_TYPE,\n\tUPDATE_ARIA_LIVE_TEXT_SOURCES,\n\tX_IS_LOGGED_IN_HEADER,\n\tUSER_PREF_DISMISSED_PROPERTY\n} from \"../constants\";\nimport {\n\tSUGGESTION_FETCH,\n\tSUGGESTION_FETCH_STARTED,\n\tSUGGESTION_FETCH_SUCCEEDED,\n\tSUGGESTION_FETCH_FAILED,\n\tSUGGESTIONS_RECEIVED,\n\tSUGGESTIONS_FAILED,\n\tUSER_PREFERENCES_FETCH\n} from \"../actions\";\n\nimport transformSuggestionResponse from \"../utils/transformSuggestionResponse\";\n\nexport const debouncedSuggestionFetchEffect = ({\n\taction: { payload },\n\tdispatch\n}) => {\n\tdispatch(SUGGESTION_FETCH, payload);\n};\n\n// Suggestion effect needs to be stripped out in the future\nexport const suggestionFetchEffect = createGraphQLEffect(SUGGESTION_QUERY, {\n\tvariableList: [\"searchContextConfigId\", \"term\", \"additionalContext\"],\n\tstartActionType: SUGGESTION_FETCH_STARTED,\n\tsuccessActionType: SUGGESTION_FETCH_SUCCEEDED,\n\terrorActionType: SUGGESTION_FETCH_FAILED\n});\n\nexport const suggestionFetchStartedEffect = ({ state, updateState }) => {\n\tupdateState({\n\t\t...state,\n\t\tfetching: true,\n\t\tactiveRowIndex: -1,\n\t\tactiveColumnIndex: 0,\n\t\tupdateAriaLiveTextSource: \"\",\n\t\tariaLiveBusy: true,\n\t\tariaLiveText: \"\"\n\t});\n};\n\nexport const suggestionFetchSucceededEffect = ({\n\taction,\n\tstate,\n\tupdateState,\n\tproperties,\n\tdispatch\n}) => {\n\tdispatch(\n\t\tSUGGESTIONS_RECEIVED,\n\t\tget(action, \"payload.data.GlideSearch_Query.suggestions\", [])\n\t);\n\n\tconst data = get(\n\t\taction,\n\t\t\"payload.data.GlideSearch_Query.suggestions.data\",\n\t\t[]\n\t);\n\tconst { term } = state;\n\tconst {\n\t\tisGlobal,\n\t\tplacement,\n\t\tshowUtterances,\n\t\tonboardingDismissed,\n\t\tdisplayOnboardingPopover\n\t} = properties;\n\n\tconst suggestionSearchTermQuery = get(\n\t\taction,\n\t\t\"payload.data.GlideSearch_Query.suggestions.term\",\n\t\t\"\"\n\t);\n\n\tconst dataItems = transformSuggestionResponse(data);\n\n\tif (isGlobal && placement === PLACEMENT.HEADER) {\n\t\t// Since User Search term is not displayed for Global view explicitly removing and adding Footer section removes the focus miss issue\n\t\tvar index = dataItems.findIndex(\n\t\t\titem => item.type === POPOVER_ITEM_TYPE.USER_SEARCH_TERM\n\t\t);\n\t\tif (index !== -1) {\n\t\t\t/* Removes Section Header & User Search Term when the Recent Searches suggestion group returns User Search Term only with no User history present\n\t\t\t ** Condition 1 validates  Recent Section Header, User Search Term , Suggested Results/Personal Click Section Header scenario\n\t\t\t ** Condition 2 Recent Searches Section Header And User Search Term\n\t\t\t ** Condition 3 Remove Section Header when only User Search Term is returned\n\t\t\t */\n\t\t\tif (\n\t\t\t\t(dataItems.length > 2 &&\n\t\t\t\t\t(dataItems[index - 1]?.type && dataItems[index + 1]?.type) ===\n\t\t\t\t\t\tPOPOVER_ITEM_TYPE.SECTION_HEADER) ||\n\t\t\t\tdataItems.length === 2 ||\n\t\t\t\t(dataItems[index - 1]?.type === POPOVER_ITEM_TYPE.SECTION_HEADER &&\n\t\t\t\t\t!dataItems[index + 1])\n\t\t\t) {\n\t\t\t\tdataItems.splice(index - 1, 2);\n\t\t\t} else {\n\t\t\t\t// This would remove User Search Term only when record from User history is returned from the suggestion group\n\t\t\t\tdataItems.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\tif (term.length > 0) {\n\t\t\t// Adds Footer Section to  Global Search\n\t\t\tconst newObj = {\n\t\t\t\ttype: POPOVER_ITEM_TYPE.FOOTER\n\t\t\t};\n\t\t\tif (dataItems.filter(x => x.type === newObj.type).length === 0) {\n\t\t\t\tdataItems.push(newObj);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Find Utterances for sorting or removal\n\tvar lastUtteranceIndex = 0;\n\tvar firstUtteranceIndex = undefined;\n\tdataItems.forEach((item, index) => {\n\t\tif (item.type === POPOVER_ITEM_TYPE.NOW_ASSIST_SUGGESTED_UTTERANCE) {\n\t\t\tif (!firstUtteranceIndex) firstUtteranceIndex = index;\n\t\t\tlastUtteranceIndex = index;\n\t\t}\n\t});\n\tif (firstUtteranceIndex) {\n\t\tvar utterances = dataItems.splice(\n\t\t\tfirstUtteranceIndex - 1,\n\t\t\tlastUtteranceIndex + 1\n\t\t);\n\n\t\t// Ensure utterances are sorted first for keyboard and mouse focus, otherwise keep them removed\n\t\tif (showUtterances && utterances) {\n\t\t\tdataItems.unshift(...utterances);\n\n\t\t\t// Handle onboarding popover based on user preference\n\t\t\tif (displayOnboardingPopover) {\n\t\t\t\tif (onboardingDismissed !== undefined) {\n\t\t\t\t\tupdateState({ showOnboardingPopover: !onboardingDismissed });\n\t\t\t\t} else {\n\t\t\t\t\tdispatch(USER_PREFERENCES_FETCH, {\n\t\t\t\t\t\tname: USER_PREF_DISMISSED_PROPERTY\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateState({\n\t\t...state,\n\t\tfetching: false,\n\t\tdata: dataItems,\n\t\tsuggestionSearchTermQuery,\n\t\tupdateAriaLiveTextSource: UPDATE_ARIA_LIVE_TEXT_SOURCES.RESULT_COUNT,\n\t\tariaLiveBusy: false\n\t});\n};\n\nexport const suggestionFetchFailedEffect = ({\n\taction,\n\tstate,\n\tupdateState,\n\tproperties,\n\tdispatch\n}) => {\n\tif (action?.meta?.responseHeaders[X_IS_LOGGED_IN_HEADER] === \"false\") {\n\t\tconst transformedAction = {\n\t\t\tpayload: action.payload.response.data\n\t\t};\n\t\tsuggestionFetchSucceededEffect({\n\t\t\taction: transformedAction,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t\tproperties,\n\t\t\tdispatch\n\t\t});\n\t} else {\n\t\tdispatch(SUGGESTIONS_FAILED, action.payload);\n\t\tupdateState({\n\t\t\t...state,\n\t\t\tfetching: false,\n\t\t\tupdateAriaLiveTextSource: \"\",\n\t\t\terror: action.payload\n\t\t});\n\t}\n};\n","import { createGraphQLEffect } from \"@servicenow/ui-effect-graphql\";\nimport get from \"lodash/get\";\nimport { CLEAR_SEARCH_FROM_HISTORY_MUTATION_QUERY } from \"../constants\";\n\nimport {\n\tCLEAR_SEARCH_MUTATION_SUCCEEDED,\n\tCLEAR_SEARCH_MUTATION_FAILED,\n\tSUGGESTION_FETCH\n} from \"../actions\";\n\nconst mutationPath =\n\t\"payload.data.GlideSearch_Mutation.clearSearchFromHistory.term\";\n\nexport const clearSearchEffect = createGraphQLEffect(\n\tCLEAR_SEARCH_FROM_HISTORY_MUTATION_QUERY,\n\t{\n\t\tvariableList: [\"searchContextConfigId\", \"term\"],\n\t\tsuccessActionType: CLEAR_SEARCH_MUTATION_SUCCEEDED,\n\t\terrorActionType: CLEAR_SEARCH_MUTATION_FAILED\n\t}\n);\n\nexport const clearSearchSucceededEffect = ({\n\tdispatch,\n\tproperties,\n\tstate,\n\taction\n}) => {\n\tconst { term } = state;\n\tconst { searchContextConfigId, additionalContext } = properties;\n\tconst deletedQuery = get(action, mutationPath, null);\n\n\t// null if soft delete was not successful\n\tif (!deletedQuery) return;\n\n\tdispatch(SUGGESTION_FETCH, {\n\t\tsearchContextConfigId,\n\t\tterm,\n\t\tadditionalContext\n\t});\n};\n\nexport const clearSearchFailedEffect = ({ action, state, updateState }) => {\n\tupdateState({\n\t\t...state,\n\t\tfetching: false,\n\t\terror: action.payload\n\t});\n};\n","import {\n\tGLOBAL_SEARCH_WIDTH,\n\tPLACEMENT,\n\tWINDOW_SIZE,\n\tGLOBAL_SEARCH_MOBILE_WIDTH\n} from \"../constants\";\n\nconst createQuerySelector = querySelector => host =>\n\thost.shadowRoot.querySelector(querySelector);\n\nconst getPopoverEl = createQuerySelector(\"div.search-popover\");\nconst getInputContainerEl = createQuerySelector(\"div.input-container\");\nconst isMobileCombobox = host => host.tagName.includes(\"MOBILE\");\n\nconst fitResizeEffect = ({ host, properties }) => {\n\tconst { isGlobal, placement, windowSize } = properties;\n\tconst contentElem = getPopoverEl(host);\n\tconst targetElem = getInputContainerEl(host);\n\tconst isMobileComponent = isMobileCombobox(host);\n\n\tif (isMobileComponent && !isGlobal) return;\n\n\t/*\n\t * NOT the best way but issues with removing inline style and then updating it via normal\n\t * cycle\n\t */\n\n\tif (contentElem) {\n\t\tconst currentWidth = contentElem.style.width;\n\t\tconst targetWidth =\n\t\t\tisGlobal && placement === PLACEMENT.HEADER\n\t\t\t\t? windowSize == WINDOW_SIZE.MOBILE\n\t\t\t\t\t? GLOBAL_SEARCH_MOBILE_WIDTH\n\t\t\t\t\t: GLOBAL_SEARCH_WIDTH\n\t\t\t\t: `${targetElem.offsetWidth}px`;\n\n\t\tif (currentWidth !== targetWidth) {\n\t\t\tObject.assign(contentElem.style, { width: targetWidth });\n\t\t}\n\t}\n};\n\nexport default fitResizeEffect;\n","function createAfterInterceptor(actionNames) {\n\tlet actions = actionNames;\n\tif (!Array.isArray(actionNames)) {\n\t\tactions = [actionNames];\n\t}\n\treturn actions.map(actionName => ({\n\t\tafter: context => ({\n\t\t\t...context,\n\t\t\teffects: [\n\t\t\t\t...context.effects,\n\t\t\t\t{\n\t\t\t\t\teffect: ({ dispatch }) => dispatch(actionName),\n\t\t\t\t\targs: [context.coeffects]\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t}));\n}\n\nexport default createAfterInterceptor;\n","/**\n * Handy dandy proxy for helping keep effect functions mockable by sinon, example:\n *\n * export const unProxiedFetchEffect = createGraphQLEffect(someQuery, {\n *  startActionType,\n *  successActionType,\n *  errorActionType\n * })\n *\n * In actionHandlers -\n * import effectProxy from '../helpers/effectProxy'\n * ...\n * [ACTION_CONSTANT]: effectProxy(unProxiedFetchEffect)\n *\n * In tests -\n * import { unProxiedFetchEffect } from './component-file'\n * ...\n * beforeEach(() => {\n *  sandbox.stub(unProxiedFetchEffect, 'effect')\n * })\n */\n\nexport default effect => coeffects => effect.effect(...effect.args, coeffects);\n","import { CONTEXT_CHANGED_INTERNAL, HIDE_POPOVER } from \"../actions\";\n\nexport const contextItemSelectedEffect = ({\n\tupdateProperties,\n\tdispatch,\n\taction,\n\tstate,\n\tupdateState,\n\thost\n}) => {\n\tconst {\n\t\tpayload: { item }\n\t} = action;\n\n\tconst { searchDataConfigId } = item;\n\tupdateProperties({\n\t\tselectedSearchContext: item,\n\t\tsearchContextConfigId: searchDataConfigId\n\t});\n\tupdateState({\n\t\t...state,\n\t\tinputHasFocus: true,\n\t\tisInputActive: true\n\t});\n\n\tdispatch(CONTEXT_CHANGED_INTERNAL, item);\n\tconst input = host.shadowRoot.querySelector(\"input\");\n\tsetTimeout(() => input.focus(), 100);\n};\n\nexport const contextDropdownClickedEffect = ({\n\tstate,\n\tupdateState,\n\tdispatch\n}) => {\n\tconst { contextDropdownOpened, inputHasFocus } = state;\n\n\tupdateState({\n\t\t...state,\n\t\tcontextDropdownOpened: !contextDropdownOpened,\n\t\tinputHasFocus: true,\n\t\tisInputActive: true\n\t});\n\tif (!contextDropdownOpened && inputHasFocus) {\n\t\tdispatch(HIDE_POPOVER);\n\t}\n};\n","import get from \"lodash/get\";\nimport { t } from \"sn-translate\";\nimport { POPOVER_ITEM_TYPE } from \"../constants\";\n\nconst transformString = string => {\n\treturn string && string[0].toUpperCase() + string.slice(1);\n};\n\nconst transformExactMatchResponse = response => {\n\tconst term = get(response, \"result.term\");\n\tconst record = get(response, \"result.search_results.0.records.0\");\n\tconst displayFields = get(response, \"result.search_results.0.fields\");\n\n\tconst record_url = get(\n\t\tresponse,\n\t\t\"result.search_results.0.records.0.record_url\"\n\t);\n\tconst table = get(response, \"result.search_results.0.records.0.table\");\n\n\tconst displayValueForTableWhenAvailable =\n\t\tget(response, \"result.search_results.0.label\") ||\n\t\tget(response, \"result.search_results.0.records.0.table\");\n\n\tconst title = get(\n\t\tresponse,\n\t\t\"result.search_results.0.records.0.metadata.title\"\n\t);\n\n\tconst sysId = get(response, \"result.search_results.0.records.0.sys_id\");\n\n\tif (!term || !record || !displayFields) return undefined;\n\tlet output = [];\n\tif (term && record && displayFields) {\n\t\toutput.push({\n\t\t\ttype: POPOVER_ITEM_TYPE.SECTION_HEADER,\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"name\",\n\t\t\t\t\tlabel: \"Name\",\n\t\t\t\t\tvalue: t(\"EXACT MATCH\"),\n\t\t\t\t\tdisplayValue: t(\"EXACT MATCH\")\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t\toutput.push({\n\t\t\ttype: POPOVER_ITEM_TYPE.EXACT_MATCH,\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"title\",\n\t\t\t\t\tlabel: \"title\",\n\t\t\t\t\tvalue: title || term || table || \"No title\", // if the title is left undefined or falsey, errors will occur downstream\n\t\t\t\t\tdisplayValue: title || term || table || \"No title\"\n\t\t\t\t},\n\t\t\t\t/* For ExactMatch search and with polaris temporary dynamic routing logic,\n\t\t\t\t ** the record routing is based on source table so updates the value for routing and displayVlue\n\t\t\t\t ** contains the required table label for design\n\t\t\t\t */\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"source_table_name\",\n\t\t\t\t\tlabel: \"source_table_name\",\n\t\t\t\t\tvalue: table,\n\t\t\t\t\tdisplayValue: transformString(displayValueForTableWhenAvailable)\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"number\",\n\t\t\t\t\tlabel: \"number\",\n\t\t\t\t\tvalue: term,\n\t\t\t\t\tdisplayValue: term\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"record_url\",\n\t\t\t\t\tlabel: \"record_url\",\n\t\t\t\t\tvalue: record_url,\n\t\t\t\t\tdisplayValue: record_url\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"sysID\",\n\t\t\t\t\tlabel: \"sysID\",\n\t\t\t\t\tvalue: sysId,\n\t\t\t\t\tdisplayValue: sysId\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t\toutput.push({\n\t\t\ttype: POPOVER_ITEM_TYPE.FOOTER\n\t\t});\n\t}\n\treturn output;\n};\n\nexport default transformExactMatchResponse;\n","import { createHttpEffect } from \"@servicenow/ui-effect-http\";\nimport get from \"lodash/get\";\nimport {\n\tEXACT_MATCH_FETCH,\n\tEXACT_MATCH_FAILED,\n\tEXACT_MATCH_STARTED,\n\tEXACT_MATCH_SUCCEEDED,\n\tSET_ENABLE_EXACT_MATCH_PROPERTY,\n\tSWITCH_TO_DEFAULT_ENABLE_EXACT_MATCH_PROPERTY\n} from \"../actions\";\nimport transformExactMatchResponse from \"../utils/transformExactMatchResponse\";\nimport {\n\tEXACT_MATCH_QUERY_PATH,\n\tDATABROKER_URI_QUERY,\n\tEVENT_TYPE\n} from \"../constants\";\nimport { handlers } from \"./inputEffects\";\n\nexport const handleExactMatchFetchEffect = createHttpEffect(\n\t\"/api/now/v1/search/exactmatch?sysparm_term=:term&sysparm_search_context_config_id=:searchContextConfigId\",\n\t{\n\t\tmethod: \"GET\",\n\t\theaders: {},\n\t\tpathParams: [\"term\", \"searchContextConfigId\"],\n\t\tstartActionType: EXACT_MATCH_STARTED,\n\t\tsuccessActionType: EXACT_MATCH_SUCCEEDED,\n\t\terrorActionType: EXACT_MATCH_FAILED\n\t}\n);\n\nexport const queueExactMatchFetchEffect = ({ action, updateState }) => {\n\tupdateState({\n\t\tqueuedExactMatchFetchData: action.payload\n\t});\n};\n\nexport const handleExactMatchStartedEffect = ({ state, updateState }) =>\n\tupdateState({\n\t\t...state,\n\t\texactMatch: {\n\t\t\tisFetching: true,\n\t\t\terror: null\n\t\t},\n\t\tactiveRowIndex: -1,\n\t\tactiveColumnIndex: 0\n\t});\n\nexport const handleExactMatchSucceededEffect = ({\n\tstate,\n\tupdateState,\n\tproperties,\n\taction,\n\tdispatch,\n\thost\n}) => {\n\tconst { term, activeRowIndex, data, queueExactMatchEvent } = state;\n\tconst {\n\t\tsearchContextConfigId,\n\t\tselectedSearchContext,\n\t\tisGlobal,\n\t\tenableExactMatch\n\t} = properties;\n\tconst exactMatchData = transformExactMatchResponse(action.payload);\n\n\tupdateState({\n\t\t...state,\n\t\texactMatch: {\n\t\t\tisFetching: false,\n\t\t\terror: null,\n\t\t\texactMatchData,\n\t\t\thasExactMatch: true\n\t\t},\n\t\tqueuedExactMatchFetchData: null\n\t});\n\n\t// process the queued enter event now that we have exact match results\n\tif (queueExactMatchEvent) {\n\t\t// if valid exact match, route to the record;\n\t\t// otherwise, perform a search\n\t\tif (exactMatchData) {\n\t\t\tconst item = exactMatchData[1];\n\t\t\thandlers[EVENT_TYPE.NAVIGATION](\n\t\t\t\tsearchContextConfigId,\n\t\t\t\tterm,\n\t\t\t\tdata,\n\t\t\t\tactiveRowIndex,\n\t\t\t\titem,\n\t\t\t\tdispatch,\n\t\t\t\tenableExactMatch,\n\t\t\t\tupdateState,\n\t\t\t\tselectedSearchContext,\n\t\t\t\tisGlobal\n\t\t\t);\n\t\t} else {\n\t\t\thandlers[EVENT_TYPE.SEARCH_FROM_INPUT](\n\t\t\t\tterm,\n\t\t\t\tsearchContextConfigId,\n\t\t\t\tselectedSearchContext,\n\t\t\t\tupdateState,\n\t\t\t\tdispatch,\n\t\t\t\thost\n\t\t\t);\n\t\t}\n\n\t\tupdateState({ queueExactMatchEvent: false });\n\t}\n};\n\nexport const handleExactMatchFailedEffect = ({ state, updateState, action }) =>\n\tupdateState({\n\t\t...state,\n\t\texactMatch: {\n\t\t\t...state.exactMatch,\n\t\t\tisFetching: false,\n\t\t\terror: action.payload,\n\t\t\thasExactMatch: false\n\t\t},\n\t\tqueuedExactMatchFetchData: null\n\t});\n\nexport const exactMatchConfigFetchEffect = createHttpEffect(\n\tDATABROKER_URI_QUERY,\n\t{\n\t\tmethod: \"POST\",\n\t\tdataParam: \"payload\",\n\t\tbatch: false,\n\t\tsuccessActionType: SET_ENABLE_EXACT_MATCH_PROPERTY,\n\t\terrorActionType: SWITCH_TO_DEFAULT_ENABLE_EXACT_MATCH_PROPERTY\n\t}\n);\n\nexport const setEnableExactMatchPropertyVariable = ({\n\taction,\n\tstate,\n\tproperties,\n\tupdateProperties,\n\tupdateState,\n\tdispatch\n}) => {\n\tconst exactMatchConfigFromSAC = get(\n\t\taction?.payload,\n\t\tEXACT_MATCH_QUERY_PATH,\n\t\ttrue\n\t);\n\tconst { queuedExactMatchFetchData } = state;\n\tconst { searchContextConfigId } = properties;\n\tupdateProperties({\n\t\tenableExactMatch: exactMatchConfigFromSAC\n\t});\n\n\tupdateState({\n\t\tfetchExactMatchConfigMetdata: {\n\t\t\tsearchContextConfigId,\n\t\t\tisPending: false\n\t\t},\n\t\tfetching: false\n\t});\n\n\tif (queuedExactMatchFetchData && exactMatchConfigFromSAC) {\n\t\tdispatch(EXACT_MATCH_FETCH, queuedExactMatchFetchData);\n\t}\n};\n\nexport const switchToDefaultExactMatchPropertyVariable = ({\n\tupdateProperties,\n\tupdateState,\n\tproperties\n}) => {\n\tconst { searchContextConfigId } = properties;\n\n\tupdateProperties({\n\t\tenableExactMatch: true\n\t});\n\n\tupdateState({\n\t\tfetchExactMatchConfigMetdata: {\n\t\t\tsearchContextConfigId,\n\t\t\tisPending: false\n\t\t},\n\t\tfetching: false\n\t});\n};\n","import { createGraphQLEffect } from \"@servicenow/ui-effect-graphql\";\nimport { get } from \"lodash\";\nimport {\n\tUSER_PREFERENCES_FETCH_STARTED,\n\tUSER_PREFERENCES_FETCH_SUCCEEDED,\n\tUSER_PREFERENCES_FETCH_FAILED\n} from \"../actions\";\n\n/** Fetching user preference on every load for onboarding experience */\nconst getUserPreferenceQuery = `query($name: [String]!){\n    GlideDomain_Query {\n        user {\n            preferences(name: $name) {\n                name,\n                value\n            }\n        }\n    }\n}`;\n\nexport const handleUserPrefFetchEffect = createGraphQLEffect(\n\tgetUserPreferenceQuery,\n\t{\n\t\tvariableList: [\"name\"],\n\t\tstartActionType: USER_PREFERENCES_FETCH_STARTED,\n\t\tsuccessActionType: USER_PREFERENCES_FETCH_SUCCEEDED,\n\t\terrorActionType: USER_PREFERENCES_FETCH_FAILED\n\t}\n);\n\nexport const handleUserPrefFetchStartedEffect = ({ updateState }) => {\n\tupdateState({\n\t\tfetchingOnboardingPref: true\n\t});\n};\n\nexport const handleUserPrefFetchSucceededEffect = ({ updateState, action }) => {\n\tconst data = action.payload;\n\tconst hasUserDismissedPopover = get(\n\t\tdata,\n\t\t\"data.GlideDomain_Query.user.preferences[0]\"\n\t);\n\n\t/**\n\t *  check if user has dismissed\n\t *  check if property is not present or manually made false\n\t *  this also updates fetching when it is completed with no property retrieved. */\n\tif (\n\t\thasUserDismissedPopover &&\n\t\tString(hasUserDismissedPopover.value).toLowerCase() === \"true\"\n\t) {\n\t\tupdateState({\n\t\t\tshowOnboardingPopover: false,\n\t\t\tfetchingOnboardingPref: false\n\t\t});\n\t} else {\n\t\tupdateState({\n\t\t\tfetchingOnboardingPref: false\n\t\t});\n\t}\n};\n\nexport const handleUserPrefFetchFailedEffect = ({\n\tstate,\n\tupdateState,\n\taction\n}) => {\n\tupdateState({\n\t\tfetchingOnboardingPref: false,\n\t\terrorFetchingOnboardingPref: action.payload\n\t});\n\tconst { errorFetchingOnboardingPref } = state;\n\tconsole.warn(\n\t\t\"Errored out on fetching onboarding user preference\",\n\t\terrorFetchingOnboardingPref\n\t);\n};\n","import { actionTypes } from \"@servicenow/ui-core\";\nimport { isEmpty, throttle } from \"lodash\";\nimport get from \"lodash/get\";\nimport {\n\tNOW_BUTTON_BARE_CLICKED,\n\tNOW_BUTTON_ICONIC_CLICKED,\n\tNOW_TEXT_LINK_CLICKED,\n\tINPUT_FOCUSED_IN,\n\tINPUT_FOCUSED_OUT,\n\tITEM_SELECTED,\n\tCLEAR_SEARCH_SELECTED,\n\tCLEAR_SEARCH_MUTATION,\n\tCLEAR_SEARCH_MUTATION_SUCCEEDED,\n\tCLEAR_SEARCH_MUTATION_FAILED,\n\tARROW_DOWN_PRESSED,\n\tARROW_UP_PRESSED,\n\tARROW_LEFT_PRESSED,\n\tARROW_RIGHT_PRESSED,\n\tINPUT_CHANGED,\n\tHIDE_POPOVER,\n\tCONTEXT_DROPDOWN_FOCUSED,\n\tSHOW_POPOVER,\n\tMOUSE_OVERED,\n\tDEBOUNCED_SUGGESTION_FETCH,\n\tSUGGESTION_FETCH,\n\tSUGGESTION_FETCH_STARTED,\n\tSUGGESTION_FETCH_SUCCEEDED,\n\tSUGGESTION_FETCH_FAILED,\n\tFIT_RESIZE,\n\tCONTEXT_DROPDOWN_CLICKED,\n\tCONTEXT_ITEM_SELECTED,\n\tQUEUE_EXACT_MATCH_FETCH,\n\tCLEAR_SEARCH_TERM,\n\tEXACT_MATCH_FAILED,\n\tEXACT_MATCH_FETCH,\n\tEXACT_MATCH_STARTED,\n\tEXACT_MATCH_SUCCEEDED,\n\tSHOW_SEARCH_PANEL,\n\tHIDE_SEARCH_PANEL,\n\tSET_REF,\n\tSET_INPUT_REF,\n\tFETCH_EXACT_MATCH_CONFIG,\n\tSET_ENABLE_EXACT_MATCH_PROPERTY,\n\tHANDLE_TOOLTIP_ON_TRUNCATED_TEXT,\n\tSWITCH_TO_DEFAULT_ENABLE_EXACT_MATCH_PROPERTY,\n\tDISMISS_ONBOARDING_POPOVER,\n\tUSER_PREFERENCES_SET,\n\tUSER_PREFERENCES_SET_STARTED,\n\tUSER_PREFERENCES_SET_SUCCEEDED,\n\tUSER_PREFERENCES_SET_FAILED,\n\tUSER_PREFERENCES_FETCH,\n\tUSER_PREFERENCES_FETCH_STARTED,\n\tUSER_PREFERENCES_FETCH_SUCCEEDED,\n\tUSER_PREFERENCES_FETCH_FAILED,\n\tSEARCH_CLEARED_INTERNAL\n} from \"../actions\";\nimport { constructAriaLiveText } from \"../utils/resultItemsUtil\";\n\nimport {\n\tDEBOUNCE_MODIFIER,\n\tINPUT_DEBOUNCE_DELAY,\n\tUPDATE_ARIA_LIVE_TEXT_SOURCES,\n\tSR_LABELS,\n\tUSER_PREF_DISMISSED_PROPERTY\n} from \"../constants\";\n\nimport {\n\tnowButtonClickedEffect,\n\tclearSearchSelectedEffect,\n\tinputFocusedInEffect,\n\tinputFocusedOutEffect,\n\titemSelectedEffect,\n\tarrowUpEffect,\n\tarrowDownEffect,\n\tarrowLeftEffect,\n\tarrowRightEffect,\n\tmouseOverEffect,\n\tshowPopoverEffect,\n\thidePopoverEffect,\n\tinputChangeEffect,\n\tshowSearchPanelInMobileViewEffect,\n\thideSearchPanelInMobileViewEffect,\n\tcontextDropdownFocusedEffect,\n\thandleTooltipOnTruncatedTextEffect,\n\tdismissOnboardingPopoverEffect\n} from \"../effects/inputEffects\";\n\nimport {\n\tsuggestionFetchEffect,\n\tsuggestionFetchStartedEffect,\n\tsuggestionFetchSucceededEffect,\n\tsuggestionFetchFailedEffect,\n\tdebouncedSuggestionFetchEffect\n} from \"../effects/suggestionEffects\";\n\nimport {\n\tclearSearchEffect,\n\tclearSearchSucceededEffect,\n\tclearSearchFailedEffect\n} from \"../effects/clearSearchEffects\";\n\nimport fitResizeEffect from \"../effects/fitEffects\";\nimport createAfterInterceptor from \"../utils/interceptor\";\nimport { generateExactMatchPayload } from \"../utils/exactMatch\";\nimport effectProxy from \"../utils/effectProxy\";\nimport {\n\tcontextDropdownClickedEffect,\n\tcontextItemSelectedEffect\n} from \"../effects/contextDropdownEffects\";\n\nimport {\n\thandleExactMatchFailedEffect,\n\thandleExactMatchFetchEffect,\n\thandleExactMatchSucceededEffect,\n\thandleExactMatchStartedEffect,\n\tqueueExactMatchFetchEffect,\n\texactMatchConfigFetchEffect,\n\tsetEnableExactMatchPropertyVariable,\n\tswitchToDefaultExactMatchPropertyVariable\n} from \"../effects/exactMatchEffects\";\n\nimport {\n\thandleUserPrefSetEffect,\n\thandleUserPrefSetStartedEffect,\n\thandleUserPrefSetSucceededEffect,\n\thandleUserPrefSetFailedEffect\n} from \"../effects/dismissOnboardingPopoverEffects\";\n\nimport {\n\thandleUserPrefFetchEffect,\n\thandleUserPrefFetchStartedEffect,\n\thandleUserPrefFetchSucceededEffect,\n\thandleUserPrefFetchFailedEffect\n} from \"../effects/displayOnboardingPopoeverEffects\";\n\nconst {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_TREE_RENDERED\n} = actionTypes;\n\nconst setTermToState = ({ properties, updateState }) => {\n\tconst { searchTerm } = properties;\n\tupdateState({\n\t\tpath: \"term\",\n\t\tvalue: searchTerm,\n\t\toperation: \"set\"\n\t});\n};\n\nconst syncInputDOMValue = (host, value) => {\n\tconst input = host.shadowRoot.querySelector(\"input\");\n\tif (input) {\n\t\tinput.value = value || \"\";\n\t}\n};\n\nconst resetSuggestionTerm = ({ updateState }) => {\n\tupdateState({\n\t\tpath: \"suggestionSearchTermQuery\",\n\t\tvalue: null,\n\t\toperation: \"set\"\n\t});\n};\n\nconst handleAriaLiveText = ({ state, updateState }) => {\n\t// add a dealy so screen reader is done reading search term\n\tif (\n\t\tstate?.updateAriaLiveTextSource ===\n\t\tUPDATE_ARIA_LIVE_TEXT_SOURCES.RESULT_COUNT\n\t) {\n\t\t// throttle to prevent tedious announcements\n\t\tlet throttleTimeout = throttle(() => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tupdateState({\n\t\t\t\t\tariaLiveText: constructAriaLiveText(\n\t\t\t\t\t\tstate.data,\n\t\t\t\t\t\tstate?.updateAriaLiveTextSource\n\t\t\t\t\t)\n\t\t\t\t});\n\t\t\t}, 500);\n\t\t}, 500);\n\t\tthrottleTimeout();\n\t} else if (\n\t\tstate?.updateAriaLiveTextSource ===\n\t\tUPDATE_ARIA_LIVE_TEXT_SOURCES.CLEAR_RECENT_SEARCH_ITEM\n\t) {\n\t\tupdateState({\n\t\t\tariaLiveText: SR_LABELS.CLEARED_RECENT_SEARCH_ITEM\n\t\t});\n\t} else {\n\t\tupdateState({\n\t\t\tariaLiveText: \"\"\n\t\t});\n\t}\n};\n\nexport default {\n\t[COMPONENT_CONNECTED]({ dispatch, properties, updateState }) {\n\t\tsetTermToState({ properties, updateState });\n\t\tconst {\n\t\t\tisNowAssistEnabled,\n\t\t\tonboardingDismissed,\n\t\t\tisAIELEnabled\n\t\t} = properties;\n\t\twindow.addEventListener(\"resize\", () => {\n\t\t\tdispatch(FIT_RESIZE);\n\t\t});\n\t\t/** we check if the user preferred to dimiss\n\t\t *  the onboarding popover on every page load */\n\t\tif (isNowAssistEnabled || isAIELEnabled) {\n\t\t\tif (onboardingDismissed !== undefined) {\n\t\t\t\tupdateState({ showOnboardingPopover: !onboardingDismissed });\n\t\t\t} else {\n\t\t\t\tdispatch(USER_PREFERENCES_FETCH, {\n\t\t\t\t\tname: USER_PREF_DISMISSED_PROPERTY\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\t[COMPONENT_DISCONNECTED]() {\n\t\twindow.removeEventListener(\"resize\", () => {});\n\t},\n\t[COMPONENT_DOM_READY]({ host, properties }) {\n\t\tsyncInputDOMValue(host, properties.searchTerm);\n\t},\n\t[COMPONENT_RENDERED]({ dispatch }) {\n\t\tdispatch(FIT_RESIZE);\n\t},\n\t[COMPONENT_TREE_RENDERED]: {\n\t\teffect: handleAriaLiveText,\n\t\tstopPropagation: true\n\t},\n\t[COMPONENT_PROPERTY_CHANGED]({\n\t\tproperties,\n\t\taction,\n\t\tupdateState,\n\t\tdispatch,\n\t\tupdateProperties,\n\t\thost\n\t}) {\n\t\tconst {\n\t\t\tpayload: { name, value, previousValue }\n\t\t} = action;\n\t\tconst { isGlobal, searchContexts } = properties;\n\t\tif (name === \"searchTerm\") {\n\t\t\tsetTermToState({ properties, updateState });\n\t\t\tsyncInputDOMValue(host, properties.searchTerm);\n\t\t}\n\t\tif (name === \"searchContextConfigId\" && previousValue !== value) {\n\t\t\tif (\n\t\t\t\t(!isEmpty(previousValue) && isGlobal) ||\n\t\t\t\t(!isGlobal && !isEmpty(value))\n\t\t\t) {\n\t\t\t\tresetSuggestionTerm({ updateState });\n\t\t\t\t// fetch exact match config only if the prop is not provided via search contexts\n\t\t\t\tconst matched = searchContexts?.find(\n\t\t\t\t\tcontext => context.searchDataConfigId === value\n\t\t\t\t);\n\t\t\t\tif (matched && matched?.enableExactMatch !== undefined) {\n\t\t\t\t\tupdateProperties({\n\t\t\t\t\t\tenableExactMatch: matched.enableExactMatch\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tfetchExactMatchConfigMetdata: {\n\t\t\t\t\t\t\tsearchContextConfigId: value,\n\t\t\t\t\t\t\tisPending: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfetching: true\n\t\t\t\t\t});\n\t\t\t\t\tdispatch(FETCH_EXACT_MATCH_CONFIG, {\n\t\t\t\t\t\tpayload: generateExactMatchPayload(value)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t[DEBOUNCED_SUGGESTION_FETCH]: {\n\t\tmodifier: {\n\t\t\tname: DEBOUNCE_MODIFIER,\n\t\t\tdelay: INPUT_DEBOUNCE_DELAY\n\t\t},\n\t\teffect: debouncedSuggestionFetchEffect\n\t},\n\t[FETCH_EXACT_MATCH_CONFIG]: exactMatchConfigFetchEffect,\n\t[SET_ENABLE_EXACT_MATCH_PROPERTY]: {\n\t\teffect: setEnableExactMatchPropertyVariable,\n\t\tstopPropagation: true\n\t},\n\t[SUGGESTION_FETCH]: effectProxy(suggestionFetchEffect),\n\t[SUGGESTION_FETCH_STARTED]: {\n\t\teffect: suggestionFetchStartedEffect,\n\t\tstopPropagation: true\n\t},\n\t[SUGGESTION_FETCH_SUCCEEDED]: {\n\t\teffect: suggestionFetchSucceededEffect,\n\t\tstopPropagation: true\n\t},\n\t[SUGGESTION_FETCH_FAILED]: {\n\t\teffect: suggestionFetchFailedEffect,\n\t\tstopPropagation: true\n\t},\n\t[INPUT_CHANGED]: {\n\t\teffect: inputChangeEffect,\n\t\tinterceptors: createAfterInterceptor(SHOW_POPOVER),\n\t\tstopPropagation: true\n\t},\n\t[INPUT_FOCUSED_IN]: {\n\t\teffect: inputFocusedInEffect,\n\t\tinterceptors: createAfterInterceptor(SHOW_POPOVER),\n\t\tstopPropagation: true\n\t},\n\t[INPUT_FOCUSED_OUT]: {\n\t\teffect: inputFocusedOutEffect,\n\t\tstopPropagation: true\n\t},\n\t[CLEAR_SEARCH_TERM]({ host, dispatch }) {\n\t\tdispatch(INPUT_CHANGED, {\n\t\t\tterm: \"\",\n\t\t\tsource: \"CLEAR_SEARCH_BUTTON\"\n\t\t});\n\t\tdispatch(SEARCH_CLEARED_INTERNAL);\n\t\tsetTimeout(() => {\n\t\t\tconst input = host.shadowRoot.querySelector(\"input, textarea\");\n\t\t\tif (input) {\n\t\t\t\tinput.value = \"\";\n\t\t\t\tinput.focus();\n\t\t\t}\n\t\t}, 0);\n\t},\n\t[ARROW_UP_PRESSED]: {\n\t\teffect: arrowUpEffect,\n\t\tinterceptors: createAfterInterceptor(SHOW_POPOVER),\n\t\tstopPropagation: true\n\t},\n\t[ARROW_DOWN_PRESSED]: {\n\t\teffect: arrowDownEffect,\n\t\tinterceptors: createAfterInterceptor(SHOW_POPOVER),\n\t\tstopPropagation: true\n\t},\n\t[ARROW_LEFT_PRESSED]: {\n\t\teffect: arrowLeftEffect,\n\t\tstopPropagation: true\n\t},\n\t[ARROW_RIGHT_PRESSED]: {\n\t\teffect: arrowRightEffect,\n\t\tstopPropagation: true\n\t},\n\t[NOW_BUTTON_BARE_CLICKED]: {\n\t\teffect: nowButtonClickedEffect,\n\t\tstopPropagation: true\n\t},\n\t[NOW_BUTTON_ICONIC_CLICKED]: {\n\t\teffect: nowButtonClickedEffect,\n\t\tstopPropagation: true\n\t},\n\t[NOW_TEXT_LINK_CLICKED]: {\n\t\teffect: itemSelectedEffect,\n\t\tinterceptors: createAfterInterceptor(HIDE_POPOVER),\n\t\tstopPropagation: true\n\t},\n\t[ITEM_SELECTED]: {\n\t\teffect: itemSelectedEffect,\n\t\tinterceptors: createAfterInterceptor(HIDE_POPOVER),\n\t\tstopPropagation: true\n\t},\n\t[CLEAR_SEARCH_SELECTED]: {\n\t\teffect: clearSearchSelectedEffect,\n\t\tstopPropagation: true\n\t},\n\t[CLEAR_SEARCH_MUTATION]: {\n\t\t...clearSearchEffect,\n\t\tstopPropagation: true\n\t},\n\t[CLEAR_SEARCH_MUTATION_SUCCEEDED]: {\n\t\teffect: clearSearchSucceededEffect,\n\t\tstopPropagation: true\n\t},\n\t[CLEAR_SEARCH_MUTATION_FAILED]: {\n\t\teffect: clearSearchFailedEffect,\n\t\tstopPropagation: true\n\t},\n\t[MOUSE_OVERED]: {\n\t\teffect: mouseOverEffect,\n\t\tstopPropagation: true\n\t},\n\t[SHOW_POPOVER]: {\n\t\teffect: showPopoverEffect,\n\t\tstopPropagation: true\n\t},\n\t[HIDE_POPOVER]: {\n\t\teffect: hidePopoverEffect,\n\t\tstopPropagation: true\n\t},\n\t[CONTEXT_DROPDOWN_FOCUSED]: {\n\t\teffect: contextDropdownFocusedEffect,\n\t\tstopPropagation: true\n\t},\n\t[FIT_RESIZE]: {\n\t\teffect: fitResizeEffect,\n\t\tstopPropagation: true\n\t},\n\t[CONTEXT_DROPDOWN_CLICKED]: {\n\t\teffect: contextDropdownClickedEffect,\n\t\tstopPropagation: true\n\t},\n\t[CONTEXT_ITEM_SELECTED]: {\n\t\teffect: contextItemSelectedEffect,\n\t\tstopPropagation: true\n\t},\n\t[QUEUE_EXACT_MATCH_FETCH]: {\n\t\teffect: queueExactMatchFetchEffect,\n\t\tstopPropagation: true\n\t},\n\t[EXACT_MATCH_FETCH]: effectProxy(handleExactMatchFetchEffect),\n\t[EXACT_MATCH_STARTED]: {\n\t\teffect: handleExactMatchStartedEffect,\n\t\tstopPropagation: true\n\t},\n\t[EXACT_MATCH_SUCCEEDED]: {\n\t\teffect: handleExactMatchSucceededEffect,\n\t\tstopPropagation: true\n\t},\n\t[EXACT_MATCH_FAILED]: {\n\t\teffect: handleExactMatchFailedEffect,\n\t\tstopPropagation: true\n\t},\n\t[SHOW_SEARCH_PANEL]: {\n\t\teffect: showSearchPanelInMobileViewEffect,\n\t\tstopPropagation: true\n\t},\n\t[HIDE_SEARCH_PANEL]: {\n\t\teffect: hideSearchPanelInMobileViewEffect,\n\t\tstopPropagation: true\n\t},\n\t[SET_REF]({ updateState, action }) {\n\t\tconst elm = get(action, \"payload.elm\");\n\t\tupdateState({ titleRef: elm });\n\t},\n\t[SET_INPUT_REF]({ updateState, action }) {\n\t\tconst elm = get(action, \"payload.elm\");\n\t\tupdateState({ inputRef: elm });\n\t},\n\t[HANDLE_TOOLTIP_ON_TRUNCATED_TEXT]: {\n\t\teffect: handleTooltipOnTruncatedTextEffect,\n\t\tstopPropagation: true\n\t},\n\t[SWITCH_TO_DEFAULT_ENABLE_EXACT_MATCH_PROPERTY]: {\n\t\teffect: switchToDefaultExactMatchPropertyVariable,\n\t\tstopPropagation: true\n\t},\n\t[DISMISS_ONBOARDING_POPOVER]: {\n\t\teffect: dismissOnboardingPopoverEffect,\n\t\tstopPropagation: true\n\t},\n\t[USER_PREFERENCES_SET]: effectProxy(handleUserPrefSetEffect),\n\t[USER_PREFERENCES_SET_STARTED]: {\n\t\teffect: handleUserPrefSetStartedEffect,\n\t\tstopPropagation: true\n\t},\n\t[USER_PREFERENCES_SET_SUCCEEDED]: {\n\t\teffect: handleUserPrefSetSucceededEffect,\n\t\tstopPropagation: true\n\t},\n\t[USER_PREFERENCES_SET_FAILED]: {\n\t\teffect: handleUserPrefSetFailedEffect,\n\t\tstopPropagation: true\n\t},\n\t[USER_PREFERENCES_FETCH]: effectProxy(handleUserPrefFetchEffect),\n\t[USER_PREFERENCES_FETCH_STARTED]: {\n\t\teffect: handleUserPrefFetchStartedEffect,\n\t\tstopPropagation: true\n\t},\n\t[USER_PREFERENCES_FETCH_SUCCEEDED]: {\n\t\teffect: handleUserPrefFetchSucceededEffect,\n\t\tstopPropagation: true\n\t},\n\t[USER_PREFERENCES_FETCH_FAILED]: {\n\t\teffect: handleUserPrefFetchFailedEffect,\n\t\tstopPropagation: true\n\t}\n};\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport keyBindingBehavior from \"@servicenow/behavior-key-binding\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\nimport rtlBehavior from \"@servicenow/behavior-rtl\";\nimport style from \"./index.scss\";\nimport view from \"./view/Combobox\";\nimport actionHandlers from \"./actionHandlers\";\nimport {\n\tDEFAULT_PLACEHODLER,\n\tWINDOW_SIZE,\n\tPLACEMENT,\n\tAI_ASSISTANT,\n\tNASS_INPUT_PLACEHOLDER\n} from \"../common/constants\";\n\nimport {\n\tARROW_DOWN_PRESSED,\n\tARROW_UP_PRESSED,\n\tARROW_LEFT_PRESSED,\n\tARROW_RIGHT_PRESSED,\n\tHIDE_POPOVER\n} from \"./actions\";\nimport {\n\t_isUtterance,\n\ttabKeyHandler,\n\t_isPopoverButtonEvent,\n\t_isPopoverTermEvent,\n\t_isDropDownEvent\n} from \"../common/effects/inputEffects\";\nimport { ITEM_SELECTED } from \"../common/actions\";\n\nimport truncationBehavior from \"@servicenow/behavior-truncation\";\nimport tooltipBehavior from \"@servicenow/behavior-tooltip\";\n\ncreateCustomElement(\"sn-search-combobox-desktop\", {\n\trenderer: { type: snabbdom },\n\tshadowRootOptions: { mode: \"open\", delegatesFocus: true },\n\tstyles: style,\n\tview,\n\tactionHandlers,\n\teventHandlers: [\n\t\t{\n\t\t\tevents: [\"click\"],\n\t\t\teffect({\n\t\t\t\tstate,\n\t\t\t\tdispatch,\n\t\t\t\taction: {\n\t\t\t\t\tpayload: { event, host }\n\t\t\t\t}\n\t\t\t}) {\n\t\t\t\tconst { showPopover } = state;\n\t\t\t\tif (showPopover) {\n\t\t\t\t\tconst path = event.composedPath ? event.composedPath() : event.path;\n\t\t\t\t\tconst hostInPath = path.includes(host);\n\n\t\t\t\t\tif (!hostInPath) {\n\t\t\t\t\t\tdispatch(HIDE_POPOVER);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttarget: document\n\t\t},\n\t\t{\n\t\t\tevents: [\"keydown\"],\n\t\t\teffect({ host, action, dispatch }) {\n\t\t\t\tconst event = action.payload.event;\n\t\t\t\tconst key = event.key;\n\t\t\t\tconst isEnterEvent = key === \"Enter\";\n\t\t\t\tconst isShiftKeyPressed = event.shiftKey;\n\n\t\t\t\tif (event.isComposing) return;\n\t\t\t\tconst path = event.composedPath ? event.composedPath() : event.path;\n\t\t\t\tconst sourceElement = path.length > 0 ? path[0] : null;\n\n\t\t\t\tconst isTextAreaEvent =\n\t\t\t\t\tsourceElement && sourceElement.tagName === \"TEXTAREA\";\n\t\t\t\tconst isInputEvent = sourceElement && sourceElement.tagName === \"INPUT\";\n\t\t\t\tconst isPopoverTermEvent =\n\t\t\t\t\t_isPopoverTermEvent(event) || _isUtterance(sourceElement);\n\n\t\t\t\t// prevent enter to add new line in text area\n\t\t\t\tif (isTextAreaEvent && isEnterEvent) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tif (isTextAreaEvent && isShiftKeyPressed && isEnterEvent) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tconst textarea = host.shadowRoot.querySelector(\"textarea\");\n\t\t\t\t\tconst start = textarea.selectionStart;\n\t\t\t\t\tconst end = textarea.selectionEnd;\n\t\t\t\t\tconst value = textarea.value;\n\n\t\t\t\t\ttextarea.value =\n\t\t\t\t\t\tvalue.substring(0, start) + \"\\n\" + value.substring(end);\n\t\t\t\t\ttextarea.selectionStart = textarea.selectionEnd = start + 1;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tisEnterEvent &&\n\t\t\t\t\t(isInputEvent || isTextAreaEvent || isPopoverTermEvent)\n\t\t\t\t) {\n\t\t\t\t\tif (isInputEvent) dispatch(ITEM_SELECTED, { isInputEvent });\n\t\t\t\t\telse dispatch(ITEM_SELECTED);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t],\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: keyBindingBehavior,\n\t\t\toptions: {\n\t\t\t\tkeyBindings: {\n\t\t\t\t\tpressArrowUp: [\"ArrowUp\"],\n\t\t\t\t\tpressArrowDown: [\"ArrowDown\"],\n\t\t\t\t\tpressArrowLeft: [\"ArrowLeft\"],\n\t\t\t\t\tpressArrowRight: [\"ArrowRight\"],\n\t\t\t\t\tpressEscape: [\"Escape\"],\n\t\t\t\t\tpressTab: [\"Tab\"]\n\t\t\t\t},\n\t\t\t\thandlers: {\n\t\t\t\t\tpressArrowUp(host, event, dispatch) {\n\t\t\t\t\t\tevent.preventDefault(); // prevent scrolling up\n\t\t\t\t\t\tdispatch(ARROW_UP_PRESSED, { host });\n\t\t\t\t\t},\n\t\t\t\t\tpressArrowDown(host, event, dispatch) {\n\t\t\t\t\t\tevent.preventDefault(); // prevent scrolling down\n\t\t\t\t\t\tif (_isDropDownEvent(event)) {\n\t\t\t\t\t\t\tdispatch(HIDE_POPOVER);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdispatch(ARROW_DOWN_PRESSED, { host });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tpressArrowLeft(host, event, dispatch) {\n\t\t\t\t\t\tif (_isPopoverButtonEvent(event) || _isPopoverTermEvent(event)) {\n\t\t\t\t\t\t\tdispatch(ARROW_LEFT_PRESSED, { host });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tpressArrowRight(host, event, dispatch) {\n\t\t\t\t\t\tif (_isPopoverButtonEvent(event) || _isPopoverTermEvent(event)) {\n\t\t\t\t\t\t\tdispatch(ARROW_RIGHT_PRESSED, { host });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tpressEscape(host, event, dispatch) {\n\t\t\t\t\t\tdispatch(HIDE_POPOVER);\n\t\t\t\t\t\tconst input = host.shadowRoot.querySelector(\"input\");\n\t\t\t\t\t\tif (input) input.focus();\n\t\t\t\t\t},\n\t\t\t\t\tpressTab: tabKeyHandler\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ behavior: rtlBehavior },\n\t\t{ behavior: mediaQueryBehavior },\n\t\ttooltipBehavior,\n\t\ttruncationBehavior\n\t],\n\tinitialState: {\n\t\tterm: \"\",\n\t\tsuggestionSearchTermQuery: null,\n\t\tactiveRowIndex: -1,\n\t\tactiveColumnIndex: 0,\n\t\tshowPopover: false,\n\t\tdata: [],\n\t\twidth: 0,\n\t\tinputHasFocus: false,\n\t\ttargetRef: null,\n\t\tcontextDropdownOpened: false,\n\t\tisInputActive: false,\n\t\texactMatch: {},\n\t\tqueueExactMatchEvent: false,\n\t\tsearchPanelOpened: false,\n\t\ttitleRef: \"\",\n\t\tinputRef: null,\n\t\tupdateAriaLiveTextSource: \"\",\n\t\tariaLiveText: \"\",\n\t\tariaLiveBusy: false,\n\t\tshowOnboardingPopover: true,\n\t\tfetchingOnboardingPref: false,\n\t\tsettingOnboardingPref: false,\n\t\terrorFetchingOnboardingPref: null,\n\t\tfetchExactMatchConfigMetdata: {\n\t\t\tsearchContextConfigId: null,\n\t\t\tisPending: false\n\t\t},\n\t\tqueuedExactMatchFetchData: null\n\t},\n\tproperties: {\n\t\tplaceholder: { default: DEFAULT_PLACEHODLER },\n\t\tnowAssistPlaceholder: { default: NASS_INPUT_PLACEHOLDER },\n\t\tsearchTerm: { default: \"\" },\n\t\tsearchContextConfigId: { default: \"\" },\n\t\tplacement: { default: PLACEMENT.BODY },\n\t\tdisableAutocomplete: { default: false },\n\t\tselectedSearchContext: { default: {} },\n\t\tsearchContexts: { default: [] },\n\t\tisGlobal: { default: false },\n\t\twindowSize: { default: WINDOW_SIZE.EXPANDED },\n\t\tcanAnimate: { default: false },\n\t\tenableExactMatch: { default: true },\n\t\texactMatchRegex: { default: \"\" },\n\t\tisNowAssistEnabled: { default: false },\n\t\taiAssistant: { default: AI_ASSISTANT },\n\t\tsearchFromChat: { default: false },\n\t\tshowUtterances: { default: false },\n\t\tutterancePlacement: { default: \"body\" },\n\t\tdisplayOnboardingPopover: { default: false },\n\t\tonboardingDismissed: { default: undefined },\n\t\tadditionalContext: { default: \"{}\" },\n\t\tisAIELEnabled: { default: false },\n\t\tenableMultiLineInput: { default: false },\n\t\tisFullPageEnabled: { default: false },\n\t\tdisableHref: { default: true }\n\t}\n});\n","import { t } from \"sn-translate\";\nimport Input from \"../../common/view/Input\";\nimport { MOBILE_CANCEL_BUTTON_CLICKED } from \"../actions\";\nimport { LABELS } from \"../../common/constants\";\n\nconst view = ({\n\thasFocus,\n\thasSuggestions,\n\tshowPopover,\n\tplaceholder,\n\tnowAssistPlaceholder,\n\tterm,\n\tdispatch,\n\tnowId,\n\tsearchContexts,\n\tselectedSearchContext,\n\tisGlobal,\n\tcontextDropdownOpened,\n\twindowSize,\n\tplacement,\n\tcanAnimate,\n\texactMatchRegex,\n\tisNowAssistEnabled,\n\tinputRef\n}) => (\n\t<div\n\t\tclassName={\n\t\t\tisGlobal\n\t\t\t\t? \"search-combobox__mobile-input-wrapper mobile-global-search\"\n\t\t\t\t: \"search-combobox__mobile-input-wrapper\"\n\t\t}\n\t>\n\t\t<Input\n\t\t\thasFocus={hasFocus}\n\t\t\tshowPopover={showPopover}\n\t\t\tplaceholder={placeholder}\n\t\t\tnowAssistPlaceholder={nowAssistPlaceholder}\n\t\t\tterm={term}\n\t\t\tdispatch={dispatch}\n\t\t\thasSuggestions={hasSuggestions}\n\t\t\tnowId={nowId}\n\t\t\tisMobileView\n\t\t\tsearchContexts={searchContexts}\n\t\t\tselectedSearchContext={selectedSearchContext}\n\t\t\tisGlobal={isGlobal}\n\t\t\tcontextDropdownOpened={contextDropdownOpened}\n\t\t\twindowSize={windowSize}\n\t\t\tplacement={placement}\n\t\t\tanimationsEnabled={canAnimate}\n\t\t\texactMatchRegex={exactMatchRegex}\n\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\tinputRef={inputRef}\n\t\t/>\n\t\t<now-button-bare\n\t\t\tappend-to-payload={{ action: MOBILE_CANCEL_BUTTON_CLICKED }}\n\t\t\tclass={{\n\t\t\t\t\"input-container__mobile-cancel\": true,\n\t\t\t\t\"-global\": isGlobal\n\t\t\t}}\n\t\t\thide-padding\n\t\t\tlabel={t(\"Cancel\")}\n\t\t\tsize=\"md\"\n\t\t\tvariant=\"primary\"\n\t\t\taria-label={LABELS.CANCEL_SEARCH}\n\t\t/>\n\t</div>\n);\nexport default view;\n","import \"@servicenow/now-button\";\n\nimport { SHOW_SEARCH_PANEL } from \"../actions\";\nimport { KEYCODE } from \"../../common/constants\";\n\nconst view = ({ placeholder, dispatch, inputAriaLabel }) => {\n\tconst _keydownHandler = event => {\n\t\tif (event.code === KEYCODE.ENTER || event.code === KEYCODE.SPACE) {\n\t\t\tdispatch(SHOW_SEARCH_PANEL);\n\t\t}\n\t};\n\treturn (\n\t\t// nds-scanner-disable-start native-element\n\t\t<div className=\"mobile-search-init mobile-search-init--page-view\">\n\t\t\t<input\n\t\t\t\tvalue=\"\"\n\t\t\t\ton-click={() => dispatch(SHOW_SEARCH_PANEL)}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\ton-focus={() => dispatch(SHOW_SEARCH_PANEL)}\n\t\t\t\ttype=\"text\"\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\taria-label={inputAriaLabel}\n\t\t\t\tclassName=\"\"\n\t\t\t/>\n\t\t\t<now-button-iconic\n\t\t\t\tbare\n\t\t\t\ttype=\"button\"\n\t\t\t\ticon=\"magnifying-glass-outline\"\n\t\t\t\tsize=\"md\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\ton-keydown={_keydownHandler}\n\t\t\t\ton-click={() => dispatch(SHOW_SEARCH_PANEL)}\n\t\t\t/>\n\t\t</div>\n\t\t// nds-scanner-disable-stop native-element\n\t);\n};\n\nexport default view;\n","import \"@servicenow/now-button\";\nimport MobileInput from \"./MobileInput\";\nimport Popover from \"../../common/view/Popover\";\nimport MobileStartViewInHeader from \"./MobileStartViewInHeader\";\nimport MobileStartViewInPage from \"./MobileStartViewInPage\";\nimport {\n\tPLACEMENT,\n\tDEFAULT_PLACEHODLER,\n\tNASS_INPUT_PLACEHOLDER\n} from \"../../common/constants\";\nimport { isEmpty } from \"lodash\";\n\nconst view = (state, { updateState, dispatch }) => {\n\tconst {\n\t\tsearchPanelOpened,\n\t\tshowPopover,\n\t\tterm,\n\t\tactiveRowIndex,\n\t\tdata,\n\t\tinputHasFocus,\n\t\tfetching,\n\t\tcontextDropdownOpened,\n\t\tisInputActive,\n\t\texactMatch,\n\t\tariaLiveText,\n\t\tinputRef,\n\t\tproperties: {\n\t\t\tplaceholder,\n\t\t\tnowAssistPlaceholder,\n\t\t\tplacement,\n\t\t\tnowId,\n\t\t\tsearchContexts,\n\t\t\tselectedSearchContext,\n\t\t\tisGlobal,\n\t\t\twindowSize,\n\t\t\tcanAnimate,\n\t\t\tenableExactMatch,\n\t\t\texactMatchRegex,\n\t\t\tisNowAssistEnabled,\n\t\t\tdisableHref\n\t\t}\n\t} = state;\n\n\tconst inputAriaLabel = isNowAssistEnabled\n\t\t? nowAssistPlaceholder || NASS_INPUT_PLACEHOLDER\n\t\t: !isEmpty(placeholder)\n\t\t? placeholder\n\t\t: DEFAULT_PLACEHODLER;\n\n\tconst hasSuggestions = data && data.length > 0;\n\t/*\n\tThe state of fetching is set to false once the suggestion fetch i.e data is completed.\n\tRefer suggestionEffects.js\n\t*/\n\tconst showEmptyState = isGlobal && !fetching ? !hasSuggestions : false;\n\n\tconst enablePopover = isGlobal\n\t\t? showPopover\n\t\t: showPopover &&\n\t\t  (hasSuggestions || (exactMatch && !isEmpty(exactMatch.exactMatchData)));\n\tconst loadingState = isGlobal && enablePopover && fetching;\n\n\tif (searchPanelOpened) {\n\t\treturn (\n\t\t\t<div role=\"search\" className=\"searchcombobox-mobile-input-wrapper\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"search-combobox search-combobox--mobile -global\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\taria-controls={`${nowId}-search-popover`}\n\t\t\t\t\taria-expanded={showPopover ? \"true\" : \"false\"}\n\t\t\t\t>\n\t\t\t\t\t<MobileInput\n\t\t\t\t\t\thasFocus={inputHasFocus}\n\t\t\t\t\t\tshowPopover={showPopover}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tnowAssistPlaceholder={nowAssistPlaceholder}\n\t\t\t\t\t\tterm={term}\n\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\thasSuggestions={hasSuggestions}\n\t\t\t\t\t\tnowId={nowId}\n\t\t\t\t\t\tsearchContexts={searchContexts}\n\t\t\t\t\t\tselectedSearchContext={selectedSearchContext}\n\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\tcontextDropdownOpened={contextDropdownOpened}\n\t\t\t\t\t\twindowSize={windowSize}\n\t\t\t\t\t\tplacement={placement}\n\t\t\t\t\t\tisActive={isInputActive}\n\t\t\t\t\t\tcanAnimate={canAnimate}\n\t\t\t\t\t\texactMatchRegex={exactMatchRegex}\n\t\t\t\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\t\t\t\tinputRef={inputRef}\n\t\t\t\t\t/>\n\t\t\t\t\t{enablePopover ? (\n\t\t\t\t\t\t<Popover\n\t\t\t\t\t\t\tactiveRowIndex={activeRowIndex}\n\t\t\t\t\t\t\tdata={data}\n\t\t\t\t\t\t\tterm={term}\n\t\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\t\tnowId={nowId}\n\t\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\t\tshowEmptyState={showEmptyState}\n\t\t\t\t\t\t\tloadingState={loadingState}\n\t\t\t\t\t\t\texactMatch={exactMatch}\n\t\t\t\t\t\t\tenableExactMatch={enableExactMatch}\n\t\t\t\t\t\t\tupdateState={updateState}\n\t\t\t\t\t\t\tariaLiveText={ariaLiveText}\n\t\t\t\t\t\t\tcontextDropdownOpened={contextDropdownOpened}\n\t\t\t\t\t\t\tisInputActive={isInputActive}\n\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div role=\"search\">\n\t\t\t{placement === PLACEMENT.HEADER ? (\n\t\t\t\t<MobileStartViewInHeader dispatch={dispatch} isGlobal={isGlobal} />\n\t\t\t) : (\n\t\t\t\t<MobileStartViewInPage\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\tinputAriaLabel={inputAriaLabel}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import { HIDE_SEARCH_PANEL, HIDE_POPOVER } from \"../actions\";\n\nexport const handleMobileCancel = ({ dispatch }) => {\n\tdispatch(HIDE_SEARCH_PANEL);\n\tdispatch(HIDE_POPOVER);\n};\n","import { MOBILE_CANCEL_BUTTON_CLICKED } from \"../actions\";\n\nimport { handleMobileCancel } from \"../effects\";\n\nimport baseActionHandlers from \"../../common/actionHandlers\";\n\nconst mobileActionHandlers = {\n\t...baseActionHandlers,\n\t[MOBILE_CANCEL_BUTTON_CLICKED]: {\n\t\teffect: handleMobileCancel,\n\t\tstopPropagation: true\n\t}\n};\n\nexport default mobileActionHandlers;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport keyBindingBehavior from \"@servicenow/behavior-key-binding\";\nimport rtlBehavior from \"@servicenow/behavior-rtl\";\nimport { t } from \"sn-translate\";\nimport style from \"./index.scss\";\nimport view from \"./view/Combobox\";\nimport actionHandlers from \"./actionHandlers\";\nimport {\n\tARROW_DOWN_PRESSED,\n\tARROW_UP_PRESSED,\n\tARROW_LEFT_PRESSED,\n\tARROW_RIGHT_PRESSED,\n\tHIDE_POPOVER\n} from \"./actions\";\nimport { enterKeyHandler } from \"../common/effects/inputEffects\";\n\nimport truncationBehavior from \"@servicenow/behavior-truncation\";\nimport tooltipBehavior from \"@servicenow/behavior-tooltip\";\n\ncreateCustomElement(\"sn-search-combobox-mobile\", {\n\trenderer: { type: snabbdom },\n\tshadowRootOptions: { mode: \"open\", delegatesFocus: true },\n\tstyles: style,\n\tview,\n\tactionHandlers,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: keyBindingBehavior,\n\t\t\toptions: {\n\t\t\t\tkeyBindings: {\n\t\t\t\t\tpressArrowUp: [\"ArrowUp\"],\n\t\t\t\t\tpressArrowDown: [\"ArrowDown\"],\n\t\t\t\t\tpressArrowLeft: [\"ArrowLeft\"],\n\t\t\t\t\tpressArrowRight: [\"ArrowRight\"],\n\t\t\t\t\tpressEscape: [\"Escape\"],\n\t\t\t\t\tpressEnter: [\"Enter\"]\n\t\t\t\t},\n\t\t\t\thandlers: {\n\t\t\t\t\tpressArrowUp(host, event, dispatch) {\n\t\t\t\t\t\tevent.preventDefault(); // prevent scrolling up\n\t\t\t\t\t\tdispatch(ARROW_UP_PRESSED, { host });\n\t\t\t\t\t},\n\t\t\t\t\tpressArrowDown(host, event, dispatch) {\n\t\t\t\t\t\tevent.preventDefault(); // prevent scrolling down\n\t\t\t\t\t\tdispatch(ARROW_DOWN_PRESSED, { host });\n\t\t\t\t\t},\n\t\t\t\t\tpressArrowLeft(host, event, dispatch) {\n\t\t\t\t\t\tdispatch(ARROW_LEFT_PRESSED, { host });\n\t\t\t\t\t},\n\t\t\t\t\tpressArrowRight(host, event, dispatch) {\n\t\t\t\t\t\tdispatch(ARROW_RIGHT_PRESSED, { host });\n\t\t\t\t\t},\n\t\t\t\t\tpressEscape(host, event, dispatch) {\n\t\t\t\t\t\tdispatch(HIDE_POPOVER);\n\t\t\t\t\t},\n\t\t\t\t\tpressEnter: enterKeyHandler\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ behavior: rtlBehavior },\n\t\ttruncationBehavior,\n\t\ttooltipBehavior\n\t],\n\tinitialState: {\n\t\tterm: \"\",\n\t\tactiveRowIndex: -1,\n\t\tactiveColumnIndex: 0,\n\t\tshowPopover: false,\n\t\tdata: [],\n\t\twidth: 0,\n\t\tinputHasFocus: false,\n\t\tsearchPanelOpened: false,\n\t\tcontextDropdownOpened: false,\n\t\tisInputActive: false,\n\t\texactMatch: {},\n\t\tqueueExactMatchEvent: false,\n\t\tupdateAriaLiveTextSource: \"\",\n\t\tariaLiveText: \"\",\n\t\tinputRef: null,\n\t\tfetchExactMatchConfigMetdata: {\n\t\t\tsearchContextConfigId: null,\n\t\t\tisPending: false\n\t\t},\n\t\tqueuedExactMatchFetchData: null\n\t},\n\tproperties: {\n\t\tplaceholder: { default: t(\"Search for people, programs, and more\") },\n\t\tsearchTerm: { default: \"\" },\n\t\tsearchContextConfigId: { default: \"\" },\n\t\tplacement: { default: \"body\" },\n\t\tdisableAutocomplete: { default: false },\n\t\tselectedSearchContext: { default: {} },\n\t\tsearchContexts: { default: [] },\n\t\tisGlobal: { default: false },\n\t\twindowSize: { default: \"expanded\" },\n\t\tcanAnimate: { default: false },\n\t\tenableExactMatch: { default: true },\n\t\texactMatchRegex: { default: \"\" },\n\t\tadditionalContext: { default: \"{}\" },\n\t\tisNowAssistEnabled: { default: false },\n\t\tnowAssistPlaceholder: { default: \"\" },\n\t\tdisableHref: { default: true }\n\t}\n});\n","import \"./sn-search-combobox-desktop\";\nimport \"./sn-search-combobox-mobile\";\nimport { SIZE, WINDOW_SIZE } from \"./common/constants\";\n\nconst view = ({ properties }) => {\n\tconst {\n\t\tplaceholder,\n\t\tnowAssistPlaceholder,\n\t\tsearchTerm,\n\t\tsearchContextConfigId,\n\t\tplacement,\n\t\tdisableAutocomplete,\n\t\tsize,\n\t\tselectedSearchContext,\n\t\tsearchContexts,\n\t\tisGlobal,\n\t\twindowSize,\n\t\tcanAnimate,\n\t\tenableExactMatch,\n\t\texactMatchRegex,\n\t\tisNowAssistEnabled,\n\t\taiAssistant,\n\t\tsearchFromChat,\n\t\tshowUtterances,\n\t\tutterancePlacement,\n\t\tdisplayOnboardingPopover,\n\t\tonboardingDismissed,\n\t\tadditionalContext,\n\t\tisAIELEnabled,\n\t\tenableMultiLineInput,\n\t\tisFullPageEnabled,\n\t\tdisableHref\n\t} = properties;\n\n\tconst isMobileView = size === SIZE.SMALL || windowSize === WINDOW_SIZE.MOBILE;\n\tconst searchComboboxVariant = isMobileView ? (\n\t\t<sn-search-combobox-mobile\n\t\t\tplaceholder={placeholder}\n\t\t\tnowAssistPlaceholder={nowAssistPlaceholder}\n\t\t\tsearchTerm={searchTerm}\n\t\t\tsearchContextConfigId={searchContextConfigId}\n\t\t\tplacement={placement}\n\t\t\tdisableAutocomplete={disableAutocomplete}\n\t\t\tselectedSearchContext={selectedSearchContext}\n\t\t\tsearchContexts={searchContexts}\n\t\t\tisGlobal={isGlobal}\n\t\t\twindowSize={windowSize}\n\t\t\tcanAnimate={canAnimate}\n\t\t\tenableExactMatch={enableExactMatch}\n\t\t\texactMatchRegex={exactMatchRegex}\n\t\t\tisNowAssistEnabled={isNowAssistEnabled}\n\t\t\tadditionalContext={additionalContext}\n\t\t\tdisableHref={disableHref}\n\t\t/>\n\t) : (\n\t\t<sn-search-combobox-desktop\n\t\t\tplaceholder={placeholder}\n\t\t\tnowAssistPlaceholder={nowAssistPlaceholder}\n\t\t\tsearchTerm={searchTerm}\n\t\t\tsearchContextConfigId={searchContextConfigId}\n\t\t\tplacement={placement}\n\t\t\tdisableAutocomplete={disableAutocomplete}\n\t\t\tselectedSearchContext={selectedSearchContext}\n\t\t\tsearchContexts={searchContexts}\n\t\t\tisGlobal={isGlobal}\n\t\t\twindowSize={windowSize}\n\t\t\tcanAnimate={canAnimate}\n\t\t\tenableExactMatch={enableExactMatch}\n\t\t\texactMatchRegex={exactMatchRegex}\n\t\t\tisNowAssistEnabled={isGlobal ? isAIELEnabled : isNowAssistEnabled}\n\t\t\taiAssistant={aiAssistant}\n\t\t\tsearchFromChat={searchFromChat}\n\t\t\tshowUtterances={showUtterances}\n\t\t\tutterancePlacement={utterancePlacement}\n\t\t\tdisplayOnboardingPopover={displayOnboardingPopover}\n\t\t\tonboardingDismissed={onboardingDismissed}\n\t\t\tadditionalContext={additionalContext}\n\t\t\tenableMultiLineInput={enableMultiLineInput}\n\t\t\tisFullPageEnabled={isFullPageEnabled}\n\t\t\tdisableHref={disableHref}\n\t\t/>\n\t);\n\treturn searchComboboxVariant;\n};\n\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport { isEmpty } from \"lodash\";\nimport { t } from \"sn-translate\";\nimport view from \"./view\";\nimport { SIZE, WINDOW_SIZE, AI_ASSISTANT } from \"./common/constants\";\nimport {\n\tSEARCH_EXECUTED,\n\tNAVIGATION_EXECUTED,\n\tCONTEXT_CHANGED,\n\tSEARCH_CLEARED,\n\tSEARCH_EXECUTED_INTERNAL,\n\tNAVIGATION_EXECUTED_INTERNAL,\n\tCONTEXT_CHANGED_INTERNAL,\n\tSEARCH_CLEARED_INTERNAL\n} from \"./common/actions\";\n\nconst searchExecutedEffect = ({ action: { payload }, dispatch }) => {\n\tdispatch(SEARCH_EXECUTED, payload);\n};\n\nconst navigationExecutedEffect = ({ action: { payload }, dispatch }) => {\n\tdispatch(NAVIGATION_EXECUTED, payload);\n};\n\nconst contextChangedEffect = ({ action: { payload }, dispatch }) => {\n\tdispatch(CONTEXT_CHANGED, payload);\n};\n\nconst searchClearedEffect = ({ action: { payload }, dispatch }) => {\n\tdispatch(SEARCH_CLEARED, payload);\n};\n\n/**\n * Field for entering and executing user search queries that displays suggested queries and results.\n *\n * ```jsx\n * <sn-search-combobox\n *      search-context-config-id=\"0ce0997f7320001052c7d5fdbdf6a746\"\n *      placement=\"body\"\n *      size=\"lg\"\n * />\n * ```\n *\n * @seismicElement sn-search-combobox\n * @summary Gives users the ability to search a portal or workspace.\n */\ncreateCustomElement(\"sn-search-combobox\", {\n\trenderer: { type: snabbdom },\n\tshadowRootOptions: { mode: \"open\", delegatesFocus: true },\n\tview,\n\tproperties: {\n\t\t/**\n\t\t * Placeholder text to display in the input box before a user enters a value.\n\t\t * @type {string}\n\t\t */\n\t\tplaceholder: {\n\t\t\tdefault: t(\"Search\"),\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Placeholder text to display in the input box before a user enters a value when AI is enabled.\n\t\t * @type {string}\n\t\t */\n\t\tnowAssistPlaceholder: {\n\t\t\tdefault: t(\"Ask AI for help or search\"),\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Initial search term for the search input.\n\t\t * @type {string}\n\t\t */\n\t\tsearchTerm: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sys ID of the search context configuration from the sys_search_context_config table.\n\t\t * This configuration provides search and autocomplete configuration metadata.\n\t\t * @type {string}\n\t\t */\n\t\tsearchContextConfigId: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Determines where the search input is rendered\n\t\t * and defines the input's visual style.\n\t\t * @type {('header'|'body'|'fullpage-header'|'fullpage-body|'dynamic-landing')}\n\t\t */\n\t\tplacement: {\n\t\t\tdefault: \"body\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * When true, disables autocomplete capability.\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableAutocomplete: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * When true, enables exact match functionality.\n\t\t * @type {boolean}\n\t\t */\n\t\tenableExactMatch: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The regular expression that queries must match before a request is sent to the exact match API.\n\t\t * @type {string}\n\t\t */\n\t\texactMatchRegex: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the component is being rendered on mobile or desktop.\n\t\t * Options include:\n\t\t * - 'sm': Set for the mobile version.\n\t\t * - 'lg': Set for the desktop version.\n\t\t * @type {('sm'|'lg')}\n\t\t */\n\t\tsize: {\n\t\t\tdefault: SIZE.LARGE,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"lg\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Selected search context\n\t\t * @type {string}\n\t\t */\n\t\tselectedSearchContext: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tid: { type: \"string\" },\n\t\t\t\t\tlabel: { type: \"string\" },\n\t\t\t\t\tcontext: { type: \"string\" },\n\t\t\t\t\troute: { type: \"string\" },\n\t\t\t\t\tsearchDataConfigId: { type: \"string\" },\n\t\t\t\t\tsearchViewConfigId: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Search contexts\n\t\t * @type {array}\n\t\t */\n\t\tsearchContexts: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reads windowSize property from polaris header to render search input in either desktop expanded, collapsed or mobile view\n\t\t * @type {('expanded'|'collapsed'|'mobile')}\n\t\t */\n\t\twindowSize: {\n\t\t\tdefault: WINDOW_SIZE.EXPANDED,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"expanded\", \"collapsed\", \"mobile\"]\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Computed property for component to know if it's being rendered in platform global search.\n\t\t */\n\t\tisGlobal: {\n\t\t\tcomputed({ properties: { selectedSearchContext, searchContexts } }) {\n\t\t\t\treturn !isEmpty(selectedSearchContext) && !isEmpty(searchContexts);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Boolean property for enabling animations.\n\t\t * @type {boolean}\n\t\t */\n\t\tcanAnimate: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Boolean property to know if now assist is enabled\n\t\t * @type {boolean}\n\t\t */\n\t\tisNowAssistEnabled: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Boolean property to know if full page is enabled\n\t\t * @type {boolean}\n\t\t */\n\t\tisFullPageEnabled: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Customizable AI Assistant name for onboarding popover\n\t\t * @type {string}\n\t\t */\n\t\taiAssistant: {\n\t\t\tdefault: AI_ASSISTANT,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the full-page view that is displayed when the \"View All\" link\n\t\t * in the right panel of the NASS VA component is clicked.\n\t\t */\n\t\tsearchFromChat: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies whether suggested ServiceNow Otto utterances should be shown\n\t\t * if they are available from the suggestions api.\n\t\t */\n\t\tshowUtterances: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Determines the visual style of the utterance suggestions.\n\t\t * @type {('header'|'body')}\n\t\t */\n\t\tutterancePlacement: {\n\t\t\tdefault: \"header\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies whether onboarding popover should be displayed\n\t\t * @type {boolean}\n\t\t */\n\t\tdisplayOnboardingPopover: {\n\t\t\tcomputed({\n\t\t\t\tproperties: {\n\t\t\t\t\tshowUtterances,\n\t\t\t\t\tisAIELEnabled,\n\t\t\t\t\tisNowAssistEnabled,\n\t\t\t\t\tisFullPageEnabled\n\t\t\t\t}\n\t\t\t}) {\n\t\t\t\treturn (\n\t\t\t\t\tshowUtterances &&\n\t\t\t\t\t(isAIELEnabled || isNowAssistEnabled || isFullPageEnabled)\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Optional pre-loaded User Preference for onboarding. If unspecified,\n\t\t * the preference will be retrieved. Retrieval databroker will not work\n\t\t * for snc_external users.\n\t\t * @type {boolean}\n\t\t */\n\t\tonboardingDismissed: {\n\t\t\tdefault: undefined,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Optional stringified JSON object to pass additional context when retrieving suggestions related to ServiceNow Otto,\n\t\t * such as Suggested Utterances.\n\t\t * @type {string}\n\t\t */\n\t\tadditionalContext: {\n\t\t\tdefault: \"{}\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Boolean property to know if AIELEnabled is enabled\n\t\t * @type {boolean}\n\t\t */\n\t\tisAIELEnabled: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Boolean property to know if textarea should be displayed\n\t\t */\n\t\tenableMultiLineInput: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Boolean property to know if the new href functionality for search suggestions should be disabled\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t}\n\t},\n\tactionHandlers: {\n\t\t[SEARCH_EXECUTED_INTERNAL]: {\n\t\t\teffect: searchExecutedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[NAVIGATION_EXECUTED_INTERNAL]: {\n\t\t\teffect: navigationExecutedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[CONTEXT_CHANGED_INTERNAL]: {\n\t\t\teffect: contextChangedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[SEARCH_CLEARED_INTERNAL]: {\n\t\t\teffect: searchClearedEffect,\n\t\t\tstopPropagation: true\n\t\t}\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when search executes. Payload contains the search term, `searchContextConfigId` and `selectedSearchContext` value.\n\t\t * @type {{searchTerm: string, searchContextConfigId: string, selectedSearchContext: object}}\n\t\t */\n\t\t\"SN_SEARCH_COMBOBOX#SEARCH_EXECUTED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tsearchTerm: { type: \"string\" },\n\t\t\t\t\tsearchContextConfigId: { type: \"string\" },\n\t\t\t\t\tselectedSearchContext: { type: \"object\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user clicks on a navigable item.\n\t\t * Instead of routing to a search page, this action routes to a content page.\n\t\t * @type {{table: string, sysId: string, url: string}}\n\t\t */\n\t\t\"SN_SEARCH_COMBOBOX#NAVIGATION_EXECUTED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\ttable: { type: \"string\" },\n\t\t\t\t\tsysId: { type: \"string\" },\n\t\t\t\t\turl: { type: \"string\" },\n\t\t\t\t\trecordClassName: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when a the search context is changed. The payload contains the selected search context information.\n\t\t * @type {{id: string, label: string, context: string, route: string, searchDataConfigId: string}}\n\t\t */\n\t\t\"SN_SEARCH_COMBOBOX#CONTEXT_CHANGED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tid: { type: \"string\" },\n\t\t\t\t\tlabel: { type: \"string\" },\n\t\t\t\t\tcontext: { type: \"string\" },\n\t\t\t\t\troute: { type: \"string\" },\n\t\t\t\t\tsearchDataConfigId: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when a now assist utterance is clicked.\n\t\t * @type {{utterance: string}}\n\t\t */\n\t\t\"SN_SEARCH_COMBOBOX#UTTERANCE_CLICKED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tutterance: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when the search query is cleared.\n\t\t */\n\t\t\"SN_SEARCH_COMBOBOX#SEARCH_CLEARED\": {}\n\t}\n});\n\n// Override focus() to delegate through both shadow roots since the framework\n// strips delegatesFocus from shadowRootOptions before passing to attachShadow().\ncustomElements.get(\"sn-search-combobox\").prototype.focus = function(options) {\n\tconst sub = this.shadowRoot?.querySelector(\n\t\t\"sn-search-combobox-desktop, sn-search-combobox-mobile\"\n\t);\n\tconst input = sub?.shadowRoot?.querySelector(\"input, textarea\");\n\tif (input) {\n\t\tinput.focus(options);\n\t} else {\n\t\tHTMLElement.prototype.focus.call(this, options);\n\t}\n};\n","export const itemSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\tid: {type: ['string', 'number']},\n\t\tlabel: {type: 'string'},\n\t\ticon: {type: 'string'},\n\t\tcount: {type: 'number'},\n\t\tpresence: {type: 'string', enum: ['available', 'away', 'busy', 'offline']},\n\t\tdisabled: {type: 'boolean'},\n\t\tariaLabel: {type: 'string'},\n\t\ttooltipContent: {type: 'string'},\n\t},\n\trequired: ['id', 'label'],\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\tmeasureText,\n\tfilterAriaAttributes,\n\tisDirectionalKey,\n\tisNextKey,\n\tisPreviousKey,\n\tgetShadowRootHost,\n} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nconst {COMPONENT_CONNECTED} = actionTypes;\nimport styles from './_now-tabs.scss';\nimport resizeBehavior from '@servicenow/behavior-resize';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport '@servicenow/now-dropdown';\nimport '@servicenow/now-icon';\nimport {localizePresence} from '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport {t, appendTranslations} from 'sn-translate';\nimport sum from 'lodash/sum';\nimport {itemSchema} from './schemas/tabs-schema';\nimport {configAriaSchema} from '@servicenow/library-schemas';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\n\nif (process.env.NODE_ENV === 'development') {\n\t// rely on existing key on the instance, add it to local env\n\tappendTranslations({\n\t\tMore_menu: 'More',\n\t});\n}\n\nlet measureTxt;\nlet measureTxtSelected;\nlet PADDING;\nlet HIDE_PADDING;\n\nconst ICON_WIDTH = {\n\tsm: 12,\n\tmd: 16,\n};\n\nconst getPadding = (hidePadding) => {\n\treturn hidePadding ? HIDE_PADDING : PADDING * 2; //2X for padding-inline-start and end\n};\n\nconst measureTabItems = (\n\titems,\n\tfixedWidth,\n\thideLabel,\n\tmaxWidth,\n\tICON_SIZE,\n\tsize,\n\thidePadding,\n\tselectedId,\n) => {\n\tif (fixedWidth) {\n\t\treturn Array(items.length).fill(hideLabel ? 48 : 100);\n\t}\n\treturn items.map((item) => {\n\t\tconst measure = item.id === selectedId ? measureTxtSelected : measureTxt;\n\t\tlet width = getPadding(hidePadding);\n\t\twidth += item.icon || item.presence ? ICON_SIZE : 0;\n\t\twidth += hideLabel ? 0 : measure(item.label);\n\t\twidth += item.count ? measure(` (${item.count})`) : 0;\n\t\treturn Math.min(maxWidth, width);\n\t});\n};\n\nconst measureTabs = (\n\twidthAvailable,\n\ttheme,\n\titems,\n\thideLabel,\n\tfixedWidth,\n\tselectedId,\n\tmaxWidth,\n\tsize,\n\thidePadding,\n) => {\n\t// only proceed if resize behavior has provided us total width available\n\tif (!widthAvailable || !items || !items.length) {\n\t\treturn {visibleItems: items, overflowItems: []};\n\t}\n\n\tconst ICON_SIZE = hideLabel\n\t\t? ICON_WIDTH[size]\n\t\t: ICON_WIDTH[size] + theme.global.space.xxs.px;\n\n\t// create array with width required for each tab\n\tconst tabWidths = measureTabItems(\n\t\titems,\n\t\tfixedWidth,\n\t\thideLabel,\n\t\tmaxWidth,\n\t\tICON_SIZE,\n\t\tsize,\n\t\thidePadding,\n\t\tselectedId,\n\t);\n\n\tlet widthRequired = sum(tabWidths);\n\n\tlet i = items.length;\n\tconst overflowMenuWidth = hideLabel\n\t\t? getPadding(hidePadding) + ICON_SIZE\n\t\t: getPadding(hidePadding) + measureTxt(t('More_menu')) + ICON_SIZE;\n\tconst selectedItemIndex = items.findIndex((item) => item.id === selectedId);\n\tconst selectedItemWidth = tabWidths[selectedItemIndex];\n\n\twhile (widthRequired > widthAvailable && i >= 1) {\n\t\ti--;\n\t\tif (selectedItemIndex >= i) {\n\t\t\twidthRequired =\n\t\t\t\toverflowMenuWidth + sum(tabWidths.slice(0, i)) + selectedItemWidth;\n\t\t} else {\n\t\t\twidthRequired = overflowMenuWidth + sum(tabWidths.slice(0, i));\n\t\t}\n\t}\n\tif (selectedItemIndex >= i) {\n\t\treturn {\n\t\t\tvisibleItems: [...items.slice(0, i), items[selectedItemIndex]],\n\t\t\toverflowItems: [\n\t\t\t\t...items.slice(i, selectedItemIndex),\n\t\t\t\t...items.slice(selectedItemIndex + 1),\n\t\t\t],\n\t\t};\n\t}\n\treturn {\n\t\tvisibleItems: items.slice(0, i),\n\t\toverflowItems: items.slice(i),\n\t};\n};\n\nconst selectTab = (host, index, properties, dispatch, updateState) => {\n\tconst {items} = properties;\n\tconst newSelectedItem = items[index];\n\n\tlet tabs = host.shadowRoot.querySelectorAll('button.now-tab');\n\tif (index >= tabs.length) return;\n\ttabs[index].focus();\n\tupdateState({\n\t\tpath: 'focusedItem',\n\t\toperation: 'set',\n\t\tvalue: newSelectedItem,\n\t});\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_TABS#SELECTED_ITEM_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: newSelectedItem.id,\n\t\t\t\titem: newSelectedItem,\n\t\t\t},\n\t\t};\n\t});\n};\n\nconst updateFocusedItem = (updateState, value) => {\n\tupdateState({\n\t\tpath: 'focusedItem',\n\t\toperation: 'set',\n\t\tvalue: value,\n\t});\n\n\tupdateState({nextFocusNotInTabs: false});\n};\n\nconst getNewItemIndex = (state, selectedItem, items, tabs, isNext) => {\n\tconst currentItem = state.focusedItem?.id || selectedItem;\n\n\tconst currentIndex = items.findIndex((item) => item.id === currentItem);\n\n\tlet newIndex;\n\n\tif (isNext) {\n\t\tnewIndex = currentIndex + 1 >= tabs.length ? 0 : currentIndex + 1;\n\t} else {\n\t\tnewIndex =\n\t\t\tcurrentIndex === 0\n\t\t\t\t? tabs.length - 1\n\t\t\t\t: currentIndex >= tabs.length\n\t\t\t\t\t? tabs.length - 2\n\t\t\t\t\t: currentIndex - 1;\n\t}\n\n\treturn newIndex;\n};\n\nconst handleFocusManagement = (\n\titems,\n\tnewIndex,\n\ttabs,\n\thost,\n\tproperties,\n\tupdateState,\n\tdispatch,\n) => {\n\tconst newItem = items[newIndex];\n\tif (newItem.disabled && newIndex < tabs.length) {\n\t\ttabs[newIndex].focus();\n\t\tupdateFocusedItem(updateState, items[newIndex]);\n\t} else {\n\t\tselectTab(host, newIndex, properties, dispatch, updateState);\n\t}\n};\n\nconst getDropdownOpenedOrFocused = (host) => {\n\tconst dropdown = host.shadowRoot.querySelector('now-dropdown');\n\tconst active = host.shadowRoot.activeElement;\n\treturn dropdown && (dropdown.opened || active === dropdown);\n};\n\nconst renderTabIcon = ({item, hideLabel, selected, size}) => {\n\tif (item.icon) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclass={{'now-tab-icon': true, 'now-m-inline-end--xxs': !hideLabel}}\n\t\t\t\ticon={\n\t\t\t\t\tselected\n\t\t\t\t\t\t? item.icon.replace('outline', 'fill')\n\t\t\t\t\t\t: item.icon.replace('fill', 'outline')\n\t\t\t\t}\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t);\n\t}\n\tif (item.presence) {\n\t\treturn (\n\t\t\t<now-icon-presence\n\t\t\t\tclassName=\"now-tab-presence now-m-inline-end--xxs\"\n\t\t\t\tpresence={item.presence}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst renderTab = ({\n\tkey,\n\titem,\n\thideLabel,\n\tselected,\n\tfixedWidth,\n\tmaxWidth,\n\tdisabled,\n\tsize,\n\tdisabledTabIsFocused,\n\tdispatch,\n\tupdateState,\n}) => {\n\tconst count = item.count ? `\\u00A0(${item.count})` : '';\n\tconst ariaCount = item.count ? `, ${item.count}` : '';\n\tconst presence = item.presence ? `, ${localizePresence(item.presence)}` : '';\n\tconst ariaLabel = (item.ariaLabel || item.label) + presence + ariaCount;\n\tconst label = hideLabel ? undefined : item.label;\n\n\tconst renderCount = (count) => {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t&#160;(<span className=\"now-tab-count\">{count}</span>)\n\t\t\t</Fragment>\n\t\t);\n\t};\n\n\tconst handleDisabledFocusIn = (e) => {\n\t\t// change the tab index (to -1)\n\t\tupdateState({disabledTabIsFocused: true});\n\n\t\thandleTooltipShow(e);\n\t};\n\n\tconst handleDisabledFocusOut = (e) => {\n\t\t// change the tab index (to 0)\n\t\tupdateState({disabledTabIsFocused: false});\n\n\t\thandleTooltipHide(e);\n\t};\n\n\tconst handleTooltipShow = (e) => {\n\t\tconst labelSpan = e.target.querySelector('.now-tab-label');\n\t\tconst isOverset = labelSpan.scrollWidth > labelSpan.clientWidth;\n\n\t\tif (hideLabel || isOverset) {\n\t\t\treturn dispatch(TOOLTIP_SHOW, {target: e.target});\n\t\t}\n\t};\n\n\tconst handleTooltipHide = (e) => {\n\t\tconst labelSpan = e.target.querySelector('.now-tab-label');\n\t\tconst isOverset = labelSpan.scrollWidth > labelSpan.clientWidth;\n\n\t\tif (hideLabel || isOverset) {\n\t\t\treturn dispatch(TOOLTIP_HIDE, {target: e.target});\n\t\t}\n\t};\n\n\tconst handleClick = () => {\n\t\tupdateFocusedItem(updateState, item);\n\t\tif (!selected && !disabled) {\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_TABS#SELECTED_ITEM_SET',\n\t\t\t\t\tpayload: {value: key, item},\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n\n\treturn (\n\t\t<button\n\t\t\tkey={key}\n\t\t\tdata-itemid={key}\n\t\t\tclass={{\n\t\t\t\t'now-tab': true,\n\t\t\t\t'is-selected': selected,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'fixed-width': fixedWidth,\n\t\t\t}}\n\t\t\tstyle={{\n\t\t\t\t'max-inline-size': fixedWidth ? undefined : maxWidth + 'px',\n\t\t\t}}\n\t\t\trole=\"tab\"\n\t\t\ttabIndex={selected && !disabledTabIsFocused ? undefined : '-1'}\n\t\t\taria-controls={selected ? 'tab-panel' : undefined}\n\t\t\taria-disabled={disabled ? 'true' : undefined}\n\t\t\taria-selected={selected ? 'true' : 'false'}\n\t\t\taria-label={ariaLabel}\n\t\t\ton-click={handleClick}\n\t\t\tdata-tooltip={item.tooltipContent || item.label + count}\n\t\t\tdata-ariadescribedby={item.label}\n\t\t\ton-mouseenter={handleTooltipShow}\n\t\t\ton-focusin={disabled ? handleDisabledFocusIn : handleTooltipShow}\n\t\t\ton-mouseleave={handleTooltipHide}\n\t\t\ton-focusout={disabled ? handleDisabledFocusOut : handleTooltipHide}\n\t\t>\n\t\t\t{renderTabIcon({item, hideLabel, selected, size})}\n\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t<span className=\"now-align\">\n\t\t\t\t\t<span className=\"now-tab-label\">{label}</span>\n\t\t\t\t\t{count ? renderCount(item.count) : undefined}\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t</button>\n\t);\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {\n\t\titems,\n\t\tselectedItem,\n\t\thideLabel,\n\t\tfixedWidth,\n\t\tmaxWidth,\n\t\tconfigAria,\n\t\tsize,\n\t\thidePadding,\n\t\thideDivider,\n\t\tnowId,\n\t} = state.properties;\n\n\tconst {theme} = state.behaviors;\n\tconst {disabledTabIsFocused} = state;\n\tPADDING = size === 'sm' ? theme.global.space.sm.px : theme.global.space.lg.px; // md size uses lg in scss, AND use px in js\n\tHIDE_PADDING = theme.global.space.xl.px;\n\tmeasureTxt = measureText({\n\t\ttxtTransform: theme['--now-tabs--text-transform'],\n\t\tfontStyle: theme['--now-tabs--font-style'],\n\t\tfontFamily: theme['--now-tabs--font-family'],\n\t\tfontSize: theme['--now-navigation_label--font-size--' + size]\n\t\t\t? `${theme['--now-navigation_label--font-size--' + size].px}px`\n\t\t\t: size === 'sm'\n\t\t\t\t? '12px'\n\t\t\t\t: '16px',\n\t\tfontWeight: theme['--now-tabs--font-weight'],\n\t});\n\n\tmeasureTxtSelected = measureText({\n\t\ttxtTransform: theme['--now-tabs--text-transform--selected'],\n\t\tfontStyle: theme['--now-tabs--font-style--selected'],\n\t\tfontFamily: theme['--now-tabs--font-family'],\n\t\tfontSize: theme['--now-navigation_label--font-size--' + size]\n\t\t\t? `${theme['--now-navigation_label--font-size--' + size].px}px`\n\t\t\t: size === 'sm'\n\t\t\t\t? '12px'\n\t\t\t\t: '16px',\n\t\tfontWeight: theme['--now-tabs--font-weight--selected'],\n\t});\n\n\tlet {visibleItems, overflowItems} = measureTabs(\n\t\tstate.behaviors.resize.size.width,\n\t\tstate.behaviors.theme,\n\t\titems,\n\t\thideLabel,\n\t\tfixedWidth,\n\t\tselectedItem,\n\t\tmaxWidth,\n\t\tsize,\n\t\thidePadding,\n\t);\n\n\tconst onFocusIn = async () => {\n\t\tupdateState({nextFocusNotInTabs: false});\n\t};\n\n\tconst onFocusOut = async (e) => {\n\t\tconst host = getShadowRootHost(e.target);\n\t\tconst relatedTargetHost = e.relatedTarget\n\t\t\t? getShadowRootHost(e.relatedTarget)\n\t\t\t: null;\n\t\tupdateState({nextFocusNotInTabs: relatedTargetHost !== host});\n\t\tif (state.nextFocusNotInTabs || state.focusSelected) {\n\t\t\tupdateState({focusedItem: null});\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"now-tabs-container\">\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-tabs': true,\n\t\t\t\t\t'hide-divider': hideDivider,\n\t\t\t\t\t'fixed-width': fixedWidth,\n\t\t\t\t\t'icon-only': hideLabel,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t'hide-padding': hidePadding,\n\t\t\t\t}}\n\t\t\t\ton-focusin={onFocusIn}\n\t\t\t\ton-focusout={onFocusOut}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"now-tab-list\"\n\t\t\t\t\trole=\"tablist\"\n\t\t\t\t\t{...filterAriaAttributes(configAria, 'tablist')}\n\t\t\t\t>\n\t\t\t\t\t{visibleItems &&\n\t\t\t\t\t\tvisibleItems.map((item) => {\n\t\t\t\t\t\t\treturn renderTab({\n\t\t\t\t\t\t\t\tkey: item.id,\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\thideLabel,\n\n\t\t\t\t\t\t\t\tselected: selectedItem === item.id,\n\t\t\t\t\t\t\t\tfixedWidth,\n\t\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\t\tdisabled: item.disabled,\n\t\t\t\t\t\t\t\tsize,\n\t\t\t\t\t\t\t\tdisabledTabIsFocused,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t\t{overflowItems.length ? (\n\t\t\t\t\t<now-dropdown\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t'aria-label': t('More tabs'),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-tab-dropdown': true,\n\t\t\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t// use the More_menu key to ensure we have an uppercase first letter\n\t\t\t\t\t\tplaceholder={hideLabel ? undefined : t('More_menu')}\n\t\t\t\t\t\ttooltip-content={t('More tabs')}\n\t\t\t\t\t\ticon={hideLabel ? 'ellipsis-vertical-fill' : undefined}\n\t\t\t\t\t\titems={overflowItems}\n\t\t\t\t\t\thide-label={hideLabel}\n\t\t\t\t\t\thide-caret={hideLabel}\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tselect=\"none\"\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\tshow-padding={!hidePadding}\n\t\t\t\t\t\tbare\n\t\t\t\t\t\tappend-to-meta={{componentId: nowId}}\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\taria-labelledby={selectedItem}\n\t\t\t\tclassName=\"now-tab-panel\"\n\t\t\t\tid=\"tab-panel\"\n\t\t\t\trole=\"tabpanel\"\n\t\t\t>\n\t\t\t\t<slot name={selectedItem} />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * Tabs provide navigation between grouped content in a specific hierarchy.\n * They also identify a user’s specific location in the display.\n *\n * ```jsx\n * const items = [\n *  {id: 'tab1', label: 'Tab 1', icon: 'bell-outline', count: 7},\n * \t{id: 'tab2', label: 'Tab 2', icon: 'document-outline', count: 3}\n * ];\n *\n * <now-tabs items={items} hide-label fixed-width />\n * ```\n *\n * @seismicElement now-tabs\n * @summary Horizontal tab menu for navigating between tabbed content.\n */\ncreateEnhancedElement('now-tabs', {\n\tproperties: {\n\t\t/**\n\t\t * An array of objects, each with the configuration for a tab.\n\t\t * @type {TabItem[]}\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\trequired: true,\n\t\t\tschema: {type: 'array', items: itemSchema},\n\t\t},\n\t\t/**\n\t\t * ID of the selected tab item.\n\t\t * @type {(string|number)}\n\t\t */\n\t\tselectedItem: {manageable: true, schema: {type: ['string', 'number']}},\n\t\t/**\n\t\t * Set this flag to display tabs with only an icon and no label inside.\n\t\t * You should still specify a label in the `items` array, for displaying\n\t\t * in a tooltip and for representing the tab to assistive technology.\n\t\t * @type {boolean}\n\t\t */\n\t\thideLabel: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set this flag to display each tab with a uniform width, a fraction\n\t\t * of the total width taken up by the component.\n\t\t * @type {boolean}\n\t\t */\n\t\tfixedWidth: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Maximum width (as a number of pixels) for each tab element.\n\t\t * Only applies for dynamic width tabs, when `fixedWidth` is not true.\n\t\t * @type {number}\n\t\t */\n\t\tmaxWidth: {default: 240, schema: {type: 'number'}},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\t\tshowPresencePattern: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set this flag to display each tab with no left or right padding. 24px spacing will be added between tabs.\n\t\t * @type {boolean}\n\t\t */\n\t\thidePadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set this flag to hide the divider underneath the tab set.\n\t\t * @type {boolean}\n\t\t */\n\t\thideDivider: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-tabs. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'tablist' key corresponds to the element with an ARIA role of 'tablist'.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#tablist for properties\n\t\t * and accepted values.\n\t\t * @type {{ 'tablist': {'aria-*': string, role: string} }}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttablist: configAriaSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the tabs size.\n\t\t * @type {('sm'|'md')}\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * A named slot where the name corresponds to the ID of the current selectedItem.\n\t\t * Slot content for each of the steps in your items array and the panel area will\n\t\t * switch between content based on user selection.\n\t\t */\n\t\tdynamic: {},\n\t},\n\tinitialState: {\n\t\tfocusedItem: null,\n\t\tfocusSelected: false,\n\t\tdisabledTabIsFocused: false,\n\t\tnextFocusNotInTabs: true,\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: ({properties, dispatch}) => {\n\t\t\tconst {items, selectedItem} = properties;\n\t\t\tif (selectedItem || !items) return;\n\t\t\tconst enabledItems = items.filter((item) => !item.disabled);\n\t\t\tif (enabledItems.length) {\n\t\t\t\tdispatch(() => ({\n\t\t\t\t\ttype: 'NOW_TABS#SELECTED_ITEM_SET',\n\t\t\t\t\tpayload: {value: enabledItems[0].id, item: enabledItems[0]},\n\t\t\t\t}));\n\t\t\t}\n\t\t},\n\t\t'NOW_DROPDOWN#ITEM_CLICKED': ({dispatch, action, updateState, state}) => {\n\t\t\tconst nowId = state?.properties?.nowId;\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_TABS#SELECTED_ITEM_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tvalue: action.payload.item.id,\n\t\t\t\t\t\titem: action.payload.item,\n\t\t\t\t\t},\n\t\t\t\t\tshouldDispatch: nowId === componentId,\n\t\t\t\t};\n\t\t\t});\n\t\t\tupdateState({\n\t\t\t\tpath: 'focusSelected',\n\t\t\t\toperation: 'set',\n\t\t\t\tvalue: true,\n\t\t\t\tshouldRender: false,\n\t\t\t\tshouldUpdate: nowId === componentId,\n\t\t\t});\n\n\t\t\taction.stopPropagation();\n\t\t},\n\t\t'NOW_DROPDOWN#LIST_HIDDEN': ({action, host, state, updateState}) => {\n\t\t\tif (!state.focusSelected) return;\n\t\t\tconst selected = host?.shadowRoot?.querySelector(\n\t\t\t\t'button.now-tab.is-selected',\n\t\t\t);\n\t\t\tif (!selected) return;\n\t\t\tselected?.focus();\n\t\t\tupdateState({\n\t\t\t\tpath: 'focusSelected',\n\t\t\t\toperation: 'set',\n\t\t\t\tvalue: false,\n\t\t\t\tshouldRender: false,\n\t\t\t});\n\t\t\taction.stopPropagation();\n\t\t},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect: ({host, action, properties, dispatch, updateState, state}) => {\n\t\t\t\tconst {key} = action.payload.event;\n\t\t\t\tconst {items, selectedItem, dir} = properties;\n\t\t\t\tconst tabs = host.shadowRoot.querySelectorAll('button.now-tab');\n\n\t\t\t\tif (state.nextFocusNotInTabs) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (isDirectionalKey(key)) {\n\t\t\t\t\taction.preventDefault();\n\t\t\t\t\taction.stopPropagation();\n\t\t\t\t\tdispatch(TOOLTIP_HIDE, {\n\t\t\t\t\t\ttarget: host.shadowRoot.activeElement,\n\t\t\t\t\t\tdelay: 0,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (isNextKey(key, dir, false)) {\n\t\t\t\t\tif (getDropdownOpenedOrFocused(host)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst newIndex = getNewItemIndex(state, selectedItem, items, tabs, 1);\n\t\t\t\t\thandleFocusManagement(\n\t\t\t\t\t\titems,\n\t\t\t\t\t\tnewIndex,\n\t\t\t\t\t\ttabs,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tproperties,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t);\n\t\t\t\t} else if (isPreviousKey(key, dir, false)) {\n\t\t\t\t\tif (getDropdownOpenedOrFocused(host)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst newIndex = getNewItemIndex(state, selectedItem, items, tabs, 0);\n\t\t\t\t\thandleFocusManagement(\n\t\t\t\t\t\titems,\n\t\t\t\t\t\tnewIndex,\n\t\t\t\t\t\ttabs,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tproperties,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t);\n\t\t\t\t} else if (key === 'Home') {\n\t\t\t\t\thandleFocusManagement(\n\t\t\t\t\t\titems,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttabs,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tproperties,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t);\n\t\t\t\t} else if (key === 'End') {\n\t\t\t\t\thandleFocusManagement(\n\t\t\t\t\t\titems,\n\t\t\t\t\t\ttabs.length - 1,\n\t\t\t\t\t\ttabs,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tproperties,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: resizeBehavior,\n\t\t\toptions: {\n\t\t\t\tpreventRenderUntilSizeAvailable: true,\n\t\t\t\tpreventRender: {\n\t\t\t\t\theight: true,\n\t\t\t\t},\n\t\t\t\ttimer: {\n\t\t\t\t\ttype: 'debounce',\n\t\t\t\t\tleading: true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: [\n\t\t\t\t\t'--now-tabs--text-transform',\n\t\t\t\t\t'--now-tabs--font-style',\n\t\t\t\t\t'--now-tabs--font-family',\n\t\t\t\t\t'--now-tabs--font-weight',\n\t\t\t\t\t'--now-tabs--font-weight--selected',\n\t\t\t\t\t'--now-tabs--text-transform--selected',\n\t\t\t\t\t'--now-tabs--font-style--selected',\n\t\t\t\t\t'--now-navigation_label--font-size--sm',\n\t\t\t\t\t'--now-navigation_label--font-size--md',\n\t\t\t\t\t'global.space.xxs',\n\t\t\t\t\t'global.space.sm',\n\t\t\t\t\t'global.space.lg',\n\t\t\t\t\t'global.space.xl',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\tfocusBehavior,\n\t\ttooltipBehavior,\n\t],\n\tview,\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Action dispatched when a tab is selected.\n\t\t * The payload key `value` contains the `id` of the item from the `items` array that was selected by the user.\n\t\t * Payload key `item` contains the `object` of the the item selected.\n\t\t * @type {{value: (string|number), item: TabItem}}\n\t\t */\n\t\t'NOW_TABS#SELECTED_ITEM_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t\titem: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\tfilterAriaAttributes,\n\tgetActiveElement,\n\tisDirectionalKey,\n\tisNextKey,\n\tisPreviousKey,\n\tgetShadowRootHost,\n} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nconst {COMPONENT_CONNECTED} = actionTypes;\nimport styles from './_now-tabs-vertical.scss';\nimport resizeBehavior from '@servicenow/behavior-resize';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport '@servicenow/now-dropdown';\nimport '@servicenow/now-icon';\nimport {localizePresence} from '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport {t, appendTranslations} from 'sn-translate';\nimport {itemSchema} from './schemas/tabs-schema';\nimport {configAriaSchema} from '@servicenow/library-schemas';\nimport {constrainSchema} from '@servicenow/now-dropdown';\n\nif (process.env.NODE_ENV === 'development') {\n\t// rely on existing key on the instance, add it to local env\n\tappendTranslations({\n\t\tMore_menu: 'More',\n\t});\n}\n\nconst TAB_HEIGHT = {\n\tsm: 24,\n\tmd: 32,\n};\n\nconst measureTabs = (\n\theightAvailable,\n\ttheme,\n\titems,\n\tselectedId,\n\tsize,\n\tspaceBetweenItems,\n) => {\n\t// only proceed if resize behavior has provided us total height available\n\tif (!heightAvailable || !items || !items.length) {\n\t\treturn {visibleItems: items, overflowItems: []};\n\t}\n\n\tconst TAB_MARGIN =\n\t\tspaceBetweenItems === 'none'\n\t\t\t? 0\n\t\t\t: theme[`$now-global-space--${spaceBetweenItems}`].px;\n\n\tlet heightRequired =\n\t\titems.length * TAB_HEIGHT[size] + (items.length - 1) * TAB_MARGIN;\n\tlet i = items.length;\n\n\t// Hardcoded value comes from the sum of padding-block-start and padding-block-bottom for .now-tabs-vertical-container\n\tconst PADDING_BLOCK_TOTAL = 16;\n\n\t// TODO: Need to replace the hardcoded value PADDING_BLOCK_TOTAL with the padding property in Washington for STRY55240274\n\tconst heightAvailableAfterPaddingRemoved =\n\t\theightAvailable - PADDING_BLOCK_TOTAL;\n\n\tconst overflowMenuHeight = TAB_HEIGHT[size];\n\tconst selectedItemIndex = items.findIndex((item) => item.id === selectedId);\n\n\twhile (heightRequired > heightAvailableAfterPaddingRemoved && i > 1) {\n\t\ti--;\n\t\theightRequired = overflowMenuHeight + i * (TAB_HEIGHT[size] + TAB_MARGIN);\n\t}\n\tif (selectedItemIndex >= i) {\n\t\treturn {\n\t\t\tvisibleItems: [...items.slice(0, i - 1), items[selectedItemIndex]],\n\t\t\toverflowItems: [\n\t\t\t\t...items.slice(i - 1, selectedItemIndex),\n\t\t\t\t...items.slice(selectedItemIndex + 1),\n\t\t\t],\n\t\t};\n\t}\n\treturn {\n\t\tvisibleItems: items.slice(0, i),\n\t\toverflowItems: items.slice(i),\n\t};\n};\n\nconst getDropdownOpenedOrFocused = (host) => {\n\tconst dropdown = host.shadowRoot.querySelector('.now-tab-dropdown');\n\tconst active = host.shadowRoot.activeElement;\n\treturn dropdown && (dropdown.opened || active === dropdown);\n};\n\nconst renderTabIcon = ({\n\titem,\n\thideLabel,\n\tselected,\n\tsize,\n\tenableIconOverride,\n}) => {\n\tif (item.icon) {\n\t\tlet icon;\n\t\tif (enableIconOverride) {\n\t\t\ticon = item.icon;\n\t\t} else if (selected) {\n\t\t\ticon = item.icon.replace('outline', 'fill');\n\t\t} else {\n\t\t\ticon = item.icon.replace('fill', 'outline');\n\t\t}\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclass={{'now-tab-icon': true, 'now-m-inline-end--xxs': !hideLabel}}\n\t\t\t\ticon={icon}\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t);\n\t}\n\tif (item.presence) {\n\t\treturn (\n\t\t\t<now-icon-presence\n\t\t\t\tclassName=\"now-tab-presence now-m-inline-end--xxs\"\n\t\t\t\tpresence={item.presence}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst renderTab = ({\n\tkey,\n\tindex,\n\titem,\n\thideLabel,\n\tselected,\n\tnoSelection,\n\tdisabled,\n\tsize,\n\tdispatch,\n\tenableDeselect,\n\tenableIconOverride,\n\tspaceBetweenItems,\n}) => {\n\tconst count = item.count ? `(${item.count})` : '';\n\tconst ariaCount = item.count ? `, ${item.count}` : '';\n\tconst presence = item.presence ? `, ${localizePresence(item.presence)}` : '';\n\tconst ariaLabel = (item.ariaLabel || item.label) + presence + ariaCount;\n\tconst label = hideLabel ? undefined : item.label;\n\n\tconst handleTooltipShow = (e) => {\n\t\tconst labelSpan = e.target.querySelector('.now-tab-label');\n\t\tconst isOverset =\n\t\t\tlabelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\n\t\tif (hideLabel || isOverset) {\n\t\t\treturn dispatch(TOOLTIP_SHOW, {target: e.target});\n\t\t}\n\t};\n\n\tconst handleTooltipHide = (e) => {\n\t\tconst labelSpan = e.target.querySelector('.now-tab-label');\n\t\tconst isOverset =\n\t\t\tlabelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\n\t\tif (hideLabel || isOverset) {\n\t\t\treturn dispatch(TOOLTIP_HIDE, {target: e.target});\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-tab': true,\n\t\t\t\t'is-selected': selected,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t[`-space-between-${spaceBetweenItems}`]: spaceBetweenItems !== 'none',\n\t\t\t}}\n\t\t>\n\t\t\t<button\n\t\t\t\tid={item.id}\n\t\t\t\tkey={key}\n\t\t\t\tdata-itemid={key}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-tab-button': true,\n\t\t\t\t\t'is-selected': selected,\n\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t}}\n\t\t\t\trole=\"tab\"\n\t\t\t\ttabIndex={selected || (noSelection && index === 0) ? undefined : '-1'}\n\t\t\t\taria-controls={selected ? 'tab-panel' : undefined}\n\t\t\t\taria-disabled={disabled ? 'true' : undefined}\n\t\t\t\t{...(enableDeselect\n\t\t\t\t\t? {'aria-expanded': selected ? 'true' : 'false'}\n\t\t\t\t\t: {'aria-selected': selected ? 'true' : 'false'})}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\ton-click={\n\t\t\t\t\tdisabled\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: () => {\n\t\t\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\ttype: 'NOW_TABS_VERTICAL#SELECTED_ITEM_SET',\n\t\t\t\t\t\t\t\t\t\tpayload:\n\t\t\t\t\t\t\t\t\t\t\tselected && enableDeselect\n\t\t\t\t\t\t\t\t\t\t\t\t? {value: '', previousItem: item}\n\t\t\t\t\t\t\t\t\t\t\t\t: {value: key, item},\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdata-tooltip={\n\t\t\t\t\titem.tooltipContent || `${item.label}${count ? '\\u00A0' + count : ''}`\n\t\t\t\t}\n\t\t\t\tdata-ariadescribedby={`${item.label}${count ? '\\u00A0' + count : ''}`}\n\t\t\t\ton-mouseenter={handleTooltipShow}\n\t\t\t\ton-focusin={handleTooltipShow}\n\t\t\t\ton-mouseleave={handleTooltipHide}\n\t\t\t\ton-focusout={handleTooltipHide}\n\t\t\t>\n\t\t\t\t{renderTabIcon({\n\t\t\t\t\titem,\n\t\t\t\t\thideLabel,\n\t\t\t\t\tselected,\n\n\t\t\t\t\tsize,\n\t\t\t\t\tenableIconOverride,\n\t\t\t\t})}\n\t\t\t\t{hideLabel ? undefined : (\n\t\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t\t<span className=\"now-align -inline\">\n\t\t\t\t\t\t\t<span className=\"now-tab-label\">{label}</span>\n\t\t\t\t\t\t\t{count ? (\n\t\t\t\t\t\t\t\t<span className=\"now-m-inline-start--md\">{count}</span>\n\t\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\nconst renderOverflow = ({\n\toverflowItems,\n\thideLabel,\n\tsize,\n\tpanelFitProps,\n\tnowId,\n}) => {\n\tif (!overflowItems.length) return;\n\treturn (\n\t\t<div className=\"now-tab\">\n\t\t\t<now-dropdown\n\t\t\t\tconfig-aria={{\n\t\t\t\t\t'aria-label': t('More tabs'),\n\t\t\t\t}}\n\t\t\t\tclassName=\"now-tab-dropdown\"\n\t\t\t\t// use the More_menu key to ensure we have an uppercase first letter\n\t\t\t\tplaceholder={hideLabel ? undefined : t('More_menu')}\n\t\t\t\ttooltip-content={t('More tabs')}\n\t\t\t\titems={overflowItems}\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tselect=\"none\"\n\t\t\t\ticon={hideLabel ? 'ellipsis-vertical-fill' : undefined}\n\t\t\t\thide-label={hideLabel}\n\t\t\t\thide-caret={hideLabel}\n\t\t\t\tsize={size}\n\t\t\t\tpanel-fit-props={panelFitProps}\n\t\t\t\tshow-padding\n\t\t\t\tbare\n\t\t\t\tappend-to-meta={{componentId: nowId}}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nconst assignedElements = (slot) =>\n\t[...slot.assignedNodes({flatten: true})].filter(\n\t\t(node) => node.nodeType === Element.ELEMENT_NODE,\n\t);\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {\n\t\titems,\n\t\tselectedItem,\n\t\thideLabel,\n\t\ttabMaxWidth,\n\t\tconfigAria,\n\t\tsize,\n\t\tenableDeselect,\n\t\tenableIconOverride,\n\t\tselectionPosition,\n\t\tshowInlinePadding,\n\t\tspaceBetweenItems,\n\t\tpanelFitProps,\n\t\tpanelPosition,\n\t\tnowId,\n\t} = state.properties;\n\n\tlet {visibleItems, overflowItems} = measureTabs(\n\t\tstate.behaviors.resize.size.height,\n\t\tstate.behaviors.theme,\n\t\titems,\n\t\tselectedItem,\n\t\tsize,\n\t\tspaceBetweenItems,\n\t);\n\n\tconst onFocusIn = async () => {\n\t\tupdateState({nextFocusNotInTabs: false});\n\t};\n\n\tconst onFocusOut = async (e) => {\n\t\tconst host = getShadowRootHost(e.target);\n\t\tconst relatedTargetHost = e.relatedTarget\n\t\t\t? getShadowRootHost(e.relatedTarget)\n\t\t\t: null;\n\t\tupdateState({nextFocusNotInTabs: relatedTargetHost !== host});\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-tabs-vertical-container': true,\n\t\t\t\t['-' + panelPosition]: panelPosition,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-tabs-vertical': true,\n\t\t\t\t\t'icon-only': hideLabel,\n\t\t\t\t\t'show-inline-padding': showInlinePadding,\n\t\t\t\t\t'has-panel-content': state.targetRef,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t['-' + selectionPosition]: selectionPosition,\n\t\t\t\t}}\n\t\t\t\ton-focusin={onFocusIn}\n\t\t\t\ton-focusout={onFocusOut}\n\t\t\t\tstyle={{\n\t\t\t\t\tminInlineSize: tabMaxWidth + 'px',\n\t\t\t\t\tmaxInlineSize: tabMaxWidth + 'px',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"now-tab-list\"\n\t\t\t\t\trole=\"tablist\"\n\t\t\t\t\taria-orientation=\"vertical\"\n\t\t\t\t\t{...filterAriaAttributes(configAria, 'tablist')}\n\t\t\t\t>\n\t\t\t\t\t{visibleItems &&\n\t\t\t\t\t\tvisibleItems.map((item, index) => {\n\t\t\t\t\t\t\treturn renderTab({\n\t\t\t\t\t\t\t\tkey: item.id,\n\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\thideLabel,\n\n\t\t\t\t\t\t\t\tselected: selectedItem === item.id,\n\t\t\t\t\t\t\t\tnoSelection: !selectedItem,\n\t\t\t\t\t\t\t\tdisabled: item.disabled,\n\t\t\t\t\t\t\t\tsize,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tenableDeselect,\n\t\t\t\t\t\t\t\tenableIconOverride,\n\t\t\t\t\t\t\t\tspaceBetweenItems,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t\t{renderOverflow({\n\t\t\t\t\toverflowItems,\n\t\t\t\t\thideLabel,\n\t\t\t\t\tsize,\n\t\t\t\t\tpanelFitProps,\n\t\t\t\t\tnowId,\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\taria-labelledby={selectedItem}\n\t\t\t\tclassName=\"now-tabs-vertical-panel\"\n\t\t\t\tid=\"tab-panel\"\n\t\t\t\trole=\"tabpanel\"\n\t\t\t>\n\t\t\t\t<slot\n\t\t\t\t\tname={selectedItem}\n\t\t\t\t\ton-slotchange={(e) => {\n\t\t\t\t\t\tif (e.target !== e.currentTarget) {\n\t\t\t\t\t\t\treturn; // ignore bubbling slotchange\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst elements = assignedElements(e.target);\n\t\t\t\t\t\tconst targetRef = elements[0] || null;\n\t\t\t\t\t\tupdateState({targetRef});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * Tabs provide navigation between grouped content in a specific hierarchy.\n * They also identify a user’s specific location in the display.\n *\n * ```jsx\n * const items = [\n *  {id: 'tab1', label: 'Tab 1', icon: 'bell-outline', count: 7},\n * \t{id: 'tab2', label: 'Tab 2', icon: 'document-outline', count: 3}\n * ];\n *\n * <now-tabs-vertical items={items} hide-label />\n * ```\n *\n * @seismicElement now-tabs-vertical\n * @summary Vertical tab menu for navigating between tabbed content.\n */\ncreateEnhancedElement('now-tabs-vertical', {\n\tproperties: {\n\t\t/**\n\t\t * An array of objects, each with the configuration for a tab.\n\t\t * @type {TabItem[]}\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\trequired: true,\n\t\t\tschema: {type: 'array', items: itemSchema},\n\t\t},\n\t\t/**\n\t\t * ID of the selected tab item.\n\t\t * @type {(string|number)}\n\t\t */\n\t\tselectedItem: {manageable: true, schema: {type: ['string', 'number']}},\n\t\t/**\n\t\t * Set this flag to display tabs with only an icon and no label inside.\n\t\t * You should still specify a label in the `items` array, for displaying\n\t\t * in a tooltip and for representing the tab to assistive technology.\n\t\t * @type {boolean}\n\t\t */\n\t\thideLabel: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\t\tshowPresencePattern: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-tabs-vertical. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'tablist' key corresponds to the element with an ARIA role of 'tablist'.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#tablist for properties\n\t\t * and accepted values.\n\t\t * @type {{tablist: {'aria-*': string, role: string}}}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ttablist: configAriaSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the tabs size.\n\t\t * @type {('sm'|'md')}\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, selecting a tab that is already selected will deselect it.\n\t\t * The tabset then appears with no active tab and `selectedItem` is undefined.\n\t\t * This also becomes the default state of the component - the first tab\n\t\t * is not automatically selected on load unless a `selectedItem` is set.\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDeselect: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * By default, tab icons will appear with fill for the selected tab and\n\t\t * in outline for all other tabs. Set this flag to disable the behavior\n\t\t * and display whichever `icon` is specified.\n\t\t * @type {boolean}\n\t\t */\n\t\tenableIconOverride: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Sets on which side of the vertical tab the selection indicator line should appear.\n\t\t * @type {('start'|'end')}\n\t\t */\n\t\tselectionPosition: {\n\t\t\tdefault: 'start',\n\t\t\tschema: {type: 'string', enum: ['start', 'end']},\n\t\t},\n\t\t/**\n\t\t * Set this flag to display each tab with left and right padding.\n\t\t * @type {boolean}\n\t\t */\n\t\tshowInlinePadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * The amount of space to show between each tab vertically.\n\t\t * @type {('none'|'xxs'|'xs'|'sm'|'md'|'lg'|'xl'|'xxl'|'3xl')}\n\t\t */\n\t\tspaceBetweenItems: {\n\t\t\tdefault: 'none',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['none', 'xxs', 'xs', 'sm', 'md', 'lg', 'xl', 'xxl', '3xl'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Properties to configure the dropdown panel of the tab overflow menu.\n\t\t *\n\t\t * Valid keys are:\n\t\t *  - position: Array of possible positions in which to place the panel, relative to its target. Default: `[\"bottom-start top-start\",\"top-start bottom-start\",\"bottom-end top-end\",\"top-end bottom-end\"]`\n\t\t *  - constrain: Object specifying size constraints relative to the panel's target. Default: `{\"minHeight\":32,\"minWidth\":\"target\",\"maxWidth\":400,\"maxHeight\":300}`\n\t\t *  - offset: Number of pixels to offset the panel from the trigger.\n\t\t *\n\t\t * Use these keys to position and scale the panel relative to the dropdown target.\n\t\t *\n\t\t * @type {{ position: Array<{target: string, content: string}>, constrain: object, offset: number }}\n\t\t */\n\t\tpanelFitProps: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tposition: {type: 'array', items: {type: 'string'}},\n\t\t\t\t\toffset: {\n\t\t\t\t\t\toneOf: [{type: 'number'}, {type: 'array', items: {type: 'number'}}],\n\t\t\t\t\t},\n\t\t\t\t\tconstrain: constrainSchema,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets on which side of the vertical tab the tabpanel should appear. Needs to be\n\t\t * distinct from selectionPosition because selectionPosition should always default to\n\t\t * 'start' independently.\n\t\t * @type {('before'|'after')}\n\t\t */\n\t\tpanelPosition: {\n\t\t\tdefault: 'after',\n\t\t\tschema: {type: 'string', enum: ['before', 'after']},\n\t\t},\n\t\t/**\n\t\t * Maximum width (as a number of pixels) of the tablist.\n\t\t * @type {number}\n\t\t */\n\t\ttabMaxWidth: {schema: {type: 'number'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * A named slot where the name corresponds to the ID of the current selectedItem.\n\t\t * Slot content for each of the steps in your items array and the panel area will\n\t\t * switch between content based on user selection.\n\t\t */\n\t\tdynamic: {},\n\t},\n\tinitialState: {\n\t\tfocusSelected: false,\n\t\tnextFocusNotInTabs: false,\n\t\ttargetRef: null,\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: ({properties, dispatch}) => {\n\t\t\tconst {items, selectedItem, enableDeselect} = properties;\n\t\t\tif (selectedItem || !items || enableDeselect) return;\n\t\t\tconst enabledItems = items.filter((item) => !item.disabled);\n\t\t\tif (enabledItems.length) {\n\t\t\t\tdispatch(() => ({\n\t\t\t\t\ttype: 'NOW_TABS_VERTICAL#SELECTED_ITEM_SET',\n\t\t\t\t\tpayload: {value: enabledItems[0].id, item: enabledItems[0]},\n\t\t\t\t}));\n\t\t\t}\n\t\t},\n\t\t'NOW_DROPDOWN#ITEM_CLICKED': ({dispatch, action, updateState, state}) => {\n\t\t\tconst clickedItemId = action.payload?.item?.id;\n\t\t\tconst clickedItem = action.payload?.item;\n\t\t\tconst nowId = state?.properties?.nowId;\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_TABS_VERTICAL#SELECTED_ITEM_SET',\n\t\t\t\t\tpayload: {value: clickedItemId, item: clickedItem},\n\t\t\t\t\tshouldDispatch: nowId === componentId,\n\t\t\t\t};\n\t\t\t});\n\t\t\tupdateState({\n\t\t\t\tpath: 'focusSelected',\n\t\t\t\toperation: 'set',\n\t\t\t\tvalue: true,\n\t\t\t\tshouldRender: false,\n\t\t\t\tshouldUpdate: nowId === componentId,\n\t\t\t});\n\t\t\taction.stopPropagation();\n\t\t},\n\t\t'NOW_DROPDOWN#LIST_HIDDEN': ({action, host, state, updateState}) => {\n\t\t\tif (!state.focusSelected) return;\n\t\t\tconst tabs = host?.shadowRoot?.querySelectorAll('button.now-tab-button');\n\t\t\tconst selected = tabs[tabs.length - 1];\n\t\t\tif (!selected) return;\n\t\t\tselected?.focus();\n\t\t\tupdateState({\n\t\t\t\tpath: 'focusSelected',\n\t\t\t\toperation: 'set',\n\t\t\t\tvalue: false,\n\t\t\t\tshouldRender: false,\n\t\t\t});\n\t\t\taction.stopPropagation();\n\t\t},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect: ({host, action, properties, dispatch, state, updateState}) => {\n\t\t\t\tif (state.nextFocusNotInTabs || getDropdownOpenedOrFocused(host)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst {key} = action.payload.event;\n\t\t\t\tconst {dir} = properties;\n\t\t\t\tconst activeElement = getActiveElement();\n\t\t\t\tconst tabs = host.shadowRoot.querySelectorAll('button.now-tab-button');\n\t\t\t\tif (isDirectionalKey(key)) {\n\t\t\t\t\taction.preventDefault();\n\t\t\t\t\tdispatch(TOOLTIP_HIDE, {\n\t\t\t\t\t\ttarget: host.shadowRoot.activeElement,\n\t\t\t\t\t\tdelay: 0,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tupdateState({nextFocusNotInTabs: false});\n\t\t\t\tif (isNextKey(key, dir, true)) {\n\t\t\t\t\tconst focusedIndex = Array.prototype.indexOf.call(\n\t\t\t\t\t\ttabs,\n\t\t\t\t\t\tactiveElement,\n\t\t\t\t\t);\n\t\t\t\t\t// wraparound from last to first\n\t\t\t\t\tconst nextIndex =\n\t\t\t\t\t\tfocusedIndex === tabs.length - 1 ? 0 : focusedIndex + 1;\n\t\t\t\t\ttabs[nextIndex].focus();\n\t\t\t\t} else if (isPreviousKey(key, dir, true)) {\n\t\t\t\t\tconst focusedIndex = Array.prototype.indexOf.call(\n\t\t\t\t\t\ttabs,\n\t\t\t\t\t\tactiveElement,\n\t\t\t\t\t);\n\t\t\t\t\t// wraparound from first to last\n\t\t\t\t\tconst previousIndex =\n\t\t\t\t\t\tfocusedIndex === 0 ? tabs.length - 1 : focusedIndex - 1;\n\t\t\t\t\ttabs[previousIndex].focus();\n\t\t\t\t} else if (key === 'Home') {\n\t\t\t\t\tconst firstIndex = 0;\n\t\t\t\t\ttabs[firstIndex].focus();\n\t\t\t\t} else if (key === 'End') {\n\t\t\t\t\tconst lastIndex = tabs.length - 1;\n\t\t\t\t\ttabs[lastIndex].focus();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcapture: true,\n\t\t},\n\t],\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: resizeBehavior,\n\t\t\toptions: {\n\t\t\t\tpreventRenderUntilSizeAvailable: true,\n\t\t\t\tpreventRender: {\n\t\t\t\t\twidth: true,\n\t\t\t\t},\n\t\t\t\ttimer: {\n\t\t\t\t\ttype: 'debounce',\n\t\t\t\t\tleading: true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: ['global.space*'],\n\t\t\t},\n\t\t},\n\t\tfocusBehavior,\n\t\ttooltipBehavior,\n\t],\n\tview,\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Action dispatched when a tab is selected.\n\t\t * The payload key `value` contains the `id` of the item from the `items` array that was selected by the user.\n\t\t * Payload key `item` contains the `object` itself corresponding to the selected tab.\n\t\t * If `enableDeselect` is enabled and the event is a deselection, `previousItem` contains the `object` of the previously active tab.\n\t\t * @type {{value: (string|number), item: TabItem, previousItem: TabItem}}\n\t\t */\n\t\t'NOW_TABS_VERTICAL#SELECTED_ITEM_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t\titem: {type: 'object'},\n\t\t\t\t\tpreviousItem: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n});\n","import './now-tabs';\nimport './now-tabs-vertical';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import { t } from \"sn-translate\";\n\nexport const ALL_FILTER_ID = \"all\";\n\nexport const ALL_FILTER = {\n\tid: ALL_FILTER_ID,\n\tlabel: t(\"All\")\n};\n\nexport const RELEVANCY_SORT_ID = \"relevancy\";\nexport const RELEVANCY_SORT_FILTER = {\n\tid: RELEVANCY_SORT_ID,\n\tlabel: t(\"Most relevant\")\n};\n\nexport const SORT_FILTER_DESCRIPTION = t(\"Sort search results\");\nexport const SIZE = {\n\tSMALL: \"sm\",\n\tLARGE: \"lg\"\n};\n\nexport const THOUSAND_PLUS_COUNT_LABEL = t(\"1000+\");\nexport const ZERO_COUNT_LABEL = t(\"0\");\n\nexport const DEBUG_VIEW_LABEL = t(\"View\");\nexport const DEBUG_VIEW_OPTIONS = [\n\t{ id: \"results\", label: t(\"Result cards\") },\n\t{ id: \"raw\", label: t(\"Raw output\") },\n\t{ id: \"results-details\", label: t(\"Result cards with details\") }\n];\nexport const DEBUG_VIEW_DESCRIPTION = t(\"Select a debug view\");\n","import {\n\tALL_FILTER_ID,\n\tTHOUSAND_PLUS_COUNT_LABEL,\n\tZERO_COUNT_LABEL\n} from \"./constants\";\n\nconst getLabelForCount = count => {\n\tif (count > 999) return THOUSAND_PLUS_COUNT_LABEL;\n\tif (count === 0) return ZERO_COUNT_LABEL;\n\treturn count;\n};\n\n/**\n * creates an array of {id, label} objects from 'filters'\n * and adds the 'defaultFilter' as first element in the array\n */\nexport const getFilters = (filters, defaultFilter) => {\n\tconst tabFilters = [];\n\tlet showCount = false;\n\tlet allTabCount = 0;\n\tconst allTab = Object.assign({}, defaultFilter);\n\tif (Array.isArray(filters) && filters.length > 0) {\n\t\tfilters.forEach(({ sysId, label, count }) => {\n\t\t\tif (label.toLowerCase() === ALL_FILTER_ID) {\n\t\t\t\tallTabCount = count;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst tabData = {\n\t\t\t\tid: sysId,\n\t\t\t\tlabel,\n\t\t\t\tcount\n\t\t\t};\n\t\t\tif (count !== null && count >= 0) {\n\t\t\t\tshowCount = true;\n\t\t\t\ttabData.count = getLabelForCount(count);\n\t\t\t\tif (count === 0) tabData.disabled = true;\n\t\t\t}\n\t\t\t//need below check to not have any numeric value with tab count\n\t\t\tif (count === -1) {\n\t\t\t\ttabData.count = null;\n\t\t\t}\n\n\t\t\ttabFilters.push(tabData);\n\t\t});\n\t}\n\tif (showCount) {\n\t\tallTab.count = getLabelForCount(allTabCount);\n\t}\n\treturn [allTab, ...tabFilters];\n};\n","import \"@servicenow/now-dropdown\";\nimport \"@servicenow/now-tabs\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\n\nimport { getFilters } from \"./utils\";\nimport {\n\tALL_FILTER,\n\tRELEVANCY_SORT_FILTER,\n\tALL_FILTER_ID,\n\tRELEVANCY_SORT_ID,\n\tSIZE,\n\tSORT_FILTER_DESCRIPTION,\n\tDEBUG_VIEW_LABEL,\n\tDEBUG_VIEW_OPTIONS,\n\tDEBUG_VIEW_DESCRIPTION\n} from \"./constants\";\n\nconst _getSelectedFilter = (filters, defaultFilterId, allFilters) => {\n\tif (filters.length > 0) {\n\t\t// if there's a list of all the available filters,\n\t\tif (allFilters && allFilters.length > 0) {\n\t\t\t// if all the available filters does NOT include the filter we would otherwise select\n\t\t\tif (\n\t\t\t\t!allFilters.find(item => {\n\t\t\t\t\treturn item.id === filters[0];\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\t// return the default filter\n\t\t\t\treturn defaultFilterId;\n\t\t\t}\n\t\t}\n\t\treturn filters[0];\n\t}\n\n\treturn defaultFilterId;\n};\n\nconst _showSortDropdown = (size, sortFilters) => {\n\treturn size === SIZE.LARGE && sortFilters !== null && sortFilters.length > 0;\n};\n\nconst _showDebugViewsDropdown = (size, debugView) => {\n\treturn size === SIZE.LARGE && debugView !== \"\";\n};\n\nconst view = state => {\n\tconst {\n\t\tproperties: {\n\t\t\tsearchFilters,\n\t\t\tselectedFilters,\n\t\t\tsortFilters,\n\t\t\tselectedSortFilters,\n\t\t\tsize,\n\t\t\tdebugView\n\t\t},\n\t\tselectedSortFilterLabel\n\t} = state;\n\tconst searchTabfilters = getFilters(searchFilters, ALL_FILTER);\n\tconst sortDropdownFilters = getFilters(sortFilters, RELEVANCY_SORT_FILTER);\n\tconst selectedFilter = _getSelectedFilter(selectedFilters, ALL_FILTER_ID);\n\tconst selectedSortFilter = _getSelectedFilter(\n\t\tselectedSortFilters,\n\t\tRELEVANCY_SORT_ID,\n\t\tsortDropdownFilters\n\t);\n\n\treturn (\n\t\t<div className=\"tab-filter__container\">\n\t\t\t<div className=\"tab-filter__tabs\">\n\t\t\t\t<now-tabs items={searchTabfilters} selectedItem={selectedFilter} />\n\t\t\t</div>\n\t\t\t{_showSortDropdown(size, sortFilters) ? (\n\t\t\t\t<div className=\"tab-filter__dropdown\">\n\t\t\t\t\t<now-dropdown\n\t\t\t\t\t\titems={sortDropdownFilters}\n\t\t\t\t\t\tselectedItems={[selectedSortFilter]}\n\t\t\t\t\t\tselect=\"single\"\n\t\t\t\t\t\tvariant=\"secondary-selection\"\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\tbare\n\t\t\t\t\t\ttooltipContent={SORT_FILTER_DESCRIPTION}\n\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\ttrigger: {\n\t\t\t\t\t\t\t\t\"aria-label\": selectedSortFilterLabel\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\tisSort: true\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<Fragment />\n\t\t\t)}\n\t\t\t{_showDebugViewsDropdown(size, debugView) ? (\n\t\t\t\t<div className=\"tab-filter__dropdown__views\">\n\t\t\t\t\t<span className=\"tab-filter__dropdown__views--label\">\n\t\t\t\t\t\t{DEBUG_VIEW_LABEL}\n\t\t\t\t\t</span>\n\t\t\t\t\t<now-dropdown\n\t\t\t\t\t\titems={DEBUG_VIEW_OPTIONS}\n\t\t\t\t\t\tselectedItems={[debugView]}\n\t\t\t\t\t\tselect=\"single\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\ttooltipContent={DEBUG_VIEW_DESCRIPTION}\n\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\ttrigger: {\n\t\t\t\t\t\t\t\t\"aria-label\": DEBUG_VIEW_DESCRIPTION\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\tisView: true\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<Fragment />\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","export const NOW_TABS_ITEM_SELECTED = \"NOW_TABS#SELECTED_ITEM_SET\";\nexport const NOW_DROPDOWN_ITEM_SELECTED = \"NOW_DROPDOWN#ITEM_CLICKED\";\n\n// externally exposed actions\nexport const TAB_FILTER_ITEM_SELECTED = \"SN_TAB_FILTER#FILTER_SELECTED\";\nexport const SORT_FILTER_ITEM_SELECTED = \"SN_TAB_FILTER#SORT_FILTER_SELECTED\";\nexport const DEBUG_VIEW_ITEM_SELECTED = \"SN_TAB_FILTER#DEBUG_VIEW_SELECTED\";\n","import {\n\tTAB_FILTER_ITEM_SELECTED,\n\tSORT_FILTER_ITEM_SELECTED,\n\tDEBUG_VIEW_ITEM_SELECTED\n} from \"./actions\";\nimport { ALL_FILTER_ID, RELEVANCY_SORT_ID } from \"./constants\";\n\nexport const nowTabsSelectedEffect = ({ action, dispatch }) => {\n\tconst {\n\t\tpayload: { value }\n\t} = action;\n\n\t// Search GQL API expects JSON stringified array of filter ids.\n\tconst filters = JSON.stringify(value === ALL_FILTER_ID ? [] : [value]);\n\n\tdispatch(TAB_FILTER_ITEM_SELECTED, {\n\t\tselectedFilter: filters\n\t});\n};\n\nexport const nowDropdownSelectedEffect = ({\n\taction,\n\tupdateState,\n\tdispatch\n}) => {\n\tconst {\n\t\tpayload: {\n\t\t\titem: { id, label },\n\t\t\tisSort,\n\t\t\tisView\n\t\t}\n\t} = action;\n\n\t// Ignore events for the dropdown menu when there are a lot of tabs\n\tif (!isSort && !isView) return;\n\n\tif (isSort) {\n\t\t// Search GQL API expects JSON stringified array of filter ids.\n\t\tconst sortByFilters = JSON.stringify(id === RELEVANCY_SORT_ID ? [] : [id]);\n\n\t\tupdateState({\n\t\t\tselectedSortFilterLabel: label\n\t\t});\n\n\t\tdispatch(SORT_FILTER_ITEM_SELECTED, {\n\t\t\tselectedFilter: sortByFilters\n\t\t});\n\t} else if (isView) {\n\t\tupdateState({\n\t\t\tdebugView: label\n\t\t});\n\n\t\tdispatch(DEBUG_VIEW_ITEM_SELECTED, {\n\t\t\tselectedView: id\n\t\t});\n\t}\n};\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\n\nimport view from \"./view\";\nimport styles from \"./scss/index.scss\";\n\nimport { NOW_TABS_ITEM_SELECTED, NOW_DROPDOWN_ITEM_SELECTED } from \"./actions\";\nimport { nowTabsSelectedEffect, nowDropdownSelectedEffect } from \"./effects\";\nimport {\n\tALL_FILTER_ID,\n\tRELEVANCY_SORT_ID,\n\tSIZE,\n\tRELEVANCY_SORT_FILTER\n} from \"./constants\";\n\n/**\n * Seismic component that allows users to filter search results based on defined sources and sort\n * search results based on configured fields.\n * For source tabs, the component adds an 'All' tab as the first tab for sources and renders the other tabs in given order. Counts\n * will be displayed next to the tab labels if not null\n * For sort dropdown filter, the component adds a 'Relevancy' option as the first option and renders the other fields in given order.\n *\n * ```jsx\n * <sn-tab-filter\n *searchFilters={[\n *{\n *\tsysId: \"947110427310101052c7d5fdbdf6a73e\",\n *\tlabel: \"Knowledge Article\",\n *  count: 3\n *},\n *{\n *\tsysId: \"fca0ed907320101052c7d5fdbdf6a799\",\n *\tlabel: \"Catalog Items\"\n *}\n *]}\n *sortFilters={[\n *{\n *\tsysId: \"947110427310101052c7d5fdbdf6a73e\",\n *\tlabel: \"Most Recent\"\n *},\n *      {\n *\tsysId: \"fca0ed907320101052c7d5fdbdf6a799\",\n *\tlabel: \"Last Updated\"\n *}\n *]}\n * ```\n *\n * @seismicElement sn-tab-filter\n * @summary Tab filters for navigating between search results.\n * @uib.label Tab filter\n * @uib.icon tile-uib-sn-tab-filter\n * @uib.description Seismic Component for Tab Filters\n * @uib.category primitives\n * @uib.associatedTypes global.core, global.layout\n * @uib.properties searchFilters, selectedFilters, hideLabel, fixedWidth, maxWidth\n * @uib.actions SN_TAB_FILTER#FILTER_SELECTED, SN_TAB_FILTER#SORT_FILTER_SELECTED\n * @uib.innerComponents now-tabs, now-dropdown\n */\ncreateCustomElement(\"sn-tab-filter\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tinitialState: {\n\t\tselectedSortFilterLabel: RELEVANCY_SORT_FILTER.label\n\t},\n\tstyles,\n\tproperties: {\n\t\t/**\n\t\t * The searchFilters response from the Search Filter GraphQL API, it contains the data for tab items with sysId and label.\n\t\t * @type {Array.<{sysId: string, label: string, count?: number}>}\n\t\t * @uib.description Specifies the items for tab filters\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tsearchFilters: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the ID of the selected filter tab. If this property is not passed in, All filter tab is selected by default.\n\t\t * @type {Array.<String>}\n\t\t * @uib.description Specifies the selected filter tab\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tselectedFilters: {\n\t\t\tdefault: [ALL_FILTER_ID],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The sortFilters response from the Search Filter GraphQL API, it contains the data for sort by filter items with sysId and label.\n\t\t * @type {Array.<{sysId: string, label:string}>}\n\t\t * @uib.description Specifies the items for sort by filters\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tsortFilters: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the ID of the selected sort filter. If this property is not passed in, Relevancy filter is selected in the sort by filter dropdown by default.\n\t\t * @type {Array.<String>}\n\t\t * @uib.description Specifies the selected sort by filter\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tselectedSortFilters: {\n\t\t\tdefault: [RELEVANCY_SORT_ID],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the component is being rendered on mobile or desktop.\n\t\t * Options include:\n\t\t * - 'sm': Set for the mobile version.\n\t\t * - 'lg': Set for the desktop version.\n\t\t * @type {('sm'|'lg')}\n\t\t */\n\t\tsize: {\n\t\t\tdefault: SIZE.LARGE,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"lg\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the ID of the selected sort filter. If this property is not passed in, Relevancy filter is selected in the sort by filter dropdown by default.\n\t\t * @type {Array.<String>}\n\t\t * @uib.description Specifies the selected sort by filter\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tdebugView: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t}\n\t},\n\tactionHandlers: {\n\t\t[NOW_TABS_ITEM_SELECTED]: {\n\t\t\teffect: nowTabsSelectedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[NOW_DROPDOWN_ITEM_SELECTED]: {\n\t\t\teffect: nowDropdownSelectedEffect,\n\t\t\tstopPropagation: true\n\t\t}\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Action dispatched when a tab filter is selected.\n\t\t * The payload key `selectedFilter` contains the JSON stringified array containing the `sys_id` of the tab filter selected by the user.\n\t\t * @type {{selectedFilter: string}}\n\t\t * @uib.description Dispatched when user selects any of the tab filters\n\t\t */\n\t\t\"SN_TAB_FILTER#FILTER_SELECTED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tselectedFilter: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Action dispatched when a sort filter is selected.\n\t\t * The payload key `selectedFilter` contains the JSON stringified array containing the `sys_id` of the sort filter selected by the user.\n\t\t * @type {{selectedFilter: string}}\n\t\t * @uib.description Dispatched when user selects any of the sort filters\n\t\t */\n\t\t\"SN_TAB_FILTER#SORT_FILTER_SELECTED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tselectedFilter: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n","import { t } from \"sn-translate\";\n\nconst WRONG_GR_TYPE = \"Wrong Intent\";\nconst WRONG_RESULT = \"Wrong Result\";\nconst MISSING_INFORMATION = \"Insufficient Information\";\nconst WRONG_NLQ_FILTER = \"Wrong Table Filter\";\nconst OTHER_FEEDBACK = \"Other\";\n\nconst baseOptions = [\n\t{\n\t\tid: MISSING_INFORMATION,\n\t\tlabel: t(\"It's missing information I want\")\n\t}\n];\n\nexport const DEFAULT_QA_FEEDBACK_OPTIONS = [\n\t{ id: WRONG_GR_TYPE, label: t(\"I am not looking for an article\") },\n\t{ id: WRONG_RESULT, label: t(\"It doesn't answer my question\") }\n].concat(baseOptions);\n\nexport const DEFAULT_USER_CARD_FEEDBACK_OPTIONS = [\n\t{ id: WRONG_GR_TYPE, label: t(\"I am not looking for a person\") },\n\t{\n\t\tid: WRONG_RESULT,\n\t\tlabel: t(\"I am looking for a different person\")\n\t}\n].concat(baseOptions);\n\nexport const DEFAULT_CATALOG_FEEDBACK_OPTIONS = [\n\t{\n\t\tid: WRONG_GR_TYPE,\n\t\tlabel: t(\"I am not looking to request something\")\n\t},\n\t{ id: WRONG_RESULT, label: t(\"I want to request something else\") }\n].concat(baseOptions);\n\nexport const DEFAULT_NLQ_FEEDBACK_OPTIONS = [\n\t{\n\t\tid: WRONG_GR_TYPE,\n\t\tlabel: t(\"I’m not searching for a table\")\n\t},\n\t{\n\t\tid: WRONG_RESULT,\n\t\tlabel: t(\"The table doesn’t match my search\")\n\t},\n\t{\n\t\tid: WRONG_NLQ_FILTER,\n\t\tlabel: t(\"Incorrect filter on the table\")\n\t},\n\t{\n\t\tid: OTHER_FEEDBACK,\n\t\tlabel: t(\"Other, please specify:\")\n\t}\n];\n\nexport const SECONDARY_FEEDBACK_ENABLED_MODELS = {\n\tcatalog: [\n\t\t\"Catalog Item\",\n\t\t\"Catalog\", // com.glide.search.demo\n\t\t\"Catalog Item Semantic Search\",\n\t\t\"Now Assist Catalog Ordering\"\n\t],\n\tpeople: [\n\t\t\"People\",\n\t\t\"People Genius Result\" // com.glide.search.demo\n\t],\n\tqa: [\n\t\t\"Q&A\",\n\t\t\"Q&A Genius Result\", // com.glide.search.demo\n\t\t\"Now Assist Q&A\",\n\t\t\"Knowledge Base Articles\"\n\t],\n\tnlq: [\"NLQ\"]\n};\n\nexport const POWERED_BY_TEXT = t(\"Powered by\");\nexport const AI_SUGGESTION = t(\"AI Suggestion\");\nexport const NLQ_HIGHLIGHTED_TEXT = t(\"NLQ supported by AI\");\nexport const HIGHLIGHTED_TEXT_ICON = \"ai-sparkle-outline\";\nexport const SYNTHESIZED_ANSWER_LABEL = t(\"Answer generated by AI\");\nexport const QA = \"q&a\";\n\nexport const GR_TYPES = {\n\tAI_SEARCH: \"AI_SEARCH\",\n\tNLQ: \"NLQ\",\n\tSYNTHESIZED: \"SYNTHESIZED\"\n};\n\nexport const MOBILE_MEDIA_WIDTH = \"576px\";\nexport const CATALOG_ITEM = t(\"Catalog\");\nexport const NA_CATALOG_ITEM_SPARKLE_TEXT = t(\"Catalog predicted by AI\");\n\n// Card type header constants\nexport const NLQ_CARD_HEADER = t(\"AI NLQ\");\nexport const QA_CARD_HEADER = t(\"AI Q&A\");\n","import { t } from \"sn-translate\";\n\nexport const HORIZONTAL = \"horizontal\";\nexport const VERTICAL = \"vertical\";\nexport const HORIZONTAL_EQUAL = \"horizontal-equal\";\n\nexport const MOBILE_MEDIA_WIDTH = \"576px\";\n\nexport const MAX_DESKTOP_ACTIONS = {\n\tDEFAULT: 3,\n\tGLOBAL: 3\n};\n\nexport const FOOTER_MORE_ACTION_LABEL = t(\"More_menu\");\n\nexport const BUTTON_SLOT_STYLE = {\n\tdisplay: \"-webkit-box\",\n\t\"-webkit-line-clamp\": \"1\",\n\t\"-webkit-box-orient\": \"vertical\",\n\toverflow: \"hidden\",\n\t\"text-overflow\": \"ellipsis\",\n\t\"white-space\": \"normal\"\n};\n\n/** Feedback related labels and messages */\nexport const FEEDBACK_PROMPT_LABEL = t(\"Was this suggestion helpful?\");\nexport const HELPFUL_FEEDBACK_LABEL = t(\"Yes\");\nexport const UNHELPFUL_FEEDBACK_LABEL = t(\"No\");\nexport const POST_FEEDBACK_LABEL = t(\"Thanks for the feedback.\");\nexport const FEEDBACK_DIALOG_HEADER = t(\"Thanks for letting us know!\");\nexport const FEEDBACK_DIALOG_INSTRUCTIONS = t(\n\t\"To help us improve, please let us know why this isn't helpful\"\n);\nexport const FEEDBACK_DIALOG_SEND_BUTTON_LABEL = t(\"Send feedback\");\nexport const FEEDBACK_DIALOG_SEND_BUTTON_TOOLTIP = t(\n\t\"Close dialog box and send feedback with selected reason\"\n);\nexport const CLOSE_FEEDBACK_FORM = t(\"close feedback form\");\n\n// The values that will be used for the feedback \"reason\" if no reason is explicitly specified\nexport const POSITIVE_FEEDBACK_VALUE = \"Helpful\";\nexport const NEGATIVE_FEEDBACK_VALUE = \"Not Helpful\";\n\n//Feedback options for labeling tool\nexport const FEEDBACK_DROPDOWN_PLACEHOLDER = t(\"Relevance\");\nexport const FEEDBACK_DROPDOWN_TOOLTIP = t(\n\t\"Select Relevance for Genius Result\"\n);\nexport const FEEDBACK_DROPDOWN_OPTIONS = [\n\t{ id: \"1\", label: t(\"1\") },\n\t{ id: \"2\", label: t(\"2\") },\n\t{ id: \"3\", label: t(\"3\") },\n\t{ id: \"4\", label: t(\"4\") }\n];\nexport const FEEDBACK_INTENT_LABEL = t(\"Was the Intent correct?\");\nexport const FEEDBACK_INTENT_OPTIONS = [\n\t{ id: true, label: t(\"Yes\") },\n\t{ id: false, label: t(\"No\") }\n];\n\nexport const OTHER_FEEDBACK = \"Other\";\n\n// Options for highlighted value heading\nexport const HEADING = t(\"Suggested result\");\n\n// Marker image sizes (from design specs)\nexport const MARKER_IMAGE = {\n\tHEIGHT_GLOBAL: 32,\n\tWIDTH_GLOBAL: 32,\n\tWIDTH_DEFAULT: 74,\n\tWIDTH_THUMBNAIL: 40\n};\n\nexport const HEADER_TOOLTIP_TEXT = t(\n\t\"This answer was AI generated from search results.\"\n);\nexport const HEADER_TOOLTIP_TEXT_NLQ = t(\n\t\"Use Natural Language Query (NLQ) to find data in your instance by entering plain language requests.\"\n);\n\nexport const ABOUT = t(\"About\");\nexport const ABOUT_POPOVER = \"ABOUT_POPOVER_CLICKED\";\nexport const LEARN_MORE = t(\"Learn more\");\n\nexport const DESCRIPTION_COLLAPSED_STATE_TOGGLED =\n\t\"DESCRIPTION_COLLAPSED_STATE_TOGGLED\";\n\nexport const SYNTHESIZED_GENIUS_RESULT_EXPANDED =\n\t\"SYNTHESIZED_GENIUS_RESULT_EXPANDED\";\n\nexport const VIEW_RECORDS_CLICKED = \"VIEW_RECORDS_CLICKED\";\n\nexport const DESCRIPTION_STATES = {\n\tEXPAND: \"EXPAND\",\n\tCOLLAPSE: \"COLLAPSE\"\n};\n\nexport const TRUNCATION_LIMIT = 80;\n\nexport const CHOOSE_A_TABLE = t(\n\t\"Multiple table sources matched this search. Choose a table:\"\n);\nexport const PREVIEW_TABLE_LABEL = t(\n\t\"Here's a preview of the table that matches your search:\"\n);\n\nexport const GR_TYPES = {\n\tAI_SEARCH: \"AI_SEARCH\",\n\tNLQ: \"NLQ\",\n\tSYNTHESIZED: \"SYNTHESIZED\"\n};\n\nexport const SOURCE_LABEL = t(\"Source:\");\nexport const VIEW_ARTICLE = {\n\tGLOBAL: \"viewArticle\",\n\tPORTAL: \"view_article\"\n};\nexport const ABOUT_BUTTON_LABEL = t(\"About search result\");\n\nexport const NLQ_MULTITABLE_DROPDOWN = \"NLQ_MULTITABLE_DROPDOWN\";\n\nexport const VIEW_TABLE_TRANSLATION = t(\"View full table\");\n\nexport const NLQ_MULTITABLE_HEADER = t(\"Refine and preview\");\n\nexport const NLQ_MULTITABLE_DESCRIPTION = t(\n\t\"Choose tables that match your search terms to quickly preview them.\"\n);\nexport const FOLLOW_UP = \"FOLLOW_UP\";\nexport const FOLLOW_UP_LABEL = t(\"Follow up\");\n\nexport const ASK_A_FOLLOW_UP = \"ASK_A_FOLLOW_UP\";\nexport const ASK_A_FOLLOW_UP_LABEL = t(\"Ask a follow-up\");\n\nexport const FONT_SIZES = {\n\tSM: \"sm\",\n\tMD: \"md\",\n\tLG: \"lg\",\n\tXL: \"xl\"\n};\nexport const ATTACHMENT_ICON = {\n\tDEFAULT_DOC: \"document-template-outline\",\n\tDOWNLOAD: \"download-outline\",\n\tLIST: \"ellipsis-v-fill\"\n};\n\nexport const ICON_SIZE = {\n\tXL: \"xl\",\n\tMD: \"md\",\n\tLG: \"lg\",\n\tSM: \"sm\"\n};\nexport const ATTACHMENT_LABEL = t(\"Attachment\");\nexport const CITATION_ACTION = \"citation_action\";\n\nexport const KEYCODE = {\n\tENTER: \"Enter\",\n\tSPACE: \"Space\"\n};\n\nexport const NLQ_HIGHLIGHTED_TEXT = t(\"NLQ supported by AI\");\nexport const NLQ_ERROR_TITLE = t(\n\t\"No tables were found that match these terms.\"\n);\nexport const NLQ_ERROR_DETAIL = t(\"Try changing your selections.\");\nexport const NLQ_MULTI_TABLE_MINI_TITLE = t(\"Multi-Table\");\nexport const SYNTHESIZED = \"SYNTHESIZED\";\nexport const CLICK = \"click\";\nexport const KG_GENERIC_VIEW_RECORD_ACTION_CLICK =\n\t\"kg_generic_view_record_action_click\";\nexport const CATALOG_CLICK = \"catalog_click\";\nexport const CATALOG_OPEN = \"open_catalog\";\nexport const REQUEST_IN_CHAT_LABEL = t(\"Request in chat\");\nexport const REQUEST_WITH_FORM = t(\"Request with form\");\nexport const CITATION_CLICK = \"citationsClicked\";\nexport const CITATION_TYPES = {\n\tKB: \"kb\",\n\tEXTERNAL_DOCUMENT: \"external_document\",\n\tATTACHMENT: \"attachment\",\n\tCATALOG: \"catalog\",\n\tPEOPLE: \"people\",\n\tKG: \"kg\",\n\tSKILL: \"skill\",\n\tAGENT: \"ai_agent\",\n\tADDITIONAL_SOURCES: \"additional_sources\"\n};\nexport const CITATION_POPOVER_CLICKED = \"CITATION_POPOVER_CLICKED\";\nexport const SHARED_FILES_LOGIN_MESSAGE = t(\n\t`Log in to SharePoint, then ask ServiceNow Otto about this person when you're done.`\n);\n\nexport const AI_SPARKLE_ICON_PATHS = [\n\t\"M7.17 2.995a1.63 1.63 0 0 1-1.174 1.173l-.344.089c-.25.064-.25.42 0 .484l.344.089A1.63 1.63 0 0 1 7.17 6.003l.088.345c.064.25.42.25.484 0l.089-.345A1.63 1.63 0 0 1 9.004 4.83l.345-.089c.25-.064.25-.42 0-.484l-.344-.089A1.63 1.63 0 0 1 7.83 2.995l-.089-.345c-.064-.25-.42-.25-.484 0l-.088.345ZM4.18 5.286a2.23 2.23 0 0 1-1.894 1.895c-.37.053-.37.586 0 .639.982.14 1.754.912 1.895 1.894.052.37.585.37.638 0A2.23 2.23 0 0 1 6.714 7.82c.37-.053.37-.586 0-.639A2.23 2.23 0 0 1 4.82 5.286c-.053-.369-.586-.369-.638 0Z\",\n\t\"M11.23 2.89a1.63 1.63 0 0 1-1.338 1.338l-.145.024c-.278.047-.278.446 0 .493l.145.024a1.63 1.63 0 0 1 1.338 1.338l.024.143c.046.278.446.278.493 0l.024-.143a1.63 1.63 0 0 1 1.338-1.338l.175-.03c.277-.046.278-.444.002-.492l-.179-.032a1.63 1.63 0 0 1-1.323-1.323l-.032-.18c-.049-.277-.446-.276-.493.001l-.03.177ZM6.797 5.17A3.46 3.46 0 0 1 4.17 7.799l-1.404.312c-.417.092-.417.688 0 .78l1.404.313a3.46 3.46 0 0 1 2.627 2.627l.313 1.404c.092.418.688.418.78 0l.313-1.404a3.46 3.46 0 0 1 2.627-2.627l1.404-.312c.417-.093.417-.689 0-.781l-1.404-.312A3.46 3.46 0 0 1 8.203 5.17L7.89 3.766c-.092-.417-.688-.417-.78 0l-.313 1.405Z\",\n\t\"M17.796 2.663a3 3 0 0 1-2.134 2.134l-1.382.365c-.347.092-.347.585 0 .677l1.383.365a3 3 0 0 1 2.133 2.134l.366 1.382c.091.347.585.347.676 0l.366-1.382a3 3 0 0 1 2.133-2.134l1.383-.365c.347-.092.347-.585 0-.677l-1.382-.365a3 3 0 0 1-2.134-2.134l-.366-1.382c-.091-.348-.585-.348-.676 0zm-8.38 4.924a6.5 6.5 0 0 1-4.83 4.83l-2.114.5c-.616.145-.616 1.021 0 1.167l2.117.502a6.5 6.5 0 0 1 4.827 4.829l.5 2.114c.146.616 1.022.616 1.168 0l.502-2.117a6.5 6.5 0 0 1 4.826-4.826l2.117-.502c.616-.146.616-1.022 0-1.168l-2.114-.5a6.5 6.5 0 0 1-4.83-4.827l-.5-2.117c-.147-.616-1.023-.616-1.168 0z\",\n\t\"M23.464 4.453a3 3 0 0 1-2.011 2.011l-2.208.663a.39.39 0 0 0 0 .747l2.208.662a3 3 0 0 1 2.011 2.011l.663 2.209a.39.39 0 0 0 .747 0l.664-2.21a3 3 0 0 1 2.01-2.01l2.207-.662a.39.39 0 0 0 0-.747l-2.208-.663a3 3 0 0 1-2.011-2.011l-.662-2.208a.39.39 0 0 0-.747 0zm-12.03 7.417a7 7 0 0 1-4.565 4.564l-4.365 1.38c-.67.212-.67 1.16 0 1.373l4.368 1.382a7 7 0 0 1 4.562 4.564l1.38 4.364c.212.67 1.16.67 1.373 0l1.383-4.367a7 7 0 0 1 4.56-4.56l4.367-1.383c.67-.212.67-1.161 0-1.373l-4.364-1.38a7 7 0 0 1-4.563-4.562l-1.383-4.368c-.212-.67-1.161-.67-1.373 0z\"\n];\n\nexport const SHOW_LESS_LABEL = t(\"Show less\");\nexport const SHOW_MORE_LABEL = t(\"Show more\");\nexport const SHOW_FULL_ANSWER_LABEL = t(\"Show full answer\");\nexport const KB_ARTICLE_LABEL = t(\"KB article\");\nexport const UNTITLED_DOCUMENT_LABEL = t(\"Untitled document\");\nexport const OTHER_SOURCES_LABEL = t(\"Other sources\");\nexport const EXTERNAL_DOCUMENT_LABEL = t(\"External document\");\nexport const UNKNOWN_TABLE_LABEL = t(\"Unknown table\");\nexport const UNKNOWN_RECORD_LABEL = t(\"Unknown record\");\nexport const UNKNOWN_LABEL = t(\"Unknown\");\nexport const LOG_IN_LABEL = t(\"Log in\");\nexport const MANAGER_LABEL = t(\"Manager\");\nexport const LOCATION_LABEL = t(\"Location\");\nexport const EMAIL_LABEL = t(\"Email\");\nexport const PHONE_LABEL = t(\"Phone\");\nexport const SHARED_FILES_LABEL = t(\"Shared files\");\n\nexport const CAT_REGEX = /\\(cat_(\\d+)\\)/g;\nexport const CAT_PREFIX = \"cat_\";\nexport const ACTION_REGEX = /\\(action_(\\d+)\\)/g;\nexport const ACTION_PREFIX = \"action_\";\n","import { isEmpty, isEqual } from \"lodash\";\nimport {\n\tSYNTHESIZED,\n\tCITATION_TYPES,\n\tCAT_REGEX,\n\tCAT_PREFIX,\n\tACTION_REGEX,\n\tACTION_PREFIX\n} from \"../../constants\";\nimport { t } from \"sn-translate\";\n\nfunction replaceKBReferences(text, citations) {\n\tconst DOC_REGEX = /\\(doc_(\\d+)\\)/g;\n\treturn text.replace(DOC_REGEX, (match, docId) => {\n\t\tconst citationKey = `doc_${docId}`;\n\t\tconst citationData = citations[citationKey];\n\t\tif (!citationData) {\n\t\t\treturn match;\n\t\t}\n\t\tif (\n\t\t\tcitationData.source_type === CITATION_TYPES.KB ||\n\t\t\tcitationData.source_type === CITATION_TYPES.EXTERNAL_DOCUMENT ||\n\t\t\tcitationData.source_type === CITATION_TYPES.ATTACHMENT\n\t\t) {\n\t\t\tconst citationNumber = citationData.number || \"?\";\n\t\t\treturn `<now-badge class=\"replaced-text-kb ${citationData.sys_id}\" color=\"gray\" variant=\"secondary\" size=\"sm\" round value=\"${citationNumber}\">${citationNumber}</now-badge>`;\n\t\t}\n\t\treturn match;\n\t});\n}\n\nfunction replaceAdditionalSourcesReferences(text, citations) {\n\t// additional_sources shares the same doc_N placeholder prefix as KB;\n\t// the two are distinguished only by source_type. KB runs first and leaves\n\t// non-KB doc_N refs untouched, so there is no collision.\n\tconst DOC_REGEX = /\\(doc_(\\d+)\\)/g;\n\treturn text.replace(DOC_REGEX, (match, docId) => {\n\t\tconst citationKey = `doc_${docId}`;\n\t\tconst citationData = citations[citationKey];\n\t\tif (!citationData) {\n\t\t\treturn match;\n\t\t}\n\t\tif (citationData.source_type === CITATION_TYPES.ADDITIONAL_SOURCES) {\n\t\t\tconst citationNumber = citationData.number || \"?\";\n\t\t\treturn `<now-badge class=\"replaced-text-additional-sources ${citationData.sys_id}\" color=\"gray\" variant=\"secondary\" size=\"sm\" round value=\"${citationNumber}\">${citationNumber}</now-badge>`;\n\t\t}\n\t\treturn match;\n\t});\n}\n\nfunction replaceCatalogReferences(text, citations) {\n\tlet regexToUse = CAT_REGEX;\n\tlet citationPrefix = CAT_PREFIX;\n\tif (ACTION_REGEX.test(text)) {\n\t\tregexToUse = ACTION_REGEX;\n\t\tcitationPrefix = ACTION_PREFIX;\n\t}\n\n\treturn text.replace(regexToUse, (match, catId) => {\n\t\tconst citationKey = `${citationPrefix}${catId}`;\n\t\tconst citationData = citations[citationKey];\n\t\tif (!citationData) return match;\n\n\t\tif (citationData.source_type === CITATION_TYPES.CATALOG) {\n\t\t\tconst catName = (citationData.title || t(\"Unknown Catalog Item\"))\n\t\t\t\t.replace(/\\r?\\n/g, \"\")\n\t\t\t\t.replace(/\"/g, \"&quot;\")\n\t\t\t\t.trim();\n\t\t\treturn `<now-text-link class=\"replaced-text-catalog ${citationData.sys_id}\" variant=\"primary\" size=\"md\" slot=\"trigger\" icon-start=\"pencil-page-outline\" label=\"${catName}\" href=\"javascript:void(0);\"></now-text-link>`;\n\t\t}\n\n\t\treturn match;\n\t});\n}\n\nfunction replaceSkillReferences(text, citations) {\n\tlet regexToUse = CAT_REGEX;\n\tlet citationPrefix = CAT_PREFIX;\n\tif (ACTION_REGEX.test(text)) {\n\t\tregexToUse = ACTION_REGEX;\n\t\tcitationPrefix = ACTION_PREFIX;\n\t}\n\n\treturn text.replace(regexToUse, (match, catId) => {\n\t\tconst citationKey = `${citationPrefix}${catId}`;\n\t\tconst citationData = citations[citationKey];\n\t\tif (!citationData) return match;\n\n\t\tif (\n\t\t\tcitationData.source_type === CITATION_TYPES.SKILL ||\n\t\t\tcitationData.source_type === CITATION_TYPES.AGENT\n\t\t) {\n\t\t\tconst skillName = (citationData.title || t(\"Unknown skill\"))\n\t\t\t\t.replace(/\\r?\\n/g, \"\")\n\t\t\t\t.replace(/\"/g, \"&quot;\")\n\t\t\t\t.trim();\n\t\t\treturn `<now-text-link class=\"replaced-text-skill ${citationData.sys_id}\" variant=\"primary\" size=\"md\" slot=\"trigger\" icon-end=\"chat-outline\" label=\"${skillName}\" href=\"javascript:void(0);\"></now-text-link>`;\n\t\t}\n\n\t\treturn match;\n\t});\n}\n\nfunction replaceKgReferences(text, citations) {\n\tconst REGEX = /\\(kg_id_(\\d+)\\)/g;\n\treturn text.replace(REGEX, (match, id) => {\n\t\tconst citationKey = `kg_id_${id}`;\n\t\tconst citationData = citations[citationKey];\n\t\tif (!citationData) return match;\n\n\t\tif (citationData.source_type === CITATION_TYPES.PEOPLE) {\n\t\t\tconst userName = (citationData.name || t(\"Unknown user\"))\n\t\t\t\t.replace(/\\r?\\n/g, \"\")\n\t\t\t\t.replace(/\"/g, \"&quot;\")\n\t\t\t\t.trim();\n\t\t\treturn `<now-text-link class=\"replaced-text-people ${citationData?.sys_id ||\n\t\t\t\tcitationData?.source_sys_id}\" variant=\"primary\" size=\"md\" slot=\"trigger\" icon-start=\"user-outline\" label=\"${userName}\" href=\"javascript:void(0);\"></now-text-link>`;\n\t\t}\n\n\t\tif (citationData.source_type === CITATION_TYPES.KG) {\n\t\t\tconst displayValue = (citationData.display_value || t(\"Unknown record\"))\n\t\t\t\t.replace(/\\r?\\n/g, \"\")\n\t\t\t\t.replace(/\"/g, \"&quot;\")\n\t\t\t\t.trim();\n\t\t\treturn `<now-text-link class=\"replaced-text-kg ${citationData?.sys_id ||\n\t\t\t\tcitationData?.source_sys_id}\" variant=\"primary\" size=\"md\" slot=\"trigger\" icon-start=\"table-outline\" label=\"${displayValue}\" href=\"javascript:void(0);\"></now-text-link>`;\n\t\t}\n\n\t\treturn match;\n\t});\n}\n\nexport function replaceCitationsWithTemporaryPlaceHolders(\n\ttextToUpdate,\n\tcitations = {}\n) {\n\tlet updatedText = textToUpdate;\n\tif (!isEmpty(citations)) {\n\t\tupdatedText = replaceKBReferences(updatedText, citations);\n\t\tupdatedText = replaceAdditionalSourcesReferences(updatedText, citations);\n\t\tupdatedText = replaceCatalogReferences(updatedText, citations);\n\t\tupdatedText = replaceSkillReferences(updatedText, citations);\n\t\tupdatedText = replaceKgReferences(updatedText, citations);\n\t}\n\treturn updatedText;\n}\n\nexport function isSynthesized(grType) {\n\treturn isEqual(grType, SYNTHESIZED);\n}\n\n/**\n * looksLikeListStart\n * ------------------\n * Checks if a line *begins* with a Markdown list marker.\n * Accepts up to 8 leading whitespace chars, then:\n *   - unordered list: '-', '*', or '+', followed by a space\n *   - ordered list:   digits followed by '.' and a space\n * Returns true if it looks like the start of a list item.\n */\nexport function looksLikeListStart(line) {\n\treturn /^\\s{0,8}([-*+]\\s|\\d+\\.\\s)/.test(line);\n}\n\n/**\n * stripListMarker\n * ---------------\n * Removes the list marker (and any leading spaces) from a line.\n * Example: \"  - Apple\" -> \"Apple\"\n */\nexport function stripListMarker(line) {\n\treturn line.replace(/^\\s{0,8}(?:[-*+]\\s|\\d+\\.\\s)/, \"\");\n}\n\n/**\n * countLeadingSpaces\n * ------------------\n * Counts how many consecutive leading spaces (up to 8) a line starts with.\n * Used to determine nesting level for ghost lists.\n * Example: \"    - Apple\" -> 4\n */\nexport function countLeadingSpaces(line) {\n\tconst m = line.match(/^(\\s{1,8})/);\n\treturn m ? m[1].length : 0;\n}\n\n/**\n * escapeHtml\n * ----------\n * Escapes special HTML characters so they render safely as text\n * instead of being interpreted as HTML tags.\n *\n * - Converts &, <, >, \" and ' into their HTML entities.\n * - Skips over existing entities (e.g., &lt;, &quot;, &#39;), so it will not double-escape.\n * - Safe to call multiple times: running escapeHtml on already-escaped text\n *   will return the same string unchanged.\n *\n * Example:\n *   \"<b class=\\\"x\\\">& y</b>\"\n *   -> \"&lt;b class=&quot;x&quot;&gt;&amp; y&lt;/b&gt;\"\n */\nexport function escapeHtml(s = \"\") {\n\treturn s\n\t\t.replace(/&(?!([a-zA-Z]+|#\\d+|#x[0-9a-fA-F]+);)/g, \"&amp;\")\n\t\t.replace(/</g, \"&lt;\")\n\t\t.replace(/>/g, \"&gt;\")\n\t\t.replace(/\"/g, \"&quot;\")\n\t\t.replace(/'/g, \"&#39;\");\n}\n\n/**\n * normalizeFullWidthParensAroundUrls\n * -----------------------------------\n * Japanese text commonly wraps URLs in full-width parentheses: 「（https://...）」.\n * marked's GFM autolink correctly handles ASCII `(url)` balanced pairs and strips\n * the trailing `)` from the href, but does NOT recognise the full-width variants\n * U+FF08 `（` and U+FF09 `）` as URL boundary characters.\n *\n * As a result, `）` and every subsequent CJK character (up to the next ASCII\n * space) are silently absorbed into the autolink href, producing a broken URL\n * whose visible anchor text spans a large chunk of surrounding Japanese text.\n *\n * Example (before fix):\n *   Input:  \"ガイド（https://example.com/path）を参照してください。\"\n *   marked: '<a href=\"https://example.com/path）を参照してください。\">…</a>'\n *              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ wrong — spans whole phrase\n *\n * Example (after fix):\n *   Input normalised to: \"ガイド(https://example.com/path)を参照してください。\"\n *   marked: \"ガイド(<a href=\"https://example.com/path\">https://example.com/path</a>)を参照\"\n *\n * Only converts parens that are directly adjacent to a URL scheme (`http(s)://`)\n * to avoid changing unrelated full-width parentheses in the text.\n */\nexport function normalizeFullWidthParensAroundUrls(text) {\n\t// （https:// → (https://\n\tlet result = text.replace(/（(https?:\\/\\/)/g, \"($1\");\n\t// https://...） → https://...) — stops at the first ） after the URL\n\tresult = result.replace(/(https?:\\/\\/[^\\s）]*?)）/g, \"$1)\");\n\treturn result;\n}\n\n/**\n * parseInlineReferences\n *\n * Scans the input text for special inline JSON references of the form:\n * \\u200b[{...}]\\u200b\n * and transforms them. For example:\n *   - If source_type is 'sys_user', we convert it into a Markdown image,\n *     embedding the sys_id in the image title so the Marked extension can detect it in view.\n *   - Otherwise, we replace it with a simple (placeholder) which then are replaced by corresponding elements in utils file.\n */\nexport const parseInlineReferences = rawText => {\n\tconst refRegex = /\\u200b\\[\\{([\\s\\S]*?)\\}\\]\\u200b/g;\n\tlet match;\n\tlet updatedText = rawText;\n\tconst foundCitations = {};\n\n\twhile ((match = refRegex.exec(rawText)) !== null) {\n\t\tconst fullMatch = match[0];\n\t\tconst jsonInside = match[1];\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(`{${jsonInside}}`);\n\t\t\tconst placeholder = parsed.placeholder || \"unknown\";\n\t\t\tfoundCitations[placeholder] = parsed;\n\n\t\t\tupdatedText = updatedText.replace(fullMatch, `(${placeholder})`);\n\t\t} catch (e) {\n\t\t\t// Don't do anything if parse fails\n\t\t}\n\t}\n\n\treturn { updatedText, foundCitations };\n};\n","import \"@servicenow/now-highlighted-value\";\nimport \"@servicenow/now-tooltip\";\nimport isEmpty from \"lodash/isEmpty\";\nimport {\n\tHEADING,\n\tHEADER_TOOLTIP_TEXT,\n\tABOUT_POPOVER,\n\tABOUT_BUTTON_LABEL\n} from \"../constants\";\nimport { t } from \"sn-translate\";\nimport { isSynthesized } from \"../common/streaming/utils\";\n\nconst view = ({\n\thighlightedText,\n\thighlightedTextIcon,\n\tshowHeaderTooltip,\n\tupdateState,\n\ttoolTipRef,\n\tshowAboutInfo,\n\tdocumentationUrl,\n\tgrType\n}) => {\n\tconst tooltipProps = {\n\t\t\"hook-insert\": ({ elm }) => updateState({ toolTipRef: elm }),\n\t\t\"hook-destroy\": () => updateState({ toolTipRef: null })\n\t};\n\tconst isSynthesizedGR = isSynthesized(grType);\n\n\tconst label = !isEmpty(highlightedText) ? highlightedText : HEADING;\n\tconst color = !isEmpty(highlightedTextIcon) ? \"moderate\" : \"gray\";\n\n\tconst aboutSection = showAboutInfo ? (\n\t\t<span className=\"genius-card-about-container\">\n\t\t\t<now-popover\n\t\t\t\tinteractionType=\"dialog\"\n\t\t\t\tfocusPanel\n\t\t\t\thideTail\n\t\t\t\tpositions={[{ target: \"bottom-start\", content: \"top-start\" }]}\n\t\t\t\tappend-to-payload={{ actionId: ABOUT_POPOVER }}\n\t\t\t>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\ticon=\"circle-info-outline\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\tbutton: { \"aria-label\": ABOUT_BUTTON_LABEL }\n\t\t\t\t\t}}\n\t\t\t\t\tbare\n\t\t\t\t\thidePadding\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tappend-to-payload={{ actionId: ABOUT_POPOVER }}\n\t\t\t\t/>\n\t\t\t\t<now-card slot=\"content\" size=\"sm\" interaction=\"none\" hideShadow>\n\t\t\t\t\t<sn-search-genius-about-popover\n\t\t\t\t\t\turl={documentationUrl}\n\t\t\t\t\t\tgrType={grType}\n\t\t\t\t\t/>\n\t\t\t\t</now-card>\n\t\t\t</now-popover>\n\t\t</span>\n\t) : null;\n\n\treturn (\n\t\t<div className=\"genius-card-header\">\n\t\t\t<div className=\"genius-card-header__element\">\n\t\t\t\t{isSynthesizedGR ? (\n\t\t\t\t\t<div className=\"synthesized-gr-highlighted-text-container\">\n\t\t\t\t\t\t<now-icon icon=\"ai-sparkle-outline\" size=\"md\" />\n\t\t\t\t\t\t<span className=\"synthesized-gr-highlighted-text\">{label}</span>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<now-highlighted-value\n\t\t\t\t\t\t{...(showHeaderTooltip ? tooltipProps : {})}\n\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\ticon={highlightedTextIcon}\n\t\t\t\t\t\taria-describedby=\"headerTooltip\"\n\t\t\t\t\t\tclassName={t(\"header-highlighted-value\")}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{aboutSection}\n\t\t\t\t{showHeaderTooltip ? (\n\t\t\t\t\t<now-tooltip\n\t\t\t\t\t\tid=\"headerTooltip\"\n\t\t\t\t\t\taria-label={HEADER_TOOLTIP_TEXT}\n\t\t\t\t\t\trole=\"tooltip\"\n\t\t\t\t\t\ttarget-ref={toolTipRef}\n\t\t\t\t\t\tcontent={HEADER_TOOLTIP_TEXT}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default view;\n","/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n    return {\n        async: false,\n        breaks: false,\n        extensions: null,\n        gfm: true,\n        hooks: null,\n        pedantic: false,\n        renderer: null,\n        silent: false,\n        tokenizer: null,\n        walkTokens: null,\n    };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n    _defaults = newDefaults;\n}\n","const noopTest = { exec: () => null };\nfunction edit(regex, opt = '') {\n    let source = typeof regex === 'string' ? regex : regex.source;\n    const obj = {\n        replace: (name, val) => {\n            let valSource = typeof val === 'string' ? val : val.source;\n            valSource = valSource.replace(other.caret, '$1');\n            source = source.replace(name, valSource);\n            return obj;\n        },\n        getRegex: () => {\n            return new RegExp(source, opt);\n        },\n    };\n    return obj;\n}\nexport const other = {\n    codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n    outputLinkReplace: /\\\\([\\[\\]])/g,\n    indentCodeCompensation: /^(\\s+)(?:```)/,\n    beginningSpace: /^\\s+/,\n    endingHash: /#$/,\n    startingSpaceChar: /^ /,\n    endingSpaceChar: / $/,\n    nonSpaceChar: /[^ ]/,\n    newLineCharGlobal: /\\n/g,\n    tabCharGlobal: /\\t/g,\n    multipleSpaceGlobal: /\\s+/g,\n    blankLine: /^[ \\t]*$/,\n    doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n    blockquoteStart: /^ {0,3}>/,\n    blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n    blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n    listReplaceTabs: /^\\t+/,\n    listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n    listIsTask: /^\\[[ xX]\\] /,\n    listReplaceTask: /^\\[[ xX]\\] +/,\n    anyLine: /\\n.*\\n/,\n    hrefBrackets: /^<(.*)>$/,\n    tableDelimiter: /[:|]/,\n    tableAlignChars: /^\\||\\| *$/g,\n    tableRowBlankLine: /\\n[ \\t]*$/,\n    tableAlignRight: /^ *-+: *$/,\n    tableAlignCenter: /^ *:-+: *$/,\n    tableAlignLeft: /^ *:-+ *$/,\n    startATag: /^<a /i,\n    endATag: /^<\\/a>/i,\n    startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n    endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n    startAngleBracket: /^</,\n    endAngleBracket: />$/,\n    pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n    unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n    escapeTest: /[&<>\"']/,\n    escapeReplace: /[&<>\"']/g,\n    escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n    escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n    unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n    caret: /(^|[^\\[])\\^/g,\n    percentDecode: /%25/g,\n    findPipe: /\\|/g,\n    splitPipe: / \\|/,\n    slashPipe: /\\\\\\|/g,\n    carriageReturn: /\\r\\n|\\r/g,\n    spaceLine: /^ +$/gm,\n    notSpaceStart: /^\\S*/,\n    endingNewline: /\\n$/,\n    listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`),\n    nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`),\n    hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n    fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n    headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n    htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),\n};\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nconst lheading = edit(lheadingCore)\n    .replace(/bull/g, bullet) // lists can interrupt\n    .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n    .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n    .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n    .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n    .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n    .replace(/\\|table/g, '') // table not in commonmark\n    .getRegex();\nconst lheadingGfm = edit(lheadingCore)\n    .replace(/bull/g, bullet) // lists can interrupt\n    .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n    .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n    .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n    .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n    .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n    .replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/) // table can interrupt\n    .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n    .replace('label', _blockLabel)\n    .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n    .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n    .replace(/bull/g, bullet)\n    .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n    + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n    + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n    + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n    + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n    + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n    + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n    + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n    + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n    + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n    + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n    + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n    + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n    + ')', 'i')\n    .replace('comment', _comment)\n    .replace('tag', _tag)\n    .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n    .getRegex();\nconst paragraph = edit(_paragraph)\n    .replace('hr', hr)\n    .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n    .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n    .replace('|table', '')\n    .replace('blockquote', ' {0,3}>')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n    .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n    .replace('paragraph', paragraph)\n    .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n    blockquote,\n    code: blockCode,\n    def,\n    fences,\n    heading,\n    hr,\n    html,\n    lheading,\n    list,\n    newline,\n    paragraph,\n    table: noopTest,\n    text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n    + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n    + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n    .replace('hr', hr)\n    .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n    .replace('blockquote', ' {0,3}>')\n    .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n    .getRegex();\nconst blockGfm = {\n    ...blockNormal,\n    lheading: lheadingGfm,\n    table: gfmTable,\n    paragraph: edit(_paragraph)\n        .replace('hr', hr)\n        .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n        .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n        .replace('table', gfmTable) // interrupt paragraphs with table\n        .replace('blockquote', ' {0,3}>')\n        .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n        .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n        .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n        .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n        .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n    ...blockNormal,\n    html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n        + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n        + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n        .replace('comment', _comment)\n        .replace(/tag/g, '(?!(?:'\n        + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n        + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n        + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n        .getRegex(),\n    def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n    heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n    fences: noopTest, // fences not supported\n    lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n    paragraph: edit(_paragraph)\n        .replace('hr', hr)\n        .replace('heading', ' *#{1,6} *[^\\n]')\n        .replace('lheading', lheading)\n        .replace('|table', '')\n        .replace('blockquote', ' {0,3}>')\n        .replace('|fences', '')\n        .replace('|list', '')\n        .replace('|html', '')\n        .replace('|tag', '')\n        .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = /[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nconst punctuation = edit(/^((?![*_])punctSpace)/, 'u')\n    .replace(/punctSpace/g, _punctuationOrSpace).getRegex();\n// GFM allows ~ inside strong and em for strikethrough\nconst _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\nconst emStrongLDelim = edit(emStrongLDelimCore, 'u')\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst emStrongLDelimGfm = edit(emStrongLDelimCore, 'u')\n    .replace(/punct/g, _punctuationGfmStrongEm)\n    .getRegex();\nconst emStrongRDelimAstCore = '^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n    + '|[^*]+(?=[^*])' // Consume to delim\n    + '|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n    + '|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)' // (2) a***#, a*** can only be a Right Delimiter\n    + '|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)' // (3) #***a, ***a can only be Left Delimiter\n    + '|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)' // (4) ***# can only be Left Delimiter\n    + '|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)' // (5) #***# can be either Left or Right Delimiter\n    + '|notPunctSpace(\\\\*+)(?=notPunctSpace)'; // (6) a***a can be either Left or Right Delimiter\nconst emStrongRDelimAst = edit(emStrongRDelimAstCore, 'gu')\n    .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n    .replace(/punctSpace/g, _punctuationOrSpace)\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, 'gu')\n    .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm)\n    .replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm)\n    .replace(/punct/g, _punctuationGfmStrongEm)\n    .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n    + '|[^_]+(?=[^_])' // Consume to delim\n    + '|(?!_)punct(_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n    + '|notPunctSpace(_+)(?!_)(?=punctSpace|$)' // (2) a___#, a___ can only be a Right Delimiter\n    + '|(?!_)punctSpace(_+)(?=notPunctSpace)' // (3) #___a, ___a can only be Left Delimiter\n    + '|[\\\\s](_+)(?!_)(?=punct)' // (4) ___# can only be Left Delimiter\n    + '|(?!_)punct(_+)(?!_)(?=punct)', 'gu') // (5) #___# can be either Left or Right Delimiter\n    .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n    .replace(/punctSpace/g, _punctuationOrSpace)\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst anyPunctuation = edit(/\\\\(punct)/, 'gu')\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n    .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n    .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n    .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n    + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n    .replace('comment', _inlineComment)\n    .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n    .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n    .replace('label', _inlineLabel)\n    .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n    .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n    .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n    .replace('label', _inlineLabel)\n    .replace('ref', _blockLabel)\n    .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n    .replace('ref', _blockLabel)\n    .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n    .replace('reflink', reflink)\n    .replace('nolink', nolink)\n    .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n    _backpedal: noopTest, // only used for GFM url\n    anyPunctuation,\n    autolink,\n    blockSkip,\n    br,\n    code: inlineCode,\n    del: noopTest,\n    emStrongLDelim,\n    emStrongRDelimAst,\n    emStrongRDelimUnd,\n    escape,\n    link,\n    nolink,\n    punctuation,\n    reflink,\n    reflinkSearch,\n    tag,\n    text: inlineText,\n    url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n    ...inlineNormal,\n    link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n        .replace('label', _inlineLabel)\n        .getRegex(),\n    reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n        .replace('label', _inlineLabel)\n        .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n    ...inlineNormal,\n    emStrongRDelimAst: emStrongRDelimAstGfm,\n    emStrongLDelim: emStrongLDelimGfm,\n    url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n        .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n        .getRegex(),\n    _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n    del: /^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n    text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/,\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n    ...inlineGfm,\n    br: edit(br).replace('{2,}', '*').getRegex(),\n    text: edit(inlineGfm.text)\n        .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n        .replace(/\\{2,\\}/g, '*')\n        .getRegex(),\n};\n/**\n * exports\n */\nexport const block = {\n    normal: blockNormal,\n    gfm: blockGfm,\n    pedantic: blockPedantic,\n};\nexport const inline = {\n    normal: inlineNormal,\n    gfm: inlineGfm,\n    breaks: inlineBreaks,\n    pedantic: inlinePedantic,\n};\n","import { other } from './rules.ts';\n/**\n * Helpers\n */\nconst escapeReplacements = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n    if (encode) {\n        if (other.escapeTest.test(html)) {\n            return html.replace(other.escapeReplace, getEscapeReplacement);\n        }\n    }\n    else {\n        if (other.escapeTestNoEncode.test(html)) {\n            return html.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n        }\n    }\n    return html;\n}\nexport function unescape(html) {\n    // explicitly match decimal, hex, and named HTML entities\n    return html.replace(other.unescapeTest, (_, n) => {\n        n = n.toLowerCase();\n        if (n === 'colon')\n            return ':';\n        if (n.charAt(0) === '#') {\n            return n.charAt(1) === 'x'\n                ? String.fromCharCode(parseInt(n.substring(2), 16))\n                : String.fromCharCode(+n.substring(1));\n        }\n        return '';\n    });\n}\nexport function cleanUrl(href) {\n    try {\n        href = encodeURI(href).replace(other.percentDecode, '%');\n    }\n    catch {\n        return null;\n    }\n    return href;\n}\nexport function splitCells(tableRow, count) {\n    // ensure that every cell-delimiting pipe has a space\n    // before it to distinguish it from an escaped pipe\n    const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n        let escaped = false;\n        let curr = offset;\n        while (--curr >= 0 && str[curr] === '\\\\')\n            escaped = !escaped;\n        if (escaped) {\n            // odd number of slashes means | is escaped\n            // so we leave it alone\n            return '|';\n        }\n        else {\n            // add space before unescaped |\n            return ' |';\n        }\n    }), cells = row.split(other.splitPipe);\n    let i = 0;\n    // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n    if (!cells[0].trim()) {\n        cells.shift();\n    }\n    if (cells.length > 0 && !cells.at(-1)?.trim()) {\n        cells.pop();\n    }\n    if (count) {\n        if (cells.length > count) {\n            cells.splice(count);\n        }\n        else {\n            while (cells.length < count)\n                cells.push('');\n        }\n    }\n    for (; i < cells.length; i++) {\n        // leading or trailing whitespace is ignored per the gfm spec\n        cells[i] = cells[i].trim().replace(other.slashPipe, '|');\n    }\n    return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n    const l = str.length;\n    if (l === 0) {\n        return '';\n    }\n    // Length of suffix matching the invert condition.\n    let suffLen = 0;\n    // Step left until we fail to match the invert condition.\n    while (suffLen < l) {\n        const currChar = str.charAt(l - suffLen - 1);\n        if (currChar === c && !invert) {\n            suffLen++;\n        }\n        else if (currChar !== c && invert) {\n            suffLen++;\n        }\n        else {\n            break;\n        }\n    }\n    return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n    if (str.indexOf(b[1]) === -1) {\n        return -1;\n    }\n    let level = 0;\n    for (let i = 0; i < str.length; i++) {\n        if (str[i] === '\\\\') {\n            i++;\n        }\n        else if (str[i] === b[0]) {\n            level++;\n        }\n        else if (str[i] === b[1]) {\n            level--;\n            if (level < 0) {\n                return i;\n            }\n        }\n    }\n    return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, findClosingBracket, } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer, rules) {\n    const href = link.href;\n    const title = link.title || null;\n    const text = cap[1].replace(rules.other.outputLinkReplace, '$1');\n    if (cap[0].charAt(0) !== '!') {\n        lexer.state.inLink = true;\n        const token = {\n            type: 'link',\n            raw,\n            href,\n            title,\n            text,\n            tokens: lexer.inlineTokens(text),\n        };\n        lexer.state.inLink = false;\n        return token;\n    }\n    return {\n        type: 'image',\n        raw,\n        href,\n        title,\n        text,\n    };\n}\nfunction indentCodeCompensation(raw, text, rules) {\n    const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n    if (matchIndentToCode === null) {\n        return text;\n    }\n    const indentToCode = matchIndentToCode[1];\n    return text\n        .split('\\n')\n        .map(node => {\n        const matchIndentInNode = node.match(rules.other.beginningSpace);\n        if (matchIndentInNode === null) {\n            return node;\n        }\n        const [indentInNode] = matchIndentInNode;\n        if (indentInNode.length >= indentToCode.length) {\n            return node.slice(indentToCode.length);\n        }\n        return node;\n    })\n        .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n    options;\n    rules; // set by the lexer\n    lexer; // set by the lexer\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    space(src) {\n        const cap = this.rules.block.newline.exec(src);\n        if (cap && cap[0].length > 0) {\n            return {\n                type: 'space',\n                raw: cap[0],\n            };\n        }\n    }\n    code(src) {\n        const cap = this.rules.block.code.exec(src);\n        if (cap) {\n            const text = cap[0].replace(this.rules.other.codeRemoveIndent, '');\n            return {\n                type: 'code',\n                raw: cap[0],\n                codeBlockStyle: 'indented',\n                text: !this.options.pedantic\n                    ? rtrim(text, '\\n')\n                    : text,\n            };\n        }\n    }\n    fences(src) {\n        const cap = this.rules.block.fences.exec(src);\n        if (cap) {\n            const raw = cap[0];\n            const text = indentCodeCompensation(raw, cap[3] || '', this.rules);\n            return {\n                type: 'code',\n                raw,\n                lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n                text,\n            };\n        }\n    }\n    heading(src) {\n        const cap = this.rules.block.heading.exec(src);\n        if (cap) {\n            let text = cap[2].trim();\n            // remove trailing #s\n            if (this.rules.other.endingHash.test(text)) {\n                const trimmed = rtrim(text, '#');\n                if (this.options.pedantic) {\n                    text = trimmed.trim();\n                }\n                else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n                    // CommonMark requires space before trailing #s\n                    text = trimmed.trim();\n                }\n            }\n            return {\n                type: 'heading',\n                raw: cap[0],\n                depth: cap[1].length,\n                text,\n                tokens: this.lexer.inline(text),\n            };\n        }\n    }\n    hr(src) {\n        const cap = this.rules.block.hr.exec(src);\n        if (cap) {\n            return {\n                type: 'hr',\n                raw: rtrim(cap[0], '\\n'),\n            };\n        }\n    }\n    blockquote(src) {\n        const cap = this.rules.block.blockquote.exec(src);\n        if (cap) {\n            let lines = rtrim(cap[0], '\\n').split('\\n');\n            let raw = '';\n            let text = '';\n            const tokens = [];\n            while (lines.length > 0) {\n                let inBlockquote = false;\n                const currentLines = [];\n                let i;\n                for (i = 0; i < lines.length; i++) {\n                    // get lines up to a continuation\n                    if (this.rules.other.blockquoteStart.test(lines[i])) {\n                        currentLines.push(lines[i]);\n                        inBlockquote = true;\n                    }\n                    else if (!inBlockquote) {\n                        currentLines.push(lines[i]);\n                    }\n                    else {\n                        break;\n                    }\n                }\n                lines = lines.slice(i);\n                const currentRaw = currentLines.join('\\n');\n                const currentText = currentRaw\n                    // precede setext continuation with 4 spaces so it isn't a setext\n                    .replace(this.rules.other.blockquoteSetextReplace, '\\n    $1')\n                    .replace(this.rules.other.blockquoteSetextReplace2, '');\n                raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n                text = text ? `${text}\\n${currentText}` : currentText;\n                // parse blockquote lines as top level tokens\n                // merge paragraphs if this is a continuation\n                const top = this.lexer.state.top;\n                this.lexer.state.top = true;\n                this.lexer.blockTokens(currentText, tokens, true);\n                this.lexer.state.top = top;\n                // if there is no continuation then we are done\n                if (lines.length === 0) {\n                    break;\n                }\n                const lastToken = tokens.at(-1);\n                if (lastToken?.type === 'code') {\n                    // blockquote continuation cannot be preceded by a code block\n                    break;\n                }\n                else if (lastToken?.type === 'blockquote') {\n                    // include continuation in nested blockquote\n                    const oldToken = lastToken;\n                    const newText = oldToken.raw + '\\n' + lines.join('\\n');\n                    const newToken = this.blockquote(newText);\n                    tokens[tokens.length - 1] = newToken;\n                    raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n                    text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n                    break;\n                }\n                else if (lastToken?.type === 'list') {\n                    // include continuation in nested list\n                    const oldToken = lastToken;\n                    const newText = oldToken.raw + '\\n' + lines.join('\\n');\n                    const newToken = this.list(newText);\n                    tokens[tokens.length - 1] = newToken;\n                    raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n                    text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n                    lines = newText.substring(tokens.at(-1).raw.length).split('\\n');\n                    continue;\n                }\n            }\n            return {\n                type: 'blockquote',\n                raw,\n                tokens,\n                text,\n            };\n        }\n    }\n    list(src) {\n        let cap = this.rules.block.list.exec(src);\n        if (cap) {\n            let bull = cap[1].trim();\n            const isordered = bull.length > 1;\n            const list = {\n                type: 'list',\n                raw: '',\n                ordered: isordered,\n                start: isordered ? +bull.slice(0, -1) : '',\n                loose: false,\n                items: [],\n            };\n            bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n            if (this.options.pedantic) {\n                bull = isordered ? bull : '[*+-]';\n            }\n            // Get next list item\n            const itemRegex = this.rules.other.listItemRegex(bull);\n            let endsWithBlankLine = false;\n            // Check if current bullet point can start a new List Item\n            while (src) {\n                let endEarly = false;\n                let raw = '';\n                let itemContents = '';\n                if (!(cap = itemRegex.exec(src))) {\n                    break;\n                }\n                if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n                    break;\n                }\n                raw = cap[0];\n                src = src.substring(raw.length);\n                let line = cap[2].split('\\n', 1)[0].replace(this.rules.other.listReplaceTabs, (t) => ' '.repeat(3 * t.length));\n                let nextLine = src.split('\\n', 1)[0];\n                let blankLine = !line.trim();\n                let indent = 0;\n                if (this.options.pedantic) {\n                    indent = 2;\n                    itemContents = line.trimStart();\n                }\n                else if (blankLine) {\n                    indent = cap[1].length + 1;\n                }\n                else {\n                    indent = cap[2].search(this.rules.other.nonSpaceChar); // Find first non-space char\n                    indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n                    itemContents = line.slice(indent);\n                    indent += cap[1].length;\n                }\n                if (blankLine && this.rules.other.blankLine.test(nextLine)) { // Items begin with at most one blank line\n                    raw += nextLine + '\\n';\n                    src = src.substring(nextLine.length + 1);\n                    endEarly = true;\n                }\n                if (!endEarly) {\n                    const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n                    const hrRegex = this.rules.other.hrRegex(indent);\n                    const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n                    const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n                    const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n                    // Check if following lines should be included in List Item\n                    while (src) {\n                        const rawLine = src.split('\\n', 1)[0];\n                        let nextLineWithoutTabs;\n                        nextLine = rawLine;\n                        // Re-align to follow commonmark nesting rules\n                        if (this.options.pedantic) {\n                            nextLine = nextLine.replace(this.rules.other.listReplaceNesting, '  ');\n                            nextLineWithoutTabs = nextLine;\n                        }\n                        else {\n                            nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, '    ');\n                        }\n                        // End list item if found code fences\n                        if (fencesBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new heading\n                        if (headingBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of html block\n                        if (htmlBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new bullet\n                        if (nextBulletRegex.test(nextLine)) {\n                            break;\n                        }\n                        // Horizontal rule found\n                        if (hrRegex.test(nextLine)) {\n                            break;\n                        }\n                        if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { // Dedent if possible\n                            itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n                        }\n                        else {\n                            // not enough indentation\n                            if (blankLine) {\n                                break;\n                            }\n                            // paragraph continuation unless last line was a different block level element\n                            if (line.replace(this.rules.other.tabCharGlobal, '    ').search(this.rules.other.nonSpaceChar) >= 4) { // indented code block\n                                break;\n                            }\n                            if (fencesBeginRegex.test(line)) {\n                                break;\n                            }\n                            if (headingBeginRegex.test(line)) {\n                                break;\n                            }\n                            if (hrRegex.test(line)) {\n                                break;\n                            }\n                            itemContents += '\\n' + nextLine;\n                        }\n                        if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n                            blankLine = true;\n                        }\n                        raw += rawLine + '\\n';\n                        src = src.substring(rawLine.length + 1);\n                        line = nextLineWithoutTabs.slice(indent);\n                    }\n                }\n                if (!list.loose) {\n                    // If the previous item ended with a blank line, the list is loose\n                    if (endsWithBlankLine) {\n                        list.loose = true;\n                    }\n                    else if (this.rules.other.doubleBlankLine.test(raw)) {\n                        endsWithBlankLine = true;\n                    }\n                }\n                let istask = null;\n                let ischecked;\n                // Check for task list items\n                if (this.options.gfm) {\n                    istask = this.rules.other.listIsTask.exec(itemContents);\n                    if (istask) {\n                        ischecked = istask[0] !== '[ ] ';\n                        itemContents = itemContents.replace(this.rules.other.listReplaceTask, '');\n                    }\n                }\n                list.items.push({\n                    type: 'list_item',\n                    raw,\n                    task: !!istask,\n                    checked: ischecked,\n                    loose: false,\n                    text: itemContents,\n                    tokens: [],\n                });\n                list.raw += raw;\n            }\n            // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n            const lastItem = list.items.at(-1);\n            if (lastItem) {\n                lastItem.raw = lastItem.raw.trimEnd();\n                lastItem.text = lastItem.text.trimEnd();\n            }\n            else {\n                // not a list since there were no items\n                return;\n            }\n            list.raw = list.raw.trimEnd();\n            // Item child tokens handled here at end because we needed to have the final item to trim it first\n            for (let i = 0; i < list.items.length; i++) {\n                this.lexer.state.top = false;\n                list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n                if (!list.loose) {\n                    // Check if list should be loose\n                    const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n                    const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => this.rules.other.anyLine.test(t.raw));\n                    list.loose = hasMultipleLineBreaks;\n                }\n            }\n            // Set all items to loose if list is loose\n            if (list.loose) {\n                for (let i = 0; i < list.items.length; i++) {\n                    list.items[i].loose = true;\n                }\n            }\n            return list;\n        }\n    }\n    html(src) {\n        const cap = this.rules.block.html.exec(src);\n        if (cap) {\n            const token = {\n                type: 'html',\n                block: true,\n                raw: cap[0],\n                pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n                text: cap[0],\n            };\n            return token;\n        }\n    }\n    def(src) {\n        const cap = this.rules.block.def.exec(src);\n        if (cap) {\n            const tag = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' ');\n            const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n            const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n            return {\n                type: 'def',\n                tag,\n                raw: cap[0],\n                href,\n                title,\n            };\n        }\n    }\n    table(src) {\n        const cap = this.rules.block.table.exec(src);\n        if (!cap) {\n            return;\n        }\n        if (!this.rules.other.tableDelimiter.test(cap[2])) {\n            // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n            return;\n        }\n        const headers = splitCells(cap[1]);\n        const aligns = cap[2].replace(this.rules.other.tableAlignChars, '').split('|');\n        const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, '').split('\\n') : [];\n        const item = {\n            type: 'table',\n            raw: cap[0],\n            header: [],\n            align: [],\n            rows: [],\n        };\n        if (headers.length !== aligns.length) {\n            // header and align columns must be equal, rows can be different.\n            return;\n        }\n        for (const align of aligns) {\n            if (this.rules.other.tableAlignRight.test(align)) {\n                item.align.push('right');\n            }\n            else if (this.rules.other.tableAlignCenter.test(align)) {\n                item.align.push('center');\n            }\n            else if (this.rules.other.tableAlignLeft.test(align)) {\n                item.align.push('left');\n            }\n            else {\n                item.align.push(null);\n            }\n        }\n        for (let i = 0; i < headers.length; i++) {\n            item.header.push({\n                text: headers[i],\n                tokens: this.lexer.inline(headers[i]),\n                header: true,\n                align: item.align[i],\n            });\n        }\n        for (const row of rows) {\n            item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n                return {\n                    text: cell,\n                    tokens: this.lexer.inline(cell),\n                    header: false,\n                    align: item.align[i],\n                };\n            }));\n        }\n        return item;\n    }\n    lheading(src) {\n        const cap = this.rules.block.lheading.exec(src);\n        if (cap) {\n            return {\n                type: 'heading',\n                raw: cap[0],\n                depth: cap[2].charAt(0) === '=' ? 1 : 2,\n                text: cap[1],\n                tokens: this.lexer.inline(cap[1]),\n            };\n        }\n    }\n    paragraph(src) {\n        const cap = this.rules.block.paragraph.exec(src);\n        if (cap) {\n            const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n                ? cap[1].slice(0, -1)\n                : cap[1];\n            return {\n                type: 'paragraph',\n                raw: cap[0],\n                text,\n                tokens: this.lexer.inline(text),\n            };\n        }\n    }\n    text(src) {\n        const cap = this.rules.block.text.exec(src);\n        if (cap) {\n            return {\n                type: 'text',\n                raw: cap[0],\n                text: cap[0],\n                tokens: this.lexer.inline(cap[0]),\n            };\n        }\n    }\n    escape(src) {\n        const cap = this.rules.inline.escape.exec(src);\n        if (cap) {\n            return {\n                type: 'escape',\n                raw: cap[0],\n                text: cap[1],\n            };\n        }\n    }\n    tag(src) {\n        const cap = this.rules.inline.tag.exec(src);\n        if (cap) {\n            if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n                this.lexer.state.inLink = true;\n            }\n            else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n                this.lexer.state.inLink = false;\n            }\n            if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n                this.lexer.state.inRawBlock = true;\n            }\n            else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n                this.lexer.state.inRawBlock = false;\n            }\n            return {\n                type: 'html',\n                raw: cap[0],\n                inLink: this.lexer.state.inLink,\n                inRawBlock: this.lexer.state.inRawBlock,\n                block: false,\n                text: cap[0],\n            };\n        }\n    }\n    link(src) {\n        const cap = this.rules.inline.link.exec(src);\n        if (cap) {\n            const trimmedUrl = cap[2].trim();\n            if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n                // commonmark requires matching angle brackets\n                if (!(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n                    return;\n                }\n                // ending angle bracket cannot be escaped\n                const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n                if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n                    return;\n                }\n            }\n            else {\n                // find closing parenthesis\n                const lastParenIndex = findClosingBracket(cap[2], '()');\n                if (lastParenIndex > -1) {\n                    const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n                    const linkLen = start + cap[1].length + lastParenIndex;\n                    cap[2] = cap[2].substring(0, lastParenIndex);\n                    cap[0] = cap[0].substring(0, linkLen).trim();\n                    cap[3] = '';\n                }\n            }\n            let href = cap[2];\n            let title = '';\n            if (this.options.pedantic) {\n                // split pedantic href and title\n                const link = this.rules.other.pedanticHrefTitle.exec(href);\n                if (link) {\n                    href = link[1];\n                    title = link[3];\n                }\n            }\n            else {\n                title = cap[3] ? cap[3].slice(1, -1) : '';\n            }\n            href = href.trim();\n            if (this.rules.other.startAngleBracket.test(href)) {\n                if (this.options.pedantic && !(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n                    // pedantic allows starting angle bracket without ending angle bracket\n                    href = href.slice(1);\n                }\n                else {\n                    href = href.slice(1, -1);\n                }\n            }\n            return outputLink(cap, {\n                href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n                title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n            }, cap[0], this.lexer, this.rules);\n        }\n    }\n    reflink(src, links) {\n        let cap;\n        if ((cap = this.rules.inline.reflink.exec(src))\n            || (cap = this.rules.inline.nolink.exec(src))) {\n            const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, ' ');\n            const link = links[linkString.toLowerCase()];\n            if (!link) {\n                const text = cap[0].charAt(0);\n                return {\n                    type: 'text',\n                    raw: text,\n                    text,\n                };\n            }\n            return outputLink(cap, link, cap[0], this.lexer, this.rules);\n        }\n    }\n    emStrong(src, maskedSrc, prevChar = '') {\n        let match = this.rules.inline.emStrongLDelim.exec(src);\n        if (!match)\n            return;\n        // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n        if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric))\n            return;\n        const nextChar = match[1] || match[2] || '';\n        if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n            // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n            const lLength = [...match[0]].length - 1;\n            let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n            const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n            endReg.lastIndex = 0;\n            // Clip maskedSrc to same section of string as src (move to lexer?)\n            maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n            while ((match = endReg.exec(maskedSrc)) != null) {\n                rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n                if (!rDelim)\n                    continue; // skip single * in __abc*abc__\n                rLength = [...rDelim].length;\n                if (match[3] || match[4]) { // found another Left Delim\n                    delimTotal += rLength;\n                    continue;\n                }\n                else if (match[5] || match[6]) { // either Left or Right Delim\n                    if (lLength % 3 && !((lLength + rLength) % 3)) {\n                        midDelimTotal += rLength;\n                        continue; // CommonMark Emphasis Rules 9-10\n                    }\n                }\n                delimTotal -= rLength;\n                if (delimTotal > 0)\n                    continue; // Haven't found enough closing delimiters\n                // Remove extra characters. *a*** -> *a*\n                rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n                // char length can be >1 for unicode characters;\n                const lastCharLength = [...match[0]][0].length;\n                const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n                // Create `em` if smallest delimiter has odd char count. *a***\n                if (Math.min(lLength, rLength) % 2) {\n                    const text = raw.slice(1, -1);\n                    return {\n                        type: 'em',\n                        raw,\n                        text,\n                        tokens: this.lexer.inlineTokens(text),\n                    };\n                }\n                // Create 'strong' if smallest delimiter has even char count. **a***\n                const text = raw.slice(2, -2);\n                return {\n                    type: 'strong',\n                    raw,\n                    text,\n                    tokens: this.lexer.inlineTokens(text),\n                };\n            }\n        }\n    }\n    codespan(src) {\n        const cap = this.rules.inline.code.exec(src);\n        if (cap) {\n            let text = cap[2].replace(this.rules.other.newLineCharGlobal, ' ');\n            const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n            const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n            if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n                text = text.substring(1, text.length - 1);\n            }\n            return {\n                type: 'codespan',\n                raw: cap[0],\n                text,\n            };\n        }\n    }\n    br(src) {\n        const cap = this.rules.inline.br.exec(src);\n        if (cap) {\n            return {\n                type: 'br',\n                raw: cap[0],\n            };\n        }\n    }\n    del(src) {\n        const cap = this.rules.inline.del.exec(src);\n        if (cap) {\n            return {\n                type: 'del',\n                raw: cap[0],\n                text: cap[2],\n                tokens: this.lexer.inlineTokens(cap[2]),\n            };\n        }\n    }\n    autolink(src) {\n        const cap = this.rules.inline.autolink.exec(src);\n        if (cap) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = cap[1];\n                href = 'mailto:' + text;\n            }\n            else {\n                text = cap[1];\n                href = text;\n            }\n            return {\n                type: 'link',\n                raw: cap[0],\n                text,\n                href,\n                tokens: [\n                    {\n                        type: 'text',\n                        raw: text,\n                        text,\n                    },\n                ],\n            };\n        }\n    }\n    url(src) {\n        let cap;\n        if (cap = this.rules.inline.url.exec(src)) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = cap[0];\n                href = 'mailto:' + text;\n            }\n            else {\n                // do extended autolink path validation\n                let prevCapZero;\n                do {\n                    prevCapZero = cap[0];\n                    cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n                } while (prevCapZero !== cap[0]);\n                text = cap[0];\n                if (cap[1] === 'www.') {\n                    href = 'http://' + cap[0];\n                }\n                else {\n                    href = cap[0];\n                }\n            }\n            return {\n                type: 'link',\n                raw: cap[0],\n                text,\n                href,\n                tokens: [\n                    {\n                        type: 'text',\n                        raw: text,\n                        text,\n                    },\n                ],\n            };\n        }\n    }\n    inlineText(src) {\n        const cap = this.rules.inline.text.exec(src);\n        if (cap) {\n            const escaped = this.lexer.state.inRawBlock;\n            return {\n                type: 'text',\n                raw: cap[0],\n                text: cap[0],\n                escaped,\n            };\n        }\n    }\n}\n","import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { other, block, inline } from './rules.ts';\n/**\n * Block Lexer\n */\nexport class _Lexer {\n    tokens;\n    options;\n    state;\n    tokenizer;\n    inlineQueue;\n    constructor(options) {\n        // TokenList cannot be created in one go\n        this.tokens = [];\n        this.tokens.links = Object.create(null);\n        this.options = options || _defaults;\n        this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n        this.tokenizer = this.options.tokenizer;\n        this.tokenizer.options = this.options;\n        this.tokenizer.lexer = this;\n        this.inlineQueue = [];\n        this.state = {\n            inLink: false,\n            inRawBlock: false,\n            top: true,\n        };\n        const rules = {\n            other,\n            block: block.normal,\n            inline: inline.normal,\n        };\n        if (this.options.pedantic) {\n            rules.block = block.pedantic;\n            rules.inline = inline.pedantic;\n        }\n        else if (this.options.gfm) {\n            rules.block = block.gfm;\n            if (this.options.breaks) {\n                rules.inline = inline.breaks;\n            }\n            else {\n                rules.inline = inline.gfm;\n            }\n        }\n        this.tokenizer.rules = rules;\n    }\n    /**\n     * Expose Rules\n     */\n    static get rules() {\n        return {\n            block,\n            inline,\n        };\n    }\n    /**\n     * Static Lex Method\n     */\n    static lex(src, options) {\n        const lexer = new _Lexer(options);\n        return lexer.lex(src);\n    }\n    /**\n     * Static Lex Inline Method\n     */\n    static lexInline(src, options) {\n        const lexer = new _Lexer(options);\n        return lexer.inlineTokens(src);\n    }\n    /**\n     * Preprocessing\n     */\n    lex(src) {\n        src = src.replace(other.carriageReturn, '\\n');\n        this.blockTokens(src, this.tokens);\n        for (let i = 0; i < this.inlineQueue.length; i++) {\n            const next = this.inlineQueue[i];\n            this.inlineTokens(next.src, next.tokens);\n        }\n        this.inlineQueue = [];\n        return this.tokens;\n    }\n    blockTokens(src, tokens = [], lastParagraphClipped = false) {\n        if (this.options.pedantic) {\n            src = src.replace(other.tabCharGlobal, '    ').replace(other.spaceLine, '');\n        }\n        while (src) {\n            let token;\n            if (this.options.extensions?.block?.some((extTokenizer) => {\n                if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n                    src = src.substring(token.raw.length);\n                    tokens.push(token);\n                    return true;\n                }\n                return false;\n            })) {\n                continue;\n            }\n            // newline\n            if (token = this.tokenizer.space(src)) {\n                src = src.substring(token.raw.length);\n                const lastToken = tokens.at(-1);\n                if (token.raw.length === 1 && lastToken !== undefined) {\n                    // if there's a single \\n as a spacer, it's terminating the last line,\n                    // so move it there so that we don't get unnecessary paragraph tags\n                    lastToken.raw += '\\n';\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // code\n            if (token = this.tokenizer.code(src)) {\n                src = src.substring(token.raw.length);\n                const lastToken = tokens.at(-1);\n                // An indented code block cannot interrupt a paragraph.\n                if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue.at(-1).src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // fences\n            if (token = this.tokenizer.fences(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // heading\n            if (token = this.tokenizer.heading(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // hr\n            if (token = this.tokenizer.hr(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // blockquote\n            if (token = this.tokenizer.blockquote(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // list\n            if (token = this.tokenizer.list(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // html\n            if (token = this.tokenizer.html(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // def\n            if (token = this.tokenizer.def(src)) {\n                src = src.substring(token.raw.length);\n                const lastToken = tokens.at(-1);\n                if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.raw;\n                    this.inlineQueue.at(-1).src = lastToken.text;\n                }\n                else if (!this.tokens.links[token.tag]) {\n                    this.tokens.links[token.tag] = {\n                        href: token.href,\n                        title: token.title,\n                    };\n                }\n                continue;\n            }\n            // table (gfm)\n            if (token = this.tokenizer.table(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // lheading\n            if (token = this.tokenizer.lheading(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // top-level paragraph\n            // prevent paragraph consuming extensions by clipping 'src' to extension start\n            let cutSrc = src;\n            if (this.options.extensions?.startBlock) {\n                let startIndex = Infinity;\n                const tempSrc = src.slice(1);\n                let tempStart;\n                this.options.extensions.startBlock.forEach((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\n                });\n                if (startIndex < Infinity && startIndex >= 0) {\n                    cutSrc = src.substring(0, startIndex + 1);\n                }\n            }\n            if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n                const lastToken = tokens.at(-1);\n                if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue.pop();\n                    this.inlineQueue.at(-1).src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                lastParagraphClipped = cutSrc.length !== src.length;\n                src = src.substring(token.raw.length);\n                continue;\n            }\n            // text\n            if (token = this.tokenizer.text(src)) {\n                src = src.substring(token.raw.length);\n                const lastToken = tokens.at(-1);\n                if (lastToken?.type === 'text') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue.pop();\n                    this.inlineQueue.at(-1).src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            if (src) {\n                const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n                if (this.options.silent) {\n                    console.error(errMsg);\n                    break;\n                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        this.state.top = true;\n        return tokens;\n    }\n    inline(src, tokens = []) {\n        this.inlineQueue.push({ src, tokens });\n        return tokens;\n    }\n    /**\n     * Lexing/Compiling\n     */\n    inlineTokens(src, tokens = []) {\n        // String with links masked to avoid interference with em and strong\n        let maskedSrc = src;\n        let match = null;\n        // Mask out reflinks\n        if (this.tokens.links) {\n            const links = Object.keys(this.tokens.links);\n            if (links.length > 0) {\n                while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n                    if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n                        maskedSrc = maskedSrc.slice(0, match.index)\n                            + '[' + 'a'.repeat(match[0].length - 2) + ']'\n                            + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n                    }\n                }\n            }\n        }\n        // Mask out escaped characters\n        while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n        }\n        // Mask out other blocks\n        while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n        }\n        let keepPrevChar = false;\n        let prevChar = '';\n        while (src) {\n            if (!keepPrevChar) {\n                prevChar = '';\n            }\n            keepPrevChar = false;\n            let token;\n            // extensions\n            if (this.options.extensions?.inline?.some((extTokenizer) => {\n                if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n                    src = src.substring(token.raw.length);\n                    tokens.push(token);\n                    return true;\n                }\n                return false;\n            })) {\n                continue;\n            }\n            // escape\n            if (token = this.tokenizer.escape(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // tag\n            if (token = this.tokenizer.tag(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // link\n            if (token = this.tokenizer.link(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // reflink, nolink\n            if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n                src = src.substring(token.raw.length);\n                const lastToken = tokens.at(-1);\n                if (token.type === 'text' && lastToken?.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // em & strong\n            if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // code\n            if (token = this.tokenizer.codespan(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // br\n            if (token = this.tokenizer.br(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // del (gfm)\n            if (token = this.tokenizer.del(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // autolink\n            if (token = this.tokenizer.autolink(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // url (gfm)\n            if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // text\n            // prevent inlineText consuming extensions by clipping 'src' to extension start\n            let cutSrc = src;\n            if (this.options.extensions?.startInline) {\n                let startIndex = Infinity;\n                const tempSrc = src.slice(1);\n                let tempStart;\n                this.options.extensions.startInline.forEach((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\n                });\n                if (startIndex < Infinity && startIndex >= 0) {\n                    cutSrc = src.substring(0, startIndex + 1);\n                }\n            }\n            if (token = this.tokenizer.inlineText(cutSrc)) {\n                src = src.substring(token.raw.length);\n                if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n                    prevChar = token.raw.slice(-1);\n                }\n                keepPrevChar = true;\n                const lastToken = tokens.at(-1);\n                if (lastToken?.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            if (src) {\n                const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n                if (this.options.silent) {\n                    console.error(errMsg);\n                    break;\n                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        return tokens;\n    }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape, } from './helpers.ts';\nimport { other } from './rules.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n    options;\n    parser; // set by the parser\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    space(token) {\n        return '';\n    }\n    code({ text, lang, escaped }) {\n        const langString = (lang || '').match(other.notSpaceStart)?.[0];\n        const code = text.replace(other.endingNewline, '') + '\\n';\n        if (!langString) {\n            return '<pre><code>'\n                + (escaped ? code : escape(code, true))\n                + '</code></pre>\\n';\n        }\n        return '<pre><code class=\"language-'\n            + escape(langString)\n            + '\">'\n            + (escaped ? code : escape(code, true))\n            + '</code></pre>\\n';\n    }\n    blockquote({ tokens }) {\n        const body = this.parser.parse(tokens);\n        return `<blockquote>\\n${body}</blockquote>\\n`;\n    }\n    html({ text }) {\n        return text;\n    }\n    heading({ tokens, depth }) {\n        return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n`;\n    }\n    hr(token) {\n        return '<hr>\\n';\n    }\n    list(token) {\n        const ordered = token.ordered;\n        const start = token.start;\n        let body = '';\n        for (let j = 0; j < token.items.length; j++) {\n            const item = token.items[j];\n            body += this.listitem(item);\n        }\n        const type = ordered ? 'ol' : 'ul';\n        const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n        return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n';\n    }\n    listitem(item) {\n        let itemBody = '';\n        if (item.task) {\n            const checkbox = this.checkbox({ checked: !!item.checked });\n            if (item.loose) {\n                if (item.tokens[0]?.type === 'paragraph') {\n                    item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n                    if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                        item.tokens[0].tokens[0].text = checkbox + ' ' + escape(item.tokens[0].tokens[0].text);\n                        item.tokens[0].tokens[0].escaped = true;\n                    }\n                }\n                else {\n                    item.tokens.unshift({\n                        type: 'text',\n                        raw: checkbox + ' ',\n                        text: checkbox + ' ',\n                        escaped: true,\n                    });\n                }\n            }\n            else {\n                itemBody += checkbox + ' ';\n            }\n        }\n        itemBody += this.parser.parse(item.tokens, !!item.loose);\n        return `<li>${itemBody}</li>\\n`;\n    }\n    checkbox({ checked }) {\n        return '<input '\n            + (checked ? 'checked=\"\" ' : '')\n            + 'disabled=\"\" type=\"checkbox\">';\n    }\n    paragraph({ tokens }) {\n        return `<p>${this.parser.parseInline(tokens)}</p>\\n`;\n    }\n    table(token) {\n        let header = '';\n        // header\n        let cell = '';\n        for (let j = 0; j < token.header.length; j++) {\n            cell += this.tablecell(token.header[j]);\n        }\n        header += this.tablerow({ text: cell });\n        let body = '';\n        for (let j = 0; j < token.rows.length; j++) {\n            const row = token.rows[j];\n            cell = '';\n            for (let k = 0; k < row.length; k++) {\n                cell += this.tablecell(row[k]);\n            }\n            body += this.tablerow({ text: cell });\n        }\n        if (body)\n            body = `<tbody>${body}</tbody>`;\n        return '<table>\\n'\n            + '<thead>\\n'\n            + header\n            + '</thead>\\n'\n            + body\n            + '</table>\\n';\n    }\n    tablerow({ text }) {\n        return `<tr>\\n${text}</tr>\\n`;\n    }\n    tablecell(token) {\n        const content = this.parser.parseInline(token.tokens);\n        const type = token.header ? 'th' : 'td';\n        const tag = token.align\n            ? `<${type} align=\"${token.align}\">`\n            : `<${type}>`;\n        return tag + content + `</${type}>\\n`;\n    }\n    /**\n     * span level renderer\n     */\n    strong({ tokens }) {\n        return `<strong>${this.parser.parseInline(tokens)}</strong>`;\n    }\n    em({ tokens }) {\n        return `<em>${this.parser.parseInline(tokens)}</em>`;\n    }\n    codespan({ text }) {\n        return `<code>${escape(text, true)}</code>`;\n    }\n    br(token) {\n        return '<br>';\n    }\n    del({ tokens }) {\n        return `<del>${this.parser.parseInline(tokens)}</del>`;\n    }\n    link({ href, title, tokens }) {\n        const text = this.parser.parseInline(tokens);\n        const cleanHref = cleanUrl(href);\n        if (cleanHref === null) {\n            return text;\n        }\n        href = cleanHref;\n        let out = '<a href=\"' + href + '\"';\n        if (title) {\n            out += ' title=\"' + (escape(title)) + '\"';\n        }\n        out += '>' + text + '</a>';\n        return out;\n    }\n    image({ href, title, text }) {\n        const cleanHref = cleanUrl(href);\n        if (cleanHref === null) {\n            return escape(text);\n        }\n        href = cleanHref;\n        let out = `<img src=\"${href}\" alt=\"${text}\"`;\n        if (title) {\n            out += ` title=\"${escape(title)}\"`;\n        }\n        out += '>';\n        return out;\n    }\n    text(token) {\n        return 'tokens' in token && token.tokens\n            ? this.parser.parseInline(token.tokens)\n            : ('escaped' in token && token.escaped ? token.text : escape(token.text));\n    }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n    // no need for block level renderers\n    strong({ text }) {\n        return text;\n    }\n    em({ text }) {\n        return text;\n    }\n    codespan({ text }) {\n        return text;\n    }\n    del({ text }) {\n        return text;\n    }\n    html({ text }) {\n        return text;\n    }\n    text({ text }) {\n        return text;\n    }\n    link({ text }) {\n        return '' + text;\n    }\n    image({ text }) {\n        return '' + text;\n    }\n    br() {\n        return '';\n    }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n    options;\n    renderer;\n    textRenderer;\n    constructor(options) {\n        this.options = options || _defaults;\n        this.options.renderer = this.options.renderer || new _Renderer();\n        this.renderer = this.options.renderer;\n        this.renderer.options = this.options;\n        this.renderer.parser = this;\n        this.textRenderer = new _TextRenderer();\n    }\n    /**\n     * Static Parse Method\n     */\n    static parse(tokens, options) {\n        const parser = new _Parser(options);\n        return parser.parse(tokens);\n    }\n    /**\n     * Static Parse Inline Method\n     */\n    static parseInline(tokens, options) {\n        const parser = new _Parser(options);\n        return parser.parseInline(tokens);\n    }\n    /**\n     * Parse Loop\n     */\n    parse(tokens, top = true) {\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const anyToken = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions?.renderers?.[anyToken.type]) {\n                const genericToken = anyToken;\n                const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n                if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            const token = anyToken;\n            switch (token.type) {\n                case 'space': {\n                    out += this.renderer.space(token);\n                    continue;\n                }\n                case 'hr': {\n                    out += this.renderer.hr(token);\n                    continue;\n                }\n                case 'heading': {\n                    out += this.renderer.heading(token);\n                    continue;\n                }\n                case 'code': {\n                    out += this.renderer.code(token);\n                    continue;\n                }\n                case 'table': {\n                    out += this.renderer.table(token);\n                    continue;\n                }\n                case 'blockquote': {\n                    out += this.renderer.blockquote(token);\n                    continue;\n                }\n                case 'list': {\n                    out += this.renderer.list(token);\n                    continue;\n                }\n                case 'html': {\n                    out += this.renderer.html(token);\n                    continue;\n                }\n                case 'paragraph': {\n                    out += this.renderer.paragraph(token);\n                    continue;\n                }\n                case 'text': {\n                    let textToken = token;\n                    let body = this.renderer.text(textToken);\n                    while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n                        textToken = tokens[++i];\n                        body += '\\n' + this.renderer.text(textToken);\n                    }\n                    if (top) {\n                        out += this.renderer.paragraph({\n                            type: 'paragraph',\n                            raw: body,\n                            text: body,\n                            tokens: [{ type: 'text', raw: body, text: body, escaped: true }],\n                        });\n                    }\n                    else {\n                        out += body;\n                    }\n                    continue;\n                }\n                default: {\n                    const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n                    if (this.options.silent) {\n                        console.error(errMsg);\n                        return '';\n                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n    /**\n     * Parse Inline Tokens\n     */\n    parseInline(tokens, renderer = this.renderer) {\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const anyToken = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions?.renderers?.[anyToken.type]) {\n                const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n                if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            const token = anyToken;\n            switch (token.type) {\n                case 'escape': {\n                    out += renderer.text(token);\n                    break;\n                }\n                case 'html': {\n                    out += renderer.html(token);\n                    break;\n                }\n                case 'link': {\n                    out += renderer.link(token);\n                    break;\n                }\n                case 'image': {\n                    out += renderer.image(token);\n                    break;\n                }\n                case 'strong': {\n                    out += renderer.strong(token);\n                    break;\n                }\n                case 'em': {\n                    out += renderer.em(token);\n                    break;\n                }\n                case 'codespan': {\n                    out += renderer.codespan(token);\n                    break;\n                }\n                case 'br': {\n                    out += renderer.br(token);\n                    break;\n                }\n                case 'del': {\n                    out += renderer.del(token);\n                    break;\n                }\n                case 'text': {\n                    out += renderer.text(token);\n                    break;\n                }\n                default: {\n                    const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n                    if (this.options.silent) {\n                        console.error(errMsg);\n                        return '';\n                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n}\n","import { _defaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nexport class _Hooks {\n    options;\n    block;\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    static passThroughHooks = new Set([\n        'preprocess',\n        'postprocess',\n        'processAllTokens',\n    ]);\n    /**\n     * Process markdown before marked\n     */\n    preprocess(markdown) {\n        return markdown;\n    }\n    /**\n     * Process HTML after marked is finished\n     */\n    postprocess(html) {\n        return html;\n    }\n    /**\n     * Process all tokens before walk tokens\n     */\n    processAllTokens(tokens) {\n        return tokens;\n    }\n    /**\n     * Provide function to tokenize markdown\n     */\n    provideLexer() {\n        return this.block ? _Lexer.lex : _Lexer.lexInline;\n    }\n    /**\n     * Provide function to parse tokens\n     */\n    provideParser() {\n        return this.block ? _Parser.parse : _Parser.parseInline;\n    }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nexport class Marked {\n    defaults = _getDefaults();\n    options = this.setOptions;\n    parse = this.parseMarkdown(true);\n    parseInline = this.parseMarkdown(false);\n    Parser = _Parser;\n    Renderer = _Renderer;\n    TextRenderer = _TextRenderer;\n    Lexer = _Lexer;\n    Tokenizer = _Tokenizer;\n    Hooks = _Hooks;\n    constructor(...args) {\n        this.use(...args);\n    }\n    /**\n     * Run callback for every token\n     */\n    walkTokens(tokens, callback) {\n        let values = [];\n        for (const token of tokens) {\n            values = values.concat(callback.call(this, token));\n            switch (token.type) {\n                case 'table': {\n                    const tableToken = token;\n                    for (const cell of tableToken.header) {\n                        values = values.concat(this.walkTokens(cell.tokens, callback));\n                    }\n                    for (const row of tableToken.rows) {\n                        for (const cell of row) {\n                            values = values.concat(this.walkTokens(cell.tokens, callback));\n                        }\n                    }\n                    break;\n                }\n                case 'list': {\n                    const listToken = token;\n                    values = values.concat(this.walkTokens(listToken.items, callback));\n                    break;\n                }\n                default: {\n                    const genericToken = token;\n                    if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n                        this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n                            const tokens = genericToken[childTokens].flat(Infinity);\n                            values = values.concat(this.walkTokens(tokens, callback));\n                        });\n                    }\n                    else if (genericToken.tokens) {\n                        values = values.concat(this.walkTokens(genericToken.tokens, callback));\n                    }\n                }\n            }\n        }\n        return values;\n    }\n    use(...args) {\n        const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n        args.forEach((pack) => {\n            // copy options to new object\n            const opts = { ...pack };\n            // set async to true if it was set to true before\n            opts.async = this.defaults.async || opts.async || false;\n            // ==-- Parse \"addon\" extensions --== //\n            if (pack.extensions) {\n                pack.extensions.forEach((ext) => {\n                    if (!ext.name) {\n                        throw new Error('extension name required');\n                    }\n                    if ('renderer' in ext) { // Renderer extensions\n                        const prevRenderer = extensions.renderers[ext.name];\n                        if (prevRenderer) {\n                            // Replace extension with func to run new extension but fall back if false\n                            extensions.renderers[ext.name] = function (...args) {\n                                let ret = ext.renderer.apply(this, args);\n                                if (ret === false) {\n                                    ret = prevRenderer.apply(this, args);\n                                }\n                                return ret;\n                            };\n                        }\n                        else {\n                            extensions.renderers[ext.name] = ext.renderer;\n                        }\n                    }\n                    if ('tokenizer' in ext) { // Tokenizer Extensions\n                        if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n                            throw new Error(\"extension level must be 'block' or 'inline'\");\n                        }\n                        const extLevel = extensions[ext.level];\n                        if (extLevel) {\n                            extLevel.unshift(ext.tokenizer);\n                        }\n                        else {\n                            extensions[ext.level] = [ext.tokenizer];\n                        }\n                        if (ext.start) { // Function to check for start of token\n                            if (ext.level === 'block') {\n                                if (extensions.startBlock) {\n                                    extensions.startBlock.push(ext.start);\n                                }\n                                else {\n                                    extensions.startBlock = [ext.start];\n                                }\n                            }\n                            else if (ext.level === 'inline') {\n                                if (extensions.startInline) {\n                                    extensions.startInline.push(ext.start);\n                                }\n                                else {\n                                    extensions.startInline = [ext.start];\n                                }\n                            }\n                        }\n                    }\n                    if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n                        extensions.childTokens[ext.name] = ext.childTokens;\n                    }\n                });\n                opts.extensions = extensions;\n            }\n            // ==-- Parse \"overwrite\" extensions --== //\n            if (pack.renderer) {\n                const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n                for (const prop in pack.renderer) {\n                    if (!(prop in renderer)) {\n                        throw new Error(`renderer '${prop}' does not exist`);\n                    }\n                    if (['options', 'parser'].includes(prop)) {\n                        // ignore options property\n                        continue;\n                    }\n                    const rendererProp = prop;\n                    const rendererFunc = pack.renderer[rendererProp];\n                    const prevRenderer = renderer[rendererProp];\n                    // Replace renderer with func to run extension, but fall back if false\n                    renderer[rendererProp] = (...args) => {\n                        let ret = rendererFunc.apply(renderer, args);\n                        if (ret === false) {\n                            ret = prevRenderer.apply(renderer, args);\n                        }\n                        return ret || '';\n                    };\n                }\n                opts.renderer = renderer;\n            }\n            if (pack.tokenizer) {\n                const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n                for (const prop in pack.tokenizer) {\n                    if (!(prop in tokenizer)) {\n                        throw new Error(`tokenizer '${prop}' does not exist`);\n                    }\n                    if (['options', 'rules', 'lexer'].includes(prop)) {\n                        // ignore options, rules, and lexer properties\n                        continue;\n                    }\n                    const tokenizerProp = prop;\n                    const tokenizerFunc = pack.tokenizer[tokenizerProp];\n                    const prevTokenizer = tokenizer[tokenizerProp];\n                    // Replace tokenizer with func to run extension, but fall back if false\n                    // @ts-expect-error cannot type tokenizer function dynamically\n                    tokenizer[tokenizerProp] = (...args) => {\n                        let ret = tokenizerFunc.apply(tokenizer, args);\n                        if (ret === false) {\n                            ret = prevTokenizer.apply(tokenizer, args);\n                        }\n                        return ret;\n                    };\n                }\n                opts.tokenizer = tokenizer;\n            }\n            // ==-- Parse Hooks extensions --== //\n            if (pack.hooks) {\n                const hooks = this.defaults.hooks || new _Hooks();\n                for (const prop in pack.hooks) {\n                    if (!(prop in hooks)) {\n                        throw new Error(`hook '${prop}' does not exist`);\n                    }\n                    if (['options', 'block'].includes(prop)) {\n                        // ignore options and block properties\n                        continue;\n                    }\n                    const hooksProp = prop;\n                    const hooksFunc = pack.hooks[hooksProp];\n                    const prevHook = hooks[hooksProp];\n                    if (_Hooks.passThroughHooks.has(prop)) {\n                        // @ts-expect-error cannot type hook function dynamically\n                        hooks[hooksProp] = (arg) => {\n                            if (this.defaults.async) {\n                                return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n                                    return prevHook.call(hooks, ret);\n                                });\n                            }\n                            const ret = hooksFunc.call(hooks, arg);\n                            return prevHook.call(hooks, ret);\n                        };\n                    }\n                    else {\n                        // @ts-expect-error cannot type hook function dynamically\n                        hooks[hooksProp] = (...args) => {\n                            let ret = hooksFunc.apply(hooks, args);\n                            if (ret === false) {\n                                ret = prevHook.apply(hooks, args);\n                            }\n                            return ret;\n                        };\n                    }\n                }\n                opts.hooks = hooks;\n            }\n            // ==-- Parse WalkTokens extensions --== //\n            if (pack.walkTokens) {\n                const walkTokens = this.defaults.walkTokens;\n                const packWalktokens = pack.walkTokens;\n                opts.walkTokens = function (token) {\n                    let values = [];\n                    values.push(packWalktokens.call(this, token));\n                    if (walkTokens) {\n                        values = values.concat(walkTokens.call(this, token));\n                    }\n                    return values;\n                };\n            }\n            this.defaults = { ...this.defaults, ...opts };\n        });\n        return this;\n    }\n    setOptions(opt) {\n        this.defaults = { ...this.defaults, ...opt };\n        return this;\n    }\n    lexer(src, options) {\n        return _Lexer.lex(src, options ?? this.defaults);\n    }\n    parser(tokens, options) {\n        return _Parser.parse(tokens, options ?? this.defaults);\n    }\n    parseMarkdown(blockType) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const parse = (src, options) => {\n            const origOpt = { ...options };\n            const opt = { ...this.defaults, ...origOpt };\n            const throwError = this.onError(!!opt.silent, !!opt.async);\n            // throw error if an extension set async to true but parse was called with async: false\n            if (this.defaults.async === true && origOpt.async === false) {\n                return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n            }\n            // throw error in case of non string input\n            if (typeof src === 'undefined' || src === null) {\n                return throwError(new Error('marked(): input parameter is undefined or null'));\n            }\n            if (typeof src !== 'string') {\n                return throwError(new Error('marked(): input parameter is of type '\n                    + Object.prototype.toString.call(src) + ', string expected'));\n            }\n            if (opt.hooks) {\n                opt.hooks.options = opt;\n                opt.hooks.block = blockType;\n            }\n            const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n            const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n            if (opt.async) {\n                return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n                    .then(src => lexer(src, opt))\n                    .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n                    .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n                    .then(tokens => parser(tokens, opt))\n                    .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n                    .catch(throwError);\n            }\n            try {\n                if (opt.hooks) {\n                    src = opt.hooks.preprocess(src);\n                }\n                let tokens = lexer(src, opt);\n                if (opt.hooks) {\n                    tokens = opt.hooks.processAllTokens(tokens);\n                }\n                if (opt.walkTokens) {\n                    this.walkTokens(tokens, opt.walkTokens);\n                }\n                let html = parser(tokens, opt);\n                if (opt.hooks) {\n                    html = opt.hooks.postprocess(html);\n                }\n                return html;\n            }\n            catch (e) {\n                return throwError(e);\n            }\n        };\n        return parse;\n    }\n    onError(silent, async) {\n        return (e) => {\n            e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n            if (silent) {\n                const msg = '<p>An error occurred:</p><pre>'\n                    + escape(e.message + '', true)\n                    + '</pre>';\n                if (async) {\n                    return Promise.resolve(msg);\n                }\n                return msg;\n            }\n            if (async) {\n                return Promise.reject(e);\n            }\n            throw e;\n        };\n    }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults, } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n    return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n    marked.setOptions = function (options) {\n        markedInstance.setOptions(options);\n        marked.defaults = markedInstance.defaults;\n        changeDefaults(marked.defaults);\n        return marked;\n    };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n    markedInstance.use(...args);\n    marked.defaults = markedInstance.defaults;\n    changeDefaults(marked.defaults);\n    return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n    return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport \"@servicenow/now-popover\";\nimport \"@servicenow/now-button\";\nimport \"@servicenow/now-card\";\nimport \"@servicenow/now-icon\";\nimport { t } from \"sn-translate\";\nimport styles from \"../../scss/index.scss\";\nimport {\n\tCITATION_POPOVER_CLICKED,\n\tVIEW_RECORDS_CLICKED,\n\tKG_GENERIC_VIEW_RECORD_ACTION_CLICK\n} from \"../../constants\";\n\nconst renderItems = items =>\n\titems.map(item => {\n\t\tconst label = (item && item.table_display_value) || t(\"Unknown\");\n\t\tconst action = {\n\t\t\tactionPayload: {\n\t\t\t\ttable: item && item.table_name ? item.table_name : \"\",\n\t\t\t\tencoded_query: item && item.encoded_query ? item.encoded_query : \"\"\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<li key={item && item.table_name ? item.table_name : label}>\n\t\t\t\t<now-text-link\n\t\t\t\t\tlabel={label}\n\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\ttype: KG_GENERIC_VIEW_RECORD_ACTION_CLICK,\n\t\t\t\t\t\tactionPayload: action\n\t\t\t\t\t}}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t/>\n\t\t\t</li>\n\t\t);\n\t});\n\nconst viewRecordsPopoverContentConfig = {\n\tproperties: {\n\t\tkgListCitations: { default: [] },\n\t\tactions: { default: [] }\n\t},\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview: ({ properties: { kgListCitations } }) => (\n\t\t\t<now-card\n\t\t\t\tclassName=\"view-records-content\"\n\t\t\t\tsize=\"lg\"\n\t\t\t\tinteraction=\"none\"\n\t\t\t\thideShadow\n\t\t\t>\n\t\t\t\t<div className=\"view-records-popover\">\n\t\t\t\t\t<div className=\"header\">\n\t\t\t\t\t\t<now-icon icon=\"table-outline\" size=\"sm\" ariaHidden=\"true\" />\n\t\t\t\t\t\t<span>{t(\"Records\")}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"popover-content\">\n\t\t\t\t\t\t<ul>{renderItems(kgListCitations)}</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</now-card>\n\t\t)\n\t},\n\tstyles\n};\n\nconst viewRecordsPopoverConfig = {\n\tproperties: {\n\t\tkgListCitations: { default: [] },\n\t\tactions: { default: [] }\n\t},\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview: ({ properties: { kgListCitations, actions } }) => (\n\t\t\t<now-popover\n\t\t\t\tinteractionType=\"dialog\"\n\t\t\t\tfocusPanel\n\t\t\t\tappend-to-payload={{ actionId: CITATION_POPOVER_CLICKED }}\n\t\t\t>\n\t\t\t\t<now-button-bare\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tlabel={t(\"View Records\")}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tappend-to-payload={{ actionId: VIEW_RECORDS_CLICKED }}\n\t\t\t\t/>\n\t\t\t\t<view-records-popover-content\n\t\t\t\t\tslot=\"content\"\n\t\t\t\t\tkg-list-citations={kgListCitations}\n\t\t\t\t\tactions={actions}\n\t\t\t\t/>\n\t\t\t</now-popover>\n\t\t)\n\t},\n\tstyles\n};\n\ncreateCustomElement(\"view-records-popover\", viewRecordsPopoverConfig);\ncreateCustomElement(\n\t\"view-records-popover-content\",\n\tviewRecordsPopoverContentConfig\n);\n\nexport { viewRecordsPopoverConfig, viewRecordsPopoverContentConfig };\n","import has from \"lodash/has\";\nimport isEmpty from \"lodash/isEmpty\";\nimport isString from \"lodash/isString\";\nimport unescape from \"lodash/unescape\";\nimport DOMPurify from \"dompurify\";\nimport { marked } from \"marked\";\nimport { dangerouslyCreateElementFromString } from \"@servicenow/ui-renderer-snabbdom\";\nimport {\n\tDESCRIPTION_COLLAPSED_STATE_TOGGLED,\n\tSYNTHESIZED_GENIUS_RESULT_EXPANDED,\n\tDESCRIPTION_STATES,\n\tASK_A_FOLLOW_UP,\n\tASK_A_FOLLOW_UP_LABEL,\n\tSHOW_LESS_LABEL,\n\tSHOW_MORE_LABEL,\n\tSHOW_FULL_ANSWER_LABEL\n} from \"../constants\";\nimport \"@servicenow/now-button\";\nimport \"@servicenow/now-icon\";\nimport \"@servicenow/now-text-link\";\nimport \"../common/popover/view-records-popover\";\nimport {\n\treplaceCitationsWithTemporaryPlaceHolders,\n\tnormalizeFullWidthParensAroundUrls\n} from \"../common/streaming/utils\";\n\nconst DESCRIPTION_MULTI_TYPES = {\n\tSTACKED: \"stacked\",\n\tHTML: \"html\"\n};\n\nconst getDescriptionStringElem = (description, isGlobal, isMini) => (\n\t<span\n\t\tclass={{\n\t\t\t\"genius-card__description-text\": true,\n\t\t\t\"genius-card__description-text-mini\": isMini,\n\t\t\t\"-global\": isGlobal\n\t\t}}\n\t\t{...(!isMini &&\n\t\t\tisGlobal && {\n\t\t\t\t\"data-truncation\": true,\n\t\t\t\t\"data-truncationmouseover\": false\n\t\t\t})}\n\t>\n\t\t{description}\n\t</span>\n);\n\nconst getDescriptionStackedElem = ({ values }, isGlobal, isMini) => (\n\t<div\n\t\tclassName=\"genius-card__description--stacked\"\n\t\t{...(!isMini &&\n\t\t\tisGlobal && {\n\t\t\t\t\"data-truncation\": true,\n\t\t\t\t\"data-truncationmouseover\": false\n\t\t\t})}\n\t>\n\t\t{isMini\n\t\t\t? getDescriptionStringElem(values[0], isGlobal, isMini)\n\t\t\t: values.map(description =>\n\t\t\t\t\tgetDescriptionStringElem(description, isGlobal, isMini)\n\t\t\t  )}\n\t</div>\n);\n\nconst getToggleButton = isExpanded => (\n\t<now-button-bare\n\t\tclassName=\"show-more\"\n\t\tappend-to-payload={{\n\t\t\tactionId: SYNTHESIZED_GENIUS_RESULT_EXPANDED,\n\t\t\ttype: isExpanded ? DESCRIPTION_STATES.COLLAPSE : DESCRIPTION_STATES.EXPAND\n\t\t}}\n\t\tlabel={isExpanded ? SHOW_LESS_LABEL : SHOW_FULL_ANSWER_LABEL}\n\t\ticon-end={isExpanded ? \"chevron-up-fill\" : \"chevron-down-fill\"}\n\t\tvariant=\"tertiary\"\n\t\tsize=\"sm\"\n\t/>\n);\n\nconst getDescriptionHtmlElem = (\n\t{ values },\n\tisGlobal,\n\tisMini,\n\tshouldTruncate,\n\tdescriptionCollapsed,\n\tisSynthesizedAndNotStreaming,\n\tupdateState\n) => {\n\tif (isEmpty(values)) return null;\n\n\tconst [snippet] = values;\n\n\tif (isEmpty(snippet)) return null;\n\tlet sanitizedSnippet = \"\";\n\tif (isSynthesizedAndNotStreaming) {\n\t\tsanitizedSnippet = replaceCitationsWithTemporaryPlaceHolders(\n\t\t\tDOMPurify.sanitize(unescape(snippet))\n\t\t);\n\t} else {\n\t\tsanitizedSnippet = DOMPurify.sanitize(unescape(snippet));\n\t}\n\n\treturn (\n\t\t<div className=\"genius-card__description-container\">\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t\"description-wrapper\": true,\n\t\t\t\t\t\"-collapsed\": descriptionCollapsed,\n\t\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\t\"-mini\": isMini\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\thook-insert={({ elm }) => updateState({ textRef: elm })}\n\t\t\t\t\thook-update={({ elm }) => updateState({ textRef: elm })}\n\t\t\t\t>\n\t\t\t\t\t{dangerouslyCreateElementFromString(\n\t\t\t\t\t\t`<div class=\"collapsible__description-text\">${sanitizedSnippet}</div>`\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{shouldTruncate && !isMini && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\"-collapsed\": descriptionCollapsed,\n\t\t\t\t\t\t\t\"show-more-container\": true\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\t\tclassName=\"show-more\"\n\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\tactionId: DESCRIPTION_COLLAPSED_STATE_TOGGLED,\n\t\t\t\t\t\t\t\ttype: descriptionCollapsed\n\t\t\t\t\t\t\t\t\t? DESCRIPTION_STATES.EXPAND\n\t\t\t\t\t\t\t\t\t: DESCRIPTION_STATES.COLLAPSE\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tlabel={descriptionCollapsed ? SHOW_MORE_LABEL : SHOW_LESS_LABEL}\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t></now-button-bare>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst getDescriptionElem = (\n\tdescription,\n\tisGlobal,\n\tshouldTruncate,\n\tdescriptionCollapsed,\n\tisMini,\n\tisSynthesizedAndNotStreaming,\n\tupdateState,\n\ttextRef\n) => {\n\tif (isString(description)) {\n\t\treturn getDescriptionStringElem(description, isGlobal, isMini);\n\t}\n\n\tconst { type } = description;\n\n\tconst elementsDict = {\n\t\t[DESCRIPTION_MULTI_TYPES.HTML]: getDescriptionHtmlElem,\n\t\t[DESCRIPTION_MULTI_TYPES.STACKED]: getDescriptionStackedElem\n\t};\n\n\tconst resolvedType = has(elementsDict, type)\n\t\t? type\n\t\t: DESCRIPTION_MULTI_TYPES.STACKED;\n\n\tif (resolvedType === DESCRIPTION_MULTI_TYPES.HTML) {\n\t\treturn elementsDict[resolvedType](\n\t\t\t{ ...description },\n\t\t\tisGlobal,\n\t\t\tisMini,\n\t\t\tshouldTruncate,\n\t\t\tdescriptionCollapsed,\n\t\t\tisSynthesizedAndNotStreaming,\n\t\t\tupdateState,\n\t\t\ttextRef\n\t\t);\n\t}\n\n\treturn elementsDict[resolvedType]({ ...description }, isGlobal, isMini);\n};\n\nconst view = ({\n\tdescription,\n\tisGlobal,\n\tshouldTruncate,\n\tdescriptionCollapsed,\n\tisMini = false,\n\tisSynthesizedAndNotStreaming,\n\tupdateState,\n\ttextRef,\n\tcitationsFromSynthesizedResponse,\n\tkgListCitations = [],\n\tactions = [],\n\tsynthesizedMarkdownText,\n\tsynthesizedGeniusResultCanExpand,\n\tsynthesizedGeniusResultExpanded,\n\tcanAskFollowUp,\n\tforceNewTab\n}) => {\n\tif (isEmpty(description)) return null;\n\tvar descriptionElem;\n\n\tif (isSynthesizedAndNotStreaming) {\n\t\tmarked.use({\n\t\t\trenderer: {\n\t\t\t\tlink({ href, title, tokens }) {\n\t\t\t\t\tconst text = this.parser.parseInline(tokens);\n\t\t\t\t\tconst titleAttr = title ? ` title=\"${title}\"` : \"\";\n\t\t\t\t\tconst targetAttr = forceNewTab\n\t\t\t\t\t\t? ` target=\"_blank\" rel=\"noopener noreferrer\"`\n\t\t\t\t\t\t: \"\";\n\t\t\t\t\treturn `<a href=\"${href}\"${titleAttr}${targetAttr}>${text}</a>`;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tlet basicHtml = marked.parse(\n\t\t\tnormalizeFullWidthParensAroundUrls(synthesizedMarkdownText),\n\t\t\t{\n\t\t\t\tgfm: true,\n\t\t\t\tpedantic: false,\n\t\t\t\theaderIds: false\n\t\t\t}\n\t\t);\n\t\tconst purifyConfig = {\n\t\t\tADD_TAGS: [\"now-badge\", \"now-avatar\"],\n\t\t\tADD_ATTR: [\n\t\t\t\t\"image-src\",\n\t\t\t\t\"user-name\",\n\t\t\t\t\"value\",\n\t\t\t\t\"color\",\n\t\t\t\t\"variant\",\n\t\t\t\t\"size\",\n\t\t\t\t\"round\",\n\t\t\t\t\"tabindex\",\n\t\t\t\t\"target\",\n\t\t\t\t\"rel\"\n\t\t\t]\n\t\t};\n\t\tlet sanitizedHtml = DOMPurify.sanitize(basicHtml, purifyConfig);\n\t\tlet parsedHtml = replaceCitationsWithTemporaryPlaceHolders(\n\t\t\tsanitizedHtml,\n\t\t\tcitationsFromSynthesizedResponse\n\t\t);\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<div className=\"sythesized-text-wrapper\" style={{ margin: \"0 auto\" }}>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\"sythesized-text-container\": true,\n\t\t\t\t\t\t\t\"-collapsed\": descriptionCollapsed\n\t\t\t\t\t\t}}\n\t\t\t\t\t\thook-insert={({ elm }) => updateState({ textRef: elm })}\n\t\t\t\t\t\thook-update={({ elm }) => updateState({ textRef: elm })}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tfontSize: \"15px\",\n\t\t\t\t\t\t\t...(synthesizedGeniusResultExpanded\n\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\tdisplay: \"-webkit-box\",\n\t\t\t\t\t\t\t\t\t\tWebkitBoxOrient: \"vertical\",\n\t\t\t\t\t\t\t\t\t\tWebkitBoxPack: \"start\",\n\t\t\t\t\t\t\t\t\t\tWebkitBoxAlign: \"stretch\",\n\t\t\t\t\t\t\t\t\t\toverflow: \"clip\",\n\t\t\t\t\t\t\t\t\t\ttextOverflow: \"ellipsis\",\n\t\t\t\t\t\t\t\t\t\tWebkitLineClamp: 6,\n\t\t\t\t\t\t\t\t\t\tlineClamp: 6\n\t\t\t\t\t\t\t\t  })\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{dangerouslyCreateElementFromString(\n\t\t\t\t\t\t\t`<div class=\"streaming-text\">${parsedHtml}</div>`\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\"buttons-container\": true,\n\t\t\t\t\t\t\t\"-global\": isGlobal\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{synthesizedGeniusResultCanExpand &&\n\t\t\t\t\t\t\tgetToggleButton(synthesizedGeniusResultExpanded)}\n\t\t\t\t\t\t{canAskFollowUp && (\n\t\t\t\t\t\t\t<now-button\n\t\t\t\t\t\t\t\tclassName=\"hand_over_to_va\"\n\t\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\t\ttype: ASK_A_FOLLOW_UP\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\ttooltipContent={ASK_A_FOLLOW_UP_LABEL}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"follow-up-btn-content\">\n\t\t\t\t\t\t\t\t\t<now-icon icon=\"ai-sparkle-outline\" size=\"md\" />\n\t\t\t\t\t\t\t\t\t<span>{ASK_A_FOLLOW_UP_LABEL}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</now-button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{kgListCitations?.length > 0 && actions?.length > 0 && (\n\t\t\t\t\t\t\t<view-records-popover\n\t\t\t\t\t\t\t\tkgListCitations={kgListCitations}\n\t\t\t\t\t\t\t\tactions={actions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t} else {\n\t\tdescriptionElem = getDescriptionElem(\n\t\t\tdescription,\n\t\t\tisGlobal,\n\t\t\tshouldTruncate,\n\t\t\tdescriptionCollapsed,\n\t\t\tisMini,\n\t\t\tisSynthesizedAndNotStreaming,\n\t\t\tupdateState,\n\t\t\ttextRef\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`genius-card__text genius-card__description genius-card__description-font-size-md`}\n\t\t\tclass={{\n\t\t\t\t\"-mini\": isMini\n\t\t\t}}\n\t\t>\n\t\t\t{descriptionElem}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-image.scss';\nimport {toNumber, isString, isNumber} from 'lodash';\nimport {toEmbeddableUrl} from '@servicenow/library-enhanced-utils';\nimport {configAriaSchema} from '@servicenow/library-schemas';\nimport {\n\tfilterAriaAttributes,\n\tsanitizeHref,\n} from '@servicenow/library-enhanced-utils';\nimport focusBehavior from '@servicenow/behavior-focus';\n\nimport packageInfo from '../package.json';\nconst {name, version} = packageInfo;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nconst toValidPixelsOrUndefined = (v) => {\n\t// isString or isNumber protects again toNumber(false) or toNumber(null)\n\t// v !== '' protects against toNumber('')\n\t// isFinite(toNumber(v)) protects against `Infinity` etc.\n\tif ((isString(v) || isNumber(v)) && v !== '' && isFinite(toNumber(v))) {\n\t\treturn toNumber(v) + 'px';\n\t}\n\treturn undefined;\n};\n\nconst renderImageTag = (state, dispatch) => {\n\tconst {\n\t\tsrc,\n\t\talt,\n\t\twidth,\n\t\theight,\n\t\tfit,\n\t\tposition,\n\t\thref = '',\n\t\tconfigAria,\n\t\tsupportRtl,\n\t\tdir,\n\t} = state.properties;\n\tconst imageTag = () => {\n\t\treturn (\n\t\t\t<img\n\t\t\t\tclass={{'-flip': supportRtl && dir === 'rtl'}}\n\t\t\t\tsrc={toEmbeddableUrl(src)}\n\t\t\t\talt={alt}\n\t\t\t\tstyle={{\n\t\t\t\t\tobjectFit: fit,\n\t\t\t\t\tobjectPosition: position,\n\t\t\t\t\tinlineSize: toValidPixelsOrUndefined(width),\n\t\t\t\t\tblockSize: toValidPixelsOrUndefined(height),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t};\n\n\tif (href) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\tclassName=\"now-image-link\"\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_IMAGE#CLICKED',\n\t\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\thref={sanitizeHref(href)}\n\t\t\t\t{...filterAriaAttributes(configAria, 'link')}\n\t\t\t\tstyle={{\n\t\t\t\t\tinlineSize: toValidPixelsOrUndefined(width),\n\t\t\t\t\tblockSize: toValidPixelsOrUndefined(height),\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{imageTag()}\n\t\t\t</a>\n\t\t);\n\t} else {\n\t\treturn imageTag();\n\t}\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {sources} = state.properties;\n\treturn (\n\t\t<picture>\n\t\t\t{sources.map((source) => {\n\t\t\t\treturn (\n\t\t\t\t\t<source\n\t\t\t\t\t\ttype={source.type}\n\t\t\t\t\t\tmedia={source.media}\n\t\t\t\t\t\t// note: srcset can also be a comma-separated list of image URLs with optional width descriptors\n\t\t\t\t\t\t// so in the future if a customer raises a DEF around this, we may need to add support for that\n\t\t\t\t\t\t// see https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images\n\t\t\t\t\t\tsrcset={toEmbeddableUrl(source.srcset)}\n\t\t\t\t\t\tsizes={source.sizes}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t\t{renderImageTag(state, dispatch)}\n\t\t</picture>\n\t);\n};\n\n/**\n * A simple, responsive image component.\n * Recommended for use in UI Builder. If using a different interface,\n * use a native `img` or `picture` tag instead.\n *\n * ```jsx\n * <now-image src=\"./image.png\" alt=\"description\" />\n *\n * <now-image src=\"./image.png\" alt=\"description\" height=\"50\" width=\"50\" fit=\"cover\" position=\"left\" />\n *\n * const sources = [\n *   {srcset: './image.webp', type: 'image/webp', media: '(min-width: 800px)'}\n *   {srcset: './image.png', type: 'image/png', media: '(max-width: 800px)'}\n * ];\n * <now-image src=\"./image.jpg\" sources={sources}  alt=\"description\" />\n * ```\n *\n * @seismicElement now-image\n * @summary A simple, responsive image component.\n * @uib.label Image\n * @uib.icon image\n * @uib.description Displays a static image\n * @uib.category primitives\n * @uib.associatedTypes global.core, global.dashboard, global.landing-page\n * @uib.properties src, sources, fit, position, width, height, alt, href, configAria, landmark, supportRtl\n * @uib.layout.layout.children fit, position, width, height\n * @uib.layout.layout.icon grid-three-outline\n * @uib.layout.accessibility.children alt, configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.layout.internationalization.children supportRtl\n * @uib.layout.internationalization.icon translated-text-outline\n * @uib.actions NOW_IMAGE#CLICKED\n * @uib.parMetadata {\"useDashboardHeader\": true}\n */\ncreateEnhancedElement('now-image', {\n\tproperties: {\n\t\t/**\n\t\t * The image URL.\n\t\t * @type {string}\n\t\t *\n\t\t * @uib.required\n\t\t * @uib.label Image source\n\t\t * @uib.description URL of the image to show\n\t\t * @uib.defaultValue /now-image-placeholder.jpg\n\t\t */\n\t\tsrc: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * An array of source objects to use in responsive images,\n\t\t * where each source object can contain:\n\t\t * - `srcset`: Image URL (required) or comma-separated list of image\n\t\t * URLs with optional width and/or pixel density descriptors.\n\t\t * - `type`: MIME type of the image source.\n\t\t * - `media`: Valid media query for the image source.\n\t\t * - `sizes`: Comma-separated list of source sizes that describes the\n\t\t * rendered width of the image represented by the source.\n\t\t * @type {{srcset: string, type: string, media: string, sizes: string}[]}\n\t\t *\n\t\t * @uib.label Image sources\n\t\t * @uib.description An array of source objects to use in responsive images\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"srcset\" }\n\t\t */\n\t\tsources: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tsrcset: {type: 'string'},\n\t\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t\t\tmedia: {type: 'string'},\n\t\t\t\t\t\tsizes: {type: 'string'},\n\t\t\t\t\t},\n\t\t\t\t\trequired: ['srcset'],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Alternative text description of the image.\n\t\t * @type {string}\n\t\t *\n\t\t * @uib.required\n\t\t * @uib.label Alt text\n\t\t * @uib.description Description of the image\n\t\t * @uib.defaultValue\n\t\t * @uib.translatable true\n\t\t */\n\t\talt: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Intrinsic width of the image in pixels.\n\t\t * @type {number}\n\t\t *\n\t\t * @uib.description Static width for the image (uses image width by default)\n\t\t */\n\t\twidth: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Intrinsic height of the image in pixels.\n\t\t * @type {number}\n\t\t *\n\t\t * @uib.description Static height for the image (uses image height by default)\n\t\t */\n\t\theight: {schema: {type: 'number'}},\n\t\t/**\n\t\t * Value passed to the `object-fit` CSS property on the image. This\n\t\t * value dictates how the image fits into its container when the\n\t\t * `height` and `width` properties differ from the image dimensions.\n\t\t * @type {('fill'|'contain'|'cover'|'none'|'scale-down')}\n\t\t *\n\t\t * @uib.required\n\t\t * @uib.description How the image fits in its container\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Fill\", \"value\": \"fill\"},{\"label\": \"Contain\", \"value\": \"contain\"},{\"label\": \"Cover\", \"value\": \"cover\"},{\"label\": \"Scale down\", \"value\": \"scale-down\"},{\"label\": \"None\", \"value\": \"none\"}]\n\t\t * @uib.defaultValue fill\n\t\t */\n\t\tfit: {\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['fill', 'contain', 'cover', 'none', 'scale-down'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Value passed to the `object-position` CSS property on the image.\n\t\t * This value dictates how the image is positioned relative to its\n\t\t * container when the `height` and `width` properties differ from the\n\t\t * image dimensions.\n\t\t * @type {string}\n\t\t *\n\t\t * @uib.required\n\t\t * @uib.description Anchors the image if it is larger than its container\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Center\", \"value\": \"center center\"}, {\"label\": \"Top-Left\", \"value\": \"top left\"}, {\"label\": \"Top-Right\", \"value\": \"top right\"}, {\"label\": \"Bottom-Left\", \"value\": \"bottom left\"}, {\"label\": \"Bottom-Right\", \"value\": \"bottom right\"}]\n\t\t * @uib.defaultValue center center\n\t\t */\n\t\tposition: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Link URL opened when the user clicks on the image.\n\t\t * @type {string}\n\t\t * @uib.label Link\n\t\t * @uib.description URL opened when the user clicks on the image\n\t\t */\n\t\thref: {required: false, schema: {type: 'string'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-image. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'link' key corresponds to the inner html `<img>` element in\n\t\t * now-image.\n\t\t * @type {{ link: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.defaultValue {\"link\": {}}\n\t\t * @uib.description Configure ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlink: configAriaSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this link\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the image flips along the inline axis if the document dir=\"rtl\".\n\t\t * Set this property for images that are tied to writing direction\n\t\t * @type {boolean}\n\t\t * @uib.label Flip image direction\n\t\t * @uib.description When true, the image flips along the inline axis if the document dir=\"rtl\". Set this property for images that are tied to writing direction\n\t\t */\n\t\tsupportRtl: {default: false, schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [{behavior: focusBehavior}],\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when an image with a link is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the image is clicked\n\t\t */\n\t\t'NOW_IMAGE#CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t},\n});\n","import \"@servicenow/now-avatar\";\nimport \"@servicenow/now-image\";\nimport \"@servicenow/now-icon\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { MARKER_IMAGE } from \"../constants\";\n\nconst MARKER_TYPES = {\n\tICON: \"icon\",\n\tIMAGE: \"image\",\n\tAVATAR: \"avatar\"\n};\n\nconst getMarkerElem = ({ type, value, alt }, isMini) => {\n\tif (type === MARKER_TYPES.AVATAR) {\n\t\treturn (\n\t\t\t<now-avatar\n\t\t\t\timageSrc={value}\n\t\t\t\tsize=\"lg\"\n\t\t\t\tuserName={alt}\n\t\t\t\tariaHidden=\"false\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (\n\t\ttype === MARKER_TYPES.ICON ||\n\t\t(type === MARKER_TYPES.IMAGE && !isEmpty(value) && !value.includes(\".\"))\n\t) {\n\t\treturn <now-icon icon={value} size=\"xl\" ariaHidden=\"true\" />;\n\t}\n\n\tif (type === MARKER_TYPES.IMAGE) {\n\t\tif (type === MARKER_TYPES.IMAGE) {\n\t\t\tif (isEmpty(value)) {\n\t\t\t\treturn <now-icon icon=\"book-outline\" size=\"xl\" ariaHidden=\"true\" />;\n\t\t\t} else {\n\t\t\t\treturn (\n\t\t\t\t\t<now-image\n\t\t\t\t\t\tsrc={value}\n\t\t\t\t\t\twidth={\n\t\t\t\t\t\t\tisMini ? MARKER_IMAGE.WIDTH_THUMBNAIL : MARKER_IMAGE.WIDTH_DEFAULT\n\t\t\t\t\t\t}\n\t\t\t\t\t\talt={alt || \"\"}\n\t\t\t\t\t\tfit=\"cover\"\n\t\t\t\t\t\tariaHidden=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n};\n\nconst isValid = type => Object.values(MARKER_TYPES).indexOf(type) !== -1;\n\nconst view = ({ marker, isGlobal, isMini }) => {\n\tif (isEmpty(marker)) {\n\t\treturn null;\n\t}\n\n\tconst { type } = marker;\n\tconst validType = isValid(type);\n\n\tif (!validType) {\n\t\treturn null;\n\t}\n\n\tconst markerElem = getMarkerElem(marker, isMini);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`genius-card__marker genius-card__marker--${type}`}\n\t\t\tclass={{\n\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\"-mini\": isMini\n\t\t\t}}\n\t\t>\n\t\t\t{markerElem}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","/* eslint-disable jsx-a11y/no-redundant-roles */\nimport isEmpty from \"lodash/isEmpty\";\n\nconst view = ({ heading, headingFontSize, isMini, isOneBox, isMobile }) =>\n\t!isEmpty(heading) ? (\n\t\t<div className=\"genius-card__text\">\n\t\t\t<h2\n\t\t\t\tdata-truncation\n\t\t\t\tclassName={`genius-card__heading-text genius-card__heading-font-size-${headingFontSize}`}\n\t\t\t\tclass={{\n\t\t\t\t\t\"genius-card__heading-text-mini\": isMini,\n\t\t\t\t\t\"genius-card__heading-text-onebox-mobile\": isOneBox && isMobile\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{heading}\n\t\t\t</h2>\n\t\t</div>\n\t) : null;\n\nexport default view;\n","import isEmpty from \"lodash/isEmpty\";\n\nconst view = ({\n\tidentifier,\n\tidentifierCriticalText,\n\tidentifierFontSize,\n\tisGlobal,\n\tidentifierAtBottom\n}) => {\n\tif (isEmpty(identifier) && isEmpty(identifierCriticalText)) return null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`genius-card__text genius-card__identifier genius-card__identifier-font-size-${identifierFontSize}`}\n\t\t>\n\t\t\t<span\n\t\t\t\tdata-truncation\n\t\t\t\tclass={{\n\t\t\t\t\t\"genius-card__identifier-text\": true,\n\t\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\t\"-bottom-margin\": identifierAtBottom\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{identifier}\n\t\t\t</span>\n\t\t\t{identifierCriticalText ? (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"genius-card__identifier-text genius-card__identifier-text--critical\"\n\t\t\t\t\tdata-truncation\n\t\t\t\t>\n\t\t\t\t\t{identifierCriticalText}\n\t\t\t\t</span>\n\t\t\t) : null}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import \"@servicenow/now-label-value\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { HORIZONTAL } from \"../constants\";\n\nconst view = ({ labelValuesInfo }) => {\n\tconst { labelValues = [], align = HORIZONTAL } = labelValuesInfo;\n\tif (isEmpty(labelValues)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"genius-card__label-values\">\n\t\t\t<now-label-value-stacked\n\t\t\t\titems={labelValues}\n\t\t\t\tsize=\"md\"\n\t\t\t\talign={align}\n\t\t\t\ttruncated\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import isEmpty from \"lodash/isEmpty\";\n\nimport Description from \"../contents/description\";\nimport Marker from \"../contents/marker\";\nimport Header from \"../contents/heading\";\nimport Identifier from \"../contents/identifier\";\nimport LabelValues from \"../contents/labelValues\";\n\nconst view = ({\n\tidentifier,\n\tidentifierCriticalText,\n\theading,\n\tmarker,\n\tlabelValuesInfo,\n\tdescription,\n\tidentifierFontSize,\n\theadingFontSize,\n\tisGlobal,\n\tidentifierAtBottom,\n\tshouldTruncate,\n\tdescriptionCollapsed,\n\tupdateState,\n\tshowActionAsLink,\n\tisOneBox,\n\tisExternalSourceType,\n\tisSynthesizedAndNotStreaming,\n\tcitationsFromSynthesizedResponse,\n\tkgListCitations,\n\tactions,\n\tsynthesizedMarkdownText,\n\tsynthesizedGeniusResultCanExpand,\n\tsynthesizedGeniusResultExpanded,\n\ttextRef,\n\tcanAskFollowUp,\n\tforceNewTab,\n\tdisableHref\n}) => (\n\t<div\n\t\tclass={{\n\t\t\t\"genius-card-body\": true,\n\t\t\t\"-min-height\": !isExternalSourceType && !isSynthesizedAndNotStreaming,\n\t\t\t\"-global\": isGlobal\n\t\t}}\n\t>\n\t\t{isEmpty(marker) ? null : (\n\t\t\t<div className=\"genius-card-body__column\">\n\t\t\t\t<Marker marker={marker} isGlobal={isGlobal} />\n\t\t\t</div>\n\t\t)}\n\t\t<div className=\"genius-card-body__column -truncate\">\n\t\t\t{identifierAtBottom || showActionAsLink ? null : (\n\t\t\t\t<Identifier\n\t\t\t\t\tidentifier={identifier}\n\t\t\t\t\tidentifierCriticalText={identifierCriticalText}\n\t\t\t\t\tidentifierFontSize={identifierFontSize}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\tidentifierAtBottom={identifierAtBottom}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<Header heading={heading} headingFontSize={headingFontSize} />\n\t\t\t<Description\n\t\t\t\tdescription={description}\n\t\t\t\tisGlobal={isGlobal}\n\t\t\t\tshouldTruncate={shouldTruncate}\n\t\t\t\tdescriptionCollapsed={descriptionCollapsed}\n\t\t\t\tupdateState={updateState}\n\t\t\t\tisOneBox={isOneBox}\n\t\t\t\tisSynthesizedAndNotStreaming={isSynthesizedAndNotStreaming}\n\t\t\t\tcitationsFromSynthesizedResponse={citationsFromSynthesizedResponse}\n\t\t\t\tkgListCitations={kgListCitations}\n\t\t\t\tactions={actions}\n\t\t\t\tsynthesizedGeniusResultCanExpand={synthesizedGeniusResultCanExpand}\n\t\t\t\tsynthesizedGeniusResultExpanded={synthesizedGeniusResultExpanded}\n\t\t\t\tsynthesizedMarkdownText={synthesizedMarkdownText}\n\t\t\t\ttextRef={textRef}\n\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t\tforceNewTab={forceNewTab}\n\t\t\t\tdisableHref={disableHref}\n\t\t\t/>\n\t\t\t<LabelValues labelValuesInfo={labelValuesInfo} />\n\t\t</div>\n\t</div>\n);\n\nexport default view;\n","import {t} from 'sn-translate';\nimport isNumber from 'lodash/isNumber';\n\nconst MINUTES = 60 * 1000;\n\nclass SnDateTimeWordService {\n\tparse(timestamp, timeZoneOffset, isSystemTime, timestampLong) {\n\t\tconst dateParsed = this._parse(timestamp);\n\t\tif (!dateParsed) {\n\t\t\treturn;\n\t\t}\n\t\t//if timestampLong is available no need to add offset\n\t\tif (timestampLong) {\n\t\t\treturn new Date(dateParsed.getTime());\n\t\t}\n\t\tconst currentOffset = -dateParsed.getTimezoneOffset() * MINUTES;\n\t\tlet offset = 0;\n\t\tif (isNumber(timeZoneOffset)) {\n\t\t\toffset += currentOffset - timeZoneOffset;\n\t\t}\n\t\tif (isSystemTime) {\n\t\t\toffset += currentOffset;\n\t\t}\n\t\treturn new Date(dateParsed.getTime() + offset);\n\t}\n\n\t_parse (timestamp) {\n\t\tif (!timestamp) {\n\t\t\treturn;\n\t\t}\n\n\t\t// typical from GraphQL\n\t\tconst dateParsed = new Date(timestamp);\n\t\tif (SnDateTimeWordService.isValidDate(dateParsed)) {\n\t\t\treturn dateParsed;\n\t\t}\n\n\t\t// safari is much more restrictive of the acceptable format\n\t\tconst safariTimestamp = timestamp\n\t\t\t.replace(/\\.\\d+/,'') // remove milliseconds\n\t\t\t.replace(/-/g,'/') // - to /\n\t\t\t.replace(/T/,' ') // remove T\n\t\t\t.replace(/Z/,' UTC') // Z to UTC\n\t\t\t.replace(/([+-]\\d\\d):(\\d\\d)/,' $1$2') // -04:00 -> -0400\n\t\t\t.replace(/\\..*|\\+.*/,'');\n\n\t\tconst safariParsed = new Date(safariTimestamp);\n\t\tif (SnDateTimeWordService.isValidDate(safariParsed)) {\n\t\t\treturn safariParsed;\n\t\t}\n\n\t\t// possible\n\t\tconst numericDate = new Date(parseInt(timestamp, 10));\n\t\tif (SnDateTimeWordService.isValidDate(numericDate)) {\n\t\t\treturn numericDate;\n\t\t}\n\t}\n\n\tstatic isValidDate(date) {\n\t\treturn !isNaN(date.getTime());\n\t}\n\n\tgetWords(date, verbose) {\n\t\tconst baseDate = new Date(Date.now());\n\t\tconst diff = baseDate - date;\n\n\t\treturn SnDateTimeWordService._toWords(diff, verbose);\n\t}\n\n\tstatic _toWords(diffMills, verbose) {\n\t\tconst WORDS = getWordLiterals(verbose);\n\n\t\tconst isPast = diffMills >= 0;\n\t\tconst AGO = isPast ? WORDS.ago : WORDS.fromNow;\n\n\t\tdiffMills = Math.abs(diffMills);\n\t\tconst seconds = diffMills / 1000;\n\t\tconst minutes = seconds / 60;\n\t\tconst hours = minutes / 60;\n\t\tconst days = hours / 24;\n\t\tconst years = days / 365;\n\n\t\tconst words =\n\t\t\tseconds < 45   && !isPast && substitute(WORDS.seconds, 1, AGO)            ||\n\t\t\tseconds < 45   && substitute(WORDS.justNow)                               ||\n\t\t\tseconds < 90   && substitute(WORDS.minute,    1, AGO)                     ||\n\t\t\tminutes < 45   && substitute(WORDS.minutes,   Math.round(minutes), AGO)   ||\n\t\t\tminutes < 90   && substitute(WORDS.hour,      1, AGO)                     ||\n\t\t\thours < 24     && substitute(WORDS.hours,     Math.round(hours), AGO)\t  ||\n\t\t\thours < 42     && substitute(WORDS.day,       1, AGO)                     ||\n\t\t\tdays < 30      && substitute(WORDS.days,      Math.ceil(days), AGO)       ||\n\t\t\tdays < 45      && substitute(WORDS.month,     1, AGO)                     ||\n\t\t\tdays < 365     && substitute(WORDS.months,    Math.round(days / 30), AGO) ||\n\t\t\tyears < 1.5    && substitute(WORDS.year,      1, AGO)                     ||\n\n\t\t\tsubstitute(WORDS.years, Math.round(years), AGO);\n\n\t\treturn words;\n\t}\n\n}\n\nconst snDateTimeWordService = new SnDateTimeWordService();\nexport default snDateTimeWordService;\nexport const toWords = SnDateTimeWordService._toWords;\n\n\nconst DAY = 24 * 60 * 60 * 1000;\nfunction daysBetween(baseDate, actualDate) {\n\tconst normalizedBaseDate = new Date(baseDate.getTime());\n\tnormalizedBaseDate.setHours(0, 0, 0);\n\tconst normalizedActualDate = new Date(actualDate.getTime());\n\tnormalizedActualDate.setHours(0, 0, 0);\n\n\tconst diff = normalizedBaseDate.getTime() - normalizedActualDate.getTime();\n\treturn (diff >= 0 || -1) * Math.round(Math.abs(diff / DAY));\n}\n\nfunction substitute(string, number, ago) {\n\treturn(number === undefined)\n\t\t? string\n\t\t: replace(ago, replace(string, number));\n}\n\nfunction replace(format, string) {\n\treturn format.replace(/%d/i, string);\n}\n\nconst getWordLiterals = (verbose) => {\n\treturn {\n\t\tago: t('%d ago'),\n\t\tfromNow: t('%d from now'),\n\t\tnext: t('this %d'),\n\t\tlast: t('last %d'),\n\t\tjustNow: t('just now'),\n\t\talmostNow: t('almost now'),\n\t\tseconds: t('less than a minute'),\n\t\tminute: verbose ? t('minute_verbose') : t('about a minute'),\n\t\tminutes: verbose ?  t('%d minutes_verbose') : t('%d minutes'),\n\t\thour: t('about an hour'),\n\t\thours: verbose ? t('about %d hours_verbose') : t('about %d hours'),\n\t\tday: t('about a day'),\n\t\tdays: verbose ? t('%d days_verbose') : t('%d days'),\n\t\tmonth: t('about a month'),\n\t\tmonths: verbose ? t('%d months_verbose') : t('%d months'),\n\t\tyear: t('about a year'),\n\t\tyears: verbose ? t('%d years_verbose') : t('%d years'),\n\t\ttoday: t('today'),\n\t\tyesterday: t('yesterday'),\n\t\ttomorrow: t('tomorrow'),\n\t\tnumbers: []\n\t}\n};","const INTERVAL = 30 * 1000;\n\nclass SnTimerService {\n\tconstructor() {\n\t\tthis._fnArray = [];\n\t}\n\n\tadd(fn) {\n\t\tif (!this._interval) {\n\t\t\tthis._interval = setInterval(() => this._fireEvents(), INTERVAL);\n\t\t}\n\n\t\tthis._fnArray.push(fn);\n\t\treturn this._remove.bind(this, fn);\n\t}\n\n\t_remove(fn) {\n\t\tconst index = this._fnArray.indexOf(fn);\n\t\tif (index >= 0) {\n\t\t\tthis._fnArray.splice(index, 1);\n\t\t}\n\t}\n\n\t_fireEvents() {\n\t\tthis._fnArray.forEach(fn => fn());\n\t}\n}\n\nconst snTimerService = new SnTimerService();\nexport default snTimerService;","import snDateTimeWordService from './SnDateTimeWordService';\nimport snTimerService from './SnTimerService';\nimport {t} from 'sn-translate';\nimport {preUserData, preUserPrefs} from 'sn-uxpage-presource';\n\nconst UNKNOWN = t('Unknown');\nconst NOP = () => {};\nconst isFunction = (v) => typeof v === 'function';\n\nconst DATE_FORMAT_KEY = 'glide.ui.date_format';\n\nexport default class SnTimeAgo {\n\tstatic getBehaviors() {\n\t\treturn [preUserData, preUserPrefs];\n\t}\n\n\tstatic _DEFAULT_OPTIONS = {\n\t\tsystemTime: false,\n\t\tdateOnly: false,\n\t\ttimeAgo: false,\n\t\tdateBoth: false\n\t};\n\n\t_incoming;\n\t_removeFn = NOP;\n\t_options = {};\n\n\n\t/**\n\t * Constructor\n\t *\n\t * @param props setup props, props.timestampLong holds the unix timestamp in milliseconds\n\t * (number of milliseconds between timestamp and the Unix Epoch )\n\t * @param timestamp the original timestamp (string)\n\t * @param options enforced options that will override the user preference\n\t */\n\tconstructor(props, timestamp, options) {\n\t\tthis._incoming = {\n\t\t\toptions: options,\n\t\t    timestamp: timestamp || UNKNOWN,\n\t\t    timestampLong: props.timestampLong,\n\t\t    timeAvailable: props.timestampLong || timestamp\n\t\t};\n\n\t\tthis.update();\n\t}\n\n\n\t/**\n\t * Used when the props for the behaviors have changed\n\t */\n\tupdate() {\n\t\tconst dateFormatObj = this.getDateFormat();\n\n\t\tthis._options = {...SnTimeAgo._DEFAULT_OPTIONS, ...dateFormatObj, ...this._incoming.options};\n\t\tthis._options.timeZoneOffset = preUserData && preUserData.initialState ? preUserData.initialState.timeZoneOffset || null : null;\n\t}\n\n\tgetDateFormat() {\t\n\t\tconst uxGlobalsDateFormat = window.ux_globals?.userPrefs?.[\"glide.ui.date_format\"];\n\t\tconst presourceDateFormat = preUserPrefs && preUserPrefs.initialState ? preUserPrefs.initialState.find(p => p.name === DATE_FORMAT_KEY) || {} : {};\n\n\t\tconst dateFormatString = uxGlobalsDateFormat || presourceDateFormat.value;\n\t\tconst dateFormatObj = SnTimeAgo._parseDateFormatPref(dateFormatString);\n\n\t\treturn dateFormatObj;\n\t}\n\n\t/** private */\n\tstatic _parseDateFormatPref(prefValue) {\n\t\tif (!prefValue) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst value = prefValue.replace(/([\\w]+)\\s*:/g, '\"$1\":');\n\t\ttry {\n\t\t\treturn JSON.parse(value);\n\t\t}\n\t\tcatch (unused) {\n\t\t\tconsole.warn('The format for \"glide.ui.date_format\" is not recognizable');\t// eslint-disable-line no-console\n\t\t\treturn {};\n\t\t}\n\t}\n\n\t/**\n\t * Sets the callback function for when the time ago has \"ticked\" or the props have changed\n\t *\n\t * @param updateFn the callback function\n\t * @returns the function to call when to remove the callback function\n\t */\n\tsetUpdateFn(updateFn) {\n\t\tthis.remove();\n\t\treturn this._removeFn = isFunction(updateFn)\n\t\t\t? snTimerService.add(() => updateFn(this.getTickTime()))\n\t\t\t: NOP;\n\t}\n\n\t/**\n\t * Removes the callback function\n\t */\n\tremove() {\n\t\tthis._removeFn();\n\t}\n\n\t/**\n\t * Gets the current \"tick\" information for the time ago\n\t *\n\t * - time: the value that should be displayed\n\t * - alternate: the alternate display, usually in a tooltip\n\t * - timestamp: the original timestamp(string)\n\t * - words: the elapsed time from the timestamp\n\t * - timestampLong: the unix timestamp in milliseconds\n\t * - timeAvailable: holds timestampLong if it is available else holds timestamp\n\t *\n\t * * @returns {{time: string, alternate: string, timestamp: string, words: string}}\n\t */\n\tgetTickTime() {\n\t\tconst {timestamp, timestampLong, timeAvailable}= this._incoming;\n\t\tconst {systemTime, timeZoneOffset, timeAgo, dateBoth, verbose = true} = this._options;\n\t\tconst date = snDateTimeWordService.parse(timeAvailable, timeZoneOffset, systemTime, timestampLong);\n\t\tconst words = date\n\t\t\t? snDateTimeWordService.getWords(date, verbose)\n\t\t\t: UNKNOWN;\n\n\t\tlet time;\n\t\tlet alternate;\n\n\t\tif (dateBoth) {\n\t\t\ttime = `${timestamp} (${words})`;\n\t\t} else if (timeAgo) {\n\t\t\talternate = timestamp;\n\t\t\ttime = words;\n\t\t} else {\n\t\t\talternate = words;\n\t\t\ttime = timestamp;\n\t\t}\n\n\t\treturn {\n\t\t\ttime,\n\t\t\talternate,\n\n\t\t\twords,\n\t\t\ttimestamp,\n\t\t};\n\t}\n}\n","import isEmpty from 'lodash/isEmpty';\n\n// Copied from condition builder commons. Did not want to pull in a new dependency since\n// condition builder commons also has other dependencies\n\n/**\n * Enum error levels\n * @readonly\n * @enum {string}\n */\nexport const errorLevelEnum = Object.freeze({\n\tFATAL: 'fatal',\n\tERROR: 'error',\n\tWARNING: 'warning',\n\tINFO: 'info',\n});\n\nclass LoggerBase {\n\tsink = console;\n\n\t/**\n\t * Logs fatal errors\n\t * @param {String} msg\n\t * @param  {...any} optionalParams\n\t */\n\tfatal = (msg, ...optionalParams) => {\n\t\tconst fatalMsg = `FATAL Error: ${msg}`;\n\t\tisEmpty(optionalParams)\n\t\t\t? this.sink.error(fatalMsg)\n\t\t\t: this.sink.error(fatalMsg, ...optionalParams);\n\t};\n\n\t/**\n\t * Logs Errors\n\t * @param {String} err\n\t * @param  {...any} optionalParams\n\t */\n\terror = (err, ...optionalParams) => {\n\t\tisEmpty(optionalParams)\n\t\t\t? this.sink.error(err)\n\t\t\t: this.sink.error(err, ...optionalParams);\n\t};\n\n\t/**\n\t * Logs warnings\n\t * @param {String} msg\n\t * @param  {...any} optionalParams\n\t */\n\twarning = (msg, ...optionalParams) => {\n\t\tisEmpty(optionalParams)\n\t\t\t? this.sink.warn(msg)\n\t\t\t: this.sink.warn(msg, ...optionalParams);\n\t};\n\n\t/**\n\t * Logs info messeges\n\t * @param {String} msg\n\t * @param  {...any} optionalParams\n\t */\n\tinfo = (msg, ...optionalParams) => {\n\t\tisEmpty(optionalParams)\n\t\t\t? this.sink.info(msg)\n\t\t\t: this.sink.info(msg, ...optionalParams);\n\t};\n\n\t/**\n\t * Logs according to severity\n\t * @param {String} msg\n\t * @param {errorLevelEnum} severity\n\t * @param  {...any} optionalParams\n\t */\n\tlog = (msg, severity, ...optionalParams) => {\n\t\tswitch (severity) {\n\t\t\tcase errorLevelEnum.FATAL:\n\t\t\t\tthis.fatal(msg, ...optionalParams);\n\t\t\t\tbreak;\n\t\t\tcase errorLevelEnum.ERROR:\n\t\t\t\tthis.error(msg, ...optionalParams);\n\t\t\t\tbreak;\n\t\t\tcase errorLevelEnum.WARNING:\n\t\t\t\tthis.warning(msg, ...optionalParams);\n\t\t\t\tbreak;\n\t\t\tcase errorLevelEnum.INFO:\n\t\t\tdefault:\n\t\t\t\tthis.info(msg, ...optionalParams);\n\t\t}\n\t};\n}\n\nconst logger = new LoggerBase();\n\nexport default logger;\n","export const NOW_BUTTON_BARE_CLICKED = 'NOW_BUTTON_BARE#CLICKED';\nexport const NOW_LIST_ACTIONABLE_MESSAGE_ACTION_CLICKED =\n\t'NOW_LIST#ACTIONABLE_MESSAGE_ACTION_CLICKED';\n\nexport const actionableMessageKey = 'actionableMessage';\n","import isEmpty from 'lodash/isEmpty';\n\nimport logger from '../../shared/utils/logger';\n\nimport {\n\tNOW_BUTTON_BARE_CLICKED,\n\tNOW_LIST_ACTIONABLE_MESSAGE_ACTION_CLICKED,\n\tactionableMessageKey,\n} from './constants';\n\n/* EFFECTS */\n/**\n * dispatched when a button in an actionable message is clicked.\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst actionableMessageLinkClickedHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload,\n\t\t\tpayload: { action, location, key },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tif (key === actionableMessageKey) {\n\t\tif (isEmpty(action)) {\n\t\t\tlogger.error(\n\t\t\t\t`No action to dispatch in the ${location} actionable message configuration.`\n\t\t\t);\n\t\t} else {\n\t\t\tdispatch(action, payload);\n\t\t\tdispatch(NOW_LIST_ACTIONABLE_MESSAGE_ACTION_CLICKED, payload);\n\t\t}\n\t}\n};\n\nconst actionableMessageBehavior = {\n\tname: 'actionableMessageBehavior',\n\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[NOW_BUTTON_BARE_CLICKED]: {\n\t\t\teffect: actionableMessageLinkClickedHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default actionableMessageBehavior;\n","import { createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\n\nimport styles from './ariaLiveRegion.scss';\n\nconst view = (state) => {\n\tconst {\n\t\tproperties: { messages, politenessSetting, relevant },\n\t} = state;\n\tconst classes = 'sr-only';\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classes}\n\t\t\taria-live={politenessSetting}\n\t\t\taria-relevant={relevant}\n\t\t>\n\t\t\t{messages.map((message) => {\n\t\t\t\treturn <span>{message}</span>;\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('sn-aria-live-region', {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview,\n\t},\n\tproperties: {\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t},\n\t\tpolitenessSetting: {\n\t\t\tdefault: 'polite',\n\t\t},\n\t\trelevant: {\n\t\t\tdefault: 'additions',\n\t\t},\n\t},\n\tstyles,\n});\n","export const ARIA_LIVE_BEHAVIOR_NAME = 'ariaLive';\nexport const ARIA_MESSAGE_MAX = 5;\nexport const ARIA_LIVE_MESSAGE = 'ARIA_LIVE#MESSAGE';\nexport const ARIA_LIVE_CLEAR_MESSAGES = 'ARIA_LIVE#CLEAR_MESSAGES';\n","import '../../components/ariaLiveRegion/ariaLiveRegion';\nimport { actionTypes } from '@servicenow/ui-core';\n\nimport {\n\tARIA_LIVE_CLEAR_MESSAGES,\n\tARIA_LIVE_MESSAGE,\n\tARIA_MESSAGE_MAX,\n} from './constants';\n\nconst { COMPONENT_CONNECTED, COMPONENT_DISCONNECTED } = actionTypes;\n\nconst STATIC_ARIA_REGISTRY = new Map(); // Need access to size, behavior is setup to remove any lingering refs\n\nconst onConnect = ({\n\thost,\n\taction: {\n\t\tpayload: { options },\n\t},\n}) => {\n\tconst compId = host.getComponentId();\n\tconst el = document.createElement('sn-aria-live-region');\n\tlet maxMessages;\n\tif (options) {\n\t\tif (options.politenessSetting)\n\t\t\tel.politenessSetting = options.politenessSetting;\n\t\tif (options.relevant) el.relevant = options.relevant;\n\t\tif (options.maxMessages) maxMessages = options.maxMessages;\n\t}\n\n\tif (!maxMessages) maxMessages = ARIA_MESSAGE_MAX;\n\tdocument.body.appendChild(el);\n\tSTATIC_ARIA_REGISTRY.set(compId, {\n\t\thost,\n\t\tariaLiveReference: el,\n\t\tmaxMessages,\n\t});\n};\n\nconst onDisconnect = ({ host }) => {\n\tconst compId = host.getComponentId();\n\tconst compDetails = STATIC_ARIA_REGISTRY.get(compId);\n\tconst ariaLiveReference = compDetails.ariaLiveReference;\n\tariaLiveReference.remove();\n\tSTATIC_ARIA_REGISTRY.delete(compId);\n};\n\nconst liveMessageEffect = ({ host, action: { payload } }) => {\n\tconst compDetails = STATIC_ARIA_REGISTRY.get(host.getComponentId());\n\tif (!compDetails) return;\n\tconst { ariaLiveReference, maxMessages } = compDetails;\n\tif (!ariaLiveReference) return;\n\n\tconst { message } = payload;\n\tconst currentMessages = ariaLiveReference.getProperty('messages');\n\t// Ensure messages only contains latest ARIA_MESSAGE_MAX or maxMessages messages to save us from node spam\n\tariaLiveReference.messages.push(message);\n\tif (currentMessages.length > maxMessages)\n\t\tariaLiveReference.messages.shift();\n\tariaLiveReference.messages = [...ariaLiveReference.messages];\n};\n\nconst clearMessagesEffect = ({ host }) => {\n\tconst compDetails = STATIC_ARIA_REGISTRY.get(host.getComponentId());\n\tif (!compDetails) return;\n\tconst ariaLiveReference = compDetails.ariaLiveReference;\n\tariaLiveReference.messages = [];\n};\n\nexport const actionHandlers = {\n\t[COMPONENT_CONNECTED]: onConnect,\n\t[COMPONENT_DISCONNECTED]: onDisconnect,\n\t[ARIA_LIVE_MESSAGE]: {\n\t\teffect: liveMessageEffect,\n\t\tstopPropagation: true,\n\t},\n\t[ARIA_LIVE_CLEAR_MESSAGES]: {\n\t\teffect: clearMessagesEffect,\n\t\tstopPropagation: true,\n\t},\n};\n","import { actionHandlers } from './actionHandlers';\nimport { ARIA_LIVE_BEHAVIOR_NAME } from './constants';\n\nexport const ariaLiveBehavior = {\n\tname: ARIA_LIVE_BEHAVIOR_NAME,\n\tactionHandlers,\n};\n\n/**\n * dispatch(\"ARIA_LIVE_MESSAGE\", {message: t('Your Live Message Here')});\n */\n","import { actionTypes } from '@servicenow/ui-core';\nimport get from 'lodash/get';\nimport isString from 'lodash/isString';\n\nconst { COMPONENT_BOOTSTRAPPED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nconst hasInvalidUibProps = (uibProps, properties) =>\n\tuibProps.some((propName) => {\n\t\tconst prop = get(properties, propName, '');\n\t\treturn isString(prop) && prop.includes('@');\n\t});\n\nconst checkForInvalidUibProps = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {\n\t\t\t\toptions: { configurableUibProps },\n\t\t\t},\n\t\t},\n\t\tupdateState,\n\t\tproperties,\n\t} = coeffects;\n\n\tupdateState({\n\t\thasUibConfigError: hasInvalidUibProps(configurableUibProps, properties),\n\t});\n};\n\nconst onBootstrap = (coeffects) => {\n\tconst {\n\t\tproperties: { workspaceConfigId },\n\t} = coeffects;\n\n\tif (!workspaceConfigId) checkForInvalidUibProps(coeffects);\n};\n\nconst onPropertyChanged = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {\n\t\t\t\tname,\n\t\t\t\toptions: { configurableUibProps },\n\t\t\t},\n\t\t},\n\t\tproperties: { workspaceConfigId },\n\t} = coeffects;\n\n\tif (!workspaceConfigId && configurableUibProps.includes(name))\n\t\tcheckForInvalidUibProps(coeffects);\n};\n\nexport const actionHandlers = {\n\t[COMPONENT_BOOTSTRAPPED]: onBootstrap,\n\t[COMPONENT_PROPERTY_CHANGED]: onPropertyChanged,\n};\n","export const UIB_BEHAVIOR_NAME = 'uiBuilder';\n","import { actionHandlers } from './actionHandlers';\nimport { UIB_BEHAVIOR_NAME } from './constants';\n\nexport const uibBehavior = {\n\tname: UIB_BEHAVIOR_NAME,\n\tinitialState: {\n\t\thasUibConfigError: false,\n\t},\n\tactionHandlers,\n};\n","import get from 'lodash/get';\n\nexport const getConfigurableUibProps = (json, path) =>\n\tget(json, path, [])\n\t\t.filter((prop) => !prop.readOnly)\n\t\t.map((prop) => prop.name);\n","import { actionTypes } from '@servicenow/ui-core';\nimport { isEmpty, isEqual } from 'lodash';\nconst { COMPONENT_CONNECTED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\nconst USER_PREF_APP_SHELL_STATE_CHANGE =\n\t'LIST_COMMONS#USER_PREF_APP_SHELL_STATE_CHANGED';\n\nconst transformUserPreferencesArray = (userPrefs = {}) => {\n\tconst userPrefsArray = Object.keys(userPrefs).map(function (key) {\n\t\treturn {\n\t\t\tname: key,\n\t\t\tvalue: userPrefs[key],\n\t\t};\n\t});\n\treturn userPrefsArray;\n};\n\nconst deepSearchElement = (selector, root = document.body) => {\n\tlet queue = [root];\n\twhile (queue.length > 0) {\n\t\tconst top = queue.shift();\n\t\tconst ele = top.querySelector(selector);\n\t\tif (ele) return ele;\n\n\t\tconst topShadow = top.shadowRoot;\n\t\tif (topShadow) queue.push(topShadow);\n\t\tconst allSearched = top.querySelectorAll('*');\n\t\tfor (let i = 0; i < allSearched.length; i++) {\n\t\t\tif (allSearched[i].shadowRoot)\n\t\t\t\tqueue.push(allSearched[i].shadowRoot);\n\t\t}\n\t}\n};\n\nconst getSelectableProp = (componentName, propName) => {\n\tconst snCanvasAppshellRoot = deepSearchElement(componentName);\n\tif (!snCanvasAppshellRoot) return {};\n\tconst componentId = snCanvasAppshellRoot.getAttribute('component-id');\n\n\treturn `@${componentId}/${propName}`;\n};\n\nconst onComponentConnected = (coeffects) => {\n\tconst { updateProperties } = coeffects;\n\n\tconst appShellRoute = getSelectableProp(\n\t\t'sn-canvas-appshell-root',\n\t\t'canvasSession'\n\t);\n\n\tupdateProperties({\n\t\tcanvasSession: appShellRoute,\n\t});\n};\n\nconst onPropertyChanged = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name },\n\t\t},\n\t} = coeffects;\n\n\tif (name === 'canvasSession') {\n\t\tconst {\n\t\t\tupdateState,\n\t\t\tstate: { userPreferencesAppShell, userRolesAppShell },\n\t\t\tproperties: {\n\t\t\t\tcanvasSession: { userPrefs, user = {} },\n\t\t\t},\n\t\t\tdispatch,\n\t\t} = coeffects;\n\n\t\tconst userRoles = user.roles;\n\t\tconst userPreferencesArray = transformUserPreferencesArray(userPrefs);\n\t\tlet stateUpdates = [];\n\t\tif (!isEqual(userPreferencesAppShell, userPreferencesArray)) {\n\t\t\tdispatch(USER_PREF_APP_SHELL_STATE_CHANGE);\n\t\t\tstateUpdates.push({\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'userPreferencesAppShell',\n\t\t\t\tvalue: userPreferencesArray,\n\t\t\t});\n\t\t}\n\t\tif (!isEqual(userRolesAppShell, userRoles)) {\n\t\t\tstateUpdates.push({\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'userRolesAppShell',\n\t\t\t\tvalue: userRoles,\n\t\t\t});\n\t\t}\n\t\tif (!isEmpty(stateUpdates)) {\n\t\t\tupdateState(stateUpdates);\n\t\t}\n\t}\n};\n\nexport const actionHandlers = {\n\t[COMPONENT_CONNECTED]: onComponentConnected,\n\t[COMPONENT_PROPERTY_CHANGED]: onPropertyChanged,\n};\n","import { actionHandlers } from './actionHandlers';\n\nexport const sessionUserPreferencesBehavior = {\n\tname: 'SESSION_USER_PREF_BEHAVIOR',\n\tstate: {\n\t\tuserPreferencesAppShell: { default: [] },\n\t\tuserRolesAppShell: { default: [] },\n\t},\n\tproperties: {\n\t\tcanvasSession: { default: {} },\n\t},\n\tactionHandlers: actionHandlers,\n};\n","/**\n * Factory function for logging.\n */\nconst LOG_STATUS_KEY = '__RECORD_LIST_LOG_LEVEL';\n\nconst LOG_LEVEL = {\n\tLOG_LEVEL_ALL: 0,\n\tLOG_LEVEL_DEBUG: 1,\n\tLOG_LEVEL_LOG: 2,\n\tLOG_LEVEL_INFO: 2,\n\tLOG_LEVEL_WARN: 3,\n\tLOG_LEVEL_ERROR: 4,\n};\nconst {\n\tLOG_LEVEL_ALL,\n\tLOG_LEVEL_DEBUG,\n\tLOG_LEVEL_LOG,\n\tLOG_LEVEL_INFO,\n\tLOG_LEVEL_WARN,\n\tLOG_LEVEL_ERROR,\n} = LOG_LEVEL;\n\nexport const Logger = () => {\n\t// set default logging level\n\tif (typeof window[LOG_STATUS_KEY] === 'undefined') {\n\t\twindow[LOG_STATUS_KEY] = LOG_LEVEL_ERROR;\n\t}\n\n\t/**\n\t * Simple logging utilty to include context\n\t * @usage Logger().enable();\n\t *\n\t * @param logLevel\n\t */\n\tconst enable = (logLevel = LOG_LEVEL_ALL) => {\n\t\tswitch (logLevel) {\n\t\t\tdefault:\n\t\t\t\tlogLevel = LOG_LEVEL_ERROR;\n\t\t\t// falls through\n\t\t\tcase LOG_LEVEL_ALL:\n\t\t\tcase LOG_LEVEL_DEBUG:\n\t\t\tcase LOG_LEVEL_LOG:\n\t\t\tcase LOG_LEVEL_INFO:\n\t\t\tcase LOG_LEVEL_WARN:\n\t\t\tcase LOG_LEVEL_ERROR:\n\t\t\t\twindow[LOG_STATUS_KEY] = logLevel;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\t/**\n\t * @usage Logger().disable();\n\t */\n\tconst disable = () => {\n\t\twindow[LOG_STATUS_KEY] = LOG_LEVEL_ERROR;\n\t};\n\n\t/**\n\t * @usage const LOG = Logger().createLog('ComponentName');\n\t *\n\t * @param name\n\t * @return {{log, debug, warn, error}}\n\t */\n\tconst createLog = (name) => {\n\t\tconst _log = (type, level, args) => {\n\t\t\tif (level < window[LOG_STATUS_KEY]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\targs = Array.prototype.splice.call(args, 0);\n\t\t\targs.unshift(`(${name})`);\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole[type].apply(console, args);\n\t\t};\n\n\t\treturn {\n\t\t\tdebug: function () {\n\t\t\t\t_log('debug', LOG_LEVEL_DEBUG, arguments);\n\t\t\t},\n\t\t\tlog: function () {\n\t\t\t\t_log('log', LOG_LEVEL_LOG, arguments);\n\t\t\t},\n\t\t\tinfo: function () {\n\t\t\t\t_log('info', LOG_LEVEL_INFO, arguments);\n\t\t\t},\n\t\t\twarn: function () {\n\t\t\t\t_log('warn', LOG_LEVEL_WARN, arguments);\n\t\t\t},\n\t\t\terror: function () {\n\t\t\t\t_log('error', LOG_LEVEL_ERROR, arguments);\n\t\t\t},\n\t\t};\n\t};\n\n\treturn { enable, disable, createLog };\n};\n","export const INTERSECTION_OBSERVER_NAME = 'intersectionObserverBehavior';\n\nexport const OBSERVE_ELEMENT = 'INTERSECTION_BEHAVIOR#OBSERVE_ELEMENT';\nexport const UNOBSERVE_ELEMENT = 'INTERSECTION_BEHAVIOR#UNOBSERVE_ELEMENT';\nexport const REGISTER_INTERSECTION_OBSERVER = 'INTERSECTION_BEHAVIOR#REGISTER';\nexport const UNREGISTER_INTERSECTION_OBSERVER =\n\t'INTERSECTION_OBSERVER#UNREGISTER';\n\n/**\n * HOOK NAMES\n */\nexport const HOOK_INSERT = 'hook-insert';\nexport const HOOK_DESTROY = 'hook-destroy';\nexport const HOOK_INIT = 'hook-init';\n/**\n * PATHS\n */\n\n/**\n * Path of options in action payload\n */\nexport const PAYLOAD_OPTIONS_PATH = 'payload.options';\n\n/**\n * Path of intersectionObserver object in state\n */\nexport const INTERSECTION_OBSERVER_STATE_PATH = `behaviors.${INTERSECTION_OBSERVER_NAME}.intersectionObserver`;\n\n/**\n * NOW MODES\n */\nexport const NOW_MODE_ACTIVE = 'active';\nexport const NOW_MODE_SUSPEND = 'suspend';\nexport const NOW_MODE_DETACH = 'detach';\n\n/**\n * DEFAULTS\n */\nexport const DEFAULT_ROOT_SELECTOR = '[data-id=scrollContainer]';\nexport const DEFAULT_ROOT_MARGIN = '100px 100px 100px 100px';\nexport const DEFAULT_THRESHOLD = 1.0;\nexport const DEFAULT_DEBOUNCE_DELAY = 50;\n","import { get as fpGet, getOr } from 'lodash/fp';\n\nimport {\n\tDEFAULT_DEBOUNCE_DELAY,\n\tDEFAULT_ROOT_MARGIN,\n\tDEFAULT_ROOT_SELECTOR,\n\tDEFAULT_THRESHOLD,\n\tINTERSECTION_OBSERVER_STATE_PATH,\n\tPAYLOAD_OPTIONS_PATH,\n} from './constants';\n/**\n * Selectors\n */\n\n/**\n * This selector function returns the intersection observer object stored in state\n * @param {object} state\n * @returns {object} IntersectionObserver that was initialized\n */\nexport const getIntersectionObserver = fpGet(INTERSECTION_OBSERVER_STATE_PATH);\n\n/**\n * This selector function returns the options object that were passed in on behavior initialization\n * @param {object} action\n * @returns {object}\n */\nexport const getOptions = fpGet(PAYLOAD_OPTIONS_PATH);\n\n/**\n * This selector function returns the selector string to use to get the root element that the\n * intersection observer should be applied to. For more info on intersection observer options,\n * please visit https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n * @param {object} action\n * @returns {string}\n */\nexport const getRootElementSelector = getOr(\n\tDEFAULT_ROOT_SELECTOR,\n\t`${PAYLOAD_OPTIONS_PATH}.rootElementSelector`\n);\n/**\n * This selector function returns the root margin that the\n * intersection observer should be applied to. For more info on intersectionObserver options\n * please visit https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n * @param {object} action\n * @returns {string}\n */\nexport const getRootMargin = getOr(\n\tDEFAULT_ROOT_MARGIN,\n\t`${PAYLOAD_OPTIONS_PATH}.rootMargin`\n);\n\n/**\n * This selector function returns the threshold to use for the intersection observer. For more info\n * on intersection observer options, please visit https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n * @param {object} action\n * @returns {number}\n */\nexport const getThreshold = getOr(\n\tDEFAULT_THRESHOLD,\n\t`${PAYLOAD_OPTIONS_PATH}.threshold`\n);\n\n/**\n * This selector function returns the debounce value in milliseconds to use when collating observe and unobserve actions\n * @param {object} action\n * @returns {string}\n */\nexport const getDebounceDelay = getOr(DEFAULT_DEBOUNCE_DELAY, `debounceDelay`);\n\n/**\n * This selector function returns a boolean whether to toggle defer attribute on to the component, or toggle component modes.\n * @param {object} action\n * @returns {string}\n */\nexport const getUseDefer = getOr(false, `${PAYLOAD_OPTIONS_PATH}.useDefer`);\n\n/**\n * This selector function returns the element configuration in options.elementIdentifier. The id is associated with the OBSERVE_ELEMENT\n * action dispatch and is used to retrieve element configuration which includes intersect and initial styles.\n * @param {string} id\n * @param {object} action\n * @returns {object} element configuration\n */\nexport const getElementConfig = (id) =>\n\tfpGet(`${PAYLOAD_OPTIONS_PATH}.elementIdentifier[${id}]`);\n\n/**\n * This selector function returns a boolean that determines if the component mode should be set to suspend\n * when the element is no longer intersecting and the component mode is active. Will return true by default if should\n * suspend is not found\n * @param {object} action\n * @returns {boolean}\n */\nexport const getShouldSuspend = getOr(\n\ttrue,\n\t`${PAYLOAD_OPTIONS_PATH}.shouldSuspend`\n);\n\n/**\n * This selector function returns a boolean that determines if the element should no longer be observed once intersected for the first time\n * @param {object} action\n * @returns {boolean}\n */\nexport const getShouldUnobserveElement = getOr(\n\tfalse,\n\t`${PAYLOAD_OPTIONS_PATH}.unobserveOnIntersect`\n);\n","import { actionTypes } from '@servicenow/ui-core';\n\nimport { Logger } from '../../utils/logger';\n\nimport {\n\tHOOK_DESTROY,\n\tHOOK_INIT,\n\tHOOK_INSERT,\n\tINTERSECTION_OBSERVER_NAME,\n\tINTERSECTION_OBSERVER_STATE_PATH,\n\tNOW_MODE_ACTIVE,\n\tNOW_MODE_DETACH,\n\tNOW_MODE_SUSPEND,\n\tOBSERVE_ELEMENT,\n\tREGISTER_INTERSECTION_OBSERVER,\n\tUNOBSERVE_ELEMENT,\n\tUNREGISTER_INTERSECTION_OBSERVER,\n} from './constants';\nimport {\n\tgetDebounceDelay,\n\tgetElementConfig,\n\tgetIntersectionObserver,\n\tgetRootElementSelector,\n\tgetRootMargin,\n\tgetShouldSuspend,\n\tgetShouldUnobserveElement,\n\tgetThreshold,\n\tgetUseDefer,\n} from './selectors';\n\nconst { COMPONENT_DOM_READY, COMPONENT_DISCONNECTED } = actionTypes;\n\nconst LOG = Logger().createLog(INTERSECTION_OBSERVER_NAME);\n\n/**\n * Helper function to create element hooks that will be used to observe/unobserve elements\n * @param {*} dispatch\n * @param {string} id Id that corresponds to elementIdentifier config in options\n * @param {boolean} useDefer boolean to determine if component mode should be set or defer tag should be used\n * @returns\n */\nexport const createElementObservationProps = (\n\tdispatch,\n\tid,\n\tuseDefer = false\n) => ({\n\t...(useDefer && { defer: true }),\n\t...(!useDefer && { nowMode: NOW_MODE_DETACH }),\n\t/**\n\t * Hook that is used to observe element. Should only be used on component elements.\n\t * Will set component mode to detach and dispatch to observe element in intersection observer\n\t * @param {*} vnode\n\t */\n\t[HOOK_INSERT]: (vnode) => {\n\t\tif (!vnode.elm) return;\n\n\t\tif (useDefer) {\n\t\t\tvnode.elm.observe = () => {\n\t\t\t\tvnode.elm.defer = false;\n\t\t\t};\n\t\t} else {\n\t\t\tvnode.elm.observe = () => {\n\t\t\t\tvnode.elm.nowMode = NOW_MODE_ACTIVE;\n\t\t\t};\n\t\t}\n\n\t\tdispatch(OBSERVE_ELEMENT, { vnode, id });\n\t},\n\n\t/**\n\t * Hook that is used to unobserve element. Will dispatch to behavior when element is removed.\n\t * @param {*} vnode\n\t */\n\t[HOOK_DESTROY]: (vnode) => {\n\t\tif (!vnode.elm) return;\n\n\t\tdispatch(UNOBSERVE_ELEMENT, { vnode });\n\t},\n});\n\n/**\n * Helper function to create element hooks that will be used to register root element and set up and tear down intersection observer\n * @param {*} dispatch\n * @returns {object}\n */\nexport const createRootElementHooks = (dispatch) => ({\n\t/**\n\t * Init hook that will dispatch register action for root element and setup intersection observer\n\t * @param {*} vnode\n\t */\n\t[HOOK_INIT]: (vnode) => {\n\t\tdispatch(REGISTER_INTERSECTION_OBSERVER, { vnode });\n\t},\n\n\t/**\n\t * Remove hook that will dispatch action to tear down intersection observer and remove from state\n\t */\n\t[HOOK_DESTROY]: () => {\n\t\tdispatch(UNREGISTER_INTERSECTION_OBSERVER);\n\t},\n});\n\n/**\n * This wrapper will return the callback to be used in the intersection observer\n * @param {boolean} shouldSuspend\n * @param {boolean} shouldUnobserveElement\n * @param {boolean} useDefer\n * @returns {*} callback function\n */\nexport const intersectionCallBack = (\n\tshouldSuspend,\n\tshouldUnobserveElement,\n\tuseDefer\n) =>\n\t/**\n\t * This callback function will get called when observed elements intersect the root element defined in the IntersectionObserver\n\t * setup. Using options that are passed into the component, this function will set the appropriate styles and component modes\n\t * @param {Array<object>} entry\n\t * @param {*} observer\n\t */\n\t(entries, observer) =>\n\t\tentries.forEach((entry) => {\n\t\t\tconst { isIntersecting, target: element } = entry;\n\t\t\tconst unDefer = useDefer && element.defer;\n\n\t\t\tif (\n\t\t\t\tisIntersecting &&\n\t\t\t\t(element.nowMode !== NOW_MODE_ACTIVE || unDefer)\n\t\t\t) {\n\t\t\t\tconst intersectClass = element.dataset.intersectClass;\n\t\t\t\tconst initialClass = element.dataset.initialClass;\n\n\t\t\t\tif (initialClass && element.classList.contains(initialClass))\n\t\t\t\t\telement.classList.remove(initialClass);\n\n\t\t\t\tif (\n\t\t\t\t\tintersectClass &&\n\t\t\t\t\t!element.classList.contains(intersectClass)\n\t\t\t\t)\n\t\t\t\t\telement.classList.add(intersectClass);\n\n\t\t\t\tif (unDefer) {\n\t\t\t\t\telement.defer = false;\n\t\t\t\t} else {\n\t\t\t\t\telement.nowMode = NOW_MODE_ACTIVE;\n\t\t\t\t}\n\n\t\t\t\tif (shouldUnobserveElement) observer.unobserve(element);\n\t\t\t} else if (\n\t\t\t\telement.nowMode == NOW_MODE_ACTIVE &&\n\t\t\t\tshouldSuspend &&\n\t\t\t\t!useDefer\n\t\t\t) {\n\t\t\t\telement.nowMode = NOW_MODE_SUSPEND;\n\t\t\t}\n\t\t});\n\n/**\n * This effect is used to set up the IntersectionObserver with the defined options. This can be set up either on component dom ready\n * or opt in via dispatching of REGISTER_INTERSECTION_OBSERVER action with element. If rootElement is found either via selector or\n * payload, an IntersectionObserver instance will be created and stored in state.\n * @param {*} coeffects\n * @returns\n */\nexport const setupIntersectionObserverEffect = (coeffects) => {\n\tconst { updateState, host, action } = coeffects;\n\tconst {\n\t\tpayload: { vnode },\n\t} = action;\n\n\tconst rootElementSelector = getRootElementSelector(action);\n\tconst rootElementWithSelector = host.shadowRoot.querySelector(\n\t\trootElementSelector\n\t);\n\tconst rootElement = rootElementWithSelector || vnode?.elm;\n\n\tif (!rootElement) {\n\t\tLOG.warn(\n\t\t\t'Could not find root element. Skipping intersection observer setup'\n\t\t);\n\t\treturn;\n\t}\n\n\tconst shouldSuspend = getShouldSuspend(action);\n\tconst shouldUnobserveElement = getShouldUnobserveElement(action);\n\tconst useDefer = getUseDefer(action);\n\n\tconst intersectionObserver = new IntersectionObserver(\n\t\tintersectionCallBack(shouldSuspend, shouldUnobserveElement, useDefer),\n\t\t{\n\t\t\troot: rootElement,\n\t\t\trootMargin: getRootMargin(action),\n\t\t\tthreshold: getThreshold(action),\n\t\t}\n\t);\n\n\tLOG.log('Intersection Observer successfully created');\n\n\tupdateState({\n\t\tpath: INTERSECTION_OBSERVER_STATE_PATH,\n\t\toperation: 'set',\n\t\tvalue: intersectionObserver,\n\t\tshouldRender: false,\n\t});\n};\n\n/**\n * This effect is used to disconnect the intersection observer (stop observing all elements) and remove the instnace from state.\n * This will be called on disconnect or opt in if the element is removed. Use hooks defined above on root element to handle element removal\n * @param {*} coeffects\n */\nexport const unregisterIntersectionObserverEffect = (coeffects) => {\n\tconst { state, updateState } = coeffects;\n\n\tconst intersectionObserver = getIntersectionObserver(state);\n\n\tif (intersectionObserver) {\n\t\tintersectionObserver.disconnect();\n\t}\n\n\tupdateState({\n\t\tpath: INTERSECTION_OBSERVER_STATE_PATH,\n\t\tvalue: undefined,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n};\n\n/**\n * This effect handles observing of elements. By default this effect will be collated and debounced so as to handle all\n * observation requests at the same time vs n number of actions. If the IntersectionObserver exists, this effect will\n * add the element to be observed and apply the initial styles defined in the elementIdentifier options passed in. If no styles\n * are found, element will still be observed with no changes to styles.\n * @param {*} coeffects\n * @returns\n */\nexport const observeElementEffect = (coeffects) => {\n\tconst { collated, state } = coeffects;\n\n\tconst intersectionObserver = getIntersectionObserver(state);\n\tif (!intersectionObserver) {\n\t\tLOG.warn(\n\t\t\t'No intersection observer in state, ignoring element observe requests'\n\t\t);\n\t\treturn;\n\t}\n\n\tcollated.forEach((collatedItem) => {\n\t\tconst {\n\t\t\taction: {\n\t\t\t\tpayload: { vnode, id },\n\t\t\t},\n\t\t\taction,\n\t\t} = collatedItem;\n\n\t\tif (!vnode || !vnode?.elm) {\n\t\t\tLOG.warn('Skipping node for observation');\n\t\t\treturn;\n\t\t}\n\n\t\tconst { elm: element } = vnode;\n\n\t\tconst elementConfig = getElementConfig(id)(action);\n\n\t\tif (elementConfig) {\n\t\t\tconst { initialClass, intersectClass } = elementConfig;\n\t\t\telement.dataset.initialClass = initialClass || '';\n\t\t\telement.dataset.intersectClass = intersectClass || '';\n\n\t\t\tif (initialClass && !element.classList.contains(initialClass)) {\n\t\t\t\telement.classList.add(initialClass);\n\t\t\t}\n\t\t}\n\n\t\tintersectionObserver.observe(vnode.elm);\n\t});\n};\n\n/**\n * This effect handles unobserving of elements. By default this effect will be collated and debounced so as to handle all\n * unobservation requests at the same time vs n number of actions. If the IntersectionObserver exists, this effect will\n * call unobserve on the element. This is used in cases where the element is removed from the dom and we no longer want to observe\n * the element\n * @param {*} coeffects\n */\nexport const unobserveElementEffect = (coeffects) => {\n\tconst { state, collated } = coeffects;\n\n\tconst intersectionObserver = getIntersectionObserver(state);\n\n\tcollated.forEach((collatedItem) => {\n\t\tconst {\n\t\t\taction: {\n\t\t\t\tpayload: { vnode },\n\t\t\t},\n\t\t} = collatedItem;\n\n\t\tif (!vnode || !vnode?.elm) {\n\t\t\tLOG.warn('Skipping node for unobservation');\n\t\t\treturn;\n\t\t}\n\n\t\tintersectionObserver.unobserve(vnode.elm);\n\t});\n};\n\n/**\n * This helper function creates the action handlers for the component with the specified delay in options (for observation effects)\n * @param {number} delay\n * @returns\n */\nexport const createIntersectionObserverBehaviorActionHandlers = (delay) => ({\n\t[COMPONENT_DOM_READY]: {\n\t\teffect: setupIntersectionObserverEffect,\n\t},\n\t[REGISTER_INTERSECTION_OBSERVER]: {\n\t\teffect: setupIntersectionObserverEffect,\n\t\tstopPropagation: true,\n\t},\n\t[COMPONENT_DISCONNECTED]: {\n\t\teffect: unregisterIntersectionObserverEffect,\n\t},\n\t[UNREGISTER_INTERSECTION_OBSERVER]: {\n\t\teffect: unregisterIntersectionObserverEffect,\n\t\tstopPropagation: true,\n\t},\n\t[OBSERVE_ELEMENT]: {\n\t\teffect: observeElementEffect,\n\t\tmodifier: { name: 'debounce', collate: true, delay },\n\t\tstopPropagation: true,\n\t},\n\t[UNOBSERVE_ELEMENT]: {\n\t\teffect: unobserveElementEffect,\n\t\tmodifier: { name: 'debounce', collate: true, delay },\n\t\tstopPropagation: true,\n\t},\n});\n\n/**\n * Helper function used to create behavior object with options passed in.\n * @param {object} options\n * @returns {object} behavior definition\n */\nexport const createIntersectionObserver = (options) => {\n\treturn {\n\t\tbehavior: {\n\t\t\tname: INTERSECTION_OBSERVER_NAME,\n\t\t\tactionHandlers: createIntersectionObserverBehaviorActionHandlers(\n\t\t\t\tgetDebounceDelay(options)\n\t\t\t),\n\t\t},\n\t\toptions,\n\t};\n};\n","import flatten from 'lodash/flatten';\nimport isBoolean from 'lodash/isBoolean';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { Logger } from './logger';\n\n// -----------------------------------------------------------------------------\n// Constants\n// -----------------------------------------------------------------------------\n\n// Selectors to get common tabbable elements.\nexport const selector = [\n\t'input',\n\t'select',\n\t'textarea',\n\t'a[href]',\n\t'a[target=\"_blank\"]',\n\t'button',\n\t'[tabindex]',\n\t'audio[controls]',\n\t'video[controls]',\n\t'[component-id]',\n\t'[contenteditable]:not([contenteditable=\"false\"])',\n\t'now-table-checkbox',\n].join();\n\n// -----------------------------------------------------------------------------\n// Shadow Dom Focus Utilities\n// -----------------------------------------------------------------------------\n\n/**\n * Finds the first tabbable element in an element or component.\n * @param  {Node} root root node\n * @return {Node} first tabbable element inside a root\n */\nexport const findFirstTabbableElement = (root = document) => {\n\treturn findTabbableElement(true, root);\n};\n\n/**\n * Finds the last tabbable element in an element or component.\n * @param  {Node} root root node\n * @return {Node} last tabbable element inside a root\n */\nexport const findLastTabbableElement = (root = document) => {\n\treturn findTabbableElement(false, root);\n};\n\n/**\n * Finds the first or last tabbable element in an element or component.\n * @param  {Boolean} findFirst flag to return first or last tabbable element\n * @param  {Node} root root node\n * @return {Node} first or last tabbable element inside a root\n */\nexport const findTabbableElement = (findFirst = true, root = document) => {\n\tif (!root) return false;\n\n\tif (root.shadowRoot) root = root.shadowRoot;\n\n\tlet tabbies = [...root.querySelectorAll(selector)];\n\tif (!findFirst) tabbies = tabbies.reverse();\n\n\tlet index = 0;\n\tlet result = undefined;\n\n\t// TODO: Maybe change code style here\n\twhile (!result && index < tabbies.length) {\n\t\tconst tabby = tabbies[index++];\n\t\tconst possibleResult = tabby.shadowRoot\n\t\t\t? findTabbableElement(findFirst, tabby.shadowRoot)\n\t\t\t: tabby;\n\t\tif (possibleResult && isTabbable(possibleResult))\n\t\t\tresult = possibleResult;\n\t}\n\treturn result;\n};\n\n/**\n * Determines if an element is tabbable based on criteria that can't be done\n * @param  {Node} node node\n * @return {Boolean} returns true if input node is tabbable\n */\nexport const isTabbable = (node) => {\n\tif (\n\t\t!node ||\n\t\tnode.disabled ||\n\t\tnode.offsetParent === null ||\n\t\tgetComputedStyle(node).visibility === 'hidden' ||\n\t\t(node.tagName === 'INPUT' && node.type === 'hidden') ||\n\t\tgetTabIndex(node) === -1\n\t)\n\t\treturn false;\n\n\treturn true;\n};\n\n/**\n * Gets the numeric tab index of an element.\n * @param  {Node} node node\n * @return {Number} returns the numeric tab index of an element.\n */\nexport const getTabIndex = (node) => {\n\tconst tabIndex = parseInt(node.getAttribute('tabindex'), 10);\n\tif (!isNaN(tabIndex)) return tabIndex;\n\treturn node.contentEditable === 'true' ? 0 : node.tabIndex;\n};\n\n/**\n * Finds all the tabbable elements in an element or component.\n * @param  {Node} root root node\n * @return {Array<Node>} returns the array of all tabbable elements\n */\nexport const findAllTabbableElements = (root = document) => {\n\tif (!root) return [];\n\n\tif (root.shadowRoot) root = root.shadowRoot;\n\tconst tabbies = root.querySelectorAll(selector);\n\tlet expandedTabbies = [];\n\ttabbies.forEach((tabby) => {\n\t\tif (!tabby.shadowRoot && isTabbable(tabby)) {\n\t\t\texpandedTabbies.push(tabby);\n\t\t} else {\n\t\t\texpandedTabbies.push(findAllTabbableElements(tabby));\n\t\t}\n\t});\n\treturn flatten(expandedTabbies);\n};\n\n/**\n *  Finds all elements across shadow roots\n * @param  {Node} root root node\n * @param  {String} selector selector\n * @return {Array<Node>} returns the array of all elements across shadow roots\n */\nexport const shadowQuerySelectorAll = (root = document, selector) => {\n\tif (!selector) return [];\n\n\tif (root.shadowRoot) root = root.shadowRoot;\n\tconst nodes = root.querySelectorAll(selector);\n\tlet expandedNodes = [];\n\tnodes.forEach((node) => {\n\t\tif (!node.shadowRoot) {\n\t\t\texpandedNodes.push(node);\n\t\t} else {\n\t\t\texpandedNodes.push(shadowQuerySelectorAll(node, selector));\n\t\t}\n\t});\n\treturn flatten(expandedNodes);\n};\n\n/**\n * Finds the active element of the page.\n * @param  {Node} root root node\n * @return {Node} returns the active element on the page\n */\nexport const findActiveElement = (root = document) => {\n\tconst activeElement = root.activeElement;\n\tif (activeElement && activeElement.shadowRoot) {\n\t\treturn findActiveElement(activeElement.shadowRoot) || activeElement;\n\t}\n\treturn activeElement;\n};\n\n/**\n * Determines if an element is or contains the active element.\n * @param  {Node} node node\n * @param  {Node} root root node\n * @return {Boolean} returns true if element contains active element\n */\nexport const elementHasActiveElement = (node, root = document) => {\n\t/* WARNING: Possible issue in IE11, appears to give false positives at times.\n\t * As of now-record-list@8.0.21 this function is not in active use, and the\n\t * only function that might call it (focusWithinClassManager) will not get to\n\t * call it as currently used (see GridHeaderRowCell and GridRowCell).\n\t */\n\n\tconst activeElement = root.activeElement;\n\tif (!activeElement) return false;\n\n\tif (node == activeElement || node.contains(activeElement)) return true;\n\n\tif (activeElement.shadowRoot)\n\t\treturn elementHasActiveElement(node, activeElement.shadowRoot);\n\n\treturn false;\n};\n\n/**\n * Adds a CSS class to the container element if either focusIsWithin is true\n * or focusIsWithin is undefined and elementHasActiveElement returns true.\n * Removes that CSS class if focusIsWithin is false or focusIsWithin is\n * undefined and elementHasActiveElement returns false.\n * @param  {Node} container node\n * @param  {String} className class name\n * @param  {Boolean} focusIsWithin\n * @return {Boolean}\n */\nexport const focusWithinClassManager = (\n\tcontainer,\n\tclassName,\n\tfocusIsWithin\n) => {\n\tif (!container || !className) return false;\n\n\tconst addClass = isBoolean(focusIsWithin)\n\t\t? focusIsWithin\n\t\t: elementHasActiveElement(container);\n\n\tif (addClass) container.classList.add(className);\n\telse container.classList.remove(className);\n\n\treturn true;\n};\n\n// -----------------------------------------------------------------------------\n// Element Retainer: Remembers elements for manipulation\n// -----------------------------------------------------------------------------\n\nconst elementRetainer = new Map();\n\n/**\n * Sets an element to later return focus to. Returns true on successfully\n * setting the element. Returns false if no active element is given/found,\n * or if the attempt to set fails.\n * @param  {String} key\n * @param  {Node} node node\n * @return {Boolean} Returns true on successfully setting the element.\n */\nexport const addRetainedElement = (key, node = findActiveElement()) => {\n\tif (!node) return false;\n\treturn elementRetainer.set(key, node);\n};\n\n/**\n *  Focuses on a previously stored element and removes it from storage.\n *  Returns true on successfully focusing on the element and deleting the\n *  entry. Returns false if no element was found or deletion failed.\n * @param  {String} key\n * @return {Boolean} Returns true on successfully focusing on the element and deleting the entry.\n */\nexport const removeRetainedElement = (key) => {\n\treturn elementRetainer.delete(key);\n};\n\n/**\n * Removes the previously stored element without focusing on it.\n * Sets the current active element as the new stored element. Returns the\n * result of addRetainedElement.\n * @param  {String} key\n * @param  {Node} node\n * @return {Boolean} Returns the result of addRetainedElement.\n */\nexport const updateRetainedElement = (key, node = findActiveElement()) => {\n\tremoveRetainedElement(key);\n\treturn addRetainedElement(key, node);\n};\n\n/**\n * Focuses on a previously stored element and removes it from storage.\n * Returns true on successfully focusing on the element and deleting the\n * entry. Returns false if no element was found or deletion failed.\n * @param  {String} key\n * @return {Boolean} Returns true on successfully focusing on the element and deleting the entry\n */\nexport const getAndClearRetainedFocus = (key) => {\n\tconst focusThis = elementRetainer.get(key);\n\tif (!focusThis) return false;\n\tfocusThis.focus();\n\treturn elementRetainer.delete(key);\n};\n\n/**\n * Resets scroll on a previously stored element.\n * Can scroll to top or to the bottom, based on scrollToBottom\n * Returns true on successfully finding scroll on the element\n * Returns false if no element was found.\n * @param {String} key\n * @param {Boolean} scrollToBottom Scrolls to bottom if truthy, scrolls to top otherwise\n * @return {Boolean} Returns true on successfully finding scroll on the element\n */\nexport const getAndResetRetainedScroll = (key, scrollToBottom) => {\n\tconst element = elementRetainer.get(key);\n\treturn resetScroll(element, scrollToBottom);\n};\n\nexport const resetScroll = (element, scrollToBottom) => {\n\tif (!element) return false;\n\n\tif (scrollToBottom) {\n\t\telement.scrollTop = element.firstChild.scrollHeight;\n\t\telement.scrollLeft = 0;\n\t\treturn true;\n\t} else {\n\t\telement.scrollTop = 0;\n\t\telement.scrollLeft = 0;\n\t\treturn true;\n\t}\n};\n\n// -----------------------------------------------------------------------------\n// Focus Trap: Keeps the user from tabbing out of an element.\n// -----------------------------------------------------------------------------\n\nconst focusTrap = new Map();\n\nconst defaultConfig = {\n\tclickOutsideDeactivates: false, // for future\n\tmoveFocusInsideTrap: true,\n\tfirstElement: null,\n\tlastElement: null,\n};\n\n/**\n * Initalizes a simple focus trap. Returns true on successful initialization\n * of the trap. Returns false if no tabbable elements are found in node or\n * storing the entry fails. Deactivates an existing focus trap if one already\n * exists for the given id. Moves focus to the first tabby by default. Sets\n * keydown event listeners on the first and last tabbies. When tab is pressed\n * on the first Tabby element, it moves focus to the last Tabby element. When\n * shift tab is pressed on the last it focuses the first.\n * The config object can be given the elements to set as the first and last\n * tabbies.\n * @param {String} id\n * @param {Node} node\n * @param {Object} config\n * @return {Boolean} Returns true on successful initialization of the trap\n */\nexport const activateFocusTrap = (id, node, config = {}) => {\n\tdeactivateFocusTrap(id);\n\tconfig = { ...defaultConfig, ...config };\n\tconst { moveFocusInsideTrap, firstElement, lastElement } = config;\n\tconst LOG = Logger().createLog('focusUtility');\n\tconst firstTabby = firstElement || findFirstTabbableElement(node);\n\tconst lastTabby = lastElement || findLastTabbableElement(node);\n\n\tif (!firstTabby) {\n\t\tLOG.warn(\n\t\t\t'activateFocusTrap canceled: No tabbable elements found within the element.'\n\t\t);\n\t\treturn false;\n\t}\n\n\tif (moveFocusInsideTrap && !elementHasActiveElement(node))\n\t\tfirstTabby.focus();\n\n\tconst firstKeydown = (evt) => {\n\t\tconst { key, shiftKey } = evt;\n\t\tif (key === 'Tab' && shiftKey) {\n\t\t\tevt.preventDefault();\n\t\t\tlastTabby.focus();\n\t\t}\n\t};\n\n\tconst lastKeydown = (evt) => {\n\t\tconst { key, shiftKey } = evt;\n\t\tif (key === 'Tab' && !shiftKey) {\n\t\t\tevt.preventDefault();\n\t\t\tfirstTabby.focus();\n\t\t}\n\t};\n\n\tfirstTabby.addEventListener('keydown', firstKeydown);\n\tlastTabby.addEventListener('keydown', lastKeydown);\n\n\tconst tabbyTrapEntry = {\n\t\tconfig,\n\t\tnode,\n\t\tfirstTabby,\n\t\tlastTabby,\n\t\tfirstKeydown,\n\t\tlastKeydown,\n\t};\n\n\treturn focusTrap.set(id, tabbyTrapEntry);\n};\n\n/**\n * Removes event listeners from the tabbies and removes the entry from the\n * focus trap storage. Returns true on successful removal from storage.\n * Returns false if retrievall or removal from storage fails.\n * @param {String} id\n * @return {Boolean} Returns true on successful removal from storage.\n */\nexport const deactivateFocusTrap = (id) => {\n\tconst tabbyTrapEntry = focusTrap.get(id);\n\n\tif (isEmpty(tabbyTrapEntry)) return false;\n\n\tconst { lastKeydown, firstKeydown, firstTabby, lastTabby } = tabbyTrapEntry;\n\tfirstTabby.removeEventListener('keydown', firstKeydown);\n\tlastTabby.removeEventListener('keydown', lastKeydown);\n\n\treturn focusTrap.delete(id);\n};\n\n/**\n * If a focus trap exists for the given id, it reactivates it to update the\n * tabbies without moving focus. Returns true if activateFocusTrap succeeds.\n * Returns false if no entry is found for the given id or if\n * activateFocusTrap fails.\n * @param {String} id\n * @return {Boolean} Returns true if activateFocusTrap succeeds.\n */\nexport const updateFocusTrap = (id) => {\n\tconst tabbyTrapEntry = focusTrap.get(id);\n\tif (isEmpty(tabbyTrapEntry)) return false;\n\n\tconst { node, config = {} } = tabbyTrapEntry;\n\tif (isEmpty(node)) return false;\n\n\treturn activateFocusTrap(id, node, {\n\t\t...defaultConfig,\n\t\t...config,\n\t});\n};\n","export const NOW_BUTTON_ICONIC_CLICKED = 'NOW_BUTTON_ICONIC#CLICKED';\nexport const GROUP_ACTION_CLICKED = 'GROUP_ACTION_CLICKED';\n","export const NOW_LIST_ALL_GROUPS_TOGGLED = 'NOW_LIST#ALL_GROUPS_TOGGLED';\nexport const NOW_LIST_GROUP_TOGGLED = 'NOW_LIST#GROUP_TOGGLED';\nexport const EXPAND_GROUP = 'isGroupExpanded';\nexport const EXPAND_ALL_GROUPS = 'expandAllGroups';\nexport const GROUP_ACTION_CLICKED = 'GROUP_ACTION_CLICKED';\n","/**\n * Contains exported string and object constants.\n */\n\nexport const KEYBOARD_NAV_BEHAVIOR_NAME = 'keyboardNav';\n\n// Behavior Actions\nexport const ALLOW_TABLE_FOCUS = 'ALLOW_TABLE_FOCUS';\nexport const ENTER_CELL_TRAP = 'ENTER_CELL_TRAP';\nexport const EXIT_CELL_TRAP = 'EXIT_CELL_TRAP';\nexport const REFRESH_CELL_TRAP = 'REFRESH_CELL_TRAP';\nexport const MOVE_FOCUS = 'MOVE_FOCUS';\nexport const POPOVER_CLOSED = 'POPOVER_CLOSED';\nexport const RESET_BEHAVIOR = 'RESET_BEHAVIOR';\nexport const UPDATE_KEYBOARD_NAV = 'UPDATE_KEYBOARD_NAV';\nexport const UPDATE_TABLE_REF = 'UPDATE_TABLE_REF';\nexport const FOCUS_LIST = 'FOCUS_LIST';\n\n// Seismic\nexport const SEISMIC_HOIST = 'SEISMIC-HOIST';\n\n// Misc\nexport const KEY = {\n\tKEY_ENTER: 'Enter',\n\tARROW_UP: 'ArrowUp',\n\tARROW_RIGHT: 'ArrowRight',\n\tARROW_DOWN: 'ArrowDown',\n\tARROW_LEFT: 'ArrowLeft',\n\tUP: 'Up',\n\tRIGHT: 'Right',\n\tDOWN: 'Down',\n\tLEFT: 'Left',\n\tSPACE: ' ',\n\tSPACEBAR: 'Spacebar',\n\tENTER: 'Enter',\n\tESC: 'Esc',\n\tESCAPE: 'Escape',\n\tPAGE_UP: 'PageUp',\n\tPAGE_DOWN: 'PageDown',\n\tHOME: 'Home',\n\tEND: 'End',\n\tTAB: 'Tab',\n\tKEY_CODE_ENTER: 32,\n};\n\n/**\n * Some browsers return arrow key press values in different ways, such as the\n * right arrow being \"Right\" in some browsers, but \"ArrowRight\" in others. This\n * map is used to ensure that arrow key press values are standardized, such that\n * \"ArrowRight\" and \"Right\" will both map to the value \"Right\".\n */\nexport const KEY_MAP = {\n\t[KEY.ENTER]: KEY.ENTER,\n\t[KEY.UP]: KEY.UP,\n\t[KEY.ARROW_UP]: KEY.UP,\n\t[KEY.DOWN]: KEY.DOWN,\n\t[KEY.ARROW_DOWN]: KEY.DOWN,\n\t[KEY.LEFT]: KEY.LEFT,\n\t[KEY.ARROW_LEFT]: KEY.LEFT,\n\t[KEY.RIGHT]: KEY.RIGHT,\n\t[KEY.ARROW_RIGHT]: KEY.RIGHT,\n\t[KEY.HOME]: KEY.HOME,\n\t[KEY.END]: KEY.END,\n\t[KEY.PAGE_UP]: KEY.PAGE_UP,\n\t[KEY.PAGE_DOWN]: KEY.PAGE_DOWN,\n};\n\n// properties\nexport const ROW_DEFINITIONS = 'rowDefinitions';\nexport const COLUMN_DEFINITIONS = 'columnDefinitions';\n\nexport const GROUPED_SUFFIX = '-grouped';\nexport const NOW_GRID_BULK_FOCUSED_IDS = 'data-quick-edit-ids';\nexport const BULK_FOCUS_STATE_PATH = 'bulkFocus';\n\nexport const EMPTY_BULK_FOCUS = {\n\tcolIndex: 0,\n\tfocusedIndicies: [],\n\tfocusedKeys: [],\n\tpreviousKeys: '',\n\tinitialIndex: 0,\n};\n","/**\n * Contains helper functions that are more generic in nature and have no direct\n * effects on the component\n */\n\nimport get from 'lodash/get';\n\nimport { SPECIAL_COLUMN_CELL } from '../../shared/views/table/tableBody/tableRow/rowCell/rowCellConstants';\nimport { setBehaviorState } from '../keyboardNavBehavior/keyboardNavHelpers';\n\nimport {\n\tSEISMIC_HOIST,\n\tGROUPED_SUFFIX,\n\tNOW_GRID_BULK_FOCUSED_IDS,\n\tEMPTY_BULK_FOCUS,\n} from './constants';\n\n/**\n * Indicates that a selector matches the pattern for a deep selector\n * @param {string} selector\n */\nconst isDeepSelector = (selector) => {\n\treturn ~selector.indexOf('>>>');\n};\n\n/**\n * Returns the first element within el that matches the given selector string\n * @param {string} selector\n * @param {any} el Type any silences warnings related to how the method operates\n */\nexport const querySelector = (selector, el) => {\n\tif (!isDeepSelector(selector)) return el.querySelector(selector);\n\n\tconst selectors = selector.split('>>>').map((selector) => selector.trim());\n\tconst { length } = selectors;\n\tlet selected = el;\n\n\tfor (let i = 0; i < length; i++) {\n\t\tif (selectors[i]) selected = selected.querySelector(selectors[i]);\n\n\t\tif (!selected) return selected;\n\n\t\tselected = i !== length - 1 ? selected.shadowRoot : selected;\n\t\tif (!selected) return selected;\n\t}\n\n\treturn selected;\n};\n\n/**\n * Gets the component path and accounts for potentially clicking on hoisted elements\n * @param {Array<HTMLElement>} path\n * @returns {Array<HTMLElement>}\n */\nexport const getComponentPath = (path) => {\n\tconst componentPath = [];\n\tlet hasSeismicHoist = false;\n\t/** @type {HTMLElement & {sourceElement?: HTMLElement} | null | undefined} */\n\tlet currentNode;\n\n\tfor (let index = 0; index < path.length && !hasSeismicHoist; index++) {\n\t\tcurrentNode = path[index];\n\t\thasSeismicHoist = get(currentNode, 'nodeName') === SEISMIC_HOIST;\n\n\t\tcomponentPath.push(currentNode);\n\t}\n\n\tif (!hasSeismicHoist) return componentPath;\n\n\twhile (currentNode) {\n\t\tif (currentNode.nodeName === SEISMIC_HOIST) {\n\t\t\tcurrentNode = currentNode.sourceElement;\n\t\t} else if (currentNode.assignedSlot) {\n\t\t\tcurrentNode = currentNode.parentElement;\n\t\t} else {\n\t\t\t// @ts-ignore .host isn't a property on Node\n\t\t\tcurrentNode = currentNode.getRootNode().host;\n\t\t}\n\n\t\tif (currentNode) componentPath.push(currentNode);\n\t}\n\n\treturn componentPath;\n};\n\n/**\n * Determine the relative direction from coordinate (xA,yA) towards (xB,yB),\n * given that (0,0) is the located in the top left corner (top right for RTL)\n * @param {number} xA\n * @param {number} yA\n * @param {number} xB\n * @param {number} yB\n * @param {boolean?} isRTL\n * @returns {\"Up\" | \"Down\" | \"Left\" | \"Right\" | null}\n */\nexport const getRelativeDirection = (xA, yA, xB, yB, isRTL = false) => {\n\tconst yDiff = yB - yA;\n\tconst xDiff = xB - xA;\n\n\t// The cells are at the same location\n\tif (!xDiff && !yDiff) return null;\n\n\t// The cells are located diagonally from each other\n\tif (xDiff && yDiff) return null;\n\n\tif (yDiff < 0) {\n\t\treturn 'Up';\n\t} else if (yDiff > 0) {\n\t\treturn 'Down';\n\t} else if (xDiff < 0) {\n\t\treturn isRTL ? 'Right' : 'Left';\n\t} else {\n\t\treturn isRTL ? 'Left' : 'Right';\n\t}\n};\n\n/**\n *\tFunction used to return valid information used for bulk inline editing\n *\n * @param {object} grid Object containing array of rows and cells within each row used for keyboard navigation\n * @param {number} rowIndex row index of newly focused cell\n * @param {number} cellIndex cell index of newly focused cell\n *\n * @returns {object} Returns newly focused row node, cell node, and whether it is a valid cell or not\n */\nexport const getBulkFocusInfo = (grid, rowIndex, cellIndex) => {\n\tconst focusedRow = get(grid, `rows[${rowIndex}]`);\n\tconst focusedCell = get(focusedRow, `cells[${cellIndex}]`);\n\tconst rowClassList = get(focusedRow, 'node.classList');\n\tconst cellClassList = get(focusedCell, 'node.classList');\n\n\tconst isHeaderCell = get(focusedCell, 'node.nodeName') === 'TH';\n\n\tconst isRowGroupedHeader =\n\t\trowClassList && rowClassList.contains('grouped-row');\n\n\tconst isGroupToggleCell =\n\t\tcellClassList && cellClassList.contains(GROUPED_SUFFIX);\n\n\tconst isSpecialColumn =\n\t\tcellClassList && cellClassList.contains(SPECIAL_COLUMN_CELL);\n\n\tconst isValidCell =\n\t\t!isHeaderCell &&\n\t\t!isRowGroupedHeader &&\n\t\t!isGroupToggleCell &&\n\t\t!isSpecialColumn;\n\n\treturn {\n\t\tfocusedRow,\n\t\tfocusedCell,\n\t\tisValidCell,\n\t};\n};\n\n// @ts-ignore\n/**\n * Function used to clear and update bulk editing styles.\n * @param {Array<number>} newIndices array of new indicies to select\n * @param {object} grid Object containing array of rows and cells within each row used for keyboard navigation\n * @param {number} newCellIndex newly focused cell index\n * @returns {void}\n */\nexport const updateBulkStyles = (newIndices, grid, newCellIndex) => {\n\t// Clear styles on previous focused cells\n\n\tconst firstNode = get(grid, 'rows[0].cells[0].node');\n\tif (firstNode) {\n\t\tconst nearestTable = firstNode.closest('TABLE');\n\t\t// @ts-ignore\n\t\tremoveBulkStyles(nearestTable);\n\t}\n\t// @ts-ignore\n\tconst partitionedRows = groupNumsSequentially(newIndices);\n\n\t// Set new styles based on new focused array\n\t// @ts-ignore\n\tpartitionedRows.forEach((group) => {\n\t\t// @ts-ignore\n\t\tgroup.forEach((gridIndex, index, group) => {\n\t\t\tconst gridRow = get(\n\t\t\t\tgrid,\n\t\t\t\t`rows[${gridIndex}].cells[${newCellIndex}].node`\n\t\t\t);\n\t\t\tif (group.length === 1) {\n\t\t\t\tgridRow.classList.add('top-bottom-side-border');\n\t\t\t} else if (index === 0) {\n\t\t\t\tgridRow.classList.add('top-side-border');\n\t\t\t} else if (index === group.length - 1) {\n\t\t\t\tgridRow.classList.add('bottom-side-border');\n\t\t\t} else {\n\t\t\t\tgridRow.classList.add('side-border');\n\t\t\t}\n\n\t\t\tgridRow.classList.add('cell-selected');\n\t\t});\n\t});\n};\n/**\n *\tFunction used to clear bulk editing styles.\n *\n * @param {object} nearestTable html node of nearest table\n *\n * @returns {void}\n */\nexport const removeBulkStyles = (nearestTable) => {\n\tnearestTable\n\t\t// @ts-ignore\n\t\t.querySelectorAll(\n\t\t\t'.side-border, .top-side-border, .bottom-side-border, .top-bottom-side-border'\n\t\t\t// @ts-ignore\n\t\t)\n\t\t.forEach((/** @type {HTMLElement}*/ node) => {\n\t\t\tnode.classList.remove('side-border');\n\t\t\tnode.classList.remove('top-side-border');\n\t\t\tnode.classList.remove('bottom-side-border');\n\t\t\tnode.classList.remove('top-bottom-side-border');\n\t\t\tnode.classList.remove('cell-selected');\n\t\t});\n};\n\n/**\n * Group sequential numbers, i.e. [1,3,4,5,9,10] => [[1], [3,4,5], [9,10]]\n * @param {*} rows\n */\nexport const groupNumsSequentially = (rows) =>\n\trows\n\t\t// @ts-ignore\n\t\t.sort((a, b) => a - b)\n\t\t// @ts-ignore\n\t\t.reduce((r, n) => {\n\t\t\tconst lastSubArray = r[r.length - 1];\n\n\t\t\tif (\n\t\t\t\t!lastSubArray ||\n\t\t\t\tlastSubArray[lastSubArray.length - 1] !== n - 1\n\t\t\t) {\n\t\t\t\tr.push([]);\n\t\t\t}\n\n\t\t\tr[r.length - 1].push(n);\n\n\t\t\treturn r;\n\t\t}, []);\n\n/**\n *\n * @param {Coeffects<Props, State>} coeffects\n * @param {HTMLElement} focusedNode\n * @returns\n */\nexport const resetBulkFocus = (coeffects, focusedNode) => {\n\tconst { updateState, action } = coeffects;\n\tconst keepLastFocus = get(action, 'payload.keepLastFocus', false);\n\tlet nearestTable;\n\n\tif (focusedNode) {\n\t\tnearestTable = focusedNode.closest('TABLE');\n\t}\n\n\t/** @type {BulkFocus} */\n\tlet bulkFocusValue = { ...EMPTY_BULK_FOCUS };\n\tif (focusedNode && nearestTable) {\n\t\t// remove data-* attributes for bulk focus\n\n\t\tnearestTable.removeAttribute(NOW_GRID_BULK_FOCUSED_IDS);\n\n\t\tremoveBulkStyles(nearestTable);\n\t\tif (keepLastFocus) {\n\t\t\tconst row = focusedNode.closest('tr');\n\t\t\tconst rowKey = get(row, 'dataset.key');\n\t\t\tconst { navRow, navCol } = focusedNode.dataset;\n\t\t\tconst rowIndex = Number(navRow);\n\t\t\tconst colIndex = Number(navCol);\n\t\t\tif (rowKey) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tnearestTable.setAttribute(NOW_GRID_BULK_FOCUSED_IDS, [rowKey]);\n\t\t\t\tbulkFocusValue = {\n\t\t\t\t\tcolIndex: colIndex,\n\t\t\t\t\tfocusedIndicies: [rowIndex],\n\t\t\t\t\tfocusedKeys: [rowKey],\n\t\t\t\t\tpreviousKeys: rowKey,\n\t\t\t\t\tinitialIndex: rowIndex,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\t// @ts-ignore\n\tsetBehaviorState(updateState, { bulkFocus: bulkFocusValue });\n};\n","/**\n * Contains helpers for the effects that are either reused in multiple effects,\n * or code sections that were large enough to warrant being split off from the\n * original effect\n */\nimport {\n\tfindActiveElement,\n\tshadowQuerySelectorAll,\n\tselector as tabbableSelectors,\n} from '@devsnc/sn-list-commons';\nimport get from 'lodash/get';\nimport includes from 'lodash/includes';\nimport isArray from 'lodash/isArray';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport range from 'lodash/range';\nimport xor from 'lodash/xor';\n\nimport { NOW_BUTTON_ICONIC_CLICKED } from '../../resources/constants';\nimport { EXPAND_GROUP } from '../rowGroupingBehavior/constants';\n\nimport {\n\tEXIT_CELL_TRAP,\n\tKEY,\n\tKEYBOARD_NAV_BEHAVIOR_NAME,\n\tROW_DEFINITIONS,\n\tCOLUMN_DEFINITIONS,\n\tNOW_GRID_BULK_FOCUSED_IDS,\n\tFOCUS_LIST,\n\tENTER_CELL_TRAP,\n} from './constants';\nimport {\n\tgetRelativeDirection,\n\tquerySelector,\n\tgetBulkFocusInfo,\n\tupdateBulkStyles,\n\tresetBulkFocus,\n} from './utils';\n\n/**\n * Gets the keyboard nav behavior state from the larger component state object\n * @param  {StateWithProps<Props, State>} state\n * @return {KeyboardNavBehaviorState}\n */\nexport const getBehaviorState = (state) =>\n\tget(state, `behaviors.${KEYBOARD_NAV_BEHAVIOR_NAME}`, {});\n\n/**\n * Sets the keyboard nav behavior state\n * @param {Function} updateState\n * @param {Partial<KeyboardNavBehaviorState>} newState\n */\nexport const setBehaviorState = (updateState, newState) => {\n\tfor (const [key, value] of Object.entries(newState)) {\n\t\tupdateState({\n\t\t\toperation: 'set',\n\t\t\tpath: `behaviors.${KEYBOARD_NAV_BEHAVIOR_NAME}.${key}`,\n\t\t\tvalue: value,\n\t\t\tshouldRender: false,\n\t\t});\n\t}\n};\n\n/**\n * Gets the behavior options that were passed when the behavior was created\n * @param {Action<any>} action\n * @return {KeyboardNavBehaviorOptions}\n */\nexport const getBehaviorOptions = (action) => {\n\treturn get(action, 'payload.options', {});\n};\n\n/**\n * Loads the row entry from tableRef at the given index\n * @param {TableRef} tableRef\n * @param {number} rowIndex\n * @returns {TableRow | undefined}\n */\nexport const getRowFromTableRef = (tableRef, rowIndex) =>\n\tget(tableRef, `rows[${rowIndex}]`);\n\n/**\n * Loads the cell entry from tableRef at the given indices\n * @param {TableRef} tableRef\n * @param {number} rowIndex\n * @param {number} cellIndex\n * @returns {TableCell | undefined}\n */\nexport const getCellFromTableRef = (tableRef, rowIndex, cellIndex) =>\n\tget(tableRef, `rows[${rowIndex}].cells[${cellIndex}]`);\n\n/**\n * Transfer the ability to focus from the previous cell to the new one\n * @param {Object} props\n * @param {Dispatch=} props.dispatch\n * @param {HTMLElement=} props.selectedActiveElement\n * @param {FocusedCell=} props.prevFocus\n * @param {FocusedCell=} props.newFocus\n * @param {Function} props.updateState\n * @param {Array<string>=} props.directFocusSelectors\n * @param {boolean=} props.shouldFocus\n * @param {boolean=} props.virtualizedScrollEnabled\n */\nexport const setNewCellFocus = ({\n\tdispatch,\n\tselectedActiveElement,\n\tprevFocus,\n\tnewFocus,\n\tupdateState,\n\tdirectFocusSelectors,\n\tshouldFocus,\n\tvirtualizedScrollEnabled = false,\n}) => {\n\t// If newFocus is undefined, that means the behavior is switching to row focus\n\tif (!newFocus) return;\n\n\t// If the cell changed, remove the previous cell's ability to focus\n\tif (prevFocus && !prevFocus.node.isSameNode(newFocus.node)) {\n\t\tprevFocus.node.removeAttribute('tabindex');\n\t}\n\t// make it so that if there are multiple tabbable elements in the cell, don't have a single focus\n\tconst tabbables = newFocus.node?.children\n\t\t? shadowQuerySelectorAll(newFocus.node, tabbableSelectors)\n\t\t: [];\n\n\tlet newFocusNode;\n\tlet isFocusSelector = false;\n\n\tif (directFocusSelectors) {\n\t\tdirectFocusSelectors.forEach((selector) => {\n\t\t\tconst node = querySelector(selector, newFocus.node);\n\t\t\tif (node) {\n\t\t\t\tnewFocusNode = node;\n\t\t\t\tisFocusSelector = true;\n\t\t\t}\n\t\t});\n\t}\n\tif (selectedActiveElement) {\n\t\tnewFocusNode = selectedActiveElement;\n\t}\n\n\t// Only focus on the direct focus selector if there is only 1 present in the cell\n\tif (tabbables.length === 1 && isFocusSelector && newFocusNode) {\n\t\tnewFocus.node = newFocusNode;\n\t} else if (selectedActiveElement && dispatch) {\n\t\t// Only enter the cell trap if an element inside of a cell is clicked on,\n\t\t// which is stored in selectedActiveElement\n\t\tdispatch(ENTER_CELL_TRAP, { targetNode: selectedActiveElement });\n\t}\n\n\tsetBehaviorState(updateState, { focusedCell: newFocus });\n\n\t// Td cells aren't tabbable by default, so setting a tab index here allows for that\n\tnewFocus.node.tabIndex = 0;\n\n\tif (shouldFocus) {\n\t\tif (virtualizedScrollEnabled) {\n\t\t\tnewFocus.node.focus({ preventScroll: true });\n\t\t} else {\n\t\t\tnewFocus.node.focus();\n\t\t}\n\n\t\t/**\n\t\t * Because the group row container spans across the entire table, trying\n\t\t * to scroll this element into view will cause an unnecessary horizontal\n\t\t * scroll, and will also cause the group row actions popover to close\n\t\t * because a scroll event has occurred.\n\t\t */\n\t\tif (\n\t\t\t!newFocus.node.classList.contains('group-row-container') &&\n\t\t\t!virtualizedScrollEnabled\n\t\t) {\n\t\t\tnewFocus.node.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n};\n\n/**\n * Transfer the ability to focus from the previous cell to the new one\n * @param {Object} props\n * @param {FocusedRow=} props.prevFocus\n * @param {FocusedRow=} props.newFocus\n * @param {Function} props.updateState\n * @param {boolean=} props.shouldFocus\n */\nexport const setNewRowFocus = ({\n\tprevFocus,\n\tnewFocus,\n\tupdateState,\n\tshouldFocus,\n}) => {\n\t// If newFocus is undefined, that means the behavior is switching to cell focus\n\tif (!newFocus) return;\n\n\t// If the cell changed, remove the previous cell's ability to focus\n\tif (prevFocus && !prevFocus.node.isSameNode(newFocus.node)) {\n\t\tprevFocus.node.removeAttribute('tabindex');\n\t}\n\n\tsetBehaviorState(updateState, { focusedRow: newFocus });\n\n\tnewFocus.node.tabIndex = 0;\n\n\tif (shouldFocus) {\n\t\tnewFocus.node.focus();\n\t\tnewFocus.node.scrollIntoView({ block: 'nearest' });\n\t}\n};\n\n/**\n * Determine the correct indices if a pointer cell is about to be focused\n * @param {TableRef} tableRef\n * @param {number} rowIndex\n * @param {number} cellIndex\n * @param {string} key\n * @returns {{rowIndex: number, cellIndex: number, pointerCellHandled: boolean}}\n */\nexport const handlePointerCell = (tableRef, rowIndex, cellIndex, key) => {\n\tconst cell = getCellFromTableRef(tableRef, rowIndex, cellIndex);\n\tif (!cell || !cell.pointer)\n\t\treturn { rowIndex, cellIndex, pointerCellHandled: false };\n\n\t/**\n\t * Actionable messages and group header rows can be reached from any column.\n\t * When the user moves through from these rows, the user should return to\n\t * the same column that they originated from, so the pointer logic should be\n\t * ignored.\n\t */\n\tconst { classList } = cell.node;\n\tif (\n\t\t(classList.contains('group-row-container') ||\n\t\t\tclassList.contains('actionable-message')) &&\n\t\t(key === KEY.UP || key === KEY.DOWN)\n\t) {\n\t\treturn { rowIndex, cellIndex, pointerCellHandled: false };\n\t}\n\n\tconst isRTL = document.dir === 'rtl';\n\n\tconst pointerDir = getRelativeDirection(\n\t\tcellIndex,\n\t\trowIndex,\n\t\tcell.pointer.cellIndex,\n\t\tcell.pointer.rowIndex,\n\t\tisRTL\n\t);\n\tif (!pointerDir) return { rowIndex, cellIndex, pointerCellHandled: false };\n\n\tconst { pointer } = cell;\n\tconst maxRowIndex = tableRef.rows.length - 1;\n\tconst maxCellIndex = tableRef.rows[rowIndex].cells.length - 1;\n\tconst rtlData = isRTL\n\t\t? {\n\t\t\t\tdir: 'Right',\n\t\t\t\tmoveOne: KEY.LEFT,\n\t\t\t\tmoveAll: KEY.HOME,\n\t\t  }\n\t\t: {\n\t\t\t\tdir: 'Left',\n\t\t\t\tmoveOne: KEY.RIGHT,\n\t\t\t\tmoveAll: KEY.END,\n\t\t  };\n\n\t/**\n\t * If the direction of the source cell is in the opposite direction of\n\t * movement, then we need to move to the cell in the direction of movement.\n\t * Otherwise, we just need to move to the source cell's location. To account\n\t * for RTL being enabled, the horizontal movement direction needs to be\n\t * handled dynamically, with the properties listed in the rtlData object\n\t */\n\n\tswitch (pointerDir) {\n\t\tcase 'Up':\n\t\t\tif (key === KEY.DOWN || key === KEY.PAGE_DOWN) {\n\t\t\t\tconst newRowFocus = pointer.rowIndex + pointer.rowSpan;\n\t\t\t\tif (newRowFocus > maxRowIndex)\n\t\t\t\t\treturn { ...pointer, pointerCellHandled: true };\n\n\t\t\t\treturn {\n\t\t\t\t\trowIndex: newRowFocus,\n\t\t\t\t\tcellIndex,\n\t\t\t\t\tpointerCellHandled: true,\n\t\t\t\t};\n\t\t\t} else return { ...pointer, pointerCellHandled: true };\n\n\t\tcase rtlData.dir:\n\t\t\tif (key === rtlData.moveOne || key === rtlData.moveAll) {\n\t\t\t\tconst newCellFocus = pointer.cellIndex + pointer.colSpan;\n\n\t\t\t\tif (newCellFocus > maxCellIndex)\n\t\t\t\t\treturn { ...pointer, pointerCellHandled: true };\n\n\t\t\t\treturn {\n\t\t\t\t\trowIndex,\n\t\t\t\t\tcellIndex: newCellFocus,\n\t\t\t\t\tpointerCellHandled: true,\n\t\t\t\t};\n\t\t\t} else return { ...pointer, pointerCellHandled: true };\n\t}\n\treturn { rowIndex, cellIndex, pointerCellHandled: true };\n};\n\n/**\n * get next row\n * @param {TableRef} tableRef - The table reference element\n * @param {FocusedRow} focusedRow - The currently focused row\n * @param {FocusedCell} focusedCell - The currently focused cell\n * @returns {TableRow | undefined}\n */\nexport const getNextRowFromTableRef = (tableRef, focusedRow, focusedCell) => {\n\treturn (\n\t\t(focusedRow || focusedCell) &&\n\t\tgetRowFromTableRef(\n\t\t\ttableRef,\n\t\t\t(focusedRow?.rowIndex ?? focusedCell?.rowIndex) + 1\n\t\t)\n\t);\n};\n\n/**\n * Focus the given node element, and ensure that the behavior state is properly updated\n * @param {*} node\n * @param {Coeffects<Props, State>} coeffects\n * @param {HTMLElement=} selectedActiveElement -\n */\nexport const focusCellNode = (node, coeffects, selectedActiveElement) => {\n\tconst { action, dispatch, state, updateState } = coeffects;\n\tconst { focusedCell, focusedRow, trappedCell } = getBehaviorState(state);\n\tconst { directFocusSelectors } = getBehaviorOptions(action);\n\n\tif (trappedCell) dispatch(EXIT_CELL_TRAP, { shouldFocus: false });\n\n\tif (focusedRow) {\n\t\tsetNewRowFocus({ prevFocus: focusedRow, updateState });\n\t\tsetBehaviorState(updateState, { focusedRow: undefined });\n\t}\n\n\t// Retrieve the cell's location in tableRef based on the stored values\n\tconst { navRow, navCol } = node.dataset;\n\tif (isNaN(parseInt(navRow)) || isNaN(parseInt(navCol))) return;\n\n\tconst newFocus = {\n\t\trowIndex: parseInt(navRow),\n\t\tcellIndex: parseInt(navCol),\n\t\tnode,\n\t};\n\n\tconst shouldFocus = !node.contains(findActiveElement());\n\n\t/**\n\t * Pass in dispatch only if we select an element in the cell\n\t * and we want to enter the cell trap as a result.\n\t * Pass selectedActiveElement as the element to focus in the new cell.\n\t */\n\tsetNewCellFocus({\n\t\tdispatch,\n\t\tselectedActiveElement,\n\t\tprevFocus: focusedCell,\n\t\tnewFocus,\n\t\tupdateState,\n\t\tdirectFocusSelectors,\n\t\tshouldFocus,\n\t});\n};\n\n/**\n * Focus the given popoverTarget by entering the cell trap of the focused cell\n * after closing the popover\n * @param {Coeffects<Props, State>} coeffects\n * @param {HTMLElement=} popoverTargetNode\n */\nexport const focusPopoverTarget = (coeffects, popoverTargetNode) => {\n\tconst { dispatch, state } = coeffects;\n\tconst { focusedCell } = getBehaviorState(state);\n\n\tif (!popoverTargetNode) {\n\t\tfocusCellNode(focusedCell.node, coeffects);\n\t\treturn;\n\t}\n\n\tif (!shadowQuerySelectorAll(focusedCell.node, popoverTargetNode.className))\n\t\treturn;\n\n\tdispatch(ENTER_CELL_TRAP, {\n\t\ttargetNode: popoverTargetNode,\n\t});\n};\n\n/**\n * Handles directional navigation when a cell is focused\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleCellMove = (coeffects) => {\n\tconst {\n\t\taction,\n\t\tstate,\n\t\tupdateState,\n\t\tproperties: { cellEditingEnabled },\n\t} = coeffects;\n\n\tconst {\n\t\tfocusedCell,\n\t\ttableRef,\n\t\thasGroupedRows,\n\t\tbulkFocus: { focusedKeys = [], focusedIndicies = [], previousKeys },\n\t} = getBehaviorState(state);\n\tconst { focusedRowKey } = state;\n\tlet bulkRows = focusedKeys;\n\tlet bulkRowIndices = focusedIndicies;\n\n\tconst {\n\t\tdirectFocusSelectors,\n\t\tscrollContainerSelector,\n\t} = getBehaviorOptions(action);\n\n\tconst {\n\t\tpayload: { key, shiftKey },\n\t} = action;\n\n\tconst newFocusedCell = { ...focusedCell };\n\n\t/**\n\t * For every directional movement, we adjust the coordinate of the focus and\n\t * handle the possibility of landing on a pointer cell\n\t */\n\tswitch (key) {\n\t\tcase KEY.UP:\n\t\tcase KEY.DOWN: {\n\t\t\tconst focusIncrement = key === KEY.DOWN ? 1 : -1;\n\t\t\tlet newRowFocus = focusedCell.rowIndex + focusIncrement;\n\t\t\tfocusedCell.node.tabIndex = 0;\n\n\t\t\tif (newRowFocus < 0 || newRowFocus > tableRef.rows.length - 1)\n\t\t\t\treturn;\n\t\t\tif (cellEditingEnabled) {\n\t\t\t\tlet isValidCell;\n\t\t\t\tlet focusedRow = get(tableRef, `rows[${newRowFocus}]`);\n\t\t\t\tlet rowKey = get(focusedRow, 'node.dataset.key');\n\t\t\t\tif (shiftKey) {\n\t\t\t\t\tdo {\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t({ focusedRow, isValidCell } = getBulkFocusInfo(\n\t\t\t\t\t\t\ttableRef,\n\t\t\t\t\t\t\tnewRowFocus,\n\t\t\t\t\t\t\tfocusedCell.cellIndex\n\t\t\t\t\t\t));\n\n\t\t\t\t\t\tif (!isValidCell) {\n\t\t\t\t\t\t\tnewRowFocus += focusIncrement;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trowKey = get(focusedRow, 'node.dataset.key');\n\t\t\t\t\t\t}\n\t\t\t\t\t} while (!isValidCell);\n\n\t\t\t\t\tif (includes(bulkRows, rowKey)) {\n\t\t\t\t\t\tbulkRows = xor(bulkRows, [previousKeys]);\n\t\t\t\t\t\tbulkRowIndices = xor(bulkRowIndices, [\n\t\t\t\t\t\t\tfocusedCell.rowIndex,\n\t\t\t\t\t\t]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbulkRows = xor(bulkRows, [rowKey]);\n\t\t\t\t\t\tbulkRowIndices = xor(bulkRowIndices, [newRowFocus]);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!focusedRow) return;\n\n\t\t\t\t\tconst nearestTable = focusedRow.node.closest('TABLE');\n\t\t\t\t\tif (!nearestTable) return;\n\n\t\t\t\t\tnearestTable.setAttribute(\n\t\t\t\t\t\tNOW_GRID_BULK_FOCUSED_IDS,\n\t\t\t\t\t\tbulkRows.join(',')\n\t\t\t\t\t);\n\n\t\t\t\t\tupdateBulkStyles(\n\t\t\t\t\t\tbulkRowIndices,\n\t\t\t\t\t\ttableRef,\n\t\t\t\t\t\tfocusedCell.cellIndex\n\t\t\t\t\t);\n\t\t\t\t\tsetBehaviorState(updateState, {\n\t\t\t\t\t\tbulkFocus: {\n\t\t\t\t\t\t\tfocusedKeys: bulkRows,\n\t\t\t\t\t\t\tfocusedIndicies: bulkRowIndices,\n\t\t\t\t\t\t\tpreviousKeys: rowKey,\n\t\t\t\t\t\t\tcolIndex: newFocusedCell.cellIndex,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tupdateBulkStyles(\n\t\t\t\t\t\t[newRowFocus],\n\t\t\t\t\t\ttableRef,\n\t\t\t\t\t\tfocusedCell.cellIndex\n\t\t\t\t\t);\n\t\t\t\t\tsetBehaviorState(updateState, {\n\t\t\t\t\t\tbulkFocus: {\n\t\t\t\t\t\t\tfocusedKeys: [rowKey],\n\t\t\t\t\t\t\tfocusedIndicies: [newRowFocus],\n\t\t\t\t\t\t\tpreviousKeys: rowKey,\n\t\t\t\t\t\t\tcolIndex: newFocusedCell.cellIndex,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst { rowIndex, cellIndex } = handlePointerCell(\n\t\t\t\ttableRef,\n\t\t\t\tnewRowFocus,\n\t\t\t\tnewFocusedCell.cellIndex,\n\t\t\t\tkey\n\t\t\t);\n\n\t\t\tnewFocusedCell.rowIndex = rowIndex;\n\t\t\tnewFocusedCell.cellIndex = cellIndex;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase KEY.LEFT:\n\t\tcase KEY.RIGHT: {\n\t\t\t/**\n\t\t\t * If the user is currently on a group header row, the previously\n\t\t\t * ignored pointer needs to now be handled so that navigation works\n\t\t\t * as expected.\n\t\t\t */\n\t\t\tconst {\n\t\t\t\trowIndex: ptrRowIndex,\n\t\t\t\tcellIndex: ptrCellIndex,\n\t\t\t\tpointerCellHandled: pointerCellHandled,\n\t\t\t} = handlePointerCell(\n\t\t\t\ttableRef,\n\t\t\t\tfocusedCell.rowIndex,\n\t\t\t\tfocusedCell.cellIndex,\n\t\t\t\tkey\n\t\t\t);\n\t\t\tfocusedCell.rowIndex = ptrRowIndex;\n\t\t\tfocusedCell.cellIndex = ptrCellIndex;\n\n\t\t\t/**\n\t\t\t * For RTL languages, the index increases as you go from right to\n\t\t\t * left, so the key behavior needs to be flipped\n\t\t\t */\n\t\t\tconst indexIncDir = document.dir === 'rtl' ? KEY.LEFT : KEY.RIGHT;\n\t\t\tlet newCellFocus;\n\t\t\tif (key === indexIncDir) {\n\t\t\t\tnewCellFocus =\n\t\t\t\t\tfocusedCell.cellIndex + (pointerCellHandled ? 0 : 1);\n\n\t\t\t\tif (\n\t\t\t\t\tnewCellFocus >\n\t\t\t\t\ttableRef.rows[focusedCell.rowIndex].cells.length - 1\n\t\t\t\t)\n\t\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tnewCellFocus =\n\t\t\t\t\tfocusedCell.cellIndex - (pointerCellHandled ? 0 : 1);\n\n\t\t\t\t/**\n\t\t\t\t * Refetch the cell node to handle the case where focus is\n\t\t\t\t * currently on a direct focus selector element (such as a\n\t\t\t\t * grouped row button).\n\t\t\t\t */\n\t\t\t\tconst cell = getCellFromTableRef(\n\t\t\t\t\ttableRef,\n\t\t\t\t\tfocusedCell.rowIndex,\n\t\t\t\t\tfocusedCell.cellIndex\n\t\t\t\t);\n\n\t\t\t\t/**\n\t\t\t\t * If the user attempts to go passed the first cell, the focus\n\t\t\t\t * should switch from cell-based to row-based, which is used\n\t\t\t\t * for navigating grouped rows. This should only happen on td\n\t\t\t\t * elements and not on th elements.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tnewCellFocus < 0 &&\n\t\t\t\t\thasGroupedRows &&\n\t\t\t\t\tcell?.node.tagName === 'TD'\n\t\t\t\t) {\n\t\t\t\t\tsetNewCellFocus({\n\t\t\t\t\t\tprevFocus: focusedCell,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t});\n\t\t\t\t\tsetBehaviorState(updateState, { focusedCell: undefined });\n\n\t\t\t\t\tconst newRowFocus =\n\t\t\t\t\t\ttableRef.rows[focusedCell.rowIndex].node;\n\t\t\t\t\tsetNewRowFocus({\n\t\t\t\t\t\tnewFocus: {\n\t\t\t\t\t\t\trowIndex: focusedCell.rowIndex,\n\t\t\t\t\t\t\tnode: newRowFocus,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tshouldFocus: true,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst { rowIndex, cellIndex } = handlePointerCell(\n\t\t\t\ttableRef,\n\t\t\t\tnewFocusedCell.rowIndex,\n\t\t\t\tnewCellFocus,\n\t\t\t\tkey\n\t\t\t);\n\n\t\t\tupdateBulkStyles([], tableRef, 0);\n\t\t\tsetBehaviorState(updateState, {\n\t\t\t\tbulkFocus: {\n\t\t\t\t\tfocusedKeys: [focusedRowKey],\n\t\t\t\t\tfocusedIndicies: [focusedCell.rowIndex],\n\t\t\t\t\tpreviousKeys: focusedRowKey,\n\t\t\t\t\tcolIndex: newFocusedCell.cellIndex,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tnewFocusedCell.rowIndex = rowIndex;\n\t\t\tnewFocusedCell.cellIndex = cellIndex;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase KEY.PAGE_UP:\n\t\tcase KEY.PAGE_DOWN: {\n\t\t\tnewFocusedCell.rowIndex =\n\t\t\t\tkey === KEY.PAGE_DOWN ? tableRef.rows.length - 1 : 0;\n\n\t\t\tconst { rowIndex, cellIndex } = handlePointerCell(\n\t\t\t\ttableRef,\n\t\t\t\tnewFocusedCell.rowIndex,\n\t\t\t\tnewFocusedCell.cellIndex,\n\t\t\t\tkey\n\t\t\t);\n\n\t\t\tsetBehaviorState(updateState, {\n\t\t\t\tbulkFocus: {\n\t\t\t\t\tfocusedKeys: [focusedRowKey],\n\t\t\t\t\tfocusedIndicies: [focusedCell.rowIndex],\n\t\t\t\t\tpreviousKeys: focusedRowKey,\n\t\t\t\t\tcolIndex: newFocusedCell.cellIndex,\n\t\t\t\t},\n\t\t\t});\n\t\t\tupdateBulkStyles([], tableRef, 0);\n\n\t\t\tnewFocusedCell.rowIndex = rowIndex;\n\t\t\tnewFocusedCell.cellIndex = cellIndex;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase KEY.HOME:\n\t\tcase KEY.END: {\n\t\t\t// For RTL languages, the index increases RTL, so the key behavior needs to be flipped\n\t\t\tconst indexIncDir = document.dir === 'rtl' ? KEY.HOME : KEY.END;\n\t\t\tif (key === indexIncDir) {\n\t\t\t\tnewFocusedCell.cellIndex =\n\t\t\t\t\ttableRef.rows[focusedCell.rowIndex].cells.length - 1;\n\t\t\t} else {\n\t\t\t\tnewFocusedCell.cellIndex = 0;\n\t\t\t}\n\n\t\t\tconst { rowIndex, cellIndex } = handlePointerCell(\n\t\t\t\ttableRef,\n\t\t\t\tnewFocusedCell.rowIndex,\n\t\t\t\tnewFocusedCell.cellIndex,\n\t\t\t\tkey\n\t\t\t);\n\n\t\t\tsetBehaviorState(updateState, {\n\t\t\t\tbulkFocus: {\n\t\t\t\t\tfocusedKeys: [focusedRowKey],\n\t\t\t\t\tfocusedIndicies: [focusedCell.rowIndex],\n\t\t\t\t\tpreviousKeys: focusedRowKey,\n\t\t\t\t\tcolIndex: newFocusedCell.cellIndex,\n\t\t\t\t},\n\t\t\t});\n\t\t\tupdateBulkStyles([], tableRef, 0);\n\n\t\t\tnewFocusedCell.rowIndex = rowIndex;\n\t\t\tnewFocusedCell.cellIndex = cellIndex;\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst cell = getCellFromTableRef(\n\t\ttableRef,\n\t\tnewFocusedCell.rowIndex,\n\t\tnewFocusedCell.cellIndex\n\t);\n\tif (!cell) return;\n\n\tnewFocusedCell.node = cell.node;\n\n\tif (key === KEY.UP) {\n\t\tensureCellIntersection(\n\t\t\tnewFocusedCell.node,\n\t\t\ttableRef,\n\t\t\tscrollContainerSelector\n\t\t);\n\t}\n\n\tsetNewCellFocus({\n\t\tprevFocus: focusedCell,\n\t\tnewFocus: newFocusedCell,\n\t\tupdateState,\n\t\tdirectFocusSelectors,\n\t\tshouldFocus: true,\n\t});\n};\n\n/**\n * Toggle a grouped row by emitting the same event that would come from clicking\n * on a grouped row toggle button\n * @param {Dispatch} dispatch\n * @param {string | undefined} key\n */\nconst toggleGroupedRow = (dispatch, key) => {\n\tdispatch(NOW_BUTTON_ICONIC_CLICKED, {\n\t\trow: { key },\n\t\ttype: EXPAND_GROUP,\n\t});\n};\n\n/**\n * Handles directional navigation when a row is focused\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleRowMove = ({ action, dispatch, state, updateState }) => {\n\tconst { tableRef, focusedRow } = getBehaviorState(state);\n\tconst {\n\t\tdirectFocusSelectors,\n\t\tscrollContainerSelector,\n\t} = getBehaviorOptions(action);\n\n\tconst {\n\t\tpayload: { key },\n\t} = action;\n\n\tconst newFocusedRow = { ...focusedRow };\n\n\tswitch (key) {\n\t\tcase KEY.UP:\n\t\tcase KEY.DOWN: {\n\t\t\tconst focusIncrement = key === KEY.DOWN ? 1 : -1;\n\t\t\tconst newRowIndex = focusedRow.rowIndex + focusIncrement;\n\t\t\tif (newRowIndex < 0 || newRowIndex > tableRef.rows.length - 1)\n\t\t\t\treturn;\n\n\t\t\tnewFocusedRow.rowIndex = newRowIndex;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase KEY.LEFT:\n\t\tcase KEY.RIGHT: {\n\t\t\t/**\n\t\t\t * For RTL languages, the index increases as you go from right to\n\t\t\t * left, so the key behavior needs to be flipped\n\t\t\t */\n\t\t\tconst indexIncDir = document.dir === 'rtl' ? KEY.LEFT : KEY.RIGHT;\n\t\t\tif (key === indexIncDir) {\n\t\t\t\tif (\n\t\t\t\t\t!focusedRow.node.hasAttribute('aria-expanded') ||\n\t\t\t\t\tfocusedRow.node.getAttribute('aria-expanded') === 'true'\n\t\t\t\t) {\n\t\t\t\t\tconst cell = getCellFromTableRef(\n\t\t\t\t\t\ttableRef,\n\t\t\t\t\t\tfocusedRow.rowIndex,\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\t\t\t\t\tif (!cell) return;\n\n\t\t\t\t\tconst newFocusedCell = {\n\t\t\t\t\t\tcellIndex: 0,\n\t\t\t\t\t\trowIndex: focusedRow.rowIndex,\n\t\t\t\t\t\tnode: cell.node,\n\t\t\t\t\t};\n\n\t\t\t\t\t// Unfocus the row\n\t\t\t\t\tsetNewRowFocus({ prevFocus: focusedRow, updateState });\n\t\t\t\t\tsetBehaviorState(updateState, { focusedRow: undefined });\n\n\t\t\t\t\t// Focus the cell\n\t\t\t\t\tsetNewCellFocus({\n\t\t\t\t\t\tnewFocus: newFocusedCell,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tdirectFocusSelectors,\n\t\t\t\t\t\tshouldFocus: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttoggleGroupedRow(dispatch, focusedRow.node.dataset.key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * If the row is expanded and the user presses left, then the\n\t\t\t\t * row should be collapsed.\n\t\t\t\t */\n\t\t\t\tif (focusedRow.node.getAttribute('aria-expanded') === 'true') {\n\t\t\t\t\ttoggleGroupedRow(dispatch, focusedRow.node.dataset.key);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t\tcase KEY.PAGE_UP:\n\t\tcase KEY.HOME:\n\t\tcase KEY.PAGE_DOWN:\n\t\tcase KEY.END: {\n\t\t\tif (key === KEY.PAGE_DOWN || key === KEY.END) {\n\t\t\t\tnewFocusedRow.rowIndex =\n\t\t\t\t\ttableRef.rows.length -\n\t\t\t\t\t1 -\n\t\t\t\t\ttableRef.rows.filter((row) => row.type === 'TFOOT').length;\n\t\t\t} else {\n\t\t\t\tnewFocusedRow.rowIndex = tableRef.rows.filter(\n\t\t\t\t\t(row) => row.type === 'THEAD'\n\t\t\t\t).length;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst row = getRowFromTableRef(tableRef, newFocusedRow.rowIndex);\n\tif (!row) return;\n\n\tif (row.node.parentElement?.tagName !== 'TBODY') return;\n\n\tnewFocusedRow.node = row.node;\n\n\tif (key === KEY.UP) {\n\t\tensureCellIntersection(\n\t\t\tnewFocusedRow.node,\n\t\t\ttableRef,\n\t\t\tscrollContainerSelector\n\t\t);\n\t}\n\n\tsetNewRowFocus({\n\t\tprevFocus: focusedRow,\n\t\tnewFocus: newFocusedRow,\n\t\tupdateState,\n\t\tshouldFocus: true,\n\t});\n};\n\n/**\n * This function handles the case where a user is navigating up via keyboard and the row is hidden behind the\n * sticky column headers. The cell is technically visible, so the browser doesn't move the page to scroll to it,\n * but the cell is obstructed. This function checks if the cell being focused is hidden behind the column header.\n * If so, it calculate show much to scroll the container down so that the cell is fully visible. This logic isn't\n * neded if the cell is obstructed by the list's viewport, since the browser will handle movement for that case.\n * @param {HTMLElement} node\n * @param {TableRef} tableRef\n * @param {string | undefined} scrollContainerSelector\n */\nexport const ensureCellIntersection = (\n\tnode,\n\ttableRef,\n\tscrollContainerSelector\n) => {\n\tif (!scrollContainerSelector) return;\n\n\tconst cellRect = node.getBoundingClientRect();\n\tconst colHeaderNode = tableRef.node.querySelector('thead');\n\tif (!colHeaderNode) return;\n\n\tconst colHeaderRect = colHeaderNode.getBoundingClientRect();\n\n\tconst isCellNodeHidden = colHeaderRect.bottom > cellRect.top;\n\n\tif (isCellNodeHidden) {\n\t\tconst scrollContainer = node.closest(scrollContainerSelector);\n\t\tif (!scrollContainer) return;\n\n\t\t// the amount of pixels that the cell is hidden by the column header\n\t\tconst scrollAmount = colHeaderRect.bottom - cellRect.top;\n\n\t\tscrollContainer.scrollTop -= scrollAmount;\n\t}\n};\n\n/**\n * Default function to determine whether to rerender based on if the property that changed was incldued in the rerenderProperties list\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const shouldTriggerRerenderDefaultFn = (coeffects) => {\n\tconst { action } = coeffects;\n\tconst { rerenderProperties } = getBehaviorOptions(action);\n\tif (!rerenderProperties || isEmpty(rerenderProperties)) return false;\n\n\tif (!rerenderProperties.includes(action?.payload?.name)) return false;\n\n\treturn true;\n};\n\n/**\n * Determines whether to rerender based on if the rows/column keys have changed\n * @param {Coeffects<Props, State>} coeffects\n * @returns {boolean}\n */\nexport const shouldTriggerRerender = (coeffects) => {\n\tconst {\n\t\taction,\n\t\taction: {\n\t\t\tpayload: { name, value, previousValue },\n\t\t},\n\t\tproperties,\n\t} = coeffects;\n\tconst { virtualizedScrollEnabled } = properties;\n\tconst { rerenderProperties } = getBehaviorOptions(action);\n\tif (!rerenderProperties || isEmpty(rerenderProperties)) return false;\n\tconst currentPage = get(value, 'metadata.currentPage', null);\n\t// if the row/col keys don't change then we don't want to reset the focus state\n\tif ([ROW_DEFINITIONS, COLUMN_DEFINITIONS].includes(name)) {\n\t\tif (virtualizedScrollEnabled && currentPage !== 0) return false;\n\t\tconst objKey = name === ROW_DEFINITIONS ? 'rows' : 'columns';\n\t\tconst originalKeys = getKeys(previousValue, objKey);\n\t\tconst newKeys = getKeys(value, objKey);\n\t\t// update table ref when there is change in children in rowDefintions\n\t\tconst hasChildrenOriginal = hasChildren(previousValue, objKey);\n\t\tconst hasChildrenNew = hasChildren(value, objKey);\n\t\treturn (\n\t\t\t!isEqual(originalKeys, newKeys) ||\n\t\t\t!isEqual(hasChildrenOriginal, hasChildrenNew)\n\t\t);\n\t}\n\n\tif (!rerenderProperties.includes(name)) return false;\n\n\treturn true;\n};\n\n/**\n * @param {Row | ColumnBase} obj either a row or a column\n * @param {string} propertyName the field in the object where the keys live\n * @returns {Array<string>}\n */\nconst getKeys = (obj, propertyName) => {\n\tconst items = get(obj, `${propertyName}`, []);\n\tconst keys = [];\n\tconst stack = [...items];\n\n\twhile (stack.length > 0) {\n\t\tconst item = stack.pop();\n\n\t\tif (item.key) {\n\t\t\tkeys.push(item.key);\n\t\t}\n\n\t\tif (item.children && isArray(item.children)) {\n\t\t\tstack.push(...item.children);\n\t\t}\n\t}\n\n\treturn keys;\n};\n\n/**\n * Returns if any rows in rowDefinitions has children\n * @param {Row | ColumnBase} obj either a row or a column\n * @param {string} propertyName the field in the object where the keys live\n * @returns {boolean}\n */\nconst hasChildren = (obj, propertyName) => {\n\tif (propertyName !== 'rows') return true;\n\tconst items = get(obj, `${propertyName}`, []);\n\treturn items.some((/** @type {Row} */ obj) => obj.children !== undefined);\n};\n\n/**\n *\n * @param {Coeffects<Props, State>} coeffects\n * @param {HTMLElement} focusedNode\n * @returns\n */\nexport const handleBulkFocusClick = (coeffects, focusedNode) => {\n\tconst { action, state, updateState } = coeffects;\n\tconst {\n\t\tbulkFocus,\n\t\tbulkFocus: {\n\t\t\tinitialIndex,\n\t\t\tfocusedIndicies: prevFocusedIndicies = [],\n\t\t\tcolIndex: prevColIndex,\n\t\t},\n\t\ttableRef: grid,\n\t} = getBehaviorState(state);\n\n\tconst {\n\t\tpayload: {\n\t\t\tevent: { metaKey, shiftKey },\n\t\t},\n\t} = action;\n\n\tconst { navRow, navCol } = focusedNode.dataset;\n\n\t/** @type {number} */\n\tconst rowIndex = Number(navRow);\n\tconst colIndex = Number(navCol);\n\n\t// @ts-ignore\n\tconst { isValidCell, focusedRow } = getBulkFocusInfo(\n\t\tgrid,\n\t\trowIndex,\n\t\tcolIndex\n\t);\n\n\tif (!isValidCell) {\n\t\tresetBulkFocus(coeffects, focusedNode);\n\t}\n\n\tlet focusedIndicies = [...prevFocusedIndicies];\n\tconst isSameColumn = colIndex === prevColIndex;\n\tconst visited = focusedIndicies.includes(rowIndex) && isSameColumn;\n\n\tif (!metaKey && visited) return;\n\n\tconst stateUpdate = {\n\t\t...bulkFocus,\n\t\tpreviousKeys: get(focusedRow, 'node.dataset.key'),\n\t};\n\n\t// cmd click\n\tif (metaKey && isSameColumn) {\n\t\tstateUpdate.initialIndex = rowIndex;\n\n\t\t// deselect if selected\n\t\tif (visited) {\n\t\t\tfocusedIndicies.splice(focusedIndicies.indexOf(rowIndex), 1);\n\t\t}\n\t\t// otherwise select\n\t\telse {\n\t\t\tfocusedIndicies.push(rowIndex);\n\t\t}\n\t}\n\t// shift click\n\telse if (shiftKey && isSameColumn) {\n\t\tconst minIndex = initialIndex\n\t\t\t? Math.min(initialIndex, rowIndex)\n\t\t\t: rowIndex;\n\t\tconst maxIndex = initialIndex\n\t\t\t? Math.max(initialIndex, rowIndex)\n\t\t\t: rowIndex;\n\n\t\tfocusedIndicies = focusedIndicies.concat(range(minIndex, maxIndex + 1));\n\t}\n\t// regular click\n\telse {\n\t\tstateUpdate.initialIndex = rowIndex;\n\t\tstateUpdate.colIndex = colIndex;\n\t\tfocusedIndicies = [rowIndex];\n\t}\n\n\tfocusedIndicies = [...new Set(focusedIndicies)];\n\n\t/** @type  { Array<String> } */\n\tconst focusedKeys = [];\n\n\t// use set to remove duplicates, then loop to find valid cells to get Keys\n\t[...focusedIndicies].forEach((index) => {\n\t\t// @ts-ignore\n\t\tconst { focusedRow, isValidCell } = getBulkFocusInfo(\n\t\t\tgrid,\n\t\t\tindex,\n\t\t\tcolIndex\n\t\t);\n\t\tif (isValidCell) {\n\t\t\tfocusedKeys.push(get(focusedRow, 'node.dataset.key'));\n\t\t} else {\n\t\t\tfocusedIndicies.splice(focusedIndicies.indexOf(index), 1);\n\t\t}\n\t});\n\n\tstateUpdate.focusedIndicies = focusedIndicies;\n\n\tstateUpdate.focusedKeys = focusedKeys;\n\n\tif (!focusedRow) return;\n\n\tconst nearestTable = focusedRow.node.closest('TABLE');\n\tif (!nearestTable) return;\n\n\t// @ts-ignore\n\tnearestTable.setAttribute(NOW_GRID_BULK_FOCUSED_IDS, focusedKeys.join(','));\n\n\t// @ts-ignore\n\tupdateBulkStyles(focusedIndicies, grid, colIndex);\n\t// @ts-ignore\n\tsetBehaviorState(updateState, { bulkFocus: stateUpdate });\n};\n\n/**\n * Dispatches the focus list action that refocuses current focused cell.\n * Overrides the default focus function for now-list.\n * @param {Now.HostHTMLElement} host\n * @param {Now.Dispatch} dispatch\n */\nexport const focus = (host, dispatch) => {\n\tdispatch(FOCUS_LIST);\n};\n","export const NOW_LIST_OPEN_POPOVER_INTERNAL = 'NOW_LIST#OPEN_POPOVER_INTERNAL';\nexport const NOW_LIST_CLOSE_POPOVER_INTERNAL =\n\t'NOW_LIST#CLOSE_POPOVER_INTERNAL';\n\nexport const NOW_LIST_POPOVER_OPENED = 'NOW_LIST#POPOVER_OPENED';\nexport const NOW_LIST_POPOVER_CLOSED = 'NOW_LIST#POPOVER_CLOSED';\n\nexport const NOW_POPOVER_OPENED_SET = 'NOW_POPOVER#OPENED_SET';\n\nexport const BEHAVIOR_STATE_PATH = 'behaviors.popoverDefinitionBehavior';\n\nexport const CHOICE_COLUMN_FILTER = 'choiceColumnFilter';\n","export const ROW_DEFINITIONS_PATH = 'rowDefinitions';\nexport const CELL_EDIT_POPOVER_TYPE = 'cellEdit';\nexport const CELL_EDIT_APPLY_BUTTON_ID = 'cellEditApplyButton';\nexport const CELL_EDIT_CANCEL_BUTTON_ID = 'cellEditCancelButton';\nexport const CELL_EDIT_RETRY_BUTTON_ID = 'cellEditRetryButton';\n\n// component tags\nexport const CELL_EDIT_POPOVER_STRING = 'now-list-string-cell-editor-content';\nexport const CELL_EDIT_POPOVER_BOOLEAN = 'now-list-boolean-cell-editor-content';\nexport const CELL_EDIT_POPOVER_NUMBER = 'now-list-number-cell-editor-content';\nexport const CELL_EDIT_POPOVER_CURRENCY =\n\t'now-list-currency-cell-editor-content';\nexport const CELL_EDIT_POPOVER_DATE_TIME =\n\t'now-list-date-time-cell-editor-content';\nexport const CELL_EDIT_POPOVER_PILLS = 'now-list-pills-cell-editor-content';\nexport const CELL_EDIT_POPOVER_CHOICE = 'now-list-choice-cell-editor-content';\nexport const CELL_EDIT_POPOVER_URL = 'now-list-url-cell-editor-content';\nexport const CELL_EDIT_POPOVER_LINK = 'now-list-link-cell-editor-content';\nexport const CELL_EDIT_POPOVER_ICON = 'now-list-icon-cell-editor-content';\nexport const CELL_EDIT_POPOVER_PERSON = 'now-list-person-cell-editor-content';\nexport const CELL_EDIT_POPOVER_HTML = 'now-list-html-cell-editor-content';\n\n//component events\nexport const NOW_INPUT_VALUE_SET = 'NOW_INPUT#VALUE_SET';\nexport const NOW_BUTTON_CLICKED = 'NOW_BUTTON#CLICKED';\nexport const NOW_RADIO_BUTTONS_VALUE_SET = 'NOW_RADIO_BUTTONS#VALUE_SET';\nexport const NOW_DATE_TIME_VALUE_SET = 'NOW_DATE_TIME#VALUE_SET';\nexport const NOW_TYPEAHEAD_MULTI_SELECTED_ITEMS_SET =\n\t'NOW_TYPEAHEAD_MULTI#SELECTED_ITEMS_SET';\nexport const NOW_SELECT_SELECTED_ITEM_SET = 'NOW_SELECT#SELECTED_ITEM_SET';\nexport const NOW_INPUT_URL_VALUE_SET = 'NOW_INPUT_URL#VALUE_SET';\nexport const NOW_HTML_VALUE_SET = 'NOW_RECORD_HTML_EDITOR#VALUE_CHANGED';\n\n//internal events\nexport const CELL_EDIT_INTERNAL = 'CELL_EDIT_INTERNAL';\n\n//internally dispatched events\nexport const NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED =\n\t'NOW_LIST_CELL_EDITOR_CONTENT#VALUE_UPDATED';\n\n//dispatched events\nexport const NOW_LIST_POPOVER_BUTTON_CLICKED =\n\t'NOW_LIST#POPOVER_BUTTON_CLICKED';\nexport const NOW_LIST_CELL_EDIT_REQUESTED = 'NOW_LIST#CELL_EDIT_REQUESTED';\nexport const NOW_LIST_CELL_EDIT_SUBMITTED = 'NOW_LIST#CELL_EDIT_SUBMITTED';\n","import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport { t } from 'sn-translate';\n\nimport {\n\tTYPE_BOOLEAN,\n\tTYPE_NUMBER,\n\tTYPE_CURRENCY,\n\tTYPE_DATE_TIME,\n\tTYPE_PILLS,\n\tTYPE_CHOICE,\n\tTYPE_URL,\n\tTYPE_LINK,\n\tTYPE_ICON,\n\tTYPE_PERSON,\n\tTYPE_PERCENT_COMPLETE,\n\tTYPE_HTML,\n} from '../../typeSchemas/columnDefinitions/columnTypes/columnTypes';\nimport {\n\tgetBehaviorState,\n\tsetBehaviorState,\n} from '../keyboardNavBehavior/keyboardNavHelpers';\nimport { updateBulkStyles } from '../keyboardNavBehavior/utils';\nimport {\n\tNOW_LIST_CLOSE_POPOVER_INTERNAL,\n\tNOW_LIST_OPEN_POPOVER_INTERNAL,\n} from '../popoverBehavior/constants';\n\nimport {\n\tCELL_EDIT_INTERNAL,\n\tCELL_EDIT_APPLY_BUTTON_ID,\n\tCELL_EDIT_CANCEL_BUTTON_ID,\n\tNOW_LIST_CELL_EDIT_REQUESTED,\n\tNOW_LIST_CELL_EDIT_SUBMITTED,\n\tNOW_LIST_POPOVER_BUTTON_CLICKED,\n\tCELL_EDIT_POPOVER_STRING,\n\tROW_DEFINITIONS_PATH,\n\tCELL_EDIT_POPOVER_BOOLEAN,\n\tCELL_EDIT_POPOVER_NUMBER,\n\tCELL_EDIT_POPOVER_CURRENCY,\n\tCELL_EDIT_POPOVER_DATE_TIME,\n\tCELL_EDIT_POPOVER_TYPE,\n\tCELL_EDIT_RETRY_BUTTON_ID,\n\tCELL_EDIT_POPOVER_PILLS,\n\tCELL_EDIT_POPOVER_CHOICE,\n\tCELL_EDIT_POPOVER_URL,\n\tCELL_EDIT_POPOVER_LINK,\n\tCELL_EDIT_POPOVER_ICON,\n\tCELL_EDIT_POPOVER_PERSON,\n\tCELL_EDIT_POPOVER_HTML,\n} from './constants';\n\nconst popoverConfig = {\n\tariaLabel: t('Cell Edit Popover'),\n\tdismissOnScroll: false,\n\thideTail: true,\n\tdismissable: false,\n};\n\n/**\n * @param {Dispatch} dispatch\n * @param {HTMLElement} cellRef\n * @param {Context} context\n * @param {String} message\n */\nexport const openCellEditPopoverWithMessage = (\n\tdispatch,\n\tcellRef,\n\tcontext,\n\tmessage\n) => {\n\tdispatch(NOW_LIST_OPEN_POPOVER_INTERNAL, {\n\t\tpopoverTarget: cellRef,\n\t\tpopoverDefinition: {\n\t\t\tconfig: popoverConfig,\n\t\t\tcontent: {\n\t\t\t\tpopoverType: CELL_EDIT_POPOVER_TYPE,\n\t\t\t\tbuttonsConfig: {\n\t\t\t\t\tdisableApply: true,\n\t\t\t\t},\n\t\t\t\thighlightedMessage: {\n\t\t\t\t\tshowIcon: true,\n\t\t\t\t\ticon: 'triangle-exclamation-outline',\n\t\t\t\t\tcolor: 'warning',\n\t\t\t\t\tlabel: message,\n\t\t\t\t\tvariant: 'tertiary',\n\t\t\t\t},\n\t\t\t\tdefaultComponentProps: {\n\t\t\t\t\tactionsContext: context,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tcontext,\n\t});\n};\n\n/**\n *\n * @param {Now.SeismicState<Props, State>} state\n * @returns list of rows\n */\nexport const getClonedRows = (state) =>\n\tcloneDeep(get(state, ROW_DEFINITIONS_PATH, []));\n\n/**\n *\n * @param {Now.SeismicState<Props, State>} state\n * @returns processed selected Rows, and table ref\n */\nexport const getRowsToUpdate = (state) => {\n\tconst { bulkFocus, tableRef } = getBehaviorState(state);\n\tconst clonedRows = getClonedRows(state);\n\n\tconst rowsToUpdate = clonedRows.rows\n\t\t? clonedRows.rows.filter((/** @type {{ key: string; }} */ row) =>\n\t\t\t\tbulkFocus.focusedKeys.includes(row.key)\n\t\t  )\n\t\t: [];\n\n\treturn {\n\t\trowsToUpdate,\n\t\tclonedRows,\n\t\ttableRef,\n\t\tbulkFocus,\n\t};\n};\n\n/**\n * @param {String} cellType\n * @returns\n */\nexport const getComponentTag = (cellType) =>\n\t({\n\t\t[TYPE_BOOLEAN]: CELL_EDIT_POPOVER_BOOLEAN,\n\t\t[TYPE_NUMBER]: CELL_EDIT_POPOVER_NUMBER,\n\t\t[TYPE_PERCENT_COMPLETE]: CELL_EDIT_POPOVER_NUMBER,\n\t\t[TYPE_CURRENCY]: CELL_EDIT_POPOVER_CURRENCY,\n\t\t[TYPE_DATE_TIME]: CELL_EDIT_POPOVER_DATE_TIME,\n\t\t[TYPE_PILLS]: CELL_EDIT_POPOVER_PILLS,\n\t\t[TYPE_CHOICE]: CELL_EDIT_POPOVER_CHOICE,\n\t\t[TYPE_URL]: CELL_EDIT_POPOVER_URL,\n\t\t[TYPE_LINK]: CELL_EDIT_POPOVER_LINK,\n\t\t[TYPE_ICON]: CELL_EDIT_POPOVER_ICON,\n\t\t[TYPE_PERSON]: CELL_EDIT_POPOVER_PERSON,\n\t\t[TYPE_HTML]: CELL_EDIT_POPOVER_HTML,\n\t}[cellType] || CELL_EDIT_POPOVER_STRING);\n\n/**\n * dispatched when a cell is double-clicked and the cell editing popover is requested.\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const cellEditRequestedEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { cellRef, context },\n\t\t},\n\t\tproperties: { cellEditingEnabled, cellEditingManaged },\n\t\tdispatch,\n\t\tstate,\n\t} = coeffects;\n\n\tconst {\n\t\tcell: { type },\n\t} = context;\n\n\tif (!cellEditingEnabled) {\n\t\treturn;\n\t}\n\n\tif (context.column.cellEditingDisabled) {\n\t\topenCellEditPopoverWithMessage(\n\t\t\tdispatch,\n\t\t\tcellRef,\n\t\t\tcontext,\n\t\t\tt(\n\t\t\t\t'This column can’t be edited due to its settings. Contact your admin to request permissions.'\n\t\t\t)\n\t\t);\n\t\treturn;\n\t}\n\n\tif (context.cell.editingDisabled) {\n\t\topenCellEditPopoverWithMessage(\n\t\t\tdispatch,\n\t\t\tcellRef,\n\t\t\tcontext,\n\t\t\tt(\n\t\t\t\t'This cell can’t be edited due to its settings. Contact your admin to request permissions.'\n\t\t\t)\n\t\t);\n\t\treturn;\n\t}\n\tconst { rowsToUpdate, bulkFocus } = getRowsToUpdate(state);\n\n\t/** @type {boolean} */\n\tconst selectedCellsEditingEnabled = rowsToUpdate.some(\n\t\t(/** @type {{ key: Object; }} */ row) =>\n\t\t\t// @ts-ignore\n\t\t\trow.cells[context.column.key]?.editingDisabled\n\t);\n\n\tif (selectedCellsEditingEnabled) {\n\t\topenCellEditPopoverWithMessage(\n\t\t\tdispatch,\n\t\t\tcellRef,\n\t\t\tcontext,\n\t\t\tt(\n\t\t\t\t`Some of these cells can't be edited due to their settings. Only select cells that allow editing.`\n\t\t\t)\n\t\t);\n\t\treturn;\n\t}\n\n\tcontext.selectedKeys = bulkFocus.focusedKeys;\n\tconst componentTag = getComponentTag(type);\n\n\t/**\n\t * When cellEditingManaged (now-list component level property) is true, we dispatch the event NOW_LIST#CELL_EDIT_REQUESTED.\n\t * An external source (eg. list controller) listens and defines the content of the popover and updates the popoverDefinition.\n\t */\n\tif (cellEditingManaged) {\n\t\tdispatch(NOW_LIST_CELL_EDIT_REQUESTED, {\n\t\t\tcontext,\n\t\t});\n\t} else {\n\t\tdispatch(NOW_LIST_OPEN_POPOVER_INTERNAL, {\n\t\t\tpopoverTarget: cellRef,\n\t\t\tpopoverDefinition: {\n\t\t\t\tconfig: popoverConfig,\n\t\t\t\tcontent: {\n\t\t\t\t\tpopoverType: CELL_EDIT_POPOVER_TYPE,\n\t\t\t\t\tcomponentTag: componentTag,\n\t\t\t\t\tdefaultComponentProps: {\n\t\t\t\t\t\tactionsContext: context,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontext,\n\t\t});\n\t}\n};\n\n/**\n * dispatched when a button on the cell edit popover is clicked.\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const cellEditingPopoverButtonClickedEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { id, context, payload },\n\t\t},\n\t\tproperties: { cellEditingManaged },\n\t\tupdateState,\n\t\tstate,\n\t\tdispatch,\n\t} = coeffects;\n\n\tif (id === CELL_EDIT_APPLY_BUTTON_ID) {\n\t\tconst oldValue = {\n\t\t\tvalue: context.cell.value,\n\t\t\tlabel: context.cell.label,\n\t\t\tcolor: context.cell.color,\n\t\t\tpersonKey: context.cell.personKey,\n\t\t\timageSrc: context.cell.imageSrc,\n\t\t};\n\n\t\tconst { value, label, color, personKey, imageSrc } = payload;\n\t\tconst newValue = { value, label, color, personKey, imageSrc };\n\n\t\tconst { rowsToUpdate, clonedRows, tableRef } = getRowsToUpdate(state);\n\t\tif (!cellEditingManaged) {\n\t\t\trowsToUpdate.forEach((\n\t\t\t\t/** @type {{ cells: { [x: string]: cellEditingPayload };}} */ row\n\t\t\t) => {\n\t\t\t\trow.cells[context.column.key].value = newValue.value;\n\t\t\t\tif (newValue.label !== undefined) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\trow.cells[context.column.key].label = newValue.label;\n\t\t\t\t}\n\t\t\t\tif (newValue.color !== undefined) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\trow.cells[context.column.key].color = newValue.color;\n\t\t\t\t}\n\t\t\t\tif (newValue.personKey !== undefined) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\trow.cells[context.column.key].personKey =\n\t\t\t\t\t\tnewValue.personKey;\n\t\t\t\t}\n\t\t\t\tif (newValue.imageSrc !== undefined) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\trow.cells[context.column.key].imageSrc = newValue.imageSrc;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tupdateState({\n\t\t\t\tpath: ROW_DEFINITIONS_PATH,\n\t\t\t\tvalue: clonedRows,\n\t\t\t\toperation: 'set',\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Passing managed to put a check on the controller/external source not to save the changes on the table\n\t\t * if cellEditingManaged property is false\n\t\t */\n\t\tdispatch(NOW_LIST_CELL_EDIT_SUBMITTED, {\n\t\t\tmanaged: cellEditingManaged,\n\t\t\tcontext: context,\n\t\t\toldValue: oldValue,\n\t\t\tnewValue: newValue,\n\t\t});\n\n\t\tupdateBulkStyles([], tableRef, 0);\n\t\tsetBehaviorState(updateState, {\n\t\t\tbulkFocus: {\n\t\t\t\tfocusedKeys: [context.row.key],\n\t\t\t\tfocusedIndicies: [context.rowIndex + 1],\n\t\t\t\tpreviousKeys: context.row.key,\n\t\t\t\tcolIndex: context.columnIndex,\n\t\t\t\tinitialIndex: context.rowIndex + 1,\n\t\t\t},\n\t\t});\n\n\t\tif (!cellEditingManaged) {\n\t\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t\t}\n\t} else if (id === CELL_EDIT_RETRY_BUTTON_ID) {\n\t\tdispatch(CELL_EDIT_INTERNAL, {\n\t\t\tcontext: context,\n\t\t});\n\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t} else if (id === CELL_EDIT_CANCEL_BUTTON_ID) {\n\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t}\n};\n\nconst cellEditingBehavior = {\n\tname: 'cellEditingBehavior',\n\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[CELL_EDIT_INTERNAL]: {\n\t\t\teffect: cellEditRequestedEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_POPOVER_BUTTON_CLICKED]: {\n\t\t\teffect: cellEditingPopoverButtonClickedEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\nexport default cellEditingBehavior;\n","import { t } from 'sn-translate';\n\n// CLASSNAMES\nexport const COLUMN_FILTERING_ROW_CLASS = 'column-filtering-row';\nexport const COLUMN_FILTERING_ROW_ID = 'columnFilteringRow';\nexport const COLUMN_FILTERING_VALUE_INPUT_CLASS =\n\t'column-filtering-value-input';\n\n// UI CONSTS\nexport const COLUMN_FILTERING_VALUE_PLACEHOLDER = t('Value');\nexport const COLUMN_FILTERING_VALUE_ARIA_LABEL = t('Value');\nexport const COLUMN_FILTERING_VALUE_INPUT_NAME = 'valueInput';\nexport const COLUMN_FILTERING_CHOICE_TYPE_TRIGGER_BUTTON_NAME =\n\t'columnFilteringChoiceTypeTriggerButton';\nexport const COLUMN_FILTERING_SELECT_ALL_BUTTON_NAME =\n\t'column-filter-select-all';\nexport const COLUMN_FILTERING_SELECT_NONE_BUTTON_NAME =\n\t'column-filter-select-none';\nexport const SHOW_HIDE_COLUMN_FILTERING_ROW_ACTION =\n\t'showHideColumnFilteringRowAction';\nexport const REMOVE_COLUMN_FILTER_BUTTON = 'removeColumnFilterButton';\nexport const REMOVE_COLUMN_FILTER_ARIA_LABEL = t('Remove Column Filter');\nexport const SHOW_HIDE_COLUMN_FILTERING_ROW_ICON =\n\t'magnifying-glass-filter-outline';\nexport const DATE_TIME_APPLY_LABEL = t('Apply');\nexport const DATE_TIME_APPLY_BUTTON_NAME = 'dateTimeApplyButton';\nexport const DATE_TIME_CANCEL_LABEL = t('Cancel');\nexport const DATE_TIME_CANCEL_BUTTON_NAME = 'dateTimeCancelButton';\n\n// OPERATORS\nexport const IS_OPERATOR_ID = '=';\nexport const IS_OPERATOR_LABEL = 'is';\nexport const IS_OPERATOR_ITEM = {\n\tid: IS_OPERATOR_ID,\n\tlabel: IS_OPERATOR_LABEL,\n};\n\nexport const IS_NOT_OPERATOR_ID = '!=';\nexport const IS_NOT_OPERATOR_LABEL = 'is not';\nexport const IS_NOT_OPERATOR_ITEM = {\n\tid: IS_NOT_OPERATOR_ID,\n\tlabel: IS_NOT_OPERATOR_LABEL,\n};\n\nexport const STARTS_WITH_OPERATOR_ID = 'STARTSWITH';\nexport const STARTS_WITH_OPERATOR_LABEL = 'starts with';\nexport const STARTS_WITH_OPERATOR_ITEM = {\n\tid: STARTS_WITH_OPERATOR_ID,\n\tlabel: STARTS_WITH_OPERATOR_LABEL,\n};\n\nexport const ENDS_WITH_OPERATOR_ID = 'ENDSWITH';\nexport const ENDS_WITH_OPERATOR_LABEL = 'ends with';\nexport const ENDS_WITH_OPERATOR_ITEM = {\n\tid: ENDS_WITH_OPERATOR_ID,\n\tlabel: ENDS_WITH_OPERATOR_LABEL,\n};\n\nexport const CONTAINS_OPERATOR_ID = 'LIKE';\nexport const CONTAINS_OPERATOR_LABEL = 'contains';\nexport const CONTAINS_OPERATOR_ITEM = {\n\tid: CONTAINS_OPERATOR_ID,\n\tlabel: CONTAINS_OPERATOR_LABEL,\n};\n\nexport const DOES_NOT_CONTAIN_OPERATOR_ID = 'NOTLIKE';\nexport const DOES_NOT_CONTAIN_OPERATOR_LABEL = 'does not contain';\nexport const DOES_NOT_CONTAIN_OPERATOR_ITEM = {\n\tid: DOES_NOT_CONTAIN_OPERATOR_ID,\n\tlabel: DOES_NOT_CONTAIN_OPERATOR_LABEL,\n};\n\nexport const IS_EMPTY_OPERATOR_ID = 'ISEMPTY';\nexport const IS_EMPTY_OPERATOR_LABEL = 'is empty';\nexport const IS_EMPTY_OPERATOR_ITEM = {\n\tid: IS_EMPTY_OPERATOR_ID,\n\tlabel: IS_EMPTY_OPERATOR_LABEL,\n\trequiresValue: false,\n};\n\nexport const IS_NOT_EMPTY_OPERATOR_ID = 'ISNOTEMPTY';\nexport const IS_NOT_EMPTY_OPERATOR_LABEL = 'is not empty';\nexport const IS_NOT_EMPTY_OPERATOR_ITEM = {\n\tid: IS_NOT_EMPTY_OPERATOR_ID,\n\tlabel: IS_NOT_EMPTY_OPERATOR_LABEL,\n\trequiresValue: false,\n};\n\nexport const IS_ANYTHING_OPERATOR_ID = 'ANYTHING';\nexport const IS_ANYTHING_OPERATOR_LABEL = 'is anything';\nexport const IS_ANYTHING_OPERATOR_ITEM = {\n\tid: IS_ANYTHING_OPERATOR_ID,\n\tlabel: IS_ANYTHING_OPERATOR_LABEL,\n\trequiresValue: false,\n};\n\nexport const LESS_THAN_OPERATOR_ID = '<';\nexport const LESS_THAN_OPERATOR_LABEL = 'is less than';\nexport const LESS_THAN_OPERATOR_ITEM = {\n\tid: LESS_THAN_OPERATOR_ID,\n\tlabel: LESS_THAN_OPERATOR_LABEL,\n};\n\nexport const GREATER_THAN_OPERATOR_ID = '>';\nexport const GREATER_THAN_OPERATOR_LABEL = 'is greater than';\nexport const GREATER_THAN_OPERATOR_ITEM = {\n\tid: GREATER_THAN_OPERATOR_ID,\n\tlabel: GREATER_THAN_OPERATOR_LABEL,\n};\n\nexport const LESS_THAN_OR_EQUAL_OPERATOR_ID = '<=';\nexport const LESS_THAN_OR_EQUAL_OPERATOR_LABEL = 'is less than or is';\nexport const LESS_THAN_OR_EQUAL_OPERATOR_ITEM = {\n\tid: LESS_THAN_OR_EQUAL_OPERATOR_ID,\n\tlabel: LESS_THAN_OR_EQUAL_OPERATOR_LABEL,\n};\n\nexport const GREATER_THAN_OR_EQUAL_OPERATOR_ID = '>=';\nexport const GREATER_THAN_OR_EQUAL_OPERATOR_LABEL = 'is greater than or is';\nexport const GREATER_THAN_OR_EQUAL_OPERATOR_ITEM = {\n\tid: GREATER_THAN_OR_EQUAL_OPERATOR_ID,\n\tlabel: GREATER_THAN_OR_EQUAL_OPERATOR_LABEL,\n};\n\nexport const DATE_TIME_LESS_THAN_OPERATOR_ID = '<';\nexport const DATE_TIME_LESS_THAN_OPERATOR_LABEL = 'before';\nexport const DATE_TIME_LESS_THAN_OPERATOR_ITEM = {\n\tid: DATE_TIME_LESS_THAN_OPERATOR_ID,\n\tlabel: DATE_TIME_LESS_THAN_OPERATOR_LABEL,\n};\n\nexport const DATE_TIME_GREATER_THAN_OPERATOR_ID = '>';\nexport const DATE_TIME_GREATER_THAN_OPERATOR_LABEL = 'after';\nexport const DATE_TIME_GREATER_THAN_OPERATOR_ITEM = {\n\tid: DATE_TIME_GREATER_THAN_OPERATOR_ID,\n\tlabel: DATE_TIME_GREATER_THAN_OPERATOR_LABEL,\n};\n\nexport const DATE_TIME_LESS_THAN_OR_EQUAL_OPERATOR_ID = '<=';\nexport const DATE_TIME_LESS_THAN_OR_EQUAL_OPERATOR_LABEL = 'at or before';\nexport const DATE_TIME_LESS_THAN_OR_EQUAL_OPERATOR_ITEM = {\n\tid: DATE_TIME_LESS_THAN_OR_EQUAL_OPERATOR_ID,\n\tlabel: DATE_TIME_LESS_THAN_OR_EQUAL_OPERATOR_LABEL,\n};\n\nexport const DATE_TIME_GREATER_THAN_OR_EQUAL_OPERATOR_ID = '>=';\nexport const DATE_TIME_GREATER_THAN_OR_EQUAL_OPERATOR_LABEL = 'at or after';\nexport const DATE_TIME_GREATER_THAN_OR_EQUAL_OPERATOR_ITEM = {\n\tid: DATE_TIME_GREATER_THAN_OR_EQUAL_OPERATOR_ID,\n\tlabel: DATE_TIME_GREATER_THAN_OR_EQUAL_OPERATOR_LABEL,\n};\n\nexport const IS_ONE_OF_OPERATOR_ID = 'IN';\nexport const IS_ONE_OF_OPERATOR_LABEL = 'is one of';\nexport const IS_ONE_OF_OPERATOR_ITEM = {\n\tid: IS_ONE_OF_OPERATOR_ID,\n\tlabel: IS_ONE_OF_OPERATOR_LABEL,\n};\n\nexport const IS_NOT_ONE_OF_OPERATOR_ID = 'NOT IN';\nexport const IS_NOT_ONE_OF_OPERATOR_LABEL = 'is one of';\nexport const IS_NOT_ONE_OF_OPERATOR_ITEM = {\n\tid: IS_NOT_ONE_OF_OPERATOR_ID,\n\tlabel: IS_NOT_ONE_OF_OPERATOR_LABEL,\n};\n\nexport const ON_OPERATOR_ID = 'ON';\nexport const ON_OPERATOR_LABEL = 'on';\nexport const ON_OPERATOR_ITEM = {\n\tid: ON_OPERATOR_ID,\n\tlabel: ON_OPERATOR_LABEL,\n};\n\nexport const NOT_ON_OPERATOR_ID = 'NOTON';\nexport const NOT_ON_OPERATOR_LABEL = 'not on';\nexport const NOT_ON_OPERATOR_ITEM = {\n\tid: NOT_ON_OPERATOR_ID,\n\tlabel: NOT_ON_OPERATOR_LABEL,\n};\n\nexport const GENERIC_FILTER_OPERATORS = [\n\tIS_OPERATOR_ITEM,\n\tIS_NOT_OPERATOR_ITEM,\n\tSTARTS_WITH_OPERATOR_ITEM,\n\tENDS_WITH_OPERATOR_ITEM,\n\tCONTAINS_OPERATOR_ITEM,\n\tDOES_NOT_CONTAIN_OPERATOR_ITEM,\n\tIS_EMPTY_OPERATOR_ITEM,\n\tIS_NOT_EMPTY_OPERATOR_ITEM,\n];\n\nexport const GENERIC_FILTER_DEFAULT_OPERATOR = CONTAINS_OPERATOR_ID;\n\nexport const NUMBER_FILTER_OPERATORS = [\n\tIS_OPERATOR_ITEM,\n\tIS_NOT_ONE_OF_OPERATOR_ITEM,\n\tIS_EMPTY_OPERATOR_ITEM,\n\tIS_NOT_EMPTY_OPERATOR_ITEM,\n\tLESS_THAN_OPERATOR_ITEM,\n\tGREATER_THAN_OPERATOR_ITEM,\n\tLESS_THAN_OR_EQUAL_OPERATOR_ITEM,\n\tGREATER_THAN_OR_EQUAL_OPERATOR_ITEM,\n];\n\nexport const NUMBER_FILTER_DEFAULT_OPERATOR = IS_OPERATOR_ID;\n\nexport const BOOLEAN_FILTER_OPERATORS = [\n\tIS_OPERATOR_ITEM,\n\tIS_NOT_OPERATOR_ITEM,\n\tIS_EMPTY_OPERATOR_ITEM,\n\tIS_NOT_EMPTY_OPERATOR_ITEM,\n];\n\nexport const BOOLEAN_FILTER_DEFAULT_OPERATOR = IS_OPERATOR_ID;\n\n// BETWEEN intentionally excluded to simplify UI\nexport const DATE_TIME_FILTER_OPERATORS = [\n\tON_OPERATOR_ITEM,\n\tNOT_ON_OPERATOR_ITEM,\n\tDATE_TIME_LESS_THAN_OPERATOR_ITEM,\n\tDATE_TIME_GREATER_THAN_OPERATOR_ITEM,\n\tDATE_TIME_LESS_THAN_OR_EQUAL_OPERATOR_ITEM,\n\tDATE_TIME_GREATER_THAN_OR_EQUAL_OPERATOR_ITEM,\n\tIS_EMPTY_OPERATOR_ITEM,\n\tIS_NOT_EMPTY_OPERATOR_ITEM,\n];\n\nexport const DATE_TIME_FILTER_DEFAULT_OPERATOR = ON_OPERATOR_ID;\n","import get from 'lodash/get';\n\nconst featureFlagSelectors = {\n\t/**\n\t * @param {object} featureFlags\n\t *\n\t * @returns {boolean}\n\t */\n\tgetColumnResizingEnabled: (featureFlags) => {\n\t\treturn get(featureFlags, 'columnResizingEnabled');\n\t},\n\n\t/**\n\t * @param {object} featureFlags\n\t *\n\t * @returns {boolean}\n\t */\n\tgetColumnDragDropEnabled: (featureFlags) => {\n\t\treturn get(featureFlags, 'columnDragDropEnabled');\n\t},\n\n\t/**\n\t * @param {object} featureFlags\n\t *\n\t * @returns {boolean}\n\t */\n\tgetColumnFilteringEnabled: (featureFlags) => {\n\t\treturn get(featureFlags, 'columnFilteringEnabled');\n\t},\n\n\t/**\n\t * @param {object} featureFlags\n\t * @param {boolean | undefined} featureFlags.virtualizedScrollEnabled\n\t * @returns {boolean}\n\t */\n\tgetRowDragDropEnabled: (featureFlags) => {\n\t\tconst { virtualizedScrollEnabled } = featureFlags;\n\t\treturn virtualizedScrollEnabled\n\t\t\t? false\n\t\t\t: get(featureFlags, 'rowDragDropEnabled');\n\t},\n\n\t/**\n\t * @param {object} featureFlags\n\t *\n\t * @returns {boolean}\n\t */\n\tgetSelectionEnabled: (featureFlags) => {\n\t\treturn get(featureFlags, 'selectionEnabled');\n\t},\n\n\t/**\n\t * @param {object} featureFlags\n\t *\n\t * @returns {boolean}\n\t */\n\tgetExpandAllGroups: (featureFlags) => {\n\t\treturn get(featureFlags, 'expandAllGroups');\n\t},\n\n\t/**\n\t * @param {object} featureFlags\n\t *\n\t * @returns {number}\n\t */\n\tgetMaxCharacters: (featureFlags) => {\n\t\treturn get(featureFlags, 'maxCharacters');\n\t},\n};\n\nexport default featureFlagSelectors;\n","import {\n\tget,\n\tisEmpty,\n\tisArray,\n\tincludes,\n\thas,\n\tsome,\n\tfilter,\n\tset,\n\treduce,\n\tunion,\n\tmap,\n} from 'lodash';\nimport { get as fpGet, getOr } from 'lodash/fp';\n\nimport {\n\tDEFAULT_ROW_ACTION_NUM_ICONS,\n\tPOSITION_TABLE_START,\n} from '../../../typeSchemas/rowDefinitions/rowConfigConsts.js';\nimport {\n\tROW_TYPE_DEFAULT,\n\tROW_TYPE_GROUPED,\n\tROW_TYPE_CUSTOM,\n} from '../../../typeSchemas/rowDefinitions/rowTypes/rowTypes.js';\n\nconst {\n\tACTIONABLE_MESSAGE_STATUS_DEFAULT,\n\tACTIONABLE_MESSAGE_ICONS_DICT,\n} = require('../../views/actionableMessage/constants.js');\n\nconst rowSelectors = {\n\t/* MULTIPLE ROWS SELECTORS */\n\n\t/**\n\t * Selector for getting rows from rowDefinitions object\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {Array<Row>} rows field of row definitions object\n\t */\n\tgetRows: function (rowDefinitions) {\n\t\treturn get(rowDefinitions, 'rows');\n\t},\n\n\t/**\n\t * Selector for getting specific row from rowDefinitions object based on row key\n\t * @param {Row[]} rows\n\t * @param {string} rowKey\n\t *\n\t * @returns {Row | null} return individual row from rowDefinitions object based on row key\n\t */\n\tgetRow: function (rows, rowKey) {\n\t\tfor (const row of rows) {\n\t\t\tif (row.key === rowKey) {\n\t\t\t\treturn row;\n\t\t\t}\n\t\t\tif (row.children && row.children.length > 0) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tconst result = this.getRow(row.children, rowKey);\n\t\t\t\tif (result) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\t/**\n\t * Selector for getting all row keys from rows array\n\t * @param {Array<Row>} rows\n\t *\n\t * @returns {Array<string>} array of row keys from rows array\n\t */\n\tgetAllRowKeys: function (rows = []) {\n\t\treturn rows.reduce((\n\t\t\t/** @type {string[]} */ allRowKeys,\n\t\t\t/** @type {Row} */ row\n\t\t) => {\n\t\t\tconst rowType = get(row, 'type');\n\t\t\tif (rowType === ROW_TYPE_DEFAULT || !rowType)\n\t\t\t\tallRowKeys = allRowKeys.concat(row.key);\n\t\t\tconst childRowKeys = row.children?.map((childRow) => childRow.key);\n\t\t\tif (!isEmpty(childRowKeys))\n\t\t\t\t// @ts-ignore\n\t\t\t\tallRowKeys = allRowKeys.concat(childRowKeys);\n\t\t\treturn allRowKeys;\n\t\t}, []);\n\t},\n\n\t/**\n\t * Selector for getting all highlighted row keys from rows array\n\t * @param {Array<Row>} rows\n\t *\n\t * @returns {Array<string>} array of highlighted row keys from rows array\n\t */\n\tgetAllHighlightedRowKeys: function (rows = []) {\n\t\treturn rows.reduce((\n\t\t\t/** @type {string[]} */ allHighlightedRowKeys,\n\t\t\t/** @type {Row} */ row\n\t\t) => {\n\t\t\tconst rowType = get(row, 'type');\n\t\t\tif (\n\t\t\t\t(rowType === ROW_TYPE_DEFAULT || !rowType) &&\n\t\t\t\tthis.isRowHighlighted(row)\n\t\t\t)\n\t\t\t\tallHighlightedRowKeys = allHighlightedRowKeys.concat(row.key);\n\n\t\t\tconst childHighlightedKeys =\n\t\t\t\trow.children?.flatMap(\n\t\t\t\t\t/** @type {Row[]} */ (childRow) =>\n\t\t\t\t\t\tthis.isRowHighlighted(childRow) ? [childRow.key] : []\n\t\t\t\t) || [];\n\n\t\t\tallHighlightedRowKeys = allHighlightedRowKeys.concat(\n\t\t\t\tchildHighlightedKeys\n\t\t\t);\n\t\t\treturn allHighlightedRowKeys;\n\t\t}, []);\n\t},\n\n\t/**\n\t * Check to see if rowDefinitions has at least one row\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {boolean}\n\t */\n\thasRows: (rowDefinitions) => {\n\t\treturn !isEmpty(get(rowDefinitions, 'rows'));\n\t},\n\n\t/**\n\t * Selector for getting actionableMessage config for top actionable message\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {ActionableMessage}\n\t */\n\tgetTopActionableMessage: function (rowDefinitions) {\n\t\treturn get(rowDefinitions, 'topActionableMessage');\n\t},\n\n\t/**\n\t * Selector for getting actionableMessage config for bottom actionable message\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {ActionableMessage}\n\t */\n\tgetBottomActionableMessage: function (rowDefinitions) {\n\t\treturn get(rowDefinitions, 'bottomActionableMessage');\n\t},\n\n\t/**\n\t * Selector for checking existence of actionableMessage config for top actionable message\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {boolean}\n\t */\n\thasTopActionableMessage: function (rowDefinitions) {\n\t\treturn (\n\t\t\thas(rowDefinitions, 'topActionableMessage') &&\n\t\t\t!isEmpty(rowDefinitions?.topActionableMessage)\n\t\t);\n\t},\n\n\t/**\n\t * Selector for checking existence of actionableMessage config for bottom actionable message\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {boolean}\n\t */\n\thasBottomActionableMessage: function (rowDefinitions) {\n\t\treturn (\n\t\t\thas(rowDefinitions, 'bottomActionableMessage') &&\n\t\t\t!isEmpty(rowDefinitions?.bottomActionableMessage)\n\t\t);\n\t},\n\n\t/**\n\t * Selector for getting an actionable message's status variant\n\t * @param {ActionableMessage} actionableMessage\n\t *\n\t * @returns {string}\n\t */\n\tgetActionableMessageStatus: function (actionableMessage) {\n\t\treturn get(\n\t\t\tactionableMessage,\n\t\t\t'status',\n\t\t\tACTIONABLE_MESSAGE_STATUS_DEFAULT\n\t\t);\n\t},\n\n\t/**\n\t * Selector for getting an actionable message's status variant\n\t * @param {ActionableMessage} actionableMessage\n\t *\n\t * @returns {string}\n\t */\n\tgetActionableMessageIcon: function (actionableMessage) {\n\t\tconst status = get(\n\t\t\tactionableMessage,\n\t\t\t'status',\n\t\t\tACTIONABLE_MESSAGE_STATUS_DEFAULT\n\t\t);\n\t\t// @ts-ignore\n\t\treturn ACTIONABLE_MESSAGE_ICONS_DICT[status];\n\t},\n\n\t/**\n\t * Selector for getting selectionDisabled config for individual row from row object\n\t * @param {Row | null} row\n\t *\n\t * @returns {boolean}\n\t */\n\tgetSelectionDisabledForParticularRow: function (row) {\n\t\treturn get(row, 'selectionDisabled', false);\n\t},\n\n\t/**\n\t * Selector for getting highlightedContent config\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {Array<string>} array of string patterns to be higlighted\n\t */\n\tgetHighlightedContentPatterns: function (rowDefinitions) {\n\t\treturn get(rowDefinitions, 'highlightedContent', []);\n\t},\n\n\t/**\n\t * Check if row actions exist and are valid\n\t * (if the actions object exists but its child array actionsItems is empty, it is invalid)\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {boolean}\n\t */\n\thasRowActionsWithItems: (rowDefinitions) => {\n\t\treturn !isEmpty(get(rowDefinitions, 'actions.actionsItems'));\n\t},\n\n\t/**\n\t * Selector for getting row actions from rowDefinitions object\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {Array<RowActions>} row actions field of row definitions object\n\t */\n\tgetRowActions: fpGet('actions'),\n\n\t/**\n\t * Selector for getting disableActions config for individual row from row object\n\t * @param {Row} row\n\t *\n\t * @returns {boolean}\n\t */\n\tgetAreActionsDisabled: function (row) {\n\t\t// if disableActions is true, then we want to display a console message about this prop being deprecated\n\t\trow.disableActions === true &&\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t'disableActions is deprecated. Use excludedActions instead.'\n\t\t\t);\n\t\treturn get(row, 'disableActions', false);\n\t},\n\n\t/**\n\t * Selector for getting row actions items from rowDefinitions object\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {Array<RowActionItem>} row actions items field of row actions object\n\t */\n\tgetRowActionsItems: function (rowDefinitions) {\n\t\tconst actions = this.getRowActions(rowDefinitions);\n\t\treturn this.getRowActionsItemsFromActions(actions);\n\t},\n\n\t/**\n\t * Selector for getting the actions items from rowActions\n\t * @param {RowActions} rowActions\n\t *\n\t * @returns {Array<RowActionItem>} row actions items field of row actions object\n\t */\n\tgetRowActionsItemsFromActions: (rowActions) => {\n\t\treturn get(rowActions, 'actionsItems');\n\t},\n\n\t/**\n\t * Selector for getting the number of actions to render as icons from rowDefinitions\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {number} The number of actions to render as icons\n\t */\n\tgetRowActionsNumIcons: function (rowDefinitions) {\n\t\tconst actions = this.getRowActions(rowDefinitions);\n\t\treturn this.getRowActionsNumIconsFromActions(actions);\n\t},\n\n\t/**\n\t * Selector for getting the number of actions to render as icons from rowActions\n\t * @param {RowActions} rowActions\n\t *\n\t * @returns {number} The number of actions to render as icons\n\t */\n\tgetRowActionsNumIconsFromActions: (rowActions) => {\n\t\treturn (\n\t\t\tget(rowActions, 'numActionIcons') ?? DEFAULT_ROW_ACTION_NUM_ICONS\n\t\t);\n\t},\n\n\t/**\n\t * Selector for getting custom cell emitted actions\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {Array<string>} returns list of actions in an array\n\t */\n\tgetCustomCellEmittedActions: (rowDefinitions) => {\n\t\treturn get(rowDefinitions, 'customCellEmittedActions');\n\t},\n\n\t/**\n\t * This function checks if row definition has custom Cell Emitted Actions\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {boolean}\n\t */\n\thasCustomCellEmittedActions: (rowDefinitions) => {\n\t\treturn has(rowDefinitions, 'customCellEmittedActions');\n\t},\n\n\t/**\n\t * Selector for getting row actions position (start or end of list) from rowDefinitions object\n\t * Configured value is ignored when column filtering is on in order for the toggle button to be in view on initial render.\n\t * @param {RowActions} rowActions\n\t * @param {boolean} columnFilteringEnabled\n\t *\n\t * @returns {string} string representing whether actions should be at the start or the end of the list.\n\t */\n\tgetRowActionsPosition: function (rowActions, columnFilteringEnabled) {\n\t\tif (columnFilteringEnabled) return POSITION_TABLE_START;\n\t\telse return get(rowActions, 'position', POSITION_TABLE_START);\n\t},\n\n\t/**\n\t * Helper reducer that gets all the selected rows currently in the list. Will return\n\t * the accumulation of an object containing all the initial selected keys\n\t * @param {object} selectedRows\n\t * @param {Row} currentRow\n\t * @returns\n\t */\n\t_getInitialSelectedRowsReducer: function (selectedRows, currentRow) {\n\t\tif (\n\t\t\tcurrentRow.type == 'grouped' &&\n\t\t\t// @ts-ignore\n\t\t\tcurrentRow?.children?.length > 0\n\t\t) {\n\t\t\tcurrentRow.children?.reduce(\n\t\t\t\tthis._getInitialSelectedRowsReducer.bind(this),\n\t\t\t\tselectedRows\n\t\t\t);\n\t\t} else {\n\t\t\tconst isSelectionDisabled = this.getSelectionDisabledForParticularRow(\n\t\t\t\tcurrentRow\n\t\t\t);\n\t\t\tconst isSelected = get(currentRow, 'isSelected', false);\n\n\t\t\tif (!isSelectionDisabled && isSelected)\n\t\t\t\tset(selectedRows, [get(currentRow, 'key')], currentRow);\n\n\t\t\tif (\n\t\t\t\tcurrentRow.type == 'default' &&\n\t\t\t\t// @ts-ignore\n\t\t\t\tcurrentRow?.children?.length > 0\n\t\t\t) {\n\t\t\t\tcurrentRow?.children?.reduce(\n\t\t\t\t\tthis._getInitialSelectedRowsReducer.bind(this),\n\t\t\t\t\tselectedRows\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn selectedRows;\n\t},\n\n\t/**\n\t * Selector to get all selected rows on initial render\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {object} keys of all selected rows on initial render\n\t */\n\tgetInitialSelectedRows: function (rowDefinitions) {\n\t\tconst rows = this.getRows(rowDefinitions);\n\n\t\treturn reduce(rows, this._getInitialSelectedRowsReducer.bind(this), {});\n\t},\n\n\t/* INDIVIDUAL ROW SELECTORS */\n\n\t/**\n\t * Selector for getting key from row object\n\t * @param {Object} row\n\t *\n\t * @returns {string} key representing the unique id of the row. Used to reference row information on the row level\n\t */\n\tgetRowKey: fpGet('key'),\n\n\t/**\n\t * Selector for getting type from row object\n\t * @param {Row} row\n\t *\n\t * @returns {string} name of row type\n\t */\n\tgetRowType: (row) => {\n\t\tconst type = get(row, 'type');\n\t\tif (type) {\n\t\t\treturn type;\n\t\t} else {\n\t\t\treturn ROW_TYPE_DEFAULT;\n\t\t}\n\t},\n\n\t/**\n\t * Selector for checking if row is toggled\n\t * @param {object} rows\n\t * @param {string} rowKey\n\t *\n\t * @returns {boolean} return true if row is toggled\n\t */\n\tisRowChecked: (rows, rowKey) => {\n\t\treturn has(rows, rowKey);\n\t},\n\n\t/**\n\t * Selector for checking if row is highlighted\n\t * @param {Row} row\n\t *\n\t * @returns {boolean} returns true if row is highlighted\n\t */\n\tisRowHighlighted: (row) => get(row, 'visualTreatment.isHighlighted', false),\n\n\t/**\n\t * Selector for checking if row is recently added or updated based on its visual treatment property 'showUpdatedIcon\n\t * @param {Row} row\n\t *\n\t * @returns {boolean} returns true if row was recently added via live list\n\t */\n\tisRecentlyAddedOrUpdatedRow: (row) =>\n\t\tget(row, 'visualTreatment.showUpdatedIcon', false),\n\n\t/**\n\t * Selector for checking if row is grayed out\n\t * @param {Row} row\n\t *\n\t * @returns {boolean} returns true if row was grayed out\n\t */\n\tisRowGrayedOut: (row) => get(row, 'visualTreatment.isGrayedOut', false),\n\n\t/**\n\t * Selector for getting cells object from row object\n\t * @param {Row} row\n\t *\n\t * @returns {object} cells\n\t */\n\tgetCells: fpGet('cells'),\n\n\t/**\n\t * Selector for getting excluded actions from either single unselected row, or\n\t * if row is selected, from all selected rows\n\t * @param {Array<Row>} rows\n\t *\n\t * @returns {Array<string>} array of unique action ids extracted from excludedActions of each row\n\t */\n\tgetExcludedActions: (rows = []) => {\n\t\treturn rows.reduce((actions, row) => {\n\t\t\tconst rowExcludedActions = getOr([], 'excludedActions')(row);\n\t\t\treturn union(actions, rowExcludedActions);\n\t\t}, []);\n\t},\n\n\t/**\n\t * Selector for getting excluded actions from a single row\n\t * @param {Row} row\n\t *\n\t * @returns {Array<string>} array of unique action ids extracted from excludedActions of the row\n\t */\n\tgetExcludedActionsForRow: (\n\t\trow = {\n\t\t\tkey: '',\n\t\t}\n\t) => {\n\t\treturn getOr([], 'excludedActions')(row);\n\t},\n\n\t/**\n\t * Selector for getting one cell from a row based on a column key\n\t * @param {Row} row - object for a single row\n\t * @param {string} colKey - string key that corresponds to a specific column\n\t *\n\t * @returns {CellType} cell\n\t */\n\tfindCell: (row, colKey) => {\n\t\treturn get(row, ['cells', colKey]);\n\t},\n\n\t/**\n\t * Selector for checking if rowDefinitions object has rows of type grouped or rows of type default with children\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {boolean} returns true if grouped rows are present\n\t */\n\thasGroupedOrDefaultRowsWithChildren: (rowDefinitions) => {\n\t\treturn (\n\t\t\trowSelectors.hasGroupedRows(rowDefinitions) ||\n\t\t\trowSelectors.hasDefaultRowsWithChildren(rowDefinitions)\n\t\t);\n\t},\n\n\t/**\n\t * Selector for checking if rowDefinitions object has rows containing groupedRowCount property\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t *\n\t * @returns {boolean} returns true if at least one row has groupedRowCount property\n\t */\n\thasGroupedRowCount: (rowDefinitions) => {\n\t\tconst rows = get(rowDefinitions, 'rows');\n\t\treturn some(rows, 'groupedRowCount');\n\t},\n\n\t/**\n\t * Selector for getting rows of type grouped or rows of type default with children from rowDefinitions object\n\t * @param {Array<Row> | undefined} rows\n\t * @param {Array<Row>} grouped - Optional -stores keys for all children\n\t *\n\t * @returns {Array<Row>} returns rows of type grouped or rows of type default with children from rowDefinitions object\n\t */\n\tgetGroupedOrDefaultRowsWithChildren: (rows, grouped = []) => {\n\t\tif (!rows) {\n\t\t\treturn grouped;\n\t\t}\n\n\t\tmap(rows, (\n\t\t\t/** @type {{ key: string; children: Row[] | undefined; }} */ row\n\t\t) => {\n\t\t\tif (rowSelectors.isGroupedRowOrDefaultRowWithChildren(row)) {\n\t\t\t\tgrouped.push(row);\n\t\t\t\treturn rowSelectors.getGroupedOrDefaultRowsWithChildren(\n\t\t\t\t\trow.children,\n\t\t\t\t\tgrouped\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\treturn grouped;\n\t},\n\n\t/**\n\t * Selector for getting keys for all groups from rowDefinitions object\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {boolean} returns array of group keys from rowDefinitions object\n\t */\n\tgetAllGroupKeys: (rowDefinitions) => {\n\t\tconst rows = rowSelectors.getRows(rowDefinitions);\n\t\treturn filter(rows, 'children').map(\n\t\t\t(/** @type {{ key: string; }} */ row) => row.key\n\t\t);\n\t},\n\n\t/**\n\t * Selector for getting keys for all rows of type default from rowDefinitions object\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {Array<string>} returns array of group keys from rowDefinitions object\n\t */\n\tgetDefaultRowKeysRecursively: (rowDefinitions) => {\n\t\tconst rows = rowSelectors.getRows(rowDefinitions);\n\t\tif (!rows) return [];\n\t\tconst stack = [...rows]; // Use a stack initialized with the root array\n\t\tconst keys = [];\n\n\t\twhile (stack.length > 0) {\n\t\t\tconst current = stack.pop(); // Pop the top item from the stack\n\t\t\tif (current?.type === 'default') keys.push(current?.key); // Add the key to the result array\n\n\t\t\t// If the current item has children, push them onto the stack\n\t\t\tif (current?.children && current?.children.length > 0) {\n\t\t\t\tstack.push(...current.children);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-ignore\n\t\treturn keys;\n\t},\n\n\t/**\n\t * Selector for getting keys for all groups from rowDefinitions object\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {Array<string>} returns array of group keys from rowDefinitions object\n\t */\n\tgetAllGroupKeysRecursively: (rowDefinitions) => {\n\t\tconst rows = rowSelectors.getRows(rowDefinitions);\n\t\treturn rowSelectors.getKeysOfChildren(rows);\n\t},\n\n\t/**\n\t * Gets keys of all children recursively for any row array\n\t * @param {Array<Row>} rows - row children array\n\t *\n\t * @returns {Array<string>} keys - return array of strings comprising of children keys.\n\t */\n\tgetKeysOfChildren: (rows) => {\n\t\tif (!rows) return [];\n\t\tconst stack = [...rows]; // Use a stack initialized with the root array\n\t\tconst keys = [];\n\n\t\twhile (stack.length > 0) {\n\t\t\tconst current = stack.pop(); // Pop the top item from the stack\n\t\t\tkeys.push(current?.key); // Add the key to the result array\n\n\t\t\t// If the current item has children, push them onto the stack\n\t\t\tif (current?.children && current.children.length > 0) {\n\t\t\t\tstack.push(...current.children);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-ignore\n\t\treturn keys;\n\t},\n\n\t/**\n\t * Gets keys of all rows in the original order\n\t * @param {Array<Row>} rows\n\t * @returns {Array<string>} keys - return array of strings comprising of row keys.\n\t */\n\n\tgetAllKeysInOrder(rows) {\n\t\t/**\n\t\t * @type {Array<string>}\n\t\t */\n\t\tlet result = [];\n\t\trows.forEach((row) => {\n\t\t\tresult.push(row.key);\n\t\t\tif (row?.children && row?.children.length > 0) {\n\t\t\t\tresult = result.concat(this.getAllKeysInOrder(row.children)); // Recursively collect children\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t},\n\n\t/**\n\t * Selector for getting children for a row\n\t * @param {Row} row\n\t *\n\t * @returns {Array<Row>} returns array of rows under a row\n\t */\n\tgetChildren: getOr([], 'children'),\n\n\t/**\n\t * Selector for checking if a row has children\n\t * @param {Row} row\n\t *\n\t * @returns {boolean} returns true if row has children\n\t */\n\thasChildren: (row) => has(row, 'children'),\n\n\t/**\n\t * Selector for checking if a row is grouped or if it has children, to determine whether a toggle should be rendered\n\t * @param {Row} row\n\t *\n\t * @returns {boolean} returns true if row is grouped\n\t */\n\tisGroupedRowOrDefaultRowWithChildren: (row) => {\n\t\tconst rowType = get(row, 'type', ROW_TYPE_DEFAULT);\n\t\treturn (\n\t\t\trowType === ROW_TYPE_GROUPED ||\n\t\t\t(rowType === ROW_TYPE_DEFAULT && rowSelectors.hasChildren(row))\n\t\t);\n\t},\n\n\t/**\n\t * Selector for checking if a row is of type parent child group\n\t * @param {Row} row\n\t *\n\t * @returns {boolean} returns true if row is of type parent child group\n\t */\n\tisDefaultRowWithChildren: (row) =>\n\t\tget(row, 'type', ROW_TYPE_DEFAULT) === 'default' &&\n\t\trowSelectors.hasChildren(row),\n\n\t/**\n\t * Selector for checking if rowDefinitions object has rows of type default and has children\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {boolean} returns true if parent child grouped rows are present\n\t */\n\thasDefaultRowsWithChildren: function (rowDefinitions) {\n\t\tconst rows = this.getRows(rowDefinitions);\n\t\treturn some(\n\t\t\trows,\n\t\t\t(/** @type {Row} */ row) =>\n\t\t\t\tget(row, 'type', ROW_TYPE_DEFAULT) === 'default' &&\n\t\t\t\thas(row, 'children')\n\t\t);\n\t},\n\n\t/**\n\t * Selector for checking if rowDefinitions object has rows of type grouped\n\t * @param {RowDefinitions} rowDefinitions\n\t *\n\t * @returns {boolean} returns true if grouped rows are present\n\t */\n\thasGroupedRows: (rowDefinitions) => {\n\t\tconst rows = get(rowDefinitions, 'rows');\n\t\treturn some(rows, { type: ROW_TYPE_GROUPED });\n\t},\n\n\t/**\n\t * Selector for checking if a row is of type grouped\n\t * @param {Row} row\n\t *\n\t * @returns {boolean} returns true if row is of type grouped\n\t */\n\tisGroupedRow: (row) => row.type === ROW_TYPE_GROUPED,\n\n\t/**\n\t * Selector for checking if a row is of type custom\n\t * @param {Row} row\n\t *\n\t * @returns {boolean} returns true if row is of type custom\n\t */\n\tisCustomRow: (row) => row.type === ROW_TYPE_CUSTOM,\n\n\t/**\n\t * Selector for getting label for a row of type grouped\n\t * @param {Row} row\n\t *\n\t * @returns {string} returns group category label\n\t */\n\tgetGroupedRowLabel: fpGet('groupedRowLabel'),\n\n\t/**\n\t * Selector for getting count for a grouped row\n\t * @param {Row} row\n\t *\n\t * @returns {number} returns group category count\n\t */\n\tgetGroupedRowCount: fpGet('groupedRowCount'),\n\n\t/**\n\t * Selector for getting actions for a row of type grouped\n\t * @param {Row} row\n\t *\n\t * @returns {Array<GroupActionItem>} returns array of row group actions\n\t */\n\tgetGroupActions: getOr([], 'groupActions'),\n\n\t/**\n\t * Selector for getting actions for a row of type grouped\n\t * @param {Array<GroupActionItem>} groupActions\n\t *\n\t * @returns {String | undefined} returns group link\n\t */\n\tgetGroupRowHref: (groupActions = []) => groupActions?.[0]?.groupRowHref,\n\n\t/**\n\t * Selector for getting a custom row's component tag\n\t * @param {object} row\n\t *\n\t * @returns {string}\n\t */\n\tgetCustomRowComponentTag: fpGet('componentTag'),\n\n\t/**\n\t * Selector for getting a custom row's component properties\n\t * @param {object} row\n\t *\n\t * @returns {string}\n\t */\n\tgetCustomRowComponentProps: fpGet('componentProps'),\n\n\t/**\n\t * Selector for getting a custom row's content dimensions\n\t * @param {object} row\n\t *\n\t * @returns {string}\n\t */\n\tgetCustomRowContentDimensions: fpGet('rowContentDimensions'),\n\t/**\n\t * Selector for getting a custom row's content alignment\n\t * @param {object} row\n\t *\n\t * @returns {string}\n\t */\n\tgetCustomRowContentAlignment: fpGet('contentAlignment'),\n\n\t/**\n\t * Selector for getting a custom row's placeholder dimensions\n\t * @param {object} row\n\t *\n\t * @returns {string}\n\t */\n\tgetCustomRowPlaceholderDimensions: fpGet('placeholderDimensions'),\n\n\t/**\n\t * Selector for getting a custom row's show row-controls property\n\t * @param {object} row\n\t *\n\t * @returns {boolean}\n\t */\n\tgetShowRowControlsForCustomRow: (row) => get(row, 'showRowControls', false),\n\n\t/**\n\t * Return all rows of type custom\n\t * @param {Array<Row>} rows\n\t *\n\t * @return {Array<Row>} customRows\n\t */\n\tgetRowsOfCustomType: (rows) => {\n\t\tif (isEmpty(rows)) return [];\n\t\tconst customRows = [];\n\t\tconst stack = [...rows];\n\n\t\twhile (stack.length > 0) {\n\t\t\tconst row = stack.pop(); // Get the last item from the stack\n\n\t\t\t// Check if the current item is of type 'custom'\n\t\t\tif (row?.type === 'custom') {\n\t\t\t\tcustomRows.push(row);\n\t\t\t}\n\n\t\t\t// Add children to stack if they exist\n\t\t\tif (row?.children && row.children.length > 0) {\n\t\t\t\tstack.push(...row.children);\n\t\t\t}\n\t\t}\n\n\t\treturn customRows;\n\t},\n\n\t/**\n\t * Change isGroupExpanded of all children to be same as parent when parent isGroupExpanded is set to false\n\t * @param {Array<Row> | undefined} rows\n\t * @param {object} rowGroupingState\n\t * @param {Row | undefined} parent\n\t */\n\tcreateStateOnBootstrapForExpandedChildren: (\n\t\trows,\n\t\trowGroupingState,\n\t\tparent\n\t) => {\n\t\tif (!rows || isEmpty(rows)) {\n\t\t\treturn;\n\t\t}\n\t\tlet parentKey = '';\n\t\tlet isGroupExpandedForParent = true;\n\t\tif (parent) {\n\t\t\tparentKey = parent.key ? parent.key : '';\n\t\t\tisGroupExpandedForParent = !!parent.isGroupExpanded;\n\t\t}\n\n\t\tconst expandedChildrenObject = get(\n\t\t\trowGroupingState,\n\t\t\t'expandedChildrenObject',\n\t\t\t{}\n\t\t);\n\t\trows.forEach((element) => {\n\t\t\tif (\n\t\t\t\telement.isGroupExpanded &&\n\t\t\t\t!isGroupExpandedForParent &&\n\t\t\t\tparentKey\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\texpandedChildrenObject &&\n\t\t\t\t\t!has(expandedChildrenObject, parentKey)\n\t\t\t\t) {\n\t\t\t\t\texpandedChildrenObject[parentKey] = [];\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tisArray(expandedChildrenObject[parentKey]) &&\n\t\t\t\t\t!includes(expandedChildrenObject[parentKey], element.key)\n\t\t\t\t) {\n\t\t\t\t\texpandedChildrenObject[parentKey].push(element.key);\n\t\t\t\t}\n\t\t\t\telement.isGroupExpanded = false;\n\t\t\t}\n\n\t\t\tif (rowSelectors.hasChildren(element)) {\n\t\t\t\trowSelectors.createStateOnBootstrapForExpandedChildren(\n\t\t\t\t\telement.children,\n\t\t\t\t\trowGroupingState,\n\t\t\t\t\telement\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t},\n};\n\nexport default rowSelectors;\n","import { endsWith, filter, find, get, has, isEmpty } from 'lodash';\nimport {\n\tget as fpGet,\n\thas as fpHas,\n\tgetOr as fpGetOr,\n\tmemoize,\n} from 'lodash/fp';\nimport { t } from 'sn-translate';\nimport { getUserPrefContext } from 'sn-ux-core';\n\nimport { NUMBER_DEFAULT_LOCALE } from '../../views/fields/number/constants';\nimport {\n\tBOOLEAN_FILTER_OPERATORS,\n\tDATE_TIME_FILTER_OPERATORS,\n\tGENERIC_FILTER_OPERATORS,\n\tNUMBER_FILTER_OPERATORS,\n} from '../../views/table/tableHeaders/columnFilteringCell/columnFilteringConsts';\nimport logger from '../logger';\n\nimport featureFlagSelectors from './featureFlagSelectors';\nimport rowSelectors from './rowSelectors';\n\nconst {\n\tTEXT_ALIGNMENT_DEFAULT,\n} = require('../../../typeSchemas/columnDefinitions/alignmentTypes/alignmentTypes');\nconst {\n\tTYPE_CURRENCY,\n\tTYPE_DATE_TIME,\n\tTYPE_NUMBER,\n\tTYPE_PERSON,\n\tTYPE_STRING,\n\tTYPE_URL,\n\tSPECIAL_TYPE_GROUP_BADGE,\n\tSPECIAL_TYPE_GROUP_TOGGLE,\n\tSPECIAL_TYPE_PARENT_BADGE,\n\tSPECIAL_TYPE_PARENT_TOGGLE,\n\tSPECIAL_TYPE_ACTIONS,\n\tSPECIAL_TYPE_SELECTION,\n\tSPECIAL_TYPE_ROW_DRAG_HANDLE,\n\tTYPE_CHOICE,\n\tTYPE_BOOLEAN,\n\tTYPE_PILLS,\n\tTYPE_PERCENT_COMPLETE,\n\tTYPE_LINK,\n} = require('../../../typeSchemas/columnDefinitions/columnTypes/columnTypes');\nconst {\n\tSORT_NONE,\n} = require('../../../typeSchemas/columnDefinitions/sortTypes/sortTypes');\nconst {\n\tCURRENCY_DEFAULT,\n\tCURRENCY_LOCALE_DEFAULT,\n} = require('../../views/fields/currency/currencyConstants');\nconst {\n\tDATE_TIME_FORMAT_DEFAULT,\n\tDATE_TIME_AGO_FORMAT,\n\tTIME_AGO_DISPLAY_NONE,\n\tTIME_AGO_DISPLAY_UNDER_MAIN_VALUE,\n\tTIME_AGO_DISPLAY_AS_MAIN_VALUE,\n\tSECONDS_FORMAT,\n\tSECONDS_FORMAT_WITH_DOTS,\n} = require('../../views/fields/dateTime/constants');\nconst {\n\tNUMBER_FORMAT_INTEGER,\n\tDECIMAL_PLACES_DEFAULT,\n} = require('../../views/fields/number/constants');\nconst { OPENS_IN_NEW_DEFAULT } = require('../../views/fields/url/urlConstants');\nconst {\n\tPERSON_DISPLAY_TYPE_DEFAULT,\n} = require('../../views/table/tableBody/tableRow/rowCell/personCellType/personCellConstants');\nconst {\n\tMAX_PILL_LIMIT_DEFAULT,\n} = require('../../views/table/tableBody/tableRow/rowCell/pillsCellType/pillsCellConstants');\nconst {\n\tMAX_CHARACTERS_DEFAULT,\n} = require('../../views/table/tableBody/tableRow/rowCell/rowCellConstants');\n\nconst dateTimeFormatPrefKey = getUserPrefContext(DATE_TIME_AGO_FORMAT);\n\nconst columnSelectors = {\n\t/* MULTIPLE COLUMNS SELECTORS */\n\n\t/**\n\t * Selector for getting columns from columnDefinitions object\n\t * @param {object} columnDefinitions\n\t *\n\t * @returns {array} columns field of column definitions object\n\t */\n\tgetColumns: fpGet('columns'),\n\n\t/**\n\t * Check to see if columnDefinitions has at least one column\n\t * @param {ColumnDefinitions} columnDefinitions\n\t *\n\t * @returns {boolean}\n\t */\n\thasColumns: (columnDefinitions) => {\n\t\treturn !isEmpty(get(columnDefinitions, 'columns'));\n\t},\n\n\t/**\n\t * Some properties in rowDefinitions and options determine whether certain columns should be rendered.\n\t * This selector returns whether any of those properties are configured to render those columns\n\t * @param {RowDefinitions} rowDefinitions\n\t * @param {object} featureFlags\n\t * @param {boolean | undefined} featureFlags.virtualizedScrollEnabled\n\t *\n\t * @returns {boolean} rows field of row definitions object\n\t */\n\twillHaveSpecialColumns: function (rowDefinitions, featureFlags) {\n\t\treturn (\n\t\t\trowSelectors.hasRowActionsWithItems(rowDefinitions) ||\n\t\t\trowSelectors.hasGroupedOrDefaultRowsWithChildren(rowDefinitions) ||\n\t\t\tfeatureFlagSelectors.getSelectionEnabled(featureFlags) ||\n\t\t\tfeatureFlagSelectors.getRowDragDropEnabled(featureFlags) ||\n\t\t\tfeatureFlagSelectors.getColumnFilteringEnabled(featureFlags)\n\t\t);\n\t},\n\n\t/**\n\t * Util to count how many special columns are present on the list\n\t * @param {ProcessedColumnDefinitions} processedColumnDefinitions\n\t * @returns\n\t */\n\tgetSpecialColumnsCount: function (processedColumnDefinitions) {\n\t\tconst {\n\t\t\tprocessedColumnDefinitions: { columns },\n\t\t} = processedColumnDefinitions;\n\n\t\tconst specialColumns = filter(columns, (\n\t\t\t/** @type {ProcessedColumn} */ column\n\t\t) => columnSelectors.isSpecialColumn(column));\n\n\t\treturn specialColumns.length;\n\t},\n\n\t/**\n\t * Selector for finding a column given its key\n\t * @param {ProcessedColumnDefinitions} columnDefinitions - parsed columnDefinitions object\n\t * @param {string} columnKey - string identifier for column\n\t *\n\t * @returns {ProcessedColumn} column\n\t */\n\tgetColumnFromProcessedCols: (columnDefinitions, columnKey) => {\n\t\tconst { columnMap, processedColumnDefinitions } = columnDefinitions;\n\t\tconst path = columnMap[columnKey] || '';\n\t\treturn get(processedColumnDefinitions, path);\n\t},\n\n\t/**\n\t * Selector for getting the column filtering information\n\t * @param {ProcessedColumnDefinitions} columnDefinitions - parsed columnDefinitions object\n\t *\n\t * @returns {string} value of columnFilteringInfo property\n\t */\n\tgetColumnFilteringInfo: (columnDefinitions) => {\n\t\tconst { processedColumnDefinitions } = columnDefinitions;\n\t\treturn get(processedColumnDefinitions, 'columnFilteringInfo');\n\t},\n\n\t/**\n\t * Selector for getting the column header text tooltip\n\t * @param {ProcessedColumnDefinitions} columnDefinitions - parsed columnDefinitions object\n\t *\n\t * @returns {string} value of columnHeaderTextTooltip property\n\t */\n\tgetHeaderTextTooltip: (columnDefinitions) => {\n\t\tconst { processedColumnDefinitions } = columnDefinitions;\n\t\treturn get(processedColumnDefinitions, 'columnHeaderTextTooltip');\n\t},\n\n\t/**\n\t * Selector for whether this col has emitted actions of the provided custom component\n\t * @param {ColumnDefinitions} columnDefinitions\n\t *\n\t * @returns {boolean}\n\t */\n\thasColumnFilterCustomValueEditorEmittedActions: (columnDefinitions) =>\n\t\thas(columnDefinitions, 'columnFilterCustomValueEditorEmittedActions'),\n\n\t/**\n\t * Selector for emitted actions of the provided custom component\n\t * @param {object} columnDefinitions\n\t *\n\t * @returns {Array<string> | undefined}\n\t */\n\tgetColumnFilterCustomValueEditorEmittedActions: (columnDefinitions) =>\n\t\tget(columnDefinitions, 'columnFilterCustomValueEditorEmittedActions'),\n\n\t/* INDIVIDUAL COLUMN SELECTORS */\n\n\t/**\n\t * Selector for finding a column header actions given its column key\n\t * @param {ProcessedColumnDefinitions} columnDefinitions - parsed columnDefinitions object\n\t * @param {ProcessedColumn} column - processed column\n\t *\n\t * @returns {Array<ColumnHeaderActionItem>} column header actions\n\t */\n\tgetColumnHeaderActionsFromProcessedCols: (columnDefinitions, column) => {\n\t\tconst columnKey = columnSelectors.getColumnKey(column);\n\t\tconst processedColumn = columnSelectors.getColumnFromProcessedCols(\n\t\t\tcolumnDefinitions,\n\t\t\tcolumnKey\n\t\t);\n\n\t\tif (has(processedColumn, 'children')) return []; // parent columns cannot have actions\n\n\t\treturn get(processedColumn, 'columnHeaderActions', []);\n\t},\n\n\t/**\n\t * Util to check if reordering enabled\n\t * @param {object} featureFlags\n\t * @param {ProcessedColumn} column\n\t * @returns boolean\n\t */\n\tisReorderingPossibleOnColumn: function (featureFlags, column) {\n\t\treturn (\n\t\t\t// getColumnDragDropEnabled returns undefined if the feature flag is not present, which will cause this to return undefined\n\t\t\tfeatureFlagSelectors.getColumnDragDropEnabled(featureFlags) ===\n\t\t\t\ttrue &&\n\t\t\t!columnSelectors.isSpecialColumn(column) &&\n\t\t\tcolumnSelectors.getColumnLevel(column) === 1 // only top level columns can be re-ordered for now\n\t\t);\n\t},\n\n\t/**\n\t * Util to check if column is a special type column\n\t * @param {ColumnBase} column\n\t * @returns\n\t */\n\tisSpecialColumn: function (column) {\n\t\treturn get(column, 'isSpecialColumn', false);\n\t},\n\n\t/**\n\t * Util to check if columnKey is of special type\n\t * @param {string} columnKey\n\t * @returns\n\t */\n\tisSpecialColumnKey: function (columnKey) {\n\t\treturn (\n\t\t\tcolumnKey === SPECIAL_TYPE_ACTIONS ||\n\t\t\tcolumnKey === SPECIAL_TYPE_SELECTION ||\n\t\t\tcolumnKey === SPECIAL_TYPE_GROUP_BADGE ||\n\t\t\tcolumnKey === SPECIAL_TYPE_GROUP_TOGGLE ||\n\t\t\tcolumnKey === SPECIAL_TYPE_ROW_DRAG_HANDLE ||\n\t\t\tcolumnKey === SPECIAL_TYPE_PARENT_BADGE ||\n\t\t\tcolumnKey === SPECIAL_TYPE_PARENT_TOGGLE\n\t\t);\n\t},\n\n\t/**\n\t * Selector for getting children from a column object\n\t * @param {ProcessedColumn} column\n\t *\n\t * @returns {ProcessedColumn[]} children columns\n\t */\n\tgetChildren: fpGetOr([], 'children'),\n\n\t/**\n\t * Selector for getting column count at a given level\n\t * @param {ProcessedColumnDefinitions} columnDefinitions\n\t * @param {number} level\n\t * @returns {number} count of columns at the given level\n\t */\n\tgetTotalColumnsAtLevel: (columnDefinitions, level = 1) => {\n\t\treturn columnSelectors\n\t\t\t.getColumns(columnDefinitions.processedColumnDefinitions)\n\t\t\t.filter(\n\t\t\t\t(/** @type {ProcessedColumn} */ col) =>\n\t\t\t\t\tcol._level === level &&\n\t\t\t\t\t!columnSelectors.isSpecialColumn(col)\n\t\t\t).length;\n\t},\n\n\t/**\n\t * Selector for finding the offset position for the starting of actual data columns.\n\t * i.e excluding the indices of the special columns at the begining\n\t * E.g:\n\t * - If we have only Row selection on left, offset position will be 1\n\t * - If we have row selection and groupby columns on the left, position will be 2\n\t *\n\t * @param {ProcessedColumnDefinitions} columnDefinitions - parsed columnDefinitions object\n\t *\n\t * @returns {number} index position where the actual columns started\n\t */\n\tgetDataColumnsOffsetPosition: (columnDefinitions) => {\n\t\tconst allColumns = columnSelectors.getColumns(\n\t\t\tcolumnDefinitions.processedColumnDefinitions\n\t\t);\n\t\tfor (let i = 0; i < allColumns.length; i++) {\n\t\t\t// return the index of first found data column\n\t\t\tif (!columnSelectors.isSpecialColumn(allColumns[i])) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t},\n\n\t/**\n\t * Selector for finding a cell actions given its column key\n\t * @param {ProcessedColumnDefinitions} columnDefinitions - parsed columnDefinitions object\n\t *  @param {ProcessedColumn} column - processed column\n\t *\n\t * @returns {Array<CellActionItem>} column\n\t */\n\tgetCellActionsFromProcessedCols: (columnDefinitions, column) => {\n\t\tconst columnKey = columnSelectors.getColumnKey(column);\n\t\tconst processedColumn = columnSelectors.getColumnFromProcessedCols(\n\t\t\tcolumnDefinitions,\n\t\t\tcolumnKey\n\t\t);\n\n\t\tif (has(processedColumn, 'children')) return []; // parent columns cannot have actions\n\n\t\treturn get(processedColumn, 'cellActions', []);\n\t},\n\n\t/**\n\t * Selector for getting column header icons. Maximum of 3 icons\n\t * @param {object} column\n\t */\n\tgetIcons: (column) => {\n\t\tconst icons = get(column, 'icons', {});\n\t\treturn {\n\t\t\tstartIcons: get(icons, 'startIcons', []).slice(0, 3),\n\t\t\tendIcons: get(icons, 'endIcons', []).slice(0, 3),\n\t\t};\n\t},\n\n\t/**\n\t * Selector for getting a column's sort direction to be used for aria-sort\n\t * @param {object} column\n\t *\n\t * @returns {string}\n\t */\n\tgetColumnSortDirection: fpGetOr(SORT_NONE, 'sortDirection'),\n\n\t/**\n\t * Selector for getting key from column object\n\t * @param {object} column\n\t *\n\t * @returns {string} key representing the unique id of the column. Used to reference column information on the row level\n\t */\n\tgetColumnKey: fpGet('key'),\n\n\t/**\n\t * updateState does not work as expected when we have dot walked columns, as the path also contains dots\n\t * @param {object} column\n\t * @returns {string} key representing the unique id of the column. used for storing in state\n\t */\n\tgetFormattedColumnKey: (column) => {\n\t\tconst key = get(column, 'key');\n\t\treturn key?.replaceAll('.', '_##_');\n\t},\n\t/**\n\t * Selector for getting the label of a column\n\t * @param {object} column\n\t * @returns {string}\n\t */\n\tgetColumnLabel: (column) => {\n\t\tconst columnLabel = fpGet('label', column) || '';\n\t\tconst UPDATED = 'Updated';\n\t\treturn columnLabel !== UPDATED\n\t\t\t? t(columnLabel)\n\t\t\t: t({ code: 'now_list', message: 'Updated' }, 't');\n\t},\n\n\t/**\n\t * Selector for getting column type\n\t * @param {object} column\n\t *\n\t * @returns {string} name of type\n\t */\n\tgetColumnType: (column) => {\n\t\tconst type = get(column, 'type');\n\t\treturn type ? type : TYPE_STRING;\n\t},\n\n\t/**\n\t * Selector for getting column alignment\n\t * @param {object} column\n\t *\n\t * @returns {string} alignment type\n\t */\n\tgetColumnAlignment: function (column) {\n\t\treturn get(column, 'alignment', TEXT_ALIGNMENT_DEFAULT);\n\t},\n\n\t/**\n\t * Selector for getting max characters for truncation\n\t * @param {object} column\n\t *\n\t * @returns {Number} max characters\n\t */\n\tgetMaxCharacters: function (column) {\n\t\t// adding 3 to account for the ellipsis, so the ellipsis starts after maxCharacters\n\t\treturn get(column, 'maxCharacters', MAX_CHARACTERS_DEFAULT) + 3;\n\t},\n\n\t/**\n\t * Selector for checking if maxCharacters are defined in a column\n\t * @param {object} column\n\t *\n\t * @returns {boolean} true if maxCharacters are defined\n\t */\n\thasMaxCharacters: (column) => {\n\t\tconst maxCharacters = get(column, 'maxCharacters');\n\t\treturn (\n\t\t\tmaxCharacters !== undefined &&\n\t\t\tmaxCharacters !== null &&\n\t\t\tmaxCharacters !== ''\n\t\t);\n\t},\n\n\t/**\n\t * Selector for getting width in px\n\t * @param {object} column\n\t *\n\t * @returns {String} width\n\t */\n\tgetWidth: function (column) {\n\t\treturn get(column, 'width', undefined);\n\t},\n\n\t/**\n\t * Selector for getting column header cell alignment. Will use column alignment as default\n\t * @param {object} column\n\t *\n\t * @returns {string} alignment type\n\t */\n\tgetHeaderCellAlignment: function (column) {\n\t\tconst alignment = this.getColumnAlignment(column);\n\t\treturn get(column, 'headerCellAlignment', alignment);\n\t},\n\n\t/**\n\t * Checks for nested columns\n\t * @param {object} column\n\t *\n\t * @returns {boolean}\n\t */\n\thasChildren: fpHas('children'),\n\n\t/**\n\t * Checks for column header actions\n\t * @param {object} column\n\t *\n\t * @returns {boolean}\n\t */\n\thasColumnHeaderActions: (column) => {\n\t\tif (has(column, 'children')) return false; // parent columns cannot have actions\n\n\t\treturn !isEmpty(get(column, 'columnHeaderActions'));\n\t},\n\n\t/**\n\t * Checks for cell actions\n\t * @param {object} column\n\t *\n\t * @returns {boolean}\n\t */\n\thasCellActions: (column) => {\n\t\tif (has(column, 'children')) return false; // parent columns cannot have actions\n\n\t\treturn !isEmpty(get(column, 'cellActions'));\n\t},\n\n\t/**\n\t * Selector for headerTextDisabled property\n\t * @param {object} column\n\t *\n\t * @returns {boolean} value of headerTextDisabled property\n\t */\n\tgetHeaderTextDisabled: (column) => get(column, 'headerTextDisabled', false),\n\n\t/**\n\t * Selector for cellEditingDisabled property\n\t * @param {object} column\n\t *\n\t * @returns {boolean} value of cellEditingDisabled property\n\t */\n\tgetCellEditingDisabled: (column) =>\n\t\tget(column, 'cellEditingDisabled', false),\n\n\t/**\n\t * Selector for columnFilterConfig customTopText property\n\t * @param {object} column\n\t *\n\t * @returns {string} String message to display\n\t */\n\tgetColumnFilterCustomTopText: (column) =>\n\t\tget(column, 'columnFilterConfig.customTopText'),\n\n\t/**\n\t * Getter that gets the column filter operators for a given column if provided, and gets the proper typed default operators if not\n\t * @param {object} column\n\t *\n\t * @returns {ColumnFilterConfig[\"operators\"]} Object representing the operators to be rendered in a dropdown\n\t */\n\tgetOperators: (column) => {\n\t\tconst type = get(column, 'type');\n\t\tconst operatorsFromProps = get(column, 'columnFilterConfig.operators');\n\n\t\tif (operatorsFromProps !== undefined && isEmpty(operatorsFromProps)) {\n\t\t\t// override to hide operators\n\t\t\treturn null;\n\t\t} else if (!isEmpty(operatorsFromProps)) {\n\t\t\treturn operatorsFromProps;\n\t\t} else {\n\t\t\t// no operators specified in props\n\t\t\tswitch (type) {\n\t\t\t\tcase TYPE_NUMBER:\n\t\t\t\t\treturn NUMBER_FILTER_OPERATORS;\n\t\t\t\tcase TYPE_BOOLEAN:\n\t\t\t\t\treturn BOOLEAN_FILTER_OPERATORS;\n\t\t\t\tcase TYPE_DATE_TIME:\n\t\t\t\t\treturn DATE_TIME_FILTER_OPERATORS;\n\t\t\t\tcase TYPE_PILLS:\n\t\t\t\t\treturn null;\n\t\t\t\tcase TYPE_CHOICE:\n\t\t\t\t\treturn null;\n\t\t\t\tdefault:\n\t\t\t\t\treturn GENERIC_FILTER_OPERATORS;\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Getter for the selected operator that handles typed defaults and ensures the provided selectedOperator is present in the operators array\n\t *\n\t * @param {object} column\n\t *\n\t * @returns {string | null} id of an operator, or undefined representing nothing is selected when operators are hidden\n\t */\n\tgetSelectedOperator: (column) =>\n\t\tget(column, 'columnFilterConfig.selectedOperator', null),\n\n\t/**\n\t * Returns the label for the operator id\n\t * @param {string | null} selectedOperator\n\t * @param {*} operators\n\t * @returns {string | null}\n\t */\n\tgetSelectedOperatorValue: (selectedOperator, operators) => {\n\t\tconst operatorValue = operators?.find((\n\t\t\t/** @type {{ id: string; label: string; }} */ item\n\t\t) => {\n\t\t\treturn item.id === selectedOperator;\n\t\t});\n\t\treturn operatorValue?.label;\n\t},\n\t/**\n\t * Selector for columnFilterConfig value property\n\t * @param {object} column\n\t *\n\t * @returns {SingleColumnFilteringState[\"value\"]}\n\t */\n\tgetColumnFilterValue: (column) =>\n\t\tget(column, 'columnFilterConfig.value', null),\n\n\t/**\n\t * Selector for columnFilterConfig custom component tag property\n\t * @param {object} column\n\t */\n\tgetColumnFilterValueEditorCustomComponentTag: (column) =>\n\t\tget(column, 'columnFilterConfig.valueEditorCustomComponentTag'),\n\n\t/**\n\t * Selector for props of the provided custom component\n\t * @param {object} column\n\t */\n\tgetColumnFilterValueEditorCustomComponentDefaultProps: (column) =>\n\t\tget(\n\t\t\tcolumn,\n\t\t\t'columnFilterConfig.valueEditorCustomComponentDefaultProps'\n\t\t),\n\n\t/* TYPE-SPECIFIC COLUMN SELECTORS */\n\n\t/* NUMBER COLUMN SELECTORS */\n\n\t/**\n\t * Gets the format of numbers in this column\n\t * @param {object} column\n\t *\n\t * @returns {(string | undefined)}\n\t */\n\tgetNumberFormat: (column) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_NUMBER && type !== TYPE_PERCENT_COMPLETE) {\n\t\t\tlogger.warning(\n\t\t\t\t'getNumberFormat(), a method specific to number typed columns, was called on a non-number type'\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\treturn get(column, 'numberFormat') || NUMBER_FORMAT_INTEGER;\n\t},\n\n\t/**\n\t * Gets the number of post-decimal-point digits that will be displayed in this column\n\t * @param {object} column\n\t *\n\t * @returns {(number | undefined)}\n\t */\n\tgetDecimalPlaces: (column) => {\n\t\tconst type = get(column, 'type');\n\t\tconst numberFormat = get(column, 'numberFormat');\n\t\tlet decimalPlaces = get(column, 'decimalPlaces');\n\n\t\tif (type !== TYPE_NUMBER && type !== TYPE_PERCENT_COMPLETE) {\n\t\t\tlogger.warning(\n\t\t\t\t'getDecimalPlaces(), a method specific to number typed columns, was called on a non-number type'\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!numberFormat || numberFormat === NUMBER_FORMAT_INTEGER) {\n\t\t\tdecimalPlaces = 0; // ints always have 0 decimal places\n\t\t} else if (!decimalPlaces) {\n\t\t\tdecimalPlaces = DECIMAL_PLACES_DEFAULT;\n\t\t}\n\n\t\treturn decimalPlaces;\n\t},\n\n\t/**\n\t * Selector for getting locale\n\t * @param {object} column\n\t *\n\t * @returns {string}\n\t */\n\tgetNumberLocale: (column) => {\n\t\treturn get(column, 'locale') || window?.navigator?.language || 'en-US';\n\t},\n\n\t/**\n\t * Util to validate the locale string\n\t * @param {string} locale\n\t * @returns {boolean}\n\t */\n\tisValidLocale: (locale) => {\n\t\tlet length;\n\t\ttry {\n\t\t\tlength = Intl.NumberFormat.supportedLocalesOf([locale]).length;\n\t\t} catch (err) {\n\t\t\treturn false;\n\t\t}\n\t\treturn length > 0;\n\t},\n\n\t/**\n\t * util to check if cell content label is hyperlink\n\t * @param {ProcessedColumn} column\n\t * @returns {boolean}\n\t */\n\trenderAsLink: (column) => {\n\t\treturn column?.renderAsLink || false;\n\t},\n\n\t/**\n\t * Gets the NumberFormat object for formatting NumberCell value\n\t */\n\tgetNumberFormatter: memoize((/** @type {string} */ locale) => {\n\t\treturn new Intl.NumberFormat(\n\t\t\tcolumnSelectors.isValidLocale(locale)\n\t\t\t\t? locale\n\t\t\t\t: NUMBER_DEFAULT_LOCALE,\n\t\t\t{\n\t\t\t\tmaximumFractionDigits: 20,\n\t\t\t}\n\t\t);\n\t}),\n\n\t/* DATE/TIME COLUMN SELECTORS */\n\n\t/**\n\t * Gets operator object from columnFilterConfig\n\t * @param {object} column\n\t * @param {string | null} operator operator to be found\n\t *\n\t * @returns {any} returns requested operator object\n\t */\n\tgetOperatorFromColumnFilterConfig: (column, operator) => {\n\t\tconst type = get(column, 'type');\n\t\tif (type !== TYPE_DATE_TIME) {\n\t\t\tlogger.warning(\n\t\t\t\t'getOperatorFromColumnFilterConfig(), a method specific to date/time typed columns, was called on a non-date/time type'\n\t\t\t);\n\t\t}\n\t\tconst operators = get(column, 'columnFilterConfig.operators', []);\n\t\tconst operatorObj = find(operators, { id: operator });\n\t\treturn operatorObj;\n\t},\n\n\t/**\n\t * Gets the format of datetimes in this column\n\t * @param {object} column\n\t *\n\t * @returns {string}\n\t */\n\tgetDateTimeFormat: (column) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_DATE_TIME) {\n\t\t\tlogger.warning(\n\t\t\t\t'getDateTimeFormat(), a method specific to date/time typed columns, was called on a non-date/time type'\n\t\t\t);\n\t\t}\n\n\t\treturn get(column, 'dateTimeFormat') || DATE_TIME_FORMAT_DEFAULT;\n\t},\n\n\t/**\n\t * Gets the time zone of datetimes in this column\n\t * @param {object} column\n\t *\n\t * @returns {string}\n\t */\n\tgetTimeZone: (column) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_DATE_TIME) {\n\t\t\tlogger.warning(\n\t\t\t\t'getTimeZone(), a method specific to date/time typed columns, was called on a non-date/time type'\n\t\t\t);\n\t\t}\n\n\t\tconst timeZone = get(column, 'timeZone');\n\n\t\tif (timeZone) {\n\t\t\ttry {\n\t\t\t\tIntl.DateTimeFormat(undefined, { timeZone: timeZone });\n\t\t\t\treturn timeZone;\n\t\t\t} catch (error) {\n\t\t\t\tlogger.warning(\n\t\t\t\t\t'Invalid timezone format detected. Please input a correct IANA timezone format.'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn Intl.DateTimeFormat().resolvedOptions().timeZone; // default to local timezone\n\t},\n\n\t/**\n\t * Gets the time ago display in this column\n\t * @param {object} column\n\t * @param {object} contextApi\n\t * @returns {string}\n\t */\n\tgetTimeAgoDisplay: (column, contextApi) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_DATE_TIME) {\n\t\t\tlogger.warning(\n\t\t\t\t'getTimeAgoDisplay(), a method specific to date/time typed columns, was called on a non-date/time type'\n\t\t\t);\n\t\t}\n\n\t\tlet timeAgoDisplay = get(\n\t\t\tcolumn,\n\t\t\t'timeAgoDisplay',\n\t\t\tTIME_AGO_DISPLAY_NONE\n\t\t);\n\t\t// First we check if timeAgoDisplay is set as a prop on now-list, if yes we take it.\n\t\t// If not, we check for user preference and set value based on it. If user preference doesn't exist we default to none.\n\t\tif (timeAgoDisplay == TIME_AGO_DISPLAY_NONE) {\n\t\t\tconst dateTimeFormatPrefValue = get(\n\t\t\t\tcontextApi,\n\t\t\t\tdateTimeFormatPrefKey\n\t\t\t);\n\t\t\tif (dateTimeFormatPrefValue) {\n\t\t\t\tlet dateFormatUserPrefValues;\n\n\t\t\t\ttry {\n\t\t\t\t\tdateFormatUserPrefValues = JSON.parse(\n\t\t\t\t\t\tdateTimeFormatPrefValue\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t'Error parsing user preference for date time format'\n\t\t\t\t\t);\n\t\t\t\t\tdateFormatUserPrefValues = TIME_AGO_DISPLAY_NONE;\n\t\t\t\t}\n\t\t\t\tconst showTimeAgo = dateFormatUserPrefValues['timeAgo'];\n\t\t\t\tconst showDateAndTimeAgo = dateFormatUserPrefValues['dateBoth'];\n\n\t\t\t\t// show only time ago\n\t\t\t\tif (showTimeAgo)\n\t\t\t\t\ttimeAgoDisplay = TIME_AGO_DISPLAY_AS_MAIN_VALUE;\n\t\t\t\t// show date and time ago\n\t\t\t\telse if (showDateAndTimeAgo)\n\t\t\t\t\ttimeAgoDisplay = TIME_AGO_DISPLAY_UNDER_MAIN_VALUE;\n\t\t\t\t// show none if above conditions fails\n\t\t\t\telse timeAgoDisplay = TIME_AGO_DISPLAY_NONE;\n\t\t\t}\n\t\t}\n\t\treturn timeAgoDisplay;\n\t},\n\n\t/**\n\t * Sets the short date format and returns format\n\t * @param {Date} dateObject\n\t * @param {string} dateTimeFormat\n\t * @returns {string}\n\t */\n\tsetShortDateFormat: (dateObject, dateTimeFormat) => {\n\t\t// if format ends with :ss or .ss, strip off :ss or .ss from date time format\n\t\tif (\n\t\t\tendsWith(dateTimeFormat, SECONDS_FORMAT) ||\n\t\t\tendsWith(dateTimeFormat, SECONDS_FORMAT_WITH_DOTS)\n\t\t) {\n\t\t\tdateTimeFormat = dateTimeFormat.substring(\n\t\t\t\t0,\n\t\t\t\tdateTimeFormat.length - SECONDS_FORMAT.length\n\t\t\t);\n\t\t}\n\t\tconst date = new Date();\n\t\tconst presentYear = date.getFullYear().toString();\n\t\tconst dateObjectYear = dateObject.getFullYear().toString();\n\n\t\t//check if current year is same as from year on date value, if yes we strip it off\n\t\tif (dateObjectYear == presentYear) {\n\t\t\tdateTimeFormat = dateTimeFormat.replace('yyyy-', '');\n\t\t\tdateTimeFormat = dateTimeFormat.replace('/yyyy', '');\n\t\t\tdateTimeFormat = dateTimeFormat.replace('yyyy/', '');\n\t\t\tdateTimeFormat = dateTimeFormat.replace('-yyyy', '');\n\t\t\tdateTimeFormat = dateTimeFormat.replace('.yyyy', '');\n\t\t\tdateTimeFormat = dateTimeFormat.replace('yyyy.', '');\n\t\t}\n\t\treturn dateTimeFormat;\n\t},\n\n\t/**\n\t * Gets first day of the week from the system property\n\t * @param {ColumnBase} column\n\t * @returns {number}\n\t */\n\tgetFirstDayOfWeek: function (column) {\n\t\treturn get(column, 'firstDayOfWeek', 1);\n\t},\n\t/* ACTIONABLE LINKS AND URL COLUMN SELECTORS */\n\n\t/**\n\t * Gets whether links in this column should open in the current tab or in a new tab/window\n\t * @param {object} column\n\t *\n\t * @returns {boolean}\n\t */\n\tgetOpensInNew: (column) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_URL) {\n\t\t\tlogger.warning(\n\t\t\t\t'getOpensInNew(), a method specific to URL typed columns, was called on a non-URL type. Be aware that the link type is different from the URL type.'\n\t\t\t);\n\t\t}\n\n\t\treturn get(column, 'opensInNew', OPENS_IN_NEW_DEFAULT);\n\t},\n\n\t/**\n\t * Gets whether links in this column should be disabled and render as text\n\t * @param {ProcessedColumn} column\n\t *\n\t * @returns {boolean}\n\t */\n\tgetDisabled: (column) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (\n\t\t\t![TYPE_URL, TYPE_LINK, TYPE_PERSON].includes(type) &&\n\t\t\t!column?.renderAsLink\n\t\t) {\n\t\t\tlogger.warning(\n\t\t\t\t'getDisabled(), a method specific to URL, actionable link typed columns, or person columns was called on an inapplicable type.'\n\t\t\t);\n\t\t}\n\n\t\treturn get(column, 'disabled', false);\n\t},\n\n\t/* PERSON COLUMN SELECTORS */\n\n\t/**\n\t * Selector for getting label of person column\n\t * @param {object} column\n\t *\n\t * @returns {string | null}\n\t */\n\tgetDisplay: (column) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_PERSON) {\n\t\t\tlogger.warning(\n\t\t\t\t'getDisplay(), a method specific to person typed columns, was called on a non-person type'\n\t\t\t);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst personDisplay =\n\t\t\tget(column, 'display') ?? PERSON_DISPLAY_TYPE_DEFAULT;\n\n\t\tif (!['name', 'avatar', 'both'].includes(personDisplay)) {\n\t\t\treturn PERSON_DISPLAY_TYPE_DEFAULT;\n\t\t}\n\n\t\treturn personDisplay;\n\t},\n\n\t/* PILLS COLUMN SELECTORS */\n\n\t/**\n\t * Gets the maximum number of pills that can be rendered in each cell of this column\n\t * @param {object} column\n\t *\n\t * @returns {number}\n\t */\n\tgetMaxPillLimit: (column) => {\n\t\treturn get(column, 'maxPillLimit', MAX_PILL_LIMIT_DEFAULT);\n\t},\n\n\t/**\n\t * Gets the pills choices that can be rendered in the list to add/remove the pills in the cell\n\t * @param {ColumnType | ProcessedColumn} column\n\t *\n\t * @returns {Array<ChoiceType>}\n\t */\n\tgetPillsChoices: (column) => {\n\t\treturn get(column, 'pillsChoices', []);\n\t},\n\n\t/* CHOICE COLUMN SELECTORS */\n\n\t/**\n\t * Selector for getting the choices of the column\n\t * @param {ColumnType | ProcessedColumn} column - processed column\n\t * @returns {Array<ChoiceType> | null} column or null\n\t */\n\tgetChoices: (column) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_CHOICE) {\n\t\t\tlogger.warning(\n\t\t\t\t'getChoices(), a method specific to choice typed columns, was called on a non-choice type'\n\t\t\t);\n\t\t\treturn null;\n\t\t}\n\t\tconst choiceList = get(column, 'choices');\n\n\t\tif (isEmpty(choiceList)) {\n\t\t\tlogger.warning('Choices is required and must be defined.');\n\t\t\treturn null;\n\t\t}\n\n\t\treturn choiceList;\n\t},\n\n\t/**\n\t * Selector for getting the default choice of the column\n\t * @param {ProcessedColumn} column - processed column\n\t * @returns {String} value to be displayed\n\t */\n\tgetDefaultChoiceKey: function (column) {\n\t\tconst choiceList = get(column, 'choices');\n\t\tconst defaultFallBackKey = choiceList[0].key;\n\t\tconst defaultChoiceKey = get(column, 'defaultChoiceKey');\n\n\t\treturn defaultChoiceKey || defaultFallBackKey;\n\t},\n\n\t/**\n\t * Selector for getting the choices of the column based on the given key\n\t * @param {ProcessedColumnDefinitions} key - get choices of column based on this key\n\t * @param {ProcessedColumn} column - processed column\n\t * @returns {String | null} value to be displayed\n\t */\n\tgetChoiceLabelFromKey: function (key, column) {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_CHOICE) {\n\t\t\tlogger.warning(\n\t\t\t\t'getChoicesLabelFromKey(), a method specific to choice typed columns, was called on a non-choice type'\n\t\t\t);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst choiceList = get(column, 'choices');\n\n\t\tif (isEmpty(choiceList)) {\n\t\t\tlogger.warning('Choices is required and must be defined.');\n\t\t\treturn null;\n\t\t}\n\n\t\tconst defaultChoiceKey = this.getDefaultChoiceKey(column);\n\t\tlet defaultValue;\n\n\t\tfor (const choice of choiceList) {\n\t\t\tif (choice.key === key) {\n\t\t\t\treturn choice.label;\n\t\t\t}\n\t\t\tif (choice.key === defaultChoiceKey) {\n\t\t\t\tdefaultValue = choice.label;\n\t\t\t}\n\t\t}\n\t\treturn defaultValue;\n\t},\n\n\t/* CURRENCY COLUMN SELECTORS */\n\n\t/**\n\t * Gets the currency in this column\n\t * @param {object} column\n\t *\n\t * @returns {string}\n\t */\n\tgetCurrency: (column) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_CURRENCY) {\n\t\t\tlogger.warning(\n\t\t\t\t'getCurrency(), a method specific to currency typed columns, was called on a non-currency type'\n\t\t\t);\n\t\t}\n\n\t\treturn get(column, 'currency') || CURRENCY_DEFAULT;\n\t},\n\n\t/**\n\t * Gets the locale to determine the delimiter for currency in this column\n\t * @param {object} column\n\t *\n\t * @returns {string}\n\t */\n\tgetCurrencyLocale: (column) => {\n\t\tconst type = get(column, 'type');\n\n\t\tif (type !== TYPE_CURRENCY) {\n\t\t\tlogger.warning(\n\t\t\t\t'getCurrencyLocale(), a method specific to currency typed columns, was called on a non-currency type'\n\t\t\t);\n\t\t}\n\t\tconst defaultLocale =\n\t\t\twindow?.navigator?.language || CURRENCY_LOCALE_DEFAULT;\n\t\treturn get(column, 'locale') || defaultLocale;\n\t},\n\n\t/* PERCENT COMPLETE COLUMN SELECTORS */\n\n\t/**\n\t * Selector for thresholdColors for percent complete type\n\t * @param {object} column\n\t *\n\t * @returns {string} string representing the colors that should be shown at certain percentage thresholds\n\t */\n\tgetThresholdColors: (column) => {\n\t\treturn get(column, 'thresholdColors', '');\n\t},\n\n\t/* PRIVATE COLUMN FIELDS */\n\n\t/**\n\t * Selector for getting colspan from column object\n\t * @param {object} column\n\t *\n\t * @returns {number} colspam\n\t */\n\tgetColumnColSpan: fpGet('_colspan'),\n\n\t/**\n\t * Selector for getting rowspan from column object\n\t * @param {object} column\n\t *\n\t * @returns {number} rowspan\n\t */\n\tgetColumnRowSpan: fpGet('_rowspan'),\n\n\t/**\n\t * Selector for getting parent key from column object\n\t * @param {object} column\n\t *\n\t * @returns {string|undefined} colspam\n\t */\n\tgetColumnParentKey: fpGet('_parentKey'),\n\n\t/**\n\t * Selector for checking if a column is active\n\t * @param {object} column\n\t *\n\t * @returns {boolean} active\n\t */\n\tisColumnActive: fpGet('_active'),\n\n\t/**\n\t * Selector for getting the column level in the tree\n\t * @param {object} column\n\t *\n\t * @returns {number} level\n\t */\n\tgetColumnLevel: fpGet('_level'),\n\n\t/**\n\t * Selector for getting a specific column's edges\n\t * @param {object} column\n\t *\n\t * @returns {Array<String>} array of strings. Each index in the array corresponds to an edge on a nested column structure\n\t */\n\tgetColumnEdges: fpGet('columnEdges'),\n\n\t/**\n\t * Selector for getting a first column edge which is not a special column\n\t * @param {Array<String>} columnEdges\n\t *\n\t * @returns {string} returns first column edge\n\t */\n\tgetFirstColumnEdge: (columnEdges) => {\n\t\treturn find(columnEdges, (/** @type {string} */ columnEdge) => {\n\t\t\tconst isSpecial = columnSelectors.isSpecialColumnKey(columnEdge);\n\t\t\treturn !isSpecial;\n\t\t});\n\t},\n\n\t/**\n\t * Selector for getting a custom column's component tag\n\t * @param {object} column\n\t *\n\t * @returns {string}\n\t */\n\tgetColumnComponentTag: fpGet('componentTag'),\n\n\t/**\n\t * Selector for checking if a custom column has a component tag\n\t * @param {object} column\n\t *\n\t * @returns {boolean}\n\t */\n\thasColumnComponentTag: fpHas('componentTag'),\n\n\t/**\n\t * Selector for getting a custom column's cell place holder dimensions\n\t * @param {object} column\n\t *\n\t * @returns {CellContentDimensions}\n\t */\n\tgetColumnPlaceholderDimensions: fpGetOr({}, 'placeholderDimensions'),\n\n\t/**\n\t * Selector for getting a custom column's cell content dimensions\n\t * @param {object} column\n\t *\n\t * @returns {CellContentDimensions}\n\t */\n\tgetCellContentDimensions: fpGetOr({}, 'cellContentDimensions'),\n\n\t/**\n\t * Selector for getting a custom column's component properties\n\t * @param {object} column\n\t *\n\t * @returns {object}\n\t */\n\tgetColumnDefaultComponentProperties: fpGetOr({}, 'defaultComponentProps'),\n};\n\nexport default columnSelectors;\n","import { actionTypes } from '@servicenow/ui-core';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport remove from 'lodash/remove';\n\nimport logger from '../../shared/utils/logger';\nimport columnSelectors from '../../shared/utils/selectors/columnSelectors';\nimport featureFlagSelectors from '../../shared/utils/selectors/featureFlagSelectors';\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\n\nconst {\n\tSPECIAL_TYPE_ACTIONS,\n\tSPECIAL_TYPE_SELECTION,\n\tSPECIAL_TYPE_GROUP_BADGE,\n\tSPECIAL_TYPE_GROUP_TOGGLE,\n\tSPECIAL_TYPE_ROW_DRAG_HANDLE,\n\tSPECIAL_TYPE_PARENT_TOGGLE,\n\tSPECIAL_TYPE_PARENT_BADGE,\n} = require('../../typeSchemas/columnDefinitions/columnTypes/columnTypes');\nconst {\n\tPOSITION_TABLE_END,\n} = require('../../typeSchemas/rowDefinitions/rowConfigConsts');\n\nconst {\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_RENDER_REQUESTED,\n} = actionTypes;\n\n/* STRING CONSTANTS */\nconst pathConstants = {\n\tprocessedColumnDefinitionsPath: 'processedColumnDefinitions',\n\tcolumnsPath: 'columns',\n};\n\n/* SELECTORS */\n\nconst {\n\tgetColumnFilteringEnabled,\n\tgetMaxCharacters,\n\tgetRowDragDropEnabled,\n\tgetSelectionEnabled,\n} = featureFlagSelectors;\n\n/**\n * Selector for getting new path from existing path and column index\n * @param {string} path Existing path of columns\n * @param {number} index column index\n */\nexport const getNewChildPath = (path, index) => `${path}[${index}].children`;\n\n/* HELPERS */\n\n/**\n *  Recursively Iterates through column definitions and returns max depth across all columns\n *\n * @param {Array<ColumnType>} columnDefinitions Array of column definitions\n * @param {number} currentDepth Used for recursive calls. Describes the current layer of the tree structure.\n *\n * @returns {number} Max depth of columns\n */\nexport const getColumnDepth = (columnDefinitions, currentDepth = 1) => {\n\tlet depth = currentDepth;\n\tcolumnDefinitions.forEach((column) => {\n\t\tconst { children = [] } = column;\n\n\t\tif (children.length) {\n\t\t\tconst newDepth = currentDepth + 1;\n\t\t\tconst childrenDepth = getColumnDepth(children, newDepth);\n\n\t\t\tif (childrenDepth > depth) depth = childrenDepth;\n\t\t}\n\t});\n\treturn depth;\n};\n\n/**\n * Helper for getting correct row and column header index\n * @param {*} payload\n */\nexport const getColumnHeaderIndexes = (payload) => {\n\tconst {\n\t\tcontext: {\n\t\t\tcolumn: { key, _level },\n\t\t},\n\t\tprocessedColumnDefinitions: { columnMap },\n\t} = payload;\n\n\t/**\n\t * Getting column index from `columnMap` using the column key we are getting from the context action payload.\n\t * columnMap has all the columns keys (like 'assigned_to') and their structured indexes as values (like 'columns[9]'),\n\t * Split logic will get us the value `9` for an example here which is the column index.\n\t * _level can be used to get row index.\n\t * This will also cover grouped columns.\n\t * */\n\n\t// eslint-disable-next-line no-prototype-builtins\n\tif (columnMap.hasOwnProperty(key)) {\n\t\tconst columnPath = columnMap[key];\n\t\tconst columnIdxRegex = /\\[|\\]/;\n\t\tconst [, columnIndex] = columnPath.split(columnIdxRegex);\n\n\t\treturn {\n\t\t\theaderRowIndex: _level,\n\t\t\theaderColumnIndex: Number(columnIndex) + 1,\n\t\t};\n\t}\n};\n\n/**\n * This function prunes duplicate keyed column definitions. Column keys must be unique to prevent any issues\n * in rendering the cells as rendering is key based. Only the first instance of a duplicate column key should be valid.\n * This function will process each column level sequentially and will mutate original object\n *\n * @param {ClonedColumnDefinitions} columnDefinitions\n *\n */\nexport const pruneColumnDefinitions = (columnDefinitions) => {\n\tconst columnKeys = new Set();\n\n\tconst pruneColumnDefinitionsHelper = (\n\t\t/** @type {Array<Array<ProcessedColumn>>}*/ columnsInCurrentLevel\n\t) => {\n\t\t/** @type {Array<*>} */\n\t\tconst nextLevelChildren = [];\n\n\t\tcolumnsInCurrentLevel.forEach((entry) => {\n\t\t\tremove(entry, (/**@type {ProcessedColumn}*/ column) => {\n\t\t\t\tif (columnKeys.has(column.key)) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t'Duplicate column encountered. Removing from column definitions',\n\t\t\t\t\t\tcolumn\n\t\t\t\t\t);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tcolumnKeys.add(column.key);\n\n\t\t\t\tif (column.children) {\n\t\t\t\t\tnextLevelChildren.push(column.children);\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\n\t\tif (nextLevelChildren.length) {\n\t\t\tpruneColumnDefinitionsHelper(nextLevelChildren);\n\t\t}\n\n\t\tcolumnKeys.clear();\n\t};\n\n\tpruneColumnDefinitionsHelper([columnDefinitions.columns]);\n};\n\n/**\n * This function will mutate the columns for any additional processing that has to happen\n * @param {Array<ProcessedColumn>} columns\n * @param {object} props\n *\n * @returns {Array<ProcessedColumn>} columns\n */\nexport const updateColumns = (columns, props) => {\n\tconst maxCharacters = getMaxCharacters(props);\n\n\tif (maxCharacters !== undefined && maxCharacters !== null) {\n\t\tcolumns.forEach((/** @type {ColumnType } */ column) => {\n\t\t\tif (!columnSelectors.hasMaxCharacters(column)) {\n\t\t\t\tcolumn.maxCharacters = maxCharacters;\n\t\t\t}\n\t\t});\n\t}\n\n\treturn columns;\n};\n\n/**\n * This function checks whether there is any row that has children\n * @param {Row[]} rows\n *\n * @returns {boolean} hasChildren\n */\nexport const isNestedRows = (rows) =>\n\trows?.some((row) => rowSelectors.hasChildren(row)) || false;\n\n/**\n * Some kinds of special columns (row actions, selection) are not configured through the columnDefinitions prop.\n * This function adds those special columns based on their config in other props.\n *\n * @param {ClonedColumnDefinitions} clonedColumnDefinitions\n * @param {RowDefinitions} rowDefinitions\n * @param {object} props\n * @param {boolean | undefined} props.virtualizedScrollEnabled\n *\n * @returns {ClonedColumnDefinitions}\n */\nexport const addOrUpdateSpecialColumns = (\n\tclonedColumnDefinitions,\n\trowDefinitions,\n\tprops\n) => {\n\tconst { getColumns, isSpecialColumn } = columnSelectors;\n\tconst {\n\t\thasRowActionsWithItems,\n\t\tgetRowActions,\n\t\tgetRowActionsPosition,\n\t\thasGroupedOrDefaultRowsWithChildren,\n\t\thasGroupedRowCount,\n\t} = rowSelectors;\n\n\tlet columns = getColumns(clonedColumnDefinitions);\n\n\t// prune any existing special columns\n\tcolumns = remove(columns, (/** @type {ColumnBase} */ column) => {\n\t\treturn !isSpecialColumn(column);\n\t});\n\n\tif (rowDefinitions.rows && isNestedRows(rowDefinitions.rows)) {\n\t\t// GROUPED ROW CHEVRON TOGGLES COLUMN\n\t\tif (hasGroupedOrDefaultRowsWithChildren(rowDefinitions)) {\n\t\t\t/** @constant\n\t\t\t\t@type {ColumnBase}\n\t\t\t*/\n\t\t\tconst parentToggleColumn = {\n\t\t\t\ttype: SPECIAL_TYPE_PARENT_TOGGLE,\n\t\t\t\tkey: SPECIAL_TYPE_PARENT_TOGGLE,\n\t\t\t\tisSpecialColumn: true,\n\t\t\t};\n\n\t\t\tcolumns.unshift(parentToggleColumn);\n\t\t}\n\n\t\t// GROUPED ROW BADGE COLUMN\n\t\tif (hasGroupedRowCount(rowDefinitions)) {\n\t\t\tconst parentBadgeColumn = {\n\t\t\t\ttype: SPECIAL_TYPE_PARENT_BADGE,\n\t\t\t\tkey: SPECIAL_TYPE_PARENT_BADGE,\n\t\t\t\tisSpecialColumn: true,\n\t\t\t};\n\t\t\tcolumns.unshift(parentBadgeColumn);\n\t\t}\n\t}\n\n\t// SELECTION COLUMN\n\tif (getSelectionEnabled(props)) {\n\t\t/** @constant\n\t\t\t@type {ColumnBase}\n\t\t*/\n\t\tconst selectionColumn = {\n\t\t\ttype: SPECIAL_TYPE_SELECTION,\n\t\t\tkey: SPECIAL_TYPE_SELECTION,\n\t\t\tisSpecialColumn: true,\n\t\t};\n\n\t\tcolumns.unshift(selectionColumn);\n\t}\n\n\t// ROW ACTIONS COLUMN\n\t// in the case that column filtering is on, the row actions column is used to display the toggle button for the header row even if there are no actual row actions\n\t// in that case, the row actions column is always at the start of the column so that the button to open the filter is visible on initial render, so we ignore row actions position if it is at the end.\n\tif (\n\t\thasRowActionsWithItems(rowDefinitions) ||\n\t\tgetColumnFilteringEnabled(props)\n\t) {\n\t\tconst rowActions = getRowActions(rowDefinitions);\n\t\t/** @constant\n\t\t\t@type {ColumnBase}\n\t\t*/\n\t\tconst rowActionsColumn = {\n\t\t\ttype: SPECIAL_TYPE_ACTIONS,\n\t\t\tkey: SPECIAL_TYPE_ACTIONS,\n\t\t\tisSpecialColumn: true,\n\t\t};\n\n\t\tconst actionsPosition = getRowActionsPosition(\n\t\t\trowActions,\n\t\t\tgetColumnFilteringEnabled(props)\n\t\t);\n\n\t\tif (actionsPosition === POSITION_TABLE_END) {\n\t\t\tcolumns.push(rowActionsColumn);\n\t\t} else {\n\t\t\tcolumns.unshift(rowActionsColumn);\n\t\t}\n\t}\n\n\t// GROUPED ROW BADGE COLUMN\n\tif (hasGroupedRowCount(rowDefinitions)) {\n\t\tconst rowGroupBadgeColumn = {\n\t\t\ttype: SPECIAL_TYPE_GROUP_BADGE,\n\t\t\tkey: SPECIAL_TYPE_GROUP_BADGE,\n\t\t\tisSpecialColumn: true,\n\t\t};\n\t\tcolumns.unshift(rowGroupBadgeColumn);\n\t}\n\n\t// GROUPED ROW CHEVRON TOGGLES COLUMN\n\tif (hasGroupedOrDefaultRowsWithChildren(rowDefinitions)) {\n\t\t/** @constant\n\t\t\t@type {ColumnBase}\n\t\t*/\n\t\tconst groupedToggleColumn = {\n\t\t\ttype: SPECIAL_TYPE_GROUP_TOGGLE,\n\t\t\tkey: SPECIAL_TYPE_GROUP_TOGGLE,\n\t\t\tisSpecialColumn: true,\n\t\t};\n\n\t\tcolumns.unshift(groupedToggleColumn);\n\t}\n\n\t// ROW DRAG HANDLE COLUMN\n\tif (getRowDragDropEnabled(props)) {\n\t\t/** @constant\n\t\t\t@type {ColumnBase}\n\t\t*/\n\t\tconst rowDragDropColumn = {\n\t\t\ttype: SPECIAL_TYPE_ROW_DRAG_HANDLE,\n\t\t\tkey: SPECIAL_TYPE_ROW_DRAG_HANDLE,\n\t\t\tisSpecialColumn: true,\n\t\t};\n\n\t\tcolumns.unshift(rowDragDropColumn);\n\t}\n\n\tclonedColumnDefinitions.columns = columns;\n\treturn clonedColumnDefinitions;\n};\n\n/**\n * Helper function to create an empty array of arrays.\n *\n * @param {number} depth Number of levels to create empty array\n *\n * @returns {Array<Array<*>>} Returns Array of empty arrays at length of depth\n */\nconst createEmptyColumnLeafArray = (depth) =>\n\tArray.from(Array(depth), () => []);\n\n/**\n *\n * @typedef {Object} ColumnInfo\n * @property {Array<Array<string>>} columnLeafs\n * @property {Array<string>} columnEdges\n * @property {Record<string, string>} columnMap\n *\n * This function recursively iterates through the column structure and returns three pieces of state.\n * Column Edges: Lowest level columns to render per row\n * Column Leafs: Array structure comtaining header rows and the keys within each\n * Column Map: Dictionary with column key as the key and value as the path to access the column via getter so we dont have to search everytime we access a column\n * @param {Array<ProcessedColumn>} columns\n * @returns {ColumnInfo} Column state information\n */\nexport const getColumnInfo = (columns) => {\n\tconst maxDepth = getColumnDepth(columns);\n\n\t/** @type {Array<*>} */\n\tconst columnLeafs = createEmptyColumnLeafArray(maxDepth);\n\n\t/** @type {Array<string>} */\n\tconst columnEdges = [];\n\n\t/** @type {Object<String,String>} */\n\tconst columnMap = {};\n\n\tconst getColumnInfoHelper = (\n\t\t/** @type {Array<ProcessedColumn>}*/ columns,\n\t\tlevel = 1,\n\t\tpath = pathConstants.columnsPath\n\t) => {\n\t\tcolumns.forEach((column, index) => {\n\t\t\tconst key = columnSelectors.getColumnKey(column);\n\n\t\t\tcolumnMap[key] = `${path}[${index}]`;\n\t\t\tcolumnLeafs[level - 1].push(key);\n\n\t\t\tif (columnSelectors.hasChildren(column)) {\n\t\t\t\tgetColumnInfoHelper(\n\t\t\t\t\tcolumn.children,\n\t\t\t\t\tlevel + 1,\n\t\t\t\t\tgetNewChildPath(path, index)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcolumnEdges.push(key);\n\t\t\t}\n\t\t});\n\t};\n\n\tgetColumnInfoHelper(columns);\n\n\treturn {\n\t\tcolumnLeafs,\n\t\tcolumnEdges,\n\t\tcolumnMap,\n\t};\n};\n\n/**\n * This function recursively iterates through processed column definitions and adds rowspan, colspan and level\n * depending on the column structure. Will mutate columns argument.\n * @param {Array<ProcessedColumn>} columns\n * @param {number} level\n * @param {number} maxDepth\n * @param {string|undefined} parentKey\n */\nexport const addSpanFields = (\n\tcolumns,\n\tlevel = 1,\n\tmaxDepth = getColumnDepth(columns),\n\tparentKey = undefined\n) => {\n\tlet colSpan = 0;\n\tcolumns.forEach((column) => {\n\t\tif (columnSelectors.hasChildren(column)) {\n\t\t\tconst childrenColSpan = addSpanFields(\n\t\t\t\tcolumn.children,\n\t\t\t\tlevel + 1,\n\t\t\t\tmaxDepth,\n\t\t\t\tcolumn.key\n\t\t\t);\n\n\t\t\tcolSpan += childrenColSpan;\n\t\t\tcolumn._rowspan = 1;\n\t\t\tcolumn._colspan = childrenColSpan;\n\t\t} else {\n\t\t\tcolumn._rowspan = maxDepth - level + 1;\n\t\t\tcolumn._colspan = 1;\n\t\t\tcolSpan += 1;\n\t\t}\n\t\tcolumn._level = level;\n\t\tcolumn._parentKey = parentKey;\n\t});\n\n\treturn colSpan;\n};\n\n/**\n * Function to process column definitions. Will clone original property passed in to modify and add additional private parameters (such as col and rowspan)\n * and computed properties based on other things that are passed in. Will act as the source of truth in the component instead of referencing different parts\n * of state and properties throughout the code.\n *\n * @param {ColumnDefinitions} columnDefinitions\n * @param {RowDefinitions} rowDefinitions\n * @param {object} featureFlags\n * @param {boolean | undefined} featureFlags.columnFilteringEnabled\n * @param {boolean | undefined} featureFlags.expandAllGroups\n * @param {boolean | undefined} featureFlags.rowDragDropEnabled\n * @param {boolean | undefined} featureFlags.selectionEnabled\n * @param {number  | undefined} featureFlags.maxCharacters\n * @param {boolean | undefined} featureFlags.virtualizedScrollEnabled\n * @returns {ProcessedColumnDefinitions}\n */\nexport const processColumnDefinitions = (\n\tcolumnDefinitions,\n\trowDefinitions,\n\tfeatureFlags\n) => {\n\t/** @type {ClonedColumnDefinitions} */\n\tconst clonedColumnDefinitions = cloneDeep(columnDefinitions);\n\n\tpruneColumnDefinitions(clonedColumnDefinitions);\n\n\tif (columnSelectors.willHaveSpecialColumns(rowDefinitions, featureFlags)) {\n\t\taddOrUpdateSpecialColumns(\n\t\t\tclonedColumnDefinitions,\n\t\t\trowDefinitions,\n\t\t\tfeatureFlags\n\t\t);\n\t}\n\n\tconst clonedColumns = columnSelectors.getColumns(clonedColumnDefinitions);\n\n\tupdateColumns(clonedColumns, featureFlags);\n\n\taddSpanFields(clonedColumns);\n\n\treturn {\n\t\tprocessedColumnDefinitions: clonedColumnDefinitions,\n\t\t...getColumnInfo(clonedColumns),\n\t};\n};\n\n/* EFFECTS */\n\n/**\n * Property Changed Effect Handler. Will check for columnDefinitions changes and process the columnDefinitions accordingly\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const propertyChangedActionHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name, value, previousValue },\n\t\t},\n\t\tproperties: {\n\t\t\tcolumnDefinitions,\n\t\t\tcolumnFilteringEnabled,\n\t\t\texpandAllGroups,\n\t\t\tmaxCharacters,\n\t\t\trowDefinitions,\n\t\t\trowDragDropEnabled,\n\t\t\tselectionEnabled,\n\t\t\tvirtualizedScrollEnabled,\n\t\t},\n\t\tstate: { processedColumnDefinitions },\n\t\tupdateState,\n\t} = coeffects;\n\n\tif (\n\t\tisEqual(value, previousValue) ||\n\t\t!(\n\t\t\tname === 'columnDefinitions' ||\n\t\t\tname === 'rowDefinitions' ||\n\t\t\tname === 'columnFilteringEnabled' ||\n\t\t\tname === 'selectionEnabled' ||\n\t\t\tname === 'rowDragDropEnabled' ||\n\t\t\tname === 'expandAllGroups' ||\n\t\t\tname === 'maxCharacters'\n\t\t)\n\t) {\n\t\treturn;\n\t}\n\n\tif (isEmpty(columnDefinitions) || isEmpty(columnDefinitions.columns)) {\n\t\tif (!isEmpty(processedColumnDefinitions)) {\n\t\t\tupdateState({\n\t\t\t\tpath: pathConstants.processedColumnDefinitionsPath,\n\t\t\t\tvalue: {},\n\t\t\t\toperation: 'set',\n\t\t\t});\n\t\t}\n\t\treturn;\n\t}\n\n\tlet processedColumns = {};\n\tconst columnFeatureFlags = {\n\t\tcolumnFilteringEnabled,\n\t\texpandAllGroups,\n\t\tmaxCharacters,\n\t\trowDragDropEnabled,\n\t\tselectionEnabled,\n\t\tvirtualizedScrollEnabled,\n\t};\n\n\tif (name === 'columnDefinitions' && !isEmpty(value)) {\n\t\tprocessedColumns = processColumnDefinitions(\n\t\t\tvalue,\n\t\t\trowDefinitions,\n\t\t\tcolumnFeatureFlags\n\t\t);\n\t} else if (name === 'rowDefinitions') {\n\t\tprocessedColumns = processColumnDefinitions(\n\t\t\tcolumnDefinitions,\n\t\t\tvalue,\n\t\t\tcolumnFeatureFlags\n\t\t);\n\t} else {\n\t\t// must pass all featureFlags in else some special columns might not be rendered,\n\t\t// can't assume the other flags have already been processed\n\t\tprocessedColumns = processColumnDefinitions(\n\t\t\tcolumnDefinitions,\n\t\t\trowDefinitions,\n\t\t\t// @ts-ignore\n\t\t\t{\n\t\t\t\t...columnFeatureFlags,\n\t\t\t\t[name]: value,\n\t\t\t}\n\t\t);\n\t}\n\tupdateState({\n\t\tpath: pathConstants.processedColumnDefinitionsPath,\n\t\tvalue: processedColumns,\n\t\toperation: 'set',\n\t});\n};\n\n/**\n * Similar to property changed handler, processes columnDefinitions prop and stores in state\n * @param {Coeffects<Props,State>} coeffects\n */\nconst componentBootstrappedEffect = (coeffects) => {\n\tconst {\n\t\tproperties: {\n\t\t\tcolumnDefinitions,\n\t\t\tcolumnFilteringEnabled,\n\t\t\texpandAllGroups,\n\t\t\tmaxCharacters,\n\t\t\trowDefinitions,\n\t\t\trowDragDropEnabled,\n\t\t\tselectionEnabled,\n\t\t\tvirtualizedScrollEnabled,\n\t\t},\n\t} = coeffects;\n\n\tif (isEmpty(columnDefinitions) || isEmpty(columnDefinitions.columns))\n\t\treturn;\n\n\tconst processedColumns = processColumnDefinitions(\n\t\tcolumnDefinitions,\n\t\trowDefinitions,\n\t\t{\n\t\t\tcolumnFilteringEnabled,\n\t\t\texpandAllGroups,\n\t\t\tselectionEnabled,\n\t\t\trowDragDropEnabled,\n\t\t\tmaxCharacters,\n\t\t\tvirtualizedScrollEnabled,\n\t\t}\n\t);\n\n\tcoeffects.updateState({\n\t\tpath: pathConstants.processedColumnDefinitionsPath,\n\t\tvalue: processedColumns,\n\t\toperation: 'set',\n\t});\n};\n\n/**\n * This effect prevents rendering of list if we have column definitions but have not processed them yet\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleRenderRequested = (coeffects) => {\n\tconst {\n\t\taction,\n\t\tproperties: { columnDefinitions },\n\t\tstate: { processedColumnDefinitions },\n\t} = coeffects;\n\n\tif (\n\t\t!isEmpty(columnDefinitions?.columns) &&\n\t\tisEmpty(processedColumnDefinitions)\n\t) {\n\t\taction.preventDefault();\n\t}\n};\n\n/**\n *  ColumnBehavior will take incoming prop columndefinitions and process it. It will add any additional computed values as fields to a clone of the object\n *  Primary example is row and col spans in multi level column structures.\n */\nconst columnDefinitionsBehavior = {\n\tname: 'columnDefinitionsBehavior',\n\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[COMPONENT_PROPERTY_CHANGED]: { effect: propertyChangedActionHandler },\n\t\t[COMPONENT_BOOTSTRAPPED]: { effect: componentBootstrappedEffect },\n\t\t[COMPONENT_RENDER_REQUESTED]: { effect: handleRenderRequested },\n\t},\n};\n\nexport default columnDefinitionsBehavior;\n","// Actions\nexport const ACTION_PREFIX = 'NOW_SORTABLE#';\nexport const SORT_START = 'SORT_START';\nexport const SORT_END = 'SORT_END';\nexport const SORT_CANCELLED = 'SORT_CANCELLED';\nexport const DROP_AREA_CHANGE = 'DROP_AREA_CHANGE';\nexport const UPDATE_BEHAVIOR = 'UPDATE_BEHAVIOR';\n\n// Classes\nexport const NS_DEST_PLACEHOLDER = 'ns-dest-placeholder';\nexport const NS_DEST_PLACEHOLDER_WRAPPER = 'ns-dest-placeholder-wrapper';\nexport const NS_ACTIVE_SORT_ITEM = 'ns-active-dragging-item';\nexport const NS_SOURCE_PLACEHOLDER = 'ns-source-placeholder';\nexport const NS_DRAGGING_SOURCE = 'ns-dragging-source';\nexport const NS_DRAGGING_SOURCE_OVERLAY = 'dragging-source-overlay';\nexport const NS_SORT_TRANSITIONED = 'ns-drag-transitioned';\nexport const NS_SORT_CLONE = 'ns-drag-clone';\n\nexport const NS_DATA_TRANSFER_KEY = 'ns_data_transfer';\nexport const NS_DEFAULT_PLACEHOLDER = 'div';\n","// @ts-nocheck\nimport { v4 as uuidv4 } from 'uuid';\n\n/**\n * Some utility methods to work with Seismic / Shadow DOM\n *\n * @author mohammed.furqan\n * */\n\nconst COMPONENT_ID = 'component-id';\nconst SET_ATTRIBUTE = 'setAttribute';\nconst GET_ATTRIBUTE = 'getAttribute';\nconst REMOVE_ATTRIBUTE = 'removeAttribute';\nconst GET_RESOLVED_PROPERTIES = 'getResolvedProperties';\n\nconst _cloneShadow = (shadowRoot) => {\n\tconst fragment = document.createDocumentFragment();\n\tconst childNodes = [...shadowRoot.childNodes];\n\tchildNodes.forEach((cNode) => {\n\t\tfragment.appendChild(deepClone(cNode));\n\t});\n\treturn fragment;\n};\n\n/**\n * Clones and returns the entire DOM tree. Digs into shadowRoot when needed to clone its sub-tree\n *\n * @param {Node} node\n * @return {Node}\n */\nconst deepClone = (node) => {\n\tconst clone = node.cloneNode(true);\n\tif (node.shadowRoot)\n\t\t// clone will also have a shadow root\n\t\tclone.shadowRoot.appendChild(_cloneShadow(node.shadowRoot));\n\treturn clone;\n};\n\n/**\n * Similar to document.querySelector, but searches inside shadow roots as well\n * *This is orders of magnitude slower than document.querySelector\n *\n * @param {String} selector - a valid CSS selector\n * @param {Node} [rootEl=window.document.body] - Root element to start traversing down from\n * @return {HTMLElement} - a matched element\n * */\nconst querySelectorDeep = (selector, rootEl = window.document.body) => {\n\tif (rootEl.matches && rootEl.matches(selector)) return rootEl;\n\n\tconst children = rootEl.children;\n\n\tif (children) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tif (children[i].matches && children[i].matches(selector))\n\t\t\t\treturn children[i];\n\n\t\t\tconst child = querySelectorDeep(selector, children[i]);\n\t\t\tif (child) return child;\n\t\t}\n\t}\n\n\tif (rootEl.shadowRoot)\n\t\treturn querySelectorDeep(selector, rootEl.shadowRoot);\n\n\treturn null;\n};\n\n/**\n * Similar to document.querySelectorAll, but searches inside shadow roots as well\n * *This is orders of magnitude slower than document.querySelectorAll\n *\n * Examples:\n * - querySelectorAllDeep('.vtb-card')\n * - querySelectorAllDeep('[draggable=\"true\"]')\n *\n * @param {String} selector - a valid CSS selector\n * @param {Node} [rootEl=window.document.body] - Root element to start traversing down from\n * @param {Boolean} nestedMatches - a boolean indicating whether children of a node should be matched, if the\n * \t\tnode matches the selector. Useful for early exits in some cases when an element cannot be nested inside the\n * \t\tsame element\n * @param {Boolean} rootEleMatches - a boolean indicating whether to match the root\n * @return {HTMLElement[]} - an array of nodes that match the given selector\n * */\nconst querySelectorAllDeep = (\n\tselector,\n\trootEl,\n\tnestedMatches = true,\n\trootEleMatches = true\n) => {\n\tconst matches = [];\n\tif (!selector) return matches;\n\tif (!rootEl) rootEl = window.document.body;\n\n\tif (rootEleMatches && rootEl.matches && rootEl.matches(selector))\n\t\tmatches.push(rootEl);\n\n\tconst children = rootEl.children;\n\n\tif (children) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tif (children[i].matches && children[i].matches(selector)) {\n\t\t\t\tmatches.push(children[i]);\n\t\t\t\tif (nestedMatches === false) continue;\n\t\t\t}\n\n\t\t\tconst childMatches = querySelectorAllDeep(\n\t\t\t\tselector,\n\t\t\t\tchildren[i],\n\t\t\t\trootEleMatches,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tmatches.push(...childMatches);\n\t\t}\n\t}\n\n\tif (rootEl.shadowRoot) {\n\t\tconst shadowChildren = querySelectorAllDeep(\n\t\t\tselector,\n\t\t\trootEl.shadowRoot,\n\t\t\tnestedMatches\n\t\t);\n\t\tmatches.push(...shadowChildren);\n\t}\n\n\treturn matches;\n};\n\n/**\n * Similar to Element.closest() but by-passes the shadow roots while traversing up\n *\n * @param {HTMLElement} el - The element whose closest parent needs to be found\n * @param {String} selector - The selector to match the ancestors with\n * @return {HTMLElement|null} The closest parent that matches the selector\n * */\nconst closestDeep = (el, selector) => {\n\tif (!el) return null;\n\n\tif (el.matches(selector)) return el;\n\n\tif (el.parentElement !== null)\n\t\treturn closestDeep(el.parentElement, selector);\n\n\t// escape the shadow root\n\tif (el.getRootNode() !== null)\n\t\treturn closestDeep(el.getRootNode().host, selector);\n};\n\n/**\n * For a special use-case (might get removed)\n *\n * Clones the  entire component tree, replaces component-id attributes with new guids,\n * passes the same properties to the cloned Seismic elements that its original element accepted\n *\n * @param {Node} elem\n * @return {Node}\n *\n * */\nconst seismicClone = (elem) => {\n\tconst elClone = deepClone(elem);\n\tconst seismicElems = querySelectorAllDeep(\n\t\t`[${COMPONENT_ID}]`,\n\t\telClone\n\t).slice();\n\n\tif (isSeismicComponent(elem)) seismicElems.push(elClone);\n\n\t// Get properties from old components, and assign to new\n\tseismicElems.forEach((sElem) => {\n\t\tconst originalElem = querySelectorAllDeep(\n\t\t\t`[${COMPONENT_ID}=\"${sElem[GET_ATTRIBUTE](COMPONENT_ID)}\"]`\n\t\t)[0];\n\n\t\tif (sElem[GET_RESOLVED_PROPERTIES]) {\n\t\t\tconst elProperties = originalElem[GET_RESOLVED_PROPERTIES]();\n\t\t\t// Loop through all enumerable properties from source node, and copy them to clone\n\t\t\tfor (const prop in elProperties) {\n\t\t\t\tsElem[REMOVE_ATTRIBUTE](prop);\n\t\t\t\tsElem[prop] = elProperties[prop];\n\t\t\t}\n\t\t}\n\t});\n\n\t// Change all Seismic component IDs\n\tseismicElems.forEach((sElem) => {\n\t\tsElem[SET_ATTRIBUTE](COMPONENT_ID, uuidv4());\n\t});\n\n\treturn elClone;\n};\n\n/**\n * Inserts a node before a reference node\n * @param {Node} newNode\n * @param {Node} referenceNode\n * */\nconst insertBefore = (newNode, referenceNode) => {\n\treturn referenceNode.parentElement.insertBefore(newNode, referenceNode);\n};\n\n/**\n * Inserts a node after a reference node\n * @param {Node} newNode\n * @param {Node} referenceNode\n * */\nconst insertAfter = (newNode, referenceNode) => {\n\tif (referenceNode.nextSibling) {\n\t\treferenceNode.parentElement.insertBefore(\n\t\t\tnewNode,\n\t\t\treferenceNode.nextSibling\n\t\t);\n\t} else {\n\t\treferenceNode.parentElement.appendChild(newNode);\n\t}\n};\n\n/**\n * Delete a node from DOM\n * @param {Node} elem\n * */\nconst removeNode = (elem) => {\n\tconst parent = elem.parentElement;\n\tif (parent) parent.removeChild(elem);\n};\n\n/**\n * Return the position (index) of the element in its parent\n * @param {Node} elem\n * @return {Integer}\n * */\nconst elemIndex = (elem) => {\n\tconst parentElement = elem.parentElement;\n\tif (parentElement)\n\t\treturn Array.prototype.slice.call(parentElement.children).indexOf(elem);\n\treturn -1;\n};\n\n/**\n * @param {Node} elem\n * @returns {boolean}\n * */\n// FIXME: This logic could be wrong\nconst isSeismicComponent = (elem) => elem && elem.hasAttribute(COMPONENT_ID);\n\n/**\n * Returns the DOMRect (or ClientRect) for the element\n *\n * @param {Element} elem Element to get the rectangle of\n * @return {ClientRect|DOMRect} Rectangle object\n *\n * */\nconst getDOMRect = (elem) => {\n\t// TODO: Try some caching stuff here\n\treturn elem ? elem.getBoundingClientRect() : null;\n};\n\n/**\n * Returns the relative position (top, left) of an element relative to another element.\n * Normally, the DOM rects are relative to the screen, so in cases where scrolling is involved,\n * you'd want to get a position of an element relative to its parent, rather than relative to the\n * screen.\n *\n * @param {HTMLElement} elem - element whose relative position needs to be determined\n * @param {HTMLElement} relativeToElem - a parent of this element that should be used as the\n * \t\treference instead of the screen reference\n *\n * @return {Object} - an object containing 'left' and 'right' property, both numbers\n * */\nconst getRelativePosition = (elem, relativeToElem) => {\n\t// TODO: Try some caching stuff here\n\tconst elemRect = getDOMRect(elem);\n\tconst relativeRect = getDOMRect(relativeToElem);\n\treturn {\n\t\tleft: elemRect.left - relativeRect.left,\n\t\ttop: elemRect.top - relativeRect.top,\n\t};\n};\n\n/**\n * Returns the DOMRect (or ClientRect) for a bunch of elements\n *\n * @param {NodeList|Array} els List of elements either in NodeList or Array form\n * @return {Array<ClientRect|DOMRect>} rectangle objects\n * */\nconst getDOMRects = (els) => {\n\tvar rects = []; // .map() doesn't work on NodeList\n\tels.forEach((el) => {\n\t\trects.push(getDOMRect(el));\n\t});\n\treturn rects;\n};\n\n/**\n * Checks whether the element is connected in the DOM\n * @param {HTMLElement} el - element to check if it is connected in DOM\n * @return {Boolean}\n * */\nconst isConnected = (el) => {\n\t// return document.body.contains(el);\n\t// The above logic ^^ doesn't work, may be because of Shadow DOM\n\treturn !!el.parentElement;\n};\n\nexport {\n\tclosestDeep,\n\tdeepClone,\n\telemIndex,\n\tgetDOMRect,\n\tgetDOMRects,\n\tgetRelativePosition,\n\tinsertAfter,\n\tinsertBefore,\n\tisConnected,\n\tisSeismicComponent,\n\tquerySelectorAllDeep,\n\tquerySelectorDeep,\n\tremoveNode,\n\tseismicClone,\n};\n","const directions = {\n\tLEFT: Symbol('left'),\n\tRIGHT: Symbol('right'),\n\tUP: Symbol('up'),\n\tDOWN: Symbol('down'),\n\tRIGHT_UP: Symbol('right up'),\n\tRIGHT_DOWN: Symbol('right down'),\n\tLEFT_DOWN: Symbol('left down'),\n\tLEFT_UP: Symbol('left up'),\n};\n\nexport default directions;\n","// @ts-nocheck\nimport findIndex from 'lodash/findIndex';\nimport isFunction from 'lodash/isFunction';\n\nimport { querySelectorDeep } from '../../dom-utils';\nimport { NS_SOURCE_PLACEHOLDER, NS_DRAGGING_SOURCE } from '../constants';\n\nconst isDraggable = (element, config) => {\n\tif (isFunction(config.itemsFilter))\n\t\treturn config.itemsFilter.call(null, element);\n\treturn true;\n};\n\n// @ts-ignore\nexport const getDropPosition = (elem) => {\n\tconst parentElement = elem.parentElement;\n\tif (parentElement) {\n\t\t// @ts-ignore\n\t\tconst siblings = [].slice\n\t\t\t.apply(parentElement.children)\n\t\t\t.filter((elem) => {\n\t\t\t\treturn (\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t!elem.matches(`.${NS_SOURCE_PLACEHOLDER}`) &&\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t!elem.matches(`.${NS_DRAGGING_SOURCE}`)\n\t\t\t\t);\n\t\t\t});\n\t\t// @ts-ignore\n\t\treturn findIndex(siblings, (s) => s === elem);\n\t}\n\treturn -1;\n};\n\n// @ts-ignore\nexport const getSourcePosition = (elem) => {\n\tconst parentElement = elem.parentElement;\n\tif (parentElement) {\n\t\t// @ts-ignore\n\t\tconst siblings = [].slice\n\t\t\t.apply(parentElement.children)\n\t\t\t// @ts-ignore\n\t\t\t.filter((elem) => !elem.matches(`.${NS_DRAGGING_SOURCE}`));\n\t\t// @ts-ignore\n\t\treturn findIndex(siblings, (s) => s === elem);\n\t}\n\treturn -1;\n};\n\n// @ts-ignore\nexport const getElement = (param) => {\n\tif (typeof param === 'string') return querySelectorDeep(param);\n\telse if (param instanceof Element) return param;\n\treturn null;\n};\n\nexport const getValidRange = (elem, config) => {\n\tconst parentElement = elem.parentElement;\n\tlet siblings = [];\n\tif (parentElement) {\n\t\tsiblings = parentElement.children;\n\t}\n\tlet minIndex = 0;\n\tlet maxIndex = siblings.length - 1;\n\twhile (minIndex < siblings.length) {\n\t\tconst element = siblings[minIndex];\n\t\tif (isDraggable(element, config)) {\n\t\t\tbreak;\n\t\t}\n\t\tminIndex += 1;\n\t}\n\twhile (maxIndex > -1) {\n\t\tconst element = siblings[maxIndex];\n\t\tif (isDraggable(element, config)) {\n\t\t\tbreak;\n\t\t}\n\t\tmaxIndex -= 1;\n\t}\n\tmaxIndex += 1;\n\n\treturn { minIndex, maxIndex };\n};\n\nexport const setValidYPosition = (sortable, position) => {\n\tconst targetYPos = Math.abs(\n\t\tsortable.dropzone.getBoundingClientRect().y -\n\t\t\tsortable.targetElement.getBoundingClientRect().y\n\t);\n\n\tconst maxYPosition = sortable.maxYScroll - targetYPos;\n\tif (position.y > maxYPosition)\n\t\tposition.y = maxYPosition + sortable.targetElement.clientHeight;\n};\n","// @ts-nocheck\nimport { getElement } from './helpers';\n\n// Stay away from the edges by these many pixels\nconst OFFSET_X = 30;\nconst OFFSET_Y = 30;\n\nconst SCROLL_ROUNDING = 3; // Ignore scrolls lesser than this\nconst MIN_SCROLL_CHANGE = 10; // at minimum, scroll by this many pixels\n// TODO: Make the above \"scroll speed\" configurable\n\n// @ts-ignore\nconst hasHorizontalScroll = (el) => {\n\treturn el && el.scrollWidth - el.clientWidth > SCROLL_ROUNDING;\n};\n\n// @ts-ignore\nconst hasVerticalScroll = (el) => {\n\treturn el && el.scrollHeight - el.clientHeight > SCROLL_ROUNDING;\n};\n\n/**\n * \"Scroll bounds\" is a special case consideration for VTB, where scrolling needs to be restricted\n * within some bounds.\n * Usage is to add a property on the element, __auto_scroll_x_bounds__ (or) __auto_scroll_y_bounds__\n * Expected format: Array<Number>[minScroll, maxScroll]\n * */\n// @ts-ignore\nconst scrollWithinXBounds = (el, dScroll) => {\n\tif (el.__auto_scroll_x_bounds__) {\n\t\tconst scrollBounds = el.__auto_scroll_x_bounds__;\n\t\tconst newScroll = el.scrollLeft + dScroll;\n\t\treturn newScroll >= scrollBounds[0] && newScroll <= scrollBounds[1];\n\t}\n\treturn true;\n};\n\n// @ts-ignore\nconst scrollWithinYBounds = (el, dScroll) => {\n\tif (el.__auto_scroll_y_bounds__) {\n\t\tconst scrollBounds = el.__auto_scroll_y_bounds__; // [300, 1200]\n\t\tconst newScroll = el.scrollTop + dScroll; // 627\n\t\treturn newScroll >= scrollBounds[0] && newScroll <= scrollBounds[1];\n\t}\n\treturn true;\n};\n\n// @ts-ignore\nconst canScrollLeft = (el, dScrollLeft) => {\n\tif (dScrollLeft > 0) {\n\t\t// Scrolling right in the scrollable content (content moves left)\n\t\tconst remainingScroll = Math.round(\n\t\t\tel.scrollWidth - el.scrollLeft - el.clientWidth\n\t\t);\n\t\treturn remainingScroll > 0;\n\t}\n\n\treturn Math.round(el.scrollLeft) > 0;\n};\n\n// @ts-ignore\nconst canScrollTop = (el, dScrollTop) => {\n\tif (dScrollTop > 0) {\n\t\t// Scrolling down in the scrollable content (content moves up)\n\t\tconst remainingScroll = Math.round(\n\t\t\tel.scrollHeight - el.scrollTop - el.clientHeight\n\t\t);\n\t\treturn remainingScroll > 0;\n\t}\n\n\treturn Math.round(el.scrollTop) > 0;\n};\n\nexport const handleAutoScroll = (\n\t// @ts-ignore\n\tconfig,\n\t// @ts-ignore\n\tmovingElem,\n\t// @ts-ignore\n\txScrollParent,\n\t// @ts-ignore\n\tyScrollParent,\n\t// @ts-ignore\n\tdx,\n\t// @ts-ignore\n\tdy,\n\t// @ts-ignore\n\tevent\n) => {\n\tconst elemRect =\n\t\tevent && config.followMouseForAutoScroll\n\t\t\t? event.rect\n\t\t\t: movingElem.getBoundingClientRect();\n\tconst lockAxis = config.lockAxis || null;\n\n\txScrollParent = getElement(xScrollParent);\n\tyScrollParent = getElement(yScrollParent);\n\n\tconst xScrollParentRect = xScrollParent.getBoundingClientRect();\n\tconst yScrollParentRect = yScrollParent.getBoundingClientRect();\n\n\t// compute possible distances to all edges (of parent container) if this dx is applied\n\tconst distanceRight = Math.floor(\n\t\txScrollParentRect.right - (elemRect.right + dx)\n\t);\n\tconst distanceLeft = Math.floor(\n\t\telemRect.left + dx - xScrollParentRect.left\n\t);\n\n\t// compute possible distances to all edges (of parent container) if this dy is applied\n\tconst distanceBottom = Math.floor(\n\t\tyScrollParentRect.bottom - (elemRect.bottom + dy)\n\t);\n\tconst distanceTop = Math.floor(elemRect.top + dy - yScrollParentRect.top);\n\t// The above distances should be within the allowed limit, otherwise scrolling will be required\n\tlet horizontalScroll = 0;\n\tlet verticalScroll = 0;\n\n\tif (lockAxis !== 'y' && hasHorizontalScroll(xScrollParent)) {\n\t\tif (distanceRight <= OFFSET_X) {\n\t\t\tconst scrollRequired = Math.max(\n\t\t\t\tOFFSET_X - distanceRight,\n\t\t\t\tMIN_SCROLL_CHANGE\n\t\t\t);\n\t\t\tif (canScrollLeft(xScrollParent, scrollRequired))\n\t\t\t\thorizontalScroll = scrollRequired;\n\t\t} else if (distanceLeft <= OFFSET_X) {\n\t\t\tconst scrollRequired =\n\t\t\t\t-1 * Math.max(OFFSET_X - distanceLeft, MIN_SCROLL_CHANGE);\n\t\t\tif (canScrollLeft(xScrollParent, scrollRequired))\n\t\t\t\thorizontalScroll = scrollRequired;\n\t\t}\n\t}\n\n\tif (lockAxis !== 'x' && hasVerticalScroll(yScrollParent)) {\n\t\tif (distanceBottom < OFFSET_Y) {\n\t\t\tconst scrollRequired = Math.max(\n\t\t\t\tOFFSET_Y - distanceBottom,\n\t\t\t\tMIN_SCROLL_CHANGE\n\t\t\t);\n\t\t\tif (canScrollTop(yScrollParent, scrollRequired))\n\t\t\t\tverticalScroll = scrollRequired;\n\t\t} else if (distanceTop < OFFSET_Y) {\n\t\t\tconst scrollRequired =\n\t\t\t\t-1 * Math.max(OFFSET_Y - distanceTop, MIN_SCROLL_CHANGE);\n\t\t\tif (canScrollTop(yScrollParent, scrollRequired))\n\t\t\t\tverticalScroll = scrollRequired;\n\t\t}\n\t}\n\n\tif (horizontalScroll !== 0) {\n\t\tif (scrollWithinXBounds(xScrollParent, horizontalScroll))\n\t\t\txScrollParent.scrollLeft += horizontalScroll;\n\t}\n\n\tif (verticalScroll !== 0) {\n\t\tif (scrollWithinYBounds(yScrollParent, verticalScroll)) {\n\t\t\tyScrollParent.scrollTop += verticalScroll;\n\t\t}\n\t}\n\n\t// if no auto-scrolling, dx and dy remains same\n\treturn {\n\t\tscrollX: horizontalScroll,\n\t\tscrollY: verticalScroll,\n\t};\n};\n","// @ts-nocheck\nimport { v4 as uuidv4 } from 'uuid';\n\nclass Sortable {\n\t// @ts-ignore\n\tconstructor(config) {\n\t\t// TODO: Document each of the property used here\n\n\t\tthis.uuid = uuidv4();\n\n\t\tthis.active = false;\n\n\t\tthis.dataTransfer = {\n\t\t\tsourceIndex: -1,\n\t\t\tdestinationIndex: -1,\n\t\t\tsourceParent: null,\n\t\t\tdestinationParent: null,\n\t\t};\n\n\t\tthis.transition = !!config.transitions;\n\n\t\tthis.listOrder = config.listOrder || null;\n\n\t\t// @ts-ignore\n\t\tthis.targetElement = null;\n\n\t\tthis.placeholders = {\n\t\t\tsrc: null,\n\t\t\tdest: null,\n\t\t};\n\n\t\tthis.clone = {\n\t\t\telement: null,\n\t\t\tposition: {\n\t\t\t\tx: null,\n\t\t\t\ty: null,\n\t\t\t\tdx: null,\n\t\t\t\tdy: null,\n\t\t\t},\n\t\t};\n\n\t\tthis.direction = {\n\t\t\tMIN_CHANGE: 1, // ignore moves smaller than this to avoid flickering\n\t\t\thorizontal: null,\n\t\t\tvertical: null,\n\t\t};\n\n\t\tthis.scroll = {\n\t\t\txElem: null,\n\t\t\tyElem: null,\n\t\t};\n\n\t\tthis.dropIndex = -1;\n\n\t\t// @ts-ignore\n\t\tthis.dropPosition = null;\n\n\t\t// @ts-ignore\n\t\tthis.dropzone = null;\n\n\t\t// @ts-ignore\n\t\tthis.extendedDropzone = null;\n\n\t\t// @ts-ignore\n\t\tthis.newIndex = null;\n\n\t\tthis.maxPositionableIndex = -1;\n\n\t\tthis.minPostionableIndex = -1;\n\t}\n}\n\nexport default Sortable;\n","// @ts-nocheck\nimport {\n\tclosestDeep,\n\tgetDOMRect,\n\tgetRelativePosition,\n\tquerySelectorAllDeep,\n\tremoveNode,\n\tseismicClone,\n} from '../../dom-utils';\nimport { NS_ACTIVE_SORT_ITEM, NS_SORT_CLONE } from '../constants';\n\n// @ts-ignore\nexport const css = (el, styles) => {\n\tfor (const [key, value] of styles) el.style[key] = value;\n};\n\n// @ts-ignore\nexport const cssFromStr = (el, cssStr) => {\n\tconst styles = cssStr.split(';');\n\t// @ts-ignore\n\tstyles.forEach((style) => {\n\t\t// @ts-ignore\n\t\tconst [key, value] = style.split(':').map((s) => s.trim());\n\t\tel.style[key] = value;\n\t});\n};\n\n// @ts-ignore\nexport const createAndInsertClone = (el, config) => {\n\tlet clone = null;\n\tlet customClone = false;\n\t// Check if a custom clone is provided, else try cloning it ourselves\n\tif (config.clone && typeof config.clone === 'function') {\n\t\tclone = config.clone.call(null, el);\n\t\tcustomClone = true;\n\t} else {\n\t\tclone = seismicClone(el);\n\t}\n\tclone.classList.add(NS_SORT_CLONE, NS_ACTIVE_SORT_ITEM);\n\n\tconst cloneParent = config.cloneAppendTo\n\t\t? closestDeep(el, config.cloneAppendTo)\n\t\t: document.body;\n\n\tif (!cloneParent) throw 'Incorrect parent for append clone'; // Handle this and append to body?\n\n\tconst cloningElemRect = getDOMRect(el);\n\t// @ts-ignore\n\tconst { left, top } = getRelativePosition(el, cloneParent);\n\n\tlet cloneStyles = `position: absolute;\n\t\ttop: ${top}px;\n\t\tleft: ${left}px;\n\t\tcursor: grabbing;\n\t\tuser-select: none;\n\t\ttouch-action: none;\n\t\ttransform-origin: 50% 50%;\n\t\tz-index: 9999;\n\t`;\n\n\tif (!customClone) {\n\t\t// If it is a custom clone, allow different dimensions\n\t\tcloneStyles = `\n\t\t\t${cloneStyles}\n\t\t\twidth: ${cloningElemRect.width}px;\n\t\t\theight: ${cloningElemRect.height}px;\n\t\t`;\n\t}\n\n\tcssFromStr(clone, cloneStyles);\n\n\t// Append the clone to the DOM\n\tcloneParent.appendChild(clone);\n\n\treturn clone;\n};\n\n// @ts-ignore\nexport const setClonePosition = (cloneEl, top = null, left = null) => {\n\tif (top) cssFromStr(cloneEl, `top: ${top}px;`);\n\n\tif (left) cssFromStr(cloneEl, `left: ${left}px;`);\n};\n\n// More performant way to move the clone around\n// If multiple transforms have to be applied, this is not useful\n// @ts-ignore\nexport const transformClonePosition = (cloneEl, x, y) => {\n\tcssFromStr(\n\t\tcloneEl,\n\t\t`\n\t\ttransform: translate(${x}px, ${y}px);\n\t`\n\t);\n};\n\nexport const removeClone = () => {\n\t// @ts-ignore\n\tquerySelectorAllDeep(`.${NS_SORT_CLONE}`, null, false).forEach(removeNode);\n};\n","// @ts-nocheck\n/**\n * An object with four coordinates\n * @typedef {{x1: Number, y1: Number, x2: Number, y2: Number}} RectangleObject\n */\n\n/**\n * Checks if two rectangles are intersecting/overlapping\n * @param  {RectangleObject}  rectA\n * @param  {RectangleObject}  rectB\n * @return {boolean}\n */\nconst isIntersecting = (rectA, rectB) =>\n\trectA.x1 < rectB.x2 &&\n\trectB.x1 < rectA.x2 &&\n\trectA.y1 < rectB.y2 &&\n\trectB.y1 < rectA.y2;\n\n/**\n * Returns intersecting part of two rectangles\n * @param  {RectangleObject}  rect1\n * @param  {RectangleObject}  rect2\n * @return {RectangleObject|null}\n */\nconst getOverlapRect = (rect1, rect2) => {\n\t// TODO: Need to revisit this logic again for corner/special cases\n\tconst [r1, r2] = [rect1, rect2].map((r) => {\n\t\treturn {\n\t\t\tx: [r.x1, r.x2].sort(),\n\t\t\ty: [r.y1, r.y2].sort(),\n\t\t};\n\t});\n\tconst noIntersect = !isIntersecting(rect1, rect2);\n\treturn noIntersect\n\t\t? null\n\t\t: {\n\t\t\t\tx1: Math.max(r1.x[0], r2.x[0]),\n\t\t\t\ty1: Math.max(r1.y[0], r2.y[0]),\n\t\t\t\tx2: Math.min(r1.x[1], r2.x[1]),\n\t\t\t\ty2: Math.min(r1.y[1], r2.y[1]),\n\t\t  };\n};\n\n/**\n * Transforms a {ClientRect|DOMRect} into a {RectangleObject}\n * @param {ClientRect|DOMRect|Object} domRect\n * @return {RectangleObject}\n */\nconst toRectangle = (domRect) => ({\n\tx1: domRect.left,\n\ty1: domRect.top,\n\tx2: domRect.left + domRect.width,\n\ty2: domRect.top + domRect.height,\n});\n\n/**\n * Return the center point of a {RectangleObject}\n * @param {RectangleObject} rect\n * @return {Point} center\n */\nconst rectCenter = (rect) => ({\n\tx: (rect.x1 + rect.x2) / 2,\n\ty: (rect.y1 + rect.y2) / 2,\n});\n\nconst edgeDistance = (rect1, rect2) => {\n\tif (isIntersecting(rect1, rect2)) return 0;\n\n\tconst minXRect1 = Math.min(rect1.x1, rect1.x2);\n\tconst minYRect1 = Math.min(rect1.y1, rect1.y2);\n\n\tconst minXRect2 = Math.min(rect2.x1, rect2.x2);\n\tconst minYRect2 = Math.min(rect2.y1, rect2.y2);\n\n\tconst maxXRect1 = Math.max(rect1.x1, rect1.x2);\n\tconst maxYRect1 = Math.max(rect1.y1, rect1.y2);\n\n\tconst maxXRect2 = Math.max(rect2.x1, rect2.x2);\n\tconst maxYRect2 = Math.max(rect2.y1, rect2.y2);\n\n\tlet xDistance = 0,\n\t\tyDistance = 0;\n\n\tif (minXRect1 >= maxXRect2) {\n\t\txDistance = Math.max(minXRect1 - maxXRect2, 0);\n\t} else {\n\t\txDistance = Math.max(minXRect2 - maxXRect1, 0);\n\t}\n\n\tif (minYRect1 >= maxYRect2) {\n\t\tyDistance = Math.abs(maxYRect2 - minYRect1);\n\t} else {\n\t\tyDistance = Math.abs(maxYRect1 - minYRect2);\n\t}\n\n\tif (\n\t\t(rect1.x1 <= rect2.x1 && rect1.x2 >= rect2.x1) ||\n\t\t(rect1.x1 <= rect2.x2 && rect1.x2 >= rect2.x2)\n\t) {\n\t\t// There is an X-overlap\n\t\txDistance = 0;\n\t}\n\n\tif (\n\t\t(rect1.y1 <= rect2.y1 && rect1.y2 >= rect2.y1) ||\n\t\t(rect1.y1 <= rect2.y2 && rect1.y2 >= rect2.y2)\n\t) {\n\t\t// There is a Y-overlap\n\t\tyDistance = 0;\n\t}\n\n\treturn Math.sqrt(Math.pow(xDistance, 2) + Math.pow(yDistance, 2));\n};\n\n/**\n * @param {ClientRect|DOMRect} domRectA\n * @param {ClientRect|DOMRect} domRectB\n * @return {Number} overlapping area of the two DOM rectangles\n */\nconst getOverlapArea = (domRectA, domRectB) => {\n\tconst [r1, r2] = [domRectA, domRectB].map(toRectangle);\n\treturn getRectOverlapArea(r1, r2);\n};\n\n/**\n * @param {RectangleObject} rectA\n * @param {RectangleObject} rectB\n * @return {Number} overlapping area of the two rectangles\n */\nconst getRectOverlapArea = (rectA, rectB) => {\n\tconst overlapRect = getOverlapRect(rectA, rectB);\n\tif (overlapRect) return rectArea(overlapRect);\n\n\treturn 0;\n};\n\n/**\n * Calculate the area of a rectangle\n * @param {RectangleObject} rect\n * @return {Number} area\n * */\nconst rectArea = (rect) => {\n\tconst length = Math.abs(rect.x1 - rect.x2);\n\tconst breadth = Math.abs(rect.y1 - rect.y2);\n\treturn length * breadth;\n};\n\n/**\n * Checks if two {ClientRect|DOMRect} rectangles are overlapping\n * @param  {ClientRect|DOMRect}  rectA\n * @param  {ClientRect|DOMRect}  rectB\n * @return {boolean}\n */\nconst isClientRectIntersecting = (rectA, rectB) => {\n\treturn isIntersecting(toRectangle(rectA), toRectangle(rectB));\n};\n\nconst QUADRANTS = {\n\tTL: 'Top Left',\n\tTR: 'Top Right',\n\tBR: 'Bottom Right',\n\tBL: 'Bottom Left',\n};\n\n/**\n * @param {String} quadrant\n * @param {ClientRect|DOMRect } rect\n * @return {ClientRect} new client rect object for the quadrant\n */\nconst getQuadrantRect = (quadrant, rect) => {\n\tconst newRect = {\n\t\t...cloneDOMRect(rect),\n\t\twidth: rect.width / 2,\n\t\theight: rect.height / 2, // Each quadrant can only be 1/4th of the rectangle area\n\t};\n\tswitch (quadrant) {\n\t\tcase QUADRANTS.TL:\n\t\t\tnewRect.bottom = newRect.top + newRect.height;\n\t\t\tnewRect.right = newRect.left + newRect.width;\n\t\t\tbreak;\n\t\tcase QUADRANTS.TR:\n\t\t\tnewRect.left = newRect.x = newRect.left + newRect.width;\n\t\t\tnewRect.bottom = newRect.top + newRect.height;\n\t\t\tbreak;\n\t\tcase QUADRANTS.BR:\n\t\t\tnewRect.left = newRect.x = newRect.left + newRect.width;\n\t\t\tnewRect.top = newRect.y = newRect.top + newRect.height;\n\t\t\tbreak;\n\t\tcase QUADRANTS.BL:\n\t\t\tnewRect.top = newRect.y = newRect.top + newRect.height;\n\t\t\tnewRect.right = newRect.left + newRect.width;\n\t\t\tbreak;\n\t}\n\treturn newRect;\n};\n\n/**\n * Clone a {ClientRect|DOMRect} into a similar plain object\n * @param {ClientRect|DOMRect} domRect\n * @return {Object} object with all the values of domRect\n * */\nconst cloneDOMRect = (domRect) => ({\n\tleft: domRect.left,\n\tright: domRect.right,\n\ttop: domRect.top,\n\tbottom: domRect.bottom,\n\twidth: domRect.width,\n\theight: domRect.height,\n\tx: domRect.x,\n\ty: domRect.y,\n});\n\n/**\n * Checks intersection of the items matching with {String} selector with the {Node} elem\n *\n * @param {HTMLElement} draggingEl\n * @param {HTMLElement[]} sortableEls\n * @return {Object[]} Array with the details of overlapping items\n * details include the element itself, its rectangle, overlapping area (overall and for each quadrant)\n * */\nconst getIntersectingItems = (draggingEl, sortableEls) => {\n\t// TODO: Optimize!\n\t// This method is called on every dragmove, hence it is expensive to query all items and then calculate their rects\n\tconst dragElRect = draggingEl.getBoundingClientRect();\n\tconst items = sortableEls.map((item) => ({\n\t\titem,\n\t\trect: item.getBoundingClientRect(), // TODO: Optimize! See if caching of some rects can help here\n\t\tintersectingArea: 0,\n\t\tquadrants: [],\n\t}));\n\n\t// Find how many elements (rects) intersect with dragging elem (dragElRect)\n\tconst intersectingItems = items.filter((item) =>\n\t\tisClientRectIntersecting(item.rect, dragElRect)\n\t);\n\tintersectingItems.forEach((item) => {\n\t\titem.intersectingArea = Math.floor(\n\t\t\tgetOverlapArea(item.rect, dragElRect)\n\t\t);\n\t\t// Calculate the overlap of each quadrant\n\t\titem.quadrants = Object.values(QUADRANTS).reduce((acc, quad) => {\n\t\t\tconst overlapArea = Math.floor(\n\t\t\t\tgetOverlapArea(getQuadrantRect(quad, item.rect), dragElRect)\n\t\t\t);\n\t\t\treturn {\n\t\t\t\t...acc,\n\t\t\t\t[quad]: {\n\t\t\t\t\toverlapArea: overlapArea,\n\t\t\t\t\toverlapping: overlapArea > 0,\n\t\t\t\t},\n\t\t\t};\n\t\t}, {});\n\t});\n\n\treturn intersectingItems;\n};\n\nexport {\n\tisIntersecting,\n\tgetOverlapArea,\n\tgetRectOverlapArea,\n\tisClientRectIntersecting,\n\tQUADRANTS,\n\tgetQuadrantRect,\n\tgetIntersectingItems,\n\ttoRectangle,\n\trectCenter,\n\tedgeDistance,\n\tcloneDOMRect,\n\trectArea,\n\tgetOverlapRect,\n};\n","// @ts-nocheck\nimport {\n\tgetDOMRect,\n\tisConnected,\n\tquerySelectorAllDeep,\n\tremoveNode,\n\tinsertBefore,\n} from '../../dom-utils';\nimport { getIntersectingItems, QUADRANTS } from '../../utils/rectangle';\nimport {\n\tNS_DEST_PLACEHOLDER,\n\tNS_ACTIVE_SORT_ITEM,\n\tNS_DRAGGING_SOURCE,\n\tNS_SORT_TRANSITIONED,\n\tNS_SOURCE_PLACEHOLDER,\n\tNS_DEFAULT_PLACEHOLDER,\n} from '../constants';\n\nconst removeSrcPlaceholders = () => {\n\tquerySelectorAllDeep(`.${NS_SOURCE_PLACEHOLDER}`, null, false).forEach(\n\t\tremoveNode\n\t);\n};\n\nconst removeDestPlaceholders = () => {\n\tquerySelectorAllDeep(`.${NS_DEST_PLACEHOLDER}`, null, false).forEach(\n\t\tremoveNode\n\t);\n};\n\nconst removeTransitions = () => {\n\tquerySelectorAllDeep(\n\t\t`.${NS_SORT_TRANSITIONED}, .${NS_ACTIVE_SORT_ITEM}`,\n\t\tnull,\n\t\tfalse\n\t).forEach((node) => {\n\t\tnode.classList.remove(NS_SORT_TRANSITIONED, NS_ACTIVE_SORT_ITEM);\n\t\tnode.style.transition = '';\n\t\tnode.style.transform = '';\n\t});\n};\n\nconst createPlaceholder = (tagName, el, message = '') => {\n\tconst placeholder = document.createElement(tagName);\n\tconst { width, height } = el.getBoundingClientRect();\n\tplaceholder.width = width;\n\tplaceholder.height = height;\n\tplaceholder.label = message;\n\n\t// Default placeholder element doesn't have content, so requires minimum size\n\tif (tagName === NS_DEFAULT_PLACEHOLDER) {\n\t\tplaceholder.style.minWidth = `${width}px`;\n\t\tplaceholder.style.minHeight = `${height}px`;\n\t}\n\n\treturn placeholder;\n};\n\nconst addSortableDestPlaceholderClass = (el) =>\n\tel && el.classList.add(NS_DEST_PLACEHOLDER);\n\nconst addSortableSrcPlaceholderClass = (el) =>\n\tel && el.classList.add(NS_SOURCE_PLACEHOLDER);\n\nconst insertPlaceholder = (position = 'next', item, placeholder) => {\n\tswitch (position) {\n\t\tcase 'prev':\n\t\t\titem.parentNode.insertBefore(placeholder, item);\n\t\t\treturn true;\n\t\tcase 'next':\n\t\t\tif (!item.nextSibling) {\n\t\t\t\titem.parentNode.appendChild(placeholder);\n\t\t\t} else {\n\t\t\t\titem.parentNode.insertBefore(placeholder, item.nextSibling);\n\t\t\t}\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\n// \"itemsContainer\" parameter here can be confusing. It is not referring to the large droppable (empty) that can be\n// present in some cases, but instead the container where the sortable items go in. So all children of \"dropzone\"\n// should be sortable items\nconst insertPlaceholderAtIndex = (\n\titemsContainer,\n\tindex,\n\titemsSelector,\n\tplaceholder\n) => {\n\tconst elems = Array.prototype.slice.call(itemsContainer.children);\n\tconst sortableItems = elems.filter((el) => el.matches(itemsSelector));\n\n\tremoveNode(placeholder);\n\n\tif (sortableItems[index]) {\n\t\t// Put the placeholder before sortableItems[index]\n\t\t// Cannot insert the destination placeholder here if it is source position\n\t\tif (canPutPlaceholder(sortableItems[index], 'prev')) {\n\t\t\titemsContainer.insertBefore(placeholder, sortableItems[index]);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\t// index is the going to be last element, just append it to 'itemsContainer'\n\t\tconst lastItem =\n\t\t\titemsContainer.children[itemsContainer.children.length - 1];\n\t\tif (canPutPlaceholder(lastItem, 'next')) {\n\t\t\titemsContainer.appendChild(placeholder);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\nconst canPutPlaceholder = (item, position) => {\n\tif (!item) return true;\n\n\tswitch (position) {\n\t\tcase 'prev':\n\t\t\treturn item.previousSibling\n\t\t\t\t? !item.previousSibling.matches(`.${NS_SOURCE_PLACEHOLDER}`) &&\n\t\t\t\t\t\t!item.previousSibling.matches(`.${NS_DRAGGING_SOURCE}`)\n\t\t\t\t: !item.matches(`.${NS_SOURCE_PLACEHOLDER}`) &&\n\t\t\t\t\t\t!item.matches(`.${NS_DRAGGING_SOURCE}`);\n\t\tcase 'next':\n\t\t\treturn item.nextSibling\n\t\t\t\t? !item.nextSibling.matches(`.${NS_SOURCE_PLACEHOLDER}`) &&\n\t\t\t\t\t\t!item.nextSibling.matches(`.${NS_DRAGGING_SOURCE}`)\n\t\t\t\t: !item.matches(`.${NS_SOURCE_PLACEHOLDER}`) &&\n\t\t\t\t\t\t!item.matches(`.${NS_DRAGGING_SOURCE}`);\n\t\tdefault:\n\t\t\treturn true;\n\t}\n};\n\nfunction isPositionBefore(element, referenceElement, order) {\n\tconst elRect = getDOMRect(element);\n\tconst refElRect = getDOMRect(referenceElement);\n\tswitch (order) {\n\t\tcase 'horizontal':\n\t\t\treturn elRect.left + elRect.width < refElRect.left;\n\t\tcase 'vertical':\n\t\t\treturn elRect.top + elRect.height < refElRect.top;\n\t}\n\treturn false;\n}\n\n/**\n * This function is responsible for updating the DOM position of the destination placeholder.\n * When dragging an element, the placeholder element will change positions to highlight\n * where the item will be dropped.\n *\n * There are calculations here to check the overlap of the dragging element with other elements, and\n * then to decide where the placeholder should appear to indicate a possible drop location.\n *\n * @param {HTMLElement} cloneEl - the element that is being dragged (may be a clone)\n * @param {HTMLElement[]} sortableEls - an array of elements among which the item can be possibly placed\n * @param {HTMLElement} dropzone - the parent element of the items.\n * \t\t\t\t\t\tUseful if there are no items, to put drop area here\n * @param {HTMLElement[]} extDropzone - An extended dropzone element, where the clone can be moved and\n * \t\t\t\t\t\tstill qualify for a proper drop in the dropzone\n * @param {HTMLElement} srcPlaceholder - the source placeholder to test the clone's overlap against\n * @param {HTMLElement} destPlaceholder - the destination placeholder to test the clone's overlap against\n * @param {String} listOrder - a string indicating whether the sortable list is horizontal or vertical\n * */\nconst predictDestPlaceholder = (\n\tcloneEl,\n\tsortableEls,\n\tdropzone,\n\textDropzone,\n\tsrcPlaceholder,\n\tdestPlaceholder,\n\tlistOrder\n) => {\n\t// itemSelector = `${itemSelector}:not(.${NS_ACTIVE_SORT_ITEM}):not(.${NS_DRAGGING_SOURCE})`;\n\n\t// An item can have a placeholder adjacent to it, only if the dragging element is intersecting\n\t// with all four of it's quadrants (at least by some amount)\n\tconst intersectingItems = getIntersectingItems(cloneEl, sortableEls).filter(\n\t\t(item) => !Object.values(item.quadrants).some((q) => !q.overlapping)\n\t);\n\n\t// console.log('intersecting items', intersectingItems);\n\n\t// At this point, if there are intersecting items, then the \"drop-area\" (placeholder) will go either above or\n\t// below the most intersecting item..\n\t// And if there are no intersecting items, then we just check if we are hovering over a possible dropzone, and\n\t// if so, then we show a \"drop-area\" (placeholder) somewhere in that dropzone\n\n\tif (!intersectingItems.length) {\n\t\t// None of the item is intersecting, so few cases to consider now\n\t\t// 1. The dragged item could be intersecting the most with the drag-source placeholder\n\t\t// 2. The dragged item could be intersecting the most with the drop placeholder\n\t\t// 3. The dragged item could be hovering over a possible drop zone, not intersecting with anything\n\n\t\tif (isConnected(srcPlaceholder)) {\n\t\t\tconst srcElIntersect = getIntersectingItems(cloneEl, [\n\t\t\t\tsrcPlaceholder,\n\t\t\t]).filter(\n\t\t\t\t(item) =>\n\t\t\t\t\t!Object.values(item.quadrants).some((q) => !q.overlapping)\n\t\t\t);\n\t\t\tif (srcElIntersect.length && srcElIntersect[0].item) {\n\t\t\t\tremoveNode(destPlaceholder);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (isConnected(destPlaceholder)) {\n\t\t\tconst destElIntersect = getIntersectingItems(cloneEl, [\n\t\t\t\tdestPlaceholder,\n\t\t\t]).filter(\n\t\t\t\t(item) =>\n\t\t\t\t\t!Object.values(item.quadrants).some((q) => !q.overlapping)\n\t\t\t);\n\t\t\tif (destElIntersect.length && destElIntersect[0].item) return false;\n\t\t}\n\n\t\t// Clone is NOT intersecting with any 'items'\n\t\t// Clone is NOT intersecting with the source placeholder\n\t\t// Clone is NOT intersecting with the destination placeholder\n\t\t// Only possible case now, is to just append the placeholder last in the 'dropzone'\n\n\t\tconst hoveringDropzone = extDropzone || dropzone;\n\t\tconst dzIntersect = getIntersectingItems(cloneEl, [\n\t\t\thoveringDropzone,\n\t\t]).filter(\n\t\t\t(item) => !Object.values(item.quadrants).some((q) => !q.overlapping)\n\t\t);\n\t\tif (dzIntersect.length && dzIntersect[0].item) return false;\n\n\t\t// Clone is being hovered over a valid dropzone, so drop placeholder is needed inside the 'dropzone' element\n\t\tlet firstItemInDropzone = null,\n\t\t\tlastItemInDropzone = null;\n\n\t\tif (dropzone.children && dropzone.children.length) {\n\t\t\tfirstItemInDropzone = dropzone.children[0];\n\t\t\tlastItemInDropzone =\n\t\t\t\tdropzone.children[dropzone.children.length - 1];\n\t\t}\n\n\t\t// Hovering over an empty dropzone (no items)\n\t\tif (dropzone.children.length === 0) {\n\t\t\tif (!canPutPlaceholder(firstItemInDropzone, 'prev')) {\n\t\t\t\tremoveNode(destPlaceholder);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdropzone.appendChild(destPlaceholder);\n\t\t\treturn true;\n\t\t}\n\n\t\t// Hovering over a dropzone that has items in it\n\t\t// Check if the dragged clone is hovering above the first item, or below the last item\n\t\tif (isPositionBefore(cloneEl, firstItemInDropzone, listOrder)) {\n\t\t\t// placeholder should go above the first item\n\t\t\tif (!canPutPlaceholder(firstItemInDropzone, 'prev')) {\n\t\t\t\tremoveNode(destPlaceholder);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tinsertBefore(destPlaceholder, firstItemInDropzone);\n\t\t} else if (isPositionBefore(lastItemInDropzone, cloneEl, listOrder)) {\n\t\t\t// placeholder should go below the last item\n\t\t\tif (!canPutPlaceholder(lastItemInDropzone, 'next')) {\n\t\t\t\tremoveNode(destPlaceholder);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdropzone.appendChild(destPlaceholder);\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Among these eligible items, break the ties by considering the one with most overlapping area\n\tconst mostOverlappingItem = intersectingItems\n\t\t.slice()\n\t\t.sort((a, b) => a.intersectingArea - b.intersectingArea)\n\t\t.pop();\n\n\t// console.log('most overlapping item', mostOverlappingItem);\n\n\tremoveNode(destPlaceholder);\n\n\tconst { item, quadrants } = mostOverlappingItem;\n\n\t// Decide whether or not to show the placeholder\n\t// Placeholder will NOT be shown if:\n\t// 1. It appears above or below (OR left or right) to the dragging source\n\t// 2. The most eligible item is the drag source itself\n\n\t// The placeholder can now go \"above\" or \"below\" this eligible item\n\t// Break this tie considering the overlapping area in the top-half vs the bottom-half\n\tconst totalArea = (total, q) => total + quadrants[q].overlapArea;\n\tconst [topOverlap, bottomOverlap, leftOverlap, rightOverlap] = [\n\t\t[QUADRANTS.TL, QUADRANTS.TR].reduce(totalArea, 0),\n\t\t[QUADRANTS.BL, QUADRANTS.BR].reduce(totalArea, 0),\n\t\t[QUADRANTS.TL, QUADRANTS.BL].reduce(totalArea, 0),\n\t\t[QUADRANTS.TR, QUADRANTS.BR].reduce(totalArea, 0),\n\t];\n\n\t// TODO: Consider that previousSibling/nextSibling could be visually 'hidden'\n\n\tif (\n\t\ttopOverlap > bottomOverlap ||\n\t\t(topOverlap === bottomOverlap && leftOverlap > rightOverlap)\n\t) {\n\t\tif (canPutPlaceholder(item, 'prev')) {\n\t\t\tinsertPlaceholder('prev', item, destPlaceholder);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\tif (canPutPlaceholder(item, 'next')) {\n\t\t\tinsertPlaceholder('next', item, destPlaceholder);\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nexport {\n\tremoveDestPlaceholders,\n\tremoveSrcPlaceholders,\n\tremoveTransitions,\n\tinsertPlaceholder,\n\tcreatePlaceholder,\n\taddSortableDestPlaceholderClass,\n\taddSortableSrcPlaceholderClass,\n\tpredictDestPlaceholder,\n\tinsertPlaceholderAtIndex,\n\tisPositionBefore,\n};\n","// @ts-nocheck\nimport isFunction from 'lodash/isFunction';\n\nimport {\n\tclosestDeep,\n\telemIndex,\n\tgetRelativePosition,\n\tinsertAfter,\n\tquerySelectorAllDeep,\n} from '../../dom-utils';\nimport {\n\tSORT_END,\n\tSORT_START,\n\tDROP_AREA_CHANGE,\n\tNS_ACTIVE_SORT_ITEM,\n\tNS_SOURCE_PLACEHOLDER,\n\tNS_DEST_PLACEHOLDER,\n\tNS_DRAGGING_SOURCE,\n\tSORT_CANCELLED,\n} from '../constants';\n\nimport { handleAutoScroll } from './auto-scroll';\nimport Sortable from './class';\nimport {\n\tcreateAndInsertClone,\n\tremoveClone,\n\tsetClonePosition,\n\ttransformClonePosition,\n} from './clone';\nimport {\n\tgetDropPosition,\n\tgetElement,\n\tgetSourcePosition,\n\tgetValidRange,\n\tsetValidYPosition,\n} from './helpers';\nimport {\n\tcreatePlaceholder,\n\tinsertPlaceholderAtIndex,\n\tremoveDestPlaceholders,\n\tremoveSrcPlaceholders,\n\taddSortableDestPlaceholderClass,\n\taddSortableSrcPlaceholderClass,\n\tpredictDestPlaceholder,\n} from './placeholder';\n\nexport const LIST_ORDER = { VERTICAL: 'vertical', HORIZONTAL: 'horizontal' };\n\nconst DIRECTIONS = {\n\tLEFT: 'left',\n\tRIGHT: 'right',\n\tUP: 'up',\n\tDOWN: 'down',\n};\n\nexport const sortInteraction = (config, dispatch) => {\n\t// TODO: Document each property of the below 'sortable' object\n\tconst sortable = new Sortable(config);\n\n\tfunction getTargetElem(event, config) {\n\t\tif (config && config.handle) {\n\t\t\t// Event initiated at the handle element, so dragged element is some ancestor of this\n\t\t\t// the closest parent that matches 'config.items'\n\t\t\treturn closestDeep(event.target, config.items);\n\t\t}\n\t\t// If 'handle' is not used, event can only be triggered by the sortable element only\n\t\treturn event.target;\n\t}\n\n\tfunction setMoveDirection(dx, dy) {\n\t\tif (dx !== 0) {\n\t\t\tif (dx < -sortable.direction.MIN_CHANGE) {\n\t\t\t\tsortable.direction.horizontal = DIRECTIONS.LEFT;\n\t\t\t} else if (dx > sortable.direction.MIN_CHANGE) {\n\t\t\t\tsortable.direction.horizontal = DIRECTIONS.RIGHT;\n\t\t\t}\n\t\t}\n\t\tif (dy !== 0) {\n\t\t\tif (dy < -sortable.direction.MIN_CHANGE) {\n\t\t\t\tsortable.direction.vertical = DIRECTIONS.UP;\n\t\t\t} else if (dy > sortable.direction.MIN_CHANGE) {\n\t\t\t\tsortable.direction.vertical = DIRECTIONS.DOWN;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction setDirectionStylesOnClone() {\n\t\tconst classes = [\n\t\t\t`horizontal-dir-${DIRECTIONS.LEFT}`,\n\t\t\t`horizontal-dir-${DIRECTIONS.RIGHT}`,\n\t\t\t`vertical-dir-${DIRECTIONS.UP}`,\n\t\t\t`vertical-dir-${DIRECTIONS.DOWN}`,\n\t\t];\n\t\tconst horizontalCls = sortable.direction.horizontal\n\t\t\t? `horizontal-dir-${sortable.direction.horizontal}`\n\t\t\t: '';\n\t\tconst verticalCls = sortable.direction.vertical\n\t\t\t? `vertical-dir-${sortable.direction.vertical}`\n\t\t\t: '';\n\t\tconst clone = sortable.clone.element;\n\n\t\tclasses.forEach((cls) => {\n\t\t\tif (cls !== horizontalCls && cls !== verticalCls)\n\t\t\t\tclone.classList.remove(cls);\n\t\t});\n\n\t\tif (horizontalCls && !clone.classList.contains(horizontalCls)) {\n\t\t\tclone.classList.add(horizontalCls);\n\t\t\tclone.horizontalDragDirection = horizontalCls; // to trigger prop change\n\t\t}\n\t\tif (verticalCls && !clone.classList.contains(verticalCls)) {\n\t\t\tclone.classList.add(verticalCls);\n\t\t\tclone.verticalDragDirection = verticalCls; // to trigger prop change\n\t\t}\n\t}\n\n\tfunction getSortableItemsSelector() {\n\t\t// The items that are sortable in the list, except for the placeholders and the clone\n\t\treturn (\n\t\t\t`${config.items}` +\n\t\t\t`:not(.${NS_SOURCE_PLACEHOLDER})` +\n\t\t\t`:not(.${NS_DRAGGING_SOURCE})` +\n\t\t\t`:not(.${NS_DEST_PLACEHOLDER})` +\n\t\t\t`:not(.${NS_ACTIVE_SORT_ITEM})`\n\t\t);\n\t}\n\n\tfunction getSortableElements(dropzone) {\n\t\treturn querySelectorAllDeep(\n\t\t\tgetSortableItemsSelector(),\n\t\t\tdropzone,\n\t\t\tfalse\n\t\t);\n\t}\n\n\tfunction resetTargetElemStyles() {\n\t\tconst elem = sortable.targetElement;\n\t\telem.style.display = elem._oldDisplay;\n\t\telem.classList.remove(NS_DRAGGING_SOURCE);\n\t}\n\n\tfunction hideTargetElem() {\n\t\tsortable.targetElement._oldDisplay =\n\t\t\tsortable.targetElement.style.display;\n\t\tsortable.targetElement.style.display = 'none'; // Hide the element that is being dragged\n\t\tsortable.targetElement.classList.add(NS_DRAGGING_SOURCE);\n\t}\n\n\tfunction resetSortableData() {\n\t\tsortable.dropIndex = -1;\n\t\tsortable.dropPosition = null;\n\t\tsortable.dropzone = null;\n\t\tsortable.clone.element = null;\n\t\tsortable.clone.position.x = null;\n\t\tsortable.clone.position.y = null;\n\t\tsortable.dataTransfer = {};\n\t\tsortable.active = false;\n\t}\n\n\tfunction updateScrollParents() {\n\t\tconst dropzone = sortable.dropzone;\n\t\tsortable.scroll.xElem = dropzone.matches(config.xScrollParent)\n\t\t\t? dropzone\n\t\t\t: closestDeep(dropzone, config.xScrollParent);\n\n\t\tsortable.scroll.yElem = dropzone.matches(config.yScrollParent)\n\t\t\t? dropzone\n\t\t\t: closestDeep(dropzone, config.yScrollParent);\n\n\t\tif (sortable.scroll.yElem) {\n\t\t\tsortable.maxYScroll = sortable.scroll.yElem.scrollHeight;\n\t\t}\n\t}\n\n\tfunction getItemRect(item) {\n\t\t// left and top position should be with respect to the parent where the clone appends\n\t\tconst relativeParent = config.cloneAppendTo\n\t\t\t? getElement(config.cloneAppendTo)\n\t\t\t: document.body;\n\t\treturn getRelativePosition(item, relativeParent);\n\t}\n\n\t/**\n\t * RULES:\n\t * (just going to write things as I decide them and want to stick to them\n\t *\n\t * 1. There is a mandatory 'dropzone' and there is an optional 'extendedDropzone'.\n\t * 2. 'dropzone' is always the container whose children are sortable elements\n\t * 3. 'extendedDropzone' can be a super parent to `dropzone`, only intended to allow\n\t * \t   flexible drop locations.\n\t * 4. Responsibility of the adapters to decide the current active 'dropzone'\n\t * 5. 'extendedDropzone' doesn't seem useful in Keyboard sortable interaction\n\t * 6. Only one \"sort\" action is allowed per window i.e. you cannot leave a sort (say by\n\t * \t\tkeyboard) in progress and then start sorting another list by mouse/touch. The first\n\t * \t\tone will be cancelled.\n\t * */\n\n\t// DOM Manipulations here\n\tfunction render_PixelChange(event, config) {\n\t\t// Step 1: Check if dx and dy will require scroll, if yes, perform it and get adjusted dx, dy\n\t\tlet { dx, dy } = sortable.clone.position;\n\t\tconst { scrollX, scrollY } = handleAutoScroll(\n\t\t\tconfig,\n\t\t\tsortable.clone.element,\n\t\t\tsortable.scroll.xElem,\n\t\t\tsortable.scroll.yElem,\n\t\t\tdx,\n\t\t\tdy,\n\t\t\tevent\n\t\t);\n\n\t\t// Step 2: Move the dragging clone element there\n\t\tconst { position } = sortable.clone;\n\n\t\tif (config.followMouseForAutoScroll) {\n\t\t\tdx = dx + scrollX;\n\t\t\tdy = dy + scrollY;\n\t\t}\n\n\t\tposition.x += dx;\n\t\tposition.y += dy;\n\n\t\tsetValidYPosition(sortable, position);\n\n\t\ttransformClonePosition(sortable.clone.element, position.x, position.y);\n\n\t\t// Step 3: Set the direction of the move\n\t\tsetMoveDirection(dx, dy);\n\n\t\tsetDirectionStylesOnClone();\n\n\t\t// Step 4: Predict the position of the placeholder and update placeholder\n\t\tconst elemsInCurrentDropzone = getSortableElements(sortable.dropzone);\n\n\t\tpredictDestPlaceholder(\n\t\t\tsortable.clone.element,\n\t\t\telemsInCurrentDropzone,\n\t\t\tsortable.dropzone,\n\t\t\tsortable.extendedDropzone,\n\t\t\tsortable.placeholders.src,\n\t\t\tsortable.placeholders.dest,\n\t\t\tsortable.listOrder\n\t\t);\n\n\t\t// Placeholders are in place, the clone has been moved to its position, content has been scrolled\n\t\t// We are done with the changes to the DOM\n\t}\n\n\t// DOM Manipulations here\n\tfunction render_PositionChange(event) {\n\t\tconst { newIndex } = sortable;\n\t\tconst isSourcePosition = () =>\n\t\t\tnewIndex === sortable.dataTransfer.sourceIndex &&\n\t\t\tsortable.dropzone === sortable.dataTransfer.sourceParent;\n\n\t\t// Step 1: Based on the index, put the destination placeholder somewhere\n\t\tlet destRect = null;\n\t\tif (isSourcePosition()) {\n\t\t\t// No placeholder since the location is same as the starting index\n\t\t\tremoveDestPlaceholders();\n\t\t\tdestRect = getItemRect(sortable.placeholders.src);\n\t\t} else {\n\t\t\t// When 'position' updates happen, both \"placeholder\" and \"clone\" will be moved together\n\t\t\tconst inserted = insertPlaceholderAtIndex(\n\t\t\t\tsortable.dropzone,\n\t\t\t\tnewIndex,\n\t\t\t\tgetSortableItemsSelector(),\n\t\t\t\tsortable.placeholders.dest\n\t\t\t);\n\t\t\tdestRect = getItemRect(\n\t\t\t\tinserted\n\t\t\t\t\t? sortable.placeholders.dest\n\t\t\t\t\t: sortable.placeholders.src\n\t\t\t);\n\t\t}\n\n\t\t// Step 2: Use the destination placeholder's position and current clone positon to get dx, dy\n\t\tconst clonePosition = getItemRect(sortable.clone.element);\n\t\tconst dx = destRect.left - clonePosition.left;\n\t\tconst dy = destRect.top - clonePosition.top;\n\n\t\t// Step 3: Run the dx and dy through auto-scroll handler to get adjusted dx and dy.\n\t\t// Also the scrolling will be done if needed\n\t\tconst { scrollX, scrollY } = handleAutoScroll(\n\t\t\tconfig,\n\t\t\tsortable.clone.element,\n\t\t\tsortable.scroll.xElem,\n\t\t\tsortable.scroll.yElem,\n\t\t\tdx,\n\t\t\tdy,\n\t\t\tevent\n\t\t);\n\n\t\t// Step 4: Update the position of the clone on UI\n\t\tconst { position } = sortable.clone;\n\t\tposition.x = scrollX !== 0 ? null : destRect.left + 5;\n\t\tposition.y = scrollY !== 0 ? null : destRect.top + 5;\n\t\tsetClonePosition(sortable.clone.element, position.y, position.x);\n\n\t\t// Step 5: Set the direction of the move\n\t\tsetMoveDirection(dx, dy);\n\n\t\tsetDirectionStylesOnClone();\n\t}\n\n\tfunction isValidIndex(index) {\n\t\treturn (\n\t\t\tindex >= sortable.minPostionableIndex &&\n\t\t\tindex <= sortable.maxPositionableIndex\n\t\t);\n\t}\n\n\treturn {\n\t\tconfig,\n\t\tonStart(event) {\n\t\t\t// TODO: If there is already an active draggable in this session, complete it or cancel it!\n\t\t\tsortable.targetElement = getTargetElem(event, config);\n\t\t\tconst { minIndex, maxIndex } = getValidRange(\n\t\t\t\tsortable.targetElement,\n\t\t\t\tconfig\n\t\t\t);\n\t\t\tsortable.minPostionableIndex = minIndex;\n\t\t\tsortable.maxPositionableIndex = maxIndex;\n\n\t\t\tsortable.clone.element = createAndInsertClone(\n\t\t\t\tsortable.targetElement,\n\t\t\t\tconfig\n\t\t\t);\n\t\t\tif (!sortable.clone.element) throw new Error('Invalid drag clone');\n\n\t\t\t// Create source placeholder\n\t\t\tif (isFunction(config.customSourcePlaceholder))\n\t\t\t\tsortable.placeholders.src = config.customSourcePlaceholder.call(\n\t\t\t\t\tnull,\n\t\t\t\t\tsortable.targetElement\n\t\t\t\t);\n\t\t\telse\n\t\t\t\tsortable.placeholders.src = createPlaceholder(\n\t\t\t\t\tconfig.tagSourcePlaceholder,\n\t\t\t\t\tsortable.targetElement\n\t\t\t\t);\n\n\t\t\taddSortableSrcPlaceholderClass(sortable.placeholders.src);\n\n\t\t\t// Create destination placeholder\n\t\t\tif (isFunction(config.customDestPlaceholder))\n\t\t\t\tsortable.placeholders.dest = config.customDestPlaceholder.call(\n\t\t\t\t\tnull,\n\t\t\t\t\tsortable.targetElement\n\t\t\t\t);\n\t\t\telse\n\t\t\t\tsortable.placeholders.dest = createPlaceholder(\n\t\t\t\t\tconfig.tagDestPlaceholder,\n\t\t\t\t\tsortable.targetElement,\n\t\t\t\t\tconfig.destPlaceholderText\n\t\t\t\t);\n\n\t\t\taddSortableDestPlaceholderClass(sortable.placeholders.dest);\n\n\t\t\t// Hide the original element, and show placeholder instead\n\t\t\tif (!config.shouldNotHideTargetElement) {\n\t\t\t\thideTargetElem();\n\t\t\t\tinsertAfter(sortable.placeholders.src, sortable.targetElement);\n\t\t\t}\n\t\t\tif (isFunction(config.onSrcPlaceholderInsert))\n\t\t\t\tconfig.onSrcPlaceholderInsert.call(\n\t\t\t\t\tnull,\n\t\t\t\t\tsortable.targetElement,\n\t\t\t\t\tsortable.placeholders.src\n\t\t\t\t);\n\n\t\t\t// Update the dataTransfer info\n\t\t\tconst { dataTransfer } = sortable;\n\t\t\tdataTransfer.sourceIndex = elemIndex(sortable.targetElement);\n\t\t\tdataTransfer.sourceParent = config.dropzone\n\t\t\t\t? closestDeep(sortable.targetElement, config.dropzone)\n\t\t\t\t: sortable.targetElement.parentElement;\n\n\t\t\tdataTransfer.destinationIndex = dataTransfer.sourceIndex; // when it starts, dest is same as source\n\t\t\tdataTransfer.destinationParent = dataTransfer.sourceParent;\n\t\t\tdataTransfer.element = sortable.targetElement;\n\n\t\t\t// Set initial dropzones and scrolling parents (these can change later)\n\t\t\tsortable.dropzone = dataTransfer.sourceParent; // the parent of items\n\t\t\tif (config.extendedDropzone) {\n\t\t\t\t// TODO: why should sortable care about \"extendedDropzone\"?\n\t\t\t\tsortable.extendedDropzone = closestDeep(\n\t\t\t\t\tsortable.dropzone,\n\t\t\t\t\tconfig.extendedDropzone\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tupdateScrollParents();\n\n\t\t\tsortable.active = true;\n\t\t\tdispatch(config.actionPrefix + SORT_START, sortable.dataTransfer);\n\t\t},\n\t\tonMove(dx, dy, event) {\n\t\t\tconst { position } = sortable.clone;\n\t\t\tposition.dx = dx;\n\t\t\tposition.dy = dy;\n\t\t\tthis.render(event);\n\t\t},\n\t\tonPositionChange(newIndex) {\n\t\t\t// param can instead be a new location (index)\n\t\t\tif (!isValidIndex(newIndex)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsortable.newIndex = newIndex; // this is the new position in the current 'dropzone'\n\t\t\tthis.render();\n\t\t},\n\t\tonEnd(success = true) {\n\t\t\tremoveClone();\n\t\t\t// TODO: Instead of removing the placeholder immediately, try to\n\t\t\t// animate it to the destination position to avoid a flicker of sudden removal\n\t\t\tremoveDestPlaceholders();\n\t\t\tremoveSrcPlaceholders();\n\t\t\t// removeTransitions();\n\t\t\tresetTargetElemStyles();\n\n\t\t\tdispatch(\n\t\t\t\tconfig.actionPrefix + (success ? SORT_END : SORT_CANCELLED),\n\t\t\t\tsortable.dataTransfer\n\t\t\t);\n\n\t\t\tresetSortableData();\n\t\t},\n\t\trender(event) {\n\t\t\tconst { dx, dy } = sortable.clone.position;\n\n\t\t\tif (dx !== null || dy !== null) {\n\t\t\t\trender_PixelChange(event, config);\n\t\t\t\tsortable.clone.position.dx = null;\n\t\t\t\tsortable.clone.position.dy = null;\n\t\t\t} else if (sortable.newIndex != null) {\n\t\t\t\trender_PositionChange(event);\n\t\t\t\tsortable.newIndex = null;\n\t\t\t}\n\n\t\t\tlet parent = sortable.placeholders.dest.parentElement;\n\t\t\tlet newDropIndex = getDropPosition(sortable.placeholders.dest);\n\t\t\tif (newDropIndex === -1) {\n\t\t\t\tnewDropIndex = getSourcePosition(sortable.placeholders.src);\n\t\t\t\tparent = sortable.placeholders.src.parentElement;\n\t\t\t}\n\n\t\t\tlet newDropPosition;\n\t\t\tif (parent)\n\t\t\t\tnewDropPosition = parent\n\t\t\t\t\t.getRootNode()\n\t\t\t\t\t.host.getAttribute('component-id');\n\n\t\t\tnewDropPosition += `_${newDropIndex}`;\n\n\t\t\tif (newDropPosition !== sortable.dropPosition) {\n\t\t\t\tdispatch(config.actionPrefix + DROP_AREA_CHANGE, {\n\t\t\t\t\toldPosition: sortable.dropIndex,\n\t\t\t\t\tnewPosition: newDropIndex,\n\t\t\t\t\tdropzone: sortable.dropzone,\n\t\t\t\t\ttargetElement: sortable.targetElement,\n\t\t\t\t});\n\n\t\t\t\tif (isFunction(config.onDestPlaceholderInsert))\n\t\t\t\t\tconfig.onDestPlaceholderInsert.call(\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tsortable.targetElement,\n\t\t\t\t\t\tsortable.placeholders.src,\n\t\t\t\t\t\tsortable.placeholders.dest,\n\t\t\t\t\t\tnewDropIndex\n\t\t\t\t\t);\n\n\t\t\t\tsortable.dropIndex = newDropIndex;\n\t\t\t\tsortable.dropPosition = newDropPosition;\n\t\t\t}\n\n\t\t\t// Update the dragData in the event\n\t\t\tconst updatedDragData = sortable.dataTransfer;\n\t\t\t// TODO: 'placeholderParent' below is same as 'sortable.dropzone', confirm and remove this check\n\t\t\tconst placeholderParent = config.dropzone\n\t\t\t\t? closestDeep(sortable.placeholders.dest, config.dropzone)\n\t\t\t\t: sortable.placeholders.dest.parentElement;\n\n\t\t\tif (placeholderParent) {\n\t\t\t\tupdatedDragData.destinationParent = placeholderParent;\n\t\t\t\tif (sortable.dropIndex !== -1)\n\t\t\t\t\tupdatedDragData.destinationIndex = sortable.dropIndex;\n\t\t\t} else {\n\t\t\t\t// Placeholder is not shown anywhere, so the droppable area will be the source parent\n\t\t\t\tupdatedDragData.destinationParent =\n\t\t\t\t\tupdatedDragData.sourceParent;\n\t\t\t\tupdatedDragData.destinationIndex = updatedDragData.sourceIndex;\n\t\t\t}\n\t\t\tsortable.dataTransfer = updatedDragData;\n\t\t},\n\t\tupdateConfig(newConfig) {\n\t\t\tconfig = {\n\t\t\t\t...config,\n\t\t\t\t...newConfig,\n\t\t\t};\n\t\t},\n\t\tsetActiveDropzone(activeDropzone) {\n\t\t\tsortable.dropzone = activeDropzone;\n\t\t\tupdateScrollParents();\n\t\t\tthis.render();\n\t\t},\n\t\tsetActiveIndex(index) {\n\t\t\tsortable.newIndex = index;\n\t\t},\n\t\tgetDataTransfer() {\n\t\t\treturn sortable.dataTransfer;\n\t\t},\n\t\tsetDataTransfer(data) {\n\t\t\tif (isValidIndex(data.tempMoveIndex)) {\n\t\t\t\tsortable.dataTransfer = {\n\t\t\t\t\t...sortable.dataTransfer,\n\t\t\t\t\t...data,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tuuid() {\n\t\t\treturn sortable.uuid;\n\t\t},\n\t\tisActive() {\n\t\t\treturn sortable.active;\n\t\t},\n\t};\n};\n","import find from 'lodash/find';\n\nimport { querySelectorAllDeep } from '../../../dom-utils';\nimport DIRECTIONS from '../../../utils/directions';\n\nconst distance = (\n\t/** @type {DOMRect} */ rectA,\n\t/** @type {DOMRect} */ rectB\n) => {\n\treturn Math.abs(\n\t\tMath.sqrt(\n\t\t\tMath.pow(rectA.left - rectB.left, 2) +\n\t\t\t\tMath.pow(rectA.top - rectB.top, 2)\n\t\t)\n\t);\n};\n\n/**\n * This is similar to the visual navigation approach. Based on a direction, this returns a sortable dropzone to\n * jump to when navigating across sortable lists using keyboard.\n *\n * */\nexport const nextVisualDropzone = (\n\t/** @type {HTMLElement} */ el,\n\t/** @type {{ connectedLists: string; }} */ config,\n\t/** @type {{ getDataTransfer: () => any; setDataTransfer: (arg0: { activeConnectedList: HTMLElement; }) => void; }} */ sortable,\n\t/** @type {symbol} */ direction\n) => {\n\tconst dataTransfer = sortable.getDataTransfer();\n\tconst { activeConnectedList } = dataTransfer;\n\tlet relativeElement = null;\n\n\tif (!activeConnectedList) {\n\t\t// We are currently on the 'el' (main) list\n\t\trelativeElement = el;\n\t} else {\n\t\t// We have already moved to a different connected list\n\t\trelativeElement = activeConnectedList;\n\t}\n\n\tconst relativeElRect = relativeElement.getBoundingClientRect();\n\n\tconst connectedLists = querySelectorAllDeep(\n\t\tconfig.connectedLists,\n\t\t// @ts-ignore\n\t\tnull,\n\t\tfalse\n\t);\n\t// @ts-ignore\n\tconst elInConnectedLists = find(connectedLists, (cl) => cl === el);\n\tif (!elInConnectedLists) connectedLists.push(el);\n\n\tconst cListWithRects = connectedLists.map((cl) => ({\n\t\telement: cl,\n\t\trect: cl.getBoundingClientRect(),\n\t}));\n\tlet nextList = null;\n\tswitch (direction) {\n\t\tcase DIRECTIONS.DOWN: {\n\t\t\t// Get elements that are strictly below this current list\n\t\t\tconst lowerElements = cListWithRects.filter((cl) => {\n\t\t\t\treturn (\n\t\t\t\t\tMath.round(cl.rect.top) >= Math.round(relativeElRect.bottom)\n\t\t\t\t);\n\t\t\t});\n\t\t\t// Return element that is closest to the relative element's left\n\t\t\tnextList = lowerElements\n\t\t\t\t.map((cl) => ({\n\t\t\t\t\t...cl,\n\t\t\t\t\tdistance: distance(cl.rect, relativeElRect),\n\t\t\t\t}))\n\t\t\t\t.sort((a, b) => a.distance - b.distance)[0];\n\t\t\tbreak;\n\t\t}\n\n\t\tcase DIRECTIONS.UP: {\n\t\t\tconst upperElements = cListWithRects.filter((cl) => {\n\t\t\t\treturn (\n\t\t\t\t\tMath.round(cl.rect.bottom) <= Math.round(relativeElRect.top)\n\t\t\t\t);\n\t\t\t});\n\t\t\t// Return element that is closest to the relative element's left\n\t\t\tnextList = upperElements\n\t\t\t\t.map((cl) => ({\n\t\t\t\t\t...cl,\n\t\t\t\t\tdistance: distance(cl.rect, relativeElRect),\n\t\t\t\t}))\n\t\t\t\t.sort((a, b) => a.distance - b.distance)[0];\n\t\t\tbreak;\n\t\t}\n\t\tcase DIRECTIONS.RIGHT: {\n\t\t\tconst rightElements = cListWithRects.filter((cl) => {\n\t\t\t\treturn (\n\t\t\t\t\tMath.round(cl.rect.left) >= Math.round(relativeElRect.right)\n\t\t\t\t);\n\t\t\t});\n\t\t\t// Return element that is closest to the relative element's top\n\t\t\tnextList = rightElements\n\t\t\t\t.map((cl) => ({\n\t\t\t\t\t...cl,\n\t\t\t\t\tdistance: distance(cl.rect, relativeElRect),\n\t\t\t\t}))\n\t\t\t\t.sort((a, b) => a.distance - b.distance)[0];\n\t\t\tbreak;\n\t\t}\n\n\t\tcase DIRECTIONS.LEFT: {\n\t\t\tconst leftElements = cListWithRects.filter((cl) => {\n\t\t\t\treturn (\n\t\t\t\t\tMath.round(cl.rect.right) <= Math.round(relativeElRect.left)\n\t\t\t\t);\n\t\t\t});\n\t\t\t// Return element that is closest to the relative element's top\n\t\t\tnextList = leftElements\n\t\t\t\t.map((cl) => ({\n\t\t\t\t\t...cl,\n\t\t\t\t\tdistance: distance(cl.rect, relativeElRect),\n\t\t\t\t}))\n\t\t\t\t.sort((a, b) => a.distance - b.distance)[0];\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault:\n\t\t\treturn;\n\t}\n\n\tif (nextList) {\n\t\tsortable.setDataTransfer({\n\t\t\tactiveConnectedList: nextList.element,\n\t\t});\n\t\treturn nextList.element;\n\t}\n\n\treturn nextList;\n};\n","// @ts-nocheck\nimport get from 'lodash/get';\nimport isFunction from 'lodash/isFunction';\n\nimport { querySelectorDeep } from '../../../dom-utils';\nimport DIRECTIONS from '../../../utils/directions';\nimport { LIST_ORDER, sortInteraction } from '../../core';\n\nimport { nextVisualDropzone } from './visual-next';\n\nconst DEFAULT_KEYBOARD_CONFIG = {};\n\nconst KEYS = {\n\tESCAPE: 'Escape',\n\tARROW_UP: 'ArrowUp',\n\tARROW_DOWN: 'ArrowDown',\n\tARROW_RIGHT: 'ArrowRight',\n\tARROW_LEFT: 'ArrowLeft',\n\tENTER: 'Enter',\n\tSPACE_CODE: 32,\n};\n\nexport const isSortStartTrigger = (event, config) => {\n\tconst customTrigger = get(config, 'keyboardTriggers.start', null);\n\tif (customTrigger && isFunction(customTrigger))\n\t\treturn customTrigger.call(null, event);\n\treturn event.altKey && event.which === KEYS.SPACE_CODE;\n};\n\nexport const isSortCompleteTrigger = (event, config) => {\n\tconst customTrigger = get(config, 'keyboardTriggers.end', null);\n\tif (customTrigger && isFunction(customTrigger))\n\t\treturn customTrigger.call(null, event);\n\treturn event.key === KEYS.ENTER;\n};\n\nexport const isSortCancelTrigger = (event, config) => {\n\tconst customTrigger = get(config, 'keyboardTriggers.cancel', null);\n\tif (customTrigger && isFunction(customTrigger))\n\t\treturn customTrigger.call(null, event);\n\treturn event.key === KEYS.ESCAPE;\n};\n\nexport const isSortableUpdateKey = (event) => {\n\treturn (\n\t\tevent.key === KEYS.ARROW_RIGHT ||\n\t\tevent.key === KEYS.ARROW_LEFT ||\n\t\tevent.key === KEYS.ARROW_UP ||\n\t\tevent.key === KEYS.ARROW_DOWN\n\t);\n};\n\nexport const isDraggable = (element, config) => {\n\tif (isFunction(config.itemsFilter))\n\t\treturn config.itemsFilter.call(null, element);\n\treturn true;\n};\n\nexport const keyboardSortHandler = (\n\tevent,\n\tconfig,\n\tel,\n\tsortable,\n\tinProgress,\n\taddGlobalKeyHandlers,\n\tremoveGlobalKeyHandlers\n) => {\n\tif (isSortStartTrigger(event, config) && !sortable.isActive()) {\n\t\t// space\n\t\tsortable.onStart(event);\n\t\tinProgress.value = true;\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t// Add listeners on the board level for continuing the sort interaction\n\t\taddGlobalKeyHandlers();\n\t} else if (isSortCancelTrigger(event, config) && sortable.isActive()) {\n\t\t// Complete sorting\n\t\tsortable.onEnd(false);\n\t\tinProgress.value = false;\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tremoveGlobalKeyHandlers();\n\t} else if (isSortCompleteTrigger(event, config) && sortable.isActive()) {\n\t\t// Cancel sorting\n\t\tsortable.onEnd(true);\n\t\tinProgress.value = false;\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tremoveGlobalKeyHandlers();\n\t} else if (\n\t\tinProgress.value &&\n\t\tsortable.isActive() &&\n\t\tisSortableUpdateKey(event)\n\t) {\n\t\tconst { sourceIndex, tempMoveIndex } = sortable.getDataTransfer();\n\t\tconst currentIndex =\n\t\t\ttempMoveIndex == null ? sourceIndex : tempMoveIndex;\n\n\t\t// Skip all other keys\n\t\tif (config.listOrder === LIST_ORDER.VERTICAL) {\n\t\t\thandleVerticalSort(event, sortable, currentIndex, el, config);\n\t\t} else if (config.listOrder === LIST_ORDER.HORIZONTAL) {\n\t\t\thandleHorizontalSort(event, sortable, currentIndex, el, config);\n\t\t}\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t} else {\n\t\t// Unhandled key event\n\t}\n};\n\nexport const handleVerticalSort = (\n\tevent,\n\tsortable,\n\tcurrentIndex,\n\tel,\n\tconfig\n) => {\n\tswitch (event.key) {\n\t\tcase KEYS.ARROW_DOWN:\n\t\t\tsortable.onPositionChange(currentIndex + 1);\n\t\t\tsortable.setDataTransfer({ tempMoveIndex: currentIndex + 1 });\n\t\t\tbreak;\n\t\tcase KEYS.ARROW_UP:\n\t\t\tsortable.onPositionChange(currentIndex - 1);\n\t\t\tsortable.setDataTransfer({ tempMoveIndex: currentIndex - 1 });\n\t\t\tbreak;\n\t\tcase KEYS.ARROW_RIGHT:\n\t\t\tmoveToNextSortableList(el, config, sortable, DIRECTIONS.RIGHT);\n\t\t\tbreak;\n\t\tcase KEYS.ARROW_LEFT:\n\t\t\tmoveToNextSortableList(el, config, sortable, DIRECTIONS.LEFT);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n};\n\nexport const handleHorizontalSort = (\n\tevent,\n\tsortable,\n\tcurrentIndex,\n\tel,\n\tconfig\n) => {\n\tswitch (event.key) {\n\t\tcase KEYS.ARROW_RIGHT:\n\t\t\tsortable.onPositionChange(currentIndex + 1);\n\t\t\tsortable.setDataTransfer({ tempMoveIndex: currentIndex + 1 });\n\t\t\tbreak;\n\t\tcase KEYS.ARROW_LEFT:\n\t\t\tsortable.onPositionChange(currentIndex - 1);\n\t\t\tsortable.setDataTransfer({ tempMoveIndex: currentIndex - 1 });\n\t\t\tbreak;\n\t\tcase KEYS.ARROW_DOWN:\n\t\t\tmoveToNextSortableList(el, config, sortable, DIRECTIONS.DOWN);\n\t\t\tbreak;\n\t\tcase KEYS.ARROW_UP:\n\t\t\tmoveToNextSortableList(el, config, sortable, DIRECTIONS.UP);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n};\n\nexport const moveToNextSortableList = (el, config, sortable, direction) => {\n\tconst nextSortableList = nextVisualDropzone(\n\t\tel,\n\t\tconfig,\n\t\tsortable,\n\t\tdirection\n\t);\n\tif (nextSortableList) {\n\t\tconst nextDropzone = querySelectorDeep(\n\t\t\tconfig.dropzone,\n\t\t\tnextSortableList\n\t\t);\n\t\tsortable.setActiveIndex(0);\n\t\tsortable.setActiveDropzone(nextDropzone);\n\t\tsortable.setDataTransfer({ tempMoveIndex: 0 });\n\t}\n};\n\nexport const initAdapter = (config, el, sortable) => {\n\tconst inProgress = { value: false }; // Use an object to ensure mutability in closure\n\n\tconst addGlobalKeyHandlers = () => {\n\t\tdocument.body.addEventListener('keydown', (event) =>\n\t\t\tkeyboardSortHandler(\n\t\t\t\tevent,\n\t\t\t\tconfig,\n\t\t\t\tel,\n\t\t\t\tsortable,\n\t\t\t\tinProgress,\n\t\t\t\taddGlobalKeyHandlers,\n\t\t\t\tremoveGlobalKeyHandlers\n\t\t\t)\n\t\t);\n\t};\n\n\tconst removeGlobalKeyHandlers = () => {\n\t\tdocument.body.removeEventListener('keydown', (event) =>\n\t\t\tkeyboardSortHandler(\n\t\t\t\tevent,\n\t\t\t\tconfig,\n\t\t\t\tel,\n\t\t\t\tsortable,\n\t\t\t\tinProgress,\n\t\t\t\taddGlobalKeyHandlers,\n\t\t\t\tremoveGlobalKeyHandlers\n\t\t\t)\n\t\t);\n\t};\n\n\tconst initSortable = (options) => {\n\t\tconst { items = null, elems = [] } = options;\n\t\tif (!items)\n\t\t\tthrow 'Cannot initialize keyboard adapter for sorting without items';\n\n\t\telems.forEach((elem) => {\n\t\t\tif (!isDraggable(elem, options)) return;\n\n\t\t\tif (options.handle) {\n\t\t\t\tconst handleElem = querySelectorDeep(options.handle, elem);\n\t\t\t\tif (handleElem) {\n\t\t\t\t\thandleElem.addEventListener('keydown', (event) =>\n\t\t\t\t\t\tkeyboardSortHandler(\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\tconfig,\n\t\t\t\t\t\t\tel,\n\t\t\t\t\t\t\tsortable,\n\t\t\t\t\t\t\tinProgress,\n\t\t\t\t\t\t\taddGlobalKeyHandlers,\n\t\t\t\t\t\t\tremoveGlobalKeyHandlers\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telem.addEventListener('keydown', (event) =>\n\t\t\t\t\tkeyboardSortHandler(\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tel,\n\t\t\t\t\t\tsortable,\n\t\t\t\t\t\tinProgress,\n\t\t\t\t\t\taddGlobalKeyHandlers,\n\t\t\t\t\t\tremoveGlobalKeyHandlers\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t};\n\tinitSortable(config);\n};\n\nexport default (el, dispatch) => {\n\tlet sortable = null;\n\treturn {\n\t\tinit(config) {\n\t\t\tsortable = sortInteraction(config, dispatch);\n\t\t\tinitAdapter(\n\t\t\t\t{\n\t\t\t\t\t...DEFAULT_KEYBOARD_CONFIG,\n\t\t\t\t\t...config,\n\t\t\t\t},\n\t\t\t\tel,\n\t\t\t\tsortable\n\t\t\t);\n\t\t},\n\t\tupdate(newConfig) {\n\t\t\tsortable.updateConfig(newConfig);\n\t\t\tinitAdapter(\n\t\t\t\t{\n\t\t\t\t\t...DEFAULT_KEYBOARD_CONFIG,\n\t\t\t\t\t...newConfig,\n\t\t\t\t},\n\t\t\t\tel,\n\t\t\t\tsortable\n\t\t\t);\n\t\t},\n\t\treset() {\n\t\t\t// TODO\n\t\t},\n\t};\n};\n","// @ts-nocheck\nexport const withCancellation = (listeners) => {\n\tlet escapeKeyListener = null,\n\t\tcancelled = false;\n\n\treturn {\n\t\t...listeners,\n\t\tstart: (event) => {\n\t\t\tlisteners.start.call(this, event);\n\t\t\t// Register an escape key listener\n\t\t\tescapeKeyListener = (e) => {\n\t\t\t\tif (e.code === 'Escape') {\n\t\t\t\t\tcancelled = true;\n\t\t\t\t\t// cancel the \"interaction\" of interactjs, which will lead to the \"end\" method below getting called\n\t\t\t\t\tevent.interaction && event.interaction.end();\n\t\t\t\t}\n\t\t\t};\n\t\t\tdocument.body.addEventListener('keydown', escapeKeyListener);\n\t\t},\n\t\tend: (event) => {\n\t\t\tlisteners.end.call(this, cancelled ? null : event);\n\t\t\t// Remove the escape key listener\n\t\t\tdocument.body.removeEventListener('keydown', escapeKeyListener);\n\t\t\tescapeKeyListener = null;\n\t\t\tcancelled = false;\n\t\t},\n\t};\n};\n","// @ts-nocheck\nimport interact from 'interactjs';\nimport findIndex from 'lodash/findIndex';\nimport { v4 as uuidv4 } from 'uuid';\n\n/**\n * A publish-subscribe approach to handling multiple dropzone listeners on same element.\n *\n * A given element (like a lane) can be a dropzone for multiple sortable lists. In this case, if each\n * sortable lists registers the 'drop' event listeners on the lane, then there will be many duplicate listeners.\n * So, this will register the 'drop' events once on an element, and then publish the messages to\n * all the subscribers.\n *\n * */\nconst handlers = {};\n\nexport const registerDropzone = (el, allowFrom, callbacks) => {\n\tif (el.__dropzone_subscribers__) {\n\t\t// already registered\n\t\thandlers[el.__dropzone_subscribers__].push(callbacks);\n\t} else {\n\t\tconst id = el.id || el.componentId || uuidv4();\n\t\thandlers[id] = handlers[id] || [];\n\t\thandlers[id].push(callbacks);\n\t\tel.__dropzone_subscribers__ = id;\n\n\t\t// actually add listener on element using interactjs\n\t\tcreateDropzone(el, allowFrom);\n\t}\n\treturn {\n\t\telement: el,\n\t\tcallbacks,\n\t};\n};\n\nexport const unregisterDropzone = (el, callbacks) => {\n\tif (el.__dropzone_subscribers__) {\n\t\t// already registered\n\t\tconst subscribers = handlers[el.__dropzone_subscribers__];\n\t\tconst idx = findIndex(subscribers, (cb) => cb === callbacks);\n\t\tif (idx !== -1) subscribers.splice(idx, 1);\n\n\t\tif (subscribers.length === 0) removeDropzone(el);\n\t}\n};\n\nconst createDropzone = (el, allowFrom) => {\n\tconst key = el.__dropzone_subscribers__;\n\tinteract(el).dropzone({\n\t\taccept: allowFrom,\n\t\tondragenter(event) {\n\t\t\tconst subscribers = handlers[key];\n\t\t\tsubscribers.forEach((subs) => {\n\t\t\t\tconst dragEnterFn = subs['onDragEnter'];\n\t\t\t\tif (!dragEnterFn) return;\n\t\t\t\tdragEnterFn.call(null, event);\n\t\t\t});\n\t\t},\n\t});\n};\n\nconst removeDropzone = (el) => {\n\tconst key = el.__dropzone_subscribers__;\n\thandlers[key] = [];\n\n\tinteract(el).dropzone(false);\n};\n","// @ts-nocheck\nimport interact from 'interactjs';\nimport find from 'lodash/find';\nimport get from 'lodash/get';\nimport isFunction from 'lodash/isFunction';\n\nimport { querySelectorAllDeep, querySelectorDeep } from '../../../dom-utils';\nimport { sortInteraction } from '../../core';\n\nimport { withCancellation } from './cancel-sort';\nimport { registerDropzone, unregisterDropzone } from './dropzone-notifier';\n\ninteract.dynamicDrop(true);\n\nconst DEFAULT_IJS_CONFIG = {\n\tcursorChecker: () => 'grab',\n};\n\nconst DROPZONE_INIT_DELAY = 200; // ms\n\nexport function toggleUserSelector(enable, element = document.body) {\n\telement.style.userSelect = enable ? 'auto' : 'none';\n}\n\nexport function clearUserSelection() {\n\tif (document.selection) {\n\t\tdocument.selection.empty();\n\t} else {\n\t\twindow.getSelection().removeAllRanges();\n\t}\n}\n\nexport function isDraggableInitialized(elem, draggables) {\n\tconst elInteractable = find(draggables, (i) => i.target === elem);\n\tif (!elInteractable) return false;\n\n\treturn get(elInteractable, 'options.drag.enabled', false);\n}\n\nexport function isDroppableInitialized(elem, droppables) {\n\tconst elInteractable = find(droppables, (i) => i.element === elem);\n\treturn !!elInteractable;\n}\n\nconst events = {\n\tdrag: {\n\t\tadd(el, config) {\n\t\t\treturn interact(el).draggable(config);\n\t\t},\n\t\tremove(el) {\n\t\t\treturn interact(el).draggable(false);\n\t\t},\n\t},\n\tdrop: {\n\t\tadd(el, allowFrom, handlers) {\n\t\t\treturn registerDropzone(el, allowFrom, handlers);\n\t\t},\n\t\tremove(el, handlers) {\n\t\t\treturn unregisterDropzone(el, handlers);\n\t\t},\n\t},\n};\n\nexport const isDraggable = (element, config) => {\n\tif (isFunction(config.itemsFilter))\n\t\treturn config.itemsFilter.call(null, element);\n\treturn true;\n};\n\nexport const initAdapter = (options, el, sortable, draggables, droppables) => {\n\tconst { elems = [], dropzone = null, extendedDropzone = null } = options;\n\t// Make 'items' draggable\n\n\t// TODO - Perf : This gets called so many times, and is slow. Need to optimize this\n\telems.forEach((elem) => {\n\t\t// TODO: Only make draggable based on \"condition\". Temporarily removing it\n\t\tif (!isDraggable(elem, options)) return;\n\n\t\tif (isDraggableInitialized(elem, draggables)) {\n\t\t\tconst elInteractable = find(draggables, (i) => i.target === elem);\n\t\t\telInteractable.__seen__ = true; // mark and sweep\n\t\t} else {\n\t\t\t// initializing sortable first time\n\t\t\telem.__sortable__ = sortable;\n\t\t\tconst interactable = events.drag.add(elem, options);\n\t\t\tinteractable.__seen__ = true;\n\t\t\tdraggables.push(interactable);\n\t\t}\n\t});\n\n\t// Make dropzones droppable\n\tconst sortableLists = [el];\n\tif (options.connectedLists) {\n\t\tconst connectedLists = querySelectorAllDeep(\n\t\t\toptions.connectedLists,\n\t\t\tnull,\n\t\t\tfalse\n\t\t);\n\t\tconnectedLists.forEach((cl) => {\n\t\t\tif (cl !== el) {\n\t\t\t\tsortableLists.push(cl);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (extendedDropzone && !dropzone) {\n\t\tthrow new Error(\n\t\t\t'Extended dropzone cannot be used without a primary dropzone'\n\t\t);\n\t}\n\n\tif (!extendedDropzone && !dropzone) {\n\t\tthrow new Error('No dropzone specified for the sortable list');\n\t}\n\n\tconst dzSelector = extendedDropzone || dropzone;\n\n\tsortableLists.forEach((sortableListEl) => {\n\t\tconst droppableElem = sortableListEl.matches(dzSelector)\n\t\t\t? sortableListEl\n\t\t\t: querySelectorDeep(dzSelector, sortableListEl);\n\n\t\tif (!droppableElem) {\n\t\t\t// Suppress error message for now. Need to fix this as part UXF initialization issue,\n\t\t\t// where if condition is false initially, DnD is not initialised again\n\t\t\t// console.error(`Dropzone element matching ${dzSelector} not found`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (isDroppableInitialized(droppableElem, droppables)) {\n\t\t\tconst dropInteractable = find(\n\t\t\t\tdroppables,\n\t\t\t\t(i) => i.element === droppableElem\n\t\t\t);\n\t\t\tdropInteractable.__seen__ = true;\n\t\t} else {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst droppable = events.drop.add(\n\t\t\t\t\tdroppableElem,\n\t\t\t\t\toptions.items,\n\t\t\t\t\t{\n\t\t\t\t\t\tonDragEnter(event) {\n\t\t\t\t\t\t\tconst draggedSortable = get(\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t'draggable.target.__sortable__'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!draggedSortable ||\n\t\t\t\t\t\t\t\tdraggedSortable.uuid() !== sortable.uuid()\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\tconst dropzone = options.extendedDropzone\n\t\t\t\t\t\t\t\t? querySelectorDeep(\n\t\t\t\t\t\t\t\t\t\toptions.dropzone,\n\t\t\t\t\t\t\t\t\t\tdroppableElem\n\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t: droppableElem;\n\n\t\t\t\t\t\t\t// set activeDropzone to the area where card entered\n\t\t\t\t\t\t\tdraggedSortable.setActiveDropzone(dropzone);\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tdroppable.__seen__ = true;\n\t\t\t\tdroppables.push(droppable);\n\t\t\t}, DROPZONE_INIT_DELAY);\n\t\t}\n\t});\n\n\t// Remove unused draggables\n\tconst unseenDraggables = draggables.filter((d) => d.__seen__ == null);\n\tunseenDraggables.forEach((ud) => {\n\t\tevents.drag.remove(ud.target); // each 'ud' is an interaction object\n\t});\n\tdraggables.forEach((d) => {\n\t\tdelete d.__seen__;\n\t});\n\n\t// Remove unused droppables\n\tconst unseenDroppables = droppables.filter((d) => d.__seen__ == null);\n\tunseenDroppables.forEach((ud) => {\n\t\tevents.drop.remove(ud.element, ud.callbacks); // each 'ud' is a custom object with 'element' and 'handler' props\n\t});\n\tdroppables.forEach((d) => {\n\t\tdelete d.__seen__;\n\t});\n};\n\nexport default (el, dispatch) => {\n\tlet ijsSortable = null;\n\tconst draggables = []; // the items\n\tconst droppables = []; // the dropzones\n\n\t// mouse and touch responders\n\tconst listeners = withCancellation({\n\t\tstart: (event) => {\n\t\t\ttoggleUserSelector(false);\n\t\t\tijsSortable.onStart(event);\n\t\t},\n\t\tmove: (event) => {\n\t\t\tif (event.type !== 'dragmove') return;\n\n\t\t\tconst { dx, dy } = event;\n\t\t\tijsSortable.onMove(dx, dy, event);\n\t\t},\n\t\tend: (event) => {\n\t\t\ttoggleUserSelector(true);\n\t\t\tclearUserSelection();\n\t\t\tijsSortable.onEnd(!!event);\n\t\t},\n\t});\n\n\treturn {\n\t\tinit(config, isUpdate = false) {\n\t\t\tconfig.adapter = 'interactjs'; // for debugging\n\t\t\tijsSortable = sortInteraction(config, dispatch, isUpdate);\n\t\t\t// el.setAttribute('sortable-id', ijsSortable.uuid()); // for testing\n\n\t\t\t// Update the config here as needed for InteractJS\n\t\t\tif (config.restrict || config.restrictTo) {\n\t\t\t\tconfig.modifiers = [\n\t\t\t\t\tinteract.modifiers.restrict({\n\t\t\t\t\t\trestriction: querySelectorDeep(config.restrictTo) || el,\n\t\t\t\t\t}),\n\t\t\t\t];\n\t\t\t}\n\n\t\t\tif (config.handle) {\n\t\t\t\tconfig.allowFrom = config.handle;\n\t\t\t}\n\n\t\t\tinitAdapter(\n\t\t\t\t{\n\t\t\t\t\t...DEFAULT_IJS_CONFIG,\n\t\t\t\t\t...config,\n\t\t\t\t\tlisteners,\n\t\t\t\t},\n\t\t\t\tel,\n\t\t\t\tijsSortable,\n\t\t\t\tdraggables,\n\t\t\t\tdroppables\n\t\t\t);\n\t\t},\n\t\tupdate(newConfig) {\n\t\t\tijsSortable.updateConfig(newConfig);\n\t\t\tinitAdapter(\n\t\t\t\t{\n\t\t\t\t\t...DEFAULT_IJS_CONFIG,\n\t\t\t\t\tlisteners,\n\t\t\t\t\t...newConfig,\n\t\t\t\t},\n\t\t\t\tel,\n\t\t\t\tijsSortable,\n\t\t\t\tdraggables,\n\t\t\t\tdroppables\n\t\t\t);\n\t\t},\n\t\treset() {\n\t\t\tdraggables.forEach((ud) => {\n\t\t\t\tevents.drag.remove(ud.target); // each 'ud' is an 'interaction' object\n\t\t\t});\n\n\t\t\tdroppables.forEach((ud) => {\n\t\t\t\tevents.drop.remove(ud.element, ud.callbacks); // each 'ud' is a custom object with 'element' and 'callbacks' props\n\t\t\t});\n\t\t},\n\t};\n};\n","// @ts-nocheck\nimport { querySelectorAllDeep } from '../dom-utils';\n\nimport keyboardAdapter from './adapters/keyboard/keyboard-adapter';\nimport interactJsAdapter from './adapters/mouse-and-touch/interactjs-adapter';\nimport { ACTION_PREFIX, NS_DEFAULT_PLACEHOLDER } from './constants';\n\nconst DEFAULT_SORTABLE_CONFIG = {\n\tstartAxis: 'xy', // IJS?\n\tactionPrefix: ACTION_PREFIX,\n\txScrollParent: 'body',\n\tyScrollParent: 'body',\n\ttagSourcePlaceholder: NS_DEFAULT_PLACEHOLDER,\n\ttagDestPlaceholder: NS_DEFAULT_PLACEHOLDER,\n\t// interfaces choice\n\tdragSupport: true,\n\tkeyboardSupport: true,\n};\n\n/**\n * This is the intercept point that checks the config, and initializes the interfaces, like keyboard, touch, etc.\n * Also, will be responsible for handling the updates on 'props' and updating the behaviours accordingly.\n * TODO: Check if the prop updates are correctly being considered\n *\n * */\n// @ts-ignore\nexport default (el, dispatch, options) => {\n\tlet config = {\n\t\t...DEFAULT_SORTABLE_CONFIG,\n\t\t...options,\n\t};\n\n\t// Initialize adapters\n\t// @ts-ignore\n\tlet ijsAdapter = null,\n\t\t// @ts-ignore\n\t\tkeyAdapter = null;\n\n\tconst updateElements = (options) => {\n\t\tconst { items = null } = options;\n\t\t//Get the elements to be added to get drag and keyboard support\n\t\tconst elems = querySelectorAllDeep(items, el, false);\n\t\tconfig = {\n\t\t\t...config,\n\t\t\telems,\n\t\t};\n\t};\n\n\tupdateElements(options);\n\n\tif (config.dragSupport) {\n\t\t// Initialize InteractJS adapter\n\t\tijsAdapter = interactJsAdapter(el, dispatch);\n\t\tijsAdapter.init(config);\n\t}\n\n\tif (config.keyboardSupport) {\n\t\tkeyAdapter = keyboardAdapter(el, dispatch);\n\t\tkeyAdapter.init(config);\n\t}\n\n\treturn {\n\t\t// These are the controls over the sortable behaviour\n\t\t// @ts-ignore\n\t\tsetConfig(newConfig) {\n\t\t\tconfig = {\n\t\t\t\t...DEFAULT_SORTABLE_CONFIG,\n\t\t\t\t...options,\n\t\t\t\t...newConfig,\n\t\t\t};\n\t\t\tupdateElements(options);\n\t\t\treturn config;\n\t\t},\n\t\tupdate() {\n\t\t\t// @ts-ignore\n\t\t\tijsAdapter && ijsAdapter.update(config);\n\t\t\t// @ts-ignore\n\t\t\tkeyAdapter && keyAdapter.update(config);\n\t\t},\n\t\treset() {\n\t\t\t// Reset each adapter\n\t\t\t// @ts-ignore\n\t\t\tif (ijsAdapter && ijsAdapter.reset) ijsAdapter.reset();\n\n\t\t\t// @ts-ignore\n\t\t\tif (keyAdapter && keyAdapter.reset) keyAdapter.reset();\n\t\t},\n\t};\n};\n","// @ts-nocheck\nimport { actionTypes } from '@servicenow/ui-core';\nimport isFunction from 'lodash/isFunction';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { ACTION_PREFIX, UPDATE_BEHAVIOR } from './constants';\nimport sortable from './sortable';\n\nexport default {\n\tname: 'now-sortable',\n\tactionHandlers: {\n\t\t[actionTypes.COMPONENT_DOM_READY]: ({\n\t\t\t// @ts-ignore\n\t\t\taction,\n\t\t\t// @ts-ignore\n\t\t\thost,\n\t\t\t// @ts-ignore\n\t\t\tdispatch,\n\t\t\t// @ts-ignore\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst { options } = action.payload;\n\t\t\tlet config = options;\n\t\t\tconst { condition, dynamicConfig } = config;\n\n\t\t\t/**\n\t\t\t * This condition is evaluated only once during DOM load.\n\t\t\t * So if the condition returns false and sortable library doesn't initialize\n\t\t\t * because of that, it won't trigger again.\n\t\t\t */\n\t\t\tif (isFunction(condition)) {\n\t\t\t\tconst shouldInitialize = condition.call(null, host);\n\t\t\t\tif (!shouldInitialize) return;\n\t\t\t}\n\n\t\t\t// Some config might be dependent on props\n\t\t\tif (isFunction(dynamicConfig)) {\n\t\t\t\tconfig = {\n\t\t\t\t\t...config,\n\t\t\t\t\t...dynamicConfig.call(null, host),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst _sortable = sortable(host, dispatch, config);\n\t\t\tupdateState({\n\t\t\t\tpath: `sortableInstance_${uuidv4()}`, // to keep multiple instances of sortable in same state\n\t\t\t\tvalue: {\n\t\t\t\t\tconfig,\n\t\t\t\t\tsortable: _sortable,\n\t\t\t\t},\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t});\n\t\t},\n\t\t// @ts-ignore\n\t\t[actionTypes.COMPONENT_PROPERTY_CHANGED]: ({ state, action, host }) => {\n\t\t\tconst { previousValue, value, name } = action.payload;\n\t\t\t// There could be multiple instances of \"sortable\" behavior on a single component. Each will have its\n\t\t\t// share of data in the component's state with different keys.\n\t\t\tconst sortableInstances = Object.keys(state).filter((key) =>\n\t\t\t\tkey.startsWith('sortableInstance_')\n\t\t\t);\n\n\t\t\tsortableInstances.forEach((instance) => {\n\t\t\t\tconst { config, sortable } = state[instance];\n\t\t\t\tif (!config) return;\n\n\t\t\t\tlet newConfig = { ...config };\n\t\t\t\tif (\n\t\t\t\t\tconfig.dynamicConfig &&\n\t\t\t\t\ttypeof config.dynamicConfig === 'function'\n\t\t\t\t) {\n\t\t\t\t\tnewConfig = {\n\t\t\t\t\t\t...config,\n\t\t\t\t\t\t...config.dynamicConfig.call(null, host),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (isFunction(newConfig.condition)) {\n\t\t\t\t\tconst answer = newConfig.condition.call(\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpreviousValue\n\t\t\t\t\t);\n\t\t\t\t\tif (!answer) {\n\t\t\t\t\t\t// condition has changed to 'false', so reset the sortable state\n\t\t\t\t\t\tsortable && sortable.reset();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// TODO: If sortable is currently 'reset' and then the condition evaluates to true, re-initialise\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isFunction(config.shouldUpdate)) {\n\t\t\t\t\tconst shouldUpdate = config.shouldUpdate.call(\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpreviousValue,\n\t\t\t\t\t\tname\n\t\t\t\t\t);\n\t\t\t\t\tif (shouldUpdate === false) return false;\n\t\t\t\t}\n\n\t\t\t\tif (sortable) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsortable.setConfig(newConfig);\n\t\t\t\t\t\tsortable.update();\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t/**\n\t\t * Dispatch 'NOW_SORTABLE#UPDATE_BEHAVIOR' action to update the sortable instance again.\n\t\t */\n\t\t// @ts-ignore\n\t\t[ACTION_PREFIX + UPDATE_BEHAVIOR]: ({ state, host, action }) => {\n\t\t\taction.stopPropagation();\n\t\t\tconst sortableInstances = Object.keys(state).filter((key) =>\n\t\t\t\tkey.startsWith('sortableInstance_')\n\t\t\t);\n\n\t\t\tsortableInstances.forEach((instance) => {\n\t\t\t\tconst { config, sortable } = state[instance];\n\t\t\t\tif (!config) return;\n\n\t\t\t\tlet newConfig = {};\n\t\t\t\tif (isFunction(config.dynamicConfig)) {\n\t\t\t\t\tnewConfig = {\n\t\t\t\t\t\t...config,\n\t\t\t\t\t\t...config.dynamicConfig.call(null, host),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// @ts-ignore\n\t\t\t\tif (isFunction(newConfig.condition)) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconst answer = newConfig.condition.call(null, host);\n\t\t\t\t\tif (!answer) {\n\t\t\t\t\t\t// condition has changed to 'false', so reset the sortable state\n\t\t\t\t\t\tsortable && sortable.reset();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (sortable) {\n\t\t\t\t\tsortable.setConfig(newConfig);\n\t\t\t\t\tsortable.update();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t},\n};\n","import sortableBehavior from './behavior';\nexport default sortableBehavior;\n","// Actions\nexport const ACTION_PREFIX = 'NOW_RESIZE#';\nexport const RESIZE_STARTED = 'RESIZE_STARTED';\nexport const RESIZE_COMPLETED = 'RESIZE_COMPLETED';\nexport const SIZE_UPDATED = 'SIZE_UPDATED';\n\nexport const DATA_HAS_RESIZE_INTERACTION = 'data-has-resize-interaction';\nexport const KEYBOARD_RESIZE_DELTA = 5;\nexport const ACTIVE_CLASS = 'resize_active';\n\nexport const DEFAULT_MIN_WIDTH = 0;\nexport const DEFAULT_MAX_WIDTH = Number.MAX_SAFE_INTEGER;\nexport const DEFAULT_MIN_HEIGHT = 0;\nexport const DEFAULT_MAX_HEIGHT = Number.MAX_SAFE_INTEGER;\n","import {\n\tDEFAULT_MAX_HEIGHT,\n\tDEFAULT_MAX_WIDTH,\n\tDEFAULT_MIN_HEIGHT,\n\tDEFAULT_MIN_WIDTH,\n\tRESIZE_COMPLETED,\n\tRESIZE_STARTED,\n\tSIZE_UPDATED,\n} from './constants';\n\nexport const onStart = (\n\t/** @type {{ composedPath: () => any; path: any; key: string; }} */ event,\n\t/** @type {{ (actionName: string, payload?: any, metadata?: any): any; (arg0: string, arg1: { domEvent: any; }): void; }} */ dispatch,\n\t/** @type {{ keyboardOptions?: { keyboardResizeDelta: any; activeClass: any; }; actionPrefix?: any; }} */ options\n) => {\n\tconst { actionPrefix } = options;\n\tdispatch(actionPrefix + RESIZE_STARTED, { domEvent: event });\n};\nexport const updateSize = (\n\t/** @type {HTMLElement} */ element,\n\t/** @type {{ composedPath: () => any; path: any; key: string; }} */ event,\n\t/** @type {{ width: any; height: any; }} */ size,\n\t/** @type {{ (actionName: string, payload?: any, metadata?: any): any; (arg0: string, arg1: { domEvent: any; size: any; }): void; }} */ dispatch,\n\t/**\n\t * @type {{\n\t * \tkeyboardOptions?: { keyboardResizeDelta: any; activeClass: any; };\n\t * \tactionPrefix?: any;\n\t * \tonbeforeupdate?: any;\n\t * \tminWidth?: any;\n\t * \tmaxWidth?: any;\n\t * \tminHeight?: any;\n\t * \tmaxHeight?: any;\n\t * }}\n\t */ options\n) => {\n\tlet { minWidth, maxWidth, minHeight, maxHeight } = options;\n\tconst { actionPrefix, onbeforeupdate } = options;\n\n\tminWidth = minWidth || DEFAULT_MIN_WIDTH;\n\tmaxWidth = maxWidth || DEFAULT_MAX_WIDTH;\n\tminHeight = minHeight || DEFAULT_MIN_HEIGHT;\n\tmaxHeight = maxHeight || DEFAULT_MAX_HEIGHT;\n\t// any asynchrnous work that needs to be done before the update can be done here\n\tonbeforeupdate && onbeforeupdate(event);\n\tif (size.width) {\n\t\tif (size.width < minWidth) {\n\t\t\telement.style.width = `${minWidth}px`;\n\t\t} else if (size.width > maxWidth) {\n\t\t\telement.style.width = `${maxWidth}px`;\n\t\t} else {\n\t\t\telement.style.width = `${size.width}px`;\n\t\t}\n\t}\n\tif (size.height) {\n\t\tif (size.height < minHeight) {\n\t\t\telement.style.height = `${minHeight}px`;\n\t\t} else if (size.height > maxHeight) {\n\t\t\telement.style.height = `${maxHeight}px`;\n\t\t} else {\n\t\t\telement.style.height = `${size.height}px`;\n\t\t}\n\t}\n\t/**\n\t *if we send event in payload and call preventDefault before\n\t *seismic is not executing the action handlers so changed the name to domEvent instead of event\n\t */\n\tdispatch(actionPrefix + SIZE_UPDATED, { domEvent: event, size });\n};\nexport const onResizeComplete = (\n\t/** @type {{ composedPath: () => any; path: any; key: string; }} */ event,\n\t/** @type {{ (actionName: string, payload?: any, metadata?: any): any; (arg0: string, arg1: { domEvent: any; }): void; }} */ dispatch,\n\t/** @type {{ keyboardOptions?: { keyboardResizeDelta: any; activeClass: any; }; actionPrefix?: any; }} */ options\n) => {\n\tconst { actionPrefix } = options;\n\n\tdispatch(actionPrefix + RESIZE_COMPLETED, { domEvent: event });\n};\n","import interact from 'interactjs';\nimport throttle from 'lodash/throttle';\n\nimport { onResizeComplete, onStart, updateSize } from './shared';\n\n/**\n * @param {HTMLElement} element\n * @param {*} options\n * @param {Coeffects<Props,State>} coeffects\n */\nexport const addMouseSupport = (element, options, coeffects) => {\n\tconst { dispatch } = coeffects;\n\tconst { edges, ...rest } = options;\n\n\t// Throttle the onmove event handler\n\t// On Column resize, the onmove event is triggered multiple times\n\t// @ts-ignore\n\tconst throttledOnMove = throttle((event) => {\n\t\tconst size = {};\n\t\tif (edges.left || edges.right) size.width = event.rect.width;\n\t\tif (edges.top || edges.bottom) size.height = event.rect.height;\n\n\t\tupdateSize(element, event, size, dispatch, options);\n\t}, 200);\n\n\tinteract(element).resizable({\n\t\tedges: edges,\n\t\tonstart(event) {\n\t\t\tonStart(event, dispatch, options);\n\t\t},\n\t\tonmove: throttledOnMove,\n\t\tonend(event) {\n\t\t\tonResizeComplete(event, dispatch, options);\n\t\t},\n\t\t// check the documentation for additional configuration : https://interactjs.io/docs/api/Interactable.html#resizable\n\t\t...rest,\n\t});\n};\n","import { onResizeComplete, onStart, updateSize } from './shared';\n\n// Keys\nconst KEY = {\n\tARROW_UP: 'ArrowUp',\n\tARROW_RIGHT: 'ArrowRight',\n\tARROW_DOWN: 'ArrowDown',\n\tARROW_LEFT: 'ArrowLeft',\n\tUP: 'Up',\n\tRIGHT: 'Right',\n\tDOWN: 'Down',\n\tLEFT: 'Left',\n\tENTER: 'Enter',\n\tESC: 'Esc',\n\tESCAPE: 'Escape',\n\tTAB: 'Tab',\n};\n\nconst HANDLE_DIRECTIONS = {\n\tLEFT: 'left',\n\tRIGHT: 'right',\n\tTOP: 'top',\n\tDOWN: 'down',\n};\n\nexport const keyboardResizeHandler = (\n\t/** @type {{ composedPath: () => any; path: any; key: string; }} */ event,\n\t/** @type {HTMLElement} */ element,\n\t/** @type {string} */ direction,\n\t/** @type {{ keyboardOptions: { keyboardResizeDelta: any; activeClass: any; }; }} */ options,\n\t/** @type {any} */ dispatch\n) => {\n\tconst { keyboardResizeDelta, activeClass } = options.keyboardOptions;\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst resizeHandleElement = path[0];\n\tif (event.key === KEY.ENTER) {\n\t\tif (!resizeHandleElement.classList.contains(activeClass)) {\n\t\t\tresizeHandleElement.classList.add(activeClass);\n\t\t\tonStart(event, dispatch, options);\n\t\t}\n\t\treturn;\n\t} else if (\n\t\tevent.key === KEY.TAB ||\n\t\tevent.key === KEY.ESC ||\n\t\tevent.key === KEY.ESCAPE\n\t) {\n\t\tresizeHandleElement.classList.remove(activeClass);\n\t\tonResizeComplete(event, dispatch, options);\n\t\treturn;\n\t}\n\n\tif (!resizeHandleElement.classList.contains(activeClass)) return;\n\tlet currentWidth = null;\n\tlet currentHeight = null;\n\tconst size = {};\n\n\tswitch (event.key) {\n\t\tcase KEY.ARROW_LEFT:\n\t\tcase KEY.LEFT:\n\t\t\tcurrentWidth = parseFloat(window.getComputedStyle(element).width);\n\t\t\tif (direction === HANDLE_DIRECTIONS.RIGHT) {\n\t\t\t\tsize.width = currentWidth - keyboardResizeDelta;\n\t\t\t} else if (direction === HANDLE_DIRECTIONS.LEFT) {\n\t\t\t\tsize.width = currentWidth + keyboardResizeDelta;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY.ARROW_RIGHT:\n\t\tcase KEY.RIGHT:\n\t\t\tcurrentWidth = parseFloat(window.getComputedStyle(element).width);\n\t\t\tif (direction === HANDLE_DIRECTIONS.RIGHT) {\n\t\t\t\tsize.width = currentWidth + keyboardResizeDelta;\n\t\t\t} else if (direction === HANDLE_DIRECTIONS.LEFT) {\n\t\t\t\tsize.width = currentWidth - keyboardResizeDelta;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY.ARROW_DOWN:\n\t\tcase KEY.DOWN:\n\t\t\tcurrentHeight = parseFloat(window.getComputedStyle(element).height);\n\t\t\tif (direction === HANDLE_DIRECTIONS.TOP) {\n\t\t\t\tsize.height = currentHeight - keyboardResizeDelta;\n\t\t\t} else if (direction === HANDLE_DIRECTIONS.DOWN) {\n\t\t\t\tsize.height = currentHeight + keyboardResizeDelta;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY.ARROW_UP:\n\t\tcase KEY.UP:\n\t\t\tcurrentHeight = parseFloat(window.getComputedStyle(element).height);\n\t\t\tif (direction === HANDLE_DIRECTIONS.TOP) {\n\t\t\t\tsize.height = currentHeight + keyboardResizeDelta;\n\t\t\t} else if (direction === HANDLE_DIRECTIONS.DOWN) {\n\t\t\t\tsize.height = currentHeight - keyboardResizeDelta;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\tupdateSize(element, event, size, dispatch, options);\n};\n\nexport const addKeyboardSupport = (\n\t/** @type {HTMLElement} */ element,\n\t/** @type {{ keyboardOptions: any; }} */ options,\n\t/**\n\t * @type {{\n\t * \tdispatch: any;\n\t * \tupdateState?: Now.UpdateStateFunction<State>;\n\t * \tupdateProperties?: (propUpdate: Partial<Props>) => any;\n\t * \taction?: Now.Action<any, any>;\n\t * \tproperties?: Now.SeismicProps<Props>;\n\t * \tstate?: Now.SeismicState<Props, State>;\n\t * \thost?: Now.HostHTMLElement;\n\t * \tcollated?: { action: Now.Action<any, any>;\n\t * }[]; }}\n\t */ coeffects\n) => {\n\tconst { keyboardOptions } = options;\n\tconst { handles } = keyboardOptions;\n\tconst { dispatch } = coeffects;\n\n\tObject.values(HANDLE_DIRECTIONS).forEach((direction) => {\n\t\tconst handleSelector = handles[direction];\n\t\tconst resizeHandleElement =\n\t\t\thandleSelector && element.querySelector(handleSelector);\n\t\tif (resizeHandleElement) {\n\t\t\tresizeHandleElement.addEventListener('keydown', (\n\t\t\t\t/** @type {{ composedPath: () => any; path: any; key: string; }} */ event\n\t\t\t) => {\n\t\t\t\tkeyboardResizeHandler(\n\t\t\t\t\tevent,\n\t\t\t\t\telement,\n\t\t\t\t\tdirection,\n\t\t\t\t\toptions,\n\t\t\t\t\tdispatch\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t});\n};\n","import { actionTypes } from '@servicenow/ui-core';\n\nimport {\n\tACTION_PREFIX,\n\tACTIVE_CLASS,\n\tDATA_HAS_RESIZE_INTERACTION,\n\tKEYBOARD_RESIZE_DELTA,\n} from './constants';\nimport { addMouseSupport } from './interactjs';\nimport { addKeyboardSupport } from './keyboard';\n\nconst DEFAULT_EDGES = { left: false, top: false, right: true, bottom: true };\n\nconst DEFAULT_OPTIONS = {\n\tedges: DEFAULT_EDGES,\n\tmouseSupport: true,\n\tkeyboardSupport: false,\n\tkeyboardOptions: {\n\t\t// rate at which the width or height changes on each key stroke\n\t\tkeyboardResizeDelta: KEYBOARD_RESIZE_DELTA,\n\t\t// selector for each side eg: {left: 'slider-left', right: 'slider-right', top: 'slider-top'}\n\t\thandles: {},\n\t\t// class that will be added when enter is pressed on handle\n\t\tactiveClass: ACTIVE_CLASS,\n\t},\n};\n\n/**\n * @param {HTMLElement} element\n * @param {*} options\n * @param {Coeffects<Props,State>} coeffects\n */\nconst addResizeSupport = (element, options, coeffects) => {\n\tif (options.mouseSupport) {\n\t\taddMouseSupport(element, options, coeffects);\n\t}\n\tif (options.keyboardSupport) {\n\t\taddKeyboardSupport(element, options, coeffects);\n\t}\n};\n/**\n * @param {Coeffects<Props,State>} coeffects\n */\nexport const initialize = (coeffects) => {\n\tconst { host, action } = coeffects;\n\tconst { options } = action.payload;\n\tconst { selector, actionPrefix, keyboardOptions } = options;\n\tconst config = { ...DEFAULT_OPTIONS, ...options };\n\tconfig.actionPrefix = actionPrefix ?? ACTION_PREFIX;\n\tif (keyboardOptions)\n\t\tconfig.keyboardOptions = {\n\t\t\t...DEFAULT_OPTIONS.keyboardOptions,\n\t\t\t...keyboardOptions,\n\t\t};\n\tif (!selector) return;\n\tconst elements = host.shadowRoot?.querySelectorAll(selector);\n\tif (!elements) return;\n\tfor (let index = 0; index < elements.length; index++) {\n\t\tconst element = elements[index];\n\t\t// If we already added the interaction no need to add it again\n\t\tif (!element.getAttribute(DATA_HAS_RESIZE_INTERACTION)) {\n\t\t\t// Add resize support without blocking the main thread\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\taddResizeSupport(element, config, coeffects);\n\t\t\t\t// flag to stop adding the interaction multiple times\n\t\t\t\telement.setAttribute(DATA_HAS_RESIZE_INTERACTION, 'true');\n\t\t\t});\n\t\t}\n\t}\n};\n\nexport default {\n\tname: 'now-resize',\n\tactionHandlers: {\n\t\t[actionTypes.COMPONENT_TREE_RENDERED]: initialize,\n\t},\n};\n","import nowResizeBehavior from './resizingBehavior';\nexport default nowResizeBehavior;\n","export const COLUMN_DRAG_HANDLE_CLASS = 'column-drag-handle';\n\nexport const NOW_LIST_COLUMN_REORDER_ACTION_PREFIX = 'NOW_LIST#COLUMN_REORDER#';\n\n/**\n * Actions dispatched from nowSortable\n */\nexport const NOW_LIST_COLUMN_REORDER_START = `${NOW_LIST_COLUMN_REORDER_ACTION_PREFIX}SORT_START`;\nexport const NOW_LIST_COLUMN_REORDER_END = `${NOW_LIST_COLUMN_REORDER_ACTION_PREFIX}SORT_END`;\nexport const NOW_LIST_COLUMN_REORDER_CANCELLED = `${NOW_LIST_COLUMN_REORDER_ACTION_PREFIX}SORT_CANCELLED`;\nexport const NOW_LIST_COLUMN_REORDER_DROP_AREA_CHANGED = `${NOW_LIST_COLUMN_REORDER_ACTION_PREFIX}DROP_AREA_CHANGE`;\n\nexport const NOW_LIST_COLUMNS_REORDERED = 'NOW_LIST#COLUMNS_REORDERED';\n\nexport const NOW_SORTABLE_UPDATE_BEHAVIOR = 'NOW_SORTABLE#UPDATE_BEHAVIOR';\n\nexport const COLUMN_ACTIVE_CLASS = 'column-active';\nexport const SOURCE_PLACEHOLDER_CLASS = 'column-source-placeholder';\nexport const DROP_AREA_DIVIDER_CLASS = 'column-drop-area-divider';\nexport const ACTIVE_DRAGGING_ITEM_CLASS = 'column-active-dragging-item';\n","export const ELLIPSIS_ICON = 'ellipsis-v-fill';\nexport const GROUP_TOGGLE_ICON = 'chevron-end-fill';\nexport const ROW_HIGHLIGHTED_CLASS = 'is-highlighted';\nexport const ROW_GRAYED_OUT_CLASS = 'is-grayed-out';\nexport const ROW_RECENT_UPDATED_CLASS = 'is-recently-updated';\nexport const DRAG_HANDLE_ICON = 'drag-dots-fill';\nexport const WHITESPACE_STRING_CLASS = 'preserve-whitespace';\n\n// indentation classes for first cell of each row\n// should be large for special columns when row drag is not present and padding is on,\n// should be small for data columns when padding is on\n// neither when padding is off\nexport const INCLUDE_LARGE_PADDING_CLASS = 'include-large-padding';\nexport const INCLUDE_SMALL_PADDING_CLASS = 'include-small-padding';\n\nexport const COL_SPAN_MAX = 100;\n","// @ts-ignore\nimport { dangerouslyCreateElementFromString } from '@servicenow/ui-renderer-snabbdom';\nimport camelCase from 'lodash/camelCase';\n\nimport { LIST_ICON_CACHE } from '../../../constants';\n\nconst ICON_SIZES = {\n\tsm: { pixelSize: 12, indexInSet: 0 },\n\tmd: { pixelSize: 16, indexInSet: 1 },\n\tlg: { pixelSize: 24, indexInSet: 2 },\n\txl: { pixelSize: 32, indexInSet: 3 },\n};\n\n// @ts-ignore\n/**\n * Async method to cache icons to localStorage.\n * @param {string} icon\n * @param {\"sm\" | \"md\" | \"lg\"} size\n */\nconst cacheIcon = async (icon, size) => {\n\tconst camelIconName = camelCase(icon);\n\t// @ts-ignore\n\tconst iconKey = `${camelIconName}${getIconPixelSize(size)}`;\n\t// @ts-ignore\n\tconst iconService = window?.__TECTONIC__$servicenow_now_icon;\n\tif (iconService) {\n\t\tconst data = await iconService.getIcon(iconKey);\n\t\tif (data) {\n\t\t\tconst cacheString = localStorage.getItem(LIST_ICON_CACHE) || '{}';\n\t\t\tconst parsedCache = JSON.parse(cacheString);\n\t\t\tparsedCache[iconKey] = data;\n\n\t\t\tlocalStorage.setItem(LIST_ICON_CACHE, JSON.stringify(parsedCache));\n\t\t\treturn data;\n\t\t}\n\t}\n\treturn null;\n};\n\n// @ts-ignore\n/**\n * Returns the HTML for the HTML icon alternative to now-icon\n * @param {string} icon\n * @param {\"sm\" | \"md\" | \"lg\"} size\n */\nexport const getFakeNowIcon = (icon, size) => {\n\tconst camelIconName = camelCase(icon);\n\tconst pixelSize = getIconPixelSize(size);\n\tconst iconKey = `${camelIconName}${pixelSize}`;\n\tconst iconCacheString = localStorage.getItem(LIST_ICON_CACHE) || '{}';\n\tconst iconCacheParsed = JSON.parse(iconCacheString);\n\tconst result = iconCacheParsed[iconKey];\n\tif (!result) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<div className=\"html-icon\" data-iconName={icon} data-iconSize={size}>\n\t\t\t<svg\n\t\t\t\tclass={{\n\t\t\t\t\t'now-icon': true,\n\t\t\t\t\t[`-${size}`]: size,\n\t\t\t\t}}\n\t\t\t\tkey={iconKey}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tattr-viewBox={`0 0 ${ICON_SIZES[size].pixelSize} ${ICON_SIZES[size].pixelSize}`}\n\t\t\t>\n\t\t\t\t{result\n\t\t\t\t\t? dangerouslyCreateElementFromString(`<g>${result}</g>`)\n\t\t\t\t\t: null}\n\t\t\t</svg>\n\t\t</div>\n\t);\n};\n\n/**\n * Checks if a particular icon is in our list-icon-cache\n * @param {string} icon\n * @param {\"sm\" | \"md\" | \"lg\"} size\n */\nexport const iconIsCached = (icon, size) => {\n\tconst camelIconName = camelCase(icon);\n\tconst pixelSize = getIconPixelSize(size);\n\tconst iconKey = `${camelIconName}${pixelSize}`;\n\tconst iconCacheString = localStorage.getItem(LIST_ICON_CACHE) || '{}';\n\tconst iconCacheParsed = JSON.parse(iconCacheString);\n\tconst isCached = !!(iconCacheParsed && iconCacheParsed[iconKey]);\n\n\tif (isCached) return true;\n\n\tcacheIcon(icon, size);\n\treturn false;\n};\n\n/**\n * Returns the number of pixels for a given size\n * @param {\"sm\" | \"md\" | \"lg\"} size\n */\nexport const getIconPixelSize = (size) => {\n\t// @ts-ignore\n\tconst sizeObj = ICON_SIZES[size];\n\tif (!sizeObj) {\n\t\treturn undefined;\n\t}\n\tconst pixelSize = sizeObj['pixelSize'];\n\treturn pixelSize;\n};\n\n/**\n * Returns an object with the height and width in pixels for a given size to use\n * as the value for a style attribute.\n * @param {\"sm\" | \"md\" | \"lg\"} size\n */\nexport const getIconHeightWidth = (size) => {\n\tconst pixelSize = `${getIconPixelSize(size)}px`;\n\treturn { width: pixelSize, height: pixelSize };\n};\n","import { ICON_SIZES } from '../../../constants';\nimport { DRAG_HANDLE_ICON } from '../table/tableConstants';\nimport '@servicenow/now-button';\n\nimport { getFakeNowIcon, iconIsCached } from './fakeNowIcon';\n\n/**\n * @param {{className: string, ariaLabel?: string, ariaDescribedBy?: string, tooltip?: string}} props\n * @returns\n */\nexport const dragHandle = (props) => {\n\tconst { ariaLabel, className, ariaDescribedBy, tooltip } = props;\n\tconst { SMALL } = ICON_SIZES;\n\tconst testId = 'dragHandle';\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t{iconIsCached(DRAG_HANDLE_ICON, SMALL) ? (\n\t\t\t\t<button\n\t\t\t\t\tclassName=\"drag-handle\"\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\tdata-tooltip={tooltip}\n\t\t\t\t\taria-describedby={ariaDescribedBy}\n\t\t\t\t\tdata-testId={testId}\n\t\t\t\t>\n\t\t\t\t\t{getFakeNowIcon(DRAG_HANDLE_ICON, SMALL)}\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\ticon={DRAG_HANDLE_ICON}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tbare=\"true\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\thide-padding=\"true\"\n\t\t\t\t\tdata-tooltip={tooltip}\n\t\t\t\t\tdata-testId={testId}\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t'aria-label': ariaLabel,\n\t\t\t\t\t\t\trole: 'button',\n\t\t\t\t\t\t\t'aria-describedby': ariaDescribedBy,\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { createCustomElement } from '@servicenow/ui-core';\nimport '@servicenow/now-button';\n\nimport {\n\tACTIVE_DRAGGING_ITEM_CLASS,\n\tCOLUMN_DRAG_HANDLE_CLASS,\n} from '../../../../../behaviors/columnDragDropBehavior/constants';\nimport { dragHandle } from '../../../shared/dragHandle';\n\nimport styles from './columnHeaderClone.scss';\n\nexport const COLUMN_HEADER_CLONE_TAG_NAME = 'now-list-column-header-clone';\n\n/**\n * Element used to display the column header being dragged during\n * the column reordering.\n */\n/** @type {View<{label: string, width: number; height: number}, {}>} */\nexport const view = (props) => {\n\tconst {\n\t\tproperties: { label, width, height },\n\t} = props;\n\n\treturn (\n\t\t<th\n\t\t\tclassName={`${ACTIVE_DRAGGING_ITEM_CLASS} header-cell`}\n\t\t\tstyle={{ width, height }}\n\t\t>\n\t\t\t{dragHandle({ className: COLUMN_DRAG_HANDLE_CLASS })}\n\t\t\t{label}\n\t\t</th>\n\t);\n};\n\ncreateCustomElement('now-list-column-header-clone', {\n\tview,\n\tstyles,\n\tproperties: {\n\t\tlabel: { default: '' },\n\t\twidth: { default: 0 },\n\t\theight: { default: 0 },\n\t},\n});\n","import { closestDeep, removeNode, querySelectorDeep } from '../../commons';\nimport { SCROLL_CONTAINER_CLASS } from '../../constants';\nimport columnSelectors from '../../shared/utils/selectors/columnSelectors';\nimport { COLUMN_HEADER_CLONE_TAG_NAME } from '../../shared/views/table/tableHeaders/tableHeaderCell/columnHeaderClone';\n\nimport { DROP_AREA_DIVIDER_CLASS } from './constants';\n/**\n * @type {HTMLDivElement} Drop Area Divider element\n */\nlet dropAreaDivider;\n\n/**\n * Creates the dropAreaDivider element with height of scrollContainer on drag start\n * @param {HTMLTableCellElement} srcEl element being dragged\n * @returns\n */\nexport const createDropAreaDivider = (srcEl) => {\n\tdropAreaDivider = document.createElement('div');\n\tdropAreaDivider.classList.add(DROP_AREA_DIVIDER_CLASS);\n\tconst scrollContainer = closestDeep(srcEl, `.${SCROLL_CONTAINER_CLASS}`);\n\tif (scrollContainer) {\n\t\tdropAreaDivider.style.height = `${scrollContainer.clientHeight}px`;\n\t}\n\n\treturn dropAreaDivider;\n};\n\n/**\n * Checks if given element is a special column\n * @param {ChildNode | null} colEl\n * @returns\n */\nconst isSpecialColumnElement = (colEl) =>\n\tcolEl instanceof HTMLElement &&\n\tcolEl.dataset.columnKey &&\n\tcolumnSelectors.isSpecialColumnKey(colEl.dataset.columnKey);\n\n/**\n * Checks if destination placeholder is in the non droppable positions like\n * 1. Between the special columns, eg. Row actions and Row selection\n * 2. Before the special columns at the beginning\n * 3. After the special columns at the end\n * @param {HTMLElement} destEl\n * @returns {Boolean}\n */\nexport const isInDroppableZone = (destEl) => {\n\tconst nextColumn = destEl.nextSibling;\n\tconst isNextSpecialColumn = isSpecialColumnElement(nextColumn);\n\n\tconst previousColumn = destEl.previousSibling;\n\tconst isPreviousSpecialColumn = isSpecialColumnElement(previousColumn);\n\n\tif (isNextSpecialColumn && isPreviousSpecialColumn) {\n\t\t/**\n\t\t * 1. Between the special columns\n\t\t * [X]#[X]\n\t\t */\n\t\treturn false;\n\t} else if (isNextSpecialColumn && previousColumn == null) {\n\t\t/**\n\t\t * 2. Before the special columns at the beginning\n\t\t * #[X]\n\t\t */\n\t\treturn false;\n\t} else if (isPreviousSpecialColumn && nextColumn == null) {\n\t\t/**\n\t\t * 3. After the special columns at the end\n\t\t * [X]#\n\t\t */\n\t\treturn false;\n\t}\n\t// Droppable by default\n\treturn true;\n};\n\n/**\n * Element representing the drop area divider, a placeholder line where column can be dropped\n * always stays inside the nearest column header.\n * @param {HTMLElement} destEl\n */\nexport const attachDropAreaDivider = (destEl) => {\n\t// remove existing dividers if any\n\tremoveDropAreaDivider();\n\n\tif (!isInDroppableZone(destEl)) {\n\t\treturn;\n\t}\n\n\t/**\n\t * Header cells / Columns\n\t * [X][__][__][__][__][X]\n\t * '#' = Destination Placeholder\n\t * '|' = Divider\n\t * 'X' = Special Columns\n\t */\n\tif (destEl.nextSibling) {\n\t\t/**\n\t\t * Placeholder before the columns\n\t\t *  [X][__]#[__][__][__][X]\n\t\t *  #[__][__][__][__][X]\n\t\t *  [__][__][__][__]#[X]\n\t\t * place divider at the beginning of the next column\n\t\t *  [X][__]#[|__][__][__][X]\n\t\t *  #[|__][__][__][__][X]\n\t\t *  [__][__][__][__][|X]\n\t\t */\n\t\tdestEl.nextSibling.insertBefore(\n\t\t\tdropAreaDivider,\n\t\t\tdestEl.nextSibling.firstChild\n\t\t);\n\t} else if (destEl.previousSibling && destEl.parentElement) {\n\t\t/**\n\t\t * Placeholder at the end (no special type column)\n\t\t *  [X][__][__][__][__]#\n\t\t *  [__][__][__][__]#\n\t\t * append at the end of the header row\n\t\t *  [X][__][__][__][__]|#\n\t\t *  [__][__][__][__]|#\n\t\t */\n\t\tdestEl.parentElement.insertBefore(dropAreaDivider, destEl);\n\t}\n};\n\n/**\n * Removes any drop area divider if attached to the table\n */\nexport const removeDropAreaDivider = () => {\n\tif (dropAreaDivider) {\n\t\tremoveNode(dropAreaDivider);\n\t}\n};\n\n/**\n * While drag & drop using the keyboard, adjusts the position of dragging item\n * to be in between (about to drop) the columns where divider is shown.\n * i.e centers the headerClone above the dropAreaDivider.\n */\nexport const adjustClonePosition = () => {\n\tif (!dropAreaDivider) {\n\t\treturn;\n\t}\n\n\tconst dividerRect = dropAreaDivider.getBoundingClientRect();\n\t// check if divider visible in the DOM\n\tif (dividerRect.width === 0) {\n\t\treturn;\n\t}\n\n\tconst headerClone = querySelectorDeep(COLUMN_HEADER_CLONE_TAG_NAME);\n\tif (!headerClone) {\n\t\treturn;\n\t}\n\n\t/**\n\t * The headerClone's first half should be on left side and\n\t * second half on the right side of the divider.\n\t * [HEADER-|DIVIDER|-CLONE]\n\t */\n\theaderClone.style.left = `${\n\t\tdividerRect.left - headerClone.clientWidth / 2\n\t}px`;\n};\n","import { actionTypes } from '@servicenow/ui-core';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\nimport { t } from 'sn-translate';\n\nimport columnSelectors from '../../shared/utils/selectors/columnSelectors';\nimport { getColumnInfo } from '../columnBehavior/columnBehavior';\nimport { setBehaviorState } from '../keyboardNavBehavior/keyboardNavHelpers';\n\nimport {\n\tremoveDropAreaDivider,\n\tcreateDropAreaDivider,\n} from './columnDragDropUtils';\nimport { NOW_LIST_COLUMNS_REORDERED } from './constants';\n\n/* STRING CONSTANTS */\nconst COLUMN_DEFINITIONS_PATH = 'processedColumnDefinitions';\nconst COLUMNS_PATH = 'columns';\n\nconst columnsDataPath = [\n\tCOLUMN_DEFINITIONS_PATH,\n\tCOLUMN_DEFINITIONS_PATH,\n\tCOLUMNS_PATH,\n];\n\nconst ARIA_LIVE_REGION_TYPE = 'assertive';\n/**\n * Updates aria-live region with given message\n * @param {Now.Dispatch} dispatch\n * @param {string} message message to be announced by the live region\n * @param {string} type message type, could be assertive, polite, etc.\n */\nexport function updateAriaLiveRegion(\n\tdispatch,\n\tmessage,\n\ttype = ARIA_LIVE_REGION_TYPE\n) {\n\tdispatch(actionTypes.ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage,\n\t\ttype,\n\t});\n}\n\n/**\n *\n * @param {Now.SeismicState<Props, State>} state\n * @returns list of columns\n */\nconst getClonedColumns = (state) => cloneDeep(get(state, columnsDataPath, []));\n\n/**\n *\n * @param {Now.SeismicState<Props, State>} state\n * @returns processed column definitions\n */\nconst getClonedColumnDefs = (state) =>\n\tcloneDeep(get(state, COLUMN_DEFINITIONS_PATH));\n\n/**\n * set active flag on the column and it's children if any\n * @param {ProcessedColumn} column\n */\nexport const setColumnActive = (column) => {\n\tset(column, '_active', true);\n\tcolumnSelectors.getChildren(column).forEach(setColumnActive);\n};\n\n/**\n * resets active flag for each column\n * @param {ProcessedColumn[]} columns\n */\nexport const resetActiveColumns = (columns) => {\n\tcolumns.forEach((column) => {\n\t\tcolumn._active = false;\n\t\tresetActiveColumns(columnSelectors.getChildren(column));\n\t});\n};\n\n/**\n * Selects the droppable column keys filtering the special columns\n * @param {ProcessedColumn[]} columns\n * @returns column keys without special type columns\n */\nexport const getValidColumnKeys = (columns = []) =>\n\tcolumns\n\t\t.map(columnSelectors.getColumnKey)\n\t\t.filter((col) => !columnSelectors.isSpecialColumnKey(col));\n\n/**\n * Updates new columns to the given processed columnDefinitions\n * @param {ProcessedColumnDefinitions} colDefs\n * @param {ProcessedColumn[]} columns\n */\nconst updateColumns = (colDefs, columns) => {\n\tset(colDefs, [COLUMN_DEFINITIONS_PATH, COLUMNS_PATH], columns);\n};\n\n/**\n * Resets the column active flag\n * Set _active to false in all the columns\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const resetActiveColumnsEffect = (coeffects) => {\n\tconst { updateState, state } = coeffects;\n\n\tconst clonedColumnDefs = getClonedColumnDefs(state);\n\tconst clonedColumns = getClonedColumns(state);\n\tresetActiveColumns(clonedColumns);\n\tupdateColumns(clonedColumnDefs, clonedColumns);\n\n\tupdateState({\n\t\tpath: COLUMN_DEFINITIONS_PATH,\n\t\tvalue: clonedColumnDefs,\n\t\toperation: 'set',\n\t});\n};\n\n/**\n * Gives the readable position of column for Screen readers\n * Eg: column with index 0, should have position 1\n * @param {number} index position of the column in the DOM\n * @param {Now.SeismicState<Props, State>} state component state\n * @returns\n */\nexport const getColumnReadablePosition = (index, state) => {\n\tconst offsetPosition = columnSelectors.getDataColumnsOffsetPosition(\n\t\tgetClonedColumnDefs(state)\n\t);\n\treturn index - offsetPosition + 1;\n};\n\n/**\n * Gives total number columns on the top/root level\n * @param {ColumnDefinitions} colDefs\n * @returns\n */\nexport const getTotalTopLevelColumns = (colDefs) => {\n\tconst columns = columnSelectors.getColumns(colDefs);\n\treturn columns.length;\n};\n\n/**\n * On column drop, prepares the new order of columns and dispatches the\n * action {@link NOW_LIST_COLUMNS_REORDERED}\n * Resets the active columns\n * @param {Now.Coeffects<Props, State>} coeffects\n * @returns\n */\nexport const columnDropEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { sourceIndex, destinationIndex: domDestinationIndex },\n\t\t},\n\t\tstate,\n\t\tdispatch,\n\t\tupdateState,\n\t\tproperties,\n\t} = coeffects;\n\tremoveDropAreaDivider();\n\n\t/**\n\t * In ascending direction (sourceIndex < destinationIndex)\n\t * index includes the source column\n\t */\n\tconst destinationIndex =\n\t\tdomDestinationIndex - (sourceIndex < domDestinationIndex ? 1 : 0);\n\n\t/**\n\t * Omit if source column is same as destination column\n\t */\n\tif (sourceIndex === destinationIndex) {\n\t\tresetActiveColumnsEffect(coeffects);\n\t\treturn;\n\t}\n\n\tconst clonedColumns = getClonedColumns(state);\n\tconst isSpecialColumn = columnSelectors.isSpecialColumn(\n\t\tclonedColumns[destinationIndex]\n\t);\n\n\t/**\n\t * Omit if destination is of special type column\n\t */\n\tif (isSpecialColumn) {\n\t\tresetActiveColumnsEffect(coeffects);\n\t\treturn;\n\t}\n\n\t/**\n\t * @type {string[]} list of columnKeys before re-order\n\t */\n\tconst oldColumns = getValidColumnKeys(clonedColumns);\n\n\t// Position columns based on source and destination indices\n\tconst sourceColumn = clonedColumns[sourceIndex];\n\tclonedColumns.splice(\n\t\tdestinationIndex,\n\t\t0,\n\t\tclonedColumns.splice(sourceIndex, 1)[0]\n\t);\n\n\t/**\n\t * @type {string[]} list of columnKeys after re-order\n\t */\n\tconst newColumns = getValidColumnKeys(clonedColumns);\n\n\t/**\n\t * @type {string[]} list of columnKeys re-ordererd\n\t */\n\tconst reorderedColumns = [columnSelectors.getColumnKey(sourceColumn)];\n\n\tconst clonedColumnDefs = getClonedColumnDefs(state);\n\tresetActiveColumns(clonedColumns);\n\tupdateColumns(clonedColumnDefs, clonedColumns);\n\n\t// reconstruct columnInfo based on the new column order\n\tconst updatedColumnInfo = getColumnInfo(clonedColumns);\n\n\tupdateState({\n\t\tpath: COLUMN_DEFINITIONS_PATH,\n\t\tvalue: {\n\t\t\t...clonedColumnDefs,\n\t\t\t...updatedColumnInfo,\n\t\t},\n\t\toperation: 'set',\n\t});\n\n\tsetBehaviorState(updateState, {\n\t\tisRendered: false,\n\t\tcellToFocus: {\n\t\t\trowIndex: 0, // always for the top level header row\n\t\t\tcolumnKey: columnSelectors.getColumnKey(sourceColumn),\n\t\t\tenterCellTrap: true, // on drop, focus on the grab icon\n\t\t},\n\t});\n\n\tdispatch(NOW_LIST_COLUMNS_REORDERED, {\n\t\toldColumns,\n\t\tnewColumns,\n\t\treorderedColumns,\n\t});\n\n\tconst message = t(\n\t\t'Column {0} dropped. Final position {1} of {2}.',\n\t\tcolumnSelectors.getColumnLabel(sourceColumn),\n\t\tgetColumnReadablePosition(destinationIndex, state),\n\t\tgetTotalTopLevelColumns(properties.columnDefinitions)\n\t);\n\tupdateAriaLiveRegion(dispatch, message);\n};\n\n/**\n * On column drag start, updates the active column\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const columnDragStartEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { element, sourceIndex },\n\t\t},\n\t\tupdateState,\n\t\tstate,\n\t\tdispatch,\n\t\tproperties,\n\t} = coeffects;\n\n\tcreateDropAreaDivider(element);\n\n\tconst columnKey = element.dataset.columnKey;\n\n\tconst clonedColumnDefs = getClonedColumnDefs(state);\n\tconst column = columnSelectors.getColumnFromProcessedCols(\n\t\tclonedColumnDefs,\n\t\tcolumnKey\n\t);\n\n\t// marking target column as selected\n\tsetColumnActive(column);\n\n\tupdateState({\n\t\tpath: COLUMN_DEFINITIONS_PATH,\n\t\tvalue: clonedColumnDefs,\n\t\toperation: 'set',\n\t});\n\n\tconst message = t(\n\t\t'Column {0} grabbed. Current position {1} of {2}. Press left and right to change the position of the column, enter to drop, and escape to cancel.',\n\t\tcolumnSelectors.getColumnLabel(column),\n\t\tgetColumnReadablePosition(sourceIndex, state),\n\t\tgetTotalTopLevelColumns(properties.columnDefinitions)\n\t);\n\tupdateAriaLiveRegion(dispatch, message);\n};\n\n/**\n * On drag cancel, resets the active column\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const columnDropCancelledEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { element, sourceIndex },\n\t\t},\n\t\tstate,\n\t\tdispatch,\n\t\tproperties,\n\t\tupdateState,\n\t} = coeffects;\n\tremoveDropAreaDivider();\n\tresetActiveColumnsEffect(coeffects);\n\n\tconst columnKey = element.dataset.columnKey;\n\n\tconst clonedColumnDefs = getClonedColumnDefs(state);\n\tconst column = columnSelectors.getColumnFromProcessedCols(\n\t\tclonedColumnDefs,\n\t\tcolumnKey\n\t);\n\n\tsetBehaviorState(updateState, {\n\t\tisRendered: false,\n\t\tcellToFocus: {\n\t\t\trowIndex: 0, // always for the top level header row\n\t\t\tcolumnKey: columnSelectors.getColumnKey(column),\n\t\t\tenterCellTrap: true, // on drop, focus on the grab icon\n\t\t},\n\t});\n\n\tconst message = t(\n\t\t'Drag and drop cancelled. Column {0} in position {1} of {2}.',\n\t\tcolumnSelectors.getColumnLabel(column),\n\t\tgetColumnReadablePosition(sourceIndex, state),\n\t\tgetTotalTopLevelColumns(properties.columnDefinitions)\n\t);\n\tupdateAriaLiveRegion(dispatch, message);\n};\n\n/**\n * @param {Now.Coeffects<Props,State>} coeffects\n */\nexport const columnDropAreaChangeEffect = ({\n\taction,\n\tstate,\n\tproperties,\n\tdispatch,\n}) => {\n\tconst {\n\t\tpayload: { newPosition },\n\t} = action;\n\t/**\n\t * Don't announce if in case trying to drop on special columns or beyond the table\n\t * Valid positions always start with 1 and ends with data columns length + 1\n\t */\n\tconst columnPosition = getColumnReadablePosition(newPosition, state);\n\tif (columnPosition < 1) return;\n\tconst maxPosition =\n\t\tgetTotalTopLevelColumns(properties.columnDefinitions) + 1;\n\tif (columnPosition > maxPosition) return;\n\n\tconst message = t('Position {0}', columnPosition);\n\tupdateAriaLiveRegion(dispatch, message);\n};\n","import { querySelectorDeep, seismicClone } from '../../commons';\nimport { SCROLL_CONTAINER_CLASS } from '../../constants';\nimport { COLUMN_HEADER_CLONE_TAG_NAME } from '../../shared/views/table/tableHeaders/tableHeaderCell/columnHeaderClone';\nimport { KEY } from '../keyboardNavBehavior/constants';\n\nimport {\n\tadjustClonePosition,\n\tattachDropAreaDivider,\n} from './columnDragDropUtils';\nimport {\n\tACTIVE_DRAGGING_ITEM_CLASS,\n\tCOLUMN_DRAG_HANDLE_CLASS,\n\tCOLUMN_ACTIVE_CLASS,\n\tNOW_LIST_COLUMN_REORDER_ACTION_PREFIX,\n\tSOURCE_PLACEHOLDER_CLASS,\n} from './constants';\n\nexport const DRAGGABLE_ITEMS = 'th.header-cell';\nexport const DROPZONE = 'table.now-list-table > thead > tr';\n\n/**\n * An element markup to indicate the source placeholder.\n *\n * nowSortable hides the source element (header cell) by default.\n * But we need the header cell to be visible, so cloning the original header cell and\n * using it as a source placeholder which will replace the source header cell visually.\n * @param {HTMLTableCellElement} srcEl source header cell\n * @returns\n */\nexport const customSourcePlaceholder = (srcEl) => {\n\tconst th = seismicClone(srcEl);\n\t// @ts-ignore No classList property on Node\n\tth.classList.add(COLUMN_ACTIVE_CLASS, SOURCE_PLACEHOLDER_CLASS);\n\treturn th;\n};\n\n/**\n * An element markup to indicate an area where the item can be dropped\n * @returns {HTMLTableCellElement} th - Header cell element indicates an area where the item can be dropped\n */\nexport const customDestPlaceholder = () => {\n\tconst th = document.createElement('th');\n\t/**\n\t * Hide this by default, otherwise it acts as another column; distoring the table view\n\t * with empty space in between.\n\t */\n\tth.style.display = 'none';\n\n\t/**\n\t * Stores the original method as a backup to use it in the override\n\t */\n\tconst getBoundingClientRectActual = th.getBoundingClientRect;\n\t/**\n\t * getBoundingClientRect method is used the by nowSortable to calculate the destination position.\n\t * It doesn't work for the element (destPlaceholder) which is hidden in our <table> use case.\n\t * So overriding it to calculate the real position and hide the destPlaceholder again.\n\t *\n\t * FIXME: Remove this if we found a better solution since this is a hack to get the default keyboard support from the nowSortable.\n\t */\n\tth.getBoundingClientRect = () => {\n\t\t// Make it visible\n\t\tth.style.display = 'block';\n\n\t\t// Calculate actual positions\n\t\tconst rect = getBoundingClientRectActual.call(th);\n\n\t\t// Hide it again\n\t\tth.style.display = 'none';\n\n\t\treturn rect;\n\t};\n\n\treturn th;\n};\n\n/**\n * Representational markup for the header cell being dragged\n * @param {HTMLTableCellElement} srcEl Source Header cell\n * @returns {HTMLElement}\n */\nexport const headerClone = (srcEl) => {\n\tconst el = document.createElement(COLUMN_HEADER_CLONE_TAG_NAME);\n\tel.classList.add(ACTIVE_DRAGGING_ITEM_CLASS, 'header-cell');\n\tconst headerLabel = querySelectorDeep('.header-cell-text', srcEl).innerText;\n\tel.setAttribute('label', headerLabel);\n\tel.setAttribute('width', `${srcEl.offsetWidth}px`);\n\n\t// @ts-ignore\n\tconst headerContentEl = querySelectorDeep('.header-cell-content', srcEl);\n\tconst headerHeight = headerContentEl?.offsetHeight || 0;\n\tel.setAttribute('height', `${headerHeight}px`);\n\treturn el;\n};\n\nconst sortableRef = {\n\tcurrent: {\n\t\tisKeyboardActive: false,\n\t},\n};\n\n/**\n * Callback fired on inserting the destination placeholder\n * @param {HTMLElement} targetElement\n * @param {HTMLElement} srcPlaceholder\n * @param {HTMLElement} destPlaceholder\n */\nconst onDestPlaceholderInsert = (\n\ttargetElement,\n\tsrcPlaceholder,\n\tdestPlaceholder\n) => {\n\tattachDropAreaDivider(destPlaceholder);\n\t// Only for keyboard drag drop\n\tif (sortableRef.current.isKeyboardActive) {\n\t\tadjustClonePosition();\n\t}\n};\n\n/**\n * Initializes InteractJs adaptor based on this this condition.\n * We're checking the property columnDragDropEnabled\n * @param {Now.HostHTMLElement} host now-list component\n * @returns\n */\nconst isDragEnabled = (host) => {\n\tconst { columnDragDropEnabled } = host.getProperties();\n\treturn columnDragDropEnabled;\n};\n\n/**\n * Filters the items (Header cells) that can be draggable\n * using the data attribute\n * @param {*} item\n * @returns\n */\nconst filterDraggableHeaderCells = (item) => {\n\treturn item.dataset.draggable === 'true';\n};\n\nconst SCROLL_CONTAINER = `.${SCROLL_CONTAINER_CLASS}`;\n\nconst keyboardCustomTriggers = {\n\t/**\n\t * [Space] click on the focussed drag handle tirggers the drag start\n\t * @param {KeyboardEvent} event\n\t * @returns\n\t */\n\tstart: (event) => {\n\t\tconst trigger = event.key === KEY.SPACE;\n\t\tif (trigger) {\n\t\t\tsortableRef.current.isKeyboardActive = true;\n\t\t}\n\t\treturn trigger;\n\t},\n\t/**\n\t * [Enter] click ends the dragging\n\t * @param {KeyboardEvent} event\n\t * @returns\n\t */\n\tend: (event) => {\n\t\tconst trigger = event.key === KEY.ENTER;\n\t\tif (trigger) {\n\t\t\tsortableRef.current.isKeyboardActive = false;\n\t\t}\n\t\treturn trigger;\n\t},\n};\n\nexport default {\n\thandle: `.${COLUMN_DRAG_HANDLE_CLASS}`,\n\tallowFrom: `.${COLUMN_DRAG_HANDLE_CLASS}`,\n\titems: DRAGGABLE_ITEMS,\n\tdropzone: DROPZONE,\n\tactionPrefix: NOW_LIST_COLUMN_REORDER_ACTION_PREFIX,\n\txScrollParent: SCROLL_CONTAINER,\n\tyScrollParent: SCROLL_CONTAINER,\n\tcloneAppendTo: 'body',\n\tlistOrder: 'horizontal',\n\trestrictTo: SCROLL_CONTAINER,\n\ttransitions: true,\n\tdragSupport: true,\n\tlockAxis: 'x',\n\titemsFilter: filterDraggableHeaderCells,\n\tcustomSourcePlaceholder,\n\tcustomDestPlaceholder,\n\tclone: headerClone,\n\tcondition: isDragEnabled,\n\tcursorChecker: () => '',\n\tonDestPlaceholderInsert,\n\tkeyboardSupport: true,\n\tkeyboardTriggers: keyboardCustomTriggers,\n};\n","import { actionTypes } from '@servicenow/ui-core';\n\nimport { nowSortable } from '../../commons';\n\nimport {\n\tcolumnDragStartEffect,\n\tcolumnDropAreaChangeEffect,\n\tcolumnDropCancelledEffect,\n\tcolumnDropEffect,\n} from './columnDragDropEffects';\nimport {\n\tNOW_LIST_COLUMN_REORDER_CANCELLED,\n\tNOW_LIST_COLUMN_REORDER_END,\n\tNOW_LIST_COLUMN_REORDER_START,\n\tNOW_LIST_COLUMN_REORDER_DROP_AREA_CHANGED,\n\tNOW_SORTABLE_UPDATE_BEHAVIOR,\n} from './constants';\nimport nowSortableOptions from './nowSortableOptions';\n\n/**\n * Re-initalizes the interactJs adaptor of nowSortable on {@link actionTypes.COMPONENT_DOM_TREE_READY},\n * to make sure DOM content is ready\n * @param {Now.Coeffects<Props>} coeffects\n */\nexport const refreshSortableHandler = ({ dispatch }) => {\n\tdispatch(NOW_SORTABLE_UPDATE_BEHAVIOR);\n};\n\nconst columnDragDropBehavior = {\n\tname: 'columnDragDropBehavior',\n\tactionHandlers: {\n\t\t...nowSortable.actionHandlers,\n\t\t[NOW_LIST_COLUMN_REORDER_START]: {\n\t\t\teffect: columnDragStartEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_COLUMN_REORDER_CANCELLED]: {\n\t\t\teffect: columnDropCancelledEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_COLUMN_REORDER_END]: {\n\t\t\teffect: columnDropEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_COLUMN_REORDER_DROP_AREA_CHANGED]: {\n\t\t\teffect: columnDropAreaChangeEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[actionTypes.COMPONENT_TREE_RENDERED]: refreshSortableHandler,\n\t},\n};\n\nexport default {\n\tbehavior: columnDragDropBehavior,\n\toptions: nowSortableOptions,\n};\n","export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n  if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n      console.warn(new Error().stack);\n    }\n\n    return new Date(NaN);\n  }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\nexport default function getTime(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  return timestamp;\n}","import getTime from \"../getTime/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\n\nexport default function getUnixTime(dirtyDate) {\n  requiredArgs(1, arguments);\n  return Math.floor(getTime(dirtyDate) / 1000);\n}","/**\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\n * `date` as it will be rendered in the `timeZone`.\n */\nexport default function tzTokenizeDate(date, timeZone) {\n  var dtf = getDateTimeFormat(timeZone)\n  return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date)\n}\n\nvar typeToPos = {\n  year: 0,\n  month: 1,\n  day: 2,\n  hour: 3,\n  minute: 4,\n  second: 5,\n}\n\nfunction partsOffset(dtf, date) {\n  try {\n    var formatted = dtf.formatToParts(date)\n    var filled = []\n    for (var i = 0; i < formatted.length; i++) {\n      var pos = typeToPos[formatted[i].type]\n\n      if (pos >= 0) {\n        filled[pos] = parseInt(formatted[i].value, 10)\n      }\n    }\n    return filled\n  } catch (error) {\n    if (error instanceof RangeError) {\n      return [NaN]\n    }\n    throw error\n  }\n}\n\nfunction hackyOffset(dtf, date) {\n  var formatted = dtf.format(date).replace(/\\u200E/g, '')\n  var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted)\n  // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\n  // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\n  return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]]\n}\n\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\n// to get deterministic local date/time output according to the `en-US` locale which\n// can be used to extract local time parts as necessary.\nvar dtfCache = {}\nfunction getDateTimeFormat(timeZone) {\n  if (!dtfCache[timeZone]) {\n    // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\n    var testDateFormatted = new Intl.DateTimeFormat('en-US', {\n      hour12: false,\n      timeZone: 'America/New_York',\n      year: 'numeric',\n      month: '2-digit',\n      day: '2-digit',\n      hour: '2-digit',\n      minute: '2-digit',\n      second: '2-digit',\n    }).format(new Date('2014-06-25T04:00:00.123Z'))\n    var hourCycleSupported =\n      testDateFormatted === '06/25/2014, 00:00:00' ||\n      testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'\n\n    dtfCache[timeZone] = hourCycleSupported\n      ? new Intl.DateTimeFormat('en-US', {\n          hour12: false,\n          timeZone: timeZone,\n          year: 'numeric',\n          month: '2-digit',\n          day: '2-digit',\n          hour: '2-digit',\n          minute: '2-digit',\n          second: '2-digit',\n        })\n      : new Intl.DateTimeFormat('en-US', {\n          hourCycle: 'h23',\n          timeZone: timeZone,\n          year: 'numeric',\n          month: '2-digit',\n          day: '2-digit',\n          hour: '2-digit',\n          minute: '2-digit',\n          second: '2-digit',\n        })\n  }\n  return dtfCache[timeZone]\n}\n","/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport default function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n  var utcDate = new Date(0)\n  utcDate.setUTCFullYear(fullYear, month, day)\n  utcDate.setUTCHours(hour, minute, second, millisecond)\n  return utcDate\n}\n","import tzTokenizeDate from '../tzTokenizeDate/index.js'\nimport newDateUTC from '../newDateUTC/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\n\nvar patterns = {\n  timezone: /([Z+-].*)$/,\n  timezoneZ: /^(Z)$/,\n  timezoneHH: /^([+-]\\d{2})$/,\n  timezoneHHMM: /^([+-]\\d{2}):?(\\d{2})$/,\n}\n\n// Parse various time zone offset formats to an offset in milliseconds\nexport default function tzParseTimezone(timezoneString, date, isUtcDate) {\n  var token\n  var absoluteOffset\n\n  // Empty string\n  if (timezoneString === '') {\n    return 0\n  }\n\n  // Z\n  token = patterns.timezoneZ.exec(timezoneString)\n  if (token) {\n    return 0\n  }\n\n  var hours\n\n  // ±hh\n  token = patterns.timezoneHH.exec(timezoneString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n\n    if (!validateTimezone(hours)) {\n      return NaN\n    }\n\n    return -(hours * MILLISECONDS_IN_HOUR)\n  }\n\n  // ±hh:mm or ±hhmm\n  token = patterns.timezoneHHMM.exec(timezoneString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n    var minutes = parseInt(token[2], 10)\n\n    if (!validateTimezone(hours, minutes)) {\n      return NaN\n    }\n\n    absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n    return hours > 0 ? -absoluteOffset : absoluteOffset\n  }\n\n  // IANA time zone\n  if (isValidTimezoneIANAString(timezoneString)) {\n    date = new Date(date || Date.now())\n    var utcDate = isUtcDate ? date : toUtcDate(date)\n\n    var offset = calcOffset(utcDate, timezoneString)\n\n    var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString)\n\n    return -fixedOffset\n  }\n\n  return NaN\n}\n\nfunction toUtcDate(date) {\n  return newDateUTC(\n    date.getFullYear(),\n    date.getMonth(),\n    date.getDate(),\n    date.getHours(),\n    date.getMinutes(),\n    date.getSeconds(),\n    date.getMilliseconds()\n  )\n}\n\nfunction calcOffset(date, timezoneString) {\n  var tokens = tzTokenizeDate(date, timezoneString)\n\n  // ms dropped because it's not provided by tzTokenizeDate\n  var asUTC = newDateUTC(\n    tokens[0],\n    tokens[1] - 1,\n    tokens[2],\n    tokens[3] % 24,\n    tokens[4],\n    tokens[5],\n    0\n  ).getTime()\n\n  var asTS = date.getTime()\n  var over = asTS % 1000\n  asTS -= over >= 0 ? over : 1000 + over\n  return asUTC - asTS\n}\n\nfunction fixOffset(date, offset, timezoneString) {\n  var localTS = date.getTime()\n\n  // Our UTC time is just a guess because our offset is just a guess\n  var utcGuess = localTS - offset\n\n  // Test whether the zone matches the offset for this ts\n  var o2 = calcOffset(new Date(utcGuess), timezoneString)\n\n  // If so, offset didn't change, and we're done\n  if (offset === o2) {\n    return offset\n  }\n\n  // If not, change the ts by the difference in the offset\n  utcGuess -= o2 - offset\n\n  // If that gives us the local time we want, we're done\n  var o3 = calcOffset(new Date(utcGuess), timezoneString)\n  if (o2 === o3) {\n    return o2\n  }\n\n  // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\n  return Math.max(o2, o3)\n}\n\nfunction validateTimezone(hours, minutes) {\n  return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59))\n}\n\nvar validIANATimezoneCache = {}\nfunction isValidTimezoneIANAString(timeZoneString) {\n  if (validIANATimezoneCache[timeZoneString]) return true\n  try {\n    new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString })\n    validIANATimezoneCache[timeZoneString] = true\n    return true\n  } catch (error) {\n    return false\n  }\n}\n","/** Regex to identify the presence of a time zone specifier in a date string */\nvar tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/\n\nexport default tzPattern\n","import toInteger from 'date-fns/_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport tzPattern from '../_lib/tzPattern/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n  dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n  datePattern: /^([0-9W+-]+)(.*)/,\n  plainTime: /:/,\n\n  // year tokens\n  YY: /^(\\d{2})$/,\n  YYY: [\n    /^([+-]\\d{2})$/, // 0 additional digits\n    /^([+-]\\d{3})$/, // 1 additional digit\n    /^([+-]\\d{4})$/, // 2 additional digits\n  ],\n  YYYY: /^(\\d{4})/,\n  YYYYY: [\n    /^([+-]\\d{4})/, // 0 additional digits\n    /^([+-]\\d{5})/, // 1 additional digit\n    /^([+-]\\d{6})/, // 2 additional digits\n  ],\n\n  // date tokens\n  MM: /^-(\\d{2})$/,\n  DDD: /^-?(\\d{3})$/,\n  MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n  Www: /^-?W(\\d{2})$/,\n  WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n  HH: /^(\\d{2}([.,]\\d*)?)$/,\n  HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n  HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n  // time zone tokens (to identify the presence of a tz)\n  timeZone: tzPattern,\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate(argument, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  if (argument === null) {\n    return new Date(NaN)\n  }\n\n  var options = dirtyOptions || {}\n\n  var additionalDigits =\n    options.additionalDigits == null\n      ? DEFAULT_ADDITIONAL_DIGITS\n      : toInteger(options.additionalDigits)\n  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2')\n  }\n\n  // Clone the date\n  if (\n    argument instanceof Date ||\n    (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n  ) {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime())\n  } else if (\n    typeof argument === 'number' ||\n    Object.prototype.toString.call(argument) === '[object Number]'\n  ) {\n    return new Date(argument)\n  } else if (\n    !(\n      typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]'\n    )\n  ) {\n    return new Date(NaN)\n  }\n\n  var dateStrings = splitDateString(argument)\n\n  var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n  var year = parseYearResult.year\n  var restDateString = parseYearResult.restDateString\n\n  var date = parseDate(restDateString, year)\n\n  if (isNaN(date)) {\n    return new Date(NaN)\n  }\n\n  if (date) {\n    var timestamp = date.getTime()\n    var time = 0\n    var offset\n\n    if (dateStrings.time) {\n      time = parseTime(dateStrings.time)\n\n      if (isNaN(time)) {\n        return new Date(NaN)\n      }\n    }\n\n    if (dateStrings.timeZone || options.timeZone) {\n      offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time))\n      if (isNaN(offset)) {\n        return new Date(NaN)\n      }\n    } else {\n      // get offset accurate to hour in time zones that change offset\n      offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n      offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset))\n    }\n\n    return new Date(timestamp + time + offset)\n  } else {\n    return new Date(NaN)\n  }\n}\n\nfunction splitDateString(dateString) {\n  var dateStrings = {}\n  var parts = patterns.dateTimePattern.exec(dateString)\n  var timeString\n\n  if (!parts) {\n    parts = patterns.datePattern.exec(dateString)\n    if (parts) {\n      dateStrings.date = parts[1]\n      timeString = parts[2]\n    } else {\n      dateStrings.date = null\n      timeString = dateString\n    }\n  } else {\n    dateStrings.date = parts[1]\n    timeString = parts[3]\n  }\n\n  if (timeString) {\n    var token = patterns.timeZone.exec(timeString)\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], '')\n      dateStrings.timeZone = token[1].trim()\n    } else {\n      dateStrings.time = timeString\n    }\n  }\n\n  return dateStrings\n}\n\nfunction parseYear(dateString, additionalDigits) {\n  var patternYYY = patterns.YYY[additionalDigits]\n  var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n  var token\n\n  // YYYY or ±YYYYY\n  token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n  if (token) {\n    var yearString = token[1]\n    return {\n      year: parseInt(yearString, 10),\n      restDateString: dateString.slice(yearString.length),\n    }\n  }\n\n  // YY or ±YYY\n  token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n  if (token) {\n    var centuryString = token[1]\n    return {\n      year: parseInt(centuryString, 10) * 100,\n      restDateString: dateString.slice(centuryString.length),\n    }\n  }\n\n  // Invalid ISO-formatted year\n  return {\n    year: null,\n  }\n}\n\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) {\n    return null\n  }\n\n  var token\n  var date\n  var month\n  var week\n\n  // YYYY\n  if (dateString.length === 0) {\n    date = new Date(0)\n    date.setUTCFullYear(year)\n    return date\n  }\n\n  // YYYY-MM\n  token = patterns.MM.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    month = parseInt(token[1], 10) - 1\n\n    if (!validateDate(year, month)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month)\n    return date\n  }\n\n  // YYYY-DDD or YYYYDDD\n  token = patterns.DDD.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    var dayOfYear = parseInt(token[1], 10)\n\n    if (!validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, 0, dayOfYear)\n    return date\n  }\n\n  // yyyy-MM-dd or YYYYMMDD\n  token = patterns.MMDD.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    month = parseInt(token[1], 10) - 1\n    var day = parseInt(token[2], 10)\n\n    if (!validateDate(year, month, day)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month, day)\n    return date\n  }\n\n  // YYYY-Www or YYYYWww\n  token = patterns.Www.exec(dateString)\n  if (token) {\n    week = parseInt(token[1], 10) - 1\n\n    if (!validateWeekDate(year, week)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week)\n  }\n\n  // YYYY-Www-D or YYYYWwwD\n  token = patterns.WwwD.exec(dateString)\n  if (token) {\n    week = parseInt(token[1], 10) - 1\n    var dayOfWeek = parseInt(token[2], 10) - 1\n\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week, dayOfWeek)\n  }\n\n  // Invalid ISO-formatted date\n  return null\n}\n\nfunction parseTime(timeString) {\n  var token\n  var hours\n  var minutes\n\n  // hh\n  token = patterns.HH.exec(timeString)\n  if (token) {\n    hours = parseFloat(token[1].replace(',', '.'))\n\n    if (!validateTime(hours)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR\n  }\n\n  // hh:mm or hhmm\n  token = patterns.HHMM.exec(timeString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n    minutes = parseFloat(token[2].replace(',', '.'))\n\n    if (!validateTime(hours, minutes)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n  }\n\n  // hh:mm:ss or hhmmss\n  token = patterns.HHMMSS.exec(timeString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n    minutes = parseInt(token[2], 10)\n    var seconds = parseFloat(token[3].replace(',', '.'))\n\n    if (!validateTime(hours, minutes, seconds)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000\n  }\n\n  // Invalid ISO-formatted time\n  return null\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  week = week || 0\n  day = day || 0\n  var date = new Date(0)\n  date.setUTCFullYear(isoWeekYear, 0, 4)\n  var fourthOfJanuaryDay = date.getUTCDay() || 7\n  var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n  date.setUTCDate(date.getUTCDate() + diff)\n  return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate(year, month, date) {\n  if (month < 0 || month > 11) {\n    return false\n  }\n\n  if (date != null) {\n    if (date < 1) {\n      return false\n    }\n\n    var isLeapYear = isLeapYearIndex(year)\n    if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n      return false\n    }\n    if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n      return false\n    }\n  }\n\n  return true\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n  if (dayOfYear < 1) {\n    return false\n  }\n\n  var isLeapYear = isLeapYearIndex(year)\n  if (isLeapYear && dayOfYear > 366) {\n    return false\n  }\n  if (!isLeapYear && dayOfYear > 365) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateWeekDate(year, week, day) {\n  if (week < 0 || week > 52) {\n    return false\n  }\n\n  if (day != null && (day < 0 || day > 6)) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateTime(hours, minutes, seconds) {\n  if (hours != null && (hours < 0 || hours >= 25)) {\n    return false\n  }\n\n  if (minutes != null && (minutes < 0 || minutes >= 60)) {\n    return false\n  }\n\n  if (seconds != null && (seconds < 0 || seconds >= 60)) {\n    return false\n  }\n\n  return true\n}\n","import cloneObject from 'date-fns/_lib/cloneObject/index.js'\nimport toDate from '../toDate/index.js'\nimport tzPattern from '../_lib/tzPattern/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport newDateUTC from '../_lib/newDateUTC/index.js'\n\n/**\n * @name zonedTimeToUtc\n * @category Time Zone Helpers\n * @summary Get the UTC date/time from a date representing local time in a given time zone\n *\n * @description\n * Returns a date instance with the UTC time of the provided date of which the values\n * represented the local time in the time zone specified. In other words, if the input\n * date represented local time in time time zone, the timestamp of the output date will\n * give the equivalent UTC of that local time regardless of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with values representing the local time\n * @param {String} timeZone - the time zone of this local time, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am in Los Angeles is 5pm UTC\n * const result = zonedTimeToUtc(new Date(2014, 5, 25, 10, 0, 0), 'America/Los_Angeles')\n * //=> 2014-06-25T17:00:00.000Z\n */\nexport default function zonedTimeToUtc(date, timeZone, options) {\n  if (typeof date === 'string' && !date.match(tzPattern)) {\n    var extendedOptions = cloneObject(options)\n    extendedOptions.timeZone = timeZone\n    return toDate(date, extendedOptions)\n  }\n\n  var d = toDate(date, options)\n\n  var utc = newDateUTC(\n    d.getFullYear(),\n    d.getMonth(),\n    d.getDate(),\n    d.getHours(),\n    d.getMinutes(),\n    d.getSeconds(),\n    d.getMilliseconds()\n  ).getTime()\n\n  var offsetMilliseconds = tzParseTimezone(timeZone, new Date(utc))\n\n  return new Date(utc + offsetMilliseconds)\n}\n","export const COLUMN_FILTERING_CHOICE_TYPE_APPLY_BUTTON_NAME =\n\t'columnFilteringChoiceTypeApplyButton';\nexport const COLUMN_FILTERING_CHOICE_TYPE_CANCEL_BUTTON_NAME =\n\t'columnFilteringChoiceTypeCancelButton';\n\nexport const MIN_CHOICES_FOR_CHOICE_FILTERING = 10;\n\nexport const NOW_INPUT_INPUT = 'NOW_INPUT#INPUT';\n\nexport const NOW_BUTTON_ICONIC_CLICKED = 'NOW_BUTTON_ICONIC#CLICKED';\n\nexport const COLUMN_FILTERING_CHOICE_FILTER_CLEAR_TERM =\n\t'columnFilteringChoiceFilterClearTerm';\n\nexport const COLUMN_FILTERING_CHOICE_FILTER_CLEAR_TERM_NAME =\n\t'columnFilteringChoiceFilterClearTermButton';\n","export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number;\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Number} unixTime - the given Unix timestamp\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * var result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\n\nexport default function fromUnixTime(dirtyUnixTime) {\n  requiredArgs(1, arguments);\n  var unixTime = toInteger(dirtyUnixTime);\n  return toDate(unixTime * 1000);\n}","/**\n * Returns the formatted time zone name of the provided `timeZone` or the current\n * system time zone if omitted, accounting for DST according to the UTC value of\n * the date.\n */\nexport default function tzIntlTimeZoneName(length, date, options) {\n  var dtf = getDTF(length, options.timeZone, options.locale)\n  return dtf.formatToParts ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date)\n}\n\nfunction partsTimeZone(dtf, date) {\n  var formatted = dtf.formatToParts(date)\n  return formatted[formatted.length - 1].value\n}\n\nfunction hackyTimeZone(dtf, date) {\n  var formatted = dtf.format(date).replace(/\\u200E/g, '')\n  var tzNameMatch = / [\\w-+ ]+$/.exec(formatted)\n  return tzNameMatch ? tzNameMatch[0].substr(1) : ''\n}\n\n// If a locale has been provided `en-US` is used as a fallback in case it is an\n// invalid locale, otherwise the locale is left undefined to use the system locale.\nfunction getDTF(length, timeZone, locale) {\n  if (locale && !locale.code) {\n    throw new Error(\n      \"date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`\"\n    )\n  }\n  return new Intl.DateTimeFormat(locale ? [locale.code, 'en-US'] : undefined, {\n    timeZone: timeZone,\n    timeZoneName: length,\n  })\n}\n","import tzIntlTimeZoneName from '../../_lib/tzIntlTimeZoneName/index.js'\nimport tzParseTimezone from '../../_lib/tzParseTimezone/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60 * 1000\n\nvar formatters = {\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, localize, options) {\n    var timezoneOffset = getTimeZoneOffset(options.timeZone, options._originalDate || date)\n\n    if (timezoneOffset === 0) {\n      return 'Z'\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n      // Hours, minutes and optional seconds without `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX': // Hours and minutes without `:` delimeter\n        return formatTimezone(timezoneOffset)\n\n      // Hours, minutes and optional seconds with `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimeter\n      default:\n        return formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, localize, options) {\n    var timezoneOffset = getTimeZoneOffset(options.timeZone, options._originalDate || date)\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n      // Hours, minutes and optional seconds without `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx': // Hours and minutes without `:` delimeter\n        return formatTimezone(timezoneOffset)\n\n      // Hours, minutes and optional seconds with `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimeter\n      default:\n        return formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, localize, options) {\n    var timezoneOffset = getTimeZoneOffset(options.timeZone, options._originalDate || date)\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, localize, options) {\n    var originalDate = options._originalDate || date\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return tzIntlTimeZoneName('short', originalDate, options)\n      // Long\n      case 'zzzz':\n      default:\n        return tzIntlTimeZoneName('long', originalDate, options)\n    }\n  },\n}\n\nfunction getTimeZoneOffset(timeZone, originalDate) {\n  var timeZoneOffset = timeZone\n    ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE\n    : originalDate.getTimezoneOffset()\n  if (Number.isNaN(timeZoneOffset)) {\n    throw new RangeError('Invalid time zone specified: ' + timeZone)\n  }\n  return timeZoneOffset\n}\n\nfunction addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : ''\n  var output = Math.abs(number).toString()\n  while (output.length < targetLength) {\n    output = '0' + output\n  }\n  return sign + output\n}\n\nfunction formatTimezone(offset, dirtyDelimeter) {\n  var delimeter = dirtyDelimeter || ''\n  var sign = offset > 0 ? '-' : '+'\n  var absOffset = Math.abs(offset)\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n  var minutes = addLeadingZeros(Math.floor(absOffset % 60), 2)\n  return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimeter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+'\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n  }\n  return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort(offset, dirtyDelimeter) {\n  var sign = offset > 0 ? '-' : '+'\n  var absOffset = Math.abs(offset)\n  var hours = Math.floor(absOffset / 60)\n  var minutes = absOffset % 60\n  if (minutes === 0) {\n    return sign + String(hours)\n  }\n  var delimeter = dirtyDelimeter || ''\n  return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nexport default formatters\n","import dateFnsFormat from 'date-fns/format/index.js'\nimport formatters from './formatters/index.js'\nimport toDate from '../toDate/index.js'\n\nvar tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 8     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 8     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Su            | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          | a..aaa  | AM, PM                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 1, 2, ..., 11, 0                  |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 0001, ..., 999               |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | PDT, EST, CEST                    | 6     |\n * |                                 | zzzz    | Pacific Daylight Time             | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 05/29/1453                        | 7     |\n * |                                 | PP      | May 29, 1453                      | 7     |\n * |                                 | PPP     | May 29th, 1453                    | 7     |\n * |                                 | PPPP    | Sunday, May 29th, 1453            | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 05/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | May 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | May 29th, 1453 at ...             | 7     |\n * |                                 | PPPPpppp| Sunday, May 29th, 1453 at ...     | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are created using the Intl browser API. The output is determined by the\n *    preferred standard of the current locale (en-US by default) which may not always give the expected result.\n *    For this reason it is recommended to supply a `locale` in the format options when formatting a time zone name.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole\n *   library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard\n *   #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). See [this\n *   post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n *   https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n *   [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n *   - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n *   - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n *   (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see:\n *   https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  var formatStr = String(dirtyFormatStr)\n  var options = dirtyOptions || {}\n\n  var matches = formatStr.match(tzFormattingTokensRegExp)\n  if (matches) {\n    var date = toDate(dirtyDate, options)\n    // Work through each match and replace the tz token in the format string with the quoted\n    // formatted time zone so the remaining tokens can be filled in by date-fns#format.\n    formatStr = matches.reduce(function (result, token) {\n      if (token[0] === \"'\") {\n        return result // This is a quoted portion, matched only to ensure we don't match inside it\n      }\n      var pos = result.indexOf(token)\n      var precededByQuotedSection = result[pos - 1] === \"'\"\n      var replaced = result.replace(\n        token,\n        \"'\" + formatters[token[0]](date, token, null, options) + \"'\"\n      )\n      // If the replacement results in two adjoining quoted strings, the back to back quotes\n      // are removed, so it doesn't look like an escaped quote.\n      return precededByQuotedSection\n        ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1)\n        : replaced\n    }, formatStr)\n  }\n\n  return dateFnsFormat(dirtyDate, formatStr, options)\n}\n","import tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name utcToZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with the relevant UTC time\n * @param {String} timeZone - the time zone to get local time for, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = utcToZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport default function utcToZonedTime(dirtyDate, timeZone, options) {\n  var date = toDate(dirtyDate, options)\n\n  var offsetMilliseconds = tzParseTimezone(timeZone, date, true)\n\n  var d = new Date(date.getTime() - offsetMilliseconds)\n\n  var resultDate = new Date(0)\n\n  resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())\n\n  resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds())\n\n  return resultDate\n}\n","import cloneObject from 'date-fns/_lib/cloneObject/index.js'\nimport format from '../format/index.js'\nimport utcToZonedTime from '../utcToZonedTime/index.js'\n\n/**\n * @name formatInTimeZone\n * @category Time Zone Helpers\n * @summary Gets the offset in milliseconds between the time zone and Universal Coordinated Time (UTC)\n *\n * @param {Date|String|Number} date - the date representing the local time / real UTC time\n * @param {String} timeZone - the time zone this date should be formatted for; can be an offset or IANA time zone\n * @param {String} formatStr - the string of tokens\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n *   https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n *   [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n *   - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n *   - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n *   (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {String} the formatted date string\n */\nexport default function formatInTimeZone(date, timeZone, formatStr, options) {\n  var extendedOptions = cloneObject(options)\n  extendedOptions.timeZone = timeZone\n  return format(utcToZonedTime(date, timeZone), formatStr, extendedOptions)\n}\n","import {t} from 'sn-translate';\n\n// Date types\n\nexport const DateTypes = {\n\tDATE: 'date',\n\tDATE_TIME: 'date-time',\n\tTIME: 'time',\n\tWEEK_MONTH_YEAR: 'week-month-year',\n\tWEEK_YEAR: 'week-year',\n\tMONTH: 'month',\n\tQUARTER: 'quarter',\n\tYEAR: 'year',\n};\n\n// Preset formats\n\nexport const DateFormatTypes = {\n\tDATE: 'yyyy/MM/dd',\n\tDATE_TIME: 'yyyy/MM/dd HH:mm:ss',\n\tWEEK_YEAR: 'w Y',\n\tWEEK_MONTH_YEAR: `'${t('Week')}' w yyyy`,\n\tMONTH: 'MMM yyyy',\n\tQUARTER: 'qqq yyyy',\n\tYEAR: 'yyyy',\n};\n\nexport const TimeFormatTypes = {\n\tSTANDARD: 'hh:mm:ss a',\n\tSTANDARD_24: 'HH:mm:ss',\n\tEXTENDED: 'hh:mm:ss.SSS a',\n\tEXTENDED_24: 'HH:mm:ss.SSS',\n};\n\nexport const DateTimeFormatTypes = {\n\tSTANDARD: 'yyyy/MM/dd hh:mm:ss a',\n\tEXTENDED: 'yyyy/MM/dd hh:mm:ss.SSS a',\n};\n\nexport const PresetKeywords = {\n\tNEXT: 'Next',\n\tLAST: 'Last',\n\tCURRENT: 'Current',\n\tTO_DATE: 'to date',\n};\n\nexport const PresetTypes = {\n\tSTART: 'start',\n\tEND: 'end',\n\tYEAR: 'year',\n\tYEARS: 'years',\n\tQUARTER: 'quarter',\n\tQUARTERS: 'quarters',\n\tMONTH: 'month',\n\tMONTHS: 'months',\n\tWEEK: 'week',\n\tWEEKS: 'weeks',\n\tDAY: 'day',\n\tDAYS: 'days',\n\tHOUR: 'hour',\n\tHOURS: 'hours',\n\tMINUTE: 'minute',\n\tMINUTES: 'minutes',\n\tSECOND: 'second',\n\tSECONDS: 'seconds',\n\tBUSINESS: 'business',\n};\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n *   if the first argument is not an instance of Date.\n *   Instead, argument is converted beforehand using `toDate`.\n *\n *   Examples:\n *\n *   | `isValid` argument        | Before v2.0.0 | v2.0.0 onward |\n *   |---------------------------|---------------|---------------|\n *   | `new Date()`              | `true`        | `true`        |\n *   | `new Date('2016-01-01')`  | `true`        | `true`        |\n *   | `new Date('')`            | `false`       | `false`       |\n *   | `new Date(1488370835081)` | `true`        | `true`        |\n *   | `new Date(NaN)`           | `false`       | `false`       |\n *   | `'2016-01-01'`            | `TypeError`   | `false`       |\n *   | `''`                      | `TypeError`   | `false`       |\n *   | `1488370835081`           | `TypeError`   | `true`        |\n *   | `NaN`                     | `TypeError`   | `false`       |\n *\n *   We introduce this change to make *date-fns* consistent with ECMAScript behavior\n *   that try to coerce arguments to the expected type\n *   (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  return !isNaN(date);\n}","export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n\n  return sign + output;\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with time zone, or both.\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\n\nexport default function formatISO(dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n  }\n\n  var originalDate = toDate(dirtyDate);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  var options = dirtyOptions || {};\n  var format = options.format == null ? 'extended' : String(options.format);\n  var representation = options.representation == null ? 'complete' : String(options.representation);\n\n  if (format !== 'extended' && format !== 'basic') {\n    throw new RangeError(\"format must be 'extended' or 'basic'\");\n  }\n\n  if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n    throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n  }\n\n  var result = '';\n  var tzOffset = '';\n  var dateDelimiter = format === 'extended' ? '-' : '';\n  var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\n  if (representation !== 'time') {\n    var day = addLeadingZeros(originalDate.getDate(), 2);\n    var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n    var year = addLeadingZeros(originalDate.getFullYear(), 4); // yyyyMMdd or yyyy-MM-dd.\n\n    result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n  } // Representation is either 'time' or 'complete'\n\n\n  if (representation !== 'date') {\n    // Add the timezone.\n    var offset = originalDate.getTimezoneOffset();\n\n    if (offset !== 0) {\n      var absoluteOffset = Math.abs(offset);\n      var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n      var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2); // If less than 0, the sign is +, because it is ahead of time.\n\n      var sign = offset < 0 ? '+' : '-';\n      tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n    } else {\n      tzOffset = 'Z';\n    }\n\n    var hour = addLeadingZeros(originalDate.getHours(), 2);\n    var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n    var second = addLeadingZeros(originalDate.getSeconds(), 2); // If there's also date, separate it with time with 'T'\n\n    var separator = result === '' ? '' : 'T'; // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n\n    var time = [hour, minute, second].join(timeDelimiter); // HHmmss or HH:mm:ss.\n\n    result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n  }\n\n  return result;\n}","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nexport default function formatDistance(token, count, options) {\n  options = options || {};\n  var result;\n\n  if (typeof formatDistanceLocale[token] === 'string') {\n    result = formatDistanceLocale[token];\n  } else if (count === 1) {\n    result = formatDistanceLocale[token].one;\n  } else {\n    result = formatDistanceLocale[token].other.replace('{{count}}', count);\n  }\n\n  if (options.addSuffix) {\n    if (options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n\n  return result;\n}","export default function buildFormatLongFn(args) {\n  return function (dirtyOptions) {\n    var options = dirtyOptions || {};\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n}","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var context = options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    return valuesArray[index];\n  };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n  // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n  // Generally, formatted dates should look like they are in the middle of a sentence,\n  // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`:\n  //\n  //   var options = dirtyOptions || {}\n  //   var unit = String(options.unit)\n  //\n  // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'\n\n  var rem100 = number % 100;\n\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n\n      case 2:\n        return number + 'nd';\n\n      case 3:\n        return number + 'rd';\n    }\n  }\n\n  return number + 'th';\n}\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return Number(quarter) - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","export default function buildMatchPatternFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var matchResult = string.match(args.matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n\n    if (!parseResult) {\n      return null;\n    }\n\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}","export default function buildMatchFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var value;\n\n    if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n      value = findIndex(parsePatterns, function (pattern) {\n        return pattern.test(matchedString);\n      });\n    } else {\n      value = findKey(parsePatterns, function (pattern) {\n        return pattern.test(matchedString);\n      });\n    }\n\n    value = args.valueCallback ? args.valueCallback(value) : value;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n}\n\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n}","import buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nimport buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}","export default function assign(target, dirtyObject) {\n  if (target == null) {\n    throw new TypeError('assign requires that input parameter not be null or undefined');\n  }\n\n  dirtyObject = dirtyObject || {};\n\n  for (var property in dirtyObject) {\n    if (dirtyObject.hasOwnProperty(property)) {\n      target[property] = dirtyObject[property];\n    }\n  }\n\n  return target;\n}","function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/);\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  }\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate, dirtyOptions);\n  var year = date.getUTCFullYear();\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = toInteger(dirtyDay);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n  requiredArgs(2, arguments);\n  var day = toInteger(dirtyDay);\n\n  if (day % 7 === 0) {\n    day = day - 7;\n  }\n\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var isoWeek = toInteger(dirtyISOWeek);\n  var diff = getUTCISOWeek(date) - isoWeek;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n  var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, dirtyOptions);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var week = toInteger(dirtyWeek);\n  var diff = getUTCWeek(date, options) - week;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}","import getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/,\n  // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n  // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/,\n  // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/,\n  // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/,\n  // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/,\n  // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  minute: /^[0-5]?\\d/,\n  // 0 to 59\n  second: /^[0-5]?\\d/,\n  // 0 to 59\n  singleDigit: /^\\d/,\n  // 0 to 9\n  twoDigits: /^\\d{1,2}/,\n  // 0 to 99\n  threeDigits: /^\\d{1,3}/,\n  // 0 to 999\n  fourDigits: /^\\d{1,4}/,\n  // 0 to 9999\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/,\n  // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/,\n  // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/,\n  // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n  var matchResult = string.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  }\n\n  var value = parseInt(matchResult[0], 10);\n  return {\n    value: valueCallback ? valueCallback(value) : value,\n    rest: string.slice(matchResult[0].length)\n  };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n  var matchResult = string.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  } // Input is 'Z'\n\n\n  if (matchResult[0] === 'Z') {\n    return {\n      value: 0,\n      rest: string.slice(1)\n    };\n  }\n\n  var sign = matchResult[1] === '+' ? 1 : -1;\n  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n  return {\n    value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n    rest: string.slice(matchResult[0].length)\n  };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n    default:\n      return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n  }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n    default:\n      return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n  }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n  switch (enumValue) {\n    case 'morning':\n      return 4;\n\n    case 'evening':\n      return 17;\n\n    case 'pm':\n    case 'noon':\n    case 'afternoon':\n      return 12;\n\n    case 'am':\n    case 'midnight':\n    case 'night':\n    default:\n      return 0;\n  }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  var isCommonEra = currentYear > 0; // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n\n  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n  var result;\n\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    var rangeEnd = absCurrentYear + 50;\n    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n\n  return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |\n * |  p  |                                |  P  |                                |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n  // Era\n  G: {\n    priority: 140,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // AD, BC\n        case 'G':\n        case 'GG':\n        case 'GGG':\n          return match.era(string, {\n            width: 'abbreviated'\n          }) || match.era(string, {\n            width: 'narrow'\n          });\n        // A, B\n\n        case 'GGGGG':\n          return match.era(string, {\n            width: 'narrow'\n          });\n        // Anno Domini, Before Christ\n\n        case 'GGGG':\n        default:\n          return match.era(string, {\n            width: 'wide'\n          }) || match.era(string, {\n            width: 'abbreviated'\n          }) || match.era(string, {\n            width: 'narrow'\n          });\n      }\n    },\n    set: function (date, flags, value, _options) {\n      flags.era = value;\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['R', 'u', 't', 'T']\n  },\n  // Year\n  y: {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    priority: 130,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'yy'\n        };\n      };\n\n      switch (token) {\n        case 'y':\n          return parseNDigits(4, string, valueCallback);\n\n        case 'yo':\n          return match.ordinalNumber(string, {\n            unit: 'year',\n            valueCallback: valueCallback\n          });\n\n        default:\n          return parseNDigits(token.length, string, valueCallback);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value.isTwoDigitYear || value.year > 0;\n    },\n    set: function (date, flags, value, _options) {\n      var currentYear = date.getUTCFullYear();\n\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n        date.setUTCHours(0, 0, 0, 0);\n        return date;\n      }\n\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n  },\n  // Local week-numbering year\n  Y: {\n    priority: 130,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'YY'\n        };\n      };\n\n      switch (token) {\n        case 'Y':\n          return parseNDigits(4, string, valueCallback);\n\n        case 'Yo':\n          return match.ordinalNumber(string, {\n            unit: 'year',\n            valueCallback: valueCallback\n          });\n\n        default:\n          return parseNDigits(token.length, string, valueCallback);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value.isTwoDigitYear || value.year > 0;\n    },\n    set: function (date, flags, value, options) {\n      var currentYear = getUTCWeekYear(date, options);\n\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n        date.setUTCHours(0, 0, 0, 0);\n        return startOfUTCWeek(date, options);\n      }\n\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n      date.setUTCHours(0, 0, 0, 0);\n      return startOfUTCWeek(date, options);\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n  },\n  // ISO week-numbering year\n  R: {\n    priority: 130,\n    parse: function (string, token, _match, _options) {\n      if (token === 'R') {\n        return parseNDigitsSigned(4, string);\n      }\n\n      return parseNDigitsSigned(token.length, string);\n    },\n    set: function (_date, _flags, value, _options) {\n      var firstWeekOfYear = new Date(0);\n      firstWeekOfYear.setUTCFullYear(value, 0, 4);\n      firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n      return startOfUTCISOWeek(firstWeekOfYear);\n    },\n    incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n  },\n  // Extended year\n  u: {\n    priority: 130,\n    parse: function (string, token, _match, _options) {\n      if (token === 'u') {\n        return parseNDigitsSigned(4, string);\n      }\n\n      return parseNDigitsSigned(token.length, string);\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n  },\n  // Quarter\n  Q: {\n    priority: 120,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'Q':\n        case 'QQ':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, string);\n        // 1st, 2nd, 3rd, 4th\n\n        case 'Qo':\n          return match.ordinalNumber(string, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n\n        case 'QQQ':\n          return match.quarter(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n        case 'QQQQQ':\n          return match.quarter(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1st quarter, 2nd quarter, ...\n\n        case 'QQQQ':\n        default:\n          return match.quarter(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.quarter(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 4;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Stand-alone quarter\n  q: {\n    priority: 120,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'q':\n        case 'qq':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, string);\n        // 1st, 2nd, 3rd, 4th\n\n        case 'qo':\n          return match.ordinalNumber(string, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n\n        case 'qqq':\n          return match.quarter(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n        case 'qqqqq':\n          return match.quarter(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1st quarter, 2nd quarter, ...\n\n        case 'qqqq':\n        default:\n          return match.quarter(string, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.quarter(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 4;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Month\n  M: {\n    priority: 110,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (value) {\n        return value - 1;\n      };\n\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'M':\n          return parseNumericPattern(numericPatterns.month, string, valueCallback);\n        // 01, 02, ..., 12\n\n        case 'MM':\n          return parseNDigits(2, string, valueCallback);\n        // 1st, 2nd, ..., 12th\n\n        case 'Mo':\n          return match.ordinalNumber(string, {\n            unit: 'month',\n            valueCallback: valueCallback\n          });\n        // Jan, Feb, ..., Dec\n\n        case 'MMM':\n          return match.month(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // J, F, ..., D\n\n        case 'MMMMM':\n          return match.month(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // January, February, ..., December\n\n        case 'MMMM':\n        default:\n          return match.month(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.month(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 11;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Stand-alone month\n  L: {\n    priority: 110,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (value) {\n        return value - 1;\n      };\n\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'L':\n          return parseNumericPattern(numericPatterns.month, string, valueCallback);\n        // 01, 02, ..., 12\n\n        case 'LL':\n          return parseNDigits(2, string, valueCallback);\n        // 1st, 2nd, ..., 12th\n\n        case 'Lo':\n          return match.ordinalNumber(string, {\n            unit: 'month',\n            valueCallback: valueCallback\n          });\n        // Jan, Feb, ..., Dec\n\n        case 'LLL':\n          return match.month(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // J, F, ..., D\n\n        case 'LLLLL':\n          return match.month(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // January, February, ..., December\n\n        case 'LLLL':\n        default:\n          return match.month(string, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.month(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 11;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Local week of year\n  w: {\n    priority: 100,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'w':\n          return parseNumericPattern(numericPatterns.week, string);\n\n        case 'wo':\n          return match.ordinalNumber(string, {\n            unit: 'week'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 53;\n    },\n    set: function (date, _flags, value, options) {\n      return startOfUTCWeek(setUTCWeek(date, value, options), options);\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n  },\n  // ISO week of year\n  I: {\n    priority: 100,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'I':\n          return parseNumericPattern(numericPatterns.week, string);\n\n        case 'Io':\n          return match.ordinalNumber(string, {\n            unit: 'week'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 53;\n    },\n    set: function (date, _flags, value, options) {\n      return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n    },\n    incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n  },\n  // Day of the month\n  d: {\n    priority: 90,\n    subPriority: 1,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'd':\n          return parseNumericPattern(numericPatterns.date, string);\n\n        case 'do':\n          return match.ordinalNumber(string, {\n            unit: 'date'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (date, value, _options) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n      var month = date.getUTCMonth();\n\n      if (isLeapYear) {\n        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n      } else {\n        return value >= 1 && value <= DAYS_IN_MONTH[month];\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCDate(value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Day of year\n  D: {\n    priority: 90,\n    subPriority: 1,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'D':\n        case 'DD':\n          return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n        case 'Do':\n          return match.ordinalNumber(string, {\n            unit: 'date'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (date, value, _options) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n\n      if (isLeapYear) {\n        return value >= 1 && value <= 366;\n      } else {\n        return value >= 1 && value <= 365;\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth(0, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n  },\n  // Day of week\n  E: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // Tue\n        case 'E':\n        case 'EE':\n        case 'EEE':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n\n        case 'EEEEE':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n\n        case 'EEEEEE':\n          return match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n\n        case 'EEEE':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 6;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Local day of week\n  e: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n\n      switch (token) {\n        // 3\n        case 'e':\n        case 'ee':\n          // 03\n          return parseNDigits(token.length, string, valueCallback);\n        // 3rd\n\n        case 'eo':\n          return match.ordinalNumber(string, {\n            unit: 'day',\n            valueCallback: valueCallback\n          });\n        // Tue\n\n        case 'eee':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n\n        case 'eeeee':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n\n        case 'eeeeee':\n          return match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n\n        case 'eeee':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 6;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n  },\n  // Stand-alone local day of week\n  c: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n\n      switch (token) {\n        // 3\n        case 'c':\n        case 'cc':\n          // 03\n          return parseNDigits(token.length, string, valueCallback);\n        // 3rd\n\n        case 'co':\n          return match.ordinalNumber(string, {\n            unit: 'day',\n            valueCallback: valueCallback\n          });\n        // Tue\n\n        case 'ccc':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // T\n\n        case 'ccccc':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tu\n\n        case 'cccccc':\n          return match.day(string, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tuesday\n\n        case 'cccc':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 6;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n  },\n  // ISO day of week\n  i: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (value) {\n        if (value === 0) {\n          return 7;\n        }\n\n        return value;\n      };\n\n      switch (token) {\n        // 2\n        case 'i':\n        case 'ii':\n          // 02\n          return parseNDigits(token.length, string);\n        // 2nd\n\n        case 'io':\n          return match.ordinalNumber(string, {\n            unit: 'day'\n          });\n        // Tue\n\n        case 'iii':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n        // T\n\n        case 'iiiii':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n        // Tu\n\n        case 'iiiiii':\n          return match.day(string, {\n            width: 'short',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n        // Tuesday\n\n        case 'iiii':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 7;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCISODay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n  },\n  // AM or PM\n  a: {\n    priority: 80,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'a':\n        case 'aa':\n        case 'aaa':\n          return match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'aaaaa':\n          return match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'aaaa':\n        default:\n          return match.dayPeriod(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n  },\n  // AM, PM, midnight\n  b: {\n    priority: 80,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'b':\n        case 'bb':\n        case 'bbb':\n          return match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'bbbbb':\n          return match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'bbbb':\n        default:\n          return match.dayPeriod(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: {\n    priority: 80,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'B':\n        case 'BB':\n        case 'BBB':\n          return match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'BBBBB':\n          return match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'BBBB':\n        default:\n          return match.dayPeriod(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 't', 'T']\n  },\n  // Hour [1-12]\n  h: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'h':\n          return parseNumericPattern(numericPatterns.hour12h, string);\n\n        case 'ho':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 12;\n    },\n    set: function (date, _flags, value, _options) {\n      var isPM = date.getUTCHours() >= 12;\n\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else if (!isPM && value === 12) {\n        date.setUTCHours(0, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n\n      return date;\n    },\n    incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n  },\n  // Hour [0-23]\n  H: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'H':\n          return parseNumericPattern(numericPatterns.hour23h, string);\n\n        case 'Ho':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 23;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(value, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n  },\n  // Hour [0-11]\n  K: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'K':\n          return parseNumericPattern(numericPatterns.hour11h, string);\n\n        case 'Ko':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 11;\n    },\n    set: function (date, _flags, value, _options) {\n      var isPM = date.getUTCHours() >= 12;\n\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n  },\n  // Hour [1-24]\n  k: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'k':\n          return parseNumericPattern(numericPatterns.hour24h, string);\n\n        case 'ko':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 24;\n    },\n    set: function (date, _flags, value, _options) {\n      var hours = value <= 24 ? value % 24 : value;\n      date.setUTCHours(hours, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n  },\n  // Minute\n  m: {\n    priority: 60,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'm':\n          return parseNumericPattern(numericPatterns.minute, string);\n\n        case 'mo':\n          return match.ordinalNumber(string, {\n            unit: 'minute'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 59;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMinutes(value, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['t', 'T']\n  },\n  // Second\n  s: {\n    priority: 50,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 's':\n          return parseNumericPattern(numericPatterns.second, string);\n\n        case 'so':\n          return match.ordinalNumber(string, {\n            unit: 'second'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 59;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCSeconds(value, 0);\n      return date;\n    },\n    incompatibleTokens: ['t', 'T']\n  },\n  // Fraction of second\n  S: {\n    priority: 30,\n    parse: function (string, token, _match, _options) {\n      var valueCallback = function (value) {\n        return Math.floor(value * Math.pow(10, -token.length + 3));\n      };\n\n      return parseNDigits(token.length, string, valueCallback);\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMilliseconds(value);\n      return date;\n    },\n    incompatibleTokens: ['t', 'T']\n  },\n  // Timezone (ISO-8601. +00:00 is `'Z'`)\n  X: {\n    priority: 10,\n    parse: function (string, token, _match, _options) {\n      switch (token) {\n        case 'X':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n        case 'XX':\n          return parseTimezonePattern(timezonePatterns.basic, string);\n\n        case 'XXXX':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n        case 'XXXXX':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n        case 'XXX':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, string);\n      }\n    },\n    set: function (date, flags, value, _options) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n\n      return new Date(date.getTime() - value);\n    },\n    incompatibleTokens: ['t', 'T', 'x']\n  },\n  // Timezone (ISO-8601)\n  x: {\n    priority: 10,\n    parse: function (string, token, _match, _options) {\n      switch (token) {\n        case 'x':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n        case 'xx':\n          return parseTimezonePattern(timezonePatterns.basic, string);\n\n        case 'xxxx':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n        case 'xxxxx':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n        case 'xxx':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, string);\n      }\n    },\n    set: function (date, flags, value, _options) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n\n      return new Date(date.getTime() - value);\n    },\n    incompatibleTokens: ['t', 'T', 'X']\n  },\n  // Seconds timestamp\n  t: {\n    priority: 40,\n    parse: function (string, _token, _match, _options) {\n      return parseAnyDigitsSigned(string);\n    },\n    set: function (_date, _flags, value, _options) {\n      return [new Date(value * 1000), {\n        timestampIsSet: true\n      }];\n    },\n    incompatibleTokens: '*'\n  },\n  // Milliseconds timestamp\n  T: {\n    priority: 20,\n    parse: function (string, _token, _match, _options) {\n      return parseAnyDigitsSigned(string);\n    },\n    set: function (_date, _flags, value, _options) {\n      return [new Date(value), {\n        timestampIsSet: true\n      }];\n    },\n    incompatibleTokens: '*'\n  }\n};\nexport default parsers;","import defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport parsers from \"./_lib/parsers/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Sun           | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 0001, ..., 999               |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  10 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n *    and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n *   Now `parse` is a new function which parses a string using a provided format.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   parse('2016-01-01')\n *\n *   // v2.0.0 onward (toDate no longer accepts a string)\n *   toDate(1392098430000) // Unix to timestamp\n *   toDate(new Date(2014, 1, 11, 11, 30, 30)) // Cloning the date\n *   parse('2016-01-01', 'yyyy-MM-dd', new Date())\n *   ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n *   locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n  requiredArgs(3, arguments);\n  var dateString = String(dirtyDateString);\n  var formatString = String(dirtyFormatString);\n  var options = dirtyOptions || {};\n  var locale = options.locale || defaultLocale;\n\n  if (!locale.match) {\n    throw new RangeError('locale must contain match property');\n  }\n\n  var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (formatString === '') {\n    if (dateString === '') {\n      return toDate(dirtyReferenceDate);\n    } else {\n      return new Date(NaN);\n    }\n  }\n\n  var subFnOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale // If timezone isn't specified, it will be set to the system timezone\n\n  };\n  var setters = [{\n    priority: TIMEZONE_UNIT_PRIORITY,\n    subPriority: -1,\n    set: dateToSystemTimezone,\n    index: 0\n  }];\n  var i;\n  var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong, subFnOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp);\n  var usedTokens = [];\n\n  for (i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n      throwProtectedError(token, formatString, dirtyDateString);\n    }\n\n    if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n      throwProtectedError(token, formatString, dirtyDateString);\n    }\n\n    var firstCharacter = token[0];\n    var parser = parsers[firstCharacter];\n\n    if (parser) {\n      var incompatibleTokens = parser.incompatibleTokens;\n\n      if (Array.isArray(incompatibleTokens)) {\n        var incompatibleToken = void 0;\n\n        for (var _i = 0; _i < usedTokens.length; _i++) {\n          var usedToken = usedTokens[_i].token;\n\n          if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n            incompatibleToken = usedTokens[_i];\n            break;\n          }\n        }\n\n        if (incompatibleToken) {\n          throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n        }\n      } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n        throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n      }\n\n      usedTokens.push({\n        token: firstCharacter,\n        fullToken: token\n      });\n      var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n      if (!parseResult) {\n        return new Date(NaN);\n      }\n\n      setters.push({\n        priority: parser.priority,\n        subPriority: parser.subPriority || 0,\n        set: parser.set,\n        validate: parser.validate,\n        value: parseResult.value,\n        index: setters.length\n      });\n      dateString = parseResult.rest;\n    } else {\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n      } // Replace two single quote characters with one single quote character\n\n\n      if (token === \"''\") {\n        token = \"'\";\n      } else if (firstCharacter === \"'\") {\n        token = cleanEscapedString(token);\n      } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n      if (dateString.indexOf(token) === 0) {\n        dateString = dateString.slice(token.length);\n      } else {\n        return new Date(NaN);\n      }\n    }\n  } // Check if the remaining input contains something other than whitespace\n\n\n  if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n    return new Date(NaN);\n  }\n\n  var uniquePrioritySetters = setters.map(function (setter) {\n    return setter.priority;\n  }).sort(function (a, b) {\n    return b - a;\n  }).filter(function (priority, index, array) {\n    return array.indexOf(priority) === index;\n  }).map(function (priority) {\n    return setters.filter(function (setter) {\n      return setter.priority === priority;\n    }).sort(function (a, b) {\n      return b.subPriority - a.subPriority;\n    });\n  }).map(function (setterArray) {\n    return setterArray[0];\n  });\n  var date = toDate(dirtyReferenceDate);\n\n  if (isNaN(date)) {\n    return new Date(NaN);\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n  var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n  var flags = {};\n\n  for (i = 0; i < uniquePrioritySetters.length; i++) {\n    var setter = uniquePrioritySetters[i];\n\n    if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n      return new Date(NaN);\n    }\n\n    var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n    if (result[0]) {\n      utcDate = result[0];\n      assign(flags, result[1]); // Result is date\n    } else {\n      utcDate = result;\n    }\n  }\n\n  return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n  if (flags.timestampIsSet) {\n    return date;\n  }\n\n  var convertedDate = new Date(0);\n  convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n  convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n  return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import parse from \"../parse/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isMatch\n * @category Common Helpers\n * @summary validates the date string against given formats\n *\n * @description\n * Return the true if given date is string correct against the given format else\n * will return false.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * isMatch('23 AM', 'HH a')\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Su            | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 0001, ..., 999               |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  10 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `isMatch` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `isMatch` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `isMatch` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n *    `isMatch('50', 'yy') //=> true`\n *\n *    `isMatch('75', 'yy') //=> true`\n *\n *    while `uu` will use the year as is:\n *\n *    `isMatch('50', 'uu') //=> true`\n *\n *    `isMatch('75', 'uu') //=> true`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n *    and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be checked in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are matched (e.g. when matching string 'January 1st' without a year),\n * the values will be taken from today's using `new Date()` date which works as a context of parsing.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n *\n *\n * @param {String} dateString - the date string to verify\n * @param {String} formatString - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {Boolean}\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Match 11 February 2014 from middle-endian format:\n * var result = isMatch('02/11/2014', 'MM/dd/yyyy')\n * //=> true\n *\n * @example\n * // Match 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = isMatch('28-a de februaro', \"do 'de' MMMM\", {\n *   locale: eo\n * })\n * //=> true\n */\n\nexport default function isMatch(dateString, formatString, dirtyOptions) {\n  requiredArgs(2, arguments);\n  return isValid(parse(dateString, formatString, new Date(), dirtyOptions));\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function (date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function (date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function (date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function (date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n\n      case 'aaa':\n        return dayPeriodEnumValue;\n\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function (date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function (date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function (date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import lightFormatters from \"../lightFormatters/index.js\";\nimport getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n  /*\n   * |     | Unit                           |     | Unit                           |\n   * |-----|--------------------------------|-----|--------------------------------|\n   * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n   * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n   * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n   * |  d  | Day of month                   |  D  | Day of year                    |\n   * |  e  | Local day of week              |  E  | Day of week                    |\n   * |  f  |                                |  F* | Day of week in month           |\n   * |  g* | Modified Julian day            |  G  | Era                            |\n   * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n   * |  i! | ISO day of week                |  I! | ISO week of year               |\n   * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n   * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n   * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n   * |  m  | Minute                         |  M  | Month                          |\n   * |  n  |                                |  N  |                                |\n   * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n   * |  p! | Long localized time            |  P! | Long localized date            |\n   * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n   * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n   * |  s  | Second                         |  S  | Fraction of second             |\n   * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n   * |  u  | Extended year                  |  U* | Cyclic year                    |\n   * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n   * |  w  | Local week of year             |  W* | Week of month                  |\n   * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n   * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n   * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n   *\n   * Letters marked by * are not implemented but reserved by Unicode standard.\n   *\n   * Letters marked by ! are non-standard, but implemented by date-fns:\n   * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n   * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n   *   i.e. 7 for Sunday, 1 for Monday, etc.\n   * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n   * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n   *   `R` is supposed to be used in conjunction with `I` and `i`\n   *   for universal ISO week-numbering date, whereas\n   *   `Y` is supposed to be used in conjunction with `w` and `e`\n   *   for week-numbering date specific to the locale.\n   * - `P` is long localized date format\n   * - `p` is long localized time format\n   */\n\n};\nvar formatters = {\n  // Era\n  G: function (date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    } // Ordinal number\n\n\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    } // Padding\n\n\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function (date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function (date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function (date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function (date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function (date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function (date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n\n  return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n *   See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var options = dirtyOptions || {};\n  var locale = options.locale || defaultLocale;\n  var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  var originalDate = toDate(dirtyDate);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong, formatterOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n\n    var formatter = formatters[firstCharacter];\n\n    if (formatter) {\n      if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n\n    return substring;\n  }).join('');\n  return result;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","/**\r\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\r\n * `date` as it will be rendered in the `timeZone`.\r\n */\r\nexport default function tzTokenizeDate(date, timeZone) {\r\n  var dtf = getDateTimeFormat(timeZone)\r\n  return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date)\r\n}\r\n\r\nvar typeToPos = {\r\n  year: 0,\r\n  month: 1,\r\n  day: 2,\r\n  hour: 3,\r\n  minute: 4,\r\n  second: 5,\r\n}\r\n\r\nfunction partsOffset(dtf, date) {\r\n  try {\r\n    var formatted = dtf.formatToParts(date)\r\n    var filled = []\r\n    for (var i = 0; i < formatted.length; i++) {\r\n      var pos = typeToPos[formatted[i].type]\r\n\r\n      if (pos >= 0) {\r\n        filled[pos] = parseInt(formatted[i].value, 10)\r\n      }\r\n    }\r\n    return filled\r\n  } catch (error) {\r\n    if (error instanceof RangeError) {\r\n      return [NaN]\r\n    }\r\n    throw error\r\n  }\r\n}\r\n\r\nfunction hackyOffset(dtf, date) {\r\n  var formatted = dtf.format(date)\r\n  var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted)\r\n  // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\r\n  // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\r\n  return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]]\r\n}\r\n\r\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\r\n// to get deterministic local date/time output according to the `en-US` locale which\r\n// can be used to extract local time parts as necessary.\r\nvar dtfCache = {}\r\nfunction getDateTimeFormat(timeZone) {\r\n  if (!dtfCache[timeZone]) {\r\n    // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\r\n    var testDateFormatted = new Intl.DateTimeFormat('en-US', {\r\n      hourCycle: 'h23',\r\n      timeZone: 'America/New_York',\r\n      year: 'numeric',\r\n      month: '2-digit',\r\n      day: '2-digit',\r\n      hour: '2-digit',\r\n      minute: '2-digit',\r\n      second: '2-digit',\r\n    }).format(new Date('2014-06-25T04:00:00.123Z'))\r\n    var hourCycleSupported =\r\n      testDateFormatted === '06/25/2014, 00:00:00' ||\r\n      testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'\r\n\r\n    dtfCache[timeZone] = hourCycleSupported\r\n      ? new Intl.DateTimeFormat('en-US', {\r\n          hourCycle: 'h23',\r\n          timeZone: timeZone,\r\n          year: 'numeric',\r\n          month: 'numeric',\r\n          day: '2-digit',\r\n          hour: '2-digit',\r\n          minute: '2-digit',\r\n          second: '2-digit',\r\n        })\r\n      : new Intl.DateTimeFormat('en-US', {\r\n          hour12: false,\r\n          timeZone: timeZone,\r\n          year: 'numeric',\r\n          month: 'numeric',\r\n          day: '2-digit',\r\n          hour: '2-digit',\r\n          minute: '2-digit',\r\n          second: '2-digit',\r\n        })\r\n  }\r\n  return dtfCache[timeZone]\r\n}\r\n","/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport default function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n  var utcDate = new Date(0)\n  utcDate.setUTCFullYear(fullYear, month, day)\n  utcDate.setUTCHours(hour, minute, second, millisecond)\n  return utcDate\n}\n","import tzTokenizeDate from '../tzTokenizeDate/index.js'\r\nimport newDateUTC from '../newDateUTC/index.js'\r\n\r\nvar MILLISECONDS_IN_HOUR = 3600000\r\nvar MILLISECONDS_IN_MINUTE = 60000\r\n\r\nvar patterns = {\r\n  timezone: /([Z+-].*)$/,\r\n  timezoneZ: /^(Z)$/,\r\n  timezoneHH: /^([+-]\\d{2})$/,\r\n  timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/,\r\n}\r\n\r\n// Parse various time zone offset formats to an offset in milliseconds\r\nexport default function tzParseTimezone(timezoneString, date, isUtcDate) {\r\n  var token\r\n  var absoluteOffset\r\n\r\n  // Empty string\r\n  if (!timezoneString) {\r\n    return 0\r\n  }\r\n\r\n  // Z\r\n  token = patterns.timezoneZ.exec(timezoneString)\r\n  if (token) {\r\n    return 0\r\n  }\r\n\r\n  var hours\r\n\r\n  // ±hh\r\n  token = patterns.timezoneHH.exec(timezoneString)\r\n  if (token) {\r\n    hours = parseInt(token[1], 10)\r\n\r\n    if (!validateTimezone(hours)) {\r\n      return NaN\r\n    }\r\n\r\n    return -(hours * MILLISECONDS_IN_HOUR)\r\n  }\r\n\r\n  // ±hh:mm or ±hhmm\r\n  token = patterns.timezoneHHMM.exec(timezoneString)\r\n  if (token) {\r\n    hours = parseInt(token[2], 10)\r\n    var minutes = parseInt(token[3], 10)\r\n\r\n    if (!validateTimezone(hours, minutes)) {\r\n      return NaN\r\n    }\r\n\r\n    absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\r\n    return token[1] === '+' ? -absoluteOffset : absoluteOffset\r\n  }\r\n\r\n  // IANA time zone\r\n  if (isValidTimezoneIANAString(timezoneString)) {\r\n    date = new Date(date || Date.now())\r\n    var utcDate = isUtcDate ? date : toUtcDate(date)\r\n\r\n    var offset = calcOffset(utcDate, timezoneString)\r\n\r\n    var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString)\r\n\r\n    return -fixedOffset\r\n  }\r\n\r\n  return NaN\r\n}\r\n\r\nfunction toUtcDate(date) {\r\n  return newDateUTC(\r\n    date.getFullYear(),\r\n    date.getMonth(),\r\n    date.getDate(),\r\n    date.getHours(),\r\n    date.getMinutes(),\r\n    date.getSeconds(),\r\n    date.getMilliseconds()\r\n  )\r\n}\r\n\r\nfunction calcOffset(date, timezoneString) {\r\n  var tokens = tzTokenizeDate(date, timezoneString)\r\n\r\n  // ms dropped because it's not provided by tzTokenizeDate\r\n  var asUTC = newDateUTC(\r\n    tokens[0],\r\n    tokens[1] - 1,\r\n    tokens[2],\r\n    tokens[3] % 24,\r\n    tokens[4],\r\n    tokens[5],\r\n    0\r\n  ).getTime()\r\n\r\n  var asTS = date.getTime()\r\n  var over = asTS % 1000\r\n  asTS -= over >= 0 ? over : 1000 + over\r\n  return asUTC - asTS\r\n}\r\n\r\nfunction fixOffset(date, offset, timezoneString) {\r\n  var localTS = date.getTime()\r\n\r\n  // Our UTC time is just a guess because our offset is just a guess\r\n  var utcGuess = localTS - offset\r\n\r\n  // Test whether the zone matches the offset for this ts\r\n  var o2 = calcOffset(new Date(utcGuess), timezoneString)\r\n\r\n  // If so, offset didn't change, and we're done\r\n  if (offset === o2) {\r\n    return offset\r\n  }\r\n\r\n  // If not, change the ts by the difference in the offset\r\n  utcGuess -= o2 - offset\r\n\r\n  // If that gives us the local time we want, we're done\r\n  var o3 = calcOffset(new Date(utcGuess), timezoneString)\r\n  if (o2 === o3) {\r\n    return o2\r\n  }\r\n\r\n  // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\r\n  return Math.max(o2, o3)\r\n}\r\n\r\nfunction validateTimezone(hours, minutes) {\r\n  return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59))\r\n}\r\n\r\nvar validIANATimezoneCache = {}\r\nfunction isValidTimezoneIANAString(timeZoneString) {\r\n  if (validIANATimezoneCache[timeZoneString]) return true\r\n  try {\r\n    new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString })\r\n    validIANATimezoneCache[timeZoneString] = true\r\n    return true\r\n  } catch (error) {\r\n    return false\r\n  }\r\n}\r\n","/** Regex to identify the presence of a time zone specifier in a date string */\nvar tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/\n\nexport default tzPattern\n","import toInteger from 'date-fns/_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport tzPattern from '../_lib/tzPattern/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n  dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n  datePattern: /^([0-9W+-]+)(.*)/,\n  plainTime: /:/,\n\n  // year tokens\n  YY: /^(\\d{2})$/,\n  YYY: [\n    /^([+-]\\d{2})$/, // 0 additional digits\n    /^([+-]\\d{3})$/, // 1 additional digit\n    /^([+-]\\d{4})$/, // 2 additional digits\n  ],\n  YYYY: /^(\\d{4})/,\n  YYYYY: [\n    /^([+-]\\d{4})/, // 0 additional digits\n    /^([+-]\\d{5})/, // 1 additional digit\n    /^([+-]\\d{6})/, // 2 additional digits\n  ],\n\n  // date tokens\n  MM: /^-(\\d{2})$/,\n  DDD: /^-?(\\d{3})$/,\n  MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n  Www: /^-?W(\\d{2})$/,\n  WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n  HH: /^(\\d{2}([.,]\\d*)?)$/,\n  HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n  HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n  // time zone tokens (to identify the presence of a tz)\n  timeZone: tzPattern,\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate(argument, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  if (argument === null) {\n    return new Date(NaN)\n  }\n\n  var options = dirtyOptions || {}\n\n  var additionalDigits =\n    options.additionalDigits == null\n      ? DEFAULT_ADDITIONAL_DIGITS\n      : toInteger(options.additionalDigits)\n  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2')\n  }\n\n  // Clone the date\n  if (\n    argument instanceof Date ||\n    (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n  ) {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime())\n  } else if (\n    typeof argument === 'number' ||\n    Object.prototype.toString.call(argument) === '[object Number]'\n  ) {\n    return new Date(argument)\n  } else if (\n    !(\n      typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]'\n    )\n  ) {\n    return new Date(NaN)\n  }\n\n  var dateStrings = splitDateString(argument)\n\n  var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n  var year = parseYearResult.year\n  var restDateString = parseYearResult.restDateString\n\n  var date = parseDate(restDateString, year)\n\n  if (isNaN(date)) {\n    return new Date(NaN)\n  }\n\n  if (date) {\n    var timestamp = date.getTime()\n    var time = 0\n    var offset\n\n    if (dateStrings.time) {\n      time = parseTime(dateStrings.time)\n\n      if (isNaN(time)) {\n        return new Date(NaN)\n      }\n    }\n\n    if (dateStrings.timeZone || options.timeZone) {\n      offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time))\n      if (isNaN(offset)) {\n        return new Date(NaN)\n      }\n    } else {\n      // get offset accurate to hour in time zones that change offset\n      offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n      offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset))\n    }\n\n    return new Date(timestamp + time + offset)\n  } else {\n    return new Date(NaN)\n  }\n}\n\nfunction splitDateString(dateString) {\n  var dateStrings = {}\n  var parts = patterns.dateTimePattern.exec(dateString)\n  var timeString\n\n  if (!parts) {\n    parts = patterns.datePattern.exec(dateString)\n    if (parts) {\n      dateStrings.date = parts[1]\n      timeString = parts[2]\n    } else {\n      dateStrings.date = null\n      timeString = dateString\n    }\n  } else {\n    dateStrings.date = parts[1]\n    timeString = parts[3]\n  }\n\n  if (timeString) {\n    var token = patterns.timeZone.exec(timeString)\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], '')\n      dateStrings.timeZone = token[1].trim()\n    } else {\n      dateStrings.time = timeString\n    }\n  }\n\n  return dateStrings\n}\n\nfunction parseYear(dateString, additionalDigits) {\n  var patternYYY = patterns.YYY[additionalDigits]\n  var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n  var token\n\n  // YYYY or ±YYYYY\n  token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n  if (token) {\n    var yearString = token[1]\n    return {\n      year: parseInt(yearString, 10),\n      restDateString: dateString.slice(yearString.length),\n    }\n  }\n\n  // YY or ±YYY\n  token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n  if (token) {\n    var centuryString = token[1]\n    return {\n      year: parseInt(centuryString, 10) * 100,\n      restDateString: dateString.slice(centuryString.length),\n    }\n  }\n\n  // Invalid ISO-formatted year\n  return {\n    year: null,\n  }\n}\n\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) {\n    return null\n  }\n\n  var token\n  var date\n  var month\n  var week\n\n  // YYYY\n  if (dateString.length === 0) {\n    date = new Date(0)\n    date.setUTCFullYear(year)\n    return date\n  }\n\n  // YYYY-MM\n  token = patterns.MM.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    month = parseInt(token[1], 10) - 1\n\n    if (!validateDate(year, month)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month)\n    return date\n  }\n\n  // YYYY-DDD or YYYYDDD\n  token = patterns.DDD.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    var dayOfYear = parseInt(token[1], 10)\n\n    if (!validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, 0, dayOfYear)\n    return date\n  }\n\n  // yyyy-MM-dd or YYYYMMDD\n  token = patterns.MMDD.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    month = parseInt(token[1], 10) - 1\n    var day = parseInt(token[2], 10)\n\n    if (!validateDate(year, month, day)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month, day)\n    return date\n  }\n\n  // YYYY-Www or YYYYWww\n  token = patterns.Www.exec(dateString)\n  if (token) {\n    week = parseInt(token[1], 10) - 1\n\n    if (!validateWeekDate(year, week)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week)\n  }\n\n  // YYYY-Www-D or YYYYWwwD\n  token = patterns.WwwD.exec(dateString)\n  if (token) {\n    week = parseInt(token[1], 10) - 1\n    var dayOfWeek = parseInt(token[2], 10) - 1\n\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week, dayOfWeek)\n  }\n\n  // Invalid ISO-formatted date\n  return null\n}\n\nfunction parseTime(timeString) {\n  var token\n  var hours\n  var minutes\n\n  // hh\n  token = patterns.HH.exec(timeString)\n  if (token) {\n    hours = parseFloat(token[1].replace(',', '.'))\n\n    if (!validateTime(hours)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR\n  }\n\n  // hh:mm or hhmm\n  token = patterns.HHMM.exec(timeString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n    minutes = parseFloat(token[2].replace(',', '.'))\n\n    if (!validateTime(hours, minutes)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n  }\n\n  // hh:mm:ss or hhmmss\n  token = patterns.HHMMSS.exec(timeString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n    minutes = parseInt(token[2], 10)\n    var seconds = parseFloat(token[3].replace(',', '.'))\n\n    if (!validateTime(hours, minutes, seconds)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000\n  }\n\n  // Invalid ISO-formatted time\n  return null\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  week = week || 0\n  day = day || 0\n  var date = new Date(0)\n  date.setUTCFullYear(isoWeekYear, 0, 4)\n  var fourthOfJanuaryDay = date.getUTCDay() || 7\n  var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n  date.setUTCDate(date.getUTCDate() + diff)\n  return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate(year, month, date) {\n  if (month < 0 || month > 11) {\n    return false\n  }\n\n  if (date != null) {\n    if (date < 1) {\n      return false\n    }\n\n    var isLeapYear = isLeapYearIndex(year)\n    if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n      return false\n    }\n    if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n      return false\n    }\n  }\n\n  return true\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n  if (dayOfYear < 1) {\n    return false\n  }\n\n  var isLeapYear = isLeapYearIndex(year)\n  if (isLeapYear && dayOfYear > 366) {\n    return false\n  }\n  if (!isLeapYear && dayOfYear > 365) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateWeekDate(year, week, day) {\n  if (week < 0 || week > 52) {\n    return false\n  }\n\n  if (day != null && (day < 0 || day > 6)) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateTime(hours, minutes, seconds) {\n  if (hours != null && (hours < 0 || hours >= 25)) {\n    return false\n  }\n\n  if (minutes != null && (minutes < 0 || minutes >= 60)) {\n    return false\n  }\n\n  if (seconds != null && (seconds < 0 || seconds >= 60)) {\n    return false\n  }\n\n  return true\n}\n","import cloneObject from 'date-fns/_lib/cloneObject/index.js'\nimport toDate from '../toDate/index.js'\nimport tzPattern from '../_lib/tzPattern/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport newDateUTC from '../_lib/newDateUTC/index.js'\n\n/**\n * @name zonedTimeToUtc\n * @category Time Zone Helpers\n * @summary Get the UTC date/time from a date representing local time in a given time zone\n *\n * @description\n * Returns a date instance with the UTC time of the provided date of which the values\n * represented the local time in the time zone specified. In other words, if the input\n * date represented local time in time time zone, the timestamp of the output date will\n * give the equivalent UTC of that local time regardless of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with values representing the local time\n * @param {String} timeZone - the time zone of this local time, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am in Los Angeles is 5pm UTC\n * const result = zonedTimeToUtc(new Date(2014, 5, 25, 10, 0, 0), 'America/Los_Angeles')\n * //=> 2014-06-25T17:00:00.000Z\n */\nexport default function zonedTimeToUtc(date, timeZone, options) {\n  if (typeof date === 'string' && !date.match(tzPattern)) {\n    var extendedOptions = cloneObject(options)\n    extendedOptions.timeZone = timeZone\n    return toDate(date, extendedOptions)\n  }\n\n  var d = toDate(date, options)\n\n  var utc = newDateUTC(\n    d.getFullYear(),\n    d.getMonth(),\n    d.getDate(),\n    d.getHours(),\n    d.getMinutes(),\n    d.getSeconds(),\n    d.getMilliseconds()\n  ).getTime()\n\n  var offsetMilliseconds = tzParseTimezone(timeZone, new Date(utc))\n\n  return new Date(utc + offsetMilliseconds)\n}\n","/**\n * Returns the formatted time zone name of the provided `timeZone` or the current\n * system time zone if omitted, accounting for DST according to the UTC value of\n * the date.\n */\nexport default function tzIntlTimeZoneName(length, date, options) {\n  var dtf = getDTF(length, options.timeZone, options.locale)\n  return dtf.formatToParts ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date)\n}\n\nfunction partsTimeZone(dtf, date) {\n  var formatted = dtf.formatToParts(date)\n\n  for (var i = formatted.length - 1; i >= 0; --i) {\n    if (formatted[i].type === 'timeZoneName') {\n      return formatted[i].value\n    }\n  }\n}\n\nfunction hackyTimeZone(dtf, date) {\n  var formatted = dtf.format(date).replace(/\\u200E/g, '')\n  var tzNameMatch = / [\\w-+ ]+$/.exec(formatted)\n  return tzNameMatch ? tzNameMatch[0].substr(1) : ''\n}\n\n// If a locale has been provided `en-US` is used as a fallback in case it is an\n// invalid locale, otherwise the locale is left undefined to use the system locale.\nfunction getDTF(length, timeZone, locale) {\n  if (locale && !locale.code) {\n    throw new Error(\n      \"date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`\"\n    )\n  }\n  return new Intl.DateTimeFormat(locale ? [locale.code, 'en-US'] : undefined, {\n    timeZone: timeZone,\n    timeZoneName: length,\n  })\n}\n","import tzIntlTimeZoneName from '../../_lib/tzIntlTimeZoneName/index.js'\nimport tzParseTimezone from '../../_lib/tzParseTimezone/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60 * 1000\n\nvar formatters = {\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, localize, options) {\n    var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n    if (timezoneOffset === 0) {\n      return 'Z'\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n      // Hours, minutes and optional seconds without `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX': // Hours and minutes without `:` delimeter\n        return formatTimezone(timezoneOffset)\n\n      // Hours, minutes and optional seconds with `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimeter\n      default:\n        return formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, localize, options) {\n    var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n      // Hours, minutes and optional seconds without `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx': // Hours and minutes without `:` delimeter\n        return formatTimezone(timezoneOffset)\n\n      // Hours, minutes and optional seconds with `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimeter\n      default:\n        return formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, localize, options) {\n    var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, localize, options) {\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return tzIntlTimeZoneName('short', date, options)\n      // Long\n      case 'zzzz':\n      default:\n        return tzIntlTimeZoneName('long', date, options)\n    }\n  },\n}\n\nfunction getTimeZoneOffset(timeZone, originalDate) {\n  var timeZoneOffset = timeZone\n    ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE\n    : originalDate.getTimezoneOffset()\n  if (Number.isNaN(timeZoneOffset)) {\n    throw new RangeError('Invalid time zone specified: ' + timeZone)\n  }\n  return timeZoneOffset\n}\n\nfunction addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : ''\n  var output = Math.abs(number).toString()\n  while (output.length < targetLength) {\n    output = '0' + output\n  }\n  return sign + output\n}\n\nfunction formatTimezone(offset, dirtyDelimeter) {\n  var delimeter = dirtyDelimeter || ''\n  var sign = offset > 0 ? '-' : '+'\n  var absOffset = Math.abs(offset)\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n  var minutes = addLeadingZeros(Math.floor(absOffset % 60), 2)\n  return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimeter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+'\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n  }\n  return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+'\n  var absOffset = Math.abs(offset)\n  var hours = Math.floor(absOffset / 60)\n  var minutes = absOffset % 60\n  if (minutes === 0) {\n    return sign + String(hours)\n  }\n  var delimiter = dirtyDelimiter || ''\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2)\n}\n\nexport default formatters\n","import dateFnsFormat from 'date-fns/format/index.js'\nimport formatters from './formatters/index.js'\nimport toDate from '../toDate/index.js'\n\nvar tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 8     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 8     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Su            | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          | a..aaa  | AM, PM                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 1, 2, ..., 11, 0                  |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 0001, ..., 999               |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | PDT, EST, CEST                    | 6     |\n * |                                 | zzzz    | Pacific Daylight Time             | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 05/29/1453                        | 7     |\n * |                                 | PP      | May 29, 1453                      | 7     |\n * |                                 | PPP     | May 29th, 1453                    | 7     |\n * |                                 | PPPP    | Sunday, May 29th, 1453            | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 05/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | May 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | May 29th, 1453 at ...             | 7     |\n * |                                 | PPPPpppp| Sunday, May 29th, 1453 at ...     | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are created using the Intl browser API. The output is determined by the\n *    preferred standard of the current locale (en-US by default) which may not always give the expected result.\n *    For this reason it is recommended to supply a `locale` in the format options when formatting a time zone name.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole\n *   library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard\n *   #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). See [this\n *   post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n *   https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n *   [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n *   - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n *   - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n *   (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @param {Date|Number} [options.originalDate] - can be used to pass the original unmodified date to `format` to\n *   improve correctness of the replaced timezone token close to the DST threshold.\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see:\n *   https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  var formatStr = String(dirtyFormatStr)\n  var options = dirtyOptions || {}\n\n  var matches = formatStr.match(tzFormattingTokensRegExp)\n  if (matches) {\n    var date = toDate(options.originalDate || dirtyDate, options)\n    // Work through each match and replace the tz token in the format string with the quoted\n    // formatted time zone so the remaining tokens can be filled in by date-fns#format.\n    formatStr = matches.reduce(function (result, token) {\n      if (token[0] === \"'\") {\n        return result // This is a quoted portion, matched only to ensure we don't match inside it\n      }\n      var pos = result.indexOf(token)\n      var precededByQuotedSection = result[pos - 1] === \"'\"\n      var replaced = result.replace(\n        token,\n        \"'\" + formatters[token[0]](date, token, null, options) + \"'\"\n      )\n      // If the replacement results in two adjoining quoted strings, the back to back quotes\n      // are removed, so it doesn't look like an escaped quote.\n      return precededByQuotedSection\n        ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1)\n        : replaced\n    }, formatStr)\n  }\n\n  return dateFnsFormat(dirtyDate, formatStr, options)\n}\n","import tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name utcToZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with the relevant UTC time\n * @param {String} timeZone - the time zone to get local time for, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = utcToZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport default function utcToZonedTime(dirtyDate, timeZone, options) {\n  var date = toDate(dirtyDate, options)\n\n  var offsetMilliseconds = tzParseTimezone(timeZone, date, true)\n\n  var d = new Date(date.getTime() - offsetMilliseconds)\n\n  var resultDate = new Date(0)\n\n  resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())\n\n  resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds())\n\n  return resultDate\n}\n","import cloneObject from 'date-fns/_lib/cloneObject/index.js'\r\nimport format from '../format/index.js'\r\nimport utcToZonedTime from '../utcToZonedTime/index.js'\r\n\r\n/**\r\n * @name formatInTimeZone\r\n * @category Time Zone Helpers\r\n * @summary Gets the offset in milliseconds between the time zone and Universal Coordinated Time (UTC)\r\n *\r\n * @param {Date|String|Number} date - the date representing the local time / real UTC time\r\n * @param {String} timeZone - the time zone this date should be formatted for; can be an offset or IANA time zone\r\n * @param {String} formatStr - the string of tokens\r\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\r\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\r\n *   https://date-fns.org/docs/toDate}\r\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\r\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\r\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\r\n *   [Locale]{@link https://date-fns.org/docs/Locale}\r\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\r\n *   - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\r\n *   - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\r\n *   (`yy`, `yyyy`). See: https://git.io/fxCyr\r\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\r\n * @returns {String} the formatted date string\r\n */\r\nexport default function formatInTimeZone(date, timeZone, formatStr, options) {\r\n  var extendedOptions = cloneObject(options)\r\n  extendedOptions.timeZone = timeZone\r\n  extendedOptions.originalDate = date\r\n  return format(utcToZonedTime(date, timeZone), formatStr, extendedOptions)\r\n}\r\n","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, options) {\n    var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n      case 2:\n        return number + 'nd';\n      case 3:\n        return number + 'rd';\n    }\n  }\n  return number + 'th';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n    if (!matchResult) {\n      return null;\n    }\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}","export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","import {isMatch, parse, formatISO, format as dateFnsFormat} from 'date-fns';\nimport {formatInTimeZone, zonedTimeToUtc} from 'date-fns-tz';\nimport {enUS} from 'date-fns/locale';\n\n/**\n * Removes substring within quotes from a string.\n * @param {string} str\n * @returns {string}\n */\nexport function removeEscapedCharacters(str) {\n\treturn str.replace(/'(.*?)'/g, '');\n}\n\n/**\n * Returns true if the format is week format.\n * @param {str} f\n * @returns {boolean}\n */\nfunction isWeekFormat(f) {\n\treturn f.includes('w') || f.includes('I');\n}\n\n/**\n * Returns true if the format is strictly date format.\n * @param {string} format\n * @returns {boolean}\n */\nexport function isDateOnlyFormat(format) {\n\treturn !/[abBhHKkmsSXxOztPp]/.test(format);\n}\n\n/**\n * Returns true if the format is strictly time format.\n * @param {string} format\n * @returns {boolean}\n */\nfunction isTimeOnlyFormat(format) {\n\treturn !/[GyYRuQqMLwdDEec]/.test(format);\n}\n\n/**\n * Returns true if the date value is valid and matches its format.\n *\n * If the input type is 'week', the value is parsed and matched to\n * a copy starting from the first week of the year, plus the number\n * of weeks, minus one.\n * @param {string} value\n * @param {string} format\n * @param {boolean} required\n * @param {boolean} isoWeek\n * @returns {boolean}\n */\nexport function isDateTimeValueValid({value, format, required, locale}) {\n\tlet valid,\n\t\tdate = null,\n\t\trepresentation = 'complete',\n\t\tisoDate = null;\n\n\t// Check empty states\n\n\tif (!value && required) {\n\t\treturn {valid: false, date, isoDate};\n\t} else if (!value) {\n\t\treturn {valid: true, date, isoDate};\n\t}\n\n\t// Check real value\n\ttry {\n\t\tvalid =\n\t\t\tvalue || required\n\t\t\t\t? isMatchTZ(value, format, {\n\t\t\t\t\t\tlocale,\n\t\t\t\t\t\tuseAdditionalWeekYearTokens: isWeekFormat(format),\n\t\t\t\t\t})\n\t\t\t\t: true;\n\t\tdate = valid\n\t\t\t? parseTZ(value, format, new Date(), {\n\t\t\t\t\tlocale,\n\t\t\t\t\tuseAdditionalWeekYearTokens: isWeekFormat(format),\n\t\t\t\t})\n\t\t\t: null;\n\t} catch (e) {\n\t\treturn {valid: false, date: null, isoDate: null};\n\t}\n\n\tisoDate = valid && date ? formatISO(date, {representation}) : null;\n\treturn {date, valid, isoDate};\n}\n\nexport function isTimeZoneFormat(format) {\n\treturn format.toLowerCase().endsWith('z');\n}\n\nexport function getFormatWithoutTimeZone(format) {\n\treturn format.replace(/z|Z|/g, '');\n}\n\nconst getValueWithoutTimeZone = (value, format) => {\n\t// if timezone is/is not present in the input, remove the timezone and get the date and/or time.\n\tif (!value) return '';\n\tif (isTimeOnlyFormat(format)) return value.split(' ').slice(0, 1).join(' ');\n\n\t//remove the last timezone part, and return the value\n\treturn value?.replace(/\\s+\\S*$/, '');\n};\n\n//Function to match the format and the value. If timezone is present, remove the timezone and then compare the values.\nexport function isMatchTZ(\n\tvalue,\n\tformat,\n\t{locale, useAdditionalWeekYearTokens},\n) {\n\tlet valueToUse = value;\n\tlet formatToUse = format;\n\tif (isTimeZoneFormat(format)) {\n\t\tformatToUse = getFormatWithoutTimeZone(format).trimEnd(); //remove trailing space\n\t\tvalueToUse = getValueWithoutTimeZone(value, format);\n\t}\n\n\treturn isMatch(valueToUse, formatToUse, {\n\t\tlocale,\n\t\tuseAdditionalWeekYearTokens,\n\t});\n}\n\n//TODO: remove referenceDate as it's the same value (new Date()) that is getting passed everywhere. We can directly pass `new Date()` here.\nexport function parseTZ(value, format, referenceDate, options) {\n\tlet valueToUse = value;\n\tlet formatToUse = format;\n\tif (isTimeZoneFormat(format)) {\n\t\tformatToUse = getFormatWithoutTimeZone(format).trimEnd(); //remove trailing space\n\t\tvalueToUse = getValueWithoutTimeZone(value, format);\n\t}\n\treturn parse(valueToUse, formatToUse, referenceDate, options);\n}\n\nexport function formatTZ(date, format, options) {\n\tconst {locale = enUS, timezone = 'America/Los Angeles'} = options || {};\n\tif (isTimeZoneFormat(format)) {\n\t\tlet loc = locale,\n\t\t\ttz = timezone;\n\n\t\t//To keep the time consistent across all the timezones, use zonedTimeToUtc\n\t\tconst zonedTime = zonedTimeToUtc(\n\t\t\tdate,\n\t\t\tIntl.DateTimeFormat().resolvedOptions().timeZone, //Uses the current timezone of the OS to properly convert to UTC\n\t\t);\n\n\t\treturn formatInTimeZone(zonedTime, tz, format, {\n\t\t\tlocale: loc,\n\t\t});\n\t} else {\n\t\treturn dateFnsFormat(date, format, {locale});\n\t}\n}\n","import {DateTypes} from './constants';\n\nconst TypeToToken = {\n\t[DateTypes.DATE]: [/d+?/, /M+?/, /y+?/],\n\t[DateTypes.DATE_TIME]: [/d+?/, /M+?/, /y+?/, /[Hh]+?/, /[Zz]{0,5} /],\n\t[DateTypes.TIME]: /[[Hh]+?|m+?|s+?|S+?|a+?|[Zz]{0,5}]+?/,\n\t[DateTypes.WEEK_MONTH_YEAR]: /w+?/,\n\t[DateTypes.WEEK_YEAR]: [/w{1}[w|o]{0,1} /, / Y{1}$/],\n\t[DateTypes.MONTH]: [/M+?/, /y+?/],\n\t[DateTypes.QUARTER]: [/q+?/, /y+?/],\n\t[DateTypes.YEAR]: /y{2,4}/,\n};\n\nconst Formats = {\n\t[DateTypes.DATE]: \"'y', 'd', and 'M' (case sensitive)\",\n\t[DateTypes.DATE_TIME]:\n\t\t\"'y', 'd', 'M', and 'h' or 'H' (case sensitive), or 'z' or 'Z'\",\n\t[DateTypes.TIME]:\n\t\t\"'h' or 'H', 'm', 's', 'S' and 'a' (case sensitive), or 'z' or 'Z\",\n\t[DateTypes.WEEK_MONTH_YEAR]: \"'w'\",\n\t[DateTypes.WEEK_YEAR]: \"'w', 'Y' (case sensitive)\",\n\t[DateTypes.MONTH]: \"'M' (case sensitive) and 'y' (case sensitive)\",\n\t[DateTypes.QUARTER]: \"'q' and 'y' (case sensitive)\",\n\t[DateTypes.YEAR]: \"'y' (case sensitive)\",\n};\n\nfunction isValidTypeToFormat(type, format) {\n\tconst matcher = TypeToToken[type];\n\tconst valid = Array.isArray(matcher)\n\t\t? matcher.every((match) => match.test(format))\n\t\t: matcher.test(format);\n\tlet token;\n\n\tif (!valid) {\n\t\ttoken = Formats[type];\n\t}\n\n\treturn {valid, token};\n}\n\n/**\n * Checks that the 'type' and 'format' properties of the date and/or\n * time picker are compatible. If not, and in development mode, prints\n * a console error.\n */\nexport function isTypeToFormatValid(properties) {\n\tconst {type, format} = properties;\n\tconst {valid, token} = isValidTypeToFormat(type, format);\n\treturn {valid, token};\n}\n","import {createContext} from '@servicenow/ui-core';\nimport {enUS} from 'date-fns/locale';\n\nexport const localeContext = createContext('now-locale', {\n\tdefault: enUS,\n\tschema: {\n\t\tproperties: {\n\t\t\tlocale: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t},\n});\n","import {createContext} from '@servicenow/ui-core';\n\nexport const timezoneContext = createContext('now-timezone', {\n\tdefault: 'America/Los_Angeles',\n\tschema: {\n\t\tproperties: {\n\t\t\ttimezone: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t},\n});\n","import {t} from 'sn-translate';\n\nexport const DISABLED_ITEMS_FORMAT_ERROR_ID = 'disabled-items-format-error';\nexport const DISABLED_ITEMS_START_GREATER_THAN_END_ERROR_ID =\n\t'disable-items-start-greater-than-end-error';\nexport const FORMAT_MATCH_ERROR_ID = 'format-match-error';\nexport const FORMAT_START_MATCH_ERROR_ID = 'format-start-match-error';\nexport const FORMAT_END_MATCH_ERROR_ID = 'format-end-match-error';\nexport const TYPE_FORMAT_ERROR_ID = 'type-format-error';\nexport const UNAVAILABLE_END_ERROR_ID = 'date-end-unavailable-error';\nexport const UNAVAILABLE_ERROR_ID = 'date-unavailable-error';\nexport const UNAVAILABLE_START_ERROR_ID = 'date-start-unavailable-error';\nexport const INVALID_START_GREATER_THAN_END_ERROR_ID =\n\t'date-invalid-start-greater-than-end-error';\nexport const INVALID_INITIAL_TIME_ERROR_ID = 'initial-time-match-error';\nexport const INVALID_INITIAL_TIME_START_ERROR_ID = 'initial-time-start-error';\nexport const INVALID_INITIAL_TIME_END_ERROR_ID = 'initial-time-end-error';\nexport const ErrorMessages = {\n\t// Developer errors\n\n\t[TYPE_FORMAT_ERROR_ID]: ({format, type, token}) => ({\n\t\tstatus: 'critical',\n\t\tcontent: t(\n\t\t\t\"Error: Format '{0}' isn't compatible with type '{1}'; format must include token(s): {2}.\",\n\t\t\tformat,\n\t\t\ttype,\n\t\t\ttoken,\n\t\t),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: TYPE_FORMAT_ERROR_ID,\n\t}),\n\t[DISABLED_ITEMS_FORMAT_ERROR_ID]: ({format}) => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('Error: Disabled items must match format: {0}', format),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: DISABLED_ITEMS_FORMAT_ERROR_ID,\n\t}),\n\t[DISABLED_ITEMS_START_GREATER_THAN_END_ERROR_ID]: () => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('Error: Disabled items start cannot precede items end.'),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: DISABLED_ITEMS_START_GREATER_THAN_END_ERROR_ID,\n\t}),\n\n\t// Public errors\n\n\t[UNAVAILABLE_ERROR_ID]: ({type}) => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('This {0} is unavailable. Try another {0}.', type),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: UNAVAILABLE_ERROR_ID,\n\t}),\n\t[UNAVAILABLE_START_ERROR_ID]: ({type}) => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('This start {0} is unavailable. Try another {0}.', type),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: UNAVAILABLE_START_ERROR_ID,\n\t}),\n\t[UNAVAILABLE_END_ERROR_ID]: ({type}) => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('This end {0} is unavailable. Try another {0}.', type),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: UNAVAILABLE_END_ERROR_ID,\n\t}),\n\t[FORMAT_MATCH_ERROR_ID]: ({format, type}) => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('The {0} must match format: {1}', type, format),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: FORMAT_MATCH_ERROR_ID,\n\t}),\n\t[FORMAT_START_MATCH_ERROR_ID]: ({format, type}) => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('The first {0} must match format: {1}', type, format),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: FORMAT_START_MATCH_ERROR_ID,\n\t}),\n\t[FORMAT_END_MATCH_ERROR_ID]: ({format, type}) => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('The second {0} must match format: {1}', type, format),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: FORMAT_END_MATCH_ERROR_ID,\n\t}),\n\t[INVALID_START_GREATER_THAN_END_ERROR_ID]: ({type}) => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('Start {0} cannot occur on or after end {0}.', type),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: INVALID_START_GREATER_THAN_END_ERROR_ID,\n\t}),\n\t[INVALID_INITIAL_TIME_ERROR_ID]: () => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('Invalid initial time'),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: INVALID_INITIAL_TIME_ERROR_ID,\n\t}),\n\t[INVALID_INITIAL_TIME_START_ERROR_ID]: () => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('Invalid initial time start'),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: INVALID_INITIAL_TIME_START_ERROR_ID,\n\t}),\n\t[INVALID_INITIAL_TIME_END_ERROR_ID]: () => ({\n\t\tstatus: 'critical',\n\t\tcontent: t('Invalid initial time end'),\n\t\ticon: 'exclamation-circle-outline',\n\t\tid: INVALID_INITIAL_TIME_END_ERROR_ID,\n\t}),\n};\n\nexport const panelEditableErrorIds = [\n\tFORMAT_START_MATCH_ERROR_ID,\n\tFORMAT_END_MATCH_ERROR_ID,\n\tFORMAT_MATCH_ERROR_ID,\n\tINVALID_START_GREATER_THAN_END_ERROR_ID,\n\tUNAVAILABLE_ERROR_ID,\n\tUNAVAILABLE_END_ERROR_ID,\n\tUNAVAILABLE_START_ERROR_ID,\n];\n\nexport function removeErrorMessage({errorId, updateProperties}) {\n\tupdateProperties(({properties: {messages}}) => {\n\t\tif (!messages) return {shouldUpdate: false};\n\t\tconst errorIndex = messages.findIndex((m) => m.id === errorId);\n\t\tif (errorIndex === -1) return {shouldUpdate: false};\n\n\t\treturn {\n\t\t\toperation: 'splice',\n\t\t\tpath: 'messages',\n\t\t\tstart: errorIndex,\n\t\t\tdeleteCount: 1,\n\t\t};\n\t});\n}\n\nexport function prependErrorMessage({errorId, updateProperties, messageData}) {\n\tupdateProperties(({properties: {messages}}) => {\n\t\tif (!messages) return {shouldUpdate: false};\n\t\tconst errorIndex = messages.findIndex((m) => m.id === errorId);\n\t\tif (errorIndex !== -1) return {shouldUpdate: false};\n\n\t\treturn {\n\t\t\tpath: 'messages',\n\t\t\tvalue: [ErrorMessages[errorId](messageData), ...messages],\n\t\t};\n\t});\n}\n","import {t} from 'sn-translate';\nimport {DateTypes} from '@servicenow/library-date-time';\n\nexport const CALENDAR_LABEL_FORMAT = 'MMMM yyyy';\nexport const CALENDAR_DATE_LONG_FORMAT = 'EEEE, MMMM d, yyyy';\nexport const CALENDAR_QUARTER_LONG_FORMAT = 'qqqq yyyy';\nexport const CALENDAR_TIME_INPUT_ID = 'now-date-time-calendar-time-input';\nexport const POPOVER_ID = 'now-date-time-popover';\nexport const STANDALONE_MONTH_FORMAT = 'MMM';\nexport const STANDALONE_MONTH_LONG_FORMAT = 'MMMM';\nexport const STANDALONE_YEAR_FORMAT = 'yyyy';\nexport const STANDALONE_QUARTER_FORMAT = 'qqq';\nexport const STANDALONE_QUARTER_LONG_FORMAT = 'qqqq';\nexport const STANDALONE_WEEK_YEAR_FORMAT = 'w';\nexport const TRIGGER_ID = 'now-date-time-trigger';\n\nexport const PaginationActionTypes = {\n\tNEXT: 'NEXT',\n\tPREVIOUS: 'PREVIOUS',\n};\n\nexport const ItemStateTypes = {\n\tDISABLED: 'disabled',\n\tSELECTED: 'selected',\n\tNOW: 'now',\n\tTWEEN: 'tween',\n\tADJACENT: 'adjacent',\n\tRANGE: 'range',\n};\n\nexport const DateActionTypes = {\n\tTO_NEXT_MONTH: 'toNextMonth',\n\tTO_PREVIOUS_MONTH: 'toPreviousMonth',\n\tTO_MONTH: 'toMonth',\n\tTO_QUARTER: 'toQuarter',\n\tTO_YEAR: 'toYear',\n\tTO_NEXT_YEAR: 'toNextYear',\n\tTO_PREVIOUS_YEAR: 'toPreviousYear',\n\tTO_WEEK: 'toWeek',\n};\n\nexport const PaginationTypes = {\n\t[DateTypes.DATE]: {\n\t\t[PaginationActionTypes.PREVIOUS]: DateActionTypes.TO_PREVIOUS_MONTH,\n\t\t[PaginationActionTypes.NEXT]: DateActionTypes.TO_NEXT_MONTH,\n\t},\n\t[DateTypes.DATE_TIME]: {\n\t\t[PaginationActionTypes.PREVIOUS]: DateActionTypes.TO_PREVIOUS_MONTH,\n\t\t[PaginationActionTypes.NEXT]: DateActionTypes.TO_NEXT_MONTH,\n\t},\n\t[DateTypes.MONTH]: {\n\t\t[PaginationActionTypes.PREVIOUS]: DateActionTypes.TO_PREVIOUS_YEAR,\n\t\t[PaginationActionTypes.NEXT]: DateActionTypes.TO_NEXT_YEAR,\n\t},\n\t[DateTypes.WEEK_YEAR]: {\n\t\t[PaginationActionTypes.PREVIOUS]: DateActionTypes.TO_PREVIOUS_MONTH,\n\t\t[PaginationActionTypes.NEXT]: DateActionTypes.TO_NEXT_MONTH,\n\t},\n};\n\nexport const CUSTOM_PRESET_OPTION = {\n\tkeyword: 'Custom',\n\ttype: 'custom',\n\tgroupLabel: t('Custom'),\n};\n\nexport const UNGROUPED_GROUP_LABEL = t('Other');\n\nexport const StartTimeData = {\n\thours: 0,\n\tminutes: 0,\n\tseconds: 0,\n\tmilliseconds: 0,\n};\n\nexport const EndTimeData = {\n\thours: 23,\n\tminutes: 59,\n\tseconds: 59,\n\tmilliseconds: 998,\n};\n\nexport const Keys = {\n\tENTER: 'Enter',\n\tSPACE: ' ',\n\tARROW_UP: 'ArrowUp',\n\tARROW_DOWN: 'ArrowDown',\n\tARROW_LEFT: 'ArrowLeft',\n\tARROW_RIGHT: 'ArrowRight',\n\tHOME: 'Home',\n\tEND: 'End',\n\tPAGE_UP: 'PageUp',\n\tPAGE_DOWN: 'PageDown',\n};\n\nexport const MonthLabels = [\n\tt('January'),\n\tt('February'),\n\tt('March'),\n\tt('April'),\n\tt('May'),\n\tt('June'),\n\tt('July'),\n\tt('August'),\n\tt('September'),\n\tt('October'),\n\tt('November'),\n\tt('December'),\n];\n\nexport const DateHeadingLabels = [\n\tt('Sunday'),\n\tt('Monday'),\n\tt('Tuesday'),\n\tt('Wednesday'),\n\tt('Thursday'),\n\tt('Friday'),\n\tt('Saturday'),\n];\n\nexport const WeekHeadingLabel = t('Week');\n\nexport const presetTranslations = {\n\tyear: t('year'),\n\tYear: t('Year'),\n\tyears: t('years'),\n\tquarter: t('quarter'),\n\tQuarter: t('Quarter'),\n\tquarters: t('quarters'),\n\tmonth: t('month'),\n\tMonth: t('Month'),\n\tmonths: t('months'),\n\tweek: t('week'),\n\tWeek: t('Week'),\n\tweeks: t('weeks'),\n\tday: t('day'),\n\tDay: t('Day'),\n\tdays: t('days'),\n\thour: t('hour'),\n\tHour: t('Hour'),\n\thours: t('hours'),\n\tminute: t('minute'),\n\tMinute: t('Minute'),\n\tminutes: t('minutes'),\n\tsecond: t('second'),\n\tSecond: t('Second'),\n\tseconds: t('seconds'),\n};\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n\n  if (!amount) {\n    // If 0 days, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n\n  date.setDate(date.getDate() + amount);\n  return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n\n  var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n\n  var endOfDesiredMonth = new Date(date.getTime());\n  endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n  var daysInMonth = endOfDesiredMonth.getDate();\n\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n    return date;\n  }\n}","import addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key            | Description                        |\n * |----------------|------------------------------------|\n * | years          | Amount of years to be added        |\n * | months         | Amount of months to be added       |\n * | weeks          | Amount of weeks to be added       |\n * | days           | Amount of days to be added         |\n * | hours          | Amount of hours to be added        |\n * | minutes        | Amount of minutes to be added      |\n * | seconds        | Amount of seconds to be added      |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n *   years: 2,\n *   months: 9,\n *   weeks: 1,\n *   days: 7,\n *   hours: 5,\n *   minutes: 9,\n *   seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport default function add(dirtyDate, duration) {\n  requiredArgs(2, arguments);\n  if (!duration || typeof duration !== 'object') return new Date(NaN);\n  var years = 'years' in duration ? toInteger(duration.years) : 0;\n  var months = 'months' in duration ? toInteger(duration.months) : 0;\n  var weeks = 'weeks' in duration ? toInteger(duration.weeks) : 0;\n  var days = 'days' in duration ? toInteger(duration.days) : 0;\n  var hours = 'hours' in duration ? toInteger(duration.hours) : 0;\n  var minutes = 'minutes' in duration ? toInteger(duration.minutes) : 0;\n  var seconds = 'seconds' in duration ? toInteger(duration.seconds) : 0; // Add years and months\n\n  var date = toDate(dirtyDate);\n  var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date; // Add weeks and days\n\n  var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths; // Add days, hours, minutes and seconds\n\n  var minutesToAdd = minutes + hours * 60;\n  var secondsToAdd = seconds + minutesToAdd * 60;\n  var msToAdd = secondsToAdd * 1000;\n  var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n  return finalDate;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function subMonths(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMonths(dirtyDate, -amount);\n}","import subDays from \"../subDays/index.js\";\nimport subMonths from \"../subMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key     | Description                        |\n * |---------|------------------------------------|\n * | years   | Amount of years to be subtracted   |\n * | months  | Amount of months to be subtracted  |\n * | weeks   | Amount of weeks to be subtracted   |\n * | days    | Amount of days to be subtracted    |\n * | hours   | Amount of hours to be subtracted   |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n *   years: 2,\n *   months: 9,\n *   weeks: 1,\n *   days: 7,\n *   hours: 5,\n *   minutes: 9,\n *   seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\n\nexport default function sub(dirtyDate, duration) {\n  requiredArgs(2, arguments);\n  if (!duration || typeof duration !== 'object') return new Date(NaN);\n  var years = 'years' in duration ? toInteger(duration.years) : 0;\n  var months = 'months' in duration ? toInteger(duration.months) : 0;\n  var weeks = 'weeks' in duration ? toInteger(duration.weeks) : 0;\n  var days = 'days' in duration ? toInteger(duration.days) : 0;\n  var hours = 'hours' in duration ? toInteger(duration.hours) : 0;\n  var minutes = 'minutes' in duration ? toInteger(duration.minutes) : 0;\n  var seconds = 'seconds' in duration ? toInteger(duration.seconds) : 0; // Subtract years and months\n\n  var dateWithoutMonths = subMonths(toDate(dirtyDate), months + years * 12); // Subtract weeks and days\n\n  var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7); // Subtract hours, minutes and seconds\n\n  var minutestoSub = minutes + hours * 60;\n  var secondstoSub = seconds + minutestoSub * 60;\n  var mstoSub = secondstoSub * 1000;\n  var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);\n  return finalDate;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  var monthIndex = date.getMonth();\n  var lastDayOfMonth = new Date(0);\n  lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n  lastDayOfMonth.setHours(0, 0, 0, 0);\n  return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var month = toInteger(dirtyMonth);\n  var year = date.getFullYear();\n  var day = date.getDate();\n  var dateWithDesiredMonth = new Date(0);\n  dateWithDesiredMonth.setFullYear(year, month, 15);\n  dateWithDesiredMonth.setHours(0, 0, 0, 0);\n  var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n  // if the original date was the last day of the longer month\n\n  date.setMonth(month, Math.min(day, daysInMonth));\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * var result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * var result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport default function set(dirtyDate, values) {\n  requiredArgs(2, arguments);\n\n  if (typeof values !== 'object' || values === null) {\n    throw new RangeError('values parameter must be an object');\n  }\n\n  var date = toDate(dirtyDate); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n  if (isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n\n  if (values.year != null) {\n    date.setFullYear(values.year);\n  }\n\n  if (values.month != null) {\n    date = setMonth(date, values.month);\n  }\n\n  if (values.date != null) {\n    date.setDate(toInteger(values.date));\n  }\n\n  if (values.hours != null) {\n    date.setHours(toInteger(values.hours));\n  }\n\n  if (values.minutes != null) {\n    date.setMinutes(toInteger(values.minutes));\n  }\n\n  if (values.seconds != null) {\n    date.setSeconds(toInteger(values.seconds));\n  }\n\n  if (values.milliseconds != null) {\n    date.setMilliseconds(toInteger(values.milliseconds));\n  }\n\n  return date;\n}","import {add, sub, set} from 'date-fns';\nimport {DateActionTypes} from './constants';\n\nconst {\n\tTO_NEXT_MONTH,\n\tTO_PREVIOUS_MONTH,\n\tTO_MONTH,\n\tTO_QUARTER,\n\tTO_YEAR,\n\tTO_WEEK,\n\tTO_NEXT_YEAR,\n\tTO_PREVIOUS_YEAR,\n} = DateActionTypes;\n\n/**\n * Actions to return a new date based on the method.\n */\n\nexport const DateActions = {\n\t[TO_NEXT_MONTH]: (date) => add(date, {months: 1}),\n\t[TO_PREVIOUS_MONTH]: (date) => sub(date, {months: 1}),\n\t[TO_MONTH]: (date, monthIdx) => set(date, {month: monthIdx}),\n\t[TO_QUARTER]: (date, quarterIdx) => set(date, {quarter: quarterIdx}),\n\t[TO_YEAR]: (date, year) => set(date, {year}),\n\t[TO_NEXT_YEAR]: (date) => add(date, {years: 1}),\n\t[TO_PREVIOUS_YEAR]: (date) => sub(date, {years: 1}),\n\t[TO_WEEK]: (date, weekIdx) => set(date, {week: weekIdx}),\n};\n","import {ItemStateTypes} from './constants';\n\nconst {ADJACENT, NOW, SELECTED, TWEEN, DISABLED} = ItemStateTypes;\n\nexport function createDateItem(date, overrides = {}) {\n\treturn {\n\t\tdate,\n\t\tlabel: undefined,\n\t\tweek: undefined,\n\t\ta11yLabel: undefined,\n\t\tid: date ? String(date.getTime()) : overrides.id,\n\n\t\t// State fields\n\t\t[ADJACENT]: false,\n\t\t[NOW]: false,\n\t\t[SELECTED]: false,\n\t\t[TWEEN]: false,\n\t\t[DISABLED]: false,\n\n\t\t...overrides,\n\t};\n}\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n *   new Date(1995, 6, 2),\n *   new Date(1987, 1, 11),\n *   new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * //   Wed Feb 11 1987 00:00:00,\n * //   Mon Jul 10 1989 00:00:00,\n * //   Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var diff = dateLeft.getTime() - dateRight.getTime();\n\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n  } else {\n    return diff;\n  }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  return year;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\n\nexport default function getMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var month = date.getMonth();\n  return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\n\nexport default function getQuarter(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var quarter = Math.floor(date.getMonth() / 3) + 1;\n  return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setDate(date.getDate() - diff);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport default function getWeekYear(dirtyDate, options) {\n  var _options$locale, _options$locale$optio;\n\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  var localeFirstWeekContainsDate = options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = (options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getWeekYear from \"../getWeekYear/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * var result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n  var year = getWeekYear(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  var date = startOfWeek(firstWeek, dirtyOptions);\n  return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getISOWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var dateToCompare = toDate(dirtyDateToCompare);\n  return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\n\nexport default function getDate(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var dayOfMonth = date.getDate();\n  return dayOfMonth;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  return startOfWeek(dirtyDate, {\n    weekStartsOn: 1\n  });\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getISOYear` to `getISOWeekYear`.\n *   \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n *   This change makes the name consistent with\n *   locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\nexport default function getISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  var date = startOfISOWeek(fourthOfJanuary);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport default function getISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  var days = amount * 7;\n  return addDays(dirtyDate, days);\n}","import addWeeks from \"../addWeeks/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week within interval 6 October 2014 - 23 November 2014:\n * var result = eachWeekOfInterval({\n *   start: new Date(2014, 9, 6),\n *   end: new Date(2014, 10, 23)\n * })\n * //=> [\n * //   Sun Oct 05 2014 00:00:00,\n * //   Sun Oct 12 2014 00:00:00,\n * //   Sun Oct 19 2014 00:00:00,\n * //   Sun Oct 26 2014 00:00:00,\n * //   Sun Nov 02 2014 00:00:00,\n * //   Sun Nov 09 2014 00:00:00,\n * //   Sun Nov 16 2014 00:00:00,\n * //   Sun Nov 23 2014 00:00:00\n * // ]\n */\n\nexport default function eachWeekOfInterval(dirtyInterval, options) {\n  requiredArgs(1, arguments);\n  var interval = dirtyInterval || {};\n  var startDate = toDate(interval.start);\n  var endDate = toDate(interval.end);\n  var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n  if (!(startDate.getTime() <= endTime)) {\n    throw new RangeError('Invalid interval');\n  }\n\n  var startDateWeek = startOfWeek(startDate, options);\n  var endDateWeek = startOfWeek(endDate, options); // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n\n  startDateWeek.setHours(15);\n  endDateWeek.setHours(15);\n  endTime = endDateWeek.getTime();\n  var weeks = [];\n  var currentWeek = startDateWeek;\n\n  while (currentWeek.getTime() <= endTime) {\n    currentWeek.setHours(0);\n    weeks.push(toDate(currentWeek));\n    currentWeek = addWeeks(currentWeek, 1);\n    currentWeek.setHours(15);\n  }\n\n  return weeks;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n *   new Date(2014, 6, 20),\n *   new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n *   new Date(2014, 6, 20),\n *   new Date(2014, 6, 5),\n *   { weekStartsOn: 1 }\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions);\n  var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions);\n  var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n  var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function lastDayOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var month = date.getMonth();\n  date.setFullYear(date.getFullYear(), month + 1, 0);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import differenceInCalendarWeeks from \"../differenceInCalendarWeeks/index.js\";\nimport lastDayOfMonth from \"../lastDayOfMonth/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * const result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * const result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\nexport default function getWeeksInMonth(date, options) {\n  requiredArgs(1, arguments);\n  return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n  date.setHours(0, 0, 0, 0);\n  date.setDate(date.getDate() + diff);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `eachDay` to `eachDayOfInterval`.\n *   This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n *   ```\n *   2.1.3\n *   time interval\n *   part of the time axis limited by two instants\n *   ```\n *\n *   Also, this function now accepts an object with `start` and `end` properties\n *   instead of two arguments as an interval.\n *   This function now throws `RangeError` if the start of the interval is after its end\n *   or if any date in the interval is `Invalid Date`.\n *\n *   ```javascript\n *   // Before v2.0.0\n *\n *   eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))\n *\n *   // v2.0.0 onward\n *\n *   eachDayOfInterval(\n *     { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }\n *   )\n *   ```\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n *   start: new Date(2014, 9, 6),\n *   end: new Date(2014, 9, 10)\n * })\n * //=> [\n * //   Mon Oct 06 2014 00:00:00,\n * //   Tue Oct 07 2014 00:00:00,\n * //   Wed Oct 08 2014 00:00:00,\n * //   Thu Oct 09 2014 00:00:00,\n * //   Fri Oct 10 2014 00:00:00\n * // ]\n */\n\nexport default function eachDayOfInterval(dirtyInterval, options) {\n  requiredArgs(1, arguments);\n  var interval = dirtyInterval || {};\n  var startDate = toDate(interval.start);\n  var endDate = toDate(interval.end);\n  var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n  if (!(startDate.getTime() <= endTime)) {\n    throw new RangeError('Invalid interval');\n  }\n\n  var dates = [];\n  var currentDate = startDate;\n  currentDate.setHours(0, 0, 0, 0);\n  var step = options && 'step' in options ? Number(options.step) : 1;\n  if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\n  while (currentDate.getTime() <= endTime) {\n    dates.push(toDate(currentDate));\n    currentDate.setDate(currentDate.getDate() + step);\n    currentDate.setHours(0, 0, 0, 0);\n  }\n\n  return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\nexport default function getDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isWithinRange` to `isWithinInterval`.\n *   This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n *   ```\n *   2.1.3\n *   time interval\n *   part of the time axis limited by two instants\n *   ```\n *\n *   Also, this function now accepts an object with `start` and `end` properties\n *   instead of two arguments as an interval.\n *   This function now throws `RangeError` if the start of the interval is after its end\n *   or if any date in the interval is `Invalid Date`.\n *\n *   ```javascript\n *   // Before v2.0.0\n *\n *   isWithinRange(\n *     new Date(2014, 0, 3),\n *     new Date(2014, 0, 1), new Date(2014, 0, 7)\n *   )\n *\n *   // v2.0.0 onward\n *\n *   isWithinInterval(\n *     new Date(2014, 0, 3),\n *     { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }\n *   )\n *   ```\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n *   start: new Date(2014, 0, 1),\n *   end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n *   start: new Date(2014, 0, 1),\n *   end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n  requiredArgs(2, arguments);\n  var time = toDate(dirtyDate).getTime();\n  var startTime = toDate(interval.start).getTime();\n  var endTime = toDate(interval.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n  if (!(startTime <= endTime)) {\n    throw new RangeError('Invalid interval');\n  }\n\n  return time >= startTime && time <= endTime;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n *   new Date(2014, 6, 2, 6, 30, 45, 0),\n *   new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyLeftDate);\n  var dateRight = toDate(dirtyRightDate);\n  return dateLeft.getTime() === dateRight.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getOverlappingDaysInRanges` to `getOverlappingDaysInIntervals`.\n *   This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n *   ```\n *   2.1.3\n *   time interval\n *   part of the time axis limited by two instants\n *   ```\n *\n *   Also, this function now accepts an object with `start` and `end` properties\n *   instead of two arguments as an interval.\n *   This function now throws `RangeError` if the start of the interval is after its end\n *   or if any date in the interval is `Invalid Date`.\n *\n *   ```javascript\n *   // Before v2.0.0\n *\n *   getOverlappingDaysInRanges(\n *     new Date(2014, 0, 10), new Date(2014, 0, 20),\n *     new Date(2014, 0, 17), new Date(2014, 0, 21)\n *   )\n *\n *   // v2.0.0 onward\n *\n *   getOverlappingDaysInIntervals(\n *     { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n *     { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n *   )\n *   ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n *   { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n *   { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n *   { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n *   { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> 0\n */\n\nexport default function getOverlappingDaysInIntervals(dirtyIntervalLeft, dirtyIntervalRight) {\n  requiredArgs(2, arguments);\n  var intervalLeft = dirtyIntervalLeft || {};\n  var intervalRight = dirtyIntervalRight || {};\n  var leftStartTime = toDate(intervalLeft.start).getTime();\n  var leftEndTime = toDate(intervalLeft.end).getTime();\n  var rightStartTime = toDate(intervalRight.start).getTime();\n  var rightEndTime = toDate(intervalRight.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n  if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n    throw new RangeError('Invalid interval');\n  }\n\n  var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n\n  if (!isOverlapping) {\n    return 0;\n  }\n\n  var overlapStartDate = rightStartTime < leftStartTime ? leftStartTime : rightStartTime;\n  var overlapEndDate = rightEndTime > leftEndTime ? leftEndTime : rightEndTime;\n  var differenceInMs = overlapEndDate - overlapStartDate;\n  return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var dateToCompare = toDate(dirtyDateToCompare);\n  return date.getTime() > dateToCompare.getTime();\n}","import {\n\tisWithinInterval,\n\tgetOverlappingDaysInIntervals,\n\tisEqual,\n\tisAfter,\n\tisBefore,\n\tset as dateFnsSet,\n\tstartOfWeek,\n} from 'date-fns';\nimport {\n\tItemStateTypes,\n\tvaluesToDates,\n\tgetIndexOfDate,\n\tgetOverlapItemsPerType,\n\tStartTimeData,\n} from '../utils';\nimport {DateTypes} from '@servicenow/library-date-time';\n\nfunction getIntervalDays(interval, {start, end}) {\n\tif (!start || !end) return 0;\n\n\treturn (start === end && isWithinInterval(start, interval)) ||\n\t\tisEqual(end, interval.start) ||\n\t\tisEqual(start, interval.end)\n\t\t? 1\n\t\t: getOverlappingDaysInIntervals({start, end}, interval);\n}\n\n/**\n * Sets stateKey on matching dates in overlapItems to `true`.\n */\nfunction setStateToItems({\n\titems,\n\tfirstDateIdx,\n\tfullInterval,\n\tfullIntervalList,\n\toverlapItems,\n\tformat,\n\ttype,\n\tstateKey,\n\tlocale,\n\tallowDuplicates,\n\tisoWeek,\n}) {\n\tif (!overlapItems.length) return items;\n\tconst overlapDates = valuesToDates(overlapItems, format, locale, isoWeek);\n\tconst overlapLength = overlapItems.length;\n\tconst overlapStart = overlapDates[0];\n\tconst overlapEnd = overlapDates[overlapLength - 1];\n\tconst daysInOverlap = getIntervalDays(fullInterval, {\n\t\tstart: overlapStart,\n\t\tend: overlapEnd,\n\t});\n\n\tif (\n\t\tdaysInOverlap === 0 &&\n\t\t(!allowDuplicates || !isEqual(overlapStart, overlapEnd))\n\t) {\n\t\treturn items;\n\t}\n\t// 100% overlap, update all matching dates\n\tfor (let i = 0; i < overlapLength; i++) {\n\t\tconst overlapDate = dateFnsSet(overlapDates[i], StartTimeData);\n\n\t\t// ignore future dates\n\t\tif (\n\t\t\tisAfter(overlapDate, fullInterval.end) ||\n\t\t\tisBefore(overlapDate, fullInterval.start)\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst matchIdx = getIndexOfDate(overlapDate, fullIntervalList, type);\n\t\tconst match = items[matchIdx + firstDateIdx];\n\t\tif (match) {\n\t\t\titems[matchIdx + firstDateIdx][stateKey] = true;\n\t\t}\n\t}\n\n\treturn items;\n}\n\n/**\n * Sets stateful keys to date items (disabled, selected, tween in interval, now).\n */\nexport function setStates({\n\titems,\n\tfirstDateIdx,\n\tfullInterval,\n\tfullIntervalList,\n\tselectedItems,\n\tdisabledItems,\n\tformat,\n\ttype,\n\tlocale,\n\tallowDuplicates,\n\tmode = 'standard',\n\tisoWeek,\n}) {\n\tlet now = new Date();\n\t// Time is extraneous for the calendar grid\n\tnow.setHours(0, 0, 0, 0);\n\tconst isWeekItem = type === DateTypes.WEEK_YEAR;\n\t//now points to current week when type === week-year\n\tnow = isWeekItem\n\t\t? dateFnsSet(startOfWeek(now), {\n\t\t\t\thours: 0,\n\t\t\t\tminutes: 0,\n\t\t\t\tseconds: 0,\n\t\t\t\tmilliseconds: 0,\n\t\t\t})\n\t\t: now;\n\tlet itemsWithState = [...items];\n\n\t// Set \"now\"\n\titemsWithState = setStateToItems({\n\t\titems: itemsWithState,\n\t\tfirstDateIdx,\n\t\tfullInterval,\n\t\tfullIntervalList,\n\t\toverlapItems: [now],\n\t\tformat,\n\t\ttype,\n\t\tstateKey: ItemStateTypes.NOW,\n\t\tlocale,\n\t\tisoWeek,\n\t});\n\n\t// nothing to process further\n\tif (!selectedItems.length && !disabledItems.length) return itemsWithState;\n\n\t// Set disabled items\n\n\titemsWithState = setStateToItems({\n\t\titems: itemsWithState,\n\t\tfirstDateIdx,\n\t\tfullInterval,\n\t\tfullIntervalList,\n\t\toverlapItems: disabledItems,\n\t\tformat,\n\t\ttype,\n\t\tstateKey: ItemStateTypes.DISABLED,\n\t\tlocale,\n\t\tisoWeek,\n\t});\n\n\t// Set selected items\n\tif (!selectedItems.length) return itemsWithState;\n\titemsWithState = setStateToItems({\n\t\titems: itemsWithState,\n\t\tfirstDateIdx,\n\t\tfullInterval,\n\t\tfullIntervalList,\n\t\toverlapItems: selectedItems,\n\t\tformat,\n\t\ttype,\n\t\tstateKey: ItemStateTypes.SELECTED,\n\t\tlocale,\n\t\tallowDuplicates,\n\t\tisoWeek,\n\t});\n\n\tif (mode === 'interval') {\n\t\tconst rangeItems = valuesToDates(selectedItems, format, locale, isoWeek);\n\t\tlet overlapItems = getOverlapItemsPerType(rangeItems, type);\n\t\titemsWithState = setStateToItems({\n\t\t\titems: itemsWithState,\n\t\t\tfirstDateIdx,\n\t\t\tfullInterval,\n\t\t\tfullIntervalList,\n\t\t\toverlapItems,\n\t\t\tformat,\n\t\t\ttype,\n\t\t\tstateKey: ItemStateTypes.RANGE,\n\t\t\tlocale,\n\t\t\tisoWeek,\n\t\t});\n\t}\n\n\treturn itemsWithState;\n}\n","import {\n\teachDayOfInterval,\n\tisWithinInterval,\n\tgetWeeksInMonth,\n\teachWeekOfInterval,\n\tlastDayOfWeek,\n\tgetDate,\n\tset,\n\tlastDayOfMonth,\n\tgetMonth,\n\tadd,\n\tsub,\n\tisEqual,\n\tcompareAsc,\n\tgetDay,\n\tgetWeek,\n\tgetISOWeek,\n\tstartOfWeek,\n} from 'date-fns';\nimport {DateTypes, localeContext, parseTZ} from '@servicenow/library-date-time';\nimport {setStates} from './set-states';\nimport {\n\tcreateDateItem,\n\tItemStateTypes,\n\tEndTimeData,\n\tStartTimeData,\n\tDateHeadingLabels,\n\tMonthLabels,\n\tgetIndexOfDate,\n\taddToDate,\n\tsubtractFromDate,\n\tWeekHeadingLabel,\n\tgetOverlapItemsPerType,\n} from '../utils';\n\nconst {ADJACENT} = ItemStateTypes;\nconst SUNDAY_IDX = 0;\nconst NUM_DAYS_IN_WEEK = 7;\n\n/**\n * Given a list and an index, reorder `items` so the item at `startIdx`\n * is first item in the list.\n */\nfunction reorderItems(items, startIdx) {\n\treturn [...items.slice(startIdx), ...items.slice(0, startIdx)];\n}\n\n/**\n * Returns date items for week day headings.\n */\nexport function getHeadings(firstDayOfWeek, locale, weekdayHeadings, type) {\n\tlet labels = DateHeadingLabels;\n\tlet headings = [];\n\n\tif (locale) {\n\t\tfor (let i = 0; i < 7; i++) {\n\t\t\theadings.push(locale.localize.day(i, {width: weekdayHeadings}));\n\t\t}\n\t} else {\n\t\theadings = DateHeadingLabels.map((label) =>\n\t\t\tlabel.slice(0, weekdayHeadings === 'short' ? 2 : 1),\n\t\t);\n\t}\n\n\tif (firstDayOfWeek !== SUNDAY_IDX) {\n\t\theadings = reorderItems(headings, firstDayOfWeek);\n\t\tlabels = reorderItems(labels, firstDayOfWeek);\n\t}\n\n\tif (type === DateTypes.WEEK_YEAR) headings.unshift(WeekHeadingLabel);\n\n\treturn headings.map((h, i) =>\n\t\tcreateDateItem(null, {label: h, a11yLabel: labels[i]}),\n\t);\n}\n\nfunction getDateOptions(d, isInInterval, type, isoWeek) {\n\treturn {\n\t\tlabel: getDate(d),\n\t\ta11yLabel: `${getDate(d)}, ${MonthLabels[getMonth(d)]}`,\n\t\t[ADJACENT]: !isInInterval,\n\t\tweek:\n\t\t\ttype === DateTypes.WEEK_YEAR\n\t\t\t\t? isoWeek\n\t\t\t\t\t? getISOWeek(d)\n\t\t\t\t\t: getWeek(d)\n\t\t\t\t: null,\n\t};\n}\n\n/**\n * Given a list of dates, where each date is the first day of each week in\n * a given month, expand it to a list of every day in the month, starting\n * with the first day of the first week, and ending with the last day\n * of the last week.\n */\nexport function getAllDaysInWeekIntervals(\n\tdateRef,\n\tactiveInterval,\n\tfirstDayOfWeek,\n\thideAdjacentDates,\n\tweekendDays,\n\ttype,\n\tisoWeek,\n) {\n\tconst weeksInMonth = eachWeekOfInterval(activeInterval, {\n\t\tweekStartsOn: firstDayOfWeek,\n\t});\n\tconst weeksLength = getWeeksInMonth(dateRef, {weekStartsOn: firstDayOfWeek});\n\n\tconst items = [];\n\tconst fullWeekendList = [];\n\n\tconst fullIntervalList = weeksInMonth.reduce((acc, weekStart, idx) => {\n\t\tconst firstWeekIdx = 0;\n\t\tconst lastWeekIdx = weeksLength - 1;\n\t\tconst weekEnd = lastDayOfWeek(weekStart, {\n\t\t\tweekStartsOn: firstDayOfWeek,\n\t\t});\n\t\tconst days = eachDayOfInterval(\n\t\t\t{start: weekStart, end: weekEnd},\n\t\t\t{weekStartsOn: firstDayOfWeek},\n\t\t);\n\n\t\tfullWeekendList.push(\n\t\t\t...days.filter((d) => {\n\t\t\t\treturn weekendDays.includes(getDay(d));\n\t\t\t}),\n\t\t);\n\n\t\t// if no 'overlapping days' between week and month, return `acc`\n\n\t\tif (idx === firstWeekIdx || idx === lastWeekIdx) {\n\t\t\tlet inclusiveDays = [];\n\n\t\t\tif (hideAdjacentDates && type !== DateTypes.WEEK_YEAR) {\n\t\t\t\titems.push(\n\t\t\t\t\t...days.map((d) => {\n\t\t\t\t\t\tconst isInInterval = isWithinInterval(d, activeInterval);\n\n\t\t\t\t\t\tif (isInInterval) {\n\t\t\t\t\t\t\tinclusiveDays.push(d);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn isInInterval\n\t\t\t\t\t\t\t? createDateItem(\n\t\t\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\t\t\tgetDateOptions(d, isInInterval, type, isoWeek),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: {};\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tinclusiveDays = days;\n\t\t\t\titems.push(\n\t\t\t\t\t...days.map((d) => {\n\t\t\t\t\t\tconst isInInterval = isWithinInterval(d, activeInterval);\n\t\t\t\t\t\treturn createDateItem(\n\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\tgetDateOptions(d, isInInterval, type, isoWeek),\n\t\t\t\t\t\t);\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn [...acc, ...inclusiveDays];\n\t\t} else {\n\t\t\titems.push(\n\t\t\t\t...days.map((d) =>\n\t\t\t\t\tcreateDateItem(d, getDateOptions(d, true, type, isoWeek)),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\treturn [...acc, ...days];\n\t\t}\n\t}, []);\n\n\treturn {items, fullIntervalList, fullWeekendList};\n}\n\nfunction getOverlapValues(dateRef, type, flag) {\n\tswitch (type) {\n\t\tcase DateTypes.DATE:\n\t\tcase DateTypes.MONTH:\n\t\tcase DateTypes.YEAR:\n\t\tcase DateTypes.QUARTER:\n\t\tcase DateTypes.WEEK_YEAR:\n\t\t\treturn dateRef;\n\t\tdefault:\n\t\t\treturn flag === 'end' ? sub(dateRef, {days: 1}) : add(dateRef, {days: 1});\n\t}\n}\n/**\n * Given a date interval, which is an object representing dates,\n * return its overlapping dates with the full interval.\n */\nfunction getOverlapDaysOfInterval({\n\tinputDateInterval,\n\tfullInterval,\n\tformat,\n\ttype,\n\tlocale,\n\tisoWeek,\n}) {\n\tconst {start: intervalStart, end: intervalEnd} = fullInterval;\n\tconst isDateTimeFormat = type === DateTypes.DATE_TIME;\n\tconst isWeekFormat = type === DateTypes.WEEK_YEAR;\n\tlet overlapStart = intervalStart;\n\tlet overlapEnd = intervalEnd;\n\n\tif (inputDateInterval?.before) {\n\t\tconst beforeDateRef = parseTZ(\n\t\t\tinputDateInterval.before,\n\t\t\tformat,\n\t\t\tnew Date(),\n\t\t\tisWeekFormat && isoWeek\n\t\t\t\t? {weekStartsOn: 1, locale}\n\t\t\t\t: {\n\t\t\t\t\t\tlocale,\n\t\t\t\t\t},\n\t\t);\n\n\t\tif (isDateTimeFormat) beforeDateRef.setHours(0, 0, 0, 0);\n\t\tif (compareAsc(beforeDateRef, intervalStart) <= 0) return [];\n\t\tif (compareAsc(beforeDateRef, intervalEnd) <= 0) {\n\t\t\toverlapEnd = subtractFromDate(beforeDateRef, type, 1);\n\t\t}\n\t} else if (inputDateInterval?.after) {\n\t\tconst afterDateRef = parseTZ(\n\t\t\tinputDateInterval.after,\n\t\t\tformat,\n\t\t\tnew Date(),\n\t\t\tisWeekFormat && isoWeek\n\t\t\t\t? {weekStartsOn: 1, locale}\n\t\t\t\t: {\n\t\t\t\t\t\tlocale,\n\t\t\t\t\t},\n\t\t);\n\n\t\tif (isDateTimeFormat) afterDateRef.setHours(0, 0, 0, 0);\n\t\tif (compareAsc(afterDateRef, intervalEnd) >= 0) return [];\n\t\tif (compareAsc(afterDateRef, intervalStart) >= 0) {\n\t\t\toverlapStart = addToDate(afterDateRef, type, 1);\n\t\t}\n\t} else if (\n\t\t(inputDateInterval?.start && inputDateInterval?.end) ||\n\t\tinputDateInterval?.value\n\t) {\n\t\tlet startDateRef, endDateRef;\n\t\tif (inputDateInterval?.value && isWeekFormat) {\n\t\t\tstartDateRef = startOfWeek(\n\t\t\t\tparseTZ(\n\t\t\t\t\tinputDateInterval.value,\n\t\t\t\t\tformat,\n\t\t\t\t\tnew Date(),\n\t\t\t\t\tisoWeek\n\t\t\t\t\t\t? {weekStartsOn: 1, locale}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tlocale,\n\t\t\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t\tisoWeek ? {weekStartsOn: 1} : {},\n\t\t\t);\n\t\t\tendDateRef = lastDayOfWeek(\n\t\t\t\tparseTZ(\n\t\t\t\t\tinputDateInterval.value,\n\t\t\t\t\tformat,\n\t\t\t\t\tnew Date(),\n\t\t\t\t\tisoWeek\n\t\t\t\t\t\t? {weekStartsOn: 1, locale}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tlocale,\n\t\t\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t\tisoWeek ? {weekStartsOn: 1} : {},\n\t\t\t);\n\t\t} else {\n\t\t\tstartDateRef = parseTZ(\n\t\t\t\tinputDateInterval.start,\n\t\t\t\tformat,\n\t\t\t\tnew Date(),\n\t\t\t\tisoWeek && isWeekFormat\n\t\t\t\t\t? {weekStartsOn: 1, locale}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tlocale,\n\t\t\t\t\t\t},\n\t\t\t);\n\t\t\tendDateRef = isWeekFormat\n\t\t\t\t? lastDayOfWeek(\n\t\t\t\t\t\tparseTZ(\n\t\t\t\t\t\t\tinputDateInterval.end,\n\t\t\t\t\t\t\tformat,\n\t\t\t\t\t\t\tnew Date(),\n\t\t\t\t\t\t\tisoWeek\n\t\t\t\t\t\t\t\t? {weekStartsOn: 1, locale, useAdditionalWeekYearTokens: true}\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\tlocale,\n\t\t\t\t\t\t\t\t\t\tuseAdditionalWeekYearTokens: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t\tisoWeek ? {weekStartsOn: 1} : {},\n\t\t\t\t\t)\n\t\t\t\t: parseTZ(inputDateInterval.end, format, new Date(), {\n\t\t\t\t\t\tlocale,\n\t\t\t\t\t});\n\t\t}\n\n\t\tif (isDateTimeFormat) {\n\t\t\tstartDateRef.setHours(0, 0, 0, 0);\n\t\t\tendDateRef.setHours(0, 0, 0, 0);\n\t\t}\n\t\tif (\n\t\t\tstartDateRef > intervalEnd ||\n\t\t\tendDateRef < intervalStart ||\n\t\t\t(isDateTimeFormat &&\n\t\t\t\t(isEqual(startDateRef, intervalEnd) ||\n\t\t\t\t\tisEqual(endDateRef, intervalStart) ||\n\t\t\t\t\tisEqual(startDateRef, endDateRef)))\n\t\t) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (compareAsc(startDateRef, intervalStart) >= 0) {\n\t\t\toverlapStart = getOverlapValues(startDateRef, type, 'start');\n\t\t}\n\t\tif (compareAsc(endDateRef, intervalEnd) <= 0) {\n\t\t\toverlapEnd = getOverlapValues(endDateRef, type, 'end');\n\t\t}\n\t}\n\tconst overlap = [overlapStart, overlapEnd];\n\treturn getOverlapItemsPerType(overlap, type);\n}\n\n/**\n * Returns the disabled date list of an interval.\n */\nexport function getDisabledDaysOfInterval({\n\tdisabledItems,\n\tfullInterval,\n\tdisableWeekends,\n\tfullWeekendList,\n\tformat,\n\ttype,\n\tlocale,\n\tisoWeek,\n}) {\n\tlet disabledItemsList = disabledItems.reduce((acc, item) => {\n\t\tif (item?.value && type !== DateTypes.WEEK_YEAR) {\n\t\t\treturn type !== DateTypes.DATE_TIME\n\t\t\t\t? [...acc, parseTZ(item.value, format, new Date(), {locale})]\n\t\t\t\t: acc;\n\t\t}\n\t\treturn [\n\t\t\t...acc,\n\t\t\t...getOverlapDaysOfInterval({\n\t\t\t\tinputDateInterval: item,\n\t\t\t\tfullInterval,\n\t\t\t\tformat,\n\t\t\t\ttype,\n\t\t\t\tlocale,\n\t\t\t\tisoWeek,\n\t\t\t}),\n\t\t];\n\t}, []);\n\n\tif (disableWeekends) disabledItemsList.push(...fullWeekendList);\n\n\t//Remove duplicate dates\n\treturn disabledItemsList.filter(\n\t\t(date, i, array) => getIndexOfDate(date, array, DateTypes.DATE) === i,\n\t);\n}\n\n/**\n * Build items for the 'date' calendar type.\n * Return the items chunked into groups at the length of a week (7).\n */\nexport function getDateItems(dateRef, properties, {[localeContext]: locale}) {\n\tconst {\n\t\tselectedItems,\n\t\tmode,\n\t\tdisabledItems,\n\t\tformat,\n\t\tfirstDayOfWeek,\n\t\thideAdjacentDates,\n\t\ttype,\n\t\tdisableWeekends,\n\t\tweekendDays,\n\t\tallowDuplicates,\n\t\tweekdayHeadings,\n\t\tisoWeek,\n\t} = properties;\n\tconst $firstDayOfWeek =\n\t\ttype === DateTypes.WEEK_YEAR ? (isoWeek ? 1 : 0) : firstDayOfWeek;\n\tconst start = set(dateRef, {\n\t\tdate: 1,\n\t\t...StartTimeData,\n\t});\n\tconst end = set(dateRef, {\n\t\tdate: getDate(lastDayOfMonth(dateRef)),\n\t\t...EndTimeData,\n\t});\n\tconst activeInterval = {start, end};\n\n\tlet {items, fullIntervalList, fullWeekendList} = getAllDaysInWeekIntervals(\n\t\tdateRef,\n\t\tactiveInterval,\n\t\t$firstDayOfWeek,\n\t\thideAdjacentDates,\n\t\tweekendDays,\n\t\ttype,\n\t);\n\tconst fullInterval = {\n\t\tstart: fullIntervalList[0],\n\t\tend: fullIntervalList[fullIntervalList.length - 1],\n\t};\n\n\tconst fullDisabledList = getDisabledDaysOfInterval({\n\t\tdisabledItems,\n\t\tfullInterval,\n\t\tdisableWeekends,\n\t\tfullWeekendList,\n\t\tformat,\n\t\ttype,\n\t\tlocale,\n\t});\n\n\tconst firstDateIdx = items.findIndex((item) => !!item.date);\n\titems = setStates({\n\t\titems,\n\t\tfirstDateIdx,\n\t\tfullInterval,\n\t\tfullIntervalList,\n\t\tselectedItems,\n\t\tdisabledItems: fullDisabledList,\n\t\tformat,\n\t\ttype,\n\t\tlocale,\n\t\tmode,\n\t\tallowDuplicates,\n\t});\n\n\titems.unshift(...getHeadings($firstDayOfWeek, locale, weekdayHeadings));\n\tconst dateItems = [];\n\tfor (let i = 0; i < items.length; i += NUM_DAYS_IN_WEEK) {\n\t\tdateItems.push(items.slice(i, i + NUM_DAYS_IN_WEEK));\n\t}\n\treturn dateItems;\n}\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachMonthOfInterval\n * @category Interval Helpers\n * @summary Return the array of months within the specified time interval.\n *\n * @description\n * Return the array of months within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of months from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each month between 6 February 2014 and 10 August 2014:\n * var result = eachMonthOfInterval({\n *   start: new Date(2014, 1, 6),\n *   end: new Date(2014, 7, 10)\n * })\n * //=> [\n * //   Sat Feb 01 2014 00:00:00,\n * //   Sat Mar 01 2014 00:00:00,\n * //   Tue Apr 01 2014 00:00:00,\n * //   Thu May 01 2014 00:00:00,\n * //   Sun Jun 01 2014 00:00:00,\n * //   Tue Jul 01 2014 00:00:00,\n * //   Fri Aug 01 2014 00:00:00\n * // ]\n */\n\nexport default function eachMonthOfInterval(dirtyInterval) {\n  requiredArgs(1, arguments);\n  var interval = dirtyInterval || {};\n  var startDate = toDate(interval.start);\n  var endDate = toDate(interval.end);\n  var endTime = endDate.getTime();\n  var dates = []; // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n  if (!(startDate.getTime() <= endTime)) {\n    throw new RangeError('Invalid interval');\n  }\n\n  var currentDate = startDate;\n  currentDate.setHours(0, 0, 0, 0);\n  currentDate.setDate(1);\n\n  while (currentDate.getTime() <= endTime) {\n    dates.push(toDate(currentDate));\n    currentDate.setMonth(currentDate.getMonth() + 1);\n  }\n\n  return dates;\n}","import {eachMonthOfInterval, set, format as dateFnsFormat} from 'date-fns';\nimport {DateTypes, localeContext} from '@servicenow/library-date-time';\nimport {setStates} from './set-states';\nimport {createDateItem, EndTimeData, StartTimeData} from '../utils';\nimport {STANDALONE_MONTH_FORMAT, STANDALONE_MONTH_LONG_FORMAT} from '../utils';\nimport {getDisabledDaysOfInterval} from './get-date-items';\n\nexport function getMonthItems(\n\tdateRef,\n\t{\n\t\tproperties: {selectedItems, disabledItems, format, type, mode},\n\t\tcontext: {[localeContext]: locale},\n\t},\n) {\n\tconst start = set(dateRef, {\n\t\tmonth: 0,\n\t\tdate: 1,\n\t\t...StartTimeData,\n\t});\n\tconst end = set(dateRef, {\n\t\tmonth: 11,\n\t\tdate: 31,\n\t\t...EndTimeData,\n\t});\n\tconst baseInterval = {start, end};\n\tconst intervalList = eachMonthOfInterval({start, end});\n\tlet items = intervalList.map((d) =>\n\t\tcreateDateItem(d, {\n\t\t\tlabel: dateFnsFormat(d, STANDALONE_MONTH_FORMAT, {locale}),\n\t\t\ta11yLabel: dateFnsFormat(d, STANDALONE_MONTH_LONG_FORMAT, {locale}),\n\t\t}),\n\t);\n\tconst fullInterval = {\n\t\tstart: intervalList[0],\n\t\tend: intervalList[intervalList.length - 1],\n\t};\n\n\t//Disable the month/s only if the actual calendar is of the type `month`\n\tconst fullDisabledList =\n\t\ttype === DateTypes.MONTH\n\t\t\t? getDisabledDaysOfInterval({\n\t\t\t\t\tdisabledItems,\n\t\t\t\t\tfullInterval,\n\t\t\t\t\tintervalList,\n\t\t\t\t\tformat,\n\t\t\t\t\ttype,\n\t\t\t\t\tlocale,\n\t\t\t\t})\n\t\t\t: [];\n\n\titems = setStates({\n\t\titems,\n\t\tfirstDateIdx: 0,\n\t\tfullInterval: baseInterval,\n\t\tfullIntervalList: intervalList,\n\t\tselectedItems,\n\t\tdisabledItems: fullDisabledList,\n\t\tformat,\n\t\ttype: DateTypes.MONTH,\n\t\tlocale,\n\t\tmode,\n\t});\n\tconst monthItems = [];\n\tfor (let i = 0; i < items.length; i += 3) {\n\t\tmonthItems.push(items.slice(i, i + 3));\n\t}\n\treturn monthItems;\n}\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachYearOfInterval\n * @category Interval Helpers\n * @summary Return the array of yearly timestamps within the specified time interval.\n *\n * @description\n * Return the array of yearly timestamps within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of yearly timestamps from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each year between 6 February 2014 and 10 August 2017:\n * var result = eachYearOfInterval({\n *   start: new Date(2014, 1, 6),\n *   end: new Date(2017, 7, 10)\n * })\n * //=> [\n * //   Wed Jan 01 2014 00:00:00,\n * //   Thu Jan 01 2015 00:00:00,\n * //   Fri Jan 01 2016 00:00:00,\n * //   Sun Jan 01 2017 00:00:00\n * // ]\n */\n\nexport default function eachYearOfInterval(dirtyInterval) {\n  requiredArgs(1, arguments);\n  var interval = dirtyInterval || {};\n  var startDate = toDate(interval.start);\n  var endDate = toDate(interval.end);\n  var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n  if (!(startDate.getTime() <= endTime)) {\n    throw new RangeError('Invalid interval');\n  }\n\n  var dates = [];\n  var currentDate = startDate;\n  currentDate.setHours(0, 0, 0, 0);\n  currentDate.setMonth(0, 1);\n\n  while (currentDate.getTime() <= endTime) {\n    dates.push(toDate(currentDate));\n    currentDate.setFullYear(currentDate.getFullYear() + 1);\n  }\n\n  return dates;\n}","import {set, eachYearOfInterval, getYear} from 'date-fns';\nimport {DateTypes, localeContext} from '@servicenow/library-date-time';\nimport {setStates} from './set-states';\nimport {createDateItem, EndTimeData, StartTimeData} from '../utils';\nimport {getDisabledDaysOfInterval} from './get-date-items';\n\nconst today = new Date();\nconst currentYear = getYear(today);\n\nexport function getYearItems({\n\tproperties: {selectedItems, disabledItems, format, type, mode, yearRange},\n\tcontext: {[localeContext]: locale},\n}) {\n\tconst baseInterval = {\n\t\tstart: set(today, {\n\t\t\tyear: yearRange?.relative\n\t\t\t\t? currentYear + yearRange.start\n\t\t\t\t: yearRange.start,\n\t\t\tmonth: 0,\n\t\t\tdate: 1,\n\t\t\t...StartTimeData,\n\t\t}),\n\t\tend: set(today, {\n\t\t\tyear: yearRange?.relative ? currentYear + yearRange.end : yearRange.end,\n\t\t\tmonth: 11,\n\t\t\tdate: 31,\n\t\t\t...EndTimeData,\n\t\t}),\n\t};\n\n\tconst intervalList = eachYearOfInterval(baseInterval);\n\tlet items = intervalList.map((d) => createDateItem(d, {label: getYear(d)}));\n\tconst fullInterval = {\n\t\tstart: intervalList[0],\n\t\tend: intervalList[intervalList.length - 1],\n\t};\n\n\t//Disable the year/s only if the actual calendar is of the type `year`\n\tconst fullDisabledList =\n\t\ttype === DateTypes.YEAR\n\t\t\t? getDisabledDaysOfInterval({\n\t\t\t\t\tdisabledItems,\n\t\t\t\t\tfullInterval,\n\t\t\t\t\tintervalList,\n\t\t\t\t\tformat,\n\t\t\t\t\ttype,\n\t\t\t\t\tlocale,\n\t\t\t\t})\n\t\t\t: [];\n\titems = setStates({\n\t\titems,\n\t\tfirstDateIdx: 0,\n\t\tfullInterval: baseInterval,\n\t\tfullIntervalList: intervalList,\n\t\tselectedItems,\n\t\tdisabledItems: fullDisabledList,\n\t\tformat,\n\t\ttype: DateTypes.YEAR,\n\t\tlocale,\n\t\tmode,\n\t});\n\n\tconst yearItems = [];\n\tfor (let i = 0; i < items.length; i += 4) {\n\t\tyearItems.push(items.slice(i, i + 4));\n\t}\n\treturn yearItems;\n}\n","import {\n\teachWeekOfInterval,\n\tset,\n\tgetWeek,\n\tgetDate,\n\tlastDayOfMonth,\n\tgetISOWeek,\n} from 'date-fns';\nimport {DateTypes, localeContext} from '@servicenow/library-date-time';\nimport {setStates} from './set-states';\nimport {\n\tcreateDateItem,\n\tEndTimeData,\n\tStartTimeData,\n\tItemStateTypes,\n} from '../utils';\nimport {\n\tgetDisabledDaysOfInterval,\n\tgetAllDaysInWeekIntervals,\n\tgetHeadings,\n} from './get-date-items';\nimport {t} from 'sn-translate';\n\nconst {SELECTED, ADJACENT, TWEEN, DISABLED, NOW} = ItemStateTypes;\nconst NUM_DAYS_IN_WEEK = 7;\n\nexport function createWeekColumn(\n\titem,\n\tlocale,\n\tfirstDayOfWeek,\n\tdisableEntireWeek,\n\tisoWeek,\n) {\n\tconst dateItem = createDateItem(item.date, {\n\t\tlabel: isoWeek\n\t\t\t? getISOWeek(item.date)\n\t\t\t: getWeek(item.date, {\n\t\t\t\t\tweekStartsOn: firstDayOfWeek,\n\t\t\t\t\tlocale: locale,\n\t\t\t\t}),\n\t\ta11yLabel: isoWeek\n\t\t\t? `${t('Week')} ${getISOWeek(item.date)}. ${t('Starting ')} ${\n\t\t\t\t\titem.a11yLabel\n\t\t\t\t}`\n\t\t\t: `${t('Week')} ${getWeek(item.date, {\n\t\t\t\t\tweekStartsOn: firstDayOfWeek,\n\t\t\t\t\tlocale: locale,\n\t\t\t\t})}. ${t('Starting ')} ${item.a11yLabel}`,\n\t\tweek: true,\n\t\t[SELECTED]: item.selected,\n\t\t[ADJACENT]: item.adjacent,\n\t\t[NOW]: item.now,\n\t\t[TWEEN]: item.tween,\n\t\t[DISABLED]: disableEntireWeek,\n\t});\n\titem.selected = false; //week number and the adjacent date gets selected, so select only the week number\n\titem.now = false; //'now' gets added to the week number and the first day of the current week, so add 'now' to only the week number\n\treturn dateItem;\n}\nfunction getFirstDayOfWeek(type, firstDayOfWeek, isoWeek) {\n\tif (type === DateTypes.WEEK_YEAR) {\n\t\treturn isoWeek ? 1 : 0; // For ISO week, keep Monday as first day of the week\n\t}\n\treturn firstDayOfWeek;\n}\nexport function getWeekItems(\n\tdateRef,\n\t{\n\t\tproperties: {\n\t\t\tselectedItems,\n\t\t\tdisabledItems,\n\t\t\tformat,\n\t\t\ttype,\n\t\t\tmode,\n\t\t\tfirstDayOfWeek,\n\t\t\thideAdjacentDates,\n\t\t\tweekendDays,\n\t\t\tweekdayHeadings,\n\t\t\tdisableWeekends,\n\t\t\tisoWeek,\n\t\t},\n\t\tcontext: {[localeContext]: locale},\n\t},\n) {\n\t// ignore firstDayOfWeek for type week-year\n\tconst $firstDayOfWeek = getFirstDayOfWeek(type, firstDayOfWeek, isoWeek);\n\tconst start = set(dateRef, {\n\t\tdate: 1,\n\t\t...StartTimeData,\n\t});\n\tconst end = set(dateRef, {\n\t\tdate: getDate(lastDayOfMonth(dateRef)),\n\t\t...EndTimeData,\n\t});\n\tconst baseInterval = {start, end};\n\n\tlet {items, fullIntervalList, fullWeekendList} = getAllDaysInWeekIntervals(\n\t\tdateRef,\n\t\tbaseInterval,\n\t\t$firstDayOfWeek,\n\t\thideAdjacentDates,\n\t\tweekendDays,\n\t\ttype,\n\t\tisoWeek,\n\t);\n\n\tconst fullInterval = {\n\t\tstart: fullIntervalList[0],\n\t\tend: fullIntervalList[fullIntervalList.length - 1],\n\t};\n\n\tconst fullDisabledList = getDisabledDaysOfInterval({\n\t\tdisabledItems,\n\t\tfullInterval,\n\t\tdisableWeekends,\n\t\tfullWeekendList,\n\t\tformat,\n\t\ttype,\n\t\tlocale,\n\t\tisoWeek,\n\t});\n\n\titems = setStates({\n\t\titems,\n\t\tfirstDateIdx: 0,\n\t\tfullInterval,\n\t\tfullIntervalList,\n\t\tselectedItems,\n\t\tdisabledItems: fullDisabledList,\n\t\tformat,\n\t\ttype: DateTypes.WEEK_YEAR,\n\t\tlocale,\n\t\tmode,\n\t\tisoWeek,\n\t});\n\n\tconst weeksInMonth = eachWeekOfInterval(baseInterval, {\n\t\tweekStartsOn: $firstDayOfWeek,\n\t});\n\n\t//Group items based on the week number\n\tconst groupItemsByWeek = items.reduce((group, arr) => {\n\t\tconst {week} = arr;\n\t\tgroup[week] = group[week] ?? [];\n\t\tif (arr.disabled) group[week].push(arr);\n\t\treturn group;\n\t}, {});\n\n\titems.unshift(...getHeadings($firstDayOfWeek, locale, weekdayHeadings, type));\n\n\tconst dateItems = [];\n\tfor (let i = 0; i < items.length; i += 8) {\n\t\tif (i === 0) {\n\t\t\tdateItems.push(items.slice(i, i + 8));\n\t\t\tcontinue;\n\t\t}\n\t\tweeksInMonth.find((week) => {\n\t\t\tif (week.getTime() === items[i].date.getTime()) {\n\t\t\t\tconst getDisabledItemsInWeek = groupItemsByWeek[items[i].week];\n\t\t\t\tconst disableEntireWeek =\n\t\t\t\t\tgetDisabledItemsInWeek.length === NUM_DAYS_IN_WEEK;\n\t\t\t\titems.splice(\n\t\t\t\t\ti,\n\t\t\t\t\t0,\n\t\t\t\t\tcreateWeekColumn(\n\t\t\t\t\t\titems[i],\n\t\t\t\t\t\tlocale,\n\t\t\t\t\t\t$firstDayOfWeek,\n\t\t\t\t\t\tdisableEntireWeek,\n\t\t\t\t\t\tisoWeek,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t});\n\t\tdateItems.push(items.slice(i, i + 8));\n\t}\n\treturn dateItems;\n}\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar patterns = {\n  dateTimeDelimiter: /[T ]/,\n  timeZoneDelimiter: /[Z ]/i,\n  timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   parse('2016-01-01')\n *\n *   // v2.0.0 onward\n *   parseISO('2016-01-01')\n *   ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n *   and returns `Invalid Date` if the date is invalid.\n *\n *   ```javascript\n *   parseISO('2018-13-32')\n *   //=> Invalid Date\n *   ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n *   if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n\n  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2');\n  }\n\n  if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n    return new Date(NaN);\n  }\n\n  var dateStrings = splitDateString(argument);\n  var date;\n\n  if (dateStrings.date) {\n    var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n    date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n  }\n\n  if (isNaN(date) || !date) {\n    return new Date(NaN);\n  }\n\n  var timestamp = date.getTime();\n  var time = 0;\n  var offset;\n\n  if (dateStrings.time) {\n    time = parseTime(dateStrings.time);\n\n    if (isNaN(time) || time === null) {\n      return new Date(NaN);\n    }\n  }\n\n  if (dateStrings.timezone) {\n    offset = parseTimezone(dateStrings.timezone);\n\n    if (isNaN(offset)) {\n      return new Date(NaN);\n    }\n  } else {\n    var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n    // but we need it to be parsed in our timezone\n    // so we use utc values to build date in our timezone.\n    // Year values from 0 to 99 map to the years 1900 to 1999\n    // so set year explicitly with setFullYear.\n\n    var result = new Date(0);\n    result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n    result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n    return result;\n  }\n\n  return new Date(timestamp + time + offset);\n}\n\nfunction splitDateString(dateString) {\n  var dateStrings = {};\n  var array = dateString.split(patterns.dateTimeDelimiter);\n  var timeString; // The regex match should only return at maximum two array elements.\n  // [date], [time], or [date, time].\n\n  if (array.length > 2) {\n    return dateStrings;\n  }\n\n  if (/:/.test(array[0])) {\n    dateStrings.date = null;\n    timeString = array[0];\n  } else {\n    dateStrings.date = array[0];\n    timeString = array[1];\n\n    if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n      dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n      timeString = dateString.substr(dateStrings.date.length, dateString.length);\n    }\n  }\n\n  if (timeString) {\n    var token = patterns.timezone.exec(timeString);\n\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], '');\n      dateStrings.timezone = token[1];\n    } else {\n      dateStrings.time = timeString;\n    }\n  }\n\n  return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n  var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n  var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n  if (!captures) return {\n    year: null\n  };\n  var year = captures[1] && parseInt(captures[1]);\n  var century = captures[2] && parseInt(captures[2]);\n  return {\n    year: century == null ? year : century * 100,\n    restDateString: dateString.slice((captures[1] || captures[2]).length)\n  };\n}\n\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) return null;\n  var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n  if (!captures) return null;\n  var isWeekDate = !!captures[4];\n  var dayOfYear = parseDateUnit(captures[1]);\n  var month = parseDateUnit(captures[2]) - 1;\n  var day = parseDateUnit(captures[3]);\n  var week = parseDateUnit(captures[4]);\n  var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n  if (isWeekDate) {\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN);\n    }\n\n    return dayOfISOWeekYear(year, week, dayOfWeek);\n  } else {\n    var date = new Date(0);\n\n    if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN);\n    }\n\n    date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n    return date;\n  }\n}\n\nfunction parseDateUnit(value) {\n  return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n  var captures = timeString.match(timeRegex);\n  if (!captures) return null; // Invalid ISO-formatted time\n\n  var hours = parseTimeUnit(captures[1]);\n  var minutes = parseTimeUnit(captures[2]);\n  var seconds = parseTimeUnit(captures[3]);\n\n  if (!validateTime(hours, minutes, seconds)) {\n    return NaN;\n  }\n\n  return hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n  return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n  if (timezoneString === 'Z') return 0;\n  var captures = timezoneString.match(timezoneRegex);\n  if (!captures) return 0;\n  var sign = captures[1] === '+' ? -1 : 1;\n  var hours = parseInt(captures[2]);\n  var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n  if (!validateTimezone(hours, minutes)) {\n    return NaN;\n  }\n\n  return sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  var date = new Date(0);\n  date.setUTCFullYear(isoWeekYear, 0, 4);\n  var fourthOfJanuaryDay = date.getUTCDay() || 7;\n  var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100;\n}\n\nfunction validateDate(year, month, date) {\n  return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n  return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n  return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n  if (hours === 24) {\n    return minutes === 0 && seconds === 0;\n  }\n\n  return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n  return minutes >= 0 && minutes <= 59;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\n\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  var months = amount * 3;\n  return addMonths(dirtyDate, months);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\n\nexport default function startOfQuarter(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var currentMonth = date.getMonth();\n  var month = currentMonth - currentMonth % 3;\n  date.setMonth(month, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import addQuarters from \"../addQuarters/index.js\";\nimport startOfQuarter from \"../startOfQuarter/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachQuarterOfInterval\n * @category Interval Helpers\n * @summary Return the array of quarters within the specified time interval.\n *\n * @description\n * Return the array of quarters within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of quarters from the quarter of the interval start to the quarter of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each quarter within interval 6 February 2014 - 10 August 2014:\n * var result = eachQuarterOfInterval({\n *   start: new Date(2014, 1, 6),\n *   end: new Date(2014, 7, 10)\n * })\n * //=> [\n * //   Wed Jan 01 2014 00:00:00,\n * //   Tue Apr 01 2014 00:00:00,\n * //   Tue Jul 01 2014 00:00:00,\n * // ]\n */\n\nexport default function eachQuarterOfInterval(dirtyInterval) {\n  requiredArgs(1, arguments);\n  var interval = dirtyInterval || {};\n  var startDate = toDate(interval.start);\n  var endDate = toDate(interval.end);\n  var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n  if (!(startDate.getTime() <= endTime)) {\n    throw new RangeError('Invalid interval');\n  }\n\n  var startDateQuarter = startOfQuarter(startDate);\n  var endDateQuarter = startOfQuarter(endDate);\n  endTime = endDateQuarter.getTime();\n  var quarters = [];\n  var currentQuarter = startDateQuarter;\n\n  while (currentQuarter.getTime() <= endTime) {\n    quarters.push(toDate(currentQuarter));\n    currentQuarter = addQuarters(currentQuarter, 1);\n  }\n\n  return quarters;\n}","import {eachQuarterOfInterval, set, format as dateFnsFormat} from 'date-fns';\nimport {DateTypes, localeContext} from '@servicenow/library-date-time';\nimport {setStates} from './set-states';\nimport {createDateItem, EndTimeData, StartTimeData} from '../utils';\nimport {\n\tSTANDALONE_QUARTER_FORMAT,\n\tSTANDALONE_QUARTER_LONG_FORMAT,\n} from '../utils';\nimport {getDisabledDaysOfInterval} from './get-date-items';\n\nexport function getQuarterItems(\n\tdateRef,\n\t{\n\t\tproperties: {selectedItems, disabledItems, format, type, mode},\n\t\tcontext: {[localeContext]: locale},\n\t},\n) {\n\tconst start = set(dateRef, {\n\t\tmonth: 0,\n\t\tdate: 1,\n\t\t...StartTimeData,\n\t});\n\tconst end = set(dateRef, {\n\t\tmonth: 11,\n\t\tdate: 31,\n\t\t...EndTimeData,\n\t});\n\tconst baseInterval = {start, end};\n\tconst intervalList = eachQuarterOfInterval({start, end});\n\tlet items = intervalList.map((d) =>\n\t\tcreateDateItem(d, {\n\t\t\tlabel: dateFnsFormat(d, STANDALONE_QUARTER_FORMAT, {locale}),\n\t\t\ta11yLabel: dateFnsFormat(d, STANDALONE_QUARTER_LONG_FORMAT, {locale}),\n\t\t}),\n\t);\n\tconst fullInterval = {\n\t\tstart: intervalList[0],\n\t\tend: intervalList[intervalList.length - 1],\n\t};\n\n\tconst fullDisabledList = getDisabledDaysOfInterval({\n\t\tdisabledItems,\n\t\tfullInterval,\n\t\tintervalList,\n\t\tformat,\n\t\ttype,\n\t\tlocale,\n\t});\n\n\titems = setStates({\n\t\titems,\n\t\tfirstDateIdx: 0,\n\t\tfullInterval: baseInterval,\n\t\tfullIntervalList: intervalList,\n\t\tselectedItems,\n\t\tdisabledItems: fullDisabledList,\n\t\tformat,\n\t\ttype: DateTypes.QUARTER,\n\t\tlocale,\n\t\tmode,\n\t});\n\tconst quarterItems = [];\n\tfor (let i = 0; i < items.length; i += 4) {\n\t\tquarterItems.push(items.slice(i, i + 4));\n\t}\n\treturn quarterItems;\n}\n","import {parseISO, compareAsc} from 'date-fns';\nimport {DateTypes, localeContext, parseTZ} from '@servicenow/library-date-time';\nimport {DateActions} from '../utils';\nimport {getDateItems} from './get-date-items';\nimport {getMonthItems} from './get-month-items';\nimport {getWeekItems} from './get-week-items';\nimport {getYearItems} from './get-year-items';\nimport {getQuarterItems} from './get-quarter-items';\n\nfunction sortDates(a, b) {\n\treturn compareAsc(parseISO(a), parseISO(b));\n}\nfunction getDateFromRange(\n\tselectedItems,\n\trangeInitiator,\n\tformat,\n\tlocale,\n\tisoWeek,\n) {\n\t// if we only have a single item, or we're coming from start input (for interval) then take first item\n\t// else we have two items and we're coming from end input (for interval) then take the last item\n\tif (selectedItems.length === 1 || rangeInitiator === 'start') {\n\t\treturn parseTZ(selectedItems.sort(sortDates)[0], format, new Date(), {\n\t\t\tlocale,\n\t\t\tweekStartsOn: isoWeek ? 1 : 0,\n\t\t});\n\t}\n\treturn parseTZ(selectedItems.sort(sortDates)[1], format, new Date(), {\n\t\tlocale,\n\t});\n}\n\n/**\n * Given a configured `type`, returns a new `items` collection\n * to render in the date portion of the calendar.\n *\n * Can be used in one of two ways:\n * - Given an actionType, calls a predefined handler to create a\n *   specific Date reference.\n * - If there are selected dates given but no actions, then\n *   display the earliest selected item.\n * - If no actionType, returns items based on the current date.\n *\n * @param {Object} properties\n * @param {string} action\n * @param {*[]} actionArgs\n * @returns {[]}\n */\nexport function itemsReducer(properties, context, actionType, ...actionArgs) {\n\tconst {selectedItems, type, format, rangeInitiator, isoWeek} = properties;\n\tconst {[localeContext]: locale} = context;\n\tlet items, date;\n\tdate = new Date();\n\n\tif (DateTypes.YEAR === type) {\n\t\titems = getYearItems({properties, context});\n\t} else {\n\t\tif (actionType) {\n\t\t\tconst actionHandler = DateActions[actionType];\n\t\t\tconst paginatedDate = actionHandler(...actionArgs);\n\t\t\tdate = paginatedDate;\n\t\t} else if (properties?.focusDate) {\n\t\t\tdate = properties.focusDate;\n\t\t} else if (selectedItems.length) {\n\t\t\tdate = getDateFromRange(\n\t\t\t\tselectedItems,\n\t\t\t\trangeInitiator,\n\t\t\t\tformat,\n\t\t\t\tlocale,\n\t\t\t\tisoWeek,\n\t\t\t);\n\t\t} else {\n\t\t\tdate = new Date();\n\t\t}\n\n\t\tif ([DateTypes.DATE, DateTypes.DATE_TIME].includes(type)) {\n\t\t\titems = getDateItems(date, properties, context);\n\t\t} else if (DateTypes.MONTH === type) {\n\t\t\titems = getMonthItems(date, {properties, context});\n\t\t} else if (DateTypes.QUARTER === type) {\n\t\t\titems = getQuarterItems(date, {properties, context});\n\t\t} else if (DateTypes.WEEK_YEAR === type) {\n\t\t\titems = getWeekItems(date, {properties, context});\n\t\t}\n\t}\n\n\treturn items;\n}\n","import {\n\tgetYear,\n\tgetMonth,\n\tisBefore,\n\tcompareAsc,\n\tgetWeek,\n\tgetQuarter,\n} from 'date-fns';\n\nimport {isEmpty} from 'lodash';\nimport {getDateRef} from '../utils';\nimport {\n\tDateActionTypes,\n\tItemStateTypes,\n\tKeys,\n\tCALENDAR_DATE_LONG_FORMAT,\n\tCALENDAR_LABEL_FORMAT,\n\tSTANDALONE_YEAR_FORMAT,\n\tCALENDAR_QUARTER_LONG_FORMAT,\n\tSTANDALONE_WEEK_YEAR_FORMAT,\n} from './constants';\nimport {\n\tDateTypes,\n\tlocaleContext,\n\ttimezoneContext,\n\tparseTZ,\n\tformatTZ,\n} from '@servicenow/library-date-time';\nimport {\n\tisDirectionalKey,\n\tisPreviousKey,\n\tisNextKey,\n} from '@servicenow/library-enhanced-utils';\nimport {itemsReducer} from '../reducers';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {t} from 'sn-translate';\nconst {ARIA_LIVE_REGION_UPDATE_REQUESTED} = actionTypes;\n\nconst {ADJACENT} = ItemStateTypes;\n\nfunction applyTime(date, timeRef) {\n\tif (!timeRef) return date;\n\n\tdate.setHours(\n\t\ttimeRef.getHours(),\n\t\ttimeRef.getMinutes(),\n\t\ttimeRef.getSeconds(),\n\t\ttimeRef.getMilliseconds(),\n\t);\n\n\treturn date;\n}\n\nfunction handleZeroSelectedItems(\n\tselectedDate,\n\tariaMessageType,\n\t{context, properties, state},\n) {\n\tconst {timeRefStart, timeRefEnd} = state;\n\tconst {format, rangeInitiator} = properties;\n\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\tlet updatedStart = undefined,\n\t\tupdatedEnd = undefined;\n\tconst dateFormat = getDateAnnouncementFormat(ariaMessageType);\n\tconst updatedSelectedItems = [];\n\tlet ariaLiveMessage = '';\n\n\tif (rangeInitiator === 'start') {\n\t\t// new ranged started; set the start value\n\t\tupdatedStart = applyTime(selectedDate, timeRefStart);\n\n\t\tupdatedSelectedItems.push(\n\t\t\tformatTZ(updatedStart, format, {locale, timezone}),\n\t\t\tundefined,\n\t\t);\n\t\tariaLiveMessage = t(\n\t\t\t`Start ${ariaMessageType} selected is {0}. Select an end ${ariaMessageType}.`,\n\t\t\tformatTZ(updatedStart, dateFormat, {locale, timezone}),\n\t\t);\n\t} else {\n\t\t// new ranged started; set the end value\n\t\tupdatedEnd = applyTime(selectedDate, timeRefEnd);\n\n\t\tupdatedSelectedItems.push(\n\t\t\tundefined,\n\t\t\tformatTZ(updatedEnd, format, {locale, timezone}),\n\t\t);\n\t\tariaLiveMessage = t(\n\t\t\t`End ${ariaMessageType} selected is {0}. Select a start ${ariaMessageType}.`,\n\t\t\tformatTZ(updatedEnd, dateFormat, {locale, timezone}),\n\t\t);\n\t}\n\treturn {\n\t\titems: updatedSelectedItems,\n\t\tmessage: ariaLiveMessage,\n\t};\n}\n\nfunction handleOneSelectedItems(\n\tselectedDate,\n\tariaMessageType,\n\t{context, properties, state},\n) {\n\tconst {timeRefStart, timeRefEnd} = state;\n\tconst {format, rangeInitiator, selectedItems, allowDuplicates} = properties;\n\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\tlet updatedStart = undefined,\n\t\tupdatedEnd = undefined,\n\t\tstartDate,\n\t\tendDate;\n\tconst dateFormat = getDateAnnouncementFormat(ariaMessageType);\n\tconst updatedSelectedItems = [];\n\tlet ariaLiveMessage = '';\n\tconst initial = parseTZ(selectedItems[0], format, new Date(), {locale});\n\n\tif (compareAsc(initial, selectedDate) === 0 && !allowDuplicates) return;\n\n\tif (rangeInitiator === 'start') {\n\t\tif (\n\t\t\tcompareAsc(selectedDate, initial) === 1 ||\n\t\t\t(allowDuplicates && compareAsc(selectedDate, initial) === 0)\n\t\t) {\n\t\t\t// new range; selected item is AFTER existing start value\n\t\t\tupdatedEnd = applyTime(selectedDate, timeRefEnd);\n\n\t\t\tupdatedSelectedItems.push(\n\t\t\t\tformatTZ(applyTime(initial, timeRefStart), format, {locale, timezone}),\n\t\t\t\tformatTZ(updatedEnd, format, {locale, timezone}),\n\t\t\t);\n\t\t\tariaLiveMessage = t(\n\t\t\t\t`End ${ariaMessageType} selected is {0}.`,\n\t\t\t\tformatTZ(updatedEnd, dateFormat, {locale, timezone}),\n\t\t\t);\n\t\t} else {\n\t\t\t// new range; selected item is BEFORE existing start value; swap start and end\n\t\t\tendDate = selectedItems[0];\n\t\t\tendDate = parseTZ(endDate, format, new Date(), {locale});\n\t\t\tupdatedStart = applyTime(selectedDate, timeRefStart);\n\t\t\tupdatedEnd = applyTime(endDate, timeRefEnd);\n\n\t\t\tupdatedSelectedItems.push(\n\t\t\t\tformatTZ(updatedStart, format, {locale, timezone}),\n\t\t\t\tformatTZ(updatedEnd, format, {locale, timezone}),\n\t\t\t);\n\t\t\tariaLiveMessage = t(\n\t\t\t\t`Start ${ariaMessageType} selected is {0}. End ${ariaMessageType} selected is {1}.`,\n\t\t\t\tformatTZ(updatedStart, dateFormat, {locale, timezone}),\n\t\t\t\tformatTZ(updatedEnd, dateFormat, {locale, timezone}),\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (\n\t\t\tcompareAsc(initial, selectedDate) === 1 ||\n\t\t\t(allowDuplicates && compareAsc(initial, selectedDate) === 0)\n\t\t) {\n\t\t\t// new range; selected item is BEFORE end value\n\t\t\tupdatedStart = applyTime(selectedDate, timeRefStart);\n\n\t\t\tupdatedSelectedItems.push(\n\t\t\t\tformatTZ(updatedStart, format, {locale, timezone}),\n\t\t\t\tformatTZ(applyTime(initial, timeRefEnd), format, {locale, timezone}),\n\t\t\t);\n\t\t\tariaLiveMessage = t(\n\t\t\t\t`Start ${ariaMessageType} selected is {0}`,\n\t\t\t\tformatTZ(updatedStart, dateFormat, {locale, timezone}),\n\t\t\t);\n\t\t} else {\n\t\t\t// new range; selected item is AFTER end value; swap start and end\n\t\t\tstartDate = selectedItems[0];\n\t\t\tstartDate = parseTZ(startDate, format, new Date(), {locale});\n\t\t\tupdatedStart = applyTime(startDate, timeRefStart);\n\t\t\tupdatedEnd = applyTime(selectedDate, timeRefEnd);\n\n\t\t\tupdatedSelectedItems.push(\n\t\t\t\tformatTZ(updatedStart, format, {locale, timezone}),\n\t\t\t\tformatTZ(updatedEnd, format, {locale, timezone}),\n\t\t\t);\n\t\t\tariaLiveMessage = t(\n\t\t\t\t`End ${ariaMessageType} selected is {0}. Start ${ariaMessageType} selected is {1}.`,\n\t\t\t\tformatTZ(updatedEnd, dateFormat, {locale, timezone}),\n\t\t\t\tformatTZ(updatedStart, dateFormat, {locale, timezone}),\n\t\t\t);\n\t\t}\n\t}\n\treturn {\n\t\titems: updatedSelectedItems,\n\t\tmessage: ariaLiveMessage,\n\t};\n}\n\nfunction handleManySelectedItems(\n\tselectedDate,\n\tariaMessageType,\n\t{context, properties, state},\n) {\n\tconst {timeRefStart, timeRefEnd} = state;\n\tconst {format, rangeInitiator, selectedItems, allowDuplicates} = properties;\n\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\tlet updatedStart, updatedEnd, start, end;\n\tconst dateFormat = getDateAnnouncementFormat(ariaMessageType);\n\tconst updatedSelectedItems = [];\n\tlet ariaLiveMessage = '';\n\n\tif (rangeInitiator === 'start') {\n\t\tend = parseTZ(selectedItems[1], format, new Date(), {locale});\n\t\tupdatedStart = applyTime(selectedDate, timeRefStart);\n\n\t\tif (\n\t\t\tcompareAsc(end, selectedDate) === 1 ||\n\t\t\t(compareAsc(end, selectedDate) === 0 && allowDuplicates)\n\t\t) {\n\t\t\t// existing range; selected item is BEFORE end value\n\t\t\tupdatedSelectedItems.push(\n\t\t\t\tformatTZ(updatedStart, format, {locale, timezone}),\n\t\t\t\tformatTZ(applyTime(end, timeRefEnd), format, {locale, timezone}),\n\t\t\t);\n\t\t\tariaLiveMessage = t(\n\t\t\t\t`Start ${ariaMessageType} selected is {0}.`,\n\t\t\t\tformatTZ(updatedStart, dateFormat, {locale, timezone}),\n\t\t\t);\n\t\t} else {\n\t\t\t// existing range; selected item is AFTER end value, set new start value, zero end value\n\t\t\tupdatedSelectedItems.push(\n\t\t\t\tformatTZ(updatedStart, format, {locale, timezone}),\n\t\t\t\tundefined,\n\t\t\t);\n\t\t\tariaLiveMessage = t(\n\t\t\t\t`Start ${ariaMessageType} selected is {0}. Select an end ${ariaMessageType}.`,\n\t\t\t\tformatTZ(updatedStart, dateFormat, {locale, timezone}),\n\t\t\t);\n\t\t}\n\t} else {\n\t\tstart = parseTZ(selectedItems[0], format, new Date(), {locale});\n\t\tupdatedEnd = applyTime(selectedDate, timeRefEnd);\n\n\t\tif (\n\t\t\tcompareAsc(selectedDate, start) === 1 ||\n\t\t\t(compareAsc(selectedDate, start) === 0 && allowDuplicates)\n\t\t) {\n\t\t\t// existing range; selected item is AFTER start value\n\t\t\tupdatedSelectedItems.push(\n\t\t\t\tformatTZ(applyTime(start, timeRefStart), format, {locale, timezone}),\n\t\t\t\tformatTZ(updatedEnd, format, {locale, timezone}),\n\t\t\t);\n\t\t\tariaLiveMessage = t(\n\t\t\t\t`End ${ariaMessageType} selected is {0}`,\n\t\t\t\tformatTZ(updatedEnd, dateFormat, {locale, timezone}),\n\t\t\t);\n\t\t} else {\n\t\t\tupdatedSelectedItems.push(\n\t\t\t\tundefined,\n\t\t\t\tformatTZ(updatedEnd, format, {locale, timezone}),\n\t\t\t);\n\t\t\tariaLiveMessage = t(\n\t\t\t\t`End ${ariaMessageType} selected is {0}. Select a start ${ariaMessageType}.`,\n\t\t\t\tformatTZ(updatedEnd, dateFormat, {locale, timezone}),\n\t\t\t);\n\t\t}\n\t}\n\treturn {\n\t\titems: updatedSelectedItems,\n\t\tmessage: ariaLiveMessage,\n\t};\n}\n\nfunction handleRangeSelection(\n\tselectedDate,\n\tariaMessageType,\n\t{context, properties, state, dispatch},\n) {\n\tconst {selectedItems} = properties;\n\tlet result;\n\n\tswitch (selectedItems.length) {\n\t\tcase 0:\n\t\t\tresult = handleZeroSelectedItems(selectedDate, ariaMessageType, {\n\t\t\t\tcontext,\n\t\t\t\tstate,\n\t\t\t\tproperties,\n\t\t\t\tdispatch,\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tresult = handleOneSelectedItems(selectedDate, ariaMessageType, {\n\t\t\t\tcontext,\n\t\t\t\tstate,\n\t\t\t\tproperties,\n\t\t\t\tdispatch,\n\t\t\t});\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tresult = handleManySelectedItems(selectedDate, ariaMessageType, {\n\t\t\t\tcontext,\n\t\t\t\tstate,\n\t\t\t\tproperties,\n\t\t\t\tdispatch,\n\t\t\t});\n\t}\n\n\tif (!result) return;\n\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: result.message,\n\t\ttype: 'polite',\n\t});\n\n\tdispatch('NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET', {\n\t\tvalue: result.items,\n\t});\n}\n\nfunction getDateAnnouncementFormat(type) {\n\tlet dateAnnounceFormat;\n\tswitch (type) {\n\t\tcase DateTypes.MONTH:\n\t\t\tdateAnnounceFormat = CALENDAR_LABEL_FORMAT;\n\t\t\tbreak;\n\t\tcase DateTypes.YEAR:\n\t\t\tdateAnnounceFormat = STANDALONE_YEAR_FORMAT;\n\t\t\tbreak;\n\t\tcase DateTypes.QUARTER:\n\t\t\tdateAnnounceFormat = CALENDAR_QUARTER_LONG_FORMAT;\n\t\t\tbreak;\n\t\tcase DateTypes.WEEK_YEAR:\n\t\t\tdateAnnounceFormat = STANDALONE_WEEK_YEAR_FORMAT;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tdateAnnounceFormat = CALENDAR_DATE_LONG_FORMAT;\n\t\t\tbreak;\n\t}\n\treturn dateAnnounceFormat;\n}\n\nfunction announceSelectedDate(date, dispatch, {locale, timezone}, type) {\n\tconst dateLongFormat = formatTZ(date, getDateAnnouncementFormat(type), {\n\t\tlocale,\n\t\ttimezone,\n\t});\n\n\tlet announceMessage = t(`Date selected is {0}`, dateLongFormat);\n\n\tif (type === DateTypes.WEEK_YEAR) {\n\t\tconst weekLongFormat = formatTZ(date, CALENDAR_DATE_LONG_FORMAT, {\n\t\t\tlocale,\n\t\t\ttimezone,\n\t\t});\n\t\tannounceMessage = t(\n\t\t\t`Week {0}, starting on {1}`,\n\t\t\tdateLongFormat,\n\t\t\tweekLongFormat,\n\t\t);\n\t}\n\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announceMessage,\n\t\ttype: 'polite',\n\t});\n}\n\nfunction handleDateClick(date, {dispatch, context, state, properties}) {\n\tconst {timeRef} = state;\n\tconst {format, mode} = properties;\n\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\n\tif (mode === 'standard') {\n\t\tconst updatedDate = applyTime(date, timeRef);\n\t\tannounceSelectedDate(updatedDate, dispatch, locale);\n\n\t\treturn dispatch('NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET', {\n\t\t\tvalue: [formatTZ(updatedDate, format, {locale, timezone})],\n\t\t});\n\t}\n\n\thandleRangeSelection(date, 'date', {\n\t\tcontext,\n\t\tstate,\n\t\tproperties,\n\t\tdispatch,\n\t});\n}\n\nfunction handleYearClick(\n\tselectedDate,\n\t{updateState, dispatch, context, state, properties},\n\tdismissOnSelect,\n) {\n\tconst {mode, type} = properties;\n\tif (dismissOnSelect) {\n\t\tupdateState({activeType: null});\n\t}\n\n\tif (mode === 'standard' || type !== DateTypes.YEAR) {\n\t\tconst year = getYear(selectedDate);\n\t\treturn dispatch(({properties}) => {\n\t\t\tconst {items, type} = properties;\n\t\t\tconst {date: activeDateRef} = getDateRef(items, type);\n\t\t\tconst {format} = properties;\n\t\t\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\t\t\tconst value = itemsReducer(\n\t\t\t\tproperties,\n\t\t\t\tcontext,\n\t\t\t\tDateActionTypes.TO_YEAR,\n\t\t\t\tactiveDateRef,\n\t\t\t\tyear,\n\t\t\t);\n\t\t\tannounceSelectedDate(selectedDate, dispatch, {locale, timezone}, 'year');\n\t\t\tif (properties?.type === DateTypes.YEAR) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tvalue: [formatTZ(selectedDate, format, {locale, timezone})],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {type: 'NOW_DATE_TIME_CALENDAR#ITEMS_SET', payload: {value}};\n\t\t});\n\t}\n\n\thandleRangeSelection(selectedDate, type, {\n\t\tcontext,\n\t\tstate,\n\t\tproperties,\n\t\tdispatch,\n\t});\n}\n\nfunction handleMonthClick(\n\tselectedDate,\n\t{updateState, dispatch, context, state, properties},\n\tdismissOnSelect,\n) {\n\tconst {mode, type} = properties;\n\tif (dismissOnSelect) {\n\t\tupdateState({activeType: null});\n\t}\n\tif (mode === 'standard' || type !== DateTypes.MONTH) {\n\t\tconst monthIdx = getMonth(selectedDate);\n\n\t\treturn dispatch(({properties}) => {\n\t\t\tconst {items, type} = properties;\n\t\t\tconst {date: activeDateRef} = getDateRef(items, type);\n\t\t\tconst {format} = properties;\n\t\t\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\t\t\tconst value = itemsReducer(\n\t\t\t\tproperties,\n\t\t\t\tcontext,\n\t\t\t\tDateActionTypes.TO_MONTH,\n\t\t\t\tactiveDateRef,\n\t\t\t\tmonthIdx,\n\t\t\t);\n\t\t\tannounceSelectedDate(selectedDate, dispatch, {locale, timezone}, 'month');\n\t\t\tif (properties?.type === DateTypes.MONTH) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tvalue: [formatTZ(selectedDate, format, {locale, timezone})],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {type: 'NOW_DATE_TIME_CALENDAR#ITEMS_SET', payload: {value}};\n\t\t});\n\t}\n\thandleRangeSelection(selectedDate, 'month', {\n\t\tcontext,\n\t\tstate,\n\t\tproperties,\n\t\tdispatch,\n\t});\n}\n\nfunction handleQuarterClick(\n\tselectedDate,\n\t{updateState, dispatch, context, state, properties},\n\tdismissOnSelect,\n) {\n\tconst {mode} = properties;\n\tif (dismissOnSelect) {\n\t\tupdateState({activeType: null});\n\t}\n\tif (mode === 'standard') {\n\t\tconst quarterIdx = getQuarter(selectedDate);\n\n\t\treturn dispatch(({properties}) => {\n\t\t\tconst {items, type} = properties;\n\t\t\tconst {date: activeDateRef} = getDateRef(items, type);\n\t\t\tconst {format} = properties;\n\t\t\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\t\t\tconst value = itemsReducer(\n\t\t\t\tproperties,\n\t\t\t\tcontext,\n\t\t\t\tDateActionTypes.TO_QUARTER,\n\t\t\t\tactiveDateRef,\n\t\t\t\tquarterIdx,\n\t\t\t);\n\t\t\tannounceSelectedDate(\n\t\t\t\tselectedDate,\n\t\t\t\tdispatch,\n\t\t\t\t{locale, timezone},\n\t\t\t\t'quarter',\n\t\t\t);\n\t\t\tif (properties?.type === DateTypes.QUARTER) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tvalue: [formatTZ(selectedDate, format, {locale, timezone})],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {type: 'NOW_DATE_TIME_CALENDAR#ITEMS_SET', payload: {value}};\n\t\t});\n\t}\n\thandleRangeSelection(selectedDate, 'quarter', {\n\t\tcontext,\n\t\tstate,\n\t\tproperties,\n\t\tdispatch,\n\t});\n}\n\nfunction handleWeekClick(\n\tselectedDate,\n\t{updateState, dispatch, context, properties, state},\n\tdismissOnSelect,\n) {\n\tif (dismissOnSelect) {\n\t\tif (properties.mode === 'standard') {\n\t\t\tconst weekIdx = getWeek(selectedDate);\n\t\t\tupdateState({activeType: null});\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst {date: activeDateRef} = getDateRef(properties.items);\n\t\t\t\tconst {format} = properties;\n\t\t\t\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\t\t\t\tconst value = itemsReducer(\n\t\t\t\t\tproperties,\n\t\t\t\t\tcontext,\n\t\t\t\t\tDateActionTypes.TO_WEEK,\n\t\t\t\t\tactiveDateRef,\n\t\t\t\t\tweekIdx,\n\t\t\t\t);\n\t\t\t\tannounceSelectedDate(selectedDate, dispatch, locale, 'week-year');\n\n\t\t\t\tif (properties?.type === DateTypes.WEEK_YEAR) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET',\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tvalue: [formatTZ(selectedDate, format, {locale, timezone})],\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {type: 'NOW_DATE_TIME_CALENDAR#ITEMS_SET', payload: {value}};\n\t\t\t});\n\t\t} else {\n\t\t\thandleRangeSelection(selectedDate, 'week-year', {\n\t\t\t\tcontext,\n\t\t\t\tstate,\n\t\t\t\tproperties,\n\t\t\t\tdispatch,\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * Recursive search for:\n * - index of row containing item\n * - index of item within row\n * @returns {{itemIdx: number, rowIdx: number}}\n */\nfunction getItemCoords(item, items, context = items) {\n\tif (context.length === 1) {\n\t\tconst row = context[0];\n\t\treturn {\n\t\t\titemIdx: row.indexOf(item),\n\t\t\trowIdx: items.indexOf(row),\n\t\t};\n\t}\n\n\tconst {date: currentDate} = item;\n\tconst midRowIdx = Math.floor(context.length / 2);\n\n\tif (isBefore(currentDate, context[midRowIdx][0].date)) {\n\t\treturn getItemCoords(item, items, context.slice(0, midRowIdx));\n\t} else {\n\t\treturn getItemCoords(item, items, context.slice(midRowIdx));\n\t}\n}\n\nfunction focusItemNode(host, id) {\n\tconst sel = `[data-item-id='${id}']`;\n\tconst itemNode = host.shadowRoot.querySelector(sel);\n\tif (itemNode) itemNode.focus();\n}\n\nfunction paginateMonth({\n\tkey,\n\tactiveItem,\n\tproperties,\n\tdispatch,\n\tupdateState,\n\tcontext,\n\tmatch,\n}) {\n\tconst {dir, type} = properties;\n\tconst actionType =\n\t\tisNextKey(key, dir, true) || key === Keys.PAGE_DOWN\n\t\t\t? DateActionTypes.TO_NEXT_MONTH\n\t\t\t: DateActionTypes.TO_PREVIOUS_MONTH;\n\n\tupdateState({\n\t\tpath: 'focusInfo',\n\t\tvalue: {prevItem: activeItem, key, match},\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n\n\tdispatch(() => {\n\t\tconst {date: activeDateRef} = getDateRef(properties.items, type);\n\t\treturn {\n\t\t\ttype: 'NOW_DATE_TIME_CALENDAR#ITEMS_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: itemsReducer(properties, context, actionType, activeDateRef),\n\t\t\t},\n\t\t};\n\t});\n}\n\nfunction paginateYear({\n\tkey,\n\tactiveItem,\n\tproperties,\n\tdispatch,\n\tupdateState,\n\tcontext,\n}) {\n\tupdateState({\n\t\tpath: 'focusInfo',\n\t\tvalue: {prevItem: activeItem, key},\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n\n\tdispatch(() => {\n\t\tconst {items, type} = properties;\n\t\tconst {date: activeDateRef} = getDateRef(items, type);\n\t\tconst currentYear = activeDateRef.getFullYear();\n\t\tconst nextYear = key === Keys.PAGE_UP ? currentYear - 1 : currentYear + 1;\n\n\t\treturn {\n\t\t\ttype: 'NOW_DATE_TIME_CALENDAR#ITEMS_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: itemsReducer(\n\t\t\t\t\tproperties,\n\t\t\t\t\tcontext,\n\t\t\t\t\tDateActionTypes.TO_YEAR,\n\t\t\t\t\tactiveDateRef,\n\t\t\t\t\tnextYear,\n\t\t\t\t),\n\t\t\t},\n\t\t};\n\t});\n}\n\nfunction focusNextItem({\n\tkey,\n\tisDateViewType,\n\tactiveType,\n\tactiveItem,\n\thost,\n\tproperties,\n\titems,\n\tdispatch,\n\tupdateState,\n\tcontext,\n}) {\n\tconst {dir} = properties;\n\tconst {rowIdx, itemIdx} = activeItem;\n\tconst COL_IDX_START = activeType === DateTypes.WEEK_YEAR ? 1 : 0;\n\tconst ROW_IDX_START = isDateViewType ? 1 : 0;\n\tconst maxRowIdx = items.length - 1;\n\tconst maxColIdx = items[rowIdx].length - 1;\n\tconst isPrev = isPreviousKey(key, dir);\n\tconst isNext = isNextKey(key, dir);\n\tconst shouldGoToPrevMonth =\n\t\t(key === Keys.ARROW_UP && rowIdx === ROW_IDX_START) ||\n\t\t(isPrev && itemIdx === COL_IDX_START && rowIdx === ROW_IDX_START);\n\tconst shouldGoToNextMonth =\n\t\t(key === Keys.ARROW_DOWN && rowIdx === maxRowIdx) ||\n\t\t(isNext && itemIdx === maxColIdx && rowIdx === maxRowIdx);\n\tconst shouldPaginate =\n\t\tisDateViewType && (shouldGoToNextMonth || shouldGoToPrevMonth);\n\tif (shouldPaginate) {\n\t\treturn paginateMonth({\n\t\t\tkey,\n\t\t\tactiveItem,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tcontext,\n\t\t});\n\t}\n\n\tlet targetItem = null;\n\n\tif (isPrev) {\n\t\tlet targetRowIdx = rowIdx,\n\t\t\tsliceArgs = [0, itemIdx];\n\t\tif (itemIdx === 0) {\n\t\t\ttargetRowIdx = rowIdx - 1;\n\t\t\tsliceArgs = [0];\n\t\t}\n\n\t\tconst itemPath = items\n\t\t\t.slice(targetRowIdx, targetRowIdx + 1)[0]\n\t\t\t.slice(...sliceArgs)\n\t\t\t.reverse();\n\t\ttargetItem = itemPath.find((item) => !!item.date);\n\t} else if (isNext) {\n\t\tlet targetRowIdx = rowIdx,\n\t\t\tsliceArgs = [itemIdx + 1];\n\n\t\tif (itemIdx === maxColIdx) {\n\t\t\ttargetRowIdx = rowIdx + 1;\n\t\t\tsliceArgs = [0];\n\t\t}\n\n\t\tconst itemPath = items\n\t\t\t.slice(targetRowIdx, targetRowIdx + 1)[0]\n\t\t\t.slice(...sliceArgs);\n\t\ttargetItem = itemPath.find((item) => !!item.date);\n\t} else if (key === Keys.ARROW_UP || key === Keys.ARROW_DOWN) {\n\t\tconst targetRowIdx = key === Keys.ARROW_UP ? rowIdx - 1 : rowIdx + 1;\n\t\ttargetItem = items[targetRowIdx]?.[itemIdx] || {};\n\t}\n\n\t/**\n\t * Focus behavior depends on a few factors:\n\t * 1. If the active calendar type is 'date' or 'date-time', and there\n\t * \tisn't an item to focus, paginate to the next month/year\n\t * 2. Else, if there is an item to focus, focus it.\n\t *\n\t * We don't want to paginate for non-date or non-date-time views.\n\t */\n\tif (\n\t\t[DateTypes.DATE_TIME, DateTypes.DATE, DateTypes.WEEK_YEAR].includes(\n\t\t\tactiveType,\n\t\t) &&\n\t\t(isEmpty(targetItem) || targetItem[ADJACENT])\n\t) {\n\t\tpaginateMonth({\n\t\t\tkey,\n\t\t\tactiveItem,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tcontext,\n\t\t\tmatch: targetItem?.id,\n\t\t});\n\t} else if (targetItem?.id) {\n\t\tfocusItemNode(host, targetItem.id);\n\t}\n}\n\nexport function handleFocusAfterTransition(focusInfo, host, properties) {\n\tconst {prevItem, key, match} = focusInfo;\n\tif (match) {\n\t\treturn focusItemNode(host, match);\n\t}\n\n\tconst {itemIdx, rowIdx} = prevItem;\n\tconst {dir, items} = properties;\n\tconst START_ROW_IDX = 1;\n\tconst END_ROW_IDX = items.length - 1;\n\tlet id;\n\n\tif ([Keys.PAGE_UP, Keys.PAGE_DOWN].includes(key)) {\n\t\t// If the paginated month has one less week, focus will be lost.\n\t\tif (!host.shadowRoot.activeElement) {\n\t\t\tid = items?.[rowIdx]?.[itemIdx].id;\n\n\t\t\t// Sometimes focus is lost because the node itself was replaced by snabbdom\n\t\t\tif (!id) {\n\t\t\t\tid = items[rowIdx - 1][itemIdx].id;\n\t\t\t}\n\t\t}\n\t} else if (isNextKey(key, dir, true)) {\n\t\tconst targetRow = items[START_ROW_IDX];\n\t\tconst cellIsEmptyOrAdjacent =\n\t\t\tisEmpty(targetRow[itemIdx]) || targetRow[itemIdx][ADJACENT];\n\n\t\tif (key === Keys.ARROW_DOWN) {\n\t\t\tid = cellIsEmptyOrAdjacent\n\t\t\t\t? items[START_ROW_IDX + 1]?.[itemIdx].id\n\t\t\t\t: targetRow[itemIdx].id;\n\t\t} else {\n\t\t\tid = targetRow.find((item) => !isEmpty(item) && !item[ADJACENT]).id;\n\t\t}\n\t} else if (isPreviousKey(key, dir, true)) {\n\t\tconst targetRow = items[END_ROW_IDX];\n\t\tconst cellIsEmptyOrAdjacent =\n\t\t\tisEmpty(targetRow[itemIdx]) || targetRow[itemIdx][ADJACENT];\n\n\t\tif (key === Keys.ARROW_UP) {\n\t\t\tid = cellIsEmptyOrAdjacent\n\t\t\t\t? items[END_ROW_IDX - 1]?.[itemIdx].id\n\t\t\t\t: targetRow[itemIdx].id;\n\t\t} else {\n\t\t\tid = [...targetRow]\n\t\t\t\t.reverse()\n\t\t\t\t.find((item) => !isEmpty(item) && !item[ADJACENT]).id;\n\t\t}\n\t}\n\n\tif (id) {\n\t\tfocusItemNode(host, id);\n\t}\n}\n\nexport function handleItemFocus({\n\thost,\n\tstate,\n\taction,\n\tproperties,\n\tdispatch,\n\tupdateState,\n\tcontext,\n}) {\n\tconst {item, shiftKey, directionalKey: key} = action.payload;\n\tconst hostEl = action.meta.hoistHost || host;\n\n\tconst items = state.activeItems || properties.items;\n\tconst activeType = state.activeType || properties.type;\n\tconst isArrowKey = [\n\t\tKeys.ARROW_DOWN,\n\t\tKeys.ARROW_LEFT,\n\t\tKeys.ARROW_RIGHT,\n\t\tKeys.ARROW_UP,\n\t].includes(key);\n\tconst isPageKey = [Keys.PAGE_UP, Keys.PAGE_DOWN].includes(key);\n\tconst isHomeKey = key === Keys.HOME;\n\tconst isEndKey = key === Keys.END;\n\tconst activeItem = getItemCoords(item, items);\n\tconst isDateViewType = [\n\t\tDateTypes.DATE,\n\t\tDateTypes.DATE_TIME,\n\t\tDateTypes.WEEK_YEAR,\n\t].includes(activeType);\n\n\tif (isDirectionalKey(key)) {\n\t\tif (isArrowKey) {\n\t\t\tlet keyToUse = key;\n\t\t\tif (typeof item.week === 'boolean') {\n\t\t\t\tif (key === Keys.ARROW_LEFT) {\n\t\t\t\t\tkeyToUse = Keys.ARROW_UP;\n\t\t\t\t} else if (key === Keys.ARROW_RIGHT) {\n\t\t\t\t\tkeyToUse = Keys.ARROW_DOWN;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfocusNextItem({\n\t\t\t\tkey: keyToUse,\n\t\t\t\tisDateViewType,\n\t\t\t\tactiveType,\n\t\t\t\tactiveItem,\n\t\t\t\thost: hostEl,\n\t\t\t\tproperties,\n\t\t\t\titems,\n\t\t\t\tdispatch,\n\t\t\t\tupdateState,\n\t\t\t\tcontext,\n\t\t\t});\n\t\t} else if (isHomeKey || isEndKey) {\n\t\t\tconst {rowIdx} = activeItem;\n\t\t\tconst targetItem = isHomeKey\n\t\t\t\t? items[rowIdx].find((item) => !!item.date)\n\t\t\t\t: [...items[rowIdx]].reverse().find((item) => !!item.date);\n\t\t\tif (targetItem) {\n\t\t\t\tconst id = targetItem.id;\n\t\t\t\tfocusItemNode(hostEl, id);\n\t\t\t}\n\t\t}\n\t} else if (isPageKey) {\n\t\tif (shiftKey) {\n\t\t\tpaginateYear({\n\t\t\t\tkey,\n\t\t\t\tactiveItem,\n\t\t\t\tproperties,\n\t\t\t\tdispatch,\n\t\t\t\tupdateState,\n\t\t\t\tcontext,\n\t\t\t});\n\t\t} else {\n\t\t\tpaginateMonth({\n\t\t\t\tkey,\n\t\t\t\tactiveItem,\n\t\t\t\tproperties,\n\t\t\t\tdispatch,\n\t\t\t\tupdateState,\n\t\t\t\tcontext,\n\t\t\t});\n\t\t}\n\t}\n}\n\nexport const ItemClickHandlers = {\n\t[DateTypes.DATE]: handleDateClick,\n\t[DateTypes.DATE_TIME]: handleDateClick,\n\t[DateTypes.MONTH]: handleMonthClick,\n\t[DateTypes.YEAR]: handleYearClick,\n\t[DateTypes.QUARTER]: handleQuarterClick,\n\t[DateTypes.WEEK_YEAR]: handleWeekClick,\n};\n","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\n\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addQuarters(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `min` function now accepts an array of dates rather than spread arguments.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   const date1 = new Date(1989, 6, 10)\n *   const date2 = new Date(1987, 1, 11)\n *   const minDate = min(date1, date2)\n *\n *   // v2.0.0 onward:\n *   const dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n *   const minDate = min(dates)\n *   ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\n\nexport default function min(dirtyDatesArray) {\n  requiredArgs(1, arguments);\n  var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n  if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n    datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n  } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {\n    datesArray = Array.prototype.slice.call(dirtyDatesArray);\n  } else {\n    // `dirtyDatesArray` is non-iterable, return Invalid Date\n    return new Date(NaN);\n  }\n\n  var result;\n  datesArray.forEach(function (dirtyDate) {\n    var currentDate = toDate(dirtyDate);\n\n    if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n      result = currentDate;\n    }\n  });\n  return result || new Date(NaN);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `max` function now accepts an array of dates rather than spread arguments.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   var date1 = new Date(1989, 6, 10)\n *   var date2 = new Date(1987, 1, 11)\n *   var maxDate = max(date1, date2)\n *\n *   // v2.0.0 onward:\n *   var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n *   var maxDate = max(dates)\n *   ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\n\nexport default function max(dirtyDatesArray) {\n  requiredArgs(1, arguments);\n  var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n  if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n    datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n  } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {\n    datesArray = Array.prototype.slice.call(dirtyDatesArray);\n  } else {\n    // `dirtyDatesArray` is non-iterable, return Invalid Date\n    return new Date(NaN);\n  }\n\n  var result;\n  datesArray.forEach(function (dirtyDate) {\n    var currentDate = toDate(dirtyDate);\n\n    if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n      result = currentDate;\n    }\n  });\n  return result || new Date(NaN);\n}","import {format as dateFnsFormat} from 'date-fns';\nimport {DateTypes, localeContext} from '@servicenow/library-date-time';\nimport {t} from 'sn-translate';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport {\n\tgetDateRef,\n\tSTANDALONE_MONTH_FORMAT,\n\tSTANDALONE_MONTH_LONG_FORMAT,\n\tSTANDALONE_YEAR_FORMAT,\n} from '../utils';\n\nexport function renderDateControls(state, updateState) {\n\tconst {items, type} = state.properties;\n\tconst {date} = getDateRef(items, type);\n\tconst {[localeContext]: locale} = state.context;\n\tconst yearLabel = dateFnsFormat(date, STANDALONE_YEAR_FORMAT, {locale});\n\tconst monthLabel = dateFnsFormat(date, STANDALONE_MONTH_FORMAT, {locale});\n\tconst monthLongName = dateFnsFormat(date, STANDALONE_MONTH_LONG_FORMAT, {\n\t\tlocale,\n\t});\n\tconst monthIsActive = state.activeType === DateTypes.MONTH;\n\tconst yearIsActive = state.activeType === DateTypes.YEAR;\n\tconst monthCaret = monthIsActive ? 'caret-up-fill' : 'caret-down-fill';\n\tconst yearCaret = yearIsActive ? 'caret-up-fill' : 'caret-down-fill';\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<now-button-bare\n\t\t\t\tclassName=\"now-date-time-calendar-control-button -start\"\n\t\t\t\tbare\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\ticon-end={monthCaret}\n\t\t\t\ton-click={() =>\n\t\t\t\t\tupdateState(() => ({\n\t\t\t\t\t\tactiveType: monthIsActive ? null : DateTypes.MONTH,\n\t\t\t\t\t}))\n\t\t\t\t}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tbutton: {\n\t\t\t\t\t\t'aria-expanded': monthIsActive ? 'true' : 'false',\n\t\t\t\t\t\t'aria-label': t(`${monthLongName}, Select Month`),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"now-line-height-crop\" aria-hidden=\"true\">\n\t\t\t\t\t{monthLabel}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"now-a11y-label\">{monthLongName}</div>\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"now-button-bare-icon now-m-inline-start--xxs\"\n\t\t\t\t\ticon={monthCaret}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t</now-button-bare>\n\t\t\t<now-button-bare\n\t\t\t\tclassName=\"now-date-time-calendar-control-button -end\"\n\t\t\t\tbare\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\ticon-end={yearCaret}\n\t\t\t\ton-click={() =>\n\t\t\t\t\tupdateState(() => ({\n\t\t\t\t\t\tactiveType: yearIsActive ? null : DateTypes.YEAR,\n\t\t\t\t\t}))\n\t\t\t\t}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tbutton: {\n\t\t\t\t\t\t'aria-expanded': yearIsActive ? 'true' : 'false',\n\t\t\t\t\t\t'aria-label': t(`${yearLabel}, Select Year`),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"now-line-height-crop\" aria-label={yearLabel}>\n\t\t\t\t\t{yearLabel}\n\t\t\t\t</div>\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"now-button-bare-icon now-m-inline-start--xxs\"\n\t\t\t\t\ticon={yearCaret}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t</now-button-bare>\n\t\t</Fragment>\n\t);\n}\nexport function renderMonthControls(state, updateState) {\n\tconst {items, type} = state.properties;\n\tconst {date} = getDateRef(items, type);\n\tconst {[localeContext]: locale} = state.context;\n\tconst yearLabel = dateFnsFormat(date, STANDALONE_YEAR_FORMAT, {locale});\n\tconst yearIsActive = state.activeType === DateTypes.YEAR;\n\tconst yearCaret = yearIsActive ? 'caret-up-fill' : 'caret-down-fill';\n\n\treturn (\n\t\t<now-button-bare\n\t\t\tclassName=\"now-date-time-calendar-control-button-start\"\n\t\t\tbare\n\t\t\tvariant=\"secondary\"\n\t\t\tsize=\"sm\"\n\t\t\ticon-end={yearCaret}\n\t\t\ton-click={() =>\n\t\t\t\tupdateState(() => ({\n\t\t\t\t\tactiveType: yearIsActive ? null : DateTypes.YEAR,\n\t\t\t\t}))\n\t\t\t}\n\t\t\tconfig-aria={{\n\t\t\t\tbutton: {\n\t\t\t\t\t'aria-expanded': yearIsActive ? 'true' : 'false',\n\t\t\t\t\t'aria-label': t(`${yearLabel}, Select Year`),\n\t\t\t\t},\n\t\t\t}}\n\t\t>\n\t\t\t<span className=\"now-line-height-crop\">{yearLabel}</span>\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-button-bare-icon now-m-inline-start--xxs\"\n\t\t\t\ticon={yearCaret}\n\t\t\t\tsize=\"sm\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t</now-button-bare>\n\t);\n}\n","import {DateTypes} from '@servicenow/library-date-time';\nimport {renderDateControls, renderMonthControls} from './render-date-controls';\n\nexport function renderControls(state, {updateState}) {\n\tconst {items, type} = state.properties;\n\tif (!items.length) return;\n\n\tif (\n\t\t[DateTypes.DATE, DateTypes.DATE_TIME, DateTypes.WEEK_YEAR].includes(type)\n\t) {\n\t\treturn renderDateControls(state, updateState);\n\t} else if ([DateTypes.MONTH, DateTypes.QUARTER].includes(type)) {\n\t\treturn renderMonthControls(state, updateState);\n\t}\n}\n","import {DateTypes, localeContext, parseTZ} from '@servicenow/library-date-time';\nimport {isDirectionalKey} from '@servicenow/library-enhanced-utils';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport {getMonthItems, getYearItems, getWeekItems} from '../reducers';\nimport {getDateRef, Keys, getDateFromWeek} from '../utils';\nimport {isWithinInterval, startOfWeek, lastDayOfWeek} from 'date-fns';\n\nfunction getItems(state, updateState) {\n\tconst {type, items} = state.properties;\n\tconst activeType = state.activeType || type;\n\tlet activeItems;\n\n\tif (activeType !== type) {\n\t\tif (activeType === DateTypes.MONTH) {\n\t\t\tconst {date} = getDateRef(items, type);\n\t\t\tactiveItems = getMonthItems(date, state);\n\t\t} else if (activeType === DateTypes.YEAR) {\n\t\t\tactiveItems = getYearItems(state);\n\t\t} else if (activeType === DateTypes.WEEK_YEAR) {\n\t\t\tconst {date} = getDateRef(items);\n\t\t\tactiveItems = getWeekItems(date, state);\n\t\t}\n\n\t\tupdateState({\n\t\t\tpath: 'activeItems',\n\t\t\tvalue: activeItems,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t});\n\t} else {\n\t\tupdateState({\n\t\t\tpath: 'activeItems',\n\t\t\tvalue: null,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t});\n\t}\n\n\treturn activeItems || items;\n}\n\n// setting tabindex for start or end of interval's date when range is selected via preset because for presets there is no click on actual date\nfunction overRideTabIndexForPresets(\n\tselectedItems,\n\ttabIndex,\n\trangeInitiator,\n\titemId,\n\tformat,\n\tlocale,\n) {\n\tif (selectedItems?.length === 2 && tabIndex !== '0') {\n\t\t// defaults to startValue\n\t\tlet referenceDateValue = selectedItems[0];\n\n\t\tif (rangeInitiator === 'end') {\n\t\t\treferenceDateValue = selectedItems[1];\n\t\t}\n\n\t\tlet referenceDateObject = parseTZ(referenceDateValue, format, new Date(), {\n\t\t\tlocale,\n\t\t});\n\t\tlet referenceDateId = String(referenceDateObject.getTime());\n\n\t\tif (itemId === referenceDateId) {\n\t\t\ttabIndex = '0';\n\t\t}\n\t}\n\treturn tabIndex;\n}\n\nfunction renderCell(item, idx, state, {dispatch, updateState}) {\n\tconst {\n\t\tlastFocusedItemId,\n\t\tselectionPreviewInterval,\n\t\tweekPreviewInterval,\n\t\tactiveType,\n\t\tcontext: {[localeContext]: locale},\n\t} = state;\n\tconst {\n\t\ttype,\n\t\tselectedItems,\n\t\tformat,\n\t\trangeValueEnd,\n\t\tmode,\n\t\tisoWeek,\n\t\trangeInitiator,\n\t} = state.properties;\n\n\tif (!item.date && !item.label) {\n\t\treturn <td key={idx} tabindex=\"-1\" />;\n\t}\n\n\tconst {\n\t\tdate,\n\t\tselected,\n\t\trange,\n\t\tdisabled,\n\t\ttween,\n\t\tnow,\n\t\tweek,\n\t\tadjacent,\n\t\tlabel,\n\t\ta11yLabel,\n\t\tid,\n\t} = item;\n\tconst isDateItem = !!date;\n\tconst isSelectable = isDateItem && !disabled;\n\tconst isWeekItem = typeof week === 'boolean';\n\tconst isWeekType = type === DateTypes.WEEK_YEAR;\n\tconst isWeekActiveType = !(\n\t\tactiveType === DateTypes.MONTH || activeType === DateTypes.YEAR\n\t);\n\tconst isInterval = rangeValueEnd && mode === 'interval';\n\n\t// Determine if item is the last item focused. For the week calendar, only use the week item not the first day of the week\n\tconst isLastFocusedItem =\n\t\tlastFocusedItemId === id &&\n\t\t!(isWeekType && isWeekActiveType && !isWeekItem);\n\t// Set the tab index to 0 for the last item focused, and to -1 for other date items\n\tlet tabindex = isLastFocusedItem ? '0' : isDateItem ? '-1' : null;\n\n\tlet preview = false,\n\t\tweekPreview = false,\n\t\tweekRange = false;\n\ttry {\n\t\tif (isWeekType) {\n\t\t\tif (selectedItems.length > 0) {\n\t\t\t\tconst isoWeekStartOn = isoWeek ? {weekStartsOn: 1} : {};\n\t\t\t\tconst startDate = getDateFromWeek(selectedItems?.[0], format, isoWeek);\n\t\t\t\tconst endDate = getDateFromWeek(\n\t\t\t\t\tisInterval ? rangeValueEnd : selectedItems?.[0],\n\t\t\t\t\tformat,\n\t\t\t\t\tisoWeek,\n\t\t\t\t);\n\n\t\t\t\tconst start = startOfWeek(startDate, isoWeekStartOn);\n\t\t\t\tconst end = lastDayOfWeek(endDate, isoWeekStartOn);\n\t\t\t\tif (start && end) weekRange = isWithinInterval(date, {start, end});\n\t\t\t}\n\t\t\tif (weekPreviewInterval) {\n\t\t\t\tweekPreview = isWithinInterval(date, weekPreviewInterval);\n\t\t\t}\n\t\t\tif (selectionPreviewInterval) {\n\t\t\t\tpreview = isWithinInterval(date, selectionPreviewInterval);\n\t\t\t}\n\t\t} else {\n\t\t\tif (selectionPreviewInterval) {\n\t\t\t\tpreview = isWithinInterval(date, selectionPreviewInterval);\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\t// swallow the exception, the interval isn't valid and we don't really care\n\t}\n\n\ttabindex = overRideTabIndexForPresets(\n\t\tselectedItems,\n\t\ttabindex,\n\t\trangeInitiator,\n\t\titem.id,\n\t\tformat,\n\t\tlocale,\n\t);\n\n\treturn (\n\t\t<td className=\"now-date-time-calendar-grid-column\">\n\t\t\t<button\n\t\t\t\ttabindex={tabindex}\n\t\t\t\ton-focus={() => {\n\t\t\t\t\tlastFocusedItemId !== id && updateState({lastFocusedItemId: id});\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'PRIVATE#SELECT_ITEM_PREVIEW',\n\t\t\t\t\t\t\tpayload: {id},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\ton-blur={() =>\n\t\t\t\t\tisWeekType\n\t\t\t\t\t\t? updateState({weekPreviewInterval: null})\n\t\t\t\t\t\t: updateState({selectionPreviewInterval: null})\n\t\t\t\t}\n\t\t\t\ton-mouseenter={() => {\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'PRIVATE#SELECT_ITEM_PREVIEW',\n\t\t\t\t\t\t\tpayload: {id},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tkey={id}\n\t\t\t\tdata-itemId={isDateItem ? id : null}\n\t\t\t\taria-pressed={(isDateItem && (selected ? 'true' : 'false')) || null}\n\t\t\t\taria-current={now ? 'date' : null}\n\t\t\t\taria-disabled={disabled ? 'true' : null}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-date-time-calendar-grid-cell': true,\n\t\t\t\t\t'is-focusable': isDateItem,\n\t\t\t\t\t'is-adjacent': adjacent,\n\t\t\t\t\t'is-tween': tween,\n\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t'is-selected': selected || (isWeekItem && weekRange),\n\t\t\t\t\t'is-range': range && !selected,\n\t\t\t\t\t'is-preview': preview && !selected,\n\t\t\t\t\t'is-week-preview': weekPreview && !weekRange,\n\t\t\t\t\t'is-week-range': weekRange && !selected,\n\t\t\t\t\t'is-now': now,\n\t\t\t\t\t'is-week': isWeekItem,\n\t\t\t\t}}\n\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\tif (!isDateItem) return;\n\n\t\t\t\t\tconst keyIsDirectional =\n\t\t\t\t\t\tisDirectionalKey(e.key) ||\n\t\t\t\t\t\te.key === Keys.PAGE_UP ||\n\t\t\t\t\t\te.key === Keys.PAGE_DOWN;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\te.key === Keys.ENTER ||\n\t\t\t\t\t\te.key === Keys.SPACE ||\n\t\t\t\t\t\tkeyIsDirectional\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisSelectable &&\n\t\t\t\t\t\t\t(e.key === Keys.ENTER || e.key === Keys.SPACE)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdispatch('PRIVATE#SELECT_ITEM', {item});\n\t\t\t\t\t\t} else if (keyIsDirectional) {\n\t\t\t\t\t\t\tdispatch('PRIVATE#FOCUS_ITEM', {\n\t\t\t\t\t\t\t\tdirectionalKey: e.key,\n\t\t\t\t\t\t\t\tshiftKey: e.shiftKey,\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ton-click={() => isSelectable && dispatch('PRIVATE#SELECT_ITEM', {item})}\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\taria-hidden={a11yLabel ? 'true' : null}\n\t\t\t\t\tclass={{week: isWeekItem}}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t\t{a11yLabel && <span className=\"now-a11y-label\">{a11yLabel}</span>}\n\t\t\t</button>\n\t\t</td>\n\t);\n}\n\nfunction renderRow(row, rowIdx, state, coeffects) {\n\treturn (\n\t\t<tr className=\"now-date-time-calendar-grid-row\" key={rowIdx}>\n\t\t\t{row.map((item, itemIdx) => renderCell(item, itemIdx, state, coeffects))}\n\t\t</tr>\n\t);\n}\n\nfunction renderHeadingRow(items) {\n\treturn (\n\t\t<tr className=\"now-date-time-calendar-grid-row\" key=\"heading-row\">\n\t\t\t{items.map(({label, a11yLabel}) => (\n\t\t\t\t<th scope=\"col\" className=\"now-date-time-calendar-grid-heading\">\n\t\t\t\t\t<span aria-hidden=\"true\">{label}</span>\n\t\t\t\t\t<span className=\"now-a11y-label\">{a11yLabel}</span>\n\t\t\t\t</th>\n\t\t\t))}\n\t\t</tr>\n\t);\n}\n\nexport function renderGrid(state, coeffects) {\n\tconst items = getItems(state, coeffects.updateState);\n\tconst {type} = state.properties;\n\tconst activeType = state.activeType || type;\n\n\tif (\n\t\t[DateTypes.DATE, DateTypes.DATE_TIME, DateTypes.WEEK_YEAR].includes(\n\t\t\tactiveType,\n\t\t)\n\t) {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<thead>{renderHeadingRow(items[0])}</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{items\n\t\t\t\t\t\t.slice(1)\n\t\t\t\t\t\t.map((row, idx) => renderRow(row, idx, state, coeffects))}\n\t\t\t\t</tbody>\n\t\t\t</Fragment>\n\t\t);\n\t}\n\n\treturn (\n\t\t<tbody className=\"now-date-time-calendar-grid-row-group\">\n\t\t\t{items.map((row, idx) => renderRow(row, idx, state, coeffects))}\n\t\t</tbody>\n\t);\n}\n","import {configAriaSchema} from '@servicenow/library-schemas';\n\nexport const footerActionsSchema = {\n\ttype: 'array',\n\titems: {\n\t\ttype: 'object',\n\t\tproperties: {\n\t\t\tlabel: {type: 'string'},\n\t\t\tvariant: {type: 'string'},\n\t\t\ttooltipContent: {type: 'string'},\n\t\t\tclickActionType: {type: 'string'},\n\t\t\tdisabled: {type: 'boolean'},\n\t\t\tbare: {type: 'boolean'},\n\t\t\tsize: {type: 'string'},\n\t\t\tconfigAria: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tbutton: configAriaSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t\tcloseCalendar: {type: 'boolean'},\n\t\t},\n\t\tadditionalProperties: false,\n\t},\n\tmaxItems: 2,\n};\n\nexport const itemSchema = {\n\ttype: 'string',\n};\n\nexport const valueSchema = {\n\tname: 'Value',\n\ttype: 'object',\n\tproperties: {\n\t\tvalue: itemSchema,\n\t},\n\tadditionalProperties: false,\n};\n\nconst intervalSchema = {\n\tname: 'Interval',\n\ttype: 'object',\n\tproperties: {\n\t\tstart: itemSchema,\n\t\tend: itemSchema,\n\t},\n\tadditionalProperties: false,\n};\n\nconst beforeSchema = {\n\tname: 'Before Interval',\n\ttype: 'object',\n\tproperties: {\n\t\tbefore: itemSchema,\n\t},\n\tadditionalProperties: false,\n};\n\nconst afterSchema = {\n\tname: 'After Interval',\n\ttype: 'object',\n\tproperties: {\n\t\tafter: itemSchema,\n\t},\n\tadditionalProperties: false,\n};\n\nexport const disabledItemsSchema = {\n\ttype: 'array',\n\titems: {\n\t\tanyOf: [valueSchema, beforeSchema, afterSchema, intervalSchema],\n\t},\n};\n\nexport const selectedItemsSchema = {\n\ttype: 'array',\n\titems: {\n\t\tanyOf: [itemSchema, intervalSchema],\n\t},\n};\n\nexport const itemsSchema = {\n\ttype: 'array',\n\titems: {\n\t\ttype: 'array',\n\t\titems: {\n\t\t\ttype: 'object',\n\t\t\tproperties: {\n\t\t\t\tdate: {type: ['object', 'null']},\n\t\t\t\tlabel: {type: ['string', 'number', 'null']},\n\t\t\t\ta11yLabel: {type: ['string', 'null']},\n\t\t\t\tadjacent: {type: 'boolean'},\n\t\t\t\tnow: {type: 'boolean'},\n\t\t\t\tselected: {type: 'boolean'},\n\t\t\t\trange: {type: 'boolean'},\n\t\t\t\ttween: {type: 'boolean'},\n\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\tid: {type: 'string'},\n\t\t\t\tweek: {type: ['boolean', 'number', 'null']},\n\t\t\t},\n\t\t\tadditionalProperties: false,\n\t\t},\n\t},\n};\n\nexport const typesSchema = {\n\ttype: 'string',\n\tenum: ['date', 'date-time', 'time', 'month', 'year', 'quarter', 'week-year'],\n};\n\nexport const presetSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\tkeyword: {\n\t\t\ttype: 'string',\n\t\t\tenum: ['Next', 'Last', 'Current', 'to date', 'Custom'],\n\t\t},\n\t\tpresetType: {\n\t\t\ttype: 'string',\n\t\t\tenum: [\n\t\t\t\t'year',\n\t\t\t\t'years',\n\t\t\t\t'quarter',\n\t\t\t\t'quarters',\n\t\t\t\t'month',\n\t\t\t\t'months',\n\t\t\t\t'week',\n\t\t\t\t'weeks',\n\t\t\t\t'day',\n\t\t\t\t'days',\n\t\t\t\t'hour',\n\t\t\t\t'hours',\n\t\t\t\t'minute',\n\t\t\t\t'minutes',\n\t\t\t\t'second',\n\t\t\t\t'seconds',\n\t\t\t\t'start',\n\t\t\t\t'end',\n\t\t\t\t'business',\n\t\t\t],\n\t\t},\n\t\tduration: {type: 'number'},\n\t\torder: {type: 'number'},\n\t\tlabel: {type: 'string'},\n\t\tgroupLabel: {type: 'string'},\n\t\tstartDate: {type: 'string'},\n\t\tendDate: {type: 'string'},\n\t\tgroup: {type: 'string'},\n\t\tfocused: {type: 'boolean'},\n\t\tselected: {type: 'boolean'},\n\t\tindex: {type: 'number'},\n\t\tposition: {type: 'number'},\n\t\tsetSize: {type: 'number'},\n\t\ttype: {type: 'string'},\n\t},\n\tadditionalProperties: false,\n};\n\nexport const presetsSchema = {\n\ttype: 'array',\n\titems: presetSchema,\n};\n\n// Future types:\n// 'week-month-year',\n// 'week-year',\n// 'custom'\n","import {differenceWith, isEqual} from 'lodash';\nimport {\n\tmax as dateFnsMax,\n\tmin as dateFnsMin,\n\tset as dateFnsSet,\n\tadd as dateFnsAdd,\n\tsub as dateFnsSub,\n\tisEqual as dateFnsIsEqual,\n\tcompareAsc,\n\tstartOfWeek,\n\tlastDayOfWeek,\n} from 'date-fns';\nimport {t} from 'sn-translate';\nimport {actionTypes, modifierTypes} from '@servicenow/ui-core';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport '@servicenow/now-button';\nimport '@servicenow/now-input';\nimport '@servicenow/now-icon';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\tDateTypes,\n\tDateFormatTypes,\n\tremoveEscapedCharacters,\n\tlocaleContext,\n\ttimezoneContext,\n\tisMatchTZ,\n\tparseTZ,\n\tformatTZ,\n} from '@servicenow/library-date-time';\nimport {\n\tfilterAriaAttributes,\n\tmeasureText,\n} from '@servicenow/library-enhanced-utils';\nimport {configAriaSchema} from '@servicenow/library-schemas';\nimport {renderControls, renderGrid} from './views';\nimport {\n\tCALENDAR_TIME_INPUT_ID,\n\tgetDateRef,\n\tPaginationActionTypes,\n\tPaginationTypes,\n\thandleItemFocus,\n\thandleFocusAfterTransition,\n\tItemClickHandlers,\n\tSTANDALONE_MONTH_LONG_FORMAT,\n\tSTANDALONE_YEAR_FORMAT,\n\tgetSelectedItems,\n} from './utils';\nimport {isDateTimeValueValid} from '@servicenow/library-date-time';\nimport {itemsReducer} from './reducers';\nimport styles from './_now-date-time-calendar.scss';\nimport {\n\tdisabledItemsSchema,\n\tselectedItemsSchema,\n\titemsSchema,\n\ttypesSchema,\n\tfooterActionsSchema,\n} from './schemas';\n\n/**\n * This is probably not a reliable way long-term to parse time from the input.\n * E.g., if the time is relative (\"hours ago\", \"yesterday\") then this pattern\n * is useless.\n * At the same time, we should still enforce some degree of consistency\n * when formats are given, and time is a good candidate for this as most (if\n * not all) countries will structure time the same way.\n */\nexport const TIME_FORMAT_PATTERN =\n\t/(H|h){1,2}([.,:]m{1,2})?([.,:]s{1,2})?([.,:]S{1,4})?(\\sa)?/;\nconst MIN_TIME_INPUT_SIZE = 75;\nconst INPUT_SIZE_OFFSET = 24;\nconst presetTypes = Object.values(DateTypes);\nconst {COMPONENT_DOM_READY, COMPONENT_PROPERTY_CHANGED, COMPONENT_RENDERED} =\n\tactionTypes;\n\nfunction getItemById(id, items) {\n\tif (items) {\n\t\tfor (const row of items) {\n\t\t\tconst item = row.find((r) => r.id === id);\n\t\t\tif (item) return item;\n\t\t}\n\t}\n\n\treturn;\n}\n\nfunction setValue(properties, updateProperties) {\n\tconst {format, locale, isoWeek, required, value} = properties;\n\tconst {valid} = isDateTimeValueValid({\n\t\tformat,\n\t\tisoWeek,\n\t\tlocale,\n\t\trequired,\n\t\tvalue,\n\t});\n\tif (!valid) return;\n\tupdateProperties({selectedItems: [value]});\n}\n\nfunction setRangeValues(properties, updateProperties) {\n\tconst {\n\t\ttype,\n\t\trangeValueStart,\n\t\trangeValueEnd,\n\t\tformat,\n\t\tlocale,\n\t\tisoWeek,\n\t\trequired,\n\t} = properties;\n\tif (rangeValueStart && rangeValueEnd) {\n\t\tconst {valid: validStart} = isDateTimeValueValid({\n\t\t\tformat,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\trangeValueStart,\n\t\t});\n\t\tconst {valid: validEnd} = isDateTimeValueValid({\n\t\t\tformat,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\trangeValueEnd,\n\t\t});\n\t\tif (!validStart && !validEnd) return;\n\t\tconst itemsToSelect = getSelectedItems(\n\t\t\t[rangeValueStart, rangeValueEnd],\n\t\t\tformat,\n\t\t\tlocale,\n\t\t\ttype,\n\t\t);\n\t\tupdateProperties({selectedItems: itemsToSelect});\n\t} else if (rangeValueStart && !rangeValueEnd) {\n\t\tconst {valid: validStart} = isDateTimeValueValid({\n\t\t\tformat,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\trangeValueStart,\n\t\t});\n\t\tif (!validStart) return;\n\t\tupdateProperties({selectedItems: [rangeValueStart]});\n\t} else {\n\t\tconst {valid: validEnd} = isDateTimeValueValid({\n\t\t\tformat,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\trangeValueEnd,\n\t\t});\n\t\tif (!validEnd) return;\n\t\tupdateProperties({selectedItems: [rangeValueEnd]});\n\t}\n}\n\nfunction getContainerAriaLabel(type, mode) {\n\tconst isInterval = mode === 'interval';\n\tswitch (type) {\n\t\tcase DateTypes.DATE_TIME:\n\t\t\treturn isInterval\n\t\t\t\t? t('Select date and time range')\n\t\t\t\t: t('Select a date and time');\n\t\tcase DateTypes.MONTH:\n\t\t\treturn isInterval ? t('Select month range') : t('Select a month');\n\t\tcase DateTypes.WEEK_YEAR:\n\t\t\treturn isInterval ? t('Select week range') : t('Select a week');\n\t\tcase DateTypes.QUARTER:\n\t\t\treturn isInterval ? t('Select quarter range') : t('Select a quarter');\n\t\tcase DateTypes.YEAR:\n\t\t\treturn isInterval ? t('Select year range') : t('Select a year');\n\t\tdefault:\n\t\t\treturn isInterval ? t('Select date range') : t('Select a date');\n\t}\n}\n\nfunction itemsChanged(value, prevValue) {\n\treturn differenceWith(value, prevValue, isEqual).length > 0;\n}\n\nfunction getDefaultFocusableItem(host, properties, activeType) {\n\tconst {rangeInitiator, mode, type} = properties;\n\tconst isWeekType =\n\t\ttype === DateTypes.WEEK_YEAR &&\n\t\tactiveType !== DateTypes.MONTH &&\n\t\tactiveType !== DateTypes.YEAR;\n\n\tif (mode === 'interval') {\n\t\tconst selectedDates = host.shadowRoot.querySelectorAll('.is-selected');\n\t\tif (selectedDates.length > 0) {\n\t\t\tif (selectedDates.length > 1 && rangeInitiator === 'end') {\n\t\t\t\treturn selectedDates[1];\n\t\t\t}\n\t\t\treturn selectedDates[0];\n\t\t}\n\t\treturn getCurrentOrFocusableDate(host, isWeekType);\n\t}\n\treturn (\n\t\thost.shadowRoot.querySelector('.is-selected') ||\n\t\tgetCurrentOrFocusableDate(host, isWeekType)\n\t);\n}\n\nfunction getCurrentOrFocusableDate(host, isWeekType) {\n\tconst firstFocusableSelector = isWeekType\n\t\t? '.is-focusable.is-week'\n\t\t: '.is-focusable:not(.is-adjacent)';\n\n\treturn (\n\t\thost.shadowRoot.querySelector('.is-now') ||\n\t\thost.shadowRoot.querySelector(firstFocusableSelector)\n\t);\n}\n\nfunction setTimeInputValue({\n\tproperties,\n\tstate,\n\taction,\n\tdispatch,\n\tupdateState,\n\tcontext,\n}) {\n\tconst {\n\t\tselectedItems,\n\t\tformat,\n\t\tmode,\n\t\tinitialTime,\n\t\tinitialTimeStart,\n\t\tinitialTimeEnd,\n\t} = properties;\n\tconst {format: timeFormat, id, input} = action.payload;\n\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\tlet fallbackTime;\n\n\tconst valueKey =\n\t\taction.type === 'NOW_INPUT_DATE_TIME#VALUE_SET' ? 'value' : 'fieldValue';\n\n\tlet value = action.payload[valueKey];\n\n\t//If a user removes/empties the time property, go back to the `initial` time values.\n\t//if the `initialTime/initialTimeStart/initialTimeEnd` are empty, then go back to the default\n\t//fallback values which are `00:00:00` and `23:59:59` for interval and `00:00:00` for date-time.\n\tif (value.trim().length === 0) {\n\t\tif (input === 'start') {\n\t\t\tfallbackTime = getDefaultTime(initialTimeStart, timeFormat, {\n\t\t\t\tlocale,\n\t\t\t\ttimezone,\n\t\t\t});\n\t\t} else if (input === 'end') {\n\t\t\tfallbackTime = getDefaultTime(initialTimeEnd, timeFormat, locale, 'end');\n\t\t} else {\n\t\t\tfallbackTime = getDefaultTime(initialTime, timeFormat, {\n\t\t\t\tlocale,\n\t\t\t\ttimezone,\n\t\t\t});\n\t\t}\n\t\tconst {time} = getDefault(\n\t\t\tnew Date(),\n\t\t\ttimeFormat,\n\t\t\t{locale, timezone},\n\t\t\tfallbackTime,\n\t\t);\n\t\tvalue = time;\n\t}\n\n\tif (\n\t\t!isMatchTZ(value, timeFormat, {locale}) ||\n\t\tid !== CALENDAR_TIME_INPUT_ID\n\t) {\n\t\treturn;\n\t}\n\n\tconst timeRef = parseTZ(value, timeFormat, new Date(), {locale});\n\n\tif (mode === 'standard') {\n\t\tlet selectedDate = selectedItems?.[0];\n\t\tselectedDate = selectedDate\n\t\t\t? parseTZ(selectedDate, format, new Date(), {locale})\n\t\t\t: new Date();\n\t\tselectedDate = dateFnsSet(selectedDate, {\n\t\t\thours: timeRef.getHours(),\n\t\t\tminutes: timeRef.getMinutes(),\n\t\t\tseconds: timeRef.getSeconds(),\n\t\t\tmilliseconds: timeRef.getMilliseconds(),\n\t\t});\n\n\t\tupdateState({\n\t\t\tpath: 'timeRef',\n\t\t\tvalue: timeRef,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t});\n\n\t\tdispatch('NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET', {\n\t\t\tvalue: [formatTZ(selectedDate, format, {locale, timezone})],\n\t\t});\n\n\t\treturn;\n\t}\n\n\t// when in interval mode, we want time to send a complete range\n\t// as is appropriate from existing data\n\n\tconst {timeRefStart, timeRefEnd} = state;\n\tlet [dateStart, dateEnd] = selectedItems;\n\n\t//The start/end date is automatically set to today if no date is selected.\n\tdateStart = dateStart\n\t\t? parseTZ(dateStart, format, new Date(), {locale})\n\t\t: new Date();\n\tdateEnd = dateEnd\n\t\t? parseTZ(dateEnd, format, new Date(), {locale})\n\t\t: new Date();\n\n\t//Swaps the date value when today is before start date or after end date.\n\tif (compareAsc(dateStart, dateEnd) === 1) {\n\t\t[dateStart, dateEnd] = [dateEnd, dateStart];\n\t}\n\n\tdateStart = dateFnsSet(dateStart, {\n\t\thours: input === 'start' ? timeRef.getHours() : timeRefStart.getHours(),\n\t\tminutes:\n\t\t\tinput === 'start' ? timeRef.getMinutes() : timeRefStart.getMinutes(),\n\t\tseconds:\n\t\t\tinput === 'start' ? timeRef.getSeconds() : timeRefStart.getSeconds(),\n\t\tmilliseconds:\n\t\t\tinput === 'start'\n\t\t\t\t? timeRef.getMilliseconds()\n\t\t\t\t: timeRefStart.getMilliseconds(),\n\t});\n\tdateEnd = dateFnsSet(dateEnd, {\n\t\thours: input === 'end' ? timeRef.getHours() : timeRefEnd.getHours(),\n\t\tminutes: input === 'end' ? timeRef.getMinutes() : timeRefEnd.getMinutes(),\n\t\tseconds: input === 'end' ? timeRef.getSeconds() : timeRefEnd.getSeconds(),\n\t\tmilliseconds:\n\t\t\tinput === 'end'\n\t\t\t\t? timeRef.getMilliseconds()\n\t\t\t\t: timeRefEnd.getMilliseconds(),\n\t});\n\n\tupdateState({\n\t\tpath: input === 'start' ? 'timeRefStart' : 'timeRefEnd',\n\t\tvalue: timeRef,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n\n\tdispatch('NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET', {\n\t\tvalue: [\n\t\t\tformatTZ(dateStart, format, {locale, timezone}),\n\t\t\tformatTZ(dateEnd, format, {locale, timezone}),\n\t\t],\n\t});\n}\n\nfunction setDateItems(properties, dispatch, context) {\n\tconst value = itemsReducer(properties, context);\n\tdispatch('NOW_DATE_TIME_CALENDAR#ITEMS_SET', {value});\n}\n\nexport function parseSubString(str, pattern) {\n\tconst match = str.match(pattern);\n\n\tif (match !== null && match.length) {\n\t\treturn match[0];\n\t}\n}\nfunction getDefaultTime(initialTime, format, options, rangeInitiator) {\n\ttry {\n\t\tif (initialTime) {\n\t\t\tconst timeRef = parseTZ(initialTime, format, new Date(), options);\n\n\t\t\treturn {\n\t\t\t\thours: Number.isNaN(timeRef.getHours()) ? 0 : timeRef.getHours(),\n\t\t\t\tminutes: Number.isNaN(timeRef.getMinutes()) ? 0 : timeRef.getMinutes(),\n\t\t\t\tseconds: Number.isNaN(timeRef.getSeconds()) ? 0 : timeRef.getSeconds(),\n\t\t\t\tmilliseconds: Number.isNaN(timeRef.getMilliseconds())\n\t\t\t\t\t? 0\n\t\t\t\t\t: timeRef.getMilliseconds(),\n\t\t\t};\n\t\t} else if (rangeInitiator) {\n\t\t\treturn {\n\t\t\t\thours: 23,\n\t\t\t\tminutes: 59,\n\t\t\t\tseconds: 59,\n\t\t\t\tmilliseconds: 999,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\thours: 0,\n\t\t\tminutes: 0,\n\t\t\tseconds: 0,\n\t\t\tmilliseconds: 0,\n\t\t};\n\t} catch (e) {\n\t\treturn {\n\t\t\thours: 0,\n\t\t\tminutes: 0,\n\t\t\tseconds: 0,\n\t\t\tmilliseconds: 0,\n\t\t};\n\t}\n}\nfunction getTimeValue({selectedItems, format, timeFormat, locale, timezone}) {\n\treturn selectedItems.map((item) => {\n\t\tconst ref = parseTZ(item, format, new Date(), {locale});\n\n\t\treturn {ref, time: formatTZ(ref, timeFormat, {locale, timezone})};\n\t});\n}\n\nfunction getDefault(timeRef, timeFormat, context, time) {\n\tconst ref = dateFnsSet(timeRef, time);\n\treturn {ref, time: formatTZ(ref, timeFormat, context)};\n}\n\nfunction getInputSize(theme, value, format) {\n\tconst measureFn = measureText({\n\t\ttxtTransform: theme['--now-date-time--text-transform'],\n\t\tfontStyle: theme['--now-date-time--font-style'],\n\t\tfontFamily: theme['--now-date-time--font-family'],\n\t\tfontSize: '12px',\n\t\tfontWeight: theme['--now-date-time--font-weight'],\n\t});\n\n\tconst valueLength = measureFn(value);\n\tconst formatLength = measureFn(format);\n\tconst size =\n\t\tMath.max(MIN_TIME_INPUT_SIZE, valueLength, formatLength) +\n\t\tINPUT_SIZE_OFFSET;\n\n\treturn size;\n}\n\nfunction renderPaginationButton({\n\taction,\n\tproperties,\n\tactiveType,\n\tdispatch,\n\tupdateState,\n\ticon,\n\tlabel,\n\tcontext,\n}) {\n\tif (activeType) return;\n\n\tconst {type} = properties;\n\n\treturn (\n\t\t<now-button-iconic\n\t\t\tclass={{\n\t\t\t\t'now-date-time-calendar-pagination-button': true,\n\t\t\t\t[`-${action.toLowerCase()}`]: true,\n\t\t\t}}\n\t\t\tbare\n\t\t\tsize=\"sm\"\n\t\t\tvariant=\"secondary\"\n\t\t\ticon={icon}\n\t\t\ton-click={() => {\n\t\t\t\tconst {date} = getDateRef(properties.items, type);\n\t\t\t\tconst value = itemsReducer(\n\t\t\t\t\tproperties,\n\t\t\t\t\tcontext,\n\t\t\t\t\tPaginationTypes[type][action],\n\t\t\t\t\tdate,\n\t\t\t\t);\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'lastFocusedItemId',\n\t\t\t\t\tvalue: null,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t\tdispatch('NOW_DATE_TIME_CALENDAR#ITEMS_SET', {value});\n\t\t\t}}\n\t\t\ttooltip-content={label}\n\t\t\tconfig-aria={{button: {'aria-label': label}}}\n\t\t/>\n\t);\n}\n\nfunction renderHeader(state, coeffects) {\n\tconst {items, type} = state?.properties ?? {};\n\tif (!Array.isArray(items) || !items.length || DateTypes.YEAR === type) return;\n\n\tconst {date} = getDateRef(items, type);\n\tconst {dispatch, updateState} = coeffects;\n\tconst {activeType, context} = state;\n\tconst {[localeContext]: locale, [timezoneContext]: timezone} = context;\n\tconst yearLabel = formatTZ(date, STANDALONE_YEAR_FORMAT, {locale, timezone});\n\tconst monthLongName = formatTZ(date, STANDALONE_MONTH_LONG_FORMAT, {\n\t\tlocale,\n\t\ttimezone,\n\t});\n\tconst gridHeading = [\n\t\tDateTypes.DATE,\n\t\tDateTypes.DATE_TIME,\n\t\tDateTypes.WEEK_YEAR,\n\t].includes(type)\n\t\t? `${monthLongName}, ${yearLabel}`\n\t\t: yearLabel;\n\n\treturn (\n\t\t<div className=\"now-date-time-calendar-header\">\n\t\t\t<h2\n\t\t\t\tid=\"grid-heading\"\n\t\t\t\tclassName=\"now-a11y-label\"\n\t\t\t\taria-live=\"polite\"\n\t\t\t\taria-atomic=\"true\"\n\t\t\t>\n\t\t\t\t{gridHeading}\n\t\t\t</h2>\n\t\t\t{[DateTypes.DATE, DateTypes.DATE_TIME, DateTypes.WEEK_YEAR].includes(type)\n\t\t\t\t? renderPaginationButton({\n\t\t\t\t\t\tactiveType,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\taction: PaginationActionTypes.PREVIOUS,\n\t\t\t\t\t\ticon: 'chevron-start-fill',\n\t\t\t\t\t\tlabel: t('Go to previous month'),\n\t\t\t\t\t\tproperties: state.properties,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t})\n\t\t\t\t: null}\n\t\t\t{renderControls(state, coeffects)}\n\t\t\t{[DateTypes.DATE, DateTypes.DATE_TIME, DateTypes.WEEK_YEAR].includes(type)\n\t\t\t\t? renderPaginationButton({\n\t\t\t\t\t\tactiveType,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\taction: PaginationActionTypes.NEXT,\n\t\t\t\t\t\ticon: 'chevron-end-fill',\n\t\t\t\t\t\tlabel: t('Go to next month'),\n\t\t\t\t\t\tproperties: state.properties,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t})\n\t\t\t\t: null}\n\t\t</div>\n\t);\n}\n\nfunction renderDateGrid(state, coeffects) {\n\tconst {type, items} = state.properties;\n\tconst activeType = state.activeType || type;\n\n\tif (!Array.isArray(items) || !items.length) return;\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-date-time-calendar-grid-container': true,\n\t\t\t\t[`-${activeType}`]: true,\n\t\t\t}}\n\t\t\trole=\"application\"\n\t\t>\n\t\t\t<table\n\t\t\t\tclass={{'now-date-time-calendar-grid': true}}\n\t\t\t\taria-labelledby=\"grid-heading\"\n\t\t\t>\n\t\t\t\t{renderGrid(state, coeffects)}\n\t\t\t</table>\n\t\t</div>\n\t);\n}\n\nfunction renderTimeInput(state, updateState) {\n\tconst {\n\t\tproperties: {\n\t\t\ttype,\n\t\t\tformat,\n\t\t\trangeInitiator,\n\t\t\trangeValueStart,\n\t\t\trangeValueEnd,\n\t\t\tselectedItems,\n\t\t\tmode,\n\t\t\tinitialTime,\n\t\t\tinitialTimeEnd,\n\t\t\tinitialTimeStart,\n\t\t},\n\t\tcontext: {[localeContext]: locale, [timezoneContext]: timezone},\n\t\tbehaviors: {theme},\n\t} = state;\n\n\tconst isDateTimeType = DateTypes.DATE_TIME === type;\n\tif (state.activeType || !isDateTimeType) return;\n\n\tconst tokenizedFormat = removeEscapedCharacters(format);\n\tconst timeFormat = parseSubString(tokenizedFormat, TIME_FORMAT_PATTERN);\n\tif (!timeFormat) return;\n\n\tconst refs = getTimeValue({\n\t\tselectedItems,\n\t\tformat,\n\t\ttimeFormat,\n\t\tlocale,\n\t\ttimezone,\n\t});\n\n\t/**\n\t * DEF0321215\n\t * There is a bug in Seismic where components using `now-mode` won't\n\t * receive configured property values when switched from `detach`\n\t * to `active` on first render. To get around this, we need to set the\n\t * timeRef directly in render state. Once the bug is resolved, we can\n\t * move this non-sense into COMPONENT_DOM_READY or the like. -GT\n\t */\n\n\tif (mode === 'standard') {\n\t\tconst defaultInitialTime = getDefaultTime(initialTime, timeFormat, {\n\t\t\tlocale,\n\t\t\ttimezone,\n\t\t});\n\t\tconst {ref: defaultRef, time: defaultTime} = getDefault(\n\t\t\trefs?.[0]?.ref ?? new Date(),\n\t\t\ttimeFormat,\n\t\t\t{locale, timezone},\n\t\t\tdefaultInitialTime,\n\t\t);\n\n\t\tupdateState({\n\t\t\tpath: 'timeRef',\n\t\t\tvalue: refs?.[0]?.ref ?? defaultRef,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t});\n\n\t\tconst value = refs?.[0]?.time ?? defaultTime;\n\t\tconst inputSize = getInputSize(theme, value, timeFormat);\n\t\tconst inputLabel = t({\n\t\t\tcode: 'now-date-time-time-input-label',\n\t\t\tmessage: 'Time',\n\t\t\tcomment: 'Noun. Label for a time input.',\n\t\t});\n\n\t\treturn (\n\t\t\t<now-input-date-time\n\t\t\t\tclassName=\"now-date-time-calendar-input-time\"\n\t\t\t\tlabel={inputLabel}\n\t\t\t\tvalue={value}\n\t\t\t\tsize=\"sm\"\n\t\t\t\tstyle={{inlineSize: `${inputSize}px`}}\n\t\t\t\tformat={timeFormat}\n\t\t\t\tappend-to-payload={{id: CALENDAR_TIME_INPUT_ID}}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// if we have one value, ensure index access is predictable for start/end values\n\t// worth noting that this logic relies on the idea that there will only ever be two selected items for a range\n\tif (refs.length === 1) {\n\t\t// selected items are start/end agnostic inside the calendar panel\n\t\t// to ensure we push or shift items correctly we need to know if the value we have\n\t\t// represents a start or end input\n\n\t\tif (rangeInitiator === 'start') {\n\t\t\tif (\n\t\t\t\trangeValueStart &&\n\t\t\t\tdateFnsIsEqual(\n\t\t\t\t\trefs[0].ref,\n\t\t\t\t\tparseTZ(rangeValueStart, format, new Date(), {locale}),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\trefs.push({ref: null, time: null});\n\t\t\t} else {\n\t\t\t\trefs.unshift({ref: null, time: null});\n\t\t\t}\n\t\t} else {\n\t\t\tif (\n\t\t\t\trangeValueEnd &&\n\t\t\t\tdateFnsIsEqual(\n\t\t\t\t\trefs[0].ref,\n\t\t\t\t\tparseTZ(rangeValueEnd, format, new Date(), {locale}),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\trefs.unshift({ref: null, time: null});\n\t\t\t} else {\n\t\t\t\trefs.push({ref: null, time: null});\n\t\t\t}\n\t\t}\n\t}\n\n\tconst defaultInitialTimeStart = getDefaultTime(initialTimeStart, timeFormat, {\n\t\tlocale,\n\t\ttimezone,\n\t});\n\tconst defaultInitialTimeEnd = getDefaultTime(\n\t\tinitialTimeEnd,\n\t\ttimeFormat,\n\t\tlocale,\n\t\t'end',\n\t);\n\tconst {ref: defaultRefStart, time: defaultTimeStart} = getDefault(\n\t\trefs?.[0]?.ref ?? new Date(),\n\t\ttimeFormat,\n\t\t{locale, timezone},\n\t\tdefaultInitialTimeStart,\n\t);\n\tconst {ref: defaultRefEnd, time: defaultTimeEnd} = getDefault(\n\t\trefs?.[1]?.ref ?? new Date(),\n\t\ttimeFormat,\n\t\tlocale,\n\t\tdefaultInitialTimeEnd,\n\t);\n\n\tupdateState([\n\t\t{\n\t\t\tpath: 'timeRefStart',\n\t\t\tvalue: refs?.[0]?.ref ?? defaultRefStart,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t},\n\t\t{\n\t\t\tpath: 'timeRefEnd',\n\t\t\tvalue: refs?.[1]?.ref ?? defaultRefEnd,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t},\n\t]);\n\n\tconst valueStart = refs?.[0]?.time ?? defaultTimeStart;\n\tconst valueEnd = refs?.[1]?.time ?? defaultTimeEnd;\n\tconst startTimeLabel = t({\n\t\tcode: 'now-date-time-calendar-input-time-start-label',\n\t\tmessage: 'Start time',\n\t\tcomment: 'Noun. Label for an input to set the beginning of a time range.',\n\t});\n\tconst endTimeLabel = t({\n\t\tcode: 'now-date-time-calendar-input-time-end-label',\n\t\tmessage: 'End time',\n\t\tcomment: 'Noun. Label for an input to set the end of a time range.',\n\t});\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-date-time-calendar-input-time': true,\n\t\t\t\t['-' + mode]: true,\n\t\t\t}}\n\t\t>\n\t\t\t<now-input-date-time\n\t\t\t\tlabel={startTimeLabel}\n\t\t\t\tvalue={valueStart}\n\t\t\t\tsize=\"sm\"\n\t\t\t\tformat={timeFormat}\n\t\t\t\tappend-to-payload={{id: CALENDAR_TIME_INPUT_ID, input: 'start'}}\n\t\t\t/>\n\t\t\t<now-input-date-time\n\t\t\t\tlabel={endTimeLabel}\n\t\t\t\tvalue={valueEnd}\n\t\t\t\tsize=\"sm\"\n\t\t\t\tformat={timeFormat}\n\t\t\t\tappend-to-payload={{id: CALENDAR_TIME_INPUT_ID, input: 'end'}}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction renderCustomFooterActions(footerActions, dispatch) {\n\treturn footerActions\n\t\t.slice(0, 2)\n\t\t.map((action) => {\n\t\t\tconst {\n\t\t\t\tvariant,\n\t\t\t\tlabel,\n\t\t\t\tbare,\n\t\t\t\tdisabled,\n\t\t\t\ttooltipContent,\n\t\t\t\tclickActionType,\n\t\t\t\tconfigAria,\n\t\t\t\tcloseCalendar,\n\t\t\t} = action;\n\n\t\t\tconst type =\n\t\t\t\tclickActionType || 'NOW_DATE_TIME_CALENDAR#FOOTER_ACTION_CLICKED';\n\n\t\t\tconst actionProps = {\n\t\t\t\tsize: 'sm',\n\t\t\t\tkey: clickActionType,\n\t\t\t\tclassName: 'now-date-time-calendar-footer-action',\n\t\t\t\tvariant,\n\t\t\t\tlabel,\n\t\t\t\tdisabled,\n\t\t\t\ttooltipContent,\n\t\t\t\tconfigAria,\n\t\t\t\t'on-click': () => {\n\t\t\t\t\tif (disabled) return;\n\t\t\t\t\tdispatch(type, {action});\n\t\t\t\t\tif (clickActionType && closeCalendar) dispatch('PRIVATE#FOCUS_INPUT');\n\t\t\t\t},\n\t\t\t};\n\n\t\t\treturn bare ? (\n\t\t\t\t<now-button-bare {...actionProps} />\n\t\t\t) : (\n\t\t\t\t<now-button {...actionProps} />\n\t\t\t);\n\t\t})\n\t\t.reverse();\n}\n\nfunction renderDefaultFooterActions(state, dispatch) {\n\tconst {rangeInitiator, defaultFooterActionLabels} = state.properties;\n\t// For interval picker, check will use multiple date items\n\tconst {fallbackValues} = state;\n\tlet cancelLabel;\n\tlet applyLabel;\n\tif (defaultFooterActionLabels.cancel === 'Cancel') {\n\t\tcancelLabel = t({\n\t\t\tcode: 'now-date-time-calendar-footer-action-cancel-label',\n\t\t\tmessage: 'Cancel',\n\t\t\tcomment: 'Verb. Label for an action button.',\n\t\t});\n\t} else {\n\t\tcancelLabel = defaultFooterActionLabels.cancel;\n\t}\n\tif (defaultFooterActionLabels.apply === 'Apply') {\n\t\tapplyLabel = t({\n\t\t\tcode: 'now-date-time-calendar-footer-action-apply-label',\n\t\t\tmessage: 'Apply',\n\t\t\tcomment: 'Verb. Label for an action button.',\n\t\t});\n\t} else {\n\t\tapplyLabel = defaultFooterActionLabels.apply;\n\t}\n\treturn (\n\t\t<Fragment>\n\t\t\t<now-button\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tlabel={cancelLabel}\n\t\t\t\tclassName=\"now-date-time-calendar-footer-action\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET',\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tvalue: fallbackValues ?? [],\n\t\t\t\t\t\t\t\tinitiator: 'CALENDAR_FOOTER_CANCEL_BUTTON',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t\tdispatch('NOW_DATE_TIME_CALENDAR#FOOTER_ACTION_CLICKED', {\n\t\t\t\t\t\taction: {isDefault: true},\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<now-button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tlabel={applyLabel}\n\t\t\t\tclassName=\"now-date-time-calendar-footer-action\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch('NOW_DATE_TIME_CALENDAR#FOOTER_ACTION_CLICKED', {\n\t\t\t\t\t\taction: {isDefault: true},\n\t\t\t\t\t\tappendToPayload: {applyLabel, rangeInitiator},\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t</Fragment>\n\t);\n}\n\nfunction renderFooterActions(state, dispatch) {\n\tconst {footerActions, showDefaultFooterActions} = state.properties;\n\n\tif (footerActions.length) {\n\t\treturn renderCustomFooterActions(footerActions, dispatch);\n\t} else if (showDefaultFooterActions) {\n\t\treturn renderDefaultFooterActions(state, dispatch);\n\t}\n}\n\nfunction getTodayButtonLabel(type) {\n\tconst nowLabel = t({\n\t\tcode: 'now-date-time-calendar-footer-action-today-label',\n\t\tmessage: 'Now',\n\t\tcomment:\n\t\t\t'As in, the present moment. Causes a date/time selector to jump to the current date/time.',\n\t});\n\tif (type === DateTypes.MONTH) return t('Current month');\n\telse if (type === DateTypes.YEAR) return t('Current year');\n\telse if (type === DateTypes.QUARTER) return t('Current quarter');\n\telse if (type === DateTypes.DATE_TIME) return nowLabel;\n\telse if (type === DateTypes.WEEK_YEAR) return t('Current week');\n\telse return t('Today');\n}\n\nfunction renderFooter(state, dispatch) {\n\tconst {\n\t\tformat,\n\t\tshowDefaultFooterActions,\n\t\tfooterActions,\n\t\thideFooter,\n\t\ttype,\n\t\tmode,\n\t} = state.properties;\n\tconst {[localeContext]: locale, [timezoneContext]: timezone} = state.context;\n\tif (hideFooter) return;\n\n\tif (\n\t\tmode === 'interval' &&\n\t\t!footerActions.length &&\n\t\t!showDefaultFooterActions\n\t) {\n\t\treturn;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-date-time-calendar-footer': true,\n\t\t\t\t'has-footer-actions': footerActions.length || showDefaultFooterActions,\n\t\t\t\t['-' + mode]: true,\n\t\t\t}}\n\t\t>\n\t\t\t{mode === 'standard' && (\n\t\t\t\t<now-button-bare\n\t\t\t\t\tclassName=\"now-date-time-calendar-footer-action now-date-time-calendar-footer-action-today\"\n\t\t\t\t\tlabel={getTodayButtonLabel(state.activeType || type)}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\tif (state.activeType) {\n\t\t\t\t\t\t\tconst item = {date: new Date()};\n\t\t\t\t\t\t\tdispatch('PRIVATE#SELECT_ITEM', {item});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdispatch('NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET', {\n\t\t\t\t\t\t\t\tvalue: [formatTZ(new Date(), format, {locale, timezone})],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdispatch('NOW_DATE_TIME_CALENDAR#FOOTER_ACTION_CLICKED', {\n\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\tisToday: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tinitiator: state.activeType || type,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{renderFooterActions(state, dispatch)}\n\t\t</div>\n\t);\n}\n\nconst view = (state, coeffects) => {\n\tconst {format, configAria, type, mode, enablePresets} = state.properties;\n\tconst {updateState} = coeffects;\n\tconst isWeekType = type === DateTypes.WEEK_YEAR;\n\n\t// DEF0321215: First render doesn't receive values from\n\t// parent component, resulting in an error.\n\tif (!format) return;\n\n\tlet role = undefined;\n\tif (!enablePresets) {\n\t\trole = state.standalone ? 'group' : 'dialog';\n\t}\n\n\t// 'role=\"application\"' forces JAWS and NVDA into the\n\t// appropriate mode for navigating controls, aka\n\t// \"focus\" mode. Otherwise, SRs will assume the dialog\n\t// is a document and use \"browse\" mode, which isn't\n\t// suitable for grids and inputs.\n\t// Reading: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/application_role\n\treturn (\n\t\t<div\n\t\t\ton-mouseleave={() =>\n\t\t\t\t!isWeekType\n\t\t\t\t\t? updateState({selectionPreviewInterval: null})\n\t\t\t\t\t: updateState({weekPreviewInterval: null})\n\t\t\t}\n\t\t>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-date-time-calendar': true,\n\t\t\t\t\t'is-week': isWeekType,\n\t\t\t\t}}\n\t\t\t\taria-label={!enablePresets && getContainerAriaLabel(type, mode)}\n\t\t\t\t{...filterAriaAttributes(configAria, 'container')}\n\t\t\t\trole={role}\n\t\t\t>\n\t\t\t\t{renderHeader(state, coeffects)}\n\t\t\t\t{renderDateGrid(state, coeffects)}\n\t\t\t\t{renderTimeInput(state, updateState)}\n\t\t\t\t{renderFooter(state, coeffects.dispatch)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * Calendar component to display the current date. If the `format` property contains time\n * tokens, a time input field is also displayed.\n *\n * ```jsx\n * <now-date-time-calendar />\n * <now-date-time-calendar mode=\"interval\" type=\"date-time\" format=\"yyyy/MM/dd hh:mm:ss a\" />\n * ```\n *\n * @seismicElement now-date-time-calendar\n * @summary A calendar to display the date and time.\n */\ncreateEnhancedElement('now-date-time-calendar', {\n\tproperties: {\n\t\t/**\n\t\t * The type of calendar (ie date, date-time, month, etc)\n\t\t * @type {('date'|'date-time'|'time'|'year'|'month'|'quarter'|'week-year')}\n\t\t */\n\t\ttype: {\n\t\t\tdefault: 'date',\n\t\t\tschema: typesSchema,\n\t\t},\n\t\t/**\n\t\t * The mode of the calendar (standard, interval)\n\t\t * @type {('standard' | 'interval')}\n\t\t */\n\t\tmode: {\n\t\t\tdefault: 'standard',\n\t\t\tschema: {type: 'string', enum: ['standard', 'interval']},\n\t\t},\n\t\t/**\n\t\t * Configures the Unicode Technical Standard (UTS) format of the input value.\n\t\t * See UTS and other supported format characters in the [`date-fns` library](https://date-fns.org/v2.28.0/docs/format).\n\t\t * @type {string}\n\t\t */\n\t\tformat: {\n\t\t\t// Workaround DEF0321215:\n\t\t\t// This default ensures the component doesn't\n\t\t\t// blow up on first render due to missing\n\t\t\t// parent-defined value on first render.\n\t\t\tdefault: DateFormatTypes.DATE,\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * Configures the label value of the default footer action buttons\n\t\t * Allows for the use of default footer action functionality with\n\t\t * custom label names.\n\t\t * @type {string}\n\t\t */\n\t\tdefaultFooterActionLabels: {\n\t\t\tdefault: {apply: 'Apply', cancel: 'Cancel'},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * The items used to populate the calendar.\n\t\t * Make public when 'custom' calendar type is supported.\n\t\t * @type {[]}\n\t\t * @private\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * An array of the selected items. The items can be either a range of dates or a single date\n\t\t * @type {[]}\n\t\t */\n\t\tselectedItems: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: selectedItemsSchema,\n\t\t},\n\t\t/**\n\t\t * Enable or disable the ability to select the same date when selecting a range of dates\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tallowDuplicates: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Controls what is selected first when selecting a range of dates.\n\t\t * When editing a range of dates, if the range initiator is set to 'start', a new start date will be selected.\n\t\t * When editing a range of dates, if the range initiator is set to 'end', a new end date will be selected.\n\t\t * @type {('start'|'end')}\n\t\t */\n\t\trangeInitiator: {\n\t\t\tdefault: 'start',\n\t\t\tschema: {type: 'string', enum: ['start', 'end']},\n\t\t},\n\t\t/**\n\t\t * The value of the selected date (use this property to preselect a date)\n\t\t * @type {string}\n\t\t */\n\t\tvalue: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * The value of the start of the range of dates\n\t\t * @type {string}\n\t\t */\n\t\trangeValueStart: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * The value of the end of the range of dates\n\t\t * @type {string}\n\t\t */\n\t\trangeValueEnd: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * An array of objects representing disabled dates. String values\n\t\t * must be date strings matching the given `format` property.\n\t\t * Accepted value types:\n\t\t * - Value, e.g. `{value: \"2020/01/01\"}`\n\t\t * - Interval, e.g. `{start: \"2020/01/01\", end: \"2020/12/31\"}`\n\t\t * - Before-interval, e.g. `{before: \"2020/01/01\"}`\n\t\t * - After-interval, e.g. `{after: \"2020/01/01\"}`\n\t\t *\n\t\t * Setting this field ensures the `items` property shows relevant disabled\n\t\t * date items if they are within the visible interval.\n\t\t * @type {Array.<({value: Date}|{start: Date, end: Date}|{before: Date}|{after: Date})>}\n\t\t */\n\t\tdisabledItems: {\n\t\t\tdefault: [],\n\t\t\tschema: disabledItemsSchema,\n\t\t},\n\t\t/**\n\t\t * Configures the first day of the week on the calendar panel.\n\t\t * Value can range from `0` (Sunday) to `6` (Saturday).\n\t\t * Only applies when the `type` property is `date` or `date-time`.\n\t\t * @type {(0|1|2|3|4|5|6)}\n\t\t */\n\t\tfirstDayOfWeek: {\n\t\t\tdefault: 0,\n\t\t\tschema: {type: 'integer', enum: [0, 1, 2, 3, 4, 5, 6]},\n\t\t},\n\t\t/**\n\t\t * If true and `type` is `'date'`, the calendar won't show dates outside the\n\t\t * displayed month interval.\n\t\t * @type {boolean}\n\t\t */\n\t\thideAdjacentDates: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * An array of objects that defines the buttons in the calendar footer. You\n\t\t * can define up to two buttons, set from right to left.\n\t\t *\n\t\t * If defined, overrides `showDefaultFooterActions`. The user is responsible\n\t\t * for setting the `opened` property in response to `action.clickActionType`.\n\t\t *\n\t\t * The keys of each object are properties for `now-button`. See\n\t\t * `now-button` for more documentation on these properties.\n\t\t * @type {{ label: string, variant: string, disabled: boolean, bare: boolean, tooltipContent: string, clickActionType: string, configAria: object}[]}\n\t\t */\n\t\tfooterActions: {\n\t\t\tdefault: [],\n\t\t\tschema: footerActionsSchema,\n\t\t},\n\t\t/**\n\t\t * If true, shows default footer actions.\n\t\t * This is always overridden by the `footerActions` property.\n\t\t * @type {boolean}\n\t\t */\n\t\tshowDefaultFooterActions: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Hides the footer.\n\t\t * @type {boolean}\n\t\t */\n\t\thideFooter: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * When true and type is `week-year`, the date calculation accounts for a ISO week.\n\t\t * @type {boolean}\n\t\t */\n\t\tisoWeek: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Disables weekend days on the 'date' calendar type. Values used are\n\t\t * determined by the `weekendDays` property.\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableWeekends: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Configure which days are weekend days. Defaults to `6` (Saturday) and `0` (Sunday).\n\t\t * @type {number[]}\n\t\t */\n\t\tweekendDays: {\n\t\t\tdefault: [6, 0],\n\t\t\tschema: {type: 'array', items: {type: 'number'}},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * component. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element. Note that `role`\n\t\t * is not configurable in order to enforce correct accessibility standards.\n\t\t * The 'container' key corresponds to the container of the date/time picker\n\t\t * in now-date-time-calendar.\n\t\t * @type {{ 'aria-*': string }}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {container: configAriaSchema},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tenablePresets: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Configures the length of the weekday headings.\n\t\t * @type {('short'|'narrow')}\n\t\t */\n\t\tweekdayHeadings: {\n\t\t\tdefault: 'narrow',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['short', 'narrow'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configures the initial time for the date-time component format.\n\t\t * @type {string}\n\t\t */\n\t\tinitialTime: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * Configures the initial start time for the interval\n\t\t * @type {string}\n\t\t */\n\t\tinitialTimeStart: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * Configures the initial end time  for the interval\n\t\t * @type {string}\n\t\t */\n\t\tinitialTimeEnd: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * Configures the range of years visible in the calendar.\n\t\t * Can either be relative to the current year, or an absolute range.\n\t\t * The default range is 50 years before and after the current year.\n\t\t * Note: years can be input in the field even if outside of this range.\n\t\t * @type {{start: number, end: number, relative: boolean}}\n\t\t */\n\t\tyearRange: {\n\t\t\tdefault: {start: -50, end: 50, relative: true},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tstart: {type: 'number'},\n\t\t\t\t\tend: {type: 'number'},\n\t\t\t\t\trelative: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when items have changed.\n\t\t * Set the `manage-items` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {[]}\n\t\t */\n\t\t'NOW_DATE_TIME_CALENDAR#ITEMS_SET': {},\n\t\t/**\n\t\t * Dispatched when selected items have been changed.\n\t\t * Set the `manage-selected-items` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {[]}\n\t\t */\n\t\t'NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET': {},\n\t\t/**\n\t\t * Dispatched when the user clicks on a footer action item. Payload\n\t\t * includes a reference to the clicked item and action.\n\t\t * The payload is determined by the component configuration:\n\t\t * - If `showDefaultFooterActions` is `true`, the `action` object has one key, `isDefault`, which is always `true`.\n\t\t * - If `footerActions` property is given, set `action.clickActionType` to override the action type.\n\t\t * @type {{action: Object}}\n\t\t */\n\t\t'NOW_DATE_TIME_CALENDAR#FOOTER_ACTION_CLICKED': {},\n\t},\n\tsetInitialState() {\n\t\treturn {\n\t\t\tactiveType: null,\n\t\t\ttimeRef: null,\n\t\t\ttimeRefEnd: null,\n\t\t\ttimeRefStart: null,\n\t\t\tfocusInfo: null,\n\t\t\tfallbackValues: [],\n\t\t\tlastFocusedItemId: null,\n\t\t\tselectionPreviewInterval: null,\n\t\t\tweekPreviewInterval: null,\n\t\t\tselectingSecondDate: false,\n\t\t\tstandalone: true,\n\t\t};\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]({\n\t\t\tproperties,\n\t\t\taction: {meta},\n\t\t\tupdateState,\n\t\t\tupdateProperties,\n\t\t\tdispatch,\n\t\t\tcontext,\n\t\t}) {\n\t\t\tconst {\n\t\t\t\tnowHoist,\n\t\t\t\ttype,\n\t\t\t\tselectedItems,\n\t\t\t\tvalue,\n\t\t\t\trangeValueStart,\n\t\t\t\trangeValueEnd,\n\t\t\t\tmode,\n\t\t\t} = properties;\n\t\t\tconst typeIsPreset = presetTypes.includes(type);\n\t\t\tif (meta.appended) {\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'standalone',\n\t\t\t\t\tvalue: false,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (typeIsPreset && nowHoist) {\n\t\t\t\tupdateState({\n\t\t\t\t\tactiveType: null,\n\t\t\t\t\tfallbackValues: selectedItems,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (\n\t\t\t\t(rangeValueStart || rangeValueEnd) &&\n\t\t\t\tselectedItems.length === 0 &&\n\t\t\t\tmode === 'interval' &&\n\t\t\t\t!meta.appended\n\t\t\t) {\n\t\t\t\tsetRangeValues(properties, updateProperties);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\tselectedItems.length === 0 &&\n\t\t\t\tmode === 'standard' &&\n\t\t\t\t!meta.appended\n\t\t\t) {\n\t\t\t\tsetValue(properties, updateProperties);\n\t\t\t}\n\t\t\tsetDateItems(properties, dispatch, context);\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]({\n\t\t\tstate: {lastFocusedItemId, selectingSecondDate},\n\t\t\taction: {payload, meta},\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tupdateProperties,\n\t\t\tcontext,\n\t\t}) {\n\t\t\tconst {selectedItems, disabledItems, nowHoist, mode} = properties;\n\t\t\tconst {name, previousValue} = payload;\n\t\t\tconst typeIsPreset = presetTypes.includes(properties.type);\n\t\t\tconst isHoisted = name === 'nowHoist' && nowHoist;\n\t\t\t// Only a preset `type` of calendar will trigger these changes\n\t\t\t// When custom calendars become supported, we should dispatch\n\t\t\t// an action to let customers know a significant property\n\t\t\t// has changed so it can be caught and trigger a calendar change\n\t\t\t// in their own implementation.\n\t\t\tif (typeIsPreset) {\n\t\t\t\tif (isHoisted) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tactiveType: null,\n\t\t\t\t\t\t// For interval picker, check will use multiple date items\n\t\t\t\t\t\tfallbackValues: selectedItems,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t(name === 'rangeValueStart' || name === 'rangeValueEnd') &&\n\t\t\t\t\t!meta.appended &&\n\t\t\t\t\tmode === 'interval'\n\t\t\t\t) {\n\t\t\t\t\tsetRangeValues(properties, updateProperties);\n\t\t\t\t}\n\t\t\t\tif (name === 'value' && !meta.appended && mode === 'standard') {\n\t\t\t\t\tsetValue(properties, updateProperties);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tisHoisted ||\n\t\t\t\t\tname === 'type' ||\n\t\t\t\t\tname === 'format' ||\n\t\t\t\t\tname === 'firstDayOfWeek' ||\n\t\t\t\t\tname === 'hideAdjacentDates' ||\n\t\t\t\t\t// selectedItems/disabledItems can be returned as a new array\n\t\t\t\t\t// each render, resulting in unnecessary rebuilding of new\n\t\t\t\t\t// date items. Instead, we can shallow compare the values to\n\t\t\t\t\t// determine if date items need to change.\n\t\t\t\t\t(name === 'selectedItems' &&\n\t\t\t\t\t\tselectedItems.length !== previousValue.length) ||\n\t\t\t\t\t(name === 'selectedItems' &&\n\t\t\t\t\t\titemsChanged(selectedItems, previousValue)) ||\n\t\t\t\t\t(name === 'disabledItems' &&\n\t\t\t\t\t\titemsChanged(disabledItems, previousValue))\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tname === 'selectedItems' &&\n\t\t\t\t\t\tselectedItems.length === 1 &&\n\t\t\t\t\t\tmode === 'interval'\n\t\t\t\t\t) {\n\t\t\t\t\t\tupdateState({selectingSecondDate: true});\n\t\t\t\t\t}\n\t\t\t\t\t// when there are multiple dates, we want to keep the calendar focus on what was last selected\n\t\t\t\t\tif (name === 'selectedItems' && selectedItems.length > 1) {\n\t\t\t\t\t\tlet item = getItemById(lastFocusedItemId, properties.items);\n\t\t\t\t\t\t// keep focus on correct date, if there is no item, allow default (ie: last item) be assumed\n\t\t\t\t\t\t// unless it's coming from date-time-presets panel\n\t\t\t\t\t\tif (item && selectingSecondDate) {\n\t\t\t\t\t\t\tproperties.focusDate = item.date;\n\t\t\t\t\t\t\tupdateState({selectingSecondDate: false});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsetDateItems(properties, dispatch, context);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_RENDERED]({\n\t\t\thost,\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t}) {\n\t\t\tconst {focusInfo} = state;\n\t\t\tconst {nowHoist: hasRendered, type: currentType} = properties;\n\t\t\tconst {type: prevPropertyType, nowHoist: hasPreviousRendered} =\n\t\t\t\taction.payload.previousRenderProperties;\n\t\t\tconst {activeType: prevActiveType} = action.payload.previousRenderState;\n\t\t\tconst hostEl = action.meta.hoistHost || host;\n\t\t\tconst stateTypeChanged = state.activeType !== prevActiveType;\n\t\t\tconst propTypeChanged = properties.type !== prevPropertyType;\n\t\t\tconst typeChanged = stateTypeChanged || propTypeChanged;\n\t\t\tif (\n\t\t\t\ttypeChanged ||\n\t\t\t\t(currentType === DateTypes.YEAR && !hasPreviousRendered && hasRendered)\n\t\t\t) {\n\t\t\t\tdispatch('PRIVATE#FOCUS_GRID');\n\t\t\t}\n\n\t\t\t// `focusInfo` is set when a directional key was used and\n\t\t\t// pagination to a new list of items (e.g., new month or year)\n\t\t\t// needs to occur before the correct grid item receives focus.\n\t\t\t// Examples:\n\t\t\t// - PageUp/PageDown keys (with or without shift)\n\t\t\t// - Arrow key at the top or bottom edges of the grid\n\t\t\tif (focusInfo) {\n\t\t\t\thandleFocusAfterTransition(focusInfo, hostEl, properties);\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'focusInfo',\n\t\t\t\t\tvalue: null,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If a rerender occurs and the lastFocusedItemId is null,\n\t\t\t// re-set the id to an item so the grid can receive focus\n\t\t\tif (!state.lastFocusedItemId) {\n\t\t\t\tconst item = getDefaultFocusableItem(\n\t\t\t\t\thostEl,\n\t\t\t\t\tproperties,\n\t\t\t\t\tstate.activeType,\n\t\t\t\t);\n\t\t\t\tconst id = item?.dataset.itemId;\n\n\t\t\t\tif (id) updateState({lastFocusedItemId: id});\n\t\t\t}\n\t\t},\n\t\t['NOW_INPUT_DATE_TIME#VALUE_SET']: setTimeInputValue,\n\t\t['NOW_INPUT_DATE_TIME#ENTER_KEYDOWN']: setTimeInputValue,\n\t\t/**\n\t\t * This is a generic handler to focus an item in the grid\n\t\t * based on priority:\n\t\t *\n\t\t * 1. selected item\n\t\t * 2. current item (e.g., today)\n\t\t * 3. 1st of the month (first non-adjacent item)\n\t\t */\n\t\t['PRIVATE#FOCUS_GRID']: {\n\t\t\tstopPropagation: true,\n\t\t\teffect({host, action, properties, state}) {\n\t\t\t\tconst hostEl = action.meta.hoistHost || host;\n\t\t\t\tconst activeOrSelected = getDefaultFocusableItem(\n\t\t\t\t\thostEl,\n\t\t\t\t\tproperties,\n\t\t\t\t\tstate.activeType,\n\t\t\t\t);\n\n\t\t\t\tif (activeOrSelected) {\n\t\t\t\t\tactiveOrSelected.scrollIntoView({\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\tblock: 'nearest',\n\t\t\t\t\t\tinline: 'nearest',\n\t\t\t\t\t});\n\t\t\t\t\tactiveOrSelected.focus({preventScroll: true});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Depending on the grid type, this triggers an item selection handler.\n\t\t */\n\t\t['PRIVATE#SELECT_ITEM']: {\n\t\t\tstopPropagation: true,\n\t\t\teffect({context, action, state, properties, updateState, dispatch}) {\n\t\t\t\tconst {type} = properties;\n\t\t\t\tconst {item} = action.payload;\n\t\t\t\tconst activeType = state.activeType || type;\n\n\t\t\t\tItemClickHandlers[activeType](\n\t\t\t\t\titem.date,\n\t\t\t\t\t{context, updateState, dispatch, state, properties},\n\t\t\t\t\tstate.activeType !== type,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * This is triggered when a directional navigation key is used\n\t\t * on a calendar grid cell. E.g., left arrow focuses previous logical\n\t\t * item, depending on document direction.\n\t\t */\n\t\t['PRIVATE#FOCUS_ITEM']: {stopPropagation: true, effect: handleItemFocus},\n\t\t['PRIVATE#SELECT_ITEM_PREVIEW']: {\n\t\t\tstopPropagation: true,\n\t\t\tmodifier: {\n\t\t\t\tname: modifierTypes.DEBOUNCE,\n\t\t\t\tdelay: 25,\n\t\t\t\tmaxWait: 75,\n\t\t\t\tcollate: false,\n\t\t\t},\n\t\t\teffect({action: {payload}, context, properties, state, updateState}) {\n\t\t\t\tconst {\n\t\t\t\t\titems,\n\t\t\t\t\tformat,\n\t\t\t\t\trangeInitiator,\n\t\t\t\t\tselectedItems,\n\t\t\t\t\tmode,\n\t\t\t\t\ttype,\n\t\t\t\t\tisoWeek,\n\t\t\t\t} = properties;\n\t\t\t\tconst {activeItems} = state;\n\t\t\t\tconst isWeekItem = type === DateTypes.WEEK_YEAR;\n\n\t\t\t\tconst target =\n\t\t\t\t\tgetItemById(payload.id, items)?.date ??\n\t\t\t\t\tgetItemById(payload.id, activeItems)?.date;\n\n\t\t\t\tif (isWeekItem) {\n\t\t\t\t\tconst isoWeekStartOn = isoWeek ? {weekStartsOn: 1} : {};\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tweekPreviewInterval: {\n\t\t\t\t\t\t\tstart: dateFnsSet(startOfWeek(target, isoWeekStartOn), {\n\t\t\t\t\t\t\t\thours: 0,\n\t\t\t\t\t\t\t\tminutes: 0,\n\t\t\t\t\t\t\t\tseconds: 0,\n\t\t\t\t\t\t\t\tmilliseconds: 0,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tend: dateFnsSet(lastDayOfWeek(target, isoWeekStartOn), {\n\t\t\t\t\t\t\t\thours: 0,\n\t\t\t\t\t\t\t\tminutes: 0,\n\t\t\t\t\t\t\t\tseconds: 0,\n\t\t\t\t\t\t\t\tmilliseconds: 0,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (mode !== 'interval' || !selectedItems.length) return;\n\n\t\t\t\tconst {[localeContext]: locale} = context;\n\n\t\t\t\tif (selectedItems.length === 1) {\n\t\t\t\t\tconst selected = dateFnsSet(\n\t\t\t\t\t\tparseTZ(selectedItems[0], format, new Date(), {\n\t\t\t\t\t\t\tlocale,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thours: 0,\n\t\t\t\t\t\t\tminutes: 0,\n\t\t\t\t\t\t\tseconds: 0,\n\t\t\t\t\t\t\tmilliseconds: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\tconst dates = [selected, target];\n\t\t\t\t\tif (isWeekItem) {\n\t\t\t\t\t\treturn updateState({\n\t\t\t\t\t\t\tselectionPreviewInterval: {\n\t\t\t\t\t\t\t\tstart: startOfWeek(dateFnsAdd(dateFnsMin(dates), {weeks: 1})),\n\t\t\t\t\t\t\t\tend: lastDayOfWeek(dateFnsSub(dateFnsMax(dates), {weeks: 1})),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn updateState({\n\t\t\t\t\t\tselectionPreviewInterval: {\n\t\t\t\t\t\t\tstart: dateFnsAdd(dateFnsMin(dates), {days: 1}),\n\t\t\t\t\t\t\tend: dateFnsSub(dateFnsMax(dates), {days: 1}),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (rangeInitiator === 'start') {\n\t\t\t\t\tconst selected = dateFnsSet(\n\t\t\t\t\t\tparseTZ(selectedItems[0], format, new Date(), {\n\t\t\t\t\t\t\tlocale,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thours: 0,\n\t\t\t\t\t\t\tminutes: 0,\n\t\t\t\t\t\t\tseconds: 0,\n\t\t\t\t\t\t\tmilliseconds: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\tconst dates = [selected, target];\n\n\t\t\t\t\tif (isWeekItem) {\n\t\t\t\t\t\treturn updateState({\n\t\t\t\t\t\t\tselectionPreviewInterval: {\n\t\t\t\t\t\t\t\tstart: startOfWeek(dateFnsAdd(target, {weeks: 1})),\n\t\t\t\t\t\t\t\tend: lastDayOfWeek(dateFnsSub(dateFnsMax(dates), {weeks: 1})),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn updateState({\n\t\t\t\t\t\tselectionPreviewInterval: {\n\t\t\t\t\t\t\tstart: dateFnsAdd(target, {days: 1}),\n\t\t\t\t\t\t\tend: dateFnsSub(dateFnsMax(dates), {days: 1}),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst selected = dateFnsSet(\n\t\t\t\t\tparseTZ(selectedItems[1], format, new Date(), {\n\t\t\t\t\t\tlocale,\n\t\t\t\t\t}),\n\t\t\t\t\t{\n\t\t\t\t\t\thours: 0,\n\t\t\t\t\t\tminutes: 0,\n\t\t\t\t\t\tseconds: 0,\n\t\t\t\t\t\tmilliseconds: 0,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tconst dates = [selected, target];\n\n\t\t\t\tif (isWeekItem) {\n\t\t\t\t\treturn updateState({\n\t\t\t\t\t\tselectionPreviewInterval: {\n\t\t\t\t\t\t\tstart: startOfWeek(dateFnsAdd(selected, {weeks: 1})),\n\t\t\t\t\t\t\tend: lastDayOfWeek(dateFnsSub(dateFnsMax(dates), {weeks: 1})),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn updateState({\n\t\t\t\t\tselectionPreviewInterval: {\n\t\t\t\t\t\tstart: dateFnsAdd(selected, {days: 1}),\n\t\t\t\t\t\tend: dateFnsSub(dateFnsMax(dates), {days: 1}),\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\n\t\t['NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET']({\n\t\t\taction: {payload},\n\t\t\tcontext,\n\t\t\tproperties,\n\t\t\tupdateProperties,\n\t\t}) {\n\t\t\t//if manageSelectedItems is true, selectedItems will be update elsewhere\n\t\t\tif (properties.manageSelectedItems) return;\n\t\t\tconst {[localeContext]: locale} = context;\n\t\t\tconst {format, isoWeek, required, type, mode} = properties;\n\t\t\tconst {value: selectedItems} = payload;\n\n\t\t\tconst [start, end] = selectedItems;\n\n\t\t\t// selected items don't include this data, so re-generate it\n\t\t\tconst {valid: validStart} = isDateTimeValueValid({\n\t\t\t\tformat,\n\t\t\t\tisoWeek,\n\t\t\t\tlocale,\n\t\t\t\trequired,\n\t\t\t\tvalue: start,\n\t\t\t});\n\n\t\t\t// selected items don't include this data, so re-generate it\n\t\t\tconst {valid: validEnd} = isDateTimeValueValid({\n\t\t\t\tformat,\n\t\t\t\tisoWeek,\n\t\t\t\tlocale,\n\t\t\t\trequired,\n\t\t\t\tvalue: end,\n\t\t\t});\n\t\t\tif (!validStart && !validEnd) return; // shouldn't ever really be invalid, but if so halt.\n\t\t\tconst itemsToSelect = getSelectedItems(\n\t\t\t\t[start, end],\n\t\t\t\tformat,\n\t\t\t\tlocale,\n\t\t\t\ttype,\n\t\t\t);\n\t\t\tif (mode === 'interval') {\n\t\t\t\tupdateProperties({\n\t\t\t\t\tselectedItems: itemsToSelect,\n\t\t\t\t\trangeValueStart: start,\n\t\t\t\t\trangeValueEnd: end,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tupdateProperties({\n\t\t\t\t\tselectedItems: itemsToSelect,\n\t\t\t\t\tvalue: start,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus(_, dispatch) {\n\t\t\t\t\tdispatch('PRIVATE#FOCUS_GRID');\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: [\n\t\t\t\t\t'--now-date-time--text-transform',\n\t\t\t\t\t'--now-date-time--font-style',\n\t\t\t\t\t'--now-date-time--font-family',\n\t\t\t\t\t'--now-date-time--font-weight',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t],\n\tstyles,\n\tview,\n});\n","import {ItemStateTypes, StartTimeData, Keys} from './constants';\n\nimport {findIndex, sumBy, values} from 'lodash';\nimport {\n\tisWithinInterval,\n\tgetMonth,\n\tgetYear,\n\tgetQuarter,\n\tlastDayOfWeek,\n\tisDate,\n\tisEqual,\n\tset,\n\tgetDay,\n\tcompareAsc,\n\tisValid,\n\tadd,\n\tsub,\n\taddQuarters,\n\tsubQuarters,\n\teachDayOfInterval,\n\teachMonthOfInterval,\n\teachYearOfInterval,\n\teachQuarterOfInterval,\n} from 'date-fns';\nimport {\n\tDateTypes,\n\tDateFormatTypes,\n\tisDateTimeValueValid,\n\tisTypeToFormatValid,\n\tremoveEscapedCharacters,\n\tisMatchTZ,\n\tparseTZ,\n\tlocaleContext,\n\tTYPE_FORMAT_ERROR_ID,\n\tINVALID_INITIAL_TIME_END_ERROR_ID,\n\tINVALID_INITIAL_TIME_ERROR_ID,\n\tINVALID_INITIAL_TIME_START_ERROR_ID,\n\tDISABLED_ITEMS_FORMAT_ERROR_ID,\n\tDISABLED_ITEMS_START_GREATER_THAN_END_ERROR_ID,\n\tpanelEditableErrorIds,\n\tprependErrorMessage,\n\tremoveErrorMessage,\n} from '@servicenow/library-date-time';\nimport {getActiveElement} from '@servicenow/library-enhanced-utils';\nimport {TIME_FORMAT_PATTERN, parseSubString} from '../now-date-time-calendar';\n\nconst {ADJACENT} = ItemStateTypes;\nconst panelEditableErrorSet = new Set(panelEditableErrorIds);\n\n/**\n * Gets a reference item from `items` containing a date.\n * Uses the second to last row of the items to avoid:\n * - rows with all headings; and\n * - rows with all dates out of range (only happens on\n *   last row for 'date' calendar)\n */\nexport function getDateRef(items, type) {\n\tconst minRows = [DateTypes.DATE, DateTypes.DATE_TIME].includes(type) ? 2 : 1;\n\tif (!items || items.length < minRows) return {};\n\tconst lastRowIdx = items.length - minRows;\n\treturn items[lastRowIdx].find((item) => !item[ADJACENT]);\n}\n\n/**\n * Given an array of dates, converts each to a Date object.\n * If an element is already a date, do nothing.\n * @returns {Date[]}\n */\nexport function valuesToDates(items, format, locale, isoWeek) {\n\treturn items\n\t\t.map((v) =>\n\t\t\tisDate(v)\n\t\t\t\t? v\n\t\t\t\t: parseTZ(\n\t\t\t\t\t\tv,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tnew Date(),\n\t\t\t\t\t\tformat === DateFormatTypes.WEEK_YEAR && isoWeek\n\t\t\t\t\t\t\t? {locale, weekStartsOn: 1}\n\t\t\t\t\t\t\t: {locale},\n\t\t\t\t\t),\n\t\t)\n\t\t.sort((date1, date2) => date1 - date2);\n}\n\nexport function getIndexOfDate(dateRef, fullIntervalList, type) {\n\tlet index = -1;\n\n\tif (\n\t\t[DateTypes.DATE, DateTypes.DATE_TIME, DateTypes.WEEK_YEAR].includes(type)\n\t) {\n\t\tlet compDate = dateRef;\n\t\tif (type === DateTypes.DATE_TIME) {\n\t\t\tcompDate = set(compDate, StartTimeData);\n\t\t}\n\t\tindex = findIndex(fullIntervalList, (date) => isEqual(date, compDate));\n\t} else if (type === DateTypes.MONTH) {\n\t\tindex = fullIntervalList.indexOf(fullIntervalList[getMonth(dateRef)]);\n\t} else if (type === DateTypes.YEAR) {\n\t\tconst year = getYear(dateRef);\n\t\tindex = findIndex(fullIntervalList, (date) => getYear(date) === year);\n\t} else if (type === DateTypes.QUARTER) {\n\t\tconst quarter = getQuarter(dateRef);\n\t\tindex = findIndex(fullIntervalList, (date) => getQuarter(date) === quarter);\n\t}\n\n\treturn index;\n}\n\nexport function isItemsValid(format, items, locale) {\n\tfor (const item of items) {\n\t\tif (item.value) {\n\t\t\tif (!isMatchTZ(item.value, format, {locale})) {\n\t\t\t\treturn {valid: false, errorId: DISABLED_ITEMS_FORMAT_ERROR_ID};\n\t\t\t}\n\t\t} else if (item.before) {\n\t\t\tif (!isMatchTZ(item.before, format, {locale})) {\n\t\t\t\treturn {valid: false, errorId: DISABLED_ITEMS_FORMAT_ERROR_ID};\n\t\t\t}\n\t\t} else if (item.after) {\n\t\t\tif (!isMatchTZ(item.after, format, {locale})) {\n\t\t\t\treturn {valid: false, errorId: DISABLED_ITEMS_FORMAT_ERROR_ID};\n\t\t\t}\n\t\t} else if (item.start && item.end) {\n\t\t\tif (\n\t\t\t\t!isMatchTZ(item.start, format, {locale}) ||\n\t\t\t\t!isMatchTZ(item.end, format, {locale})\n\t\t\t) {\n\t\t\t\treturn {valid: false, errorId: DISABLED_ITEMS_FORMAT_ERROR_ID};\n\t\t\t}\n\n\t\t\tconst startDate = parseTZ(item.start, format, new Date(), {locale});\n\t\t\tconst endDate = parseTZ(item.end, format, new Date(), {locale});\n\t\t\tif (startDate > endDate) {\n\t\t\t\treturn {\n\t\t\t\t\tvalid: false,\n\t\t\t\t\terrorId: DISABLED_ITEMS_START_GREATER_THAN_END_ERROR_ID,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {valid: true};\n}\n\nexport function isDisabledDate({\n\tdate,\n\tdisabledItems,\n\tdisableWeekends,\n\tweekendDays,\n\tformat,\n\tlocale,\n\ttype,\n}) {\n\tconst isWeekItem = type === DateTypes.WEEK_YEAR;\n\tif (!isWeekItem && disableWeekends && weekendDays.includes(getDay(date))) {\n\t\treturn true;\n\t}\n\treturn disabledItems.some((item) => {\n\t\tif (item.value) {\n\t\t\treturn isEqual(date, parseTZ(item.value, format, new Date(), {locale}));\n\t\t}\n\t\tif (item.before) {\n\t\t\tconst before = parseTZ(item.before, format, new Date(), {locale});\n\t\t\treturn isValid(before) && compareAsc(date, before) < 0;\n\t\t}\n\t\tif (item.after) {\n\t\t\tconst after = parseTZ(item.after, format, new Date(), {locale});\n\t\t\treturn isValid(after) && compareAsc(date, after) > 0;\n\t\t}\n\n\t\tif (item.start && item.end) {\n\t\t\tconst start = parseTZ(item.start, format, new Date(), {locale});\n\t\t\tconst end = parseTZ(item.end, format, new Date(), {locale});\n\n\t\t\treturn (\n\t\t\t\tisValid(start) &&\n\t\t\t\tisValid(end) &&\n\t\t\t\tcompareAsc(start, end) !== 1 &&\n\t\t\t\tisWithinInterval(date, {start, end})\n\t\t\t);\n\t\t}\n\t});\n}\n\n/**\n * Places focus onto the visual calendar\n */\nexport function focusCalendar(\n\thost,\n\t{state, updateState},\n\tfocusFromPresetsToCalendar,\n) {\n\tconst {shouldFocusCalendar} = state;\n\tconst {enablePresets} = state.properties;\n\tif (!shouldFocusCalendar) return;\n\n\tlet focusComponent = enablePresets\n\t\t? 'now-date-time-presets'\n\t\t: 'now-date-time-calendar';\n\n\tlet focusEl;\n\tif (!focusFromPresetsToCalendar) {\n\t\tfocusEl = host?.shadowRoot?.querySelector(focusComponent);\n\t} else {\n\t\tfocusComponent = 'now-date-time-calendar';\n\t\tfocusEl = host?.querySelector(focusComponent);\n\t}\n\n\tif (focusEl) {\n\t\t// JAWS will announce the wrong date cell if focus\n\t\t// lands in the calendar too early.\n\t\t// This also adds some stability by waiting until the calendar has\n\t\t// fully rendered before trying to focus it.\n\t\trequestAnimationFrame(() => {\n\t\t\tsetTimeout(() => focusEl.focus(), 250);\n\t\t});\n\t}\n\n\tupdateState({\n\t\tpath: 'shouldFocusCalendar',\n\t\tvalue: false,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n}\n\n/**\n * Returns focus to the proper input for now-date-time and now-date-time-interval\n */\nexport function focusInput(host, {state} = {}) {\n\tconst input =\n\t\tstate?.activeInput ?? host.shadowRoot.querySelector('.now-date-time-input');\n\tinput.focus({input: true});\n}\n\n/**\n * Tracks position and input targets when an input recieves focus\n */\nexport function handleFocus(event, {state, updateState}) {\n\tconst {disabled, readonly} = state.properties;\n\n\tif (disabled || readonly) return;\n\n\tconst node = event\n\t\t.composedPath()\n\t\t.find((e) => e?.classList?.contains('now-input'))\n\t\t?.querySelector('.now-input-field');\n\n\tif (node) {\n\t\tupdateState({\n\t\t\tpositionTarget: node,\n\t\t\tactiveInput: event.target,\n\t\t});\n\t}\n}\n\n/**\n * Track click on element within date-time input to determine if visual calendar should be closed\n */\nexport function isPathInDateTimePanel(activeInput, path) {\n\t/* activeInput is the input/component with which the user is interacting,\n\tpath is where the user has currently clicked. */\n\tconst shadowRootNode = path?.[0]?.getRootNode()?.host;\n\tconst activeInputRootNode = activeInput?.getRootNode()?.host;\n\tif (\n\t\tactiveInput.contains(shadowRootNode) ||\n\t\tactiveInput.shadowRoot.contains(shadowRootNode) ||\n\t\tshadowRootNode === activeInputRootNode //if the root node is the same, the click in inside the date time panel\n\t) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Track click on slots to determine if visual calendar should be closed\n */\nexport function handleSlotClick(event, {prefix, state, dispatch}) {\n\tconst {opened} = state.properties;\n\tif (opened) {\n\t\tdispatch(`${prefix}OPENED_SET`, {value: false});\n\t} else {\n\t\tevent.stopPropagation();\n\t}\n}\n\n/**\n * Track click on input to determine if visual calendar should open\n */\nexport function handleClick(event, {prefix, state, dispatch}) {\n\tconst {opened, messages, disabled, readonly, type} = state.properties;\n\n\tif (\n\t\t!isPanelEditable(messages) ||\n\t\tdisabled ||\n\t\treadonly ||\n\t\thideCalendarPanel(type)\n\t) {\n\t\treturn;\n\t}\n\n\tconst fieldInPath = event\n\t\t.composedPath()\n\t\t.find((e) => e?.classList?.contains('now-input-field'));\n\n\tif (!fieldInPath) return;\n\n\t// if  the input doesn't have focus, then we clicked on an icon or edge of input\n\t// and we should reset our focus\n\tif (!fieldInPath.classList.contains('has-focus')) {\n\t\tconst input = event\n\t\t\t.composedPath()\n\t\t\t.find((e) => e?.classList?.contains('now-date-time-input'));\n\t\tif (input) input.focus({input: true});\n\t}\n\n\tif (!opened) {\n\t\tdispatch(`${prefix}OPENED_SET`, {value: true});\n\t}\n}\n\nexport function handleKeydown(event, {state, dispatch}) {\n\tconst {prefix /*map*/} = state;\n\tconst {opened, readonly, messages, disabled, type} = state.properties;\n\n\tif (readonly || disabled || hideCalendarPanel(type)) return;\n\n\tconst [target] = event.composedPath();\n\n\t// If there is helper content, we don't want to respond to to key events\n\t// while the info icon is focused.\n\tconst inputIsFocused = target === getActiveElement();\n\n\tif (\n\t\t[Keys.ARROW_UP, Keys.ARROW_DOWN].includes(event.key) &&\n\t\tinputIsFocused &&\n\t\tisPanelEditable(messages)\n\t) {\n\t\tdispatch('PRIVATE#FOCUS_CALENDAR');\n\t} else if (opened && event.key === 'Tab' && inputIsFocused) {\n\t\tdispatch(`${prefix}OPENED_SET`, {value: false});\n\t}\n}\n\n/**\n * TODO: Support for timestamps (number) and ISO-8601 values.\n * If the value matches the format pattern, set the selected item.\n * @returns {string[]}\n */\nexport function getSelectedItems(values, format, locale, type) {\n\tconst {valid} = isTypeToFormatValid({type, format});\n\tif (!valid) return undefined;\n\tconst isWeekYearToken = type === DateTypes.WEEK_YEAR;\n\tconst ret = values.filter((v) =>\n\t\tisMatchTZ(v?.trim(), format, {\n\t\t\tlocale,\n\t\t\tuseAdditionalWeekYearTokens: isWeekYearToken,\n\t\t}),\n\t);\n\n\tif (ret.length === 0) return undefined;\n\treturn ret;\n}\n\n/**\n * If there are errors in `properties.messages`, determine\n * if any of those errors should prevent the panel from\n * opening.\n * @returns {boolean}\n */\nexport function isPanelEditable(messages) {\n\tconst invalidIds = messages.reduce(\n\t\t(acc, m) => (m.id ? [...acc, m.id] : acc),\n\t\t[],\n\t);\n\n\tif (invalidIds.length === 0) return true;\n\tif (invalidIds.length === 1) return panelEditableErrorSet.has(invalidIds[0]);\n\n\tfor (const id of invalidIds) {\n\t\tif (!panelEditableErrorSet.has(id)) return false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Checks for common / shared errors between date-time and date-time-interval:\n * - validates type against format\n * - validates value against format\n * @returns {boolean}\n */\nexport function checkForErrors(\n\tvalue,\n\terror,\n\t{context: {[localeContext]: locale}, properties, updateProperties},\n) {\n\tconst {\n\t\tdisabled,\n\t\tformat,\n\t\tisoWeek,\n\t\treadonly,\n\t\trequired,\n\t\ttype,\n\t\tinitialTime,\n\t\tinitialTimeStart,\n\t\tinitialTimeEnd,\n\t} = properties;\n\n\tlet errorId;\n\n\t// validate the type against the format\n\tconst {valid: typeFormatMatch, token} = isTypeToFormatValid(properties);\n\tif (typeFormatMatch || disabled || readonly) {\n\t\tremoveErrorMessage({\n\t\t\terrorId: TYPE_FORMAT_ERROR_ID,\n\t\t\tupdateProperties,\n\t\t});\n\t} else {\n\t\tprependErrorMessage({\n\t\t\terrorId: TYPE_FORMAT_ERROR_ID,\n\t\t\tupdateProperties,\n\t\t\tmessageData: {format, type, token},\n\t\t});\n\t\terrorId = TYPE_FORMAT_ERROR_ID;\n\t}\n\tif (initialTime && value === undefined) {\n\t\tconst initialTimeValid = checkTimeValid(\n\t\t\tformat,\n\t\t\tinitialTime,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\tupdateProperties,\n\t\t\ttype,\n\t\t\tINVALID_INITIAL_TIME_ERROR_ID,\n\t\t);\n\n\t\treturn {\n\t\t\tvalid: initialTimeValid && typeFormatMatch,\n\t\t\terrorId: INVALID_INITIAL_TIME_ERROR_ID,\n\t\t};\n\t}\n\tif (initialTimeStart && initialTimeEnd && value === undefined) {\n\t\tconst initialTimeStartValid = checkTimeValid(\n\t\t\tformat,\n\t\t\tinitialTimeStart,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\tupdateProperties,\n\t\t\ttype,\n\t\t\tINVALID_INITIAL_TIME_START_ERROR_ID,\n\t\t);\n\t\tif (!initialTimeStartValid) errorId = INVALID_INITIAL_TIME_START_ERROR_ID;\n\n\t\tconst initialTimeEndValid = checkTimeValid(\n\t\t\tformat,\n\t\t\tinitialTimeEnd,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\tupdateProperties,\n\t\t\ttype,\n\t\t\tINVALID_INITIAL_TIME_END_ERROR_ID,\n\t\t);\n\t\tif (!initialTimeEndValid) errorId = INVALID_INITIAL_TIME_END_ERROR_ID;\n\n\t\treturn {\n\t\t\tvalid: initialTimeStartValid && initialTimeEndValid && typeFormatMatch,\n\t\t\terrorId,\n\t\t};\n\t}\n\tif (initialTimeStart && value === undefined) {\n\t\tconst initialTimeStartValid = checkTimeValid(\n\t\t\tformat,\n\t\t\tinitialTimeStart,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\tupdateProperties,\n\t\t\ttype,\n\t\t\tINVALID_INITIAL_TIME_START_ERROR_ID,\n\t\t);\n\t\treturn {\n\t\t\tvalid: initialTimeStartValid && typeFormatMatch,\n\t\t\terrorId: INVALID_INITIAL_TIME_START_ERROR_ID,\n\t\t};\n\t}\n\tif (initialTimeEnd && value === undefined) {\n\t\tconst initialTimeEndValid = checkTimeValid(\n\t\t\tformat,\n\t\t\tinitialTimeEnd,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\tupdateProperties,\n\t\t\ttype,\n\t\t\tINVALID_INITIAL_TIME_END_ERROR_ID,\n\t\t);\n\t\treturn {\n\t\t\tvalid: initialTimeEndValid && typeFormatMatch,\n\t\t\terrorId: INVALID_INITIAL_TIME_END_ERROR_ID,\n\t\t};\n\t}\n\t// if we don't have a field value, don't re-validate\n\tif (value === undefined) return {valid: typeFormatMatch, errorId};\n\t// validate value against format\n\tconst {valid} = isDateTimeValueValid({\n\t\tformat,\n\t\tisoWeek,\n\t\tlocale,\n\t\trequired,\n\t\tvalue,\n\t});\n\n\tif (valid || disabled || readonly) {\n\t\tremoveErrorMessage({\n\t\t\terrorId: error,\n\t\t\tupdateProperties,\n\t\t});\n\t} else {\n\t\tprependErrorMessage({\n\t\t\terrorId: error,\n\t\t\tupdateProperties,\n\t\t\tmessageData: {\n\t\t\t\tformat,\n\t\t\t\ttype: getType(type),\n\t\t\t},\n\t\t});\n\t\terrorId = error;\n\t}\n\n\treturn {valid: valid && typeFormatMatch, errorId};\n}\n\nconst checkTimeValid = (\n\tformat,\n\tvalue,\n\tisoWeek,\n\tlocale,\n\trequired,\n\tupdateProperties,\n\ttype,\n\terrorId,\n) => {\n\tconst tokenizedFormat = removeEscapedCharacters(format);\n\tconst timeFormat = parseSubString(tokenizedFormat, TIME_FORMAT_PATTERN);\n\tconst dateTimeValueValidResp = isDateTimeValueValid({\n\t\tformat: timeFormat,\n\t\tisoWeek,\n\t\tlocale,\n\t\trequired,\n\t\tvalue: value,\n\t});\n\tconst initialTimeValid = dateTimeValueValidResp?.valid;\n\n\tif (initialTimeValid) {\n\t\tremoveErrorMessage({\n\t\t\terrorId: errorId,\n\t\t\tupdateProperties,\n\t\t});\n\t} else {\n\t\tprependErrorMessage({\n\t\t\terrorId: errorId,\n\t\t\tupdateProperties,\n\t\t\tmessageData: {\n\t\t\t\tformat,\n\t\t\t\ttype: getType(type),\n\t\t\t},\n\t\t});\n\t}\n\treturn initialTimeValid;\n};\n\n/**\n * Checks the value against disabled dates, adding necessary errors\n * @returns {object} response\n * @returns {boolean} response.isDisabled\n * @returns {Date} response.date\n */\nexport function checkForDisabledDates(\n\tvalue,\n\terror,\n\t{context: {[localeContext]: locale}, properties, updateProperties},\n) {\n\tconst {disableWeekends, disabledItems, format, type, weekendDays} =\n\t\tproperties;\n\tconst isWeekYearToken = type === DateTypes.WEEK_YEAR ? true : false;\n\tlet isDisabled;\n\tconst date =\n\t\tisMatchTZ(value, format, {\n\t\t\tlocale,\n\t\t\tuseAdditionalDayOfYearTokens: isWeekYearToken,\n\t\t}) && parseTZ(value, format, new Date(), {locale});\n\tif (\n\t\t[\n\t\t\tDateTypes.DATE,\n\t\t\tDateTypes.DATE_TIME,\n\t\t\tDateTypes.MONTH,\n\t\t\tDateTypes.YEAR,\n\t\t\tDateTypes.QUARTER,\n\t\t\tDateTypes.WEEK_YEAR,\n\t\t].includes(type)\n\t) {\n\t\tisDisabled = date\n\t\t\t? isDisabledDate({\n\t\t\t\t\tdate,\n\t\t\t\t\tdisabledItems,\n\t\t\t\t\tdisableWeekends,\n\t\t\t\t\tweekendDays,\n\t\t\t\t\tformat,\n\t\t\t\t\tlocale,\n\t\t\t\t\ttype,\n\t\t\t\t})\n\t\t\t: false;\n\t}\n\n\tif (isDisabled) {\n\t\tprependErrorMessage({\n\t\t\terrorId: error,\n\t\t\tupdateProperties,\n\t\t\tmessageData: {\n\t\t\t\ttype: getType(type),\n\t\t\t},\n\t\t});\n\t} else {\n\t\tremoveErrorMessage({\n\t\t\terrorId: error,\n\t\t\tupdateProperties,\n\t\t});\n\t}\n\n\treturn {isDisabled, date};\n}\n\n/**\n * Check to hide the calendar panel.\n * @returns {boolean}\n */\nexport function hideCalendarPanel(type) {\n\treturn type === DateTypes.TIME;\n}\n\n/**\n * Returns the error message data based on type.\n * @returns {string}\n */\nexport function getType(type) {\n\tswitch (type) {\n\t\tcase DateTypes.DATE_TIME:\n\t\t\treturn 'date/time';\n\t\tcase DateTypes.DATE:\n\t\t\treturn 'date';\n\t\tcase DateTypes.MONTH:\n\t\t\treturn 'month';\n\t\tcase DateTypes.YEAR:\n\t\t\treturn 'year';\n\t\tcase DateTypes.QUARTER:\n\t\t\treturn 'quarter';\n\t\tcase DateTypes.WEEK_YEAR:\n\t\t\treturn 'week-year';\n\t}\n}\n\nexport function addToDate(date, type, duration) {\n\tswitch (type) {\n\t\tcase DateTypes.MONTH:\n\t\t\treturn add(date, {months: duration});\n\t\tcase DateTypes.YEAR:\n\t\t\treturn add(date, {years: duration});\n\t\tcase DateTypes.QUARTER:\n\t\t\treturn addQuarters(date, duration);\n\t\tcase DateTypes.WEEK_YEAR:\n\t\t\treturn add(date, {weeks: duration});\n\t\tdefault:\n\t\t\treturn add(date, {days: duration});\n\t}\n}\n\nexport function subtractFromDate(date, type, duration) {\n\tswitch (type) {\n\t\tcase DateTypes.MONTH:\n\t\t\treturn sub(date, {months: duration});\n\t\tcase DateTypes.YEAR:\n\t\t\treturn sub(date, {years: duration});\n\t\tcase DateTypes.QUARTER:\n\t\t\treturn subQuarters(date, duration);\n\t\tcase DateTypes.WEEK_YEAR:\n\t\t\treturn lastDayOfWeek(sub(date, {weeks: duration}));\n\t\tdefault:\n\t\t\treturn sub(date, {days: duration});\n\t}\n}\n\nexport function getOverlapItemsPerType(rangeItems, type) {\n\tlet overlapItems = null;\n\tconst startItem = rangeItems[0];\n\tconst endItem = rangeItems[rangeItems.length - 1];\n\tif (\n\t\t[DateTypes.DATE, DateTypes.DATE_TIME, DateTypes.WEEK_YEAR].includes(type)\n\t) {\n\t\toverlapItems = eachDayOfInterval({\n\t\t\tstart: startItem,\n\t\t\tend: endItem,\n\t\t});\n\t} else if (type === DateTypes.MONTH) {\n\t\toverlapItems = eachMonthOfInterval({\n\t\t\tstart: startItem,\n\t\t\tend: endItem,\n\t\t});\n\t} else if (type === DateTypes.YEAR) {\n\t\toverlapItems = eachYearOfInterval({\n\t\t\tstart: startItem,\n\t\t\tend: endItem,\n\t\t});\n\t} else if (type === DateTypes.QUARTER) {\n\t\toverlapItems = eachQuarterOfInterval({\n\t\t\tstart: startItem,\n\t\t\tend: endItem,\n\t\t});\n\t}\n\treturn overlapItems;\n}\n\nexport function getDateFromWeek(week, format, isoWeek) {\n\tconst isoWeekStartOn = isoWeek\n\t\t? {useAdditionalDayOfYearTokens: true, weekStartsOn: 1}\n\t\t: {useAdditionalDayOfYearTokens: true};\n\treturn parseTZ(week, format, new Date(), isoWeekStartOn);\n}\n\nexport function getCalendarIcon(type) {\n\tif (type === DateTypes.TIME) return;\n\tif (type === DateTypes.DATE_TIME) return 'calendar-clock-outline';\n\n\treturn 'calendar-outline';\n}\n\nexport function getGroupsCount(groups) {\n\treturn sumBy(values(groups), (group) => group.length);\n}\n\nexport function getHoistedPreset() {\n\tconst popover = window.document.body.querySelector('now-popover-panel');\n\tif (!popover) return;\n\tconst {shadowRoot: popoverSR} = popover;\n\tconst slot = popoverSR.querySelector('slot');\n\tconst nodes = slot.assignedNodes();\n\t// nodes[0] is seismic-hoist\n\tif (nodes && nodes[0]?.className === 'now-date-time-presets') {\n\t\treturn nodes[0];\n\t}\n\treturn null;\n}\n\n/**\n * check if date-time configuration is valid\n * @returns {object} response\n * @returns {boolean} response.errorId\n * @returns {Date} response.valid\n */\nexport function checkIfConfigurationIsValid({\n\tcontext: {[localeContext]: locale},\n\tproperties,\n\tupdateProperties,\n}) {\n\tconst {disabledItems, format} = properties;\n\n\t// Validate configuration / developer errors\n\tconst {valid, errorId} = isItemsValid(format, disabledItems, locale);\n\n\tif (valid) {\n\t\treturn {\n\t\t\terrorId: null,\n\t\t\tvalid,\n\t\t};\n\t}\n\n\tprependErrorMessage({\n\t\terrorId,\n\t\tproperties,\n\t\tupdateProperties,\n\t\tmessageData: {format},\n\t});\n\n\treturn {\n\t\terrorId,\n\t\tvalid,\n\t};\n}\n","import {actionTypes} from '@servicenow/ui-core';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\tisDateTimeValueValid,\n\tlocaleContext,\n} from '@servicenow/library-date-time';\nimport {configAriaSchema} from '@servicenow/library-schemas';\nimport focusBehavior, {handleFocusFirstNode} from '@servicenow/behavior-focus';\nimport {messagesSchema, fieldLayoutSchema} from '@servicenow/now-input';\nimport styles from './_now-input-date-time.scss';\n\nconst {COMPONENT_PROPERTY_CHANGED} = actionTypes;\n\nconst redispatchWithFormat =\n\t(newActionType) =>\n\t({action, dispatch, properties: {format}}) => {\n\t\tdispatch(() => ({\n\t\t\ttype: newActionType,\n\t\t\tpayload: {...action.payload, format},\n\t\t}));\n\t};\n\nfunction getPlaceholder(f) {\n\treturn f.replace(/'/g, '');\n}\n\nconst view = (state) => {\n\tconst {\n\t\tsize,\n\t\tname = `input-${state.properties.nowId}`,\n\t\tvalue,\n\t\thelperContent,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\tlabel,\n\t\toptional,\n\t\trequired,\n\t\tconfigAria,\n\t\tdisabled,\n\t\tautofocus,\n\t\treadonly,\n\t\tmessages,\n\t\tmessagesMode,\n\t\tformat,\n\t\talign,\n\t\tfieldLayout,\n\t\tplaceholder,\n\t\twrapLabel,\n\t} = state.properties;\n\n\treturn (\n\t\t<now-input\n\t\t\tclassName=\"now-input-date-time-input\"\n\t\t\ttype=\"text\"\n\t\t\tvalue={value}\n\t\t\tinvalid={invalid}\n\t\t\tmanage-invalid\n\t\t\tname={name}\n\t\t\thelper-content={helperContent}\n\t\t\thide-required-indicator={hideRequiredIndicator}\n\t\t\tlabel={label}\n\t\t\tsize={size}\n\t\t\toptional={optional}\n\t\t\trequired={required}\n\t\t\tconfig-aria={configAria}\n\t\t\tdisabled={disabled}\n\t\t\tautofocus={autofocus}\n\t\t\treadonly={readonly}\n\t\t\tmessages={messages}\n\t\t\tmessages-mode={messagesMode}\n\t\t\tplaceholder={placeholder || getPlaceholder(format)}\n\t\t\talign={align}\n\t\t\tfield-layout={fieldLayout}\n\t\t\twrap-label={wrapLabel}\n\t\t>\n\t\t\t<slot slot=\"start\" name=\"start\" />\n\t\t\t<slot slot=\"end\" name=\"end\" />\n\t\t\t<slot slot=\"label-inline\" name=\"label-inline\" />\n\t\t\t<slot slot=\"label-end\" name=\"label-end\" />\n\t\t\t<slot slot=\"label-start\" name=\"label-start\" />\n\t\t</now-input>\n\t);\n};\n\n/**\n * The date-time input accepts a formatted date and/or time value.\n *\n * ```jsx\n * <now-input-date-time format=\"dd/MM/yyyy\" value=\"09/23/2010\" />\n * ```\n *\n * The `format` property uses Unicode Technical Standard (UTS) tokens.\n * See UTS and other supported format characters in the [`date-fns` library](https://date-fns.org/v2.28.0/docs/format)\n *\n * @seismicElement now-input-date-time\n * @private\n * @summary The date-time input accepts a formatted date and/or time value.\n */\ncreateEnhancedElement('now-input-date-time', {\n\tproperties: {\n\t\t/**\n\t\t * Sets the input size.\n\t\t * @type {('sm'|'md')}\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Name of the field control. Dispatched along with the field value\n\t\t * when the user interacts with the field.\n\t\t * @type {string}\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * The value of the input field.\n\t\t * @type {string}\n\t\t */\n\t\tvalue: {\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * If set, an iconic button with popover appears next to the field\n\t\t * label for displaying additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * When true, the required indicator is hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Indicates that the field is in an incorrect state,\n\t\t * which is reflected in the field display.\n\t\t * @type {boolean}\n\t\t */\n\t\tinvalid: {\n\t\t\tdefault: false,\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Label describing the overall purpose of the input field.\n\t\t * @type {string}\n\t\t */\n\t\tlabel: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Indicates the field is optional and not required to be completed by\n\t\t * the user before completing the form.\n\t\t * @type {boolean}\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Indicates that the user must select an item in the\n\t\t * select dropdown before they can proceed with completing the form.\n\t\t * @type {boolean}\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If the `type` property is `'week'`, date calculation accounts for a leap week.\n\t\t * @type {boolean}\n\t\t */\n\t\tisoWeek: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Configures the Unicode Technical Standard (UTS) format of the input value.\n\t\t * See UTS and other supported format characters in the `date-fns` library: https://date-fns.org/v2.28.0/docs/format\n\t\t * @type {string}\n\t\t */\n\t\tformat: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * component. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'input' key corresponds to the inner html `<input>` in\n\t\t * now-input-date-time. See https://www.w3.org/TR/wai-aria-1.2/#input for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string, role: string }}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {input: configAriaSchema},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the user cannot interact with the field\n\t\t * or change its value and the field appears unavailable.\n\t\t * @type {boolean}\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the focus is automatically placed inside the input\n\t\t * on page load.\n\t\t * @type {boolean}\n\t\t */\n\t\tautofocus: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Hint text displayed in the input when the user has not yet entered a value. When a placeholder is not provided, the component uses the format as the placeholder.\n\t\t * @type {string}\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field.\n\t\t * @type {boolean}\n\t\t */\n\t\treadonly: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Array of inline alert messages that display below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t */\n\t\tmessages: {default: [], schema: messagesSchema},\n\t\t/**\n\t\t * The messages display mode. Useful for when messages are rendered outside the shadowRoot.\n\t\t * - \"auto\" (Default): will be visible to sighted users and read by screen readers.\n\t\t * - \"visual-only\": will not be read by screen readers.\n\t\t * - \"sr-only\": will not be visible to sighted users.\n\t\t * @type {('auto'|'visual-only'|'sr-only')}\n\t\t * @private\n\t\t */\n\t\tmessagesMode: {\n\t\t\tdefault: 'auto',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['auto', 'visual-only', 'sr-only'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text alignment within an input field.\n\t\t * - `start`: Align the text to the start of the input field.\n\t\t * - `center`: Align the text to the center of the input field.\n\t\t * - `end`: Align the text to the end of the input field.\n\t\t * By default:  `start`.\n\t\t * @type {('start'|'center'|'end')}\n\t\t */\n\t\talign: {schema: {type: 'string', enum: ['start', 'center', 'end']}},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, form-field and slotted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\taction,\n\t\t\tcontext: {[localeContext]: locale},\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t}) => {\n\t\t\tconst {value, format, disabled, readonly} = properties;\n\t\t\tconst {name} = action.payload;\n\n\t\t\tif (['disabled', 'format', 'readonly'].includes(name)) {\n\t\t\t\tconst {name: inputName, isoWeek, required} = properties;\n\t\t\t\tconst {valid} = isDateTimeValueValid({\n\t\t\t\t\tvalue,\n\t\t\t\t\tformat,\n\t\t\t\t\trequired,\n\t\t\t\t\tisoWeek,\n\t\t\t\t\tlocale,\n\t\t\t\t});\n\t\t\t\tconst invalid = !valid;\n\n\t\t\t\tdispatch(({properties: {value: fieldValue}}) => ({\n\t\t\t\t\ttype: 'NOW_INPUT_DATE_TIME#INVALID_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname: inputName,\n\t\t\t\t\t\tvalue: disabled || readonly ? false : invalid,\n\t\t\t\t\t\tfieldValue,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t},\n\t\t\t\t}));\n\t\t\t}\n\t\t},\n\t\t['NOW_INPUT#INVALID_SET']({\n\t\t\tcontext: {[localeContext]: locale},\n\t\t\taction,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t}) {\n\t\t\tconst {name, fieldValue, fromHandleBlur, fromInputPropertyChanged} =\n\t\t\t\taction.payload;\n\t\t\tconst {format, isoWeek, required} = properties;\n\t\t\tconst {valid, date, isoDate} = isDateTimeValueValid({\n\t\t\t\tvalue: fieldValue,\n\t\t\t\tformat,\n\t\t\t\tisoWeek,\n\t\t\t\tlocale,\n\t\t\t\trequired,\n\t\t\t});\n\t\t\tdispatch(({properties}) => {\n\t\t\t\tconst {disabled, readonly, value: previousValue} = properties;\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_INPUT_DATE_TIME#VALUE_SET',\n\t\t\t\t\tpayload: {name, value: fieldValue, format, date, isoDate},\n\t\t\t\t\tshouldDispatch:\n\t\t\t\t\t\t!disabled && !readonly && valid && fieldValue !== previousValue,\n\t\t\t\t};\n\t\t\t});\n\t\t\tdispatch('NOW_INPUT_DATE_TIME#INVALID_SET', {\n\t\t\t\tname,\n\t\t\t\tvalue: !valid,\n\t\t\t\tfieldValue,\n\t\t\t\tformat,\n\t\t\t\tfromHandleBlur,\n\t\t\t\tfromInputPropertyChanged,\n\t\t\t});\n\t\t},\n\t\t['NOW_INPUT#INPUT']: redispatchWithFormat('NOW_INPUT_DATE_TIME#INPUT'),\n\t\t['NOW_INPUT#ENTER_KEYDOWN']: redispatchWithFormat(\n\t\t\t'NOW_INPUT_DATE_TIME#ENTER_KEYDOWN',\n\t\t),\n\t\t['PRIVATE#FOCUS_INPUT']: {\n\t\t\tstopPropagation: true,\n\t\t\teffect({host}) {\n\t\t\t\tconst nowInput = host.shadowRoot.querySelector('now-input');\n\t\t\t\tconst nativeInput = nowInput.shadowRoot.querySelector(\n\t\t\t\t\t'input.now-input-native',\n\t\t\t\t);\n\t\t\t\tnativeInput.focus();\n\t\t\t},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for field decorators. Located at the end\n\t\t * of the input field.\n\t\t */\n\t\tend: {},\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of the label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field.\n\t\t * Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: Boolean. Value of the `invalid` property, which is based on\n\t\t *   the values of the `required` and `pattern` properties.\n\t\t * - `fieldValue`: String. Value entered in the field.\n\t\t * - `format`: String. The value format.\n\t\t *\n\t\t * Set the `manage-invalid` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: boolean, fieldValue: string, format: string}}\n\t\t */\n\t\t'NOW_INPUT_DATE_TIME#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field\n\t\t * and the value is valid. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: String. Value entered in the field.\n\t\t * - `format`: String. The value format.\n\t\t * - `date`: The Date() constructor of the value.\n\t\t * - `isoDate`: String. The ISO formatted value.\n\t\t *\n\t\t * Set the `manage-value` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: string, format: string, date: Date, isoDate: string}}\n\t\t */\n\t\t'NOW_INPUT_DATE_TIME#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t\tdate: {type: 'object'},\n\t\t\t\t\tisoDate: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user enters data in the field by typing or\n\t\t * pasting text. The system does not validate the value or update\n\t\t * the `value` property. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `data`: String. Value entered in the field that caused the event to fire.\n\t\t * - `fieldValue`: String. Current value of the field when the event fired.\n\t\t * @type {{name: string, data: string, fieldValue: string}}\n\t\t */\n\t\t'NOW_INPUT_DATE_TIME#INPUT': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tdata: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user presses the Enter key while focus is inside\n\t\t * the input.\n\t\t * @type {{name: string, fieldValue: string}}\n\t\t */\n\t\t'NOW_INPUT_DATE_TIME#ENTER_KEYDOWN': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus(host, dispatch, {input}) {\n\t\t\t\t\tif (input) {\n\t\t\t\t\t\treturn dispatch('PRIVATE#FOCUS_INPUT');\n\t\t\t\t\t}\n\t\t\t\t\thandleFocusFirstNode(host);\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n\tstyles,\n\tview,\n});\n","import {focusInput} from '../utils/helper';\nimport {\n\tDateTypes,\n\tisDateTimeValueValid,\n\tlocaleContext,\n} from '@servicenow/library-date-time';\n\nexport default {\n\t['NOW_DATE_TIME_CALENDAR#ITEMS_SET']({\n\t\taction: {payload = {}},\n\t\tdispatch,\n\t\tstate: {prefix},\n\t\tproperties,\n\t\tupdateProperties,\n\t}) {\n\t\tdispatch(() => ({\n\t\t\ttype: `${prefix}ITEMS_SET`,\n\t\t\tpayload,\n\t\t}));\n\n\t\tconst {footerActions, showDefaultFooterActions, isDateManuallySet} =\n\t\t\tproperties;\n\n\t\tconst hasFooterActions =\n\t\t\tfooterActions.length > 0 || showDefaultFooterActions;\n\n\t\tif (hasFooterActions && isDateManuallySet) {\n\t\t\tupdateProperties({isDateManuallySet: false});\n\t\t}\n\t},\n\t['NOW_DATE_TIME_CALENDAR#FOOTER_ACTION_CLICKED']({\n\t\taction: {payload},\n\t\tdispatch,\n\t\thost,\n\t\tproperties,\n\t\tstate,\n\t}) {\n\t\tconst {prefix} = state;\n\t\tconst {type, showDefaultFooterActions, footerActions} = properties;\n\t\tconst {\n\t\t\taction: {isDefault, isToday, clickActionType, closeCalendar},\n\t\t\tinitiator,\n\t\t} = payload;\n\t\tconst noFooterActionsPresent =\n\t\t\t!showDefaultFooterActions && footerActions.length === 0;\n\n\t\tdispatch(`${prefix}FOOTER_ACTION_CLICKED`, {...payload});\n\n\t\tif (\n\t\t\tisToday &&\n\t\t\t[\n\t\t\t\tDateTypes.DATE,\n\t\t\t\tDateTypes.DATE_TIME,\n\t\t\t\tDateTypes.MONTH,\n\t\t\t\tDateTypes.QUARTER,\n\t\t\t\tDateTypes.WEEK_YEAR,\n\t\t\t].includes(type) &&\n\t\t\t[DateTypes.MONTH, DateTypes.YEAR, DateTypes.WEEK_YEAR].includes(initiator)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tcloseCalendar ||\n\t\t\tisDefault ||\n\t\t\tclickActionType ||\n\t\t\t(isToday && noFooterActionsPresent)\n\t\t) {\n\t\t\tdispatch(`${prefix}OPENED_SET`, {value: false});\n\t\t\tfocusInput(host, {state});\n\t\t}\n\t},\n\t['NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET']({\n\t\taction: {payload},\n\t\tcontext,\n\t\tdispatch,\n\t\thost,\n\t\tproperties,\n\t\tstate,\n\t\tupdateProperties,\n\t\tupdateState,\n\t}) {\n\t\tconst {[localeContext]: locale} = context;\n\t\tconst {activeInput, prefix, mode, prevActivePreset} = state;\n\t\tconst {\n\t\t\tfooterActions,\n\t\t\tformat,\n\t\t\tisoWeek,\n\t\t\trequired,\n\t\t\tshowDefaultFooterActions,\n\t\t\ttype,\n\t\t} = properties;\n\n\t\tlet selectedItems;\n\t\tlet revertPresetSelection;\n\n\t\tif (\n\t\t\tpayload.initiator &&\n\t\t\tpayload.initiator === 'CALENDAR_FOOTER_CANCEL_BUTTON' &&\n\t\t\tproperties.enablePresets &&\n\t\t\tpayload.value.length === 0\n\t\t) {\n\t\t\tselectedItems = [state.prevValueStart, state.prevValueEnd];\n\t\t\trevertPresetSelection = true;\n\t\t} else {\n\t\t\tselectedItems = payload.value;\n\t\t}\n\n\t\tconst autoClose =\n\t\t\t!showDefaultFooterActions &&\n\t\t\tfooterActions.length === 0 &&\n\t\t\ttype !== DateTypes.DATE_TIME;\n\n\t\t// standard input mode\n\t\tif (mode === 'standard') {\n\t\t\tconst {name} = properties;\n\t\t\tconst value = selectedItems?.[0] ?? '';\n\n\t\t\t// selected items don't include this data, so re-generate it\n\t\t\tconst {valid, date, isoDate} = isDateTimeValueValid({\n\t\t\t\tformat,\n\t\t\t\tisoWeek,\n\t\t\t\tlocale,\n\t\t\t\trequired,\n\t\t\t\tvalue,\n\t\t\t});\n\n\t\t\tif (!valid) return; // shouldn't ever happen, but if so halt\n\n\t\t\tdispatch(`${prefix}VALUE_SET`, {\n\t\t\t\tdate,\n\t\t\t\tformat,\n\t\t\t\tisoDate,\n\t\t\t\tname,\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t});\n\n\t\t\t// only dispatch OPENED_SET if no footer actions of any\n\t\t\t// kind are used AND the format excludes time\n\t\t\tif (autoClose) {\n\t\t\t\tdispatch(`${prefix}OPENED_SET`, {value: false});\n\t\t\t\tfocusInput(host, {state});\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst input = activeInput?.dataset?.input;\n\t\tconst name = `input-${properties.nowId}-${input}`;\n\t\tlet [start, end] = selectedItems;\n\n\t\t// selected items don't include this data, so re-generate it\n\t\tconst {valid: validStart, isoDate: isoDateStart} = isDateTimeValueValid({\n\t\t\tformat,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\tvalue: start,\n\t\t});\n\n\t\t// selected items don't include this data, so re-generate it\n\t\tconst {valid: validEnd, isoDate: isoDateEnd} = isDateTimeValueValid({\n\t\t\tformat,\n\t\t\tisoWeek,\n\t\t\tlocale,\n\t\t\trequired,\n\t\t\tvalue: end,\n\t\t});\n\n\t\tif (!validStart && !validEnd) return; // shouldn't ever really be invalid, but if so halt.\n\n\t\tconst hasRange = validStart && validEnd && start && end;\n\n\t\tdispatch(`${prefix}VALUE_START_SET`, {\n\t\t\tdate: new Date(start),\n\t\t\tformat,\n\t\t\tisoDate: isoDateStart,\n\t\t\tname,\n\t\t\ttype,\n\t\t\tvalue: start || '',\n\t\t});\n\n\t\tdispatch(`${prefix}VALUE_END_SET`, {\n\t\t\tdate: new Date(end),\n\t\t\tformat,\n\t\t\tisoDate: isoDateEnd,\n\t\t\tname,\n\t\t\ttype,\n\t\t\tvalue: end || '',\n\t\t});\n\n\t\tif (revertPresetSelection) {\n\t\t\tupdateState({\n\t\t\t\tpresetValueStart: start,\n\t\t\t\tpresetValueEnd: end,\n\t\t\t});\n\t\t\tupdateProperties({\n\t\t\t\tactivePreset: prevActivePreset,\n\t\t\t});\n\t\t}\n\n\t\t// only dispatch OPENED_SET if no footer actions of any\n\t\t// kind are used AND the format excludes time AND a full range exists\n\t\tif (autoClose && hasRange) {\n\t\t\tdispatch(`${prefix}OPENED_SET`, {value: false});\n\t\t\tfocusInput(host, {state});\n\t\t}\n\t},\n\t['PRIVATE#FOCUS_INPUT']({host, dispatch, state}) {\n\t\tconst {prefix} = state;\n\t\tdispatch(`${prefix}OPENED_SET`, {value: false});\n\t\tfocusInput(host, {state});\n\t},\n};\n","import {CALENDAR_TIME_INPUT_ID, TRIGGER_ID} from '../utils/constants';\nimport {isDisabledDate, focusInput} from '../utils/helper';\nimport {localeContext, isMatchTZ, parseTZ} from '@servicenow/library-date-time';\n\nfunction updatePrevValue({fieldValue, mode, input, updateState}) {\n\tif (mode === 'standard') {\n\t\tupdateState({\n\t\t\tpath: 'prevValue',\n\t\t\tvalue: fieldValue,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t});\n\t} else {\n\t\tif (input === 'start') {\n\t\t\tupdateState({\n\t\t\t\tpath: 'prevValueStart',\n\t\t\t\tvalue: fieldValue,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t});\n\t\t} else if (input === 'end') {\n\t\t\tupdateState({\n\t\t\t\tpath: 'prevValueEnd',\n\t\t\t\tvalue: fieldValue,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction runValidation({options, dispatch, input, fieldValue, updateState}) {\n\tdispatch(({state, properties}) => {\n\t\tconst {prevValue, prevValueStart, prevValueEnd, mode} = state;\n\t\tconst {valueStart, valueEnd, required, invalid, readonly} = properties;\n\n\t\tif (required && !invalid && fieldValue === '') {\n\t\t\tupdatePrevValue({fieldValue, mode, input, updateState});\n\t\t\treturn {\n\t\t\t\ttype: 'PRIVATE#VALIDATE',\n\t\t\t\tpayload: options,\n\t\t\t};\n\t\t}\n\t\tif (readonly) {\n\t\t\treturn {shouldDispatch: false};\n\t\t}\n\n\t\tif (prevValue !== null) {\n\t\t\tif (fieldValue === prevValue) {\n\t\t\t\treturn {shouldDispatch: false};\n\t\t\t}\n\t\t} else if (\n\t\t\tinput === 'start' &&\n\t\t\tfieldValue === prevValueStart &&\n\t\t\tvalueEnd === prevValueEnd\n\t\t) {\n\t\t\treturn {shouldDispatch: false};\n\t\t} else if (\n\t\t\tinput === 'end' &&\n\t\t\tfieldValue === prevValueEnd &&\n\t\t\tvalueStart === prevValueStart\n\t\t) {\n\t\t\treturn {shouldDispatch: false};\n\t\t}\n\n\t\tupdatePrevValue({fieldValue, mode, input, updateState});\n\n\t\treturn {\n\t\t\ttype: 'PRIVATE#VALIDATE',\n\t\t\tpayload: options,\n\t\t};\n\t});\n}\n\nfunction redispatchWithType(newActionType) {\n\treturn ({host, action, dispatch, properties, state, updateProperties}) => {\n\t\tconst {prefix} = state;\n\t\tconst {type} = properties;\n\t\tconst newType = `${prefix}${newActionType}`;\n\n\t\tif (newActionType === 'INPUT') {\n\t\t\tconst {footerActions, showDefaultFooterActions, isDateManuallySet} =\n\t\t\t\tproperties;\n\t\t\tconst hasFooterActions =\n\t\t\t\tfooterActions.length > 0 || showDefaultFooterActions;\n\n\t\t\tif (hasFooterActions && !isDateManuallySet) {\n\t\t\t\tupdateProperties({isDateManuallySet: true});\n\t\t\t}\n\t\t}\n\n\t\tif (action.payload.id === TRIGGER_ID) {\n\t\t\treturn dispatch(() => ({\n\t\t\t\ttype: newType,\n\t\t\t\tpayload: {...action.payload, type},\n\t\t\t}));\n\t\t}\n\n\t\tif (\n\t\t\taction.type === 'NOW_INPUT_DATE_TIME#ENTER_KEYDOWN' &&\n\t\t\taction.payload.id === CALENDAR_TIME_INPUT_ID\n\t\t) {\n\t\t\tdispatch(() => ({type: `${prefix}OPENED_SET`, payload: {value: false}}));\n\n\t\t\treturn focusInput(host, {state});\n\t\t}\n\n\t\treturn dispatch(() => ({\n\t\t\ttype: newType,\n\t\t\tpayload: {...action.payload, type},\n\t\t}));\n\t};\n}\n\nexport default {\n\t['NOW_INPUT_DATE_TIME#INVALID_SET']({\n\t\taction,\n\t\tproperties,\n\t\tdispatch,\n\t\tupdateProperties,\n\t\tstate,\n\t\tupdateState,\n\t}) {\n\t\tconst {\n\t\t\tname,\n\t\t\tvalue,\n\t\t\tfieldValue,\n\t\t\tid,\n\t\t\tinput = null,\n\t\t\tfromHandleBlur,\n\t\t\tfromInputPropertyChanged,\n\t\t} = action.payload;\n\t\tconst {opened} = properties;\n\n\t\tif (id !== TRIGGER_ID || (!fromHandleBlur && opened)) return;\n\n\t\t// if the value is invalid, we need to ensure we clear out our existing value for the calendar view\n\t\tif (value) {\n\t\t\tif (input) {\n\t\t\t\tif (input === 'start') updateProperties({valueStart: fieldValue});\n\t\t\t\telse updateProperties({valueEnd: fieldValue});\n\t\t\t} else {\n\t\t\t\tupdateProperties({value: fieldValue});\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tfromInputPropertyChanged ||\n\t\t\tdocument.activeElement.classList.contains('now-date-time-calendar') ||\n\t\t\tdocument.activeElement.classList.contains('now-date-time-presets')\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst options = {\n\t\t\tinitiator: 'NOW_INPUT_DATE_TIME#INVALID_SET',\n\t\t\tfieldValue,\n\t\t\tinput,\n\t\t\tname,\n\t\t\tfromHandleBlur,\n\t\t};\n\n\t\trunValidation({\n\t\t\toptions: options,\n\t\t\tdispatch,\n\t\t\tinput: input,\n\t\t\tfieldValue: fieldValue,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t});\n\t},\n\t['NOW_INPUT_DATE_TIME#VALUE_SET']({\n\t\taction,\n\t\tcontext: {[localeContext]: locale},\n\t\tdispatch,\n\t\tproperties,\n\t\tstate,\n\t}) {\n\t\tconst {name, value, id, input, isoDate} = action.payload;\n\t\tconst {prefix} = state;\n\t\tif (id !== TRIGGER_ID) return;\n\t\tconst {format, disabledItems, disableWeekends, weekendDays, type} =\n\t\t\tproperties;\n\n\t\tconst date =\n\t\t\tisMatchTZ(value, format, {locale}) &&\n\t\t\tparseTZ(value, format, new Date(), {locale});\n\t\tconst isDisabled = date\n\t\t\t? isDisabledDate({\n\t\t\t\t\tdate,\n\t\t\t\t\tdisabledItems,\n\t\t\t\t\tdisableWeekends,\n\t\t\t\t\tweekendDays,\n\t\t\t\t\tformat,\n\t\t\t\t\tlocale,\n\t\t\t\t})\n\t\t\t: false;\n\n\t\tif (isDisabled) return;\n\n\t\tlet dispatchType = `${prefix}VALUE_SET`;\n\t\tif (input) {\n\t\t\tdispatchType =\n\t\t\t\tinput === 'start'\n\t\t\t\t\t? `${prefix}VALUE_START_SET`\n\t\t\t\t\t: `${prefix}VALUE_END_SET`;\n\t\t}\n\n\t\tdispatch(() => {\n\t\t\treturn {\n\t\t\t\ttype: dispatchType,\n\t\t\t\tpayload: {\n\t\t\t\t\tname,\n\t\t\t\t\ttype,\n\t\t\t\t\tvalue,\n\t\t\t\t\tformat,\n\t\t\t\t\tdate,\n\t\t\t\t\tisoDate,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t},\n\t['NOW_INPUT_DATE_TIME#INPUT']: redispatchWithType('INPUT'),\n\t['NOW_INPUT_DATE_TIME#ENTER_KEYDOWN']: redispatchWithType('ENTER_KEYDOWN'),\n};\n","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: {\n      regular: 'méně než sekunda',\n      past: 'před méně než sekundou',\n      future: 'za méně než sekundu'\n    },\n    few: {\n      regular: 'méně než {{count}} sekundy',\n      past: 'před méně než {{count}} sekundami',\n      future: 'za méně než {{count}} sekundy'\n    },\n    many: {\n      regular: 'méně než {{count}} sekund',\n      past: 'před méně než {{count}} sekundami',\n      future: 'za méně než {{count}} sekund'\n    }\n  },\n  xSeconds: {\n    one: {\n      regular: 'sekunda',\n      past: 'před sekundou',\n      future: 'za sekundu'\n    },\n    few: {\n      regular: '{{count}} sekundy',\n      past: 'před {{count}} sekundami',\n      future: 'za {{count}} sekundy'\n    },\n    many: {\n      regular: '{{count}} sekund',\n      past: 'před {{count}} sekundami',\n      future: 'za {{count}} sekund'\n    }\n  },\n  halfAMinute: {\n    type: 'other',\n    other: {\n      regular: 'půl minuty',\n      past: 'před půl minutou',\n      future: 'za půl minuty'\n    }\n  },\n  lessThanXMinutes: {\n    one: {\n      regular: 'méně než minuta',\n      past: 'před méně než minutou',\n      future: 'za méně než minutu'\n    },\n    few: {\n      regular: 'méně než {{count}} minuty',\n      past: 'před méně než {{count}} minutami',\n      future: 'za méně než {{count}} minuty'\n    },\n    many: {\n      regular: 'méně než {{count}} minut',\n      past: 'před méně než {{count}} minutami',\n      future: 'za méně než {{count}} minut'\n    }\n  },\n  xMinutes: {\n    one: {\n      regular: 'minuta',\n      past: 'před minutou',\n      future: 'za minutu'\n    },\n    few: {\n      regular: '{{count}} minuty',\n      past: 'před {{count}} minutami',\n      future: 'za {{count}} minuty'\n    },\n    many: {\n      regular: '{{count}} minut',\n      past: 'před {{count}} minutami',\n      future: 'za {{count}} minut'\n    }\n  },\n  aboutXHours: {\n    one: {\n      regular: 'přibližně hodina',\n      past: 'přibližně před hodinou',\n      future: 'přibližně za hodinu'\n    },\n    few: {\n      regular: 'přibližně {{count}} hodiny',\n      past: 'přibližně před {{count}} hodinami',\n      future: 'přibližně za {{count}} hodiny'\n    },\n    many: {\n      regular: 'přibližně {{count}} hodin',\n      past: 'přibližně před {{count}} hodinami',\n      future: 'přibližně za {{count}} hodin'\n    }\n  },\n  xHours: {\n    one: {\n      regular: 'hodina',\n      past: 'před hodinou',\n      future: 'za hodinu'\n    },\n    few: {\n      regular: '{{count}} hodiny',\n      past: 'před {{count}} hodinami',\n      future: 'za {{count}} hodiny'\n    },\n    many: {\n      regular: '{{count}} hodin',\n      past: 'před {{count}} hodinami',\n      future: 'za {{count}} hodin'\n    }\n  },\n  xDays: {\n    one: {\n      regular: 'den',\n      past: 'před dnem',\n      future: 'za den'\n    },\n    few: {\n      regular: '{{count}} dny',\n      past: 'před {{count}} dny',\n      future: 'za {{count}} dny'\n    },\n    many: {\n      regular: '{{count}} dní',\n      past: 'před {{count}} dny',\n      future: 'za {{count}} dní'\n    }\n  },\n  aboutXWeeks: {\n    one: {\n      regular: 'přibližně týden',\n      past: 'přibližně před týdnem',\n      future: 'přibližně za týden'\n    },\n    few: {\n      regular: 'přibližně {{count}} týdny',\n      past: 'přibližně před {{count}} týdny',\n      future: 'přibližně za {{count}} týdny'\n    },\n    many: {\n      regular: 'přibližně {{count}} týdnů',\n      past: 'přibližně před {{count}} týdny',\n      future: 'přibližně za {{count}} týdnů'\n    }\n  },\n  xWeeks: {\n    one: {\n      regular: 'týden',\n      past: 'před týdnem',\n      future: 'za týden'\n    },\n    few: {\n      regular: '{{count}} týdny',\n      past: 'před {{count}} týdny',\n      future: 'za {{count}} týdny'\n    },\n    many: {\n      regular: '{{count}} týdnů',\n      past: 'před {{count}} týdny',\n      future: 'za {{count}} týdnů'\n    }\n  },\n  aboutXMonths: {\n    one: {\n      regular: 'přibližně měsíc',\n      past: 'přibližně před měsícem',\n      future: 'přibližně za měsíc'\n    },\n    few: {\n      regular: 'přibližně {{count}} měsíce',\n      past: 'přibližně před {{count}} měsíci',\n      future: 'přibližně za {{count}} měsíce'\n    },\n    many: {\n      regular: 'přibližně {{count}} měsíců',\n      past: 'přibližně před {{count}} měsíci',\n      future: 'přibližně za {{count}} měsíců'\n    }\n  },\n  xMonths: {\n    one: {\n      regular: 'měsíc',\n      past: 'před měsícem',\n      future: 'za měsíc'\n    },\n    few: {\n      regular: '{{count}} měsíce',\n      past: 'před {{count}} měsíci',\n      future: 'za {{count}} měsíce'\n    },\n    many: {\n      regular: '{{count}} měsíců',\n      past: 'před {{count}} měsíci',\n      future: 'za {{count}} měsíců'\n    }\n  },\n  aboutXYears: {\n    one: {\n      regular: 'přibližně rok',\n      past: 'přibližně před rokem',\n      future: 'přibližně za rok'\n    },\n    few: {\n      regular: 'přibližně {{count}} roky',\n      past: 'přibližně před {{count}} roky',\n      future: 'přibližně za {{count}} roky'\n    },\n    many: {\n      regular: 'přibližně {{count}} roků',\n      past: 'přibližně před {{count}} roky',\n      future: 'přibližně za {{count}} roků'\n    }\n  },\n  xYears: {\n    one: {\n      regular: 'rok',\n      past: 'před rokem',\n      future: 'za rok'\n    },\n    few: {\n      regular: '{{count}} roky',\n      past: 'před {{count}} roky',\n      future: 'za {{count}} roky'\n    },\n    many: {\n      regular: '{{count}} roků',\n      past: 'před {{count}} roky',\n      future: 'za {{count}} roků'\n    }\n  },\n  overXYears: {\n    one: {\n      regular: 'více než rok',\n      past: 'před více než rokem',\n      future: 'za více než rok'\n    },\n    few: {\n      regular: 'více než {{count}} roky',\n      past: 'před více než {{count}} roky',\n      future: 'za více než {{count}} roky'\n    },\n    many: {\n      regular: 'více než {{count}} roků',\n      past: 'před více než {{count}} roky',\n      future: 'za více než {{count}} roků'\n    }\n  },\n  almostXYears: {\n    one: {\n      regular: 'skoro rok',\n      past: 'skoro před rokem',\n      future: 'skoro za rok'\n    },\n    few: {\n      regular: 'skoro {{count}} roky',\n      past: 'skoro před {{count}} roky',\n      future: 'skoro za {{count}} roky'\n    },\n    many: {\n      regular: 'skoro {{count}} roků',\n      past: 'skoro před {{count}} roky',\n      future: 'skoro za {{count}} roků'\n    }\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var pluralResult;\n  var tokenValue = formatDistanceLocale[token];\n\n  // cs pluralization\n  if (tokenValue.type === 'other') {\n    pluralResult = tokenValue.other;\n  } else if (count === 1) {\n    pluralResult = tokenValue.one;\n  } else if (count > 1 && count < 5) {\n    pluralResult = tokenValue.few;\n  } else {\n    pluralResult = tokenValue.many;\n  }\n\n  // times\n  var suffixExist = (options === null || options === void 0 ? void 0 : options.addSuffix) === true;\n  var comparison = options === null || options === void 0 ? void 0 : options.comparison;\n  var timeResult;\n  if (suffixExist && comparison === -1) {\n    timeResult = pluralResult.past;\n  } else if (suffixExist && comparison === 1) {\n    timeResult = pluralResult.future;\n  } else {\n    timeResult = pluralResult.regular;\n  }\n  return timeResult.replace('{{count}}', String(count));\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, d. MMMM yyyy',\n  long: 'd. MMMM yyyy',\n  medium: 'd. M. yyyy',\n  short: 'dd.MM.yyyy'\n};\nvar timeFormats = {\n  full: 'H:mm:ss zzzz',\n  long: 'H:mm:ss z',\n  medium: 'H:mm:ss',\n  short: 'H:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'v' {{time}}\",\n  long: \"{{date}} 'v' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var accusativeWeekdays = ['neděli', 'pondělí', 'úterý', 'středu', 'čtvrtek', 'pátek', 'sobotu'];\nvar formatRelativeLocale = {\n  lastWeek: \"'poslední' eeee 've' p\",\n  yesterday: \"'včera v' p\",\n  today: \"'dnes v' p\",\n  tomorrow: \"'zítra v' p\",\n  nextWeek: function nextWeek(date) {\n    var day = date.getUTCDay();\n    return \"'v \" + accusativeWeekdays[day] + \" o' p\";\n  },\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, date) {\n  var format = formatRelativeLocale[token];\n  if (typeof format === 'function') {\n    return format(date);\n  }\n  return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['př. n. l.', 'n. l.'],\n  abbreviated: ['př. n. l.', 'n. l.'],\n  wide: ['před naším letopočtem', 'našeho letopočtu']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí'],\n  wide: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí']\n};\nvar monthValues = {\n  narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],\n  abbreviated: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],\n  wide: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec']\n};\nvar formattingMonthValues = {\n  narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],\n  abbreviated: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],\n  wide: ['ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', 'listopadu', 'prosince']\n};\nvar dayValues = {\n  narrow: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n  short: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n  abbreviated: ['ned', 'pon', 'úte', 'stř', 'čtv', 'pát', 'sob'],\n  wide: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'dop.',\n    pm: 'odp.',\n    midnight: 'půlnoc',\n    noon: 'poledne',\n    morning: 'ráno',\n    afternoon: 'odpoledne',\n    evening: 'večer',\n    night: 'noc'\n  },\n  abbreviated: {\n    am: 'dop.',\n    pm: 'odp.',\n    midnight: 'půlnoc',\n    noon: 'poledne',\n    morning: 'ráno',\n    afternoon: 'odpoledne',\n    evening: 'večer',\n    night: 'noc'\n  },\n  wide: {\n    am: 'dopoledne',\n    pm: 'odpoledne',\n    midnight: 'půlnoc',\n    noon: 'poledne',\n    morning: 'ráno',\n    afternoon: 'odpoledne',\n    evening: 'večer',\n    night: 'noc'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'dop.',\n    pm: 'odp.',\n    midnight: 'půlnoc',\n    noon: 'poledne',\n    morning: 'ráno',\n    afternoon: 'odpoledne',\n    evening: 'večer',\n    night: 'noc'\n  },\n  abbreviated: {\n    am: 'dop.',\n    pm: 'odp.',\n    midnight: 'půlnoc',\n    noon: 'poledne',\n    morning: 'ráno',\n    afternoon: 'odpoledne',\n    evening: 'večer',\n    night: 'noc'\n  },\n  wide: {\n    am: 'dopoledne',\n    pm: 'odpoledne',\n    midnight: 'půlnoc',\n    noon: 'poledne',\n    morning: 'ráno',\n    afternoon: 'odpoledne',\n    evening: 'večer',\n    night: 'noc'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return number + '.';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingMonthValues,\n    defaultFormattingWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(p[řr](\\.|ed) Kr\\.|p[řr](\\.|ed) n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n  abbreviated: /^(p[řr](\\.|ed) Kr\\.|p[řr](\\.|ed) n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n  wide: /^(p[řr](\\.|ed) Kristem|p[řr](\\.|ed) na[šs][íi]m letopo[čc]tem|po Kristu|na[šs]eho letopo[čc]tu)/i\n};\nvar parseEraPatterns = {\n  any: [/^p[řr]/i, /^(po|n)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^[1234]\\. [čc]tvrtlet[íi]/i,\n  wide: /^[1234]\\. [čc]tvrtlet[íi]/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[lúubdkčcszřrlp]/i,\n  abbreviated: /^(led|[úu]no|b[řr]e|dub|kv[ěe]|[čc]vn|[čc]vc|srp|z[áa][řr]|[řr][íi]j|lis|pro)/i,\n  wide: /^(leden|ledna|[úu]nora?|b[řr]ezen|b[řr]ezna|duben|dubna|kv[ěe]ten|kv[ěe]tna|[čc]erven(ec|ce)?|[čc]ervna|srpen|srpna|z[áa][řr][íi]|[řr][íi]jen|[řr][íi]jna|listopad(a|u)?|prosinec|prosince)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^l/i, /^[úu]/i, /^b/i, /^d/i, /^k/i, /^[čc]/i, /^[čc]/i, /^s/i, /^z/i, /^[řr]/i, /^l/i, /^p/i],\n  any: [/^led/i, /^[úu]n/i, /^b[řr]e/i, /^dub/i, /^kv[ěe]/i, /^[čc]vn|[čc]erven(?!\\w)|[čc]ervna/i, /^[čc]vc|[čc]erven(ec|ce)/i, /^srp/i, /^z[áa][řr]/i, /^[řr][íi]j/i, /^lis/i, /^pro/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[npuúsčps]/i,\n  short: /^(ne|po|[úu]t|st|[čc]t|p[áa]|so)/i,\n  abbreviated: /^(ned|pon|[úu]te|st[rř]|[čc]tv|p[áa]t|sob)/i,\n  wide: /^(ned[ěe]le|pond[ěe]l[íi]|[úu]ter[ýy]|st[řr]eda|[čc]tvrtek|p[áa]tek|sobota)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^n/i, /^p/i, /^[úu]/i, /^s/i, /^[čc]/i, /^p/i, /^s/i],\n  any: [/^ne/i, /^po/i, /^[úu]t/i, /^st/i, /^[čc]t/i, /^p[áa]/i, /^so/i]\n};\nvar matchDayPeriodPatterns = {\n  any: /^dopoledne|dop\\.?|odpoledne|odp\\.?|p[ůu]lnoc|poledne|r[áa]no|odpoledne|ve[čc]er|(v )?noci?/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^dop/i,\n    pm: /^odp/i,\n    midnight: /^p[ůu]lnoc/i,\n    noon: /^poledne/i,\n    morning: /r[áa]no/i,\n    afternoon: /odpoledne/i,\n    evening: /ve[čc]er/i,\n    night: /noc/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Czech locale.\n * @language Czech\n * @iso-639-2 ces\n * @author David Rus [@davidrus]{@link https://github.com/davidrus}\n * @author Pavel Hrách [@SilenY]{@link https://github.com/SilenY}\n * @author Jozef Bíroš [@JozefBiros]{@link https://github.com/JozefBiros}\n */\nvar locale = {\n  code: 'cs',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'mindre end ét sekund',\n    other: 'mindre end {{count}} sekunder'\n  },\n  xSeconds: {\n    one: '1 sekund',\n    other: '{{count}} sekunder'\n  },\n  halfAMinute: 'ét halvt minut',\n  lessThanXMinutes: {\n    one: 'mindre end ét minut',\n    other: 'mindre end {{count}} minutter'\n  },\n  xMinutes: {\n    one: '1 minut',\n    other: '{{count}} minutter'\n  },\n  aboutXHours: {\n    one: 'cirka 1 time',\n    other: 'cirka {{count}} timer'\n  },\n  xHours: {\n    one: '1 time',\n    other: '{{count}} timer'\n  },\n  xDays: {\n    one: '1 dag',\n    other: '{{count}} dage'\n  },\n  aboutXWeeks: {\n    one: 'cirka 1 uge',\n    other: 'cirka {{count}} uger'\n  },\n  xWeeks: {\n    one: '1 uge',\n    other: '{{count}} uger'\n  },\n  aboutXMonths: {\n    one: 'cirka 1 måned',\n    other: 'cirka {{count}} måneder'\n  },\n  xMonths: {\n    one: '1 måned',\n    other: '{{count}} måneder'\n  },\n  aboutXYears: {\n    one: 'cirka 1 år',\n    other: 'cirka {{count}} år'\n  },\n  xYears: {\n    one: '1 år',\n    other: '{{count}} år'\n  },\n  overXYears: {\n    one: 'over 1 år',\n    other: 'over {{count}} år'\n  },\n  almostXYears: {\n    one: 'næsten 1 år',\n    other: 'næsten {{count}} år'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'om ' + result;\n    } else {\n      return result + ' siden';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: \"EEEE 'den' d. MMMM y\",\n  long: 'd. MMMM y',\n  medium: 'd. MMM y',\n  short: 'dd/MM/y'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'kl'. {{time}}\",\n  long: \"{{date}} 'kl'. {{time}}\",\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'sidste' eeee 'kl.' p\",\n  yesterday: \"'i går kl.' p\",\n  today: \"'i dag kl.' p\",\n  tomorrow: \"'i morgen kl.' p\",\n  nextWeek: \"'på' eeee 'kl.' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['fvt', 'vt'],\n  abbreviated: ['f.v.t.', 'v.t.'],\n  wide: ['før vesterlandsk tidsregning', 'vesterlandsk tidsregning']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['1. kvt.', '2. kvt.', '3. kvt.', '4. kvt.'],\n  wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n  wide: ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december']\n};\n\n// Note that 'Days - abbreviated - Formatting' has periods at the end.\n// https://www.unicode.org/cldr/charts/32/summary/da.html#1760\n// This makes grammatical sense in danish, as most abbreviations have periods.\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n  short: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],\n  abbreviated: ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'],\n  wide: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'midnat',\n    noon: 'middag',\n    morning: 'morgen',\n    afternoon: 'eftermiddag',\n    evening: 'aften',\n    night: 'nat'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnat',\n    noon: 'middag',\n    morning: 'morgen',\n    afternoon: 'eftermiddag',\n    evening: 'aften',\n    night: 'nat'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnat',\n    noon: 'middag',\n    morning: 'morgen',\n    afternoon: 'eftermiddag',\n    evening: 'aften',\n    night: 'nat'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'midnat',\n    noon: 'middag',\n    morning: 'om morgenen',\n    afternoon: 'om eftermiddagen',\n    evening: 'om aftenen',\n    night: 'om natten'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnat',\n    noon: 'middag',\n    morning: 'om morgenen',\n    afternoon: 'om eftermiddagen',\n    evening: 'om aftenen',\n    night: 'om natten'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnat',\n    noon: 'middag',\n    morning: 'om morgenen',\n    afternoon: 'om eftermiddagen',\n    evening: 'om aftenen',\n    night: 'om natten'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return number + '.';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(fKr|fvt|eKr|vt)/i,\n  abbreviated: /^(f\\.Kr\\.?|f\\.v\\.t\\.?|e\\.Kr\\.?|v\\.t\\.)/i,\n  wide: /^(f.Kr.|før vesterlandsk tidsregning|e.Kr.|vesterlandsk tidsregning)/i\n};\nvar parseEraPatterns = {\n  any: [/^f/i, /^(v|e)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^[1234]. kvt\\./i,\n  wide: /^[1234]\\.? kvartal/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan.|feb.|mar.|apr.|maj|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,\n  wide: /^(januar|februar|marts|april|maj|juni|juli|august|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^maj/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtofl]/i,\n  short: /^(søn.|man.|tir.|ons.|tor.|fre.|lør.)/i,\n  abbreviated: /^(søn|man|tir|ons|tor|fre|lør)/i,\n  wide: /^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^o/i, /^t/i, /^f/i, /^l/i],\n  any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /midnat/i,\n    noon: /middag/i,\n    morning: /morgen/i,\n    afternoon: /eftermiddag/i,\n    evening: /aften/i,\n    night: /nat/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Danish locale.\n * @language Danish\n * @iso-639-2 dan\n * @author Mathias Wøbbe [@MathiasKandelborg]{@link https://github.com/MathiasKandelborg}\n * @author Anders B. Hansen [@Andersbiha]{@link https://github.com/Andersbiha}\n * @author [@kgram]{@link https://github.com/kgram}\n * @author [@stefanbugge]{@link https://github.com/stefanbugge}\n */\nvar locale = {\n  code: 'da',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    standalone: {\n      one: 'weniger als 1 Sekunde',\n      other: 'weniger als {{count}} Sekunden'\n    },\n    withPreposition: {\n      one: 'weniger als 1 Sekunde',\n      other: 'weniger als {{count}} Sekunden'\n    }\n  },\n  xSeconds: {\n    standalone: {\n      one: '1 Sekunde',\n      other: '{{count}} Sekunden'\n    },\n    withPreposition: {\n      one: '1 Sekunde',\n      other: '{{count}} Sekunden'\n    }\n  },\n  halfAMinute: {\n    standalone: 'halbe Minute',\n    withPreposition: 'halben Minute'\n  },\n  lessThanXMinutes: {\n    standalone: {\n      one: 'weniger als 1 Minute',\n      other: 'weniger als {{count}} Minuten'\n    },\n    withPreposition: {\n      one: 'weniger als 1 Minute',\n      other: 'weniger als {{count}} Minuten'\n    }\n  },\n  xMinutes: {\n    standalone: {\n      one: '1 Minute',\n      other: '{{count}} Minuten'\n    },\n    withPreposition: {\n      one: '1 Minute',\n      other: '{{count}} Minuten'\n    }\n  },\n  aboutXHours: {\n    standalone: {\n      one: 'etwa 1 Stunde',\n      other: 'etwa {{count}} Stunden'\n    },\n    withPreposition: {\n      one: 'etwa 1 Stunde',\n      other: 'etwa {{count}} Stunden'\n    }\n  },\n  xHours: {\n    standalone: {\n      one: '1 Stunde',\n      other: '{{count}} Stunden'\n    },\n    withPreposition: {\n      one: '1 Stunde',\n      other: '{{count}} Stunden'\n    }\n  },\n  xDays: {\n    standalone: {\n      one: '1 Tag',\n      other: '{{count}} Tage'\n    },\n    withPreposition: {\n      one: '1 Tag',\n      other: '{{count}} Tagen'\n    }\n  },\n  aboutXWeeks: {\n    standalone: {\n      one: 'etwa 1 Woche',\n      other: 'etwa {{count}} Wochen'\n    },\n    withPreposition: {\n      one: 'etwa 1 Woche',\n      other: 'etwa {{count}} Wochen'\n    }\n  },\n  xWeeks: {\n    standalone: {\n      one: '1 Woche',\n      other: '{{count}} Wochen'\n    },\n    withPreposition: {\n      one: '1 Woche',\n      other: '{{count}} Wochen'\n    }\n  },\n  aboutXMonths: {\n    standalone: {\n      one: 'etwa 1 Monat',\n      other: 'etwa {{count}} Monate'\n    },\n    withPreposition: {\n      one: 'etwa 1 Monat',\n      other: 'etwa {{count}} Monaten'\n    }\n  },\n  xMonths: {\n    standalone: {\n      one: '1 Monat',\n      other: '{{count}} Monate'\n    },\n    withPreposition: {\n      one: '1 Monat',\n      other: '{{count}} Monaten'\n    }\n  },\n  aboutXYears: {\n    standalone: {\n      one: 'etwa 1 Jahr',\n      other: 'etwa {{count}} Jahre'\n    },\n    withPreposition: {\n      one: 'etwa 1 Jahr',\n      other: 'etwa {{count}} Jahren'\n    }\n  },\n  xYears: {\n    standalone: {\n      one: '1 Jahr',\n      other: '{{count}} Jahre'\n    },\n    withPreposition: {\n      one: '1 Jahr',\n      other: '{{count}} Jahren'\n    }\n  },\n  overXYears: {\n    standalone: {\n      one: 'mehr als 1 Jahr',\n      other: 'mehr als {{count}} Jahre'\n    },\n    withPreposition: {\n      one: 'mehr als 1 Jahr',\n      other: 'mehr als {{count}} Jahren'\n    }\n  },\n  almostXYears: {\n    standalone: {\n      one: 'fast 1 Jahr',\n      other: 'fast {{count}} Jahre'\n    },\n    withPreposition: {\n      one: 'fast 1 Jahr',\n      other: 'fast {{count}} Jahren'\n    }\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = options !== null && options !== void 0 && options.addSuffix ? formatDistanceLocale[token].withPreposition : formatDistanceLocale[token].standalone;\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return 'vor ' + result;\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\n// DIN 5008: https://de.wikipedia.org/wiki/Datumsformat#DIN_5008\nvar dateFormats = {\n  full: 'EEEE, do MMMM y',\n  // Montag, 7. Januar 2018\n  long: 'do MMMM y',\n  // 7. Januar 2018\n  medium: 'do MMM y',\n  // 7. Jan. 2018\n  short: 'dd.MM.y' // 07.01.2018\n};\n\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'um' {{time}}\",\n  long: \"{{date}} 'um' {{time}}\",\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'letzten' eeee 'um' p\",\n  yesterday: \"'gestern um' p\",\n  today: \"'heute um' p\",\n  tomorrow: \"'morgen um' p\",\n  nextWeek: \"eeee 'um' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['v.Chr.', 'n.Chr.'],\n  abbreviated: ['v.Chr.', 'n.Chr.'],\n  wide: ['vor Christus', 'nach Christus']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal']\n};\n\n// Note: in German, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n  wide: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']\n};\n\n// https://st.unicode.org/cldr-apps/v#/de/Gregorian/\nvar formattingMonthValues = {\n  narrow: monthValues.narrow,\n  abbreviated: ['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'],\n  wide: monthValues.wide\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],\n  short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n  abbreviated: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],\n  wide: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']\n};\n\n// https://www.unicode.org/cldr/charts/32/summary/de.html#1881\nvar dayPeriodValues = {\n  narrow: {\n    am: 'vm.',\n    pm: 'nm.',\n    midnight: 'Mitternacht',\n    noon: 'Mittag',\n    morning: 'Morgen',\n    afternoon: 'Nachm.',\n    evening: 'Abend',\n    night: 'Nacht'\n  },\n  abbreviated: {\n    am: 'vorm.',\n    pm: 'nachm.',\n    midnight: 'Mitternacht',\n    noon: 'Mittag',\n    morning: 'Morgen',\n    afternoon: 'Nachmittag',\n    evening: 'Abend',\n    night: 'Nacht'\n  },\n  wide: {\n    am: 'vormittags',\n    pm: 'nachmittags',\n    midnight: 'Mitternacht',\n    noon: 'Mittag',\n    morning: 'Morgen',\n    afternoon: 'Nachmittag',\n    evening: 'Abend',\n    night: 'Nacht'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'vm.',\n    pm: 'nm.',\n    midnight: 'Mitternacht',\n    noon: 'Mittag',\n    morning: 'morgens',\n    afternoon: 'nachm.',\n    evening: 'abends',\n    night: 'nachts'\n  },\n  abbreviated: {\n    am: 'vorm.',\n    pm: 'nachm.',\n    midnight: 'Mitternacht',\n    noon: 'Mittag',\n    morning: 'morgens',\n    afternoon: 'nachmittags',\n    evening: 'abends',\n    night: 'nachts'\n  },\n  wide: {\n    am: 'vormittags',\n    pm: 'nachmittags',\n    midnight: 'Mitternacht',\n    noon: 'Mittag',\n    morning: 'morgens',\n    afternoon: 'nachmittags',\n    evening: 'abends',\n    night: 'nachts'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber) {\n  var number = Number(dirtyNumber);\n  return number + '.';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    formattingValues: formattingMonthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n  abbreviated: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n  wide: /^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i\n};\nvar parseEraPatterns = {\n  any: [/^v/i, /^n/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](\\.)? Quartal/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\\.?/i,\n  wide: /^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^j[aä]/i, /^f/i, /^mär/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smdmf]/i,\n  short: /^(so|mo|di|mi|do|fr|sa)/i,\n  abbreviated: /^(son?|mon?|die?|mit?|don?|fre?|sam?)\\.?/i,\n  wide: /^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i\n};\nvar parseDayPatterns = {\n  any: [/^so/i, /^mo/i, /^di/i, /^mi/i, /^do/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(vm\\.?|nm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n  abbreviated: /^(vorm\\.?|nachm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n  wide: /^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^v/i,\n    pm: /^n/i,\n    midnight: /^Mitte/i,\n    noon: /^Mitta/i,\n    morning: /morgens/i,\n    afternoon: /nachmittags/i,\n    // will never be matched. Afternoon is matched by `pm`\n    evening: /abends/i,\n    night: /nachts/i // will never be matched. Night is matched by `pm`\n  }\n};\n\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary German locale.\n * @language German\n * @iso-639-2 deu\n * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}\n * @author Asia [@asia-t]{@link https://github.com/asia-t}\n * @author Van Vuong Ngo [@vanvuongngo]{@link https://github.com/vanvuongngo}\n * @author RomanErnst [@pex]{@link https://github.com/pex}\n * @author Philipp Keck [@Philipp91]{@link https://github.com/Philipp91}\n */\nvar locale = {\n  code: 'de',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, d MMMM yyyy',\n  long: 'd MMMM, yyyy',\n  medium: 'd MMM, yyyy',\n  short: 'dd/MM/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","import formatDistance from \"../en-US/_lib/formatDistance/index.js\";\nimport formatRelative from \"../en-US/_lib/formatRelative/index.js\";\nimport localize from \"../en-US/_lib/localize/index.js\";\nimport match from \"../en-US/_lib/match/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (India).\n * @language English\n * @iso-639-2 eng\n * @author Galeel Bhasha Satthar [@gbhasha]{@link https://github.com/gbhasha}\n */\nvar locale = {\n  code: 'en-IN',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1,\n    // Monday is the first day of the week.\n    firstWeekContainsDate: 4 // The week that contains Jan 4th is the first week of the year.\n  }\n};\n\nexport default locale;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, d MMMM yyyy',\n  long: 'd MMMM yyyy',\n  medium: 'd MMM yyyy',\n  short: 'dd/MM/yyyy'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","import formatDistance from \"../en-US/_lib/formatDistance/index.js\";\nimport formatRelative from \"../en-US/_lib/formatRelative/index.js\";\nimport localize from \"../en-US/_lib/localize/index.js\";\nimport match from \"../en-US/_lib/match/index.js\";\nimport formatLong from \"../en-GB/_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (Ireland).\n * @language English\n * @iso-639-2 eng\n * @author Tetiana [@tan75]{@link https://github.com/tan75}\n */\nvar locale = {\n  code: 'en-IE',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","import formatDistance from \"../en-US/_lib/formatDistance/index.js\";\nimport formatRelative from \"../en-US/_lib/formatRelative/index.js\";\nimport localize from \"../en-US/_lib/localize/index.js\";\nimport match from \"../en-US/_lib/match/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United Kingdom).\n * @language English\n * @iso-639-2 eng\n * @author Alex [@glintik]{@link https://github.com/glintik}\n */\nvar locale = {\n  code: 'en-GB',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'menos de un segundo',\n    other: 'menos de {{count}} segundos'\n  },\n  xSeconds: {\n    one: '1 segundo',\n    other: '{{count}} segundos'\n  },\n  halfAMinute: 'medio minuto',\n  lessThanXMinutes: {\n    one: 'menos de un minuto',\n    other: 'menos de {{count}} minutos'\n  },\n  xMinutes: {\n    one: '1 minuto',\n    other: '{{count}} minutos'\n  },\n  aboutXHours: {\n    one: 'alrededor de 1 hora',\n    other: 'alrededor de {{count}} horas'\n  },\n  xHours: {\n    one: '1 hora',\n    other: '{{count}} horas'\n  },\n  xDays: {\n    one: '1 día',\n    other: '{{count}} días'\n  },\n  aboutXWeeks: {\n    one: 'alrededor de 1 semana',\n    other: 'alrededor de {{count}} semanas'\n  },\n  xWeeks: {\n    one: '1 semana',\n    other: '{{count}} semanas'\n  },\n  aboutXMonths: {\n    one: 'alrededor de 1 mes',\n    other: 'alrededor de {{count}} meses'\n  },\n  xMonths: {\n    one: '1 mes',\n    other: '{{count}} meses'\n  },\n  aboutXYears: {\n    one: 'alrededor de 1 año',\n    other: 'alrededor de {{count}} años'\n  },\n  xYears: {\n    one: '1 año',\n    other: '{{count}} años'\n  },\n  overXYears: {\n    one: 'más de 1 año',\n    other: 'más de {{count}} años'\n  },\n  almostXYears: {\n    one: 'casi 1 año',\n    other: 'casi {{count}} años'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'en ' + result;\n    } else {\n      return 'hace ' + result;\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: \"EEEE, d 'de' MMMM 'de' y\",\n  long: \"d 'de' MMMM 'de' y\",\n  medium: 'd MMM y',\n  short: 'dd/MM/y'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'a las' {{time}}\",\n  long: \"{{date}} 'a las' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'el' eeee 'pasado a la' p\",\n  yesterday: \"'ayer a la' p\",\n  today: \"'hoy a la' p\",\n  tomorrow: \"'mañana a la' p\",\n  nextWeek: \"eeee 'a la' p\",\n  other: 'P'\n};\nvar formatRelativeLocalePlural = {\n  lastWeek: \"'el' eeee 'pasado a las' p\",\n  yesterday: \"'ayer a las' p\",\n  today: \"'hoy a las' p\",\n  tomorrow: \"'mañana a las' p\",\n  nextWeek: \"eeee 'a las' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, _baseDate, _options) {\n  if (date.getUTCHours() !== 1) {\n    return formatRelativeLocalePlural[token];\n  } else {\n    return formatRelativeLocale[token];\n  }\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['AC', 'DC'],\n  abbreviated: ['AC', 'DC'],\n  wide: ['antes de cristo', 'después de cristo']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['T1', 'T2', 'T3', 'T4'],\n  wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']\n};\nvar monthValues = {\n  narrow: ['e', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],\n  abbreviated: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],\n  wide: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre']\n};\nvar dayValues = {\n  narrow: ['d', 'l', 'm', 'm', 'j', 'v', 's'],\n  short: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'],\n  abbreviated: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],\n  wide: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mn',\n    noon: 'md',\n    morning: 'mañana',\n    afternoon: 'tarde',\n    evening: 'tarde',\n    night: 'noche'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'medianoche',\n    noon: 'mediodia',\n    morning: 'mañana',\n    afternoon: 'tarde',\n    evening: 'tarde',\n    night: 'noche'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'medianoche',\n    noon: 'mediodia',\n    morning: 'mañana',\n    afternoon: 'tarde',\n    evening: 'tarde',\n    night: 'noche'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mn',\n    noon: 'md',\n    morning: 'de la mañana',\n    afternoon: 'de la tarde',\n    evening: 'de la tarde',\n    night: 'de la noche'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'medianoche',\n    noon: 'mediodia',\n    morning: 'de la mañana',\n    afternoon: 'de la tarde',\n    evening: 'de la tarde',\n    night: 'de la noche'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'medianoche',\n    noon: 'mediodia',\n    morning: 'de la mañana',\n    afternoon: 'de la tarde',\n    evening: 'de la tarde',\n    night: 'de la noche'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return number + 'º';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return Number(quarter) - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nimport buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(º)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(ac|dc|a|d)/i,\n  abbreviated: /^(a\\.?\\s?c\\.?|a\\.?\\s?e\\.?\\s?c\\.?|d\\.?\\s?c\\.?|e\\.?\\s?c\\.?)/i,\n  wide: /^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i\n};\nvar parseEraPatterns = {\n  any: [/^ac/i, /^dc/i],\n  wide: [/^(antes de cristo|antes de la era com[uú]n)/i, /^(despu[eé]s de cristo|era com[uú]n)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^T[1234]/i,\n  wide: /^[1234](º)? trimestre/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[efmajsond]/i,\n  abbreviated: /^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,\n  wide: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^e/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^en/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[dlmjvs]/i,\n  short: /^(do|lu|ma|mi|ju|vi|s[áa])/i,\n  abbreviated: /^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,\n  wide: /^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n  any: [/^do/i, /^lu/i, /^ma/i, /^mi/i, /^ju/i, /^vi/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,\n  any: /^([ap]\\.?\\s?m\\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mn/i,\n    noon: /^md/i,\n    morning: /mañana/i,\n    afternoon: /tarde/i,\n    evening: /tarde/i,\n    night: /noche/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Spanish locale.\n * @language Spanish\n * @iso-639-2 spa\n * @author Juan Angosto [@juanangosto]{@link https://github.com/juanangosto}\n * @author Guillermo Grau [@guigrpa]{@link https://github.com/guigrpa}\n * @author Fernando Agüero [@fjaguero]{@link https://github.com/fjaguero}\n * @author Gastón Haro [@harogaston]{@link https://github.com/harogaston}\n * @author Yago Carballo [@YagoCarballo]{@link https://github.com/YagoCarballo}\n */\nvar locale = {\n  code: 'es',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    standalone: {\n      one: 'vähem kui üks sekund',\n      other: 'vähem kui {{count}} sekundit'\n    },\n    withPreposition: {\n      one: 'vähem kui ühe sekundi',\n      other: 'vähem kui {{count}} sekundi'\n    }\n  },\n  xSeconds: {\n    standalone: {\n      one: 'üks sekund',\n      other: '{{count}} sekundit'\n    },\n    withPreposition: {\n      one: 'ühe sekundi',\n      other: '{{count}} sekundi'\n    }\n  },\n  halfAMinute: {\n    standalone: 'pool minutit',\n    withPreposition: 'poole minuti'\n  },\n  lessThanXMinutes: {\n    standalone: {\n      one: 'vähem kui üks minut',\n      other: 'vähem kui {{count}} minutit'\n    },\n    withPreposition: {\n      one: 'vähem kui ühe minuti',\n      other: 'vähem kui {{count}} minuti'\n    }\n  },\n  xMinutes: {\n    standalone: {\n      one: 'üks minut',\n      other: '{{count}} minutit'\n    },\n    withPreposition: {\n      one: 'ühe minuti',\n      other: '{{count}} minuti'\n    }\n  },\n  aboutXHours: {\n    standalone: {\n      one: 'umbes üks tund',\n      other: 'umbes {{count}} tundi'\n    },\n    withPreposition: {\n      one: 'umbes ühe tunni',\n      other: 'umbes {{count}} tunni'\n    }\n  },\n  xHours: {\n    standalone: {\n      one: 'üks tund',\n      other: '{{count}} tundi'\n    },\n    withPreposition: {\n      one: 'ühe tunni',\n      other: '{{count}} tunni'\n    }\n  },\n  xDays: {\n    standalone: {\n      one: 'üks päev',\n      other: '{{count}} päeva'\n    },\n    withPreposition: {\n      one: 'ühe päeva',\n      other: '{{count}} päeva'\n    }\n  },\n  aboutXWeeks: {\n    standalone: {\n      one: 'umbes üks nädal',\n      other: 'umbes {{count}} nädalat'\n    },\n    withPreposition: {\n      one: 'umbes ühe nädala',\n      other: 'umbes {{count}} nädala'\n    }\n  },\n  xWeeks: {\n    standalone: {\n      one: 'üks nädal',\n      other: '{{count}} nädalat'\n    },\n    withPreposition: {\n      one: 'ühe nädala',\n      other: '{{count}} nädala'\n    }\n  },\n  aboutXMonths: {\n    standalone: {\n      one: 'umbes üks kuu',\n      other: 'umbes {{count}} kuud'\n    },\n    withPreposition: {\n      one: 'umbes ühe kuu',\n      other: 'umbes {{count}} kuu'\n    }\n  },\n  xMonths: {\n    standalone: {\n      one: 'üks kuu',\n      other: '{{count}} kuud'\n    },\n    withPreposition: {\n      one: 'ühe kuu',\n      other: '{{count}} kuu'\n    }\n  },\n  aboutXYears: {\n    standalone: {\n      one: 'umbes üks aasta',\n      other: 'umbes {{count}} aastat'\n    },\n    withPreposition: {\n      one: 'umbes ühe aasta',\n      other: 'umbes {{count}} aasta'\n    }\n  },\n  xYears: {\n    standalone: {\n      one: 'üks aasta',\n      other: '{{count}} aastat'\n    },\n    withPreposition: {\n      one: 'ühe aasta',\n      other: '{{count}} aasta'\n    }\n  },\n  overXYears: {\n    standalone: {\n      one: 'rohkem kui üks aasta',\n      other: 'rohkem kui {{count}} aastat'\n    },\n    withPreposition: {\n      one: 'rohkem kui ühe aasta',\n      other: 'rohkem kui {{count}} aasta'\n    }\n  },\n  almostXYears: {\n    standalone: {\n      one: 'peaaegu üks aasta',\n      other: 'peaaegu {{count}} aastat'\n    },\n    withPreposition: {\n      one: 'peaaegu ühe aasta',\n      other: 'peaaegu {{count}} aasta'\n    }\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var usageGroup = options !== null && options !== void 0 && options.addSuffix ? formatDistanceLocale[token].withPreposition : formatDistanceLocale[token].standalone;\n  var result;\n  if (typeof usageGroup === 'string') {\n    result = usageGroup;\n  } else if (count === 1) {\n    result = usageGroup.one;\n  } else {\n    result = usageGroup.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return result + ' pärast';\n    } else {\n      return result + ' eest';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, d. MMMM y',\n  long: 'd. MMMM y',\n  medium: 'd. MMM y',\n  short: 'dd.MM.y'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'kell' {{time}}\",\n  long: \"{{date}} 'kell' {{time}}\",\n  medium: '{{date}}. {{time}}',\n  short: '{{date}}. {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'eelmine' eeee 'kell' p\",\n  yesterday: \"'eile kell' p\",\n  today: \"'täna kell' p\",\n  tomorrow: \"'homme kell' p\",\n  nextWeek: \"'järgmine' eeee 'kell' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['e.m.a', 'm.a.j'],\n  abbreviated: ['e.m.a', 'm.a.j'],\n  wide: ['enne meie ajaarvamist', 'meie ajaarvamise järgi']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['K1', 'K2', 'K3', 'K4'],\n  wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n  narrow: ['J', 'V', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'],\n  wide: ['jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', 'oktoober', 'november', 'detsember']\n};\nvar dayValues = {\n  narrow: ['P', 'E', 'T', 'K', 'N', 'R', 'L'],\n  short: ['P', 'E', 'T', 'K', 'N', 'R', 'L'],\n  abbreviated: ['pühap.', 'esmasp.', 'teisip.', 'kolmap.', 'neljap.', 'reede.', 'laup.'],\n  wide: ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'kesköö',\n    noon: 'keskpäev',\n    morning: 'hommik',\n    afternoon: 'pärastlõuna',\n    evening: 'õhtu',\n    night: 'öö'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'kesköö',\n    noon: 'keskpäev',\n    morning: 'hommik',\n    afternoon: 'pärastlõuna',\n    evening: 'õhtu',\n    night: 'öö'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'kesköö',\n    noon: 'keskpäev',\n    morning: 'hommik',\n    afternoon: 'pärastlõuna',\n    evening: 'õhtu',\n    night: 'öö'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'keskööl',\n    noon: 'keskpäeval',\n    morning: 'hommikul',\n    afternoon: 'pärastlõunal',\n    evening: 'õhtul',\n    night: 'öösel'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'keskööl',\n    noon: 'keskpäeval',\n    morning: 'hommikul',\n    afternoon: 'pärastlõunal',\n    evening: 'õhtul',\n    night: 'öösel'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'keskööl',\n    noon: 'keskpäeval',\n    morning: 'hommikul',\n    afternoon: 'pärastlõunal',\n    evening: 'õhtul',\n    night: 'öösel'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return number + '.';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide',\n    formattingValues: monthValues,\n    defaultFormattingWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide',\n    formattingValues: dayValues,\n    defaultFormattingWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^\\d+\\./i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(e\\.m\\.a|m\\.a\\.j|eKr|pKr)/i,\n  abbreviated: /^(e\\.m\\.a|m\\.a\\.j|eKr|pKr)/i,\n  wide: /^(enne meie ajaarvamist|meie ajaarvamise järgi|enne Kristust|pärast Kristust)/i\n};\nvar parseEraPatterns = {\n  any: [/^e/i, /^(m|p)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^K[1234]/i,\n  wide: /^[1234](\\.)? kvartal/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jvmasond]/i,\n  abbreviated: /^(jaan|veebr|märts|apr|mai|juuni|juuli|aug|sept|okt|nov|dets)/i,\n  wide: /^(jaanuar|veebruar|märts|aprill|mai|juuni|juuli|august|september|oktoober|november|detsember)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^v/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^v/i, /^mär/i, /^ap/i, /^mai/i, /^juun/i, /^juul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[petknrl]/i,\n  short: /^[petknrl]/i,\n  abbreviated: /^(püh?|esm?|tei?|kolm?|nel?|ree?|laup?)\\.?/i,\n  wide: /^(pühapäev|esmaspäev|teisipäev|kolmapäev|neljapäev|reede|laupäev)/i\n};\nvar parseDayPatterns = {\n  any: [/^p/i, /^e/i, /^t/i, /^k/i, /^n/i, /^r/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n  any: /^(am|pm|keskööl?|keskpäev(al)?|hommik(ul)?|pärastlõunal?|õhtul?|öö(sel)?)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^keskö/i,\n    noon: /^keskp/i,\n    morning: /hommik/i,\n    afternoon: /pärastlõuna/i,\n    evening: /õhtu/i,\n    night: /öö/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Estonian locale.\n * @language Estonian\n * @iso-639-2 est\n * @author Priit Hansen [@HansenPriit]{@link https://github.com/priithansen}\n */\nvar locale = {\n  code: 'et',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","function futureSeconds(text) {\n  return text.replace(/sekuntia?/, 'sekunnin');\n}\nfunction futureMinutes(text) {\n  return text.replace(/minuuttia?/, 'minuutin');\n}\nfunction futureHours(text) {\n  return text.replace(/tuntia?/, 'tunnin');\n}\nfunction futureDays(text) {\n  return text.replace(/päivää?/, 'päivän');\n}\nfunction futureWeeks(text) {\n  return text.replace(/(viikko|viikkoa)/, 'viikon');\n}\nfunction futureMonths(text) {\n  return text.replace(/(kuukausi|kuukautta)/, 'kuukauden');\n}\nfunction futureYears(text) {\n  return text.replace(/(vuosi|vuotta)/, 'vuoden');\n}\nvar formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'alle sekunti',\n    other: 'alle {{count}} sekuntia',\n    futureTense: futureSeconds\n  },\n  xSeconds: {\n    one: 'sekunti',\n    other: '{{count}} sekuntia',\n    futureTense: futureSeconds\n  },\n  halfAMinute: {\n    one: 'puoli minuuttia',\n    other: 'puoli minuuttia',\n    futureTense: function futureTense(_text) {\n      return 'puolen minuutin';\n    }\n  },\n  lessThanXMinutes: {\n    one: 'alle minuutti',\n    other: 'alle {{count}} minuuttia',\n    futureTense: futureMinutes\n  },\n  xMinutes: {\n    one: 'minuutti',\n    other: '{{count}} minuuttia',\n    futureTense: futureMinutes\n  },\n  aboutXHours: {\n    one: 'noin tunti',\n    other: 'noin {{count}} tuntia',\n    futureTense: futureHours\n  },\n  xHours: {\n    one: 'tunti',\n    other: '{{count}} tuntia',\n    futureTense: futureHours\n  },\n  xDays: {\n    one: 'päivä',\n    other: '{{count}} päivää',\n    futureTense: futureDays\n  },\n  aboutXWeeks: {\n    one: 'noin viikko',\n    other: 'noin {{count}} viikkoa',\n    futureTense: futureWeeks\n  },\n  xWeeks: {\n    one: 'viikko',\n    other: '{{count}} viikkoa',\n    futureTense: futureWeeks\n  },\n  aboutXMonths: {\n    one: 'noin kuukausi',\n    other: 'noin {{count}} kuukautta',\n    futureTense: futureMonths\n  },\n  xMonths: {\n    one: 'kuukausi',\n    other: '{{count}} kuukautta',\n    futureTense: futureMonths\n  },\n  aboutXYears: {\n    one: 'noin vuosi',\n    other: 'noin {{count}} vuotta',\n    futureTense: futureYears\n  },\n  xYears: {\n    one: 'vuosi',\n    other: '{{count}} vuotta',\n    futureTense: futureYears\n  },\n  overXYears: {\n    one: 'yli vuosi',\n    other: 'yli {{count}} vuotta',\n    futureTense: futureYears\n  },\n  almostXYears: {\n    one: 'lähes vuosi',\n    other: 'lähes {{count}} vuotta',\n    futureTense: futureYears\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var tokenValue = formatDistanceLocale[token];\n  var result = count === 1 ? tokenValue.one : tokenValue.other.replace('{{count}}', String(count));\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return tokenValue.futureTense(result) + ' kuluttua';\n    } else {\n      return result + ' sitten';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'eeee d. MMMM y',\n  long: 'd. MMMM y',\n  medium: 'd. MMM y',\n  short: 'd.M.y'\n};\nvar timeFormats = {\n  full: 'HH.mm.ss zzzz',\n  long: 'HH.mm.ss z',\n  medium: 'HH.mm.ss',\n  short: 'HH.mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'klo' {{time}}\",\n  long: \"{{date}} 'klo' {{time}}\",\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'viime' eeee 'klo' p\",\n  yesterday: \"'eilen klo' p\",\n  today: \"'tänään klo' p\",\n  tomorrow: \"'huomenna klo' p\",\n  nextWeek: \"'ensi' eeee 'klo' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['eaa.', 'jaa.'],\n  abbreviated: ['eaa.', 'jaa.'],\n  wide: ['ennen ajanlaskun alkua', 'jälkeen ajanlaskun alun']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1. kvartaali', '2. kvartaali', '3. kvartaali', '4. kvartaali']\n};\nvar monthValues = {\n  narrow: ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'],\n  abbreviated: ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'],\n  wide: ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu']\n};\nvar formattingMonthValues = {\n  narrow: monthValues.narrow,\n  abbreviated: monthValues.abbreviated,\n  wide: ['tammikuuta', 'helmikuuta', 'maaliskuuta', 'huhtikuuta', 'toukokuuta', 'kesäkuuta', 'heinäkuuta', 'elokuuta', 'syyskuuta', 'lokakuuta', 'marraskuuta', 'joulukuuta']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'K', 'T', 'P', 'L'],\n  short: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],\n  abbreviated: ['sunn.', 'maan.', 'tiis.', 'kesk.', 'torst.', 'perj.', 'la'],\n  wide: ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai']\n};\nvar formattingDayValues = {\n  narrow: dayValues.narrow,\n  short: dayValues.short,\n  abbreviated: dayValues.abbreviated,\n  wide: ['sunnuntaina', 'maanantaina', 'tiistaina', 'keskiviikkona', 'torstaina', 'perjantaina', 'lauantaina']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'ap',\n    pm: 'ip',\n    midnight: 'keskiyö',\n    noon: 'keskipäivä',\n    morning: 'ap',\n    afternoon: 'ip',\n    evening: 'illalla',\n    night: 'yöllä'\n  },\n  abbreviated: {\n    am: 'ap',\n    pm: 'ip',\n    midnight: 'keskiyö',\n    noon: 'keskipäivä',\n    morning: 'ap',\n    afternoon: 'ip',\n    evening: 'illalla',\n    night: 'yöllä'\n  },\n  wide: {\n    am: 'ap',\n    pm: 'ip',\n    midnight: 'keskiyöllä',\n    noon: 'keskipäivällä',\n    morning: 'aamupäivällä',\n    afternoon: 'iltapäivällä',\n    evening: 'illalla',\n    night: 'yöllä'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return number + '.';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingMonthValues,\n    defaultFormattingWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayValues,\n    defaultFormattingWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(e|j)/i,\n  abbreviated: /^(eaa.|jaa.)/i,\n  wide: /^(ennen ajanlaskun alkua|jälkeen ajanlaskun alun)/i\n};\nvar parseEraPatterns = {\n  any: [/^e/i, /^j/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234]\\.? kvartaali/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[thmkeslj]/i,\n  abbreviated: /^(tammi|helmi|maalis|huhti|touko|kesä|heinä|elo|syys|loka|marras|joulu)/i,\n  wide: /^(tammikuu|helmikuu|maaliskuu|huhtikuu|toukokuu|kesäkuu|heinäkuu|elokuu|syyskuu|lokakuu|marraskuu|joulukuu)(ta)?/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^t/i, /^h/i, /^m/i, /^h/i, /^t/i, /^k/i, /^h/i, /^e/i, /^s/i, /^l/i, /^m/i, /^j/i],\n  any: [/^ta/i, /^hel/i, /^maa/i, /^hu/i, /^to/i, /^k/i, /^hei/i, /^e/i, /^s/i, /^l/i, /^mar/i, /^j/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtkpl]/i,\n  short: /^(su|ma|ti|ke|to|pe|la)/i,\n  abbreviated: /^(sunn.|maan.|tiis.|kesk.|torst.|perj.|la)/i,\n  wide: /^(sunnuntai|maanantai|tiistai|keskiviikko|torstai|perjantai|lauantai)(na)?/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^k/i, /^t/i, /^p/i, /^l/i],\n  any: [/^s/i, /^m/i, /^ti/i, /^k/i, /^to/i, /^p/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(ap|ip|keskiyö|keskipäivä|aamupäivällä|iltapäivällä|illalla|yöllä)/i,\n  any: /^(ap|ip|keskiyöllä|keskipäivällä|aamupäivällä|iltapäivällä|illalla|yöllä)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^ap/i,\n    pm: /^ip/i,\n    midnight: /^keskiyö/i,\n    noon: /^keskipäivä/i,\n    morning: /aamupäivällä/i,\n    afternoon: /iltapäivällä/i,\n    evening: /illalla/i,\n    night: /yöllä/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Finnish locale.\n * @language Finnish\n * @iso-639-2 fin\n * @author Pyry-Samuli Lahti [@Pyppe]{@link https://github.com/Pyppe}\n * @author Edo Rivai [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}\n * @author Samu Juvonen [@sjuvonen]{@link https://github.com/sjuvonen}\n */\nvar locale = {\n  code: 'fi',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'moins d’une seconde',\n    other: 'moins de {{count}} secondes'\n  },\n  xSeconds: {\n    one: '1 seconde',\n    other: '{{count}} secondes'\n  },\n  halfAMinute: '30 secondes',\n  lessThanXMinutes: {\n    one: 'moins d’une minute',\n    other: 'moins de {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'environ 1 heure',\n    other: 'environ {{count}} heures'\n  },\n  xHours: {\n    one: '1 heure',\n    other: '{{count}} heures'\n  },\n  xDays: {\n    one: '1 jour',\n    other: '{{count}} jours'\n  },\n  aboutXWeeks: {\n    one: 'environ 1 semaine',\n    other: 'environ {{count}} semaines'\n  },\n  xWeeks: {\n    one: '1 semaine',\n    other: '{{count}} semaines'\n  },\n  aboutXMonths: {\n    one: 'environ 1 mois',\n    other: 'environ {{count}} mois'\n  },\n  xMonths: {\n    one: '1 mois',\n    other: '{{count}} mois'\n  },\n  aboutXYears: {\n    one: 'environ 1 an',\n    other: 'environ {{count}} ans'\n  },\n  xYears: {\n    one: '1 an',\n    other: '{{count}} ans'\n  },\n  overXYears: {\n    one: 'plus d’un an',\n    other: 'plus de {{count}} ans'\n  },\n  almostXYears: {\n    one: 'presqu’un an',\n    other: 'presque {{count}} ans'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var form = formatDistanceLocale[token];\n  if (typeof form === 'string') {\n    result = form;\n  } else if (count === 1) {\n    result = form.one;\n  } else {\n    result = form.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'dans ' + result;\n    } else {\n      return 'il y a ' + result;\n    }\n  }\n  return result;\n};\nexport default formatDistance;","var formatRelativeLocale = {\n  lastWeek: \"eeee 'dernier à' p\",\n  yesterday: \"'hier à' p\",\n  today: \"'aujourd’hui à' p\",\n  tomorrow: \"'demain à' p'\",\n  nextWeek: \"eeee 'prochain à' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['av. J.-C', 'ap. J.-C'],\n  abbreviated: ['av. J.-C', 'ap. J.-C'],\n  wide: ['avant Jésus-Christ', 'après Jésus-Christ']\n};\nvar quarterValues = {\n  narrow: ['T1', 'T2', 'T3', 'T4'],\n  abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],\n  wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],\n  wide: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']\n};\nvar dayValues = {\n  narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n  short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],\n  abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n  wide: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'minuit',\n    noon: 'midi',\n    morning: 'mat.',\n    afternoon: 'ap.m.',\n    evening: 'soir',\n    night: 'mat.'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'minuit',\n    noon: 'midi',\n    morning: 'matin',\n    afternoon: 'après-midi',\n    evening: 'soir',\n    night: 'matin'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'minuit',\n    noon: 'midi',\n    morning: 'du matin',\n    afternoon: 'de l’après-midi',\n    evening: 'du soir',\n    night: 'du matin'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n  var unit = options === null || options === void 0 ? void 0 : options.unit;\n  if (number === 0) return '0';\n  var feminineUnits = ['year', 'week', 'hour', 'minute', 'second'];\n  var suffix;\n  if (number === 1) {\n    suffix = unit && feminineUnits.includes(unit) ? 'ère' : 'er';\n  } else {\n    suffix = 'ème';\n  }\n  return number + suffix;\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ième|ère|ème|er|e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(av\\.J\\.C|ap\\.J\\.C|ap\\.J\\.-C)/i,\n  abbreviated: /^(av\\.J\\.-C|av\\.J-C|apr\\.J\\.-C|apr\\.J-C|ap\\.J-C)/i,\n  wide: /^(avant Jésus-Christ|après Jésus-Christ)/i\n};\nvar parseEraPatterns = {\n  any: [/^av/i, /^ap/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^T?[1234]/i,\n  abbreviated: /^[1234](er|ème|e)? trim\\.?/i,\n  wide: /^[1234](er|ème|e)? trimestre/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\\.?/i,\n  wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^av/i, /^ma/i, /^juin/i, /^juil/i, /^ao/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[lmjvsd]/i,\n  short: /^(di|lu|ma|me|je|ve|sa)/i,\n  abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\\.?/i,\n  wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n  any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|minuit|midi|mat\\.?|ap\\.?m\\.?|soir|nuit)/i,\n  any: /^([ap]\\.?\\s?m\\.?|du matin|de l'après[-\\s]midi|du soir|de la nuit)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^min/i,\n    noon: /^mid/i,\n    morning: /mat/i,\n    afternoon: /ap/i,\n    evening: /soir/i,\n    night: /nuit/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE d MMMM y',\n  long: 'd MMMM y',\n  medium: 'd MMM y',\n  short: 'yy-MM-dd'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'à' {{time}}\",\n  long: \"{{date}} 'à' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","// Same as fr\nimport formatDistance from \"../fr/_lib/formatDistance/index.js\";\nimport formatRelative from \"../fr/_lib/formatRelative/index.js\";\nimport localize from \"../fr/_lib/localize/index.js\";\nimport match from \"../fr/_lib/match/index.js\";\n// Unique for fr-CA\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale (Canada).\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n * @author Gabriele Petrioli [@gpetrioli]{@link https://github.com/gpetrioli}\n */\nvar locale = {\n  code: 'fr-CA',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  // Unique for fr-CA\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE d MMMM y',\n  long: 'd MMMM y',\n  medium: 'd MMM y',\n  short: 'dd/MM/y'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'à' {{time}}\",\n  long: \"{{date}} 'à' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale.\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n */\nvar locale = {\n  code: 'fr',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'פחות משנייה',\n    two: 'פחות משתי שניות',\n    other: 'פחות מ־{{count}} שניות'\n  },\n  xSeconds: {\n    one: 'שנייה',\n    two: 'שתי שניות',\n    other: '{{count}} שניות'\n  },\n  halfAMinute: 'חצי דקה',\n  lessThanXMinutes: {\n    one: 'פחות מדקה',\n    two: 'פחות משתי דקות',\n    other: 'פחות מ־{{count}} דקות'\n  },\n  xMinutes: {\n    one: 'דקה',\n    two: 'שתי דקות',\n    other: '{{count}} דקות'\n  },\n  aboutXHours: {\n    one: 'כשעה',\n    two: 'כשעתיים',\n    other: 'כ־{{count}} שעות'\n  },\n  xHours: {\n    one: 'שעה',\n    two: 'שעתיים',\n    other: '{{count}} שעות'\n  },\n  xDays: {\n    one: 'יום',\n    two: 'יומיים',\n    other: '{{count}} ימים'\n  },\n  aboutXWeeks: {\n    one: 'כשבוע',\n    two: 'כשבועיים',\n    other: 'כ־{{count}} שבועות'\n  },\n  xWeeks: {\n    one: 'שבוע',\n    two: 'שבועיים',\n    other: '{{count}} שבועות'\n  },\n  aboutXMonths: {\n    one: 'כחודש',\n    two: 'כחודשיים',\n    other: 'כ־{{count}} חודשים'\n  },\n  xMonths: {\n    one: 'חודש',\n    two: 'חודשיים',\n    other: '{{count}} חודשים'\n  },\n  aboutXYears: {\n    one: 'כשנה',\n    two: 'כשנתיים',\n    other: 'כ־{{count}} שנים'\n  },\n  xYears: {\n    one: 'שנה',\n    two: 'שנתיים',\n    other: '{{count}} שנים'\n  },\n  overXYears: {\n    one: 'יותר משנה',\n    two: 'יותר משנתיים',\n    other: 'יותר מ־{{count}} שנים'\n  },\n  almostXYears: {\n    one: 'כמעט שנה',\n    two: 'כמעט שנתיים',\n    other: 'כמעט {{count}} שנים'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  // Return word instead of `in one day` or `one day ago`\n  if (token === 'xDays' && options !== null && options !== void 0 && options.addSuffix && count <= 2) {\n    if (options.comparison && options.comparison > 0) {\n      return count === 1 ? 'מחר' : 'מחרתיים';\n    }\n    return count === 1 ? 'אתמול' : 'שלשום';\n  }\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else if (count === 2) {\n    result = tokenValue.two;\n  } else {\n    result = tokenValue.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'בעוד ' + result;\n    } else {\n      return 'לפני ' + result;\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, d בMMMM y',\n  long: 'd בMMMM y',\n  medium: 'd בMMM y',\n  short: 'd.M.y'\n};\nvar timeFormats = {\n  full: 'H:mm:ss zzzz',\n  long: 'H:mm:ss z',\n  medium: 'H:mm:ss',\n  short: 'H:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'בשעה' {{time}}\",\n  long: \"{{date}} 'בשעה' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"eeee 'שעבר בשעה' p\",\n  yesterday: \"'אתמול בשעה' p\",\n  today: \"'היום בשעה' p\",\n  tomorrow: \"'מחר בשעה' p\",\n  nextWeek: \"eeee 'בשעה' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['לפנה״ס', 'לספירה'],\n  abbreviated: ['לפנה״ס', 'לספירה'],\n  wide: ['לפני הספירה', 'לספירה']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['רבעון 1', 'רבעון 2', 'רבעון 3', 'רבעון 4']\n};\nvar monthValues = {\n  narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n  abbreviated: ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'],\n  wide: ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר']\n};\nvar dayValues = {\n  narrow: ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],\n  short: ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],\n  abbreviated: ['יום א׳', 'יום ב׳', 'יום ג׳', 'יום ד׳', 'יום ה׳', 'יום ו׳', 'שבת'],\n  wide: ['יום ראשון', 'יום שני', 'יום שלישי', 'יום רביעי', 'יום חמישי', 'יום שישי', 'יום שבת']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'לפנה״צ',\n    pm: 'אחה״צ',\n    midnight: 'חצות',\n    noon: 'צהריים',\n    morning: 'בוקר',\n    afternoon: 'אחר הצהריים',\n    evening: 'ערב',\n    night: 'לילה'\n  },\n  abbreviated: {\n    am: 'לפנה״צ',\n    pm: 'אחה״צ',\n    midnight: 'חצות',\n    noon: 'צהריים',\n    morning: 'בוקר',\n    afternoon: 'אחר הצהריים',\n    evening: 'ערב',\n    night: 'לילה'\n  },\n  wide: {\n    am: 'לפנה״צ',\n    pm: 'אחה״צ',\n    midnight: 'חצות',\n    noon: 'צהריים',\n    morning: 'בוקר',\n    afternoon: 'אחר הצהריים',\n    evening: 'ערב',\n    night: 'לילה'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'לפנה״צ',\n    pm: 'אחה״צ',\n    midnight: 'חצות',\n    noon: 'צהריים',\n    morning: 'בבוקר',\n    afternoon: 'בצהריים',\n    evening: 'בערב',\n    night: 'בלילה'\n  },\n  abbreviated: {\n    am: 'לפנה״צ',\n    pm: 'אחה״צ',\n    midnight: 'חצות',\n    noon: 'צהריים',\n    morning: 'בבוקר',\n    afternoon: 'אחר הצהריים',\n    evening: 'בערב',\n    night: 'בלילה'\n  },\n  wide: {\n    am: 'לפנה״צ',\n    pm: 'אחה״צ',\n    midnight: 'חצות',\n    noon: 'צהריים',\n    morning: 'בבוקר',\n    afternoon: 'אחר הצהריים',\n    evening: 'בערב',\n    night: 'בלילה'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n\n  // We only show words till 10\n  if (number <= 0 || number > 10) return String(number);\n  var unit = String(options === null || options === void 0 ? void 0 : options.unit);\n  var isFemale = ['year', 'hour', 'minute', 'second'].indexOf(unit) >= 0;\n  var male = ['ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שביעי', 'שמיני', 'תשיעי', 'עשירי'];\n  var female = ['ראשונה', 'שנייה', 'שלישית', 'רביעית', 'חמישית', 'שישית', 'שביעית', 'שמינית', 'תשיעית', 'עשירית'];\n  var index = number - 1;\n  return isFemale ? female[index] : male[index];\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+|(ראשון|שני|שלישי|רביעי|חמישי|שישי|שביעי|שמיני|תשיעי|עשירי|ראשונה|שנייה|שלישית|רביעית|חמישית|שישית|שביעית|שמינית|תשיעית|עשירית))/i;\nvar parseOrdinalNumberPattern = /^(\\d+|רא|שנ|של|רב|ח|שי|שב|שמ|ת|ע)/i;\nvar matchEraPatterns = {\n  narrow: /^ל(ספירה|פנה״ס)/i,\n  abbreviated: /^ל(ספירה|פנה״ס)/i,\n  wide: /^ל(פני ה)?ספירה/i\n};\nvar parseEraPatterns = {\n  any: [/^לפ/i, /^לס/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^רבעון [1234]/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^\\d+/i,\n  abbreviated: /^(ינו|פבר|מרץ|אפר|מאי|יוני|יולי|אוג|ספט|אוק|נוב|דצמ)׳?/i,\n  wide: /^(ינואר|פברואר|מרץ|אפריל|מאי|יוני|יולי|אוגוסט|ספטמבר|אוקטובר|נובמבר|דצמבר)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^1$/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^7/i, /^8/i, /^9/i, /^10/i, /^11/i, /^12/i],\n  any: [/^ינ/i, /^פ/i, /^מר/i, /^אפ/i, /^מא/i, /^יונ/i, /^יול/i, /^אוג/i, /^ס/i, /^אוק/i, /^נ/i, /^ד/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[אבגדהוש]׳/i,\n  short: /^[אבגדהוש]׳/i,\n  abbreviated: /^(שבת|יום (א|ב|ג|ד|ה|ו)׳)/i,\n  wide: /^יום (ראשון|שני|שלישי|רביעי|חמישי|שישי|שבת)/i\n};\nvar parseDayPatterns = {\n  abbreviated: [/א׳$/i, /ב׳$/i, /ג׳$/i, /ד׳$/i, /ה׳$/i, /ו׳$/i, /^ש/i],\n  wide: [/ן$/i, /ני$/i, /לישי$/i, /עי$/i, /מישי$/i, /שישי$/i, /ת$/i],\n  any: [/^א/i, /^ב/i, /^ג/i, /^ד/i, /^ה/i, /^ו/i, /^ש/i]\n};\nvar matchDayPeriodPatterns = {\n  any: /^(אחר ה|ב)?(חצות|צהריים|בוקר|ערב|לילה|אחה״צ|לפנה״צ)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^לפ/i,\n    pm: /^אחה/i,\n    midnight: /^ח/i,\n    noon: /^צ/i,\n    morning: /בוקר/i,\n    afternoon: /בצ|אחר/i,\n    evening: /ערב/i,\n    night: /לילה/i\n  }\n};\nvar ordinalName = ['רא', 'שנ', 'של', 'רב', 'ח', 'שי', 'שב', 'שמ', 'ת', 'ע'];\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      var number = parseInt(value, 10);\n      return isNaN(number) ? ordinalName.indexOf(value) + 1 : number;\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Hebrew locale.\n * @language Hebrew\n * @iso-639-2 heb\n * @author Nir Lahad [@nirlah]{@link https://github.com/nirlah}\n */\nvar locale = {\n  code: 'he',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","var translations = {\n  about: 'körülbelül',\n  over: 'több mint',\n  almost: 'majdnem',\n  lessthan: 'kevesebb mint'\n};\nvar withoutSuffixes = {\n  xseconds: ' másodperc',\n  halfaminute: 'fél perc',\n  xminutes: ' perc',\n  xhours: ' óra',\n  xdays: ' nap',\n  xweeks: ' hét',\n  xmonths: ' hónap',\n  xyears: ' év'\n};\nvar withSuffixes = {\n  xseconds: {\n    '-1': ' másodperccel ezelőtt',\n    '1': ' másodperc múlva',\n    '0': ' másodperce'\n  },\n  halfaminute: {\n    '-1': 'fél perccel ezelőtt',\n    '1': 'fél perc múlva',\n    '0': 'fél perce'\n  },\n  xminutes: {\n    '-1': ' perccel ezelőtt',\n    '1': ' perc múlva',\n    '0': ' perce'\n  },\n  xhours: {\n    '-1': ' órával ezelőtt',\n    '1': ' óra múlva',\n    '0': ' órája'\n  },\n  xdays: {\n    '-1': ' nappal ezelőtt',\n    '1': ' nap múlva',\n    '0': ' napja'\n  },\n  xweeks: {\n    '-1': ' héttel ezelőtt',\n    '1': ' hét múlva',\n    '0': ' hete'\n  },\n  xmonths: {\n    '-1': ' hónappal ezelőtt',\n    '1': ' hónap múlva',\n    '0': ' hónapja'\n  },\n  xyears: {\n    '-1': ' évvel ezelőtt',\n    '1': ' év múlva',\n    '0': ' éve'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var adverb = token.match(/about|over|almost|lessthan/i);\n  var unit = adverb ? token.replace(adverb[0], '') : token;\n  var addSuffix = (options === null || options === void 0 ? void 0 : options.addSuffix) === true;\n  var key = unit.toLowerCase();\n  var comparison = (options === null || options === void 0 ? void 0 : options.comparison) || 0;\n  var translated = addSuffix ? withSuffixes[key][comparison] : withoutSuffixes[key];\n  var result = key === 'halfaminute' ? translated : count + translated;\n  if (adverb) {\n    var adv = adverb[0].toLowerCase();\n    result = translations[adv] + ' ' + result;\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'y. MMMM d., EEEE',\n  long: 'y. MMMM d.',\n  medium: 'y. MMM d.',\n  short: 'y. MM. dd.'\n};\nvar timeFormats = {\n  full: 'H:mm:ss zzzz',\n  long: 'H:mm:ss z',\n  medium: 'H:mm:ss',\n  short: 'H:mm'\n};\nvar dateTimeFormats = {\n  full: '{{date}} {{time}}',\n  long: '{{date}} {{time}}',\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var accusativeWeekdays = ['vasárnap', 'hétfőn', 'kedden', 'szerdán', 'csütörtökön', 'pénteken', 'szombaton'];\nfunction week(isFuture) {\n  return function (date) {\n    var weekday = accusativeWeekdays[date.getUTCDay()];\n    var prefix = isFuture ? '' : \"'múlt' \";\n    return \"\".concat(prefix, \"'\").concat(weekday, \"' p'-kor'\");\n  };\n}\nvar formatRelativeLocale = {\n  lastWeek: week(false),\n  yesterday: \"'tegnap' p'-kor'\",\n  today: \"'ma' p'-kor'\",\n  tomorrow: \"'holnap' p'-kor'\",\n  nextWeek: week(true),\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, date) {\n  var format = formatRelativeLocale[token];\n  if (typeof format === 'function') {\n    return format(date);\n  }\n  return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['ie.', 'isz.'],\n  abbreviated: ['i. e.', 'i. sz.'],\n  wide: ['Krisztus előtt', 'időszámításunk szerint']\n};\nvar quarterValues = {\n  narrow: ['1.', '2.', '3.', '4.'],\n  abbreviated: ['1. n.év', '2. n.év', '3. n.év', '4. n.év'],\n  wide: ['1. negyedév', '2. negyedév', '3. negyedév', '4. negyedév']\n};\nvar formattingQuarterValues = {\n  narrow: ['I.', 'II.', 'III.', 'IV.'],\n  abbreviated: ['I. n.év', 'II. n.év', 'III. n.év', 'IV. n.év'],\n  wide: ['I. negyedév', 'II. negyedév', 'III. negyedév', 'IV. negyedév']\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'Á', 'M', 'J', 'J', 'A', 'Sz', 'O', 'N', 'D'],\n  abbreviated: ['jan.', 'febr.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', 'dec.'],\n  wide: ['január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december']\n};\nvar dayValues = {\n  narrow: ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'],\n  short: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],\n  abbreviated: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],\n  wide: ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'de.',\n    pm: 'du.',\n    midnight: 'éjfél',\n    noon: 'dél',\n    morning: 'reggel',\n    afternoon: 'du.',\n    evening: 'este',\n    night: 'éjjel'\n  },\n  abbreviated: {\n    am: 'de.',\n    pm: 'du.',\n    midnight: 'éjfél',\n    noon: 'dél',\n    morning: 'reggel',\n    afternoon: 'du.',\n    evening: 'este',\n    night: 'éjjel'\n  },\n  wide: {\n    am: 'de.',\n    pm: 'du.',\n    midnight: 'éjfél',\n    noon: 'dél',\n    morning: 'reggel',\n    afternoon: 'délután',\n    evening: 'este',\n    night: 'éjjel'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return number + '.';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    },\n    formattingValues: formattingQuarterValues,\n    defaultFormattingWidth: 'wide'\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(ie\\.|isz\\.)/i,\n  abbreviated: /^(i\\.\\s?e\\.?|b?\\s?c\\s?e|i\\.\\s?sz\\.?)/i,\n  wide: /^(Krisztus előtt|időszámításunk előtt|időszámításunk szerint|i\\. sz\\.)/i\n};\nvar parseEraPatterns = {\n  narrow: [/ie/i, /isz/i],\n  abbreviated: [/^(i\\.?\\s?e\\.?|b\\s?ce)/i, /^(i\\.?\\s?sz\\.?|c\\s?e)/i],\n  any: [/előtt/i, /(szerint|i. sz.)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]\\.?/i,\n  abbreviated: /^[1234]?\\.?\\s?n\\.év/i,\n  wide: /^([1234]|I|II|III|IV)?\\.?\\s?negyedév/i\n};\nvar parseQuarterPatterns = {\n  any: [/1|I$/i, /2|II$/i, /3|III/i, /4|IV/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmaásond]|sz/i,\n  abbreviated: /^(jan\\.?|febr\\.?|márc\\.?|ápr\\.?|máj\\.?|jún\\.?|júl\\.?|aug\\.?|szept\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n  wide: /^(január|február|március|április|május|június|július|augusztus|szeptember|október|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a|á/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s|sz/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^már/i, /^áp/i, /^máj/i, /^jún/i, /^júl/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^([vhkpc]|sz|cs|sz)/i,\n  short: /^([vhkp]|sze|cs|szo)/i,\n  abbreviated: /^([vhkp]|sze|cs|szo)/i,\n  wide: /^(vasárnap|hétfő|kedd|szerda|csütörtök|péntek|szombat)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^v/i, /^h/i, /^k/i, /^sz/i, /^c/i, /^p/i, /^sz/i],\n  any: [/^v/i, /^h/i, /^k/i, /^sze/i, /^c/i, /^p/i, /^szo/i]\n};\nvar matchDayPeriodPatterns = {\n  any: /^((de|du)\\.?|éjfél|délután|dél|reggel|este|éjjel)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^de\\.?/i,\n    pm: /^du\\.?/i,\n    midnight: /^éjf/i,\n    noon: /^dé/i,\n    morning: /reg/i,\n    afternoon: /^délu\\.?/i,\n    evening: /es/i,\n    night: /éjj/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Hungarian locale.\n * @language Hungarian\n * @iso-639-2 hun\n * @author Pavlo Shpak [@pshpak]{@link https://github.com/pshpak}\n * @author Eduardo Pardo [@eduardopsll]{@link https://github.com/eduardopsll}\n * @author Zoltan Szepesi [@twodcube]{@link https://github.com/twodcube}\n */\nvar locale = {\n  code: 'hu',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'meno di un secondo',\n    other: 'meno di {{count}} secondi'\n  },\n  xSeconds: {\n    one: 'un secondo',\n    other: '{{count}} secondi'\n  },\n  halfAMinute: 'alcuni secondi',\n  lessThanXMinutes: {\n    one: 'meno di un minuto',\n    other: 'meno di {{count}} minuti'\n  },\n  xMinutes: {\n    one: 'un minuto',\n    other: '{{count}} minuti'\n  },\n  aboutXHours: {\n    one: \"circa un'ora\",\n    other: 'circa {{count}} ore'\n  },\n  xHours: {\n    one: \"un'ora\",\n    other: '{{count}} ore'\n  },\n  xDays: {\n    one: 'un giorno',\n    other: '{{count}} giorni'\n  },\n  aboutXWeeks: {\n    one: 'circa una settimana',\n    other: 'circa {{count}} settimane'\n  },\n  xWeeks: {\n    one: 'una settimana',\n    other: '{{count}} settimane'\n  },\n  aboutXMonths: {\n    one: 'circa un mese',\n    other: 'circa {{count}} mesi'\n  },\n  xMonths: {\n    one: 'un mese',\n    other: '{{count}} mesi'\n  },\n  aboutXYears: {\n    one: 'circa un anno',\n    other: 'circa {{count}} anni'\n  },\n  xYears: {\n    one: 'un anno',\n    other: '{{count}} anni'\n  },\n  overXYears: {\n    one: 'più di un anno',\n    other: 'più di {{count}} anni'\n  },\n  almostXYears: {\n    one: 'quasi un anno',\n    other: 'quasi {{count}} anni'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'tra ' + result;\n    } else {\n      return result + ' fa';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE d MMMM y',\n  long: 'd MMMM y',\n  medium: 'd MMM y',\n  short: 'dd/MM/y'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: '{{date}} {{time}}',\n  long: '{{date}} {{time}}',\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n      // eslint-disable-next-line no-console\n      console.warn(new Error().stack);\n    }\n    return new Date(NaN);\n  }\n}","export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n  var number = Number(dirtyNumber);\n  if (isNaN(number)) {\n    return number;\n  }\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nexport default function isSameUTCWeek(dirtyDateLeft, dirtyDateRight, options) {\n  requiredArgs(2, arguments);\n  var dateLeftStartOfWeek = startOfUTCWeek(dirtyDateLeft, options);\n  var dateRightStartOfWeek = startOfUTCWeek(dirtyDateRight, options);\n  return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nvar weekdays = ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'];\nfunction _lastWeek(day) {\n  switch (day) {\n    case 0:\n      return \"'domenica scorsa alle' p\";\n    default:\n      return \"'\" + weekdays[day] + \" scorso alle' p\";\n  }\n}\nfunction thisWeek(day) {\n  return \"'\" + weekdays[day] + \" alle' p\";\n}\nfunction _nextWeek(day) {\n  switch (day) {\n    case 0:\n      return \"'domenica prossima alle' p\";\n    default:\n      return \"'\" + weekdays[day] + \" prossimo alle' p\";\n  }\n}\nvar formatRelativeLocale = {\n  lastWeek: function lastWeek(date, baseDate, options) {\n    var day = date.getUTCDay();\n    if (isSameUTCWeek(date, baseDate, options)) {\n      return thisWeek(day);\n    } else {\n      return _lastWeek(day);\n    }\n  },\n  yesterday: \"'ieri alle' p\",\n  today: \"'oggi alle' p\",\n  tomorrow: \"'domani alle' p\",\n  nextWeek: function nextWeek(date, baseDate, options) {\n    var day = date.getUTCDay();\n    if (isSameUTCWeek(date, baseDate, options)) {\n      return thisWeek(day);\n    } else {\n      return _nextWeek(day);\n    }\n  },\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n  var format = formatRelativeLocale[token];\n  if (typeof format === 'function') {\n    return format(date, baseDate, options);\n  }\n  return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['aC', 'dC'],\n  abbreviated: ['a.C.', 'd.C.'],\n  wide: ['avanti Cristo', 'dopo Cristo']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['T1', 'T2', 'T3', 'T4'],\n  wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']\n};\nvar monthValues = {\n  narrow: ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'],\n  wide: ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre']\n};\nvar dayValues = {\n  narrow: ['D', 'L', 'M', 'M', 'G', 'V', 'S'],\n  short: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],\n  abbreviated: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],\n  wide: ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'm.',\n    pm: 'p.',\n    midnight: 'mezzanotte',\n    noon: 'mezzogiorno',\n    morning: 'mattina',\n    afternoon: 'pomeriggio',\n    evening: 'sera',\n    night: 'notte'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'mezzanotte',\n    noon: 'mezzogiorno',\n    morning: 'mattina',\n    afternoon: 'pomeriggio',\n    evening: 'sera',\n    night: 'notte'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'mezzanotte',\n    noon: 'mezzogiorno',\n    morning: 'mattina',\n    afternoon: 'pomeriggio',\n    evening: 'sera',\n    night: 'notte'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'm.',\n    pm: 'p.',\n    midnight: 'mezzanotte',\n    noon: 'mezzogiorno',\n    morning: 'di mattina',\n    afternoon: 'del pomeriggio',\n    evening: 'di sera',\n    night: 'di notte'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'mezzanotte',\n    noon: 'mezzogiorno',\n    morning: 'di mattina',\n    afternoon: 'del pomeriggio',\n    evening: 'di sera',\n    night: 'di notte'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'mezzanotte',\n    noon: 'mezzogiorno',\n    morning: 'di mattina',\n    afternoon: 'del pomeriggio',\n    evening: 'di sera',\n    night: 'di notte'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return String(number);\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(º)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(aC|dC)/i,\n  abbreviated: /^(a\\.?\\s?C\\.?|a\\.?\\s?e\\.?\\s?v\\.?|d\\.?\\s?C\\.?|e\\.?\\s?v\\.?)/i,\n  wide: /^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i\n};\nvar parseEraPatterns = {\n  any: [/^a/i, /^(d|e)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^t[1234]/i,\n  wide: /^[1234](º)? trimestre/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[gfmalsond]/i,\n  abbreviated: /^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,\n  wide: /^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^g/i, /^f/i, /^m/i, /^a/i, /^m/i, /^g/i, /^l/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ge/i, /^f/i, /^mar/i, /^ap/i, /^mag/i, /^gi/i, /^l/i, /^ag/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[dlmgvs]/i,\n  short: /^(do|lu|ma|me|gi|ve|sa)/i,\n  abbreviated: /^(dom|lun|mar|mer|gio|ven|sab)/i,\n  wide: /^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^g/i, /^v/i, /^s/i],\n  any: [/^d/i, /^l/i, /^ma/i, /^me/i, /^g/i, /^v/i, /^s/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|m\\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,\n  any: /^([ap]\\.?\\s?m\\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mezza/i,\n    noon: /^mezzo/i,\n    morning: /mattina/i,\n    afternoon: /pomeriggio/i,\n    evening: /sera/i,\n    night: /notte/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Italian locale.\n * @language Italian\n * @iso-639-2 ita\n * @author Alberto Restifo [@albertorestifo]{@link https://github.com/albertorestifo}\n * @author Giovanni Polimeni [@giofilo]{@link https://github.com/giofilo}\n * @author Vincenzo Carrese [@vin-car]{@link https://github.com/vin-car}\n */\nvar locale = {\n  code: 'it',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: '1秒未満',\n    other: '{{count}}秒未満',\n    oneWithSuffix: '約1秒',\n    otherWithSuffix: '約{{count}}秒'\n  },\n  xSeconds: {\n    one: '1秒',\n    other: '{{count}}秒'\n  },\n  halfAMinute: '30秒',\n  lessThanXMinutes: {\n    one: '1分未満',\n    other: '{{count}}分未満',\n    oneWithSuffix: '約1分',\n    otherWithSuffix: '約{{count}}分'\n  },\n  xMinutes: {\n    one: '1分',\n    other: '{{count}}分'\n  },\n  aboutXHours: {\n    one: '約1時間',\n    other: '約{{count}}時間'\n  },\n  xHours: {\n    one: '1時間',\n    other: '{{count}}時間'\n  },\n  xDays: {\n    one: '1日',\n    other: '{{count}}日'\n  },\n  aboutXWeeks: {\n    one: '約1週間',\n    other: '約{{count}}週間'\n  },\n  xWeeks: {\n    one: '1週間',\n    other: '{{count}}週間'\n  },\n  aboutXMonths: {\n    one: '約1か月',\n    other: '約{{count}}か月'\n  },\n  xMonths: {\n    one: '1か月',\n    other: '{{count}}か月'\n  },\n  aboutXYears: {\n    one: '約1年',\n    other: '約{{count}}年'\n  },\n  xYears: {\n    one: '1年',\n    other: '{{count}}年'\n  },\n  overXYears: {\n    one: '1年以上',\n    other: '{{count}}年以上'\n  },\n  almostXYears: {\n    one: '1年近く',\n    other: '{{count}}年近く'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  options = options || {};\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    if (options.addSuffix && tokenValue.oneWithSuffix) {\n      result = tokenValue.oneWithSuffix;\n    } else {\n      result = tokenValue.one;\n    }\n  } else {\n    if (options.addSuffix && tokenValue.otherWithSuffix) {\n      result = tokenValue.otherWithSuffix.replace('{{count}}', String(count));\n    } else {\n      result = tokenValue.other.replace('{{count}}', String(count));\n    }\n  }\n  if (options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return result + '後';\n    } else {\n      return result + '前';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'y年M月d日EEEE',\n  long: 'y年M月d日',\n  medium: 'y/MM/dd',\n  short: 'y/MM/dd'\n};\nvar timeFormats = {\n  full: 'H時mm分ss秒 zzzz',\n  long: 'H:mm:ss z',\n  medium: 'H:mm:ss',\n  short: 'H:mm'\n};\nvar dateTimeFormats = {\n  full: '{{date}} {{time}}',\n  long: '{{date}} {{time}}',\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: '先週のeeeeのp',\n  yesterday: '昨日のp',\n  today: '今日のp',\n  tomorrow: '明日のp',\n  nextWeek: '翌週のeeeeのp',\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['BC', 'AC'],\n  abbreviated: ['紀元前', '西暦'],\n  wide: ['紀元前', '西暦']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['第1四半期', '第2四半期', '第3四半期', '第4四半期']\n};\nvar monthValues = {\n  narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n  abbreviated: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n  wide: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']\n};\nvar dayValues = {\n  narrow: ['日', '月', '火', '水', '木', '金', '土'],\n  short: ['日', '月', '火', '水', '木', '金', '土'],\n  abbreviated: ['日', '月', '火', '水', '木', '金', '土'],\n  wide: ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: '午前',\n    pm: '午後',\n    midnight: '深夜',\n    noon: '正午',\n    morning: '朝',\n    afternoon: '午後',\n    evening: '夜',\n    night: '深夜'\n  },\n  abbreviated: {\n    am: '午前',\n    pm: '午後',\n    midnight: '深夜',\n    noon: '正午',\n    morning: '朝',\n    afternoon: '午後',\n    evening: '夜',\n    night: '深夜'\n  },\n  wide: {\n    am: '午前',\n    pm: '午後',\n    midnight: '深夜',\n    noon: '正午',\n    morning: '朝',\n    afternoon: '午後',\n    evening: '夜',\n    night: '深夜'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: '午前',\n    pm: '午後',\n    midnight: '深夜',\n    noon: '正午',\n    morning: '朝',\n    afternoon: '午後',\n    evening: '夜',\n    night: '深夜'\n  },\n  abbreviated: {\n    am: '午前',\n    pm: '午後',\n    midnight: '深夜',\n    noon: '正午',\n    morning: '朝',\n    afternoon: '午後',\n    evening: '夜',\n    night: '深夜'\n  },\n  wide: {\n    am: '午前',\n    pm: '午後',\n    midnight: '深夜',\n    noon: '正午',\n    morning: '朝',\n    afternoon: '午後',\n    evening: '夜',\n    night: '深夜'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n  var unit = String(options === null || options === void 0 ? void 0 : options.unit);\n  switch (unit) {\n    case 'year':\n      return \"\".concat(number, \"\\u5E74\");\n    case 'quarter':\n      return \"\\u7B2C\".concat(number, \"\\u56DB\\u534A\\u671F\");\n    case 'month':\n      return \"\".concat(number, \"\\u6708\");\n    case 'week':\n      return \"\\u7B2C\".concat(number, \"\\u9031\");\n    case 'date':\n      return \"\".concat(number, \"\\u65E5\");\n    case 'hour':\n      return \"\".concat(number, \"\\u6642\");\n    case 'minute':\n      return \"\".concat(number, \"\\u5206\");\n    case 'second':\n      return \"\".concat(number, \"\\u79D2\");\n    default:\n      return \"\".concat(number);\n  }\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return Number(quarter) - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nimport buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nvar matchOrdinalNumberPattern = /^第?\\d+(年|四半期|月|週|日|時|分|秒)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(B\\.?C\\.?|A\\.?D\\.?)/i,\n  abbreviated: /^(紀元[前後]|西暦)/i,\n  wide: /^(紀元[前後]|西暦)/i\n};\nvar parseEraPatterns = {\n  narrow: [/^B/i, /^A/i],\n  any: [/^(紀元前)/i, /^(西暦|紀元後)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^Q[1234]/i,\n  wide: /^第[1234一二三四１２３４]四半期/i\n};\nvar parseQuarterPatterns = {\n  any: [/(1|一|１)/i, /(2|二|２)/i, /(3|三|３)/i, /(4|四|４)/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^([123456789]|1[012])/,\n  abbreviated: /^([123456789]|1[012])月/i,\n  wide: /^([123456789]|1[012])月/i\n};\nvar parseMonthPatterns = {\n  any: [/^1\\D/, /^2/, /^3/, /^4/, /^5/, /^6/, /^7/, /^8/, /^9/, /^10/, /^11/, /^12/]\n};\nvar matchDayPatterns = {\n  narrow: /^[日月火水木金土]/,\n  short: /^[日月火水木金土]/,\n  abbreviated: /^[日月火水木金土]/,\n  wide: /^[日月火水木金土]曜日/\n};\nvar parseDayPatterns = {\n  any: [/^日/, /^月/, /^火/, /^水/, /^木/, /^金/, /^土/]\n};\nvar matchDayPeriodPatterns = {\n  any: /^(AM|PM|午前|午後|正午|深夜|真夜中|夜|朝)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^(A|午前)/i,\n    pm: /^(P|午後)/i,\n    midnight: /^深夜|真夜中/i,\n    noon: /^正午/i,\n    morning: /^朝/i,\n    afternoon: /^午後/i,\n    evening: /^夜/i,\n    night: /^深夜/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Japanese locale.\n * @language Japanese\n * @iso-639-2 jpn\n * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}\n * @author Yamagishi Kazutoshi [@ykzts]{@link https://github.com/ykzts}\n * @author Luca Ban [@mesqueeb]{@link https://github.com/mesqueeb}\n * @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}\n * @author Taiki IKeda [@so99ynoodles]{@link https://github.com/so99ynoodles}\n */\nvar locale = {\n  code: 'ja',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: '1초 미만',\n    other: '{{count}}초 미만'\n  },\n  xSeconds: {\n    one: '1초',\n    other: '{{count}}초'\n  },\n  halfAMinute: '30초',\n  lessThanXMinutes: {\n    one: '1분 미만',\n    other: '{{count}}분 미만'\n  },\n  xMinutes: {\n    one: '1분',\n    other: '{{count}}분'\n  },\n  aboutXHours: {\n    one: '약 1시간',\n    other: '약 {{count}}시간'\n  },\n  xHours: {\n    one: '1시간',\n    other: '{{count}}시간'\n  },\n  xDays: {\n    one: '1일',\n    other: '{{count}}일'\n  },\n  aboutXWeeks: {\n    one: '약 1주',\n    other: '약 {{count}}주'\n  },\n  xWeeks: {\n    one: '1주',\n    other: '{{count}}주'\n  },\n  aboutXMonths: {\n    one: '약 1개월',\n    other: '약 {{count}}개월'\n  },\n  xMonths: {\n    one: '1개월',\n    other: '{{count}}개월'\n  },\n  aboutXYears: {\n    one: '약 1년',\n    other: '약 {{count}}년'\n  },\n  xYears: {\n    one: '1년',\n    other: '{{count}}년'\n  },\n  overXYears: {\n    one: '1년 이상',\n    other: '{{count}}년 이상'\n  },\n  almostXYears: {\n    one: '거의 1년',\n    other: '거의 {{count}}년'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return result + ' 후';\n    } else {\n      return result + ' 전';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'y년 M월 d일 EEEE',\n  long: 'y년 M월 d일',\n  medium: 'y.MM.dd',\n  short: 'y.MM.dd'\n};\nvar timeFormats = {\n  full: 'a H시 mm분 ss초 zzzz',\n  long: 'a H:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: '{{date}} {{time}}',\n  long: '{{date}} {{time}}',\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'지난' eeee p\",\n  yesterday: \"'어제' p\",\n  today: \"'오늘' p\",\n  tomorrow: \"'내일' p\",\n  nextWeek: \"'다음' eeee p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['BC', 'AD'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['기원전', '서기']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1분기', '2분기', '3분기', '4분기']\n};\nvar monthValues = {\n  narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n  abbreviated: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],\n  wide: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월']\n};\nvar dayValues = {\n  narrow: ['일', '월', '화', '수', '목', '금', '토'],\n  short: ['일', '월', '화', '수', '목', '금', '토'],\n  abbreviated: ['일', '월', '화', '수', '목', '금', '토'],\n  wide: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: '오전',\n    pm: '오후',\n    midnight: '자정',\n    noon: '정오',\n    morning: '아침',\n    afternoon: '오후',\n    evening: '저녁',\n    night: '밤'\n  },\n  abbreviated: {\n    am: '오전',\n    pm: '오후',\n    midnight: '자정',\n    noon: '정오',\n    morning: '아침',\n    afternoon: '오후',\n    evening: '저녁',\n    night: '밤'\n  },\n  wide: {\n    am: '오전',\n    pm: '오후',\n    midnight: '자정',\n    noon: '정오',\n    morning: '아침',\n    afternoon: '오후',\n    evening: '저녁',\n    night: '밤'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: '오전',\n    pm: '오후',\n    midnight: '자정',\n    noon: '정오',\n    morning: '아침',\n    afternoon: '오후',\n    evening: '저녁',\n    night: '밤'\n  },\n  abbreviated: {\n    am: '오전',\n    pm: '오후',\n    midnight: '자정',\n    noon: '정오',\n    morning: '아침',\n    afternoon: '오후',\n    evening: '저녁',\n    night: '밤'\n  },\n  wide: {\n    am: '오전',\n    pm: '오후',\n    midnight: '자정',\n    noon: '정오',\n    morning: '아침',\n    afternoon: '오후',\n    evening: '저녁',\n    night: '밤'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n  var unit = String(options === null || options === void 0 ? void 0 : options.unit);\n  switch (unit) {\n    case 'minute':\n    case 'second':\n      return String(number);\n    case 'date':\n      return number + '일';\n    default:\n      return number + '번째';\n  }\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(일|번째)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(기원전|서기)/i\n};\nvar parseEraPatterns = {\n  any: [/^(bc|기원전)/i, /^(ad|서기)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234]사?분기/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^(1[012]|[123456789])/,\n  abbreviated: /^(1[012]|[123456789])월/i,\n  wide: /^(1[012]|[123456789])월/i\n};\nvar parseMonthPatterns = {\n  any: [/^1월?$/, /^2/, /^3/, /^4/, /^5/, /^6/, /^7/, /^8/, /^9/, /^10/, /^11/, /^12/]\n};\nvar matchDayPatterns = {\n  narrow: /^[일월화수목금토]/,\n  short: /^[일월화수목금토]/,\n  abbreviated: /^[일월화수목금토]/,\n  wide: /^[일월화수목금토]요일/\n};\nvar parseDayPatterns = {\n  any: [/^일/, /^월/, /^화/, /^수/, /^목/, /^금/, /^토/]\n};\nvar matchDayPeriodPatterns = {\n  any: /^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^(am|오전)/i,\n    pm: /^(pm|오후)/i,\n    midnight: /^자정/i,\n    noon: /^정오/i,\n    morning: /^아침/i,\n    afternoon: /^오후/i,\n    evening: /^저녁/i,\n    night: /^밤/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Korean locale.\n * @language Korean\n * @iso-639-2 kor\n * @author Hong Chulju [@angdev]{@link https://github.com/angdev}\n * @author Lee Seoyoen [@iamssen]{@link https://github.com/iamssen}\n * @author Taiki IKeda [@so99ynoodles]{@link https://github.com/so99ynoodles}\n */\nvar locale = {\n  code: 'ko',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'mindre enn eitt sekund',\n    other: 'mindre enn {{count}} sekund'\n  },\n  xSeconds: {\n    one: 'eitt sekund',\n    other: '{{count}} sekund'\n  },\n  halfAMinute: 'eit halvt minutt',\n  lessThanXMinutes: {\n    one: 'mindre enn eitt minutt',\n    other: 'mindre enn {{count}} minutt'\n  },\n  xMinutes: {\n    one: 'eitt minutt',\n    other: '{{count}} minutt'\n  },\n  aboutXHours: {\n    one: 'omtrent ein time',\n    other: 'omtrent {{count}} timar'\n  },\n  xHours: {\n    one: 'ein time',\n    other: '{{count}} timar'\n  },\n  xDays: {\n    one: 'ein dag',\n    other: '{{count}} dagar'\n  },\n  aboutXWeeks: {\n    one: 'omtrent ei veke',\n    other: 'omtrent {{count}} veker'\n  },\n  xWeeks: {\n    one: 'ei veke',\n    other: '{{count}} veker'\n  },\n  aboutXMonths: {\n    one: 'omtrent ein månad',\n    other: 'omtrent {{count}} månader'\n  },\n  xMonths: {\n    one: 'ein månad',\n    other: '{{count}} månader'\n  },\n  aboutXYears: {\n    one: 'omtrent eitt år',\n    other: 'omtrent {{count}} år'\n  },\n  xYears: {\n    one: 'eitt år',\n    other: '{{count}} år'\n  },\n  overXYears: {\n    one: 'over eitt år',\n    other: 'over {{count}} år'\n  },\n  almostXYears: {\n    one: 'nesten eitt år',\n    other: 'nesten {{count}} år'\n  }\n};\nvar wordMapping = ['null', 'ein', 'to', 'tre', 'fire', 'fem', 'seks', 'sju', 'åtte', 'ni', 'ti', 'elleve', 'tolv'];\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    if (options && options.onlyNumeric) {\n      result = tokenValue.other.replace('{{count}}', String(count));\n    } else {\n      result = tokenValue.other.replace('{{count}}', count < 13 ? wordMapping[count] : String(count));\n    }\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'om ' + result;\n    } else {\n      return result + ' sidan';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE d. MMMM y',\n  long: 'd. MMMM y',\n  medium: 'd. MMM y',\n  short: 'dd.MM.y'\n};\nvar timeFormats = {\n  full: \"'kl'. HH:mm:ss zzzz\",\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'kl.' {{time}}\",\n  long: \"{{date}} 'kl.' {{time}}\",\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'førre' eeee 'kl.' p\",\n  yesterday: \"'i går kl.' p\",\n  today: \"'i dag kl.' p\",\n  tomorrow: \"'i morgon kl.' p\",\n  nextWeek: \"EEEE 'kl.' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['f.Kr.', 'e.Kr.'],\n  abbreviated: ['f.Kr.', 'e.Kr.'],\n  wide: ['før Kristus', 'etter Kristus']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['jan.', 'feb.', 'mars', 'apr.', 'mai', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'],\n  wide: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n  short: ['su', 'må', 'ty', 'on', 'to', 'fr', 'lau'],\n  abbreviated: ['sun', 'mån', 'tys', 'ons', 'tor', 'fre', 'laur'],\n  wide: ['sundag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'midnatt',\n    noon: 'middag',\n    morning: 'på morg.',\n    afternoon: 'på etterm.',\n    evening: 'på kvelden',\n    night: 'på natta'\n  },\n  abbreviated: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnatt',\n    noon: 'middag',\n    morning: 'på morg.',\n    afternoon: 'på etterm.',\n    evening: 'på kvelden',\n    night: 'på natta'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnatt',\n    noon: 'middag',\n    morning: 'på morgonen',\n    afternoon: 'på ettermiddagen',\n    evening: 'på kvelden',\n    night: 'på natta'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return number + '.';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n  abbreviated: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n  wide: /^(før Kristus|før vår tid|etter Kristus|vår tid)/i\n};\nvar parseEraPatterns = {\n  any: [/^f/i, /^e/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](\\.)? kvartal/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\\.?/i,\n  wide: /^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^aug/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtofl]/i,\n  short: /^(su|må|ty|on|to|fr|la)/i,\n  abbreviated: /^(sun|mån|tys|ons|tor|fre|laur)/i,\n  wide: /^(sundag|måndag|tysdag|onsdag|torsdag|fredag|laurdag)/i\n};\nvar parseDayPatterns = {\n  any: [/^s/i, /^m/i, /^ty/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta)|[ap])/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a(\\.?\\s?m\\.?)?$/i,\n    pm: /^p(\\.?\\s?m\\.?)?$/i,\n    midnight: /^midn/i,\n    noon: /^midd/i,\n    morning: /morgon/i,\n    afternoon: /ettermiddag/i,\n    evening: /kveld/i,\n    night: /natt/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Norwegian Nynorsk locale.\n * @language Norwegian Nynorsk\n * @iso-639-2 nno\n * @author Mats Byrkjeland [@draperunner]{@link https://github.com/draperunner}\n */\nvar locale = {\n  code: 'nn',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: {\n      regular: 'mniej niż sekunda',\n      past: 'mniej niż sekundę',\n      future: 'mniej niż sekundę'\n    },\n    twoFour: 'mniej niż {{count}} sekundy',\n    other: 'mniej niż {{count}} sekund'\n  },\n  xSeconds: {\n    one: {\n      regular: 'sekunda',\n      past: 'sekundę',\n      future: 'sekundę'\n    },\n    twoFour: '{{count}} sekundy',\n    other: '{{count}} sekund'\n  },\n  halfAMinute: {\n    one: 'pół minuty',\n    twoFour: 'pół minuty',\n    other: 'pół minuty'\n  },\n  lessThanXMinutes: {\n    one: {\n      regular: 'mniej niż minuta',\n      past: 'mniej niż minutę',\n      future: 'mniej niż minutę'\n    },\n    twoFour: 'mniej niż {{count}} minuty',\n    other: 'mniej niż {{count}} minut'\n  },\n  xMinutes: {\n    one: {\n      regular: 'minuta',\n      past: 'minutę',\n      future: 'minutę'\n    },\n    twoFour: '{{count}} minuty',\n    other: '{{count}} minut'\n  },\n  aboutXHours: {\n    one: {\n      regular: 'około godziny',\n      past: 'około godziny',\n      future: 'około godzinę'\n    },\n    twoFour: 'około {{count}} godziny',\n    other: 'około {{count}} godzin'\n  },\n  xHours: {\n    one: {\n      regular: 'godzina',\n      past: 'godzinę',\n      future: 'godzinę'\n    },\n    twoFour: '{{count}} godziny',\n    other: '{{count}} godzin'\n  },\n  xDays: {\n    one: {\n      regular: 'dzień',\n      past: 'dzień',\n      future: '1 dzień'\n    },\n    twoFour: '{{count}} dni',\n    other: '{{count}} dni'\n  },\n  aboutXWeeks: {\n    one: 'około tygodnia',\n    twoFour: 'około {{count}} tygodni',\n    other: 'około {{count}} tygodni'\n  },\n  xWeeks: {\n    one: 'tydzień',\n    twoFour: '{{count}} tygodnie',\n    other: '{{count}} tygodni'\n  },\n  aboutXMonths: {\n    one: 'około miesiąc',\n    twoFour: 'około {{count}} miesiące',\n    other: 'około {{count}} miesięcy'\n  },\n  xMonths: {\n    one: 'miesiąc',\n    twoFour: '{{count}} miesiące',\n    other: '{{count}} miesięcy'\n  },\n  aboutXYears: {\n    one: 'około rok',\n    twoFour: 'około {{count}} lata',\n    other: 'około {{count}} lat'\n  },\n  xYears: {\n    one: 'rok',\n    twoFour: '{{count}} lata',\n    other: '{{count}} lat'\n  },\n  overXYears: {\n    one: 'ponad rok',\n    twoFour: 'ponad {{count}} lata',\n    other: 'ponad {{count}} lat'\n  },\n  almostXYears: {\n    one: 'prawie rok',\n    twoFour: 'prawie {{count}} lata',\n    other: 'prawie {{count}} lat'\n  }\n};\nfunction declensionGroup(scheme, count) {\n  if (count === 1) {\n    return scheme.one;\n  }\n  var rem100 = count % 100;\n\n  // ends with 11-20\n  if (rem100 <= 20 && rem100 > 10) {\n    return scheme.other;\n  }\n  var rem10 = rem100 % 10;\n\n  // ends with 2, 3, 4\n  if (rem10 >= 2 && rem10 <= 4) {\n    return scheme.twoFour;\n  }\n  return scheme.other;\n}\nfunction declension(scheme, count, time) {\n  var group = declensionGroup(scheme, count);\n  var finalText = typeof group === 'string' ? group : group[time];\n  return finalText.replace('{{count}}', String(count));\n}\nvar formatDistance = function formatDistance(token, count, options) {\n  var scheme = formatDistanceLocale[token];\n  if (!(options !== null && options !== void 0 && options.addSuffix)) {\n    return declension(scheme, count, 'regular');\n  }\n  if (options.comparison && options.comparison > 0) {\n    return 'za ' + declension(scheme, count, 'future');\n  } else {\n    return declension(scheme, count, 'past') + ' temu';\n  }\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, do MMMM y',\n  long: 'do MMMM y',\n  medium: 'do MMM y',\n  short: 'dd.MM.y'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: '{{date}} {{time}}',\n  long: '{{date}} {{time}}',\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nvar adjectivesLastWeek = {\n  masculine: 'ostatni',\n  feminine: 'ostatnia'\n};\nvar adjectivesThisWeek = {\n  masculine: 'ten',\n  feminine: 'ta'\n};\nvar adjectivesNextWeek = {\n  masculine: 'następny',\n  feminine: 'następna'\n};\nvar dayGrammaticalGender = {\n  0: 'feminine',\n  1: 'masculine',\n  2: 'masculine',\n  3: 'feminine',\n  4: 'masculine',\n  5: 'masculine',\n  6: 'feminine'\n};\nfunction dayAndTimeWithAdjective(token, date, baseDate, options) {\n  var adjectives;\n  if (isSameUTCWeek(date, baseDate, options)) {\n    adjectives = adjectivesThisWeek;\n  } else if (token === 'lastWeek') {\n    adjectives = adjectivesLastWeek;\n  } else if (token === 'nextWeek') {\n    adjectives = adjectivesNextWeek;\n  } else {\n    throw new Error(\"Cannot determine adjectives for token \".concat(token));\n  }\n  var day = date.getUTCDay();\n  var grammaticalGender = dayGrammaticalGender[day];\n  var adjective = adjectives[grammaticalGender];\n  return \"'\".concat(adjective, \"' eeee 'o' p\");\n}\nvar formatRelativeLocale = {\n  lastWeek: dayAndTimeWithAdjective,\n  yesterday: \"'wczoraj o' p\",\n  today: \"'dzisiaj o' p\",\n  tomorrow: \"'jutro o' p\",\n  nextWeek: dayAndTimeWithAdjective,\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n  var format = formatRelativeLocale[token];\n  if (typeof format === 'function') {\n    return format(token, date, baseDate, options);\n  }\n  return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['p.n.e.', 'n.e.'],\n  abbreviated: ['p.n.e.', 'n.e.'],\n  wide: ['przed naszą erą', 'naszej ery']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['I kw.', 'II kw.', 'III kw.', 'IV kw.'],\n  wide: ['I kwartał', 'II kwartał', 'III kwartał', 'IV kwartał']\n};\nvar monthValues = {\n  narrow: ['S', 'L', 'M', 'K', 'M', 'C', 'L', 'S', 'W', 'P', 'L', 'G'],\n  abbreviated: ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'],\n  wide: ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień']\n};\nvar monthFormattingValues = {\n  narrow: ['s', 'l', 'm', 'k', 'm', 'c', 'l', 's', 'w', 'p', 'l', 'g'],\n  abbreviated: ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'],\n  wide: ['stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia']\n};\nvar dayValues = {\n  narrow: ['N', 'P', 'W', 'Ś', 'C', 'P', 'S'],\n  short: ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'],\n  abbreviated: ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'],\n  wide: ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota']\n};\nvar dayFormattingValues = {\n  narrow: ['n', 'p', 'w', 'ś', 'c', 'p', 's'],\n  short: ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'],\n  abbreviated: ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'],\n  wide: ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'półn.',\n    noon: 'poł',\n    morning: 'rano',\n    afternoon: 'popoł.',\n    evening: 'wiecz.',\n    night: 'noc'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'północ',\n    noon: 'południe',\n    morning: 'rano',\n    afternoon: 'popołudnie',\n    evening: 'wieczór',\n    night: 'noc'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'północ',\n    noon: 'południe',\n    morning: 'rano',\n    afternoon: 'popołudnie',\n    evening: 'wieczór',\n    night: 'noc'\n  }\n};\nvar dayPeriodFormattingValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'o półn.',\n    noon: 'w poł.',\n    morning: 'rano',\n    afternoon: 'po poł.',\n    evening: 'wiecz.',\n    night: 'w nocy'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'o północy',\n    noon: 'w południe',\n    morning: 'rano',\n    afternoon: 'po południu',\n    evening: 'wieczorem',\n    night: 'w nocy'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'o północy',\n    noon: 'w południe',\n    morning: 'rano',\n    afternoon: 'po południu',\n    evening: 'wieczorem',\n    night: 'w nocy'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  return String(dirtyNumber);\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide',\n    formattingValues: monthFormattingValues,\n    defaultFormattingWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide',\n    formattingValues: dayFormattingValues,\n    defaultFormattingWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: dayPeriodFormattingValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(p\\.?\\s*n\\.?\\s*e\\.?\\s*|n\\.?\\s*e\\.?\\s*)/i,\n  abbreviated: /^(p\\.?\\s*n\\.?\\s*e\\.?\\s*|n\\.?\\s*e\\.?\\s*)/i,\n  wide: /^(przed\\s*nasz(ą|a)\\s*er(ą|a)|naszej\\s*ery)/i\n};\nvar parseEraPatterns = {\n  any: [/^p/i, /^n/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^(I|II|III|IV)\\s*kw\\.?/i,\n  wide: /^(I|II|III|IV)\\s*kwarta(ł|l)/i\n};\nvar parseQuarterPatterns = {\n  narrow: [/1/i, /2/i, /3/i, /4/i],\n  any: [/^I kw/i, /^II kw/i, /^III kw/i, /^IV kw/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[slmkcwpg]/i,\n  abbreviated: /^(sty|lut|mar|kwi|maj|cze|lip|sie|wrz|pa(ź|z)|lis|gru)/i,\n  wide: /^(stycznia|stycze(ń|n)|lutego|luty|marca|marzec|kwietnia|kwiecie(ń|n)|maja|maj|czerwca|czerwiec|lipca|lipiec|sierpnia|sierpie(ń|n)|wrze(ś|s)nia|wrzesie(ń|n)|pa(ź|z)dziernika|pa(ź|z)dziernik|listopada|listopad|grudnia|grudzie(ń|n))/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^s/i, /^l/i, /^m/i, /^k/i, /^m/i, /^c/i, /^l/i, /^s/i, /^w/i, /^p/i, /^l/i, /^g/i],\n  any: [/^st/i, /^lu/i, /^mar/i, /^k/i, /^maj/i, /^c/i, /^lip/i, /^si/i, /^w/i, /^p/i, /^lis/i, /^g/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[npwścs]/i,\n  short: /^(nie|pon|wto|(ś|s)ro|czw|pi(ą|a)|sob)/i,\n  abbreviated: /^(niedz|pon|wt|(ś|s)r|czw|pt|sob)\\.?/i,\n  wide: /^(niedziela|poniedzia(ł|l)ek|wtorek|(ś|s)roda|czwartek|pi(ą|a)tek|sobota)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^n/i, /^p/i, /^w/i, /^ś/i, /^c/i, /^p/i, /^s/i],\n  abbreviated: [/^n/i, /^po/i, /^w/i, /^(ś|s)r/i, /^c/i, /^pt/i, /^so/i],\n  any: [/^n/i, /^po/i, /^w/i, /^(ś|s)r/i, /^c/i, /^pi/i, /^so/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(^a$|^p$|pó(ł|l)n\\.?|o\\s*pó(ł|l)n\\.?|po(ł|l)\\.?|w\\s*po(ł|l)\\.?|po\\s*po(ł|l)\\.?|rano|wiecz\\.?|noc|w\\s*nocy)/i,\n  any: /^(am|pm|pó(ł|l)noc|o\\s*pó(ł|l)nocy|po(ł|l)udnie|w\\s*po(ł|l)udnie|popo(ł|l)udnie|po\\s*po(ł|l)udniu|rano|wieczór|wieczorem|noc|w\\s*nocy)/i\n};\nvar parseDayPeriodPatterns = {\n  narrow: {\n    am: /^a$/i,\n    pm: /^p$/i,\n    midnight: /pó(ł|l)n/i,\n    noon: /po(ł|l)/i,\n    morning: /rano/i,\n    afternoon: /po\\s*po(ł|l)/i,\n    evening: /wiecz/i,\n    night: /noc/i\n  },\n  any: {\n    am: /^am/i,\n    pm: /^pm/i,\n    midnight: /pó(ł|l)n/i,\n    noon: /po(ł|l)/i,\n    morning: /rano/i,\n    afternoon: /po\\s*po(ł|l)/i,\n    evening: /wiecz/i,\n    night: /noc/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Polish locale.\n * @language Polish\n * @iso-639-2 pol\n * @author Mateusz Derks [@ertrzyiks]{@link https://github.com/ertrzyiks}\n * @author Just RAG [@justrag]{@link https://github.com/justrag}\n * @author Mikolaj Grzyb [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}\n * @author Mateusz Tokarski [@mutisz]{@link https://github.com/mutisz}\n */\nvar locale = {\n  code: 'pl',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'menos de um segundo',\n    other: 'menos de {{count}} segundos'\n  },\n  xSeconds: {\n    one: '1 segundo',\n    other: '{{count}} segundos'\n  },\n  halfAMinute: 'meio minuto',\n  lessThanXMinutes: {\n    one: 'menos de um minuto',\n    other: 'menos de {{count}} minutos'\n  },\n  xMinutes: {\n    one: '1 minuto',\n    other: '{{count}} minutos'\n  },\n  aboutXHours: {\n    one: 'cerca de 1 hora',\n    other: 'cerca de {{count}} horas'\n  },\n  xHours: {\n    one: '1 hora',\n    other: '{{count}} horas'\n  },\n  xDays: {\n    one: '1 dia',\n    other: '{{count}} dias'\n  },\n  aboutXWeeks: {\n    one: 'cerca de 1 semana',\n    other: 'cerca de {{count}} semanas'\n  },\n  xWeeks: {\n    one: '1 semana',\n    other: '{{count}} semanas'\n  },\n  aboutXMonths: {\n    one: 'cerca de 1 mês',\n    other: 'cerca de {{count}} meses'\n  },\n  xMonths: {\n    one: '1 mês',\n    other: '{{count}} meses'\n  },\n  aboutXYears: {\n    one: 'cerca de 1 ano',\n    other: 'cerca de {{count}} anos'\n  },\n  xYears: {\n    one: '1 ano',\n    other: '{{count}} anos'\n  },\n  overXYears: {\n    one: 'mais de 1 ano',\n    other: 'mais de {{count}} anos'\n  },\n  almostXYears: {\n    one: 'quase 1 ano',\n    other: 'quase {{count}} anos'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'em ' + result;\n    } else {\n      return 'há ' + result;\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: \"EEEE, d 'de' MMMM 'de' y\",\n  long: \"d 'de' MMMM 'de' y\",\n  medium: 'd MMM y',\n  short: 'dd/MM/yyyy'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'às' {{time}}\",\n  long: \"{{date}} 'às' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: function lastWeek(date) {\n    var weekday = date.getUTCDay();\n    var last = weekday === 0 || weekday === 6 ? 'último' : 'última';\n    return \"'\" + last + \"' eeee 'às' p\";\n  },\n  yesterday: \"'ontem às' p\",\n  today: \"'hoje às' p\",\n  tomorrow: \"'amanhã às' p\",\n  nextWeek: \"eeee 'às' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, _baseDate, _options) {\n  var format = formatRelativeLocale[token];\n  if (typeof format === 'function') {\n    return format(date);\n  }\n  return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['AC', 'DC'],\n  abbreviated: ['AC', 'DC'],\n  wide: ['antes de cristo', 'depois de cristo']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['T1', 'T2', 'T3', 'T4'],\n  wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']\n};\nvar monthValues = {\n  narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],\n  abbreviated: ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'],\n  wide: ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro']\n};\nvar dayValues = {\n  narrow: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],\n  short: ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sab'],\n  abbreviated: ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'],\n  wide: ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mn',\n    noon: 'md',\n    morning: 'manhã',\n    afternoon: 'tarde',\n    evening: 'tarde',\n    night: 'noite'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'manhã',\n    afternoon: 'tarde',\n    evening: 'tarde',\n    night: 'noite'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'manhã',\n    afternoon: 'tarde',\n    evening: 'tarde',\n    night: 'noite'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mn',\n    noon: 'md',\n    morning: 'da manhã',\n    afternoon: 'da tarde',\n    evening: 'da tarde',\n    night: 'da noite'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'da manhã',\n    afternoon: 'da tarde',\n    evening: 'da tarde',\n    night: 'da noite'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'da manhã',\n    afternoon: 'da tarde',\n    evening: 'da tarde',\n    night: 'da noite'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n  if ((options === null || options === void 0 ? void 0 : options.unit) === 'week') {\n    return number + 'ª';\n  }\n  return number + 'º';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)[ºªo]?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(ac|dc|a|d)/i,\n  abbreviated: /^(a\\.?\\s?c\\.?|d\\.?\\s?c\\.?)/i,\n  wide: /^(antes de cristo|depois de cristo)/i\n};\nvar parseEraPatterns = {\n  any: [/^ac/i, /^dc/i],\n  wide: [/^antes de cristo/i, /^depois de cristo/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^T[1234]/i,\n  wide: /^[1234](º)? trimestre/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmajsond]/i,\n  abbreviated: /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,\n  wide: /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^fev/i, /^mar/i, /^abr/i, /^mai/i, /^jun/i, /^jul/i, /^ago/i, /^set/i, /^out/i, /^nov/i, /^dez/i]\n};\nvar matchDayPatterns = {\n  narrow: /^(dom|[23456]ª?|s[aá]b)/i,\n  short: /^(dom|[23456]ª?|s[aá]b)/i,\n  abbreviated: /^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,\n  wide: /^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i\n};\nvar parseDayPatterns = {\n  short: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n  narrow: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n  any: [/^d/i, /^seg/i, /^t/i, /^qua/i, /^qui/i, /^sex/i, /^s[aá]b/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mn|md|(da) (manhã|tarde|noite))/i,\n  any: /^([ap]\\.?\\s?m\\.?|meia[-\\s]noite|meio[-\\s]dia|(da) (manhã|tarde|noite))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mn|^meia[-\\s]noite/i,\n    noon: /^md|^meio[-\\s]dia/i,\n    morning: /manhã/i,\n    afternoon: /tarde/i,\n    evening: /tarde/i,\n    night: /noite/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Portuguese locale (Brazil).\n * @language Portuguese\n * @iso-639-2 por\n * @author Lucas Duailibe [@duailibe]{@link https://github.com/duailibe}\n * @author Yago Carballo [@yagocarballo]{@link https://github.com/YagoCarballo}\n */\nvar locale = {\n  code: 'pt-BR',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'menos de um segundo',\n    other: 'menos de {{count}} segundos'\n  },\n  xSeconds: {\n    one: '1 segundo',\n    other: '{{count}} segundos'\n  },\n  halfAMinute: 'meio minuto',\n  lessThanXMinutes: {\n    one: 'menos de um minuto',\n    other: 'menos de {{count}} minutos'\n  },\n  xMinutes: {\n    one: '1 minuto',\n    other: '{{count}} minutos'\n  },\n  aboutXHours: {\n    one: 'aproximadamente 1 hora',\n    other: 'aproximadamente {{count}} horas'\n  },\n  xHours: {\n    one: '1 hora',\n    other: '{{count}} horas'\n  },\n  xDays: {\n    one: '1 dia',\n    other: '{{count}} dias'\n  },\n  aboutXWeeks: {\n    one: 'aproximadamente 1 semana',\n    other: 'aproximadamente {{count}} semanas'\n  },\n  xWeeks: {\n    one: '1 semana',\n    other: '{{count}} semanas'\n  },\n  aboutXMonths: {\n    one: 'aproximadamente 1 mês',\n    other: 'aproximadamente {{count}} meses'\n  },\n  xMonths: {\n    one: '1 mês',\n    other: '{{count}} meses'\n  },\n  aboutXYears: {\n    one: 'aproximadamente 1 ano',\n    other: 'aproximadamente {{count}} anos'\n  },\n  xYears: {\n    one: '1 ano',\n    other: '{{count}} anos'\n  },\n  overXYears: {\n    one: 'mais de 1 ano',\n    other: 'mais de {{count}} anos'\n  },\n  almostXYears: {\n    one: 'quase 1 ano',\n    other: 'quase {{count}} anos'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'daqui a ' + result;\n    } else {\n      return 'há ' + result;\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: \"EEEE, d 'de' MMMM 'de' y\",\n  long: \"d 'de' MMMM 'de' y\",\n  medium: \"d 'de' MMM 'de' y\",\n  short: 'dd/MM/y'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'às' {{time}}\",\n  long: \"{{date}} 'às' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: function lastWeek(date) {\n    var weekday = date.getUTCDay();\n    var last = weekday === 0 || weekday === 6 ? 'último' : 'última';\n    return \"'\" + last + \"' eeee 'às' p\";\n  },\n  yesterday: \"'ontem às' p\",\n  today: \"'hoje às' p\",\n  tomorrow: \"'amanhã às' p\",\n  nextWeek: \"eeee 'às' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, _baseDate, _options) {\n  var format = formatRelativeLocale[token];\n  if (typeof format === 'function') {\n    return format(date);\n  }\n  return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['aC', 'dC'],\n  abbreviated: ['a.C.', 'd.C.'],\n  wide: ['antes de Cristo', 'depois de Cristo']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['T1', 'T2', 'T3', 'T4'],\n  wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']\n};\nvar monthValues = {\n  narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],\n  abbreviated: ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'],\n  wide: ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro']\n};\nvar dayValues = {\n  narrow: ['d', 's', 't', 'q', 'q', 's', 's'],\n  short: ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],\n  abbreviated: ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],\n  wide: ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'manhã',\n    afternoon: 'tarde',\n    evening: 'noite',\n    night: 'madrugada'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'manhã',\n    afternoon: 'tarde',\n    evening: 'noite',\n    night: 'madrugada'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'manhã',\n    afternoon: 'tarde',\n    evening: 'noite',\n    night: 'madrugada'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'da manhã',\n    afternoon: 'da tarde',\n    evening: 'da noite',\n    night: 'da madrugada'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'da manhã',\n    afternoon: 'da tarde',\n    evening: 'da noite',\n    night: 'da madrugada'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'meia-noite',\n    noon: 'meio-dia',\n    morning: 'da manhã',\n    afternoon: 'da tarde',\n    evening: 'da noite',\n    night: 'da madrugada'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return number + 'º';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(º|ª)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(ac|dc|a|d)/i,\n  abbreviated: /^(a\\.?\\s?c\\.?|a\\.?\\s?e\\.?\\s?c\\.?|d\\.?\\s?c\\.?|e\\.?\\s?c\\.?)/i,\n  wide: /^(antes de cristo|antes da era comum|depois de cristo|era comum)/i\n};\nvar parseEraPatterns = {\n  any: [/^ac/i, /^dc/i],\n  wide: [/^(antes de cristo|antes da era comum)/i, /^(depois de cristo|era comum)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^T[1234]/i,\n  wide: /^[1234](º|ª)? trimestre/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,\n  wide: /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ab/i, /^mai/i, /^jun/i, /^jul/i, /^ag/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[dstq]/i,\n  short: /^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,\n  abbreviated: /^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,\n  wide: /^(domingo|segunda-?\\s?feira|terça-?\\s?feira|quarta-?\\s?feira|quinta-?\\s?feira|sexta-?\\s?feira|s[áa]bado)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^d/i, /^s/i, /^t/i, /^q/i, /^q/i, /^s/i, /^s/i],\n  any: [/^d/i, /^seg/i, /^t/i, /^qua/i, /^qui/i, /^sex/i, /^s[áa]/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|meia-?\\s?noite|meio-?\\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i,\n  any: /^([ap]\\.?\\s?m\\.?|meia-?\\s?noite|meio-?\\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^meia/i,\n    noon: /^meio/i,\n    morning: /manh[ãa]/i,\n    afternoon: /tarde/i,\n    evening: /noite/i,\n    night: /madrugada/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Portuguese locale.\n * @language Portuguese\n * @iso-639-2 por\n * @author Dário Freire [@dfreire]{@link https://github.com/dfreire}\n * @author Adrián de la Rosa [@adrm]{@link https://github.com/adrm}\n */\nvar locale = {\n  code: 'pt',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","function declension(scheme, count) {\n  // scheme for count=1 exists\n  if (scheme.one !== undefined && count === 1) {\n    return scheme.one;\n  }\n  var rem10 = count % 10;\n  var rem100 = count % 100;\n\n  // 1, 21, 31, ...\n  if (rem10 === 1 && rem100 !== 11) {\n    return scheme.singularNominative.replace('{{count}}', String(count));\n\n    // 2, 3, 4, 22, 23, 24, 32 ...\n  } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) {\n    return scheme.singularGenitive.replace('{{count}}', String(count));\n\n    // 5, 6, 7, 8, 9, 10, 11, ...\n  } else {\n    return scheme.pluralGenitive.replace('{{count}}', String(count));\n  }\n}\nfunction buildLocalizeTokenFn(scheme) {\n  return function (count, options) {\n    if (options !== null && options !== void 0 && options.addSuffix) {\n      if (options.comparison && options.comparison > 0) {\n        if (scheme.future) {\n          return declension(scheme.future, count);\n        } else {\n          return 'через ' + declension(scheme.regular, count);\n        }\n      } else {\n        if (scheme.past) {\n          return declension(scheme.past, count);\n        } else {\n          return declension(scheme.regular, count) + ' назад';\n        }\n      }\n    } else {\n      return declension(scheme.regular, count);\n    }\n  };\n}\nvar formatDistanceLocale = {\n  lessThanXSeconds: buildLocalizeTokenFn({\n    regular: {\n      one: 'меньше секунды',\n      singularNominative: 'меньше {{count}} секунды',\n      singularGenitive: 'меньше {{count}} секунд',\n      pluralGenitive: 'меньше {{count}} секунд'\n    },\n    future: {\n      one: 'меньше, чем через секунду',\n      singularNominative: 'меньше, чем через {{count}} секунду',\n      singularGenitive: 'меньше, чем через {{count}} секунды',\n      pluralGenitive: 'меньше, чем через {{count}} секунд'\n    }\n  }),\n  xSeconds: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: '{{count}} секунда',\n      singularGenitive: '{{count}} секунды',\n      pluralGenitive: '{{count}} секунд'\n    },\n    past: {\n      singularNominative: '{{count}} секунду назад',\n      singularGenitive: '{{count}} секунды назад',\n      pluralGenitive: '{{count}} секунд назад'\n    },\n    future: {\n      singularNominative: 'через {{count}} секунду',\n      singularGenitive: 'через {{count}} секунды',\n      pluralGenitive: 'через {{count}} секунд'\n    }\n  }),\n  halfAMinute: function halfAMinute(_count, options) {\n    if (options !== null && options !== void 0 && options.addSuffix) {\n      if (options.comparison && options.comparison > 0) {\n        return 'через полминуты';\n      } else {\n        return 'полминуты назад';\n      }\n    }\n    return 'полминуты';\n  },\n  lessThanXMinutes: buildLocalizeTokenFn({\n    regular: {\n      one: 'меньше минуты',\n      singularNominative: 'меньше {{count}} минуты',\n      singularGenitive: 'меньше {{count}} минут',\n      pluralGenitive: 'меньше {{count}} минут'\n    },\n    future: {\n      one: 'меньше, чем через минуту',\n      singularNominative: 'меньше, чем через {{count}} минуту',\n      singularGenitive: 'меньше, чем через {{count}} минуты',\n      pluralGenitive: 'меньше, чем через {{count}} минут'\n    }\n  }),\n  xMinutes: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: '{{count}} минута',\n      singularGenitive: '{{count}} минуты',\n      pluralGenitive: '{{count}} минут'\n    },\n    past: {\n      singularNominative: '{{count}} минуту назад',\n      singularGenitive: '{{count}} минуты назад',\n      pluralGenitive: '{{count}} минут назад'\n    },\n    future: {\n      singularNominative: 'через {{count}} минуту',\n      singularGenitive: 'через {{count}} минуты',\n      pluralGenitive: 'через {{count}} минут'\n    }\n  }),\n  aboutXHours: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: 'около {{count}} часа',\n      singularGenitive: 'около {{count}} часов',\n      pluralGenitive: 'около {{count}} часов'\n    },\n    future: {\n      singularNominative: 'приблизительно через {{count}} час',\n      singularGenitive: 'приблизительно через {{count}} часа',\n      pluralGenitive: 'приблизительно через {{count}} часов'\n    }\n  }),\n  xHours: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: '{{count}} час',\n      singularGenitive: '{{count}} часа',\n      pluralGenitive: '{{count}} часов'\n    }\n  }),\n  xDays: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: '{{count}} день',\n      singularGenitive: '{{count}} дня',\n      pluralGenitive: '{{count}} дней'\n    }\n  }),\n  aboutXWeeks: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: 'около {{count}} недели',\n      singularGenitive: 'около {{count}} недель',\n      pluralGenitive: 'около {{count}} недель'\n    },\n    future: {\n      singularNominative: 'приблизительно через {{count}} неделю',\n      singularGenitive: 'приблизительно через {{count}} недели',\n      pluralGenitive: 'приблизительно через {{count}} недель'\n    }\n  }),\n  xWeeks: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: '{{count}} неделя',\n      singularGenitive: '{{count}} недели',\n      pluralGenitive: '{{count}} недель'\n    }\n  }),\n  aboutXMonths: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: 'около {{count}} месяца',\n      singularGenitive: 'около {{count}} месяцев',\n      pluralGenitive: 'около {{count}} месяцев'\n    },\n    future: {\n      singularNominative: 'приблизительно через {{count}} месяц',\n      singularGenitive: 'приблизительно через {{count}} месяца',\n      pluralGenitive: 'приблизительно через {{count}} месяцев'\n    }\n  }),\n  xMonths: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: '{{count}} месяц',\n      singularGenitive: '{{count}} месяца',\n      pluralGenitive: '{{count}} месяцев'\n    }\n  }),\n  aboutXYears: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: 'около {{count}} года',\n      singularGenitive: 'около {{count}} лет',\n      pluralGenitive: 'около {{count}} лет'\n    },\n    future: {\n      singularNominative: 'приблизительно через {{count}} год',\n      singularGenitive: 'приблизительно через {{count}} года',\n      pluralGenitive: 'приблизительно через {{count}} лет'\n    }\n  }),\n  xYears: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: '{{count}} год',\n      singularGenitive: '{{count}} года',\n      pluralGenitive: '{{count}} лет'\n    }\n  }),\n  overXYears: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: 'больше {{count}} года',\n      singularGenitive: 'больше {{count}} лет',\n      pluralGenitive: 'больше {{count}} лет'\n    },\n    future: {\n      singularNominative: 'больше, чем через {{count}} год',\n      singularGenitive: 'больше, чем через {{count}} года',\n      pluralGenitive: 'больше, чем через {{count}} лет'\n    }\n  }),\n  almostXYears: buildLocalizeTokenFn({\n    regular: {\n      singularNominative: 'почти {{count}} год',\n      singularGenitive: 'почти {{count}} года',\n      pluralGenitive: 'почти {{count}} лет'\n    },\n    future: {\n      singularNominative: 'почти через {{count}} год',\n      singularGenitive: 'почти через {{count}} года',\n      pluralGenitive: 'почти через {{count}} лет'\n    }\n  })\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  return formatDistanceLocale[token](count, options);\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: \"EEEE, d MMMM y 'г.'\",\n  long: \"d MMMM y 'г.'\",\n  medium: \"d MMM y 'г.'\",\n  short: 'dd.MM.y'\n};\nvar timeFormats = {\n  full: 'H:mm:ss zzzz',\n  long: 'H:mm:ss z',\n  medium: 'H:mm:ss',\n  short: 'H:mm'\n};\nvar dateTimeFormats = {\n  any: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'any'\n  })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nvar accusativeWeekdays = ['воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу'];\nfunction _lastWeek(day) {\n  var weekday = accusativeWeekdays[day];\n  switch (day) {\n    case 0:\n      return \"'в прошлое \" + weekday + \" в' p\";\n    case 1:\n    case 2:\n    case 4:\n      return \"'в прошлый \" + weekday + \" в' p\";\n    case 3:\n    case 5:\n    case 6:\n      return \"'в прошлую \" + weekday + \" в' p\";\n  }\n}\nfunction thisWeek(day) {\n  var weekday = accusativeWeekdays[day];\n  if (day === 2 /* Tue */) {\n    return \"'во \" + weekday + \" в' p\";\n  } else {\n    return \"'в \" + weekday + \" в' p\";\n  }\n}\nfunction _nextWeek(day) {\n  var weekday = accusativeWeekdays[day];\n  switch (day) {\n    case 0:\n      return \"'в следующее \" + weekday + \" в' p\";\n    case 1:\n    case 2:\n    case 4:\n      return \"'в следующий \" + weekday + \" в' p\";\n    case 3:\n    case 5:\n    case 6:\n      return \"'в следующую \" + weekday + \" в' p\";\n  }\n}\nvar formatRelativeLocale = {\n  lastWeek: function lastWeek(date, baseDate, options) {\n    var day = date.getUTCDay();\n    if (isSameUTCWeek(date, baseDate, options)) {\n      return thisWeek(day);\n    } else {\n      return _lastWeek(day);\n    }\n  },\n  yesterday: \"'вчера в' p\",\n  today: \"'сегодня в' p\",\n  tomorrow: \"'завтра в' p\",\n  nextWeek: function nextWeek(date, baseDate, options) {\n    var day = date.getUTCDay();\n    if (isSameUTCWeek(date, baseDate, options)) {\n      return thisWeek(day);\n    } else {\n      return _nextWeek(day);\n    }\n  },\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n  var format = formatRelativeLocale[token];\n  if (typeof format === 'function') {\n    return format(date, baseDate, options);\n  }\n  return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['до н.э.', 'н.э.'],\n  abbreviated: ['до н. э.', 'н. э.'],\n  wide: ['до нашей эры', 'нашей эры']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['1-й кв.', '2-й кв.', '3-й кв.', '4-й кв.'],\n  wide: ['1-й квартал', '2-й квартал', '3-й квартал', '4-й квартал']\n};\nvar monthValues = {\n  narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],\n  abbreviated: ['янв.', 'фев.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'],\n  wide: ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь']\n};\nvar formattingMonthValues = {\n  narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],\n  abbreviated: ['янв.', 'фев.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'],\n  wide: ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря']\n};\nvar dayValues = {\n  narrow: ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'],\n  short: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],\n  abbreviated: ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'суб'],\n  wide: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'ДП',\n    pm: 'ПП',\n    midnight: 'полн.',\n    noon: 'полд.',\n    morning: 'утро',\n    afternoon: 'день',\n    evening: 'веч.',\n    night: 'ночь'\n  },\n  abbreviated: {\n    am: 'ДП',\n    pm: 'ПП',\n    midnight: 'полн.',\n    noon: 'полд.',\n    morning: 'утро',\n    afternoon: 'день',\n    evening: 'веч.',\n    night: 'ночь'\n  },\n  wide: {\n    am: 'ДП',\n    pm: 'ПП',\n    midnight: 'полночь',\n    noon: 'полдень',\n    morning: 'утро',\n    afternoon: 'день',\n    evening: 'вечер',\n    night: 'ночь'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'ДП',\n    pm: 'ПП',\n    midnight: 'полн.',\n    noon: 'полд.',\n    morning: 'утра',\n    afternoon: 'дня',\n    evening: 'веч.',\n    night: 'ночи'\n  },\n  abbreviated: {\n    am: 'ДП',\n    pm: 'ПП',\n    midnight: 'полн.',\n    noon: 'полд.',\n    morning: 'утра',\n    afternoon: 'дня',\n    evening: 'веч.',\n    night: 'ночи'\n  },\n  wide: {\n    am: 'ДП',\n    pm: 'ПП',\n    midnight: 'полночь',\n    noon: 'полдень',\n    morning: 'утра',\n    afternoon: 'дня',\n    evening: 'вечера',\n    night: 'ночи'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n  var unit = options === null || options === void 0 ? void 0 : options.unit;\n  var suffix;\n  if (unit === 'date') {\n    suffix = '-е';\n  } else if (unit === 'week' || unit === 'minute' || unit === 'second') {\n    suffix = '-я';\n  } else {\n    suffix = '-й';\n  }\n  return number + suffix;\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingMonthValues,\n    defaultFormattingWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'any',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^((до )?н\\.?\\s?э\\.?)/i,\n  abbreviated: /^((до )?н\\.?\\s?э\\.?)/i,\n  wide: /^(до нашей эры|нашей эры|наша эра)/i\n};\nvar parseEraPatterns = {\n  any: [/^д/i, /^н/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^[1234](-?[ыои]?й?)? кв.?/i,\n  wide: /^[1234](-?[ыои]?й?)? квартал/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[яфмаисонд]/i,\n  abbreviated: /^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\\.?/i,\n  wide: /^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^я/i, /^ф/i, /^м/i, /^а/i, /^м/i, /^и/i, /^и/i, /^а/i, /^с/i, /^о/i, /^н/i, /^я/i],\n  any: [/^я/i, /^ф/i, /^мар/i, /^ап/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^ав/i, /^с/i, /^о/i, /^н/i, /^д/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[впсч]/i,\n  short: /^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\\.?/i,\n  abbreviated: /^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,\n  wide: /^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i\n};\nvar parseDayPatterns = {\n  narrow: [/^в/i, /^п/i, /^в/i, /^с/i, /^ч/i, /^п/i, /^с/i],\n  any: [/^в[ос]/i, /^п[он]/i, /^в/i, /^ср/i, /^ч/i, /^п[ят]/i, /^с[уб]/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^([дп]п|полн\\.?|полд\\.?|утр[оа]|день|дня|веч\\.?|ноч[ьи])/i,\n  abbreviated: /^([дп]п|полн\\.?|полд\\.?|утр[оа]|день|дня|веч\\.?|ноч[ьи])/i,\n  wide: /^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^дп/i,\n    pm: /^пп/i,\n    midnight: /^полн/i,\n    noon: /^полд/i,\n    morning: /^у/i,\n    afternoon: /^д[ен]/i,\n    evening: /^в/i,\n    night: /^н/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Russian locale.\n * @language Russian\n * @iso-639-2 rus\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'ru',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'mindre än en sekund',\n    other: 'mindre än {{count}} sekunder'\n  },\n  xSeconds: {\n    one: 'en sekund',\n    other: '{{count}} sekunder'\n  },\n  halfAMinute: 'en halv minut',\n  lessThanXMinutes: {\n    one: 'mindre än en minut',\n    other: 'mindre än {{count}} minuter'\n  },\n  xMinutes: {\n    one: 'en minut',\n    other: '{{count}} minuter'\n  },\n  aboutXHours: {\n    one: 'ungefär en timme',\n    other: 'ungefär {{count}} timmar'\n  },\n  xHours: {\n    one: 'en timme',\n    other: '{{count}} timmar'\n  },\n  xDays: {\n    one: 'en dag',\n    other: '{{count}} dagar'\n  },\n  aboutXWeeks: {\n    one: 'ungefär en vecka',\n    other: 'ungefär {{count}} vecka'\n  },\n  xWeeks: {\n    one: 'en vecka',\n    other: '{{count}} vecka'\n  },\n  aboutXMonths: {\n    one: 'ungefär en månad',\n    other: 'ungefär {{count}} månader'\n  },\n  xMonths: {\n    one: 'en månad',\n    other: '{{count}} månader'\n  },\n  aboutXYears: {\n    one: 'ungefär ett år',\n    other: 'ungefär {{count}} år'\n  },\n  xYears: {\n    one: 'ett år',\n    other: '{{count}} år'\n  },\n  overXYears: {\n    one: 'över ett år',\n    other: 'över {{count}} år'\n  },\n  almostXYears: {\n    one: 'nästan ett år',\n    other: 'nästan {{count}} år'\n  }\n};\nvar wordMapping = ['noll', 'en', 'två', 'tre', 'fyra', 'fem', 'sex', 'sju', 'åtta', 'nio', 'tio', 'elva', 'tolv'];\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    if (options && options.onlyNumeric) {\n      result = tokenValue.other.replace('{{count}}', String(count));\n    } else {\n      result = tokenValue.other.replace('{{count}}', count < 13 ? wordMapping[count] : String(count));\n    }\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'om ' + result;\n    } else {\n      return result + ' sedan';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE d MMMM y',\n  long: 'd MMMM y',\n  medium: 'd MMM y',\n  short: 'y-MM-dd'\n};\nvar timeFormats = {\n  full: \"'kl'. HH:mm:ss zzzz\",\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'kl.' {{time}}\",\n  long: \"{{date}} 'kl.' {{time}}\",\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'i' EEEE's kl.' p\",\n  yesterday: \"'igår kl.' p\",\n  today: \"'idag kl.' p\",\n  tomorrow: \"'imorgon kl.' p\",\n  nextWeek: \"EEEE 'kl.' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['f.Kr.', 'e.Kr.'],\n  abbreviated: ['f.Kr.', 'e.Kr.'],\n  wide: ['före Kristus', 'efter Kristus']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1:a kvartalet', '2:a kvartalet', '3:e kvartalet', '4:e kvartalet']\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n  wide: ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n  short: ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'],\n  abbreviated: ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'],\n  wide: ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag']\n};\n\n// https://www.unicode.org/cldr/charts/32/summary/sv.html#1888\nvar dayPeriodValues = {\n  narrow: {\n    am: 'fm',\n    pm: 'em',\n    midnight: 'midnatt',\n    noon: 'middag',\n    morning: 'morg.',\n    afternoon: 'efterm.',\n    evening: 'kväll',\n    night: 'natt'\n  },\n  abbreviated: {\n    am: 'f.m.',\n    pm: 'e.m.',\n    midnight: 'midnatt',\n    noon: 'middag',\n    morning: 'morgon',\n    afternoon: 'efterm.',\n    evening: 'kväll',\n    night: 'natt'\n  },\n  wide: {\n    am: 'förmiddag',\n    pm: 'eftermiddag',\n    midnight: 'midnatt',\n    noon: 'middag',\n    morning: 'morgon',\n    afternoon: 'eftermiddag',\n    evening: 'kväll',\n    night: 'natt'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'fm',\n    pm: 'em',\n    midnight: 'midnatt',\n    noon: 'middag',\n    morning: 'på morg.',\n    afternoon: 'på efterm.',\n    evening: 'på kvällen',\n    night: 'på natten'\n  },\n  abbreviated: {\n    am: 'fm',\n    pm: 'em',\n    midnight: 'midnatt',\n    noon: 'middag',\n    morning: 'på morg.',\n    afternoon: 'på efterm.',\n    evening: 'på kvällen',\n    night: 'på natten'\n  },\n  wide: {\n    am: 'fm',\n    pm: 'em',\n    midnight: 'midnatt',\n    noon: 'middag',\n    morning: 'på morgonen',\n    afternoon: 'på eftermiddagen',\n    evening: 'på kvällen',\n    night: 'på natten'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  var rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n      case 2:\n        return number + ':a';\n    }\n  }\n  return number + ':e';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(:a|:e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(f\\.? ?Kr\\.?|f\\.? ?v\\.? ?t\\.?|e\\.? ?Kr\\.?|v\\.? ?t\\.?)/i,\n  abbreviated: /^(f\\.? ?Kr\\.?|f\\.? ?v\\.? ?t\\.?|e\\.? ?Kr\\.?|v\\.? ?t\\.?)/i,\n  wide: /^(före Kristus|före vår tid|efter Kristus|vår tid)/i\n};\nvar parseEraPatterns = {\n  any: [/^f/i, /^[ev]/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](:a|:e)? kvartalet/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar[s]?|apr|maj|jun[i]?|jul[i]?|aug|sep|okt|nov|dec)\\.?/i,\n  wide: /^(januari|februari|mars|april|maj|juni|juli|augusti|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^maj/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtofl]/i,\n  short: /^(sö|må|ti|on|to|fr|lö)/i,\n  abbreviated: /^(sön|mån|tis|ons|tors|fre|lör)/i,\n  wide: /^(söndag|måndag|tisdag|onsdag|torsdag|fredag|lördag)/i\n};\nvar parseDayPatterns = {\n  any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n  any: /^([fe]\\.?\\s?m\\.?|midn(att)?|midd(ag)?|(på) (morgonen|eftermiddagen|kvällen|natten))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^f/i,\n    pm: /^e/i,\n    midnight: /^midn/i,\n    noon: /^midd/i,\n    morning: /morgon/i,\n    afternoon: /eftermiddag/i,\n    evening: /kväll/i,\n    night: /natt/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Swedish locale.\n * @language Swedish\n * @iso-639-2 swe\n * @author Johannes Ulén [@ejulen]{@link https://github.com/ejulen}\n * @author Alexander Nanberg [@alexandernanberg]{@link https://github.com/alexandernanberg}\n * @author Henrik Andersson [@limelights]{@link https://github.com/limelights}\n */\nvar locale = {\n  code: 'sv',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'น้อยกว่า 1 วินาที',\n    other: 'น้อยกว่า {{count}} วินาที'\n  },\n  xSeconds: {\n    one: '1 วินาที',\n    other: '{{count}} วินาที'\n  },\n  halfAMinute: 'ครึ่งนาที',\n  lessThanXMinutes: {\n    one: 'น้อยกว่า 1 นาที',\n    other: 'น้อยกว่า {{count}} นาที'\n  },\n  xMinutes: {\n    one: '1 นาที',\n    other: '{{count}} นาที'\n  },\n  aboutXHours: {\n    one: 'ประมาณ 1 ชั่วโมง',\n    other: 'ประมาณ {{count}} ชั่วโมง'\n  },\n  xHours: {\n    one: '1 ชั่วโมง',\n    other: '{{count}} ชั่วโมง'\n  },\n  xDays: {\n    one: '1 วัน',\n    other: '{{count}} วัน'\n  },\n  aboutXWeeks: {\n    one: 'ประมาณ 1 สัปดาห์',\n    other: 'ประมาณ {{count}} สัปดาห์'\n  },\n  xWeeks: {\n    one: '1 สัปดาห์',\n    other: '{{count}} สัปดาห์'\n  },\n  aboutXMonths: {\n    one: 'ประมาณ 1 เดือน',\n    other: 'ประมาณ {{count}} เดือน'\n  },\n  xMonths: {\n    one: '1 เดือน',\n    other: '{{count}} เดือน'\n  },\n  aboutXYears: {\n    one: 'ประมาณ 1 ปี',\n    other: 'ประมาณ {{count}} ปี'\n  },\n  xYears: {\n    one: '1 ปี',\n    other: '{{count}} ปี'\n  },\n  overXYears: {\n    one: 'มากกว่า 1 ปี',\n    other: 'มากกว่า {{count}} ปี'\n  },\n  almostXYears: {\n    one: 'เกือบ 1 ปี',\n    other: 'เกือบ {{count}} ปี'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      if (token === 'halfAMinute') {\n        return 'ใน' + result;\n      } else {\n        return 'ใน ' + result;\n      }\n    } else {\n      return result + 'ที่ผ่านมา';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'วันEEEEที่ do MMMM y',\n  long: 'do MMMM y',\n  medium: 'd MMM y',\n  short: 'dd/MM/yyyy'\n};\nvar timeFormats = {\n  full: 'H:mm:ss น. zzzz',\n  long: 'H:mm:ss น. z',\n  medium: 'H:mm:ss น.',\n  short: 'H:mm น.'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'เวลา' {{time}}\",\n  long: \"{{date}} 'เวลา' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'medium'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"eeee'ที่แล้วเวลา' p\",\n  yesterday: \"'เมื่อวานนี้เวลา' p\",\n  today: \"'วันนี้เวลา' p\",\n  tomorrow: \"'พรุ่งนี้เวลา' p\",\n  nextWeek: \"eeee 'เวลา' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'คศ'],\n  abbreviated: ['BC', 'ค.ศ.'],\n  wide: ['ปีก่อนคริสตกาล', 'คริสต์ศักราช']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['ไตรมาสแรก', 'ไตรมาสที่สอง', 'ไตรมาสที่สาม', 'ไตรมาสที่สี่']\n};\nvar dayValues = {\n  narrow: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],\n  short: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],\n  abbreviated: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],\n  wide: ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์']\n};\nvar monthValues = {\n  narrow: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],\n  abbreviated: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],\n  wide: ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'เช้า',\n    afternoon: 'บ่าย',\n    evening: 'เย็น',\n    night: 'กลางคืน'\n  },\n  abbreviated: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'เช้า',\n    afternoon: 'บ่าย',\n    evening: 'เย็น',\n    night: 'กลางคืน'\n  },\n  wide: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'เช้า',\n    afternoon: 'บ่าย',\n    evening: 'เย็น',\n    night: 'กลางคืน'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'ตอนเช้า',\n    afternoon: 'ตอนกลางวัน',\n    evening: 'ตอนเย็น',\n    night: 'ตอนกลางคืน'\n  },\n  abbreviated: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'ตอนเช้า',\n    afternoon: 'ตอนกลางวัน',\n    evening: 'ตอนเย็น',\n    night: 'ตอนกลางคืน'\n  },\n  wide: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'ตอนเช้า',\n    afternoon: 'ตอนกลางวัน',\n    evening: 'ตอนเย็น',\n    night: 'ตอนกลางคืน'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  return String(dirtyNumber);\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^\\d+/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^([bB]|[aA]|คศ)/i,\n  abbreviated: /^([bB]\\.?\\s?[cC]\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?|ค\\.?ศ\\.?)/i,\n  wide: /^(ก่อนคริสตกาล|คริสต์ศักราช|คริสตกาล)/i\n};\nvar parseEraPatterns = {\n  any: [/^[bB]/i, /^(^[aA]|ค\\.?ศ\\.?|คริสตกาล|คริสต์ศักราช|)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^ไตรมาส(ที่)? ?[1234]/i\n};\nvar parseQuarterPatterns = {\n  any: [/(1|แรก|หนึ่ง)/i, /(2|สอง)/i, /(3|สาม)/i, /(4|สี่)/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^(ม\\.?ค\\.?|ก\\.?พ\\.?|มี\\.?ค\\.?|เม\\.?ย\\.?|พ\\.?ค\\.?|มิ\\.?ย\\.?|ก\\.?ค\\.?|ส\\.?ค\\.?|ก\\.?ย\\.?|ต\\.?ค\\.?|พ\\.?ย\\.?|ธ\\.?ค\\.?)/i,\n  abbreviated: /^(ม\\.?ค\\.?|ก\\.?พ\\.?|มี\\.?ค\\.?|เม\\.?ย\\.?|พ\\.?ค\\.?|มิ\\.?ย\\.?|ก\\.?ค\\.?|ส\\.?ค\\.?|ก\\.?ย\\.?|ต\\.?ค\\.?|พ\\.?ย\\.?|ธ\\.?ค\\.?')/i,\n  wide: /^(มกราคม|กุมภาพันธ์|มีนาคม|เมษายน|พฤษภาคม|มิถุนายน|กรกฎาคม|สิงหาคม|กันยายน|ตุลาคม|พฤศจิกายน|ธันวาคม)/i\n};\nvar parseMonthPatterns = {\n  wide: [/^มก/i, /^กุม/i, /^มี/i, /^เม/i, /^พฤษ/i, /^มิ/i, /^กรก/i, /^ส/i, /^กัน/i, /^ต/i, /^พฤศ/i, /^ธ/i],\n  any: [/^ม\\.?ค\\.?/i, /^ก\\.?พ\\.?/i, /^มี\\.?ค\\.?/i, /^เม\\.?ย\\.?/i, /^พ\\.?ค\\.?/i, /^มิ\\.?ย\\.?/i, /^ก\\.?ค\\.?/i, /^ส\\.?ค\\.?/i, /^ก\\.?ย\\.?/i, /^ต\\.?ค\\.?/i, /^พ\\.?ย\\.?/i, /^ธ\\.?ค\\.?/i]\n};\nvar matchDayPatterns = {\n  narrow: /^(อา\\.?|จ\\.?|อ\\.?|พฤ\\.?|พ\\.?|ศ\\.?|ส\\.?)/i,\n  short: /^(อา\\.?|จ\\.?|อ\\.?|พฤ\\.?|พ\\.?|ศ\\.?|ส\\.?)/i,\n  abbreviated: /^(อา\\.?|จ\\.?|อ\\.?|พฤ\\.?|พ\\.?|ศ\\.?|ส\\.?)/i,\n  wide: /^(อาทิตย์|จันทร์|อังคาร|พุธ|พฤหัสบดี|ศุกร์|เสาร์)/i\n};\nvar parseDayPatterns = {\n  wide: [/^อา/i, /^จั/i, /^อั/i, /^พุธ/i, /^พฤ/i, /^ศ/i, /^เส/i],\n  any: [/^อา/i, /^จ/i, /^อ/i, /^พ(?!ฤ)/i, /^พฤ/i, /^ศ/i, /^ส/i]\n};\nvar matchDayPeriodPatterns = {\n  any: /^(ก่อนเที่ยง|หลังเที่ยง|เที่ยงคืน|เที่ยง|(ตอน.*?)?.*(เที่ยง|เช้า|บ่าย|เย็น|กลางคืน))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^ก่อนเที่ยง/i,\n    pm: /^หลังเที่ยง/i,\n    midnight: /^เที่ยงคืน/i,\n    noon: /^เที่ยง/i,\n    morning: /เช้า/i,\n    afternoon: /บ่าย/i,\n    evening: /เย็น/i,\n    night: /กลางคืน/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Thai locale.\n * @language Thai\n * @iso-639-2 tha\n * @author Athiwat Hirunworawongkun [@athivvat]{@link https://github.com/athivvat}\n * @author [@hawkup]{@link https://github.com/hawkup}\n * @author  Jirawat I. [@nodtem66]{@link https://github.com/nodtem66}\n */\nvar locale = {\n  code: 'th',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'bir saniyeden az',\n    other: '{{count}} saniyeden az'\n  },\n  xSeconds: {\n    one: '1 saniye',\n    other: '{{count}} saniye'\n  },\n  halfAMinute: 'yarım dakika',\n  lessThanXMinutes: {\n    one: 'bir dakikadan az',\n    other: '{{count}} dakikadan az'\n  },\n  xMinutes: {\n    one: '1 dakika',\n    other: '{{count}} dakika'\n  },\n  aboutXHours: {\n    one: 'yaklaşık 1 saat',\n    other: 'yaklaşık {{count}} saat'\n  },\n  xHours: {\n    one: '1 saat',\n    other: '{{count}} saat'\n  },\n  xDays: {\n    one: '1 gün',\n    other: '{{count}} gün'\n  },\n  aboutXWeeks: {\n    one: 'yaklaşık 1 hafta',\n    other: 'yaklaşık {{count}} hafta'\n  },\n  xWeeks: {\n    one: '1 hafta',\n    other: '{{count}} hafta'\n  },\n  aboutXMonths: {\n    one: 'yaklaşık 1 ay',\n    other: 'yaklaşık {{count}} ay'\n  },\n  xMonths: {\n    one: '1 ay',\n    other: '{{count}} ay'\n  },\n  aboutXYears: {\n    one: 'yaklaşık 1 yıl',\n    other: 'yaklaşık {{count}} yıl'\n  },\n  xYears: {\n    one: '1 yıl',\n    other: '{{count}} yıl'\n  },\n  overXYears: {\n    one: '1 yıldan fazla',\n    other: '{{count}} yıldan fazla'\n  },\n  almostXYears: {\n    one: 'neredeyse 1 yıl',\n    other: 'neredeyse {{count}} yıl'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return result + ' sonra';\n    } else {\n      return result + ' önce';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'd MMMM y EEEE',\n  long: 'd MMMM y',\n  medium: 'd MMM y',\n  short: 'dd.MM.yyyy'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'saat' {{time}}\",\n  long: \"{{date}} 'saat' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'geçen hafta' eeee 'saat' p\",\n  yesterday: \"'dün saat' p\",\n  today: \"'bugün saat' p\",\n  tomorrow: \"'yarın saat' p\",\n  nextWeek: \"eeee 'saat' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['MÖ', 'MS'],\n  abbreviated: ['MÖ', 'MS'],\n  wide: ['Milattan Önce', 'Milattan Sonra']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['1Ç', '2Ç', '3Ç', '4Ç'],\n  wide: ['İlk çeyrek', 'İkinci Çeyrek', 'Üçüncü çeyrek', 'Son çeyrek']\n};\nvar monthValues = {\n  narrow: ['O', 'Ş', 'M', 'N', 'M', 'H', 'T', 'A', 'E', 'E', 'K', 'A'],\n  abbreviated: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],\n  wide: ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık']\n};\nvar dayValues = {\n  narrow: ['P', 'P', 'S', 'Ç', 'P', 'C', 'C'],\n  short: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],\n  abbreviated: ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cts'],\n  wide: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'öö',\n    pm: 'ös',\n    midnight: 'gy',\n    noon: 'ö',\n    morning: 'sa',\n    afternoon: 'ös',\n    evening: 'ak',\n    night: 'ge'\n  },\n  abbreviated: {\n    am: 'ÖÖ',\n    pm: 'ÖS',\n    midnight: 'gece yarısı',\n    noon: 'öğle',\n    morning: 'sabah',\n    afternoon: 'öğleden sonra',\n    evening: 'akşam',\n    night: 'gece'\n  },\n  wide: {\n    am: 'Ö.Ö.',\n    pm: 'Ö.S.',\n    midnight: 'gece yarısı',\n    noon: 'öğle',\n    morning: 'sabah',\n    afternoon: 'öğleden sonra',\n    evening: 'akşam',\n    night: 'gece'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'öö',\n    pm: 'ös',\n    midnight: 'gy',\n    noon: 'ö',\n    morning: 'sa',\n    afternoon: 'ös',\n    evening: 'ak',\n    night: 'ge'\n  },\n  abbreviated: {\n    am: 'ÖÖ',\n    pm: 'ÖS',\n    midnight: 'gece yarısı',\n    noon: 'öğlen',\n    morning: 'sabahleyin',\n    afternoon: 'öğleden sonra',\n    evening: 'akşamleyin',\n    night: 'geceleyin'\n  },\n  wide: {\n    am: 'ö.ö.',\n    pm: 'ö.s.',\n    midnight: 'gece yarısı',\n    noon: 'öğlen',\n    morning: 'sabahleyin',\n    afternoon: 'öğleden sonra',\n    evening: 'akşamleyin',\n    night: 'geceleyin'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n  return number + '.';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return Number(quarter) - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(mö|ms)/i,\n  abbreviated: /^(mö|ms)/i,\n  wide: /^(milattan önce|milattan sonra)/i\n};\nvar parseEraPatterns = {\n  any: [/(^mö|^milattan önce)/i, /(^ms|^milattan sonra)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^[1234]ç/i,\n  wide: /^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n  abbreviated: [/1ç/i, /2ç/i, /3ç/i, /4ç/i],\n  wide: [/^(i|İ)lk çeyrek/i, /(i|İ)kinci çeyrek/i, /üçüncü çeyrek/i, /son çeyrek/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[oşmnhtaek]/i,\n  abbreviated: /^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,\n  wide: /^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^o/i, /^ş/i, /^m/i, /^n/i, /^m/i, /^h/i, /^t/i, /^a/i, /^e/i, /^e/i, /^k/i, /^a/i],\n  any: [/^o/i, /^ş/i, /^mar/i, /^n/i, /^may/i, /^h/i, /^t/i, /^ağ/i, /^ey/i, /^ek/i, /^k/i, /^ar/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[psçc]/i,\n  short: /^(pz|pt|sa|ça|pe|cu|ct)/i,\n  abbreviated: /^(paz|pzt|sal|çar|per|cum|cts)/i,\n  wide: /^(pazar(?!tesi)|pazartesi|salı|çarşamba|perşembe|cuma(?!rtesi)|cumartesi)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^p/i, /^p/i, /^s/i, /^ç/i, /^p/i, /^c/i, /^c/i],\n  any: [/^pz/i, /^pt/i, /^sa/i, /^ça/i, /^pe/i, /^cu/i, /^ct/i],\n  wide: [/^pazar(?!tesi)/i, /^pazartesi/i, /^salı/i, /^çarşamba/i, /^perşembe/i, /^cuma(?!rtesi)/i, /^cumartesi/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(öö|ös|gy|ö|sa|ös|ak|ge)/i,\n  any: /^(ö\\.?\\s?[ös]\\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^ö\\.?ö\\.?/i,\n    pm: /^ö\\.?s\\.?/i,\n    midnight: /^(gy|gece yarısı)/i,\n    noon: /^öğ/i,\n    morning: /^sa/i,\n    afternoon: /^öğleden sonra/i,\n    evening: /^ak/i,\n    night: /^ge/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Turkish locale.\n * @language Turkish\n * @iso-639-2 tur\n * @author Alpcan Aydın [@alpcanaydin]{@link https://github.com/alpcanaydin}\n * @author Berkay Sargın [@berkaey]{@link https://github.com/berkaey}\n * @author Fatih Bulut [@bulutfatih]{@link https://github.com/bulutfatih}\n * @author Ismail Demirbilek [@dbtek]{@link https://github.com/dbtek}\n * @author İsmail Kayar [@ikayar]{@link https://github.com/ikayar}\n *\n *\n */\nvar locale = {\n  code: 'tr',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: '不到 1 秒',\n    other: '不到 {{count}} 秒'\n  },\n  xSeconds: {\n    one: '1 秒',\n    other: '{{count}} 秒'\n  },\n  halfAMinute: '半分钟',\n  lessThanXMinutes: {\n    one: '不到 1 分钟',\n    other: '不到 {{count}} 分钟'\n  },\n  xMinutes: {\n    one: '1 分钟',\n    other: '{{count}} 分钟'\n  },\n  xHours: {\n    one: '1 小时',\n    other: '{{count}} 小时'\n  },\n  aboutXHours: {\n    one: '大约 1 小时',\n    other: '大约 {{count}} 小时'\n  },\n  xDays: {\n    one: '1 天',\n    other: '{{count}} 天'\n  },\n  aboutXWeeks: {\n    one: '大约 1 个星期',\n    other: '大约 {{count}} 个星期'\n  },\n  xWeeks: {\n    one: '1 个星期',\n    other: '{{count}} 个星期'\n  },\n  aboutXMonths: {\n    one: '大约 1 个月',\n    other: '大约 {{count}} 个月'\n  },\n  xMonths: {\n    one: '1 个月',\n    other: '{{count}} 个月'\n  },\n  aboutXYears: {\n    one: '大约 1 年',\n    other: '大约 {{count}} 年'\n  },\n  xYears: {\n    one: '1 年',\n    other: '{{count}} 年'\n  },\n  overXYears: {\n    one: '超过 1 年',\n    other: '超过 {{count}} 年'\n  },\n  almostXYears: {\n    one: '将近 1 年',\n    other: '将近 {{count}} 年'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return result + '内';\n    } else {\n      return result + '前';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: \"y'年'M'月'd'日' EEEE\",\n  long: \"y'年'M'月'd'日'\",\n  medium: 'yyyy-MM-dd',\n  short: 'yy-MM-dd'\n};\nvar timeFormats = {\n  full: 'zzzz a h:mm:ss',\n  long: 'z a h:mm:ss',\n  medium: 'a h:mm:ss',\n  short: 'a h:mm'\n};\nvar dateTimeFormats = {\n  full: '{{date}} {{time}}',\n  long: '{{date}} {{time}}',\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nfunction checkWeek(date, baseDate, options) {\n  var baseFormat = 'eeee p';\n  if (isSameUTCWeek(date, baseDate, options)) {\n    return baseFormat; // in same week\n  } else if (date.getTime() > baseDate.getTime()) {\n    return \"'下个'\" + baseFormat; // in next week\n  }\n\n  return \"'上个'\" + baseFormat; // in last week\n}\n\nvar formatRelativeLocale = {\n  lastWeek: checkWeek,\n  // days before yesterday, maybe in this week or last week\n  yesterday: \"'昨天' p\",\n  today: \"'今天' p\",\n  tomorrow: \"'明天' p\",\n  nextWeek: checkWeek,\n  // days after tomorrow, maybe in this week or next week\n  other: 'PP p'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n  var format = formatRelativeLocale[token];\n  if (typeof format === 'function') {\n    return format(date, baseDate, options);\n  }\n  return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['前', '公元'],\n  abbreviated: ['前', '公元'],\n  wide: ['公元前', '公元']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['第一季', '第二季', '第三季', '第四季'],\n  wide: ['第一季度', '第二季度', '第三季度', '第四季度']\n};\nvar monthValues = {\n  narrow: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'],\n  abbreviated: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n  wide: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar dayValues = {\n  narrow: ['日', '一', '二', '三', '四', '五', '六'],\n  short: ['日', '一', '二', '三', '四', '五', '六'],\n  abbreviated: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],\n  wide: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: '上',\n    pm: '下',\n    midnight: '凌晨',\n    noon: '午',\n    morning: '早',\n    afternoon: '下午',\n    evening: '晚',\n    night: '夜'\n  },\n  abbreviated: {\n    am: '上午',\n    pm: '下午',\n    midnight: '凌晨',\n    noon: '中午',\n    morning: '早晨',\n    afternoon: '中午',\n    evening: '晚上',\n    night: '夜间'\n  },\n  wide: {\n    am: '上午',\n    pm: '下午',\n    midnight: '凌晨',\n    noon: '中午',\n    morning: '早晨',\n    afternoon: '中午',\n    evening: '晚上',\n    night: '夜间'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: '上',\n    pm: '下',\n    midnight: '凌晨',\n    noon: '午',\n    morning: '早',\n    afternoon: '下午',\n    evening: '晚',\n    night: '夜'\n  },\n  abbreviated: {\n    am: '上午',\n    pm: '下午',\n    midnight: '凌晨',\n    noon: '中午',\n    morning: '早晨',\n    afternoon: '中午',\n    evening: '晚上',\n    night: '夜间'\n  },\n  wide: {\n    am: '上午',\n    pm: '下午',\n    midnight: '凌晨',\n    noon: '中午',\n    morning: '早晨',\n    afternoon: '中午',\n    evening: '晚上',\n    night: '夜间'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n  switch (options === null || options === void 0 ? void 0 : options.unit) {\n    case 'date':\n      return number.toString() + '日';\n    case 'hour':\n      return number.toString() + '时';\n    case 'minute':\n      return number.toString() + '分';\n    case 'second':\n      return number.toString() + '秒';\n    default:\n      return '第 ' + number.toString();\n  }\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(第\\s*)?\\d+(日|时|分|秒)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(前)/i,\n  abbreviated: /^(前)/i,\n  wide: /^(公元前|公元)/i\n};\nvar parseEraPatterns = {\n  any: [/^(前)/i, /^(公元)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^第[一二三四]刻/i,\n  wide: /^第[一二三四]刻钟/i\n};\nvar parseQuarterPatterns = {\n  any: [/(1|一)/i, /(2|二)/i, /(3|三)/i, /(4|四)/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^(一|二|三|四|五|六|七|八|九|十[二一])/i,\n  abbreviated: /^(一|二|三|四|五|六|七|八|九|十[二一]|\\d|1[12])月/i,\n  wide: /^(一|二|三|四|五|六|七|八|九|十[二一])月/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^一/i, /^二/i, /^三/i, /^四/i, /^五/i, /^六/i, /^七/i, /^八/i, /^九/i, /^十(?!(一|二))/i, /^十一/i, /^十二/i],\n  any: [/^一|1/i, /^二|2/i, /^三|3/i, /^四|4/i, /^五|5/i, /^六|6/i, /^七|7/i, /^八|8/i, /^九|9/i, /^十(?!(一|二))|10/i, /^十一|11/i, /^十二|12/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[一二三四五六日]/i,\n  short: /^[一二三四五六日]/i,\n  abbreviated: /^周[一二三四五六日]/i,\n  wide: /^星期[一二三四五六日]/i\n};\nvar parseDayPatterns = {\n  any: [/日/i, /一/i, /二/i, /三/i, /四/i, /五/i, /六/i]\n};\nvar matchDayPeriodPatterns = {\n  any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^上午?/i,\n    pm: /^下午?/i,\n    midnight: /^午夜/i,\n    noon: /^[中正]午/i,\n    morning: /^早上/i,\n    afternoon: /^下午/i,\n    evening: /^晚上?/i,\n    night: /^凌晨/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Chinese Simplified locale.\n * @language Chinese Simplified\n * @iso-639-2 zho\n * @author Changyu Geng [@KingMario]{@link https://github.com/KingMario}\n * @author Song Shuoyun [@fnlctrl]{@link https://github.com/fnlctrl}\n * @author sabrinaM [@sabrinamiao]{@link https://github.com/sabrinamiao}\n * @author Carney Wu [@cubicwork]{@link https://github.com/cubicwork}\n * @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}\n */\nvar locale = {\n  code: 'zh-CN',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: '少於 1 秒',\n    other: '少於 {{count}} 秒'\n  },\n  xSeconds: {\n    one: '1 秒',\n    other: '{{count}} 秒'\n  },\n  halfAMinute: '半分鐘',\n  lessThanXMinutes: {\n    one: '少於 1 分鐘',\n    other: '少於 {{count}} 分鐘'\n  },\n  xMinutes: {\n    one: '1 分鐘',\n    other: '{{count}} 分鐘'\n  },\n  xHours: {\n    one: '1 小時',\n    other: '{{count}} 小時'\n  },\n  aboutXHours: {\n    one: '大約 1 小時',\n    other: '大約 {{count}} 小時'\n  },\n  xDays: {\n    one: '1 天',\n    other: '{{count}} 天'\n  },\n  aboutXWeeks: {\n    one: '大約 1 個星期',\n    other: '大約 {{count}} 個星期'\n  },\n  xWeeks: {\n    one: '1 個星期',\n    other: '{{count}} 個星期'\n  },\n  aboutXMonths: {\n    one: '大約 1 個月',\n    other: '大約 {{count}} 個月'\n  },\n  xMonths: {\n    one: '1 個月',\n    other: '{{count}} 個月'\n  },\n  aboutXYears: {\n    one: '大約 1 年',\n    other: '大約 {{count}} 年'\n  },\n  xYears: {\n    one: '1 年',\n    other: '{{count}} 年'\n  },\n  overXYears: {\n    one: '超過 1 年',\n    other: '超過 {{count}} 年'\n  },\n  almostXYears: {\n    one: '將近 1 年',\n    other: '將近 {{count}} 年'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', String(count));\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return result + '內';\n    } else {\n      return result + '前';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: \"y'年'M'月'd'日' EEEE\",\n  long: \"y'年'M'月'd'日'\",\n  medium: 'yyyy-MM-dd',\n  short: 'yy-MM-dd'\n};\nvar timeFormats = {\n  full: 'zzzz a h:mm:ss',\n  long: 'z a h:mm:ss',\n  medium: 'a h:mm:ss',\n  short: 'a h:mm'\n};\nvar dateTimeFormats = {\n  full: '{{date}} {{time}}',\n  long: '{{date}} {{time}}',\n  medium: '{{date}} {{time}}',\n  short: '{{date}} {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'上個'eeee p\",\n  yesterday: \"'昨天' p\",\n  today: \"'今天' p\",\n  tomorrow: \"'明天' p\",\n  nextWeek: \"'下個'eeee p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['前', '公元'],\n  abbreviated: ['前', '公元'],\n  wide: ['公元前', '公元']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['第一刻', '第二刻', '第三刻', '第四刻'],\n  wide: ['第一刻鐘', '第二刻鐘', '第三刻鐘', '第四刻鐘']\n};\nvar monthValues = {\n  narrow: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'],\n  abbreviated: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n  wide: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar dayValues = {\n  narrow: ['日', '一', '二', '三', '四', '五', '六'],\n  short: ['日', '一', '二', '三', '四', '五', '六'],\n  abbreviated: ['週日', '週一', '週二', '週三', '週四', '週五', '週六'],\n  wide: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: '上',\n    pm: '下',\n    midnight: '凌晨',\n    noon: '午',\n    morning: '早',\n    afternoon: '下午',\n    evening: '晚',\n    night: '夜'\n  },\n  abbreviated: {\n    am: '上午',\n    pm: '下午',\n    midnight: '凌晨',\n    noon: '中午',\n    morning: '早晨',\n    afternoon: '中午',\n    evening: '晚上',\n    night: '夜間'\n  },\n  wide: {\n    am: '上午',\n    pm: '下午',\n    midnight: '凌晨',\n    noon: '中午',\n    morning: '早晨',\n    afternoon: '中午',\n    evening: '晚上',\n    night: '夜間'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: '上',\n    pm: '下',\n    midnight: '凌晨',\n    noon: '午',\n    morning: '早',\n    afternoon: '下午',\n    evening: '晚',\n    night: '夜'\n  },\n  abbreviated: {\n    am: '上午',\n    pm: '下午',\n    midnight: '凌晨',\n    noon: '中午',\n    morning: '早晨',\n    afternoon: '中午',\n    evening: '晚上',\n    night: '夜間'\n  },\n  wide: {\n    am: '上午',\n    pm: '下午',\n    midnight: '凌晨',\n    noon: '中午',\n    morning: '早晨',\n    afternoon: '中午',\n    evening: '晚上',\n    night: '夜間'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n  switch (options === null || options === void 0 ? void 0 : options.unit) {\n    case 'date':\n      return number + '日';\n    case 'hour':\n      return number + '時';\n    case 'minute':\n      return number + '分';\n    case 'second':\n      return number + '秒';\n    default:\n      return '第 ' + number;\n  }\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(第\\s*)?\\d+(日|時|分|秒)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(前)/i,\n  abbreviated: /^(前)/i,\n  wide: /^(公元前|公元)/i\n};\nvar parseEraPatterns = {\n  any: [/^(前)/i, /^(公元)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^第[一二三四]刻/i,\n  wide: /^第[一二三四]刻鐘/i\n};\nvar parseQuarterPatterns = {\n  any: [/(1|一)/i, /(2|二)/i, /(3|三)/i, /(4|四)/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^(一|二|三|四|五|六|七|八|九|十[二一])/i,\n  abbreviated: /^(一|二|三|四|五|六|七|八|九|十[二一]|\\d|1[12])月/i,\n  wide: /^(一|二|三|四|五|六|七|八|九|十[二一])月/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^一/i, /^二/i, /^三/i, /^四/i, /^五/i, /^六/i, /^七/i, /^八/i, /^九/i, /^十(?!(一|二))/i, /^十一/i, /^十二/i],\n  any: [/^一|1/i, /^二|2/i, /^三|3/i, /^四|4/i, /^五|5/i, /^六|6/i, /^七|7/i, /^八|8/i, /^九|9/i, /^十(?!(一|二))|10/i, /^十一|11/i, /^十二|12/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[一二三四五六日]/i,\n  short: /^[一二三四五六日]/i,\n  abbreviated: /^週[一二三四五六日]/i,\n  wide: /^星期[一二三四五六日]/i\n};\nvar parseDayPatterns = {\n  any: [/日/i, /一/i, /二/i, /三/i, /四/i, /五/i, /六/i]\n};\nvar matchDayPeriodPatterns = {\n  any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^上午?/i,\n    pm: /^下午?/i,\n    midnight: /^午夜/i,\n    noon: /^[中正]午/i,\n    morning: /^早上/i,\n    afternoon: /^下午/i,\n    evening: /^晚上?/i,\n    night: /^凌晨/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Chinese Traditional locale.\n * @language Chinese Traditional\n * @iso-639-2 zho\n * @author tonypai [@tpai]{@link https://github.com/tpai}\n * @author Jack Hsu [@jackhsu978]{@link https://github.com/jackhsu978}\n * @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}\n */\nvar locale = {\n  code: 'zh-TW',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","import {\n\tcs,\n\tda,\n\tde,\n\tenUS,\n\tenIN,\n\tenIE,\n\tenGB,\n\tes,\n\tet,\n\tfi,\n\tfr,\n\tfrCA,\n\the,\n\thu,\n\tit,\n\tja,\n\tko,\n\tnn,\n\tpl,\n\tpt,\n\tptBR,\n\tru,\n\tsv,\n\tth,\n\ttr,\n\tzhCN,\n\tzhTW,\n} from 'date-fns/locale'; // MAINT: this is required for tectonic v22, code split has a bug\n\nconst lookup = new Set([\n\t'cs',\n\t'da',\n\t'de',\n\t'en-US',\n\t'en-GB',\n\t'en-IN',\n\t'en-IE',\n\t'es',\n\t'et',\n\t'fi',\n\t'fr-CA',\n\t'fr',\n\t'he',\n\t'hu',\n\t'it',\n\t'ja',\n\t'ko',\n\t'nn',\n\t'pl',\n\t'pt-BR',\n\t'pt',\n\t'ru',\n\t'sv',\n\t'th',\n\t'tr',\n\t'zh-CN',\n\t'zh-TW',\n]);\n\nexport const hasLocale = (code) => {\n\treturn lookup.has(code);\n};\n\nexport const getLocale = async (locale) => {\n\tswitch (locale) {\n\t\t// case 'af':\n\t\t// \treturn (await import('date-fns/locale/af'))?.default;\n\t\t// case 'ar-DZ':\n\t\t// \treturn (await import('date-fns/locale/ar-DZ'))?.default;\n\t\t// case 'ar-EG':\n\t\t// \treturn (await import('date-fns/locale/ar-EG'))?.default;\n\t\t// case 'ar-MA':\n\t\t// \treturn (await import('date-fns/locale/ar-MA'))?.default;\n\t\t// case 'ar-SA':\n\t\t// \treturn (await import('date-fns/locale/ar-SA'))?.default;\n\t\t// case 'ar-TN':\n\t\t// \treturn (await import('date-fns/locale/ar-TN'))?.default;\n\t\t// case 'ar':\n\t\t// \treturn (await import('date-fns/locale/ar'))?.default;\n\t\t// case 'az':\n\t\t// \treturn (await import('date-fns/locale/az'))?.default;\n\t\t// case 'be':\n\t\t// \treturn (await import('date-fns/locale/be'))?.default;\n\t\t// case 'bg':\n\t\t// \treturn (await import('date-fns/locale/bg'))?.default;\n\t\t// case 'bn':\n\t\t// \treturn (await import('date-fns/locale/bn'))?.default;\n\t\t// case 'bs':\n\t\t// \treturn (await import('date-fns/locale/bs'))?.default;\n\t\t// case 'ca':\n\t\t// \treturn (await import('date-fns/locale/ca'))?.default;\n\t\tcase 'cs':\n\t\t\treturn cs;\n\t\t// return (await import('date-fns/locale/cs'))?.default;\n\t\t// case 'cy':\n\t\t// \treturn (await import('date-fns/locale/cy'))?.default;\n\t\tcase 'da':\n\t\t\treturn da;\n\t\t// return (await import('date-fns/locale/da'))?.default;\n\t\t// case 'de-AT':\n\t\t// return (await import('date-fns/locale/de-AT'))?.default;\n\t\tcase 'de':\n\t\t\treturn de;\n\t\t// return (await import('date-fns/locale/de'))?.default;\n\t\t// case 'el':\n\t\t// return (await import('date-fns/locale/el'))?.default;\n\t\t// case 'en-AU':\n\t\t// return (await import('date-fns/locale/en-AU'))?.default;\n\t\t// case 'en-CA':\n\t\t// return (await import('date-fns/locale/en-CA'))?.default;\n\t\t// case 'en-GB':\n\t\t// return (await import('date-fns/locale/en-GB'))?.default;\n\t\t// case 'en-IE':\n\t\t// return (await import('date-fns/locale/en-IE'))?.default;\n\t\tcase 'en-IN':\n\t\t\treturn enIN;\n\t\t// return (await import('date-fns/locale/en-IN'))?.default;\n\t\tcase 'en-IE':\n\t\t\treturn enIE;\n\t\tcase 'en-US':\n\t\t\treturn enUS;\n\t\tcase 'en-GB':\n\t\t\treturn enGB;\n\t\t// return (await import('date-fns/locale/en-US'))?.default;\n\t\t// case 'en-ZA':\n\t\t// return (await import('date-fns/locale/en-ZA'))?.default;\n\t\t// case 'eo':\n\t\t// return (await import('date-fns/locale/eo'))?.default;\n\t\tcase 'es':\n\t\t\treturn es;\n\t\t// return (await import('date-fns/locale/es'))?.default;\n\t\tcase 'et':\n\t\t\treturn et;\n\t\t// case 'eu':\n\t\t// return (await import('date-fns/locale/eu'))?.default;\n\t\t// case 'fa-IR':\n\t\t// return (await import('date-fns/locale/fa-IR'))?.default;\n\t\tcase 'fi':\n\t\t\treturn fi;\n\t\t// return (await import('date-fns/locale/fi'))?.default;\n\t\tcase 'fr-CA':\n\t\t\treturn frCA;\n\t\t// return (await import('date-fns/locale/fr-CA'))?.default;\n\t\t// case 'fr-CH':\n\t\t// return (await import('date-fns/locale/fr-CH'))?.default;\n\t\tcase 'fr':\n\t\t\treturn fr;\n\t\t// return (await import('date-fns/locale/fr'))?.default;\n\t\t// case 'fy':\n\t\t// return (await import('date-fns/locale/fy'))?.default;\n\t\t// case 'gd':\n\t\t// return (await import('date-fns/locale/gd'))?.default;\n\t\t// case 'gl':\n\t\t// return (await import('date-fns/locale/gl'))?.default;\n\t\t// case 'gu':\n\t\t// return (await import('date-fns/locale/gu'))?.default;\n\t\tcase 'he':\n\t\t\treturn he;\n\t\t// return (await import('date-fns/locale/he'))?.default;\n\t\t// case 'hi':\n\t\t// return (await import('date-fns/locale/hi'))?.default;\n\t\t// case 'hr':\n\t\t// return (await import('date-fns/locale/hr'))?.default;\n\t\t// case 'ht':\n\t\t// return (await import('date-fns/locale/ht'))?.default;\n\t\tcase 'hu':\n\t\t\treturn hu;\n\t\t// return (await import('date-fns/locale/hu'))?.default;\n\t\t// case 'hy':\n\t\t// return (await import('date-fns/locale/hy'))?.default;\n\t\t// case 'id':\n\t\t// return (await import('date-fns/locale/id'))?.default;\n\t\t// case 'is':\n\t\t// return (await import('date-fns/locale/is'))?.default;\n\t\t// // case 'it-CH':\n\t\t// // \treturn (await import('date-fns/locale/it-CH'))?.default;\n\t\tcase 'it':\n\t\t\treturn it;\n\t\t// return (await import('date-fns/locale/it'))?.default;\n\t\t// case 'ja-Hira':\n\t\t// return (await import('date-fns/locale/ja-Hira'))?.default;\n\t\tcase 'ja':\n\t\t\treturn ja;\n\t\t// return await import('date-fns/locale/ja/index.js');\n\t\t// case 'ka':\n\t\t// \treturn (await import('date-fns/locale/ka'))?.default;\n\t\t// case 'kk':\n\t\t// \treturn (await import('date-fns/locale/kk'))?.default;\n\t\t// case 'km':\n\t\t// \treturn (await import('date-fns/locale/km'))?.default;\n\t\t// case 'kn':\n\t\t// \treturn (await import('date-fns/locale/kn'))?.default;\n\t\tcase 'ko':\n\t\t\treturn ko;\n\t\t// return (await import('date-fns/locale/ko'))?.default;\n\t\t// case 'lb':\n\t\t// \treturn (await import('date-fns/locale/lb'))?.default;\n\t\t// case 'lt':\n\t\t// \treturn (await import('date-fns/locale/lt'))?.default;\n\t\t// case 'lv':\n\t\t// \treturn (await import('date-fns/locale/lv'))?.default;\n\t\t// case 'mk':\n\t\t// \treturn (await import('date-fns/locale/mk'))?.default;\n\t\t// case 'mn':\n\t\t// \treturn (await import('date-fns/locale/mn'))?.default;\n\t\t// case 'ms':\n\t\t// \treturn (await import('date-fns/locale/ms'))?.default;\n\t\t// case 'mt':\n\t\t// \treturn (await import('date-fns/locale/mt'))?.default;\n\t\t// case 'nb':\n\t\t// \treturn (await import('date-fns/locale/nb'))?.default;\n\t\t// case 'nl-BE':\n\t\t// \treturn (await import('date-fns/locale/nl-BE'))?.default;\n\t\t// case 'nl':\n\t\t// \treturn (await import('date-fns/locale/nl'))?.default;\n\t\tcase 'nn':\n\t\t\treturn nn;\n\t\t// return (await import('date-fns/locale/nn'))?.default;\n\t\t// // case 'oc':\n\t\t// // \treturn (await import('date-fns/locale/oc'))?.default;\n\t\tcase 'pl':\n\t\t\treturn pl;\n\t\t// return (await import('date-fns/locale/pl'))?.default;\n\t\tcase 'pt-BR':\n\t\t\treturn ptBR;\n\t\t// return (await import('date-fns/locale/pt-BR'))?.default;\n\t\tcase 'pt':\n\t\t\treturn pt;\n\t\t// return (await import('date-fns/locale/pt'))?.default;\n\t\t// case 'ro':\n\t\t// \treturn (await import('date-fns/locale/ro'))?.default;\n\t\tcase 'ru':\n\t\t\treturn ru;\n\t\t// return (await import('date-fns/locale/ru'))?.default;\n\t\t// case 'sk':\n\t\t// \treturn (await import('date-fns/locale/sk'))?.default;\n\t\t// case 'sl':\n\t\t// \treturn (await import('date-fns/locale/sl'))?.default;\n\t\t// case 'sq':\n\t\t// \treturn (await import('date-fns/locale/sq'))?.default;\n\t\t// // case 'sr-Latin':\n\t\t// // \treturn (await import('date-fns/locale/sr-Latin'))?.default;\n\t\t// case 'sr':\n\t\t// \treturn (await import('date-fns/locale/sr'))?.default;\n\t\tcase 'sv':\n\t\t\treturn sv;\n\t\t// return (await import('date-fns/locale/sv'))?.default;\n\t\t// case 'ta':\n\t\t// \treturn (await import('date-fns/locale/ta'))?.default;\n\t\t// case 'te':\n\t\t// \treturn (await import('date-fns/locale/te'))?.default;\n\t\tcase 'th':\n\t\t\treturn th;\n\t\t// return (await import('date-fns/locale/th'))?.default;\n\t\tcase 'tr':\n\t\t\treturn tr;\n\t\t// return (await import('date-fns/locale/tr'))?.default;\n\t\t// case 'ug':\n\t\t// \treturn (await import('date-fns/locale/ug'))?.default;\n\t\t// case 'uk':\n\t\t// \treturn (await import('date-fns/locale/uk'))?.default;\n\t\t// case 'uz-Cryrl':\n\t\t// \treturn (await import('date-fns/locale/uz-Cyrl'))?.default;\n\t\t// case 'uz':\n\t\t// \treturn (await import('date-fns/locale/uz'))?.default;\n\t\t// case 'vi':\n\t\t// \treturn (await import('date-fns/locale/vi'))?.default;\n\t\tcase 'zh-CN':\n\t\t\treturn zhCN;\n\t\t// return (await import('date-fns/locale/zh-CN'))?.default;\n\t\t// // case 'zh-KH':\n\t\t// // \treturn (await import('date-fns/locale/zh-KH'))?.default;\n\t\tcase 'zh-TW':\n\t\t\treturn zhTW;\n\t\t// return (await import('date-fns/locale/zh-TW'))?.default;\n\t}\n};\n","import {actionTypes} from '@servicenow/ui-core';\nimport {\n\tisDateTimeValueValid,\n\tlocaleContext,\n\ttimezoneContext,\n} from '@servicenow/library-date-time';\nimport {hideCalendarPanel} from '../utils/helper';\nimport {hasLocale, getLocale} from '../locales';\nimport {CUSTOM_PRESET_OPTION} from '../utils';\nconst public_api = 'Public API';\n\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_RENDER_REQUESTED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_CONNECTED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\n\nasync function setContext({properties: {locale}, updateContext}) {\n\t// locale is a date-fns object\n\tif (typeof locale === 'object') {\n\t\treturn updateContext({\n\t\t\tcontext: localeContext,\n\t\t\tvalue: locale,\n\t\t});\n\t}\n\n\tlet code = locale || document.documentElement.lang;\n\tif (!code) return;\n\n\tlet valid = hasLocale(code);\n\tif (!valid) {\n\t\tcode = code.split('-')[0];\n\t\tvalid = hasLocale(code);\n\t}\n\tif (!valid) return;\n\n\tconst value = await getLocale(code);\n\tupdateContext({\n\t\tcontext: localeContext,\n\t\tvalue,\n\t\tshouldRender: false,\n\t});\n\n\t//Get the timezone value from the user preferences\n\tupdateContext({\n\t\tcontext: timezoneContext,\n\t\tvalue: window?.ux_globals?.session?.output?.user?.timeZone,\n\t\tshouldRender: false,\n\t});\n}\n\nconst announceMessage = (label, message, dispatch) => {\n\tconst announcement = label + ' ' + message.content;\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announcement,\n\t\ttype: 'polite',\n\t});\n};\n\nexport default {\n\t[COMPONENT_CONNECTED]({dispatch, host}) {\n\t\thost.validate = () =>\n\t\t\tdispatch('PRIVATE#VALIDATE', {\n\t\t\t\tinitiator: public_api,\n\t\t\t});\n\t},\n\t[COMPONENT_RENDER_REQUESTED]: async ({\n\t\tcontext,\n\t\tproperties,\n\t\tupdateContext,\n\t\taction: {meta},\n\t}) => {\n\t\tif (!meta.firstRenderOnConnect) return;\n\n\t\tawait setContext({properties, context, updateContext});\n\t},\n\t[COMPONENT_DOM_TREE_READY]({\n\t\tdispatch,\n\t\thost,\n\t\tproperties,\n\t\tstate,\n\t\tupdateProperties,\n\t\tupdateState,\n\t}) {\n\t\tconst {value, valueEnd, valueStart, activePreset} = properties;\n\t\tconst {mode} = state;\n\t\t// Need this to make sure the popover is\n\t\t// anchored directly to an input.\n\t\t// This is to ensure opened property actuates without\n\t\t// focus which defines positionTarget normally\n\t\tconst activeInput = host.shadowRoot.querySelector('now-input-date-time');\n\t\tupdateState({\n\t\t\tactiveInput,\n\t\t\tpositionTarget: activeInput.shadowRoot\n\t\t\t\t.querySelector('now-input')\n\t\t\t\t.shadowRoot.querySelector('.now-input-field'),\n\t\t});\n\n\t\tif (mode === 'standard') {\n\t\t\tupdateState({\n\t\t\t\tpath: 'prevValue',\n\t\t\t\tvalue,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t});\n\t\t} else {\n\t\t\tupdateState([\n\t\t\t\t{\n\t\t\t\t\tpath: 'prevValueStart',\n\t\t\t\t\tvalue: valueStart,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'prevValueEnd',\n\t\t\t\t\tvalue: valueEnd,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t},\n\t\t\t]);\n\t\t}\n\n\t\tdispatch('PRIVATE#VALIDATE', {\n\t\t\tinitiator: COMPONENT_DOM_TREE_READY,\n\t\t});\n\n\t\tif (\n\t\t\tvalueStart?.trim() !== '' &&\n\t\t\tvalueEnd?.trim() !== '' &&\n\t\t\tactivePreset &&\n\t\t\tObject.keys(activePreset).length === 0\n\t\t) {\n\t\t\tupdateProperties({\n\t\t\t\tactivePreset: CUSTOM_PRESET_OPTION,\n\t\t\t});\n\t\t}\n\t},\n\t[COMPONENT_PROPERTY_CHANGED]({\n\t\tcontext: {[localeContext]: locale},\n\t\thost,\n\t\taction,\n\t\tproperties,\n\t\tdispatch,\n\t\tstate,\n\t\tupdateState,\n\t\tupdateProperties,\n\t}) {\n\t\tconst {name, value: totalErrorMessages} = action.payload;\n\t\tconst {\n\t\t\tformat,\n\t\t\tisoWeek,\n\t\t\topened,\n\t\t\trequired,\n\t\t\ttype,\n\t\t\tvalue, //now-date-time\n\t\t\tvalueEnd, //now-date-time-interval\n\t\t\tvalueStart, //now-date-time-interval\n\t\t\tenablePresets,\n\t\t\tactivePreset,\n\t\t} = properties;\n\n\t\t// When the date-time input has an invalid value,\n\t\t// need this to ensure a valid date cell is selectable\n\t\t// from the calendar panel on first click.\n\t\tif (name === 'invalid' && !hideCalendarPanel(type)) {\n\t\t\thost.shadowRoot.querySelector('now-popover').refit();\n\t\t\treturn;\n\t\t}\n\n\t\t// bail early if we don't care about the properties being updated\n\t\tif (\n\t\t\t![\n\t\t\t\t'disabled',\n\t\t\t\t'format',\n\t\t\t\t'opened',\n\t\t\t\t'readonly',\n\t\t\t\t'type',\n\t\t\t\t'value', //now-date-time\n\t\t\t\t'valueEnd', //now-date-time-interval\n\t\t\t\t'valueStart', //now-date-time-interval\n\t\t\t\t'messages',\n\t\t\t].includes(name)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst {activeInput, prefix, mode} = state;\n\t\tlet inputValue =\n\t\t\tactiveInput?.shadowRoot\n\t\t\t\t.querySelector('now-input')\n\t\t\t\t?.shadowRoot.querySelector('input')?.value ?? '';\n\t\tlet inputFieldName = activeInput?.dataset?.input;\n\t\t// Check the input value against the current state value\n\t\t// If it's valid, then update the state value to ensure visual calendar reflects correctly\n\t\tif (\n\t\t\tname === 'opened' &&\n\t\t\topened &&\n\t\t\t(value != null || valueStart != null || valueEnd != null)\n\t\t) {\n\t\t\tconst {valid, date, isoDate} = isDateTimeValueValid({\n\t\t\t\tformat,\n\t\t\t\tisoWeek,\n\t\t\t\tlocale,\n\t\t\t\trequired,\n\t\t\t\tvalue: inputValue,\n\t\t\t});\n\n\t\t\tif (\n\t\t\t\tvalid &&\n\t\t\t\tinputValue !== value &&\n\t\t\t\tinputValue !== valueStart &&\n\t\t\t\tinputValue !== valueEnd\n\t\t\t) {\n\t\t\t\tconst dispatchType = inputFieldName\n\t\t\t\t\t? `VALUE_${inputFieldName}_SET`.toUpperCase()\n\t\t\t\t\t: 'VALUE_SET';\n\n\t\t\t\tdispatch(`${prefix}${dispatchType}`, {\n\t\t\t\t\tisoDate,\n\t\t\t\t\tdate,\n\t\t\t\t\tvalue: inputValue,\n\t\t\t\t\tname: activeInput?.name,\n\t\t\t\t\ttype,\n\t\t\t\t\tformat,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (mode === 'standard') {\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'prevValue',\n\t\t\t\t\tvalue,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tupdateState([\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'prevValueStart',\n\t\t\t\t\t\tvalue: valueStart,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'prevValueEnd',\n\t\t\t\t\t\tvalue: valueEnd,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t},\n\t\t\t\t]);\n\n\t\t\t\tif (enablePresets) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpath: 'prevActivePreset',\n\t\t\t\t\t\tvalue: activePreset,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (name == 'opened') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (enablePresets && (name === 'valueStart' || name === 'valueEnd')) {\n\t\t\tlet {presetValueStart, presetValueEnd} = state;\n\t\t\tconst isValueChanged = (value, presetValue) =>\n\t\t\t\tvalue && presetValue !== value;\n\n\t\t\tif (!valueStart && !valueEnd) {\n\t\t\t\tupdateProperties({\n\t\t\t\t\tactivePreset: {},\n\t\t\t\t});\n\t\t\t} else if (\n\t\t\t\tisValueChanged(valueStart, presetValueStart) ||\n\t\t\t\tisValueChanged(valueEnd, presetValueEnd) ||\n\t\t\t\t!valueStart ||\n\t\t\t\t!valueEnd\n\t\t\t) {\n\t\t\t\tupdateProperties({\n\t\t\t\t\tactivePreset: CUSTOM_PRESET_OPTION,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (name === 'messages') {\n\t\t\tconst messagesLength = totalErrorMessages.length;\n\t\t\tfor (let i = 0; i < messagesLength; i++) {\n\t\t\t\tannounceMessage(properties.label, totalErrorMessages[i], dispatch);\n\t\t\t}\n\t\t}\n\t},\n};\n","import {POPOVER_ID} from '../utils/constants';\nimport {\n\tfocusCalendar,\n\tfocusInput,\n\tisPathInDateTimePanel,\n} from '../utils/helper';\nimport {\n\tisDateTimeValueValid,\n\tlocaleContext,\n} from '@servicenow/library-date-time';\n\nexport default {\n\t['NOW_POPOVER#CONTENT_VISIBLE']: {\n\t\tstopPropagation: true,\n\t\teffect: ({host, action, state, updateState}) => {\n\t\t\tif (POPOVER_ID === action.payload.id) {\n\t\t\t\tfocusCalendar(host, {state, updateState});\n\n\t\t\t\t// DEF0321215\n\t\t\t\tconst popover = host.shadowRoot.querySelector('.now-date-time-popover');\n\t\t\t\tpopover.refit();\n\t\t\t}\n\t\t},\n\t},\n\t['NOW_POPOVER#OPENED_SET']({\n\t\taction,\n\t\tcontext: {[localeContext]: locale},\n\t\tdispatch,\n\t\thost,\n\t\tproperties,\n\t\tstate,\n\t\tupdateProperties,\n\t\tupdateState,\n\t}) {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\tfooterActions,\n\t\t\tformat,\n\t\t\tisoWeek,\n\t\t\treadonly,\n\t\t\trequired,\n\t\t\tshowDefaultFooterActions,\n\t\t\ttype,\n\t\t\tenablePresets,\n\t\t\tisDateManuallySet,\n\t\t} = properties;\n\t\tconst {activeInput, prefix, mode} = state;\n\t\tlet isValid = true;\n\n\t\tconst {value, actionSource, id, path} = action.payload;\n\t\tif (disabled || readonly || id !== POPOVER_ID) return;\n\n\t\t//check to see if the user has clicked on the now-date-time input or has clicked outside\n\t\tconst clickedOnActiveInput =\n\t\t\tactiveInput.getAttribute('name') === path?.[0].getAttribute('name');\n\n\t\tif (!isPathInDateTimePanel(activeInput, path)) {\n\t\t\tdispatch(`${prefix}OPENED_SET`, {value});\n\t\t}\n\n\t\tif (!['outside-click', 'tab-press'].includes(actionSource)) {\n\t\t\tfocusInput(host, {state});\n\t\t}\n\n\t\t/**\n\t\t * Revert the value to the initial value if the calendar\n\t\t * selection was dismissed and can/should be reverted.\n\t\t */\n\t\tconst hasFooterActions =\n\t\t\tfooterActions.length > 0 || showDefaultFooterActions;\n\t\tconst shouldRevertValue =\n\t\t\t['escape-press', 'outside-click'].includes(actionSource) &&\n\t\t\t!clickedOnActiveInput &&\n\t\t\thasFooterActions &&\n\t\t\t!isDateManuallySet;\n\n\t\tif (shouldRevertValue) {\n\t\t\tconst input = activeInput?.dataset?.input;\n\t\t\tconst name = input ? (activeInput?.name ?? 'unknown') : properties.name;\n\t\t\tconst payload = {\n\t\t\t\tname,\n\t\t\t\ttype,\n\t\t\t\tformat,\n\t\t\t};\n\n\t\t\tif (mode === 'standard') {\n\t\t\t\tconst {prevValue} = state;\n\t\t\t\tconst {valid, date, isoDate} = isDateTimeValueValid({\n\t\t\t\t\tformat,\n\t\t\t\t\tisoWeek,\n\t\t\t\t\tlocale,\n\t\t\t\t\trequired,\n\t\t\t\t\tvalue: prevValue,\n\t\t\t\t});\n\n\t\t\t\tisValid = valid;\n\n\t\t\t\tdispatch(() => ({\n\t\t\t\t\ttype: `${prefix}VALUE_SET`,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tisoDate,\n\t\t\t\t\t\tdate,\n\t\t\t\t\t\tvalue: valid ? prevValue : '',\n\t\t\t\t\t},\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tconst {prevValueStart, prevValueEnd, prevActivePreset} = state;\n\t\t\t\tconst {\n\t\t\t\t\tvalid: validStart,\n\t\t\t\t\tdate: dateStart,\n\t\t\t\t\tisoDate: isoDateStart,\n\t\t\t\t} = isDateTimeValueValid({\n\t\t\t\t\tformat,\n\t\t\t\t\tisoWeek,\n\t\t\t\t\tlocale,\n\t\t\t\t\trequired,\n\t\t\t\t\tvalue: prevValueStart,\n\t\t\t\t});\n\t\t\t\tconst {\n\t\t\t\t\tvalid: validEnd,\n\t\t\t\t\tdate: dateEnd,\n\t\t\t\t\tisoDate: isoDateEnd,\n\t\t\t\t} = isDateTimeValueValid({\n\t\t\t\t\tformat,\n\t\t\t\t\tisoWeek,\n\t\t\t\t\tlocale,\n\t\t\t\t\trequired,\n\t\t\t\t\tvalue: prevValueEnd,\n\t\t\t\t});\n\n\t\t\t\tisValid = validStart && validEnd;\n\n\t\t\t\tif (enablePresets) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpresetValueStart: prevValueStart,\n\t\t\t\t\t\tpresetValueEnd: prevValueEnd,\n\t\t\t\t\t});\n\n\t\t\t\t\tupdateProperties({\n\t\t\t\t\t\tactivePreset: prevActivePreset,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tdispatch(() => ({\n\t\t\t\t\ttype: `${prefix}VALUE_START_SET`,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tvalue: validStart ? prevValueStart : '',\n\t\t\t\t\t\tisoDate: isoDateStart,\n\t\t\t\t\t\tdate: dateStart,\n\t\t\t\t\t},\n\t\t\t\t}));\n\t\t\t\tdispatch(() => ({\n\t\t\t\t\ttype: `${prefix}VALUE_END_SET`,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tvalue: validEnd ? prevValueEnd : '',\n\t\t\t\t\t\tisoDate: isoDateEnd,\n\t\t\t\t\t\tdate: dateEnd,\n\t\t\t\t\t},\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\n\t\t// if we are closing the popover from an outside clicked\n\t\t// then we must trigger validation flow\n\t\tif (\n\t\t\t(actionSource === 'outside-click' || actionSource === 'escape-press') &&\n\t\t\t!clickedOnActiveInput\n\t\t) {\n\t\t\tlet fromPC = true;\n\t\t\tlet startUnchanged = false;\n\t\t\tlet endUnchanged = false;\n\n\t\t\tif (isValid && shouldRevertValue) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if we clicked outside then we should validate the existing value incase it changed\n\t\t\tdispatch(({properties, state}) => {\n\t\t\t\tconst {value, valueEnd, valueStart, nowId} = properties;\n\t\t\t\tconst {prevValue, prevValueStart, prevValueEnd} = state;\n\n\t\t\t\tif (prevValue === value) return {shouldDispatch: false};\n\n\t\t\t\tconst input = activeInput?.dataset?.input;\n\n\t\t\t\tif (input === 'start') {\n\t\t\t\t\tif (prevValueStart === valueStart) {\n\t\t\t\t\t\tstartUnchanged = true;\n\t\t\t\t\t\treturn {shouldDispatch: false};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (input === 'end') {\n\t\t\t\t\tif (prevValueEnd === valueEnd) {\n\t\t\t\t\t\tendUnchanged = true;\n\t\t\t\t\t\treturn {shouldDispatch: false};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet fieldValue = value;\n\t\t\t\tif (input) {\n\t\t\t\t\tfieldValue = input === 'start' ? valueStart : valueEnd;\n\t\t\t\t}\n\n\t\t\t\tif (!isValid && shouldRevertValue) {\n\t\t\t\t\tfieldValue = '';\n\t\t\t\t}\n\n\t\t\t\tconst options = {\n\t\t\t\t\tinitiator: 'NOW_POPOVER#OPENED_SET',\n\t\t\t\t\tfieldValue,\n\t\t\t\t\tname: input ? `input-${nowId}-${input}` : `input-${nowId}`,\n\t\t\t\t\tfromPopoverClose: fromPC,\n\t\t\t\t\tstartUnchanged,\n\t\t\t\t\tendUnchanged,\n\t\t\t\t\tinput,\n\t\t\t\t\tshouldRevertValue: shouldRevertValue,\n\t\t\t\t};\n\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'PRIVATE#VALIDATE',\n\t\t\t\t\tpayload: options,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t},\n};\n","import calendar from './now-date-time-calendar';\nimport input from './now-input-date-time';\nimport lifecycle from './lifecycle';\nimport popover from './now-popover';\n\nexport default {\n\t...calendar,\n\t...input,\n\t...lifecycle,\n\t...popover,\n};\n","import {\n\tDateTypes,\n\tlocaleContext,\n\tFORMAT_MATCH_ERROR_ID,\n\tUNAVAILABLE_ERROR_ID,\n} from '@servicenow/library-date-time';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {messagesSchema, fieldLayoutSchema} from '@servicenow/now-input';\nimport {\n\tPOPOVER_ID,\n\tTRIGGER_ID,\n\tcheckForDisabledDates,\n\tcheckForErrors,\n\tfocusCalendar,\n\tgetSelectedItems,\n\thandleSlotClick,\n\thandleClick,\n\thandleFocus,\n\thandleKeydown,\n\thideCalendarPanel,\n\tgetCalendarIcon,\n\tcheckIfConfigurationIsValid,\n} from './utils';\nimport {\n\tdisabledItemsSchema,\n\tfooterActionsSchema,\n\titemsSchema,\n\ttypesSchema,\n} from './schemas';\nimport './now-date-time-calendar';\nimport './now-input-date-time';\nimport '@servicenow/now-button';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-popover';\nimport actions from './actions';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport deferBehavior from '@servicenow/behavior-defer';\nimport styles from './_now-date-time.scss';\nconst public_api = 'Public API';\nconst {COMPONENT_DOM_TREE_READY} = actionTypes;\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {\n\t\tcontext: {[localeContext]: locale},\n\t\tpositionTarget,\n\t\tprefix,\n\t} = state;\n\tconst {\n\t\topened,\n\t\tisoWeek,\n\t\tformat,\n\t\tinvalid,\n\t\tpanelFitProps,\n\n\t\t// Input props\n\t\tname = `input-${state.properties.nowId}`,\n\t\tvalue,\n\t\tsize,\n\t\thelperContent,\n\t\thideRequiredIndicator,\n\t\tlabel,\n\t\toptional,\n\t\trequired,\n\t\tconfigAria,\n\t\tdisabled,\n\t\tautofocus,\n\t\tplaceholder,\n\t\treadonly,\n\t\tmessages,\n\t\tinitialTime,\n\t\talign,\n\n\t\t// Calendar props\n\t\tfooterActions,\n\t\tshowDefaultFooterActions,\n\t\thideFooter,\n\t\ttype,\n\t\titems,\n\t\tdisabledItems,\n\t\tfirstDayOfWeek,\n\t\thideAdjacentDates,\n\t\tdisableWeekends,\n\t\tweekendDays,\n\t\tweekdayHeadings,\n\t\tfieldLayout,\n\t\tdefaultFooterActionLabels,\n\t\tyearRange,\n\t\twrapLabel,\n\t} = state.properties;\n\tconst icon = getCalendarIcon(type);\n\tconst constrain = type !== DateTypes.WEEK_YEAR ? {maxWidth: 282} : {};\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<now-input-date-time\n\t\t\t\tclassName=\"now-date-time-input\"\n\t\t\t\tslot=\"trigger\"\n\t\t\t\tname={name}\n\t\t\t\tvalue={value}\n\t\t\t\tmanage-value\n\t\t\t\thelper-content={helperContent}\n\t\t\t\thide-required-indicator={hideRequiredIndicator}\n\t\t\t\tinvalid={invalid}\n\t\t\t\tmanage-invalid\n\t\t\t\tlabel={label}\n\t\t\t\tsize={size}\n\t\t\t\toptional={optional}\n\t\t\t\talign={align}\n\t\t\t\trequired={required}\n\t\t\t\tformat={format}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tautofocus={autofocus}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\treadonly={readonly}\n\t\t\t\tmessages={messages}\n\t\t\t\tiso-week={isoWeek}\n\t\t\t\ton-click={(e) => handleClick(e, {prefix, state, dispatch})}\n\t\t\t\ton-keydown={(e) => handleKeydown(e, {state, dispatch})}\n\t\t\t\ton-focus={(e) => handleFocus(e, {state, updateState})}\n\t\t\t\tconfig-aria={\n\t\t\t\t\tdisabled || readonly\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\t...filterAriaAttributes(configAria, 'input'),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\t...filterAriaAttributes(configAria, 'input'),\n\t\t\t\t\t\t\t\t\trole: 'combobox',\n\t\t\t\t\t\t\t\t\t'aria-haspopup': 'dialog',\n\t\t\t\t\t\t\t\t\t'aria-expanded': String(opened),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tappend-to-payload={{id: TRIGGER_ID}}\n\t\t\t\tfield-layout={fieldLayout}\n\t\t\t\twrap-label={wrapLabel}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tslot=\"start\"\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-date-time-slot': true,\n\t\t\t\t\t\t'-start': true,\n\t\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<slot\n\t\t\t\t\t\tname=\"start\"\n\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\thandleSlotClick(e, {prefix, state, dispatch});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tslot=\"end\"\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-date-time-slot': true,\n\t\t\t\t\t\t'-end': true,\n\t\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<slot\n\t\t\t\t\t\tname=\"end\"\n\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\thandleSlotClick(e, {prefix, state, dispatch});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{icon && (\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-date-time-input-icon': true,\n\t\t\t\t\t\t\t[`-${size}`]: size,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tslot=\"end\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\tconfig-aria={{icon: {role: 'presentation'}}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<slot\n\t\t\t\t\tslot=\"label-inline\"\n\t\t\t\t\tname=\"label-inline\"\n\t\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\thandleSlotClick(e, {prefix, state, dispatch});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<slot slot=\"label-end\" name=\"label-end\" />\n\t\t\t\t<slot\n\t\t\t\t\tslot=\"label-start\"\n\t\t\t\t\tname=\"label-start\"\n\t\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\thandleSlotClick(e, {prefix, state, dispatch});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</now-input-date-time>\n\t\t\t{hideCalendarPanel(type) ? undefined : (\n\t\t\t\t<now-popover\n\t\t\t\t\tclassName=\"now-date-time-popover\"\n\t\t\t\t\topened={opened}\n\t\t\t\t\tmanage-opened\n\t\t\t\t\tposition-target={positionTarget}\n\t\t\t\t\tconstrain={constrain}\n\t\t\t\t\tpositions={panelFitProps.position}\n\t\t\t\t\toffset={panelFitProps.offset}\n\t\t\t\t\thide-tail\n\t\t\t\t\tappend-to-payload={{id: POPOVER_ID}}\n\t\t\t\t\tinteraction-type=\"combo\"\n\t\t\t\t>\n\t\t\t\t\t<now-date-time-calendar\n\t\t\t\t\t\tdefer\n\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\tappend-to-meta={`from-date-time`}\n\t\t\t\t\t\tclassName=\"now-date-time-calendar\"\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tformat={format}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tmanage-items\n\t\t\t\t\t\tselected-items={getSelectedItems([value], format, locale, type)}\n\t\t\t\t\t\tmanage-selected-items\n\t\t\t\t\t\tdisabled-items={disabledItems}\n\t\t\t\t\t\tdisable-weekends={disableWeekends}\n\t\t\t\t\t\tweekend-days={weekendDays}\n\t\t\t\t\t\tweekday-headings={weekdayHeadings}\n\t\t\t\t\t\tfirst-day-of-week={firstDayOfWeek}\n\t\t\t\t\t\thide-adjacent-dates={hideAdjacentDates}\n\t\t\t\t\t\tshow-default-footer-actions={showDefaultFooterActions}\n\t\t\t\t\t\tdefaultFooterActionLabels={defaultFooterActionLabels}\n\t\t\t\t\t\tfooter-actions={footerActions}\n\t\t\t\t\t\thide-footer={hideFooter}\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\tcontainer: {\n\t\t\t\t\t\t\t\t...filterAriaAttributes(configAria, 'panel'),\n\t\t\t\t\t\t\t\trole: 'dialog',\n\t\t\t\t\t\t\t\t'aria-modal': 'true',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tiso-week={isoWeek}\n\t\t\t\t\t\tinitial-time={initialTime}\n\t\t\t\t\t\tyear-range={yearRange}\n\t\t\t\t\t/>\n\t\t\t\t</now-popover>\n\t\t\t)}\n\t\t</Fragment>\n\t);\n};\n\n/**\n * Use the input or calendar picker to select a date or date and time value.\n *\n * ```jsx\n * <now-date-time format=\"yyyy/MM/dd\" />\n * <now-date-time format=\"yyyy/MM/dd HH:mm:ss\" type=\"date-time\" />\n * ```\n *\n * By default, the picker type is set for a single date. Setting the `type`\n * property to `'date-time'` allows time to be selected in the calendar.\n *\n * `now-date-time` behaves just like `now-input` with the addition\n * of the calendar. Clicking the input or pressing up/down arrow keys prompts the picker to appear. In the case of arrow keys, focus moves into the\n * calendar.\n *\n * The `format` property uses Unicode Technical Standard (UTS) tokens.\n * See UTS and other supported format characters in the [`date-fns` library](https://date-fns.org/v2.28.0/docs/format).\n *\n * @seismicElement now-date-time\n * @summary Select a date or date and time value via input or calendar picker.\n * @uib.label Date-Time\n * @uib.icon tile-uib-date-time-1-sm\n * @uib.description Select a date or date and time value via input or calendar picker.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, type, disabled, readonly, autofocus, value, manageValue, name, placeholder, label, wrapLabel, required, hideRequiredIndicator, optional, helperContent, invalid, manageInvalid, messages, format, opened, manageOpened, footerActions, showDefaultFooterActions, hideFooter, hideAdjacentDates, panelFitProps, weekdayHeadings, firstDayOfWeek, disableWeekends, weekendDays, disabledItems, configAria, initialTime,isoWeek, align, fieldLayout, defaultFooterActionLabels, yearRange\n * @uib.layout.value.children value, manageValue, name, placeholder, align\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.label.children label, wrapLabel, required, hideRequiredIndicator, optional, helperContent\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.format.children format\n * @uib.layout.format.icon integer-outline\n * @uib.layout.picker.children opened, manageOpened, showDefaultFooterActions, defaultFooterActionLabels, footerActions, hideFooter, hideAdjacentDates, panelFitProps, yearRange, weekdayHeadings, firstDayOfWeek, disableWeekends, weekendDays, initialTime, disabledItems, isoWeek\n * @uib.layout.picker.icon calendar-outline\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_DATE_TIME#INVALID_SET, NOW_DATE_TIME#VALUE_SET, NOW_DATE_TIME#INPUT, NOW_DATE_TIME#ENTER_KEYDOWN, NOW_DATE_TIME#OPENED_SET, NOW_DATE_TIME#ITEMS_SET, NOW_DATE_TIME#FOOTER_ACTION_CLICKED\n */\ncreateEnhancedElement('now-date-time', {\n\tproperties: {\n\t\t/**\n\t\t * When true, indicates that the calendar is open.\n\t\t * By default, this value automatically updates when the user opens or closes the calendar.\n\t\t * Use the `manage-opened` property to handle the\n\t\t * `NOW_DATE_TIME#OPENED_SET` action manually instead.\n\t\t * @type {boolean}\n\t\t * @uib.description Flag that indicates whether the calendar is open (true) or closed (false).\n\t\t */\n\t\topened: {\n\t\t\tdefault: false,\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * When true, overrides automatic updates to the `opened` property.\n\t\t * An action with type `NOW_DATE_TIME#OPENED_SET` is dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the opened property. Use the opened set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageOpened: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Type of calendar to use with the form field.\n\t\t * - `date`: Calendar allows the user to select the month, day, and year, such as `2024-01-26`.\n\t\t * - `date-time`: Calendar allows the user to select the month, day, year, and time, such as `2024-01-26 23:59:59`.\n\t\t * - `time`: Calendar allows the user to select the time, such as `23:59:59`.\n\t\t * - `month`: Calendar allows the user to select the month and year, such as `2024-01`.\n\t\t * - `year`: Calendar allows the user to select the year, such as `2024`.\n\t\t * - `week-year`: Calendar allows the user to select the week and year, such as `4-2024`. The values for weeks are 1 - 52.\n\t\t * - `quarter`: Calendar allows the user to select the quarter and year, such as `2024-Q1`.\n\t\t * @type {('date'|'date-time'|'time'|'month'|'year'|'week-year'|'quarter')}\n\t\t * @uib.description Type of calendar to use with the form field.\n\t\t */\n\t\ttype: {\n\t\t\tdefault: 'date',\n\t\t\tschema: typesSchema,\n\t\t},\n\t\t/**\n\t\t * The items used to populate the calendar.\n\t\t *\n\t\t * Make public when 'custom' calendar type is supported.\n\t\t * @type {[]}\n\t\t * @private\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * An array of objects representing dates that can't be selected. String values\n\t\t * must be date strings matching the given `format` property.\n\t\t * Accepted value types:\n\t\t * - Value, such as `{value: \"2020/01/01\"}`.\n\t\t * - Interval, such as `{start: \"2020/01/01\", end: \"2020/12/31\"}`.\n\t\t * - Before-interval, such as `{before: \"2020/01/01\"}`.\n\t\t * - After-interval, such as `{after: \"2020/01/01\"}`.\n\t\t *\n\t\t * Setting this field ensures that the relevant disabled\n\t\t * date items are shown in the disable state and are not\n\t\t * selectable when they are within the visible interval of the calendar.\n\t\t * If a disabled value is entered into the input field, and error message is displayed.\n\t\t * @type {Array.<({value: Date}|{start: Date, end: Date}|{before: Date}|{after: Date})>}\n\t\t * @uib.description Array of objects representing dates that can't be selected. These dates must be string values that match the specified `format` property.\n\t\t */\n\t\tdisabledItems: {\n\t\t\tdefault: [],\n\t\t\tschema: disabledItemsSchema,\n\t\t},\n\t\t/**\n\t\t * Sets the input size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.description Sets the input size.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Name of the input field. Dispatched along with the field value\n\t\t * when a user interacts with the field.\n\t\t * @type {string}\n\t\t * @uib.label Identifier\n\t\t * @uib.description Name of the input field.\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Value of the input field. Unless the input field has pre-populated data,\n\t\t * leave this property empty.\n\t\t * @type {string}\n\t\t * @uib.description Value of the input field. Unless the input field has pre-populated data, leave this property empty.\n\t\t */\n\t\tvalue: {default: '', manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, overrides automatic updates to the `value` property.\n\t\t * An action with type `NOW_DATE_TIME#VALUE_SET` is dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the value property. Use the value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValue: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If set, an information icon with popover text appears next to the field\n\t\t * label to display help text to the user.\n\t\t * Use plain text to allow for translation.\n\t\t * If you don't want to add helper content, leave this property empty.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.description If set, an information icon with popover text appears next to the field label to display help text to the user. Use plain text to allow for translation. If you don't want to add helper content, leave this property empty.\n\t\t * @uib.fieldType string\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * When true, the required indicator is hidden. Use this for\n\t\t * forms where most fields are required along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, the required indicator is hidden. Use this for forms where most fields are required along with the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the field is in an incorrect state,\n\t\t * which is reflected in the field display.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, indicates that the field is in an incorrect state, which is reflected in the field display.\n\t\t */\n\t\tinvalid: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, overrides automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_DATE_TIME#INVALID_SET` is dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Required. Label describing the overall purpose of the input field.\n\t\t * @type {string}\n\t\t * @uib.description Label describing the overall purpose of the select field.\n\t\t * @uib.defaultValue Select date\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, indicates that the user is not required to set a date-time value\n\t\t * in order to complete the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to indicate that the field is optional.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the user must set a date-time value in order to\n\t\t * complete the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to indicate that the field is required.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Required. Format of the date and time input value. Available formats are based on the Unicode Technical Standard (UTS).\n\t\t * For information on UTS and other supported format characters, see the [`date-fns` library](https://date-fns.org/v2.28.0/docs/format).\n\t\t * @type {string}\n\t\t * @uib.description Format of the date and time input value. Based on the Unicode Technical Standard (UTS).\n\t\t * @uib.label Format pattern\n\t\t */\n\t\tformat: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Object containing keys that reference specific HTML elements within the\n\t\t * component. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value(s). These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'input' key corresponds to the inner html `<input>` in\n\t\t * now-date-time. For properties and accepted values, see [WAI-ARIA - input](https://www.w3.org/TR/wai-aria-1.2/#input).\n\t\t * The 'panel' key corresponds to the date/time picker panel\n\t\t * in now-date-time. For properties and accepted values, see\n\t\t * [WAI-ARIA Date Picker Combobox Example](https://www.w3.org/WAI/ARIA/apg/example-index/combobox/combobox-datepicker.html).\n\t\t * Note: To enforce accessibility standards, the `role` key is not configurable.\n\t\t * @type {{ 'input': {'aria-*': string}, 'panel': {'aria-*': string} }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.defaultValue {\"panel\": {\"aria-label\": \"Calendar\"}}\n\t\t * @uib.description ARIA properties that are set on inner html. See https://www.w3.org/WAI/ARIA/apg/example-index/combobox/combobox-datepicker.html for properties and accepted values.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tinput: configAriaLabelSchema,\n\t\t\t\t\tpanel: {...configAriaLabelSchema, required: ['aria-label']},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the user cannot interact with the field\n\t\t * or change its value and the field appears unavailable.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to prevent the user from interacting with the field or changing its value.\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the focus is automatically placed inside the input\n\t\t * on page load.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-focus\n\t\t * @uib.description Select to automatically place the focus inside the input on page load.\n\t\t */\n\t\tautofocus: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Hint text displayed in the input when the user has not yet entered a value. When a placeholder is not provided, the component uses the format as the placeholder.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder text\n\t\t * @uib.description Placeholder text for the input field that helps the user understand what input is expected.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field.\n\t\t * @type {boolean}\n\t\t * @uib.label Read Only\n\t\t * @uib.description Select to make the field read-only and prevent users from modifying the value.\n\t\t */\n\t\treadonly: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Array of inline alert messages that display below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that display below the field.\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {default: [], schema: messagesSchema},\n\t\t/**\n\t\t * When true and `type` is `'date'`, the calendar doesn't show dates outside of the\n\t\t * displayed month.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide adjacent months\n\t\t * @uib.description When true and `type` is `'date'`, the calendar doesn't show dates outside the displayed month.\n\t\t */\n\t\thideAdjacentDates: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Array of objects that define the buttons that appear in the calendar footer. You\n\t\t * can define up to two buttons, set from right to left.\n\t\t *\n\t\t * If defined, overrides `showDefaultFooterActions`. User is responsible\n\t\t * for setting the `opened` property in response to `action.clickActionType`.\n\t\t *\n\t\t * The keys of each object are properties for `now-button`. See\n\t\t * `now-button` for more information about these properties.\n\t\t * @type {{ label: string, variant: string, disabled: boolean, bare: boolean, tooltipContent: string, clickActionType: string, configAria: object, closeCalendar: boolean}[]}\n\t\t * @uib.description Array of objects that define the buttons that appear in the calendar footer.\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"label\" }\n\t\t */\n\t\tfooterActions: {\n\t\t\tdefault: [],\n\t\t\tschema: footerActionsSchema,\n\t\t},\n\t\t/**\n\t\t * When true, shows the default footer actions.\n\t\t * This property is always overridden by the `footerActions` property.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to show default footer actions.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tshowDefaultFooterActions: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Keys to set to configure the calendar panel.\n\t\t * Use these keys to position and scale the panel relative to the panel target.\n\t\t *\n\t\t * Valid keys:\n\t\t *  - position: Array of possible positions in which to place the panel relative to its target. Default: `[\"bottom-start top-start\",\"top-start bottom-start\",\"bottom-end top-end\",\"top-end bottom-end\"]`\n\t\t *  - offset: Number of pixels to offset the panel from its associated trigger.\n\t\t *\n\t\t * @type {{ position: Array<{target: string, content: string}> }}\n\t\t * @uib.description Keys to set to configure the calendar picker.\n\t\t */\n\t\tpanelFitProps: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tposition: {type: 'array', items: {type: 'string'}},\n\t\t\t\t\toffset: {\n\t\t\t\t\t\toneOf: [{type: 'number'}, {type: 'array', items: {type: 'number'}}],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the first day of the week on the calendar panel.\n\t\t * Value can range from `0` (Sunday) to `6` (Saturday).\n\t\t * Only applies when the `format` property is `day` or `week` and the\n\t\t * `type` property is `date` or `date-time`.\n\t\t * @type {(0|1|2|3|4|5|6)}\n\t\t * @uib.description Sets the first day of the week on the calendar panel.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Sunday\", \"value\": \"0\"}, {\"label\": \"Monday\", \"value\": \"1\"}, {\"label\": \"Tuesday\", \"value\": \"2\"}, {\"label\": \"Wednesday\", \"value\": \"3\"}, {\"label\": \"Thursday\", \"value\": \"4\"}, {\"label\": \"Friday\", \"value\": \"5\"}, {\"label\": \"Saturday\", \"value\": \"6\"}]\n\t\t */\n\t\tfirstDayOfWeek: {\n\t\t\tdefault: 0,\n\t\t\tschema: {type: 'integer', enum: [0, 1, 2, 3, 4, 5, 6]},\n\t\t},\n\t\t/**\n\t\t * When true, removes the footer from the calendar panel.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to remove the footer from the calendar panel.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\thideFooter: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * When true and type is `week-year`, the date calculation accounts for an ISO week.\n\t\t * Defaults the first day of the week to Monday.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to have the date calculation account for an ISO week. Defaults the first day of the week to Monday.\n\t\t * @uib.defaultValue false\n\t\t * @uib.label ISO Calendar\n\t\t */\n\t\tisoWeek: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, weekend days can't be selected on the `'date'` calendar type. Weekend days are\n\t\t * determined by the `weekendDays` property.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to turn off weekend days. Weekend days are determined by the `weekendDays` property.\n\t\t */\n\t\tdisableWeekends: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Sets which days are weekend days. Defaults to `6` (Saturday) and `0` (Sunday).\n\t\t * @type {number[]}\n\t\t * @uib.description Sets which days are weekend days. Defaults to `6` (Saturday) and `0` (Sunday).\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Saturday and Sunday\", \"value\": \"[6,0]\"}, {\"label\": \"Friday and Saturday\", \"value\": \"[5,6]\"}]\n\t\t */\n\t\tweekendDays: {\n\t\t\tdefault: [6, 0],\n\t\t},\n\t\t/**\n\t\t * Sets the locale value.\n\t\t * Valid values are the locale objects in the date-fns library.\n\t\t * @type {(object|string)}\n\t\t */\n\t\tlocale: {\n\t\t\tschema: {type: ['object', 'string']},\n\t\t},\n\t\t/**\n\t\t * Sets the length of the weekday headings.\n\t\t * Valid values:\n\t\t * - short: Two-character headings, such as Su, Mo, Tu, We, and Th.\n\t\t * - narrow: One-character headings, such as S, M, T, W, and T.\n\t\t * @type {('short'|'narrow')}\n\t\t * @uib.label Day of week headings\n\t\t * @uib.description Configures the length of the weekday headings.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Short\", \"value\": \"short\"}, {\"label\": \"Narrow\", \"value\": \"narrow\"}]\n\t\t * @uib.defaultValue narrow\n\t\t */\n\t\tweekdayHeadings: {\n\t\t\tdefault: 'narrow',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['short', 'narrow'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configures the initial time for the date-time component format.\n\t\t * @type {string}\n\t\t * @uib.label Default time\n\t\t * @uib.description Configures the initial time for the date-time format.\n\t\t */\n\t\tinitialTime: {\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text alignment within an input field.\n\t\t * - `start`: Align the text to the start of the input field.\n\t\t * - `center`: Align the text to the center of the input field.\n\t\t * - `end`: Align the text to the end of the input field.\n\t\t * Default:  `start`.\n\t\t * @type {('start'|'center'|'end')}\n\t\t * @uib.label Text align\n\t\t * @uib.description Text alignment within an input field.\n\t\t * @uib.defaultValue start\n\t\t */\n\t\talign: {\n\t\t\tdefault: 'start',\n\t\t\tschema: {type: 'string', enum: ['start', 'center', 'end']},\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Sets whether the layout is vertical (stacked view) or horizontal (inline view).\n\t\t * In a horizontal layout, a typical component has three containers: label, form-field, and slotted content (also known as label end).\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, fields, and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field, and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, fields, and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Configures the label value of the default footer action buttons.\n\t\t * Allows for the use of default footer action functionality with\n\t\t * custom label names.\n\t\t * @type {string}\n\t\t * @uib.label Default Footer Action Labels\n\t\t * @uib.description Allows for custom naming of default footer action buttons.\n\t\t * @uib.fieldType json\n\t\t */\n\t\tdefaultFooterActionLabels: {\n\t\t\tdefault: {apply: 'Apply', cancel: 'Cancel'},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Indicates whether the user has manually set the date within\n\t\t * the date-time input field.\n\t\t * @private\n\t\t */\n\t\tisDateManuallySet: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Configures the range of years visible in the calendar.\n\t\t * Can either be relative to the current year, or an absolute range.\n\t\t * The default range is 50 years before and after the current year.\n\t\t * Note: years can be input in the field even if outside of this range.\n\t\t * @type {{start: number, end: number, relative: boolean}}\n\t\t * @uib.description Configures the range of years visible in the calendar. Can either be relative to the current year, or an absolute range. Note: years can be input in the field even if outside of this range.\n\t\t */\n\t\tyearRange: {\n\t\t\tdefault: {start: -50, end: 50, relative: true},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tstart: {type: 'number'},\n\t\t\t\t\tend: {type: 'number'},\n\t\t\t\t\trelative: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for field decorators on the inline-start side\n\t\t * of the input field.\n\t\t */\n\t\tstart: {},\n\t\t/**\n\t\t * Slot for field decorators on the inline-end side\n\t\t * of the input field.\n\t\t */\n\t\tend: {},\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of the label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tinitialState: {\n\t\tactiveInput: null,\n\t\tshouldFocusCalendar: false,\n\t\tprevValue: null,\n\t\tpositionTarget: null,\n\t\tprefix: 'NOW_DATE_TIME#',\n\t\tmode: 'standard',\n\t},\n\tactionHandlers: {\n\t\t...actions,\n\t\t['PRIVATE#FOCUS_CALENDAR']({\n\t\t\thost,\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t}) {\n\t\t\tconst {opened} = properties;\n\t\t\tif (opened) {\n\t\t\t\tfocusCalendar(host, {\n\t\t\t\t\tstate: {...state, shouldFocusCalendar: true},\n\t\t\t\t\tupdateState,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tupdateState({shouldFocusCalendar: true});\n\t\t\t\tdispatch('NOW_DATE_TIME#OPENED_SET', {value: true});\n\t\t\t}\n\t\t},\n\t\t['PRIVATE#VALIDATE']({\n\t\t\tcontext,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\tupdateProperties,\n\t\t\tstate,\n\t\t}) {\n\t\t\tconst {disabled, readonly, type, format, name} = properties;\n\n\t\t\tconst {prefix} = state;\n\t\t\tlet errors = [];\n\n\t\t\tlet {fieldValue, initiator} = action.payload;\n\n\t\t\t// on bootstrap, use the values from properties\n\t\t\t// empty string on boostrap should be seen as undefined\n\t\t\tif (initiator === COMPONENT_DOM_TREE_READY || initiator === public_api) {\n\t\t\t\tfieldValue = properties?.value || undefined;\n\t\t\t}\n\n\t\t\tlet {valid, errorId} = checkForErrors(fieldValue, FORMAT_MATCH_ERROR_ID, {\n\t\t\t\tcontext,\n\t\t\t\tproperties,\n\t\t\t\tupdateProperties,\n\t\t\t});\n\t\t\tlet isValueDisabled;\n\t\t\tif (valid) {\n\t\t\t\tconst {isDisabled} = checkForDisabledDates(\n\t\t\t\t\tfieldValue || properties?.value,\n\t\t\t\t\tUNAVAILABLE_ERROR_ID,\n\t\t\t\t\t{context, properties, updateProperties},\n\t\t\t\t);\n\t\t\t\tisValueDisabled = isDisabled;\n\t\t\t\tif (isDisabled) errorId = UNAVAILABLE_ERROR_ID;\n\t\t\t}\n\t\t\tif (errorId) errors.push(errorId);\n\n\t\t\tlet value = !(readonly || disabled);\n\t\t\tif (!(readonly || disabled)) {\n\t\t\t\tconst {errorId: configErrorID, valid: configValid} =\n\t\t\t\t\tcheckIfConfigurationIsValid({\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tproperties,\n\t\t\t\t\t\tupdateProperties,\n\t\t\t\t\t});\n\n\t\t\t\tif (configErrorID) errors.push(configErrorID);\n\t\t\t\tvalue = value && (isValueDisabled || !valid || !configValid);\n\t\t\t} else {\n\t\t\t\tvalue = value && (isValueDisabled || !valid);\n\t\t\t}\n\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: `${prefix}INVALID_SET`,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname: name ?? `input-${properties.nowId}`,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tfieldValue,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\terrorId: errors,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Automatically updates when the user opens or closes the visual calendar picker.\n\t\t * To override the default behavior and handle the\n\t\t * `NOW_DATE_TIME#OPENED_SET` action manually, set the `manage-opened` property.\n\t\t * @type {boolean}\n\t\t */\n\t\t'NOW_DATE_TIME#OPENED_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {value: {type: 'boolean'}},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the component's visual date items are set.\n\t\t * The payload is an array containing one or more arrays, each representing\n\t\t * a \"row\" on the date grid. Each row contains items corresponding to\n\t\t * a given date item.\n\t\t * The payload key `value` contains the array of date grid rows and items.\n\t\t * To override the default behavior and handle this action manually,\n\t\t * set the `manage-selected-item` property.\n\t\t * @type {{value: []}}\n\t\t */\n\t\t'NOW_DATE_TIME#ITEMS_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {value: itemsSchema},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user selects a footer action item. The payload\n\t\t * includes a reference to the selected item and action. To override the action type,\n\t\t * set the `action.clickActionType` property.\n\t\t * @type {{action: Object}}\n\t\t */\n\t\t'NOW_DATE_TIME#FOOTER_ACTION_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\taction: {\n\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tvariant: {\n\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t\t'primary',\n\t\t\t\t\t\t\t\t\t\t\t'primary-positive',\n\t\t\t\t\t\t\t\t\t\t\t'primary-negative',\n\t\t\t\t\t\t\t\t\t\t\t'secondary',\n\t\t\t\t\t\t\t\t\t\t\t'secondary-positive',\n\t\t\t\t\t\t\t\t\t\t\t'secondary-negative',\n\t\t\t\t\t\t\t\t\t\t\t'tertiary',\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tlabel: {type: 'string'},\n\t\t\t\t\t\t\t\t\tbare: {type: 'boolean'},\n\t\t\t\t\t\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\t\t\t\t\t\ttooltipContent: {type: 'string'},\n\t\t\t\t\t\t\t\t\tclickActionType: {type: 'string'},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{type: 'object', properties: {isDefault: {const: true}}},\n\t\t\t\t\t\t\t{type: 'object', properties: {isToday: {const: true}}},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field.\n\t\t * The payload contains the following properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: Boolean. Value of the `invalid` property, which is based on\n\t\t *   the values of the `required` and `format` properties.\n\t\t * - `fieldValue`: String. Value entered in the field.\n\t\t * - `type`: String. Value of the `type` property.\n\t\t * - `format`: String. Value of the `format` property.\n\t\t * - `errorId`: String. Value of the `errorId` property.\n\t\t *\n\t\t * To override the default behavior and\n\t\t * handle this action manually, set the `manageInvalid` property.\n\t\t * @type {{name: string, value: boolean, fieldValue: string, type: string, format: string, errorId: string}}\n\t\t */\n\t\t'NOW_DATE_TIME#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t\terrorId: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field upon manually\n\t\t * entering a date, or when the field value changes via a calendar selection.\n\t\t * Only dispatches when the value is valid.\n\t\t * The payload contains the following properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: String. Value entered in the field.\n\t\t * - `format`: String. Value of the `format` property.\n\t\t * - `type`: String. Value of the `type` property.\n\t\t * - `date`: The Date() constructor of the value.\n\t\t * - `isoDate`: String. The ISO formatted value.\n\t\t *\n\t\t * To override the default behavior and\n\t\t * handle this action manually, set the `manage-value` property.\n\t\t * @type {{name: string, value: string, format: string, date: Date, isoDate: string}}\n\t\t */\n\t\t'NOW_DATE_TIME#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t\tdate: {type: 'object'},\n\t\t\t\t\tisoDate: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user enters data in a field by typing or\n\t\t * pasting text. The system does not validate the content or update\n\t\t * the `value` property.\n\t\t * The payload contains the following properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `data`: String. Value entered in the field that caused the event to fire.\n\t\t * - `fieldValue`: String. Current value of the field when the event fired.\n\t\t * @type {{name: string, data: string, fieldValue: string, format: string, date: Date, isoDate: string, valid: boolean}}\n\t\t */\n\t\t'NOW_DATE_TIME#INPUT': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tdata: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user presses the Enter key while focus is inside\n\t\t * the input.\n\t\t * @type {{name: string, value: string, format: string, date: Date, isoDate: string, valid: boolean}}\n\t\t */\n\t\t'NOW_DATE_TIME#ENTER_KEYDOWN': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\tconst focusTarget = host.shadowRoot\n\t\t\t\t\t\t.querySelector('now-input-date-time.now-date-time-input')\n\t\t\t\t\t\t.shadowRoot.querySelector('now-input.now-input-date-time-input')\n\t\t\t\t\t\t.shadowRoot.querySelector('input.now-input-native');\n\n\t\t\t\t\tif (focusTarget) {\n\t\t\t\t\t\tfocusTarget.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: deferBehavior,\n\t\t\toptions: {\n\t\t\t\tevents: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'mouseenter',\n\t\t\t\t\t\ttrigger: 'now-input-date-time',\n\t\t\t\t\t\ttarget: 'now-date-time-calendar',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t],\n\tstyles,\n\tview,\n});\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport default function startOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var cleanDate = toDate(dirtyDate);\n  var date = new Date(0);\n  date.setFullYear(cleanDate.getFullYear(), 0, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\n\nexport default function startOfHour(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMinutes(0, 0, 0);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\n\nexport default function startOfMinute(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setSeconds(0, 0);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\n\nexport default function startOfSecond(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMilliseconds(0);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n  date.setDate(date.getDate() + diff);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var month = date.getMonth();\n  date.setFullYear(date.getFullYear(), month + 1, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfQuarter(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var currentMonth = date.getMonth();\n  var month = currentMonth - currentMonth % 3 + 3;\n  date.setMonth(month, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\n\nexport default function endOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  date.setFullYear(year + 1, 0, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\n\nexport default function endOfHour(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMinutes(59, 59, 999);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\n\nexport default function endOfMinute(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setSeconds(59, 999);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\n\nexport default function endOfSecond(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMilliseconds(999);\n  return date;\n}","import {\n\tstartOfDay,\n\tstartOfWeek,\n\tstartOfMonth,\n\tstartOfQuarter,\n\tstartOfYear,\n\tstartOfHour,\n\tstartOfMinute,\n\tstartOfSecond,\n\tendOfWeek,\n\tendOfMonth,\n\tendOfQuarter,\n\tendOfYear,\n\tendOfHour,\n\tendOfMinute,\n\tendOfSecond,\n} from 'date-fns';\n\n// date-fns methods exposed as object key names\nexport const dateFnsLookUp = {\n\tstartOfDay,\n\tstartOfWeek,\n\tstartOfMonth,\n\tstartOfQuarter,\n\tstartOfYear,\n\tstartOfHour,\n\tstartOfMinute,\n\tstartOfSecond,\n\tendOfWeek,\n\tendOfMonth,\n\tendOfQuarter,\n\tendOfYear,\n\tendOfHour,\n\tendOfMinute,\n\tendOfSecond,\n};\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\n\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","import {PresetTypes, PresetKeywords} from '@servicenow/library-date-time';\nimport {t} from 'sn-translate';\nimport {dateFnsLookUp} from './date-fns-lookup';\nimport {\n\tCUSTOM_PRESET_OPTION,\n\tUNGROUPED_GROUP_LABEL,\n\tpresetTranslations,\n} from '../utils/constants';\nimport {\n\tformatTZ,\n\tlocaleContext,\n\ttimezoneContext,\n} from '@servicenow/library-date-time';\nimport {\n\tsub,\n\tadd,\n\taddSeconds,\n\taddMinutes,\n\taddHours,\n\tendOfDay,\n\tendOfWeek,\n\tendOfQuarter,\n\tstartOfDay,\n\tstartOfWeek,\n\tstartOfMonth,\n\tstartOfQuarter,\n\tstartOfYear,\n\tendOfMonth,\n\tendOfYear,\n} from 'date-fns';\n\nconst {NEXT, LAST, CURRENT, TO_DATE} = PresetKeywords;\n\nconst {\n\tSTART,\n\tEND,\n\tDAY,\n\tDAYS,\n\tWEEK,\n\tWEEKS,\n\tMONTH,\n\tMONTHS,\n\tQUARTER,\n\tQUARTERS,\n\tYEAR,\n\tYEARS,\n\tHOUR,\n\tHOURS,\n\tMINUTE,\n\tMINUTES,\n\tSECOND,\n\tSECONDS,\n} = PresetTypes;\n\nimport {DateTypes} from '@servicenow/library-date-time';\nimport {addToDate, getGroupsCount, getHoistedPreset} from '../utils/helper';\n\nexport default class Presets {\n\tstatic PRESET_DEFAULT_HEIGHT = 200;\n\tstatic DEFAULT_PRESETS = [\n\t\t{\n\t\t\tkeyword: 'Last',\n\t\t\tduration: 7,\n\t\t\tpresetType: 'days',\n\t\t\torder: 1,\n\t\t\tgroupLabel: t('Days'),\n\t\t},\n\t\t{\n\t\t\tkeyword: 'Last',\n\t\t\tpresetType: 'month',\n\t\t\torder: 2,\n\t\t\tgroupLabel: t('Months'),\n\t\t},\n\t\t{\n\t\t\tkeyword: 'Last',\n\t\t\tduration: 3,\n\t\t\tpresetType: 'months',\n\t\t\torder: 3,\n\t\t\tgroupLabel: t('Months'),\n\t\t},\n\t\t{\n\t\t\tkeyword: 'Last',\n\t\t\tduration: 6,\n\t\t\tpresetType: 'months',\n\t\t\torder: 4,\n\t\t\tgroupLabel: t('Months'),\n\t\t},\n\t\t{\n\t\t\tkeyword: 'Last',\n\t\t\tpresetType: 'year',\n\t\t\torder: 5,\n\t\t\tgroupLabel: t('Years'),\n\t\t},\n\t];\n\n\tconstructor() {\n\t\tthis.customLabelPositionIsBottom = false;\n\t\tthis.groups = {};\n\t\tthis.showGroups = false;\n\t\tthis.otherGroups = [];\n\t\tthis.presetItems = [];\n\t}\n\n\tbyOrderSort(a, b) {\n\t\tif (a.order < b.order) {\n\t\t\treturn -1;\n\t\t} else if (a.order > b.order) {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tsortPresets() {\n\t\t//sort by group\n\t\tif (this.showGroups) {\n\t\t\tObject.keys(this.groups).forEach((group) => {\n\t\t\t\tthis.groups[group].sort(this.byOrderSort);\n\t\t\t});\n\t\t\tthis.noGroup.sort(this.byOrderSort);\n\t\t} else {\n\t\t\tthis.presetItems.sort(this.byOrderSort);\n\t\t}\n\t}\n\n\tsetState(state) {\n\t\tlet tempPresets =\n\t\t\tstate.properties?.presets ?? state.properties?.customPresets;\n\t\tconst {showGroups} = state.properties;\n\t\tif (tempPresets.length === 0) tempPresets = Presets.DEFAULT_PRESETS;\n\t\tthis.customLabelPositionIsBottom =\n\t\t\tstate.properties.customPresetPositionBottom || false;\n\t\tthis.presetItems = this.customLabelPositionIsBottom\n\t\t\t? [...tempPresets, {...CUSTOM_PRESET_OPTION}]\n\t\t\t: [{...CUSTOM_PRESET_OPTION}, ...tempPresets];\n\t\tthis.state = state;\n\t\tthis.selectedIndex = state.selectedPresetIndex;\n\t\tthis.lastFocusItemIndex = state.lastFocusItemIndex ?? -1;\n\t\tthis.selectedGroupLabel = state.selectedGroupLabel;\n\t\tthis.showGroups = showGroups;\n\t\tif (this.showGroups) this.setGroups(this.presetItems);\n\t\tthis.sortPresets();\n\t}\n\n\tsetGroups() {\n\t\tif (!this.presetItems) return;\n\t\tthis.groups = {};\n\t\tthis.noGroup = [];\n\n\t\tthis.presetItems.forEach((item) => {\n\t\t\tif (!item.groupLabel) {\n\t\t\t\tif (!this.groups[UNGROUPED_GROUP_LABEL]) {\n\t\t\t\t\tthis.groups[UNGROUPED_GROUP_LABEL] = [];\n\t\t\t\t}\n\t\t\t\tthis.groups[UNGROUPED_GROUP_LABEL].push(item);\n\t\t\t} else {\n\t\t\t\tif (!this.groups[item.groupLabel]) this.groups[item.groupLabel] = [];\n\t\t\t\tthis.groups[item.groupLabel].push(item);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetSelected(item, index, selectedPresetIndex, lastFocusItemIndex) {\n\t\treturn Object.assign(item, {\n\t\t\tindex,\n\t\t\tselected: index === selectedPresetIndex,\n\t\t\tfocused: index === lastFocusItemIndex,\n\t\t});\n\t}\n\n\tsetDispatch(dispatch) {\n\t\tthis.dispatch = dispatch;\n\t}\n\n\tgetPresetItemIndex(item) {\n\t\tlet presetListFromGroups = [];\n\t\tfor (const group in this.groups) {\n\t\t\tpresetListFromGroups = [...presetListFromGroups, ...this.groups[group]];\n\t\t}\n\t\tif (item.presetType === 'business') {\n\t\t\treturn presetListFromGroups.findIndex(\n\t\t\t\t(p) =>\n\t\t\t\t\tp.label === item.label &&\n\t\t\t\t\tp.startDate === item.startDate &&\n\t\t\t\t\tp.endDate === item.endDate,\n\t\t\t);\n\t\t}\n\t\treturn presetListFromGroups.findIndex(\n\t\t\t(p) =>\n\t\t\t\tp.keyword === item.keyword &&\n\t\t\t\tp.presetType === item.presetType &&\n\t\t\t\tp.duration === item.duration,\n\t\t);\n\t}\n\n\tgetGroupItems(\n\t\tgroup,\n\t\tpresets,\n\t\tselectedIndex,\n\t\tmatchingGroupLabel,\n\t\tlastFocusItemIndex,\n\t\tsetSize = null,\n\t\tgroupStartIndex = null,\n\t) {\n\t\treturn presets.map((item, index) => {\n\t\t\tconst presetItemIndex = this.getPresetItemIndex(item);\n\t\t\tconst presetItem = Object.assign(item, {\n\t\t\t\tindex,\n\t\t\t\tselected: index === selectedIndex && matchingGroupLabel,\n\t\t\t\tfocused: presetItemIndex === lastFocusItemIndex,\n\t\t\t\tsetSize: setSize,\n\t\t\t\tposition: groupStartIndex === null ? null : groupStartIndex + index,\n\t\t\t\tgroup: group,\n\t\t\t});\n\t\t\treturn this.getItem(presetItem);\n\t\t});\n\t}\n\tgetItem(item) {\n\t\tconst preset = this.formatPreset(item);\n\t\tconst {selected, focused, setSize, position} = item;\n\t\tconst isCustomKeyword = item.keyword === 'Custom';\n\t\tconst isBusinessType = item.presetType === 'business';\n\t\treturn (\n\t\t\t<div\n\t\t\t\trole=\"option\"\n\t\t\t\ttabindex={focused ? '0' : '-1'}\n\t\t\t\ton-click={this.handleClick(item)}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-date-time-presets-listitem': true,\n\t\t\t\t\t'is-selected': selected,\n\t\t\t\t}}\n\t\t\t\taria-selected={selected ? 'true' : 'false'}\n\t\t\t\taria-setsize={setSize}\n\t\t\t\taria-posinset={position}\n\t\t\t\taria-label={\n\t\t\t\t\tisCustomKeyword ? t('Custom, focus will move to current date') : null\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{selected ? (\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\ticon=\"check-outline\"\n\t\t\t\t\t\tclassName=\"now-date-time-presets-checkmark\"\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<div className=\"now-date-time-presets-checkmark\" />\n\t\t\t\t)}\n\t\t\t\t<div>{isBusinessType ? item.label : preset}</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tgetCustomLabelIndex = () => {\n\t\treturn this.customLabelPositionIsBottom ? this.presetItems.length - 1 : 0;\n\t};\n\n\tgetActivePreset(activePreset) {\n\t\tconst {keyword, presetType, duration, label} = activePreset;\n\t\tlet activePresetIndex, activePresetGroup;\n\n\t\tif (this.showGroups) {\n\t\t\tfor (const group of Object.keys(this.groups)) {\n\t\t\t\tconst groupPresets = this.groups[group];\n\t\t\t\tif (groupPresets.length > 0) {\n\t\t\t\t\tif (presetType === 'business') {\n\t\t\t\t\t\tactivePresetIndex = groupPresets.findIndex(\n\t\t\t\t\t\t\t(p) => p.label === label,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactivePresetIndex = groupPresets.findIndex(\n\t\t\t\t\t\t\t(p) =>\n\t\t\t\t\t\t\t\tp.keyword === keyword &&\n\t\t\t\t\t\t\t\tp.presetType === presetType &&\n\t\t\t\t\t\t\t\tp.duration === duration,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (activePresetIndex > -1) {\n\t\t\t\t\t\tactivePresetGroup = groupPresets[activePresetIndex].group;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (presetType === 'business') {\n\t\t\t\tactivePresetIndex = this.presetItems?.findIndex(\n\t\t\t\t\t(p) => p.label === label,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tactivePresetIndex = this.presetItems?.findIndex(\n\t\t\t\t\t(p) =>\n\t\t\t\t\t\tp.keyword === keyword &&\n\t\t\t\t\t\tp.presetType === presetType &&\n\t\t\t\t\t\tp.duration === duration,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (activePresetIndex === -1 || keyword === CUSTOM_PRESET_OPTION.keyword) {\n\t\t\treturn {\n\t\t\t\tactivePresetIndex,\n\t\t\t\tactivePresetGroup,\n\t\t\t\tfocusItemIndex: this.getCustomLabelIndex(),\n\t\t\t\tpresetValueStart: null,\n\t\t\t\tpresetValueEnd: null,\n\t\t\t};\n\t\t}\n\n\t\tlet selectedPreset;\n\n\t\tif (this.showGroups) {\n\t\t\tselectedPreset = this.groups[activePresetGroup][activePresetIndex];\n\t\t} else {\n\t\t\tselectedPreset = this.presetItems[activePresetIndex];\n\t\t}\n\n\t\tlet presetValueStart, presetValueEnd;\n\n\t\tif (presetType === 'business') {\n\t\t\tpresetValueStart = selectedPreset.startDate;\n\t\t\tpresetValueEnd = selectedPreset.endDate;\n\t\t} else {\n\t\t\tconst {[localeContext]: locale, [timezoneContext]: timezone} =\n\t\t\t\tthis.state.context;\n\n\t\t\tconst args = {\n\t\t\t\tdate: new Date(),\n\t\t\t\t...selectedPreset,\n\t\t\t};\n\t\t\tpresetValueStart = this.getStartDate(args);\n\t\t\tpresetValueStart = formatTZ(\n\t\t\t\tpresetValueStart,\n\t\t\t\tthis.state.properties.format,\n\t\t\t\t{locale, timezone},\n\t\t\t);\n\t\t\tpresetValueEnd = this.getEndDate(args);\n\t\t\tpresetValueEnd = formatTZ(presetValueEnd, this.state.properties.format, {\n\t\t\t\tlocale,\n\t\t\t\ttimezone,\n\t\t\t});\n\t\t}\n\t\tlet focusItemIndex = this.showGroups\n\t\t\t? this.getPresetItemIndex(selectedPreset)\n\t\t\t: activePresetIndex;\n\t\treturn {\n\t\t\tactivePresetIndex,\n\t\t\tfocusItemIndex,\n\t\t\tactivePresetGroup,\n\t\t\tpresetValueStart,\n\t\t\tpresetValueEnd,\n\t\t};\n\t}\n\n\tgetAll() {\n\t\tif (!this.presetItems) return null;\n\t\tif (this.showGroups && Object.keys(this.groups).length !== 0) {\n\t\t\tconst setSize = getGroupsCount(this.groups);\n\t\t\tlet groupStartIndex = 1;\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\tclassName=\"now-m-block-end--lg\"\n\t\t\t\t\taria-label={t('Select preset')}\n\t\t\t\t>\n\t\t\t\t\t{Object.keys(this.groups).map((groupLabel, index) => {\n\t\t\t\t\t\tconst headerId = `grouped-heading-${index}`;\n\t\t\t\t\t\tlet matchingGroupLabel;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!this.selectedGroupLabel &&\n\t\t\t\t\t\t\tgroupLabel === CUSTOM_PRESET_OPTION.groupLabel\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmatchingGroupLabel = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmatchingGroupLabel = this.selectedGroupLabel === groupLabel;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst groupItems = this.getGroupItems(\n\t\t\t\t\t\t\tgroupLabel,\n\t\t\t\t\t\t\tthis.groups[groupLabel],\n\t\t\t\t\t\t\tthis.selectedIndex,\n\t\t\t\t\t\t\tmatchingGroupLabel,\n\t\t\t\t\t\t\tthis.lastFocusItemIndex,\n\t\t\t\t\t\t\tsetSize,\n\t\t\t\t\t\t\tgroupStartIndex,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tgroupStartIndex += this.groups[groupLabel].length;\n\t\t\t\t\t\tif (groupItems.length) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div role=\"group\" aria-labelledby={headerId}>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tid={headerId}\n\t\t\t\t\t\t\t\t\t\tclassName=\"now-date-time-presets-header\"\n\t\t\t\t\t\t\t\t\t\ton-mousedown={(e) => e.preventDefault()}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{groupLabel}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div>{groupItems}</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"now-m-block--lg\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-label={t('Select preset')}\n\t\t\t\t>\n\t\t\t\t\t{this.presetItems.map((item, index) =>\n\t\t\t\t\t\tthis.getItem(\n\t\t\t\t\t\t\tthis.setSelected(\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\tthis.selectedIndex,\n\t\t\t\t\t\t\t\tthis.lastFocusItemIndex,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\tisValid(type) {\n\t\tlet valid = false;\n\t\tObject.keys(PresetTypes).forEach((key) => {\n\t\t\tif (PresetTypes[key] === type) valid = true;\n\t\t});\n\t\treturn valid;\n\t}\n\n\tconvertSingularTypeToPlural(type) {\n\t\tif (type === YEAR) return YEARS;\n\t\tif (type === QUARTER) return QUARTERS;\n\t\tif (type === MONTH) return MONTHS;\n\t\tif (type === WEEK) return WEEKS;\n\t\tif (type === DAY) return DAYS;\n\t\tif (type === HOUR) return HOURS;\n\t\tif (type === MINUTE) return MINUTES;\n\t\tif (type === SECOND) return SECONDS;\n\t\treturn type;\n\t}\n\n\tinitialCap(str = '') {\n\t\tif (str.length === 0) return str;\n\t\tif (str.length === 1) return str.toUpperCase();\n\t\treturn `${str.charAt(0).toUpperCase()}${str.slice(1)}`;\n\t}\n\n\tgetDateFnsFnName(dir, type) {\n\t\treturn `${dir}Of${this.initialCap(type)}`;\n\t}\n\n\tgetStartDate({date, keyword, presetType, duration = 1}) {\n\t\tif (!this.isValid(presetType)) return null;\n\t\tconst dateFnsFunction = this.getDateFnsFnName(\n\t\t\tSTART,\n\t\t\tthis.getSingular(presetType),\n\t\t);\n\t\tconst pt = this.convertSingularTypeToPlural(presetType);\n\t\tswitch (keyword) {\n\t\t\tcase NEXT:\n\t\t\t\tif (pt === QUARTERS) {\n\t\t\t\t\treturn startOfQuarter(addToDate(date, DateTypes.QUARTER, 1));\n\t\t\t\t}\n\t\t\t\tif (pt === WEEKS) {\n\t\t\t\t\treturn startOfWeek(addToDate(date, DateTypes.WEEK_YEAR, 1));\n\t\t\t\t}\n\t\t\t\tif (pt === MONTHS || pt === YEARS) {\n\t\t\t\t\tconst first = pt === MONTHS ? endOfMonth(date) : endOfYear(date);\n\t\t\t\t\tconst start = startOfDay(first);\n\t\t\t\t\treturn add(start, {[DAYS]: 1});\n\t\t\t\t}\n\t\t\t\tif (pt === DAYS) {\n\t\t\t\t\tconst first = startOfDay(date);\n\t\t\t\t\treturn add(first, {[pt]: 1}); // we don't include the current date, so we have to add 1 to the duration\n\t\t\t\t}\n\t\t\t\treturn date;\n\t\t\tcase LAST:\n\t\t\t\t// last day is last day of previous MONTH - NOT today\n\t\t\t\tif (pt === MONTHS || pt === YEARS) {\n\t\t\t\t\tconst first = pt === MONTHS ? startOfMonth(date) : startOfYear(date);\n\t\t\t\t\treturn sub(first, {[pt]: duration});\n\t\t\t\t}\n\t\t\t\tif (pt === DAYS) {\n\t\t\t\t\tconst start = startOfDay(date);\n\t\t\t\t\treturn sub(start, {[pt]: duration - 1}); // we include current date, so we have to reduce duration by 1\n\t\t\t\t}\n\t\t\t\tif (pt === QUARTERS) {\n\t\t\t\t\tconst first = startOfQuarter(date);\n\t\t\t\t\treturn sub(first, {[MONTHS]: duration * 3});\n\t\t\t\t}\n\t\t\t\tif (pt === WEEKS) {\n\t\t\t\t\tconst first = startOfWeek(date);\n\t\t\t\t\treturn sub(first, {[pt]: duration});\n\t\t\t\t}\n\t\t\t\treturn sub(date, {[pt]: duration});\n\t\t\tcase CURRENT:\n\t\t\tcase TO_DATE:\n\t\t\t\treturn dateFnsLookUp[dateFnsFunction](date);\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t}\n\tgetEndDate({date, keyword, presetType, duration = 1}) {\n\t\tif (!this.isValid(presetType)) return null;\n\t\tconst pt = this.convertSingularTypeToPlural(presetType);\n\t\tconst dateFnsFunction = this.getDateFnsFnName(\n\t\t\tEND,\n\t\t\tthis.getSingular(presetType),\n\t\t);\n\t\tswitch (keyword) {\n\t\t\tcase NEXT:\n\t\t\t\tif (pt === WEEKS) {\n\t\t\t\t\treturn endOfWeek(addToDate(date, DateTypes.WEEK_YEAR, duration));\n\t\t\t\t}\n\t\t\t\tif (pt === QUARTERS) {\n\t\t\t\t\treturn endOfQuarter(addToDate(date, DateTypes.QUARTER, duration));\n\t\t\t\t}\n\t\t\t\tif (presetType === SECONDS || presetType === SECOND) {\n\t\t\t\t\treturn addSeconds(date, duration);\n\t\t\t\t}\n\t\t\t\tif (presetType === MINUTES || presetType === MINUTE) {\n\t\t\t\t\treturn addMinutes(date, duration);\n\t\t\t\t}\n\t\t\t\tif (presetType === HOURS || presetType === HOUR) {\n\t\t\t\t\treturn addHours(date, duration);\n\t\t\t\t}\n\t\t\t\tif (pt === MONTHS || pt === YEARS) {\n\t\t\t\t\tconst first = pt === MONTHS ? endOfMonth(date) : endOfYear(date);\n\t\t\t\t\tconst start = add(first, {[DAYS]: 1});\n\t\t\t\t\tconst end = add(start, {[pt]: duration - 1});\n\t\t\t\t\treturn pt === MONTHS ? endOfMonth(end) : endOfYear(end);\n\t\t\t\t}\n\t\t\t\tif (pt === DAYS) {\n\t\t\t\t\tconst end = endOfDay(date);\n\t\t\t\t\treturn add(end, {[pt]: duration});\n\t\t\t\t}\n\t\t\t\treturn add(date, {[presetType]: duration - 1});\n\t\t\tcase LAST:\n\t\t\t\t//End should be last day of previous month\n\t\t\t\tif (pt === MONTHS || pt === YEARS) {\n\t\t\t\t\tconst first = pt === MONTHS ? startOfMonth(date) : startOfYear(date);\n\t\t\t\t\tconst end = endOfDay(first);\n\t\t\t\t\treturn sub(end, {[DAYS]: 1});\n\t\t\t\t}\n\t\t\t\tif (pt === QUARTERS) {\n\t\t\t\t\tconst first = startOfQuarter(date);\n\t\t\t\t\tconst end = endOfDay(first);\n\t\t\t\t\treturn sub(end, {[DAYS]: 1});\n\t\t\t\t}\n\t\t\t\tif (pt === WEEKS) {\n\t\t\t\t\tconst firstDayOfThisWeek = startOfWeek(date);\n\t\t\t\t\tconst end = endOfDay(firstDayOfThisWeek);\n\t\t\t\t\treturn sub(end, {[DAYS]: 1});\n\t\t\t\t}\n\t\t\t\tif (pt === DAYS) {\n\t\t\t\t\treturn endOfDay(date);\n\t\t\t\t}\n\t\t\t\treturn date;\n\t\t\tcase CURRENT:\n\t\t\t\tif (presetType === SECONDS || presetType === SECOND) {\n\t\t\t\t\treturn duration === 1\n\t\t\t\t\t\t? addSeconds(date, 1)\n\t\t\t\t\t\t: addSeconds(date, duration);\n\t\t\t\t}\n\t\t\t\treturn dateFnsLookUp[dateFnsFunction](date);\n\t\t\tcase TO_DATE:\n\t\t\t\treturn date;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t}\n\n\thandleClick(item) {\n\t\treturn () => {\n\t\t\tlet presetClickedPayload,\n\t\t\t\tselectedItemSetPayload = {};\n\n\t\t\tlet metaType =\n\t\t\t\titem.type === 'custom' ? item.type : item.presetType || item.type;\n\n\t\t\tif (item.type === 'custom') {\n\t\t\t\tpresetClickedPayload = {\n\t\t\t\t\tselectedPresetIndex: -1,\n\t\t\t\t\tselectedGroupLabel: '',\n\t\t\t\t\tlastFocusItemIndex: item.index,\n\t\t\t\t\tkeyword: item.keyword,\n\t\t\t\t\tpresetStartDate: '',\n\t\t\t\t\tpresetEndDate: '',\n\t\t\t\t};\n\t\t\t\tselectedItemSetPayload = {\n\t\t\t\t\tvalue: {},\n\t\t\t\t\tpresetValueStart: '',\n\t\t\t\t\tpresetValueEnd: '',\n\t\t\t\t};\n\t\t\t} else if (item.presetType === 'business') {\n\t\t\t\tpresetClickedPayload = {\n\t\t\t\t\tselectedPresetIndex: item.index,\n\t\t\t\t\tselectedGroupLabel: item.groupLabel,\n\t\t\t\t\tlastFocusItemIndex: item.index,\n\t\t\t\t\tpresetStartDate: item.startDate,\n\t\t\t\t\tpresetEndDate: item.endDate,\n\t\t\t\t\tlabel: item.label,\n\t\t\t\t\torder: item.order,\n\t\t\t\t};\n\t\t\t\tselectedItemSetPayload = {\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\torder: item.order,\n\t\t\t\t\t\tlabel: item.label,\n\t\t\t\t\t\tgroupLabel: item.groupLabel,\n\t\t\t\t\t\tpresetType: item.presetType,\n\t\t\t\t\t},\n\t\t\t\t\tpresetValueStart: item.startDate,\n\t\t\t\t\tpresetValueEnd: item.endDate,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tconst {[localeContext]: locale, [timezoneContext]: timezone} =\n\t\t\t\t\tthis.state.context;\n\t\t\t\titem = {...item, date: new Date()};\n\t\t\t\tconst startDate = this.getStartDate(item);\n\t\t\t\tconst endDate = this.getEndDate(item);\n\t\t\t\tconst presetValueStart = formatTZ(\n\t\t\t\t\tstartDate,\n\t\t\t\t\tthis.state.properties.format,\n\t\t\t\t\t{locale, timezone},\n\t\t\t\t);\n\t\t\t\tconst presetValueEnd = formatTZ(endDate, this.state.properties.format, {\n\t\t\t\t\tlocale,\n\t\t\t\t\ttimezone,\n\t\t\t\t});\n\t\t\t\tpresetClickedPayload = {\n\t\t\t\t\tpresetStartDate: presetValueStart,\n\t\t\t\t\tpresetEndDate: presetValueEnd,\n\t\t\t\t\tselectedPresetIndex: item.index,\n\t\t\t\t\tselectedGroupLabel: item.groupLabel,\n\t\t\t\t\tlastFocusItemIndex: item.index,\n\t\t\t\t\tkeyword: item.keyword,\n\t\t\t\t\tduration: item.duration,\n\t\t\t\t\tpresetType: item.presetType,\n\t\t\t\t\torder: item.order,\n\t\t\t\t};\n\t\t\t\tmetaType = item.presetType;\n\n\t\t\t\tselectedItemSetPayload = {\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tkeyword: item.keyword,\n\t\t\t\t\t\tduration: item.duration,\n\t\t\t\t\t\torder: item.order,\n\t\t\t\t\t\tgroupLabel: item.groupLabel,\n\t\t\t\t\t\tpresetType: item.presetType,\n\t\t\t\t\t},\n\t\t\t\t\tpresetValueStart,\n\t\t\t\t\tpresetValueEnd,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.dispatch(() => ({\n\t\t\t\ttype: 'NOW_DATE_TIME_PRESETS#PRESET_CLICKED',\n\t\t\t\tpayload: presetClickedPayload,\n\t\t\t\tmeta: {\n\t\t\t\t\ttype: metaType,\n\t\t\t\t},\n\t\t\t}));\n\n\t\t\tthis.dispatch(() => ({\n\t\t\t\ttype: 'NOW_DATE_TIME_PRESETS#SELECTED_ITEM_SET',\n\t\t\t\tpayload: selectedItemSetPayload,\n\t\t\t}));\n\t\t};\n\t}\n\n\tisPlural(str) {\n\t\treturn str.charAt(str.length - 1) === 's';\n\t}\n\n\tgetSingular(str) {\n\t\treturn this.isPlural(str) ? str.substring(0, str.length - 1) : str;\n\t}\n\n\tformatPreset({keyword, presetType, duration}) {\n\t\tif (keyword === CURRENT) {\n\t\t\tconst timePeriod = presetTranslations[this.getSingular(presetType)];\n\t\t\treturn t(\n\t\t\t\t{\n\t\t\t\t\tcode: 'now-date-time-preset-current-preset-label',\n\t\t\t\t\tmessage: 'Current {timePeriod}',\n\t\t\t\t\tcomment:\n\t\t\t\t\t\t'timePeriod is one of the following: year, quarter, month, week, day, hour, minute, second',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttimePeriod: timePeriod,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tif (keyword === TO_DATE) {\n\t\t\tconst timePeriod =\n\t\t\t\tpresetTranslations[this.initialCap(this.getSingular(presetType))];\n\t\t\treturn t(\n\t\t\t\t{\n\t\t\t\t\tcode: 'now-date-time-preset-to-date-label',\n\t\t\t\t\tmessage: '{timePeriod} to date',\n\t\t\t\t\tcomment:\n\t\t\t\t\t\t'timePeriod is one of the following: year, quarter, month, week, day, hour, minute, second and the keyword is to date',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttimePeriod: timePeriod,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tif (duration) {\n\t\t\tif (duration === 1) {\n\t\t\t\tconst timePeriod = presetTranslations[this.getSingular(presetType)];\n\t\t\t\tif (keyword === NEXT) {\n\t\t\t\t\treturn t(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcode: 'now-date-time-preset-next-duration-is-one-label',\n\t\t\t\t\t\t\tmessage: 'Next {timePeriod}',\n\t\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t\t'timePeriod is one of the following: year, quarter, month, week, day, hour, minute, second',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttimePeriod: timePeriod,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn t(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcode: 'now-date-time-preset-last-duration-is-one-label',\n\t\t\t\t\t\t\tmessage: 'Last {timePeriod}',\n\t\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t\t'timePeriod is one of the following: year, quarter, month, week, day, hour, minute, second',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttimePeriod: timePeriod,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst timePeriod = presetTranslations[presetType];\n\t\t\tif (keyword === NEXT) {\n\t\t\t\treturn t(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'now-date-time-preset-next-duration-label',\n\t\t\t\t\t\tmessage: 'Next {duration} {timePeriod}',\n\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t'duration is a number and timePeriod is one of the following: years, quarters, months, weeks, days, hours, minutes, seconds',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: duration,\n\t\t\t\t\t\ttimePeriod: timePeriod,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn t(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'now-date-time-preset-last-duration-label',\n\t\t\t\t\t\tmessage: 'Last {duration} {timePeriod}',\n\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t'duration is a number and timePeriod is one of the following: years, quarters, months, weeks, days, hours, minutes, seconds',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: duration,\n\t\t\t\t\t\ttimePeriod: timePeriod,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (keyword === 'Custom') {\n\t\t\treturn t({\n\t\t\t\tcode: 'now-date-time-preset-custom-label',\n\t\t\t\tmessage: 'Custom',\n\t\t\t\tcomment:\n\t\t\t\t\t'Custom preset that allows user to select a custom date range from the calendar',\n\t\t\t});\n\t\t}\n\t\tconst timePeriod = presetTranslations[this.getSingular(presetType)];\n\t\tif (keyword === NEXT) {\n\t\t\treturn t(\n\t\t\t\t{\n\t\t\t\t\tcode: 'now-date-time-preset-next-no-duration-label',\n\t\t\t\t\tmessage: 'Next {timePeriod}',\n\t\t\t\t\tcomment:\n\t\t\t\t\t\t'timePeriod is one of the following: year, quarter, month, week, day, hour, minute, second',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttimePeriod: timePeriod,\n\t\t\t\t},\n\t\t\t);\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t{\n\t\t\t\t\tcode: 'now-date-time-preset-last-no-duration-label',\n\t\t\t\t\tmessage: 'Last {timePeriod}',\n\t\t\t\t\tcomment:\n\t\t\t\t\t\t'timePeriod is one of the following: year, quarter, month, week, day, hour, minute, second',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttimePeriod: timePeriod,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tgetCalendarHeight() {\n\t\t//preset component\n\t\tconst p = getHoistedPreset();\n\t\tif (!p) return;\n\t\tconst {shadowRoot: sr} = p;\n\t\tlet calendar = sr.querySelector('slot');\n\t\tcalendar = calendar.assignedNodes()[0];\n\t\treturn Math.round(calendar.offsetHeight) || 200;\n\t}\n\n\t//200 is min height of calendar\n\tasync setPresetHeight(height = 200) {\n\t\t//const preset\n\t\tlet h = height;\n\t\tconst p = getHoistedPreset();\n\t\tif (!p) return;\n\t\tconst {shadowRoot: sr} = p;\n\t\tconst parent = sr.querySelector('.now-date-time-presets');\n\t\tconst child = parent.childNodes[0];\n\t\tconst isWrapped = child.classList.contains('is-wrapped');\n\t\tif (isWrapped) {\n\t\t\tconst ul = child.childNodes[0];\n\t\t\th =\n\t\t\t\tul.offsetHeight > this.constructor.PRESET_DEFAULT_HEIGHT\n\t\t\t\t\t? this.constructor.PRESET_DEFAULT_HEIGHT\n\t\t\t\t\t: 'min-content';\n\t\t}\n\t\tchild.style.height = Number.isInteger(h) ? `${h}px` : h;\n\t}\n\n\tasync matchHeights() {\n\t\t// wait for the calendar to render before fixing the height of presets\n\t\tawait new Promise((resolve) => setTimeout(resolve, 0));\n\t\trequestAnimationFrame(() => {\n\t\t\tconst h = this.getCalendarHeight();\n\t\t\tthis.setPresetHeight(h);\n\t\t});\n\t}\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {actionTypes} from '@servicenow/ui-core';\nimport styles from './_now-date-time-presets.scss';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {presetsSchema, presetSchema} from '../schemas';\nimport Presets from './';\nimport {Keys, CUSTOM_PRESET_OPTION} from '../utils/constants';\nimport {t} from 'sn-translate';\n\nconst {\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_TREE_RENDERED,\n\tCOMPONENT_DOM_READY,\n} = actionTypes;\n\nexport const getFocusableItem = (host, index) =>\n\thost.shadowRoot.querySelectorAll('.now-date-time-presets-listitem')[index];\n\nexport const getActivePresetElement = (host) => host.shadowRoot.activeElement;\n\nexport const getAllPresetElements = (host) => [\n\t...host.shadowRoot.querySelectorAll('.now-date-time-presets-listitem'),\n];\n\nexport const focusPreset = (presetElement) => presetElement.focus();\n\nexport const getPresetElementByIndex = (host, elIndex) => {\n\tconst allPresetElements = getAllPresetElements(host);\n\tif (elIndex > 0 && elIndex < allPresetElements.length - 1) {\n\t\treturn allPresetElements[elIndex];\n\t}\n\treturn null;\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {reflow} = state.properties;\n\tconst {presetsObject} = state;\n\tpresetsObject.setDispatch(dispatch);\n\tpresetsObject.setState(state);\n\treturn (\n\t\t<div\n\t\t\tclassName=\"now-date-time-presets\"\n\t\t\trole=\"dialog\"\n\t\t\taria-label={t('Select date range')}\n\t\t>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-date-time-presets-list': true,\n\t\t\t\t\t'is-wrapped': reflow,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{presetsObject.getAll()}\n\t\t\t</div>\n\t\t\t<slot />\n\t\t</div>\n\t);\n};\n\n/**\n * Calendar presets component to display the presets available.\n * ```jsx\n * <now-date-time-interval\n *\n *\tenable-presets (show defaults)\n *\tshow-groups\n *\tcustom-presets: [{keyword: 'NEXT', presetType: 'WEEKS', duration: 125 (INT ONLY), groupLabel: 'Week Presets'}, ...]\n *\tselected-preset: {keyword, presetType, duration} (if does not match a preset - ignore)\n *\n *\tNOTES:\n *   - handle validation errors similiar to disabled dates\n *\t - active-preset takes precendence\n *\t - Scott looking into handling n digit duration values\n *\t - Scott looking into use of custom checked behavior\n * />\n * ```\n *\n * @seismicElement now-date-time-presets\n * @private\n * @summary A panel to display the presets.\n */\ncreateEnhancedElement('now-date-time-presets', {\n\tsetInitialState() {\n\t\treturn {\n\t\t\tselectedGroup: null,\n\t\t\tselectedPresetIndex: -1,\n\t\t\tlastFocusItemIndex: -1,\n\t\t\tselectedGroupLabel: '',\n\t\t\tpresetsObject: new Presets(),\n\t\t};\n\t},\n\tproperties: {\n\t\tclearPresetSelection: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\treflow: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\tpresets: {\n\t\t\tdefault: Presets.DEFAULT_PRESETS,\n\t\t\tmanageable: true,\n\t\t\tschema: presetsSchema,\n\t\t},\n\t\tenablePreset: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\tshowGroups: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\tselectedItem: {\n\t\t\tmanageable: true,\n\t\t\tschema: presetSchema,\n\t\t},\n\t\tcustomPresetPositionBottom: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\tformat: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t},\n\tstyles,\n\tview,\n\tdispatches: {\n\t\t'NOW_DATE_TIME_PRESETS#SELECTED_ITEM_SET': {},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]({action, host, state, properties, updateState}) {\n\t\t\tconst {customPresetPositionBottom, showGroups} = properties;\n\t\t\tif (\n\t\t\t\tstate.lastFocusItemIndex === null ||\n\t\t\t\tstate.lastFocusItemIndex === -1\n\t\t\t) {\n\t\t\t\tconst hostEl = action.meta.hoistHost || host;\n\t\t\t\tconst focusEl =\n\t\t\t\t\tcustomPresetPositionBottom && !showGroups\n\t\t\t\t\t\t? getFocusableItem(hostEl, getAllPresetElements(hostEl).length - 1)\n\t\t\t\t\t\t: getFocusableItem(hostEl, 0);\n\t\t\t\tlet focusElIndex = getAllPresetElements(hostEl).indexOf(focusEl);\n\t\t\t\tupdateState({\n\t\t\t\t\tlastFocusItemIndex: focusElIndex,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DOM_READY]({state, dispatch, properties, updateState}) {\n\t\t\tconst {selectedItem} = properties;\n\t\t\tconst {presetsObject} = state;\n\t\t\tif (Object.keys(selectedItem).length > 0) {\n\t\t\t\tconst {\n\t\t\t\t\tactivePresetIndex,\n\t\t\t\t\tfocusItemIndex,\n\t\t\t\t\tactivePresetGroup,\n\t\t\t\t\tpresetValueStart,\n\t\t\t\t\tpresetValueEnd,\n\t\t\t\t} = presetsObject.getActivePreset(selectedItem);\n\t\t\t\tif (activePresetIndex > -1) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tselectedPresetIndex: activePresetIndex,\n\t\t\t\t\t\tselectedGroupLabel: activePresetGroup,\n\t\t\t\t\t\tlastFocusItemIndex: focusItemIndex,\n\t\t\t\t\t});\n\t\t\t\t\tif (selectedItem.type !== CUSTOM_PRESET_OPTION.type) {\n\t\t\t\t\t\tdispatch('NOW_DATE_TIME_PRESETS#SELECTED_ITEM_SET', {\n\t\t\t\t\t\t\tvalue: selectedItem,\n\t\t\t\t\t\t\tpresetValueStart,\n\t\t\t\t\t\t\tpresetValueEnd,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_TREE_RENDERED]: {\n\t\t\tasync effect({state}) {\n\t\t\t\tconst {presetsObject} = state;\n\t\t\t\tawait presetsObject.matchHeights();\n\t\t\t},\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]({action, properties, updateState, state}) {\n\t\t\tconst {name} = action.payload;\n\t\t\tconst {presetsObject} = state;\n\t\t\tif (name === 'selectedItem') {\n\t\t\t\tconst {selectedItem} = properties;\n\t\t\t\tconst {activePresetIndex, activePresetGroup, focusItemIndex} =\n\t\t\t\t\tpresetsObject.getActivePreset(selectedItem);\n\n\t\t\t\tupdateState({\n\t\t\t\t\tselectedPresetIndex: activePresetIndex,\n\t\t\t\t\tlastFocusItemIndex: focusItemIndex,\n\t\t\t\t\tselectedGroupLabel: activePresetGroup,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t['NOW_DATE_TIME_CALENDAR#SELECTED_ITEMS_SET']: ({dispatch, action}) => {\n\t\t\tconst {payload} = action;\n\t\t\t// do not update to `CUSTOM_PRESET_OPTION` if user clicked on  default cancel footer button\n\t\t\tif (\n\t\t\t\tpayload.initiator &&\n\t\t\t\tpayload.initiator === 'CALENDAR_FOOTER_CANCEL_BUTTON'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdispatch('NOW_DATE_TIME_PRESETS#SELECTED_ITEM_SET', {\n\t\t\t\tvalue: CUSTOM_PRESET_OPTION,\n\t\t\t});\n\t\t},\n\t\t['NOW_DATE_TIME_PRESETS#PRESET_CLICKED']: ({\n\t\t\taction: {\n\t\t\t\tpayload: {selectedPresetIndex, selectedGroupLabel, lastFocusItemIndex},\n\t\t\t},\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tupdateState({\n\t\t\t\tselectedPresetIndex,\n\t\t\t\tselectedGroupLabel,\n\t\t\t\tlastFocusItemIndex,\n\t\t\t});\n\t\t},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect({action, host, updateState, state, properties}) {\n\t\t\t\tconst hostEl = action.meta.hoistHost || host;\n\t\t\t\tconst activePresetElement = getActivePresetElement(hostEl);\n\t\t\t\tif (!activePresetElement) return;\n\n\t\t\t\tconst {lastFocusItemIndex} = state;\n\t\t\t\tconst presetElements = getAllPresetElements(hostEl);\n\n\t\t\t\tconst firstPresetElement = presetElements[0];\n\t\t\t\tconst lastPresetElement = presetElements[presetElements.length - 1];\n\n\t\t\t\tconst {event} = action.payload;\n\t\t\t\tconst isArrowDown = event.key === Keys.ARROW_DOWN;\n\t\t\t\tconst isArrowUp = event.key === Keys.ARROW_UP;\n\n\t\t\t\tif ([Keys.SPACE, Keys.ENTER].includes(event.key)) {\n\t\t\t\t\taction.preventDefault();\n\t\t\t\t\tactivePresetElement.click();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isArrowDown || isArrowUp) {\n\t\t\t\t\taction.preventDefault();\n\t\t\t\t\tlet nextPresetToFocus;\n\t\t\t\t\tlet nextPresetIndex;\n\t\t\t\t\t//if showGroups is enabled the lastOFocusItemIndex may not be the actual index of the preset\n\t\t\t\t\tconst focusIndex =\n\t\t\t\t\t\tproperties.showGroups &&\n\t\t\t\t\t\tlastFocusItemIndex !== presetElements.indexOf(activePresetElement)\n\t\t\t\t\t\t\t? presetElements.indexOf(activePresetElement)\n\t\t\t\t\t\t\t: lastFocusItemIndex;\n\t\t\t\t\tif (isArrowDown && focusIndex === presetElements.length - 1) {\n\t\t\t\t\t\tnextPresetToFocus = firstPresetElement;\n\t\t\t\t\t\tnextPresetIndex = 0;\n\t\t\t\t\t} else if (isArrowUp && focusIndex === 0) {\n\t\t\t\t\t\tnextPresetToFocus = lastPresetElement;\n\t\t\t\t\t\tnextPresetIndex = presetElements.length - 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnextPresetIndex = isArrowDown ? focusIndex + 1 : focusIndex - 1;\n\t\t\t\t\t\tnextPresetToFocus = presetElements[nextPresetIndex];\n\t\t\t\t\t}\n\t\t\t\t\tupdateState({lastFocusItemIndex: nextPresetIndex});\n\t\t\t\t\tfocusPreset(nextPresetToFocus);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tbehaviors: [focusBehavior],\n});\n","import {\n\tDateTypes,\n\tlocaleContext,\n\tparseTZ,\n\tFORMAT_END_MATCH_ERROR_ID,\n\tFORMAT_START_MATCH_ERROR_ID,\n\tINVALID_START_GREATER_THAN_END_ERROR_ID,\n\tUNAVAILABLE_END_ERROR_ID,\n\tUNAVAILABLE_START_ERROR_ID,\n\tprependErrorMessage,\n\tremoveErrorMessage,\n} from '@servicenow/library-date-time';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport {\n\tPOPOVER_ID,\n\tTRIGGER_ID,\n\tcheckForDisabledDates,\n\tcheckForErrors,\n\tfocusCalendar,\n\tgetSelectedItems,\n\thandleSlotClick,\n\thandleClick,\n\thandleFocus,\n\thandleKeydown,\n\thideCalendarPanel,\n\tgetType,\n\tgetCalendarIcon,\n\tgetHoistedPreset,\n\tcheckIfConfigurationIsValid,\n} from './utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {compareAsc, isValid} from 'date-fns';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport './now-date-time-calendar';\nimport './now-input-date-time';\nimport './presets/now-date-time-presets';\nimport '@servicenow/now-button';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-popover';\nimport {\n\tmessagesSchema,\n\trenderFormFieldMessages,\n\tfieldLayoutSchema,\n} from '@servicenow/now-input';\nimport {\n\titemsSchema,\n\tdisabledItemsSchema,\n\tfooterActionsSchema,\n\ttypesSchema,\n\tpresetsSchema,\n\tpresetSchema,\n} from './schemas';\nimport actions from './actions';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport resizeBehavior from '@servicenow/behavior-resize';\nimport deferBehavior from '@servicenow/behavior-defer';\nimport styles from './_now-date-time-interval.scss';\nimport {isDateTimeValueValid} from '@servicenow/library-date-time';\n\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_DOM_READY,\n} = actionTypes;\n\nconst addClassToFirstElementInSlot = (slotName, host) => {\n\tconst nodes = host.shadowRoot.querySelectorAll(slotName);\n\tconst assignedNodes = nodes?.[0].assignedNodes()?.[0];\n\tassignedNodes?.classList.add('is-first-child');\n};\n\nfunction constructErrors(errorID, errors) {\n\tif (errors.some((id) => id === errorID)) return;\n\tif (errorID) {\n\t\terrors.push(errorID);\n\t}\n}\n\nfunction validateInput({\n\tfieldValue,\n\tcontext,\n\tproperties,\n\tupdateProperties,\n\tinitiator,\n\tinput,\n}) {\n\tconst {[localeContext]: locale} = context;\n\tconst {\n\t\tdisabled,\n\t\tformat,\n\t\treadonly,\n\t\ttype,\n\t\tvalueStart,\n\t\tvalueEnd,\n\t\tenableSameDay,\n\t} = properties;\n\tconst errors = {\n\t\tformat:\n\t\t\tinput === 'start'\n\t\t\t\t? FORMAT_START_MATCH_ERROR_ID\n\t\t\t\t: FORMAT_END_MATCH_ERROR_ID,\n\t\tdisabled:\n\t\t\tinput === 'start' ? UNAVAILABLE_START_ERROR_ID : UNAVAILABLE_END_ERROR_ID,\n\t};\n\n\tlet {valid, errorId} = checkForErrors(fieldValue, errors.format, {\n\t\tcontext,\n\t\tproperties,\n\t\tupdateProperties,\n\t});\n\n\tif (\n\t\t[COMPONENT_DOM_TREE_READY, COMPONENT_PROPERTY_CHANGED].includes(\n\t\t\tinitiator,\n\t\t) &&\n\t\tvalid\n\t) {\n\t\tconst start = parseTZ(valueStart, format, new Date(), {locale});\n\t\tconst end = parseTZ(valueEnd, format, new Date(), {locale});\n\n\t\t// if the property for valueStart or valueEnd changes, input will reflect\n\t\t// which one changed and we should ensure its not disabled\n\t\tlet isStartDisabled = false;\n\t\tlet isEndDisabled = false;\n\t\tif (input === 'start') {\n\t\t\tisStartDisabled = checkForDisabledDates(\n\t\t\t\tvalueStart,\n\t\t\t\tUNAVAILABLE_START_ERROR_ID,\n\t\t\t\t{\n\t\t\t\t\tcontext,\n\t\t\t\t\tproperties,\n\t\t\t\t\tupdateProperties,\n\t\t\t\t},\n\t\t\t).isDisabled;\n\t\t\tif (isStartDisabled) errorId = UNAVAILABLE_START_ERROR_ID;\n\t\t} else if (input === 'end') {\n\t\t\tisEndDisabled = checkForDisabledDates(\n\t\t\t\tvalueEnd,\n\t\t\t\tUNAVAILABLE_END_ERROR_ID,\n\t\t\t\t{\n\t\t\t\t\tcontext,\n\t\t\t\t\tproperties,\n\t\t\t\t\tupdateProperties,\n\t\t\t\t},\n\t\t\t).isDisabled;\n\t\t\tif (isEndDisabled) errorId = UNAVAILABLE_END_ERROR_ID;\n\t\t}\n\n\t\tif (\n\t\t\tisValid(start) &&\n\t\t\tisValid(end) &&\n\t\t\t((!enableSameDay && compareAsc(start, end) !== -1) ||\n\t\t\t\t(enableSameDay && compareAsc(start, end) === 1))\n\t\t) {\n\t\t\tprependErrorMessage({\n\t\t\t\terrorId: INVALID_START_GREATER_THAN_END_ERROR_ID,\n\t\t\t\tupdateProperties,\n\t\t\t\tmessageData: {\n\t\t\t\t\ttype: getType(type),\n\t\t\t\t},\n\t\t\t});\n\t\t\tvalid = false;\n\t\t\terrorId = INVALID_START_GREATER_THAN_END_ERROR_ID;\n\t\t} else {\n\t\t\tremoveErrorMessage({\n\t\t\t\terrorId: INVALID_START_GREATER_THAN_END_ERROR_ID,\n\t\t\t\tupdateProperties,\n\t\t\t});\n\t\t}\n\n\t\tvalid = valid && !isStartDisabled && !isEndDisabled;\n\t} else if (input && fieldValue !== undefined) {\n\t\tconst {date, isDisabled} = checkForDisabledDates(\n\t\t\tfieldValue,\n\t\t\terrors.disabled,\n\t\t\t{context, properties, updateProperties},\n\t\t);\n\n\t\t// validate the fieldValue against it counter-part to ensure start < end\n\t\tconst compare = parseTZ(\n\t\t\tinput === 'start' ? valueEnd : valueStart,\n\t\t\tformat,\n\t\t\tnew Date(),\n\t\t\t{locale},\n\t\t);\n\t\tconst target = input === 'start' ? -1 : 1;\n\t\tif (\n\t\t\tisValid(date) &&\n\t\t\tisValid(compare) &&\n\t\t\t((!enableSameDay && compareAsc(date, compare) !== target) ||\n\t\t\t\t(enableSameDay && compareAsc(date, compare) === target * -1))\n\t\t) {\n\t\t\tprependErrorMessage({\n\t\t\t\terrorId: INVALID_START_GREATER_THAN_END_ERROR_ID,\n\t\t\t\tupdateProperties,\n\t\t\t\tmessageData: {\n\t\t\t\t\ttype: getType(type),\n\t\t\t\t},\n\t\t\t});\n\t\t\tvalid = false;\n\t\t\terrorId = INVALID_START_GREATER_THAN_END_ERROR_ID;\n\t\t} else {\n\t\t\tremoveErrorMessage({\n\t\t\t\terrorId: INVALID_START_GREATER_THAN_END_ERROR_ID,\n\t\t\t\tupdateProperties,\n\t\t\t});\n\t\t}\n\n\t\tvalid = valid && !isDisabled;\n\t}\n\n\tlet value = !(readonly || disabled) && !valid;\n\treturn {val: value, err: errorId};\n}\n\nfunction renderInput(\n\tstate,\n\t{dispatch, type = 'start', value, updateState, messagesMode = 'sr-only'},\n) {\n\tconst {prefix} = state;\n\tconst {\n\t\tautofocus,\n\t\tconfigAria,\n\t\tdisabled,\n\t\tformat,\n\t\thelperContentEnd,\n\t\thelperContentStart,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\tisoWeek,\n\t\tlabelEnd,\n\t\tlabelStart,\n\t\tmessages,\n\t\tname = `input-${state.properties.nowId}`,\n\t\topened,\n\t\toptional,\n\t\treadonly,\n\t\trequired,\n\t\tsize,\n\t\ttype: inputType,\n\t\talign,\n\t\tfieldLayout,\n\t\tplaceholderStart,\n\t\tplaceholderEnd,\n\t\twrapLabel,\n\t} = state.properties;\n\n\tconst label = type === 'start' ? labelStart : labelEnd;\n\tconst helperContent =\n\t\ttype === 'start' ? helperContentStart : helperContentEnd;\n\tconst aria = type === 'start' ? 'input-start' : 'input-end';\n\tconst placeholder = type === 'start' ? placeholderStart : placeholderEnd;\n\tconst icon = getCalendarIcon(inputType);\n\n\treturn (\n\t\t<now-input-date-time\n\t\t\tclassName=\"now-date-time-input\"\n\t\t\tdataset={{input: type}}\n\t\t\tslot=\"trigger\"\n\t\t\tname={`${name}-${type}`}\n\t\t\tvalue={value}\n\t\t\tmanage-value\n\t\t\thelper-content={helperContent}\n\t\t\thide-required-indicator={hideRequiredIndicator}\n\t\t\tinvalid={invalid}\n\t\t\tmanage-invalid\n\t\t\tlabel={label}\n\t\t\tsize={size}\n\t\t\toptional={optional}\n\t\t\trequired={required}\n\t\t\tformat={format}\n\t\t\tdisabled={disabled}\n\t\t\tautofocus={autofocus}\n\t\t\tplaceholder={placeholder}\n\t\t\treadonly={readonly}\n\t\t\talign={align}\n\t\t\tmessages={messages}\n\t\t\tmessages-mode={messagesMode}\n\t\t\tiso-week={isoWeek}\n\t\t\ton-click={(e) => handleClick(e, {prefix, state, dispatch})}\n\t\t\ton-keydown={(e) => handleKeydown(e, {state, dispatch})}\n\t\t\ton-focus={(e) => handleFocus(e, {state, updateState})}\n\t\t\tconfig-aria={\n\t\t\t\tdisabled || readonly\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t...filterAriaAttributes(configAria, aria),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t...filterAriaAttributes(configAria, aria),\n\t\t\t\t\t\t\t\trole: 'combobox',\n\t\t\t\t\t\t\t\t'aria-haspopup': 'dialog',\n\t\t\t\t\t\t\t\t'aria-expanded': String(opened),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t}\n\t\t\tappend-to-payload={{id: TRIGGER_ID, input: type}}\n\t\t\tfield-layout={fieldLayout}\n\t\t\twrap-label={wrapLabel}\n\t\t>\n\t\t\t<div\n\t\t\t\tslot=\"start\"\n\t\t\t\tclass={{\n\t\t\t\t\t'now-date-time-slot': true,\n\t\t\t\t\t'-start': true,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<slot\n\t\t\t\t\tname={`${type}-input-start`}\n\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\thandleSlotClick(e, {prefix, state, dispatch});\n\t\t\t\t\t}}\n\t\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tslot=\"end\"\n\t\t\t\tclass={{\n\t\t\t\t\t'now-date-time-slot': true,\n\t\t\t\t\t'-end': true,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<slot\n\t\t\t\t\tname={`${type}-input-end`}\n\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\thandleSlotClick(e, {prefix, state, dispatch});\n\t\t\t\t\t}}\n\t\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{icon && (\n\t\t\t\t<now-icon\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-date-time-input-icon': true,\n\t\t\t\t\t\t[`-${size}`]: size,\n\t\t\t\t\t}}\n\t\t\t\t\tslot=\"end\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tconfig-aria={{icon: {role: 'presentation'}}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<slot\n\t\t\t\tslot=\"label-inline\"\n\t\t\t\tname={`${type}-label-inline`}\n\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\ton-click={(e) => {\n\t\t\t\t\thandleSlotClick(e, {prefix, state, dispatch});\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<slot slot=\"label-end\" name={`${type}-label-end`} />\n\t\t\t<slot\n\t\t\t\tslot=\"label-start\"\n\t\t\t\tname={`${type}-label-start`}\n\t\t\t\ton-keydown={(e) => e.stopPropagation()}\n\t\t\t\ton-click={(e) => {\n\t\t\t\t\thandleSlotClick(e, {prefix, state, dispatch});\n\t\t\t\t}}\n\t\t\t/>\n\t\t</now-input-date-time>\n\t);\n}\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {\n\t\tactiveInput,\n\t\tcontext: {[localeContext]: locale},\n\t\tpositionTarget,\n\t\tmode,\n\t} = state;\n\tconst {\n\t\topened,\n\t\tadaptive,\n\t\tgap,\n\t\tsize,\n\n\t\t// Input props [shared]\n\t\tisoWeek,\n\t\tformat,\n\t\tpanelFitProps,\n\t\tconfigAria,\n\t\tvalueEnd,\n\t\tvalueStart,\n\t\tenableSameDay,\n\t\tmessages,\n\n\t\t// Calendar props\n\t\tfooterActions,\n\t\tshowDefaultFooterActions,\n\t\ttype,\n\t\titems,\n\t\tdisabledItems,\n\t\tfirstDayOfWeek,\n\t\thideAdjacentDates,\n\t\tdisableWeekends,\n\t\tweekendDays,\n\t\tweekdayHeadings,\n\t\tenablePresets,\n\t\tcustomPresets,\n\t\tshowPresetGroups,\n\t\tinitialTimeStart,\n\t\tinitialTimeEnd,\n\t\tcustomPresetPositionBottom,\n\t\tfieldLayout: {layout},\n\t\tdefaultFooterActionLabels,\n\t\tactivePreset,\n\t\tyearRange,\n\t} = state.properties;\n\n\tconst MAX_WIDTH = 282;\n\tconst PRESET_MAX_WIDTH = 482;\n\tconst THRESHOLD = PRESET_MAX_WIDTH; //initial width of date-time before popover has rendered\n\tconst REFLOW = state?.behaviors?.resize?.size?.width < THRESHOLD;\n\n\tlet maxWidth = enablePresets ? PRESET_MAX_WIDTH : MAX_WIDTH;\n\tmaxWidth = REFLOW ? MAX_WIDTH : PRESET_MAX_WIDTH;\n\n\tconst constrain = type !== DateTypes.WEEK_YEAR ? {maxWidth} : {};\n\n\tconst renderCalendar = (enablePresets) => (\n\t\t<now-date-time-calendar\n\t\t\tdefer\n\t\t\tslot={enablePresets ? '' : 'content'}\n\t\t\tclassName=\"now-date-time-calendar\"\n\t\t\tappend-to-meta={\n\t\t\t\tenablePresets ? 'from-date-time-presets' : `from-date-time-interval`\n\t\t\t}\n\t\t\tmode={mode}\n\t\t\ttype={type}\n\t\t\tformat={format}\n\t\t\titems={items}\n\t\t\tmanage-items\n\t\t\tselected-items={getSelectedItems(\n\t\t\t\t[valueStart, valueEnd],\n\t\t\t\tformat,\n\t\t\t\tlocale,\n\t\t\t\ttype,\n\t\t\t)}\n\t\t\tmanage-selected-items\n\t\t\trange-initiator={activeInput?.dataset?.input}\n\t\t\trange-value-start={valueStart}\n\t\t\trange-value-end={valueEnd}\n\t\t\tallow-duplicates={enableSameDay}\n\t\t\tdisabled-items={disabledItems}\n\t\t\tdisable-weekends={disableWeekends}\n\t\t\tweekend-days={weekendDays}\n\t\t\tweekday-headings={weekdayHeadings}\n\t\t\tfirst-day-of-week={firstDayOfWeek}\n\t\t\thide-adjacent-dates={hideAdjacentDates}\n\t\t\tshow-default-footer-actions={showDefaultFooterActions}\n\t\t\tdefaultFooterActionLabels={defaultFooterActionLabels}\n\t\t\tfooter-actions={footerActions}\n\t\t\tconfig-aria={{\n\t\t\t\tcontainer: {\n\t\t\t\t\t...filterAriaAttributes(configAria, 'panel'),\n\t\t\t\t},\n\t\t\t}}\n\t\t\tiso-week={isoWeek}\n\t\t\tinitial-time-start={initialTimeStart}\n\t\t\tinitial-time-end={initialTimeEnd}\n\t\t\tenable-presets={enablePresets}\n\t\t\tyear-range={yearRange}\n\t\t/>\n\t);\n\treturn (\n\t\t<Fragment>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-date-time-interval': true,\n\t\t\t\t\t[`-${adaptive}`]: adaptive,\n\t\t\t\t\t[`-${size}-${gap}`]: gap,\n\t\t\t\t\t[`-${layout}-field-layout`]: layout,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{renderInput(state, {\n\t\t\t\t\tdispatch,\n\t\t\t\t\ttype: 'start',\n\t\t\t\t\tvalue: valueStart,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tmessagesMode: 'sr-only',\n\t\t\t\t})}\n\t\t\t\t{renderInput(state, {\n\t\t\t\t\tdispatch,\n\t\t\t\t\ttype: 'end',\n\t\t\t\t\tvalue: valueEnd,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tmessagesMode: layout === 'vertical' ? 'sr-only' : 'auto',\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<div className=\"now-date-time-interval-messages\">\n\t\t\t\t{layout === 'vertical' &&\n\t\t\t\t\trenderFormFieldMessages({\n\t\t\t\t\t\tcomponentId: 'now-date-time-interval',\n\t\t\t\t\t\tmessages,\n\t\t\t\t\t\tmessagesMode: 'visible',\n\t\t\t\t\t})}\n\t\t\t</div>\n\t\t\t{hideCalendarPanel(type) ? undefined : (\n\t\t\t\t<now-popover\n\t\t\t\t\tclassName=\"now-date-time-popover\"\n\t\t\t\t\topened={opened}\n\t\t\t\t\tmanage-opened\n\t\t\t\t\tposition-target={positionTarget}\n\t\t\t\t\tconstrain={constrain}\n\t\t\t\t\tpositions={panelFitProps.position}\n\t\t\t\t\toffset={panelFitProps.offset}\n\t\t\t\t\thide-tail\n\t\t\t\t\tappend-to-payload={{id: POPOVER_ID}}\n\t\t\t\t\tinteraction-type=\"combo\"\n\t\t\t\t>\n\t\t\t\t\t{enablePresets &&\n\t\t\t\t\t(type === DateTypes.DATE || type === DateTypes.DATE_TIME) ? (\n\t\t\t\t\t\t<now-date-time-presets\n\t\t\t\t\t\t\tclassName=\"now-date-time-presets\"\n\t\t\t\t\t\t\tshowGroups={showPresetGroups}\n\t\t\t\t\t\t\tpresets={customPresets || null}\n\t\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\t\treflow={REFLOW}\n\t\t\t\t\t\t\tformat={format}\n\t\t\t\t\t\t\tselected-item={activePreset}\n\t\t\t\t\t\t\tmanage-selected-item\n\t\t\t\t\t\t\tcustom-preset-position-bottom={customPresetPositionBottom}\n\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\tcontainer: {\n\t\t\t\t\t\t\t\t\t...filterAriaAttributes(configAria, 'panel'),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderCalendar(enablePresets)}\n\t\t\t\t\t\t</now-date-time-presets>\n\t\t\t\t\t) : (\n\t\t\t\t\t\trenderCalendar()\n\t\t\t\t\t)}\n\t\t\t\t</now-popover>\n\t\t\t)}\n\t\t</Fragment>\n\t);\n};\n\n/**\n * Use the input or calendar picker to select a date or date and time interval.\n *\n * ```jsx\n * <now-date-time-interval format=\"yyyy/MM/dd\" />\n * <now-date-time-interval format=\"yyyy/MM/dd HH:mm:ss\" type=\"date-time\" />\n * ```\n *\n * By default, the picker type is set to date range. Setting the `type`\n * property to `'date-time'` allows you to select date and time in the calendar.\n *\n * `now-date-time-interval` behaves just like `now-date-time` with the addition\n * of a start and end input. Clicking the input or pressing up/down arrow keys\n * prompts the picker to appear. In the case of arrow keys, focus moves into the\n * calendar.\n *\n * The `format` property uses Unicode Technical Standard (UTS) tokens.\n * See UTS and other supported format characters in the [`date-fns` library](https://date-fns.org/v2.28.0/docs/format)\n *\n * @seismicElement now-date-time-interval\n * @summary Select a date, or date and time, interval using the input or calendar picker.\n * @uib.label Date-Time-Interval\n * @uib.icon tile-uib-date-time-interval-1-sm\n * @uib.description Select a date, or date and time, interval using the input or calendar picker.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties adaptive, size, gap, type, disabled, readonly, autofocus, valueStart, manageValueStart, valueEnd, manageValueEnd, enableSameDay, name, placeholderStart, placeholderEnd, labelStart, labelEnd, wrapLabel, required, hideRequiredIndicator, optional, helperContentStart, helperContentEnd, invalid, manageInvalid, messages, format, opened, manageOpened, footerActions, showDefaultFooterActions, hideAdjacentDates, panelFitProps, weekdayHeadings, firstDayOfWeek, disableWeekends, weekendDays, disabledItems, configAria, initialTimeStart, initialTimeEnd, enablePresets, customPresets, activePreset, customPresetPositionBottom, showPresetGroups, fieldLayout, defaultFooterActionLabels, yearRange\n * @uib.layout.value.children valueStart, manageValueStart, valueEnd, manageValueEnd, enableSameDay, fieldLayout, name, placeholderStart, placeholderEnd\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.label.children labelStart, labelEnd, wrapLabel, required, hideRequiredIndicator, optional, helperContentStart, helperContentEnd\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.format.children format\n * @uib.layout.format.icon integer-outline\n * @uib.layout.picker.children opened, manageOpened, showDefaultFooterActions, defaultFooterActionLabels, footerActions, hideAdjacentDates, panelFitProps, yearRange, weekdayHeadings, firstDayOfWeek, disableWeekends, weekendDays, initialTimeStart, initialTimeEnd, disabledItems, enablePresets, showPresetGroups, customPresets, activePreset, customPresetPositionBottom\n * @uib.layout.picker.icon calendar-outline\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_DATE_TIME_INTERVAL#INVALID_SET, NOW_DATE_TIME_INTERVAL#VALUE_START_SET, NOW_DATE_TIME_INTERVAL#VALUE_END_SET, NOW_DATE_TIME_INTERVAL#INPUT, NOW_DATE_TIME_INTERVAL#ENTER_KEYDOWN, NOW_DATE_TIME_INTERVAL#OPENED_SET, NOW_DATE_TIME_INTERVAL#ITEMS_SET, NOW_DATE_TIME_INTERVAL#FOOTER_ACTION_CLICKED, NOW_DATE_TIME_PRESETS#PRESET_CLICKED\n */\ncreateEnhancedElement('now-date-time-interval', {\n\tproperties: {\n\t\t/**\n\t\t * When true, indicates that the calendar is open.\n\t\t * By default, this value automatically updates when the user opens or closes the calendar.\n\t\t * Use the `manage-opened` property to handle the\n\t\t * `NOW_DATE_TIME_INTERVAL#OPENED_SET` action manually instead.\n\t\t * @type {boolean}\n\t\t * @uib.description Flag that indicates whether the calendar is open (true) or closed (false).\n\t\t */\n\t\topened: {\n\t\t\tdefault: false,\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * When true, overrides automatic updates to the `opened` property.\n\t\t * An action with type `NOW_DATE_TIME_INTERVAL#OPENED_SET` is dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the opened property. Use the opened set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageOpened: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Type of calendar to use with the form field.\n\t\t * - `date`: Calendar allows the user to select the month, day, and year, such as `2024-01-26`.\n\t\t * - `date-time`: Calendar allows the user to select the month, day, year, and time, such as `2024-01-26 23:59:59`.\n\t\t * - `time`: Calendar allows the user to select the time, such as `23:59:59`.\n\t\t * - `month`: Calendar allows the user to select the month and year, such as `2024-01`.\n\t\t * - `year`: Calendar allows the user to select the year, such as `2024`.\n\t\t * - `week-year`: Calendar allows the user to select the week and year, such as `4-2024`. The values for weeks are 1 - 52.\n\t\t * - `quarter`: Calendar allows the user to select the quarter and year, such as `2024-Q1`.\n\t\t * @type {('date'|'date-time'|'time'|'year'|'month'|'quarter'|'week-year')}\n\t\t * @uib.description The type of calendar to use with the form field.\n\t\t */\n\t\ttype: {\n\t\t\tdefault: 'date',\n\t\t\tschema: typesSchema,\n\t\t},\n\t\t/**\n\t\t * When true, displays a panel containing various preset intervals for convenience.\n\t\t * @type {boolean}\n\t\t * @uib.label Enable presets\n\t\t * @uib.description Enables the left hand panel containing various preset intervals for convenience.\n\t\t * @uib.fieldType boolean\n\t\t **/\n\t\tenablePresets: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * An array of objects representing preset intervals.\n\t\t * Accepted value types:\n\t\t * - Keyword: Description applied to the unit of time for the interval. Valid values: `next, last, start, end, current, to date`.\n\t\t * - Duration: Number applied to the unit of time for the interval. For example, `1`.\n\t\t * - Preset type: Unit of time to use for the interval. Valid values: `years, months, weeks, days, hours, minutes, seconds, business`.\n\t\t * - Order: Order to display the interval in the list of preset intervals. For example, `1`.\n\t\t * - Label: Label for the interval. Must be used with the preset type business. For example, `Sprint 307`. Overrides keyword and duration.\n\t\t * - Group label: Used by the `showPresetGroups` property to group intervals together. For example, `Year presets`.\n\t\t * - Start date: Start date for the interval. Must be used with the preset type business. For example, `2023/10/04`.\n\t\t * - End Date: End date for the interval. Must be used with the preset type business. For example, `2023/10/17`.\n\t\t * - When using the `business` preset type, a label, a start date, and an end date must be provided. Keyword and duration are ignored.\n\t\t * @type {{keyword: ('Next'|'Last'|'start'|'end'|'Current'|'to date'), duration: number, presetType: ('year'|'years'|'quarter'|'quarters'|'month'|'months'|'week'|'weeks'|'day'|'days'|'hour'|'hours'|'minute'|'minutes'|'second'|'seconds'|'business'), order: number, label: string, groupLabel: string, startDate: string, endDate: string}[]}\n\t\t * @uib.description An array of objects representing preset intervals. Available preset intervals are displayed in the preset panel.\n\t\t * @uib.fieldType collection\n\t\t */\n\t\tcustomPresets: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: presetsSchema,\n\t\t},\n\t\t/**\n\t\t * When true, displays preset intervals grouped by their group label.\n\t\t * @type {boolean}\n\t\t * @uib.label Show preset groups\n\t\t * @uib.description Shows preset intervals grouped by their group label.\n\t\t * @uib.fieldType boolean\n\t\t **/\n\t\tshowPresetGroups: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * The items used to populate the calendar.\n\t\t *\n\t\t * Make public when 'custom' calendar type is supported.\n\t\t * @type {[]}\n\t\t * @private\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * An array of objects representing dates that can't be selected. String values\n\t\t * must be date strings matching the given `format` property.\n\t\t * Accepted value types:\n\t\t * - Value, such as `{value: \"2020/01/01\"}`.\n\t\t * - Interval, such as `{start: \"2020/01/01\", end: \"2020/12/31\"}`.\n\t\t * - Before-interval, such as `{before: \"2020/01/01\"}`.\n\t\t * - After-interval, such as `{after: \"2020/01/01\"}`.\n\t\t *\n\t\t * Setting this field ensures that the relevant disabled\n\t\t * date items are shown in the disable state and are not\n\t\t * selectable when they are within the visible interval of the calendar.\n\t\t * If a disabled value is entered into the input field, and error message is displayed.\n\t\t * @type {Array.<({value: Date}|{start: Date, end: Date}|{before: Date}|{after: Date})>}\n\t\t * @uib.description An array of objects representing dates that can't be selected. These dates must be string values that match the specified `format` property.\n\t\t */\n\t\tdisabledItems: {\n\t\t\tdefault: [],\n\t\t\tschema: disabledItemsSchema,\n\t\t},\n\t\t/**\n\t\t * Required. Label describing the overall purpose of the first input field.\n\t\t * @type {string}\n\t\t * @uib.description Label describing the overall purpose of the start select field.\n\t\t * @uib.defaultValue Select start date\n\t\t * @uib.label Start Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabelStart: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Required. Label describing the overall purpose of the second input field.\n\t\t * @type {string}\n\t\t * @uib.description Label describing the overall purpose of the end select field.\n\t\t * @uib.defaultValue Select end date\n\t\t * @uib.label End Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabelEnd: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * If set, an information icon with popover text appears next to the first field\n\t\t * label to display help text to the user.\n\t\t * Use plain text to allow for translation.\n\t\t * If you don't want to add helper content, leave this property empty.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.description If set, an information icon with popover text appears next to the field start label to display help text to the user. Use plain text to allow for translation. If you don't want to add helper content, leave this property empty.\n\t\t * @uib.fieldType string\n\t\t * @uib.label Start Helper content\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContentStart: {},\n\t\t/**\n\t\t * If set, an information icon with popover text appears next to the second field\n\t\t * label to display help text to the user.\n\t\t * Use plain text to allow for translation.\n\t\t * If you don't want to add helper content, leave this property empty.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.description If set, an information icon with popover text appears next to the field end label to display help text to the user. Use plain text to allow for translation. If you don't want to add helper content, leave this property empty.\n\t\t * @uib.fieldType string\n\t\t * @uib.label End Helper content\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContentEnd: {},\n\t\t/**\n\t\t * Name of the input field. Dispatched along with the field value\n\t\t * when a user interacts with the field.\n\t\t * @type {string}\n\t\t * @uib.label Identifier\n\t\t * @uib.description Name of the input field.\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * The value of the first input field.\n\t\t * @type {string}\n\t\t * @uib.description The value of the start input field. Unless the input field has pre-populated data, leave this property empty.\n\t\t * @uib.label Start value\n\t\t */\n\t\tvalueStart: {default: '', manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, overrides automatic updates to the `valueStart` property.\n\t\t * An action with type `NOW_DATE_TIME_INTERVAL#VALUE_START_SET` is dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the start value property. Use the the start value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValueStart: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * The value of the second input field.\n\t\t * @type {string}\n\t\t * @uib.description The value of the end input field. Unless the input field has pre-populated data, leave this property empty.\n\t\t * @uib.label End value\n\t\t */\n\t\tvalueEnd: {default: '', manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, overrides automatic updates to the `valueEnd` property.\n\t\t * An action with type `NOW_DATE_TIME_INTERVAL#VALUE_END_SET` is dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the end value property. Use the the end value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValueEnd: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, allows users to select duplicate values for start and end inputs.\n\t\t * @type {boolean}\n\t\t * @uib.label Enable same day\n\t\t * @uib.description Allows users to select duplicate values for start and end inputs.\n\t\t * @uib.fieldType boolean\n\t\t */\n\t\tenableSameDay: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the input size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.description Sets the input size.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the input spacing.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.description Sets the input spacing.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}, {\"label\": \"Large\", \"value\": \"lg\"}]\n\t\t * @uib.defaultValue sm\n\t\t */\n\t\tgap: {\n\t\t\tdefault: 'sm',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md', 'lg'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the required indicator is hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, the required indicator is hidden. Use this for forms where most fields are required, along with the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the field is in an incorrect state,\n\t\t * which is reflected in the field display.\n\t\t * @type {boolean}\n\t\t * @uib.description When true, indicates that the field is in an incorrect state, which is reflected in the field display.\n\t\t */\n\t\tinvalid: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, overrides automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_DATE_TIME_INTERVAL#INVALID_SET` is dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the user is not required to select an interval\n\t\t * in order to complete the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to indicate that the field is optional.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, indicates that the user must select an interval in order to\n\t\t * complete the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to indicate that the field is required.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Configures the Unicode Technical Standard (UTS) format of the input value.\n\t\t * See UTS and other supported format characters in the [`date-fns` library](https://date-fns.org/v2.28.0/docs/format).\n\t\t * @type {string}\n\t\t * @uib.description Configures the Unicode Technical Standard (UTS) format of the input value.\n\t\t * @uib.label Format pattern\n\t\t */\n\t\tformat: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Defines whether the input layout is responsive to the viewport or always vertical.\n\t\t * @type {('adaptive'|'vertical')}\n\t\t * @uib.description Defines whether the input layout is responsive to the viewport or always vertical.\n\t\t */\n\t\tadaptive: {\n\t\t\tdefault: 'adaptive',\n\t\t\tschema: {type: 'string', enum: ['adaptive', 'vertical']},\n\t\t},\n\t\t/**\n\t\t * Object containing keys that reference specific HTML elements within the\n\t\t * component. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value(s). These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'input-start' key corresponds to the first inner html `<input>` in\n\t\t * now-date-time. The 'input-end' key corresponds to the second inner html `<input>` in\n\t\t * now-date-time. For properties and accepted values, see [WAI-ARIA - input](https://www.w3.org/TR/wai-aria-1.2/#input).\n\t\t * The 'panel' key corresponds to the date/time picker panel\n\t\t * in now-date-time. For properties and accepted values, see\n\t\t * [WAI-ARIA Date Picker Combobox Example](https://www.w3.org/WAI/ARIA/apg/example-index/combobox/combobox-datepicker.html).\n\t\t * Note: To enforce accessibility standards, the `role` key is not configurable.\n\t\t * @type {{ 'input-start': {'aria-*': string}, 'input-end': {'aria-*': string}, 'panel': {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.defaultValue {\"panel\": {\"aria-label\": \"Calendar\"}}\n\t\t * @uib.description ARIA properties that are set on the inner html. See https://www.w3.org/WAI/ARIA/apg/example-index/combobox/combobox-datepicker.html for properties and accepted values.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\t['input-start']: configAriaLabelSchema,\n\t\t\t\t\t['input-end']: configAriaLabelSchema,\n\t\t\t\t\tpanel: {...configAriaLabelSchema, required: ['aria-label']},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the user cannot interact with the field\n\t\t * or change its value and the field appears unavailable.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to prevent the user from interacting with the field or changing its value.\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the focus is automatically placed inside the input\n\t\t * on page load.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-focus\n\t\t * @uib.description Select to automatically place the focus inside the input on page load.\n\t\t */\n\t\tautofocus: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Hint text displayed in the start input when the user has not yet entered a value. When a placeholder is not provided, the component uses the format as the placeholder.\n\t\t * @type {string}\n\t\t * @uib.label Start placeholder text\n\t\t * @uib.description Placeholder text for the start input field that helps the user understand what input is expected.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholderStart: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Hint text displayed in the end input when the user has not yet entered a value. When a placeholder is not provided, the component uses the format as the placeholder.\n\t\t * @type {string}\n\t\t * @uib.label End placeholder text\n\t\t * @uib.description Placeholder text for the end input field that helps the user understand what input is expected.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholderEnd: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field.\n\t\t * @type {boolean}\n\t\t * @uib.label Read Only\n\t\t * @uib.description Select to make the field read-only and prevent users from modifying the value.\n\t\t */\n\t\treadonly: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Array of inline alert messages that display below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that display below the field.\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {default: [], schema: messagesSchema},\n\t\t/**\n\t\t * When true and `type` is `'date'`, the calendar doesn't show dates outside of the\n\t\t * displayed month.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide adjacent months\n\t\t * @uib.description When true and `type` is `'date'`, the calendar doesn't show dates outside of the displayed month.\n\t\t */\n\t\thideAdjacentDates: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * An array of objects that defines the buttons in the calendar footer. You\n\t\t * can define up to two buttons, set from right to left.\n\t\t *\n\t\t * If defined, overrides `showDefaultFooterActions`. The user is responsible\n\t\t * for setting the `opened` property in response to `action.clickActionType`.\n\t\t *\n\t\t * The keys of each object are properties for `now-button`. See\n\t\t * `now-button` for more documentation on these properties.\n\t\t * @type {{ label: string, variant: string, disabled: boolean, bare: boolean, tooltipContent: string, clickActionType: string, configAria: object, closeCalendar: boolean}[]}\n\t\t * @uib.description An array of objects that defines the buttons in the calendar footer.\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"label\" }\n\t\t */\n\t\tfooterActions: {\n\t\t\tdefault: [],\n\t\t\tschema: footerActionsSchema,\n\t\t},\n\t\t/**\n\t\t * When true, shows the default footer actions.\n\t\t * This property is always overridden by the `footerActions` property.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to show default footer actions.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tshowDefaultFooterActions: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Properties to configure the calendar panel.\n\t\t *\n\t\t * Valid keys are:\n\t\t *  - position: Array of possible positions in which to place the panel relative to its target. Default: `[\"bottom-start top-start\",\"top-start bottom-start\",\"bottom-end top-end\",\"top-end bottom-end\"]`\n\t\t *  - offset: Number of pixels to offset the panel from the trigger.\n\t\t *\n\t\t * Use these keys to position and scale the panel relative to the panel target.\n\t\t *\n\t\t * @type {{ position: Array<{target: string, content: string}> }}\n\t\t * @uib.description Properties to configure the calendar panel.\n\t\t */\n\t\tpanelFitProps: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tposition: {type: 'array', items: {type: 'string'}},\n\t\t\t\t\toffset: {\n\t\t\t\t\t\toneOf: [{type: 'number'}, {type: 'array', items: {type: 'number'}}],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the first day of the week on the calendar panel.\n\t\t * Value can range from `0` (Sunday) to `6` (Saturday).\n\t\t * Only applies when the `type` property is `day` or `week`.\n\t\t * @type {(0|1|2|3|4|5|6)}\n\t\t * @uib.description Sets the first day of the week on the calendar panel.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Sunday\", \"value\": \"0\"}, {\"label\": \"Monday\", \"value\": \"1\"}, {\"label\": \"Tuesday\", \"value\": \"2\"}, {\"label\": \"Wednesday\", \"value\": \"3\"}, {\"label\": \"Thursday\", \"value\": \"4\"}, {\"label\": \"Friday\", \"value\": \"5\"}, {\"label\": \"Saturday\", \"value\": \"6\"}]\n\t\t */\n\t\tfirstDayOfWeek: {\n\t\t\tdefault: 0,\n\t\t\tschema: {type: 'integer', enum: [0, 1, 2, 3, 4, 5, 6]},\n\t\t},\n\t\t/**\n\t\t * When true and type is `week-year`, the date calculation accounts for an ISO week.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to have the date calculation account for an ISO week. Defaults the first day of the week to Monday.\n\t\t * @uib.defaultValue false\n\t\t * @uib.label ISO Calendar\n\t\t */\n\t\tisoWeek: {default: false, schema: {type: 'boolean'}},\n\n\t\t/**\n\t\t * When true, weekend days can't be selected on the `'date'` calendar type. Weekend days are\n\t\t * determined by the `weekendDays` property.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to turn off weekend days. Weekend days are determined by the `weekendDays` property.\n\t\t */\n\t\tdisableWeekends: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Sets which days are weekend days. Defaults to `6` (Saturday) and `0` (Sunday).\n\t\t * @type {number[]}\n\t\t * @uib.description Sets which days are weekend days. Defaults to `6` (Saturday) and `0` (Sunday).\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Saturday and Sunday\", \"value\": \"[6,0]\"}, {\"label\": \"Friday and Saturday\", \"value\": \"[5,6]\"}]\n\t\t */\n\t\tweekendDays: {\n\t\t\tdefault: [6, 0],\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {type: 'integer', enum: [0, 1, 2, 3, 4, 5, 6]},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the locale value.\n\t\t * Valid values are the locale objects in the date-fns library.\n\t\t * @type {(object|string)}\n\t\t */\n\t\tlocale: {\n\t\t\tschema: {type: ['object', 'string']},\n\t\t},\n\t\t/**\n\t\t * Sets the length of the weekday headings.\n\t\t * @type {('short'|'narrow')}\n\t\t * @uib.label Day of week headings\n\t\t * @uib.description Sets the length of the weekday headings.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Short\", \"value\": \"short\"}, {\"label\": \"Narrow\", \"value\": \"narrow\"}]\n\t\t * @uib.defaultValue narrow\n\t\t */\n\t\tweekdayHeadings: {\n\t\t\tdefault: 'narrow',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['short', 'narrow'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configures an active preset to be selected in the preset panel.\n\t\t * @type {{keyword: string, presetType: string, duration: number, label: string}}\n\t\t * @uib.label Active preset\n\t\t * @uib.description Configures an active preset to be selected in the preset panel.\n\t\t */\n\t\tactivePreset: {\n\t\t\tdefault: {},\n\t\t\tschema: presetSchema,\n\t\t},\n\t\t/**\n\t\t * When true, the \"Custom\" preset is placed at the bottom of the preset panel.\n\t\t * @type {boolean}\n\t\t * @uib.label Set the \"Custom\" preset position to the bottom\n\t\t * @uib.description When selected, the \"Custom\" preset is placed at the bottom of the preset panel.\n\t\t */\n\t\tcustomPresetPositionBottom: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Sets the default start time for the interval.\n\t\t * @type {string}\n\t\t * @uib.label Default start time\n\t\t * @uib.description Sets the default start time for the interval.\n\t\t */\n\t\tinitialTimeStart: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * Sets the default end time for the interval.\n\t\t * @type {string}\n\t\t * @uib.label Default end time\n\t\t * @uib.description Sets the default end time for the interval.\n\t\t */\n\t\tinitialTimeEnd: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * Text alignment within an input field.\n\t\t * - `start`: Align the text to the start of the input field.\n\t\t * - `center`: Align the text to the center of the input field.\n\t\t * - `end`: Align the text to the end of the input field.\n\t\t * Default: `start`.\n\t\t * @type {('start'|'center'|'end')}\n\t\t * @uib.label Text align\n\t\t * @uib.description Text alignment within an input field.\n\t\t * @uib.defaultValue start\n\t\t */\n\t\talign: {\n\t\t\tdefault: 'start',\n\t\t\tschema: {type: 'string', enum: ['start', 'center', 'end']},\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout is vertical (stacked view) or horizontal (inline view).\n\t\t * In a horizontal layout, a typical component has three containers: label, form-field, and slotted content (also known as label end).\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, fields, and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field, and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, fields, and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Configures the label value of the default footer action buttons.\n\t\t * Allows for the use of default footer action functionality with\n\t\t * custom label names.\n\t\t * @type {string}\n\t\t * @uib.label Default Footer Action Labels\n\t\t * @uib.description Allows for custom naming of default footer action buttons.\n\t\t * @uib.fieldType json\n\t\t */\n\t\tdefaultFooterActionLabels: {\n\t\t\tdefault: {apply: 'Apply', cancel: 'Cancel'},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Indicates whether the user has manually set the date within\n\t\t * the date-time input field.\n\t\t * @private\n\t\t */\n\t\tisDateManuallySet: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Configures the range of years visible in the calendar.\n\t\t * Can either be relative to the current year, or an absolute range.\n\t\t * The default range is 50 years before and after the current year.\n\t\t * Note: years can be input in the field even if outside of this range.\n\t\t * @type {{start: number, end: number, relative: boolean}}\n\t\t * @uib.description Configures the range of years visible in the calendar. Can either be relative to the current year, or an absolute range. Note: years can be input in the field even if outside of this range.\n\t\t */\n\t\tyearRange: {\n\t\t\tdefault: {start: -50, end: 50, relative: true},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tstart: {type: 'number'},\n\t\t\t\t\tend: {type: 'number'},\n\t\t\t\t\trelative: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for field decorators on the inline-start side\n\t\t * of the start input field.\n\t\t */\n\t\t'start-input-start': {},\n\t\t/**\n\t\t * Slot for field decorators on the inline-end side\n\t\t * of the start input field.\n\t\t */\n\t\t'start-input-end': {},\n\t\t/**\n\t\t * Slot for field decorators on the inline-start side\n\t\t * of the end input field.\n\t\t */\n\t\t'end-input-start': {},\n\t\t/**\n\t\t * Slot for field decorators on the inline-end side\n\t\t * of the end input field.\n\t\t */\n\t\t'end-input-end': {},\n\t\t/**\n\t\t * Slot for label end metadata on the StartDate input. Located at the end of the label.\n\t\t */\n\t\t'start-label-end': {},\n\t\t/**\n\t\t * Slot for label end metadata on the EndDate input. Located at the end of the label.\n\t\t */\n\t\t'end-label-end': {},\n\t\t/**\n\t\t * Slot for label on the StartDate input. Located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'start-label-inline': {},\n\t\t/**\n\t\t * Slot for label on the EndDate input. Located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'end-label-inline': {},\n\t\t/**\n\t\t * Slot for label on the StartDate input. Located at the start of the label. For the `horizontal` layout, it is placed after the label.\n\t\t */\n\t\t'start-label-start': {},\n\t\t/**\n\t\t * Slot for label on the EndDate input. Located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'end-label-start': {},\n\t},\n\tinitialState: {\n\t\tactiveInput: null,\n\t\tpresetValueStart: null,\n\t\tpresetValueEnd: null,\n\t\tprevActivePreset: {},\n\t\tpositionTarget: null,\n\t\tprefix: 'NOW_DATE_TIME_INTERVAL#',\n\t\tprevValue: null,\n\t\tshouldFocusCalendar: false,\n\t\tmode: 'interval',\n\t},\n\tactionHandlers: {\n\t\t...actions,\n\t\t[COMPONENT_DOM_READY]({properties, host}) {\n\t\t\tconst {size} = properties;\n\t\t\tif (size === 'md') {\n\t\t\t\taddClassToFirstElementInSlot(\"slot[name = 'start-input-start']\", host);\n\t\t\t\taddClassToFirstElementInSlot(\"slot[name = 'end-input-start']\", host);\n\t\t\t}\n\t\t},\n\t\t['NOW_DATE_TIME_PRESETS#SELECTED_ITEM_SET']: ({\n\t\t\taction: {payload},\n\t\t\tupdateState,\n\t\t\tupdateProperties,\n\t\t}) => {\n\t\t\tlet {value, presetValueStart, presetValueEnd} = payload;\n\n\t\t\tupdateState({\n\t\t\t\tpresetValueStart,\n\t\t\t\tpresetValueEnd,\n\t\t\t});\n\n\t\t\tupdateProperties({\n\t\t\t\tactivePreset: value,\n\t\t\t\tvalueStart: presetValueStart,\n\t\t\t\tvalueEnd: presetValueEnd,\n\t\t\t});\n\t\t},\n\t\t['NOW_DATE_TIME_PRESETS#PRESET_CLICKED']: ({\n\t\t\tstate,\n\t\t\taction: {payload},\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {keyword} = payload;\n\n\t\t\tif (keyword === 'Custom') {\n\t\t\t\tconst hoistedPresets = getHoistedPreset();\n\t\t\t\tconst focusFromPresetsToCalendar = true;\n\t\t\t\tfocusCalendar(\n\t\t\t\t\thoistedPresets,\n\t\t\t\t\t{\n\t\t\t\t\t\tstate: {...state, shouldFocusCalendar: true},\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t},\n\t\t\t\t\tfocusFromPresetsToCalendar,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t['PRIVATE#FOCUS_CALENDAR']({\n\t\t\thost,\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t}) {\n\t\t\tconst {opened} = properties;\n\t\t\tif (opened) {\n\t\t\t\tfocusCalendar(host, {\n\t\t\t\t\tstate: {...state, shouldFocusCalendar: true},\n\t\t\t\t\tupdateState,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tupdateState({shouldFocusCalendar: true});\n\t\t\t\tdispatch('NOW_DATE_TIME_INTERVAL#OPENED_SET', {value: true});\n\t\t\t}\n\t\t},\n\t\t['PRIVATE#VALIDATE']({\n\t\t\tcontext,\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\tstate,\n\t\t\tupdateProperties,\n\t\t\taction,\n\t\t}) {\n\t\t\tconst {\n\t\t\t\tformat,\n\t\t\t\ttype,\n\t\t\t\treadonly,\n\t\t\t\tdisabled,\n\t\t\t\tisoWeek,\n\t\t\t\trequired,\n\t\t\t\tlocale,\n\t\t\t\tname,\n\t\t\t} = properties;\n\t\t\tlet {fieldValue, input, initiator, shouldRevertValue} = action.payload;\n\t\t\tlet {valueStart, valueEnd} = properties;\n\t\t\tconst {prefix} = state;\n\t\t\tlet errors = [];\n\t\t\tlet inputName;\n\t\t\t// on bootstrap, use the values from properties\n\t\t\t// empty string on boostrap should be seen as undefined\n\t\t\tif (initiator === COMPONENT_DOM_TREE_READY) {\n\t\t\t\tfieldValue =\n\t\t\t\t\tinput === 'start' ? properties?.valueStart : properties?.valueEnd;\n\t\t\t\tvalueStart = valueStart || undefined;\n\t\t\t\tvalueEnd = valueEnd || undefined;\n\t\t\t}\n\t\t\tif (initiator === 'NOW_POPOVER#OPENED_SET' && shouldRevertValue) {\n\t\t\t\tif (input === 'start') {\n\t\t\t\t\tvalueStart = fieldValue;\n\t\t\t\t} else if (input === 'end') {\n\t\t\t\t\tvalueEnd = fieldValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!input) {\n\t\t\t\tinput = state?.activeInput?.appendToPayload?.input;\n\t\t\t}\n\n\t\t\tlet valStart = validateInput({\n\t\t\t\tfieldValue: valueStart,\n\t\t\t\tcontext,\n\t\t\t\tproperties,\n\t\t\t\tupdateProperties,\n\t\t\t\tinitiator,\n\t\t\t\tinput: 'start',\n\t\t\t});\n\t\t\tlet valEnd = validateInput({\n\t\t\t\tfieldValue: valueEnd,\n\t\t\t\tcontext,\n\t\t\t\tproperties,\n\t\t\t\tupdateProperties,\n\t\t\t\tinitiator,\n\t\t\t\tinput: 'end',\n\t\t\t});\n\n\t\t\tconstructErrors(valStart.err, errors);\n\t\t\tconstructErrors(valEnd.err, errors);\n\t\t\tlet isInvalid = valStart.val || valEnd.val;\n\t\t\tif (!(readonly || disabled)) {\n\t\t\t\tconst {errorId: configErrorID, valid: configValid} =\n\t\t\t\t\tcheckIfConfigurationIsValid({\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tproperties,\n\t\t\t\t\t\tupdateProperties,\n\t\t\t\t\t});\n\t\t\t\tconstructErrors(configErrorID, errors);\n\t\t\t\tisInvalid = isInvalid || !configValid;\n\t\t\t}\n\n\t\t\tif (initiator === 'SEISMIC_COMPONENT_DOM_TREE_READY') {\n\t\t\t\tinputName = name ?? `input-${properties.nowId}`;\n\t\t\t} else {\n\t\t\t\tinputName = name\n\t\t\t\t\t? `${name}-${input}`\n\t\t\t\t\t: `input-${properties.nowId}-${input}`;\n\t\t\t}\n\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: `${prefix}INVALID_SET`,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname: inputName,\n\t\t\t\t\t\tfieldValue: fieldValue,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\tvalueEnd,\n\t\t\t\t\t\tisStartInvalid: valStart.val,\n\t\t\t\t\t\tisEndInvalid: valEnd.val,\n\t\t\t\t\t\tvalue: isInvalid,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\terrorId: errors,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tconst {isoDate: isoDateStart} = isDateTimeValueValid({\n\t\t\t\tformat,\n\t\t\t\tisoWeek,\n\t\t\t\tlocale,\n\t\t\t\trequired,\n\t\t\t\tvalue: valueStart,\n\t\t\t});\n\n\t\t\tconst {isoDate: isoDateEnd} = isDateTimeValueValid({\n\t\t\t\tformat,\n\t\t\t\tisoWeek,\n\t\t\t\tlocale,\n\t\t\t\trequired,\n\t\t\t\tvalue: valueEnd,\n\t\t\t});\n\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_DATE_TIME_INTERVAL#VALUES_START_END_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname: inputName,\n\t\t\t\t\t\tstartValue: valueStart || '',\n\t\t\t\t\t\tendValue: valueEnd || '',\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tisoDateStart,\n\t\t\t\t\t\tisoDateEnd,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Automatically updates when the user opens or closes the visual picker.\n\t\t * Use `manage-opened` to override the default behavior and handle the\n\t\t * `NOW_DATE_TIME_INTERVAL#OPENED_SET` action manually.\n\t\t * @type {boolean}\n\t\t */\n\t\t'NOW_DATE_TIME_INTERVAL#OPENED_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {value: {type: 'boolean'}},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the component's visual date items are set.\n\t\t * Payload is an array containing one or more arrays, each representing\n\t\t * a \"row\" on the date grid. Each row contains items corresponding to\n\t\t * a given date item.\n\t\t * Set the `manage-selected-item` property to override the default\n\t\t * behavior and handle this action manually. Payload key `value`\n\t\t * contains the array of date grid rows and items.\n\t\t * @type {{value: []}}\n\t\t */\n\t\t'NOW_DATE_TIME_INTERVAL#ITEMS_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {value: itemsSchema},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user clicks on a footer action item. Payload\n\t\t * includes a reference to the clicked item and action. Set\n\t\t * `action.clickActionType` to override the action type.\n\t\t * @type {{action: Object}}\n\t\t */\n\t\t'NOW_DATE_TIME_INTERVAL#FOOTER_ACTION_CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\taction: {\n\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tvariant: {\n\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t\t'primary',\n\t\t\t\t\t\t\t\t\t\t\t'primary-positive',\n\t\t\t\t\t\t\t\t\t\t\t'primary-negative',\n\t\t\t\t\t\t\t\t\t\t\t'secondary',\n\t\t\t\t\t\t\t\t\t\t\t'secondary-positive',\n\t\t\t\t\t\t\t\t\t\t\t'secondary-negative',\n\t\t\t\t\t\t\t\t\t\t\t'tertiary',\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tlabel: {type: 'string'},\n\t\t\t\t\t\t\t\t\tbare: {type: 'boolean'},\n\t\t\t\t\t\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\t\t\t\t\t\ttooltipContent: {type: 'string'},\n\t\t\t\t\t\t\t\t\tclickActionType: {type: 'string'},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{type: 'object', properties: {isDefault: {const: true}}},\n\t\t\t\t\t\t\t{type: 'object', properties: {isToday: {const: true}}},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the field.\n\t\t * Payload contains these properties:\n\t\t * - `name`: String. Name of the fieldValue that was set.\n\t\t * - `fieldValue`: String. Value of the field that was set.\n\t\t * - `valueStart`: String. Value entered in the start field.\n\t\t * - `valueEnd`: String. Value entered in the end field.\n\t\t * - `isStartInvalid`: Boolean. Validity of the start field value.\n\t\t * - `isEndInvalid`: Boolean. Validity of the end field valuee.\n\t\t * - `value`: Boolean. Overall validity of the date-time-interval.\n\t\t * - `type`: String. Value of the `type` property.\n\t\t * - `format`: String. Value of the `format` property.\n\t\t * - `errorId`: Array. Value of the `errorId` for both the start and end fields.\n\t\t *\n\t\t * Set the `manage-invalid` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: boolean, fieldValue: string, type: string, format: string, errorId: string}}\n\t\t */\n\t\t'NOW_DATE_TIME_INTERVAL#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\tvalueStart: {type: 'string'},\n\t\t\t\t\tvalueEnd: {type: 'string'},\n\t\t\t\t\tisStartInvalid: {type: 'boolean'},\n\t\t\t\t\tisEndInvalid: {type: 'boolean'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t\terrorId: {type: 'array', items: {type: 'string'}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the first field upon manually\n\t\t * entering a date, or when the field value changes via a calendar selection.\n\t\t * Only dispatches when the value is valid.\n\t\t * Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: String. Value entered in the field.\n\t\t * - `format`: String. Value of the `format` property.\n\t\t * - `type`: String. Value of the `type` property.\n\t\t * - `date`: The Date() constructor of the value.\n\t\t * - `isoDate`: String. The ISO formatted value.\n\t\t *\n\t\t * Set the `manage-value` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: string, format: string, date: Date, isoDate: string}}\n\t\t */\n\t\t'NOW_DATE_TIME_INTERVAL#VALUE_START_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t\tdate: {type: 'object'},\n\t\t\t\t\tisoDate: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Dispatched when the user moves focus away from the second field upon manually\n\t\t * entering a date, or when the field value changes via a calendar selection.\n\t\t * Only dispatches when the value is valid.\n\t\t * Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `value`: String. Value entered in the field.\n\t\t * - `format`: String. Value of the `format` property.\n\t\t * - `type`: String. Value of the `type` property.\n\t\t * - `date`: The Date() constructor of the value.\n\t\t * - `isoDate`: String. The ISO formatted value.\n\t\t *\n\t\t * Set the `manage-value` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, value: string, format: string, date: Date, isoDate: string}}\n\t\t */\n\t\t'NOW_DATE_TIME_INTERVAL#VALUE_END_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t\tdate: {type: 'object'},\n\t\t\t\t\tisoDate: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Dispatched when the user moves focus away from either the start\n\t\t * or end field. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `startValue`: String. Value entered in the start field.\n\t\t * - `endValue`: String. Value entered in the end field.\n\t\t * - `type`: String. Value of the `type` property.\n\t\t * - `format`: Value of the `format` property.\n\t\t * - `isoDateStart`: String. The ISO formatted value of the start date.\n\t\t * - `isoDateEnd`: String. The ISO formatted value of the end date.\n\t\t * Set the `manage-value` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{name: string, startValue: string, endValue: string, type: string, format: string, startDate: Date, endDate: Date, isoDateStart: string, isoDateEnd: string}}\n\t\t */\n\t\t'NOW_DATE_TIME_INTERVAL#VALUES_START_END_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tstartValue: {type: 'string'},\n\t\t\t\t\tendValue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t\tformat: {type: 'string'},\n\t\t\t\t\tisoDateStart: {type: 'string'},\n\t\t\t\t\tisoDateEnd: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Dispatched when the user enters data in the field by typing or\n\t\t * pasting text. The system does not validate the value or update\n\t\t * the `value` property. Payload contains these properties:\n\t\t * - `name`: String. Value of the `name` property.\n\t\t * - `data`: String. Value entered in the field that caused the event to fire.\n\t\t * - `fieldValue`: String. Current value of the field when the event fired.\n\t\t * @type {{name: string, data: string, fieldValue: string, format: string, date: Date, isoDate: string, valid: boolean}}\n\t\t */\n\t\t'NOW_DATE_TIME_INTERVAL#INPUT': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tdata: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user presses the Enter key while focus is inside\n\t\t * the input.\n\t\t * @type {{name: string, value: string, format: string, date: Date, isoDate: string, valid: boolean}}\n\t\t */\n\t\t'NOW_DATE_TIME_INTERVAL#ENTER_KEYDOWN': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t\ttype: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\tconst focusTarget = host.shadowRoot\n\t\t\t\t\t\t.querySelector('now-input-date-time.now-date-time-input')\n\t\t\t\t\t\t.shadowRoot.querySelector('now-input.now-input-date-time-input')\n\t\t\t\t\t\t.shadowRoot.querySelector('input.now-input-native');\n\n\t\t\t\t\tif (focusTarget) {\n\t\t\t\t\t\tfocusTarget.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: deferBehavior,\n\t\t\toptions: {\n\t\t\t\tevents: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'mouseenter',\n\t\t\t\t\t\ttrigger: 'now-input-date-time',\n\t\t\t\t\t\ttarget: 'now-date-time-calendar',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\tresizeBehavior,\n\t],\n\tstyles,\n\tview,\n});\n","import {t} from 'sn-translate';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-select.scss';\nimport '@servicenow/now-dropdown';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-popover';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\nimport {\n\trenderFormFieldMessages,\n\trenderFormFieldLabel,\n\trenderLabelEnd,\n\tgetAriaDescribedByList,\n} from '@servicenow/now-input';\nimport {messagesSchema} from '@servicenow/now-input';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport deferBehavior from '@servicenow/behavior-defer';\nimport {\n\titemsSchema,\n\tconstrainSchema,\n\tsetActiveItem,\n} from '@servicenow/now-dropdown';\nimport {makeRedispatchEffect} from '@servicenow/library-enhanced-utils';\nimport {flatMap, pick, transform, isNumber} from 'lodash';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {fieldLayoutSchema} from '@servicenow/now-input';\nimport {\n\tfilterAriaAttributes,\n\tgetActiveElement,\n} from '@servicenow/library-enhanced-utils';\n\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\n\n// We're not using the library-enhanced-utils `getColumnStyles` as we had to\n// add the join of ' 0 ' to accomodate the two dummny columns in the grid\n// template for now-select only. We'll also early return anything other than 3\n// column parameters supplied. See DEF0467107.\n\nconst getColumnStyles = (columns) => {\n\tif (columns?.length !== 3) return {};\n\tconst customColumn =\n\t\tcolumns?.map((c) => `minmax(0, ${c})`)?.join(' 0 ') ?? '';\n\treturn customColumn ? {'grid-template-columns': customColumn} : {};\n};\n\nconst announceMessage = (label, content, dispatch) => {\n\tconst announcement = label + ' ' + content.content;\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announcement,\n\t\ttype: 'polite',\n\t});\n};\n\nconst getSelected = (items, valueId) => {\n\tconst selected = flattenItems(items).find((item) => item.id === valueId);\n\tif (selected) {\n\t\treturn selected.label;\n\t}\n};\n\nconst flattenItems = (items) => flatMap(items, (item) => item.children || item);\n\nconst focusTrigger = (host) => {\n\tconst trigger = host.shadowRoot.querySelector('.now-select-trigger');\n\tif (trigger) {\n\t\ttrigger.focus();\n\t}\n};\n\nconst getDropdownListConstrain = (constrain) => {\n\treturn transform(constrain, (result, value, key) => {\n\t\tif (key === 'height' || key === 'minHeight' || key === 'maxHeight') {\n\t\t\tresult[key] = isNumber(value) ? `${value}px` : value;\n\t\t}\n\t});\n};\n\nconst matchKeywordWithItem = (flattened, key, dispatch, updateState) => {\n\tconst itemIndex = flattened.findIndex((item) =>\n\t\titem.label.toLowerCase().startsWith(key.toLowerCase()),\n\t);\n\tconst shouldDispatch = itemIndex >= 0 && !flattened[itemIndex].disabled;\n\t//Empty the previously entered search key after every timeout\n\tupdateState({prevEnteredKey: ''});\n\tdispatch(() => {\n\t\treturn {\n\t\t\ttype: 'NOW_SELECT#SELECTED_ITEM_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: flattened[itemIndex]?.id,\n\t\t\t\titem: flattened[itemIndex],\n\t\t\t},\n\t\t\tshouldDispatch,\n\t\t};\n\t});\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {opened, activeItem} = state;\n\tconst {\n\t\tsize,\n\t\tsearch,\n\t\tdisabled,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\titems,\n\t\titemsListConstrain,\n\t\trequired,\n\t\treadonly,\n\t\toptional,\n\t\tlabel,\n\t\thelperContent,\n\t\tmessages,\n\t\tselectedItem,\n\t\tautofocus,\n\t\tnowId,\n\t\tconfigAria,\n\t\tfieldLayout,\n\t\twrapLabel,\n\t} = state.properties;\n\n\tconst selectedLabel = getSelected(items, selectedItem);\n\tconst constrain = {\n\t\tmaxHeight: 300,\n\t\twidth: 'target',\n\t\tmaxWidth: 'target',\n\t\t...itemsListConstrain,\n\t};\n\n\tconst configAriaDropdownList = {\n\t\tpanel: {\n\t\t\t'aria-required': required ? 'true' : 'false',\n\t\t\t...filterAriaAttributes(configAria, 'panel'),\n\t\t},\n\t};\n\n\tif (label) configAriaDropdownList.panel['aria-label'] = label;\n\tconst {layout, columns} = fieldLayout;\n\n\tif (readonly) {\n\t\treturn (\n\t\t\t<now-input\n\t\t\t\tclass={{'now-select-input': true, [`-${size}`]: size}}\n\t\t\t\trequired={required}\n\t\t\t\tautofocus={autofocus}\n\t\t\t\tname={name}\n\t\t\t\tsize={size}\n\t\t\t\thide-required-indicator={hideRequiredIndicator}\n\t\t\t\thelper-content={helperContent}\n\t\t\t\toptional={optional}\n\t\t\t\tlabel={label}\n\t\t\t\tmessages={messages}\n\t\t\t\tvalue={!selectedLabel ? '—' : selectedLabel}\n\t\t\t\treadonly\n\t\t\t\tfield-layout={fieldLayout}\n\t\t\t\twrap-label={wrapLabel}\n\t\t\t>\n\t\t\t\t<div slot=\"start\" className=\"now-select-input-slot\">\n\t\t\t\t\t<slot\n\t\t\t\t\t\tname=\"start\"\n\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-slotchange={() => dispatch('PRIVATE#SET_DECORATORS_START')}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div slot=\"end\" className=\"now-select-input-slot\">\n\t\t\t\t\t<slot\n\t\t\t\t\t\tname=\"end\"\n\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-slotchange={() => dispatch('PRIVATE#SET_DECORATORS_END')}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<slot slot=\"label-inline\" name=\"label-inline\" />\n\t\t\t\t<slot slot=\"label-end\" name=\"label-end\" />\n\t\t\t\t<slot slot=\"label-start\" name=\"label-start\" />\n\t\t\t</now-input>\n\t\t);\n\t}\n\n\tconst listId = `now-dropdown-list-${nowId}`;\n\treturn (\n\t\t<div\n\t\t\tstyle={\n\t\t\t\tlayout === 'horizontal' ? {...getColumnStyles(columns)} : undefined\n\t\t\t}\n\t\t\tclass={{\n\t\t\t\t'now-select': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t\t['-' + layout]: layout,\n\t\t\t\t'will-wrap': wrapLabel,\n\t\t\t}}\n\t\t>\n\t\t\t{renderFormFieldLabel(\n\t\t\t\tnowId,\n\t\t\t\tinvalid,\n\t\t\t\trequired,\n\t\t\t\toptional,\n\t\t\t\tlabel,\n\t\t\t\thelperContent,\n\t\t\t\thideRequiredIndicator,\n\t\t\t\t'span',\n\t\t\t\tlayout,\n\t\t\t\topened,\n\t\t\t\twrapLabel,\n\t\t\t)}\n\t\t\t<div>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-select-start-slot': true,\n\t\t\t\t\t\t'has-decorator': state.decoratorsStart,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<slot\n\t\t\t\t\t\tname=\"start\"\n\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-slotchange={() => dispatch('PRIVATE#SET_DECORATORS_START')}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<now-popover\n\t\t\t\tbare\n\t\t\t\tconstrain={pick(constrain, ['width', 'minWidth', 'maxWidth'])}\n\t\t\t\tmanage-opened\n\t\t\t\topened={opened}\n\t\t\t\tinteraction-type=\"listbox\"\n\t\t\t\tappend-to-payload={{isListbox: true}}\n\t\t\t\tdisable-scroll\n\t\t\t\tappend-to-meta={{componentId: nowId}}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tid={`form-field-${nowId}`}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-select-trigger': true,\n\t\t\t\t\t\t'now-form-field': true,\n\t\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t\t'is-open': opened,\n\t\t\t\t\t}}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded={String(opened)}\n\t\t\t\t\taria-controls={`${listId}-listbox`}\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-labelledby={`form-field-${nowId}-label`}\n\t\t\t\t\taria-describedby={getAriaDescribedByList({\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\toptional,\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\tmessages,\n\t\t\t\t\t\tlayout,\n\t\t\t\t\t})}\n\t\t\t\t\t{...filterAriaAttributes(configAria, 'trigger')}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-invalid={invalid ? 'true' : 'false'}\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-select-trigger-label': true,\n\t\t\t\t\t\t\t'has-decorator': state.decoratorsStart,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{selectedLabel}\n\t\t\t\t\t</span>\n\t\t\t\t\t{required && (\n\t\t\t\t\t\t<span className=\"now-select-trigger-required-label now-a11y-label\">\n\t\t\t\t\t\t\t({t('Required')})\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-select-trigger-icon': true,\n\t\t\t\t\t\t\t[`has-${state.decoratorsEnd}-decorators`]: state.decoratorsEnd,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon=\"caret-down-outline\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t/>\n\t\t\t\t</button>\n\t\t\t\t<now-dropdown-list\n\t\t\t\t\tdefer\n\t\t\t\t\tslot=\"content\"\n\t\t\t\t\tstyle={getDropdownListConstrain(constrain)}\n\t\t\t\t\titems={items}\n\t\t\t\t\tsearch={search}\n\t\t\t\t\tmanage-selected-items\n\t\t\t\t\tselected-items={selectedItem ? [selectedItem] : undefined}\n\t\t\t\t\tactive-item={activeItem}\n\t\t\t\t\tconfig-aria={configAriaDropdownList}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tappend-to-meta={{componentId: nowId}}\n\t\t\t\t\tscreen-reader-id={opened ? listId : undefined}\n\t\t\t\t/>\n\t\t\t</now-popover>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-select-end-slot': true,\n\t\t\t\t\t[`has-${state.decoratorsEnd}-decorators`]: state.decoratorsEnd,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<slot\n\t\t\t\t\tname=\"end\"\n\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-keydown={(e) => {\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ton-slotchange={() => dispatch('PRIVATE#SET_DECORATORS_END')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{layout === 'horizontal' && renderLabelEnd()}\n\t\t\t<div className=\"now-form-field-messages\">\n\t\t\t\t{renderFormFieldMessages(nowId, messages, 0)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * A form control that enables users to select an option from a dropdown.\n *\n * ```jsx\n * <now-select\n *   label=\"Select an option\"\n *   items={[{id: 'item1', label: 'Item 1'}]}\n *   required />\n * ```\n *\n * @seismicElement now-select\n * @summary Form element that provides a dropdown panel of options for users to select from.\n * @uib.label Select\n * @uib.icon select\n * @uib.description Form element that provides a dropdown panel of options for users to select from.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, search, label, wrapLabel, items, optional, required, hideRequiredIndicator, disabled, helperContent, invalid, manageInvalid, autofocus, selectedItem, manageSelectedItem, messages, itemsListConstrain, configAria, readonly, fieldLayout, landmark\n * @uib.layout.list.children items, selectedItem, manageSelectedItem, itemsListConstrain\n * @uib.layout.list.icon list-outline\n * @uib.layout.label.children label, wrapLabel, required, hideRequiredIndicator, optional, helperContent, readonly\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.accessibility.children configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_SELECT#LIST_VISIBLE, NOW_SELECT#LIST_HIDDEN, NOW_SELECT#INVALID_SET, NOW_SELECT#SELECTED_ITEM_SET, NOW_SELECT#SEARCH_TERM_SET\n * @uib.innerComponents now-dropdown-list, now-icon, now-popover, now-input\n */\ncreateEnhancedElement('now-select', {\n\tproperties: {\n\t\t/**\n\t\t * Sets the select trigger size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the focus is automatically placed inside the input\n\t\t * on page load.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-focus\n\t\t * @uib.description Select to automatically place focus inside the input on page load\n\t\t */\n\t\tautofocus: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Controls how to filter the items as the user types into the integrated search input.\n\t\t * - \"none\": (default) Dropdown list does not display an internal search field.\n\t\t * - \"managed\": Internal input field is rendered, but no automatic filtering occurs.\n\t\t * Use this if you want to manually filter or search for items as the user types outside of the list.\n\t\t * - \"initial\": Internal input field is rendered, and items whose label\n\t\t * or sublabel begins with the input value are displayed. This is case-insensitive.\n\t\t * - \"contains\": Internal input field is rendered, and items whose label\n\t\t * or sublabel contains the input value are displayed. This is case-insensitive.\n\t\t * @type {(\"none\"|\"managed\"|\"initial\"|\"contains\")}\n\t\t * @uib.label Search Behavior\n\t\t * @uib.description Controls how to filter the items as the user types into the integrated search input\n\t\t */\n\t\tsearch: {\n\t\t\tdefault: 'none',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['none', 'managed', 'initial', 'contains'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the user cannot interact with the field\n\t\t * or change its value. Field appears grayed out when disabled.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to disable user click interactions\n\t\t */\n\t\tdisabled: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If set, an iconic button with popover appears next to the field\n\t\t * label for displaying additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.description If set, an iconic button with popover appears next to the field label for displaying additional hint text to the user, such as password requirements or other instructions for completing the field. Use plain text to allow for translation. If you do not want to add helper content, leave this property empty.\n\t\t * @uib.label Helper text\n\t\t * @uib.fieldType string\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * When true, the required indicator is hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Required Indicator\n\t\t * @uib.description When true, the required indicator is hidden. Use this for forms where most fields are required, along with the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Indicates that the field is in an incorrect state,\n\t\t * which is reflected in the field display.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to indicate that the field is in an incorrect state, which is reflected in the field display.\n\t\t */\n\t\tinvalid: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_SELECT#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An array of `DropdownListItem` or `DropdownListSection` objects that are used as\n\t\t * possible items that the user can select from.\n\t\t * @type {(Array.<DropdownListItem> | Array.<DropdownListSection>)}\n\t\t * @uib.label List items\n\t\t * @uib.description Array of items in the dropdown\n\t\t * @uib.defaultValue [{\"id\": \"usr1\",\"label\": \"User 1\",\"sublabel\": \"user1@servicenow.com\",\"avatarProps\": {\"userName\": \"User 1\",\"imageSrc\": \"http://i.pravatar.cc/24?u=33\",\"presence\": \"away\"}},{\"id\": \"usr2\",\"label\": \"User 2\",\"sublabel\": \"user2@servicenow.com\",\"avatarProps\": {\"userName\": \"User 2\",\"imageSrc\": \"http://i.pravatar.cc/24?u=34\",\"presence\": \"busy\"},\"disabled\": true},{\"id\": \"usr3\",\"label\": \"User 3\",\"sublabel\": \"user3@servicenow.com\",\"avatarProps\": {\"userName\": \"User 3\",\"imageSrc\": \"http://i.pravatar.cc/24?u=35\",\"presence\": \"offline\"}}]\n\t\t * @uib.typeMetadata.emptyStateBehavior EMPTY_ARRAY\n\t\t */\n\t\titems: {\n\t\t\trequired: true,\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * An object describing additional sizing constrains for the items list popover.\n\t\t *\n\t\t * Valid keys are (all are optional):\n\t\t *\n\t\t *  - width\n\t\t *  - minWidth\n\t\t *  - maxWidth\n\t\t *  - height\n\t\t *  - minHeight\n\t\t *  - maxHeight\n\t\t *\n\t\t * The value for each property should be a positive integer representing\n\t\t * a pixel value that will be applied to the corresponding content style.\n\t\t * Alternatively, you can specify the string `\"target\"` for width,\n\t\t * minWidth, or maxWidth to have that property match the width of the\n\t\t * input element.\n\t\t *\n\t\t * E.g., To ensure the items list is at least 400x200 pixels:\n\t\t *\n\t\t *  {\n\t\t *\t\tminWidth: 400,\n\t\t *\t\tminHeight: 200\n\t\t *  }\n\t\t *\n\t\t * The default values for this property are:\n\t\t *\n\t\t *  {\n\t\t *\t\twidth: \"target\",\n\t\t *\t\tmaxHeight: 300,\n\t\t *  }\n\t\t *\n\t\t * @type {ItemsListConstrain}\n\t\t * @typedef {Object} ItemsListConstrain\n\t\t * @description Sizing constraints to enforce on the items list. For each\n\t\t * property, a number can be specified which sets that constraint in\n\t\t * pixels.  If the value is \"target\" for width, minWidth, or maxWidth,\n\t\t * the items list is sized to match the width of the input field.\n\t\t * @property {\"target\"|number} width\n\t\t * @property {\"target\"|number} minWidth\n\t\t * @property {\"target\"|number} maxWidth\n\t\t * @property {number} height\n\t\t * @property {number} minHeight\n\t\t * @property {number} maxHeight\n\t\t * @uib.label Item Size Constraints\n\t\t * @uib.description Sizing constraints to enforce on the items list. For each property, a number can be specified which sets that constraint in pixels.  If the value is \"target\" for width, minWidth, or maxWidth, the items list is sized to match the width of the input field\n\t\t * @uib.defaultValue {}\n\t\t */\n\t\titemsListConstrain: {schema: constrainSchema},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-select. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'trigger' key corresponds to the inner html `<button>` that acts as\n\t\t * the trigger in now-select. See\n\t\t * https://www.w3.org/TR/wai-aria-1.2/#button for properties and accepted\n\t\t * values. The 'panel' key corresponds to the inner html `<div>` that acts\n\t\t * as the 'listbox'. See https://www.w3.org/TR/wai-aria-1.2/#listbox for\n\t\t * properties and accepted values.\n\t\t * @type {{ trigger: {'aria-*': string, role: string}, panel: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA Properties\n\t\t * @uib.description Sets ARIA properties on the inner html 'button' and 'listbox'\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ttrigger: configAriaLabelSchema,\n\t\t\t\t\tpanel: configAriaLabelSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Label describing the overall purpose of the input field.\n\t\t * @type {string}\n\t\t * @uib.description Label describing the overall purpose of the select field\n\t\t * @uib.defaultValue Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Array of inline alert messages that are displayed below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that are displayed below the field\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t\tschema: messagesSchema,\n\t\t},\n\t\t/**\n\t\t * Indicates the field is optional and not required to be completed by\n\t\t * the user before completing the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Indicates that the field is optional\n\t\t * @uib.defaultValue false\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Indicates that the user must select an item in the\n\t\t * select dropdown before they can proceed with completing the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to indicate that the user must enter a value in the field before proceeding.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field.\n\t\t * @type {boolean}\n\t\t * @uib.label Read Only\n\t\t * @uib.description Makes the field read-only and prevents users from modifying the value.\n\t\t */\n\t\treadonly: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * The ID of the selected item from the `items` array.\n\t\t * @type {(string|number)}\n\t\t * @uib.description The ID of the selected item from the `items` array\n\t\t */\n\t\tselectedItem: {manageable: true, schema: {type: ['string', 'number']}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selectedItem` property.\n\t\t * An action with type `NOW_SELECT#SELECTED_ITEM_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected item property. Use the selected item set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelectedItem: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slotted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this select\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the select menu opens and renders the content. Unlike\n\t\t * `NOW_SELECT#OPENED_SET`, this action only fires after the select\n\t\t * menu is rendered in the DOM. The `content` property is a node list containing the\n\t\t * select's inner `now-dropdown-list` element.\n\t\t * @type {{content: NodeList}}\n\t\t * @uib.description Dispatched when the select menu is fully rendered to the DOM.\n\t\t */\n\t\t'NOW_SELECT#LIST_VISIBLE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcontent: {type: 'array'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the select menu has been closed and removed. Unlike\n\t\t * `NOW_SELECT#OPENED_SET`, this action only fires after the select\n\t\t * menu is fully removed from the DOM.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the select menu is fully removed from the DOM.\n\t\t */\n\t\t'NOW_SELECT#LIST_HIDDEN': {schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched when the field is blurred if the field is `required`\n\t\t * and the user has not selected an option from the dropdown list.\n\t\t * Set the `manage-invalid` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t * @uib.description Dispatched when the field is blurred if the field is `required` and the user has not selected an option from the dropdown list.\n\t\t */\n\t\t'NOW_SELECT#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user selects an item from the dropdown list.\n\t\t * Payload key `value` contains the `id` of the item selected.\n\t\t * Payload key `item` contains the `object` of the the item selected.\n\t\t * Set the `manage-selected-item` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: (string|number), item: Object}}\n\t\t * @uib.label Item selected\n\t\t * @uib.description A user selects an item from the dropdown list.\n\t\t */\n\t\t'NOW_SELECT#SELECTED_ITEM_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: ['string', 'number']},\n\t\t\t\t\titem: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user inputs text in the internal search field.\n\t\t * @type {{value: string}}\n\t\t * @uib.description Dispatched when the user inputs text in the internal search field.\n\t\t */\n\t\t'NOW_SELECT#SEARCH_TERM_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for field decorator actions on the inline-start (normally left)\n\t\t * side of the select trigger label.\n\t\t */\n\t\tstart: {},\n\t\t/**\n\t\t * Slot for field decorator actions on the inline-end (normally right)\n\t\t * side of the select trigger.\n\t\t */\n\t\tend: {},\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of the label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tinitialState: {\n\t\topened: false,\n\t\tactiveItem: undefined,\n\t\tdecoratorsStart: false,\n\t\tdecoratorsEnd: 0,\n\t\tprevEnteredKey: '',\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect({action, updateState, dispatch, state, properties}) {\n\t\t\t\tif (properties.disabled) return;\n\n\t\t\t\t/* checks if the current focused element is not equal to trigger to prevent the\n                dropdown from showing */\n\t\t\t\tconst activeElement = getActiveElement();\n\t\t\t\tif (\n\t\t\t\t\t!activeElement.classList.contains('now-select-trigger') &&\n\t\t\t\t\t!activeElement.classList.contains('now-dropdown-list-item-container')\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst {key} = action.payload.event;\n\n\t\t\t\tif (key === 'Shift') return;\n\t\t\t\tconst selectItemKeys = [' ', 'Enter'];\n\n\t\t\t\tconst flattened = flattenItems(properties.items);\n\n\t\t\t\tconst activeItemIndex = flattened.findIndex((item) => {\n\t\t\t\t\treturn item.id === state.activeItem;\n\t\t\t\t});\n\n\t\t\t\tconst lastItem = flattened.length - 1;\n\n\t\t\t\tif (selectItemKeys.includes(key)) {\n\t\t\t\t\tif (!state.opened) {\n\t\t\t\t\t\taction.preventDefault();\n\t\t\t\t\t\tupdateState({opened: true});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (properties.search !== 'none') return;\n\t\t\t\t\t\taction.preventDefault();\n\t\t\t\t\t\tconst activeItem = flattened[activeItemIndex];\n\t\t\t\t\t\tif (activeItem && !activeItem.disabled) {\n\t\t\t\t\t\t\tupdateState({opened: false, activeItem: undefined});\n\t\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: 'NOW_SELECT#SELECTED_ITEM_SET',\n\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\tvalue: activeItem.id,\n\t\t\t\t\t\t\t\t\t\titem: activeItem,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet nextFocus;\n\t\t\t\t\tif (key === 'ArrowDown') {\n\t\t\t\t\t\taction.preventDefault();\n\t\t\t\t\t\tif (!state.opened) {\n\t\t\t\t\t\t\tupdateState({opened: true});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// dropdown list handles focus for us if it has a search field\n\t\t\t\t\t\tif (properties.search !== 'none') return;\n\t\t\t\t\t\tnextFocus = Math.max(Math.min(activeItemIndex + 1, lastItem), 0);\n\t\t\t\t\t} else if (key === 'ArrowUp') {\n\t\t\t\t\t\taction.preventDefault();\n\t\t\t\t\t\tif (!state.opened) {\n\t\t\t\t\t\t\tupdateState({opened: true});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// dropdown list handles focus for us if it has a search field\n\t\t\t\t\t\tif (properties.search !== 'none') return;\n\t\t\t\t\t\tnextFocus = Math.max(activeItemIndex - 1, 0);\n\t\t\t\t\t} else if (key === 'Home') {\n\t\t\t\t\t\tif (!state.opened) return;\n\t\t\t\t\t\taction.preventDefault();\n\t\t\t\t\t\tnextFocus = 0;\n\t\t\t\t\t} else if (key === 'End') {\n\t\t\t\t\t\tif (!state.opened) return;\n\t\t\t\t\t\taction.preventDefault();\n\t\t\t\t\t\tnextFocus = lastItem;\n\t\t\t\t\t} else if (!state.opened && [...key].length === 1) {\n\t\t\t\t\t\tupdateState({prevEnteredKey: state.prevEnteredKey + key});\n\t\t\t\t\t\t//If the user types multiple characters, wait and then dispatch the function\n\t\t\t\t\t\tdispatch('NOW_SELECT#MATCH_KEYWORD_ITEM', {\n\t\t\t\t\t\t\tflattened,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if ([...key].length === 1) {\n\t\t\t\t\t\t// For printable chars, get indices of all items that start with key\n\t\t\t\t\t\tconst filtered = flattened.reduce((result, item, i) => {\n\t\t\t\t\t\t\tif (item.label.toLowerCase().startsWith(key.toLowerCase())) {\n\t\t\t\t\t\t\t\tresult.push(i);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, []);\n\t\t\t\t\t\t// and loop focus over them on subsequent key presses\n\t\t\t\t\t\t// from the currently focused (or first) matching item\n\t\t\t\t\t\tif (filtered.length > 0 && properties?.search === 'none') {\n\t\t\t\t\t\t\tconst prev = filtered.findIndex((i) => i === activeItemIndex);\n\t\t\t\t\t\t\tconst next = (prev + 1) % filtered.length;\n\t\t\t\t\t\t\tnextFocus = filtered[next];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (flattened[nextFocus]) {\n\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\tactiveItemIndex: nextFocus,\n\t\t\t\t\t\t\tactiveItem: flattened[nextFocus].id,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY]: ({host, properties}) => {\n\t\t\tif (properties.autofocus && !properties.readonly) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tfocusTrigger(host);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({properties, action, dispatch}) => {\n\t\t\tconst {name, value, previousValue} = action.payload;\n\t\t\tif (name === 'messages') {\n\t\t\t\tconst messagesLength = value.length;\n\t\t\t\tconst previousMessagesLength = previousValue ? previousValue.length : 0;\n\t\t\t\tif (messagesLength > previousMessagesLength) {\n\t\t\t\t\tfor (let i = previousMessagesLength; i < messagesLength; i++) {\n\t\t\t\t\t\tannounceMessage(properties.label, value[i], dispatch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'NOW_SELECT#MATCH_KEYWORD_ITEM': {\n\t\t\tmodifier: {\n\t\t\t\tname: 'debounce',\n\t\t\t\tdelay: 250,\n\t\t\t},\n\t\t\teffect: ({action, state, dispatch, updateState}) => {\n\t\t\t\tconst {flattened} = action.payload;\n\t\t\t\tconst {prevEnteredKey} = state;\n\t\t\t\tmatchKeywordWithItem(flattened, prevEnteredKey, dispatch, updateState);\n\t\t\t},\n\t\t},\n\t\t'NOW_POPOVER#OPENED_SET': ({action, properties, dispatch, updateState}) => {\n\t\t\tconst {value: opened, isListbox} = action.payload;\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tconst {disabled, nowId} = properties;\n\t\t\tif (!isListbox || disabled) return;\n\t\t\tif (componentId === nowId) updateState({opened, activeItem: null});\n\t\t\tif (!opened) {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'PRIVATE#RUN_VALIDATION',\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t'NOW_POPOVER#CONTENT_VISIBLE': (coeffects) => {\n\t\t\tconst {action, host, properties, updateState} = coeffects;\n\t\t\tconst dropdownList = host.shadowRoot.querySelector('now-dropdown-list');\n\t\t\tdropdownList.focus();\n\n\t\t\tconst {items, selectedItem} = properties;\n\t\t\tsetActiveItem(items, selectedItem ? [selectedItem] : [], updateState);\n\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tconst {nowId} = properties;\n\t\t\tif (nowId === componentId) {\n\t\t\t\tmakeRedispatchEffect('NOW_SELECT#LIST_VISIBLE')(coeffects);\n\t\t\t}\n\t\t},\n\t\t'NOW_POPOVER#CONTENT_HIDDEN': makeRedispatchEffect(\n\t\t\t'NOW_SELECT#LIST_HIDDEN',\n\t\t),\n\t\t'NOW_DROPDOWN_LIST#ACTIVE_ITEM_SET': ({\n\t\t\taction,\n\t\t\tupdateState,\n\t\t\tproperties,\n\t\t}) => {\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tconst {nowId} = properties;\n\t\t\tif (nowId === componentId) {\n\t\t\t\tupdateState({activeItem: action.payload.value});\n\t\t\t}\n\t\t},\n\t\t'NOW_DROPDOWN_LIST#SELECTED_ITEMS_SET': ({\n\t\t\thost,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tproperties,\n\t\t}) => {\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tconst {nowId} = properties;\n\t\t\tif (componentId === nowId) {\n\t\t\t\tupdateState({opened: false, activeItem: null});\n\t\t\t\tfocusTrigger(host);\n\t\t\t\tconst selectedItemId = action.payload.value[0];\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_SELECT#SELECTED_ITEM_SET',\n\t\t\t\t\t\tpayload: {value: selectedItemId, item: action.payload.items[0]},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'PRIVATE#RUN_VALIDATION',\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t'NOW_DROPDOWN_LIST#SEARCH_TERM_SET': makeRedispatchEffect(\n\t\t\t'NOW_SELECT#SEARCH_TERM_SET',\n\t\t),\n\t\t'PRIVATE#RUN_VALIDATION': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({dispatch, properties}) => {\n\t\t\t\tconst {required, selectedItem, invalid} = properties;\n\t\t\t\tconst isInvalid = !selectedItem;\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_SELECT#INVALID_SET',\n\t\t\t\t\t\tpayload: {value: isInvalid},\n\t\t\t\t\t\tshouldDispatch:\n\t\t\t\t\t\t\t(required && isInvalid && !invalid) || (!isInvalid && invalid),\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#SET_DECORATORS_START': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({host, updateState}) => {\n\t\t\t\tconst slotEl = host.shadowRoot.querySelector(\"[name='start']\");\n\t\t\t\tconst assignedNodes = slotEl.assignedNodes();\n\t\t\t\tconst hasSlottedContent = assignedNodes.length > 0;\n\n\t\t\t\tupdateState({decoratorsStart: hasSlottedContent});\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#SET_DECORATORS_END': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({host, updateState}) => {\n\t\t\t\tconst slotEl = host.shadowRoot.querySelector(\"[name='end']\");\n\t\t\t\tconst slottedNodes = slotEl.assignedNodes();\n\n\t\t\t\tconst decorators = slottedNodes.reduce((numDecorators, node) => {\n\t\t\t\t\tif (node.tagName.includes('ICON')) {\n\t\t\t\t\t\treturn numDecorators + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst icons = node.querySelectorAll('now-icon, now-button-iconic');\n\t\t\t\t\tconst numIcons = icons.length;\n\n\t\t\t\t\treturn numIcons ? numDecorators + numIcons : numDecorators;\n\t\t\t\t}, 0);\n\n\t\t\t\tupdateState({decoratorsEnd: decorators > 2 ? 2 : decorators});\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\tconst focusTarget = host.shadowRoot.querySelector(\n\t\t\t\t\t\t'button.now-form-field',\n\t\t\t\t\t);\n\n\t\t\t\t\tif (focusTarget) {\n\t\t\t\t\t\tfocusTarget.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: deferBehavior,\n\t\t\toptions: {\n\t\t\t\tevents: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'mouseenter',\n\t\t\t\t\t\ttrigger: 'now-popover',\n\t\t\t\t\t\ttarget: 'now-dropdown-list',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{behavior: truncationBehavior},\n\t\t{behavior: tooltipBehavior},\n\t],\n\tstyles,\n\tview,\n});\n","import './now-select';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","export const NOW_LIST_COMPONENT_LOAD_REQUESTED =\n\t'NOW_LIST#COMPONENT_LOAD_REQUESTED';\nexport const NOW_LIST_COMPONENT_LOAD_COMPLETED =\n\t'NOW_LIST#COMPONENT_LOAD_COMPLETED';\nexport const NOW_LIST_COMPONENT_LOAD_FAILED = 'NOW_LIST#COMPONENT_LOAD_FAILED';\n\nexport const MAX_COMPONENT_LOAD_COUNT = 2;\nexport const COMPONENT_LOADED_STATUS = Object.freeze({\n\t/** @type {ComponentLoadStatus} */\n\tERROR: 'ERROR',\n\t/** @type {ComponentLoadStatus} */\n\tSUCCESS: 'SUCCESS',\n\t/** @type {ComponentLoadStatus} */\n\tLOADING: 'LOADING',\n});\n","export const INTERSECTION_OBSERVER_NAME = 'intersectionObserverBehavior';\n\nexport const OBSERVE_ELEMENT = 'INTERSECTION_BEHAVIOR#OBSERVE_ELEMENT';\nexport const UNOBSERVE_ELEMENT = 'INTERSECTION_BEHAVIOR#UNOBSERVE_ELEMENT';\nexport const REGISTER_INTERSECTION_OBSERVER = 'INTERSECTION_BEHAVIOR#REGISTER';\nexport const UNREGISTER_INTERSECTION_OBSERVER =\n\t'INTERSECTION_OBSERVER#UNREGISTER';\n\n/**\n * HOOK NAMES\n */\nexport const HOOK_INSERT = 'hook-insert';\nexport const HOOK_DESTROY = 'hook-destroy';\nexport const HOOK_INIT = 'hook-init';\n/**\n * PATHS\n */\n\n/**\n * Path of options in action payload\n */\nexport const PAYLOAD_OPTIONS_PATH = 'payload.options';\n\n/**\n * Path of intersectionObserver object in state\n */\nexport const INTERSECTION_OBSERVER_STATE_PATH = `behaviors.${INTERSECTION_OBSERVER_NAME}.intersectionObserver`;\n\n/**\n * NOW MODES\n */\nexport const NOW_MODE_ACTIVE = 'active';\nexport const NOW_MODE_SUSPEND = 'suspend';\nexport const NOW_MODE_DETACH = 'detach';\n\n/**\n * DEFAULTS\n */\nexport const DEFAULT_ROOT_SELECTOR = '[data-id=scrollContainer]';\nexport const DEFAULT_ROOT_MARGIN = '100px 100px 100px 100px';\nexport const DEFAULT_THRESHOLD = 1.0;\nexport const DEFAULT_DEBOUNCE_DELAY = 50;\n","import { get as fpGet, getOr } from 'lodash/fp';\n\nimport {\n\tDEFAULT_DEBOUNCE_DELAY,\n\tDEFAULT_ROOT_MARGIN,\n\tDEFAULT_ROOT_SELECTOR,\n\tDEFAULT_THRESHOLD,\n\tINTERSECTION_OBSERVER_STATE_PATH,\n\tPAYLOAD_OPTIONS_PATH,\n} from './constants';\n/**\n * Selectors\n */\n\n/**\n * This selector function returns the intersection observer object stored in state\n * @param {object} state\n * @returns {object} IntersectionObserver that was initialized\n */\nexport const getIntersectionObserver = fpGet(INTERSECTION_OBSERVER_STATE_PATH);\n\n/**\n * This selector function returns the options object that were passed in on behavior initialization\n * @param {object} action\n * @returns {object}\n */\nexport const getOptions = fpGet(PAYLOAD_OPTIONS_PATH);\n\n/**\n * This selector function returns the selector string to use to get the root element that the\n * intersection observer should be applied to. For more info on intersection observer options,\n * please visit https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n * @param {object} action\n * @returns {string}\n */\nexport const getRootElementSelector = getOr(\n\tDEFAULT_ROOT_SELECTOR,\n\t`${PAYLOAD_OPTIONS_PATH}.rootElementSelector`\n);\n/**\n * This selector function returns the root margin that the\n * intersection observer should be applied to. For more info on intersectionObserver options\n * please visit https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n * @param {object} action\n * @returns {string}\n */\nexport const getRootMargin = getOr(\n\tDEFAULT_ROOT_MARGIN,\n\t`${PAYLOAD_OPTIONS_PATH}.rootMargin`\n);\n\n/**\n * This selector function returns the threshold to use for the intersection observer. For more info\n * on intersection observer options, please visit https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n * @param {object} action\n * @returns {number}\n */\nexport const getThreshold = getOr(\n\tDEFAULT_THRESHOLD,\n\t`${PAYLOAD_OPTIONS_PATH}.threshold`\n);\n\n/**\n * This selector function returns the debounce value in milliseconds to use when collating observe and unobserve actions\n * @param {object} action\n * @returns {string}\n */\nexport const getDebounceDelay = getOr(DEFAULT_DEBOUNCE_DELAY, `debounceDelay`);\n\n/**\n * This selector function returns a boolean whether to toggle defer attribute on to the component, or toggle component modes.\n * @param {object} action\n * @returns {string}\n */\nexport const getUseDefer = getOr(false, `${PAYLOAD_OPTIONS_PATH}.useDefer`);\n\n/**\n * This selector function returns the element configuration in options.elementIdentifier. The id is associated with the OBSERVE_ELEMENT\n * action dispatch and is used to retrieve element configuration which includes intersect and initial styles.\n * @param {string} id\n * @returns {(action: object) => {initialClass: string, intersectClass: string}} element configuration\n */\nexport const getElementConfig = (id) =>\n\tfpGet(`${PAYLOAD_OPTIONS_PATH}.elementIdentifier[${id}]`);\n\n/**\n * This selector function returns a boolean that determines if the component mode should be set to suspend\n * when the element is no longer intersecting and the component mode is active. Will return true by default if should\n * suspend is not found\n * @param {object} action\n * @returns {boolean}\n */\nexport const getShouldSuspend = getOr(\n\ttrue,\n\t`${PAYLOAD_OPTIONS_PATH}.shouldSuspend`\n);\n\n/**\n * This selector function returns a boolean that determines if the element should no longer be observed once intersected for the first time\n * @param {object} action\n * @returns {boolean}\n */\nexport const getShouldUnobserveElement = getOr(\n\tfalse,\n\t`${PAYLOAD_OPTIONS_PATH}.unobserveOnIntersect`\n);\n","import { actionTypes } from '@servicenow/ui-core';\n\nimport logger from '../../shared/utils/logger';\n\nimport {\n\tHOOK_DESTROY,\n\tHOOK_INIT,\n\tHOOK_INSERT,\n\tINTERSECTION_OBSERVER_NAME,\n\tINTERSECTION_OBSERVER_STATE_PATH,\n\tNOW_MODE_ACTIVE,\n\tNOW_MODE_DETACH,\n\tNOW_MODE_SUSPEND,\n\tOBSERVE_ELEMENT,\n\tREGISTER_INTERSECTION_OBSERVER,\n\tUNOBSERVE_ELEMENT,\n\tUNREGISTER_INTERSECTION_OBSERVER,\n} from './constants';\nimport {\n\tgetDebounceDelay,\n\tgetElementConfig,\n\tgetIntersectionObserver,\n\tgetRootElementSelector,\n\tgetRootMargin,\n\tgetShouldSuspend,\n\tgetShouldUnobserveElement,\n\tgetThreshold,\n\tgetUseDefer,\n} from './selectors';\n\nconst { COMPONENT_DOM_READY, COMPONENT_DISCONNECTED } = actionTypes;\n\n/**\n * Helper function to create element hooks that will be used to observe/unobserve elements\n * @param {Now.Dispatch} dispatch\n * @param {string} id Id that corresponds to elementIdentifier config in options\n * @param {boolean} useDefer boolean to determine if component mode should be set or defer tag should be used\n * @returns {{defer?: boolean, nowNode?: 'active'  | 'suspend' | 'detach', 'hook-insert': (vnode: Now.JsxVNode) => void, 'hook-destroy': (vnode: Now.JsxVNode) => void}}\n */\nexport const createElementObservationProps = (\n\tdispatch,\n\tid,\n\tuseDefer = false\n) => ({\n\t...(useDefer && { defer: true }),\n\t...(!useDefer && { nowMode: NOW_MODE_DETACH }),\n\t/**\n\t * Hook that is used to observe element. Should only be used on component elements.\n\t * Will set component mode to detach and dispatch to observe element in intersection observer\n\t * @param {*} vnode\n\t */\n\t[HOOK_INSERT]: (vnode) => {\n\t\tif (!vnode.elm) return;\n\n\t\tif (useDefer) {\n\t\t\tvnode.elm.observe = () => {\n\t\t\t\tvnode.elm.defer = false;\n\t\t\t};\n\t\t} else {\n\t\t\tvnode.elm.observe = () => {\n\t\t\t\tvnode.elm.nowMode = NOW_MODE_ACTIVE;\n\t\t\t};\n\t\t}\n\n\t\tdispatch(OBSERVE_ELEMENT, { vnode, id });\n\t},\n\n\t/**\n\t * Hook that is used to unobserve element. Will dispatch to behavior when element is removed.\n\t * @param {*} vnode\n\t */\n\t[HOOK_DESTROY]: (vnode) => {\n\t\tif (!vnode.elm) return;\n\n\t\tdispatch(UNOBSERVE_ELEMENT, { vnode });\n\t},\n});\n\n/**\n * Helper function to create element hooks that will be used to register root element and set up and tear down intersection observer\n * @param {*} dispatch\n * @returns {{'hook-init': (vnode: Now.JsxVNode) => void, 'hook-destroy': () => void}}\n */\nexport const createRootElementHooks = (dispatch) => ({\n\t/**\n\t * Init hook that will dispatch register action for root element and setup intersection observer\n\t * @param {*} vnode\n\t */\n\t[HOOK_INIT]: (vnode) => {\n\t\tdispatch(REGISTER_INTERSECTION_OBSERVER, { vnode });\n\t},\n\n\t/**\n\t * Remove hook that will dispatch action to tear down intersection observer and remove from state\n\t */\n\t[HOOK_DESTROY]: () => {\n\t\tdispatch(UNREGISTER_INTERSECTION_OBSERVER);\n\t},\n});\n\n/**\n * This wrapper will return the callback to be used in the intersection observer\n * @param {boolean} shouldSuspend\n * @param {boolean} shouldUnobserveElement\n * @param {boolean} useDefer\n * @returns {*} callback function\n */\nexport const intersectionCallBack = (\n\tshouldSuspend,\n\tshouldUnobserveElement,\n\tuseDefer\n) =>\n\t/**\n\t *\n\t * This callback function will get called when observed elements intersect the root element defined in the IntersectionObserver\n\t * setup. Using options that are passed into the component, this function will set the appropriate styles and component modes\n\t * @param {Array<{isIntersecting: boolean, target: Now.JsxElementProps & HTMLElement & {defer: boolean}}>} entries\n\t * @param {*} observer\n\t * @returns\n\t */\n\t(entries, observer) =>\n\t\tentries.forEach((entry) => {\n\t\t\tconst { isIntersecting, target: element } = entry;\n\t\t\tconst unDefer = useDefer && element.defer;\n\n\t\t\tif (\n\t\t\t\tisIntersecting &&\n\t\t\t\t(element.nowMode !== NOW_MODE_ACTIVE || unDefer)\n\t\t\t) {\n\t\t\t\tconst intersectClass = element.dataset.intersectClass;\n\t\t\t\tconst initialClass = element.dataset.initialClass;\n\n\t\t\t\tif (initialClass && element.classList.contains(initialClass))\n\t\t\t\t\telement.classList.remove(initialClass);\n\n\t\t\t\tif (\n\t\t\t\t\tintersectClass &&\n\t\t\t\t\t!element.classList.contains(intersectClass)\n\t\t\t\t)\n\t\t\t\t\telement.classList.add(intersectClass);\n\n\t\t\t\tif (unDefer) {\n\t\t\t\t\telement.defer = false;\n\t\t\t\t} else {\n\t\t\t\t\telement.nowMode = NOW_MODE_ACTIVE;\n\t\t\t\t}\n\n\t\t\t\tif (shouldUnobserveElement) observer.unobserve(element);\n\t\t\t} else if (\n\t\t\t\telement.nowMode == NOW_MODE_ACTIVE &&\n\t\t\t\tshouldSuspend &&\n\t\t\t\t!useDefer\n\t\t\t) {\n\t\t\t\telement.nowMode = NOW_MODE_SUSPEND;\n\t\t\t}\n\t\t});\n\n/**\n * This effect is used to set up the IntersectionObserver with the defined options. This can be set up either on component dom ready\n * or opt in via dispatching of REGISTER_INTERSECTION_OBSERVER action with element. If rootElement is found either via selector or\n * payload, an IntersectionObserver instance will be created and stored in state.\n * @param {*} coeffects\n * @returns\n */\nexport const setupIntersectionObserverEffect = (coeffects) => {\n\tconst { updateState, host, action } = coeffects;\n\tconst {\n\t\tpayload: { vnode },\n\t} = action;\n\n\tconst rootElementSelector = getRootElementSelector(action);\n\tconst rootElementWithSelector = host.shadowRoot?.querySelector(\n\t\trootElementSelector\n\t);\n\tconst rootElement = rootElementWithSelector || vnode?.elm;\n\n\tif (!rootElement) {\n\t\tlogger.warning(\n\t\t\t'Could not find root element. Skipping intersection observer setup'\n\t\t);\n\t\treturn;\n\t}\n\n\tconst shouldSuspend = getShouldSuspend(action);\n\tconst shouldUnobserveElement = getShouldUnobserveElement(action);\n\tconst useDefer = getUseDefer(action);\n\n\tconst intersectionObserver = new IntersectionObserver(\n\t\tintersectionCallBack(shouldSuspend, shouldUnobserveElement, useDefer),\n\t\t{\n\t\t\troot: rootElement,\n\t\t\trootMargin: getRootMargin(action),\n\t\t\tthreshold: getThreshold(action),\n\t\t}\n\t);\n\n\tlogger.info('Intersection Observer successfully created');\n\n\tupdateState({\n\t\tpath: INTERSECTION_OBSERVER_STATE_PATH,\n\t\toperation: 'set',\n\t\tvalue: intersectionObserver,\n\t\tshouldRender: false,\n\t});\n};\n\n/**\n * This effect is used to disconnect the intersection observer (stop observing all elements) and remove the instnace from state.\n * This will be called on disconnect or opt in if the element is removed. Use hooks defined above on root element to handle element removal\n * @param {*} coeffects\n */\nexport const unregisterIntersectionObserverEffect = (coeffects) => {\n\tconst { state, updateState } = coeffects;\n\n\tconst intersectionObserver = getIntersectionObserver(state);\n\n\tif (intersectionObserver) {\n\t\tintersectionObserver.disconnect();\n\t}\n\n\tupdateState({\n\t\tpath: INTERSECTION_OBSERVER_STATE_PATH,\n\t\tvalue: undefined,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n};\n\n/**\n * This effect handles observing of elements. By default this effect will be collated and debounced so as to handle all\n * observation requests at the same time vs n number of actions. If the IntersectionObserver exists, this effect will\n * add the element to be observed and apply the initial styles defined in the elementIdentifier options passed in. If no styles\n * are found, element will still be observed with no changes to styles.\n * @param {*} coeffects\n * @returns\n */\nexport const observeElementEffect = (coeffects) => {\n\tconst { collated, state } = coeffects;\n\n\tconst intersectionObserver = getIntersectionObserver(state);\n\tif (!intersectionObserver) {\n\t\tlogger.warning(\n\t\t\t'No intersection observer in state, ignoring element observe requests'\n\t\t);\n\t\treturn;\n\t}\n\n\tcollated.forEach((/**@type {*} */ collatedItem) => {\n\t\tconst {\n\t\t\taction: {\n\t\t\t\tpayload: { vnode, id },\n\t\t\t},\n\t\t\taction,\n\t\t} = collatedItem;\n\n\t\tif (!vnode || !vnode?.elm) {\n\t\t\tlogger.warning('Skipping node for observation');\n\t\t\treturn;\n\t\t}\n\n\t\tconst { elm: element } = vnode;\n\n\t\tconst elementConfig = getElementConfig(id)(action);\n\n\t\tif (elementConfig) {\n\t\t\tconst { initialClass, intersectClass } = elementConfig;\n\t\t\telement.dataset.initialClass = initialClass || '';\n\t\t\telement.dataset.intersectClass = intersectClass || '';\n\n\t\t\tif (initialClass && !element.classList.contains(initialClass)) {\n\t\t\t\telement.classList.add(initialClass);\n\t\t\t}\n\t\t}\n\n\t\tintersectionObserver.observe(vnode.elm);\n\t});\n};\n\n/**\n * This effect handles unobserving of elements. By default this effect will be collated and debounced so as to handle all\n * unobservation requests at the same time vs n number of actions. If the IntersectionObserver exists, this effect will\n * call unobserve on the element. This is used in cases where the element is removed from the dom and we no longer want to observe\n * the element\n * @param {*} coeffects\n */\nexport const unobserveElementEffect = (coeffects) => {\n\tconst { state, collated } = coeffects;\n\n\tconst intersectionObserver = getIntersectionObserver(state);\n\n\tcollated.forEach((/**@type {*} */ collatedItem) => {\n\t\tconst {\n\t\t\taction: {\n\t\t\t\tpayload: { vnode },\n\t\t\t},\n\t\t} = collatedItem;\n\n\t\tif (!vnode || !vnode?.elm) {\n\t\t\tlogger.warning('Skipping node for unobservation');\n\t\t\treturn;\n\t\t}\n\n\t\tintersectionObserver.unobserve(vnode.elm);\n\t});\n};\n\n/**\n * This helper function creates the action handlers for the component with the specified delay in options (for observation effects)\n * @param {number} delay\n * @returns\n */\nexport const createIntersectionObserverBehaviorActionHandlers = (delay) => ({\n\t[COMPONENT_DOM_READY]: {\n\t\teffect: setupIntersectionObserverEffect,\n\t},\n\t[REGISTER_INTERSECTION_OBSERVER]: {\n\t\teffect: setupIntersectionObserverEffect,\n\t\tstopPropagation: true,\n\t},\n\t[COMPONENT_DISCONNECTED]: {\n\t\teffect: unregisterIntersectionObserverEffect,\n\t},\n\t[UNREGISTER_INTERSECTION_OBSERVER]: {\n\t\teffect: unregisterIntersectionObserverEffect,\n\t\tstopPropagation: true,\n\t},\n\t[OBSERVE_ELEMENT]: {\n\t\teffect: observeElementEffect,\n\t\tmodifier: { name: 'debounce', collate: true, delay },\n\t\tstopPropagation: true,\n\t},\n\t[UNOBSERVE_ELEMENT]: {\n\t\teffect: unobserveElementEffect,\n\t\tmodifier: { name: 'debounce', collate: true, delay },\n\t\tstopPropagation: true,\n\t},\n});\n\n/**\n * Helper function used to create behavior object with options passed in.\n * @param {object} options\n * @returns {object} behavior definition\n */\nexport const createIntersectionObserver = (options) => {\n\treturn {\n\t\tbehavior: {\n\t\t\tname: INTERSECTION_OBSERVER_NAME,\n\t\t\tactionHandlers: createIntersectionObserverBehaviorActionHandlers(\n\t\t\t\tgetDebounceDelay(options)\n\t\t\t),\n\t\t},\n\t\toptions,\n\t};\n};\n","import { t } from 'sn-translate';\n\nimport '@servicenow/now-loader';\nimport { COMPONENT_LOADED_STATUS } from '../../behaviors/componentLoaderBehavior/constants';\nimport { createElementObservationProps } from '../../behaviors/intersectionObserverBehavior/intersectionObserverBehavior';\nimport { getFakeNowIcon } from '../views/shared/fakeNowIcon';\nimport { COLUMN_FILTERING_VALUE_INPUT_CLASS } from '../views/table/tableHeaders/columnFilteringCell/columnFilteringConsts';\n\nconst { LOADING, SUCCESS, ERROR } = COMPONENT_LOADED_STATUS;\n\nexport const customComponentType = {\n\tCELL: 'cell',\n\tOVERLAY: 'overlay',\n\tPOPOVER: 'popover',\n\tROW: 'row',\n\tGALLERY_VIRTUALIZED_STATUS_ROW: 'gallery-virtualized-status-row',\n\tCOLUMN_FILTER_VALUE_INPUT: 'columnFilterValueInput',\n};\n\n/**\n * Renders the loading state while fetching the components for the custom component\n * For cell type of custom component, now-loader needs to be wrapped inside a container,\n * to allow user to apply the customized placeholderDimensions style to the loader\n * @param {string} type type of custom component\n * @param {object} style the placeholderDimensions prop for cell type of custom component\n */\nconst renderLoadingState = (type, style) => {\n\tconst className = `${type}-content custom-${type}-loader-content`;\n\tif (type === customComponentType.CELL)\n\t\treturn (\n\t\t\t<div className={className} style={style}>\n\t\t\t\t<now-loader className=\"custom-cell-loader\" />\n\t\t\t</div>\n\t\t);\n\telse return <now-loader className={className} />;\n};\n\n/**\n * Renders a custom component using the ComponentTag and componentDefaultProps\n * @param {string} type type of custom component\n * @param {String} ComponentTag the tag name for the component to render\n * @param {Object} componentDefaultProps props for the component to render\n * @param {string} componentDefaultProps.label label of the component\n * @param {object} style an object representing this cell's parent column\n * @param {string} customRowAlignment\n * @param {*} dispatch seismic dispatch\n */\nexport const renderCustomComponent = (\n\ttype,\n\tComponentTag,\n\tcomponentDefaultProps,\n\tstyle,\n\tdispatch,\n\tcustomRowAlignment = ''\n) => {\n\tif (type === customComponentType.CELL) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"cell-content custom-cell-content\"\n\t\t\t\tstyle={style}\n\t\t\t\tdata-truncation\n\t\t\t>\n\t\t\t\t<ComponentTag\n\t\t\t\t\t{...componentDefaultProps}\n\t\t\t\t\t{...createElementObservationProps(dispatch, 'custom-cell')}\n\t\t\t\t\tappend-to-meta={{ fromCustomSource: type }}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (type === customComponentType.COLUMN_FILTER_VALUE_INPUT) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"column-filter-value-input-container\"\n\t\t\t\tdata-test={`${type}-custom-filter-container`}\n\t\t\t\tdata-truncation\n\t\t\t\tstyle={style}\n\t\t\t>\n\t\t\t\t<ComponentTag\n\t\t\t\t\t{...componentDefaultProps}\n\t\t\t\t\tappend-to-meta={{ fromCustomSource: type }}\n\t\t\t\t\tclassName={COLUMN_FILTERING_VALUE_INPUT_CLASS}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`${type}-content ${customRowAlignment}`}\n\t\t\tdata-test={`${type}-custom-content-container`}\n\t\t\tdata-truncation\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<ComponentTag\n\t\t\t\t{...componentDefaultProps}\n\t\t\t\tappend-to-meta={{ fromCustomSource: type }}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\n/**\n * Renders the error state for the custom component\n * @param {string} type type of custom component\n * @param {object} style\n * @param {string} dir a string value that represents the language direction\n */\nconst renderErrorState = (type, style, dir) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={`${type}-content custom-${type}-error-content`}\n\t\t\tstyle={style}\n\t\t\tdir={dir}\n\t\t>\n\t\t\t<div className={`custom-${type}-error custom-${type}-error-icon`}>\n\t\t\t\t{getFakeNowIcon('triangle-exclamation-outline', 'md')}\n\t\t\t</div>\n\t\t\t<span className={`custom-${type}-error`} data-truncation>\n\t\t\t\t{t('Error')}\n\t\t\t</span>\n\t\t</div>\n\t);\n};\n\n/**\n * Renders the custom components\n * @param {string} type type of custom component\n * @param {TableMetadata} tableMetadata\n * @param {string} componentTag component tag of the custom component\n * @param {any} componentDefaultProps properties of the custom component\n * @param {string} dir a string value that represents the language direction\n * @param {object} cellStyle\n * @param {string} customRowAlignment\n * @param {object} placeholderStyle\n * @param {*} dispatch seismic dispatch\n */\nexport const renderCustomComponentDisplay = (\n\ttype,\n\ttableMetadata,\n\tcomponentTag,\n\tcomponentDefaultProps,\n\tdir,\n\tcellStyle = {},\n\tplaceholderStyle = {},\n\tdispatch = null,\n\tcustomRowAlignment = ''\n) => {\n\tconst { fetchedComponents = {} } = tableMetadata;\n\tconst loadedComponentInfo = fetchedComponents[componentTag];\n\tconst status = loadedComponentInfo?.status ?? ERROR;\n\n\tif (status === LOADING) {\n\t\treturn renderLoadingState(type, placeholderStyle);\n\t}\n\n\tif (status === SUCCESS) {\n\t\treturn renderCustomComponent(\n\t\t\ttype,\n\t\t\tcomponentTag,\n\t\t\tcomponentDefaultProps,\n\t\t\tcellStyle,\n\t\t\tdispatch,\n\t\t\tcustomRowAlignment\n\t\t);\n\t}\n\n\treturn renderErrorState(type, placeholderStyle, dir);\n};\n","import {\n\tDATE_EDITOR_VARIANT_LONG,\n\tDATE_EDITOR_VARIANT_SHORT,\n} from '../views/fields/dateTime/constants';\n\n/**\n * Checks if dateformat is short date.\n * short date is anything without HH mm or ss.\n * @param {string} dateFormat\n *\n * @returns {boolean}\n */\nexport const isShortDateFormat = (dateFormat) => {\n\tif (dateFormat === undefined || dateFormat == null) return false;\n\tconst re = new RegExp('/HH|mm|ss', 'gm');\n\treturn !re.test(dateFormat);\n};\n\n/**\n * Checks if date string is short date.\n * short date is any date string without 00:00:00\n * @param {string} date\n *\n * @returns {boolean}\n */\nexport const isShortDate = (date) => {\n\tif (date === undefined || date == null) return false;\n\tconst re = new RegExp(/\\d{2}:\\d{2}:\\d{2}/);\n\treturn !re.test(date);\n};\n\n/**\n * Chooses dateTime component format type for datetime cell editor popover, either date or date + time\n * @param {string} dateFormat\n * @param {boolean} forceShortDateFormat\n *\n * @returns {DATE_EDITOR_VARIANT_SHORT | DATE_EDITOR_VARIANT_LONG}\n */\nexport const getDateEditorVariant = (dateFormat, forceShortDateFormat) => {\n\t// fixme: format should honor user preferences\n\treturn isShortDateFormat(dateFormat) || forceShortDateFormat\n\t\t? DATE_EDITOR_VARIANT_SHORT\n\t\t: DATE_EDITOR_VARIANT_LONG;\n};\n","import { t } from 'sn-translate';\n\nimport { TABLE_DEFAULT_ICON_SIZE } from '../../../constants';\n\nexport const BOOLEAN_TRUE_STRING = t('True');\nexport const BOOLEAN_FALSE_STRING = t('False');\n\nexport const BOOLEAN_TRUE_ICON = 'circle-check-outline';\nexport const BOOLEAN_FALSE_ICON = 'circle-close-outline';\n\nconst BOOLEAN_TRUE_ID = 'true';\nconst BOOLEAN_FALSE_ID = 'false';\n\n// icons are not included in these choices because:\n// 1. this variable is used in some settings that don't support icons (eg radio buttons)\n// 2. these represent logical values, excluding visual decorations https://www.figma.com/design/dZKjg11aPVtjfLWf6LaUtj?node-id=5745-287788&m=dev#918551538\nexport const BOOLEAN_CHOICES = [\n\t{\n\t\tid: BOOLEAN_TRUE_ID,\n\t\tlabel: BOOLEAN_TRUE_STRING,\n\t},\n\t{\n\t\tid: BOOLEAN_FALSE_ID,\n\t\tlabel: BOOLEAN_FALSE_STRING,\n\t},\n];\n\nexport const BOOLEAN_ICON_SIZE = TABLE_DEFAULT_ICON_SIZE;\n","import { createRef } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport { fromUnixTime } from 'date-fns';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport isEmpty from 'lodash/isEmpty';\nimport isObject from 'lodash/isObject';\nimport toString from 'lodash/toString';\nimport { t } from 'sn-translate';\n\nimport '@servicenow/now-button';\nimport '@servicenow/now-checkbox';\nimport '@servicenow/now-date-time';\nimport '@servicenow/now-dropdown';\nimport '@servicenow/now-input';\nimport '@servicenow/now-select';\nimport {\n\tgetColumnRequiresValueFromOperator,\n\tgetOverridenDateFormat,\n} from '../../../../../behaviors/columnFilteringBehavior/columnFilteringBehavior';\nimport {\n\tcustomComponentType,\n\trenderCustomComponentDisplay,\n} from '../../../../utils/customLoader';\nimport {\n\tgetDateEditorVariant,\n\tisShortDateFormat,\n} from '../../../../utils/dateTimeUtils';\nimport columnSelectors from '../../../../utils/selectors/columnSelectors';\nimport { BOOLEAN_CHOICES } from '../../../fields/boolean/constants';\nimport {\n\tDECIMAL_PLACES_DEFAULT,\n\tNUMBER_FORMAT_INTEGER,\n\tNUMBER_FORMAT_LONG_INT,\n} from '../../../fields/number/constants';\nimport {\n\tCELL_CONTENT_CLASS,\n\tSPECIAL_COLUMN_CELL,\n\tSPECIAL_COLUMN_CELL_CONTENT,\n} from '../../tableBody/tableRow/rowCell/rowCellConstants';\nimport { INCLUDE_LARGE_PADDING_CLASS } from '../../tableConstants';\n\nimport {\n\tREMOVE_COLUMN_FILTER_BUTTON,\n\tCOLUMN_FILTERING_CHOICE_TYPE_TRIGGER_BUTTON_NAME,\n\tCOLUMN_FILTERING_VALUE_ARIA_LABEL,\n\tCOLUMN_FILTERING_VALUE_INPUT_CLASS,\n\tCOLUMN_FILTERING_VALUE_PLACEHOLDER,\n\tCOLUMN_FILTERING_VALUE_INPUT_NAME,\n\tDATE_TIME_APPLY_LABEL,\n\tDATE_TIME_CANCEL_LABEL,\n\tDATE_TIME_APPLY_BUTTON_NAME,\n\tDATE_TIME_CANCEL_BUTTON_NAME,\n\tREMOVE_COLUMN_FILTER_ARIA_LABEL,\n} from './columnFilteringConsts';\n\nconst {\n\tgetColumnFilterCustomTopText,\n\tgetColumnFilterValue,\n\tgetColumnFilterValueEditorCustomComponentDefaultProps,\n\tgetColumnFilterValueEditorCustomComponentTag,\n\tgetColumnType,\n\tgetDecimalPlaces,\n\tgetFormattedColumnKey,\n\tgetNumberFormat,\n\tgetOperators,\n\tgetTimeZone,\n\tgetFirstDayOfWeek,\n} = columnSelectors;\n\nconst {\n\tTYPE_DATE_TIME,\n\tTYPE_BOOLEAN,\n\tTYPE_PILLS,\n\tTYPE_CHOICE,\n\tTYPE_NUMBER,\n\tTYPE_PERCENT_COMPLETE,\n\tTYPE_CURRENCY,\n} = require('../../../../../typeSchemas/columnDefinitions/columnTypes/columnTypes');\n\n/**\n * Helper for standardizing which types use the choice popover value editor\n *\n *  @param {string} type\n */\nconst shouldUseChoiceFilter = (type) =>\n\ttype === TYPE_CHOICE || type === TYPE_PILLS;\n\n/**\n * Helper to pull this column's info from state\n *\n * @param {ProcessedColumn} column\n * @param {ColumnFilteringState} columnFilteringState\n *\n * @returns {SingleColumnFilteringState}\n */\nexport const getColumnFilteringStateForColumn = (\n\tcolumn,\n\tcolumnFilteringState\n) => columnFilteringState.columnFiltersMap[getFormattedColumnKey(column)];\n\n/**\n * Generic (stringlike) column filtering value input\n *\n * @param {Object} props\n * @param {ProcessedColumn} props.column\n * @param {ColumnFilteringState} props.columnFilteringState\n *\n */\nconst genericValueInput = (props) => {\n\tconst { column, columnFilteringState } = props;\n\tconst { value, shouldDisableValue } = getColumnFilteringStateForColumn(\n\t\tcolumn,\n\t\tcolumnFilteringState\n\t);\n\tconst columnType = getColumnType(column);\n\tlet inputType = 'text';\n\t/** @type {string | number} */\n\tlet step = 'any';\n\n\t// enforce format for numberish types\n\tif (\n\t\tcolumnType === TYPE_NUMBER ||\n\t\tcolumnType === TYPE_PERCENT_COMPLETE ||\n\t\tcolumnType === TYPE_CURRENCY\n\t) {\n\t\tinputType = 'number';\n\t\tconst numberFormat = getNumberFormat(column); // will be undefined unless type is literally number\n\t\tconst decimalPlaces =\n\t\t\tgetDecimalPlaces(column) ?? DECIMAL_PLACES_DEFAULT;\n\n\t\tstep =\n\t\t\tnumberFormat === NUMBER_FORMAT_INTEGER ||\n\t\t\tnumberFormat === NUMBER_FORMAT_LONG_INT\n\t\t\t\t? 1\n\t\t\t\t: Math.pow(10, -decimalPlaces);\n\t}\n\n\treturn (\n\t\t<now-input\n\t\t\tappendToPayload={{ column }}\n\t\t\tclassName={COLUMN_FILTERING_VALUE_INPUT_CLASS}\n\t\t\tdisabled={shouldDisableValue}\n\t\t\tmin={-90000000} // step is only effective if a min is set (this is a vanilla HTML thing)\n\t\t\tname={COLUMN_FILTERING_VALUE_INPUT_NAME}\n\t\t\tplaceholder={COLUMN_FILTERING_VALUE_PLACEHOLDER}\n\t\t\tsize=\"sm\"\n\t\t\tstep={step}\n\t\t\ttype={inputType}\n\t\t\tvalue={value}\n\t\t\tconfigAria={{\n\t\t\t\t'aria-label': `${\n\t\t\t\t\tcolumn.label\n\t\t\t\t} ${COLUMN_FILTERING_VALUE_ARIA_LABEL} : ${value ?? ''}`,\n\t\t\t}}\n\t\t/>\n\t);\n};\n\n/**\n * Date time column filtering value input\n *\n * @param {Object} props\n * @param {ProcessedColumn} props.column\n * @param {ColumnFilteringState} props.columnFilteringState\n */\nconst dateTimeValueInput = (props) => {\n\tconst { column, columnFilteringState } = props;\n\tconst {\n\t\tvalue,\n\t\tshouldDisableValue,\n\t\tdateTimeState,\n\t} = getColumnFilteringStateForColumn(column, columnFilteringState);\n\tconst { manageOpened, shouldDisableApply } = dateTimeState;\n\tconst format = getOverridenDateFormat(column, columnFilteringState);\n\tconst timezone = getTimeZone(column);\n\n\tconst footerActions = [\n\t\t{\n\t\t\tdisabled: shouldDisableApply,\n\t\t\tlabel: DATE_TIME_APPLY_LABEL,\n\t\t\tname: DATE_TIME_APPLY_BUTTON_NAME,\n\t\t\tvariant: 'primary',\n\t\t},\n\t\t{\n\t\t\tlabel: DATE_TIME_CANCEL_LABEL,\n\t\t\tname: DATE_TIME_CANCEL_BUTTON_NAME,\n\t\t\tvariant: 'secondary',\n\t\t},\n\t];\n\n\tconst formattedDateValue = value // sets undefined value to unix epoch without this check\n\t\t? formatInTimeZone(fromUnixTime(Number(value)), timezone, format)\n\t\t: '';\n\n\treturn (\n\t\t<now-date-time\n\t\t\tappendToPayload={{ column }}\n\t\t\taria-label={`${COLUMN_FILTERING_VALUE_ARIA_LABEL} : ${\n\t\t\t\tformattedDateValue ?? ''\n\t\t\t}`}\n\t\t\tclassName={COLUMN_FILTERING_VALUE_INPUT_CLASS}\n\t\t\tdisabled={shouldDisableValue}\n\t\t\tfooterActions={footerActions}\n\t\t\tformat={format}\n\t\t\tname={COLUMN_FILTERING_VALUE_INPUT_NAME}\n\t\t\topened={manageOpened}\n\t\t\tsize=\"sm\"\n\t\t\tfirstDayOfWeek={getFirstDayOfWeek(column)}\n\t\t\ttype={getDateEditorVariant(format, isShortDateFormat(format))}\n\t\t\tvalue={formattedDateValue}\n\t\t/>\n\t);\n};\n\n/**\n * Boolean column filtering value input\n *\n * @param {Object} props\n * @param {ProcessedColumn} props.column\n * @param {ColumnFilteringState} props.columnFilteringState\n */\nconst booleanValueInput = (props) => {\n\tconst { column, columnFilteringState } = props;\n\tconst { value, shouldDisableValue } = getColumnFilteringStateForColumn(\n\t\tcolumn,\n\t\tcolumnFilteringState\n\t);\n\n\treturn (\n\t\t<now-select\n\t\t\tappendToPayload={{\n\t\t\t\tcolumn,\n\t\t\t\tname: COLUMN_FILTERING_VALUE_INPUT_NAME,\n\t\t\t}}\n\t\t\tclassName={COLUMN_FILTERING_VALUE_INPUT_CLASS}\n\t\t\tdisabled={shouldDisableValue}\n\t\t\titems={BOOLEAN_CHOICES}\n\t\t\tmanaged={true}\n\t\t\tsize=\"sm\"\n\t\t\tselectedItem={value}\n\t\t\tconfigAria={{\n\t\t\t\t'aria-label': `${COLUMN_FILTERING_VALUE_ARIA_LABEL} : ${\n\t\t\t\t\tvalue ?? ''\n\t\t\t\t}`,\n\t\t\t}}\n\t\t/>\n\t);\n};\n\n/**\n * Choice/multichoice column filtering value input\n *\n * @param {Object} props\n * @param {ProcessedColumn} props.column\n * @param {ColumnFilteringState} props.columnFilteringState\n */\nconst choiceValueInput = (props) => {\n\tconst { column, columnFilteringState } = props;\n\tconst { value } = getColumnFilteringStateForColumn(\n\t\tcolumn,\n\t\tcolumnFilteringState\n\t);\n\tconst buttonLabel = isEmpty(getColumnFilterValue(column))\n\t\t? t({ code: 'now_list', message: 'Add filter' }, 't')\n\t\t: t('Edit filter');\n\tconst choiceValueInputButtonRef = createRef();\n\n\treturn (\n\t\t<now-button\n\t\t\tappendToPayload={{\n\t\t\t\tchoiceValueInputButtonRef,\n\t\t\t\tcolumn,\n\t\t\t\tcolumnFilteringState,\n\t\t\t\tname: COLUMN_FILTERING_CHOICE_TYPE_TRIGGER_BUTTON_NAME,\n\t\t\t\tvalue,\n\t\t\t}}\n\t\t\tclassName={COLUMN_FILTERING_VALUE_INPUT_CLASS}\n\t\t\tlabel={buttonLabel}\n\t\t\tref={choiceValueInputButtonRef}\n\t\t\tsize=\"sm\"\n\t\t\tvariant=\"secondary\"\n\t\t\tconfigAria={{\n\t\t\t\tbutton: {\n\t\t\t\t\t'aria-label': `${column.label} ${buttonLabel}`,\n\t\t\t\t},\n\t\t\t}}\n\t\t/>\n\t);\n};\n\n/**\n * Custom column filtering value input based on input component tag in columnFilterConfig\n *\n * @param {Object} props\n * @param {ProcessedColumn} props.column\n * @param {ColumnFilteringState} props.columnFilteringState\n * @param {String} props.dir a prop representing the language direction\n * @param {TableMetadata} props.tableMetadata\n * @param {*} dispatch seismic dispatch\n *\n */\nconst customValueInput = (props, dispatch) => {\n\tconst { column, columnFilteringState, dir, tableMetadata } = props;\n\tconst { value, shouldDisableValue } = getColumnFilteringStateForColumn(\n\t\tcolumn,\n\t\tcolumnFilteringState\n\t);\n\tconst componentTag = getColumnFilterValueEditorCustomComponentTag(column);\n\tconst styleWidth100 = { width: '100%' };\n\tconst componentProps = {\n\t\t...getColumnFilterValueEditorCustomComponentDefaultProps(column),\n\t\tvalue,\n\t\tdisabled: shouldDisableValue,\n\t\t// styling/visual props should be consistent, so we do not allow customizing the below\n\t\tplaceholder: COLUMN_FILTERING_VALUE_PLACEHOLDER,\n\t\tsize: 'sm',\n\t\t// match styles of column-filtering-value-input\n\t\tstyle: { ...styleWidth100, margin: 0 },\n\t};\n\n\treturn renderCustomComponentDisplay(\n\t\tcustomComponentType.COLUMN_FILTER_VALUE_INPUT,\n\t\ttableMetadata,\n\t\tcomponentTag,\n\t\tcomponentProps,\n\t\tdir,\n\t\tstyleWidth100,\n\t\t{},\n\t\tdispatch\n\t);\n};\n\n/**\n * Renders value input according to the column type or configured input component\n *\n * @param {Object} props\n * @param {ProcessedColumn} props.column\n * @param {String} props.dir a prop representing the language direction\n * @param {TableMetadata} props.tableMetadata\n * @param {ColumnFilteringState} props.columnFilteringState\n * @param {*} dispatch seismic dispatch\n */\nconst valueInput = (props, dispatch) => {\n\tconst { column } = props;\n\n\tconst type = getColumnType(column);\n\n\tif (getColumnFilterValueEditorCustomComponentTag(column)) {\n\t\treturn customValueInput(props, dispatch);\n\t} else if (shouldUseChoiceFilter(type)) {\n\t\treturn choiceValueInput(props);\n\t} else if (type === TYPE_BOOLEAN) {\n\t\treturn booleanValueInput(props);\n\t} else if (type === TYPE_DATE_TIME) {\n\t\treturn dateTimeValueInput(props);\n\t} else {\n\t\treturn genericValueInput(props);\n\t}\n};\n\n/**\n * Renders operator input OR choice text according to the column type or configured input component\n * Choice text fully replaces operator and has nothing to do with it but is placed and styled similarly.\n *\n * @param {Object} props\n * @param {ProcessedColumn} props.column\n * @param {ColumnFilteringState} props.columnFilteringState\n * @param {String} props.dir a prop representing the language direction\n */\nconst operatorDropdownOrChoiceText = (props) => {\n\tconst { column, columnFilteringState } = props;\n\n\tconst type = getColumnType(column);\n\tconst operatorLabel = t('Operator');\n\n\tconst operators = getOperators(column);\n\tconst { selectedOperator } = getColumnFilteringStateForColumn(\n\t\tcolumn,\n\t\tcolumnFilteringState\n\t);\n\n\tif (shouldUseChoiceFilter(type)) {\n\t\t// @ts-ignore it doesn't like that value might be a non array, but we have already checked for that\n\t\tconst valueCount = getColumnFilterValue(column)?.length ?? 0;\n\t\tconst MAX_VALUE_COUNT_TO_DISPLAY = 99; // https://www.figma.com/design/dZKjg11aPVtjfLWf6LaUtj?node-id=5543-277856#888533851\n\n\t\t// this count is expected to display the number of APPLIED values, so it should not update with state\n\t\tconst valueCountToDisplay =\n\t\t\tvalueCount < MAX_VALUE_COUNT_TO_DISPLAY\n\t\t\t\t? valueCount\n\t\t\t\t: MAX_VALUE_COUNT_TO_DISPLAY;\n\t\tconst COLUMN_FILTERING_EMPTY_CHOICE_FILTER_TEXT = t(\n\t\t\t'No filter applied yet.'\n\t\t);\n\t\tconst pluralizer = valueCount == 1 ? '' : 's';\n\t\tconst COLUMN_FILTERING_NONEMPTY_CHOICE_FILTER_TEXT = t(\n\t\t\t'{0} value{1} selected.',\n\t\t\tvalueCountToDisplay,\n\t\t\tpluralizer\n\t\t);\n\n\t\t// choice text case\n\t\tconst text = valueCount\n\t\t\t? COLUMN_FILTERING_NONEMPTY_CHOICE_FILTER_TEXT\n\t\t\t: COLUMN_FILTERING_EMPTY_CHOICE_FILTER_TEXT;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={classNames({\n\t\t\t\t\t'choice-filter-text': true,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{text}\n\t\t\t</div>\n\t\t);\n\t} else if (isEmpty(operators)) {\n\t\t// overridden to not show operator dropdown\n\t\treturn null;\n\t} else {\n\t\treturn (\n\t\t\t<now-dropdown\n\t\t\t\tappendToPayload={{ column }}\n\t\t\t\tbare={true}\n\t\t\t\tclassName=\"column-filtering-operator-dropdown\"\n\t\t\t\titems={operators}\n\t\t\t\tlabel={operatorLabel}\n\t\t\t\tlabelPosition=\"start\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tselectedItems={[selectedOperator]}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tconfig-aria={{\n\t\t\t\t\ttrigger: {\n\t\t\t\t\t\t'aria-label': t('{0} Operator', column.label),\n\t\t\t\t\t\t'aria-labelledby': operatorLabel,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n};\n\n/**\n * Renders the cell on the far left of the row that spans all the special columns and serves as a label for all the filtering inputs\n *\n * @param {Object} props\n * @param {number} props.filterLabelCellColSpan the number of special columns, which this cell should spread across\n * @param {string} props.columnFilteringInfo optional tooltip describing filtering string\n * @param {boolean | undefined} props.rowDragDropEnabled whether row drag and drop is enabled\n * @param {boolean} props.showInlinePadding whether to include padding\n */\nexport const columnFilterLabelCell = ({\n\tfilterLabelCellColSpan,\n\tcolumnFilteringInfo,\n\trowDragDropEnabled,\n\tshowInlinePadding,\n}) => {\n\tconst filterLabel = t('Filter');\n\tconst columnFilteringLabel = t(columnFilteringInfo);\n\tconst tdClasses = classNames({\n\t\t'column-filtering-label-cell': true,\n\t\t[SPECIAL_COLUMN_CELL]: true,\n\t});\n\tconst cellContentClasses = classNames({\n\t\t'column-filtering-label-cell-content': true,\n\t\t[SPECIAL_COLUMN_CELL_CONTENT]: true,\n\t\t[INCLUDE_LARGE_PADDING_CLASS]: !rowDragDropEnabled && showInlinePadding,\n\t});\n\n\treturn (\n\t\t<td className={tdClasses} colspan={filterLabelCellColSpan}>\n\t\t\t<div className={cellContentClasses}>\n\t\t\t\t{columnFilteringInfo && (\n\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\tclassName=\"col-filter-info-tooltip\"\n\t\t\t\t\t\ticon={'circle-info-outline'}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tbare=\"true\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\thidePadding={true}\n\t\t\t\t\t\tdata-tooltip={columnFilteringLabel}\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t'aria-label': `${t(\n\t\t\t\t\t\t\t\t\t`Display help info popup: ${columnFilteringLabel}`\n\t\t\t\t\t\t\t\t)}`,\n\t\t\t\t\t\t\t\trole: 'button',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{filterLabel}\n\t\t\t</div>\n\t\t</td>\n\t);\n};\n\n/**\n * Renders cell for column filtering at the top of each column\n *\n * @param {Object} props\n * @param {ProcessedColumn} props.column\n * @param {String} props.dir a prop representing the language direction\n * @param {TableMetadata} props.tableMetadata\n * @param {ColumnFilteringState} props.columnFilteringState\n * @param {*} dispatch seismic dispatch\n */\nexport const columnFilterCell = (props, dispatch) => {\n\tconst { column, columnFilteringState } = props;\n\n\tconst valueFromProps = columnSelectors.getColumnFilterValue(column);\n\tconst shouldShowValueEditor =\n\t\tcolumnSelectors.getColumnFilterValueEditorCustomComponentTag(column) !==\n\t\t'';\n\tconst { selectedOperator } = getColumnFilteringStateForColumn(\n\t\tcolumn,\n\t\tcolumnFilteringState\n\t);\n\tconst valueRequired = getColumnRequiresValueFromOperator(\n\t\tcolumn,\n\t\tselectedOperator\n\t);\n\n\tconst customTopText = getColumnFilterCustomTopText(column);\n\tconst removeTooltip = t('Remove');\n\n\tconst tdClasses = classNames({\n\t\t'column-filtering-cell': true,\n\t});\n\tconst cellContentClasses = classNames({\n\t\t'column-filtering-cell-content': true,\n\t\t[CELL_CONTENT_CLASS]: true,\n\t});\n\n\tconst hasStateInitialized = !!getColumnFilteringStateForColumn(\n\t\tcolumn,\n\t\tcolumnFilteringState\n\t);\n\n\tif (!hasStateInitialized) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error('Column filtering state not initialized for column', {\n\t\t\tcolumn,\n\t\t\tcolumnFilteringState,\n\t\t});\n\t}\n\n\tconst filterValue = isObject(valueFromProps)\n\t\t? valueFromProps\n\t\t: toString(valueFromProps);\n\n\treturn (\n\t\t<td className={tdClasses}>\n\t\t\t{hasStateInitialized ? (\n\t\t\t\t<div className={cellContentClasses}>\n\t\t\t\t\t{customTopText ? (\n\t\t\t\t\t\t<div className=\"custom-top-text\">{customTopText}</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\toperatorDropdownOrChoiceText(props)\n\t\t\t\t\t)}\n\t\t\t\t\t{shouldShowValueEditor ? (\n\t\t\t\t\t\t<div className=\"column-filtering-bottom-container\">\n\t\t\t\t\t\t\t{valueInput(props, dispatch)}\n\t\t\t\t\t\t\t{!(isEmpty(filterValue) && valueRequired) && (\n\t\t\t\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\t\t\t\tappendToPayload={{\n\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\ttype: REMOVE_COLUMN_FILTER_BUTTON,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\t\t\t\t'aria-label': `${column.label} ${REMOVE_COLUMN_FILTER_ARIA_LABEL}`, //DEF0688145 Improved accessibility by adding column label\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tbare={true}\n\t\t\t\t\t\t\t\t\ticon=\"trash-outline\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\ttooltipContent={removeTooltip}\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</td>\n\t);\n};\n","// HANDLED\nexport const NOW_BUTTON_CLICKED = 'NOW_BUTTON#CLICKED';\nexport const NOW_BUTTON_ICONIC_CLICKED = 'NOW_BUTTON_ICONIC#CLICKED';\nexport const NOW_BUTTON_STATEFUL_CLICKED = 'NOW_BUTTON_STATEFUL#SELECTED_SET';\nexport const NOW_CHECKBOX_CHECKED_SET = 'NOW_CHECKBOX#CHECKED_SET';\nexport const NOW_DATE_TIME_ENTER_KEYDOWN = 'NOW_DATE_TIME#ENTER_KEYDOWN';\nexport const NOW_DATE_TIME_FOOTER_ACTION_CLICKED =\n\t'NOW_DATE_TIME#FOOTER_ACTION_CLICKED';\nexport const NOW_DATE_TIME_OPENED_SET = 'NOW_DATE_TIME#OPENED_SET';\nexport const NOW_DATE_TIME_INPUT = 'NOW_DATE_TIME#INPUT';\nexport const NOW_DATE_TIME_VALUE_SET = 'NOW_DATE_TIME#VALUE_SET';\nexport const NOW_DROPDOWN_ITEM_CLICKED = 'NOW_DROPDOWN#ITEM_CLICKED';\nexport const NOW_INPUT_ENTER_KEYDOWN = 'NOW_INPUT#ENTER_KEYDOWN';\nexport const NOW_INPUT_INPUT = 'NOW_INPUT#INPUT';\nexport const NOW_SELECT_SELECTED_ITEM_SET = 'NOW_SELECT#SELECTED_ITEM_SET';\nexport const NOW_BUTTON_BARE_CLICKED = 'NOW_BUTTON_BARE#CLICKED';\n\n// INTERNAL\nexport const REFRESH_TIMEOUT = 25;\n\n// EMITTED\nexport const NOW_LIST_COLUMN_FILTER_APPLIED = 'NOW_LIST#COLUMN_FILTER_APPLIED';\n","import { actionTypes } from '@servicenow/ui-core';\nimport { getUnixTime } from 'date-fns';\nimport { zonedTimeToUtc } from 'date-fns-tz';\nimport find from 'lodash/find';\nimport get from 'lodash/get';\nimport includes from 'lodash/includes';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport remove from 'lodash/remove';\nimport { t } from 'sn-translate';\nimport { getUserPrefContext } from 'sn-ux-core';\n\nimport {\n\tCOLUMN_FILTERING_USER_PREFERENCE_KEY,\n\tUSER_PREF_UPDATED,\n} from '../../constants';\nimport columnSelectors from '../../shared/utils/selectors/columnSelectors';\nimport {\n\tCOLUMN_FILTERING_CHOICE_TYPE_APPLY_BUTTON_NAME,\n\tCOLUMN_FILTERING_CHOICE_TYPE_CANCEL_BUTTON_NAME,\n} from '../../shared/views/popover/popoverChoiceColumnFilterContent/popoverChoiceColumnFilterConsts';\nimport { getColumnFilteringStateForColumn } from '../../shared/views/table/tableHeaders/columnFilteringCell/columnFilteringCell';\nimport {\n\tBOOLEAN_FILTER_DEFAULT_OPERATOR,\n\tCOLUMN_FILTERING_CHOICE_TYPE_TRIGGER_BUTTON_NAME,\n\tCOLUMN_FILTERING_SELECT_ALL_BUTTON_NAME,\n\tCOLUMN_FILTERING_SELECT_NONE_BUTTON_NAME,\n\tCOLUMN_FILTERING_VALUE_INPUT_NAME,\n\tDATE_TIME_APPLY_BUTTON_NAME,\n\tDATE_TIME_CANCEL_BUTTON_NAME,\n\tDATE_TIME_FILTER_DEFAULT_OPERATOR,\n\tGENERIC_FILTER_DEFAULT_OPERATOR,\n\tNUMBER_FILTER_DEFAULT_OPERATOR,\n\tREMOVE_COLUMN_FILTER_BUTTON,\n\tSHOW_HIDE_COLUMN_FILTERING_ROW_ACTION,\n} from '../../shared/views/table/tableHeaders/columnFilteringCell/columnFilteringConsts';\nimport {\n\tTYPE_BOOLEAN,\n\tTYPE_CHOICE,\n\tTYPE_DATE_TIME,\n\tTYPE_NUMBER,\n\tTYPE_PILLS,\n} from '../../typeSchemas/columnDefinitions/columnTypes/columnTypes';\nimport { REFRESH_CELL_TRAP } from '../keyboardNavBehavior/constants';\nimport {\n\tfocusPopoverTarget,\n\tsetBehaviorState,\n} from '../keyboardNavBehavior/keyboardNavHelpers';\nimport {\n\tCHOICE_COLUMN_FILTER,\n\tNOW_LIST_CLOSE_POPOVER_INTERNAL,\n\tNOW_LIST_OPEN_POPOVER_INTERNAL,\n\tNOW_LIST_POPOVER_CLOSED,\n} from '../popoverBehavior/constants';\nconst { COMPONENT_PROPERTY_CHANGED, COMPONENT_BOOTSTRAPPED } = actionTypes;\n\nimport {\n\tNOW_BUTTON_CLICKED,\n\tNOW_BUTTON_ICONIC_CLICKED,\n\tNOW_BUTTON_STATEFUL_CLICKED,\n\tNOW_CHECKBOX_CHECKED_SET,\n\tNOW_DATE_TIME_ENTER_KEYDOWN,\n\tNOW_DATE_TIME_FOOTER_ACTION_CLICKED,\n\tNOW_DATE_TIME_INPUT,\n\tNOW_DATE_TIME_OPENED_SET,\n\tNOW_DATE_TIME_VALUE_SET,\n\tNOW_DROPDOWN_ITEM_CLICKED,\n\tNOW_INPUT_ENTER_KEYDOWN,\n\tNOW_INPUT_INPUT,\n\tNOW_LIST_COLUMN_FILTER_APPLIED,\n\tNOW_SELECT_SELECTED_ITEM_SET,\n\tNOW_BUTTON_BARE_CLICKED,\n\tREFRESH_TIMEOUT,\n} from './constants';\n\nconst {\n\tgetChildren,\n\tgetColumnFilterValue,\n\tgetColumnType,\n\tgetDateTimeFormat,\n\tgetFormattedColumnKey,\n\tgetOperatorFromColumnFilterConfig,\n\tgetOperators,\n\tgetSelectedOperator,\n\tgetTimeZone,\n\thasChildren,\n} = columnSelectors;\n\nconst mapPath = `behaviors.columnFilteringBehavior.columnFilteringState.columnFiltersMap.`;\nconst dateTimeManageOpenedPath = '.dateTimeState.manageOpened';\n\n/**\n * @param {any} context\n * @returns {boolean}\n */\nconst getColumnFilteringUserPreference = (context) => {\n\tconst getColumnFilteringUserPreferenceKey = getUserPrefContext(\n\t\tCOLUMN_FILTERING_USER_PREFERENCE_KEY\n\t);\n\n\treturn context?.[getColumnFilteringUserPreferenceKey] === 'true';\n};\n\n/**\n * @param {Now.Dispatch} dispatch\n * @param {boolean} value\n */\nconst setColumnFilteringUserPreference = (dispatch, value) => {\n\tdispatch(USER_PREF_UPDATED, {\n\t\tname: COLUMN_FILTERING_USER_PREFERENCE_KEY,\n\t\tvalue: value,\n\t});\n};\n\n/**\n * Function to update lodash isEmpty to include number inputs\n * @param {SingleColumnFilteringState['value']} columnValue the columnValue type\n */\nexport const isColumnValueEmpty = (columnValue) => {\n\t// The DateTime column filter returns a number that\n\t// isEmpty will always evaluate to be true\n\n\tconst isNumberValueEmpty =\n\t\ttypeof columnValue === 'number' ? Number.isNaN(columnValue) : true;\n\n\treturn isNumberValueEmpty && isEmpty(columnValue);\n};\n\n/**\n * Given an operator id string, finds the full operator object for access to the label etc.\n * Also used to verify if the given operator is present in the operators array\n *\n * @param {ColumnFilterConfig['operators']} operators the type of the column\n * @param {SingleColumnFilteringState['selectedOperator']} selectedOperator the tentative selected operator\n *\n * @returns {object | null}\n */\nexport const findFullOperator = (operators, selectedOperator) =>\n\tfind(\n\t\toperators,\n\t\t(/** @type {ColumnFilterOperator} */ operator) =>\n\t\t\toperator?.id === selectedOperator\n\t) ?? null;\n\n/**\n * gets the default operator for a given type\n *\n * @param {ColumnBase['type']} type the type of the column\n *\n * @returns {SingleColumnFilteringState['selectedOperator']} the default operator the given type, regardless of whether that operator is actually present in the operators list\n */\nconst getDefaultOperatorForType = (type) => {\n\tswitch (type) {\n\t\tcase TYPE_NUMBER:\n\t\t\treturn NUMBER_FILTER_DEFAULT_OPERATOR;\n\t\tcase TYPE_BOOLEAN:\n\t\t\treturn BOOLEAN_FILTER_DEFAULT_OPERATOR;\n\t\tcase TYPE_DATE_TIME:\n\t\t\treturn DATE_TIME_FILTER_DEFAULT_OPERATOR;\n\t\tcase TYPE_PILLS:\n\t\t\treturn null;\n\t\tcase TYPE_CHOICE:\n\t\t\treturn null;\n\t\tdefault:\n\t\t\treturn GENERIC_FILTER_DEFAULT_OPERATOR;\n\t}\n};\n\n/**\n * Used in the case that there is no selected operator from props or the selected operator is not in the operators array.\n * Tries to use typed default operator if present in operators array, if not, uses first item\n *\n * @param {Object} args\n * @param {ColumnBase['type']} args.type the type of the column\n * @param {ColumnFilterConfig['operators']} args.operators the operators array for the column\n *\n * @returns {SingleColumnFilteringState['selectedOperator']} the default operator the given type, regardless of whether that operator is actually present in the operators list\n */\nexport const getBackupOperator = ({ type, operators }) => {\n\tif (isEmpty(operators)) return null;\n\tconst defaultOperator = getDefaultOperatorForType(type);\n\treturn findFullOperator(operators, defaultOperator)\n\t\t? defaultOperator\n\t\t: // @ts-ignore - we know operators is not empty bc of above check\n\t\t  operators[0].id;\n};\n\n/**\n * Helper that handles logic and calls updateState for updating an individual column's filtering state, including initial state\n *\n * @param {Object} args\n * @param {ColumnType} args.column\n * @param {SingleColumnFilteringState['value']} args.newValue\n * @param {SingleColumnFilteringState['selectedOperator']} args.newOperator\n * @param {SingleColumnFilteringState['dateTimeState']} args.newDateTimeState\n *\n * @returns {SingleColumnFilteringState} the updated state for the column, to be used in updateState\n */\nexport const getUpdatedStateForOneCol = ({\n\tcolumn,\n\tnewValue,\n\tnewOperator,\n\tnewDateTimeState,\n}) => {\n\t// OPERATOR\n\tconst operators = columnSelectors.getOperators(column);\n\tlet selectedOperator = newOperator;\n\tconst selectedOperatorObject = findFullOperator(\n\t\toperators,\n\t\tselectedOperator\n\t);\n\n\tif (!operators) selectedOperator = null;\n\telse {\n\t\tconst type = columnSelectors.getColumnType(column);\n\n\t\tif (!newOperator || !selectedOperatorObject) {\n\t\t\t// if no operator is selected, or the selected operator is not in the operators array (latter is only a concern for operator string from props)\n\t\t\tselectedOperator = getBackupOperator({ type, operators });\n\t\t}\n\t}\n\n\t// SHOULD DISABLE VALUE + VALUE\n\tconst shouldDisableValue =\n\t\t!get(selectedOperatorObject, 'requiresValue', true) &&\n\t\t!isEmpty(operators); // check isEmpty for case where operators are hidden but selectedOperator is still set\n\tconst value = shouldDisableValue ? null : newValue;\n\n\treturn {\n\t\tvalue,\n\t\tselectedOperator,\n\t\tshouldDisableValue,\n\t\tdateTimeState: newDateTimeState,\n\t};\n};\n\n/**\n * @param {ProcessedColumn | ColumnBase} column\n * @param {State} state\n */\nexport const getColumnOperatorFromState = (column, state) => {\n\tconst columnStateValue =\n\t\tstate.behaviors.columnFilteringBehavior.columnFilteringState\n\t\t\t.columnFiltersMap[getFormattedColumnKey(column)];\n\n\tif (!('selectedOperator' in columnStateValue)) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error('unable to fetch operator in getColumnOperatorFromState');\n\t}\n\n\treturn columnStateValue.selectedOperator;\n};\n\n/**\n * @param {ProcessedColumn | ColumnBase} column\n * @param {State} state\n */\nexport const getColumnValueFromState = (column, state) => {\n\tconst returnValue =\n\t\tstate.behaviors.columnFilteringBehavior.columnFilteringState\n\t\t\t.columnFiltersMap[getFormattedColumnKey(column)].value;\n\n\tif (!returnValue) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error('unable to fetch value in getColumnValueFromState');\n\t}\n\n\treturn returnValue;\n};\n\n/**\n * @param {ProcessedColumn | ColumnBase} column\n * @param {SingleColumnFilteringState['selectedOperator']} newOperator\n * @returns {boolean}\n */\nexport const getColumnRequiresValueFromOperator = (column, newOperator) => {\n\tconst operators = columnSelectors.getOperators(column);\n\tconst selectedOperatorObject = findFullOperator(operators, newOperator);\n\n\t// requiresValue is a boolean property, by default is true\n\treturn get(selectedOperatorObject, 'requiresValue', true);\n};\n\n/**\n * @param {ProcessedColumn | ColumnBase} column\n * @param {State} state\n */\nexport const getDateTimeState = (column, state) => {\n\tconst returnValue =\n\t\tstate.behaviors.columnFilteringBehavior.columnFilteringState\n\t\t\t.columnFiltersMap[getFormattedColumnKey(column)].dateTimeState;\n\n\tif (!returnValue) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error('unable to fetch dateTimeState in getDateTimeState');\n\t}\n\n\treturn returnValue;\n};\n\n/**\n * @returns DateTimeState\n */\nexport const getDefaultDateTimeState = () => {\n\treturn {\n\t\tmanageOpened: false,\n\t\tshouldDisableApply: true,\n\t};\n};\n\n/**\n * Resets state of one column to whatever came from props\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const resetColumnState = ({\n\taction: {\n\t\tpayload: { column },\n\t},\n\tupdateState,\n}) => {\n\tif (!isEmpty(column.columnFilterConfig.value)) {\n\t\treturn;\n\t}\n\tupdateState({\n\t\tpath: `${mapPath}${getFormattedColumnKey(column)}`,\n\t\toperation: 'set',\n\t\tvalue: getUpdatedStateForOneCol({\n\t\t\tcolumn,\n\t\t\tnewValue: structuredClone(getColumnFilterValue(column)),\n\t\t\tnewOperator: getSelectedOperator(column),\n\t\t\tnewDateTimeState: getDefaultDateTimeState(),\n\t\t}),\n\t});\n};\n\n/**\n * Handles two iconic buttons in col filtering experience:\n * - Show/hide column filtering row when the column filter button-iconic is clicked\n * - Remove filter button\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleFilteringIconicButtonClicked = (coeffects) => {\n\tconst {\n\t\taction: { payload },\n\t} = coeffects;\n\tconst { type } = payload;\n\n\tif (type === SHOW_HIDE_COLUMN_FILTERING_ROW_ACTION) {\n\t\tupdateShowColumnFilteringRowState(coeffects);\n\t}\n\tif (type === REMOVE_COLUMN_FILTER_BUTTON) {\n\t\tconst { column } = payload;\n\t\tconst columnType = getColumnType(column);\n\t\tconst operators = getOperators(column);\n\t\tconst newValue =\n\t\t\tcolumnType === TYPE_CHOICE || columnType === TYPE_PILLS ? [] : null;\n\n\t\temitApplyAction({\n\t\t\tcoeffects,\n\t\t\tcolumn,\n\t\t\tnewValue: newValue,\n\t\t\tnewOperator: getBackupOperator({ type: columnType, operators }),\n\t\t\tcolumnFilterRemoved: true,\n\t\t});\n\t}\n};\n\n/**\n * Handle now-date-time-calendar footer buttons Apply and Cancel\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleDateTimeActionsClicked = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {\n\t\t\t\taction: { name, isToday },\n\t\t\t\tcolumn,\n\t\t\t},\n\t\t},\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\n\t// Clicking either Apply or Cancel will close the popover\n\tupdateState({\n\t\tpath: `${mapPath}${getFormattedColumnKey(\n\t\t\tcolumn\n\t\t)}${dateTimeManageOpenedPath}`,\n\t\toperation: 'set',\n\t\tvalue: false,\n\t});\n\n\tif (name === DATE_TIME_CANCEL_BUTTON_NAME) {\n\t\tresetColumnState(coeffects);\n\t} else if (name === DATE_TIME_APPLY_BUTTON_NAME || isToday) {\n\t\temitApplyAction({\n\t\t\tcoeffects,\n\t\t\tcolumn,\n\t\t\tnewValue: getColumnValueFromState(column, state),\n\t\t\tnewOperator: getColumnOperatorFromState(column, state),\n\t\t});\n\t}\n\n\tfocusPopoverTarget(coeffects);\n};\n\n/**\n * Handle opening now-date-time-calendar\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst handleOpeningDateTimeCalendar = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { column },\n\t\t},\n\t\tupdateState,\n\t} = coeffects;\n\n\tupdateState({\n\t\tpath: `${mapPath}${getFormattedColumnKey(\n\t\t\tcolumn\n\t\t)}${dateTimeManageOpenedPath}`,\n\t\toperation: 'set',\n\t\tvalue: true,\n\t});\n};\n\n/**\n * Handles updating the state to show/hide the column filtering row\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst updateShowColumnFilteringRowState = ({\n\tstate: {\n\t\tbehaviors: {\n\t\t\tcolumnFilteringBehavior: {\n\t\t\t\tcolumnFilteringState: { showColumnFilteringRow },\n\t\t\t},\n\t\t},\n\t},\n\tdispatch,\n\tupdateState,\n}) => {\n\tupdateState({\n\t\tpath:\n\t\t\t'behaviors.columnFilteringBehavior.columnFilteringState.showColumnFilteringRow',\n\t\toperation: 'set',\n\t\tvalue: !showColumnFilteringRow,\n\t});\n\n\tsetColumnFilteringUserPreference(dispatch, !showColumnFilteringRow);\n\n\tsetBehaviorState(updateState, {\n\t\tisRendered: false,\n\t});\n};\n\n/**\n * handles all buttons in the choice column filtering experience\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst handleButtonClicked = (coeffects) => {\n\tconst { action, dispatch, state } = coeffects;\n\tconst {\n\t\tpayload: { column, name },\n\t} = action;\n\n\tswitch (name) {\n\t\tcase COLUMN_FILTERING_CHOICE_TYPE_TRIGGER_BUTTON_NAME:\n\t\t\topenChoiceColumnFilterPopover(coeffects);\n\t\t\tbreak;\n\t\tcase COLUMN_FILTERING_CHOICE_TYPE_CANCEL_BUTTON_NAME:\n\t\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t\t\tbreak;\n\t\tcase COLUMN_FILTERING_CHOICE_TYPE_APPLY_BUTTON_NAME:\n\t\t\temitApplyAction({\n\t\t\t\tcoeffects,\n\t\t\t\tcolumn,\n\t\t\t\tnewValue: getColumnValueFromState(column, state),\n\t\t\t\tnewOperator: null,\n\t\t\t});\n\t\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t\t\tbreak;\n\t\tcase COLUMN_FILTERING_SELECT_ALL_BUTTON_NAME:\n\t\t\tselectAllOrNone(coeffects, true);\n\t\t\tbreak;\n\t\tcase COLUMN_FILTERING_SELECT_NONE_BUTTON_NAME:\n\t\t\tselectAllOrNone(coeffects, false);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n};\n\n/**\n * handles opening the choice column filter popover when the trigger button is clicked\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst openChoiceColumnFilterPopover = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { choiceValueInputButtonRef, column },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tif (!choiceValueInputButtonRef) return;\n\n\tconst popoverDefinition = {\n\t\tconfig: {\n\t\t\tariaLabel: t('Column Filter Popover for {0}', column.label),\n\t\t\tdismissOnScroll: false, // header is sticky anyway\n\t\t\thideTail: false,\n\t\t\tdismissable: true,\n\t\t},\n\t\tcontent: {\n\t\t\t// Allows for dialog focus onto the choice filter popover\n\t\t\tcomponentTag: CHOICE_COLUMN_FILTER,\n\t\t\tpopoverType: CHOICE_COLUMN_FILTER,\n\t\t},\n\t};\n\n\tdispatch(NOW_LIST_OPEN_POPOVER_INTERNAL, {\n\t\tpopoverTarget: choiceValueInputButtonRef,\n\t\tpopoverDefinition,\n\t\tcontext: {\n\t\t\tcolumn,\n\t\t},\n\t});\n};\n\n/**\n * Handles updating state for generic inputs, which don't autoapply on change\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleInputValueUpdate = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { column, fieldValue, name },\n\t\t},\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\n\tif (name !== COLUMN_FILTERING_VALUE_INPUT_NAME || !column) return;\n\n\tupdateState({\n\t\tpath: `${mapPath}${getFormattedColumnKey(column)}`,\n\t\toperation: 'set',\n\t\tvalue: getUpdatedStateForOneCol({\n\t\t\tcolumn,\n\t\t\tnewValue: fieldValue,\n\t\t\tnewOperator: getColumnOperatorFromState(column, state),\n\t\t\tnewDateTimeState: getDateTimeState(column, state),\n\t\t}),\n\t});\n};\n\n/**\n * Returns the date format to be overriden. It is based on the selected operator.\n * If override is not provided, it returns the default date format from the column.\n *\n * @param {ProcessedColumn} column\n * @param {ColumnFilteringState} columnFilteringState\n *\n * @returns {string} date format\n */\nexport const getOverridenDateFormat = (column, columnFilteringState) => {\n\tconst { selectedOperator } = getColumnFilteringStateForColumn(\n\t\tcolumn,\n\t\tcolumnFilteringState\n\t);\n\tconst dateFormatFromColumn = getDateTimeFormat(column);\n\tconst selectedOperatorConfig = getOperatorFromColumnFilterConfig(\n\t\tcolumn,\n\t\tselectedOperator\n\t);\n\t// todo: empty object is to avoid failing tests\n\tconst { dateFormatOverride } = selectedOperatorConfig || {};\n\treturn dateFormatOverride ? dateFormatOverride : dateFormatFromColumn;\n};\n\n/**\n * Handles updating state for datetime inputs, which don't autoapply on change\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleDateTimeValueUpdate = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { column, fieldValue, value, name },\n\t\t},\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\tconst {\n\t\tbehaviors: {\n\t\t\tcolumnFilteringBehavior: { columnFilteringState },\n\t\t},\n\t} = state;\n\tif (!columnFilteringState) return;\n\tconst timezone = getTimeZone(column);\n\n\tif (name !== COLUMN_FILTERING_VALUE_INPUT_NAME || !column) return;\n\n\t// sometimes new value comes from popover (value), sometimes it comes from the input field (fieldValue),\n\t// depending on what the user changed.\n\t// treating value as the primary since it's more likely to be valid.\n\t// FIXME: eventually need to handle validity checks on fieldValue here, but invalidity shows a message below the field that throws off this field's alignment with other columns' filtering fields. need design input on how to solve that\n\tconst newValueString = value ?? fieldValue;\n\tconst newValueInUnix = getUnixTime(\n\t\tzonedTimeToUtc(newValueString, timezone)\n\t);\n\n\tupdateState({\n\t\tpath: `${mapPath}${getFormattedColumnKey(column)}`,\n\t\toperation: 'set',\n\t\tvalue: getUpdatedStateForOneCol({\n\t\t\tcolumn,\n\t\t\tnewValue: newValueInUnix,\n\t\t\tnewOperator: getColumnOperatorFromState(column, state),\n\t\t\tnewDateTimeState: {\n\t\t\t\t...getDateTimeState(column, state),\n\t\t\t\tshouldDisableApply:\n\t\t\t\t\tgetColumnFilterValue(column) === newValueInUnix,\n\t\t\t},\n\t\t}),\n\t});\n};\n\n/**\n * Updates state when a checkbox in the choice column filtering popover is checked or unchecked\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleCheckboxCheckedSet = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name: choiceKey, value: isChecked, column },\n\t\t},\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\n\tconst oldValue =\n\t\tstate.behaviors.columnFilteringBehavior.columnFilteringState\n\t\t\t.columnFiltersMap[getFormattedColumnKey(column)].value ?? [];\n\n\tconst newValue = oldValue;\n\n\tif (isChecked) {\n\t\tif (!includes(oldValue, choiceKey)) {\n\t\t\tnewValue.push(choiceKey);\n\t\t}\n\t} else {\n\t\tremove(\n\t\t\tnewValue,\n\t\t\t(/** @type {ChoiceType['key']} */ item) => item === choiceKey\n\t\t);\n\t}\n\n\tupdateState({\n\t\tpath: `${mapPath}${getFormattedColumnKey(column)}`,\n\t\toperation: 'set',\n\t\tvalue: getUpdatedStateForOneCol({\n\t\t\tcolumn,\n\t\t\tnewValue,\n\t\t\tnewOperator: null,\n\t\t\tnewDateTimeState: getDateTimeState(column, state),\n\t\t}),\n\t});\n};\n\n/**\n * Handles the select all and select none buttons in the choice column filtering popover\n *\n * @param {Coeffects<Props, State>} coeffects\n * @param {boolean} shouldCheck indicates whether this is select all (true) or select none (false)\n */\nexport const selectAllOrNone = (coeffects, shouldCheck) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { column, choices },\n\t\t},\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\n\t// Retrieve the existing filter values for the current column, or default to an empty array\n\tconst oldValue =\n\t\tstate.behaviors.columnFilteringBehavior.columnFilteringState\n\t\t\t.columnFiltersMap[getFormattedColumnKey(column)].value ?? [];\n\n\t// Create a reference to the oldValue array to modify\n\tconst newValue = oldValue;\n\n\tif (shouldCheck) {\n\t\t// Add each choice key to the newValue array, ensuring no duplicates\n\t\tchoices?.forEach((/** @type {PillType | ChoiceType} */ choice) => {\n\t\t\tif (!newValue.includes(choice.key)) {\n\t\t\t\tnewValue.push(choice.key); // Add this choice if it's not already included\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Remove each choice key from the newValue array if it exists\n\t\tchoices?.forEach((/** @type {PillType | ChoiceType} */ choice) => {\n\t\t\tconst index = newValue.indexOf(choice.key);\n\t\t\tif (index !== -1) {\n\t\t\t\tnewValue.splice(index, 1); // Remove this choice if it's found in the array\n\t\t\t}\n\t\t});\n\t}\n\n\tupdateState({\n\t\tpath: `${mapPath}${getFormattedColumnKey(column)}`,\n\t\toperation: 'set',\n\t\tvalue: getUpdatedStateForOneCol({\n\t\t\tcolumn,\n\t\t\tnewValue,\n\t\t\tnewOperator: null,\n\t\t\tnewDateTimeState: getDateTimeState(column, state),\n\t\t}),\n\t});\n};\n\n/**\n * Handles applying changes for a column when its operator changes\n * Operator change should not apply changes when there is no value and a value is required.\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst handleOperatorUpdate = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {\n\t\t\t\tcolumn,\n\t\t\t\titem: { id: newOperator },\n\t\t\t},\n\t\t},\n\t\tstate,\n\t} = coeffects;\n\temitApplyAction({\n\t\tcoeffects,\n\t\tcolumn,\n\t\tnewValue: getColumnValueFromState(column, state),\n\t\tnewOperator,\n\t});\n};\n\n/**\n * Handles applying changes on enter within now-input and now-datetime\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleInputAndDateTimeKeyDownApply = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { column, fieldValue, name },\n\t\t},\n\t\tstate,\n\t} = coeffects;\n\tconst timezone = getTimeZone(column);\n\n\tif (name !== COLUMN_FILTERING_VALUE_INPUT_NAME || !column) return;\n\n\tconst newValue =\n\t\tgetColumnType(column) === TYPE_DATE_TIME\n\t\t\t? getUnixTime(zonedTimeToUtc(fieldValue, timezone))\n\t\t\t: fieldValue;\n\n\temitApplyAction({\n\t\tcoeffects,\n\t\tcolumn,\n\t\tnewValue,\n\t\tnewOperator: getColumnOperatorFromState(column, state),\n\t});\n};\n\n/**\n * Handles applying changes (internally in state and emitting updates) when now-select's value is changed\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleSelectApply = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { column, value, name },\n\t\t},\n\t\tstate,\n\t} = coeffects;\n\n\tif (name !== COLUMN_FILTERING_VALUE_INPUT_NAME) return;\n\n\temitApplyAction({\n\t\tcoeffects,\n\t\tcolumn,\n\t\tnewValue: value,\n\t\tnewOperator: getColumnOperatorFromState(column, state),\n\t});\n};\n\n/**\n * Handles scenarios in which the apply outward action is emitted by grooming the payload for that action\n *\n * @param {Object} args\n * @param {Coeffects<Props, State>} args.coeffects\n * @param {ColumnBase} args.column column that has been updated\n * @param {SingleColumnFilteringState['value']} args.newValue the new filter value input through the UI (if unchanged, then will still be considered new)\n * @param {SingleColumnFilteringState['selectedOperator']} args.newOperator the new operator selected through the UI (if unchanged, then will still be considered new)\n * @param {boolean=} args.columnFilterRemoved true if this method is called to clear the column filter\n *\n */\nexport const emitApplyAction = ({\n\tcoeffects: { dispatch, updateState },\n\tcolumn,\n\tnewValue,\n\tnewOperator,\n\tcolumnFilterRemoved,\n}) => {\n\tconst oldValue = getColumnFilterValue(column);\n\tconst oldOperator = getSelectedOperator(column);\n\n\tif (!columnFilterRemoved) {\n\t\tupdateState({\n\t\t\tpath: `${mapPath}${getFormattedColumnKey(column)}`,\n\t\t\toperation: 'set',\n\t\t\tvalue: getUpdatedStateForOneCol({\n\t\t\t\tcolumn,\n\t\t\t\tnewValue,\n\t\t\t\tnewOperator,\n\t\t\t\tnewDateTimeState: {\n\t\t\t\t\tmanageOpened: false,\n\t\t\t\t\tshouldDisableApply: true,\n\t\t\t\t},\n\t\t\t}),\n\t\t});\n\t}\n\n\tif (oldValue === newValue && oldOperator === newOperator) return;\n\n\t// column is empty and hasn't changed from the previous value\n\tconst isColumnEmpty =\n\t\tisColumnValueEmpty(oldValue) && isColumnValueEmpty(newValue);\n\n\tconst shouldOperatorEmit =\n\t\tnewOperator !== oldOperator &&\n\t\tgetColumnRequiresValueFromOperator(column, newOperator);\n\n\t/** The only condition where we wouldn't dispatch a filter being applied is\n\t * when the operator changes to a new operator requiring a value to filter, and\n\t * the current value in the filter is empty.\n\t */\n\tif (isColumnEmpty && shouldOperatorEmit && !columnFilterRemoved) {\n\t\t// setTimeout with 25ms places this at the next event loop, after the operator state\n\t\t// has updated, and the trashcan button has been removed\n\t\tsetTimeout(() => {\n\t\t\tdispatch(REFRESH_CELL_TRAP);\n\t\t}, REFRESH_TIMEOUT);\n\n\t\treturn;\n\t}\n\n\t// keyboardNav behavior state\n\tsetBehaviorState(updateState, {\n\t\tfocusedCellActions: {\n\t\t\texitCellTrap: true,\n\t\t},\n\t});\n\n\tdispatch(NOW_LIST_COLUMN_FILTER_APPLIED, {\n\t\tcolumn,\n\t\tnewValue,\n\t\tnewOperator,\n\t\toldValue,\n\t\toldOperator,\n\t});\n};\n\n/**\n * checks if state should be reinitialized\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst handlePropertyChanged = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name, value, previousValue },\n\t\t},\n\t} = coeffects;\n\n\tif (\n\t\t!isEqual(value, previousValue) &&\n\t\t(name === 'columnDefinitions' || name === 'columnFilteringEnabled')\n\t) {\n\t\tsetInitialState(coeffects);\n\t}\n};\n\n/**\n * @param {Coeffects<Props, State>} coeffects\n */\nconst setInitialState = (coeffects) => {\n\tconst {\n\t\tcontext,\n\t\tproperties: { columnDefinitions },\n\t\tupdateState,\n\t} = coeffects;\n\n\tif (isEmpty(columnDefinitions)) {\n\t\treturn;\n\t}\n\tconst columns = columnDefinitions.columns;\n\t/** @type {ColumnFilteringState['columnFiltersMap']} */\n\tconst columnFiltersMap = {};\n\n\tif (!isEmpty(columns)) {\n\t\tconst stack = [...columns]; // Create a stack to hold objects for processing\n\t\twhile (stack.length > 0) {\n\t\t\tconst column = stack.pop();\n\n\t\t\tif (!column) continue;\n\n\t\t\tif (hasChildren(column)) {\n\t\t\t\tstack.push(...getChildren(column)); // Add children to stack for further processing\n\t\t\t} else {\n\t\t\t\tcolumnFiltersMap[\n\t\t\t\t\tgetFormattedColumnKey(column)\n\t\t\t\t] = getUpdatedStateForOneCol({\n\t\t\t\t\tcolumn,\n\t\t\t\t\tnewValue: getColumnFilterValue(column),\n\t\t\t\t\tnewOperator: getSelectedOperator(column),\n\t\t\t\t\tnewDateTimeState: getDefaultDateTimeState(),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateState({\n\t\tpath: 'behaviors.columnFilteringBehavior',\n\t\toperation: 'set',\n\t\tvalue: {\n\t\t\tcolumnFilteringState: {\n\t\t\t\tshowColumnFilteringRow: getColumnFilteringUserPreference(\n\t\t\t\t\tcontext\n\t\t\t\t),\n\t\t\t\tcolumnFiltersMap,\n\t\t\t},\n\t\t},\n\t});\n};\n\nconst columnFilteringBehavior = {\n\tname: 'columnFilteringBehavior',\n\tactionHandlers: {\n\t\t// INIT\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: setInitialState,\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\t\teffect: handlePropertyChanged,\n\t\t},\n\t\t// MISC\n\t\t[NOW_BUTTON_CLICKED]: {\n\t\t\teffect: handleButtonClicked,\n\t\t\tstopPropagation: false, // in case a now-button is used as a custom value editor\n\t\t},\n\t\t[NOW_BUTTON_BARE_CLICKED]: {\n\t\t\teffect: handleButtonClicked,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_BUTTON_STATEFUL_CLICKED]: {\n\t\t\teffect: handleFilteringIconicButtonClicked,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_BUTTON_ICONIC_CLICKED]: {\n\t\t\teffect: handleFilteringIconicButtonClicked,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_DATE_TIME_FOOTER_ACTION_CLICKED]: {\n\t\t\teffect: handleDateTimeActionsClicked,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t// STATE UPDATES\n\t\t[NOW_INPUT_INPUT]: {\n\t\t\teffect: handleInputValueUpdate,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_DATE_TIME_INPUT]: {\n\t\t\teffect: handleDateTimeValueUpdate,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_DATE_TIME_VALUE_SET]: {\n\t\t\teffect: handleDateTimeValueUpdate,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_DATE_TIME_OPENED_SET]: {\n\t\t\teffect: handleOpeningDateTimeCalendar,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_CHECKBOX_CHECKED_SET]: {\n\t\t\teffect: handleCheckboxCheckedSet,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t// APPLY ACTIONS\n\t\t[NOW_DATE_TIME_ENTER_KEYDOWN]: {\n\t\t\teffect: handleInputAndDateTimeKeyDownApply,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_DROPDOWN_ITEM_CLICKED]: {\n\t\t\teffect: handleOperatorUpdate,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_INPUT_ENTER_KEYDOWN]: {\n\t\t\teffect: handleInputAndDateTimeKeyDownApply,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_SELECT_SELECTED_ITEM_SET]: {\n\t\t\teffect: handleSelectApply,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_POPOVER_CLOSED]: {\n\t\t\teffect: resetColumnState,\n\t\t\tstopPropagation: false,\n\t\t},\n\t},\n};\n\nexport default columnFilteringBehavior;\n","export const NOW_LIST_HEADER_CELL_TEXT_CLICKED =\n\t'NOW_LIST#HEADER_CELL_TEXT_CLICKED';\nexport const HEADER_CELL_TEXT_CLICKED = 'HEADER_CELL_TEXT_CLICKED';\n","import columnSelectors from '../../shared/utils/selectors/columnSelectors';\nimport { NOW_LIST_POPOVER_CLOSED } from '../popoverBehavior/constants';\n\nimport {\n\tHEADER_CELL_TEXT_CLICKED,\n\tNOW_LIST_HEADER_CELL_TEXT_CLICKED,\n} from './constants';\n\nconst { hasChildren, getHeaderTextDisabled } = columnSelectors;\n\n/**\n * Event handler for header cell text click event\n * @param {Coeffects<Props,State>} coeffects\n * @returns\n */\nexport const headerTextClicked = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { column },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\tif (getHeaderTextDisabled(column)) return;\n\n\t// don't dispatch if the column header cell has children\n\tif (hasChildren(column)) return;\n\n\tdispatch(NOW_LIST_HEADER_CELL_TEXT_CLICKED, {\n\t\tcolumn,\n\t});\n};\n\n/**\n * Event handler for header cell text click event\n * @param {Coeffects<Props,State>} coeffects\n * @returns\n */\nconst handlePopoverClosed = (coeffects) => {\n\tconst { updateState } = coeffects;\n\tupdateState({\n\t\tactiveColumnKey: null,\n\t});\n};\n\nexport default {\n\tname: 'columnHeaderClickBehavior',\n\tactionHandlers: {\n\t\t[HEADER_CELL_TEXT_CLICKED]: {\n\t\t\teffect: headerTextClicked,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_POPOVER_CLOSED]: {\n\t\t\teffect: handlePopoverClosed,\n\t\t\tstopPropagation: false,\n\t\t},\n\t},\n};\n","export const SET_COLUMN_WIDTHS = 'NOW_LIST#SET_COLUMN_WIDTHS';\nexport const INIT_COLUMN_WIDTHS = 'NOW_LIST#INIT_COLUMN_WIDTHS';\nexport const SET_FINAL_AUTO_WIDTHS = 'NOW_LIST#SET_FINAL_AUTO_WIDTHS';\nexport const ADD_RESIZE_OBSERVER = 'NOW_LIST#ADD_RESIZE_OBSERVER';\n\nexport const COL_MIN_WIDTH = '120px';\nexport const TABLE_LAYOUT_AUTO = 'auto';\nexport const TABLE_LAYOUT_FIXED = 'fixed';\nexport const COLUMN_WIDTHS_UPDATED = 'NOW_LIST#COLUMN_WIDTHS_UPDATED';\n","export const ACTION_PREFIX = 'NOW_LIST#';\nexport const COLUMN_RESIZE_STARTED = 'NOW_LIST#RESIZE_STARTED';\nexport const COLUMN_SIZE_UPDATED = 'NOW_LIST#SIZE_UPDATED';\nexport const COLUMN_RESIZE_COMPLETED = 'NOW_LIST#RESIZE_COMPLETED';\n\nexport const COL_RESIZE_MIN_WIDTH = 144;\nexport const RESIZE_SLIDER_CLASS = 'resize-slider';\n","import { nowResizeBehavior } from '../../commons';\nimport { TABLE_LAYOUT_FIXED } from '../columnWidthBehavior/constants';\nimport { KEY } from '../keyboardNavBehavior/constants';\n\nimport {\n\tACTION_PREFIX,\n\tCOL_RESIZE_MIN_WIDTH,\n\tCOLUMN_RESIZE_COMPLETED,\n\tRESIZE_SLIDER_CLASS,\n\tCOLUMN_RESIZE_STARTED,\n\tCOLUMN_SIZE_UPDATED,\n} from './constants';\n\n/**\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const onResizeStart = ({ action, updateState }) => {\n\tconst target = action.payload.domEvent.target;\n\tif (!target) return;\n\n\t// table does not respect column widths when tableLayout is not fixed\n\tconst table = target.closest('table');\n\tif (table.style.tableLayout !== TABLE_LAYOUT_FIXED) {\n\t\tupdateState({\n\t\t\tpath: 'columnWidthsState.tableLayout',\n\t\t\tvalue: TABLE_LAYOUT_FIXED,\n\t\t\toperation: 'set',\n\t\t});\n\t}\n\n\tconst resizeGuide = target.querySelector('.resize-slider-guide');\n\tif (resizeGuide) {\n\t\tconst tableHeight = table.clientHeight;\n\t\tresizeGuide.style.height = `${tableHeight}px`;\n\t}\n};\n\n/**\n * @param {HTMLElement} target\n */\nexport const getHeaderAndSliderElements = (target) => {\n\tlet headerElement = null,\n\t\tsliderContainer = null;\n\t// in case of mouse it is th, in case of keyboard it is resize-slider-container\n\tif (target.nodeName === 'TH') {\n\t\theaderElement = target;\n\t\tsliderContainer = target.querySelector('.resize-slider-container');\n\t} else if (target.classList.contains('resize-slider-container')) {\n\t\tsliderContainer = target;\n\t\theaderElement = target.closest('th');\n\t}\n\treturn { headerElement, sliderContainer };\n};\n\n/**\n *\n * @param {Element|null} sliderContainer\n * @returns\n */\nexport const scrollToIfNotInView = (sliderContainer) => {\n\tif (!sliderContainer) return;\n\tconst { left, right } = sliderContainer.getBoundingClientRect();\n\tconst scrollContainer = sliderContainer.closest('.scroll-container');\n\tif (!scrollContainer) return;\n\tconst {\n\t\tleft: containerLeft,\n\t\tright: containerRight,\n\t} = scrollContainer.getBoundingClientRect();\n\n\tif (left < containerLeft || right > containerRight) {\n\t\tsliderContainer.scrollIntoView({ block: 'nearest' });\n\t}\n};\n\n/**\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const onSizeUpdated = ({ action }) => {\n\t/** @type {HTMLElement} */\n\tconst target = action.payload.domEvent.target;\n\tif (!target) return;\n\tconst { headerElement, sliderContainer } = getHeaderAndSliderElements(\n\t\ttarget\n\t);\n\tif (!headerElement || !sliderContainer) return;\n\t/*\n\t * in case of grouped columns we were depending on colspan for width,\n\t * so updating the width on a grouped child header will not resize.\n\t * Now we are updating the width on col in colgroup which is being respected by the browser\n\t * We are disabling resize on parent header column if it has children, as we dont have the col entry for that parent in colgroup,\n\t * resizing the child will update the parent accordingly\n\t */\n\tconst colgroup = getColGroup(headerElement);\n\tif (!colgroup) return;\n\tcolgroup.style.width = headerElement.style.width;\n\n\tscrollToIfNotInView(sliderContainer);\n};\n\n/**\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const onResizeCompleted = ({ action }) => {\n\t/** @type {HTMLTableCellElement} */\n\tconst target = action.payload.domEvent.target;\n\t/** @type {HTMLDivElement|null} */\n\tconst resizeGuide = target?.querySelector('.resize-slider-guide');\n\tif (resizeGuide) {\n\t\tresizeGuide.style.height = '0';\n\t}\n};\n\n/**\n * @param {HTMLElement | null | undefined} target\n * @returns {HTMLElement | undefined}\n */\nexport const getColGroup = (target) => {\n\tif (!target) return undefined;\n\n\tconst columnKey = target.dataset?.columnKey;\n\n\tif (columnKey) {\n\t\tconst table = target.closest('table');\n\t\t/**\n\t\t * @type {HTMLElement | null | undefined}\n\t\t */\n\t\tconst colgroup = table?.querySelector(\n\t\t\t`col[data-column-edge-key=\"${columnKey}\"]`\n\t\t);\n\t\tif (colgroup) {\n\t\t\treturn colgroup;\n\t\t}\n\t}\n};\n\nconst columnResizeBehavior = {\n\tbehavior: {\n\t\tname: 'resize',\n\t\tactionHandlers: {\n\t\t\t...nowResizeBehavior.actionHandlers,\n\t\t\t[COLUMN_RESIZE_STARTED]: onResizeStart,\n\t\t\t[COLUMN_RESIZE_COMPLETED]: onResizeCompleted,\n\t\t\t[COLUMN_SIZE_UPDATED]: onSizeUpdated,\n\t\t},\n\t},\n\toptions: {\n\t\tedges: {\n\t\t\tleft: false,\n\t\t\ttop: false,\n\t\t\tright: `.${RESIZE_SLIDER_CLASS}`,\n\t\t\tbottom: false,\n\t\t},\n\t\tminWidth: COL_RESIZE_MIN_WIDTH,\n\t\tselector: '.header-cell',\n\t\tactionPrefix: ACTION_PREFIX,\n\t\tkeyboardSupport: true,\n\t\tonbeforeupdate: (/** @type {*} */ domEvent) => {\n\t\t\tif (\n\t\t\t\tdomEvent &&\n\t\t\t\t(domEvent.key === KEY.ARROW_LEFT ||\n\t\t\t\t\tdomEvent.key === KEY.ARROW_RIGHT)\n\t\t\t) {\n\t\t\t\t// to avoid navigation to next cell\n\t\t\t\tdomEvent.stopPropagation();\n\t\t\t\t// to avoid horizontal scrolling\n\t\t\t\tdomEvent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyboardOptions: {\n\t\t\tkeyboardResizeDelta: 5,\n\t\t\thandles: {\n\t\t\t\tright: '.resize-slider-container',\n\t\t\t},\n\t\t},\n\t},\n};\n\nexport default columnResizeBehavior;\n","import { actionTypes } from '@servicenow/ui-core';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\n\nimport columnSelectors from '../../shared/utils/selectors/columnSelectors';\nimport { COLUMN_RESIZE_COMPLETED } from '../columnResizeBehavior/constants';\n\nimport {\n\tADD_RESIZE_OBSERVER,\n\tCOLUMN_WIDTHS_UPDATED,\n\tCOL_MIN_WIDTH,\n\tINIT_COLUMN_WIDTHS,\n\tSET_COLUMN_WIDTHS,\n\tSET_FINAL_AUTO_WIDTHS,\n\tTABLE_LAYOUT_AUTO,\n\tTABLE_LAYOUT_FIXED,\n} from './constants';\n\nconst {\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_ERROR_THROWN,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\nconst { getColumnKey, isSpecialColumnKey } = columnSelectors;\n\n// #region private\n\n/**\n * updates auto widths of columns calculated by browser\n * @param {Function} updateState\n * @param {string} columnKey\n * @param {string} columnWidth\n * @param {string|null}  width\n * @param {any} target\n * @param {any} dispatch\n */\nexport const updateWidth = (\n\tupdateState,\n\tcolumnKey,\n\tcolumnWidth,\n\twidth,\n\ttarget = null,\n\tdispatch = null\n) => {\n\t// this will be batched for all columns as we are making these calls synchronously\n\tupdateState(\n\t\t/** @param  {Coeffects<Props, State>} coeffects*/ ({ state }) => {\n\t\t\tconst columnWidthsState = get(state, 'columnWidthsState');\n\t\t\tconst autoWidths = get(columnWidthsState, 'autoWidths');\n\t\t\tconst widths = get(columnWidthsState, 'widths');\n\t\t\tif (width) {\n\t\t\t\tautoWidths[columnKey] = width;\n\t\t\t}\n\t\t\tif (columnWidth) {\n\t\t\t\twidths[columnKey] = columnWidth;\n\t\t\t}\n\t\t\tconst autoWidthsCount = Object.keys(autoWidths).length;\n\t\t\tconst totalColumns = columnSelectors.getColumnEdges(\n\t\t\t\tstate.processedColumnDefinitions\n\t\t\t)?.length;\n\t\t\t// after the final column insert browser calculates widths again\n\t\t\t// so adding a resize observer to save the adjusted final widths\n\t\t\tif (autoWidthsCount >= totalColumns && target) {\n\t\t\t\tconst resizeObserver = get(columnWidthsState, 'resizeObserver');\n\t\t\t\tif (!resizeObserver) dispatch(ADD_RESIZE_OBSERVER, { target });\n\t\t\t}\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tpath: 'columnWidthsState.autoWidths',\n\t\t\t\t\tvalue: autoWidths,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'columnWidthsState.widths',\n\t\t\t\t\tvalue: widths,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t);\n};\n\n/**\n * @param {any} autoWidths\n * @param {any} target\n */\nexport const getFinalCalculatedAutoWidths = (autoWidths, target) => {\n\tconst finalAutoWidths = autoWidths;\n\tlet widthsChanged = false;\n\tif (target) {\n\t\tconst table = target.closest('table');\n\t\tconst thElements = table.querySelectorAll('th');\n\t\tconst thElementsMap = Array.from(thElements).reduce((acc, th) => {\n\t\t\tconst columnKey = th.getAttribute('data-column-key');\n\t\t\tacc[columnKey] = th;\n\t\t\treturn acc;\n\t\t}, {});\n\t\tfor (const columnKey in autoWidths) {\n\t\t\tconst th = thElementsMap[columnKey];\n\t\t\tif (th) {\n\t\t\t\tconst offsetWidth = th.offsetWidth;\n\t\t\t\tlet autoWidth = `${offsetWidth}px`;\n\t\t\t\tif (!offsetWidth) {\n\t\t\t\t\t//fallback to computed width in case offsetWidth is not available\n\t\t\t\t\tautoWidth = window.getComputedStyle(th).width;\n\t\t\t\t}\n\n\t\t\t\tif (autoWidth !== finalAutoWidths[columnKey]) {\n\t\t\t\t\tfinalAutoWidths[columnKey] = autoWidth;\n\t\t\t\t\twidthsChanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn { finalAutoWidths, widthsChanged };\n};\n\n// #endregion\n\n// #region action handlers\n\n/**\n * This effect sets initial state for column widths\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const setInitialState = (coeffects) => {\n\tconst { updateState, properties } = coeffects;\n\tconst { columnResizingEnabled } = properties;\n\tupdateState({\n\t\tpath: 'columnWidthsState',\n\t\tvalue: {\n\t\t\ttableLayout: TABLE_LAYOUT_AUTO,\n\t\t\tautoWidths: {},\n\t\t\twidths: {},\n\t\t\tcolumnResizingEnabled,\n\t\t\tresizeObserver: null,\n\t\t},\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n};\n\n/**\n * called via insert hook on header column\n * This effect saves auto widths of columns calculated by browser\n * in columnWidthsState autoWidths object\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const saveColumnAutoWidth = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\taction: {\n\t\t\tpayload: { column, vnode },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\tlet width;\n\tconst columnKey = getColumnKey(column);\n\tconst columnWidth = columnSelectors.getWidth(column);\n\tif (typeof window === 'undefined') {\n\t\t// eslint-disable-next-line no-unused-vars\n\t\twidth = COL_MIN_WIDTH;\n\t} else {\n\t\tconst offsetWidth = vnode.elm.offsetWidth;\n\t\tlet width = `${offsetWidth}px`;\n\t\tif (!offsetWidth) {\n\t\t\t//fallback to computed width in case offsetWidth is not available\n\t\t\twidth = window.getComputedStyle(vnode.elm).width;\n\t\t}\n\t\tupdateWidth(\n\t\t\tupdateState,\n\t\t\tcolumnKey,\n\t\t\tcolumnWidth,\n\t\t\twidth || columnWidth,\n\t\t\tvnode.elm,\n\t\t\tdispatch\n\t\t);\n\t}\n};\n\n// @ts-ignore\nexport const initColumnAutoWidth = ({ state, updateState, host, dispatch }) => {\n\tconst columnWidthsState = get(state, 'columnWidthsState');\n\tconst autoWidths = get(columnWidthsState, 'autoWidths');\n\tconst widths = get(columnWidthsState, 'widths');\n\tconst table = host.shadowRoot.querySelector('table');\n\tconst columnEdges = columnSelectors.getColumnEdges(\n\t\tstate.processedColumnDefinitions\n\t);\n\tconst autoWidthsCount = Object.keys(autoWidths).length;\n\t//no need to calculate widths if autoWidths are already set\n\tif (!columnEdges || autoWidthsCount) return;\n\n\trequestAnimationFrame(() => {\n\t\tconst thElements = table ? table.querySelectorAll('th') : [];\n\t\tconst thElementsMap = Array.from(thElements).reduce((acc, th) => {\n\t\t\tconst columnKey = th.getAttribute('data-column-key');\n\t\t\tacc[columnKey] = th;\n\t\t\treturn acc;\n\t\t}, {});\n\n\t\tconst totalColumns = columnEdges.length;\n\n\t\t// @ts-ignore\n\t\tcolumnEdges.map((columnKey, index) => {\n\t\t\tconst th = thElementsMap[columnKey];\n\t\t\tconst column = columnSelectors.getColumnFromProcessedCols(\n\t\t\t\tstate.processedColumnDefinitions,\n\t\t\t\tcolumnKey\n\t\t\t);\n\t\t\tconst columnWidth = columnSelectors.getWidth(column);\n\t\t\tif (th) {\n\t\t\t\t//no need to query DOM for width if already available\n\t\t\t\tif (!columnWidth) {\n\t\t\t\t\tlet autoWidth = COL_MIN_WIDTH;\n\t\t\t\t\tconst offsetWidth = th.offsetWidth;\n\t\t\t\t\tif (offsetWidth) {\n\t\t\t\t\t\tautoWidth = `${offsetWidth}px`;\n\t\t\t\t\t}\n\t\t\t\t\tautoWidths[columnKey] = autoWidth;\n\t\t\t\t}\n\t\t\t\t// adding a resize observer to save the adjusted final widths\n\t\t\t\tif (index === totalColumns - 1) {\n\t\t\t\t\tconst resizeObserver = get(\n\t\t\t\t\t\tcolumnWidthsState,\n\t\t\t\t\t\t'resizeObserver'\n\t\t\t\t\t);\n\t\t\t\t\t//set widths only if atleast there is one column with width\n\t\t\t\t\tif (\n\t\t\t\t\t\t!resizeObserver &&\n\t\t\t\t\t\twidths &&\n\t\t\t\t\t\tObject.keys(widths).length > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tdispatch(SET_FINAL_AUTO_WIDTHS, { target: th });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (columnWidth) {\n\t\t\t\twidths[columnKey] = columnWidth;\n\t\t\t\tautoWidths[columnKey] = columnWidth;\n\t\t\t}\n\t\t});\n\n\t\tupdateState([\n\t\t\t{\n\t\t\t\tpath: 'columnWidthsState.autoWidths',\n\t\t\t\tvalue: autoWidths,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'columnWidthsState.widths',\n\t\t\t\tvalue: widths,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t},\n\t\t]);\n\t});\n};\n\n/**\n * This adds a resize observer to table to calculate and set final auto widths\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const addResizeObserver = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\taction: {\n\t\t\tpayload: { target },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\tconst table = target.closest('table');\n\tconst resizeObserver = new ResizeObserver((entries, observer) => {\n\t\tif (!entries) return;\n\t\tconst height = getComputedStyle(table).height;\n\t\tif (!height || height === 'auto') return;\n\n\t\tconst tbody = table.querySelector('tbody');\n\t\tif (tbody) {\n\t\t\tconst rows = tbody.querySelectorAll('tr');\n\t\t\tif (!rows || !rows.length) return;\n\t\t}\n\n\t\tif (table.style.tableLayout === 'fixed') {\n\t\t\tobserver.disconnect();\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch(SET_FINAL_AUTO_WIDTHS, { target });\n\t});\n\tresizeObserver.observe(table, { box: 'border-box' });\n\tupdateState({\n\t\tpath: 'columnWidthsState.resizeObserver',\n\t\tvalue: resizeObserver,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n};\n\n/**\n * This effect saves auto widths of columns calculated by browser\n * in columnWidthsState autoWidths object\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const setFinalWidths = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\taction: {\n\t\t\tpayload: { target },\n\t\t},\n\t\tstate,\n\t} = coeffects;\n\tconst columnWidthsState = get(state, 'columnWidthsState');\n\tconst autoWidths = get(columnWidthsState, 'autoWidths');\n\tconst tableLayout = get(columnWidthsState, 'tableLayout');\n\tconst widths = get(columnWidthsState, 'widths');\n\n\tconst { finalAutoWidths, widthsChanged } = getFinalCalculatedAutoWidths(\n\t\tautoWidths,\n\t\ttarget\n\t);\n\tif (!widthsChanged && isEmpty(widths)) return;\n\tupdateState([\n\t\t{\n\t\t\tpath: 'columnWidthsState.autoWidths',\n\t\t\tvalue: finalAutoWidths,\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: 'columnWidthsState.tableLayout',\n\t\t\tvalue: !isEmpty(widths) ? TABLE_LAYOUT_FIXED : tableLayout,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: true,\n\t\t},\n\t]);\n};\n\n/**\n * This effect sets disconnects resize observers in case they are not already\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const disconnectResizeObserver = (coeffects) => {\n\tconst { state } = coeffects;\n\tconst resizeObserver = get(state, 'columnWidthsState.resizeObserver');\n\tif (resizeObserver) {\n\t\tresizeObserver.disconnect();\n\t}\n};\n\n/**\n * This effect saves width of column resized by resize handle\n * in columnWidthsState widths object\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const saveResizedColumnWidth = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\taction: {\n\t\t\tpayload: { domEvent },\n\t\t},\n\t\tstate,\n\t\tdispatch,\n\t} = coeffects;\n\tlet columnHeaderNode = domEvent.target;\n\t// in case of keyboard target is slider container\n\tif (columnHeaderNode.nodeName !== 'TH') {\n\t\tcolumnHeaderNode = columnHeaderNode.closest('th');\n\t}\n\tconst columnKey = columnHeaderNode.dataset.columnKey;\n\tconst columnWidthsState = get(state, 'columnWidthsState');\n\tconst autoWidths = get(columnWidthsState, 'autoWidths');\n\tconst currentAutoWidth = autoWidths[columnKey];\n\tconst oldWidths = get(columnWidthsState, 'widths');\n\tconst oldWidth = oldWidths[columnKey] || currentAutoWidth;\n\tconst updatedWidth = columnHeaderNode.style.width;\n\toldWidths[columnKey] = updatedWidth;\n\tconst columnsWidths = Object.keys(autoWidths).reduce((widths, key) => {\n\t\tif (!isSpecialColumnKey(key)) {\n\t\t\t// @ts-ignore\n\t\t\twidths[key] = oldWidths[key] || autoWidths[key];\n\t\t}\n\t\treturn widths;\n\t}, {});\n\tupdateWidth(updateState, columnKey, updatedWidth, updatedWidth);\n\tdispatch(COLUMN_WIDTHS_UPDATED, {\n\t\tcolumnKey,\n\t\toldWidth,\n\t\tupdatedWidth,\n\t\tcolumnsWidths,\n\t});\n};\n// #endregion\n\n// #region public\n/**\n * @param {ColumnWidthsState} columnWidthsState\n * @param {String} columnKey\n */\nexport const getSavedWidth = (columnWidthsState, columnKey) => {\n\tconst { widths, autoWidths } = columnWidthsState;\n\treturn get(widths, columnKey) || get(autoWidths, columnKey);\n};\n\n/**\n * @param {ColumnWidthsState} columnWidthsState\n * @return {String} auto|fixed\n */\nexport const getTableLayout = (columnWidthsState) => {\n\treturn get(columnWidthsState, 'tableLayout');\n};\n// #endregion\n\n/**\n * here we are only checking for widths being reset as we do not consider empty value in table header insert hook\n */\nexport const checkIfWidthsChanged = (\n\t/** @type {ColumnDefinitions['columns']} */ updatedColumns,\n\t/** @type {*} */ widths\n) => {\n\treturn (\n\t\tupdatedColumns.some((column) => {\n\t\t\tconst columnKey = getColumnKey(column);\n\t\t\tconst columnWidth = widths[columnKey];\n\t\t\tif (column.width !== columnWidth) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}) ?? false\n\t);\n};\n/**\n * Property Changed Effect Handler. Will check for columnDefinitions changes and process the columnDefinitions accordingly\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const propertyChangedActionHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\t// @ts-ignore\n\t\t\tpayload: { name, value, previousValue },\n\t\t},\n\t\tstate,\n\t} = coeffects;\n\tconst columnWidthsState = get(state, 'columnWidthsState');\n\tconst widths = get(columnWidthsState, 'widths');\n\tif (\n\t\tname === 'columnDefinitions' &&\n\t\tpreviousValue &&\n\t\tvalue &&\n\t\tvalue.columns &&\n\t\tcheckIfWidthsChanged(value.columns, widths)\n\t) {\n\t\tsetInitialState(coeffects);\n\t}\n};\nconst columnWidthBehavior = {\n\tname: 'columnWidthBehavior',\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: setInitialState,\n\t\t},\n\t\t[INIT_COLUMN_WIDTHS]: {\n\t\t\teffect: initColumnAutoWidth,\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\t\teffect: propertyChangedActionHandler,\n\t\t},\n\t\t[SET_COLUMN_WIDTHS]: {\n\t\t\teffect: saveColumnAutoWidth,\n\t\t},\n\t\t[COLUMN_RESIZE_COMPLETED]: {\n\t\t\teffect: saveResizedColumnWidth,\n\t\t},\n\t\t[ADD_RESIZE_OBSERVER]: {\n\t\t\teffect: addResizeObserver,\n\t\t},\n\t\t[SET_FINAL_AUTO_WIDTHS]: {\n\t\t\teffect: setFinalWidths,\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: {\n\t\t\teffect: disconnectResizeObserver,\n\t\t},\n\t\t[COMPONENT_ERROR_THROWN]: {\n\t\t\teffect: disconnectResizeObserver,\n\t\t},\n\t},\n};\n\nexport default columnWidthBehavior;\n","import get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\n\nimport logger from '../logger';\nconst overlayCustomEmittedActions = 'customOverlayEmittedActions';\nconst overlayCustomConfigPath = 'customConfig';\nconst overlayDefaultComponentProps = 'defaultComponentProps';\nconst overlayComponentTag = 'componentTag';\n\nconst {\n\tOVERLAY_SHOW_COLUMN_HEADERS_DEFAULT,\n\tOVERLAY_TYPE_DEFAULT,\n\tOVERLAY_TYPE_MESSAGE,\n\tOVERLAY_TYPE_LOADER,\n\tOVERLAY_TYPE_CUSTOM,\n\tOVERLAY_SKELETON_LOADER_DEFAULT_NUM_COLUMNS,\n} = require('../../../typeSchemas/overlayDefinition/overlayConfigConsts');\n\nconst overlaySelectors = {\n\t/**\n\t * Selector for getting whether to show column headers or not (overlay replaces entire table or just table body)\n\t * @param {OverlayDefinition} overlayDefinition\n\t *\n\t * @returns {boolean}\n\t */\n\tgetOverlayShowColumnHeaders: (overlayDefinition) => {\n\t\treturn get(\n\t\t\toverlayDefinition,\n\t\t\t'showColumnHeaders',\n\t\t\tOVERLAY_SHOW_COLUMN_HEADERS_DEFAULT\n\t\t);\n\t},\n\n\t/**\n\t * Selector for getting overlay type from overlay config object\n\t * @param {OverlayDefinition} overlayDefinition\n\t *\n\t * @returns {string} type variant\n\t */\n\tgetOverlayType: (overlayDefinition) => {\n\t\treturn get(overlayDefinition, 'type', OVERLAY_TYPE_DEFAULT);\n\t},\n\n\t/**\n\t * Selector for getting template message config from overlay object when overlay is of type message\n\t * @param {OverlayDefinition} overlayDefinition\n\t *\n\t * @returns {OverlayMessageConfig} now-template-message config options\n\t */\n\tgetOverlayMessageConfig: (overlayDefinition) => {\n\t\tconst type = get(overlayDefinition, 'type', OVERLAY_TYPE_DEFAULT);\n\t\tconst messageConfig = get(overlayDefinition, 'messageConfig');\n\n\t\tif (type !== OVERLAY_TYPE_MESSAGE) {\n\t\t\tlogger.warning(\n\t\t\t\t'getOverlayMessageConfig(), a method specific to message typed overlays, was called on a non-message type'\n\t\t\t);\n\t\t} else if (type === OVERLAY_TYPE_MESSAGE && isEmpty(messageConfig)) {\n\t\t\tlogger.warning(\n\t\t\t\t'The configuration for the message type overlay is empty'\n\t\t\t);\n\t\t\treturn {};\n\t\t}\n\n\t\treturn messageConfig;\n\t},\n\n\t/**\n\t * Selector for checking if overlayDefinition has an error message config\n\t * @param {OverlayDefinition} overlayDefinition\n\t *\n\t * @returns {boolean}\n\t */\n\thasErrorMessage: (overlayDefinition) => {\n\t\tconst messageConfig = overlaySelectors.getOverlayMessageConfig(\n\t\t\toverlayDefinition\n\t\t);\n\t\tif (messageConfig?.illustration === 'error') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/**\n\t * Selector for getting loader config from overlay object when overlay is of type loader\n\t * @param {OverlayDefinition} overlayDefinition\n\t *\n\t * @returns {OverlayLoaderConfig} now-loader config options\n\t */\n\tgetOverlayLoaderConfig: (overlayDefinition) => {\n\t\tconst type = get(overlayDefinition, 'type', OVERLAY_TYPE_DEFAULT);\n\t\tconst loaderConfig = get(overlayDefinition, 'loaderConfig');\n\n\t\tif (type !== OVERLAY_TYPE_LOADER) {\n\t\t\tlogger.warning(\n\t\t\t\t'getOverlayLoaderConfig(), a method specific to loader typed overlays, was called on a non-loader type'\n\t\t\t);\n\t\t}\n\n\t\treturn loaderConfig;\n\t},\n\n\t/**\n\t * Selector for getting skeleton loader config from overlay object when overlay is of type skeletonLoader\n\t * @param {OverlayDefinition} overlayDefinition\n\t *\n\t * @returns {OverlaySkeletonLoaderConfig}\n\t */\n\tgetOverlaySkeletonLoaderConfig: (overlayDefinition) => {\n\t\tconst type = get(overlayDefinition, 'type', OVERLAY_TYPE_DEFAULT);\n\t\tconst skeletonLoaderConfig = get(\n\t\t\toverlayDefinition,\n\t\t\t'skeletonLoaderConfig'\n\t\t);\n\n\t\tif (type !== OVERLAY_TYPE_LOADER) {\n\t\t\tlogger.warning(\n\t\t\t\t'getOverlaySkeletonLoaderConfig(), a method specific to skeletonLoader typed overlays, was called on a non-skeleton type'\n\t\t\t);\n\t\t}\n\n\t\treturn skeletonLoaderConfig;\n\t},\n\n\t/**\n\t * Selector for getting skeleton loader config from overlay object when overlay is of type skeletonLoader\n\t * @param {OverlayDefinition} overlayDefinition\n\t *\n\t * @returns {number} number of columns to render if the actual columns are not known\n\t */\n\tgetOverlaySkeletonLoaderNumColumns: (overlayDefinition) => {\n\t\treturn get(\n\t\t\toverlayDefinition,\n\t\t\t'skeletonLoaderConfig.numColumns',\n\t\t\tOVERLAY_SKELETON_LOADER_DEFAULT_NUM_COLUMNS\n\t\t);\n\t},\n\n\t/**\n\t * CUSTOM CONTENT SELECTORS\n\t */\n\n\t/**\n\t * Selector for getting component props from overlay object when overlay is of type custom\n\t * @param {OverlayDefinition} overlayDefinition\n\t *\n\t * @returns {object} component props for custom overlay\n\t */\n\tgetCustomOverlayDefaultComponentProps: (overlayDefinition) => {\n\t\tconst type = get(overlayDefinition, 'type', OVERLAY_TYPE_DEFAULT);\n\n\t\tif (type !== OVERLAY_TYPE_CUSTOM) {\n\t\t\tlogger.warning(\n\t\t\t\t'getCustomOverlayDefaultComponentProps(), a method specific to custom typed overlays, was called on a non-custom type'\n\t\t\t);\n\t\t}\n\n\t\treturn get(\n\t\t\toverlayDefinition,\n\t\t\t[overlayCustomConfigPath, overlayDefaultComponentProps],\n\t\t\t{}\n\t\t);\n\t},\n\t/**\n\t * Selector for getting component tag from overlay object when overlay is of type custom\n\t * @param {OverlayDefinition} overlayDefinition\n\t *\n\t * @returns {string} component tag for custom overlay\n\t */\n\tgetCustomOverlayComponentTag: (overlayDefinition) => {\n\t\tconst type = get(overlayDefinition, 'type', OVERLAY_TYPE_DEFAULT);\n\t\tif (type !== OVERLAY_TYPE_CUSTOM) {\n\t\t\tlogger.warning(\n\t\t\t\t'getCustomOverlayComponentTag(), a method specific to custom typed overlays, was called on a non-custom type'\n\t\t\t);\n\t\t}\n\n\t\treturn get(\n\t\t\toverlayDefinition,\n\t\t\t[overlayCustomConfigPath, overlayComponentTag],\n\t\t\t''\n\t\t);\n\t},\n\n\t/**\n\t * This function returns true if overlay content has custom component emitted actions\n\t * @param {OverlayDefinition}  overlayDefinition overlayDefinition object\n\t * @returns {boolean} returns true if custom component in the overlay has emitted actions\n\t */\n\thasCustomOverlayEmittedActions: (overlayDefinition) => {\n\t\tconst type = get(overlayDefinition, 'type', OVERLAY_TYPE_DEFAULT);\n\t\tif (type !== OVERLAY_TYPE_CUSTOM) {\n\t\t\tlogger.warning(\n\t\t\t\t'hasCustomOverlayEmittedActions(), a method specific to custom typed overlays, was called on a non-custom type'\n\t\t\t);\n\t\t}\n\t\treturn has(overlayDefinition, [\n\t\t\toverlayCustomConfigPath,\n\t\t\toverlayCustomEmittedActions,\n\t\t]);\n\t},\n\n\t/**\n\t * This function returns overlay component emitted actions. Will return empty object if does not exist.\n\t * @param {OverlayDefinition}  overlayDefinition overlayDefinition object\n\t * @returns {object} returns the array of the actions emitted by the custom component in overlay\n\t */\n\tgetCustomOverlayEmittedActions: (overlayDefinition) => {\n\t\tconst type = get(overlayDefinition, 'type', OVERLAY_TYPE_DEFAULT);\n\t\tif (type !== OVERLAY_TYPE_CUSTOM) {\n\t\t\tlogger.warning(\n\t\t\t\t'getCustomOverlayEmittedActions(), a method specific to custom typed overlays, was called on a non-custom type'\n\t\t\t);\n\t\t}\n\n\t\treturn get(\n\t\t\toverlayDefinition,\n\t\t\t[overlayCustomConfigPath, overlayCustomEmittedActions],\n\t\t\t[]\n\t\t);\n\t},\n};\n\nexport default overlaySelectors;\n","import { get as fpGet, has as fpHas, getOr } from 'lodash/fp';\nimport has from 'lodash/has';\n\nimport { CELL_EDIT_POPOVER_TYPE } from '../../../behaviors/cellEditingBehavior/constants';\n\nconst popoverPositionPath = 'target';\nconst columnRowIndexPath = 'columnRowIndex';\nconst columnCellIndexPath = 'columnCellIndex';\nconst rowIndexPath = 'rowIndex';\nconst cellIndexPath = 'cellIndex';\n\nconst popoverConfigPath = 'config';\nconst configPositionsPath = 'positions';\nconst configDismissOnScrollPath = 'dismissOnScroll';\nconst configDisableScrollPath = 'disableScroll';\nconst configHideTailPath = 'hideTail';\nconst dismissablePath = 'dismissable';\n\nconst popoverContentPath = 'content';\nconst popoverContentText = 'text';\nconst popoverContentButtons = 'buttons';\nconst ariaLabelPath = 'ariaLabel';\nconst variantPath = 'variant';\nconst sizePath = 'size';\nconst labelPath = 'label';\nconst iconPath = 'icon';\nconst tooltipContentPath = 'tooltipContent';\nconst metaPath = 'meta';\nconst idPath = 'id';\n\nconst popoverContentActions = 'actions';\nconst childrenPath = 'children';\nconst sublabelPath = 'sublabel';\nconst countPath = 'count';\nconst disabledPath = 'disabled';\nconst presencePath = 'presence';\n\nconst popoverContentComponentTag = 'componentTag';\nconst popoverContentDefaultProps = 'defaultComponentProps';\nconst popoverCustomCellEmittedActions = 'customCellEmittedActions';\n\nconst popoverType = 'popoverType';\nconst highlightedMessage = 'highlightedMessage';\nconst buttonsConfig = 'buttonsConfig';\nconst isLoading = 'isLoading';\n\n/**\n * @enum {string}\n */\nconst popoverInteractionTypes = {\n\tDIALOG: 'dialog',\n\tLISTBOX: 'listbox',\n\tNONE: 'none',\n};\n\n/**\n * @type {Array<{target: Position, content: Position}>}\n */\nconst defaultHeaderPopoverPositions = [\n\t{ target: 'bottom-end', content: 'top-end' },\n\t{ target: 'bottom-start', content: 'top-start' },\n];\n\n/**\n * @type {Array<{target: Position, content: Position}>}\n */\nconst defaultRowPopoverPositions = [\n\t{ target: 'bottom-end', content: 'top-end' },\n\t{ target: 'bottom-start', content: 'top-start' },\n\t{ target: 'top-end', content: 'bottom-end' },\n\t{ target: 'top-start', content: 'bottom-start' },\n];\n\n/**\n * @type {Array<{target: Position, content: Position}>}\n */\nconst defaultPositions = [\n\t{ target: 'bottom-start', content: 'top-start' },\n\t{ target: 'bottom-end', content: 'top-end' },\n\t{ target: 'top-start', content: 'bottom-start' },\n\t{ target: 'top-end', content: 'bottom-end' },\n\t{ target: 'top-end', content: 'top-start' },\n\t{ target: 'bottom-end', content: 'bottom-start' },\n\t{ target: 'top-start', content: 'top-end' },\n\t{ target: 'bottom-start', content: 'bottom-end' },\n];\n\n/**\n * @enum {string}\n *\n * This enum specifies content type for popover\n */\nexport const popoverContentTypes = {\n\tTEXT_CONTENT: 'TEXT_CONTENT',\n\tCUSTOM_CONTENT: 'CUSTOM_CONTENT',\n\tRENDER_CONTENT: 'RENDER_CONTENT',\n\tINVALID_CONTENT: 'INVALID_CONTENT',\n\tACTION_CONTENT: 'ACTION_CONTENT',\n};\n\nconst popoverSelectors = {\n\t/**\n\t * Returns true if popoverDefinition position is of type header\n\t * @param {*} popoverDefinition\n\t * @returns {boolean}\n\t */\n\tisHeaderTargetPosition: function (popoverDefinition) {\n\t\treturn (\n\t\t\tthis.hasHeaderRowIndex(popoverDefinition) ||\n\t\t\tthis.hasHeaderCellIndex(popoverDefinition)\n\t\t);\n\t},\n\n\t/**\n\t * This function checks if popover position contains header row index\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\thasHeaderRowIndex: fpHas([popoverPositionPath, columnRowIndexPath]),\n\n\t/**\n\t * This function checks if popover position contains header row cell index\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\thasHeaderCellIndex: fpHas([popoverPositionPath, columnCellIndexPath]),\n\n\t/**\n\t * This function returns header target row index. Will default to 1 if does not exist\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {number}\n\t */\n\tgetHeaderTargetRowIndex: getOr(1, [\n\t\tpopoverPositionPath,\n\t\tcolumnRowIndexPath,\n\t]),\n\n\t/**\n\t * This function returns header target row cell index. Will default to 1 if does not exist\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {number}\n\t */\n\tgetHeaderTargetCellIndex: getOr(1, [\n\t\tpopoverPositionPath,\n\t\tcolumnCellIndexPath,\n\t]),\n\n\t/**\n\t * Returns true if popoverDefinition position is of type row\n\t * @param {*} popoverDefinition\n\t * @returns {boolean}\n\t */\n\tisRowTargetPosition: function (popoverDefinition) {\n\t\treturn (\n\t\t\tthis.hasRowIndex(popoverDefinition) ||\n\t\t\tthis.hasCellIndex(popoverDefinition)\n\t\t);\n\t},\n\n\t/**\n\t * This function checks if popover position contains row index\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\thasRowIndex: fpHas([popoverPositionPath, rowIndexPath]),\n\n\t/**\n\t * This function checks if popover position contains row cell index\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\thasCellIndex: fpHas([popoverPositionPath, cellIndexPath]),\n\n\t/**\n\t * This function returns row target index. Will default to 1 if does not exist\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {number}\n\t */\n\tgetTargetRowIndex: getOr(1, [popoverPositionPath, rowIndexPath]),\n\n\t/**\n\t * This function returns row cell target index. Will default to 1 if does not exist\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {number}\n\t */\n\tgetTargetCellIndex: getOr(1, [popoverPositionPath, cellIndexPath]),\n\n\t/**\n\t * POPOVER TEXT CONTENT SELECTORS\n\t */\n\n\t/**\n\t * This function returns true if popover content has text\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\thasPopoverText: fpHas([popoverContentPath, popoverContentText]),\n\n\t/**\n\t * This function returns popover text. Will return undefined if does not exist\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {string}\n\t */\n\tgetPopoverText: fpGet([popoverContentPath, popoverContentText]),\n\n\t/**\n\t * This function returns true if popover content contains button configurations\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\thasPopoverButtons: fpHas([popoverContentPath, popoverContentButtons]),\n\n\t/**\n\t * This function returns array of popover button configurations\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {Array<PopoverButtonConfig>}\n\t */\n\tgetPopoverButtons: fpGet([popoverContentPath, popoverContentButtons]),\n\n\t/**\n\t * This function returns aria label configuration for popover button\n\t * @param {PopoverButtonConfig}  popoverDefinition PopoverButtonConfig object\n\t * @returns {string}\n\t */\n\tgetPopoverButtonAriaLabel: getOr('', ariaLabelPath),\n\n\t/**\n\t * This function returns popover button variant. Will default to secondary if none is provided\n\t * @param {PopoverButtonConfig}  popoverDefinition PopoverButtonConfig object\n\t * @returns {string}\n\t */\n\tgetPopoverButtonVariant: getOr('secondary', variantPath),\n\n\t/**\n\t * This function returns button size. Wil default to small if none is provided\n\t * @param {PopoverButtonConfig}  popoverDefinition PopoverButtonConfig object\n\t * @returns {string}\n\t */\n\tgetPopoverButtonSize: getOr('sm', sizePath),\n\n\t/**\n\t * This function returns popover button variant\n\t * @param {PopoverButtonConfig}  popoverDefinition PopoverButtonConfig object\n\t * @returns {string}\n\t */\n\tgetPopoverButtonLabel: getOr('', labelPath),\n\n\t/**\n\t * This function returns popover button icon\n\t * @param {PopoverButtonConfig}  popoverDefinition popoverDefinition object\n\t * @returns {string}\n\t */\n\tgetPopoverButtonIcon: getOr('', iconPath),\n\n\t/**\n\t * This function returns popover button tooltip content\n\t * @param {PopoverButtonConfig}  popoverDefinition popoverDefinition object\n\t * @returns {string}\n\t */\n\tgetTooltipContent: getOr('', tooltipContentPath),\n\n\t/**\n\t * This function returns additional meta to dispatch when clicked\n\t * @param {PopoverButtonConfig}  popoverDefinition popoverDefinition object\n\t * @returns {string}\n\t */\n\tgetPopoverButtonMeta: getOr({}, metaPath),\n\n\t/**\n\t * This function returns id of button if provided\n\t * @param {PopoverButtonConfig}  popoverDefinition popoverDefinition object\n\t * @returns {string}\n\t */\n\tgetPopoverButtonId: getOr('', idPath),\n\n\t/**\n\t * This function will return poisitions defined in configuration, otherwise default to\n\t * the correct positions based on target (header or row)\n\t * @param {PopoverDefinition} popoverDefinition\n\t * @returns {Array<{target: Position, content: Position}>}\n\t */\n\tgetPositions: function (popoverDefinition) {\n\t\tconst positions = fpGet([popoverConfigPath, configPositionsPath])(\n\t\t\tpopoverDefinition\n\t\t);\n\n\t\tif (positions) return positions;\n\n\t\tif (this.getPopoverType(popoverDefinition) === CELL_EDIT_POPOVER_TYPE) {\n\t\t\treturn defaultPositions;\n\t\t}\n\n\t\tif (this.isHeaderTargetPosition(popoverDefinition)) {\n\t\t\treturn defaultHeaderPopoverPositions;\n\t\t} else if (this.isRowTargetPosition(popoverDefinition)) {\n\t\t\treturn defaultRowPopoverPositions;\n\t\t}\n\n\t\treturn defaultPositions;\n\t},\n\n\t/**\n\t * POPOVER ACTION CONTENT SELECTORS\n\t */\n\n\tgetActions: getOr([], [popoverContentPath, popoverContentActions]),\n\n\t/**\n\t * Gets the actions label from the popover definition\n\t */\n\tgetActionsLabel: getOr('', [popoverContentPath, labelPath]),\n\n\t/**\n\t * Gets the children from the popover definition\n\t */\n\tgetChildren: getOr([], childrenPath),\n\n\t/**\n\t * Gets the label from the popover definition\n\t */\n\tgetLabel: getOr('', labelPath),\n\n\t/**\n\t * Gets the sublabel from the popover definition\n\t */\n\tgetSublabel: getOr('', sublabelPath),\n\n\t/**\n\t * Gets the count from the popover definition\n\t */\n\tgetCount: fpGet(countPath),\n\n\t/**\n\t * Gets the icon from the popover definition\n\t */\n\tgetIcon: getOr('', iconPath),\n\n\t/**\n\t * Gets the disabled prop from the popover definition\n\t */\n\tgetDisabled: getOr(false, disabledPath),\n\n\t/**\n\t * Gets the presence from the popover definition\n\t */\n\tgetPresence: getOr('', presencePath),\n\n\t/**\n\t * This function returns true if popover content has actions\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\thasPopoverAction: fpHas([popoverContentPath, popoverContentActions]),\n\n\t/**\n\t * POPOVER CUSTOM CONTENT SELECTORS\n\t */\n\n\t/**\n\t * This function returns true if popover content has custom component\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\thasPopoverCustom: fpHas([popoverContentPath, popoverContentComponentTag]),\n\n\t/**\n\t * This function returns the popover type\n\t * @returns {string}\n\t */\n\tgetPopoverType: fpGet([popoverContentPath, popoverType]),\n\n\t/**\n\t * This function returns the highlightedMessage object\n\t * @returns {Object}\n\t */\n\tgetHighlightedMessage: fpGet([popoverContentPath, highlightedMessage]),\n\n\t/**\n\t * This function returns the buttonsConfig object\n\t * @returns {Object}\n\t */\n\tgetButtonsConfig: fpGet([popoverContentPath, buttonsConfig]),\n\n\t/**\n\t * This function returns the isLoading value\n\t * @returns {boolean}\n\t */\n\tgetIsLoading: fpGet([popoverContentPath, isLoading]),\n\n\t/**\n\t * This function returns popover component tag.\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {string}\n\t */\n\tgetPopoverComponentTag: fpGet([\n\t\tpopoverContentPath,\n\t\tpopoverContentComponentTag,\n\t]),\n\n\t/**\n\t * This function returns popover component default properties. Will return empty object if does not exist.\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {object}\n\t */\n\tgetPopoverComponentDefaultProps: fpGet([\n\t\tpopoverContentPath,\n\t\tpopoverContentDefaultProps,\n\t]),\n\n\t/**\n\t * This function returns true if popover content has custom component emitted actions\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\thasCustomPopoverEmittedActions: fpHas([\n\t\tpopoverContentPath,\n\t\tpopoverCustomCellEmittedActions,\n\t]),\n\n\t/**\n\t * This function returns popover component emitted actions. Will return empty object if does not exist.\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\tgetCustomPopoverEmittedActions: fpGet([\n\t\tpopoverContentPath,\n\t\tpopoverCustomCellEmittedActions,\n\t]),\n\n\t/**\n\t * POPOVER CONFIG SELECTORS\n\t */\n\n\t/**\n\t * This function returns true if popover should dismiss when scrolling. Will default to false\n\t * if config not provided\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\tgetDismissOnScroll: getOr(false, [\n\t\tpopoverConfigPath,\n\t\tconfigDismissOnScrollPath,\n\t]),\n\n\t/**\n\t * This function returns true if popover should not add a scroll bar to content. Will default to true\n\t * if config not provided\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\tgetDisableScroll: getOr(true, [popoverConfigPath, configDisableScrollPath]),\n\n\t/**\n\t * This function returns true if popover should hide tail pointing to target. Will default to true\n\t * if config not provided\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\tgetHideTail: getOr(false, [popoverConfigPath, configHideTailPath]),\n\n\t/**\n\t * This function returns true if popover should handle closing internally. If set to false,\n\t * consumer should clear Popover definition property to close popover.\n\t * Will default to true if config not provided.\n\t *\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\tgetDismissable: getOr(true, [popoverConfigPath, dismissablePath]),\n\n\t/**\n\t * This function returns true if popover content is of type text\n\t *\n\t * @param {PopoverDefinition}  popoverDefinition popoverDefinition object\n\t * @returns {boolean}\n\t */\n\tisTextContent: (popoverDefinition) =>\n\t\thas(popoverDefinition, [popoverContentPath, popoverContentText]) ||\n\t\thas(popoverDefinition, [popoverContentPath, popoverContentButtons]),\n\n\t/**\n\t * Returns true if popover is of custom type\n\t * @param {PopoverDefinition} popoverDefinition\n\t * @returns {boolean}\n\t */\n\tisCustomContent: fpHas([popoverContentPath, popoverContentComponentTag]),\n\n\t/**\n\t * Returns true if popover is of type action list\n\t * @param {PopoverDefinition} popoverDefinition\n\t * @returns {boolean}\n\t */\n\tisActionListContent: fpHas([popoverContentPath, popoverContentActions]),\n\n\t/**\n\t * This function returns the aria label to be used by now-popover\n\t * @param {PopoverDefinition} popoverDefinition\n\t * @returns string\n\t */\n\tgetAriaLabel: function (popoverDefinition) {\n\t\treturn popoverDefinition?.config?.ariaLabel;\n\t},\n\n\t/**\n\t * This function returns the interaction type to be used by now-popover\n\t * @param {PopoverDefinition} popoverDefinition\n\t * @returns {popoverInteractionTypes}\n\t */\n\tgetInteractionType: function (popoverDefinition) {\n\t\tif (this.isTextContent(popoverDefinition)) {\n\t\t\treturn popoverInteractionTypes.DIALOG;\n\t\t}\n\t\tif (this.isActionListContent(popoverDefinition)) {\n\t\t\treturn popoverInteractionTypes.DIALOG;\n\t\t}\n\t\tif (this.isCustomContent(popoverDefinition)) {\n\t\t\treturn popoverInteractionTypes.DIALOG;\n\t\t}\n\n\t\treturn popoverInteractionTypes.NONE;\n\t},\n\n\t/**\n\t * This function returns popover content type.\n\t *\n\t * @param {PopoverDefinition} popoverDefinition\n\t */\n\tgetPopoverContentType: function (popoverDefinition) {\n\t\tif (\n\t\t\tthis.hasPopoverText(popoverDefinition) ||\n\t\t\tthis.hasPopoverButtons(popoverDefinition)\n\t\t) {\n\t\t\treturn popoverContentTypes.TEXT_CONTENT;\n\t\t} else if (this.hasPopoverAction(popoverDefinition)) {\n\t\t\treturn popoverContentTypes.ACTION_CONTENT;\n\t\t} else if (this.hasPopoverCustom(popoverDefinition)) {\n\t\t\treturn popoverContentTypes.CUSTOM_CONTENT;\n\t\t}\n\t},\n\n\t/**\n\t * This function returns the first valid action item id\n\t *\n\t * @param {PopoverDefinition} popoverDefinition\n\t */\n\tgetActiveActionItem: function (popoverDefinition) {\n\t\tconst actions = this.getActions(popoverDefinition);\n\t\treturn actions[0]?.children ? actions[0].children[0].id : actions[0].id;\n\t},\n};\n\nexport default popoverSelectors;\n","import get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\n\nimport columnSelectors from '../../shared/utils/selectors/columnSelectors';\nimport overlaySelectors from '../../shared/utils/selectors/overlaySelectors';\nimport popoverSelectors from '../../shared/utils/selectors/popoverSelectors';\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\nimport { OVERLAY_TYPE_CUSTOM } from '../../typeSchemas/overlayDefinition/overlayConfigConsts';\n\nimport { COMPONENT_LOADED_STATUS } from './constants';\n\nconst {\n\tTYPE_CUSTOM,\n} = require('../../typeSchemas/columnDefinitions/columnTypes/columnTypes');\n\nconst {\n\tgetColumns,\n\tgetColumnType,\n\tgetColumnComponentTag,\n\tgetColumnFilterValueEditorCustomComponentTag,\n} = columnSelectors;\nconst { getRowsOfCustomType, getRows, getCustomRowComponentTag } = rowSelectors;\nconst { getPopoverComponentTag } = popoverSelectors;\nconst { getCustomOverlayComponentTag } = overlaySelectors;\n\n/**\n * @param {Array<ColumnType>} columns\n * @param {Array<ColumnType>} flattenedColumns\n * @return {Array<ColumnType>}\n */\nconst flattenColumns = (columns, flattenedColumns) => {\n\tconst result = flattenedColumns || [];\n\tcolumns.forEach((column) => {\n\t\tif (column.children) {\n\t\t\tflattenColumns(column.children, result);\n\t\t} else {\n\t\t\tresult.push(column);\n\t\t}\n\t});\n\treturn result;\n};\n\n/**\n * Checks if the column has a custom tag, and if it has not been loaded yet\n * @param {ColumnType} column\n * @param {Record<string, FetchedComponent>} fetchedComponents\n * @returns boolean\n */\nconst hasCustomColumnTag = (column, fetchedComponents) => {\n\tconst componentTag = getColumnComponentTag(column);\n\n\tconst hasComponentLoaded = isComponentLoaded(\n\t\tfetchedComponents,\n\t\tcomponentTag\n\t);\n\n\tconst isCustomColumn = getColumnType(column) === TYPE_CUSTOM;\n\treturn isCustomColumn && !hasComponentLoaded;\n};\n\n/**\n * Checks if the column filter has a custom tag, and if it has not been loaded yet\n * @param {ColumnType} column\n * @param {Record<string, FetchedComponent>} fetchedComponents\n * @returns boolean\n */\nconst hasCustomColumnFilterTag = (column, fetchedComponents) => {\n\tconst componentTag = getColumnFilterValueEditorCustomComponentTag(column);\n\tconst hasComponentLoaded = isComponentLoaded(\n\t\tfetchedComponents,\n\t\tcomponentTag\n\t);\n\n\treturn componentTag && !hasComponentLoaded;\n};\n\n/**\n * Checks if the custom component has been loaded\n * @param {Record<string, FetchedComponent>} fetchedComponents\n * @param {string} componentTag\n * @returns\n */\nconst isComponentLoaded = (fetchedComponents, componentTag) => {\n\tconst status = get(fetchedComponents, `${componentTag}.status`, null);\n\treturn status && status !== COMPONENT_LOADED_STATUS.ERROR;\n};\n\n/**\n * Adds a component tag to the set if it exists and is not already loaded\n * @param {Set<string>} componentTags\n * @param {string | null} componentTag\n * @param {Record<string, FetchedComponent>} fetchedComponents\n */\nconst addComponentTagIfNotLoaded = (\n\tcomponentTags,\n\tcomponentTag,\n\tfetchedComponents\n) => {\n\tif (componentTag && !isComponentLoaded(fetchedComponents, componentTag)) {\n\t\tcomponentTags.add(componentTag);\n\t}\n};\n\n/**\n * Processes columns and adds their component tags to the set\n * @param {Array<ColumnType>} columns\n * @param {Set<string>} componentTags\n * @param {Record<string, FetchedComponent>} fetchedComponents\n */\nconst processColumns = (columns, componentTags, fetchedComponents) => {\n\tcolumns\n\t\t.filter(\n\t\t\t(column) =>\n\t\t\t\thasCustomColumnTag(column, fetchedComponents) ||\n\t\t\t\thasCustomColumnFilterTag(column, fetchedComponents)\n\t\t)\n\t\t.forEach((column) => {\n\t\t\taddComponentTagIfNotLoaded(\n\t\t\t\tcomponentTags,\n\t\t\t\tgetColumnComponentTag(column),\n\t\t\t\tfetchedComponents\n\t\t\t);\n\t\t\taddComponentTagIfNotLoaded(\n\t\t\t\tcomponentTags,\n\t\t\t\tgetColumnFilterValueEditorCustomComponentTag(column),\n\t\t\t\tfetchedComponents\n\t\t\t);\n\t\t});\n};\n\n/**\n * Processes custom rows and adds their component tags to the set\n * @param {Array<unknown>} customRows\n * @param {Set<string>} componentTags\n * @param {Record<string, FetchedComponent>} fetchedComponents\n */\nconst processCustomRows = (customRows, componentTags, fetchedComponents) => {\n\tcustomRows.forEach((customRow) => {\n\t\taddComponentTagIfNotLoaded(\n\t\t\tcomponentTags,\n\t\t\tgetCustomRowComponentTag(customRow),\n\t\t\tfetchedComponents\n\t\t);\n\t});\n};\n\n/**\n * Processes the popover definition and adds its component tag to the set\n * @param {PopoverDefinition} popoverDefinition\n * @param {Set<string>} componentTags\n * @param {Record<string, FetchedComponent>} fetchedComponents\n */\nconst processPopover = (\n\tpopoverDefinition,\n\tcomponentTags,\n\tfetchedComponents\n) => {\n\taddComponentTagIfNotLoaded(\n\t\tcomponentTags,\n\t\tgetPopoverComponentTag(popoverDefinition),\n\t\tfetchedComponents\n\t);\n};\n\n/**\n * Processes the overlay definition and adds its component tag to the set\n * @param {OverlayDefinition} overlayDefinition\n * @param {Set<string>} componentTags\n * @param {Record<string, FetchedComponent>} fetchedComponents\n */\nconst processOverlay = (\n\toverlayDefinition,\n\tcomponentTags,\n\tfetchedComponents\n) => {\n\tif (\n\t\t!isEmpty(overlayDefinition) &&\n\t\toverlayDefinition.type === OVERLAY_TYPE_CUSTOM\n\t) {\n\t\taddComponentTagIfNotLoaded(\n\t\t\tcomponentTags,\n\t\t\tgetCustomOverlayComponentTag(overlayDefinition),\n\t\t\tfetchedComponents\n\t\t);\n\t}\n};\n\n/**\n * Returns which component tags need to be loaded by the uxf-component loader\n * @param {ColumnDefinitions} columnDefinitions\n * @param {PopoverDefinition} popoverDefinition\n * @param {OverlayDefinition} overlayDefinition\n * @param {RowDefinitions} rowDefinitions\n * @param {Record<string, FetchedComponent>} fetchedComponents\n * @return {Array<string>} componentTags\n */\nexport const getComponentTagsToLoad = (\n\tcolumnDefinitions,\n\tpopoverDefinition,\n\toverlayDefinition,\n\trowDefinitions,\n\tfetchedComponents = {}\n) => {\n\tconst componentTags = new Set();\n\n\t// Process columns\n\tconst columns = flattenColumns(getColumns(columnDefinitions) || [], []);\n\tprocessColumns(columns, componentTags, fetchedComponents);\n\n\t// Process custom rows\n\tconst customRows = getRowsOfCustomType(getRows(rowDefinitions));\n\tprocessCustomRows(customRows, componentTags, fetchedComponents);\n\n\t// Process popover\n\tprocessPopover(popoverDefinition, componentTags, fetchedComponents);\n\n\t// Process overlay\n\tprocessOverlay(overlayDefinition, componentTags, fetchedComponents);\n\n\treturn Array.from(componentTags);\n};\n","import createComponentLoaderEffect from '@devsnc/uxf-effect-component-loader';\nimport { actionTypes } from '@servicenow/ui-core';\nimport camelCase from 'lodash/camelCase';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { LIST_ICON_CACHE, LIST_ICON_SET } from '../../constants';\nimport { getIconPixelSize } from '../../shared/views/shared/fakeNowIcon';\n\nimport { getComponentTagsToLoad } from './componentLoaderBehaviorUtils';\nimport {\n\tNOW_LIST_COMPONENT_LOAD_REQUESTED,\n\tNOW_LIST_COMPONENT_LOAD_COMPLETED,\n\tNOW_LIST_COMPONENT_LOAD_FAILED,\n\tCOMPONENT_LOADED_STATUS,\n\tMAX_COMPONENT_LOAD_COUNT,\n} from './constants';\n\nconst {\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_CONNECTED,\n} = actionTypes;\n\n/**\n * Will determine which components need to be fetched and update their state accordingly\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst componentBootstrappedHandler = (coeffects) => {\n\tconst {\n\t\tproperties: {\n\t\t\tcolumnDefinitions,\n\t\t\tpopoverDefinition,\n\t\t\toverlayDefinition,\n\t\t\trowDefinitions,\n\t\t},\n\t\tstate: { fetchedComponents = {} },\n\t\tdispatch,\n\t\tupdateState,\n\t} = coeffects;\n\n\t/** @type {Record<string, FetchedComponent>}} */\n\tconst fetchingComponents = {};\n\n\tconst componentsToLoad = getComponentTagsToLoad(\n\t\tcolumnDefinitions,\n\t\tpopoverDefinition,\n\t\toverlayDefinition,\n\t\trowDefinitions,\n\t\tfetchedComponents\n\t);\n\tcomponentsToLoad.forEach((componentTag) => {\n\t\t// Checks if the custom component is already defined on the browser, if so prevent it from\n\t\t// loading and set its status to SUCCESS\n\t\tconst isDefined = customElements.get(componentTag) !== undefined;\n\t\tconst action = isDefined\n\t\t\t? NOW_LIST_COMPONENT_LOAD_COMPLETED\n\t\t\t: NOW_LIST_COMPONENT_LOAD_REQUESTED;\n\t\tconst status = isDefined\n\t\t\t? COMPONENT_LOADED_STATUS.SUCCESS\n\t\t\t: COMPONENT_LOADED_STATUS.LOADING;\n\n\t\t(fetchingComponents[componentTag] = {\n\t\t\tfetchCount: 1,\n\t\t\tstatus,\n\t\t}),\n\t\t\tdispatch(action, {\n\t\t\t\ttagName: componentTag,\n\t\t\t});\n\t});\n\n\tif (!isEmpty(fetchingComponents)) {\n\t\tupdateState({\n\t\t\tpath: `fetchedComponents`,\n\t\t\tvalue: fetchingComponents,\n\t\t\toperation: 'merge',\n\t\t});\n\t}\n};\n\n/**\n * Delegates to the component bootstrap behavior if the columnDefinitions have changed\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst propertyChangedHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name },\n\t\t},\n\t} = coeffects;\n\n\tif (\n\t\t[\n\t\t\t'columnDefinitions',\n\t\t\t'popoverDefinition',\n\t\t\t'overlayDefinition',\n\t\t\t'rowDefinitions',\n\t\t].includes(name)\n\t)\n\t\tcomponentBootstrappedHandler(coeffects);\n};\n\n/**\n * Updates the state when a component has succesfully been loaded\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst componentLoadCompletedHandler = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\taction: {\n\t\t\tpayload: { tagName },\n\t\t},\n\t} = coeffects;\n\n\tconst value = { status: COMPONENT_LOADED_STATUS.SUCCESS };\n\tupdateState({\n\t\tpath: `fetchedComponents.${tagName}`,\n\t\toperation: 'merge',\n\t\tvalue,\n\t});\n};\n\n/**\n * Handles the case when a component load fails\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst componentLoadFailedHandler = (coeffects) => {\n\tconst {\n\t\tstate: { fetchedComponents = {} },\n\t\tupdateState,\n\t\taction: {\n\t\t\tpayload: {\n\t\t\t\trequest: { tagName },\n\t\t\t},\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tconst { fetchCount } = fetchedComponents[tagName];\n\tif (fetchCount < MAX_COMPONENT_LOAD_COUNT) {\n\t\tdispatch(NOW_LIST_COMPONENT_LOAD_REQUESTED, { tagName: tagName });\n\t\tupdateState({\n\t\t\tpath: `fetchedComponents.${tagName}.fetchCount`,\n\t\t\toperation: 'set',\n\t\t\tvalue: fetchCount + 1,\n\t\t\tshouldRender: false,\n\t\t});\n\t} else {\n\t\tupdateState({\n\t\t\tpath: `fetchedComponents.${tagName}.status`,\n\t\t\toperation: 'set',\n\t\t\tvalue: COMPONENT_LOADED_STATUS.ERROR,\n\t\t});\n\t}\n};\n\nconst fetchAndCacheIcons = () => {\n\tLIST_ICON_SET.forEach((set) => {\n\t\tconst { name, size } = set;\n\t\tconst camelIconName = camelCase(name);\n\t\tconst iconKey = `${camelIconName}${getIconPixelSize(size)}`;\n\n\t\t// @ts-ignore\n\t\twindow?.__TECTONIC__$servicenow_now_icon?.getIcon(iconKey).then(\n\t\t\t// @ts-ignore\n\t\t\t(r) => {\n\t\t\t\tif (r) {\n\t\t\t\t\tif (!localStorage.getItem(LIST_ICON_CACHE)) {\n\t\t\t\t\t\tlocalStorage.setItem(LIST_ICON_CACHE, '{}');\n\t\t\t\t\t}\n\t\t\t\t\tconst cacheString = localStorage.getItem(LIST_ICON_CACHE);\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconst parsedCache = JSON.parse(cacheString);\n\t\t\t\t\tparsedCache[iconKey] = r;\n\t\t\t\t\tlocalStorage.setItem(\n\t\t\t\t\t\tLIST_ICON_CACHE,\n\t\t\t\t\t\tJSON.stringify(parsedCache)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n};\n\nconst componentLoaderBehavior = {\n\tname: 'componentLoaderBehavior',\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[COMPONENT_PROPERTY_CHANGED]: { effect: propertyChangedHandler },\n\t\t[COMPONENT_BOOTSTRAPPED]: { effect: componentBootstrappedHandler },\n\t\t[NOW_LIST_COMPONENT_LOAD_REQUESTED]: createComponentLoaderEffect({\n\t\t\tsuccessActionType: NOW_LIST_COMPONENT_LOAD_COMPLETED,\n\t\t\terrorActionType: NOW_LIST_COMPONENT_LOAD_FAILED,\n\t\t}),\n\t\t[NOW_LIST_COMPONENT_LOAD_COMPLETED]: {\n\t\t\teffect: componentLoadCompletedHandler,\n\t\t},\n\t\t[NOW_LIST_COMPONENT_LOAD_FAILED]: {\n\t\t\teffect: componentLoadFailedHandler,\n\t\t},\n\t\t[COMPONENT_CONNECTED]: {\n\t\t\teffect: fetchAndCacheIcons,\n\t\t},\n\t},\n};\n\nexport default componentLoaderBehavior;\n","import { getOr } from 'lodash/fp';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { t } from 'sn-translate';\n\nimport logger from '../logger';\n\nconst {\n\tTYPE_ICON,\n\tTYPE_LINK,\n\tTYPE_URL,\n\tTYPE_PERSON,\n\tTYPE_CHOICE,\n} = require('../../../typeSchemas/columnDefinitions/columnTypes/columnTypes');\nconst {\n\tICON_CELL_COLOR_DEFAULT,\n} = require('../../views/fields/icon/iconConstants');\nconst {\n\tEMPTY_CELL_VALUE,\n\tHIGHLIGHTED_VALUE,\n} = require('../../views/table/tableBody/tableRow/rowCell/rowCellConstants');\n\nconst cellSelectors = {\n\t/**\n\t * Selector for getting cell value for any cell type\n\t * @param {CellType} cell\n\t *\n\t * @returns {(string | number | boolean | Array<PillType>)} cell value\n\t */\n\tgetValue: getOr(EMPTY_CELL_VALUE, 'value'),\n\n\t/**\n\t * Selector for getting editing disabled value for any cell type\n\t * @param {CellType} cell\n\t *\n\t * @returns {(boolean | false)} cell value\n\t */\n\tgetEditingDisabled: (cell) => {\n\t\treturn get(cell, 'editingDisabled', false);\n\t},\n\n\t/**\n\t * Selector for getting disabled at the cell level for link, person and url type\n\t * @param {CellType} cell\n\t *\n\t * @returns {boolean} disabled\n\t */\n\tgetDisabled: (cell) => {\n\t\treturn get(cell, 'disabled', false);\n\t},\n\n\t/**\n\t * Selector for getting cell color for any cell type\n\t * IMPORTANT: note that this getter should only be used for icon-typed cells,\n\t * the only type that has a color property in its schema.\n\t * @param {IconCellType} cell\n\t *\n\t * @returns {(string | undefined)}\n\t */\n\tgetColor: (cell) => {\n\t\tconst type = get(cell, 'type');\n\n\t\tif (type !== TYPE_ICON) {\n\t\t\tlogger.warning(\n\t\t\t\t'getColor(), a method specific to icon typed cells, was called on an irrelevant type'\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn get(cell, 'color', ICON_CELL_COLOR_DEFAULT);\n\t},\n\n\t/**\n\t * Selector for getting cell image src for any person type\n\t * IMPORTANT: note that this getter should only be used for person-typed cells,\n\t * the only type that has a imageSrc property in its schema.\n\t * @param {PersonCellType} cell\n\t *\n\t * @returns {(string | undefined)}\n\t */\n\tgetImageSrc: (cell) => {\n\t\tconst type = get(cell, 'type');\n\n\t\tif (type !== TYPE_PERSON) {\n\t\t\tlogger.warning(\n\t\t\t\t'getImageSrc(), a method specific to person typed cells, was called on an irrelevant type'\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn get(cell, 'imageSrc');\n\t},\n\n\t/**\n\t * Selector for getting key for person cell type\n\t * IMPORTANT: note that this getter should only be used for person-typed cells\n\t * @param {PersonCellType} cell\n\t *\n\t * @returns {(string | undefined)}\n\t */\n\tgetPersonKey: (cell) => {\n\t\tconst type = get(cell, 'type');\n\n\t\tif (type !== TYPE_PERSON) {\n\t\t\tlogger.warning(\n\t\t\t\t'getPersonKey(), a method specific to person typed cells, was called on an irrelevant type'\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn get(cell, 'personKey');\n\t},\n\n\t/**\n\t * Selector for getting cell label for cells that are URL or link type\n\t * IMPORTANT: note that this getter should only be used for those cell types (URLs and actionable links)\n\t * that have a label property in their schema.\n\t * Other cell types determine their own labels based on their value inside their typed subview.\n\t * @param {(UrlCellType | LinkCellType | ChoiceCellType)} cell\n\t *\n\t * @returns {string}\n\t */\n\tgetLabel: function (cell) {\n\t\tconst type = get(cell, 'type');\n\n\t\tif (type === TYPE_LINK) {\n\t\t\treturn cellSelectors.getLinkLabel(cell);\n\t\t} else if (type === TYPE_URL) {\n\t\t\treturn cellSelectors.getUrlLabel(cell);\n\t\t} else if (type === TYPE_CHOICE) {\n\t\t\treturn getOr(EMPTY_CELL_VALUE, 'label', cell);\n\t\t} else {\n\t\t\tlogger.warning(\n\t\t\t\t'getLabel(), a method specific to URL or actionable link typed cells was called on an inapplicable type'\n\t\t\t);\n\t\t\treturn '';\n\t\t}\n\t},\n\n\t/* HELPERS */\n\n\t/**\n\t * Helper for getLabel for getting cell label for only link cells\n\t * @param {LinkCellType} cell\n\t *\n\t * @returns {string}\n\t */\n\tgetLinkLabel: (cell) => {\n\t\tconst value = getOr(EMPTY_CELL_VALUE, 'value', cell);\n\t\tconst rawLabel = get(cell, 'label');\n\n\t\tif (!isEmpty(rawLabel)) {\n\t\t\treturn rawLabel;\n\t\t}\n\t\tif (isEmpty(rawLabel) && !isEmpty(value)) {\n\t\t\t// if no label, display 'Action' as label\n\t\t\treturn t('Action');\n\t\t}\n\t\treturn value;\n\t},\n\n\t/**\n\t * Helper for getLabel for getting cell label for only URL cells\n\t * @param {UrlCellType} cell\n\t *\n\t * @returns {string}\n\t */\n\tgetUrlLabel: (cell) => {\n\t\tconst value = getOr(EMPTY_CELL_VALUE, 'value', cell);\n\t\tconst rawLabel = get(cell, 'label');\n\n\t\tif (!isEmpty(rawLabel)) {\n\t\t\treturn rawLabel;\n\t\t} else if (isEmpty(rawLabel) && !isEmpty(value)) {\n\t\t\t// if no label, just truncate value URL\n\t\t\ttry {\n\t\t\t\tconst url = new URL(value);\n\t\t\t\treturn url.hostname;\n\t\t\t} catch (e) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t},\n\n\t/**\n\t * Check if cell actions exist and are valid on a row cell\n\t * @param {CellType} cell an object representing this cell\n\t *\n\t * @returns {boolean}\n\t */\n\thasCellActions: (cell) => {\n\t\treturn !isEmpty(get(cell, 'actions'));\n\t},\n\n\t/**\n\t * Check if highlightedValue exist on a row cell\n\t * @param {CellType} cell an object representing this cell\n\t *\n\t * @returns {boolean}\n\t */\n\thasHighlightedValue: (cell) => {\n\t\treturn !isEmpty(get(cell, HIGHLIGHTED_VALUE));\n\t},\n\n\t/**\n\t * Selector for getting cell highlightedValue for any cell type\n\t * @param {CellType} cell\n\t *\n\t * @returns {(HighlightedValue)} cell value\n\t */\n\tgetHighlightedValue: (cell) => getOr({}, HIGHLIGHTED_VALUE, cell),\n\n\t/**\n\t * Selector for getting record link\n\t * @param {CellBase} cell\n\t *\n\t * @returns {(string | undefined)}\n\t */\n\tgetHref: (cell) => {\n\t\treturn get(cell, 'href');\n\t},\n};\n\nexport default cellSelectors;\n","export const NOW_DROPDOWN_LIST_ITEM_CLICKED = 'NOW_DROPDOWN_LIST#ITEM_CLICKED';\nexport const POPOVER_DROPDOWN_ITEM_CLICKED = 'POPOVER_DROPDOWN#ITEM_CLICKED';\n","export const ROW_HIGHLIGHT_ACTIVATED = 'ROW_HIGHLIGHT_ACTIVATED';\nexport const ROW_HIGHLIGHT_DEACTIVATED = 'ROW_HIGHLIGHT_DEACTIVATED';\nexport const ROW_FOCUSED_INTERNAL = 'ROW_FOCUSED_INTERNAL';\nexport const NOW_LIST_ROW_FOCUSED = 'NOW_LIST#ROW_FOCUSED';\nexport const ROW_BLUR_INTERNAL = 'ROW_BLUR_INTERNAL';\n","import { t } from 'sn-translate';\n\nexport const NOW_LIST_CONTEXT_ACTION_CLICKED =\n\t'NOW_LIST#CONTEXT_ACTION_CLICKED';\nexport const NOW_LIST_COLUMN_HEADER_ACTION_BUTTON_CLICKED =\n\t'NOW_LIST#COLUMN_HEADER_ACTION_BUTTON_CLICKED';\nexport const CELL_ACTION_KEBAB_BUTTON_CLICKED =\n\t'CELL_ACTION_KEBAB_BUTTON_CLICKED';\n\n/** @type {ActionType} */\nexport const COLUMN_HEADER_ACTION = 'columnHeaderAction';\n/** @type {ActionType} */\nexport const CELL_ACTION = 'cellAction';\n/** @type {ActionType} */\nexport const ROW_ACTION = 'rowAction';\n\nexport const ACTION_POPOVER_TYPE_COLUMN_HEADER = 'columnHeader';\nexport const ACTION_POPOVER_TYPE_ROW_AND_CELL = 'rowAndCell';\n\nexport const NOW_LIST_ACTIONS_POPOVER_DISMISS_ON_SCROLL = true;\nexport const NOW_LIST_ACTIONS_POPOVER_HIDETAIL = true;\n\nexport const GROUP_ACTION = 'groupAction';\n\nexport const COLUMN_HEADER_ACTION_LABEL = t('Column header actions');\nexport const CELL_ACTION_LABEL = t('Cell actions');\nexport const ROW_ACTION_LABEL = t('Row actions');\n\n/**\n * @param {ActionType | CustomActionType | undefined} typeOfAction\n * @returns {string}\n */\nexport const getActionLabel = (typeOfAction) => {\n\tswitch (typeOfAction) {\n\t\tcase COLUMN_HEADER_ACTION:\n\t\t\treturn COLUMN_HEADER_ACTION_LABEL;\n\t\tcase CELL_ACTION:\n\t\t\treturn CELL_ACTION_LABEL;\n\t\tcase ROW_ACTION:\n\t\t\treturn ROW_ACTION_LABEL;\n\t\tdefault:\n\t\t\treturn '';\n\t}\n};\n","import find from 'lodash/find';\nimport findKey from 'lodash/findKey';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { t } from 'sn-translate';\n\nimport { NOW_BUTTON_ICONIC_CLICKED } from '../../resources/constants';\nimport cellSelectors from '../../shared/utils/selectors/cellSelectors';\nimport columnSelectors from '../../shared/utils/selectors/columnSelectors';\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\nimport { POPOVER_DROPDOWN_ITEM_CLICKED } from '../../shared/views/popover/popoverListContent/constants';\nimport { getColumnHeaderIndexes } from '../columnBehavior/columnBehavior';\nimport {\n\tNOW_LIST_OPEN_POPOVER_INTERNAL,\n\tNOW_LIST_CLOSE_POPOVER_INTERNAL,\n} from '../popoverBehavior/constants';\nimport { ROW_HIGHLIGHT_ACTIVATED } from '../rowBehavior/constants';\nimport { GROUP_ACTION_CLICKED } from '../rowGroupingBehavior/constants';\n\nimport {\n\tACTION_POPOVER_TYPE_COLUMN_HEADER,\n\tACTION_POPOVER_TYPE_ROW_AND_CELL,\n\tCELL_ACTION,\n\tCELL_ACTION_LABEL,\n\tCOLUMN_HEADER_ACTION,\n\tNOW_LIST_COLUMN_HEADER_ACTION_BUTTON_CLICKED,\n\tNOW_LIST_CONTEXT_ACTION_CLICKED,\n\tNOW_LIST_ACTIONS_POPOVER_DISMISS_ON_SCROLL,\n\tROW_ACTION,\n\tROW_ACTION_LABEL,\n\tNOW_LIST_ACTIONS_POPOVER_HIDETAIL,\n\tCELL_ACTION_KEBAB_BUTTON_CLICKED,\n} from './constants';\n\nexport const contextActionsBehaviorHelpers = {\n\t/**\n\t * This function will take the event and get the context associated with where the event occurred.\n\t *\n\t * @param {*} event Dom event\n\t * @param {RowDefinitions} rowDefinitions\n\t * @param {RowSelectionState} rowSelectionState\n\t * @param {ProcessedColumnDefinitions} processedColumnDefinitions\n\t *\n\t * @returns {Context | undefined}\n\t */\n\tgetContext(\n\t\tevent,\n\t\trowDefinitions,\n\t\trowSelectionState,\n\t\tprocessedColumnDefinitions\n\t) {\n\t\t/** @type {Array<HTMLElement>} */\n\t\tconst path = event.path ?? event.composedPath();\n\n\t\t/** @type {HTMLElement | undefined} */\n\t\tconst cellElement = path.find(\n\t\t\t(element) =>\n\t\t\t\tthis.isValidTableBodyCell(element) ||\n\t\t\t\tthis.isValidTableHeaderCell(element)\n\t\t);\n\n\t\treturn this.getContextObject(\n\t\t\tcellElement,\n\t\t\trowDefinitions,\n\t\t\trowSelectionState,\n\t\t\tprocessedColumnDefinitions\n\t\t);\n\t},\n\n\t/**\n\t * @param {HTMLElement} element\n\t * @returns {boolean}\n\t */\n\tisValidTableBodyCell(element) {\n\t\treturn (\n\t\t\telement.tagName === 'TD' &&\n\t\t\t!isEmpty(element.dataset.columnKey) &&\n\t\t\t!isEmpty(element.dataset.rowPath)\n\t\t);\n\t},\n\n\t/**\n\t * @param {HTMLElement} element\n\t * @returns {boolean}\n\t */\n\tisValidTableHeaderCell(element) {\n\t\treturn element.tagName === 'TH' && !isEmpty(element.dataset.columnKey);\n\t},\n\n\t/**\n\t * get array of all selected rows or current row based on selection state\n\t *\n\t * @param {Row} row current row\n\t * @param {object} selectedRows\n\t * @returns {Row[]} context rows\n\t */\n\tgetContextRows(row, selectedRows) {\n\t\tconst rowKey = rowSelectors.getRowKey(row);\n\t\tconst isRowChecked = rowSelectors.isRowChecked(selectedRows, rowKey);\n\t\treturn isRowChecked ? Object.values(selectedRows || {}) : [row];\n\t},\n\n\t/**\n\t * This function will return the context object based on the cell element passed in\n\t *\n\t * @param {HTMLElement | undefined} cellElement cell html element\n\t * @param {RowDefinitions} rowDefinitions\n\t * @param {RowSelectionState} rowSelectionState\n\t * @param {ProcessedColumnDefinitions} processedColumnDefinitions\n\t * @param {ActionType | CustomActionType | undefined} typeOfAction\n\t *\n\t * @returns {Context | undefined}\n\t */\n\tgetContextObject(\n\t\tcellElement,\n\t\trowDefinitions,\n\t\trowSelectionState,\n\t\tprocessedColumnDefinitions,\n\t\ttypeOfAction = undefined\n\t) {\n\t\tif (!cellElement) return undefined;\n\n\t\t// Get data attributes\n\t\tconst cellKey = get(cellElement, 'dataset.columnKey', '');\n\t\tconst rowPath = get(cellElement, 'dataset.rowPath', '');\n\t\tconst rowIndex = get(cellElement, 'dataset.rowIndex', '');\n\t\tconst groupIndex = get(cellElement, 'dataset.groupIndex', '');\n\t\tconst fullRowPath = groupIndex\n\t\t\t? `[${groupIndex}].children${rowPath}`\n\t\t\t: rowPath;\n\n\t\t/** @type {Row} */\n\t\tconst row = get(rowDefinitions, `rows${fullRowPath}`);\n\t\tconst cell = get(row, `cells.${cellKey}`); // this ignores special cells since they don't have keys\n\n\t\tif (!(row || cell)) return undefined;\n\n\t\tconst rows = this.getContextRows(\n\t\t\trow,\n\t\t\trowSelectionState?.selectedRows || []\n\t\t);\n\t\tconst columnPath = get(\n\t\t\tprocessedColumnDefinitions,\n\t\t\t`columnMap.${cellKey}`\n\t\t);\n\t\tconst column = get(\n\t\t\tprocessedColumnDefinitions.processedColumnDefinitions,\n\t\t\tcolumnPath\n\t\t);\n\n\t\treturn {\n\t\t\tgroupIndex: groupIndex ? Number(groupIndex) : undefined,\n\t\t\trow,\n\t\t\trowIndex: rowIndex ? Number(rowIndex) : undefined,\n\t\t\trows,\n\t\t\tcell,\n\t\t\tcolumn,\n\t\t\ttypeOfAction,\n\t\t};\n\t},\n\n\t/**\n\t * Return a the context object of a column header cell.\n\t * @param {HTMLElement | undefined} headerCellElement cell html element\n\t * @param {*} processedColumnDefinitions\n\t * @param {*} typeOfAction\n\t * @returns {Context | undefined}\n\n\t */\n\tgetColumnContextObject(\n\t\theaderCellElement,\n\t\tprocessedColumnDefinitions,\n\t\ttypeOfAction = undefined\n\t) {\n\t\tif (!headerCellElement) return undefined;\n\n\t\t// Get data attributes\n\t\tconst colIndex = get(headerCellElement, 'dataset.navCol', '');\n\n\t\tconst columnPath = findKey(processedColumnDefinitions.columnMap, (\n\t\t\t/** @type {string} */ value\n\t\t) => {\n\t\t\treturn value === `columns[${colIndex}]`;\n\t\t});\n\t\tconst column = find(\n\t\t\tprocessedColumnDefinitions.processedColumnDefinitions.columns,\n\t\t\t{ key: columnPath }\n\t\t);\n\n\t\treturn {\n\t\t\tcolumn,\n\t\t\ttypeOfAction,\n\t\t};\n\t},\n\t/**\n\t * Based on location of event, returns whether the context dropdown should display, and if so what type it is\n\t *\n\t * @param {*} event Dom event\n\t * @param {Context} context\n\t * @param {RowDefinitions} rowDefinitions\n\t * @param {ProcessedColumnDefinitions} processedColumnDefinitions\n\t *\n\t * @returns {'rowAndCell' | 'columnHeader' | null} type of action popover\n\t */\n\tgetActionPopoverType(\n\t\tevent,\n\t\tcontext,\n\t\trowDefinitions,\n\t\tprocessedColumnDefinitions\n\t) {\n\t\tconst { column, cell } = context;\n\t\tconst { hasColumnHeaderActions, isSpecialColumn } = columnSelectors;\n\t\tconst { hasRowActionsWithItems } = rowSelectors;\n\t\tconst path = event.path ?? event.composedPath();\n\n\t\tconst isThead = path.some(\n\t\t\t(/** @type {HTMLElement}*/ element) => element.tagName === 'THEAD'\n\t\t);\n\n\t\tconst hasActionsForRowCellPopover =\n\t\t\thasRowActionsWithItems(rowDefinitions) ||\n\t\t\t!isEmpty(\n\t\t\t\tcontextActionsBehaviorHelpers.getCellActions(\n\t\t\t\t\tcell,\n\t\t\t\t\tcolumn,\n\t\t\t\t\tprocessedColumnDefinitions\n\t\t\t\t)\n\t\t\t);\n\n\t\tif (isThead && column) {\n\t\t\tif (hasColumnHeaderActions(column) && !isSpecialColumn(column)) {\n\t\t\t\treturn 'columnHeader';\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} else if (!isThead && hasActionsForRowCellPopover) {\n\t\t\treturn 'rowAndCell';\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t},\n\n\t/**\n\t * Gets cell actions for a given cell, defaulting to cell actions defined at the col level and overriding with cell level actions if applicable\n\t *\n\t * @param {CellType | undefined} cell\n\t * @param {ProcessedColumn | undefined} column\n\t * @param {ProcessedColumnDefinitions} processedColumnDefinitions\n\t *\n\t * @returns {Array<CellActionItem> | undefined} actions to display in popover\n\t */\n\tgetCellActions(cell, column, processedColumnDefinitions) {\n\t\tif (!cell || !column) return undefined;\n\t\telse {\n\t\t\treturn cellSelectors.hasCellActions(cell)\n\t\t\t\t? cell?.actions\n\t\t\t\t: columnSelectors.getCellActionsFromProcessedCols(\n\t\t\t\t\t\tprocessedColumnDefinitions,\n\t\t\t\t\t\tcolumn\n\t\t\t\t  );\n\t\t}\n\t},\n\n\t/**\n\t * Helper for updating state with correct position for context menu\n\t *\n\t * @param {HTMLElement} host\n\t * @param {*} event\n\t * @param {*} updateState\n\t */\n\tupdateFloatingElementPosition(host, event, updateState) {\n\t\tconst scrollContainer = host.shadowRoot?.querySelector(\n\t\t\t'.scroll-container'\n\t\t);\n\n\t\tif (!scrollContainer) return;\n\n\t\t// Need to account for current scrolled content so popover is positioned\n\t\t// correctly in scroll container\n\t\tconst floatingTargetX = event.offsetX + scrollContainer.scrollLeft;\n\t\tconst floatingTargetY = event.offsetY + scrollContainer.scrollTop;\n\n\t\tupdateState({\n\t\t\tpath: 'rowContextPosition',\n\t\t\tvalue: {\n\t\t\t\tx: floatingTargetX,\n\t\t\t\ty: floatingTargetY,\n\t\t\t},\n\t\t\toperation: 'set',\n\t\t});\n\t},\n\n\t/**\n\t * Helper for finding floating target element in the dom\n\t *\n\t * @param {*} host\n\t * @returns {HTMLElement}\n\t */\n\tgetFloatingTargetElement(host) {\n\t\treturn host.shadowRoot?.querySelector(\n\t\t\t'[data-test-id=\"floatingTarget\"]'\n\t\t);\n\t},\n\n\t/**\n\t * Helper for getting all the items for the row and cell dropdown, appropriately sectioned\n\t *\n\t * @param {Context} context\n\t * @param {RowDefinitions} rowDefinitions\n\t * @param {ProcessedColumnDefinitions} processedColumnDefinitions\n\t * @param {Array<RowActionItem>} rowActions\n\t * @param {boolean} disableActions\n\t *\n\t * @returns {Array<PopoverContentListItem>} actionsItems\n\t */\n\tgetRowAndCellDropdownItems(\n\t\tcontext,\n\t\trowDefinitions,\n\t\tprocessedColumnDefinitions,\n\t\trowActions = [],\n\t\tdisableActions = false\n\t) {\n\t\tconst { cell, column } = context;\n\n\t\tconst dropdownItems = [];\n\n\t\tconst groomedCellActions = contextActionsBehaviorHelpers.getCellActions(\n\t\t\tcell,\n\t\t\tcolumn,\n\t\t\tprocessedColumnDefinitions\n\t\t);\n\n\t\tif (isEmpty(rowActions)) {\n\t\t\t// rowActions will be undefined when this is called for right click context menu\n\t\t\trowActions = rowSelectors.getRowActionsItems(rowDefinitions);\n\t\t}\n\n\t\tconst hasCellActions = !isEmpty(groomedCellActions);\n\t\tconst hasRowActions = rowSelectors.hasRowActionsWithItems(\n\t\t\trowDefinitions\n\t\t);\n\n\t\tif (hasCellActions) {\n\t\t\tconst cellActionsSection = {\n\t\t\t\tid: CELL_ACTION,\n\t\t\t\tlabel: CELL_ACTION_LABEL,\n\t\t\t\tchildren: groomedCellActions,\n\t\t\t};\n\n\t\t\tdropdownItems.push(cellActionsSection);\n\t\t}\n\n\t\tif (hasRowActions) {\n\t\t\tconst excludedActions = rowSelectors.getExcludedActionsForRow(\n\t\t\t\tcontext.row\n\t\t\t);\n\t\t\tconst rowActionExcludes = new Set(excludedActions);\n\n\t\t\t/** @type {Array<PopoverContentListItem>} */\n\t\t\tconst rowActionsDropdownItems = rowActions.map((rowAction) => {\n\t\t\t\tdisableActions === true &&\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'disableActions is deprecated. Use excludedActions instead.'\n\t\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tdisabled:\n\t\t\t\t\t\trowActionExcludes.has(rowAction.id) || disableActions,\n\t\t\t\t\t...rowAction,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\trowActionExcludes.clear();\n\n\t\t\tconst rowActionsSection = {\n\t\t\t\tid: ROW_ACTION,\n\t\t\t\tlabel: ROW_ACTION_LABEL,\n\t\t\t\tchildren: rowActionsDropdownItems,\n\t\t\t};\n\n\t\t\tdropdownItems.push(rowActionsSection);\n\t\t}\n\n\t\treturn dropdownItems;\n\t},\n};\n\n/* EFFECTS */\n\n/**\n * dispatched when any form of action button is clicked,\n * including row action icon buttons, row actions overflow menu, column header actions context menu, and cell actions context menu.\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst actionButtonClickedHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { type, context },\n\t\t\tpayload,\n\t\t},\n\t\tdispatch,\n\t\tupdateState,\n\t} = coeffects;\n\n\tconst { column, typeOfAction } = context || {};\n\n\t// when this action is triggered from expand/collapsing groups (not a context action) or reference qualifier field during cell editing, ignore so that it is handled elsewhere\n\t// DEF0604811 - both type and typeOfAction are undefined when action is triggered from sn-record-reference-connected during cell editing\n\tif ((type === undefined && typeOfAction === undefined) || type) return;\n\n\tif (typeOfAction === COLUMN_HEADER_ACTION) {\n\t\tconst columnHeaderIndexes = getColumnHeaderIndexes(payload);\n\t\tconst eventPayload = { column, ...columnHeaderIndexes };\n\t\tdispatch(NOW_LIST_COLUMN_HEADER_ACTION_BUTTON_CLICKED, eventPayload);\n\t\tupdateState({\n\t\t\tactiveColumnKey: context.column.key,\n\t\t});\n\t}\n\n\tif (!payload?.actionItem) {\n\t\t// kebab buttons for row overflows\n\t\tdispatch(NOW_LIST_OPEN_POPOVER_INTERNAL, payload);\n\n\t\tconst rowKey = get(context, 'row.key');\n\t\tif (rowKey) {\n\t\t\t// dispatch action to highlight row when row action overflow popover is open\n\t\t\tdispatch(ROW_HIGHLIGHT_ACTIVATED, {\n\t\t\t\trowKey,\n\t\t\t});\n\t\t}\n\t} else {\n\t\t// row actions icon buttons\n\t\tconst actionName = payload?.actionItem?.action;\n\t\tif (actionName) {\n\t\t\tdispatch(actionName, payload);\n\t\t}\n\t\tdispatch(NOW_LIST_CONTEXT_ACTION_CLICKED, payload);\n\t}\n};\n\n/**\n * dispatched when any list context action is clicked, through an item in actions popover dropdown list or a row actions icon button\n *\n * @param {Coeffects<Props, State>} coeffects\n */\n\nconst listActionClickedHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { actionItem, context },\n\t\t},\n\t\tproperties: { rowDefinitions },\n\t\tdispatch,\n\t} = coeffects;\n\n\tconst item = {\n\t\tactionItem,\n\t\tcontext,\n\t};\n\n\t// for actions that originate from the right click rowAndCell context menu,\n\t// update context to include the type of action\n\t// FIXME: this logic will break if there is a cell action in this cell with the same id as a row action. maybe something we should prohibit in the schema\n\tif (!context?.typeOfAction) {\n\t\tconst rowActions = rowSelectors.getRowActionsItems(rowDefinitions);\n\n\t\tif (\n\t\t\tfind(\n\t\t\t\trowActions,\n\t\t\t\t(/** @type {RowActionItem} */ a) => a.id === actionItem.id\n\t\t\t)\n\t\t) {\n\t\t\tcontext.typeOfAction = ROW_ACTION;\n\t\t} else {\n\t\t\tcontext.typeOfAction = CELL_ACTION;\n\t\t}\n\t}\n\n\tif (actionItem?.action) dispatch(actionItem.action, item);\n\n\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\tdispatch(NOW_LIST_CONTEXT_ACTION_CLICKED, {\n\t\tactionItem,\n\t\tcontext,\n\t});\n};\n\n/**\n * Event handler for right click context menu mouse event.\n *\n * @param {Coeffects<Props,State>} coeffects\n * @returns\n */\nconst contextMenuEventHandler = (coeffects) => {\n\tlet ariaLabel;\n\tconst {\n\t\tupdateState,\n\t\taction: {\n\t\t\tpayload: { event },\n\t\t},\n\t\tproperties: { rowDefinitions },\n\t\thost,\n\t\tdispatch,\n\t\tstate: { processedColumnDefinitions, rowSelectionState },\n\t} = coeffects;\n\n\tconst context = contextActionsBehaviorHelpers.getContext(\n\t\tevent,\n\t\trowDefinitions,\n\t\trowSelectionState,\n\t\tprocessedColumnDefinitions\n\t);\n\n\tif (!context) return;\n\n\tconst actionPopoverType = contextActionsBehaviorHelpers.getActionPopoverType(\n\t\tevent,\n\t\tcontext,\n\t\trowDefinitions,\n\t\tprocessedColumnDefinitions\n\t);\n\n\tif (!actionPopoverType) return;\n\n\tevent.preventDefault();\n\n\tcontextActionsBehaviorHelpers.updateFloatingElementPosition(\n\t\thost,\n\t\tevent,\n\t\tupdateState\n\t);\n\n\tlet popoverItems;\n\n\tif (actionPopoverType === ACTION_POPOVER_TYPE_COLUMN_HEADER) {\n\t\tif (!context?.column) return;\n\t\tariaLabel = t('Column actions for {0}', context.column.label);\n\t\tpopoverItems = columnSelectors.getColumnHeaderActionsFromProcessedCols(\n\t\t\tprocessedColumnDefinitions,\n\t\t\tcontext?.column\n\t\t);\n\t\tupdateState({\n\t\t\tactiveColumnKey: context.column.key,\n\t\t});\n\t} else if (actionPopoverType === ACTION_POPOVER_TYPE_ROW_AND_CELL) {\n\t\tpopoverItems = contextActionsBehaviorHelpers.getRowAndCellDropdownItems(\n\t\t\tcontext,\n\t\t\trowDefinitions,\n\t\t\tprocessedColumnDefinitions\n\t\t);\n\t\tariaLabel = getCellActionAriaLabel(popoverItems);\n\t}\n\n\tdispatch(NOW_LIST_OPEN_POPOVER_INTERNAL, {\n\t\tpopoverTarget: contextActionsBehaviorHelpers.getFloatingTargetElement(\n\t\t\thost\n\t\t),\n\t\tpopoverDefinition: {\n\t\t\tconfig: {\n\t\t\t\tariaLabel,\n\t\t\t\tdismissOnScroll: NOW_LIST_ACTIONS_POPOVER_DISMISS_ON_SCROLL,\n\t\t\t\thideTail: NOW_LIST_ACTIONS_POPOVER_HIDETAIL,\n\t\t\t},\n\t\t\tcontent: {\n\t\t\t\tactions: popoverItems,\n\t\t\t},\n\t\t},\n\t\tcontext,\n\t});\n};\n\n/**\n * Event handler for right click context menu mouse event within data cells\n *\n * @param {Coeffects<Props,State>} coeffects\n * @returns\n */\nconst cellActionMenuClickedHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { context, popoverTarget, typeOfAction },\n\t\t},\n\t\tdispatch,\n\t\tproperties: { rowDefinitions },\n\t\tstate: { processedColumnDefinitions },\n\t} = coeffects;\n\n\tif (typeOfAction !== CELL_ACTION) return;\n\n\tif (!context || !processedColumnDefinitions || !rowDefinitions) return;\n\n\tconst popoverItems = contextActionsBehaviorHelpers.getRowAndCellDropdownItems(\n\t\tcontext,\n\t\trowDefinitions,\n\t\tprocessedColumnDefinitions\n\t);\n\n\tif (popoverItems.length <= 0) return;\n\n\tconst ariaLabel = getCellActionAriaLabel(popoverItems);\n\n\tdispatch(NOW_LIST_OPEN_POPOVER_INTERNAL, {\n\t\tcontext,\n\t\tpopoverDefinition: {\n\t\t\tconfig: {\n\t\t\t\tariaLabel,\n\t\t\t\tdismissOnScroll: NOW_LIST_ACTIONS_POPOVER_DISMISS_ON_SCROLL,\n\t\t\t\thideTail: NOW_LIST_ACTIONS_POPOVER_HIDETAIL,\n\t\t\t},\n\t\t\tcontent: {\n\t\t\t\tactions: popoverItems,\n\t\t\t},\n\t\t},\n\t\tpopoverTarget: popoverTarget,\n\t});\n};\n\nconst contextActionsBehavior = {\n\tname: 'contextActionsBehavior',\n\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[NOW_BUTTON_ICONIC_CLICKED]: {\n\t\t\teffect: actionButtonClickedHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[GROUP_ACTION_CLICKED]: {\n\t\t\teffect: listActionClickedHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[POPOVER_DROPDOWN_ITEM_CLICKED]: {\n\t\t\teffect: listActionClickedHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[CELL_ACTION_KEBAB_BUTTON_CLICKED]: {\n\t\t\teffect: cellActionMenuClickedHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['contextmenu'],\n\t\t\teffect: contextMenuEventHandler,\n\t\t},\n\t],\n};\n\n/**\n * Gets aria label based on popover items\n * @param {Array<PopoverContentListItem>} popoverItems\n * @returns string\n */\nconst getCellActionAriaLabel = (popoverItems) => {\n\tconst labels = [];\n\tfor (const item of popoverItems) {\n\t\tlabels.push(item.label);\n\t}\n\n\treturn labels.join(', ');\n};\n\nexport default contextActionsBehavior;\n","export const NOW_LIST_CUSTOM_COMPONENT_ACTION_DISPATCHED =\n\t'NOW_LIST#CUSTOM_COMPONENT_ACTION_DISPATCHED';\nexport const NOW_LIST_CUSTOM_COMPONENT_ACTION_DISPATCHED_INTERNAL =\n\t'NOW_LIST#CUSTOM_COMPONENT_ACTION_DISPATCHED_INTERNAL';\n/** @type {CustomActionType} */\nexport const CUSTOM_ROW_ACTION_DISPATCH = 'customRowActionDispatch';\n/** @type {CustomActionType} */\nexport const CUSTOM_CELL_ACTION_DISPATCH = 'customCellActionDispatch';\n/** @type {CustomActionType} */\nexport const CUSTOM_COLUMN_FILTER_ACTION_DISPATCH =\n\t'customColumnFilterActionDispatch';\nexport const ROW_ELEMENT_PATH = 'td[data-row-path]';\n","import get from 'lodash/get';\n\n/**\n * This function will return the context object based on the source element passed in\n *\n * @param {HTMLElement} rowElement custom row html element\n * @param {RowDefinitions} rowDefinitions\n * @param {CustomActionType} typeOfAction\n *\n * @returns {Context | undefined}\n */\nexport const getCustomRowContextObject = (\n\trowElement,\n\trowDefinitions,\n\ttypeOfAction\n) => {\n\tif (!rowElement) return;\n\n\t// Get data attributes\n\tconst rowPath = get(rowElement, 'dataset.rowPath', '');\n\tconst rowIndex = get(rowElement, 'dataset.rowIndex', '');\n\tconst groupIndex = get(rowElement, 'dataset.groupIndex', '');\n\tconst fullRowPath = groupIndex\n\t\t? `[${groupIndex}].children${rowPath}`\n\t\t: rowPath;\n\n\t/** @type {Row} */\n\tconst row = get(rowDefinitions, `rows${fullRowPath}`);\n\tif (!row) return;\n\n\treturn {\n\t\tgroupIndex: groupIndex ? Number(groupIndex) : undefined,\n\t\trow,\n\t\trowIndex: rowIndex ? Number(rowIndex) : undefined,\n\t\ttypeOfAction,\n\t};\n};\n","import { actionTypes } from '@servicenow/ui-core';\nimport difference from 'lodash/difference';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\n\nimport { customComponentType } from '../../shared/utils/customLoader';\nimport columnSelectors from '../../shared/utils/selectors/columnSelectors';\nimport overlaySelectors from '../../shared/utils/selectors/overlaySelectors';\nimport popoverSelectors from '../../shared/utils/selectors/popoverSelectors';\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\nimport { getColumnOperatorFromState } from '../columnFilteringBehavior/columnFilteringBehavior';\nimport { contextActionsBehaviorHelpers } from '../contextActionsBehavior/contextActionsBehavior';\n\nimport {\n\tCUSTOM_ROW_ACTION_DISPATCH,\n\tNOW_LIST_CUSTOM_COMPONENT_ACTION_DISPATCHED,\n\tNOW_LIST_CUSTOM_COMPONENT_ACTION_DISPATCHED_INTERNAL,\n\tCUSTOM_CELL_ACTION_DISPATCH,\n\tROW_ELEMENT_PATH,\n\tCUSTOM_COLUMN_FILTER_ACTION_DISPATCH,\n} from './constants';\nimport { getCustomRowContextObject } from './utils';\n\nconst ADDED_EVENT_LISTENERS = 'addedEventListeners';\n\nconst {\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_DISCONNECTED,\n} = actionTypes;\n\nconst {\n\thasColumnFilterCustomValueEditorEmittedActions,\n\tgetColumnFilterCustomValueEditorEmittedActions,\n\tgetSelectedOperator,\n} = columnSelectors;\n\nconst {\n\thasCustomPopoverEmittedActions,\n\tgetCustomPopoverEmittedActions,\n} = popoverSelectors;\n\nconst {\n\thasCustomOverlayEmittedActions,\n\tgetCustomOverlayEmittedActions,\n} = overlaySelectors;\n\nconst {\n\thasCustomCellEmittedActions,\n\tgetCustomCellEmittedActions,\n} = rowSelectors;\n\n/**\n * Dispatch actions when dynamic action gets dispatched from custom cell\n * @param  {*} event\n * @param {Dispatch} dispatch\n */\nexport const callbackListener = (event, dispatch) => {\n\tconst {\n\t\tdetail: { meta },\n\t\tsrcElement,\n\t} = event;\n\tconst context = get(meta, 'appended.fromCustomSource', false);\n\tif (context) {\n\t\tevent.stopPropagation();\n\t\tdispatch(NOW_LIST_CUSTOM_COMPONENT_ACTION_DISPATCHED_INTERNAL, {\n\t\t\tcontext,\n\t\t\tsrcElement,\n\t\t\tevent,\n\t\t});\n\t}\n};\n\n/**\n * Helper effect for processing custom component actions. Since the actions are set up on bootstrap,\n * the original effect will not have access to processedColumns, so we will dispatch from the listener and\n * handle it here where we will have access to the updated state\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const customComponentActionDispatchEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {\n\t\t\t\tevent: { detail },\n\t\t\t\tcontext,\n\t\t\t\tsrcElement,\n\t\t\t},\n\t\t},\n\t\tproperties: { rowDefinitions },\n\t\tstate,\n\t\tdispatch,\n\t} = coeffects;\n\n\tconst { processedColumnDefinitions, rowSelectionState } = state;\n\n\t/** @type {Context | {}} */\n\tlet cellContext = {};\n\tlet columnFilteringPayload = {};\n\n\tif (context == customComponentType.CELL) {\n\t\tconst cellElement = srcElement.closest(\n\t\t\t'td[data-row-path][data-column-key]'\n\t\t);\n\t\tconst contextObject = contextActionsBehaviorHelpers.getContextObject(\n\t\t\tcellElement,\n\t\t\trowDefinitions,\n\t\t\trowSelectionState,\n\t\t\tprocessedColumnDefinitions,\n\t\t\tCUSTOM_CELL_ACTION_DISPATCH\n\t\t);\n\n\t\tif (contextObject) {\n\t\t\tcellContext = contextObject;\n\t\t}\n\t} else if (context === customComponentType.ROW) {\n\t\tconst rowElement = srcElement.closest(ROW_ELEMENT_PATH);\n\t\tconst customRowContextObject = getCustomRowContextObject(\n\t\t\trowElement,\n\t\t\trowDefinitions,\n\t\t\tCUSTOM_ROW_ACTION_DISPATCH\n\t\t);\n\n\t\tif (customRowContextObject) {\n\t\t\tcellContext = customRowContextObject;\n\t\t}\n\t} else if (context === customComponentType.COLUMN_FILTER_VALUE_INPUT) {\n\t\tconst headerCellElement = srcElement.closest(\n\t\t\t'td[data-nav-row][data-nav-col]'\n\t\t);\n\n\t\tconst contextObject = contextActionsBehaviorHelpers.getColumnContextObject(\n\t\t\theaderCellElement,\n\t\t\tprocessedColumnDefinitions,\n\t\t\tCUSTOM_COLUMN_FILTER_ACTION_DISPATCH\n\t\t);\n\n\t\tif (contextObject) cellContext = contextObject;\n\n\t\tconst column = contextObject?.column;\n\t\tif (column) {\n\t\t\tconst oldOperator = getSelectedOperator(column);\n\t\t\tconst newOperator = getColumnOperatorFromState(column, state);\n\t\t\t// the new value is emitted as a part of detail's payload\n\t\t\tcolumnFilteringPayload = {\n\t\t\t\toldOperator,\n\t\t\t\tnewOperator,\n\t\t\t};\n\t\t}\n\t}\n\n\tdispatch(NOW_LIST_CUSTOM_COMPONENT_ACTION_DISPATCHED, {\n\t\tcontext,\n\t\tcellContext,\n\t\tdetail,\n\t\tcolumnFilteringPayload,\n\t});\n};\n\n/**\n * Gets emitted actions for rowDefinitions, popoverDefinition and overlayDefinition\n * @param {RowDefinitions} rowDefinitions\n * @param {ColumnDefinitions} columnDefinitions\n * @param {PopoverDefinition} popoverDefinition\n * @param {OverlayDefinition} overlayDefinition\n */\nexport const getEmittedActions = (\n\trowDefinitions,\n\tcolumnDefinitions,\n\tpopoverDefinition,\n\toverlayDefinition\n) => {\n\tlet customEmittedActions = null;\n\n\tif (hasCustomCellEmittedActions(rowDefinitions)) {\n\t\tcustomEmittedActions = getCustomCellEmittedActions(rowDefinitions);\n\t} else if (\n\t\thasColumnFilterCustomValueEditorEmittedActions(columnDefinitions)\n\t) {\n\t\tcustomEmittedActions = getColumnFilterCustomValueEditorEmittedActions(\n\t\t\tcolumnDefinitions\n\t\t);\n\t} else if (hasCustomPopoverEmittedActions(popoverDefinition)) {\n\t\tcustomEmittedActions = getCustomPopoverEmittedActions(\n\t\t\tpopoverDefinition\n\t\t);\n\t} else if (hasCustomOverlayEmittedActions(overlayDefinition)) {\n\t\tcustomEmittedActions = getCustomOverlayEmittedActions(\n\t\t\toverlayDefinition\n\t\t);\n\t}\n\treturn customEmittedActions;\n};\n\n/**\n * Add event listeners to host element on component load if custom cell actions exist\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const componentBootstrappedHandler = (coeffects) => {\n\tconst {\n\t\tproperties: {\n\t\t\tcolumnDefinitions,\n\t\t\tpopoverDefinition,\n\t\t\trowDefinitions,\n\t\t\toverlayDefinition,\n\t\t},\n\t\thost,\n\t\tupdateState,\n\t} = coeffects;\n\n\tupdateState({\n\t\tpath: ADDED_EVENT_LISTENERS,\n\t\tvalue: {},\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n\tconst customEmittedActions = getEmittedActions(\n\t\trowDefinitions,\n\t\tcolumnDefinitions,\n\t\tpopoverDefinition,\n\t\toverlayDefinition\n\t);\n\tupdateEventListeners(customEmittedActions, host, coeffects, true);\n};\n\n/**\n * Add/Remove event listeners for actions to host element\n * @param {Array<string>} actionNames\n * @param {*} host\n * @param {Coeffects<Props, State>} coeffects\n * @param {boolean} shouldAddListener\n */\nexport const updateEventListeners = (\n\tactionNames,\n\thost,\n\tcoeffects,\n\tshouldAddListener\n) => {\n\tconst { state, updateState, dispatch } = coeffects;\n\tif (!isEmpty(actionNames)) {\n\t\tconst nodeElement = host?.shadowRoot;\n\t\tif (nodeElement) {\n\t\t\tconst eventListeners = get(state, ADDED_EVENT_LISTENERS) || {};\n\t\t\tconst uniqueActionNames = [...new Set(actionNames)];\n\t\t\tlet listenersUpdated = false;\n\t\t\tuniqueActionNames.forEach((actionName) => {\n\t\t\t\tif (shouldAddListener) {\n\t\t\t\t\tif (!eventListeners[actionName]) {\n\t\t\t\t\t\tlistenersUpdated = true;\n\t\t\t\t\t\tconst listener = (/** @type {any} */ event) =>\n\t\t\t\t\t\t\tcallbackListener(event, dispatch);\n\t\t\t\t\t\tnodeElement.addEventListener(actionName, listener);\n\t\t\t\t\t\teventListeners[actionName] = listener;\n\t\t\t\t\t}\n\t\t\t\t} else if (eventListeners[actionName]) {\n\t\t\t\t\tlistenersUpdated = true;\n\t\t\t\t\tnodeElement.removeEventListener(\n\t\t\t\t\t\tactionName,\n\t\t\t\t\t\teventListeners[actionName]\n\t\t\t\t\t);\n\t\t\t\t\tdelete eventListeners[actionName];\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (listenersUpdated) {\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: ADDED_EVENT_LISTENERS,\n\t\t\t\t\tvalue: eventListeners,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * Create or change event listeners on host elements when definition changes\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const propertyChangedHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name, value, previousValue },\n\t\t},\n\t\thost,\n\t} = coeffects;\n\tif (\n\t\t![\n\t\t\t'rowDefinitions',\n\t\t\t'columnDefinitions',\n\t\t\t'popoverDefinition',\n\t\t\t'overlayDefinition',\n\t\t].includes(name)\n\t)\n\t\treturn;\n\tlet customCellEmittedActionsNew = null;\n\tlet customCellEmittedActionsOld = null;\n\tif (name === 'rowDefinitions') {\n\t\tcustomCellEmittedActionsNew = getCustomCellEmittedActions(value);\n\t\tcustomCellEmittedActionsOld = getCustomCellEmittedActions(\n\t\t\tpreviousValue\n\t\t);\n\t} else if (name === 'columnDefinitions') {\n\t\tcustomCellEmittedActionsNew = getColumnFilterCustomValueEditorEmittedActions(\n\t\t\tvalue\n\t\t);\n\t\tcustomCellEmittedActionsOld = getColumnFilterCustomValueEditorEmittedActions(\n\t\t\tpreviousValue\n\t\t);\n\t} else if (name === 'popoverDefinition') {\n\t\tcustomCellEmittedActionsNew = getCustomPopoverEmittedActions(value);\n\t\tcustomCellEmittedActionsOld = getCustomPopoverEmittedActions(\n\t\t\tpreviousValue\n\t\t);\n\t} else if (name === 'overlayDefinition') {\n\t\tcustomCellEmittedActionsNew = getCustomOverlayEmittedActions(value);\n\t\tcustomCellEmittedActionsOld = getCustomOverlayEmittedActions(\n\t\t\tpreviousValue\n\t\t);\n\t}\n\tif (isEqual(customCellEmittedActionsNew, customCellEmittedActionsOld))\n\t\treturn;\n\n\tconst customCellEmittedActionsToRemove = difference(\n\t\tcustomCellEmittedActionsOld,\n\t\tcustomCellEmittedActionsNew\n\t);\n\tconst customCellEmittedActionsToAdd = difference(\n\t\tcustomCellEmittedActionsNew,\n\t\tcustomCellEmittedActionsOld\n\t);\n\n\tupdateEventListeners(\n\t\tcustomCellEmittedActionsToRemove,\n\t\thost,\n\t\tcoeffects,\n\t\tfalse\n\t);\n\tupdateEventListeners(customCellEmittedActionsToAdd, host, coeffects, true);\n};\n\n/**\n * Remove event listeners from host element on component disconnect\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const componentDisconnectedHandler = (coeffects) => {\n\tconst {\n\t\tproperties: {\n\t\t\tcolumnDefinitions,\n\t\t\trowDefinitions,\n\t\t\tpopoverDefinition,\n\t\t\toverlayDefinition,\n\t\t},\n\t\thost,\n\t} = coeffects;\n\tconst combinedCustomCellEmittedActions = getEmittedActions(\n\t\trowDefinitions,\n\t\tcolumnDefinitions,\n\t\tpopoverDefinition,\n\t\toverlayDefinition\n\t);\n\tupdateEventListeners(\n\t\tcombinedCustomCellEmittedActions,\n\t\thost,\n\t\tcoeffects,\n\t\tfalse\n\t);\n};\n\nconst customCellDynamicActionBehavior = {\n\tname: 'customCellDynamicActionBehavior',\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\t\teffect: propertyChangedHandler,\n\t\t},\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: componentBootstrappedHandler,\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: {\n\t\t\teffect: componentDisconnectedHandler,\n\t\t},\n\t\t[NOW_LIST_CUSTOM_COMPONENT_ACTION_DISPATCHED_INTERNAL]: {\n\t\t\teffect: customComponentActionDispatchEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default customCellDynamicActionBehavior;\n","/**\n * Contains the effects that are directly called as a result of an action or\n * event occurring\n */\n\nimport {\n\tactivateFocusTrap,\n\tdeactivateFocusTrap,\n\tfindActiveElement,\n\tshadowQuerySelectorAll,\n} from '@devsnc/sn-list-commons';\nimport { findTabbableNodes } from '@servicenow/library-enhanced-utils';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { ACTIONABLE_MESSAGE_BUTTON_CLASS } from '../../shared/views/actionableMessage/constants';\n\nimport {\n\tALLOW_TABLE_FOCUS,\n\tENTER_CELL_TRAP,\n\tEXIT_CELL_TRAP,\n\tKEY,\n\tKEY_MAP,\n\tMOVE_FOCUS,\n\tRESET_BEHAVIOR,\n\tUPDATE_TABLE_REF,\n} from './constants';\nimport {\n\tfocusCellNode,\n\tfocusPopoverTarget,\n\tgetBehaviorOptions,\n\tgetBehaviorState,\n\tgetCellFromTableRef,\n\tgetNextRowFromTableRef,\n\tgetRowFromTableRef,\n\thandleBulkFocusClick,\n\thandleCellMove,\n\thandleRowMove,\n\tsetBehaviorState,\n\tsetNewCellFocus,\n\tsetNewRowFocus,\n\tshouldTriggerRerenderDefaultFn,\n} from './keyboardNavHelpers';\nimport { getComponentPath, querySelector } from './utils';\n\n/**\n * Handles setting up the behavior state when the component is initialized.\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const tableRenderedEffect = (coeffects) => {\n\tconst { action, dispatch, host, state, updateState } = coeffects;\n\tconst { isRendered, incomingRender } = getBehaviorState(state);\n\tconst { tableSelector } = getBehaviorOptions(action);\n\n\tif (!isRendered || incomingRender) {\n\t\tconst isTableEmpty = isEmpty(\n\t\t\tget(state, 'properties.rowDefinitions.rows', true)\n\t\t);\n\t\tconst overlayWithHeaders = get(\n\t\t\tstate,\n\t\t\t'properties.overlayDefinition.showColumnHeaders',\n\t\t\tfalse\n\t\t);\n\t\tconst tableNode = querySelector(tableSelector, host);\n\n\t\tlet isTableRendered = false;\n\t\tif (isTableEmpty || overlayWithHeaders) {\n\t\t\tconst tableHeadNode = tableNode?.querySelector('thead');\n\t\t\tisTableRendered = !!tableHeadNode?.children.length;\n\t\t} else {\n\t\t\tconst tableBodyNode = tableNode?.querySelector('tbody');\n\t\t\tisTableRendered = !!tableBodyNode?.children.length;\n\t\t}\n\n\t\tif (isTableRendered) {\n\t\t\t/**\n\t\t\t * If any grouped row buttons are found within the table, then we\n\t\t\t * can conclude that the table has grouped rows. This is used for\n\t\t\t * allowing the user to focus on rows to expand or collapse them.\n\t\t\t */\n\t\t\tconst hasGroupRowButton = !!tableNode?.querySelector(\n\t\t\t\t'.group-row-toggle'\n\t\t\t);\n\n\t\t\t// If the behavior is already initialized, update the table\n\t\t\t// reference without moving the current focus.\n\t\t\tif (incomingRender) {\n\t\t\t\tdispatch(UPDATE_TABLE_REF, { shouldFocusFirst: false });\n\n\t\t\t\tsetBehaviorState(updateState, {\n\t\t\t\t\tincomingRender: false,\n\t\t\t\t\thasGroupedRows: hasGroupRowButton,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If this is the first time the table has been rendered, we can\n\t\t\t// fully initialize the behavior\n\t\t\telse {\n\t\t\t\tdispatch(RESET_BEHAVIOR);\n\n\t\t\t\tsetBehaviorState(updateState, {\n\t\t\t\t\tisRendered: true,\n\t\t\t\t\thasGroupedRows: hasGroupRowButton,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * Clears out the focused cell, trapped cell, and refreshes the table reference\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const resetBehaviorEffect = (coeffects) => {\n\tconst { dispatch, state, updateState } = coeffects;\n\tconst { focusedCell, trappedCell, focusedCellActions } = getBehaviorState(\n\t\tstate\n\t);\n\n\tif (focusedCell && !trappedCell && !focusedCellActions?.exitCellTrap) {\n\t\tfocusedCell.node.removeAttribute('tabindex');\n\t\tsetBehaviorState(updateState, { focusedCell: undefined });\n\t}\n\tif (trappedCell && !focusedCell) {\n\t\tdeactivateFocusTrap('tableCell');\n\t\tsetBehaviorState(updateState, { trappedCell: undefined });\n\t}\n\n\tdispatch(UPDATE_TABLE_REF);\n};\n\n/**\n * Stores references to the table, row, cell, and tabbable nodes in the same structure as the table itself\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const updateTableRefEffect = (coeffects) => {\n\tconst { action, dispatch, host, updateState } = coeffects;\n\tconst { tableSelector, rowSelectors, cellSelectors } = getBehaviorOptions(\n\t\taction\n\t);\n\tconst {\n\t\tpayload: { shouldFocusFirst = true },\n\t} = action;\n\tconst tableHost = querySelector(tableSelector, host);\n\tif (!tableHost) return;\n\n\t/** @type {TableRef} */\n\tconst newTable = { node: tableHost, rows: [] };\n\n\tconst rows = tableHost.querySelectorAll(rowSelectors);\n\n\t/**\n\t * The rowSpanMap is used to handle cells with a rowspan > 0, where they\n\t * carry over into the next row and leave a pointer.\n\t */\n\t/** @type {Map<number, {pointerCell: TableCell, remainingLength: number}>} */\n\tconst rowSpanMap = new Map();\n\n\tfor (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n\t\t/** @type {TableRow} */\n\t\tconst row = {\n\t\t\tnode: rows[rowIndex],\n\t\t\ttype: rows[rowIndex].parentElement.tagName,\n\t\t\tcells: [],\n\t\t};\n\n\t\tconst cells = rows[rowIndex].querySelectorAll(cellSelectors);\n\n\t\tfor (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n\t\t\t/**\n\t\t\t * Before adding a cell node, we need to check and see if the cell\n\t\t\t * in the row above had a rowspan > 1, and add a pointer if so\n\t\t\t */\n\t\t\tconst rowSpanObj = rowSpanMap.get(row.cells.length);\n\t\t\tif (rowSpanObj) {\n\t\t\t\trow.cells.push(rowSpanObj.pointerCell);\n\t\t\t\trowSpanObj.remainingLength--;\n\n\t\t\t\tif (rowSpanObj.remainingLength === 0) {\n\t\t\t\t\trowSpanMap.delete(row.cells.length - 1);\n\t\t\t\t} else {\n\t\t\t\t\trowSpanMap.set(row.cells.length - 1, rowSpanObj);\n\t\t\t\t}\n\n\t\t\t\t// In order to not skip over cells, we don't increment the loop\n\t\t\t\tcellIndex--;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst colSpan = get(cells[cellIndex], 'colSpan', 1);\n\t\t\tconst rowSpan = get(cells[cellIndex], 'rowSpan', 1);\n\n\t\t\tconst cell = {\n\t\t\t\tnode: cells[cellIndex],\n\t\t\t};\n\n\t\t\trow.cells.push(cell);\n\n\t\t\t// Store the cell's location for reference when the node is clicked\n\t\t\tcell.node.setAttribute('data-nav-row', rowIndex);\n\t\t\tcell.node.setAttribute('data-nav-col', row.cells.length - 1);\n\n\t\t\tconst pointerCell = {\n\t\t\t\t...cell,\n\t\t\t\tpointer: {\n\t\t\t\t\trowIndex: rowIndex,\n\t\t\t\t\tcellIndex: row.cells.length - 1,\n\t\t\t\t\trowSpan,\n\t\t\t\t\tcolSpan,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * If the colspan of the cell is > 1, we can add the pointer\n\t\t\t * cells right after\n\t\t\t */\n\t\t\tif (colSpan !== 1) {\n\t\t\t\tfor (let x = 1; x < colSpan; x++) {\n\t\t\t\t\trow.cells.push(pointerCell);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * If the current cell has a rowspan > 1, we need to save it for\n\t\t\t * reference in the following rows where it will have an effect\n\t\t\t */\n\t\t\tif (rowSpan !== 1) {\n\t\t\t\trowSpanMap.set(pointerCell.pointer.cellIndex, {\n\t\t\t\t\tpointerCell,\n\t\t\t\t\tremainingLength: rowSpan - 1,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * If there are less nodes in this row than other rows, we have to\n\t\t\t * make sure that we don't miss any rowspans from the previous rows\n\t\t\t */\n\t\t\tlet rowSpanItem = rowSpanMap.get(row.cells.length);\n\t\t\twhile (rowSpanItem) {\n\t\t\t\trow.cells.push(rowSpanItem.pointerCell);\n\t\t\t\trowSpanItem.remainingLength--;\n\n\t\t\t\tif (rowSpanItem.remainingLength === 0) {\n\t\t\t\t\trowSpanMap.delete(row.cells.length - 1);\n\t\t\t\t} else {\n\t\t\t\t\trowSpanMap.set(row.cells.length - 1, rowSpanItem);\n\t\t\t\t}\n\n\t\t\t\trowSpanItem = rowSpanMap.get(row.cells.length);\n\t\t\t}\n\t\t}\n\n\t\tnewTable.rows.push(row);\n\t}\n\n\tsetBehaviorState(updateState, {\n\t\ttableRef: newTable,\n\t});\n\n\tif (shouldFocusFirst) dispatch(ALLOW_TABLE_FOCUS);\n};\n\n/**\n * Adds the ability for the first cell in the table to receive focus if we have cellToFocus it sets the focus to that, so that\n * the table can be reached via tabbing\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const allowTableFocusEffect = (coeffects) => {\n\tconst {\n\t\tstate,\n\t\tupdateState,\n\t\thost,\n\t\tdispatch,\n\t\tproperties: { cellEditingEnabled },\n\t} = coeffects;\n\tconst behaviorState = getBehaviorState(state);\n\tconst { tableRef, cellToFocus, focusedCellActions } = behaviorState;\n\tlet { focusedCell } = behaviorState;\n\n\t/**\n\t * Actions to perform for internal cell element changes\n\t */\n\tif (focusedCellActions?.exitCellTrap) {\n\t\tdispatch(EXIT_CELL_TRAP);\n\t\treturn;\n\t}\n\n\tif (cellToFocus) {\n\t\tconst { columnKey, cellIndex, rowPath, rowIndex } = cellToFocus;\n\t\tlet domQuery = '';\n\n\t\tif (columnKey) domQuery += `[data-column-key=\"${columnKey}\"]`;\n\t\telse if (cellIndex) domQuery += `[data-nav-col=\"${cellIndex}\"]`;\n\n\t\tif (rowPath != null) {\n\t\t\tdomQuery += `[data-row-path=\"${rowPath}\"]`;\n\t\t} else if (rowIndex != null) {\n\t\t\tdomQuery += `[data-nav-row=\"${rowIndex}\"]`;\n\t\t}\n\t\t/**\n\t\t * @type {HTMLElement|null|undefined} type - description\n\t\t */\n\t\tconst node = host.shadowRoot?.querySelector(domQuery);\n\t\tif (node)\n\t\t\tfocusedCell = {\n\t\t\t\trowIndex: rowIndex ?? Number(node.getAttribute('data-nav-row')),\n\t\t\t\tcellIndex: Number(node.getAttribute('data-nav-col')),\n\t\t\t\tnode: node,\n\t\t\t};\n\t}\n\tif (!focusedCell) {\n\t\tconst firstCellRef = getCellFromTableRef(tableRef, 0, 0);\n\t\tif (!firstCellRef?.node) return;\n\n\t\tfocusedCell = { rowIndex: 0, cellIndex: 0, node: firstCellRef.node };\n\t}\n\n\tfocusedCell.node.tabIndex = 0;\n\tif (cellToFocus) {\n\t\tfocusCellNode(focusedCell.node, coeffects);\n\t}\n\tsetBehaviorState(updateState, {\n\t\tfocusedCell,\n\t\tcellToFocus: undefined,\n\t});\n\n\t/**\n\t * Enter into cell trap by checking the flag\n\t */\n\tif (cellToFocus?.enterCellTrap) {\n\t\tdispatch(ENTER_CELL_TRAP);\n\t\tif (cellEditingEnabled)\n\t\t\thandleBulkFocusClick(coeffects, focusedCell.node);\n\t}\n};\n\n/**\n * Handles directional navigation when a relevant key is pressed\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const moveFocusEffect = (coeffects) => {\n\tconst { state } = coeffects;\n\tconst { focusedRow } = getBehaviorState(state);\n\n\t/**\n\t * The logic for navigating the table depends on if a row or a cell is\n\t * currently focused.\n\t */\n\tif (focusedRow) {\n\t\thandleRowMove(coeffects);\n\t} else {\n\t\thandleCellMove(coeffects);\n\t}\n};\n\n/**\n * Traps focus to within currently selected cell\n * And applies focus to the specified element\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const enterCellTrapEffect = ({ state, updateState, action }) => {\n\tconst {\n\t\ttableRef,\n\t\tfocusedCell: { rowIndex, cellIndex },\n\t} = getBehaviorState(state);\n\n\tconst { targetNode } = action.payload;\n\n\tconst { tabbableSelectors, directFocusSelectors } = getBehaviorOptions(\n\t\taction\n\t);\n\n\tconst cell = getCellFromTableRef(tableRef, rowIndex, cellIndex);\n\n\tif (!cell) return;\n\n\t/**\n\t * Find all tabbable elements within the cell, making sure to exclude any\n\t * elements that are disabled, as they can't receive browser focus.\n\t * @type {Array<HTMLElement>}\n\t */\n\tconst tabbables = shadowQuerySelectorAll(\n\t\tcell.node,\n\t\ttabbableSelectors\n\t).filter((/** @type {HTMLElement} */ el) => !el.hasAttribute('disabled'));\n\n\tif (!tabbables || !tabbables.length) {\n\t\tif (cell.node.classList.contains('html')) {\n\t\t\tconst scrollableContent = querySelector(\n\t\t\t\t'.html-cell-content',\n\t\t\t\tcell.node\n\t\t\t);\n\t\t\tif (scrollableContent) {\n\t\t\t\tscrollableContent.tabIndex = -1;\n\t\t\t\tscrollableContent.focus();\n\t\t\t\tsetBehaviorState(updateState, {\n\t\t\t\t\ttrappedCell: scrollableContent,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\ttabbables.forEach((node) => {\n\t\tnode.tabIndex = 0;\n\t});\n\n\tconst tabbableNodes = findTabbableNodes(cell.node).filter(\n\t\t(/** @type {HTMLElement} */ el) => el !== cell.node\n\t);\n\n\tactivateFocusTrap('tableCell', cell.node, {\n\t\tfirstElement: tabbableNodes[0],\n\t\tlastElement: tabbableNodes[tabbableNodes.length - 1],\n\t});\n\n\tlet nodeToFocus = tabbableNodes[0];\n\n\tif (targetNode) {\n\t\tnodeToFocus = targetNode;\n\t} else {\n\t\tdirectFocusSelectors?.forEach((selector) => {\n\t\t\tconst node = querySelector(selector, cell.node);\n\t\t\tif (node && tabbableNodes.includes(node)) nodeToFocus = node;\n\t\t});\n\t}\n\n\tnodeToFocus.focus();\n\n\tsetBehaviorState(updateState, { trappedCell: cell });\n};\n\n/**\n * Removes focus from within the cell and returns it to the table cell\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const exitCellTrapEffect = ({ state, updateState, action }) => {\n\tconst { trappedCell } = getBehaviorState(state);\n\tif (!trappedCell) return;\n\n\tconst {\n\t\tpayload: { shouldFocus = true },\n\t} = action;\n\n\tdeactivateFocusTrap('tableCell');\n\n\tif (shouldFocus) trappedCell.node.focus();\n\n\tsetBehaviorState(updateState, { trappedCell: undefined });\n};\n\n/**\n * Refreshes the focus of the cell to update the tabbable elements\n * to account for elements being removed/added\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const refreshCellTrapEffect = ({ state, updateState }) => {\n\tconst {\n\t\ttableRef,\n\t\tfocusedCell: { rowIndex, cellIndex },\n\t} = getBehaviorState(state);\n\n\tconst cell = getCellFromTableRef(tableRef, rowIndex, cellIndex);\n\tif (!cell) return;\n\n\tconst tabbableNodes = findTabbableNodes(cell.node).filter(\n\t\t(/** @type {HTMLElement} */ el) => el !== cell.node\n\t);\n\n\t// This method will deactivate the current focus trap and initialize it again\n\tactivateFocusTrap('tableCell', cell.node, {\n\t\tfirstElement: tabbableNodes[0],\n\t\tlastElement: tabbableNodes[tabbableNodes.length - 1],\n\t});\n\n\tsetBehaviorState(updateState, { trappedCell: cell });\n};\n\n/**\n * Handle a key being pressed by conditionally dispatching the move focus event\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const keydownHandlerEffect = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState,\n}) => {\n\tconst { trappedCell, tableRef, focusedCell, focusedRow } = getBehaviorState(\n\t\tstate\n\t);\n\tconst {\n\t\tdirectFocusSelectors,\n\t\ttabbableSelectors,\n\t\tpopoverTriggerClasses,\n\t} = getBehaviorOptions(action);\n\n\tconst event = get(action, 'payload.event', {});\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst componentPath = getComponentPath(path);\n\n\tconst fromTable = componentPath.includes(tableRef.node);\n\n\tconst cell =\n\t\tfocusedCell &&\n\t\tgetCellFromTableRef(\n\t\t\ttableRef,\n\t\t\tfocusedCell.rowIndex,\n\t\t\tfocusedCell.cellIndex\n\t\t);\n\n\t// Find if anywhere along the component path the current focused\n\t// element contains a popover and prevent up/down default movement\n\tconst isPopoverFocused = componentPath.some((node) => {\n\t\tif (!node.classList) return false;\n\n\t\treturn popoverTriggerClasses?.some((/** @type {string} */ popover) => {\n\t\t\treturn node.classList.contains(popover);\n\t\t});\n\t});\n\n\tconst isInputFocused = componentPath.some((node) => {\n\t\tif (!node.classList) return false;\n\n\t\treturn node.classList.contains('now-input');\n\t});\n\n\tconst isHTMLScrollCell = componentPath.some((node) => {\n\t\tif (!node.classList) return false;\n\n\t\treturn (\n\t\t\tnode.classList.contains('html') &&\n\t\t\tnode.getAttribute('aria-description')\n\t\t);\n\t});\n\n\tconst row = focusedRow && getRowFromTableRef(tableRef, focusedRow.rowIndex);\n\tconst nextRow = getNextRowFromTableRef(tableRef, focusedRow, focusedCell);\n\n\tif (!cell && !row) return;\n\n\tlet preventDefault = true;\n\tlet stopPropagation = true;\n\n\tswitch (event.key) {\n\t\tcase KEY.LEFT:\n\t\tcase KEY.ARROW_LEFT:\n\t\tcase KEY.RIGHT:\n\t\tcase KEY.ARROW_RIGHT:\n\t\t\t/** Left/Right nav inside a form input (eg in column filtering)\n\t\t\t * focused inside the input and not nav to a new cell\n\t\t\t */\n\t\t\tif (isInputFocused) {\n\t\t\t\tpreventDefault = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t// eslint-disable-next-line no-fallthrough\n\t\tcase KEY.UP:\n\t\tcase KEY.ARROW_UP:\n\t\tcase KEY.DOWN:\n\t\tcase KEY.ARROW_DOWN:\n\t\t\tif (isHTMLScrollCell) {\n\t\t\t\tpreventDefault = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/** Up/Down input causes a dropdown element to open so we\n\t\t\t *  want to prevent cell movement when the dropdown is focused\n\t\t\t */\n\t\t\tif (\n\t\t\t\tevent.key === KEY.ARROW_DOWN &&\n\t\t\t\tnextRow &&\n\t\t\t\tnextRow.node?.id?.toLocaleLowerCase().includes('loader')\n\t\t\t)\n\t\t\t\tbreak;\n\t\t\tif (isPopoverFocused) break;\n\t\t\tif (fromTable) {\n\t\t\t\tif (trappedCell)\n\t\t\t\t\tdispatch(EXIT_CELL_TRAP, { shouldFocus: false });\n\n\t\t\t\tdispatch(MOVE_FOCUS, {\n\t\t\t\t\tkey: KEY_MAP[event.key],\n\t\t\t\t\tshiftKey: event.shiftKey,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tpreventDefault = false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY.HOME:\n\t\tcase KEY.END:\n\t\tcase KEY.PAGE_UP:\n\t\tcase KEY.PAGE_DOWN:\n\t\t\tif (isHTMLScrollCell) {\n\t\t\t\tpreventDefault = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (fromTable) {\n\t\t\t\tif (trappedCell)\n\t\t\t\t\tdispatch(EXIT_CELL_TRAP, { shouldFocus: false });\n\n\t\t\t\tdispatch(MOVE_FOCUS, {\n\t\t\t\t\tkey: KEY_MAP[event.key],\n\t\t\t\t\tshiftKey: event.shiftKey,\n\t\t\t\t});\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY.SPACEBAR:\n\t\tcase KEY.SPACE:\n\t\tcase KEY.ENTER:\n\t\t\tif (\n\t\t\t\t!trappedCell &&\n\t\t\t\tcell?.node === focusedCell.node &&\n\t\t\t\tfromTable &&\n\t\t\t\t!event.shiftKey\n\t\t\t) {\n\t\t\t\tif (cell.node.classList.contains('html')) {\n\t\t\t\t\tconst scrollableCell = cell.node.querySelector(\n\t\t\t\t\t\t'.html-cell-content'\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\tscrollableCell &&\n\t\t\t\t\t\tscrollableCell.scrollHeight > cell.node.clientHeight\n\t\t\t\t\t) {\n\t\t\t\t\t\tcell.node.setAttribute(\n\t\t\t\t\t\t\t'aria-description',\n\t\t\t\t\t\t\t'This cell is scrollable. Press enter and then use up and down arrow keys to scroll. Press Esc to exit cell.'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdispatch(ENTER_CELL_TRAP);\n\t\t\t} else {\n\t\t\t\tpreventDefault = false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY.ESC:\n\t\tcase KEY.ESCAPE:\n\t\t\tif (trappedCell) {\n\t\t\t\tif (cell?.node && cell.node.classList.contains('html')) {\n\t\t\t\t\tconst scrollableCell = cell.node.querySelector(\n\t\t\t\t\t\t'.html-cell-content'\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\tscrollableCell &&\n\t\t\t\t\t\tscrollableCell.scrollHeight > cell.node.clientHeight\n\t\t\t\t\t) {\n\t\t\t\t\t\tcell.node.removeAttribute('aria-description');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdispatch(EXIT_CELL_TRAP);\n\t\t\t} else {\n\t\t\t\tpreventDefault = false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY.TAB:\n\t\t\tif (!trappedCell) {\n\t\t\t\tconst tabbables = shadowQuerySelectorAll(\n\t\t\t\t\ttableRef.node,\n\t\t\t\t\ttabbableSelectors\n\t\t\t\t);\n\n\t\t\t\tif (!tabbables || !tabbables.length) return;\n\n\t\t\t\tfor (let k = 0; k < tabbables.length; k++) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Actionable message button should be focusable all the time.\n\t\t\t\t\t * */\n\t\t\t\t\tif (\n\t\t\t\t\t\ttabbables[k].nodeName === 'BUTTON' &&\n\t\t\t\t\t\ttabbables[k]\n\t\t\t\t\t\t\t.getRootNode()\n\t\t\t\t\t\t\t.host.classList.contains(\n\t\t\t\t\t\t\t\tACTIONABLE_MESSAGE_BUTTON_CLASS\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\ttabbables[k].tabIndex = -1;\n\t\t\t\t\ttabbables[k].setAttribute('data-manualtabindex', 'true');\n\t\t\t\t}\n\n\t\t\t\tif (cell) {\n\t\t\t\t\tsetNewCellFocus({\n\t\t\t\t\t\tnewFocus: focusedCell,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tdirectFocusSelectors,\n\t\t\t\t\t\tshouldFocus: false,\n\t\t\t\t\t});\n\t\t\t\t} else if (row) {\n\t\t\t\t\tsetNewRowFocus({\n\t\t\t\t\t\tnewFocus: focusedRow,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tshouldFocus: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault = false;\n\t\t\tstopPropagation = false;\n\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tstopPropagation = false;\n\t\t\tbreak;\n\t}\n\n\tif (preventDefault) event.preventDefault();\n\tif (stopPropagation) event.stopPropagation();\n};\n\n/**\n * Responds to a mouse click within the now-list element\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const innerClickHandlerEffect = (coeffects) => {\n\tconst {\n\t\taction,\n\t\tstate,\n\t\tproperties: { cellEditingEnabled },\n\t} = coeffects;\n\n\tif (state?.popoverState?.popoverOpen) return;\n\n\tconst { trappedCell } = getBehaviorState(state);\n\tconst event = get(action, 'payload.event', {});\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\n\tconst activeElement = findActiveElement();\n\tconst selectedActiveElement = path.find((\n\t\t/** @type {HTMLElement} */ node\n\t) => {\n\t\t/** Now-date-time has an icon as part of the input that isn't selectable in the dom (an active element).\n\t\t * Clicking this icon when the focus is on another cell opens the popover, but doesn't set focus to the now-date-time component\n\t\t * Including this as an edge case for users who use both mouse and keyboard nav. Generic solution TBD.\n\t\t */\n\n\t\tif (node.tagName === 'NOW-DATE-TIME') {\n\t\t\tnode.focus();\n\t\t\treturn true;\n\t\t}\n\t\t// if an actual element isn't selected, activeElement will return document.body.\n\t\treturn node === activeElement && node !== document.body;\n\t});\n\n\tconst node = path.find((/** @type {HTMLElement} */ node) => {\n\t\treturn ['TH', 'TD'].includes(node.nodeName);\n\t});\n\n\tif (!node) return;\n\n\t/**\n\t * If the user clicks on the group row button of a row that already has\n\t * focus, then the focus does not need to change.\n\t */\n\tif (\n\t\tnode.querySelector('.group-row-toggle') &&\n\t\tnode.parentElement === findActiveElement()\n\t) {\n\t\treturn;\n\t}\n\n\t// Do nothing if the cell is already focused or trapped\n\tif (node === findActiveElement() || node === trappedCell?.node) return;\n\n\tfocusCellNode(node, coeffects, selectedActiveElement);\n\tif (cellEditingEnabled) handleBulkFocusClick(coeffects, node);\n};\n\n/**\n * Responds to a mouse click outside of the now-list element\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const outerClickHandlerEffect = ({ action, dispatch, state }) => {\n\tconst { tableRef, trappedCell } = getBehaviorState(state);\n\tconst { hoistedElements } = getBehaviorOptions(action);\n\tconst event = get(action, 'payload.event', {});\n\tconst path = event.composedPath ? event.composedPath() : event.path;\n\tconst componentPath = getComponentPath(path);\n\n\tconst clickFromTable = componentPath.includes(tableRef.node);\n\tconst clickFromHoist = hoistedElements\n\t\t? componentPath.some((elem) => hoistedElements.includes(elem.nodeName))\n\t\t: false;\n\n\t/**\n\t * If focus is currently trapped to a cell, we should only exit the trap if\n\t * the click is both outside the table and also not from a hoisted element,\n\t * such as a popover.\n\t */\n\tif (trappedCell && !clickFromTable && !clickFromHoist) {\n\t\tdispatch(EXIT_CELL_TRAP, { shouldFocus: false });\n\t}\n};\n\n/**\n * Clears the current cell focus and updates the table reference to handle changes to the component’s input\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const propChangeEffect = (coeffects) => {\n\tconst { action, dispatch } = coeffects;\n\tconst {\n\t\tshouldTriggerRerenderFn = shouldTriggerRerenderDefaultFn,\n\t} = getBehaviorOptions(action);\n\n\tif (shouldTriggerRerenderFn(coeffects)) {\n\t\tdispatch(RESET_BEHAVIOR);\n\t}\n};\n\n/**\n * Refocuses a cell or element inside of a cell if one was the target of a closed popover\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const popoverClosedEffect = (coeffects) => {\n\tconst {\n\t\taction,\n\t\tproperties: { cellEditingEnabled },\n\t} = coeffects;\n\tconst {\n\t\tpayload: { popoverTarget, popoverOpen },\n\t} = action;\n\n\tif (popoverOpen) return;\n\n\tif (popoverTarget && !['TH', 'TD'].includes(popoverTarget.nodeName)) {\n\t\tfocusPopoverTarget(coeffects, popoverTarget);\n\t\treturn;\n\t} else {\n\t\tif (popoverTarget.ariaDescribedBy.startsWith('cell-editing-label')) {\n\t\t\tfocusCellNode(popoverTarget, coeffects);\n\t\t} else focusPopoverTarget(coeffects);\n\t}\n\n\tif (cellEditingEnabled) handleBulkFocusClick(coeffects, popoverTarget);\n};\n/**\n * Prompt the behavior to update the table reference on the next render,\n * used when a change that will affect the table is incoming. For example, this\n * is used for responding to grouped row expand/collapse.\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const updateKeyboardNavEffect = ({ updateState }) => {\n\tsetBehaviorState(updateState, { incomingRender: true });\n};\n\n/**\n * Focuses the current focused cell or row as stored in the state.\n * This effect is used when focus is called on the list.\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const focusListEffect = (coeffects) => {\n\tconst {\n\t\taction,\n\t\tstate,\n\t\tupdateState,\n\t\tproperties: { virtualizedScrollEnabled },\n\t} = coeffects;\n\tconst { directFocusSelectors } = getBehaviorOptions(action);\n\tconst { focusedCell, focusedRow } = getBehaviorState(state);\n\n\tif (focusedCell) {\n\t\tsetNewCellFocus({\n\t\t\tnewFocus: focusedCell,\n\t\t\tupdateState,\n\t\t\tdirectFocusSelectors,\n\t\t\tshouldFocus: true,\n\t\t\tvirtualizedScrollEnabled,\n\t\t});\n\t} else if (focusedRow) {\n\t\tsetNewRowFocus({\n\t\t\tnewFocus: focusedRow,\n\t\t\tupdateState,\n\t\t\tshouldFocus: true,\n\t\t});\n\t}\n};\n","/**\n * Defines the Seismic behavior object, including the initial state, event\n * handlers, and actions handlers\n */\n\nimport { actionTypes } from '@servicenow/ui-core';\n\nimport {\n\tALLOW_TABLE_FOCUS,\n\tENTER_CELL_TRAP,\n\tEXIT_CELL_TRAP,\n\tREFRESH_CELL_TRAP,\n\tUPDATE_KEYBOARD_NAV,\n\tKEYBOARD_NAV_BEHAVIOR_NAME,\n\tMOVE_FOCUS,\n\tPOPOVER_CLOSED,\n\tRESET_BEHAVIOR,\n\tUPDATE_TABLE_REF,\n\tEMPTY_BULK_FOCUS,\n\tFOCUS_LIST,\n} from './constants';\nimport {\n\tallowTableFocusEffect,\n\tenterCellTrapEffect,\n\texitCellTrapEffect,\n\trefreshCellTrapEffect,\n\tupdateKeyboardNavEffect,\n\tinnerClickHandlerEffect,\n\tkeydownHandlerEffect,\n\tmoveFocusEffect,\n\touterClickHandlerEffect,\n\tpopoverClosedEffect,\n\tpropChangeEffect,\n\tresetBehaviorEffect,\n\ttableRenderedEffect,\n\tupdateTableRefEffect,\n\tfocusListEffect,\n} from './keyboardNavEffects';\n\nconst { COMPONENT_PROPERTY_CHANGED, COMPONENT_TREE_RENDERED } = actionTypes;\n\nexport default {\n\tname: KEYBOARD_NAV_BEHAVIOR_NAME,\n\tinitialState: {\n\t\tisRendered: false,\n\t\thasGroupedRows: false,\n\t\tincomingRender: false,\n\t\ttableRef: { rows: [] },\n\t\tfocusedCell: undefined,\n\t\tcellToFocus: undefined,\n\t\tbulkFocus: EMPTY_BULK_FOCUS,\n\t\ttrappedCell: undefined,\n\t\tfocusedRow: undefined,\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect: keydownHandlerEffect,\n\t\t},\n\t\t{\n\t\t\tevents: ['click'],\n\t\t\teffect: innerClickHandlerEffect,\n\t\t},\n\t\t{\n\t\t\tevents: ['contextmenu'],\n\t\t\teffect: innerClickHandlerEffect,\n\t\t},\n\t\t{\n\t\t\tevents: ['dblclick'],\n\t\t\teffect: innerClickHandlerEffect,\n\t\t},\n\t\t{\n\t\t\tevents: ['click'],\n\t\t\teffect: outerClickHandlerEffect,\n\t\t\ttarget: document,\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_TREE_RENDERED]: {\n\t\t\teffect: tableRenderedEffect,\n\t\t},\n\t\t[RESET_BEHAVIOR]: {\n\t\t\teffect: resetBehaviorEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[UPDATE_TABLE_REF]: {\n\t\t\teffect: updateTableRefEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[ALLOW_TABLE_FOCUS]: {\n\t\t\teffect: allowTableFocusEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[MOVE_FOCUS]: {\n\t\t\teffect: moveFocusEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[ENTER_CELL_TRAP]: {\n\t\t\teffect: enterCellTrapEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[EXIT_CELL_TRAP]: {\n\t\t\teffect: exitCellTrapEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[REFRESH_CELL_TRAP]: {\n\t\t\teffect: refreshCellTrapEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\t\teffect: propChangeEffect,\n\t\t},\n\t\t[POPOVER_CLOSED]: {\n\t\t\teffect: popoverClosedEffect,\n\t\t},\n\t\t[UPDATE_KEYBOARD_NAV]: {\n\t\t\teffect: updateKeyboardNavEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[FOCUS_LIST]: {\n\t\t\teffect: focusListEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n","import { selector as tabbableSelectors } from '@devsnc/sn-list-commons';\n\nimport behavior from './keyboardNavBehavior';\nimport { shouldTriggerRerender, focus } from './keyboardNavHelpers';\n\n/** @type {{behavior: any; options: KeyboardNavBehaviorOptions}} */\nconst keyboardNavBehavior = {\n\tbehavior,\n\toptions: {\n\t\ttableSelector: '>>> .now-list-table',\n\t\trowSelectors: 'tr:not(.is-hidden)',\n\t\tcellSelectors: 'th, td',\n\t\ttabbableSelectors: `[data-manualtabindex='true'], ${tabbableSelectors}`,\n\t\tpopoverTriggerClasses: [\n\t\t\t'now-dropdown',\n\t\t\t'now-date-time-input',\n\t\t\t'now-popover',\n\t\t\t'now-select',\n\t\t],\n\t\tdirectFocusSelectors: [\n\t\t\t'.row-selection-checkbox >>> input',\n\t\t\t'.row-drag now-button-iconic >>> button',\n\t\t\t'[data-test-id=\"groupToggle\"] >>> button',\n\t\t\t'button[data-html-group-toggle=\"true\"]',\n\t\t\t'.column-filtering-button-iconic >>> button',\n\t\t\t'now-input >>> input',\n\t\t\t'now-date-time >>> now-input-date-time >>> now-input >>> input',\n\t\t],\n\t\tscrollContainerSelector: '.scroll-container',\n\t\trerenderProperties: [\n\t\t\t'columnDefinitions',\n\t\t\t'rowDefinitions',\n\t\t\t'overlayDefinition',\n\t\t\t'popoverDefinition',\n\t\t],\n\t\thoistedElements: [\n\t\t\t'NOW-LIST-POPOVER-CELL-EDIT-CONTENT',\n\t\t\t'NOW-LIST-POPOVER-LIST-CONTENT',\n\t\t\t'NOW-LIST-POPOVER-TEXT-CONTENT',\n\t\t\t'NOW-LIST-POPOVER-CUSTOM-CONTENT',\n\t\t\t'NOW-DROPDOWN-LIST',\n\t\t],\n\t\tshouldTriggerRerenderFn: shouldTriggerRerender,\n\t},\n};\n\nexport default keyboardNavBehavior;\n\nexport { focus };\n","export const NOW_LIST_CELL_LINK_CLICKED = 'NOW_LIST#CELL_LINK_CLICKED';\nexport const NOW_LIST_GALLERY_CARD_CLICKED = 'NOW_LIST#GALLERY_CARD_CLICKED';\n","import isEmpty from 'lodash/isEmpty';\n\nimport logger from '../../shared/utils/logger';\nimport cellSelectors from '../../shared/utils/selectors/cellSelectors';\n\nimport { NOW_LIST_CELL_LINK_CLICKED } from './constants';\n\n/* EFFECTS */\n/**\n * dispatched when a link in a link type cell is clicked. (does not apply to URLs)\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst cellLinkClickedHandler = (coeffects) => {\n\tconst {\n\t\taction: { payload },\n\t\tdispatch,\n\t} = coeffects;\n\n\tconst actionName = cellSelectors.getValue(payload.cell);\n\n\tif (isEmpty(actionName)) {\n\t\tlogger.error(\n\t\t\t'No action to dispatch. Make sure the cell value is nonempty.'\n\t\t);\n\t} else {\n\t\tdispatch(actionName, payload);\n\t}\n};\n\nconst linkBehavior = {\n\tname: 'linkBehavior',\n\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[NOW_LIST_CELL_LINK_CLICKED]: {\n\t\t\teffect: cellLinkClickedHandler,\n\t\t},\n\t},\n};\n\nexport default linkBehavior;\n","export const SORTABLE_ACTION_PREFIX = 'NOW_LIST#ROW_REORDER#';\n\nexport const NOW_LIST_ROW_SORT_END = `${SORTABLE_ACTION_PREFIX}SORT_END`;\nexport const NOW_LIST_ROW_SORT_START = `${SORTABLE_ACTION_PREFIX}SORT_START`;\nexport const NOW_LIST_ROW_DROP_AREA_CHANGE = `${SORTABLE_ACTION_PREFIX}DROP_AREA_CHANGE`;\nexport const NOW_LIST_ROW_SORT_CANCELLED = `${SORTABLE_ACTION_PREFIX}SORT_CANCELLED`;\n\nexport const NOW_SORTABLE_UPDATE_BEHAVIOR = 'NOW_SORTABLE#UPDATE_BEHAVIOR';\nexport const ROWS_REORDERED = 'NOW_LIST#ROWS_REORDERED';\n\nexport const DRAG_CANCELLED = 'Drag cancelled.';\n\nexport const ROW_DRAG_HANDLE_CLASS = 'row-drag-handle';\n","export const ROW_CHECKBOX_INTERNAL_SET = 'ROW_CHECKBOX_INTERNAL_SET';\nexport const NOW_LIST_ROW_SELECT_TOGGLED = 'NOW_LIST#ROW_SELECT_TOGGLED';\nexport const NOW_LIST_SELECT_ALL_TOGGLED = 'NOW_LIST#SELECT_ALL_TOGGLED';\nexport const NOW_CHECKBOX_CHECKED_SET = 'NOW_CHECKBOX#CHECKED_SET';\n","import track from '@devsnc/ux-metrics';\n\nimport { NOW_LIST_COLUMNS_REORDERED } from '../columnDragDropBehavior/constants';\nimport { ROWS_REORDERED } from '../rowDragDropBehavior/constants';\nimport { ROW_CHECKBOX_INTERNAL_SET } from '../rowSelectionBehavior/constants';\nexport const SORT_COLUMN_EVENT = 'Sort Column';\nexport const COLUMN_REORDER_EVENT = 'Column Reorder';\nexport const ROWS_REORDER_EVENT = 'Row Reorder';\nexport const ROW_CHECKED = 'Row checked';\n\nexport const ASCENDING = 'ascending';\nexport const DESCENDING = 'descending';\n//Metrics\nexport const METRIC_TRACKED = 'NOW_LIST_METRIC_TRACKED';\nconst metricsBehavior = {\n\tname: 'metricsBehavior',\n\n\t/**@type {Now.ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[METRIC_TRACKED]: {\n\t\t\teffect(coeffects) {\n\t\t\t\tconst {\n\t\t\t\t\taction: {\n\t\t\t\t\t\tpayload: { eventName, metadata },\n\t\t\t\t\t},\n\t\t\t\t} = coeffects;\n\n\t\t\t\ttrack(coeffects, eventName, metadata);\n\t\t\t},\n\t\t\tstopPropagation: true,\n\t\t},\n\n\t\t[NOW_LIST_COLUMNS_REORDERED]: {\n\t\t\tinterceptors: [\n\t\t\t\t{\n\t\t\t\t\tafter(/** @type {any} */ context) {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\tcoeffects: {\n\t\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\t\tpayload: { newColumns },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} = context;\n\n\t\t\t\t\t\tdispatch(METRIC_TRACKED, {\n\t\t\t\t\t\t\teventName: COLUMN_REORDER_EVENT,\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\torder: newColumns,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn context;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t[ROWS_REORDERED]: {\n\t\t\tinterceptors: [\n\t\t\t\t{\n\t\t\t\t\tafter(/** @type {any} */ context) {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\tcoeffects: {\n\t\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\tdata: { movedRows },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} = context;\n\n\t\t\t\t\t\tdispatch(METRIC_TRACKED, {\n\t\t\t\t\t\t\teventName: ROWS_REORDER_EVENT,\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\torder: movedRows,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn context;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\t[ROW_CHECKBOX_INTERNAL_SET]: {\n\t\t\tinterceptors: [\n\t\t\t\t{\n\t\t\t\t\tafter(/** @type {any} */ context) {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\tcoeffects: {\n\t\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\t\tpayload: { rowKey, checked, rowIndex },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} = context;\n\t\t\t\t\t\tif (!Array.isArray(rowKey))\n\t\t\t\t\t\t\tdispatch(METRIC_TRACKED, {\n\t\t\t\t\t\t\t\teventName: ROW_CHECKED,\n\t\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\t\tNumber: rowKey,\n\t\t\t\t\t\t\t\t\tchecked,\n\t\t\t\t\t\t\t\t\trank: rowIndex,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn context;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport default metricsBehavior;\n","export const NOW_TEMPLATE_MESSAGE_EMPTY_STATE_ACTION_CLICKED =\n\t'NOW_TEMPLATE_MESSAGE_EMPTY_STATE#ACTION_CLICKED';\nexport const MESSAGE_OVERLAY_ACTION_CLICKED =\n\t'NOW_LIST#MESSAGE_OVERLAY_ACTION_CLICKED';\nexport const NOW_LOADER_ACTION_CLICKED = 'NOW_LOADER#ACTION_CLICKED';\nexport const LOADER_OVERLAY_ACTION_CLICKED =\n\t'NOW_LIST#LOADER_OVERLAY_ACTION_CLICKED';\n","import {\n\tNOW_TEMPLATE_MESSAGE_EMPTY_STATE_ACTION_CLICKED,\n\tMESSAGE_OVERLAY_ACTION_CLICKED,\n\tNOW_LOADER_ACTION_CLICKED,\n\tLOADER_OVERLAY_ACTION_CLICKED,\n} from './constants';\n\n/* EFFECTS */\n\n/**\n * emits an action when a button inside now-template-message is clicked\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const messageActionClickedHandler = (coeffects) => {\n\tconst { dispatch, action } = coeffects;\n\n\tdispatch(MESSAGE_OVERLAY_ACTION_CLICKED, action.payload);\n};\n\n/**\n * emits an action when a button inside now-loader is clicked\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const loaderActionClickedHandler = (coeffects) => {\n\tconst { dispatch, action } = coeffects;\n\n\tdispatch(LOADER_OVERLAY_ACTION_CLICKED, action.payload);\n};\n\nconst overlayBehavior = {\n\tname: 'overlayBehavior',\n\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[NOW_TEMPLATE_MESSAGE_EMPTY_STATE_ACTION_CLICKED]: {\n\t\t\teffect: messageActionClickedHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LOADER_ACTION_CLICKED]: {\n\t\t\teffect: loaderActionClickedHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default overlayBehavior;\n","import throttle from 'lodash/throttle';\n\nexport const NOW_LIST_SCROLLED = 'NOW_LIST#SCROLLED';\n\n/**\n * Event handler for now list. Will dispatch throttled scroll event\n *\n * @param {*} dispatch\n * @returns\n */\nexport const nowListScrollHandler = (dispatch) =>\n\tthrottle(() => {\n\t\tconst timestamp = Date.now();\n\t\tdispatch(NOW_LIST_SCROLLED, {\n\t\t\ttimestamp,\n\t\t});\n\t}, 200);\n","import { actionTypes } from '@servicenow/ui-core';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { NOW_LIST_SCROLLED } from '../../shared/utils/eventListeners';\nimport popoverSelectors from '../../shared/utils/selectors/popoverSelectors';\nimport { NOW_LIST_POPOVER_BUTTON_CLICKED } from '../cellEditingBehavior/constants';\nimport { POPOVER_CLOSED } from '../keyboardNavBehavior/constants';\nimport { ROW_HIGHLIGHT_DEACTIVATED } from '../rowBehavior/constants';\n\nimport {\n\tNOW_LIST_OPEN_POPOVER_INTERNAL,\n\tNOW_LIST_CLOSE_POPOVER_INTERNAL,\n\tNOW_LIST_POPOVER_CLOSED,\n\tNOW_LIST_POPOVER_OPENED,\n\tNOW_POPOVER_OPENED_SET,\n\tBEHAVIOR_STATE_PATH,\n} from './constants';\n\nconst { COMPONENT_PROPERTY_CHANGED, COMPONENT_TREE_RENDERED } = actionTypes;\n\n/**\n * Enum for target types.\n * @enum {string}\n */\nexport const targetTypes = {\n\tHEADER_TARGET: 'HEADER_TARGET',\n\tROW_TARGET: 'ROW_TARGET',\n\tMATCHER_TARGET: 'MATCHER_TARGET',\n\tINVALID_TARGET: 'INVALID_TARGET',\n};\n\nexport const popoverBehaviorHelpers = {\n\t/**\n\t * Returns the correct target type based on target position on the list.\n\t * @param {PopoverDefinition} popoverDefinition\n\t * @returns {targetTypes}\n\t */\n\tgetPopoverTargetType(popoverDefinition) {\n\t\tif (popoverSelectors.isHeaderTargetPosition(popoverDefinition)) {\n\t\t\treturn targetTypes.HEADER_TARGET;\n\t\t}\n\n\t\tif (popoverSelectors.isRowTargetPosition(popoverDefinition)) {\n\t\t\treturn targetTypes.ROW_TARGET;\n\t\t}\n\n\t\treturn targetTypes.INVALID_TARGET;\n\t},\n\n\t/**\n\t * Returns target element based on row and cell index\n\t * @param {PopoverDefinition} popoverDefinition\n\t * @param {Element | undefined} host\n\t * @returns {Element | undefined}\n\t */\n\tgetRowTarget(popoverDefinition, host) {\n\t\tconst rowIndex = popoverSelectors.getTargetRowIndex(popoverDefinition);\n\n\t\t// @ts-ignore\n\t\tconst row = host.shadowRoot.querySelector(\n\t\t\t`tbody tr:nth-child(${rowIndex})`\n\t\t);\n\n\t\tif (!row) return;\n\n\t\tconst cellIndex = popoverSelectors.getTargetCellIndex(\n\t\t\tpopoverDefinition\n\t\t);\n\n\t\tconst cell = row.querySelector(`td:nth-child(${cellIndex})`);\n\n\t\tif (!cell) return row;\n\n\t\treturn cell;\n\t},\n\n\t/**\n\t * Returns target element based on header row and cell index\n\t * @param {PopoverDefinition} popoverDefinition\n\t * @param {Element} host\n\t * @returns {Element | undefined}\n\t */\n\tgetHeaderTarget(popoverDefinition, host) {\n\t\tconst headerRowIndex = popoverSelectors.getHeaderTargetRowIndex(\n\t\t\tpopoverDefinition\n\t\t);\n\n\t\t// @ts-ignore\n\t\tconst headerRow = host.shadowRoot.querySelector(\n\t\t\t`thead tr:nth-child(${headerRowIndex})`\n\t\t);\n\n\t\tif (!headerRow) return;\n\n\t\tconst headerCellIndex = popoverSelectors.getHeaderTargetCellIndex(\n\t\t\tpopoverDefinition\n\t\t);\n\n\t\tconst headerCell = headerRow.querySelector(\n\t\t\t`th:nth-child(${headerCellIndex})`\n\t\t);\n\n\t\tif (!headerCell) return headerRow;\n\n\t\treturn headerCell;\n\t},\n\n\t/**\n\t * Returns popover target depending on target type\n\t * @param {targetTypes} targetType\n\t * @param {PopoverDefinition} popoverDefinition\n\t * @param {Element} host\n\t * @returns {Element | undefined}\n\t */\n\tgetPopoverTarget(targetType, popoverDefinition, host) {\n\t\tswitch (targetType) {\n\t\t\tcase targetTypes.HEADER_TARGET:\n\t\t\t\treturn this.getHeaderTarget(popoverDefinition, host);\n\t\t\tcase targetTypes.ROW_TARGET:\n\t\t\t\treturn this.getRowTarget(popoverDefinition, host);\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t},\n\n\t/**\n\t * Sets popover state and dispatches accordingly\n\t * @param {*} updateState\n\t * @param {*} dispatch\n\t * @param {boolean} popoverOpen\n\t * @param {Element} [popoverTarget]\n\t * @param {PopoverDefinition} [popoverDefinition]\n\t * @param {Context} [context]\n\t */\n\tsetPopoverState(\n\t\tupdateState,\n\t\tdispatch,\n\t\tpopoverOpen = false,\n\t\tpopoverTarget,\n\t\tpopoverDefinition,\n\t\tcontext\n\t) {\n\t\tconst column = context?.column;\n\t\tupdateState({\n\t\t\toperation: 'set',\n\t\t\tpath: 'popoverState',\n\t\t\tvalue: { popoverOpen, popoverTarget, popoverDefinition, context },\n\t\t});\n\n\t\t// Ensure focus returns if the target was a table cell\n\t\tdispatch(POPOVER_CLOSED, { popoverTarget, popoverOpen });\n\n\t\tconst actionToDispatch = popoverOpen\n\t\t\t? NOW_LIST_POPOVER_OPENED\n\t\t\t: NOW_LIST_POPOVER_CLOSED;\n\n\t\tdispatch(actionToDispatch, { column });\n\t},\n};\n\n/**\n * Component dom ree ready action handler. Handles a popover being provided when component is being initialized.\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const componentTreeRenderedActionHandler = (coeffects) => {\n\tconst {\n\t\tdispatch,\n\t\tproperties: { popoverDefinition },\n\t\thost,\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\n\tconst hasRendered = get(state, `${BEHAVIOR_STATE_PATH}.firstRender`, false);\n\n\tif (!hasRendered) {\n\t\tconst popoverTargetType = popoverBehaviorHelpers.getPopoverTargetType(\n\t\t\tpopoverDefinition\n\t\t);\n\n\t\tconst target = popoverBehaviorHelpers.getPopoverTarget(\n\t\t\tpopoverTargetType,\n\t\t\tpopoverDefinition,\n\t\t\thost\n\t\t);\n\n\t\tif (!target) return;\n\n\t\t/**\n\t\t * DEF0365982: The bounding client is 0 when the target element isn't\n\t\t * visible on the page, which means the popover won't position\n\t\t * correctly if we pass the target at this point. An instance of this\n\t\t * occurs when the component is used in a UIB page, since the loader\n\t\t * overlay blocks the component as the experience first loads.\n\t\t */\n\t\tconst { width, height } = target.getBoundingClientRect();\n\t\tif (width === 0 && height === 0) return;\n\n\t\tupdateState({\n\t\t\toperation: 'set',\n\t\t\tpath: `${BEHAVIOR_STATE_PATH}.firstRender`,\n\t\t\tvalue: true,\n\t\t});\n\n\t\tpopoverBehaviorHelpers.setPopoverState(\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\ttrue,\n\t\t\ttarget,\n\t\t\tpopoverDefinition\n\t\t);\n\t}\n};\n\n/**\n * Property changed effect handler. Row definitions are copied and if additional processing is added for computed values, they will be added here\n * Currently no processed values.\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const propertyChangedActionHandler = (coeffects) => {\n\t// On property change, we need to check the type and process accordingly\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name, value },\n\t\t},\n\t\thost,\n\t\tproperties: { popoverDefinition },\n\t\tupdateState,\n\t\tdispatch,\n\t} = coeffects;\n\n\tif (name !== 'popoverDefinition') return;\n\n\tif (isEmpty(value)) {\n\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t\treturn;\n\t}\n\n\tconst popoverTargetType = popoverBehaviorHelpers.getPopoverTargetType(\n\t\tpopoverDefinition\n\t);\n\n\tif (popoverTargetType === targetTypes.INVALID_TARGET) {\n\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t\treturn;\n\t}\n\n\tconst target = popoverBehaviorHelpers.getPopoverTarget(\n\t\tpopoverTargetType,\n\t\tpopoverDefinition,\n\t\thost\n\t);\n\n\tpopoverBehaviorHelpers.setPopoverState(\n\t\tupdateState,\n\t\tdispatch,\n\t\ttrue,\n\t\ttarget,\n\t\tpopoverDefinition\n\t);\n};\n\n/**\n * This effect handles the now-popover opened set action.\n * If popover config dismissable is set to false, this\n * function will not do anything\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const popoverOpenedSetEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { actionSource, value, from },\n\t\t},\n\t\tstate: { popoverState },\n\t\tdispatch,\n\t} = coeffects;\n\tconst { popoverOpen, popoverDefinition, popoverTarget } =\n\t\tpopoverState || {};\n\n\tif (from !== 'now-list') return;\n\n\tif (\n\t\tpopoverOpen &&\n\t\t!value &&\n\t\tpopoverSelectors.getDismissable(popoverDefinition)\n\t) {\n\t\tif (actionSource === 'escape-press' && popoverTarget) {\n\t\t\tpopoverTarget.focus();\n\t\t}\n\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t}\n};\n\n/**\n * This effect handles scroll actions on the list to check whether we should dismiss the popover or not on scroll\n * based on popover configuration\n * @param {Coeffects<Props, State>} coeffects\n */\nconst popoverTableScrollEffect = (coeffects) => {\n\tconst {\n\t\tstate: { popoverState },\n\t\tdispatch,\n\t} = coeffects;\n\n\tif (!popoverState) return;\n\n\tconst { popoverDefinition } = popoverState;\n\n\tconst dismissOnScroll = popoverSelectors.getDismissOnScroll(\n\t\tpopoverDefinition\n\t);\n\n\tif (dismissOnScroll) {\n\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t}\n};\n\n/**\n * This effect handles now-list popover button action. Will set internal state to\n * close the popover\n *\n * @param {Coeffects<Props, State>} coeffects\n */\nconst popoverButtonClickedEffect = (coeffects) => {\n\tconst {\n\t\tstate: {\n\t\t\tpopoverState: { popoverOpen, popoverDefinition },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tif (popoverOpen && popoverSelectors.getDismissable(popoverDefinition)) {\n\t\tdispatch(NOW_LIST_CLOSE_POPOVER_INTERNAL);\n\t}\n};\n\n/**\n * Handler for opening internal popover action dispatch\n * @param {Coeffects<Props, State>} coeffects\n */\nconst internalPopoverHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { popoverDefinition, popoverTarget, context },\n\t\t},\n\t\tupdateState,\n\t\tdispatch,\n\t} = coeffects;\n\n\t/** @type {HTMLElement} */\n\tconst target = popoverTarget?.current ?? popoverTarget;\n\n\tpopoverBehaviorHelpers.setPopoverState(\n\t\tupdateState,\n\t\tdispatch,\n\t\ttrue,\n\t\ttarget,\n\t\tpopoverDefinition,\n\t\tcontext\n\t);\n};\n\n/**\n * Handler for closing internal popover action dispatch\n * @param {Coeffects<Props, State>} coeffects\n */\nconst closeInternalPopoverHandler = (coeffects) => {\n\tconst {\n\t\tstate: { popoverState },\n\t\tupdateState,\n\t\tdispatch,\n\t} = coeffects;\n\tif (!popoverState?.popoverTarget) return;\n\tconst { popoverTarget, context } = popoverState;\n\tpopoverBehaviorHelpers.setPopoverState(\n\t\tupdateState,\n\t\tdispatch,\n\t\tfalse,\n\t\tpopoverTarget,\n\t\tundefined,\n\t\tcontext\n\t);\n\tdispatch(ROW_HIGHLIGHT_DEACTIVATED);\n};\n\nconst popoverDefinitionBehavior = {\n\tname: 'popoverDefinitionBehavior',\n\tinitialState: {\n\t\tpopoverState: {},\n\t},\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[COMPONENT_TREE_RENDERED]: {\n\t\t\teffect: componentTreeRenderedActionHandler,\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: { effect: propertyChangedActionHandler },\n\t\t[NOW_LIST_OPEN_POPOVER_INTERNAL]: {\n\t\t\teffect: internalPopoverHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_CLOSE_POPOVER_INTERNAL]: {\n\t\t\teffect: closeInternalPopoverHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_POPOVER_OPENED_SET]: {\n\t\t\teffect: popoverOpenedSetEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_SCROLLED]: {\n\t\t\teffect: popoverTableScrollEffect,\n\t\t},\n\t\t[NOW_LIST_POPOVER_BUTTON_CLICKED]: {\n\t\t\teffect: popoverButtonClickedEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default popoverDefinitionBehavior;\n","import { actionTypes } from '@servicenow/ui-core';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\n\nimport featureFlagSelectors from '../../shared/utils/selectors/featureFlagSelectors';\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\nimport { ROW_ACTION } from '../contextActionsBehavior/constants';\nimport {\n\tNOW_LIST_ROW_FOCUSED,\n\tROW_HIGHLIGHT_ACTIVATED,\n\tROW_HIGHLIGHT_DEACTIVATED,\n\tROW_FOCUSED_INTERNAL,\n\tROW_BLUR_INTERNAL,\n} from '../rowBehavior/constants';\n\nconst { hasRows, hasChildren } = rowSelectors;\nconst { COMPONENT_PROPERTY_CHANGED, COMPONENT_BOOTSTRAPPED } = actionTypes;\n\n/* STRING CONSTANTS */\nconst pathConstants = {\n\trowDefinitionsPath: 'rowDefinitions',\n\thasDuplicateRowKeys: 'hasDuplicateRowKeys',\n\trowIndexesMap: 'rowIndexesMap',\n};\n\n/* EFFECTS */\n\n/* HELPERS */\n\n/**\n * Rows to check for duplicate keys\n * @param {RowDefinitions} rowDefinitions\n */\nexport const hasDuplicateRowKeys = (rowDefinitions) => {\n\tconst map = new Set();\n\n\tconst rowKeyAlreadyExists = (/** @type {Row}} */ row) => {\n\t\tif (map.has(row.key)) {\n\t\t\treturn true;\n\t\t}\n\t\tmap.add(row.key);\n\n\t\tif (hasChildren(row)) {\n\t\t\tfor (let i = 0; i < (row.children?.length || 0); i++) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tif (rowKeyAlreadyExists(row.children[i])) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tif (!hasRows(rowDefinitions)) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < rowDefinitions.rows.length; i++) {\n\t\tif (rowKeyAlreadyExists(rowDefinitions.rows[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\n/**\n * Get row indexes map\n * @param {RowDefinitions} rowDefinitions\n */\nexport const getRowIndexesMap = (rowDefinitions) => {\n\t/**@type {any} */\n\tconst rowIndexesMap = {};\n\tconst rows = rowSelectors.getRows(rowDefinitions);\n\n\tvar flattenedRowKeys = rowSelectors.getAllKeysInOrder(rows);\n\tflattenedRowKeys.forEach((rowKey, index) => {\n\t\trowIndexesMap[rowKey] = index;\n\t});\n\treturn rowIndexesMap;\n};\n\n/**\n * Property changed effect handler. Row definitions are copied and if additional processing is added for computed values, they will be added here\n * Currently no processed values.\n * @param {Coeffects<Props, State>} coeffects\n */\nconst propertyChangedActionHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name, value, previousValue },\n\t\t},\n\t\tupdateState,\n\t\tproperties: { rowDefinitions },\n\t} = coeffects;\n\n\tif (name !== 'rowDefinitions') return;\n\n\tif (isEqual(value, previousValue)) return;\n\n\tif (isEmpty(value)) {\n\t\treturn updateState({\n\t\t\tpath: pathConstants.rowDefinitionsPath,\n\t\t\tvalue: {},\n\t\t\toperation: 'set',\n\t\t});\n\t}\n\n\tupdateState([\n\t\t{\n\t\t\tpath: pathConstants.rowDefinitionsPath,\n\t\t\tvalue: cloneDeep(value),\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: pathConstants.hasDuplicateRowKeys,\n\t\t\tvalue: hasDuplicateRowKeys(value),\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: pathConstants.rowIndexesMap,\n\t\t\tvalue: getRowIndexesMap(rowDefinitions),\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n};\n\n/**\n * Component bootstrapped for rowBehavior. Similar to propertyChanged handler. Will clone prop and process if necessary\n * @param {Coeffects<Props, State>} coeffects\n */\nconst componentBootstrappedEffect = (coeffects) => {\n\tconst {\n\t\tproperties: { rowDefinitions },\n\t} = coeffects;\n\n\tif (!rowDefinitions) return;\n\n\tcoeffects.updateState([\n\t\t{\n\t\t\tpath: pathConstants.rowDefinitionsPath,\n\t\t\tvalue: cloneDeep(rowDefinitions),\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t},\n\t\t{\n\t\t\tpath: pathConstants.hasDuplicateRowKeys,\n\t\t\tvalue: hasDuplicateRowKeys(rowDefinitions),\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t},\n\t\t{\n\t\t\tpath: pathConstants.rowIndexesMap,\n\t\t\tvalue: getRowIndexesMap(rowDefinitions),\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t},\n\t]);\n};\n\n/**\n * Handles setting active state on a row when a user is about to click a row action or checkbox\n * @param {Coeffects<Props,State>} coeffects\n */\nconst rowHighlightActivatedHandler = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\tproperties: { rowDefinitions, selectionEnabled },\n\t\taction: {\n\t\t\tpayload: { rowKey },\n\t\t},\n\t\tstate: { activeRowKey },\n\t} = coeffects;\n\n\tconst featureFlags = { selectionEnabled };\n\n\tif (\n\t\trowKey &&\n\t\tactiveRowKey != rowKey &&\n\t\t(rowSelectors.hasRowActionsWithItems(rowDefinitions) ||\n\t\t\tfeatureFlagSelectors.getSelectionEnabled(featureFlags))\n\t) {\n\t\tupdateState({\n\t\t\tpath: 'activeRowKey',\n\t\t\tvalue: rowKey,\n\t\t\toperation: 'set',\n\t\t});\n\t}\n};\n\n/**\n * Handles removing active state on a row.\n * @param {Coeffects<Props,State>} coeffects\n */\nconst rowHighlightDeactivatedHandler = (coeffects) => {\n\tconst { updateState, state } = coeffects;\n\n\tconst popoverOpen = get(state, 'popoverState.popoverOpen', false);\n\tconst typeOfAction = get(state, 'popoverState.context.typeOfAction', '');\n\t// when rowActions popover is open, we shouldn't reset the state\n\tif (!popoverOpen || typeOfAction !== ROW_ACTION) {\n\t\tupdateState({\n\t\t\tpath: 'activeRowKey',\n\t\t\tvalue: null,\n\t\t\toperation: 'set',\n\t\t});\n\t}\n};\n\n/**\n * When row is blurred reset focusedRowKey\n * @param {Coeffects<Props,State>} coeffects\n */\nconst rowBlurHandler = (coeffects) => {\n\tconst { updateState } = coeffects;\n\n\tupdateState({\n\t\tpath: 'focusedRowKey',\n\t\tvalue: null,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n};\n\n/**\n * Handles row focus and dispatch an action when any of the cell inside row is focused or clicked\n * @param {Coeffects<Props,State>} coeffects\n */\nconst rowFocusHandler = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\tdispatch,\n\t\taction: {\n\t\t\tpayload: { rowKey },\n\t\t},\n\t\tproperties: { rowDefinitions },\n\t} = coeffects;\n\n\tconst row = rowSelectors.getRow(rowDefinitions.rows, rowKey);\n\n\tupdateState({\n\t\tpath: 'focusedRowKey',\n\t\tvalue: rowKey,\n\t\toperation: 'set',\n\t});\n\n\tdispatch(NOW_LIST_ROW_FOCUSED, {\n\t\tcontext: {\n\t\t\trow,\n\t\t},\n\t});\n};\n\nconst rowDefinitionsBehavior = {\n\tname: 'rowDefinitionsBehavior',\n\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[COMPONENT_PROPERTY_CHANGED]: { effect: propertyChangedActionHandler },\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: componentBootstrappedEffect,\n\t\t},\n\t\t[ROW_HIGHLIGHT_ACTIVATED]: {\n\t\t\teffect: rowHighlightActivatedHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[ROW_FOCUSED_INTERNAL]: {\n\t\t\teffect: rowFocusHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[ROW_BLUR_INTERNAL]: {\n\t\t\teffect: rowBlurHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[ROW_HIGHLIGHT_DEACTIVATED]: {\n\t\t\teffect: rowHighlightDeactivatedHandler,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default rowDefinitionsBehavior;\n","import { seismicClone } from '../../commons';\nimport { DATA_COLUMN_CLASS } from '../../shared/views/table/tableBody/tableRow/rowCell/rowCellConstants';\n\n/**\n * The markup displayed in place of the item being dragged\n * @param {HTMLTableRowElement} srcEl - Source Placeholder\n * @returns {HTMLTableRowElement} tr - Row element to be displayed in place of the item being dragged\n */\nexport const rowDragSourcePlaceholder = (srcEl) => {\n\tvar tr = seismicClone(srcEl);\n\t// @ts-ignore\n\ttr.classList.add('row-drag-src-placeholder');\n\t// @ts-ignore\n\treturn tr;\n};\n\n/**\n * The markup displayed to indicate an area where the item can be dropped\n * @returns {HTMLTableRowElement} tr - Row element to indicate an area where the item can be dropped\n */\nexport const rowDragDestPlaceholder = () => {\n\tvar tr = document.createElement('tr');\n\ttr.classList.add('row-drag-dest-placeholder');\n\treturn tr;\n};\n\n/**\n * Representational markup to indicate the item being dragged\n * @param {HTMLTableRowElement} el - Clone element\n * @returns {HTMLTableRowElement} tr - Row element to indicate the item being dragged\n */\nexport const rowDragClone = (el) => {\n\tconst tr = document.createElement('tr');\n\ttr.classList.add('row-drag-clone');\n\ttr.style.width = `${el.offsetWidth}px`;\n\n\tconst dragHandleCell = el.cells[0];\n\tconst displayLabelCell = Array.from(el.cells).find((cell) =>\n\t\tcell.classList.contains(DATA_COLUMN_CLASS)\n\t);\n\n\tconst dragCellClone = dragHandleCell.cloneNode(true);\n\tconst displayLabelCellClone = displayLabelCell?.cloneNode(true);\n\n\ttr.appendChild(dragCellClone);\n\tdisplayLabelCellClone && tr.appendChild(displayLabelCellClone);\n\treturn tr;\n};\n","import { ROW_DRAG_HANDLE_CLASS, SORTABLE_ACTION_PREFIX } from './constants';\nimport {\n\trowDragDestPlaceholder,\n\trowDragSourcePlaceholder,\n\trowDragClone,\n} from './dragDropPlaceholders';\n\n/**\n * Update the default drag-drop configuration based on properties to now-list\n * @param {*} host - Host element\n * @returns {object} config - options for dynamic config\n */\nexport const dynamicConfig = (host) => {\n\tconst { rowDragDropEnabled } = host;\n\tconst config = {};\n\tconfig['dragSupport'] = rowDragDropEnabled;\n\tconfig['keyboardSupport'] = rowDragDropEnabled;\n\tif (host.scrollHeight !== host.clientHeight) {\n\t\tconfig['yScrollParent'] = 'now-list';\n\t} else {\n\t\tconfig['yScrollParent'] = '.scroll-container';\n\t}\n\treturn config;\n};\n\n// sortable internally uses interact js to handle drag and drop\nexport const sortableOptions = {\n\titems: 'table > tbody > tr', // draggable selector\n\tdropzone: 'tbody',\n\tfollowMouseForAutoScroll: true,\n\tactionPrefix: SORTABLE_ACTION_PREFIX,\n\tlistOrder: 'vertical',\n\tyScrollParent: '.scroll-container', // supports autoscroll while dragging in local use .scroll-container\n\tcloneAppendTo: 'table',\n\tcustomSourcePlaceholder: rowDragSourcePlaceholder, // template to be shown on drag source\n\tcustomDestPlaceholder: rowDragDestPlaceholder, // template to be shown while dropping\n\tclone: rowDragClone,\n\tshouldNotHideTargetElement: true, // do not hide the target element while dragging\n\ttransitions: false,\n\thandle: `.${ROW_DRAG_HANDLE_CLASS}`,\n\tallowFrom: `.${ROW_DRAG_HANDLE_CLASS}`,\n\tshouldUpdate: () => false, // we are handling update in component tree rendered\n\tkeyboardSupport: true, // use space to select and use arrows to move and then enter to drop\n\tkeyboardTriggers: {\n\t\t/**\n\t\t * @param {KeyboardEvent} event\n\t\t */\n\t\tstart(event) {\n\t\t\treturn event.code === 'Space';\n\t\t},\n\t\t/**\n\t\t * @param {KeyboardEvent} event\n\t\t */\n\t\tend(event) {\n\t\t\treturn event.code === 'Enter';\n\t\t},\n\t},\n\tdragSupport: true, // initializes interactJS only if this is true\n\tlockAxis: 'y',\n\tdynamicConfig,\n};\n","import { actionTypes } from '@servicenow/ui-core';\nimport isEqual from 'lodash/isEqual';\nimport sortBy from 'lodash/sortBy';\nimport { t } from 'sn-translate';\n\nimport { nowSortable } from '../../commons';\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\nimport { setBehaviorState } from '../keyboardNavBehavior/keyboardNavHelpers';\n\nimport {\n\tNOW_LIST_ROW_DROP_AREA_CHANGE,\n\tNOW_LIST_ROW_SORT_END,\n\tNOW_LIST_ROW_SORT_START,\n\tNOW_LIST_ROW_SORT_CANCELLED,\n\tNOW_SORTABLE_UPDATE_BEHAVIOR,\n\tROWS_REORDERED,\n\tDRAG_CANCELLED,\n} from './constants';\nimport { sortableOptions } from './sortableOptions';\nconst {\n\tCOMPONENT_TREE_RENDERED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\nconst { getRowKey } = rowSelectors;\n\n/* STRING CONSTANTS */\nconst pathConstants = {\n\trowsPath: ['rowDefinitions', 'rows'],\n};\nconst ARIA_LIVE_REGION_TYPE = 'assertive';\n/**\n * @param {Now.Dispatch} dispatch\n * @param {string} message\n */\nfunction updateAriaLiveRegion(dispatch, message) {\n\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage,\n\t\ttype: ARIA_LIVE_REGION_TYPE,\n\t});\n}\n/**\n * @param {Coeffects<Props,State>} coeffects\n */\nconst handleRowDragStart = ({ state, action, dispatch }) => {\n\tconst {\n\t\tpayload: { sourceIndex },\n\t} = action;\n\tconst rows = rowSelectors.getRows(state.rowDefinitions);\n\n\tconst message = t(\n\t\t'Drag started. Current position: {0} of {1}. Press up and down to change the position of the row, enter to drop, and escape to cancel.',\n\t\tsourceIndex + 1,\n\t\trows.length\n\t);\n\tupdateAriaLiveRegion(dispatch, message);\n};\n/**\n * @param {Coeffects<Props,State>} coeffects\n */\nconst handleRowDragDropAreaChange = ({ action, dispatch }) => {\n\tconst {\n\t\tpayload: { newPosition },\n\t} = action;\n\tconst message = t('Row {0}', newPosition + 1);\n\tupdateAriaLiveRegion(dispatch, message);\n};\n/**\n * Drop cancel handler: Triggered when escape is pressed.\n * @param {Coeffects<Props,State>} coeffects\n */\nconst handleRowDragDropCancel = ({ dispatch }) => {\n\tconst message = t(DRAG_CANCELLED);\n\tupdateAriaLiveRegion(dispatch, message);\n};\n/**\n * Drop handler: Triggered when a row is dropped in a table.\n * @param {Coeffects<Props,State>} coeffects - Dispatch function to emit an action\n */\nconst handleRowDrop = ({ state, action, dispatch, updateState }) => {\n\tlet {\n\t\tpayload: { destinationIndex },\n\t} = action;\n\tconst {\n\t\tpayload: { sourceIndex },\n\t} = action;\n\n\tconst rows = rowSelectors.getRows(state.rowDefinitions);\n\tconst rowsBeforeUpdate = rows.map(getRowKey);\n\tconst movedItem = rows[sourceIndex];\n\tconst movedRows = [getRowKey(movedItem)];\n\t// when dragging from top to bottom as we are removing the source row, we need to consider the source row too and substact that from the destinationIndex\n\tif (destinationIndex > sourceIndex) {\n\t\tdestinationIndex--;\n\t}\n\t// Remove at sourceIndex\n\trows.splice(sourceIndex, 1);\n\t// Add it at the destination index\n\trows.splice(destinationIndex, 0, movedItem);\n\n\tupdateState({\n\t\tpath: pathConstants.rowsPath.join('.'),\n\t\tvalue: [...rows],\n\t\toperation: 'set',\n\t});\n\n\tconst message = t(\n\t\t'Dropped. New position: {0} of {1}.',\n\t\tdestinationIndex + 1,\n\t\trows.length\n\t);\n\tupdateAriaLiveRegion(dispatch, message);\n\t// rowindex starts from header row in navigation behaviour so increasing it by 1\n\tsetBehaviorState(updateState, {\n\t\tisRendered: false,\n\t\tcellToFocus: { rowPath: `[${destinationIndex}]`, columnKey: 'rowDrag' },\n\t});\n\n\tconst rowsAfterUpdate = rows.map(getRowKey);\n\n\tdispatch(ROWS_REORDERED, {\n\t\tdata: {\n\t\t\trowsBeforeUpdate,\n\t\t\trowsAfterUpdate,\n\t\t\tmovedRows,\n\t\t},\n\t});\n};\n/**\n * hasNewRows: checks if any new rows added\n * @param {Coeffects<Props,State>} coeffects\n */\nexport const hasNewRows = (coeffects) => {\n\tconst {\n\t\tstate: { rowDefinitions: currentRowDefinitions },\n\t\taction: {\n\t\t\tpayload: {\n\t\t\t\tpreviousRenderState: { rowDefinitions: previousRowDefinitions },\n\t\t\t},\n\t\t},\n\t} = coeffects;\n\tif (isEqual(previousRowDefinitions, currentRowDefinitions)) return false;\n\tconst previousRows = rowSelectors.getRows(previousRowDefinitions) || [];\n\tconst currentRows = rowSelectors.getRows(currentRowDefinitions) || [];\n\n\tif (currentRows.length === previousRows.length) {\n\t\tconst currentRowsKeys = sortBy(currentRows.map(getRowKey), ['key']);\n\t\tconst previousRowsKeys = sortBy(previousRows.map(getRowKey), ['key']);\n\t\tif (isEqual(currentRowsKeys, previousRowsKeys)) return false;\n\t}\n\treturn true;\n};\n/* The following method is used to re-trigger/refresh the now-sortable initialization */\n/**\n * Re-trigger/refresh the now-sortable initialization\n * @param {Coeffects<Props,State>} coeffects\n */\nexport const refreshDragDrop = (coeffects) => {\n\tconst { dispatch } = coeffects;\n\tif (!hasNewRows(coeffects)) return;\n\t// we need to update sortable only on new rows addition\n\tdispatch(NOW_SORTABLE_UPDATE_BEHAVIOR);\n};\n\nconst rowDragDropBehavior = {\n\tname: 'rowDragDropBehavior',\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t...nowSortable.actionHandlers,\n\t\t[COMPONENT_TREE_RENDERED]: refreshDragDrop,\n\t\t[NOW_LIST_ROW_SORT_START]: {\n\t\t\teffect: handleRowDragStart,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_ROW_DROP_AREA_CHANGE]: {\n\t\t\teffect: handleRowDragDropAreaChange,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_ROW_SORT_END]: {\n\t\t\teffect: handleRowDrop,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[NOW_LIST_ROW_SORT_CANCELLED]: {\n\t\t\teffect: handleRowDragDropCancel,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default { behavior: rowDragDropBehavior, options: sortableOptions };\n","export const NOW_LIST_CONTEXT_ACTION_CLICKED =\n\t'NOW_LIST#CONTEXT_ACTION_CLICKED';\nexport const SN_LIST_GALLERY_GROUP_EXPANDED = 'SN_LIST_GALLERY#GROUP_EXPANDED';\nexport const NOW_LIST_GROUP_TOGGLED = 'NOW_LIST#GROUP_TOGGLED';\nexport const SN_LIST_GALLERY_GROUPS_EXPANDED =\n\t'SN_LIST_GALLERY#GROUPS_EXPANDED';\nexport const NOW_LIST_ALL_GROUPS_TOGGLED = 'NOW_LIST#ALL_GROUPS_TOGGLED';\nexport const SN_LIST_GALLERY_VIRTUALIZED_SCROLL_BOTTOM_REACHED =\n\t'SN_LIST_GALLERY#VIRTUALIZED_SCROLL_BOTTOM_REACHED';\nexport const NOW_LIST_VIRTUALIZED_SCROLL_BOTTOM_REACHED =\n\t'NOW_LIST#VIRTUALIZED_SCROLL_BOTTOM_REACHED';\nexport const NOW_LIST_ROW_CLICKED = 'NOW_LIST#ROW_CLICKED';\n","import { actionTypes } from '@servicenow/ui-core';\nimport { has, isArray, map } from 'lodash';\nimport difference from 'lodash/difference';\nimport flatten from 'lodash/flatten';\nimport get from 'lodash/get';\nimport includes from 'lodash/includes';\nimport isEmpty from 'lodash/isEmpty';\nimport values from 'lodash/values';\n\nimport { LAYOUT_OPTIONS } from '../../constants';\nimport { NOW_BUTTON_ICONIC_CLICKED } from '../../resources/constants';\nimport {\n\tSN_LIST_GALLERY_GROUP_EXPANDED,\n\tSN_LIST_GALLERY_GROUPS_EXPANDED,\n} from '../../shared/behaviors/actionConstants';\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\nimport { UPDATE_KEYBOARD_NAV } from '../keyboardNavBehavior/constants';\n\nimport {\n\tEXPAND_ALL_GROUPS,\n\tEXPAND_GROUP,\n\tNOW_LIST_ALL_GROUPS_TOGGLED,\n\tNOW_LIST_GROUP_TOGGLED,\n} from './constants';\n\nconst { COMPONENT_PROPERTY_CHANGED, COMPONENT_BOOTSTRAPPED } = actionTypes;\nconst {\n\tgetGroupedOrDefaultRowsWithChildren,\n\tgetRowKey,\n\thasChildren,\n\tgetAllGroupKeysRecursively,\n\tgetKeysOfChildren,\n\tcreateStateOnBootstrapForExpandedChildren,\n} = rowSelectors;\n\n/* EFFECTS */\n\n/**\n * Delegates to the component bootstrap behavior if the rowDefinitions have changed\n * @param {Coeffects<Props, State>} coeffects\n */\nconst propertyChangedActionHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name },\n\t\t},\n\t} = coeffects;\n\n\tif (name === 'rowDefinitions') {\n\t\tcomponentBootstrappedActionHandler(coeffects);\n\t}\n};\n\n/**\n * Component bootstrapped for rowGroupingBehavior. Get all groups expanded and individual groups expanded and store in state\n * @param {Coeffects<Props, State>} coeffects\n */\nconst componentBootstrappedActionHandler = (coeffects) => {\n\tconst {\n\t\tproperties: { rowDefinitions, expandAllGroups },\n\t\tupdateState,\n\t\tstate: { rowGroupingState },\n\t} = coeffects;\n\n\tif (!rowDefinitions) return;\n\n\tconst groupedRows = getGroupedOrDefaultRowsWithChildren(\n\t\trowDefinitions.rows\n\t);\n\tconst groupKeys = getAllGroupKeysRecursively(rowDefinitions);\n\n\tif (!groupedRows) return;\n\n\tconst expandedGroupsArray = groupedRows\n\t\t.filter((/** @type {Row} */ row) => row.isGroupExpanded)\n\t\t.map((/** @type {{ key: string; }} */ row) => row.key);\n\t// This is how we calculate groupIdsException, when expandAllGroups is true\n\t// we find difference between all groups keys with expanded group keys\n\t// which basically gives us collapsed ids and set it as exceptions. Similarly if\n\t// expandAllGroups is false, we set exceptions as expandedGroupsArray\n\tconst groupIdsException = expandAllGroups\n\t\t? difference(groupKeys, expandedGroupsArray)\n\t\t: [...expandedGroupsArray];\n\n\tconst expandedChildrenObject = get(\n\t\trowGroupingState,\n\t\t'expandedChildrenObject',\n\t\t{}\n\t);\n\n\tlet newExpandedGroupsArray = expandedGroupsArray;\n\n\tif (!isEmpty(expandedChildrenObject)) {\n\t\tconst allExpandedChildrenValues = flatten(\n\t\t\tvalues(expandedChildrenObject)\n\t\t);\n\t\tmap(expandedGroupsArray, (/** @type {string} */ expandedGroupKey) => {\n\t\t\tif (includes(allExpandedChildrenValues, expandedGroupKey)) {\n\t\t\t\tnewExpandedGroupsArray = newExpandedGroupsArray.filter(\n\t\t\t\t\t(item) => item !== expandedGroupKey\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcreateStateOnBootstrapForExpandedChildren(\n\t\t\trowDefinitions.rows,\n\t\t\trowGroupingState,\n\t\t\tundefined\n\t\t);\n\t}\n\n\tupdateState({\n\t\tpath: 'rowGroupingState',\n\t\tvalue: {\n\t\t\texpandAllGroups,\n\t\t\texpandedGroupsArray: newExpandedGroupsArray,\n\t\t\tgroupIdsException,\n\t\t\texpandedChildrenObject: expandedChildrenObject,\n\t\t},\n\t\toperation: 'set',\n\t});\n};\n\n/**\n * Handles expanding/collapsing individual rows\n * @param {Coeffects<Props,State>} coeffects\n */\nconst handleSingleGroupToggle = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\taction: {\n\t\t\tpayload: { row },\n\t\t},\n\t\tdispatch,\n\t\tproperties: { layout },\n\t\tstate: { rowGroupingState },\n\t} = coeffects;\n\tconst rowKey = getRowKey(row);\n\tconst {\n\t\texpandAllGroups,\n\t\tgroupIdsException,\n\t\texpandedChildrenObject,\n\t} = rowGroupingState;\n\tlet { expandedGroupsArray } = rowGroupingState;\n\n\tlet expanded = false;\n\tlet exceptions = groupIdsException;\n\n\t// if individual group row is collapsed, we remove the key from expandedGroupsArray\n\tif (includes(expandedGroupsArray, rowKey)) {\n\t\tlet /** @type {Array<string | undefined>} */ groupRowKeys = []; // stores all row keys of children plus itself\n\t\tconst /** @type {Array<string>} */ remainingExpandedGroupKeys = [];\n\t\tif (hasChildren(row)) {\n\t\t\tgroupRowKeys = getKeysOfChildren(row.children);\n\t\t}\n\t\tgroupRowKeys.push(rowKey);\n\n\t\tmap(expandedGroupsArray, (/** @type {string} */ expandedGroupKey) => {\n\t\t\t// if there is any already expanded children of that parent, we push it to expandedChildrenObject\n\t\t\tif (includes(groupRowKeys, expandedGroupKey)) {\n\t\t\t\tif (expandedChildrenObject) {\n\t\t\t\t\tif (!has(expandedChildrenObject, rowKey)) {\n\t\t\t\t\t\texpandedChildrenObject[rowKey] = [];\n\t\t\t\t\t}\n\t\t\t\t\tif (isArray(expandedChildrenObject[rowKey])) {\n\t\t\t\t\t\texpandedChildrenObject[rowKey].push(expandedGroupKey);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Pushing rest of the expanded items back into array\n\t\t\t\tremainingExpandedGroupKeys.push(expandedGroupKey);\n\t\t\t}\n\t\t});\n\t\texpandedGroupsArray = remainingExpandedGroupKeys;\n\t} else {\n\t\t// if individual group row is expanded, we add the key from expandedGroupsArray.\n\t\t// We concat the state of previously expanded children and reset the value.\n\t\tif (has(expandedChildrenObject, rowKey)) {\n\t\t\texpandedGroupsArray = [\n\t\t\t\t...expandedGroupsArray,\n\t\t\t\t...expandedChildrenObject[rowKey],\n\t\t\t];\n\t\t\texpandedChildrenObject[rowKey] = [];\n\t\t}\n\t\texpandedGroupsArray.push(rowKey);\n\t\texpanded = true;\n\t}\n\t// If expandAllGroups is true, and few groups are collapsed, we store those groupkeys in this array and vice versa\n\tif (includes(groupIdsException, rowKey)) {\n\t\texceptions = groupIdsException.filter(\n\t\t\t(/** @type {string} */ key) => rowKey !== key\n\t\t);\n\t} else {\n\t\texceptions.push(rowKey);\n\t}\n\n\tupdateState({\n\t\tpath: 'rowGroupingState',\n\t\tvalue: {\n\t\t\texpandedGroupsArray: expandedGroupsArray,\n\t\t\texpandAllGroups,\n\t\t\tgroupIdsException: exceptions,\n\t\t\texpandedChildrenObject,\n\t\t},\n\t\toperation: 'set',\n\t});\n\n\t/**\n\t * Update keyboard navigation, since the rows displayed have changed.\n\t */\n\tif (layout === LAYOUT_OPTIONS.LIST) dispatch(UPDATE_KEYBOARD_NAV);\n\n\tdispatch(NOW_LIST_GROUP_TOGGLED, {\n\t\tgroupContext: row,\n\t\tisExpanded: expanded,\n\t\tgroupIdsException: exceptions,\n\t\texpandedChildrenObject,\n\t});\n};\n\n/**\n * Handles expanding/collapsing all grouped rows\n * @param {Coeffects<Props,State>} coeffects\n */\nconst handleAllGroupsToggle = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\tproperties: { rowDefinitions, layout },\n\t\tdispatch,\n\t\tstate: {\n\t\t\trowGroupingState: { expandAllGroups },\n\t\t},\n\t} = coeffects;\n\n\tdispatch(NOW_LIST_ALL_GROUPS_TOGGLED, {\n\t\tisExpanded: !expandAllGroups,\n\t});\n\n\tif (expandAllGroups) {\n\t\tupdateState({\n\t\t\tpath: 'rowGroupingState',\n\t\t\tvalue: {\n\t\t\t\texpandAllGroups: !expandAllGroups,\n\t\t\t\texpandedGroupsArray: [],\n\t\t\t\tgroupIdsException: [],\n\t\t\t},\n\t\t\toperation: 'set',\n\t\t});\n\t} else {\n\t\t// when all groups are expanded, we get all groupkeys and set it to expandedGroupsArray, update state\n\t\tconst groupKeys = getAllGroupKeysRecursively(rowDefinitions);\n\t\tupdateState({\n\t\t\tpath: 'rowGroupingState',\n\t\t\tvalue: {\n\t\t\t\texpandAllGroups: !expandAllGroups,\n\t\t\t\texpandedGroupsArray: groupKeys,\n\t\t\t\tgroupIdsException: [],\n\t\t\t},\n\t\t\toperation: 'set',\n\t\t});\n\t}\n\n\t/**\n\t * Update keyboard navigation, since the rows displayed have changed.\n\t */\n\tif (layout === LAYOUT_OPTIONS.LIST) dispatch(UPDATE_KEYBOARD_NAV);\n};\n\n/**\n * Handles expanding/collapsing grouped rows\n * @param {Coeffects<Props,State>} coeffects\n */\nconst handleGroupToggle = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { type },\n\t\t},\n\t} = coeffects;\n\n\tif (!type) return;\n\n\tif (type === EXPAND_GROUP) {\n\t\thandleSingleGroupToggle(coeffects);\n\t} else if (type === EXPAND_ALL_GROUPS) {\n\t\thandleAllGroupsToggle(coeffects);\n\t}\n};\n\nconst rowGroupingBehavior = {\n\tname: 'rowGroupingBehavior',\n\tinitialState: {\n\t\texpandedChildrenObject: {},\n\t},\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[COMPONENT_PROPERTY_CHANGED]: { effect: propertyChangedActionHandler },\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: componentBootstrappedActionHandler,\n\t\t},\n\t\t[NOW_BUTTON_ICONIC_CLICKED]: {\n\t\t\teffect: handleGroupToggle,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[SN_LIST_GALLERY_GROUP_EXPANDED]: {\n\t\t\teffect: handleSingleGroupToggle,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[SN_LIST_GALLERY_GROUPS_EXPANDED]: {\n\t\t\teffect: handleAllGroupsToggle,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default rowGroupingBehavior;\n","export const ROW_HIGHLIGHTED_STATE_PATH =\n\t'behaviors.rowHighlightedBehavior.state';\nexport const TABLE_SELECTOR = '>>> .now-list-table';\nexport const SCROLL_CONTAINER_SELECTOR = '.scroll-container';\n","import get from 'lodash/get';\n\nimport logger from '../../shared/utils/logger';\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\nimport { querySelector } from '../keyboardNavBehavior/utils';\n\nimport {\n\tROW_HIGHLIGHTED_STATE_PATH,\n\tSCROLL_CONTAINER_SELECTOR,\n\tTABLE_SELECTOR,\n} from './constants';\n\nexport const rowHighlightedHelpers = {\n\t/**\n\t * Gets the behavior state from the larger component state object\n\t * @param  {StateWithProps<Props, State>} state\n\t * @return {RowHighlightedState}\n\t */\n\tgetBehaviorState(state) {\n\t\treturn get(state, ROW_HIGHLIGHTED_STATE_PATH, {});\n\t},\n\n\t/**\n\t * Gets selector for getting row element by its row key\n\t * @param  {string} key\n\t * @return {string}\n\t */\n\tgetRowSelectorByKey(key) {\n\t\treturn `tr[data-key=\"${key}\"]`;\n\t},\n\n\t/**\n\t * calculates the scroll behavior - smooth (animated) or not\n\t * if the scrolling distance is more than 4000 (approx height of 100 rows)\n\t * @param {number} distance the distance the total scroll will be\n\t * @returns\n\t */\n\tgetScrollBehavior(distance) {\n\t\treturn distance > 4000 ? 'auto' : 'smooth';\n\t},\n\n\t/**\n\t * scrolls down to a row until it is visible\n\t * when we scroll down a lot, the height of the table can grow during the scroll\n\t * because the amount to scroll is calculated based on the initial height, we\n\t * have after the scroll is done to see if more scrolling is needed\n\t * @param {Element} row the row which needs to be scrolled to if not visible\n\t * @param {Element} container the container to scroll\n\t * @param {number} wait wait time in ms before initial check of row visible\n\t * @param {'smooth' | 'auto'} scrollBehavior behavior to pass into scrollIntoView function\n\t * @param {number} initialDistance the initial distance calculated that the rows needs to be scrolled\n\t * @returns\n\t */\n\tasync scrollDownToRow(\n\t\trow,\n\t\tcontainer,\n\t\twait,\n\t\tscrollBehavior,\n\t\tinitialDistance\n\t) {\n\t\tlet counter = 0;\n\n\t\trow.scrollIntoView({\n\t\t\tblock: 'end',\n\t\t\tbehavior: scrollBehavior,\n\t\t});\n\n\t\treturn /** @type {Promise<void>} */ (new Promise((resolve) => {\n\t\t\tconst bottomRowToContainerBuffer = 5;\n\n\t\t\tlet previousScrollDistance = initialDistance;\n\t\t\tconst visibleCheckLoop = (/** @type {number} */ wait) =>\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\tconst cancel = () => {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t};\n\t\t\t\t\t\t// just in case something happens, dont want this running forever, force exit condition;\n\t\t\t\t\t\tif (counter > 30 || !row) return cancel();\n\n\t\t\t\t\t\tconst rowRectInner = row.getBoundingClientRect();\n\t\t\t\t\t\tconst scrollRect = container.getBoundingClientRect();\n\t\t\t\t\t\tif (!scrollRect) {\n\t\t\t\t\t\t\treturn cancel();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst newScrollDistance =\n\t\t\t\t\t\t\trowRectInner.bottom - scrollRect.bottom;\n\t\t\t\t\t\tconst previousScrollHasStopped =\n\t\t\t\t\t\t\tnewScrollDistance === previousScrollDistance;\n\t\t\t\t\t\tconst rowStillNotVisible =\n\t\t\t\t\t\t\tnewScrollDistance > bottomRowToContainerBuffer;\n\n\t\t\t\t\t\tif (rowStillNotVisible) {\n\t\t\t\t\t\t\tif (previousScrollHasStopped) {\n\t\t\t\t\t\t\t\trow.scrollIntoView({\n\t\t\t\t\t\t\t\t\tblock: 'end',\n\t\t\t\t\t\t\t\t\tbehavior: scrollBehavior,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpreviousScrollDistance = newScrollDistance;\n\t\t\t\t\t\t\tvisibleCheckLoop(wait);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn cancel();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tlogger.warning('Error scrolling to highlighted row', {\n\t\t\t\t\t\t\tex,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}\n\t\t\t\t}, wait);\n\t\t\tvisibleCheckLoop(wait);\n\t\t}));\n\t},\n\n\t/**\n\t * This function handles scrolling to a specific row by key\n\t * determine if the row is visible, and if not, scroll to it\n\t * @param {String} rowKeyToScroll\n\t * @param {HTMLElement} host\n\t */\n\tasync scrollRowIntoView(rowKeyToScroll, host) {\n\t\t/** @type HTMLElement */\n\t\tconst tableNode = querySelector(TABLE_SELECTOR, host);\n\t\tif (tableNode) {\n\t\t\t/** @type HTMLElement | null */\n\t\t\tconst rowToScroll = tableNode.querySelector(\n\t\t\t\tthis.getRowSelectorByKey(rowKeyToScroll)\n\t\t\t);\n\n\t\t\tif (rowToScroll) {\n\t\t\t\tconst scrollContainer = rowToScroll.closest(\n\t\t\t\t\tSCROLL_CONTAINER_SELECTOR\n\t\t\t\t);\n\t\t\t\tif (!scrollContainer) return;\n\n\t\t\t\tconst rowRect = rowToScroll.getBoundingClientRect();\n\t\t\t\tif (!rowRect) return;\n\t\t\t\tconst colHeaderNode = tableNode.querySelector('thead');\n\t\t\t\tif (!colHeaderNode) return;\n\n\t\t\t\tconst colHeaderRect = colHeaderNode.getBoundingClientRect();\n\t\t\t\tconst scrollContainerRect = scrollContainer.getBoundingClientRect();\n\n\t\t\t\tconst isRowAboveColumnHeader =\n\t\t\t\t\trowRect.top < colHeaderRect.bottom;\n\t\t\t\tconst isRowBelowScrollContainer =\n\t\t\t\t\trowRect.bottom > scrollContainerRect.bottom;\n\n\t\t\t\tif (isRowAboveColumnHeader) {\n\t\t\t\t\tconst scrollDistance = colHeaderRect.bottom - rowRect.top;\n\t\t\t\t\tscrollContainer.scrollTo({\n\t\t\t\t\t\ttop: scrollContainer.scrollTop - scrollDistance,\n\t\t\t\t\t\tbehavior: this.getScrollBehavior(scrollDistance),\n\t\t\t\t\t});\n\t\t\t\t} else if (isRowBelowScrollContainer) {\n\t\t\t\t\tconst scrollDistance =\n\t\t\t\t\t\trowRect.bottom - scrollContainerRect.bottom;\n\t\t\t\t\tconst scrollBehavior = this.getScrollBehavior(\n\t\t\t\t\t\tscrollDistance\n\t\t\t\t\t);\n\t\t\t\t\tconst scrollWaitTime = 100;\n\n\t\t\t\t\tawait this.scrollDownToRow(\n\t\t\t\t\t\trowToScroll,\n\t\t\t\t\t\tscrollContainer,\n\t\t\t\t\t\tscrollWaitTime,\n\t\t\t\t\t\tscrollBehavior,\n\t\t\t\t\t\tscrollDistance\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n};\n\n/**\n * Determine if there is a new highlighted row, if there\n * there are new highlighted rows, store reference to the first one\n * @param {RowDefinitions} rowDefinitions\n * @param {StateWithProps<Props, State>} state\n * @param {Now.UpdateStateFunction<State>} updateState\n */\nexport const checkIfNewHighlightedRows = (\n\trowDefinitions,\n\tstate,\n\tupdateState\n) => {\n\tconst behaviorState = rowHighlightedHelpers.getBehaviorState(state);\n\tconst previousHighlighted = behaviorState?.highlightedRowKeys;\n\t/**\n\t * @type {string | null}\n\t */\n\tlet rowKeyToScroll = null;\n\n\t// create Set of highlighted row keys to store in state,\n\t// compare new highlighted row keys to old keys to see if there is a new row being highlighted\n\tconst highlightedRowKeys =\n\t\trowSelectors.getAllHighlightedRowKeys(rowDefinitions?.rows).reduce(\n\t\t\t/**\n\t\t\t * @type {(keys: Set<string>, row: string) => Set<string>}\n\t\t\t */\n\t\t\t(keys, rowKey) => {\n\t\t\t\tkeys.add(rowKey);\n\t\t\t\t// Find the first highlighted row that is new, this will be target of scroll\n\t\t\t\tif (!rowKeyToScroll && !previousHighlighted?.has(rowKey)) {\n\t\t\t\t\trowKeyToScroll = rowKey;\n\t\t\t\t}\n\t\t\t\treturn keys;\n\t\t\t},\n\t\t\tnew Set()\n\t\t) || new Set();\n\n\tupdateState({\n\t\tpath: ROW_HIGHLIGHTED_STATE_PATH,\n\t\tvalue: {\n\t\t\t...behaviorState,\n\t\t\thighlightedRowKeys,\n\t\t\trowKeyToScroll,\n\t\t},\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n};\n","import { actionTypes } from '@servicenow/ui-core';\n\nimport { ROW_HIGHLIGHTED_STATE_PATH } from './constants';\nimport {\n\tcheckIfNewHighlightedRows,\n\trowHighlightedHelpers as helpers,\n} from './rowHighlightedHelpers';\n\nconst {\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\nconst { ROW_DEFINITIONS_PROP } = require('../../constants');\n\n/**\n * Check if new highlighted rows on initial render\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst componentDomTreeReadyEffect = (coeffects) => {\n\tconst {\n\t\tproperties: { rowDefinitions },\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\n\tcheckIfNewHighlightedRows(rowDefinitions, state, updateState);\n};\n\n/**\n * If there is highlighted row key (detect from previous rowDefinition prop change), make sure it is visible\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const componentRenderedEffect = async (coeffects) => {\n\tconst { host, state, updateState } = coeffects;\n\tconst behaviorState = helpers.getBehaviorState(state);\n\tconst { rowKeyToScroll = null } = behaviorState;\n\n\tif (rowKeyToScroll) {\n\t\tawait helpers.scrollRowIntoView(rowKeyToScroll, host);\n\n\t\tupdateState({\n\t\t\tpath: `${ROW_HIGHLIGHTED_STATE_PATH}.rowKeyToScroll`,\n\t\t\tvalue: null,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t});\n\t}\n};\n\n/**\n * if rowDefinitions have changed check if a new highlighted row needs handling\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const componentPropertyChanged = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name },\n\t\t},\n\t\tproperties: { rowDefinitions },\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\n\tif (name === ROW_DEFINITIONS_PROP) {\n\t\tcheckIfNewHighlightedRows(rowDefinitions, state, updateState);\n\t}\n};\n\nconst rowHighlightedBehavior = {\n\tname: 'rowHighlightedBehavior',\n\tinitialState: {\n\t\trowHighlightedState: {},\n\t},\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY]: {\n\t\t\teffect: componentDomTreeReadyEffect,\n\t\t},\n\t\t[COMPONENT_RENDERED]: {\n\t\t\teffect: componentRenderedEffect,\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\t\teffect: componentPropertyChanged,\n\t\t},\n\t},\n};\n\nexport default rowHighlightedBehavior;\n","import { actionTypes } from '@servicenow/ui-core';\nimport { get, isArray, set, unset, size, has, isEqual } from 'lodash';\n\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\nimport { ROW_TYPE_DEFAULT } from '../../typeSchemas/rowDefinitions/rowTypes/rowTypes';\n\nimport {\n\tROW_CHECKBOX_INTERNAL_SET,\n\tNOW_CHECKBOX_CHECKED_SET,\n\tNOW_LIST_ROW_SELECT_TOGGLED,\n\tNOW_LIST_SELECT_ALL_TOGGLED,\n} from './constants';\n\nconst { COMPONENT_BOOTSTRAPPED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\nconst { ROW_DEFINITIONS_PROP } = require('../../constants');\n\nexport const rowSelectionHelpers = {\n\t/**\n\t * Helper reducer to iterate through all rows (irregardless of grouped type) and\n\t * accumulate all of the enabled rows\n\t * @param {Array<Row>} enabledRows\n\t * @param {Row} row\n\t * @returns {Array<Row>}\n\t */\n\t_areAllRowsSelectedReducer(enabledRows, row) {\n\t\tconst rowType = rowSelectors.getRowType(row);\n\t\tconst isRowTypeDefault = rowType === ROW_TYPE_DEFAULT || !rowType;\n\n\t\tif (rowType === 'grouped' && row.children && row.children.length > 0) {\n\t\t\treturn row.children.reduce(\n\t\t\t\tthis._areAllRowsSelectedReducer.bind(this),\n\t\t\t\tenabledRows\n\t\t\t);\n\t\t}\n\n\t\tif (isRowTypeDefault && !get(row, 'selectionDisabled', false)) {\n\t\t\tenabledRows = enabledRows.concat(row);\n\t\t}\n\n\t\tif (isRowTypeDefault && row.children && row.children.length > 0) {\n\t\t\treturn row.children.reduce(\n\t\t\t\tthis._areAllRowsSelectedReducer.bind(this),\n\t\t\t\tenabledRows\n\t\t\t);\n\t\t}\n\n\t\treturn enabledRows;\n\t},\n\t/**\n\t * Selector to check if all rows are selected. TODO: Future enhancements of this logic.\n\t * Having to iterate through all of the rows every time we make a selection seems like bad logic\n\t * We should memoize all enabled rows so we aren't always iterating through.\n\t * @param {RowDefinitions} rowDefinitions\n\t * @param {object} selectedRows\n\t * @returns {boolean}\n\t */\n\tareAllRowsSelected(rowDefinitions, selectedRows) {\n\t\tif (!rowSelectors.hasRows(rowDefinitions)) return false;\n\n\t\tconst rows = rowSelectors.getRows(rowDefinitions);\n\t\tconst allEnabledRows = rows.reduce(\n\t\t\tthis._areAllRowsSelectedReducer.bind(this),\n\t\t\t[]\n\t\t);\n\n\t\treturn allEnabledRows.length === size(selectedRows);\n\t},\n\n\t/**\n\t * get all selected rows\n\t * @param {Row[]} rows\n\t * @param {object} selectedRowKeys object containing selected rows keys\n\t *\n\t * @returns {Row[]} array of selected rows\n\t */\n\tgetAllSelectedRows(rows = [], selectedRowKeys) {\n\t\treturn rows.filter((/** @type {Row} */ row) =>\n\t\t\thas(selectedRowKeys, row.key)\n\t\t);\n\t},\n\n\t/**\n\t * set row selection state on initial render\n\t * @param {RowDefinitions} rowDefinitions\n\t * @param {Now.UpdateStateFunction<State>} updateState object containing selected rows keys\n\t */\n\tsetInitialRowSelectionState(rowDefinitions, updateState) {\n\t\tconst selectedRows = rowSelectors.getInitialSelectedRows(\n\t\t\trowDefinitions\n\t\t);\n\t\tupdateState({\n\t\t\tpath: 'rowSelectionState',\n\t\t\tvalue: {\n\t\t\t\ttoggledSelectionRowIndex: -1,\n\t\t\t\tselectedRows,\n\t\t\t\tselectAllRows: rowSelectionHelpers.areAllRowsSelected(\n\t\t\t\t\trowDefinitions,\n\t\t\t\t\tselectedRows\n\t\t\t\t),\n\t\t\t},\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false,\n\t\t});\n\t},\n};\n\n/**\n * This effect handles when a user selects a single row/multiple rows,\n * it updates internal state of selected rows and dispatches NOW_LIST_ROW_SELECT_TOGGLED\n * @param {Coeffects<Props, State>} coeffects\n */\nconst rowSelectionEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload,\n\t\t\tpayload: {\n\t\t\t\tshiftKey,\n\t\t\t\tchecked,\n\t\t\t\trowIndex,\n\t\t\t\tallRowKeys,\n\t\t\t\tenableOnlySingleSelection,\n\t\t\t},\n\t\t},\n\t\tupdateState,\n\t\tstate: {\n\t\t\trowSelectionState: { selectedRows, toggledSelectionRowIndex },\n\t\t},\n\t\tproperties: { rowDefinitions },\n\t\tdispatch,\n\t} = coeffects;\n\n\tlet rowKey = get(payload, 'rowKey', '');\n\n\tif (shiftKey && toggledSelectionRowIndex >= 0) {\n\t\tconst startIndex = Math.min(rowIndex, toggledSelectionRowIndex);\n\t\tconst endIndex = Math.max(rowIndex, toggledSelectionRowIndex);\n\t\trowKey = allRowKeys.slice(startIndex, endIndex + 1);\n\t}\n\n\t(isArray(rowKey) ? rowKey : [rowKey]).forEach((\n\t\t/** @type {string} */ uniqueId\n\t) => {\n\t\tlet selectionDisabled = false;\n\t\t// on multiple row selection check if row selection is disableds\n\t\tconst row = rowSelectors.getRow(rowDefinitions.rows, uniqueId);\n\t\tselectionDisabled = rowSelectors.getSelectionDisabledForParticularRow(\n\t\t\trow\n\t\t);\n\n\t\tif (!selectionDisabled) {\n\t\t\tif (checked) set(selectedRows, [uniqueId], row);\n\t\t\telse unset(selectedRows, [uniqueId]);\n\t\t}\n\t});\n\n\tlet updatedSelectedRows = {};\n\tif (enableOnlySingleSelection) {\n\t\tconst { [rowKey]: row } = selectedRows;\n\t\tupdatedSelectedRows = row\n\t\t\t? {\n\t\t\t\t\t[rowKey]: row,\n\t\t\t  }\n\t\t\t: {};\n\t} else {\n\t\tupdatedSelectedRows = selectedRows;\n\t}\n\n\tupdateState({\n\t\tpath: 'rowSelectionState',\n\t\tvalue: {\n\t\t\ttoggledSelectionRowIndex: rowIndex,\n\t\t\tselectedRows: updatedSelectedRows,\n\t\t\tselectAllRows: rowSelectionHelpers.areAllRowsSelected(\n\t\t\t\trowDefinitions,\n\t\t\t\tupdatedSelectedRows\n\t\t\t),\n\t\t},\n\t\toperation: 'set',\n\t});\n\n\tdispatch(NOW_LIST_ROW_SELECT_TOGGLED, {\n\t\tvalue: rowKey,\n\t\tchecked,\n\t\tselectedRows: updatedSelectedRows,\n\t});\n};\n\n/**\n * This effect handles Select All Checkbox\n * it updates internal state of selected rows and dispatches NOW_LIST_SELECT_ALL_TOGGLED\n * @param {Coeffects<Props, State>} coeffects\n */\nconst allRowsSelectionEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { checked, allRowKeys, isSelectAllCheckbox },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tif (isSelectAllCheckbox) {\n\t\tdispatch(ROW_CHECKBOX_INTERNAL_SET, {\n\t\t\trowKey: allRowKeys,\n\t\t\tallRowKeys,\n\t\t\trowIndex: -1,\n\t\t\tchecked,\n\t\t});\n\n\t\tdispatch(NOW_LIST_SELECT_ALL_TOGGLED, {\n\t\t\tisChecked: checked,\n\t\t});\n\t}\n};\n\n/**\n * This effect sets initial state for row selection\n * @param {Coeffects<Props, State>} coeffects\n */\nconst componentBootstrappedEffect = (coeffects) => {\n\tconst {\n\t\tupdateState,\n\t\tproperties: { rowDefinitions },\n\t} = coeffects;\n\n\trowSelectionHelpers.setInitialRowSelectionState(\n\t\trowDefinitions,\n\t\tupdateState\n\t);\n};\n\n/**\n * This effect updates initial row selection state when rowDefinitions updates\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const componentPropertyChanged = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name, value, previousValue },\n\t\t},\n\t\tupdateState,\n\t\tproperties: { rowDefinitions },\n\t} = coeffects;\n\n\tif (isEqual(value, previousValue)) return;\n\n\tif (name === ROW_DEFINITIONS_PROP) {\n\t\tconst selectedRowsNew = rowSelectors.getInitialSelectedRows(value);\n\t\tconst selectAllRowsNew = rowSelectionHelpers.areAllRowsSelected(\n\t\t\tvalue,\n\t\t\tselectedRowsNew\n\t\t);\n\t\tconst selectedRowsOld = rowSelectors.getInitialSelectedRows(\n\t\t\tpreviousValue\n\t\t);\n\t\tconst selectAllRowsOld = rowSelectionHelpers.areAllRowsSelected(\n\t\t\tpreviousValue,\n\t\t\tselectedRowsOld\n\t\t);\n\n\t\t// DEF0488798 Set row selection state based off incoming rowDefinitions, only when selectRows or selectAllRows properties got changed\n\t\tif (\n\t\t\t!isEqual(selectedRowsNew, selectedRowsOld) ||\n\t\t\t!isEqual(selectAllRowsNew, selectAllRowsOld)\n\t\t) {\n\t\t\trowSelectionHelpers.setInitialRowSelectionState(\n\t\t\t\trowDefinitions,\n\t\t\t\tupdateState\n\t\t\t);\n\t\t}\n\t}\n};\n\nconst rowSelectionBehavior = {\n\tname: 'rowSelectionBehavior',\n\t/**@type {ActionHandlers<Props,State>} */\n\tactionHandlers: {\n\t\t[ROW_CHECKBOX_INTERNAL_SET]: {\n\t\t\teffect: rowSelectionEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: componentBootstrappedEffect,\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\t\teffect: componentPropertyChanged,\n\t\t},\n\t\t[NOW_CHECKBOX_CHECKED_SET]: {\n\t\t\teffect: allRowsSelectionEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default rowSelectionBehavior;\n","export const ROWS_ENTERED_VIEW = 'VIRTUALIZED_SCROLL_ROWS_ENTERED_VIEW';\nexport const TOP_LOADER_ENTERED_VIEW = 'TOP_LOADER_ENTERED_VIEW';\nexport const BOTTOM_LOADER_ENTERED_VIEW = 'BOTTOM_LOADER_ENTERED_VIEW';\nexport const TOP_BOUND_ENTERED_VIEW = 'TOP_BOUND_ENTERED_VIEW';\nexport const BOTTOM_BOUND_ENTERED_VIEW = 'BOTTOM_BOUND_ENTERED_VIEW';\nexport const LONG_SCROLL_TRIGGERED = 'VIRTUALIZED_LONG_SCROLL_TRIGGERED'; // long scroll is when a user scrolls faster than the render rows with observers can keep up with.\nexport const SCROLL_TO_TOP_TRIGGERED = 'SCROLL_TO_TOP_TRIGGERED';\nexport const SHOW_SCROLL_TO_TOP_BUTTON = 'SHOW_SCROLL_TO_TOP_BUTTON';\nexport const HIDE_SCROLL_TO_TOP_BUTTON = 'HIDE_SCROLL_TO_TOP_BUTTON';\nexport const HANDLE_SCROLL_BOTTOM_REACHED = 'HANDLE_SCROLL_BOTTOM_REACHED';\nexport const RETRY_PREPARE_VIRTUALIZED_OBSERVER =\n\t'RETRY_PREPARE_VIRTUALIZED_OBSERVER';\nexport const VIRTUALIZED_SCROLL_BOTTOM_REACHED =\n\t'NOW_LIST#VIRTUALIZED_SCROLL_BOTTOM_REACHED';\nexport const VIRTUALIZED_LIST_BEHAVIOR = 'virtualizedListBehavior';\nexport const SCROLL_CONTAINER = '.scroll-container';\nexport const TABLE_BODY = 'tbody';\nexport const DEFAULT_ROW_HEIGHT = 41;\nexport const SCROLL_TO_TOP_START_ROW = 4;\nexport const SCROLL_BOTTOM_REACHED = 10;\nexport const RETRY = 3;\n","import { throttle } from 'lodash';\n\nimport {\n\tROWS_ENTERED_VIEW,\n\tTOP_LOADER_ENTERED_VIEW,\n\tBOTTOM_LOADER_ENTERED_VIEW,\n\tTOP_BOUND_ENTERED_VIEW,\n\tBOTTOM_BOUND_ENTERED_VIEW,\n\tLONG_SCROLL_TRIGGERED,\n\tSHOW_SCROLL_TO_TOP_BUTTON,\n\tHIDE_SCROLL_TO_TOP_BUTTON,\n\tHANDLE_SCROLL_BOTTOM_REACHED,\n} from './constants';\n\nexport const processEvents = async (\n\t/** @type {Array<IntersectionObserverEntry>} */ intersectionEvents,\n\t/** @type {VirtualizedObserver} */ instance\n) => {\n\tif (!instance.isEnabled) {\n\t\treturn;\n\t}\n\n\twhile (intersectionEvents.length > 0) {\n\t\tconst event = intersectionEvents.pop();\n\t\tlet intersectEvent = null;\n\n\t\tif (\n\t\t\tevent &&\n\t\t\t!event.isIntersecting &&\n\t\t\tevent.target === instance.scrollToTopRef\n\t\t) {\n\t\t\t// only show the scroll to top button when the element is in the DOM\n\t\t\t// when element is removed from the DOM, we do not want to show the scroll to top button\n\t\t\tif (event.target.isConnected) {\n\t\t\t\tif (event.target.className.includes('is-hidden')) {\n\t\t\t\t\tinstance.dispatch(); // reset the scroll to top button\n\t\t\t\t} else {\n\t\t\t\t\tinstance.dispatch(SHOW_SCROLL_TO_TOP_BUTTON);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (event && (event.isIntersecting || event.intersectionRatio > 0)) {\n\t\t\tswitch (event.target) {\n\t\t\t\tcase instance.topLoaderRef:\n\t\t\t\t\tintersectEvent = TOP_LOADER_ENTERED_VIEW;\n\t\t\t\t\tbreak;\n\t\t\t\tcase instance.bottomLoaderRef:\n\t\t\t\t\tintersectEvent = BOTTOM_LOADER_ENTERED_VIEW;\n\t\t\t\t\tbreak;\n\t\t\t\tcase instance.topBoundRef:\n\t\t\t\t\tintersectEvent = TOP_BOUND_ENTERED_VIEW;\n\t\t\t\t\tbreak;\n\t\t\t\tcase instance.bottomBoundRef:\n\t\t\t\t\tintersectEvent = BOTTOM_BOUND_ENTERED_VIEW;\n\t\t\t\t\tbreak;\n\t\t\t\tcase instance.scrollToTopRef:\n\t\t\t\t\tinstance.dispatch(HIDE_SCROLL_TO_TOP_BUTTON);\n\t\t\t\t\tcontinue;\n\t\t\t\tcase instance.endOfScrollReachedRef:\n\t\t\t\t\tinstance.dispatch(HANDLE_SCROLL_BOTTOM_REACHED);\n\t\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (intersectEvent) {\n\t\t\t\tinstance.dispatch(ROWS_ENTERED_VIEW, {\n\t\t\t\t\tintersectEvent,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// @ts-ignore\n\t\t\tif (instance.ghostRowObservedElements.has(event.target)) {\n\t\t\t\tconst {\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\t// @ts-ignore - dataset does exist on the target field which is a HTMLTableElement during run time\n\t\t\t\t\t\t// IntersectionObserverEntry target is set to element but during run time it is a HTMLTableElement\n\t\t\t\t\t\t// from our table.\n\t\t\t\t\t\tdataset: { key },\n\t\t\t\t\t},\n\t\t\t\t} = event;\n\t\t\t\tconst index = instance.ghostRowIdsToIndex.get(key);\n\t\t\t\tinstance.dispatch(LONG_SCROLL_TRIGGERED, {\n\t\t\t\t\tindex,\n\t\t\t\t});\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n};\n\nexport const handleIntersectionEvents = throttle(\n\t/** @type {(events: IntersectionObserverEntry[], instance: VirtualizedObserver) => void} */ (processEvents),\n\t300\n);\n","import { handleIntersectionEvents } from './virtualizedObserverUtils';\n\n// Each rendered subset of the row definitions list will create a new instance of this class, and destroy the previous one.\nexport class VirtualizedObserver {\n\t/**\n\t * @type {Element | null}\n\t */\n\ttopLoaderRef;\n\t/**\n\t * @type {Element | null}\n\t */\n\tbottomLoaderRef;\n\t/**\n\t * @type {Element | null}\n\t */\n\ttopBoundRef;\n\t/**\n\t * @type {Element | null}\n\t */\n\tscrollToTopRef;\n\t/**\n\t * @type {Element | null}\n\t */\n\tbottomBoundRef;\n\tdispatch;\n\t/**\n\t * @type {IntersectionObserver }\n\t */\n\tobserver;\n\t/**\n\t * @type {WeakSet<Element>}\n\t */\n\tobservedItems;\n\t/**\n\t * @type {Array<Element>}\n\t */\n\titemRefs;\n\t/**\n\t * @type {boolean}\n\t */\n\tisEnabled;\n\t/**\n\t * @type {boolean}\n\t */\n\tisTopLoaderVisible;\n\t/**\n\t * @type {boolean}\n\t */\n\tisBottomLoaderVisible;\n\t/**\n\t * @type {boolean}\n\t */\n\tisTopBoundVisible;\n\t/**\n\t * @type {boolean}\n\t */\n\tisBottomBoundVisible;\n\t/**\n\t * @type {Array<IntersectionObserverEntry>}\n\t */\n\tobservedEvents = [];\n\n\t/**\n\t * @type {Map<String,number>} ghostRowIdsToIndex - it is a map of TR element keys to their respective indexes in the rowDefinitions list\n\t */\n\tghostRowIdsToIndex;\n\t/**\n\t * @type {Set<Element>}\n\t */\n\tghostRowObservedElements;\n\n\tendOfScrollReachedRef;\n\n\t/**\n\t * @param {Element | null} topLoaderRef\n\t * @param {Element | null} bottomLoaderRef\n\t * @param {Element | null} topBoundRef\n\t * @param {Element | null} bottomBoundRef\n\t * @param {Element | null} scrollToTopRef\n\t * @param {Function} dispatch\n\t * @param {Map<String,number>} ghostRowIdsToIndex\n\t * @param {Set<Element>} ghostRowObservedElements\n\t * @param {Element | null} endOfScrollReachedRef\n\t * @param {string} rootMargin\n\t */\n\tconstructor(\n\t\ttopLoaderRef,\n\t\tbottomLoaderRef,\n\t\ttopBoundRef,\n\t\tbottomBoundRef,\n\t\tscrollToTopRef,\n\t\tdispatch,\n\t\tghostRowIdsToIndex,\n\t\tghostRowObservedElements,\n\t\tendOfScrollReachedRef,\n\t\trootMargin = '100px 0px 100px 0px'\n\t) {\n\t\tthis.ghostRowObservedElements = ghostRowObservedElements;\n\t\tthis.ghostRowIdsToIndex = ghostRowIdsToIndex;\n\t\tthis.isEnabled = true;\n\t\tthis.topLoaderRef = topLoaderRef;\n\t\tthis.bottomLoaderRef = bottomLoaderRef;\n\t\tthis.topBoundRef = topBoundRef;\n\t\tthis.bottomBoundRef = bottomBoundRef;\n\t\tthis.scrollToTopRef = scrollToTopRef;\n\t\tthis.endOfScrollReachedRef = endOfScrollReachedRef;\n\t\tthis.dispatch = dispatch;\n\n\t\tthis.isTopLoaderVisible = false;\n\t\tthis.isBottomLoaderVisible = false;\n\t\tthis.isTopBoundVisible = false;\n\t\tthis.isBottomBoundVisible = false;\n\n\t\tthis.observedItems = new WeakSet();\n\t\tthis.itemRefs = [];\n\t\tthis.observedEvents = [];\n\t\tthis.observerCallback = this.observerCallback.bind(this);\n\n\t\tthis.observer = new IntersectionObserver(this.observerCallback, {\n\t\t\troot: null, // null = viewport is the browser window\n\t\t\trootMargin,\n\t\t\tthreshold: [0], // Triggered when: Top of element (0), or Bottom of element (1), gets into the viewport\n\t\t});\n\t}\n\n\t/**\n\t * @param {boolean} enabled\n\t */\n\tsetEnabled(enabled) {\n\t\tthis.isEnabled = enabled;\n\t}\n\n\t/**\n\t * @param {Array<IntersectionObserverEntry>} intersectionEvents\n\t */\n\tobserverCallback(intersectionEvents) {\n\t\tif (!this.isEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tconst events = intersectionEvents;\n\n\t\thandleIntersectionEvents(events, this);\n\t}\n\n\t/**\n\t * @param {Element | null} itemRef\n\t */\n\tobserveItem(itemRef) {\n\t\tif (!itemRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.observedItems.has(itemRef)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.observer.observe(itemRef);\n\t\tthis.observedItems.add(itemRef);\n\t\tthis.itemRefs.push(itemRef);\n\t}\n\n\t/**\n\t * @param {Element}itemRef\n\t */\n\tunobserveItem(itemRef) {\n\t\tif (!itemRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.observedItems.has(itemRef)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.observer.unobserve(itemRef);\n\t\tthis.observedItems.delete(itemRef);\n\t\tthis.itemRefs = this.itemRefs.filter((ref) => ref !== itemRef);\n\t}\n\n\tdestroy() {\n\t\tif (this.scrollToTopRef) {\n\t\t\tthis.observer.unobserve(this.scrollToTopRef);\n\t\t}\n\t\tthis.scrollToTopRef = null;\n\t\tif (this.topLoaderRef) {\n\t\t\tthis.observer.unobserve(this.topLoaderRef);\n\t\t}\n\t\tthis.topLoaderRef = null;\n\n\t\tif (this.bottomLoaderRef) {\n\t\t\tthis.observer.unobserve(this.bottomLoaderRef);\n\t\t}\n\t\tthis.bottomLoaderRef = null;\n\n\t\tif (this.topBoundRef) {\n\t\t\tthis.observer.unobserve(this.topBoundRef);\n\t\t}\n\t\tthis.topBoundRef = null;\n\n\t\tif (this.bottomBoundRef) {\n\t\t\tthis.observer.unobserve(this.bottomBoundRef);\n\t\t}\n\t\tthis.bottomBoundRef = null;\n\n\t\t// @ts-ignore\n\t\tthis.dispatch = null;\n\t\tthis.itemRefs.forEach((itemRef) => {\n\t\t\t// noinspection JSTypeOfValues\n\t\t\tif (itemRef) {\n\t\t\t\tthis.unobserveItem(itemRef);\n\t\t\t}\n\t\t});\n\t\tthis.itemRefs = [];\n\t\tthis.observer.disconnect();\n\t\t// @ts-ignore\n\t\tthis.observer = null;\n\t}\n}\n","import {\n\tRETRY,\n\tRETRY_PREPARE_VIRTUALIZED_OBSERVER,\n\tSCROLL_BOTTOM_REACHED,\n\tSCROLL_TO_TOP_START_ROW,\n\tVIRTUALIZED_LIST_BEHAVIOR,\n} from './constants';\nimport { VirtualizedObserver } from './virtualizedObserver';\n\n/**\n * nowId is the unique id of the now-list component. This map stores the current active\n * observer associated to the current rendered block of rows.\n * @type {Map<String, VirtualizedObserver | undefined>}\n */\nexport const observerByNowId = new Map();\n\n/**\n * The rendered list size is calculated using blocks of rows. Each block is a subset\n * of rows that are rendered in the viewport. The loader ref observers are positioned\n * at the top and bottom of the total rendered list. The LOADER_REF_POSITION_PERCENTAGE is\n * the percentage from the top and from the bottom that these references are set.\n * @type {number}e\n */\nconst LOADER_REF_POSITION_PERCENTAGE = 0.3;\n\n/**\n * @param {string} nowId nowId of component (now-list)\n * @returns {VirtualizedObserver | undefined}\n */\nexport const getObserver = (nowId) => observerByNowId.get(nowId);\n\n/**\n * Get behavior state from component state\n * @param {State} state\n * @returns {VirtualizedListBehaviorState}\n */\nexport const getVirtualizedBehaviorState = (state) =>\n\t// @ts-ignore\n\tstate && state.behaviors ? state.behaviors[VIRTUALIZED_LIST_BEHAVIOR] : {};\n\n/**\n * Deletes the observer associated to the nowId.\n * @param {string} nowId\n */\nexport const destroyObserver = (nowId) => {\n\tconst observer = getObserver(nowId);\n\tif (observer) {\n\t\tobserver.setEnabled(false);\n\t\tobserver.destroy();\n\t}\n\tobserverByNowId.delete(nowId);\n};\n\n/**\n * function allows for fn() to be called after the browser has completed style and layout\n * @param {function }fn\n */\nexport const executeAfterBrowserStyleAndLayout = (fn) => {\n\trequestAnimationFrame(() => {\n\t\tfn();\n\t});\n};\n\n/**\n * topLoaderRef, bottomLoaderRef, topBoundRef, bottomBoundRef are the references\n * that are observed by the virtualizedObserver.\n * @param {Array<HTMLTableRowElement>} renderedRows - rows rendered between topbound and lowerbound\n * @param {number} topBound - index of topBound of the rendered list\n * @param {number} bottomBound - infex of bottomBound of the rendered list\n * @param {number} blockSize - rows per block\n * @param {Array<Row>} allRowsFromProp - all row from the now-list rowDefinitions prop\n * @return {{topBoundRef: *, bottomBoundRef: *, topLoaderRef: *, bottomLoaderRef: *}}\n */\nconst getRowRefs = (\n\trenderedRows,\n\ttopBound,\n\tbottomBound,\n\tblockSize,\n\tallRowsFromProp\n) => {\n\tconst topLoaderRef =\n\t\ttopBound !== 0\n\t\t\t? renderedRows[\n\t\t\t\t\tMath.floor(blockSize * LOADER_REF_POSITION_PERCENTAGE)\n\t\t\t  ]\n\t\t\t: null;\n\tconst topBoundRef = topBound !== 0 ? renderedRows[0] : null;\n\n\tconst bottomLoaderRef =\n\t\tbottomBound < allRowsFromProp.length - 1\n\t\t\t? renderedRows[\n\t\t\t\t\trenderedRows.length -\n\t\t\t\t\t\tMath.floor(blockSize * LOADER_REF_POSITION_PERCENTAGE)\n\t\t\t  ]\n\t\t\t: null;\n\n\tconst bottomBoundRef =\n\t\tbottomBound < allRowsFromProp.length - 1\n\t\t\t? renderedRows[renderedRows.length - 1]\n\t\t\t: null;\n\n\treturn {\n\t\ttopLoaderRef,\n\t\tbottomLoaderRef,\n\t\ttopBoundRef,\n\t\tbottomBoundRef,\n\t};\n};\n\nexport const initializeVirtualizedObserver = (\n\t/** @type {Now.Coeffects<Props, State>} */ coeffects,\n\tretry = 0\n) => {\n\tconst {\n\t\tdispatch,\n\t\thost,\n\t\tstate: {\n\t\t\tproperties: {\n\t\t\t\tnowId,\n\t\t\t\trowDefinitions: { rows: allRowsFromProp },\n\t\t\t},\n\t\t},\n\t\tstate,\n\t} = coeffects;\n\texecuteAfterBrowserStyleAndLayout(() => {\n\t\tif (host.shadowRoot) {\n\t\t\t/** @type {NodeListOf<HTMLTableRowElement>} */\n\t\t\tconst overLayLoaderPresent = host.shadowRoot.querySelectorAll(\n\t\t\t\t'.overlay-content'\n\t\t\t);\n\t\t\tif (overLayLoaderPresent.length > 0) return;\n\t\t\t/** @type {NodeListOf<HTMLTableRowElement>} */\n\t\t\tconst topGhostRows = host.shadowRoot.querySelectorAll(\n\t\t\t\t'.ghost-row-top'\n\t\t\t);\n\t\t\t/** @type {NodeListOf<HTMLTableRowElement>} */\n\t\t\tconst bottomGhostRows = host.shadowRoot.querySelectorAll(\n\t\t\t\t'.ghost-row-bottom'\n\t\t\t);\n\t\t\t/** @type {NodeListOf<HTMLTableRowElement>} */\n\t\t\tconst renderedRows = host.shadowRoot.querySelectorAll(\n\t\t\t\t'.now-list-table-row:not(.is-hidden)'\n\t\t\t);\n\t\t\tconst slicedRows = Array.from(renderedRows).slice(\n\t\t\t\ttopGhostRows.length,\n\t\t\t\trenderedRows.length - bottomGhostRows.length\n\t\t\t);\n\t\t\tif (retry > RETRY) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (renderedRows.length === 0) {\n\t\t\t\tdispatch(RETRY_PREPARE_VIRTUALIZED_OBSERVER, {\n\t\t\t\t\tretry: retry + 1,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\ttopBound,\n\t\t\t\tbottomBound,\n\t\t\t\tblockSize,\n\t\t\t\trootMargin,\n\t\t\t} = getVirtualizedBehaviorState(state);\n\n\t\t\tconst {\n\t\t\t\ttopLoaderRef,\n\t\t\t\tbottomLoaderRef,\n\t\t\t\ttopBoundRef,\n\t\t\t\tbottomBoundRef,\n\t\t\t} = getRowRefs(\n\t\t\t\tslicedRows,\n\t\t\t\ttopBound,\n\t\t\t\tbottomBound,\n\t\t\t\tblockSize,\n\t\t\t\tallRowsFromProp\n\t\t\t);\n\t\t\tconst ghostRowIdsToIndex = new Map();\n\t\t\tconst ghostRowObservedElements = new Set();\n\n\t\t\t// handles observing ghost rows above the rendered rows\n\t\t\tfor (let i = 0; i < topGhostRows.length - 1; i++) {\n\t\t\t\tconst {\n\t\t\t\t\tdataset: { key, groupIndex },\n\t\t\t\t} = topGhostRows[i];\n\t\t\t\tif (groupIndex) {\n\t\t\t\t\tghostRowIdsToIndex.set(key, parseInt(groupIndex));\n\t\t\t\t\tghostRowObservedElements.add(topGhostRows[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// handles observing ghost rows below the rendered rows\n\t\t\tfor (let i = 0; i < bottomGhostRows.length - 1; i++) {\n\t\t\t\tconst {\n\t\t\t\t\tdataset: { key, groupIndex },\n\t\t\t\t} = bottomGhostRows[i];\n\t\t\t\tif (groupIndex) {\n\t\t\t\t\tghostRowIdsToIndex.set(key, parseInt(groupIndex));\n\t\t\t\t\tghostRowObservedElements.add(bottomGhostRows[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst scrollToTopRef = renderedRows[SCROLL_TO_TOP_START_ROW];\n\t\t\tconst endOfScrollReachedRef =\n\t\t\t\trenderedRows[renderedRows.length - SCROLL_BOTTOM_REACHED];\n\t\t\tdestroyObserver(nowId);\n\n\t\t\tconst virtualizedObserver = new VirtualizedObserver(\n\t\t\t\ttopLoaderRef,\n\t\t\t\tbottomLoaderRef,\n\t\t\t\ttopBoundRef,\n\t\t\t\tbottomBoundRef,\n\t\t\t\tscrollToTopRef,\n\t\t\t\tdispatch,\n\t\t\t\tghostRowIdsToIndex,\n\t\t\t\tghostRowObservedElements,\n\t\t\t\tendOfScrollReachedRef,\n\t\t\t\trootMargin\n\t\t\t);\n\t\t\tghostRowObservedElements.forEach((element) => {\n\t\t\t\tvirtualizedObserver.observeItem(element);\n\t\t\t});\n\n\t\t\tvirtualizedObserver.observeItem(endOfScrollReachedRef);\n\t\t\tvirtualizedObserver.observeItem(topLoaderRef);\n\t\t\tvirtualizedObserver.observeItem(bottomLoaderRef);\n\t\t\tvirtualizedObserver.observeItem(topBoundRef);\n\t\t\tvirtualizedObserver.observeItem(bottomBoundRef);\n\t\t\tvirtualizedObserver.observeItem(scrollToTopRef);\n\t\t\tobserverByNowId.set(nowId, virtualizedObserver);\n\t\t}\n\t});\n};\n","import '@servicenow/now-loader';\nimport { actionTypes } from '@servicenow/ui-core';\nimport { debounce, isNil, isEmpty, get } from 'lodash';\nimport { t } from 'sn-translate';\n\nimport { LAYOUT_OPTIONS } from '../../constants';\nimport { NOW_LIST_HEADER_CELL_TEXT_CLICKED } from '../columnHeaderClickBehavior/constants';\nimport {\n\tALLOW_TABLE_FOCUS,\n\tFOCUS_LIST,\n\tRESET_BEHAVIOR,\n\tUPDATE_TABLE_REF,\n} from '../keyboardNavBehavior/constants';\nimport { NOW_LIST_GROUP_TOGGLED } from '../rowGroupingBehavior/constants';\n\nimport {\n\tROWS_ENTERED_VIEW,\n\tBOTTOM_BOUND_ENTERED_VIEW,\n\tTOP_BOUND_ENTERED_VIEW,\n\tBOTTOM_LOADER_ENTERED_VIEW,\n\tTOP_LOADER_ENTERED_VIEW,\n\tLONG_SCROLL_TRIGGERED,\n\tRETRY_PREPARE_VIRTUALIZED_OBSERVER,\n\tSCROLL_TO_TOP_TRIGGERED,\n\tSHOW_SCROLL_TO_TOP_BUTTON,\n\tHIDE_SCROLL_TO_TOP_BUTTON,\n\tVIRTUALIZED_SCROLL_BOTTOM_REACHED,\n\tHANDLE_SCROLL_BOTTOM_REACHED,\n\tDEFAULT_ROW_HEIGHT,\n\tSCROLL_CONTAINER,\n\tTABLE_BODY,\n\tVIRTUALIZED_LIST_BEHAVIOR,\n} from './constants';\nimport {\n\tdestroyObserver,\n\texecuteAfterBrowserStyleAndLayout,\n\tgetObserver,\n\tgetVirtualizedBehaviorState,\n\tinitializeVirtualizedObserver,\n\tobserverByNowId,\n} from './virtualizedListBehaviorUtils';\n\nconst {\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_TREE_RENDERED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n\tCOMPONENT_DOM_TREE_READY,\n} = actionTypes;\n\n/**\n * The rendered list is broken up into 2 x BLOCK_LOAD_SIZE subsets. When the upper or lower\n * bound observers are triggered then next BLOCK_LOAD_SIZE is removed and added from either\n * the top or bottom of the list depending on the scroll direction\n * @type {number}\n */\nconst BLOCK_LOAD_SIZE = 2;\n\nexport const initialState = {\n\tblockSize: DEFAULT_ROW_HEIGHT,\n\tbottomBound: DEFAULT_ROW_HEIGHT * BLOCK_LOAD_SIZE - 1,\n\ttopBound: 0,\n\tnewBlockLoading: false,\n\trootMargin: '0px 0px 0px 0px',\n\tisRenderingSecondPhase: false, // indicates if the rendering next section is in the middle of the two phase render\n\tshowScrollToTopButton: false,\n};\n\n/**\n * prepareVirtualizedObserver is responsible for defining the elements that will be observed\n * by the virtualizedObserver.\n */\nconst prepareVirtualizedObserver = debounce(initializeVirtualizedObserver, 300);\n\n/**\n *  destroys the observer\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const cleanupMemory = (coeffects) => {\n\tconst {\n\t\tproperties: { nowId },\n\t} = coeffects;\n\tdestroyObserver(nowId);\n};\n\n/**\n * Handles the scroll bottom reached event\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst handleBottomReached = (coeffects) => {\n\tconst { dispatch, properties } = coeffects;\n\tconst {\n\t\trowDefinitions: { metadata },\n\t} = properties;\n\n\tconst listId = get(metadata, 'listId');\n\tdispatch(actionTypes.ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: t('Loading more rows'),\n\t\ttype: 'assertive',\n\t});\n\tdispatch(VIRTUALIZED_SCROLL_BOTTOM_REACHED, { listId });\n};\n\n/**\n * updatePrevBlock is responsible for updating the topBound, bottomBound and\n * triggering a render of the rows\n * @param { string } nowId - unique id for the now-list component\n * @param { Now.Coeffects<Props, State> } coeffects\n * @param { number } topBound - topBound of the rendered list\n * @param { number } bottomBound - bottomBound of the rendered list\n */\nconst updatePrevBlock = debounce((\n\t/** @type {string} */ nowId,\n\t/** @type {Now.Coeffects<Props, State>} */ coeffects,\n\t/** @type {number} */ topBound,\n\t/** @type {number} */ bottomBound\n) => {\n\tconst { properties, updateState, dispatch } = coeffects;\n\tconst observer = getObserver(nowId);\n\tif (observer) {\n\t\tobserver.setEnabled(false);\n\t}\n\tconst {\n\t\trowDefinitions: { rows },\n\t} = properties;\n\tconst message = t(\n\t\t`Rows ${topBound + 1} to ${Math.min(\n\t\t\tbottomBound + 1,\n\t\t\trows.length\n\t\t)} out of ${rows.length} have loaded.`\n\t);\n\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage,\n\t\ttype: 'polite',\n\t});\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.topBound`,\n\t\t\tvalue: topBound,\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.bottomBound`,\n\t\t\tvalue: bottomBound,\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n}, 0);\n\n/**\n * updateNextBlock is responsible for updating the topBound, bottomBound and\n * triggering a render of the rows\n *\n * the two phase render approach in the below code is the workaround for the snabbdom rendering\n * issue where when shifting rows down;å the top rows are removed and the bottom rows are\n * added snabbdom re-renders entire list instead of rendering the effected rows.\n * @param { string } nowId\n * @param { Now.Coeffects<Props, State> } coeffects\n * @param { number } topBound\n * @param { number } bottomBound\n */\nconst updateNextBlock = debounce((\n\t/** @type {string} */ nowId,\n\t/** @type {Now.Coeffects<Props, State>} */ coeffects,\n\t/** @type {number} */ topBound,\n\t/** @type {number} */ bottomBound\n) => {\n\tconst { updateState } = coeffects;\n\tconst observer = getObserver(nowId);\n\tif (observer) {\n\t\tobserver.setEnabled(false);\n\t}\n\n\tconst updateAfterLoading = () => {\n\t\tupdateState([\n\t\t\t{\n\t\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.topBound`,\n\t\t\t\tvalue: topBound,\n\t\t\t\toperation: 'set',\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.newBlockLoading`,\n\t\t\t\tvalue: false,\n\t\t\t\toperation: 'set',\n\t\t\t},\n\t\t]);\n\t};\n\t// setting newBlockLoading to true prevents next being called before second render is complete\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.newBlockLoading`,\n\t\t\tvalue: true,\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n\n\tconst updater = () => {\n\t\texecuteAfterBrowserStyleAndLayout(updateAfterLoading);\n\t\t// load bottom bound\n\t\treturn [\n\t\t\t{\n\t\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.bottomBound`,\n\t\t\t\tvalue: bottomBound,\n\t\t\t\toperation: 'set',\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.newBlockLoading`,\n\t\t\t\tvalue: true,\n\t\t\t\toperation: 'set',\n\t\t\t},\n\t\t];\n\t};\n\n\t/** Type complaint. expecting state object but receiving a function returning updateState type.\n   this is a workaround for the snabbdom rendering issue. we need to supply updateState with a timeout to\n   render in two phases. */\n\t// @ts-ignore\n\tupdateState(updater);\n}, 0);\n\n/**\n * Calculates the new topBound and bottomBound for the next block while scrolling\n * upwards\n * @param  {Now.Coeffects<Props, State>} coeffects\n */\nconst handlePrevBlock = (coeffects) => {\n\tconst {\n\t\tproperties: { nowId },\n\t\tstate,\n\t} = coeffects;\n\n\tconst { bottomBound, topBound, blockSize } = getVirtualizedBehaviorState(\n\t\tstate\n\t);\n\n\tconst newTopBound = Math.max(0, topBound - BLOCK_LOAD_SIZE * blockSize);\n\tconst newBottomBound = bottomBound - BLOCK_LOAD_SIZE * blockSize;\n\n\tif (bottomBound !== newBottomBound || topBound !== newTopBound) {\n\t\tupdatePrevBlock(nowId, coeffects, newTopBound, newBottomBound);\n\t}\n};\n/**\n * Calculates the new topBound and bottomBound for the next block of rows while scrolling\n * downwards\n * @param  {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleNextBlock = (coeffects) => {\n\tconst {\n\t\tproperties: {\n\t\t\tnowId,\n\t\t\trowDefinitions: { rows },\n\t\t},\n\t\tstate,\n\t} = coeffects;\n\tconst {\n\t\tbottomBound,\n\t\ttopBound,\n\t\tblockSize,\n\t\tisRenderingSecondPhase,\n\t} = getVirtualizedBehaviorState(state);\n\tif (isRenderingSecondPhase) return;\n\n\t// if the bottom of the stored list is reached, diff ensures that there is\n\t// adequate rows from the top to the bottomBound so that top observer refs\n\t// are not visible after render\n\tconst isBottom = rows.length - 1 < bottomBound + blockSize;\n\tconst diff = bottomBound + blockSize - (rows.length - 1);\n\n\tconst topBlockOffset = bottomBound - blockSize * BLOCK_LOAD_SIZE;\n\tconst newBottomIndex = bottomBound + blockSize * BLOCK_LOAD_SIZE;\n\n\tconst newTopBound = Math.max(\n\t\t0,\n\t\tisBottom ? topBlockOffset - diff : topBlockOffset\n\t);\n\n\tif (bottomBound !== newBottomIndex || topBound !== newTopBound) {\n\t\tupdateNextBlock(nowId, coeffects, newTopBound, newBottomIndex);\n\t}\n};\n\n/**\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleLongScroll = (coeffects) => {\n\tconst {\n\t\tproperties: {\n\t\t\tnowId,\n\t\t\trowDefinitions: { rows },\n\t\t},\n\t\tstate,\n\t\taction: {\n\t\t\tpayload: { index: rowIndex },\n\t\t},\n\t} = coeffects;\n\n\tconst { blockSize } = getVirtualizedBehaviorState(state);\n\t// if the bottom of the stored list is reached, diff ensures that there is\n\t// adequate rows from the top to the bottomBound so that top observer refs\n\t// are not visible after render\n\tconst isBottom = rows.length - 1 < rowIndex + BLOCK_LOAD_SIZE * blockSize;\n\tconst diff = rowIndex + BLOCK_LOAD_SIZE * blockSize - (rows.length - 1);\n\n\tconst topBlockOffset = rowIndex - blockSize * BLOCK_LOAD_SIZE;\n\tconst newBottomIndex = rowIndex + blockSize * BLOCK_LOAD_SIZE;\n\n\tconst newTopBound = Math.max(\n\t\t0,\n\t\tisBottom ? topBlockOffset - diff : topBlockOffset\n\t);\n\n\tupdatePrevBlock(nowId, coeffects, newTopBound, newBottomIndex);\n};\n\n/**\n * handle keyboard navigation reset\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const resetKeyBoardNavBehavior = (coeffects) => {\n\tconst { dispatch } = coeffects;\n\n\tdispatch(RESET_BEHAVIOR);\n\tdispatch(ALLOW_TABLE_FOCUS);\n\tdispatch(FOCUS_LIST);\n};\n\n/**\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const scrollToTop = (coeffects) => {\n\tconst { host } = coeffects;\n\n\tconst firstRow = host.shadowRoot\n\t\t?.querySelector(SCROLL_CONTAINER)\n\t\t?.querySelector('#first-row');\n\tif (firstRow) {\n\t\tfirstRow.scrollIntoView({ behavior: 'smooth', block: 'end' });\n\t\t// resets the keyboard navigation and sets focus to the first cell on the table\n\t\tresetKeyBoardNavBehavior(coeffects);\n\t}\n};\n\n/**\n * Show scroll to top button if the observer for that row is triggered\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const displayScrollToTopButton = (coeffects) => {\n\tconst { updateState, dispatch } = coeffects;\n\tconst { showScrollToTopButton } = getVirtualizedBehaviorState(\n\t\tcoeffects.state\n\t);\n\n\tif (showScrollToTopButton) return;\n\tconst message = t('Scroll To Top button is available.');\n\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage,\n\t\ttype: 'polite',\n\t});\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.showScrollToTopButton`,\n\t\t\tvalue: true,\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n};\n\n/**\n * Hide scroll to top button if the observer for that row is triggered\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const hideScrollToTopButton = (coeffects) => {\n\tconst { updateState, dispatch } = coeffects;\n\tconst { showScrollToTopButton } = getVirtualizedBehaviorState(\n\t\tcoeffects.state\n\t);\n\tif (showScrollToTopButton) {\n\t\tconst message = t('Scroll To Top button is unavailable.');\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage,\n\t\t\ttype: 'polite',\n\t\t});\n\t}\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.showScrollToTopButton`,\n\t\t\tvalue: false,\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n};\n\n/**\n * Handles the property changed event for the component when virtualized scroll is enabled\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst propertyChangedHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name, value, previousValue },\n\t\t},\n\t\tproperties: { virtualizedScrollEnabled, overlayDefinition },\n\t\tdispatch,\n\t} = coeffects;\n\n\tif (!virtualizedScrollEnabled) return;\n\n\tif (\n\t\tname === 'layout' &&\n\t\tvalue !== previousValue &&\n\t\tvalue !== LAYOUT_OPTIONS.LIST\n\t) {\n\t\tdispatch(HIDE_SCROLL_TO_TOP_BUTTON);\n\t\tcleanupMemory(coeffects);\n\t}\n\tif (name === 'rowDefinitions') {\n\t\tif (value?.metadata?.currentPage === 0) {\n\t\t\tscrollToTopContainer(coeffects);\n\t\t}\n\t\tcleanupMemory(coeffects);\n\t}\n\n\tif (\n\t\tname === 'overlayDefinition' &&\n\t\t!isNil(overlayDefinition) &&\n\t\t!isEmpty(overlayDefinition)\n\t) {\n\t\tscrollToTopContainer(coeffects);\n\t\tcleanupMemory(coeffects);\n\t}\n};\n\n/**\n * Handles intersection observer event that is emitted when rows enter view\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst handleRowsEnteredView = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { intersectEvent },\n\t\t},\n\t} = coeffects;\n\n\tif (\n\t\tintersectEvent === BOTTOM_BOUND_ENTERED_VIEW ||\n\t\tintersectEvent === BOTTOM_LOADER_ENTERED_VIEW\n\t) {\n\t\thandleNextBlock(coeffects);\n\t} else if (\n\t\tintersectEvent === TOP_BOUND_ENTERED_VIEW ||\n\t\tintersectEvent === TOP_LOADER_ENTERED_VIEW\n\t) {\n\t\thandlePrevBlock(coeffects);\n\t}\n};\n\n/**\n * Handles component tree rendered event. checks to see if upper and lower\n * bounds have changed and updates the observer accordingly\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst handleComponentTreeRendered = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { previousRenderState },\n\t\t},\n\t\tproperties: {\n\t\t\tnowId,\n\t\t\tvirtualizedScrollEnabled,\n\t\t\toverlayDefinition,\n\t\t\trowDefinitions,\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tif (\n\t\t!isEmpty(overlayDefinition) ||\n\t\t!virtualizedScrollEnabled ||\n\t\tisEmpty(rowDefinitions)\n\t)\n\t\treturn;\n\tconst {\n\t\tbottomBound: prevBottomBound,\n\t\ttopBound: prevTopBound,\n\t} = getVirtualizedBehaviorState(previousRenderState);\n\n\tconst {\n\t\tbottomBound: newBottomBound,\n\t\ttopBound: newTopBound,\n\t} = getVirtualizedBehaviorState(coeffects.state);\n\tconst observer = observerByNowId.get(nowId);\n\tif (\n\t\tprevBottomBound !== newBottomBound ||\n\t\tprevTopBound !== newTopBound ||\n\t\t!observer\n\t) {\n\t\tprepareVirtualizedObserver(coeffects);\n\t\tdispatch(UPDATE_TABLE_REF, {\n\t\t\tshouldFocusFirst: false,\n\t\t});\n\t}\n};\n\n/**\n * Handles retrying to prepare the virtualized observer\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst handleRetryPrepareVirtualizedObserver = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { retry },\n\t\t},\n\t} = coeffects;\n\tprepareVirtualizedObserver(coeffects, retry);\n};\n\n/**\n * Handles the component dom ready event. This is where we get the scroll container\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst handleComponentDomReady = (coeffects) => {\n\tconst {\n\t\tproperties: { virtualizedScrollEnabled },\n\t\thost,\n\t\tupdateState,\n\t} = coeffects;\n\tif (!virtualizedScrollEnabled) return;\n\n\tif (host.shadowRoot) {\n\t\tconst scrollContainer = host.shadowRoot.querySelector(SCROLL_CONTAINER);\n\t\tconst tableBody = host.shadowRoot.querySelector(TABLE_BODY);\n\n\t\tconst tableBodyYPos = tableBody?.getBoundingClientRect().top;\n\t\tconst scrollContainerYPos =\n\t\t\tscrollContainer?.getBoundingClientRect().bottom || 0;\n\n\t\tconst viewPortInnerHeight = window.innerHeight;\n\n\t\tif (scrollContainer === null) return;\n\t\tconst rootMargin = `-${tableBodyYPos}px 0px ${\n\t\t\tviewPortInnerHeight - scrollContainerYPos\n\t\t}px 0px`;\n\t\tupdateState([\n\t\t\t{\n\t\t\t\tpath: `behaviors.${VIRTUALIZED_LIST_BEHAVIOR}.rootMargin`,\n\t\t\t\tvalue: rootMargin,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false,\n\t\t\t},\n\t\t]);\n\t}\n};\n\n/**\n * Handles the header list clicked event\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const scrollToTopContainer = (coeffects) => {\n\tconst { host } = coeffects;\n\n\tconst scrollContainer = host.shadowRoot?.querySelector(SCROLL_CONTAINER);\n\tif (scrollContainer) {\n\t\tcleanupMemory(coeffects);\n\t\tscrollContainer.scrollTop = 0;\n\t}\n};\n\n/**\n * Handles group toggled event\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nconst handleGroupToggled = (coeffects) => {\n\tconst {\n\t\tproperties: { virtualizedScrollEnabled },\n\t} = coeffects;\n\tif (!virtualizedScrollEnabled) return;\n\tprepareVirtualizedObserver(coeffects);\n};\n\nexport const virtualizedListBehavior = {\n\tname: VIRTUALIZED_LIST_BEHAVIOR,\n\tinitialState,\n\tactionHandlers: {\n\t\t[NOW_LIST_HEADER_CELL_TEXT_CLICKED]: {\n\t\t\teffect: scrollToTopContainer,\n\t\t},\n\t\t[NOW_LIST_GROUP_TOGGLED]: {\n\t\t\teffect: handleGroupToggled,\n\t\t},\n\t\t[LONG_SCROLL_TRIGGERED]: {\n\t\t\teffect: handleLongScroll,\n\t\t},\n\t\t[ROWS_ENTERED_VIEW]: {\n\t\t\teffect: handleRowsEnteredView,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[SCROLL_TO_TOP_TRIGGERED]: {\n\t\t\teffect: scrollToTop,\n\t\t},\n\t\t[SHOW_SCROLL_TO_TOP_BUTTON]: {\n\t\t\teffect: displayScrollToTopButton,\n\t\t},\n\t\t[HIDE_SCROLL_TO_TOP_BUTTON]: {\n\t\t\teffect: hideScrollToTopButton,\n\t\t},\n\t\t[COMPONENT_TREE_RENDERED]: {\n\t\t\teffect: handleComponentTreeRendered,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[RETRY_PREPARE_VIRTUALIZED_OBSERVER]: {\n\t\t\teffect: handleRetryPrepareVirtualizedObserver,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[COMPONENT_DOM_TREE_READY]: {\n\t\t\teffect: handleComponentDomReady,\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: {\n\t\t\teffect: cleanupMemory,\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: { effect: propertyChangedHandler },\n\t\t[HANDLE_SCROLL_BOTTOM_REACHED]: {\n\t\t\teffect: handleBottomReached,\n\t\t\tmodifier: { name: 'throttle', limit: 500 },\n\t\t},\n\t},\n};\n","// Actions for now-list-gallery\nexport const SN_LIST_GALLERY_CELL_LINK_CLICKED =\n\t'SN_LIST_GALLERY#CELL_LINK_CLICKED';\nexport const SN_LIST_GALLERY_PERSON_CLICKED = 'SN_LIST_GALLERY#PERSON_CLICKED';\nexport const SN_LIST_GALLERY_EXPAND_ALL_GROUPS =\n\t'SN_LIST_GALLERY#EXPAND_ALL_GROUPS';\nexport const SN_LIST_GALLERY_CONTEXT_ACTION_CLICKED =\n\t'SN_LIST_GALLERY#CONTEXT_ACTION_CLICKED';\nexport const SN_LIST_GALLERY_CARD_SELECTED_SET =\n\t'SN_LIST_GALLERY_CARD#SELECTED_SET';\nexport const SN_LIST_GALLERY_SELECT_ALL_CLICKED =\n\t'SN_LIST_GALLERY#SELECT_ALL_CLICKED';\n\nexport const SN_LIST_GALLERY_CARD_SELECTED = 'SN_LIST_GALLERY#CARD_SELECTED';\nexport const SN_LIST_GALLERY_CARD_CLICKED = 'SN_LIST_GALLERY#CARD_CLICKED';\nexport const SN_LIST_GALLERY_HEADER_ACTION_CLICKED =\n\t'SN_LIST_GALLERY#HEADER_ACTION_CLICKED';\nexport const NOW_CARD_HEADER_ACTION_CLICKED = 'NOW_CARD_HEADER#ACTION_CLICKED';\n","const NOW_LIST_CARD_PERSON_CLICKED = 'NOW_LIST#CARD_PERSON_CLICKED';\nconst PERSON_FIELD_ICON_SIZE = 'xs';\nconst PERSON_DISPLAY_TYPE_AVATAR = 'avatar';\nconst PERSON_DISPLAY_TYPE_NAME = 'name';\nconst PERSON_DISPLAY_TYPE_BOTH = 'both';\n\nconst PERSON_DISPLAY_TYPE_ENUMS = [\n\tPERSON_DISPLAY_TYPE_AVATAR,\n\tPERSON_DISPLAY_TYPE_NAME,\n\tPERSON_DISPLAY_TYPE_BOTH,\n];\n\nconst PERSON_DISPLAY_TYPE_DEFAULT = PERSON_DISPLAY_TYPE_BOTH;\n\nexport {\n\tNOW_LIST_CARD_PERSON_CLICKED,\n\tPERSON_FIELD_ICON_SIZE,\n\tPERSON_DISPLAY_TYPE_AVATAR,\n\tPERSON_DISPLAY_TYPE_NAME,\n\tPERSON_DISPLAY_TYPE_BOTH,\n\tPERSON_DISPLAY_TYPE_ENUMS,\n\tPERSON_DISPLAY_TYPE_DEFAULT,\n};\n\nexport const NOW_LIST_CELL_PERSON_CLICKED = 'NOW_LIST#CELL_PERSON_CLICKED';\n","import { NOW_LIST_CELL_LINK_CLICKED } from '../../../behaviors/linkBehavior/constants';\nimport { ROW_CHECKBOX_INTERNAL_SET } from '../../../behaviors/rowSelectionBehavior/constants';\nimport {\n\tSN_LIST_GALLERY_CELL_LINK_CLICKED,\n\tSN_LIST_GALLERY_CARD_CLICKED,\n\tSN_LIST_GALLERY_CARD_SELECTED_SET,\n\tSN_LIST_GALLERY_HEADER_ACTION_CLICKED,\n\tSN_LIST_GALLERY_PERSON_CLICKED,\n\tSN_LIST_GALLERY_CONTEXT_ACTION_CLICKED,\n} from '../../../now-list-gallery/constants/actionConstants';\nimport { NOW_LIST_CELL_PERSON_CLICKED } from '../../views/fields/person/constants';\nimport {\n\tNOW_LIST_CONTEXT_ACTION_CLICKED,\n\tSN_LIST_GALLERY_VIRTUALIZED_SCROLL_BOTTOM_REACHED,\n\tNOW_LIST_VIRTUALIZED_SCROLL_BOTTOM_REACHED,\n\tNOW_LIST_ROW_CLICKED,\n} from '../actionConstants';\n\nexport const BridgeEventMapping = {\n\t[SN_LIST_GALLERY_CONTEXT_ACTION_CLICKED]: NOW_LIST_CONTEXT_ACTION_CLICKED,\n\t[SN_LIST_GALLERY_CELL_LINK_CLICKED]: NOW_LIST_CELL_LINK_CLICKED,\n\t[SN_LIST_GALLERY_VIRTUALIZED_SCROLL_BOTTOM_REACHED]: NOW_LIST_VIRTUALIZED_SCROLL_BOTTOM_REACHED,\n\t[SN_LIST_GALLERY_PERSON_CLICKED]: NOW_LIST_CELL_PERSON_CLICKED,\n\t[SN_LIST_GALLERY_CARD_SELECTED_SET]: ROW_CHECKBOX_INTERNAL_SET,\n\t[SN_LIST_GALLERY_HEADER_ACTION_CLICKED]: NOW_LIST_CONTEXT_ACTION_CLICKED,\n\t[SN_LIST_GALLERY_CARD_CLICKED]: NOW_LIST_ROW_CLICKED,\n};\n","import { BridgeEventMapping } from './bridgeEventMapping';\n\nconst nowListBridgeBehavior = {\n\tname: 'nowListBridgeBehavior',\n\n\tactionHandlers: Object.fromEntries(\n\t\tObject.entries(BridgeEventMapping).map(([key, actionToDispatch]) => [\n\t\t\tkey,\n\t\t\t{\n\t\t\t\t/**\n\t\t\t\t * @param {Coeffects<Props, State>} coeffects\n\t\t\t\t */\n\t\t\t\teffect: (coeffects) => {\n\t\t\t\t\tconst { action, dispatch } = coeffects;\n\t\t\t\t\tif (actionToDispatch) {\n\t\t\t\t\t\tdispatch(actionToDispatch, action.payload);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstopPropagation: true,\n\t\t\t},\n\t\t])\n\t),\n};\n\nexport default nowListBridgeBehavior;\n","import { getUserPrefContext, a11yPreferences } from 'sn-ux-core';\n\nconst isTrue = (/** @type {string | boolean} */ prop) =>\n\tprop === true || prop === 'true';\n\nconst isHiddenControlsEnabled = (/** @type {any} */ context) => {\n\tconst hiddenControlsPreference = getUserPrefContext(\n\t\ta11yPreferences.GLIDE_UI_ACCESSIBILITY_SHOW_HIDDEN_CONTROLS\n\t);\n\tif (!(context && hiddenControlsPreference)) {\n\t\treturn false;\n\t}\n\treturn isTrue(context[hiddenControlsPreference]);\n};\n\nexport default isHiddenControlsEnabled;\n","/**\n * View for floating target to be used for internal right click popovers\n * @param {*} props\n */\nexport const floatingTarget = (props) => {\n\tconst style = {\n\t\ttop: `${props.rowContextPosition?.y ?? 0}px`,\n\t\tleft: `${props.rowContextPosition?.x ?? 0}px`,\n\t};\n\treturn (\n\t\t<div\n\t\t\tdata-testId=\"floatingTarget\"\n\t\t\tclassName=\"floating-target\"\n\t\t\tstyle={style}\n\t\t></div>\n\t);\n};\n","import '@servicenow/now-loader';\nimport '@servicenow/now-template-message';\nimport { Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport { t } from 'sn-translate';\n\nimport {\n\tcustomComponentType,\n\trenderCustomComponentDisplay,\n} from '../../utils/customLoader';\nimport overlaySelectors from '../../utils/selectors/overlaySelectors';\nimport {\n\tCELL_CONTENT_CLASS,\n\tROW_CELL_CLASS,\n} from '../table/tableBody/tableRow/rowCell/rowCellConstants';\n\nconst {\n\tOVERLAY_SKELETON_LOADER_NUM_ROWS,\n\tOVERLAY_TYPE_CUSTOM,\n\tOVERLAY_TYPE_LOADER,\n\tOVERLAY_TYPE_SKELETON_LOADER,\n} = require('../../../typeSchemas/overlayDefinition/overlayConfigConsts');\n\nconst {\n\tgetCustomOverlayComponentTag,\n\tgetCustomOverlayDefaultComponentProps,\n\tgetOverlayLoaderConfig,\n\tgetOverlayMessageConfig,\n\tgetOverlayShowColumnHeaders,\n\tgetOverlaySkeletonLoaderNumColumns,\n\tgetOverlayType,\n} = overlaySelectors;\n\nconst overlayContentClassName = 'overlay-content';\nconst loadingLabel = t('Loading');\n\n/**\n * An overlay with an illustration, text, buttons, etc\n * @param {OverlayDefinition} props\n */\nconst renderMessageOverlay = (props) => {\n\tconst messageConfig = getOverlayMessageConfig(props);\n\n\treturn (\n\t\t<now-template-message-empty-state\n\t\t\tdata-testId=\"now-list-overlay\"\n\t\t\tdata-testOverlayType=\"message\"\n\t\t\tclassName={overlayContentClassName}\n\t\t\t{...messageConfig}\n\t\t/>\n\t);\n};\n\n/**\n * A loader spinner with optional text and buttons\n * @param {OverlayDefinition} props\n */\nconst renderLoaderOverlay = (props) => {\n\tconst loaderConfig = getOverlayLoaderConfig(props);\n\treturn (\n\t\t<now-loader\n\t\t\tdata-testId=\"now-list-overlay\"\n\t\t\tdata-testOverlayType=\"loader\"\n\t\t\tclassName={overlayContentClassName}\n\t\t\taria-label={loadingLabel}\n\t\t\t{...loaderConfig}\n\t\t/>\n\t);\n};\n\n/**\n * An animated table wireframe\n * @param {OverlayDefinition} props\n */\nexport const renderSkeletonLoaderOverlay = (props) => {\n\tconst numColumns = getOverlaySkeletonLoaderNumColumns(props);\n\n\treturn (\n\t\t<Fragment aria-label={loadingLabel}>\n\t\t\t{!getOverlayShowColumnHeaders(props) && (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{skeletonCols(numColumns)}\n\t\t\t\t\t<thead aria-hidden={true} className={'skeleton-thead'}>\n\t\t\t\t\t\t{skeletonRow(numColumns, true)}\n\t\t\t\t\t</thead>\n\t\t\t\t</Fragment>\n\t\t\t)}\n\t\t\t{\n\t\t\t\t<tbody aria-hidden={true} className={'skeleton-tbody'}>\n\t\t\t\t\t{skeletonBodyRows(numColumns)}\n\t\t\t\t</tbody>\n\t\t\t}\n\t\t</Fragment>\n\t);\n};\n\n/**\n * An overlay with custom content\n * @param {OverlayDefinition} overlayProps\n * @param {TableMetadata} tableMetadata\n * @param {string} dir\n */\nconst renderCustomOverlay = (overlayProps, tableMetadata, dir) => {\n\tconst componentTag = getCustomOverlayComponentTag(overlayProps);\n\tconst componentDefaultProps = getCustomOverlayDefaultComponentProps(\n\t\toverlayProps\n\t);\n\treturn renderCustomComponentDisplay(\n\t\tcustomComponentType.OVERLAY,\n\t\ttableMetadata,\n\t\tcomponentTag,\n\t\tcomponentDefaultProps,\n\t\tdir\n\t);\n};\n\n/**\n * Helper view for mounting col tags of a full table skeleton loader overlay\n *\n * @param {number} numColumns number of cells to render in this row\n */\nconst skeletonCols = (numColumns) => {\n\tconst cols = [];\n\tfor (let i = 0; i < numColumns; i++) {\n\t\tcols.push(<col></col>);\n\t}\n\treturn cols;\n};\n\n/**\n * Helper view for mounting col tags of a full table skeleton loader overlay\n *\n * @param {number} numColumns number of cells to render in this row\n */\nconst skeletonBodyRows = (numColumns) => {\n\tconst bodyRows = [];\n\tfor (let i = 0; i < OVERLAY_SKELETON_LOADER_NUM_ROWS; i++) {\n\t\tbodyRows.push(skeletonRow(numColumns, false));\n\t}\n\n\treturn bodyRows;\n};\n\n/**\n * Helper view for rendering contents of a skeleton loader overlay\n *\n * @param {number} numColumns number of cells to render in this row\n * @param {boolean} isHeader indicates whether this is a head or body row\n */\nconst skeletonRow = (numColumns, isHeader) => {\n\tconst cells = [];\n\tfor (let i = 0; i < numColumns; i++) {\n\t\tcells.push(skeletonCell(isHeader));\n\t}\n\n\treturn <tr>{cells}</tr>;\n};\n\n/**\n * Helper view for rendering contents of a skeleton loader row\n *\n * @param {boolean} isHeader indicates whether this is a head or body row\n */\nconst skeletonCell = (isHeader) => {\n\tconst cellClasses = classNames({\n\t\t'skeleton-cell': true,\n\t\t[ROW_CELL_CLASS]: true,\n\t});\n\tconst cellContentClasses = classNames({\n\t\t'skeleton-cell-content': true,\n\t\t[CELL_CONTENT_CLASS]: true,\n\t});\n\n\tif (isHeader) {\n\t\treturn (\n\t\t\t<th className={cellClasses}>\n\t\t\t\t<div className={cellContentClasses}></div>\n\t\t\t</th>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<td className={cellClasses}>\n\t\t\t\t<div className={cellContentClasses}></div>\n\t\t\t</td>\n\t\t);\n\t}\n};\n\n/**\n * An overlay renders in place of the table body or entire table in order to provide information and/or action items\n * @param {OverlayDefinition} overlayProps\n * @param {TableMetadata} tableMetadata\n * @param {string} dir\n */\nexport const overlay = (overlayProps, tableMetadata, dir) => {\n\tconst type = getOverlayType(overlayProps);\n\tconst showHeaders = getOverlayShowColumnHeaders(overlayProps);\n\tlet overlayContent = null;\n\n\tif (type === OVERLAY_TYPE_SKELETON_LOADER)\n\t\t// this is the only overlay that is integrated into the table structure instead of replacing the table structure,\n\t\t// so renderSkeletonLoaderOverlay is called directly instead of from this generic overlay renderer.\n\t\treturn null;\n\n\tif (type === OVERLAY_TYPE_CUSTOM) {\n\t\toverlayContent = renderCustomOverlay(overlayProps, tableMetadata, dir);\n\t} else if (type === OVERLAY_TYPE_LOADER) {\n\t\toverlayContent = renderLoaderOverlay(overlayProps);\n\t} else {\n\t\toverlayContent = renderMessageOverlay(overlayProps);\n\t}\n\n\tconst overlayClassNames = classNames({\n\t\toverlay: true,\n\t\t[`type-${type}`]: true,\n\t\t'body-only-overlay': showHeaders,\n\t\t'full-table-overlay': !showHeaders,\n\t});\n\n\treturn (\n\t\t<div key=\"overlay-container\" className={overlayClassNames}>\n\t\t\t{overlayContent}\n\t\t</div>\n\t);\n};\n","import { findTabbableElement } from '@devsnc/sn-list-commons';\nimport { actionTypes } from '@servicenow/ui-core';\nimport get from 'lodash/get';\n\nimport {\n\tNOW_BUTTON_CLICKED,\n\tNOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED,\n\tNOW_LIST_POPOVER_BUTTON_CLICKED,\n} from '../../../../behaviors/cellEditingBehavior/constants';\nimport {\n\tTYPE_CURRENCY,\n\tTYPE_DATE_TIME,\n\tTYPE_NUMBER,\n\tTYPE_PILLS,\n\tTYPE_STRING,\n} from '../../../../typeSchemas/columnDefinitions/columnTypes/columnTypes';\nimport { isShortDate } from '../../../utils/dateTimeUtils';\n\nconst { COMPONENT_TREE_RENDERED } = actionTypes;\n\n/**\n * Handler for now-list-cell-editor-content render\n * @param {Coeffects<PopoverCellEditorContentProps, State>} coeffects\n */\nconst componentTreeRenderedEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tmeta: { hoistHost },\n\t\t},\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\tconst popoverIsFocused = get(state, `popoverIsFocused`, false);\n\t/**\n\t * Handles the focusing of the element when the popover re-renders\n\t * from loading state to the custom component\n\t */\n\tif (\n\t\thoistHost?.shadowRoot &&\n\t\tdocument.activeElement != hoistHost &&\n\t\t!popoverIsFocused\n\t) {\n\t\tconst el = findTabbableElement(true, hoistHost?.shadowRoot);\n\t\tif (el) {\n\t\t\tupdateState({\n\t\t\t\tpath: 'popoverIsFocused',\n\t\t\t\toperation: 'set',\n\t\t\t\tvalue: true,\n\t\t\t});\n\t\t\tel.focus();\n\t\t}\n\t}\n};\n\n/**\n * @param {Coeffects<PopoverCellEditorContentProps,State>} coeffects\n */\nconst nowCellEditButtonClickedEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { id, context },\n\t\t},\n\t\tstate,\n\t\tdispatch,\n\t} = coeffects;\n\n\t// @ts-ignore\n\tconst { value, label, color, imageSrc, personKey } = state;\n\n\tlet updatedValue = value;\n\n\tswitch (context.cell.type) {\n\t\tcase TYPE_CURRENCY:\n\t\tcase TYPE_NUMBER:\n\t\t\tupdatedValue = value && Number(value);\n\t\t\tbreak;\n\t\tcase TYPE_DATE_TIME:\n\t\t\t/**\n\t\t\t * When the date-time cell is empty, the value is null and the now-date-time expects a string value\n\t\t\t * When the date-time cell is non-empty, the value is an epoch value\n\t\t\t * Here we are converting the string back to epoch value or null (when empty) to update the cell value\n\t\t\t */\n\t\t\tif (typeof value === TYPE_STRING) {\n\t\t\t\tif (value == null) {\n\t\t\t\t\tupdatedValue = null;\n\t\t\t\t} else if (isShortDate(value)) {\n\t\t\t\t\tconst date = new Date(value);\n\t\t\t\t\tdate.setTime(\n\t\t\t\t\t\tdate.getTime() + date.getTimezoneOffset() * 60 * 1000\n\t\t\t\t\t);\n\t\t\t\t\tupdatedValue = date.getTime() / 1000 || null;\n\t\t\t\t} else {\n\t\t\t\t\tconst formattedValue = Date.parse(value) / 1000;\n\t\t\t\t\tupdatedValue = formattedValue || null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase TYPE_PILLS:\n\t\t\tupdatedValue = value.map((\n\t\t\t\t/** @type {{ id: String; label: String;}} */ { id, label }\n\t\t\t) => ({ key: id, label }));\n\t\t\tbreak;\n\t}\n\n\tconst payload = {\n\t\tvalue: updatedValue,\n\t\tlabel: label,\n\t\tcolor: color,\n\t\timageSrc: imageSrc,\n\t\tpersonKey: personKey,\n\t};\n\n\tdispatch(NOW_LIST_POPOVER_BUTTON_CLICKED, { id, context, payload });\n};\n\n/**\n * @param {Coeffects<PopoverCellEditorContentProps,State>} coeffects\n */\nconst nowCellEditorContentValueUpdatedEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { value, label, color, personKey, imageSrc },\n\t\t},\n\t\tupdateState,\n\t} = coeffects;\n\n\tconst updatedState = {};\n\n\tif (label != null) {\n\t\tupdatedState.label = label;\n\t}\n\n\tif (color != null) {\n\t\tupdatedState.color = color;\n\t}\n\n\tif (personKey != null) {\n\t\tupdatedState.personKey = personKey;\n\t}\n\n\tif (imageSrc != null) {\n\t\tupdatedState.imageSrc = imageSrc;\n\t}\n\n\tif (value != null) {\n\t\tupdatedState.value = value;\n\t}\n\n\t// @ts-ignore\n\tupdateState(updatedState);\n};\n\nexport const actionHandlers = {\n\t[COMPONENT_TREE_RENDERED]: {\n\t\teffect: componentTreeRenderedEffect,\n\t},\n\t[NOW_BUTTON_CLICKED]: {\n\t\teffect: nowCellEditButtonClickedEffect,\n\t\tstopPropagation: true,\n\t},\n\t[NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED]: {\n\t\teffect: nowCellEditorContentValueUpdatedEffect,\n\t\tstopPropagation: true,\n\t},\n};\n","import {\n\tNOW_DATE_TIME_VALUE_SET,\n\tNOW_INPUT_URL_VALUE_SET,\n\tNOW_INPUT_VALUE_SET,\n\tNOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED,\n\tNOW_RADIO_BUTTONS_VALUE_SET,\n\tNOW_SELECT_SELECTED_ITEM_SET,\n\tNOW_TYPEAHEAD_MULTI_SELECTED_ITEMS_SET,\n\tNOW_HTML_VALUE_SET,\n} from '../../../../../behaviors/cellEditingBehavior/constants';\n\n/**\n * @param {Coeffects<PopoverCellEditorContentProps,State>} coeffects\n */\nconst updateInputTypeValueEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name, value },\n\t\t},\n\t\tdispatch,\n\t\tupdateState,\n\t} = coeffects;\n\n\tconst isLabel =\n\t\tname === 'cellEditingUrlLabel' || name === 'cellEditingLinkLabel';\n\n\tconst isPersonKey = name === 'cellEditingPersonKey';\n\n\tlet updateProperty, payload;\n\n\tif (isLabel) {\n\t\tupdateProperty = 'cellEditLabel';\n\t\tpayload = { label: value };\n\t} else if (isPersonKey) {\n\t\tupdateProperty = 'cellEditPersonKey';\n\t\tpayload = { personKey: value };\n\t} else {\n\t\tupdateProperty = 'cellEditValue';\n\t\tpayload = { value: value };\n\t}\n\n\tupdateState({ [updateProperty]: value });\n\n\tdispatch(NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED, payload);\n};\n\n/**\n * @param {Coeffects<PopoverCellEditorContentProps,State>} coeffects\n */\nconst updateUrlValueEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { name, value },\n\t\t},\n\t\tdispatch,\n\t\tupdateState,\n\t} = coeffects;\n\n\tconst isPersonImageUrl = name === 'cellEditingPersonImageUrl';\n\n\tlet updateProperty, payload;\n\n\tif (isPersonImageUrl) {\n\t\tupdateProperty = 'cellEditPersonUrl';\n\t\tpayload = { imageSrc: value };\n\t} else {\n\t\tupdateProperty = 'cellEditValue';\n\t\tpayload = { value: value };\n\t}\n\n\tupdateState({ [updateProperty]: value });\n\n\tdispatch(NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED, payload);\n};\n\n/**\n * @param {Coeffects<PopoverCellEditorContentProps,State>} coeffects\n */\nconst updateBooleanValueEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { value },\n\t\t},\n\t\tdispatch,\n\t\tupdateState,\n\t} = coeffects;\n\n\tconst newValue = value === 'true';\n\n\t// @ts-ignore\n\tupdateState({ cellEditValue: newValue });\n\n\tdispatch(NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED, {\n\t\tvalue: newValue,\n\t});\n};\n\n/**\n * @param {Coeffects<PopoverCellEditorContentProps,State>} coeffects\n */\nconst updateDateTimeValueEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { value },\n\t\t},\n\t\tdispatch,\n\t\tupdateState,\n\t} = coeffects;\n\n\t// @ts-ignore\n\tupdateState({ cellEditValue: value });\n\n\tdispatch(NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED, {\n\t\tvalue: value,\n\t});\n};\n\n/**\n * @param {Coeffects<PopoverCellEditorContentProps,State>} coeffects\n */\nconst updatePillsValueEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { value },\n\t\t},\n\t\tdispatch,\n\t\tupdateState,\n\t} = coeffects;\n\n\t// @ts-ignore\n\tupdateState({ cellEditValue: value });\n\n\tdispatch(NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED, {\n\t\tvalue: value,\n\t});\n};\n\n/**\n * @param {Coeffects<PopoverCellEditorContentProps,State>} coeffects\n */\nconst updateChoiceValueEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { value },\n\t\t},\n\t\thost: { localName },\n\t\tdispatch,\n\t\tupdateState,\n\t} = coeffects;\n\n\t// @ts-ignore\n\tconst isIconTypeCellEditor =\n\t\tlocalName === 'now-list-icon-cell-editor-content';\n\n\tconst updateProperty = isIconTypeCellEditor\n\t\t? 'cellEditColor'\n\t\t: 'cellEditValue';\n\n\tupdateState({ [updateProperty]: value });\n\n\tconst payload = isIconTypeCellEditor ? { color: value } : { value };\n\n\tdispatch(NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED, payload);\n};\n\n/**\n * @param {Coeffects<PopoverCellEditorContentProps,State>} coeffects\n */\nconst updateHTMLValueEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { value },\n\t\t},\n\t\tdispatch,\n\t\tupdateState,\n\t} = coeffects;\n\n\t// @ts-ignore\n\tupdateState({ cellEditValue: value });\n\n\tdispatch(NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED, {\n\t\tvalue: value,\n\t});\n};\n\nexport const actionHandlers = {\n\t[NOW_INPUT_VALUE_SET]: {\n\t\teffect: updateInputTypeValueEffect,\n\t\tstopPropagation: true,\n\t},\n\t[NOW_RADIO_BUTTONS_VALUE_SET]: {\n\t\teffect: updateBooleanValueEffect,\n\t\tstopPropagation: true,\n\t},\n\t[NOW_DATE_TIME_VALUE_SET]: {\n\t\teffect: updateDateTimeValueEffect,\n\t\tstopPropagation: true,\n\t},\n\t[NOW_TYPEAHEAD_MULTI_SELECTED_ITEMS_SET]: {\n\t\teffect: updatePillsValueEffect,\n\t\tstopPropagation: true,\n\t},\n\t[NOW_SELECT_SELECTED_ITEM_SET]: {\n\t\teffect: updateChoiceValueEffect,\n\t\tstopPropagation: true,\n\t},\n\t[NOW_INPUT_URL_VALUE_SET]: {\n\t\teffect: updateUrlValueEffect,\n\t\tstopPropagation: true,\n\t},\n\t[NOW_HTML_VALUE_SET]: {\n\t\teffect: updateHTMLValueEffect,\n\t\tstopPropagation: true,\n\t},\n};\n","import { createCustomElement } from '@servicenow/ui-core';\n\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\nimport '@servicenow/now-input';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue: String}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditValue } = state;\n\treturn (\n\t\t<div className=\"popover-string-cell-editor-content-container\">\n\t\t\t<now-input\n\t\t\t\ttype=\"text\"\n\t\t\t\tname=\"cellEditingString\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tvalue={cellEditValue}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-string-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\treturn {\n\t\t\tcellEditValue: value,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { createCustomElement } from '@servicenow/ui-core';\n\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\nimport '@servicenow/now-input';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue:Number}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditValue } = state;\n\n\treturn (\n\t\t<div className=\"popover-currency-cell-editor-content-container\">\n\t\t\t<now-input\n\t\t\t\ttype=\"number\"\n\t\t\t\tname=\"cellEditingCurrency\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tvalue={cellEditValue}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-currency-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\treturn {\n\t\t\tcellEditValue: value,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { createCustomElement } from '@servicenow/ui-core';\n\nimport { BOOLEAN_CHOICES } from '../../../fields/boolean/constants.js';\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\nimport '@servicenow/now-radio-buttons';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue: Boolean}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditValue } = state;\n\n\tconst initialValue = cellEditValue ? 'true' : 'false';\n\n\treturn (\n\t\t<div className=\"popover-boolean-cell-editor-content-container\">\n\t\t\t<now-radio-buttons\n\t\t\t\tname=\"cellEditingBooleanChoice\"\n\t\t\t\tmanageValue={true}\n\t\t\t\tvalue={initialValue}\n\t\t\t\toptions={BOOLEAN_CHOICES}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-boolean-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\treturn {\n\t\t\tcellEditValue: value,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { createCustomElement } from '@servicenow/ui-core';\nimport { format, fromUnixTime } from 'date-fns';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { t } from 'sn-translate';\n\nimport { TYPE_NUMBER } from '../../../../../typeSchemas/columnDefinitions/columnTypes/columnTypes';\nimport { getDateEditorVariant } from '../../../../utils/dateTimeUtils';\nimport columnSelectors from '../../../../utils/selectors/columnSelectors';\nimport { DATE_EDITOR_VARIANT_SHORT } from '../../../fields/dateTime/constants';\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\nimport '@servicenow/now-date-time';\n\nconst { getDateTimeFormat, getFirstDayOfWeek } = columnSelectors;\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue: String}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst {\n\t\tcellEditValue,\n\t\tproperties: {\n\t\t\t// @ts-ignore\n\t\t\tactionsContext: { column },\n\t\t},\n\t} = state;\n\tconst dateTimeFormat = getDateTimeFormat(column);\n\tconst dateEditorVariant = getDateEditorVariant(dateTimeFormat, false);\n\n\tlet formattedDateValue = cellEditValue ?? '';\n\n\tif (typeof cellEditValue === TYPE_NUMBER) {\n\t\t// glide 'date' type are saved in the form of 2024-12-12 which is converted to unix code which is read as 2024-12-12 00:00:00 gmt.\n\t\t// when this date hits the UI it converts to local timezone which create an inconsistent date in the view.\n\t\t// to solve this for all short dates only render UTC to make saving and reading short dates is consistent.\n\t\tif (dateEditorVariant === DATE_EDITOR_VARIANT_SHORT) {\n\t\t\tformattedDateValue = formatInTimeZone(\n\t\t\t\t// FIXME: could be facing issue when local and User Pref timezones are different\n\t\t\t\tfromUnixTime(Number(cellEditValue)),\n\t\t\t\t'UTC',\n\t\t\t\tdateTimeFormat\n\t\t\t);\n\t\t} else {\n\t\t\tformattedDateValue = format(\n\t\t\t\t// FIXME: could be facing issue when local and User Pref timezones are different\n\t\t\t\tfromUnixTime(Number(cellEditValue)),\n\t\t\t\tdateTimeFormat\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className=\"popover-date-time-cell-editor-content-container\">\n\t\t\t<now-date-time\n\t\t\t\tlabel={t('Select date and time')}\n\t\t\t\ttype={dateEditorVariant}\n\t\t\t\tformat={dateTimeFormat}\n\t\t\t\tname=\"cellEditingDateTime\"\n\t\t\t\tclassName=\"date-time-type-cell-editor-content\"\n\t\t\t\tfirstDayOfWeek={getFirstDayOfWeek(column)}\n\t\t\t\tvalue={formattedDateValue}\n\t\t\t\tmanageValue={true}\n\t\t\t\tshow-default-footer-actions\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-date-time-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\treturn {\n\t\t\tcellEditValue: value,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { createCustomElement } from '@servicenow/ui-core';\n\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\nimport '@servicenow/now-input';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue:Number}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditValue } = state;\n\n\treturn (\n\t\t<div className=\"popover-number-cell-editor-content-container\">\n\t\t\t<now-input\n\t\t\t\ttype=\"number\"\n\t\t\t\tname=\"cellEditingNumber\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tvalue={cellEditValue}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-number-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\treturn {\n\t\t\tcellEditValue: value,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import {transform, isNumber, xorBy, isEmpty, debounce} from 'lodash';\nimport {\n\tgetItemForKeypress,\n\tupdateActiveDescendant,\n} from '@servicenow/now-dropdown';\n\nimport {actionTypes} from '@servicenow/ui-core';\nconst {ARIA_LIVE_REGION_UPDATE_REQUESTED} = actionTypes;\nimport {\n\tisDesktopSafari,\n\tariaLivePoliteness,\n} from '@servicenow/library-enhanced-utils';\n\nimport {t} from 'sn-translate';\nimport {TOOLTIP_HIDE, TOOLTIP_SHOW} from '@servicenow/behavior-tooltip';\n\n/**\n * Default values for the `constrain` property in both single and multi\n */\nexport const CONSTRAIN_DEFAULTS = {\n\tmaxHeight: 300,\n\twidth: 'target',\n\tmaxWidth: 'target',\n};\n\n/**\n * A returnable value to cancel a Seismic dispatch. Used when we need to\n * conditionally dispatch something and that condition is not met.\n */\nexport const CANCEL_DISPATCH = {\n\tshouldDispatch: false,\n};\n\n/**\n * A returnable value to cancel a Seismic updateState. Used when we need to\n * conditionally update component state and that condition is not met.\n */\nexport const CANCEL_UPDATE = {\n\tshouldUpdate: false,\n};\n\n/**\n * We have to inline the height styles onto dropdown-list to correctly render\n * the scrollbar within the border of the popover. The width dimensions are set\n * through now-popover's `constrain` prop\n * @param {ItemsListConstrain} constrain - the original `constrain` property\n * provided to the typeahead\n */\nexport const getDropdownListConstrain = (constrain) => {\n\treturn transform(constrain, (result, value, key) => {\n\t\tif (key === 'height' || key === 'minHeight' || key === 'maxHeight') {\n\t\t\tresult[key] = isNumber(value) ? `${value}px` : value;\n\t\t}\n\t});\n};\n\n/**\n * Flattens out any DropdownListSections with `children` into a flat array\n * containing only the items.\n * @param {Array<DropdownListSection>} items - the items to flatten out\n */\nexport const flattenItems = (items) =>\n\titems.flatMap((item) => {\n\t\treturn !isEmpty(item.children) ? item.children : item;\n\t});\n\n/**\n * For typeahead-multi: if the item is in the selectedItems array already\n * remove that item, otherwise add it\n * @param {Array.<DropdownListItem>} selectedItems - currently selected items\n * @param {DropdownListItem} item - item to add (if not present in\n * selectedItems) or remove (if present in selectedItems)\n */\nexport const toggleSelectedItem = (selectedItems, item) => {\n\treturn xorBy(selectedItems, [item], (item) => item.id);\n};\n\n/**\n * Undefer the dropdown list if its being opened\n * @param {boolean} opened - if the list is being opened\n * @param {boolean} hasBeenUndeferred - if the list has already been undeferred\n * @param {Element} listRef - reference to the list to undefer\n */\n\nexport const undeferList = (opened, hasBeenUndeferred, listRef) => {\n\tif (!hasBeenUndeferred && opened) {\n\t\tif (listRef) {\n\t\t\tlistRef.removeAttribute('defer');\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn hasBeenUndeferred;\n};\n\n/**\n * Internal search for typeaheads. Searches on label and sublabel.\n * @param {Array<DropdownListItem>} items - items to search through\n * @param {string} value - substring to match the items' label and sublabel against\n * @param {(\"managed\"|\"initial\"|\"contains\")} search - what type of search to\n * perform. Should match the typeaheads' `search` property.\n */\nexport const getSearchMatches = (items, value, search) => {\n\tif (!items || !items.length) {\n\t\treturn [];\n\t}\n\n\tif (!value || search === 'managed') {\n\t\treturn items;\n\t}\n\n\tconst matchesLabel = {};\n\n\treturn (\n\t\titems\n\t\t\t.reduce((result, item) => {\n\t\t\t\tconst children = getSearchMatches(item.children, value, search);\n\t\t\t\tif (children.length) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\tchildren,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst label = item.label ? item.label.toLowerCase() : '';\n\t\t\t\t\tconst sublabel = item.sublabel ? item.sublabel.toLowerCase() : '';\n\t\t\t\t\tconst lowerValue = value.toLowerCase();\n\n\t\t\t\t\tconst method = search === 'contains' ? 'includes' : 'startsWith';\n\n\t\t\t\t\tif (label[method](lowerValue)) {\n\t\t\t\t\t\tmatchesLabel[item.id] = true;\n\t\t\t\t\t\tresult.push(item);\n\t\t\t\t\t} else if (sublabel[method](lowerValue)) {\n\t\t\t\t\t\tmatchesLabel[item.id] = false;\n\t\t\t\t\t\tresult.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t\t// sort the items so that matches on primary label come\n\t\t\t// before matches on sublabel\n\t\t\t.sort((a, b) => matchesLabel[b.id] - matchesLabel[a.id])\n\t);\n};\n\n/**\n * Returns an item whose label matches the value (case-insensitively), - the items to flatten out\n * but only if that item is not already selected.\n *\n * @param {(Array.<DropdownListItem> | Array.<DropdownListSection>)} items\n * @param {string|number|Array<DropdownListItem>} selected - already\n * selected items.  for typeahead single, this is just an item ID. For\n * multi, this is an array of item objects.\n * @param {string} value - the value to compare against item labels\n */\nexport function autoSelectMatch(items, selected, value) {\n\tif (!value) return null;\n\n\tconst selectedIds = Array.isArray(selected)\n\t\t? selected.map((item) => item.id)\n\t\t: [selected];\n\tconst exactMatches = flattenItems(items).filter(\n\t\t(item) => item.label && item.label.toLowerCase() === value.toLowerCase(),\n\t);\n\n\tif (exactMatches.length === 1 && !selectedIds.includes(exactMatches[0].id)) {\n\t\treturn exactMatches[0];\n\t}\n\n\treturn null;\n}\n\n/**\n * Finds a item in the `items` array that has the matching id\n * @param {Array<DropdownListSection>} items - the items to search through\n * @param {string|number} id - the item ID to search for\n */\nexport function getItemById(items, id) {\n\tconst flattenedItems = flattenItems(items);\n\treturn flattenedItems.find((item) => item.id === id);\n}\n\nexport const dispatchSafariLiveMsg = (dispatch, message) => {\n\tif (isDesktopSafari()) {\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage: message,\n\t\t\ttype: ariaLivePoliteness.POLITE,\n\t\t});\n\t}\n};\n\n/**\n * Shared handler for Arrow + Home/End keys, to move the active item within\n * the dropdown list:\n * - ArrowDown: make the next item the active item, or opens the panel if not yet opened\n * - ArrowUp: make the previous item the active item\n * - Home: make the first item active\n * - End: make the last item active\n * @param {Event} event - the event for the keypress\n * @param {Function} updateState - Seismic helper function for the component\n * @param {string} optionPrefix - ID prefix used for each item in the dropdown list\n */\nexport function moveActiveItem(\n\tevent,\n\tupdateState,\n\toptionPrefix,\n\tdispatch,\n\tstate,\n) {\n\t/*If the dropdown is closed, we want the Home and the End buttons to work as usual.\n\t(Home = Cursor moves to the start of the text, End = Cursor moves to the end of the text).\n\t*/\n\tif (state.opened) event.preventDefault();\n\tconst {key} = event;\n\tconst input = event.target;\n\n\tupdateState(({state, properties}) => {\n\t\tconst {opened, activeItemId} = state;\n\t\tconst {disabled, readonly, items, search, selectedItem, selectedItems} =\n\t\t\tproperties;\n\t\t// single uses value from props. multi uses value from input\n\t\tconst value = properties.value || input.value;\n\n\t\t// ArrowDown is the only one that does something when the panel is closed.\n\t\tif (key !== 'ArrowDown' && !opened) {\n\t\t\treturn CANCEL_UPDATE;\n\t\t}\n\n\t\tconst filteredItems = getSearchMatches(items, value, search);\n\n\t\tif (key === 'ArrowUp') {\n\t\t\t// up arrow when nothing is focused closes the panel\n\t\t\tif (!activeItemId) {\n\t\t\t\tdispatchSafariLiveMsg(dispatch, t('dropdown collapsed'));\n\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: 'opened',\n\t\t\t\t\tvalue: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// up arrow when the first item is focused removes focus\n\t\t\tif (activeItemId === flattenItems(filteredItems)[0].id) {\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: 'activeItemId',\n\t\t\t\t\tvalue: null,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// down arrow opens the panel if closed\n\t\tif (key === 'ArrowDown') {\n\t\t\tif (!opened && !disabled && !readonly) {\n\t\t\t\tdispatchSafariLiveMsg(dispatch, t('dropdown expanded'));\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: 'opened',\n\t\t\t\t\tvalue: true,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// for all other cases, move focus to the next item\n\t\tconst nextItem = getItemForKeypress(filteredItems, activeItemId, key);\n\t\tif (!nextItem) {\n\t\t\treturn CANCEL_UPDATE;\n\t\t}\n\t\tif (selectedItem && selectedItem === nextItem.id) {\n\t\t\tdispatchSafariLiveMsg(dispatch, t(`{0} selected`, nextItem.label));\n\t\t} else if (\n\t\t\tselectedItems &&\n\t\t\tselectedItems?.length > 0 &&\n\t\t\tselectedItems?.find((item) => item.id === nextItem.id)\n\t\t) {\n\t\t\tdispatchSafariLiveMsg(dispatch, t(`{0} selected`, nextItem.label));\n\t\t} else {\n\t\t\tdispatchSafariLiveMsg(dispatch, nextItem.label);\n\t\t}\n\t\tupdateActiveDescendant(input, `${optionPrefix}-${nextItem.id}`);\n\n\t\treturn {\n\t\t\toperation: 'set',\n\t\t\tpath: 'activeItemId',\n\t\t\tvalue: nextItem.id,\n\t\t};\n\t});\n}\n\n/**\n * Toggles the `opened` state for the component, which corresponds to whether\n * or not the panel is rendered\n * @param {Function} updateState - Seismic helper for the component\n */\nexport function togglePanel(updateState, dispatch) {\n\tupdateState(({state, properties}) => {\n\t\tconst {opened} = state;\n\t\tconst {disabled, readonly, disableAutoClose} = properties;\n\t\tif (readonly || disabled) {\n\t\t\treturn CANCEL_UPDATE;\n\t\t}\n\n\t\tlet ariaLiveText = !opened\n\t\t\t? t('dropdown expanded')\n\t\t\t: t('dropdown collapsed');\n\n\t\tif (!disableAutoClose) {\n\t\t\tdispatchSafariLiveMsg(dispatch, ariaLiveText);\n\t\t}\n\n\t\treturn {\n\t\t\toperation: 'assign',\n\t\t\tvalue: {\n\t\t\t\topened: disableAutoClose || !opened,\n\t\t\t\tactiveItemId: disableAutoClose ? state.activeItemId : null,\n\t\t\t},\n\t\t};\n\t});\n}\n\n/**\n * Shared blur event handler for single and multi. Updates the `hasFocus` state\n * and will perform any validation if the panel is already closed.\n * @param {Function} dispatch - Seismic helper for the component\n * @param {Function} updateState - Seismic helper for the component\n */\nexport const handleBlur = (dispatch, updateState) => {\n\tupdateState({\n\t\tshouldRender: true,\n\t\toperation: 'set',\n\t\tpath: 'hasFocus',\n\t\tvalue: false,\n\t});\n\n\t// when the panel is closed, we can do immediate validation. This is used\n\t// when the user tabs through the field without activating the panel.\n\t//\n\t// when the panel is opened, don't do anything on input blur. Instead, wait\n\t// until we get a popover close event (see NOW_POPOVER#OPENED_SET\n\t// actionHandler)\n\tdispatch(({state}) => {\n\t\tconst {opened} = state;\n\n\t\tif (opened) {\n\t\t\treturn CANCEL_DISPATCH;\n\t\t}\n\t\treturn {\n\t\t\ttype: 'PRIVATE#BLUR',\n\t\t\tpayload: {},\n\t\t};\n\t});\n};\n\n/**\n * Shared focus event handler for single and multi. Updates the `hasFocus` state\n * @param {Function} updateState - Seismic helper for the component\n */\nexport const handleFocus = (updateState) => {\n\tupdateState(() => ({\n\t\toperation: 'set',\n\t\tpath: 'hasFocus',\n\t\tvalue: true,\n\t\tshouldRender: true,\n\t}));\n};\n\nexport const ariaLiveNoResults = debounce((dispatch, search) => {\n\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: t('No results found'),\n\t\ttype: ariaLivePoliteness.POLITE,\n\t\treplaceContent: search && search === 'managed',\n\t});\n}, 250);\n\nexport const ariaLiveNumResults = debounce((dispatch, length, search) => {\n\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: t(`{0} items`, length),\n\t\ttype: ariaLivePoliteness.POLITE,\n\t\treplaceContent: search && search === 'managed',\n\t});\n}, 250);\n\nexport const ariaLiveSectionResults = debounce((dispatch, announcement) => {\n\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announcement,\n\t\ttype: ariaLivePoliteness.POLITE,\n\t});\n}, 250);\n\nexport const showPlaceholderTooltip = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nexport const hidePlaceholderTooltip = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n","import {debounce} from 'lodash';\n\nexport const debounceDispatch = debounce((fn) => fn(), 250);\n","import {pick} from 'lodash';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\ttoArray,\n\tmakeRedispatchEffect,\n\tfilterAriaAttributes,\n\tisDesktopSafari,\n} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-typeahead.scss';\nimport {\n\tCONSTRAIN_DEFAULTS,\n\tCANCEL_DISPATCH,\n\tCANCEL_UPDATE,\n\tautoSelectMatch,\n\tmoveActiveItem,\n\tgetSearchMatches,\n\tgetItemById,\n\tgetDropdownListConstrain,\n\ttogglePanel,\n\thandleBlur,\n\thandleFocus,\n\tariaLiveNoResults,\n\tariaLiveNumResults,\n\tshowPlaceholderTooltip,\n\thidePlaceholderTooltip,\n\tariaLiveSectionResults,\n} from './utils/typeahead';\nimport {debounceDispatch} from './utils/debounce-dispatch';\nimport '@servicenow/now-dropdown';\nimport {itemsSchema, constrainSchema} from '@servicenow/now-dropdown';\nimport '@servicenow/now-popover';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport deferBehavior from '@servicenow/behavior-defer';\nimport {\n\trenderFormFieldLabel,\n\trenderFormFieldMessages,\n\trenderLabelEnd,\n\tgetAriaDescribedByList,\n} from '@servicenow/now-input';\nimport {t} from 'sn-translate';\nimport {messagesSchema} from '@servicenow/now-input';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior, {TOOLTIP_HIDE} from '@servicenow/behavior-tooltip';\nimport {fieldLayoutSchema} from '@servicenow/now-input';\nimport {getColumnStyles} from '@servicenow/library-enhanced-utils';\n\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\n\nconst announceMessage = (label, content, dispatch) => {\n\tconst announcement = label + ' ' + content.content;\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announcement,\n\t\ttype: 'polite',\n\t});\n};\n\nconst handlePlaceholderTooltipVisibility = (\n\te,\n\tvalue,\n\tdispatch,\n\tstate,\n\tupdateState,\n) => {\n\tconst {placeholderTooltipVisible} = state;\n\tif (value) {\n\t\tif (placeholderTooltipVisible) {\n\t\t\thidePlaceholderTooltip(dispatch)(e);\n\t\t\tupdateState({placeholderTooltipVisible: false});\n\t\t}\n\t\treturn;\n\t}\n\tif (\n\t\te.type === 'mouseenter' ||\n\t\te.type === 'focusin' ||\n\t\t(e.type === 'input' && !value)\n\t) {\n\t\tshowPlaceholderTooltip(dispatch)(e);\n\t\tupdateState({placeholderTooltipVisible: true});\n\t} else if (\n\t\te.type === 'mouseleave' ||\n\t\te.type === 'focusout' ||\n\t\te.type === 'click' ||\n\t\t(e.type === 'keydown' && e?.key === 'ArrowDown')\n\t) {\n\t\thidePlaceholderTooltip(dispatch)(e);\n\t\tupdateState({placeholderTooltipVisible: false});\n\t}\n};\n\nconst handleKeydown = (event, dispatch, state, updateState, optionPrefix) => {\n\tconst {key, shiftKey} = event;\n\tconst value = event.target.value;\n\tconst {placeholderOverflow} = state;\n\tif (placeholderOverflow) {\n\t\thandlePlaceholderTooltipVisibility(\n\t\t\tevent,\n\t\t\tvalue,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t);\n\t}\n\tif (\n\t\t(key === 'ArrowUp' ||\n\t\t\tkey === 'ArrowDown' ||\n\t\t\tkey === 'Home' ||\n\t\t\tkey === 'End') &&\n\t\t!shiftKey\n\t) {\n\t\tmoveActiveItem(event, updateState, optionPrefix, dispatch, state);\n\t}\n\n\tif (key === 'Enter') {\n\t\t// Safari Issue Workaround: In Safari 16.4+, the VO focus ring is losing focus of the input\n\t\t// when Enter is selected on an item in the dropdown. This code is to prevent the lost focus.\n\t\tif (isDesktopSafari()) {\n\t\t\tevent.target.blur();\n\t\t\tevent.target.focus();\n\t\t}\n\n\t\t// Select the item\n\t\t// 1. If the panel is open and there is an activeItemId\n\t\t// 2. If the panel input exactly matches the label of only one item\n\n\t\tdispatch(({state, properties}) => {\n\t\t\tconst {items, selectedItem, name} = properties;\n\t\t\tconst {activeItemId, opened} = state;\n\n\t\t\tconst nextItem = activeItemId\n\t\t\t\t? getItemById(items, activeItemId)\n\t\t\t\t: autoSelectMatch(items, selectedItem, value);\n\n\t\t\tconst itemSelectable = nextItem && !nextItem.disabled;\n\t\t\tconst itemSelected = opened && nextItem;\n\n\t\t\tif (itemSelectable || !opened || !itemSelected) {\n\t\t\t\ttogglePanel(updateState, dispatch);\n\t\t\t}\n\n\t\t\tif (itemSelectable) {\n\t\t\t\tconst setItemPayload = {...nextItem, actionSource: 'select'};\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'PRIVATE#SET_ITEM',\n\t\t\t\t\tpayload: setItemPayload,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_TYPEAHEAD#ENTER_KEYDOWN',\n\t\t\t\t\tpayload: {name, value},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n};\n\nconst handleInput = (event, dispatch, state, updateState) => {\n\tconst {value} = event.target;\n\tconst {placeholderOverflow} = state;\n\tif (placeholderOverflow) {\n\t\thandlePlaceholderTooltipVisibility(\n\t\t\tevent,\n\t\t\tvalue,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t);\n\t}\n\t// while typing, if the input field has some text, open the panel\n\tupdateState(({state}) => {\n\t\treturn {\n\t\t\toperation: 'assign',\n\t\t\tvalue: {\n\t\t\t\t// input event will fire when clearing out the field. In that case we\n\t\t\t\t// want to maintain the current `opened` state of the panel rather than\n\t\t\t\t// forcing it open.\n\t\t\t\topened: value ? true : state.opened,\n\t\t\t},\n\t\t};\n\t});\n\n\t// typing into the input always unsets the current item, user will need to\n\t// select again from the panel.\n\tdebounceDispatch(() => {\n\t\tdispatch('PRIVATE#SET_ITEM', {\n\t\t\tid: null,\n\t\t\tlabel: value,\n\t\t\tactionSource: 'input',\n\t\t});\n\t});\n};\n\nconst handleClick = (event, dispatch, state, updateState) => {\n\t// clicks open the panel unless disabled/readonly\n\tconst {value} = event.target;\n\tconst {disabled, readonly} = state.properties;\n\tconst {placeholderOverflow} = state;\n\tif ((!disabled || !readonly) && placeholderOverflow) {\n\t\thandlePlaceholderTooltipVisibility(\n\t\t\tevent,\n\t\t\tvalue,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t);\n\t}\n\tupdateState(({properties}) => {\n\t\tconst {disabled, readonly} = properties;\n\n\t\tif (disabled || readonly) {\n\t\t\treturn CANCEL_UPDATE;\n\t\t}\n\n\t\treturn {\n\t\t\toperation: 'set',\n\t\t\tpath: 'opened',\n\t\t\tvalue: true,\n\t\t};\n\t});\n};\n\nconst ariaAnnouncements = (\n\tfilteredItems,\n\titems,\n\tdispatch,\n\tupdateState,\n\tvalue,\n\tsearch,\n) => {\n\tlet announcements = [],\n\t\tuncategorizedCount = 0,\n\t\thasChildren = false,\n\t\tchildCount = 0,\n\t\ttotalItems = 0,\n\t\tannouncementMessage = '';\n\tif (filteredItems.length === 0) {\n\t\tariaLiveNoResults(dispatch);\n\t} else {\n\t\tfilteredItems.forEach((item) => {\n\t\t\tlet getSectionHeader = item.ariaLabel || item.label || t('uncategorized');\n\t\t\tif (item.children) {\n\t\t\t\thasChildren = true;\n\t\t\t\tchildCount = item.children.length;\n\t\t\t\t//if the dropdown list has a list of items with children, announce the number of items with the section headers\n\t\t\t\tannouncementMessage = t(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'now-typeahead-search-labels',\n\t\t\t\t\t\tmessage: '{childCount} items in {sectionHeader}',\n\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t'ARIA message for screenreader users telling them the number of child items in a group with header of sectionHeader',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tchildCount: childCount,\n\t\t\t\t\t\tsectionHeader: getSectionHeader,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tannouncements.push(announcementMessage);\n\t\t\t\ttotalItems += item.children.length;\n\t\t\t} else {\n\t\t\t\tuncategorizedCount += 1; // Count uncategorized items\n\t\t\t\ttotalItems++;\n\t\t\t}\n\t\t});\n\n\t\t//if the user has removed all the text, go back to announcing the number of items\n\t\tif (filteredItems.length === items.length && !value) {\n\t\t\tariaLiveNumResults(dispatch, totalItems, search);\n\t\t\tannouncements = [];\n\t\t}\n\n\t\t//if the dropdown list is a plain list of items without any children, announce the number of items\n\t\telse if (!hasChildren) {\n\t\t\tariaLiveNumResults(dispatch, filteredItems.length, search);\n\t\t\tannouncements = [];\n\t\t} else {\n\t\t\t// If there are uncategorized items, add them to the announcement\n\t\t\tif (uncategorizedCount > 0) {\n\t\t\t\tannouncementMessage = t(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'now-typeahead-search-uncategorized',\n\t\t\t\t\t\tmessage: '{uncategorizedCount} items in uncategorized',\n\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t'ARIA message for screenreader users telling them the number of items in an uncategorized section.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tuncategorizedCount: uncategorizedCount,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tannouncements.push(announcementMessage);\n\t\t\t}\n\t\t\tariaLiveSectionResults(dispatch, announcements.join(', '));\n\t\t\tannouncements = [];\n\t\t}\n\t}\n\n\tupdateState({\n\t\tannounceResults: false,\n\t});\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {activeItemId, opened, hasFocus, announceResults, placeholderOverflow} =\n\t\tstate;\n\tconst {\n\t\tsize,\n\t\tautofocus,\n\t\tdisabled,\n\t\thelperContent,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\titemsListConstrain,\n\t\tlabel,\n\t\tmessages,\n\t\titems,\n\t\tselectedItem,\n\t\tsearch,\n\t\toptional,\n\t\tplaceholder,\n\t\treadonly,\n\t\trequired,\n\t\tvalue = '',\n\t\tnowId,\n\t\tname = `typeahead-${nowId}`,\n\t\tconfigAria,\n\t\tfieldLayout: {layout, columns},\n\t\twrapLabel,\n\t} = state.properties;\n\n\tconst constrain = {...CONSTRAIN_DEFAULTS, ...itemsListConstrain};\n\tconst filteredItems = getSearchMatches(items, value, search);\n\n\tif (announceResults) {\n\t\tariaAnnouncements(\n\t\t\tfilteredItems,\n\t\t\titems,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tvalue,\n\t\t\tsearch,\n\t\t);\n\t}\n\n\tconst listId = `now-dropdown-list-${nowId}`;\n\tconst optionPrefix = `${listId}-option`;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={\n\t\t\t\tlayout === 'horizontal' ? {...getColumnStyles(columns)} : undefined\n\t\t\t}\n\t\t\tclass={{\n\t\t\t\t'now-typeahead': true,\n\t\t\t\t'now-form-field-layout': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t\t[`-${layout}`]: layout,\n\t\t\t\t'will-wrap': wrapLabel,\n\t\t\t}}\n\t\t>\n\t\t\t{renderFormFieldLabel(\n\t\t\t\tnowId,\n\t\t\t\tinvalid,\n\t\t\t\trequired,\n\t\t\t\toptional,\n\t\t\t\tlabel,\n\t\t\t\thelperContent,\n\t\t\t\thideRequiredIndicator,\n\t\t\t\t'label',\n\t\t\t\tlayout,\n\t\t\t\topened,\n\t\t\t\twrapLabel,\n\t\t\t)}\n\t\t\t<now-popover\n\t\t\t\tbare\n\t\t\t\tconstrain={pick(constrain, ['width', 'minWidth', 'maxWidth'])}\n\t\t\t\tmanage-opened\n\t\t\t\topened={opened}\n\t\t\t\tappend-to-payload={{id: 'now-dropdown-list'}}\n\t\t\t\tinteraction-type=\"listbox\"\n\t\t\t\tdisable-scroll\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\ton-click={(event) => {\n\t\t\t\t\t\tif (disabled || readonly) {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-typeahead-field': true,\n\t\t\t\t\t\t'now-form-field': true,\n\t\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t\t'is-readonly': readonly,\n\t\t\t\t\t\t'has-focus': hasFocus,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"now-form-field-slot -start\">\n\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\tname=\"start\"\n\t\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid={`form-field-${nowId}`}\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-activedescendant={\n\t\t\t\t\t\t\tactiveItemId ? `${optionPrefix}-${activeItemId}` : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\taria-describedby={getAriaDescribedByList({\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\toptional,\n\t\t\t\t\t\t\tnowId,\n\t\t\t\t\t\t\tmessages,\n\t\t\t\t\t\t\tlayout,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\tdata-tooltip={placeholder}\n\t\t\t\t\t\taria-expanded={String(opened)}\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\taria-owns={`${listId}-listbox`}\n\t\t\t\t\t\taria-controls={`${listId}-listbox`}\n\t\t\t\t\t\tclassName=\"now-typeahead-native-input\"\n\t\t\t\t\t\tautofocus={autofocus}\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\treadonly={readonly}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\tvalue={!value && readonly ? '—' : value}\n\t\t\t\t\t\taria-label={!value && readonly ? '' : undefined}\n\t\t\t\t\t\ton-mouseenter={(e) => {\n\t\t\t\t\t\t\tupdateState({hasHover: true});\n\t\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-mouseleave={(e) => {\n\t\t\t\t\t\t\tupdateState({hasHover: false});\n\t\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-focusin={(e) => {\n\t\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-focusout={(e) => {\n\t\t\t\t\t\t\tif (placeholderOverflow) {\n\t\t\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-keydown={(event) =>\n\t\t\t\t\t\t\thandleKeydown(event, dispatch, state, updateState, optionPrefix)\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-input={(event) =>\n\t\t\t\t\t\t\thandleInput(event, dispatch, state, updateState)\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-click={(event) =>\n\t\t\t\t\t\t\thandleClick(event, dispatch, state, updateState)\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-blur={() => handleBlur(dispatch, updateState)}\n\t\t\t\t\t\ton-focus={() => handleFocus(updateState)}\n\t\t\t\t\t\t{...filterAriaAttributes(configAria, 'input')}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"now-form-field-slot -end\">\n\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\tname=\"end\"\n\t\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ttogglePanel(updateState, dispatch);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<now-dropdown-list\n\t\t\t\t\tdefer\n\t\t\t\t\tstyle={getDropdownListConstrain(constrain)}\n\t\t\t\t\tslot=\"content\"\n\t\t\t\t\tselect=\"single\"\n\t\t\t\t\thide-checkmark\n\t\t\t\t\titems={filteredItems}\n\t\t\t\t\tselected-items={toArray(selectedItem)}\n\t\t\t\t\tmanage-selected-items\n\t\t\t\t\tactive-item={activeItemId === null ? undefined : activeItemId}\n\t\t\t\t\tsearch-term={value}\n\t\t\t\t\tscreen-reader-id={opened ? listId : undefined}\n\t\t\t\t\tconfig-aria={\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tpanel: {'aria-label': label},\n\t\t\t\t\t\t\t\t\t...configAria,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: configAria\n\t\t\t\t\t}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tdisplay-typeahead-results\n\t\t\t\t\tappend-to-meta={{componentId: nowId, fromTypeahead: true}}\n\t\t\t\t/>\n\t\t\t</now-popover>\n\t\t\t{layout === 'horizontal' && renderLabelEnd()}\n\t\t\t<div className=\"now-form-field-messages\">\n\t\t\t\t{renderFormFieldMessages(nowId, messages, 0)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n *\n * Supplements an input field with a dropdown panel of relevant options and highlights\n * matching values as the user enters characters into the input field.\n *\n * ```jsx\n * const items = [\n *   {\n *     id: \"ablumsondi\",\n *     label: \"Ab Blumson\",\n *     sublabel: \"ablumsondi@scribd.com\",\n *   },\n *   {\n *     id: \"amolfinofi\",\n *     label: \"Abagael Molfino\",\n *     sublabel: \"amolfinofi@reverbnation.com\",\n *   },\n *   {\n *     id: \"aolynn99\",\n *     label: \"Abbot O'Lynn\",\n *     sublabel: \"aolynn99@shop-pro.jp\",\n *   }\n * ];\n *\n * <now-typeahead label=\"User\" items={items} />\n *\n * <now-typeahead label=\"User\" items={items} invalid required messages={[\n *   {\n *    status: 'critical',\n *    icon: 'circle-close-outline',\n *    content: 'Please fill out this required field.'\n *   }\n * ]} />\n *\n * <now-typeahead label=\"User\" items={items}>\n *   <now-button-iconic slot=\"end\" icon=\"circle-info-outline\" tooltip-content=\"Preview record\" />\n * </now-typeahead>\n * ```\n *\n * @seismicElement now-typeahead\n * @summary Form element for text input fields with a dropdown to show relevant or suggested values.\n * @uib.label Typeahead\n * @uib.icon typeahead\n * @uib.description Form element for text input fields with a dropdown to show relevant or suggested values\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, search, disabled, readonly, autofocus, placeholder, value, manageValue, name, items, selectedItem, manageSelectedItem, itemsListConstrain, label, wrapLabel, required, hideRequiredIndicator, optional, helperContent, invalid, manageInvalid, messages, configAria, fieldLayout, landmark\n * @uib.layout.value.children placeholder, value, manageValue, name\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.list.children items, selectedItem, manageSelectedItem, itemsListConstrain\n * @uib.layout.list.icon list-outline\n * @uib.layout.label.children label, wrapLabel, required, hideRequiredIndicator, optional, helperContent\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.accessibility.children configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_TYPEAHEAD#LIST_VISIBLE, NOW_TYPEAHEAD#LIST_HIDDEN, NOW_TYPEAHEAD#INVALID_SET, NOW_TYPEAHEAD#SELECTED_ITEM_SET, NOW_TYPEAHEAD#VALUE_SET, NOW_TYPEAHEAD#ENTER_KEYDOWN\n * @uib.innerComponents now-dropdown-list, now-icon, now-popover, now-input\n */\ncreateEnhancedElement('now-typeahead', {\n\tproperties: {\n\t\t/**\n\t\t * Sets the typeahead size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An array of `DropdownListItem` or `DropdownListSection` objects that are used as\n\t\t * possible items that the user can select from.\n\t\t * @type {(Array.<DropdownListItem> | Array.<DropdownListSection>)}\n\t\t * @uib.label List items\n\t\t * @uib.description Array of possible items that the user can select from\n\t\t * @uib.defaultValue [{\"id\": \"usr1\",\"label\": \"User 1\",\"sublabel\": \"user1@servicenow.com\",\"avatarProps\": {\"userName\": \"User 1\",\"imageSrc\": \"http://i.pravatar.cc/24?u=33\",\"presence\": \"away\"}},{\"id\": \"usr2\",\"label\": \"User 2\",\"sublabel\": \"user2@servicenow.com\",\"avatarProps\": {\"userName\": \"User 2\",\"imageSrc\": \"http://i.pravatar.cc/24?u=34\",\"presence\": \"busy\"},\"disabled\": true},{\"id\": \"usr3\",\"label\": \"User 3\",\"sublabel\": \"user3@servicenow.com\",\"avatarProps\": {\"userName\": \"User 3\",\"imageSrc\": \"http://i.pravatar.cc/24?u=35\",\"presence\": \"offline\"}}]\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * The ID of the currently selected item. Use `manage-selected-item` to\n\t\t * override the default behavior and handle the\n\t\t * `NOW_TYPEAHEAD#SELECTED_ITEM_SET` action manually. Note: This does\n\t\t * not prevent the value from showing in the input field. To do so, use\n\t\t * `manage-value`.\n\t\t * @type {(string|number|null)}\n\t\t * @uib.description The ID of the selected item from the `items` array\n\t\t * @uib.fieldType string\n\t\t * @uib.typeMetadata.emptyStateBehavior NULL\n\t\t */\n\t\tselectedItem: {\n\t\t\tmanageable: true,\n\t\t\tschema: {type: ['string', 'number', 'null']},\n\t\t\tdependencies: ['items'],\n\t\t},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selectedItem` property.\n\t\t * An action with type `NOW_TYPEAHEAD#SELECTED_ITEM_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected items property. Use the selected item set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelectedItem: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object describing additional sizing constrains for the items list popover.\n\t\t *\n\t\t * Valid keys are (all are optional):\n\t\t *\n\t\t *  - width\n\t\t *  - minWidth\n\t\t *  - maxWidth\n\t\t *  - height\n\t\t *  - minHeight\n\t\t *  - maxHeight\n\t\t *\n\t\t * The value for each property should be a positive integer representing\n\t\t * a pixel value to apply to the corresponding content style.\n\t\t * Alternatively, you can specify the string `\"target\"` for width,\n\t\t * minWidth, or maxWidth to have that property match the width of the\n\t\t * input element.\n\t\t *\n\t\t * For example, this value ensures that the items list is at least 400x200 pixels:\n\t\t *\n\t\t *  {\n\t\t *\t\tminWidth: 400,\n\t\t *\t\tminHeight: 200\n\t\t *  }\n\t\t *\n\t\t * The default values for this property are:\n\t\t *\n\t\t *  {\n\t\t *\t\twidth: \"target\",\n\t\t *\t\tmaxHeight: 300,\n\t\t *  }\n\t\t *\n\t\t * @type {ItemsListConstrain}\n\t\t * @typedef {Object} ItemsListConstrain\n\t\t * @description Sizing constraints to enforce on the items list. For each\n\t\t * property, a number can be specified which sets that constraint in\n\t\t * pixels.  If the value is \"target\" for width, minWidth, or maxWidth,\n\t\t * the items list is sized to match the width of the input field.\n\t\t * @property {\"target\"|number} width\n\t\t * @property {\"target\"|number} minWidth\n\t\t * @property {\"target\"|number} maxWidth\n\t\t * @property {number} height\n\t\t * @property {number} minHeight\n\t\t * @property {number} maxHeight\n\t\t * @uib.label Item Size Constraints\n\t\t * @uib.description Sizing constraints to enforce on the items list. For each property, a number can be specified which sets that constraint in pixels.  If the value is \"target\" for width, minWidth, or maxWidth, the items list is sized to match the width of the input field\n\t\t */\n\t\titemsListConstrain: {schema: constrainSchema},\n\t\t/**\n\t\t * Indicates that focus should automatically be placed inside the input\n\t\t * on page load.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-focus\n\t\t * @uib.description Indicates that focus should automatically be placed inside the input on page load\n\t\t */\n\t\tautofocus: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Indicates that the user can interact with the field\n\t\t * and change its value. Field appears grayed out when disabled.\n\t\t * @type {boolean}\n\t\t * @uib.description Disable user click interactions\n\t\t */\n\t\tdisabled: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Controls how to filter the items as the user types into the input.\n\t\t * - \"managed\" (default): No filtering occurs. Use this to manually\n\t\t *   filter or search for items as the user types.\n\t\t * - \"initial\": Items whose label or sublabel begins with the\n\t\t *   input value are displayed. This is case-insensitive.\n\t\t * - \"contains\": Items whose label or sublabel contains the input value\n\t\t *   are displayed. This is case-insensitive.\n\t\t * @type {(\"managed\"|\"initial\"|\"contains\")}\n\t\t * @uib.label Search Behavior\n\t\t * @uib.description Controls how to filter the items as the user types into the integrated search input\n\t\t */\n\t\tsearch: {\n\t\t\tdefault: 'managed',\n\t\t\tschema: {type: 'string', enum: ['managed', 'initial', 'contains']},\n\t\t},\n\t\t/**\n\t\t * If set, an iconic button with popover appears next to the field\n\t\t * label for displaying additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.label Helper text\n\t\t * @uib.description If set, an iconic button with popover appears next to the field label for displaying additional hint text to the user, such as password requirements or other instructions for completing the field. Use plain text to allow for translation\n\t\t * @uib.fieldType string\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * Indicates that the field is in an incorrect state, which is\n\t\t * reflected in the field display. This property is set\n\t\t * automatically based on the current validity of the input field. Use\n\t\t * `manage-invalid` to override the default behavior and handle the\n\t\t * `NOW_TYPEAHEAD#INVALID_SET` action manually.\n\t\t * @type {boolean}\n\t\t * @uib.description Set to indicate that the field is in an incorrect state, which is reflected in the field display\n\t\t */\n\t\tinvalid: {manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_TYPEAHEAD#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Label describing the overall purpose of the input field.\n\t\t * @type {string}\n\t\t * @uib.description Label describing the overall purpose of the select field\n\t\t * @uib.defaultValue Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Array of inline alert messages that are displayed below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.description Array of inline alert messages that are displayed below the field\n\t\t * @uib.label Alert messages\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t\tschema: messagesSchema,\n\t\t},\n\t\t/**\n\t\t * Name of the field control. Dispatched along with the field value\n\t\t * on user interaction.\n\t\t * @type {string}\n\t\t * @uib.description Name of the field control which is included in dispatched actions\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the field is optional and not required to be completed by\n\t\t * the user before completing the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Visually indicates that the field is optional\n\t\t * @uib.defaultValue false\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Hint text displayed in the input when the user has not yet entered a\n\t\t * value.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder text\n\t\t * @uib.description Placeholder text for the input field. This text should hint to the user what input is expected.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field, but\n\t\t * it still appears enabled.\n\t\t * @type {boolean}\n\t\t * @uib.label Read-only\n\t\t * @uib.description Select to prevent the user from modifying the value of the input field. The input field is not disabled in this setting.\n\t\t */\n\t\treadonly: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user must enter a value in the\n\t\t * input field before they can complete the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to indicate that the user must enter a value in the field before proceeding.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the required indicator is hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Required Indicator\n\t\t * @uib.description Select to hide the required indicator. Use this for forms where most fields are required, along with the `optional` flag for any fields that are not required\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * The value of the input field. This is updated automatically\n\t\t * as the user types. Use `manage-value` to override this and handle\n\t\t * the `NOW_TYPEAHEAD#VALUE_SET` action manually. Note: This does\n\t\t * not prevent the selected items from showing in the dropdown. To do\n\t\t * so, use `manage-selected-item`.\n\t\t * @type {string}\n\t\t * @uib.description Sets a value for the input field. Unless the input field has pre-populated data, this property should be left empty\n\t\t * @uib.translatable true\n\t\t */\n\t\tvalue: {manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `value` property.\n\t\t * An action with type `NOW_TYPEAHEAD#VALUE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the value property. Use the value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValue: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-typeahead. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'input' key corresponds to the inner html `<input>`. See\n\t\t * https://www.w3.org/TR/wai-aria-1.2/#button for properties and accepted\n\t\t * values. The 'panel' key corresponds to the inner html `<div>` that acts\n\t\t * as the 'listbox'. See https://www.w3.org/TR/wai-aria-1.2/#listbox for\n\t\t * properties and accepted values.\n\t\t * @type {{ input: {'aria-*': string, role: string}, panel: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA Properties\n\t\t * @uib.defaultValue {\"panel\": {\"aria-label\": \"Options\"}}\n\t\t * @uib.description Sets ARIA properties on the inner html 'button' and 'listbox'\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tinput: configAriaLabelSchema,\n\t\t\t\t\tpanel: configAriaLabelSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slotted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this typeahead\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\n\tinitialState: {\n\t\t/**\n\t\t * The id of the currently focused item in the dropdown list.\n\t\t */\n\t\tactiveItemId: null,\n\t\t/**\n\t\t * Whether or not the popover is opened and the dropdown list is visible.\n\t\t */\n\t\topened: false,\n\t\t/**\n\t\t * Whether or not the input is focused\n\t\t */\n\t\thasFocus: false,\n\t\t/**\n\t\t * Whether or not the number of results in the dropdown should be announced by aria live.\n\t\t */\n\t\tannounceResults: false,\n\t\t/**\n\t\t * Whether or not the placeholder tooltip is visible\n\t\t */\n\t\tplaceholderTooltipVisible: false,\n\t\t/**\n\t\t * Whether or not the placeholder text is overflowing\n\t\t */\n\t\tplaceholderOverflow: false,\n\t},\n\tactionHandlers: {\n\t\t// workaround for Firefox not playing nicely with the autofocus attribute\n\t\t[COMPONENT_DOM_TREE_READY]({host, properties, updateState}) {\n\t\t\tconst input = host.shadowRoot.querySelector('input');\n\t\t\tif (properties.autofocus) {\n\t\t\t\tinput.focus();\n\t\t\t}\n\t\t\tif (properties.placeholder) {\n\t\t\t\tconst tempValue = input.value;\n\t\t\t\tinput.value = input.placeholder;\n\t\t\t\tif (input.scrollWidth > input.clientWidth) {\n\t\t\t\t\tupdateState({placeholderOverflow: true});\n\t\t\t\t}\n\t\t\t\tinput.value = tempValue;\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * -This method is added to accomodate the use case if someone programmatically sets the value and selected Item.\n\t\t * -Updates the invalid property when both (selectedItem and value) is set.\n\t\t */\n\t\t[COMPONENT_PROPERTY_CHANGED]({\n\t\t\thost,\n\t\t\taction,\n\t\t\tproperties,\n\t\t\tstate,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t}) {\n\t\t\tconst {name, value, previousValue} = action?.payload ?? {};\n\t\t\tif (name === 'value' || name === 'selectedItem') {\n\t\t\t\tconst {required, invalid, selectedItem, name, value} =\n\t\t\t\t\tstate?.properties ?? {};\n\t\t\t\tconst isInvalid = !(selectedItem && value);\n\t\t\t\tif ((required && isInvalid && !invalid) || (!isInvalid && invalid)) {\n\t\t\t\t\tdispatch(() => ({\n\t\t\t\t\t\ttype: 'NOW_TYPEAHEAD#INVALID_SET',\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tname: name,\n\t\t\t\t\t\t\tvalue: isInvalid,\n\t\t\t\t\t\t\tfieldValue: value,\n\t\t\t\t\t\t},\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (name === 'items' && state.opened) {\n\t\t\t\thost.shadowRoot.querySelector('now-popover').refit();\n\t\t\t\tif (properties.search === 'managed') {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tannounceResults: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (name === 'messages') {\n\t\t\t\tconst messagesLength = value.length;\n\t\t\t\tconst previousMessagesLength = previousValue ? previousValue.length : 0;\n\t\t\t\tif (messagesLength > previousMessagesLength) {\n\t\t\t\t\tfor (let i = previousMessagesLength; i < messagesLength; i++) {\n\t\t\t\t\t\tannounceMessage(properties.label, value[i], dispatch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// update both the selectedItem and value managed properties\n\t\t'PRIVATE#SET_ITEM': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({host, dispatch, action, properties, state, updateState}) => {\n\t\t\t\tconst {name} = properties;\n\t\t\t\tconst {id, label, actionSource} = action.payload;\n\t\t\t\tconst {placeholderTooltipVisible} = state;\n\t\t\t\tconst input = host.shadowRoot.querySelector(\n\t\t\t\t\t'.now-typeahead-native-input',\n\t\t\t\t);\n\t\t\t\tif (action.payload.label != '') {\n\t\t\t\t\tif (placeholderTooltipVisible) {\n\t\t\t\t\t\tdispatch(TOOLTIP_HIDE, {target: input});\n\t\t\t\t\t}\n\t\t\t\t\tinput.dispatchEvent(new Event('mouseleave'));\n\t\t\t\t}\n\t\t\t\tif (id !== properties.selectedItem) {\n\t\t\t\t\tdispatch('NOW_TYPEAHEAD#SELECTED_ITEM_SET', {\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\titem: action.payload,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (id === null || id === properties.selectedItem) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tannounceResults: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (label !== properties.value) {\n\t\t\t\t\tdispatch('NOW_TYPEAHEAD#VALUE_SET', {\n\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tactionSource,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\n\t\t'PRIVATE#BLUR': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({dispatch, properties}) => {\n\t\t\t\t// Check exact match if autoSelect\n\t\t\t\tdispatch(({properties}) => {\n\t\t\t\t\tconst {items, selectedItem, value} = properties;\n\t\t\t\t\tconst autoSelected = autoSelectMatch(items, selectedItem, value);\n\t\t\t\t\tif (autoSelected) {\n\t\t\t\t\t\tconst setItemPayload = {\n\t\t\t\t\t\t\t...autoSelected,\n\t\t\t\t\t\t\tactionSource: 'autoselect',\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'PRIVATE#SET_ITEM',\n\t\t\t\t\t\t\tpayload: setItemPayload,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn CANCEL_DISPATCH;\n\t\t\t\t});\n\n\t\t\t\t// Run validation\n\t\t\t\tconst {required, selectedItem, invalid, value} = properties;\n\t\t\t\tconst isInvalid = !selectedItem;\n\t\t\t\tif ((required && isInvalid && !invalid) || (!isInvalid && invalid)) {\n\t\t\t\t\tdispatch(() => ({\n\t\t\t\t\t\ttype: 'NOW_TYPEAHEAD#INVALID_SET',\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tname: properties.name,\n\t\t\t\t\t\t\tvalue: isInvalid,\n\t\t\t\t\t\t\tfieldValue: value,\n\t\t\t\t\t\t},\n\t\t\t\t\t}));\n\t\t\t\t}\n\n\t\t\t\t// after checking exact match and validation, we can dispatch interaction finished\n\t\t\t\tdispatch(({properties}) => {\n\t\t\t\t\tconst {selectedItem, name, value} = properties;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TYPEAHEAD#INTERACTION_FINISHED',\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tselectedItem,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t'NOW_POPOVER#CONTENT_VISIBLE': makeRedispatchEffect(\n\t\t\t'NOW_TYPEAHEAD#LIST_VISIBLE',\n\t\t),\n\t\t'NOW_POPOVER#CONTENT_HIDDEN': makeRedispatchEffect(\n\t\t\t'NOW_TYPEAHEAD#LIST_HIDDEN',\n\t\t),\n\t\t'NOW_POPOVER#OPENED_SET'({dispatch, action, updateState}) {\n\t\t\tconst {id, value} = action.payload;\n\n\t\t\t// ignore the helperContent popover\n\t\t\tif (id !== 'now-dropdown-list') return;\n\n\t\t\tupdateState({\n\t\t\t\topened: value,\n\t\t\t\tactiveItemId: null,\n\t\t\t});\n\n\t\t\tif (!value) {\n\t\t\t\tdispatch(({state}) => {\n\t\t\t\t\tconst {hasFocus} = state;\n\n\t\t\t\t\t// If we still have focus, that means the popover was dismissed\n\t\t\t\t\t// with focus still in the field (e.g.: user pressed `Escape`).\n\t\t\t\t\t// Don't want to do anything yet. See similar logic in handleBlur()\n\t\t\t\t\tif (hasFocus) {\n\t\t\t\t\t\treturn CANCEL_DISPATCH;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'PRIVATE#BLUR',\n\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t'NOW_DROPDOWN_LIST#ITEM_CLICKED'({\n\t\t\thost,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tproperties,\n\t\t}) {\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tconst {nowId} = properties;\n\t\t\tif (nowId === componentId) {\n\t\t\t\ttogglePanel(updateState, dispatch);\n\t\t\t\tconst setItemPayload = {...action.payload.item, actionSource: 'select'};\n\t\t\t\tdispatch('PRIVATE#SET_ITEM', setItemPayload);\n\n\t\t\t\tconst input = host.shadowRoot.querySelector('input');\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t'NOW_DROPDOWN_LIST#ACTIVE_ITEM_SET'({action, updateState, properties}) {\n\t\t\tconst {nowId} = properties;\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tif (nowId === componentId) {\n\t\t\t\tupdateState({activeItemId: action.payload.value});\n\t\t\t}\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the typeahead menu opens and renders the content. Unlike\n\t\t * `NOW_TYPEAHEAD#OPENED_SET`, this action only fires after the typeahead\n\t\t * menu is rendered in the DOM. The `content` property is a node list containing the\n\t\t * typeahead's inner `now-dropdown-list` element.\n\t\t * @type {{content: NodeList}}\n\t\t * @uib.description Dispatched when the typeahead menu is fully rendered to the DOM.\n\t\t */\n\t\t'NOW_TYPEAHEAD#LIST_VISIBLE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcontent: {type: 'array'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the typeahead menu has been closed and removed. Unlike\n\t\t * `NOW_TYPEAHEAD#OPENED_SET`, this action only fires after the typeahead\n\t\t * menu is fully removed from the DOM.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the typeahead menu is fully removed from the DOM.\n\t\t */\n\t\t'NOW_TYPEAHEAD#LIST_HIDDEN': {schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched when the field no longer has focus and the user is not interacting\n\t\t * with the items list. This is similar to a native `blur` event, but is\n\t\t * deferred until both the input and the items list no longer have focus.\n\t\t * Payload contains the `name` and the current `value` and `selectedItem`.\n\t\t * @type {{name: string, value: string, selectedItem: (string|number)}}\n\t\t * @private\n\t\t */\n\t\t'NOW_TYPEAHEAD#INTERACTION_FINISHED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t\tselectedItem: {type: ['string', 'number']},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when interaction with the field is complete and the validity\n\t\t * of the field has changed. Payload contains the `name` of the field and\n\t\t * the current validity of the field (`value` of the invalid property based\n\t\t * on the `required` properties), and the current `fieldValue` inside of\n\t\t * the input.  Set the `manage-invalid` property to override the default\n\t\t * behavior and handle this action manually.\n\t\t * @type {{name: string, value: boolean, fieldValue: string}}\n\t\t * @private\n\t\t */\n\t\t'NOW_TYPEAHEAD#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when a user selects an item. Payload contains the `name` of the\n\t\t * field and ID of the selected item. If an item is deselected, the\n\t\t * `value` is `null.` Set the `manage-selected-item` property to\n\t\t * override the default behavior and handle this action manually.\n\t\t * Payload key `item` contains the `object` of the the item selected.\n\t\t * @type {{name: string, value: (string|number), item: Object}}\n\t\t * @uib.label Item selected\n\t\t * @uib.description A user selects an item from the dropdown.\n\t\t */\n\t\t'NOW_TYPEAHEAD#SELECTED_ITEM_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: ['string', 'number']},\n\t\t\t\t\titem: {type: 'object'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the value of the input field changes. Payload\n\t\t * contains the `name` and the current `value` in the input. Set the\n\t\t * `manage-value` property to override the default behavior and handle this\n\t\t * action manually.\n\t\t * @type {{name: string, value: string}}\n\t\t * @uib.label Text entered\n\t\t * @uib.description A user types or paste text in the field.\n\t\t */\n\t\t'NOW_TYPEAHEAD#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: ['string', 'number']},\n\t\t\t\t\tactionSource: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: ['input', 'select', 'autoselect'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user presses the Enter key while focus is inside\n\t\t * the typeahead without highlighting an item from the items list. Payload\n\t\t * contains the `name` and current `value` of the input field, which can\n\t\t * optionally be used to create new custom items.\n\t\t * @type {{name: string, value: string}}\n\t\t */\n\t\t'NOW_TYPEAHEAD#ENTER_KEYDOWN': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for field decorators on the inline-start side\n\t\t * of the input field.\n\t\t */\n\t\tstart: {},\n\t\t/**\n\t\t * Slot for field decorators on the inline-end side\n\t\t * of the input field.\n\t\t */\n\t\tend: {},\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of the label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: (host) => {\n\t\t\t\t\tconst focusTarget = host.shadowRoot.querySelector(\n\t\t\t\t\t\t'input.now-typeahead-native-input',\n\t\t\t\t\t);\n\n\t\t\t\t\tif (focusTarget) {\n\t\t\t\t\t\tfocusTarget.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: deferBehavior,\n\t\t\toptions: {\n\t\t\t\tevents: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'mouseenter',\n\t\t\t\t\t\ttrigger: 'now-popover',\n\t\t\t\t\t\ttarget: 'now-dropdown-list',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{behavior: truncationBehavior},\n\t\t{behavior: tooltipBehavior},\n\t],\n\tstyles,\n\tview,\n});\n","// Moves focus to the first pill in the container\nexport function focusFirstPill(pills) {\n\tpills[0].focus();\n}\n// Moves focus to the last pill in the container\nexport function focusLastPill(pills) {\n\tpills[pills.length - 1].focus();\n}\n\n// Moves focus to the next pill in the container\nexport function focusNextPill(pills, activePill) {\n\tconst focusedPillIndex = pills.findIndex((node) => node === activePill);\n\tif (pills.length === focusedPillIndex + 1) {\n\t\t// last pill is focused, do nothing\n\t\treturn;\n\t}\n\t// otherwise, focus the next pill\n\tpills[focusedPillIndex + 1].focus();\n}\n\n// Moves focus to the previous pill in the container\nexport function focusPreviousPill(pills, activePill) {\n\tconst focusedPillIndex = pills.findIndex((node) => node === activePill);\n\tif (focusedPillIndex === 0) {\n\t\t// pill container or first pill is focused, do nothing\n\t\treturn;\n\t}\n\t// otherwise, focus the previous pill\n\tpills[focusedPillIndex - 1].focus();\n}\n","import {pick, debounce} from 'lodash';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport deferBehavior from '@servicenow/behavior-defer';\nimport {\n\tmakeRedispatchEffect,\n\tisDirectionalKey,\n\tisNextKey,\n\tisPreviousKey,\n\tfilterAriaAttributes,\n} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-typeahead.scss';\nimport {\n\tCONSTRAIN_DEFAULTS,\n\tCANCEL_DISPATCH,\n\tautoSelectMatch,\n\tmoveActiveItem,\n\tgetItemById,\n\tgetDropdownListConstrain,\n\tgetSearchMatches,\n\ttoggleSelectedItem,\n\ttogglePanel,\n\thandleBlur,\n\thandleFocus,\n\tariaLiveNoResults,\n\tariaLiveNumResults,\n\tariaLiveSectionResults,\n\tshowPlaceholderTooltip,\n\thidePlaceholderTooltip,\n} from './utils/typeahead';\nimport {\n\tfocusFirstPill,\n\tfocusLastPill,\n\tfocusPreviousPill,\n\tfocusNextPill,\n} from './utils/pill-focus';\nimport '@servicenow/now-dropdown';\nimport {\n\titemsSchema,\n\titemSchema,\n\tconstrainSchema,\n} from '@servicenow/now-dropdown';\nimport '@servicenow/now-popover';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {\n\trenderFormFieldLabel,\n\trenderFormFieldMessages,\n\trenderLabelEnd,\n\tgetAriaDescribedByList,\n} from '@servicenow/now-input';\nimport {messagesSchema} from '@servicenow/now-input';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior, {\n\tTOOLTIP_ADD_TARGET,\n\tTOOLTIP_REMOVE_TARGET,\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport {t} from 'sn-translate';\nimport {fieldLayoutSchema} from '@servicenow/now-input';\nimport {getColumnStyles} from '@servicenow/library-enhanced-utils';\n\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\n\nconst debounceDispatch = debounce((fn) => fn(), 250);\n\nconst announceMessage = (announcement, dispatch) => {\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: announcement,\n\t\ttype: 'polite',\n\t});\n};\n\nconst toggleItems = (selectedItems, item, dispatch) => {\n\tconst selectedIds = toggleSelectedItem(selectedItems, item);\n\n\tconst isItemPresent = selectedIds.some((selectedItem) => {\n\t\treturn item.id === selectedItem.id;\n\t});\n\n\tlet message = '';\n\n\tif (isItemPresent) {\n\t\tmessage = t(`{0} added`, item.label);\n\t} else {\n\t\tmessage = t(`{0} removed`, item.label);\n\t}\n\tannounceMessage(message, dispatch);\n\treturn selectedIds;\n};\n\nconst handlePlaceholderTooltipVisibility = (\n\te,\n\tselectedItems,\n\tdispatch,\n\tstate,\n\tupdateState,\n) => {\n\tconst input = e.target;\n\t/*\n\t\tWhen the typehead has selected items set initally, the placeholder is not displayed\n\t\tand therefore the overflow check is not possible. This is a workaround to check\n\t\tif the placeholder overflows when initially selected items are removed.\n\t\tUsing the placeholderOverflowChecked flag since we want the tooltip to be displayed\n\t\timmediately. Only using updateState for placeholderOverflow will not display the tooltip immediately.\n\t*/\n\tlet placeholderOverflowOverride = false;\n\tif (\n\t\t!state.placeholderOverflowChecked &&\n\t\tselectedItems.length === 0 &&\n\t\tinput.placeholder\n\t) {\n\t\tinput.value = input.placeholder;\n\t\tif (input.scrollWidth > input.clientWidth) {\n\t\t\tupdateState({placeholderOverflow: true});\n\t\t\tplaceholderOverflowOverride = true;\n\t\t}\n\t\tinput.value = '';\n\t\tupdateState({placeholderOverflowChecked: true});\n\t}\n\n\tconst {placeholderOverflow, placeholderTooltipVisible} = state;\n\tif (input.value || selectedItems.length > 0) {\n\t\tif (placeholderTooltipVisible) {\n\t\t\thidePlaceholderTooltip(dispatch)(e);\n\t\t\tupdateState({placeholderTooltipVisible: false});\n\t\t}\n\t\treturn;\n\t}\n\tif (placeholderOverflow || placeholderOverflowOverride) {\n\t\tif (e.type === 'mouseenter' || e.type === 'focusin' || e.type === 'input') {\n\t\t\tshowPlaceholderTooltip(dispatch)(e);\n\t\t\tupdateState({placeholderTooltipVisible: true});\n\t\t} else if (\n\t\t\te.type === 'mouseleave' ||\n\t\t\te.type === 'focusout' ||\n\t\t\te.type === 'click' ||\n\t\t\t(e.type === 'keydown' && e?.key === 'ArrowDown')\n\t\t) {\n\t\t\thidePlaceholderTooltip(dispatch)(e);\n\t\t\tupdateState({placeholderTooltipVisible: false});\n\t\t}\n\t}\n};\n\nconst handleClickTrigger = (\n\tevent,\n\tselectedItems,\n\tdispatch,\n\tstate,\n\tupdateState,\n) => {\n\tconst {placeholderOverflow, placeholderOverflowChecked} = state;\n\tconst {placeholder, disabled, readonly} = state.properties;\n\tif (disabled || readonly) {\n\t\tevent.stopPropagation();\n\t} else if (!disabled && !readonly) {\n\t\tif (placeholderOverflow || (placeholder && !placeholderOverflowChecked)) {\n\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\tevent,\n\t\t\t\tselectedItems,\n\t\t\t\tdispatch,\n\t\t\t\tstate,\n\t\t\t\tupdateState,\n\t\t\t);\n\t\t}\n\t}\n\tconst input = event.target.getRootNode().querySelector('input');\n\tif (input && event.target !== input) {\n\t\tinput.focus();\n\t}\n};\n\nconst handleKeydownInput = (\n\tevent,\n\tdispatch,\n\tselectedItems,\n\tstate,\n\tupdateState,\n\toptionPrefix,\n) => {\n\tconst {key, shiftKey} = event;\n\tconst value = event.target.value;\n\tconst {placeholderOverflow, placeholderOverflowChecked} = state;\n\tconst {placeholder} = state.properties;\n\tif (placeholderOverflow || (placeholder && !placeholderOverflowChecked)) {\n\t\thandlePlaceholderTooltipVisibility(\n\t\t\tevent,\n\t\t\tselectedItems,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t);\n\t}\n\tif (\n\t\t(key === 'ArrowUp' ||\n\t\t\tkey === 'ArrowDown' ||\n\t\t\tkey === 'Home' ||\n\t\t\tkey === 'End') &&\n\t\t!shiftKey\n\t) {\n\t\tmoveActiveItem(event, updateState, optionPrefix, dispatch, state);\n\t}\n\n\tif (key === 'Enter') {\n\t\t// Select the item\n\t\t// 1. If the panel is open and there is an activeItemId\n\t\t// 2. If the panel input exactly matches the label of only one item\n\t\tdispatch(({state, properties}) => {\n\t\t\tconst {items, selectedItems, name} = properties;\n\t\t\tconst {activeItemId, opened} = state;\n\n\t\t\tconst nextItem = activeItemId\n\t\t\t\t? getItemById(items, activeItemId)\n\t\t\t\t: autoSelectMatch(items, selectedItems, value);\n\n\t\t\tconst itemSelectable = nextItem && !nextItem.disabled;\n\t\t\tconst itemSelected = opened && nextItem;\n\n\t\t\tif (itemSelectable || !opened || !itemSelected) {\n\t\t\t\ttogglePanel(updateState, dispatch);\n\t\t\t}\n\n\t\t\tif (itemSelectable) {\n\t\t\t\tconst selectedIds = toggleItems(selectedItems, nextItem, dispatch);\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_TYPEAHEAD_MULTI#SELECTED_ITEMS_SET',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tvalue: selectedIds,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_TYPEAHEAD_MULTI#ENTER_KEYDOWN',\n\t\t\t\t\tpayload: {name, value},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n\n\t// If input is empty backspace key focuses the last added pill\n\tif (key === 'Backspace' && !value) {\n\t\tconst pills = [\n\t\t\t...event.target.getRootNode().querySelectorAll('.now-typeahead-pill'),\n\t\t];\n\t\tif (pills.length > 0) {\n\t\t\tfocusLastPill(pills);\n\t\t}\n\t}\n};\n\nconst handleInput = (\n\tevent,\n\tdispatch,\n\tselectedItems,\n\tstate,\n\tupdateState,\n\tname,\n) => {\n\tconst {value} = event.target;\n\tconst {placeholderOverflow, placeholderOverflowChecked} = state;\n\tconst {placeholder} = state.properties;\n\tif (placeholderOverflow || (placeholder && !placeholderOverflowChecked)) {\n\t\thandlePlaceholderTooltipVisibility(\n\t\t\tevent,\n\t\t\tselectedItems,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t);\n\t}\n\t// while typing, if the input field has some text, open the panel\n\tupdateState(({state}) => {\n\t\treturn {\n\t\t\toperation: 'assign',\n\t\t\tvalue: {\n\t\t\t\t// input event will fire when clearing out the field. In that case we\n\t\t\t\t// want to maintain the current `opened` state of the panel rather than\n\t\t\t\t// forcing it open.\n\t\t\t\topened: value ? true : state.opened,\n\t\t\t},\n\t\t};\n\t});\n\n\tdebounceDispatch(() => {\n\t\tupdateState({announceResults: true});\n\t\tdispatch('NOW_TYPEAHEAD_MULTI#VALUE_SET', {name, value});\n\t});\n};\n\nconst handleKeydownPill = (event, dir, dispatch, item) => {\n\tconst {key, target: activePill} = event;\n\tconst pills = [\n\t\t...event.target.getRootNode().querySelectorAll('.now-typeahead-pill'),\n\t];\n\n\tif ([' ', 'Spacebar', 'Enter'].includes(key)) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t} else if (['Backspace', 'Delete'].includes(key)) {\n\t\tdispatch(({properties}) => ({\n\t\t\ttype: 'NOW_TYPEAHEAD_PILL#DISMISSED',\n\t\t\tpayload: {itemId: item.id},\n\t\t\tshouldDispatch: !properties.disabled && !properties.readonly,\n\t\t}));\n\t} else if (isDirectionalKey(key)) {\n\t\tevent.preventDefault();\n\t\tif (isNextKey(key, dir) || key === 'ArrowDown') {\n\t\t\tfocusNextPill(pills, activePill);\n\t\t}\n\t\tif (isPreviousKey(key, dir) || key === 'ArrowUp') {\n\t\t\tfocusPreviousPill(pills, activePill);\n\t\t}\n\t\tif (key === 'Home') {\n\t\t\tfocusFirstPill(pills);\n\t\t}\n\t\tif (key === 'End') {\n\t\t\tfocusLastPill(pills);\n\t\t}\n\t}\n};\n\nconst handleTooltipShow = (e, dispatch, tooltipContent) => {\n\tconst labelSpan = e.target.querySelector('.now-pill-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset || tooltipContent) {\n\t\treturn dispatch(TOOLTIP_SHOW, {target: e.target});\n\t}\n};\n\nconst handleTooltipHide = (e, dispatch, tooltipContent) => {\n\tconst labelSpan = e.target.querySelector('.now-pill-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset || tooltipContent) {\n\t\treturn dispatch(TOOLTIP_HIDE, {target: e.target});\n\t}\n};\n\nconst renderIconIdentifier = (icon) => {\n\treturn (\n\t\t<span className=\"now-pill-identifier\">\n\t\t\t<span className=\"now-pill-icon\">\n\t\t\t\t<now-icon icon={icon} size=\"sm\" />\n\t\t\t</span>\n\t\t</span>\n\t);\n};\n\nconst renderAvatarIdentifier = (avatarProps, size) => {\n\tconst avatarSize = {sm: 'xxs', md: 'xs'};\n\treturn (\n\t\t<span className=\"now-pill-identifier\">\n\t\t\t<now-avatar\n\t\t\t\tuser-name={avatarProps.userName}\n\t\t\t\ticon={avatarProps.icon}\n\t\t\t\timageSrc={avatarProps.imageSrc}\n\t\t\t\tpresence={avatarProps.presence}\n\t\t\t\tsize={avatarSize[size]}\n\t\t\t\thide-tooltip\n\t\t\t/>\n\t\t</span>\n\t);\n};\n\nconst renderDismissIcon = ({\n\titem,\n\tcanDismiss,\n\tdispatch,\n\tupdateState,\n\tdisabled,\n}) => {\n\tif (canDismiss) {\n\t\tconst removeLabel = t({\n\t\t\tcode: 'now-typeahead-pill-remove-button-tooltip-label',\n\t\t\tmessage: 'Remove',\n\t\t\tcomment:\n\t\t\t\t'Verb. Describes an action button for removing or dismissing a pill.',\n\t\t});\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclassName=\"now-typeahead-pill-dismiss\"\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(() => ({\n\t\t\t\t\t\ttype: 'NOW_TYPEAHEAD_PILL#DISMISSED',\n\t\t\t\t\t\tpayload: {itemId: item.id},\n\t\t\t\t\t\tshouldDispatch: !disabled,\n\t\t\t\t\t}));\n\t\t\t\t}}\n\t\t\t\ton-mouseenter={() => {\n\t\t\t\t\tupdateState({hasHover: item.id});\n\t\t\t\t}}\n\t\t\t\ton-mouseleave={() => {\n\t\t\t\t\tupdateState({hasHover: null});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"now-pill-button-iconic\"\n\t\t\t\t\ticon=\"close-fill\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\thook-insert={({elm: target}) => {\n\t\t\t\t\t\tdispatch(TOOLTIP_ADD_TARGET, {target});\n\t\t\t\t\t}}\n\t\t\t\t\thook-destroy={({elm: target}) => {\n\t\t\t\t\t\tdispatch(TOOLTIP_REMOVE_TARGET, {target});\n\t\t\t\t\t}}\n\t\t\t\t\tdata-tooltip={removeLabel}\n\t\t\t\t/>\n\t\t\t</span>\n\t\t);\n\t}\n};\n\nconst renderPills = (\n\tstate,\n\tupdateState,\n\tdispatch,\n\tsize,\n\tselectedItems,\n\tdisabled,\n\treadonly,\n\tdir,\n) => {\n\tif (!selectedItems) return;\n\treturn selectedItems.map((item, index) => {\n\t\tconst icon = item?.icon;\n\t\tconst avatarImage = item.avatarProps?.imageSrc;\n\t\tconst avatarIcon = item.avatarProps?.icon;\n\t\tconst {label} = item;\n\t\tconst {hasHover} = state;\n\t\tlet canDismiss = !disabled && !readonly;\n\t\tconst pillSize = {sm: 'xs', md: 'sm'};\n\t\tconst tooltipContent = item?.tooltipContent;\n\t\treturn item ? (\n\t\t\t<li\n\t\t\t\tkey={item.id}\n\t\t\t\tid={item.id}\n\t\t\t\trole=\"option\"\n\t\t\t\taria-selected=\"true\"\n\t\t\t\ttabindex={disabled ? undefined : index === 0 ? '0' : '-1'}\n\t\t\t\ton-keydown={(e) => handleKeydownPill(e, dir, dispatch, item)}\n\t\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\t\ton-mouseenter={(e) => {\n\t\t\t\t\tupdateState({hasHover: item.id});\n\t\t\t\t\thandleTooltipShow(e, dispatch, tooltipContent);\n\t\t\t\t}}\n\t\t\t\ton-mouseleave={(e) => {\n\t\t\t\t\tupdateState({hasHover: null});\n\t\t\t\t\thandleTooltipHide(e, dispatch, tooltipContent);\n\t\t\t\t}}\n\t\t\t\ton-click={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t!disabled && e.currentTarget.focus();\n\t\t\t\t}}\n\t\t\t\ton-focusin={(e) => handleTooltipShow(e, dispatch, tooltipContent)}\n\t\t\t\ton-focusout={(e) => handleTooltipHide(e, dispatch, tooltipContent)}\n\t\t\t\taria-label={item.label}\n\t\t\t\tclassName=\"now-typeahead-pill\"\n\t\t\t\tdata-tooltip={tooltipContent || item.label}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-pill': true,\n\t\t\t\t\t\t['-' + pillSize[size]]: pillSize[size],\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-pill-button': true,\n\t\t\t\t\t\t\t'show-identifier': avatarImage || avatarIcon,\n\t\t\t\t\t\t\t'has-hover': hasHover === item.id ? true : false,\n\t\t\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{icon\n\t\t\t\t\t\t\t? renderIconIdentifier(icon)\n\t\t\t\t\t\t\t: avatarImage || avatarIcon\n\t\t\t\t\t\t\t\t? renderAvatarIdentifier(item.avatarProps, size)\n\t\t\t\t\t\t\t\t: undefined}\n\t\t\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"now-pill-label\"\n\t\t\t\t\t\t\t\taria-hidden={\n\t\t\t\t\t\t\t\t\titem.label?.toLowerCase() ===\n\t\t\t\t\t\t\t\t\titem.avatarProps?.userName?.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{renderDismissIcon({\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\tcanDismiss,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\tdisabled,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t) : undefined;\n\t});\n};\n\nconst renderNativeInput = (\n\tstate,\n\treadonly,\n\tdisabled,\n\tselectedItems,\n\tcomponentId,\n\tmessages,\n\tautofocus,\n\tname,\n\tplaceholder,\n\tvalue,\n\tupdateState,\n\tactiveItemId,\n\toptionPrefix,\n\trequired,\n\toptional,\n\tdispatch,\n\topened,\n\tlistId,\n\tconfigAria,\n\tlabel,\n\thelperContent,\n\tlayout,\n) => {\n\tconst {placeholderOverflow, placeholderOverflowChecked} = state;\n\tplaceholder = placeholder ?? undefined;\n\tif (!readonly && !disabled) {\n\t\treturn (\n\t\t\t<input\n\t\t\t\tid={`form-field-${componentId}`}\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\taria-activedescendant={\n\t\t\t\t\tactiveItemId ? `${optionPrefix}-${activeItemId}` : undefined\n\t\t\t\t}\n\t\t\t\taria-describedby={getAriaDescribedByList({\n\t\t\t\t\tlabel,\n\t\t\t\t\thelperContent,\n\t\t\t\t\toptional,\n\t\t\t\t\tnowId: componentId,\n\t\t\t\t\tmessages,\n\t\t\t\t\tlayout,\n\t\t\t\t})}\n\t\t\t\tdata-tooltip={placeholder}\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-expanded={String(opened)}\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\taria-owns={`${listId}-listbox`}\n\t\t\t\taria-controls={`${listId}-listbox`}\n\t\t\t\tclassName=\"now-typeahead-native-input\"\n\t\t\t\tautofocus={autofocus}\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tname={name}\n\t\t\t\tplaceholder={selectedItems.length === 0 ? placeholder : undefined}\n\t\t\t\trequired={required}\n\t\t\t\tvalue={value}\n\t\t\t\ton-mouseenter={(e) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tplaceholderOverflow ||\n\t\t\t\t\t\t(placeholder && !placeholderOverflowChecked)\n\t\t\t\t\t) {\n\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tselectedItems,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ton-mouseleave={(e) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tplaceholderOverflow ||\n\t\t\t\t\t\t(placeholder && !placeholderOverflowChecked)\n\t\t\t\t\t) {\n\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tselectedItems,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ton-focusin={(e) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tplaceholderOverflow ||\n\t\t\t\t\t\t(placeholder && !placeholderOverflowChecked)\n\t\t\t\t\t) {\n\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tselectedItems,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ton-focusout={(e) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tplaceholderOverflow ||\n\t\t\t\t\t\t(placeholder && !placeholderOverflowChecked)\n\t\t\t\t\t) {\n\t\t\t\t\t\thandlePlaceholderTooltipVisibility(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tselectedItems,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ton-keydown={(e) =>\n\t\t\t\t\thandleKeydownInput(\n\t\t\t\t\t\te,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tselectedItems,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\toptionPrefix,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\ton-input={(e) =>\n\t\t\t\t\thandleInput(e, dispatch, selectedItems, state, updateState, name)\n\t\t\t\t}\n\t\t\t\ton-blur={() => handleBlur(dispatch, updateState)}\n\t\t\t\ton-focus={() => handleFocus(updateState)}\n\t\t\t\t{...filterAriaAttributes(configAria, 'input')}\n\t\t\t/>\n\t\t);\n\t} else if (disabled && selectedItems.length === 0) {\n\t\treturn (\n\t\t\t<input\n\t\t\t\tid={`form-field-${componentId}`}\n\t\t\t\taria-describedby={getAriaDescribedByList({\n\t\t\t\t\tnowId: componentId,\n\t\t\t\t\tmessages,\n\t\t\t\t})}\n\t\t\t\tclassName=\"now-typeahead-native-input\"\n\t\t\t\tautofocus={autofocus}\n\t\t\t\tname={name}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tdisabled\n\t\t\t\tvalue={value}\n\t\t\t\ton-focus={() => handleFocus(updateState)}\n\t\t\t\t{...filterAriaAttributes(configAria, 'input')}\n\t\t\t/>\n\t\t);\n\t} else if (readonly && !disabled && selectedItems.length === 0) {\n\t\treturn (\n\t\t\t<input\n\t\t\t\tid={`form-field-${componentId}`}\n\t\t\t\taria-describedby={getAriaDescribedByList({\n\t\t\t\t\tnowId: componentId,\n\t\t\t\t\tmessages,\n\t\t\t\t})}\n\t\t\t\tclassName=\"now-typeahead-native-input\"\n\t\t\t\tautofocus={autofocus}\n\t\t\t\tname={name}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\treadonly\n\t\t\t\tvalue={!value ? '—' : value}\n\t\t\t\taria-label={!value ? '' : undefined}\n\t\t\t\ton-focus={() => handleFocus(updateState)}\n\t\t\t\t{...filterAriaAttributes(configAria, 'input')}\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst ariaAnnouncements = (\n\tfilteredItems,\n\titems,\n\tdispatch,\n\tupdateState,\n\tvalue,\n\tsearch,\n) => {\n\tlet announcements = [],\n\t\tuncategorizedCount = 0,\n\t\thasChildren = false,\n\t\tchildCount = 0,\n\t\ttotalItems = 0,\n\t\tannouncementMessage = '';\n\tif (filteredItems.length === 0) {\n\t\tariaLiveNoResults(dispatch);\n\t} else {\n\t\tfilteredItems.forEach((item) => {\n\t\t\tlet getSectionHeader = item.ariaLabel || item.label || t('uncategorized');\n\t\t\tif (item.children) {\n\t\t\t\thasChildren = true;\n\t\t\t\tchildCount = item.children.length;\n\t\t\t\t//if the dropdown list has a list of items with children, announce the number of items with the section headers\n\t\t\t\tannouncementMessage = t(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'now-typeahead-multi-search-labels',\n\t\t\t\t\t\tmessage: '{childCount} items in {sectionHeader}',\n\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t'ARIA message for screenreader users telling them the number of child items in a group with header of sectionHeader',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tchildCount: childCount,\n\t\t\t\t\t\tsectionHeader: getSectionHeader,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tannouncements.push(announcementMessage);\n\t\t\t\ttotalItems += item.children.length;\n\t\t\t} else {\n\t\t\t\tuncategorizedCount += 1; // Count uncategorized items\n\t\t\t\ttotalItems++;\n\t\t\t}\n\t\t});\n\n\t\t//if the user has removed all the text, go back to announcing the number of items\n\t\tif (filteredItems.length === items.length && !value) {\n\t\t\tariaLiveNumResults(dispatch, totalItems, search);\n\t\t\tannouncements = [];\n\t\t}\n\n\t\t//if the dropdown list is a plain list of items without any children, announce the number of items\n\t\telse if (!hasChildren) {\n\t\t\tariaLiveNumResults(dispatch, filteredItems.length, search);\n\t\t\tannouncements = [];\n\t\t} else {\n\t\t\t// If there are uncategorized items, add them to the announcement\n\t\t\tif (uncategorizedCount > 0) {\n\t\t\t\tannouncementMessage = t(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'now-typeahead-multi-search-uncategorized',\n\t\t\t\t\t\tmessage: '{uncategorizedCount} items in uncategorized',\n\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\t'ARIA message for screenreader users telling them the number of items in an uncategorized section.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tuncategorizedCount: uncategorizedCount,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tannouncements.push(announcementMessage);\n\t\t\t}\n\t\t\tariaLiveSectionResults(dispatch, announcements.join(', '));\n\t\t\tannouncements = [];\n\t\t}\n\t}\n\n\tupdateState({\n\t\tannounceResults: false,\n\t});\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {activeItemId, opened, hasFocus, announceResults} = state;\n\tconst {\n\t\tsize,\n\t\tautofocus,\n\t\tdisabled,\n\t\thelperContent,\n\t\thideRequiredIndicator,\n\t\tinvalid,\n\t\titems,\n\t\tsearch,\n\t\titemsListConstrain,\n\t\tlabel,\n\t\tmessages,\n\t\toptional,\n\t\tplaceholder,\n\t\treadonly,\n\t\trequired,\n\t\tselectedItems,\n\t\tvalue = '',\n\t\tdir,\n\t\tnowId,\n\t\tname = `typeahead-multi-${nowId}`,\n\t\tconfigAria,\n\t\tfieldLayout: {layout, columns},\n\t\twrapLabel,\n\t} = state.properties;\n\n\tconst constrain = {...CONSTRAIN_DEFAULTS, ...itemsListConstrain};\n\tconst filteredItems = getSearchMatches(items, value, search);\n\n\tif (announceResults) {\n\t\tariaAnnouncements(\n\t\t\tfilteredItems,\n\t\t\titems,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tvalue,\n\t\t\tsearch,\n\t\t);\n\t}\n\n\tconst listId = `now-dropdown-list-${nowId}`;\n\tconst optionPrefix = `${listId}-option`;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={\n\t\t\t\tlayout === 'horizontal' ? {...getColumnStyles(columns)} : undefined\n\t\t\t}\n\t\t\tclass={{\n\t\t\t\t'now-typeahead-multi': true,\n\t\t\t\t'now-form-field-layout': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t\t['-' + layout]: layout,\n\t\t\t\t'has-pills': selectedItems.length > 0,\n\t\t\t\t'will-wrap': wrapLabel,\n\t\t\t}}\n\t\t>\n\t\t\t{renderFormFieldLabel(\n\t\t\t\tnowId,\n\t\t\t\tinvalid,\n\t\t\t\trequired,\n\t\t\t\toptional,\n\t\t\t\tlabel,\n\t\t\t\thelperContent,\n\t\t\t\thideRequiredIndicator,\n\t\t\t\t'label',\n\t\t\t\tlayout,\n\t\t\t\topened,\n\t\t\t\twrapLabel,\n\t\t\t)}\n\t\t\t{!readonly && !disabled && (\n\t\t\t\t<span className=\"now-a11y-label\" id=\"pill-removal-text\">\n\t\t\t\t\t{t('Use the backspace key to remove pill(s).')}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<now-popover\n\t\t\t\tclassName=\"now-typeahead-popover\"\n\t\t\t\tbare\n\t\t\t\tconstrain={pick(constrain, ['width', 'minWidth', 'maxWidth'])}\n\t\t\t\tmanage-opened\n\t\t\t\topened={opened}\n\t\t\t\tappend-to-payload={{id: 'now-dropdown-list'}}\n\t\t\t\tinteraction-type=\"listbox\"\n\t\t\t\tdisable-scroll\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\ton-click={(event) =>\n\t\t\t\t\t\thandleClickTrigger(\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\tselectedItems,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-typeahead-field': true,\n\t\t\t\t\t\t'now-form-field': true,\n\t\t\t\t\t\t'is-invalid': invalid,\n\t\t\t\t\t\t'is-disabled': disabled,\n\t\t\t\t\t\t'is-readonly': readonly,\n\t\t\t\t\t\t'has-focus': hasFocus,\n\t\t\t\t\t\t'has-pills': selectedItems.length > 0,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"now-typeahead-pills\">\n\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\t\taria-multiselectable=\"true\"\n\t\t\t\t\t\t\t{...(label\n\t\t\t\t\t\t\t\t? {'aria-labelledby': `form-field-${nowId}-label`}\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t'aria-label': filterAriaAttributes(configAria, 'input')?.[\n\t\t\t\t\t\t\t\t\t\t\t'aria-label'\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t!readonly && !disabled ? 'pill-removal-text' : undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName=\"now-typeahead-pills-list\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderPills(\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tsize,\n\t\t\t\t\t\t\t\tselectedItems,\n\t\t\t\t\t\t\t\tdisabled,\n\t\t\t\t\t\t\t\treadonly,\n\t\t\t\t\t\t\t\tdir,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"now-typeahead-native-input-container\">\n\t\t\t\t\t\t<div className=\"now-form-field-slot -start\">\n\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\tname=\"start\"\n\t\t\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{renderNativeInput(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\treadonly,\n\t\t\t\t\t\t\tdisabled,\n\t\t\t\t\t\t\tselectedItems,\n\t\t\t\t\t\t\tnowId,\n\t\t\t\t\t\t\tmessages,\n\t\t\t\t\t\t\tautofocus,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tplaceholder,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\tactiveItemId,\n\t\t\t\t\t\t\toptionPrefix,\n\t\t\t\t\t\t\trequired,\n\t\t\t\t\t\t\toptional,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\topened,\n\t\t\t\t\t\t\tlistId,\n\t\t\t\t\t\t\tconfigAria,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\thelperContent,\n\t\t\t\t\t\t\tlayout,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className=\"now-form-field-slot -end\">\n\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\tname=\"end\"\n\t\t\t\t\t\t\t\ton-click={(e) => {\n\t\t\t\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttogglePanel(updateState, dispatch);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<now-dropdown-list\n\t\t\t\t\tdefer\n\t\t\t\t\tstyle={getDropdownListConstrain(constrain)}\n\t\t\t\t\tslot=\"content\"\n\t\t\t\t\tselect=\"multi\"\n\t\t\t\t\titems={filteredItems}\n\t\t\t\t\tselectedItems={selectedItems && selectedItems.map((item) => item.id)}\n\t\t\t\t\tactive-item={activeItemId === null ? undefined : activeItemId}\n\t\t\t\t\tsearch-term={value}\n\t\t\t\t\tscreen-reader-id={opened ? listId : undefined}\n\t\t\t\t\tmanage-selected-items\n\t\t\t\t\tappend-to-meta={{componentId: nowId, fromTypeahead: true}}\n\t\t\t\t\tconfig-aria={\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tpanel: {'aria-label': label},\n\t\t\t\t\t\t\t\t\t...configAria,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: configAria\n\t\t\t\t\t}\n\t\t\t\t\tsize={size}\n\t\t\t\t/>\n\t\t\t</now-popover>\n\t\t\t{layout === 'horizontal' && renderLabelEnd()}\n\t\t\t<div className=\"now-form-field-messages\">\n\t\t\t\t{renderFormFieldMessages(nowId, messages, 0)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n *\n * Form element for text input fields that includes a dropdown of relevant or\n * suggested values that a user can select multiple values from. As users type into the field,\n * the suggested values are filtered or recomputed.\n *\n * ```jsx\n * const items = [\n *   {\n *     id: \"ablumsondi\",\n *     label: \"Ab Blumson\",\n *     sublabel: \"ablumsondi@scribd.com\",\n *   },\n *   {\n *     id: \"amolfinofi\",\n *     label: \"Abagael Molfino\",\n *     sublabel: \"amolfinofi@reverbnation.com\",\n *   },\n *   {\n *     id: \"aolynn99\",\n *     label: \"Abbot O'Lynn\",\n *     sublabel: \"aolynn99@shop-pro.jp\",\n *   }\n * ];\n *\n * <now-typeahead-multi name=\"User\" label=\"User\" items={items} />\n *\n * <now-typeahead-multi name=\"User\" label=\"User\" items={items} invalid required messages={[\n *   {\n *    status: 'critical',\n *    icon: 'circle-close-outline',\n *    content: 'Please fill out this required field.'\n *   }\n * ]} />\n *\n * <now-typeahead-multi name=\"User\" label=\"User\" items={items}>\n *   <now-button-iconic slot=\"end\" icon=\"circle-info-outline\" tooltip-content=\"Preview record\" />\n * </now-typeahead-multi>\n * ```\n *\n * @seismicElement now-typeahead-multi\n * @summary Supplements an input field with a dropdown panel of relevant options, where more than one option can be selected to fill the field.\n * @uib.label Typeahead multi\n * @uib.icon typeahead-multi\n * @uib.description Supplements an input field with a dropdown panel of relevant options, where more than one option can be selected to fill the field\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties size, search, disabled, readonly, autofocus, placeholder, value, manageValue, name, items, selectedItems, manageSelectedItems, itemsListConstrain, disableAutoClose, label, wrapLabel, required, hideRequiredIndicator, optional, helperContent, invalid, manageInvalid, messages, configAria, fieldLayout, landmark\n * @uib.layout.value.children placeholder, value, manageValue, name\n * @uib.layout.value.icon pencil-outline\n * @uib.layout.list.children items, selectedItems, manageSelectedItems, itemsListConstrain, disableAutoClose\n * @uib.layout.list.icon list-outline\n * @uib.layout.label.children label, wrapLabel, required, hideRequiredIndicator, optional, helperContent\n * @uib.layout.label.icon text-outline\n * @uib.layout.validation.children invalid, manageInvalid, messages\n * @uib.layout.validation.icon syntax-check-outline\n * @uib.layout.accessibility.children configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_TYPEAHEAD_MULTI#LIST_VISIBLE, NOW_TYPEAHEAD_MULTI#LIST_HIDDEN, NOW_TYPEAHEAD_MULTI#INVALID_SET, NOW_TYPEAHEAD_MULTI#SELECTED_ITEMS_SET, NOW_TYPEAHEAD_MULTI#VALUE_SET, NOW_TYPEAHEAD_MULTI#ENTER_KEYDOWN\n * @uib.innerComponents now-dropdown-list, now-icon, now-pill, now-popover, now-input, now-tooltip\n */\ncreateEnhancedElement('now-typeahead-multi', {\n\tproperties: {\n\t\t/**\n\t\t * Sets the typeahead size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Small\", \"value\": \"sm\"}, {\"label\": \"Medium\", \"value\": \"md\"}]\n\t\t * @uib.defaultValue md\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An array of `DropdownListItem` or `DropdownListSection` objects that are used as\n\t\t * possible items that the user can select from.\n\t\t * @type {(Array.<DropdownListItem> | Array.<DropdownListSection>)}\n\t\t * @uib.label List items\n\t\t * @uib.description Array of possible items that the user can select from\n\t\t * @uib.defaultValue [{\"id\": \"usr1\",\"label\": \"User 1\",\"sublabel\": \"user1@servicenow.com\",\"avatarProps\": {\"userName\": \"User 1\",\"imageSrc\": \"http://i.pravatar.cc/24?u=33\",\"presence\": \"away\"}},{\"id\": \"usr2\",\"label\": \"User 2\",\"sublabel\": \"user2@servicenow.com\",\"avatarProps\": {\"userName\": \"User 2\",\"imageSrc\": \"http://i.pravatar.cc/24?u=34\",\"presence\": \"busy\"},\"disabled\": true},{\"id\": \"usr3\",\"label\": \"User 3\",\"sublabel\": \"user3@servicenow.com\",\"avatarProps\": {\"userName\": \"User 3\",\"imageSrc\": \"http://i.pravatar.cc/24?u=35\",\"presence\": \"offline\"}}]\n\t\t */\n\t\titems: {\n\t\t\tdefault: [],\n\t\t\tschema: itemsSchema,\n\t\t},\n\t\t/**\n\t\t * An array of `SelectedDropdownListItem` objects representing each selected item. Use\n\t\t * `manage-selected-items` to override the default behavior and handle the\n\t\t * `NOW_TYPEAHEAD_MULTI#SELECTED_ITEMS_SET` action manually.\n\t\t * @type {Array.<SelectedDropdownListItem>}\n\t\t * @uib.description An array of items representing each selected item\n\t\t * @uib.fieldType json\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tselectedItems: {\n\t\t\tdefault: [],\n\t\t\tmanageable: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {...itemSchema, tooltipContent: {type: 'string'}},\n\t\t\t},\n\t\t\tdependencies: ['items'],\n\t\t},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selectedItems` property.\n\t\t * An action with type `NOW_TYPEAHEAD_MULTI#SELECTED_ITEMS_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected items property. Use the selected items set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelectedItems: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object describing additional sizing constrains for the items list popover.\n\t\t *\n\t\t * Valid keys are (all are optional):\n\t\t *\n\t\t *  - width\n\t\t *  - minWidth\n\t\t *  - maxWidth\n\t\t *  - height\n\t\t *  - minHeight\n\t\t *  - maxHeight\n\t\t *\n\t\t * The value for each property should be a positive integer representing\n\t\t * a pixel value that is applied to the corresponding content style.\n\t\t * Alternatively, you can specify the string `\"target\"` for width,\n\t\t * minWidth, or maxWidth to have that property match the width of the\n\t\t * input element.\n\t\t *\n\t\t * For example, this value ensures that the items list is at least 400x200 pixels:\n\t\t *\n\t\t *  {\n\t\t *\t\tminWidth: 400,\n\t\t *\t\tminHeight: 200\n\t\t *  }\n\t\t *\n\t\t * The default values for this property are:\n\t\t *\n\t\t *  {\n\t\t *\t\twidth: \"target\",\n\t\t *\t\tmaxHeight: 300,\n\t\t *  }\n\t\t *\n\t\t * @type {ItemsListConstrain}\n\t\t * @typedef {Object} ItemsListConstrain\n\t\t * @description Sizing constraints to enforce on the items list. For each\n\t\t * property, a number can be specified which sets that constraint in\n\t\t * pixels.  If the value is \"target\" for width, minWidth, or maxWidth,\n\t\t * the items list is sized to match the width of the input field.\n\t\t * @property {\"target\"|number} width\n\t\t * @property {\"target\"|number} minWidth\n\t\t * @property {\"target\"|number} maxWidth\n\t\t * @property {number} height\n\t\t * @property {number} minHeight\n\t\t * @property {number} maxHeight\n\t\t * @uib.label Item Size Constraints\n\t\t * @uib.description Sizing constraints to enforce on the items list. For each property, a number can be specified which sets that constraint in pixels. If the value is \"target\" for width, minWidth, or maxWidth, the items list is sized to match the width of the input field\n\t\t */\n\t\titemsListConstrain: {schema: constrainSchema},\n\t\t/**\n\t\t * Indicates that focus should automatically be placed inside the input\n\t\t * on page load.\n\t\t * @type {boolean}\n\t\t * @uib.label Auto-focus\n\t\t * @uib.description Indicates that focus should automatically be placed inside the input on page load\n\t\t */\n\t\tautofocus: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Indicates that the user can interact with the field\n\t\t * and change its value. Field appears grayed out when disabled.\n\t\t * @type {boolean}\n\t\t * @uib.description Disable user click interactions\n\t\t */\n\t\tdisabled: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Controls how to filter the items as the user types into the input.\n\t\t * - \"managed\" (default): No filtering occurs. Use this to manually\n\t\t *   filter or search for items as the user types.\n\t\t * - \"initial\": Items whose label or sublabel begins with the\n\t\t *   input value are displayed. This is case-insensitive.\n\t\t * - \"contains\": Items whose label or sublabel contains the input value\n\t\t *   are displayed. This is case-insensitive.\n\t\t * @type {(\"managed\"|\"initial\"|\"contains\")}\n\t\t * @uib.label Search Behavior\n\t\t * @uib.description Controls how to filter the items as the user types into the integrated search input\n\t\t */\n\t\tsearch: {\n\t\t\tdefault: 'managed',\n\t\t\tschema: {type: 'string', enum: ['managed', 'initial', 'contains']},\n\t\t},\n\t\t/**\n\t\t * If set, an iconic button with popover appears next to the field\n\t\t * label for displaying additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t * @uib.label Helper text\n\t\t * @uib.description If set, an iconic button with popover appears next to the field label for displaying additional hint text to the user, such as password requirements or other instructions for completing the field. Use plain text to allow for translation\n\t\t * @uib.fieldType string\n\t\t * @uib.translatable true\n\t\t */\n\t\thelperContent: {},\n\t\t/**\n\t\t * Indicates that the field is in an incorrect state, which is\n\t\t * reflected in the field display. This property is set\n\t\t * automatically based on the current validity of the input field. Use\n\t\t * `manage-invalid` to override the default behavior and handle the\n\t\t * `NOW_TYPEAHEAD_MULTI#INVALID_SET` action manually.\n\t\t * @type {boolean}\n\t\t * @uib.description Set this flag to indicate that the field is in an incorrect state, which is reflected in the field display\n\t\t */\n\t\tinvalid: {manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `invalid` property.\n\t\t * An action with type `NOW_TYPEAHEAD_MULTI#INVALID_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the invalid property. Use the invalid set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageInvalid: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Label describing the overall purpose of the input field.\n\t\t * @type {string}\n\t\t * @uib.description Label describing the overall purpose of the select field\n\t\t * @uib.defaultValue Label\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Array of inline alert messages that are displayed below the field.\n\t\t * @type {Array.<{status: ('critical'|'warning'|'positive'|'info'|'suggestion'), content: (string|JSX), icon: string}>}\n\t\t * @uib.label Alert messages\n\t\t * @uib.description Array of inline alert messages that are displayed below the field\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"content\", \"icon\": \"icon\" }\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: [],\n\t\t\tschema: messagesSchema,\n\t\t},\n\t\t/**\n\t\t * Name of the field control. Dispatched along with the field value\n\t\t * on user interaction.\n\t\t * @type {string}\n\t\t * @uib.description Name of the field control included in dispatched actions\n\t\t */\n\t\tname: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the field is optional and not required to be completed by\n\t\t * the user before completing the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Visually indicates that the field is optional\n\t\t * @uib.defaultValue false\n\t\t */\n\t\toptional: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Hint text displayed in the input when the user has not yet entered a\n\t\t * value.\n\t\t * @type {string}\n\t\t * @uib.label Placeholder text\n\t\t * @uib.description Placeholder text for the input field. This text should hint to the user what input is expected.\n\t\t * @uib.translatable true\n\t\t */\n\t\tplaceholder: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the user cannot modify the value of the field, but\n\t\t * it still appears enabled.\n\t\t * @type {boolean}\n\t\t * @uib.label Read-only\n\t\t * @uib.description By enabling this property, the user cannot modify the value of the input field. The input field is not disabled in this setting.\n\t\t */\n\t\treadonly: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the user must enter a value in the\n\t\t * input field before they can complete the form.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to indicate that the user must enter a value in the field before proceeding\n\t\t * @uib.defaultValue false\n\t\t */\n\t\trequired: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, the required indicator is hidden. Use this for\n\t\t * forms where most fields are required, along with the `optional` flag\n\t\t * for any fields that are not required.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Required Indicator\n\t\t * @uib.description Select to hide the required indicator. Use this for forms where most fields are required, along with the `optional` flag for any fields that are not required.\n\t\t */\n\t\thideRequiredIndicator: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * The value of the input field. This is updated automatically\n\t\t * as the user types. Use `manage-value` to override this and handle\n\t\t * the `NOW_TYPEAHEAD_MULTI#VALUE_SET` action manually. Note: This does\n\t\t * not prevent the selected items from showing in the dropdown. To do\n\t\t * so, use `manage-selected-items`.\n\t\t * @type {string}\n\t\t * @uib.description Sets a value for the input field. Unless the input field has pre-populated data, this property should be left empty.\n\t\t * @uib.translatable true\n\t\t */\n\t\tvalue: {manageable: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `value` property.\n\t\t * An action with type `NOW_TYPEAHEAD_MULTI#VALUE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the value property. Use the value set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageValue: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Disables the default auto close behavior after a selection is made,\n\t\t * when this property is set to true, the panel will stay open to allow for multiple item\n\t\t * selections to be made.\n\t\t * @type {boolean}\n\t\t * @uib.label Disable Auto Close\n\t\t * @uib.defaultValue false\n\t\t * @uib.description Disables auto close when a selection is made – the panel will remain open to allow for multiple selections. Press ESC or click outside of the panel to close.\n\t\t **/\n\t\tdisableAutoClose: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-typeahead-multi. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'input' key corresponds to the inner html `<input>`. See\n\t\t * https://www.w3.org/TR/wai-aria-1.2/#button for properties and accepted\n\t\t * values. The 'panel' key corresponds to the inner html `<div>` that acts\n\t\t * as the 'listbox'. See https://www.w3.org/TR/wai-aria-1.2/#listbox for\n\t\t * properties and accepted values.\n\t\t * @type {{ input: {'aria-*': string, role: string}, panel: {'aria-*': string, role: string} }}\n\t\t * @uib.label ARIA Properties\n\t\t * @uib.defaultValue {\"panel\": {\"aria-label\": \"Options\"}}\n\t\t * @uib.description Sets ARIA properties on the inner html 'button' and 'listbox'\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tinput: configAriaLabelSchema,\n\t\t\t\t\tpanel: configAriaLabelSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slotted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: {layout: 'vertical'},\n\t\t\tschema: fieldLayoutSchema,\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this typeahead\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Set to true to wrap the label if it does not fit on one line.\n\t\t * @type {boolean}\n\t\t * @uib.description Wraps the label if it does not fit on one line.\n\t\t */\n\t\twrapLabel: {default: false, schema: {type: 'boolean'}},\n\t},\n\tinitialState: {\n\t\t/**\n\t\t * The id of the currently focused item in the dropdown list.\n\t\t */\n\t\tactiveItemId: null,\n\t\t/**\n\t\t * Whether or not the popover is opened and the dropdown list is visible.\n\t\t */\n\t\topened: false,\n\t\t/**\n\t\t * Whether or not the input is focused\n\t\t */\n\t\thasFocus: false,\n\t\t/**\n\t\t * Whether or not the number of results in the dropdown should be announced by aria live.\n\t\t */\n\t\tannounceResults: false,\n\t\t/**\n\t\t * Whether or not the placeholder tooltip is visible\n\t\t */\n\t\tplaceholderTooltipVisible: false,\n\t\t/**\n\t\t * Whether or not the placeholder overflows the input field\n\t\t */\n\t\tplaceholderOverflow: false,\n\t\t/**\n\t\t * Whether or not the placeholder overflows has been checked\n\t\t */\n\t\tplaceholderOverflowChecked: false,\n\t},\n\tactionHandlers: {\n\t\t// workaround for Firefox not playing nicely with the autofocus attribute\n\t\t[COMPONENT_DOM_TREE_READY]({host, properties, updateState}) {\n\t\t\tconst {autofocus, placeholder, selectedItems} = properties;\n\t\t\tconst input = host.shadowRoot.querySelector('input');\n\t\t\tif (autofocus) {\n\t\t\t\tinput.focus();\n\t\t\t}\n\t\t\tif (placeholder && selectedItems.length === 0) {\n\t\t\t\tconst tempValue = input.value;\n\t\t\t\tinput.value = input.placeholder;\n\t\t\t\tif (input.scrollWidth > input.clientWidth) {\n\t\t\t\t\tupdateState({placeholderOverflow: true});\n\t\t\t\t}\n\t\t\t\tinput.value = tempValue;\n\t\t\t\tupdateState({placeholderOverflowChecked: true});\n\t\t\t}\n\t\t},\n\n\t\t[COMPONENT_PROPERTY_CHANGED]({\n\t\t\thost,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t}) {\n\t\t\tconst {name, previousValue = [], value} = action.payload;\n\t\t\tconst {selectedItems} = properties;\n\t\t\t// when selectedItems is added, clear out the value in the input\n\t\t\tif (name === 'selectedItems' && previousValue.length < value.length) {\n\t\t\t\tconst {disableAutoClose, name, value} = properties;\n\t\t\t\tdispatch('NOW_TYPEAHEAD_MULTI#VALUE_SET', {\n\t\t\t\t\tname,\n\t\t\t\t\tvalue: disableAutoClose ? value : '',\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (name === 'selectedItems' && selectedItems.length === 0) {\n\t\t\t\tconst input = host.shadowRoot.querySelector('input');\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.dispatchEvent(new Event('mouseenter'));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (name === 'items' && state.opened) {\n\t\t\t\thost.shadowRoot.querySelector('now-popover').refit();\n\t\t\t\tif (properties.search === 'managed') {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tannounceResults: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (name === 'messages') {\n\t\t\t\tconst messagesLength = value.length;\n\t\t\t\tconst previousMessagesLength = previousValue ? previousValue.length : 0;\n\t\t\t\tif (messagesLength > previousMessagesLength) {\n\t\t\t\t\tfor (let i = previousMessagesLength; i < messagesLength; i++) {\n\t\t\t\t\t\tconst message = properties.label + ' ' + value[i];\n\t\t\t\t\t\tannounceMessage(message, dispatch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t'PRIVATE#BLUR': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({dispatch}) => {\n\t\t\t\t// Check exact match if autoSelect\n\t\t\t\tdispatch(({properties}) => {\n\t\t\t\t\tconst {items, selectedItems = [], name, value} = properties;\n\n\t\t\t\t\tconst autoSelected = autoSelectMatch(items, selectedItems, value);\n\n\t\t\t\t\tif (autoSelected) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_TYPEAHEAD_MULTI#SELECTED_ITEMS_SET',\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\tvalue: toggleSelectedItem(selectedItems, autoSelected),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn CANCEL_DISPATCH;\n\t\t\t\t});\n\n\t\t\t\t// Run validation\n\t\t\t\tdispatch(({properties}) => {\n\t\t\t\t\tconst {required, selectedItems, invalid, name, value} = properties;\n\t\t\t\t\tconst isInvalid = selectedItems.length === 0;\n\t\t\t\t\tif ((required && isInvalid && !invalid) || (!isInvalid && invalid)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'NOW_TYPEAHEAD_MULTI#INVALID_SET',\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\tvalue: isInvalid,\n\t\t\t\t\t\t\t\tfieldValue: value,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn CANCEL_DISPATCH;\n\t\t\t\t});\n\n\t\t\t\t// after checking exact match and validation, we can dispatch interaction finished\n\t\t\t\tdispatch(({properties}) => {\n\t\t\t\t\tconst {selectedItems, name, value} = properties;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TYPEAHEAD_MULTI#INTERACTION_FINISHED',\n\t\t\t\t\t\tpayload: {name, value, selectedItems},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t'NOW_POPOVER#CONTENT_VISIBLE': makeRedispatchEffect(\n\t\t\t'NOW_TYPEAHEAD_MULTI#LIST_VISIBLE',\n\t\t),\n\t\t'NOW_POPOVER#CONTENT_HIDDEN': makeRedispatchEffect(\n\t\t\t'NOW_TYPEAHEAD_MULTI#LIST_HIDDEN',\n\t\t),\n\t\t'NOW_POPOVER#OPENED_SET'({dispatch, action, updateState}) {\n\t\t\tconst {id, value} = action.payload;\n\n\t\t\t// ignore the helperContent popover\n\t\t\tif (id !== 'now-dropdown-list') return;\n\n\t\t\tupdateState({\n\t\t\t\topened: value,\n\t\t\t\tactiveItemId: null,\n\t\t\t});\n\n\t\t\tif (!value) {\n\t\t\t\tdispatch(({state}) => {\n\t\t\t\t\tconst {hasFocus} = state;\n\n\t\t\t\t\t// If we still have focus, that means the popover was dismissed\n\t\t\t\t\t// with focus still in the field (e.g.: user pressed `Escape`).\n\t\t\t\t\t// Don't want to do anything yet. See similar logic in handleBlur()\n\t\t\t\t\tif (hasFocus) {\n\t\t\t\t\t\treturn CANCEL_DISPATCH;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'PRIVATE#BLUR',\n\t\t\t\t\t\tpayload: {},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t'NOW_DROPDOWN_LIST#ITEM_CLICKED': ({\n\t\t\thost,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t\tproperties,\n\t\t}) => {\n\t\t\tconst {nowId} = properties;\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tconst {placeholderTooltipVisible} = state;\n\t\t\tif (componentId === nowId) {\n\t\t\t\ttogglePanel(updateState, dispatch);\n\n\t\t\t\tdispatch(({properties}) => {\n\t\t\t\t\tconst {selectedItems, name} = properties;\n\t\t\t\t\tconst input = host.shadowRoot.querySelector('input');\n\t\t\t\t\tif (input) {\n\t\t\t\t\t\tinput.focus();\n\t\t\t\t\t\tif (placeholderTooltipVisible) {\n\t\t\t\t\t\t\tdispatch(TOOLTIP_HIDE, {target: input});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinput.dispatchEvent(new Event('mouseleave'));\n\t\t\t\t\t}\n\t\t\t\t\tconst {item} = action.payload;\n\t\t\t\t\tconst selectedIds = toggleItems(selectedItems, item, dispatch);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TYPEAHEAD_MULTI#SELECTED_ITEMS_SET',\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tname: name,\n\t\t\t\t\t\t\tvalue: selectedIds,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t'NOW_TYPEAHEAD_PILL#DISMISSED': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({host, action, dispatch, updateState, properties}) => {\n\t\t\t\tconst {disableAutoClose} = properties;\n\t\t\t\tdispatch(({properties}) => {\n\t\t\t\t\tconst {selectedItems} = properties;\n\t\t\t\t\tconst removedPill = selectedItems.find((item) => {\n\t\t\t\t\t\treturn item.id === action.payload.itemId;\n\t\t\t\t\t});\n\t\t\t\t\tconst removedPillIndex = selectedItems.indexOf(removedPill);\n\t\t\t\t\tconst pills = host.shadowRoot.querySelectorAll('.now-typeahead-pill');\n\t\t\t\t\t//Removes the hoisted tooltip from the DOM\n\t\t\t\t\thost?.shadowRoot?.querySelector('now-tooltip')?.remove();\n\t\t\t\t\t// last pill deleted, focus input\n\t\t\t\t\tif (selectedItems.length === 1) {\n\t\t\t\t\t\tconst input = host.shadowRoot.querySelector('input');\n\t\t\t\t\t\tif (input) {\n\t\t\t\t\t\t\tinput.focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// end pill was deleted, move focus to new end pill\n\t\t\t\t\telse if (removedPillIndex === selectedItems.length - 1) {\n\t\t\t\t\t\tpills[pills.length - 2].focus();\n\t\t\t\t\t}\n\t\t\t\t\t// pill deleted, move focus to next pill in array\n\t\t\t\t\telse if (selectedItems.length > 1) {\n\t\t\t\t\t\tpills[removedPillIndex + 1].focus();\n\t\t\t\t\t}\n\t\t\t\t\tconst message = t(`{0} removed`, removedPill.label);\n\t\t\t\t\tannounceMessage(message, dispatch);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TYPEAHEAD_MULTI#SELECTED_ITEMS_SET',\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tname: properties.name,\n\t\t\t\t\t\t\tvalue: toggleSelectedItem(selectedItems, removedPill),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tupdateState({\n\t\t\t\t\topened: disableAutoClose,\n\t\t\t\t\tactiveItemId: null,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\n\t\t'NOW_DROPDOWN_LIST#ACTIVE_ITEM_SET'({action, updateState, properties}) {\n\t\t\tconst {nowId} = properties;\n\t\t\tconst componentId = action?.meta?.appended?.componentId;\n\t\t\tif (nowId === componentId) {\n\t\t\t\tupdateState({activeItemId: action.payload.value});\n\t\t\t}\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the typeahead menu opens and renders the content. Unlike\n\t\t * `NOW_TYPEAHEAD_MULTI#OPENED_SET`, this action only fires after the typeahead\n\t\t * menu is rendered in the DOM. The `content` property is a node list containing the\n\t\t * typeahead's inner `now-dropdown-list` element.\n\t\t * @uib.description Dispatched when the typeahead menu is fully rendered to the DOM.\n\t\t */\n\t\t'NOW_TYPEAHEAD_MULTI#LIST_VISIBLE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcontent: {type: 'array'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the typeahead menu has been closed and removed. Unlike\n\t\t * `NOW_TYPEAHEAD_MULTI#OPENED_SET`, this action only fires after the typeahead\n\t\t * menu is fully removed from the DOM.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the typeahead menu is fully removed from the DOM.\n\t\t */\n\t\t'NOW_TYPEAHEAD_MULTI#LIST_HIDDEN': {schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched when the field no longer has focus and the user is not interacting\n\t\t * with the items list. This is similar to a native `blur` event, but is\n\t\t * deferred until both the input and the items list no longer have focus.\n\t\t * Payload contains the `name` and the current `value` and `selectedItems`.\n\t\t * @type {{name: string, value: string, selectedItems: string[]}}\n\t\t * @uib.description Dispatched when the field no longer has focus and the user is not interacting with the items list.\n\t\t * @private\n\t\t */\n\t\t'NOW_TYPEAHEAD_MULTI#INTERACTION_FINISHED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t\tselectedItems: {type: 'array', items: {type: 'string'}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when interaction with the field is complete and the validity\n\t\t * of the field has changed. Payload contains the `name` of the field and\n\t\t * the current validity of the field (`value` of the invalid property based\n\t\t * on the `required` properties), and the current `fieldValue` inside of\n\t\t * the input.  Set the `manage-invalid` property to override the default\n\t\t * behavior and handle this action manually.\n\t\t * @type {{name: string, value: boolean, fieldValue: string}}\n\t\t * @uib.description Dispatched when interaction with the field is complete and the validity of the field has changed.\n\t\t */\n\t\t'NOW_TYPEAHEAD_MULTI#INVALID_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t\tfieldValue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when a user selects one or more items. Payload contains an array of IDs of\n\t\t * the currently selected items. Set the `manage-selected-items` property to\n\t\t * override the default behavior and handle this action manually.\n\t\t * @type {{name: string, value: string[]}}\n\t\t * @uib.label Multiple items selected\n\t\t * @uib.description A user selects one or more items.\n\t\t */\n\t\t'NOW_TYPEAHEAD_MULTI#SELECTED_ITEMS_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'array', items: {type: 'string'}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the value of the input field changes. Payload\n\t\t * contains the `name` and the current `value` in the input.\n\t\t * @type {{name: string, value: string}}\n\t\t * @uib.label Field updated\n\t\t * @uib.description A user changes the input field value.\n\t\t */\n\t\t'NOW_TYPEAHEAD_MULTI#VALUE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the user presses the Enter key while focus is inside\n\t\t * the typeahead without highlighting an item from the items list. Payload\n\t\t * contains the `name` and current `value` of the input field, which can\n\t\t * optionally be used to create new custom items.\n\t\t * * @type {{name: string, value: string}}\n\t\t */\n\t\t'NOW_TYPEAHEAD_MULTI#ENTER_KEYDOWN': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tname: {type: 'string'},\n\t\t\t\t\tvalue: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot for field decorators on the inline-start side\n\t\t * of the input field.\n\t\t */\n\t\tstart: {},\n\t\t/**\n\t\t * Slot for field decorators on the inline-end side\n\t\t * of the input field.\n\t\t */\n\t\tend: {},\n\t\t/**\n\t\t * Slot for label end metadata. Located at the end of the label.\n\t\t */\n\t\t'label-end': {},\n\t\t/**\n\t\t * Slot for label, located inline after the label. For the `horizontal` layout, it is placed before the label.\n\t\t */\n\t\t'label-inline': {},\n\t\t/**\n\t\t * Slot for label, located at the start of the label. For the `horizontal` field layout, it is placed after the label.\n\t\t */\n\t\t'label-start': {},\n\t},\n\tbehaviors: [\n\t\tfocusBehavior,\n\t\t{\n\t\t\tbehavior: deferBehavior,\n\t\t\toptions: {\n\t\t\t\tevents: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'mouseenter',\n\t\t\t\t\t\ttrigger: 'now-popover',\n\t\t\t\t\t\ttarget: 'now-dropdown-list',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\ttruncationBehavior,\n\t\ttooltipBehavior,\n\t],\n\tstyles,\n\tview,\n});\n","import './now-typeahead';\nimport './now-typeahead-multi';\n\nimport packageInfo from '../package.json';\nconst {name, version} = packageInfo;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import { createCustomElement } from '@servicenow/ui-core';\nimport { t } from 'sn-translate';\n\nimport columnSelectors from '../../../../utils/selectors/columnSelectors';\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\n\nimport '@servicenow/now-typeahead';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue: Pill[]}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditValue } = state;\n\tconst column = state?.properties?.actionsContext?.column;\n\t/**\n\t * @type any[]\n\t */\n\tconst pillsChoices = column ? columnSelectors.getPillsChoices(column) : [];\n\n\t// This change is needed as the now-typeahead-multi expects id and label\n\tconst selectedPillItems = cellEditValue.some((pill) => pill.key)\n\t\t? cellEditValue.map(({ key, label }) => ({ id: key, label }))\n\t\t: cellEditValue;\n\n\tconst pillItems = pillsChoices\n\t\t.filter(\n\t\t\t(\n\t\t\t\t/**\n\t\t\t\t * @type Pill\n\t\t\t\t */\n\t\t\t\tpill\n\t\t\t) => pill.canEdit !== false\n\t\t)\n\t\t.map(({ key, label }) => ({ id: key, label }));\n\n\treturn (\n\t\t<div className=\"popover-pills-cell-editor-content-container\">\n\t\t\t<now-typeahead-multi\n\t\t\t\tname=\"cellEditingPills\"\n\t\t\t\tclassName=\"pills-type-cell-editor-content\"\n\t\t\t\tlabel={t('Pills')}\n\t\t\t\titems={pillItems}\n\t\t\t\tselectedItems={selectedPillItems}\n\t\t\t\tsearch=\"contains\"\n\t\t\t\tmanageSelectedItems={true}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-pills-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\treturn {\n\t\t\tcellEditValue: value,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { createCustomElement } from '@servicenow/ui-core';\n\nimport ColumnSelectors from '../../../../utils/selectors/columnSelectors';\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\n\nimport '@servicenow/now-select';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue: String}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditValue, properties } = state;\n\tconst { actionsContext, choices } = properties;\n\tconst column = actionsContext?.column;\n\n\t/**\n\t * @type {Choice[] | ColumnBase[]}\n\t */\n\tconst choiceList = choices\n\t\t? choices\n\t\t: column\n\t\t? ColumnSelectors.getChoices(column) || []\n\t\t: [];\n\n\t// This change is needed as the now-select expects id and label\n\tconst choiceItems = choiceList.some((choice) => choice.key)\n\t\t? choiceList.map(({ key, label }) => ({ id: key, label }))\n\t\t: choiceList;\n\n\treturn (\n\t\t<div className=\"popover-choice-cell-editor-content-container\">\n\t\t\t<now-select\n\t\t\t\tname=\"cellEditingChoice\"\n\t\t\t\tclassName=\"choice-type-cell-editor-content\"\n\t\t\t\tselectedItem={cellEditValue}\n\t\t\t\tmanageSelectedItem={true}\n\t\t\t\titems={choiceItems}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-choice-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tchoices,\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { value, metadata },\n\t\t\t},\n\t\t},\n\t}) {\n\t\treturn {\n\t\t\tcellEditValue: choices ? metadata.internalValue : value,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t\tchoices: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { createCustomElement } from '@servicenow/ui-core';\nimport { t } from 'sn-translate';\n\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\nimport '@servicenow/now-input';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditLabel: String, cellEditValue: String}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditLabel, cellEditValue } = state;\n\n\treturn (\n\t\t<div className=\"popover-url-cell-editor-content-container\">\n\t\t\t<now-input\n\t\t\t\ttype=\"text\"\n\t\t\t\tlabel={t('Enter label')}\n\t\t\t\tname=\"cellEditingUrlLabel\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tvalue={cellEditLabel}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t\t<now-input-url\n\t\t\t\tlabel={t('Enter a URL')}\n\t\t\t\tname=\"cellEditingUrlValue\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tvalue={cellEditValue}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-url-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { label, value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\treturn {\n\t\t\tcellEditValue: value,\n\t\t\tcellEditLabel: label,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { createCustomElement } from '@servicenow/ui-core';\nimport { t } from 'sn-translate';\n\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\n\nimport '@servicenow/now-input';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditLabel: String, cellEditValue: String}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditLabel, cellEditValue } = state;\n\treturn (\n\t\t<div className=\"popover-link-cell-editor-content-container\">\n\t\t\t<now-input\n\t\t\t\ttype=\"text\"\n\t\t\t\tlabel={t('Enter label')}\n\t\t\t\tname=\"cellEditingLinkLabel\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tvalue={cellEditLabel}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t\t<now-input\n\t\t\t\ttype=\"text\"\n\t\t\t\tlabel={t('Enter an action to dispatch')}\n\t\t\t\thelperContent={\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'Enter an event naming convention that includes casing and prefixes.'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t{t('(e.g. COMPONENT_NAME#ACTION_TAKEN)')}\n\t\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t\tname=\"cellEditingLinkValue\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tpattern=\"^[A-Z_#]+$\" //Only allows capital letter,_and# symbols\n\t\t\t\tvalue={cellEditValue}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-link-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { label, value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\tconst initialState = {};\n\n\t\tif (value != null) {\n\t\t\tinitialState.cellEditValue = value;\n\t\t}\n\t\tif (label != null) {\n\t\t\tinitialState.cellEditLabel = label;\n\t\t}\n\t\treturn initialState;\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { t } from 'sn-translate';\n\n/** @type {object} */\nexport const COLOR_LIST = [\n\t{ id: 'info', label: t('Info') },\n\t{ id: 'moderate', label: t('Moderate') },\n\t{ id: 'critical', label: t('Critical') },\n\t{ id: 'warning', label: t('Warning') },\n\t{ id: 'positive', label: t('Positive') },\n\t{ id: 'high', label: t('High') },\n\t{ id: 'low', label: t('Low') },\n];\n","import { createCustomElement } from '@servicenow/ui-core';\nimport { t } from 'sn-translate';\n\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-input';\nimport '@servicenow/now-select';\nimport { COLOR_LIST } from './constants';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue: String, cellEditColor: String}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditValue, cellEditColor } = state;\n\n\treturn (\n\t\t<div className=\"popover-icon-cell-editor-content-container\">\n\t\t\t<now-input\n\t\t\t\ttype=\"text\"\n\t\t\t\tlabel={t('Select an icon')}\n\t\t\t\thelperContent={\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'The name of an icon in kebab case (e.g. complete-outline)'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t\tname=\"cellEditingIconValue\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tpattern=\"/^[a-z-]+$/\" //Only allows lowercase letters and - symbol\n\t\t\t\tvalue={cellEditValue}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t\t<now-select\n\t\t\t\tlabel={t('Select icon color')}\n\t\t\t\tname=\"cellEditingIconColor\"\n\t\t\t\tclassName=\"choice-type-cell-editor-content\"\n\t\t\t\tselectedItem={cellEditColor}\n\t\t\t\tmanageSelectedItem={true}\n\t\t\t\titems={COLOR_LIST}\n\t\t\t/>\n\t\t\t<div>\n\t\t\t\t<span className=\"icon-preview-label-cell-editor-content\">\n\t\t\t\t\t{t('Preview:')}\n\t\t\t\t</span>\n\t\t\t\t<now-icon\n\t\t\t\t\ticon={cellEditValue}\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\tclassName={cellEditColor}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-icon-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { color, value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\tconst initialState = {};\n\n\t\tif (value != null) {\n\t\t\tinitialState.cellEditValue = value;\n\t\t}\n\t\tif (color != null) {\n\t\t\tinitialState.cellEditColor = color;\n\t\t}\n\t\treturn initialState;\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { createCustomElement } from '@servicenow/ui-core';\nimport isEmpty from 'lodash/isEmpty';\nimport { t } from 'sn-translate';\n\nimport columnSelectors from '../../../../utils/selectors/columnSelectors';\nimport {\n\tPERSON_CELL_ICON_SIZE,\n\tPERSON_DISPLAY_TYPE_AVATAR,\n\tPERSON_DISPLAY_TYPE_BOTH,\n} from '../../../table/tableBody/tableRow/rowCell/personCellType/personCellConstants';\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\n\nimport '@servicenow/now-input';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue: String, cellEditPersonKey: String, cellEditPersonUrl: String}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst {\n\t\tproperties,\n\t\tcellEditValue,\n\t\tcellEditPersonKey,\n\t\tcellEditPersonUrl,\n\t} = state;\n\n\tconst column = properties.actionsContext?.column || {};\n\tconst { getDisplay } = columnSelectors;\n\tconst display = getDisplay(column);\n\n\tconst shouldDisplayAvatar =\n\t\t(display === PERSON_DISPLAY_TYPE_AVATAR ||\n\t\t\tdisplay === PERSON_DISPLAY_TYPE_BOTH) &&\n\t\t!isEmpty(cellEditValue);\n\n\treturn (\n\t\t<div className=\"popover-person-cell-editor-content-container\">\n\t\t\t<now-input\n\t\t\t\ttype=\"text\"\n\t\t\t\tlabel={t('Enter name')}\n\t\t\t\tname=\"cellEditingPersonName\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tvalue={cellEditValue}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t\t<now-input\n\t\t\t\ttype=\"text\"\n\t\t\t\tlabel={t('Enter unique identifier')}\n\t\t\t\thelperContent={\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'A unique identifying string to represent this person. All mentions of a given person should have the same identifier string.'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t\tname=\"cellEditingPersonKey\"\n\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\tvalue={cellEditPersonKey}\n\t\t\t\tmanageValue={true}\n\t\t\t/>\n\t\t\t{shouldDisplayAvatar ? (\n\t\t\t\t<now-input-url\n\t\t\t\t\tlabel={t('Enter a URL of an image')}\n\t\t\t\t\thelperContent={\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t\t\"A link to an image that should be displayed as this person's avatar. If not provided, the avatar will display initials instead of an image.\"\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t\tname=\"cellEditingPersonImageUrl\"\n\t\t\t\t\tclassName=\"input-type-cell-editor-content\"\n\t\t\t\t\tvalue={cellEditPersonUrl}\n\t\t\t\t\tmanageValue={true}\n\t\t\t\t/>\n\t\t\t) : null}\n\n\t\t\t<div>\n\t\t\t\t<span className=\"person-preview-label-cell-editor-content\">\n\t\t\t\t\t{t('Preview:')}\n\t\t\t\t</span>\n\n\t\t\t\t{shouldDisplayAvatar ? (\n\t\t\t\t\t<now-avatar\n\t\t\t\t\t\tclassName=\"person-cell-avatar\"\n\t\t\t\t\t\tsize={PERSON_CELL_ICON_SIZE}\n\t\t\t\t\t\tuserName={cellEditValue}\n\t\t\t\t\t\timageSrc={cellEditPersonUrl}\n\t\t\t\t\t\tkey={cellEditPersonKey}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"popover-cell-editor-person-preview-name\"\n\t\t\t\t\tdata-truncation\n\t\t\t\t>\n\t\t\t\t\t{cellEditValue}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-person-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { value, personKey, imageSrc },\n\t\t\t},\n\t\t},\n\t}) {\n\t\tconst initialState = {};\n\n\t\tif (value != null) {\n\t\t\tinitialState.cellEditValue = value;\n\t\t}\n\n\t\tif (personKey != null) {\n\t\t\tinitialState.cellEditPersonKey = personKey;\n\t\t}\n\n\t\tif (imageSrc != null) {\n\t\t\tinitialState.cellEditPersonUrl = imageSrc;\n\t\t}\n\n\t\treturn initialState;\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","export const tinymce = require('./js/tinymce/tinymce.full.js');\nrequire('./js/tinymce/plugins/powerpaste/plugin.full.js');","/**\n * Additional props that are passed down to Seismic components\n * via the core framework. Most consumers of form controls shouldn't\n * really worry about these.\n *\n * @see [Seismic Docs](https://artifact.devsnc.com/content/sites/snc-doc-site/sn-component-docs/latest/)\n */\nexport const seismicComponentprops = {\n\t/**\n\t * Seismic dispatcher\n\t * @type {function}\n\t */\n\tdispatch: { schema: { type: 'function' } },\n\t/**\n\t * Unique identifier for the component\n\t * @type {string}\n\t * */\n\tcomponentId: { schema: { type: 'string' }, required: true, default: 'id' },\n\t/**\n\t * Data returned by one of the Seismic resource handlers\n\t * @type {object}\n\t * */\n\tresources: { schema: { type: 'object' } },\n\t/**\n\t * Asynchronous Message Bus (AMB) API\n\t * @type {object}\n\t */\n\tchannels: { schema: { type: 'object' } }\n};\n","export const fieldLayoutSchema = {\n\ttype: 'object',\n\tproperties: {\n\t\tlayout: {\n\t\t\tdefault: 'vertical',\n\t\t\tschema: { type: 'string', enum: ['vertical', 'horizontal'] }\n\t\t},\n\t\tcolumns: { default: [], schema: { type: 'array' } }\n\t}\n};\n\nexport const decorationsSchema = {\n\ttype: 'array',\n\tproperties: {\n\t\ticon: {\n\t\t\tdefault: '',\n\t\t\ttype: 'string'\n\t\t},\n\t\ttext: {\n\t\t\tdefault: '',\n\t\t\ttype: 'string'\n\t\t}\n\t}\n};\n","import { fieldLayoutSchema } from \"../schemas\";\n\n/**\n * Basic props that are common to seismic components in our repo\n */\nconst seismicProps = {\n\t/**\n\t * Array of message objects that must contain type and message itself.\n\t *\n\t * @type {Array<{type: (\"error\"|\"warning\"|\"success\"|\"liveUpdate\"|\"info\"|\"suggestion\"), type:Array<string,Object<{string, getMessage:function}>> }>}\n\t */\n\tmessages: {},\n\n\t/**\n\t * formData object containing glide form data\n\t *\n\t * @type {object}\n\t */\n\tformData: {},\n\n\t/**\n\t * Name of the field\n\t *\n\t * @type {string}\n\t */\n\tfieldName: { schema: { type: 'string' } },\n\n\t/**\n\t * Name of table this field is on\n\t * @type {string}\n\t */\n\ttableName: { schema: { type: 'string' } },\n\n\t/**\n\t * sys_id of the current record where the field is located\n\t *\n\t * @type {string}\n\t */\n\trecordSysId: { schema: { type: 'string' } },\n\n\t/**\n\t * The field name\n\t * @type {string}\n\t */\n\tname: { schema: { type: 'string' } },\n\n\t/**\n\t * Content to display when there is no suitable display value.\n\t * @type {string}\n\t */\n\tplaceholder: { schema: { type: 'string' } },\n\n\t/**\n\t * Name for the component.\n\t * @type {string}\n\t */\n\tlabel: { schema: { type: 'string' } },\n\n\t/**\n\t * Value for current omponent.\n\t * @type {string}\n\t */\n\tvalue: { schema: { type: 'string' } },\n\n\t/**\n\t * Callback used when the value has changed. Very similar to an `onChange`\n\t * event, but this may also fire when the component formats its value\n\t * onBlur.\n\t *\n\t * @param {object} event - The event payload\n\t * @param {string} event.name - The name of the component that triggered the event\n\t * @param {any}    event.value - The new value for the component\n\t * @param {string} event.displayValue - The human-readable represenation of the value\n\t *\n\t * @param {object} event.error - If the current value is invalid, this propery will be set. When the current value is valid, this property will be null.\n\t * @param {string} event.error.type - Error type\n\t * @param {string} event.error.message - Description of why the value is invalid\n\t * @type {function}\n\t */\n\tonValueChange: {},\n\n\t/**\n\t * Callback used when an intermediate value has changed.\n\t * @type {function}\n\t */\n\tonStagedValueChange: {},\n\n\t/**\n\t * Additional content describing the field, usually to provide further\n\t * instruction to the user.\n\t * @type {string}\n\t */\n\tdescription: { schema: { type: 'string' }, default: '' },\n\n\t/**\n\t * Whether or not the user must fill in a value for this component.\n\t * Can be specified as a boolean or the string \"true\"\n\t * @type {string | boolean}\n\t */\n\trequired: { default: false },\n\n\t/**\n\t * Specifies that the user cannot modify the value of the component.\n\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t * @type {string | boolean}\n\t */\n\treadonly: { default: false },\n\n\t/**\n\t * Specifies that the field should be rendered right-to-left.\n\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t * boolean true.\n\t * @type {string | boolean}\n\t */\n\treversed: { default: false },\n\n\t/**\n\t * Specifies whether the current value is not valid.\n\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t * boolean true.\n\t * @type {string | boolean}\n\t */\n\tinvalid: { default: false },\n\n\t/**\n\t * Causes the component to receive focus as soon as it has finished\n\t * mounting.\n\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t * boolean true.\n\t * @type {string | boolean}\n\t */\n\tautofocus: { default: false },\n\n\t/**\n\t * Unique name for a shadowDom slot\n\t * @type {string}\n\t */\n\tslot: { schema: { type: 'string' } },\n\n\t/**\n\t * Accessible label for the component. Only needed when the `label` prop is not\n\t * descriptive enough on its own.\n\t * @type {string}\n\t */\n\t'aria-label': { schema: { type: 'string' } },\n\n\t/**\n\t * Which element (by ID) acts as a label for the component\n\t * @type {string}\n\t */\n\t'aria-labelledby': { schema: { type: 'string' } },\n\n\t/**\n\t * Which element (by ID) provides more description for the component\n\t * @type {string}\n\t */\n\t'aria-describedby': { schema: { type: 'string' } },\n\n\t/**\n\t * aria-* attribute configuration\n\t * @type {object}\n\t */\n\tconfigAria: {},\n\n\t/**\n\t * Configuration for the field layout.\n\t *\n\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t * In a horizontal layout, a typical component has three containers: label, formfield and slottted content (also known as label end)\n\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t *\n\t * Object options:\n\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t *\n\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t * @uib.label Field Layout Configuration\n\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t * @uib.fieldType json\n\t */\n\tfieldLayout: {\n\t\tdefault: {layout: 'vertical'},\n\t\tschema: fieldLayoutSchema\n\t},\n\n\tfieldType: { schema: { type: 'string' } },\n\n\t/**\n\t * If set, an iconic button with a popover appears next to the field\n\t * label to display additional hint text to the user, such as\n\t * password requirements or other instructions for completing the field.\n\t * @type {(string|JSX)}\n\t */\n\thelperContent: { schema: { type: 'string' } }\n};\n\nexport default seismicProps;\n","/**\n * Additional props that are passed down to Seismic components\n * via the core framework. Most consumers of form controls shouldn't\n * really worry about these.\n *\n * @see [Seismic Docs](https://artifact.devsnc.com/content/sites/snc-doc-site/sn-component-docs/latest/)\n */\nexport const SeismicControlledFieldProps = {\n\t/**\n\t * onChange event callback\n\t * @type {function}\n\t */\n\tonChange: { schema: { type: 'function' } },\n\n\t/**\n\t * onSelect event callback\n\t * @type {function}\n\t */\n\tonSelect: { schema: { type: 'function' } },\n\t/**\n\t * onClick event callback\n\t * @type {function}\n\t */\n\tonClick: { schema: { type: 'function' } },\n\n\t/**\n\t * onMouseEnter event callback\n\t * @type {function}\n\t */\n\tonMouseEnter: { schema: { type: 'function' } },\n\n\t/**\n\t * onMouseLeave event callback\n\t * @type {function}\n\t */\n\tonMouseLeave: { schema: { type: 'function' } },\n\n\t/**\n\t * onFocus event callback\n\t * @type {function}\n\t */\n\tonFocus: { schema: { type: 'function' } },\n\n\t/**\n\t * onBlur event callback\n\t * @type {function}\n\t */\n\tonBlur: { schema: { type: 'function' } },\n\n\t/**\n\t * onKeyDown event callback\n\t * @type {function}\n\t */\n\tonKeyDown: { schema: { type: 'function' } },\n\n\t/**\n\t * onKeyUp event callback\n\t * @type {function}\n\t */\n\tonKeyUp: { schema: { type: 'function' } },\n\n\t/**\n\t * onKeyPress event callback\n\t * @type {function}\n\t */\n\tonKeyPress: { schema: { type: 'function' } }\n};\n","import { seismicComponentprops } from './SeismicComponent';\nimport SeismicComponentBase from './SeismicComponentBase';\n\nexport { SeismicControlledFieldProps } from './SeismicControlledFieldProps';\nexport const SeismicComponentProps = seismicComponentprops;\nexport const SeismicComponentFieldPropDefaults = SeismicComponentBase;\n","import _ from 'lodash';\nexport function escapeSeismicSpecialSymbols(s) {\n\treturn _.startsWith(s, '@') ? `\\\\${s}` : s;\n}\n","import {\n\tcamelCase,\n\tmap,\n\tmapValues,\n\trange,\n\tisObject,\n\tisEmpty,\n\tfind,\n\tpickBy,\n\tidentity,\n\tomit,\n\tget\n} from 'lodash';\nimport classNames from 'classnames';\nimport { t } from 'sn-translate';\nimport { getEmbeddableBaseUrl } from '@servicenow/ui-config';\n\nexport function getFieldDisplayValue(\n\tvalue,\n\tdisplayValue,\n\tplaceholder,\n\tchoices\n) {\n\tif (displayValue) {\n\t\treturn displayValue;\n\t} else if (value && choices) {\n\t\tlet choice = find(choices, { value });\n\t\tif (choice && choice.displayValue) return choice.displayValue;\n\t} else if (!value && placeholder) {\n\t\treturn placeholder;\n\t}\n\n\treturn value || '';\n}\n\nexport function isAttrTrue(val) {\n\treturn val === true || val === 'true';\n}\n\nexport function isAttrFalse(val) {\n\treturn val === false || val === 'false';\n}\n\nexport function castIfBoolean(val) {\n\treturn val === 'true' ? true : val === 'false' ? false : val;\n}\n\nexport function isEditable(props) {\n\tif (!isObject(props)) {\n\t\treturn true;\n\t}\n\n\treturn !isAttrTrue(props.readonly);\n}\n\nexport function getSerializedChanges(props) {\n\tconst { dependentField, dependentValue } = props;\n\tconst serializedChanges = get(props, 'formData.serializedChanges');\n\ttry {\n\t\tconst changedFields = JSON.parse(serializedChanges);\n\t\tlet changes = changedFields.reduce((changes, field) => {\n\t\t\tchanges[field.name] = field.value;\n\t\t\treturn changes;\n\t\t}, {});\n\t\tif (dependentField && dependentValue) {\n\t\t\t//Dont overwrite formData, it should take precedence over d-Field & d-Value\n\t\t\tchanges[dependentField] = changes[dependentField]\n\t\t\t\t? changes[dependentField]\n\t\t\t\t: dependentValue;\n\t\t}\n\t\treturn JSON.stringify(changes);\n\t} catch (e) {\n\t\treturn '';\n\t}\n}\n\nexport function getEncodedRecord(formData = {}) {\n\treturn formData.isNewRecord ? formData.encodedRecord : '';\n}\n\nexport function isClassicForm(formData = {}) {\n\tif (!Object.prototype.hasOwnProperty.call(formData, 'classicForm'))\n\t\treturn true;\n\treturn formData.classicForm || false;\n}\n\nexport function generateSubComponentIds(baseId, additionalFields) {\n\treturn {\n\t\tparent: baseId,\n\t\tlabel: `${baseId}-label`,\n\t\tdescription: `${baseId}-description`,\n\t\tdropdown: `${baseId}-dropdown`,\n\t\tmessages: `${baseId}-messages`,\n\t\t...mapValues(additionalFields, (size, fieldName) =>\n\t\t\tmap(range(0, size), index => `${baseId}-${fieldName}-${index}`)\n\t\t)\n\t};\n}\n\nexport function hasProp(prop) {\n\treturn isAttrTrue(prop) ? true : undefined;\n}\n\nconst getAriaAttr = props => attr => {\n\tconst camelCased = camelCase(attr);\n\n\tconst { configAria = {} } = props;\n\n\treturn configAria[attr] || props[camelCased];\n};\n\nexport function accessibilityAttributes(props) {\n\tif (!isObject(props)) {\n\t\treturn {};\n\t}\n\n\tconst ids = generateSubComponentIds(props.componentId);\n\tconst defaultDescribedby = classNames({\n\t\t[ids.description]: props.description,\n\t\t[ids.messages]: !isEmpty(props.messages)\n\t});\n\n\tconst resolveAriaAttr = getAriaAttr(props);\n\n\tconst propAriaLabel = resolveAriaAttr('aria-label');\n\tconst propAriaLabelledby = resolveAriaAttr('aria-labelledby');\n\tconst propAriaDescribedby = resolveAriaAttr('aria-describedby');\n\tconst propAriaDisabled = resolveAriaAttr('aria-disabled');\n\tconst propAriaHidden = resolveAriaAttr('aria-hidden');\n\tconst propAriaRequired = resolveAriaAttr('aria-required');\n\tconst propAriaInvalid = resolveAriaAttr('aria-invalid');\n\n\tconst restOfAriaProps = mapValues(\n\t\tomit(props.configAria, ['aria-label', 'aria-labelledby', 'aria-label']),\n\t\t(v, k) => resolveAriaAttr(k)\n\t);\n\n\treturn pickBy(\n\t\t{\n\t\t\t'aria-labelledby': propAriaLabel ? null : propAriaLabelledby,\n\t\t\t'aria-describedby': propAriaDescribedby || defaultDescribedby,\n\t\t\t'aria-label': propAriaLabel,\n\t\t\t'aria-disabled':\n\t\t\t\tpropAriaDisabled || isAttrTrue(props.disabled) ? 'true' : null,\n\t\t\t'aria-hidden': propAriaHidden || isAttrTrue(props.hide) ? 'true' : null,\n\t\t\t'aria-required':\n\t\t\t\tpropAriaRequired || isAttrTrue(props.required) ? 'true' : null,\n\t\t\t'aria-invalid':\n\t\t\t\tpropAriaInvalid || isAttrTrue(props.invalid) ? 'true' : null,\n\t\t\t...restOfAriaProps\n\t\t},\n\t\tidentity\n\t);\n}\n\nexport function isFieldEditableAndDependentFieldValueSet(\n\treadonly,\n\tdependentFieldValue,\n\tdependentFieldLabel\n) {\n\treturn (\n\t\t!isAttrTrue(readonly) &&\n\t\tisEmpty(dependentFieldValue) &&\n\t\t!isEmpty(dependentFieldLabel)\n\t);\n}\n\nexport function getBaseURL() {\n\treturn getEmbeddableBaseUrl() || '';\n}\n\nexport function getAriaLabelFromConfig(\n\tconfigAria,\n\tlabelTemplate,\n\t...additionalTemplateValues\n) {\n\treturn configAria?.['aria-label']\n\t\t? {\n\t\t\t\t'aria-label': t.apply(null, [\n\t\t\t\t\tlabelTemplate,\n\t\t\t\t\tconfigAria['aria-label'],\n\t\t\t\t\t...additionalTemplateValues\n\t\t\t\t])\n\t\t  }\n\t\t: {};\n}\n","import { escapeSeismicSpecialSymbols } from './escapeSeismicSpecialSymbols';\nimport { getSerializedChanges, getEncodedRecord } from './field';\n\nexport const getDeclarativeActionsProps = (daProps, controlProps = {}) => {\n\tlet props = daProps;\n\tif (controlProps && props) {\n\t\tObject.assign(props, controlProps);\n\t}\n\tif (!props) return {};\n\n\tconst displayValue = props.displayValue || '';\n\n\tconst daOnlyProps = {\n\t\tcanWrite: props.canWrite,\n\t\tdeclarativeUiActions: props.declarativeUiActions,\n\t\tdependentField: props.dependentField,\n\t\tdependentTable: props.dependentTable,\n\t\tdependentValue: props.dependentFieldValue || props.dependentValue,\n\t\tdictionary: props.dictionary,\n\t\tdisplayValue: escapeSeismicSpecialSymbols(displayValue.toString()),\n\t\tdisplayValueList: Array.isArray(displayValue) ? displayValue : null,\n\t\tfetchDeclarativeActions: props.fetchDeclarativeActions,\n\t\tfieldName: props.name,\n\t\tfieldType: props.fieldType,\n\t\tfields: props.fields,\n\t\thidden: props.hidden,\n\t\tlabel: props.label,\n\t\tname: props.name,\n\t\tonValueChange: props.onValueChange,\n\t\treadonly: props.readonly,\n\t\treference: props.reference,\n\t\treferenceKey: props.referenceKey,\n\t\treferenceSysId: props.referenceSysId || props.value,\n\t\treferenceTable: props.reference || props.referenceTable,\n\t\treferringRecordId: props.referringRecordId,\n\t\treferringTable: props.referringTable,\n\t\trequired: props.required,\n\t\ttableName: props.referringTable || props.tableName,\n\t\tvalue: props.value,\n\t\tvisible: props.visible,\n\t\treferenceQualifier: props.referenceQualifier,\n\t\trecordSysId: controlProps?.formData?.isNewRecord\n\t\t\t? '-1'\n\t\t\t: props.referringRecordId || props.recordSysId,\n\t\tserializedChanges: getSerializedChanges(props),\n\t\tencodedRecord: getEncodedRecord(controlProps.formData),\n\t\tignoreDepAsRefQual: daProps?.ignoreDepAsRefQual || false,\n\t\tignoreReferenceQualifier: daProps?.ignoreReferenceQualifier || false\n\t};\n\n\treturn daOnlyProps;\n};\n","import { isEmpty, isFunction, some } from 'lodash';\nimport { getFocusableNodes } from '@servicenow/behavior-focus';\n\n/**\n * Returns the first ancestor of the element that has the given class name\n */\nexport function findAncestor(el, className) {\n\tif (!(el instanceof HTMLElement)) {\n\t\treturn null;\n\t}\n\n\tif (!el.classList.contains(className)) {\n\t\twhile ((el = el.parentElement) && !el.classList.contains(className));\n\t}\n\treturn el;\n}\n\n/**\n * Check whether a node was part of an event path\n * @returns {boolean} true if the event path includes the node\n */\nexport function isNodeInEventPath(node, event) {\n\tif (Array.isArray(node))\n\t\treturn some(node, el => isNodeInEventPath(el, event));\n\treturn (\n\t\tnode instanceof HTMLElement &&\n\t\tevent instanceof Event &&\n\t\tevent.composedPath().includes(node)\n\t);\n}\n\n/**\n * Check whether a node contains an element with focus. ShadowDOM\n * makes this a little tricky...\n */\nexport function nodeContainsFocus(container, target = document) {\n\tif (Array.isArray(container)) {\n\t\treturn some(container, el => nodeContainsFocus(el, target));\n\t}\n\n\tif (!(container instanceof HTMLElement) || !target) {\n\t\treturn false;\n\t}\n\n\tconst activeElement = target.activeElement;\n\n\tif (container.contains(activeElement)) {\n\t\treturn true;\n\t}\n\n\tif (activeElement.shadowRoot) {\n\t\treturn nodeContainsFocus(container, activeElement.shadowRoot);\n\t}\n}\n\nexport const isSlotEmpty = slot => {\n\tconst hasNoDirectChildren = slot.childElementCount === 0;\n\n\treturn isFunction(slot.assignedNodes)\n\t\t? isEmpty(slot.assignedNodes()) && hasNoDirectChildren\n\t\t: hasNoDirectChildren;\n};\n\nexport function getScrollParent(node) {\n\tconst isElement = node instanceof HTMLElement;\n\tconst overflowY = isElement && window.getComputedStyle(node).overflowY;\n\tconst isScrollable = overflowY !== 'visible' && overflowY !== 'hidden';\n\n\tif (!node) {\n\t\treturn null;\n\t} else if (isScrollable && node.scrollHeight >= node.clientHeight) {\n\t\treturn node;\n\t}\n\n\treturn getScrollParent(node.host || node.parentNode);\n}\n\nexport function fitDropdownToViewport(dropdown, target) {\n\tif (!(dropdown instanceof HTMLElement)) {\n\t\treturn;\n\t}\n\n\tlet parentHeight = document.documentElement.clientHeight;\n\n\t// In IE/Edge, the container height is the entire page height.\n\t// So defer it until it gets its real height\n\treturn new Promise(resolve => {\n\t\tsetTimeout(() => {\n\t\t\tlet { height } = dropdown.getBoundingClientRect();\n\t\t\t// Sometimes we use graphql requests and that changes the height of the\n\t\t\t// dropdown this is to attempt to account for the size chagne\n\t\t\tconst MAX_DROPDOWN_HEIGHT = Math.min(height, 300);\n\t\t\tlet {\n\t\t\t\twidth: targetWidth,\n\t\t\t\ttop: targetTop,\n\t\t\t\tbottom: targetBottom,\n\t\t\t\tleft: targetLeft\n\t\t\t} = target.getBoundingClientRect();\n\n\t\t\t// Is bottom of the dropdown below the fold + can the dropdown fit above?\n\t\t\t// Move to be above the input field.\n\t\t\tconst hasSpaceBelow = targetBottom + MAX_DROPDOWN_HEIGHT < parentHeight;\n\t\t\tconst hasSpaceAbove = targetTop - MAX_DROPDOWN_HEIGHT > 0;\n\t\t\t//render above\n\t\t\tif (!hasSpaceBelow && hasSpaceAbove) {\n\t\t\t\t// Since height of the dropdown may change as results load,\n\t\t\t\t// set the bottom of the dropdown to ensure it loads above the input field\n\t\t\t\tdropdown.style.bottom = `${parentHeight - targetTop}px`;\n\t\t\t} else {\n\t\t\t\tdropdown.style.top = `${targetBottom}px`;\n\t\t\t}\n\n\t\t\tdropdown.style.width = `${targetWidth}px`;\n\t\t\tdropdown.style.left = `${targetLeft}px`;\n\n\t\t\tresolve();\n\t\t});\n\t});\n}\n\n// Workaround for PRB1343271 for mentions dropdown\nexport function fitDropdownToViewportOld(dropdown) {\n\tif (!(dropdown instanceof HTMLElement)) {\n\t\treturn;\n\t}\n\n\t// Check if the element is in a scrollable container, otherwise use body\n\tconst scrollParent = getScrollParent(dropdown);\n\tlet parentHeight = document.documentElement.clientHeight;\n\tif (scrollParent) parentHeight = scrollParent.getBoundingClientRect().height;\n\n\t// In IE/Edge, the container height is the entire page height.\n\t// So defer it until it gets its real height\n\treturn new Promise(resolve => {\n\t\tsetTimeout(() => {\n\t\t\tlet { height, top } = dropdown.getBoundingClientRect();\n\t\t\tif (scrollParent) top = top - scrollParent.getBoundingClientRect().top;\n\n\t\t\t// Is bottom of the dropdown below the fold + can the dropdown fit above?\n\t\t\t// Move to be above the input field.\n\t\t\tif (height > parentHeight - top && top > height) {\n\t\t\t\tdropdown.style.top = 'auto';\n\t\t\t\tdropdown.style.bottom = '100%';\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\t});\n}\n\n/**\n * Can be used to determine the direction of the browser window\n * and then for components rendering direction\n * @returns {boolean}\n */\nexport function isRTL() {\n\treturn document.dir === 'rtl';\n}\n\n/**\n * Checks whether a node contains an element with selector inside a Shadow Dom\n * and then returns the element\n * @returns {HTMLElement}\n */\nexport const querySelectorDeep = (selector, rootEl = window.document.body) => {\n\tif (rootEl.matches && rootEl.matches(selector)) return rootEl;\n\n\tconst children = rootEl.children;\n\n\tif (children) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tif (children[i].matches && children[i].matches(selector))\n\t\t\t\treturn children[i];\n\n\t\t\tconst child = querySelectorDeep(selector, children[i]);\n\t\t\tif (child) return child;\n\t\t}\n\t}\n\n\tif (rootEl.shadowRoot)\n\t\treturn querySelectorDeep(selector, rootEl.shadowRoot);\n\n\treturn null;\n};\n\n/**\n * Focuses on the field when multiple focussable elements are present in the host\n */\nexport const fieldFocusHandler = (tagName = 'INPUT') => host => {\n\tconst { tabbableNodes=[] } = getFocusableNodes(host);\n\tconst nativeInputNode = tabbableNodes.filter(node => node.tagName === tagName);\n\tif (nativeInputNode.length) {\n\t\tnativeInputNode[0].focus();\n\t}\n};\n","/*\nMostly a copy from `dev/emotive-design-system` repo\nemotive-design-system/ui/dropdown/src/outside-scroll.js we should come\nup with a way to share.\n*/\nconst hostToScrollData = new WeakMap();\n\n/**\n * Cleans up all scroll listeners created for the given host element.\n * @param {HTMLElement} host\n */\nexport const removeOutsideScrollListener = host => {\n\tif (hostToScrollData.has(host)) {\n\t\tconst { listener, targets } = hostToScrollData.get(host);\n\t\tfor (let target of targets) {\n\t\t\ttarget.shadowRoot.removeEventListener('scroll', listener, true);\n\t\t}\n\t\twindow.removeEventListener('scroll', listener, true);\n\t\thostToScrollData.delete(host);\n\t}\n};\n\n\n/**\n * Attaches a listener to the window, then fires a fake event from the given element\n * to identify all ancestor elements in the element's DOM tree. More efficient than\n * climbing the tree recursively.\n * @param {HTMLElement} element\n * @param {string} uuid\n */\nconst findAncestors = (element, uuid) =>\n\tnew Promise(resolve => {\n\t\tconst eventName = `findAncestors-${uuid}`;\n\t\tconst findListener = e => {\n\t\t\twindow.removeEventListener(eventName, findListener);\n\t\t\tconst path = e.composedPath ? e.composedPath() : e.path;\n\t\t\tresolve([\n\t\t\t\t...path.filter(n => n !== element && n.nodeType === Node.ELEMENT_NODE),\n\t\t\t\tdocument,\n\t\t\t\twindow\n\t\t\t]);\n\t\t};\n\t\twindow.addEventListener(eventName, findListener);\n\t\tconst event = new CustomEvent(eventName, {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tcancelable: false\n\t\t});\n\t\telement.dispatchEvent(event);\n\t});\n\n/**\n * Attaches scroll listeners to the document, the window, and all ancestor elements\n * of the given host element that have shadow roots (because scroll events do not automatically\n * bubble through shadow boundaries). When any of the scroll listeners are fired, triggers\n * the callback function.\n * @param {HTMLElement} host\n * @param {string} componentId\n * @param {function} callback\n */\nexport const addOutsideScrollListener = async (host, callback) => {\n\tconst componentId = host.getAttribute('component-id');\n\tconst ancestors = await findAncestors(host, componentId);\n\tconst targets = ancestors.filter(el => !!el.shadowRoot);\n\tlet handled = false;\n\tconst listener = e => {\n\t\tif (handled) {\n\t\t\treturn;\n\t\t}\n\t\tconst [source] = e.composedPath ? e.composedPath() : e.path;\n\t\tif (ancestors.indexOf(source) > -1) {\n\t\t\thandled = true;\n\t\t\tremoveOutsideScrollListener(host);\n\t\t\tif (callback && typeof callback === 'function') {\n\t\t\t\tcallback(e);\n\t\t\t}\n\t\t}\n\t};\n\tfor (let target of targets) {\n\t\ttarget.shadowRoot.addEventListener('scroll', listener, true);\n\t}\n\twindow.addEventListener('scroll', listener, true);\n\thostToScrollData.set(host, { listener, targets });\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @providesModule shallowEqual\n * @typechecks\n * @flow\n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring analyticsconsumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nexport function is(x, y) {\n\t// SameValue algorithm\n\tif (x === y) {\n\t\t// Steps 1-5, 7-10\n\t\t// Steps 6.b-6.e: +0 != -0\n\t\t// Added the nonzero y check to make Flow happy, but it is redundant\n\t\treturn x !== 0 || y !== 0 || 1 / x === 1 / y;\n\t} else {\n\t\t// Step 6.a: NaN == NaN\n\t\treturn x !== x && y !== y;\n\t}\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nexport function shallowEqual(objA, objB) {\n\tif (is(objA, objB)) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\ttypeof objA !== 'object' ||\n\t\tobjA === null ||\n\t\ttypeof objB !== 'object' ||\n\t\tobjB === null\n\t) {\n\t\treturn false;\n\t}\n\n\tconst keysA = Object.keys(objA);\n\tconst keysB = Object.keys(objB);\n\n\tif (keysA.length !== keysB.length) {\n\t\treturn false;\n\t}\n\n\t// Test for A's keys different from B.\n\tfor (let i = 0; i < keysA.length; i++) {\n\t\tif (\n\t\t\t!hasOwnProperty.call(objB, keysA[i]) ||\n\t\t\t!is(objA[keysA[i]], objB[keysA[i]])\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n","import { t } from 'sn-translate';\n\nexport const FIELD_MESSAGE_TYPES = [\n\t'error',\n\t'warning',\n\t'success',\n\t'liveUpdate',\n\t'info',\n\t'suggestion',\n\t'positive',\n\t'critical'\n];\nexport const CALLBACK_AND_DISPATCH = 'CONTROLS_INTERNAL#CALLBACK_AND_DISPATCH';\nexport const CALLBACK_AND_DISPATCH_WITH_STATE =\n\t'CONTROLS_INTERNAL#CALLBACK_AND_DISPATCH_WITH_STATE';\nexport const NOW_INPUT = {\n\tVALUE_SET: 'NOW_INPUT#VALUE_SET',\n\tINVALID_SET: 'NOW_INPUT#INVALID_SET',\n\tINPUT: 'NOW_INPUT#INPUT'\n};\n\nexport const NOW_BUTTON_ICONIC_CLICKED = 'NOW_BUTTON_ICONIC#CLICKED';\nexport const NOW_POPOVER_OPENED_SET = 'NOW_POPOVER#OPENED_SET';\n\nexport const TRACK_RECOMMENDATION_CLICK =\n\t'Selected option from Recommendations section';\n\nexport const FIELD_RECOMMENDATION_INFORMATION =\n\t'Field Recommendation information';\nexport const NO_PREDICTIONS_AVAILABLE = t('No predictions available');\n\nexport const SUGGESTION_PREFIX = 'suggestion#';\n","import { isEmpty, reduce, isArray } from 'lodash';\nimport { FIELD_MESSAGE_TYPES } from '../constants';\nimport { t } from 'sn-translate';\nimport { Fragment } from '@servicenow/ui-renderer-snabbdom';\n\nconst getMessages = (type, messages) =>\n\tmessages.map(message => {\n\t\tlet status, icon;\n\t\tswitch (type) {\n\t\t\tcase 'info':\n\t\t\tcase 'success':\n\t\t\t\tstatus = 'info';\n\t\t\t\ticon = 'info-circle-outline';\n\t\t\t\tbreak;\n\t\t\tcase 'error':\n\t\t\tcase 'critical':\n\t\t\t\tstatus = 'critical';\n\t\t\t\ticon = 'circle-exclamation-outline';\n\t\t\t\tbreak;\n\t\t\tcase 'warning':\n\t\t\t\tstatus = 'warning';\n\t\t\t\ticon = 'exclamation-triangle-outline';\n\t\t\t\tbreak;\n\t\t\tcase 'liveUpdate':\n\t\t\t\tstatus = 'info';\n\t\t\t\ticon = 'heartbeat-outline';\n\t\t\t\tbreak;\n\t\t\tcase 'positive':\n\t\t\t\tstatus = 'positive';\n\t\t\t\ticon = 'circle-check-outline';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tstatus = 'suggestion';\n\t\t\t\ticon = 'lightbulb-outline';\n\t\t\t\tbreak;\n\t\t}\n\t\treturn {\n\t\t\tstatus,\n\t\t\ticon,\n\t\t\tcontent: message\n\t\t};\n\t});\n\nconst getLiveUpdateMessage = liveUpdate => {\n\tlet message;\n\tif (liveUpdate.isUserModified) {\n\t\tlet newValue = liveUpdate.newValue;\n\t\tif (newValue) {\n\t\t\tnewValue = (\n\t\t\t\t<strong>\n\t\t\t\t\t<i>{newValue}</i>\n\t\t\t\t</strong>\n\t\t\t);\n\t\t\t// Show the value that changed\n\t\t\tmessage = t('{{name}} has set this field to {{value}}')\n\t\t\t\t.replace('{name}', liveUpdate.userName)\n\t\t\t\t.replace('{value}', ''); // Use the cached message containing value but remove the token so we can append html.\n\t\t\tmessage = (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{/* `message` already has a trailing space, don't need another one here */}\n\t\t\t\t\t{message}\n\t\t\t\t\t{newValue}\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t} else {\n\t\t\t// Say the value was cleared\n\t\t\tmessage = t('{{name}} has cleared the value of this field').replace(\n\t\t\t\t'{name}',\n\t\t\t\tliveUpdate.userName\n\t\t\t);\n\t\t}\n\t} else {\n\t\tmessage = t('{{name}} has modified this field value').replace(\n\t\t\t'{name}',\n\t\t\tliveUpdate.userName\n\t\t);\n\t}\n\treturn message;\n};\n\nconst parsedFieldMessages = function (messages) {\n\treturn messages.reduce((result, { type, message }) => {\n\t\tmessage = message.getMessage ? getLiveUpdateMessage(message) : message;\n\n\t\tif (!isEmpty(type) && !isEmpty(message)) {\n\t\t\tif (isArray(result[type])) {\n\t\t\t\tresult[type].push(message);\n\t\t\t} else {\n\t\t\t\tresult[type] = [message];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}, {});\n};\n\nexport const transformMessages = messages => {\n\tif (!messages || messages.length == 0) return [];\n\n\tconst messageMap = parsedFieldMessages(messages);\n\n\treturn [].concat(\n\t\t...reduce(\n\t\t\tFIELD_MESSAGE_TYPES,\n\t\t\t(elements, type) => {\n\t\t\t\tif (messageMap[type]) {\n\t\t\t\t\telements.push(getMessages(type, messageMap[type]));\n\t\t\t\t}\n\n\t\t\t\treturn elements;\n\t\t\t},\n\t\t\t[]\n\t\t)\n\t);\n};\n\nexport const pushInfoMessageForDependentFields = (messages, label) => {\n\tconst message = t('Select a {0} before modifying this field.', label);\n\treturn [\n\t\t...messages,\n\t\t{\n\t\t\ttype: 'info',\n\t\t\tmessage\n\t\t}\n\t];\n};\n\nexport const transformDescriptionAndMessages = (description, messages) =>\n\tdescription\n\t\t? [{ content: description }, ...transformMessages(messages)]\n\t\t: transformMessages(messages);\n","import moment from 'moment';\n\n// wrapper around moment to force need for language when using\n// empty string defaults to moment global locale\nexport default (language = '') =>\n\t(...args) => {\n\t\tmoment.locale(language);\n\t\treturn moment(...args);\n\t};\n\nexport const weekdays = (language = '', isoWeek = false) => {\n\tconst momentLocale = moment.localeData(language);\n\tif (isoWeek)\n\t\treturn momentLocale ? momentLocale.isoWeekdays() : moment.isoWeekdays();\n\treturn momentLocale ? momentLocale.weekdays() : moment.weekdays();\n};\n\nexport const monthsShort = (language = '') => {\n\tconst momentLocale = moment.localeData(language);\n\treturn momentLocale ? momentLocale.monthsShort() : moment.monthsShort();\n};\n\nexport const isTimeZoneEnabledField = format => {\n\tif (!format) return false;\n\treturn !format.toLowerCase().endsWith('z');\n};\n","export const transformState = state => ({\n\t...state,\n\tproperties: {\n\t\t...state.properties,\n\t\tvalue: state.properties.value === true ? '' : state.properties.value\n\t}\n});\n","import { getProperty as presourceGetProperty } from 'sn-uxpage-presource';\n\nexport const getProperty = (key, defaultValue) => {\n\tconst sysPropValue = presourceGetProperty(key);\n\tif (\n\t\tdefaultValue !== undefined &&\n\t\t(sysPropValue === undefined || sysPropValue === null)\n\t) {\n\t\treturn defaultValue;\n\t} else {\n\t\treturn sysPropValue;\n\t}\n};\n\nexport const getPageProperty = (key, defaultValue) => {\n\tconst siteName = window?.ux_globals?.siteName;\n\tconst sysPagePropValue =\n\t\twindow?.ux_globals?.experienceConfigs?.[siteName]?.pageProperties?.[key];\n\n\tif (\n\t\tdefaultValue !== undefined &&\n\t\t(sysPagePropValue === undefined || sysPagePropValue === null)\n\t) {\n\t\treturn defaultValue;\n\t} else {\n\t\treturn sysPagePropValue;\n\t}\n};\n","import { isEmpty } from 'lodash';\n\nconst checkIfFieldIsSelected = (value, path, selectedItems) => {\n\tlet stagedPath = [];\n\tpath.forEach(pathItem => {\n\t\tstagedPath.push(pathItem.field);\n\t});\n\tstagedPath.push(value);\n\tconst updatedPath = stagedPath.join('.');\n\treturn selectedItems.find(element => {\n\t\tif (element.id === updatedPath) {\n\t\t\treturn true;\n\t\t}\n\t});\n};\n\nconst getParentTableName = (parentPathArray, tableName, dataModel) => {\n\tlet parentTableName = tableName;\n\tparentPathArray.forEach(item => {\n\t\tconst tableData = dataModel.metadata[parentTableName];\n\t\tconst fieldData = tableData && tableData[item];\n\t\tparentTableName = fieldData && fieldData.referenceDataKey;\n\t});\n\treturn parentTableName;\n};\n\n/**\n * Transform field data into the structure needed for dot walk\n * @param {[{value: string, displayValue: string, isFieldReferenceType: boolean, referenceDataKey: string}]} fieldNameData\n * @return {{[field: string]: {displayValue: string, isReference: boolean, referenceDataKey: string}}} Transformed fieldNameData\n */\nconst transformFieldNameData = (\n\tfieldNameData,\n\treferenceTypes = '',\n\tallowDotWalking,\n\tselectedItems = [],\n\tpath = ''\n) => {\n\t// DictionaryAttributes - reference_types\n\t// list of valid reference types that are clickable separated by semicolons (\";\")\n\tconst enabledTables = referenceTypes ? referenceTypes.split(';') : [];\n\n\treturn fieldNameData.reduce((prev, curr) => {\n\t\tconst {\n\t\t\tvalue: name,\n\t\t\tdisplayValue,\n\t\t\tisFieldReferenceType: isReference,\n\t\t\treferenceDataKey\n\t\t} = curr;\n\n\t\tconst reducedValue = {\n\t\t\t...prev,\n\t\t\t[name]: {\n\t\t\t\tdisplayValue,\n\t\t\t\tdisabled: isEmpty(selectedItems)\n\t\t\t\t\t? enabledTables.length && allowDotWalking\n\t\t\t\t\t\t? !enabledTables.includes(referenceDataKey)\n\t\t\t\t\t\t: false\n\t\t\t\t\t: checkIfFieldIsSelected(name, path, selectedItems)\n\t\t\t\t\t? true\n\t\t\t\t\t: false,\n\t\t\t\tisReference: allowDotWalking ? isReference : false,\n\t\t\t\treferenceDataKey\n\t\t\t}\n\t\t};\n\t\tif (enabledTables.length && allowDotWalking) {\n\t\t\tif (referenceDataKey || isReference) {\n\t\t\t\treturn reducedValue;\n\t\t\t} else {\n\t\t\t\treturn prev;\n\t\t\t}\n\t\t}\n\t\treturn reducedValue;\n\t}, {});\n};\n\n/**\n * Transform path data into the structure needed for dot walk\n * @param  {{[field: string]: {displayValue: string, isReference: boolean, referenceDataKey: string}}} metaData\n * @param  {string} parentTableName\n * @param  {string} pathValue\n * @return {[{displayValue: string, field: string, parent: string}]} Transformed pathData\n */\nconst transformPathData = (metadata, tableName, pathValue) => {\n\tlet path = [];\n\n\tif (metadata && !tableName) {\n\t\ttableName = Object.keys(metadata)[0];\n\t}\n\n\tif (pathValue && metadata) {\n\t\t//field List can have multiple\n\t\tconst pathValueList = pathValue.split(',');\n\t\tpath = pathValueList[0].split('.').reduce((prev, curr, idx) => {\n\t\t\tconst tableNameCurrent =\n\t\t\t\tidx > 0 && prev[idx - 1].parentTableName\n\t\t\t\t\t? prev[idx - 1].parentTableName\n\t\t\t\t\t: tableName;\n\t\t\tconst tableData = metadata[tableNameCurrent];\n\t\t\tif (!tableData) {\n\t\t\t\treturn prev;\n\t\t\t}\n\t\t\tconst fieldData = metadata[tableNameCurrent][curr];\n\t\t\tif (!fieldData) {\n\t\t\t\treturn prev;\n\t\t\t}\n\t\t\tconst reducedFieldData = [\n\t\t\t\t...prev,\n\t\t\t\t{\n\t\t\t\t\tdisplayValue: fieldData.displayValue,\n\t\t\t\t\tfield: curr,\n\t\t\t\t\tparent: tableNameCurrent,\n\t\t\t\t\tparentTableName: fieldData.referenceDataKey\n\t\t\t\t}\n\t\t\t];\n\t\t\treturn reducedFieldData;\n\t\t}, []);\n\t} else if (metadata) {\n\t\tconst tableData = metadata[tableName];\n\n\t\tif (tableData) {\n\t\t\tconst firstField = Object.keys(tableData)[0];\n\t\t\tconst fieldData = tableData[firstField];\n\t\t\tpath = [\n\t\t\t\t{\n\t\t\t\t\tdisplayValue: fieldData.displayValue,\n\t\t\t\t\tfield: firstField,\n\t\t\t\t\tparent: tableName\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t}\n\treturn path;\n};\n\n/**\n * Transform table metadata into the structure used in the Dot Walk Model\n * @param {[{tableName: string, fieldNameData: [{value: string, displayValue: string, isFieldReferenceType: boolean, referenceDataKey: string}] }]} fieldNameMetadata\n * @return {{[tableName: string]: {[field: string]: {displayValue: string, isReference: boolean, referenceDataKey: string}}} Transformed fieldNameMetadata\n */\n\nexport const transformFieldNameMetadata = (\n\tfieldValues,\n\treferenceTypes = '',\n\tallowDotWalking,\n\tselectedItems = [],\n\tpath = []\n) =>\n\tfieldValues.reduce((prev, curr) => {\n\t\tconst reducedValue = {\n\t\t\t...prev,\n\t\t\t[curr.tableName]: transformFieldNameData(\n\t\t\t\tcurr.fieldNameData,\n\t\t\t\treferenceTypes,\n\t\t\t\tallowDotWalking,\n\t\t\t\tselectedItems,\n\t\t\t\tpath\n\t\t\t)\n\t\t};\n\t\treturn reducedValue;\n\t}, {});\n\nexport const constructDataModel = (\n\tfieldValues,\n\ttableName,\n\tpathValue,\n\tleafPathSource,\n\treferenceTypes = '',\n\tallowDotWalking\n) => {\n\tconst model = {\n\t\tpath: null,\n\t\tmetadata: null,\n\t\tleafPathSource\n\t};\n\n\tif (fieldValues) {\n\t\tconst transformedMetadata = transformFieldNameMetadata(\n\t\t\tfieldValues,\n\t\t\treferenceTypes,\n\t\t\tallowDotWalking\n\t\t);\n\t\tconst transformedPath = transformPathData(\n\t\t\ttransformedMetadata,\n\t\t\ttableName,\n\t\t\tpathValue\n\t\t);\n\t\tmodel.path = transformedPath;\n\t\tmodel.metadata = transformedMetadata;\n\t}\n\n\treturn model;\n};\n\nexport const getFieldNameValue = (path = []) =>\n\tpath.map(p => p.field).join('.');\n\nexport const getFieldNameDisplayValue = (path = []) =>\n\tpath.map(p => p.displayValue).join(' > ');\n\nexport const getDataModelWithToggledFields = (\n\tdataModel,\n\tflag,\n\tfieldToBeDeleted,\n\ttableName\n) => {\n\tconst path = dataModel.path;\n\tlet name = dataModel.path[path.length - 1].parent;\n\tlet fieldName = dataModel.path[path.length - 1].field;\n\tif (flag) {\n\t\tconst updatedIdArray = fieldToBeDeleted.split('.');\n\t\tfieldName = updatedIdArray[updatedIdArray.length - 1];\n\t\tname =\n\t\t\tupdatedIdArray.length === 1\n\t\t\t\t? tableName\n\t\t\t\t: getParentTableName(\n\t\t\t\t\t\tupdatedIdArray.slice(0, updatedIdArray.length - 1),\n\t\t\t\t\t\ttableName,\n\t\t\t\t\t\tdataModel\n\t\t\t\t  );\n\t}\n\tlet dataModelToUpdate = dataModel;\n\t//update only if the table info is available in dataModel\n\tif (dataModel.metadata[name]) {\n\t\tdataModelToUpdate = {\n\t\t\t...dataModel,\n\t\t\tmetadata: {\n\t\t\t\t...dataModel.metadata,\n\t\t\t\t[name]: {\n\t\t\t\t\t...dataModel.metadata[name],\n\t\t\t\t\t[fieldName]: {\n\t\t\t\t\t\t...dataModel.metadata[name][fieldName],\n\t\t\t\t\t\tdisabled: !flag\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\treturn dataModelToUpdate;\n};\n","import {isEmpty} from \"lodash\";\nimport { t } from 'sn-translate';\nimport {createCustomElement, createPresentationalCustomElement} from \"@servicenow/ui-core\";\nimport '@servicenow/now-highlighted-value';\nimport '@servicenow/now-button';\nimport '@servicenow/now-popover';\nimport '@servicenow/now-icon';\n\nimport style from \"@devsnc/sass-form-controls-common/_customLabel.scss\";\nimport {NOW_BUTTON_ICONIC_CLICKED, NOW_POPOVER_OPENED_SET, FIELD_RECOMMENDATION_INFORMATION} from \"../constants\";\nimport { fieldLayoutSchema } from \"../schemas\";\n\nexport const popoverDescription = ({properties}) => {\n\tconst { description, icon } = properties;\n\treturn (\n\t\t<div className=\"sn-custom-highlighted-label-popover spacing\">\n\t\t\t<div className=\"sn-custom-highlighted-label-popover-description\">\n\t\t\t\t<div>\n\t\t\t\t\t<now-icon icon={icon} size=\"sm\"></now-icon>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t{description}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"sn-custom-highlighted-label-popover-close\">\n\t\t\t\t<now-button-iconic icon=\"close-fill\" size=\"sm\" variant=\"tertiary\" bare=\"true\"></now-button-iconic>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\ncreatePresentationalCustomElement('sn-highlighted-label-info', {\n\tview: popoverDescription,\n\tstyles: style,\n\tproperties: {\n\t\tdescription: { default: ''},\n\t\ticon: { default: ''}\n\t}\n})\n\nexport const customLabel = (state) => {\n\tconst {\n\t\topened,\n\t\tproperties: {\n\t\t\tcustomHighlightedLabel: {\n\t\t\t\tvalue: highlightedValueLabel,\n\t\t\t\tstatus,\n\t\t\t\tshowIcon,\n\t\t\t\tvariantName,\n\t\t\t\tcolorName,\n\t\t\t\ticonName,\n\t\t\t\tdescription\n\t\t\t},\n\t\t\tfieldLayout: {\n\t\t\t\tlayout = 'vertical'\n\t\t\t} = {}\n\t\t}\n\t} = state;\n\treturn (\n\t\t<div class={{\n\t\t\t'sn-custom-highlighted-label': true,\n\t\t\t['-' + layout]: layout\n\t\t}}>\n\t\t\t<now-highlighted-value\n\t\t\t\tlabel={highlightedValueLabel}\n\t\t\t\tcolor={colorName}\n\t\t\t\tshow-icon={showIcon}\n\t\t\t\tvariant={variantName}\n\t\t\t\ticon={showIcon ? iconName : null}\n\t\t\t\tstatus={!colorName ? status : null}\n\t\t\t></now-highlighted-value>\n\t\t\t{!isEmpty(description) && (\n\t\t\t\t<now-popover\n\t\t\t\t\tmanage-opened\n\t\t\t\t\topened={opened}\n\t\t\t\t\tinteractionType=\"dialog\"\n\t\t\t\t\tconstrain={{width: 250, minHeight: 80, maxHeight: 200}}\n\t\t\t\t\tpositions={{ target: 'top-center', content: 'bottom-center' }}\n\t\t\t\t>\n\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\tbare\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\tbutton: { 'aria-label': t(FIELD_RECOMMENDATION_INFORMATION) }\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon=\"circle-info-outline\"\n\t\t\t\t\t\tsize=\"sm\">\n\t\t\t\t\t</now-button-iconic>\n\t\t\t\t\t<sn-highlighted-label-info slot=\"content\" description={description} icon={iconName} />\n\t\t\t\t</now-popover>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\ncreateCustomElement('sn-custom-highlighted-label', {\n\tview: customLabel,\n\tstyles: style,\n\tinitialState: {\n\t\topened: false\n\t},\n\tproperties: {\n\t\tcustomHighlightedLabel: { default: {} },\n\t\tfieldLayout: {\n\t\t\tdefault: { layout: 'vertical' },\n\t\t\tschema: fieldLayoutSchema\n\t\t}\n\t},\n\tactionHandlers: {\n\t\t[NOW_BUTTON_ICONIC_CLICKED]: {\n\t\t\teffect: ({ updateState }) => {\n\t\t\t\tupdateState({ opened: false });\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[NOW_POPOVER_OPENED_SET]: {\n\t\t\teffect: ({ action, updateState }) => {\n\t\t\t\tconst { value } = action.payload;\n\t\t\t\tupdateState({ opened: value });\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t}\n\t}\n})\n","import '@servicenow/now-highlighted-value';\nimport { isEmpty } from 'lodash';\nimport { Fragment } from '@servicenow/ui-renderer-snabbdom';\n\nimport './renderCustomHighlightedLabel';\nconst normalizeHighlightedValues = highlightedValues => {\n\tif (!highlightedValues) {\n\t\treturn [];\n\t}\n\tif (Array.isArray(highlightedValues)) {\n\t\tconst flattened = highlightedValues.flat();\n\t\treturn flattened.filter((hv, index) => {\n\t\t\treturn index === 0 || !isEmpty(hv);\n\t\t})\n\t}\n\telse if (typeof highlightedValues === 'object') {\n\t\treturn [highlightedValues];\n\t}\n}\n\nexport const renderHighlightedValue = (highlightedValue, fieldLayout = { layout: 'vertical' }) => {\n\tconst [defaultHighlightedValue, ...customHighlightedValues] = normalizeHighlightedValues(highlightedValue);\n\tconst {\n\t\tvalue: highlightedValueLabel,\n\t\tstatus,\n\t\tshowIcon,\n\t\tvariantName,\n\t\tcolorName,\n\t\ticonName\n\t} = defaultHighlightedValue || {};\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{!isEmpty(defaultHighlightedValue) && (\n\t\t\t\t<now-highlighted-value\n\t\t\t\t\tslot=\"label-end\"\n\t\t\t\t\tlabel={highlightedValueLabel}\n\t\t\t\t\tcolor={colorName}\n\t\t\t\t\tshow-icon={showIcon}\n\t\t\t\t\tvariant={variantName}\n\t\t\t\t\ticon={showIcon ? iconName : null}\n\t\t\t\t\tstatus={!colorName ? status : null}\n\t\t\t\t\tclass={{'first-label-end': customHighlightedValues.length && fieldLayout.layout === 'horizontal'}}\n\t\t\t\t></now-highlighted-value>\n\t\t\t)}\n\t\t\t{customHighlightedValues.map(hv => (\n\t\t\t\t<sn-custom-highlighted-label slot=\"label-end\" customHighlightedLabel={hv} fieldLayout={fieldLayout}/>\n\t\t\t))}\n\t\t</Fragment>\n\t);\n};\n","import '@servicenow/now-icon';\n\nexport const renderDecorations = (decorations, fromControlWrapper) => {\n\tif (decorations && decorations.length > 0) {\n\t\treturn (\n\t\t\t <div style={fromControlWrapper ? {marginInlineStart:' 0.25rem'} : {}} className='field-decorations-container' slot=\"label-inline\">\n\t\t\t\t{decorations.map((decoration) => (\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\thide-padding\n\t\t\t\t\t\ticon={decoration.icon}\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\ttitle={decoration.text}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\tbutton: { 'aria-label': decoration.text }\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t}\n};","export function difference(arr1, arr2) {\n\treturn arr1.filter(x => !arr2.includes(x));\n}\n\nexport function camelCase(str) {\n\treturn str.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, (match, index) => {\n\t\tif (+match === 0) return ''; // ignore 0s\n\t\treturn index == 0 ? match.toLowerCase() : match.toUpperCase();\n\t});\n}\n\nexport function keys(obj) {\n\treturn Object.keys(obj);\n}\n\nexport function pick(obj, props) {\n\treturn props.reduce((acc, prop) => {\n\t\tif (Object.prototype.hasOwnProperty.call(obj, prop)) {\n\t\t\tacc[prop] = obj[prop];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nexport function forEach(collection, callback) {\n\tif (Array.isArray(collection)) {\n\t\tfor (let i = 0; i < collection.length; i++) {\n\t\t\tcallback(collection[i], i, collection);\n\t\t}\n\t} else {\n\t\tfor (const key in collection) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(collection, key)) {\n\t\t\t\tcallback(collection[key], key, collection);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function get(obj, path, defaultValue) {\n\tconst keys = Array.isArray(path) ? path : path.split('.');\n\tconst result = keys.reduce((acc, key) => acc && acc[key], obj);\n\treturn result === undefined ? defaultValue : result || defaultValue;\n}\n\nexport function isNil(value) {\n\treturn value == null;\n}\n\nexport function isEqualWith(value, other, customizer) {\n\tif (typeof customizer !== 'function') {\n\t\tcustomizer = undefined;\n\t}\n\n\tconst result = customizer ? customizer(value, other) : undefined;\n\n\tif (result !== undefined) {\n\t\treturn Boolean(result);\n\t}\n\tif (value === other) {\n\t\treturn true;\n\t}\n\tif (\n\t\tvalue == null ||\n\t\tother == null ||\n\t\ttypeof value !== 'object' ||\n\t\ttypeof other !== 'object'\n\t) {\n\t\treturn false;\n\t}\n\tconst keys = Object.keys(value);\n\tif (keys.length !== Object.keys(other).length) {\n\t\treturn false;\n\t}\n\treturn keys.every(key => isEqualWith(value[key], other[key], customizer));\n}\n\nexport function pickBy(object, predicate) {\n\tconst result = {};\n\tfor (const key in object) {\n\t\tif (\n\t\t\tObject.prototype.hasOwnProperty.call(object, key) &&\n\t\t\tpredicate(object[key], key)\n\t\t) {\n\t\t\tresult[key] = object[key];\n\t\t}\n\t}\n\treturn result;\n}\n\nexport function identity(value) {\n\treturn value;\n}\n\n/**\n * The isEmpty function determines if a given value is empty or not.\n * @param {any} value The value to check\n * @returns {boolean} True if the value is empty, false otherwise\n */\nexport function isEmpty(value) {\n\tif (value == null) return true;\n\tif (typeof value === 'string' || Array.isArray(value))\n\t\treturn value.length === 0;\n\tif (typeof value === 'object') return Object.keys(value).length === 0;\n\n\treturn false;\n}\n","/*\nThis utility function is a copy of following function getDateFromFormat in calendar.js\nhttps://code.devsnc.com/dev/glide/blob/master/glide/ui.html/scripts/calendar.js#L284\nThe purpose of the function is to have same validation in dateTime format case when it has timezone enabled\nexample like \"YYYY-MM-DD hh:mm:ss z\". Remaining other formats are handled from moment itself.\ngetDateFromFormat is a validator function that checks if the date is in given format or not.\nIn case the date is not in correct format , it returns 0 , else it returns the time Value of the same.\n*/\n\nconst digits = new Set(['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']);\n\nfunction _isInteger(val) {\n\tfor (let i = 0; i < val.length; i++) if (!digits.has(val[i])) return false;\n\treturn true;\n}\n\nfunction _getInt(str, i, minlength, maxlength) {\n\tfor (var x = maxlength; x >= minlength; x--) {\n\t\tvar token = str.substring(i, i + x);\n\t\tif (token.length < minlength) {\n\t\t\treturn null;\n\t\t}\n\t\tif (_isInteger(token)) {\n\t\t\treturn token;\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * Validate Date String for a given format. Returns 0 if date is invalid for given format, else date value\n * @param {string} val - Date string.\n * @param {string} format - Format for which date string has to be verified.\n * @returns {number}\n */\nexport function getDateFromFormat(val, format) {\n\tval = val + '';\n\tformat = format + '';\n\tvar i_val = 0;\n\tvar i_format = 0;\n\tvar c = '';\n\tvar token = '';\n\tvar x, y;\n\tvar now = new Date();\n\tvar year = now.getYear();\n\tvar month = now.getMonth() + 1;\n\tvar date = 0;\n\tvar hh = now.getHours();\n\tvar mm = now.getMinutes();\n\tvar ss = now.getSeconds();\n\tvar ampm = '';\n\tvar week = false;\n\tvar MONTH_NAMES = new Array(\n\t\t'January',\n\t\t'February',\n\t\t'March',\n\t\t'April',\n\t\t'May',\n\t\t'June',\n\t\t'July',\n\t\t'August',\n\t\t'September',\n\t\t'October',\n\t\t'November',\n\t\t'December',\n\t\t'Jan',\n\t\t'Feb',\n\t\t'Mar',\n\t\t'Apr',\n\t\t'May',\n\t\t'Jun',\n\t\t'Jul',\n\t\t'Aug',\n\t\t'Sep',\n\t\t'Oct',\n\t\t'Nov',\n\t\t'Dec'\n\t);\n\tvar DAY_NAMES = new Array(\n\t\t'Sunday',\n\t\t'Monday',\n\t\t'Tuesday',\n\t\t'Wednesday',\n\t\t'Thursday',\n\t\t'Friday',\n\t\t'Saturday',\n\t\t'Sun',\n\t\t'Mon',\n\t\t'Tue',\n\t\t'Wed',\n\t\t'Thu',\n\t\t'Fri',\n\t\t'Sat'\n\t);\n\tvar g_first_day_of_week = 1;\n\n\twhile (i_format < format.length) {\n\t\t// Get next token from format string\n\t\tc = format.charAt(i_format);\n\t\ttoken = '';\n\t\twhile (format.charAt(i_format) == c && i_format < format.length) {\n\t\t\ttoken += format.charAt(i_format++);\n\t\t}\n\t\t// Extract contents of value based on format token\n\t\tif (token == 'yyyy' || token == 'yy' || token == 'y') {\n\t\t\tif (token == 'yyyy') {\n\t\t\t\tx = 4;\n\t\t\t\ty = 4;\n\t\t\t}\n\t\t\tif (token == 'yy') {\n\t\t\t\tx = 2;\n\t\t\t\ty = 2;\n\t\t\t}\n\t\t\tif (token == 'y') {\n\t\t\t\tx = 2;\n\t\t\t\ty = 4;\n\t\t\t}\n\t\t\tyear = _getInt(val, i_val, x, y);\n\t\t\tif (year == null) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += year.length;\n\t\t\tif (year.length == 2) {\n\t\t\t\tif (year > 70) {\n\t\t\t\t\tyear = 1900 + (year - 0);\n\t\t\t\t} else {\n\t\t\t\t\tyear = 2000 + (year - 0);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (token == 'MMM' || token == 'NNN') {\n\t\t\tmonth = 0;\n\t\t\tfor (var i = 0; i < MONTH_NAMES.length; i++) {\n\t\t\t\tvar month_name = MONTH_NAMES[i];\n\t\t\t\tif (\n\t\t\t\t\tval.substring(i_val, i_val + month_name.length).toLowerCase() ==\n\t\t\t\t\tmonth_name.toLowerCase()\n\t\t\t\t) {\n\t\t\t\t\tif (token == 'MMM' || (token == 'NNN' && i > 11)) {\n\t\t\t\t\t\tmonth = i + 1;\n\t\t\t\t\t\tif (month > 12) {\n\t\t\t\t\t\t\tmonth -= 12;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti_val += month_name.length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (month < 1 || month > 12) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t} else if (token == 'EE' || token == 'E') {\n\t\t\tfor (var i2 = 0; i2 < DAY_NAMES.length; i2++) {\n\t\t\t\tvar day_name = DAY_NAMES[i2];\n\t\t\t\tif (\n\t\t\t\t\tval.substring(i_val, i_val + day_name.length).toLowerCase() ==\n\t\t\t\t\tday_name.toLowerCase()\n\t\t\t\t) {\n\t\t\t\t\tif (week) {\n\t\t\t\t\t\tif (i2 == 0 || i2 == 7)\n\t\t\t\t\t\t\t//Sun\n\t\t\t\t\t\t\tdate += 6;\n\t\t\t\t\t\telse if (i2 == 2 || i2 == 9)\n\t\t\t\t\t\t\t//Tues\n\t\t\t\t\t\t\tdate += 1;\n\t\t\t\t\t\telse if (i2 == 3 || i2 == 10)\n\t\t\t\t\t\t\t//Wed\n\t\t\t\t\t\t\tdate += 2;\n\t\t\t\t\t\telse if (i2 == 4 || i2 == 11)\n\t\t\t\t\t\t\t// Thur\n\t\t\t\t\t\t\tdate += 3;\n\t\t\t\t\t\telse if (i2 == 5 || i2 == 12)\n\t\t\t\t\t\t\t//Fri\n\t\t\t\t\t\t\tdate += 4;\n\t\t\t\t\t\telse if (i2 == 6 || i2 == 13)\n\t\t\t\t\t\t\t//sat\n\t\t\t\t\t\t\tdate += 5;\n\t\t\t\t\t}\n\t\t\t\t\ti_val += day_name.length;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (token == 'MM' || token == 'M') {\n\t\t\tmonth = _getInt(val, i_val, token.length, 2);\n\t\t\tif (month == null || month < 1 || month > 12) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += month.length;\n\t\t} else if (token == 'dd' || token == 'd') {\n\t\t\tdate = _getInt(val, i_val, token.length, 2);\n\t\t\tif (date == null || date < 1 || date > 31) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += date.length;\n\t\t} else if (token == 'hh' || token == 'h') {\n\t\t\thh = _getInt(val, i_val, token.length, 2);\n\t\t\tif (hh == null || hh < 1 || hh > 12) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += hh.length;\n\t\t} else if (token == 'HH' || token == 'H') {\n\t\t\thh = _getInt(val, i_val, token.length, 2);\n\t\t\tif (hh == null || hh < 0 || hh > 23) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += hh.length;\n\t\t} else if (token == 'KK' || token == 'K') {\n\t\t\thh = _getInt(val, i_val, token.length, 2);\n\t\t\tif (hh == null || hh < 0 || hh > 11) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += hh.length;\n\t\t} else if (token == 'kk' || token == 'k') {\n\t\t\thh = _getInt(val, i_val, token.length, 2);\n\t\t\tif (hh == null || hh < 1 || hh > 24) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += hh.length;\n\t\t\thh--;\n\t\t} else if (token == 'mm' || token == 'm') {\n\t\t\tmm = _getInt(val, i_val, token.length, 2);\n\t\t\tif (mm == null || mm < 0 || mm > 59) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += mm.length;\n\t\t} else if (token == 'ss' || token == 's') {\n\t\t\tss = _getInt(val, i_val, token.length, 2);\n\t\t\tif (ss == null || ss < 0 || ss > 59) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += ss.length;\n\t\t} else if (token == 'a') {\n\t\t\tif (val.substring(i_val, i_val + 2).toLowerCase() == 'am') {\n\t\t\t\tampm = 'AM';\n\t\t\t} else if (val.substring(i_val, i_val + 2).toLowerCase() == 'pm') {\n\t\t\t\tampm = 'PM';\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\ti_val += 2;\n\t\t} else if (token == 'w' || token == 'ww') {\n\t\t\t//week in year\n\t\t\tvar weekNum = _getInt(val, i_val, token.length, 2);\n\t\t\tweek = true;\n\t\t\tif (weekNum != null) {\n\t\t\t\tvar temp = new Date(year, 0, 1, 0, 0, 0);\n\t\t\t\ttemp.setWeek(parseInt(weekNum, 10));\n\t\t\t\tyear = temp.getFullYear();\n\t\t\t\tmonth = temp.getMonth() + 1;\n\t\t\t\tdate = temp.getDate();\n\t\t\t}\n\t\t\tweekNum += '';\n\t\t\ti_val += weekNum.length;\n\t\t} else if (token == 'D') {\n\t\t\tif (week) {\n\t\t\t\tvar day = _getInt(val, i_val, token.length, 1);\n\t\t\t\tif (day == null || day <= 0 || day > 7) return 0;\n\n\t\t\t\tvar temp2 = new Date(year, month - 1, date, hh, mm, ss);\n\t\t\t\t// get the current day of week that we are on (Sun=0)\n\t\t\t\tvar dayOfWeek = temp2.getDay();\n\n\t\t\t\t// get the day we want and adjust that to Sun=0\n\t\t\t\tday = parseInt(day, 10);\n\t\t\t\tday = (day + g_first_day_of_week - 1) % 7;\n\t\t\t\tif (day == 0) day = 7;\n\t\t\t\tday--;\n\n\t\t\t\t// determine how many days we need to add to the current date\n\t\t\t\tif (day < dayOfWeek) day = 7 - (dayOfWeek - day);\n\t\t\t\telse day -= dayOfWeek;\n\n\t\t\t\tif (day > 0) {\n\t\t\t\t\ttemp2.setDate(temp2.getDate() + day);\n\n\t\t\t\t\t// apply the date and get the year/month/date again since adding the date my rollover into next month\n\t\t\t\t\tyear = temp2.getFullYear();\n\t\t\t\t\tmonth = temp2.getMonth() + 1;\n\t\t\t\t\tdate = temp2.getDate();\n\t\t\t\t}\n\t\t\t\ti_val++;\n\t\t\t}\n\t\t} else if (token == 'z') i_val += 3;\n\t\telse {\n\t\t\tif (val.substring(i_val, i_val + token.length) != token) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\ti_val += token.length;\n\t\t\t}\n\t\t}\n\t}\n\t// If there are any trailing characters left in the value, it doesn't match\n\tif (i_val != val.length) {\n\t\treturn 0;\n\t}\n\t// Is date valid for month?\n\tif (month == 2) {\n\t\t// Check for leap year\n\t\tif ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {\n\t\t\t// leap year\n\t\t\tif (date > 29) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t} else {\n\t\t\tif (date > 28) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t}\n\tif (month == 4 || month == 6 || month == 9 || month == 11) {\n\t\tif (date > 30) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\t// Correct hours value\n\tif (hh < 12 && ampm == 'PM') {\n\t\thh = hh - 0 + 12;\n\t} else if (hh > 11 && ampm == 'AM') {\n\t\thh -= 12;\n\t}\n\tvar newdate = new Date(year, month - 1, date, hh, mm, ss);\n\treturn newdate.getTime();\n}\n","import { map, reduce, isString, isArray, isObject } from 'lodash';\n\n/**\n * Convert the values and display values arrays into a single pill array\n * @param {array} values\n * @param {array} displayValues Boolean that indicates wheter or not shift was held.\n * @return {array} array of pill objects\n */\nfunction toPills(values, displayValues) {\n\tif (isString(values)) {\n\t\tvalues = convertToValueArray(values);\n\t}\n\n\tif (isString(displayValues)) {\n\t\tdisplayValues = convertToValueArray(displayValues);\n\t}\n\n\tif (!Array.isArray(displayValues)) displayValues = values;\n\n\treturn map(values, (value, index) => ({\n\t\tvalue,\n\t\tdisplayValue: displayValues[index] ? displayValues[index] : ''\n\t}));\n}\n\n/**\n * Convert the pill object array into individual value and displayValue arrays\n * @param {array} array of pill objects\n * @return {object} object containing the two arrays\n */\nfunction toValues(pills) {\n\treturn reduce(\n\t\tpills,\n\t\t(result, pill) => {\n\t\t\tpill = isObject(pill) ? pill : {};\n\n\t\t\tresult.values.push(pill.value);\n\t\t\tresult.displayValues.push(pill.displayValue);\n\n\t\t\treturn result;\n\t\t},\n\t\t{\n\t\t\tvalues: [],\n\t\t\tdisplayValues: []\n\t\t}\n\t);\n}\n\n/**\n * Converter function for handling values being passed in as a single or CSV string\n * @param {string} values The pressed key identifier.\n * @return {array} List of values\n */\nfunction convertToValueArray(values) {\n\tif (isArray(values)) {\n\t\treturn values;\n\t}\n\n\tif (!isString(values)) {\n\t\treturn [];\n\t}\n\n\treturn values.split(',');\n}\n\n/**\n * Get matches count of value on options list based on search type\n * @param {string} value user input value.\n * @param {array} options list of options containing displayValues and values.\n * @param {string} search type of search such as initial or contains.\n * @return {string} matches count\n */\n\nfunction getMatchesCount(options, search, value = '') {\n\tconst lowerValue = value.toLowerCase();\n\tconst method = search === 'contains' ? 'includes' : 'startsWith';\n\treturn options.reduce((result, item) => {\n\t\tconst itemValue = item.value ? item.value.toLowerCase() : '';\n\t\tconst itemDisplayValue = item.displayValue\n\t\t\t? item.displayValue.toLowerCase()\n\t\t\t: '';\n\n\t\tif (itemValue[method](lowerValue) || itemDisplayValue[method](lowerValue)) {\n\t\t\tresult.push(item);\n\t\t}\n\t\treturn result;\n\t}, []).length;\n}\n\nexport { toPills, toValues, convertToValueArray, getMatchesCount };\n","/**\n * react-docgen needs this to be an exported React class (_not_ PureComponent)\n * in order for the docs to be generated correctly.\n *\n * If you want to use these proptypes, just import via\n * the index.js file instead\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { FIELD_MESSAGE_TYPES } from '../constants';\n\n/**\n * TODO - Remove this file when all components are converted to seismic components\n * Basic props that are common to nearly all form components.\n */\n\nexport default class ComponentBase extends React.Component {\n\tstatic displayName = 'Any Component';\n\tstatic propTypes = {\n\t\t/** Seismic dispatcher */\n\t\tdispatch: PropTypes.func,\n\n\t\t/** Unique identifier for the component. */\n\t\tcomponentId: PropTypes.string.isRequired,\n\n\t\t/** Data returned by one of the Seismic resource handlers */\n\t\tresources: PropTypes.object,\n\n\t\t/** Asynchronous Message Bus (AMB) API */\n\t\tchannels: PropTypes.object,\n\t\t/**\n\t\t * array of message objects that must contain type and message itself.\n\t\t */\n\t\tmessages: PropTypes.arrayOf(\n\t\t\tPropTypes.shape({\n\t\t\t\ttype: PropTypes.oneOf(FIELD_MESSAGE_TYPES),\n\t\t\t\tmessage: PropTypes.oneOfType([\n\t\t\t\t\tPropTypes.string,\n\t\t\t\t\tPropTypes.shape({ getMessage: PropTypes.func })\n\t\t\t\t])\n\t\t\t})\n\t\t),\n\t\t/**\n\t\t * formData object containing glide form data\n\t\t */\n\t\tformData: PropTypes.object,\n\t\t/**\n\t\t * Name of the field\n\t\t */\n\t\tfieldName: PropTypes.any,\n\n\t\t/**\n\t\t * Name of the table the reference field is attached to\n\t\t */\n\n\t\ttableName: PropTypes.string,\n\n\t\t/**\n\t\t * sys_id of the current record where the field is located\n\t\t */\n\t\trecordSysId: PropTypes.string,\n\n\t\t/**\n\t\t * Name for the component. Any events dispatched by the component will use this name.\n\t\t */\n\t\tname: PropTypes.string,\n\n\t\t/**\n\t\t * Content to display when there is no suitable display value.\n\t\t */\n\t\tplaceholder: PropTypes.string,\n\n\t\t/**\n\t\t * It's a label! All form controls need a label!\n\t\t */\n\t\tlabel: PropTypes.string,\n\n\t\t/**\n\t\t * Underlying data for the component.\n\t\t */\n\t\tvalue: PropTypes.string,\n\n\t\t/**\n\t\t * Callback used when the value has changed. Very similar to an `onChange`\n\t\t * event, but this may also fire when the component formats its value\n\t\t * onBlur.\n\t\t *\n\t\t * @param {object} event - The event payload\n\t\t * @param {string} event.name - The name of the component that triggered the event\n\t\t * @param {any}    event.value - The new value for the component\n\t\t * @param {string} event.displayValue - The human-readable represenation of the value\n\t\t *\n\t\t * @param {object} event.error - If the current value is invalid, this propery will be set. When the current value is valid, this property will be null.\n\t\t * @param {string} event.error.type - Error type\n\t\t * @param {string} event.error.message - Description of why the value is invalid\n\t\t */\n\t\tonValueChange: PropTypes.func,\n\n\t\t/**\n\t\t * Callback used when an intermediate value has changed.\n\t\t */\n\t\tonStagedValueChange: PropTypes.func,\n\n\t\t/**\n\t\t * Additional content describing the field, usually to provide further\n\t\t * instruction to the user.\n\t\t */\n\t\tdescription: PropTypes.string,\n\n\t\t/**\n\t\t * Whether or not the user must fill in a value for this component.\n\t\t * Can be specified as a boolean or the string \"true\"\n\t\t */\n\t\trequired: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n\t\t/**\n\t\t * Specifies that the user cannot modify the value of the component.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t */\n\t\treadonly: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n\t\t/**\n\t\t * Specifies that the field should be rendered right-to-left.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t */\n\t\treversed: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n\t\t/**\n\t\t * Specifies whether the current value is not valid.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t */\n\t\tinvalid: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n\t\t/**\n\t\t * Causes the component to receive focus as soon as it has finished\n\t\t * mounting.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t */\n\t\tautofocus: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n\t\t/**\n\t\t * Unique name for a shadowDom slot\n\t\t */\n\t\tslot: PropTypes.string,\n\n\t\t/**\n\t\t * Accessible label for the component. Only needed when the `label` prop is not\n\t\t * descriptive enough on its own.\n\t\t */\n\t\t'aria-label': PropTypes.string,\n\n\t\t/**\n\t\t * Which element (by ID) acts as a label for the component\n\t\t */\n\t\t'aria-labelledby': PropTypes.string,\n\n\t\t/**\n\t\t * Which element (by ID) provides more description for the component\n\t\t */\n\t\t'aria-describedby': PropTypes.string,\n\n\t\t/**\n\t\t * aria-* attribute configuration\n\t\t */\n\t\t'config-aria': PropTypes.object,\n\n\t\tfieldType: PropTypes.string,\n\t\t/**\n\t\t * If set, an iconic button with a popover appears next to the field\n\t\t * label to display additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t */\n\t\thelperContent: PropTypes.oneOfType([PropTypes.string, PropTypes.element])\n\t};\n\tstatic defaultProps = {\n\t\tcomponentId: 'id'\n\t};\n}\n","/**\n * TODO - Remove this file once all react components are converted.\n * Use SeismicComponentFieldPropDefaults wherever needed.\n *\n * react-docgen needs this to be an exported React class (_not_ PureComponent)\n * in order for the docs to be generated correctly.\n *\n * If you want to use these proptypes, just import via\n * the index.js file instead\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ComponentBase from './ComponentBase';\n\n/**\n * Prop types for controlled components. Note that this is just a subset of the\n * [React events](https://reactjs.org/docs/events.html#supported-events). The\n * payload for each event is identical to the React event.\n */\nexport default class ControlledField extends React.Component {\n\tstatic displayName = 'Controlled Fields';\n\tstatic propTypes = {\n\t\t...ComponentBase.propTypes,\n\n\t\t/**\n\t\t * onChange event callback\n\t\t */\n\t\tonChange: PropTypes.func,\n\n\t\t/**\n\t\t * onSelect event callback\n\t\t */\n\t\tonSelect: PropTypes.func,\n\t\t/**\n\t\t * onClick event callback\n\t\t */\n\t\tonClick: PropTypes.func,\n\n\t\t/**\n\t\t * onMouseEnter event callback\n\t\t */\n\t\tonMouseEnter: PropTypes.func,\n\n\t\t/**\n\t\t * onMouseLeave event callback\n\t\t */\n\t\tonMouseLeave: PropTypes.func,\n\n\t\t/**\n\t\t * onFocus event callback\n\t\t */\n\t\tonFocus: PropTypes.func,\n\n\t\t/**\n\t\t * onBlur event callback\n\t\t */\n\t\tonBlur: PropTypes.func,\n\n\t\t/**\n\t\t * onKeyDown event callback\n\t\t */\n\t\tonKeyDown: PropTypes.func,\n\n\t\t/**\n\t\t * onKeyUp event callback\n\t\t */\n\t\tonKeyUp: PropTypes.func,\n\n\t\t/**\n\t\t * onKeyPress event callback\n\t\t */\n\t\tonKeyPress: PropTypes.func\n\t};\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { noop, isFunction, values, size } from 'lodash';\nimport { nodeContainsFocus, isNodeInEventPath } from '../utils/dom';\nimport {\n\taddOutsideScrollListener,\n\tremoveOutsideScrollListener\n} from '../utils/outside-scroll';\n\n/**\n * Execute a callback when the node loses focus (either by tabbing off the\n * element or clicking outside).\n *\n * @returns an object containing a `remove()` method to clean up event\n * handlers.\n */\nexport function onLeave(node, callback, { handleOutsideScroll }) {\n\tconst singleNode = Array.isArray(node) ? node[0] : node;\n\n\tfunction keyboardHandler(event) {\n\t\t// This setTimeout is here in order to prevent the race condition between\n\t\t// the callback and the keydown event firing. Keydown event happens BEFORE\n\t\t// focus is lost, where mousedown happens AFTER. Without the setTimeout,\n\t\t// mouse clicks work fine, but pressing TAB does not register as leaving\n\t\t// the field.\n\t\tsetTimeout(() => {\n\t\t\tif (!nodeContainsFocus(node)) {\n\t\t\t\tcallback(event);\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction mouseHandler(event) {\n\t\tif (!isNodeInEventPath(node, event)) {\n\t\t\tcallback(event);\n\t\t}\n\t}\n\n\tfunction scrollHandler(event) {\n\t\tcallback(event);\n\t\tnode.forEach(n => n.blur());\n\t}\n\n\tdocument.addEventListener('mousedown', mouseHandler);\n\tdocument.addEventListener('keydown', keyboardHandler);\n\tif (handleOutsideScroll) {\n\t\taddOutsideScrollListener(singleNode, scrollHandler);\n\t}\n\n\treturn {\n\t\tremove: () => {\n\t\t\tdocument.removeEventListener('mousedown', mouseHandler);\n\t\t\tdocument.removeEventListener('keydown', keyboardHandler);\n\t\t\tremoveOutsideScrollListener(singleNode);\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\n/**\n * Component that handles focus state management setup and cleanup across\n * separate nodes. This is typically used to defer blur events on an input when\n * a sibling dropdown is active.  It will wrap the component passed through and\n * handle calling the passed in `onBlur` when focus leaves the component(s) set\n * by `setFocusTarget`.\n *\n * The child must be a function that returns a React element. The function\n * will be called with a `setFocusTarget` parameter that the child can use to flag\n * specific nodes that need to listen to blur events.\n *\n * Call setFocusTarget with a string that acts as a key to handle multiple refs and duplicates. Then pass that result through\n * to any ref prop in a Component. i.e. <Component ref={setFocusTarget('my-key')} />\n *\n * @param {function} props.onBlur - The function to call when focus is lost\n * @param {function} props.children - The child *must* be a function that returns your actual component.\n *\n * @example\n * const handleBlur = () => console.log(\"no longer active!\");\n *\n * const Component = ({ isActive }) => (\n *   <FocusWatcher onBlur={handleBlur}>\n *     { setFocusTarget => (\n *       // my real component\n *       <input ref={setFocusTarget('my-ref')} />\n *     )}\n *   </FocusWatcher>\n * )\n */\nexport default class FocusWatcher extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tif (!isFunction(props.children)) {\n\t\t\tthrow new Error('The child must be a function');\n\t\t}\n\n\t\tthis.nodes = {};\n\t\tthis.globalListener = null;\n\t\tthis.focused = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.globalListener && this.globalListener.remove();\n\t}\n\n\tcomponentWillReceiveProps(nextProps) {\n\t\tif (this.props.onBlur !== nextProps.onBlur) {\n\t\t\tthis.setupGlobalListener(nextProps.onBlur);\n\t\t}\n\t}\n\n\tsetupGlobalListener = callback => {\n\t\tif (this.globalListener) {\n\t\t\tthis.globalListener = this.globalListener.remove();\n\t\t}\n\n\t\tif (size(this.nodes) > 1) {\n\t\t\tthis.globalListener = onLeave(values(this.nodes), callback, {\n\t\t\t\thandleOutsideScroll: this.props.handleOutsideScroll\n\t\t\t});\n\t\t}\n\t};\n\n\tsetFocusTarget = key => {\n\t\treturn ref => {\n\t\t\tif (ref === null) {\n\t\t\t\tdelete this.nodes[key];\n\t\t\t} else {\n\t\t\t\tthis.nodes[key] = ref;\n\t\t\t\tref.addEventListener('blur', this.onNodeBlur);\n\t\t\t\tref.addEventListener('focus', this.onFocus);\n\t\t\t}\n\n\t\t\tthis.setupGlobalListener(this.onGlobalBlur);\n\n\t\t\treturn ref;\n\t\t};\n\t};\n\n\tonNodeBlur = (...args) => {\n\t\tif (size(this.nodes) <= 1) {\n\t\t\tthis.focused = false;\n\t\t\tthis.onGlobalBlur(...args);\n\t\t}\n\t};\n\n\tonGlobalBlur = (...args) => {\n\t\tif (!this.props.persistant || (this.props.persistant && this.focused)) {\n\t\t\tthis.focused = false;\n\t\t\tthis.props.onBlur(...args);\n\t\t}\n\t};\n\n\tonFocus = () => {\n\t\tthis.focused = true;\n\t};\n\n\trender() {\n\t\treturn this.props.children(this.setFocusTarget);\n\t}\n}\n\nFocusWatcher.propTypes = {\n\tchildren: PropTypes.func.isRequired,\n\tonBlur: PropTypes.func,\n\thandleOutsideScroll: PropTypes.bool\n};\n\nFocusWatcher.defaultProps = {\n\tonBlur: noop,\n\thandleOutsideScroll: false\n};\n","import PropTypes from 'prop-types';\nimport { isFunction } from 'lodash';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\n/**\n * TODO - \tThis component might not be required when Textarea and DumbTextInput are migrated to seismic\n * \t\t\tRevisit once these components are migrated to Seismic\n *\n * React does not always play nicely with WebComponents, especially when they\n * are polyfilled by ShadyDOM. We have some cases where `onBlur` or `onFocus`\n * is not correctly called in Firefox or IE, but natively attaching an event is\n * all good.\n *\n * https://code.devsnc.com/dev/sn-component-form-controls/pull/124\n *\n * This component expects a single child and hijacks any `onBlur` or `onFocus`\n * callback, replacing it with a native event instead.\n *\n * Will throw an exception with multiple children, or when the single child is\n * not a React component... so don't go passing stupid values in.\n */\nexport default class ShadyDOMEventFixer extends React.PureComponent {\n\tstatic propTypes = {\n\t\tchildren: PropTypes.element\n\t};\n\n\taddListeners(props) {\n\t\tconst child = React.Children.only(props.children);\n\t\tconst node = ReactDOM.findDOMNode(this);\n\n\t\tif (node && child.props.onBlur) {\n\t\t\tnode.addEventListener('blur', child.props.onBlur);\n\t\t}\n\n\t\tif (node && child.props.onFocus) {\n\t\t\tnode.addEventListener('focus', child.props.onFocus);\n\t\t}\n\t}\n\n\tremoveListeners(props) {\n\t\tconst child = React.Children.only(props.children);\n\t\tconst node = ReactDOM.findDOMNode(this);\n\n\t\tif (node && child.props.onBlur) {\n\t\t\tnode.removeEventListener('blur', child.props.onBlur);\n\t\t}\n\n\t\tif (node && child.props.onFocus) {\n\t\t\tnode.removeEventListener('focus', child.props.onFocus);\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif (!window.ShadyDOM) return;\n\t\tthis.addListeners(this.props);\n\t}\n\n\tcomponentWillReceiveProps(nextProps) {\n\t\tif (!window.ShadyDOM) return;\n\t\tthis.removeListeners(this.props);\n\t\tthis.addListeners(nextProps);\n\t}\n\n\trender() {\n\t\tconst child = React.Children.only(this.props.children);\n\t\tif (\n\t\t\twindow.ShadyDOM &&\n\t\t\t(isFunction(child.props.onBlur) || isFunction(child.props.onFocus))\n\t\t) {\n\t\t\treturn React.cloneElement(child, {\n\t\t\t\t...child.props,\n\t\t\t\tonBlur: undefined,\n\t\t\t\tonFocus: undefined\n\t\t\t});\n\t\t}\n\n\t\treturn child;\n\t}\n}","export default function camelCase(str) {\n    return str.replace( /[-_]+/g, ' ')\n        .replace( /[^\\w\\s]/g, '')\n        .replace( / (.)/g, $1 => $1.toUpperCase())\n        .replace( / /g, '')\n        .replace(/^./g, $1 => $1.toLowerCase());\n}","export const ATTRIBUTES = [\n\t'component-id',\n\t'listen-to',\n\t'path',\n\t'context',\n\t'context-modifier',\n\t'key',\n\t'dangerouslySetInnerHTML',\n\t'suppressContentEditableWarning',\n\t'suppressHydrationWarning',\n\t'alt',\n\t'async',\n\t'autocomplete',\n\t'autofocus',\n\t'autoplay',\n\t'capture',\n\t'checked',\n\t'default',\n\t'defer',\n\t'disabled',\n\t'draggable',\n\t'dropzone',\n\t'hidden',\n\t'href',\n\t'hreflang',\n\t'http-equiv',\n\t'icon',\n\t'id',\n\t'is',\n\t'maxlength',\n\t'minlength',\n\t'media',\n\t'method',\n\t'multiple',\n\t'name',\n\t'placeholder',\n\t'readonly',\n\t'rel',\n\t'required',\n\t'reversed',\n\t'role',\n\t'rows',\n\t'rowspan',\n\t'selected',\n\t'slot',\n\t'src',\n\t'tabindex',\n\t'target',\n\t'title',\n\t'type',\n\t'value'\n];\n\nexport const MAPPED_TO_PROPS = [\n\t'value'\n];\n","const x = 2147483648;\nconst baseId =\n\tMath.floor(Math.random() * x).toString(36) +\n\tMath.abs(Math.floor(Math.random() * x) ^ Date.now()).toString(36);\n\nlet count = 0;\nfunction guid() {\n\tcount = count + 1;\n\treturn `${baseId}-${count}`;\n}\n\nconst callAsync = Promise.resolve().then.bind(Promise.resolve());\n\nconst shadowRootToSharedAccessibilityTargets = new Map();\nconst shadowRootToAccessibilityTargetsItemsQueue = new Map();\n\nconst shadowRootToAriaRefs = new Map();\nconst shadowRootToAriaRefsQueue = new Map();\n\nexport default function ariaRefHelpers(name, props) {\n\tif (typeof name !== 'string') {\n\t\treturn {handleAriaAccessibility: () => {}, ariaSetVnode: () => {}, requiresRef: false};\n\t}\n\t/**\n\t * Array<{\n\t *   targetRef: AriaRef,\n\t *   id: string,\n\t *   ariaAttribute: string,\n\t *   callback?: (targetRef: AriaRef) => {},\n\t *   currentClone?: Element,\n\t *   element?: Element\n\t * }>\n\t */\n\tconst accessibilityTargets = []; \n\tif (typeof name === 'string') {\n\t\tfor (const propName in props) {\n\t\t\tif (propName.startsWith('aria-') && props[propName] && typeof props[propName].subscribe === 'function') {\n\t\t\t\tconst id = `a${guid()}`;\n\t\t\t\tconst targetRef = props[propName];\n\t\t\t\tprops[propName] = id;\n\t\t\t\taccessibilityTargets.push({targetRef, id, ariaAttribute: propName})\n\t\t\t}\n\t\t}\n\t}\n\n\tlet ariaRef;\n\tif (props && props['now-aria-ref']) {\n\t\tariaRef = props['now-aria-ref'];\n\t\tdelete props['now-aria-ref'];\n\t}\n\t\n\tfunction createAriaRefHierarchy(node) {\n\t\tif (!node) {\n\t\t\tariaRef.setCurrent(node);\n\t\t\treturn;\n\t\t}\n\n\t\tconst ariaRefShadowRoot = node.getRootNode();\n\t\tlet ariaRefAssignments = shadowRootToAriaRefs.get(ariaRefShadowRoot);\n\t\tif (!ariaRefAssignments) {\n\t\t\tariaRefAssignments = [];\n\t\t\tshadowRootToAriaRefs.set(ariaRefShadowRoot, ariaRefAssignments);\n\t\t}\n\t\tariaRefAssignments.push({ariaRef, element: node});\n\n\t\tcallAsync(() => {\n\t\t\tlet ariaRefsQueue = shadowRootToAriaRefsQueue.get(ariaRefShadowRoot);\n\t\t\tif (!ariaRefsQueue) {\n\t\t\t\tariaRefsQueue = [];\n\t\t\t\tshadowRootToAriaRefsQueue.set(ariaRefShadowRoot, ariaRefsQueue);\n\t\t\t}\n\t\t\tariaRefsQueue.push(ariaRef);\n\n\t\t\tif (ariaRefsQueue.length === ariaRefAssignments.length) {\n\t\t\t\tshadowRootToAriaRefs.delete(ariaRefShadowRoot);\n\t\t\t\tshadowRootToAriaRefsQueue.delete(ariaRefShadowRoot);\n\n\t\t\t\tconst assignments = ariaRefAssignments.reverse(); // Reverse so that children always come after parents\n\t\t\t\tconst ariaRefToAssignment = new Map();\n\t\t\t\tfor (let i = 0; i < assignments.length; i++) {\n\t\t\t\t\tconst ariaRefAssignment = assignments[i];\n\n\t\t\t\t\tariaRefToAssignment.set(ariaRefAssignment.ariaRef, ariaRefAssignment);\n\t\t\t\t\t// We know that a parent of an ariaRef will always be before\n\t\t\t\t\t// it in the refs array. We can use this knowledge to efficiently figure out\n\t\t\t\t\t// each ariaRef's parent ariaRef\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\tlet possibleParentAriaRef = assignments[i - 1].ariaRef;\n\t\t\t\t\t\twhile (possibleParentAriaRef) {\n\t\t\t\t\t\t\tif (possibleParentAriaRef.contains(ariaRefAssignment.element)) {\n\t\t\t\t\t\t\t\tpossibleParentAriaRef.setChildQuerySelector(\n\t\t\t\t\t\t\t\t\tariaRefAssignment.ariaRef,\n\t\t\t\t\t\t\t\t\tbuildQuerySelector(\n\t\t\t\t\t\t\t\t\t\tariaRefToAssignment.get(possibleParentAriaRef).element,\n\t\t\t\t\t\t\t\t\t\tariaRefAssignment.element\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tariaRefAssignment.ariaRef.setParentAriaRef(possibleParentAriaRef);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tpossibleParentAriaRef = possibleParentAriaRef.getParentAriaRef();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tariaRefAssignment.ariaRef.setCurrent(ariaRefAssignment.element);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction handleAriaAccessibility(node) {\n\t\tif (ariaRef) {\n\t\t\tcreateAriaRefHierarchy(node);\n\t\t}\n\n\t\tfor (const item of accessibilityTargets) {\n\t\t\titem.element = node;\n\n\t\t\tif (!node) {\n\t\t\t\tif (item.currentClone && item.currentClone.parentNode) {\n\t\t\t\t\titem.currentClone.parentNode.removeChild(item.currentClone);\n\t\t\t\t\titem.currentClone = null;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (item.callback) {\n\t\t\t\t\titem.targetRef.unsubscribe({element: node, attribute: item.ariaAttribute});\n\t\t\t\t\titem.callback = null;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfunction callback(targetRef) {\n\t\t\t\tif (!targetRef || !targetRef.isSet()) {\n\t\t\t\t\tif (item.currentClone && item.currentClone.parentNode) {\n\t\t\t\t\t\titem.currentClone.parentNode.removeChild(item.currentClone);\n\t\t\t\t\t\titem.currentClone = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode.removeAttribute(item.ariaAttribute);\n\t\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tnode.setAttribute(item.ariaAttribute, item.id)\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// If the element and target are in the same shadowRoot, don't clone the target\n\t\t\t\t// but instead just add the id to the target\n\t\t\t\tif (node.getRootNode() === targetRef.getRootNode()) {\n\t\t\t\t\tconst id = targetRef.getAttribute('id');\n\t\t\t\t\tif (id) {\n\t\t\t\t\t\tnode.setAttribute(item.ariaAttribute, id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttargetRef.setId(item.id);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst sourceShadowRoot = node.getRootNode();\n\t\t\t\tlet sharedAccessibilityTargets = shadowRootToSharedAccessibilityTargets.get(sourceShadowRoot);\n\t\t\t\tif (!sharedAccessibilityTargets) {\n\t\t\t\t\tsharedAccessibilityTargets = new Set();\n\t\t\t\t\tshadowRootToSharedAccessibilityTargets.set(sourceShadowRoot, sharedAccessibilityTargets);\n\t\t\t\t}\n\t\t\t\tsharedAccessibilityTargets.add(item);\n\n\t\t\t\tcallAsync(() => {\n\t\t\t\t\tconst targetShadowRoot = targetRef.getRootNode();\n\t\t\t\t\n\t\t\t\t\tconst targetItemsWithSharedShadow = Array.from(sharedAccessibilityTargets).filter(\n\t\t\t\t\t\tt => t.targetRef.isSet() && t.targetRef.getRootNode() === targetShadowRoot\n\t\t\t\t\t);\n\t\n\t\t\t\t\tlet targetItemsSharedShadowQueue = shadowRootToAccessibilityTargetsItemsQueue.get(targetShadowRoot);\n\t\t\t\t\tif (!targetItemsSharedShadowQueue) {\n\t\t\t\t\t\ttargetItemsSharedShadowQueue = new Set();\n\t\t\t\t\t\tshadowRootToAccessibilityTargetsItemsQueue.set(targetShadowRoot, targetItemsSharedShadowQueue);\n\t\t\t\t\t}\n\t\t\t\t\ttargetItemsSharedShadowQueue.add(item);\n\t\n\t\t\t\t\tif (targetItemsSharedShadowQueue.size === targetItemsWithSharedShadow.length) {\n\t\t\t\t\t\thandleAccessibilityTargets(targetItemsSharedShadowQueue);\n\t\t\t\t\t\tshadowRootToSharedAccessibilityTargets.delete(sourceShadowRoot);\n\t\t\t\t\t\tshadowRootToAccessibilityTargetsItemsQueue.delete(targetShadowRoot);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\t\n\t\t\t// Subscribe for any changes to the aria ref so we can replace the cloned node\n\t\t\titem.callback = callback;\n\t\t\titem.targetRef.subscribe({element: node, attribute: item.ariaAttribute}, callback);\n\t\t}\n\t}\n\n\tfunction ariaSetVnode(vnode) {\t\n\t\tfor (let i = 0; i < accessibilityTargets.length; i++) {\n\t\t\tconst item = accessibilityTargets[i];\n\t\t\titem.vnode = vnode;\n\t\t}\n\t}\n\n\treturn {handleAriaAccessibility, ariaSetVnode, requiresRef: !!(ariaRef || accessibilityTargets.length)};\n}\n\nfunction handleAccessibilityTargets(targetItemsShadowQueue) {\n\t// Separate ariaRefs that do and do not have a parent.\n\t// Those without a parent are the refs that should be cloned\n\tconst targetRefToTreeNode = new Map();\n\tconst targetItemRoots = [];\n\tconst targetItems = Array.from(targetItemsShadowQueue);\n\tfor (let i = 0; i < targetItems.length; i++) {\n\t\tconst targetItem = targetItems[i];\n\n\t\tlet treeNode = targetRefToTreeNode.get(targetItem.targetRef);\n\t\tif (!treeNode) {\n\t\t\ttreeNode = {\n\t\t\t\ttargetItems: [],\n\t\t\t\tchildren: [],\n\t\t\t\ttargetRef: targetItem.targetRef,\n\t\t\t\tparentTargetRef: null\n\t\t\t};\n\t\t\ttargetRefToTreeNode.set(targetItem.targetRef, treeNode);\n\t\t}\n\t\ttreeNode.targetItems.push(targetItem);\n\n\t\tlet parentAriaRef = targetItem.targetRef.getParentAriaRef();\n\t\twhile (parentAriaRef) {\n\t\t\tif (targetItems.find(item => item.targetRef === parentAriaRef)) {\n\t\t\t\tlet parentNode = targetRefToTreeNode.get(parentAriaRef);\n\t\t\t\tif (!parentNode) {\n\t\t\t\t\tparentNode = {\n\t\t\t\t\t\ttargetItems: [],\n\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\ttargetRef: parentAriaRef,\n\t\t\t\t\t\tparentTargetRef: null\n\t\t\t\t\t};\n\t\t\t\t\ttargetRefToTreeNode.set(parentAriaRef, parentNode);\n\t\t\t\t}\n\n\t\t\t\ttreeNode.parentTargetRef = parentAriaRef;\n\t\t\t\tparentNode.children.push(targetItem);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tparentAriaRef = parentAriaRef.getParentAriaRef();\n\t\t}\n\n\t\tif (!parentAriaRef)\n\t\t\ttargetItemRoots.push(targetItem);\n\t}\n\n\t// Loop over targetItemRoots:\n\t// For each one, if it hasn't been cloned yet, clone into DOM and then for each child:\n\t// If it hasn't been handled yet, create the query selector from the child targetRef to the\n\t// parent targetRef, then use that selector on the cloned item, then edit the returned element\n\t// to have the correct id\n\tconst cloned = new Map();\n\tconst targetRefToQuerySelector = new Map();\n\tfor (let i = 0; i < targetItemRoots.length; i++) {\n\t\tconst rootTargetItem = targetItemRoots[i];\n\t\tconst firstItemWithTargetRef = cloned.get(rootTargetItem.targetRef);\n\t\trootTargetItem.element.setAttribute(\n\t\t\trootTargetItem.ariaAttribute,\n\t\t\tfirstItemWithTargetRef ? firstItemWithTargetRef.id : rootTargetItem.id\n\t\t);\n\t\tif (!firstItemWithTargetRef) {\n\t\t\tcloned.set(rootTargetItem.targetRef, rootTargetItem);\n\n\t\t\tconst clone = rootTargetItem.targetRef.cloneNode(true);\n\t\t\tclone.id = rootTargetItem.id;\n\t\t\tclone.setAttribute('aria-hidden', true);\n\n\t\t\tconst container = document.createElement('div');\n\t\t\tcontainer.style =\n\t\t\t\t'position: absolute; overflow: hidden; width: 1px; height: 1px; margin: 0; border: none; padding: 0; white-space: nowrap; clip: rect(0 0 0 0); clip-path: inset(50%);';\n\t\t\tcontainer.appendChild(clone);\n\n\t\t\tif (rootTargetItem.currentClone && rootTargetItem.currentClone.parentNode)\n\t\t\t\trootTargetItem.currentClone.parentNode.removeChild(rootTargetItem.currentClone);\n\n\t\t\trootTargetItem.element.getRootNode().appendChild(container);\n\t\t\trootTargetItem.currentClone = container;\n\t\t}\n\n\t\tlet children = [...targetRefToTreeNode.get(rootTargetItem.targetRef).children];\n\t\ttargetRefToQuerySelector.set(rootTargetItem.targetRef, '');\n\t\twhile (children.length) {\n\t\t\tconst childItem = children.shift();\n\n\t\t\tconst firstItemWithTargetRef = cloned.get(childItem.targetRef);\n\t\t\tconst itemId = firstItemWithTargetRef ? firstItemWithTargetRef.id : childItem.id;\n\t\t\tchildItem.element.setAttribute(childItem.ariaAttribute, itemId);\n\t\t\tif (!firstItemWithTargetRef) {\n\t\t\t\tcloned.set(childItem.targetRef, childItem);\n\n\t\t\t\tconst treeNode = targetRefToTreeNode.get(childItem.targetRef);\n\t\t\t\tconst selections = [];\n\n\t\t\t\tlet currentParent;\n\t\t\t\tlet currentChild = childItem.targetRef;\n\t\t\t\tdo {\n\t\t\t\t\tcurrentParent = currentChild.getParentAriaRef();\n\t\t\t\t\tconst partialSelector = currentParent.getChildQuerySelector(currentChild);\n\t\t\t\t\tselections.push(partialSelector);\n\t\t\t\t\tcurrentChild = currentParent;\n\t\t\t\t} while (currentParent !== rootTargetItem.targetRef);\n\n\t\t\t\tconst selector = selections.reverse().join(' > ');\n\t\t\t\tconst node = rootTargetItem.currentClone.querySelector(selector);\n\n\t\t\t\tnode.id = itemId;\n\t\t\t\tchildren = children.concat(treeNode.children);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction buildQuerySelector(parent, child) {\n\tconst path = [];\n\tlet el = child;\n\twhile (el !== parent) {\n\t\tlet position = 0;\n\t\tlet current = el;\n\t\twhile (current) {\n\t\t\tif (current.tagName === el.tagName)\n\t\t\t\tposition += 1;\n\n\t\t\tcurrent = current.previousElementSibling;\n\t\t}\n\n\t\tpath.push(`${el.tagName.toLowerCase()}:nth-of-type(${position})`);\n\n\t\tel = el.parentNode;\n\t}\n\n\treturn path.reverse().join(' > ');\n}","import React from 'react';\nimport camelCase from './camelCase';\nimport {ATTRIBUTES, MAPPED_TO_PROPS} from './constants';\nimport ariaRefHelpers from './ariaRefHelpers';\n\nexport default function createElement(name, props = {}, ...children) {\n\tfunction isSeismicComponent(name) {\n\t\treturn typeof name === 'string' && name.indexOf('-') !== -1;\n\t}\n\n\tfunction isAttribute(name) {\n\t\treturn ATTRIBUTES.indexOf(name) !== -1\n\t\t\t|| name.startsWith('aria-')\n\t\t\t|| name.startsWith('data-');\n\t}\n\n\tfunction isMappedToProps(name) {\n\t\treturn MAPPED_TO_PROPS.indexOf(name) !== -1;\n  }\n  \n  const {handleAriaAccessibility, ariaSetVnode, requiresRef} = ariaRefHelpers(name, props);\n\t\n\tif (props && !!Object.keys(props).length && isSeismicComponent(name)) {\n\t\tconst existingRef = props.ref && typeof props.ref === 'function' && props.ref;\n\t\tconst attributes = {};\n\t\tconst properties = {};\n\n\t\tfor (const name in props) {\n\t\t\tif (isAttribute(name))\n\t\t\t\tattributes[name] = props[name];\n\t\t\telse\n\t\t\t\tproperties[camelCase(name)] = props[name];\n\n\t\t\tif (isMappedToProps(name))\n\t\t\t\tproperties[name] = props[name];\n\t\t}\n\n\t\tif (!!Object.keys(properties).length) {\n\t\t\tconst vnode = React.createElement(\n\t\t\t\tname,\n\t\t\t\tObject.assign({}, attributes, {ref: node => {\n\t\t\t\t\thandleAriaAccessibility(node);\n\t\t\t\t\t\n\t\t\t\t\tif (!node)\n\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\n\t\t\t\t\texistingRef && existingRef(node);\n\t\t\t\t\tObject.assign(node, properties);\n\t\t\t\t}}),\n\t\t\t\t...children\n      );\n\n      ariaSetVnode(vnode);\n\n      return vnode;\n\t\t}\n\t}\n\n  if (requiresRef) {\n    const vnode = React.createElement(\n      name,\n      {\n        ...props,\n        ref: node => {\n          handleAriaAccessibility(node);\n          \n          if (props && props.ref) {\n            props.ref(node);\n          }\n        }\n      },\n      ...children\n    );\n  \n    ariaSetVnode(vnode);\n    \n    return vnode;\n  } else {\n    return React.createElement(name, props, ...children);\n  }\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__.__esModule\n\t\t\t\t\tif (cjsModule && 'default' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"][\"default\"];\n\t\t\t\t\t} else if ('default' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"] || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__[\"default\"][\"default\"];\n\t\t\t\t} });","import '@servicenow/now-highlighted-value';\n// eslint-disable-next-line no-unused-vars\nimport react from '@servicenow/ui-renderer-react';\nimport { isEmpty } from 'lodash';\nimport React from 'react';\n\n// TODO: Currently React components supports only React fragments\n// To be removed in future when all components are migrated to Snabdom\nexport const renderHighlightedValueReact = highlightedValue => {\n\tconst {\n\t\tvalue: highlightedValueLabel,\n\t\tstatus,\n\t\tshowIcon,\n\t\tvariantName,\n\t\tcolorName,\n\t\ticonName\n\t} = highlightedValue || {};\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t{!isEmpty(highlightedValue) && (\n\t\t\t\t<now-highlighted-value\n\t\t\t\t\tslot=\"label-end\"\n\t\t\t\t\tlabel={highlightedValueLabel}\n\t\t\t\t\tcolor={colorName}\n\t\t\t\t\tshow-icon={showIcon}\n\t\t\t\t\tvariant={variantName}\n\t\t\t\t\ticon={showIcon ? iconName : null}\n\t\t\t\t\tstatus={!colorName ? status : null}\n\t\t\t\t></now-highlighted-value>\n\t\t\t)}\n\t\t</React.Fragment>\n\t);\n};\n","import React from 'react';\n\n//TODO - Can be removed once all components are converted to seismic\nexport const ForwardProperties = Component =>\n\tfunction RegisteredComponent({ properties, ...rest }) {\n\t\treturn React.createElement(Component, {\n\t\t\t...properties,\n\t\t\t...rest,\n\t\t\tproperties\n\t\t});\n\t};\n","/**\n * HOC to provide normalized `dispatch`, `onValueChange`, and\n * `onStagedValueChange` prop functions for wrapped components.\n *\n * `onValueChange` and `onStagedValueChange` should be called\n * with a single object parameter, which should contain the data\n * payload to event up to the parent/through Seismic\n *\n * e.g.:\n *\n *   this.props.onValueChange({ value: 'the value' });\n *   this.props.onStagedValueChange({ value: 'the staged value' })\n *\n * The on*ValueChange functions also handle dispatching the event\n * up through Seismic.\n *\n * By default, this HOC also caches the payload between multiple\n * on*ValueChange calls, preventing sequential calls with the same payload.\n * This behavior can be disabled by providing the `cache: false` option.\n */\nimport {\n\tisEqualWith,\n\tisFunction,\n\tisNil,\n\tnoop,\n\tpick,\n\tisObject,\n\tcamelCase,\n\tcurry,\n\tisUndefined,\n\tset\n} from 'lodash';\nimport React from 'react';\n\nconst allLowerCase = s => camelCase(s).toLowerCase();\nconst undefinedToNull = thing => (isUndefined(thing) ? null : thing);\n\n/**\n * Parent on*ValueChange functions originally supported the following\n * signature:\n *\n * (event, name, value, displayValue)\n *\n * But having the most useful pieces of data as the 3rd and 4th\n * argument sucks + it's inconsistent with our dispatch data. This\n * conditionally allows passing the entire payload obj as first\n * parameter if the callback isn't expecting multiple args.\n */\nexport const adaptCallbackForLegacyAPI = callback => payload => {\n\tif (!isFunction(callback) || !isObject(payload)) {\n\t\treturn false;\n\t}\n\n\tconst args =\n\t\tcallback.length > 1\n\t\t\t? [\n\t\t\t\t\tpayload.event,\n\t\t\t\t\tpayload.name,\n\t\t\t\t\tpayload.value,\n\t\t\t\t\tpayload.displayValue,\n\t\t\t\t\tpayload.error,\n\t\t\t\t\tpayload.additionalInfo\n\t\t\t  ].map(undefinedToNull)\n\t\t\t: [payload];\n\n\tcallback(...args);\n\n\treturn true;\n};\n\nconst createHOC = curry(\n\t(\n\t\t{\n\t\t\tinitialValueProp = 'value',\n\t\t\tinitialDisplayValueProp = 'displayValue',\n\t\t\tcache = true,\n\t\t\tstopBubbling = []\n\t\t},\n\t\tControl\n\t) =>\n\t\tclass OnValueChangeProvider extends React.Component {\n\t\t\tstatic displayName = `OnValueChangeProvider(${\n\t\t\t\tControl.name || Control.displayName || 'Component'\n\t\t\t})`;\n\t\t\tstatic behaviors = Control.behaviors;\n\t\t\tstatic defaultProps = Control.defaultProps;\n\t\t\tstatic propTypes = Control.propTypes;\n\t\t\tstatic properties = Control.properties;\n\t\t\tstatic style = Control.style;\n\t\t\tstatic initialState = Control.initialState;\n\t\t\tstatic actionHandlers = stopBubbling.reduce((acc, curr) => {\n\t\t\t\tif (curr.indexOf('#') !== -1) {\n\t\t\t\t\tset(acc, curr, { stopPropagation: true });\n\t\t\t\t} else {\n\t\t\t\t\tset(acc, `${curr}#VALUE_CHANGED`, { stopPropagation: true });\n\t\t\t\t\tset(acc, `${curr}#STAGED_VALUE_CHANGED`, { stopPropagation: true });\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t}, Control.actionHandlers);\n\n\t\t\tconstructor(props) {\n\t\t\t\tsuper(props);\n\t\t\t\tthis.componentName = Control.componentName || props.componentName;\n\t\t\t\tthis.componentNameWithHash = this.componentName\n\t\t\t\t\t? `${this.componentName\n\t\t\t\t\t\t\t.replace(new RegExp('-', 'g'), '_')\n\t\t\t\t\t\t\t.toUpperCase()}#`\n\t\t\t\t\t: '';\n\t\t\t\tthis.state = {\n\t\t\t\t\tcallbacks: this.createValueChangeCallbacks(props),\n\t\t\t\t\tdispatchCache: {\n\t\t\t\t\t\t[`${this.componentNameWithHash}VALUE_CHANGED`]: {\n\t\t\t\t\t\t\tvalue: props[initialValueProp],\n\t\t\t\t\t\t\tdisplayValue: props[initialDisplayValueProp]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[`${this.componentNameWithHash}STAGED_VALUE_CHANGED`]: {\n\t\t\t\t\t\t\tvalue: props[initialValueProp],\n\t\t\t\t\t\t\tdisplayValue: props[initialDisplayValueProp]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcomponentWillReceiveProps(newProps) {\n\t\t\t\tif (\n\t\t\t\t\tnewProps.onValueChange !== this.props.onValueChange ||\n\t\t\t\t\tnewProps.onStagedValueChange !== this.props.onStagedValueChange ||\n\t\t\t\t\tnewProps.dispatch !== this.props.dispatch ||\n\t\t\t\t\tnewProps.name !== this.props.name\n\t\t\t\t) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tcallbacks: this.createValueChangeCallbacks(newProps)\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnewProps[initialValueProp] !== this.props[initialValueProp] ||\n\t\t\t\t\tnewProps[initialDisplayValueProp] !==\n\t\t\t\t\t\tthis.props[initialDisplayValueProp]\n\t\t\t\t) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tdispatchCache: {\n\t\t\t\t\t\t\t[`${this.componentNameWithHash}VALUE_CHANGED`]: {\n\t\t\t\t\t\t\t\tvalue: newProps[initialValueProp],\n\t\t\t\t\t\t\t\tdisplayValue: newProps[initialDisplayValueProp]\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[`${this.componentNameWithHash}STAGED_VALUE_CHANGED`]: {\n\t\t\t\t\t\t\t\tvalue: newProps[initialValueProp],\n\t\t\t\t\t\t\t\tdisplayValue: newProps[initialDisplayValueProp]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdoesPayloadMatchCache(payload, actionType) {\n\t\t\t\tconst cache = this.state.dispatchCache[actionType];\n\n\t\t\t\tif (!cache) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst compare = (a, b) => {\n\t\t\t\t\t// treat null and undefined as equal\n\t\t\t\t\tif (isNil(a) && isNil(b)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t// returning `undefined` to default to normal `isEqual` behavior\n\t\t\t\t};\n\t\t\t\t//ignoring cache when onValueChange is called from onBlur. We need to notify form even when the user enters the same value consecutively multiple times. This is done to maintain parity with platform so that onChange client script can be run for every value change.\n\t\t\t\treturn (\n\t\t\t\t\t!payload.ignoreCache &&\n\t\t\t\t\tisEqualWith(payload.error, cache.error, compare) &&\n\t\t\t\t\tisEqualWith(payload.value, cache.value, compare) &&\n\t\t\t\t\tisEqualWith(payload.displayValue, cache.displayValue, compare)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcreateValueChangeCallbacks(props) {\n\t\t\t\tconst callbackAndDispatch = (callback, actionType) => payload => {\n\t\t\t\t\tif (!isObject(payload)) {\n\t\t\t\t\t\tpayload = {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Don't emit anything if the data hasn't actually changed...\n\t\t\t\t\tif (cache && this.doesPayloadMatchCache(payload, actionType)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!payload.name && props.name) {\n\t\t\t\t\t\tpayload = {\n\t\t\t\t\t\t\t...payload,\n\t\t\t\t\t\t\tname: props.name\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tadaptCallbackForLegacyAPI(callback)(payload);\n\n\t\t\t\t\t// When a direct callback is provided, just use that instead of\n\t\t\t\t\t// dispatching.\n\t\t\t\t\tif (\n\t\t\t\t\t\tisFunction(props.dispatch) &&\n\t\t\t\t\t\t(!isFunction(callback) || actionType.includes('#'))\n\t\t\t\t\t) {\n\t\t\t\t\t\t// We used to put the dispatch data in an extra level of nesting to\n\t\t\t\t\t\t// support old Seismic behavior. Keep that behavior for backwards\n\t\t\t\t\t\t// compatibility, also migrate towards flattening the data.\n\t\t\t\t\t\tprops.dispatch(actionType, {\n\t\t\t\t\t\t\t[allLowerCase(actionType)]: payload,\n\t\t\t\t\t\t\t...payload\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// track value changed calls that go through the callback\n\t\t\t\t\tconst propValue =\n\t\t\t\t\t\tprops.initialValue === undefined ? props.value : props.initialValue;\n\t\t\t\t\tif (\n\t\t\t\t\t\tactionType.includes('#VALUE_CHANGED') &&\n\t\t\t\t\t\t!props.disableTracking &&\n\t\t\t\t\t\tpropValue !== payload.value\n\t\t\t\t\t) {\n\t\t\t\t\t\tprops.dispatch('TRACK', {\n\t\t\t\t\t\t\tmetaData: {\n\t\t\t\t\t\t\t\tname: props.name,\n\t\t\t\t\t\t\t\tfieldType: this.componentName\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (cache) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tdispatchCache: {\n\t\t\t\t\t\t\t\t...this.state.dispatchCache,\n\t\t\t\t\t\t\t\t[actionType]: pick(payload, ['value', 'displayValue', 'error'])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn payload;\n\t\t\t\t};\n\n\t\t\t\treturn {\n\t\t\t\t\tonValueChange: callbackAndDispatch(\n\t\t\t\t\t\tprops.onValueChange,\n\t\t\t\t\t\t`${this.componentNameWithHash}VALUE_CHANGED`\n\t\t\t\t\t),\n\t\t\t\t\tonStagedValueChange: callbackAndDispatch(\n\t\t\t\t\t\tprops.onStagedValueChange,\n\t\t\t\t\t\t`${this.componentNameWithHash}STAGED_VALUE_CHANGED`\n\t\t\t\t\t),\n\n\t\t\t\t\tdispatch: isFunction(props.dispatch) ? props.dispatch : noop\n\t\t\t\t};\n\t\t\t}\n\n\t\t\trender() {\n\t\t\t\treturn <Control {...this.props} {...this.state.callbacks} />;\n\t\t\t}\n\t\t}\n);\n\n// allow first param config to be optional\nexport default (configOrControl, ...args) => {\n\t// withValueChangeCallbacks(Component)\n\tif (isFunction(configOrControl)) {\n\t\treturn createHOC({}, configOrControl);\n\t}\n\n\t// withValueChangeCallbacks(config, Component) or\n\t// withValueChangeCallbacks(config)(Component)\n\treturn createHOC(configOrControl, ...args);\n};\n","import ControlledField from './ControlledField';\nimport ComponentBase from './ComponentBase';\n\nexport { onLeave, default as FocusWatcher } from './FocusWatcher';\nexport { default as ShadyDOMEventFixer } from './ShadyDOMEventFixer';\nexport { renderHighlightedValueReact } from './renderHighlightedValueReact';\nexport { ForwardProperties } from './forwardProperties';\n\nexport { default as withValueChangeCallbacks } from './withValueChangeCallbacks';\n\nexport const fieldPropTypes = ComponentBase.propTypes;\nexport const controlledFieldPropTypes = ControlledField.propTypes;\n","import { isFunction, isObject, isUndefined } from 'lodash';\n\nconst undefinedToNull = thing => (isUndefined(thing) ? null : thing);\n\n/**\n * Parent on*ValueChange functions originally supported the following\n * signature:\n *\n * (event, name, value, displayValue)\n *\n * But having the most useful pieces of data as the 3rd and 4th\n * argument sucks + it's inconsistent with our dispatch data. This\n * conditionally allows passing the entire payload obj as first\n * parameter if the callback isn't expecting multiple args.\n */\nexport const adaptCallbackForLegacyAPI = callback => payload => {\n\tif (!isFunction(callback) || !isObject(payload)) {\n\t\treturn false;\n\t}\n\n\tconst args =\n\t\tcallback.length > 1\n\t\t\t? [\n\t\t\t\t\tpayload.event,\n\t\t\t\t\tpayload.name,\n\t\t\t\t\tpayload.value,\n\t\t\t\t\tpayload.displayValue,\n\t\t\t\t\tpayload.error,\n\t\t\t\t\tpayload.additionalInfo\n\t\t\t  ].map(undefinedToNull)\n\t\t\t: [payload];\n\n\tcallback(...args);\n\n\treturn true;\n};\n","import { actionTypes } from '@servicenow/ui-core';\nimport { debounce, curry, find } from 'lodash';\n\nimport { pick, get, isNil, isEqualWith } from './utils';\n\nimport { adaptCallbackForLegacyAPI } from './withValueChangeCallbacks';\nimport { CALLBACK_AND_DISPATCH } from './constants';\n\nconst { COMPONENT_CONNECTED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nexport const behavior = 'withValueChangeCallbackBehavior';\n\nconst createCallbacks = (dispatch, { onValueChange, onStagedValueChange }) => {\n\tconst createdCallback = curry((callback, isValueChanged, dispatchPayload) => {\n\t\tdispatch(CALLBACK_AND_DISPATCH, {\n\t\t\tcallback,\n\t\t\tisValueChanged,\n\t\t\tdispatchPayload\n\t\t});\n\t});\n\t// only debounce staged value change, as we don't want to call it every time the value changes\n\t// in the field with the focus present\n\treturn {\n\t\tonValueChange: createdCallback(onValueChange, true),\n\t\tonStagedValueChange: debounce(\n\t\t\tcreatedCallback(onStagedValueChange, false),\n\t\t\t250\n\t\t)\n\t};\n};\n\nexport const withValueChangeCallbacksView = view => (state, helpers) => {\n\tif (state.properties.createdCallbacks) {\n\t\treturn view(state, helpers);\n\t}\n\tconst dispatch = state.helpers?.dispatch || helpers?.dispatch;\n\tconst { onValueChange, onStagedValueChange } = createCallbacks(dispatch, {\n\t\tonValueChange: state.properties.onValueChange,\n\t\tonStagedValueChange: state.properties.onStagedValueChange\n\t});\n\treturn view({ ...state, onValueChange, onStagedValueChange }, helpers);\n};\n\nexport const componentConnectedEffect =\n\t(\n\t\tbehaviorName,\n\t\t{ initialValueProp, initialDisplayValueProp, stopPropagation }\n\t) =>\n\t({ host, properties, updateState }) => {\n\t\tconst { name } = properties;\n\t\tconst parentBehaviors = get(\n\t\t\thost.getRootNode(),\n\t\t\t'host.nowElementConfig.behaviors',\n\t\t\t{}\n\t\t);\n\t\tif (find(parentBehaviors, { name: behaviorName }) && !stopPropagation) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (properties.createdCallbacks) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst componentName = host.tagName.replace(new RegExp('-', 'g'), '_');\n\t\tupdateState([\n\t\t\t{\n\t\t\t\tpath: `behaviors.${behaviorName}.dispatchCache`,\n\t\t\t\tvalue: {\n\t\t\t\t\t[`${componentName}#VALUE_CHANGED`]: {\n\t\t\t\t\t\tvalue: properties[initialValueProp],\n\t\t\t\t\t\tdisplayValue: properties[initialDisplayValueProp],\n\t\t\t\t\t\tname\n\t\t\t\t\t},\n\t\t\t\t\t[`${componentName}#STAGED_VALUE_CHANGED`]: {\n\t\t\t\t\t\tvalue: properties[initialValueProp],\n\t\t\t\t\t\tdisplayValue: properties[initialDisplayValueProp],\n\t\t\t\t\t\tname\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t}\n\t\t]);\n\t};\n\nexport const propertyChangedEffect =\n\t(\n\t\tbehaviorName,\n\t\t{ initialValueProp, initialDisplayValueProp, stopPropagation } = {}\n\t) =>\n\t({\n\t\thost,\n\t\taction: {\n\t\t\tpayload: { name, value }\n\t\t},\n\t\tupdateState,\n\t\tproperties\n\t}) => {\n\t\t// don't add withValueChangeCallback functionality if direct parent is already handling it\n\t\tconst parentBehaviors = get(\n\t\t\thost.getRootNode(),\n\t\t\t'host.nowElementConfig.behaviors',\n\t\t\t{}\n\t\t);\n\t\tif (find(parentBehaviors, { name: behaviorName }) && !stopPropagation) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (properties.createdCallbacks) {\n\t\t\treturn;\n\t\t}\n\n\t\t// value can change via props (from forms/client scripting), so we update the dispatchCache\n\t\tconst componentName = host.tagName.replace(new RegExp('-', 'g'), '_');\n\t\tif (name === initialValueProp || name === initialDisplayValueProp) {\n\t\t\tconst updateKey = name === initialValueProp ? 'value' : 'displayValue';\n\t\t\tupdateState([\n\t\t\t\t{\n\t\t\t\t\tpath: `behaviors.${behaviorName}.dispatchCache[${componentName}#VALUE_CHANGED].${updateKey}`,\n\t\t\t\t\tvalue,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: `behaviors.${behaviorName}.dispatchCache[${componentName}#STAGED_VALUE_CHANGED].${updateKey}`,\n\t\t\t\t\tvalue,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false\n\t\t\t\t}\n\t\t\t]);\n\t\t}\n\t};\n\nexport const callbackAndDispatchEffect =\n\t(behaviorName, { cache, initialValueProp, stopPropagation }) =>\n\t({\n\t\thost,\n\t\tstate,\n\t\tupdateState,\n\t\tproperties,\n\t\tdispatch,\n\t\tpayload: { callback, dispatchPayload, isValueChanged }\n\t}) => {\n\t\t// don't add withValueChangeCallback functionality if direct parent is already handling it\n\t\tconst parentBehaviors = get(\n\t\t\thost.getRootNode(),\n\t\t\t'host.nowElementConfig.behaviors',\n\t\t\t{}\n\t\t);\n\t\tif (find(parentBehaviors, { name: behaviorName }) && !stopPropagation) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (properties.createdCallbacks) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst componentName = host.tagName.replace(new RegExp('-', 'g'), '_');\n\t\tconst actionToDispatch = `${componentName}#${\n\t\t\tisValueChanged ? 'VALUE_CHANGED' : 'STAGED_VALUE_CHANGED'\n\t\t}`;\n\n\t\t// check if payload matches cache, don't do anything if it hasn't changed\n\t\tconst dispatchCache =\n\t\t\tstate.behaviors[behaviorName].dispatchCache?.[actionToDispatch];\n\n\t\tconst compare = (a, b) => {\n\t\t\t// treat null and undefined as equal\n\t\t\tif (isNil(a) && isNil(b)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t};\n\n\t\t// make sure to give payload name from props if it wasn't given explicitly\n\t\tif (!dispatchPayload.name && properties.name) {\n\t\t\tdispatchPayload.name = properties.name;\n\t\t}\n\n\t\tconst payloadMatchesCache =\n\t\t\tisEqualWith(dispatchPayload.name, dispatchCache?.name, compare) &&\n\t\t\tisEqualWith(dispatchPayload.error, dispatchCache?.error, compare) &&\n\t\t\tisEqualWith(dispatchPayload.value, dispatchCache?.value, compare) &&\n\t\t\tisEqualWith(\n\t\t\t\tdispatchPayload.displayValue,\n\t\t\t\tdispatchCache?.displayValue,\n\t\t\t\tcompare\n\t\t\t);\n\n\t\tif (cache && dispatchCache && payloadMatchesCache) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// call callback\n\t\tadaptCallbackForLegacyAPI(callback)(dispatchPayload);\n\n\t\t// Dispatch seismic action\n\t\tdispatch(actionToDispatch, dispatchPayload);\n\n\t\t// handle tracking that goes through here\n\t\tif (\n\t\t\tisValueChanged &&\n\t\t\tproperties[initialValueProp] !== dispatchPayload.value\n\t\t) {\n\t\t\tdispatch('TRACK', {\n\t\t\t\tmetaData: {\n\t\t\t\t\tname: properties.name,\n\t\t\t\t\tfieldType: componentName\n\t\t\t\t},\n\t\t\t\tadditionalOptions: { parentHandling: properties.disableTracking }\n\t\t\t});\n\t\t}\n\n\t\t// if cache, update the cache\n\t\tif (dispatchCache) {\n\t\t\tconst valueChangeAction = `${componentName}#VALUE_CHANGED`;\n\t\t\tconst isStageChangedAction = !isValueChanged;\n\t\t\tconst clearValueChangedCacheUpdate = properties.allowFieldChangesAfterEveryStageChange && isStageChangedAction\n\t\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: `behaviors.${behaviorName}.dispatchCache[${valueChangeAction}]`,\n\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t: [];\n\n\t\t\tupdateState([\n\t\t\t\t{\n\t\t\t\t\tpath: `behaviors.${behaviorName}.dispatchCache[${actionToDispatch}]`,\n\t\t\t\t\tvalue: pick(dispatchPayload, [\n\t\t\t\t\t\t'value',\n\t\t\t\t\t\t'displayValue',\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\t'name'\n\t\t\t\t\t]),\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false\n\t\t\t\t},\n\t\t\t\t...clearValueChangedCacheUpdate\n\t\t\t]);\n\t\t}\n\t};\n\n/**\n * This behavior replaces the withValueChangeCallbacks HOC provided to normalize\n * `dispatch`, `onValueChange`, and `onStagedValueChange` prop functions for wrapped components.\n * This has had a significant improvement in typing performance and we can now handle cache in\n * state without triggering re-renders.\n *\n * `onValueChange` and `onStagedValueChange` should be called\n * with a single object parameter, which should contain the data\n * payload to event up to the parent/through Seismic\n *\n * e.g.:\n *\n * \tthis.props.onValueChange({ value: 'the value' });\n * \tthis.props.onStagedValueChange({ value: 'the staged value' })\n *\n * The on*ValueChange functions also handle dispatching the event\n * up through Seismic.\n *\n * By default, it also caches the payload between multiple\n * on*ValueChange calls, preventing sequential calls with the same payload.\n * This behavior can be disabled by providing the `cache: false` option.\n *\n *  Options (with defaults):\n *  initialValueProp = 'value',\n *  initialDisplayValueProp = 'displayValue',\n *  cache = true\n *  stopBubbling = []\n *\n *\n * ```js\n * import createWithValueChangeCallbackBehavior from '@devsnc/sn-controls-common';\n *\n * createCustomElement('sn-example', {\n *   // ...\n * behaviors: [ createWithValueChangeCallbackBehavior({cache: true}) ];\n * });\n * ```\n *\n * @seismicBehavior withValueChangeCallbacksBehavior\n * @summary Behavior used to normalize OnValueChange and onStagedValueChange callbacks\n */\n\nexport const createWithValueChangeCallbackBehavior = (options = {}) => {\n\tconst {\n\t\tinitialDisplayValueProp = 'displayValue',\n\t\tinitialValueProp = 'value',\n\t\tcache = true,\n\t\tstopPropagation = false\n\t} = options;\n\n\treturn {\n\t\tname: behavior,\n\t\tactionHandlers: {\n\t\t\t[COMPONENT_CONNECTED]: componentConnectedEffect(behavior, {\n\t\t\t\tinitialValueProp,\n\t\t\t\tinitialDisplayValueProp,\n\t\t\t\tstopPropagation\n\t\t\t}),\n\t\t\t[COMPONENT_PROPERTY_CHANGED]: propertyChangedEffect(behavior, {\n\t\t\t\tinitialValueProp,\n\t\t\t\tinitialDisplayValueProp,\n\t\t\t\tstopPropagation\n\t\t\t}),\n\t\t\t[CALLBACK_AND_DISPATCH]: {\n\t\t\t\teffect: ({\n\t\t\t\t\thost,\n\t\t\t\t\tstate,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tproperties,\n\t\t\t\t\tdispatch,\n\t\t\t\t\taction: { payload }\n\t\t\t\t}) => {\n\t\t\t\t\tconst { callback, dispatchPayload, isValueChanged } = payload;\n\t\t\t\t\tcallbackAndDispatchEffect(behavior, {\n\t\t\t\t\t\tcache,\n\t\t\t\t\t\tinitialValueProp,\n\t\t\t\t\t\tstopPropagation\n\t\t\t\t\t})({\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tproperties,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tpayload: { callback, dispatchPayload, isValueChanged }\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tstopPropagation\n\t\t\t}\n\t\t}\n\t};\n};\n","import { actionTypes } from '@servicenow/ui-core';\nimport {\n\tdebounce,\n\tisEmpty,\n\ttoString,\n\tomit,\n\tisEqual,\n\tisFunction,\n\tget\n} from 'lodash';\n\nimport { CALLBACK_AND_DISPATCH_WITH_STATE, NOW_INPUT } from './constants';\nimport { isAttrTrue } from './utils';\nimport {\n\tcallbackAndDispatchEffect,\n\tcomponentConnectedEffect,\n\tpropertyChangedEffect\n} from './withValueChangeCallbacksBehavior';\nimport { validateInput } from './validations/onChangeValidation';\n\nconst { COMPONENT_CONNECTED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nexport const callbackWithStateBehavior = 'withStateBehavior';\n\nconst passthrough = s => ({\n\tvalue: s\n});\n\nconst merge = (oldObj, newObj) =>\n\tisEmpty(newObj) ? oldObj : { ...oldObj, ...newObj };\n\nconst debounceDispatch = fn => debounce(fn, 250);\n\nexport const updateAdditionalInfoState = (additionalInfo, updateState) => {\n\tfor (const prop in additionalInfo) {\n\t\tupdateState({\n\t\t\tpath: `${prop}`,\n\t\t\tvalue: additionalInfo[prop],\n\t\t\toperation: 'set',\n\t\t\tshouldRender: true\n\t\t});\n\t}\n};\n\nexport const createCallbacks = (\n\tdispatch,\n\t{ onValueChange, onStagedValueChange }\n) => {\n\tconst createdCallback =\n\t\t(callback, isValueChanged) =>\n\t\t(dispatchPayload, format = false) => {\n\t\t\tdispatch(CALLBACK_AND_DISPATCH_WITH_STATE, {\n\t\t\t\tcallback,\n\t\t\t\tisValueChanged,\n\t\t\t\tdispatchPayload: {\n\t\t\t\t\t...dispatchPayload,\n\t\t\t\t\tformat\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t// only debounce staged value change, as we don't want to call it every time the value changes\n\t// in the field with the focus present\n\treturn {\n\t\tonValueChange: createdCallback(onValueChange, true),\n\t\tonStagedValueChange: debounceDispatch(\n\t\t\tcreatedCallback(onStagedValueChange, false)\n\t\t)\n\t};\n};\n\nexport const setInitialStateWithValue =\n\t(format = passthrough) =>\n\t({ properties }) => {\n\t\tconst { initialValue, initialDisplayValue } = properties;\n\t\tconst derivedInitialDisplayValue = toString(initialDisplayValue);\n\n\t\tconst { value, ...additionalInfo } = omit(\n\t\t\tformat(toString(initialValue), properties),\n\t\t\t['error']\n\t\t);\n\t\tconst displayValue = derivedInitialDisplayValue || value;\n\t\treturn {\n\t\t\tisSuggestionsOpened: false,\n\t\t\thasFocus: false,\n\t\t\tvalue: displayValue,\n\t\t\tstagedValue: displayValue,\n\t\t\t...additionalInfo\n\t\t};\n\t};\n\nexport const withState = view => (state, helpers) => {\n\tconst { dispatch, updateState } = helpers;\n\tconst { onValueChange, onStagedValueChange } = state.properties;\n\tconst {\n\t\tonValueChange: onValueChangeCallback,\n\t\tonStagedValueChange: onStagedValueChangeCallback\n\t} = createCallbacks(dispatch, {\n\t\tonValueChange,\n\t\tonStagedValueChange\n\t});\n\tconst { onFocus } = state.properties;\n\tconst onFocusEvent = event => {\n\t\tupdateState({\n\t\t\tpath: 'hasFocus',\n\t\t\tvalue: true,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: true\n\t\t});\n\t\tif (isFunction(onFocus)) {\n\t\t\tonFocus(event);\n\t\t}\n\t};\n\tconst attrs = {\n\t\tonValueChange: onValueChangeCallback,\n\t\tonStagedValueChange: onStagedValueChangeCallback,\n\t\tonFocus: onFocusEvent,\n\t\tonChange: (event, encodedValue) =>\n\t\t\tdispatch('WITH_STATE_INTERNAL#ON_CHANGE', {\n\t\t\t\ttargetValue: encodedValue || get(event, 'target.value', ''),\n\t\t\t\tencodedValue\n\t\t\t}),\n\t\tonBlur: (event, targetValue) =>\n\t\t\tdispatch('WITH_STATE_INTERNAL#ON_BLUR', {\n\t\t\t\tevent,\n\t\t\t\ttargetValue: targetValue || event.target.value\n\t\t\t})\n\t};\n\treturn view({ ...state, ...attrs }, helpers);\n};\n\nexport const handleInitialValue = ({\n\trawValue,\n\tnewValue,\n\toldValue,\n\tstate,\n\tproperties,\n\tformat,\n\tupdateState\n}) => {\n\tif ((state.isBlur && !rawValue) || newValue !== oldValue) {\n\t\tconst {\n\t\t\tadditionalInfo: sAdditionalInfo,\n\t\t\tinternalValue,\n\t\t\tvalue: sValue,\n\t\t\terror: sError\n\t\t} = state;\n\t\tconst {\n\t\t\tvalue: formattedValue,\n\t\t\terror,\n\t\t\t...additionalInfo\n\t\t} = format(newValue, properties, sAdditionalInfo);\n\n\t\tconst mergedAdditionalInfo = merge(sAdditionalInfo, additionalInfo);\n\n\t\tif (\n\t\t\tnewValue !== internalValue ||\n\t\t\tformattedValue !== sValue ||\n\t\t\terror !== sError ||\n\t\t\tmergedAdditionalInfo !== sAdditionalInfo\n\t\t) {\n\t\t\tupdateState([\n\t\t\t\t{\n\t\t\t\t\tpath: `internalValue`,\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: `value`,\n\t\t\t\t\tvalue: formattedValue,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: `additionalInfo`,\n\t\t\t\t\tvalue: mergedAdditionalInfo,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: `error`,\n\t\t\t\t\tvalue: error,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: `isBlur`,\n\t\t\t\t\tvalue: false,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false\n\t\t\t\t}\n\t\t\t]);\n\t\t\tupdateAdditionalInfoState(mergedAdditionalInfo, updateState);\n\t\t}\n\t}\n};\n\n/**\n * This behavior replaces the withState HOC provided to normalize\n * `dispatch`, `onValueChange`, and `onStagedValueChange`, `value`, `additionalInfo` props and functions for wrapped components.\n *\n *  Options (with defaults):\n *  initialValueProp = 'value',\n *  initialDisplayValueProp = 'displayValue',\n *  cache = true\n * \tparse = passthrough,\n *  format = passthrough,\n *  trackInputChange = false\n *\n *\n * ```js\n * import createWithStateBehavior from '@devsnc/sn-controls-common';\n *\n * createCustomElement('sn-example', {\n *   // ...\n * behaviors: [ createWithStateBehavior({cache: true}) ];\n * });\n * ```\n *\n * @seismicBehavior withStateBehavior\n * @summary Behavior used to provide value and additionalInfo in state.\n */\n\nexport const createWithStateBehavior = (options = {}) => {\n\tconst {\n\t\tinitialValueProp = 'value',\n\t\tinitialDisplayValueProp = 'displayValue',\n\t\tcache = true,\n\t\tparse = passthrough,\n\t\tformat = passthrough,\n\t\ttrackInputChange = false,\n\t\teventBased = true,\n\t\tfieldChangeHandlers = {\n\t\t\tonBlur: NOW_INPUT.INVALID_SET,\n\t\t\tonChange: NOW_INPUT.INPUT\n\t\t},\n\t\tforceRenderOnBlur\n\t} = options;\n\n\tconst parseAndFormat = (value, props, additionalInfo = {}) => {\n\t\tconst { value: parsedValue, error } = parse(value, props, additionalInfo);\n\t\tif (!error) {\n\t\t\tconst { value: formattedValue, error } = format(\n\t\t\t\tparsedValue,\n\t\t\t\tprops,\n\t\t\t\tadditionalInfo\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tparsedValue,\n\t\t\t\tformattedValue,\n\t\t\t\tadditionalInfo,\n\t\t\t\terror\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tparsedValue,\n\t\t\tformattedValue: value,\n\t\t\tadditionalInfo,\n\t\t\terror\n\t\t};\n\t};\n\n\tconst inputChangeIsTracked = state => trackInputChange && !state.inputChanged;\n\n\tconst componentConnectedEffectWithState = ({\n\t\thost,\n\t\tproperties,\n\t\tupdateState\n\t}) => {\n\t\tcomponentConnectedEffect(callbackWithStateBehavior, {\n\t\t\tinitialValueProp,\n\t\t\tinitialDisplayValueProp\n\t\t})({ host, properties, updateState });\n\t\tconst {\n\t\t\tinitialValue: pInitialValue,\n\t\t\tinitialDisplayValue: pInitialDisplayValue\n\t\t} = properties;\n\n\t\tconst initialValue = toString(pInitialValue);\n\t\tconst initialDisplayValue = toString(pInitialDisplayValue);\n\n\t\tconst { value, error, ...additionalInfo } = format(\n\t\t\tinitialValue,\n\t\t\tproperties\n\t\t);\n\n\t\tupdateState([\n\t\t\t{\n\t\t\t\tpath: `internalValue`,\n\t\t\t\tvalue: initialValue,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `value`,\n\t\t\t\tvalue: initialDisplayValue || value,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `additionalInfo`,\n\t\t\t\tvalue: additionalInfo,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `error`,\n\t\t\t\tvalue: error,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `isBlur`,\n\t\t\t\tvalue: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t}\n\t\t]);\n\t\tif (trackInputChange) {\n\t\t\tupdateState({\n\t\t\t\tpath: 'inputChanged',\n\t\t\t\tvalue: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t});\n\t\t}\n\t\tupdateAdditionalInfoState(additionalInfo, updateState);\n\t};\n\n\tconst propertyChangedEffectWithState = ({\n\t\thost,\n\t\taction: {\n\t\t\tpayload: { name, value, previousValue }\n\t\t},\n\t\tstate,\n\t\tproperties,\n\t\tupdateState\n\t}) => {\n\t\tpropertyChangedEffect(callbackWithStateBehavior, {\n\t\t\tinitialValueProp,\n\t\t\tinitialDisplayValueProp\n\t\t})({\n\t\t\thost,\n\t\t\taction: {\n\t\t\t\tpayload: { name, value }\n\t\t\t},\n\t\t\tstate,\n\t\t\tproperties,\n\t\t\tupdateState\n\t\t});\n\t\t// Allow new props to update value state _only_ when the field doesn't\n\t\t// have focus\n\t\tif (name === 'initialValue' && !state.isHandlingInitialValue) {\n\t\t\tconst nextInitialValue = toString(value);\n\t\t\tconst oldInitialValue = toString(previousValue);\n\t\t\thandleInitialValue({\n\t\t\t\trawValue: value,\n\t\t\t\tnewValue: nextInitialValue,\n\t\t\t\toldValue: oldInitialValue,\n\t\t\t\tstate,\n\t\t\t\tproperties,\n\t\t\t\tformat,\n\t\t\t\tupdateState\n\t\t\t});\n\t\t}\n\t};\n\n\tconst callbackAndDispatchEffectWithState = ({\n\t\thost,\n\t\tstate,\n\t\tupdateState,\n\t\tproperties,\n\t\tdispatch,\n\t\taction: { payload }\n\t}) => {\n\t\tconst {\n\t\t\tcallback: originalCallback,\n\t\t\tdispatchPayload: callbackPayload,\n\t\t\tisValueChanged: isOnValueChange\n\t\t} = payload;\n\t\tif (\n\t\t\tisOnValueChange &&\n\t\t\tinputChangeIsTracked(state) &&\n\t\t\tisEqual(callbackPayload.additionalInfo, state.additionalInfo)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tlet dispatchPayload = callbackPayload.fromEvent ? callbackPayload : {};\n\t\tlet isValueChanged = isOnValueChange;\n\t\tlet callback = originalCallback;\n\t\tif (isValueChanged && !callbackPayload.fromEvent) {\n\t\t\tif (callbackPayload.format) {\n\t\t\t\tconst {\n\t\t\t\t\tparsedValue,\n\t\t\t\t\tformattedValue,\n\t\t\t\t\terror,\n\t\t\t\t\tadditionalInfo: newAdditionalInfo\n\t\t\t\t} = parseAndFormat(\n\t\t\t\t\tcallbackPayload.value,\n\t\t\t\t\tproperties,\n\t\t\t\t\tmerge(state.additionalInfo, callbackPayload.additionalInfo),\n\t\t\t\t\tparse,\n\t\t\t\t\tformat\n\t\t\t\t);\n\n\t\t\t\tdispatchPayload = {\n\t\t\t\t\t...dispatchPayload,\n\t\t\t\t\tvalue: parsedValue,\n\t\t\t\t\tdisplayValue: formattedValue,\n\t\t\t\t\terror\n\t\t\t\t};\n\t\t\t\tconst mergedAdditionalInfo = merge(\n\t\t\t\t\tstate.additionalInfo,\n\t\t\t\t\tnewAdditionalInfo\n\t\t\t\t);\n\n\t\t\t\tupdateState([\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: `internalValue`,\n\t\t\t\t\t\tvalue: parsedValue,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: `value`,\n\t\t\t\t\t\tvalue: formattedValue,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: `additionalInfo`,\n\t\t\t\t\t\tvalue: mergedAdditionalInfo,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: `error`,\n\t\t\t\t\t\tvalue: error,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false\n\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tupdateAdditionalInfoState(mergedAdditionalInfo, updateState);\n\t\t\t} else {\n\t\t\t\tdispatchPayload = {\n\t\t\t\t\t...dispatchPayload,\n\t\t\t\t\tvalue: callbackPayload.value,\n\t\t\t\t\tdisplayValue: callbackPayload.value\n\t\t\t\t};\n\t\t\t\tisValueChanged = false; //onStagedValueChange needs to be called, so changed it to false;\n\t\t\t\tcallback = properties.onStagedValueChange;\n\t\t\t\tconst mergedAdditionalInfo = merge(\n\t\t\t\t\tstate.additionalInfo,\n\t\t\t\t\tcallbackPayload.additionalInfo\n\t\t\t\t);\n\n\t\t\t\tupdateState([\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: `internalValue`,\n\t\t\t\t\t\tvalue: callbackPayload.value,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: `value`,\n\t\t\t\t\t\tvalue: callbackPayload.value,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: `additionalInfo`,\n\t\t\t\t\t\tvalue: mergedAdditionalInfo,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false\n\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tupdateAdditionalInfoState(mergedAdditionalInfo, updateState);\n\t\t\t}\n\t\t}\n\t\tcallbackAndDispatchEffect(callbackWithStateBehavior, {\n\t\t\tcache,\n\t\t\tinitialValueProp\n\t\t})({\n\t\t\thost,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tpayload: { callback, dispatchPayload, isValueChanged }\n\t\t});\n\t};\n\n\tconst onChange = ({ value, state, properties, dispatch, updateState }) => {\n\t\tconst { fieldRegex, label } = properties;\n\t\tif (eventBased)\n\t\t\tupdateState([\n\t\t\t\t{\n\t\t\t\t\tpath: `internalValue`,\n\t\t\t\t\tvalue,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: `value`,\n\t\t\t\t\tvalue,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false\n\t\t\t\t}\n\t\t\t]);\n\t\telse updateState({ stagedValue: value });\n\n\t\tif (inputChangeIsTracked(state)) {\n\t\t\tupdateState({\n\t\t\t\tpath: 'inputChanged',\n\t\t\t\tvalue: true,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t});\n\t\t}\n\n\t\tif (fieldRegex && fieldRegex.length > 0) {\n\t\t\tif (value.length === 0) {\n\t\t\t\tupdateState({ messages: [] });\n\t\t\t} else {\n\t\t\t\tconst errorMessages = validateInput(label, value, fieldRegex);\n\t\t\t\tupdateState({\n\t\t\t\t\tmessages: errorMessages,\n\t\t\t\t\tisFieldValid: errorMessages.length === 0\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tdispatch(CALLBACK_AND_DISPATCH_WITH_STATE, {\n\t\t\tcallback: properties.onStagedValueChange,\n\t\t\tdispatchPayload: {\n\t\t\t\tvalue,\n\t\t\t\tfromEvent: true\n\t\t\t},\n\t\t\tisValueChanged: false\n\t\t});\n\t};\n\n\tconst onBlur = ({\n\t\tevent,\n\t\ttargetValue,\n\t\tdispatch,\n\t\tproperties,\n\t\tstate,\n\t\tupdateState\n\t}) => {\n\t\tconst { fieldRegex, label } = properties;\n\n\t\tif (inputChangeIsTracked(state)) return;\n\n\t\tconst {\n\t\t\tparsedValue,\n\t\t\tformattedValue,\n\t\t\terror,\n\t\t\tadditionalInfo: newAdditionalInfo\n\t\t} = parseAndFormat(\n\t\t\ttargetValue,\n\t\t\tproperties,\n\t\t\tstate.additionalInfo,\n\t\t\tparse,\n\t\t\tformat\n\t\t);\n\n\t\tconst mergedAdditionalInfo = merge(state.additionalInfo, newAdditionalInfo);\n\n\t\tupdateState([\n\t\t\t{\n\t\t\t\tpath: `internalValue`,\n\t\t\t\tvalue: parsedValue,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `value`,\n\t\t\t\tvalue: formattedValue,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `additionalInfo`,\n\t\t\t\tvalue: mergedAdditionalInfo,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `error`,\n\t\t\t\tvalue: error,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: `isBlur`,\n\t\t\t\tvalue: true,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t}\n\t\t]);\n\n\t\tupdateAdditionalInfoState(mergedAdditionalInfo, updateState);\n\n\t\tif (trackInputChange) {\n\t\t\tupdateState({\n\t\t\t\tpath: 'inputChanged',\n\t\t\t\tvalue: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t});\n\t\t}\n\n\t\tif (typeof forceRenderOnBlur === 'function') {\n\t\t\tforceRenderOnBlur({ isRender: state.isRender, updateState });\n\t\t}\n\n\t\tlet inlineValidationError = null;\n\n\t\tif (fieldRegex && fieldRegex.length > 0) {\n\t\t\tif (targetValue.length > 0) {\n\t\t\t\tlet validationResult = validateInput(\n\t\t\t\t\tlabel,\n\t\t\t\t\ttargetValue,\n\t\t\t\t\tfieldRegex\n\t\t\t\t)?.[0];\n\n\t\t\t\tif (validationResult) {\n\t\t\t\t\tinlineValidationError = { ...validationResult, type: 'error' };\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdateState({ isFieldValid: null, messages: [] });\n\t\t}\n\n\t\t// Dispatch the callback with updated state\n\t\tdispatch(CALLBACK_AND_DISPATCH_WITH_STATE, {\n\t\t\tcallback: properties.onValueChange,\n\t\t\tisValueChanged: true,\n\t\t\tdispatchPayload: {\n\t\t\t\tevent,\n\t\t\t\terror: error || inlineValidationError,\n\t\t\t\tvalue: parsedValue,\n\t\t\t\tdisplayValue: formattedValue,\n\t\t\t\tfromEvent: true\n\t\t\t},\n\t\t\toptions: { cache: true }\n\t\t});\n\t};\n\n\tconst onChangeEffect = ({\n\t\taction: {\n\t\t\tpayload: { targetValue, encodedValue }\n\t\t},\n\t\tdispatch,\n\t\tstate,\n\t\tproperties,\n\t\tupdateState\n\t}) => {\n\t\tconst value = encodedValue || targetValue;\n\t\tonChange({ value, state, properties, dispatch, updateState });\n\t};\n\n\tconst onBlurEffect = ({\n\t\taction: {\n\t\t\tpayload: { event, targetValue }\n\t\t},\n\t\tdispatch,\n\t\tproperties,\n\t\tstate,\n\t\tupdateState\n\t}) => {\n\t\tonBlur({ event, targetValue, dispatch, properties, state, updateState });\n\t};\n\n\tconst onInputChangeEffect = ({\n\t\taction: {\n\t\t\tpayload: { fieldValue: value }\n\t\t},\n\t\tdispatch,\n\t\tstate,\n\t\tproperties,\n\t\tupdateState\n\t}) => {\n\t\tonChange({ value, state, properties, dispatch, updateState });\n\t};\n\n\tconst onInputBlurEffect = ({\n\t\taction: {\n\t\t\tpayload: { fieldValue: targetValue }\n\t\t},\n\t\tdispatch,\n\t\tproperties,\n\t\tstate,\n\t\tupdateState\n\t}) => {\n\t\tif (isAttrTrue(properties?.readonly)) return;\n\n\t\tconst event = {\n\t\t\ttarget: {\n\t\t\t\ttargetValue\n\t\t\t}\n\t\t};\n\t\tonBlur({ event, targetValue, dispatch, properties, state, updateState });\n\t};\n\n\treturn {\n\t\tname: callbackWithStateBehavior,\n\t\tactionHandlers: {\n\t\t\t[COMPONENT_CONNECTED]: componentConnectedEffectWithState,\n\t\t\t[COMPONENT_PROPERTY_CHANGED]: propertyChangedEffectWithState,\n\t\t\t[CALLBACK_AND_DISPATCH_WITH_STATE]: callbackAndDispatchEffectWithState,\n\t\t\t//TODO: Remove eventBased action handlers and respective callbacks once we internally use NDS for all inputs requiring withState behavior\n\t\t\t...(eventBased\n\t\t\t\t? {\n\t\t\t\t\t\t'WITH_STATE_INTERNAL#ON_CHANGE': onChangeEffect,\n\t\t\t\t\t\t'WITH_STATE_INTERNAL#ON_BLUR': onBlurEffect\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\t[fieldChangeHandlers.onBlur]: onInputBlurEffect,\n\t\t\t\t\t\t[fieldChangeHandlers.onChange]: onInputChangeEffect\n\t\t\t\t\t})\n\t\t}\n\t};\n};\n","import { isAttrTrue } from './utils/field';\n\nexport function checkAutofocus(enabled, ref) {\n\tif (isAttrTrue(enabled) && ref) {\n\t\t// PRB1304655, PRB1309694: Workaround for ShadyDOM bug\n\t\t//\n\t\t// https://github.com/webcomponents/shadydom/issues/46\n\t\t//\n\t\t// In polyfilled environments, we need to flush the ShadyDOM render queue\n\t\t// before attempting to focus. Without it, Firefox ignores the focus()\n\t\t// call, and IE decides to not render anything.\n\t\tif (window.ShadyDOM) {\n\t\t\twindow.ShadyDOM.flush();\n\t\t}\n\n\t\tref.focus();\n\t}\n}\n","/**\n * Util method to wrap helperContent with jsx to restrict width and height of field hint text\n * This is required to set the dimensions for NDS rendered helperContent, and renderer should be snabbdom\n * @param {string|JSX} helperContent\n */\nexport const wrapHelperContent = helperContent => {\n\tif (!helperContent) return helperContent;\n\n\treturn (\n\t\t<div style={{ maxWidth: '300px', maxHeight: '200px' }}>{helperContent}</div>\n\t);\n};\n","import { omit, has } from 'lodash';\nimport { escapeSeismicSpecialSymbols } from './utils/escapeSeismicSpecialSymbols';\nimport * as FIELD_TYPE from './FieldType';\n\nexport function setInitialValue(controlProps) {\n\tconst hasValue = has(controlProps, 'value');\n\tconst hasDisplayValue = has(controlProps, 'displayValue');\n\n\tif (!hasValue && !hasDisplayValue) {\n\t\treturn controlProps;\n\t}\n\n\tconst newControlProps = omit(controlProps, ['value', 'displayValue']);\n\tconst { displayValue, value, isEncrypted, type } = controlProps;\n\n\tif (hasValue) {\n\t\tnewControlProps.initialValue = isEncrypted\n\t\t\t? escapeSeismicSpecialSymbols(displayValue)\n\t\t\t: escapeSeismicSpecialSymbols(value);\n\t}\n\n\tif (hasDisplayValue) {\n\t\tconst initialDisplayValue =\n\t\t\ttype === FIELD_TYPE.PASSWORD ? value : displayValue;\n\t\tnewControlProps.initialDisplayValue =\n\t\t\tescapeSeismicSpecialSymbols(initialDisplayValue);\n\t}\n\n\treturn newControlProps;\n}\n","import track, { markTypes } from '@devsnc/ux-metrics';\nimport { TRACK_RECOMMENDATION_CLICK } from './constants';\n\nconst eventTitle = 'Update Field Value';\n\nexport const trackBehavior = {\n\tactionHandlers: {\n\t\t['TRACK']: {\n\t\t\teffect: coeffects => {\n\t\t\t\tconst {\n\t\t\t\t\taction: {\n\t\t\t\t\t\tpayload: { metaData, additionalOptions = {} }\n\t\t\t\t\t}\n\t\t\t\t} = coeffects;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t!additionalOptions.parentHandling &&\n\t\t\t\t\t\ttrack(coeffects, eventTitle, metaData, {\n\t\t\t\t\t\t\ttype: markTypes.usage\n\t\t\t\t\t\t});\n\n\t\t\t\t\tadditionalOptions.isRecommendation &&\n\t\t\t\t\t\ttrack(coeffects, TRACK_RECOMMENDATION_CLICK, metaData, {\n\t\t\t\t\t\t\ttype: markTypes.usage\n\t\t\t\t\t\t});\n\t\t\t\t}, 0);\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t},\n\t\t['TRACK_DYNAMIC_TRANSLATION_EVENTS']: {\n\t\t\teffect: coeffects => {\n\t\t\t\tconst {\n\t\t\t\t\taction: {\n\t\t\t\t\t\tpayload: { metaData, eventTitle }\n\t\t\t\t\t}\n\t\t\t\t} = coeffects;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttrack(coeffects, eventTitle, metaData, {\n\t\t\t\t\t\ttype: markTypes.usage\n\t\t\t\t\t});\n\t\t\t\t}, 0);\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t},\n\t\t['TRACK_HOTKEY_SET']: {\n\t\t\teffect: coeffects => {\n\t\t\t\tconst {\n\t\t\t\t\taction: {\n\t\t\t\t\t\tpayload: { type }\n\t\t\t\t\t}\n\t\t\t\t} = coeffects;\n\t\t\t\tconst eventName = `KeyboardShortcut.${type}.Invoked`;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttrack(coeffects, eventName, undefined, {\n\t\t\t\t\t\ttype: markTypes.usage\n\t\t\t\t\t});\n\t\t\t\t}, 0);\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t},\n\t\t['TRACK_HOTKEY_SELECTED']: {\n\t\t\teffect: coeffects => {\n\t\t\t\tconst {\n\t\t\t\t\taction: {\n\t\t\t\t\t\tpayload: { type, ...meta }\n\t\t\t\t\t}\n\t\t\t\t} = coeffects;\n\t\t\t\tconst eventName = `KeyboardShortcut.${type}.Selected`;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttrack(coeffects, eventName, meta, {\n\t\t\t\t\t\ttype: markTypes.usage\n\t\t\t\t\t});\n\t\t\t\t}, 0);\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t},\n\t\t['TRACK_FIELD_TYPE_UNSUPPORTED']: {\n\t\t\teffect: coeffects => {\n\t\t\t\tconst { payload } = coeffects.action;\n\t\t\t\tconst eventName = 'FieldtypeNotSupportedinSeismic';\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttrack(coeffects, eventName, payload, {\n\t\t\t\t\t\ttype: markTypes.usage\n\t\t\t\t\t});\n\t\t\t\t}, 0);\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t}\n\t\t\n\t}\n};\n","const DYNAMIC_TRANSLATION_TEXT_TRANSLATED = 'DYNAMIC_TRANSLATION#TEXT_TRANSLATED';\nconst DYNAMIC_TRANSLATION_TEXT_TRANSLATION_REQUESTED = 'DYNAMIC_TRANSLATION#TEXT_TRANSLATION_REQUESTED';\nconst DYNAMIC_TRANSLATION_DETECTED_LANGUAGE = 'DYNAMIC_TRANSLATION#DETECTED_LANGUAGE';\nconst DYNAMIC_TRANSLATION_DETECT_LANGUAGE_REQUESTED = 'DYNAMIC_TRANSLATION#DETECT_LANGUAGE_REQUESTED';\nconst DYNAMIC_TRANSLATION_IS_ENABLED = 'DYNAMIC_TRANSLATION#IS_ENABLED';\nconst DYNAMIC_TRANSLATION_IS_ENABLED_REQUESTED = 'DYNAMIC_TRANSLATION#IS_ENABLED_REQUESTED';\n\nexport const translationActionTypes = {\n\tDYNAMIC_TRANSLATION_TEXT_TRANSLATED,\n\tDYNAMIC_TRANSLATION_TEXT_TRANSLATION_REQUESTED\n};\n\nexport const detectionActionTypes = {\n\tDYNAMIC_TRANSLATION_DETECTED_LANGUAGE,\n\tDYNAMIC_TRANSLATION_DETECT_LANGUAGE_REQUESTED\n};\n\nexport const isEnabledActionTypes = {\n\tDYNAMIC_TRANSLATION_IS_ENABLED,\n\tDYNAMIC_TRANSLATION_IS_ENABLED_REQUESTED\n};\n\nexport const GET_TRANSLATION_URL = '/api/sn_dt/v1/dynamic_translation/get_dynamic_translation';\nexport const GET_DETECTED_LANGUAGE_URL = '/api/sn_dt/v1/dynamic_translation/get_detected_language';\nexport const IS_ENABLED_URL = '/api/sn_dt/v1/dynamic_translation/is_enabled';\nexport const IS_INSTALLED_URL = '/api/now/check_plugin_installation/is_plugin_installed/:pluginId';\n\nexport const DYNAMIC_TRANSLATION_DETECTION_BEHAVIOR = 'DynamicTranslation_DetectionBehavior';\nexport const DYNAMIC_TRANSLATION_TRANSLATION_BEHAVIOR = 'DynamicTranslation_TranslationBehavior';\nexport const DYNAMIC_TRANSLATION_ISENABLED_BEHAVIOR = 'DynamicTranslation_IsEnabledBehavior';","export const getMetaData = metaData => {\n\tif (metaData && metaData.request && metaData.request.data) {\n\t\tconst request = JSON.parse(metaData.request.data);\n\t\tif (request)\n\t\t\treturn request.meta;\n\n\t}\n\treturn undefined;\n};","import {t} from 'sn-translate';\nimport {createHttpEffect} from '@servicenow/ui-effect-http';\nimport {isEnabledActionTypes, IS_ENABLED_URL, IS_INSTALLED_URL} from '../constants';\nimport {getMetaData} from '../utilities';\n\nconst {DYNAMIC_TRANSLATION_IS_ENABLED, DYNAMIC_TRANSLATION_IS_ENABLED_REQUESTED} = isEnabledActionTypes;\n\nfunction _interopRequireDefault(obj) {\n\treturn obj && obj.__esModule ? obj : {\n\t\tdefault: obj\n\t};\n}\n\nvar _pick = require('lodash/pick');\nvar _pick2 = _interopRequireDefault(_pick);\n\nconst CALL_IS_ENABLED = 'CALL_IS_ENABLED';\nconst IS_ENABLED_SUCCESS = 'IS_ENABLED_SUCCESS';\nconst IS_ENABLED_ERROR = 'IS_ENABLED_ERROR';\nconst CHECK_IS_INSTALLED = 'CHECK_IS_INSTALLED';\nconst CHECK_IS_INSTALLED_SUCESS = 'CHECK_IS_INSTALLED_SUCCESS';\n\nconst validateInput = (translator, dispatch, metaData) => {\n\tif ((translator) && (typeof translator !== 'string')) {\n\t\tconst response = {\n\t\t\tcode: '40003',\n\t\t\tmessage: t('Translator (\"translator\" field) is invalid')\n\t\t};\n\t\tdispatch(DYNAMIC_TRANSLATION_IS_ENABLED, {response}, {request: metaData}, true);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nconst getInputValues = payload => {\n\tconst {translator, event} = (payload) ? (0, _pick2.default)(payload, Object.keys(payload)) : new Object();\n\treturn {\n\t\ttranslator, \n\t\tevent\n\t};\n};\n\nconst isEnabled = (action, dispatch) => {\n\tconst inputValues = getInputValues(action.meta.isEnabledRequestedPayload);\n\tif (!validateInput(inputValues.translator, dispatch, action.meta.isEnabledRequestedPayload)) {\n\t\tconst isEnabledRequest = JSON.stringify({\n\t\t\tparms: inputValues,\n\t\t\tmeta: action.meta.isEnabledRequestedPayload\n\t\t});\n\t\tdispatch(CALL_IS_ENABLED, {isEnabledRequest});\n\t}\n};\n\nexport const isEnabledActions = {\n\t[DYNAMIC_TRANSLATION_IS_ENABLED_REQUESTED]: {\n\t\teffect({action, dispatch}) {\n\t\t\tdispatch(CHECK_IS_INSTALLED, {pluginId: 'com.glide.dynamic_translation'}, {isEnabledRequestedPayload: action.payload});\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[CHECK_IS_INSTALLED]: {\n\t\t...createHttpEffect(),\n\t\targs: [IS_INSTALLED_URL, {\n\t\t\theaders: {\n\t\t\t\tAccept: 'application/json'\n\t\t\t},\n\t\t\tpathParams: ['pluginId'],\n\t\t\tbatch: false,\n\t\t\tsuccessActionType: CHECK_IS_INSTALLED_SUCESS, \n\t\t\terrorActionType: IS_ENABLED_ERROR\n\t\t}],\n\t\tstopPropagation: true\n\t},\n\t[CHECK_IS_INSTALLED_SUCESS]: {\n\t\teffect({action, dispatch}) {\n\t\t\tconst {\n\t\t\t\tpayload: {\n\t\t\t\t\tresult: { isInstalled }\n\t\t\t\t}\n\t\t\t} = action;\n\t\t\tif (isInstalled) {\n\t\t\t\tisEnabled(action, dispatch);\n\t\t\t} else {\n\t\t\t\tdispatch(IS_ENABLED_ERROR, {}, {request: undefined}, false);\n\t\t\t}\n\t\t}\n\t},\n\t[CALL_IS_ENABLED]: {\n\t\t...createHttpEffect(),\n\t\targs: [IS_ENABLED_URL, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAccept: 'application/json'\n\t\t\t},\n\t\t\tmethod: 'POST',\n\t\t\tdataParam: 'isEnabledRequest',\n\t\t\tbatch: false,\n\t\t\tsuccessActionType: IS_ENABLED_SUCCESS,\n\t\t\terrorActionType: IS_ENABLED_ERROR\n\t\t}],\n\t\tstopPropagation: true\n\t},\n\t[IS_ENABLED_SUCCESS]: {\n\t\teffect({action, dispatch}) {\n\t\t\tconst response = action.payload.result;\n\t\t\tconst metaData = getMetaData(action.meta);\n\t\t\tdispatch(DYNAMIC_TRANSLATION_IS_ENABLED, {response}, {request: metaData}, false);\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[IS_ENABLED_ERROR]: {\n\t\teffect({action, dispatch}) {\n\t\t\tconst response = {\n\t\t\t\ttranslation: false,\n\t\t\t\tdetection: false\n\t\t\t};\n\t\t\tconst metaData = getMetaData(action.meta);\n\t\t\tdispatch(DYNAMIC_TRANSLATION_IS_ENABLED, {response}, {request: metaData}, false);\n\t\t},\n\t\tstopPropagation: true\n\t}\n};","import {DYNAMIC_TRANSLATION_ISENABLED_BEHAVIOR} from '../constants';\nimport {isEnabledActions} from '../actions/isEnabledActions';\n\n/**\n * A seismic behavior that checks if translation and detection is enabled or not and dispatches actions. \n * Request parameters needs to be populated in action payload and be dispatched with action details as below:\n * \n * @function isEnabledBehavior\n * @example\n * import { isEnabledBehavior, isEnabledActionTypes } from '@servicenow/behavior-dynamic-translation';\n *\n * // Destructuring actions for isEnabled\n * \n * const { \n *  DYNAMIC_TRANSLATION_IS_ENABLED_REQUESTED, // Action to be dispatched\n *  DYNAMIC_TRANSLATION_IS_ENABLED // Action to be handled\n * } = isEnabledActionTypes;\n * \n * // Populating request values in action payload:\n * \n * dispatch(DYNAMIC_TRANSLATION_IS_ENABLED_REQUESTED,\n * {\n *   translator: ''\n * });\n * \n * // Register with component action handlers:\n * {\n *        [DYNAMIC_TRANSLATION_IS_ENABLED]: ({action, dispatch, state}) => {\n *          const {payload, error} = action;\n *          ...\n *        }\n * }\n * \n * @param {String} translator - Verifies whether translation & detection is active or not for the given translator, uses default translator in the absence of this parameter\n */\nexport const isEnabledBehavior = {\n\tname: DYNAMIC_TRANSLATION_ISENABLED_BEHAVIOR,\n\tactionHandlers: {\n\t\t...isEnabledActions\n\t},\n\n};","import {t} from 'sn-translate';\nimport {createHttpEffect} from '@servicenow/ui-effect-http';\nimport {detectionActionTypes, GET_DETECTED_LANGUAGE_URL} from '../constants';\nimport {getMetaData} from '../utilities';\n\nconst {DYNAMIC_TRANSLATION_DETECTED_LANGUAGE, DYNAMIC_TRANSLATION_DETECT_LANGUAGE_REQUESTED} = detectionActionTypes;\n\nfunction _interopRequireDefault(obj) {\n\treturn obj && obj.__esModule ? obj : {\n\t\tdefault: obj\n\t};\n}\n\nvar _pick = require('lodash/pick');\nvar _pick2 = _interopRequireDefault(_pick);\n\nconst CALL_DETECTED_LANGUAGE = 'CALL_DETECTED_LANGUAGE';\nconst DETECTED_LANGUAGE_SUCCESS = 'DETECTED_LANGUAGE_SUCCESS';\nconst DETECTED_LANGUAGE_ERROR = 'DETECTED_LANGUAGE_ERROR';\n\nconst dispatchSuccess = (data, dispatch, metaData) => {\n\tvar response = {\n\t\tdetectedLanguage: data.detectedLanguage,\n\t\talternatives: data.alternatives,\n\t\ttranslator: data.translator\n\t};\n\tdispatch(DYNAMIC_TRANSLATION_DETECTED_LANGUAGE, {response}, {request: metaData}, false);\n};\n\nconst dispatchError = (code, message, dispatch, metaData) => {\n\tconst response = {code, message};\n\tdispatch(DYNAMIC_TRANSLATION_DETECTED_LANGUAGE, {response}, {request: metaData}, true);\n};\n\nconst handleSuccess = ({action, dispatch}) => {\n\tconst response = action.payload.result;\n\tconst metaData = getMetaData(action.meta);\n\tif (!response.isError)\n\t\tdispatchSuccess(response, dispatch, metaData);\n\telse {\n\t\tconst {code, message} = JSON.parse(response.errorMessage);\n\t\tdispatchError(code, message, dispatch, metaData);\n\t}\n};\n\nconst handleError = ({action, dispatch}) => {\n\tconst response = action.payload;\n\tconst metaData = getMetaData(action.meta);\n\tif (response.status === 400)\n\t\tdispatchError('40001', t('Dynamic Translation plugin is not installed'), dispatch, metaData);\n\telse\n\t\tdispatchError('40051', t('Unknown error occurred'), dispatch, metaData);\n};\n\nconst validateInput = (inputValues, dispatch, metaData) => {\n\tconst {msg, parms} = inputValues;\n\tlet isValidInput = true;\n\tif ((!msg) || (typeof msg !== 'string')) {\n\t\tisValidInput = false;\n\t\tdispatchError('40000', t('Text (\"text\" field) is missing or invalid'), dispatch, metaData);\n\t} else if (parms && parms.translator && typeof parms.translator !== 'string') {\n\t\tisValidInput = false;\n\t\tdispatchError('40003', t('Translator (\"translator\" field) is invalid'), dispatch, metaData);\n\t}\n\treturn isValidInput;\n};\n\nconst getInputValues = payload => {\n\tconst {msg, translator, event} = (payload) ? (0, _pick2.default)(payload, Object.keys(payload)) : new Object();\n\n\treturn {\n\t\tmsg,\n\t\tparms: {\n\t\t\ttranslator,\n\t\t\tevent\n\t\t}\n\t};\n};\n\nconst getDetectedLanguage = (action, dispatch) => {\n\tconst inputValues = getInputValues(action.payload);\n\tif (validateInput(inputValues, dispatch, action.payload)) {\n\t\tconst detectionRequest = JSON.stringify({\n\t\t\ttext: inputValues.msg,\n\t\t\tparms: inputValues.parms,\n\t\t\tmeta: action.payload\n\t\t});\n\t\tdispatch(CALL_DETECTED_LANGUAGE, {detectionRequest});\n\t}\n};\n\nexport const detectionActions = {\n\t[DYNAMIC_TRANSLATION_DETECT_LANGUAGE_REQUESTED]: {\n\t\teffect: ({action, dispatch}) => getDetectedLanguage(action, dispatch),\n\t\tstopPropagation: true\n\t},\n\t[CALL_DETECTED_LANGUAGE]: {\n\t\t...createHttpEffect(),\n\t\targs: [GET_DETECTED_LANGUAGE_URL, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAccept: 'application/json'\n\t\t\t},\n\t\t\tmethod: 'POST',\n\t\t\tdataParam: 'detectionRequest',\n\t\t\tbatch: false,\n\t\t\tsuccessActionType: DETECTED_LANGUAGE_SUCCESS,\n\t\t\terrorActionType: DETECTED_LANGUAGE_ERROR\n\t\t}],\n\t\tstopPropagation: true\n\t},\n\t[DETECTED_LANGUAGE_SUCCESS]: {\n\t\teffect: handleSuccess,\n\t\tstopPropagation: true\n\t},\n\t[DETECTED_LANGUAGE_ERROR]: {\n\t\teffect: handleError,\n\t\tstopPropagation: true\n\t}\n};","import {DYNAMIC_TRANSLATION_DETECTION_BEHAVIOR} from '../constants';\nimport {detectionActions} from '../actions/detectionActions';\n\n/**\n * A seismic behavior that detects the language of given text and dispatches actions. \n * Request parameters needs to be populated in action payload and be dispatched with action details as below:\n * \n * @function detectionBehavior\n * @example\n * import { detectionBehavior, detectionActionTypes } from '@servicenow/behavior-dynamic-translation';\n *\n * // Destructuring actions for detect language\n * \n * const { \n *  DYNAMIC_TRANSLATION_DETECT_LANGUAGE_REQUESTED, // Action to be dispatched\n *  DYNAMIC_TRANSLATION_DETECTED_LANGUAGE // Action to be handled\n * } = detectionActionTypes;\n * \n * // Populating request values in action payload:\n * \n * dispatch(DYNAMIC_TRANSLATION_DETECT_LANGUAGE_REQUESTED,\n * {\n *   msg: '',\n *   translator: ''\n * });\n * \n * // Register with component action handlers:\n * {\n *     actionHandlers: {\n *         [DYNAMIC_TRANSLATION_DETECTED_LANGUAGE]: ({action, dispatch, state}) => {\n *          const {payload, error} = action;\n *          ...\n *        }\n *     }\n * }\n * \n * @param {String} msg - Text to identify the language\n * @param {String} translator - Translator to be used to detect the language, uses default translator in the absence of this parameter\n */\nexport const detectionBehavior = {\n\tname: DYNAMIC_TRANSLATION_DETECTION_BEHAVIOR,\n\tactionHandlers: {\n\t\t...detectionActions\n\t}\n};","import {t} from 'sn-translate';\nimport {createHttpEffect} from '@servicenow/ui-effect-http';\nimport {translationActionTypes, GET_TRANSLATION_URL} from '../constants';\nimport {getMetaData} from '../utilities';\n\nconst {DYNAMIC_TRANSLATION_TEXT_TRANSLATED, DYNAMIC_TRANSLATION_TEXT_TRANSLATION_REQUESTED} = translationActionTypes;\n\nfunction _interopRequireDefault(obj) {\n\treturn obj && obj.__esModule ? obj : {\n\t\tdefault: obj\n\t};\n}\n\nvar _pick = require('lodash/pick');\nvar _pick2 = _interopRequireDefault(_pick);\n\nconst CALL_TEXT_TRANSLATED = 'CALL_TEXT_TRANSLATED';\nconst TRANSLATED_TEXT_SUCCESS = 'TRANSLATED_TEXT_SUCCESS';\nconst TRANSLATED_TEXT_ERROR = 'TRANSLATED_TEXT_ERROR';\n\nconst dispatchSuccess = (data, dispatch, metaData) => {\n\tvar response = {\n\t\ttranslations: data.translations,\n\t\ttranslator: data.translator\n\t};\n\tif (data.detectedLanguage)\n\t\tresponse.detectedLanguage = data.detectedLanguage;\n\n\tdispatch(DYNAMIC_TRANSLATION_TEXT_TRANSLATED, {response}, {request: metaData}, false);\n};\n\nconst dispatchError = (code, message, dispatch, metaData) => {\n\tconst response = {code, message};\n\tdispatch(DYNAMIC_TRANSLATION_TEXT_TRANSLATED, {response}, {request: metaData}, true);\n};\n\nconst handleSuccess = ({action, dispatch}) => {\n\tconst response = action.payload.result;\n\tconst metaData = getMetaData(action.meta);\n\tif (!response.isError)\n\t\tdispatchSuccess(response, dispatch, metaData);\n\telse {\n\t\tconst {code, message} = JSON.parse(response.errorMessage);\n\t\tdispatchError(code, message, dispatch, metaData);\n\t}\n};\n\nconst handleError = ({action, dispatch}) => {\n\tconst response = action.payload;\n\tconst metaData = getMetaData(action.meta);\n\tif (response.status === 400)\n\t\tdispatchError('40001', t('Dynamic Translation plugin is not installed'), dispatch, metaData);\n\telse\n\t\tdispatchError('40051', t('Unknown error occurred'), dispatch, metaData);\n};\n\nconst validateInput = (inputValues, dispatch, metaData) => {\n\tconst {msg, parms} = inputValues;\n\tlet isValidInput = true;\n\tif ((!msg) || (typeof msg !== 'string')) {\n\t\tisValidInput = false;\n\t\tdispatchError('40000', t('Text (\"text\" field) is missing or invalid'), dispatch, metaData);\n\t} else if (parms) {\n\t\tif ((parms.translator) && (typeof parms.translator !== 'string')) {\n\t\t\tisValidInput = false;\n\t\t\tdispatchError('40003', t('Translator (\"translator\" field) is invalid'), dispatch, metaData);\n\t\t} else if ((parms.additionalParameters) && (!Array.isArray(parms.additionalParameters))) {\n\t\t\tisValidInput = false;\n\t\t\tdispatchError('40006', t('Additional parameters are invalid'), dispatch, metaData);\n\t\t}\n\t}\n\treturn isValidInput;\n};\n\nconst getInputValues = payload => {\n\tconst {\n\t\tmsg,\n\t\ttranslator,\n\t\tsourceLanguage,\n\t\ttargetLanguages,\n\t\tadditionalParameters,\n\t\tevent\n\t} =\n\t\t(payload) ? (0, _pick2.default)(payload, Object.keys(payload)) : new Object();\n\n\treturn {\n\t\tmsg,\n\t\tparms: {\n\t\t\ttranslator,\n\t\t\tsourceLanguage,\n\t\t\ttargetLanguages,\n\t\t\tadditionalParameters,\n\t\t\tevent\n\t\t}\n\t};\n};\n\nconst getTranslatedText = (action, dispatch) => {\n\tconst inputValues = getInputValues(action.payload);\n\tif (validateInput(inputValues, dispatch, action.payload)) {\n\t\tconst translationRequest = JSON.stringify({\n\t\t\ttextToTranslate: inputValues.msg,\n\t\t\tparms: inputValues.parms,\n\t\t\tmeta: action.payload\n\t\t});\n\t\tdispatch(CALL_TEXT_TRANSLATED, {translationRequest});\n\t}\n};\n\nexport const translationActions = {\n\t[DYNAMIC_TRANSLATION_TEXT_TRANSLATION_REQUESTED]: {\n\t\teffect: ({action, dispatch}) => getTranslatedText(action, dispatch),\n\t\tstopPropagation: true\n\t},\n\t[CALL_TEXT_TRANSLATED]: {\n\t\t...createHttpEffect(),\n\t\targs: [GET_TRANSLATION_URL, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAccept: 'application/json'\n\t\t\t},\n\t\t\tmethod: 'POST',\n\t\t\tdataParam: 'translationRequest',\n\t\t\tbatch: false,\n\t\t\tsuccessActionType: TRANSLATED_TEXT_SUCCESS,\n\t\t\terrorActionType: TRANSLATED_TEXT_ERROR\n\t\t}],\n\t\tstopPropagation: true\n\t},\n\t[TRANSLATED_TEXT_SUCCESS]: {\n\t\teffect: handleSuccess,\n\t\tstopPropagation: true\n\t},\n\t[TRANSLATED_TEXT_ERROR]: {\n\t\teffect: handleError,\n\t\tstopPropagation: true\n\t}\n};","import {DYNAMIC_TRANSLATION_TRANSLATION_BEHAVIOR} from '../constants';\nimport {translationActions} from '../actions/translationActions';\n\n/**\n * A seismic behavior that translates text to multiple languages using dynamic translations and dispatches actions. \n * Request parameters needs to be populated in action payload and be dispatched with action details as below:\n *  \n * @function translationBehavior\n * @example\n * import { translationBehavior, translationActionTypes } from '@servicenow/behavior-dynamic-translation';\n *\n * // Destructuring actions for translation\n * \n * const { \n *  DYNAMIC_TRANSLATION_TEXT_TRANSLATION_REQUESTED, // Action to be dispatched\n *  DYNAMIC_TRANSLATION_TEXT_TRANSLATED // Action to be handled\n * } = translationActionTypes;\n * \n * // Populating request values in action payload:\n * \n * dispatch(DYNAMIC_TRANSLATION_TEXT_TRANSLATION_REQUESTED,\n * {\n *   msg: '',\n *   translator: '',\n *   sourceLanguage: '',\n *   targetLanguages: [],\n *   additionalParameters: []\n * });\n * \n * // Register with component action handlers:\n * {\n *     actionHandlers: {\n *         [DYNAMIC_TRANSLATION_TEXT_TRANSLATED]: ({action, dispatch, state}) => {\n *          const {payload, error} = action;\n *          ...\n *        }\n *     }\n * }\n * \n * @param {String} msg - Text to be translated\n * @param {String} translator - Uses the translator specified by the user, uses default translator in the absence of this parameter\n * @param {String} sourceLanguage - Source language code of the text. Uses machine translator to detect source language in the absence of this parameter\n * @param {Object} targetLanguages - Array of strings containing language codes to which the text needs to be translated (ex: ['fr','it']). Uses current session's user language in absence of this parameter\n * @param {Object} additionalParameters - Array of JSON objects containing additional context parameters (ex: [{'parameter_name': 'textType', 'parameter_value': 'html'}]).\n */\nexport const translationBehavior = {\n\tname: DYNAMIC_TRANSLATION_TRANSLATION_BEHAVIOR,\n\tactionHandlers: {\n\t\t...translationActions\n\t}\n};","import { t } from 'sn-translate';\n\nexport const TRANSLATED_BY = credit => t('Translated by {0}', credit);\nexport const TRANSLATING = t('Translating...');\nexport const UNABLE_TO_TRANSLATE = t('Unable to translate. ');\nexport const MISSING_CREDENTIALS = t(\n\t'Credentials are missing or invalid. Contact your administrator.'\n);\nexport const MAX_LENGTH_ERROR_MSG = t('Text has exceeded the maximum length.');\nexport const LANG_NOT_SUPPORTED = t(\n\t'Text cannot be translated to your preferred language.'\n);\nexport const NO_TEXT = t('No text to translate.');\nexport const FIELD_VALUE_CHANGED = t('The field value has changed. ');\nexport const RETRANSLATE = t('Retranslate');\nexport const TRY_AGAIN = t('Try again');\nexport const CLOSE = t('close');\nexport const PREFERRED_LANGUAGE = t(\n\t'This content is written in your preferred language. No need to translate.'\n);\nexport const TRANSLATE = t('Translate');\nexport const NOW_TEXT_LINK_CLICKED = 'NOW_TEXT_LINK#CLICKED';\nexport const NOW_BUTTON_ICONIC_CLICKED = 'NOW_BUTTON_ICONIC#CLICKED';\nexport const FORM_CLICK_WORKSPACE = 'Form Click - Workspace';\n\nexport const METRICS_TRANSLATE_BUTTON_CLICKED = 'Translate Button Clicked';\nexport const METRICS_CLOSE_TRANSLATED_TEXT_PANEL =\n\t'Close Translated Text Panel';\nexport const METRICS_TRYING_TRANSLATION_AGAIN = 'Trying Translation Again';\nexport const METRICS_RETRANSLATE_TEXT_REQUESTED = 'Re-Translate Text Requested';\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {dangerouslyCreateElementFromString} from '@servicenow/ui-renderer-snabbdom';\nimport toString from 'lodash/toString';\nimport DOMPurify from 'dompurify';\nimport {domPurifyConfig} from '@servicenow/library-enhanced-utils';\n\nimport packageInfo from '../package.json';\nconst {name, version} = packageInfo;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nconst view = ({properties: {html}}) => {\n\tconst htmlStr = toString(html);\n\tif (!htmlStr) {\n\t\treturn null;\n\t}\n\n\tconst sanitizedHtml = DOMPurify.sanitize(htmlStr, domPurifyConfig);\n\n\t// `dangerouslyCreateElementFromString` will return an object for only the first element\n\t// in the string, which means if `htmlStr` consists of multiple siblings,\n\t// only the first is returned. Wrapping in a root <div> to ensure all\n\t// siblings are returned (as that <div>'s children array).\n\treturn dangerouslyCreateElementFromString(`<div>${sanitizedHtml}</div>`)\n\t\t.children;\n};\n\n/**\n * Renders HTML content as provided. You should only use this component in UI Builder.\n * Note: This component removes `<script>` tags, inline JavaScript, and other elements that might pose security exploits.\n * If you need to include this type of functionality in an interface other than UI Builder, use JSX or content slots.\n *\n * ```jsx\n * <now-rich-text html=\"<strong>Hello!</strong> <a href='url'>Click me!</a>\" />\n * ```\n *\n * @seismicElement now-rich-text\n * @summary Renders HTML content.\n * @uib.label Rich text\n * @uib.icon rich-text\n * @uib.description Renders custom HTML\n * @uib.category primitives\n * @uib.associatedTypes global.core, global.dashboard, global.landing-page\n * @uib.properties html\n */\ncreateEnhancedElement('now-rich-text', {\n\tpresentational: true,\n\tproperties: {\n\t\t/**\n\t\t * HTML content to render.\n\t\t * @type {string}\n\t\t * @uib.label HTML\n\t\t * @uib.description HTML content to render.\n\t\t * @uib.required\n\t\t * @uib.fieldType html\n\t\t * @uib.defaultValue <p>The world works with ServiceNow</p>\n\t\t * @uib.translatable true\n\t\t */\n\t\thtml: {required: true, schema: {type: 'string'}},\n\t},\n\tview,\n});\n","import { actionTypes, declarativeOperations } from '@servicenow/ui-core';\nimport { toString } from 'lodash';\nimport {\n\ttranslationActionTypes,\n\ttranslationBehavior,\n\tisEnabledActionTypes,\n\tisEnabledBehavior\n} from '@servicenow/behavior-dynamic-translation';\nimport {\n\tCLOSE,\n\tFIELD_VALUE_CHANGED,\n\tLANG_NOT_SUPPORTED,\n\tMAX_LENGTH_ERROR_MSG,\n\tMISSING_CREDENTIALS,\n\tNOW_BUTTON_ICONIC_CLICKED,\n\tNOW_TEXT_LINK_CLICKED,\n\tNO_TEXT,\n\tPREFERRED_LANGUAGE,\n\tRETRANSLATE,\n\tTRANSLATED_BY,\n\tTRANSLATING,\n\tTRY_AGAIN,\n\tUNABLE_TO_TRANSLATE,\n\tTRANSLATE,\n\tFORM_CLICK_WORKSPACE,\n\tMETRICS_TRANSLATE_BUTTON_CLICKED,\n\tMETRICS_RETRANSLATE_TEXT_REQUESTED,\n\tMETRICS_CLOSE_TRANSLATED_TEXT_PANEL,\n\tMETRICS_TRYING_TRANSLATION_AGAIN\n} from './constants';\nimport '@servicenow/now-text-link';\nimport '@servicenow/now-rich-text';\n\nconst { COMPONENT_BOOTSTRAPPED } = actionTypes;\n\nconst {\n\tDYNAMIC_TRANSLATION_TEXT_TRANSLATED,\n\tDYNAMIC_TRANSLATION_TEXT_TRANSLATION_REQUESTED\n} = translationActionTypes;\n\nconst {\n\tDYNAMIC_TRANSLATION_IS_ENABLED_REQUESTED,\n\tDYNAMIC_TRANSLATION_IS_ENABLED\n} = isEnabledActionTypes;\n\nconst trackDynamicTranslationEvents = (eventTitle, metaData, dispatch) => {\n\tdispatch('TRACK_DYNAMIC_TRANSLATION_EVENTS', {\n\t\teventTitle,\n\t\tmetaData\n\t});\n};\n\nexport const translatedInputEffect = ({ action, updateState }) => {\n\tconst { payload, error } = action;\n\tlet translatedState = [\n\t\t{\n\t\t\tpath: 'translatedText.isRetranslate',\n\t\t\tvalue: false,\n\t\t\toperation: declarativeOperations.SET\n\t\t}\n\t];\n\tconst translatedResponse = payload.response;\n\tif (!error && translatedResponse) {\n\t\tconst translationsObj = translatedResponse.translations[0];\n\t\tconst detectedLang = translatedResponse.detectedLanguage?.code;\n\t\tconst targetLang = translationsObj.targetLanguage;\n\t\tif (detectedLang !== targetLang) {\n\t\t\ttranslatedState.push(\n\t\t\t\t{\n\t\t\t\t\tpath: 'translatedText.text',\n\t\t\t\t\tvalue: translationsObj.translatedText,\n\t\t\t\t\toperation: declarativeOperations.SET\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'translatedText.currentStatus',\n\t\t\t\t\tvalue: TRANSLATED_BY(translatedResponse.translator),\n\t\t\t\t\toperation: declarativeOperations.SET\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'translatedText.showRetry',\n\t\t\t\t\tvalue: false,\n\t\t\t\t\toperation: declarativeOperations.SET\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'translatedText.language',\n\t\t\t\t\tvalue: detectedLang,\n\t\t\t\t\toperation: declarativeOperations.SET\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\ttranslatedState.push(\n\t\t\t\t{\n\t\t\t\t\tpath: 'translatedText.currentStatus',\n\t\t\t\t\tvalue: PREFERRED_LANGUAGE,\n\t\t\t\t\toperation: declarativeOperations.SET\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'translatedText.text',\n\t\t\t\t\tvalue: null,\n\t\t\t\t\toperation: declarativeOperations.SET\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'translatedText.showRetry',\n\t\t\t\t\tvalue: false,\n\t\t\t\t\toperation: declarativeOperations.SET\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} else {\n\t\tconst errorCode = translatedResponse?.code;\n\t\tlet errorMessage = '';\n\t\tlet showRetry = false;\n\t\tswitch (errorCode) {\n\t\t\tcase '40052':\n\t\t\t\terrorMessage = MAX_LENGTH_ERROR_MSG;\n\t\t\t\tbreak;\n\t\t\tcase '40055':\n\t\t\t\terrorMessage = MISSING_CREDENTIALS;\n\t\t\t\tbreak;\n\t\t\tcase '40053':\n\t\t\tcase '40054':\n\t\t\tcase '40056':\n\t\t\t\terrorMessage = LANG_NOT_SUPPORTED;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\terrorMessage = UNABLE_TO_TRANSLATE;\n\t\t\t\tshowRetry = true;\n\t\t}\n\n\t\ttranslatedState.push(\n\t\t\t{\n\t\t\t\tpath: 'translatedText.currentStatus',\n\t\t\t\tvalue: errorMessage,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'translatedText.text',\n\t\t\t\tvalue: null,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'translatedText.showRetry',\n\t\t\t\tvalue: showRetry,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t}\n\t\t);\n\t}\n\n\tupdateState(translatedState);\n};\n\nexport const handleDynamicTranslationClick = (\n\tprops,\n\tdispatch,\n\tupdateState,\n\tisHTML\n) => {\n\t// Get the current text from the Input and call Translate service here\n\tlet translatedState = [\n\t\t{\n\t\t\tpath: 'translatedText.text',\n\t\t\tvalue: null,\n\t\t\toperation: declarativeOperations.SET\n\t\t},\n\t\t{\n\t\t\tpath: 'translatedText.isRetranslate',\n\t\t\tvalue: false,\n\t\t\toperation: declarativeOperations.SET\n\t\t},\n\t\t{\n\t\t\tpath: 'translatedText.showRetry',\n\t\t\tvalue: false,\n\t\t\toperation: declarativeOperations.SET\n\t\t}\n\t];\n\tif (!props.value) {\n\t\ttranslatedState.push({\n\t\t\tpath: 'translatedText.currentStatus',\n\t\t\tvalue: NO_TEXT,\n\t\t\toperation: declarativeOperations.SET\n\t\t});\n\t} else {\n\t\tconst msg = toString(props.value);\n\t\tconst dtsRequestBody = {\n\t\t\tmsg,\n\t\t\tevent: {\n\t\t\t\tsource: 'behaviourAPI',\n\t\t\t\teventName: FORM_CLICK_WORKSPACE,\n\t\t\t\ttableName: props.referringTable,\n\t\t\t\tfieldName: props.name,\n\t\t\t\tfieldType: props.fieldType\n\t\t\t}\n\t\t};\n\t\tif (isHTML) {\n\t\t\tdtsRequestBody.additionalParameters = [\n\t\t\t\t{ parameterName: 'texttype', parameterValue: 'html' }\n\t\t\t];\n\t\t}\n\t\tdispatch(DYNAMIC_TRANSLATION_TEXT_TRANSLATION_REQUESTED, dtsRequestBody);\n\t\ttranslatedState.push(\n\t\t\t{\n\t\t\t\tpath: 'translatedText.previousText',\n\t\t\t\tvalue: msg,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'translatedText.currentStatus',\n\t\t\t\tvalue: TRANSLATING,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t}\n\t\t);\n\t}\n\tupdateState(translatedState);\n};\n\nexport const dynamicTranslationBehaviour = {\n\tactionHandlers: {\n\t\t[DYNAMIC_TRANSLATION_TEXT_TRANSLATED]: {\n\t\t\teffect: translatedInputEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[DYNAMIC_TRANSLATION_IS_ENABLED]: ({ action, updateState, host }) => {\n\t\t\tconst { payload } = action;\n\t\t\tconst isTranslationEnabled = payload?.response?.translation;\n\t\t\tupdateState([\n\t\t\t\t{\n\t\t\t\t\tpath: 'isTranslationEnabled',\n\t\t\t\t\tvalue: payload?.response?.translation,\n\t\t\t\t\toperation: declarativeOperations.SET\n\t\t\t\t}\n\t\t\t]);\n\t\t\tif (host.getProperty('type') === 'textarea' && isTranslationEnabled) {\n\t\t\t\tconst nowTextArea = host.shadowRoot.querySelector('now-textarea');\n\t\t\t\tconst nativeTextArea = nowTextArea.shadowRoot.querySelector('textarea');\n\t\t\t\tnativeTextArea.style.paddingRight = '1.5rem';\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect({ dispatch, properties }) {\n\t\t\t\tconst { dictionaryAttributes = {} } = properties;\n\t\t\t\tconst dynamicTranslationEnabled =\n\t\t\t\t\tdictionaryAttributes['dynamicTranslationEnabled'];\n\t\t\t\tif (dynamicTranslationEnabled) {\n\t\t\t\t\tdispatch(DYNAMIC_TRANSLATION_IS_ENABLED_REQUESTED, {\n\t\t\t\t\t\ttranslator: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[NOW_BUTTON_ICONIC_CLICKED]: {\n\t\t\teffect({ updateState, dispatch, properties, state }) {\n\t\t\t\ttrackDynamicTranslationEvents(\n\t\t\t\t\tMETRICS_CLOSE_TRANSLATED_TEXT_PANEL,\n\t\t\t\t\t{\n\t\t\t\t\t\trecord: properties.referringRecordId,\n\t\t\t\t\t\tfieldType: properties.fieldType,\n\t\t\t\t\t\tlanguage: state.translatedText?.language\n\t\t\t\t\t},\n\t\t\t\t\tdispatch\n\t\t\t\t);\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'translatedText',\n\t\t\t\t\tvalue: null,\n\t\t\t\t\toperation: declarativeOperations.SET\n\t\t\t\t});\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[NOW_TEXT_LINK_CLICKED]: {\n\t\t\teffect({ dispatch, updateState, properties, state }) {\n\t\t\t\tconst props = {\n\t\t\t\t\tvalue: properties.initialValue || state.value\n\t\t\t\t};\n\t\t\t\tconst recordMetics = {\n\t\t\t\t\trecord: properties.referringRecordId,\n\t\t\t\t\tfieldType: properties.fieldType,\n\t\t\t\t\tlanguage: state.translatedText.language\n\t\t\t\t};\n\n\t\t\t\thandleDynamicTranslationClick(\n\t\t\t\t\tprops,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tupdateState,\n\t\t\t\t\t!properties.initialValue\n\t\t\t\t);\n\t\t\t\tif (state.translatedText.showRetry) {\n\t\t\t\t\ttrackDynamicTranslationEvents(\n\t\t\t\t\t\tMETRICS_TRYING_TRANSLATION_AGAIN,\n\t\t\t\t\t\trecordMetics,\n\t\t\t\t\t\tdispatch\n\t\t\t\t\t);\n\t\t\t\t} else if (state.translatedText.isRetranslate) {\n\t\t\t\t\ttrackDynamicTranslationEvents(\n\t\t\t\t\t\tMETRICS_RETRANSLATE_TEXT_REQUESTED,\n\t\t\t\t\t\trecordMetics,\n\t\t\t\t\t\tdispatch\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t}\n\t}\n};\n\nexport const handleDynamicTranslationBlur = (\n\tinputValue,\n\tupdateState,\n\ttranslatedText = {}\n) => {\n\tconst previousTranslatedText = translatedText.previousText;\n\tconst currentTranslationStatus = translatedText.currentStatus;\n\tif (currentTranslationStatus && previousTranslatedText !== inputValue) {\n\t\tupdateState([\n\t\t\t{\n\t\t\t\tpath: 'translatedText.currentStatus',\n\t\t\t\tvalue: FIELD_VALUE_CHANGED,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'translatedText.isRetranslate',\n\t\t\t\tvalue: true,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'translatedText.previousText',\n\t\t\t\tvalue: inputValue,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'translatedText.text',\n\t\t\t\tvalue: null,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'translatedText.showRetry',\n\t\t\t\tvalue: false,\n\t\t\t\toperation: declarativeOperations.SET\n\t\t\t}\n\t\t]);\n\t}\n};\n\nconst renderTextLink = label => {\n\treturn (\n\t\t<now-text-link\n\t\t\tlabel={label}\n\t\t\thref=\"javascript:;\"\n\t\t\tvariant=\"secondary\"\n\t\t\tconfigAria={{\n\t\t\t\trole: 'button'\n\t\t\t}}\n\t\t/>\n\t);\n};\n\nexport const renderTranslatedText = (translatedText, isHTML = false) => {\n\tif (translatedText) {\n\t\treturn (\n\t\t\t<div className=\"sn-record-dts\" size=\"md\" hideShadow=\"true\">\n\t\t\t\t<div className=\"sn-record-dts-header\">\n\t\t\t\t\t<div className=\"sn-record-dts-translator\">\n\t\t\t\t\t\t{translatedText.currentStatus && (\n\t\t\t\t\t\t\t<i>\n\t\t\t\t\t\t\t\t{translatedText.currentStatus}\n\t\t\t\t\t\t\t\t{translatedText.isRetranslate && renderTextLink(RETRANSLATE)}\n\t\t\t\t\t\t\t\t{translatedText.showRetry && renderTextLink(TRY_AGAIN)}\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\ticon=\"close-fill\"\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tbare={true}\n\t\t\t\t\t\thidePadding={true}\n\t\t\t\t\t\ttooltip-content={CLOSE}\n\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\trole: 'button'\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t{translatedText?.text ? (\n\t\t\t\t\t<div className=\"sn-record-dts-response\">\n\t\t\t\t\t\t{!isHTML ? (\n\t\t\t\t\t\t\ttranslatedText.text\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<now-rich-text\n\t\t\t\t\t\t\t\tid=\"richTextId-component-dts\"\n\t\t\t\t\t\t\t\thtml={translatedText.text}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}{' '}\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t[]\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n};\n\nexport const renderTranslateIcon = (props, dispatch, updateState, isHTML) => {\n\treturn (\n\t\t<sn-record-control\n\t\t\ticon=\"translated-text-fill\"\n\t\t\ttooltip={TRANSLATE}\n\t\t\tslot=\"controls\"\n\t\t\tonClick={() => {\n\t\t\t\thandleDynamicTranslationClick(props, dispatch, updateState, isHTML);\n\t\t\t\t// language here will be null , Since it is still not identified\n\t\t\t\ttrackDynamicTranslationEvents(\n\t\t\t\t\tMETRICS_TRANSLATE_BUTTON_CLICKED,\n\t\t\t\t\t{\n\t\t\t\t\t\trecord: props.referringRecordId,\n\t\t\t\t\t\tfieldType: props.fieldType,\n\t\t\t\t\t\tlanguage: null\n\t\t\t\t\t},\n\t\t\t\t\tdispatch\n\t\t\t\t);\n\t\t\t}}\n\t\t/>\n\t);\n};\n\nexport { translationBehavior, isEnabledBehavior };\n","import { t } from 'sn-translate';\n\nexport const DEFAULT_BUTTON_PROPS = {\n\tsize: 'sm',\n\tvariant: 'primary',\n\tlabel: '',\n\ticon: 'ai-sparkle-outline',\n\ttooltipContent: t('Use Now Assist to generate notes'),\n\thideButtonOnDialog: true,\n\tstrictlyUseDefaultPresetAction: false,\n\tisCaretForDropdown: false\n};\nexport const DEFAULT_RECOMMENDATION_DIALOG_PROPS = {\n\tinsertButtonLabel: t('Insert'),\n\trefineButtonLabel: t('Refine'),\n\theight: 350,\n\twidth: 400\n};\nexport const WWNA_INSERT_RECOMMENDATION_CLICKED =\n\t'SN_WWNA#INSERT_RECOMMENDATION_CLICKED';\nexport const WWNA_RECOMMENDATION_DIALOG_CLOSED =\n\t'SN_WWNA#RECOMMENDATION_DIALOG_CLOSED';\nexport const WWNA_PRESET_ACTION_CLICKED = 'SN_WWNA#PRESET_ACTION_CLICKED';\nexport const NOW_TEXTAREA_INPUT = 'NOW_TEXTAREA#INPUT';\nexport const NOW_TEXTAREA_SELECTION_CHANGED = 'NOW_TEXTAREA#SELECTION_CHANGED';\nexport const NOW_RECORD_NOWASSIST_SHOW_HIDE_NOWASSIST =\n\t'SN_RECORD_NOWASSIST#SHOW_HIDE_NOWASSIST';\n\nexport const RESOLUTION_TRIGGER_ACTION_ID = 'ad528f2ac34c1e106546baddd4013174';\n","export const sanitizeNACMValue = value => {\n\t// from wwna richtext editor we would get the value with <br> tags.\n\treturn value.replace(/<br\\s*\\/?>/gi, '\\n');\n};\n\nexport const removeAllWhitespace = text => {\n\tif (!text) return '';\n\treturn text.replace(/\\s/g, '');\n};\n\nexport const textHasMinWordCount = (text, minWords) => {\n\tif (!removeAllWhitespace(text)) return false;\n\tconst words = text.trim().split(/\\s+/);\n\tif (words?.length === 1) return false;\n\tconst filteredWords = words.filter(word => word.trim() !== '');\n\treturn filteredWords.length > minWords;\n};\n\nexport const replaceSelectedText = (\n\tinitialValue,\n\tnacmValue,\n\tselectionStart,\n\tselectionEnd\n) => {\n\tif (selectionStart === selectionEnd) return nacmValue;\n\treturn (\n\t\tinitialValue.slice(0, selectionStart) +\n\t\tnacmValue +\n\t\tinitialValue.slice(selectionEnd)\n\t);\n};\n\nexport const getCursorPositionAfterInsertion = (\n\ttextWithInsertion,\n\tinsertedText\n) => {\n\tconst insertionIndex = textWithInsertion.indexOf(insertedText);\n\tif (insertionIndex === -1) return textWithInsertion.length;\n\treturn insertionIndex + insertedText.length;\n};\n\nexport const getNowTextarea = hostElement => {\n\tconst textareaParent = hostElement?.shadowRoot?.querySelector('now-textarea');\n\treturn textareaParent.shadowRoot?.querySelector('textarea');\n};\n\nexport const updateTextareaElementSelection = (\n\thostElement,\n\tselectionStart,\n\tselectionEnd\n) => {\n\tconst textarea = getNowTextarea(hostElement);\n\t// set selection on textarea for UI16 feature parity\n\ttextarea.setSelectionRange(selectionStart, selectionEnd);\n};\n","import {\n\tDEFAULT_BUTTON_PROPS,\n\tDEFAULT_RECOMMENDATION_DIALOG_PROPS\n} from './constants';\nimport { removeAllWhitespace, textHasMinWordCount } from './utils';\n\nexport const getNACMConfigDetails = (\n\tinputFocused,\n\twwnaDialogOpened,\n\tisUserTriggered,\n\tselectedText,\n\tdraftedText,\n\tminWordCount\n) => {\n\t// ALWAYS HIDE WHEN OUT OF FOCUS\n\tif (!inputFocused) {\n\t\treturn {\n\t\t\tisComponentVisible: wwnaDialogOpened,\n\t\t\tcomponentSelectedText: ''\n\t\t};\n\t}\n\n\t// ANY TRIGGER SETTING & MIN WORDS SELECTED\n\tif (selectedText && textHasMinWordCount(selectedText, minWordCount)) {\n\t\treturn {\n\t\t\tisComponentVisible: true,\n\t\t\tcomponentSelectedText: selectedText\n\t\t};\n\t}\n\n\t// ANY TRIGGER & SUFFICIENT DRAFTED TEXT\n\tif (\n\t\tdraftedText &&\n\t\ttextHasMinWordCount(draftedText, minWordCount) &&\n\t\t!selectedText\n\t) {\n\t\treturn {\n\t\t\tisComponentVisible: true,\n\t\t\tcomponentSelectedText: draftedText\n\t\t};\n\t}\n\n\t// IS USER TRIGGERED & NO TEXT INPUT (default case)\n\tif (isUserTriggered && !removeAllWhitespace(draftedText)) {\n\t\treturn {\n\t\t\tisComponentVisible: true,\n\t\t\tcomponentSelectedText: ''\n\t\t};\n\t}\n\n\treturn {\n\t\tisComponentVisible: false,\n\t\tcomponentSelectedText: ''\n\t};\n};\nexport const renderNowAssistContextMenu = (\n\treferringRecordId,\n\treferringTable,\n\tname,\n\tnacmConfig,\n\tselectedText,\n\tdraftedText,\n\tisUserTriggered,\n\tinputFocused,\n\twwnaDialogOpened\n) => {\n\tconst { contextMenu = {}, minWordCount } = nacmConfig;\n\tconst { isComponentVisible, componentSelectedText } = getNACMConfigDetails(\n\t\tinputFocused,\n\t\twwnaDialogOpened,\n\t\tisUserTriggered,\n\t\tselectedText,\n\t\tdraftedText,\n\t\tminWordCount\n\t);\n\n\treturn (\n\t\tisComponentVisible && (\n\t\t\t<sn-wwna\n\t\t\t\tslot=\"caret\"\n\t\t\t\tid=\"sn-record-nowassist\"\n\t\t\t\tdocumentTableName={referringTable}\n\t\t\t\tdocumentSysId={referringRecordId}\n\t\t\t\twwnaComponentId={name}\n\t\t\t\tnacmConfig={contextMenu}\n\t\t\t\tbuttonProps={DEFAULT_BUTTON_PROPS}\n\t\t\t\trecommendationDialogProps={DEFAULT_RECOMMENDATION_DIALOG_PROPS}\n\t\t\t\tpayload={{\n\t\t\t\t\ttable: referringTable,\n\t\t\t\t\tsysId: referringRecordId,\n\t\t\t\t\tfieldName: name\n\t\t\t\t}}\n\t\t\t\tselectedText={componentSelectedText}\n\t\t\t\tdraftedText={draftedText}\n\t\t\t/>\n\t\t)\n\t);\n};\n","import { CALLBACK_AND_DISPATCH_WITH_STATE } from '@devsnc/sn-controls-common';\nimport { actionTypes } from '@servicenow/ui-core';\n\nimport {\n\tNOW_TEXTAREA_SELECTION_CHANGED,\n\tWWNA_INSERT_RECOMMENDATION_CLICKED,\n\tNOW_RECORD_NOWASSIST_SHOW_HIDE_NOWASSIST,\n\tRESOLUTION_TRIGGER_ACTION_ID,\n\tNOW_TEXTAREA_INPUT,\n\tWWNA_RECOMMENDATION_DIALOG_CLOSED,\n\tWWNA_PRESET_ACTION_CLICKED\n} from './constants';\nimport {\n\tgetCursorPositionAfterInsertion,\n\tgetNowTextarea,\n\treplaceSelectedText,\n\tsanitizeNACMValue,\n\tupdateTextareaElementSelection\n} from './utils';\n\nconst { COMPONENT_BOOTSTRAPPED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nconst nowAssistActionsBehavior = {\n\tname: 'nowAssistActionsBehavior',\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: async ({\n\t\t\tproperties: { nowAssistConfig: { contextMenu } = {} },\n\t\t\tupdateState\n\t\t}) => {\n\t\t\tif (contextMenu && Object.keys(contextMenu)?.length > 0) {\n\t\t\t\tawait import('@devsnc/sn-wwna');\n\t\t\t\tconst { variable_sets: variableSets } = contextMenu;\n\t\t\t\tconst isUserTriggered =\n\t\t\t\t\tvariableSets?.some(v => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tv?.config_type === RESOLUTION_TRIGGER_ACTION_ID &&\n\t\t\t\t\t\t\tv?.props?.user_triggered === 'true'\n\t\t\t\t\t\t);\n\t\t\t\t\t}) ?? false;\n\n\t\t\t\tupdateState({\n\t\t\t\t\tcomponentLoaded: true,\n\t\t\t\t\tenableCaretSlot: true,\n\t\t\t\t\tisUserTriggered\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\taction: {\n\t\t\t\tpayload: { name, value }\n\t\t\t},\n\t\t\tproperties: { initialValue },\n\t\t\tstate: { enableCaretSlot, stagedValue, isUserTriggered },\n\t\t\tupdateState\n\t\t}) => {\n\t\t\t// This is a workaround for a scenario when a user changes the state of incident and RN\n\t\t\t// auto generates, we only get value not staged value\n\t\t\t// We have to rely on staged value because if user removes the whole text from textarea,\n\t\t\t// we have value but no staged value. In that case, we need to show NACM button.\n\t\t\t// This doesnt happen when user clicks on resolve button. We get both staged and value\n\t\t\tif (!enableCaretSlot && name !== 'initialValue') return;\n\t\t\tif (initialValue && !stagedValue && !isUserTriggered) {\n\t\t\t\tupdateState({ stagedValue: value });\n\t\t\t}\n\t\t},\n\t\t// selection update doesn't run on input...\n\t\t[NOW_TEXTAREA_INPUT]: ({\n\t\t\tproperties: { name = '' },\n\t\t\taction: { payload: { name: fieldName = '' } = {} },\n\t\t\tstate: { stagedValue, selectedText },\n\t\t\tupdateState\n\t\t}) => {\n\t\t\tif (fieldName !== name || !selectedText) return;\n\t\t\tupdateState({\n\t\t\t\tselectedText: '',\n\t\t\t\tselectionStart: stagedValue.length,\n\t\t\t\tselectionEnd: stagedValue.length\n\t\t\t});\n\t\t},\n\t\t[NOW_TEXTAREA_SELECTION_CHANGED]: ({\n\t\t\taction: {\n\t\t\t\tpayload: {\n\t\t\t\t\tname: fieldName = '',\n\t\t\t\t\tselection = '',\n\t\t\t\t\tselectionStart,\n\t\t\t\t\tselectionEnd\n\t\t\t\t} = {}\n\t\t\t},\n\t\t\tupdateState,\n\t\t\tproperties: { name = '' }\n\t\t}) => {\n\t\t\tif (fieldName !== name) return;\n\t\t\tupdateState({ selectedText: selection, selectionStart, selectionEnd });\n\t\t},\n\t\t[WWNA_INSERT_RECOMMENDATION_CLICKED]: coeffects => {\n\t\t\tconst {\n\t\t\t\taction: {\n\t\t\t\t\tpayload: { value: nacmValue = '', wwnaComponentId = '' } = {}\n\t\t\t\t} = {},\n\t\t\t\tdispatch,\n\t\t\t\tproperties: { name = '', onValueChange } = {},\n\t\t\t\tstate: {\n\t\t\t\t\tvalue = '',\n\t\t\t\t\tselectedText = '',\n\t\t\t\t\tselectionStart,\n\t\t\t\t\tselectionEnd\n\t\t\t\t} = {},\n\t\t\t\tupdateState,\n\t\t\t\thost\n\t\t\t} = coeffects;\n\n\t\t\tif (name !== wwnaComponentId) return;\n\n\t\t\tconst sanitizedNacm = sanitizeNACMValue(nacmValue);\n\n\t\t\tconst nextValue = selectedText\n\t\t\t\t? replaceSelectedText(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tsanitizedNacm,\n\t\t\t\t\t\tselectionStart,\n\t\t\t\t\t\tselectionEnd\n\t\t\t\t  )\n\t\t\t\t: sanitizedNacm;\n\n\t\t\tconst nextCursorPosition = getCursorPositionAfterInsertion(\n\t\t\t\tnextValue,\n\t\t\t\tsanitizedNacm\n\t\t\t);\n\n\t\t\tdispatch(CALLBACK_AND_DISPATCH_WITH_STATE, {\n\t\t\t\tcallback: onValueChange,\n\t\t\t\tisValueChanged: true,\n\t\t\t\tdispatchPayload: { value: nextValue }\n\t\t\t});\n\n\t\t\tupdateState({\n\t\t\t\tstagedValue: nextValue,\n\t\t\t\tselectedText: '',\n\t\t\t\tselectionStart: nextCursorPosition,\n\t\t\t\tselectionEnd: nextCursorPosition,\n\t\t\t\twwnaDialogOpened: false\n\t\t\t});\n\n\t\t\tconst textarea = getNowTextarea(host);\n\t\t\t// Mutating dom elements is generally bad practice, but we have to do it here to prevent our cursor\n\t\t\t// from skipping on focus. The state update above is just a few ms too slow 90% of the time. No\n\t\t\t// reasonable amount of settimeout/delay effect combinations would acheive this while avoiding flicker.\n\t\t\ttextarea.value = nextValue;\n\t\t\t// Update the selection and cursor position. The settimeout ensures it gets called after.\n\t\t\ttextarea.setSelectionRange(nextCursorPosition, nextCursorPosition);\n\t\t\t// Focus to textarea so that onblur event is triggered when we hit save\n\t\t\ttextarea.focus();\n\t\t},\n\t\t[NOW_RECORD_NOWASSIST_SHOW_HIDE_NOWASSIST]: ({\n\t\t\taction: {\n\t\t\t\tpayload: { inputFocused = false }\n\t\t\t},\n\t\t\tupdateState\n\t\t}) => {\n\t\t\tupdateState({ inputFocused });\n\t\t},\n\t\t// Hides sparkle when the nowassist box is manually closed - textarea is already blurred but\n\t\t// NOW_RECORD_NOWASSIST_SHOW_HIDE_NOWASSIST was skipped to prevent closing wwna\n\t\t[WWNA_RECOMMENDATION_DIALOG_CLOSED]: ({ host, updateState }) => {\n\t\t\tupdateState({ wwnaDialogOpened: false });\n\t\t\tgetNowTextarea(host)?.focus();\n\t\t},\n\t\t// Unfortunatey once we have text in the input, the wwna button acts as a menu, doesnt\n\t\t// dispatch WWNA_PRESET#ACTION_CLICKED anymore, and does not accept append data.\n\t\t// It dispatches NOW_BUTTON#CLICKED with a payload of { command: 'OPEN_POPOVER }.\n\t\t['NOW_BUTTON#CLICKED']: ({\n\t\t\thost,\n\t\t\taction,\n\t\t\tstate: { selectedText, stagedValue } = {}\n\t\t}) => {\n\t\t\tif (action.payload.command !== 'OPEN_POPOVER') return;\n\t\t\t// if no selected text, select all text\n\t\t\tif (!selectedText) {\n\t\t\t\tupdateTextareaElementSelection(host, 0, stagedValue.length);\n\t\t\t}\n\t\t},\n\t\t// we have to \"commit\" the staged value for the text box when the nowassist box opens,\n\t\t// otherwise it'll be out of sync and break when WWNA_INSERT_RECOMMENDATION_CLICKED runs\n\t\t[WWNA_PRESET_ACTION_CLICKED]: ({\n\t\t\taction: { payload: { wwnaComponentId = '' } = {} } = {},\n\t\t\tdispatch,\n\t\t\tproperties: { name = '', onValueChange } = {},\n\t\t\tstate: { stagedValue } = {},\n\t\t\tupdateState\n\t\t}) => {\n\t\t\tif (name !== wwnaComponentId) return;\n\t\t\tupdateState({ wwnaDialogOpened: true });\n\t\t\tdispatch(CALLBACK_AND_DISPATCH_WITH_STATE, {\n\t\t\t\tcallback: onValueChange,\n\t\t\t\tisValueChanged: true,\n\t\t\t\tdispatchPayload: {\n\t\t\t\t\tvalue: stagedValue\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\tsetInitialState: () => {\n\t\treturn {\n\t\t\tcomponentLoaded: false,\n\t\t\tenableCaretSlot: false,\n\t\t\tselectedText: '',\n\t\t\tselectionStart: 0,\n\t\t\tselectionEnd: 0,\n\t\t\tstagedValue: '',\n\t\t\tisUserTriggered: false,\n\t\t\tinputFocused: false,\n\t\t\twwnaOffsets: {\n\t\t\t\toffsetTop: 0,\n\t\t\t\toffsetLeft: 0\n\t\t\t},\n\t\t\twwnaDialogOpened: false\n\t\t};\n\t},\n\tproperties: {\n\t\t/**\n\t\t * Skill Configuration for field level Now Assist Context Menu component\n\t\t * The schema for this property isn't strongly typed, as we are simply passing the\n\t\t * Now Assist Context Menu specific document model down to the Now Assist Context Menu Component\n\t\t */\n\t\tnowAssistConfig: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcontextMenu: { type: 'object' },\n\t\t\t\t\tminWordCount: { type: 'number' }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nexport { nowAssistActionsBehavior };\n","import { t } from 'sn-translate';\n\nexport const NOW_BUTTON_ICONIC_CLICKED = 'NOW_BUTTON_ICONIC#CLICKED';\nexport const NOW_POPOVER_OPENED_SET = 'NOW_POPOVER#OPENED_SET';\nexport const FIELD_RECOMMENDATION_INFORMATION = t('Field Recommendation information');\nexport const WIDTH = 250;\nexport const MIN_HEIGHT = 80;\nexport const MAX_HEIGHT = 200;","import {createCustomElement, createPresentationalCustomElement} from \"@servicenow/ui-core\";\nimport '@servicenow/now-button';\nimport '@servicenow/now-popover';\n\nimport style from \"./recommendations-helper.scss\";\nimport {\n\tNOW_BUTTON_ICONIC_CLICKED, \n\tNOW_POPOVER_OPENED_SET, \n\tFIELD_RECOMMENDATION_INFORMATION, \n\tWIDTH, \n\tMIN_HEIGHT, \n\tMAX_HEIGHT\n} from \"./constants\";\n\nconst COMPONENT_NAME = 'sn-recommendations-helper';\n\nexport const popoverDescription = ({properties}) => {\n\tconst { description, link } = properties;\n\treturn (\n\t\t<div className=\"sn-recommendations-info-popover-spacing\">\n\t\t\t<div className=\"sn-recommendations-info-popover-description\" role = \"status\">\n\t\t\t\t\t{description}\n\t\t\t</div>\n\t\t\t{\n\t\t\t\tlink && link.href && link.label && (\n\t\t\t\t\t<a href={link.href} target=\"_blank\">{link.label}{link.icon && (<now-button-iconic bare icon={link.icon} size=\"sm\"></now-button-iconic>)}</a>\n\t\t\t\t)\n\t\t\t}\n\t\t</div>\n\t)\n}\n\ncreatePresentationalCustomElement('sn-recommendations-info-description', {\n\tview: popoverDescription,\n\tstyles: style,\n\tproperties: {\n\t\tdescription: { default: ''},\n\t\tlink: { default: {}}\n\t}\n})\n\nexport const recommendationsHelper = (state) => {\n\tconst {\n\t\tproperties: {\n\t\t\tconfig: {\n\t\t\t\tvariantName,\n\t\t\t\ticonName,\n\t\t\t\tdescription,\n\t\t\t\tlink\n\t\t\t},\n\t\t\tfieldType\n\t\t}\n\t} = state;\n\tconst interactionType = link ? \"dialog\" : \"none\"\n\treturn ((\n\t\t\t<now-popover\n\t\t\t\tinteractionType={interactionType}\n\t\t\t\tconstrain={{width: WIDTH, minHeight: MIN_HEIGHT, maxHeight: MAX_HEIGHT}}\n\t\t\t>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tclassName={fieldType !== 'textarea' ? `recommendation-icon` : ''}\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tvariant={variantName}\n\t\t\t\t\ticon={iconName}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\tbutton: { 'aria-label': FIELD_RECOMMENDATION_INFORMATION }\n\t\t\t\t\t}}\n\t\t\t\t\thide-padding\n\t\t\t\t></now-button-iconic>\n\t\t\t\t<sn-recommendations-info-description slot=\"content\" description={description} link={link}/>\n\t\t\t</now-popover>\n\t));\n}\n\ncreateCustomElement(COMPONENT_NAME, {\n\tview: recommendationsHelper,\n\tstyles: style,\n\tproperties: {\n\t\tconfig: { default: {} },\n\t\tfieldType: {default: ''}\n\t},\n\tactionHandlers: {\n\t\t[NOW_BUTTON_ICONIC_CLICKED]: {\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[NOW_POPOVER_OPENED_SET]: {\n\t\t\tstopPropagation: true\n\t\t}\n\t}\n})\n\nexport default COMPONENT_NAME;\n","import { size } from 'lodash';\nimport makeClass from 'classnames';\nimport { t } from 'sn-translate';\n\nimport { isAttrTrue } from '@devsnc/sn-controls-common';\n\n// When the current character count is within this percentage of the max\n// length, we make the counter a more prominent warning.\nconst CHARACTER_COUNTER_WARNING = 0.8;\n\nexport default function CharacterCounter({ value, maxlength, readonly }) {\n\tmaxlength = parseInt(maxlength);\n\n\tif (Number.isNaN(maxlength)) {\n\t\treturn null;\n\t}\n\n\tconst charCount = size(value);\n\tconst charsRemaining = maxlength - charCount;\n\n\tconst isEditable = !isAttrTrue(readonly);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={makeClass('sn-control-character-counter', {\n\t\t\t\twarning:\n\t\t\t\t\tisEditable &&\n\t\t\t\t\tcharCount / maxlength >= CHARACTER_COUNTER_WARNING &&\n\t\t\t\t\tcharsRemaining >= 0,\n\t\t\t\terror: isEditable && charsRemaining < 0\n\t\t\t})}\n\t\t\taria-live=\"polite\"\n\t\t\taria-relevant=\"text\"\n\t\t\taria-atomic=\"true\"\n\t\t>\n\t\t\t{t('Characters left: {0}', charsRemaining)}\n\t\t</div>\n\t);\n}\n","import { toString, isFunction, isEmpty } from 'lodash';\nimport makeClass from 'classnames';\nimport { t } from 'sn-translate';\nimport '@servicenow/now-button';\n\nimport '@servicenow/now-input';\nimport '@servicenow/now-dropdown';\nimport '@servicenow/now-popover';\nimport '@servicenow/now-textarea';\nimport {\n\ttransformMessages,\n\tisAttrTrue,\n\twrapHelperContent,\n\trenderHighlightedValue,\n\trenderDecorations,\n\ttransformDescriptionAndMessages,\n\tNO_PREDICTIONS_AVAILABLE\n} from '@devsnc/sn-controls-common';\nimport { renderNowAssistContextMenu } from '@devsnc/sn-record-nowassist';\nimport '@devsnc/sn-recommendations-helper';\nimport { createSlot, Fragment } from '@servicenow/ui-renderer-snabbdom';\n\nimport CharacterCounter from './CharacterCounter';\n\nconst normalizePlaceholder = (placeholder, readonly) =>\n\tplaceholder || !isAttrTrue(readonly) ? placeholder : '—';\n\nconst setInnerRef = innerRef => node => {\n\tif (node) {\n\t\tif (isFunction(innerRef)) {\n\t\t\tinnerRef(node);\n\t\t}\n\t}\n};\n\nconst onFocusEvent = onFocus => event => {\n\tif (isFunction(onFocus)) {\n\t\tonFocus(event);\n\t}\n};\n\nconst onBlurEvent = (onBlur, onValueChange) => event => {\n\tconst composedPath = event.composedPath()[0];\n\tconst value = composedPath?.value;\n\tif (isFunction(onBlur)) {\n\t\tonBlur(event, value);\n\t} else if (isFunction(onValueChange)) {\n\t\tonValueChange({ value });\n\t}\n};\n\nconst onMouseOverEvent = onMouseOver => event => {\n\tif (isFunction(onMouseOver)) {\n\t\tonMouseOver(event);\n\t}\n};\n\nconst onMouseOutEvent = onMouseOut => event => {\n\tif (isFunction(onMouseOut)) {\n\t\tonMouseOut(event);\n\t}\n};\n\nconst onChangeEvent = (onChange, onValueChange) => event => {\n\tconst value = event.target.value;\n\n\tif (isFunction(onChange)) {\n\t\tonChange(event, value);\n\t} else if (isFunction(onValueChange)) {\n\t\tonValueChange({\n\t\t\tevent,\n\t\t\tvalue\n\t\t});\n\t}\n};\n\nconst onNDSChange = (onChange, onValueChange, name) => event => {\n\tconst value = event.composedPath()[0].value;\n\t//faking event as event target is now-textrea and we need to use value from composed path\n\tconst changeEvent = { target: { value, name } };\n\n\tif (isFunction(onChange)) {\n\t\tonChange(changeEvent, value);\n\t} else if (isFunction(onValueChange)) {\n\t\tonValueChange({\n\t\t\tchangeEvent,\n\t\t\tvalue\n\t\t});\n\t}\n};\n\nconst getMaxlengthLabel = (ignoreMaxlength, maxlength) => {\n\treturn ignoreMaxlength || !maxlength\n\t\t? t('This field has no character limit.')\n\t\t: t('This field supports {0} or fewer characters.', maxlength);\n};\n\nconst renderTextarea = (props, children, isTrigger) => {\n\tconst {\n\t\tvalue,\n\t\tonBlur,\n\t\tonNDSChange,\n\t\tonMouseOver,\n\t\tonMouseOut,\n\t\tconfigAria,\n\t\tmaxlength,\n\t\tfieldLayout = {},\n\t\tdisableMaxHeight,\n\t\tsuggestions,\n\t\tlabel,\n\t\tdecorations,\n\t\treferringRecordId,\n\t\treferringTable,\n\t\tnowAssistConfig,\n\t\tname,\n\t\tselectedText,\n\t\tenableCaretSlot,\n\t\tcomponentLoaded,\n\t\tdraftedText,\n\t\tisUserTriggered,\n\t\tinputFocused,\n\t\twwnaDialogOpened,\n\t\tfitToParent,\n\t\tplaceholder,\n\t\tfieldRegex\n\t} = props;\n\tconst { layout } = fieldLayout;\n\n\tconst showCounter = isAttrTrue(props.showCounter);\n\tconst ignoreMaxlength = isAttrTrue(props.ignoreMaxlength);\n\tconst isPropertySelector =\n\t\ttypeof value === 'string' && value[0] === '@' && value.indexOf('/') > 0;\n\tconst textValue = `\\\\${value}`;\n\tconst classNames = makeClass('sn-control', {\n\t\t'is-required': props.required,\n\t\t'fit-to-parent': fitToParent\n\t});\n\n\tconst slotted = isTrigger ? { slot: 'trigger' } : {};\n\tconst maxlengthLabel = getMaxlengthLabel(ignoreMaxlength, maxlength);\n\tconst ariaLabel = configAria?.['aria-label'] || label;\n\n\tlet resolvedPlaceholder =\n\t\tplaceholder || (Array.isArray(fieldRegex) && fieldRegex[0]?.placeholder);\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<div className=\"sn-control-controls sn-record-dts-translate-icon\">\n\t\t\t\t{children ? (\n\t\t\t\t\tcreateSlot(children, 'controls')\n\t\t\t\t) : (\n\t\t\t\t\t<slot name=\"controls\"></slot>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<now-textarea\n\t\t\t\t{...slotted}\n\t\t\t\tclassName={classNames}\n\t\t\t\tvalue={isPropertySelector ? textValue : toString(value)}\n\t\t\t\tplaceholder={normalizePlaceholder(resolvedPlaceholder, props.readonly)}\n\t\t\t\tname={props.name}\n\t\t\t\tlabel={label}\n\t\t\t\tshowCounter={showCounter}\n\t\t\t\tmessages={transformMessages(props.messages)}\n\t\t\t\tmaxlength={ignoreMaxlength ? undefined : maxlength}\n\t\t\t\trequired={props.required}\n\t\t\t\tdisabled={props.disabled}\n\t\t\t\treadonly={props.readonly}\n\t\t\t\tautofocus={props.autofocus}\n\t\t\t\tinvalid={props.invalid}\n\t\t\t\tautoresize\n\t\t\t\tmanage-invalid\n\t\t\t\tmanage-value\n\t\t\t\ton-mouseover={onMouseOver}\n\t\t\t\ton-mousedown={props.onMouseDown}\n\t\t\t\ton-mouseout={onMouseOut}\n\t\t\t\ton-input={onNDSChange}\n\t\t\t\ton-blur={onBlur}\n\t\t\t\ton-focus={props.onFocus}\n\t\t\t\thelperContent={wrapHelperContent(props.helperContent)}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\ttextarea: {\n\t\t\t\t\t\t...configAria,\n\t\t\t\t\t\t'aria-label': ariaLabel\n\t\t\t\t\t\t\t? t('{ariaLabel}. {maxlengthLabel}', {\n\t\t\t\t\t\t\t\t\tariaLabel,\n\t\t\t\t\t\t\t\t\tmaxlengthLabel\n\t\t\t\t\t\t\t\t}).trim()\n\t\t\t\t\t\t\t: maxlengthLabel\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tautoresizeRowsLimit={props.autoresizeLineLimit}\n\t\t\t\tfield-layout={fieldLayout}\n\t\t\t\tenableCaretSlot={enableCaretSlot && !props.readonly}\n\t\t\t\tdisableMaxHeight={fitToParent || disableMaxHeight}\n\t\t\t>\n\t\t\t\t{renderHighlightedValue(props.highlightedValue, fieldLayout)}\n\t\t\t\t{suggestions?.source && (\n\t\t\t\t\t<sn-recommendations-helper\n\t\t\t\t\t\tslot=\"start\"\n\t\t\t\t\t\tconfig={suggestions.source}\n\t\t\t\t\t\tfieldType=\"textarea\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{renderDecorations(decorations)}\n\t\t\t\t{enableCaretSlot &&\n\t\t\t\t\t!props.readonly &&\n\t\t\t\t\t!props.disabled &&\n\t\t\t\t\tcomponentLoaded &&\n\t\t\t\t\trenderNowAssistContextMenu(\n\t\t\t\t\t\treferringRecordId,\n\t\t\t\t\t\treferringTable,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnowAssistConfig,\n\t\t\t\t\t\tselectedText,\n\t\t\t\t\t\tdraftedText,\n\t\t\t\t\t\tisUserTriggered,\n\t\t\t\t\t\tinputFocused,\n\t\t\t\t\t\twwnaDialogOpened\n\t\t\t\t\t)}\n\t\t\t</now-textarea>\n\t\t\t{showCounter && ignoreMaxlength && layout !== 'horizontal' ? (\n\t\t\t\t<CharacterCounter\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tmaxlength={props.maxlength}\n\t\t\t\t\treadonly={props.readonly}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</Fragment>\n\t);\n};\n\nconst renderInput = (props, children) => {\n\tconst {\n\t\talign,\n\t\treversed,\n\t\tname,\n\t\tcomponentId,\n\t\tdisabled,\n\t\tshowCounter,\n\t\tignoreMaxlength,\n\t\tmaxlength,\n\t\trole,\n\t\tconfigAria,\n\t\ttype,\n\t\tvalue,\n\t\tplaceholder,\n\t\tlabel,\n\t\thighlightedValue,\n\t\tsuggestions,\n\t\treadonly,\n\t\tautofocus,\n\t\thelperContent,\n\t\tinvalid,\n\t\tmax,\n\t\tdescription,\n\t\tmessages,\n\t\tmin,\n\t\trequired,\n\t\tstep,\n\t\tfieldLayout,\n\t\tonChange,\n\t\tonValueChange,\n\t\tonMouseOver,\n\t\tonMouseOut,\n\t\tonKeyPress,\n\t\tonFocus,\n\t\tonBlur,\n\t\tdecorations,\n\t\thideRequiredIndicator,\n\t\tfieldRegex\n\t} = props;\n\n\tconst propAriaLabel =\n\t\tprops['ariaLabel'] || props['aria-label'] || label || '';\n\tconst propAriaLabelledBy = propAriaLabel\n\t\t? null\n\t\t: props['ariaLabelledby'] || props['aria-labelledby'] || '';\n\tconst ignoremaxlength = isAttrTrue(ignoreMaxlength);\n\tconst maxlengthLabel = getMaxlengthLabel(ignoremaxlength, maxlength);\n\tconst showRecommendationIcon =\n\t\tsuggestions?.source &&\n\t\t(suggestions.items?.length || !(props.dropdown || props.options));\n\n\tlet resolvedPlaceholder =\n\t\tplaceholder || (Array.isArray(fieldRegex) && fieldRegex[0]?.placeholder);\n\n\treturn (\n\t\t<now-input\n\t\t\tslot=\"trigger\"\n\t\t\talign={\n\t\t\t\tprops.mobileKeypadType || (align === 'end' && reversed)\n\t\t\t\t\t? 'start'\n\t\t\t\t\t: align\n\t\t\t} // for number use case need to align placeholder and value in the start\n\t\t\tname={name}\n\t\t\tcomponentId={componentId}\n\t\t\tlabel={label}\n\t\t\ttype={\n\t\t\t\tArray.isArray(fieldRegex) && fieldRegex.length > 0\n\t\t\t\t\t? props.mobileKeypadType\n\t\t\t\t\t: type\n\t\t\t}\n\t\t\tdisabled={disabled}\n\t\t\t// STRY4883444: When showing character counter, do not enforce a maxLength\n\t\t\t// DEF0183625: For backwards compatibility in some other cases we do not want to enforce maxlength\n\t\t\tmaxlength={\n\t\t\t\tisAttrTrue(showCounter) || ignoremaxlength ? undefined : maxlength\n\t\t\t}\n\t\t\tconfigAria={{\n\t\t\t\tinput: {\n\t\t\t\t\t...{\n\t\t\t\t\t\t'aria-label': propAriaLabel\n\t\t\t\t\t\t\t? t('{ariaLabel}. {maxlengthLabel}', {\n\t\t\t\t\t\t\t\t\tariaLabel: propAriaLabel,\n\t\t\t\t\t\t\t\t\tmaxlengthLabel\n\t\t\t\t\t\t\t\t}).trim()\n\t\t\t\t\t\t\t: maxlengthLabel,\n\t\t\t\t\t\t'aria-labelledby': propAriaLabelledBy\n\t\t\t\t\t},\n\t\t\t\t\trole: role || 'textbox',\n\t\t\t\t\t...configAria\n\t\t\t\t}\n\t\t\t}}\n\t\t\tvalue={toString(value)}\n\t\t\tplaceholder={resolvedPlaceholder}\n\t\t\treadonly={isAttrTrue(readonly)}\n\t\t\tautofocus={autofocus}\n\t\t\thelperContent={wrapHelperContent(helperContent)}\n\t\t\tinvalid={invalid}\n\t\t\tmax={max}\n\t\t\tmessages={transformDescriptionAndMessages(description, messages)}\n\t\t\tmin={min}\n\t\t\trequired={required}\n\t\t\thideRequiredIndicator={hideRequiredIndicator}\n\t\t\tstep={step}\n\t\t\tfieldLayout={fieldLayout}\n\t\t\tmanage-invalid\n\t\t\tmanage-value\n\t\t\ton-input={onNDSChange(onChange, onValueChange, name)}\n\t\t\ton-mouseover={onMouseOverEvent(onMouseOver)}\n\t\t\ton-mouseout={onMouseOutEvent(onMouseOut)}\n\t\t\ton-keypress={onKeyPress}\n\t\t\ton-focus={onFocusEvent(onFocus)}\n\t\t\ton-blur={onBlurEvent(onBlur, onValueChange)}\n\t\t>\n\t\t\t{showRecommendationIcon && (\n\t\t\t\t<sn-recommendations-helper slot=\"start\" config={suggestions.source} />\n\t\t\t)}\n\t\t\t<slot name=\"left\" slot=\"start\">\n\t\t\t\t{children ? createSlot(children, 'left') : null}\n\t\t\t</slot>\n\t\t\t<slot name=\"controls\" slot=\"end\">\n\t\t\t\t{children ? createSlot(children, 'controls') : null}\n\t\t\t</slot>\n\t\t\t{renderHighlightedValue(highlightedValue, fieldLayout)}\n\t\t\t{renderDecorations(decorations)}\n\t\t</now-input>\n\t);\n};\n\nconst renderInputWithDropdown = (props, children) => {\n\tconst { showDropdownWithoutFocus, options, dropdown, highlightedIndex } =\n\t\tprops;\n\n\tconst transformedOptions = (props.options || []).map(option => ({\n\t\tid: option,\n\t\tlabel: option\n\t}));\n\treturn (\n\t\t<now-popover\n\t\t\tbare\n\t\t\tmanage-opened\n\t\t\topened={showDropdownWithoutFocus || !isEmpty(transformedOptions)}\n\t\t\tconstrain={{\n\t\t\t\tminHeight: 32,\n\t\t\t\tminWidth: 'target',\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tmaxHeight: 300\n\t\t\t}}\n\t\t\tinteraction-type=\"listbox\"\n\t\t\tdisable-scroll\n\t\t\thideTail\n\t\t>\n\t\t\t{renderInput(props, children)}\n\t\t\t{dropdown\n\t\t\t\t? dropdown\n\t\t\t\t: options && (\n\t\t\t\t\t\t<now-dropdown-list\n\t\t\t\t\t\t\tmanage-selected-items\n\t\t\t\t\t\t\tactiveItem={transformedOptions[highlightedIndex]?.id}\n\t\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\t\titems={transformedOptions}\n\t\t\t\t\t\t\tconfigAria={{ panel: {} }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}{' '}\n\t\t</now-popover>\n\t);\n};\n\nconst renderInputWithSuggestions = (props, children, render) => {\n\tconst {\n\t\tsuggestions,\n\t\tisSuggestionsOpened,\n\t\tselectedItem,\n\t\tactiveItemId,\n\t\ttype,\n\t\tnowId,\n\t\tlabel,\n\t\tdropdown,\n\t\toptions\n\t} = props;\n\n\tif (isEmpty(suggestions)) {\n\t\tif (type === 'textarea') {\n\t\t\treturn render();\n\t\t} else {\n\t\t\treturn renderInputWithDropdown(props, children);\n\t\t}\n\t} else {\n\t\tconst {\n\t\t\titems: suggestedItems = [],\n\t\t\tsectionLabel,\n\t\t\temptyMessage = NO_PREDICTIONS_AVAILABLE,\n\t\t\t...meta\n\t\t} = suggestions;\n\n\t\tif (!suggestedItems.length && (dropdown || options) && type !== 'textarea')\n\t\t\treturn renderInputWithDropdown(props, children);\n\n\t\tconst transformedSuggestions = {\n\t\t\tlabel: sectionLabel,\n\t\t\tchildren: suggestedItems.length\n\t\t\t\t? suggestedItems.map(item => ({\n\t\t\t\t\t\tid: item.value || item.displayValue,\n\t\t\t\t\t\tlabel: item.displayValue || item.value,\n\t\t\t\t\t\t...meta\n\t\t\t\t\t}))\n\t\t\t\t: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'disabled_emptyMessage',\n\t\t\t\t\t\t\tlabel: emptyMessage,\n\t\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t};\n\t\treturn (\n\t\t\t<now-popover\n\t\t\t\tmanage-opened\n\t\t\t\topened={isSuggestionsOpened}\n\t\t\t\tconstrain={{\n\t\t\t\t\tminHeight: 32,\n\t\t\t\t\tminWidth: 'target',\n\t\t\t\t\tmaxWidth: 'target',\n\t\t\t\t\tmaxHeight: 300\n\t\t\t\t}}\n\t\t\t\tinteraction-type=\"listbox\"\n\t\t\t\thideTail\n\t\t\t>\n\t\t\t\t{render(true)}\n\t\t\t\t{\n\t\t\t\t\t<now-dropdown-list\n\t\t\t\t\t\tdefer\n\t\t\t\t\t\tmanage-active-item\n\t\t\t\t\t\tmanage-selected-items\n\t\t\t\t\t\tselectedItems={[selectedItem]}\n\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\titems={[transformedSuggestions]}\n\t\t\t\t\t\tactive-item={activeItemId}\n\t\t\t\t\t\tconfigAria={{ panel: { 'aria-label': label } }}\n\t\t\t\t\t\tscreen-reader-id={\n\t\t\t\t\t\t\tisSuggestionsOpened ? `now-dropdown-list-${nowId}` : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}{' '}\n\t\t\t</now-popover>\n\t\t);\n\t}\n};\n\nexport const Input = (props, children) => {\n\tconst {\n\t\tvalue,\n\t\tonFocus,\n\t\tonBlur,\n\t\tonValueChange,\n\t\tonChange,\n\t\tonMouseOver,\n\t\tinnerRef,\n\t\tonMouseOut,\n\t\tmaxlength,\n\t\treadonly,\n\t\tfieldLayout: { layout } = {}\n\t} = props;\n\tif (props.type === 'textarea') {\n\t\tconst renderTextareaElement = renderTextarea.bind(\n\t\t\tnull,\n\t\t\t{\n\t\t\t\t...props,\n\t\t\t\tonFocus: onFocusEvent(onFocus),\n\t\t\t\tonBlur: onBlurEvent(onBlur, onValueChange),\n\t\t\t\tonChange: onChangeEvent(onChange, onValueChange),\n\t\t\t\tonMouseOver: onMouseOverEvent(onMouseOver),\n\t\t\t\tonMouseOut: onMouseOutEvent(onMouseOut),\n\t\t\t\tonNDSChange: onNDSChange(onChange, onValueChange),\n\t\t\t\tsetInnerRef: setInnerRef(innerRef)\n\t\t\t},\n\t\t\tchildren\n\t\t);\n\t\treturn renderInputWithSuggestions(props, children, renderTextareaElement);\n\t}\n\tconst showCounter = isAttrTrue(props.showCounter);\n\tconst renderInputElement = renderInput.bind(null, props, children);\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{renderInputWithSuggestions(props, children, renderInputElement)}\n\n\t\t\t{showCounter && layout !== 'horizontal' ? (\n\t\t\t\t<CharacterCounter\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tmaxlength={maxlength}\n\t\t\t\t\treadonly={readonly}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</Fragment>\n\t);\n};\n\nexport default Input;\n","import { omit, isFunction, extend } from 'lodash';\n\nimport Input from './Input';\nimport { CALLBACK_AND_DISPATCH } from '@devsnc/sn-controls-common';\n\nimport { Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport '@servicenow/now-button';\n\n/**\n * Does what you'd expect an input field to do, with a few extra goodies.\n * - `controls`: Arbitrary content that gets inlined with the input. Often\n *   used to render buttons that perfom actions related to the field.\n * - `dropdown`: Content that is displayed only when the field has focus. Can\n *   be used to implement an autocomplete list, date picker, etc.\n *\n * Note that the state for this component must be handled by the parent\n */\nexport default function SNInput(state, { updateState }) {\n\tconst onValueChange = state.onValueChange || state.properties.onValueChange;\n\n\tconst attrs = extend(\n\t\tomit({ ...state.properties, ...state }, [\n\t\t\t'fetchDeclarativeActions',\n\t\t\t'dependentField',\n\t\t\t'canWrite',\n\t\t\t'dependentTable',\n\t\t\t'displayValue'\n\t\t])\n\t);\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<Input\n\t\t\t\t{...attrs}\n\t\t\t\tonValueChange={onValueChange}\n\t\t\t\tupdateState={updateState}\n\t\t\t\tcomponentName=\"sn-record-input\"\n\t\t\t>\n\t\t\t\t<slot name=\"controls\" />\n\t\t\t</Input>\n\t\t</Fragment>\n\t);\n}\nexport const NOW_TEXTAREA_VALUE_SET = 'NOW_TEXTAREA#VALUE_SET';\nexport const NOW_TEXTAREA_INPUT = 'NOW_TEXTAREA#INPUT';\n\nexport const handleChange = ({\n\taction: {\n\t\tpayload: { name, value }\n\t},\n\tproperties: { onValueChange },\n\tdispatch\n}) => {\n\t// need to handle withValueChangeCallbacks\n\tdispatch(CALLBACK_AND_DISPATCH, {\n\t\tcallback: onValueChange,\n\t\tisValueChanged: true,\n\t\tdispatchPayload: { name, value }\n\t});\n};\n\nexport const callParentOnChange = ({\n\taction: {\n\t\tpayload: { name, fieldValue }\n\t},\n\tproperties: { onChange }\n}) => {\n\tif (isFunction(onChange)) {\n\t\tonChange({ target: { name, value: fieldValue } });\n\t}\n};\n","import makeClass from 'classnames';\nimport { mapValues, isString, isEmpty } from 'lodash';\nimport { createSlot } from '@servicenow/ui-renderer-snabbdom';\nimport { createCustomElement } from '@servicenow/ui-core';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-button';\n\nimport {\n\trenderFormFieldMessages,\n\trenderFormFieldLabel\n} from '@servicenow/now-input';\nimport {\n\tisAttrTrue,\n\tgenerateSubComponentIds,\n\ttransformState,\n\trenderHighlightedValue,\n\ttransformDescriptionAndMessages,\n\twrapHelperContent,\n\trenderDecorations,\n\tgetPageProperty\n} from '@devsnc/sn-controls-common';\n\nimport style from './controlwrapper.scss';\nimport { fieldLayoutSchema } from '@devsnc/sn-controls-common';\n\n/**\n * Wrapping component that provides common behavior for nearly all\n * for controls: label, focus classes, error state, etc.\n *\n * Components that are shaped more like an input should use\n * FieldAndDropdownWrapperSeismic instead.\n */\nexport default function ControlWrapper(\n\t{\n\t\tlabel,\n\t\talign,\n\t\trequired,\n\t\treadonly,\n\t\tdescription,\n\t\tinvalid,\n\t\thasFocus,\n\t\treversed,\n\t\tmessages,\n\t\twrapperRef,\n\t\tslot,\n\t\tcomponentId,\n\t\tvariant,\n\t\tfieldset = false,\n\t\thelperContent,\n\t\thighlightedValue = {},\n\t\tfieldLayout = {},\n\t\talignCenter,\n\t\tdecorations = [],\n\t\tfitToParent\n\t},\n\tchildren\n) {\n\tconst { layout = 'vertical', columns } = fieldLayout;\n\tconst customColumn =\n\t\tcolumns?.length > 2\n\t\t\t? (columns?.map(c => `minmax(0, ${c})`)?.join(' ') ?? '')\n\t\t\t: '';\n\tconst snFormFieldClassName = makeClass(\n\t\t'sn-form-field',\n\t\tmapValues({\n\t\t\t'fit-to-parent': fitToParent\n\t\t})\n\t);\n\tconst className = makeClass(\n\t\t'sn-control',\n\t\t'sn-form-field-layout',\n\t\tmapValues(\n\t\t\t{\n\t\t\t\t'is-required': required,\n\t\t\t\t// TODO: we only support `readonly` prop, but we use the `disabled`\n\t\t\t\t// design. Work with XD to align.\n\t\t\t\t'is-readonly': readonly,\n\t\t\t\t'is-focus': hasFocus,\n\t\t\t\t'has-error': invalid,\n\t\t\t\t'is-align-end': align === 'end' && !isAttrTrue(reversed),\n\t\t\t\t'is-align-end-reversed': align === 'end' && isAttrTrue(reversed),\n\t\t\t\t[`-${layout}`]: true,\n\t\t\t\t'align-center': alignCenter,\n\t\t\t\t'fit-to-parent': fitToParent\n\t\t\t},\n\t\t\tisAttrTrue\n\t\t),\n\t\tisString(variant)\n\t\t\t? variant\n\t\t\t\t\t.split(' ')\n\t\t\t\t\t.map(v => `-${v}`)\n\t\t\t\t\t.join(' ')\n\t\t\t: null\n\t);\n\n\tconst ids = generateSubComponentIds(componentId);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={\n\t\t\t\tlayout === 'horizontal'\n\t\t\t\t\t? { 'grid-template-columns': customColumn }\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tclassName={className}\n\t\t\tref={wrapperRef}\n\t\t\tslot={slot}\n\t\t>\n\t\t\t{!fieldset && label && !isEmpty(label.trim()) && (\n\t\t\t\t<div className=\"form-field-label-wrap\">\n\t\t\t\t\t{renderFormFieldLabel(\n\t\t\t\t\t\tcomponentId,\n\t\t\t\t\t\tinvalid,\n\t\t\t\t\t\tisAttrTrue(required),\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tgetPageProperty('enable_template_enhancement', false) &&\n\t\t\t\t\t\t\tlabel == 'Template'\n\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t: label,\n\t\t\t\t\t\twrapHelperContent(helperContent),\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t'label',\n\t\t\t\t\t\tlayout\n\t\t\t\t\t)}\n\t\t\t\t\t{renderDecorations(decorations, true)}\n\t\t\t\t\t{layout === 'vertical' && (\n\t\t\t\t\t\t<div className=\"sn-control-highlighted-field-label-end\">\n\t\t\t\t\t\t\t<slot name=\"controls-label-end\" slot=\"label-end\"></slot>\n\t\t\t\t\t\t\t{renderHighlightedValue(highlightedValue, fieldLayout)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{fieldset ? (\n\t\t\t\t<fieldset className=\"default-fieldset\">\n\t\t\t\t\t<legend\n\t\t\t\t\t\tclassName=\"sn-control-label\"\n\t\t\t\t\t\tid={ids.label}\n\t\t\t\t\t\thtmlFor={componentId}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</legend>\n\t\t\t\t\t{children ? (\n\t\t\t\t\t\t<div className={snFormFieldClassName}>{createSlot(children)}</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t)}\n\t\t\t\t</fieldset>\n\t\t\t) : children ? (\n\t\t\t\t<div className={snFormFieldClassName}>{createSlot(children)}</div>\n\t\t\t) : (\n\t\t\t\t<slot></slot>\n\t\t\t)}\n\t\t\t{layout === 'horizontal' && !fieldset && (\n\t\t\t\t<div className=\"sn-control-highlighted-field-label-end\">\n\t\t\t\t\t<slot name=\"controls-label-end\" slot=\"label-end\"></slot>\n\t\t\t\t\t{renderHighlightedValue(highlightedValue, fieldLayout)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className=\"form-field-message-container\">\n\t\t\t\t{renderFormFieldMessages(\n\t\t\t\t\tcomponentId,\n\t\t\t\t\ttransformDescriptionAndMessages(description, messages)\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nconst view = state => {\n\treturn <ControlWrapper {...state.properties} />;\n};\n\n/**\n * Wrapping component that provides common behavior for nearly all\n * for controls: label, focus classes, error state, etc.\n *\n * Components that are shaped more like an input should use\n * FieldAndDropdownWrapperSeismic instead.\n *\n * ```jsx\n * <sn-record-control-wrapper\n * \tlabel=\"Dummy Component\"\n * \tdescription=\"This is an example of Control Wrapper in use\"\n * >\n * \t<div>\n * \t\t<input value=\"This is a dummy component\" readOnly />\n * \t</div>\n * </sn-record-control-wrapper>\n * ```\n *\n * @seismicElement sn-record-control-wrapper\n * @summary Wrapper for Form Controls that provides all common form-controls functionalities such as info messages, labels, error states\n *\n * */\ncreateCustomElement('sn-record-control-wrapper', {\n\tview,\n\tstyles: style,\n\tproperties: {\n\t\t/**\n\t\t * Alignment - use Value \"end\" for a right Text Align\n\t\t * @type {string}\n\t\t */\n\t\talign: {},\n\t\t/**\n\t\t * Unique identifier for the component.\n\t\t * @type {string}\n\t\t */\n\t\tcomponentId: {},\n\t\t/**\n\t\t * Additional content describing the field, usually to provide further\n\t\t * instruction to the user.\n\t\t * @type {string}\n\t\t */\n\t\tdescription: {},\n\t\t/**\n\t\t * Fieldset - Flag to inidcate a group of related elements\n\t\t * @type {boolean}\n\t\t */\n\t\tfieldset: { default: false },\n\t\t/**\n\t\t * Is the component in focus\n\t\t * @type {string|boolean}\n\t\t */\n\t\thasFocus: { default: false },\n\t\t/**\n\t\t * Specifies whether the current value is not valid.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t * @type {string | boolean}\n\t\t */\n\t\tinvalid: { default: false },\n\t\t/**\n\t\t * It's a label! All form controls need a label!\n\t\t * @type {string}\n\t\t */\n\t\tlabel: {},\n\t\t/**\n\t\t * Array of message objects that must contain type and message itself.\n\t\t * @type {Array<{type: (\"error\"|\"warning\"|\"success\"|\"liveUpdate\"|\"info\"|\"suggestion\"), type:Array<string,Object<{string, getMessage:function}>> }>}\n\t\t */\n\t\tmessages: { default: [] },\n\t\t/**\n\t\t * Specifies that the user cannot modify the value of the component.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t * @type {boolean}\n\t\t */\n\t\treadonly: { default: false },\n\t\t/**\n\t\t * Whether or not the user must fill in a value for this component.\n\t\t * Can be specified as a boolean or the string \"true\"\n\t\t * @type {boolean}\n\t\t */\n\t\trequired: { default: false },\n\t\t/**\n\t\t * Defines the styles used to render the wrapper.\n\t\t * @type {string}\n\t\t */\n\t\tvariant: {},\n\t\t/**\n\t\t * Reference to the element.\n\t\t * @type {HTMLElement}\n\t\t */\n\t\twrapperRef: {},\n\t\t/**\n\t\t * If set, an iconic button with a popover appears next to the field\n\t\t * label to display additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t */\n\t\thelperContent: { schema: { type: 'string' } },\n\t\t/**\n\t\t * The highlighted Value labels that you want to display beside the Field Label. Can be an array of highlighted values or just single highlighted value object\n\t\t * @type {[{ value: 'string', status: 'string', showIcon: boolean, variantName: 'string', colorName: 'string',iconName: 'string'  }]}\n\t\t */\n\t\thighlightedValue: {\n\t\t\tdefault: {},\n\t\t\tschema: { anyOf: [{ type: 'object' }, { type: 'array' }] }\n\t\t},\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slottted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: { layout: 'vertical' },\n\t\t\tschema: fieldLayoutSchema\n\t\t},\n\t\t/**\n\t\t * Specifies whether to align items in center of grid container with padding-block-start or not\n\t\t * @type {boolean}\n\t\t */\n\t\talignCenter: { default: false },\n\t\t/**\n\t\t * Field decorations are being passed with g_form.addDecoration(fieldName, icon, text); method\n\t\t * via client script using g_form api\n\t\t * which renders alongside the field's label\n\t\t * @type {Array.<{icon: string, text: string}>}\n\t\t **/\n\t\tdecorations: {\n\t\t\tdefault: [],\n\t\t\ttype: 'array'\n\t\t}\n\t},\n\ttransformState\n});\n","// 3rd party imports\nimport classNames from 'classnames';\nimport { isEmpty, reduce, some } from 'lodash';\nimport { createCustomElement } from '@servicenow/ui-core';\nimport '@servicenow/now-icon';\nimport style from './controlwrapper.scss';\nimport { FIELD_MESSAGE_TYPES } from '@devsnc/sn-controls-common';\n\n/**\n * Utility function that returns message group markup\n * @param {String} type type of message we want to pass in\n * @param {Array} messages array of strings to display\n * @returns {Element} returns an element containing all messages\n */\nconst getMessages = function (type, messages) {\n\tif (!Array.isArray(messages) || messages.length == 0) return null;\n\tlet wrapperClass, iconType;\n\tswitch (type) {\n\t\tcase 'info':\n\t\t\twrapperClass = 'info';\n\t\t\ticonType = 'info-circle-outline';\n\t\t\tbreak;\n\t\tcase 'success':\n\t\t\twrapperClass = 'success';\n\t\t\ticonType = 'info-circle-outline';\n\t\t\tbreak;\n\t\tcase 'error':\n\t\t\twrapperClass = 'danger';\n\t\t\ticonType = 'circle-exclamation-outline';\n\t\t\tbreak;\n\t\tcase 'warning':\n\t\t\twrapperClass = 'warning';\n\t\t\ticonType = 'exclamation-triangle-outline';\n\t\t\tbreak;\n\t\tcase 'liveUpdate':\n\t\t\twrapperClass = 'info';\n\t\t\ticonType = 'heartbeat-outline';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\twrapperClass = 'suggestion';\n\t\t\tbreak;\n\t}\n\n\tconst template = (\n\t\t<div\n\t\t\tkey={type}\n\t\t\tclassName={classNames('sn-control-message', `-${wrapperClass}`, {\n\t\t\t\t'-multi': Array.isArray(messages) && messages.length > 1\n\t\t\t})}\n\t\t>\n\t\t\t{messages.map((message, i) => {\n\t\t\t\tif (type === 'warning' && message.isUserModified) {\n\t\t\t\t\tmessage = message.getMessage().label;\n\t\t\t\t} else {\n\t\t\t\t\tmessage = message.getMessage ? message.getMessage() : message;\n\t\t\t\t\tif (type === 'liveUpdate') message = message.content;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"sn-control-message-row\" key={i} role=\"alert\">\n\t\t\t\t\t\t<div className=\"sn-control-message-content -static\">\n\t\t\t\t\t\t\t{iconType && <now-icon size=\"sm\" icon={iconType} />}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"sn-control-message-content\">\n\t\t\t\t\t\t\t<span>{message}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n\treturn template;\n};\n\n/**\n * This function returns the aria labels for each type of message.\n * This is needed because liveUpdate messages are different than\n * other message types in that they are objects not strings. This\n * ensures we get the correct aria label for the message.\n * @param {array} messages array of message objects\n * @param {string} type type of messages in the array\n * @returns {array} returns\n */\nconst getLabels = function (messages, type) {\n\treturn type === 'liveUpdate'\n\t\t? messages.map(message => message.getMessage().label)\n\t\t: messages;\n};\n\n/**\n * utility function that maps the array of messages into a messag map we use for rendering\n * @param {array} messages array of message objects\n * @returns {object} returns an object where types are keys\n */\nconst getMessageMap = function (messages) {\n\treturn messages.reduce((result, { type, message }) => {\n\t\tif (!isEmpty(type) && !isEmpty(message)) {\n\t\t\tif (Array.isArray(result[type])) {\n\t\t\t\tresult[type].push(message);\n\t\t\t} else {\n\t\t\t\tresult[type] = [message];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}, {});\n};\n\n/**\n * utility that determines if any relevant messages exist in the messageMap\n * @param {object} messageMap object of message type arrays\n * @returns {boolean}\n */\nconst hasMessages = messageMap =>\n\tsome(FIELD_MESSAGE_TYPES, s => !isEmpty(messageMap[s]));\n\n/**\n * component that renders the message container and relevant messages\n * @param {object} props\n * @returns {ReactElement}\n */\nconst FieldMessages = function (props) {\n\tlet { messages, id } = props;\n\tif (!messages || messages.length == 0) return null;\n\n\tconst messageMap = getMessageMap(props.messages);\n\tif (!hasMessages(messageMap)) return null;\n\n\tconst { labels, elements } = reduce(\n\t\tFIELD_MESSAGE_TYPES,\n\t\t({ labels, elements }, type) => {\n\t\t\tconst messageMapResult = messageMap[type];\n\t\t\tif (messageMapResult) {\n\t\t\t\telements.push(getMessages(type, messageMapResult));\n\t\t\t\tconst label = getLabels(messageMapResult, type);\n\t\t\t\tlabels.push(label.join(', '));\n\t\t\t}\n\n\t\t\treturn { labels, elements };\n\t\t},\n\t\t{\n\t\t\tlabels: [],\n\t\t\telements: []\n\t\t}\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames('sn-control-messages')}\n\t\t\tid={id}\n\t\t\taria-label={labels.join(', ')}\n\t\t>\n\t\t\t{elements}\n\t\t</div>\n\t);\n};\n\nexport { getMessages, getMessageMap, hasMessages };\nexport default FieldMessages;\n\n/**\n * This component is used to display messages of several types (info, warning,\n * success, error). The mesages are used to notify the user. This\n * component was meant to be used by the controls team only.\n *\n * Example:\n * ```js\n * <sn-record-controls-internal-field-messages\n *\t\tmessages={[\n *\t\t\t{ type: 'info', message: 'This is an info message' },\n *\t\t\t{ type: 'warning', message: 'This is an warning message' },\n *\t\t\t{ type: 'success', message: 'This is an success message' },\n *\t\t\t{ type: 'error', message: 'This is an error message' }\n *\t\t]}\n *\t/>\n * ```\n */\ncreateCustomElement('sn-record-controls-internal-field-messages', {\n\tstyles: style,\n\tproperties: {\n\t\t/**\n\t\t *  array of message objects that must contain type and message itself.\n\t\t */\n\t\tmessages: {},\n\t\t/**\n\t\t * id of parent object\n\t\t */\n\t\tid: {},\n\t\t/**\n\t\t * Specifies that the field should be rendered right-to-left.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t */\n\t\treversed: {}\n\t},\n\tview: ({ properties }) => FieldMessages(properties)\n});\n","import makeClass from 'classnames';\nimport React from 'react';\nimport { t } from 'sn-translate';\nimport { createCustomElement } from '@servicenow/ui-core';\nimport react from '@servicenow/ui-renderer-react';\nimport '@servicenow/now-button';\nimport '@servicenow/now-popover';\nimport { isAttrTrue } from '@devsnc/sn-controls-common';\n\nconst POPOVER_CONTENT_TAG = 'sn-record-field-helper-popover-content';\n\ncreateCustomElement(POPOVER_CONTENT_TAG, {\n\ttype: react,\n\tview: ({ properties: { content } }) => (\n\t\t<div id=\"content-area\" style={{ padding: '1rem' }}>\n\t\t\t{content}\n\t\t</div>\n\t),\n\tproperties: {\n\t\tcontent: {}\n\t}\n});\n\nexport const renderFieldHelper = (helperContent, invalid) => {\n\tif (helperContent) {\n\t\treturn (\n\t\t\t<now-popover\n\t\t\t\tclassName=\"sn-control-field-helper\"\n\t\t\t\tinteraction-type=\"none\"\n\t\t\t\tconstrain={{ maxHeight: 200, maxWidth: 300 }}\n\t\t\t>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\tbutton: { 'aria-label': t('More information') }\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={makeClass({\n\t\t\t\t\t\t'now-form-field-button': true,\n\t\t\t\t\t\t'is-invalid': isAttrTrue(invalid)\n\t\t\t\t\t})}\n\t\t\t\t\ticon=\"circle-info-outline\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tbare\n\t\t\t\t\thide-padding\n\t\t\t\t/>\n\t\t\t\t<POPOVER_CONTENT_TAG\n\t\t\t\t\tslot=\"content\"\n\t\t\t\t\trole=\"status\"\n\t\t\t\t\tcontent={helperContent}\n\t\t\t\t/>\n\t\t\t</now-popover>\n\t\t);\n\t}\n};\n","import React from 'react';\n// eslint-disable-next-line no-unused-vars\nimport react from '@servicenow/ui-renderer-react';\nimport { isAttrTrue } from '@devsnc/sn-controls-common';\nimport '@servicenow/now-icon';\nimport { renderFieldHelper } from './formFieldHelperReact';\n\nexport default function Label(props) {\n\tlet { htmlFor, children, required, id, helperContent, invalid } = props;\n\tconst isRequired = isAttrTrue(required);\n\n\treturn (\n\t\t<label id={id} className=\"sn-control-label\" htmlFor={htmlFor}>\n\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t<span>{children}</span>\n\t\t\t</span>\n\t\t\t{isRequired && <now-icon size=\"sm\" icon=\"asterisk-outline\" />}\n\t\t\t{renderFieldHelper(helperContent, invalid)}\n\t\t</label>\n\t);\n}\n","// 3rd party imports\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { isEmpty, reduce, some } from 'lodash';\nimport '@servicenow/now-icon';\nimport { FIELD_MESSAGE_TYPES } from '@devsnc/sn-controls-common';\n\n/**\n * Utility function that returns message group markup\n * @param {String} type type of message we want to pass in\n * @param {Array} messages array of strings to display\n * @returns {ReactElement} returns a react element containing all messages\n */\nconst getMessages = function (type, messages) {\n\tif (!Array.isArray(messages) || messages.length == 0) return null;\n\tlet wrapperClass, iconType;\n\tswitch (type) {\n\t\tcase 'info':\n\t\t\twrapperClass = 'info';\n\t\t\ticonType = 'info-circle-outline';\n\t\t\tbreak;\n\t\tcase 'success':\n\t\t\twrapperClass = 'success';\n\t\t\ticonType = 'info-circle-outline';\n\t\t\tbreak;\n\t\tcase 'error':\n\t\t\twrapperClass = 'danger';\n\t\t\ticonType = 'circle-exclamation-outline';\n\t\t\tbreak;\n\t\tcase 'warning':\n\t\t\twrapperClass = 'warning';\n\t\t\ticonType = 'exclamation-triangle-outline';\n\t\t\tbreak;\n\t\tcase 'liveUpdate':\n\t\t\twrapperClass = 'info';\n\t\t\ticonType = 'heartbeat-outline';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\twrapperClass = 'suggestion';\n\t\t\tbreak;\n\t}\n\n\tconst template = (\n\t\t<div\n\t\t\tkey={type}\n\t\t\tclassName={classNames('sn-control-message', `-${wrapperClass}`, {\n\t\t\t\t'-multi': Array.isArray(messages) && messages.length > 1\n\t\t\t})}\n\t\t>\n\t\t\t{messages.map((message, i) => {\n\t\t\t\tif (type === 'warning' && message.isUserModified) {\n\t\t\t\t\tmessage = message.getMessage().label;\n\t\t\t\t} else {\n\t\t\t\t\tmessage = message.getMessage ? message.getMessage() : message;\n\t\t\t\t\tif (type === 'liveUpdate') message = message.content;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"sn-control-message-row\" key={i} role=\"alert\">\n\t\t\t\t\t\t<div className=\"sn-control-message-content -static\">\n\t\t\t\t\t\t\t{iconType && <now-icon size=\"sm\" icon={iconType} />}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"sn-control-message-content\">\n\t\t\t\t\t\t\t<span>{message}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n\treturn template;\n};\n\n/**\n * This function returns the aria labels for each type of message.\n * This is needed because liveUpdate messages are different than\n * other message types in that they are objects not strings. This\n * ensures we get the correct aria label for the message.\n * @param {array} messages array of message objects\n * @param {string} type type of messages in the array\n * @returns {array} returns\n */\nconst getLabels = function (messages, type) {\n\treturn type === 'liveUpdate'\n\t\t? messages.map(message => message.getMessage().label)\n\t\t: messages;\n};\n\n/**\n * utility function that maps the array of messages into a messag map we use for rendering\n * @param {array} messages array of message objects\n * @returns {object} returns an object where types are keys\n */\nconst getMessageMap = function (messages) {\n\treturn messages.reduce((result, { type, message }) => {\n\t\tif (!isEmpty(type) && !isEmpty(message)) {\n\t\t\tif (Array.isArray(result[type])) {\n\t\t\t\tresult[type].push(message);\n\t\t\t} else {\n\t\t\t\tresult[type] = [message];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}, {});\n};\n\n/**\n * utility that determines if any relevant messages exist in the messageMap\n * @param {object} messageMap object of message type arrays\n * @returns {boolean}\n */\nconst hasMessages = messageMap =>\n\tsome(FIELD_MESSAGE_TYPES, s => !isEmpty(messageMap[s]));\n\n/**\n * react component that renders the message container and relevant messages\n * @param {object} props\n * @returns {ReactElement}\n */\nconst FieldMessages = function (props) {\n\tlet { messages, id } = props;\n\tif (!messages || messages.length == 0) return null;\n\n\tconst messageMap = getMessageMap(props.messages);\n\tif (!hasMessages(messageMap)) return null;\n\n\tconst { labels, elements } = reduce(\n\t\tFIELD_MESSAGE_TYPES,\n\t\t({ labels, elements }, type) => {\n\t\t\tconst messageMapResult = messageMap[type];\n\t\t\tif (messageMapResult) {\n\t\t\t\telements.push(getMessages(type, messageMapResult));\n\t\t\t\tconst label = getLabels(messageMapResult, type);\n\t\t\t\tlabels.push(label.join(', '));\n\t\t\t}\n\n\t\t\treturn { labels, elements };\n\t\t},\n\t\t{\n\t\t\tlabels: [],\n\t\t\telements: []\n\t\t}\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames('sn-control-messages')}\n\t\t\tid={id}\n\t\t\taria-label={labels.join(', ')}\n\t\t>\n\t\t\t{elements}\n\t\t</div>\n\t);\n};\n\nFieldMessages.propTypes = {\n\t/**\n\t *  array of message objects that must contain type and message itself.\n\t */\n\tmessages: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\ttype: PropTypes.oneOf(FIELD_MESSAGE_TYPES),\n\t\t\tmessage: PropTypes.oneOfType([\n\t\t\t\tPropTypes.string,\n\t\t\t\tPropTypes.shape({ getMessage: PropTypes.func })\n\t\t\t])\n\t\t})\n\t),\n\t/**\n\t * id of parent object\n\t */\n\tid: PropTypes.string.isRequired,\n\t/**\n\t * Specifies that the field should be rendered right-to-left.\n\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t * boolean true.\n\t */\n\treversed: PropTypes.oneOfType([PropTypes.string, PropTypes.bool])\n};\n\nexport { getMessages, getMessageMap, hasMessages };\nexport default FieldMessages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport makeClass from 'classnames';\nimport { mapValues, isString, isEmpty } from 'lodash';\nimport react from '@servicenow/ui-renderer-react';\nimport Label from './LabelReact';\nimport FieldMessages from './FieldMessagesReact';\nimport {\n\tisAttrTrue,\n\tgenerateSubComponentIds,\n\trenderHighlightedValueReact\n} from '@devsnc/sn-controls-common';\n\nimport style from './controlwrapper.scss';\n\nconst { createSlot } = react;\n\n/**\n * Wrapping component that provides common behavior for nearly all\n * for controls: label, focus classes, error state, etc.\n *\n * Components that are shaped more like an input should use\n * FieldAndDropdownWrapperSeismic instead.\n */\nexport default function ControlWrapper({\n\tlabel,\n\tchildren,\n\talign,\n\trequired,\n\treadonly,\n\tdescription,\n\tinvalid,\n\thasFocus,\n\treversed,\n\tmessages,\n\twrapperRef,\n\tslot,\n\tcomponentId,\n\tvariant,\n\tfieldset = false,\n\thelperContent,\n\thighlightedValue = {}\n}) {\n\tconst className = makeClass(\n\t\t'sn-control',\n\t\tmapValues(\n\t\t\t{\n\t\t\t\t'is-required': required,\n\t\t\t\t// TODO: we only support `readonly` prop, but we use the `disabled`\n\t\t\t\t// design. Work with XD to align.\n\t\t\t\t'is-readonly': readonly,\n\t\t\t\t'is-focus': hasFocus,\n\t\t\t\t'has-error': invalid,\n\t\t\t\t'is-align-end': align === 'end' && !isAttrTrue(reversed),\n\t\t\t\t'is-align-end-reversed': align === 'end' && isAttrTrue(reversed)\n\t\t\t},\n\t\t\tisAttrTrue\n\t\t),\n\t\tisString(variant)\n\t\t\t? variant\n\t\t\t\t\t.split(' ')\n\t\t\t\t\t.map(v => `-${v}`)\n\t\t\t\t\t.join(' ')\n\t\t\t: null\n\t);\n\n\tconst ids = generateSubComponentIds(componentId);\n\n\treturn (\n\t\t<div className={className} ref={wrapperRef} slot={slot}>\n\t\t\t<div style={{ position: 'relative' }}>\n\t\t\t\t{!fieldset && label && !isEmpty(label.trim()) && (\n\t\t\t\t\t<div className=\"form-field-label-wrap\">\n\t\t\t\t\t\t<Label\n\t\t\t\t\t\t\tid={ids.label}\n\t\t\t\t\t\t\thtmlFor={componentId}\n\t\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\t\treversed={reversed}\n\t\t\t\t\t\t\thelperContent={helperContent}\n\t\t\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Label>\n\t\t\t\t\t\t<div className=\"sn-control-highlighted-field-label-end\">\n\t\t\t\t\t\t\t{renderHighlightedValueReact(highlightedValue)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{fieldset ? (\n\t\t\t\t\t<fieldset className=\"default-fieldset\">\n\t\t\t\t\t\t<legend\n\t\t\t\t\t\t\tclassName=\"sn-control-label\"\n\t\t\t\t\t\t\tid={ids.label}\n\t\t\t\t\t\t\thtmlFor={componentId}\n\t\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</legend>\n\t\t\t\t\t\t{createSlot(children)}\n\t\t\t\t\t</fieldset>\n\t\t\t\t) : (\n\t\t\t\t\tcreateSlot(children)\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{description && (\n\t\t\t\t<p id={ids.description} className=\"sn-control-description\">\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t\t<FieldMessages id={ids.messages} messages={messages} />\n\t\t</div>\n\t);\n}\n\nControlWrapper.style = style;\nControlWrapper.propTypes = {\n\tlabel: PropTypes.string,\n\tchildren: PropTypes.any,\n\talign: PropTypes.any,\n\trequired: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\treadonly: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\tdescription: PropTypes.string,\n\tinvalid: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\thasFocus: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\tmessages: PropTypes.array,\n\twrapperRef: PropTypes.any,\n\tcomponentId: PropTypes.any,\n\tvariant: PropTypes.any,\n\tfieldset: PropTypes.bool,\n\thelperContent: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n\thighlightedValue: PropTypes.any\n};\n","import { createSlot } from '@servicenow/ui-renderer-snabbdom';\n\nimport { ControlWrapper } from '@devsnc/sn-record-control-wrapper';\n\n/**\n * Container component allowing multiple inputs (or input-like components)\n * to be grouped together.\n */\nexport default function SNInputGroup(props, children) {\n\treturn (\n\t\t<ControlWrapper {...props}>\n\t\t\t{children ?\n\t\t\t\t(<div className=\"sn-control-group\">{createSlot(children)}</div>)\n\t\t\t\t:\n\t\t\t\t(<div className=\"sn-control-group\"><slot></slot></div>)\n\t\t\t}\n\t\t</ControlWrapper>\n\t);\n}\n","import { actionTypes } from '@servicenow/ui-core';\n\nconst { COMPONENT_BOOTSTRAPPED } = actionTypes;\n\nexport default {\n    name: 'trackBootstrapBehaviour',\n    properties: {\n        trackBootstrap: {\n            default: {},\n            schema: {\n                type: 'object'\n            }\n        },\n        referringRecordId: {\n            schema: {\n                type: 'string'\n            }\n        },\n        referringTable: {\n            schema: {\n                type: 'string'\n            }\n        },\n        type: {\n            schema: {\n                type: 'string'\n            }\n        },\n        label: {\n            schema: {\n                type: 'string'\n            }\n        }\n    },\n    actionHandlers: {\n        [COMPONENT_BOOTSTRAPPED]: {\n            effect({ dispatch, properties }) {\n                const { trackBootstrap, referringRecordId, referringTable, type, label } = properties;\n                if (trackBootstrap?.action) {\n                    const payload = {\n                        SysId: referringRecordId,\n                        Table: referringTable,\n                        FieldType: type,\n                        FieldLabel: label\n                    };\n                    dispatch(trackBootstrap.action, payload);\n                }\n            }\n        }\n    }\n};\n","import { createCustomElement, actionTypes } from '@servicenow/ui-core';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {\n\twithValueChangeCallbacksView,\n\tcreateWithValueChangeCallbackBehavior,\n\ttransformState,\n\tSeismicComponentFieldPropDefaults,\n\tSeismicComponentProps,\n\ttrackBehavior\n} from '@devsnc/sn-controls-common';\nimport style from './input.scss';\n\nimport {\n\tcallParentOnChange,\n\tdefault as SNInput,\n\thandleChange,\n\tNOW_TEXTAREA_VALUE_SET,\n\tNOW_TEXTAREA_INPUT\n} from './SNInput';\nimport { default as SNInputGroup } from './SNInputGroup';\nimport trackBootstrapBehavior from './behaviors/trackBootstrapBehavior';\n\nconst { COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nconst withValueChangeCallbackBehavior = {\n\tbehavior: createWithValueChangeCallbackBehavior()\n};\n\ncreateCustomElement('sn-record-input-group', {\n\tview: state => {\n\t\treturn SNInputGroup(state.properties);\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior\n\t\t}\n\t]\n});\n\nconst actionHandlers = {\n\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\taction: {\n\t\t\tpayload: { name, value, previousValue }\n\t\t},\n\t\tupdateState\n\t}) => {\n\t\tif (name === 'value' && previousValue !== value) {\n\t\t\tupdateState({ value });\n\t\t}\n\t},\n\t[NOW_TEXTAREA_VALUE_SET]: handleChange,\n\t[NOW_TEXTAREA_INPUT]: callParentOnChange,\n\t'SN_RECORD_CHOICE#VALUE_CHANGED': { stopPropagation: true },\n\t'SN_RECORD_CHOICE#STAGED_VALUE_CHANGED': { stopPropagation: true }\n};\n\n/**\n *Basic input variations (Note that in this demo each input shares the same\n`value` state):\n *\n *\n * ```jsx\n * initialState = {\n\tvalue: 'I am value'\n};\n\n<Fragment>\n\t<sn-record-input\n\t\tlabel=\"I am label\"\n\t\tvalue={state.value}\n\t\ton-change={event => setState({ value: event.target.value })}\n\t/>\n\n\t<sn-record-input\n\t\tvalue={state.value}\n\t\ton-change={event => setState({ value: event.target.value })}\n\t>\n\t\t<span slot=\"label\">\n\t\t\tI use a slot for my label, <u>allowing</u> <strong>complex</strong>{' '}\n\t\t\t<i>HTML</i>\n\t\t</span>\n\t</sn-record-input>\n\n\t<sn-record-input\n\t\tvalue={state.value}\n\t\ton-change={event => setState({ value: event.target.value })}\n\t>\n\t\t<span slot=\"label\">I am an input with controls</span>\n\t\t<button slot=\"controls\" type=\"button\">\n\t\t\t<now-icon icon=\"search\" />\n\t\t</button>\n\t</sn-record-input>\n\n\t<sn-record-input placeholder=\"I will show a dropdown when focused\">\n\t\t<span slot=\"label\">Focus me!</span>\n\t\t<ul slot=\"dropdown\">\n\t\t\t<li>Option 1</li>\n\t\t\t<li>Option 2</li>\n\t\t\t<li>Option 3</li>\n\t\t</ul>\n\t</sn-record-input>\n</Fragment>;\n * ```\n *\n *## Usage for SNInputGroup\n\n```jsx\n<sn-record-input-group>\n\t<sn-record-input value=\"input\" />\n\n\t<sn-record-choice\n\t\tplaceholder=\"choice\"\n\t\tchoices={[\n\t\t\t{ displayValue: 'A' },\n\t\t\t{ displayValue: 'B' },\n\t\t\t{ displayValue: 'C' }\n\t\t]}\n\t/>\n\n\t<now-record-time value=\"02:30\" format=\"hh:mm a\" />\n</sn-record-input-group>\n * ```\n *\n * @seismicElement sn-record-input\n * @summary Input Component\n *\n */\ncreateCustomElement('sn-record-input', {\n\tview: withValueChangeCallbacksView(SNInput),\n\tstyles: style,\n\tsetInitialState: ({ properties }) => ({\n\t\thasFocus: false,\n\t\tvalue: properties.value === true ? '' : properties.value\n\t}),\n\tactions: {\n\t\t[NOW_TEXTAREA_VALUE_SET]: { stopPropagation: true },\n\t\t[NOW_TEXTAREA_INPUT]: { stopPropagation: true }\n\t},\n\tactionHandlers,\n\tbehaviors: [\n\t\ttrackBehavior,\n\t\ttrackBootstrapBehavior,\n\t\twithValueChangeCallbackBehavior,\n\t\t{\n\t\t\tbehavior: focusBehavior\n\t\t}\n\t],\n\ttransformState,\n\tproperties: {\n\t\t...SeismicComponentFieldPropDefaults,\n\t\t...SeismicComponentProps,\n\t\t/**\n\t\t * The number of lines until texteditor should be autoresized when 'autoresize' property is set to true.\n\t\t */\n\t\tautoresizeLineLimit: {\n\t\t\tschema: {\n\t\t\t\ttype: ['number', 'null']\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * When rendering a textarea, the number of character rows that should be\n\t\t * displayed.\n\t\t */\n\t\trows: {},\n\n\t\t/**\n\t\t * When rendering a textarea, the number of character columns that should be\n\t\t * displayed.\n\t\t */\n\t\tcols: {},\n\n\t\t/**\n\t\t * Wrap rendering a textarea, this specifies how text should be wrapped.\n\t\t */\n\t\twrap: {},\n\n\t\t/**\n\t\t * The type of input to render. Note that while any HTML5 type is valid,\n\t\t * there are other form control components that will extend the default\n\t\t * behavior.  Using these higher-order components is often preferred to an\n\t\t * input with an explicit type.\n\t\t *\n\t\t * Use `type=\"auto\"` to enable the component to intelligently switch between\n\t\t * a regular input and a textarea.\n\t\t */\n\t\ttype: {},\n\n\t\t/**\n\t\t * When provided, aligns the input text to the end of the input.\n\t\t */\n\t\talign: {},\n\n\t\t/**\n\t\t * When rendering numeric inputs, the minimum value that should be permitted.\n\t\t */\n\t\tmin: {},\n\n\t\t/**\n\t\t * When rendering numeric inputs, the maximum value that should be permitted.\n\t\t */\n\t\tmax: {},\n\n\t\t/**\n\t\t * When rendering numeric inputs, the minimum distance between 2 valid values.\n\t\t */\n\t\tstep: {},\n\n\t\t/**\n\t\t * Maximum number of characters to allow in the input.\n\t\t */\n\t\tmaxlength: {},\n\n\t\t/**\n\t\t * For backwards compatibility, some string fields should not enforce maxlength.\n\t\t * This is an internal property. Please do not use.\n\t\t *\n\t\t * @see https://support.servicenow.com/kb?id=kb_article_view&sys_kb_id=977420dbdbaee340f0612183ca961914\n\t\t * @private\n\t\t */\n\t\tignoreMaxlength: {},\n\n\t\t/**\n\t\t * When true, the input will be focused immediately upon being rendered.\n\t\t */\n\t\tautofocus: {},\n\n\t\t/**\n\t\t * When rendering a textarea, whether or not to show a character counter.\n\t\t */\n\t\tshowCounter: {},\n\t\t/**\n\t\t * When rendering a textarea, whether or not to show the resize handle.\n\t\t */\n\t\tresizable: {},\n\n\t\t/**\n\t\t * Disable the field so it can not be used or tabbed to\n\t\t */\n\t\tdisabled: {},\n\n\t\t/**\n\t\t * When provided, adds the sn-record-control variant to render\n\t\t */\n\t\tvariant: {},\n\t\tvalue: {},\n\n\t\t/**\n\t\t * When provided, allows the parent component to listen in on each input change\n\t\t */\n\t\tonChange: {},\n\t\tonBlur: {},\n\t\tonFocus: {},\n\t\tchildren: {},\n\t\tonKeyPress: {},\n\n\t\t/**\n\t\t * Content to use as dropdown\n\t\t */\n\t\tdropdown: {},\n\n\t\t/**\n\t\t * Content to use as the label\n\t\t */\n\t\tlabel: {},\n\n\t\t/**\n\t\t * The `role` of the input element\n\t\t */\n\t\trole: {},\n\n\t\t/**\n\t\t * Whether FocusWatcher should listen for outside scroll event\n\t\t */\n\t\thandleOutsideScrollFocus: {},\n\n\t\t/**\n\t\t * Handle dropdowns the old way\n\t\t */\n\t\tfallbackDropdownBehavior: {},\n\t\tcreatedCallbacks: { default: false },\n\t\t/**\n\t\t * The highlighted Value labels that you want to display beside the Field Label. Can be an array of highlighted values or just single highlighted value object\n\t\t * @type {[{ value: 'string', status: 'string', showIcon: boolean, variantName: 'string', colorName: 'string',iconName: 'string'  }]}\n\t\t */\n\t\thighlightedValue: {\n\t\t\tdefault: {},\n\t\t\tschema: { anyOf: [{ type: 'object' }, { type: 'array' }] }\n\t\t},\n\n\t\t/**\n\t\t * Field decorations are being passed with g_form.addDecoration(fieldName, icon, text); method\n\t\t * via client script using g_form api\n\t\t * which renders alongside the field's label\n\t\t * @type {Array.<{icon: string, text: string}>}\n\t\t **/\n\t\tdecorations: {\n\t\t\tdefault: [],\n\t\t\ttype: 'array'\n\t\t},\n\t\t/**\n\t\t * Flag that indicates whether the component fits to its parent's height. When true, the component is grown to its parent's height. Default: false.\n\t\t * @-type {boolean}\n\t\t */\n\t\tfitToParent: { default: false, schema: { type: 'boolean' } },\n\t\t/**\n\t\t * Specifies the type of input control to render based on the expected value type.\n\t\t * This setting is applied only when `fieldRegex` mappings are present; otherwise, it defaults to `'text'`.\n\t\t *\n\t\t * @type {('email' | 'ip' | 'number' | 'text')}\n\t\t * @uib.description Defines the input field type, which can be one of the following: 'email', 'ip', 'number', or 'text' or `textarea` based on maxlength.\n\t\t */\n\t\tmobileKeypadType: {\n\t\t\tdefault: 'text',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['email', 'ip', 'number', 'text']\n\t\t\t}\n\t\t}\n\t}\n});\n\nexport { SNInput, SNInputGroup, actionHandlers };\nexport { default as Input } from './Input';\n","import { Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport '@servicenow/now-tooltip';\nimport '@servicenow/now-button';\nimport '@servicenow/now-icon';\nimport { isAttrTrue } from '@devsnc/sn-controls-common';\n\nexport const oldIconToEDSIcon = {\n\tsearch: 'magnifying-glass-outline',\n\tphone: 'phone-outline',\n\t'info-circle': 'info-circle-outline'\n};\n\nconst getIcon = old => oldIconToEDSIcon[old] || old;\n\nconst view = state => {\n\tconst {\n\t\tproperties: {\n\t\t\ticon: iconProp,\n\t\t\tdisabled = false,\n\t\t\tvariant = 'tertiary',\n\t\t\tsize = 'sm',\n\t\t\tbare = true,\n\t\t\ticonic = false,\n\t\t\tconfigAria = {},\n\t\t\treverseIconPlacement,\n\t\t\tlabel,\n\t\t\ttooltip\n\t\t}\n\t} = state;\n\n\tlet icon = getIcon(iconProp);\n\n\tlet ButtonComponent = 'now-button';\n\tif (bare && iconic) {\n\t\tButtonComponent += '-iconic';\n\t}\n\n\tlet children = reverseIconPlacement ? (\n\t\t<Fragment>\n\t\t\t{label && <span className=\"now-line-height-crop\">{label}</span>}\n\n\t\t\t{!iconic && icon && (\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"now-button-icon\"\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tsize={size}\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Fragment>\n\t) : undefined;\n\n\treturn (\n\t\t<ButtonComponent\n\t\t\tlabel={label}\n\t\t\tsize={size}\n\t\t\ticon={icon}\n\t\t\ticon-name={icon}\n\t\t\ticon-start={icon}\n\t\t\tdisabled={isAttrTrue(disabled) ? true : undefined}\n\t\t\tvariant={variant}\n\t\t\tbare={bare}\n\t\t\ttooltipContent={tooltip}\n\t\t\tconfig-aria={{\n\t\t\t\t// handles when tooltip is undefined\n\t\t\t\t'aria-label': tooltip || '',\n\t\t\t\t// allow for explicit overrides of aria-label\n\t\t\t\t...configAria\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</ButtonComponent>\n\t);\n};\n\nexport default view;\n","import { isFunction } from \"lodash\";\n\nexport const handleButtonClick = ({ state: { properties }, action }) => {\n\tlet { onClick } = properties;\n\n\tif (isFunction(onClick)) onClick(action);\n};\n\nexport const actionHandlers = {\n\t'NOW_BUTTON#CLICKED': { effect: handleButtonClick, stopPropagation: true },\n\t'NOW_BUTTON_BARE#CLICKED': {\n\t\teffect: handleButtonClick,\n\t\tstopPropagation: true\n\t},\n\t'NOW_BUTTON_ICONIC#CLICKED': {\n\t\teffect: handleButtonClick,\n\t\tstopPropagation: true\n\t}\n};","import { createCustomElement } from '@servicenow/ui-core';\nimport { transformState } from '@devsnc/sn-controls-common';\nimport { default as view } from './view';\nimport style from './style.scss';\nimport { actionHandlers } from './actionHandlers';\n\ncreateCustomElement('sn-record-control', {\n\tview,\n\tstyle,\n\tproperties: {\n\t\t/**\n\t\t * Text for the button\n\t\t * @type {string}\n\t\t */\n\t\tlabel: {},\n\n\t\t/**\n\t\t * Variant for the button\n\t\t * @type {string}\n\t\t */\n\t\tvariant: {},\n\n\t\t/**\n\t\t * Size of the button\n\t\t * @type {string}\n\t\t */\n\t\tsize: {},\n\n\t\t/**\n\t\t * placement of the button\n\t\t * @type {boolean}\n\t\t */\n\t\treverseIconPlacement: {},\n\n\t\t/**\n\t\t * type of the button\n\t\t * @type {boolean}\n\t\t */\n\t\tbare: {},\n\n\t\t/**\n\t\t * Label for the tooltip\n\t\t * @type {string}\n\t\t */\n\t\ttooltip: {},\n\n\t\t/**\n\t\t * Icon for the control\n\t\t * @type {string}\n\t\t */\n\t\ticon: {},\n\n\t\t/**\n\t\t * Whether button is iconic\n\t\t * @type {boolean}\n\t\t */\n\t\ticonic: {},\n\n\t\t/**\n\t\t * ref callback to inner button element\n\t\t * @type {function}\n\t\t */\n\t\tinnerRef: {},\n\n\t\t/**\n\t\t * Click handler for the control\n\t\t * @type {function}\n\t\t */\n\t\tonClick: {},\n\n\t\t/**\n\t\t * Is the control disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisabled: {},\n\n\t\t/**\n\t\t * aria-* attribute configuration\n\t\t * @type {object}\n\t\t */\n\t\tconfigAria: {},\n\n\t\t/**\n\t\t * Content to render within the control button\n\t\t * @type {node}\n\t\t */\n\t\tchildren: {}\n\t},\n\tactionHandlers: actionHandlers,\n\ttransformState\n});\n\nexport default view;\n","import { t } from 'sn-translate';\n\nexport const POST_ATTACHMENT_QUERY = 'POST_ATTACHMENT_QUERY';\nexport const POST_DATA_START = 'POST_DATA_START';\nexport const POST_DATA_PROGRESS = 'POST_DATA_PROGRESS';\nexport const POST_DATA_SUCCESS = 'POST_DATA_SUCCESS';\nexport const POST_DATA_FAILURE = 'POST_DATA_FAILURE';\n\nexport const GET_ATTACHMENTS_DATA = 'GET_ATTACHMENTS_DATA';\nexport const GET_ATTACHMENTS_SUCCESS = 'GET_ATTACHMENTS_SUCCESS';\nexport const GET_ATTACHMENTS_FAILURE = 'GET_ATTACHMENTS_FAILURE';\n\nexport const EDITOR_ON_CHANGE = 'TINYMCE_EDITOR#ON_CHANGE';\nexport const EDITOR_ON_KEYDOWN = 'TINYMCE_EDITOR#ON_KEYDOWN';\nexport const EDITOR_ON_FOCUS_OUT = 'TINYMCE_EDITOR#FOCUS_OUT';\nexport const EDITOR_ON_FOCUS_IN = 'TINYMCE_EDITOR#FOCUS_IN';\nexport const EDITOR_ON_BLUR = 'TINYMCE_EDITOR#ON_BLUR';\nexport const EDITOR_ON_FOCUS = 'TINYMCE_EDITOR#ON_FOCUS';\nexport const EDITOR_ON_CLICK = 'TINYMCE_EDITOR#ON_CLICK';\nexport const EDITOR_SET_CONTENT = 'TINYMCE_EDITOR#SET_CONTENT';\nexport const EDITOR_SET_FOCUS = 'TINYMCE_EDITOR#SET_FOCUS';\nexport const EDITOR_ON_RESIZE = 'TINYMCE_EDITOR#ON_RESIZE';\nexport const EDITOR_ON_ITEM_SELECT_TRACK =\n\t'TINYMCE_EDITOR#ON_ITEM_SELECT_TRACK';\n\nexport const INSERT_PILL = 'INSERT_PILL';\n\nexport const CODE_BLOCK_PATTERN = /^\\[code\\]([\\s\\S]*)\\[\\/code\\]$/;\n\n// Items not supported by workspace version of tinymce\nexport const PLUGIN_BLOCKLIST = ['wordcount'];\n\nexport const OBSOLETE_PLUGINS = [\n\t// TinyMCE plugins that were moved to core\n\t'textcolor',\n\t'colorpicker',\n\t'sn_resizer',\n\t'hr',\n\t'noneditable',\n\t'print',\n\t'paste',\n\t// SN plugins that were removed\n\t'a11y_fixes',\n\t'anchor_fix',\n\t'data_uri_sanitize',\n\t'enable_iframe_media',\n\t'instructional_text',\n\t'notificationhandler',\n\t'readonlymode',\n\t'snLink',\n\t// Plugins that were completely removed from everywhere\n\t'compat3x',\n\t'fullpage',\n\t'legacyoutput',\n\t'tabfocus',\n\t'spellchecker'\n];\n\n// Plugins required for all tinymce instances\nexport const REQUIRED_PLUGINS = [\n\t'listitem_fix',\n\t'powerpaste',\n\t'sn_popups_fix',\n\t'sn_tooltip'\n].join(' ');\n\n// @see TinyMCE ResizeTypes.VERTICAL\nexport const EDITOR_VERTICAL_RESIZE_TYPE = 2;\n\n// Number of pixes surrounding the editor content\nexport const EDITOR_CONTENT_MARGIN = 16;\n// Number of pixels of margin surrounding a single line in the html editor\nexport const EDITOR_LINE_MARGIN = 13.333;\n// Number of pixels representing the default font height of the editor\nexport const EDITOR_FONT_HEIGHT = 18;\n\n// Size of editor toolbar in pixels\nexport const EDITOR_TOOLBAR_HEIGHT = 39;\n// Size of the editor statusbar in pixels\nexport const EDITOR_STATUSBAR_HEIGHT = 25;\n\nexport const SETUP_TINYMCE_EDITOR = 'SETUP_TINYMCE_EDITOR';\nexport const REMOVE_TINYMCE_EDITOR = 'REMOVE_TINYMCE_EDITOR';\n\nexport const DEFAULT_FONT_FAMILY = 'Verdana';\nconst DEFAULT_FONT = `${DEFAULT_FONT_FAMILY.toLowerCase()},sans-serif`;\nexport const DEFAULT_FONT_SIZE = '10pt';\nexport const DEFAULT_FONT_FORMAT = `${DEFAULT_FONT_FAMILY}=${DEFAULT_FONT}`;\n\n// Some defaults used by tinymce v4 compatibility layer\n// TODO: remove when compatibility layer gets removed\nexport const DEFAULT_MIN_HEIGHT = 100;\n// refer - ./html.scss for min-height: 160px for the same element, which is a fallback of default height passed to tinymce init function.\nexport const DEFAULT_HEIGHT = 160;\nexport const DEFAULT_MAX_HEIGHT = 2000;\n\n//class to enable scroll in tinyMCE body when required\nexport const OVERRIDE_OVERFLOW_SELECTOR = 'override-overflow-y';\nexport const OVERRIDE_OVERFLOW_STYLE = `.${OVERRIDE_OVERFLOW_SELECTOR} { overflow-y : auto !important}`;\n\nexport const VALID_LINK_TARGETS = ['', '_self', '_blank', '_top'];\n\nexport const MAXIMUM_DOM_PARSING_DEPTH = 10;\nexport const TEXT_AREA_ID_PREFIX = 'html-';\nexport const DEFAULT_ARIA_LABEL = 'Rich Text Area. Press ALT-0 for help.';\nexport const TOOLBAR_INSTRUCTION_TEXT = t(\n\t'In the editor, press Alt+F10 to focus on the toolbar. Mac press Option+F10 to focus on the toolbar. Press escape to return to the editor.'\n);\nexport const FIT_TO_PARENT_OPTION = 'fit_to_parent';\n","import {\n\trenderTranslatedText,\n\trenderTranslateIcon\n} from '@devsnc/sn-controls-common';\nimport '@devsnc/sn-record-control';\nimport { tinymce } from 'sn-tinymce';\nimport { ControlWrapper } from '@devsnc/sn-record-control-wrapper';\nimport { SETUP_TINYMCE_EDITOR } from './constants';\nimport makeClass from 'classnames';\n\nexport const removeTinymceEditor = ({ elm, updateState }) => {\n\tconst node = elm.querySelector('textarea');\n\t// For some reason tinymce saves settings to global tinymce and then replaces it for each new instance\n\t// Lets set it to null to prevent leaks when the targets match and we are removing this instance\n\tif (node === tinymce?.settings?.target) {\n\t\ttinymce.settings = {};\n\t}\n\n\ttry {\n\t\ttinymce?.get(node.id).remove();\n\t} catch (e) {\n\t\t// For firefox, we need to wrap this in a try block otherwise it MIGHT throw NS_ERROR_UNEXPECTED\n\t\t// We dont need to handle it since its gone\n\t}\n\tupdateState({\n\t\tpath: 'editor',\n\t\tvalue: null,\n\t\toperation: 'set',\n\t\tshouldRender: false\n\t});\n};\n\n/**\n * Allows users to input rich text data via [TinyMCE](http://tiny.cloud).\n */\nconst TinyMCEEditor = ({ updateState, dispatch, ...properties }) => (\n\t<div\n\t\tclassName={makeClass('sn-editor', {\n\t\t\t'fit-to-parent': properties.fitToParent\n\t\t})}\n\t\thook-insert={({ elm }) => {\n\t\t\tdispatch(SETUP_TINYMCE_EDITOR, { elm });\n\t\t}}\n\t\thook-destroy={({ elm }) => {\n\t\t\tconst { editor } = properties;\n\t\t\tremoveTinymceEditor({ elm, editor, updateState });\n\t\t}}\n\t>\n\t\t<ControlWrapper {...properties}>\n\t\t\t<div\n\t\t\t\tclassName={makeClass({\n\t\t\t\t\t'fit-to-parent': properties.fitToParent\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={makeClass({\n\t\t\t\t\t\t'fit-to-parent': properties.fitToParent\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{properties.isTranslationEnabled ? (\n\t\t\t\t\t\t<div className=\"sn-record-dts-translate-icon-html\">\n\t\t\t\t\t\t\t{renderTranslateIcon(properties, dispatch, updateState, true)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t[]\n\t\t\t\t\t)}\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tid={properties.componentId}\n\t\t\t\t\t\tplaceholder={properties.placeholder}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{properties.isTranslationEnabled\n\t\t\t\t\t? renderTranslatedText(properties.translatedText, true)\n\t\t\t\t\t: []}\n\t\t\t</div>\n\t\t</ControlWrapper>\n\t</div>\n);\n\nexport default TinyMCEEditor;\n","/**\n * Temporary solution while we wait for NDS to provide a theme for code-mirror\n * - This code analyze the rgb values of some theme css vars to determine if is a \"dark\" theme, and place the result\n * \tas part of the tinymce configuration so code-mirror can use it to apply the closest OOB dark theme that\n * \tresembles the polaris dark theme. Once a real theme that receives css variables is available, we will remove this\n * \tcode and is calls in TinyMCEThemeBehavior.js.\n * \t@see https://code.devsnc.com/gist/david-leonard/df63e53ca7915a88c981fb576ca01cca\n */\n\nconst isDark = theme => {\n\tconst BACKGROUND_PRIMARY = '--now-color_background--primary';\n\tconst NEUTRAL_0 = '--now-color--neutral-0';\n\tconst NEUTRAL_20 = '--now-color--neutral-20';\n\tif (!theme[BACKGROUND_PRIMARY]) {\n\t\treturn false;\n\t}\n\t/*\n\t * Shortcut that requires no math and we'll hit 99% of the time:\n\t * - If background primary is the same as neutral 0, we're in light theme\n\t * - If background primary is the same as neutral 20, we're in dark theme\n\t * Why? Because that's the defaults hardwired into UXF if the customer\n\t * does not override in their theme.\n\t * See: https://code.devsnc.com/dev/glide/blob/972a9e2576084a03b3d8490e0a65584dddd628d8/glide-ux-builder/src/main/java/com/glide/uxframework/UxFrameworkColorGenerator.java#L111\n\t */\n\tif (theme[NEUTRAL_0] && theme[BACKGROUND_PRIMARY] === theme[NEUTRAL_0]) {\n\t\treturn false;\n\t}\n\tif (theme[NEUTRAL_20] && theme[BACKGROUND_PRIMARY] === theme[NEUTRAL_20]) {\n\t\treturn false;\n\t}\n\t/*\n\t * If we reach this point the customer probably redefined background primary\n\t * to be someting else. So we'll use the WCAG 2.0 calculation [1] to calculate\n\t * the luminance of background primary. The luminance value is between 0-1\n\t * where `0` is darkest black (#000) and `1` is lightest white (#fff).\n\t *\n\t * [1] https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef)\n\t */\n\tconst [r, g, b] = theme[BACKGROUND_PRIMARY].rgbValues.split(',');\n\tconst calcLum = c => {\n\t\tc /= 255;\n\t\treturn c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n\t};\n\tconst lum =\n\t\tcalcLum(parseInt(r)) * 0.2126 +\n\t\tcalcLum(parseInt(g)) * 0.7152 +\n\t\tcalcLum(parseInt(b)) * 0.0722;\n\tif (lum > 0.5) {\n\t\t/* Background primary is bright white or very light gray */\n\t\treturn false;\n\t}\n\t/* Background primary is dark black or dark gray */\n\treturn true;\n};\n\n// Apply result of theme analysis to tinyMce settings\nexport const applyDarkSettings = (props, editor) => {\n\tconst _do_not_use_is_dark_theme = '_do_not_use_is_dark_theme';\n\tif (editor.options.isRegistered(_do_not_use_is_dark_theme)) {\n\t\teditor.options.set(\n\t\t\t_do_not_use_is_dark_theme,\n\t\t\tisDark(props.behaviors.theme)\n\t\t);\n\t}\n};\n","import { get, isString, omit } from 'lodash';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport { applyDarkSettings } from './DetectDarkness';\n\n// Changes to any of the following will trigger the themeBehavior\nconst THEME_SASS_VARS = [\n\t'--now-color--neutral-0',\n\t'--now-color--neutral-18',\n\t'--now-color--secondary-1',\n\t'--now-color--secondary-2',\n\t'--now-color--secondary-3',\n\t'--now-color_alert--info-1',\n\t'--now-color_background--primary',\n\t'--now-color_text--primary',\n\t'--now-color_background--tertiary',\n\t'--sn-tinymce_content-background',\n\t'--sn-tinymce_content-mention-background',\n\t'--sn-tinymce_content-mention-text',\n\t'--sn-tinymce_content-text',\n\n\t//These are to support variants\n\t'--now-color_grouped--gray-5',\n\t'--now-color_grouped--yellow-0',\n\t'--now-color_grouped--magenta-0',\n\t'--now-color_grouped--pink-0',\n\t'--now-color_grouped--orange-0',\n\t'--now-color_grouped--brown-0',\n\t'--now-color_grouped--green-0',\n\t'--now-color_grouped--green-yellow-0',\n\t'--now-color_grouped--blue-0'\n];\n\nexport const variantMappings = {\n\tneutral: {\n\t\t['--sn-tinymce_content-background']: '--now-color_background--primary',\n\t\t['--sn-tinymce_content-mention-background']:\n\t\t\t'--now-color_background--tertiary',\n\t\t['--sn-tinymce_content-text']: '--now-color--text-primary',\n\t\t['--sn-tinymce_content-mention-text']: '--now-color_text--primary'\n\t},\n\tyellow: {\n\t\t['--sn-tinymce_content-background']: '--now-color_grouped--yellow-0',\n\t\t['--sn-tinymce_content-mention-background']:\n\t\t\t'--now-color_background--tertiary',\n\n\t\t['--sn-tinymce_content-text']: '--now-color_grouped--gray-5',\n\t\t['--sn-tinymce_content-mention-text']: '--now-color_text--primary'\n\t},\n\tmagenta: {\n\t\t['--sn-tinymce_content-background']: '--now-color_grouped--magenta-0',\n\t\t['--sn-tinymce_content-mention-background']:\n\t\t\t'--now-color_grouped--magenta-1',\n\t\t['--sn-tinymce_content-text']: '--now-color_grouped--gray-5',\n\t\t['--sn-tinymce_content-mention-text']: '--now-color_grouped--gray-5'\n\t},\n\tpink: {\n\t\t['--sn-tinymce_content-background']: '--now-color_grouped--pink-0',\n\t\t['--sn-tinymce_content-mention-background']: '--now-color_grouped--pink-1',\n\t\t['--sn-tinymce_content-text']: '--now-color_grouped--gray-5',\n\t\t['--sn-tinymce_content-mention-text']: '--now-color_grouped--gray-5'\n\t},\n\torange: {\n\t\t['--sn-tinymce_content-background']: '--now-color_grouped--orange-0',\n\t\t['--sn-tinymce_content-mention-background']:\n\t\t\t'--now-color_grouped--orange-1',\n\t\t['--sn-tinymce_content-text']: '--now-color_grouped--gray-5',\n\t\t['--sn-tinymce_content-mention-text']: '--now-color_grouped--gray-5'\n\t},\n\tbrown: {\n\t\t['--sn-tinymce_content-background']: '--now-color_grouped--brown-0',\n\t\t['--sn-tinymce_content-mention-background']: '--now-color_grouped--brown-1',\n\t\t['--sn-tinymce_content-text']: '--now-color_grouped--gray-5',\n\t\t['--sn-tinymce_content-mention-text']: '--now-color_grouped--gray-5'\n\t},\n\tgreen: {\n\t\t['--sn-tinymce_content-background']: '--now-color_grouped--green-0',\n\t\t['--sn-tinymce_content-mention-background']: '--now-color_grouped--green-1',\n\t\t['--sn-tinymce_content-text']: '--now-color_grouped--gray-5',\n\t\t['--sn-tinymce_content-mention-text']: '--now-color_grouped--gray-5'\n\t},\n\t'green-yellow': {\n\t\t['--sn-tinymce_content-background']: '--now-color_grouped--green-yellow-0',\n\t\t['--sn-tinymce_content-mention-background']:\n\t\t\t'--now-color_grouped--green-yellow-1',\n\t\t['--sn-tinymce_content-text']: '--now-color_grouped--gray-5',\n\t\t['--sn-tinymce_content-mention-text']: '--now-color_grouped--gray-5'\n\t},\n\tblue: {\n\t\t['--sn-tinymce_content-background']: '--now-color_grouped--blue-0',\n\t\t['--sn-tinymce_content-mention-background']: '--now-color_grouped--blue-1',\n\t\t['--sn-tinymce_content-text']: '--now-color_grouped--gray-5',\n\t\t['--sn-tinymce_content-mention-text']: '--now-color_grouped--gray-5'\n\t}\n};\n\nexport const NDSCssVarMap = (variant = 'neutral') =>\n\tvariantMappings[variant] || variantMappings['neutral'];\n\nconst getThemeVars = props => get(props, 'behaviors.theme', []);\n\nconst reduceToCssVars = (keys, themeVars, transform) => {\n\tlet css = '';\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst customVar = keys[i];\n\t\tconst value = transform\n\t\t\t? themeVars[transform(customVar)]\n\t\t\t: themeVars[customVar];\n\t\tif (value) {\n\t\t\tconst px = value.px ? value.px + 'px' : '';\n\t\t\tconst rgb = value.rgbValues || '';\n\t\t\tconst str = isString(value) ? value : '';\n\t\t\tcss += `${customVar}: ${rgb || px || str};\\n`;\n\t\t}\n\t}\n\treturn css;\n};\n\nconst getMappedThemeDefinitions = props => {\n\tconst { variant = 'neutral' } = props;\n\tconst cssVars = NDSCssVarMap(variant);\n\tconst mapToNDSTransformer = v => cssVars[v] || v;\n\treturn reduceToCssVars(\n\t\tObject.keys(cssVars),\n\t\tgetThemeVars(props),\n\t\tmapToNDSTransformer\n\t);\n};\n\nexport const applyTheme = (props, editor) => {\n\tif (!editor) return;\n\n\tconst themeVars = getThemeVars(props);\n\tconst doc = editor.getDoc();\n\tconst nodeFound = doc.querySelector('#theme-vars');\n\tconst node = nodeFound || doc.createElement('style');\n\tnode.innerHTML = `\n\t\t:root {\n\t\t\t${reduceToCssVars(Object.keys(themeVars), themeVars || {})}\n\t\t\t${getMappedThemeDefinitions(props)}\n\t\t}\n\t`;\n\n\tapplyDarkSettings(props, editor);\n\n\tif (!nodeFound) {\n\t\tnode.setAttribute('id', 'theme-vars');\n\t\tdoc.head.prepend(node);\n\t}\n};\n\nconst NDS_INTERNAL_THEME_UPDATE_ACTION = 'PRIVATE#THEME_CHANGED';\nexport const tinyMceThemeBehavior = {\n\tname: 'tinymce_theme_behavior',\n\tactionHandlers: {\n\t\t[NDS_INTERNAL_THEME_UPDATE_ACTION]: {\n\t\t\teffect: ({ state, properties }) => {\n\t\t\t\tapplyTheme(\n\t\t\t\t\t{ ...properties, ...omit(state, ['properties', 'editor']) },\n\t\t\t\t\tstate.editor\n\t\t\t\t);\n\t\t\t},\n\t\t\tstopPropagation: true\n\t\t}\n\t}\n};\n\nconst TINYMCE_THEME_BEHAVIORS = [\n\t{ behavior: themeBehavior, options: { items: THEME_SASS_VARS } },\n\t{ behavior: tinyMceThemeBehavior }\n];\n\nexport default TINYMCE_THEME_BEHAVIORS;\n","/*\n * NOTE: AUTO GENERATED FILE. DO NOT MANUALLY MODIFY.\n *\n * This file is autogenerated to ensure that the asset path always reflects the correct version of\n * sn-tinymce.\n */\nexport const getAssetPath = () =>\n\t`/uxasset/externals/sn-tinymce/28.0.6/js/tinymce`;\n\nconst REPLACE_REGEX = /(\\?.*)?$/i;\nconst replace = url =>\n\turl !== '/scripts/now_assist_context_menu_tinymce_plugin.js'\n\t\t? url.replace(REPLACE_REGEX, '.jsdbx$1')\n\t\t: url;\n\nexport const overrideAddCacheSuffix = tinymce => {\n\tif (!tinymce.__sn_addCacheSuffixOverwritten) {\n\t\tconst oldAddCacheSuffix = tinymce.util.Tools._addCacheSuffix;\n\t\ttinymce.util.Tools._addCacheSuffix = url =>\n\t\t\toldAddCacheSuffix.call(tinymce.util.Tools, replace(url));\n\n\t\ttinymce.__sn_addCacheSuffixOverwritten = true;\n\t}\n\n\treturn tinymce;\n};\n","export const OBSOLETE_PLUGINS = [\n\t'fullpage',\n\t'legacyoutput',\n\t'tabfocus',\n\t'spellchecker',\n\t'hr',\n\t'noneditable',\n\t'paste',\n\t'print',\n\t'colorpicker',\n\t'contextmenu',\n\t'textcolor'\n];\n\nexport const RENAMED_PLUGINS = {\n\timagetools: 'editimage',\n\ttoc: 'tableofcontents'\n};\n\nexport const RENAMED_TOOLBAR_ITEMS = {\n\tformatselect: 'blocks',\n\tfontselect: 'fontfamily',\n\tfontsizeselect: 'fontsize',\n\tstyleselect: 'styles',\n\ttoc: 'tableofcontents',\n\ttocupdate: 'tableofcontentsupdate'\n};\n","import {\n\tOBSOLETE_PLUGINS,\n\tRENAMED_PLUGINS,\n\tRENAMED_TOOLBAR_ITEMS\n} from './constants';\n\nconst join = function (items) {\n\treturn items.join(' ');\n};\n\nconst uniq = function (items) {\n\tconst uMap = {};\n\treturn items.filter(function (item) {\n\t\tif (uMap[item]) return false;\n\t\treturn (uMap[item] = 1);\n\t});\n};\n\nconst rename = function (renameMap) {\n\treturn function (items) {\n\t\treturn items.map(function (item) {\n\t\t\treturn renameMap[item] || item;\n\t\t});\n\t};\n};\n\nconst filterOut = function (remove) {\n\treturn function (items) {\n\t\treturn items.filter(function (item) {\n\t\t\treturn remove.indexOf(item) < 0;\n\t\t});\n\t};\n};\n\nconst split = function (pattern) {\n\treturn function (str) {\n\t\treturn !str ? [] : str.split(pattern);\n\t};\n};\n\nconst splitPlugins = split(/[, ]+/);\nconst splitToolbars = split(/[,| ]+/);\n\nconst renameToolbar = function (replacementMap) {\n\treturn function (toolbar) {\n\t\t// Create a regular expression pattern for all keys in the replacement map\n\t\tconst pattern = new RegExp(\n\t\t\t'\\\\b(' + Object.keys(replacementMap).join('|') + ')\\\\b',\n\t\t\t'g'\n\t\t);\n\n\t\t// Replace occurrences based on the map\n\t\treturn toolbar?.replace(pattern, function (match) {\n\t\t\treturn replacementMap[match] || match; // Use the replacement from the map or the original match if not found\n\t\t});\n\t};\n};\n\nconst flow = function () {\n\tconst funcs = [].slice.call(arguments);\n\treturn function (value) {\n\t\tif (funcs.length > 0) {\n\t\t\tvalue = funcs.reduce(function (val, func) {\n\t\t\t\treturn func(val);\n\t\t\t}, value);\n\t\t}\n\t\treturn value;\n\t};\n};\n\nconst transformPlugins = plugins => {\n\tif (!plugins) return plugins;\n\n\treturn flow(\n\t\tsplitPlugins,\n\t\tfilterOut(OBSOLETE_PLUGINS),\n\t\trename(RENAMED_PLUGINS),\n\t\tuniq,\n\t\tjoin\n\t)(plugins);\n};\n\nconst transformValidButtons = validButtons => {\n\tif (!validButtons) return validButtons;\n\n\treturn flow(\n\t\trenameToolbar(RENAMED_TOOLBAR_ITEMS),\n\t\tsplitToolbars,\n\t\tuniq,\n\t\tjoin\n\t)(validButtons);\n};\n\nconst transformToolbar = toolbar => {\n\tif (!toolbar) return toolbar;\n\n\tconst renameToolbarGroup = flow(renameToolbar(RENAMED_TOOLBAR_ITEMS));\n\n\tif (Array.isArray(toolbar)) {\n\t\treturn toolbar.map(toolbarItem => renameToolbarGroup(toolbarItem));\n\t}\n\n\treturn renameToolbarGroup(toolbar);\n};\n\nexport { transformPlugins, transformValidButtons, transformToolbar };\n","import {\n\ttransformPlugins,\n\ttransformToolbar,\n\ttransformValidButtons\n} from './utils';\n\nconst TinyMCEV5CompatibleMode = properties => {\n\tconst { validPlugins, plugins, validButtons, toolbar } = properties;\n\n\tconst modifiedValidPluigins = transformPlugins(validPlugins);\n\tconst modifiedPlugins = transformPlugins(plugins);\n\tconst modifiedValidButtons = transformValidButtons(validButtons);\n\tconst modifiedToolbar = transformToolbar(toolbar);\n\n\tconst compatibleProps = {\n\t\t...properties,\n\t\tvalidPlugins: modifiedValidPluigins,\n\t\tplugins: modifiedPlugins,\n\t\tvalidButtons: modifiedValidButtons,\n\t\ttoolbar: modifiedToolbar\n\t};\n\n\treturn compatibleProps;\n};\n\nexport { TinyMCEV5CompatibleMode };\n","import { isEmpty, isNil } from '@devsnc/sn-controls-common';\n\nconst PLUGIN_NAME = 'now_assist_context_menu';\nconst PLUGIN_PATH_URL = '/scripts/now_assist_context_menu_tinymce_plugin.js';\n\nconst isValid = ({\n\tname,\n\treferringTable,\n\treferringRecordId,\n\tnowAssistConfig\n}) => {\n\treturn (\n\t\t!isNil(name) &&\n\t\t!isNil(referringRecordId) &&\n\t\t!isNil(referringTable) &&\n\t\t!isEmpty(nowAssistConfig)\n\t);\n};\n\nconst getFieldNowAssistContextMenuSettings = props => {\n\tif (!isValid(props)) return {};\n\n\tconst {\n\t\tname,\n\t\treferringTable,\n\t\treferringRecordId,\n\t\tnowAssistConfig: { contextMenu = {} } = {}\n\t} = props;\n\n\treturn {\n\t\tnow_assist_context_menu: {\n\t\t\tfieldMeta: {\n\t\t\t\tfield: name,\n\t\t\t\tsys_id: referringRecordId,\n\t\t\t\ttable: referringTable\n\t\t\t},\n\t\t\tskillConfig: contextMenu,\n\t\t\tassetLoader: () => import('@devsnc/sn-wwna')\n\t\t}\n\t};\n};\nconst getFieldNowAssistContextMenuExternalPlugin = props => {\n\tif (!isValid(props)) return {};\n\n\treturn {\n\t\t[PLUGIN_NAME]: PLUGIN_PATH_URL\n\t};\n};\n\nexport {\n\tgetFieldNowAssistContextMenuSettings,\n\tgetFieldNowAssistContextMenuExternalPlugin\n};\n","import {\n\tcompact,\n\tdifference,\n\tflatten,\n\tflow,\n\thas,\n\tidentity,\n\tisArray,\n\treduce\n} from 'lodash';\n\nimport { tinymce } from 'sn-tinymce';\nimport { t } from 'sn-translate';\nimport { overrideAddCacheSuffix, getAssetPath } from './importTiny';\n\nimport {\n\tgetScrollParent,\n\tisAttrTrue,\n\tgetProperty,\n\tpick\n} from '@devsnc/sn-controls-common';\n\nimport {\n\tCODE_BLOCK_PATTERN,\n\tDEFAULT_FONT_FAMILY,\n\tEDITOR_FONT_HEIGHT,\n\tEDITOR_LINE_MARGIN,\n\tEDITOR_SET_CONTENT,\n\tEDITOR_STATUSBAR_HEIGHT,\n\tEDITOR_TOOLBAR_HEIGHT,\n\tOVERRIDE_OVERFLOW_SELECTOR,\n\tOVERRIDE_OVERFLOW_STYLE,\n\tPLUGIN_BLOCKLIST,\n\tOBSOLETE_PLUGINS,\n\tPOST_DATA_FAILURE,\n\tREQUIRED_PLUGINS,\n\tTOOLBAR_BLOCKLIST,\n\tVALID_LINK_TARGETS,\n\tDEFAULT_HEIGHT,\n\tMAXIMUM_DOM_PARSING_DEPTH,\n\tTEXT_AREA_ID_PREFIX,\n\tDEFAULT_ARIA_LABEL,\n\tTOOLBAR_INSTRUCTION_TEXT,\n\tFIT_TO_PARENT_OPTION,\n\tDEFAULT_FONT_SIZE\n} from './constants';\nimport { applyTheme } from './TinyMCEThemeBehaviors';\nimport { TinyMCEV5CompatibleMode } from './TinyMCEV5CompatibleMode';\nimport {\n\tgetFieldNowAssistContextMenuExternalPlugin,\n\tgetFieldNowAssistContextMenuSettings\n} from './NowAssistContextMenu';\n\n/**\n * Splits the given string by all whitespace\n * @param {string} str - The string to split\n * @returns {string[]} array of strings\n */\nexport const split = str => (isArray(str) ? str : str?.split(/\\s+/));\n\nexport const checkIfPluginIsActive = (pluginName, editor) =>\n\thas(editor, ['plugins', pluginName]);\n\nexport const isParagraphOrList = element =>\n\telement.tagName === 'P' || element.tagName === 'LI';\n\nexport const isUlOrOl = element =>\n\telement.tagName === 'UL' || element.tagName === 'OL';\n\n// If element has image or table or codesnippet\nexport const elementHasNonTextContent = element =>\n\telement.querySelector('img') !== null ||\n\telement.querySelector('table') !== null ||\n\telement.querySelector('pre') !== null;\n\nexport const getSmallestLineHeight = node => {\n\tlet lineHeights = [];\n\tfunction iterateAllValidNodes(node, cnt) {\n\t\tif (cnt >= MAXIMUM_DOM_PARSING_DEPTH) return;\n\t\tif (node.style.fontSize === '') {\n\t\t\t[...node.children].forEach(childNode => {\n\t\t\t\titerateAllValidNodes(childNode, cnt + 1);\n\t\t\t});\n\t\t} else if (node.innerText !== '')\n\t\t\tlineHeights.push(parseFloat(getComputedStyle(node).lineHeight));\n\t}\n\n\t[...node.children].forEach(node => {\n\t\titerateAllValidNodes(node, 0);\n\t});\n\n\treturn lineHeights.length\n\t\t? Math.min(...lineHeights)\n\t\t: parseFloat(getComputedStyle(node).lineHeight);\n};\n\nexport const getElementDetails = (element, autoresizeLineLimit, count) => {\n\tconst elementHeight = element.getBoundingClientRect().height;\n\tconst computedStyle = getComputedStyle(element);\n\n\tconst padding =\n\t\tparseFloat(computedStyle.getPropertyValue('padding-block-start')) +\n\t\tparseFloat(computedStyle.getPropertyValue('padding-block-end'));\n\n\tif (!isParagraphOrList(element) || elementHasNonTextContent(element)) {\n\t\treturn {\n\t\t\theight: elementHeight + padding,\n\t\t\tlineCount: 1\n\t\t};\n\t}\n\tconst smallestLineHeight = getSmallestLineHeight(element);\n\tconst numOfLines = smallestLineHeight\n\t\t? Math.round(elementHeight / smallestLineHeight)\n\t\t: 1;\n\treturn {\n\t\theight:\n\t\t\tcount + numOfLines > autoresizeLineLimit\n\t\t\t\t? smallestLineHeight * (autoresizeLineLimit - count)\n\t\t\t\t: elementHeight,\n\t\tlineCount: numOfLines\n\t};\n};\n\nexport const getEditorDynamicInfo = (\n\tcurrentLineCount,\n\telement,\n\tautoresizeLineLimit\n) => {\n\tlet contentHeight = 0;\n\n\tif (isUlOrOl(element)) {\n\t\tconst listElements = Array.from(element.children);\n\t\tfor (const listElement of listElements) {\n\t\t\tif (currentLineCount >= autoresizeLineLimit) break;\n\t\t\tconst elementDetails = getElementDetails(\n\t\t\t\tlistElement,\n\t\t\t\tautoresizeLineLimit,\n\t\t\t\tcurrentLineCount\n\t\t\t);\n\t\t\tcontentHeight += elementDetails.height;\n\t\t\tcurrentLineCount += elementDetails.lineCount;\n\t\t}\n\t\tcontentHeight += parseFloat(getComputedStyle(element).margin);\n\t} else {\n\t\tconst elementDetails = getElementDetails(\n\t\t\telement,\n\t\t\tautoresizeLineLimit,\n\t\t\tcurrentLineCount\n\t\t);\n\t\tcontentHeight +=\n\t\t\telementDetails.height +\n\t\t\tparseFloat(\n\t\t\t\tgetComputedStyle(element).getPropertyValue('margin-block-end')\n\t\t\t);\n\t\tcurrentLineCount += elementDetails.lineCount;\n\t}\n\treturn { height: contentHeight, lineCount: currentLineCount };\n};\n\nexport const applyAutoresizeLineLimit = (\n\tminLineCount,\n\tautoresizeLineLimit,\n\teditor,\n\thost\n) => {\n\t// applying autoresizeLineLimit property only when autoresize plugin is enabled and also its value is greater than minLineCount or 2\n\tif (\n\t\t!(\n\t\t\t(autoresizeLineLimit || 0) > (minLineCount || 2) &&\n\t\t\tcheckIfPluginIsActive('autoresize', editor) &&\n\t\t\teditor.container &&\n\t\t\teditor.getBody() &&\n\t\t\t!host.fitToParent\n\t\t)\n\t)\n\t\treturn;\n\n\tif (checkIfPluginIsActive('sn_autoresize_overrides', editor))\n\t\teditor.execCommand('sn_disconnect_observer', false, true);\n\n\tconst editorHeaderEle = editor.container.querySelector('.tox-editor-header');\n\tconst toolBarHeight = editorHeaderEle.getBoundingClientRect().height;\n\n\tconst statusBarEle = editor.container.querySelector('.tox-statusbar');\n\tconst statusBarHeight = statusBarEle\n\t\t? statusBarEle.getBoundingClientRect().height\n\t\t: 0;\n\n\tconst computedStyle = getComputedStyle(editor.getBody());\n\tconst contentMarginTop = parseFloat(\n\t\tcomputedStyle.getPropertyValue('margin-block-start')\n\t);\n\tconst contentMarginBottom = parseFloat(\n\t\tcomputedStyle.getPropertyValue('margin-block-end')\n\t);\n\n\tif (editor.getContent() === '') {\n\t\teditor.container.style.maxHeight =\n\t\t\ttoolBarHeight +\n\t\t\t((autoresizeLineLimit - 1) * (EDITOR_LINE_MARGIN + EDITOR_FONT_HEIGHT) +\n\t\t\t\tEDITOR_FONT_HEIGHT) +\n\t\t\tstatusBarHeight +\n\t\t\tcontentMarginTop +\n\t\t\tcontentMarginBottom +\n\t\t\t'px';\n\t} else {\n\t\tlet calculatedHeight =\n\t\t\ttoolBarHeight + statusBarHeight + contentMarginTop + contentMarginBottom;\n\t\tlet lineCount = 0;\n\t\t// Converting collection to Array, becoz HTML collections are live,\n\t\t// which means that if you modify the DOM while iterating over the\n\t\t// collection, the collection may be updated and cause unexpected results.\n\t\t// To avoid this, you can convert the HTML collection to an array before iterating over it.\n\t\tconst childElements = Array.from(editor.getBody().children);\n\n\t\tfor (const lineElement of childElements) {\n\t\t\tif (lineCount >= autoresizeLineLimit) break;\n\t\t\tconst editorInfo = getEditorDynamicInfo(\n\t\t\t\tlineCount,\n\t\t\t\tlineElement,\n\t\t\t\tautoresizeLineLimit\n\t\t\t);\n\t\t\tcalculatedHeight += editorInfo.height;\n\t\t\tconst currentMaxHeight =\n\t\t\t\tcalculatedHeight -\n\t\t\t\tparseFloat(\n\t\t\t\t\tgetComputedStyle(lineElement).getPropertyValue('margin-block-end')\n\t\t\t\t);\n\t\t\tlineCount = editorInfo.lineCount;\n\n\t\t\t// Setting maxHeight only if its greater than default height\n\t\t\t// Adding arbitary value of 6 px inorder to avoid scroll bar before autoresizeLineLimit value\n\t\t\tif (currentMaxHeight > DEFAULT_HEIGHT)\n\t\t\t\teditor.container.style.maxHeight = currentMaxHeight + 6 + 'px';\n\t\t}\n\t}\n};\n\n/**\n * Normalizes the dimensions taking into consideration height limits, resizability, and minLineCount.\n *\n * @param {Object} config - The config/settings that will be passed into tinymce\n * @param {number} config.minLineCount - The minimum number of lines that should be visible in the editor\n * @param {number} config.minHeight - The minimum height of the editor\n * @param {number} config.height - The height of the editor\n * @param {number} config.maxHeight - The maximum height of the editor\n * @param {boolean} config.resizable - Whether the editor can be resized\n * @returns {Object} normalized object containing height, min_height, and max_height\n */\nexport const getDimensionInfo = ({\n\tminLineCount,\n\tminHeight,\n\tmaxHeight,\n\theight,\n\tresizable,\n\tfitToParent\n}) => {\n\tconst dim = {\n\t\tmin_height: minHeight,\n\t\theight: height > minHeight ? height : minHeight,\n\t\tmax_height: maxHeight > height ? maxHeight : height\n\t};\n\n\t// Min line count sets the height of the editable area, which has priority over the height\n\t// passed in as a prop\n\tif (minLineCount != null) {\n\t\tlet linesBasedHeight =\n\t\t\tminLineCount * (EDITOR_LINE_MARGIN + EDITOR_FONT_HEIGHT) +\n\t\t\tEDITOR_LINE_MARGIN +\n\t\t\tEDITOR_TOOLBAR_HEIGHT +\n\t\t\t(resizable ? EDITOR_STATUSBAR_HEIGHT : 0);\n\t\tdim.height = linesBasedHeight;\n\n\t\t// Lines based height will have no effect unless min height is also defined\n\t\tif (minHeight == null) dim.min_height = linesBasedHeight;\n\t}\n\n\tif (fitToParent === true) {\n\t\tdim.height = 'inherit';\n\t}\n\treturn dim;\n};\n\n/**\n * Gets the mapped language given a supported SN language code/id.\n * @param {string} language - The language to map from\n * @returns {string} the mapped language\n */\nexport const getMappedLanguage = language => {\n\t// We only map languages we support and only those whose ID has no exact mapping to tinymce\n\t// ex. we support Spanish (code: es) which matches exactly to tinymce Spanish (code: es)\n\t// hence no mapping is necessary\n\tconst mapping = {\n\t\tpb: 'pt_BR',\n\t\tzh: 'zh_CN',\n\t\tfr: 'fr_FR',\n\t\tfq: 'fr_FR',\n\t\the: 'he_IL',\n\t\thu: 'hu_HU',\n\t\tko: 'ko_KR',\n\t\tnb: 'nb_NO',\n\t\tpt: 'pt_PT',\n\t\tsv: 'sv_SE',\n\t\tth: 'th_TH',\n\t\tzt: 'zh_TW'\n\t};\n\n\t// If undefined we return the passed in language. In this case, either there was an exact match to\n\t// tinymce's supported languages, or tinymce will just use english. Which is fine now.\n\treturn mapping[language] || language;\n};\n\n/**\n *\n * @param {number} config.autoresizeBottomMargin - size of the padding at the bottom of the editor’s body when autoresize plugin is enabled\n * @returns {Object}\n */\nexport const getAutoresizeOptions = ({ autoresizeBottomMargin }) =>\n\ttypeof autoresizeBottomMargin === 'number'\n\t\t? { autoresize_bottom_margin: autoresizeBottomMargin }\n\t\t: {};\n\n/**\n * Inserts content at a given position and scrolls to that position.\n *\n * @param {TinyMCE.Editor} editor - The editor that will be used to insert content to\n * @returns {Function} - Function that takes an object a payload an id as the second arg. The payload is the content\n * that should be inserted and the id of an element that should be scrolled into view\n */\nexport const insertContentAndScroll =\n\teditor =>\n\t(_, { payload, id }) => {\n\t\tlet doc = editor.getDoc().documentElement;\n\t\tconst iframeBounds = editor\n\t\t\t.getContentAreaContainer()\n\t\t\t.getBoundingClientRect();\n\n\t\teditor.insertContent(payload);\n\n\t\t// Technically, it should be enough to call insertContent, this should be enough\n\t\t// to scroll everything into view. However, the following is necessary to try\n\t\t// and center and/or ensure that the content is mostly visible and not just partially\n\t\t// visible\n\t\tconst content = editor.getDoc().querySelector(`#${id}`);\n\n\t\tif (content) {\n\t\t\t// Gross math to figure out if the content is visible or not,\n\t\t\t// we look at at the top of the iframe doc and the height of\n\t\t\t// the iframe as well as the top and the height of the content\n\t\t\t// to determine if scrolling the iframe is needed\n\t\t\tconst iframeShouldScrollDown =\n\t\t\t\tdoc.scrollTop + iframeBounds.height <\n\t\t\t\tcontent.offsetTop + content.offsetHeight;\n\t\t\tconst iframeShouldScrollUp = doc.scrollTop > content.offsetTop;\n\n\t\t\tif (iframeShouldScrollDown || iframeShouldScrollUp)\n\t\t\t\tdoc.scrollTop = content.offsetTop - 20;\n\n\t\t\t// Gross math to figure out if the editor is visible or not\n\t\t\t// if no scrollable parent is found and it defaults to the body,\n\t\t\t// we look at the height of the viewport for comparison with the top of the\n\t\t\t// iframe. If there is a scrollable parent, we check to see when the top\n\t\t\t// of the editor passes the top of the scrollable element\n\t\t\tconst scrollParent = getScrollParent(editor.getContainer());\n\t\t\tconst minPortionToView = iframeBounds.top + content.offsetHeight / 2;\n\t\t\tconst pageShouldScrollDown = !scrollParent\n\t\t\t\t? document.documentElement.clientHeight < minPortionToView\n\t\t\t\t: scrollParent.getBoundingClientRect().bottom < minPortionToView;\n\n\t\t\tconst pageShouldScrollUp = !scrollParent\n\t\t\t\t? minPortionToView < 0\n\t\t\t\t: minPortionToView < scrollParent.getBoundingClientRect().top;\n\n\t\t\tif (pageShouldScrollDown || pageShouldScrollUp) {\n\t\t\t\tdoc.scrollIntoView({ behavior: 'smooth', block: 'center' });\n\t\t\t}\n\t\t}\n\t};\n\n/**\n * Collapses the toolbar into a string if theres only a single non-falsy element in the toolbar array.\n * Otherwise just removes all falsy values\n * @param {string[]} toolbar - Array of strings where each string is a different toolbar group\n * @returns {string[]|string} a collpased or filtered toolbar\n */\nexport const collapseToolbar = toolbar =>\n\tisArray(toolbar)\n\t\t? flow(flatten, compact, tb =>\n\t\t\t\treduce(tb, (prev, curr, idx) => (!idx ? curr : [...prev, curr]))\n\t\t\t)([toolbar])\n\t\t: toolbar;\n\n/**\n * Filters the items by keeping only items in the validItems list.\n * @param {string} items - The items separated by whitespace\n * @param {string[]} validItems - The items that are valid\n * @returns {string} - The filtered product as a string\n */\nconst filterItems = (items, validItems) =>\n\tcompact(split(items).filter(i => validItems.includes(i))).join(' ');\n\n/**\n * Given a list of items, this method returns a list with only valid items.\n * @param {string[]|string} items - List of strings or single string separated spaces. This will be filtered down to only allow valid items\n * @param {string[]} validItems - List of valid items\n * @returns {string[]|string} - The filtered items after applying valid items as a filter\n */\nexport const getItems = (items, validItems = []) => {\n\tif (!validItems.length || !items) return items;\n\n\treturn isArray(items)\n\t\t? items.map(line => filterItems(line, split(validItems)))\n\t\t: filterItems(items, split(validItems));\n};\n\n/**\n * Given a string, it parses out the clode_block_pattern if it exists and returns the value\n * @param {string} value - The value to strip the code blocks from\n */\nexport const stripCodeBlocks = value => {\n\tconst result = CODE_BLOCK_PATTERN.exec(value);\n\n\treturn result ? result[1] : value;\n};\n\n/**\n * Used to swap divs with spans when inside anchors\n * @param {string} htmlString - Whatever we were going to set editor content with\n * @returns {string} - The modified html is returned as a string\n */\n\nexport function swapDivsWithSpans(htmlString) {\n\t// Create a temporary div element\n\tlet tempDiv = document.createElement('div');\n\ttempDiv.innerHTML = htmlString;\n\n\t// Find all <div> tags inside <a> tags\n\tconst divsInsideAnchors = tempDiv.querySelectorAll('a div');\n\tdivsInsideAnchors.forEach(divTag => {\n\t\t// Create a new <span> element\n\t\tconst spanTag = document.createElement('span');\n\n\t\twhile (divTag.firstChild) {\n\t\t\tconst childNode = divTag.firstChild;\n\t\t\tdivTag.removeChild(childNode);\n\t\t\tspanTag.appendChild(childNode);\n\t\t}\n\n\t\t// Preserve the class name from the original <div> tag\n\t\tif (divTag.className) {\n\t\t\tspanTag.className = divTag.className;\n\t\t}\n\n\t\tdivTag.replaceWith(spanTag);\n\t});\n\n\t// Return the modified HTML as a string\n\treturn tempDiv.innerHTML;\n}\n\nexport const getResponseTemplateConfig = responseTemplates => {\n\tif (responseTemplates.enableResponseTemplates) {\n\t\treturn {\n\t\t\ttype: 'response_templates',\n\t\t\tdefaultSuggestions: responseTemplates.defaultSuggestions,\n\t\t\tsuggestionsHeader: responseTemplates.suggestionsHeader,\n\t\t\tdefaultSuggestionsFetcher: responseTemplates.defaultSuggestionsFetcher,\n\t\t\tmessages: {\n\t\t\t\tloading: t('Loading...'),\n\t\t\t\tinit: t('Enter a keyword to search for the relevant template'),\n\t\t\t\tnoMatches: {\n\t\t\t\t\timg: 'no_search_result',\n\t\t\t\t\theader: t('Template not found'),\n\t\t\t\t\tsub: t('Try searching with another keyword')\n\t\t\t\t}\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tchannel: responseTemplates.channel,\n\t\t\t\tresourceTable: responseTemplates.recordTable,\n\t\t\t\tresourceSysId: responseTemplates.recordSysId\n\t\t\t}\n\t\t};\n\t}\n\n\treturn {};\n};\n\n/**\n * Sets the editor styles\n * @param {tinymce.Editor} editor - The editor\n * @param {string} style - The styles\n */\nexport const setEditorStyle = (editor, style, fonts) => {\n\tlet tinymceIframe = editor.getDoc();\n\tif (!tinymceIframe) return;\n\n\tlet customStyleTag = tinymceIframe.querySelector(\n\t\t'head style[id=custom_styles]'\n\t);\n\n\tif (!customStyleTag) {\n\t\tcustomStyleTag = document.createElement('style');\n\t\tcustomStyleTag.setAttribute('type', 'text/css');\n\t\tcustomStyleTag.setAttribute('id', 'custom_styles');\n\t\tlet head = tinymceIframe.querySelector('head');\n\t\tif (head) {\n\t\t\thead.appendChild(customStyleTag);\n\t\t}\n\t}\n\n\tlet fontFamily;\n\ttry {\n\t\tfontFamily =\n\t\t\tfonts\n\t\t\t\t?.split(';')[0] // Get the first font format\n\t\t\t\t?.split('=')[1] // Get the font list after '='\n\t\t\t\t?.split(',')[0] // Get the first font from the list\n\t\t\t\t?.trim() || DEFAULT_FONT_FAMILY; // Fallback to default\n\t} catch (error) {\n\t\tfontFamily = DEFAULT_FONT_FAMILY; // Fallback to default\n\t}\n\n\tlet DEFAULT_BODY_STYLES = `body{font-family:${fontFamily.toLowerCase()},sans-serif;font-size:${DEFAULT_FONT_SIZE}}`;\n\tcustomStyleTag.innerText = `${DEFAULT_BODY_STYLES} ${OVERRIDE_OVERFLOW_STYLE} ${style}`;\n};\n\nconst getAttachmentExtensions = () =>\n\tgetProperty('glide.attachment.extensions', '');\n\nexport const isValidFileExtension = (fileName, extensions) => {\n\tif (!extensions) return true;\n\tconst allowedExtensions = extensions\n\t\t.split(',')\n\t\t.map(extension => extension?.trim().toLowerCase())\n\t\t.filter(identity)\n\t\t.join('|');\n\tvar fileTypes = new RegExp(`\\\\.(${allowedExtensions})$`, 'i');\n\treturn fileTypes.test(fileName);\n};\n/**s\n * Check: https://www.tiny.cloud/docs/plugins/opensource/link/#exampleofacustomasynchronouscallbackfunction\n */\nexport const getAttachmentListHandler = (\n\treferringRecordId,\n\treferringTable,\n\tdispatch,\n\tbaseURL\n) => {\n\tif (!referringRecordId || !referringTable) return undefined;\n\n\tconst mapAttachments = attachment => {\n\t\treturn {\n\t\t\ttitle: attachment.file_name,\n\t\t\tvalue: `${baseURL}/sys_attachment.do?sys_id=${attachment.sys_id}`\n\t\t};\n\t};\n\treturn function (success) {\n\t\tdispatch(\n\t\t\t'GET_ATTACHMENTS_DATA',\n\t\t\t{ table_name: referringTable, table_sys_id: referringRecordId },\n\t\t\t{\n\t\t\t\tcallback: function (attachments = []) {\n\t\t\t\t\tsuccess(attachments.length ? attachments.map(mapAttachments) : null);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t};\n};\n\n/**\n * Creates an image upload handler to be used by tinymce\n * @param {Function} dispatch - Dispatcher function used to dispatch actions\n * @param {Function} getNameCb - Generates file name using blobInfo\n * @returns upload_hander\n */\nexport const uploadHandler =\n\t(referringRecordId, referringTable, getNameCb, dispatch) => blobInfo =>\n\t\tnew Promise((success, failure) => {\n\t\t\tif (\n\t\t\t\t!isValidFileExtension(blobInfo.filename(), getAttachmentExtensions())\n\t\t\t) {\n\t\t\t\tdispatch(\n\t\t\t\t\tPOST_DATA_FAILURE,\n\t\t\t\t\t{ message: t('Unsupported file type') },\n\t\t\t\t\t{ failure }\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst selectedFile = blobInfo.blob();\n\n\t\t\tconst data = new FormData();\n\n\t\t\tconst tableName = referringTable;\n\t\t\tdata.append('table_name', tableName);\n\t\t\tdata.append('table_sys_id', referringRecordId);\n\t\t\tdata.append('file', selectedFile, getNameCb(blobInfo));\n\n\t\t\tdispatch('POST_ATTACHMENT_QUERY', { data }, { success, failure });\n\t\t});\n\n/**\n * Creates a file picker handler for tinymce.\n */\nexport const filePickerHandler = (cb, _, { filetype }) => {\n\tconst input = document.createElement('input');\n\tinput.setAttribute('type', 'file');\n\tinput.setAttribute('accept', filetype === 'media' ? 'video/*' : 'image/*');\n\n\t/*\n\t * Note: In modern browsers input[type=\"file\"] is functional without\n\t * even adding it to the DOM, but that might not be the case in some older\n\t * or quirky browsers like IE, so you [we] might want to add it to the DOM\n\t * just in case, and visually hide it. And do not forget do remove it\n\t * once you do not need it anymore.\n\t */\n\tinput.onchange = function () {\n\t\tconst file = input.files[0];\n\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => {\n\t\t\t/*\n\t\t\t * Note: Now we need to register the blob in TinyMCEs image blob\n\t\t\t * registry. In the next release [of tinymce] this part hopefully won't be\n\t\t\t * necessary, as we are looking to handle it internally.\n\t\t\t */\n\t\t\tconst id = 'blobid' + new Date().getTime();\n\t\t\tconst blobCache = tinymce.activeEditor.editorUpload.blobCache;\n\t\t\tconst base64 = reader.result.split(',')[1];\n\t\t\tconst blobInfo = blobCache.create(id, file, base64, undefined, file.name);\n\t\t\tblobCache.add(blobInfo);\n\n\t\t\t/* call the callback and populate the Title field with the file name */\n\t\t\tcb(blobInfo.blobUri(), { title: file.name });\n\t\t};\n\t\treader.readAsDataURL(file);\n\t};\n\n\tinput.click();\n};\n\n/**\n * Returns an object containing the a11y checker options passed through the config script.\n * @param {object} config - The config object we get from evaluating the script passed\n * in as the value of the dictionary attribute: \"editor.config\"\n */\nconst getA11yCheckerOptions = config => {\n\tif (!config) return {};\n\tconst a11ycheckerOptions = [\n\t\t'a11ychecker_level',\n\t\t'a11ychecker_html_version',\n\t\t'a11y_advanced_options',\n\t\t'a11ychecker_allow_decorative_images',\n\t\t'a11ychecker_ignored_rules'\n\t];\n\treturn pick(config, a11ycheckerOptions);\n};\n\n/**\n * Creates a callback function that attaches event handlers to a given editor.\n * @param {object} props - The html-editor component properties\n * @param {object} host - The host element of the editor component\n */\nconst onSetup = (props, host) => editor => {\n\tconst { contentStyle, label, readonly, dispatch, fonts } = props;\n\n\teditor.on('init', () => {\n\t\teditor.getDoc().documentElement.lang = props.language;\n\t\t// HTML-lang uses BCP-47 and technically some of the codes passed by platform are incorrect...\n\t\tconst language = editor.options.get('language');\n\t\tif (language) {\n\t\t\teditor.iframeElement.lang = language.replace('_', '-');\n\t\t}\n\n\t\tapplyTheme(props, editor);\n\t\tdispatch(EDITOR_SET_CONTENT, { editor, resetUndoStack: true });\n\n\t\t/*\n\t\t * Can't use our normal `aria-labelledby` and `aria-describedby`\n\t\t * (from common/util/field#accessibilityAttributes) because those\n\t\t * elements exist outside of the TinyMCE iframe. Setting the label\n\t\t * string to `aria-label` directly because it's better than nothing.\n\t\t */\n\t\tif (label) {\n\t\t\teditor.iframeElement.setAttribute('aria-label', label);\n\t\t}\n\n\t\teditor.mode.set(isAttrTrue(readonly) ? 'readonly' : 'design');\n\t\tsetEditorStyle(editor, contentStyle, fonts);\n\n\t\t/**\n\t\t * autoresize is not officially supported with resize UI option,\n\t\t * workaround to enable scroll when both are used together\n\t\t * and when resize handle manually reduces height before maxHeight is reached\n\t\t * see: https://support.tiny.cloud/hc/en-us/requests/17514\n\t\t * TODO: Remove this once TinyMCE offically support this combination\n\t\t */\n\t\tif (props.resizable && checkIfPluginIsActive('autoresize', editor))\n\t\t\teditor.dom.addClass(editor.getBody(), OVERRIDE_OVERFLOW_SELECTOR);\n\n\t\t/**\n\t\t * There is a possibility that the editor is not available when the fitToParent property is changed,\n\t\t * as the editor might still be initialising when the property change happens. Due to this we need\n\t\t * to ensure the associated class is added here to the container to ensure the editor is styled correctly\n\t\t * when editor is initialised. Simply adding it here will still not handle the usecase given we would have\n\t\t * passed stale props (from the time before property had changed) in the callback to the instance and the\n\t\t * editor view will not be updated based on the latest props. Hence, we have to drill down the host element\n\t\t * till here to get the latest props value and apply the class accordingly.\n\t\t */\n\t\thost?.fitToParent && editor.editorContainer.classList.add('fit-to-parent');\n\n\t\teditor.addCommand(\n\t\t\t'snInsertContentAndScroll',\n\t\t\tinsertContentAndScroll(editor)\n\t\t);\n\t});\n\n\teditor.on('SetContent change', () => {\n\t\tapplyAutoresizeLineLimit(\n\t\t\tprops.minLineCount,\n\t\t\tprops.autoresizeLineLimit,\n\t\t\teditor,\n\t\t\thost\n\t\t);\n\t});\n};\n\n/**\n * Sets up the tinymce instance\n * @param {HTMLTextAreaElement} node - The html textarea target/node\n * @param {Object} props - The HtmlEditor seismic props\n * @returns {Promise<tinymce.Editor>} Promise - resolves to the tinymce editor instance\n */\nexport const setupTinymce = (node, properties) => {\n\tconst props = TinyMCEV5CompatibleMode(properties);\n\tconst {\n\t\tautoresize,\n\t\tbrowserSpellcheck,\n\t\tdispatch,\n\t\thost,\n\t\tenableMentions,\n\t\tresponseTemplates,\n\t\tisJournal,\n\t\tplugins,\n\t\tpowerPasteHtmlImport,\n\t\tpowerPasteWordImport,\n\t\tpowerPasteFilterInlineElements,\n\t\treadonly,\n\t\treferringRecordId,\n\t\treferringTable,\n\t\tresizable,\n\t\ttoolbar,\n\t\tconvertBlobsToBase64,\n\t\tbaseURL,\n\t\tpreloadMentions,\n\t\tmentions\n\t} = props;\n\tlet { validButtons, validPlugins, defaultLinkTarget } = props;\n\tvalidButtons = difference(\n\t\tsplit(validButtons ? `${validButtons} |` : undefined),\n\t\tTOOLBAR_BLOCKLIST\n\t);\n\tvalidPlugins = difference(split(validPlugins), [\n\t\t...PLUGIN_BLOCKLIST,\n\t\t...OBSOLETE_PLUGINS\n\t]);\n\n\tconst toolbarItems =\n\t\tcollapseToolbar(getItems(toolbar, validButtons)) || false;\n\n\tconst showBarsOnFocus = isAttrTrue(\n\t\tgetProperty('glide.ui.html.editor.toolbar.on.focus', false)\n\t);\n\n\tconst { enableResponseTemplates } = responseTemplates;\n\tconst responseTemplateConfig = getResponseTemplateConfig(responseTemplates);\n\n\tif (VALID_LINK_TARGETS.indexOf(defaultLinkTarget) === -1)\n\t\tdefaultLinkTarget = '';\n\n\tlet pluginItems = getItems(plugins, validPlugins);\n\tpluginItems = compact([\n\t\tREQUIRED_PLUGINS,\n\t\tpluginItems,\n\t\tisAttrTrue(enableMentions) && `sn_mentions`,\n\t\tenableResponseTemplates && `sn_hotkeys`,\n\t\tshowBarsOnFocus && `sn_showbarsonfocus`,\n\t\tautoresize && `sn_autoresize_overrides autoresize`\n\t]).join(' ');\n\n\tconst heightSettings = getDimensionInfo(props);\n\tconst autoresizeSettings = getAutoresizeOptions(props);\n\tconst language = getMappedLanguage(props.language);\n\n\tlet config;\n\n\tconst defaultMenuItems = {\n\t\tfile: {\n\t\t\ttitle: 'File',\n\t\t\titems:\n\t\t\t\t'newdocument restoredraft | preview | export print | deleteallconversations'\n\t\t},\n\t\tedit: {\n\t\t\ttitle: 'Edit',\n\t\t\titems: 'undo redo | cut copy paste pastetext | selectall | searchreplace'\n\t\t},\n\t\tview: {\n\t\t\ttitle: 'View',\n\t\t\titems:\n\t\t\t\t'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen | showcomments'\n\t\t},\n\t\tinsert: {\n\t\t\ttitle: 'Insert',\n\t\t\titems:\n\t\t\t\t'image link media addcomment pageembed template codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor tableofcontents | insertdatetime'\n\t\t},\n\t\tformat: {\n\t\t\ttitle: 'Format',\n\t\t\titems:\n\t\t\t\t'bold italic underline strikethrough superscript subscript codeformat | styles blocks fontfamily fontsize align lineheight | forecolor backcolor | language | removeformat'\n\t\t},\n\t\ttools: {\n\t\t\ttitle: 'Tools',\n\t\t\titems: 'spellchecker spellcheckerlanguage | a11ycheck code wordcount'\n\t\t},\n\t\ttable: {\n\t\t\ttitle: 'Table',\n\t\t\titems:\n\t\t\t\t'inserttable | cell row column | advtablesort | tableprops deletetable'\n\t\t},\n\t\thelp: { title: 'Help', items: 'help' }\n\t};\n\tconst defaultStyleFormats = [\n\t\t{\n\t\t\ttitle: 'Headings',\n\t\t\titems: [\n\t\t\t\t{ title: 'Heading 1', format: 'h1' },\n\t\t\t\t{ title: 'Heading 2', format: 'h2' },\n\t\t\t\t{ title: 'Heading 3', format: 'h3' },\n\t\t\t\t{ title: 'Heading 4', format: 'h4' },\n\t\t\t\t{ title: 'Heading 5', format: 'h5' },\n\t\t\t\t{ title: 'Heading 6', format: 'h6' }\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\ttitle: 'Inline',\n\t\t\titems: [\n\t\t\t\t{ title: 'Bold', format: 'bold' },\n\t\t\t\t{ title: 'Italic', format: 'italic' },\n\t\t\t\t{ title: 'Underline', format: 'underline' },\n\t\t\t\t{ title: 'Strikethrough', format: 'strikethrough' },\n\t\t\t\t{ title: 'Superscript', format: 'superscript' },\n\t\t\t\t{ title: 'Subscript', format: 'subscript' },\n\t\t\t\t{ title: 'Code', format: 'code' }\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\ttitle: 'Blocks',\n\t\t\titems: [\n\t\t\t\t{ title: 'Paragraph', format: 'p' },\n\t\t\t\t{ title: 'Blockquote', format: 'blockquote' },\n\t\t\t\t{ title: 'Div', format: 'div' },\n\t\t\t\t{ title: 'Pre', format: 'pre' }\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\ttitle: 'Align',\n\t\t\titems: [\n\t\t\t\t{ title: 'Left', format: 'alignleft' },\n\t\t\t\t{ title: 'Center', format: 'aligncenter' },\n\t\t\t\t{ title: 'Right', format: 'alignright' },\n\t\t\t\t{ title: 'Justify', format: 'alignjustify' }\n\t\t\t]\n\t\t}\n\t];\n\n\t// Remove all occurrences of the menuConfigs prop as it is deprecated and will be removed after Zurich\n\tconst configProp = props.htmlEditorConfigs || props.menuConfigs;\n\tif (configProp) {\n\t\tconfig = JSON.parse(configProp);\n\t}\n\n\tconst sn_mentions = {\n\t\tmessages: {\n\t\t\tcannotSeeRecordMsg: t('Cannot access record')\n\t\t},\n\t\tpreloadMentions: preloadMentions || [],\n\t\t...mentions\n\t};\n\n\treturn overrideAddCacheSuffix(tinymce)\n\t\t.init({\n\t\t\t...getA11yCheckerOptions(config),\n\t\t\thelp_tabs: ['shortcuts', 'keyboardnav', 'versions'],\n\t\t\tadvlist_bullet_styles: 'default,circle,disc,square',\n\t\t\tauto_focus:\n\t\t\t\tisAttrTrue(props.autofocus) && TEXT_AREA_ID_PREFIX + props.componentId,\n\t\t\tbase_url: `${baseURL}${getAssetPath()}`,\n\t\t\tbranding: false,\n\t\t\tsn_convert_blobs_to_base64: convertBlobsToBase64,\n\t\t\tbrowser_spellcheck: isAttrTrue(browserSpellcheck),\n\t\t\tconvert_urls: props.convertUrls,\n\t\t\tlink_default_target: defaultLinkTarget,\n\t\t\tdialog_type: 'modal',\n\t\t\tdirectionality: isAttrTrue(props.reversed)\n\t\t\t\t? 'rtl'\n\t\t\t\t: document.dir || 'ltr',\n\t\t\tdocument_base_url: window.location.origin,\n\t\t\telementpath: false,\n\t\t\textended_valid_elements: props.extendedValidElements,\n\t\t\tfile_picker_types: 'media',\n\t\t\t[FIT_TO_PARENT_OPTION]: props.fitToParent,\n\t\t\tfont_family_formats: props.fonts,\n\t\t\tfont_size_formats: '8pt 10pt 11pt 12pt 14pt 18pt 24pt 36pt',\n\n\t\t\thighlight_on_focus: true,\n\t\t\timage_title: true,\n\t\t\timage_advtab: true,\n\t\t\tlanguage,\n\t\t\tmenubar: config?.menubar ? config.menubar : false,\n\t\t\tmenu: config?.menu ? config.menu : defaultMenuItems,\n\t\t\tpagebreak_separator:\n\t\t\t\t'<span style=\"display:none;\">Editor pagebreak</span>',\n\t\t\tplugins: pluginItems,\n\t\t\t/**\n\t\t\t * When modifying the external plugins URL path, please ensure that the path is added in generateTinyFiles.js\n\t\t\t * to make sure the url cache suffix override function doesn't append .jsdbx extension to the end of the plugin path\n\t\t\t * In future, we can enhance the behaviour to automatically pick up the path from source files and use it in generateTinyFiles.js\n\t\t\t */\n\t\t\texternal_plugins: {\n\t\t\t\t...getFieldNowAssistContextMenuExternalPlugin(props)\n\t\t\t},\n\t\t\tpowerpaste_html_import: powerPasteHtmlImport,\n\t\t\tpowerpaste_word_import: powerPasteWordImport,\n\t\t\tpowerpaste_clean_filtered_inline_elements: powerPasteFilterInlineElements,\n\t\t\tpromotion: false, // To disable default upgrade button in menubar\n\t\t\treadonly: isAttrTrue(readonly),\n\t\t\trelative_urls: props.relativeUrls,\n\t\t\tremove_script_host: props.removeHost,\n\t\t\tresize: resizable,\n\t\t\tskin: 'sn-editor-themed',\n\t\t\tstatusbar: resizable,\n\t\t\tstyle_formats: config?.style_formats\n\t\t\t\t? config.style_formats\n\t\t\t\t: defaultStyleFormats,\n\t\t\tstyle_formats_merge: true, // used to append style formats rather than overwrite the default style formats.\n\t\t\tsuffix: '.min',\n\t\t\ttarget: node,\n\t\t\ttext_patterns: config?.text_patterns || false,\n\t\t\tlink_target_list: [\n\t\t\t\t{ title: t('None (Use Implicit)'), value: '' },\n\t\t\t\t{ title: t('Same frame (_self)'), value: '_self' },\n\t\t\t\t{ title: t('New window (_blank)'), value: '_blank' },\n\t\t\t\t{ title: t('Top frame (_top)'), value: '_top' }\n\t\t\t],\n\t\t\ttoolbar: toolbarItems,\n\t\t\ttoolbar_mode: 'sliding',\n\t\t\tvalid_children: '+body[style|link]',\n\t\t\tvalidate: false,\n\t\t\tiframe_aria_text: [\n\t\t\t\tprops.label,\n\t\t\t\tDEFAULT_ARIA_LABEL,\n\t\t\t\tTOOLBAR_INSTRUCTION_TEXT\n\t\t\t].join(' '),\n\t\t\tfile_picker_callback: filePickerHandler,\n\t\t\timages_upload_handler: isJournal\n\t\t\t\t? () => new Promise(() => {})\n\t\t\t\t: uploadHandler(\n\t\t\t\t\t\treferringRecordId,\n\t\t\t\t\t\treferringTable,\n\t\t\t\t\t\tblobInfo => {\n\t\t\t\t\t\t\tconst id = blobInfo.id();\n\t\t\t\t\t\t\tconst blobname = blobInfo.filename();\n\t\t\t\t\t\t\tconst extension = blobname.substring(blobname.lastIndexOf('.'));\n\t\t\t\t\t\t\treturn !~blobname.indexOf(id)\n\t\t\t\t\t\t\t\t? blobname\n\t\t\t\t\t\t\t\t: 'Pasted image' + extension;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tprops\n\t\t\t\t\t),\n\t\t\tsetup: onSetup(props, host),\n\t\t\tlink_list: getAttachmentListHandler(\n\t\t\t\treferringRecordId,\n\t\t\t\treferringTable,\n\t\t\t\tdispatch,\n\t\t\t\tbaseURL\n\t\t\t),\n\t\t\tvideo_template_callback: function (data) {\n\t\t\t\tconst poster = data.poster ? `poster=\"${data.poster}\"` : '';\n\t\t\t\tlet embedCode = `<video controls width=\"${data.width}\" height=\"${data.height}\" src=\"${data.source}\" ${poster}>`;\n\t\t\t\tembedCode += data.altsource ? `<source src=\"${data.altsource}\"/>` : '';\n\t\t\t\tembedCode += '</video>';\n\n\t\t\t\treturn embedCode;\n\t\t\t},\n\t\t\t// Because we are using our own video_template_callback (see directly above) to generate the embedded code, media_alt_source and media_poster makes them\n\t\t\t// behave funky (doesnt update or incorrect values) so we set them to false. We should revisit this issue when tinymce fixes the issue above.\n\t\t\tmedia_alt_source: false,\n\t\t\tmedia_poster: false,\n\t\t\t...heightSettings,\n\t\t\t...autoresizeSettings,\n\t\t\tsn_settings: {\n\t\t\t\t...getFieldNowAssistContextMenuSettings(props),\n\t\t\t\timage: {\n\t\t\t\t\tshowLibraryTab: false\n\t\t\t\t},\n\t\t\t\tmedia: {\n\t\t\t\t\tshowLocalsTab: false,\n\t\t\t\t\tmediaUploadHandler: uploadHandler(\n\t\t\t\t\t\treferringRecordId,\n\t\t\t\t\t\treferringTable,\n\t\t\t\t\t\tblobInfo => blobInfo.filename(),\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tprops\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\thotkeys: [responseTemplateConfig],\n\t\t\t\tmentions: sn_mentions,\n\t\t\t\treadonlyBottomBorder: true\n\t\t\t},\n\t\t\tcontextmenu: props.contextmenu\n\t\t})\n\t\t.then(([editor]) => {\n\t\t\treturn Promise.resolve(editor);\n\t\t});\n};\n","import { isEqual, isFunction, omit, toString } from 'lodash';\nimport { handleShortcutKeyDown } from '@servicenow/now-trigger-library';\nimport { tinymce } from 'sn-tinymce';\nimport {\n\tCALLBACK_AND_DISPATCH,\n\tcheckAutofocus,\n\thandleDynamicTranslationBlur,\n\tisAttrTrue\n} from '@devsnc/sn-controls-common';\nimport { createHttpEffect } from '@servicenow/ui-effect-http';\nimport { t } from 'sn-translate';\nimport {\n\tPOST_DATA_START,\n\tPOST_DATA_PROGRESS,\n\tPOST_DATA_SUCCESS,\n\tPOST_DATA_FAILURE,\n\tGET_ATTACHMENTS_SUCCESS,\n\tGET_ATTACHMENTS_FAILURE,\n\tFIT_TO_PARENT_OPTION,\n\tEDITOR_VERTICAL_RESIZE_TYPE,\n\tEDITOR_ON_CHANGE,\n\tEDITOR_ON_BLUR,\n\tEDITOR_ON_FOCUS,\n\tEDITOR_ON_CLICK,\n\tEDITOR_ON_RESIZE,\n\tEDITOR_ON_KEYDOWN,\n\tEDITOR_ON_ITEM_SELECT_TRACK,\n\tINSERT_PILL\n} from './constants';\nimport {\n\tcheckIfPluginIsActive,\n\tgetDimensionInfo,\n\tsetEditorStyle,\n\tsetupTinymce,\n\tstripCodeBlocks,\n\tswapDivsWithSpans\n} from './Utils';\nimport { applyTheme } from './TinyMCEThemeBehaviors';\n\nconst dispatchEvent = function (dispatch, action, event) {\n\tdispatch(action, { eventPayload: event, editor: this });\n};\n\nconst closeNotification = (state, updateState) => {\n\tconst { editorNotificationsManager } = state;\n\tif (editorNotificationsManager) editorNotificationsManager.close();\n\n\tupdateState({ editorNotificationsManager: null });\n};\n\nexport const postAttachmentEffect = createHttpEffect(\n\t'/api/now/attachment/upload',\n\t{\n\t\tmethod: 'POST',\n\t\tbatch: false,\n\t\theaders: { 'Content-Type': 'multipart/form-data' },\n\t\tdataParam: 'data',\n\t\tstartActionType: POST_DATA_START,\n\t\tprogressActionType: POST_DATA_PROGRESS,\n\t\tsuccessActionType: POST_DATA_SUCCESS,\n\t\terrorActionType: POST_DATA_FAILURE\n\t}\n);\n\nexport const postAttachmentStartEffect = ({ state, updateState }) => {\n\tconst { editor } = state;\n\tconst editorNotificationsManager = editor.notificationManager.open({\n\t\ttext: t('Media uploading...'),\n\t\ttype: 'info',\n\t\ttimeout: -1,\n\t\tprogressBar: true\n\t});\n\n\tupdateState({ editorNotificationsManager });\n};\n\nexport const postAttachmentProgressEffect = ({ action, state }) => {\n\tconst {\n\t\tprogressEvent: { loaded, total }\n\t} = action.payload;\n\tconst { editorNotificationsManager } = state;\n\teditorNotificationsManager.progressBar.value(\n\t\tMath.round((loaded / total) * 100)\n\t);\n};\n\nexport const postAttachmentSuccessEffect = ({\n\taction,\n\tproperties,\n\tstate,\n\tupdateState\n}) => {\n\tcloseNotification(state, updateState);\n\tconst { baseURL } = properties;\n\taction.meta.success(\n\t\t`${baseURL}/sys_attachment.do?sys_id=${action.payload.result.sys_id}`\n\t);\n};\n\nexport const postAttachmentFailureEffect = ({ action, state, updateState }) => {\n\tcloseNotification(state, updateState);\n\taction.meta.failure({ message: action.payload.message, remove: true });\n};\n\nexport const getAttachmentsEffect = createHttpEffect('/api/now/attachment', {\n\tmethod: 'GET',\n\tbatch: false,\n\theaders: { 'Content-Type': 'application/json' },\n\tqueryParams: ['table_name', 'table_sys_id'],\n\tsuccessActionType: GET_ATTACHMENTS_SUCCESS,\n\terrorActionType: GET_ATTACHMENTS_FAILURE\n});\n\nexport const getAttachmentsSuccessEffect = ({ action }) => {\n\taction.meta.callback(action.payload.result);\n};\n\nexport const getAttachmentsFailureEffect = ({ action }) => {\n\tconsole.error(action.payload.message);\n\taction.meta.callback([]);\n};\nexport const editorOnItemSelectTrackEffect = ({\n\taction: {\n\t\tpayload: { eventPayload, telemetry }\n\t},\n\tdispatch,\n\tproperties\n}) => {\n\tconst { name } = properties;\n\tconst { meta } = eventPayload;\n\n\tconst trackPayload = {\n\t\tmetaData: {\n\t\t\tname,\n\t\t\tfieldType: 'now-record-html-editor'\n\t\t},\n\t\tadditionalOptions: {\n\t\t\t...meta,\n\t\t\t...(telemetry && { telemetry })\n\t\t}\n\t};\n\tdispatch('TRACK', trackPayload);\n};\n\nexport const insertPillEffect = ({ state, action }) => {\n\tconst { editor } = state;\n\tif (!editor) return;\n\n\tconst { displayValue, tooltipValue, value } = action.payload;\n\n\tconst pillContainerStart = `<span class=\"sn-mce-pill-container\" contenteditable=\"false\">`;\n\tconst pillText = `<span class=\"sn-mce-pill-text\" data-sn-mce-tooltip='${tooltipValue}' data-sn-mce-value='${value}'>${displayValue}</span>`;\n\tconst pillRemoveButton = `<span class=\"sn-mce-pill-remove\" data-sn-mce-tooltip='${t('Remove')}'>&times;</span>`;\n\tconst pillContainerEnd = `</span>`;\n\n\tconst pillContent = `${pillContainerStart}${pillText}${pillRemoveButton}${pillContainerEnd}`;\n\n\teditor.insertContent(pillContent);\n};\n\nconst moveCursorToEnd = editor => {\n\teditor.selection.select(editor.getBody(), true);\n\teditor.selection.collapse(false);\n};\n\nexport const propertyChangedEffect = ({\n\taction: {\n\t\tpayload: { name, value, previousValue }\n\t},\n\tproperties,\n\tstate,\n\tupdateState\n}) => {\n\tconst { editor } = state;\n\tconst { minHeight, maxHeight } = properties;\n\tconst stringValue = toString(value);\n\tconst isValuePropertyChanged =\n\t\tname === 'value' && stringValue !== previousValue;\n\n\t// We should always track the updated value in the component state, regardless of TinyMCE’s availability, as the component is being mounted to the DOM. This ensures that subsequent renders will display the updated or available value in the editor when editor is initialised.\n\tif (isValuePropertyChanged) {\n\t\tupdateState({\n\t\t\tvalue: stringValue\n\t\t});\n\t}\n\n\tif (!editor || !tinymce) return;\n\n\tif (name === 'variant' && value !== previousValue) {\n\t\tapplyTheme(\n\t\t\t{ ...properties, ...omit(state, ['properties', 'editor']) },\n\t\t\teditor\n\t\t);\n\t}\n\n\tif (name === 'readonly' && value !== previousValue) {\n\t\teditor.mode.set(isAttrTrue(value) ? 'readonly' : 'design');\n\t}\n\n\tif (isValuePropertyChanged) {\n\t\tconst isDifferentThanStateValue = stringValue !== state.value;\n\t\tif (isDifferentThanStateValue) {\n\t\t\tlet content = stripCodeBlocks(stringValue);\n\t\t\tif (properties.allowBlockBasedAnchors)\n\t\t\t\tcontent = swapDivsWithSpans(content);\n\n\t\t\teditor.setContent(content);\n\t\t\tif (state.hasFocus) {\n\t\t\t\tmoveCursorToEnd(editor); // move cursor to the end to match text area and other inputs behavior\n\t\t\t}\n\t\t}\n\t}\n\n\tif (name === 'contentStyle' && value !== previousValue) {\n\t\tsetEditorStyle(editor, value);\n\t}\n\n\tif (name === 'fitToParent' && value !== previousValue) {\n\t\tif (checkIfPluginIsActive('sn_autoresize_overrides', editor)) {\n\t\t\teditor.execCommand(`sn_set_${FIT_TO_PARENT_OPTION}`, false, value);\n\t\t} else {\n\t\t\teditor.container.style.height = value\n\t\t\t\t? 'inherit'\n\t\t\t\t: (properties.height || 0) + 'px';\n\t\t}\n\t\tif (value) {\n\t\t\teditor.container.classList.add('fit-to-parent');\n\n\t\t\tif (\n\t\t\t\t(properties.autoresizeLineLimit || 0) >\n\t\t\t\t\t(properties.minLineCount || 2) &&\n\t\t\t\tcheckIfPluginIsActive('autoresize', editor)\n\t\t\t) {\n\t\t\t\t// If fitToParent is enabled and autoresize is enabled, we need to\n\t\t\t\t// honor fitToParent over maxHeight set by autoresizeLineLimit logic.\n\t\t\t\teditor.container.style.maxHeight = '';\n\t\t\t\teditor.container.style.height = '';\n\t\t\t}\n\t\t} else editor.container.classList.remove('fit-to-parent');\n\t}\n\n\tif (name === 'autoresize' && value !== previousValue) {\n\t\teditor.execCommand('sn_toggle_autoresize', false, {\n\t\t\tvalue,\n\t\t\tminHeight,\n\t\t\tmaxHeight\n\t\t});\n\t}\n\n\t// Handle preloadMentions change\n\tif (name === 'preloadMentions' && !isEqual(value, previousValue)) {\n\t\tconst mentions = editor.options.get('sn_settings').mentions;\n\t\tmentions.preloadMentions = value;\n\t\teditor.options.set('sn_settings', {\n\t\t\t...editor.options.get('sn_settings'),\n\t\t\tmentions\n\t\t});\n\t}\n};\n\nexport const setupTinymceEditorEffect = ({\n\tstate,\n\tproperties,\n\thost,\n\tupdateState,\n\tdispatch\n}) => {\n\tsetupTinymce(host.shadowRoot.querySelector('textarea'), {\n\t\t...properties,\n\t\t...omit(state, ['properties', 'editor']),\n\t\tdispatch,\n\t\thost\n\t}).then(editor => {\n\t\tif (state.editor === null) {\n\t\t\tupdateState({\n\t\t\t\tpath: 'editor',\n\t\t\t\tvalue: editor,\n\t\t\t\toperation: 'set',\n\t\t\t\tshouldRender: false\n\t\t\t});\n\t\t}\n\n\t\teditor.on('ResizeEditor', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_RESIZE, event);\n\t\t});\n\t\teditor.on('SetContent', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_CHANGE, event);\n\t\t});\n\t\teditor.on('Change', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_CHANGE, event);\n\t\t});\n\t\teditor.on('blur', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_BLUR, event);\n\t\t});\n\t\teditor.on('focus', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_FOCUS, event);\n\t\t});\n\t\teditor.on('keyup', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_CHANGE, event);\n\t\t});\n\t\teditor.on('click', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_CLICK, event);\n\t\t\tif (event.target.classList.contains('sn-mce-pill-remove')) {\n\t\t\t\tevent.target.parentNode.remove();\n\t\t\t\teditor.dispatch('sn_tooltip.hide_tooltip');\n\t\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_CHANGE, event);\n\t\t\t}\n\t\t});\n\t\teditor.on('ExecCommand', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_CHANGE, event);\n\t\t});\n\t\teditor.on('keydown', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_KEYDOWN, event);\n\t\t});\n\t\teditor.on('sn_mentions.item_selected', function (event) {\n\t\t\tdispatchEvent.call(this, dispatch, EDITOR_ON_ITEM_SELECT_TRACK, event);\n\t\t});\n\t\teditor.on('sn_hotkey.item_selected', function (e) {\n\t\t\tdispatch('TRACK_HOTKEY_SELECTED', e.payload);\n\t\t});\n\t\teditor.on('sn_hotkey.hotkey_set', function (e) {\n\t\t\tdispatch('TRACK_HOTKEY_SET', e.payload);\n\t\t});\n\t\teditor.on('sn_mentions.add_mention', function (event) {\n\t\t\tdispatch('NOW_RECORD_HTML_EDITOR#MENTION_ADDED', event);\n\t\t});\n\t\teditor.on('sn_mentions.delete_mention', function (event) {\n\t\t\tdispatch('NOW_RECORD_HTML_EDITOR#MENTION_DELETED', event);\n\t\t});\n\t});\n};\n\nexport const componentRenderedEffect = ({\n\taction: {\n\t\tpayload: { previousRenderProperties }\n\t},\n\tstate: { editor, isTranslationEnabled },\n\tproperties\n}) => {\n\tif (!editor || !tinymce) return;\n\tconst oldHeightProps = getDimensionInfo(previousRenderProperties);\n\tconst newHeightProps = getDimensionInfo(properties);\n\tif (!isEqual(oldHeightProps, newHeightProps)) {\n\t\t// Updating the settings doesn't update the height, but its necessary for\n\t\t// max/min heights (which some plugins potentially use internally by grabbing the latest)\n\t\tfor (const [key, value] of Object.entries(newHeightProps)) {\n\t\t\teditor.options.set(key, value);\n\t\t}\n\n\t\t// Only resize if the height has changed\n\t\tif (oldHeightProps.height !== newHeightProps.height)\n\t\t\teditor.theme?.ui?.resizeBy(\n\t\t\t\t{\n\t\t\t\t\tleft: 0,\n\t\t\t\t\ttop: newHeightProps.height - oldHeightProps.height\n\t\t\t\t},\n\t\t\t\tEDITOR_VERTICAL_RESIZE_TYPE\n\t\t\t);\n\t}\n\n\tconst editorBody = editor.getBody();\n\tif (\n\t\tisTranslationEnabled &&\n\t\teditorBody &&\n\t\teditorBody.style.paddingRight !== '1.5rem'\n\t) {\n\t\teditorBody.style.paddingRight = '1.5rem';\n\t}\n};\n\nexport const domReadyEffect = ({ host, properties, dispatch }) => {\n\tif (!tinymce) {\n\t\tconst textarea = host.shadowRoot.querySelector('textarea');\n\t\tcheckAutofocus(properties.autofocus, textarea);\n\t}\n\t\n\thost.insertPill = pillInfo => dispatch(INSERT_PILL, pillInfo);\n};\n\nconst getEditorContent = (editor, properties) => {\n\tconst content = editor.getContent();\n\n\treturn properties.useCodeBlocks && content\n\t\t? `[code]${content}[/code]`\n\t\t: content;\n};\n\nconst isOnChangeEventFromFocus = event => {\n\tconst command = event?.command;\n\treturn command === 'mceFocus';\n};\n\nconst isOnChangeEventFromContentUpdate = event => {\n\treturn event?.type === 'setcontent';\n};\n\nexport const editorOnChangeEffect = ({\n\tproperties,\n\taction: {\n\t\tpayload: { eventPayload: event, editor }\n\t},\n\tupdateState,\n\tdispatch\n}) => {\n\tif (\n\t\tisOnChangeEventFromFocus(event) ||\n\t\tisOnChangeEventFromContentUpdate(event)\n\t) {\n\t\treturn;\n\t}\n\n\tconst { onStagedValueChange, onChange } = properties;\n\tconst value = getEditorContent(editor, properties);\n\teditor.setDirty(true);\n\tdispatch(CALLBACK_AND_DISPATCH, {\n\t\tcallback: onStagedValueChange,\n\t\tisValueChanged: false,\n\t\tdispatchPayload: { value }\n\t});\n\n\tupdateState({\n\t\tvalue\n\t});\n\n\tif (isFunction(onChange)) {\n\t\tonChange(event);\n\t}\n};\n\nexport const editorOnBlurEffect = ({\n\tproperties,\n\taction: {\n\t\tpayload: { eventPayload: event, editor }\n\t},\n\tupdateState,\n\tstate: { isTranslationEnabled, translatedText },\n\tdispatch\n}) => {\n\tconst { onValueChange, onBlur } = properties;\n\tconst value = getEditorContent(editor, properties);\n\tif (editor.isDirty()) {\n\t\tdispatch(CALLBACK_AND_DISPATCH, {\n\t\t\tcallback: onValueChange,\n\t\t\tisValueChanged: true,\n\t\t\tdispatchPayload: { value }\n\t\t});\n\t\teditor.save(); //we have reported the event, so is not dirty anymore\n\t}\n\n\tupdateState({\n\t\thasFocus: false,\n\t\tvalue\n\t});\n\n\tif (isFunction(onBlur)) {\n\t\tonBlur(event);\n\t}\n\teditor.getContentAreaContainer().classList.remove('focused');\n\tisTranslationEnabled &&\n\t\thandleDynamicTranslationBlur(value, updateState, translatedText);\n};\n\nexport const editorOnKeyDownEffect = ({\n\taction: {\n\t\tpayload: { eventPayload: event }\n\t}\n}) => {\n\thandleShortcutKeyDown(event);\n};\n\nexport const editorSetFocusEffect = ({ state: { editor } }) => {\n\teditor.focus();\n\teditor.getContainer().scrollIntoView();\n};\n\nexport const editorOnFocusEffect = ({\n\tproperties: { onFocus },\n\taction: {\n\t\tpayload: { eventPayload: event }\n\t},\n\tupdateState\n}) => {\n\tupdateState({\n\t\thasFocus: true\n\t});\n\n\tif (isFunction(onFocus)) {\n\t\tonFocus(event);\n\t}\n};\n\nexport const editorOnClickEffect = ({\n\tproperties: { hasFocus },\n\taction: {\n\t\tpayload: { editor }\n\t}\n}) => {\n\t// this is added because when a user's first click in the tinymce\n\t// iframe body happens to be a knowledge block (or other non-editable\n\t// content), the editor never gets focus. This is an issue because\n\t// if the user clicks away from the editor, the knowledge block is still\n\t// in a selected state and the block is highlighted until user clicks somewhere\n\t// else within the iframe to focus the editor. This ensures that if a user clicks\n\t// on the knowledge block initially, the editor gets focus as expected.\n\tif (!hasFocus) {\n\t\teditor.focus();\n\t}\n\t// Browser events within iframe do not escape the iframe. Supposing a dropdown is open\n\t// on the page, and the user clicks on the editor, then the dropdown will remain open. To fix this issue,\n\t// we trigger a mousedown event on the iframeElement so that it propagates upwards and results in dropdowns closing.\n\teditor.iframeElement.ownerDocument.dispatchEvent(new Event('mousedown'));\n};\n\nexport const editorSetContentEffect = ({\n\tstate: { value },\n\taction: {\n\t\tpayload: { editor, resetUndoStack = false }\n\t},\n\tproperties: { allowBlockBasedAnchors }\n}) => {\n\t// Before React to Seismic migration, html-editor and TinyMCEEditor were two React components\n\t// and had separate lifecycle and the property value change was preserved. So state of 'value' would\n\t// be set before TinyMCEEditor gets executed. While when we migrated to seismic, only html-editor\n\t// remained a seismic-component. So when we initialise TinyMCEEditor, the order is not preserved\n\t// on what would be called first. To ensure correct value of property 'value' is being passed onto\n\t// TinyMCEEditor, we are now calling this effect to make sure updated state of 'value' is passed to\n\t// the TinyMCEEditor.\n\tlet content = stripCodeBlocks(toString(value));\n\tif (allowBlockBasedAnchors) content = swapDivsWithSpans(content);\n\teditor.setContent(content);\n\t// we need to reset the tinyMCE undo manager since tinymce is already initialized with empty value\n\t// since we are calling editor.setContent in an action handler instead of editor.init\n\t// Ultimate solution is to convert TinyMCEEditor to a seismic component if we run into more timing issues in future\n\tif (resetUndoStack) editor?.undoManager.reset();\n};\n\nexport const editorOnResizeEffect = ({\n\tproperties: { onResize },\n\taction: {\n\t\tpayload: { eventPayload: event }\n\t}\n}) => {\n\tif (isFunction(onResize)) {\n\t\tonResize(event);\n\t}\n};\n","import { toString, omit, isFunction, get, extend } from 'lodash';\nimport { tinymce } from 'sn-tinymce';\n\nimport { createCustomElement, actionTypes } from '@servicenow/ui-core';\nimport '@servicenow/now-input';\nimport focusBehavior from '@servicenow/behavior-focus';\nconst { COMPONENT_DOM_READY, COMPONENT_PROPERTY_CHANGED, COMPONENT_RENDERED } =\n\tactionTypes;\n\nimport {\n\tcreateWithValueChangeCallbackBehavior,\n\twithValueChangeCallbacksView,\n\ttransformState,\n\tisAttrTrue,\n\ttrackBehavior,\n\tdynamicTranslationBehaviour,\n\ttranslationBehavior,\n\tisEnabledBehavior,\n\tgetAriaLabelFromConfig,\n\tgetBaseURL\n} from '@devsnc/sn-controls-common';\nimport { Input } from '@devsnc/sn-record-input';\n\nimport TinyMCEEditor from './TinyMCEEditor';\nimport TINYMCE_THEME_BEHAVIORS from './TinyMCEThemeBehaviors';\n\nimport {\n\tPOST_ATTACHMENT_QUERY,\n\tPOST_DATA_START,\n\tPOST_DATA_PROGRESS,\n\tPOST_DATA_SUCCESS,\n\tPOST_DATA_FAILURE,\n\tGET_ATTACHMENTS_DATA,\n\tGET_ATTACHMENTS_SUCCESS,\n\tGET_ATTACHMENTS_FAILURE,\n\tDEFAULT_MIN_HEIGHT,\n\tDEFAULT_HEIGHT,\n\tDEFAULT_MAX_HEIGHT,\n\tEDITOR_ON_CHANGE,\n\tEDITOR_ON_BLUR,\n\tEDITOR_ON_FOCUS,\n\tEDITOR_ON_CLICK,\n\tEDITOR_ON_RESIZE,\n\tEDITOR_SET_FOCUS,\n\tSETUP_TINYMCE_EDITOR,\n\tEDITOR_SET_CONTENT,\n\tEDITOR_ON_KEYDOWN,\n\tEDITOR_ON_ITEM_SELECT_TRACK,\n\tINSERT_PILL\n} from './constants';\n\nimport {\n\tpostAttachmentEffect,\n\tpostAttachmentStartEffect,\n\tpostAttachmentProgressEffect,\n\tpostAttachmentSuccessEffect,\n\tpostAttachmentFailureEffect,\n\tgetAttachmentsEffect,\n\tgetAttachmentsSuccessEffect,\n\tgetAttachmentsFailureEffect,\n\tdomReadyEffect,\n\tpropertyChangedEffect,\n\tcomponentRenderedEffect,\n\teditorOnChangeEffect,\n\teditorOnBlurEffect,\n\teditorOnFocusEffect,\n\teditorOnClickEffect,\n\teditorOnKeyDownEffect,\n\teditorOnResizeEffect,\n\tsetupTinymceEditorEffect,\n\teditorSetContentEffect,\n\teditorSetFocusEffect,\n\teditorOnItemSelectTrackEffect,\n\tinsertPillEffect\n} from './effects';\n\nimport style from './html.scss';\n\nimport { fieldLayoutSchema } from '@devsnc/sn-controls-common';\n\nconst withValueChangeCallbackBehavior = {\n\tbehavior: createWithValueChangeCallbackBehavior()\n};\n\nconst onFocusEvent = (properties, updateState) => event => {\n\tupdateState({\n\t\thasFocus: true\n\t});\n\n\tif (isFunction(properties.onFocus)) {\n\t\tproperties.onFocus(event);\n\t}\n};\n\nconst onBlurEvent = (properties, updateState) => event => {\n\tupdateState({\n\t\thasFocus: false\n\t});\n\n\tif (isFunction(properties.onBlur)) {\n\t\tproperties.onBlur(event);\n\t}\n};\n\nconst onResizeEvent = properties => event => {\n\tif (isFunction(properties.onResize)) {\n\t\tproperties.onResize(event);\n\t}\n};\n\nconst onStagedValueChangeEvent =\n\t(onStagedValueChange, updateState) => event => {\n\t\tupdateState({\n\t\t\tvalue: event.value\n\t\t});\n\n\t\tonStagedValueChange(event);\n\t};\n\nconst onValueChangeEvent = (onValueChange, updateState) => event => {\n\tupdateState({\n\t\tvalue: event.value\n\t});\n\n\tonValueChange(event);\n};\n\n/**\n * Allows users to input rich text data via [TinyMCE](http://tinymce.com).\n *\n * The parent application/component must provide a reference to a tinymce core\n * instance. When unavailable (or not provided), this component renders a\n * regular textarea.\n *\n * Note that this component is _always_ uncontrolled. Trying to control TinyMCE\n * just makes everybody sad.\n */\nconst NowHtmlEditor = (state, { updateState, dispatch }) => {\n\tconst {\n\t\tproperties,\n\t\tenableMentions,\n\t\tmentions,\n\t\ttranslatedText,\n\t\tisTranslationEnabled,\n\t\tvalue,\n\t\teditor\n\t} = state;\n\tconst onFocus = onFocusEvent(properties, updateState);\n\tconst onBlur = onBlurEvent(properties, updateState);\n\tconst onResize = onResizeEvent(properties);\n\tconst onStagedValueChange = onStagedValueChangeEvent(\n\t\tstate.onStagedValueChange,\n\t\tupdateState\n\t);\n\tconst onValueChange = onValueChangeEvent(state.onValueChange, updateState);\n\tlet Component = TinyMCEEditor;\n\tconst {\n\t\tenableCodeBlocks,\n\t\tuseCodeBlocks,\n\t\thelperContent,\n\t\tlabel,\n\t\tcomponentId,\n\t\tconfigAria,\n\t\tfieldLayout\n\t} = properties;\n\tconst readonly = isAttrTrue(properties.readonly);\n\tif (readonly && !properties.value) {\n\t\treturn (\n\t\t\t<now-input\n\t\t\t\thelperContent={helperContent}\n\t\t\t\tlabel={label}\n\t\t\t\treadonly={true}\n\t\t\t\tvalue=\"—\"\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tinput: {\n\t\t\t\t\t\t...configAria,\n\t\t\t\t\t\t...getAriaLabelFromConfig(configAria, 'Set value for {0}')\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tfield-layout={fieldLayout}\n\t\t\t/>\n\t\t);\n\t}\n\n\tlet childProps = {\n\t\t...properties,\n\t\tuseCodeBlocks: enableCodeBlocks || useCodeBlocks,\n\t\tmentions,\n\t\tenableMentions,\n\t\tupdateState,\n\t\tdispatch,\n\t\teditor,\n\t\thasFocus: state.hasFocus,\n\t\tbehaviors: state.behaviors,\n\t\tonValueChange: state.onValueChange,\n\t\tonStagedValueChange: state.onStagedValueChange,\n\t\ttranslatedText,\n\t\tisTranslationEnabled,\n\t\tvalue\n\t};\n\n\tif (!tinymce) {\n\t\tComponent = Input;\n\t\tchildProps = omit(\n\t\t\tchildProps,\n\t\t\t'configMentions',\n\t\t\t'convertUrls',\n\t\t\t'enableMentions',\n\t\t\t'extendedValidElements',\n\t\t\t'fonts',\n\t\t\t'language',\n\t\t\t'mentions',\n\t\t\t'plugins',\n\t\t\t'relativeUrls',\n\t\t\t'removeHost',\n\t\t\t'toolbar',\n\t\t\t'validButtons',\n\t\t\t'validPlugins',\n\t\t\t'updateState',\n\t\t\t'hasFocus',\n\t\t\t'behaviors',\n\t\t\t'contextmenu'\n\t\t);\n\n\t\textend(childProps, {\n\t\t\ttype: 'textarea',\n\t\t\tvalue: state.value,\n\t\t\tonValueChange,\n\t\t\tonStagedValueChange,\n\t\t\tonFocus,\n\t\t\tonBlur,\n\t\t\tonResize,\n\t\t\tautofocus: false,\n\t\t\t// STRY59509727: If someone has explicitly not passed any value to autoresize props,\n\t\t\t// default to true to make it consistent with the behavior before the autoresize\n\t\t\t// props was introduced as part of the mentioned story.\n\t\t\tautoresize: properties.autoresize ?? true\n\t\t});\n\t}\n\n\treturn <Component {...childProps} componentId={`html-${componentId}`} />;\n};\n\nexport default NowHtmlEditor;\n\n/**\n *\n * HTML Editor Component that uses TinyMCE.\n * TinyMCE for the most part, does not support incremental rendering.\n * Attempting to modify certain properties may or may not have expected or desired behavior.\n *\n * ```jsx\n * <now-record-html-editor\n *\t label=\"Enter some HTMLs\"\n *\t value=\"<b>Hello</b> <i>World</i>\"\n * />\n * ```\n *\n * @seismicElement now-record-html-editor\n * @summary HTML Editor Component that uses TinyMCE\n *\n * */\ncreateCustomElement('now-record-html-editor', {\n\tview: withValueChangeCallbacksView(NowHtmlEditor),\n\tsetInitialState: ({\n\t\tproperties: { value, configMentions, enableMentions, mentions }\n\t}) => ({\n\t\tvalue: value === true ? '' : toString(value),\n\t\thasFocus: false,\n\t\teditor: null,\n\t\teditorNotificationsManager: null,\n\t\tenableMentions: get(configMentions, 'enableMentions') || enableMentions,\n\t\tmentions: {\n\t\t\t...mentions,\n\t\t\t...omit(configMentions, 'enableMentions')\n\t\t}\n\t}),\n\tstyles: style,\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: domReadyEffect,\n\t\t[COMPONENT_PROPERTY_CHANGED]: propertyChangedEffect,\n\t\t[COMPONENT_RENDERED]: componentRenderedEffect,\n\t\t[EDITOR_ON_CHANGE]: editorOnChangeEffect,\n\t\t[EDITOR_ON_BLUR]: editorOnBlurEffect,\n\t\t[EDITOR_ON_FOCUS]: editorOnFocusEffect,\n\t\t[EDITOR_ON_CLICK]: editorOnClickEffect,\n\t\t[EDITOR_SET_FOCUS]: editorSetFocusEffect,\n\t\t[EDITOR_ON_KEYDOWN]: {\n\t\t\teffect: editorOnKeyDownEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[EDITOR_SET_CONTENT]: {\n\t\t\teffect: editorSetContentEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[EDITOR_ON_RESIZE]: editorOnResizeEffect,\n\t\t[SETUP_TINYMCE_EDITOR]: setupTinymceEditorEffect,\n\t\t[POST_ATTACHMENT_QUERY]: {\n\t\t\t...postAttachmentEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[POST_DATA_START]: {\n\t\t\teffect: postAttachmentStartEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[POST_DATA_PROGRESS]: {\n\t\t\teffect: postAttachmentProgressEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[POST_DATA_SUCCESS]: {\n\t\t\teffect: postAttachmentSuccessEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[POST_DATA_FAILURE]: {\n\t\t\teffect: postAttachmentFailureEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[GET_ATTACHMENTS_DATA]: {\n\t\t\t...getAttachmentsEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[GET_ATTACHMENTS_SUCCESS]: {\n\t\t\teffect: getAttachmentsSuccessEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[GET_ATTACHMENTS_FAILURE]: {\n\t\t\teffect: getAttachmentsFailureEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[EDITOR_ON_ITEM_SELECT_TRACK]: {\n\t\t\teffect: editorOnItemSelectTrackEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[INSERT_PILL]: {\n\t\t\teffect: insertPillEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t'SN_RECORD_INPUT#VALUE_CHANGED': { stopPropagation: true },\n\t\t'SN_RECORD_INPUT#STAGED_VALUE_CHANGED': { stopPropagation: true }\n\t},\n\tproperties: {\n\t\tcomponentId: {},\n\t\t/**\n\t\t * Causes the component to receive focus as soon as it has finished\n\t\t * mounting. When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t * @type {string | boolean}\n\t\t */\n\t\tautofocus: {},\n\t\t/**\n\t\t * Causes the component to automatically resize the editor to the content inside it.\n\t\t * Autoresize plugin will automatically be enabled if this property is set to true.\n\t\t * @type {boolean}\n\t\t */\n\t\tautoresize: {\n\t\t\tdefault: false,\n\t\t\tschema: { type: 'boolean' }\n\t\t},\n\t\t/**\n\t\t * Image upload handler appends ZZ_YY prefix for the table by default while uploading and this prop is used to control the append behavior.\n\t\t * @type {boolean}\n\t\t */\n\t\tignoreInlineAttachmentPrefix: {\n\t\t\tdefault: false,\n\t\t\tschema: { type: 'boolean' }\n\t\t},\n\t\t/**\n\t\t * This option allows you to specify the size of the padding at the bottom of the editor’s body set on initialization when autoresize plugin is enabled.\n\t\t * @type {number}\n\t\t * @see [autoresize_bottom_margin](https://www.tiny.cloud/docs/plugins/opensource/autoresize/#autoresize_bottom_margin)\n\t\t *\n\t\t */\n\t\tautoresizeBottomMargin: { schema: { type: 'number' } },\n\t\t/**\n\t\t * The number of lines until texteditor should be autoresized when 'autoresize' property is set to true.\n\t\t * @type {number}\n\t\t */\n\t\tautoresizeLineLimit: { schema: { type: 'number' } },\n\t\t/**\n\t\t * Experimental feature. This is used to swap divs with spans when inside anchors.\n\t\t * Although using divs inside anchors is valid HTML5, tinymcev5 does not support it.\n\t\t * This is a workaround.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tallowBlockBasedAnchors: {\n\t\t\tdefault: false,\n\t\t\tschema: { type: 'boolean' }\n\t\t},\n\t\t/**\n\t\t * TinyMCE config browser_spellcheck. Set to true to utilize the browser's native spell check functionality.\n\t\t * @see [browser_based_spellchecking](https://www.tiny.cloud/docs/general-configuration-guide/spell-checking/#browser-basedspellchecking)\n\t\t * @type {boolean}\n\t\t **/\n\t\tbrowserSpellcheck: {\n\t\t\tdefault: true,\n\t\t\tschema: { type: 'boolean' }\n\t\t},\n\t\t/**\n\t\t * TinyMCE config content_style. CSS string to style editable area. This does _not_ affect the output html.\n\t\t * @see [content_style](https://www.tiny.cloud/docs/configure/content-appearance/#content_style)\n\t\t * @type {string}\n\t\t */\n\t\tcontentStyle: { default: '' },\n\t\t/**\n\t\t * TinyMCE config convert_urls\n\t\t * @see [convert_urls](https://www.tiny.cloud/docs/configure/url-handling/#convert_urls)\n\t\t * @type {boolean}\n\t\t */\n\t\tconvertUrls: { default: false },\n\t\t/**\n\t\t * TinyMCE config extended_valid_elements\n\t\t * @see [extended_valid_elements](https://www.tiny.cloud/docs/configure/content-filtering/#extended_valid_elements)\n\t\t * @type {string}\n\t\t */\n\t\textendedValidElements: { default: '' },\n\t\t/**\n\t\t * TinyMCE config font_family_formats. List of fonts to enable.\n\t\t * @type {string}\n\t\t * @see [TinyMCE_font_configuration](https://www.tiny.cloud/docs/tinymce/latest/user-formatting-options/#font_family_formats)\n\t\t */\n\t\tfonts: {\n\t\t\tdefault:\n\t\t\t\t'Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Journal=journal;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats;'\n\t\t},\n\t\t/**\n\t\t * TinyMCE config min_height. The minimum height of editor including the toolbar.\n\t\t * @type {number}\n\t\t * @see [min_height](https://www.tiny.cloud/docs/configure/editor-appearance/#min_height)\n\t\t */\n\t\tminHeight: { default: DEFAULT_MIN_HEIGHT, schema: { type: 'number' } },\n\t\t/**\n\t\t * TinyMCE config height. The height of the editor including the toolbar\n\t\t * @type {number}\n\t\t * @see [height](https://www.tiny.cloud/docs/configure/editor-appearance/#height)\n\t\t */\n\t\theight: { default: DEFAULT_HEIGHT, schema: { type: 'number' } },\n\t\t/**\n\t\t * TinyMCE config max_height. The maximum height of editor including the toolbar\n\t\t * @type {number}\n\t\t * @see [max_height](https://www.tiny.cloud/docs/configure/editor-appearance/#max_height)\n\t\t */\n\t\tmaxHeight: { default: DEFAULT_MAX_HEIGHT, schema: { type: 'number' } },\n\t\t/**\n\t\t * TinyMCE config toolbar.\n\t\t * @see [TinyMCE toolbar configuration](https://www.tiny.cloud/docs/configure/editor-appearance/#toolbar)\n\t\t * @type {Array<string>|string|boolean} for boolean, only false is supported\n\t\t */\n\t\ttoolbar: {\n\t\t\tdefault:\n\t\t\t\t'bold italic underline undo redo | fontfamily fontsize table | forecolor backcolor link unlink | code | alignleft aligncenter alignright | bullist numlist fullscreen'\n\t\t},\n\t\t/**\n\t\t * TinyMCE config relativeUrls\n\t\t * @see [relative_urls](https://www.tiny.cloud/docs/configure/url-handling/#relative_urls)\n\t\t * @type {boolean}\n\t\t */\n\t\trelativeUrls: { default: true },\n\t\t/**\n\t\t * TinyMCE config remove_script_host\n\t\t * @see [remove_script_host](https://www.tinymce.com/docs/configure/url-handling/#remove_script_host)\n\t\t * @type {boolean}\n\t\t */\n\t\tremoveHost: { default: true },\n\t\t/**\n\t\t * TinyMCE config placeholder. Placeholder string when there is no value\n\t\t * @see [placeholder](https://www.tiny.cloud/docs/configure/editor-appearance/#placeholder)\n\t\t * @type {string}\n\t\t */\n\t\tplaceholder: {},\n\t\t/**\n\t\t * This setting controls how content pasted from sources other than Microsoft Word is filtered.\n\t\t * @type {string}\n\t\t * @see [power_paste_html_import](https://www.tiny.cloud/docs/plugins/powerpaste/#powerpaste_html_import)\n\t\t */\n\t\tpowerPasteHtmlImport: { default: 'clean' },\n\t\t/**\n\t\t * This setting controls how content pasted from Microsoft Word is filtered.\n\t\t * @type {string}\n\t\t * @see [power_paste_word_import](https://www.tiny.cloud/docs/plugins/powerpaste/#powerpaste_word_import)\n\t\t */\n\t\tpowerPasteWordImport: { default: 'prompt' },\n\t\t/**\n\t\t * This property allows the user to set a default target value for links when inserting/editing\n\t\t * a link via the link dialog. It can take one of four values: ['_blank', '', '_self', '_top']\n\t\t * @type {string}\n\t\t */\n\t\tdefaultLinkTarget: { default: '' },\n\t\t/**\n\t\t * Client-side HTML editor has its own context menu,\n\t\t * overriding the browser's. Holding Ctrl while right-clicking\n\t\t * bypasses the editor's context menu to show the native context menu.\n\t\t\tThis property specifies which context menu options are available.\n\t\t\tDefault value is \"link image table\" (without quotes).\n\t\t\tA value of \"false\" (without quotes) disables the editor's context menu.\n\t\t */\n\t\tcontextmenu: { default: 'link image table' },\n\t\t/**\n\t\t * List of plugins to enable. Note that TinyMCE will lazy-load these plugins\n\t\t * at runtime, so the corresponding plugin files must be hosted by the app\n\t\t * for this to work propertly.\n\t\t * @see [plugins](https://www.tiny.cloud/docs/configure/integration-and-setup/#plugins)\n\t\t * @type {string}\n\t\t */\n\t\tplugins: {\n\t\t\tdefault:\n\t\t\t\t'accordion link lists advlist table powerpaste searchreplace preview fullscreen placeholder readonlynoborder'\n\t\t},\n\t\t/**\n\t\t * Specifies that the user cannot modify the value of the component.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t * @see [readonly](https://www.tiny.cloud/docs/configure/integration-and-setup/#readonly)\n\t\t * @type {boolean}\n\t\t */\n\t\treadonly: { default: false },\n\n\t\t/*\n\t\t * ====================================================================================\n\t\t * NOTE: Below are custom service now properties not directly passed to tinymce\n\t\t * ====================================================================================\n\t\t */\n\n\t\t/**\n\t\t * Settings for mentions plugin\n\t\t *\n\t\t * Shape\n\t\t *\n\t\t * `type:boolean` enableMentions - Flag that needs to be true in order for the mentions to be enabled\n\t\t *\n\t\t * `type:function` fetch - Function that takes in a query and returns a promise. This promise should resolve with the mentions suggestions\n\t\t *\n\t\t * `type:string` table - Table where the mentions user exists\n\t\t *\n\t\t * `type:string` resourceTable - Table to check ACLs against when using the default AtMentionsService endpoint.\n\t\t *\n\t\t * `type:string` resourceSysId - The sys_id of the element to check ACLs against when using the default AtMentionsService endpoint.\n\t\t *\n\t\t * `type:{loading: string,noMatches: string,init: string}`messages - Messages to be displayed when mentions list appears\n\t\t * @type {{ enableMentions: boolean, fetch: function, table: string, resourceTable: string,resourceSysId: string, messages: {loading: string,noMatches: string,init: string}}}\n\t\t */\n\t\tconfigMentions: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tenableMentions: { type: 'boolean' },\n\t\t\t\t\tfetch: { type: 'object' },\n\t\t\t\t\ttable: { type: 'string' },\n\t\t\t\t\tresourceTable: { type: 'string' },\n\t\t\t\t\tresourceSysId: { type: 'string' },\n\t\t\t\t\tmessages: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tloading: { type: 'string' },\n\t\t\t\t\t\t\tnoMatches: { type: 'string' },\n\t\t\t\t\t\t\tinit: { type: 'string' }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Settings require to enable response_templates hotkey\n\t\t *\n\t\t * Shape\n\t\t *\n\t\t * `type:boolean` enableResponseTemplates - Flag that needs to be true in order for the feature to be enabled\n\t\t *\n\t\t * `type:string` channel - To set the channel that is used by the Response Template endpoint\n\t\t *\n\t\t * `type:string` recordTable - Table to check ACLs against when using the Response Template endpoint.\n\t\t *\n\t\t * `type:string` recordSysId - The sys_id of the element to check ACLs against when using the Response Template endpoint.\n\t\t *\n\t\t * `type:array` defaultSuggestions - The default suggestions that will be displayed when the user enters the response templates hotkey\n\t\t *\n\t\t * `type:string` suggestionsHeader - The header of the dropdown list that is used to display default suggestions\n\t\t *\n\t\t * `type:function` defaultSuggestionsFetcher - Callback function used to fetch defaultSuggestions. This supersedes the defaultSuggestions prop\n\t\t *\n\t\t * @type {{ enableResponseTemplates: boolean, channel: string, recordTable: string, recordSysId: string, defaultSuggestions: array, suggestionsHeader: string}}\n\t\t */\n\t\tresponseTemplates: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tenableResponseTemplates: { type: 'boolean' },\n\t\t\t\t\tchannel: { type: 'string' },\n\t\t\t\t\trecordTable: { type: 'string' },\n\t\t\t\t\trecordSysId: { type: 'string' },\n\t\t\t\t\tdefaultSuggestions: { type: 'array' },\n\t\t\t\t\tsuggestionsHeader: { type: 'string' },\n\t\t\t\t\tdefaultSuggestionsFetcher: { type: 'function' }\n\t\t\t\t}\n\t\t\t},\n\t\t\tdefault: {}\n\t\t},\n\t\t/**\n\t\t * Additional content describing the field, usually to provide further\n\t\t * instruction to the user.\n\t\t * @type {string}\n\t\t */\n\t\tdescription: {},\n\t\t/**\n\t\t * Whether to wrap the value in [code] blocks (For journal entry fields)\n\t\t * @type {boolean}\n\t\t */\n\t\tenableCodeBlocks: { default: false },\n\t\t/**\n\t\t * Whether we want mentions to be enabled or not.\n\t\t * @deprecated Use configMentions.enableMentions.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tenableMentions: { default: false },\n\t\t/**\n\t\t * Settings for mentions plugin\n\t\t */\n\t\tmentions: {},\n\t\t/**\n\t\t * If set, an iconic button with a popover appears next to the field\n\t\t * label to display additional hint text to the user, such as\n\t\t * password requirements or other instructions for completing the field.\n\t\t * @type {(string|JSX)}\n\t\t */\n\t\thelperContent: { schema: { type: 'string' } },\n\t\t/**\n\t\t * Specifies whether the current value is not valid.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t * @type {string | boolean}\n\t\t */\n\t\tinvalid: { default: false },\n\t\t/**\n\t\t * Whether the field is a journal input field or not.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tisJournal: {},\n\t\t/**\n\t\t * It's a label! All form controls need a label!\n\t\t * @type {string}\n\t\t */\n\t\tlabel: {},\n\t\t/**\n\t\t * User's preferred language\n\t\t * @type {string}\n\t\t */\n\t\tlanguage: {},\n\t\t/**\n\t\t * Stringified object containing tinymce menubar configurations\n\t\t * Is deprecated, and will be removed after Zurich. For all similar\n\t\t * purposes, use htmlEditorConfigs.\n\t\t * @type {string}\n\t\t */\n\t\tmenuConfigs: { default: '', schema: { type: 'string' } },\n\t\t/**\n\t\t * Stringified object containing tinymce configurations from sys_script_include script\n\t\t * @type {string}\n\t\t */\n\t\thtmlEditorConfigs: { default: '', schema: { type: 'string' } },\n\t\t/**\n\t\t * Array of message objects that must contain type and message itself.\n\t\t * @type {Array<{type: (\"error\"|\"warning\"|\"success\"|\"liveUpdate\"|\"info\"|\"suggestion\"), type:Array<string,Object<{string, getMessage:function}>> }>}\n\t\t */\n\t\tmessages: { default: [] },\n\t\t/**\n\t\t * The initial number of lines that should be visible in the editor.\n\t\t * Also sets minHeight if not already defined\n\t\t * @type {number}\n\t\t * @deprecated Will be removed in future version. Please use minHeight and height instead, you can approximate equivalent height as follows: (minLineCount * 24) + 11.\n\t\t */\n\t\tminLineCount: { schema: { type: 'number' } },\n\t\t/**\n\t\t * Name for the component. Any events dispatched by the component will use this name.\n\t\t * @type {string}\n\t\t */\n\t\tname: {},\n\t\t/**\n\t\t * onBlur event callback\n\t\t * @type {function}\n\t\t * @private\n\t\t */\n\t\tonBlur: {},\n\t\t/**\n\t\t * onFocus event callback\n\t\t * @type {function}\n\t\t * @private\n\t\t */\n\t\tonFocus: {},\n\t\t/**\n\t\t * onResize event callback\n\t\t * @type {function}\n\t\t * @private\n\t\t */\n\t\tonResize: {},\n\t\t/**\n\t\t * Callback used when an intermediate value has changed.\n\t\t * @type {function}\n\t\t * @private\n\t\t */\n\t\tonStagedValueChange: {},\n\t\t/**\n\t\t * Callback used when the value has changed. Very similar to an `onChange`\n\t\t * event, but this may also fire when the component formats its value\n\t\t * onBlur.\n\t\t *\n\t\t * Params\n\t\t * `type:object` event - The event payload\n\t\t * `type:string` event.name - The name of the component that triggered the event\n\t\t * `type:any` event.value - The new value for the component\n\t\t * `type:string` event.displayValue - The human-readable represenation of the value\n\t\t * `type:object` event.error - If the current value is invalid, this propery will be set. When the current value is valid, this property will be null.\n\t\t * `type:string` event.error.type - Error type\n\t\t * `type:string` event.error.message - Description of why the value is invalid\n\t\t *\n\t\t * @type {function}\n\t\t * @private\n\t\t */\n\t\tonValueChange: {},\n\n\t\t/**\n\t\t * Field which indicates preloaded members of the record\n\t\t * Array.<{sys_id: string,name?: string,username?: string,email?: string,avatar?: string,active?: boolean,[key: string]?:any}>\n\t\t * @type {Array}\n\t\t * @default []\n\t\t * @schema { type: 'array' }\n\t\t */\n\t\tpreloadMentions: {\n\t\t\tdefault: [],\n\t\t\tschema: { type: 'array' }\n\t\t},\n\n\t\t/**\n\t\t * Table used for uploaded images stored in sys attachment table\n\t\t * @type {string}\n\t\t * @private\n\t\t */\n\t\treferringTable: {},\n\t\t/**\n\t\t * sys_id of the record used for uploaded images stored in sys attachment table\n\t\t * @type {string}\n\t\t * @private\n\t\t */\n\t\treferringRecordId: {},\n\t\t/**\n\t\t * Whether or not the user must fill in a value for this component.\n\t\t * Can be specified as a boolean or the string \"true\"\n\t\t * @type {boolean}\n\t\t */\n\t\trequired: { default: false },\n\t\t/**\n\t\t * When rendering a html-editor, whether or not to show the resize handle.\n\t\t * @type {boolean}\n\t\t */\n\t\tresizable: { default: true },\n\t\t/**\n\t\t * Specifies that the field should be rendered right-to-left.\n\t\t * When passed as a string, \"true\" (case-sensitive) will be treated like\n\t\t * boolean true.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\treversed: { default: false },\n\t\t/**\n\t\t * When provided, allows whitelisting specific buttons for the toolbar. This\n\t\t * prop should be a comma-separated string of allowed buttons.\n\t\t *\n\t\t * When omitted, any toolbar button supported by TinyMCE can be rendered (via\n\t\t * the `toolbar` prop).\n\t\t * @type {string}\n\t\t */\n\t\tvalidButtons: {},\n\t\t/**\n\t\t * When provided, allows whitelisting specific plugins. This\n\t\t * prop should be a comma-separated string of allowed plugins.\n\t\t *\n\t\t * When omitted, any plugin supported by TinyMCE can be loaded (via\n\t\t * the `plugins` prop).\n\t\t * @type {string}\n\t\t */\n\t\tvalidPlugins: {},\n\t\t/**\n\t\t * Underlying data for the component.\n\t\t * @type {string}\n\t\t */\n\t\tvalue: {},\n\t\t/**\n\t\t * BaseURL of the instance, used in case of embeddables flow, otherwise it will be empty.\n\t\t * @type {string}\n\t\t */\n\t\tbaseURL: { default: getBaseURL() },\n\t\t/**\n\t\t * Controls the set of colors to use for the content area.\n\t\t *\n\t\t * The variant names refer to the color of the background on the default theme, but the actual colors may vary\n\t\t * if another theme is applied.\n\t\t *\n\t\t * The following variants are available:\n\t\t * `neutral`, `yellow`, `magenta`, `pink`, `orange`, `brown`, `green`, `green-yellow` and `blue`.\n\t\t *\n\t\t * Any other values will default to `neutral`.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tvariant: { default: 'neutral' },\n\t\t/**\n\t\t * Whether to wrap the value in [code] blocks (For journal entry fields).\n\t\t * please use `enableCodeBlocks` instead\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tuseCodeBlocks: { default: false },\n\t\t/**\n\t\t * The highlighted Value labels that you want to display beside the Field Label. Can be an array of highlighted values or just single highlighted value object\n\t\t * @type {[{ value: 'string', status: 'string', showIcon: boolean, variantName: 'string', colorName: 'string',iconName: 'string'  }]}\n\t\t */\n\t\thighlightedValue: {\n\t\t\tdefault: {},\n\t\t\tschema: { anyOf: [{ type: 'object' }, { type: 'array' }] }\n\t\t},\n\t\t/**\n\t\t * Dictionary attributes to show condition count and to restrict\n\t\t * fields in dot-walk\n\t\t */\n\t\tdictionaryAttributes: { schema: { type: 'object' } },\n\t\t/**\n\t\t * The config aria property that you want to configure if label is not present.\n\t\t * @type {{ 'aria-label': 'string' }}\n\t\t */\n\t\tconfigAria: { default: {} },\n\t\t/**\n\t\t * Whether to convert the image blobs to base 64\n\t\t * by default we will convert to base64\n\t\t * @type {boolean}\n\t\t */\n\t\tconvertBlobsToBase64: { default: true },\n\t\t/**\n\t\t * Configuration for the field layout.\n\t\t *\n\t\t * Indicates whether the layout will be vertical (stacked view) or horizontal (inline view)\n\t\t * In a horizontal layout, a typical component has three containers: label, formfield and slottted content (also known as label end)\n\t\t * Only if the layout is `horizontal`, the component uses the columns array to set the grid template columns width for these containers.\n\t\t *\n\t\t * Object options:\n\t\t * - `[fieldLayout.layout]`: String. Determines whether the labels, field and slotted content are laid out vertically or horizontally.\n\t\t * - `[fieldLayout.columns]`: Array<string>. Width ratio of horizontal container element (i.e. label, form field and label end slotted content).\n\t\t *\n\t\t * @type {{layout:('horizontal'|'vertical'), columns: array<string>}}\n\t\t * @uib.label Field Layout Configuration\n\t\t * @uib.description Configuration for the field layout. Determines whether the labels, field and slotted content are arranged vertically or horizontally, and their respective proportion in a horizontal container.\n\t\t * @uib.defaultValue {\"layout\": \"vertical\"}\n\t\t * @uib.fieldType json\n\t\t */\n\t\tfieldLayout: {\n\t\t\tdefault: { layout: 'vertical' },\n\t\t\tschema: fieldLayoutSchema\n\t\t},\n\n\t\t/**\n\t\t * This setting controls the filtering of inline elements while pasting from MS Word to editor.\n\t\t * @type {string}\n\t\t * @see [powerpaste_clean_filtered_inline_elements](https://www.tiny.cloud/docs/plugins/premium/powerpaste/#powerpaste_clean_filtered_inline_elements)\n\t\t */\n\t\tpowerPasteFilterInlineElements: { default: 'strong, b' },\n\t\t/**\n\t\t * Allows to re-dispatch the VALUE_CHANGED event every time the stage value is modified\n\t\t * and the component is blurred even if the value matches the last dispatched VALUE_CHANGED event.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tallowFieldChangesAfterEveryStageChange: { default: false },\n\n\t\t/**\n\t\t * Field decorations are being passed with g_form.addDecoration(fieldName, icon, text); method\n\t\t * via client script using g_form api\n\t\t * which renders alongside the field's label\n\t\t * @type {Array.<{icon: string, text: string}>}\n\t\t **/\n\t\tdecorations: {\n\t\t\tdefault: [],\n\t\t\ttype: 'array'\n\t\t},\n\t\t/**\n\t\t * Skill Configuration for field level Now Assist Context Menu component\n\t\t * The schema for this property isn't strongly typed, as we are simply passing the\n\t\t * Now Assist Context Menu specific document model down to the Now Assist Context Menu Component\n\t\t */\n\t\tnowAssistConfig: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcontextMenu: { type: 'object' },\n\t\t\t\t\tminWordCount: { type: 'number' }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Flag that indicates whether the component fits to its parent's height. When true, the component is grown to its parent's height. Default: false.\n\t\t * @type {boolean}\n\t\t */\n\t\tfitToParent: { default: false, schema: { type: 'boolean' } }\n\t},\n\ttransformState,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the intermediate value has changed.\n\t\t * @type {{value: string}}\n\t\t */\n\t\t'NOW_RECORD_HTML_EDITOR#STAGED_VALUE_CHANGED': {},\n\t\t/**\n\t\t * Dispatched when the value has changed. Very similar to an `onChange`\n\t\t * event, but this may also fire when the component formats its value\n\t\t * onBlur.\n\t\t * @type {{value: string}}\n\t\t */\n\t\t'NOW_RECORD_HTML_EDITOR#VALUE_CHANGED': {},\n\t\t/**\n\t\t * Dispatched when a single or multiple mention is / are added from the mention list dropdown\n\t\t * @type {{value: string}}\n\t\t */\n\t\t'NOW_RECORD_HTML_EDITOR#MENTION_ADDED': {},\n\t\t/**\n\t\t * Dispatched when a single or multiple mention is / are deleted from the editor\n\t\t * @type {{value: string}}\n\t\t */\n\t\t'NOW_RECORD_HTML_EDITOR#MENTION_DELETED': {}\n\t},\n\tbehaviors: [\n\t\ttrackBehavior,\n\t\t...TINYMCE_THEME_BEHAVIORS,\n\t\twithValueChangeCallbackBehavior,\n\t\t{ behavior: translationBehavior },\n\t\t{ behavior: isEnabledBehavior },\n\t\t{ behavior: dynamicTranslationBehaviour },\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus: function (host, dispatch) {\n\t\t\t\t\tdispatch(EDITOR_SET_FOCUS);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n});\n","import { createCustomElement } from '@servicenow/ui-core';\n\nimport styles from '../popoverCellEditorContent.scss';\n\nimport { actionHandlers } from './action';\nimport '@servicenow/now-record-html-editor';\n\n/**\n * @type {View<PopoverCellEditorTypeContentProps, {cellEditValue: String}>}\n * @returns\n */\nexport const view = (state) => {\n\tconst { cellEditValue } = state;\n\treturn (\n\t\t<div className=\"popover-html-cell-editor-content-container\">\n\t\t\t<now-record-html-editor\n\t\t\t\tclassName=\"now-record-html-editor-content\"\n\t\t\t\tautofocus\n\t\t\t\tvalue={cellEditValue}\n\t\t\t\tmanageValue={true}\n\t\t\t\tresizable={true}\n\t\t\t\tmaxHeight={400}\n\t\t\t\theight={'min(100%, 400px)'}\n\t\t\t\tminHeight={240}\n\t\t\t\tplugins={\n\t\t\t\t\t'accordion link lists advlist table code powerpaste searchreplace preview fullscreen placeholder readonlynoborder'\n\t\t\t\t}\n\t\t\t\ttoolbar={\n\t\t\t\t\t'bold italic underline undo redo | fontselect fontsizeselect | code | table forecolor backcolor link unlink | alignleft aligncenter alignright | bullist numlist'\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-html-cell-editor-content', {\n\tview,\n\tsetInitialState({\n\t\tproperties: {\n\t\t\tactionsContext: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tcell: { value },\n\t\t\t},\n\t\t},\n\t}) {\n\t\treturn {\n\t\t\tcellEditValue: value,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tactionsContext: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","import { createCustomElement } from '@servicenow/ui-core';\nimport { t } from 'sn-translate';\n\nimport {\n\trenderCustomComponent,\n\tcustomComponentType,\n} from '../../../utils/customLoader';\nimport popoverSelectors from '../../../utils/selectors/popoverSelectors';\n\nimport { actionHandlers } from './actions';\nimport styles from './popoverCellEditorContent.scss';\n\nimport './cellEditorTypes/popoverStringCellEditorContent';\nimport './cellEditorTypes/popoverCurrencyCellEditorContent';\nimport './cellEditorTypes/popoverBooleanCellEditorContent';\nimport './cellEditorTypes/popoverDateTimeCellEditorContent';\nimport './cellEditorTypes/popoverNumberCellEditorContent';\nimport './cellEditorTypes/popoverPillsCellEditorContent';\nimport './cellEditorTypes/popoverChoiceCellEditorContent';\nimport './cellEditorTypes/popoverUrlCellEditorContent';\nimport './cellEditorTypes/popoverLinkCellEditorContent';\nimport './cellEditorTypes/popoverIconCellEditorContent';\nimport './cellEditorTypes/popoverPersonCellEditorContent';\nimport './cellEditorTypes/popoverHTMLCellEditorContent';\n\nimport '@servicenow/now-highlighted-value';\nimport '@servicenow/now-loader';\n\nconst defaultButtonsConfig = {\n\tshowRetry: false,\n\tdisableApply: false,\n};\n\n/**\n * @param {Context | undefined} actionsContext\n * @param {Object} buttonsConfig\n * @returns\n */\nexport const renderPopoverCellEditContentActions = (\n\tactionsContext,\n\tbuttonsConfig\n) => {\n\t// @ts-ignore\n\tconst { showRetry, disableApply, hideAll } = buttonsConfig;\n\n\tconst popoverButtons = hideAll\n\t\t? []\n\t\t: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('Cancel'),\n\t\t\t\t\tariaLabel: t('Cancel'),\n\t\t\t\t\tvariant: 'tertiary',\n\t\t\t\t\tsize: 'sm',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\thideButton: false,\n\t\t\t\t\tid: 'cellEditCancelButton',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('Apply'),\n\t\t\t\t\tariaLabel: t('Apply'),\n\t\t\t\t\tvariant: 'secondary',\n\t\t\t\t\tsize: 'sm',\n\t\t\t\t\tdisabled: disableApply,\n\t\t\t\t\thideButton: showRetry,\n\t\t\t\t\tid: 'cellEditApplyButton',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('Retry'),\n\t\t\t\t\tariaLabel: t('Retry'),\n\t\t\t\t\tvariant: 'secondary',\n\t\t\t\t\tsize: 'sm',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\thideButton: !showRetry,\n\t\t\t\t\tid: 'cellEditRetryButton',\n\t\t\t\t},\n\t\t  ];\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"popover-cell-editor-button-container\"\n\t\t\tdata-test=\"popover-cell-editor-button-container\"\n\t\t>\n\t\t\t{popoverButtons.map((\n\t\t\t\t/** @type {NowButtonProps} */ {\n\t\t\t\t\tariaLabel,\n\t\t\t\t\tid,\n\t\t\t\t\tlabel,\n\t\t\t\t\tsize,\n\t\t\t\t\tvariant,\n\t\t\t\t\tdisabled,\n\t\t\t\t\thideButton,\n\t\t\t\t}\n\t\t\t) => {\n\t\t\t\treturn (\n\t\t\t\t\t!hideButton && (\n\t\t\t\t\t\t<now-button\n\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\t'aria-label': ariaLabel,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\tid: id,\n\t\t\t\t\t\t\t\tcontext: actionsContext,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\n/** @type {View<PopoverCellEditorContentProps, {value: any}>} */\nexport const view = (props) => {\n\tconst {\n\t\tproperties: { popoverDefinition },\n\t} = props;\n\n\tconst componentDefaultProps = popoverSelectors.getPopoverComponentDefaultProps(\n\t\tpopoverDefinition\n\t);\n\n\tconst componentTag =\n\t\tcomponentDefaultProps.actionsContext.column.type === 'html'\n\t\t\t? 'now-list-html-cell-editor-content'\n\t\t\t: popoverSelectors.getPopoverComponentTag(popoverDefinition);\n\n\tconst buttonsConfig =\n\t\tpopoverSelectors.getButtonsConfig(popoverDefinition) ||\n\t\tdefaultButtonsConfig;\n\n\tconst highlightedMessage = popoverSelectors.getHighlightedMessage(\n\t\tpopoverDefinition\n\t);\n\n\tconst isLoading = popoverSelectors.getIsLoading(popoverDefinition) || false;\n\n\treturn (\n\t\t<div className=\"popover-cell-editor-content-container\">\n\t\t\t{isLoading ? (\n\t\t\t\t<div className=\"popover-cell-editor-content-loader\">\n\t\t\t\t\t<now-loader\n\t\t\t\t\t\taria-label={t('Loading')}\n\t\t\t\t\t\tclassName=\"loader-cell-editor-content\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div>\n\t\t\t\t\t{highlightedMessage && (\n\t\t\t\t\t\t<now-highlighted-value\n\t\t\t\t\t\t\tclassName=\"cell-editor-highlighted-message\"\n\t\t\t\t\t\t\tlabel={highlightedMessage.label}\n\t\t\t\t\t\t\tcolor={highlightedMessage.color}\n\t\t\t\t\t\t\tshowIcon={highlightedMessage.showIcon}\n\t\t\t\t\t\t\tvariant={highlightedMessage.variant}\n\t\t\t\t\t\t\ticon={highlightedMessage.icon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{componentTag &&\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\trenderCustomComponent(\n\t\t\t\t\t\t\tcustomComponentType.POPOVER,\n\t\t\t\t\t\t\tcomponentTag,\n\t\t\t\t\t\t\tcomponentDefaultProps,\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t)}\n\t\t\t\t\t{componentDefaultProps.actionsContext?.selectedKeys\n\t\t\t\t\t\t?.length > 1 && (\n\t\t\t\t\t\t<now-highlighted-value\n\t\t\t\t\t\t\tclassName=\"cell-editor-info-text\"\n\t\t\t\t\t\t\tcolor=\"warning\"\n\t\t\t\t\t\t\ticon=\"circle-exclamation-outline\"\n\t\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t\t'{0} rows will be updated',\n\t\t\t\t\t\t\t\tcomponentDefaultProps.actionsContext\n\t\t\t\t\t\t\t\t\t?.selectedKeys?.length\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tshowIcon={true}\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{renderPopoverCellEditContentActions(\n\t\t\t\tcomponentDefaultProps.actionsContext,\n\t\t\t\tbuttonsConfig\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-cell-editor-content', {\n\tview,\n\tsetInitialState({ properties: { popoverDefinition } }) {\n\t\tconst defaultProps =\n\t\t\tpopoverSelectors.getPopoverComponentDefaultProps(popoverDefinition)\n\t\t\t\t?.actionsContext?.cell || {};\n\t\treturn {\n\t\t\tvalue: defaultProps.value,\n\t\t\tlabel: defaultProps.label,\n\t\t};\n\t},\n\tstyles,\n\tproperties: {\n\t\tpopoverDefinition: {},\n\t},\n\t// @ts-ignore\n\tactionHandlers,\n});\n","export const NOW_BUTTON_CLICKED_POPOVER_CONTAINER = 'NOW_BUTTON#CLICKED';\nexport const NOW_LIST_POPOVER_BUTTON_CLICKED =\n\t'NOW_LIST#POPOVER_BUTTON_CLICKED';\n","import {\n\tNOW_BUTTON_CLICKED_POPOVER_CONTAINER,\n\tNOW_LIST_POPOVER_BUTTON_CLICKED,\n} from './constants';\n\n/**\n *\n * @param {Coeffects<PopoverTextContentProps,State>} coeffects\n */\nconst buttonClickedHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { id, meta, buttonIndex },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tdispatch(NOW_LIST_POPOVER_BUTTON_CLICKED, {\n\t\tid,\n\t\tmeta,\n\t\tbuttonIndex,\n\t});\n};\n\nexport const actionHandlers = {\n\t[NOW_BUTTON_CLICKED_POPOVER_CONTAINER]: {\n\t\teffect: buttonClickedHandler,\n\t\tstopPropagation: true,\n\t},\n};\n","import rtlBehavior from '@servicenow/behavior-rtl';\nimport { createCustomElement } from '@servicenow/ui-core';\nimport isEmpty from 'lodash/isEmpty';\n\nimport popoverSelectors from '../../../utils/selectors/popoverSelectors';\n\nimport { actionHandlers } from './actions';\nimport styles from './popoverTextContent.scss';\nimport '@servicenow/now-button';\n\n/**\n *\n * @param {PopoverDefinition} popoverDefinition\n * @returns\n */\nconst renderTextContent = (popoverDefinition) => {\n\tconst contentText = popoverSelectors.getPopoverText(popoverDefinition);\n\n\tif (isEmpty(contentText)) return null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"popover-text-container\"\n\t\t\tdata-test=\"popover-text-container\"\n\t\t>\n\t\t\t<span data-truncation>{contentText}</span>\n\t\t</div>\n\t);\n};\n\n/**\n *\n * @param {PopoverDefinition} popoverDefinition\n * @param {String} dir\n * @returns\n */\nconst renderContentActions = (popoverDefinition, dir) => {\n\tconst popoverButtons = popoverSelectors.getPopoverButtons(\n\t\tpopoverDefinition\n\t);\n\n\tif (isEmpty(popoverButtons)) return null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"popover-button-container\"\n\t\t\tdata-test=\"popover-button-container\"\n\t\t\tdir={dir}\n\t\t>\n\t\t\t{popoverButtons.map((\n\t\t\t\t/** @type {object} */ button,\n\t\t\t\t/** @type {number} */ index\n\t\t\t) => {\n\t\t\t\treturn (\n\t\t\t\t\t<now-button\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t'aria-label': popoverSelectors.getPopoverButtonAriaLabel(\n\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariant={popoverSelectors.getPopoverButtonVariant(\n\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tsize={popoverSelectors.getPopoverButtonSize(button)}\n\t\t\t\t\t\tlabel={popoverSelectors.getPopoverButtonLabel(button)}\n\t\t\t\t\t\ticon={popoverSelectors.getPopoverButtonIcon(button)}\n\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\tmeta: popoverSelectors.getPopoverButtonMeta(button),\n\t\t\t\t\t\t\tid: popoverSelectors.getPopoverButtonId(button),\n\t\t\t\t\t\t\tbuttonIndex: index,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttooltipContent={popoverSelectors.getTooltipContent(\n\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\n/** @type {View<PopoverTextContentProps, {}>} */\nconst view = (props) => {\n\tconst {\n\t\tproperties: { popoverDefinition, dir },\n\t} = props;\n\n\treturn (\n\t\t<div className=\"popover-content-container\">\n\t\t\t{renderTextContent(popoverDefinition)}\n\t\t\t{renderContentActions(popoverDefinition, dir)}\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-popover-text-content', {\n\tview,\n\tstyles,\n\tproperties: {\n\t\tpopoverDefinition: {},\n\t\tdir: {\n\t\t\t// @ts-ignore\n\t\t\tdefault: 'ltr',\n\t\t},\n\t},\n\tactionHandlers,\n\tbehaviors: [{ behavior: rtlBehavior }],\n});\n","import {\n\tNOW_DROPDOWN_LIST_ITEM_CLICKED,\n\tPOPOVER_DROPDOWN_ITEM_CLICKED,\n} from './constants';\n\n/**\n * Handler for now-dropown-list item clicked action. Will dispatch the appropriate list action\n * @param {Coeffects<PopoverListContentProps, State>} coeffects\n */\nconst dropdownItemClickedHandler = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { item, context },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tdispatch(POPOVER_DROPDOWN_ITEM_CLICKED, {\n\t\tactionItem: item,\n\t\tcontext,\n\t});\n};\n\nexport const actionHandlers = {\n\t[NOW_DROPDOWN_LIST_ITEM_CLICKED]: {\n\t\teffect: dropdownItemClickedHandler,\n\t\tstopPropagation: true,\n\t},\n};\n","import { createCustomElement } from '@servicenow/ui-core';\n\nimport { getActionLabel } from '../../../../behaviors/contextActionsBehavior/constants';\nimport popoverSelectors from '../../../utils/selectors/popoverSelectors';\n\nimport { actionHandlers } from './actions';\nimport styles from './popoverListContent.scss';\n\nimport '@servicenow/now-dropdown';\n\n/** @type {View<PopoverListContentProps, {}>} */\nexport const view = (props) => {\n\tconst {\n\t\tproperties: { popoverDefinition, actionsContext },\n\t} = props;\n\n\tconst label = actionsContext\n\t\t? getActionLabel(actionsContext?.typeOfAction)\n\t\t: popoverSelectors.getActionsLabel(popoverDefinition);\n\tconst actions = popoverSelectors.getActions(popoverDefinition);\n\tconst search = actions.length > 10 ? 'contains' : 'none';\n\tconst activeItem = popoverSelectors.getActiveActionItem(popoverDefinition);\n\treturn (\n\t\t<div className=\"popover-list-content-container\">\n\t\t\t<now-dropdown-list\n\t\t\t\titems={actions}\n\t\t\t\tactiveItem={activeItem}\n\t\t\t\tselect=\"none\"\n\t\t\t\tsearch={search}\n\t\t\t\tappend-to-payload={{ context: actionsContext }}\n\t\t\t\tconfigAria={{\n\t\t\t\t\t'aria-label': label,\n\t\t\t\t}}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-popover-list-content', {\n\tview,\n\tstyles,\n\tproperties: {\n\t\tpopoverDefinition: {},\n\t\tactionsContext: {},\n\t},\n\tactionHandlers,\n});\n","import { findTabbableElement } from '@devsnc/sn-list-commons';\nimport { actionTypes } from '@servicenow/ui-core';\nimport get from 'lodash/get';\n\nconst { COMPONENT_TREE_RENDERED } = actionTypes;\n\n/**\n * Handler for now-list-popover-custom-content render\n * @param {Coeffects<PopoverListContentProps, State>} coeffects\n */\nconst componentTreeRenderedEffect = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tmeta: { hoistHost },\n\t\t},\n\t\tstate,\n\t\tupdateState,\n\t} = coeffects;\n\tconst popoverIsFocused = get(state, `popoverIsFocused`, false);\n\t/**\n\t * Handles the focusing of the element when the popover re-renders\n\t * from loading state to the custom component\n\t */\n\tif (\n\t\thoistHost?.shadowRoot &&\n\t\tdocument.activeElement != hoistHost &&\n\t\t!popoverIsFocused\n\t) {\n\t\tconst el = findTabbableElement(true, hoistHost?.shadowRoot);\n\t\tif (el) {\n\t\t\tupdateState({\n\t\t\t\tpath: 'popoverIsFocused',\n\t\t\t\toperation: 'set',\n\t\t\t\tvalue: true,\n\t\t\t});\n\t\t\tel.focus();\n\t\t}\n\t}\n};\n\nexport const actionHandlers = {\n\t[COMPONENT_TREE_RENDERED]: {\n\t\teffect: componentTreeRenderedEffect,\n\t},\n};\n","import rtlBehavior from '@servicenow/behavior-rtl';\nimport { createCustomElement } from '@servicenow/ui-core';\n\nimport customCellDynamicActionBehavior from '../../../../behaviors/customCellDynamicActionBehavior/customCellDynamicActionBehavior';\nimport {\n\trenderCustomComponentDisplay,\n\tcustomComponentType,\n} from '../../../utils/customLoader';\nimport popoverSelectors from '../../../utils/selectors/popoverSelectors';\n\nimport { actionHandlers } from './action';\nimport styles from './popoverCustomContent.scss';\n\nimport '@servicenow/now-dropdown';\n\n/** @type {View<PopoverCustomContentProps, {}>} */\nexport const view = (props) => {\n\tconst {\n\t\tproperties: { popoverDefinition, tableMetadata, dir },\n\t} = props;\n\n\tconst componentTag = popoverSelectors.getPopoverComponentTag(\n\t\tpopoverDefinition\n\t);\n\tconst componentDefaultProps = popoverSelectors.getPopoverComponentDefaultProps(\n\t\tpopoverDefinition\n\t);\n\n\treturn renderCustomComponentDisplay(\n\t\tcustomComponentType.POPOVER,\n\t\ttableMetadata,\n\t\tcomponentTag,\n\t\tcomponentDefaultProps,\n\t\tdir\n\t);\n};\n\ncreateCustomElement('now-list-popover-custom-content', {\n\tview,\n\tstyles,\n\tproperties: {\n\t\tpopoverDefinition: {},\n\t\ttableMetadata: {},\n\t\tdir: {\n\t\t\t// @ts-ignore\n\t\t\tdefault: 'ltr',\n\t\t},\n\t},\n\tactionHandlers,\n\tbehaviors: [customCellDynamicActionBehavior, { behavior: rtlBehavior }],\n});\n","/**\n * Takes an array of choices and returns an array consisting of only the choices whose label contains the term (case insensitive)\n *\n * @param {Array<ChoiceType>} choices\n * @param {string} term\n * @returns {Array<ChoiceType>}\n */\nexport const filterChoicesByTerm = (choices, term = '') => {\n\treturn choices.filter((choice) => {\n\t\treturn choice.label.toUpperCase().includes(term.toUpperCase());\n\t});\n};\n","import { createCustomElement, actionTypes } from '@servicenow/ui-core';\nimport { createRef } from '@servicenow/ui-renderer-snabbdom';\nimport includes from 'lodash/includes';\nimport isEqual from 'lodash/isEqual';\nimport { t } from 'sn-translate';\n\nimport {\n\tTYPE_CHOICE,\n\tTYPE_PILLS,\n} from '../../../../typeSchemas/columnDefinitions/columnTypes/columnTypes';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport { getColumnFilteringStateForColumn } from '../../table/tableHeaders/columnFilteringCell/columnFilteringCell';\nimport {\n\tCOLUMN_FILTERING_SELECT_ALL_BUTTON_NAME,\n\tCOLUMN_FILTERING_SELECT_NONE_BUTTON_NAME,\n} from '../../table/tableHeaders/columnFilteringCell/columnFilteringConsts';\n\nimport {\n\tCOLUMN_FILTERING_CHOICE_TYPE_APPLY_BUTTON_NAME,\n\tCOLUMN_FILTERING_CHOICE_TYPE_CANCEL_BUTTON_NAME,\n\tMIN_CHOICES_FOR_CHOICE_FILTERING,\n\tNOW_INPUT_INPUT,\n\tNOW_BUTTON_ICONIC_CLICKED,\n\tCOLUMN_FILTERING_CHOICE_FILTER_CLEAR_TERM,\n\tCOLUMN_FILTERING_CHOICE_FILTER_CLEAR_TERM_NAME,\n} from './popoverChoiceColumnFilterConsts';\nimport styles from './popoverChoiceColumnFilterContent.scss';\nimport { filterChoicesByTerm } from './popoverChoiceColumnFilterHelpers';\n\nconst { COMPONENT_BOOTSTRAPPED } = actionTypes;\n\nconst {\n\tgetChoices,\n\tgetPillsChoices,\n\tgetColumnType,\n\tgetColumnFilterValue,\n} = columnSelectors;\n\n/**\n * @param {Coeffects<PopoverChoiceColumnFilterContentProps, State>} coeffects\n */\nexport const handleChoiceFilterInputClear = (coeffects) => {\n\tconst {\n\t\taction: { payload },\n\t\tupdateState,\n\t} = coeffects;\n\tconst { typeOfAction, choiceFilterInputRef } = payload;\n\tif (typeOfAction !== COLUMN_FILTERING_CHOICE_FILTER_CLEAR_TERM) return;\n\tchoiceFilterInputRef?.focus();\n\tupdateState({\n\t\tchoiceFilterTerm: '',\n\t});\n};\n/**\n * @param {Coeffects<PopoverChoiceColumnFilterContentProps, State>} coeffects\n */\nexport const handleChoiceFilterInputInput = (coeffects) => {\n\tconst { action, updateState } = coeffects;\n\tconst { payload } = action;\n\tconst { fieldValue } = payload;\n\tupdateState({\n\t\tchoiceFilterTerm: fieldValue,\n\t});\n};\n\n/**\n *\n * @param {Coeffects<PopoverChoiceColumnFilterContentProps, State>} coeffects\n *\n */\nexport const componentBootstrappedEffect = (coeffects) => {\n\tconst { updateState } = coeffects;\n\tupdateState({ choiceFilterTerm: '' });\n};\n\n/**\n *\n * @type {View<PopoverChoiceColumnFilterContentProps>}\n * @param {State} state\n *\n */\nconst view = (state) => {\n\tconst {\n\t\tproperties: { column, columnFilteringState },\n\t\tchoiceFilterTerm,\n\t} = state;\n\n\tconst selectAllOrNoneLabel = t('Select');\n\tconst dividerString = ' | ';\n\tconst allLabel = t('All');\n\tconst noneLabel = t('None');\n\tconst cancelLabel = t('Cancel');\n\tconst applyLabel = t('Apply');\n\tconst choiceFilterInputLabel = t('Filter choices');\n\tconst choiceFilterClearButtonLabel = t('Clear search');\n\tconst choiceFilterInputRef = createRef();\n\n\t/** @type Array<ChoiceType> */\n\tlet choices = [];\n\tconst type = getColumnType(column);\n\tconst { value } = getColumnFilteringStateForColumn(\n\t\tcolumn,\n\t\tcolumnFilteringState\n\t);\n\n\tif (type === TYPE_CHOICE) {\n\t\tchoices = getChoices(column) ?? [];\n\t\tif (choices[0]?.key === '') choices = choices.slice(1);\n\t} else if (type === TYPE_PILLS) {\n\t\tchoices = getPillsChoices(column) ?? [];\n\t}\n\tconst filteredChoices = filterChoicesByTerm(choices, choiceFilterTerm);\n\n\tconst emptyChoiceItem = {\n\t\tkey: 'EMPTY',\n\t\tlabel: t('(empty)'),\n\t};\n\n\t// empty will get added on every rerender without this check\n\tif (choices[0].key !== emptyChoiceItem.key) {\n\t\tchoices.unshift(emptyChoiceItem);\n\t}\n\n\tconst shouldDisableApplyButton = isEqual(\n\t\tgetColumnFilterValue(column),\n\t\tvalue\n\t);\n\n\treturn (\n\t\t<div className=\"popover-choice-column-filter-content-container\">\n\t\t\t<div className=\"choice-filter-popover-header\">\n\t\t\t\t{choices.length >= MIN_CHOICES_FOR_CHOICE_FILTERING ? (\n\t\t\t\t\t<div className=\"choice-filter-popover-header-content\">\n\t\t\t\t\t\t<now-input\n\t\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\t\t'aria-label': choiceFilterInputLabel,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tplaceholder={choiceFilterInputLabel}\n\t\t\t\t\t\t\tvalue={choiceFilterTerm}\n\t\t\t\t\t\t\tref={choiceFilterInputRef}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div slot=\"start\">\n\t\t\t\t\t\t\t\t<now-icon icon=\"magnifying-glass-outline\"></now-icon>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{choiceFilterTerm.length > 0 ? (\n\t\t\t\t\t\t\t\t<div slot=\"end\">\n\t\t\t\t\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\t\t\t\t\ticon=\"close-fill\"\n\t\t\t\t\t\t\t\t\t\ttooltipContent={\n\t\t\t\t\t\t\t\t\t\t\tchoiceFilterClearButtonLabel\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\t\t\t\t\t'aria-label': choiceFilterClearButtonLabel,\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tbare={true}\n\t\t\t\t\t\t\t\t\t\tname={\n\t\t\t\t\t\t\t\t\t\t\tCOLUMN_FILTERING_CHOICE_FILTER_CLEAR_TERM_NAME\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tappendToPayload={{\n\t\t\t\t\t\t\t\t\t\t\ttypeOfAction: COLUMN_FILTERING_CHOICE_FILTER_CLEAR_TERM,\n\t\t\t\t\t\t\t\t\t\t\tchoiceFilterInputRef:\n\t\t\t\t\t\t\t\t\t\t\t\tchoiceFilterInputRef.current,\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</now-input>\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t\t<div className=\"choice-filter-popover-header-content choice-filter-popover-header-select-all-none\">\n\t\t\t\t\t{selectAllOrNoneLabel}\n\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\tappendToPayload={{\n\t\t\t\t\t\t\tchoices: filteredChoices,\n\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\tchoiceFilterTerm,\n\t\t\t\t\t\t\tname: COLUMN_FILTERING_SELECT_ALL_BUTTON_NAME,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tlabel={allLabel}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbare={true}\n\t\t\t\t\t\tdata-testId={'All'}\n\t\t\t\t\t/>\n\t\t\t\t\t{dividerString}\n\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\tappendToPayload={{\n\t\t\t\t\t\t\tchoices: filteredChoices,\n\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\tchoiceFilterTerm,\n\t\t\t\t\t\t\tname: COLUMN_FILTERING_SELECT_NONE_BUTTON_NAME,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tlabel={noneLabel}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbare={true}\n\t\t\t\t\t\tdata-testId={'None'}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"choice-filter-popover-body\">\n\t\t\t\t{filteredChoices.map((choice) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<now-checkbox\n\t\t\t\t\t\t\tappendToPayload={{\n\t\t\t\t\t\t\t\tchoices,\n\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tlabel={choice.label}\n\t\t\t\t\t\t\tname={choice.key}\n\t\t\t\t\t\t\tchecked={includes(value, choice.key)}\n\t\t\t\t\t\t\tmanageChecked={true}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t// without this, the checkbox will inconsistently be in an invalid state. For our needs, the checkbox should never be invalid\n\t\t\t\t\t\t\tmanageInvalid={true}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<div className=\"choice-filter-popover-footer\">\n\t\t\t\t<now-button\n\t\t\t\t\tappendToPayload={{\n\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\tname: COLUMN_FILTERING_CHOICE_TYPE_CANCEL_BUTTON_NAME,\n\t\t\t\t\t}}\n\t\t\t\t\tlabel={cancelLabel}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tdata-testId={'Cancel'}\n\t\t\t\t/>\n\t\t\t\t<now-button\n\t\t\t\t\tappendToPayload={{\n\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\tname: COLUMN_FILTERING_CHOICE_TYPE_APPLY_BUTTON_NAME,\n\t\t\t\t\t}}\n\t\t\t\t\tlabel={applyLabel}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdata-testId={'Apply'}\n\t\t\t\t\tdisabled={shouldDisableApplyButton}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-list-choice-column-filter-content', {\n\tview,\n\tstyles,\n\tproperties: {\n\t\tcolumn: {},\n\t\tcolumnFilteringState: {},\n\t},\n\tinitialState: {\n\t\tchoiceFilterTerm: '',\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: componentBootstrappedEffect,\n\t\t},\n\t\t[NOW_BUTTON_ICONIC_CLICKED]: {\n\t\t\teffect: handleChoiceFilterInputClear,\n\t\t},\n\t\t[NOW_INPUT_INPUT]: {\n\t\t\teffect: handleChoiceFilterInputInput,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n});\n","import isEmpty from 'lodash/isEmpty';\n\nimport '@servicenow/now-popover';\nimport './popoverCellEditContent/popoverCellEditorContent';\nimport './popoverTextContent/popoverTextContent';\nimport './popoverListContent/popoverListContent';\nimport './popoverCustomContent/popoverCustomContent';\nimport './popoverChoiceColumnFilterContent/popoverChoiceColumnFilterContent';\nimport { CELL_EDIT_POPOVER_TYPE } from '../../../behaviors/cellEditingBehavior/constants';\nimport { CHOICE_COLUMN_FILTER } from '../../../behaviors/popoverBehavior/constants';\nimport popoverSelectors from '../../utils/selectors/popoverSelectors';\n\n/**\n * @param {PopoverDefinition} popoverDefinition\n * @param {TableMetadata} tableMetadata\n * @param {Context | undefined} context\n * @param {string} dir\n * @param {ColumnFilteringState} [columnFilteringState]\n * @returns\n */\nconst getPopoverContentView = (\n\tpopoverDefinition,\n\ttableMetadata,\n\tcontext,\n\tdir,\n\tcolumnFilteringState\n) => {\n\tif (\n\t\tpopoverSelectors.getPopoverType(popoverDefinition) ===\n\t\tCHOICE_COLUMN_FILTER\n\t) {\n\t\treturn (\n\t\t\t<now-list-choice-column-filter-content\n\t\t\t\tslot=\"content\"\n\t\t\t\tcolumn={context?.column}\n\t\t\t\tcolumnFilteringState={columnFilteringState}\n\t\t\t\tpopoverDefinition={popoverDefinition}\n\t\t\t\tconfigAria={{\n\t\t\t\t\tpanel: {\n\t\t\t\t\t\t'aria-label': popoverSelectors.getAriaLabel(\n\t\t\t\t\t\t\tpopoverDefinition\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t} else if (\n\t\tpopoverSelectors.getPopoverType(popoverDefinition) ===\n\t\tCELL_EDIT_POPOVER_TYPE\n\t) {\n\t\treturn (\n\t\t\t<now-list-cell-editor-content\n\t\t\t\tslot=\"content\"\n\t\t\t\tpopoverDefinition={popoverDefinition}\n\t\t\t\tconfigAria={{\n\t\t\t\t\tpanel: {\n\t\t\t\t\t\t'aria-label': popoverSelectors.getAriaLabel(\n\t\t\t\t\t\t\tpopoverDefinition\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t} else if (popoverSelectors.isTextContent(popoverDefinition)) {\n\t\treturn (\n\t\t\t<now-list-popover-text-content\n\t\t\t\tslot=\"content\"\n\t\t\t\tpopoverDefinition={popoverDefinition}\n\t\t\t\tdir={dir}\n\t\t\t/>\n\t\t);\n\t} else if (popoverSelectors.isActionListContent(popoverDefinition)) {\n\t\treturn (\n\t\t\t<now-list-popover-list-content\n\t\t\t\tslot=\"content\"\n\t\t\t\tpopoverDefinition={popoverDefinition}\n\t\t\t\tactionsContext={context}\n\t\t\t/>\n\t\t);\n\t} else if (\n\t\tpopoverSelectors.isCustomContent(popoverDefinition) &&\n\t\tpopoverSelectors.getPopoverType(popoverDefinition) !=\n\t\t\tCELL_EDIT_POPOVER_TYPE\n\t) {\n\t\t// remove and condition when popoverType 'custom' is added in all the popover definitions\n\t\treturn (\n\t\t\t<now-list-popover-custom-content\n\t\t\t\tslot=\"content\"\n\t\t\t\tpopoverDefinition={popoverDefinition}\n\t\t\t\ttableMetadata={tableMetadata}\n\t\t\t\tdir={dir}\n\t\t\t/>\n\t\t);\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/**\n * This is the render function for popover. It will render a now popover with the\n * appropriate content\n * @param {Object} props\n * @param {PopoverState} props.popoverState\n * @param {TableMetadata} props.tableMetadata\n * @param {ColumnFilteringState} [props.columnFilteringState]\n * @param {string} dir\n */\nexport const popover = (props, dir) => {\n\tconst {\n\t\tpopoverState: {\n\t\t\tpopoverOpen,\n\t\t\tpopoverTarget,\n\t\t\tpopoverDefinition,\n\t\t\tcontext,\n\t\t} = {},\n\t\ttableMetadata,\n\t\tcolumnFilteringState,\n\t} = props;\n\n\tif (!popoverDefinition || isEmpty(popoverDefinition) || !popoverOpen) {\n\t\treturn null;\n\t}\n\n\tconst popoverContent = getPopoverContentView(\n\t\tpopoverDefinition,\n\t\ttableMetadata,\n\t\tcontext,\n\t\tdir,\n\t\tcolumnFilteringState\n\t);\n\n\tif (!popoverContent) return null;\n\n\treturn (\n\t\t<now-popover\n\t\t\thide-tail={popoverSelectors.getHideTail(popoverDefinition)}\n\t\t\tinteraction-type={popoverSelectors.getInteractionType(\n\t\t\t\tpopoverDefinition\n\t\t\t)}\n\t\t\tmanage-opened\n\t\t\topened={true}\n\t\t\thook-insert={() => {\n\t\t\t\tpopoverTarget?.classList.add('active-popover-trigger');\n\t\t\t}}\n\t\t\thook-destroy={() => {\n\t\t\t\tpopoverTarget?.classList.remove('active-popover-trigger');\n\t\t\t}}\n\t\t\tpositionTarget={popoverTarget}\n\t\t\tpositions={popoverSelectors.getPositions(popoverDefinition)}\n\t\t\tappendToPayload={{ from: 'now-list' }}\n\t\t\tconfigAria={{\n\t\t\t\tpanel: {\n\t\t\t\t\t'aria-label': popoverSelectors.getAriaLabel(\n\t\t\t\t\t\tpopoverDefinition\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t}}\n\t\t>\n\t\t\t{popoverContent}\n\t\t</now-popover>\n\t);\n};\n","import rowSelectors from '../../../shared/utils/selectors/rowSelectors';\nimport {\n\tSN_LIST_GALLERY_CARD_CLICKED,\n\tSN_LIST_GALLERY_CARD_SELECTED_SET,\n\tSN_LIST_GALLERY_HEADER_ACTION_CLICKED,\n} from '../../constants/actionConstants';\nconst { getRows, getAllRowKeys } = rowSelectors;\n/**\n * This function is responsible for handling the card click event\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n */\nconst handleCardClicked = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { cardItem: row },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tdispatch(SN_LIST_GALLERY_CARD_CLICKED, { context: { row } });\n};\n\n/**\n * This function is responsible for handling the card selection event\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n */\nconst handleCardSelection = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { rowKey, rowIndex, checked, enableOnlySingleSelection },\n\t\t},\n\t\tdispatch,\n\t\tproperties: { rowDefinitions },\n\t} = coeffects;\n\n\tconst allCardKeys = getAllRowKeys(getRows(rowDefinitions));\n\n\tdispatch(SN_LIST_GALLERY_CARD_SELECTED_SET, {\n\t\tshiftKey: false,\n\t\tallRowKeys: allCardKeys,\n\t\trowKey,\n\t\tchecked,\n\t\trowIndex,\n\t\tenableOnlySingleSelection,\n\t});\n};\n\n/**\n * This function is responsible for handling the card selection event\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n */\nconst handleHeaderActionClicked = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {\n\t\t\t\taction: {\n\t\t\t\t\tid,\n\t\t\t\t\tlabel,\n\t\t\t\t\taction,\n\t\t\t\t\tpayload: { cardIndex, groupIndex },\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tdispatch,\n\t\tstate: {\n\t\t\tcards,\n\t\t\tgroupingState: { isGroupedData },\n\t\t},\n\t} = coeffects;\n\n\tconst targetCard = isGroupedData\n\t\t? cards?.[groupIndex]?.children?.[cardIndex] ?? null\n\t\t: cards?.[cardIndex] ?? null;\n\n\tif (!targetCard) return;\n\n\tconst payload = {\n\t\tactionItem: { id, label, action },\n\t\tcontext: {\n\t\t\tgroupIndex: groupIndex,\n\t\t\trow: targetCard || {},\n\t\t\trows: [targetCard],\n\t\t\trowIndex: cardIndex,\n\t\t\ttypeOfAction: 'rowAction',\n\t\t},\n\t};\n\n\tif (action) {\n\t\tdispatch(action, payload);\n\t}\n\n\tdispatch(SN_LIST_GALLERY_HEADER_ACTION_CLICKED, payload);\n};\n\nconst galleryCardInteractionBehavior = {\n\tname: 'galleryCardInteractionBehavior',\n\n\tactionHandlers: {\n\t\t'NOW_CARD#CLICKED': {\n\t\t\teffect: handleCardClicked,\n\t\t\tstopPropagation: false,\n\t\t},\n\t\t'NOW_CARD#SELECTED_SET': {\n\t\t\teffect: handleCardSelection,\n\t\t\tstopPropagation: false,\n\t\t},\n\t\t'NOW_CARD_HEADER#ACTION_CLICKED': {\n\t\t\teffect: handleHeaderActionClicked,\n\t\t\tstopPropagation: false,\n\t\t},\n\t},\n};\n\nexport default galleryCardInteractionBehavior;\n","import { t } from 'sn-translate';\n\nexport const SN_LIST_GALLERY_VIEW = 'sn-list-gallery';\n\nexport const CLASSNAMES = {\n\tSN_LIST_GALLERY: 'gallery',\n\tSN_LIST_GALLERY_CONTAINER: 'gallery-card-container',\n\tSN_LIST_GALLERY_GROUPED: 'gallery-grouped',\n\tSN_LIST_GALLERY_BODY: 'gallery-card-body',\n\tSN_LIST_GALLERY_BODY_TEXT: 'gallery-card-body-text',\n\tSN_LIST_GALLERY_BODY_FIELDS: 'gallery-card-body-fields',\n\tSN_LIST_GALLERY_FIELD: 'gallery-card-field',\n\tSN_LIST_GALLERY_FIELD_VALUE: 'gallery-card-field-value',\n\tSN_LIST_GALLERY_FIELD_LABEL: 'gallery-card-field-label',\n\tSN_LIST_GALLERY_HEADER_FIELD: 'gallery-card-header-label',\n\tSN_LIST_GALLERY_GROUPED_VIEW: 'gallery-card-grouped-view',\n\tSN_LIST_GALLERY_CARD_METADATA: 'gallery-card-metadata',\n\tSN_LIST_GALLERY_CARD_HIGHLIGHTED_VALUE:\n\t\t'gallery-card-metadata-highlighted-value',\n\tSN_LIST_GALLERY_CARD_DEFAULT_ACTIONS: 'gallery-card-default-actions',\n\tSN_LIST_GALLERY_CARD_EXPAND_ALL_BUTTON: 'gallery-card-expand-all-button',\n\tSN_LIST_GALLERY_NOW_ACCORDION: 'gallery-card-now-accordion',\n};\n\n// Other constants\nexport const CARD_ACTION_ICON_VARIANT = 'tertiary';\nexport const CARD_ACTION_ICON_SIZE_SMALL = 'sm';\nexport const CARD_ACTION_ICON_SIZE_MEDIUM = 'md';\nexport const NOW_BARE_BUTTON_TERTIARY = 'tertiary';\n\nexport const CARD_DROPDOWN_ID = 'custom-card-actions';\nexport const CARD_DROPDOWN_ICON = 'ellipsis-v-outline';\n\nexport const CARD_METADATA_SLOT = 'metadata';\n\nexport const CARD_SIDEBAR_VARIANT = 'primary';\nexport const CARD_SIDEBAR_COLOR = 'gray';\n\nexport const ROW_TYPE_GROUPED = 'grouped';\nexport const NUM_ROW_ACTIONS_THRESHOLD = 2;\n\n// Expand all groups button labels\nexport const GROUPED_EXPAND_ALL_GROUPS = t('Expand all groups');\nexport const GROUPED_COLLAPSE_ALL_GROUPS = t('Collapse all groups');\n\nexport const SCROLL_TO_TOP_LABEL = t('Scroll to top of list');\n\nexport const SN_LIST_GALLERY_CARD_INTERACTIONS = {\n\tNONE: 'none',\n\tCLICK: 'click',\n\tSELECT: 'select',\n};\n","import {\n\tCLASSNAMES,\n\tNUM_ROW_ACTIONS_THRESHOLD,\n} from '../views/layoutConstants';\n\n/**\n * Splits the actions array into dropdowns and actions\n * @param {RowActions} actions - The array of actions.\n * @returns {{ defaultActions: RowActionItem[], dropdownActions: RowActionItem[] }} An object containing the dropdowns and actions arrays.\n * @param {ContextProps} context - The number of action icons to display.\n */\nexport const splitActions = ({ actionsItems, numActionIcons = 2 }, context) => {\n\tif (!actionsItems) {\n\t\treturn {\n\t\t\tdefaultActions: [],\n\t\t\tdropdownActions: [],\n\t\t};\n\t}\n\n\tconst { cardIndex, groupIndex, isMobile } = context;\n\n\tif (isMobile) {\n\t\tnumActionIcons = 0; // Num actions set to 0 for mobile\n\t}\n\n\tconst actionsItemsWithPayload = actionsItems.map((action) => {\n\t\treturn {\n\t\t\t...action,\n\t\t\tpayload: {\n\t\t\t\tcardIndex,\n\t\t\t\tgroupIndex,\n\t\t\t},\n\t\t};\n\t});\n\t// Restrict numActionIcons to 0, 1, or 2; default to 2 if invalid\n\tnumActionIcons =\n\t\tnumActionIcons <= NUM_ROW_ACTIONS_THRESHOLD\n\t\t\t? numActionIcons\n\t\t\t: NUM_ROW_ACTIONS_THRESHOLD;\n\n\t// If actions are more than 3, split them based on numActionIcons\n\tconst defaultActions = actionsItemsWithPayload.slice(0, numActionIcons);\n\tconst dropdownActions = actionsItemsWithPayload.slice(numActionIcons);\n\treturn {\n\t\tdefaultActions,\n\t\tdropdownActions,\n\t};\n};\n\n/**\n * This function returns the card field value by mapping the cell and columns from the field definitions.\n * It also adds the card properties to the field data.\n *\n * @param {GalleryConfig | undefined} galleryConfig - Configuration mapping card fields to column keys.\n * @param {Row} cardItem - Object containing cell data for the row.\n * @param {Record<string, ColumnType>} columnMapping - Mapping of column keys to column definitions.\n * @param {CardProperties} cardProperties - Properties related to the card, such as highlighted content and clickable text.\n * @returns {Record<string, any>} - Processed field data for the card.\n */\nexport function getCardFieldValue(\n\tgalleryConfig,\n\tcardItem,\n\tcolumnMapping,\n\tcardProperties\n) {\n\tconst {\n\t\thighlightedContent = [],\n\t\tclickableTextEnabled,\n\t\tfetchedComponents,\n\t} = cardProperties;\n\tconst { cells = {}, key } = cardItem;\n\t// Destructure options and fields from galleryConfig, with default values\n\tconst { options = {}, fields = {} } = galleryConfig || {};\n\n\t// Common properties to be added to each field\n\tconst commonProps = {\n\t\thighlightedContent,\n\t\tclickableTextEnabled,\n\t\tfetchedComponents,\n\t};\n\n\t// Determine whether to override the label visibility\n\tconst { showLabel = true } = options;\n\tconst overrideLabel =\n\t\t!showLabel && showLabel !== undefined ? { showLabel: false } : {};\n\n\t// This function processes the galleryConfig and returns the processed data for the card fields\n\tconst data = Object.entries(fields).reduce(\n\t\t/**\n\t\t * // TODO: Create a new type Currently  using any because we are using ProcessedColumn type for columnData and it doesn't apply for cards\n\t\t * @param {Record<string, any>} fieldData - Accumulated field data..\n\t\t */\n\t\t(fieldData, [fieldKey, columnData]) => {\n\t\t\t// Handle supplementary fields (array of fields)\n\t\t\tif (fieldKey === 'supplementaryFields') {\n\t\t\t\t// @ts-ignore\n\t\t\t\tfieldData[fieldKey] = (fields['supplementaryFields'] || []).map(\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {{ column: string | number; options: any }} field - Supplementary field definition.\n\t\t\t\t\t * @returns {any} - Processed field data.\n\t\t\t\t\t */\n\t\t\t\t\t(field) => ({\n\t\t\t\t\t\trowKey: key,\n\t\t\t\t\t\tcell: cells[field.column],\n\t\t\t\t\t\tcolumn: columnMapping[field.column],\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t...field.options,\n\t\t\t\t\t\t\t...overrideLabel,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...commonProps,\n\t\t\t\t\t\tfieldKey,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// Handle regular fields\n\t\t\t\tfieldData[fieldKey] = {\n\t\t\t\t\trowKey: key,\n\t\t\t\t\tcell: cells[columnData.column],\n\t\t\t\t\tcolumn: columnMapping[columnData.column],\n\t\t\t\t\toptions: {\n\t\t\t\t\t\t...columnData.options,\n\t\t\t\t\t\t...overrideLabel,\n\t\t\t\t\t\tfieldKey,\n\t\t\t\t\t},\n\t\t\t\t\t...commonProps,\n\t\t\t\t\tfieldKey,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn fieldData; // Field Data for the cards with all the special and supplementary fields.\n\t\t},\n\t\t/** @type {Record<string, any>} */ ({})\n\t);\n\n\t// Add global options to the resulting data\n\tdata.options = options;\n\n\treturn data;\n}\n\n/**\n * @param {Now.HostHTMLElement} host\n */\nexport function getGalleryColumnCount(host) {\n\tconst container = host?.shadowRoot?.querySelector(\n\t\t`.${CLASSNAMES.SN_LIST_GALLERY_CONTAINER}`\n\t);\n\tif (!container || !container.children.length) return 0;\n\tconst containerWidth = container.clientWidth;\n\tconst cardWidth = container.children[0]?.clientWidth || containerWidth;\n\treturn Math.floor(containerWidth / cardWidth);\n}\n\n/**\n * Utility to check if default view should be used.\n *\n * @param {GalleryConfig | undefined} config - The user config object.\n * @returns {boolean} - Returns true if fields are missing or empty.\n */\nexport function shouldUseDefaultView(config) {\n\tif (!config) return true;\n\n\tconst fields = config?.fields;\n\n\t// Check if fields object doesn't exist or has no meaningful keys\n\treturn !fields || Object.keys(fields).length === 0;\n}\n","/**\n * Generates a default gallery configuration object.\n * TODO: Move this to column selectors.\n * @param {ColumnType[]} columns - Array of column objects. The first column is assigned to heading, the rest go to supplementary fields.\n * @param {GalleryOptions | undefined} options\n * @returns {GalleryConfig} - Default gallery configuration object.\n */\n\nexport function getGalleryConfig(columns, options) {\n\tconst [headingColumn, ...supplementaryColumns] = columns;\n\n\treturn {\n\t\tfields: {\n\t\t\theading: {\n\t\t\t\tcolumn: headingColumn.key,\n\t\t\t},\n\t\t\ttagline: { column: '' },\n\t\t\tmetadata: { column: '' },\n\t\t\tbodyText: { column: '' },\n\t\t\tsupplementaryFields: supplementaryColumns\n\t\t\t\t.slice(0, 6)\n\t\t\t\t.map(({ key }) => ({\n\t\t\t\t\tcolumn: key,\n\t\t\t\t})),\n\t\t},\n\t\toptions: options || {},\n\t};\n}\n","import { actionTypes } from '@servicenow/ui-core';\n\nimport rowSelectors from '../../../shared/utils/selectors/rowSelectors';\nimport { shouldUseDefaultView } from '../../utils/galleryCardUtils';\nimport { getGalleryConfig } from '../../utils/galleryDefaultConfig';\n\n/**\n * Process the gallery data and update the initial state.\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n */\nconst processGalleryData = (coeffects) => {\n\tconst { updateState, properties } = coeffects;\n\tconst {\n\t\tcolumnDefinitions,\n\t\trowDefinitions,\n\t\tsharedContext,\n\t\t...restGalleryProperties\n\t} = properties;\n\n\tconst { rowGroupingState, fetchedComponents, dir } = sharedContext;\n\n\tconst { rows, ...restRowDefinitionProps } = rowDefinitions;\n\n\tconst fieldMappings = Object.fromEntries(\n\t\tcolumnDefinitions.columns.map((col) => [col.key, col])\n\t);\n\n\t// Check if the data is grouped or not.\n\tconst isGroupedData = rowSelectors.hasGroupedRows(rowDefinitions);\n\n\tconst { galleryConfig } = columnDefinitions;\n\n\t// Create the gallery state onload.\n\tconst galleryState = {\n\t\tcards: rows,\n\t\tcardProperties: {\n\t\t\tdir,\n\t\t\tfetchedComponents,\n\t\t\t...restRowDefinitionProps,\n\t\t\t...restGalleryProperties,\n\t\t},\n\t\tfieldDefinitions: {\n\t\t\t...columnDefinitions,\n\t\t\tgalleryConfig: shouldUseDefaultView(galleryConfig)\n\t\t\t\t? getGalleryConfig(\n\t\t\t\t\t\tcolumnDefinitions.columns,\n\t\t\t\t\t\tgalleryConfig?.options\n\t\t\t\t  )\n\t\t\t\t: galleryConfig,\n\t\t\tfieldMappings,\n\t\t},\n\t\tgroupingState: {\n\t\t\t...rowGroupingState,\n\t\t\tisGroupedData,\n\t\t},\n\t};\n\n\tupdateState(galleryState);\n};\n\nconst galleryDataBehavior = {\n\tname: 'galleryDataBehavior',\n\n\tactionHandlers: {\n\t\t[actionTypes.COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: processGalleryData,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[actionTypes.COMPONENT_PROPERTY_CHANGED]: {\n\t\t\teffect: processGalleryData,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default galleryDataBehavior;\n","export const NOW_DROPDOWN_CUSTOM_TARGET_CLICKED =\n\t'NOW_DROPDOWN_CUSTOM_TARGET#ITEM_CLICKED';\nexport const SN_LIST_GALLERY_GROUP_EXPANDED = 'SN_LIST_GALLERY#GROUP_EXPANDED';\nexport const NOW_ACCORDION_ITEM_EXPANDED_SET =\n\t'NOW_ACCORDION_ITEM#EXPANDED_SET';\nexport const SN_LIST_GALLERY_GROUPS_EXPANDED =\n\t'SN_LIST_GALLERY#GROUPS_EXPANDED';\n","import { GROUP_ACTION_CLICKED } from '../../../resources/constants';\nimport { SN_LIST_GALLERY_GROUPS_EXPANDED } from '../../../shared/behaviors/actionConstants';\nimport {\n\tSN_LIST_GALLERY_CONTEXT_ACTION_CLICKED,\n\tSN_LIST_GALLERY_EXPAND_ALL_GROUPS,\n} from '../../constants/actionConstants';\n\nimport {\n\tNOW_ACCORDION_ITEM_EXPANDED_SET,\n\tNOW_DROPDOWN_CUSTOM_TARGET_CLICKED,\n\tSN_LIST_GALLERY_GROUP_EXPANDED,\n} from './constants';\n\n/**\n * Handles the expand/collapse all groups action.\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n */\nexport const handleExpandAllGroups = (coeffects) => {\n\tconst { dispatch } = coeffects;\n\n\tdispatch(SN_LIST_GALLERY_GROUPS_EXPANDED);\n};\n\n/**\n * Handles click events on grouped actions (e.g., buttons within a group).\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n */\nconst handleGroupActionClicked = (coeffects) => {\n\tconst { action, dispatch } = coeffects;\n\tconst { item: actionItem, context } = action.payload;\n\n\tif (actionItem?.action) {\n\t\tdispatch(actionItem.action, { actionItem, context });\n\t}\n\n\tdispatch(SN_LIST_GALLERY_CONTEXT_ACTION_CLICKED, {\n\t\tactionItem,\n\t\tcontext,\n\t});\n};\n\n/**\n * Handles the expand/collapse of a individual group in the gallery view.\n * @param {Coeffects<GalleryProps, State>} coeffects\n */\nconst handleGroupToggle = (coeffects) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: { groupContext },\n\t\t},\n\t\tdispatch,\n\t} = coeffects;\n\n\tdispatch(SN_LIST_GALLERY_GROUP_EXPANDED, {\n\t\trow: groupContext,\n\t});\n};\n\nexport const galleryGroupedBehavior = {\n\tname: 'galleryGroupedBehavior',\n\n\tactionHandlers: {\n\t\t// Handles Expands or collapse all groups in the gallery view when triggered\n\t\t[SN_LIST_GALLERY_EXPAND_ALL_GROUPS]: {\n\t\t\teffect: handleExpandAllGroups,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t// Handles click events on grouped actions (e.g., buttons within a group)\n\t\t[GROUP_ACTION_CLICKED]: {\n\t\t\teffect: handleGroupActionClicked,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t// Handles click events on custom targets within dropdowns, linking to grouped actions\n\t\t[NOW_DROPDOWN_CUSTOM_TARGET_CLICKED]: {\n\t\t\teffect: handleGroupActionClicked,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t// Handles Internal click events on accordion(HDS) items to expand or collapse groups\n\t\t[NOW_ACCORDION_ITEM_EXPANDED_SET]: {\n\t\t\teffect: handleGroupToggle,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default galleryGroupedBehavior;\n","//Keys\nexport const KEY = {\n\tKEY_ENTER: 'Enter',\n\tARROW_UP: 'ArrowUp',\n\tARROW_RIGHT: 'ArrowRight',\n\tARROW_DOWN: 'ArrowDown',\n\tARROW_LEFT: 'ArrowLeft',\n\tUP: 'Up',\n\tRIGHT: 'Right',\n\tDOWN: 'Down',\n\tLEFT: 'Left',\n\tSPACE: ' ',\n\tSPACEBAR: 'Spacebar',\n\tENTER: 'Enter',\n\tTAB: 'Tab',\n};\n// Handled keys for keyboard navigation\nexport const HANDLED_KEYS = [\n\tKEY.SPACE,\n\tKEY.SPACEBAR,\n\tKEY.TAB,\n\tKEY.LEFT,\n\tKEY.ARROW_LEFT,\n\tKEY.RIGHT,\n\tKEY.ARROW_RIGHT,\n\tKEY.ARROW_UP,\n\tKEY.ARROW_DOWN,\n];\n","//Constants for Classes\nexport const GALLERY_KEYBOARD_NAV_BEHAVIOR_NAME = 'galleryKeyboardNavBehavior';\n\n// Behavior Actions\n\nexport const ENTER_GALLERY_ITEM_TRAP = 'ENTER_GALLERY_ITEM_TRAP';\nexport const EXIT_GALLERY_ITEM_TRAP = 'EXIT_GALLERY_ITEM_TRAP';\n\n//Constants for Tag\nexport const NOW_CARD = 'NOW-CARD';\n","import {\n\tfindActiveElement,\n\tshadowQuerySelectorAll,\n} from '@devsnc/sn-list-commons';\nimport get from 'lodash/get';\n\nimport {\n\tGALLERY_KEYBOARD_NAV_BEHAVIOR_NAME,\n\tNOW_CARD,\n} from '../behaviors/galleryKeyboardNavbehavior/constants';\nimport { CLASSNAMES } from '../views/layoutConstants';\n\nexport const getFocusedCardIndex = () => {\n\tconst activeElement = findActiveElement();\n\treturn Number(activeElement.getRootNode().host.dataset.navIndex || 1);\n};\n\n/**\n * @param {Now.HostHTMLElement} host\n */\nexport const getGalleryCardContainer = (host) => {\n\treturn host?.shadowRoot?.querySelector(\n\t\t`.${CLASSNAMES.SN_LIST_GALLERY_CONTAINER}`\n\t);\n};\n\n/**\n * Gets the keyboard nav behavior state from the larger component state object\n * @param  {StateWithProps<Props, State>} state\n */\nexport const getKeyboardNavBehaviourState = (state) =>\n\tget(state, `behaviors.${GALLERY_KEYBOARD_NAV_BEHAVIOR_NAME}`, {});\n\n/**\n * @param  {Array<HTMLElement>} tabbables\n * @param {Number}indexValue\n */\nexport const setTabIndexForTabbables = (tabbables, indexValue) => {\n\tif (tabbables && tabbables.length) {\n\t\tfor (let k = 0; k < tabbables.length; k++) {\n\t\t\ttabbables[k].tabIndex = indexValue;\n\t\t}\n\t}\n};\n\n/**\n * @param {Now.HostHTMLElement} host\n * @param {Array<String>} selector\n */\nexport const getTabbableElements = (host, selector) => {\n\tconst galleryCardContainer = getGalleryCardContainer(host);\n\treturn shadowQuerySelectorAll(galleryCardContainer, selector);\n};\n\n/**\n * Walks up the DOM tree to find the closest <now-card> element,\n * including across shadow DOM boundaries.\n * @param {any} el\n * @returns {HTMLElement | null}\n */\nexport function getFocusedCardElement(el) {\n\twhile (el) {\n\t\t// Check if the current element is a <now-card> element\n\t\tif (el.tagName === NOW_CARD) {\n\t\t\treturn el;\n\t\t}\n\n\t\tif (el.parentNode) {\n\t\t\tel = el.parentNode;\n\t\t} else if (el instanceof ShadowRoot) {\n\t\t\tel = el.host;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn null;\n}\n","import {\n\tfindActiveElement,\n\tactivateFocusTrap,\n\tdeactivateFocusTrap,\n\tselector,\n} from '@devsnc/sn-list-commons';\nimport { findTabbableNodes } from '@servicenow/library-enhanced-utils';\nimport get from 'lodash/get';\n\nimport { HANDLED_KEYS, KEY } from '../../../shared/KeyboardContants';\nimport { getGalleryColumnCount } from '../../utils/galleryCardUtils';\nimport {\n\tgetFocusedCardElement,\n\tgetFocusedCardIndex,\n\tgetKeyboardNavBehaviourState,\n\tgetTabbableElements,\n\tsetTabIndexForTabbables,\n} from '../../utils/gallerykeyboardNavigationUtils';\n\nimport {\n\tENTER_GALLERY_ITEM_TRAP,\n\tEXIT_GALLERY_ITEM_TRAP,\n\tGALLERY_KEYBOARD_NAV_BEHAVIOR_NAME,\n} from './constants';\n\n/**\n * @param {String} key\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n */\nconst handleKeyDown = (key, coeffects) => {\n\tconst { host, state, action, dispatch } = coeffects;\n\tconst event = get(action, 'payload.event', {});\n\tconst { cards } = state;\n\n\tconst { trappedCard } = getKeyboardNavBehaviourState(state);\n\tconst columnCount = getGalleryColumnCount(host) || 0;\n\tconst currentFocusedCardIndex = Number(getFocusedCardIndex());\n\tconst props = {\n\t\tcurrentFocusedCardIndex,\n\t\tcolumnCount,\n\t\ttotalCards: cards.length,\n\t\thost,\n\t\ttrappedCard,\n\t\tdispatch,\n\t\tevent,\n\t};\n\tconst {\n\t\tmoveUp,\n\t\tmoveDown,\n\t\tmoveLeft,\n\t\tmoveRight,\n\t\tdisableTabbingInGalleryContainer,\n\t} = galleryKeyboardNavigator(props);\n\n\tconst isRTL = document.dir === 'rtl';\n\tswitch (key) {\n\t\tcase KEY.SPACE:\n\t\tcase KEY.SPACEBAR:\n\t\t\tif (event.shiftKey) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tdispatch(ENTER_GALLERY_ITEM_TRAP);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY.TAB:\n\t\t\tdisableTabbingInGalleryContainer();\n\t\t\tbreak;\n\t\tcase KEY.LEFT:\n\t\tcase KEY.ARROW_LEFT:\n\t\t\tisRTL ? moveRight() : moveLeft();\n\t\t\tbreak;\n\n\t\tcase KEY.RIGHT:\n\t\tcase KEY.ARROW_RIGHT:\n\t\t\tisRTL ? moveLeft() : moveRight();\n\t\t\tbreak;\n\n\t\tcase KEY.ARROW_UP:\n\t\t\tmoveUp();\n\t\t\tbreak;\n\n\t\tcase KEY.ARROW_DOWN:\n\t\t\tmoveDown();\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbreak;\n\t}\n};\n\n/**\n * @param {Object}props\n * @param {Number} props.currentFocusedCardIndex\n * @param {Number} props.columnCount\n * @param {Number} props.totalCards\n * @param {Now.HostHTMLElement} props.host\n * @param {HTMLElement} props.trappedCard\n * @param {Now.Dispatch} props.dispatch\n * @param {*} props.event\n */\nconst galleryKeyboardNavigator = (props) => {\n\tconst {\n\t\tcurrentFocusedCardIndex,\n\t\tcolumnCount,\n\t\ttotalCards,\n\t\thost,\n\t\ttrappedCard,\n\t\tdispatch,\n\t\tevent,\n\t} = props;\n\tconst dispatchExitCardTrap = () => {\n\t\tif (trappedCard) {\n\t\t\tdispatch(EXIT_GALLERY_ITEM_TRAP, { shouldFocus: true });\n\t\t}\n\t};\n\n\tconst moveUp = () => {\n\t\tdispatchExitCardTrap();\n\t\tif (currentFocusedCardIndex - columnCount >= 0) {\n\t\t\tconst nextCardToFocusIndex = currentFocusedCardIndex - columnCount;\n\t\t\tfocusCardByIndex(host, nextCardToFocusIndex);\n\t\t}\n\t};\n\n\tconst moveRight = () => {\n\t\tdispatchExitCardTrap();\n\t\tif (currentFocusedCardIndex < totalCards) {\n\t\t\tconst nextCardToFocusIndex = currentFocusedCardIndex + 1;\n\t\t\tfocusCardByIndex(host, nextCardToFocusIndex);\n\t\t}\n\t};\n\n\tconst moveLeft = () => {\n\t\tdispatchExitCardTrap();\n\t\tif (currentFocusedCardIndex > 0) {\n\t\t\tconst nextCardToFocusIndex = currentFocusedCardIndex - 1;\n\t\t\tfocusCardByIndex(host, nextCardToFocusIndex);\n\t\t}\n\t};\n\n\tconst moveDown = () => {\n\t\tdispatchExitCardTrap();\n\t\tif (currentFocusedCardIndex + columnCount < totalCards + 1) {\n\t\t\tconst nextCardToFocusIndex = currentFocusedCardIndex + columnCount;\n\t\t\tfocusCardByIndex(host, nextCardToFocusIndex);\n\t\t}\n\t};\n\tconst disableTabbingInGalleryContainer = () => {\n\t\tif (!trappedCard) {\n\t\t\tconst currentActiveElement = findActiveElement();\n\t\t\tevent.stopPropagation();\n\t\t\tconst tabbables = getTabbableElements(host, selector);\n\t\t\tsetTabIndexForTabbables(tabbables, -1);\n\t\t\tif (currentActiveElement) {\n\t\t\t\tcurrentActiveElement.tabIndex = 0;\n\t\t\t}\n\t\t}\n\t};\n\treturn {\n\t\tmoveUp,\n\t\tmoveRight,\n\t\tmoveLeft,\n\t\tmoveDown,\n\t\tdisableTabbingInGalleryContainer,\n\t};\n};\n/**\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n */\nconst handleFocusInEffect = (coeffects) => {\n\tconst { host, action } = coeffects;\n\tconst event = get(action, 'payload.event', {});\n\tevent.stopPropagation();\n\tconst tabbables = getTabbableElements(host, selector);\n\tsetTabIndexForTabbables(tabbables, 0);\n};\n\n/**\n *  Sets focus to that card for the given index\n *\n * @param {Now.HostHTMLElement} host\n * @param {number} cardIndex\n */\nconst focusCardByIndex = (host, cardIndex) => {\n\tconst cardToFocus = host.shadowRoot?.querySelector(\n\t\t`[data-nav-index=\"${cardIndex}\"]`\n\t);\n\tif (cardToFocus instanceof HTMLElement) {\n\t\tcardToFocus.focus();\n\t}\n};\n/**\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n */\n\nexport const keydownHandlerEffect = (coeffects) => {\n\tconst { action } = coeffects;\n\tconst event = get(action, 'payload.event', {});\n\n\tif (HANDLED_KEYS.includes(event.key)) {\n\t\thandleKeyDown(event.key, coeffects);\n\t}\n};\n\n/**\n * Traps focus to within currently selected cell\n * And applies focus to the specified element\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const enterCardTrapEffect = (coeffects) => {\n\tconst { state, updateState, dispatch } = coeffects;\n\tconst currentActiveElement = findActiveElement();\n\tconst { trappedCard } = getKeyboardNavBehaviourState(state);\n\n\tif (!currentActiveElement) return;\n\tif (trappedCard) {\n\t\tdispatch(EXIT_GALLERY_ITEM_TRAP);\n\t}\n\t/**\n\t * @type {Array<HTMLElement>}\n\t */\n\n\tconst tabbableNodes = findTabbableNodes(\n\t\tgetFocusedCardElement(currentActiveElement)\n\t).filter((/** @type {HTMLElement} */ el) => !el.hasAttribute('disabled'));\n\n\ttabbableNodes.forEach((node) => {\n\t\tnode.tabIndex = 0;\n\t});\n\n\tactivateFocusTrap('card', currentActiveElement, {\n\t\tmoveFocusInsideTrap: true,\n\t\tfirstElement: tabbableNodes[1],\n\t\tlastElement: tabbableNodes[tabbableNodes.length - 1],\n\t});\n\n\tconst nodeToFocus = tabbableNodes[1];\n\n\tnodeToFocus.focus();\n\tupdateState({\n\t\tpath: `behaviors.${GALLERY_KEYBOARD_NAV_BEHAVIOR_NAME}`,\n\t\toperation: 'set',\n\t\tvalue: {\n\t\t\ttrappedCard: getFocusedCardElement(currentActiveElement),\n\t\t},\n\t\tshouldRender: false,\n\t});\n};\n/**\n * Removes focus from within the cell and returns it to the table cell\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const exitCardTrapEffect = (coeffects) => {\n\tconst { state, updateState, action } = coeffects;\n\tconst { trappedCard } = getKeyboardNavBehaviourState(state);\n\tif (!trappedCard) return;\n\n\tconst {\n\t\tpayload: { shouldFocus = true },\n\t} = action;\n\tdeactivateFocusTrap('card');\n\n\tif (shouldFocus) trappedCard.focus();\n\n\tupdateState({\n\t\tpath: `behaviors.${GALLERY_KEYBOARD_NAV_BEHAVIOR_NAME}`,\n\t\toperation: 'set',\n\t\tvalue: {\n\t\t\ttrappedCard: undefined,\n\t\t},\n\t\tshouldRender: false,\n\t});\n};\nexport const galleryKeyboardNavBehavior = {\n\tname: GALLERY_KEYBOARD_NAV_BEHAVIOR_NAME,\n\tinitialState: {\n\t\ttrappedCard: undefined,\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect: keydownHandlerEffect,\n\t\t},\n\t\t{\n\t\t\tevents: ['focusin'],\n\t\t\teffect: handleFocusInEffect,\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[ENTER_GALLERY_ITEM_TRAP]: {\n\t\t\teffect: enterCardTrapEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t\t[EXIT_GALLERY_ITEM_TRAP]: {\n\t\t\teffect: exitCardTrapEffect,\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n\nexport default galleryKeyboardNavBehavior;\n","export const SN_LIST_GALLERY_VIRTUALIZED_SCROLL_BOTTOM_REACHED =\n\t'SN_LIST_GALLERY#VIRTUALIZED_SCROLL_BOTTOM_REACHED';\nexport const VIRTUAL_PAGE_SIZE = 24;\nexport const INITIAL_VIRTUAL_PAGES = 10;\nexport const VIRTUALIZED_GALLERY_BEHAVIOR = 'virtualizedGalleryBehavior';\nexport const LOAD_NEXT_VIRTUAL_PAGE = 'LOAD_NEXT_VIRTUAL_PAGE';\nexport const LOAD_VIRTUAL_PAGE = 'LOAD_VIRTUAL_PAGE';\nexport const LOAD_CURRENT_VIRTUAL_PAGE = 'LOAD_CURRENT_VIRTUAL_PAGE';\nexport const OBSERVE_VIRTUAL_PAGE = 'OBSERVE_VIRTUAL_PAGE';\nexport const VIRTUAL_PAGE_RESIZED = 'VIRTUAL_PAGE_RESIZED';\nexport const OBSERVE_VIRTUAL_PAGE_FOR_RESIZE =\n\t'OBSERVE_VIRTUAL_PAGE_FOR_RESIZE';\nexport const INITIALIZE_BOTTOM_OBSERVER = 'INITIALIZE_BOTTOM_OBSERVER';\nexport const INITIALIZE_FIRST_PAGE_OBSERVER = 'INITIALIZE_FIRST_PAGE_OBSERVER';\nexport const SCROLL_TO_TOP = 'SCROLL_TO_TOP';\nexport const VIRTUAL_PAGE_ID_ATTRIBUTE = 'data-pageid';\nexport const CARD_SELECTOR = 'now-card';\nexport const GALLERY_VIRTUALIZED_SCROLL_ELEMENT_SELECTOR =\n\t'#gallery-virtualized-scroll-element';\nexport const SET_SCROLL_TO_TOP_BUTTON_VISIBILITY =\n\t'SET_SCROLL_TO_TOP_BUTTON_VISIBILITY';\nexport const INITIAL_VIRTUALIZED_GALLERY_BEHAVIOR_STATE = {\n\tvirtualPageStore: {},\n\tvisibleVirtualPages: [],\n\tvirtualPageDimensions: {},\n\tcardDimensions: {},\n\tisLoadingNextPages: false,\n\tobservedVirtualPageIdForResize: 0,\n\tcurrentViewedPageId: 0,\n\tcustomRow: null,\n\tshowScrollToTopButton: false,\n};\n","import {\n\tLOAD_NEXT_VIRTUAL_PAGE,\n\tLOAD_VIRTUAL_PAGE,\n\tVIRTUAL_PAGE_RESIZED,\n\tVIRTUAL_PAGE_ID_ATTRIBUTE,\n\tSET_SCROLL_TO_TOP_BUTTON_VISIBILITY,\n} from './constants';\n\nexport class VirtualizedGalleryObserver {\n\t/**\n\t * @type {Element | null}\n\t */\n\tobservedVirtualPageForResize = null;\n\t/**\n\t * @type {IntersectionObserver | null}\n\t */\n\tfirstPageObserverRef = null;\n\t/**\n\t * @type {IntersectionObserver | null}\n\t */\n\tbottomObserverRef = null;\n\t/**\n\t * @type {IntersectionObserver | null}\n\t */\n\tvirtualPagesObserverRef = null;\n\t/**\n\t * @type {ResizeObserver | null}\n\t */\n\tresizeObserverRef = null;\n\t/**\n\t * @type {{ [key: number]: Element }}\n\t */\n\tobservedPages = {};\n\t/**\n\t * @type {Map<String, VirtualizedGalleryObserver>}\n\t */\n\tstatic observerMap = new Map();\n\n\t/**\n\t * Deletes the observer associated to the nowId.\n\t * @param {string} nowId\n\t */\n\tstatic destroyObserver(nowId) {\n\t\tconst observer = this.observerMap.get(nowId);\n\t\tif (observer) {\n\t\t\tobserver.destroy();\n\t\t}\n\t\tthis.observerMap.delete(nowId);\n\t}\n\n\t/**\n\t * @param {string} nowId\n\t */\n\tstatic createObserver(nowId) {\n\t\tconst observer = new VirtualizedGalleryObserver();\n\t\tthis.observerMap.set(nowId, observer);\n\t\treturn observer;\n\t}\n\n\t/**\n\t * @param {string} nowId\n\t */\n\tstatic getObserver(nowId) {\n\t\treturn this.observerMap.get(nowId);\n\t}\n\n\tconstructor() {\n\t\tthis.initialize();\n\t}\n\n\tinitialize() {\n\t\tthis.bottomObserverRef = null;\n\t\tthis.virtualPagesObserverRef = null;\n\t\tthis.observedPages = {};\n\t\tthis.observedVirtualPageForResize = null;\n\t\tthis.resizeObserverRef = null;\n\t}\n\n\t/**\n\t * function allows for fn() to be called after the browser has completed style and layout\n\t * @param {function }fn\n\t */\n\texecuteAfterBrowserStyleAndLayout(fn) {\n\t\trequestAnimationFrame(() => {\n\t\t\tfn();\n\t\t});\n\t}\n\n\t/**\n\t * Dispatches load virtual page action with the pageId of the latest virtual page that came into visibility.\n\t * @param {Now.Dispatch} dispatch\n\t */\n\tinitializeVirtualPagesIntersectionObserver(dispatch) {\n\t\tthis.virtualPagesObserverRef = new IntersectionObserver((\n\t\t\t/** @type {IntersectionObserverEntry[]} */ virtualPageEntries\n\t\t) => {\n\t\t\tthis.executeAfterBrowserStyleAndLayout(() => {\n\t\t\t\t// Sort entries by time page intersection recorded\n\t\t\t\tvirtualPageEntries.sort((entry1, entry2) =>\n\t\t\t\t\tentry1.time < entry2.time ? -1 : 1\n\t\t\t\t);\n\t\t\t\twhile (\n\t\t\t\t\tvirtualPageEntries.length &&\n\t\t\t\t\t!virtualPageEntries[virtualPageEntries.length - 1]\n\t\t\t\t\t\t.isIntersecting\n\t\t\t\t) {\n\t\t\t\t\tvirtualPageEntries.pop();\n\t\t\t\t}\n\t\t\t\tconst entry = virtualPageEntries.length\n\t\t\t\t\t? virtualPageEntries.pop()\n\t\t\t\t\t: null;\n\t\t\t\tif (entry) {\n\t\t\t\t\tdispatch(LOAD_VIRTUAL_PAGE, {\n\t\t\t\t\t\tpageId: Number(\n\t\t\t\t\t\t\tentry.target.getAttribute(VIRTUAL_PAGE_ID_ATTRIBUTE)\n\t\t\t\t\t\t),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Dispatches load next virtual page action to fetch next rows when user scrolls to bottom.\n\t * @param {Element} observedBottomElm\n\t * @param {Now.Dispatch} dispatch\n\t */\n\tinitializeBottomIntersectionObserver(observedBottomElm, dispatch) {\n\t\tif (this.bottomObserverRef || !observedBottomElm) return;\n\t\tthis.bottomObserverRef = new IntersectionObserver((\n\t\t\t/** @type {Array<IntersectionObserverEntry>} */ entries\n\t\t) => {\n\t\t\tthis.executeAfterBrowserStyleAndLayout(() => {\n\t\t\t\tconst entry = entries[0];\n\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\tdispatch(LOAD_NEXT_VIRTUAL_PAGE);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tthis.bottomObserverRef.observe(observedBottomElm);\n\t}\n\n\t/**\n\t * Dispatches resized action when the first visible virtual page gets resized.\n\t * @param {Now.Dispatch} dispatch\n\t */\n\tinitializeResizeObserver(dispatch) {\n\t\tthis.resizeObserverRef = new ResizeObserver((\n\t\t\t/** @type {Array<ResizeObserverEntry>} */ entries\n\t\t) => {\n\t\t\tthis.executeAfterBrowserStyleAndLayout(() => {\n\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\tif (entry.target === this.observedVirtualPageForResize) {\n\t\t\t\t\t\tdispatch(VIRTUAL_PAGE_RESIZED, {\n\t\t\t\t\t\t\ttarget: entry.target,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Dispatches action to hide/show scroll to top button when first page goes on/off the viewport.\n\t * @param {Element} firstPageElm\n\t * @param {Now.Dispatch} dispatch\n\t */\n\tinitializeFirstPageIntersectionObserver(firstPageElm, dispatch) {\n\t\tif (!firstPageElm) return;\n\n\t\tif (this.firstPageObserverRef) this.firstPageObserverRef.disconnect();\n\n\t\tthis.firstPageObserverRef = new IntersectionObserver((\n\t\t\t/** @type {Array<IntersectionObserverEntry>} */ entries\n\t\t) => {\n\t\t\tthis.executeAfterBrowserStyleAndLayout(() => {\n\t\t\t\tconst entry = entries[0];\n\t\t\t\tdispatch(SET_SCROLL_TO_TOP_BUTTON_VISIBILITY, {\n\t\t\t\t\tisVisible: !entry.isIntersecting,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\tthis.firstPageObserverRef.observe(firstPageElm);\n\t}\n\n\t/**\n\t * @param {Number} pageIndex\n\t * @param {Element | null} pageRef\n\t */\n\tobserveVirtualPage(pageIndex, pageRef) {\n\t\tif (!pageRef || this.observedPages[pageIndex] === pageRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.unobserveVirtualPage(this.observedPages[pageIndex]);\n\t\tthis.virtualPagesObserverRef?.observe(pageRef);\n\t\tthis.observedPages[pageIndex] = pageRef;\n\t}\n\n\t/**\n\t * @param {Element} pageRef\n\t */\n\tobserveVirtualPageForResize(pageRef) {\n\t\tif (\n\t\t\t!this.resizeObserverRef ||\n\t\t\t!pageRef ||\n\t\t\tthis.observedVirtualPageForResize === pageRef\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.observedVirtualPageForResize) {\n\t\t\tthis.resizeObserverRef.unobserve(this.observedVirtualPageForResize);\n\t\t}\n\n\t\tthis.observedVirtualPageForResize = pageRef;\n\t\tthis.resizeObserverRef.observe(pageRef);\n\t}\n\n\t/**\n\t * @param {Element} pageRef\n\t */\n\tunobserveVirtualPage(pageRef) {\n\t\tif (!pageRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.virtualPagesObserverRef?.unobserve(pageRef);\n\t}\n\n\tdestroy() {\n\t\tObject.values(this.observedPages).forEach((pageRef) => {\n\t\t\tthis.virtualPagesObserverRef?.unobserve(pageRef);\n\t\t});\n\t\tthis.virtualPagesObserverRef?.disconnect();\n\t\tthis.bottomObserverRef?.disconnect();\n\t\tthis.firstPageObserverRef?.disconnect();\n\t\tthis.resizeObserverRef?.disconnect();\n\t\tthis.initialize();\n\t}\n}\n","import { actionTypes } from '@servicenow/ui-core';\nimport { get } from 'lodash';\nimport isEqual from 'lodash/isEqual';\n\nimport { ROW_TYPE_CUSTOM } from '../../../typeSchemas/rowDefinitions/rowTypes/rowTypes';\n\nimport {\n\tSN_LIST_GALLERY_VIRTUALIZED_SCROLL_BOTTOM_REACHED,\n\tVIRTUAL_PAGE_SIZE,\n\tINITIAL_VIRTUAL_PAGES,\n\tVIRTUALIZED_GALLERY_BEHAVIOR,\n\tLOAD_VIRTUAL_PAGE,\n\tLOAD_CURRENT_VIRTUAL_PAGE,\n\tLOAD_NEXT_VIRTUAL_PAGE,\n\tVIRTUAL_PAGE_RESIZED,\n\tOBSERVE_VIRTUAL_PAGE_FOR_RESIZE,\n\tOBSERVE_VIRTUAL_PAGE,\n\tINITIALIZE_BOTTOM_OBSERVER,\n\tCARD_SELECTOR,\n\tINITIAL_VIRTUALIZED_GALLERY_BEHAVIOR_STATE,\n\tSCROLL_TO_TOP,\n\tINITIALIZE_FIRST_PAGE_OBSERVER,\n\tSET_SCROLL_TO_TOP_BUTTON_VISIBILITY,\n\tGALLERY_VIRTUALIZED_SCROLL_ELEMENT_SELECTOR,\n} from './constants';\nimport { VirtualizedGalleryObserver } from './virtualizationObserver';\n\nconst {\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\n\n/**\n * Get behavior state from component state\n * @param {State} state\n * @returns {VirtualizedGalleryBehaviorState}\n */\nexport const getVirtualizedBehaviorState = (state) =>\n\tstate && state.behaviors\n\t\t? state.behaviors[VIRTUALIZED_GALLERY_BEHAVIOR]\n\t\t: // @ts-ignore\n\t\t  {};\n\n/**\n * @param {Array<Row>} rows\n */\nexport const prepareVirtualPageStore = (rows) => {\n\t/**\n\t * @type VirtualPageStore\n\t */\n\tconst virtualPageStore = {};\n\tlet pageId = 0;\n\tfor (let i = 0; i < rows.length; i += VIRTUAL_PAGE_SIZE) {\n\t\tvirtualPageStore[pageId] = {\n\t\t\tid: pageId,\n\t\t\trowStartIndex: i,\n\t\t\trowEndIndex: Math.min(i + VIRTUAL_PAGE_SIZE, rows.length) - 1,\n\t\t};\n\t\tpageId++;\n\t}\n\treturn virtualPageStore;\n};\n\n/**\n * prepares visible virtual pages based on current viewed pageId\n * @param {number} currentViewedPageId\n * @param {number} pagesCount\n * @param {Array<number>} visibleVirtualPages\n */\nexport const prepareNewVisiblePages = (\n\tcurrentViewedPageId,\n\tpagesCount,\n\tvisibleVirtualPages\n) => {\n\tconst length = visibleVirtualPages.length;\n\tconst offset = Math.floor(length / 2);\n\tlet newVisiblePages = [];\n\n\tif (currentViewedPageId <= offset || pagesCount < length) {\n\t\tnewVisiblePages = Array.from({ length }, (_, i) => i);\n\t} else if (currentViewedPageId >= pagesCount - offset) {\n\t\tnewVisiblePages = Array.from(\n\t\t\t{ length },\n\t\t\t(_, i) => i + pagesCount - length\n\t\t);\n\t} else {\n\t\tconst start = Math.max(0, currentViewedPageId - offset);\n\t\tnewVisiblePages = Array.from({ length }, (_, i) => start + i);\n\t}\n\n\treturn newVisiblePages;\n};\n\n/**\n * Handles loading the page corresponding to the pageId the user has scrolled to.\n * When user is on the last retrieved visible page, load next page is dispatched to fetch next set of records.\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleLoadVirtualPage = ({\n\tstate,\n\tdispatch,\n\taction,\n\tupdateState,\n}) => {\n\tconst {\n\t\tvisibleVirtualPages,\n\t\tisLoadingNextPages,\n\t\tvirtualPageStore,\n\t} = getVirtualizedBehaviorState(state);\n\tconst { pageId } = action.payload;\n\tconst pageCount = Object.keys(virtualPageStore).length;\n\tconst isVirtualPageVisible = visibleVirtualPages.indexOf(pageId) > -1;\n\tconst isLastRetrievedPage = pageId === pageCount - 1;\n\n\tupdateState({\n\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.currentViewedPageId`,\n\t\tvalue: pageId,\n\t\toperation: 'set',\n\t\tshouldRender: false,\n\t});\n\n\tif (isVirtualPageVisible && isLastRetrievedPage && !isLoadingNextPages) {\n\t\tdispatch(LOAD_NEXT_VIRTUAL_PAGE);\n\t} else {\n\t\tdispatch(LOAD_CURRENT_VIRTUAL_PAGE, { pageId });\n\t}\n};\n\n/**\n * Dispatches event to load next set of records when user scrolls to the bottom.\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleLoadNextVirtualPage = async (coeffects) => {\n\tconst { state, dispatch, updateState, properties } = coeffects;\n\tconst { isLoadingNextPages } = getVirtualizedBehaviorState(state);\n\n\tif (isLoadingNextPages) return;\n\tconst {\n\t\trowDefinitions: { metadata },\n\t} = properties;\n\tconst listId = get(metadata, 'listId');\n\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.isLoadingNextPages`,\n\t\t\tvalue: true,\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n\tdispatch(SN_LIST_GALLERY_VIRTUALIZED_SCROLL_BOTTOM_REACHED, { listId });\n};\n\n/**\n * Handles updating of visible pages depending on the pageId the user has scrolled to.\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleLoadCurrentVirtualPage = ({\n\tupdateState,\n\tstate,\n\taction,\n}) => {\n\tconst pageId = action.payload.pageId;\n\tconst {\n\t\tvisibleVirtualPages,\n\t\tvirtualPageStore,\n\t} = getVirtualizedBehaviorState(state);\n\tconst pagesCount = Object.keys(virtualPageStore).length;\n\n\tif (!virtualPageStore[pageId]) return;\n\tconst newVisiblePages = prepareNewVisiblePages(\n\t\tpageId,\n\t\tpagesCount,\n\t\tvisibleVirtualPages\n\t);\n\n\tif (newVisiblePages.join(',') === visibleVirtualPages.join(',')) return;\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.visibleVirtualPages`,\n\t\t\tvalue: newVisiblePages,\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\t// Updating to observe new first visible page for resize as earlier one might get removed from the visible pages\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.observedVirtualPageIdForResize`,\n\t\t\tvalue: newVisiblePages[0],\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n};\n\n/**\n * Creates page store from the row definitions and initializes visible pages with page IDs to be displayed in the DOM.\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleComponentBootstrapped = (coeffects) => {\n\tconst { updateState, properties, dispatch } = coeffects;\n\tconst { rowDefinitions, virtualizedScrollEnabled } = properties;\n\n\tif (!rowDefinitions || !rowDefinitions.rows || !virtualizedScrollEnabled)\n\t\treturn;\n\n\tconst rows = [...rowDefinitions.rows];\n\tlet customRow = null;\n\tif (rows.length && rows[rows.length - 1].type === ROW_TYPE_CUSTOM) {\n\t\tcustomRow = rows.pop();\n\t}\n\n\tconst virtualPageStore = prepareVirtualPageStore(rows);\n\tconst initialVisiblePages = Array.from(\n\t\t{ length: INITIAL_VIRTUAL_PAGES },\n\t\t(_, i) => i\n\t);\n\n\tlet observer = VirtualizedGalleryObserver.getObserver(coeffects.host.nowId);\n\tif (!observer) {\n\t\tobserver = VirtualizedGalleryObserver.createObserver(\n\t\t\tcoeffects.host.nowId\n\t\t);\n\t\tobserver.initializeVirtualPagesIntersectionObserver(dispatch);\n\t\tobserver.initializeResizeObserver(dispatch);\n\t}\n\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.virtualPageStore`,\n\t\t\tvalue: virtualPageStore,\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.visibleVirtualPages`,\n\t\t\tvalue: initialVisiblePages,\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.customRow`,\n\t\t\tvalue: customRow,\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n};\n\n/**\n * Updates existing page store with newly fetched rows and visible pages based on the current viewed page by the user.\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleComponentPropertyChanged = (coeffects) => {\n\tconst { state, updateState, action, properties } = coeffects;\n\tconst { name, value, previousValue } = action.payload;\n\n\tif (\n\t\t!properties.virtualizedScrollEnabled ||\n\t\tname !== 'rowDefinitions' ||\n\t\t!value ||\n\t\t!value.rows ||\n\t\tisEqual(value, previousValue)\n\t)\n\t\treturn;\n\n\tconst {\n\t\tvisibleVirtualPages,\n\t\tcurrentViewedPageId,\n\t} = getVirtualizedBehaviorState(state);\n\tconst rows = [...value.rows];\n\tlet customRow = null;\n\tif (rows.length && rows[rows.length - 1].type === ROW_TYPE_CUSTOM) {\n\t\tcustomRow = rows.pop();\n\t}\n\n\tconst virtualPageStore = prepareVirtualPageStore(rows);\n\tconst newVisiblePages = prepareNewVisiblePages(\n\t\tcurrentViewedPageId,\n\t\tObject.keys(virtualPageStore).length,\n\t\tvisibleVirtualPages\n\t);\n\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.virtualPageStore`,\n\t\t\tvalue: virtualPageStore,\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.visibleVirtualPages`,\n\t\t\tvalue: newVisiblePages,\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.isLoadingNextPages`,\n\t\t\tvalue: false,\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.customRow`,\n\t\t\tvalue: customRow,\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.observedVirtualPageIdForResize`,\n\t\t\tvalue: newVisiblePages[0],\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n};\n\n/**\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleComponentDisconnected = ({ host }) => {\n\tVirtualizedGalleryObserver.destroyObserver(host.nowId);\n};\n\n/**\n * Updates page and card dimensions when the visible virtual page gets resized.\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleVirtualPageResized = (coeffects) => {\n\tconst { state, action, updateState } = coeffects;\n\tconst { target } = action.payload;\n\tconst virtualPageHeight = target.clientHeight;\n\tconst virtualPageWidth = target.clientWidth;\n\tconst card = target.querySelector(CARD_SELECTOR);\n\tif (!card) return;\n\n\tconst cardHeight = card.clientHeight;\n\tconst cardWidth = card.clientWidth;\n\tconst { virtualPageDimensions } = getVirtualizedBehaviorState(state);\n\n\tif (virtualPageDimensions?.pageHeight === virtualPageHeight) return;\n\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.virtualPageDimensions`,\n\t\t\tvalue: {\n\t\t\t\tpageHeight: virtualPageHeight,\n\t\t\t\tpageWidth: virtualPageWidth,\n\t\t\t},\n\t\t\toperation: 'set',\n\t\t},\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.cardDimensions`,\n\t\t\tvalue: {\n\t\t\t\tcardHeight,\n\t\t\t\tcardWidth,\n\t\t\t},\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n};\n\n/**\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleObserveVirtualPage = (coeffects) => {\n\tconst { action, host } = coeffects;\n\tconst { pageElm, pageId } = action.payload;\n\n\tconst observer = VirtualizedGalleryObserver.getObserver(host.nowId);\n\tif (!observer) return;\n\tobserver.observeVirtualPage(pageId, pageElm);\n\tif (observer.observedVirtualPageForResize == null) {\n\t\thandleObserveVirtualPageForResize(coeffects);\n\t}\n};\n\n/**\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleObserveVirtualPageForResize = (coeffects) => {\n\tconst { action, host } = coeffects;\n\tconst { pageElm } = action.payload;\n\tconst observer = VirtualizedGalleryObserver.getObserver(host.nowId);\n\tif (!observer) return;\n\tobserver.observeVirtualPageForResize(pageElm);\n};\n\n/**\n * @param {Now.Coeffects<Props, State>} coeffects\n */\nexport const handleInitializeBottomObserver = (coeffects) => {\n\tconst { dispatch, action } = coeffects;\n\tconst observer = VirtualizedGalleryObserver.getObserver(\n\t\tcoeffects.host.nowId\n\t);\n\tif (!observer) return;\n\tobserver.initializeBottomIntersectionObserver(\n\t\taction.payload.observedBottomElm,\n\t\tdispatch\n\t);\n};\n\n/**\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleInitializeFirstPageObserver = (coeffects) => {\n\tconst { dispatch, action } = coeffects;\n\tconst observer = VirtualizedGalleryObserver.getObserver(\n\t\tcoeffects.host.nowId\n\t);\n\tif (!observer) return;\n\tobserver.initializeFirstPageIntersectionObserver(\n\t\taction.payload.pageElm,\n\t\tdispatch\n\t);\n};\n\n/**\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleScrollToTop = (coeffects) => {\n\tconst { host } = coeffects;\n\tconst scrollElement = host.shadowRoot?.querySelector(\n\t\tGALLERY_VIRTUALIZED_SCROLL_ELEMENT_SELECTOR\n\t);\n\n\tif (scrollElement) {\n\t\tscrollElement.scrollIntoView({ behavior: 'smooth', block: 'end' });\n\t}\n};\n\n/**\n * @param {Coeffects<Props, State>} coeffects\n */\nexport const handleScrollToTopButtonVisibility = ({ updateState, action }) => {\n\tupdateState([\n\t\t{\n\t\t\tpath: `behaviors.${VIRTUALIZED_GALLERY_BEHAVIOR}.showScrollToTopButton`,\n\t\t\tvalue: action.payload.isVisible,\n\t\t\toperation: 'set',\n\t\t},\n\t]);\n};\n\nexport const virtualizedGalleryBehavior = {\n\tname: VIRTUALIZED_GALLERY_BEHAVIOR,\n\tinitialState: INITIAL_VIRTUALIZED_GALLERY_BEHAVIOR_STATE,\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: handleComponentBootstrapped,\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\t\teffect: handleComponentPropertyChanged,\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: {\n\t\t\teffect: handleComponentDisconnected,\n\t\t},\n\t\t[LOAD_NEXT_VIRTUAL_PAGE]: {\n\t\t\teffect: handleLoadNextVirtualPage,\n\t\t},\n\t\t[LOAD_CURRENT_VIRTUAL_PAGE]: {\n\t\t\teffect: handleLoadCurrentVirtualPage,\n\t\t},\n\t\t[LOAD_VIRTUAL_PAGE]: {\n\t\t\teffect: handleLoadVirtualPage,\n\t\t},\n\t\t[OBSERVE_VIRTUAL_PAGE]: {\n\t\t\teffect: handleObserveVirtualPage,\n\t\t},\n\t\t[VIRTUAL_PAGE_RESIZED]: {\n\t\t\teffect: handleVirtualPageResized,\n\t\t},\n\t\t[OBSERVE_VIRTUAL_PAGE_FOR_RESIZE]: {\n\t\t\teffect: handleObserveVirtualPageForResize,\n\t\t},\n\t\t[INITIALIZE_FIRST_PAGE_OBSERVER]: {\n\t\t\teffect: handleInitializeFirstPageObserver,\n\t\t},\n\t\t[INITIALIZE_BOTTOM_OBSERVER]: {\n\t\t\teffect: handleInitializeBottomObserver,\n\t\t},\n\t\t[SCROLL_TO_TOP]: {\n\t\t\teffect: handleScrollToTop,\n\t\t},\n\t\t[SET_SCROLL_TO_TOP_BUTTON_VISIBILITY]: {\n\t\t\teffect: handleScrollToTopButtonVisibility,\n\t\t},\n\t},\n};\n","import { columnDefinitionsSchema } from '../typeSchemas/columnDefinitions/columnDefinitions';\nimport { rowDefinitionsSchema } from '../typeSchemas/rowDefinitions/rowDefinitions';\n\nexport const galleryViewPropsDefinition = {\n\t/**\n\t * @description Contains data and metadata to populate and render all columns in the gallery\n\t * @public\n\t * @type {object}\n\t */\n\tcolumnDefinitions: {\n\t\tschema: columnDefinitionsSchema,\n\t\trequired: true,\n\t},\n\t/**\n\t * @description Contains data and metadata to populate and render all cards in the gallery\n\t * @public\n\t * @type {object}\n\t */\n\trowDefinitions: {\n\t\tschema: rowDefinitionsSchema,\n\t},\n\t/**\n\t * @description When true, expands all groups in table\n\t * @public\n\t * @type {object}\n\t */\n\texpandAllGroups: {\n\t\tdefault: false,\n\t\ttype: 'boolean',\n\t},\n\t/**\n\t * @description Feature flag for allowing links, urls, and person type fields to have highlighted text. When false, they are rendered as text\n\t * @public\n\t * @type {object}\n\t */\n\tclickableTextEnabled: {\n\t\tdefault: false,\n\t\ttype: 'boolean',\n\t},\n\t/**\n\t * @description Contains Shared State data that is passed from the parent now-list\n\t * @public\n\t * @type {object}\n\t */\n\tsharedContext: {\n\t\tdefault: {},\n\t\ttype: 'object',\n\t},\n\t/**\n\t * @description Feature flag that enables virtualized scrolling for the list\n\t * @private\n\t * @type {object}\n\t */\n\tvirtualizedScrollEnabled: {\n\t\tdefault: false,\n\t},\n\t/**\n\t * @description Enables card selection on all cards. When true, can be disabled on a card-by-card basis.\n\t * @public\n\t * @type {object}\n\t */\n\tselectionEnabled: {\n\t\tdefault: true,\n\t\ttype: 'boolean',\n\t},\n};\n","import { actionableMessageKey } from '../../../behaviors/actionableMessageBehavior/constants';\nimport rowSelectors from '../../../shared/utils/selectors/rowSelectors';\nimport {\n\tACTIONABLE_MESSAGE_BUTTON_CLASS,\n\tACTIONABLE_MESSAGE_ICON_SIZE,\n} from '../../../shared/views/actionableMessage/constants';\n\nconst { getActionableMessageIcon, getActionableMessageStatus } = rowSelectors;\n\n/**\n * @param {ActionableMessage} actionableMessage\n * @param {string} location\n */\nexport const renderActionableMessage = (actionableMessage, location) => {\n\tconst { text, action } = actionableMessage || {};\n\t// added place holder div here because if we return null and fill up with message later, snabbdom is triggering a reflow\n\tif (!actionableMessage || (action && (!action.action || !action.label))) {\n\t\treturn <div className=\"actionable-message-place-holder\"></div>;\n\t}\n\tconst status = getActionableMessageStatus(actionableMessage);\n\tconst icon = getActionableMessageIcon(actionableMessage);\n\treturn (\n\t\t<div\n\t\t\tclassName={`actionable-message actionable-message-${location}`}\n\t\t\tdata-testId={`actionable-message-${location}`}\n\t\t>\n\t\t\t<div className={`actionable-message-content ${status}`}>\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"actionable-message-icon\"\n\t\t\t\t\tsize={ACTIONABLE_MESSAGE_ICON_SIZE}\n\t\t\t\t\ticon={icon}\n\t\t\t\t/>\n\t\t\t\t<div className=\"actionable-message-label-group\">\n\t\t\t\t\t{text ? (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"actionable-message-text\"\n\t\t\t\t\t\t\tdata-tooltip={text}\n\t\t\t\t\t\t\tdata-truncation\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{text}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t\t{action ? (\n\t\t\t\t\t\t<div className=\"actionable-message-action\">\n\t\t\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\t\t\thideBlockPadding\n\t\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\t\t'aria-label': action.label,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName={ACTIONABLE_MESSAGE_BUTTON_CLASS}\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tlabel={action.label}\n\t\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\t\tkey: actionableMessageKey,\n\t\t\t\t\t\t\t\t\taction: action.action,\n\t\t\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import {\n\tTOOLTIP_ADD_TARGET,\n\tTOOLTIP_REMOVE_TARGET,\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\n\nimport {\n\tROW_CELL_CLASS,\n\tCELL_CONTENT_CLASS,\n} from '../views/table/tableBody/tableRow/rowCell/rowCellConstants';\n\n/**\n * This util adds a tooltip anywhere on now-list. The target elm must have a data-tooltip attribute.\n * @param {*} dispatch seismic dispatch\n */\nexport default function getTooltip(dispatch) {\n\treturn {\n\t\t'hook-insert': (/** @type {*} */ { elm }) => {\n\t\t\tdispatch(TOOLTIP_ADD_TARGET, { target: elm });\n\t\t},\n\t\t'hook-destroy': (/** @type {*} */ { elm }) => {\n\t\t\tdispatch(TOOLTIP_REMOVE_TARGET, { target: elm });\n\t\t},\n\t};\n}\n\n/**\n *  @param {HTMLTableCellElement} cell\n *  @returns {HTMLElement|null}\n */\nconst getCellContentElement = (cell) => {\n\treturn cell.querySelector(`.${CELL_CONTENT_CLASS}`);\n};\n\n/**\n *  @param {HTMLElement} target\n *  @returns {boolean}\n */\nconst isCellElement = (target) => {\n\treturn (\n\t\ttarget?.nodeName === 'TD' && target?.classList.contains(ROW_CELL_CLASS)\n\t);\n};\n\n/**\n *  @param {HTMLElement} target\n *  @returns {boolean|undefined}\n */\nconst isFakeIcon = (target) => {\n\treturn (\n\t\ttarget.tagName === 'svg' &&\n\t\ttarget.parentElement?.classList?.contains('html-icon')\n\t);\n};\n/**\n * Dispatches TOOLTIP_SHOW (from tooltip behavior) if the cell/cell-content has tooltip and is truncated\n * @param {*} dispatch\n * @param {*} event\n */\nexport const handleShowTooltip = (dispatch, { target }) => {\n\tif (!target) return;\n\tlet tooltip = target?.dataset.tooltip;\n\tif (!tooltip && isFakeIcon(target)) {\n\t\ttooltip = target.parentElement?.parentElement?.dataset?.tooltip;\n\t\tif (tooltip) {\n\t\t\tdispatch(TOOLTIP_SHOW, {\n\t\t\t\ttarget: target.parentElement?.parentElement,\n\t\t\t});\n\t\t}\n\t\treturn;\n\t}\n\tif (!tooltip) return;\n\t// in case of url the cell hover shows tooltip for content\n\tconst isCell = isCellElement(target);\n\tlet cellContentElement = null;\n\tif (isCell) {\n\t\tcellContentElement = getCellContentElement(target);\n\t}\n\tconst isCellContent = target.classList.contains(CELL_CONTENT_CLASS);\n\tif (isCellContent || isCell) {\n\t\t/**\n\t\t * for cell and cell content we check if it is overflowing (truncated)\n\t\t * for elements like icons in rowActionscell type we do not check\n\t\t */\n\t\tif (\n\t\t\tisOverflowing(cellContentElement || target) ||\n\t\t\ttarget.dataset.truncated\n\t\t) {\n\t\t\tdispatch(TOOLTIP_SHOW, { target });\n\t\t}\n\t} else {\n\t\t// for Icons like rowActionscell\n\t\tdispatch(TOOLTIP_SHOW, { target });\n\t}\n};\n\n/**\n * @param {*} dispatch\n * @param {*} event\n */\nexport const handleShowTooltipOnFocus = (dispatch, { target }) => {\n\tconst isCell = isCellElement(target);\n\tlet tooltip = target?.dataset.tooltip;\n\t// when cell is focused we show content tooltip if cell does not have one\n\tif (isCell && !tooltip) {\n\t\ttarget = getCellContentElement(target);\n\t\ttooltip = target?.dataset.tooltip;\n\t}\n\tif (!target || !tooltip) return;\n\thandleShowTooltip(dispatch, { target });\n};\n\n/**\n * @param {*} dispatch\n * @param {*} event\n */\nexport const handleRemoveTooltip = (dispatch, { target }) => {\n\tlet tooltip = target?.dataset.tooltip;\n\tif (!tooltip && isFakeIcon(target)) {\n\t\ttooltip = target.parentElement?.parentElement?.dataset?.tooltip;\n\t\tif (tooltip) {\n\t\t\ttarget = target.parentElement?.parentElement;\n\t\t}\n\t}\n\tif (isCellElement(target) && !tooltip) {\n\t\t// if tooltip is not present on cell then it is on cellContent\n\t\ttarget = getCellContentElement(target);\n\t}\n\tdispatch(TOOLTIP_HIDE, { target });\n};\n\n/**\n * checks if the text is truncated in an element,\n * if the text is overflowing as per the css it shows ellipsis when we have overflow:ellipsis\n * @param {HTMLElement} elem\n * @returns {boolean}\n */\nexport const isOverflowing = (elem) => {\n\tconst { offsetHeight, scrollHeight, offsetWidth, scrollWidth } = elem;\n\treturn offsetHeight < scrollHeight || offsetWidth < scrollWidth;\n};\n\n/**\n * Returns tooltip-related attributes as props.\n *\n * @param {string} text - The tooltip text.\n * @param {Function} dispatch - The event dispatch function.\n * @returns {Object} The props object.\n */\nexport function getTooltipProps(text, dispatch) {\n\treturn {\n\t\t'data-tooltip': text,\n\t\t'aria-label': text,\n\t\t...getTooltip(dispatch),\n\t};\n}\n","export const isMobile = () => {\n\tconst mobileRegex = /Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i;\n\treturn mobileRegex.test(navigator.userAgent);\n};\n","const FIELDS_WITH_ELLIPSIS = ['heading', 'tagline', 'metadata'];\n/**\n * Returns an inline style object with text overflow ellipsis styles if the flag is true.\n *\n * @param {string} fieldKey - field key represent the type of the gallery field.\n * @returns {Object} Inline style object.\n * TODO: Make field key util handle the layout Type\n * fieldKey is only available for Card View and we will be utilizing Layout values once we change to grid\n */\nexport const isGalleryFieldWithEllipsis = (fieldKey) => ({\n\t...(FIELDS_WITH_ELLIPSIS.indexOf(fieldKey) > -1 && {\n\t\twhiteSpace: 'nowrap',\n\t\toverflow: 'hidden',\n\t\ttextOverflow: 'ellipsis',\n\t\twidth: '100%',\n\t}),\n});\n","import {\n\tRECENTLY_UPDATED_ROWS_ICON_NAME,\n\tRECENTLY_UPDATED_ROWS_ICON_SIZE,\n} from '../table/tableBody/tableRow/rowCell/rowCellConstants';\n\nimport { getFakeNowIcon, iconIsCached } from './fakeNowIcon';\n\nexport const renderLiveListEyelashIcon = () => {\n\treturn (\n\t\t<div className=\"live-list-eyelash\">\n\t\t\t{iconIsCached(\n\t\t\t\tRECENTLY_UPDATED_ROWS_ICON_NAME,\n\t\t\t\tRECENTLY_UPDATED_ROWS_ICON_SIZE\n\t\t\t) ? (\n\t\t\t\tgetFakeNowIcon(\n\t\t\t\t\tRECENTLY_UPDATED_ROWS_ICON_NAME,\n\t\t\t\t\tRECENTLY_UPDATED_ROWS_ICON_SIZE\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<now-icon\n\t\t\t\t\ticon={RECENTLY_UPDATED_ROWS_ICON_NAME}\n\t\t\t\t\tsize={RECENTLY_UPDATED_ROWS_ICON_SIZE}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { t } from 'sn-translate';\n\nexport const EMPTY_DISPLAY_LABEL = t('None');\n\nexport const DEFAULT_VARIANT = 'tertiary';\nexport const DEFAULT_COLOR = 'positive';\n","import { dangerouslyCreateElementFromString } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport round from 'lodash/round';\nimport toString from 'lodash/toString';\nimport truncate from 'lodash/truncate';\n\nimport { KEY } from '../../../behaviors/keyboardNavBehavior/constants';\nimport { NOW_LIST_CELL_LINK_CLICKED } from '../../../behaviors/linkBehavior/constants';\nimport cellSelectors from '../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../utils/selectors/columnSelectors';\nimport { isGalleryFieldWithEllipsis } from '../../utils/truncationUtils';\nimport { renderLiveListEyelashIcon } from '../shared/cellIconContent';\n\nimport {\n\tDEFAULT_COLOR,\n\tDEFAULT_VARIANT,\n\tEMPTY_DISPLAY_LABEL,\n} from './fieldContentConstants';\nimport {\n\tNUMBER_FORMAT_LONG_INT,\n\tNUMBER_FORMAT_PERCENT,\n} from './number/constants';\n\nconst { getDisabled: getCellDisabled, getValue, getHref } = cellSelectors;\nconst {\n\tgetDecimalPlaces,\n\tgetDisabled: getColumnDisabled,\n\tgetNumberFormat,\n\tgetMaxCharacters,\n\tgetNumberLocale,\n\tgetNumberFormatter,\n\trenderAsLink,\n\tgetColumnKey,\n} = columnSelectors;\n\n/**\n * Checks whether the given value is undefined, null or empty string\n * @param {string | number | boolean | null} value\n */\nexport const isNonEmpty = (value) => {\n\treturn typeof value === 'string' ? value.trim() !== '' : value != null;\n};\n\n/**\n *\n * @param {PillType[]} values\n * @param {number} maxPillLimit\n * @returns string\n */\nexport const getHiddenPillsTooltip = (values, maxPillLimit) => {\n\tconst label = values\n\t\t.slice(maxPillLimit, values.length)\n\t\t.map((pill) => pill.label.trim())\n\t\t.join(', ');\n\treturn label;\n};\n\n/**\n * gets data props for tooltip, truncation based on maxCharacters\n * @param {string} tooltip\n * @param {boolean} isTruncated\n * @returns {*}\n */\nexport const getTooltipDataProps = (tooltip, isTruncated) => {\n\tif (!tooltip) return {};\n\treturn {\n\t\t'data-tooltip': tooltip,\n\t\t'data-truncated': isTruncated || undefined,\n\t};\n};\n\n/**\n * returns highlighted text matched with given pattern\n * @param {Array<string>} highlightedContentPatterns array of patterns to be highlighted\n * @param {string} displayValue a string representing cell's displayValue\n */\nexport const getHighlightedText = (\n\thighlightedContentPatterns,\n\tdisplayValue\n) => {\n\tconst patterns = highlightedContentPatterns.filter(\n\t\t(pattern) => pattern?.length\n\t);\n\tlet markedDisplayContent = displayValue;\n\n\tif (patterns.length === 0 || markedDisplayContent == null)\n\t\treturn { highlightedElement: markedDisplayContent };\n\n\tconst patternWords = patterns.sort((a, b) => b.length - a.length).join('|');\n\n\tconst escapedPatternWords = patternWords.replace(\n\t\t/[*+?^${}()[\\]\\\\]/g,\n\t\t'\\\\$&'\n\t);\n\n\tconst highlightRegex = new RegExp(escapedPatternWords, 'gi');\n\n\t/**\n\t * wraps the matched string in the mark tag\n\t *  @param {string} match\n\t */\n\tconst patternReplacer = (match) =>\n\t\t`<mark class=\"highlighted-content\">${match}</mark>`;\n\n\tmarkedDisplayContent = markedDisplayContent.replace(\n\t\thighlightRegex,\n\t\tpatternReplacer\n\t);\n\n\treturn {\n\t\thighlightedElement: dangerouslyCreateElementFromString(\n\t\t\t`<span data-truncationignoretabindex data-truncation>${markedDisplayContent}</span>`\n\t\t),\n\t};\n};\n\n/**\n * Renders the highlightedValue of the cell using now-highlighted-value\n *\n * @param {HighlightedValue} props representing the highlighted value config\n * @param {string} displayValue\n */\nexport const highlightedValueCell = (props, displayValue) => {\n\tconst { value, color, variant, showIcon, status, iconName } = props;\n\n\treturn value ? (\n\t\t<div className=\"cell-content\">\n\t\t\t<now-highlighted-value\n\t\t\t\tlabel={value}\n\t\t\t\tstatus={!color ? status : null}\n\t\t\t\tshowIcon={showIcon}\n\t\t\t\tvariant={variant ? variant : DEFAULT_VARIANT}\n\t\t\t\tcolor={color ? color : DEFAULT_COLOR}\n\t\t\t\tdata-tooltip={displayValue}\n\t\t\t\ticon={iconName}\n\t\t\t/>\n\t\t</div>\n\t) : null;\n};\n\n/**\n * Currently highlightedValues does not support link, so if we have both highlightedValue and renderAsLink true,\n * we will be rendering the link instead of highlightedValue\n * @param {ProcessedColumn} column an object representing this cell's parent column\n * @param {Boolean | undefined} isHighlightedValue representing the highlighted value config\n */\nexport const shouldRenderHighlightedValue = (column, isHighlightedValue) => {\n\treturn isHighlightedValue && !renderAsLink(column);\n};\n\n/**\n * returns boolean whether clickable text in the cell should be disabled or not.\n *\n * @param {boolean | undefined} clickableTextEnabled prop representing click is enabled or not.\n * @param {LinkCellType} cell an object representing this cell\n * @param {ProcessedColumn} column an object representing this cell's parent column\n * @returns {boolean}\n *\n */\nexport const getDisabled = (clickableTextEnabled, column, cell) => {\n\treturn (\n\t\t(renderAsLink(column) && !clickableTextEnabled) ||\n\t\t(getColumnDisabled(column)\n\t\t\t? getColumnDisabled(column)\n\t\t\t: getColumnDisabled(column) || getCellDisabled(cell))\n\t);\n};\n\n/**\n * Stringifies and formats the cell value\n *\n * @param {string} value object representing this cell\n * @param {ProcessedColumn} column an object representing this cell's parent column\n */\nexport const getFormatedNumberLabel = (value, column) => {\n\tvalue = round(value, getDecimalPlaces(column));\n\tlet label = toString(value);\n\tif (getNumberFormat(column) !== NUMBER_FORMAT_LONG_INT) {\n\t\tconst numberFormatter = getNumberFormatter(getNumberLocale(column));\n\t\tlabel = numberFormatter.format(value);\n\t}\n\tconst maxCharacters = getMaxCharacters(column);\n\tlet truncatedLabel = label;\n\tif (getNumberFormat(column) === NUMBER_FORMAT_PERCENT) {\n\t\ttruncatedLabel = truncate(label, { length: maxCharacters - 1 });\n\t\ttruncatedLabel += '%';\n\t} else {\n\t\ttruncatedLabel = truncate(label, { length: maxCharacters });\n\t}\n\treturn truncatedLabel;\n};\n\n/**\n * This subview renders the content of an actionable link cell\n *\n * @param {Object} props\n * @param {CellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {Row} props.row an object representing this cell's parent row\n * @param {string} [props.clickEventName]\n * @param {string} [props.fieldKey]\n * @param {*} dispatch seismic dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n * @param {Object} labelProps can be passed from other cell types when renderAsLink true\n * @param {string} labelProps.displayLabel\n * @param {string} labelProps.toolTipLabel\n * @param {boolean} labelProps.isTruncated\n * @param {string} labelProps.className\n */\nexport const getLinkCell = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon,\n\tlabelProps = {\n\t\tdisplayLabel: '',\n\t\ttoolTipLabel: '',\n\t\tisTruncated: false,\n\t\tclassName: '',\n\t}\n) => {\n\tconst { cell, column, clickableTextEnabled, row, fieldKey } = props;\n\tconst value = getValue(cell);\n\tconst href = getHref(cell);\n\tconst { displayLabel, toolTipLabel, isTruncated, className } = labelProps;\n\tconst isDisabled = getDisabled(clickableTextEnabled, column, cell);\n\tconst contentClassNames = classNames({\n\t\t'link-cell-content': true,\n\t\tdisabled: isDisabled,\n\t\t[className]: className ? true : false,\n\t});\n\tconst clickEventName = props.clickEventName || NOW_LIST_CELL_LINK_CLICKED;\n\treturn (\n\t\t<div\n\t\t\tclassName={contentClassNames}\n\t\t\tstyle={isGalleryFieldWithEllipsis(fieldKey || '')}\n\t\t>\n\t\t\t{shouldRenderRecentlyUpdatedIcon && renderLiveListEyelashIcon()}\n\t\t\t{isDisabled ? (\n\t\t\t\tdisplayLabel\n\t\t\t) : (\n\t\t\t\t<a\n\t\t\t\t\tclassName=\"link-cell-link\"\n\t\t\t\t\trole=\"link\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\taria-label={toolTipLabel || value}\n\t\t\t\t\thref={href}\n\t\t\t\t\ton-click={(/** @type {any} */ event) => {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tdispatch(clickEventName, {\n\t\t\t\t\t\t\tcell: cell,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\tcolumnKey: getColumnKey(column),\n\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t\ton-keypress={(/** @type {any} */ event) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent.key === KEY.ENTER ||\n\t\t\t\t\t\t\tevent.key === KEY.SPACEBAR ||\n\t\t\t\t\t\t\tevent.keyCode === KEY.KEY_CODE_ENTER\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tdispatch(clickEventName, {\n\t\t\t\t\t\t\t\tcell: cell,\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\t\tcolumnKey: getColumnKey(column),\n\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tdata-truncation\n\t\t\t\t\t{...getTooltipDataProps(toolTipLabel || value, isTruncated)}\n\t\t\t\t>\n\t\t\t\t\t{displayLabel}\n\t\t\t\t</a>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\n/**\n *\n * @param {Object} props\n * @param {CellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {Row} props.row an object representing this cell's parent row\n * @param {*} dispatch seismic dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n * @param {Object} labelProps can be passed from other cell types when renderAsLink true\n * @param {string} labelProps.displayLabel\n * @param {string} labelProps.toolTipLabel\n * @param {boolean} labelProps.isTruncated\n * @param {string} labelProps.className\n */\nexport const getLabelContent = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon,\n\tlabelProps = {\n\t\tdisplayLabel: '',\n\t\ttoolTipLabel: '',\n\t\tisTruncated: false,\n\t\tclassName: '',\n\t}\n) => {\n\tconst { column } = props;\n\tconst { toolTipLabel, isTruncated, className } = labelProps;\n\tlet displayLabel = labelProps.displayLabel;\n\tif (!displayLabel && renderAsLink(column)) {\n\t\tdisplayLabel = EMPTY_DISPLAY_LABEL;\n\t}\n\treturn renderAsLink(column)\n\t\t? getLinkCell(props, dispatch, shouldRenderRecentlyUpdatedIcon, {\n\t\t\t\tdisplayLabel,\n\t\t\t\ttoolTipLabel,\n\t\t\t\tisTruncated,\n\t\t\t\tclassName,\n\t\t  })\n\t\t: displayLabel;\n};\n","import cellSelectors from '../../../utils/selectors/cellSelectors';\nimport {\n\ticonIsCached,\n\tgetIconHeightWidth,\n\tgetFakeNowIcon,\n} from '../../shared/fakeNowIcon';\nimport { EMPTY_CELL_VALUE } from '../fieldConstants';\nimport {\n\tgetHighlightedText,\n\tgetLabelContent,\n\thighlightedValueCell,\n\tshouldRenderHighlightedValue,\n} from '../fieldUtil';\n\nimport {\n\tBOOLEAN_TRUE_ICON,\n\tBOOLEAN_FALSE_ICON,\n\tBOOLEAN_TRUE_STRING,\n\tBOOLEAN_FALSE_STRING,\n\tBOOLEAN_ICON_SIZE,\n} from './constants';\n\n/**\n * This subview renders the content of a boolean cell\n *\n * @param {Object} props\n * @param {BooleanCellType} props.cell an object representing this cell\n * @param {Array<string>} props.highlightedContent array of string patterns to be highlighted\n * @param {boolean | undefined} props.isHighlightedValue\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {*} dispatch\n * @param {*} shouldRenderRecentlyUpdatedIcon\n */\nexport const booleanView = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\tconst { cell, highlightedContent, isHighlightedValue, column } = props;\n\tconst value = cellSelectors.getValue(cell);\n\n\tlet iconName;\n\tlet stringBool = EMPTY_CELL_VALUE;\n\n\tif (value !== EMPTY_CELL_VALUE) {\n\t\ticonName = value ? BOOLEAN_TRUE_ICON : BOOLEAN_FALSE_ICON;\n\t\tstringBool = value ? BOOLEAN_TRUE_STRING : BOOLEAN_FALSE_STRING;\n\t}\n\n\tconst { highlightedElement: cellLabel } = getHighlightedText(\n\t\thighlightedContent,\n\t\tstringBool\n\t);\n\n\tif (shouldRenderHighlightedValue(column, isHighlightedValue))\n\t\treturn highlightedValueCell(\n\t\t\tcellSelectors.getHighlightedValue(cell),\n\t\t\tcellSelectors.getValue(cell)\n\t\t);\n\n\treturn (\n\t\t<div className=\"cell-content boolean-cell-content\" data-truncation>\n\t\t\t{iconName &&\n\t\t\t\t(iconIsCached(iconName, BOOLEAN_ICON_SIZE) ? (\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle={getIconHeightWidth(BOOLEAN_ICON_SIZE)}\n\t\t\t\t\t\tclassName=\"boolean-icon\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{getFakeNowIcon(iconName, BOOLEAN_ICON_SIZE)}\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\ticon={iconName}\n\t\t\t\t\t\tsize={BOOLEAN_ICON_SIZE}\n\t\t\t\t\t\tclassName=\"boolean-icon\"\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t{getLabelContent(\n\t\t\t\t// @ts-ignore\n\t\t\t\tprops,\n\t\t\t\tdispatch,\n\t\t\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t\t\t{\n\t\t\t\t\tdisplayLabel: cellLabel,\n\t\t\t\t\ttoolTipLabel: '',\n\t\t\t\t\tclassName: 'inline',\n\t\t\t\t}\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport {\n\tgetFormatedNumberLabel,\n\tgetHighlightedText,\n\tgetLabelContent,\n\tgetTooltipDataProps,\n\thighlightedValueCell,\n\tshouldRenderHighlightedValue,\n} from '../fieldUtil';\n\nimport { NUMBER_FORMAT_LONG_INT } from './constants';\n\nconst {\n\tgetNumberFormat,\n\tgetNumberLocale,\n\tgetNumberFormatter,\n} = columnSelectors;\n\n/**\n * This subview renders the content of a number cell\n *\n * @param {Object} props\n * @param {NumberCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {Array<string>} props.highlightedContent array of string patterns to be highlighted\n * @param {boolean | undefined} props.isHighlightedValue\n * @param {*} dispatch\n * @param {*} shouldRenderRecentlyUpdatedIcon\n */\nexport const numberView = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\tconst { cell, column } = props;\n\tlet value = cellSelectors.getValue(cell);\n\tconst isValuePresent = value != null && value !== '';\n\tif (isValuePresent && getNumberFormat(column) !== NUMBER_FORMAT_LONG_INT) {\n\t\tconst numberFormatter = getNumberFormatter(getNumberLocale(column));\n\t\tvalue = numberFormatter.format(cellSelectors.getValue(cell));\n\t}\n\tconst truncatedLabel = isValuePresent\n\t\t? getFormatedNumberLabel(cellSelectors.getValue(cell), column)\n\t\t: value;\n\tconst isTruncated = truncatedLabel !== value;\n\n\tconst { highlightedContent, isHighlightedValue } = props;\n\tconst { highlightedElement: cellLabel } = getHighlightedText(\n\t\thighlightedContent,\n\t\ttruncatedLabel\n\t);\n\tconst tooltip = (truncatedLabel?.endsWith('%') ? `${value}%` : value) ?? '';\n\n\tif (shouldRenderHighlightedValue(column, isHighlightedValue)) {\n\t\tconst highlightedValue = cellSelectors.getHighlightedValue(cell);\n\t\tif (highlightedValue.value) {\n\t\t\treturn (\n\t\t\t\t<div className=\"number-cell-content-highlighted\">\n\t\t\t\t\t{highlightedValueCell(highlightedValue, tooltip)}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t/* hardcoded the value of dir to ltr here to ensure that it will always keep the ellipsis on the right side even when dir=\"rtl\" is set on a higher element. */\n\t\t<div\n\t\t\tclassName=\"cell-content number-cell-content\"\n\t\t\tdir=\"ltr\"\n\t\t\tdata-truncation\n\t\t\t{...getTooltipDataProps(tooltip, isTruncated)}\n\t\t>\n\t\t\t{getLabelContent(\n\t\t\t\t// @ts-ignore\n\t\t\t\tprops,\n\t\t\t\tdispatch,\n\t\t\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t\t\t{\n\t\t\t\t\tdisplayLabel: cellLabel,\n\t\t\t\t\ttoolTipLabel: tooltip,\n\t\t\t\t\tisTruncated,\n\t\t\t\t}\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { t } from 'sn-translate';\n\nexport const EMPTY_DISPLAY_LABEL = t('None');\n","import { dangerouslyCreateElementFromString } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport get from 'lodash/get';\nimport round from 'lodash/round';\nimport toString from 'lodash/toString';\nimport truncate from 'lodash/truncate';\nimport { getSysPropContext } from 'sn-ux-core';\nimport '@servicenow/now-highlighted-value';\n\nimport { KEY } from '../../../../../../behaviors/keyboardNavBehavior/constants';\nimport { NOW_LIST_CELL_LINK_CLICKED } from '../../../../../../behaviors/linkBehavior/constants';\nimport cellSelectors from '../../../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../../../utils/selectors/columnSelectors';\nimport {\n\tNUMBER_FORMAT_LONG_INT,\n\tNUMBER_FORMAT_PERCENT,\n} from '../../../../fields/number/constants';\nimport { renderLiveListEyelashIcon } from '../../../../shared/cellIconContent';\n\nimport { EMPTY_DISPLAY_LABEL } from './cellContentConstants';\nimport { PRESERVE_WHITESPACE_SYS_PROP } from './rowCellConstants';\n\nconst { getDisabled: getCellDisabled, getValue, getHref } = cellSelectors;\n/**\n * gets data props for tooltip, truncation based on maxCharacters\n * @param {string} tooltip\n * @param {boolean} isTruncated\n * @returns {*}\n */\nexport const getTooltipDataProps = (tooltip, isTruncated) => {\n\tif (!tooltip) return {};\n\treturn {\n\t\t'data-tooltip': tooltip,\n\t\t'data-truncated': isTruncated || undefined,\n\t};\n};\n\nconst {\n\tgetDecimalPlaces,\n\tgetDisabled: getColumnDisabled,\n\tgetNumberFormat,\n\tgetMaxCharacters,\n\tgetNumberLocale,\n\tgetNumberFormatter,\n\trenderAsLink,\n\tgetColumnKey,\n} = columnSelectors;\n/**\n * returns highlighted text matched with given pattern\n * @param {Array<string>} highlightedContentPatterns array of patterns to be highlighted\n * @param {string} displayValue a string representing cell's displayValue\n */\nexport const getHighlightedText = (\n\thighlightedContentPatterns,\n\tdisplayValue\n) => {\n\tconst patterns = highlightedContentPatterns.filter(\n\t\t(pattern) => pattern?.length\n\t);\n\tlet markedDisplayContent = displayValue;\n\n\tif (patterns.length === 0 || markedDisplayContent == null)\n\t\treturn { highlightedElement: markedDisplayContent };\n\n\t// sorts the patterns array with longest string first\n\t// e.g Consider an example where the user has provided the patterns ['CHG', 'CHG000'] for highlighting.\n\t// In this case, the pattern 'CHG000' should be highlighted.\n\tconst patternWords = patterns\n\t\t.sort(\n\t\t\t(\n\t\t\t\t/** @type {string | any[]} */ a,\n\t\t\t\t/** @type {string | any[]} */ b\n\t\t\t) => b.length - a.length\n\t\t)\n\t\t.join('|');\n\n\t// patternWords string is first processed to escape any special characters\n\t//The resulting escaped pattern is then used to create the highLightRegex regular expression object\n\tconst escapedPatternWords = patternWords.replace(\n\t\t/[*+?^${}()[\\]\\\\]/g,\n\t\t'\\\\$&'\n\t);\n\n\t// create regular expression with given pattern\n\t// g stands for global search on the entire string\n\t// i stands for case insensitive search\n\tconst highlightRegex = new RegExp(escapedPatternWords, 'gi');\n\n\t/**\n\t * wraps the matched string in the mark tag\n\t *  @param {string} match\n\t */\n\tconst patternReplacer = (match) =>\n\t\t`<mark class=\"highlighted-content\">${match}</mark>`;\n\n\tmarkedDisplayContent = markedDisplayContent.replace(\n\t\thighlightRegex,\n\t\tpatternReplacer\n\t);\n\n\treturn {\n\t\thighlightedElement: dangerouslyCreateElementFromString(\n\t\t\t`<span data-truncationignoretabindex data-truncation>${markedDisplayContent}</span>`\n\t\t),\n\t};\n};\n\n/**\n * Renders the highlightedValue of the cell using now-highlighted-value\n *\n * @param {HighlightedValue} props representing the highlighted value config\n * @param {string} displayValue\n */\nexport const highlightedValueCell = (props, displayValue) => {\n\tconst { value, color, variant, showIcon, iconName } = props;\n\n\treturn (\n\t\t<div className=\"cell-content\">\n\t\t\t<now-highlighted-value\n\t\t\t\tlabel={value}\n\t\t\t\tshowIcon={showIcon}\n\t\t\t\tvariant={variant}\n\t\t\t\tcolor={color}\n\t\t\t\tdata-tooltip={displayValue}\n\t\t\t\ticon={iconName}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\n/**\n * Currently highlightedValues does not support link, so if we have both highlightedValue and renderAsLink true,\n * we will be rendering the link instead of highlightedValue\n * @param {ProcessedColumn} column an object representing this cell's parent column\n * @param {Boolean | undefined} isHighlightedValue representing the highlighted value config\n */\nexport const shouldRenderHighlightedValue = (column, isHighlightedValue) => {\n\treturn isHighlightedValue && !renderAsLink(column);\n};\n\n/**\n * returns boolean whether clickable text in the cell should be disabled or not.\n *\n * @param {boolean | undefined} clickableTextEnabled prop representing click is enabled or not.\n * @param {LinkCellType} cell an object representing this cell\n * @param {ProcessedColumn} column an object representing this cell's parent column\n * @param {String} value cell value\n * @returns {boolean}\n *\n */\nexport const getDisabled = (clickableTextEnabled, column, cell, value) => {\n\treturn (\n\t\t!(\n\t\t\trenderAsLink(column) ||\n\t\t\t(clickableTextEnabled && isNonEmpty(value))\n\t\t) ||\n\t\t(getColumnDisabled(column)\n\t\t\t? getColumnDisabled(column)\n\t\t\t: getColumnDisabled(column) || getCellDisabled(cell))\n\t);\n};\n\n/**\n * Stringifies and formats the cell value\n *\n * @param {string} value object representing this cell\n * @param {ProcessedColumn} column an object representing this cell's parent column\n */\nexport const getFormatedNumberLabel = (value, column) => {\n\tvalue = round(value, getDecimalPlaces(column));\n\tlet label = toString(value);\n\tif (getNumberFormat(column) !== NUMBER_FORMAT_LONG_INT) {\n\t\tconst numberFormatter = getNumberFormatter(getNumberLocale(column));\n\t\tlabel = numberFormatter.format(value);\n\t}\n\tconst maxCharacters = getMaxCharacters(column);\n\tlet truncatedLabel = label;\n\tif (getNumberFormat(column) === NUMBER_FORMAT_PERCENT) {\n\t\ttruncatedLabel = truncate(label, { length: maxCharacters - 1 });\n\t\ttruncatedLabel += '%';\n\t} else {\n\t\ttruncatedLabel = truncate(label, { length: maxCharacters });\n\t}\n\treturn truncatedLabel;\n};\n\n/**\n * This subview renders the content of an actionable link cell\n *\n * @param {Object} props\n * @param {CellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {Row} props.row an object representing this cell's parent row\n * @param {*} dispatch seismic dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n * @param {Object} labelProps can be passed from other cell types when renderAsLink true\n * @param {string} labelProps.displayLabel\n * @param {string} labelProps.toolTipLabel\n * @param {boolean} labelProps.isTruncated\n * @param {string} labelProps.className\n */\nexport const getLinkCell = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon,\n\tlabelProps = {\n\t\tdisplayLabel: '',\n\t\ttoolTipLabel: '',\n\t\tisTruncated: false,\n\t\tclassName: '',\n\t}\n) => {\n\tconst { cell, column, clickableTextEnabled, row } = props;\n\tconst value = getValue(cell);\n\tconst href = getHref(cell);\n\tconst { displayLabel, toolTipLabel, isTruncated, className } = labelProps;\n\tconst isDisabled = getDisabled(clickableTextEnabled, column, cell, value);\n\tconst contentClassNames = classNames({\n\t\t'link-cell-content': true,\n\t\tdisabled: isDisabled,\n\t\t[className]: className ? true : false,\n\t});\n\n\treturn (\n\t\t<div className={contentClassNames}>\n\t\t\t{shouldRenderRecentlyUpdatedIcon && renderLiveListEyelashIcon()}\n\t\t\t{isDisabled ? (\n\t\t\t\tdisplayLabel\n\t\t\t) : (\n\t\t\t\t// Changed to anchor tag due to text-wrapping issues with button\n\t\t\t\t<a\n\t\t\t\t\tclassName=\"link-cell-link\"\n\t\t\t\t\trole=\"link\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\taria-label={toolTipLabel || value}\n\t\t\t\t\thref={href}\n\t\t\t\t\ton-click={(/** @type {any} */ event) => {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tdispatch(NOW_LIST_CELL_LINK_CLICKED, {\n\t\t\t\t\t\t\tcell: cell,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\tcolumnKey: getColumnKey(column),\n\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t\ton-keypress={(/** @type {any} */ event) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent.key === KEY.ENTER ||\n\t\t\t\t\t\t\tevent.key === KEY.SPACEBAR ||\n\t\t\t\t\t\t\tevent.keyCode === KEY.KEY_CODE_ENTER\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tdispatch(NOW_LIST_CELL_LINK_CLICKED, {\n\t\t\t\t\t\t\t\tcell: cell,\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\t\tcolumnKey: getColumnKey(column),\n\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\t{...getTooltipDataProps(toolTipLabel || value, isTruncated)}\n\t\t\t\t>\n\t\t\t\t\t{displayLabel}\n\t\t\t\t</a>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\n/**\n *\n * @param {Object} props\n * @param {CellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {Row} props.row an object representing this cell's parent row\n * @param {*} dispatch seismic dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n * @param {Object} labelProps can be passed from other cell types when renderAsLink true\n * @param {string} labelProps.displayLabel\n * @param {string} labelProps.toolTipLabel\n * @param {boolean} labelProps.isTruncated\n * @param {string} labelProps.className\n */\nexport const getLabelContent = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon,\n\tlabelProps = {\n\t\tdisplayLabel: '',\n\t\ttoolTipLabel: '',\n\t\tisTruncated: false,\n\t\tclassName: '',\n\t}\n) => {\n\tconst { column } = props;\n\tconst { toolTipLabel, isTruncated, className } = labelProps;\n\tlet displayLabel = labelProps.displayLabel;\n\tif (!displayLabel && renderAsLink(column)) {\n\t\tdisplayLabel = EMPTY_DISPLAY_LABEL;\n\t}\n\treturn renderAsLink(column)\n\t\t? getLinkCell(\n\t\t\t\t// @ts-ignore\n\t\t\t\tprops,\n\t\t\t\tdispatch,\n\t\t\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t\t\t{\n\t\t\t\t\tdisplayLabel,\n\t\t\t\t\ttoolTipLabel,\n\t\t\t\t\tisTruncated,\n\t\t\t\t\tclassName,\n\t\t\t\t}\n\t\t  )\n\t\t: displayLabel;\n};\n\n/**\n * Checks whether the given value is undefined, null or empty string\n * @param {string | number | boolean | null} value\n */\nconst isNonEmpty = (value) => {\n\treturn typeof value === 'string' ? value.trim() !== '' : value != null;\n};\n\n/**\n *\n * @param {PillType[]} values\n * @param {number} maxPillLimit\n * @returns string\n */\nexport const getHiddenPillsTooltip = (values, maxPillLimit) => {\n\tconst label = values\n\t\t.slice(maxPillLimit, values.length)\n\t\t.map((pill) => pill.label.trim())\n\t\t.join(', ');\n\treturn label;\n};\n\n/**\n * Check if glide.lists.preserve_whitespace in sys_property is true\n * @param {object} context\n * @returns {boolean} True if glide.lists.preserve_whitespace is true\n */\nexport const isWhitespaceEnabledInSysProp = (context) => {\n\tconst preserveWhitespaceSysPropKey = getSysPropContext(\n\t\tPRESERVE_WHITESPACE_SYS_PROP\n\t);\n\treturn get(context, preserveWhitespaceSysPropKey, 'false') == 'true';\n};\n","import classNames from 'classnames';\nimport truncate from 'lodash/truncate';\n\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport { isGalleryFieldWithEllipsis } from '../../../utils/truncationUtils';\nimport { isWhitespaceEnabledInSysProp } from '../../table/tableBody/tableRow/rowCell/cellContentUtils';\nimport { WHITESPACE_STRING_CLASS } from '../../table/tableConstants';\nimport {\n\tgetHighlightedText,\n\tgetLabelContent,\n\tgetTooltipDataProps,\n\thighlightedValueCell,\n\tshouldRenderHighlightedValue,\n} from '../fieldUtil';\nconst { getMaxCharacters } = columnSelectors;\nconst { getValue } = cellSelectors;\n/**\n * This subview renders the content of a string cell\n *\n * @param {Object} props\n * @param {StringCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {Array<string>} props.highlightedContent array of string patterns to be highlighted\n * @param {boolean | undefined} props.isHighlightedValue\n * @param {object} props.contextApi\n * @param {string} [props.fieldKey]\n * @param {*} dispatch\n * @param {*} shouldRenderRecentlyUpdatedIcon\n */\nexport const stringView = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\tconst {\n\t\tcell,\n\t\tcolumn,\n\t\thighlightedContent,\n\t\tisHighlightedValue,\n\t\tcontextApi,\n\t\tfieldKey,\n\t} = props;\n\tconst value = getValue(cell);\n\tconst truncatedLabel = truncate(value, {\n\t\tlength: getMaxCharacters(column),\n\t});\n\tconst isTruncated = truncatedLabel !== value;\n\tconst { highlightedElement: cellLabel } = getHighlightedText(\n\t\thighlightedContent,\n\t\ttruncatedLabel\n\t);\n\n\tif (shouldRenderHighlightedValue(column, isHighlightedValue)) {\n\t\treturn highlightedValueCell(\n\t\t\tcellSelectors.getHighlightedValue(cell),\n\t\t\tcellSelectors.getValue(cell)\n\t\t);\n\t}\n\n\tconst stringCellContentClassNames = classNames(\n\t\t'cell-content',\n\t\t'string-cell-content',\n\t\t{\n\t\t\t[WHITESPACE_STRING_CLASS]: isWhitespaceEnabledInSysProp(contextApi),\n\t\t}\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tdata-truncation\n\t\t\tclassName={stringCellContentClassNames}\n\t\t\t{...getTooltipDataProps(value, isTruncated)}\n\t\t\tstyle={isGalleryFieldWithEllipsis(fieldKey || '')}\n\t\t>\n\t\t\t{getLabelContent(\n\t\t\t\t// @ts-ignore\n\t\t\t\tprops,\n\t\t\t\tdispatch,\n\t\t\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t\t\t{\n\t\t\t\t\tdisplayLabel: cellLabel,\n\t\t\t\t\ttoolTipLabel: value,\n\t\t\t\t\tisTruncated,\n\t\t\t\t}\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import classNames from 'classnames';\nimport { SnTimeAgo } from 'sn-component-timeago';\n\nimport { TIME_AGO_DISPLAY_AS_MAIN_VALUE } from '../fields/dateTime/constants';\nimport { highlightedValueCell } from '../table/tableBody/tableRow/rowCell/cellContentUtils';\n\nconst timeAgoOptions = {\n\ttimeAgo: true,\n\tdateBoth: false,\n\tsystemTime: false,\n\tdateOnly: false,\n\tverbose: false,\n};\n\n/**\n * @param {*} state\n */\nexport default function view(state) {\n\tconst {\n\t\tproperties: { timeAgoDisplay, value, highlightedValueData },\n\t} = state;\n\n\tconst timeAgo = new SnTimeAgo(\n\t\t{ timestampLong: value * 1000 },\n\t\tvalue * 1000,\n\t\ttimeAgoOptions\n\t);\n\tconst time = timeAgo.getTickTime().time;\n\n\tconst spanClassName = classNames('time-ago-display', {\n\t\t'-main-value': timeAgoDisplay !== TIME_AGO_DISPLAY_AS_MAIN_VALUE,\n\t});\n\n\tif (highlightedValueData) {\n\t\thighlightedValueData.value = time;\n\t\treturn highlightedValueCell(highlightedValueData, value);\n\t}\n\n\treturn (\n\t\t<span className={spanClassName} data-truncation>\n\t\t\t{time}\n\t\t</span>\n\t);\n}\n","import tooltipBehavior from '@servicenow/behavior-tooltip';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport { createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\n\nimport view from './timeAgoDisplay';\nimport styles from './timeAgoDisplay.scss';\n\ncreateCustomElement('time-ago-display', {\n\tview,\n\trenderer: { type: snabbdom },\n\tstyles,\n\tproperties: {\n\t\tvalue: {\n\t\t\tdefault: 0,\n\t\t\tschema: { type: 'number' },\n\t\t},\n\t\ttimeAgoDisplay: {\n\t\t\tdefault: '',\n\t\t},\n\t\thighlightedValueData: {\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tbehaviors: [tooltipBehavior, truncationBehavior],\n});\n","import '../../timeAgoDisplay';\n\nimport { Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport fromUnixTime from 'date-fns/fromUnixTime';\nimport get from 'lodash/get';\nimport truncate from 'lodash/truncate';\nimport { getUserPrefContext } from 'sn-ux-core';\n\nimport { createElementObservationProps } from '../../../../behaviors/intersectionObserverBehavior/intersectionObserverBehavior';\nimport { isShortDateFormat } from '../../../utils/dateTimeUtils';\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport { isGalleryFieldWithEllipsis } from '../../../utils/truncationUtils';\nimport {\n\tgetHighlightedText,\n\tgetLabelContent,\n\tgetTooltipDataProps,\n\thighlightedValueCell,\n} from '../fieldUtil';\n\nimport {\n\tSHORT_DATE_TIME_FORMAT,\n\tTIME_AGO_DISPLAY_AS_MAIN_VALUE,\n\tTIME_AGO_DISPLAY_UNDER_MAIN_VALUE,\n} from './constants';\n\nconst {\n\tgetDateTimeFormat,\n\tgetTimeZone,\n\tgetTimeAgoDisplay,\n\tgetMaxCharacters,\n\tsetShortDateFormat,\n\trenderAsLink,\n} = columnSelectors;\n\nconst shortDateFormatPrefKey = getUserPrefContext(SHORT_DATE_TIME_FORMAT);\n/**\n * Stringifies and formats the cell value\n * returns formatted value(for tooltip if truncated), truncated value (max characters) and isTruncated for tooltip\n *\n * @param {Object} props\n * @param {DateTimeCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {Array<string>} props.highlightedContent array of string patterns to be highlighted\n * @param {object} props.contextApi\n * @param {*} dispatch\n */\nexport const getDateLabelDetails = (props, dispatch) => {\n\tconst { cell, column, highlightedContent, contextApi } = props;\n\tconst timeAgoClassNames = classNames({\n\t\t'render-as-link': renderAsLink(column),\n\t});\n\tvar dateTimeFormat = getDateTimeFormat(column);\n\tlet timeZone = getTimeZone(column);\n\tconst timeAgoDisplay = getTimeAgoDisplay(column, contextApi);\n\n\tlet isTruncated = false;\n\tlet label = undefined;\n\tconst value = cellSelectors.getValue(cell);\n\tlet formattedDateValue = '';\n\tif (!value) return { formattedDateValue, label, isTruncated };\n\tconst highlightedValueData = cellSelectors.getHighlightedValue(cell);\n\n\t// FIXME: could be facing issue when local and User Pref timezones are different\n\tconst dateObject = fromUnixTime(value);\n\n\tconst shortDateFormatPrefValue =\n\t\tget(contextApi, shortDateFormatPrefKey, 'false') === 'true';\n\n\tif (shortDateFormatPrefValue) {\n\t\tdateTimeFormat = setShortDateFormat(dateObject, dateTimeFormat);\n\t}\n\n\ttimeZone = isShortDateFormat(dateTimeFormat) ? 'UTC' : timeZone;\n\tformattedDateValue = formatInTimeZone(dateObject, timeZone, dateTimeFormat);\n\n\tconst truncatedLabel = truncate(formattedDateValue, {\n\t\tlength: getMaxCharacters(column),\n\t});\n\tisTruncated = truncatedLabel !== formattedDateValue;\n\n\tconst { highlightedElement } = getHighlightedText(\n\t\thighlightedContent,\n\t\ttruncatedLabel\n\t);\n\tlabel = highlightedElement;\n\tswitch (timeAgoDisplay) {\n\t\tcase TIME_AGO_DISPLAY_AS_MAIN_VALUE:\n\t\t\t{\n\t\t\t\tlabel = (\n\t\t\t\t\t<time-ago-display\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tclassName={timeAgoClassNames}\n\t\t\t\t\t\thighlightedValueData={highlightedValueData}\n\t\t\t\t\t\t{...createElementObservationProps(\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t'time-ago-display'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\ttimeAgoDisplay={TIME_AGO_DISPLAY_AS_MAIN_VALUE}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t\t// time ago is not truncated\n\t\t\t\tisTruncated = false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase TIME_AGO_DISPLAY_UNDER_MAIN_VALUE:\n\t\t\t{\n\t\t\t\tlabel = (\n\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t{highlightedValueData &&\n\t\t\t\t\t\tObject.keys(highlightedValueData).length > 0\n\t\t\t\t\t\t\t? highlightedValueCell(\n\t\t\t\t\t\t\t\t\thighlightedValueData,\n\t\t\t\t\t\t\t\t\ttruncatedLabel\n\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t: truncatedLabel}\n\t\t\t\t\t\t<time-ago-display\n\t\t\t\t\t\t\tclassName={timeAgoClassNames}\n\t\t\t\t\t\t\t{...createElementObservationProps(\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t'time-ago-display'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t{\n\t\t\t\tlabel =\n\t\t\t\t\thighlightedValueData &&\n\t\t\t\t\tObject.keys(highlightedValueData).length > 0 ? (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t{highlightedValueCell(\n\t\t\t\t\t\t\t\thighlightedValueData,\n\t\t\t\t\t\t\t\ttruncatedLabel\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tlabel\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn { formattedDateValue, label, isTruncated };\n};\n\n/**\n * This subview renders the content of a date/time cell\n *\n * @param {Object} props\n * @param {DateTimeCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {Array<string>} props.highlightedContent array of string patterns to be highlighted\n * @param {object} props.contextApi\n * @param {string} [props.fieldKey]\n\n * @param {*} dispatch\n * @param {*} shouldRenderRecentlyUpdatedIcon\n */\nexport const dateTimeView = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\tconst { formattedDateValue, label, isTruncated } = getDateLabelDetails(\n\t\tprops,\n\t\tdispatch\n\t);\n\treturn (\n\t\t<div\n\t\t\tclassName=\"cell-content date-time-cell-content\"\n\t\t\t{...getTooltipDataProps(formattedDateValue, isTruncated)}\n\t\t\tstyle={isGalleryFieldWithEllipsis(props.fieldKey || '')}\n\t\t>\n\t\t\t{getLabelContent(\n\t\t\t\t// @ts-ignore\n\t\t\t\tprops,\n\t\t\t\tdispatch,\n\t\t\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t\t\t{\n\t\t\t\t\tdisplayLabel: label,\n\t\t\t\t\ttoolTipLabel: formattedDateValue,\n\t\t\t\t\tisTruncated,\n\t\t\t\t}\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import truncate from 'lodash/truncate';\n\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport {\n\tgetHighlightedText,\n\tshouldRenderHighlightedValue,\n\thighlightedValueCell,\n\tgetTooltipDataProps,\n\tgetLabelContent,\n} from '../fieldUtil';\n\nimport { CURRENCY_VALUE_DEFAULT } from './currencyConstants';\n\nconst { getCurrency, getCurrencyLocale, getMaxCharacters } = columnSelectors;\n\n/**\n * Stringifies and formats the cell value\n *\n * @param {Object} props\n * @param {CurrencyCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n *\n * @returns {string} a string representing the formatted value with a language-sensitive representation and currency symbol.\n */\nexport const getDisplayValue = (props) => {\n\tconst { cell, column } = props;\n\tconst locale = getCurrencyLocale(column);\n\tconst currency = getCurrency(column);\n\tconst value = cellSelectors.getValue(cell)\n\t\t? cellSelectors.getValue(cell)\n\t\t: CURRENCY_VALUE_DEFAULT;\n\n\treturn value.toLocaleString(locale, {\n\t\tstyle: 'currency',\n\t\tcurrency: currency,\n\t});\n};\n\n/**\n * This subview renders the content of a currency cell\n *\n * @param {Object} props\n * @param {CurrencyCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {Array<string>} props.highlightedContent array of string patterns to be highlighted\n * @param {boolean | undefined} props.isHighlightedValue\n * @param {boolean | undefined} props.isHighlightedValue\n * @param {*} dispatch\n * @param {*} shouldRenderRecentlyUpdatedIcon\n */\nexport const currencyView = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\tconst { cell, highlightedContent, column, isHighlightedValue } = props;\n\tconst maxCharacters = getMaxCharacters(column);\n\tconst displayValue = getDisplayValue(props);\n\tconst truncatedLabel = truncate(displayValue, { length: maxCharacters });\n\tconst isTruncated = truncatedLabel !== displayValue;\n\tconst { highlightedElement: cellLabel } = getHighlightedText(\n\t\thighlightedContent,\n\t\ttruncatedLabel\n\t);\n\n\tif (shouldRenderHighlightedValue(column, isHighlightedValue)) {\n\t\tconst highlightedValue = cellSelectors.getHighlightedValue(cell);\n\t\treturn (\n\t\t\t<div className=\"currency-cell-content-highlighted\">\n\t\t\t\t{highlightedValueCell(highlightedValue, truncatedLabel)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"cell-content currency-cell-content\"\n\t\t\tdata-truncation\n\t\t\t{...getTooltipDataProps(displayValue, isTruncated)}\n\t\t>\n\t\t\t{getLabelContent(\n\t\t\t\t// @ts-ignore\n\t\t\t\tprops,\n\t\t\t\tdispatch,\n\t\t\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t\t\t{\n\t\t\t\t\tdisplayLabel: cellLabel,\n\t\t\t\t\ttoolTipLabel: displayValue,\n\t\t\t\t\tisTruncated,\n\t\t\t\t}\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { t } from 'sn-translate';\n\nimport { createElementObservationProps } from '../../../../behaviors/intersectionObserverBehavior/intersectionObserverBehavior';\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport { getLabelContent } from '../fieldUtil';\n\nimport { ICON_CELL_ICON_SIZE } from './iconConstants';\n\nconst { getValue, getColor } = cellSelectors;\nconst { renderAsLink } = columnSelectors;\n\n/**\n * This subView renders the content of an icon cell\n *\n * @param {Object} props\n * @param {IconCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {*} dispatch seismic dispatch\n * @param {*} shouldRenderRecentlyUpdatedIcon\n */\nexport const iconView = (props, dispatch, shouldRenderRecentlyUpdatedIcon) => {\n\tconst { cell, column } = props;\n\tconst iconName = getValue(cell);\n\tconst renderIcon = () => {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\ticon={iconName}\n\t\t\t\tsize={ICON_CELL_ICON_SIZE}\n\t\t\t\ttabindex={renderAsLink(column) ? 0 : undefined}\n\t\t\t\tclassName={renderAsLink(column) ? 'icon-link' : getColor(cell)}\n\t\t\t\t{...createElementObservationProps(dispatch, 'icon-cell-type')}\n\t\t\t/>\n\t\t);\n\t};\n\tconst toolTipLabel = t('{0}', iconName?.replaceAll('-', ' '));\n\treturn (\n\t\t<div\n\t\t\tclassName=\"cell-content icon-cell-content\"\n\t\t\tdata-truncation\n\t\t\taria-label={toolTipLabel}\n\t\t\trole=\"img\"\n\t\t>\n\t\t\t{iconName &&\n\t\t\t\tgetLabelContent(\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tprops,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayLabel: renderIcon(),\n\t\t\t\t\t\ttoolTipLabel: toolTipLabel,\n\t\t\t\t\t\tisTruncated: false,\n\t\t\t\t\t}\n\t\t\t\t)}\n\t\t</div>\n\t);\n};\n","import classNames from 'classnames';\nimport truncate from 'lodash/truncate';\n\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport { EMPTY_DISPLAY_LABEL } from '../fieldContentConstants';\nimport { getHighlightedText, getLinkCell } from '../fieldUtil';\n\nconst { getMaxCharacters, renderAsLink } = columnSelectors;\nconst { getLabel, getValue } = cellSelectors;\n/**\n * This subview renders the content of an actionable link cell\n *\n * @param {Object} props\n * @param {CellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {Row} props.row an object representing this cell's parent row\n * @param {string} [props.clickEventName] an object representing this cell's parent row\n * @param {string} [props.fieldKey]\n * @param {*} dispatch seismic dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n * @param {Object} labelProps can be passed from other cell types when renderAsLink true\n * @param {string} labelProps.displayLabel\n * @param {string} labelProps.toolTipLabel\n * @param {boolean} labelProps.isTruncated\n * @param {string} labelProps.className\n */\nexport const linkView = (props, dispatch, shouldRenderRecentlyUpdatedIcon) => {\n\tconst { cell, column, highlightedContent, clickEventName } = props;\n\tconst value = getValue(cell);\n\tconst label = getLabel(cell);\n\tconst isRenderAsLink = renderAsLink(column);\n\tif (!value && !label && !isRenderAsLink) {\n\t\tconst contentClassNames = classNames({\n\t\t\t'cell-content': true,\n\t\t\t'link-cell-content': true,\n\t\t});\n\t\treturn <div className={contentClassNames} />;\n\t}\n\n\tconst truncatedLabel = truncate(label, {\n\t\tlength: getMaxCharacters(column),\n\t});\n\tconst cellLabel = getHighlightedText(highlightedContent, truncatedLabel)\n\t\t.highlightedElement;\n\n\tconst labelProps = {\n\t\tdisplayLabel: cellLabel || EMPTY_DISPLAY_LABEL,\n\t\ttoolTipLabel: value,\n\t\tisTruncated: true,\n\t\tclassName: 'cell-content',\n\t\tclickEventName,\n\t};\n\n\treturn getLinkCell(\n\t\tprops,\n\t\tdispatch,\n\t\tshouldRenderRecentlyUpdatedIcon,\n\t\tlabelProps\n\t);\n};\n","import { Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport truncate from 'lodash/truncate';\n\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport {\n\ticonIsCached,\n\tgetIconHeightWidth,\n\tgetFakeNowIcon,\n} from '../../shared/fakeNowIcon';\nimport { getDisabled, highlightedValueCell } from '../fieldUtil';\n\nimport { URL_ICON, URL_ICON_SIZE } from './urlConstants';\n\nconst {\n\tOPENS_IN_CURRENT_TAB_TOOLTIP,\n\tOPENS_IN_NEW_TOOLTIP,\n} = require('./urlTranslatedConstants');\n\nconst { getValue, getLabel } = cellSelectors;\nconst { getOpensInNew, getMaxCharacters } = columnSelectors;\n\n/**\n * This subview renders the content of a URL cell\n *\n * @param {Object} props\n * @param {LinkCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {boolean | undefined} props.isHighlightedValue\n */\nexport const urlView = (props) => {\n\tconst { cell, column, clickableTextEnabled, isHighlightedValue } = props;\n\n\tconst value = getValue(cell);\n\tconst label = getLabel(cell);\n\tconst truncatedLabel = truncate(label, {\n\t\tlength: getMaxCharacters(column),\n\t});\n\tconst target = getOpensInNew(column) ? '_blank' : '_self';\n\tconst isDisabled = getDisabled(clickableTextEnabled, column, cell);\n\tconst tooltipContent =\n\t\ttarget === '_blank'\n\t\t\t? OPENS_IN_NEW_TOOLTIP\n\t\t\t: OPENS_IN_CURRENT_TAB_TOOLTIP;\n\tconst contentClassNames = classNames({\n\t\t'cell-content': true,\n\t\t'url-cell-content': true,\n\t\t'highlighted-value': isHighlightedValue && !isDisabled,\n\t\tdisabled: isDisabled,\n\t});\n\tconst highlightedValueData = cellSelectors.getHighlightedValue(cell);\n\tlet renderedLabel = truncatedLabel;\n\n\tif (isHighlightedValue) {\n\t\trenderedLabel = highlightedValueCell(\n\t\t\thighlightedValueData,\n\t\t\ttruncatedLabel\n\t\t);\n\t}\n\n\tif (!label && !value) return <div className={contentClassNames} />;\n\n\treturn (\n\t\t<div className={contentClassNames}>\n\t\t\t{isDisabled ? (\n\t\t\t\trenderedLabel\n\t\t\t) : (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={value}\n\t\t\t\t\t\ttarget={target}\n\t\t\t\t\t\trel=\"noopener\"\n\t\t\t\t\t\tclassName=\"url-cell-link\"\n\t\t\t\t\t\tdata-tooltip={tooltipContent}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"url-cell-link-label\" data-truncation>\n\t\t\t\t\t\t\t{renderedLabel}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{iconIsCached(URL_ICON, URL_ICON_SIZE) ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"url-icon\"\n\t\t\t\t\t\t\t\tstyle={getIconHeightWidth(URL_ICON_SIZE)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{getFakeNowIcon(URL_ICON, URL_ICON_SIZE)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<now-icon\n\t\t\t\t\t\t\t\ticon={URL_ICON}\n\t\t\t\t\t\t\t\tsize={URL_ICON_SIZE}\n\t\t\t\t\t\t\t\tclassName={'url-icon'}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</a>\n\t\t\t\t</Fragment>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import truncate from 'lodash/truncate';\n\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport { isGalleryFieldWithEllipsis } from '../../../utils/truncationUtils';\nimport {\n\tshouldRenderHighlightedValue,\n\thighlightedValueCell,\n\tgetTooltipDataProps,\n\tgetLabelContent,\n} from '../fieldUtil';\n\nconst { getValue, getLabel } = cellSelectors;\n/**\n * This subview renders the content of a choice cell\n *\n * @param {Object} props\n * @param {ChoiceCellType} props.cell an object representing this choice cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} props.isHighlightedValue\n * @param {string} [props.fieldKey]\n * @param {*} dispatch\n * @param {*} shouldRenderRecentlyUpdatedIcon\n */\nexport const choiceView = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\tconst { cell, column, isHighlightedValue, fieldKey } = props;\n\tconst choiceKey = getValue(cell);\n\tconst choiceLabel = getLabel(cell);\n\tconst displayValue =\n\t\tchoiceKey && !choiceLabel\n\t\t\t? columnSelectors.getChoiceLabelFromKey(choiceKey, column)\n\t\t\t: choiceLabel;\n\tconst truncatedLabel = truncate(displayValue, {\n\t\tlength: columnSelectors.getMaxCharacters(column),\n\t});\n\tconst tooltipLabel = displayValue ?? '';\n\tconst isTruncated = truncatedLabel !== displayValue;\n\n\tif (shouldRenderHighlightedValue(column, isHighlightedValue))\n\t\treturn highlightedValueCell(\n\t\t\tcellSelectors.getHighlightedValue(cell),\n\t\t\tcellSelectors.getValue(cell)\n\t\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"cell-content choice-cell-content\"\n\t\t\t{...getTooltipDataProps(tooltipLabel, isTruncated)}\n\t\t\tstyle={isGalleryFieldWithEllipsis(fieldKey || '')}\n\t\t>\n\t\t\t{getLabelContent(\n\t\t\t\t// @ts-ignore\n\t\t\t\tprops,\n\t\t\t\tdispatch,\n\t\t\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t\t\t{\n\t\t\t\t\tdisplayLabel: truncatedLabel,\n\t\t\t\t\ttoolTipLabel: tooltipLabel,\n\t\t\t\t\tisTruncated,\n\t\t\t\t}\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import DOMPurify from 'dompurify';\n\nimport '@servicenow/now-rich-text';\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport { highlightedValueCell } from '../fieldUtil';\n\nconst { renderAsLink } = columnSelectors;\nconst { getValue } = cellSelectors;\n\n/**\n * Configuration object for DOMPurify library\n */\nexport const domPurifyConfig = {\n\tFORCE_BODY: true, // makes sure that <style> tags aren't stripped\n\tKEEP_CONTENT: false, // remove content from non-allow-listed nodes too\n\tCUSTOM_ELEMENT_HANDLING: {\n\t\ttagNameCheck: /(^now-)|(^sn-)/, // allows now-* and sn-* custom elements to be used\n\t\tattributeNameCheck: () => {\n\t\t\t// allows any custom properties / attributes to be set on now-* and sn-* tags\n\t\t\treturn true;\n\t\t},\n\t},\n\tALLOWED_TAGS: [\n\t\t'h1',\n\t\t'h2',\n\t\t'h3',\n\t\t'h4',\n\t\t'h5',\n\t\t'h6',\n\t\t'br',\n\t\t'p',\n\t\t'strong',\n\t\t'em',\n\t\t'ol',\n\t\t'ul',\n\t\t'li',\n\t\t'#text',\n\t\t'span',\n\t\t'a',\n\t\t'div',\n\t],\n\tALLOWED_ATTR: ['style', 'target', 'href'],\n\tFORBID_ATTR: ['method', 'action'],\n};\n\n/**\n * This subview renders the content of a string cell\n *\n * @param {Object} props\n * @param {StringCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} props.isHighlightedValue\n */\nexport const htmlView = (props) => {\n\tconst { cell, column, isHighlightedValue } = props;\n\tconst value = getValue(cell);\n\tconst sanitizedHtml = DOMPurify.sanitize(value, domPurifyConfig);\n\t// Add space to <li> and <br> for better readability in tooltip\n\tDOMPurify.addHook('beforeSanitizeElements', (node) => {\n\t\tif (\n\t\t\tnode.nodeName &&\n\t\t\t(node.nodeName === 'LI' || node.nodeName === 'BR')\n\t\t) {\n\t\t\tnode.textContent =\n\t\t\t\tnode.textContent === null ? ' ' : node.textContent.concat(' ');\n\t\t}\n\t});\n\n\tconst plainTextValueExtraSpaces = DOMPurify.sanitize(value, {\n\t\tALLOWED_TAGS: ['#text'],\n\t});\n\tDOMPurify.removeHook('beforeSanitizeElements');\n\tconst plainTextValue = plainTextValueExtraSpaces.replace(/&nbsp;/gm, ' ');\n\n\tif (isHighlightedValue && !renderAsLink(column))\n\t\treturn highlightedValueCell(\n\t\t\tcellSelectors.getHighlightedValue(cell),\n\t\t\tcellSelectors.getValue(cell)\n\t\t);\n\n\tconst placeholderText =\n\t\t'<em>Preview content not available. Inline edit or open the record to view full content</em>';\n\n\treturn (\n\t\t<div className=\"cell-content html-cell-content\">\n\t\t\t<now-rich-text\n\t\t\t\tclassName=\"html-rich-text-content\"\n\t\t\t\thtml={\n\t\t\t\t\tsanitizedHtml === '' && value !== '' && value !== null\n\t\t\t\t\t\t? placeholderText\n\t\t\t\t\t\t: sanitizedHtml\n\t\t\t\t}\n\t\t\t\taria-label={plainTextValue}\n\t\t\t></now-rich-text>\n\t\t</div>\n\t);\n};\n","import classNames from 'classnames';\nimport { t } from 'sn-translate';\n\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport { getFormatedNumberLabel, getLabelContent } from '../fieldUtil';\n\nconst { getThresholdColors } = columnSelectors;\n\n/**\n * Parses the thresholdColors string into an array of threshold-color objects.\n * @param {string} [colors]\n * @returns {Array<{ threshold: number, color: string }> | null}\n */\nexport const parseThresholdColors = (colors) => {\n\tif (!colors) return [{ threshold: 0, color: '' }];\n\ttry {\n\t\treturn colors.split(';').map((item) => {\n\t\t\tconst [threshold, color] = item.trim().split(':');\n\t\t\treturn {\n\t\t\t\tthreshold: parseFloat(threshold.trim()),\n\t\t\t\tcolor: color.trim(),\n\t\t\t};\n\t\t});\n\t} catch (error) {\n\t\t// console.warn('Threshold colors string is not valid')\n\t\treturn null;\n\t}\n};\n\n/**\n * Gets the color for a given value based on the parsed threshold colors.\n * @param {string} value\n * @param {any} targetFieldValue\n * @param {Array<{ threshold: number, color: string }>} parsedColors\n * @returns {string}\n */\nexport const getColor = (value, targetFieldValue, parsedColors) => {\n\tlet percentOfTarget = parseFloat(value);\n\tconst targetFieldValueNumber = parseFloat(targetFieldValue);\n\tif (targetFieldValueNumber)\n\t\tpercentOfTarget = (percentOfTarget / targetFieldValueNumber) * 100;\n\tfor (let i = parsedColors.length - 1; i >= 0; i--) {\n\t\tif (percentOfTarget >= parsedColors[i].threshold) {\n\t\t\treturn parsedColors[i].color;\n\t\t}\n\t}\n\treturn parsedColors[0].color;\n};\n\n/**\n * Gets the bar width from value\n * @param {string} value\n * @returns {string}\n */\nexport const getPercentBarWidth = (value) => {\n\tif (!value) {\n\t\tvalue = '0';\n\t}\n\tconst numberValue = parseFloat(value);\n\tconst barWidth =\n\t\tnumberValue >= 0 ? `${Math.min(100, numberValue)}%` : '100%';\n\treturn barWidth;\n};\n\n/**\n * A progress bar component that displays the value and target value with color thresholds.\n * @param {Object} props\n * @param {PercentCompleteCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {*} dispatch seismic dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n */\nexport const renderPercentComplete = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\tconst { cell, column } = props;\n\tconst thresholdColors = getThresholdColors(column);\n\tconst value = cellSelectors.getValue(cell);\n\n\tconst targetFieldValue = cell?.targetFieldValue;\n\tconst parsedColors = parseThresholdColors(thresholdColors);\n\tconst targetBarWidth = targetFieldValue\n\t\t? getPercentBarWidth(targetFieldValue)\n\t\t: null;\n\tconst actualBarWidth = getPercentBarWidth(value);\n\tconst isNegativeValue = value && parseFloat(value) < 0;\n\tconst isNegativeTargetValue =\n\t\ttargetFieldValue && parseFloat(targetFieldValue) < 0;\n\tconst valueColor =\n\t\tthresholdColors && parsedColors && !isNegativeValue\n\t\t\t? getColor(value, targetFieldValue, parsedColors)\n\t\t\t: undefined;\n\n\tconst percentCompleteBarTargetClassNames = classNames({\n\t\t'percent-complete-bar': true,\n\t\t'percent-complete-bar-target': true,\n\t\t'percent-complete-negative-value': isNegativeTargetValue,\n\t});\n\tconst percentCompleteBarActualClassNames = classNames({\n\t\t'percent-complete-bar': true,\n\t\t'percent-complete-bar-actual': true,\n\t\t'percent-complete-negative-value': isNegativeValue,\n\t});\n\tconst valueLabel = value\n\t\t? `${getFormatedNumberLabel(value, column)}%`\n\t\t: '0%';\n\tconst targetFieldValueLabel =\n\t\ttargetFieldValue &&\n\t\t`${getFormatedNumberLabel(targetFieldValue, column)}%`;\n\tconst showCurrent = value != null && value !== '';\n\tconst showTarget = showCurrent && targetFieldValue;\n\n\treturn (\n\t\t<div className=\"percent-complete-wrapper\">\n\t\t\t<div className=\"percent-complete-bar-container\">\n\t\t\t\t{showTarget ? (\n\t\t\t\t\t<div\n\t\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\t\taria-valuenow={targetFieldValue}\n\t\t\t\t\t\taria-label={t('Target')}\n\t\t\t\t\t\tdata-tooltip={t('Target')}\n\t\t\t\t\t\tclassName={percentCompleteBarTargetClassNames}\n\t\t\t\t\t\tstyle={{ width: targetBarWidth }}\n\t\t\t\t\t></div>\n\t\t\t\t) : null}\n\t\t\t\t{showCurrent ? (\n\t\t\t\t\t<div\n\t\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\t\taria-valuenow={value}\n\t\t\t\t\t\taria-label={t('Current')}\n\t\t\t\t\t\tdata-tooltip={t('Current')}\n\t\t\t\t\t\tclassName={percentCompleteBarActualClassNames}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\twidth: actualBarWidth,\n\t\t\t\t\t\t\tbackgroundColor: valueColor,\n\t\t\t\t\t\t}}\n\t\t\t\t\t></div>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t<div className=\"percent-complete-text-container\">\n\t\t\t\t{showTarget ? (\n\t\t\t\t\t<div className=\"percent-complete-text percent-complete-text-target\">\n\t\t\t\t\t\t{targetFieldValueLabel}\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t\t{showCurrent ? (\n\t\t\t\t\t<div className=\"percent-complete-text percent-complete-text-current\">\n\t\t\t\t\t\t{getLabelContent(\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tprops,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayLabel: valueLabel,\n\t\t\t\t\t\t\t\ttoolTipLabel: valueLabel,\n\t\t\t\t\t\t\t\tisTruncated: true,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * This subview renders the content of a percentcomplete cell\n *\n * @param {Object} props\n * @param {PercentCompleteCellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {*} dispatch seismic dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n */\nexport const percentCompleteView = (\n\tprops,\n\tdispatch,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\treturn (\n\t\t<div className=\"cell-content percent-complete-cell-content\">\n\t\t\t{renderPercentComplete(\n\t\t\t\tprops,\n\t\t\t\tdispatch,\n\t\t\t\tshouldRenderRecentlyUpdatedIcon\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { SN_LIST_GALLERY_PERSON_CLICKED } from '../../../../now-list-gallery/constants/actionConstants';\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport {\n\tgetDisabled,\n\tgetHighlightedText,\n\thighlightedValueCell,\n} from '../fieldUtil';\n\nimport {\n\tPERSON_DISPLAY_TYPE_AVATAR,\n\tPERSON_DISPLAY_TYPE_BOTH,\n\tPERSON_DISPLAY_TYPE_NAME,\n} from './constants';\n\nconst { getImageSrc, getPersonKey, getValue, getHref } = cellSelectors;\nconst { getColumnKey, getDisplay } = columnSelectors;\n\n/**\n * This subview renders the content of an person cell based on the state of isDisabled\n *\n * @param {String} name the name of the user in person cell\n * @param {Boolean} isDisabled a boolean representing the clickability of the cell\n * @param {String | undefined} personKey a unique optional key set by the user of person cell\n * @param {Array<string>} highlightedContent array of patterns to be highlighted\n * @param {HighlightedValue | null} highlightedValueData\n * @param {String | undefined} href a string representing the link to the record\n *\n */\nconst renderPersonText = (\n\tname,\n\tisDisabled,\n\tpersonKey,\n\thighlightedContent,\n\thighlightedValueData,\n\thref\n) => {\n\tconst textClassNames = classNames({\n\t\tdisabled: isDisabled,\n\t\t'person-cell-text': true,\n\t});\n\tconst buttonClassNames = classNames({\n\t\t'person-cell-link': true,\n\t\t'highlighted-value': highlightedValueData,\n\t});\n\tconst { highlightedElement: cellLabel } = getHighlightedText(\n\t\thighlightedContent,\n\t\tname\n\t);\n\n\tconst renderedLabel =\n\t\thighlightedValueData && Object.keys(highlightedValueData).length > 0\n\t\t\t? highlightedValueCell(highlightedValueData, name)\n\t\t\t: cellLabel;\n\n\tif (!isDisabled) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\tclassName={buttonClassNames}\n\t\t\t\tkey={personKey}\n\t\t\t\trole=\"link\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\taria-label={name}\n\t\t\t\thref={href}\n\t\t\t\ton-click={(/** @type {any} */ event) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{renderedLabel}\n\t\t\t</a>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<span className={textClassNames} data-truncation>\n\t\t\t\t\t{renderedLabel}\n\t\t\t\t</span>\n\t\t\t</Fragment>\n\t\t);\n\t}\n};\n\n/**\n * This subview renders the content of an person cell\n *\n * @param {Object} props\n * @param {PersonCellType} props.cell an object representing this person cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} [props.clickableTextEnabled]\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {Row} props.row an object representing this cell's parent row\n * @param {string} props.iconSize additional props to be passed to the PersonView\n * @param {*} dispatch seismic dispatch,\n */\nexport const personView = (props, dispatch) => {\n\tconst {\n\t\tcell,\n\t\tcolumn,\n\t\tclickableTextEnabled,\n\t\thighlightedContent,\n\t\trow,\n\t\ticonSize,\n\t} = props;\n\tconst name = getValue(cell);\n\tconst personKey = getPersonKey(cell);\n\tconst imageSrc = getImageSrc(cell);\n\tconst display = getDisplay(column);\n\tconst isDisabled = getDisabled(clickableTextEnabled, column, cell);\n\tconst href = getHref(cell);\n\n\tconst isNameEmpty = isEmpty(name);\n\n\tconst shouldDisplayAvatar =\n\t\t(display === PERSON_DISPLAY_TYPE_AVATAR ||\n\t\t\tdisplay === PERSON_DISPLAY_TYPE_BOTH) &&\n\t\t!isNameEmpty;\n\n\tconst shouldDisplayName =\n\t\t(display === PERSON_DISPLAY_TYPE_NAME ||\n\t\t\tdisplay === PERSON_DISPLAY_TYPE_BOTH) &&\n\t\t!isNameEmpty;\n\n\tconst contentClassNames = classNames({\n\t\t'cell-content': true,\n\t\t'person-cell-content': true,\n\t\tdisabled: isDisabled,\n\t});\n\tconst highlightedValueData = cellSelectors.getHighlightedValue(cell);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={contentClassNames}\n\t\t\ton-click={(/** @type {any} */ event) => {\n\t\t\t\tconst targetClassList = event.target.classList;\n\t\t\t\tif (\n\t\t\t\t\t!isDisabled &&\n\t\t\t\t\ttargetClassList &&\n\t\t\t\t\t(targetClassList.contains('person-cell-avatar') ||\n\t\t\t\t\t\ttargetClassList.contains('person-cell-link'))\n\t\t\t\t) {\n\t\t\t\t\tdispatch(SN_LIST_GALLERY_PERSON_CLICKED, {\n\t\t\t\t\t\tcell,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\tcolumnKey: getColumnKey(column),\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t{shouldDisplayAvatar ? (\n\t\t\t\t<now-avatar\n\t\t\t\t\tclassName=\"person-cell-avatar\"\n\t\t\t\t\tsize={iconSize}\n\t\t\t\t\tuserName={name}\n\t\t\t\t\timageSrc={imageSrc}\n\t\t\t\t\tkey={personKey}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{shouldDisplayName\n\t\t\t\t? renderPersonText(\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tisDisabled,\n\t\t\t\t\t\tpersonKey,\n\t\t\t\t\t\thighlightedContent,\n\t\t\t\t\t\thighlightedValueData,\n\t\t\t\t\t\thref\n\t\t\t\t  )\n\t\t\t\t: null}\n\t\t</div>\n\t);\n};\n","import '@servicenow/now-pill';\nimport {\n\tTOOLTIP_ADD_TARGET,\n\tTOOLTIP_REMOVE_TARGET,\n} from '@servicenow/behavior-tooltip';\nimport { createRef, Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport { t } from 'sn-translate';\n\nimport { createElementObservationProps } from '../../../../behaviors/intersectionObserverBehavior/intersectionObserverBehavior';\nimport cellSelectors from '../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport { getHiddenPillsTooltip } from '../fieldUtil';\n\nimport { DEFAULT_PILL_SIZE } from './constants';\n\nconst { getValue } = cellSelectors;\nconst { getMaxPillLimit, getColumnLabel } = columnSelectors;\n\n/**\n * @param {Now.Dispatch} dispatch seismic dispatch\n * @param {PillType[]} values\n * @param {number} maxPillLimit\n * @param {string} columnLabel\n */\nfunction hiddenPillsMessage(dispatch, values, maxPillLimit, columnLabel) {\n\tconst hiddenPillsCount = values.length - maxPillLimit;\n\tconst hiddenPillsTooltip = getHiddenPillsTooltip(values, maxPillLimit);\n\tconst hiddenPillsDescription = ` ${t(\n\t\t'hidden {0}:',\n\t\tcolumnLabel\n\t)} ${hiddenPillsTooltip}`;\n\tconst idSuffix = values.map((pill) => pill.key.toString().trim()).join('-');\n\tconst descriptionElementId = `pills-sr-text-${idSuffix}`;\n\tconst hiddenPillsMessage =\n\t\tvalues.length > maxPillLimit ? (\n\t\t\t<span\n\t\t\t\tclassName=\"hidden-pills-message\"\n\t\t\t\tdata-tooltip={hiddenPillsTooltip}\n\t\t\t\taria-describedby={descriptionElementId}\n\t\t\t\ttabindex=\"0\" // make the span tabbable\n\t\t\t\thook-insert={({ elm }) => {\n\t\t\t\t\tdispatch(TOOLTIP_ADD_TARGET, { target: elm });\n\t\t\t\t}}\n\t\t\t\thook-destroy={({ elm }) => {\n\t\t\t\t\tdispatch(TOOLTIP_REMOVE_TARGET, { target: elm });\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{`+${hiddenPillsCount}`}\n\t\t\t\t<span id={descriptionElementId} className=\"sr-only\">\n\t\t\t\t\t{hiddenPillsDescription}\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t) : (\n\t\t\t''\n\t\t);\n\treturn hiddenPillsMessage;\n}\n\n/**\n * Adds cell size and canDismiss property onto every pill in the props\n *\n * @param {Object} props\n * @param {PillType[]} props.pills\n * @param {string} props.rowKey\n * @param {Now.Dispatch} props.dispatch seismic dispatch\n * @param {'sm' | 'xs'} [props.pillSize] default: `sm`\n * @return An array of pill components.\n */\nconst renderPills = (props) => {\n\tconst { dispatch, pills, pillSize = DEFAULT_PILL_SIZE, rowKey } = props;\n\n\tconst pillRef = createRef();\n\n\tconst renderedPills = pills.map((pill) => (\n\t\t<now-pill\n\t\t\tkey={pill.key}\n\t\t\tref={pillRef}\n\t\t\tlabel={pill.label}\n\t\t\tsize={pillSize}\n\t\t\tcanDismiss={false}\n\t\t\tclassName=\"pill-cell-pill\"\n\t\t\tselected=\"false\"\n\t\t\tmanageSelected=\"false\"\n\t\t\tappend-to-payload={{\n\t\t\t\tpillKey: pill.key,\n\t\t\t\trowKey,\n\t\t\t\tpills,\n\t\t\t\tpillRef,\n\t\t\t}}\n\t\t\t{...createElementObservationProps(dispatch, 'pill-cell-type')}\n\t\t/>\n\t));\n\n\treturn <Fragment>{renderedPills}</Fragment>;\n};\n\n/**\n * This subview renders the content of a pill cell.\n * Returns pills and an optional hidden pills message.\n *\n * @param {Object} params\n * @param {Object} params.props\n * @param {PillsCellType} params.props.cell an object representing this cell\n * @param {string} params.props.rowKey\n * @param {ProcessedColumn} params.props.column an object representing this cell's parent column\n * @param {Now.Dispatch} params.dispatch seismic dispatch\n * @param {'sm' | 'xs'} [params.pillSize] default: `sm`\n * @param {number} [params.maxPillLimit] show pills up to this specified limit\n */\nexport const pillsView = ({\n\tprops,\n\tdispatch,\n\tpillSize = DEFAULT_PILL_SIZE,\n\tmaxPillLimit,\n}) => {\n\tconst { cell, column } = props;\n\tconst values = getValue(cell);\n\tconst newMaxPillLimit =\n\t\tmaxPillLimit === undefined ? getMaxPillLimit(column) : maxPillLimit;\n\tconst columnLabel = getColumnLabel(column);\n\tconst newPills = values.slice(0, newMaxPillLimit);\n\tconst pillList = renderPills({\n\t\t...props,\n\t\tpills: newPills,\n\t\tdispatch,\n\t\tpillSize,\n\t});\n\tconst pillsCellClassNames = classNames({\n\t\t'cell-content': true,\n\t\t'pills-cell-content': true,\n\t\t// Used to increase width of cell container if hidden count is not shown. Default: `false`.\n\t\t'is-hidden-count-shown': Array.isArray(cell.value)\n\t\t\t? cell.value.length > newMaxPillLimit\n\t\t\t: false,\n\t});\n\t// Setting aria-label for upto newMaxPillLimit number of pills, and \"Press Enter for more pills\" for more pills\n\t// todo this aria-label might be redundant as it might not be captured by screen readers\n\tlet pillsAriaLabel = newPills\n\t\t.map((/** @type {{ label: string; }} */ pillValue) => pillValue.label)\n\t\t.join(', ');\n\tpillsAriaLabel +=\n\t\tvalues.length > newMaxPillLimit ? '. Press Enter for more pills' : '';\n\treturn (\n\t\t<div className=\"pill-container\">\n\t\t\t<div\n\t\t\t\tclassName={pillsCellClassNames}\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={t('{0}', pillsAriaLabel)}\n\t\t\t>\n\t\t\t\t{pillList}\n\t\t\t\t{hiddenPillsMessage(\n\t\t\t\t\tdispatch,\n\t\t\t\t\tvalues,\n\t\t\t\t\tnewMaxPillLimit,\n\t\t\t\t\tcolumnLabel\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import {\n\tcustomComponentType,\n\trenderCustomComponentDisplay,\n} from '../../../utils/customLoader';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nconst {\n\tgetColumnComponentTag,\n\tgetColumnDefaultComponentProperties,\n\tgetCellContentDimensions,\n\tgetColumnPlaceholderDimensions,\n} = columnSelectors;\n\n/**\n * This subview renders the content of a custom component cell\n *\n * @param {Object} props\n * @param {CustomCellType} props.cell an object representing this custom components cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {TableMetadata} props.tableMetadata an object representing the metadata for the table\n * @param {string} props.dir a string value that represents the language direction\n * @param {Now.Dispatch} dispatch seismic dispatch\n */\nexport const customComponent = (props, dispatch) => {\n\tconst { cell, column, tableMetadata, dir } = props;\n\tconst { componentProps } = cell;\n\tconst componentTag = getColumnComponentTag(column);\n\tconst defaultComponentProps = getColumnDefaultComponentProperties(column);\n\tconst properties = { ...defaultComponentProps, ...componentProps };\n\tconst { height: cellHeight, width: cellWidth } = getCellContentDimensions(\n\t\tcolumn\n\t);\n\tconst cellContentStyle = {\n\t\t...(cellHeight && { height: cellHeight }),\n\t\t...(cellWidth && { width: cellWidth }),\n\t};\n\tconst { height, width } = getColumnPlaceholderDimensions(column);\n\tconst placeholderContentStyle = {\n\t\t...(height && { height }),\n\t\t...(width && { width }),\n\t};\n\n\treturn renderCustomComponentDisplay(\n\t\tcustomComponentType.CELL,\n\t\ttableMetadata,\n\t\tcomponentTag,\n\t\tproperties,\n\t\tdir,\n\t\tcellContentStyle,\n\t\tplaceholderContentStyle,\n\t\tdispatch\n\t);\n};\n","import classNames from 'classnames';\nimport set from 'lodash/set';\n\nimport cellSelectors from '../../shared/utils/selectors/cellSelectors';\nimport {\n\tbooleanView,\n\tchoiceView,\n\tdateTimeView,\n\ticonView,\n\tnumberView,\n\tstringView,\n\turlView,\n\tlinkView,\n\tpersonView,\n\tpercentCompleteView,\n\tcurrencyView,\n} from '../../shared/views/fields';\nimport { customComponent } from '../../shared/views/fields/customComponent/customComponent';\nimport { PERSON_FIELD_ICON_SIZE } from '../../shared/views/fields/person/constants';\nimport {\n\tMAX_PILL_COUNT_FOR_GALLERY,\n\tXS_PILL_SIZE,\n} from '../../shared/views/fields/pills/constants';\nimport { pillsView } from '../../shared/views/fields/pills/pills';\nimport {\n\tTYPE_BOOLEAN,\n\tTYPE_CHOICE,\n\tTYPE_DATE_TIME,\n\tTYPE_ICON,\n\tTYPE_PERCENT_COMPLETE,\n\tTYPE_LINK,\n\tTYPE_NUMBER,\n\tTYPE_PERSON,\n\tTYPE_URL,\n\tTYPE_CURRENCY,\n\tTYPE_PILLS,\n\tTYPE_CUSTOM,\n} from '../../typeSchemas/columnDefinitions/columnTypes/columnTypes';\nimport { SN_LIST_GALLERY_CELL_LINK_CLICKED } from '../constants/actionConstants';\n\nimport { CLASSNAMES } from './layoutConstants';\n\nconst { hasHighlightedValue } = cellSelectors;\n\n/**\n * This galleryCardField renders the field valid with label\n *\n * @param {FieldRendererProps} fieldProps\n */\nexport const galleryCardField = (fieldProps) => {\n\tconst { column, options, showMoreWhenTruncated } = fieldProps;\n\tconst { showLabel = true } = options || {};\n\tconst fieldContentClasses = classNames({\n\t\t[CLASSNAMES.SN_LIST_GALLERY_FIELD_VALUE]: true,\n\t\t[`field-${column ? column.type : 'type-unset'}`]: true,\n\t});\n\n\treturn (\n\t\t<div key={column?.key} className={CLASSNAMES.SN_LIST_GALLERY_FIELD}>\n\t\t\t{showLabel && (\n\t\t\t\t<label\n\t\t\t\t\tdata-truncation\n\t\t\t\t\tclassName={CLASSNAMES.SN_LIST_GALLERY_FIELD_LABEL}\n\t\t\t\t>\n\t\t\t\t\t{column?.label}\n\t\t\t\t</label>\n\t\t\t)}\n\t\t\t<div className={fieldContentClasses}>\n\t\t\t\t{showMoreWhenTruncated ? (\n\t\t\t\t\t<sn-truncated-text-more text={fieldProps.cell.value} />\n\t\t\t\t) : (\n\t\t\t\t\tgalleryCardFieldValue(fieldProps)\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * This galleryCardFieldValue renders value based on field type\n *\n * @param {FieldRendererProps} fieldProps\n */\nexport const galleryCardFieldValue = (fieldProps) => {\n\tconst {\n\t\tcell,\n\t\tcolumn,\n\t\tclickableTextEnabled,\n\t\thighlightedContent,\n\t\tcontextApi,\n\t\tdispatch,\n\t\trow,\n\t\trowKey,\n\t\tfetchedComponents,\n\t\tdir,\n\t\tfieldKey,\n\t} = fieldProps;\n\tconst type = column?.type;\n\tconst isHighlightedValue = hasHighlightedValue(cell);\n\tset(cell, 'type', type);\n\n\tconst dataFieldProps = {\n\t\tcell,\n\t\tcolumn,\n\t\tclickableTextEnabled,\n\t\thighlightedContent,\n\t\tcontextApi,\n\t\tisHighlightedValue,\n\t\trow,\n\t\trowKey,\n\t\tfieldKey,\n\t\tclickEventName: SN_LIST_GALLERY_CELL_LINK_CLICKED,\n\t};\n\tconst customComponentProps = {\n\t\ttableMetadata: { fetchedComponents },\n\t\tdir,\n\t\t...dataFieldProps,\n\t};\n\n\tswitch (column?.type) {\n\t\tcase TYPE_NUMBER:\n\t\t\treturn numberView(dataFieldProps, dispatch, false);\n\t\tcase TYPE_DATE_TIME:\n\t\t\treturn dateTimeView(dataFieldProps, dispatch, false);\n\t\tcase TYPE_BOOLEAN:\n\t\t\treturn booleanView(dataFieldProps, dispatch, false);\n\t\tcase TYPE_CHOICE:\n\t\t\treturn choiceView(dataFieldProps, dispatch, false);\n\t\tcase TYPE_CURRENCY:\n\t\t\treturn currencyView(dataFieldProps, dispatch, false);\n\t\tcase TYPE_ICON:\n\t\t\treturn iconView(dataFieldProps, dispatch, false);\n\t\tcase TYPE_PERCENT_COMPLETE:\n\t\t\treturn percentCompleteView(dataFieldProps, dispatch, false);\n\t\tcase TYPE_URL:\n\t\t\treturn urlView(dataFieldProps);\n\t\tcase TYPE_LINK:\n\t\t\treturn linkView(dataFieldProps, dispatch, false);\n\t\tcase TYPE_PERSON:\n\t\t\t// TODO: Handle recent updates prop for person view when making changes for now-list-grid\n\t\t\treturn personView(\n\t\t\t\t{\n\t\t\t\t\t...dataFieldProps,\n\t\t\t\t\ticonSize: PERSON_FIELD_ICON_SIZE,\n\t\t\t\t},\n\t\t\t\tdispatch\n\t\t\t);\n\t\tcase TYPE_PILLS:\n\t\t\treturn pillsView({\n\t\t\t\tprops: dataFieldProps,\n\t\t\t\tdispatch,\n\t\t\t\t// fixme: could be done in a better way if support is provided by @servicenow/now-pill\n\t\t\t\t// to automatically show count depending on space available\n\t\t\t\tmaxPillLimit: MAX_PILL_COUNT_FOR_GALLERY,\n\t\t\t\t// https://www.figma.com/design/NpuDKqJ3qbhqaErd919gAQ/List%3A-Gallery-layout?node-id=9747-238075&t=qBFQC76Y7MlaZcIw-4\n\t\t\t\tpillSize: XS_PILL_SIZE,\n\t\t\t});\n\t\tcase TYPE_CUSTOM:\n\t\t\treturn customComponent(customComponentProps, dispatch);\n\t\tdefault:\n\t\t\treturn stringView(\n\t\t\t\t{ ...dataFieldProps, isHighlightedValue },\n\t\t\t\tdispatch,\n\t\t\t\tfalse\n\t\t\t);\n\t}\n};\n","import { t } from 'sn-translate';\n\nexport const SN_TRUNCATED_TEXT_SHOW_MORE = 'SN_TRUNCATED_TEXT_MORE#SHOW_MORE';\nexport const SN_TRUNCATED_TEXT_SHOW_TOOLTIP =\n\t'SN_TRUNCATED_TEXT_MORE#SHOW_TOOLTIP';\n\nexport const MORE_BUTTON_LABEL = t('More');\n","import {\n\tMORE_BUTTON_LABEL,\n\tSN_TRUNCATED_TEXT_SHOW_MORE,\n\tSN_TRUNCATED_TEXT_SHOW_TOOLTIP,\n} from './constants';\n\n/**\n * @param {*} state\n * @param {*} coeffects\n */\nexport default function view(state, coeffects) {\n\tconst {\n\t\tproperties: { text },\n\t\tshowMore,\n\t} = state;\n\tconst { dispatch } = coeffects;\n\treturn (\n\t\t<div className={'gallery-card-field-body-text-container'}>\n\t\t\t<div\n\t\t\t\tclassName=\"gallery-card-field-body-text\"\n\t\t\t\tdata-tooltip={text}\n\t\t\t\tdata-tooltipposition={['bottom-center', 'top-center']}\n\t\t\t\thook-insert={(node) =>\n\t\t\t\t\tdispatch(SN_TRUNCATED_TEXT_SHOW_MORE, { node })\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{text}\n\t\t\t</div>\n\t\t\t{showMore ? (\n\t\t\t\t<now-button-bare\n\t\t\t\t\thideBlockPadding\n\t\t\t\t\tsize={'sm'}\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t'aria-label': MORE_BUTTON_LABEL,\n\t\t\t\t\t}}\n\t\t\t\t\ton-click={(\n\t\t\t\t\t\t/** @type {{ currentTarget: any; type: any; }} */ e\n\t\t\t\t\t) =>\n\t\t\t\t\t\tdispatch(SN_TRUNCATED_TEXT_SHOW_TOOLTIP, {\n\t\t\t\t\t\t\tcurrentTarget: e.currentTarget,\n\t\t\t\t\t\t\ttype: e.type,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\ton-focusout={(\n\t\t\t\t\t\t/** @type {{ currentTarget: any; type: any; }} */ e\n\t\t\t\t\t) =>\n\t\t\t\t\t\tdispatch(SN_TRUNCATED_TEXT_SHOW_TOOLTIP, {\n\t\t\t\t\t\t\tcurrentTarget: e.currentTarget,\n\t\t\t\t\t\t\ttype: e.type,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tlabel={MORE_BUTTON_LABEL}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</div>\n\t);\n}\n","import tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport { createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\n\nimport { isOverflowing } from '../../../shared/utils/tooltipUtil';\n\nimport {\n\tSN_TRUNCATED_TEXT_SHOW_MORE,\n\tSN_TRUNCATED_TEXT_SHOW_TOOLTIP,\n} from './constants';\nimport styles from './styles.scss';\nimport view from './view';\n\ncreateCustomElement('sn-truncated-text-more', {\n\tview,\n\trenderer: { type: snabbdom },\n\tstyles,\n\tsetInitialState: () => ({\n\t\tshowMore: false,\n\t\ttooltipOpen: false,\n\t}),\n\tproperties: {\n\t\ttext: {\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tbehaviors: [tooltipBehavior, truncationBehavior],\n\tactionHandlers: {\n\t\t[SN_TRUNCATED_TEXT_SHOW_MORE]: (coeffects) => {\n\t\t\tconst { action, updateState } = coeffects;\n\t\t\tconst { node } = action.payload;\n\t\t\tconst element = node.elm;\n\t\t\tif (isOverflowing(element)) {\n\t\t\t\tupdateState({\n\t\t\t\t\tshowMore: true,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[SN_TRUNCATED_TEXT_SHOW_TOOLTIP]: (coeffects) => {\n\t\t\tconst { dispatch, updateState, state, action } = coeffects;\n\t\t\tconst { currentTarget, type } = action.payload;\n\t\t\tlet showTooltip = false;\n\t\t\t// when user clicks on More, if tooltip is already open we need to hide it\n\t\t\tif (type === 'click' && state.tooltipOpen) {\n\t\t\t\tcurrentTarget.blur();\n\t\t\t}\n\t\t\tif (!state.tooltipOpen && type !== 'focusout') {\n\t\t\t\tshowTooltip = true;\n\t\t\t}\n\t\t\tconst textElement = currentTarget.parentElement.querySelector(\n\t\t\t\t'.gallery-card-field-body-text'\n\t\t\t);\n\t\t\tupdateState({\n\t\t\t\ttooltipOpen: showTooltip ? true : false,\n\t\t\t});\n\t\t\treturn dispatch(showTooltip ? TOOLTIP_SHOW : TOOLTIP_HIDE, {\n\t\t\t\ttarget: textElement,\n\t\t\t});\n\t\t},\n\t},\n});\n","import { isMobile } from '../../shared/utils/mobileUtils';\n\nimport { galleryCardField } from './galleryCardField';\nimport { CLASSNAMES } from './layoutConstants';\nimport './truncatedTextMore/index';\n\n/**\n * galleryCardHeader to render the Card Header with title and card actions\n * @param {Object} fieldProps;\n * @param {Record<string, any>} fieldProps.cardFieldData;\n * @param {Row} fieldProps.cardItem;\n * @param {Now.Dispatch} fieldProps.dispatch;\n * @param {RowActions | undefined} fieldProps.actions;\n * @param {{ contextApi?: any,[key: string]: any;  }} fieldProps.context;\n */\nconst galleryCardBody = (fieldProps) => {\n\tconst { cardFieldData, dispatch, context } = fieldProps;\n\tconst { contextApi } = context || {};\n\tconst { bodyText, supplementaryFields } = cardFieldData;\n\treturn (\n\t\t<div className={CLASSNAMES.SN_LIST_GALLERY_BODY}>\n\t\t\t{bodyText?.cell && (\n\t\t\t\t<div>\n\t\t\t\t\t<div className={CLASSNAMES.SN_LIST_GALLERY_BODY_TEXT}>\n\t\t\t\t\t\t{galleryCardField({\n\t\t\t\t\t\t\t...bodyText,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tshowMoreWhenTruncated: isMobile(),\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className={CLASSNAMES.SN_LIST_GALLERY_BODY_FIELDS}>\n\t\t\t\t{supplementaryFields &&\n\t\t\t\t\tsupplementaryFields.map((\n\t\t\t\t\t\t/** @type {FieldRendererProps} */ fieldItem\n\t\t\t\t\t) => {\n\t\t\t\t\t\treturn galleryCardField({\n\t\t\t\t\t\t\t...fieldItem,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tcontextApi,\n\t\t\t\t\t\t});\n\t\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default galleryCardBody;\n","import { t } from 'sn-translate';\n\nimport { getTooltipProps } from '../../shared/utils/tooltipUtil';\nimport { NOW_CARD_HEADER_ACTION_CLICKED } from '../constants/actionConstants';\nimport { splitActions } from '../utils/galleryCardUtils';\n\nimport { galleryCardFieldValue } from './galleryCardField';\nimport {\n\tCARD_ACTION_ICON_SIZE_SMALL,\n\tCARD_ACTION_ICON_SIZE_MEDIUM,\n\tCARD_DROPDOWN_ID,\n\tCARD_DROPDOWN_ICON,\n\tNOW_BARE_BUTTON_TERTIARY,\n\tCLASSNAMES,\n} from './layoutConstants';\n\n/**\n * galleryCardHeader to render the Card Header with title and card actions\n * @param {Object} fieldProps;\n * @param {Record<string, FieldRendererProps>} fieldProps.cardFieldData;\n * @param {RowActions | any} fieldProps.actions;\n * @param {Row} fieldProps.cardItem;\n * @param {ContextProps} fieldProps.context;\n * @param {Now.Dispatch} fieldProps.dispatch;\n */\nconst galleryCardHeader = (fieldProps) => {\n\tconst {\n\t\tcardFieldData,\n\t\tactions = {},\n\t\tcardItem,\n\t\tcontext,\n\t\tdispatch,\n\t} = fieldProps;\n\n\tconst { heading, tagline, metadata } = cardFieldData;\n\tconst { defaultActions, dropdownActions } = splitActions(actions, context);\n\tconst actionIconSize = tagline?.cell\n\t\t? CARD_ACTION_ICON_SIZE_SMALL\n\t\t: CARD_ACTION_ICON_SIZE_MEDIUM;\n\n\treturn (\n\t\t<now-card-header\n\t\t\theading={{\n\t\t\t\tlabel: renderField({\n\t\t\t\t\t...heading,\n\t\t\t\t\tdispatch,\n\t\t\t\t\trow: cardItem,\n\t\t\t\t}),\n\t\t\t\tsize: CARD_ACTION_ICON_SIZE_MEDIUM,\n\t\t\t}}\n\t\t\ttagline={\n\t\t\t\ttagline?.cell && {\n\t\t\t\t\tlabel: renderField({\n\t\t\t\t\t\t...tagline,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\trow: cardItem,\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t}\n\t\t\tdropdowns={\n\t\t\t\tdropdownActions.length && [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: CARD_DROPDOWN_ID,\n\t\t\t\t\t\titems: dropdownActions,\n\t\t\t\t\t\ticon: CARD_DROPDOWN_ICON,\n\t\t\t\t\t\tlabel: t('Card actions'),\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t>\n\t\t\t<div\n\t\t\t\tslot=\"metadata\"\n\t\t\t\tclassName={CLASSNAMES.SN_LIST_GALLERY_CARD_METADATA}\n\t\t\t>\n\t\t\t\t{metadata?.cell && (\n\t\t\t\t\t<now-highlighted-value\n\t\t\t\t\t\tlabel={renderField({\n\t\t\t\t\t\t\t...metadata,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\trow: cardItem,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\tCLASSNAMES.SN_LIST_GALLERY_CARD_HIGHLIGHTED_VALUE\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{renderDefaultActions(defaultActions, actionIconSize, dispatch)}\n\t\t\t</div>\n\t\t</now-card-header>\n\t);\n};\n\n// Render default actions for the card, < 4 actions will be rendered as buttons, rest will be rendered in dropdown\nconst renderDefaultActions = (\n\t/** @type {RowActionItem[]} */ defaultActions,\n\t/** @type {string} */ size,\n\t/** @type {Now.Dispatch} */ dispatch\n) => {\n\tif (!defaultActions.length) return null;\n\n\tconst defaultActionButtons = defaultActions.map((action) => (\n\t\t<now-button-iconic\n\t\t\tbare\n\t\t\ticon={action?.icon || null}\n\t\t\tsize={size}\n\t\t\tvariant={NOW_BARE_BUTTON_TERTIARY}\n\t\t\thide-padding={\n\t\t\t\tsize === CARD_ACTION_ICON_SIZE_MEDIUM ? true : undefined\n\t\t\t}\n\t\t\tconfig-aria={{\n\t\t\t\tbutton: { 'aria-label': action.label },\n\t\t\t}}\n\t\t\ton-click={() =>\n\t\t\t\tdispatch(NOW_CARD_HEADER_ACTION_CLICKED, {\n\t\t\t\t\taction,\n\t\t\t\t})\n\t\t\t}\n\t\t\t{...getTooltipProps(action.label, dispatch)}\n\t\t\tappend-to-payload={{ context: { action } }}\n\t\t/>\n\t));\n\n\treturn (\n\t\t<div className={CLASSNAMES.SN_LIST_GALLERY_CARD_DEFAULT_ACTIONS}>\n\t\t\t{defaultActionButtons}\n\t\t</div>\n\t);\n};\n\nconst renderField = (/** @type {FieldRendererProps} */ fieldProps) => {\n\treturn (\n\t\t<div className={CLASSNAMES.SN_LIST_GALLERY_HEADER_FIELD}>\n\t\t\t{galleryCardFieldValue(fieldProps)}\n\t\t</div>\n\t);\n};\n\nexport default galleryCardHeader;\n","import { t } from 'sn-translate';\n\nimport rowSelectors from '../../shared/utils/selectors/rowSelectors';\nimport { getTooltipProps } from '../../shared/utils/tooltipUtil';\nimport { getCardFieldValue } from '../utils/galleryCardUtils';\n\nimport galleryCardBody from './galleryCardBody';\nimport galleryCardHeader from './galleryCardHeader';\nimport {\n\tCARD_SIDEBAR_COLOR,\n\tCARD_SIDEBAR_VARIANT,\n\tSN_LIST_GALLERY_CARD_INTERACTIONS,\n} from './layoutConstants';\n\n/**\n * This galleryCardItem renders the basic card component composition.\n *\n * @param {Object} props\n * @param {Row} props.cardItem\n * @param {FieldDefinitions} props.fieldDefinitions\n * @param {CardProperties} props.cardProperties\n * @param {ContextProps} props.context\n * @param {Now.Dispatch} props.dispatch\n */\nconst galleryCardItem = (props) => {\n\tconst {\n\t\tcardItem,\n\t\tfieldDefinitions: { galleryConfig, fieldMappings },\n\t\tdispatch,\n\t\tcardProperties,\n\t\tcontext,\n\t} = props;\n\n\tconst { actions, selectionEnabled } = cardProperties || {};\n\n\tconst { rowSelectionState: { selectedRows = {} } = {}, cardIndex } =\n\t\tcontext || {};\n\n\tconst {\n\t\toptions: {\n\t\t\tenableOnlySingleSelection = false,\n\t\t\tgalleryItemTooltip = '',\n\t\t} = {},\n\t} = galleryConfig || {};\n\n\tconst {\n\t\tvisualTreatment: { isHighlighted = false } = {},\n\t\tkey,\n\t\tselectionDisabled,\n\t} = cardItem;\n\n\tconst cardFieldData = {\n\t\t...getCardFieldValue(\n\t\t\tgalleryConfig,\n\t\t\tcardItem,\n\t\t\tfieldMappings,\n\t\t\tcardProperties\n\t\t),\n\t};\n\n\tconst fieldProps = {\n\t\tcardFieldData,\n\t\tactions,\n\t\tcardItem,\n\t\tcontext,\n\t\tdispatch,\n\t};\n\tconst isSelected = rowSelectors.isRowChecked(selectedRows, cardItem.key);\n\tconst ariaLabel = cardFieldData.heading.cell?.label || '';\n\n\tconst ariaSelectedState = selectionEnabled && isSelected ? 'true' : 'false';\n\tconst updatedgalleryItemTooltip = selectionEnabled\n\t\t? !isSelected\n\t\t\t? t('Select Record')\n\t\t\t: ''\n\t\t: galleryItemTooltip;\n\n\treturn (\n\t\t<now-card\n\t\t\tinteraction={\n\t\t\t\tselectionDisabled\n\t\t\t\t\t? SN_LIST_GALLERY_CARD_INTERACTIONS.NONE\n\t\t\t\t\t: selectionEnabled\n\t\t\t\t\t? SN_LIST_GALLERY_CARD_INTERACTIONS.SELECT\n\t\t\t\t\t: SN_LIST_GALLERY_CARD_INTERACTIONS.CLICK\n\t\t\t}\n\t\t\thideShadow={selectionDisabled}\n\t\t\tselected={isSelected}\n\t\t\t// manage-selected\n\t\t\tappend-to-payload={{\n\t\t\t\trowKey: key,\n\t\t\t\tchecked: !isSelected,\n\t\t\t\tcardItem,\n\t\t\t\trowIndex: context?.cardIndex,\n\t\t\t\tenableOnlySingleSelection,\n\t\t\t}}\n\t\t\t// Enable the sidebar only if the card is highlighted\n\t\t\tsidebar={\n\t\t\t\tisHighlighted\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tcolor: CARD_SIDEBAR_COLOR,\n\t\t\t\t\t\t\tvariant: CARD_SIDEBAR_VARIANT,\n\t\t\t\t\t  }\n\t\t\t\t\t: {}\n\t\t\t}\n\t\t\tconfig-aria={{\n\t\t\t\tbutton: !selectionDisabled\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t'aria-label': ariaLabel,\n\t\t\t\t\t\t\trole: enableOnlySingleSelection\n\t\t\t\t\t\t\t\t? 'radio'\n\t\t\t\t\t\t\t\t: 'checkbox',\n\t\t\t\t\t\t\t'aria-checked': ariaSelectedState,\n\t\t\t\t\t  }\n\t\t\t\t\t: {},\n\t\t\t}}\n\t\t\t{...getTooltipProps(updatedgalleryItemTooltip, dispatch)}\n\t\t\tdata-navIndex={(cardIndex ?? 0) + 1}\n\t\t>\n\t\t\t{galleryCardHeader(fieldProps)}\n\t\t\t{galleryCardBody(fieldProps)}\n\t\t</now-card>\n\t);\n};\n\nexport default galleryCardItem;\n","import { t } from 'sn-translate';\n\nimport { GROUP_ACTION_CLICKED } from '../constants';\n\nexport const renderGroupedActions = (\n\t/** @type {Row} */ cardItem,\n\t/** @type {Now.Dispatch} */ dispatch\n) => {\n\tconst { groupActions = [] } = cardItem;\n\tconst actionCount = groupActions.length === 1;\n\tconst context = {\n\t\trow: cardItem,\n\t\ttypeOfAction: 'groupAction',\n\t};\n\n\tconst actionClickHandler = (/** @type {Event} */ event) => {\n\t\tif (actionCount) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tdispatch(GROUP_ACTION_CLICKED, {\n\t\t\t\titem: groupActions[0],\n\t\t\t\tcontext,\n\t\t\t});\n\t\t}\n\t};\n\n\treturn (\n\t\t<now-dropdown-custom-target\n\t\t\tslot=\"metadata\"\n\t\t\tselect=\"none\"\n\t\t\titems={groupActions}\n\t\t\tappend-to-payload={{ context }}\n\t\t\ton-click={(/** @type {Event} */ event) => event.stopPropagation()}\n\t\t\tconfig-aria={{\n\t\t\t\tpanel: { 'aria-label': t('Custom group action button') },\n\t\t\t}}\n\t\t>\n\t\t\t{actionCount ? (\n\t\t\t\t<now-text-link\n\t\t\t\t\tlabel={groupActions[0].label}\n\t\t\t\t\tdata-testId=\"groupAction\"\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\ton-click={actionClickHandler}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tbare\n\t\t\t\t\ticon=\"ellipsis-v-fill\"\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t\ton-click={actionClickHandler}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</now-dropdown-custom-target>\n\t);\n};\n\nconst buttonProps = {\n\tsize: 'md',\n\tslot: 'trigger',\n\tvariant: 'tertiary',\n\t'config-aria': {\n\t\tbutton: { 'aria-label': t('Group Action') },\n\t},\n};\n","import { renderGroupedActions } from '../../../shared/views/groupActions';\nimport { CLASSNAMES } from '../layoutConstants';\n\nimport galleryCardViewDefault from './galleryCardViewDefault';\n\nconst defaultItemHeaderProps = {\n\tweight: 'normal',\n\tsize: 'md',\n\tvariant: 'primary',\n};\n\nconst badgeProps = {\n\tslot: 'identifier',\n\tstatus: 'gray',\n\tvariant: 'secondary',\n\tsize: 'sm',\n};\n\n/**\n * This galleryCard renders the basic card component composition.\n *\n * @param {Object} props\n * @param {Row} props.cardItem\n * @param {FieldDefinitions} props.fieldDefinitions\n * @param {CardProperties} props.cardProperties\n * @param {ContextProps} props.context\n * @param {Now.Dispatch} props.dispatch\n */\nconst galleryCardViewGrouped = (props) => {\n\tconst {\n\t\tcardItem,\n\t\tfieldDefinitions,\n\t\tcardProperties,\n\t\tcontext,\n\t\tdispatch,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tkey={cardItem.key}\n\t\t\ttest-id={cardItem.key}\n\t\t\tclassName={CLASSNAMES.SN_LIST_GALLERY_GROUPED_VIEW}\n\t\t>\n\t\t\t<now-accordion\n\t\t\t\tkey={`${cardItem.key}'-accordion`}\n\t\t\t\theading-level={3}\n\t\t\t\ttrigger-icon={{ position: '' }}\n\t\t\t\thide-dividers\n\t\t\t\tclassName={CLASSNAMES.SN_LIST_GALLERY_NOW_ACCORDION}\n\t\t\t>\n\t\t\t\t{cardItem &&\n\t\t\t\t\tgalleryGroupedItem(\n\t\t\t\t\t\tcardItem,\n\t\t\t\t\t\tfieldDefinitions,\n\t\t\t\t\t\tcardProperties,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tdispatch\n\t\t\t\t\t)}\n\t\t\t</now-accordion>\n\t\t</div>\n\t);\n};\n\n/**\n * This galleryCard renders the basic card component composition.\n *\n * @param {Row} cardItem\n * @param {FieldDefinitions} fieldDefinitions\n * @param {CardProperties} cardProperties\n * @param {ContextProps} context\n * @param {Now.Dispatch} dispatch\n */\nconst galleryGroupedItem = (\n\tcardItem,\n\tfieldDefinitions,\n\tcardProperties,\n\tcontext,\n\tdispatch\n) => {\n\tconst { groupedRowLabel, groupedRowCount, key, children } = cardItem;\n\n\tconst galleryDataDefinitions = {\n\t\tcards: children || [],\n\t\tfieldDefinitions,\n\t\tcardProperties,\n\t};\n\n\tconst { groupingState = { expandedGroupsArray: [''] }, cardIndex } =\n\t\tcontext || {};\n\n\tconst { expandedGroupsArray } = groupingState;\n\n\treturn (\n\t\t<now-accordion-item\n\t\t\texpanded={expandedGroupsArray?.includes(key)}\n\t\t\theader={{\n\t\t\t\tlabel: groupedRowLabel,\n\t\t\t\t...defaultItemHeaderProps,\n\t\t\t}}\n\t\t\tkey={`${cardItem.key}'-accordion-item`}\n\t\t\tappend-to-payload={{ groupContext: cardItem }}\n\t\t>\n\t\t\t<now-icon\n\t\t\t\tslot=\"identifier\"\n\t\t\t\ticon={'chevron-right-outline'}\n\t\t\t\tsize={'md'}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tstyle={{\n\t\t\t\t\ttransitionDuration: '0.2s',\n\t\t\t\t\ttransitionProperty: 'transform',\n\t\t\t\t\ttransform: expandedGroupsArray?.includes(key)\n\t\t\t\t\t\t? 'rotate(90deg)'\n\t\t\t\t\t\t: 'rotate(0deg)',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<now-badge value={groupedRowCount} {...badgeProps} />\n\t\t\t{renderGroupedActions(cardItem, dispatch)}\n\t\t\t{galleryCardViewDefault(\n\t\t\t\tgalleryDataDefinitions,\n\t\t\t\t{\n\t\t\t\t\t...context,\n\t\t\t\t\tenabledSlot: true,\n\t\t\t\t\tgroupIndex: cardIndex,\n\t\t\t\t\tcardIndex,\n\t\t\t\t},\n\t\t\t\tdispatch\n\t\t\t)}\n\t\t</now-accordion-item>\n\t);\n};\n\nexport default galleryCardViewGrouped;\n","import { Fragment } from '@servicenow/ui-renderer-snabbdom';\n\nimport galleryCardItem from '../galleryCardItem';\nimport { CLASSNAMES } from '../layoutConstants';\n\nimport galleryCardViewGrouped from './galleryCardViewGrouped';\n\n/**\n * This galleryCardViewDefault renders container composition for the now-card-list.\n * @param {GalleryState} galleryDataDefinitions;\n * @param {ContextProps} context;\n * @param {Now.Dispatch} dispatch;\n */\nconst galleryCardViewDefault = (galleryDataDefinitions, context, dispatch) => {\n\tconst { cards, fieldDefinitions, cardProperties } = galleryDataDefinitions;\n\tconst {\n\t\tenabledSlot = false,\n\t\tgroupingState: { isGroupedData = false } = {},\n\t\tgroupIndex,\n\t\trowSelectionState: { selectedRows } = {},\n\t} = context;\n\tconst galleryContainerClassName = `${\n\t\tCLASSNAMES.SN_LIST_GALLERY_CONTAINER\n\t} ${isGroupedData ? CLASSNAMES.SN_LIST_GALLERY_GROUPED : ''}`;\n\treturn (\n\t\t<div\n\t\t\tclassName={galleryContainerClassName}\n\t\t\tslot={enabledSlot ? 'content' : ''}\n\t\t>\n\t\t\t{cards &&\n\t\t\t\tcards.map((cardItem, cardIndex) => {\n\t\t\t\t\tconst props = {\n\t\t\t\t\t\tcardItem,\n\t\t\t\t\t\tfieldDefinitions,\n\t\t\t\t\t\tcardProperties,\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t...context,\n\t\t\t\t\t\t\tgroupIndex,\n\t\t\t\t\t\t\tcardIndex,\n\t\t\t\t\t\t\tselectedRows,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t};\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Fragment key={cardItem.key}>\n\t\t\t\t\t\t\t{isGroupedData && !cardItem.cells\n\t\t\t\t\t\t\t\t? galleryCardViewGrouped(props)\n\t\t\t\t\t\t\t\t: galleryCardItem(props)}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default galleryCardViewDefault;\n","import isEmpty from 'lodash/isEmpty';\n\nimport {\n\tcustomComponentType,\n\trenderCustomComponentDisplay,\n} from '../../../shared/utils/customLoader';\nimport rowSelectors from '../../../shared/utils/selectors/rowSelectors';\nimport {\n\tOBSERVE_VIRTUAL_PAGE,\n\tOBSERVE_VIRTUAL_PAGE_FOR_RESIZE,\n\tINITIALIZE_BOTTOM_OBSERVER,\n\tVIRTUAL_PAGE_SIZE,\n\tSCROLL_TO_TOP,\n\tINITIALIZE_FIRST_PAGE_OBSERVER,\n} from '../../behaviors/virtualizedGalleryBehavior/constants';\nimport { SCROLL_TO_TOP_LABEL } from '../layoutConstants';\n\nimport galleryCardViewDefault from './galleryCardViewDefault';\n\n/**\n * Renders custom row based on current status, eg: loader if more pages are being fetched, end of list if no more pages are available\n * @param {Row | null} customRow\n * @param {Record<string, FetchedComponent>} fetchedComponents\n * @param {string} dir\n */\nconst renderCustomRow = (customRow, fetchedComponents, dir) => {\n\tif (!customRow) return null;\n\n\tconst componentTag = rowSelectors.getCustomRowComponentTag(customRow);\n\tconst componentDefaultProps = rowSelectors.getCustomRowComponentProps(\n\t\tcustomRow\n\t);\n\n\treturn renderCustomComponentDisplay(\n\t\tcustomComponentType.GALLERY_VIRTUALIZED_STATUS_ROW,\n\t\t{ fetchedComponents },\n\t\tcomponentTag,\n\t\tcomponentDefaultProps,\n\t\tdir,\n\t\t{},\n\t\t{},\n\t\tnull,\n\t\t''\n\t);\n};\n\n/**\n * @param {Now.Dispatch} dispatch\n */\nconst renderScrollToTopButton = (dispatch) => {\n\treturn (\n\t\t<now-button-iconic\n\t\t\tclassName=\"gallery-virtualized-scroll-to-top-button\"\n\t\t\ticon=\"arrow-up-most-outline\"\n\t\t\tsize=\"md\"\n\t\t\tvariant=\"primary\"\n\t\t\tconfigAria={{ 'aria-label': SCROLL_TO_TOP_LABEL }}\n\t\t\ttooltipContent={SCROLL_TO_TOP_LABEL}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(SCROLL_TO_TOP);\n\t\t\t}}\n\t\t/>\n\t);\n};\n\n/**\n *\n * @param {VirtualPage} virtualPage\n * @param {GalleryState} galleryDataDefinition\n * @param {ContextProps} context\n * @param {Now.Dispatch} dispatch\n */\nconst renderVirtualizedPageContent = (\n\tvirtualPage,\n\tgalleryDataDefinition,\n\tcontext,\n\tdispatch\n) => {\n\tconst { cards, fieldDefinitions, cardProperties } = galleryDataDefinition;\n\tconst { rowStartIndex, rowEndIndex } = virtualPage;\n\tconst galleryDataDefinitions = {\n\t\tcards: cards.slice(rowStartIndex, rowEndIndex + 1),\n\t\tfieldDefinitions,\n\t\tcardProperties,\n\t};\n\treturn galleryCardViewDefault(galleryDataDefinitions, context, dispatch);\n};\n\n/**\n * @param {object} props\n * @param {VirtualPage} props.virtualPage\n * @param {number} props.virtualPagesCount\n * @param {number} props.virtualPageHeight\n * @param {GalleryState} props.galleryDataDefinition\n * @param {Array<number>} props.visibleVirtualPages\n * @param {number} props.observedVirtualPageIdForResize\n * @param {Now.Dispatch} props.dispatch\n * @param {ContextProps} props.context\n */\nconst renderVirtualizedPage = (props) => {\n\tconst {\n\t\tvirtualPage,\n\t\tvirtualPagesCount,\n\t\tvirtualPageHeight,\n\t\tvisibleVirtualPages,\n\t\tobservedVirtualPageIdForResize,\n\t\tgalleryDataDefinition,\n\t\tdispatch,\n\t\tcontext,\n\t} = props;\n\n\tconst visibleIndex = visibleVirtualPages.indexOf(virtualPage.id);\n\tconst isLastVisiblePage =\n\t\tvirtualPage.id === virtualPagesCount - 1 && visibleIndex > -1;\n\tconst isObservedPageForResize =\n\t\tobservedVirtualPageIdForResize === virtualPage.id;\n\tconst shouldSetHeight =\n\t\tvirtualPageHeight && !isObservedPageForResize && !isLastVisiblePage;\n\n\treturn (\n\t\t<div\n\t\t\tkey={virtualPage.id}\n\t\t\tstyle={shouldSetHeight ? { height: `${virtualPageHeight}px` } : {}}\n\t\t\tdata-pageid={`${virtualPage.id}`}\n\t\t\tclassName={`container-${virtualPage.id} page-observer-${virtualPage.id}`}\n\t\t\thook-insert={({ elm }) => {\n\t\t\t\tdispatch(OBSERVE_VIRTUAL_PAGE, {\n\t\t\t\t\tpageId: virtualPage.id,\n\t\t\t\t\tpageElm: elm,\n\t\t\t\t});\n\t\t\t\tif (virtualPage.id === 0) {\n\t\t\t\t\tdispatch(INITIALIZE_FIRST_PAGE_OBSERVER, {\n\t\t\t\t\t\tpageElm: elm,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t\thook-update={({ elm }) => {\n\t\t\t\tif (isObservedPageForResize)\n\t\t\t\t\tdispatch(OBSERVE_VIRTUAL_PAGE_FOR_RESIZE, {\n\t\t\t\t\t\tpageId: virtualPage.id,\n\t\t\t\t\t\tpageElm: elm,\n\t\t\t\t\t});\n\t\t\t}}\n\t\t\tdata-visibleindex={visibleIndex}\n\t\t>\n\t\t\t{visibleVirtualPages.includes(virtualPage.id)\n\t\t\t\t? renderVirtualizedPageContent(\n\t\t\t\t\t\tvirtualPage,\n\t\t\t\t\t\tgalleryDataDefinition,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tdispatch\n\t\t\t\t  )\n\t\t\t\t: null}\n\t\t</div>\n\t);\n};\n\n/**\n *\n * @param {VirtualPage} virtualPage\n * @param {VirtualPageDimensions} virtualPageDimensions\n * @param {CardDimensions} cardDimensions\n */\nconst getVirtualPageHeight = (\n\tvirtualPage,\n\tvirtualPageDimensions,\n\tcardDimensions\n) => {\n\tif (isEmpty(virtualPageDimensions) || isEmpty(cardDimensions)) return 0;\n\n\tconst { pageHeight, pageWidth } = virtualPageDimensions;\n\tconst { cardWidth, cardHeight } = cardDimensions;\n\tconst totalCards = virtualPage.rowEndIndex - virtualPage.rowStartIndex + 1;\n\n\tif (totalCards === VIRTUAL_PAGE_SIZE) return pageHeight;\n\tif (cardWidth) {\n\t\tconst noOfCardsInRow = pageWidth / cardWidth;\n\t\tconst noOfRows = totalCards / noOfCardsInRow;\n\t\treturn (noOfRows + 1) * cardHeight;\n\t}\n\treturn pageHeight;\n};\n\n/**\n * @param {object} props\n * @param {GalleryState} props.galleryDataDefinition\n * @param {VirtualizedGalleryBehaviorState} props.virtualizedCardsDefinition\n * @param {string} props.dir\n * @param {Record<string, FetchedComponent>} props.fetchedComponents\n * @param {ContextProps} props.context\n * @param {Now.Dispatch} props.dispatch\n */\nconst renderVirtualizedPages = (props) => {\n\tconst {\n\t\tgalleryDataDefinition,\n\t\tvirtualizedCardsDefinition: {\n\t\t\tvirtualPageStore,\n\t\t\tvirtualPageDimensions,\n\t\t\tcardDimensions,\n\t\t\tvisibleVirtualPages,\n\t\t\tobservedVirtualPageIdForResize,\n\t\t\tcustomRow,\n\t\t\tshowScrollToTopButton,\n\t\t},\n\t\tdir,\n\t\tfetchedComponents,\n\t\tcontext,\n\t\tdispatch,\n\t} = props;\n\n\tconst pageStoreKeys = Object.keys(virtualPageStore);\n\tconst hasVirtualPages = pageStoreKeys.length > 0;\n\tconst virtualPagesCount = pageStoreKeys.length;\n\n\treturn (\n\t\t<div className=\"gallery-virtualized-container\">\n\t\t\t<div\n\t\t\t\tid=\"gallery-virtualized-scroll-element\"\n\t\t\t\tkey=\"gallery-virtualized-scroll-element\"\n\t\t\t/>\n\t\t\t<div className=\"gallery-virtualized-page-container\">\n\t\t\t\t{pageStoreKeys.map((pageId) => {\n\t\t\t\t\tconst virtualPage = virtualPageStore[pageId];\n\t\t\t\t\tconst virtualPageHeight = getVirtualPageHeight(\n\t\t\t\t\t\tvirtualPage,\n\t\t\t\t\t\tvirtualPageDimensions,\n\t\t\t\t\t\tcardDimensions\n\t\t\t\t\t);\n\t\t\t\t\tconst pageProps = {\n\t\t\t\t\t\tvirtualPage,\n\t\t\t\t\t\tvirtualPagesCount,\n\t\t\t\t\t\tvirtualPageHeight,\n\t\t\t\t\t\tvisibleVirtualPages,\n\t\t\t\t\t\tobservedVirtualPageIdForResize,\n\t\t\t\t\t\tgalleryDataDefinition,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t};\n\t\t\t\t\treturn renderVirtualizedPage(pageProps);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t{hasVirtualPages ? (\n\t\t\t\t<div\n\t\t\t\t\tkey=\"gallery-virtualized-bottom-observer\"\n\t\t\t\t\thook-insert={({ elm }) => {\n\t\t\t\t\t\tdispatch(INITIALIZE_BOTTOM_OBSERVER, {\n\t\t\t\t\t\t\tobservedBottomElm: elm,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t></div>\n\t\t\t) : null}\n\t\t\t{customRow\n\t\t\t\t? renderCustomRow(customRow, fetchedComponents, dir)\n\t\t\t\t: null}\n\t\t\t{showScrollToTopButton ? renderScrollToTopButton(dispatch) : null}\n\t\t</div>\n\t);\n};\n\n/**\n * @param {GalleryState} galleryDataDefinition\n * @param {VirtualizedGalleryBehaviorState} virtualizedCardsDefinition\n * @param {string} dir\n * @param {Record<string, FetchedComponent>} fetchedComponents\n * @param {ContextProps} context\n * @param {Now.Dispatch} dispatch\n */\nconst galleryCardViewVirtualized = (\n\tgalleryDataDefinition,\n\tvirtualizedCardsDefinition,\n\tdir,\n\tfetchedComponents,\n\tcontext,\n\tdispatch\n) => {\n\tconst props = {\n\t\tgalleryDataDefinition,\n\t\tvirtualizedCardsDefinition,\n\t\tdir,\n\t\tfetchedComponents,\n\t\tcontext,\n\t\tdispatch,\n\t};\n\treturn renderVirtualizedPages(props);\n};\n\nexport default galleryCardViewVirtualized;\n","import { SN_LIST_GALLERY_EXPAND_ALL_GROUPS } from '../../constants/actionConstants';\nimport {\n\tGROUPED_EXPAND_ALL_GROUPS,\n\tGROUPED_COLLAPSE_ALL_GROUPS,\n\tNOW_BARE_BUTTON_TERTIARY,\n\tCARD_ACTION_ICON_SIZE_SMALL,\n\tCLASSNAMES,\n} from '../layoutConstants';\n\n/**\n * This function renders the grouped view toggle button.\n *\n * @param {ContextProps} context\n * @param {Now.Dispatch} dispatch\n */\nexport const renderGroupedViewToggleButton = (context, dispatch) => {\n\tconst {\n\t\tgroupingState: { expandAllGroups = false, isGroupedData = false } = {},\n\t} = context || {};\n\tif (!isGroupedData) return null;\n\n\tconst handleGroupToggle = () => {\n\t\tdispatch(SN_LIST_GALLERY_EXPAND_ALL_GROUPS, {\n\t\t\texpandAllGroups: !expandAllGroups,\n\t\t\tcontrolledGroupState: true,\n\t\t});\n\t};\n\n\treturn (\n\t\t<now-button-bare // Toggle expand and collapse for all groups\n\t\t\tlabel={\n\t\t\t\t!expandAllGroups\n\t\t\t\t\t? GROUPED_EXPAND_ALL_GROUPS\n\t\t\t\t\t: GROUPED_COLLAPSE_ALL_GROUPS\n\t\t\t}\n\t\t\ton-click={handleGroupToggle}\n\t\t\tvariant={NOW_BARE_BUTTON_TERTIARY}\n\t\t\tsize={CARD_ACTION_ICON_SIZE_SMALL}\n\t\t\tclassName={CLASSNAMES.SN_LIST_GALLERY_CARD_EXPAND_ALL_BUTTON}\n\t\t/>\n\t);\n};\n","import { Fragment } from '@servicenow/ui-renderer-snabbdom';\n\nimport { getVirtualizedBehaviorState } from '../behaviors/virtualizedGalleryBehavior/virtualizedGalleryBehavior';\n\nimport { renderActionableMessage } from './actionableMessage/actionableMessage';\nimport galleryCardViewDefault from './galleryLayouts/galleryCardViewDefault';\nimport galleryCardViewVirtualized from './galleryLayouts/galleryCardViewVirtualized';\nimport { renderGroupedViewToggleButton } from './galleryLayouts/groupedViewToggle';\nimport { CLASSNAMES } from './layoutConstants';\n\n/**\n * @type {View<GalleryProps, State>}\n * This galleryView renders container composition for the now-card-list.\n */\nconst galleryView = (state, { dispatch }) => {\n\tconst {\n\t\tcards,\n\t\tfieldDefinitions,\n\t\tgroupingState,\n\t\tcardProperties,\n\t\tbehaviors: {\n\t\t\tmediaQuery: { isMobile },\n\t\t},\n\t} = state;\n\n\tconst {\n\t\tvirtualizedScrollEnabled,\n\t\tsharedContext: {\n\t\t\tdir,\n\t\t\tfetchedComponents,\n\t\t\trowSelectionState,\n\t\t\tcontextApi,\n\t\t},\n\t} = state.properties;\n\n\tconst { topActionableMessage, bottomActionableMessage } = cardProperties;\n\tconst galleryDataDefinition = { cards, fieldDefinitions, cardProperties };\n\tconst context = { groupingState, isMobile, rowSelectionState, contextApi }; // context is used to pass the selective state props to the child components.\n\tconst showVirtualizedGalleryView =\n\t\tvirtualizedScrollEnabled && !groupingState?.isGroupedData;\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<div className={CLASSNAMES.SN_LIST_GALLERY}>\n\t\t\t\t{renderActionableMessage(topActionableMessage, 'top')}\n\t\t\t\t{renderGroupedViewToggleButton(context, dispatch)}\n\t\t\t\t{showVirtualizedGalleryView\n\t\t\t\t\t? galleryCardViewVirtualized(\n\t\t\t\t\t\t\tgalleryDataDefinition,\n\t\t\t\t\t\t\tgetVirtualizedBehaviorState(state),\n\t\t\t\t\t\t\tdir,\n\t\t\t\t\t\t\tfetchedComponents,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tdispatch\n\t\t\t\t\t  )\n\t\t\t\t\t: galleryCardViewDefault(\n\t\t\t\t\t\t\tgalleryDataDefinition,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tdispatch\n\t\t\t\t\t  )}\n\t\t\t\t{renderActionableMessage(bottomActionableMessage, 'bottom')}\n\t\t\t</div>\n\t\t</Fragment>\n\t);\n};\n\nexport default galleryView;\n","import mediaQueryBehavior from '@servicenow/behavior-media-query';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport { createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\n\nimport '@servicenow/now-card';\n\nimport galleryCardInteractionBehavior from './behaviors/galleryCardInteractionBehavior/galleryCardInteractionBehavior';\nimport galleryDataBehavior from './behaviors/galleryDataBehavior/galleryDataBehavior';\nimport galleryGroupedBehavior from './behaviors/galleryGroupedBehavior/galleryGroupedBehavior';\nimport galleryKeyboardNavBehavior from './behaviors/galleryKeyboardNavbehavior/galleryKeyboardNavbehavior';\nimport { virtualizedGalleryBehavior } from './behaviors/virtualizedGalleryBehavior/virtualizedGalleryBehavior';\nimport { galleryViewPropsDefinition } from './properties';\nimport galleryView from './views/galleryView';\nimport styles from './views/galleryView.scss';\nimport { SN_LIST_GALLERY_VIEW } from './views/layoutConstants';\n\n/**\n * Define the initial state of the sn-list-gallery element.\n * @type {GalleryState}\n */\nconst initialState = {\n\tcards: [],\n\tcardProperties: {},\n\tfieldDefinitions: {\n\t\tcolumns: [],\n\t\tfieldMappings: {},\n\t},\n};\n\n/**\n * @param {Now.Coeffects<GalleryProps, State>} coeffects\n * Render the sn-list-gallery element with defined properties and behaviours.\n */\ncreateCustomElement(SN_LIST_GALLERY_VIEW, {\n\trenderer: { type: snabbdom },\n\tview: galleryView,\n\tproperties: galleryViewPropsDefinition,\n\tinitialState: initialState,\n\tbehaviors: [\n\t\tgalleryDataBehavior,\n\t\tgalleryGroupedBehavior,\n\t\tgalleryKeyboardNavBehavior,\n\t\ttooltipBehavior,\n\t\tgalleryCardInteractionBehavior,\n\t\ttruncationBehavior,\n\t\tvirtualizedGalleryBehavior,\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tisMobile: '(max-width: 641px)',\n\t\t\t},\n\t\t},\n\t],\n\tstyles,\n});\n","import { getUserPrefContext } from 'sn-ux-core';\n\nimport {\n\tWRAP_ON,\n\tWRAP_OFF,\n\tWRAP_CELL_CONTENT_USER_PREFERENCE_KEY,\n} from '../../constants';\n\nconst isTrue = (/** @type {string | boolean} */ prop) =>\n\tprop === true || prop === 'true';\n\n/**\n * @param {Props[\"wrapCellContent\"]} wrapCellContent\n * @param {any} context\n * @returns {boolean}\n */\nconst shouldWrapCellContent = (wrapCellContent, context) => {\n\tif (wrapCellContent === WRAP_ON) {\n\t\treturn true;\n\t}\n\n\tif (wrapCellContent === WRAP_OFF) {\n\t\treturn false;\n\t}\n\n\tconst wrapCellContextPrefKey = getUserPrefContext(\n\t\tWRAP_CELL_CONTENT_USER_PREFERENCE_KEY\n\t);\n\n\tif (!(context && wrapCellContextPrefKey)) {\n\t\treturn false;\n\t}\n\n\treturn isTrue(context[wrapCellContextPrefKey]);\n};\n\n/**\n * @param {boolean} shouldWrap\n * @param {string} wrapClass - wrap class to use\n * @param {string} defaultClass - class to use if wrap is false\n * @return {*}\n */\nconst setWrapClass = (shouldWrap, wrapClass, defaultClass) => {\n\tif (shouldWrap) {\n\t\treturn wrapClass;\n\t}\n\treturn defaultClass;\n};\n\nexport { setWrapClass };\nexport default shouldWrapCellContent;\n","import { Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\n\nimport {\n\tgetSavedWidth,\n\tgetTableLayout,\n} from '../../../../behaviors/columnWidthBehavior/columnWidthBehavior';\nimport { TABLE_LAYOUT_FIXED } from '../../../../behaviors/columnWidthBehavior/constants';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\n\n/**\n * Subview that defines col elements based on column edges\n *\n * @param {Object} props\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param { * } props.columnWidthsState\n */\nconst renderCols = ({ processedColumnDefinitions, columnWidthsState }) => {\n\tconst { columnEdges } = processedColumnDefinitions;\n\tconst { getColumnFromProcessedCols } = columnSelectors;\n\treturn columnEdges.map((columnKey) => {\n\t\tconst column = getColumnFromProcessedCols(\n\t\t\tprocessedColumnDefinitions,\n\t\t\tcolumnKey\n\t\t);\n\t\tconst { _colspan } = column;\n\t\tconst tableLayout = getTableLayout(columnWidthsState);\n\t\tconst width = getSavedWidth(columnWidthsState, columnKey);\n\t\tconst style = {\n\t\t\twidth: tableLayout === TABLE_LAYOUT_FIXED ? width : null,\n\t\t};\n\t\tconst headerColClassNames = classNames({\n\t\t\t'header-col': true,\n\t\t\t[columnKey]: true,\n\t\t});\n\t\treturn (\n\t\t\t<col\n\t\t\t\tstyle={style}\n\t\t\t\tdata-columnEdgeKey={columnKey}\n\t\t\t\tclassName={headerColClassNames}\n\t\t\t\tspan={_colspan}\n\t\t\t></col>\n\t\t);\n\t});\n};\n\n/**\n * View that handles grouped table headers\n * @param {Object} props\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param { * } props.columnWidthsState\n */\nexport const colGroups = (props) => {\n\tconst { processedColumnDefinitions } = props;\n\tif (!processedColumnDefinitions) return null;\n\n\treturn <Fragment>{renderCols(props)}</Fragment>;\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-badge.scss';\n\nimport packageInfo from '../package.json';\nconst {name, version} = packageInfo;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nconst _round = (value) => {\n\tif (isNaN(value) || value >= 1e15) {\n\t\treturn value;\n\t}\n\tlet newValue = value;\n\tconst suffixes = ['', 'K', 'M', 'B', 'T'];\n\tlet suffixNumber = 0;\n\twhile (newValue >= 1000) {\n\t\tnewValue /= 1000;\n\t\tsuffixNumber++;\n\t}\n\tnewValue = parseFloat(newValue.toFixed(1));\n\tnewValue += suffixes[suffixNumber];\n\treturn newValue;\n};\n\nconst view = (state) => {\n\tconst {variant, size, color, status, value, round, character} =\n\t\tstate.properties;\n\tconst statusOrColor = status || color;\n\tconst displayValue = round ? _round(value) : value;\n\n\treturn (\n\t\t<span\n\t\t\tclass={{\n\t\t\t\t'now-badge': true,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t['-' + statusOrColor]: statusOrColor,\n\t\t\t\t['-' + size]: size,\n\t\t\t}}\n\t\t>\n\t\t\t<span className=\"now-line-height-crop\">{`${displayValue}${character}`}</span>\n\t\t</span>\n\t);\n};\n\n/**\n * A badge is an indicator or symbol that displays pending notifications, a\n * change in the system’s state, or an event.\n *\n * Badge notifications indicate a change in system status and aren't tied to any user input or\n * current user activity.\n *\n * ```jsx\n * <now-badge variant=\"primary\" size=\"lg\" status=\"warning\" value=\"99\" round />\n * ```\n *\n * @seismicElement now-badge\n * @summary Numeric badge that indicates a total count.\n * @uib.label Badge\n * @uib.icon badge\n * @uib.description Numeric badge that indicates a total count.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties variant, status, size, value, round, character\n */\ncreateEnhancedElement('now-badge', {\n\tpresentational: true,\n\tproperties: {\n\t\t/**\n\t\t * Sets the badge style.\n\t\t * @type {('primary'|'secondary')}\n\t\t * @uib.label Style\n\t\t * @uib.description Style of the badge\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'primary',\n\t\t\tschema: {type: 'string', enum: ['primary', 'secondary']},\n\t\t},\n\t\t/**\n\t\t * Sets the badge background color.\n\t\t * @type {('critical'|'high'|'warning'|'moderate'|'positive'|'info'|'low')}\n\t\t * @private\n\t\t * @uib.aliasedWith color\n\t\t */\n\t\tstatus: {},\n\t\t/**\n\t\t * Sets the badge background color.\n\t\t * @type {('critical'|'high'|'warning'|'moderate'|'positive'|'info'|'low'|'magenta'|'pink'|'orange'|'yellow'|'brown'|'green'|'green-yellow'|'blue'|'gray'|'teal'|'purple')}\n\t\t * @uib.label Color\n\t\t * @uib.description Sets the badge background color.\n\t\t */\n\t\tcolor: {\n\t\t\tdefault: 'low',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'critical',\n\t\t\t\t\t'high',\n\t\t\t\t\t'warning',\n\t\t\t\t\t'moderate',\n\t\t\t\t\t'positive',\n\t\t\t\t\t'info',\n\t\t\t\t\t'low',\n\t\t\t\t\t'magenta',\n\t\t\t\t\t'pink',\n\t\t\t\t\t'orange',\n\t\t\t\t\t'yellow',\n\t\t\t\t\t'brown',\n\t\t\t\t\t'green',\n\t\t\t\t\t'green-yellow',\n\t\t\t\t\t'blue',\n\t\t\t\t\t'gray',\n\t\t\t\t\t'teal',\n\t\t\t\t\t'purple',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the badge size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * Number to display in the badge.\n\t\t * @type {number}\n\t\t * @uib.defaultValue 5\n\t\t */\n\t\tvalue: {required: true, schema: {type: 'number'}},\n\t\t/**\n\t\t * A character displayed directly after the value.\n\t\t * @type {string}\n\t\t * @uib.label Ending character\n\t\t * @uib.description A character displayed directly after the value.\n\t\t * @uib.defaultValue\n\t\t */\n\t\tcharacter: {default: '', required: false, schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, rounds up and uses the abbreviations 'K', 'M', 'B', and 'T' to represent large numbers.\n\t\t * For example, instead of '1000', the system displays '1K'. Instead of '5376000', the system displays '5.4M'.\n\t\t * @type {boolean}\n\t\t * @uib.label Round large numbers\n\t\t * @uib.description Whether to round up large numbers (between thousands and trillions)\n\t\t * @uib.defaultValue true\n\t\t */\n\t\tround: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Deprecated for WCAG compliance. Badge consumers are responsible\n\t\t * for representing the badge content and context to all users accessibly.\n\t\t * @private\n\t\t */\n\t\tdescription: {},\n\t},\n\tview,\n\tstyles,\n});\n","import { getUserPrefContext } from 'sn-ux-core';\n\nimport {\n\tSHADE_ALTERNATE_ROWS_OFF,\n\tSHADE_ALTERNATE_ROWS_USER_PREFERENCE_KEY,\n\tUSE_SHADE_ALTERNATE_ROWS_USER_PREFERENCE,\n} from '../../constants';\n\n/**\n * @param {string} shadeAlternateRows\n * @param {any} context\n * @returns {boolean}\n */\nconst shouldShadeAlternateRows = (shadeAlternateRows, context) => {\n\tconst shadeAlternateRowsContextPrefKey = getUserPrefContext(\n\t\tSHADE_ALTERNATE_ROWS_USER_PREFERENCE_KEY\n\t);\n\n\tif (\n\t\tshadeAlternateRows === USE_SHADE_ALTERNATE_ROWS_USER_PREFERENCE &&\n\t\tcontext &&\n\t\tshadeAlternateRowsContextPrefKey\n\t) {\n\t\t// in UI16 when table.highlighting is false, alternate rows are shaded, when there is no user preference, value is null\n\t\treturn context[shadeAlternateRowsContextPrefKey] !== 'true';\n\t}\n\n\tif (shadeAlternateRows === SHADE_ALTERNATE_ROWS_OFF) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\nexport default shouldShadeAlternateRows;\n","import classNames from 'classnames';\nimport { t } from 'sn-translate';\n\nimport rowSelectors from '../../utils/selectors/rowSelectors';\nimport { SPECIAL_COLUMN_CELL_CONTENT } from '../table/tableBody/tableRow/rowCell/rowCellConstants';\n\n/**\n * This subview renders a badge count of grouped rows for a grouped row\n * @param {Row} row an object representing a single row in the table, including its cells and config options\n * @param {Object | undefined} props\n */\nexport const groupBadgeCellContent = (row, props = {}) => {\n\t// @ts-ignore\n\tif (props['nestedLevel'] != undefined && props.nestedLevel >= 0)\n\t\treturn null;\n\tif (row && !rowSelectors.getGroupedRowCount(row)) return null;\n\n\treturn badgeCellContent(row);\n};\n\n/**\n * This subview renders a badge count of child rows for a parent row.\n *\n * @param {Row} row an object representing a single row in the table, including its cells and config options\n */\nexport const parentBadgeCellContent = (row) => {\n\tif (row && !rowSelectors.getGroupedRowCount(row)) return null;\n\n\treturn badgeCellContent(row);\n};\n\n/**\n * This function creates the badge count cell\n *\n * @param {Row} row an object representing a single row in the table, including its cells and config options\n */\nexport const badgeCellContent = (row) => {\n\tconst groupBadgeCellContentClassnames = classNames({\n\t\t'cell-content': true,\n\t\t'group-badge-cell-content': true,\n\t\t[SPECIAL_COLUMN_CELL_CONTENT]: true,\n\t});\n\n\tconst ariaLabel = t(\n\t\t`Grouped row contains ${row.groupedRowCount} child records`\n\t);\n\n\treturn (\n\t\t<div className={groupBadgeCellContentClassnames}>\n\t\t\t<now-badge\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tcolor=\"gray\"\n\t\t\t\tvalue={row.groupedRowCount}\n\t\t\t\tclassName=\"group-row-count-badge\"\n\t\t\t\tdata-testId=\"groupBadgeCellContent\"\n\t\t\t\taria-label={ariaLabel}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import classNames from 'classnames';\nimport { t } from 'sn-translate';\n\nimport {\n\tEXPAND_GROUP,\n\tEXPAND_ALL_GROUPS,\n} from '../../../behaviors/rowGroupingBehavior/constants';\nimport { ICON_SIZES } from '../../../constants';\nimport { NOW_BUTTON_ICONIC_CLICKED } from '../../../resources/constants';\nimport rowSelectors from '../../utils/selectors/rowSelectors';\nimport { SPECIAL_COLUMN_CELL_CONTENT } from '../table/tableBody/tableRow/rowCell/rowCellConstants';\nimport { GROUP_TOGGLE_ICON } from '../table/tableConstants';\n\nimport { renderLiveListEyelashIcon } from './cellIconContent';\nimport { getFakeNowIcon, iconIsCached } from './fakeNowIcon';\n\n/**\n * This subview renders a grouped row toggle button for the table header and grouped row header.\n *\n * @param {Object} props\n * @param {Row?} props.row an object representing a single row in the table, including its cells and config options\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {function} props.dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n */\nexport const groupToggleCellContent = (\n\tprops,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\tconst { row } = props;\n\n\t// @ts-ignore\n\tif (props['nestedLevel'] != undefined && props.nestedLevel >= 0)\n\t\treturn null;\n\n\tif (row && !rowSelectors.isGroupedRowOrDefaultRowWithChildren(row))\n\t\treturn null;\n\n\treturn toggleCellContent(props, shouldRenderRecentlyUpdatedIcon);\n};\n\n/**\n * This subview renders a row toggle button for rows with parent/child rows including grouped rows.\n *\n * @param {Object} props\n * @param {Row?} props.row an object representing a single row in the table, including its cells and config options\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {function} props.dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n */\nexport const parentToggleCellContent = (\n\tprops,\n\tshouldRenderRecentlyUpdatedIcon\n) => {\n\tconst { row } = props;\n\n\tif (row && !rowSelectors.isGroupedRowOrDefaultRowWithChildren(row))\n\t\treturn null;\n\n\treturn toggleCellContent(props, shouldRenderRecentlyUpdatedIcon);\n};\n\n/**\n * This function creates a row toggle button.\n *\n * @param {Object} props\n * @param {Row?} props.row an object representing a single row in the table, including its cells and config options\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {function} props.dispatch\n * @param {boolean} shouldRenderRecentlyUpdatedIcon renders eyelash if child row was recently updated\n */\nexport const toggleCellContent = (props, shouldRenderRecentlyUpdatedIcon) => {\n\tconst { row, rowGroupingState, dispatch } = props;\n\tconst { expandedGroupsArray } = rowGroupingState;\n\n\t// If row prop doesn't exist, this is the header, so the all groups toggle is rendered\n\tconst isAllGroupsToggle = !Boolean(row).valueOf();\n\n\tconst rowKey = rowSelectors.getRowKey(row);\n\n\tconst actionPayloadType = isAllGroupsToggle\n\t\t? EXPAND_ALL_GROUPS\n\t\t: EXPAND_GROUP;\n\tconst isGroupExpanded = expandedGroupsArray.includes(rowKey);\n\tconst areAllGroupExpanded = rowGroupingState.expandAllGroups;\n\n\tconst ariaLabel = isAllGroupsToggle\n\t\t? t('All groups toggle')\n\t\t: t('Grouped row toggle');\n\n\tconst groupToggleCellContentClassnames = classNames({\n\t\t'cell-content': true,\n\t\t'group-toggle-cell-content': true,\n\t\t[SPECIAL_COLUMN_CELL_CONTENT]: true,\n\t});\n\n\tconst groupToggleClassNames = classNames({\n\t\t'group-row-toggle': true,\n\t\t'always-show': true,\n\t});\n\n\tconst groupButtonClassNames = classNames({\n\t\t'group-toggle-all-button': isAllGroupsToggle,\n\t\t'group-row-toggle': true,\n\t\t'group-expanded': !isAllGroupsToggle && isGroupExpanded,\n\t\t'groups-expanded': isAllGroupsToggle && areAllGroupExpanded,\n\t\t'always-show': true,\n\t});\n\n\tconst groupHTMLButtonClassNames = classNames({\n\t\t'group-row-toggle': true,\n\t\t'group-expanded': !isAllGroupsToggle && isGroupExpanded,\n\t\t'groups-expanded': isAllGroupsToggle && areAllGroupExpanded,\n\t\t'html-group-button': true,\n\t});\n\n\tconst expandCollapseTooltip = isGroupExpanded\n\t\t? t('Expand row')\n\t\t: t('Collapse row');\n\n\t// As of STRY56854796, we want to show active toggle button even if children are empty, so disabled is always false\n\treturn (\n\t\t<div className={groupToggleCellContentClassnames}>\n\t\t\t{shouldRenderRecentlyUpdatedIcon && renderLiveListEyelashIcon()}\n\t\t\t<div className={groupToggleClassNames}>\n\t\t\t\t{iconIsCached(GROUP_TOGGLE_ICON, 'md') ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\t\t\tdir={document.dir}\n\t\t\t\t\t\t\tdata-ancillary=\"true\"\n\t\t\t\t\t\t\tdata-htmlGroupToggle=\"true\"\n\t\t\t\t\t\t\tdata-testId=\"groupToggle\"\n\t\t\t\t\t\t\tdata-tooltip={expandCollapseTooltip}\n\t\t\t\t\t\t\tclassName={groupHTMLButtonClassNames}\n\t\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\t\tdispatch(NOW_BUTTON_ICONIC_CLICKED, {\n\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\ttype: actionPayloadType,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{getFakeNowIcon(\n\t\t\t\t\t\t\t\tGROUP_TOGGLE_ICON,\n\t\t\t\t\t\t\t\tICON_SIZES.MEDIUM\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\tbare=\"true\"\n\t\t\t\t\t\ticon={GROUP_TOGGLE_ICON}\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tclassName={groupButtonClassNames}\n\t\t\t\t\t\tappend-to-payload={{ row, type: actionPayloadType }}\n\t\t\t\t\t\tdata-testId=\"groupToggle\"\n\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\t'aria-label': ariaLabel,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { createRef } from '@servicenow/ui-renderer-snabbdom';\nimport { isEmpty } from 'lodash';\n\nimport { GROUP_ACTION } from '../../../../../behaviors/contextActionsBehavior/constants';\nimport { GROUP_ACTION_CLICKED } from '../../../../../resources/constants';\nimport rowSelectors from '../../../../utils/selectors/rowSelectors';\nimport { ELLIPSIS_ICON } from '../../tableConstants';\n\nconst { getGroupActions, getGroupRowHref } = rowSelectors;\n\n/**\n * This subview renders grouped button menu to render grouped actions dropdown\n *\n * @param {Row} row an object representing a single row in the table, including its cells and config options\n */\nexport const renderGroupActionKebabButton = (row) => {\n\tconst groupActions = getGroupActions(row);\n\tconst groupActionsRef = createRef();\n\tconst context = { row, typeOfAction: GROUP_ACTION };\n\treturn (\n\t\t<now-button-iconic\n\t\t\tdata-testId=\"groupAction\"\n\t\t\tdata-ancillary=\"true\"\n\t\t\tsize=\"sm\"\n\t\t\tvariant=\"tertiary\"\n\t\t\tbare=\"true\"\n\t\t\ticon={ELLIPSIS_ICON}\n\t\t\tref={groupActionsRef}\n\t\t\tclassName=\"group-actions-button\"\n\t\t\tappend-to-payload={{\n\t\t\t\tpopoverTarget: groupActionsRef,\n\t\t\t\tpopoverDefinition: {\n\t\t\t\t\tconfig: {\n\t\t\t\t\t\tdismissOnScroll: true,\n\t\t\t\t\t\thideTail: true,\n\t\t\t\t\t},\n\t\t\t\t\tcontent: {\n\t\t\t\t\t\tactions: groupActions,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcontext,\n\t\t\t}}\n\t\t\tconfigAria={{\n\t\t\t\t// will be added as part of A11y story for grouped rows\n\t\t\t\t'aria-label': 'Group Action',\n\t\t\t}}\n\t\t/>\n\t);\n};\n\n/**\n * This subview renders single grouped row text link\n *\n * @param {Row} row an object representing a single row in the table, including its cells and config options\n * @param {Array<GroupActionItem>} groupActions array of grouped row actions\n * @param {*} dispatch seismic dispatch\n */\nexport const renderSingleGroupActionButton = (row, groupActions, dispatch) => {\n\tconst groupRowHref = getGroupRowHref(groupActions);\n\treturn (\n\t\t<now-text-link\n\t\t\tlabel={groupActions[0].label}\n\t\t\tdata-testId=\"groupAction\"\n\t\t\tvariant=\"secondary\"\n\t\t\thref={groupRowHref}\n\t\t\ton-click={(/** @type {MouseEvent} */ event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tdispatch(GROUP_ACTION_CLICKED, {\n\t\t\t\t\tactionItem: groupActions[0],\n\t\t\t\t\tcontext: {\n\t\t\t\t\t\trow,\n\t\t\t\t\t\ttypeOfAction: GROUP_ACTION,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}}\n\t\t/>\n\t);\n};\n\n/**\n * This subview renders grouped row actions\n *\n * @param {Row} row an object representing a single row in the table, including its cells and config options\n * @param {Array<GroupActionItem>} groupActions array of grouped row actions\n * @param {*} dispatch seismic dispatch\n */\nexport const renderGroupActions = (row, groupActions, dispatch) => {\n\treturn (\n\t\t!isEmpty(groupActions) &&\n\t\t(groupActions.length > 1\n\t\t\t? renderGroupActionKebabButton(row)\n\t\t\t: renderSingleGroupActionButton(row, groupActions, dispatch))\n\t);\n};\n","import { getLabelContent } from '../cellContentUtils';\n\n/**\n * This subView renders the content of an icon cell\n *\n * @param {Object} props\n * @param {ImageCellType} props.cell an object representing this cell\n * @param {Array<string>} props.highlightedContent array of string patterns to be highlighted\n * @param {boolean | undefined} props.isHighlightedValue\n * @param {ProcessedColumn} props.column an object representing the column\n * @param {*} dispatch\n * @param {*} shouldRenderRecentlyUpdatedIcon\n */\nexport const imageCell = (props, dispatch, shouldRenderRecentlyUpdatedIcon) => {\n\tconst cellLabel = (\n\t\t<div className=\"cell-content image-cell-content\">\n\t\t\t{props.cell.value && (\n\t\t\t\t<img src={props.cell.value} alt={props.column.label} />\n\t\t\t)}\n\t\t</div>\n\t);\n\n\treturn getLabelContent(\n\t\t// @ts-ignore\n\t\tprops,\n\t\tdispatch,\n\t\tshouldRenderRecentlyUpdatedIcon,\n\t\t{\n\t\t\tdisplayLabel: cellLabel,\n\t\t}\n\t);\n};\n","import { Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport truncate from 'lodash/truncate';\n\nimport cellSelectors from '../../../../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../../../../utils/selectors/columnSelectors';\nimport {\n\tgetDisabled,\n\tgetHighlightedText,\n\tgetTooltipDataProps,\n\thighlightedValueCell,\n} from '../cellContentUtils';\n\nconst {\n\tPERSON_CELL_ICON_SIZE,\n\tPERSON_DISPLAY_TYPE_AVATAR,\n\tPERSON_DISPLAY_TYPE_BOTH,\n\tPERSON_DISPLAY_TYPE_NAME,\n\tNOW_LIST_CELL_PERSON_CLICKED,\n} = require('./personCellConstants');\n\nconst { getImageSrc, getPersonKey, getValue, getHref } = cellSelectors;\nconst { getColumnKey, getDisplay, getMaxCharacters } = columnSelectors;\n\n/**\n * This subview renders the content of an person cell based on the state of isDisabled\n *\n * @param {String} name the name of the user in person cell\n * @param {Boolean} isDisabled a boolean representing the clickability of the cell\n * @param {String | undefined} personKey a unique optional key set by the user of person cell\n * @param {Array<string>} highlightedContent array of patterns to be highlighted\n * @param {Number} maxCharacters an object representing this cell's parent column\n * @param {HighlightedValue | null} highlightedValueData\n * @param {String | undefined} href a string representing the link to the record\n *\n */\nexport const renderPersonText = (\n\tname,\n\tisDisabled,\n\tpersonKey,\n\tmaxCharacters,\n\thighlightedContent,\n\thighlightedValueData,\n\thref\n) => {\n\tconst textClassNames = classNames({\n\t\tdisabled: isDisabled,\n\t});\n\tconst buttonClassNames = classNames({\n\t\t'person-cell-link': true,\n\t\t'highlighted-value': highlightedValueData,\n\t});\n\tconst truncatedName = truncate(name, { length: maxCharacters });\n\tconst isTruncated = truncatedName !== name;\n\tconst { highlightedElement: cellLabel } = getHighlightedText(\n\t\thighlightedContent,\n\t\ttruncatedName\n\t);\n\n\tconst renderedLabel =\n\t\thighlightedValueData && Object.keys(highlightedValueData).length > 0\n\t\t\t? highlightedValueCell(highlightedValueData, truncatedName)\n\t\t\t: cellLabel;\n\n\tif (!isDisabled) {\n\t\treturn (\n\t\t\t// Changed to anchor tag due to text-wrapping issues with button\n\t\t\t<a\n\t\t\t\tclassName={buttonClassNames}\n\t\t\t\tkey={personKey}\n\t\t\t\trole=\"link\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\taria-label={name}\n\t\t\t\thref={href}\n\t\t\t\ton-click={(/** @type {any} */ event) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}}\n\t\t\t\t{...getTooltipDataProps(name, isTruncated)}\n\t\t\t>\n\t\t\t\t{renderedLabel}\n\t\t\t</a>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<Fragment className={textClassNames} data-truncation>\n\t\t\t\t{renderedLabel}\n\t\t\t</Fragment>\n\t\t);\n\t}\n};\n\n/**\n * This subview renders the content of an person cell\n *\n * @param {Object} props\n * @param {PersonCellType} props.cell an object representing this person cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {Row} props.row an object representing this cell's parent row\n * @param {*} dispatch seismic dispatch\n */\nexport const personCell = (props, dispatch) => {\n\tconst {\n\t\tcell,\n\t\tcolumn,\n\t\tclickableTextEnabled,\n\t\thighlightedContent,\n\t\trow,\n\t} = props;\n\tconst name = getValue(cell);\n\tconst personKey = getPersonKey(cell);\n\tconst imageSrc = getImageSrc(cell);\n\tconst display = getDisplay(column);\n\tconst isDisabled = getDisabled(clickableTextEnabled, column, cell, name);\n\tconst maxCharacters = getMaxCharacters(column);\n\tconst href = getHref(cell);\n\n\tconst isNameEmpty = isEmpty(name);\n\n\tconst shouldDisplayAvatar =\n\t\t(display === PERSON_DISPLAY_TYPE_AVATAR ||\n\t\t\tdisplay === PERSON_DISPLAY_TYPE_BOTH) &&\n\t\t!isNameEmpty;\n\n\tconst shouldDisplayName =\n\t\t(display === PERSON_DISPLAY_TYPE_NAME ||\n\t\t\tdisplay === PERSON_DISPLAY_TYPE_BOTH) &&\n\t\t!isNameEmpty;\n\n\tconst contentClassNames = classNames({\n\t\t'cell-content': true,\n\t\t'person-cell-content': true,\n\t\tdisabled: isDisabled,\n\t});\n\tconst highlightedValueData = cellSelectors.getHighlightedValue(cell);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={contentClassNames}\n\t\t\ton-click={(/** @type {any} */ event) => {\n\t\t\t\tconst targetClassList = event.target.classList;\n\t\t\t\tif (\n\t\t\t\t\t!isDisabled &&\n\t\t\t\t\ttargetClassList &&\n\t\t\t\t\t(targetClassList.contains('person-cell-avatar') ||\n\t\t\t\t\t\ttargetClassList.contains('person-cell-link'))\n\t\t\t\t) {\n\t\t\t\t\tdispatch(NOW_LIST_CELL_PERSON_CLICKED, {\n\t\t\t\t\t\tcell,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\tcolumnKey: getColumnKey(column),\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t{shouldDisplayAvatar ? (\n\t\t\t\t<now-avatar\n\t\t\t\t\tclassName=\"person-cell-avatar\"\n\t\t\t\t\tsize={PERSON_CELL_ICON_SIZE}\n\t\t\t\t\tuserName={name}\n\t\t\t\t\timageSrc={imageSrc}\n\t\t\t\t\tkey={personKey}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{shouldDisplayName\n\t\t\t\t? renderPersonText(\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tisDisabled,\n\t\t\t\t\t\tpersonKey,\n\t\t\t\t\t\tmaxCharacters,\n\t\t\t\t\t\thighlightedContent,\n\t\t\t\t\t\thighlightedValueData,\n\t\t\t\t\t\thref\n\t\t\t\t  )\n\t\t\t\t: null}\n\t\t</div>\n\t);\n};\n","import '@servicenow/now-pill';\nimport { createRef, Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport { t } from 'sn-translate';\n\nimport { createElementObservationProps } from '../../../../../../../behaviors/intersectionObserverBehavior/intersectionObserverBehavior';\nimport cellSelectors from '../../../../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../../../../utils/selectors/columnSelectors';\nimport { getHiddenPillsTooltip } from '../cellContentUtils';\n\nconst {\n\tDEFAULT_PILL_SIZE,\n\tMAX_PILL_LIMIT_DEFAULT,\n} = require('./pillsCellConstants');\n\nconst { getValue } = cellSelectors;\nconst { getMaxPillLimit } = columnSelectors;\n\n/**\n * Adds cell size and canDismiss property onto every pill in the props\n *\n * @param {Object} props\n * @param {PillsCellType} props.cell an object representing this cell\n * @param {Row} props.row an object representing this cell's row\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {*} dispatch seismic dispatch\n * @return An array of pill components. If pills are more than `maxPillLimit`, a hidden pills message is also returned.\n */\nexport const renderPills = (props, dispatch) => {\n\tconst { cell, column, row } = props;\n\n\t/** @constant\n        @type {Array<PillType>}\n    */\n\tconst values = getValue(cell);\n\n\tconst maxPillLimit = getMaxPillLimit(column);\n\n\tconst pillRef = createRef();\n\n\tconst pills = values.slice(0, maxPillLimit).map((pill) => (\n\t\t<now-pill\n\t\t\tkey={pill.key}\n\t\t\tref={pillRef}\n\t\t\tlabel={pill.label}\n\t\t\tsize={DEFAULT_PILL_SIZE}\n\t\t\tcanDismiss={false}\n\t\t\tclassName=\"pill-cell-pill\"\n\t\t\tselected=\"false\"\n\t\t\tmanageSelected=\"false\"\n\t\t\tappend-to-payload={{\n\t\t\t\tpillKey: pill.key,\n\t\t\t\trowKey: row.key,\n\t\t\t\tpills: values,\n\t\t\t\tpillRef,\n\t\t\t}}\n\t\t\t{...createElementObservationProps(dispatch, 'pill-cell-type')}\n\t\t/>\n\t));\n\n\tconst hiddenPillsCount = values.length - maxPillLimit;\n\tconst hiddenPillsTooltip = getHiddenPillsTooltip(values, maxPillLimit);\n\tconst hiddenPillsAriaLabel =\n\t\tt('{0} other field values: ', hiddenPillsCount) + hiddenPillsTooltip;\n\tconst hiddenPillsMessage =\n\t\tvalues.length > maxPillLimit ? (\n\t\t\t<span\n\t\t\t\tclassName=\"hidden-pills-message\"\n\t\t\t\tdata-tooltip={hiddenPillsTooltip}\n\t\t\t\taria-label={hiddenPillsAriaLabel}\n\t\t\t\ttabindex=\"0\" // make the span tabbable\n\t\t\t>\n\t\t\t\t{`+${hiddenPillsCount}`}\n\t\t\t</span>\n\t\t) : (\n\t\t\t''\n\t\t);\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{pills}\n\t\t\t{hiddenPillsMessage}\n\t\t</Fragment>\n\t);\n};\n\n/**\n * This subview renders the content of a pill cell\n * @deprecated delete this function and use `pillsView({ props, dispatch });` instead\n *\n * @param {Object} props\n * @param {PillsCellType} props.cell an object representing this cell\n * @param {Row} props.row an object representing this cell's row\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {*} dispatch seismic dispatch\n */\nexport const pillsCell = (props, dispatch) => {\n\tconst pillList = renderPills(props, dispatch);\n\t//Setting aria-label for upto MAX_PILL_LIMIT_DEFAULT number of pills, and \"Press Enter for more pills\" for more pills\n\tconst { cell } = props;\n\tconst values = getValue(cell);\n\tlet pillsValues = values\n\t\t.slice(0, 3)\n\t\t.map((/** @type {{ label: string; }} */ pillValue) => pillValue.label)\n\t\t.join(', ');\n\tpillsValues +=\n\t\tvalues.length > MAX_PILL_LIMIT_DEFAULT\n\t\t\t? '. Press Enter for more pills'\n\t\t\t: '';\n\treturn (\n\t\t<div\n\t\t\tclassName=\"cell-content pills-cell-content\"\n\t\t\trole=\"group\"\n\t\t\taria-label={t('{0}', pillsValues)}\n\t\t>\n\t\t\t{pillList}\n\t\t</div>\n\t);\n};\n","// @ts-ignore\nimport '@servicenow/now-button';\nimport { createRef } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\n// @ts-ignore\nimport includes from 'lodash/includes';\nimport isEmpty from 'lodash/isEmpty';\nimport slice from 'lodash/slice';\nimport { t } from 'sn-translate';\n\nimport { ROW_ACTION } from '../../../../../../../behaviors/contextActionsBehavior/constants';\nimport { ICON_NAMES } from '../../../../../../../constants';\nimport { NOW_BUTTON_ICONIC_CLICKED } from '../../../../../../../resources/constants';\nimport rowSelectors from '../../../../../../utils/selectors/rowSelectors';\nimport {\n\tgetFakeNowIcon,\n\ticonIsCached,\n} from '../../../../../shared/fakeNowIcon';\nimport { ICON_SIZE_SMALL } from '../../../../constants';\nimport { SPECIAL_COLUMN_CELL_CONTENT } from '../rowCellConstants';\n\nconst {\n\tDEFAULT_ROW_ACTION_ICON,\n} = require('../../../../../../../typeSchemas/rowDefinitions/rowConfigConsts');\n\nconst {\n\tgetRowActionsNumIconsFromActions,\n\tgetRowActionsItemsFromActions,\n} = rowSelectors;\n\n/**\n * get array of all selected rows or current row based on selection state\n * @param {Row} row current row\n * @param {object} selectedRows\n *\n * @returns {Row[]} context rows\n */\nconst getContextRows = (row, selectedRows) => {\n\tconst rowKey = rowSelectors.getRowKey(row);\n\tconst isRowChecked = rowSelectors.isRowChecked(selectedRows, rowKey);\n\treturn isRowChecked ? Object.values(selectedRows || {}) : [row];\n};\n\n/**\n * This subview renders the actions icon buttons, not including the kebab dropdown\n * @param {Object} props\n * @param {Array<RowActionItem>} props.actions actions to render as buttons\n * @param {number | undefined} props.groupIndex\n * @param {Row} props.row object representing this cell's parent row\n * @param {Row[]} props.rows object representing this cell's parent row\n * @param {object} props.selectedRows\n * @param {number} props.rowIndex, 1-based\n * @param {function} props.dispatch\n */\nexport const renderActionsIconButtons = (props) => {\n\t// @ts-ignore\n\tconst {\n\t\tactions,\n\t\tgroupIndex,\n\t\trow,\n\t\trowIndex,\n\t\tselectedRows,\n\t\tdispatch,\n\t} = props;\n\tconst contextRows = getContextRows(row, selectedRows);\n\n\tconst areAllActionsDisabled = rowSelectors.getAreActionsDisabled(row);\n\tconst excludedActions = rowSelectors.getExcludedActions(contextRows);\n\n\treturn actions.map((actionItem) => {\n\t\tconst actionIcon = actionItem.icon ?? DEFAULT_ROW_ACTION_ICON;\n\t\tconst label = actionItem?.label;\n\t\tconst rowActionCellClasses = classNames({\n\t\t\t'row-actions-button': true,\n\t\t\t'is-disabled':\n\t\t\t\tincludes(excludedActions, actionItem.id) ||\n\t\t\t\tareAllActionsDisabled,\n\t\t});\n\t\tif (iconIsCached(actionIcon, ICON_SIZE_SMALL)) {\n\t\t\treturn (\n\t\t\t\t<button\n\t\t\t\t\tdata-testId=\"rowAction\"\n\t\t\t\t\tclassName={rowActionCellClasses}\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tincludes(excludedActions, actionItem.id) ||\n\t\t\t\t\t\tareAllActionsDisabled\n\t\t\t\t\t}\n\t\t\t\t\tdata-tooltip={label}\n\t\t\t\t\taria-label={label}\n\t\t\t\t\tkey={actionItem.id}\n\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\tdispatch(NOW_BUTTON_ICONIC_CLICKED, {\n\t\t\t\t\t\t\tactionItem,\n\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\tgroupIndex,\n\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\trows: contextRows,\n\t\t\t\t\t\t\t\trowIndex,\n\t\t\t\t\t\t\t\ttypeOfAction: ROW_ACTION,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{getFakeNowIcon(actionIcon, ICON_SIZE_SMALL)}\n\t\t\t\t</button>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tclassName={rowActionCellClasses}\n\t\t\t\t\tdata-testId=\"rowAction\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tbare=\"true\"\n\t\t\t\t\ticon={actionItem.icon ?? DEFAULT_ROW_ACTION_ICON}\n\t\t\t\t\tdata-tooltip={label}\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tincludes(excludedActions, actionItem.id) ||\n\t\t\t\t\t\tareAllActionsDisabled\n\t\t\t\t\t}\n\t\t\t\t\tkey={actionItem.id}\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\tactionItem,\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\tgroupIndex,\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\trows: contextRows,\n\t\t\t\t\t\t\trowIndex,\n\t\t\t\t\t\t\ttypeOfAction: ROW_ACTION,\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t'aria-label': label,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t});\n};\n\n/**\n * This subview renders the overflow kebab button\n * @param {Object} props\n * @param {Array<RowActionItem>} props.actions actions to render in a dropdown\n * @param {number | undefined} props.groupIndex\n * @param {Row} props.row object representing this cell's parent row\n * @param {object} props.selectedRows\n * @param {number} props.rowIndex, 1-based\n * @param {function} props.dispatch\n */\nexport const renderKebabDropdown = (props) => {\n\tconst {\n\t\tactions,\n\t\tgroupIndex,\n\t\trow,\n\t\tselectedRows,\n\t\trowIndex,\n\t\tdispatch,\n\t} = props;\n\n\tconst contextRows = getContextRows(row, selectedRows);\n\n\tconst areAllActionsDisabled = rowSelectors.getAreActionsDisabled(row);\n\tconst excludedActions = rowSelectors.getExcludedActions(contextRows);\n\n\tconst preparedActions = actions.map((action) => {\n\t\treturn {\n\t\t\t...action,\n\t\t\tdisabled:\n\t\t\t\tincludes(excludedActions, action.id) || areAllActionsDisabled,\n\t\t};\n\t});\n\n\tconst context = {\n\t\tgroupIndex,\n\t\trow,\n\t\trows: contextRows,\n\t\trowIndex,\n\t\ttypeOfAction: ROW_ACTION,\n\t};\n\n\t// @ts-ignore\n\tconst kebabTooltip = t('More');\n\t// @ts-ignore\n\tconst actionsKebabButtonRef = createRef();\n\tif (iconIsCached(ICON_NAMES.ELLIPSIS_V_FILL, ICON_SIZE_SMALL)) {\n\t\treturn (\n\t\t\t<button\n\t\t\t\tclassName=\"row-actions-button\"\n\t\t\t\tdata-testId=\"rowActionOverflow\"\n\t\t\t\tref={actionsKebabButtonRef}\n\t\t\t\taria-label={kebabTooltip}\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(NOW_BUTTON_ICONIC_CLICKED, {\n\t\t\t\t\t\tpopoverTarget: actionsKebabButtonRef,\n\t\t\t\t\t\tpopoverDefinition: {\n\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\tdismissOnScroll: true,\n\t\t\t\t\t\t\t\thideTail: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\tactions: preparedActions,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{getFakeNowIcon(ICON_NAMES.ELLIPSIS_V_FILL, ICON_SIZE_SMALL)}\n\t\t\t</button>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<now-button-iconic\n\t\t\t\tdata-testId=\"rowActionOverflow\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tbare=\"true\"\n\t\t\t\ticon={'ellipsis-v-fill'}\n\t\t\t\tdata-tooltip={kebabTooltip}\n\t\t\t\tref={actionsKebabButtonRef}\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\tpopoverTarget: actionsKebabButtonRef,\n\t\t\t\t\tpopoverDefinition: {\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tdismissOnScroll: true,\n\t\t\t\t\t\t\thideTail: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\tactions: preparedActions,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcontext,\n\t\t\t\t}}\n\t\t\t\tconfigAria={{\n\t\t\t\t\t'aria-label': kebabTooltip,\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n};\n\n/**\n * This subview renders the content of a row actions cell\n *\n * @param {Object} props\n * @param {number | undefined} props.groupIndex\n * @param {RowActions} props.rowActions an object representing actions that can be taken on this row\n * @param {Row} props.row object representing this cell's parent row\n * @param {Row[]} props.rows all rows\n * @param {object} props.selectedRows\n * @param {number} props.rowIndex\n * @param {function} props.dispatch\n\t\n }}\n */\nexport const rowActionsCell = (props) => {\n\tconst {\n\t\trowActions,\n\t\trow,\n\t\trows,\n\t\tselectedRows,\n\t\trowIndex,\n\t\tgroupIndex,\n\t\tdispatch,\n\t} = props;\n\tconst actions = getRowActionsItemsFromActions(rowActions);\n\n\tif (!actions) return null;\n\n\tlet numActionIcons = getRowActionsNumIconsFromActions(rowActions);\n\n\t// if there would only be one item in the dropdown menu,\n\t// increase the limit by 1 so that all are rendered as icons\n\t// to prevent extra clicks\n\tif (numActionIcons + 1 === actions.length) numActionIcons++;\n\n\t/** @const {<Array>RowActionItem} */\n\tconst actionsForButtons = slice(actions, 0, numActionIcons);\n\t/** @const {<Array>RowActionItem} */\n\tconst actionsForDropdown = slice(actions, numActionIcons, actions.length);\n\tconst buttonsProps = {\n\t\tactions: actionsForButtons,\n\t\tgroupIndex,\n\t\trow,\n\t\trows,\n\t\tselectedRows,\n\t\trowIndex,\n\t\tdispatch,\n\t};\n\tconst dropdownProps = {\n\t\tactions: actionsForDropdown,\n\t\tgroupIndex,\n\t\trow,\n\t\trows,\n\t\tselectedRows,\n\t\trowIndex,\n\t\tdispatch,\n\t};\n\tconst cellContentClassNames = classNames({\n\t\t'cell-content': true,\n\t\t'row-actions-cell-content': true,\n\t\t[SPECIAL_COLUMN_CELL_CONTENT]: true,\n\t});\n\n\treturn (\n\t\t<div className={cellContentClassNames}>\n\t\t\t{renderActionsIconButtons(buttonsProps)}\n\t\t\t{!isEmpty(actionsForDropdown)\n\t\t\t\t? renderKebabDropdown(dropdownProps)\n\t\t\t\t: null}\n\t\t</div>\n\t);\n};\n","import '@servicenow/now-icon';\n\nimport classNames from 'classnames';\nimport { t } from 'sn-translate';\n\nimport { dragHandle } from '../../../../../shared/dragHandle';\nimport { SPECIAL_COLUMN_CELL_CONTENT } from '../rowCellConstants';\n\n/**\n * Renders the row drag handler cell for a row\n *\n * @param {Object} props\n * @param {number} props.rowIndex current index of this row, 1-based\n * @param {boolean} props.showDragHandle prop to render the cell for proper table structure but hide the handle on non re-orderable rows, eg for grouped rows\n */\nexport const rowDragCellContent = (props) => {\n\tconst { rowIndex, showDragHandle } = props;\n\tconst rowDragHandleCellContentClassNames = classNames({\n\t\t'cell-content': true,\n\t\t'row-drag-cell-content': true,\n\t\t[SPECIAL_COLUMN_CELL_CONTENT]: true,\n\t});\n\tconst rowDragHandleClassNames = classNames({\n\t\t'row-drag-handle': true,\n\t});\n\tconst ariaLabel = t(\n\t\t'Press space to begin reordering row {0}',\n\t\trowIndex + 1\n\t);\n\treturn (\n\t\t<div className={rowDragHandleCellContentClassNames}>\n\t\t\t{showDragHandle &&\n\t\t\t\tdragHandle({\n\t\t\t\t\tclassName: rowDragHandleClassNames,\n\t\t\t\t\tariaLabel,\n\t\t\t\t\ttooltip: t('Reorder'),\n\t\t\t\t})}\n\t\t</div>\n\t);\n};\n","import '@servicenow/now-checkbox';\nimport classNames from 'classnames';\nimport { t } from 'sn-translate';\n\nimport { ROW_CHECKBOX_INTERNAL_SET } from '../../../../../../../behaviors/rowSelectionBehavior/constants';\nimport { SPECIAL_COLUMN_CELL_CONTENT } from '../rowCellConstants';\n\n/**\n * Renders the row selection cell for a row\n *\n * @param {Object} props\n * @param {string} props.rowKey row key\n * @param {number} props.rowIndex current index of this row, 1-based\n * @param {Array<string>} props.allRowKeys array of all row keys present on a page\n * @param {boolean} props.isChecked an boolean value to indentify if row is checked or not\n * @param {Object} props.selectedRows an object representing list of rows selected with key indentified as a row key for a row.\n * @param {boolean} props.selectionDisabled a flag to disable row selection\n * @param {*} dispatch seismic dispatch\n */\nexport const rowSelectionCell = (props, dispatch) => {\n\tconst {\n\t\tallRowKeys,\n\t\trowIndex,\n\t\trowKey,\n\t\tisChecked,\n\t\tselectionDisabled,\n\t} = props;\n\n\tconst label = t('Select row');\n\tconst handleChecked = (/** @type {{ shiftKey: any; }} */ event) => {\n\t\tconst shiftKey = event.shiftKey;\n\t\tif (!selectionDisabled) {\n\t\t\tdispatch(ROW_CHECKBOX_INTERNAL_SET, {\n\t\t\t\tshiftKey,\n\t\t\t\tchecked: !isChecked,\n\t\t\t\trowKey,\n\t\t\t\trowIndex,\n\t\t\t\tallRowKeys,\n\t\t\t});\n\t\t}\n\t};\n\n\tconst rowSelectionCellContentClassnames = classNames({\n\t\t'cell-content': true,\n\t\t'row-selection-cell-content': true,\n\t\t[SPECIAL_COLUMN_CELL_CONTENT]: true,\n\t});\n\tconst rowSelectionCheckboxClassNames = classNames({\n\t\t'row-selection-checkbox': true,\n\t\t'is-checked': isChecked,\n\t});\n\n\treturn (\n\t\t<div className={rowSelectionCellContentClassnames}>\n\t\t\t<now-checkbox\n\t\t\t\tname={rowKey}\n\t\t\t\tmanageChecked={true}\n\t\t\t\tchecked={isChecked}\n\t\t\t\ton-click={handleChecked}\n\t\t\t\tclassName={rowSelectionCheckboxClassNames}\n\t\t\t\tdata-testId=\"selection\"\n\t\t\t\tdata-tooltip={label}\n\t\t\t\tconfigAria={{\n\t\t\t\t\t'aria-label': t('Select row {0}', rowIndex + 1),\n\t\t\t\t}}\n\t\t\t\tdisabled={selectionDisabled}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { createRef, Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport kebabCase from 'lodash/kebabCase';\nimport memoize from 'lodash/memoize';\nimport set from 'lodash/set';\nimport truncate from 'lodash/truncate';\nimport { t } from 'sn-translate';\n\nimport {\n\tCELL_EDIT_INTERNAL,\n\tCELL_EDIT_POPOVER_TYPE,\n} from '../../../../../../behaviors/cellEditingBehavior/constants';\nimport { COLUMN_ACTIVE_CLASS } from '../../../../../../behaviors/columnDragDropBehavior/constants';\nimport {\n\tCELL_ACTION,\n\tCELL_ACTION_KEBAB_BUTTON_CLICKED,\n} from '../../../../../../behaviors/contextActionsBehavior/constants';\nimport { KEY } from '../../../../../../behaviors/keyboardNavBehavior/constants';\nimport {\n\tROW_HIGHLIGHT_ACTIVATED,\n\tROW_HIGHLIGHT_DEACTIVATED,\n\tROW_FOCUSED_INTERNAL,\n\tROW_BLUR_INTERNAL,\n} from '../../../../../../behaviors/rowBehavior/constants';\nimport { ALIGNMENT_CLASS_PREFIX } from '../../../../../../typeSchemas/columnDefinitions/alignmentTypes/alignmentTypes';\nimport cellSelectors from '../../../../../utils/selectors/cellSelectors';\nimport columnSelectors from '../../../../../utils/selectors/columnSelectors';\nimport rowSelectors from '../../../../../utils/selectors/rowSelectors';\nimport { booleanView } from '../../../../fields/boolean/boolean';\nimport { choiceView } from '../../../../fields/choice/choice';\nimport { currencyView } from '../../../../fields/currency/currency';\nimport { customComponent } from '../../../../fields/customComponent/customComponent';\nimport { dateTimeView } from '../../../../fields/dateTime/dateTime';\nimport { htmlView } from '../../../../fields/html/html';\nimport { iconView } from '../../../../fields/icon/icon';\nimport { linkView } from '../../../../fields/link/link';\nimport { numberView } from '../../../../fields/number/number';\nimport { percentCompleteView } from '../../../../fields/percentComplete/percentComplete';\nimport { stringView } from '../../../../fields/string/string';\nimport { urlView } from '../../../../fields/url/url';\nimport { getFakeNowIcon } from '../../../../shared/fakeNowIcon';\nimport {\n\tgroupBadgeCellContent,\n\tparentBadgeCellContent,\n} from '../../../../shared/groupBadgeCellContent';\nimport {\n\tgroupToggleCellContent,\n\tparentToggleCellContent,\n} from '../../../../shared/groupToggleCellContent';\nimport {\n\tELLIPSIS_ICON,\n\tINCLUDE_LARGE_PADDING_CLASS,\n\tINCLUDE_SMALL_PADDING_CLASS,\n\tROW_GRAYED_OUT_CLASS,\n\tROW_HIGHLIGHTED_CLASS,\n} from '../../../tableConstants';\n\nimport { getTooltipDataProps } from './cellContentUtils';\nimport { imageCell } from './imageCellType/imageCellType';\nimport { personCell } from './personCellType/personCellType';\nimport { pillsCell } from './pillsCellType/pillsCellType';\nimport { rowActionsCell } from './rowActionsCellType/rowActionsCellType';\nimport {\n\tDATA_COLUMN_CLASS,\n\tROW_CELL_CLASS,\n\tSPECIAL_COLUMN_CELL,\n} from './rowCellConstants';\nimport { rowDragCellContent } from './rowDragCellType/rowDragCellType';\nimport { rowSelectionCell } from './rowSelectionCellType/rowSelectionCellType';\n\nconst {\n\tSPECIAL_TYPE_ACTIONS,\n\tSPECIAL_TYPE_SELECTION,\n\tTYPE_NUMBER,\n\tTYPE_DATE_TIME,\n\tTYPE_BOOLEAN,\n\tTYPE_LINK,\n\tTYPE_URL,\n\tTYPE_ICON,\n\tTYPE_PILLS,\n\tTYPE_PERSON,\n\tTYPE_CURRENCY,\n\tTYPE_CUSTOM,\n\tSPECIAL_TYPE_GROUP_BADGE,\n\tSPECIAL_TYPE_GROUP_TOGGLE,\n\tSPECIAL_TYPE_ROW_DRAG_HANDLE,\n\tTYPE_CHOICE,\n\tTYPE_PERCENT_COMPLETE,\n\tTYPE_HTML,\n\tTYPE_IMAGE,\n\tSPECIAL_TYPE_PARENT_BADGE,\n\tSPECIAL_TYPE_PARENT_TOGGLE,\n} = require('../../../../../../typeSchemas/columnDefinitions/columnTypes/columnTypes');\n\nconst {\n\tgetColumnType,\n\thasCellActions,\n\tgetColumnAlignment,\n\tgetMaxCharacters,\n} = columnSelectors;\nconst { hasHighlightedValue, getLabel } = cellSelectors;\n\n/**\n *\n * @param {string} type\n * @param {UrlCellType} cell\n * @param {ProcessedColumn} column\n * @returns {*} tooltipDataProps\n */\nfunction getTooltipProps(type, cell, column) {\n\tlet tooltipDataProps = {};\n\tif (type === TYPE_URL) {\n\t\tconst label = getLabel(cell);\n\t\tconst truncatedLabel = truncate(label, {\n\t\t\tlength: getMaxCharacters(column),\n\t\t});\n\t\tconst isTruncated = truncatedLabel !== label;\n\t\ttooltipDataProps = getTooltipDataProps(label, isTruncated);\n\t}\n\treturn tooltipDataProps;\n}\n\n/**\n * Renders the proper typed cell content based on the type of its column\n *\n * @param {Object} props\n * @param {CellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {Row} props.row row\n * @param {Array<Row>} props.rows array of row definitions object\n * @param {RowActions} props.rowActions an object representing actions that can be taken on this row\n * @param {number} props.rowIndex current index of this row, 1-based\n * @param {Array<string>} props.allRowKeys array of all row keys present on a page\n * @param {string} props.rowKey row key\n * @param {boolean} props.isChecked an boolean value to indentify if row is checked or not\n * @param {Object} props.selectedRows an object representing list of rows selected with key indentified as a row key for a row.\n * @param {TableMetadata} props.tableMetadata metadata for the entire table\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {object} props.contextApi\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {number | undefined} props.groupIndex\n * @param {number | undefined} props.nestedLevel\n * @param {string} dir a string value that represents the language direction\n * @param {*} dispatch seismic dispatch\n * @param {boolean} isRecentUpdate a boolean value that represents if the row was recently updated\n */\nexport const renderTypedCellContent = (\n\tprops,\n\tdir,\n\tdispatch,\n\tisRecentUpdate\n) => {\n\tconst {\n\t\tcolumn,\n\t\tcell,\n\t\trow,\n\t\trows,\n\t\trowActions,\n\t\trowIndex,\n\t\tallRowKeys,\n\t\trowKey,\n\t\tisChecked,\n\t\tselectedRows,\n\t\ttableMetadata,\n\t\trowGroupingState,\n\t\tclickableTextEnabled,\n\t\thighlightedContent,\n\t\tcontextApi,\n\t\tgroupIndex,\n\t\tnestedLevel,\n\t} = props;\n\tconst type = getColumnType(column);\n\tset(cell, 'type', type);\n\tconst isHighlightedValue = hasHighlightedValue(cell);\n\n\tconst selectionDisabled = rowSelectors.getSelectionDisabledForParticularRow(\n\t\trow\n\t);\n\n\tconst dataCellProps = {\n\t\tcell,\n\t\tcolumn,\n\t\tclickableTextEnabled,\n\t\thighlightedContent,\n\t\trow,\n\t\ttableMetadata,\n\t\tcontextApi,\n\t\tisHighlightedValue,\n\t};\n\n\tconst rowActionsCellProps = {\n\t\tgroupIndex,\n\t\trow,\n\t\trows,\n\t\trowActions,\n\t\trowIndex,\n\t\tselectedRows,\n\t\tdispatch,\n\t};\n\n\tconst rowSelectionCellProps = {\n\t\trowKey,\n\t\trowIndex,\n\t\tallRowKeys,\n\t\tisChecked,\n\t\tselectedRows,\n\t\tselectionDisabled,\n\t};\n\n\tconst groupToggleCellProps = {\n\t\trow,\n\t\trowGroupingState,\n\t\tdispatch,\n\t\tnestedLevel,\n\t};\n\tconst customComponentProps = {\n\t\tdir,\n\t\t...dataCellProps,\n\t};\n\n\tswitch (type) {\n\t\tcase SPECIAL_TYPE_ROW_DRAG_HANDLE:\n\t\t\treturn rowDragCellContent({ rowIndex, showDragHandle: true });\n\t\tcase SPECIAL_TYPE_GROUP_TOGGLE:\n\t\t\treturn groupToggleCellContent(groupToggleCellProps, isRecentUpdate);\n\t\tcase SPECIAL_TYPE_GROUP_BADGE:\n\t\t\treturn groupBadgeCellContent(row, groupToggleCellProps);\n\t\tcase SPECIAL_TYPE_PARENT_TOGGLE:\n\t\t\treturn parentToggleCellContent(\n\t\t\t\tgroupToggleCellProps,\n\t\t\t\tisRecentUpdate\n\t\t\t);\n\t\tcase SPECIAL_TYPE_PARENT_BADGE:\n\t\t\treturn parentBadgeCellContent(row);\n\t\tcase SPECIAL_TYPE_ACTIONS:\n\t\t\treturn rowActionsCell(rowActionsCellProps);\n\t\tcase SPECIAL_TYPE_SELECTION:\n\t\t\treturn rowSelectionCell(rowSelectionCellProps, dispatch);\n\t\tcase TYPE_NUMBER:\n\t\t\treturn numberView(dataCellProps, dispatch, isRecentUpdate);\n\t\tcase TYPE_PERCENT_COMPLETE:\n\t\t\treturn percentCompleteView(dataCellProps, dispatch, isRecentUpdate);\n\t\tcase TYPE_DATE_TIME:\n\t\t\treturn dateTimeView(dataCellProps, dispatch, isRecentUpdate);\n\t\tcase TYPE_BOOLEAN:\n\t\t\treturn booleanView(dataCellProps, dispatch, isRecentUpdate);\n\t\tcase TYPE_ICON:\n\t\t\treturn iconView(dataCellProps, dispatch, isRecentUpdate);\n\t\tcase TYPE_IMAGE:\n\t\t\treturn imageCell(dataCellProps, dispatch, isRecentUpdate);\n\t\tcase TYPE_LINK:\n\t\t\treturn linkView(dataCellProps, dispatch, isRecentUpdate);\n\t\tcase TYPE_URL:\n\t\t\treturn urlView(dataCellProps);\n\t\tcase TYPE_PILLS:\n\t\t\t// replace below with `return pillsView({ props, dispatch });`\n\t\t\treturn pillsCell(dataCellProps, dispatch);\n\t\tcase TYPE_PERSON:\n\t\t\treturn personCell(dataCellProps, dispatch);\n\t\tcase TYPE_CURRENCY:\n\t\t\treturn currencyView(dataCellProps, dispatch, isRecentUpdate);\n\t\tcase TYPE_CUSTOM:\n\t\t\treturn customComponent(customComponentProps, dispatch);\n\t\tcase TYPE_CHOICE:\n\t\t\treturn choiceView(dataCellProps, dispatch, isRecentUpdate);\n\t\tcase TYPE_HTML:\n\t\t\treturn htmlView(dataCellProps);\n\t\tdefault:\n\t\t\treturn stringView(dataCellProps, dispatch, isRecentUpdate);\n\t}\n};\n\n/**\n * Renders Cell actions trigger button for a cell\n * @param {Object} props\n * @param {CellType} props.cell an object representing this cell\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {number} props.rowIndex row index, 1-based\n * @param {number | undefined} props.groupIndex group index, 1-based\n * @param {Row} props.row row\n * @param {*} dispatch seismic dispatch\n */\nexport const renderCellActionsButton = (props, dispatch) => {\n\tconst { row, column, cell, rowIndex, groupIndex } = props;\n\n\tconst cellActionsRef = createRef();\n\tconst context = {\n\t\trow,\n\t\tcolumn,\n\t\tcell,\n\t\trowIndex,\n\t\tgroupIndex,\n\t\ttypeOfAction: CELL_ACTION,\n\t};\n\n\tconst ariaLabel = t('Cell actions');\n\n\t// STRY57085591 we are replacing now-button-iconic with button for performance improvement\n\treturn (\n\t\t<button\n\t\t\tdata-testid=\"cellAction\"\n\t\t\tdata-ancillary=\"true\"\n\t\t\tclassName=\"row-cell-actions-button\"\n\t\t\taria-label={ariaLabel}\n\t\t\tref={cellActionsRef}\n\t\t\tdata-tooltip={ariaLabel}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(CELL_ACTION_KEBAB_BUTTON_CLICKED, {\n\t\t\t\t\tcontext,\n\t\t\t\t\tpopoverTarget: cellActionsRef,\n\t\t\t\t\ttypeOfAction: CELL_ACTION,\n\t\t\t\t});\n\t\t\t}}\n\t\t>\n\t\t\t{getFakeNowIcon(ELLIPSIS_ICON, 'sm')}\n\t\t</button>\n\t);\n};\n\n/**\n * This is the generic body cell renderer for all of the non-header cells in the table. Typed cells are subviews of this view.\n *\n * @param {Object} props\n * @param {ProcessedColumn} props.column an object representing this cell's parent column\n * @param {number} props.rowIndex row index, 1-based\n * @param {number} props.columnIndex column index for the row\n * @param {string} props.columnKey column key\n * @param {string} props.rowKey row key\n * @param {Row} props.row row\n * @param {Array<Row>} props.rows array of row definitions object\n * @param {RowActions} props.rowActions an object representing actions that can be taken on this row\n * @param {Array<CellActionItem>} props.cellActions an array representing actions that can be taken on this cell\n * @param {CellType} props.cell an object representing this cell\n * @param {Array<string>} props.allRowKeys array of all row keys present on a page\n * @param {boolean} props.isChecked an boolean value to indentify if row is checked or not\n * @param {Object} props.selectedRows an object representing list of rows selected with key indentified as a row key for a row.\n * @param {TableMetadata} props.tableMetadata an object representing the metadata for the table\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {boolean} props.isDefaultRowWithChildrenType property defining whether a group is grouped or not\n * @param {string} props.firstColumnKey first column key, for determining if padding left should be added\n * @param {string} props.firstDataColumnKey first column key excluding special type columns (only including body data)\n * @param {string} props.focusedRowKey focused row key\n * @param {Object} props.parentGroupClassNames an object representing the class names for parent child grouped rows\n * @param {string} props.dir a prop representing the language direction.\n * @param {object} props.contextApi\n * @param {RowIndexesMap} props.rowIndexesMap map containing rowKeys and indexes\n * @param {number | undefined} props.groupIndex\n * @param {*} dispatch seismic dispatch\n */\n\nconst isRowHighlightedMemoized = memoize(rowSelectors.isRowHighlighted);\nconst isSpecialColumnMemoized = memoize(columnSelectors.isSpecialColumn);\nconst isRecentAddedOrUpdatedRowMemoized = memoize(\n\trowSelectors.isRecentlyAddedOrUpdatedRow\n);\nconst hasCellActionsMemoized = memoize(hasCellActions);\nconst getColumnAlignmentMemoized = memoize(getColumnAlignment);\n\n// @ts-ignore\nexport function handleMouseOver(isSpecialColumn, rowKey, dispatch) {\n\tif (isSpecialColumn) {\n\t\tdispatch(ROW_HIGHLIGHT_ACTIVATED, {\n\t\t\trowKey,\n\t\t});\n\t}\n}\n\n// @ts-ignore\nexport function handleMouseOut(isSpecialColumn, dispatch) {\n\tif (isSpecialColumn) {\n\t\tdispatch(ROW_HIGHLIGHT_DEACTIVATED);\n\t}\n}\n\n// @ts-ignore\nexport function handleBlur(focusedRowKey, rowKey, dispatch) {\n\tif (focusedRowKey === rowKey) {\n\t\tdispatch(ROW_BLUR_INTERNAL, {\n\t\t\trowKey,\n\t\t});\n\t}\n}\n\n// @ts-ignore\nexport function handleFocus(focusedRowKey, rowKey, dispatch) {\n\tif (focusedRowKey !== rowKey) {\n\t\tdispatch(ROW_FOCUSED_INTERNAL, {\n\t\t\trowKey,\n\t\t});\n\t}\n}\n\n// @ts-ignore\nexport function handleDoubleClick(cellRef, context, dispatch) {\n\tdispatch(CELL_EDIT_INTERNAL, {\n\t\tcellRef,\n\t\tcontext,\n\t});\n}\n\n// @ts-ignore\nexport function handleKeyPress(event, cellRef, context, dispatch) {\n\tif (event.key !== KEY.ENTER || !event.shiftKey) return;\n\tdispatch(CELL_EDIT_INTERNAL, {\n\t\tcellRef,\n\t\tcontext,\n\t});\n}\n\n/**\n *\n * @param {number} nestedLevel\n * @param {string} columnKey\n * @param {string} firstDataColumnKey\n * @param {Document} document\n * @returns {object}\n */\nexport const addChildRowMargin = (\n\tnestedLevel,\n\tdocument,\n\tcolumnKey = '',\n\tfirstDataColumnKey = ''\n) => {\n\tif (!nestedLevel) return {};\n\n\tif (columnKey && firstDataColumnKey && firstDataColumnKey !== columnKey)\n\t\treturn {};\n\n\tconst CHILDREN_ROW_PX_INDENT = 12;\n\tconst childRowMargin = nestedLevel * CHILDREN_ROW_PX_INDENT;\n\treturn {\n\t\t'margin-inline-start': `${childRowMargin}px`,\n\t};\n};\n\n// @ts-ignore\nexport const rowCell = (props, dispatch) => {\n\tconst {\n\t\tcell,\n\t\tcellEditingEnabled,\n\t\tcolumn,\n\t\tcolumnIndex,\n\t\tcolumnKey,\n\t\tdir,\n\t\tfirstColumnKey,\n\t\tfirstDataColumnKey,\n\t\tfocusedRowKey,\n\t\tgroupIndex,\n\t\tshowInlinePadding,\n\t\tparentGroupClassNames,\n\t\trow,\n\t\trowDragDropEnabled,\n\t\trowIndex,\n\t\trowIndexesMap,\n\t\trowKey,\n\t} = props;\n\tconst { nestedLevel } = props;\n\tconst isHighlighted = isRowHighlightedMemoized(row);\n\tconst isSpecialColumn = isSpecialColumnMemoized(column);\n\tconst shouldRenderRecentlyUpdatedIcon =\n\t\tisRecentAddedOrUpdatedRowMemoized(row) &&\n\t\t!isSpecialColumn &&\n\t\tfirstDataColumnKey === columnKey;\n\tconst shouldRenderActionsButton =\n\t\thasCellActionsMemoized(cell) || hasCellActionsMemoized(column);\n\tconst alignment = getColumnAlignmentMemoized(column);\n\tconst alignmentClassName = ALIGNMENT_CLASS_PREFIX + alignment;\n\tconst isGrayedOut = rowSelectors.isRowGrayedOut(row);\n\tconst shouldHaveIndent =\n\t\tshowInlinePadding &&\n\t\tfirstColumnKey === columnKey &&\n\t\t!rowDragDropEnabled;\n\n\tconst type = getColumnType(column);\n\n\tconst cellClassNames = classNames(\n\t\tROW_CELL_CLASS,\n\t\t`${kebabCase(\n\t\t\ttype === TYPE_HTML ? type : columnKey\n\t\t)} ${alignmentClassName}`,\n\t\t{\n\t\t\t[COLUMN_ACTIVE_CLASS]: columnSelectors.isColumnActive(column),\n\t\t\t[ROW_HIGHLIGHTED_CLASS]: isHighlighted,\n\t\t\t[ROW_GRAYED_OUT_CLASS]: isGrayedOut,\n\t\t},\n\t\tisSpecialColumn ? SPECIAL_COLUMN_CELL : DATA_COLUMN_CLASS,\n\t\tparentGroupClassNames\n\t);\n\n\tconst cellContentClassNames = classNames('row-cell-content', {\n\t\t[ROW_HIGHLIGHTED_CLASS]: isHighlighted,\n\t\t[INCLUDE_LARGE_PADDING_CLASS]: shouldHaveIndent && isSpecialColumn,\n\t\t[INCLUDE_SMALL_PADDING_CLASS]: shouldHaveIndent && !isSpecialColumn,\n\t\t[ROW_GRAYED_OUT_CLASS]: isGrayedOut,\n\t});\n\n\t/**\n\t * when cell type is url the tooltip on cell will be the cell content and tooltip for link will be open in new new/current tab\n\t */\n\tconst tooltipDataProps = getTooltipProps(type, cell, column);\n\tconst cellRef = createRef();\n\tconst context = {\n\t\trow,\n\t\tcolumn,\n\t\tcell,\n\t\t// In case of grouped lists, we need to get right index for a row in order to show popover.\n\t\t// @ts-ignore\n\t\trowIndex: rowIndexesMap[rowKey],\n\t\tcolumnIndex,\n\t\ttypeOfAction: CELL_EDIT_POPOVER_TYPE,\n\t};\n\n\t// @ts-ignore\n\t// eslint-disable-next-line no-unused-vars\n\tconst cellEditingPayload = {\n\t\tcellRef: cellRef,\n\t\tcontext: context,\n\t};\n\tconst cellEditingLabel = t(\n\t\t'Press and hold Shift then press Enter to edit.'\n\t);\n\tconst a11yLabelId = `cell-editing-label-${columnIndex}-${rowIndex}`;\n\treturn (\n\t\t<td\n\t\t\tref={cellRef}\n\t\t\tkey={`row_index_${rowIndex}_col_index_${columnIndex}`}\n\t\t\tclassName={cellClassNames}\n\t\t\tdir={dir}\n\t\t\tdata-columnKey={columnKey}\n\t\t\tdata-rowPath={`[${rowIndex}]`}\n\t\t\tdata-rowIndex={rowIndex}\n\t\t\t{...(groupIndex !== undefined\n\t\t\t\t? { 'data-groupIndex': String(groupIndex) }\n\t\t\t\t: {})}\n\t\t\ton-mouseover={() =>\n\t\t\t\thandleMouseOver(isSpecialColumn, rowKey, dispatch)\n\t\t\t}\n\t\t\ton-mouseout={() => handleMouseOut(isSpecialColumn, dispatch)}\n\t\t\ton-blur={() => handleBlur(focusedRowKey, rowKey, dispatch)}\n\t\t\ton-focus={() => handleFocus(focusedRowKey, rowKey, dispatch)}\n\t\t\ton-dblclick={() => handleDoubleClick(cellRef, context, dispatch)}\n\t\t\t// @ts-ignore\n\t\t\ton-keypress={(event) =>\n\t\t\t\thandleKeyPress(event, cellRef, context, dispatch)\n\t\t\t}\n\t\t\t{...tooltipDataProps}\n\t\t\tariaDescribedBy={a11yLabelId}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cellContentClassNames}\n\t\t\t\t// HTML scrollable cells get tab focus when they should not, this fixes that issue\n\t\t\t\t{...(type === TYPE_HTML ? { tabindex: -1 } : {})}\n\t\t\t\tstyle={addChildRowMargin(\n\t\t\t\t\tnestedLevel,\n\t\t\t\t\tdocument,\n\t\t\t\t\tcolumnKey,\n\t\t\t\t\tfirstDataColumnKey\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{renderTypedCellContent(\n\t\t\t\t\tprops,\n\t\t\t\t\tdir,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tshouldRenderRecentlyUpdatedIcon\n\t\t\t\t)}\n\t\t\t\t{shouldRenderActionsButton && (\n\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t{renderCellActionsButton(props, dispatch)}\n\t\t\t\t\t</Fragment>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{cellEditingEnabled && (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"now-a11y-label\"\n\t\t\t\t\tid={a11yLabelId}\n\t\t\t\t\taria-label={cellEditingLabel}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</td>\n\t);\n};\n","import { Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { t } from 'sn-translate';\n\nimport '@servicenow/now-badge';\nimport { getVirtualizedBehaviorState } from '../../../../../behaviors/virtualizedListBehavior/virtualizedListBehaviorUtils';\nimport {\n\tSPECIAL_TYPE_GROUP_BADGE,\n\tSPECIAL_TYPE_GROUP_TOGGLE,\n} from '../../../../../typeSchemas/columnDefinitions/columnTypes/columnTypes';\nimport {\n\tROW_ALIGNMENT_CENTER,\n\tROW_ALIGNMENT_DEFAULT,\n\tROW_ALIGNMENT_INVERSE,\n} from '../../../../../typeSchemas/rowDefinitions/rowAlignments/rowAlignment';\nimport {\n\tcustomComponentType,\n\trenderCustomComponentDisplay,\n} from '../../../../utils/customLoader';\nimport columnSelectors from '../../../../utils/selectors/columnSelectors';\nimport rowSelectors from '../../../../utils/selectors/rowSelectors';\nimport shouldShadeAlternateRows from '../../../../utils/shadeAlternateRows';\nimport { groupBadgeCellContent } from '../../../shared/groupBadgeCellContent';\nimport { groupToggleCellContent } from '../../../shared/groupToggleCellContent';\nimport {\n\tCOL_SPAN_MAX,\n\tROW_GRAYED_OUT_CLASS,\n\tROW_HIGHLIGHTED_CLASS,\n\tROW_RECENT_UPDATED_CLASS,\n} from '../../tableConstants';\n\nimport { renderGroupActions } from './groupedRowUtils';\nimport { rowCell, addChildRowMargin } from './rowCell/rowCell';\nimport {\n\tROW_CELL_CLASS,\n\tSPECIAL_COLUMN_CELL,\n} from './rowCell/rowCellConstants';\nimport { rowDragCellContent } from './rowCell/rowDragCellType/rowDragCellType';\n\nconst {\n\tROW_TYPE_GROUPED,\n} = require('../../../../../typeSchemas/rowDefinitions/rowTypes/rowTypes');\n\nconst {\n\tgetColumnEdges,\n\tgetFirstColumnEdge,\n\tgetColumnFromProcessedCols,\n\tgetCellActionsFromProcessedCols,\n} = columnSelectors;\nconst {\n\tfindCell,\n\tgetCells,\n\tgetRowType,\n\tgetRowKey,\n\tisDefaultRowWithChildren,\n\tgetChildren,\n\tisGroupedRow,\n\tgetGroupedRowLabel,\n\tgetGroupedRowCount,\n\tgetGroupActions,\n} = rowSelectors;\n\n/**\n * Renders each cell in this row.\n *\n * @param {Object} props\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {Row} props.row an object representing a single row in the table, including its cells and config options\n * @param {Array<Row>} props.rows array of row definitions object\n * @param {boolean} props.cellEditingEnabled whether or not cell editing is enabled\n * @param {number} props.index an object representing a single row in the table, including its cells and config options. 1-indexed\n * @param {RowActions} props.rowActions an object representing actions that can be taken on this row\n * @param {Array<string>} props.allRowKeys array of all row keys present on a page\n * @param {string} props.rowKey row key\n * @param {string} props.focusedRowKey focused row key\n * @param {boolean} props.isChecked an boolean value to indentify if row is checked or not\n * @param {Object} props.selectedRows an object representing list of rows selected with key indentified as a row key for a row.\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {TableMetadata} props.tableMetadata an object representing the metadata of the table\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {boolean} props.isDefaultRowWithChildrenType property defining whether a group is of type default and has children under it\n * @param {Object} props.parentGroupClassNames an object representing the class names for parent child grouped rows\n * @param {string} props.dir a prop representing the language direction.\n * @param {object} props.contextApi\n * @param {RowIndexesMap} props.rowIndexesMap map containing rowKeys and indexes\n * @param {number | undefined} props.groupIndex index of the parent row group, if exists\n * @param {number | undefined} props.nestedLevel\n * @param {boolean} props.showInlinePadding\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {*} dispatch seismic dispatch\n */\nexport const renderChildRowCells = (props, dispatch) => {\n\tconst {\n\t\tallRowKeys,\n\t\tcellEditingEnabled,\n\t\tclickableTextEnabled,\n\t\tcontextApi,\n\t\tdir,\n\t\tfocusedRowKey,\n\t\tgroupIndex,\n\t\thighlightedContent,\n\t\tshowInlinePadding,\n\t\tindex: rowIndex,\n\t\tisChecked,\n\t\tisDefaultRowWithChildrenType,\n\t\tparentGroupClassNames,\n\t\tprocessedColumnDefinitions,\n\t\trow,\n\t\trowActions,\n\t\trowDragDropEnabled,\n\t\trowGroupingState,\n\t\trowIndexesMap,\n\t\trowKey,\n\t\trows,\n\t\tselectedRows,\n\t\ttableMetadata,\n\t} = props;\n\n\tconst { nestedLevel } = props;\n\t/** @type {Array<String>} */\n\tconst columnEdges = getColumnEdges(processedColumnDefinitions);\n\n\tconst firstColumnKey = columnEdges[0];\n\tconst firstDataColumnKey = getFirstColumnEdge(columnEdges);\n\n\t// for each column, find and render its child cell in this row\n\treturn columnEdges.map((columnKey, columnIndex) => {\n\t\tconst column = getColumnFromProcessedCols(\n\t\t\tprocessedColumnDefinitions,\n\t\t\tcolumnKey\n\t\t);\n\n\t\tconst cellActions = getCellActionsFromProcessedCols(\n\t\t\tprocessedColumnDefinitions,\n\t\t\tcolumn\n\t\t);\n\t\t/** @type {CellType} */\n\t\tconst cell = findCell(row, columnKey);\n\n\t\tconst cellProps = {\n\t\t\tallRowKeys,\n\t\t\tcell,\n\t\t\tcellActions,\n\t\t\tcellEditingEnabled,\n\t\t\tclickableTextEnabled,\n\t\t\tcolumn,\n\t\t\tcolumnIndex,\n\t\t\tcolumnKey,\n\t\t\tcontextApi,\n\t\t\tdir,\n\t\t\tfirstColumnKey,\n\t\t\tfirstDataColumnKey,\n\t\t\tfocusedRowKey,\n\t\t\tgroupIndex,\n\t\t\thighlightedContent,\n\t\t\tshowInlinePadding,\n\t\t\tisChecked,\n\t\t\tisDefaultRowWithChildrenType,\n\t\t\tnestedLevel,\n\t\t\tparentGroupClassNames,\n\t\t\trow,\n\t\t\trowActions,\n\t\t\trowDragDropEnabled,\n\t\t\trowGroupingState,\n\t\t\trowIndex,\n\t\t\trowIndexesMap,\n\t\t\trowKey,\n\t\t\trows,\n\t\t\tselectedRows,\n\t\t\ttableMetadata,\n\t\t};\n\n\t\treturn rowCell(cellProps, dispatch);\n\t});\n};\n\n//@ts-ignore\nexport const renderRowCells = (props, dispatch, colProps, cellMap) => {\n\tconst {\n\t\tcolumnEdges,\n\t\tfirstColumnKey,\n\t\tfirstDataColumnKey,\n\t\tcolumnsMap,\n\t\tcellActionsMap,\n\t} = colProps;\n\tconst {\n\t\tallRowKeys,\n\t\tcellEditingEnabled,\n\t\tclickableTextEnabled,\n\t\tcontextApi,\n\t\tdir,\n\t\tfocusedRowKey,\n\t\tgroupIndex,\n\t\thighlightedContent,\n\t\tshowInlinePadding,\n\t\tindex: rowIndex,\n\t\tisChecked,\n\t\tisDefaultRowWithChildrenType,\n\t\tparentGroupClassNames,\n\t\trow,\n\t\trowActions,\n\t\trowDragDropEnabled,\n\t\trowGroupingState,\n\t\trowIndexesMap,\n\t\trowKey,\n\t\trows,\n\t\tselectedRows,\n\t\ttableMetadata,\n\t\tvirtualizedScrollEnabled,\n\t} = props;\n\n\tconst { nestedLevel } = props;\n\n\tconst cellProps = {\n\t\tallRowKeys,\n\t\tcellEditingEnabled,\n\t\tclickableTextEnabled,\n\t\tcontextApi,\n\t\tdir,\n\t\tfirstColumnKey,\n\t\tfirstDataColumnKey,\n\t\tfocusedRowKey,\n\t\tgroupIndex,\n\t\thighlightedContent,\n\t\tshowInlinePadding,\n\t\tisChecked,\n\t\tisDefaultRowWithChildrenType,\n\t\tnestedLevel,\n\t\tparentGroupClassNames,\n\t\trow,\n\t\trowActions,\n\t\trowDragDropEnabled,\n\t\trowGroupingState,\n\t\trowIndex,\n\t\trowIndexesMap,\n\t\trowKey,\n\t\trows,\n\t\tselectedRows,\n\t\ttableMetadata,\n\t\tvirtualizedScrollEnabled,\n\t};\n\n\t// for each column, find and render its child cell in this row\n\t// @ts-ignore\n\treturn columnEdges.map((columnKey, columnIndex) => {\n\t\t// Update only the necessary properties of cellProps\n\t\t// @ts-ignore\n\t\tcellProps.cell = cellMap.get(columnKey);\n\t\t// @ts-ignore\n\t\tcellProps.column = columnsMap.get(columnKey);\n\t\t// @ts-ignore\n\t\tcellProps.columnIndex = columnIndex;\n\t\t// @ts-ignore\n\t\tcellProps.columnKey = columnKey;\n\t\t// @ts-ignore\n\t\tcellProps.cellActions = cellActionsMap.get(columnKey);\n\t\treturn rowCell(cellProps, dispatch);\n\t});\n};\n\n/**\n * This subview renders children rows\n *\n * @param {Object} props\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * @param {boolean | undefined} props.virtualizedScrollEnabled whether or not virtualized scrolling is enabled\n * \tHas been processed and cleaned by columnBehavior.\n * @param {String} props.componentId nowId of the component\n * @param {boolean} props.cellEditingEnabled whether or not cell editing is enabled\n * @param {Row} props.row an object representing a single row in the table, including its cells and config options\n * @param {Array<Row>} props.rows array of row definitions object\n * @param {number} props.index Current Row Index\n * @param {RowActions} props.rowActions an object representing actions that can be taken on this row\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {RowSelectionState} props.rowSelectionState row selection state\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {Array<string>} props.highlightedContent array of string patterns to be highlighted\n * @param {string} props.focusedRowKey focused row key\n * @param {Array<string>} props.allRowKeys array of all row keys present on a page\n * @param {string} props.activeRowKey The key of a row that should be highlighted to indicate a possible row action.\n * @param {TableMetadata} props.tableMetadata An object representing the metadata for a given table\n * @param {number | undefined} props.groupIndex Index of grouped row. Used while rendering rows under a group\n * @param {String} props.dir a prop representing the language direction\n * @param {object} props.contextApi\n * @param {State} props.behaviors\n * @param {RowIndexesMap} props.rowIndexesMap map containing rowKeys and indexes\n * @param {string} props.shadeAlternateRows\n * @param {number} props.nestedLevel\n * @param {boolean} props.showInlinePadding\n * @param {*} dispatch seismic dispatch\n */\nexport const renderChildrenRows = (props, dispatch) => {\n\tconst {\n\t\tactiveRowKey,\n\t\tallRowKeys,\n\t\tbehaviors,\n\t\tcellEditingEnabled,\n\t\tclickableTextEnabled,\n\t\tcomponentId,\n\t\tcontextApi,\n\t\tdir,\n\t\tfocusedRowKey,\n\t\tgroupIndex,\n\t\thighlightedContent,\n\t\tshowInlinePadding,\n\t\tprocessedColumnDefinitions,\n\t\trow,\n\t\trowActions,\n\t\trowDragDropEnabled,\n\t\trowGroupingState,\n\t\trowIndexesMap,\n\t\trowSelectionState,\n\t\trows,\n\t\tshadeAlternateRows,\n\t\ttableMetadata,\n\t\tvirtualizedScrollEnabled,\n\t} = props;\n\n\tconst groupKey = getRowKey(row);\n\tconst children = getChildren(row);\n\tconst isDefaultRowWithChildrenType = isDefaultRowWithChildren(row);\n\tconst isGroupedRowType = isGroupedRow(row);\n\tif (isEmpty(children)) return;\n\tconst { nestedLevel } = props;\n\n\tconst rowCount = getGroupedRowCount(row) ?? children.length;\n\treturn children.map((\n\t\t/** @type {Row} */ row,\n\t\t/** @type {number} */ index\n\t) => {\n\t\tconst rowProps = {\n\t\t\tactiveRowKey,\n\t\t\tallRowKeys,\n\t\t\tbehaviors,\n\t\t\tcellEditingEnabled,\n\t\t\tclickableTextEnabled,\n\t\t\tcomponentId,\n\t\t\tcontextApi,\n\t\t\tdir,\n\t\t\tfocusedRowKey,\n\t\t\tgroupIndex,\n\t\t\tgroupKey,\n\t\t\thighlightedContent,\n\t\t\tshowInlinePadding,\n\t\t\tindex,\n\t\t\tisDefaultRowWithChildrenType,\n\t\t\tisGroupedRowType,\n\t\t\tisLastChildRow: index === children.length - 1,\n\t\t\tnestedLevel,\n\t\t\tprocessedColumnDefinitions,\n\t\t\trow,\n\t\t\trowActions,\n\t\t\trowCount,\n\t\t\trowDragDropEnabled,\n\t\t\trowGroupingState,\n\t\t\trowIndexesMap,\n\t\t\trowSelectionState,\n\t\t\trows,\n\t\t\tshadeAlternateRows,\n\t\t\ttableHasGroupedRows: true,\n\t\t\ttableMetadata,\n\t\t\tvirtualizedScrollEnabled,\n\t\t};\n\n\t\treturn tableRow(rowProps, dispatch, true, null);\n\t});\n};\n\n/**\n * This subview renders a grouped row and its children\n *\n * @param {Object} props\n * @param {boolean | undefined} props.virtualizedScrollEnabled whether or not virtualized scrolling is enabled\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {Row} props.row an object representing a single row in the table, including its cells and config options\n * @param {boolean} props.cellEditingEnabled whether or not cell editing is enabled\n * @param {Array<Row>} props.rows array of row definitions object\n * @param {number} props.rowCount The number of rows within the current group\n * @param {number} props.index Current Row Index\n * @param {RowActions} props.rowActions an object representing actions that can be taken on this row\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {RowSelectionState} props.rowSelectionState row selection state\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {string} props.focusedRowKey focused row key\n * @param {Array<string>} props.allRowKeys array of all row keys present on a page\n * @param {string} props.activeRowKey The key of a row that should be highlighted to indicate a possible row action.\n * @param {TableMetadata} props.tableMetadata An object representing the metadata for a given table\n * @param {String} props.dir a prop representing the language direction\n * @param {number | undefined} props.groupIndex Index of grouped row. Used while rendering rows under a group\n * @param {object} props.contextApi\n * @param {RowIndexesMap} props.rowIndexesMap map containing rowKeys and indexes\n * @param {string} props.shadeAlternateRows\n * @param {String} props.componentId nowId of the component\n * @param {State} props.behaviors\n * @param {number} props.nestedLevel\n * @param {boolean} props.showInlinePadding\n * @param {*} dispatch seismic dispatch\n */\n\nexport const renderGroupedRowAndChildren = (props, dispatch) => {\n\tconst {\n\t\tclickableTextEnabled,\n\t\tdir,\n\t\tshowInlinePadding,\n\t\tindex,\n\t\tprocessedColumnDefinitions,\n\t\trow,\n\t\trowCount,\n\t\trowDragDropEnabled,\n\t\trowGroupingState,\n\t} = props;\n\tconst { expandedGroupsArray } = rowGroupingState;\n\tconst rowKey = getRowKey(row);\n\tconst groupedRowLabel = getGroupedRowLabel(row);\n\tconst groupActions = getGroupActions(row);\n\tconst groupedRowCount = getGroupedRowCount(row);\n\tconst isRecentlyAddedOrUpdated = rowSelectors.isRecentlyAddedOrUpdatedRow(\n\t\trow\n\t);\n\tconst { nestedLevel } = props;\n\tconst isGroupExpanded = expandedGroupsArray.includes(rowKey);\n\tconst columnEdges = getColumnEdges(processedColumnDefinitions);\n\tconst toggleProps = {\n\t\trow,\n\t\trowGroupingState,\n\t\tclickableTextEnabled,\n\t\tdispatch,\n\t\tnestedLevel,\n\t};\n\tconst trClassNames = classNames({\n\t\t'grouped-row': true,\n\t\t[ROW_RECENT_UPDATED_CLASS]: isRecentlyAddedOrUpdated,\n\t});\n\tconst specialCellClassNames = classNames({\n\t\t[ROW_CELL_CLASS]: true,\n\t\t[SPECIAL_COLUMN_CELL]: true,\n\t});\n\tconst dragDropHandleCellClassNames = classNames({\n\t\t'row-drag': true,\n\t});\n\tconst groupToggleCellClassNames = classNames({\n\t\t'group-toggle': true,\n\t\t'is-group-opened': isGroupExpanded,\n\t\t'is-group-closed': !isGroupExpanded,\n\t});\n\tconst groupedInfoClassName = classNames({\n\t\t'is-group-opened': isGroupExpanded,\n\t\t'is-group-closed': !isGroupExpanded,\n\t});\n\tconst groupToggleCellContentClassNames = classNames('row-cell-content', {\n\t\t// if row drag drop is not present, the grouping toggle will always be the first column in grouped type rows\n\t\t['large-grouped-row-indent']: !rowDragDropEnabled && showInlinePadding,\n\t\t['small-grouped-row-indent']: !rowDragDropEnabled && !showInlinePadding,\n\t});\n\tconst groupBadgeCellContentClassNames = classNames('row-cell-content');\n\t// the main group cell takes up the entire row except for special cells: grouping toggle which is always present, grouping badge is present if a count is provided, row drag is present if turned on\n\tlet mainCellColSpan = columnEdges.length - 1;\n\tif (rowDragDropEnabled) mainCellColSpan--;\n\tif (groupedRowCount != undefined) mainCellColSpan--;\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<tr\n\t\t\t\tkey={rowKey}\n\t\t\t\tclassName={trClassNames}\n\t\t\t\tdata-key={rowKey}\n\t\t\t\tdata-rowDefinitionPath={`[${rowKey}]`}\n\t\t\t\taria-expanded={`${isGroupExpanded}`}\n\t\t\t\taria-level=\"1\"\n\t\t\t\taria-posinset={`${index + 1}`}\n\t\t\t\taria-setsize={`${rowCount}`}\n\t\t\t>\n\t\t\t\t{rowDragDropEnabled && (\n\t\t\t\t\t<td\n\t\t\t\t\t\tclassName={`${specialCellClassNames} ${dragDropHandleCellClassNames} ${groupedInfoClassName}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{rowDragCellContent({\n\t\t\t\t\t\t\t\trowIndex: index,\n\t\t\t\t\t\t\t\tshowDragHandle: false,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t)}\n\t\t\t\t<td\n\t\t\t\t\tclassName={`${specialCellClassNames} ${groupToggleCellClassNames}`}\n\t\t\t\t\tdata-columnKey={SPECIAL_TYPE_GROUP_TOGGLE}\n\t\t\t\t\tdir={dir}\n\t\t\t\t>\n\t\t\t\t\t<div className={groupToggleCellContentClassNames}>\n\t\t\t\t\t\t{groupToggleCellContent(\n\t\t\t\t\t\t\ttoggleProps,\n\t\t\t\t\t\t\tisRecentlyAddedOrUpdated\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\n\t\t\t\t<td\n\t\t\t\t\tclassName={specialCellClassNames}\n\t\t\t\t\tdata-columnKey={SPECIAL_TYPE_GROUP_BADGE}\n\t\t\t\t\tdir={dir}\n\t\t\t\t>\n\t\t\t\t\t<div className={groupBadgeCellContentClassNames}>\n\t\t\t\t\t\t{groupedRowCount && groupBadgeCellContent(row)}\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\n\t\t\t\t<td colspan={mainCellColSpan} className=\"group-row-container\">\n\t\t\t\t\t<div className=\"cell-content group-row-content\">\n\t\t\t\t\t\t<span data-truncation>{groupedRowLabel}</span>\n\n\t\t\t\t\t\t{groupActions && (\n\t\t\t\t\t\t\t<div className=\"group-row-actions\" dir={dir}>\n\t\t\t\t\t\t\t\t{renderGroupActions(\n\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\tgroupActions,\n\t\t\t\t\t\t\t\t\tdispatch\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t{renderChildrenRows(props, dispatch)}\n\t\t</Fragment>\n\t);\n};\n\n/**\n * Renders custom row type\n *\n * @param {Object} props\n * @param {boolean | undefined} props.virtualizedScrollEnabled whether or not virtualized scrolling is enabled\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * Has been processed and cleaned by columnBehavior.\n * @param {Row} props.row an object representing a single row in the table, including its cells and config options\n * @param {Array<Row>} props.rows array of row definitions object\n * @param {number} props.index an object representing a single row in the table, including its cells and config options. 1-indexed\n * @param {RowActions} props.rowActions an object representing actions that can be taken on this row\n * @param {Array<string>} props.allRowKeys array of all row keys present on a page\n * @param {string} props.rowKey row key\n * @param {string} props.focusedRowKey focused row key\n * @param {boolean} props.isChecked an boolean value to indentify if row is checked or not\n * @param {Object} props.selectedRows an object representing list of rows selected with key indentified as a row key for a row.\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {TableMetadata} props.tableMetadata an object representing the metadata of the table\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {boolean} props.isDefaultRowWithChildrenType property defining whether a group is of type default and has children under it\n * @param {Object} props.parentGroupClassNames an object representing the class names for parent child grouped rows\n * @param {string} props.dir a prop representing the language direction.\n * @param {object} props.contextApi\n * @param {RowIndexesMap} props.rowIndexesMap map containing rowKeys and indexes\n * @param {number | undefined} props.groupIndex index of the parent row group, if exists\n * @param {number} props.nestedLevel\n */\n\nexport const renderCustomRow = (props) => {\n\tconst {\n\t\tprocessedColumnDefinitions,\n\t\ttableMetadata,\n\t\trow,\n\t\tdir,\n\t\tgroupIndex,\n\t\tindex,\n\t\trowGroupingState,\n\t\trowDragDropEnabled,\n\t\tnestedLevel,\n\t} = props;\n\tconst columnEdges = getColumnEdges(processedColumnDefinitions);\n\t// the main group cell takes up the entire row except for special cells\n\tconst mainCellColSpan = columnEdges.length - 1;\n\tconst componentTag = rowSelectors.getCustomRowComponentTag(row);\n\tconst componentDefaultProps = rowSelectors.getCustomRowComponentProps(row);\n\tconst rowContentDimensions = rowSelectors.getCustomRowContentDimensions(\n\t\trow\n\t);\n\tconst placeHolderDimensions = rowSelectors.getCustomRowPlaceholderDimensions(\n\t\trow\n\t);\n\tconst contentAlignment = rowSelectors.getCustomRowContentAlignment(row);\n\n\tlet customRowAlignment;\n\tconst customRowContainer = 'custom-row-container-';\n\tif (contentAlignment == ROW_ALIGNMENT_INVERSE)\n\t\tcustomRowAlignment = customRowContainer + ROW_ALIGNMENT_INVERSE;\n\telse if (contentAlignment == ROW_ALIGNMENT_CENTER)\n\t\tcustomRowAlignment = customRowContainer + ROW_ALIGNMENT_CENTER;\n\telse customRowAlignment = customRowContainer + ROW_ALIGNMENT_DEFAULT;\n\n\tconst specialColumnsCount = columnSelectors.getSpecialColumnsCount(\n\t\tprocessedColumnDefinitions\n\t);\n\n\tconst { expandedGroupsArray } = rowGroupingState;\n\n\tconst rowKey = getRowKey(row);\n\tconst isGroupExpanded = expandedGroupsArray.includes(rowKey);\n\n\tconst customContent = renderCustomComponentDisplay(\n\t\tcustomComponentType.ROW,\n\t\ttableMetadata,\n\t\tcomponentTag,\n\t\tcomponentDefaultProps,\n\t\tdir,\n\t\trowContentDimensions,\n\t\tplaceHolderDimensions,\n\t\tnull,\n\t\tcustomRowAlignment\n\t);\n\treturn (\n\t\t<Fragment>\n\t\t\t{renderSpecialCellsForCustomRow(\n\t\t\t\tspecialColumnsCount,\n\t\t\t\tisGroupExpanded,\n\t\t\t\trowDragDropEnabled,\n\t\t\t\tgroupIndex\n\t\t\t)}\n\t\t\t<td\n\t\t\t\tclassName=\"custom-row-content\"\n\t\t\t\tstyle={addChildRowMargin(nestedLevel, document)}\n\t\t\t\tcolspan={mainCellColSpan}\n\t\t\t\tdata-rowPath={`[${index}]`}\n\t\t\t\tdata-rowIndex={index}\n\t\t\t\t{...(groupIndex !== undefined\n\t\t\t\t\t? { 'data-groupIndex': String(groupIndex) }\n\t\t\t\t\t: {})}\n\t\t\t>\n\t\t\t\t<div className=\"row-cell-content\">{customContent}</div>\n\t\t\t</td>\n\t\t</Fragment>\n\t);\n};\n\n/**\n * renderSpecialCellsForCustomRow - renders special cells for custom row.\n * @param {number} specialColumnsCount\n * @param {boolean} isGroupExpanded\n * @param {boolean | undefined} rowDragDropEnabled\n * @param {number | undefined} groupIndex\n */\nexport const renderSpecialCellsForCustomRow = (\n\tspecialColumnsCount,\n\tisGroupExpanded,\n\trowDragDropEnabled,\n\tgroupIndex\n) => {\n\tconst specialCellClassNames = classNames({\n\t\t[ROW_CELL_CLASS]: true,\n\t\t[SPECIAL_COLUMN_CELL]: true,\n\t});\n\tconst dragDropHandleCellClassNames = classNames({\n\t\t'row-drag': rowDragDropEnabled,\n\t});\n\tconst groupToggleCellClassNames = classNames({\n\t\t'group-toggle': groupIndex !== undefined,\n\t\t'is-group-opened': groupIndex ? isGroupExpanded : null,\n\t\t'is-group-closed': groupIndex ? !isGroupExpanded : null,\n\t});\n\n\tconst specialColumns = [];\n\n\twhile (specialColumnsCount > 0) {\n\t\tspecialColumns.push(\n\t\t\t<td\n\t\t\t\tclassName={`${specialCellClassNames}\n\t\t\t\t\t\t${groupToggleCellClassNames}\n\t\t\t\t\t\t${dragDropHandleCellClassNames}`}\n\t\t\t></td>\n\t\t);\n\t\tspecialColumnsCount--;\n\t}\n\treturn specialColumns;\n};\n\n/**\n * renderGhostRow - renders a ghost row <td> that is used to maintain the height of the row when it is not in view.\n * @param {string} name  - name of the ghost row\n * @param {number} index - index can either be the child row index or the high lever rowDefinition.rows index.\n * @param {string} rowKey - key of the row\n * @param {string} groupKey - key of the group that includes children rows\n * @param {number | undefined} groupIndex - index of the parent row group, if exists\n * @param {boolean} isChild - flag to identify if the row is a child row\n * @param {*} colProps - column properties\n * @return {JSX.Element}\n */\nexport const renderGhostRow = (\n\tname,\n\tindex,\n\trowKey,\n\tgroupKey,\n\tgroupIndex,\n\tisChild,\n\tcolProps\n) => {\n\t// need to create a relative index to create unique id for each ghost row\n\tconst relativeIndex = isChild ? `${groupIndex}-${index}` : index;\n\tconst colLength = colProps?.columnEdges?.length;\n\n\treturn (\n\t\t<td\n\t\t\tid={`${name}-${relativeIndex}`}\n\t\t\tcolspan={colLength ?? COL_SPAN_MAX}\n\t\t\tclassName={`${name} virtualized-list`}\n\t\t\tdata-groupIndex={isChild ? `${groupIndex}` : `${index}`}\n\t\t\tdata-key={rowKey}\n\t\t\taria-label={t(`Row loading`)}\n\t\t></td>\n\t);\n};\n\n/**\n * renderVirtualizedRowCells - renders the row cells based on the virtualized scroll state and is responsible for rendering ghostrow <td>.\n *  ghost rows <td> become the child of the previously rendered <tr>'s without the original table cells.  The goal of this is to reduce computation of elements\n *  and reduce the number of elements in the dom.\n *\n * @param {Object} rowCellProps\n * @param {ProcessedColumnDefinitions} rowCellProps.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {Row} rowCellProps.row an object representing a single row in the table, including its cells and config options\n * @param {boolean} rowCellProps.cellEditingEnabled whether or not cell editing is enabled\n * @param {Array<Row>} rowCellProps.rows array of row definitions object\n * @param {number} rowCellProps.index an object representing a single row in the table, including its cells and config options. 1-indexed\n * @param {RowActions} rowCellProps.rowActions an object representing actions that can be taken on this row\n * @param {Array<string>} rowCellProps.allRowKeys array of all row keys present on a page\n * @param {string} rowCellProps.rowKey row key\n * @param {string} rowCellProps.focusedRowKey focused row key\n * @param {boolean} rowCellProps.isChecked an boolean value to indentify if row is checked or not\n * @param {Object} rowCellProps.selectedRows an object representing list of rows selected with key indentified as a row key for a row.\n * @param {Array<string>} rowCellProps.highlightedContent array of patterns to be highlighted\n * @param {TableMetadata} rowCellProps.tableMetadata an object representing the metadata of the table\n * @param {RowGroupingState} rowCellProps.rowGroupingState row grouping state\n * @param {boolean | undefined} rowCellProps.clickableTextEnabled\n * @param {boolean} rowCellProps.isDefaultRowWithChildrenType property defining whether a group is of type default and has children under it\n * @param {Object} rowCellProps.parentGroupClassNames an object representing the class names for parent child grouped rows\n * @param {string} rowCellProps.dir a prop representing the language direction.\n * @param {object} rowCellProps.contextApi\n * @param {string} rowCellProps.groupKey The key of group that includes children rows\n * @param {RowIndexesMap} rowCellProps.rowIndexesMap map containing rowKeys and indexes\n * @param {number | undefined} rowCellProps.groupIndex index of the parent row group, if exists\n * @param {String} rowCellProps.componentId nowId of the component\n * @param {number} rowCellProps.nestedLevel\n * @param {boolean} rowCellProps.showInlinePadding\n * @param {boolean | undefined} rowCellProps.rowDragDropEnabled\n * @param {Object} colProps - column properties\n * @param {Map<string, Object>} cellMap - map of cell objects\n * @param {*} dispatch seismic dispatch\n */\nexport const renderVirtualizedRowCells = (\n\trowCellProps,\n\tdispatch,\n\tcolProps,\n\tcellMap,\n\tisChild = false\n) => {\n\tconst { index, rowKey, groupKey, groupIndex } = rowCellProps;\n\t// if groupIndex is present, use it to refer to rowDefinition.rows index to keep the pointer accurately pointed to the rowDefinition.rows\n\t// and separate from the [children] row index.\n\tconst rowDefIndex = groupIndex === 0 ? 0 : groupIndex || index;\n\tconst {\n\t\ttopBound,\n\t\tbottomBound,\n\t\t// @ts-ignore -\n\t} = getVirtualizedBehaviorState(rowCellProps);\n\n\tif (\n\t\ttopBound <= rowDefIndex &&\n\t\trowDefIndex <= (bottomBound < 80 ? 80 : bottomBound)\n\t) {\n\t\treturn isChild\n\t\t\t? renderChildRowCells(rowCellProps, dispatch)\n\t\t\t: renderRowCells(rowCellProps, dispatch, colProps, cellMap);\n\t} else if (index < topBound) {\n\t\treturn renderGhostRow(\n\t\t\t'ghost-row-top',\n\t\t\tindex,\n\t\t\trowKey,\n\t\t\tgroupKey,\n\t\t\tgroupIndex,\n\t\t\tisChild,\n\t\t\tcolProps\n\t\t);\n\t} else if (index > bottomBound) {\n\t\treturn renderGhostRow(\n\t\t\t'ghost-row-bottom',\n\t\t\tindex,\n\t\t\trowKey,\n\t\t\tgroupKey,\n\t\t\tgroupIndex,\n\t\t\tisChild,\n\t\t\tcolProps\n\t\t);\n\t}\n\treturn null;\n};\n\n/**\n * This subview renders one non-header row of cells.\n *\n * @param {Object} props\n * @param {boolean | undefined} props.virtualizedScrollEnabled whether or not virtualized scrolling is enabled\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * Has been processed and cleaned by columnBehavior.\n * @param {Row} props.row an object representing a single row in the table, including its cells and config options\n * @param {Array<Row>} props.rows array of row definitions object\n * @param {boolean} props.cellEditingEnabled whether or not cell editing is enabled\n * @param {number} props.rowCount The number of rows within the current group\n * @param {number} props.index Current Row Index\n * @param {RowActions} props.rowActions an object representing actions that can be taken on this row\n * @param {RowSelectionState} props.rowSelectionState row selection state\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {Array<string>} props.allRowKeys array of all row keys present on a page\n * @param {string} props.activeRowKey The key of a row that should be highlighted to indicate a possible row action.\n * @param {string} props.focusedRowKey focused row key\n * @param {TableMetadata} props.tableMetadata An object representing the metadata for a given table\n * @param {boolean} props.tableHasGroupedRows Indicates if the table contains any grouped rows\n * @param {Array<string>} props.highlightedContent array of patterns to be highlighted\n * @param {String} props.dir a prop representing the language direction\n * @param {string} props.groupKey The key of group that includes children rows\n * @param {boolean} props.isGroupedRowType property defining whether a group is of type grouped or not\n * @param {boolean} props.isDefaultRowWithChildrenType property defining whether a group is of type default and has children under it\n * @param {number | undefined} props.groupIndex Index of grouped row. Used while rendering rows under a group\n * @param {boolean} props.isLastChildRow\n * @param {object} props.contextApi\n * @param {State} props.behaviors\n * @param {String} props.componentId nowId of the component\n * @param {RowIndexesMap} props.rowIndexesMap map containing rowKeys and indexes\n * @param {string} props.shadeAlternateRows\n * @param {number} props.nestedLevel\n * @param {boolean} props.showInlinePadding\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {any} colProps - column properties\n * @param {*} dispatch seismic dispatch\n */\n// @ts-ignore\nexport const tableRow = (props, dispatch, isChild = false, colProps) => {\n\tconst {\n\t\tactiveRowKey,\n\t\tclickableTextEnabled,\n\t\tcontextApi,\n\t\tdir,\n\t\tgroupIndex,\n\t\tgroupKey,\n\t\thighlightedContent,\n\t\tshowInlinePadding,\n\t\tindex,\n\t\tisDefaultRowWithChildrenType,\n\t\tisGroupedRowType,\n\t\tisLastChildRow,\n\t\trow,\n\t\trowCount,\n\t\trowDragDropEnabled,\n\t\trowGroupingState,\n\t\trowSelectionState,\n\t\trows,\n\t\tshadeAlternateRows,\n\t\ttableHasGroupedRows,\n\t\tvirtualizedScrollEnabled,\n\t} = props;\n\tlet { nestedLevel } = props;\n\tif (!getCells(row) && getRowType(row) === ROW_TYPE_GROUPED) {\n\t\tnestedLevel = -1;\n\t\tprops.nestedLevel = nestedLevel;\n\t\treturn renderGroupedRowAndChildren(\n\t\t\t{ ...props, groupIndex: index },\n\t\t\tdispatch\n\t\t); // all rows except grouped type should have cells\n\t}\n\tconst rowKey = getRowKey(row);\n\tconst selectedRows = get(rowSelectionState, 'selectedRows', {});\n\tconst isHighlighted = rowSelectors.isRowHighlighted(row);\n\tconst isChecked = rowSelectors.isRowChecked(selectedRows, rowKey);\n\tconst isRecentlyAddedOrUpdated = rowSelectors.isRecentlyAddedOrUpdatedRow(\n\t\trow\n\t);\n\tconst isGrayedOut = rowSelectors.isRowGrayedOut(row);\n\tconst { expandedGroupsArray = [] } = rowGroupingState;\n\t// when group of type parent/children we use same colors as parent for all child rows. So setting index for children as group index\n\tconst modifiedIndex =\n\t\t(groupIndex === 0 || groupIndex) && isDefaultRowWithChildrenType\n\t\t\t? groupIndex\n\t\t\t: index;\n\tconst isGroupExpanded = expandedGroupsArray.includes(rowKey);\n\tconst rowClassNames = classNames({\n\t\t'is-even': modifiedIndex % 2 === 0,\n\t\t'is-odd': modifiedIndex % 2 === 1,\n\t\t[ROW_HIGHLIGHTED_CLASS]: isHighlighted,\n\t\t'is-checked': isChecked,\n\t\t[ROW_RECENT_UPDATED_CLASS]: isRecentlyAddedOrUpdated,\n\t\t[ROW_GRAYED_OUT_CLASS]: isGrayedOut,\n\t\t'is-active': !isChecked && activeRowKey === rowKey,\n\t\t// if a row is a grouped and when expandedGroupArray doesn't have parent row group key, we hide all the children under it\n\t\t'is-hidden':\n\t\t\t(isGroupedRowType || isDefaultRowWithChildrenType) &&\n\t\t\t!expandedGroupsArray.includes(groupKey),\n\t\t'now-list-table-row': true,\n\t\t'virtualized-list': virtualizedScrollEnabled,\n\t\t'is-shade-alternate-rows-off': !shouldShadeAlternateRows(\n\t\t\tshadeAlternateRows,\n\t\t\tcontextApi\n\t\t),\n\t});\n\n\tconst parentGroupClassNames = classNames({\n\t\t'is-child-row': isGroupedRowType || isDefaultRowWithChildrenType,\n\t\t'is-last-child-row':\n\t\t\t(isGroupedRowType || isDefaultRowWithChildrenType) &&\n\t\t\tisLastChildRow,\n\t\t'is-group-opened': isDefaultRowWithChildren(row) && isGroupExpanded,\n\t\t'is-group-closed': isDefaultRowWithChildren(row) && !isGroupExpanded,\n\t});\n\tconst rowCellProps = {\n\t\t...props,\n\t\tclickableTextEnabled,\n\t\tcontextApi,\n\t\tdir,\n\t\tgroupIndex,\n\t\thighlightedContent,\n\t\tshowInlinePadding,\n\t\tisChecked,\n\t\tisDefaultRowWithChildrenType,\n\t\tparentGroupClassNames,\n\t\trow,\n\t\trowDragDropEnabled,\n\t\trowKey,\n\t\trows,\n\t\tselectedRows,\n\t};\n\n\tconst rowAria = {\n\t\t// Only add these props if the table has grouped rows\n\t\t...(tableHasGroupedRows && {\n\t\t\t// Only add aria-expanded if it's a parent row\n\t\t\t...(isDefaultRowWithChildren(row) && {\n\t\t\t\t'aria-expanded': `${isGroupExpanded}`,\n\t\t\t}),\n\t\t\t'aria-level': groupKey ? '2' : '1',\n\t\t\t'aria-posinset': `${index + 1}`,\n\t\t\t'aria-setsize': `${rowCount}`,\n\t\t}),\n\t};\n\n\t//Process Cell info\n\tconst cellMap = new Map();\n\n\tconst cellsByColumnKey = new Map();\n\tif (row && row.cells && colProps && colProps.columnEdges.length) {\n\t\tObject.entries(row.cells).forEach(([key, value]) => {\n\t\t\tcellsByColumnKey.set(key, value);\n\t\t});\n\t\t// @ts-ignore\n\t\tcolProps.columnEdges.map((columnKey) => {\n\t\t\tconst cell = cellsByColumnKey.get(columnKey);\n\t\t\tcellMap.set(columnKey, cell);\n\t\t});\n\t}\n\n\tconst isCustomRow = rowSelectors.isCustomRow(row);\n\tlet content;\n\tif (isCustomRow) {\n\t\tif (isChild) {\n\t\t\tnestedLevel++;\n\t\t\trowCellProps.nestedLevel = nestedLevel;\n\t\t\tprops.nestedLevel = nestedLevel;\n\t\t}\n\t\tcontent = renderCustomRow(rowCellProps);\n\t} else if (virtualizedScrollEnabled) {\n\t\tif (isChild) {\n\t\t\tnestedLevel++;\n\t\t\trowCellProps.nestedLevel = nestedLevel;\n\t\t\tprops.nestedLevel = nestedLevel;\n\t\t}\n\t\tcontent = renderVirtualizedRowCells(\n\t\t\trowCellProps,\n\t\t\tdispatch,\n\t\t\tcolProps,\n\t\t\tcellMap,\n\t\t\tisChild\n\t\t);\n\t} else if (isChild) {\n\t\tnestedLevel++;\n\t\trowCellProps.nestedLevel = nestedLevel;\n\t\tprops.nestedLevel = nestedLevel;\n\t\tcontent = renderChildRowCells(rowCellProps, dispatch);\n\t} else {\n\t\tcontent = renderRowCells(rowCellProps, dispatch, colProps, cellMap);\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<tr\n\t\t\t\tid={\n\t\t\t\t\trows[0].key === rowKey\n\t\t\t\t\t\t? 'first-row'\n\t\t\t\t\t\t: rowKey || `row_id_${index}`\n\t\t\t\t}\n\t\t\t\tkey={rowKey || `row_index_${index}`}\n\t\t\t\tclassName={rowClassNames}\n\t\t\t\t{...(isHighlighted ? { ariaDescription: 'highlighted' } : {})}\n\t\t\t\tdata-key={rowKey || `row_index_${index}`}\n\t\t\t\tdata-rowDefinitionPath={`[${rowKey || index}]`}\n\t\t\t\tdata-groupRowPath={groupKey ? groupKey : null}\n\t\t\t\tdata-testId={\n\t\t\t\t\tisDefaultRowWithChildren(row) && 'parent-child-row'\n\t\t\t\t}\n\t\t\t\t{...rowAria}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</tr>\n\n\t\t\t{\n\t\t\t\t/* This is to render child rows for group parent child use case  */\n\t\t\t\tisDefaultRowWithChildren(row) &&\n\t\t\t\t\trenderChildrenRows({ ...props, groupIndex }, dispatch)\n\t\t\t}\n\t\t</Fragment>\n\t);\n};\n","import { OVERLAY_TYPE_SKELETON_LOADER } from '../../../../typeSchemas/overlayDefinition/overlayConfigConsts';\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport overlaySelectors from '../../../utils/selectors/overlaySelectors';\nimport rowSelectors from '../../../utils/selectors/rowSelectors';\nimport '@servicenow/now-loader';\nimport { renderSkeletonLoaderOverlay } from '../../overlay/overlay';\n\nimport { tableRow } from './tableRow/tableRow';\n\nconst {\n\tgetRows,\n\tgetRowActions,\n\thasGroupedOrDefaultRowsWithChildren,\n\tgetHighlightedContentPatterns,\n\tgetDefaultRowKeysRecursively,\n\tisDefaultRowWithChildren,\n} = rowSelectors;\nconst { getOverlayType, getOverlayShowColumnHeaders } = overlaySelectors;\n\n/**\n * This iteratively renders row subviews\n *\n * @param {Object} props\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {boolean | undefined} props.virtualizedScrollEnabled whether or not virtualized scrolling is enabled\n * @param {boolean} props.cellEditingEnabled whether or not cell editing is enabled\n * @param {String} props.componentId nowId of the component\n * @param {RowDefinitions} props.rowDefinitions an object representing the rows of the table, including their data and metadata.\n * @param {RowSelectionState} props.rowSelectionState row selection state\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {string} props.activeRowKey The key of a row that should be highlighted to indicate a possible row action.\n * @param {string} props.focusedRowKey focused row key\n * @param {TableMetadata} props.tableMetadata an object representing the metadata for a given table\n * @param {String} props.dir a prop representing the language direction\n * @param {object} props.contextApi\n * @param {State} props.behaviors\n * @param {RowIndexesMap} props.rowIndexesMap map containing rowKeys and indexes\n * @param {string} props.shadeAlternateRows\n * @param {boolean} props.showInlinePadding\n * @param {*} dispatch seismic dispatch\n */\n// @ts-ignore\nconst renderBodyRows = (props, colProps, dispatch) => {\n\tconst {\n\t\tactiveRowKey,\n\t\tbehaviors,\n\t\tcellEditingEnabled,\n\t\tclickableTextEnabled,\n\t\tcomponentId,\n\t\tcontextApi,\n\t\tdir,\n\t\tfocusedRowKey,\n\t\tshowInlinePadding,\n\t\tprocessedColumnDefinitions,\n\t\trowDefinitions,\n\t\trowDragDropEnabled,\n\t\trowGroupingState,\n\t\trowIndexesMap,\n\t\trowSelectionState,\n\t\tshadeAlternateRows,\n\t\ttableMetadata,\n\t\tvirtualizedScrollEnabled,\n\t} = props;\n\n\t/** @type {Array<Row>} */\n\tconst rows = getRows(rowDefinitions);\n\tconst highlightedContent = getHighlightedContentPatterns(rowDefinitions);\n\tconst rowCount = rows.length;\n\tconst rowActions = getRowActions(rowDefinitions);\n\tconst allRowKeys = getDefaultRowKeysRecursively(rowDefinitions);\n\tconst nestedLevel = 0;\n\treturn rows.map((row, index) => {\n\t\tconst rowProps = {\n\t\t\tbehaviors,\n\t\t\tcellEditingEnabled,\n\t\t\trow,\n\t\t\trows,\n\t\t\trowCount,\n\t\t\tprocessedColumnDefinitions,\n\t\t\tshowInlinePadding,\n\t\t\tindex,\n\t\t\trowActions,\n\t\t\trowSelectionState,\n\t\t\trowGroupingState,\n\t\t\tclickableTextEnabled,\n\t\t\tallRowKeys,\n\t\t\tactiveRowKey,\n\t\t\tfocusedRowKey,\n\t\t\ttableMetadata,\n\t\t\ttableHasGroupedRows: hasGroupedOrDefaultRowsWithChildren(\n\t\t\t\trowDefinitions\n\t\t\t),\n\t\t\thighlightedContent,\n\t\t\tgroupKey: '',\n\t\t\tisGroupedRowType: false,\n\t\t\tisDefaultRowWithChildrenType: false,\n\t\t\tgroupIndex: isDefaultRowWithChildren(row) ? index : undefined,\n\t\t\tisLastChildRow: false,\n\t\t\tdir,\n\t\t\tcontextApi,\n\t\t\trowIndexesMap,\n\t\t\trowDragDropEnabled,\n\t\t\tshadeAlternateRows,\n\t\t\tvirtualizedScrollEnabled,\n\t\t\tcomponentId,\n\t\t\tnestedLevel,\n\t\t};\n\t\treturn tableRow(rowProps, dispatch, false, colProps);\n\t});\n};\n\n/**\n * renders the table body\n * @param {Object} props\n * @param {boolean | undefined} props.virtualizedScrollEnabled\n * @param {string} props.componentId\n * @param {boolean} props.cellEditingEnabled whether or not cell editing is enabled\n * @param {State} props.behaviors\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata. Has been processed and cleaned by columnBehavior.\n * @param {RowDefinitions} props.rowDefinitions an object representing the rows of the table, including their data and metadata.\n * @param {OverlayDefinition} props.overlayDefinition\n * @param {RowSelectionState} props.rowSelectionState row selection state\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {string} props.activeRowKey The key of a row that should be highlighted to indicate a possible row action.\n * @param {string} props.focusedRowKey focused row key\n * @param {TableMetadata} props.tableMetadata an object representing the metadata for a given table\n * @param {String} props.dir a prop representing the language direction\n * @param {object} props.contextApi\n * @param {RowIndexesMap} props.rowIndexesMap map containing rowKeys and indexes\n * @param {boolean} props.showInlinePadding\n * @param {string} props.shadeAlternateRows\n * @param {*} dispatch seismic dispatch\n */\nexport const tableBody = (props, dispatch) => {\n\tconst { overlayDefinition, processedColumnDefinitions } = props;\n\n\t// Calculate column info upfront\n\tconst columnEdges = columnSelectors.getColumnEdges(\n\t\tprocessedColumnDefinitions\n\t);\n\tconst firstColumnKey = columnEdges[0];\n\tconst firstDataColumnKey = columnSelectors.getFirstColumnEdge(columnEdges);\n\n\tconst columnsMap = new Map();\n\tconst cellActionsMap = new Map();\n\n\t// replace normal tbody rows with skeleton rows if configured\n\tif (\n\t\tgetOverlayType(overlayDefinition) === OVERLAY_TYPE_SKELETON_LOADER &&\n\t\tgetOverlayShowColumnHeaders(overlayDefinition)\n\t) {\n\t\treturn renderSkeletonLoaderOverlay({\n\t\t\tskeletonLoaderConfig: { numColumns: columnEdges.length }, // for the body overlay case, we ignore the input number of columns from the overlay config and use the actual number of columns from the colDefs\n\t\t\t...overlayDefinition,\n\t\t});\n\t}\n\n\t// for each column, find and render its child cell in this row\n\t// @ts-ignore\n\tcolumnEdges.map((columnKey) => {\n\t\tconst column = columnSelectors.getColumnFromProcessedCols(\n\t\t\tprops.processedColumnDefinitions,\n\t\t\tcolumnKey\n\t\t);\n\t\tconst cellActions = columnSelectors.getCellActionsFromProcessedCols(\n\t\t\tprops.processedColumnDefinitions,\n\t\t\tcolumn\n\t\t);\n\t\tcolumnsMap.set(columnKey, column);\n\t\tcellActionsMap.set(columnKey, cellActions);\n\t});\n\n\tconst colProps = {\n\t\tcolumnEdges,\n\t\tcolumnsMap,\n\t\tcellActionsMap,\n\t\tfirstColumnKey,\n\t\tfirstDataColumnKey,\n\t};\n\n\treturn <tbody>{renderBodyRows(props, colProps, dispatch)}</tbody>;\n};\n","import '@servicenow/now-button';\nimport '@servicenow/now-icon';\n\nimport { actionableMessageKey } from '../../../behaviors/actionableMessageBehavior/constants';\nimport rowSelectors from '../../utils/selectors/rowSelectors';\n\nimport {\n\tACTIONABLE_MESSAGE_ICON_SIZE,\n\tACTIONABLE_MESSAGE_BUTTON_CLASS,\n} from './constants';\n\nconst { getActionableMessageIcon, getActionableMessageStatus } = rowSelectors;\n\n/**\n * This subview contains the actionable message row\n *\n * @param {ActionableMessage} actionableMessage\n * @param {Number} colSpan\n * @param {string} location\n */\nexport const renderActionableMessage = (\n\tactionableMessage,\n\tcolSpan,\n\tlocation\n) => {\n\tconst { text, action } = actionableMessage;\n\tconst status = getActionableMessageStatus(actionableMessage);\n\tconst icon = getActionableMessageIcon(actionableMessage);\n\n\t// guard against empty action property.\n\tif (action && (!action.action || !action.label)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<tr data-testId={`actionable-message-${location}`}>\n\t\t\t<td className={'actionable-message'} colSpan={colSpan}>\n\t\t\t\t<div className={`actionable-message-content ${status}`}>\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\tclassName=\"actionable-message-icon\"\n\t\t\t\t\t\tsize={ACTIONABLE_MESSAGE_ICON_SIZE}\n\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"actionable-message-label-group\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"actionable-message-text\"\n\t\t\t\t\t\t\tdata-truncation\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{text}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{action ? (\n\t\t\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\t\t\thideBlockPadding\n\t\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\t\t'aria-label': action.label,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName={ACTIONABLE_MESSAGE_BUTTON_CLASS}\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tlabel={action.label}\n\t\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\t\tkey: actionableMessageKey,\n\t\t\t\t\t\t\t\t\taction: action.action,\n\t\t\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</td>\n\t\t</tr>\n\t);\n};\n","import rowSelectors from '../../../utils/selectors/rowSelectors';\nimport { renderActionableMessage } from '../../actionableMessage/actionableMessage';\n\n/**\n * Subview of table containing the table footer(s)\n *\n * @param {Object} props\n * @param {RowDefinitions} props.rowDefinitions\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n */\nexport const tableFooters = (props) => {\n\tconst { processedColumnDefinitions, rowDefinitions } = props;\n\tconst {\n\t\thasBottomActionableMessage,\n\t\tgetBottomActionableMessage,\n\t} = rowSelectors;\n\n\tif (!processedColumnDefinitions) return null;\n\n\treturn (\n\t\t<tfoot>\n\t\t\t{hasBottomActionableMessage(rowDefinitions)\n\t\t\t\t? renderActionableMessage(\n\t\t\t\t\t\tgetBottomActionableMessage(rowDefinitions),\n\t\t\t\t\t\tprocessedColumnDefinitions.columnEdges.length,\n\t\t\t\t\t\t'bottom'\n\t\t\t\t  )\n\t\t\t\t: null}\n\t\t</tfoot>\n\t);\n};\n","import { createRef } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport { t } from 'sn-translate';\n\nimport { ICON_SIZES } from '../../../../constants';\nimport { SPECIAL_COLUMN_CELL_CONTENT } from '../tableBody/tableRow/rowCell/rowCellConstants';\n\nimport {\n\tSHOW_HIDE_COLUMN_FILTERING_ROW_ICON,\n\tSHOW_HIDE_COLUMN_FILTERING_ROW_ACTION,\n} from './columnFilteringCell/columnFilteringConsts';\n\n/**\n * Renders a button-iconic component that onClick shows/hides the column filtering row.\n * @param {ColumnFilteringState} columnFilteringState\n */\nexport const columnFilteringToggleButton = (columnFilteringState) => {\n\tconst ref = createRef();\n\tconst { showColumnFilteringRow } = columnFilteringState;\n\n\tconst ariaLabel = showColumnFilteringRow\n\t\t? t('Hide column filter row')\n\t\t: t('Show column filter row');\n\tconst cellContentClassNames = classNames({\n\t\t'cell-content': true,\n\t\t'row-actions-cell-content': true,\n\t\t'column-filtering-toggle-button-cell-content': true,\n\t\t[SPECIAL_COLUMN_CELL_CONTENT]: true,\n\t});\n\n\tconst buttonIconicClassNames = classNames({\n\t\t'column-filtering-button-iconic': true,\n\t});\n\n\treturn (\n\t\t<div className={cellContentClassNames}>\n\t\t\t<now-button-stateful\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\ttype: SHOW_HIDE_COLUMN_FILTERING_ROW_ACTION,\n\t\t\t\t}}\n\t\t\t\tbare=\"true\"\n\t\t\t\tclassName={buttonIconicClassNames}\n\t\t\t\tconfigAria={{\n\t\t\t\t\tbutton: {\n\t\t\t\t\t\t'aria-expanded': showColumnFilteringRow,\n\t\t\t\t\t\t'aria-label': ariaLabel,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tdata-testId=\"columnFilteringToggleButtonIconic\"\n\t\t\t\ticon={SHOW_HIDE_COLUMN_FILTERING_ROW_ICON}\n\t\t\t\tref={ref}\n\t\t\t\tselected={showColumnFilteringRow}\n\t\t\t\tsize={ICON_SIZES.SMALL}\n\t\t\t\ttooltipContent={ariaLabel}\n\t\t\t\tvariant=\"primary\"\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { t } from 'sn-translate';\nexport const COLUMN_HEADER_ICON_SIZE = 'sm';\n\nexport const COLUMN_GRAB_INSTRUCTIONS = t(\n\t'Instructions: Press space to grab. Use left and right arrow keys to move the column. Press enter to release in current position. Press Escape to cancel and return to original position.'\n);\n\nexport const COLUMN_GRAB_INSTRUCTIONS_PREFIX = 'column-grab-instructions';\n","import '@servicenow/now-button';\nimport '@servicenow/now-icon';\nimport { createRef, Fragment } from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport kebabCase from 'lodash/kebabCase';\nimport { t } from 'sn-translate';\n\nimport {\n\tCOLUMN_ACTIVE_CLASS,\n\tCOLUMN_DRAG_HANDLE_CLASS,\n} from '../../../../../behaviors/columnDragDropBehavior/constants';\nimport { HEADER_CELL_TEXT_CLICKED } from '../../../../../behaviors/columnHeaderClickBehavior/constants';\nimport {\n\tCOL_RESIZE_MIN_WIDTH,\n\tRESIZE_SLIDER_CLASS,\n} from '../../../../../behaviors/columnResizeBehavior/constants';\nimport { getSavedWidth } from '../../../../../behaviors/columnWidthBehavior/columnWidthBehavior';\nimport {\n\tINIT_COLUMN_WIDTHS,\n\tSET_COLUMN_WIDTHS,\n} from '../../../../../behaviors/columnWidthBehavior/constants';\nimport { COLUMN_HEADER_ACTION } from '../../../../../behaviors/contextActionsBehavior/constants';\nimport { NOW_BUTTON_ICONIC_CLICKED } from '../../../../../resources/constants';\nimport { ALIGNMENT_CLASS_PREFIX } from '../../../../../typeSchemas/columnDefinitions/alignmentTypes/alignmentTypes';\nimport {\n\tSPECIAL_TYPE_ACTIONS,\n\tSPECIAL_TYPE_GROUP_TOGGLE,\n\tSPECIAL_TYPE_SELECTION,\n} from '../../../../../typeSchemas/columnDefinitions/columnTypes/columnTypes';\nimport columnSelectors from '../../../../utils/selectors/columnSelectors';\nimport rowSelectors from '../../../../utils/selectors/rowSelectors';\nimport { dragHandle } from '../../../shared/dragHandle';\nimport {\n\tgetFakeNowIcon,\n\tgetIconHeightWidth,\n\ticonIsCached,\n} from '../../../shared/fakeNowIcon';\nimport { groupToggleCellContent } from '../../../shared/groupToggleCellContent';\nimport {\n\tSPECIAL_COLUMN_CELL,\n\tSPECIAL_COLUMN_CELL_CONTENT,\n} from '../../tableBody/tableRow/rowCell/rowCellConstants';\nimport {\n\tELLIPSIS_ICON,\n\tINCLUDE_LARGE_PADDING_CLASS,\n\tINCLUDE_SMALL_PADDING_CLASS,\n} from '../../tableConstants';\nimport { columnFilteringToggleButton } from '../columnFilteringToggleButton';\n\nimport {\n\tCOLUMN_GRAB_INSTRUCTIONS,\n\tCOLUMN_GRAB_INSTRUCTIONS_PREFIX,\n\tCOLUMN_HEADER_ICON_SIZE,\n} from './tableHeaderCellConstants';\n\nconst {\n\tICON_CELL_COLOR_DEFAULT,\n\tICON_CELL_COLORS_ENUMS,\n} = require('../../../fields/icon/iconConstants');\n\nconst {\n\tgetColumnLabel,\n\tgetColumnColSpan,\n\tgetColumnKey,\n\tgetColumnParentKey,\n\tgetColumnRowSpan,\n\tgetColumnSortDirection,\n\thasColumnHeaderActions,\n\thasChildren,\n\tgetHeaderTextDisabled,\n\tisColumnActive,\n\tgetColumnType,\n\tisSpecialColumn,\n\tgetChildren,\n} = columnSelectors;\n\n/**\n * Renders icon decorators in header cell\n * @param {Array<ColumnHeaderIcon>} icons\n * @param {string} position\n */\nexport const renderColumnHeaderCellIcons = (icons = [], position) => {\n\tif (icons.length === 0) return null;\n\n\treturn (\n\t\t<span data-testId={`column-header-${position}-icons`}>\n\t\t\t{icons.map((/** @type{Icon} */ icon) => {\n\t\t\t\tconst iconColor = ICON_CELL_COLORS_ENUMS.includes(icon.color)\n\t\t\t\t\t? icon.color\n\t\t\t\t\t: ICON_CELL_COLOR_DEFAULT;\n\t\t\t\tconst cellIconClassNames = classNames(\n\t\t\t\t\t'header-cell-icon',\n\t\t\t\t\ticonColor\n\t\t\t\t);\n\t\t\t\tif (iconIsCached(icon.value, COLUMN_HEADER_ICON_SIZE)) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cellIconClassNames}\n\t\t\t\t\t\t\taria-label={icon.label}\n\t\t\t\t\t\t\tstyle={getIconHeightWidth(COLUMN_HEADER_ICON_SIZE)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{getFakeNowIcon(\n\t\t\t\t\t\t\t\ticon.value,\n\t\t\t\t\t\t\t\tCOLUMN_HEADER_ICON_SIZE\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<now-icon\n\t\t\t\t\t\t\ticon={icon.value}\n\t\t\t\t\t\t\tsize={COLUMN_HEADER_ICON_SIZE}\n\t\t\t\t\t\t\tclassName={cellIconClassNames}\n\t\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\t\t'aria-label': icon.label,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})}\n\t\t</span>\n\t);\n};\n\n/**\n * Renders element to display the column header text\n * @param {ProcessedColumn} column\n * @param {*} dispatch seismic dispatch\n * @param {string} tooltip optional tooltip describing what action will happen when header cell text is clicked\n */\nexport const renderHeaderCellText = (column, dispatch, tooltip) => {\n\tconst label = getColumnLabel(column);\n\tconst headerTextDisabled = getHeaderTextDisabled(column);\n\n\t// do not make header text clickable if header click explicitly disabled\n\t// or if the column has children\n\tif (\n\t\ttooltip === undefined ||\n\t\t!label ||\n\t\theaderTextDisabled ||\n\t\thasChildren(column)\n\t)\n\t\treturn (\n\t\t\t<span\n\t\t\t\tdata-testId=\"columnHeaderText\"\n\t\t\t\tclassName=\"header-cell-text header-cell-text-container\"\n\t\t\t\tdata-tooltip={label}\n\t\t\t>\n\t\t\t\t{label}\n\t\t\t</span>\n\t\t);\n\telse {\n\t\tconst tooltipDataProps = tooltip ? { 'data-tooltip': t(tooltip) } : {};\n\t\treturn (\n\t\t\t<button\n\t\t\t\tdata-testId=\"columnHeaderText\"\n\t\t\t\tclassName=\"header-cell-text header-cell-text-button\"\n\t\t\t\tconfigAria={{\n\t\t\t\t\t'aria-label': label,\n\t\t\t\t}}\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(HEADER_CELL_TEXT_CLICKED, {\n\t\t\t\t\t\tcolumn,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\t{...tooltipDataProps}\n\t\t\t>\n\t\t\t\t<div className=\"header-cell-button-label\" {...tooltipDataProps}>\n\t\t\t\t\t{label}\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t);\n\t}\n};\n\n/**\n * Renders column's actions trigger button for header cell\n * @param {ProcessedColumn} column\n * @param {ProcessedColumnDefinitions} processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {Array<ColumnHeaderActionItem>} columnHeaderActions array of column header action items for a column based on column key\n * @param {function} dispatch\n * @param {string} tooltip\n */\nexport const renderColumnHeaderActionsButton = (\n\tcolumn,\n\tprocessedColumnDefinitions,\n\tcolumnHeaderActions,\n\tdispatch,\n\ttooltip\n) => {\n\tconst columnHeaderActionsRef = createRef();\n\tconst context = { column, typeOfAction: COLUMN_HEADER_ACTION };\n\tif (iconIsCached(ELLIPSIS_ICON, 'sm')) {\n\t\treturn (\n\t\t\t<button\n\t\t\t\tclassName=\"column-header-actions-button\"\n\t\t\t\tdata-testId=\"columnHeaderAction\"\n\t\t\t\tdata-ancillary=\"true\"\n\t\t\t\tref={columnHeaderActionsRef}\n\t\t\t\tdata-tooltip={tooltip}\n\t\t\t\taria-label={t('{0} Actions', column.label)}\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(NOW_BUTTON_ICONIC_CLICKED, {\n\t\t\t\t\t\tpopoverTarget: columnHeaderActionsRef,\n\t\t\t\t\t\tpopoverDefinition: {\n\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\tariaLabel: t(\n\t\t\t\t\t\t\t\t\t'Column actions for {0}',\n\t\t\t\t\t\t\t\t\tcolumn.label\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdismissOnScroll: true,\n\t\t\t\t\t\t\t\thideTail: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\tactions: columnHeaderActions,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprocessedColumnDefinitions,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{getFakeNowIcon(ELLIPSIS_ICON, 'sm')}\n\t\t\t</button>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<now-button-iconic\n\t\t\t\tdata-testId=\"columnHeaderAction\"\n\t\t\t\tdata-ancillary=\"true\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tbare=\"true\"\n\t\t\t\ticon={ELLIPSIS_ICON}\n\t\t\t\tref={columnHeaderActionsRef}\n\t\t\t\tclassName=\"column-header-actions-button\"\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\tpopoverTarget: columnHeaderActionsRef,\n\t\t\t\t\tpopoverDefinition: {\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tdismissOnScroll: true,\n\t\t\t\t\t\t\thideTail: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\tactions: columnHeaderActions,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tprocessedColumnDefinitions,\n\t\t\t\t\tcontext,\n\t\t\t\t}}\n\t\t\t\tdata-tooltip={tooltip}\n\t\t\t\tconfigAria={{\n\t\t\t\t\t'aria-label': t('{0} Actions', column.label),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n};\n\n/**\n * Renders column drag drop handle based on the flag {@link isReorderingEnabled}\n * Wrapper stays all the time to maintain the spacing on left of the header cell\n * @param {Boolean | undefined} isReorderingEnabled\n * @param {ProcessedColumn} column\n * @param {number} totalColumns column count at the level\n * @param {number | undefined} columnIndex valid column index, ignoring the special columns\n * @returns\n */\nexport const renderColumnReorderHandle = (\n\tisReorderingEnabled,\n\tcolumn,\n\ttotalColumns,\n\tcolumnIndex = 0\n) => {\n\tconst columnLabel = getColumnLabel(column);\n\tconst columnKey = getColumnKey(column);\n\tconst className = COLUMN_DRAG_HANDLE_CLASS;\n\tconst ariaLabel = t(\n\t\t'Grab to reorder {0}, {1} of {2}',\n\t\tcolumnLabel,\n\t\tcolumnIndex + 1,\n\t\ttotalColumns\n\t);\n\tconst ariaDescribedBy = `${COLUMN_GRAB_INSTRUCTIONS_PREFIX}-${columnKey}`;\n\n\treturn (\n\t\t<div className=\"column-drag-drop-handle-wrapper\">\n\t\t\t{isReorderingEnabled && (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{dragHandle({\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\tariaLabel,\n\t\t\t\t\t\tariaDescribedBy,\n\t\t\t\t\t\ttooltip: t('Reorder'),\n\t\t\t\t\t})}\n\n\t\t\t\t\t<div className=\"now-a11y-label\" id={ariaDescribedBy}>\n\t\t\t\t\t\t{COLUMN_GRAB_INSTRUCTIONS}\n\t\t\t\t\t</div>\n\t\t\t\t</Fragment>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\n/**\n * @param {ProcessedColumn} column\n * @param {string} width\n * @returns\n * @param {string} tooltip\n */\nexport const renderColumnResizeHandle = (column, width, tooltip) => {\n\tconst columnLabel = getColumnLabel(column);\n\treturn (\n\t\t<div\n\t\t\ttabindex=\"0\"\n\t\t\trole=\"slider\"\n\t\t\tdata-tooltip={tooltip}\n\t\t\taria-label={t('Grab to resize {0}', columnLabel)}\n\t\t\taria-valuemin={COL_RESIZE_MIN_WIDTH}\n\t\t\taria-valuemax=\"9005\"\n\t\t\taria-valuenow={\n\t\t\t\twidth ? Number.parseInt(width) : COL_RESIZE_MIN_WIDTH\n\t\t\t}\n\t\t\tclassName={`${RESIZE_SLIDER_CLASS}-container`}\n\t\t>\n\t\t\t<div\n\t\t\t\tdata-tooltip={t('Resize')}\n\t\t\t\tclassName={RESIZE_SLIDER_CLASS}\n\t\t\t></div>\n\t\t\t<div className={`${RESIZE_SLIDER_CLASS}-guide`} />\n\t\t</div>\n\t);\n};\n\n/**\n * Renders Select All checkbox in table header\n * @param {RowDefinitions} rowDefinitions\n * @param {boolean} selectAllRows\n * @param {boolean | undefined} selectAllEnabled\n */\nexport const renderHeaderSelectionCellContent = (\n\trowDefinitions,\n\tselectAllRows = false,\n\tselectAllEnabled\n) => {\n\tconst rows = rowSelectors.getRows(rowDefinitions);\n\tconst allRowKeys = rowSelectors.getDefaultRowKeysRecursively(\n\t\trowDefinitions\n\t);\n\n\tconst rowSelectionCellContentClassnames = classNames({\n\t\t'row-selection-cell-content': true,\n\t\t[SPECIAL_COLUMN_CELL_CONTENT]: true,\n\t});\n\tconst rowSelectionCheckboxClasses = classNames({\n\t\t'row-selection-checkbox': true,\n\t\t'is-checked': selectAllRows,\n\t});\n\n\tconst label = t('Select all rows');\n\n\treturn (\n\t\t<div className={rowSelectionCellContentClassnames}>\n\t\t\t{selectAllEnabled && !isEmpty(rows) && (\n\t\t\t\t<now-checkbox\n\t\t\t\t\tname={t('Select all rows')}\n\t\t\t\t\tmanageChecked={true}\n\t\t\t\t\tchecked={selectAllRows}\n\t\t\t\t\tclassName={rowSelectionCheckboxClasses}\n\t\t\t\t\tdata-testId=\"selection\"\n\t\t\t\t\tdata-tooltip={label}\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\tisSelectAllCheckbox: true,\n\t\t\t\t\t\tchecked: !selectAllRows,\n\t\t\t\t\t\tallRowKeys,\n\t\t\t\t\t}}\n\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t'aria-label': label,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\n/**\n * Render header action cell content\n * @param {boolean | undefined} columnFilteringEnabled\n * @param {ColumnFilteringState} columnFilteringState\n */\nexport const renderActionCellContent = (\n\tcolumnFilteringEnabled,\n\tcolumnFilteringState\n) => {\n\treturn (\n\t\tcolumnFilteringEnabled &&\n\t\tcolumnFilteringToggleButton(columnFilteringState)\n\t);\n};\n\n/**\n * Renders default header cell content with icons, text and actions\n * @param {ProcessedColumn} column\n * @param {ProcessedColumnDefinitions} processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {Array<ColumnHeaderActionItem>} columnHeaderActions array of column header action items for a column based on column key\n * @param {string} tooltip optional tooltip describing what action will happen when header cell text is clicked\n * @param {Array<ColumnHeaderIcon>} startIcons\n * @param {Array<ColumnHeaderIcon>} endIcons\n * @param {RowGroupingState} rowGroupingState row grouping state\n * @param {boolean | undefined} isReorderingEnabled flag to check if Column Reordering enabled\n * @param {boolean | undefined} columnResizingEnabled flag to check if Column Reordering enabled\n * @param {number} columnCount total number of columns in the level\n * @param {number | undefined} columnIndex valid column index, ignoring the special columns\n * @param {string} width updated columnWidth\n * @param {*} dispatch seismic dispatch\n */\nexport const renderDefaultHeaderCellContent = (\n\tcolumn,\n\tprocessedColumnDefinitions,\n\ttooltip,\n\tstartIcons,\n\tendIcons,\n\tcolumnHeaderActions,\n\trowGroupingState,\n\tisReorderingEnabled,\n\tcolumnResizingEnabled,\n\tcolumnCount,\n\tcolumnIndex,\n\twidth,\n\tdispatch\n) => {\n\tconst hasResizeSupport =\n\t\tcolumnResizingEnabled &&\n\t\t!isSpecialColumn(column) &&\n\t\t!getChildren(column).length;\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<div className=\"header-cell-content-child\">\n\t\t\t\t{!isSpecialColumn(column) &&\n\t\t\t\t\trenderColumnReorderHandle(\n\t\t\t\t\t\tisReorderingEnabled,\n\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\tcolumnCount,\n\t\t\t\t\t\tcolumnIndex\n\t\t\t\t\t)}\n\t\t\t\t<div className=\"header-cell-aligned-items\">\n\t\t\t\t\t{renderColumnHeaderCellIcons(startIcons, 'start')}\n\t\t\t\t\t{renderHeaderCellText(column, dispatch, tooltip)}\n\t\t\t\t\t{renderColumnHeaderCellIcons(endIcons, 'end')}\n\t\t\t\t</div>\n\t\t\t\t{hasColumnHeaderActions(column) && (\n\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t{renderColumnHeaderActionsButton(\n\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\tprocessedColumnDefinitions,\n\t\t\t\t\t\t\tcolumnHeaderActions,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tt('Filter')\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Fragment>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{hasResizeSupport\n\t\t\t\t? renderColumnResizeHandle(column, width, t('Resize'))\n\t\t\t\t: null}\n\t\t</Fragment>\n\t);\n};\n\n/**\n * Renders table header cell th element\n * @param {ProcessedColumn} column\n * @param {Array<ColumnHeaderActionItem>} columnHeaderActions array of column header action items for a column based on column key\n * @param {RowDefinitions} rowDefinitions\n * @param {RowSelectionState} rowSelectionState row selection state\n * @param {ProcessedColumnDefinitions} processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {*} dispatch seismic dispatch\n * @param {string} tooltip optional tooltip describing what action will happen when header cell text is clicked\n * @param {string} columnFilteringInfo optional tooltip describing filtering string\n * @param {boolean | undefined} isReorderingEnabled flag to check if Column Reordering enabled\n * @param {boolean | undefined} columnResizingEnabled flag to check if Column Reordering enabled\n * @param {number} columnCount total number of columns in the level\n * @param {RowGroupingState} rowGroupingState row grouping state\n * @param {number | undefined} columnIndex valid column index, ignoring the special columns\n * @param {ColumnWidthsState} columnWidthsState\n * @param {boolean | undefined} selectAllEnabled\n * @param {boolean} isFirstColumn boolean indicating whether this is the first (leftmost in ltr) cell\n * @param {boolean | undefined} isLastColumn boolean indicating whether this is the last (rightmost in ltr) cell\n * @param {boolean | undefined} allColumnsHaveWidth boolean indicating whether all columns have a width\n * @param {boolean | undefined} toggleAllGroupsEnabled\n * @param {boolean | undefined} columnFilteringEnabled\n * @param {ColumnFilteringState} columnFilteringState\n * @param {string} activeColumnKey\n * @param {boolean} showInlinePadding\n * @param {boolean | undefined} rowDragDropEnabled\n */\nexport const tableHeaderCell = (\n\tcolumn,\n\tcolumnHeaderActions,\n\tprocessedColumnDefinitions,\n\tdispatch,\n\ttooltip,\n\tcolumnFilteringInfo,\n\tisReorderingEnabled,\n\tcolumnResizingEnabled,\n\tcolumnCount,\n\trowGroupingState,\n\trowDefinitions,\n\trowSelectionState,\n\tcolumnIndex,\n\tcolumnWidthsState,\n\tselectAllEnabled,\n\tisFirstColumn,\n\tisLastColumn,\n\tallColumnsHaveWidth,\n\ttoggleAllGroupsEnabled,\n\tcolumnFilteringEnabled,\n\tcolumnFilteringState,\n\tactiveColumnKey,\n\trowDragDropEnabled,\n\tshowInlinePadding\n) => {\n\tconst columnKey = getColumnKey(column);\n\tconst isSpecial = isSpecialColumn(column);\n\tconst columnKeyClassName = isSpecial ? kebabCase(columnKey) : columnKey;\n\tconst alignment = columnSelectors.getHeaderCellAlignment(column);\n\tconst { startIcons, endIcons } = columnSelectors.getIcons(column);\n\tconst { selectAllRows = false } = rowSelectionState || {};\n\tconst isSelectionColumn = getColumnType(column) === SPECIAL_TYPE_SELECTION;\n\tconst isGroupToggleColumn =\n\t\tgetColumnType(column) === SPECIAL_TYPE_GROUP_TOGGLE;\n\tconst isActionColumn = getColumnType(column) === SPECIAL_TYPE_ACTIONS;\n\tconst sortDirection = getColumnSortDirection(column);\n\tconst shouldHaveIndent =\n\t\tshowInlinePadding && isFirstColumn && !rowDragDropEnabled;\n\tconst headerCellClassNames = classNames({\n\t\t'header-cell': true,\n\t\t[ALIGNMENT_CLASS_PREFIX + alignment]: true && !isSpecial,\n\t\t[COLUMN_ACTIVE_CLASS]:\n\t\t\tisColumnActive(column) || activeColumnKey === columnKey,\n\t\t[SPECIAL_COLUMN_CELL]: isSpecial,\n\t\t[columnKeyClassName]: true,\n\t\tdraggable: isReorderingEnabled && !isSpecial,\n\t\tresizable: columnResizingEnabled && !isSpecial,\n\t});\n\n\tconst width = getSavedWidth(columnWidthsState, columnKey);\n\tconst headerCellContentClassNames = classNames('header-cell-content', {\n\t\t'parent-col-cell-content': getColumnColSpan(column) > 1,\n\t\t[INCLUDE_LARGE_PADDING_CLASS]: shouldHaveIndent && isSpecialColumn,\n\t\t[INCLUDE_SMALL_PADDING_CLASS]: shouldHaveIndent && !isSpecialColumn,\n\t});\n\n\t/**\n\t * once the header column inserted or updated\n\t * set the autowidths calculated by the browser in columnWidthsState\n\t * @param {Now.JsxVNode} node\n\t */\n\tconst hookUpdateColumnWidthHelper = (node) => {\n\t\tif (!get(columnWidthsState, ['autoWidths', columnKey])) {\n\t\t\tdispatch(SET_COLUMN_WIDTHS, {\n\t\t\t\tcolumn,\n\t\t\t\tvnode: node,\n\t\t\t});\n\t\t}\n\t};\n\n\tconst hookInsertColumnWidthHelper = () => {\n\t\tdispatch(INIT_COLUMN_WIDTHS);\n\t};\n\n\tconst headerCellAriaLabel = isSpecialColumn(column)\n\t\t? columnKey.replace(/([A-Z])/, ' $1')\n\t\t: t('{0}', getColumnLabel(column));\n\n\tconst shouldRenderRecentlyUpdatedIcon = false;\n\tconst getHeaderCellContent = () => {\n\t\tif (isSelectionColumn) {\n\t\t\treturn renderHeaderSelectionCellContent(\n\t\t\t\trowDefinitions,\n\t\t\t\tselectAllRows,\n\t\t\t\tselectAllEnabled\n\t\t\t);\n\t\t} else if (isGroupToggleColumn && toggleAllGroupsEnabled) {\n\t\t\treturn groupToggleCellContent(\n\t\t\t\t{\n\t\t\t\t\trow: null,\n\t\t\t\t\trowGroupingState,\n\t\t\t\t\tdispatch,\n\t\t\t\t},\n\t\t\t\tshouldRenderRecentlyUpdatedIcon\n\t\t\t);\n\t\t} else if (isActionColumn) {\n\t\t\treturn renderActionCellContent(\n\t\t\t\tcolumnFilteringEnabled,\n\t\t\t\tcolumnFilteringState\n\t\t\t);\n\t\t} else {\n\t\t\treturn renderDefaultHeaderCellContent(\n\t\t\t\tcolumn,\n\t\t\t\tprocessedColumnDefinitions,\n\t\t\t\ttooltip,\n\t\t\t\tstartIcons,\n\t\t\t\tendIcons,\n\t\t\t\tcolumnHeaderActions,\n\t\t\t\trowGroupingState,\n\t\t\t\tisReorderingEnabled,\n\t\t\t\tcolumnResizingEnabled,\n\t\t\t\tcolumnCount,\n\t\t\t\tcolumnIndex,\n\t\t\t\twidth,\n\t\t\t\tdispatch\n\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t<th\n\t\t\tclassName={headerCellClassNames}\n\t\t\trole=\"columnheader\"\n\t\t\trowSpan={getColumnRowSpan(column)}\n\t\t\tcolSpan={getColumnColSpan(column)}\n\t\t\tdata-columnKey={columnKey}\n\t\t\tdata-parentColumnKey={getColumnParentKey(column)}\n\t\t\tdata-draggable={isReorderingEnabled}\n\t\t\thook-insert={\n\t\t\t\t(allColumnsHaveWidth && isFirstColumn) ||\n\t\t\t\t(!allColumnsHaveWidth && isLastColumn)\n\t\t\t\t\t? hookInsertColumnWidthHelper\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\thook-update={hookUpdateColumnWidthHelper}\n\t\t\taria-label={headerCellAriaLabel}\n\t\t\taria-sort={sortDirection}\n\t\t>\n\t\t\t<div className={headerCellContentClassNames}>\n\t\t\t\t{getHeaderCellContent()}\n\t\t\t</div>\n\t\t</th>\n\t);\n};\n","import classNames from 'classnames';\n\nimport columnSelectors from '../../../utils/selectors/columnSelectors';\nimport rowSelectors from '../../../utils/selectors/rowSelectors';\nimport { renderActionableMessage } from '../../actionableMessage/actionableMessage';\n\nimport {\n\tcolumnFilterLabelCell,\n\tcolumnFilterCell,\n} from './columnFilteringCell/columnFilteringCell';\nimport {\n\tCOLUMN_FILTERING_ROW_CLASS,\n\tCOLUMN_FILTERING_ROW_ID,\n} from './columnFilteringCell/columnFilteringConsts';\nimport { tableHeaderCell } from './tableHeaderCell/tableHeaderCell';\n\n/**\n * Renders all the header cells in a given header row\n *\n * @param {Array<String>} headerCells an array of objects representing cells in a single row\n * @param {ProcessedColumnDefinitions} processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {RowDefinitions} rowDefinitions\n * @param {RowSelectionState} rowSelectionState row selection state\n * @param {*} dispatch seismic dispatch\n * @param {RowGroupingState} rowGroupingState row grouping state\n * @param {number} columnLevel column level\n * @param {boolean | undefined} columnDragDropEnabled\n * @param {boolean | undefined} columnResizingEnabled\n * @param {ColumnWidthsState} columnWidthsState\n * @param {boolean | undefined} selectAllEnabled\n * @param {boolean | undefined} toggleAllGroupsEnabled\n * @param {boolean | undefined} columnFilteringEnabled\n * @param {ColumnFilteringState} columnFilteringState\n * @param {String} activeColumnKey\n * @param {boolean | undefined} rowDragDropEnabled\n * @param {boolean} showInlinePadding\n */\nexport const renderHeaderCells = (\n\theaderCells,\n\tprocessedColumnDefinitions,\n\trowDefinitions,\n\trowSelectionState,\n\tdispatch,\n\trowGroupingState,\n\tcolumnLevel,\n\tcolumnDragDropEnabled,\n\tcolumnResizingEnabled,\n\tcolumnWidthsState,\n\tselectAllEnabled,\n\ttoggleAllGroupsEnabled,\n\tcolumnFilteringEnabled,\n\tcolumnFilteringState,\n\tactiveColumnKey,\n\trowDragDropEnabled,\n\tshowInlinePadding\n) => {\n\tconst featureFlags = { columnDragDropEnabled };\n\n\tconst columnHeaderTextTooltip = columnSelectors.getHeaderTextTooltip(\n\t\tprocessedColumnDefinitions\n\t);\n\tconst columnFilteringInfo = columnSelectors.getColumnFilteringInfo(\n\t\tprocessedColumnDefinitions\n\t);\n\tconst columnCountAtLevel = columnSelectors.getTotalColumnsAtLevel(\n\t\tprocessedColumnDefinitions,\n\t\tcolumnLevel\n\t);\n\n\tlet validColumnIndex = 0;\n\n\t//find last column\n\tconst columnEdges = processedColumnDefinitions.columnEdges;\n\tconst lastColumn = columnEdges[columnEdges.length - 1];\n\n\t//check if all columns have width defined\n\tconst allColumns = columnSelectors.getColumns(\n\t\tprocessedColumnDefinitions.processedColumnDefinitions\n\t);\n\tconst allColumnsHaveWidth = allColumns\n\t\t.filter(\n\t\t\t(/** @type {ColumnBase} */ col) =>\n\t\t\t\t!columnSelectors.isSpecialColumn(col)\n\t\t)\n\t\t.every(\n\t\t\t(/** @type {{ width: undefined; }} */ col) =>\n\t\t\t\tcol.width !== undefined\n\t\t);\n\n\treturn headerCells.map((columnKey) => {\n\t\tconst column = columnSelectors.getColumnFromProcessedCols(\n\t\t\tprocessedColumnDefinitions,\n\t\t\tcolumnKey\n\t\t);\n\t\tconst columnHeaderActions = columnSelectors.getColumnHeaderActionsFromProcessedCols(\n\t\t\tprocessedColumnDefinitions,\n\t\t\tcolumn\n\t\t);\n\t\tconst isReorderingEnabled = columnSelectors.isReorderingPossibleOnColumn(\n\t\t\tfeatureFlags,\n\t\t\tcolumn\n\t\t);\n\t\tconst isFirstColumn = columnKey === headerCells[0];\n\t\tconst isLastColumn = columnKey === lastColumn;\n\n\t\tconst columnIndex = columnSelectors.isSpecialColumn(column)\n\t\t\t? undefined\n\t\t\t: validColumnIndex++;\n\n\t\treturn tableHeaderCell(\n\t\t\tcolumn,\n\t\t\tcolumnHeaderActions,\n\t\t\tprocessedColumnDefinitions,\n\t\t\tdispatch,\n\t\t\tcolumnHeaderTextTooltip,\n\t\t\tcolumnFilteringInfo,\n\t\t\tisReorderingEnabled,\n\t\t\tcolumnResizingEnabled,\n\t\t\tcolumnCountAtLevel,\n\t\t\trowGroupingState,\n\t\t\trowDefinitions,\n\t\t\trowSelectionState,\n\t\t\tcolumnIndex,\n\t\t\tcolumnWidthsState,\n\t\t\tselectAllEnabled,\n\t\t\tisFirstColumn,\n\t\t\tisLastColumn,\n\t\t\tallColumnsHaveWidth,\n\t\t\ttoggleAllGroupsEnabled,\n\t\t\tcolumnFilteringEnabled,\n\t\t\tcolumnFilteringState,\n\t\t\tactiveColumnKey,\n\t\t\trowDragDropEnabled,\n\t\t\tshowInlinePadding\n\t\t);\n\t});\n};\n\n/**\n * Renders the column filtering header row.\n *\n * @param {Object} props\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * @param {ColumnFilteringState} props.columnFilteringState\n * @param {String} props.dir a prop representing the language direction\n * @param {TableMetadata} props.tableMetadata\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {boolean} props.showInlinePadding\n * @param {*} dispatch seismic dispatch\n */\nexport const renderColumnFilteringRow = (props, dispatch) => {\n\tconst {\n\t\tcolumnFilteringState,\n\t\tprocessedColumnDefinitions,\n\t\trowDragDropEnabled,\n\t\tshowInlinePadding,\n\t} = props;\n\n\tconst filterLabelCellColSpan = columnSelectors.getSpecialColumnsCount(\n\t\tprocessedColumnDefinitions\n\t);\n\tconst columnFilteringInfo = columnSelectors.getColumnFilteringInfo(\n\t\tprocessedColumnDefinitions\n\t);\n\n\tconst columnFilteringRowClassNames = classNames({\n\t\t[COLUMN_FILTERING_ROW_CLASS]: true,\n\t\t'is-hidden': !columnFilteringState?.showColumnFilteringRow,\n\t});\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={columnFilteringRowClassNames}\n\t\t\tid={COLUMN_FILTERING_ROW_ID}\n\t\t>\n\t\t\t{columnFilterLabelCell({\n\t\t\t\tfilterLabelCellColSpan,\n\t\t\t\tcolumnFilteringInfo,\n\t\t\t\trowDragDropEnabled,\n\t\t\t\tshowInlinePadding,\n\t\t\t})}\n\t\t\t{processedColumnDefinitions.columnEdges.map((columnEdgeKey) => {\n\t\t\t\tif (columnSelectors.isSpecialColumnKey(columnEdgeKey)) {\n\t\t\t\t\treturn null; // already accounted for in the label colspan cell\n\t\t\t\t} else {\n\t\t\t\t\tconst column = columnSelectors.getColumnFromProcessedCols(\n\t\t\t\t\t\tprocessedColumnDefinitions,\n\t\t\t\t\t\tcolumnEdgeKey\n\t\t\t\t\t);\n\t\t\t\t\treturn columnFilterCell({ column, ...props }, dispatch);\n\t\t\t\t}\n\t\t\t})}\n\t\t</tr>\n\t);\n};\n\n/**\n * Renders the header row(s) for the table\n *\n * @param {ProcessedColumnDefinitions} processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {RowDefinitions} rowDefinitions\n * @param {RowSelectionState} rowSelectionState row selection state\n * @param {*} dispatch seismic dispatch\n * @param {RowGroupingState} rowGroupingState row grouping state\n * @param {boolean | undefined} columnDragDropEnabled\n * @param {boolean | undefined} columnResizingEnabled\n * @param {ColumnWidthsState} columnWidthsState\n * @param {boolean | undefined} selectAllEnabled\n * @param {boolean | undefined} toggleAllGroupsEnabled\n * @param {boolean | undefined} columnFilteringEnabled\n * @param {ColumnFilteringState} columnFilteringState\n * @param {String} activeColumnKey\n * @param {boolean | undefined} rowDragDropEnabled\n * @param {boolean} showInlinePadding\n */\nexport const renderHeaderRows = (\n\tprocessedColumnDefinitions,\n\trowDefinitions,\n\trowSelectionState,\n\tdispatch,\n\trowGroupingState,\n\tcolumnDragDropEnabled,\n\tcolumnResizingEnabled,\n\tcolumnWidthsState,\n\tselectAllEnabled,\n\ttoggleAllGroupsEnabled,\n\tcolumnFilteringEnabled,\n\tcolumnFilteringState,\n\tactiveColumnKey,\n\trowDragDropEnabled,\n\tshowInlinePadding\n) => {\n\tconst { columnLeafs } = processedColumnDefinitions;\n\treturn columnLeafs.map((headerCells, index) => (\n\t\t<tr className=\"header-row\">\n\t\t\t{renderHeaderCells(\n\t\t\t\theaderCells,\n\t\t\t\tprocessedColumnDefinitions,\n\t\t\t\trowDefinitions,\n\t\t\t\trowSelectionState,\n\t\t\t\tdispatch,\n\t\t\t\trowGroupingState,\n\t\t\t\tindex + 1, // column level\n\t\t\t\tcolumnDragDropEnabled,\n\t\t\t\tcolumnResizingEnabled,\n\t\t\t\tcolumnWidthsState,\n\t\t\t\tselectAllEnabled,\n\t\t\t\ttoggleAllGroupsEnabled,\n\t\t\t\tcolumnFilteringEnabled,\n\t\t\t\tcolumnFilteringState,\n\t\t\t\tactiveColumnKey,\n\t\t\t\trowDragDropEnabled,\n\t\t\t\tshowInlinePadding\n\t\t\t)}\n\t\t</tr>\n\t));\n};\n\n/**\n * Subview of table containing the table header(s) that define the columns of the table\n *\n * @param {Object} props\n * @param {State} props.behaviors\n * @param {boolean | undefined} props.columnDragDropEnabled\n * @param {boolean | undefined} props.columnFilteringEnabled\n * @param {boolean | undefined} props.columnResizingEnabled\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {RowDefinitions} props.rowDefinitions\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {RowSelectionState} props.rowSelectionState row selection state\n * @param {ColumnWidthsState} props.columnWidthsState\n * @param {boolean | undefined} props.selectAllEnabled\n * @param {boolean | undefined} props.toggleAllGroupsEnabled\n * @param {String} props.activeColumnKey\n * @param {String} props.dir a prop representing the language direction\n * @param {TableMetadata} props.tableMetadata\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {boolean} props.showInlinePadding\n * @param {*} dispatch seismic dispatch\n */\nexport const tableHeaders = (props, dispatch) => {\n\tconst {\n\t\tactiveColumnKey,\n\t\tbehaviors: {\n\t\t\tcolumnFilteringBehavior: { columnFilteringState },\n\t\t},\n\t\tcolumnDragDropEnabled,\n\t\tcolumnFilteringEnabled,\n\t\tcolumnResizingEnabled,\n\t\tcolumnWidthsState,\n\t\tdir,\n\t\tprocessedColumnDefinitions,\n\t\trowDefinitions,\n\t\trowGroupingState,\n\t\trowSelectionState,\n\t\tselectAllEnabled,\n\t\ttableMetadata,\n\t\ttoggleAllGroupsEnabled,\n\t\trowDragDropEnabled,\n\t\tshowInlinePadding,\n\t} = props;\n\tconst { hasTopActionableMessage, getTopActionableMessage } = rowSelectors;\n\tconst columnFilteringProps = {\n\t\tcolumnFilteringEnabled,\n\t\tcolumnFilteringState,\n\t\tdir,\n\t\tprocessedColumnDefinitions,\n\t\ttableMetadata,\n\t\trowDragDropEnabled,\n\t\tshowInlinePadding,\n\t};\n\n\tif (!processedColumnDefinitions) return null;\n\n\treturn (\n\t\t<thead>\n\t\t\t{renderHeaderRows(\n\t\t\t\tprocessedColumnDefinitions,\n\t\t\t\trowDefinitions,\n\t\t\t\trowSelectionState,\n\t\t\t\tdispatch,\n\t\t\t\trowGroupingState,\n\t\t\t\tcolumnDragDropEnabled,\n\t\t\t\tcolumnResizingEnabled,\n\t\t\t\tcolumnWidthsState,\n\t\t\t\tselectAllEnabled,\n\t\t\t\ttoggleAllGroupsEnabled,\n\t\t\t\tcolumnFilteringEnabled,\n\t\t\t\tcolumnFilteringState,\n\t\t\t\tactiveColumnKey,\n\t\t\t\trowDragDropEnabled,\n\t\t\t\tshowInlinePadding\n\t\t\t)}\n\t\t\t{columnFilteringEnabled &&\n\t\t\t\trenderColumnFilteringRow(columnFilteringProps, dispatch)}\n\t\t\t{hasTopActionableMessage(rowDefinitions)\n\t\t\t\t? renderActionableMessage(\n\t\t\t\t\t\tgetTopActionableMessage(rowDefinitions),\n\t\t\t\t\t\tprocessedColumnDefinitions.columnEdges.length,\n\t\t\t\t\t\t'top'\n\t\t\t\t  )\n\t\t\t\t: null}\n\t\t</thead>\n\t);\n};\n","import classNames from 'classnames';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { t } from 'sn-translate';\n\nimport { TABLE_LAYOUT_FIXED } from '../../../behaviors/columnWidthBehavior/constants';\nimport {\n\tOVERLAY_TYPE_LOADER,\n\tOVERLAY_TYPE_SKELETON_LOADER,\n} from '../../../typeSchemas/overlayDefinition/overlayConfigConsts';\nimport overlaySelectors from '../../utils/selectors/overlaySelectors';\nimport rowSelectors from '../../utils/selectors/rowSelectors';\nimport {\n\thandleRemoveTooltip,\n\thandleShowTooltip,\n\thandleShowTooltipOnFocus,\n} from '../../utils/tooltipUtil';\nimport shouldWrapCellContent, {\n\tsetWrapClass,\n} from '../../utils/wrapCellContent';\nimport { renderSkeletonLoaderOverlay } from '../overlay/overlay';\n\nimport { colGroups } from './colGroups/colGroups';\nimport { tableBody } from './tableBody/tableBody';\nimport { tableFooters } from './tableFooters/tableFooter';\nimport { tableHeaders } from './tableHeaders/tableHeader';\n\nconst { hasRows, hasGroupedOrDefaultRowsWithChildren } = rowSelectors;\nconst { getOverlayType, getOverlayShowColumnHeaders } = overlaySelectors;\n\n/** The view for now-list's main table grid.\n * @param {Object} props\n * @param {('ltr'|'rtl')} props.dir a prop representing the language direction.\n * @param {ProcessedColumnDefinitions} props.processedColumnDefinitions an object representing the columns of the table, including their data and metadata.\n * \tHas been processed and cleaned by columnBehavior.\n * @param {RowDefinitions} props.rowDefinitions an object representing the rows of the table, including their data and metadata.\n * @param {boolean} props.cellEditingEnabled whether or not cell editing is enabled\n * @param {RowSelectionState} props.rowSelectionState row selection state\n * @param {ColumnWidthsState} props.columnWidthsState - description\n * @param {RowGroupingState} props.rowGroupingState row grouping state\n * @param {string} props.activeColumnKey The key of a column that should be highlighted when the header context menu is open\n * @param {string} props.activeRowKey The key of a row that should be highlighted to indicate a possible row action.\n * @param {string} props.focusedRowKey focused row key\n * @param {string} props.componentId nowId of the component\n * @param {boolean | undefined} props.virtualizedScrollEnabled\n * @param {State} props.behaviors\n * @param {TableMetadata} props.tableMetadata an object representing metadata for a given table.\n * @param {boolean | undefined} props.columnDragDropEnabled\n * @param {boolean | undefined}  props.columnResizingEnabled\n * @param {boolean | undefined}  props.columnFilteringEnabled\n * @param {boolean | undefined} props.rowDragDropEnabled\n * @param {boolean | undefined} props.toggleAllGroupsEnabled\n * @param {boolean | undefined} props.clickableTextEnabled\n * @param {string | undefined} props.wrapCellContent\n * @param {object} props.contextApi\n * @param {boolean | undefined} props.selectAllEnabled\n * @param {RowIndexesMap} props.rowIndexesMap map containing rowKeys and indexes\n * @param {string} props.shadeAlternateRows\n * @param {boolean} props.showInlinePadding\n * @param {OverlayDefinition} overlayDefinition a prop representing an overlay to render in the body of the table.\n * @param {*} dispatch seismic dispatch\n *\n */\nexport const table = (props, overlayDefinition, dispatch) => {\n\tconst {\n\t\tactiveColumnKey,\n\t\tactiveRowKey,\n\t\tbehaviors,\n\t\tcellEditingEnabled,\n\t\tclickableTextEnabled,\n\t\tcolumnDragDropEnabled,\n\t\tcolumnFilteringEnabled,\n\t\tcolumnResizingEnabled,\n\t\tcolumnWidthsState,\n\t\tcomponentId,\n\t\tcontextApi,\n\t\tdir,\n\t\tfocusedRowKey,\n\t\tshowInlinePadding,\n\t\tprocessedColumnDefinitions,\n\t\trowDefinitions,\n\t\trowDragDropEnabled,\n\t\trowGroupingState,\n\t\trowIndexesMap,\n\t\trowSelectionState,\n\t\tselectAllEnabled,\n\t\tshadeAlternateRows,\n\t\ttableMetadata,\n\t\ttoggleAllGroupsEnabled,\n\t\tvirtualizedScrollEnabled,\n\t\twrapCellContent,\n\t} = props;\n\n\tconst tableProps = {\n\t\tactiveColumnKey,\n\t\tactiveRowKey,\n\t\tbehaviors,\n\t\tcellEditingEnabled,\n\t\tclickableTextEnabled,\n\t\tcolumnDragDropEnabled,\n\t\tcolumnFilteringEnabled,\n\t\tcolumnResizingEnabled,\n\t\tcolumnWidthsState,\n\t\tcomponentId,\n\t\tcontextApi,\n\t\tdir,\n\t\tfocusedRowKey,\n\t\tshowInlinePadding,\n\t\toverlayDefinition,\n\t\tprocessedColumnDefinitions,\n\t\trowDefinitions,\n\t\trowDragDropEnabled,\n\t\trowGroupingState,\n\t\trowIndexesMap,\n\t\trowSelectionState,\n\t\tselectAllEnabled,\n\t\tshadeAlternateRows,\n\t\ttableMetadata,\n\t\ttoggleAllGroupsEnabled,\n\t\tvirtualizedScrollEnabled,\n\t};\n\n\tconst overlayType = getOverlayType(overlayDefinition);\n\tconst SKELETON_TABLE_CLASS_NAME = 'skeleton-table';\n\n\tif (\n\t\toverlayType === OVERLAY_TYPE_SKELETON_LOADER &&\n\t\t!getOverlayShowColumnHeaders(overlayDefinition)\n\t) {\n\t\treturn (\n\t\t\t<table\n\t\t\t\tclassName={classNames(\n\t\t\t\t\tSKELETON_TABLE_CLASS_NAME,\n\t\t\t\t\t'full-table-overlay'\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{renderSkeletonLoaderOverlay(overlayDefinition)}\n\t\t\t</table>\n\t\t);\n\t}\n\n\tconst tableLayout = get(columnWidthsState, 'tableLayout');\n\tconst tableClassNames = classNames(\n\t\t'now-list-table',\n\t\tvirtualizedScrollEnabled\n\t\t\t? 'virtualized-list'\n\t\t\t: setWrapClass(\n\t\t\t\t\tshouldWrapCellContent(wrapCellContent, contextApi),\n\t\t\t\t\t'wrap',\n\t\t\t\t\t'truncate'\n\t\t\t  ),\n\t\ttableLayout === TABLE_LAYOUT_FIXED ? 'fixed' : 'auto',\n\t\toverlayType === OVERLAY_TYPE_SKELETON_LOADER\n\t\t\t? SKELETON_TABLE_CLASS_NAME\n\t\t\t: null\n\t);\n\n\tconst scrollToTopCaption = t(\n\t\t`As you scroll down the table, a \"Scroll To Top\" button will appear after the table. Activating this button will bring your focus to first cell of the top row. The button will disappear if you scroll to the top of the table.`\n\t);\n\n\treturn (\n\t\t<table\n\t\t\taria-labelledby=\"sr-list-caption\"\n\t\t\tclassName={tableClassNames}\n\t\t\tdir={dir}\n\t\t\trole={\n\t\t\t\thasGroupedOrDefaultRowsWithChildren(rowDefinitions)\n\t\t\t\t\t? 'treegrid'\n\t\t\t\t\t: 'grid'\n\t\t\t}\n\t\t\tstyle={{ tableLayout }}\n\t\t\t/**\n\t\t\t * adding on the top level to avoid adding listeners for each cell\n\t\t\t */\n\t\t\ton-mouseover={(/** @type {MouseEvent} */ e) =>\n\t\t\t\thandleShowTooltip(dispatch, e)\n\t\t\t}\n\t\t\ton-mouseout={(/** @type {MouseEvent} */ e) =>\n\t\t\t\thandleRemoveTooltip(dispatch, e)\n\t\t\t}\n\t\t\ton-focusin={(/** @type {FocusEvent} */ e) => {\n\t\t\t\thandleShowTooltipOnFocus(dispatch, e);\n\t\t\t}}\n\t\t\ton-focusout={(/** @type {FocusEvent} */ e) => {\n\t\t\t\thandleRemoveTooltip(dispatch, e);\n\t\t\t}}\n\t\t>\n\t\t\t<caption className=\"now-a11y-label\" id=\"sr-list-caption\">\n\t\t\t\t{virtualizedScrollEnabled ? scrollToTopCaption : null}\n\t\t\t</caption>\n\t\t\t{colGroups(tableProps)}\n\n\t\t\t{tableHeaders(tableProps, dispatch)}\n\n\t\t\t{(!isEmpty(overlayDefinition) &&\n\t\t\t\t(overlayType === OVERLAY_TYPE_SKELETON_LOADER ||\n\t\t\t\t\toverlayType === OVERLAY_TYPE_LOADER)) ||\n\t\t\t(hasRows(rowDefinitions) && isEmpty(overlayDefinition))\n\t\t\t\t? tableBody(tableProps, dispatch)\n\t\t\t\t: null}\n\n\t\t\t{tableFooters(tableProps)}\n\t\t</table>\n\t);\n};\n","import { createUxfContractBehavior } from '@devsnc/uxf-effects';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport rtlBehavior from '@servicenow/behavior-rtl';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport { actionTypes, createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport { SnTimeAgo } from 'sn-component-timeago';\nimport { t } from 'sn-translate';\n\nimport actionableMessageBehavior from './behaviors/actionableMessageBehavior/actionableMessageBehavior';\nimport cellEditingBehavior from './behaviors/cellEditingBehavior/cellEditingBehavior';\nimport columnDefinitionsBehavior from './behaviors/columnBehavior/columnBehavior';\nimport columnDragDropBehavior from './behaviors/columnDragDropBehavior/columnDragDropBehavior';\nimport columnFilteringBehavior from './behaviors/columnFilteringBehavior/columnFilteringBehavior';\nimport columnHeaderClickBehavior from './behaviors/columnHeaderClickBehavior/columnHeaderClickBehavior';\nimport columnResizeBehavior from './behaviors/columnResizeBehavior/columnResizeBehavior';\nimport columnWidthBehavior from './behaviors/columnWidthBehavior/columnWidthBehavior';\nimport componentLoaderBehavior from './behaviors/componentLoaderBehavior/componentLoaderBehavior';\nimport contextActionsBehavior from './behaviors/contextActionsBehavior/contextActionsBehavior';\nimport customCellDynamicActionBehavior from './behaviors/customCellDynamicActionBehavior/customCellDynamicActionBehavior';\nimport {\n\tcreateIntersectionObserver,\n\tcreateRootElementHooks,\n} from './behaviors/intersectionObserverBehavior/intersectionObserverBehavior';\nimport {\n\tdefault as keyboardNavBehavior,\n\tfocus,\n} from './behaviors/keyboardNavBehavior';\nimport linkBehavior from './behaviors/linkBehavior/linkBehavior';\nimport metricsBehavior from './behaviors/metricsBehavior/metricsBehavior';\nimport overlayBehavior from './behaviors/overlayBehavior/overlayBehavior';\nimport popoverDefinitionBehavior from './behaviors/popoverBehavior/popoverBehavior';\nimport rowDefinitionsBehavior from './behaviors/rowBehavior/rowBehavior';\nimport rowDragDropBehavior from './behaviors/rowDragDropBehavior/rowDragDropBehavior';\nimport rowGroupingBehavior from './behaviors/rowGroupingBehavior/rowGroupingBehavior';\nimport rowHighlightedBehavior from './behaviors/rowHighlightedBehavior/rowHighlightedBehavior';\nimport rowSelectionBehavior from './behaviors/rowSelectionBehavior/rowSelectionBehavior';\nimport { SCROLL_TO_TOP_TRIGGERED } from './behaviors/virtualizedListBehavior/constants';\nimport { virtualizedListBehavior } from './behaviors/virtualizedListBehavior/virtualizedListBehavior';\nimport { getVirtualizedBehaviorState } from './behaviors/virtualizedListBehavior/virtualizedListBehaviorUtils';\nimport styles from './main.scss';\nimport nowListBridgeBehavior from './shared/behaviors/bridgeBehavior/bridgeBehavior';\nimport { nowListScrollHandler } from './shared/utils/eventListeners';\nimport isHiddenControlsEnabled from './shared/utils/hiddenControls';\nimport columnSelectors from './shared/utils/selectors/columnSelectors';\nimport overlaySelectors from './shared/utils/selectors/overlaySelectors';\nimport rowSelectors from './shared/utils/selectors/rowSelectors';\nimport { floatingTarget } from './shared/views/floatingTarget/floatingTarget';\nimport { overlay } from './shared/views/overlay/overlay';\nimport { popover } from './shared/views/popover/popover';\nimport './now-list-gallery';\nimport { table } from './shared/views/table/table';\n\nconst {\n\tSCROLL_CONTAINER_CLASS,\n\tUSE_LINE_BREAKS_USER_PREFERENCE,\n\tUSE_SHADE_ALTERNATE_ROWS_USER_PREFERENCE,\n\tLAYOUT_OPTIONS,\n} = require('./constants');\nconst { COMPONENT_DOM_TREE_READY } = actionTypes;\nconst {\n\tcolumnDefinitionsSchema,\n} = require('./typeSchemas/columnDefinitions/columnDefinitions');\nconst {\n\tOVERLAY_NO_COLS_CONFIG,\n\tOVERLAY_NO_ROWS_CONFIG,\n\tOVERLAY_DUPLICATE_ROW_KEYS_CONFIG,\n} = require('./typeSchemas/overlayDefinition/defaultOverlaysConfigConsts');\nconst {\n\tOVERLAY_TYPE_LOADER,\n\tOVERLAY_TYPE_SKELETON_LOADER,\n} = require('./typeSchemas/overlayDefinition/overlayConfigConsts');\nconst {\n\toverlayDefinitionSchema,\n} = require('./typeSchemas/overlayDefinition/overlayDefinition');\nconst {\n\tpopoverDefinitionSchema,\n} = require('./typeSchemas/popoverDefinition/popoverDefinition');\nconst {\n\trowDefinitionsSchema,\n} = require('./typeSchemas/rowDefinitions/rowDefinitions');\n\nconst { hasColumns } = columnSelectors;\nconst { hasRows } = rowSelectors;\nconst {\n\tgetOverlayShowColumnHeaders,\n\tgetOverlayType,\n\thasErrorMessage,\n} = overlaySelectors;\n\nconst timeAgoBehaviors = SnTimeAgo.getBehaviors();\n\n/**\n * A body overlay to render below the table (table consisting only of header cells)\n * @param {RowDefinitions} rowDefinitions\n * @param {OverlayDefinition} overlayDefinition\n * @param {TableMetadata} tableMetadata\n * @param {string} dir a string value that represents the language direction\n * @param {boolean | undefined } emptyStateEnabled boolean value that represents if empty state is enabled\n */\nexport const renderBodyOverlay = (\n\trowDefinitions,\n\toverlayDefinition,\n\ttableMetadata,\n\tdir,\n\temptyStateEnabled\n) => {\n\tif (\n\t\t!isEmpty(overlayDefinition) &&\n\t\tgetOverlayShowColumnHeaders(overlayDefinition) &&\n\t\tgetOverlayType(overlayDefinition) !== OVERLAY_TYPE_SKELETON_LOADER // handled in tableBody\n\t) {\n\t\t// overlay that shows column headers is configured through props\n\t\treturn overlay(overlayDefinition, tableMetadata, dir);\n\t} else if (!hasRows(rowDefinitions) && emptyStateEnabled) {\n\t\t// no row data overlay\n\t\treturn overlay(OVERLAY_NO_ROWS_CONFIG, tableMetadata, dir);\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/** @type {View<Props, State>} */\nexport const view = (state, { dispatch }) => {\n\tconst {\n\t\tprocessedColumnDefinitions,\n\t\tbehaviors,\n\t\tcomponentId,\n\t\trowDefinitions,\n\t\trowContextPosition,\n\t\tactiveColumnKey,\n\t\tactiveRowKey,\n\t\tfocusedRowKey,\n\t\tproperties: {\n\t\t\tcellEditingEnabled,\n\t\t\tclickableTextEnabled,\n\t\t\tcolumnDefinitions,\n\t\t\tcolumnDragDropEnabled,\n\t\t\tcolumnFilteringEnabled,\n\t\t\tcolumnResizingEnabled,\n\t\t\tdir,\n\t\t\temptyStateEnabled,\n\t\t\tshowInlinePadding,\n\t\t\tlayout,\n\t\t\toverlayDefinition,\n\t\t\trowDragDropEnabled,\n\t\t\tselectAllEnabled,\n\t\t\tselectionEnabled,\n\t\t\tshadeAlternateRows,\n\t\t\ttoggleAllGroupsEnabled,\n\t\t\tvirtualizedScrollEnabled,\n\t\t\twrapCellContent,\n\t\t},\n\t\tpopoverState,\n\t\trowSelectionState,\n\t\trowGroupingState,\n\t\thasDuplicateRowKeys,\n\t\tfetchedComponents,\n\t\tcolumnWidthsState,\n\t\tcontext: contextApi,\n\t\trowIndexesMap,\n\t} = state;\n\n\tconst tableMetadata = {\n\t\tfetchedComponents,\n\t};\n\tconst tableProps = {\n\t\tactiveColumnKey,\n\t\tactiveRowKey,\n\t\tbehaviors,\n\t\tcellEditingEnabled,\n\t\tclickableTextEnabled,\n\t\tcomponentId,\n\t\tcolumnDragDropEnabled,\n\t\tcolumnFilteringEnabled,\n\t\tcolumnResizingEnabled,\n\t\tcolumnWidthsState,\n\t\tcontextApi,\n\t\tdir,\n\t\tfocusedRowKey,\n\t\tshowInlinePadding: showInlinePadding ?? true,\n\t\tprocessedColumnDefinitions,\n\t\trowDefinitions,\n\t\trowDragDropEnabled: virtualizedScrollEnabled\n\t\t\t? false\n\t\t\t: rowDragDropEnabled,\n\t\trowGroupingState,\n\t\trowIndexesMap,\n\t\trowSelectionState,\n\t\tselectAllEnabled: virtualizedScrollEnabled ? false : selectAllEnabled,\n\t\tshadeAlternateRows,\n\t\ttableMetadata,\n\t\ttoggleAllGroupsEnabled: virtualizedScrollEnabled\n\t\t\t? false\n\t\t\t: toggleAllGroupsEnabled,\n\t\twrapCellContent,\n\t\tvirtualizedScrollEnabled,\n\t};\n\tconst {\n\t\tcolumnFilteringBehavior: { columnFilteringState },\n\t} = behaviors;\n\tconst popoverProps = { popoverState, tableMetadata, columnFilteringState };\n\tconst { showScrollToTopButton } = getVirtualizedBehaviorState(state);\n\n\t// check if list should be entirely replaced with overlay\n\tif (\n\t\tcolumnDefinitions === undefined &&\n\t\trowDefinitions === undefined &&\n\t\toverlayDefinition === undefined\n\t) {\n\t\treturn null;\n\t} else if (\n\t\t// non skeleton full table overlay is configured through props\n\t\t!isEmpty(overlayDefinition) &&\n\t\t(hasErrorMessage(overlayDefinition) ||\n\t\t\t!getOverlayShowColumnHeaders(overlayDefinition)) &&\n\t\tgetOverlayType(overlayDefinition) !== OVERLAY_TYPE_SKELETON_LOADER\n\t) {\n\t\treturn overlay(overlayDefinition, tableMetadata, dir);\n\t} else if (\n\t\t// unconfigured list overlay\n\t\t!hasColumns(processedColumnDefinitions?.processedColumnDefinitions) &&\n\t\tgetOverlayType(overlayDefinition) !== OVERLAY_TYPE_SKELETON_LOADER\n\t) {\n\t\treturn overlay(OVERLAY_NO_COLS_CONFIG, tableMetadata, dir);\n\t} else if (\n\t\thasDuplicateRowKeys &&\n\t\tgetOverlayType(overlayDefinition) !== OVERLAY_TYPE_SKELETON_LOADER\n\t) {\n\t\t// duplicate row keys overlay\n\t\treturn overlay(OVERLAY_DUPLICATE_ROW_KEYS_CONFIG, tableMetadata, dir);\n\t}\n\tconst scrollToTopLabel = t('Scroll to top of list');\n\tconst galleryLayoutProps = {\n\t\tcolumnDefinitions,\n\t\trowDefinitions,\n\t\tclickableTextEnabled,\n\t\tsharedContext: {\n\t\t\trowGroupingState,\n\t\t\tdir,\n\t\t\tfetchedComponents,\n\t\t\trowSelectionState,\n\t\t\tcontextApi,\n\t\t}, // TODO: To be Removed when working on sn-list-grid new component changes STRY59778130\n\t\tvirtualizedScrollEnabled,\n\t\tselectionEnabled,\n\t};\n\treturn (\n\t\t<div className={classNames('parent-container')}>\n\t\t\t{getOverlayType(overlayDefinition) ===\n\t\t\t\tOVERLAY_TYPE_SKELETON_LOADER && (\n\t\t\t\t<div className={'skeleton-loader-gradient'} />\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tkey=\"tableContainer\" // needed for hooks to work correctly on this element after swapping overlay\n\t\t\t\tonScroll={nowListScrollHandler(dispatch)}\n\t\t\t\tclassName={classNames(SCROLL_CONTAINER_CLASS, {\n\t\t\t\t\t'row-drag-drop': rowDragDropEnabled,\n\t\t\t\t\t'always-show': isHiddenControlsEnabled(contextApi),\n\t\t\t\t\t'disable-scroll':\n\t\t\t\t\t\tgetOverlayType(overlayDefinition) ===\n\t\t\t\t\t\t\tOVERLAY_TYPE_LOADER ||\n\t\t\t\t\t\tgetOverlayType(overlayDefinition) ===\n\t\t\t\t\t\t\tOVERLAY_TYPE_SKELETON_LOADER,\n\t\t\t\t})}\n\t\t\t\tdata-testId=\"scrollContainer\"\n\t\t\t\t{...createRootElementHooks(dispatch)}\n\t\t\t>\n\t\t\t\t{columnDefinitions?.columns?.length ||\n\t\t\t\tgetOverlayType(overlayDefinition) ===\n\t\t\t\t\tOVERLAY_TYPE_SKELETON_LOADER ? (\n\t\t\t\t\tlayout === LAYOUT_OPTIONS.LIST ? (\n\t\t\t\t\t\ttable(tableProps, overlayDefinition, dispatch)\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<sn-list-gallery {...galleryLayoutProps} />\n\t\t\t\t\t)\n\t\t\t\t) : null}\n\t\t\t\t{popover(popoverProps, dir)}\n\t\t\t\t{floatingTarget({ rowContextPosition })}\n\t\t\t</div>\n\t\t\t{renderBodyOverlay(\n\t\t\t\trowDefinitions,\n\t\t\t\toverlayDefinition,\n\t\t\t\ttableMetadata,\n\t\t\t\tdir,\n\t\t\t\temptyStateEnabled\n\t\t\t)}\n\t\t\t{virtualizedScrollEnabled && showScrollToTopButton && (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tclassName=\"scroll-to-top-button\"\n\t\t\t\t\ticon=\"arrow-up-most-outline\"\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tconfigAria={{ 'aria-label': scrollToTopLabel }}\n\t\t\t\t\ttooltipContent={scrollToTopLabel}\n\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\tdispatch(SCROLL_TO_TOP_TRIGGERED);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\n/**\n * A presentational list table component with high customizability that can be used to display custom data, or ServiceNow records when used in conjunction with the List Controller.\n * You should not use this component on its own if you want a traditional list of ServiceNow records.\n *\n * @summary Displays data from any data source in tabular format with high configurability.\n * @seismicElement now-list\n */\ncreateCustomElement('now-list', {\n\trenderer: { type: snabbdom },\n\tview,\n\tproperties: {\n\t\t/**\n\t\t * @description Direction that language should render, such as left-to-right.\n\t\t * @private\n\t\t * @type {object}\n\t\t */\n\t\tdir: {\n\t\t\tdefault: 'ltr',\n\t\t},\n\t\t/**\n\t\t * @description Config for switching between different list layout types [list | gallery]\n\t\t * @private\n\t\t * @type {object}\n\t\t */\n\t\tlayout: {\n\t\t\ttype: 'string',\n\t\t\tdefault: LAYOUT_OPTIONS.LIST,\n\t\t\trequired: false,\n\t\t},\n\t\t/**\n\t\t * @description Contains data and metadata to populate and render all columns in the list grid.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tcolumnDefinitions: {\n\t\t\tschema: columnDefinitionsSchema,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * @description Contains data and metadata to populate and render all rows in the list grid.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\trowDefinitions: {\n\t\t\tschema: rowDefinitionsSchema,\n\t\t},\n\t\t/**\n\t\t * @description Contains data to render a popover in the list at the specified target location.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tpopoverDefinition: {\n\t\t\tschema: popoverDefinitionSchema,\n\t\t},\n\t\t/**\n\t\t * @description Property to display a configurable overlay that covers either the entire list, or only covers the body with header cells exposed.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\toverlayDefinition: {\n\t\t\tschema: overlayDefinitionSchema,\n\t\t},\n\t\t/**\n\t\t * @description Enables row selection by rendering a checkbox on all rows. When true, can be turned off on a row-by-row basis.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tselectionEnabled: {\n\t\t\tdefault: true,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Enables toggling expansion state of all groups at once by rendering a button in the column header row.\n\t\t * \tWhen false, the toggle icon button is hidden and only individual groups are toggleable.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\ttoggleAllGroupsEnabled: {\n\t\t\tdefault: true,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Allows the user to select all rows through a checkbox rendered in the table header. Row selection is required for this checkbox to be rendered.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tselectAllEnabled: {\n\t\t\tdefault: true,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Enables a presentational filtering experience at the top of each column. Inputs to this experience must be handled by the consumer in order to actually filter the list.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tcolumnFilteringEnabled: {\n\t\t\tdefault: false,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Enables cell inline editing. When true, can be turned off on a column-by-column and/or cell-by-cell basis.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tcellEditingEnabled: {\n\t\t\tdefault: true,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Enables the external data source to manage cell inline editing. When true, the data source (for example, the list controller) defines the cell editing popover.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tcellEditingManaged: {\n\t\t\tdefault: false,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Allows column reordering by dragging and dropping.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tcolumnDragDropEnabled: {\n\t\t\tdefault: true,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Allows column resizing through draggable handles.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tcolumnResizingEnabled: {\n\t\t\tdefault: true,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Allows row reordering by dragging and dropping. It is not recommended for use with sorting or grouping.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\trowDragDropEnabled: {\n\t\t\tdefault: false,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description When true, expands all groups in the table.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\texpandAllGroups: {\n\t\t\tdefault: false,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description When enabled, allows multiple lines of text per cell across the table. Text may still be truncated.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\twrapCellContent: {\n\t\t\tdefault: USE_LINE_BREAKS_USER_PREFERENCE,\n\t\t\ttype: 'string',\n\t\t},\n\t\t/**\n\t\t * @description When enabled, applies styling to the list to make every other row a different color.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tshadeAlternateRows: {\n\t\t\tdefault: USE_SHADE_ALTERNATE_ROWS_USER_PREFERENCE,\n\t\t\ttype: 'string',\n\t\t},\n\t\t/**\n\t\t * @description Number of characters that can be displayed in each cell before truncation. Can be overridden at the column level.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tmaxCharacters: {\n\t\t\tdefault: 4000,\n\t\t\ttype: 'number',\n\t\t},\n\t\t/**\n\t\t * @description When true, lists that have no rows or that are incorrectly configured will show a graphic and some text.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\temptyStateEnabled: {\n\t\t\tdefault: true,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Allows links, urls, and person type cells to have clickable highlighted text. When false, they are rendered as plain text.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tclickableTextEnabled: {\n\t\t\tdefault: true,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Landmarks define main elements on the page. When this property is true, the component is included in the landmark keyboard shortcut cycling behavior, allowing users to quickly jump focus back-and-forth between the main elements on the page.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tlandmark: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * @description Activates virtualized scrolling of all rows (rowdefinitions) in state.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tvirtualizedScrollEnabled: {\n\t\t\tdefault: false,\n\t\t\ttype: 'boolean',\n\t\t},\n\t\t/**\n\t\t * @description Includes padding on the side(s) of the list. When false, the list is flush with the edge of the container.\n\t\t * @public\n\t\t * @type {object}\n\t\t */\n\t\tshowInlinePadding: {\n\t\t\tdefault: true,\n\t\t\ttype: 'boolean',\n\t\t},\n\t},\n\tbehaviors: [\n\t\tvirtualizedListBehavior,\n\t\tactionableMessageBehavior,\n\t\tcellEditingBehavior,\n\t\tcolumnDefinitionsBehavior,\n\t\tcolumnDragDropBehavior,\n\t\tcolumnFilteringBehavior,\n\t\tcolumnHeaderClickBehavior,\n\t\tcolumnResizeBehavior,\n\t\tcolumnWidthBehavior,\n\t\tcomponentLoaderBehavior,\n\t\tcontextActionsBehavior,\n\t\tcustomCellDynamicActionBehavior,\n\t\tkeyboardNavBehavior,\n\t\tlinkBehavior,\n\t\toverlayBehavior,\n\t\tpopoverDefinitionBehavior,\n\t\trowDefinitionsBehavior,\n\t\trowDragDropBehavior,\n\t\trowGroupingBehavior,\n\t\trowHighlightedBehavior,\n\t\trowSelectionBehavior,\n\t\ttooltipBehavior,\n\t\ttruncationBehavior,\n\t\tnowListBridgeBehavior,\n\t\t{ behavior: rtlBehavior },\n\t\tcreateIntersectionObserver({\n\t\t\trootElementSelector: '[data-id=scrollContainer]',\n\t\t\telementIdentifier: {\n\t\t\t\t'row-cell-actions': {\n\t\t\t\t\tinitialClass: 'row-cell-actions-button-placeholder',\n\t\t\t\t},\n\t\t\t\t'header-cell-actions': {\n\t\t\t\t\tinitialClass: 'row-cell-actions-button-placeholder',\n\t\t\t\t},\n\t\t\t\t'time-ago-display': {\n\t\t\t\t\tinitialClass: 'time-ago-display-placeholder',\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\t...timeAgoBehaviors,\n\t\tmetricsBehavior,\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {\n\t\t\t\tfocus,\n\t\t\t},\n\t\t},\n\t\tcreateUxfContractBehavior({\n\t\t\tinteractiveActionName: COMPONENT_DOM_TREE_READY,\n\t\t}),\n\t],\n\tstyles,\n});\n","import \"@servicenow/now-list\";\nimport \"@servicenow/now-loader\";\n\nconst view = ({ isGlobal, activeTable, nlqTableDefinitionsLoading }) => {\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t\"record-list-container\": true,\n\t\t\t\t\"-global\": isGlobal\n\t\t\t}}\n\t\t>\n\t\t\t{nlqTableDefinitionsLoading ? (\n\t\t\t\t<div className=\"now-list-loading-container\">\n\t\t\t\t\t<now-loader size=\"lg\" />\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<now-list\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tcolumnDefinitions={activeTable.tableDefinitions.columnDefinitions}\n\t\t\t\t\trowDefinitions={activeTable.tableDefinitions.rowDefinitions}\n\t\t\t\t\tselectionEnabled={false}\n\t\t\t\t\tcellEditingEnabled={false}\n\t\t\t\t\trowDragDropEnabled={false}\n\t\t\t\t\tcolumnDragDropEnabled={false}\n\t\t\t\t></now-list>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","const Divider = ({ variant }) => {\n\tconst className =\n\t\tvariant === \"secondary\" || variant === \"tertiary\"\n\t\t\t? `divider-${variant}`\n\t\t\t: \"divider-primary\";\n\treturn <div className={className} />;\n};\n\nexport default Divider;\n","import ListResult from \"./listResult\";\nimport Divider from \"./divider\";\nimport {\n\tCHOOSE_A_TABLE,\n\tPREVIEW_TABLE_LABEL,\n\tVIEW_TABLE_TRANSLATION\n} from \"../constants\";\nimport { t } from \"sn-translate\";\n\nconst view = ({\n\ttableMatches,\n\tactiveTable,\n\tisGlobal,\n\tnlqTableDefinitionsLoading\n}) => (\n\t<div className=\"nlq-card-container\">\n\t\t{tableMatches.length > 1 ? (\n\t\t\t<div className=\"pills-container\">\n\t\t\t\t<span className=\"choose-table-label\">{CHOOSE_A_TABLE}</span>\n\t\t\t\t<span className=\"pills-group\">\n\t\t\t\t\t{tableMatches.map(table => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<now-pill\n\t\t\t\t\t\t\t\tlabel={table.label}\n\t\t\t\t\t\t\t\tappend-to-meta={{ tableSelected: table }}\n\t\t\t\t\t\t\t\tmanageSelected\n\t\t\t\t\t\t\t\tselected={table.name === activeTable.name}\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tpaddingTop: \"2px\",\n\t\t\t\t\t\t\t\t\tpaddingRight: \"8px\",\n\t\t\t\t\t\t\t\t\tpaddingBottom: \"4px\",\n\t\t\t\t\t\t\t\t\tmaxWidth: \"100%\"\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</span>\n\t\t\t\t<Divider variant=\"tertiary\" />\n\t\t\t</div>\n\t\t) : null}\n\t\t<span className=\"preview-label\">{PREVIEW_TABLE_LABEL}</span>\n\t\t<now-heading\n\t\t\tlabel={activeTable.label}\n\t\t\tclassName=\"active-table-label\"\n\t\t\tlevel={2}\n\t\t\tvariant=\"header-tertiary\"\n\t\t></now-heading>\n\t\t<now-label-value-inline\n\t\t\tlabel={activeTable.name}\n\t\t\tclassName=\"active-table-name\"\n\t\t/>\n\t\t<div>\n\t\t\t<ListResult\n\t\t\t\tisGlobal={isGlobal}\n\t\t\t\tactiveTable={activeTable}\n\t\t\t\tnlqTableDefinitionsLoading={nlqTableDefinitionsLoading}\n\t\t\t/>\n\t\t</div>\n\t\t{!nlqTableDefinitionsLoading && (\n\t\t\t<div className=\"nlq-gr-link\">\n\t\t\t\t<now-text-link\n\t\t\t\t\tlabel={VIEW_TABLE_TRANSLATION}\n\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\"aria-label\": t(\"View full {0} table\", activeTable.label)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t)}\n\t</div>\n);\n\nexport default view;\n","export const NOW_BUTTON_CLICKED = \"NOW_BUTTON#CLICKED\"; // nds\nexport const NOW_DROPDOWN_ITEM_CLICKED = \"NOW_DROPDOWN#ITEM_CLICKED\"; // nds\nexport const NOW_SELECT_ITEM_SET = \"NOW_SELECT#SELECTED_ITEM_SET\";\nexport const DECLARATIVE_ACTION = \"DECLARATIVE_ACTION\"; // exposed action\n\n// Feedback actions\nexport const NOW_BUTTON_BARE_CLICKED = \"NOW_BUTTON_BARE#CLICKED\"; // nds action\nexport const NOW_BUTTON_ICONIC_CLICKED = \"NOW_BUTTON_ICONIC#CLICKED\"; // nds action\nexport const NOW_POPOVER_OPEN_SET = \"NOW_POPOVER#OPENED_SET\"; // nds action\nexport const NOW_PILL_SELECTED = \"NOW_PILL#SELECTED_SET\"; // nds action\nexport const NOW_RADIO_BUTTON_VALUE_SET = \"NOW_RADIO_BUTTONS#VALUE_SET\";\nexport const FEEDBACK_PROVIDED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#FEEDBACK_PROVIDED\";\nexport const NLQ_TABLE_SWITCHED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#NLQ_TABLE_SWITCHED\";\nexport const NLQ_VIEW_FULL_TABLE_CLICKED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#NLQ_VIEW_FULL_TABLE_CLICKED\";\nexport const KG_VIEW_RECORDS = \"SN_SEARACH_GENIUS_CARD_ASSIST#KG_VIEW_RECORDS\";\nexport const HELPFUL_FEEDBACK_START = \"GENIUS_RESULT_HELPFUL_FEEDBACK\";\nexport const UNHELPFUL_FEEDBACK_START = \"GENIUS_RESULT_UNHELPFUL_FEEDBACK\";\nexport const FETCH_NLQ_NAVIGATION_CONFIG = \"FETCH_NLQ_NAVIGATION_CONFIG\";\nexport const FETCH_NLQ_NAVIGATION_CONFIG_SUCCEEDED =\n\t\"FETCH_NLQ_NAVIGATION_CONFIG_SUCCEEDED\";\n\nexport const FETCH_LIST_DATA = \"FETCH_LIST_DATA\";\nexport const RECORD_LIST_DATA_FETCH_STARTED =\n\t\"NOW_RECORD_LIST_CONNECTED#DATA_FETCH_STARTED\";\nexport const RECORD_LIST_DATA_FETCH_COMPLETED =\n\t\"NOW_RECORD_LIST_CONNECTED#DATA_FETCH_COMPLETED\";\nexport const RECORD_LIST_DATA_FETCH_FAILED =\n\t\"NOW_RECORD_LIST_CONNECTED#DATA_FETCH_FAILED\";\n\nexport const MULTITABLE_NLQ_REQUEST = \"MULTITABLE_NLQ_REQUEST\";\nexport const MULTITABLE_NLQ_REQUEST_STARTED = \"MULTITABLE_NLQ_REQUEST#START\";\nexport const MULTITABLE_NLQ_REQUEST_SUCCESS = \"MULTITABLE_NLQ_REQUEST#SUCCESS\";\nexport const MULTITABLE_NLQ_REQUEST_ERROR = \"MULTITABLE_NLQ_REQUEST#ERROR\";\n\nexport const QUERY_BUILDER_REQUEST = \"QUERY_BUILDER_REQUEST\";\nexport const QUERY_BUILDER_REQUEST_STARTED = \"QUERY_BUILDER_REQUEST#START\";\nexport const QUERY_BUILDER_REQUEST_SUCCESS = \"QUERY_BUILDER_REQUEST#SUCCESS\";\nexport const QUERY_BUILDER_REQUEST_ERROR = \"QUERY_BUILDER_REQUEST#ERROR\";\n\nexport const QUERY_BUILDER_POLL = \"QUERY_BUILDER_POLL\";\nexport const QUERY_BUILDER_POLL_STARTED = \"QUERY_BUILDER_POLL#START\";\nexport const QUERY_BUILDER_POLL_SUCCESS = \"QUERY_BUILDER_POLL#SUCCESS\";\nexport const QUERY_BUILDER_POLL_ERROR = \"QUERY_BUILDER_POLL#ERROR\";\n\nexport const NOW_TEXT_LINK_CLICKED = \"NOW_TEXT_LINK#CLICKED\"; // nds action\nexport const NOW_TEXTAREA_INPUT = \"NOW_TEXTAREA#INPUT\";\nexport const GENIUS_RESULT_CHAT_TRIGGERED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#CHAT_TRIGGERED\";\nexport const ASK_A_FOLLOW_UP_CLIKED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#ASK_A_FOLLOW_UP_CLIKED\";\nexport const SHOW_FULL_ANSWER_CLICKED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#SHOW_FULL_ANSWER_CLICKED\";\nexport const ATTACHMENT_CLICKED = \"NOW_TEMPLATE_CARD_ATTACHMENT#ACTION_CLICKED\";\nexport const FEEDBACK_ACTION_CLICKED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#FEEDBACK_CLICKED\";\nexport const NOW_CARD_CLICKED = \"NOW_CARD#CLICKED\";\n\nexport const GR_MINI_SELECETED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#GR_MINI_SELECETED\";\n","import { FEEDBACK_PROVIDED } from \"./actions\";\nimport { t } from \"sn-translate\";\n\nexport const getNLQMiniThumbnailSubtitle = response => {\n\treturn Object.keys(JSON.parse(response)).join(\", \");\n};\n\nexport const getNLQMultiTableDropdownOptions = (\n\titems,\n\tselectedTables,\n\tprop\n) => {\n\tconst selections = Object.values(selectedTables);\n\tconst selectedTablesCount = selections.filter(\n\t\tselection => selection !== \"none\"\n\t).length;\n\n\tif (selectedTables[prop] !== \"none\" && selectedTablesCount <= 1) {\n\t\treturn items.filter(item => item.id !== \"none\");\n\t}\n\n\treturn items;\n};\n\nexport const formatSelectedTables = selectedTables => {\n\treturn Object.entries(selectedTables)\n\t\t.filter(table => table[1] !== \"none\")\n\t\t.map(([key, value]) => ({\n\t\t\tvalue: key,\n\t\t\tsuggestion: {\n\t\t\t\tmetadata: { name: value },\n\t\t\t\tdisplay_name: key,\n\t\t\t\ttype: \"table\"\n\t\t\t}\n\t\t}));\n};\n\nexport const formatUtterance = (utterance, formattedTables) => {\n\tconst connectingWord = t(\"with\");\n\tlet updatedUtterance = removeExtraWhitespaces(utterance);\n\n\t// Iterate over table data and return their token values if they are table suggestions\n\tconst tableTokens = formattedTables.reduce((accumulator, currentValue) => {\n\t\tconst suggestionType = currentValue.suggestion?.type;\n\t\tif (suggestionType && suggestionType === \"table\") {\n\t\t\treturn [...accumulator, currentValue];\n\t\t}\n\t\treturn accumulator;\n\t}, []);\n\n\ttableTokens.forEach(token => {\n\t\ttableTokens.forEach(compareToken => {\n\t\t\tif (\n\t\t\t\ttoken !== compareToken &&\n\t\t\t\ttoken !== connectingWord &&\n\t\t\t\tcompareToken !== connectingWord\n\t\t\t) {\n\t\t\t\tlet regex = new RegExp(`\\\\b${token}\\\\b \\\\b${compareToken}\\\\b`, \"gi\");\n\t\t\t\tupdatedUtterance = updatedUtterance.replace(\n\t\t\t\t\tregex,\n\t\t\t\t\ttranslateTokenReplacement(token, compareToken)\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t});\n\n\treturn updatedUtterance;\n};\n\nconst translateTokenReplacement = (token, compareToken) =>\n\tt(\n\t\t{\n\t\t\tcode: \"sn-search-genius-card-assist\",\n\t\t\tmessage: \"{token} with {compareToken}\",\n\t\t\tcomment: \"count returns the number of results for the searchTerm searched\"\n\t\t},\n\t\t{ token: token, compareToken: compareToken }\n\t);\n\nconst removeExtraWhitespaces = item => {\n\tif (!item) return \"\";\n\treturn item.replace(/\\s+/g, \" \");\n};\n\nexport const getNavigationConfig = (configs, table, profile, source) => {\n\tlet config;\n\t// check for a table, profile, and source match\n\tconfig = configs.find(config => {\n\t\treturn (\n\t\t\tconfig.table === table &&\n\t\t\tconfig.profile === profile &&\n\t\t\tconfig.source === source\n\t\t);\n\t});\n\tif (config) return config;\n\t// check for a match of two where the third is blank\n\tconfig = configs.find(config => {\n\t\tif (!config.table) {\n\t\t\tif (config.profile === profile && config.source === source) return true;\n\t\t}\n\t\tif (!config.profile) {\n\t\t\tif (config.table === table && config.source === source) return true;\n\t\t}\n\t\tif (!config.source) {\n\t\t\tif (config.table === table && config.profile === profile) return true;\n\t\t}\n\t\treturn false;\n\t});\n\tif (config) return config;\n\t// check for a match of one where the other two are blank\n\tconfig = configs.find(config => {\n\t\tif (config.table === table) {\n\t\t\tif (!config.profile && !config.source) return true;\n\t\t}\n\t\tif (config.profile === profile) {\n\t\t\tif (!config.table && !config.source) return true;\n\t\t}\n\t\tif (config.source === source) {\n\t\t\tif (!config.table && !config.profile) return true;\n\t\t}\n\t\treturn false;\n\t});\n\tif (config) return config;\n\t// check for a blank table and blank profile  and blank source (default) configuration\n\tconfig = configs.find(config => {\n\t\treturn !config.table && !config.profile && !config.source;\n\t});\n\tif (config) return config;\n\t// return the hard-coded default\n\treturn {\n\t\taction: \"NAV_ITEM_SELECTED\",\n\t\taction_payload:\n\t\t\t'{ \"context\": { \"experienceName\": \"Unified Navigation App\", \"path\": \"now/nav/ui\" }, \"route\": \"classic\", \"params\": { \"target\": \"${table}_list.do?sysparm_query=${query}\" } }'\n\t};\n};\n\nexport const handleFeedback = (\n\tfeedbackValue,\n\treason,\n\tdispatch,\n\tstate,\n\tupdateState,\n\thost\n) => {\n\tconst {\n\t\tproperties: { model }\n\t} = state;\n\n\tdispatch(FEEDBACK_PROVIDED, {\n\t\taction: {\n\t\t\tvalue: feedbackValue,\n\t\t\treason,\n\t\t\tactionPayload: {}\n\t\t},\n\t\tmodel\n\t});\n\n\tconst partialState = {\n\t\t...state,\n\t\tfeedbackValue,\n\t\topenFeedbackDialog: false\n\t};\n\t// Thumbs up was clicked so clear any reasons for thumbs down\n\tif (feedbackValue > 0) partialState.feedbackReason = \"\";\n\tupdateState(partialState);\n\t// Set focus on the feedback message after it's rendered\n\tif (host && host.shadowRoot) {\n\t\tsetTimeout(() => {\n\t\t\tconst feedbackMessageElement = host.shadowRoot.querySelector(\n\t\t\t\t\".genius-card-header__feedback\"\n\t\t\t);\n\t\t\tif (feedbackMessageElement) {\n\t\t\t\tfeedbackMessageElement.focus();\n\t\t\t}\n\t\t}, 100);\n\t}\n};\n\nexport const transformJSONToTableDefinitions = jsonData => {\n\t/**\n\t * code to transform graphQL response to what now-list need as input\n\t * Example input for now-list\n\t * \tcolumnDefinitions = {\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\tkey: 'colKey1',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tlabel: 'String Field',\n\t\t\t\t}\n\t\t\t],\n\t\t};\n\t\trowDefinitions = {\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tkey: 'rowKey1',\n\t\t\t\t\tcells: {\n\t\t\t\t\t\tcolKey1: {\n\t\t\t\t\t\t\tvalue: 'lorem ipsum',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcolKey2: {\n\t\t\t\t\t\t\tvalue: 10,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t],\n\t\t};\n\t */\n\tconst columnDefinitions = {\n\t\tcolumns: jsonData.GlideListLayout_Query.getListLayout.allColumns.map(\n\t\t\t(column, index) => ({\n\t\t\t\tkey: `colKey${index + 1}`,\n\t\t\t\ttype: \"string\",\n\t\t\t\tlabel: column.columnData.fullLabel\n\t\t\t})\n\t\t)\n\t};\n\n\tconst rowDefinitions = {\n\t\trows: jsonData.GlideListLayout_Query.getListLayout.layoutQuery.queryRows.map(\n\t\t\t(row, rowIndex) => ({\n\t\t\t\tkey: `rowKey${rowIndex + 1}`,\n\t\t\t\tcells: columnDefinitions.columns.reduce(\n\t\t\t\t\t(cells, column, columnIndex) => {\n\t\t\t\t\t\tconst columnName =\n\t\t\t\t\t\t\tjsonData.GlideListLayout_Query.getListLayout.allColumns[\n\t\t\t\t\t\t\t\tcolumnIndex\n\t\t\t\t\t\t\t].columnName;\n\t\t\t\t\t\tcells[column.key] = {\n\t\t\t\t\t\t\tvalue: row.rowData.find(data => data.columnName === columnName)\n\t\t\t\t\t\t\t\t.columnData.displayValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn cells;\n\t\t\t\t\t},\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t})\n\t\t)\n\t};\n\n\treturn { columnDefinitions, rowDefinitions };\n};\n","import \"@servicenow/now-select\";\nimport ListResult from \"./listResult\";\nimport { t } from \"sn-translate\";\nimport {\n\tNLQ_MULTITABLE_DESCRIPTION,\n\tNLQ_MULTITABLE_DROPDOWN,\n\tNLQ_MULTITABLE_HEADER,\n\tPREVIEW_TABLE_LABEL,\n\tVIEW_TABLE_TRANSLATION,\n\tNLQ_ERROR_TITLE,\n\tNLQ_ERROR_DETAIL\n} from \"../constants\";\nimport { getNLQMultiTableDropdownOptions } from \"../utils\";\nimport \"@servicenow/now-card\";\n\nconst view = ({\n\tmodel,\n\tactiveTable,\n\tisGlobal,\n\tnlqTableDefinitionsLoading,\n\tselectedTables,\n\terror\n}) => {\n\tconst response = JSON.parse(model[\"columns.response\"]);\n\tconst dropDowns = [];\n\tfor (let prop in response) {\n\t\tdropDowns.push(\n\t\t\t<span className=\"nlq-multitable-dropdown\">\n\t\t\t\t<now-select\n\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\tlabel={t(prop)}\n\t\t\t\t\titems={getNLQMultiTableDropdownOptions(\n\t\t\t\t\t\tresponse[prop],\n\t\t\t\t\t\tselectedTables || {},\n\t\t\t\t\t\tprop\n\t\t\t\t\t)}\n\t\t\t\t\tselectedItem={selectedTables ? selectedTables[prop] : undefined}\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\tcomponent-id={`${NLQ_MULTITABLE_DROPDOWN}-${prop}`}\n\t\t\t\t\tappendToPayload={{\n\t\t\t\t\t\ttype: NLQ_MULTITABLE_DROPDOWN,\n\t\t\t\t\t\ttoken: prop,\n\t\t\t\t\t\tactionId: NLQ_MULTITABLE_DROPDOWN\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</span>\n\t\t);\n\t}\n\tlet body = (\n\t\t<ListResult\n\t\t\tisGlobal={isGlobal}\n\t\t\tactiveTable={activeTable}\n\t\t\tnlqTableDefinitionsLoading={nlqTableDefinitionsLoading}\n\t\t/>\n\t);\n\tif (error) {\n\t\tbody = (\n\t\t\t<div className=\"nlq-error-body\">\n\t\t\t\t<div className=\"nlq-error-body-contents\">\n\t\t\t\t\t<now-icon slot=\"identifier\" icon=\"ai-sparkle-outline\" />\n\t\t\t\t\t<span className=\"nlq-error-title\">{NLQ_ERROR_TITLE}</span>\n\t\t\t\t\t<p className=\"nlq-error-detail\">{NLQ_ERROR_DETAIL}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<div className=\"nlq-multitable nlq-card-container\">\n\t\t\t<h3>{NLQ_MULTITABLE_HEADER}</h3>\n\t\t\t<p>{NLQ_MULTITABLE_DESCRIPTION}</p>\n\t\t\t{dropDowns}\n\t\t\t<now-card-divider />\n\t\t\t{!error && <span className=\"preview-label\">{PREVIEW_TABLE_LABEL}</span>}\n\t\t\t{body}\n\t\t\t{!(nlqTableDefinitionsLoading || error) && (\n\t\t\t\t<div className=\"nlq-gr-link\">\n\t\t\t\t\t<now-text-link\n\t\t\t\t\t\tlabel={VIEW_TABLE_TRANSLATION}\n\t\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\t\"aria-label\": VIEW_TABLE_TRANSLATION\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport AiSearchBody from \"../contents/bodyAiSearch\";\nimport NlqBody from \"../contents/bodyNLQ\";\nimport NlqMultiTableBody from \"../contents/bodyMultiTableNLQ\";\nimport { GR_TYPES } from \"../constants\";\n\nconst view = ({\n\tidentifier,\n\tidentifierCriticalText,\n\theading,\n\tmarker,\n\tlabelValuesInfo,\n\tdescription,\n\tidentifierFontSize,\n\theadingFontSize,\n\tisGlobal,\n\tidentifierAtBottom,\n\tshouldTruncate,\n\tdescriptionCollapsed,\n\tdescriptionFontSize,\n\tupdateState,\n\tgrType,\n\tactiveTable,\n\ttableMatches,\n\tshowActionAsLink,\n\tmultiTable,\n\tmodel,\n\tselectedTables,\n\terror,\n\tisOneBox,\n\tisMobile,\n\tnlqTableDefinitionsLoading,\n\tisExternalSourceType,\n\tisSynthesizedAndNotStreaming,\n\tcitationsFromSynthesizedResponse,\n\tkgListCitations,\n\tactions,\n\tsynthesizedMarkdownText,\n\tsynthesizedGeniusResultCanExpand,\n\tsynthesizedGeniusResultExpanded,\n\ttextRef,\n\tcanAskFollowUp,\n\tforceNewTab\n}) => {\n\tif (grType === GR_TYPES.AI_SEARCH || grType === GR_TYPES.SYNTHESIZED) {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<AiSearchBody\n\t\t\t\t\tidentifier={identifier}\n\t\t\t\t\tidentifierCriticalText={identifierCriticalText}\n\t\t\t\t\theading={heading}\n\t\t\t\t\tmarker={marker}\n\t\t\t\t\tlabelValuesInfo={labelValuesInfo}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\tidentifierFontSize={identifierFontSize}\n\t\t\t\t\theadingFontSize={headingFontSize}\n\t\t\t\t\tdescriptionFontSize={descriptionFontSize}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\tidentifierAtBottom={identifierAtBottom}\n\t\t\t\t\tshouldTruncate={shouldTruncate}\n\t\t\t\t\tdescriptionCollapsed={descriptionCollapsed}\n\t\t\t\t\tupdateState={updateState}\n\t\t\t\t\tshowActionAsLink={showActionAsLink}\n\t\t\t\t\tisOneBox={isOneBox}\n\t\t\t\t\tisMobile={isMobile}\n\t\t\t\t\tisExternalSourceType={isExternalSourceType}\n\t\t\t\t\tisSynthesizedAndNotStreaming={isSynthesizedAndNotStreaming}\n\t\t\t\t\tcitationsFromSynthesizedResponse={citationsFromSynthesizedResponse}\n\t\t\t\t\tkgListCitations={kgListCitations}\n\t\t\t\t\tactions={actions}\n\t\t\t\t\tsynthesizedGeniusResultExpanded={synthesizedGeniusResultExpanded}\n\t\t\t\t\tsynthesizedMarkdownText={synthesizedMarkdownText}\n\t\t\t\t\tsynthesizedGeniusResultCanExpand={synthesizedGeniusResultCanExpand}\n\t\t\t\t\ttextRef={textRef}\n\t\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t\t\tforceNewTab={forceNewTab}\n\t\t\t\t/>\n\t\t\t</Fragment>\n\t\t);\n\t} else if (multiTable) {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<NlqMultiTableBody\n\t\t\t\t\tactiveTable={activeTable}\n\t\t\t\t\tmodel={model}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\tnlqTableDefinitionsLoading={nlqTableDefinitionsLoading}\n\t\t\t\t\tselectedTables={selectedTables}\n\t\t\t\t\terror={error}\n\t\t\t\t/>\n\t\t\t</Fragment>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<NlqBody\n\t\t\t\t\tactiveTable={activeTable}\n\t\t\t\t\ttableMatches={tableMatches}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\tnlqTableDefinitionsLoading={nlqTableDefinitionsLoading}\n\t\t\t\t/>\n\t\t\t</Fragment>\n\t\t);\n\t}\n};\n\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport \"@servicenow/now-text-link\";\nimport styles from \"../scss/contents/aboutPopover.scss\";\nimport {\n\tHEADER_TOOLTIP_TEXT,\n\tHEADER_TOOLTIP_TEXT_NLQ,\n\tLEARN_MORE,\n\tGR_TYPES\n} from \"../constants\";\n\nimport isEmpty from \"lodash/isEmpty\";\n\ncreateCustomElement(\"sn-search-genius-about-popover\", {\n\tview: ({ properties: { url, grType } }) => (\n\t\t<div className=\"genius-card__about-popover\">\n\t\t\t<span aria-live=\"assertive\">\n\t\t\t\t{grType === GR_TYPES.NLQ\n\t\t\t\t\t? HEADER_TOOLTIP_TEXT_NLQ\n\t\t\t\t\t: HEADER_TOOLTIP_TEXT}\n\t\t\t</span>\n\t\t\t{!isEmpty(url) ? (\n\t\t\t\t<div>\n\t\t\t\t\t<br />\n\t\t\t\t\t<now-text-link\n\t\t\t\t\t\tclassName=\"genius-card__about-popover-link\"\n\t\t\t\t\t\tlabel={LEARN_MORE}\n\t\t\t\t\t\thref={url}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ticonEnd=\"open-link-outline\"\n\t\t\t\t\t\topensWindow\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</div>\n\t),\n\tproperties: {\n\t\turl: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\tgrType: {\n\t\t\tdefault: GR_TYPES.AI_SEARCH,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t}\n\t},\n\tstyles\n});\n","import \"@servicenow/now-button\";\nimport \"@servicenow/now-radio-buttons\";\nimport \"@servicenow/now-card\";\nimport \"@servicenow/now-popover\";\n\nimport \"./sn-search-genius-about-popover\";\nimport { HELPFUL_FEEDBACK_START, UNHELPFUL_FEEDBACK_START } from \"../actions\";\nimport {\n\tFEEDBACK_PROMPT_LABEL,\n\tHELPFUL_FEEDBACK_LABEL,\n\tUNHELPFUL_FEEDBACK_LABEL,\n\tPOST_FEEDBACK_LABEL,\n\tFEEDBACK_DIALOG_HEADER,\n\tFEEDBACK_DIALOG_INSTRUCTIONS,\n\tFEEDBACK_DIALOG_SEND_BUTTON_LABEL,\n\tFEEDBACK_DIALOG_SEND_BUTTON_TOOLTIP,\n\tCLOSE_FEEDBACK_FORM,\n\tOTHER_FEEDBACK\n} from \"../constants\";\n\nconst view = ({\n\theading,\n\tvalue,\n\tfeedbackOptions,\n\topenFeedbackDialog,\n\tfeedbackReason,\n\tfeedbackOther,\n\tisGlobal\n}) => {\n\tif (value !== 0) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclassName=\"genius-card-header__feedback\"\n\t\t\t\taria-live=\"polite\"\n\t\t\t\ttabindex={-1}\n\t\t\t>\n\t\t\t\t{POST_FEEDBACK_LABEL}\n\t\t\t</span>\n\t\t);\n\t}\n\n\tconst helpfulButton = (\n\t\t<now-button-iconic\n\t\t\thidePadding\n\t\t\tappend-to-payload={{ actionId: HELPFUL_FEEDBACK_START }}\n\t\t\tconfig-aria={{\n\t\t\t\t\"aria-label\": `${FEEDBACK_PROMPT_LABEL} ${HELPFUL_FEEDBACK_LABEL} for ${heading}`\n\t\t\t}}\n\t\t\tvariant=\"tertiary\"\n\t\t\tsize=\"sm\"\n\t\t\ticon=\"thumbs-up-outline\"\n\t\t/>\n\t);\n\n\tconst unhelpfulButton = (\n\t\t<now-button-iconic\n\t\t\thidePadding\n\t\t\tslot=\"trigger\"\n\t\t\tappend-to-payload={{ actionId: UNHELPFUL_FEEDBACK_START }}\n\t\t\tconfig-aria={{\n\t\t\t\t\"aria-label\": `${FEEDBACK_PROMPT_LABEL} ${UNHELPFUL_FEEDBACK_LABEL} for ${heading}`\n\t\t\t}}\n\t\t\tvariant=\"tertiary\"\n\t\t\tsize=\"sm\"\n\t\t\ticon=\"thumbs-down-outline\"\n\t\t/>\n\t);\n\n\tconst otherFeedbackInput =\n\t\tfeedbackOptions &&\n\t\tfeedbackOptions.length &&\n\t\tfeedbackOptions[feedbackOptions.length - 1][\"id\"] === OTHER_FEEDBACK ? ( //If bottom feedback option is 'Other'\n\t\t\t<now-textarea\n\t\t\t\tstyle={{ width: \"100%\" }}\n\t\t\t\tdisabled={feedbackReason !== OTHER_FEEDBACK}\n\t\t\t\tmaxlength={255} //Max string length of field 'Action Value' in table 'sys_search_genius_result_event_action'\n\t\t\t\tvalue={feedbackOther}\n\t\t\t\tmanageValue\n\t\t\t/>\n\t\t) : null;\n\n\tconst feedbackDialogCard = (\n\t\t<now-card slot=\"content\" size=\"lg\" interaction=\"none\">\n\t\t\t<now-card-header\n\t\t\t\theading={{\n\t\t\t\t\tlabel: FEEDBACK_DIALOG_HEADER,\n\t\t\t\t\tlines: 2,\n\t\t\t\t\tsize: \"md\"\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tslot=\"metadata\"\n\t\t\t\t\tbare\n\t\t\t\t\thidePadding\n\t\t\t\t\ticon=\"close-outline\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tconfig-aria={{ button: { \"aria-label\": `${CLOSE_FEEDBACK_FORM}` } }}\n\t\t\t\t/>\n\t\t\t</now-card-header>\n\t\t\t<span id=\"feedback-reason-label\">{FEEDBACK_DIALOG_INSTRUCTIONS}</span>\n\t\t\t<br />\n\t\t\t<now-radio-buttons\n\t\t\t\tname=\"feedback-reason\"\n\t\t\t\tconfig-aria={{ \"aria-labelledby\": \"feedback-reason-label\" }}\n\t\t\t\toptions={feedbackOptions}\n\t\t\t\tvalue={feedbackReason}\n\t\t\t\tmanageValue\n\t\t\t/>\n\t\t\t<div>{otherFeedbackInput}</div>\n\t\t\t<br />\n\t\t\t<now-card-footer>\n\t\t\t\t<now-button\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\tisFeedback: true\n\t\t\t\t\t}}\n\t\t\t\t\tslot=\"end\"\n\t\t\t\t\tlabel={FEEDBACK_DIALOG_SEND_BUTTON_LABEL}\n\t\t\t\t\ttooltipContent={FEEDBACK_DIALOG_SEND_BUTTON_TOOLTIP}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\tdisabled={!feedbackReason}\n\t\t\t\t/>\n\t\t\t</now-card-footer>\n\t\t</now-card>\n\t);\n\n\tconst unhelpfulButtonWithReasonDialog =\n\t\tfeedbackOptions && feedbackOptions.length > 0 ? (\n\t\t\t<now-popover\n\t\t\t\thideTail\n\t\t\t\tinteractionType=\"dialog\"\n\t\t\t\tmanageOpened\n\t\t\t\topened={openFeedbackDialog}\n\t\t\t\taria-label={FEEDBACK_DIALOG_HEADER}\n\t\t\t\tpositions={[\n\t\t\t\t\t{\n\t\t\t\t\t\ttarget: \"top-right\",\n\t\t\t\t\t\tcontent: \"top-right\"\n\t\t\t\t\t}\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t{unhelpfulButton}\n\t\t\t\t{feedbackDialogCard}\n\t\t\t</now-popover>\n\t\t) : (\n\t\t\tunhelpfulButton\n\t\t);\n\n\treturn (\n\t\t<div className=\"genius-card-header__feedback-container\">\n\t\t\t<div className=\"genius-card-header-section\">\n\t\t\t\t{helpfulButton}\n\n\t\t\t\t<span\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"genius-card-header__feedback-separator\": true,\n\t\t\t\t\t\t\"-global\": isGlobal\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{unhelpfulButtonWithReasonDialog}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import \"@servicenow/now-button\";\nimport \"@servicenow/now-dropdown\";\nimport \"@servicenow/now-radio-buttons\";\nimport \"@servicenow/now-card\";\nimport isEqual from \"lodash/isEqual\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport sharepoint from \"../images/sharepoint.svg\";\nimport internalSources from \"../images/servicenow.svg\";\n\nimport { t } from \"sn-translate\";\nimport {\n\tBUTTON_SLOT_STYLE,\n\tFOOTER_MORE_ACTION_LABEL,\n\tFEEDBACK_DROPDOWN_PLACEHOLDER,\n\tFEEDBACK_DROPDOWN_TOOLTIP,\n\tFEEDBACK_DROPDOWN_OPTIONS,\n\tFEEDBACK_INTENT_OPTIONS,\n\tFEEDBACK_INTENT_LABEL,\n\tSOURCE_LABEL,\n\tVIEW_ARTICLE,\n\tFOLLOW_UP,\n\tFOLLOW_UP_LABEL,\n\tCITATION_ACTION\n} from \"../constants\";\nimport FeedbackButtonSet from \"../contents/feedbackButtonSet\";\nimport Identifier from \"../contents/identifier\";\n\nconst transformToSplitButtonItems = actions =>\n\tactions.map(({ assignmentId, label }) => ({\n\t\tid: assignmentId,\n\t\tlabel\n\t}));\n\n/**\n * Workaround for DEF0842753: @servicenow/ui-core's createCustomElement()\n * always attaches now-button's shadow root without `delegatesFocus`, and\n * that option cannot be enabled (ui-core's config schema disallows it).\n * Without delegatesFocus, document.activeElement reports the <now-button>\n * host rather than the real clickable element inside its shadow root.\n * Real Tab+Enter still works because the physical keydown/click fires on\n * whatever node truly has focus inside the shadow root, but NVDA's\n * synthetic Enter activation acts on the host — and a click on the host\n * does not propagate down into its own shadow DOM, so the button's real\n * click handler never fires.\n *\n * This ref callback attaches a light-DOM click listener directly on the\n * <now-button> host. If a click's real origin (per composedPath) is the\n * host itself - i.e. a synthetic AT activation, not a real click that\n * already bubbled up from inside the shadow root - it manually forwards\n * the click to the real inner element so the button activates normally.\n */\nexport const patchNowButtonActivation = hostEl => {\n\tif (!hostEl || hostEl.__clickListenerAdded) return;\n\thostEl.__clickListenerAdded = true;\n\thostEl.addEventListener(\"click\", event => {\n\t\tif (event.composedPath()[0] !== hostEl) return; // real click already reached the inner element\n\t\tconst innerButton =\n\t\t\thostEl.shadowRoot && hostEl.shadowRoot.querySelector(\".now-button\");\n\t\tif (innerButton) innerButton.click();\n\t});\n};\n\nconst groupActions = (actions, overflowLimit, allowDropdown) => {\n\tconst isOverflow = allowDropdown && actions.length > overflowLimit;\n\tconst displayActions = isOverflow\n\t\t? actions.slice(0, overflowLimit - 1)\n\t\t: actions;\n\tconst splitActions = isOverflow ? actions.slice(overflowLimit - 1) : []; // remaining actions\n\n\treturn {\n\t\tdisplayActions,\n\t\tsplitActions\n\t};\n};\n\nconst actionButtons = (heading, label, assignmentId) => (\n\t<div className=\"genius-card-footer__control\">\n\t\t<now-button\n\t\t\tref={patchNowButtonActivation}\n\t\t\tappend-to-payload={{\n\t\t\t\tactionId: assignmentId\n\t\t\t}}\n\t\t\tvariant=\"tertiary\"\n\t\t\tsize=\"sm\"\n\t\t\ttooltipContent={\n\t\t\t\t!isEmpty(heading) ? t(\"{0} for {1}\", label, heading) : label\n\t\t\t}\n\t\t>\n\t\t\t<div style={BUTTON_SLOT_STYLE}>\n\t\t\t\t<span className=\"genius-card-footer__control_label\">{label}</span>\n\t\t\t</div>\n\t\t</now-button>\n\t</div>\n);\n\nconst view = ({\n\theading,\n\tactions,\n\toverflowLimit,\n\tallowDropdown,\n\tallowFeedback,\n\tvalue,\n\tfeedbackOptions,\n\topenFeedbackDialog,\n\tfeedbackReason,\n\tenableDataLabelingFeedback,\n\tisGlobal,\n\tidentifier,\n\tidentifierCriticalText,\n\tidentifierAtBottom,\n\tidentifierFontSize,\n\tshowActionAsLink,\n\tsource,\n\tfollowUpAction,\n\tcitations,\n\tmodel,\n\tisSynthesizedAndNotStreaming,\n\tisSynthesizedAndStreaming,\n\tallChunksProcessed\n}) => {\n\tconst renderForDemo =\n\t\tget(model, \"columns.isDemoInstance\", \"false\") === \"true\";\n\tconst feedbackButtons =\n\t\tallowFeedback && !enableDataLabelingFeedback ? (\n\t\t\t<FeedbackButtonSet\n\t\t\t\theading={heading}\n\t\t\t\tvalue={value}\n\t\t\t\tfeedbackOptions={feedbackOptions}\n\t\t\t\topenFeedbackDialog={openFeedbackDialog}\n\t\t\t\tfeedbackReason={feedbackReason}\n\t\t\t\tisGlobal={isGlobal}\n\t\t\t/>\n\t\t) : null;\n\n\tconst intentFeedbackButtons = enableDataLabelingFeedback ? (\n\t\t<now-radio-buttons\n\t\t\tname=\"intent\"\n\t\t\tconfig-aria={{ \"aria-label\": FEEDBACK_INTENT_LABEL }}\n\t\t\toptions={FEEDBACK_INTENT_OPTIONS}\n\t\t\tappend-to-payload={{\n\t\t\t\tisIntentFeedback: true\n\t\t\t}}\n\t\t/>\n\t) : null;\n\n\tconst relevanceFeedbackButtons = enableDataLabelingFeedback ? (\n\t\t<now-dropdown\n\t\t\tclassName=\"\"\n\t\t\titems={FEEDBACK_DROPDOWN_OPTIONS}\n\t\t\tselect=\"single\"\n\t\t\tplaceholder={FEEDBACK_DROPDOWN_PLACEHOLDER}\n\t\t\tvariant=\"secondary\"\n\t\t\tsize=\"md\"\n\t\t\ttooltipContent={FEEDBACK_DROPDOWN_TOOLTIP}\n\t\t\tappend-to-payload={{\n\t\t\t\tisRelevanceFeedback: true\n\t\t\t}}\n\t\t/>\n\t) : null;\n\n\tconst { displayActions, splitActions } = groupActions(\n\t\tactions,\n\t\toverflowLimit,\n\t\tallowDropdown\n\t);\n\tconst splitButtonItems = transformToSplitButtonItems(splitActions);\n\n\tconst splitActionButtons =\n\t\tsplitButtonItems.length > 0 ? (\n\t\t\t<div className=\"genius-card-footer__control -dropdown\">\n\t\t\t\t<now-dropdown\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\tisFeedback: false\n\t\t\t\t\t}}\n\t\t\t\t\ttooltipContent={t(\"{0} for {1}\", FOOTER_MORE_ACTION_LABEL, heading)}\n\t\t\t\t\titems={splitButtonItems}\n\t\t\t\t\tplaceholder={FOOTER_MORE_ACTION_LABEL}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tselect=\"none\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t) : null;\n\n\tconst followUpActionButton = followUpAction ? (\n\t\t<div className=\"genius-card-footer__control\">\n\t\t\t<now-button\n\t\t\t\tref={patchNowButtonActivation}\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\ttype: FOLLOW_UP\n\t\t\t\t}}\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\ttooltipContent={\n\t\t\t\t\t!isEmpty(heading) ? t(\"Follow up for {0}\", heading) : FOLLOW_UP_LABEL\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<div style={BUTTON_SLOT_STYLE}>\n\t\t\t\t\t<span className=\"genius-card-footer__control_label\">\n\t\t\t\t\t\t{FOLLOW_UP_LABEL}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</now-button>\n\t\t</div>\n\t) : null;\n\tconst imageIcon = sourceType => {\n\t\treturn (\n\t\t\t<div className=\"genius-card-action-link-image\">\n\t\t\t\t<now-image\n\t\t\t\t\tsrc={isEqual(sourceType, \"external\") ? sharepoint : internalSources}\n\t\t\t\t\twidth={20}\n\t\t\t\t\talt={\"alt\"}\n\t\t\t\t\tfit=\"fill\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t};\n\n\tconst getLabelForCitations = (sourceLabel, number) => {\n\t\tvar labelForCitation = \"\";\n\t\tif (!isEmpty(sourceLabel)) {\n\t\t\tlabelForCitation += sourceLabel + \" \";\n\t\t}\n\t\tif (!isEmpty(number)) {\n\t\t\tlabelForCitation += number + \" \";\n\t\t}\n\t\treturn labelForCitation;\n\t};\n\n\tconst viewArticleCitationFooter = (\n\t\taction,\n\t\tnumber,\n\t\tsourceLabel,\n\t\tsourceType,\n\t\trenderForDemo,\n\t\tshowCitations\n\t) => {\n\t\tif (!renderForDemo) {\n\t\t\tconst label = getLabelForCitations(sourceLabel, number);\n\t\t\treturn (\n\t\t\t\t<div className=\"genius-card-action-link-citation-control\">\n\t\t\t\t\t{imageIcon(sourceType)}\n\t\t\t\t\t<div className=\"genius-card-footer-label\">\n\t\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"genius-card-action-citation\": showCitations,\n\t\t\t\t\t\t\t\t\"genius-card-action-link\": true\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\tactionId: !isEmpty(action.assignmentId)\n\t\t\t\t\t\t\t\t\t? action.assignmentId\n\t\t\t\t\t\t\t\t\t: action,\n\t\t\t\t\t\t\t\tcitationAction: action,\n\t\t\t\t\t\t\t\ttype: !isEmpty(action.assignmentId) ? CITATION_ACTION : \"\"\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\tbutton: { \"aria-label\": label },\n\t\t\t\t\t\t\t\trole: \"link\"\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else {\n\t\t\treturn renderCitationAsCard(sourceLabel, action);\n\t\t}\n\t};\n\n\tconst renderCitationAsCard = (sourceLabel, action) => {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<now-card\n\t\t\t\t\tclassName=\"genius-card-action-card\"\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\tactionId: action.assignmentId,\n\t\t\t\t\t\tcitationAction: action,\n\t\t\t\t\t\ttype: CITATION_ACTION\n\t\t\t\t\t}}\n\t\t\t\t\tinteraction=\"click\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"genius-card-action-card-content\">\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<now-image src={sharepoint} width={20} alt={\"alt\"} fit=\"fill\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<span>{sourceLabel}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</now-card>\n\t\t\t</div>\n\t\t);\n\t};\n\n\tlet renderFooterActions = \"\";\n\tif (!isSynthesizedAndNotStreaming && !isSynthesizedAndStreaming) {\n\t\trenderFooterActions = isEmpty(citations)\n\t\t\t? actions\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t({ name }) =>\n\t\t\t\t\t\t\tname === VIEW_ARTICLE.GLOBAL || name === VIEW_ARTICLE.PORTAL\n\t\t\t\t\t)\n\t\t\t\t\t.map(({ assignmentId }) =>\n\t\t\t\t\t\tviewArticleCitationFooter(assignmentId, source, \"\", \"\", \"\")\n\t\t\t\t\t)\n\t\t\t: citations?.map(({ action, number, short_description }) =>\n\t\t\t\t\tviewArticleCitationFooter(\n\t\t\t\t\t\taction,\n\t\t\t\t\t\tnumber,\n\t\t\t\t\t\tshort_description,\n\t\t\t\t\t\tget(model, \"columns.source_type\", \"\"),\n\t\t\t\t\t\trenderForDemo,\n\t\t\t\t\t\t!isEmpty(citations)\n\t\t\t\t\t)\n\t\t\t  );\n\t}\n\n\tconst footerActions = showActionAsLink ? (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t\"genius-card-footer\": true,\n\t\t\t\t\"genius-card-footer-width\": showActionAsLink\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t\"genius-card-footer__control\": true,\n\t\t\t\t\t\"-genius-links\": !renderForDemo\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<span className=\"genius-card-action-label\">\n\t\t\t\t\t{!isEmpty(citations) || !isEmpty(actions) ? SOURCE_LABEL : \"\"}\n\t\t\t\t</span>\n\t\t\t\t{renderFooterActions}\n\t\t\t</div>\n\t\t\t{displayActions.length > 1 || followUpAction ? (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<br />\n\t\t\t\t\t<div className=\"genius-card-footer\">\n\t\t\t\t\t\t{followUpActionButton}\n\t\t\t\t\t\t{displayActions\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t({ name }) =>\n\t\t\t\t\t\t\t\t\tname !== VIEW_ARTICLE.GLOBAL && name !== VIEW_ARTICLE.PORTAL\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.map(({ label, assignmentId }) =>\n\t\t\t\t\t\t\t\tactionButtons(heading, label, assignmentId)\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t{splitActionButtons}\n\t\t\t\t\t</div>\n\t\t\t\t</Fragment>\n\t\t\t) : null}\n\t\t</div>\n\t) : (\n\t\t<div className=\"genius-card-footer\">\n\t\t\t{followUpActionButton}\n\t\t\t{displayActions.map(({ label, assignmentId }) =>\n\t\t\t\tactionButtons(heading, label, assignmentId)\n\t\t\t)}\n\t\t\t{splitActionButtons}\n\t\t</div>\n\t);\n\n\tif (isSynthesizedAndNotStreaming) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t\"genius-card-footer-container-followup\": true\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"genius-card-footer-feeback\">{feedbackButtons}</div>\n\t\t\t</div>\n\t\t);\n\t} else if (isSynthesizedAndStreaming) {\n\t\t// do not show feedback buttons until streaming ends\n\t\tif (allChunksProcessed) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"genius-card-footer-container-followup\": true\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"genius-card-footer-feeback\">{feedbackButtons}</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t} else {\n\t\treturn (\n\t\t\t<div className=\"genius-card-footer-container\">\n\t\t\t\t{identifierAtBottom && !showActionAsLink ? (\n\t\t\t\t\t<Identifier\n\t\t\t\t\t\tidentifier={identifier}\n\t\t\t\t\t\tidentifierCriticalText={identifierCriticalText}\n\t\t\t\t\t\tidentifierFontSize={identifierFontSize}\n\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\tidentifierAtBottom={identifierAtBottom}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t\t{enableDataLabelingFeedback ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{footerActions}\n\t\t\t\t\t\t<div className=\"genius-card-feedback-container\">\n\t\t\t\t\t\t\t{feedbackButtons}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>{intentFeedbackButtons}</div>\n\t\t\t\t\t\t<div>{relevanceFeedbackButtons}</div>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\"genius-card-feedback-wrapper\": true,\n\t\t\t\t\t\t\t\"margin-top\": showActionAsLink, // compensate for space lost showing declarative action button as link\n\t\t\t\t\t\t\t\"align-content\": !renderForDemo,\n\t\t\t\t\t\t\t\"align-for-demo\": renderForDemo\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{footerActions}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"genius-card-feedback-container\": true,\n\t\t\t\t\t\t\t\t\"align-for-demo\": renderForDemo\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{feedbackButtons}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n};\n\nexport default view;\n","import { get, isEmpty } from \"lodash\";\nimport { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport styles from \"../../scss/index.scss\";\nimport \"@servicenow/now-text-link\";\nimport \"@servicenow/now-card\";\nimport \"@servicenow/now-image\";\nimport \"@servicenow/now-label-value\";\nimport {\n\tCLICK,\n\tCATALOG_CLICK,\n\tREQUEST_IN_CHAT_LABEL,\n\tMARKER_IMAGE,\n\tREQUEST_WITH_FORM,\n\tCITATION_TYPES,\n\tSHARED_FILES_LOGIN_MESSAGE,\n\tKB_ARTICLE_LABEL,\n\tUNTITLED_DOCUMENT_LABEL,\n\tOTHER_SOURCES_LABEL,\n\tEXTERNAL_DOCUMENT_LABEL,\n\tUNKNOWN_TABLE_LABEL,\n\tUNKNOWN_RECORD_LABEL,\n\tUNKNOWN_LABEL,\n\tLOG_IN_LABEL,\n\tMANAGER_LABEL,\n\tLOCATION_LABEL,\n\tEMAIL_LABEL,\n\tPHONE_LABEL,\n\tSHARED_FILES_LABEL\n} from \"../../constants\";\n\nconst renderCatalogCardBody = (\n\titem,\n\tconversational,\n\tcanAskFollowUp,\n\tdisableHref\n) => {\n\tconst imageSrcToRender = get(item, 'model[\"columns.picture\"]', \"\");\n\tconst header = get(item, 'model[\"columns.name\"]', \"\");\n\tconst price = get(item, 'model[\"columns.price\"]', \"\");\n\tconst action = !isEmpty(item.actions) ? item.actions.at(0) : \"\";\n\tconst itemSysId = get(item, 'model[\"columns.sys_id\"]', \"\");\n\tconst showHandOver = canAskFollowUp && conversational;\n\n\tconst href = disableHref\n\t\t? undefined\n\t\t: get(item, \"url\", action?.actionPayload?.url || undefined);\n\tif (href) action.actionPayload.href = href;\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t\"catalog-card\": true,\n\t\t\t\t\"-has-picture\": Boolean(imageSrcToRender)\n\t\t\t}}\n\t\t>\n\t\t\t<div className=\"catalog-image\">\n\t\t\t\t{!isEmpty(imageSrcToRender) && (\n\t\t\t\t\t<now-image\n\t\t\t\t\t\tsrc={imageSrcToRender}\n\t\t\t\t\t\twidth={MARKER_IMAGE.WIDTH_DEFAULT}\n\t\t\t\t\t\tfit=\"cover\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className=\"catalog-description\">\n\t\t\t\t<div className=\"details\">\n\t\t\t\t\t<div className=\"header\">{header}</div>\n\t\t\t\t\t<div>{price}</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"actions\">\n\t\t\t\t\t<now-text-link\n\t\t\t\t\t\tclassName=\"open_catalog\"\n\t\t\t\t\t\tlabel={REQUEST_WITH_FORM}\n\t\t\t\t\t\thref={href || \"javascript:void(0)\"}\n\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\ttype: CLICK,\n\t\t\t\t\t\t\tactionPayload: action\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ticon-start=\"pencil-page-outline\"\n\t\t\t\t\t/>\n\t\t\t\t\t{showHandOver && (\n\t\t\t\t\t\t<now-text-link\n\t\t\t\t\t\t\tclassName=\"hand_over_to_va\"\n\t\t\t\t\t\t\tlabel={REQUEST_IN_CHAT_LABEL}\n\t\t\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\ttype: CATALOG_CLICK,\n\t\t\t\t\t\t\t\taction: action,\n\t\t\t\t\t\t\t\tclickedData: item,\n\t\t\t\t\t\t\t\tclickedItemSysId: itemSysId\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\ticon-start=\"chat-outline\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst renderKgCardBody = item => {\n\tconst tableLabel = get(\n\t\titem.model,\n\t\t\"columns.table_label\",\n\t\tUNKNOWN_TABLE_LABEL\n\t);\n\tconst citationAction = !isEmpty(item.actions) ? item.actions.at(0) : \"\";\n\tconst displayValue = get(\n\t\titem.model,\n\t\t\"columns.display_value\",\n\t\tUNKNOWN_RECORD_LABEL\n\t);\n\n\treturn (\n\t\t<div className=\"kg-card\">\n\t\t\t<div className=\"kg-card-container\">\n\t\t\t\t<div className=\"header\">\n\t\t\t\t\t<now-icon icon=\"table-outline\" size=\"sm\" ariaHidden=\"true\" />\n\t\t\t\t\t<span>{tableLabel}</span>\n\t\t\t\t</div>\n\t\t\t\t<now-text-link\n\t\t\t\t\tlabel={displayValue}\n\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\ttype: CLICK,\n\t\t\t\t\t\tactionPayload: citationAction\n\t\t\t\t\t}}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst renderPeopleCardBody = propValues => {\n\tconst sharedFiles = JSON.parse(\n\t\tget(propValues.model, \"columns.shared_files\", \"[]\")\n\t);\n\tconst manager = get(propValues.model, \"columns.manager\", \"\");\n\tconst location = get(propValues.model, \"columns.location\", \"\");\n\tconst email = get(propValues.model, \"columns.email\", \"\");\n\tconst phone = get(propValues.model, \"columns.phone\", \"\");\n\tconst action = !isEmpty(propValues.actions) ? propValues.actions.at(0) : \"\";\n\n\tconst sharedFilesHtml =\n\t\tsharedFiles.code === \"200\" || sharedFiles.code === 200\n\t\t\t? sharedFiles.data\n\t\t\t\t\t.map(\n\t\t\t\t\t\tfile => `\n\t\t\t\t\t\t\t<span style=\"display: flex; align-items: center; margin-bottom: 5px;\">\n\t\t\t\t\t\t\t\t<now-image\n\t\t\t\t\t\t\t\t\tsrc=\"${file.icon?.png || file.icon?.jpg}\"\n\t\t\t\t\t\t\t\t\tstyle=\"max-width: 15px; margin-right: 5px\"\n\t\t\t\t\t\t\t\t></now-image>\n\t\t\t\t\t\t\t\t<now-text-link label=\"${file.name}\" href=\"${file.link}\"></now-text-link>\n\t\t\t\t\t\t\t</span>`\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\") || \"\"\n\t\t\t: sharedFiles.code === \"401\" || sharedFiles.code === 401\n\t\t\t? `<span>${SHARED_FILES_LOGIN_MESSAGE} <now-text-link label=\"${LOG_IN_LABEL}\" href=${sharedFiles.authEndPoint}></now-text-link></span>`\n\t\t\t: \"\";\n\n\tconst items = [\n\t\t...(manager\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: MANAGER_LABEL,\n\t\t\t\t\t\tvalue: { type: \"string\", value: manager }\n\t\t\t\t\t}\n\t\t\t  ]\n\t\t\t: []),\n\t\t...(location\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: LOCATION_LABEL,\n\t\t\t\t\t\tvalue: { type: \"string\", value: location }\n\t\t\t\t\t}\n\t\t\t  ]\n\t\t\t: []),\n\t\t...(email\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: EMAIL_LABEL,\n\t\t\t\t\t\tvalue: { type: \"string\", value: email }\n\t\t\t\t\t}\n\t\t\t  ]\n\t\t\t: []),\n\t\t...(phone\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: PHONE_LABEL,\n\t\t\t\t\t\tvalue: { type: \"string\", value: phone }\n\t\t\t\t\t}\n\t\t\t  ]\n\t\t\t: []),\n\t\t...(sharedFilesHtml\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: SHARED_FILES_LABEL,\n\t\t\t\t\t\tvalue: { type: \"html\", value: sharedFilesHtml }\n\t\t\t\t\t}\n\t\t\t  ]\n\t\t\t: [])\n\t];\n\n\treturn (\n\t\t<div className=\"people-card\">\n\t\t\t<div className=\"header-container\">\n\t\t\t\t<div className=\"image-container\">\n\t\t\t\t\t<now-avatar\n\t\t\t\t\t\timageSrc={get(propValues.model, \"columns.avatar\")}\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"title-container\">\n\t\t\t\t\t<span className=\"name\">\n\t\t\t\t\t\t<now-text-link\n\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\tlabel={get(propValues.model, \"columns.name\", UNKNOWN_LABEL)}\n\t\t\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\ttype: CLICK,\n\t\t\t\t\t\t\t\tactionPayload: action\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t\t{get(propValues.model, \"columns.department\", \"\") && (\n\t\t\t\t\t\t<span className=\"department\">\n\t\t\t\t\t\t\t{get(propValues.model, \"columns.department\")}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"info-container\">\n\t\t\t\t\t\t<now-label-value-tabbed items={items} size=\"sm\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nfunction renderKbCardBody(data, sourceType, disableHref) {\n\tconst shortdesc = get(data, \"short_description\", UNTITLED_DOCUMENT_LABEL);\n\tconst citationAction = get(data, \"action\", \"\");\n\n\tlet externalDocumentIcon;\n\tlet externalDocumentType;\n\n\tif (sourceType === CITATION_TYPES.EXTERNAL_DOCUMENT) {\n\t\tconst icons = data?.icons ? JSON.parse(data.icons) : {};\n\t\texternalDocumentIcon = icons?.png || icons?.svg || \"\";\n\t\texternalDocumentType = get(data, \"type\", EXTERNAL_DOCUMENT_LABEL);\n\t}\n\n\tconst href = disableHref\n\t\t? undefined\n\t\t: get(data, \"href\", citationAction?.actionPayload?.url || undefined);\n\tif (href) citationAction.actionPayload.href = href;\n\n\treturn (\n\t\t<div className=\"kb-card\">\n\t\t\t{(sourceType === CITATION_TYPES.KB ||\n\t\t\t\tsourceType === CITATION_TYPES.ATTACHMENT) && (\n\t\t\t\t<div className=\"kb-card-container\">\n\t\t\t\t\t<div className=\"header\">\n\t\t\t\t\t\t<now-icon icon=\"document-outline\" size=\"sm\" ariaHidden=\"true\" />\n\t\t\t\t\t\t<span>{KB_ARTICLE_LABEL}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<now-text-link\n\t\t\t\t\t\tclassName=\"hand_over_to_va\"\n\t\t\t\t\t\tlabel={shortdesc}\n\t\t\t\t\t\thref={href || \"javascript:void(0)\"}\n\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\ttype: CLICK,\n\t\t\t\t\t\t\tactionPayload: citationAction\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{sourceType === CITATION_TYPES.EXTERNAL_DOCUMENT && (\n\t\t\t\t<div className=\"kb-card-container\">\n\t\t\t\t\t<div className=\"header\">\n\t\t\t\t\t\t{externalDocumentIcon ? (\n\t\t\t\t\t\t\t<now-image src={externalDocumentIcon} fit=\"cover\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<now-icon icon=\"document-outline\" size=\"sm\" ariaHidden=\"true\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<span>{externalDocumentType}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<now-text-link\n\t\t\t\t\t\tclassName=\"hand_over_to_va\"\n\t\t\t\t\t\tlabel={shortdesc}\n\t\t\t\t\t\thref={href || \"javascript:void(0)\"}\n\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\ttype: CLICK,\n\t\t\t\t\t\t\tactionPayload: citationAction\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction renderAdditionalSourcesCardBody(item) {\n\tconst header = get(item, \"identifier\", OTHER_SOURCES_LABEL);\n\tconst title = get(item, 'model[\"columns.title\"]', UNTITLED_DOCUMENT_LABEL);\n\tconst action = !isEmpty(item.actions) ? item.actions.at(0) : \"\";\n\t//other sources citation card body\n\treturn (\n\t\t<div className=\"kb-card\">\n\t\t\t<div className=\"kb-card-container\">\n\t\t\t\t<div className=\"header\">\n\t\t\t\t\t<now-icon icon=\"document-outline\" size=\"sm\" ariaHidden=\"true\" />\n\t\t\t\t\t<span>{header}</span>\n\t\t\t\t</div>\n\t\t\t\t<now-text-link\n\t\t\t\t\tclassName=\"hand_over_to_va\"\n\t\t\t\t\tlabel={title}\n\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\ttype: CLICK,\n\t\t\t\t\t\tactionPayload: action\n\t\t\t\t\t}}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nconst getDetails = ({\n\tdata,\n\tsourceType,\n\tconversational,\n\tcanAskFollowUp,\n\tdisableHref\n}) => {\n\tif (\n\t\tsourceType === CITATION_TYPES.KB ||\n\t\tsourceType === CITATION_TYPES.EXTERNAL_DOCUMENT ||\n\t\tsourceType === CITATION_TYPES.ATTACHMENT\n\t) {\n\t\treturn renderKbCardBody(data, sourceType, disableHref);\n\t}\n\n\tif (sourceType === CITATION_TYPES.ADDITIONAL_SOURCES) {\n\t\treturn <div>{renderAdditionalSourcesCardBody(data.propValues)}</div>;\n\t}\n\n\tif (sourceType === CITATION_TYPES.CATALOG) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t{renderCatalogCardBody(\n\t\t\t\t\tdata.propValues,\n\t\t\t\t\tconversational,\n\t\t\t\t\tcanAskFollowUp,\n\t\t\t\t\tdisableHref\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (sourceType === CITATION_TYPES.KG) {\n\t\treturn <div>{renderKgCardBody(data.propValues)}</div>;\n\t}\n\n\tif (sourceType === CITATION_TYPES.PEOPLE) {\n\t\treturn <div>{renderPeopleCardBody(data.propValues)}</div>;\n\t}\n\n\treturn \"\";\n};\n\nconst citationPopoverContentConfig = {\n\tinitialState: {},\n\tproperties: {\n\t\tindex: {\n\t\t\tdefault: 0\n\t\t},\n\t\tdata: {\n\t\t\tdefault: {}\n\t\t},\n\t\tsourceType: {\n\t\t\tdefault: \"\"\n\t\t},\n\t\tconversational: {\n\t\t\tdefault: false\n\t\t},\n\t\tcanAskFollowUp: {\n\t\t\tdefault: true\n\t\t},\n\t\tdisableHref: {\n\t\t\tdefault: true\n\t\t}\n\t},\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview(state) {\n\t\t\tconst {\n\t\t\t\tproperties: {\n\t\t\t\t\tdata,\n\t\t\t\t\tindex,\n\t\t\t\t\tsourceType,\n\t\t\t\t\tconversational,\n\t\t\t\t\tcanAskFollowUp,\n\t\t\t\t\tdisableHref\n\t\t\t\t}\n\t\t\t} = state;\n\t\t\tif (!isEmpty(data)) {\n\t\t\t\tconst descDetails = getDetails({\n\t\t\t\t\tdata,\n\t\t\t\t\tindex,\n\t\t\t\t\tsourceType,\n\t\t\t\t\tconversational,\n\t\t\t\t\tcanAskFollowUp,\n\t\t\t\t\tdisableHref\n\t\t\t\t});\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"popover\">\n\t\t\t\t\t\t<now-card className=\"card\" size=\"lg\" interaction=\"none\" hideShadow>\n\t\t\t\t\t\t\t<div className=\"popover-content-main\">\n\t\t\t\t\t\t\t\t<span>{descDetails}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</now-card>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\tstyles,\n\tactionHandlers: {}\n};\n\ncreateCustomElement(\n\t\"sn-search-citation-popover-content\",\n\tcitationPopoverContentConfig\n);\nexport { citationPopoverContentConfig };\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\n//import CitationPopover from './sn-search-citation-popover';\nimport \"./sn-search-citation-popover-content\";\nimport \"@servicenow/now-text-link\";\nimport \"@servicenow/now-badge\";\nimport \"@servicenow/now-popover\";\nimport \"@servicenow/now-card\";\nimport styles from \"../../scss/index.scss\";\nimport { get, isEmpty } from \"lodash\";\nimport { t } from \"sn-translate\";\nimport {\n\tCITATION_CLICK,\n\tCITATION_TYPES,\n\tCITATION_POPOVER_CLICKED,\n\tCATALOG_CLICK,\n\tCLICK\n} from \"../../constants\";\n\nconst citationPopoverConfig = {\n\tinitialState: {\n\t\tpopoverOpened: false\n\t},\n\tproperties: {\n\t\tindex: {\n\t\t\tdefault: 0\n\t\t},\n\t\tsourceType: {\n\t\t\tdefault: \"\"\n\t\t},\n\t\tdata: {\n\t\t\tdefault: {}\n\t\t},\n\t\tconversational: {\n\t\t\tdefault: false\n\t\t},\n\t\tcanAskFollowUp: {\n\t\t\tdefault: true\n\t\t},\n\t\tdisableHref: {\n\t\t\tdefault: true\n\t\t}\n\t},\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview(state) {\n\t\t\tconst {\n\t\t\t\tproperties: {\n\t\t\t\t\tindex,\n\t\t\t\t\tdata,\n\t\t\t\t\tsourceType,\n\t\t\t\t\tconversational,\n\t\t\t\t\tcanAskFollowUp,\n\t\t\t\t\tdisableHref\n\t\t\t\t},\n\t\t\t\tpopoverOpened\n\t\t\t} = state;\n\t\t\tconst itemSysId = get(data.propValues, 'model[\"columns.sys_id\"]', \"\");\n\t\t\tconst action = !isEmpty(data.propValues)\n\t\t\t\t? data.propValues.actions.at(0)\n\t\t\t\t: \"\";\n\n\t\t\tlet element;\n\t\t\tif (\n\t\t\t\tsourceType === CITATION_TYPES.KB ||\n\t\t\t\tsourceType === CITATION_TYPES.EXTERNAL_DOCUMENT ||\n\t\t\t\tsourceType === CITATION_TYPES.ATTACHMENT ||\n\t\t\t\tsourceType === CITATION_TYPES.ADDITIONAL_SOURCES\n\t\t\t) {\n\t\t\t\telement = (\n\t\t\t\t\t<now-popover\n\t\t\t\t\t\tinteractionType=\"dialog\"\n\t\t\t\t\t\tfocusPanel\n\t\t\t\t\t\tmanageOpened\n\t\t\t\t\t\topened={popoverOpened}\n\t\t\t\t\t\tclassName=\"citation-popover\"\n\t\t\t\t\t\tappend-to-payload={{ actionId: CITATION_POPOVER_CLICKED }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"kb-trigger\"\n\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\taria-label={t(`show details for KB citation {0}`, index)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<now-badge\n\t\t\t\t\t\t\t\tvalue={index}\n\t\t\t\t\t\t\t\tcolor=\"gray\"\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<sn-search-citation-popover-content\n\t\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\t\tdata={data}\n\t\t\t\t\t\t\tconversational={conversational}\n\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\tsourceType={sourceType}\n\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</now-popover>\n\t\t\t\t);\n\t\t\t} else if (sourceType === CITATION_TYPES.CATALOG) {\n\t\t\t\tconst catalogLabel = get(data.propValues, 'model[\"columns.name\"]', \"\");\n\t\t\t\telement = (\n\t\t\t\t\t<now-popover\n\t\t\t\t\t\tinteractionType=\"dialog\"\n\t\t\t\t\t\tfocusPanel\n\t\t\t\t\t\tmanageOpened\n\t\t\t\t\t\topened={popoverOpened}\n\t\t\t\t\t\tclassName=\"citation-popover\"\n\t\t\t\t\t\tappend-to-payload={{ actionId: CITATION_POPOVER_CLICKED }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<now-text-link\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\tappend-to-payload={{ data, type: CITATION_CLICK }}\n\t\t\t\t\t\t\ticon-start=\"pencil-page-outline\"\n\t\t\t\t\t\t\tlabel={catalogLabel}\n\t\t\t\t\t\t\thref=\"javascript:void(0);\"\n\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\t\"aria-label\": t(\n\t\t\t\t\t\t\t\t\t`show details for catalog citation {0}`,\n\t\t\t\t\t\t\t\t\tcatalogLabel\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<sn-search-citation-popover-content\n\t\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\t\tdata={data}\n\t\t\t\t\t\t\tconversational={conversational}\n\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\tsourceType={sourceType}\n\t\t\t\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</now-popover>\n\t\t\t\t);\n\t\t\t} else if (sourceType === CITATION_TYPES.PEOPLE) {\n\t\t\t\telement = (\n\t\t\t\t\t<now-popover\n\t\t\t\t\t\tinteractionType=\"dialog\"\n\t\t\t\t\t\tfocusPanel\n\t\t\t\t\t\tmanageOpened\n\t\t\t\t\t\topened={popoverOpened}\n\t\t\t\t\t\tclassName=\"citation-popover\"\n\t\t\t\t\t\tappend-to-payload={{ actionId: CITATION_POPOVER_CLICKED }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<now-text-link\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\ticon-start=\"user-outline\"\n\t\t\t\t\t\t\tappend-to-payload={{ data, type: CITATION_CLICK }}\n\t\t\t\t\t\t\tlabel={get(data.propValues, 'model[\"columns.name\"]', \"\")}\n\t\t\t\t\t\t\thref=\"javascript:void(0);\"\n\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\t\"aria-label\": t(\n\t\t\t\t\t\t\t\t\t`show details for people citation {0}`,\n\t\t\t\t\t\t\t\t\tget(data.propValues, 'model[\"columns.name\"]', \"\")\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<sn-search-citation-popover-content\n\t\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\t\tdata={data}\n\t\t\t\t\t\t\tconversational={conversational}\n\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\tsourceType={sourceType}\n\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</now-popover>\n\t\t\t\t);\n\t\t\t} else if (sourceType === CITATION_TYPES.SKILL) {\n\t\t\t\tconst skillLabel = get(\n\t\t\t\t\tdata.propValues,\n\t\t\t\t\t'model[\"columns.skill_name\"]',\n\t\t\t\t\t\"\"\n\t\t\t\t);\n\t\t\t\telement = (\n\t\t\t\t\t<now-text-link\n\t\t\t\t\t\tclassName=\"hand_over_to_va\"\n\t\t\t\t\t\tlabel={skillLabel}\n\t\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\ttype: CATALOG_CLICK,\n\t\t\t\t\t\t\taction: action,\n\t\t\t\t\t\t\tclickedData: data.propValues,\n\t\t\t\t\t\t\tclickedItemSysId: itemSysId\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ticon-start=\"chat-outline\"\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\"aria-label\": t(`open skill citation {0}`, skillLabel)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} else if (sourceType === CITATION_TYPES.AGENT) {\n\t\t\t\tconst agentInfoJSON = get(\n\t\t\t\t\tdata.propValues,\n\t\t\t\t\t'model[\"columns.agent_info\"]',\n\t\t\t\t\t\"\"\n\t\t\t\t);\n\t\t\t\tconst agentName = JSON.parse(agentInfoJSON)?.name ?? \"\";\n\t\t\t\telement = (\n\t\t\t\t\t<now-text-link\n\t\t\t\t\t\tclassName=\"hand_over_to_va\"\n\t\t\t\t\t\tlabel={agentName}\n\t\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\ttype: CATALOG_CLICK,\n\t\t\t\t\t\t\taction: action,\n\t\t\t\t\t\t\tclickedData: data.propValues,\n\t\t\t\t\t\t\tclickedItemSysId: itemSysId\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ticon-start=\"chat-outline\"\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\"aria-label\": t(`open skill citation {0}`, agentName)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} else if (sourceType === CITATION_TYPES.KG) {\n\t\t\t\telement = (\n\t\t\t\t\t<now-popover\n\t\t\t\t\t\tinteractionType=\"dialog\"\n\t\t\t\t\t\tfocusPanel\n\t\t\t\t\t\tmanageOpened\n\t\t\t\t\t\topened={popoverOpened}\n\t\t\t\t\t\tclassName=\"citation-popover\"\n\t\t\t\t\t\tappend-to-payload={{ actionId: CITATION_POPOVER_CLICKED }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<now-text-link\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\ticon-start=\"table-outline\"\n\t\t\t\t\t\t\tappend-to-payload={{ data, type: CITATION_CLICK }}\n\t\t\t\t\t\t\tlabel={get(data.propValues, 'model[\"columns.display_value\"]', \"\")}\n\t\t\t\t\t\t\thref=\"javascript:void(0);\"\n\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\t\"aria-label\": t(\n\t\t\t\t\t\t\t\t\t`show details for kg citation {0}`,\n\t\t\t\t\t\t\t\t\tget(data.propValues, 'model[\"columns.display_value\"]', \"\")\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<sn-search-citation-popover-content\n\t\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\t\tdata={data}\n\t\t\t\t\t\t\tconversational={conversational}\n\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\tsourceType={sourceType}\n\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</now-popover>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// Fallback or other source types\n\t\t\t\telement = (\n\t\t\t\t\t<now-popover\n\t\t\t\t\t\tinteractionType=\"dialog\"\n\t\t\t\t\t\tfocusPanel\n\t\t\t\t\t\tmanageOpened\n\t\t\t\t\t\topened={popoverOpened}\n\t\t\t\t\t\tclassName=\"citation-popover\"\n\t\t\t\t\t\tappend-to-payload={{ actionId: CITATION_POPOVER_CLICKED }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<now-text-link\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\tappend-to-payload={{ data, type: CITATION_CLICK }}\n\t\t\t\t\t\t\ticon-start=\"pencil-page-outline\"\n\t\t\t\t\t\t\tlabel={get(data.propValues, 'model[\"columns.name\"]', \"\")}\n\t\t\t\t\t\t\thref=\"javascript:void(0);\"\n\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\t\"aria-label\": t(\n\t\t\t\t\t\t\t\t\t`show details for citation {0}`,\n\t\t\t\t\t\t\t\t\tget(data.propValues, 'model[\"columns.name\"]', \"\")\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<sn-search-citation-popover-content\n\t\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\t\tdata={data}\n\t\t\t\t\t\t\tconversational={conversational}\n\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\tsourceType={sourceType}\n\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</now-popover>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn element;\n\t\t}\n\t},\n\tstyles,\n\tactionHandlers: {\n\t\t[\"NOW_POPOVER#OPENED_SET\"]({\n\t\t\tupdateState,\n\t\t\taction: {\n\t\t\t\tpayload: { value }\n\t\t\t}\n\t\t}) {\n\t\t\tupdateState({\n\t\t\t\tpopoverOpened: value\n\t\t\t});\n\t\t},\n\t\t[\"NOW_TEXT_LINK#CLICKED\"]({\n\t\t\tupdateState,\n\t\t\taction: {\n\t\t\t\tpayload: { type }\n\t\t\t}\n\t\t}) {\n\t\t\tif (type === CITATION_CLICK) {\n\t\t\t\tupdateState({\n\t\t\t\t\tpopoverOpened: true\n\t\t\t\t});\n\t\t\t} else if (type === CATALOG_CLICK || type === CLICK) {\n\t\t\t\tupdateState({\n\t\t\t\t\tpopoverOpened: false\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * A component that is used for popover content.\n *\n * ```\n * <citaton popover/>\n * ```\n *\n * @seismicElement citaton popover\n * @summary A component that is used for card popover content.\n */\ncreateCustomElement(\"citation-popover\", citationPopoverConfig);\nexport { citationPopoverConfig };\n","import DOMPurify from \"dompurify\";\nimport { dangerouslyCreateElementFromString } from \"@servicenow/ui-renderer-snabbdom\";\nimport { marked } from \"marked\";\n\nimport \"@servicenow/now-button\";\nimport \"@servicenow/now-icon\";\nimport \"@servicenow/now-text-link\";\nimport \"@servicenow/now-badge\";\nimport \"@servicenow/now-popover\";\nimport \"../popover/citation-popover\";\n\nimport {\n\tASK_A_FOLLOW_UP,\n\tASK_A_FOLLOW_UP_LABEL,\n\tSHOW_LESS_LABEL,\n\tSHOW_FULL_ANSWER_LABEL\n} from \"../../constants\";\nimport {\n\treplaceCitationsWithTemporaryPlaceHolders,\n\tlooksLikeListStart,\n\tstripListMarker,\n\tcountLeadingSpaces,\n\tescapeHtml,\n\tnormalizeFullWidthParensAroundUrls\n} from \"./utils\";\n\nconst view = ({ streamingData, canAskFollowUp, isGlobal, forceNewTab }) => {\n\tconst {\n\t\tstreamingText,\n\t\tallChunksProcessed,\n\t\texpanded,\n\t\tstreamingProcessor,\n\t\tdidExceedLineLimit = false,\n\t\tcitationsFromStreaming,\n\t\tactionsFromFinalResponse,\n\t\tkgListCitations\n\t} = streamingData;\n\n\tmarked.use({\n\t\trenderer: {\n\t\t\tlink({ href, title, tokens }) {\n\t\t\t\tconst text = this.parser.parseInline(tokens);\n\t\t\t\tconst titleAttr = title ? ` title=\"${title}\"` : \"\";\n\t\t\t\tconst targetAttr = forceNewTab\n\t\t\t\t\t? ` target=\"_blank\" rel=\"noopener noreferrer\"`\n\t\t\t\t\t: \"\";\n\t\t\t\treturn `<a href=\"${href}\"${titleAttr}${targetAttr}>${text}</a>`;\n\t\t\t}\n\t\t}\n\t});\n\n\tconst updateElm = elm => {\n\t\tstreamingProcessor?.updateElement(elm);\n\t};\n\n\tlet basicHtml;\n\n\t// When streaming is complete, parse all text as markdown to ensure\n\t// links and other markdown that completed without trailing newlines are properly rendered\n\tif (allChunksProcessed) {\n\t\tbasicHtml = marked.parse(\n\t\t\tnormalizeFullWidthParensAroundUrls(streamingText),\n\t\t\t{\n\t\t\t\tgfm: true,\n\t\t\t\tpedantic: false,\n\t\t\t\theaderIds: false\n\t\t\t}\n\t\t);\n\t} else {\n\t\t// During streaming, split into prefix and tail to avoid flicker\n\t\tconst lastNewLineIndex = streamingText.lastIndexOf(\"\\n\");\n\t\tconst prefix =\n\t\t\tlastNewLineIndex >= 0 ? streamingText.slice(0, lastNewLineIndex + 1) : \"\";\n\t\tconst tail =\n\t\t\tlastNewLineIndex >= 0\n\t\t\t\t? streamingText.slice(lastNewLineIndex + 1)\n\t\t\t\t: streamingText;\n\n\t\tbasicHtml = marked.parse(normalizeFullWidthParensAroundUrls(prefix), {\n\t\t\tgfm: true,\n\t\t\tpedantic: false,\n\t\t\theaderIds: false\n\t\t});\n\n\t\t/*\n\t\t * Ghost bullet rendering\n\t\t * ----------------------\n\t\t * DEF0728473\n\t\t * While streaming, the last \"tail\" line may begin with a list marker (\"- \", \"* \", \"1. \", etc.)\n\t\t * but not yet be complete. If we pass it to `marked` directly, it flickers (re-parsed on each token).\n\t\t *\n\t\t * To avoid this, we detect list starts via `looksLikeListStart(tail)`.\n\t\t * - We strip the marker off (`stripListMarker`) and escape the partial text.\n\t\t * - We count leading spaces (`countLeadingSpaces`) to determine nesting level.\n\t\t * - Nesting level is calculated by spaces / 2 (so \"  - \" = level-1).\n\t\t * - Instead of passing to Markdown, we wrap it in a temporary `<ul class=\"ghost-ul level-N\">`\n\t\t *   with a `<li>` and placeholder dot/text span.\n\t\t *\n\t\t * This makes bullets render smoothly during typing, without flicker, until the\n\t\t * full line is complete and re-parsed normally by `marked`.\n\t\t */\n\t\tif (looksLikeListStart(tail)) {\n\t\t\t/*\n\t\t\t * Split streaming  into:\n\t\t\t *   - prefix: all complete lines up to the last newline (\"\\n\").\n\t\t\t *              -> safe to pass into marked, no flicker because Markdown has full context.\n\t\t\t *   - tail:   the current line being typed (incomplete).\n\t\t\t *              -> handled manually: if it looks like a list start we render a \"ghost\" bullet,\n\t\t\t *                 otherwise, we escape+render as plain text.\n\t\t\t * This prevents Markdown from re-parsing partial list lines on every tick, which causes flicker.\n\t\t\t */\n\t\t\tconst ghostText = escapeHtml(stripListMarker(tail));\n\t\t\tconst spaces = countLeadingSpaces(tail);\n\t\t\tconst nestingLevel = Math.floor(spaces / 2); // 2 spaces = 1 level\n\t\t\tbasicHtml += `\n\t\t\t\t<ul class=\"ghost-ul level-${nestingLevel}\">\n\t\t\t\t\t<li class=\"ghost-li\">\n\t\t\t\t\t\t<span class=\"ghost-dot\">•</span>\n\t\t\t\t\t\t<span class=\"ghost-text\">${ghostText}</span>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t`;\n\t\t} else if (tail) {\n\t\t\tbasicHtml += escapeHtml(tail);\n\t\t}\n\t}\n\n\tconst purifyConfig = {\n\t\tADD_TAGS: [\"now-badge\", \"now-avatar\"],\n\t\tADD_ATTR: [\n\t\t\t\"image-src\",\n\t\t\t\"user-name\",\n\t\t\t\"value\",\n\t\t\t\"color\",\n\t\t\t\"variant\",\n\t\t\t\"size\",\n\t\t\t\"round\",\n\t\t\t\"tabindex\",\n\t\t\t\"target\",\n\t\t\t\"rel\"\n\t\t]\n\t};\n\tlet sanitizedHtml = DOMPurify.sanitize(basicHtml, purifyConfig);\n\tlet parsedHtml = replaceCitationsWithTemporaryPlaceHolders(\n\t\tsanitizedHtml,\n\t\tcitationsFromStreaming\n\t); // kb to become <now-badge> and catalog to become <span>\n\n\tconst canShowToggle = didExceedLineLimit;\n\tlet toggleButton = null;\n\tif (canShowToggle) {\n\t\ttoggleButton = (\n\t\t\t<now-button-bare\n\t\t\t\tclassName=\"show-more\"\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\tactionId: expanded ? \"SHOW_LESS_CLICKED\" : \"SHOW_MORE_CLICKED\"\n\t\t\t\t}}\n\t\t\t\tlabel={expanded ? SHOW_LESS_LABEL : SHOW_FULL_ANSWER_LABEL}\n\t\t\t\ticon-end={expanded ? \"chevron-up-fill\" : \"chevron-down-fill\"}\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tsize=\"sm\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst globalAskForFollowUpButton = allChunksProcessed && canAskFollowUp && (\n\t\t<now-button\n\t\t\tclassName=\"hand_over_to_va\"\n\t\t\tappend-to-payload={{\n\t\t\t\ttype: ASK_A_FOLLOW_UP\n\t\t\t}}\n\t\t\tvariant=\"secondary\"\n\t\t\tsize=\"sm\"\n\t\t\ttooltipContent={ASK_A_FOLLOW_UP_LABEL}\n\t\t>\n\t\t\t<div className=\"follow-up-btn-content\">\n\t\t\t\t<now-icon icon=\"ai-sparkle-outline\" size=\"md\" />\n\t\t\t\t<span>{ASK_A_FOLLOW_UP_LABEL}</span>\n\t\t\t</div>\n\t\t</now-button>\n\t);\n\n\treturn (\n\t\t<div className=\"streaming-text-and-action-wrapper\">\n\t\t\t<div className=\"streaming-text-wrapper\" style={{ margin: \"0 auto\" }}>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"streaming-text-container\"\n\t\t\t\t\thook-insert={({ elm }) => updateElm(elm)}\n\t\t\t\t\thook-update={({ elm }) => updateElm(elm)}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: \"15px\",\n\t\t\t\t\t\t...(expanded\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tdisplay: \"-webkit-box\",\n\t\t\t\t\t\t\t\t\tWebkitBoxOrient: \"vertical\",\n\t\t\t\t\t\t\t\t\tWebkitBoxPack: \"start\",\n\t\t\t\t\t\t\t\t\tWebkitBoxAlign: \"stretch\",\n\t\t\t\t\t\t\t\t\toverflow: \"clip\",\n\t\t\t\t\t\t\t\t\ttextOverflow: \"ellipsis\",\n\t\t\t\t\t\t\t\t\tWebkitLineClamp: 6,\n\t\t\t\t\t\t\t\t\tlineClamp: 6\n\t\t\t\t\t\t\t  })\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{dangerouslyCreateElementFromString(\n\t\t\t\t\t\t`<div class=\"streaming-text\">${parsedHtml}</div>`\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"buttons-container\": true,\n\t\t\t\t\t\t\"-global\": isGlobal\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{toggleButton}\n\t\t\t\t\t{globalAskForFollowUpButton}\n\t\t\t\t\t{kgListCitations?.length > 0 &&\n\t\t\t\t\t\tallChunksProcessed &&\n\t\t\t\t\t\tactionsFromFinalResponse?.length > 0 && (\n\t\t\t\t\t\t\t<view-records-popover\n\t\t\t\t\t\t\t\tkgListCitations={kgListCitations}\n\t\t\t\t\t\t\t\tactions={actionsFromFinalResponse}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import CardHeader from \"./sections/heading\";\nimport CardBody from \"./sections/body\";\nimport CardFooter from \"./sections/footer\";\nimport { MAX_DESKTOP_ACTIONS } from \"./constants\";\nimport { get, isEmpty, isEqual } from \"lodash\";\nimport Streaming from \"./common/streaming/view\";\nimport { isSynthesized } from \"./common/streaming/utils\";\n\nconst view = (state, { updateState }) => {\n\tconst {\n\t\tproperties: {\n\t\t\tactions,\n\t\t\tidentifier,\n\t\t\tidentifierCriticalText,\n\t\t\theading,\n\t\t\tmarker,\n\t\t\tlabelValuesInfo,\n\t\t\tdescription,\n\t\t\tallowFeedback,\n\t\t\tfeedbackOptions,\n\t\t\tidentifierFontSize,\n\t\t\theadingFontSize,\n\t\t\tenableDataLabelingFeedback,\n\t\t\tisGlobal,\n\t\t\thighlightedText,\n\t\t\thighlightedTextIcon,\n\t\t\tshowHeaderTooltip,\n\t\t\tidentifierAtBottom,\n\t\t\tshowAboutInfo,\n\t\t\tdocumentationUrl,\n\t\t\tgrType,\n\t\t\tshowActionAsLink,\n\t\t\tsource,\n\t\t\tfollowUpAction,\n\t\t\tcitations,\n\t\t\tmodel,\n\t\t\tisOneBox = false,\n\t\t\tmessages,\n\t\t\tcanAskFollowUp,\n\t\t\tforceNewTab,\n\t\t\tdisableHref\n\t\t},\n\t\tbehaviors: { mediaQuery, streaming },\n\t\tfeedbackValue,\n\t\topenFeedbackDialog,\n\t\tfeedbackReason,\n\t\tfeedbackOther,\n\t\ttoolTipRef,\n\t\tshouldTruncate,\n\t\tdescriptionCollapsed,\n\t\ttableMatches,\n\t\tactiveTable,\n\t\tnlqTableDefinitionsLoading,\n\t\tselectedTables,\n\t\terror,\n\t\ttextRef,\n\t\tsynthesizedMarkdownText,\n\t\tcitationsFromSynthesizedResponse,\n\t\tkgListCitations,\n\t\tsynthesizedGeniusResultCanExpand,\n\t\tsynthesizedGeniusResultExpanded\n\t} = state;\n\tconst isMobile = mediaQuery.mobileQuery;\n\tconst multiTable = get(model, \"columns.multiTable\", \"false\") === \"true\";\n\tconst isExternalSourceType = isEqual(\n\t\tget(model, \"columns.source_type\", \"\"),\n\t\t\"external\"\n\t);\n\tconst isSynthesizedAndNotStreaming =\n\t\tisSynthesized(grType) && !isEmpty(citations) && isEmpty(messages);\n\tconst isSynthesizedAndStreaming = isSynthesized(grType) && !isEmpty(messages);\n\tconst { allChunksProcessed = false } = streaming || {};\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t\"genius-card-container\": true,\n\t\t\t\t\"-onebox\": isOneBox,\n\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\"-sythesized\": isSynthesized(grType)\n\t\t\t}}\n\t\t>\n\t\t\t<CardHeader\n\t\t\t\thighlightedText={highlightedText}\n\t\t\t\thighlightedTextIcon={highlightedTextIcon}\n\t\t\t\tshowHeaderTooltip={showHeaderTooltip}\n\t\t\t\tupdateState={updateState}\n\t\t\t\ttoolTipRef={toolTipRef}\n\t\t\t\tshowAboutInfo={showAboutInfo}\n\t\t\t\tdocumentationUrl={documentationUrl}\n\t\t\t\tgrType={grType}\n\t\t\t/>\n\t\t\t{isSynthesizedAndStreaming ? (\n\t\t\t\t<Streaming\n\t\t\t\t\tstreamingData={streaming}\n\t\t\t\t\tupdateState={updateState}\n\t\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\tforceNewTab={forceNewTab}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<CardBody\n\t\t\t\t\tidentifier={identifier}\n\t\t\t\t\tidentifierCriticalText={identifierCriticalText}\n\t\t\t\t\theading={heading}\n\t\t\t\t\tmarker={marker}\n\t\t\t\t\tlabelValuesInfo={labelValuesInfo}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\tidentifierFontSize={identifierFontSize}\n\t\t\t\t\theadingFontSize={headingFontSize}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\tidentifierAtBottom={identifierAtBottom}\n\t\t\t\t\tshouldTruncate={shouldTruncate}\n\t\t\t\t\tdescriptionCollapsed={descriptionCollapsed}\n\t\t\t\t\tupdateState={updateState}\n\t\t\t\t\tgrType={grType}\n\t\t\t\t\ttableMatches={tableMatches}\n\t\t\t\t\tactiveTable={activeTable}\n\t\t\t\t\tshowActionAsLink={showActionAsLink}\n\t\t\t\t\tnlqTableDefinitionsLoading={nlqTableDefinitionsLoading}\n\t\t\t\t\tisExternalSourceType={isExternalSourceType}\n\t\t\t\t\tmodel={model}\n\t\t\t\t\tmultiTable={multiTable}\n\t\t\t\t\tselectedTables={selectedTables}\n\t\t\t\t\terror={error}\n\t\t\t\t\tisSynthesizedAndNotStreaming={isSynthesizedAndNotStreaming}\n\t\t\t\t\tcitationsFromSynthesizedResponse={citationsFromSynthesizedResponse}\n\t\t\t\t\tkgListCitations={kgListCitations}\n\t\t\t\t\tactions={actions}\n\t\t\t\t\tsynthesizedMarkdownText={synthesizedMarkdownText}\n\t\t\t\t\tsynthesizedGeniusResultCanExpand={synthesizedGeniusResultCanExpand}\n\t\t\t\t\tsynthesizedGeniusResultExpanded={synthesizedGeniusResultExpanded}\n\t\t\t\t\ttextRef={textRef}\n\t\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t\t\tforceNewTab={forceNewTab}\n\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<CardFooter\n\t\t\t\theading={heading}\n\t\t\t\toverflowLimit={\n\t\t\t\t\tisGlobal ? MAX_DESKTOP_ACTIONS.GLOBAL : MAX_DESKTOP_ACTIONS.DEFAULT\n\t\t\t\t}\n\t\t\t\tactions={actions}\n\t\t\t\tallowDropdown={!isMobile}\n\t\t\t\tallowFeedback={allowFeedback}\n\t\t\t\tvalue={feedbackValue}\n\t\t\t\tfeedbackOptions={feedbackOptions}\n\t\t\t\topenFeedbackDialog={openFeedbackDialog}\n\t\t\t\tfeedbackReason={feedbackReason}\n\t\t\t\tfeedbackOther={feedbackOther}\n\t\t\t\tenableDataLabelingFeedback={enableDataLabelingFeedback}\n\t\t\t\tisGlobal={isGlobal}\n\t\t\t\tidentifier={identifier}\n\t\t\t\tidentifierCriticalText={identifierCriticalText}\n\t\t\t\tidentifierFontSize={identifierFontSize}\n\t\t\t\tidentifierAtBottom={identifierAtBottom}\n\t\t\t\tshowActionAsLink={showActionAsLink}\n\t\t\t\tsource={source}\n\t\t\t\tfollowUpAction={followUpAction}\n\t\t\t\tcitations={citations}\n\t\t\t\tmodel={model}\n\t\t\t\tisSynthesizedAndNotStreaming={isSynthesizedAndNotStreaming}\n\t\t\t\tisSynthesizedAndStreaming={isSynthesizedAndStreaming}\n\t\t\t\tallChunksProcessed={allChunksProcessed}\n\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import { find, isEmpty, get, isEqual } from \"lodash\";\nimport { createGraphQLEffect } from \"@servicenow/ui-effect-graphql\";\nimport { createHttpEffect } from \"@servicenow/ui-effect-http\";\nimport {\n\tDECLARATIVE_ACTION,\n\tHELPFUL_FEEDBACK_START,\n\tUNHELPFUL_FEEDBACK_START,\n\tNLQ_TABLE_SWITCHED,\n\tNLQ_VIEW_FULL_TABLE_CLICKED,\n\tRECORD_LIST_DATA_FETCH_STARTED,\n\tRECORD_LIST_DATA_FETCH_COMPLETED,\n\tRECORD_LIST_DATA_FETCH_FAILED,\n\tFETCH_LIST_DATA,\n\tMULTITABLE_NLQ_REQUEST_STARTED,\n\tMULTITABLE_NLQ_REQUEST_SUCCESS,\n\tMULTITABLE_NLQ_REQUEST_ERROR,\n\tMULTITABLE_NLQ_REQUEST,\n\tQUERY_BUILDER_REQUEST,\n\tQUERY_BUILDER_REQUEST_STARTED,\n\tQUERY_BUILDER_REQUEST_SUCCESS,\n\tQUERY_BUILDER_REQUEST_ERROR,\n\tQUERY_BUILDER_POLL,\n\tQUERY_BUILDER_POLL_STARTED,\n\tQUERY_BUILDER_POLL_SUCCESS,\n\tQUERY_BUILDER_POLL_ERROR,\n\tGENIUS_RESULT_CHAT_TRIGGERED,\n\tASK_A_FOLLOW_UP_CLIKED,\n\tSHOW_FULL_ANSWER_CLICKED,\n\tFETCH_NLQ_NAVIGATION_CONFIG,\n\tKG_VIEW_RECORDS\n} from \"./actions\";\nimport {\n\tPOSITIVE_FEEDBACK_VALUE,\n\tNEGATIVE_FEEDBACK_VALUE,\n\tABOUT_POPOVER,\n\tGR_TYPES,\n\tOTHER_FEEDBACK,\n\tTRUNCATION_LIMIT,\n\tDESCRIPTION_STATES,\n\tCITATION_ACTION,\n\tNLQ_MULTITABLE_DROPDOWN,\n\tNLQ_HIGHLIGHTED_TEXT,\n\tDESCRIPTION_COLLAPSED_STATE_TOGGLED,\n\tSYNTHESIZED_GENIUS_RESULT_EXPANDED,\n\tASK_A_FOLLOW_UP,\n\tCITATION_CLICK,\n\tCATALOG_CLICK,\n\tCLICK,\n\tKG_GENERIC_VIEW_RECORD_ACTION_CLICK,\n\tCITATION_POPOVER_CLICKED,\n\tVIEW_RECORDS_CLICKED\n} from \"./constants\";\nimport {\n\tformatSelectedTables,\n\tformatUtterance,\n\tgetNavigationConfig,\n\thandleFeedback,\n\ttransformJSONToTableDefinitions\n} from \"./utils\";\nimport { parseInlineReferences } from \"./common/streaming/utils\";\n\nconst getElementHeight = element => {\n\tconst originalParent = element?.parentElement;\n\tif (!element || !originalParent) {\n\t\treturn 0;\n\t}\n\tconst hiddenDivContainer = document.createElement(\"div\");\n\thiddenDivContainer.className = \"hidden-container\"; // Add class name to the container\n\thiddenDivContainer.style.overflow = \"visible\"; // Ensure overflow is not hidden or affecting the height calculation\n\thiddenDivContainer.style.position = \"absolute\"; // Ensure the container doesn't affect the layout\n\tconst styleElement = document.createElement(\"style\");\n\t// match with parent styles from description.scss -> .genius-card__description-container to obtain correct height\n\tstyleElement.textContent = `\n        .hidden-container pre {\n            white-space: pre-wrap;\n        }\n\n        .hidden-container table {\n            display: flex;\n            flex-direction: column;\n            flex-wrap: nowrap;\n            flex-grow: 1;\n            flex-shrink: 1;\n        }\n\n        .hidden-container table p {\n            margin: 0;\n        }\n\n        .hidden-container tr {\n            width: 100%;\n            display: flex;\n            flex-direction: row;\n            flex-wrap: nowrap;\n        }\n\n        .hidden-container td {\n            display: flex;\n            flex-flow: row wrap;\n            flex-grow: 1;\n            flex-basis: 0;\n        }\n\n        .hidden-container ol {\n            margin: 0;\n        }\n\n        .hidden-container p {\n            margin: 0;\n        }\n    `;\n\n\t// Append the style element to the document head\n\tdocument.head.appendChild(styleElement);\n\thiddenDivContainer.style.width = `${originalParent.offsetWidth}px`; // Match the width of the original parent\n\thiddenDivContainer.style.fontSize = getComputedStyle(originalParent).fontSize;\n\thiddenDivContainer.style.wordSpacing = window.getComputedStyle(\n\t\toriginalParent\n\t).wordSpacing; // Set word spacing to match parent\n\thiddenDivContainer.style.lineHeight = window.getComputedStyle(\n\t\toriginalParent\n\t).lineHeight; // Set line height to match parent\n\n\t// Copy the element and append the copy to the hidden div container\n\tconst elementCopy = element.cloneNode(true); // true to clone all child nodes as well\n\thiddenDivContainer.appendChild(elementCopy);\n\tdocument.body.appendChild(hiddenDivContainer);\n\n\tconst height = hiddenDivContainer.offsetHeight;\n\n\t// clean up\n\tdocument.body.removeChild(hiddenDivContainer);\n\tdocument.head.removeChild(styleElement);\n\n\treturn height;\n};\n\nconst handleTruncation = (host, updateState, heightLimit) => {\n\tconst ref = host.shadowRoot.querySelector(\".collapsible__description-text\");\n\tif (ref && !ref.classList.contains(\"-mini\")) {\n\t\tconst maxHeight = getElementHeight(ref);\n\t\tupdateState({\n\t\t\tshouldTruncate: maxHeight > heightLimit,\n\t\t\tdescriptionCollapsed: maxHeight > heightLimit\n\t\t});\n\t} else {\n\t\tupdateState({\n\t\t\tshouldTruncate: false,\n\t\t\tdescriptionCollapsed: false\n\t\t});\n\t}\n};\n\nconst debounceAndWait = (func, delay) => {\n\tlet timeoutId;\n\treturn (...args) => {\n\t\tconst context = this;\n\t\tclearTimeout(timeoutId);\n\t\ttimeoutId = setTimeout(() => {\n\t\t\tfunc.apply(context, args);\n\t\t}, delay);\n\t};\n};\n\nconst debouncedHandleTruncation = debounceAndWait(handleTruncation, 0);\n\nconst handleResizeForTruncation = (host, updateState) => {\n\t// removed any existing event listener for a new one\n\t// debouncing for performance as multiple events may be fired if user shrinks the screen gradually\n\twindow.removeEventListener(\"resize\", () => {\n\t\tdebouncedHandleTruncation(host, updateState, TRUNCATION_LIMIT);\n\t});\n\twindow.addEventListener(\"resize\", () => {\n\t\tdebouncedHandleTruncation(host, updateState, TRUNCATION_LIMIT);\n\t});\n};\n\nconst queueUpdateTruncationVisibility = function() {\n\tlet timeoutId = null;\n\treturn function(...originalArgs) {\n\t\tif (timeoutId) {\n\t\t\twindow.cancelAnimationFrame(timeoutId);\n\t\t}\n\n\t\t/**\n\t\t * wait for content to actually be rendered before calculating heights\n\t\t * updateState before the actual painting happens so the show more won't appear flashy\n\t\t * and the text is truncated readily when switching between GRs in Carousel\n\t\t */\n\t\ttimeoutId = window.requestAnimationFrame(() => {\n\t\t\thandleTruncation(...originalArgs);\n\t\t});\n\t};\n};\n\nconst handleSynthesizedResponse = (properties, updateState) => {\n\tconst { model } = properties;\n\tconst markdown = get(model, \"columns.answer_markdown\");\n\tconst kgListCitations = get(model, \"columns.kg_list_citations\", \"[]\");\n\tconst { updatedText, foundCitations } = parseInlineReferences(markdown);\n\n\tupdateState({\n\t\tsynthesizedMarkdownText: updatedText,\n\t\tcitationsFromSynthesizedResponse: foundCitations,\n\t\tkgListCitations: JSON.parse(kgListCitations)\n\t});\n};\n\nexport const handleComponentConnected = coeffects => {\n\tconst { host, updateState, properties } = coeffects;\n\thandleSynthesizedResponse(properties, updateState);\n\tsetNLQTableMatches(coeffects);\n\n\tupdateState({\n\t\tqueueUpdateShouldTruncate: queueUpdateTruncationVisibility()\n\t});\n\thandleResizeForTruncation(host, updateState);\n};\n\nexport const handleComponentDOMTreeReady = ({ host, updateState, state }) => {\n\tconst { queueUpdateShouldTruncate } = state;\n\tsetTimeout(() => handleTruncation(host, updateState, TRUNCATION_LIMIT));\n\tqueueUpdateShouldTruncate &&\n\t\tqueueUpdateShouldTruncate(host, updateState, TRUNCATION_LIMIT);\n\thandleResizeForTruncation(host, updateState);\n};\n\nexport const handleIconicButtonClick = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState,\n\thost\n}) => {\n\tconst {\n\t\tpayload: { value, actionId }\n\t} = action;\n\tif (actionId === ABOUT_POPOVER) {\n\t\treturn;\n\t}\n\n\tif (\n\t\tactionId === HELPFUL_FEEDBACK_START ||\n\t\tactionId === UNHELPFUL_FEEDBACK_START\n\t) {\n\t\tgeniusCardFeedbackClicked(action, dispatch, state, updateState, host);\n\t\treturn;\n\t}\n\n\tif (!value) {\n\t\thandleFeedback(\n\t\t\t-1,\n\t\t\tNEGATIVE_FEEDBACK_VALUE,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t\thost\n\t\t);\n\t}\n};\n\nexport const closeFeedbackDialog = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState\n}) => {\n\tconst {\n\t\tpayload: { value, actionId },\n\t\tmeta\n\t} = action;\n\n\tif (\n\t\tactionId === ABOUT_POPOVER ||\n\t\tactionId === NLQ_MULTITABLE_DROPDOWN ||\n\t\tactionId === CITATION_POPOVER_CLICKED ||\n\t\tmeta?.appended?.componentId?.slice(0, 23) === NLQ_MULTITABLE_DROPDOWN\n\t) {\n\t\treturn;\n\t}\n\tif (!value) {\n\t\thandleFeedback(-1, NEGATIVE_FEEDBACK_VALUE, dispatch, state, updateState);\n\t}\n};\n\nexport const buttonOrLinkClicked = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState,\n\thost\n}) => {\n\tconst { payload } = action;\n\n\tconst {\n\t\tproperties: { model, grType }\n\t} = state;\n\n\t/*\n\t * actionId is passed in by now-button whereas\n\t * item is set by split button\n\t * isRelevanceFeedback is set by data labeling tool dropdown\n\t */\n\tconst { isFeedback, isRelevanceFeedback, type } = payload;\n\n\tif (type && type === CITATION_CLICK) {\n\t\treturn;\n\t}\n\tif (type && type === ASK_A_FOLLOW_UP) {\n\t\tdispatch(GENIUS_RESULT_CHAT_TRIGGERED, {\n\t\t\ttype: type,\n\t\t\t...model\n\t\t});\n\t\tdispatch(ASK_A_FOLLOW_UP_CLIKED, {\n\t\t\ttype: type,\n\t\t\taction: {\n\t\t\t\tactionPayload: {}\n\t\t\t},\n\t\t\tmodel\n\t\t});\n\t\treturn;\n\t}\n\tif (type === KG_GENERIC_VIEW_RECORD_ACTION_CLICK) {\n\t\tdispatch(KG_VIEW_RECORDS, {\n\t\t\taction: payload.actionPayload,\n\t\t\tmodel\n\t\t});\n\t\treturn;\n\t}\n\tif (type && type === CLICK) {\n\t\tdispatch(DECLARATIVE_ACTION, {\n\t\t\taction: payload.actionPayload,\n\t\t\tmodel\n\t\t});\n\t\treturn;\n\t}\n\n\tif (type && type === CATALOG_CLICK) {\n\t\tdispatch(GENIUS_RESULT_CHAT_TRIGGERED, {\n\t\t\taction: \"RESULT_CLICKED\",\n\t\t\ttype: type,\n\t\t\tclickedItemSysId: payload.clickedItemSysId,\n\t\t\t...model\n\t\t});\n\t\treturn;\n\t}\n\n\tif (isRelevanceFeedback) {\n\t\tdispatch(DECLARATIVE_ACTION, {\n\t\t\taction: { relevance: payload.item.id },\n\t\t\tmodel\n\t\t});\n\t\treturn;\n\t}\n\n\t// The close button on the feedback dialog was clicked\n\tif (isFeedback) {\n\t\tconst { feedbackReason, feedbackOther } = state;\n\t\tconst otherFeedbackReason =\n\t\t\tfeedbackReason === OTHER_FEEDBACK ? feedbackOther : null;\n\t\tconst finalReason =\n\t\t\totherFeedbackReason || feedbackReason || NEGATIVE_FEEDBACK_VALUE;\n\n\t\thandleFeedback(-1, finalReason, dispatch, state, updateState, host);\n\t\treturn;\n\t}\n\n\tif (grType === GR_TYPES.NLQ) {\n\t\thandleViewAll({ dispatch, state });\n\t\treturn;\n\t}\n\n\tgeniusCardActionClicked({ action, dispatch, state });\n};\n\nexport const dropDownItemClicked = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState\n}) => {\n\tif (action.payload.type === NLQ_MULTITABLE_DROPDOWN) {\n\t\tnlqDropDownClicked({ action, dispatch, state, updateState });\n\t} else {\n\t\tgeniusCardActionClicked({ action, dispatch, state });\n\t}\n};\n\nexport const geniusCardActionClicked = ({ action, dispatch, state }) => {\n\tconst { payload } = action;\n\n\tconst {\n\t\tproperties: { actions, model }\n\t} = state;\n\n\t/*\n\t * actionId is passed in by now-button whereas\n\t * item is set by split button\n\t * isRelevanceFeedback is set by data labeling tool dropdown\n\t */\n\tconst { actionId, item, type, citationAction } = payload;\n\n\tconst assignmentId = actionId || item.id;\n\tconst geniusCardAction =\n\t\tisEmpty(get(model, \"columns.citations\")) && !isEqual(type, CITATION_ACTION)\n\t\t\t? find(actions, [\"assignmentId\", assignmentId])\n\t\t\t: citationAction;\n\n\tif (geniusCardAction) {\n\t\tdispatch(DECLARATIVE_ACTION, {\n\t\t\taction: geniusCardAction,\n\t\t\tmodel\n\t\t});\n\t}\n};\n\nconst nlqDropDownClicked = ({ action, dispatch, state, updateState }) => {\n\tconst selectedTables = state.selectedTables;\n\tconst utterance = state.properties.utterance;\n\tselectedTables[action.payload.token] = action.payload.item.id;\n\tsetMultiTableAndFetchData(\n\t\tselectedTables,\n\t\tutterance,\n\t\tdispatch,\n\t\tupdateState,\n\t\tstate\n\t);\n};\n\nexport const handleDescriptionCollapsed = (state, updateState, action) => {\n\tconst {\n\t\tpayload: { type }\n\t} = action;\n\n\tupdateState({\n\t\t...state,\n\t\tdescriptionCollapsed: type === DESCRIPTION_STATES.COLLAPSE\n\t});\n};\n\nexport const geniusCardFeedbackClicked = (\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState,\n\thost\n) => {\n\tconst { payload } = action;\n\tconst {\n\t\tproperties: { feedbackOptions }\n\t} = state;\n\n\t// actionId is passed in by now-button-iconic based on type of feedback\n\tconst { actionId } = payload;\n\tconst newFeedbackValue = actionId === HELPFUL_FEEDBACK_START ? 1 : -1;\n\tlet reason = POSITIVE_FEEDBACK_VALUE;\n\tif (newFeedbackValue < 0) {\n\t\t/*\n\t\t * 'Unhelpful' button was clicked, so open the reason dialog if there are reasons configured for\n\t\t * the user to choose from, else go ahead and dispatch the feedback\n\t\t */\n\t\tconst showFeedbackDialog = feedbackOptions.length > 0;\n\t\tif (showFeedbackDialog) {\n\t\t\tupdateState({\n\t\t\t\t...state,\n\t\t\t\topenFeedbackDialog: true\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\treason = NEGATIVE_FEEDBACK_VALUE;\n\t}\n\thandleFeedback(newFeedbackValue, reason, dispatch, state, updateState, host);\n};\n\nexport const nowButtonBareClicked = ({\n\tstate,\n\tupdateState,\n\taction,\n\tdispatch\n}) => {\n\tconst {\n\t\tpayload: { actionId }\n\t} = action;\n\n\tconst { payload } = action;\n\tconst { type } = payload;\n\tconst {\n\t\tproperties: { model }\n\t} = state;\n\n\tif (type && type === ASK_A_FOLLOW_UP) {\n\t\tdispatch(GENIUS_RESULT_CHAT_TRIGGERED, {\n\t\t\ttype: type,\n\t\t\t...model\n\t\t});\n\t\tdispatch(ASK_A_FOLLOW_UP_CLIKED, {\n\t\t\ttype: type,\n\t\t\taction: {\n\t\t\t\tactionPayload: {}\n\t\t\t},\n\t\t\tmodel\n\t\t});\n\t\treturn;\n\t}\n\n\tif (actionId === DESCRIPTION_COLLAPSED_STATE_TOGGLED) {\n\t\thandleDescriptionCollapsed(state, updateState, action);\n\t} else if (actionId === SYNTHESIZED_GENIUS_RESULT_EXPANDED) {\n\t\tconst {\n\t\t\tpayload: { type }\n\t\t} = action;\n\n\t\tif (type === DESCRIPTION_STATES.EXPAND) {\n\t\t\tdispatch(SHOW_FULL_ANSWER_CLICKED, {\n\t\t\t\ttype: \"SHOW_FULL_ANSWER\",\n\t\t\t\taction: {\n\t\t\t\t\tactionPayload: {}\n\t\t\t\t},\n\t\t\t\tmodel\n\t\t\t});\n\t\t}\n\n\t\tupdateState({\n\t\t\tsynthesizedGeniusResultExpanded: type === DESCRIPTION_STATES.EXPAND\n\t\t});\n\t} else if (actionId === VIEW_RECORDS_CLICKED) {\n\t\treturn;\n\t}\n\n\tif (type && type === CLICK) {\n\t\tdispatch(DECLARATIVE_ACTION, {\n\t\t\taction: payload.actionPayload,\n\t\t\tmodel\n\t\t});\n\t\treturn;\n\t}\n\n\tgeniusCardActionClicked({ action, dispatch, state });\n};\n\nexport const handleFeedbackOtherInput = ({ action, state, updateState }) => {\n\tconst {\n\t\tpayload: { fieldValue }\n\t} = action;\n\n\tupdateState({\n\t\t...state,\n\t\tfeedbackOther: fieldValue\n\t});\n};\n\nexport const handleReasonSelection = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState\n}) => {\n\tconst {\n\t\tpayload: { isIntentFeedback, value }\n\t} = action;\n\n\tif (isIntentFeedback) {\n\t\tconst {\n\t\t\tproperties: { model }\n\t\t} = state;\n\t\tdispatch(DECLARATIVE_ACTION, {\n\t\t\taction: { intent: value },\n\t\t\tmodel\n\t\t});\n\t\treturn;\n\t}\n\n\tupdateState({\n\t\t...state,\n\t\tfeedbackReason: value\n\t});\n};\n\nexport const fetchListCompleteEffect = ({ action, state, updateState }) => {\n\tconst { columnDefinitions, rowDefinitions } = transformJSONToTableDefinitions(\n\t\taction.payload.data\n\t);\n\tconst {\n\t\tproperties: { response },\n\t\tactiveTable\n\t} = state;\n\tupdateState({\n\t\t...state,\n\t\ttableMatches: JSON.parse(response),\n\t\tactiveTable: {\n\t\t\t...activeTable,\n\t\t\ttableDefinitions: {\n\t\t\t\trowDefinitions,\n\t\t\t\tcolumnDefinitions\n\t\t\t}\n\t\t},\n\t\tnlqTableDefinitionsLoading: false\n\t});\n};\n\nexport const setMultiTableAndFetchData = (\n\tselectedTables,\n\tutterance,\n\tdispatch,\n\tupdateState,\n\tstate\n) => {\n\tupdateState({\n\t\t...state,\n\t\tselectedTables\n\t});\n\tconst formattedTables = formatSelectedTables(selectedTables || {});\n\tdispatch(MULTITABLE_NLQ_REQUEST, {\n\t\tuser_question: formatUtterance(utterance, formattedTables),\n\t\tforce_table_grammar: \"false\",\n\t\ttable: \"\",\n\t\torigin: \"CMDB_WS\",\n\t\tdata: formattedTables\n\t});\n};\n\nexport const setActiveTableAndFetchData = (\n\tresponse,\n\tselectedTableData,\n\tdispatch,\n\tupdateState,\n\tstate\n) => {\n\tupdateState({\n\t\t...state,\n\t\ttableMatches: JSON.parse(response),\n\t\tactiveTable: {\n\t\t\t...state.activeTable,\n\t\t\tlogID: selectedTableData.logID,\n\t\t\tsource: selectedTableData.source,\n\t\t\tname: selectedTableData.name,\n\t\t\tlabel: selectedTableData.label || \"\",\n\t\t\tfilter: selectedTableData.filter\n\t\t}\n\t});\n\tdispatch(FETCH_LIST_DATA, {\n\t\tfixedQuery: \"active=true\",\n\t\tlistTitle: selectedTableData.label || \"\",\n\t\trunQuery: \"false\",\n\t\tquery: selectedTableData.filter,\n\t\trunHighlightedValuesQuery: false,\n\t\ttable: selectedTableData.name,\n\t\tlimit: 3,\n\t\tmaxColumns: 5,\n\t\tisDeclarativeActionsRequired: false\n\t});\n};\n\nexport const setNLQTableMatches = ({ state, updateState, dispatch }) => {\n\tconst {\n\t\tproperties: { response, grType, model, utterance }\n\t} = state;\n\tif (grType === GR_TYPES.NLQ && !isEmpty(response)) {\n\t\tconst parsedResponse = JSON.parse(response);\n\t\tconst multiTable = model[\"columns.multiTable\"] === \"true\";\n\t\tif (multiTable) {\n\t\t\t// set first tables in response as active and fetch data\n\t\t\tconst initialSelection = {};\n\t\t\tfor (let prop in parsedResponse) {\n\t\t\t\tinitialSelection[prop] = parsedResponse[prop][0][\"id\"];\n\t\t\t}\n\t\t\tsetMultiTableAndFetchData(\n\t\t\t\tinitialSelection,\n\t\t\t\tutterance,\n\t\t\t\tdispatch,\n\t\t\t\tupdateState,\n\t\t\t\tstate\n\t\t\t);\n\t\t} else {\n\t\t\t// set first table in response as active and fetch data\n\t\t\tsetActiveTableAndFetchData(\n\t\t\t\tresponse,\n\t\t\t\tparsedResponse[0],\n\t\t\t\tdispatch,\n\t\t\t\tupdateState,\n\t\t\t\tstate\n\t\t\t);\n\t\t}\n\t}\n};\n\nexport const handleComponentPropertyChanged = coeffects => {\n\tconst { action, dispatch, updateState, state, host } = coeffects;\n\tconst {\n\t\tpayload: { name, value }\n\t} = action;\n\tconst { queueUpdateShouldTruncate } = state;\n\tswitch (name) {\n\t\tcase \"grType\":\n\t\t\tsetNLQTableMatches(coeffects);\n\t\t\tbreak;\n\t\tcase \"response\":\n\t\t\tif (!isEmpty(value)) {\n\t\t\t\tdispatch(FETCH_NLQ_NAVIGATION_CONFIG);\n\t\t\t\tsetActiveTableAndFetchData(\n\t\t\t\t\tvalue,\n\t\t\t\t\tJSON.parse(value)[0],\n\t\t\t\t\tdispatch,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tstate\n\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\t\t// reset feedback and show more state so the value is not retained while switching between GRs\n\t\t// This may change with - STRY56976106\n\t\tcase \"model\":\n\t\t\tqueueUpdateShouldTruncate &&\n\t\t\t\tqueueUpdateShouldTruncate(host, updateState, TRUNCATION_LIMIT);\n\t\t\thandleResizeForTruncation(host, updateState);\n\t\t\tupdateState({\n\t\t\t\topenFeedbackDialog: false,\n\t\t\t\tfeedbackReason: \"\",\n\t\t\t\tfeedbackOther: \"\",\n\t\t\t\tfeedbackValue: 0,\n\t\t\t\ttoolTipRef: null\n\t\t\t});\n\t\t\tbreak;\n\t}\n};\n\nexport const handlePillSelected = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState\n}) => {\n\tconst {\n\t\tmeta: { appended }\n\t} = action;\n\tconst {\n\t\tactiveTable,\n\t\tproperties: { model, response }\n\t} = state;\n\n\t//Signal for switching tables\n\tif (activeTable !== appended.tableSelected) {\n\t\tdispatch(NLQ_TABLE_SWITCHED, {\n\t\t\tselectedTable: appended.tableSelected,\n\t\t\tmodel\n\t\t});\n\t}\n\n\tsetActiveTableAndFetchData(\n\t\tresponse,\n\t\tappended.tableSelected,\n\t\tdispatch,\n\t\tupdateState,\n\t\tstate\n\t);\n};\n\nconst handleViewAll = ({ dispatch, state }) => {\n\tconst {\n\t\tactiveTable,\n\t\tsavedQueryId,\n\t\tqueryId,\n\t\tproperties: { model, searchProfile, utterance }\n\t} = state;\n\tconst { name, filter, source, logID } = activeTable;\n\n\tconst config = getNavigationConfig(\n\t\tJSON.parse(model[\"columns.navConfig\"]),\n\t\tname,\n\t\tsearchProfile,\n\t\tsource\n\t);\n\tconst payload = config.action_payload\n\t\t.replace(\"${table}\", name)\n\t\t.replace(\"${query}\", filter)\n\t\t.replace(\"${logID}\", logID)\n\t\t.replace(\"${utterance}\", utterance)\n\t\t.replace(\"${savedQueryId}\", savedQueryId)\n\t\t.replace(\"${queryStatusId}\", queryId);\n\n\tdispatch(NLQ_VIEW_FULL_TABLE_CLICKED, { model, activeTable, searchProfile });\n\tdispatch(config.action, JSON.parse(payload));\n};\n\nexport const requestStarted = event => {\n\tconst { state, updateState } = event;\n\tupdateState({\n\t\t...state,\n\t\tnlqTableDefinitionsLoading: true,\n\t\terror: false\n\t});\n};\n\nexport const requestFailed = ({ action, updateState }) => {\n\tconsole.error(`ERROR: ${action.type}\\n${JSON.stringify(action.payload)}`);\n\tupdateState({\n\t\tnlqTableDefinitionsLoading: false,\n\t\terror: action.payload\n\t});\n};\n\nexport const applyMultiTableSuccess = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState,\n\tupdateProperties\n}) => {\n\tif (action.payload.result[\"status_code\"] !== \"ok\") {\n\t\tupdateState({\n\t\t\t...state,\n\t\t\tnlqMultiTableLogId: action.payload.result[\"nlq_log\"],\n\t\t\terror: { error: \"couldn't parse utterance\" }\n\t\t});\n\t\treturn;\n\t}\n\tupdateState({\n\t\t...state,\n\t\tnlqMultiTableLogId: action.payload.result[\"nlq_log\"]\n\t});\n\tconst dataConfig = action.payload.result[\"data_configurations\"];\n\tif (dataConfig && dataConfig[dataConfig.length - 1].source_id === \"GAI\") {\n\t\tupdateProperties({\n\t\t\thighlightedText: NLQ_HIGHLIGHTED_TEXT,\n\t\t\thighlightedTextIcon: \"ai-sparkle-outline\"\n\t\t});\n\t}\n\tif (dataConfig[0] && dataConfig[0].edges) {\n\t\tconst payload = {\n\t\t\tname: `NLQ - AI_SEARCH : ${new Date().getTime().toString()}`,\n\t\t\tsource: \"NLQ\",\n\t\t\tquery: JSON.stringify(dataConfig[0]),\n\t\t\tdescription: state.properties.utterance,\n\t\t\tdependencies: \"\"\n\t\t};\n\t\tdispatch(QUERY_BUILDER_REQUEST, {\n\t\t\tforce_table_grammar: \"false\",\n\t\t\ttable: \"\",\n\t\t\torigin: \"CMDB_WS\",\n\t\t\tdata: JSON.stringify(payload)\n\t\t});\n\t} else {\n\t\tsetActiveTableAndFetchData(\n\t\t\t\"[]\",\n\t\t\t{\n\t\t\t\tname: dataConfig[0].source_id,\n\t\t\t\tlabel: dataConfig[0].source_id_label,\n\t\t\t\tfilter: dataConfig[0].filter_query,\n\t\t\t\tlogID: action.payload.result[\"nlq_log\"],\n\t\t\t\tsource: \"CMDB_WS\"\n\t\t\t},\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tstate\n\t\t);\n\t\tdispatch(FETCH_LIST_DATA, {\n\t\t\tfixedQuery: \"active=true\",\n\t\t\tlistTitle: dataConfig[0].source_id_label || \"\",\n\t\t\trunQuery: \"false\",\n\t\t\tquery: dataConfig[0].filter_query,\n\t\t\trunHighlightedValuesQuery: false,\n\t\t\ttable: dataConfig[0].source_id,\n\t\t\tlimit: 3,\n\t\t\tmaxColumns: 5,\n\t\t\tisDeclarativeActionsRequired: false\n\t\t});\n\t}\n};\n\nexport const queryBuilderRequestSuccess = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState\n}) => {\n\tconst queryId = action.payload.result[\"query_status_id\"];\n\tconst savedQueryId = action.payload.result[\"saved_query_id\"];\n\tconst qbTable = action.payload.result[\"result_table\"];\n\tupdateState({\n\t\t...state,\n\t\tqueryId,\n\t\tsavedQueryId,\n\t\tqbTable\n\t});\n\tdispatch(QUERY_BUILDER_POLL, { queryId });\n};\n\nexport const queryBuilderPollSuccess = ({\n\taction,\n\tdispatch,\n\tstate,\n\tupdateState\n}) => {\n\tswitch (action.payload.result) {\n\t\tcase \"READY\":\n\t\tcase \"PROCESSING\":\n\t\t\tdispatch(QUERY_BUILDER_POLL, { queryId: state.queryId });\n\t\t\tbreak;\n\t\tcase \"COMPLETE\":\n\t\t\tsetActiveTableAndFetchData(\n\t\t\t\tJSON.stringify(state.tableMatches),\n\t\t\t\t{\n\t\t\t\t\tname: state.qbTable,\n\t\t\t\t\tlabel: state.properties.utterance,\n\t\t\t\t\tfilter: \"\",\n\t\t\t\t\tlogID: state.nlqMultiTableLogId,\n\t\t\t\t\tsource: \"MULTITABLE\"\n\t\t\t\t},\n\t\t\t\tdispatch,\n\t\t\t\tupdateState,\n\t\t\t\tstate\n\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tconsole.error(\"QUERY BUILDER POLL RESPONSE: \" + action.payload.result);\n\t}\n};\n\nexport const fetchListEffect = createGraphQLEffect(\"\", {\n\tvariableList: [],\n\tstartActionType: RECORD_LIST_DATA_FETCH_STARTED,\n\tsuccessActionType: RECORD_LIST_DATA_FETCH_COMPLETED,\n\terrorActionType: RECORD_LIST_DATA_FETCH_FAILED\n});\n\nexport const handleAttachmentClicked = {};\n\nexport const applyMultiTableEffect = createHttpEffect(\n\t\"/api/now/v1/par/nlq/visualization\",\n\t{\n\t\tmethod: \"POST\",\n\t\tbatch: false,\n\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\tqueryParams: [\"user_question\", \"table\", \"force_table_grammar\", \"origin\"],\n\t\tstartActionType: MULTITABLE_NLQ_REQUEST_STARTED,\n\t\tsuccessActionType: MULTITABLE_NLQ_REQUEST_SUCCESS,\n\t\terrorActionType: MULTITABLE_NLQ_REQUEST_ERROR,\n\t\tdataParam: \"data\"\n\t}\n);\n\nexport const queryBuilderEffect = createHttpEffect(\n\t\"/api/now/cmdbquerybuilder/queries/bg/saveAndExecute\",\n\t{\n\t\tmethod: \"POST\",\n\t\tbatch: false,\n\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\tstartActionType: QUERY_BUILDER_REQUEST_STARTED,\n\t\tsuccessActionType: QUERY_BUILDER_REQUEST_SUCCESS,\n\t\terrorActionType: QUERY_BUILDER_REQUEST_ERROR,\n\t\tdataParam: \"data\"\n\t}\n);\n\nexport const queryBuilderPollEffect = createHttpEffect(\n\t\"/api/now/cmdbquerybuilder/queries/:queryId/processStatus\",\n\t{\n\t\tmethod: \"GET\",\n\t\tbatch: false,\n\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\tpathParams: [\"queryId\"],\n\t\tstartActionType: QUERY_BUILDER_POLL_STARTED,\n\t\tsuccessActionType: QUERY_BUILDER_POLL_SUCCESS,\n\t\terrorActionType: QUERY_BUILDER_POLL_ERROR\n\t}\n);\n","export const STREAMING_ACTIONS = {\n\tSTREAMING_START: \"AIS_STREAMING#STRAT\",\n\tSTREAMING_END: \"AIS_STREAMING#END\",\n\tSTREAMING_READ_MORE: \"AIS_STREAMING#READ_MORE\",\n\tSTREAMING_SHOW_LESS: \"AIS_STREAMING#SHOW_LESS\",\n\tSTREAMING_SHOW_MORE: \"AIS_STREAMING#SHOW_MORE\",\n\tCHAR_LIMIT_REACHED: \"AIS_STREAMING#CHAR_LIMIT_REACHED\"\n};\n\nexport const NOW_BUTTON_BARE_CLICKED = \"NOW_BUTTON_BARE#CLICKED\";\n","import { STREAMING_ACTIONS } from \"./actions\";\nimport { parseInlineReferences } from \"./utils\";\n\nexport class StreamingProcessor {\n\tconstructor({\n\t\tdispatch,\n\t\tupdateState,\n\t\tstate,\n\t\tSTREAMING_BEHAVIOR_NAME,\n\t\ttypingSpeedInMillisecondsPerUnit = 30\n\t}) {\n\t\tthis.dispatch = dispatch;\n\t\tthis.updateState = updateState;\n\t\tthis.state = state;\n\t\tthis.STREAMING_BEHAVIOR_NAME = STREAMING_BEHAVIOR_NAME;\n\n\t\tthis.allTokens = [];\n\t\tthis.currentTokenIndex = 0;\n\t\tthis.buffer = \"\";\n\n\t\tthis.messageMap = {};\n\t\tthis.expectedSeqId = 1;\n\n\t\tthis.isProcessing = false;\n\t\tthis.receivedAllChunks = false;\n\t\tthis.allChunksProcessed = false;\n\n\t\tthis.finalContent = \"\";\n\t\tthis.finalTokens = [];\n\t\tthis.hasFinalResponse = false;\n\t\tthis.actionsFromFinalResponse = [];\n\n\t\tthis.hostElement = null;\n\t\tthis.TYPING_SPEED = typingSpeedInMillisecondsPerUnit;\n\n\t\tthis.didExceedLineLimit = false;\n\t}\n\n\tupdateMessageMap(newMessages) {\n\t\tfor (const [seqId, chunk] of Object.entries(newMessages)) {\n\t\t\tif (!this.messageMap[seqId]) {\n\t\t\t\tthis.messageMap[seqId] = chunk;\n\t\t\t}\n\t\t}\n\t\tthis.processChunksInOrder();\n\t}\n\n\thandleFinalResponse(finalResponse) {\n\t\tconst contentObj = JSON.parse(\n\t\t\tfinalResponse.model[\"columns.raw_citations\"]\n\t\t)[0];\n\t\tthis.finalContent = contentObj.content || \"\";\n\n\t\tconst { updatedText, foundCitations } = parseInlineReferences(\n\t\t\tthis.finalContent\n\t\t);\n\t\tif (Object.keys(foundCitations).length > 0) {\n\t\t\tthis.mergeCitationsState(foundCitations);\n\t\t}\n\t\tthis.finalContent = updatedText;\n\n\t\tthis.finalTokens = this.splitTextIntoUnits(this.finalContent);\n\t\tthis.hasFinalResponse = true;\n\t\tthis.actionsFromFinalResponse = finalResponse.actions || [];\n\n\t\tthis.updateState(() => [\n\t\t\t{\n\t\t\t\toperation: \"set\",\n\t\t\t\tpath: `behaviors.${this.STREAMING_BEHAVIOR_NAME}.hasFinalResponse`,\n\t\t\t\tvalue: true,\n\t\t\t\tshouldRender: true\n\t\t\t},\n\t\t\t{\n\t\t\t\toperation: \"set\",\n\t\t\t\tpath: `behaviors.${this.STREAMING_BEHAVIOR_NAME}.actionsFromFinalResponse`,\n\t\t\t\tvalue: finalResponse.actions || [],\n\t\t\t\tshouldRender: true\n\t\t\t},\n\t\t\t{\n\t\t\t\toperation: \"set\",\n\t\t\t\tpath: `behaviors.${this.STREAMING_BEHAVIOR_NAME}.kgListCitations`,\n\t\t\t\tvalue: (() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst raw = finalResponse.model?.[\"columns.kg_list_citations\"];\n\t\t\t\t\t\tif (!raw) return [];\n\t\t\t\t\t\treturn JSON.parse(raw);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.warn(\"streaming processor - bad kg_list_citations JSON\", e);\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t})(),\n\t\t\t\tshouldRender: true\n\t\t\t}\n\t\t]);\n\n\t\t// If we've already typed all tokens, do final bracket replacements now.\n\t\tif (this.allChunksProcessed) {\n\t\t\tthis.finalReplaceAll();\n\t\t}\n\t}\n\n\tprocessChunksInOrder() {\n\t\twhile (this.messageMap[this.expectedSeqId]) {\n\t\t\tconst chunk = this.messageMap[this.expectedSeqId];\n\t\t\tdelete this.messageMap[this.expectedSeqId];\n\t\t\tthis.expectedSeqId++;\n\n\t\t\tif (chunk.data.messageType === \"STREAMING\") {\n\t\t\t\tlet text = chunk.data.streamResponse || \"\";\n\n\t\t\t\tconst { updatedText, foundCitations } = parseInlineReferences(text);\n\t\t\t\tif (Object.keys(foundCitations).length > 0) {\n\t\t\t\t\tthis.mergeCitationsState(foundCitations);\n\t\t\t\t}\n\n\t\t\t\tconst tokens = this.splitTextIntoUnits(updatedText);\n\t\t\t\tthis.allTokens.push(...tokens);\n\n\t\t\t\tif (chunk.data.complete) {\n\t\t\t\t\tthis.receivedAllChunks = true;\n\t\t\t\t\tthis.dispatch(STREAMING_ACTIONS.STREAMING_END);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tthis.receivedAllChunks &&\n\t\t\tthis.currentTokenIndex >= this.allTokens.length\n\t\t) {\n\t\t\tthis.finalizeStreaming();\n\t\t} else {\n\t\t\tthis.maybeStartProcessing();\n\t\t}\n\t}\n\n\tmaybeStartProcessing() {\n\t\tif (!this.isProcessing && this.currentTokenIndex < this.allTokens.length) {\n\t\t\tthis.isProcessing = true;\n\t\t\tthis.typeWriter();\n\t\t}\n\t}\n\n\ttypeWriter() {\n\t\t// If typed everything, finalize\n\t\tif (this.currentTokenIndex >= this.allTokens.length) {\n\t\t\tthis.isProcessing = false;\n\t\t\tif (this.receivedAllChunks) {\n\t\t\t\tthis.finalizeStreaming();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// If final response is here & we already know we exceed 6 lines,\n\t\t// we can skip the rest:\n\t\tif (this.hasFinalResponse && this.didExceedLineLimit) {\n\t\t\tthis.fastForwardTyping();\n\t\t\treturn;\n\t\t}\n\n\t\t// Otherwise, type the next token\n\t\tthis.buffer += this.allTokens[this.currentTokenIndex];\n\t\tthis.currentTokenIndex++;\n\n\t\tthis.updateState(() => ({\n\t\t\toperation: \"set\",\n\t\t\tpath: `behaviors.${this.STREAMING_BEHAVIOR_NAME}.streamingText`,\n\t\t\tvalue: this.buffer,\n\t\t\tshouldRender: true\n\t\t}));\n\n\t\t// measure lines => see if we exceed 6 lines\n\t\tthis.maybeCheckIfOverflow();\n\n\t\tsetTimeout(() => this.typeWriter(), this.TYPING_SPEED);\n\t}\n\n\tfinalizeStreaming() {\n\t\tthis.isProcessing = false;\n\t\tthis.allChunksProcessed = true;\n\n\t\tif (this.hasFinalResponse) {\n\t\t\t// do final bracket replacement => entire typed text\n\t\t\tthis.finalReplaceAll();\n\t\t}\n\n\t\tthis.updateState(() => ({\n\t\t\toperation: \"set\",\n\t\t\tpath: `behaviors.${this.STREAMING_BEHAVIOR_NAME}.allChunksProcessed`,\n\t\t\tvalue: true,\n\t\t\tshouldRender: true\n\t\t}));\n\n\t\t// One last check for overflow\n\t\tthis.maybeCheckIfOverflow();\n\t}\n\n\tfastForwardTyping() {\n\t\t// Immediately finish typing\n\t\tthis.isProcessing = false;\n\t\tthis.currentTokenIndex = this.allTokens.length;\n\t\tthis.allChunksProcessed = true;\n\n\t\tif (this.hasFinalResponse) {\n\t\t\tconst finalSnippet = this.finalTokens\n\t\t\t\t.slice(0, this.allTokens.length)\n\t\t\t\t.join(\"\");\n\t\t\tthis.buffer = finalSnippet;\n\t\t} else {\n\t\t\tthis.buffer = this.allTokens.join(\"\");\n\t\t}\n\n\t\tthis.updateState(() => ({\n\t\t\toperation: \"set\",\n\t\t\tpath: `behaviors.${this.STREAMING_BEHAVIOR_NAME}.streamingText`,\n\t\t\tvalue: this.buffer,\n\t\t\tshouldRender: true\n\t\t}));\n\n\t\tthis.finalizeStreaming();\n\t}\n\n\tmaybeCheckIfOverflow() {\n\t\t// If we've already discovered we exceed 6 lines, skip measuring\n\t\tif (this.didExceedLineLimit) return;\n\t\tif (!this.hostElement) return;\n\n\t\t// Measure the clamped host (.streaming-text-container) rather than the inner\n\t\t// .streaming-text — Safari/WebKit does not propagate the parent's\n\t\t// -webkit-line-clamp clipping into the child's clientHeight, so the child\n\t\t// always reports equal heights.\n\t\tconst scrollHeight = this.hostElement.scrollHeight;\n\t\tconst clientHeight = this.hostElement.clientHeight;\n\t\tconst isOverflowing = scrollHeight > clientHeight + 1;\n\n\t\tif (isOverflowing) {\n\t\t\tthis.didExceedLineLimit = true;\n\t\t\tthis.updateState(() => ({\n\t\t\t\toperation: \"set\",\n\t\t\t\tpath: `behaviors.${this.STREAMING_BEHAVIOR_NAME}.didExceedLineLimit`,\n\t\t\t\tvalue: true,\n\t\t\t\tshouldRender: true\n\t\t\t}));\n\t\t}\n\t}\n\n\tfinalReplaceAll() {\n\t\tif (!this.finalTokens.length) return;\n\n\t\t// Replace the entire typed buffer with final tokens\n\t\tconst finalSnippet = this.finalTokens\n\t\t\t.slice(0, this.allTokens.length)\n\t\t\t.join(\"\");\n\t\tthis.buffer = finalSnippet;\n\n\t\tthis.updateState(() => ({\n\t\t\toperation: \"set\",\n\t\t\tpath: `behaviors.${this.STREAMING_BEHAVIOR_NAME}.streamingText`,\n\t\t\tvalue: this.buffer,\n\t\t\tshouldRender: true\n\t\t}));\n\t}\n\n\tmergeCitationsState(newCitations) {\n\t\tconst existing =\n\t\t\tthis.state.behaviors?.[this.STREAMING_BEHAVIOR_NAME]\n\t\t\t\t?.citationsFromStreaming || {};\n\t\tconst merged = { ...existing, ...newCitations };\n\t\tthis.updateState(() => ({\n\t\t\toperation: \"merge\",\n\t\t\tpath: `behaviors.${this.STREAMING_BEHAVIOR_NAME}.citationsFromStreaming`,\n\t\t\tvalue: merged,\n\t\t\tshouldRender: false\n\t\t}));\n\t\treturn merged;\n\t}\n\n\tupdateElement(elm) {\n\t\t// Called from view's hook-insert/hook-update\n\t\tthis.hostElement = elm;\n\t\tthis.updateState(() => ({\n\t\t\toperation: \"set\",\n\t\t\tpath: `textRef`,\n\t\t\tvalue: elm,\n\t\t\tshouldRender: false\n\t\t}));\n\t}\n\n\tsplitTextIntoUnits(text) {\n\t\tconst regex = /(\\s*\\S+\\s*|\\n)/g;\n\t\treturn text.match(regex) || [];\n\t}\n}\n","import { actionTypes } from \"@servicenow/ui-core\";\nimport { StreamingProcessor } from \"./processor\";\nimport { STREAMING_ACTIONS, NOW_BUTTON_BARE_CLICKED } from \"./actions\";\nimport { isEmpty, isEqual } from \"lodash\";\nimport { SHOW_FULL_ANSWER_CLICKED } from \"../../actions\";\n\nconst { COMPONENT_CONNECTED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nfunction getSearchRequestId(messages) {\n\tfor (const val of Object.values(messages)) {\n\t\tconst searchRequestId = val?.data?.searchRequestId;\n\t\tif (searchRequestId) return searchRequestId;\n\t}\n\treturn null;\n}\n\nconst createAndUpdateStreamingProcessor = ({\n\tdispatch,\n\tupdateState,\n\tstate,\n\tmessages,\n\tSTREAMING_BEHAVIOR_NAME,\n\ttypingSpeedInMillisecondsPerUnit,\n\tunitLimitEnabled\n}) => {\n\tconst streamingProcessor = new StreamingProcessor({\n\t\tdispatch,\n\t\tupdateState,\n\t\tstate,\n\t\tSTREAMING_BEHAVIOR_NAME,\n\t\ttypingSpeedInMillisecondsPerUnit,\n\t\tunitLimitEnabled\n\t});\n\n\tstreamingProcessor.updateMessageMap(messages);\n\n\treturn {\n\t\toperation: \"set\",\n\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.streamingProcessor`,\n\t\tvalue: streamingProcessor\n\t};\n};\n\nexport const STREAMING_BEHAVIOR_NAME = \"streaming\";\n\nexport default {\n\tname: STREAMING_BEHAVIOR_NAME,\n\tinitialState: {\n\t\tstreamingProcessor: null,\n\t\tstreamingText: \"\",\n\t\tallChunksProcessed: false,\n\t\texpanded: false, // if user hasn't expanded => clamp to 6 lines\n\t\thasFinalResponse: false,\n\t\tdidExceedLineLimit: false,\n\t\tsearchRequestId: null,\n\t\tcitations: {},\n\t\tactionsFromFinalResponse: [],\n\t\tkgListCitations: []\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]({ dispatch, updateState, properties, action }) {\n\t\t\tconst {\n\t\t\t\tpayload: { options = {} }\n\t\t\t} = action;\n\t\t\tconst {\n\t\t\t\ttypingSpeedInMillisecondsPerUnit = 30,\n\t\t\t\tunitLimitEnabled = false\n\t\t\t} = options;\n\n\t\t\tif (!isEmpty(properties.messages)) {\n\t\t\t\tupdateState(({ state }) => {\n\t\t\t\t\treturn createAndUpdateStreamingProcessor({\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tmessages: properties.messages,\n\t\t\t\t\t\tSTREAMING_BEHAVIOR_NAME,\n\t\t\t\t\t\ttypingSpeedInMillisecondsPerUnit,\n\t\t\t\t\t\tunitLimitEnabled\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tconst searchRequestId = getSearchRequestId(properties.messages);\n\t\t\t\tif (searchRequestId) {\n\t\t\t\t\tupdateState(() => ({\n\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.searchRequestId`,\n\t\t\t\t\t\tvalue: searchRequestId,\n\t\t\t\t\t\tshouldRender: false\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t[COMPONENT_PROPERTY_CHANGED]({ dispatch, action, updateState, state }) {\n\t\t\tconst {\n\t\t\t\tpayload: { name, value, previousValue, options }\n\t\t\t} = action;\n\t\t\tconst {\n\t\t\t\ttypingSpeedInMillisecondsPerUnit,\n\t\t\t\tunitLimitEnabled = false\n\t\t\t} = options;\n\n\t\t\tif (\n\t\t\t\tname === \"messages\" &&\n\t\t\t\t!isEmpty(value) &&\n\t\t\t\t!isEqual(previousValue, value)\n\t\t\t) {\n\t\t\t\tconst newSearchRequestId = getSearchRequestId(value);\n\t\t\t\tconst oldsearchRequestId =\n\t\t\t\t\tstate.behaviors?.[STREAMING_BEHAVIOR_NAME]?.searchRequestId;\n\n\t\t\t\tif (newSearchRequestId && newSearchRequestId !== oldsearchRequestId) {\n\t\t\t\t\t// reset state for new search request\n\t\t\t\t\tupdateState(() => [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.streamingProcessor`,\n\t\t\t\t\t\t\tvalue: null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.streamingText`,\n\t\t\t\t\t\t\tvalue: \"\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.allChunksProcessed`,\n\t\t\t\t\t\t\tvalue: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.expanded`,\n\t\t\t\t\t\t\tvalue: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.citations`,\n\t\t\t\t\t\t\tvalue: []\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.hasFinalResponse`,\n\t\t\t\t\t\t\tvalue: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.didExceedLineLimit`,\n\t\t\t\t\t\t\tvalue: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.searchRequestId`,\n\t\t\t\t\t\t\tvalue: newSearchRequestId,\n\t\t\t\t\t\t\tshouldRender: false\n\t\t\t\t\t\t}\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Next, create a new processor with fresh states\n\t\t\t\t\tupdateState(({ state }) =>\n\t\t\t\t\t\tcreateAndUpdateStreamingProcessor({\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tmessages: value,\n\t\t\t\t\t\t\tSTREAMING_BEHAVIOR_NAME,\n\t\t\t\t\t\t\ttypingSpeedInMillisecondsPerUnit,\n\t\t\t\t\t\t\tunitLimitEnabled\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// if same search, reuse the existing processor\n\t\t\t\t\tconst processor =\n\t\t\t\t\t\tstate.behaviors?.[STREAMING_BEHAVIOR_NAME]?.streamingProcessor;\n\t\t\t\t\tif (processor) {\n\t\t\t\t\t\t// call to update map for streaming responses\n\t\t\t\t\t\tprocessor.updateMessageMap(value);\n\t\t\t\t\t\t// call to update map for final response\n\t\t\t\t\t\tif (value.finalResponse) {\n\t\t\t\t\t\t\tprocessor.handleFinalResponse(value.finalResponse);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tupdateState(({ state }) =>\n\t\t\t\t\t\t\tcreateAndUpdateStreamingProcessor({\n\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\tmessages: value,\n\t\t\t\t\t\t\t\tSTREAMING_BEHAVIOR_NAME,\n\t\t\t\t\t\t\t\ttypingSpeedInMillisecondsPerUnit,\n\t\t\t\t\t\t\t\tunitLimitEnabled\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t[STREAMING_ACTIONS.STREAMING_END]({ updateState }) {\n\t\t\t// if needed, mark isStreamComplete, or do nothing\n\t\t\tupdateState(() => ({\n\t\t\t\toperation: \"set\",\n\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.isStreamComplete`,\n\t\t\t\tvalue: true\n\t\t\t}));\n\t\t},\n\n\t\t[NOW_BUTTON_BARE_CLICKED]({ dispatch, action, state }) {\n\t\t\t// handle \"SHOW_MORE_CLICKED\" => expand clamp, \"SHOW_LESS_CLICKED\" => re-clamp, etc.\n\t\t\tconst {\n\t\t\t\tpayload: { actionId }\n\t\t\t} = action;\n\t\t\tconst {\n\t\t\t\tproperties: { model }\n\t\t\t} = state;\n\t\t\tif (actionId === \"SHOW_LESS_CLICKED\") {\n\t\t\t\tdispatch(STREAMING_ACTIONS.STREAMING_SHOW_LESS);\n\t\t\t} else if (actionId === \"SHOW_MORE_CLICKED\") {\n\t\t\t\tdispatch(STREAMING_ACTIONS.STREAMING_SHOW_MORE);\n\t\t\t\tdispatch(SHOW_FULL_ANSWER_CLICKED, {\n\t\t\t\t\taction: {\n\t\t\t\t\t\tactionPayload: {}\n\t\t\t\t\t},\n\t\t\t\t\tmodel\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t[STREAMING_ACTIONS.STREAMING_SHOW_LESS]({ updateState }) {\n\t\t\tupdateState(() => ({\n\t\t\t\toperation: \"set\",\n\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.expanded`,\n\t\t\t\tvalue: false\n\t\t\t}));\n\t\t},\n\n\t\t[STREAMING_ACTIONS.STREAMING_SHOW_MORE]({ updateState }) {\n\t\t\tupdateState(() => ({\n\t\t\t\toperation: \"set\",\n\t\t\t\tpath: `behaviors.${STREAMING_BEHAVIOR_NAME}.expanded`,\n\t\t\t\tvalue: true\n\t\t\t}));\n\t\t}\n\t}\n};\n","import { isEmpty } from \"lodash\";\nimport {\n\tNOW_BUTTON_CLICKED,\n\tNOW_DROPDOWN_ITEM_CLICKED,\n\tNOW_SELECT_ITEM_SET,\n\tNOW_BUTTON_BARE_CLICKED,\n\tNOW_BUTTON_ICONIC_CLICKED,\n\tNOW_POPOVER_OPEN_SET,\n\tNOW_RADIO_BUTTON_VALUE_SET,\n\tNOW_PILL_SELECTED,\n\tNOW_TEXT_LINK_CLICKED,\n\tNOW_TEXTAREA_INPUT,\n\tFETCH_LIST_DATA,\n\tRECORD_LIST_DATA_FETCH_COMPLETED,\n\tRECORD_LIST_DATA_FETCH_FAILED,\n\tRECORD_LIST_DATA_FETCH_STARTED,\n\tATTACHMENT_CLICKED,\n\tFEEDBACK_ACTION_CLICKED,\n\tNOW_CARD_CLICKED,\n\tMULTITABLE_NLQ_REQUEST,\n\tMULTITABLE_NLQ_REQUEST_STARTED,\n\tMULTITABLE_NLQ_REQUEST_SUCCESS,\n\tMULTITABLE_NLQ_REQUEST_ERROR,\n\tQUERY_BUILDER_REQUEST,\n\tQUERY_BUILDER_REQUEST_STARTED,\n\tQUERY_BUILDER_REQUEST_SUCCESS,\n\tQUERY_BUILDER_REQUEST_ERROR,\n\tQUERY_BUILDER_POLL,\n\tQUERY_BUILDER_POLL_STARTED,\n\tQUERY_BUILDER_POLL_SUCCESS,\n\tQUERY_BUILDER_POLL_ERROR\n} from \"./actions\";\n\nimport {\n\thandleReasonSelection,\n\tcloseFeedbackDialog,\n\thandleIconicButtonClick,\n\tnowButtonBareClicked,\n\thandleComponentConnected,\n\thandleComponentDOMTreeReady,\n\thandlePillSelected,\n\thandleFeedbackOtherInput,\n\tfetchListCompleteEffect,\n\tfetchListEffect,\n\thandleComponentPropertyChanged,\n\tbuttonOrLinkClicked,\n\tdropDownItemClicked,\n\trequestStarted,\n\trequestFailed,\n\tapplyMultiTableEffect,\n\tapplyMultiTableSuccess,\n\tqueryBuilderEffect,\n\tqueryBuilderPollEffect,\n\tqueryBuilderRequestSuccess,\n\tqueryBuilderPollSuccess,\n\tgeniusCardActionClicked\n} from \"./effects\";\nimport { actionTypes } from \"@servicenow/ui-core\";\nimport get from \"lodash/get\";\nconst {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_TREE_RENDERED\n} = actionTypes;\n\nimport { isSynthesized } from \"./common/streaming/utils\";\nimport { STREAMING_BEHAVIOR_NAME } from \"./common/streaming/streaming-behavior\";\nimport { CITATION_TYPES } from \"./constants\";\n\nconst commonQuery = (layoutQuery = \"listLayoutQuery\") => `\ntableLabel\nfixedQuery\nallColumns {\n  columnName\n  columnData {\n    fullLabel\n  }\n}\nlayoutQuery {\n  ...${layoutQuery}\n}\n  `;\n\nconst fragments = `\n  fragment rowQuery on GlideListLayout_QueryRowType {\n    uniqueId\n    displayValue\n    rowData {\n      columnName\n      columnData {\n        displayValue\n        value\n        documentIdReference\n      }\n    }\n  }\n  `;\n\nconst groupedRow = `\n  ... on GlideListLayout_GroupedQueryRowType {\n    count\n    query {\n      ...rowQuery\n    }\n  }\n`;\n\nconst singleRow = `\n  ... on GlideListLayout_QueryRowType {\n    ...rowQuery\n  }`;\n\nconst listLayoutQueryFragment = `\nfragment listLayoutQuery on GlideListLayout_ListLayoutQueryType {\n  table\n  queryRows {\n    ${groupedRow}\n    ${singleRow}\n  }\n}\n`;\nexport const betterListModel = `\nquery ($columns: String, $listId: String, $maxColumns: Int, $limit: Int, $offset: Int, $groupedOffset: Int, $parentRecordSysId: String, $parentTable: String, $query: String, $workspaceConfigId: String, $relatedListName: String, $source: String, $runQuery: Boolean!,$table: String!, $view: String, $runHighlightedValuesQuery: Boolean!, $isDeclarativeActionsRequired: Boolean!, $tiny: String, $queryCategory: String) {\n  GlideListLayout_Query {\n    getListLayout(columns: $columns  listId: $listId, maxColumns: $maxColumns, limit: $limit, offset: $offset, groupedOffset: $groupedOffset, parentRecordSysId: $parentRecordSysId, parentTable: $parentTable,workspaceConfigId: $workspaceConfigId, query: $query, relatedListName: $relatedListName, source: $source, runQuery: $runQuery,table: $table, view: $view, runHighlightedValuesQuery: $runHighlightedValuesQuery, isDeclarativeActionsRequired: $isDeclarativeActionsRequired, tiny: $tiny, queryCategory: $queryCategory) {\n        ${commonQuery(\"listLayoutQuery\")}\n      }\n    }\n  }\n  ${fragments}\n  ${listLayoutQueryFragment}\n  `;\n\nconst fetchListInterceptor = {\n\tafter(context) {\n\t\tconst { effects } = context;\n\t\tconst { args } = effects[0];\n\t\tconst variableList = [\n\t\t\t\"table\",\n\t\t\t\"view\",\n\t\t\t\"columns\",\n\t\t\t\"query\",\n\t\t\t\"pagination\",\n\t\t\t\"limit\",\n\t\t\t\"offset\",\n\t\t\t\"groupPagination\",\n\t\t\t\"parentTable\",\n\t\t\t\"parentRecordSysId\",\n\t\t\t\"queryCategory\",\n\t\t\t\"relatedListName\",\n\t\t\t\"maxColumns\",\n\t\t\t\"workspaceConfigId\",\n\t\t\t\"listId\",\n\t\t\t\"runHighlightedValuesQuery\",\n\t\t\t\"runQuery\",\n\t\t\t\"isDeclarativeActionsRequired\",\n\t\t\t\"source\"\n\t\t];\n\t\treturn {\n\t\t\t...context,\n\t\t\teffects: [\n\t\t\t\t{\n\t\t\t\t\t...effects[0],\n\t\t\t\t\targs: [\n\t\t\t\t\t\tbetterListModel,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...args[1],\n\t\t\t\t\t\t\tvariableList\n\t\t\t\t\t\t},\n\t\t\t\t\t\targs[2],\n\t\t\t\t\t\targs[3],\n\t\t\t\t\t\targs[4],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...args[5],\n\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\t...args[5].action,\n\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t...args[5].action.payload\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n};\n\n// Streamed inline citation markers (parsed via parseInlineReferences) carry a populated\n// `url`, but the matching finalResponse citation entry's action.actionPayload.url can arrive\n// blank (navigation is otherwise resolved server/host-side from sysId + table). Backfill it so\n// disableHref={false} has a real url to fall back to.\nfunction backfillActionPayloadUrl(citationData, inlineUrl) {\n\tif (!inlineUrl || isEmpty(citationData?.propValues?.actions)) return;\n\tcitationData.propValues.actions.forEach(action => {\n\t\tif (action?.actionPayload && !action.actionPayload.url) {\n\t\t\taction.actionPayload.url = inlineUrl;\n\t\t}\n\t});\n}\n\nexport default {\n\t[NOW_BUTTON_CLICKED]: {\n\t\teffect: buttonOrLinkClicked,\n\t\tstopPropagation: true\n\t},\n\t[NOW_DROPDOWN_ITEM_CLICKED]: {\n\t\teffect: dropDownItemClicked,\n\t\tstopPropagation: true\n\t},\n\t[NOW_SELECT_ITEM_SET]: {\n\t\teffect: dropDownItemClicked,\n\t\tstopPropagation: true\n\t},\n\t[NOW_BUTTON_BARE_CLICKED]: {\n\t\teffect: nowButtonBareClicked,\n\t\tstopPropagation: true\n\t},\n\t[NOW_BUTTON_ICONIC_CLICKED]: {\n\t\teffect: coeffects => {\n\t\t\tconst { id } = get(coeffects, \"action.payload.action\", \"\");\n\t\t\tconst dispatch = get(coeffects, \"dispatch\");\n\t\t\tif (id != \"download\") {\n\t\t\t\tdispatch(FEEDBACK_ACTION_CLICKED, {\n\t\t\t\t\tactionId: get(coeffects, \"action.payload.actionId\", \"\"),\n\t\t\t\t\tvalue: get(coeffects, \"action.payload.value\")\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[FEEDBACK_ACTION_CLICKED]: {\n\t\teffect: handleIconicButtonClick,\n\t\tstopPropagation: true\n\t},\n\t[NOW_POPOVER_OPEN_SET]: {\n\t\teffect: closeFeedbackDialog,\n\t\tstopPropagation: true\n\t},\n\t[NOW_RADIO_BUTTON_VALUE_SET]: {\n\t\teffect: handleReasonSelection,\n\t\tstopPropagation: true\n\t},\n\t[COMPONENT_CONNECTED]: {\n\t\teffect: handleComponentConnected,\n\t\tstopPropagation: true\n\t},\n\t[COMPONENT_DOM_TREE_READY]: {\n\t\teffect: handleComponentDOMTreeReady,\n\t\tstopPropagation: true\n\t},\n\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\teffect: handleComponentPropertyChanged,\n\t\tstopPropagation: true\n\t},\n\t[NOW_PILL_SELECTED]: {\n\t\teffect: handlePillSelected,\n\t\tstopPropagation: true\n\t},\n\t[NOW_TEXT_LINK_CLICKED]: {\n\t\teffect: buttonOrLinkClicked,\n\t\tstopPropagation: true\n\t},\n\t[NOW_TEXTAREA_INPUT]: {\n\t\teffect: handleFeedbackOtherInput,\n\t\tstopPropagation: true\n\t},\n\t[FETCH_LIST_DATA]: {\n\t\t...fetchListEffect,\n\t\tinterceptors: [fetchListInterceptor],\n\t\tstopPropagation: true\n\t},\n\t[RECORD_LIST_DATA_FETCH_STARTED]: {\n\t\teffect: requestStarted,\n\t\tstopPropagation: true\n\t},\n\t[RECORD_LIST_DATA_FETCH_COMPLETED]: {\n\t\teffect: fetchListCompleteEffect,\n\t\tstopPropagation: true\n\t},\n\t[RECORD_LIST_DATA_FETCH_FAILED]: {\n\t\teffect: requestFailed,\n\t\tstopPropagation: true\n\t},\n\t[MULTITABLE_NLQ_REQUEST]: {\n\t\t...applyMultiTableEffect,\n\t\tstopPropagation: true\n\t},\n\t[MULTITABLE_NLQ_REQUEST_STARTED]: {\n\t\teffect: requestStarted,\n\t\tstopPropagation: true\n\t},\n\t[MULTITABLE_NLQ_REQUEST_SUCCESS]: {\n\t\teffect: applyMultiTableSuccess,\n\t\tstopPropagation: true\n\t},\n\t[MULTITABLE_NLQ_REQUEST_ERROR]: {\n\t\teffect: requestFailed,\n\t\tstopPropagation: true\n\t},\n\t[QUERY_BUILDER_REQUEST]: {\n\t\t...queryBuilderEffect,\n\t\tstopPropagation: true\n\t},\n\t[QUERY_BUILDER_REQUEST_STARTED]: {\n\t\teffect: requestStarted,\n\t\tstopPropagation: true\n\t},\n\t[QUERY_BUILDER_REQUEST_SUCCESS]: {\n\t\teffect: queryBuilderRequestSuccess,\n\t\tstopPropagation: true\n\t},\n\t[QUERY_BUILDER_REQUEST_ERROR]: {\n\t\teffect: requestFailed,\n\t\tstopPropagation: true\n\t},\n\t[QUERY_BUILDER_POLL]: {\n\t\t...queryBuilderPollEffect,\n\t\tstopPropagation: true\n\t},\n\t[QUERY_BUILDER_POLL_STARTED]: {\n\t\teffect: requestStarted,\n\t\tstopPropagation: true\n\t},\n\t[QUERY_BUILDER_POLL_SUCCESS]: {\n\t\teffect: queryBuilderPollSuccess,\n\t\tstopPropagation: true\n\t},\n\t[QUERY_BUILDER_POLL_ERROR]: {\n\t\teffect: requestFailed,\n\t\tstopPropagation: true\n\t},\n\t[ATTACHMENT_CLICKED]: {\n\t\teffect: coeffects => {\n\t\t\tconst { id } = get(coeffects, \"action.payload.action\", \"\");\n\t\t\t// const dispatch = get(coeffects, 'dispatch');\n\t\t\tif (id === \"download\") {\n\t\t\t\t//Placeholder when attachment urls is being returned for future devlopment\n\t\t\t}\n\t\t}\n\t},\n\t[NOW_CARD_CLICKED]: {\n\t\teffect: geniusCardActionClicked\n\t},\n\t[COMPONENT_TREE_RENDERED]({ state, updateState }) {\n\t\tconst {\n\t\t\tproperties,\n\t\t\tbehaviors,\n\t\t\ttextRef,\n\t\t\tcitationsFromSynthesizedResponse\n\t\t} = state;\n\t\tif (!textRef) return;\n\n\t\tconst {\n\t\t\tmessages,\n\t\t\tcitations,\n\t\t\tgrType,\n\t\t\tcanAskFollowUp,\n\t\t\tdisableHref\n\t\t} = properties;\n\t\tconst { finalResponse } = messages || {};\n\t\tconst citationsFromStreaming =\n\t\t\tbehaviors?.[STREAMING_BEHAVIOR_NAME]?.citationsFromStreaming;\n\t\tconst allChunksProcessed =\n\t\t\tbehaviors?.[STREAMING_BEHAVIOR_NAME]?.allChunksProcessed;\n\n\t\t// Decide which citations to use\n\t\tconst isSynthesizedAndNotStreaming =\n\t\t\tisSynthesized(grType) && !isEmpty(citations) && isEmpty(messages);\n\t\tconst citationsForDisplay = isSynthesizedAndNotStreaming\n\t\t\t? citations\n\t\t\t: finalResponse?.citations || {};\n\t\tconst inlineCitations = isSynthesizedAndNotStreaming\n\t\t\t? citationsFromSynthesizedResponse\n\t\t\t: citationsFromStreaming;\n\t\tif (isEmpty(citationsForDisplay)) return;\n\t\tif (isEmpty(inlineCitations)) return;\n\n\t\t// Only replace citations with popovers after streaming completes (allChunksProcessed === true) to avoid Snabbdom crash\n\t\tif (!isSynthesizedAndNotStreaming && !allChunksProcessed) {\n\t\t\treturn;\n\t\t}\n\t\ttextRef\n\t\t\t.querySelectorAll(\n\t\t\t\t\".replaced-text-people, .replaced-text-kb, .replaced-text-catalog, .replaced-text-skill, .replaced-text-kg, .replaced-text-additional-sources\"\n\t\t\t)\n\t\t\t.forEach(el => {\n\t\t\t\tconst sysId = el.classList[1];\n\t\t\t\tconst itemKey = Object.keys(inlineCitations).find(\n\t\t\t\t\tk =>\n\t\t\t\t\t\tinlineCitations[k]?.source_sys_id === sysId ||\n\t\t\t\t\t\tinlineCitations[k]?.sys_id === sysId\n\t\t\t\t);\n\t\t\t\tif (!itemKey) return;\n\t\t\t\tconst citation = inlineCitations[itemKey];\n\n\t\t\t\tconst { source_type, number, conversational } = citation;\n\t\t\t\tconst popoverEle = document.createElement(\"citation-popover\");\n\t\t\t\tpopoverEle.index = number;\n\t\t\t\tpopoverEle.disableHref = disableHref;\n\n\t\t\t\t// Find the right citation data\n\t\t\t\tif (\n\t\t\t\t\tsource_type === CITATION_TYPES.KB ||\n\t\t\t\t\tsource_type === CITATION_TYPES.EXTERNAL_DOCUMENT ||\n\t\t\t\t\tsource_type === CITATION_TYPES.ATTACHMENT\n\t\t\t\t) {\n\t\t\t\t\tpopoverEle.sourceType = source_type;\n\t\t\t\t\tpopoverEle.data = citationsForDisplay[\n\t\t\t\t\t\tCITATION_TYPES.KB\n\t\t\t\t\t]?.citations.find(\n\t\t\t\t\t\tc => c?.source_sys_id === sysId || c?.sys_id === sysId\n\t\t\t\t\t);\n\t\t\t\t} else if (source_type === CITATION_TYPES.CATALOG) {\n\t\t\t\t\tpopoverEle.sourceType = CITATION_TYPES.CATALOG;\n\t\t\t\t\tpopoverEle.conversational = conversational;\n\t\t\t\t\tpopoverEle.canAskFollowUp = canAskFollowUp;\n\t\t\t\t\tpopoverEle.data = citationsForDisplay[\n\t\t\t\t\t\tCITATION_TYPES.CATALOG\n\t\t\t\t\t]?.citations.find(\n\t\t\t\t\t\tc => c.propValues?.model?.[\"columns.sys_id\"] === sysId\n\t\t\t\t\t);\n\t\t\t\t\tif (!disableHref) {\n\t\t\t\t\t\tbackfillActionPayloadUrl(popoverEle.data, citation.url);\n\t\t\t\t\t}\n\t\t\t\t} else if (source_type === CITATION_TYPES.PEOPLE) {\n\t\t\t\t\tpopoverEle.sourceType = CITATION_TYPES.PEOPLE;\n\t\t\t\t\tpopoverEle.data = citationsForDisplay[\n\t\t\t\t\t\tCITATION_TYPES.PEOPLE\n\t\t\t\t\t]?.citations.find(c => c.propValues?.model?.sys_id === sysId);\n\t\t\t\t} else if (source_type === CITATION_TYPES.SKILL) {\n\t\t\t\t\tpopoverEle.sourceType = CITATION_TYPES.SKILL;\n\t\t\t\t\tpopoverEle.data = citationsForDisplay[\n\t\t\t\t\t\tCITATION_TYPES.SKILL\n\t\t\t\t\t]?.citations.find(\n\t\t\t\t\t\tc => c.propValues?.model?.[\"columns.sys_id\"] === sysId\n\t\t\t\t\t);\n\t\t\t\t} else if (source_type === CITATION_TYPES.KG) {\n\t\t\t\t\t// all other tables are considered KG\n\t\t\t\t\tpopoverEle.sourceType = CITATION_TYPES.KG;\n\t\t\t\t\tpopoverEle.data = citationsForDisplay[\n\t\t\t\t\t\tCITATION_TYPES.KG\n\t\t\t\t\t]?.citations.find(c => c.propValues?.model?.sys_id === sysId);\n\t\t\t\t} else if (source_type === CITATION_TYPES.AGENT) {\n\t\t\t\t\tpopoverEle.sourceType = CITATION_TYPES.AGENT;\n\t\t\t\t\tpopoverEle.data = citationsForDisplay[\n\t\t\t\t\t\tCITATION_TYPES.AGENT\n\t\t\t\t\t]?.citations.find(c => c.propValues?.model?.sys_id === sysId);\n\t\t\t\t} else if (source_type === CITATION_TYPES.ADDITIONAL_SOURCES) {\n\t\t\t\t\tpopoverEle.sourceType = CITATION_TYPES.ADDITIONAL_SOURCES;\n\t\t\t\t\tpopoverEle.data = citationsForDisplay[\n\t\t\t\t\t\tCITATION_TYPES.ADDITIONAL_SOURCES\n\t\t\t\t\t]?.citations.find(\n\t\t\t\t\t\tc =>\n\t\t\t\t\t\t\tc.propValues?.model?.[\"columns.sys_id\"] === sysId ||\n\t\t\t\t\t\t\tc.propValues?.sysId === sysId\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Unknown citation type: ${source_type}`);\n\t\t\t\t}\n\n\t\t\t\tel.replaceWith(popoverEle);\n\t\t\t});\n\n\t\tif (isSynthesizedAndNotStreaming) {\n\t\t\t// calculate element height and check overflow when synthesized and not streaming\n\t\t\t// Streaming has its own machanism in the processor for identifying overflow\n\t\t\t// Measure the clamped parent (textRef) rather than the inner .streaming-text —\n\t\t\t// Safari/WebKit does not propagate the parent's -webkit-line-clamp clipping\n\t\t\t// into the child's clientHeight, so the child always reports equal heights.\n\t\t\tif (!textRef) return;\n\n\t\t\tconst scrollHeight = textRef.scrollHeight;\n\t\t\tconst clientHeight = textRef.clientHeight;\n\t\t\tconst isOverflowing = scrollHeight > clientHeight + 1;\n\t\t\tupdateState({\n\t\t\t\tsynthesizedGeniusResultCanExpand: isOverflowing\n\t\t\t});\n\t\t}\n\t}\n};\n","export const initialState = {\n\topenSplitButtonDropdown: false,\n\tfeedbackValue: 0,\n\topenFeedbackDialog: false,\n\tfeedbackReason: \"\",\n\tfeedbackOther: \"\",\n\ttoolTipRef: null,\n\tshouldTruncate: false,\n\tdescriptionCollapsed: false,\n\ttableMatches: [],\n\tshowAlert: false,\n\tshowMoreClicked: false,\n\tactiveTable: {\n\t\tname: \"\",\n\t\tlabel: \"\",\n\t\tlogID: \"\",\n\t\tsource: \"\",\n\t\ttableDefinitions: {\n\t\t\trowDefinitions: {},\n\t\t\tcolumnDefinitions: {}\n\t\t}\n\t},\n\tnlqTableDefinitionsLoading: true,\n\tqueueUpdateShouldTruncate: null,\n\ttextRef: null,\n\tcitationsFromSynthesizedResponse: {},\n\tkgListCitations: [],\n\tsynthesizedMarkdownText: \"\",\n\tsynthesizedGeniusResultExpanded: false,\n\tsynthesizedGeniusResultCanExpand: false\n};\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport rtlBehavior from \"@servicenow/behavior-rtl\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\nimport view from \"./view\";\nimport styles from \"./styles.scss\";\nimport actionHandlers from \"./actionHandlers\";\nimport {\n\tHORIZONTAL,\n\tVERTICAL,\n\tHORIZONTAL_EQUAL,\n\tMOBILE_MEDIA_WIDTH,\n\tGR_TYPES\n} from \"./constants\";\n\nimport truncationBehavior from \"@servicenow/behavior-truncation\";\nimport tooltipBehavior from \"@servicenow/behavior-tooltip\";\nimport { initialState } from \"./common/initialState\";\nimport streamingBehavior from \"./common/streaming/streaming-behavior\";\n\n/**\n * Seismic component to build genius cards.\n *\n * ```jsx\n * <sn-search-genius-card-assist\n *     actions={[\n *         {\n *             assignmentId: '42fd3e5273511010c342d5fdbdf6a70e',\n *             name: 'activate_user',\n *             label: 'Activate',\n *         },\n *         {\n *             assignmentId: 'e3a173c073151010c342d5fdbdf6a7a2',\n *             name: 'call_number',\n *             label: 'Call Number',\n *         },\n *     ]}\n *     model={{\n *         name: 'Mac Marksberry',\n *         home_phone: '8581234567',\n *         location: 'Bockenheimer Landstraße 123, Frankfurt',\n *         department: 'Customer Support',\n *         sysId: 'fd826bf03710200044e0bfc8bcbe5d30',\n *         sys_id: 'fd826bf03710200044e0bfc8bcbe5d30',\n *         table: 'sys_user',\n *     }}\n *     identifier=\"Hyderabad, India\"\n *     identifierCriticalText=\"4:30 pm\"\n *     identifierFontSize=\"sm\"\n *     heading=\"Samina Arizmendi\"\n *     headingFontSize=\"xl\"\n *     marker={{\n *         type: 'avatar',\n *         value: '12245411112324da1.iix',\n *     }}\n *     labelValuesInfo={ labelValues: [], align: 'horizontal' }\n *     description={{\n *         type: 'stacked',\n *         values: [\n *             'Manager, Marketing Systems',\n *             'Global Marketing Operations Department',\n *         ],\n *     }}\n *     allowFeedback\n *     feedbackOptions={[\n *         {id: 'Wrong Intent', label: 'I am not looking for a person'},\n *         {id: 'Wrong Result', label: 'This is not the person I am looking for'}\n *     ]}\n * \t   grType=\"AI_SEARCH\"\n * />\n *\n * ```\n *\n * @seismicElement sn-search-genius-card-assist\n * @summary Seismic component to build genius cards.\n */\ncreateCustomElement(\"sn-search-genius-card-assist\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tinitialState: initialState,\n\tproperties: {\n\t\t/**\n\t\t * This property specifies the metadata for the actions to render in the genius card at the footer.\n\t\t * @type {array}\n\t\t */\n\t\tactions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This is an object that contains data associated to the card.\n\t\t * @type {object}\n\t\t */\n\t\tmodel: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the identifier text to render.\n\t\t * @type {string}\n\t\t */\n\t\tidentifier: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to identifier section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tidentifierFontSize: {\n\t\t\tdefault: \"sm\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies critical text to render next to the identifier.\n\t\t * This text is rendered in red.\n\t\t * @type {string}\n\t\t */\n\t\tidentifierCriticalText: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the heading for the card.\n\t\t * @type {string}\n\t\t */\n\t\theading: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the heading section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\theadingFontSize: {\n\t\t\tdefault: \"xl\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the marker for the genius card. Can render an icon, avatar, or image\n\t\t * @type ('image' | 'avatar' | 'icon')\n\t\t */\n\t\tmarker: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\tsearchProfile: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\tutterance: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * List the label values to render in the card in place of description.\n\t\t * @type {object}\n\t\t * @default { labelValues: [], align: 'horizontal' }\n\t\t */\n\t\tlabelValuesInfo: {\n\t\t\tdefault: {\n\t\t\t\tlabelValues: [],\n\t\t\t\talign: HORIZONTAL\n\t\t\t},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tlabelValues: {\n\t\t\t\t\t\ttype: \"array\"\n\t\t\t\t\t},\n\t\t\t\t\talign: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: [VERTICAL, HORIZONTAL, HORIZONTAL_EQUAL]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the description text(s) for the genius card.\n\t\t * Can render up to two lines of description text or one HTML snippet.\n\t\t * When using the HTML type, only the first item of the values array will be rendered.\n\t\t * Use string value for a single description text.\n\t\t * If you pass in the object, it expects this format\n\t\t * ```jsx\n\t\t * {\n\t\t *     type: 'stacked' | 'html',\n\t\t *     values: []\n\t\t * }\n\t\t * ```\n\t\t * @type {string} | {object}\n\t\t */\n\t\tdescription: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Should the thumbs up/thumbs down feedback buttons be shown\n\t\t * @type {boolean}\n\t\t */\n\t\tallowFeedback: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Options to show in the dropdown menu for negative feedback (thumbs down) reasons\n\t\t * @type {array}\n\t\t */\n\t\tfeedbackOptions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\tcitations: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\tattachments: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables the feedback dropdown and intent radio buttons for the card (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingFeedback: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered in platform global search;\n\t\t * the component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the text to show in the highlighted value in the header.\n\t\t * @type {string}\n\t\t */\n\t\thighlightedText: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the icon to show before the highlighted text.\n\t\t * @type {string}\n\t\t */\n\t\thighlightedTextIcon: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the header highlighted value should show a tooltip on hover;\n\t\t * if true, the tooltip indicates the answer was generated by OpenAI.\n\t\t */\n\t\tshowHeaderTooltip: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the identifier should be at the bottom of the card.\n\t\t * @type {boolean}\n\t\t */\n\t\tidentifierAtBottom: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the 'About' section should appear at the bottom of the genius card.\n\t\t * This section summarizes how the genius result is generated.\n\t\t */\n\t\tshowAboutInfo: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the url to documentation that explains how the genius result is generated.\n\t\t */\n\t\tdocumentationUrl: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the type of GR AI_SEARCH or NLQ\n\t\t */\n\t\tgrType: {\n\t\t\tdefault: GR_TYPES.AI_SEARCH,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the response for NLQ type GR\n\t\t */\n\t\tresponse: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the view article button should be rendered as a link.\n\t\t * @type {boolean}\n\t\t */\n\t\tshowActionAsLink: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the source link label for genius result.\n\t\t * @type {string}\n\t\t */\n\t\tsource: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered for OneBox experience;\n\t\t * @type {boolean}\n\t\t */\n\t\tisOneBox: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tdefault: {}\n\t\t},\n\t\t/**\n\t\t * This property specifies if we should show Ask follow up button for sythesized response\n\t\t */\n\t\tcanAskFollowUp: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if hyperlinks within the synthesized/streaming response markdown\n\t\t * should open in a new tab.\n\t\t * @type {boolean}\n\t\t */\n\t\tforceNewTab: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the new href functionality for search genius result navigation should be disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t}\n\t},\n\tactionHandlers,\n\tstyles,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: rtlBehavior\n\t\t},\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tmobileQuery: `(max-width: ${MOBILE_MEDIA_WIDTH})`\n\t\t\t}\n\t\t},\n\t\ttruncationBehavior,\n\t\ttooltipBehavior,\n\t\t{\n\t\t\tbehavior: streamingBehavior,\n\t\t\toptions: {\n\t\t\t\ttypingSpeedInMillisecondsPerUnit: 50\n\t\t\t}\n\t\t}\n\t]\n});\n","import isEqual from \"lodash/isEqual\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { SOURCE_LABEL } from \"../constants\";\nimport sharepoint from \"../images/sharepoint.svg\";\nimport internalSources from \"../images/servicenow.svg\";\nconst view = ({ citations }) => {\n\tconst showImage = sourceLabel => {\n\t\treturn (\n\t\t\t<div className=\"genius-card-action-citation-image-mini\">\n\t\t\t\t<now-image\n\t\t\t\t\tsrc={isEqual(sourceLabel, \"external\") ? sharepoint : internalSources}\n\t\t\t\t\twidth={10}\n\t\t\t\t\talt={\"alt\"}\n\t\t\t\t\tfit=\"fill\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t};\n\tif (!isEmpty(citations)) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<div className=\"genius-card-action-label-mini\">\n\t\t\t\t\t<span className=\"source-label\">{SOURCE_LABEL}</span>\n\t\t\t\t\t{citations.map(({ source }) => showImage(source))}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n};\nexport default view;\n","import isEmpty from \"lodash/isEmpty\";\n\nimport Description from \"../contents/description\";\nimport Marker from \"../contents/marker\";\nimport Header from \"../contents/heading\";\nimport Footer from \"../contents/miniFooter\";\nimport { FONT_SIZES, GR_TYPES, NLQ_MULTI_TABLE_MINI_TITLE } from \"../constants\";\nimport { getNLQMiniThumbnailSubtitle } from \"../utils\";\n\nconst view = ({\n\theading,\n\tmarker,\n\tdescription,\n\tisGlobal,\n\tshouldTruncate,\n\tupdateState,\n\tmodel,\n\tisMobile,\n\tisOneBox,\n\tgrType,\n\tresponse,\n\tcitations,\n\tthumbnailHeader\n}) => (\n\t<div\n\t\tclass={{\n\t\t\t\"genius-card-thumbnail\": true,\n\t\t\t\"-global\": isGlobal\n\t\t}}\n\t>\n\t\t<span data-truncation className=\"genius-card-header\">\n\t\t\t{thumbnailHeader}\n\t\t</span>\n\t\t{grType === GR_TYPES.NLQ ? (\n\t\t\t<div>\n\t\t\t\t<Header\n\t\t\t\t\theading={\n\t\t\t\t\t\tmodel[\"columns.multiTable\"] === \"true\"\n\t\t\t\t\t\t\t? NLQ_MULTI_TABLE_MINI_TITLE\n\t\t\t\t\t\t\t: JSON.parse(response)[0].label\n\t\t\t\t\t}\n\t\t\t\t\theadingFontSize={FONT_SIZES.MD}\n\t\t\t\t\tisMini\n\t\t\t\t\tisOneBox={isOneBox}\n\t\t\t\t\tisMobile={isMobile}\n\t\t\t\t/>\n\t\t\t\t<div className=\"genius-card_nlq__description-text\">\n\t\t\t\t\t{model[\"columns.multiTable\"] === \"true\"\n\t\t\t\t\t\t? getNLQMiniThumbnailSubtitle(response)\n\t\t\t\t\t\t: JSON.parse(response)[0].name}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t) : (\n\t\t\t<div className=\"genius-card-thumbnail-body\">\n\t\t\t\t{isEmpty(marker) ? null : (\n\t\t\t\t\t<div className=\"genius-card-body__column\">\n\t\t\t\t\t\t<Marker marker={marker} isGlobal={isGlobal} isMini />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className=\"genius-card-body__column -truncate\">\n\t\t\t\t\t<Header\n\t\t\t\t\t\theading={heading}\n\t\t\t\t\t\theadingFontSize={FONT_SIZES.MD}\n\t\t\t\t\t\tisMini\n\t\t\t\t\t\tisOneBox={isOneBox}\n\t\t\t\t\t\tisMobile={isMobile}\n\t\t\t\t\t/>\n\t\t\t\t\t<Description\n\t\t\t\t\t\tdescription={description}\n\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\tshouldTruncate={shouldTruncate}\n\t\t\t\t\t\tupdateState={updateState}\n\t\t\t\t\t\tisMini\n\t\t\t\t\t/>\n\t\t\t\t\t<Footer isMini model={model.model} citations={citations} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)}\n\t</div>\n);\n\nexport default view;\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\nimport Thumbnail from \"../contents/thumbnail\";\nimport { GR_MINI_SELECETED } from \"../actions\";\nimport { KEYCODE } from \"../constants\";\n\nconst view = (state, { updateState, dispatch }) => {\n\tconst {\n\t\tproperties: { isGlobal, isActive, grType, response },\n\t\tbehaviors: { mediaQuery },\n\t\tshouldTruncate,\n\t\ttableMatches,\n\t\tactiveTable\n\t} = state;\n\tconst { properties } = state;\n\tconst isMobile = mediaQuery.mobileQuery;\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t\"genius-card-container\": true,\n\t\t\t\t\"-global\": isGlobal,\n\t\t\t\t\"-active\": isActive,\n\t\t\t\t\"-thumbnail\": true\n\t\t\t}}\n\t\t\trole=\"button\"\n\t\t\ttabIndex={0}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(GR_MINI_SELECETED, { ...properties });\n\t\t\t}}\n\t\t\ton-keydown={event => {\n\t\t\t\tif (event.code === KEYCODE.ENTER || event.code === KEYCODE.SPACE) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tdispatch(GR_MINI_SELECETED, { ...properties });\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<Thumbnail\n\t\t\t\t{...properties}\n\t\t\t\tshouldTruncate={shouldTruncate}\n\t\t\t\ttableMatches={tableMatches}\n\t\t\t\tactiveTable={activeTable}\n\t\t\t\tupdateState={updateState}\n\t\t\t\tisMobile={isMobile}\n\t\t\t\tgrType={grType}\n\t\t\t\tresponse={response}\n\t\t\t\tisOneBox\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport rtlBehavior from \"@servicenow/behavior-rtl\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\nimport view from \"./view\";\nimport styles from \"../styles.scss\";\nimport {\n\tHORIZONTAL,\n\tVERTICAL,\n\tHORIZONTAL_EQUAL,\n\tMOBILE_MEDIA_WIDTH,\n\tGR_TYPES\n} from \"../constants\";\n\nimport truncationBehavior from \"@servicenow/behavior-truncation\";\nimport tooltipBehavior from \"@servicenow/behavior-tooltip\";\n\n/**\n * Seismic component to build genius cards.\n *\n * ```jsx\n * <sn-search-genius-card-assist\n *     actions={[\n *         {\n *             assignmentId: '42fd3e5273511010c342d5fdbdf6a70e',\n *             name: 'activate_user',\n *             label: 'Activate',\n *         },\n *         {\n *             assignmentId: 'e3a173c073151010c342d5fdbdf6a7a2',\n *             name: 'call_number',\n *             label: 'Call Number',\n *         },\n *     ]}\n *     model={{\n *         name: 'Mac Marksberry',\n *         home_phone: '8581234567',\n *         location: 'Bockenheimer Landstraße 123, Frankfurt',\n *         department: 'Customer Support',\n *         sysId: 'fd826bf03710200044e0bfc8bcbe5d30',\n *         sys_id: 'fd826bf03710200044e0bfc8bcbe5d30',\n *         table: 'sys_user',\n *     }}\n *     identifier=\"Hyderabad, India\"\n *     identifierCriticalText=\"4:30 pm\"\n *     identifierFontSize=\"sm\"\n *     heading=\"Samina Arizmendi\"\n *     headingFontSize=\"xl\"\n *     marker={{\n *         type: 'avatar',\n *         value: '12245411112324da1.iix',\n *     }}\n *     labelValuesInfo={ labelValues: [], align: 'horizontal' }\n *     description={{\n *         type: 'stacked',\n *         values: [\n *             'Manager, Marketing Systems',\n *             'Global Marketing Operations Department',\n *         ],\n *     }}\n *     allowFeedback\n *     feedbackOptions={[\n *         {id: 'Wrong Intent', label: 'I am not looking for a person'},\n *         {id: 'Wrong Result', label: 'This is not the person I am looking for'}\n *     ]}\n * \t   grType=\"AI_SEARCH\"\n * />\n *\n * ```\n *\n * @seismicElement sn-search-genius-card-assist\n * @summary Seismic component to build genius cards.\n */\ncreateCustomElement(\"sn-search-genius-card-assist-mini\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tproperties: {\n\t\t/**\n\t\t * This property specifies the metadata for the actions to render in the genius card at the footer.\n\t\t * @type {array}\n\t\t */\n\t\tactions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This is an object that contains data associated to the card.\n\t\t * @type {object}\n\t\t */\n\t\tmodel: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the identifier text to render.\n\t\t * @type {string}\n\t\t */\n\t\tidentifier: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to identifier section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tidentifierFontSize: {\n\t\t\tdefault: \"sm\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies critical text to render next to the identifier.\n\t\t * This text is rendered in red.\n\t\t * @type {string}\n\t\t */\n\t\tidentifierCriticalText: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the heading for the card.\n\t\t * @type {string}\n\t\t */\n\t\theading: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the heading section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\theadingFontSize: {\n\t\t\tdefault: \"xl\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the marker for the genius card. Can render an icon, avatar, or image\n\t\t * @type ('image' | 'avatar' | 'icon')\n\t\t */\n\t\tmarker: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\tsearchProfile: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\tutterance: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * List the label values to render in the card in place of description.\n\t\t * @type {object}\n\t\t * @default { labelValues: [], align: 'horizontal' }\n\t\t */\n\t\tlabelValuesInfo: {\n\t\t\tdefault: {\n\t\t\t\tlabelValues: [],\n\t\t\t\talign: HORIZONTAL\n\t\t\t},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tlabelValues: {\n\t\t\t\t\t\ttype: \"array\"\n\t\t\t\t\t},\n\t\t\t\t\talign: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: [VERTICAL, HORIZONTAL, HORIZONTAL_EQUAL]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the description text(s) for the genius card.\n\t\t * Can render up to two lines of description text or one HTML snippet.\n\t\t * When using the HTML type, only the first item of the values array will be rendered.\n\t\t * Use string value for a single description text.\n\t\t * If you pass in the object, it expects this format\n\t\t * ```jsx\n\t\t * {\n\t\t *     type: 'stacked' | 'html',\n\t\t *     values: []\n\t\t * }\n\t\t * ```\n\t\t * @type {string} | {object}\n\t\t */\n\t\tdescription: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"object\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Should the thumbs up/thumbs down feedback buttons be shown\n\t\t * @type {boolean}\n\t\t */\n\t\tallowFeedback: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Options to show in the dropdown menu for negative feedback (thumbs down) reasons\n\t\t * @type {array}\n\t\t */\n\t\tfeedbackOptions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables the feedback dropdown and intent radio buttons for the card (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingFeedback: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered in platform global search;\n\t\t * the component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the text to show in the highlighted value in the header.\n\t\t * @type {string}\n\t\t */\n\t\thighlightedText: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the icon to show before the highlighted text.\n\t\t * @type {string}\n\t\t */\n\t\thighlightedTextIcon: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the header highlighted value should show a tooltip on hover;\n\t\t * if true, the tooltip indicates the answer was generated by OpenAI.\n\t\t */\n\t\tshowHeaderTooltip: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the identifier should be at the bottom of the card.\n\t\t * @type {boolean}\n\t\t */\n\t\tidentifierAtBottom: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the 'About' section should appear at the bottom of the genius card.\n\t\t * This section summarizes how the genius result is generated.\n\t\t */\n\t\tshowAboutInfo: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the url to documentation that explains how the genius result is generated.\n\t\t */\n\t\tdocumentationUrl: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the type of GR AI_SEARCH or NLQ\n\t\t */\n\t\tgrType: {\n\t\t\tdefault: GR_TYPES.AI_SEARCH,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the response for NLQ type GR\n\t\t */\n\t\tresponse: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the actions to dispatch when the View Full Table link is clicked\n\t\t */\n\t\tnlqNavigationConfig: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\titems: {\n\t\t\t\t\taction: \"string\",\n\t\t\t\t\taction_payload: \"string\",\n\t\t\t\t\tprofile: \"string\",\n\t\t\t\t\ttable: \"string\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the view article button should be rendered as a link.\n\t\t * @type {boolean}\n\t\t */\n\t\tshowActionAsLink: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the source link label for genius result.\n\t\t * @type {string}\n\t\t */\n\t\tsource: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the thumbnail header for GR in Carousel\n\t\t * @type {string}\n\t\t */\n\t\tthumbnailHeader: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered for OneBox experience;\n\t\t * @type {boolean}\n\t\t */\n\t\tisOneBox: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if card is active in carousel for one box;\n\t\t * @type {boolean}\n\t\t */\n\t\tisActive: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\n\t\tcitations: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\tattachments: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t}\n\t},\n\tstyles,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: rtlBehavior\n\t\t},\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tmobileQuery: `(max-width: ${MOBILE_MEDIA_WIDTH})`\n\t\t\t}\n\t\t},\n\t\ttruncationBehavior,\n\t\ttooltipBehavior\n\t]\n});\n","import compact from \"lodash/compact\";\nimport {\n\tSECONDARY_FEEDBACK_ENABLED_MODELS,\n\tAI_SUGGESTION,\n\tHIGHLIGHTED_TEXT_ICON,\n\tGR_TYPES,\n\tDEFAULT_USER_CARD_FEEDBACK_OPTIONS\n} from \"../constants\";\n\nconst MAX_COMPACT_PERSON_INFO = 2;\nconst HORIZONTAL = \"horizontal\";\nconst VERTICAL = \"vertical\";\n\nexport const transformUserCardProps = (properties, isMobile) => {\n\tconst {\n\t\tidentifier,\n\t\tidentifierCriticalText,\n\t\tavatar,\n\t\tavatarName,\n\t\theading,\n\t\tprimaryDescription,\n\t\tsecondaryDescription,\n\t\tactions,\n\t\tmodel,\n\t\tadditionalInfoLabelOne,\n\t\tadditionalInfoValueOne,\n\t\tadditionalInfoLabelTwo,\n\t\tadditionalInfoValueTwo,\n\t\tadditionalInfoLabelThree,\n\t\tadditionalInfoValueThree,\n\t\tadditionalInfoLabelFour,\n\t\tadditionalInfoValueFour,\n\t\tallowFeedback,\n\t\tfeedbackOptions = DEFAULT_USER_CARD_FEEDBACK_OPTIONS,\n\t\tidentifierFontSize,\n\t\theadingFontSize,\n\t\tdescriptionFontSize,\n\t\tenableDataLabelingFeedback,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tisOneBox,\n\t\tisActive\n\t} = properties;\n\n\tlet align = HORIZONTAL;\n\tlet labelValues = [];\n\n\tif (additionalInfoLabelOne) {\n\t\tlabelValues.push({\n\t\t\tlabel: additionalInfoLabelOne,\n\t\t\tvalue: additionalInfoValueOne\n\t\t});\n\t}\n\n\tif (additionalInfoLabelTwo) {\n\t\tlabelValues.push({\n\t\t\tlabel: additionalInfoLabelTwo,\n\t\t\tvalue: additionalInfoValueTwo\n\t\t});\n\t}\n\n\tif (additionalInfoLabelThree) {\n\t\tlabelValues.push({\n\t\t\tlabel: additionalInfoLabelThree,\n\t\t\tvalue: additionalInfoValueThree\n\t\t});\n\t}\n\n\tif (additionalInfoLabelFour) {\n\t\tlabelValues.push({\n\t\t\tlabel: additionalInfoLabelFour,\n\t\t\tvalue: additionalInfoValueFour\n\t\t});\n\t}\n\n\tif (isMobile) {\n\t\talign = VERTICAL;\n\t\tlabelValues = labelValues.slice(0, MAX_COMPACT_PERSON_INFO);\n\t}\n\n\tconst descriptionValues = compact([primaryDescription, secondaryDescription]);\n\n\treturn {\n\t\tactions,\n\t\tmodel,\n\t\tthumbnailHeader: model.model,\n\t\tidentifier,\n\t\tidentifierCriticalText,\n\t\theading,\n\t\tmarker: {\n\t\t\ttype: \"avatar\",\n\t\t\tvalue: avatar,\n\t\t\talt: avatarName\n\t\t},\n\t\tdescription: {\n\t\t\ttype: \"stacked\",\n\t\t\tvalues: descriptionValues\n\t\t},\n\t\tlabelValuesInfo: {\n\t\t\tlabelValues,\n\t\t\talign\n\t\t},\n\t\tallowFeedback,\n\t\tfeedbackOptions: SECONDARY_FEEDBACK_ENABLED_MODELS.people.includes(\n\t\t\tmodel.model\n\t\t)\n\t\t\t? feedbackOptions\n\t\t\t: [],\n\t\tidentifierFontSize,\n\t\theadingFontSize,\n\t\tdescriptionFontSize,\n\t\tenableDataLabelingFeedback,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tisOneBox,\n\t\thighlightedText: AI_SUGGESTION,\n\t\tisActive,\n\t\thighlightedTextIcon: HIGHLIGHTED_TEXT_ICON,\n\t\tgrType: GR_TYPES.AI_SEARCH\n\t};\n};\n","import \"@devsnc/sn-search-genius-card-assist\";\nimport { transformUserCardProps } from \"./utils\";\n\nconst view = state => {\n\tconst {\n\t\tproperties,\n\t\tbehaviors: { mediaQuery }\n\t} = state;\n\tconst { isOneBox } = properties;\n\tconst isMobile = mediaQuery.mobileQuery;\n\tconst userConfig = transformUserCardProps(properties, isMobile);\n\tif (isOneBox) {\n\t\treturn <sn-search-genius-card-assist-mini {...userConfig} />;\n\t} else {\n\t\treturn <sn-search-genius-card-assist {...userConfig} />;\n\t}\n};\n\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\n\nimport { DEFAULT_USER_CARD_FEEDBACK_OPTIONS } from \"../constants\";\nimport view from \"./view\";\n\n/**\n * Card component to display User Genius Results.\n *\n * ```jsx\n * <sn-search-genius-user-card\n *     identifier=\"San Diego, USA\"\n *     avatar=\"45567543231112aa.iix\"\n *     heading=\"System Administrator\"\n *     identifierCriticalText=\"4:30 pm\"\n *     primaryDescription=\"Software Engineer, Dev - Search UX\"\n *     secondaryDescription=\"Web Interfaces\"\n *     additionalInfoLabelOne=\"E-mail\"\n *     additionalInfoValueOne=\"samina.arizmendi@acmetech.com\"\n *     additionalInfoLabelTwo=\"Mobile\"\n *     additionalInfoValueTwo=\"+91 (987)654-3210\"\n *     additionalInfoLabelThree=\"Office\"\n *     additionalInfoValueThree=\"+91 (987)654-3211\"\n *     additionalInfoLabelFour=\"Manager\"\n *     additionalInfoValueFour=\"Abel Tutor\"\n *     actions={[\n *         {\n *             assignmentId: '42fd3e5273511010c342d5fdbdf6a70e',\n *             name: 'activate_user',\n *             label: 'Activate',\n *         },\n *         {\n *             assignmentId: 'e3a173c073151010c342d5fdbdf6a7a2',\n *             name: 'call_number',\n *             label: 'Call Number',\n *         },\n *     ]}\n *     model={{\n *         name: 'Mac Marksberry',\n *         home_phone: '8581234567',\n *         location: 'Bockenheimer Landstraße 123, Frankfurt',\n *         department: 'Customer Support',\n *         sysId: 'fd826bf03710200044e0bfc8bcbe5d30',\n *         sys_id: 'fd826bf03710200044e0bfc8bcbe5d30',\n *         table: 'sys_user',\n *     }}\n * />\n * ```\n *\n * @seismicElement sn-search-genius-user-card\n * @summary Card component to display User Genius Results.\n */\ncreateCustomElement(\"sn-search-genius-user-card\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tinitialState: {\n\t\ttimerId: null,\n\t\ttime: null\n\t},\n\tproperties: {\n\t\t/**\n\t\t * This property specifies the identifier text to render.\n\t\t * @type {string}\n\t\t */\n\t\tidentifier: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies critical text to render next to the identifier.\n\t\t * This text is rendered in red.\n\t\t * @type {string}\n\t\t */\n\t\tidentifierCriticalText: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the avatar source for the Person genius card.\n\t\t * Renders `<now-avatar />`\n\t\t * @type {string}\n\t\t */\n\t\tavatar: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Name of the user that the avatar represents.\n\t\t * If no `avatar` is provided, then the initials of the first\n\t\t * two names that are provided in the string appear in the avatar.\n\t\t * @type {string}\n\t\t */\n\t\tavatarName: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the heading for the card.\n\t\t * @type {string}\n\t\t */\n\t\theading: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Description to place on the first line.\n\t\t * @type {string}\n\t\t */\n\t\tprimaryDescription: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Description to place on the second line.\n\t\t * @type {string}\n\t\t */\n\t\tsecondaryDescription: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the first person additional information label.\n\t\t * @type {string}\n\t\t */\n\t\tadditionalInfoLabelOne: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the first person additional information value.\n\t\t * @type {string}\n\t\t */\n\t\tadditionalInfoValueOne: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the second person additional information label.\n\t\t * @type {string}\n\t\t */\n\t\tadditionalInfoLabelTwo: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the second person additional information value.\n\t\t * @type {string}\n\t\t */\n\t\tadditionalInfoValueTwo: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the third person additional information label.\n\t\t * @type {string}\n\t\t */\n\t\tadditionalInfoLabelThree: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the third person additional information value.\n\t\t * @type {string}\n\t\t */\n\t\tadditionalInfoValueThree: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the fourth person additional information label.\n\t\t * @type {string}\n\t\t */\n\t\tadditionalInfoLabelFour: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the fourth person additional information value.\n\t\t * @type {string}\n\t\t */\n\t\tadditionalInfoValueFour: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the actions to render in the genius card at the footer.\n\t\t * Declarative actions are used to configure actions.\n\t\t * @type {array}\n\t\t */\n\t\tactions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This is an object that contains data associated to the card.\n\t\t * @type {object}\n\t\t */\n\t\tmodel: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Should the thumbs up/thumbs down feedback buttons be shown\n\t\t * @type {boolean}\n\t\t */\n\t\tallowFeedback: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Options to show in the dropdown menu for negative feedback (thumbs down) reasons\n\t\t * @type {array}\n\t\t */\n\t\tfeedbackOptions: {\n\t\t\tdefault: DEFAULT_USER_CARD_FEEDBACK_OPTIONS,\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to identifier section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tidentifierFontSize: {\n\t\t\tdefault: \"sm\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the heading section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\theadingFontSize: {\n\t\t\tdefault: \"xl\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the description section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tdescriptionFontSize: {\n\t\t\tdefault: \"md\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables the feedback dropdown and intent radio buttons for the card (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingFeedback: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered in platform global search;\n\t\t * the component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the new href functionality for genius result navigation should be disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered for OneBox experience;\n\t\t * @type {boolean}\n\t\t */\n\t\tisOneBox: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card active in carousel view for one box\n\t\t * @type {boolean}\n\t\t */\n\t\tisActive: {\n\t\t\tdefault: false\n\t\t}\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tmobileQuery: \"(max-width: 600px)\"\n\t\t\t}\n\t\t}\n\t]\n});\n","import { isEmpty, isEqual, get } from \"lodash\";\nimport { t } from \"sn-translate\";\nimport {\n\tSECONDARY_FEEDBACK_ENABLED_MODELS,\n\tPOWERED_BY_TEXT,\n\tHIGHLIGHTED_TEXT_ICON,\n\tAI_SUGGESTION,\n\tQA,\n\tGR_TYPES,\n\tDEFAULT_QA_FEEDBACK_OPTIONS,\n\tQA_CARD_HEADER\n} from \"../constants\";\n\nconst formatIdentifier = identifier =>\n\tisEmpty(identifier) ? identifier : t(`Extracted from '{0}'`, identifier);\n\nconst decodeHtml = text =>\n\tnew DOMParser().parseFromString(text, \"text/html\").documentElement\n\t\t.textContent;\n\nexport const transformQACardProps = properties => {\n\tconst {\n\t\tidentifier,\n\t\theading,\n\t\tdescription,\n\t\tactions,\n\t\tmodel,\n\t\tallowFeedback,\n\t\tfeedbackOptions = DEFAULT_QA_FEEDBACK_OPTIONS,\n\t\tidentifierFontSize,\n\t\theadingFontSize,\n\t\tdescriptionFontSize,\n\t\tenableDataLabelingFeedback,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tshowHeaderTooltip,\n\t\tshowAboutInfo,\n\t\tpoweredBy,\n\t\tdocumentationUrl,\n\t\tsparkleText,\n\t\tisOneBox,\n\t\tisActive,\n\t\tfollowUpAction,\n\t\tcitations,\n\t\tattachments\n\t} = properties;\n\tconst formattedIdentifier = formatIdentifier(decodeHtml(identifier));\n\tconst type = model?.model ?? \"\";\n\tconst highlightedTextLabel = !isEmpty(sparkleText)\n\t\t? sparkleText\n\t\t: !isEmpty(poweredBy)\n\t\t? `${POWERED_BY_TEXT} ${poweredBy}`\n\t\t: AI_SUGGESTION;\n\tconst hideQACardForExpiredTokenExternalGR =\n\t\tisEqual(get(model, \"columns.source_type\", \"\"), \"external\") &&\n\t\tisEqual(get(model, \"columns.token_present\", \"\"), \"false\");\n\tif (!hideQACardForExpiredTokenExternalGR) {\n\t\treturn {\n\t\t\tactions,\n\t\t\tmodel,\n\t\t\tthumbnailHeader: QA_CARD_HEADER,\n\t\t\tidentifier: formattedIdentifier,\n\t\t\theading,\n\t\t\tdescription: {\n\t\t\t\ttype: \"html\",\n\t\t\t\tvalues: [description]\n\t\t\t},\n\t\t\tallowFeedback,\n\t\t\tfeedbackOptions:\n\t\t\t\tSECONDARY_FEEDBACK_ENABLED_MODELS.qa.includes(type) ||\n\t\t\t\ttype.toLowerCase().includes(QA)\n\t\t\t\t\t? feedbackOptions\n\t\t\t\t\t: [],\n\t\t\tidentifierFontSize,\n\t\t\theadingFontSize,\n\t\t\tdescriptionFontSize,\n\t\t\tenableDataLabelingFeedback,\n\t\t\tisGlobal,\n\t\t\tdisableHref,\n\t\t\tisOneBox,\n\t\t\thighlightedText: highlightedTextLabel,\n\t\t\thighlightedTextIcon: HIGHLIGHTED_TEXT_ICON,\n\t\t\tshowHeaderTooltip,\n\t\t\tidentifierAtBottom: true,\n\t\t\tshowAboutInfo,\n\t\t\tdocumentationUrl: decodeHtml(documentationUrl),\n\t\t\tgrType: GR_TYPES.AI_SEARCH,\n\t\t\tshowActionAsLink: true,\n\t\t\tisActive,\n\t\t\tsource: identifier,\n\t\t\tfollowUpAction,\n\t\t\tcitations,\n\t\t\tattachments\n\t\t};\n\t} else {\n\t\treturn null;\n\t}\n};\n","import \"@devsnc/sn-search-genius-card-assist\";\nimport { transformQACardProps } from \"./utils\";\n\nconst view = (state, { dispatch }) => {\n\tconst {\n\t\tproperties,\n\t\tbehaviors: { mediaQuery }\n\t} = state;\n\tconst { isOneBox } = properties;\n\tconst isMobile = mediaQuery.mobileQuery;\n\tconst answerConfig = transformQACardProps(properties, dispatch);\n\tif (isOneBox && !isMobile) {\n\t\treturn <sn-search-genius-card-assist-mini {...answerConfig} />;\n\t} else {\n\t\treturn <sn-search-genius-card-assist {...answerConfig} />;\n\t}\n};\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\nimport { DEFAULT_QA_FEEDBACK_OPTIONS, MOBILE_MEDIA_WIDTH } from \"../constants\";\nimport view from \"./view\";\n\n/**\n * Card component to display Q&A Genius Results.\n *\n * ```jsx\n *  <sn-search-genius-qa-card\n *      identifier={identifier}\n *      heading={heading}\n *      description={description}\n *      actions={actions}\n *      model={model}\n *  />\n * ```\n *\n * @seismicElement sn-search-genius-qa-card\n * @summary Card component to display Q&A Genius Results.\n */\ncreateCustomElement(\"sn-search-genius-qa-card\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tproperties: {\n\t\t/**\n\t\t * This property specifies the identifier text to render.\n\t\t * If an identifier is specified, it will always be interpolated in this template:\n\t\t * Extracted from '${identifier}'.\n\t\t * @type {string}\n\t\t */\n\t\tidentifier: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the heading for the card.\n\t\t * @type {string}\n\t\t */\n\t\theading: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the description text(s) for the genius card. It supports HTML content.\n\t\t * @type {string}\n\t\t */\n\t\tdescription: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the actions to render in the genius card at the footer.\n\t\t * Declarative actions are used to configure actions.\n\t\t * @type {array}\n\t\t */\n\t\tactions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the sources that is returned as part of multi context Q&A\n\t\t * @type {array}\n\t\t */\n\t\tcitations: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the attachments that should be rendered as part of Q&A card when available in response.\n\t\t * @type {array}\n\t\t */\n\t\tattachments: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the sourceType of the GR card can be internal or external\n\t\t * @type {array}\n\t\t */\n\t\tsource: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This is an object that contains data associated to the card.\n\t\t * @type {object}\n\t\t */\n\t\tmodel: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Should the thumbs up/thumbs down feedback buttons be shown\n\t\t * @type {boolean}\n\t\t */\n\t\tallowFeedback: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Options to show in the dropdown menu for negative feedback (thumbs down) reasons\n\t\t * @type {array}\n\t\t */\n\t\tfeedbackOptions: {\n\t\t\tdefault: DEFAULT_QA_FEEDBACK_OPTIONS,\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to identifier section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tidentifierFontSize: {\n\t\t\tdefault: \"sm\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the heading section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\theadingFontSize: {\n\t\t\tdefault: \"lg\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the description section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tdescriptionFontSize: {\n\t\t\tdefault: \"sm\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables the feedback dropdown and intent radio buttons for the card (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingFeedback: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered in platform global search;\n\t\t * the component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the new href functionality for genius result navigation should be disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the header highlighted value should show a tooltip on hover;\n\t\t * if true, the tooltip indicates the answer is generated by OpenAI.\n\t\t */\n\t\tshowHeaderTooltip: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the 'About' section should appear at the bottom of the genius card.\n\t\t * This section summarizes how the genius result is generated.\n\t\t */\n\t\tshowAboutInfo: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the system that's used to generate the genius result.\n\t\t * When configured, the card header text shows \"Powered by 'value'\" where value is specified by this property.\n\t\t */\n\t\tpoweredBy: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the url to documentation that explains how the genius result is generated.\n\t\t */\n\t\tdocumentationUrl: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the text to show in the header top-right corner with the sparkle icon.\n\t\t */\n\t\tsparkleText: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered for OneBox experience;\n\t\t * @type {boolean}\n\t\t */\n\t\tisOneBox: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card active in carousel view for one box\n\t\t * @type {boolean}\n\t\t */\n\t\tisActive: {\n\t\t\tdefault: false\n\t\t}\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tmobileQuery: `(max-width: ${MOBILE_MEDIA_WIDTH})`\n\t\t\t}\n\t\t}\n\t]\n});\n","import compact from \"lodash/compact\";\nimport {\n\tSECONDARY_FEEDBACK_ENABLED_MODELS,\n\tGR_TYPES,\n\tCATALOG_ITEM,\n\tNA_CATALOG_ITEM_SPARKLE_TEXT,\n\tDEFAULT_CATALOG_FEEDBACK_OPTIONS\n} from \"../constants\";\n\nexport const transformCatalogCardProps = properties => {\n\tconst {\n\t\tidentifier,\n\t\tmarker,\n\t\tmarkerType,\n\t\timageAlt,\n\t\theading,\n\t\tprimaryDescription,\n\t\tsecondaryDescription,\n\t\tactions,\n\t\tmodel,\n\t\tallowFeedback,\n\t\tfeedbackOptions = DEFAULT_CATALOG_FEEDBACK_OPTIONS,\n\t\tidentifierFontSize,\n\t\theadingFontSize,\n\t\tdescriptionFontSize,\n\t\tenableDataLabelingFeedback,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tfollowUpAction,\n\t\tisOneBox,\n\t\tisActive\n\t} = properties;\n\n\tconst descriptionValues = compact([primaryDescription, secondaryDescription]);\n\n\treturn {\n\t\tactions,\n\t\tmodel,\n\t\thighlightedText:\n\t\t\tmodel.model === \"Catalog Item Semantic Search\"\n\t\t\t\t? NA_CATALOG_ITEM_SPARKLE_TEXT\n\t\t\t\t: \"\",\n\t\thighlightedTextIcon:\n\t\t\tmodel.model === \"Catalog Item Semantic Search\"\n\t\t\t\t? \"ai-sparkle-outline\"\n\t\t\t\t: \"\",\n\t\tthumbnailHeader: CATALOG_ITEM,\n\t\tidentifier,\n\t\theading,\n\t\tmarker: {\n\t\t\ttype: markerType,\n\t\t\tvalue: marker,\n\t\t\talt: imageAlt\n\t\t},\n\t\tdescription: {\n\t\t\ttype: \"stacked\",\n\t\t\tvalues: descriptionValues\n\t\t},\n\t\tallowFeedback,\n\t\tfeedbackOptions: SECONDARY_FEEDBACK_ENABLED_MODELS.catalog.includes(\n\t\t\tmodel.model\n\t\t)\n\t\t\t? feedbackOptions\n\t\t\t: [],\n\t\tidentifierFontSize,\n\t\theadingFontSize,\n\t\tdescriptionFontSize,\n\t\tenableDataLabelingFeedback,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tisOneBox,\n\t\tisActive,\n\t\tgrType: GR_TYPES.AI_SEARCH,\n\t\tfollowUpAction\n\t};\n};\n","import \"@devsnc/sn-search-genius-card-assist\";\nimport { transformCatalogCardProps } from \"./utils\";\n\nconst view = (state, { dispatch }) => {\n\tconst {\n\t\tproperties,\n\t\tbehaviors: { mediaQuery }\n\t} = state;\n\tconst { isOneBox } = properties;\n\tconst isMobile = mediaQuery.mobileQuery;\n\tconst catalogConfig = transformCatalogCardProps(properties, dispatch);\n\tif (isOneBox && !isMobile) {\n\t\treturn <sn-search-genius-card-assist-mini {...catalogConfig} />;\n\t} else {\n\t\treturn <sn-search-genius-card-assist {...catalogConfig} />;\n\t}\n};\n\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\nimport {\n\tDEFAULT_CATALOG_FEEDBACK_OPTIONS,\n\tMOBILE_MEDIA_WIDTH\n} from \"../constants\";\nimport view from \"./view\";\n\n/**\n * Card component to display Catalog Genius Results.\n *\n * ```jsx\n * <sn-search-genius-catalog-card\n *     identifier=\"Benefits\"\n *     marker=\"news-outline\"\n *     markerType=\"icon\"\n *     heading=\"Tuition preapproval\"\n *     primaryDescription=\"This is a description text\"\n *     secondaryDescription=\"This is a secondary text\"\n *     actions={[\n *         {\n *             assignmentId: '42fd3e5273511010c342d5fdbdf6a70e',\n *             name: 'view',\n *             label: 'View',\n *         },\n *     ]}\n *     model={{\n *         name: 'Tuition preapproval',\n *         description: 'This is a description text',\n *         sysId: 'fd826bf03710200044e0bfc8bcbe5d30',\n *         sys_id: 'fd826bf03710200044e0bfc8bcbe5d30',\n *         table: 'sc_cat_item',\n *     }}\n * />\n * ```\n *\n * @seismicElement sn-search-genius-catalog-card\n * @summary Card component to display Catalog Genius Results.\n */\ncreateCustomElement(\"sn-search-genius-catalog-card\", {\n\tview,\n\tinitialState: {\n\t\ttimerId: null,\n\t\ttime: null\n\t},\n\tproperties: {\n\t\t/**\n\t\t * This property specifies the identifier text to render.\n\t\t * @type {string}\n\t\t */\n\t\tidentifier: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the icon or image source to use for the card.\n\t\t * If no icon and image is defined, then the component will default to the icon `pencil-page-outline`.\n\t\t * @type {string}\n\t\t */\n\t\tmarker: {\n\t\t\tdefault: \"pencil-page-outline\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the type of marker to render the appropriate component.\n\t\t * @type ('image'|'icon')\n\t\t */\n\t\tmarkerType: {\n\t\t\tdefault: \"icon\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"icon\", \"image\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Alternative text description of the image.\n\t\t * @type {string}\n\t\t */\n\t\timageAlt: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the heading for the card.\n\t\t * @type {string}\n\t\t */\n\t\theading: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Primary description for the catalog.\n\t\t * @type {string}\n\t\t */\n\t\tprimaryDescription: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Secondary description for the catalog.\n\t\t * Renders below the primary description.\n\t\t * @type {string}\n\t\t */\n\t\tsecondaryDescription: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the actions to render in the genius card at the footer.\n\t\t * Declarative actions are used to configure actions.\n\t\t * @type {array}\n\t\t */\n\t\tactions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This is an object that contains data associated to the card.\n\t\t * @type {object}\n\t\t */\n\t\tmodel: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Should the thumbs up/thumbs down feedback buttons be shown\n\t\t * @type {boolean}\n\t\t */\n\t\tallowFeedback: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Options to show in the dropdown menu for negative feedback (thumbs down) reasons\n\t\t * @type {array}\n\t\t */\n\t\tfeedbackOptions: {\n\t\t\tdefault: DEFAULT_CATALOG_FEEDBACK_OPTIONS,\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to identifier section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tidentifierFontSize: {\n\t\t\tdefault: \"sm\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the heading section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\theadingFontSize: {\n\t\t\tdefault: \"xl\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the description section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tdescriptionFontSize: {\n\t\t\tdefault: \"md\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables the feedback dropdown and intent radio buttons for the card (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingFeedback: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered in platform global search;\n\t\t * the component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the new href functionality for genius result navigation should be disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered for OneBox experience;\n\t\t * @type {boolean}\n\t\t */\n\t\tisOneBox: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card active in carousel view for one box\n\t\t * @type {boolean}\n\t\t */\n\t\tisActive: {\n\t\t\tdefault: false\n\t\t}\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tmobileQuery: `(max-width: ${MOBILE_MEDIA_WIDTH})`\n\t\t\t}\n\t\t}\n\t]\n});\n","import {\n\tSECONDARY_FEEDBACK_ENABLED_MODELS,\n\tGR_TYPES,\n\tHIGHLIGHTED_TEXT_ICON,\n\tNLQ_HIGHLIGHTED_TEXT,\n\tDEFAULT_NLQ_FEEDBACK_OPTIONS,\n\tNLQ_CARD_HEADER\n} from \"../constants\";\n\nexport const transformNLQCardProps = properties => {\n\tconst {\n\t\tactions,\n\t\tmodel,\n\t\tallowFeedback,\n\t\tfeedbackOptions = DEFAULT_NLQ_FEEDBACK_OPTIONS,\n\t\tshowAboutInfo,\n\t\tshowHeaderTooltip,\n\t\tenableDataLabelingFeedback,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tresponse,\n\t\tsearchProfile,\n\t\tutterance,\n\t\tisOneBox,\n\t\tisActive\n\t} = properties;\n\n\tlet highlightedText = \"\";\n\tlet highlightedTextIcon = \"\";\n\tconst parsedResponse = JSON.parse(response);\n\tfor (let i = 0; i < parsedResponse.length; i++) {\n\t\tif (parsedResponse[i].GAI) {\n\t\t\thighlightedText = NLQ_HIGHLIGHTED_TEXT;\n\t\t\thighlightedTextIcon = HIGHLIGHTED_TEXT_ICON;\n\t\t}\n\t}\n\n\treturn {\n\t\tactions,\n\t\tmodel,\n\t\tthumbnailHeader: NLQ_CARD_HEADER,\n\t\tresponse: response,\n\t\tallowFeedback,\n\t\tshowAboutInfo,\n\t\tshowHeaderTooltip,\n\t\tfeedbackOptions: SECONDARY_FEEDBACK_ENABLED_MODELS.nlq.includes(model.model)\n\t\t\t? feedbackOptions\n\t\t\t: [],\n\t\thighlightedText: highlightedText,\n\t\thighlightedTextIcon: highlightedTextIcon,\n\t\tenableDataLabelingFeedback,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tsearchProfile,\n\t\tutterance,\n\t\tisActive,\n\t\tisOneBox,\n\t\tgrType: GR_TYPES.NLQ\n\t};\n};\n","import \"@devsnc/sn-search-genius-card-assist\";\nimport { transformNLQCardProps } from \"./utils\";\n\nconst view = (state, { dispatch }) => {\n\tconst {\n\t\tproperties,\n\t\tbehaviors: { mediaQuery }\n\t} = state;\n\tconst { isOneBox } = properties;\n\tconst nlqConfig = transformNLQCardProps(properties, dispatch);\n\tconst isMobile = mediaQuery.mobileQuery;\n\tif (isOneBox && !isMobile) {\n\t\treturn <sn-search-genius-card-assist-mini {...nlqConfig} />;\n\t} else {\n\t\treturn <sn-search-genius-card-assist {...nlqConfig} />;\n\t}\n};\n\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\n\nimport { DEFAULT_NLQ_FEEDBACK_OPTIONS, MOBILE_MEDIA_WIDTH } from \"../constants\";\nimport view from \"./view\";\n/**\n * Card component to display NLQ Genius Results.\n *\n * ```jsx\n * <sn-search-genius-catalog-card\n *     actions={[\n *     ]}\n *     model={{\n *         label: \"NLQ\",\n *         response: \"[{\\\"name\\\":\\\"incident\\\",\\\"label\\\":\\\"incident\\\",\\\"filter\\\":\\\"short_descriptionLIKElaptop\\\"}]\",\n *         sysId: \"bc8c49bca04df110f87789b8dc7b9309\",\n *         sys_id: \"bc8c49bca04df110f87789b8dc7b9309\",\n *         table: \"v_search_genius_result\"\n *     }}\n * \t   response=\"[{\"name\":\"incident\",\"label\":\"Incident\"}]\"\n * />\n * ```\n *\n * @seismicElement sn-search-genius-nlq-card\n * @summary Card component to display NLQ Genius Results.\n */\ncreateCustomElement(\"sn-search-genius-nlq-card\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tproperties: {\n\t\tutterance: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\tsearchProfile: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\tresponse: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\tactions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This is an object that contains data associated to the card.\n\t\t * @type {object}\n\t\t */\n\t\tmodel: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Should the thumbs up/thumbs down feedback buttons be shown\n\t\t * @type {boolean}\n\t\t */\n\t\tallowFeedback: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Options to show in the dropdown menu for negative feedback (thumbs down) reasons\n\t\t * @type {array}\n\t\t */\n\t\tfeedbackOptions: {\n\t\t\tdefault: DEFAULT_NLQ_FEEDBACK_OPTIONS,\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables the feedback dropdown and intent radio buttons for the card (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingFeedback: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the 'About' section should appear at the bottom of the genius card.\n\t\t * This section summarizes how the genius result is generated.\n\t\t */\n\t\tshowAboutInfo: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the header highlighted value should show a tooltip on hover;\n\t\t * if true, the tooltip indicates the answer is generated by OpenAI.\n\t\t */\n\t\tshowHeaderTooltip: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered in platform global search;\n\t\t * the component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the new href functionality for genius result navigation should be disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered for OneBox experience;\n\t\t * @type {boolean}\n\t\t */\n\t\tisOneBox: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card active in carousel view for one box\n\t\t * @type {boolean}\n\t\t */\n\t\tisActive: {\n\t\t\tdefault: false\n\t\t}\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tmobileQuery: `(max-width: ${MOBILE_MEDIA_WIDTH})`\n\t\t\t}\n\t\t}\n\t]\n});\n","import { isEmpty } from \"lodash\";\nimport {\n\tHIGHLIGHTED_TEXT_ICON,\n\tGR_TYPES,\n\tSYNTHESIZED_ANSWER_LABEL\n} from \"../constants\";\n\nconst decodeHtml = text =>\n\tnew DOMParser().parseFromString(text, \"text/html\").documentElement\n\t\t.textContent;\n\nexport const transformSynthesizedCardProps = properties => {\n\tconst {\n\t\theading,\n\t\tdescription,\n\t\tactions,\n\t\tmodel,\n\t\tallowFeedback,\n\t\tfeedbackOptions,\n\t\theadingFontSize,\n\t\tdescriptionFontSize,\n\t\tenableDataLabelingFeedback,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tshowHeaderTooltip,\n\t\tshowAboutInfo,\n\t\tdocumentationUrl,\n\t\tsparkleText,\n\t\tisOneBox,\n\t\tisActive,\n\t\tfollowUpAction,\n\t\tcitations,\n\t\tattachments,\n\t\tmessages\n\t} = properties;\n\tconst highlightedTextLabel =\n\t\t!isEmpty(sparkleText) && sparkleText !== \"undefined\"\n\t\t\t? sparkleText\n\t\t\t: SYNTHESIZED_ANSWER_LABEL;\n\treturn {\n\t\tactions,\n\t\tmodel,\n\t\tthumbnailHeader: model.model,\n\t\theading,\n\t\tdescription: {\n\t\t\ttype: \"html\",\n\t\t\tvalues: [description]\n\t\t},\n\t\tallowFeedback,\n\t\tfeedbackOptions,\n\t\theadingFontSize,\n\t\tdescriptionFontSize,\n\t\tenableDataLabelingFeedback,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tisOneBox,\n\t\thighlightedText: highlightedTextLabel,\n\t\thighlightedTextIcon: HIGHLIGHTED_TEXT_ICON,\n\t\tshowHeaderTooltip,\n\t\tshowAboutInfo,\n\t\tdocumentationUrl: decodeHtml(documentationUrl),\n\t\tgrType: GR_TYPES.SYNTHESIZED,\n\t\tshowActionAsLink: true,\n\t\tisActive,\n\t\tfollowUpAction,\n\t\tcitations,\n\t\tattachments,\n\t\tmessages\n\t};\n};\n","import \"@devsnc/sn-search-genius-card-assist\";\nimport { transformSynthesizedCardProps } from \"./utils\";\n\nconst view = (state, { dispatch }) => {\n\tconst {\n\t\tproperties,\n\t\tbehaviors: { mediaQuery }\n\t} = state;\n\tconst { isOneBox } = properties;\n\tconst isMobile = mediaQuery.mobileQuery;\n\tconst answerConfig = transformSynthesizedCardProps(properties, dispatch);\n\tif (isOneBox && !isMobile) {\n\t\treturn <sn-search-genius-card-assist-mini {...answerConfig} />;\n\t} else {\n\t\treturn <sn-search-genius-card-assist {...answerConfig} />;\n\t}\n};\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\nimport { DEFAULT_QA_FEEDBACK_OPTIONS, MOBILE_MEDIA_WIDTH } from \"../constants\";\nimport view from \"./view\";\n\n/**\n * Card component to display Synthesized Genius Results.\n *\n * ```jsx\n *  <sn-search-genius-synthesized-card\n *      messages={messages}\n *      actions={actions}\n *      model={model}\n *  />\n * ```\n *\n * @seismicElement sn-search-genius-synthesized-card\n * @summary Card component to display Synthesized Genius Results.\n */\ncreateCustomElement(\"sn-search-genius-synthesized-card\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tproperties: {\n\t\t/**\n\t\t * This property specifies the text for the synthesized answer.\n\t\t * @type {string}\n\t\t */\n\t\tmessages: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the heading for the card.\n\t\t * @type {string}\n\t\t */\n\t\theading: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the description text(s) for the genius card. It supports HTML content.\n\t\t * @type {string}\n\t\t */\n\t\tdescription: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the actions to render in the genius card at the footer.\n\t\t * Declarative actions are used to configure actions.\n\t\t * @type {array}\n\t\t */\n\t\tactions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the sources that is returned as part of multi context Q&A\n\t\t * @type {array}\n\t\t */\n\t\tcitations: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the attachments that should be rendered as part of Q&A card when available in response.\n\t\t * @type {array}\n\t\t */\n\t\tattachments: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the sourceType of the GR card can be internal or external\n\t\t * @type {array}\n\t\t */\n\t\tsource: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This is an object that contains data associated to the card.\n\t\t * @type {object}\n\t\t */\n\t\tmodel: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Should the thumbs up/thumbs down feedback buttons be shown\n\t\t * @type {boolean}\n\t\t */\n\t\tallowFeedback: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Options to show in the dropdown menu for negative feedback (thumbs down) reasons\n\t\t * @type {array}\n\t\t */\n\t\tfeedbackOptions: {\n\t\t\tdefault: DEFAULT_QA_FEEDBACK_OPTIONS,\n\t\t\tschema: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { id: \"string\", label: \"string\" }\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the heading section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\theadingFontSize: {\n\t\t\tdefault: \"lg\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the description section\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tdescriptionFontSize: {\n\t\t\tdefault: \"sm\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables the feedback dropdown and intent radio buttons for the card (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingFeedback: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered in platform global search;\n\t\t * the component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the new href functionality for genius result navigation should be disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the header highlighted value should show a tooltip on hover;\n\t\t * if true, the tooltip indicates the answer is generated by OpenAI.\n\t\t */\n\t\tshowHeaderTooltip: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the 'About' section should appear at the bottom of the genius card.\n\t\t * This section summarizes how the genius result is generated.\n\t\t */\n\t\tshowAboutInfo: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the url to documentation that explains how the genius result is generated.\n\t\t */\n\t\tdocumentationUrl: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the text to show in the header top-right corner with the sparkle icon.\n\t\t */\n\t\tsparkleText: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card is being rendered for OneBox experience;\n\t\t * @type {boolean}\n\t\t */\n\t\tisOneBox: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the genius card active in carousel view for one box\n\t\t * @type {boolean}\n\t\t */\n\t\tisActive: {\n\t\t\tdefault: false\n\t\t}\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tmobileQuery: `(max-width: ${MOBILE_MEDIA_WIDTH})`\n\t\t\t}\n\t\t}\n\t]\n});\n","import { t } from \"sn-translate\";\n\nexport const AVATAR = \"avatar\";\nexport const ICON = \"icon\";\nexport const IMAGE = \"image\";\nexport const DEFAULT_ICON = \"document-outline\";\nexport const SMALL_CARD = 178;\nexport const MEDIUM_CARD = 218;\nexport const LARGE_CARD = 260;\nexport const TOGGLE_BREAKPOINT = 480;\nexport const CUSTOM_ICON_DEFAULT_SIZE = \"24px\";\n\nexport const NOW_CARD_CLICKED = \"NOW_CARD#CLICKED\";\nexport const DECLARATIVE_ACTION = \"DECLARATIVE_ACTION\";\nexport const NOW_BUTTON_BARE_CLICKED = \"NOW_BUTTON_BARE#CLICKED\";\nexport const NOW_BUTTON_ICONIC_CLICKED = \"NOW_BUTTON_ICONIC#CLICKED\";\n\nexport const REGULAR_RESULT_TYPE = \"REGULAR\";\nexport const CLICK = \"click\";\nexport const OPEN_IN_NEW_TAB = \"open-in-new-tab\";\nexport const RIGHT_CLICK = \"right-click\";\n\n//to pass through the shadow dom of design system component\nexport const MARK_START =\n\t'<mark style=\"background-color: var(--searchresult-title-highlight--background-color);\">';\nexport const MARK_END = \"</mark>\";\n\nexport const ATTACHMENT_LABEL = t(\"Attachment\");\nexport const MAX_ATTACHMENTS = 3;\nexport const SHOW_LESS = t(\"Show less\");\nexport const ATTACHMENT_ICON = {\n\tDEFAULT_DOC: \"document-template-outline\",\n\tDOWNLOAD: \"download-outline\"\n};\nexport const ATTACHMENT_COLUMN = {\n\tDOC_TYPE: \"doctype\",\n\tDOC_ICON: \"doctype_image\",\n\tDOC_IMAGE_TYPE: \"doctype_image_type\",\n\tPARENT_SYS_ID: \"parent_sys_id\",\n\tPARENT_TABLE: \"parent_table\",\n\tPARENT_TITLE: \"parent_title\"\n};\n\n/**\n * FEEDBACK_DROPDOWN_OPTIONS provides the options for feedback values in a scale of 1-4, where 1 represents the most relevant.\n * Could be modified based on user reviews.\n */\nexport const FEEDBACK_DROPDOWN_OPTIONS = [\n\t{ id: \"1\", label: \"1\" },\n\t{ id: \"2\", label: \"2\" },\n\t{ id: \"3\", label: \"3\" },\n\t{ id: \"4\", label: \"4\" },\n\t{ id: \"genius\", label: t(\"better genius result\") }\n];\n\nexport const DETAILS_POSITIONS = {\n\tABOVE: \"above\",\n\tBELOW: \"below\"\n};\n\nexport const DETAIL_PROP_NAMES = [\n\t{ label: \"detailLabelOne\", value: \"detailValueOne\" },\n\t{ label: \"detailLabelTwo\", value: \"detailValueTwo\" },\n\t{ label: \"detailLabelThree\", value: \"detailValueThree\" },\n\t{ label: \"detailLabelFour\", value: \"detailValueFour\" },\n\t{ label: \"detailLabelFive\", value: \"detailValueFive\" },\n\t{ label: \"detailLabelSix\", value: \"detailValueSix\" },\n\t{ label: \"detailLabelSeven\", value: \"detailValueSeven\" },\n\t{ label: \"detailLabelEight\", value: \"detailValueEight\" },\n\t{ label: \"detailLabelNine\", value: \"detailValueNine\" },\n\t{ label: \"detailLabelTen\", value: \"detailValueTen\" }\n];\n\nexport const DETAIL_LABEL_TYPES = {\n\tSTACKED: \"stacked\",\n\tINLINE: \"inline\"\n};\nexport const ICON_SIZE = {\n\tXL: \"xl\",\n\tMD: \"md\",\n\tLG: \"lg\",\n\tSM: \"sm\",\n\tXS: \"xs\"\n};\nexport const ATTACHMENT_POPOVER_VIEW = \"ATTACHMENT_POPOVER_VIEW\";\nexport const ATTACHMENT_SHOW_MORE_CLICKED = \"ATTACHMENT_SHOW_MORE_CLICKED\";\nexport const ICON_TYPE_PANEL_VIEW = \"shopping-cart-outline\";\nexport const REQUEST_CHAT = t(\"Request in chat\");\nexport const CHAT_CLICKED = \"CHAT_CLICKED\";\nexport const OPEN_IN_NEW_TAB_TOOLTIP = t(\"Open in New Tab\");\nexport const CHAT_LABEL = t(\"Chat\");\nexport const CHAT = \"chat\";\nexport const TRUE = \"true\";\nexport const SYS_ID = \"sysId\";\nexport const COPY = t(\"Copy\");\nexport const EVAM_VIEW_CONFIG = t(\"EVAM View Config\");\nexport const CONVERSATIONAL_AGENTIC = \"conversational-agentic\";\n","/* eslint-disable prettier/prettier */\nimport '@servicenow/now-highlighted-value';\nimport isEmpty from 'lodash/isEmpty';\nimport filter from 'lodash/filter';\nimport flatMap from 'lodash/flatMap';\nimport { t } from 'sn-translate';\nimport {\n\tFEEDBACK_DROPDOWN_OPTIONS,\n\tICON_SIZE,\n\tDEFAULT_ICON\n} from '../constants';\n\nconst getLabelElement = (text, className) => {\n\tif (isEmpty(text)) return null;\n\treturn (\n\t\t<now-label-value-inline\n\t\t\tlabel={text}\n\t\t\tvalue=\"\"\n\t\t\tclassName={className}\n\t\t\ttruncated\n\t\t/>\n\t);\n};\n\nconst getSeparatorLabelElement = (text, className) => {\n\tif (isEmpty(text)) return null;\n\treturn (\n\t\t<span aria-hidden=\"true\">\n\t\t\t<now-label-value-inline\n\t\t\t\tlabel={text}\n\t\t\t\tvalue=\"\"\n\t\t\t\tclassName={className}\n\t\t\t\ttruncated\n\t\t\t/>\n\t\t</span>\n\t);\n};\n\nconst getIconElement = (icon, iconSize) => (\n\t<now-icon\n\t\tclassName=\"header-section__identifier_icon\"\n\t\ticon={icon || DEFAULT_ICON}\n\t\tsize={iconSize}\n\t\tvariant=\"tertiary\"\n\t/>\n);\n\nconst identifier = ({\n\ttextHeaderLabelOne,\n\ttextHeaderLabelTwo,\n\ttextHeaderLabelThree,\n\tfeedbackPayload,\n\tenableDataLabelingFeedback,\n\thasMarginForMarker,\n\ticon,\n\ticonSize,\n\thideIcon,\n}) => {\n\tconst separator = '·';\n\tconst identifierClass = 'header-section__identifier';\n\tconst separatorClass = 'header-section__identifier-separator';\n\n\tconst identifiers = filter(\n\t\t[\n\t\t\tgetLabelElement(textHeaderLabelOne, identifierClass),\n\t\t\tgetLabelElement(textHeaderLabelTwo, identifierClass),\n\t\t\tgetLabelElement(textHeaderLabelThree, identifierClass)\n\t\t],\n\t\t(x) => x\n\t);\n\n\tconst separatedIdentifiers = flatMap(identifiers, (value, index, array) =>\n\t\tarray.length - 1 !== index\n\t\t\t? [value, getSeparatorLabelElement(separator, separatorClass)]\n\t\t\t: value\n\t);\n\tconst iconInHeader =\n\t\ticonSize === ICON_SIZE.SM ? getIconElement(icon, iconSize) : null;\n\tconst full = isEmpty(separatedIdentifiers) ? '' : '-full';\n\n\treturn (\n\t\t<div\n\t\t\ttabindex=\"-1\"\n\t\t\tclassName={`header-section ${full} ${\n\t\t\t\thasMarginForMarker ? 'hasMargin' : ''\n\t\t\t}`}>\n\t\t\t<div className=\"header-section__identifier-container\">\n\t\t\t\t{!hideIcon ? iconInHeader : null}\n\t\t\t\t{separatedIdentifiers}\n\t\t\t</div>\n\t\t\t{enableDataLabelingFeedback ? (\n\t\t\t\t<now-dropdown\n\t\t\t\t\tclassName=\"header-section__feedback-dropdown\"\n\t\t\t\t\titems={FEEDBACK_DROPDOWN_OPTIONS}\n\t\t\t\t\tselect=\"single\"\n\t\t\t\t\tplaceholder={t('Feedback')}\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\ttooltipContent={t('Select Rank for Search Result')}\n\t\t\t\t\tappend-to-payload={feedbackPayload}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</div>\n\t);\n};\n\nexport default identifier;\n","import \"@servicenow/now-avatar\";\nimport \"@servicenow/now-icon\";\nimport \"@servicenow/now-illustration\";\nimport { isEqual, isEmpty } from \"lodash\";\nimport {\n\tAVATAR,\n\tICON,\n\tIMAGE,\n\tDEFAULT_ICON,\n\tICON_SIZE,\n\tICON_TYPE_PANEL_VIEW\n} from \"../constants\";\n\nconst getImageElement = imageURL => {\n\tconst imageOnError = e => {\n\t\te.target.style.display = \"none\";\n\t};\n\n\tif (imageURL && imageURL.length > 0) {\n\t\treturn (\n\t\t\t<img\n\t\t\t\ton-error={imageOnError}\n\t\t\t\tsrc={imageURL}\n\t\t\t\tclassName=\"marker-image\"\n\t\t\t\talt=\"\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n\treturn null;\n};\n\nconst getIconElement = (icon, iconSize, customIcon, customIconSize) =>\n\t!isEmpty(customIcon) ? (\n\t\t<now-illustration-custom\n\t\t\tsrc={customIcon}\n\t\t\theight={customIconSize}\n\t\t\twidth={customIconSize}\n\t\t\taria-hidden=\"true\"\n\t\t/>\n\t) : (\n\t\t<now-icon\n\t\t\ttabindex=\"-1\"\n\t\t\tvariant=\"tertiary\"\n\t\t\ticon={icon || DEFAULT_ICON}\n\t\t\tsize={iconSize || ICON_SIZE.LG}\n\t\t\taria-hidden=\"true\"\n\t\t/>\n\t);\n\nconst getAvatarElement = (avatarURL, avatarName, iconSize, isPanelView) => (\n\t<now-avatar\n\t\ttabindex=\"-1\"\n\t\timage-src={avatarURL}\n\t\tsize={isPanelView ? ICON_SIZE.XS : iconSize ? iconSize : ICON_SIZE.MD}\n\t\tuser-name={avatarName}\n\t/>\n);\n\nconst getDisplayElement = imageInfo => {\n\tconst {\n\t\timageType,\n\t\timageURL,\n\t\ticon,\n\t\tavatarURL,\n\t\tavatarName,\n\t\thideIcon,\n\t\ticonSize,\n\t\tisPanelView,\n\t\tcustomIcon,\n\t\tcustomIconSize\n\t} = imageInfo;\n\tif (hideIcon) {\n\t\treturn null;\n\t}\n\n\tlet markerElement;\n\tif (isPanelView && isEqual(imageType, IMAGE)) {\n\t\tmarkerElement = getIconElement(ICON_TYPE_PANEL_VIEW, iconSize);\n\t} else {\n\t\tswitch (imageType) {\n\t\t\tcase IMAGE:\n\t\t\t\tmarkerElement = getImageElement(imageURL);\n\t\t\t\tbreak;\n\t\t\tcase ICON:\n\t\t\t\tmarkerElement = getIconElement(\n\t\t\t\t\ticon,\n\t\t\t\t\ticonSize,\n\t\t\t\t\tcustomIcon,\n\t\t\t\t\tcustomIconSize\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase AVATAR:\n\t\t\t\tmarkerElement = getAvatarElement(\n\t\t\t\t\tavatarURL,\n\t\t\t\t\tavatarName,\n\t\t\t\t\ticonSize,\n\t\t\t\t\tisPanelView\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tmarkerElement = getIconElement();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (markerElement === null) markerElement = getIconElement(icon, iconSize);\n\treturn markerElement;\n};\n\nconst marker = ({\n\timageType,\n\timageURL,\n\ticon,\n\tavatarURL,\n\tavatarName,\n\thideIcon,\n\ticonSize,\n\tisPanelView = false,\n\tcustomIcon,\n\tcustomIconSize\n}) => {\n\tconst titleImageDisplay = {\n\t\timageType,\n\t\timageURL,\n\t\ticon,\n\t\tavatarURL,\n\t\tavatarName,\n\t\thideIcon,\n\t\ticonSize,\n\t\tisPanelView,\n\t\tcustomIcon,\n\t\tcustomIconSize\n\t};\n\tconst markerElement = getDisplayElement(titleImageDisplay);\n\tif (markerElement) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\tclass={{\n\t\t\t\t\t\"main-content-marker\": true,\n\t\t\t\t\t\"align-margin\": !isPanelView\n\t\t\t\t}}\n\t\t\t\trole=\"presentation\"\n\t\t\t>\n\t\t\t\t{markerElement}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn null;\n};\n\nexport default marker;\n","import { isEmpty } from \"lodash\";\n\nimport {\n\tMARK_START,\n\tMARK_END,\n\tCLICK,\n\tATTACHMENT_COLUMN,\n\tREGULAR_RESULT_TYPE\n} from \"./constants\";\n\n// replaces <highlight> tag in htmlText with semantic <mark> tag for screen reader support\nexport const replaceHighlightWithMark = htmlText => {\n\tif (isEmpty(htmlText)) return htmlText;\n\n\tconst textWithMarkTag = htmlText\n\t\t.replace(/<highlight>/g, MARK_START)\n\t\t.replace(/<\\/highlight>/g, MARK_END);\n\treturn textWithMarkTag;\n};\n\nexport const removeHighlightTags = htmlText => {\n\tif (isEmpty(htmlText)) return htmlText;\n\n\t// remove <highlight> tags\n\tconst textWithoutHighlight = htmlText\n\t\t.replace(/<highlight>/g, \"\")\n\t\t.replace(/<\\/highlight>/g, \"\");\n\treturn textWithoutHighlight;\n};\n\n// strip off html tags in title\nexport const stripOffTags = htmlText => {\n\tif (isEmpty(htmlText)) return htmlText;\n\n\tconst strippedTitle = htmlText.replace(/(<([^>]+)>)/gi, \"\");\n\treturn strippedTitle;\n};\n\nexport const _getColumnsMap = columns => {\n\tif (isEmpty(columns)) return new Map();\n\n\treturn new Map(\n\t\tcolumns.map(column => [column.fieldName, column.displayValue])\n\t);\n};\n\nexport const _generateAttachmentModel = (attachment, docIndex) => {\n\tif (isEmpty(attachment)) return \"\";\n\tconst { columns, title, text, url, sysId, table } = attachment;\n\tconst columnsMap = _getColumnsMap(columns);\n\n\tconst docType = columnsMap.get(ATTACHMENT_COLUMN.DOC_TYPE);\n\tconst imageType = columnsMap.get(ATTACHMENT_COLUMN.DOC_IMAGE_TYPE);\n\tconst icon = columnsMap.get(ATTACHMENT_COLUMN.DOC_ICON);\n\tconst parentTitle = columnsMap.get(ATTACHMENT_COLUMN.PARENT_TITLE);\n\tconst parentSysId = columnsMap.get(ATTACHMENT_COLUMN.PARENT_SYS_ID);\n\tconst parentTable = columnsMap.get(ATTACHMENT_COLUMN.PARENT_TABLE);\n\n\tconst model = {\n\t\tresultType: REGULAR_RESULT_TYPE,\n\t\tfile_name: title,\n\t\tai_search_teaser_title: title,\n\t\tai_search_teaser_text: text,\n\t\tparent_title: parentTitle,\n\t\tparent_table: parentTable,\n\t\tparent_sys_id: parentSysId,\n\t\tdoctype: docType,\n\t\tdoctype_image_type: imageType,\n\t\tdoctype_image: icon,\n\t\tnavigation_url: url,\n\t\tdocument_index: docIndex,\n\t\ttable: table,\n\t\tsysId: sysId,\n\t\tsys_id: sysId,\n\t\turl: url,\n\t\ttype: CLICK\n\t};\n\treturn model;\n};\n","export const NOW_DROPDOWN_ITEM_CLICKED = \"NOW_DROPDOWN#ITEM_CLICKED\";\nexport const NOW_TEXT_LINK_CLICKED = \"NOW_TEXT_LINK#CLICKED\";\nexport const SHOW_ATTACHMENT_POPOVER = \"NOW_POPOVER#OPENED_SET\";\nexport const CHAT_TRIGGERED = \"NOW_BUTTON_ICONIC_CLICKED\";\nexport const RIGHT_CLICK = \"RIGHT_CLICK\";\n\n//external actions\nexport const SEARCH_RESULTS_FEEDBACK_CLICKED =\n\t\"SN_SEARCH_RESULT_EVAM_CARD#SEARCH_RESULTS_FEEDBACK_CLICKED\";\nexport const ATTACHMENT_VIEW_CLICKED =\n\t\"SN_SEARCH_RESULT_EVAM_CARD#VIEW_ATTACHMENT_CLICKED\";\nexport const ATTACHMENT_DOWNLOAD_ICON_CLICKED =\n\t\"SN_SEARCH_RESULT_EVAM_CARD#ATTACHMENT_LINK_CLICKED\";\nexport const CHAT_ICON_CLICKED = \"SN_SEARCH_RESULT_EVAM_CARD#CHAT_CLICKED\";\nexport const TITLE_LINK_CLICKED =\n\t\"SN_SEARCH_RESULT_EVAM_CARD#TEXT_LINK_CLICKED\";\n","import { dangerouslyCreateElementFromString } from \"@servicenow/ui-renderer-snabbdom\";\nimport isEmpty from \"lodash/isEmpty\";\nimport isEqual from \"lodash/isEqual\";\nimport { t } from \"sn-translate\";\nimport { stripOffTags } from \"../utils\";\nimport DOMPurify from \"dompurify\";\nimport {\n\tICON_SIZE,\n\tCHAT,\n\tTRUE,\n\tREQUEST_CHAT,\n\tOPEN_IN_NEW_TAB_TOOLTIP,\n\tCHAT_LABEL\n} from \"../constants\";\n\nimport { MIDDLE_CLICK, RIGHT_CLICK } from \"../../actions\";\n\nconst header = ({\n\ttitleLabel,\n\ttitleFontSize,\n\tinteraction,\n\topenInNewTab,\n\tpayload,\n\tariaLabel,\n\ttextHeaderLabelOne,\n\ttextHeaderLabelTwo,\n\ttextHeaderLabelThree,\n\tconversational,\n\tforceNewTab,\n\thref,\n\tdispatch\n}) => {\n\tconst titleText = `<div>${titleLabel}</div>`;\n\tconst titleElement = dangerouslyCreateElementFromString(\n\t\tDOMPurify.sanitize(titleText)\n\t);\n\tconst titleFontSizeClass = `title-font-size-${titleFontSize}`;\n\tconst openInNewTabLabel = isEmpty(ariaLabel)\n\t\t? stripOffTags(titleLabel)\n\t\t: ariaLabel;\n\tconst isConversational = isEqual(conversational, TRUE);\n\n\tconst handleRightClick = event => {\n\t\tif (\n\t\t\tinteraction !== \"none\" &&\n\t\t\tpayload &&\n\t\t\tevent.button === 2 &&\n\t\t\t!isEmpty(href)\n\t\t) {\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: RIGHT_CLICK,\n\t\t\t\t\tpayload\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n\n\tconst handleAuxClick = () => {\n\t\tif (interaction !== \"none\" && payload && !isEmpty(href)) {\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: MIDDLE_CLICK,\n\t\t\t\t\tpayload\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n\n\tconst mainContent = (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t\"main-content-title\": true,\n\t\t\t\t[titleFontSizeClass]: true\n\t\t\t}}\n\t\t\tdata-truncation\n\t\t>\n\t\t\t<now-text-link\n\t\t\t\tclassName=\"title-link\"\n\t\t\t\thref={isEmpty(href) ? \"javascript:void(0)\" : href}\n\t\t\t\tlabel={titleElement}\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tsize={ICON_SIZE.MD}\n\t\t\t\tinteraction={interaction}\n\t\t\t\tappend-to-payload={payload}\n\t\t\t\ton-mousedown={handleRightClick}\n\t\t\t\ton-auxclick={handleAuxClick}\n\t\t\t\topensWindow={isEmpty(href) ? false : forceNewTab}\n\t\t\t/>\n\t\t\t{isConversational ? (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\ticon=\"chat-outline\"\n\t\t\t\t\tlabel={CHAT_LABEL}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\ttooltip-content={REQUEST_CHAT}\n\t\t\t\t\tconfig-aria={{ button: { \"aria-label\": REQUEST_CHAT } }}\n\t\t\t\t\tbare\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\ttype: CHAT,\n\t\t\t\t\t\taction: payload\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{openInNewTab && !forceNewTab ? (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tclassName=\"open-in-new-tab-button\"\n\t\t\t\t\ticon=\"open-link-right-outline\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbare\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\"aria-label\": t(\n\t\t\t\t\t\t\t\t\"{0}, {1}, {2}, {3}, Open in New Tab\",\n\t\t\t\t\t\t\t\ttextHeaderLabelOne,\n\t\t\t\t\t\t\t\ttextHeaderLabelTwo,\n\t\t\t\t\t\t\t\ttextHeaderLabelThree,\n\t\t\t\t\t\t\t\topenInNewTabLabel\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\ttooltip-content={openInNewTabLabel + `,` + OPEN_IN_NEW_TAB_TOOLTIP}\n\t\t\t\t\tappend-to-payload={payload}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</div>\n\t);\n\n\t// nds-scanner-disable-start native-element\n\treturn <div>{mainContent}</div>;\n};\n\nexport default header;\n","import isEmpty from \"lodash/isEmpty\";\nimport { dangerouslyCreateElementFromString } from \"@servicenow/ui-renderer-snabbdom\";\n\nconst description = ({ summary, summaryFontSize, rawResponsePresent }) => {\n\tif (isEmpty(summary)) return null;\n\n\tconst summaryText = `<div>${summary}</div>`;\n\tconst summaryElement = dangerouslyCreateElementFromString(summaryText);\n\n\treturn (\n\t\t<div\n\t\t\tdata-truncation\n\t\t\tclassName={`summaryText  summary-font-size-${summaryFontSize}${\n\t\t\t\trawResponsePresent ? \" summary-text-raw-response\" : \"\"\n\t\t\t}`}\n\t\t>\n\t\t\t{summaryElement}\n\t\t</div>\n\t);\n};\n\nexport default description;\n","import \"@servicenow/now-label-value\";\nimport isEmpty from \"lodash/isEmpty\";\n\nimport { DETAIL_LABEL_TYPES, DETAIL_PROP_NAMES } from \"../constants\";\n\nconst propsHaveNthDetail = (\n\tpropNameSet,\n\tprops,\n\trequireLabelAndValue = false\n) => {\n\tconst hasLabel =\n\t\tpropNameSet.label in props && !isEmpty(props[propNameSet.label]);\n\tconst hasValue =\n\t\tpropNameSet.value in props && !isEmpty(props[propNameSet.value]);\n\treturn requireLabelAndValue ? hasLabel && hasValue : hasLabel || hasValue;\n};\n\nconst getSecondaryInformation = (props, requireLabelAndValue = false) => {\n\tconst detailValues = [];\n\tDETAIL_PROP_NAMES.forEach(propSet => {\n\t\tif (propsHaveNthDetail(propSet, props, requireLabelAndValue)) {\n\t\t\tdetailValues.push([\n\t\t\t\t{\n\t\t\t\t\tlabel: props[propSet.label],\n\t\t\t\t\tvalue: props[propSet.value]\n\t\t\t\t}\n\t\t\t]);\n\t\t}\n\t});\n\treturn detailValues;\n};\n\nconst getStackedLabelElement = props => {\n\tconst { requireLabelAndValue } = props;\n\tconst secondaryInfo = getSecondaryInformation(props, requireLabelAndValue);\n\tconst style = {\n\t\tmaxWidth: `${100 / secondaryInfo.length}%`,\n\t\talignSelf: \"flex-end\"\n\t};\n\n\t// nds-scanner-disable-start inline-styles\n\tconst stackedLabels = secondaryInfo.map((value, index) => (\n\t\t<div style={style} className=\"label-value-section__stacked-item\">\n\t\t\t<now-label-value-stacked\n\t\t\t\talign=\"horizontal-equal\"\n\t\t\t\tdelimiter=\",\"\n\t\t\t\titems={secondaryInfo[index]}\n\t\t\t\tsize=\"sm\"\n\t\t\t\ttruncated\n\t\t\t/>\n\t\t</div>\n\t));\n\t// nds-scanner-disable-stop inline-styles\n\n\treturn (\n\t\t<div className=\"label-value-section\">\n\t\t\t<div className=\"label-value-section__stacked\">{stackedLabels}</div>\n\t\t</div>\n\t);\n};\n\nconst getInlineLabelElement = props => {\n\tconst { detailLabelSeparator, requireLabelAndValue } = props;\n\tconst secondaryInfo = getSecondaryInformation(props, requireLabelAndValue);\n\tconst detailElements = [];\n\tsecondaryInfo.forEach((detail, indx) => {\n\t\tif (indx > 0 && !isEmpty(detailLabelSeparator)) {\n\t\t\tdetailElements.push(\n\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t<now-label-value-inline\n\t\t\t\t\t\tclassName=\"label-value-section__separator\"\n\t\t\t\t\t\tlabel={detailLabelSeparator}\n\t\t\t\t\t\ttruncated\n\t\t\t\t\t/>\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\t\tdetailElements.push(\n\t\t\t<now-label-value-inline\n\t\t\t\tlabel={detail[0].label}\n\t\t\t\tvalue={detail[0].value}\n\t\t\t\ttruncated\n\t\t\t/>\n\t\t);\n\t});\n\n\treturn (\n\t\t<div className=\"label-value-section\">\n\t\t\t<div className=\"label-value-section__inline\">{detailElements}</div>\n\t\t</div>\n\t);\n};\n\nconst labelValue = props => {\n\tconst { detailLabelType } = props;\n\tconst labelType = isEmpty(detailLabelType)\n\t\t? DETAIL_LABEL_TYPES.INLINE\n\t\t: detailLabelType;\n\n\tlet labelElement = null;\n\tif (labelType === DETAIL_LABEL_TYPES.STACKED) {\n\t\tlabelElement = getStackedLabelElement(props);\n\t} else if (labelType === DETAIL_LABEL_TYPES.INLINE) {\n\t\tlabelElement = getInlineLabelElement(props);\n\t}\n\treturn labelElement;\n};\n\nexport default labelValue;\n","import has from \"lodash/has\";\nimport isEmpty from \"lodash/isEmpty\";\n\nconst button = ({ footerLinkAction, model }) => {\n\tif (\n\t\tisEmpty(footerLinkAction) ||\n\t\tisEmpty(model) ||\n\t\t!has(footerLinkAction, \"label\")\n\t) {\n\t\treturn null;\n\t}\n\n\tconst footerLinkPayload = { action: footerLinkAction, model };\n\n\treturn (\n\t\t<now-button-bare\n\t\t\tclassName=\"footer-content-section__button\"\n\t\t\tlabel={footerLinkAction.label}\n\t\t\tsize=\"sm\"\n\t\t\tvariant=\"secondary\"\n\t\t\tappend-to-payload={footerLinkPayload}\n\t\t\thide-padding\n\t\t/>\n\t);\n};\n\nexport default button;\n","import \"@servicenow/now-button\";\nimport { t } from \"sn-translate\";\nimport { isEmpty } from \"lodash\";\nimport { sanitizeHref } from \"@servicenow/library-enhanced-utils\";\n\nimport {\n\tremoveHighlightTags,\n\t_generateAttachmentModel,\n\t_getColumnsMap\n} from \"../utils\";\nimport {\n\tMAX_ATTACHMENTS,\n\tATTACHMENT_ICON,\n\tATTACHMENT_COLUMN,\n\tICON_SIZE,\n\tCLICK,\n\tSHOW_LESS,\n\tATTACHMENT_SHOW_MORE_CLICKED\n} from \"../constants\";\nimport {\n\tATTACHMENT_VIEW_CLICKED,\n\tATTACHMENT_DOWNLOAD_ICON_CLICKED\n} from \"../../actions\";\n\nconst sanitizeUrl = url => {\n\tconst sanitizedUrl = sanitizeHref(url);\n\tif (sanitizedUrl === undefined) {\n\t\tconsole.warn(\"Removing unsafe url from attachment: \", url);\n\t}\n\treturn sanitizedUrl;\n};\n\nconst attachment = ({\n\tattachments,\n\tshowAttachmentOverflow,\n\tdocIndex,\n\tdispatch,\n\tuseAttachmentViewer,\n\tuseAttachmentViewerParameters\n}) => {\n\tconst attachmentsOverflow =\n\t\t!isEmpty(attachments) && attachments.length > MAX_ATTACHMENTS\n\t\t\t? attachments.length - MAX_ATTACHMENTS\n\t\t\t: 0;\n\tconst showOverflowButton = attachmentsOverflow > 0;\n\tconst attachmentOverflowLabel =\n\t\tshowOverflowButton && showAttachmentOverflow\n\t\t\t? SHOW_LESS\n\t\t\t: t(\"Show more ({0})\", attachmentsOverflow);\n\tconst attachmentsToShow = showAttachmentOverflow\n\t\t? attachments\n\t\t: attachments.slice(0, MAX_ATTACHMENTS);\n\n\tconst showMoreButton = showOverflowButton ? (\n\t\t<now-button-bare\n\t\t\tclassName=\"attachment-content__view-more-link\"\n\t\t\tlabel={attachmentOverflowLabel}\n\t\t\tvariant=\"tertiary\"\n\t\t\tsize={ICON_SIZE.SM}\n\t\t\tappend-to-payload={{\n\t\t\t\ttype: ATTACHMENT_SHOW_MORE_CLICKED\n\t\t\t}}\n\t\t/>\n\t) : null;\n\n\tconst attachmentView = attachment => {\n\t\tconst { columns, title, url, sysId, table } = attachment;\n\t\tconst columnsMap = _getColumnsMap(columns);\n\t\tconst icon = columnsMap.get(ATTACHMENT_COLUMN.DOC_ICON);\n\t\tconst titleWithoutHighlight = removeHighlightTags(title);\n\t\tvar attachmentUrl = url;\n\t\tvar downloadUrl = url;\n\t\tif (useAttachmentViewerParameters) {\n\t\t\tconst parentTable = columnsMap.get(ATTACHMENT_COLUMN.PARENT_TABLE);\n\t\t\tconst parentSysId = columnsMap.get(ATTACHMENT_COLUMN.PARENT_SYS_ID);\n\t\t\tconst baseUrl = `${url}&sysparm_viewer_table=${parentTable}&sysparm_viewer_id=${parentSysId}`;\n\t\t\tattachmentUrl = `${baseUrl}&view=${useAttachmentViewer}`;\n\t\t\tdownloadUrl = `${baseUrl}&view=false`;\n\t\t} else if (useAttachmentViewer) {\n\t\t\tattachmentUrl = \"/$viewer.do?sysparm_stack=no&sysparm_sys_id=\" + sysId;\n\t\t}\n\n\t\t// nds-scanner-disable-start\n\t\treturn (\n\t\t\t<div className=\"attachment-content\">\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"attachment-content__marker-icon\"\n\t\t\t\t\ticon={!isEmpty(icon) ? icon : ATTACHMENT_ICON.DEFAULT_DOC}\n\t\t\t\t\tsize={ICON_SIZE.MD}\n\t\t\t\t/>\n\t\t\t\t<div className=\"attachment-content__main\">\n\t\t\t\t\t<a\n\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: ATTACHMENT_VIEW_CLICKED,\n\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\tactionPayload: {\n\t\t\t\t\t\t\t\t\t\t\ttable,\n\t\t\t\t\t\t\t\t\t\t\tsysId,\n\t\t\t\t\t\t\t\t\t\t\turl\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tmodel: _generateAttachmentModel(attachment, docIndex),\n\t\t\t\t\t\t\t\t\t\ttype: CLICK\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"attachment-content__main-heading-link\"\n\t\t\t\t\t\thref={sanitizeUrl(attachmentUrl)}\n\t\t\t\t\t\tdownload={useAttachmentViewer ? false : true}\n\t\t\t\t\t\ttarget={useAttachmentViewer ? \"_blank\" : \"_self\"}\n\t\t\t\t\t>\n\t\t\t\t\t\t{titleWithoutHighlight}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a\n\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: ATTACHMENT_DOWNLOAD_ICON_CLICKED,\n\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\tactionPayload: {\n\t\t\t\t\t\t\t\t\t\t\ttable,\n\t\t\t\t\t\t\t\t\t\t\tsysId,\n\t\t\t\t\t\t\t\t\t\t\turl\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tmodel: _generateAttachmentModel(attachment, docIndex),\n\t\t\t\t\t\t\t\t\t\ttype: CLICK\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"attachment-content__main-heading-link\"\n\t\t\t\t\t\thref={sanitizeUrl(downloadUrl)}\n\t\t\t\t\t\tdownload\n\t\t\t\t\t>\n\t\t\t\t\t\t<now-icon\n\t\t\t\t\t\t\tclassName=\"attachment-content__main-heading-link-icon\"\n\t\t\t\t\t\t\ticon={ATTACHMENT_ICON.DOWNLOAD}\n\t\t\t\t\t\t\tsize={ICON_SIZE.SM}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t\t// nds-scanner-disable-stop\n\t};\n\n\treturn (\n\t\t<div>\n\t\t\t<div className=\"attachment-container\">\n\t\t\t\t{attachmentsToShow.map(attachment => attachmentView(attachment))}\n\t\t\t\t{showMoreButton}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default attachment;\n","import \"@servicenow/now-text-link\";\nimport { isEmpty } from \"lodash\";\nimport {\n\tstripOffTags,\n\t_generateAttachmentModel,\n\t_getColumnsMap\n} from \"../utils\";\nimport {\n\tATTACHMENT_COLUMN,\n\tATTACHMENT_ICON,\n\tICON_SIZE,\n\tCLICK\n} from \"../constants\";\nimport { ATTACHMENT_VIEW_CLICKED } from \"../../actions\";\n\nconst attachment_viewer = (state, dispatch) => {\n\tconst {\n\t\tproperties: { attachments, docIndex }\n\t} = state;\n\tconst attachmentView = attachment => {\n\t\tconst { columns, title, url, sysId, table } = attachment;\n\t\tconst columnsMap = _getColumnsMap(columns);\n\t\tconst icon = columnsMap.get(ATTACHMENT_COLUMN.DOC_ICON);\n\n\t\t// we are using the platform document viewer which is a UI page route with sys_id of the attachment\n\t\tconst newUrl = \"/$viewer.do?sysparm_stack=no&sysparm_sys_id=\" + sysId;\n\t\t// nds-scanner-disable-start\n\t\treturn (\n\t\t\t<div className=\"attachment-content\">\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"attachment-content__marker-icon-popover\"\n\t\t\t\t\ticon={!isEmpty(icon) ? icon : ATTACHMENT_ICON.DEFAULT_DOC}\n\t\t\t\t\tsize={ICON_SIZE.MD}\n\t\t\t\t/>\n\t\t\t\t<span>\n\t\t\t\t\t<a\n\t\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: ATTACHMENT_VIEW_CLICKED,\n\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\tactionPayload: {\n\t\t\t\t\t\t\t\t\t\t\ttable,\n\t\t\t\t\t\t\t\t\t\t\tsysId,\n\t\t\t\t\t\t\t\t\t\t\turl\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tmodel: _generateAttachmentModel(attachment, docIndex),\n\t\t\t\t\t\t\t\t\t\ttype: CLICK\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"attachment-content__main-heading-link\"\n\t\t\t\t\t\thref={newUrl}\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{stripOffTags(title)}\n\t\t\t\t\t</a>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t);\n\t\t// nds-scanner-disable-stop\n\t};\n\n\treturn (\n\t\t<div className=\"popover\">\n\t\t\t<div className=\"attachment-content-main\">\n\t\t\t\t{attachments.map(attachment => attachmentView(attachment))}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\nexport default attachment_viewer;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport view from \"./attachment_viewer\";\nimport styles from \"../styles/index.scss\";\n\ncreateCustomElement(\"sn-search-attachment-view-popover\", {\n\tview,\n\tproperties: {\n\t\tattachments: {\n\t\t\tdefault: \"[]\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\tdocIndex: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t}\n\t},\n\tstyles\n});\n","import \"@servicenow/now-button\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { COPY, EVAM_VIEW_CONFIG, SYS_ID } from \"../constants\";\n\nconst getRawResponseItem = (key, value) => {\n\treturn (\n\t\t<span className=\"raw-response-container__text\">\n\t\t\t{key.charAt(0).toUpperCase() + key.slice(1)}: {value}\n\t\t\t{key === SYS_ID && (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tclassName=\"raw-response-container__icon\"\n\t\t\t\t\ticon=\"clone-outline\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ttooltipContent={COPY}\n\t\t\t\t\tbare\n\t\t\t\t\thidePadding\n\t\t\t\t\ton-click={() => navigator.clipboard.writeText(value)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{key === EVAM_VIEW_CONFIG && (\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tclassName=\"raw-response-container__icon\"\n\t\t\t\t\ticon=\"open-link-right-outline\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ttooltipContent={EVAM_VIEW_CONFIG}\n\t\t\t\t\tbare\n\t\t\t\t\thidePadding\n\t\t\t\t\ton-click={() =>\n\t\t\t\t\t\twindow.open(\n\t\t\t\t\t\t\t`sys_ux_composite_data_template_predicate.do?sys_id=${value}`,\n\t\t\t\t\t\t\t\"_blank\"\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n\nconst debug = ({ rawResponse }) => {\n\tif (isEmpty(rawResponse)) return null;\n\treturn (\n\t\t<div className=\"raw-response-container\">\n\t\t\t{Object.entries(rawResponse).map(([key, value]) =>\n\t\t\t\tgetRawResponseItem(key, value)\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default debug;\n","import \"@servicenow/now-card\";\nimport \"@servicenow/now-popover\";\nimport { isEmpty, size } from \"lodash\";\n\nimport Identifier from \"./sections/identifier\";\nimport Marker from \"./sections/marker\";\nimport Header from \"./sections/header\";\nimport Description from \"./sections/description\";\nimport LabelValue from \"./sections/labelValue\";\nimport Button from \"./sections/button\";\nimport Attachment from \"./sections/attachment\";\nimport {\n\treplaceHighlightWithMark,\n\tstripOffTags,\n\tremoveHighlightTags\n} from \"./utils\";\nimport {\n\tDETAILS_POSITIONS,\n\tICON_SIZE,\n\tATTACHMENT_POPOVER_VIEW,\n\tCONVERSATIONAL_AGENTIC\n} from \"./constants\";\nimport \"./sections/sn-search-attachment-view-popover\";\nimport Debug from \"./sections/debug\";\n\nconst SearchResult = ({ state, dispatch }) => {\n\tconst {\n\t\tproperties: {\n\t\t\ttextHeaderLabelOne,\n\t\t\ttextHeaderLabelTwo,\n\t\t\ttextHeaderLabelThree,\n\t\t\tdetailPosition,\n\t\t\timageType,\n\t\t\timageURL,\n\t\t\ticon,\n\t\t\tavatarURL,\n\t\t\tavatarName,\n\t\t\ttitle,\n\t\t\ttitleLabel,\n\t\t\tariaLabel,\n\t\t\tsummary,\n\t\t\tclickAction,\n\t\t\tfooterLinkAction,\n\t\t\tmodel,\n\t\t\ttitleFontSize,\n\t\t\tsummaryFontSize,\n\t\t\tenableDataLabelingFeedback,\n\t\t\ticonSize,\n\t\t\thideIcon,\n\t\t\topenInNewTab,\n\t\t\tparsedAttachments,\n\t\t\tisPanelView,\n\t\t\thideDescription,\n\t\t\tsearchFromChat,\n\t\t\trawResponse,\n\t\t\thasImage,\n\t\t\tshowImageOnRight,\n\t\t\tcustomIcon,\n\t\t\tcustomIconSize,\n\t\t\tuseAttachmentViewer,\n\t\t\tuseAttachmentViewerParameters,\n\t\t\tforceNewTab,\n\t\t\tremoveHitHighlighting,\n\t\t\tshowCardBorder,\n\t\t\tremoveBottomBorder,\n\t\t\tintegratedChatEnabled,\n\t\t\thref,\n\t\t\tdisableHref\n\t\t},\n\t\tshowAttachmentPopOver,\n\t\tshowAttachmentOverflow\n\t} = state;\n\n\tconst isActionsValid = !isEmpty(clickAction) && !isEmpty(model);\n\tconst interaction =\n\t\t!enableDataLabelingFeedback && isActionsValid ? \"click\" : \"none\";\n\t// if disableHref is true, use undefined as the href value to prevent the card from linking\n\t// otherwise, use the href prop or the model's navigation_url\n\tconst hrefValue = disableHref ? undefined : href || model?.navigation_url;\n\tconst payload = isActionsValid ? { action: clickAction, model } : null;\n\tconst { document_index: docIndex } = model;\n\n\tconst computedTitle = !isEmpty(titleLabel) ? titleLabel : title;\n\tconst markedSummary = removeHitHighlighting\n\t\t? removeHighlightTags(summary)\n\t\t: replaceHighlightWithMark(summary);\n\tconst markedTitle = removeHitHighlighting\n\t\t? removeHighlightTags(computedTitle)\n\t\t: replaceHighlightWithMark(computedTitle);\n\tconst label = isEmpty(ariaLabel) ? stripOffTags(computedTitle) : ariaLabel;\n\n\tconst textHeaderPresent =\n\t\ttextHeaderLabelOne || textHeaderLabelTwo || textHeaderLabelThree;\n\tconst labelComp = <LabelValue {...state.properties} />;\n\n\tvar count = !isEmpty(parsedAttachments) ? size(parsedAttachments) : 0;\n\tvar conversational = integratedChatEnabled\n\t\t? !isEmpty(model) &&\n\t\t  model.cc_render_type?.toLowerCase() === CONVERSATIONAL_AGENTIC\n\t\t\t? \"true\"\n\t\t\t: \"false\"\n\t\t: !isEmpty(model)\n\t\t? model.isConversational\n\t\t: \"false\";\n\tconst isDebugView = !isEmpty(rawResponse);\n\n\tconst _imageOnError = e => {\n\t\te.target.style.display = \"none\";\n\t};\n\n\treturn (\n\t\t<now-card\n\t\t\ttitle=\"\"\n\t\t\tsize={isPanelView ? \"sm\" : \"md\"}\n\t\t\tclass={{\n\t\t\t\t\"now-card-template\": true,\n\t\t\t\t\"right-panel-view\": isPanelView,\n\t\t\t\t\"full-page-view\": searchFromChat\n\t\t\t}}\n\t\t\tinteraction=\"none\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t\"card-outer-container\": true,\n\t\t\t\t\t\"show-card-border\": showCardBorder,\n\t\t\t\t\t\"remove-bottom-border\": removeBottomBorder\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"now-card-container\": true,\n\t\t\t\t\t\t\"right-panel\": isPanelView,\n\t\t\t\t\t\t\"debug-view\": isDebugView,\n\t\t\t\t\t\t\"hide-icon\": hideIcon && !hasImage\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{iconSize !== ICON_SIZE.SM && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"marker-icon-placement\": true,\n\t\t\t\t\t\t\t\t\"align-no-header\": !textHeaderPresent,\n\t\t\t\t\t\t\t\t\"add-top-margin\": isPanelView\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Marker\n\t\t\t\t\t\t\t\timageType={imageType}\n\t\t\t\t\t\t\t\timageURL={imageURL}\n\t\t\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\t\t\tavatarURL={avatarURL}\n\t\t\t\t\t\t\t\tavatarName={avatarName}\n\t\t\t\t\t\t\t\ticonSize={isPanelView ? ICON_SIZE.MD : iconSize}\n\t\t\t\t\t\t\t\thideIcon={hideIcon}\n\t\t\t\t\t\t\t\tisPanelView={isPanelView}\n\t\t\t\t\t\t\t\tcustomIcon={customIcon}\n\t\t\t\t\t\t\t\tcustomIconSize={customIconSize}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\"header-content-section\": true,\n\t\t\t\t\t\t\t\"panel-view\": isPanelView\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!isPanelView ? (\n\t\t\t\t\t\t\t<Identifier\n\t\t\t\t\t\t\t\ttextHeaderLabelOne={textHeaderLabelOne}\n\t\t\t\t\t\t\t\ttextHeaderLabelTwo={textHeaderLabelTwo}\n\t\t\t\t\t\t\t\ttextHeaderLabelThree={textHeaderLabelThree}\n\t\t\t\t\t\t\t\tfeedbackPayload={payload}\n\t\t\t\t\t\t\t\tenableDataLabelingFeedback={enableDataLabelingFeedback}\n\t\t\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\t\t\ticonSize={iconSize}\n\t\t\t\t\t\t\t\thasMarginForMarker={!hideIcon}\n\t\t\t\t\t\t\t\thideIcon={hideIcon}\n\t\t\t\t\t\t\t\topenInNewTab={openInNewTab}\n\t\t\t\t\t\t\t\trawResponse={rawResponse}\n\t\t\t\t\t\t\t\ttitleLabel={label}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<div className=\"main-content\">\n\t\t\t\t\t\t\t<Header\n\t\t\t\t\t\t\t\tariaHidden\n\t\t\t\t\t\t\t\ttitleLabel={isPanelView ? computedTitle : markedTitle}\n\t\t\t\t\t\t\t\ttitleFontSize={isPanelView ? \"md\" : titleFontSize}\n\t\t\t\t\t\t\t\tisPanelView={isPanelView}\n\t\t\t\t\t\t\t\tinteraction={interaction}\n\t\t\t\t\t\t\t\ttextHeaderLabelOne={textHeaderLabelOne}\n\t\t\t\t\t\t\t\ttextHeaderLabelTwo={textHeaderLabelTwo}\n\t\t\t\t\t\t\t\ttextHeaderLabelThree={textHeaderLabelThree}\n\t\t\t\t\t\t\t\topenInNewTab={openInNewTab}\n\t\t\t\t\t\t\t\tpayload={payload}\n\t\t\t\t\t\t\t\tconversational={conversational}\n\t\t\t\t\t\t\t\tforceNewTab={forceNewTab}\n\t\t\t\t\t\t\t\tremoveHitHighlighting={removeHitHighlighting}\n\t\t\t\t\t\t\t\thref={hrefValue}\n\t\t\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{detailPosition === DETAILS_POSITIONS.ABOVE && !isPanelView ? (\n\t\t\t\t\t\t\t\t<div className=\"details-container-top\">{labelComp}</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t{!hideDescription ? (\n\t\t\t\t\t\t\t\t<Description\n\t\t\t\t\t\t\t\t\tsummary={isPanelView ? summary : markedSummary}\n\t\t\t\t\t\t\t\t\tsummaryFontSize={summaryFontSize}\n\t\t\t\t\t\t\t\t\trawResponsePresent={!isEmpty(rawResponse)}\n\t\t\t\t\t\t\t\t\tremoveHitHighlighting={removeHitHighlighting}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"footer-content-section\">\n\t\t\t\t\t\t\t{detailPosition === DETAILS_POSITIONS.BELOW && !isPanelView\n\t\t\t\t\t\t\t\t? labelComp\n\t\t\t\t\t\t\t\t: null}\n\n\t\t\t\t\t\t\t{!isPanelView ? (\n\t\t\t\t\t\t\t\t<Button footerLinkAction={footerLinkAction} model={model} />\n\t\t\t\t\t\t\t) : !isEmpty(parsedAttachments) ? (\n\t\t\t\t\t\t\t\t<now-popover\n\t\t\t\t\t\t\t\t\tinteractionType=\"none\"\n\t\t\t\t\t\t\t\t\topened={showAttachmentPopOver}\n\t\t\t\t\t\t\t\t\tpositions={[\n\t\t\t\t\t\t\t\t\t\t{ target: \"bottom-start\", content: \"top-start\" },\n\t\t\t\t\t\t\t\t\t\t{ target: \"top-start\", content: \"bottom-start\" }\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\t\t\ttype: ATTACHMENT_POPOVER_VIEW,\n\t\t\t\t\t\t\t\t\t\tmodel\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<now-button-bare\n\t\t\t\t\t\t\t\t\t\tclassName=\"footer-attachment-section__button\"\n\t\t\t\t\t\t\t\t\t\ticon-start=\"paperclip-outline\"\n\t\t\t\t\t\t\t\t\t\tlabel={count}\n\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\thide-padding\n\t\t\t\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\t\t\t\ttype: ATTACHMENT_POPOVER_VIEW,\n\t\t\t\t\t\t\t\t\t\t\tmodel\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<now-card\n\t\t\t\t\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\tinteraction=\"none\"\n\t\t\t\t\t\t\t\t\t\thideShadow\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<sn-search-attachment-view-popover\n\t\t\t\t\t\t\t\t\t\t\tattachments={parsedAttachments}\n\t\t\t\t\t\t\t\t\t\t\tdocIndex={docIndex}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</now-card>\n\t\t\t\t\t\t\t\t</now-popover>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!isEmpty(parsedAttachments) && !isPanelView ? (\n\t\t\t\t\t\t\t<Attachment\n\t\t\t\t\t\t\t\tattachments={parsedAttachments}\n\t\t\t\t\t\t\t\tshowAttachmentOverflow={showAttachmentOverflow}\n\t\t\t\t\t\t\t\tdocIndex={docIndex}\n\t\t\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\t\t\tuseAttachmentViewer={useAttachmentViewer}\n\t\t\t\t\t\t\t\tuseAttachmentViewerParameters={useAttachmentViewerParameters}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{showImageOnRight && hasImage && !isPanelView && (\n\t\t\t\t\t<div className=\"preview-image-container\">\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\ton-error={_imageOnError}\n\t\t\t\t\t\t\tsrc={avatarURL || imageURL}\n\t\t\t\t\t\t\talt={avatarName || stripOffTags(computedTitle)}\n\t\t\t\t\t\t\tclassName=\"preview-image\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{isDebugView ? <Debug rawResponse={rawResponse} /> : null}\n\t\t</now-card>\n\t);\n};\nexport default (state, { dispatch }) => {\n\treturn <SearchResult state={state} dispatch={dispatch} />;\n};\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport rtlBehavior from \"@servicenow/behavior-rtl\";\nimport isEmpty from \"lodash/isEmpty\";\n\nimport view from \"./view\";\nimport styles from \"./styles/index.scss\";\nimport {\n\tDECLARATIVE_ACTION,\n\tNOW_BUTTON_BARE_CLICKED,\n\tNOW_BUTTON_ICONIC_CLICKED,\n\tREGULAR_RESULT_TYPE,\n\tCLICK,\n\tOPEN_IN_NEW_TAB,\n\tATTACHMENT_POPOVER_VIEW,\n\tCHAT_CLICKED,\n\tCHAT,\n\tCUSTOM_ICON_DEFAULT_SIZE,\n\tATTACHMENT_SHOW_MORE_CLICKED,\n\tRIGHT_CLICK as RIGHT_CLICK_TYPE\n} from \"./constants\";\nimport { RIGHT_CLICK } from \"../actions\";\nimport {\n\tNOW_DROPDOWN_ITEM_CLICKED,\n\tSEARCH_RESULTS_FEEDBACK_CLICKED,\n\tNOW_TEXT_LINK_CLICKED,\n\tSHOW_ATTACHMENT_POPOVER,\n\tCHAT_ICON_CLICKED\n} from \"../actions\";\nimport truncationBehavior from \"@servicenow/behavior-truncation\";\nimport tooltipBehavior from \"@servicenow/behavior-tooltip\";\n\n/**\n * Allow users to browse through search results that match their search term.\n *\n * ```jsx\n * \t<sn-search-result-evam-card\n * \t  imageType={imageType}\n * \t  imageURL={imageURL}\n * \t  icon={icon}\n *    iconSize={iconSize}\n * \t  avatarURL={avatarURL}\n * \t  avatarName={avatarName}\n * \t  textHeaderLabelOne={textHeaderLabelOne}\n * \t  textHeaderLabelTwo={textHeaderLabelTwo}\n * \t  textHeaderLabelThree={textHeaderLabelThree}\n * \t  title={title}\n * \t  titleLabel={titleLabel}\n * \t  summary={summary}\n * \t  detailLabelType={detailLabelType}\n * \t  detailLabelSeparator={detailLabelSeparator}\n * \t  detailPosition={detailPosition}\n * \t  detailLabelOne={detailLabelOne}\n * \t  detailValueOne={detailValueOne}\n * \t  detailLabelTwo={detailLabelTwo}\n * \t  detailValueTwo={detailValueTwo}\n * \t  detailLabelThree={detailLabelThree}\n * \t  detailValueThree={detailValueThree}\n * \t  detailLabelFour={detailLabelFour}\n * \t  detailValueFour={detailValueFour}\n * \t  detailLabelFive={detailLabelFive}\n * \t  detailValueFive={detailValueFive}\n * \t  detailLabelSix={detailLabelSix}\n * \t  detailValueSix={detailValueSix}\n * \t  detailLabelSeven={detailLabelSeven}\n * \t  detailValueSeven={detailValueSeven}\n * \t  detailLabelEight={detailLabelEight}\n * \t  detailValueEight={detailValueEight}\n * \t  detailLabelNine={detailLabelNine}\n * \t  detailValueNine={detailValueNine}\n * \t  detailLabelTen={detailLabelTen}\n * \t  detailValueTen={detailValueTen}\n * \t  clickAction={clickAction}\n * \t  footerLinkAction={footerLinkAction}\n * \t  model={model}\n * \t  isGlobal={isGlobal}\n *    hideIcon={hideIcon}\n *    openInNewTab={openInNewTab}\n * \t/>\n * ```\n *\n * @seismicElement sn-search-result-evam-card\n * @summary Card component with a configurable interface for displaying search results.\n */\ncreateCustomElement(\"sn-search-result-evam-card\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tinitialState: {\n\t\tshowAttachmentPopOver: false,\n\t\tshowAttachmentOverflow: false\n\t},\n\tproperties: {\n\t\t/**\n\t\t * Defines the main title of the card.\n\t\t * @type {string}\n\t\t */\n\t\ttitle: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the preferred main title of the card.\n\t\t * @type {string}\n\t\t */\n\t\ttitleLabel: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies what type of marker to display.\n\t\t * @type ('image' | 'avatar' | 'icon')\n\t\t */\n\t\timageType: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the image URL to display when the `imageType` property is set to image.\n\t\t * @type {string}\n\t\t */\n\t\timageURL: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the name of the icon to display when the `imageType` property is set to icon, or as a fallback icon when the `imageType` is set to image but there is no imageURL provided.\n\t\t * @type {string}\n\t\t */\n\t\ticon: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the size of the icon to display in search results\n\t\t * @type {('xl'|'lg'|'md'|'sm')}\n\t\t */\n\t\ticonSize: {\n\t\t\tdefault: \"lg\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"xl\", \"lg\", \"md\", \"sm\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the avatar URL to display when the `imageType` property is set to avatar.\n\t\t * @type {string}\n\t\t */\n\t\tavatarURL: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the avatar name to display when the `imageType` property is set to avatar.\n\t\t * @type {string}\n\t\t */\n\t\tavatarName: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the text displayed in the main content of the card.\n\t\t * @type {string}\n\t\t */\n\t\tsummary: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the type of label-value pair to use.\n\t\t * @type ('stacked' | 'inline')\n\t\t */\n\t\tdetailLabelType: {\n\t\t\tdefault: \"inline\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the characters to use to separate the inline label-value pairs.\n\t\t * The separator shows if both label-value pairs are specified.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelSeparator: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the detail pairs should be shown above or below the main content\n\t\t * @type ('above' | 'below')\n\t\t */\n\t\tdetailPosition: {\n\t\t\tdefault: \"below\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the first label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelOne: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the first label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueOne: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the second label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelTwo: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the second label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueTwo: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the third label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelThree: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the third label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueThree: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the fourth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelFour: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the fourth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueFour: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the fifth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelFive: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the fifth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueFive: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the sixth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelSix: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the sixth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueSix: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the seventh label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelSeven: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the seventh label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueSeven: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the eighth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelEight: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the eighth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueEight: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the ninth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelNine: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the ninth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueNine: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the label text of the tenth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailLabelTen: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the value text of the tenth label-value pair.\n\t\t * @type {string}\n\t\t */\n\t\tdetailValueTen: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the action metadata when the user clicks a card.\n\t\t * @type {object}\n\t\t */\n\t\tclickAction: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the action metadata for the action button located on the footer of the card.\n\t\t * @type {object}\n\t\t */\n\t\tfooterLinkAction: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the text located at the top of the card.\n\t\t * This is the first of three available slots.\n\t\t * @type {string}\n\t\t */\n\t\ttextHeaderLabelOne: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the text located at the top of the card.\n\t\t * This is the second of three available slots.\n\t\t * @type {string}\n\t\t */\n\t\ttextHeaderLabelTwo: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the text located at the top of the card.\n\t\t * This is the third of three available slots.\n\t\t * @type {string}\n\t\t */\n\t\ttextHeaderLabelThree: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Specifies a label to describe the click interaction with the card.\n\t\t * @type {string}\n\t\t */\n\t\tariaLabel: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Specifies the font size applied to card title.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\ttitleFontSize: {\n\t\t\tdefault: \"md\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Specifies the font size applied to card summary.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * Options include: ['sm', 'md','lg', 'xl']\n\t\t */\n\t\tsummaryFontSize: {\n\t\t\tdefault: \"sm\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies an object that contains data associated with the card.\n\t\t * @type {string}\n\t\t */\n\t\tmodel: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Enables the feedback dropdown for the card (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingFeedback: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Specifies where to show labels when there is no value\n\t\t * @type {boolean}\n\t\t */\n\t\trequireLabelAndValue: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if global search or not\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if any icon should display or not\n\t\t * @type {boolean}\n\t\t */\n\t\thideIcon: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Speficies whether the open-in-new-tab icon button should be shown\n\t\t * @type {boolean}\n\t\t */\n\t\topenInNewTab: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the data for collapsed attachments\n\t\t * @type {string}\n\t\t */\n\t\tattachments: {\n\t\t\tdefault: \"[]\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Computed property for component to store parsed attachments\n\t\t */\n\t\tparsedAttachments: {\n\t\t\tcomputed({ properties: { attachments } }) {\n\t\t\t\tif (isEmpty(attachments)) return [];\n\t\t\t\treturn JSON.parse(attachments);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the mini card should be displayed or not\n\t\t * @type {boolean}\n\t\t */\n\t\tisPanelView: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if description in panel view should be displayed or not\n\t\t * @type {boolean}\n\t\t */\n\t\thideDescription: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the full-page view that is displayed when the \"View All\" link\n\t\t * in the right panel of the NASS VA component is clicked.\n\t\t */\n\t\tsearchFromChat: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/** Specifies the raw details for the results,\n\t\t * used when debug mode is enabled in search preview. */\n\t\trawResponse: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Speficies whether clicking on the result should open it in a new tab\n\t\t * @type {boolean}\n\t\t */\n\t\tforceNewTab: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies whether the result is conversational\n\t\t * @type {string}\n\t\t */\n\t\tisConversational: {\n\t\t\tdefault: \"false\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Computed property to determine if the card has an image/avatar available.\n\t\t * @type {boolean}\n\t\t */\n\t\thasImage: {\n\t\t\tcomputed({ properties: { imageURL, avatarURL } }) {\n\t\t\t\treturn !isEmpty(imageURL) || !isEmpty(avatarURL);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the image should show on the right side of the card.\n\t\t * @type {boolean}\n\t\t */\n\t\tshowImageOnRight: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies a custom icon to display on the card. If specified the `icon` property will be ignored.\n\t\t * @type {string}\n\t\t */\n\t\tcustomIcon: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the width and height for the custom icon.\n\t\t * @type {string}\n\t\t */\n\t\tcustomIconSize: {\n\t\t\tdefault: CUSTOM_ICON_DEFAULT_SIZE,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if clicking on collapsed attachment title should open the attachment in attachment viewer.\n\t\t * @type {boolean}\n\t\t */\n\t\tuseAttachmentViewer: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if attachment viewer parameters should be used. For kb_knowledge attachments this will increment the view count.\n\t\t * @type {boolean}\n\t\t */\n\t\tuseAttachmentViewerParameters: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Removes the hit highlighting from the title and description field.\n\t\t * @type {boolean}\n\t\t */\n\t\tremoveHitHighlighting: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The url to which the card links\n\t\t * @type {string}\n\t\t */\n\t\thref: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the href-based navigation should be disabled in favor of the legacy action dispatching mechanism\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if component should show result card border\n\t\t * @type {boolean}\n\t\t */\n\t\tshowCardBorder: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if component should remove bottom border for result card\n\t\t * @type {boolean}\n\t\t */\n\t\tremoveBottomBorder: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if integrated chat is enabled, hides chat icon on regular search results\n\t\t * @type {boolean}\n\t\t */\n\t\tintegratedChatEnabled: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t}\n\t},\n\tactionHandlers: {\n\t\t[NOW_BUTTON_ICONIC_CLICKED]({\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\taction: {\n\t\t\t\tpayload: { action, model, type }\n\t\t\t},\n\t\t\tupdateState\n\t\t}) {\n\t\t\tif (type == ATTACHMENT_POPOVER_VIEW) {\n\t\t\t\tupdateState({\n\t\t\t\t\tshowAttachmentPopOver: true\n\t\t\t\t});\n\t\t\t\tdispatch((SHOW_ATTACHMENT_POPOVER, { value: false }));\n\t\t\t} else if (type == CHAT) {\n\t\t\t\tconst { enableDataLabelingFeedback } = properties;\n\t\t\t\tconst type = CHAT_CLICKED;\n\t\t\t\t!enableDataLabelingFeedback &&\n\t\t\t\t\tdispatch(CHAT_ICON_CLICKED, {\n\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\taction\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttype\n\t\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst { enableDataLabelingFeedback } = properties;\n\t\t\t\tconst type = OPEN_IN_NEW_TAB;\n\t\t\t\t!enableDataLabelingFeedback &&\n\t\t\t\t\tdispatch(DECLARATIVE_ACTION, {\n\t\t\t\t\t\taction,\n\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\tresultType: REGULAR_RESULT_TYPE,\n\t\t\t\t\t\t\t...model,\n\t\t\t\t\t\t\ttype\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttype\n\t\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[NOW_BUTTON_BARE_CLICKED]: ({\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\tstate: { showAttachmentOverflow },\n\t\t\taction: {\n\t\t\t\tpayload: { action, model, type }\n\t\t\t},\n\t\t\tupdateState\n\t\t}) => {\n\t\t\tconst { enableDataLabelingFeedback } = properties;\n\t\t\tif (type == CHAT) {\n\t\t\t\tconst { enableDataLabelingFeedback } = properties;\n\t\t\t\tconst type = CHAT_CLICKED;\n\t\t\t\t!enableDataLabelingFeedback &&\n\t\t\t\t\tdispatch(CHAT_ICON_CLICKED, {\n\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\taction\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttype\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (type === ATTACHMENT_SHOW_MORE_CLICKED) {\n\t\t\t\tupdateState({ showAttachmentOverflow: !showAttachmentOverflow });\n\t\t\t} else {\n\t\t\t\t!enableDataLabelingFeedback &&\n\t\t\t\t\tdispatch(DECLARATIVE_ACTION, {\n\t\t\t\t\t\taction,\n\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\tresultType: REGULAR_RESULT_TYPE,\n\t\t\t\t\t\t\t...model\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[NOW_DROPDOWN_ITEM_CLICKED]: ({\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\taction: { payload }\n\t\t}) => {\n\t\t\tconst { enableDataLabelingFeedback } = properties;\n\t\t\tenableDataLabelingFeedback &&\n\t\t\t\tdispatch(SEARCH_RESULTS_FEEDBACK_CLICKED, payload);\n\t\t},\n\t\t[NOW_TEXT_LINK_CLICKED]: ({ dispatch, properties }) => {\n\t\t\tconst {\n\t\t\t\tenableDataLabelingFeedback,\n\t\t\t\tmodel,\n\t\t\t\tclickAction,\n\t\t\t\tisPanelView,\n\t\t\t\tforceNewTab,\n\t\t\t\thref,\n\t\t\t\tdisableHref\n\t\t\t} = properties;\n\t\t\tconst hrefValue = disableHref ? undefined : href || model?.navigation_url;\n\t\t\tconst type = isPanelView || forceNewTab ? OPEN_IN_NEW_TAB : CLICK;\n\t\t\tconst isActionsValid = !isEmpty(clickAction) && !isEmpty(model);\n\n\t\t\t!enableDataLabelingFeedback &&\n\t\t\t\tdispatch(DECLARATIVE_ACTION, {\n\t\t\t\t\taction: isActionsValid\n\t\t\t\t\t\t? { ...clickAction, href: hrefValue }\n\t\t\t\t\t\t: { href: hrefValue },\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tresultType: REGULAR_RESULT_TYPE,\n\t\t\t\t\t\t...model,\n\t\t\t\t\t\ttype\n\t\t\t\t\t},\n\t\t\t\t\ttype\n\t\t\t\t});\n\t\t},\n\t\t[RIGHT_CLICK]: ({ dispatch, properties }) => {\n\t\t\tconst {\n\t\t\t\tenableDataLabelingFeedback,\n\t\t\t\tmodel,\n\t\t\t\tclickAction,\n\t\t\t\thref,\n\t\t\t\tdisableHref\n\t\t\t} = properties;\n\t\t\tconst hrefValue = disableHref ? undefined : href || model?.navigation_url;\n\t\t\tconst type = RIGHT_CLICK_TYPE;\n\t\t\tconst isActionsValid = !isEmpty(clickAction) && !isEmpty(model);\n\n\t\t\t!enableDataLabelingFeedback &&\n\t\t\t\tdispatch(DECLARATIVE_ACTION, {\n\t\t\t\t\taction: isActionsValid\n\t\t\t\t\t\t? { ...clickAction, href: hrefValue }\n\t\t\t\t\t\t: { href: hrefValue },\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tresultType: REGULAR_RESULT_TYPE,\n\t\t\t\t\t\t...model,\n\t\t\t\t\t\ttype\n\t\t\t\t\t},\n\t\t\t\t\ttype\n\t\t\t\t});\n\t\t}\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Placeholder for experimental feature - this is not currently dispatched\n\t\t */\n\t\tSEARCH_RESULTS_FEEDBACK_CLICKED: {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when a collapsed attachment link is clicked.\n\t\t * @type {object}\n\t\t */\n\t\t\"SN_SEARCH_RESULT_EVAM_CARD#ATTACHMENT_LINK_CLICKED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t}\n\t},\n\tstyles,\n\tbehaviors: [{ behavior: rtlBehavior }, truncationBehavior, tooltipBehavior]\n});\n","import {t} from 'sn-translate';\n\nexport const GRID_VIEW = 'grid';\nexport const LIST_VIEW = 'list';\nexport const FALSE = 'false';\nexport const SORT_LABEL = t('Sort By');\nexport const FILTER_LABEL = t('Filter');\nexport const TOGGLE_LABEL = t('Display');\nexport const PREV = 'previous';\nexport const NEXT = 'next';\n\nexport const GRID_GAP = 12;\nexport const DEFAULT_MAX_CARDS = 6;\nexport const DEF_CARDS_PER_ROW = 4;\nexport const DEF_ITEMS_PER_PAGE = 20;\nexport const DEF_CARD_WIDTH = 150;\nexport const RESIZE_DEBOUNCE_DELAY = 200;\nexport const DEF_NO_DATA_MSG = t('No content to display.');\nexport const EMPTY_MESSAGE_BODY = t('Contact your ServiceNow administrator for more information.');\nexport const DEF_TITLE_HEADING_LEVEL = '1';\nexport const DEF_EMPTY_STATE_HEADING_LEVEL = '2';\nexport const DEF_TITLE_STYLE_VARIANT = 'header-tertiary';\nexport const LOADING_STATE_LABEL = t('Loading');\nexport const INIT_PAGINATON_PROPS = {\n    hideGoToFirst: true,\n    hideGoToLast: true,\n    hidePageNumbers: true,\n    hidePageSizeControl: true,\n    hideRange: true,\n    hidePages: true,\n    hideGoToNext:  false,\n    hideGoToPrevious:  false,\n    selectedPage: 0,\n    selectedPageSize: DEF_ITEMS_PER_PAGE\n}\n//actions\nexport const VIEWTOGGLE_CLICKED = 'VIEWTOGGLE_CLICKED';\nexport const TOGGLE_BUTTON_CLICKED = 'TOGGLE_BUTTON_CLICKED';\nexport const NOW_BUTTON_ICONIC_CLICKED = 'NOW_BUTTON_ICONIC#CLICKED';\nexport const SN_DATA_SET_PAGINATION_BUTTON_CLICKED = 'SN_DATA_SET#PAGINATION_BUTTON_CLICKED';\nexport const NOW_DATA_SET_PAGINATION_BUTTON_CLICKED = 'NOW_DATA_SET#PAGINATION_BUTTON_CLICKED';\nexport const NOW_PAGINATION_CONTROL_SELECTED_PAGE_SET = 'NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET';\n\nexport const NOW_DROPDOWN_ITEM_CLICKED = 'NOW_DROPDOWN#ITEM_CLICKED';\nexport const NOW_DATA_SET_FILTER_ITEM_CLICKED = 'NOW_DATA_SET#FILTER_ITEM_CLICKED';\nexport const DA_WRAPPED_CLICKED = 'DA_WRAPPED_CLICKED';\nexport const DECLARATIVE_ACTION_SCRIPT_SUCCESS = 'DECLARATIVE_ACTION#SCRIPT_SUCCESS';\nexport const DECLARATIVE_ACTION_SCRIPT_FAILED = 'DECLARATIVE_ACTION#SCRIPT_FAILED';\nexport const NOW_DATA_SET_ACTION_SUCCEEDED = 'NOW_DATA_SET#ACTION_SUCCEEDED';\nexport const NOW_DATA_SET_ACTION_FAILED = 'NOW_DATA_SET#ACTION_FAILED';\nexport const NOW_DATA_SET_RESIZED = 'NOW_DATA_SET_WINDOW_RESIZED';\n","import '@servicenow/now-button';\nimport { t } from 'sn-translate';\nimport { GRID_VIEW, LIST_VIEW } from '../../constants';\nimport isEmpty from 'lodash/isEmpty';\n\nconst GRID_LABEL = t('View information in grid mode'), LIST_LABEL = t('View information in list mode');\nexport const getConfigAria = (type, selected, label = '') => {\n\tconst labelTranslated = isEmpty(label) ? '' : `${t(label)}, `;\n\t\n\treturn {\n\t\t'aria-label': `${labelTranslated}${type === GRID_VIEW ? GRID_LABEL : LIST_LABEL}`,\n\t\t'aria-pressed': selected.toString()\n\t};\n};\n\nexport default ({ properties: { view, label } }) => {\n\t//prevent invalid view prop input\n\tif (view !== GRID_VIEW && view !== LIST_VIEW)\n\t\tview = LIST_VIEW;\n\n\treturn (\n\t\t<div>\n\t\t\t<now-button-iconic\n\t\t\t\tsize='md'\n\t\t\t\tvariant={view === GRID_VIEW ? 'primary' : 'secondary'}\n\t\t\t\tappend-to-payload={{ view: GRID_VIEW }}\n\t\t\t\ticon='grid-four-fill'\n\t\t\t\ttooltip-content={GRID_LABEL}\n\t\t\t\tconfig-aria={getConfigAria(GRID_VIEW, view === GRID_VIEW, label)}>\n\t\t\t</now-button-iconic>\n\t\t\t<now-button-iconic\n\t\t\t\tsize='md'\n\t\t\t\tvariant={view === LIST_VIEW ? 'primary' : 'secondary'}\n\t\t\t\tappend-to-payload={{ view: LIST_VIEW }}\n\t\t\t\ticon='list-fill'\n\t\t\t\ttooltip-content={LIST_LABEL}\n\t\t\t\tconfig-aria={getConfigAria(LIST_VIEW, view === LIST_VIEW, label)}>\n\t\t\t</now-button-iconic>\n\t\t</div>\n\t);\n};\n","import { createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport view from './view';\nimport { LIST_VIEW, NOW_BUTTON_ICONIC_CLICKED, TOGGLE_BUTTON_CLICKED } from '../../constants';\n\ncreateCustomElement('sn-data-set-viewtoggle', {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tproperties: {\n\t\tview: {\n\t\t\tdefault: LIST_VIEW\n\t\t},\n\t\tlabel: {\n\t\t\tdefault: ''\n\t\t}\n\t},\n\tactionHandlers: {\n\t\t[NOW_BUTTON_ICONIC_CLICKED]: ({ updateProperties, action: { payload: { view } }, dispatch }) => {\n\t\t\tupdateProperties({ view });\n\t\t\tdispatch(TOGGLE_BUTTON_CLICKED, { view: view });\n\t\t}\n\t}\n});\n","import isEmpty from 'lodash/isEmpty';\n\nexport const validateOptions = (config) => {\n\t//sort and filter props have different structure for config\n\tlet options = config.options ? config.options : config;\n\n\toptions = options.filter((option) => option.label && !isEmpty(option.label)).map((option) => (\n\t\t{...option, id: option.sys_id || option.id }\n\t));\n\n\treturn config.options ? { ...config, options} : { options };\n};\n\nexport const isEmptyString = (selectedFilter) => {\n\treturn selectedFilter === undefined ||\n\t\tselectedFilter === null ||\n\t\tselectedFilter.trim().length === 0;\n};\n","import '@servicenow/now-dropdown';\nimport '@servicenow/now-label-value';\nimport { t } from 'sn-translate';\nimport '../sn-data-set-viewtoggle';\nimport { FALSE, TOGGLE_LABEL, SORT_LABEL, FILTER_LABEL } from '../../constants';\nimport isEmpty from 'lodash/isEmpty';\nimport lowerCase from 'lodash/lowerCase';\nimport kebabCase from 'lodash/kebabCase';\nimport get from 'lodash/get';\nimport { isEmptyString } from './helper';\n\nconst getTranslations = (options) => options.map((opt) => ({...opt, label: t(opt.label)}));\n\nconst DataSetItem = (props) => {\n\tconst { dropdown, config: { visible, options, view, selectedFilter }, label } = props;\n\n\t//check empty options for filterConfig and sortConfig\n\tif (dropdown && isEmpty(options)) {\n\t\treturn;\n\t}\n\n\t//check visible property for toggleConfig, sortConfig and filterConfig\n\tif ((!visible || lowerCase(String(visible)) === FALSE)) {\n\t\treturn;\n\t}\n\n\tif (dropdown) {\n\t\tlet defaultSelected = get(options[0], 'id');\n\n\t\t//Get the most recent value and update the default selected filter\n\t\tif (!isEmptyString(selectedFilter)) {\n\t\t\tdefaultSelected = selectedFilter;\n\t\t}\n\n\t\tconst className = `data-set-item ${kebabCase(label)}`;\n\t\treturn (\n\t\t\t<div className = {className}>\n\t\t\t\t<now-label-value-inline label={label}></now-label-value-inline>\n\t\t\t\t<now-dropdown\n\t\t\t\t\titems={getTranslations(options)}\n\t\t\t\t\tselect='single'\n\t\t\t\t\tselected-items={[defaultSelected]}\n\t\t\t\t\tsize='md'\n\t\t\t\t\tvariant='secondary'\n\t\t\t\t\tconfig-aria={{ 'aria-label': label }}>\n\t\t\t\t</now-dropdown>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className='data-set-item'>\n\t\t\t<now-label-value-inline label={label}></now-label-value-inline>\n\t\t\t<sn-data-set-viewtoggle view={view} label={`${label} options`} />\n\t\t</div>\n\t);\n};\n\nexport default (state) => {\n\tconst { toggleConfig, filterConfig, sortConfig, hideFilter, selectedFilter } = state.properties;\n\t\n\tlet filterToggleConfig = {\n\t\t...filterConfig,\n\t\tvisible: !hideFilter,\n\t\tselectedFilter\n\t};\n\n\treturn (\n\t\t<div className='data-set-toolbar'>\n\t\t\t<DataSetItem label={FILTER_LABEL} config={filterToggleConfig} dropdown={true}/>\n\t\t\t<DataSetItem label={SORT_LABEL} config={sortConfig} dropdown={true} />\n\t\t\t<DataSetItem label={TOGGLE_LABEL} config={toggleConfig} />\n\t\t</div>\n\t);\n};\n\n","import { createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport view from './view';\nimport { LIST_VIEW } from '../../constants';\nimport styles from './__sn-data-set-toolbar.scss';\nimport { validateOptions } from './helper';\nimport rtlBehavior from '@servicenow/behavior-rtl';\n\ncreateCustomElement('sn-data-set-toolbar', {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tstyles,\n\tproperties: {\n\t\ttoggleConfig: {\n\t\t\tdefault: {\n\t\t\t\tvisible: false,\n\t\t\t\tview: LIST_VIEW\n\t\t\t}\n\t\t},\n\t\tsortConfig: {\n\t\t\tdefault: {\n\t\t\t\tvisible: false,\n\t\t\t\toptions: []\n\t\t\t}\n\t\t},\n\t\tfilterConfig: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object'\n\t\t\t}\n\t\t}\n\t},\n\ttransformProps(state) {\n\t\tconst { sortConfig, filterConfig: { filterConfig, hideFilter, selectedFilter } } = state.properties;\n\t\tconst properties = {\n\t\t\t...state.properties,\n\t\t\tsortConfig: validateOptions(sortConfig),\n\t\t\tfilterConfig: validateOptions(filterConfig),\n\t\t\thideFilter,\n\t\t\tselectedFilter\n\t\t};\n\t\treturn { ...state, properties };\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: rtlBehavior,\n\t\t}\n\t]\n});\n","import debounce from 'lodash/debounce';\nimport { NOW_DATA_SET_RESIZED, RESIZE_DEBOUNCE_DELAY } from '../../constants';\n\nexport default ({properties: { columns, minCardWidth, cards, cardHeight }}, dispatch) => {\n\tconst groupClassName = `data-set-grid data-set-grid-${columns}`;\n\tconst itemClassName = `data-set-grid-item-${cardHeight}`;\n\tconst resizeObserver = new ResizeObserver(debounce((entries) => {\n\t\tfor (const entry of entries) {\n\t\t\tconst parentWidth = entry.contentRect.width;\n\t\t\tdispatch(NOW_DATA_SET_RESIZED, {parentWidth});\n\t\t} \n\t}, RESIZE_DEBOUNCE_DELAY));\n\n\tconst gridstyle = {\n\t\t'gridTemplateColumns': `repeat(${columns}, minmax(${Math.floor(minCardWidth)}px, 1fr))`\n\t};\n\n\treturn (\n\t\t// nds-scanner-disable-start inline-styles\n\t\t<div className={groupClassName} style={gridstyle} hook={{\n\t\t\tinsert: ({elm}) => resizeObserver.observe(elm),\n\t\t\tdestroy: ({elm}) => resizeObserver.unobserve(elm)\n\t\t}}>\n\t\t\t{\n\t\t\t\tcards.map(card => <div className={itemClassName}> {card} </div>)\n\t\t\t}\n\t\t</div>\n\t\t// nds-scanner-disable-end\n\t);\n};\n","import { createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport view from './view';\nimport styles from './__sn-data-set-view-grid.scss';\n\ncreateCustomElement('sn-data-set-view-grid', {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tstyles,\n\tproperties: {\n\t\tcards: {\n\t\t\tdefault: []\n\t\t},\n\t\tcardHeight: {\n\t\t\tdefault: 'lg',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md', 'lg']\n\t\t\t}\n\t\t},\n\t\tminCardWidth: {\n\t\t\tdefault: 150,\n\t\t\tschema: {\n\t\t\t\ttype: 'number'\n\t\t\t}\n\t\t},\n\t\tcolumns: {\n\t\t\tdefault: 4,\n\t\t\tschema: {\n\t\t\t\ttype: 'number'\n\t\t\t}\n\t\t},\n\t},\n\ttransformState: state => {\n\t\tconst {columns} = state.properties;\n\t\tconst properties = {\n\t\t\t...state.properties,\n\t\t\tcolumns: columns\n\t\t};\n\t\treturn {...state, properties};\n\t}\n});\n","export default ({properties: { cards, minCardWidth }}) => {\n\tconst groupClassName = 'data-set-list data-set-grid data-set-grid-1';\n\n\tconst gridstyle = {\n\t\t'gridTemplateColumns': `repeat(1, minmax(${Math.floor(minCardWidth)}px, 1fr))`\n\t};\n\n\treturn (\n\t\t// nds-scanner-disable-start inline-styles\n\t\t<ul className={groupClassName} style={gridstyle}>\n\t\t\t{ cards.map(card => (<li className='data-set-list-item'>{card}</li>)) }\n\t\t</ul>\n\t\t// nds-scanner-disable-stop\n\t);\n};\n","import { createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport view from './view';\nimport styles from './__sn-data-set-view-list.scss';\nimport { DEF_CARD_WIDTH } from '../../constants';\n\ncreateCustomElement('sn-data-set-view-list', {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tstyles,\n\tproperties: {\n\t\tcards: {\n\t\t\tdefault: []\n\t\t},\n\t\tminCardWidth: {\n\t\t\tdefault: DEF_CARD_WIDTH,\n\t\t\tschema: {\n\t\t\t\ttype: 'number'\n\t\t\t}\n\t\t}\n\t}\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {actionTypes} from '@servicenow/ui-core';\nimport '@servicenow/now-button';\nimport '@servicenow/now-tooltip';\nimport {\n\tschedule,\n\tunschedule,\n\tcreateTooltipActionHandler,\n} from '@servicenow/now-tooltip';\nimport '@servicenow/now-dropdown';\nimport {configAriaLabelSchema} from '@servicenow/library-schemas';\nimport {\n\tfilterAriaAttributes,\n\tmeasureText,\n} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-pagination-control.scss';\nimport {t} from 'sn-translate';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport {createRef} from '@servicenow/ui-renderer-snabbdom';\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\n\nconst showTooltip = (updateState, page, key) => {\n\tconst PAGE_NUM = key + 1;\n\tupdateState({\n\t\tpath: 'currentTooltip',\n\t\toperation: 'set',\n\t\tvalue: {ref: page, content: t('Page {0}', PAGE_NUM), opened: true},\n\t});\n};\n\nconst hideTooltip = (updateState) => {\n\tupdateState({\n\t\tpath: 'currentTooltip',\n\t\toperation: 'set',\n\t\tvalue: {ref: null, content: '', opened: false},\n\t});\n};\n\nconst validateSelectedPage = (selectedPage, totalPages) => {\n\tif (selectedPage < 0) {\n\t\treturn 0;\n\t}\n\tif (selectedPage >= totalPages) {\n\t\treturn totalPages - 1;\n\t}\n\treturn selectedPage;\n};\n\nconst getInputAriaLiveMessage = (\n\tinputPageValue,\n\tresolvedPageNumber,\n\ttotalPages,\n) => {\n\tconst validPageNumber = resolvedPageNumber + 1; // 1-based index for messages\n\n\tif (isNaN(inputPageValue) || inputPageValue === '') {\n\t\treturn t(\n\t\t\t'Invalid input. Showing page {0} of {1}',\n\t\t\tvalidPageNumber,\n\t\t\ttotalPages,\n\t\t);\n\t}\n\n\tconst inputPageNumber = Number(inputPageValue);\n\n\tif (inputPageNumber < 0 || inputPageNumber >= totalPages) {\n\t\treturn t(\n\t\t\t'Out of range page. Now showing page {0} of {1}',\n\t\t\tvalidPageNumber,\n\t\t\ttotalPages,\n\t\t);\n\t}\n\n\treturn t('Now showing page {0} of {1}', validPageNumber, totalPages);\n};\n\nconst handleKeydown = (e, dispatch, selectedPage, totalPages) => {\n\tconst {key, target} = e;\n\n\tif (key === 'Enter') {\n\t\tconst inputPageValue = target.value.trim();\n\t\tconst inputPageNumber =\n\t\t\tisNaN(inputPageValue) || inputPageValue == ''\n\t\t\t\t? selectedPage\n\t\t\t\t: Number(inputPageValue - 1);\n\t\tconst resolvedPageNumber = validateSelectedPage(\n\t\t\tinputPageNumber,\n\t\t\ttotalPages,\n\t\t);\n\t\tconst ariaLiveMessage = getInputAriaLiveMessage(\n\t\t\tinputPageValue,\n\t\t\tresolvedPageNumber,\n\t\t\ttotalPages,\n\t\t);\n\n\t\ttarget.value = resolvedPageNumber + 1;\n\n\t\tdispatch('NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET', {\n\t\t\tvalue: resolvedPageNumber,\n\t\t});\n\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage: ariaLiveMessage,\n\t\t\ttype: 'polite',\n\t\t});\n\t}\n};\n\nconst handleBlur = (e, updateState, selectedPage, totalPages) => {\n\tconst {target} = e;\n\tconst fieldValue = target.value.trim();\n\n\tif (\n\t\tisNaN(fieldValue) ||\n\t\tfieldValue === '' ||\n\t\tfieldValue <= 0 ||\n\t\tfieldValue > totalPages\n\t) {\n\t\te.target.value = selectedPage + 1;\n\t}\n\n\tupdateState({hasFocus: false});\n};\n\nconst renderPage = ({key, selected, dispatch, updateState, componentId}) => {\n\tconst PAGE_NUM = key + 1;\n\tconst buttonRef = createRef();\n\treturn (\n\t\t<button\n\t\t\tkey={key}\n\t\t\ttype=\"button\"\n\t\t\tref={buttonRef}\n\t\t\tclass={{\n\t\t\t\t'now-pagination-control-button': true,\n\t\t\t\t'is-selected': selected,\n\t\t\t}}\n\t\t\taria-label={t('Page {0}', PAGE_NUM)}\n\t\t\taria-current={selected ? 'page' : 'false'}\n\t\t\tdata-itemid={key}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET',\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tbuttonRef.current.focus();\n\t\t\t\t}, 50);\n\t\t\t}}\n\t\t\ton-mouseenter={(e) => {\n\t\t\t\tconst page = e.target;\n\t\t\t\tschedule(componentId, () => showTooltip(updateState, page, key));\n\t\t\t}}\n\t\t\ton-focusin={(e) => {\n\t\t\t\tconst page = e.target;\n\t\t\t\tschedule(componentId, () => showTooltip(updateState, page, key));\n\t\t\t}}\n\t\t\ton-mouseleave={() => {\n\t\t\t\tschedule(componentId, () => hideTooltip(updateState));\n\t\t\t}}\n\t\t\ton-focusout={() => {\n\t\t\t\tschedule(componentId, () => hideTooltip(updateState));\n\t\t\t}}\n\t\t>\n\t\t\t<span className=\"now-line-height-crop\" data-testid=\"page-number-label\">\n\t\t\t\t{PAGE_NUM}\n\t\t\t</span>\n\t\t</button>\n\t);\n};\n\nconst renderRange = (total, selectedPageSize, selectedPage, rangeLabel) => {\n\tlet rangeStart = selectedPage * selectedPageSize + 1;\n\tlet rangeEnd, label;\n\tif (\n\t\tselectedPageSize > total ||\n\t\t(selectedPage + 1) * selectedPageSize > total\n\t) {\n\t\trangeEnd = total;\n\t} else {\n\t\trangeEnd = (selectedPage + 1) * selectedPageSize;\n\t}\n\n\tif (rangeLabel) {\n\t\tlabel = rangeLabel;\n\t} else if (total === 0) {\n\t\tlabel = t('Showing 0 records');\n\t} else {\n\t\tlabel = t('Showing {0}-{1} of {2}', rangeStart, rangeEnd, total);\n\t}\n\n\treturn (\n\t\t<p className=\"now-pagination-control-page-range-label\">\n\t\t\t<span className=\"now-line-height-crop\" data-testid=\"page-range-label\">\n\t\t\t\t{label}\n\t\t\t</span>\n\t\t</p>\n\t);\n};\n\nconst getPaginationInputWidth = (theme, totalPages) => {\n\tconst measureFn = measureText({\n\t\ttxtTransform: theme['--now-pagination-control--text-transform'],\n\t\tfontStyle: theme['--now-pagination-control--font-style'],\n\t\tfontFamily: theme['--now-pagination-control--font-family'],\n\t\tfontSize: `${theme['--now-form-control_value--font-size--md'].px}px`,\n\t\tfontWeight: theme['--now-pagination-control--font-weight'],\n\t});\n\treturn measureFn(totalPages.toString());\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {\n\t\ttotal,\n\t\tselectedPage,\n\t\tpageSizes,\n\t\tpageControlType,\n\t\thideGoToFirst,\n\t\thideGoToPrevious,\n\t\thideGoToNext,\n\t\thideGoToLast,\n\t\thideInlinePadding,\n\t\thidePageNumbers,\n\t\thidePageSizeControl,\n\t\thideRange,\n\t\tselectedPageSize,\n\t\tvisiblePages,\n\t\tpagesOverride,\n\t\trangeLabel,\n\t\tpageSizeLabel,\n\t\tconfigAria,\n\t\tnowId,\n\t} = state.properties;\n\n\tconst {hasFocus} = state;\n\n\tconst totalPages = pagesOverride || Math.ceil(total / selectedPageSize);\n\n\tlet adjustedSelectedPage = validateSelectedPage(selectedPage, totalPages);\n\n\tlet isFirst = total === 0 || adjustedSelectedPage === 0 || totalPages === 1;\n\n\tlet isLast = total === 0 || adjustedSelectedPage === totalPages - 1;\n\n\tconst halfVisiblePages = Math.floor(visiblePages / 2);\n\n\tlet firstVisiblePageIndex;\n\t// don't shift too far left\n\tif (\n\t\tadjustedSelectedPage - halfVisiblePages <= 0 ||\n\t\ttotalPages < visiblePages\n\t) {\n\t\tfirstVisiblePageIndex = 0;\n\t}\n\t// don't shift too far right\n\telse if (\n\t\tadjustedSelectedPage >\n\t\ttotalPages - visiblePages + halfVisiblePages\n\t) {\n\t\tfirstVisiblePageIndex = totalPages - visiblePages;\n\t} else {\n\t\tfirstVisiblePageIndex = adjustedSelectedPage - halfVisiblePages;\n\t}\n\n\tconst lastVisiblePageIndex = Math.min(\n\t\tfirstVisiblePageIndex + visiblePages - 1,\n\t\ttotalPages - 1,\n\t);\n\n\tconst showButtons = pageControlType === 'buttons';\n\tconst showInput = pageControlType === 'input';\n\n\tconst renderGoToFirst = () => {\n\t\treturn (\n\t\t\t<now-button-iconic\n\t\t\t\tclassName=\"now-pagination-control-button-iconic\"\n\t\t\t\tdata-testid=\"go-to-first\"\n\t\t\t\ticon=\"arrow-start-most-outline\"\n\t\t\t\tbare\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\ttooltip-content={t('First page')}\n\t\t\t\tdisabled={isFirst}\n\t\t\t\tconfig-aria={{button: {'aria-label': t('First page')}}}\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\tpage: 0,\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst renderGoToPrevious = () => {\n\t\tconst prevPage = isFirst ? 0 : adjustedSelectedPage - 1;\n\n\t\treturn (\n\t\t\t<now-button-iconic\n\t\t\t\tclassName=\"now-pagination-control-button-iconic\"\n\t\t\t\tdata-testid=\"go-to-previous\"\n\t\t\t\ticon=\"arrow-start-outline\"\n\t\t\t\tbare\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\ttooltip-content={t('Previous page')}\n\t\t\t\tdisabled={isFirst}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tbutton: {\n\t\t\t\t\t\t'aria-label': isFirst\n\t\t\t\t\t\t\t? t('Previous page')\n\t\t\t\t\t\t\t: t('Previous page, {0}', prevPage + 1),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\tpage: prevPage,\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst renderPageButtons = () => {\n\t\tlet pageNumbers = [];\n\n\t\tfor (let i = firstVisiblePageIndex; i < lastVisiblePageIndex + 1; i++) {\n\t\t\tpageNumbers.push(\n\t\t\t\trenderPage({\n\t\t\t\t\tkey: i,\n\t\t\t\t\tselected: i === adjustedSelectedPage,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tnowId,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div className=\"now-align -wrap\">\n\t\t\t\t{pageNumbers}\n\t\t\t\t<now-tooltip\n\t\t\t\t\tid=\"tooltip\"\n\t\t\t\t\tmanage-opened\n\t\t\t\t\topened={state.currentTooltip.opened}\n\t\t\t\t\ttarget-ref={state.currentTooltip.ref}\n\t\t\t\t\tcontent={state.currentTooltip.content}\n\t\t\t\t\tdelay={{show: 0, hide: 0}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t};\n\n\tconst renderPageInput = () => {\n\t\tconst triggerId = `form-field-${nowId}`;\n\t\tconst totalPageTextId = `total-pages-${nowId}`;\n\n\t\tconst totalPageText = t(\n\t\t\t{\n\t\t\t\tcode: 'now-pagination-control-of-total-pages',\n\t\t\t\tmessage: 'of {totalPages}',\n\t\t\t\tcomment:\n\t\t\t\t\t'Refers to the total number of pages in the pagination sequence.',\n\t\t\t},\n\t\t\t{totalPages},\n\t\t);\n\n\t\treturn (\n\t\t\t<div className=\"now-pagination-control-input-container\">\n\t\t\t\t<label\n\t\t\t\t\tid={`form-field-${nowId}-label`}\n\t\t\t\t\tclassName=\"now-pagination-control-input-label\"\n\t\t\t\t\thtmlFor={triggerId}\n\t\t\t\t>\n\t\t\t\t\t<span className=\"now-line-height-crop\">{t('Page')}</span>\n\t\t\t\t</label>\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-pagination-control-form-field': true,\n\t\t\t\t\t\t'has-focus': hasFocus,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid={triggerId}\n\t\t\t\t\t\taria-describedby={totalPageTextId}\n\t\t\t\t\t\tname={`pagination-control-${nowId}`}\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclassName=\"now-pagination-control-native-input\"\n\t\t\t\t\t\ton-focus={() => updateState({hasFocus: true})}\n\t\t\t\t\t\ton-keydown={(event) =>\n\t\t\t\t\t\t\thandleKeydown(event, dispatch, adjustedSelectedPage, totalPages)\n\t\t\t\t\t\t}\n\t\t\t\t\t\ton-blur={(event) =>\n\t\t\t\t\t\t\thandleBlur(event, updateState, adjustedSelectedPage, totalPages)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={adjustedSelectedPage + 1}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<span className=\"now-line-height-crop\" id={totalPageTextId}>\n\t\t\t\t\t{totalPageText}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t);\n\t};\n\n\tconst renderGoToNext = () => {\n\t\tconst nextPage = isLast ? adjustedSelectedPage : adjustedSelectedPage + 1;\n\n\t\treturn (\n\t\t\t<now-button-iconic\n\t\t\t\tclassName=\"now-pagination-control-button-iconic\"\n\t\t\t\tdata-testid=\"go-to-next\"\n\t\t\t\ticon=\"arrow-end-outline\"\n\t\t\t\tbare\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\ttooltip-content={t('Next page')}\n\t\t\t\tdisabled={isLast}\n\t\t\t\tconfig-aria={{\n\t\t\t\t\tbutton: {\n\t\t\t\t\t\t'aria-label': isLast\n\t\t\t\t\t\t\t? t('Next page')\n\t\t\t\t\t\t\t: t('Next page, {0}', nextPage + 1),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\tpage: nextPage,\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst renderGoToLast = () => {\n\t\treturn (\n\t\t\t<now-button-iconic\n\t\t\t\tclassName=\"now-pagination-control-button-iconic\"\n\t\t\t\tdata-testid=\"go-to-last\"\n\t\t\t\ticon=\"arrow-end-most-outline\"\n\t\t\t\tbare\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\ttooltip-content={t('Last page')}\n\t\t\t\tdisabled={isLast}\n\t\t\t\tconfig-aria={{button: {'aria-label': t('Last page')}}}\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\tpage: totalPages - 1,\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst renderPageSizeControl = (pageSizes, selectedPageSize) => {\n\t\tconst pageSizeOptions = pageSizes.map((size) => {\n\t\t\treturn {id: `${size}`, label: `${size}`};\n\t\t});\n\n\t\treturn (\n\t\t\t<now-dropdown\n\t\t\t\tdata-testid=\"page-size-options\"\n\t\t\t\titems={pageSizeOptions}\n\t\t\t\tclassName=\"now-pagination-control-dropdown\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tshow-padding\n\t\t\t\tplaceholder={pageSizes[0]}\n\t\t\t\tselected-items={[String(selectedPageSize)]}\n\t\t\t\tlabel={pageSizeLabel || t('Records per page')}\n\t\t\t\tlabel-size=\"md\"\n\t\t\t\tlabel-position=\"start\"\n\t\t\t\tpanel-fit-props={{\n\t\t\t\t\tposition: [\n\t\t\t\t\t\t'bottom-end top-end',\n\t\t\t\t\t\t'top-end bottom-end',\n\t\t\t\t\t\t'top-start top-end',\n\t\t\t\t\t\t'bottom-start bottom-end',\n\t\t\t\t\t],\n\t\t\t\t}}\n\t\t\t\tbare\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t<nav\n\t\t\tclass={{\n\t\t\t\t'now-pagination-control': true,\n\t\t\t\t'only-prev-next':\n\t\t\t\t\thideRange &&\n\t\t\t\t\thideGoToFirst &&\n\t\t\t\t\thideGoToLast &&\n\t\t\t\t\thidePageNumbers &&\n\t\t\t\t\thidePageSizeControl,\n\t\t\t\t'only-two-children': hideRange || hidePageSizeControl,\n\t\t\t\t'hide-inline-padding': hideInlinePadding,\n\t\t\t}}\n\t\t\taria-label={t('Pagination')}\n\t\t\t{...filterAriaAttributes(configAria, 'navigation')}\n\t\t>\n\t\t\t{!hideRange\n\t\t\t\t? renderRange(total, selectedPageSize, adjustedSelectedPage, rangeLabel)\n\t\t\t\t: undefined}\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-pagination-control-pages': true,\n\t\t\t\t\t'has-no-siblings': hideRange && hidePageSizeControl,\n\t\t\t\t\t'has-one-sibling': hideRange || hidePageSizeControl,\n\t\t\t\t\t'has-input-control': showInput,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{!hideGoToFirst ? renderGoToFirst() : undefined}\n\t\t\t\t{!hideGoToPrevious ? renderGoToPrevious() : undefined}\n\t\t\t\t{!hidePageNumbers && showButtons ? renderPageButtons() : undefined}\n\t\t\t\t{!hidePageNumbers && showInput ? renderPageInput() : undefined}\n\t\t\t\t{!hideGoToNext ? renderGoToNext() : undefined}\n\t\t\t\t{!hideGoToLast ? renderGoToLast() : undefined}\n\t\t\t</div>\n\t\t\t{!hidePageSizeControl\n\t\t\t\t? renderPageSizeControl(pageSizes, selectedPageSize)\n\t\t\t\t: undefined}\n\t\t</nav>\n\t);\n};\n\n/**\n * Enables users to navigate through a large number of items distributed across pages.\n *\n * ```jsx\n * <now-pagination-control total={10} />\n * ```\n *\n * @seismicElement now-pagination-control\n * @summary Divides a large set of content into consolidated pages for the user to navigate between.\n * @uib.label Pagination control\n * @uib.icon pagination-control\n * @uib.description Divides a large set of content into consolidated pages for the user to navigate between.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties total, pageSizes, selectedPage, manageSelectedPage, pagesOverride, pageControlType, hideRange, rangeLabel, hidePageNumbers, visiblePages, hideGoToFirst, hideGoToPrevious, hideGoToNext, hideGoToLast, selectedPageSize, manageSelectedPageSize, hidePageSizeControl, pageSizeLabel, hideInlinePadding, configAria\n * @uib.layout.pages.children total, pageSizes, selectedPage, manageSelectedPage, pagesOverride\n * @uib.layout.pages.icon book-open-outline\n * @uib.layout.controls.children pageControlType, hideRange, rangeLabel, hidePageNumbers, visiblePages, hideGoToFirst, hideGoToPrevious, hideGoToNext, hideGoToLast, selectedPageSize, manageSelectedPageSize, hidePageSizeControl, pageSizeLabel, hideInlinePadding\n * @uib.layout.controls.icon arrow-up-down-outline\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET\n */\n\ncreateEnhancedElement('now-pagination-control', {\n\tproperties: {\n\t\t/**\n\t\t * Visible pages to configure.\n\t\t * @type {integer}\n\t\t * @uib.description Changes the number of pages that can be directly selected between arrows\n\t\t */\n\t\tvisiblePages: {schema: {type: 'integer', minimum: 0}, default: 5},\n\t\t/**\n\t\t * Total number of records.\n\t\t * @type {integer}\n\t\t * @uib.label Total records\n\t\t * @uib.description Total number of records\n\t\t * @uib.defaultValue 100\n\t\t */\n\t\ttotal: {\n\t\t\tschema: {type: 'integer', minimum: 0},\n\t\t},\n\t\t/**\n\t\t * Initial page index to render.\n\t\t * @type {integer}\n\t\t * @uib.label Selected page index\n\t\t * @uib.description Initial page index to render\n\t\t */\n\t\tselectedPage: {\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'integer', minimum: 0},\n\t\t\tdefault: 0,\n\t\t},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selectedPage` property.\n\t\t * An action with type `NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected page property. Use the selected page set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelectedPage: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the pagination control type.\n\t\t * @type {('buttons'|'input')}\n\t\t * @uib.label Page Control type\n\t\t * @uib.description Defines how the user selects a page. Choose 'buttons' to display page numbers as buttons, or 'input' to allow users to enter a page number manually.\n\t\t */\n\t\tpageControlType: {\n\t\t\tdefault: 'buttons',\n\t\t\tschema: {type: 'string', enum: ['buttons', 'input']},\n\t\t},\n\t\t/**\n\t\t * When true, hides text displaying the current range of the total number of records.\n\t\t * @type {boolean}\n\t\t * @uib.description Select to hide text displaying the current range of the total number of records\n\t\t */\n\t\thideRange: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, hides the \"Go to first page\" button.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide first page button\n\t\t * @uib.description Select to hide the \"Go to first page\" button\n\t\t */\n\t\thideGoToFirst: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, hides the \"Go to previous page\" button.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide previous page button\n\t\t * @uib.description Select to hide the \"Go to previous page\" button\n\t\t */\n\t\thideGoToPrevious: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, hides the \"Go to next page\" button.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide next page button\n\t\t * @uib.description Select to hide the \"go to next page\" button\n\t\t */\n\t\thideGoToNext: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, hides the \"Go to last page\" button.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide last page button\n\t\t * @uib.description Select to hide the \"Go to last page\" button\n\t\t */\n\t\thideGoToLast: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, hides page number buttons.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide page numbers\n\t\t * @uib.description Select to hide page number buttons\n\t\t */\n\t\thidePageNumbers: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, hides the page size control.\n\t\t * This control allows the user to set a page size preference\n\t\t * from a set of defined page size thresholds.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide viewable items control\n\t\t * @uib.description Select to hide the page size control that allows the user to set a page size preference from a set of defined page size thresholds\n\t\t */\n\t\thidePageSizeControl: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, hides the inline start and end padding.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide padding\n\t\t * @uib.description Select to hide the inline start and end padding\n\t\t */\n\t\thideInlinePadding: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Page size choices in the page size control.\n\t\t * Default values: 10, 20, 50, 100.\n\t\t * @type {array}\n\t\t * @uib.description Page size choices in the page size control\n\t\t */\n\t\tpageSizes: {\n\t\t\trequired: true,\n\t\t\tschema: {type: 'array', items: {type: 'integer'}},\n\t\t\tdefault: [10, 20, 50, 100],\n\t\t},\n\t\t/**\n\t\t * Page size choice that is selected from the dropdown\n\t\t * @type {integer}\n\t\t * @uib.label Viewable items per page\n\t\t * @uib.description Page size choice that is currently selected from the dropdown\n\t\t */\n\t\tselectedPageSize: {\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'integer'},\n\t\t\tdefault: 10,\n\t\t},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selectedPageSize` property.\n\t\t * An action with type `NOW_PAGINATION_CONTROL#SELECTED_PAGE_SIZE_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected page size property. Use the selected page size set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelectedPageSize: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Forces the component to display a specific number of pages. If you do not set this\n\t\t * property, the number of pages is calculated automatically based on the `total` and\n\t\t * the `selectedPageSize` properties.\n\t\t * @type {integer}\n\t\t */\n\t\tpagesOverride: {schema: {type: 'integer'}},\n\t\t/**\n\t\t * Custom label to display next to the page size selector.\n\t\t * @type {string}\n\t\t * @uib.label Viewable items label\n\t\t * @uib.translatable true\n\t\t */\n\t\tpageSizeLabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Custom label to display in place of the current range information.\n\t\t * @type {string}\n\t\t * @uib.translatable true\n\t\t */\n\t\trangeLabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-pagination-control. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties will be set on the specified element.\n\t\t * The 'navigation' key corresponds to the inner html `<nav>` in\n\t\t * now-pagination-control. See https://www.w3.org/TR/wai-aria-1.2/#navigation for\n\t\t * properties and accepted values.\n\t\t * If more than one pagination control is in use in your application or page, you\n\t\t * should provide a unique name for each control using `aria-label`.\n\t\t * @type {{navigation: {'aria-*': string, role: string }}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tnavigation: configAriaLabelSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\t/**\n\t\t * Keeps track of current tooltip of page buttons\n\t\t */\n\t\tcurrentTooltip: {ref: null, content: '', opened: false},\n\t\t/**\n\t\t * Whether or not the input is focused\n\t\t */\n\t\thasFocus: false,\n\t},\n\tactionHandlers: {\n\t\t...createTooltipActionHandler(hideTooltip),\n\t\t[COMPONENT_DOM_TREE_READY]: ({host, properties, state}) => {\n\t\t\tif (properties.pageControlType !== 'input') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {theme} = state.behaviors;\n\t\t\tconst {total, pageSizes, pagesOverride} = properties;\n\t\t\tconst minPageSize = pageSizes.length > 0 ? Math.min(...pageSizes) : 1;\n\t\t\tconst totalPages = pagesOverride || Math.ceil(total / minPageSize);\n\t\t\tconst paginationInputWidth = getPaginationInputWidth(theme, totalPages);\n\t\t\tconst nativeInput = host.shadowRoot.querySelector(\n\t\t\t\t'.now-pagination-control-native-input',\n\t\t\t);\n\t\t\tif (nativeInput) {\n\t\t\t\tnativeInput.style.inlineSize = `${paginationInputWidth}px`;\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_RENDERED]: ({host, properties}) => {\n\t\t\tconst {pageControlType} = properties;\n\t\t\tconst activeEl = host.shadowRoot.activeElement;\n\n\t\t\tif (activeEl?.disabled) {\n\t\t\t\tconst focusTarget =\n\t\t\t\t\tpageControlType === 'input'\n\t\t\t\t\t\t? host.shadowRoot.querySelector(\n\t\t\t\t\t\t\t\t'.now-pagination-control-native-input',\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: host.shadowRoot.querySelector('button.is-selected');\n\n\t\t\t\tif (focusTarget) {\n\t\t\t\t\tfocusTarget.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({properties}) => {\n\t\t\tconst componentId = properties.nowId;\n\t\t\tunschedule(componentId);\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]({dispatch, action}) {\n\t\t\tconst {name, value, previousValue} = action.payload;\n\t\t\tif (name === 'total' && value < previousValue) {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET',\n\t\t\t\t\t\tpayload: {value: 0},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t'NOW_BUTTON_ICONIC#CLICKED'({action, dispatch}) {\n\t\t\tdispatch(() => ({\n\t\t\t\ttype: 'NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET',\n\t\t\t\tpayload: {\n\t\t\t\t\tvalue: action.payload.page, // this is the value that was in append-to-payload above\n\t\t\t\t},\n\t\t\t}));\n\t\t},\n\t\t'NOW_DROPDOWN#SELECTED_ITEMS_SET': ({dispatch, action}) => {\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_PAGINATION_CONTROL#SELECTED_PAGE_SIZE_SET',\n\t\t\t\t\tpayload: {value: Number(action.payload.value[0])},\n\t\t\t\t};\n\t\t\t});\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET',\n\t\t\t\t\tpayload: {value: 0},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Action dispatched when a page is selected, or when pagination controls are selected.\n\t\t * Payload includes the page the user wants to go to.\n\t\t * @type {{value: number}}\n\t\t * @uib.description Dispatched when a page is selected, or when pagination controls are selected\n\t\t */\n\t\t'NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'number'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{behavior: focusBehavior},\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: [\n\t\t\t\t\t'--now-pagination-control--text-transform',\n\t\t\t\t\t'--now-pagination-control--font-style',\n\t\t\t\t\t'--now-pagination-control--font-family',\n\t\t\t\t\t'--now-pagination-control--font-weight',\n\t\t\t\t\t'--now-form-control_value--font-size--md',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t],\n\tstyles,\n\tview,\n});\n","import './now-pagination-control';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","export const DA_WRAPPED_CLICKED = 'DA_WRAPPED_CLICKED';\nexport const UXF_INTERNAL_EVENT_META = '__uxfMetaInternalOnlyDoNotUse';\n","import {createGraphQLEffect} from '@servicenow/ui-effect-graphql';\nimport {difference, find, get, has, isEmpty, isEqual, merge} from 'lodash';\n\nconst DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS =\n\t'DECLARATIVE_ACTION_INTERNAL#RUN_DYNAMIC_CONDITIONS';\nconst DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_COMPLETED =\n\t'DECLARATIVE_ACTION#RUN_DYNAMIC_CONDITION_COMPLETED';\nconst DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_FAILED =\n\t'DECLARATIVE_ACTION#RUN_DYNAMIC_CONDITION_FAILED';\n\n/**\n * Method to pass down Dynamically Evaluated Declarative Actions to slotted children\n * using a property name [daRelayPropName] configured\n *\n * @param {string} host Reference to the DOM element the ShadowRoot is attached\n * @param {string} daRelayPropName prop name of the slotted child component\n * @param {Object} actions Updated Dynamically Evaluated Declarative Actions\n */\nexport const relayDAUpdates = (host, daRelayPropName, actions) => {\n\tif (daRelayPropName) {\n\t\tconst items = host.shadowRoot.querySelector('slot')?.assignedNodes() || [];\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tfor (const item of items) {\n\t\t\titem[daRelayPropName] = actions;\n\t\t}\n\t}\n};\n\n/**\n * Returns a list of DA sysIds where dynamicEvaluationEnabled is true\n * @param {Array} declarativeActions\n * @returns Array\n */\nexport const getDynamicEvaluatedDAs = declarativeActions => {\n\treturn declarativeActions\n\t\t.reduce((acc, currentValue) => {\n\t\t\treturn acc.concat(currentValue.children);\n\t\t}, [])\n\t\t.map(da => da.action)\n\t\t.filter(da => da.dynamicEvaluationEnabled)\n\t\t.map(da => da.assignmentId);\n};\n\nexport const handlePropertyChanged = context => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {name, value, previousValue}\n\t\t},\n\t\tproperties,\n\t\thost\n\t} = context;\n\n\tif (\n\t\t(name === 'modelData' || name === 'declarativeActions') &&\n\t\tvalue &&\n\t\t!isEqual(value, previousValue)\n\t) {\n\t\tconst {\n\t\t\tdeclarativeActions,\n\t\t\tmodelData: {daRelayPropName}\n\t\t} = properties;\n\n\t\tconst dynamicConditionsState = getDynamicConditionsState(context);\n\t\tif (isEmpty(dynamicConditionsState)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (name === 'declarativeActions' && isEmpty(declarativeActions)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get All dynamicEvaluation Enabled DA\n\t\tconst daSysIds = getDynamicEvaluatedDAs(declarativeActions);\n\n\t\t// Evaluate only dynamicEvaluation Enabled DA\n\t\tif (!daSysIds.length) {\n\t\t\t//handle list table change with no dynamicEval DA\n\t\t\t//update the child of mediator with new DA info\n\t\t\trelayDAUpdates(host, daRelayPropName, declarativeActions);\n\t\t\treturn;\n\t\t}\n\n\t\tevaluateDynamicConditions(context, daSysIds, dynamicConditionsState);\n\t}\n};\n\nconst evaluateDynamicConditions = (context, daSysIds, values) => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {value, previousValue}\n\t\t},\n\t\tdispatch,\n\t\tstate: {dynamicConditionResults = {}},\n\t\tproperties: {\n\t\t\tdeclarativeActions,\n\t\t\tmodelData: {parentTable, parentRecordSysId, conditions, table, daRelayPropName}\n\t\t},\n\t\thost\n\t} = context;\n\n\tconst {recordSysIdsToReEvaluate, runDynamicCondition} = values;\n\tif (runDynamicCondition) {\n\t\t// Re-Evaluate the conditions again for the DA's against the new Records\n\t\tdispatch(DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS, {\n\t\t\tdaSysIds, // we send all da's that have dynamicEvaluationEnabled for evaluation\n\t\t\trecordSysIds: recordSysIdsToReEvaluate,\n\t\t\ttable,\n\t\t\tparentTable,\n\t\t\tparentRecordSysId,\n\t\t\tconditions // use conditions only for \"Select All\" case\n\t\t});\n\t\treturn;\n\t}\n\tif (isEmpty(dynamicConditionResults) && isEmpty(previousValue)) {\n\t\t//handle list table change with dynamicEval DA when No record selected (no gql fired)\n\t\t//update the child of mediator with new DA info\n\t\trelayDAUpdates(host, daRelayPropName, declarativeActions);\n\t\treturn;\n\t}\n\t//handle pagination & count updates on list\n\tlet {affectedRecordSysIds} = values;\n\tif (!affectedRecordSysIds.length) affectedRecordSysIds = value.selectedRecords || [];\n\t// No need for Re-Evaluation, use the cached data in state to calculate DA state\n\tupdateDeclarativeActions(\n\t\tdaSysIds,\n\t\taffectedRecordSysIds,\n\t\tdynamicConditionResults,\n\t\t[...declarativeActions],\n\t\thost,\n\t\tdaRelayPropName\n\t);\n};\n\nconst getDynamicConditionsState = context => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {value, previousValue}\n\t\t},\n\t\tproperties: {\n\t\t\tmodelData: {recordSysIds = []}\n\t\t},\n\t\tstate: {dynamicConditionResults = {}},\n\t\tupdateState\n\t} = context;\n\n\tlet recordSysIdsToReEvaluate = [];\n\tlet affectedRecordSysIds = [];\n\tlet runDynamicCondition = false;\n\n\tif (\n\t\t!isEmpty(previousValue) &&\n\t\t(!isEqual(value.parentTable, previousValue.parentTable) ||\n\t\t\t!isEqual(value.parentRecordSysId, previousValue.parentRecordSysId) ||\n\t\t\t!isEqual(value.table, previousValue.table) ||\n\t\t\t!isEqual(value.recordSysIds, previousValue.recordSysIds))\n\t) {\n\t\t//ignore unwanted props\n\t\treturn {};\n\t} else if (!isEqual(value.listRefresh, previousValue.listRefresh)) {\n\t\t// Clear dynamic condition result cache when list is refreshed\n\t\tupdateState({dynamicConditionResults: {}});\n\t\treturn {};\n\t} else if (!isEqual(value.conditions, previousValue.conditions)) {\n\t\trunDynamicCondition = true;\n\t} else if (\n\t\tvalue.cellUpdatedOn &&\n\t\tvalue.editedRecords &&\n\t\t!isEqual(value.cellUpdatedOn, previousValue.cellUpdatedOn) &&\n\t\tvalue.editedRecords.length\n\t) {\n\t\t//handle inline edit\n\t\t//note if the same record is being updated again we get the same sysIds in editedRecords\n\t\t//so we use cellUpdatedOn in combination\n\t\taffectedRecordSysIds = value.editedRecords || [];\n\t\trecordSysIdsToReEvaluate = affectedRecordSysIds;\n\t\trunDynamicCondition = recordSysIdsToReEvaluate.length;\n\t} else if (!isEqual(value.selectedRecords, previousValue.selectedRecords)) {\n\t\t// NoInlineEdit - get all records not in state\n\n\t\taffectedRecordSysIds = value.selectedRecords || [];\n\t\t//dynamicConditionResults is Object of objects\n\t\t//Object<{[dasysID]:{[recordSysId]:boolean}}>\n\t\t//each of the objects [one per DA] will contain the same set of recordSysIds\n\t\t//we need only one object from that to get a list of recordSysIds\n\t\t//so we use Object.keys to get one object and then find the difference\n\t\trecordSysIdsToReEvaluate = getRecordsToEvaluate(recordSysIds, dynamicConditionResults);\n\t\trunDynamicCondition = affectedRecordSysIds.length && recordSysIdsToReEvaluate.length;\n\t}\n\n\treturn {recordSysIdsToReEvaluate, affectedRecordSysIds, runDynamicCondition};\n};\n\nexport const getRecordsToEvaluate = (recordSysIds, dynamicConditionResults) => {\n\treturn Object.keys(dynamicConditionResults).length\n\t\t? difference(recordSysIds, Object.keys(find(dynamicConditionResults)))\n\t\t: recordSysIds;\n};\n\n/**\n * Function to add/update the \"enable\" property\n * for all the Dynamic Evaluation Enabled DAs based on its defined Conditions\n * and update the slotted child with the Updated Declarative Actions if any\n *\n * @param {Array.<string>} daSysIds  DynamicEvaluation Enabled Declarative Action SysIds\n * @param {Array.<string>} selectedRecords Selected Record SysIds to run conditions on\n * @param {Object} dynamicConditionResults Dynamically Evaluated DA Results from server\n * @param {Object} declarativeActions Declarative Actions\n * @param {string} host Reference to the DOM element the ShadowRoot is attached\n * @param {string} daRelayPropName prop name of the slotted child component\n */\nconst updateDeclarativeActions = (\n\tdaSysIds = [],\n\tselectedRecords = [],\n\tdynamicConditionResults,\n\tdeclarativeActions,\n\thost,\n\tdaRelayPropName\n) => {\n\tlet isDirty = false;\n\n\t//Run for each of the Dynamic Evaluation Enabled DA's\n\tdaSysIds.forEach(daSysId => {\n\t\t//check DA - enable or disable\n\t\t//DA has to be disabled if no selected records\n\t\t//fail fast - get out of the loop as soon as we find first false\n\t\tconst isDAEnabled = selectedRecords.length\n\t\t\t? selectedRecords.every(recSysId =>\n\t\t\t\t\tget(dynamicConditionResults, `${daSysId}.${recSysId}`, false)\n\t\t\t  )\n\t\t\t: false;\n\n\t\t//find the DAs to update\n\t\tdeclarativeActions = declarativeActions.map(da => {\n\t\t\treturn {\n\t\t\t\t...da,\n\t\t\t\tchildren: da.children.map(daToUpdate => {\n\t\t\t\t\tif (daToUpdate.id === daSysId) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdaToUpdate.action &&\n\t\t\t\t\t\t\t(!has(daToUpdate.action, 'enabled') ||\n\t\t\t\t\t\t\t\tdaToUpdate.action.enabled !== isDAEnabled)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tisDirty = true;\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...daToUpdate,\n\t\t\t\t\t\t\t\taction: {...daToUpdate.action, enabled: isDAEnabled}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn daToUpdate;\n\t\t\t\t})\n\t\t\t};\n\t\t});\n\t});\n\n\tif (isDirty) {\n\t\t//update the child of mediator with new DA info\n\t\trelayDAUpdates(host, daRelayPropName, declarativeActions);\n\t}\n};\n\n/**\n * Function to convert the structure of DA Condition results from GQL to\n * the structure used in the UI\n *\n * @param {Array<{daSysId:string,recordResults:Array<recordSysId:string,result:boolean>}>} results\n * @returns {Array<{[dasysID]:{[recordSysId]:boolean}}>}\n *\n * input daResults\n * [\n *     {\n *         \"daSysId\": \"e217890121fe1910f877aaad21d648c7\",\n *         \"recordResults\": [\n *             {\n *                 \"recordSysId\": \"57af7aec73d423002728660c4cf6a71c\",\n *                 \"result\": false\n *             },\n *             ...more\n *         ]\n *     }\n *     ...more\n * ]\n *\n * output mappedResults\n * [\n *     {\n *         \"e217890121fe1910f877aaad21d648c7\": {\n *             \"57af7aec73d423002728660c4cf6a71c\": false,\n *             \"ed92e8d173d023002728660c4cf6a7bc\": false,\n *             ...more\n *         }\n *     },\n *     ...more\n * ]\n */\nconst mapDynamicConditionResults = results =>\n\tresults.map(conditionResult => {\n\t\tconst recData = conditionResult.recordResults.map(rec => ({\n\t\t\t[rec.recordSysId]: rec.result\n\t\t}));\n\t\t//convert Array<{[recordSysId]: boolean}> to Object<{[recordSysId]: boolean}>\n\t\t//and assign that to a daSysID\n\t\treturn {[conditionResult.daSysId]: Object.assign({}, ...recData)};\n\t});\n\nexport const dynamicConditionCompletedEffect = ({\n\taction,\n\tproperties: {\n\t\tdeclarativeActions,\n\t\tmodelData: {selectedRecords, conditions, daRelayPropName}\n\t},\n\tupdateState,\n\tstate: {dynamicConditionResults},\n\thost\n}) => {\n\tconst newConditionResults = get(\n\t\taction,\n\t\t'payload.data.GlideListDeclarativeActionUtil_Query.getEvaluatedDynamicConditions',\n\t\t[]\n\t);\n\n\t// convert the structure\n\tconst stateConditionResultsArr = mapDynamicConditionResults(newConditionResults);\n\n\t// merge new record data with existing record data in state\n\tconst stateConditionResults = merge(\n\t\tdynamicConditionResults,\n\t\tObject.assign({}, ...stateConditionResultsArr)\n\t);\n\n\tupdateState({dynamicConditionResults: stateConditionResults});\n\n\tconst daSysIds = getDynamicEvaluatedDAs(declarativeActions);\n\n\t//if conditions is in place, its a List Select All Case\n\t//we get all recordSysIds from the result\n\tconst selectAllRecords = Object.assign({}, ...stateConditionResultsArr);\n\tconst selectedRecordsToEffect =\n\t\tconditions && !selectedRecords.length\n\t\t\t? Object.keys(selectAllRecords).length\n\t\t\t\t? Object.keys(find(selectAllRecords))\n\t\t\t\t: []\n\t\t\t: selectedRecords;\n\n\tupdateDeclarativeActions(\n\t\tdaSysIds,\n\t\tselectedRecordsToEffect,\n\t\tstateConditionResults,\n\t\t[...declarativeActions],\n\t\thost,\n\t\tdaRelayPropName\n\t);\n};\n\nconst dynamicConditionQuery = `\nquery snDeclarativeMediator($daSysIds: [String!], $recordSysIds: [String!], $table: String!, $parentTable: String, $parentRecordSysId: String, $conditions: String){\n\tGlideListDeclarativeActionUtil_Query{\n\t\tgetEvaluatedDynamicConditions(daSysIds: $daSysIds, recordSysIds: $recordSysIds, table: $table, \\\nparentTable: $parentTable, parentRecordSysId: $parentRecordSysId, conditions: $conditions) {\n\t\t\tdaSysId,\n\t\t\trecordResults {\n\t\t\t\trecordSysId,\n\t\t\t\tresult\n\t\t\t}\n\t\t}\n\t}\n}\n`;\n\nexport const runDynamicConditionsEffect = createGraphQLEffect(dynamicConditionQuery, {\n\tvariableList: [\n\t\t'daSysIds',\n\t\t'recordSysIds',\n\t\t'table',\n\t\t'parentTable',\n\t\t'parentRecordSysId',\n\t\t'conditions'\n\t],\n\tsuccessActionType: DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_COMPLETED,\n\terrorActionType: DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_FAILED\n});\n","import {getComponentsByTagNames} from '@devsnc/library-uxf';\n\n/*\n * Downloads a single component tag\n */\nexport const loadComponent = async componentTag => {\n\tif (!componentTag) return undefined;\n\treturn getComponentsByTagNames([componentTag]).then(names => {\n\t\treturn names;\n\t});\n};\n","import {get} from 'lodash';\nimport track, {markTypes} from '@devsnc/ux-metrics';\n\n// Mark level goes from 0 to 5, where higher number the more important.\nexport const DEFAULT_MARK_LEVEL = 4;\n\n// Mark type of the event. Available options: 'all', 'usage', 'performance'\nexport const DEFAULT_MARK_TYPE = markTypes.usage;\n\nconst TYPE = 'Declarative Action';\n\nconst EVENT_NAME = {\n\tFORM: 'Click Form Action',\n\tFIELD: 'Click Field Action',\n\tLIST: 'Click List Action',\n\tRELATED_LIST: 'Click Related List Action',\n\tUNKNOWN: 'Click Declarative Action'\n};\n\nconst EVENT_ORIGIN_EVENT_NAME_MAP = {\n\t'SN-FORM-INTERNAL-UIACTIONBAR': EVENT_NAME.FORM,\n\t'SN-DECLARATIVE-FIELD-ACTION-RENDERER': EVENT_NAME.FIELD\n};\n\n/**\n * Track component's events for UX usage analytics\n * @param {Object} coeffects - Coeffects object containing props such as host, action payload, and action type.\n * @param {Number} [markLevel=4] - Mark level goes from 0 to 5, where higher number the more important.\n * @param {String} [markType=usage] - Mark type of the event. Available options: 'all', 'usage', 'performance'\n */\nconst trackUxMetrics = (\n\tcoeffects,\n\tmarkLevel = DEFAULT_MARK_LEVEL,\n\tmarkType = DEFAULT_MARK_TYPE\n) => {\n\ttry {\n\t\tlet eventName, details;\n\n\t\tif (get(coeffects, 'action.payload.model')) {\n\t\t\tconst {\n\t\t\t\tpayload: {\n\t\t\t\t\taction: {actionDispatch, assignmentId, id, name, label},\n\t\t\t\t\tmodel: {fieldName, referenceTable, table, tableName}\n\t\t\t\t}\n\t\t\t} = coeffects.action;\n\n\t\t\teventName = getEventName(coeffects.action);\n\n\t\t\tdetails = {\n\t\t\t\tdispatchedAction: actionDispatch ? actionDispatch : '',\n\t\t\t\tfieldName: fieldName ? fieldName : '',\n\t\t\t\tfieldTable: referenceTable ? referenceTable : '',\n\t\t\t\tlabel,\n\t\t\t\tname,\n\t\t\t\tsysId: id ? id : assignmentId,\n\t\t\t\ttable: table ? table : tableName,\n\t\t\t\ttype: TYPE\n\t\t\t};\n\t\t} else {\n\t\t\tconst {\n\t\t\t\tpayload: {\n\t\t\t\t\taction: {actionDispatch}\n\t\t\t\t}\n\t\t\t} = coeffects.action;\n\n\t\t\teventName = actionDispatch;\n\n\t\t\tdetails = {\n\t\t\t\ttype: TYPE\n\t\t\t};\n\t\t}\n\n\t\ttrack(\n\t\t\tcoeffects,\n\t\t\teventName,\n\t\t\t{\n\t\t\t\t...details\n\t\t\t},\n\t\t\t{\n\t\t\t\tlevel: markLevel,\n\t\t\t\ttype: markType\n\t\t\t}\n\t\t);\n\t} catch (ex) {\n\t\t// not logging the exception to avoid confusing the customers with internal issues.\n\t}\n};\n\nconst getEventName = action => {\n\tconst {\n\t\tpayload: {\n\t\t\tmodel: {listType}\n\t\t}\n\t} = action;\n\n\tif (listType) {\n\t\tif (listType === 'DEFAULT') {\n\t\t\treturn EVENT_NAME.LIST;\n\t\t} else {\n\t\t\treturn EVENT_NAME.RELATED_LIST;\n\t\t}\n\t} else {\n\t\tlet eventOriginNode;\n\t\ttry {\n\t\t\teventOriginNode = action.meta.event.composedPath()[0].nodeName;\n\t\t} catch (ex) {\n\t\t\tconsole.warn(\"Unable to retrieve the event's origin\");\n\t\t}\n\t\treturn get(EVENT_ORIGIN_EVENT_NAME_MAP, eventOriginNode, EVENT_NAME.UNKNOWN);\n\t}\n};\n\nexport default trackUxMetrics;\n","import {DA_WRAPPED_CLICKED, UXF_INTERNAL_EVENT_META} from '../common/constants';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {createHttpEffect} from '@servicenow/ui-effect-http';\nimport {\n\tdynamicConditionCompletedEffect,\n\thandlePropertyChanged,\n\trelayDAUpdates,\n\trunDynamicConditionsEffect\n} from './dynamicConditionsUtil';\nimport {get, isArray, isFunction, pick} from 'lodash';\nimport {loadComponent} from '../utils/dynamicLoad';\nimport trackUxMetrics from '../utils/uxMetricsUtils';\nconst {COMPONENT_PROPERTY_CHANGED, COMPONENT_DOM_TREE_READY} = actionTypes;\nexport const DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS =\n\t'DECLARATIVE_ACTION_INTERNAL#RUN_DYNAMIC_CONDITIONS';\nexport const DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_COMPLETED =\n\t'DECLARATIVE_ACTION#RUN_DYNAMIC_CONDITION_COMPLETED';\nexport const DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_FAILED =\n\t'DECLARATIVE_ACTION#RUN_DYNAMIC_CONDITION_FAILED';\n\nexport const DECLARATIVE_ACTION = 'DECLARATIVE_ACTION';\nexport const DECLARATIVE_ACTION_UPDATE_RENDER = 'DECLARATIVE_ACTION_INTERNAL#UPDATE_RENDER';\nexport const DECLARATIVE_ACTION_EXECUTE_ACTION = 'DECLARATIVE_ACTION_INTERNAL#EXECUTE_ACTION';\nexport const DECLARATIVE_ACTION_CANCEL_ACTION = 'DECLARATIVE_ACTION_INTERNAL#CANCEL_ACTION';\nexport const DECLARATIVE_ACTION_CLOSE_MODAL = 'DECLARATIVE_ACTION_INTERNAL#CLOSE_MODAL';\nexport const DECLARATIVE_ACTION_SCRIPT_START = 'DECLARATIVE_ACTION_INTERNAL#SCRIPT_START';\nexport const DECLARATIVE_ACTION_SCRIPT_SUCCESS = 'DECLARATIVE_ACTION_INTERNAL#SCRIPT_SUCCESS';\nexport const DECLARATIVE_ACTION_SCRIPT_FAILED = 'DECLARATIVE_ACTION_INTERNAL#SCRIPT_FAILED';\n\nexport const PUBLIC_DECLARATIVE_ACTION_SCRIPT_SUCCESS = 'DECLARATIVE_ACTION#SCRIPT_SUCCESS';\nexport const PUBLIC_DECLARATIVE_ACTION_SCRIPT_FAILED = 'DECLARATIVE_ACTION#SCRIPT_FAILED';\nexport const PUBLIC_DECLARATIVE_ACTION_UPDATE_RENDER = 'DECLARATIVE_ACTION#UPDATE_RENDER';\nexport const PUBLIC_DECLARATIVE_ACTION_REDIRECT_REQUESTED = 'DECLARATIVE_ACTION#REDIRECT_REQUESTED';\n\nexport const DECLARATIVE_ACTION_OPEN_LINK = 'DECLARATIVE_ACTION#OPEN_LINK';\nexport const DECLARATIVE_ACTION_CLIENT_SCRIPT_EXECUTION_REQUESTED =\n\t'DECLARATIVE_ACTION#CLIENT_SCRIPT_EXECUTION_REQUESTED';\nconst HTTP_ERROR_OCCURRED = 'HTTP_ERROR_OCCURRED';\n\nexport const VALUE_CHANGED = 'VALUE_CHANGED';\nexport const ACTION_COMPONENT = 'action_component';\nexport const DISPATCH_ACTION = 'dispatch_action';\nexport const CLIENT_SCRIPT = 'client_script';\nexport const SERVER_SCRIPT = 'server_script';\nexport const UXF_CLIENT_ACTION = 'uxf_client_action';\nconst SERVER_SCRIPT_API = '/api/now/ui/declarative_action/:assignmentId';\nconst SERVER_SCRIPT_API_PATH_PARAMS = ['assignmentId'];\nconst SERVER_SCRIPT_API_QUERY_PARAMS = ['sysparm_table'];\nconst SERVER_SCRIPT_API_BODY_PARAMS = [\n\t'sysId',\n\t'sysIds',\n\t'fields',\n\t'encodedRecord',\n\t'query',\n\t'selectionQuery',\n\t'parentTable',\n\t'parentRecordSysId'\n];\n\n// Field model doesn't have sysId field\nconst consolidateModel = model => {\n\tlet fieldsParams = {};\n\tlet fields = get(model, 'fields');\n\tif (fields) {\n\t\tif (!isArray(fields)) fields = Object.values(fields); //DA action executor needs fields in array different than our related items and side panel\n\t\tfieldsParams = {fields};\n\t}\n\n\treturn {\n\t\t...model,\n\t\tsysId: model.isNewRecord ? '-1' : model.sysId || model.recordSysId,\n\t\t...fieldsParams\n\t};\n};\n\nconst createHttpData = (action, model) => ({\n\tassignmentId: action.assignmentId,\n\tsysparm_table: model.table || model.tableName,\n\tdata: pick(consolidateModel(model), SERVER_SCRIPT_API_BODY_PARAMS)\n});\n\n// dispatches an action with the necessary payload to execute the action\n// This function assumes the user has already confirmed the action if confirmation\n// is required. TODO: Refactor to handle ACTION_COMPONENT without needing to do a double render\nconst dispatchActionByType = (dispatch, action, model, properties) => {\n\tconst {actionType, actionDispatch, actionPayload, assignmentId} = action;\n\tconst {shouldWrapAction = false} = properties;\n\n\tif (actionType === DISPATCH_ACTION || actionType === UXF_CLIENT_ACTION) {\n\t\tif (!shouldWrapAction) {\n\t\t\tdispatch(actionDispatch, actionPayload);\n\t\t} else {\n\t\t\tdispatch(\n\t\t\t\tDA_WRAPPED_CLICKED,\n\t\t\t\t{\n\t\t\t\t\twrapped_action_name: actionDispatch,\n\t\t\t\t\twrapped_payload: actionPayload,\n\t\t\t\t\twrapped_action_type: actionType\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[UXF_INTERNAL_EVENT_META]: {\n\t\t\t\t\t\tsourceCorrelationId: assignmentId\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} else if (actionType === SERVER_SCRIPT) {\n\t\tdispatch(DECLARATIVE_ACTION_SCRIPT_START, createHttpData(action, model));\n\t} else if (actionType === CLIENT_SCRIPT) {\n\t\tconst {actionName, assignmentId, clientScript} = action;\n\t\tdispatch(DECLARATIVE_ACTION_CLIENT_SCRIPT_EXECUTION_REQUESTED, {\n\t\t\tactionName,\n\t\t\tassignmentId,\n\t\t\tclientScript,\n\t\t\tmodel\n\t\t});\n\t}\n};\n\nconst getDispatcher = ({action, properties, dispatch}) => {\n\tconst {shouldAppendActionEvent} = properties;\n\tif (!shouldAppendActionEvent) return dispatch;\n\tconst createActionEvent = ({type, target, metaKey}) => {\n\t\treturn {type, target, metaKey};\n\t};\n\tconst {\n\t\tmeta: {actionEvent = createActionEvent(action.meta.event)}\n\t} = action;\n\tconst addToPayload = (name, payload) =>\n\t\tname === DA_WRAPPED_CLICKED\n\t\t\t? {\n\t\t\t\t\t...payload,\n\t\t\t\t\twrapped_payload: {\n\t\t\t\t\t\t...payload.wrapped_payload,\n\t\t\t\t\t\tactionEvent\n\t\t\t\t\t}\n\t\t\t  }\n\t\t\t: {...payload, actionEvent};\n\treturn (name, payload, meta) => dispatch(name, addToPayload(name, payload), meta);\n};\n\nexport const mediator = coeffects => {\n\tconst {\n\t\taction: {\n\t\t\tpayload: {model, action}\n\t\t},\n\t\tproperties\n\t} = coeffects;\n\tconst {confirmationRequired} = action;\n\n\ttrackUxMetrics(coeffects);\n\tconst dispatch = getDispatcher(coeffects);\n\n\tif (!confirmationRequired) dispatchActionByType(dispatch, action, model, properties);\n\n\tdispatch(DECLARATIVE_ACTION_UPDATE_RENDER, {\n\t\tmodel,\n\t\taction,\n\t\tdisplayConfirmation: confirmationRequired\n\t});\n};\n\nconst dispatchNotifications = (dispatch, sessionNotifications = []) => {\n\tif (!sessionNotifications.length) return;\n\n\tconst notifications = sessionNotifications.reduce((allNotifications, {type, text}) => {\n\t\tif (!text) return allNotifications;\n\n\t\treturn [\n\t\t\t...allNotifications,\n\t\t\t{\n\t\t\t\ttype,\n\t\t\t\tmessage: text\n\t\t\t}\n\t\t];\n\t}, []);\n\tif (notifications.length)\n\t\tdispatch('ADD_NOTIFICATIONS', {\n\t\t\tnotifications\n\t\t});\n};\n\n// Handler for DAs that may update the field value.\n// The component author would dispatch `VALUE_CHANGED`.\n// Uses the onValueChange passed by form (Section.js)\n// Ultimately it will invoke formData.setValue(...)\n// Payload must include: name, value, displayValue\n// This is specific to field declarative actions\nexport const updateFormFieldValue = ({action: {payload}, state}) => {\n\tconst {model} = state;\n\tconst {onValueChange} = model;\n\n\tif (!isFunction(onValueChange)) return;\n\n\tonValueChange({\n\t\t...payload,\n\t\tname: payload.name || model.name\n\t});\n};\n\nexport default {\n\t[DECLARATIVE_ACTION]: {\n\t\teffect: mediator,\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_UPDATE_RENDER]: {\n\t\teffect: ({updateState, action, dispatch}) => {\n\t\t\tconst {action: payloadAction, model, displayConfirmation} = action.payload;\n\t\t\tconst isDefined =\n\t\t\t\t!payloadAction.actionComponent ||\n\t\t\t\tpayloadAction.actionComponent === 'sn-declarative-reference-search' ||\n\t\t\t\tcustomElements.get(payloadAction.actionComponent);\n\t\t\tconst updatingState = {\n\t\t\t\taction: payloadAction,\n\t\t\t\tmodel,\n\t\t\t\tdisplayConfirmation,\n\t\t\t\tkey: Date.now() // key is Date.now() because we need to the author's component to re-render always\n\t\t\t};\n\t\t\tif (isDefined) {\n\t\t\t\tupdateState(updatingState);\n\t\t\t} else {\n\t\t\t\tloadComponent(payloadAction.actionComponent).then(loadedComponents => {\n\t\t\t\t\tupdateState(updatingState);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdispatch(PUBLIC_DECLARATIVE_ACTION_UPDATE_RENDER, action.payload);\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_EXECUTE_ACTION]: {\n\t\teffect: ({state: {action, model}, dispatch, properties}) =>\n\t\t\tdispatchActionByType(dispatch, action, model, properties),\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_CANCEL_ACTION]: {\n\t\teffect: ({updateState}) => {\n\t\t\tupdateState({\n\t\t\t\taction: null,\n\t\t\t\tmodel: null\n\t\t\t});\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_SCRIPT_START]: {\n\t\t...createHttpEffect(SERVER_SCRIPT_API, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {'X-WantSessionNotificationMessages': true},\n\t\t\tqueryParams: SERVER_SCRIPT_API_QUERY_PARAMS,\n\t\t\tpathParams: SERVER_SCRIPT_API_PATH_PARAMS,\n\t\t\tdataParam: 'data',\n\t\t\tsuccessActionType: DECLARATIVE_ACTION_SCRIPT_SUCCESS,\n\t\t\terrorActionType: DECLARATIVE_ACTION_SCRIPT_FAILED\n\t\t}),\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_SCRIPT_SUCCESS]: {\n\t\teffect: ({state: {action: stateAction, model}, dispatch, action}) => {\n\t\t\tconst {redirect, record} = get(action, 'payload.result', {});\n\t\t\tif (redirect) {\n\t\t\t\tif (redirect.type !== 'TABLE') {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn('Unhandled redirect type', redirect);\n\t\t\t\t}\n\n\t\t\t\tconst {table, sys_id, query} = redirect.type_metadata;\n\t\t\t\tconst {table: parent_table, sys_id: parent_sys_id} = record || {};\n\n\t\t\t\tdispatch(PUBLIC_DECLARATIVE_ACTION_REDIRECT_REQUESTED, {\n\t\t\t\t\ttable,\n\t\t\t\t\tsys_id,\n\t\t\t\t\t...(query\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tquery\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(parent_table\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tparent_table\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(parent_sys_id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tparent_sys_id\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {})\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdispatch('REFRESH_REQUESTED');\n\n\t\t\tconst sessionNotifications = get(action, 'payload.session.notifications', []);\n\t\t\tdispatchNotifications(dispatch, sessionNotifications);\n\n\t\t\tdispatch(PUBLIC_DECLARATIVE_ACTION_SCRIPT_SUCCESS, {\n\t\t\t\t...action.payload,\n\t\t\t\taction: stateAction,\n\t\t\t\tmodel\n\t\t\t});\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_SCRIPT_FAILED]: {\n\t\teffect: ({state: {action: stateAction, model}, dispatch, action}) => {\n\t\t\tlet message = get(action, 'payload.data.error.message', '');\n\t\t\tif (!message) {\n\t\t\t\tconst result = get(action, 'payload.data.result', {});\n\t\t\t\tconst sysId = Object.keys(result)[0];\n\t\t\t\tmessage = get(result, `${sysId}.resultBody.error.message`, '');\n\t\t\t}\n\n\t\t\tif (message)\n\t\t\t\tdispatch('ADD_NOTIFICATIONS', {\n\t\t\t\t\tnotifications: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\t\tmessage\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t});\n\n\t\t\tconst sessionNotifications = get(action, 'payload.data.session.notifications', []);\n\t\t\tdispatchNotifications(dispatch, sessionNotifications);\n\n\t\t\tdispatch(PUBLIC_DECLARATIVE_ACTION_SCRIPT_FAILED, {\n\t\t\t\t...action.payload,\n\t\t\t\taction: stateAction,\n\t\t\t\tmodel\n\t\t\t});\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_CLOSE_MODAL]: {\n\t\teffect: ({updateState}) => {\n\t\t\tupdateState({\n\t\t\t\tdisplayConfirmation: false\n\t\t\t});\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_OPEN_LINK]: {\n\t\teffect: ({action}) => {\n\t\t\tconst {\n\t\t\t\tpayload: {url}\n\t\t\t} = action;\n\n\t\t\tif (url) window.open(url, '_blank');\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[VALUE_CHANGED]: {\n\t\teffect: updateFormFieldValue,\n\t\tstopPropagation: true\n\t},\n\t// seismic dispatch Standard action dispatched on HTTP errors from the server, and canvas will handle it and display a standard error modal.\n\t// We don't want that since our call should be handled in component and we already show session message\n\t[HTTP_ERROR_OCCURRED]: {\n\t\teffect: () => {},\n\t\tstopPropagation: true\n\t},\n\t[COMPONENT_PROPERTY_CHANGED]: context => {\n\t\tconst {\n\t\t\tproperties: {shouldEvaluateDynamicConditions = false}\n\t\t} = context;\n\t\tif (shouldEvaluateDynamicConditions) {\n\t\t\thandlePropertyChanged(context);\n\t\t}\n\t},\n\t[DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS]: {\n\t\t...runDynamicConditionsEffect,\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_COMPLETED]: ({\n\t\taction,\n\t\tdispatch,\n\t\tproperties,\n\t\tupdateState,\n\t\tstate,\n\t\thost\n\t}) => {\n\t\tdynamicConditionCompletedEffect({action, dispatch, properties, updateState, state, host});\n\t},\n\t[DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_FAILED]: ({action}) => {\n\t\tconsole.error('Running Dynamic Conditions Failed', action.payload.errors);\n\t},\n\t[COMPONENT_DOM_TREE_READY]: ({\n\t\thost,\n\t\tproperties: {\n\t\t\tmodelData = {},\n\t\t\tdeclarativeActions = [],\n\t\t\tshouldEvaluateDynamicConditions = false\n\t\t}\n\t}) => {\n\t\tif (shouldEvaluateDynamicConditions) {\n\t\t\t//update the child of mediator with new DA info\n\t\t\tconst {daRelayPropName = ''} = modelData;\n\t\t\trelayDAUpdates(host, daRelayPropName, declarativeActions);\n\t\t}\n\t}\n};\n","import {VALUE_CHANGED} from '../mediator/actions';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {createGraphQLEffect} from '@servicenow/ui-effect-graphql';\nimport createComponentLoaderEffect from '@devsnc/uxf-effect-component-loader';\nimport find from 'lodash/find';\nimport get from 'lodash/get';\n\nconst {COMPONENT_BOOTSTRAPPED} = actionTypes;\n\nconst itemSelectedAction = 'NOW_RECORD_LIST_CONNECTED#ROW_CLICKED';\nconst treePickerItemSelectedAction = 'SN_RECORD_CONTENT_TREE_CONNECTED#ITEM_CLICKED';\nconst treePickerModalCloseAction = 'SN_RECORD_CONTENT_TREE_CONNECTED#MODAL_CLOSE_CLICKED_ACTION';\nconst treePickerModalAddAction = 'SN_RECORD_CONTENT_TREE_CONNECTED#MODAL_ADD_CLICKED_ACTION';\nconst FETCH_TREE_PICKER = 'FETCH_TREE_PICKER';\nconst FETCH_TREE_PICKER_SUCCESS = 'FETCH_TREE_PICKER_SUCCESS';\nconst FETCH_TREE_PICKER_FAILURE = 'FETCH_TREE_PICKER_FAILURE';\nconst TREE_PICKER_CONFIG_DATA_PATH = 'data.GlideLayout_Query.treePickerConfigQuery.treePicker';\nconst DOMAIN_SEPARATION_DATA_PATH = 'data.GlideLayout_Query.formLayout.domainSeparation';\n\nconst COMPONENT_LOAD_REQUESTED = 'SN_DECLARATIVE_REFERENCE_SEARCH#COMPONENT_LOAD_REQUESTED';\nconst COMPONENT_LOAD_SUCCEEDED = 'SN_DECLARATIVE_REFERENCE_SEARCH#COMPONENT_LOAD_SUCCEEDED';\nconst COMPONENT_LOAD_FAILED = 'SN_DECLARATIVE_REFERENCE_SEARCH#COMPONENT_LOAD_FAILED';\n\nexport const itemSelectedTransform = ({action, dispatch, state}) => {\n\tconst {referenceKey} = state.properties;\n\tconst value = referenceKey\n\t\t? get(action, 'payload.row.referenceKeyValue.value')\n\t\t: get(action, 'payload.row.sys_id.value');\n\tconst newPayload = {\n\t\tname: get(state, 'properties.name', ''),\n\t\tvalue,\n\t\tdisplayValue: get(action, 'payload.row.displayValue.value', ''),\n\t\tadditionalInfo: {referenceSysId: get(action, 'payload.row.sys_id.value')}\n\t};\n\tdispatch(VALUE_CHANGED, newPayload);\n};\n\nexport const treePickerItemSelectedTransform = ({action, dispatch, state, updateState}) => {\n\tconst newPayload = {\n\t\tname: get(state, 'properties.name', ''),\n\t\tvalue: get(action, 'payload.value', ''),\n\t\tdisplayValue: get(action, 'payload.displayValue', '')\n\t};\n\tif (state.properties.fieldType !== 'glide_list') {\n\t\tdispatch(VALUE_CHANGED, newPayload);\n\t\tdispatch(treePickerModalCloseAction);\n\t} else {\n\t\tconst operation = {\n\t\t\toperation: 'push'\n\t\t};\n\t\tconst isSelected = get(action, 'payload.isSelected', true);\n\t\tif (!isSelected) {\n\t\t\tconst index = state.selectedItems.value.indexOf(newPayload.value);\n\t\t\tif (index === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.assign(operation, {operation: 'splice', start: index, deleteCount: 1});\n\t\t}\n\t\tupdateState([\n\t\t\t{\n\t\t\t\tpath: 'selectedItems.value',\n\t\t\t\tvalue: get(action, 'payload.value', ''),\n\t\t\t\t...operation\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'selectedItems.display_value_list',\n\t\t\t\tvalue: get(action, 'payload.displayValue', ''),\n\t\t\t\t...operation\n\t\t\t}\n\t\t]);\n\t}\n};\n\nexport const addSelectedItemsEffect = ({dispatch, state}) => {\n\tconst {selectedItems} = state;\n\tif (selectedItems.value.length === 0) {\n\t\tdispatch(treePickerModalCloseAction);\n\t\treturn;\n\t}\n\tconst newPayload = {\n\t\tname: get(state, 'properties.name', ''),\n\t\tvalue: selectedItems.value.join(','),\n\t\tdisplayValue: selectedItems.display_value_list\n\t};\n\n\tdispatch(VALUE_CHANGED, newPayload);\n\tdispatch(treePickerModalCloseAction);\n};\n\nconst closeModalEffect = ({updateState}) => {\n\tupdateState({\n\t\tactive: false,\n\t\tselectedItems: {value: [], display_value_list: []}\n\t});\n};\n\nconst treePickerQuery = `\nquery ($table: String!, $field: String!, $sys_id: String, $serialized_changes: String, $encoded_record: String) {\n  \tGlideLayout_Query {\n\t\ttreePickerConfigQuery(tableName: $table, fieldName: $field, sysId: $sys_id, serializedChanges: $serialized_changes, encodedRecord: $encoded_record) {\n\t\t\ttreePicker {\n\t\t\t\tisSupported\n\t\t\t\tprocessor\n\t\t\t\ttable\n\t\t\t\ttargetField\n\t\t\t\ttargetValue\n\t\t\t\ttargetPath\n\t\t\t\tqueryString\n\t\t\t}\n\t\t}\n\t\tformLayout(table: $table, sysId: $sys_id) {\n\t\t\tdomainSeparation {\n\t\t\t\tdomainId\n\t\t\t}\n\t\t}\n  \t}\n}\n`;\n\nexport const handleComponentBootstrapped = ({\n\tproperties: {fieldName, tableName, recordSysId, serializedChanges, encodedRecord, dictionary},\n\tdispatch,\n\tupdateState\n}) => {\n\tconst attributes = get(dictionary, 'attributes', []);\n\tconst attributeValue = find(attributes, a => a.name === 'tree_picker');\n\tconst isTreePicker = attributeValue === undefined ? false : attributeValue.value === 'true';\n\n\t// if tree_picker attribute is configured to true, determine tree picker is supported or not.\n\tif (isTreePicker) {\n\t\tconst payload = {\n\t\t\tfield: fieldName,\n\t\t\ttable: tableName,\n\t\t\tsys_id: recordSysId,\n\t\t\tserialized_changes: serializedChanges,\n\t\t\tencoded_record: encodedRecord\n\t\t};\n\t\tdispatch(FETCH_TREE_PICKER, payload, {stopPropagation: true});\n\t\tdispatch(COMPONENT_LOAD_REQUESTED, {tagName: 'sn-record-content-tree-connected'});\n\t} else {\n\t\tupdateState({\n\t\t\tfetchingTreePicker: false,\n\t\t\tisTreePicker: false\n\t\t});\n\t\tdispatch(COMPONENT_LOAD_REQUESTED, {tagName: 'now-record-list-connected-reference'});\n\t}\n};\n\nexport default {\n\t[itemSelectedAction]: {\n\t\teffect: coeffects => {\n\t\t\titemSelectedTransform(coeffects);\n\t\t\tcloseModalEffect(coeffects);\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[treePickerItemSelectedAction]: {\n\t\teffect: treePickerItemSelectedTransform,\n\t\tstopPropagation: true\n\t},\n\t[treePickerModalCloseAction]: {\n\t\teffect: closeModalEffect,\n\t\tstopPropagation: true\n\t},\n\t[treePickerModalAddAction]: {\n\t\teffect: addSelectedItemsEffect,\n\t\tstopPropagation: true\n\t},\n\t'NOW_MODAL#OPENED_SET': closeModalEffect,\n\t[COMPONENT_BOOTSTRAPPED]: handleComponentBootstrapped,\n\t[FETCH_TREE_PICKER]: createGraphQLEffect(treePickerQuery, {\n\t\tvariableList: ['table', 'field', 'sys_id', 'serialized_changes', 'encoded_record'],\n\t\tsuccessActionType: FETCH_TREE_PICKER_SUCCESS,\n\t\terrorActionType: FETCH_TREE_PICKER_FAILURE\n\t}),\n\t[FETCH_TREE_PICKER_SUCCESS]: ({updateState, action}) => {\n\t\tconst {payload} = action;\n\t\tif (payload.errors.length < 1) {\n\t\t\tconst config = get(payload, TREE_PICKER_CONFIG_DATA_PATH);\n\t\t\tconst domainSeparation = get(payload, DOMAIN_SEPARATION_DATA_PATH);\n\t\t\tupdateState({\n\t\t\t\tfetchingTreePicker: false,\n\t\t\t\ttreePickerConfig: config,\n\t\t\t\tdomainId: domainSeparation ? domainSeparation.domainId : null\n\t\t\t});\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\tfetchingTreePicker: false,\n\t\t\t\ttreePickerConfig: {}\n\t\t\t});\n\t\t}\n\t},\n\t[FETCH_TREE_PICKER_FAILURE]: ({updateState}) => {\n\t\tupdateState({\n\t\t\tfetchingTreePicker: false,\n\t\t\ttreePickerConfig: {}\n\t\t});\n\t},\n\t[COMPONENT_LOAD_REQUESTED]: createComponentLoaderEffect({\n\t\tsuccessActionType: COMPONENT_LOAD_SUCCEEDED,\n\t\terrorActionType: COMPONENT_LOAD_FAILED\n\t}),\n\t[COMPONENT_LOAD_SUCCEEDED]: {\n\t\teffect: ({updateState}) => {\n\t\t\tupdateState({\n\t\t\t\tcomponentLoading: false\n\t\t\t});\n\t\t},\n\t\tstopPropagation: true\n\t},\n\t[COMPONENT_LOAD_FAILED]: {\n\t\teffect: ({updateState}) => {\n\t\t\tconsole.error('Failed to load component');\n\t\t\tupdateState({\n\t\t\t\tcomponentLoading: false\n\t\t\t});\n\t\t},\n\t\tstopPropagation: true\n\t}\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\tlayerEvents,\n\tgetShadowRootHost,\n} from '@servicenow/library-enhanced-utils';\nimport {\n\tfilterAriaAttributes,\n\tfindTabbableNodes,\n} from '@servicenow/library-enhanced-utils';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {t} from 'sn-translate';\nimport styles from './_now-modal.scss';\nimport '@servicenow/now-button';\nimport '@servicenow/now-tooltip';\nimport {actionTypes} from '@servicenow/ui-core';\nimport modalBehavior from '@servicenow/behavior-modal';\nimport {configAriaSchema} from '@servicenow/library-schemas';\nimport {isEmpty} from 'lodash';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport resizableBehavior from '@servicenow/behavior-resizable';\n\nimport packageInfo from '../package.json';\nconst {name, version} = packageInfo;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nconst {\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_DISCONNECTED,\n} = actionTypes;\n\nconst handleFocusTrapIframe = (host, properties) => {\n\tconst tabbableNodes = findTabbableNodes(host);\n\tif (!tabbableNodes?.length) return;\n\tconst lastFocusableElement = tabbableNodes[tabbableNodes?.length - 1];\n\tif (lastFocusableElement?.tagName?.toLowerCase() !== 'iframe') return;\n\t//Edge case for focus trap when there is only an iframe in the modal slot and no footer actions\n\tif (properties?.footerActions?.length === 0) {\n\t\tconst firstFocusableElement = tabbableNodes[0];\n\t\tconst div = document.createElement('div');\n\t\tdiv.setAttribute('tabindex', '0');\n\t\tdiv.setAttribute('aria-hidden', 'true');\n\t\tdiv.setAttribute('id', 'now-modal-focus-trap');\n\t\tdiv.setAttribute('style', 'height: 0; width: 0;');\n\t\thost?.shadowRoot?.appendChild(div);\n\t\tdiv.addEventListener('focus', () => {\n\t\t\tfirstFocusableElement?.focus();\n\t\t});\n\t}\n};\nconst addModalToStack = (id, dispatch, disableClose) => {\n\tlayerEvents.add({\n\t\tid,\n\t\tevents: ['keydown'],\n\t\tcallback: (event) => {\n\t\t\tif (event.key !== 'Escape' || disableClose) return;\n\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_MODAL#OPENED_SET',\n\t\t\t\t\tpayload: {value: false},\n\t\t\t\t\tmeta: {origin: 'escape-key'},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t});\n};\n\nconst renderCloseButton = (disableClose, dispatch) => {\n\tif (disableClose) {\n\t\treturn;\n\t}\n\treturn (\n\t\t<now-button-iconic\n\t\t\tid=\"now-modal-close-button\"\n\t\t\tclassName=\"now-modal-button-iconic\"\n\t\t\ticon=\"close-fill\"\n\t\t\tvariant=\"tertiary\"\n\t\t\tsize=\"lg\"\n\t\t\thide-padding\n\t\t\tbare\n\t\t\tconfig-aria={{'aria-label': t('Close dialog')}}\n\t\t\ttooltip-content={t('Close dialog')}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_MODAL#OPENED_SET',\n\t\t\t\t\t\tpayload: {value: false},\n\t\t\t\t\t\tmeta: {origin: 'close-button'},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}}\n\t\t/>\n\t);\n};\n\nconst checkForScrollableContent = (host) => {\n\tconst modalBody = host?.shadowRoot?.querySelector('.now-modal-body');\n\tif (!modalBody) return;\n\tif (modalBody.clientHeight !== modalBody.scrollHeight) {\n\t\tmodalBody.setAttribute('tabindex', 0);\n\t} else {\n\t\tmodalBody.removeAttribute('tabindex');\n\t}\n};\n\nconst renderHeader = (\n\tcomponentId,\n\theaderLabel,\n\tlevel,\n\theaderLabelEl,\n\tdisableClose,\n\tdispatch,\n) => {\n\tif (!headerLabel) {\n\t\treturn;\n\t}\n\n\tconst HeadingLevel = `h${level}`;\n\treturn (\n\t\t<div className=\"now-modal-header\">\n\t\t\t{renderCloseButton(disableClose, dispatch)}\n\t\t\t<HeadingLevel\n\t\t\t\tid={`modalHeading-${componentId}`}\n\t\t\t\tclassName=\"now-modal-heading\"\n\t\t\t\tdata-truncation\n\t\t\t>\n\t\t\t\t{headerLabel}\n\t\t\t</HeadingLevel>\n\t\t</div>\n\t);\n};\n\nconst renderFooter = (footerActions, dispatch) => {\n\tif (isEmpty(footerActions)) return;\n\treturn (\n\t\t<div className=\"now-modal-footer\">\n\t\t\t{renderFooterActions(footerActions, dispatch)}\n\t\t</div>\n\t);\n};\n\nconst renderFooterActions = (footerActions, dispatch) => {\n\treturn footerActions\n\t\t.map((footerAction) => {\n\t\t\tconst {\n\t\t\t\tvariant,\n\t\t\t\tlabel,\n\t\t\t\tbare,\n\t\t\t\tdisabled,\n\t\t\t\ttooltipContent,\n\t\t\t\tclickActionType,\n\t\t\t\tconfigAria,\n\t\t\t\ticon,\n\t\t\t\ticonStart,\n\t\t\t\ticonEnd,\n\t\t\t} = footerAction;\n\n\t\t\tconst actionProps = {\n\t\t\t\tclassName: 'now-modal-footer-button',\n\t\t\t\tvariant,\n\t\t\t\tlabel,\n\t\t\t\tdisabled,\n\t\t\t\ticon,\n\t\t\t\ticonStart,\n\t\t\t\ticonEnd,\n\t\t\t\ttooltipContent,\n\t\t\t\tconfigAria,\n\t\t\t\t'on-click': () => {\n\t\t\t\t\tif (disabled) return;\n\n\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: clickActionType || 'NOW_MODAL#FOOTER_ACTION_CLICKED',\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\taction: footerAction,\n\t\t\t\t\t\t\t\t/* `action.payload.footerAction` is deprecated, keeping it around\n\t\t\t\t\t\t\t\t * to not break API, use `action` instead\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tfooterAction,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\n\t\t\treturn bare ? (\n\t\t\t\t<now-button-bare {...actionProps} />\n\t\t\t) : (\n\t\t\t\t<now-button {...actionProps} />\n\t\t\t);\n\t\t})\n\t\t.reverse();\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {headerLabelEl} = state;\n\tconst {\n\t\tsize,\n\t\tcustomSize,\n\t\tdisableClose,\n\t\theaderLabel,\n\t\theadingLevel,\n\t\tcontent,\n\t\tcontentFullWidth,\n\t\topened,\n\t\thidePadding,\n\t\tfooterActions,\n\t\tconfigAria,\n\t\tlegacyMode,\n\t\tnowId,\n\t\thideOverlay,\n\t} = state.properties;\n\n\tlet customStyle =\n\t\tcustomSize && customSize.height && customSize.width\n\t\t\t? {\n\t\t\t\t\t'--now-modal--height--custom': customSize.height,\n\t\t\t\t\t'--now-modal--width--custom': customSize.width,\n\t\t\t\t}\n\t\t\t: null;\n\tconst dialogSize = customStyle ? 'custom' : size;\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-modal-overlay': true,\n\t\t\t\t'hide-overlay': hideOverlay,\n\t\t\t}}\n\t\t\thidden={!opened}\n\t\t\ton-mousedown={(e) => {\n\t\t\t\tconst dialog = e\n\t\t\t\t\t.composedPath()\n\t\t\t\t\t.find((node) => node?.classList?.contains('now-modal-dialog'));\n\t\t\t\tif (!dialog) e.preventDefault();\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\trole=\"dialog\"\n\t\t\t\taria-labelledby={`modalHeading-${nowId}`}\n\t\t\t\tstyle={customStyle}\n\t\t\t\t{...filterAriaAttributes(configAria, 'dialog')}\n\t\t\t\tclass={{\n\t\t\t\t\t'now-modal': true,\n\t\t\t\t\t['-' + dialogSize]: dialogSize,\n\t\t\t\t\t['is-opened']: opened,\n\t\t\t\t\t'is-legacy-mode': legacyMode,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclass={{'now-modal-dialog': true, 'hide-padding': hidePadding}}\n\t\t\t\t\trole=\"document\"\n\t\t\t\t\t{...filterAriaAttributes(configAria, 'document')}\n\t\t\t\t>\n\t\t\t\t\t{renderHeader(\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\theaderLabel,\n\t\t\t\t\t\theadingLevel,\n\t\t\t\t\t\theaderLabelEl,\n\t\t\t\t\t\tdisableClose,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t)}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-modal-body': true,\n\t\t\t\t\t\t\t'is-full-width': contentFullWidth,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!headerLabel\n\t\t\t\t\t\t\t? renderCloseButton(disableClose, dispatch)\n\t\t\t\t\t\t\t: undefined}\n\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\ton-slotchange={(e) => {\n\t\t\t\t\t\t\t\tconst host = getShadowRootHost(e.currentTarget);\n\t\t\t\t\t\t\t\tcheckForScrollableContent(host);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{content ? <p className=\"now-modal-p\">{content}</p> : undefined}\n\t\t\t\t\t\t</slot>\n\t\t\t\t\t</div>\n\t\t\t\t\t{renderFooter(footerActions, dispatch)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * A modal is a container that displays over application content to give\n * critical information or to ask users to complete a task in the middle of a\n * workflow. When the modal opens, users cannot access the application.\n *\n * Note: `now-modal` will 'hide' all elements outside of itself when opened.\n * This will provide the correct experience for assistive technologies. To learn\n * more about why this is necessary and how it works, [read more about modalBehavior](https://code.devsnc.com/dev/design-system/tree/master/behaviors/modal).\n *\n * ```jsx\n * <now-modal\n * \topened={openedApp}\n * \tsize='sm'\n * \theader-label='Hello!'\n * \tcontent='And this is the body of the modal.'\n * \tfooter-actions='[\n * \t\t{\n * \t\t\t\"variant\": \"primary\",\n * \t\t\t\"label\": \"Save\"\n * \t\t}\n * \t]'\n * />\n * ```\n *\n * @seismicElement now-modal\n * @summary A popup component that temporarily blocks underlying content to provide information or ask the user for a decision.\n */\ncreateEnhancedElement('now-modal', {\n\tproperties: {\n\t\t/**\n\t\t * Sets the size of the modal container. Most sizes automatically expand to\n\t\t * fill the viewport when the screen size is small.\n\t\t * If size is custom the size defaults to 1000px x 750px\n\t\t * or uses the customSize property if that is provided.\n\t\t * @type {('sm'|'md'|'lg'|'fullscreen'|'custom')}\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'sm',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md', 'lg', 'fullscreen', 'custom'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Optional sizes for the modal. Requires both height and width to be provided.\n\t\t * Height and width can be any css value and unit string (e.g px, mm, %, vh, etc.)\n\t\t * Custom height will be limited by minimum 133px and maximum 90% of view port.\n\t\t * Custom width will be limited by minimum 420px and maximum 100% of view port.\n\t\t * If either width or height is missing, the modal will default to 1000px x 750px\n\t\t * @type {{ height: string, width: string }}\n\t\t */\n\t\tcustomSize: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\theight: {\n\t\t\t\t\trequired: true,\n\t\t\t\t\tschema: {type: 'string'},\n\t\t\t\t},\n\t\t\t\twidth: {\n\t\t\t\t\trequired: true,\n\t\t\t\t\tschema: {type: 'string'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, the modal is open. Use `manage-opened` to override the\n\t\t * default behavior and handle the `NOW_MODAL#OPENED_SET` action manually.\n\t\t * @type {boolean}\n\t\t */\n\t\topened: {\n\t\t\tdefault: false,\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * When true, no close button will show and closing the modal via the keyboard will\n\t\t * be disabled. Enabling this property means the modal will no longer pass WCAG\n\t\t * requirements. You will need to replace the close functionality elsewhere within\n\t\t * the modal. Some valid use cases for setting this property would be a Session\n\t\t * Timeout dialog or a Terms & Conditions type modal where an explicit action is\n\t\t * required to proceed.\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableClose: {default: false, schema: {type: 'boolean'}},\n\n\t\t/**\n\t\t * An object representing the configuration for the resizable behavior.\n\t\t * Accepted values:\n\t\t * - enableResizable : @type {boolean} When true, resize handles will be shown on the borders of the modal to support resizing.\n\t\t * - resizableMaxHeight : @type {number} Maximum height in pixels that the target element can be resized to. Default value is window's height.\n\t\t * - resizableMaxWidth : @type {number} Maximum width in pixels that the target element can be resized to. Default value is window's width\n\t\t * - resizableMinHeight : @type {number} Minimum height in pixels that the modal can be resized to. Default value is 600px.\n\t\t * - resizableMinWidth : @type {number} Minimum width in pixels that the modal can be resized to. Default value is 380px.\n\t\t * @type {{ enableResizable: boolean, resizableMinWidth: integer, resizableMinHeight: integer, resizableMaxWidth: integer, resizableMaxHeight: integer }}\n\t\t */\n\t\tresizableConfig: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tenableResizable: {\n\t\t\t\t\tdefault: false,\n\t\t\t\t\tschema: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t\tresizableMinWidth: {\n\t\t\t\t\tdefault: 420,\n\t\t\t\t\tschema: {type: 'number'},\n\t\t\t\t},\n\t\t\t\tresizableMinHeight: {\n\t\t\t\t\tdefault: 133,\n\t\t\t\t\tschema: {type: 'number'},\n\t\t\t\t},\n\t\t\t\tresizableMaxWidth: {\n\t\t\t\t\tschema: {type: 'number'},\n\t\t\t\t},\n\t\t\t\tresizableMaxHeight: {\n\t\t\t\t\tschema: {type: 'number'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * The text content for the modal header.\n\t\t * @type {string}\n\t\t */\n\t\theaderLabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * HTML heading element number used to render the heading for modal header.\n\t\t * @type {number}\n\t\t */\n\t\theadingLevel: {\n\t\t\tdefault: 2,\n\t\t\tschema: {type: 'number', enum: [1, 2, 3, 4, 5, 6]},\n\t\t},\n\t\t/**\n\t\t * The text content for the modal. If you want to display complex content,\n\t\t * use the default slot instead. This property is ignored when an element\n\t\t * is slotted in.\n\t\t * @type {string}\n\t\t */\n\t\tcontent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, removes the default  padding inside the modal.\n\t\t * @type {boolean}\n\t\t */\n\t\thidePadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, removes the horizontal padding around the body of the modal\n\t\t * in order to fit wider content.\n\t\t * @type {boolean}\n\t\t */\n\t\tcontentFullWidth: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An array of objects that defines the buttons in the modal footer.  You\n\t\t * can define up to four buttons, set from right to left.\n\t\t *\n\t\t * The keys of each object are properties for `now-button`. See\n\t\t * `now-button` and `now-button-bare` for more documentation on these properties.\n\t\t * @type {{ label: string, variant: string, disabled: boolean, bare: boolean, icon: string, iconStart: string, iconEnd: string, tooltipContent: string, clickActionType: string, configAria: object}[]}\n\t\t */\n\t\tfooterActions: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: {type: 'string'},\n\t\t\t\t\t\tvariant: {type: 'string'},\n\t\t\t\t\t\tdisabled: {type: 'boolean'},\n\t\t\t\t\t\ttooltipContent: {type: 'string'},\n\t\t\t\t\t\tbare: {type: 'boolean'},\n\t\t\t\t\t\ticon: {type: 'string'},\n\t\t\t\t\t\ticonStart: {type: 'string'},\n\t\t\t\t\t\ticonEnd: {type: 'string'},\n\t\t\t\t\t\tclickActionType: {type: 'string'},\n\t\t\t\t\t\tconfigAria: {\n\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tbutton: configAriaSchema,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * modal. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'dialog' key corresponds to the element in the modal which has the aria\n\t\t * `role` of `dialog`. See https://www.w3.org/TR/wai-aria-1.2/#dialog for\n\t\t * properties and accepted values.\n\t\t * The 'document' key corresponds to the element in the modal which has the aria\n\t\t * `role` of `document`. See https://www.w3.org/TR/wai-aria-1.2/#document for\n\t\t * properties and accepted values.\n\t\t * @type {{ dialog: {'aria-*': string, role: string}, document: {'aria-*': string, role: string} }}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tdialog: configAriaSchema,\n\t\t\t\t\tdocument: configAriaSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * WARNING: Do not use. This is a stop-gap while certain platform UI\n\t\t * is pending conversion to Seismic during Rome.\n\t\t * @private\n\t\t */\n\t\tlegacyMode: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * When true the modal will hide the overlay. When false the modal will have a backdrop.\n\t\t * @type {boolean}\n\t\t */\n\t\thideOverlay: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user clicks on a footer action item. Payload\n\t\t * includes a reference to the clicked item and action. Set\n\t\t * `action.clickActionType` to override the action type.\n\t\t * @type {{action: Object}}\n\t\t */\n\t\t'NOW_MODAL#FOOTER_ACTION_CLICKED': {},\n\t\t/**\n\t\t * Dispatched when the user dismisses the modal by clicking the dismiss\n\t\t * button or pressing `Escape` while the modal is open. A meta data field `origin` is included in the dispatch to\n\t\t * distinguish between the close button and the escape key press.\n\t\t * Set the `manage-opened` property to override the default behavior and handle\n\t\t * this action manually.\n\t\t * @type {{value: boolean}}\n\t\t */\n\t\t'NOW_MODAL#OPENED_SET': {},\n\t\t/**\n\t\t * Dispatched when the resize of the component has ended.\n\t\t * Payload contains a reference to the targets size and position.\n\t\t * @type {{width: number, height: number, left: number, top: number}}\n\t\t * @uib.description Dispatched when resize of the component has ended.\n\t\t */\n\t\t'NOW_MODAL#RESIZABLE_END': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\twidth: {type: 'number'},\n\t\t\t\t\theight: {type: 'number'},\n\t\t\t\t\tleft: {type: 'number'},\n\t\t\t\t\ttop: {type: 'number'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Dispatched when the component's DOM tree is fully ready.\n\t\t * This ensures that the modal is properly initialized and ready for user interaction.\n\t\t */\n\t\t'NOW_MODAL#DOM_READY': {},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content added to this slot appears inside the body of the modal. When\n\t\t * this slot is used, the `content` property is ignored.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n\tinitialState: {\n\t\ttriggerEl: null,\n\t\theaderLabelEl: null,\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: ({\n\t\t\thost,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\taction,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {id} = action.meta;\n\t\t\tconst {disableClose} = properties;\n\n\t\t\tif (properties.opened) {\n\t\t\t\taddModalToStack(id, dispatch, disableClose);\n\t\t\t\tcheckForScrollableContent(host);\n\t\t\t}\n\t\t\tconst headerLabelEl =\n\t\t\t\thost.nowRootNode.querySelector('.now-modal-heading');\n\t\t\tupdateState({headerLabelEl});\n\t\t},\n\t\t[COMPONENT_DOM_TREE_READY]: ({host, properties, action, dispatch}) => {\n\t\t\tconst {firstRenderOnConnect} = action.meta;\n\t\t\tif (!firstRenderOnConnect) return;\n\t\t\thandleFocusTrapIframe(host, properties);\n\t\t\tdispatch('NOW_MODAL#DOM_READY');\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({properties, action, dispatch, host}) => {\n\t\t\tconst {\n\t\t\t\tpayload: {name, value, previousValue},\n\t\t\t\tmeta: {id},\n\t\t\t} = action;\n\n\t\t\tconst {disableClose} = properties;\n\n\t\t\tif (name === 'opened') {\n\t\t\t\tif (value) {\n\t\t\t\t\taddModalToStack(id, dispatch, disableClose);\n\t\t\t\t\thandleFocusTrapIframe(host, properties);\n\t\t\t\t\tcheckForScrollableContent(host);\n\t\t\t\t} else {\n\t\t\t\t\thost?.shadowRoot?.querySelector('#now-modal-focus-trap')?.remove();\n\t\t\t\t\tlayerEvents.remove(id);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If the number of footer actions is reduced, restore focus to the close button (DEF0115652)\n\t\t\t// but only if the focus is gone (DEF0553793)\n\t\t\tif (\n\t\t\t\tname === 'footerActions' &&\n\t\t\t\t!host.nowRootNode\n\t\t\t\t\t.querySelector('.now-modal-overlay')\n\t\t\t\t\t.matches(':focus-within') &&\n\t\t\t\t((previousValue && !value) ||\n\t\t\t\t\t(value && previousValue && value.length < previousValue.length))\n\t\t\t) {\n\t\t\t\tfindTabbableNodes(host)[0]?.focus();\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({properties}) => {\n\t\t\tif (properties.opened) layerEvents.remove(properties.nowId);\n\t\t},\n\t\t['PRIVATE#RESIZABLE_END']: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}, dispatch, host}) => {\n\t\t\t\tcheckForScrollableContent(host);\n\t\t\t\tdispatch('NOW_MODAL#RESIZABLE_END', {...payload});\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t\toptions: {trap: true},\n\t\t},\n\t\t{behavior: modalBehavior, options: {limit: 'now-modal'}},\n\t\t{\n\t\t\tbehavior: resizableBehavior,\n\t\t\toptions: {\n\t\t\t\tresizeTarget: '.now-modal-dialog',\n\t\t\t\tcontainer: '.now-modal-overlay',\n\t\t\t\tgetResizableConfig: ({properties}) => {\n\t\t\t\t\treturn properties.resizableConfig;\n\t\t\t\t},\n\t\t\t\tdefaultConfig: {\n\t\t\t\t\tenableResizable: false,\n\t\t\t\t\tresizableMinWidth: 420,\n\t\t\t\t\tresizableMinHeight: 133,\n\t\t\t\t\tresizableMaxWidth: null,\n\t\t\t\t\tresizableMaxHeight: null,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{behavior: truncationBehavior},\n\t\t{behavior: tooltipBehavior},\n\t],\n\tstyles,\n\tview,\n});\n","import '@servicenow/now-modal';\n\nconst getScrollOffset = function() {\n\tif (window.pageXOffset !== undefined) return window.pageYOffset;\n\tconst isCSS1Compat = (document.compatMode || '') === 'CSS1Compat';\n\treturn isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n};\n\nconst freezeBody = function(offset = 0) {\n\tconst freezeStyle = {\n\t\toverflowY: 'hidden',\n\t\tposition: 'fixed',\n\t\ttop: `-${offset}px`,\n\t\tleft: '0px',\n\t\twidth: '100%'\n\t};\n\tObject.assign(document.body.style, freezeStyle);\n};\n\nconst unfreezeBody = function(offset = 0) {\n\tsetTimeout(() => {\n\t\tdocument.body.removeAttribute('style');\n\t\twindow.scrollTo(0, offset);\n\t}, 10);\n};\n\nconst handleEscape = e => {\n\tif (e.key === 'Escape') {\n\t\te.stopPropagation();\n\t}\n};\n\nexport default (properties, children) => {\n\tif (!properties.opened) {\n\t\tunfreezeBody(getScrollOffset());\n\t}\n\n\tfreezeBody(getScrollOffset());\n\n\treturn (\n\t\t<now-modal {...properties} on-keydown={handleEscape} manage-opened>\n\t\t\t{children}\n\t\t</now-modal>\n\t);\n};\n","import '@servicenow/now-loader';\nimport {t} from 'sn-translate';\nimport Modal from '../modal-wrapper';\n\nconst SN_RECORD_CONTENT_TREE_CONNECTED_MODAL_CLOSE_CLICKED_ACTION =\n\t'SN_RECORD_CONTENT_TREE_CONNECTED#MODAL_CLOSE_CLICKED_ACTION';\nconst SN_RECORD_CONTENT_TREE_CONNECTED_MODAL_ADD_CLICKED_ACTION =\n\t'SN_RECORD_CONTENT_TREE_CONNECTED#MODAL_ADD_CLICKED_ACTION';\n\nconst actions = [\n\t{\n\t\tlabel: t('Close'),\n\t\tvariant: 'primary',\n\t\ttooltipContent: t('Close'),\n\t\tbare: true,\n\t\tclickActionType: SN_RECORD_CONTENT_TREE_CONNECTED_MODAL_CLOSE_CLICKED_ACTION\n\t},\n\t{\n\t\tlabel: t('Add'),\n\t\tvariant: 'primary',\n\t\ttooltipContent: t('Add'),\n\t\tclickActionType: SN_RECORD_CONTENT_TREE_CONNECTED_MODAL_ADD_CLICKED_ACTION\n\t}\n];\n\nconst renderModalContent = props => {\n\tconst {\n\t\tfieldName,\n\t\treferenceTable,\n\t\ttableName,\n\t\ttreePickerConfig,\n\t\tcontainerClass,\n\t\tdependentField,\n\t\tdomainId,\n\t\tisGlideList,\n\t\tcomponentId,\n\t\tlabel,\n\t\trecordSysId,\n\t\tserializedChanges,\n\t\tencodedRecord,\n\t\tignoreReferenceQualifier,\n\t\tignoreDepAsRefQual,\n\t\treferenceKey,\n\t\tchars\n\t} = props;\n\tconst select = isGlideList ? 'multi' : 'single';\n\treturn (\n\t\t<div className={containerClass}>\n\t\t\t{treePickerConfig.isSupported ? (\n\t\t\t\t<sn-record-content-tree-connected\n\t\t\t\t\ttableName={tableName}\n\t\t\t\t\tfieldName={fieldName}\n\t\t\t\t\treferenceTable={referenceTable}\n\t\t\t\t\tdependentField={dependentField}\n\t\t\t\t\tdependentValue={treePickerConfig.targetValue}\n\t\t\t\t\ttreePickerConfig={treePickerConfig}\n\t\t\t\t\tdomainId={domainId}\n\t\t\t\t\tquery={treePickerConfig.queryString}\n\t\t\t\t\tselect={select}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<now-record-list-connected-reference\n\t\t\t\t\tcomponent-id={`${componentId}_modal_refList`}\n\t\t\t\t\tchars={chars || '**'}\n\t\t\t\t\tignore-ref-qual={ignoreReferenceQualifier}\n\t\t\t\t\tlist-title={label}\n\t\t\t\t\trecord-sys-id={recordSysId}\n\t\t\t\t\tfield={fieldName}\n\t\t\t\t\ttable={tableName}\n\t\t\t\t\tserializedChanges={serializedChanges}\n\t\t\t\t\tencodedRecord={encodedRecord}\n\t\t\t\t\tignoreDepAsRefQual={ignoreDepAsRefQual}\n\t\t\t\t\trefTableName={referenceTable}\n\t\t\t\t\treferenceKey={referenceKey}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default ({\n\tproperties: {\n\t\tfieldName,\n\t\ttableName,\n\t\trecordSysId,\n\t\tlabel,\n\t\tserializedChanges,\n\t\tencodedRecord,\n\t\tcomponentId,\n\t\treferenceTable,\n\t\tignoreDepAsRefQual = false,\n\t\tignoreReferenceQualifier = false,\n\t\tdependentField,\n\t\tfieldType,\n\t\treferenceKey,\n\t\tchars\n\t},\n\tactive,\n\tcomponentLoading,\n\tfetchingTreePicker,\n\ttreePickerConfig,\n\tdomainId\n}) => {\n\tconst {isSupported: isTreePicker} = treePickerConfig;\n\tconst isGlideList = fieldType === 'glide_list';\n\tconst displayFooter = isTreePicker && isGlideList;\n\tconst footerActions = displayFooter ? actions : undefined;\n\tconst isLoading = fetchingTreePicker || componentLoading;\n\n\tconst getContainerClass = prefix => {\n\t\tconst baseClass = `${prefix}-container`;\n\t\tif (displayFooter) return `${baseClass} with-footer`;\n\t\tif (isGlideList) return `${baseClass} multi`;\n\t\treturn baseClass;\n\t};\n\n\tconst props = {\n\t\tfieldName,\n\t\ttableName,\n\t\treferenceTable,\n\t\tdependentField,\n\t\tcomponentId,\n\t\tlabel,\n\t\trecordSysId,\n\t\tserializedChanges,\n\t\tencodedRecord,\n\t\tignoreDepAsRefQual,\n\t\tignoreReferenceQualifier,\n\t\treferenceKey,\n\t\tchars,\n\t\ttreePickerConfig,\n\t\tdomainId,\n\t\tisGlideList,\n\t\tcontainerClass: isTreePicker ? getContainerClass('tree') : 'list-container'\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\topened={active}\n\t\t\tsize=\"lg\"\n\t\t\theader-label={label}\n\t\t\tcomponent-id={`${componentId}_modal`}\n\t\t\tfooterActions={footerActions}>\n\t\t\t{isLoading ? (\n\t\t\t\t<div className={getContainerClass('loader')}>\n\t\t\t\t\t<now-loader />\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\trenderModalContent(props)\n\t\t\t)}\n\t\t</Modal>\n\t);\n};\n","import {createCustomElement} from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\n\nimport actionHandlers from './actions';\nimport style from './view.scss';\nimport view from './view';\n\nexport const SNDeclarativeReferenceSearchElement = 'sn-declarative-reference-search';\n\ncreateCustomElement(SNDeclarativeReferenceSearchElement, {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tinitialState: {\n\t\tactive: true,\n\t\tfetchingTreePicker: true,\n\t\tcomponentLoading: true,\n\t\ttreePickerConfig: {},\n\t\tselectedItems: {value: [], display_value_list: []}\n\t},\n\tproperties: {\n\t\tfieldName: '',\n\t\ttableName: '',\n\t\trecordSysId: '',\n\t\tlabel: '',\n\t\tserializedChanges: '',\n\t\tencodedRecord: '',\n\t\tcontext: '',\n\t\tchars: '',\n\t\tcomponentId: '',\n\t\treferenceTable: '',\n\t\tignoreReferenceQualifier: '',\n\t\tignoreDepAsRefQual: '',\n\t\tdictionary: {},\n\t\tdependentField: '',\n\t\tdependentValue: '',\n\t\treferenceQualifier: '',\n\t\treferenceKey: '',\n\t\tfieldType: ''\n\t},\n\tstyles: style,\n\tactionHandlers\n});\n","import {DA_WRAPPED_CLICKED, UXF_INTERNAL_EVENT_META} from '../../common/constants';\nimport isFunction from 'lodash/isFunction';\nconst BEHAVIOR_NAME = 'daWrappedClickedBehavior';\n\nconst actionHandlers = {\n\t[DA_WRAPPED_CLICKED]: ({action, dispatch}) => {\n\t\tconst {\n\t\t\tpayload: {\n\t\t\t\twrapped_action_name: actionName = '',\n\t\t\t\twrapped_payload: actionPayload = {},\n\t\t\t\toptions: {predicate, aliases = []} = {}\n\t\t\t} = {},\n\t\t\tmeta: {[UXF_INTERNAL_EVENT_META]: uxfMeta = {}} = {}\n\t\t} = action;\n\n\t\tif (actionName && (!isFunction(predicate) || predicate(action))) {\n\t\t\tdispatch(actionName, actionPayload, {\n\t\t\t\t[UXF_INTERNAL_EVENT_META]: {...uxfMeta, permitCorrelationIdMismatch: true}\n\t\t\t});\n\n\t\t\taliases.forEach(alias => {\n\t\t\t\tdispatch(alias, actionPayload, {\n\t\t\t\t\t[UXF_INTERNAL_EVENT_META]: {...uxfMeta, permitCorrelationIdMismatch: true}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n};\n\nexport const daWrappedClickedBehavior = {\n\tname: BEHAVIOR_NAME,\n\tactionHandlers\n};\n","import {isEmpty} from 'lodash';\n\nconst opers = {\n\tANYTHING: () => true,\n\tBETWEEN: evalBetween,\n\tISEMPTY: evalIsEmpty,\n\tEMPTYSTRING: evalEmptyString,\n\tENDSWITH: evalEndsWith,\n\t'=': evalEquals,\n\t'>': evalGreaterThan,\n\t'>=': evalGreaterThanOrEquals,\n\tIN: evalIn,\n\t'NOT IN': evalNotIn,\n\tLIKE: evalLike,\n\t'<': evalLessThan,\n\t'<=': evalLessThanOrEquals,\n\tISNOTEMPTY: evalIsNotEmpty,\n\t'!=': evalNotEquals,\n\t'NOT LIKE': evalNotLike,\n\tSAMEAS: evalSameAs,\n\tNSAMEAS: evalNotSameAs,\n\tSTARTSWITH: evalStartsWith,\n\tGT_FIELD: evalGreaterThanField,\n\tLT_FIELD: evalLessThanField,\n\tGT_OR_EQUALS_FIELD: evalGreaterThanOrEqualsField,\n\tLT_OR_EQUALS_FIELD: evalLessThanOrEqualsField\n};\n\n/**\n * Given an `action` and a `model`, the `evaluateConditions`\n * function will return `true` if the conditions on the action\n * evaluate to `true`, and `false` otherwise. Currently only\n * the operators for the `boolean`, `string`, and `integer` types\n * are supported.\n *\n * Queries have the structure:\n *\n * [ (A OR B) AND (B OR C) ]\n *\n * OR (newQuery)\n *\n * [ (D OR E) AND (F OR G) ]\n *\n * The terms are evaluated as follows:\n * * The terms are grouped according to the `newQuery` flag.\n * * The terms within each of these groups are grouped according to the `or` flag.\n * * The `some` - `every` - `some` logic evaluates the OR (newQuery) - AND - OR boolean structure of the query\n *\n * @param {object} action\n * @param {object} model\n *\n * */\nexport const evaluateConditions = (modelConditions, model) => {\n\tif (!modelConditions || modelConditions.length === 0) return true;\n\n\treturn modelConditions\n\t\t.reduce(groupByNewQuery, [])\n\t\t.map(term => term.reduce(groupByAnd, []))\n\t\t.some(terms =>\n\t\t\tterms.every(terms =>\n\t\t\t\tterms.some(({field, operator, value}) => {\n\t\t\t\t\tif (field == null && value == null) return true;\n\t\t\t\t\treturn opers[operator](field, value, model);\n\t\t\t\t})\n\t\t\t)\n\t\t);\n};\n\nexport const evalScriptedClientConditions = (scriptedClientCond, model = {}) => {\n\tif (isEmpty(scriptedClientCond) || isEmpty(model)) return true;\n\n\tconst scopeVariableNames = Object.keys(model) || [];\n\tconst scopeVariableValues = scopeVariableNames.map(key => model[key]);\n\tlet result = true;\n\n\ttry {\n\t\tconst scopingFunction = new Function(scopeVariableNames, `return (${scriptedClientCond});`);\n\t\tresult = scopingFunction.apply(scopingFunction, scopeVariableValues);\n\t} catch (e) {\n\t\tconsole.error('Declarative Action scripted client condition expression evaluation failed');\n\t\tconsole.error(e);\n\t}\n\treturn result;\n};\n\n/**\n * The `groupBy*` functions operate over a list of query terms\n * and transform it into a list of arrays, with each array being\n * a group of terms separated by the operator specified.\n *\n * @param {array} conditions\n * @param {object} model\n *\n * @example\n *\n * const conditions =\n * [\n *  { newQuery: false, or: false },\n *  { newQuery: false, or: true  },\n *  { newQuery: true,  or: false ),\n *  { newQuery: false, or: false }\n * ];\n *\n * console.log(conditions.reduce(groupByNewQuery, []));\n * output:\n * [\n *  [\n *    { newQuery: false, or: false },\n *    { newQuery: false, or: true  }\n *  ],\n *  [\n *    { newQuery: true,  or: false },\n *    { newQuery: false, or: false }\n *  ]\n * ]\n * */\nfunction groupByNewQuery(conditions, term, i) {\n\tconst {newQuery} = term;\n\tif (newQuery || i === 0) conditions.push([term]);\n\telse conditions[conditions.length - 1].push(term);\n\treturn conditions;\n}\n\nfunction groupByAnd(conditions, term, i) {\n\tconst {or} = term;\n\tif (!or || i === 0) conditions.push([term]);\n\telse conditions[conditions.length - 1].push(term);\n\treturn conditions;\n}\n\n/* General operators */\nfunction evalEquals(field, value, model) {\n\treturn String(model[field]) === String(value);\n}\n\nfunction evalNotEquals(field, value, model) {\n\treturn !evalEquals(field, value, model);\n}\n\nfunction evalSameAs(field, value, model) {\n\treturn model[field] === model[value];\n}\n\nfunction evalNotSameAs(field, value, model) {\n\treturn !evalSameAs(field, value, model);\n}\n\nfunction evalIsEmpty(field, value, model) {\n\treturn evalEmptyString(field, value, model);\n}\n\nfunction evalIsNotEmpty(field, value, model) {\n\treturn !evalIsEmpty(field, value, model);\n}\n\n/* String operators */\nfunction evalStartsWith(field, value, model) {\n\treturn String(model[field]).startsWith(String(value));\n}\n\nfunction evalEndsWith(field, value, model) {\n\treturn String(model[field]).endsWith(String(value));\n}\n\nfunction evalLike(field, value, model) {\n\treturn String(model[field]).includes(String(value));\n}\n\nfunction evalNotLike(field, value, model) {\n\treturn !evalLike(field, value, model);\n}\n\nfunction evalEmptyString(field, value, model) {\n\treturn model[field] === '' || model[field] === null;\n}\n\nfunction evalIn(field, value, model) {\n\treturn String(value)\n\t\t.split(',')\n\t\t.some(val => evalEquals(field, val, model));\n}\n\nfunction evalNotIn(field, value, model) {\n\treturn !evalIn(field, value, model);\n}\n\n/* Integer/String operators */\nfunction evalGreaterThan(field, value, model) {\n\treturn model[field] > value;\n}\n\nfunction evalGreaterThanOrEquals(field, value, model) {\n\treturn model[field] >= value;\n}\n\nfunction evalLessThan(field, value, model) {\n\treturn model[field] < value;\n}\n\nfunction evalLessThanOrEquals(field, value, model) {\n\treturn model[field] <= value;\n}\n\nfunction evalBetween(field, value, model) {\n\tconst vals = value.split('@');\n\treturn (\n\t\tevalGreaterThanOrEquals(field, vals[0], model) &&\n\t\tevalLessThanOrEquals(field, vals[1], model)\n\t);\n}\n\n/* Integer operators */\nfunction evalGreaterThanField(field, value, model) {\n\treturn model[field] > model[value];\n}\n\nfunction evalLessThanField(field, value, model) {\n\treturn model[field] < model[value];\n}\n\nfunction evalGreaterThanOrEqualsField(field, value, model) {\n\treturn model[field] >= model[value];\n}\n\nfunction evalLessThanOrEqualsField(field, value, model) {\n\treturn model[field] <= model[value];\n}\n","import {getInteractionId, mark} from '@servicenow/ui-metrics';\n\nexport default function track(coeffects, eventName, metadata = {}) {\n\tconst {\n\t\thost,\n\t\taction: {meta = {}},\n\t\tproperties: {nowId = ''}\n\t} = coeffects;\n\tconst interactionId = getInteractionId(meta) || nowId;\n\tmark(host, interactionId, eventName, metadata, 'performance');\n}\n","import {\n\tcurry,\n\tforEach,\n\tget,\n\tisArray,\n\tisEmpty,\n\tisFunction,\n\tisObject,\n\tisString,\n\tmap,\n\tmapValues,\n\treplace,\n\tset\n} from 'lodash';\nimport {evalScriptedClientConditions, evaluateConditions} from './conditionEvaluator';\nimport track from '../utils/uiMetricsUtils';\n\n/**\n * For the interpolation regex, we have logic to check for \\u200B\n * The platform sanitizes {{}} with a \\u200B character to prevent angular code from\n * executing on platform form. Ideally this unicode should only be applied\n * for presentational purposes and the value should remain unchanged in the db\n * but that is not the case.\n */\n\nconst interpolationRegex = /{\\u200B?{([\\s\\S]+?)}}/g;\nconst arrayIndexRegex = /@(\\d)@?/g;\nconst ZERO_COUNT_REGEX = /\\(0\\)/;\n\nconst evaluate = model => {\n\tconst modelEvaluator = curry(substitute)(model);\n\n\treturn string => {\n\t\tif (!isString(string) || !isObject(model)) return string;\n\n\t\t// check if string matches interpolation pattern\n\t\tconst parsedString = interpolationRegex.exec(string);\n\t\tconst matchedString = parsedString ? parsedString[0] : null;\n\t\tconst modelField = parsedString ? parsedString[1] : null;\n\n\t\t// reset state of regex for next string\n\t\tinterpolationRegex.lastIndex = 0;\n\n\t\t// if whole string is matched to the regex, return actual value\n\t\t// e.g \"{{displayValueList}}\" => [ \"Abel Tuter\", \"Beth Anglin\" ]\n\t\tif (parsedString && matchedString.length === string.length) {\n\t\t\treturn modelEvaluator(string, modelField, false);\n\t\t}\n\n\t\t// else, return string interpolated value\n\t\t// e.g \"Edit ({{count}})\" => \"Edit (2)\"\n\t\treturn replace(string, interpolationRegex, modelEvaluator);\n\t};\n};\n\nfunction substitute(model, str, field, isInterpolation = true) {\n\tconst key = field.trim();\n\tconst replacement = get(model, key);\n\n\tif (isInterpolation && isObject(replacement) && !isArray(replacement)) return key;\n\tif (replacement !== undefined) return replacement;\n\n\tconst keys = key.split('.');\n\t//if the key is not in model, return original string, otherwise return empty string.\n\treturn keys[0] in model ? '' : str;\n}\n\nconst recursiveEvaluation = (value, evaluator) => {\n\tif (!isFunction(evaluator)) return null;\n\tif (Array.isArray(value)) return map(value, item => recursiveEvaluation(item, evaluator));\n\tif (isObject(value))\n\t\treturn mapValues(value, objectValue => recursiveEvaluation(objectValue, evaluator));\n\n\treturn evaluator(value);\n};\n\n/**\n * For payload mapping we construct a path for nested objects using\n * the `@` character to separate fields\n *\n * Ex: `{ a: { b: { c: 1 }} }` => The path to `c` is `a@b@c`\n * Ex: `{a: [ { b: { c: 1 } }  ] }` => The path to `c` is `a@0@b@c`\n *\n * These paths must be corrected\n * `a@b@c` => `a.b.c`\n * `a@0@b@c` => `a[0].b.c`\n */\nconst resolvePayloadPath = path => {\n\tif (!path) return '';\n\n\tconst arrayIndexReplaced = replace(path, arrayIndexRegex, (_, index) => {\n\t\treturn `[${index}]`;\n\t});\n\n\treturn arrayIndexReplaced.replace(/@/g, '.');\n};\n\nconst evaluateAction = (action, evaluator) => {\n\tif (!isObject(action) || !isFunction(evaluator)) return null;\n\n\t// These are the only fields that support evaluation\n\tconst {\n\t\tlabel,\n\t\ttooltip,\n\t\tactionAttributes,\n\t\tactionPayload,\n\t\tmodelConditions,\n\t\tpayloadMap,\n\t\tscriptedClientCondition,\n\t\tariaLabel = ''\n\t} = action;\n\n\tconst evaluatedVariables = map(payloadMap, variable =>\n\t\trecursiveEvaluation(variable, evaluator)\n\t);\n\n\tconst constructPayload = (payloadTemplate, fields) => {\n\t\tconst payload = {\n\t\t\t...payloadTemplate\n\t\t};\n\n\t\tforEach(fields, ({name, value}) => {\n\t\t\tconst path = resolvePayloadPath(name);\n\t\t\tset(payload, path, value);\n\t\t});\n\n\t\treturn payload;\n\t};\n\n\tconst mergedPayload = constructPayload(actionPayload, evaluatedVariables);\n\n\treturn {\n\t\t...action,\n\t\tlabel: evaluator(label),\n\t\ttooltip: evaluator(tooltip),\n\t\tariaLabel: evaluator(ariaLabel),\n\t\tactionAttributes: recursiveEvaluation(actionAttributes, evaluator),\n\t\tactionPayload: recursiveEvaluation(mergedPayload, evaluator),\n\t\tmodelConditions: map(modelConditions, condition =>\n\t\t\trecursiveEvaluation(condition, evaluator)\n\t\t),\n\t\tscriptedClientCondition: evaluator(scriptedClientCondition)\n\t};\n};\n\n/**\n * Possible performance improvement here is to store the parsed\n * JSON string to stop future calls to JSON.parse()\n */\nconst jsonParse = jsonString => {\n\tif (isObject(jsonString)) return jsonString;\n\tif (!isString(jsonString)) return {};\n\n\ttry {\n\t\treturn JSON.parse(jsonString || '{}');\n\t} catch (e) {\n\t\treturn {\n\t\t\te: `Error parsing: ${jsonString}`\n\t\t};\n\t}\n};\n\nconst parseStringProperties = action => {\n\tconst unparsedPayload = get(action, 'actionPayload', {});\n\tconst unparsedAttributes = get(action, 'actionAttributes', {});\n\n\tconst parsedPayload = jsonParse(unparsedPayload);\n\tconst parsedAttributes = jsonParse(unparsedAttributes);\n\n\treturn {\n\t\t...action,\n\t\tactionPayload: parsedPayload,\n\t\tactionAttributes: parsedAttributes\n\t};\n};\n\nconst formatZeroCountString = str => {\n\tconst hasMatch = ZERO_COUNT_REGEX.test(str);\n\tif (hasMatch) {\n\t\treturn str.replace(ZERO_COUNT_REGEX, '').trim();\n\t} else {\n\t\treturn str;\n\t}\n};\n\nconst transformActions = (actions, model, metricsData) => {\n\tconst evaluator = evaluate(model);\n\treturn actions\n\t\t.reduce((accumulator, action) => {\n\t\t\tconst {label, tooltip, recordSelectionRequired} = action;\n\t\t\tconst newAction = {\n\t\t\t\t...action,\n\t\t\t\ttooltip: tooltip || label\n\t\t\t};\n\n\t\t\tconst parsedAction = parseStringProperties(newAction);\n\t\t\tconst evaluatedAction = evaluateAction(parsedAction, evaluator);\n\n\t\t\tif (recordSelectionRequired && model.count === 0) {\n\t\t\t\t// Handle case of Edit (0) to Edit\n\t\t\t\tevaluatedAction.label = formatZeroCountString(evaluatedAction.label);\n\t\t\t\tevaluatedAction.tooltip = formatZeroCountString(evaluatedAction.tooltip);\n\t\t\t\tevaluatedAction.ariaLabel = formatZeroCountString(evaluatedAction.ariaLabel);\n\t\t\t}\n\n\t\t\tif (metricsData) {\n\t\t\t\tconst {coeffects = {}, eventName = 'transformActions', meta = {}} = metricsData;\n\t\t\t\tmeta.evaluatedAction = evaluatedAction;\n\t\t\t\tmeta.parsedAction = parsedAction;\n\t\t\t\ttrack(coeffects, eventName, meta);\n\t\t\t}\n\t\t\tconst passed =\n\t\t\t\tevaluateConditions(evaluatedAction.modelConditions, model) &&\n\t\t\t\tevalScriptedClientConditions(evaluatedAction.scriptedClientCondition, model);\n\n\t\t\tif (passed) accumulator.push(evaluatedAction);\n\n\t\t\treturn accumulator;\n\t\t}, [])\n\t\t.sort((action1, action2) => action1.order - action2.order);\n};\n\nconst evaluateAndKeep = (actions, model) => {\n\tconst evaluator = evaluate(model);\n\treturn actions\n\t\t.reduce((accumulator, action) => {\n\t\t\taction.tooltip = action.tooltip || action.label;\n\n\t\t\tconst parsedAction = parseStringProperties(action);\n\t\t\tconst evaluatedAction = evaluateAction(parsedAction, evaluator);\n\n\t\t\taccumulator.push(evaluatedAction);\n\n\t\t\treturn accumulator;\n\t\t}, [])\n\t\t.sort((action1, action2) => action1.order - action2.order);\n};\n\n/**\n * Given a list of `actions`, `transformer` will return\n * a filtered list of `actions` with `{{}}` syntax evaluated\n * and client conditions applied\n *\n * @param {array} actions\n * @param {object} model\n *\n * @example\n *\n * const model = { value: 'World' };\n * const actions = [\n * {\n * \tname: 'action1',\n * \tlabel: 'Hello {{ value }}!'\n * },\n * {\n * \tname: 'action2',\n * \tlabel: 'Foo {{ value }}',\n * \tconditions: {\n * \t\tvalue: 'bar'\n * \t}\n * }\n * ];\n *\n * const evaluateActions = transformer(action2, model);\n * console.log(evaluatedActions); // => [{ name: 'action1 , label: 'Hello World'}]\n */\nexport const transformer = (actions, model, metricsData) => {\n\tif (isEmpty(actions)) return actions;\n\n\treturn transformActions(actions, model, metricsData);\n};\n\nexport const evaluateOnly = (actions, model) => {\n\tif (isEmpty(actions)) return actions;\n\n\treturn evaluateAndKeep(actions, model);\n};\n","import {forOwn, get, isArray, isEmpty, isObject, startCase} from 'lodash';\nimport {t} from 'sn-translate';\n\nexport const ACTION_CONFIG = 'actionConfig';\nexport const ACTION_CONFIG_ID = 'actionConfigId';\nexport const ASSIGNMENT_ID = 'assignmentId';\nexport const ACTION_DISPATCH = 'actionDispatch';\nexport const ARRAY = 'array';\nexport const BOOLEAN = 'boolean';\nexport const CONTEXT_VARS = 'contextVars';\nexport const UXF_CLIENT_ACTION = 'uxf_client_action';\nexport const ERROR_PREFIX = 'DA contractGenerator error: ';\nexport const ERROR_ACTION_PAYLOAD =\n\t'actions have not been passed through transformer to evaluate `{{}}` syntax.';\nexport const ERROR_TYPE_INVALID = 'modelType is invalid or not supported.';\nexport const EVAM = 'EVAM';\nexport const BOARD = 'BOARD';\nexport const EVENT_NAME = 'eventName';\nexport const EVENT = 'event';\nexport const FIELD = 'FIELD';\nexport const FIELD_TYPE = 'fieldType';\nexport const FORM = 'FORM';\nexport const ID = 'id';\nexport const LABEL = 'label';\nexport const LIST = 'LIST';\nexport const MODEL = 'model';\nexport const META_DATA = 'typeMetadata';\nexport const NAME = 'name';\nexport const NUMBER = 'number';\nexport const OBJECT = 'object';\nexport const PAYLOAD = 'payload';\nexport const PROPERTIES = 'properties';\nexport const RELATED_LIST = 'RELATED_LIST';\nexport const SCHEMA = 'schema';\nexport const STRING = 'string';\nexport const TYPE = 'type';\nexport const VALUE = 'value';\nexport const CATALOG_WIZARD = 'CATALOG_WIZARD';\n\nexport const SUPPORTED_MODELS_TYPES = [\n\tBOARD,\n\tEVAM,\n\tFIELD,\n\tFORM,\n\tLIST,\n\tRELATED_LIST,\n\tCATALOG_WIZARD\n];\nexport const MODELS = {\n\t[BOARD]: {\n\t\t[ID]: '45757de50fa52010ad4437a98b767e33',\n\t\t[LABEL]: t('Board Model')\n\t},\n\t[EVAM]: {\n\t\t[ID]: '035d270073151010c342d5fdbdf6a715',\n\t\t[LABEL]: t('EVAM Model')\n\t},\n\t[FIELD]: {\n\t\t[ID]: '15920e6d534723003eddddeeff7b1244',\n\t\t[LABEL]: t('Field Model')\n\t},\n\t[FORM]: {\n\t\t[ID]: '360935e9534723003eddddeeff7b127d',\n\t\t[LABEL]: t('Form Model')\n\t},\n\t[LIST]: {\n\t\t[ID]: 'c3547169534723003eddddeeff7b126c',\n\t\t[LABEL]: t('List Model')\n\t},\n\t[RELATED_LIST]: {\n\t\t[ID]: 'd91731a9534723003eddddeeff7b121c',\n\t\t[LABEL]: t('Related List Model')\n\t},\n\t[CATALOG_WIZARD]: {\n\t\t[ID]: 'e48b12c02d559110f8778479e97d46f0',\n\t\t[LABEL]: t('Catalog Wizard Model')\n\t}\n};\n\nconst getTypeFromValue = value => (isArray(value) ? ARRAY : typeof value);\n\nconst evaluateRequired = (actions = [], model = {}) =>\n\tisEmpty(actions) || isEmpty(actions[0]) || isEmpty(model);\n\nconst evaluateModelType = model =>\n\tisEmpty(model.modelType) || SUPPORTED_MODELS_TYPES.indexOf(model.modelType) === -1\n\t\t? ERROR_TYPE_INVALID\n\t\t: null;\n\nconst getNameAndLabel = key => ({[NAME]: key, [LABEL]: startCase(key)});\n\nconst getEventStructure = (value, key, isObject = false) => ({\n\t...getNameAndLabel(key),\n\t[FIELD_TYPE]: isObject ? 'json' : getTypeFromValue(value),\n\t[META_DATA]: {\n\t\t[SCHEMA]: {\n\t\t\t[TYPE]: getTypeFromValue(value),\n\t\t\t...(isObject && {[PROPERTIES]: {}})\n\t\t}\n\t}\n});\n\nconst getPropMetadata = (value, key) => ({\n\t...getNameAndLabel(key),\n\t[VALUE]: value\n});\n\nconst buildObject = (value, key, isEventProps) => {\n\tif (isEventProps && isObject(value)) {\n\t\tconst event = getEventStructure(value, key, true);\n\t\tconst {\n\t\t\ttypeMetadata: {\n\t\t\t\tschema: {properties}\n\t\t\t}\n\t\t} = event;\n\n\t\tforOwn(value, (v, k) => {\n\t\t\tproperties[k] = buildObject(v, k, isEventProps);\n\t\t});\n\t\treturn event;\n\t}\n\treturn isEventProps ? getEventStructure(value, key) : getPropMetadata(value, key);\n};\n\n/**\n *\n * @return {array}\n * @example\n *\n *  [\n *    {\n *      \"name\": \"table\",\n *      \"label\": \"Table\",\n *      \"value\": \"incidnet\"\n *    }\n *  ]\n */\nexport const buildList = (obj, isEventProps = false) => {\n\tconst arr = [];\n\tif (isEmpty(obj)) return arr;\n\n\tforOwn(obj, (value, key) => {\n\t\tarr.push(buildObject(value, key, isEventProps));\n\t});\n\treturn arr;\n};\n\n/**\n *\n * @throws {string}\n * @example 'DA contractGenerator error: actions have not\n * been passed through transformer to evaluate `{{}}` syntax.'\n *\n * @return {array}\n * @example\n *\n *  [\n *    {\n *      \"id\": \"789\",\n *      \"label\": \"Baz Clicked\",\n *      \"eventName\": \"BAZZZZZ_CLICKED\",\n *      \"properties\": [\n *        {\n *          \"name\": \"message\",\n *          \"label\": \"Message\",\n *          \"fieldType\": \"json\",\n *          \"typeMetadata\": {\n *            \"schema\": {}\n *          }\n *        }\n *      ]\n *    }\n *  ]\n *\n */\nexport const buildEventDefinitions = actions => {\n\tconst arr = [];\n\tfor (var action of actions) {\n\t\tconst {actionType, actionPayload} = action;\n\n\t\tif (actionType !== UXF_CLIENT_ACTION) continue;\n\t\tif (getTypeFromValue(actionPayload) === STRING)\n\t\t\tthrow new Error(ERROR_PREFIX + ERROR_ACTION_PAYLOAD);\n\n\t\tarr.push({\n\t\t\t[ID]: get(action, ASSIGNMENT_ID, ''),\n\t\t\t[EVENT_NAME]: get(action, ACTION_DISPATCH, ''),\n\t\t\t[LABEL]: get(action, LABEL, ''),\n\t\t\t[PROPERTIES]: buildList(actionPayload, true)\n\t\t});\n\t}\n\treturn arr;\n};\n\n/**\n *\n * @param {object} model\n *\n * @return {object}\n * @example\n *\n *  {\n *    \"model\": {}\n *    \"actionConfig\": {},\n *    \"contextVars\": []\n *  }\n *\n */\nexport const buildApplicability = model => {\n\treturn {\n\t\t[MODEL]: MODELS[model.modelType],\n\t\t[ACTION_CONFIG]: {[ID]: get(model, ACTION_CONFIG_ID, '')},\n\t\t[CONTEXT_VARS]: buildList(model)\n\t};\n};\n\n/**\n *\n * This generator is necessary for use\n * in providing UIB with the available client actions supported\n * by an action container component.\n *\n * Given a list of transformed `actions`, `contractGenerator`\n * will return an object containing a list of dispatched\n * client event defintions.\n *\n * @param {array} actions\n * @param {object} model (i.e. Fields that exist in container component.)\n *\n * @example\n *\n *  {\n *    \"actionConfigId\": \"\",\n *    \"columns\": \"\",\n *    \"modelType\": \"LIST\",\n *    \"parentRecordSysId\": \"\",\n *    \"parentTable\": \"\",\n *    \"relatedListName\": \"\",\n *    \"table\": \"\",\n *  }\n *\n *\n * @throws {string}\n * @example 'DA contractGenerator error: modelType has not\n * been defined.'\n *\n *\n * @return {object}\n * @example\n *\n *  {\n *    \"daApplicability\": {},\n *    \"dispatchedEventDefs\": []\n *  }\n *\n */\nexport const contractGenerator = (actions, model) => {\n\tif (evaluateRequired(actions, model)) return null;\n\n\tif (!isEmpty(evaluateModelType(model))) throw new Error(ERROR_PREFIX + ERROR_TYPE_INVALID);\n\n\treturn {\n\t\tdaApplicability: buildApplicability(model),\n\t\tdispatchedEventDefs: buildEventDefinitions(actions)\n\t};\n};\n","import {\n\tDECLARATIVE_ACTION_CANCEL_ACTION,\n\tDECLARATIVE_ACTION_CLOSE_MODAL,\n\tDECLARATIVE_ACTION_EXECUTE_ACTION\n} from '../actions';\nimport {get} from 'lodash';\n\nexport default {\n\t'NOW_MODAL#FOOTER_ACTION_CLICKED': ({state, dispatch, action}) => {\n\t\tconst scriptTitle = get(state, 'properties.action.label', '');\n\t\tconst buttonTitle = get(action, 'payload.action.label', 'NOT_A_MATCH');\n\t\tif (scriptTitle === buttonTitle) dispatch(DECLARATIVE_ACTION_EXECUTE_ACTION);\n\t\telse dispatch(DECLARATIVE_ACTION_CANCEL_ACTION);\n\n\t\tdispatch(DECLARATIVE_ACTION_CLOSE_MODAL);\n\t},\n\t'NOW_MODAL#OPENED_SET': ({dispatch}) => {\n\t\tdispatch(DECLARATIVE_ACTION_CANCEL_ACTION);\n\t\tdispatch(DECLARATIVE_ACTION_CLOSE_MODAL);\n\t}\n};\n","import {t} from 'sn-translate';\nimport Modal from '../../modal-wrapper';\n\nconst createButtons = action => [\n\t{\n\t\tvariant: 'primary-negative',\n\t\tlabel: action.label || t('Confirm')\n\t},\n\t{\n\t\tvariant: 'secondary',\n\t\tlabel: t('Cancel')\n\t}\n];\n\nexport default ({properties: {show, action, componentId}}) => {\n\tif (!action) return null;\n\n\tconst buttons = createButtons(action);\n\tconst message = action.confirmationMessage ? action.confirmationMessage : t('Execute action');\n\n\treturn (\n\t\t<Modal\n\t\t\tcomponent-id={`${componentId}_confirmation_modal`}\n\t\t\topened={show}\n\t\t\theader-label={t('Confirmation')}\n\t\t\tfooter-actions={buttons}>\n\t\t\t<p>{message}</p>\n\t\t</Modal>\n\t);\n};\n","import {createCustomElement} from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\n\nimport actionHandlers from './actions';\nimport view from './view';\n\nexport const SNDeclarativeConfirmationModal = 'sn-declarative-confirmation-modal';\n\ncreateCustomElement(SNDeclarativeConfirmationModal, {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tproperties: {\n\t\taction: {},\n\t\tshow: false,\n\t\tcomponentId: ''\n\t},\n\tactionHandlers\n});\n","import {ACTION_COMPONENT} from './actions';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\n\nimport './confirmation-modal';\n\nexport default ({model, action, key, displayConfirmation}) => {\n\tconst {actionType, actionComponent, actionAttributes} = action || {};\n\n\tconst isUIComponent = actionType === ACTION_COMPONENT;\n\tconst ActionComponent = actionComponent;\n\tconst props = {\n\t\t...model,\n\t\t...actionAttributes\n\t};\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<slot />\n\t\t\t{!displayConfirmation && isUIComponent && ActionComponent ? (\n\t\t\t\t<ActionComponent hoist key={key} {...props} model={model} />\n\t\t\t) : null}\n\t\t\t{displayConfirmation ? (\n\t\t\t\t<sn-declarative-confirmation-modal\n\t\t\t\t\taction={action}\n\t\t\t\t\tshow={displayConfirmation}\n\t\t\t\t\thoist\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</Fragment>\n\t);\n};\n","import {createCustomElement} from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\n\nimport actionHandlers from './actions';\nimport view from './view';\n\nexport const SNDeclarativeMediator = 'sn-declarative-mediator';\n\n/**\n * Helper component which wraps other components which rely on declarative actions\n * The component handles everything related to executing and evaluating conditions of the declarative action\n * dispatched by the slotted component and sending the results back down to the child through props\n *\n * ```jsx\n * <sn-declarative-mediator>\n *\t\t<other-component-which-renders-declarative-action\n *\t\t\t{...properties}\n *\t\t/>\n * </sn-declarative-mediator>\n * ```\n *\n * @seismicElement sn-declarative-mediator\n * @summary Helper component which wraps other components which rely on declarative actions\n * and handles execution of the action for the wrapped component\n */\ncreateCustomElement(SNDeclarativeMediator, {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tinitialState: {\n\t\taction: {},\n\t\tmodel: {},\n\t\tkey: null,\n\t\tdisplayConfirmation: false,\n\t\tdynamicConditionResults: {}\n\t},\n\tproperties: {\n\t\t/**\n\t\t * Whether or not it should dispatch a wrapped action with an actual action in a payload for DISPATCH_ACTION and UXF_CLIENT_ACTION type\n\t\t * @type {boolean}\n\t\t */\n\t\tshouldWrapAction: {\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean'\n\t\t\t},\n\t\t\tdefault: false\n\t\t},\n\t\t/**\n\t\t * Whether or not it should work on Dynamic Evaluation for DAs\n\t\t */\n\t\tshouldEvaluateDynamicConditions: {\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean'\n\t\t\t},\n\t\t\tdefault: false\n\t\t},\n\t\t/**\n\t\t * Whether or not it should append actionEvent to payload to describe the event triggerring the action\n\t\t * The value of actionEvent comes from either\n\t\t *  1. action.meta.actionEvent\n\t\t *  2. action.meta.event (default)\n\t\t *\n\t\t * actionEvent schema:\n\t\t * \tactionEvent: {\n\t\t * \t\tschema: {\n\t\t * \t\t\ttype: 'object',\n\t\t * \t\t\tproperties: {\n\t\t * \t\t\t\ttarget: {\n\t\t * \t\t\t\t\ttype: 'object',\n\t\t * \t\t\t\t\tdescription: 'a reference to action event's target element'\n\t\t * \t\t\t\t},\n\t\t * \t\t\t\ttype: {\n\t\t * \t\t\t\t\ttype: 'string',\n\t\t * \t\t\t\t\tdescription: 'event type'\n\t\t * \t\t\t\t},\n\t\t * \t\t\t\tmetaKey: {\n\t\t * \t\t\t\t\ttype: 'boolean',\n\t\t * \t\t\t\t\tdescription: 'indicates whether the meta key was pressed or not when the event occurs'\n\t\t * \t\t\t\t}\n\t\t * \t\t\t}\n\t\t * \t\t}\n\t\t * \t}\n\t\t * @type {boolean}\n\t\t */\n\t\tshouldAppendActionEvent: {\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean'\n\t\t\t},\n\t\t\tdefault: false\n\t\t},\n\t\t/**\n\t\t * Prop for Dynamically Evaluated DA's\n\t\t * All the Declarative Action SysIds needed to be evaluated\n\t\t * @type {Array.<Object>}\n\t\t */\n\t\tdeclarativeActions: {\n\t\t\tschema: {\n\t\t\t\ttype: 'array'\n\t\t\t},\n\t\t\tdefault: [],\n\t\t\tdeepCompare: true\n\t\t},\n\t\t/**\n\t\t * List info needed when used in Lists/Related Lists\n\t\t * Prop for Dynamically Evaluated DA's\n\t\t * @type {{\n\t\t * model: string,\n\t\t * recordSysIds: Array.<string>,\n\t\t * conditions: string,\n\t\t * selectedRecords: Array.<string>,\n\t\t * editedRecords: Array.<string>,\n\t\t * listRefresh: Object,\n\t\t * daRelayPropName: string,\n\t\t * table: string,\n\t\t * parentTable: string,\n\t\t * parentRecordSysId: string\n\t\t * }}\n\t\t */\n\t\tmodelData: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\t/**\n\t\t\t\t\t * Prop for Dynamically Evaluated DA's [Lists].\n\t\t\t\t\t * Model type list / form\n\t\t\t\t\t * For Future use\n\t\t\t\t\t * @type {string}\n\t\t\t\t\t */\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'string'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: ''\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * Prop for Dynamically Evaluated DA's [Lists]\n\t\t\t\t\t * All the Record SysIds needed to be evaluated\n\t\t\t\t\t * @type {Array.<string>}\n\t\t\t\t\t */\n\t\t\t\t\trecordSysIds: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'array'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: []\n\t\t\t\t\t},\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Filter conditions for the current list.\n\t\t\t\t\t * Used for \"Select All\" use case\n\t\t\t\t\t * @type {string}\n\t\t\t\t\t */\n\t\t\t\t\tconditions: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'string'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: ''\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * Prop for Dynamically Evaluated DA's [Lists]\n\t\t\t\t\t * All the selected/checked Record SysIds needed to be evaluated\n\t\t\t\t\t * @type {Array.<string>}\n\t\t\t\t\t */\n\t\t\t\t\tselectedRecords: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'array'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: []\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * Prop for Dynamically Evaluated DA's [Lists]\n\t\t\t\t\t * All the inline Edited Record SysIds needed to be evaluated\n\t\t\t\t\t * @type {Array.<string>}\n\t\t\t\t\t */\n\t\t\t\t\teditedRecords: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'array'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: []\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * Prop for Dynamically Evaluated DA's [Lists]\n\t\t\t\t\t * Flag for inline Edited Records to be evaluated - Timestamp\n\t\t\t\t\t * @type {string}\n\t\t\t\t\t */\n\t\t\t\t\tcellUpdatedOn: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'string'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: ''\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * Prop for Dynamically Evaluated DA's [Lists].\n\t\t\t\t\t * Last time the record list was refreshed\n\t\t\t\t\t * @type {{}}\n\t\t\t\t\t */\n\t\t\t\t\tlistRefresh: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'object'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: {}\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * Child component property name to which the dynamically evaluated Declarative Actions will be passed down.\n\t\t\t\t\t * ex. Used for Enable/Disable DA's based on Record Selection on Lists\n\t\t\t\t\t * @type {string}\n\t\t\t\t\t */\n\t\t\t\t\tdaRelayPropName: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'string'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: ''\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * Prop for Dynamically Evaluated DA's\n\t\t\t\t\t * Table Name for the Dynamic evaluation\n\t\t\t\t\t * @type {string}\n\t\t\t\t\t */\n\t\t\t\t\ttable: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'string'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: ''\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * Prop for Dynamically Evaluated DA's\n\t\t\t\t\t * Parent Table Name for the Dynamic evaluation\n\t\t\t\t\t * @type {string}\n\t\t\t\t\t */\n\t\t\t\t\tparentTable: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'string'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: ''\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * Prop for Dynamically Evaluated DA's\n\t\t\t\t\t * Parent Record SysId for the Dynamic evaluation\n\t\t\t\t\t * @type {string}\n\t\t\t\t\t */\n\t\t\t\t\tparentRecordSysId: {\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\ttype: 'string'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdefault: {},\n\t\t\tdeepCompare: true\n\t\t}\n\t},\n\tactionHandlers,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched once the declarative action execution has completed indicating success or failure\n\t\t * @type {AddNotificationsPayload[]}\n\t\t */\n\t\tADD_NOTIFICATIONS: {},\n\t\t/**\n\t\t * Dispatched on successful action execution\n\t\t * @type {object}\n\t\t */\n\t\tREFRESH_REQUESTED: {}\n\t}\n});\n","import {createPreSourceBehavior} from 'sn-uxpage-presource';\nimport {get} from 'lodash';\n\nconst OPEN_FRAME = 'sn-component-openframe';\nconst openFrameDataPath = 'data.AppOpenframe_Query';\n\nexport const OPEN_FRAME_KEY = 'openFrameConfig';\nexport const openFrameBehavior = createPreSourceBehavior(OPEN_FRAME, {\n\tname: OPEN_FRAME_KEY,\n\ttransform: data => get(data, openFrameDataPath, null)\n});\n","import {OPEN_FRAME_KEY} from './behaviors';\nimport {chain, get, isEmpty, isFunction, isObject} from 'lodash';\nimport {getBehaviorProp} from 'sn-uxpage-presource';\n\nfunction isAttrTrue(val) {\n\treturn val === true || val === 'true';\n}\n\nexport const getActionsByKey = (actions, fieldType) => {\n\treturn chain(actions)\n\t\t.filter(action => action.field === fieldType)\n\t\t.nth(0)\n\t\t.get('actions', [])\n\t\t.value();\n};\n\n/**\n * Some configuration data (e.g., CTI and current user info) is currently\n * stored globally and not provided as props/in a central Seismic store.\n *\n * This maps known action dependencies (specified in sys_declarative_action\n * table) to a predicate that determines whether or not the action can be\n * rendered.\n */\nconst HACKY_GLOBAL_DEPENDENCY_MAP = {\n\tCTI: behaviors => {\n\t\tconst openFrameConfig = getBehaviorProp({behaviors}, OPEN_FRAME_KEY, {});\n\t\treturn (\n\t\t\tget(openFrameConfig, 'showFrame', 'false') === 'true' &&\n\t\t\tget(openFrameConfig, 'config', null)\n\t\t);\n\t}\n};\n\nexport default function canRenderAction({model, action, formData, behaviors} = {}) {\n\tif (!isObject(action)) {\n\t\treturn false;\n\t}\n\n\tif (action.requiresValue && isEmpty(model.value)) {\n\t\treturn false;\n\t}\n\n\tif (action.requiresExistingRecord && isObject(formData) && formData.isNewRecord) {\n\t\treturn false;\n\t}\n\n\tif (action.requiresWritable && isAttrTrue(model.readonly)) {\n\t\treturn false;\n\t}\n\n\tif (\n\t\taction.dependency &&\n\t\tisFunction(HACKY_GLOBAL_DEPENDENCY_MAP[action.dependency]) &&\n\t\t!HACKY_GLOBAL_DEPENDENCY_MAP[action.dependency](behaviors)\n\t) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import {createGraphQLEffect} from '@servicenow/ui-effect-graphql';\nimport {get} from 'lodash';\n\nimport {getActionsByKey} from './utils';\n\nexport const DECLARATIVE_ACTION_FETCH_FIELD_GRAPHQL = 'DECLARATIVE_ACTION_FETCH_FIELD#GRAPHQL';\nexport const DECLARATIVE_ACTION_FETCH_FIELD_SUCCESS = 'DECLARATIVE_ACTION_FETCH_FIELD#SUCCESS';\nexport const DECLARATIVE_ACTION_FETCH_FIELD_ERROR = 'DECLARATIVE_ACTION_FETCH_FIELD#ERROR';\nexport const DECLARATIVE_ACTION_FETCH_FIELD_PRESOURCE = 'DECLARATIVE_ACTION_FETCH#PRESOURCE';\n\nconst globalActionsDataPath =\n\t'data.GlideDeclarativeActions_Query.GlideDeclarativeActions_fieldQuery.fieldDeclarativeActions.fieldActions';\nconst declarativeFieldActionQuery = `query($tableName: String!, $sysId: String!, $workspaceConfigId: String!) {\n\tGlideDeclarativeActions_Query {\n\t\tGlideDeclarativeActions_fieldQuery {\n\t\t\tfieldDeclarativeActions(table: $tableName, view: \"\", sysId: $sysId, source: \"field\", workspaceConfigId: $workspaceConfigId) {\n\t\t\t\tfieldActions {\n\t\t\t\t\tfield\n\t\t\t\t\tactions {\n\t\t\t\t\t\tname\n\t\t\t\t\t\ticon\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\tdependency\n\t\t\t\t\t\trequiresValue\n\t\t\t\t\t\torder\n\t\t\t\t\t\tactionType\n\t\t\t\t\t\tactionComponent\n\t\t\t\t\t\tactionDispatch\n\t\t\t\t\t\tactionPayload\n\t\t\t\t\t\tactionAttributes\n\t\t\t\t\t\tgroupBy\n\t\t\t\t\t\tgroup\n\t\t\t\t\t\tassignmentId\n\t\t\t\t\t\tconfirmationRequired\n\t\t\t\t\t\tconfirmationMessage\n\t\t\t\t\t\ttooltip\n\t\t\t\t\t\tclientScript\n\t\t\t\t\t\tscriptedClientCondition\n\t\t\t\t\t\tmodelConditions {\n\t\t\t\t\t\t\tfield\n\t\t\t\t\t\t\toperator\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\tnewQuery\n\t\t\t\t\t\t\tor\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpayloadMap {\n\t\t\t\t\t\t\tname\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}`;\n\nconst fetchActionsEffect = createGraphQLEffect(declarativeFieldActionQuery, {\n\tvariableList: ['tableName', 'sysId', 'workspaceConfigId'],\n\tsuccessActionType: DECLARATIVE_ACTION_FETCH_FIELD_SUCCESS,\n\terrorActionType: DECLARATIVE_ACTION_FETCH_FIELD_ERROR\n});\n\nexport default {\n\t[DECLARATIVE_ACTION_FETCH_FIELD_GRAPHQL]: fetchActionsEffect,\n\n\t[DECLARATIVE_ACTION_FETCH_FIELD_SUCCESS]: ({updateProperties, state, action}) => {\n\t\tconst {payload, meta} = action;\n\t\tconst {\n\t\t\tproperties: {model}\n\t\t} = state;\n\t\tconst requestTableName = get(meta, 'options.variables.tableName');\n\t\tconst globalResponse = requestTableName === 'global';\n\n\t\tconst key = globalResponse ? model.fieldType : model.fieldName;\n\t\tconst actionsFromDatasource = get(payload, globalActionsDataPath);\n\n\t\tupdateProperties({\n\t\t\tactionsFromDatasource: getActionsByKey(actionsFromDatasource, key)\n\t\t});\n\t},\n\n\t[DECLARATIVE_ACTION_FETCH_FIELD_ERROR]: ({updateProperties}) => {\n\t\tupdateProperties({\n\t\t\tactionsFromDatasource: []\n\t\t});\n\t}\n};\n","import '@servicenow/now-button';\nimport {isEmpty, isNull, map, take} from 'lodash';\nimport {t} from 'sn-translate';\n\nimport canRenderAction from './utils';\n\nimport {transformer} from '../../common/transformActions';\n\nexport const Action = ({action, dispatch, model, key}) => {\n\tconst onClick = (e = {}) => {\n\t\te.preventDefault();\n\t\tconst target = e.target;\n\t\tconst {metaKey, type} = e;\n\t\tconst meta = target ? {actionEvent: {metaKey, type, target}} : {};\n\t\tdispatch('DECLARATIVE_ACTION', {action, model}, meta);\n\t};\n\n\tconst oldIconToNDSIcon = {\n\t\tsearch: 'magnifying-glass-outline',\n\t\tphone: 'phone-outline',\n\t\t'info-circle': 'info-circle-outline'\n\t};\n\n\tconst getIcon = icon => oldIconToNDSIcon[icon] || icon;\n\n\tconst {label, tooltip} = action;\n\n\tconst icon = getIcon(action.icon);\n\n\treturn (\n\t\t<now-button-iconic\n\t\t\t{...(key ? {key} : {})}\n\t\t\tbare\n\t\t\tconfig-aria={{\n\t\t\t\t'aria-label': tooltip || label,\n\t\t\t\t'aria-description': model.displayValue\n\t\t\t\t\t? t('{0} field : {1}', model.label, model.displayValue)\n\t\t\t\t\t: t('{0} field', model.label)\n\t\t\t}}\n\t\t\ticon={icon}\n\t\t\ton-click={onClick}\n\t\t\tsize=\"sm\"\n\t\t\ttooltip-content={tooltip}\n\t\t\tvariant=\"tertiary\"\n\t\t/>\n\t);\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {behaviors, componentId, properties} = state;\n\tconst {model, actions, actionsFromDatasource, formData} = properties;\n\n\tconst resolvedActions =\n\t\tisNull(actions) && !isEmpty(actionsFromDatasource) ? actionsFromDatasource : actions;\n\n\tconst cappedActions = take(resolvedActions, 3);\n\tconst metricsData = {\n\t\tcoeffects: {\n\t\t\thost: {\n\t\t\t\tcomponentId,\n\t\t\t\tcomponentName: 'sn-declarative-field-action-renderer'\n\t\t\t},\n\t\t\taction: {},\n\t\t\tproperties\n\t\t},\n\t\teventName: 'FIELD-RENDERER#VIEW_RENDER',\n\t\tmeta: {\n\t\t\tmodel\n\t\t}\n\t};\n\tconst evaluatedActions = transformer(cappedActions, model, metricsData);\n\treturn map(evaluatedActions, action => {\n\t\tif (!canRenderAction({model, action, formData, behaviors})) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn <Action key={action.name} model={model} action={action} dispatch={dispatch} />;\n\t});\n};\n\nexport default view;\n","import {actionTypes, createCustomElement} from '@servicenow/ui-core';\nimport {isNull, isString} from 'lodash';\nimport {preWsConfigSysId} from 'sn-uxpage-presource';\n\nimport {openFrameBehavior} from './behaviors';\nimport actionHandlers, {DECLARATIVE_ACTION_FETCH_FIELD_GRAPHQL} from './actions';\nimport styles from './view.scss';\nimport view from './view';\n\nconst {COMPONENT_BOOTSTRAPPED} = actionTypes;\n\nconst createData = (model, wsConfigSysId) => {\n\tconst {tableName = 'global', recordSysId: sysId = '-1'} = model;\n\tconst workspaceConfigId = isString(wsConfigSysId) ? wsConfigSysId : '-1';\n\n\treturn {\n\t\ttableName,\n\t\tsysId,\n\t\tworkspaceConfigId\n\t};\n};\n\nexport {default as canRenderFieldAction} from './utils';\nexport const SNDeclarativeFieldActionRenderer = 'sn-declarative-field-action-renderer';\n\ncreateCustomElement(SNDeclarativeFieldActionRenderer, {\n\tview,\n\tstyles,\n\tproperties: {\n\t\tmodel: {\n\t\t\tdefault: {}\n\t\t},\n\t\tactions: {\n\t\t\tdefault: null\n\t\t},\n\t\tformData: {\n\t\t\tdefault: {}\n\t\t},\n\t\tactionsFromDatasource: {\n\t\t\tdefault: null\n\t\t},\n\t\tfetchDeclarativeActions: {\n\t\t\tdefault: false\n\t\t}\n\t},\n\tbehaviors: [openFrameBehavior, preWsConfigSysId],\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: {\n\t\t\teffect: ({dispatch, properties, state}) => {\n\t\t\t\tconst {actions, model, fetchDeclarativeActions} = properties;\n\t\t\t\tconst {wsConfigSysId} = state.behaviors;\n\n\t\t\t\t// we can possibly move this type of logic into a behavior\n\t\t\t\tif (isNull(actions) && fetchDeclarativeActions)\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tDECLARATIVE_ACTION_FETCH_FIELD_GRAPHQL,\n\t\t\t\t\t\tcreateData(model, wsConfigSysId)\n\t\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t...actionHandlers\n\t}\n});\n","import '../mediator';\nimport './field-renderer';\n\nexport function isClassicForm(formData = {}) {\n\t// Just doing this for now to unblock us. Will clean up later\n\t// eslint-disable-next-line no-prototype-builtins\n\tif (!formData.hasOwnProperty('classicForm')) return true;\n\treturn formData.classicForm || false;\n}\n\nconst view = ({properties}) => {\n\tconst {formData} = properties;\n\tconst classicForm = isClassicForm(formData);\n\n\treturn (\n\t\t<sn-declarative-mediator\n\t\t\tshould-wrap-action={!classicForm}\n\t\t\tshould-append-action-event={!classicForm}>\n\t\t\t<sn-declarative-field-action-renderer {...properties} />\n\t\t</sn-declarative-mediator>\n\t);\n};\n\nexport default view;\n","import {createCustomElement} from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport view from './view';\n\nexport {default as canRenderFieldAction} from './field-renderer/utils';\nexport const SNDeclarativeFieldAction = 'sn-declarative-field-action';\n\ncreateCustomElement(SNDeclarativeFieldAction, {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tproperties: {\n\t\tmodel: {\n\t\t\tdefault: {}\n\t\t},\n\t\tactions: {\n\t\t\tdefault: null\n\t\t},\n\t\tformData: {\n\t\t\tdefault: {}\n\t\t},\n\t\tfetchDeclarativeActions: {\n\t\t\tdefault: false\n\t\t}\n\t}\n});\n","import {t} from 'sn-translate';\nimport truncate from 'lodash/truncate';\nimport isEmpty from 'lodash/isEmpty';\nimport { GRID_GAP, DEFAULT_MAX_CARDS, LOADING_STATE_LABEL, INIT_PAGINATON_PROPS } from '../../constants';\nimport { contractGenerator, transformer, EVAM } from '@devsnc/sn-declarative-actions';\nimport '@servicenow/now-loader';\nimport '@servicenow/now-template-message';\n\nexport const transformState = state => {\n\tconst { title, emptyMessage, data, maxCardsPerRow } = state.properties;\n\tconst properties = {\n\t\t...state.properties,\n\t\ttitle: t(truncate(title, {'length': 63 })),\n\t\temptyMessage: truncate(emptyMessage, { 'length': 203 }),\n\t\tdata,\n\t\tmaxCardsPerRow: maxCardsPerRow > DEFAULT_MAX_CARDS ? DEFAULT_MAX_CARDS: maxCardsPerRow,\n\t};\n\treturn {...state, properties};\n};\n\nexport const getAdjustedColumns = (parentWidth, maxCardsPerRow, cardWidth) => {\n\tif (!parentWidth) return maxCardsPerRow;\n\tconst maxColumns = Math.min(maxCardsPerRow, Math.floor(parentWidth/cardWidth));\n\tconst requiredWidthWithGap = (maxColumns*cardWidth) + ((maxColumns-1)*GRID_GAP);\n\treturn requiredWidthWithGap <= parentWidth ? maxColumns : maxColumns-1;\n};\n\nexport const reEvaluatePageSize = (dataLength, columns) => {\n\t/*\n\t* When cards per row is not a multiple of pageSize, we round the page size to the nearest multiple(upper limit) of the cards per row .\n\t*/\n\tif( dataLength > 0 && dataLength % columns > 0 ){\n\t\tconst pageSize = parseFloat(dataLength) + (parseFloat(columns) - parseFloat(dataLength) % parseFloat(columns));\n\t\treturn pageSize;\n\t}\n\treturn false;\n};\n\nexport const transformDAClientActionToUXEvents = declarativeActions => {\n\tif (isEmpty(declarativeActions)) return {};\n\n\tconst daAction = transformer(declarativeActions);\n\treturn contractGenerator(daAction, {modelType: EVAM}) || {};\n};\n\nexport const componentIsLoadingView = (properties, mediatorWrapper, DataSetTemplate) => {\n\tconst View = <LoaderView />;\n\tconst paginationProps = disabledPaginationProps();\n\treturn mediatorWrapper(<DataSetTemplate View={View} paginationProps={paginationProps} {...properties} />);\n\n};\n\nexport const componentIsEmptyView  = (properties, mediatorWrapper, DataSetTemplate) => {\n\tconst {emptyMessage, emptyMessageBody, emptyStateHeadingLevel} = properties;\n\tconst View =  <now-template-message-empty-state\n\t\theading={{label: emptyMessage, level: emptyStateHeadingLevel}}\n\t\tcontent={emptyMessageBody}\n\t\tillustration=\"no-data\"\n\t/>;\n\tlet paginationProps = disabledPaginationProps();\n\treturn mediatorWrapper(<DataSetTemplate View={View} paginationProps={paginationProps} {...properties} />);\n}\n\nconst LoaderView = _ => {\n\treturn (\n\t\t<div className='now-data-set-loader-root'>\n\t\t\t<now-loader label={LOADING_STATE_LABEL} />\n\t\t</div>\n\t);\n};\n\nconst disabledPaginationProps = _ => {\n\tlet paginationProps = {...INIT_PAGINATON_PROPS}\n\tpaginationProps.hideGoToNext =  true;\n\tpaginationProps.hideGoToPrevious =  true;\n\treturn paginationProps;\n}\n","import { getComponentsByTagNames } from '@devsnc/library-uxf';\n\nexport const loadComponents = componentTags => {\n\tif (!componentTags || !Array.isArray(componentTags)) return;\n\tgetComponentsByTagNames(componentTags).then(names => {\n\t\tconsole.log('Loaded components: ' + names.join(',')); // eslint-disable-line no-console\n\t});\n};\n","import { loadComponents } from \"./dynamicLoad\";\nimport map from \"lodash/map\";\nimport uniq from \"lodash/uniq\";\n\nexport const resolve = (data) => {\n\tconst uniqComponentTags = uniq(map(data, (item) => item.template));\n\tloadComponents(uniqComponentTags);\n\treturn map(data, (item) => {\n\t\treturn <item.template {...item.propValues} />;\n\t});\n};\n","import map from 'lodash/map';\n\nexport const resolveStatic = data => {\n\treturn map(data, (item) => {\n\t\treturn <item.template {...item.propValues} />;\n\t});\n};","import '../sn-data-set-toolbar';\nimport '../sn-data-set-view-grid';\nimport '../sn-data-set-view-list';\nimport '@servicenow/now-pagination-control';\nimport '@devsnc/sn-declarative-actions';\nimport '@servicenow/now-heading';\nimport isEmpty from 'lodash/isEmpty';\nimport { getAdjustedColumns, reEvaluatePageSize, componentIsLoadingView, componentIsEmptyView } from './utils';\nimport { SN_DATA_SET_PAGINATION_BUTTON_CLICKED, GRID_VIEW, DEF_CARD_WIDTH, INIT_PAGINATON_PROPS } from '../../constants';\nimport {resolve} from '@devsnc/sn-evam-resolver';\n\nconst mediatorWrapper = (view) => <sn-declarative-mediator should-wrap-action={true}>{view}</sn-declarative-mediator>;\n\nconst DataSetTemplate = ({ title, titleHeadingLevel, titleStyleVariant, toggleView, defaultView, sortConfig, filterConfig, View, paginationProps, hidePaginationControls }) => (\n\t<div className='now-data-set-root-element'>\n\t\t<DataSetHeader title={title} titleHeadingLevel={titleHeadingLevel} titleStyleVariant={titleStyleVariant}></DataSetHeader>\n\t\t<DataSetToolbar\n\t\t\ttoggleConfig={ { 'visible' : toggleView , 'view' : defaultView } }\n\t\t\tsortConfig={sortConfig}\n\t\t\tfilterConfig={filterConfig}>\n\t\t</DataSetToolbar>\n\t\t{ View }\n\t\t<PaginationView\n\t\t\thidePaginationControls={hidePaginationControls}\n\t\t\tpaginationProps={paginationProps}>\n\t\t</PaginationView>\n\t</div>\n);\n\nconst DataSetHeader = ({title, titleHeadingLevel, titleStyleVariant}) => {\n\tif( title ) {\n\t\treturn (\n\t\t\t<div className='now-data-set-header'>\n\t\t\t\t<now-heading label={title} level={titleHeadingLevel} variant={titleStyleVariant} hasNoMargin=\"true\"></now-heading>\n\t\t\t</div>\n\t\t);\n\t}\n};\n\nconst DataSetToolbar = ({toggleConfig, sortConfig, filterConfig}) => {\n\tif( toggleConfig.visible || sortConfig.visible || !filterConfig.hideFilter ) {\n\t\treturn (\n\t\t\t<div className='now-data-set-toolbar'>\n\t\t\t\t<sn-data-set-toolbar\n\t\t\t\t\ttoggleConfig={toggleConfig}\n\t\t\t\t\tsortConfig={sortConfig}\n\t\t\t\t\tfilterConfig={filterConfig} >\n\t\t\t\t</sn-data-set-toolbar>\n\t\t\t</div>\n\t\t);\n\t}\n};\n\nconst PaginationView = ({ hidePaginationControls, paginationProps }) => {\n\tif( !hidePaginationControls ) {\n\t\treturn (\n\t\t\t<div className='now-data-set-pagination-root'>\n\t\t\t\t<now-pagination-control {...paginationProps} />\n\t\t\t</div>\n\t\t);\n\t}\n};\n\nexport default (state, {dispatch}) => {\n\tconst {defaultView, data, cardHeight, maxCardsPerRow, minCardWidth, hideFilter, dataBrokerIsLoading, hidePaginationControls } = state.properties;\n\tlet selectedFilter = '';\n\tlet isSelectedFilterValid = false;\n\tconst filterConfig = !isEmpty(data) ? (data.available_filters || []) : [];\n\n\tselectedFilter = !isEmpty(data) ? (data.selected_filter || '') : '';\n\t//if selected filter is not present in filters, then show the default filter\n\tisSelectedFilterValid = filterConfig.some(filter => filter.sys_id === selectedFilter);\n\tif (!isSelectedFilterValid) {\n\t\tselectedFilter = !isEmpty(filterConfig) ? data.available_filters[0].sys_id : '';\n\t}\n\n\tconst properties = {\n\t\t...state.properties,\n\t\tfilterConfig: { filterConfig, hideFilter, selectedFilter }\n\t};\n\n\tif (dataBrokerIsLoading) {\n\t\treturn componentIsLoadingView(properties, mediatorWrapper, DataSetTemplate);\n\t}\n\n\tif (isEmpty(data) || !Array.isArray(data.items) || !data.items.length ) {\n\t\treturn componentIsEmptyView(properties, mediatorWrapper, DataSetTemplate)\n\t}\n\n\tlet dataItems = resolve(data.items);\n\tconst pageSize = data.page_size, pageNumber = data.page_number;\n\tconst columns = getAdjustedColumns(state.parentWidth, maxCardsPerRow, minCardWidth);\n\n\tif(!hidePaginationControls && !data.is_last_page && defaultView == GRID_VIEW && pageNumber <=1 ){\n\t\tlet revaluatedPageSize = reEvaluatePageSize(dataItems.length, columns);\n\t\tif (pageSize < revaluatedPageSize) {\n\t\t\tdispatch( SN_DATA_SET_PAGINATION_BUTTON_CLICKED, { 'pageSize': revaluatedPageSize } );\n\t\t\treturn componentIsLoadingView(properties, mediatorWrapper, DataSetTemplate);\n\t\t}\n\t}\n\n\tlet {pageCursors} = state;\n\tlet paginationProps = {...INIT_PAGINATON_PROPS};\n\tpaginationProps.selectedPageSize = pageSize;\n\tpaginationProps.selectedPage = pageNumber <= 1 ? 0 : (pageNumber - 1);\n\tif(paginationProps.total) paginationProps.total = undefined;\n\n\tif (data.items.length <  pageSize || data.is_last_page){//last page\n\t\tpaginationProps.selectedPageSize = pageSize;\n\t\tpaginationProps.total = pageSize * (pageCursors.length - 1);//setting pageSize, total for now-pagination-control to know its the last page\n\t}\n\n\tlet View;\n\tif (defaultView === GRID_VIEW) {\n\t\tlet cardWidth = DEF_CARD_WIDTH;\n\t\tif ( !isEmpty(minCardWidth) || Math.floor(minCardWidth) > DEF_CARD_WIDTH ){\n\t\t\tcardWidth = minCardWidth;\n\t\t}\n\t\tdataItems.forEach(item => {\n\t\t\titem.data.props.defaultView = 'grid'\n\t\t});\n\t\tView = <sn-data-set-view-grid cards={dataItems} cardHeight={cardHeight} columns={columns} minCardWidth={cardWidth}></sn-data-set-view-grid>;\n\t} else {\n\t\tdataItems.forEach(item => {\n\t\t\titem.data.props.defaultView = 'list'\n\t\t});\n\t\tView = <sn-data-set-view-list cards={dataItems} minCardWidth={DEF_CARD_WIDTH}></sn-data-set-view-list>;\n\t}\n\treturn mediatorWrapper(<DataSetTemplate View={View} paginationProps={paginationProps} {...properties} />);\n};\n","import { actionTypes } from '@servicenow/ui-core';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { TOGGLE_BUTTON_CLICKED, SN_DATA_SET_PAGINATION_BUTTON_CLICKED, NOW_DATA_SET_PAGINATION_BUTTON_CLICKED, DA_WRAPPED_CLICKED,\n\tNOW_DROPDOWN_ITEM_CLICKED, NOW_DATA_SET_FILTER_ITEM_CLICKED, NOW_PAGINATION_CONTROL_SELECTED_PAGE_SET, DECLARATIVE_ACTION_SCRIPT_SUCCESS, \n\tDECLARATIVE_ACTION_SCRIPT_FAILED, NOW_DATA_SET_ACTION_SUCCEEDED, NOW_DATA_SET_ACTION_FAILED, NOW_DATA_SET_RESIZED } from '../../constants';\n\nexport const actionHandlers = {\n\t[TOGGLE_BUTTON_CLICKED]: ({ updateProperties, action: { payload: { view } } }) => {\n\t\tupdateProperties({defaultView: view});\n\t},\n\t[actionTypes.COMPONENT_TREE_RENDERED]: ({action: {payload: {host}}, updateState}) => {\n\t\t/** \t\n\t\t * DEF0191367:  Host width is available only at COMPONENT_TREE_RENDERED in cases of modal\t\n\t\t */\n\t\tconst hostName = host.tagName;\n\t\tif (hostName === 'NOW-DATA-SET') {\n\t\t\thost.style.removeProperty('min-width');\n\t\t}\n\t\t\n\t\tconst parentWidth = host.getBoundingClientRect().width;\n\t\tupdateState({parentWidth});\n\t},\n\t[actionTypes.COMPONENT_RENDERED]: ({action: {payload: {host}}, updateState}) => {\n\t\t/** \n\t\t * DEF0126555: UXF sn-layout uses slot for grid layouts, component that puts into slot will have parentElement as sn-layout, not each grid item. \n\t\t * host.getBoundingClientRect().width will represent component grid container width(in decimals) as it gets put into the slot.\n\t\t */\n\t\tconst hostName = host.tagName;\n\t\tif (hostName === 'NOW-DATA-SET') {\n\t\t\thost.style.removeProperty('min-width');\n\t\t}\n\t\t\n\t\tconst parentWidth = host.getBoundingClientRect().width;\n\t\tupdateState({parentWidth});\n\t},\n\t[actionTypes.COMPONENT_RENDER_REQUESTED]: ({state, updateState}) => {\n\t\tconst {data} = state.properties;\n\t\tif (isEmpty(data) || !Array.isArray(data.items) || !data.items.length ) {\n\t\t\treturn;\n\t\t}\n\t\tconst pageCursor = data.page_cursor, pageNumber = data.page_number;\n\t\tlet {pageCursors} = state;\n\t\t if (pageNumber <= 1){\n\t\t\t pageCursors.length=0;\n\t\t\tpageCursors.push(\"init\");\n\t\t}\n\t\tif (!pageCursors.includes(pageCursor)){\n\t\t\tpageCursors.push(pageCursor);\n\t\t} \n\t},\n\t[DA_WRAPPED_CLICKED]: ({dispatch, action: {payload}}) => {\n\t\tdispatch(payload.wrapped_action_name, payload.wrapped_payload);\n\t},\n\t[NOW_PAGINATION_CONTROL_SELECTED_PAGE_SET]: ({ host, action, dispatch, state, updateState }) => {\n\t\tconst { pageCursors } = state;\n\t\tconst { value } = action.payload;\n\t\tlet pageNumber = value ;\n\t\t//ensures dataset is fool proof if user enters 0 or 1 as pageNumber during UIB Databroker/Datasource config\n\t\t if(!value && pageCursors.length > 2){//from page 2 to page 1\n\t\t\tpageNumber = 1;\n\t\t\tpageCursors.length = 1;\n\t\t}else if(!value && pageCursors.length == 2){//from page 1 to page 2\n\t\t\tpageNumber+=2;\n\t\t}else{\n\t\t\tpageNumber++;// all other cases \n\t\t}\n\n\t\tconst payload = {...action.payload, pageCursor: pageCursors[value], pageNumber};\n\t\tdispatch(NOW_DATA_SET_PAGINATION_BUTTON_CLICKED, payload);\n\n\t\tconst declarativeMediatorElement = get(host, 'shadowRoot.lastChild');\n\t\tconst viewElement = declarativeMediatorElement.querySelector('sn-data-set-view-grid, sn-data-set-view-list');\n\t\twindow.scroll({top: viewElement.offsetTop, behavior: 'smooth'});\n\t},\n\t[SN_DATA_SET_PAGINATION_BUTTON_CLICKED]: ({ action, dispatch }) => {\n\t\tdispatch(NOW_DATA_SET_PAGINATION_BUTTON_CLICKED, action.payload);\n\t},\n\t[NOW_DROPDOWN_ITEM_CLICKED]: ({ action, dispatch, state, updateState }) => {\n\t\t//reset pagination props when filter option is selected\n\t\tconst defaultPage = { ...state.paginationProps, selectedPage: 0, hideGoToNext: true, hideGoToPrevious: true };\n\n\t\tupdateState({\n\t\t\tpath: 'paginationProps',\n\t\t\tvalue: defaultPage,\n\t\t\toperation: 'set',\n\t\t\tshouldRender: false\n\t\t});\n\n\t\t// Resetting the pageCursors using splice and push since there is no direct operation.\n\t\tconst pageCursorsSize = state.pageCursors.length; \n\t\tupdateState({\n\t\t\tpath: 'pageCursors',\n\t\t\tdeleteCount: pageCursorsSize,\n\t\t\toperation: 'splice',\n\t\t\tshouldRender: false\n\t\t});\n\t\tupdateState({\n\t\t\tpath: 'pageCursors',\n\t\t\tvalue: 'init',\n\t\t\toperation: 'push',\n\t\t\tshouldRender: false\n\t\t});\n\n\t\tconst payload = {...action.payload, pageCursor: 'init', pageNumber: 0};\n\t\tdispatch(NOW_DATA_SET_FILTER_ITEM_CLICKED, payload);\n\t},\n\t[DECLARATIVE_ACTION_SCRIPT_SUCCESS]: ({ dispatch, action: { payload } } ) => {\n\t\tdispatch(NOW_DATA_SET_ACTION_SUCCEEDED, payload);\n\t},\n\t[DECLARATIVE_ACTION_SCRIPT_FAILED]: ({ dispatch, action: { payload } } ) => {\n\t\tdispatch(NOW_DATA_SET_ACTION_FAILED, payload);\n\t},\n\t[NOW_DATA_SET_RESIZED]: ({action: { payload }, updateState}) => {\n\t\tupdateState({\n\t\t\t'path': 'parentWidth',\n\t\t\t'value': payload.parentWidth,\n\t\t\t'shouldRender':true\n\t\t});\n\t}\n};","import { createCustomElement } from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport isEmpty from 'lodash/isEmpty';\nimport view from './view';\nimport { LIST_VIEW, GRID_VIEW, DEF_ITEMS_PER_PAGE, DEF_CARD_WIDTH, DEF_NO_DATA_MSG, DEF_CARDS_PER_ROW, DEFAULT_MAX_CARDS, DEF_TITLE_HEADING_LEVEL, DEF_TITLE_STYLE_VARIANT, EMPTY_MESSAGE_BODY, DEF_EMPTY_STATE_HEADING_LEVEL } from '../../constants';\nimport styles from './now-data-set.scss';\nimport { transformState, transformDAClientActionToUXEvents } from './utils';\nimport rtlBehavior from '@servicenow/behavior-rtl';\nimport { actionHandlers } from './actions';\n\n/**\n* A list of records within a portal that offer users configurable view types and filter options.\n*\n* ## now-data-set\n*\n* @summary Displays a list of records in either the default list view or grid view.\n* @seismicElement now-data-set\n*/\ncreateCustomElement('now-data-set', {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tstyles,\n\tproperties: {\n\t\t/**\n\t\t* Header message to display.\n\t\t* @type {string}\n\t\t*/\n\t\ttitle: {\n\t\t\tdefault: '',\n\t\t\tschema: {\n\t\t\t\ttype: 'string'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the HTML heading element used to render the title\n\t\t * @type {('1'|'2'|'3'|'4'|'5'|'6')}\n\t\t */\n\t\ttitleHeadingLevel: {\n\t\t\tdefault: DEF_TITLE_HEADING_LEVEL,\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [DEF_TITLE_HEADING_LEVEL, '2', '3', '4', '5', '6']\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the styles used to render the title.\n\t\t * @type {('header-primary'|'header-secondary'|'header-tertiary'|'title-primary'|'title-secondary'|'title-tertiary')}\n\t\t */\n\t\ttitleStyleVariant: {\n\t\t\tdefault: DEF_TITLE_STYLE_VARIANT,\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'header-primary',\n\t\t\t\t\t'header-secondary',\n\t\t\t\t\tDEF_TITLE_STYLE_VARIANT,\n\t\t\t\t\t'title-primary',\n\t\t\t\t\t'title-secondary',\n\t\t\t\t\t'title-tertiary'\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the HTML heading element used to render the empty state heading\n\t\t * @type {('1'|'2'|'3'|'4'|'5'|'6')}\n\t\t */\n\t\temptyStateHeadingLevel: {\n\t\t\tdefault: DEF_EMPTY_STATE_HEADING_LEVEL,\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['1', DEF_EMPTY_STATE_HEADING_LEVEL, '3', '4', '5', '6']\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* Header displayed if the the data set is empty.\n\t\t* @type {string}\n\t\t*/\n\t\temptyMessage: {\n\t\t\tdefault: DEF_NO_DATA_MSG,\n\t\t\tschema: {\n\t\t\t\ttype: 'string'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* Message displayed if the the data set is empty.\n\t\t* @type {string}\n\t\t*/\n\t\temptyMessageBody: {\n\t\t\tdefault: EMPTY_MESSAGE_BODY,\n\t\t\tschema: {\n\t\t\t\ttype: 'string'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *@type {enum}\n\t\t * The size of the cards to display, applicable to grid view only.\n\t\t */\n\t\tcardHeight: {\n\t\t\tdefault: 'sm',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md', 'lg']\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* Data input in JSON format, generally from a data resource.\n\t\t* @type {object}\n\t\t*/\n\t\tdata: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: 'object'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* When true, a toggle is visible to allow the user to switch between grid and list view.\n\t\t* @type {boolean}\n\t\t*/\n\t\ttoggleView: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *@type {enum}\n\t\t * Allows the user to switch between grid and list view.\n\t\t */\n\t\tdefaultView: {\n\t\t\tdefault: LIST_VIEW,\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [LIST_VIEW, GRID_VIEW]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* not yet supported\n\t\t* @private\n\t\t*/\n\t\tsortConfig: {\n\t\t\tdefault: {\n\t\t\t\tvisible: false,\n\t\t\t\toptions: []\n\t\t\t},\n\t\t\tschema: {\n\t\t\t\ttype: 'object'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *@type {enum}\n\t\t * While in grid view, the maximum number of cards displayed per row.\n\t\t * Default: 4. Maximum: 6.\n\t\t */\n\t\tmaxCardsPerRow: {\n\t\t\tdefault: DEF_CARDS_PER_ROW,\n\t\t\tschema: {\n\t\t\t\ttype: 'number',\n\t\t\t\tenum: ['1', '2','3', DEF_CARDS_PER_ROW,'5', DEFAULT_MAX_CARDS]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* While in grid view, the minimum width of each card.\n\t\t* @type {number}\n\t\t*/\n\t\tminCardWidth: {\n\t\t\tdefault: DEF_CARD_WIDTH,\n\t\t\tschema: {\n\t\t\t\ttype: 'number'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* Component state that tracks the state of databroker\n\t\t* @type {string}\n\t\t*/\n\t\tdataBrokerIsLoading: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* When true, the filter dropdown is visible.\n\t\t* @type {boolean}\n\t\t*/\n\t\thideFilter: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* When true, pagination buttons are visible.\n\t\t* @type {boolean}\n\t\t*/\n\t\thidePaginationControls: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean'\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Object containing the data needed for dynamic declarative action event mapping in UI Builder.\n\t\t * @type {DaClientActionContract}\n\t\t */\n\t\tdaClientActionContract: {\n\t\t\tcomputed({ properties: { data } }) {\n\t\t\t\tconst declarativeActions = !isEmpty(data) && Array.isArray(data.all_actions) ? data.all_actions : [];\n\t\t\t\treturn transformDAClientActionToUXEvents(declarativeActions);\n\t\t\t},\n\t\t\tschema: {\n\t\t\t\ttype: 'object'\n\t\t\t},\n\t\t\tselectable: true\n\t\t}\n\t},\n\tsetInitialState() {\n        return {\n\t\t\tparentWidth: null,\n\t\t\tmaxItemsPerPage: DEF_ITEMS_PER_PAGE,\n\t\t\tpageCursors: []\n\t\t};\n\t},\n\ttransformState,\n\tactionHandlers,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the pagination button is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the pagination button is clicked\n\t\t */\n\t\tNOW_DATA_SET_PAGINATION_BUTTON_CLICKED: {schema: {type: 'object'}},\n\t\t/**\n\t\t * Dispatched when an item in the filter dropdown is selected.\n\t\t *\n\t\t * @type {{}}\n\t\t */\n\t\tNOW_DATA_SET_FILTER_ITEM_CLICKED: {},\n\t\t/**\n\t\t * Dispatched with information about the component level action when a server-side action is successful.\n\t\t *\n\t\t * @type {{}}\n\t\t */\n\t\tNOW_DATA_SET_ACTION_SUCCEEDED: {},\n\t\t/**\n\t\t * Dispatched with information about the component level action when a server-side action fails.\n\t\t *\n\t\t * @type {{}}\n\t\t */\n\t\tNOW_DATA_SET_ACTION_FAILED: {}\n\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: rtlBehavior,\n\t\t}\n\t]\n});\n","import { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\n\nconst searchResultItem = isPanelView => (\n\t<div className=\"placeholder-search-result-card\">\n\t\t<div className=\"placeholder-search-result-card-container loading\">\n\t\t\t<div className=\"placeholder-search-results-marker-container\">\n\t\t\t\t<div className=\"placeholder-search-results-marker\" />\n\t\t\t</div>\n\t\t\t<div className=\"placeholder-search-results-content\">\n\t\t\t\t<div className=\"search-result-title\" />\n\t\t\t\t<div className=\"search-result-description -md\" />\n\t\t\t\t{isPanelView ? null : <div className=\"search-result-description -sm\" />}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n);\n\nconst searchResultsPlaceholder = (resultCount, isPanelView) => (\n\t<section\n\t\tclass={{ \"placeholder-search-results\": true, \"panel-view\": isPanelView }}\n\t>\n\t\t{new Array(resultCount).fill(searchResultItem(isPanelView)).map(card => (\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t\"placeholder-search-results-item\": true,\n\t\t\t\t\t\"panel-view\": isPanelView\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{card}\n\t\t\t</div>\n\t\t))}\n\t</section>\n);\n\nconst view = ({ resultCount, isPanelView }) => (\n\t<Fragment>\n\t\t<div className=\"search-results-container\">\n\t\t\t{searchResultsPlaceholder(resultCount, isPanelView)}\n\t\t</div>\n\t</Fragment>\n);\n\nexport default view;\n","export const TERM_SEARCHED = \"TERM_SEARCHED\";\n\n// Internal actions\nexport const PAGINATION_BUTTON_CLICKED =\n\t\"NOW_PAGINATION_CONTROL#SELECTED_PAGE_SET\";\nexport const DECLARATIVE_ACTION_UPDATE_RENDER =\n\t\"DECLARATIVE_ACTION#UPDATE_RENDER\";\nexport const NOW_TEXT_LINK_CLICKED = \"NOW_TEXT_LINK#CLICKED\";\nexport const FEEDBACK_PROVIDED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#FEEDBACK_PROVIDED\";\nexport const NLQ_TABLE_SWITCHED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#NLQ_TABLE_SWITCHED\";\nexport const NLQ_VIEW_FULL_TABLE_CLICKED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#NLQ_VIEW_FULL_TABLE_CLICKED\";\nexport const TOP_RESULTS_ACTION_DELEGATED =\n\t\"SN_SEARCH_TOP_RESULTS#TOP_RESULTS_ACTION_DELEGATED\";\nexport const NAVIGATE_TO_FULL_PAGE = \"NAVIGATE_TO_FULL_PAGE\";\nexport const NOW_BUTTON_BARE_CLICKED = \"NOW_BUTTON_BARE#CLICKED\";\n\nexport const EXTERNAL_URL_NAVIGATION = \"EXTERNAL_URL_NAVIGATION#CLICKED\";\n\n// External actions\nexport const SEARCH_RESULTS_PAGINATION_BUTTON_CLICKED =\n\t\"SN_SEARCH_RESULTS_CONTAINER#PAGINATION_BUTTON_CLICKED\";\nexport const SEARCH_EXECUTED = \"SN_SEARCH_RESULTS_CONTAINER#SEARCH_EXECUTED\";\nexport const SEARCH_RESULTS_DECLARATIVE_ACTION =\n\t\"SN_SEARCH_RESULTS_CONTAINER#DECLARATIVE_ACTION\";\nexport const SEARCH_RESULTS_SEARCH_START =\n\t\"SN_SEARCH_RESULTS_CONTAINER#SEARCH_START\";\n\nexport const SEARCH_RESULTS_NAVIGATE_TO_FULL_PAGE =\n\t\"SN_SEARCH_RESULTS_CONTAINER#NAVIGATE_TO_FULL_PAGE\";\n\nexport const DROPDOWN_CLICKED =\n\t\"SN_SEARCH_RESULT_EVAM_CARD#SEARCH_RESULTS_FEEDBACK_CLICKED\"; // action that search result evam card dispatches\n\nexport const SEARCH_RESULTS_FEEDBACK_CLICKED =\n\t\"SN_SEARCH_RESULTS_CONTAINER#FEEDBACK_CLICKED\";\nexport const BARE_BUTTON_CLICKED = \"NOW_BUTTON_BARE#CLICKED\";\n\nexport const COLLAPSED_ATTACHMENT_CLICKED =\n\t\"SN_SEARCH_RESULT_EVAM_CARD#ATTACHMENT_LINK_CLICKED\";\nexport const SEARCH_RESULTS_COLLAPSED_ATTCHMENT_CLICKED =\n\t\"SN_SEARCH_RESULTS_CONTAINER#COLLAPSED_ATTACHMENT_CLICKED\";\n\nexport const LABEL_VALUE_TRANSLATION_STARTED =\n\t\"LABEL_VALUE_TRANSLATION_STARTED\";\nexport const REQUEST_TRANSLATED_LABEL_VALUES =\n\t\"REQUEST_TRANSLATED_LABEL_VALUES\";\nexport const TRANSLATION_FETCH_STARTED = \"TRANSLATION_FETCH_STARTED\";\nexport const TRANSLATION_FETCH_SUCCEEDED = \"TRANSLATION_FETCH_SUCCEEDED\";\nexport const TRANSLATION_FETCH_FAILED = \"TRANSLATION_FETCH_FAILED\";\n\nexport const CHAT_CLICKED = \"SN_SEARCH_RESULT_EVAM_CARD#CHAT_CLICKED\";\nexport const CHAT_TRIGGERED = \"SN_SEARCH_RESULTS_CONTAINER#CHAT_TRIGGERED\";\n\nexport const NOW_DROPDOWN_ITEM_SELECTED = \"NOW_DROPDOWN#ITEM_CLICKED\";\nexport const SORT_FILTER_ITEM_SELECTED =\n\t\"SN_SEARCH_RESULTS_CONTAINER#SORT_FILTER_SELECTED\";\nexport const DEBUG_VIEW_ITEM_SELECTED =\n\t\"SN_SEARCH_RESULTS_CONTAINER#DEBUG_VIEW_SELECTED\";\n\nexport const FETCH_SYS_PROP_STARTED = \"FETCH_SYS_PROP_STARTED\";\nexport const FETCH_SYS_PROP_SUCCEEDED = \"FETCH_SYS_PROP_SUCCEEDED\";\nexport const FETCH_SYS_PROP_FAILED = \"FETCH_SYS_PROP_FAILED\";\n","import GlideSignals from \"sn-signals\";\nimport { t } from \"sn-translate\";\n\nexport const VERTICAL = \"vertical\";\nexport const INITIAL_PAGE = 0;\nexport const FIRST_PAGE = 1;\nexport const LOADING_VIEW_RESULT_COUNT = 7;\nexport const LOADING_VIEW_RESULT_COUNT_PANEL = 4;\n\nexport const RESULT_COUNT_LABEL = \"{0} results for\";\n\nexport const SPELLCHECK_LABEL = {\n\tSHOWING_RESULTS: t(\"Showing results for\"),\n\tSHOWING_RESULTS_WITH_COUNT: t(\"Showing {0}\", RESULT_COUNT_LABEL),\n\tSEARCH_INSTEAD: t(\"Search instead for \")\n};\nexport const SIGN_IN_MESSAGE = t(\n\t\"To view results generated from Sharepoint, you need to be signed in.\"\n);\n\nexport const CLICK_ACTION = \"CLICK\";\nexport const RIGHT_CLICK_ACTION = \"RIGHT_CLICK\";\nexport const INFO_EVENT = GlideSignals.priority.INFO;\nexport const SEARCH_EVENT = \"SEARCH_EVENT\";\nexport const SEARCH_RESULT_EVENT = \"SEARCH_RESULT_EVENT\";\nexport const GENIUS_RESULT_EVENT = \"GENIUS_RESULT_EVENT\";\nexport const SEARCH_FACET_EVENT = \"SEARCH_FACET_EVENT\";\nexport const SEARCH_PAGINATION_EVENT = \"SEARCH_PAGINATION_EVENT\";\nexport const SEARCH_SORT_EVENT = \"SEARCH_SORT_EVENT\";\nexport const GENIUS_RESULT_VIRTUAL_TABLE = \"v_search_genius_result\";\nexport const DECLARATIVE_ACTION_CLICK = \"click\";\nexport const OPEN_IN_NEW_TAB = \"open-in-new-tab\";\nexport const RIGHT_CLICK = \"right-click\";\nexport const CATALOG_SOURCE_TABLE = \"sc_cat_item\";\nexport const USER_SOURCE_TABLE = \"sys_user\";\nexport const SHAREPOINT_EXTERNAL_TABLE = \"sn_sp_con_sharepoint_external_search\";\nexport const KNOWLEDGE_SOURCE_TABLE = \"kb_knowledge\";\nexport const CATALOG_INTENT = \"catalogFind\";\nexport const USER_INTENT = \"personFind\";\nexport const KNOWLEDGE_GENIUS_CARD = \"Q&A\";\nexport const PEOPLE_GENIUS_CARD = \"People\";\nexport const CATALOG_GENIUS_CARD = \"Catalog\";\n\nexport const RESULT_TYPES = {\n\tREGULAR_RESULT: \"REGULAR\",\n\tGENIUS_RESULT: \"GENIUS\"\n};\n\nexport const ANALYTICS_EVENTS = {\n\tSEARCH_START: \"Search Start\",\n\tSEARCH_RESULT_CLICK: \"Search Result Click\",\n\tGENIUS_RESULT_CLICK: \"Search Genius Result Action Click\",\n\tGENIUS_RESULT_FEEDBACK_CLICK: \"Search Genius Feedback Action Click\"\n};\n\nexport const ANALYTICS_EVENT_INTENTS = {\n\tQUERY_INTENT_TRIGGERED: \"Triggered NLU Query Intent\",\n\tGENIUS_RESULT_TRIGGERED: \"Triggered NLU Genius Result Intent\"\n};\n\nexport const POSITIVE_FEEDBACK_TYPE = \"positive\";\nexport const NEGATIVE_FEEDBACK_TYPE = \"negative\";\nexport const FEEDBACK_ACTION_TYPE = \"Feedback\";\n\nexport const NLQ_ACTION_TYPE = \"NLQ Table Switched\";\nexport const NLQ_VIEW_FULL_TABLE_TYPE = \"NLQ View Full Table Clicked\";\n\nexport const IS_GLOBAL = \"isGlobal\";\nexport const IS_PANEL_VIEW = \"isPanelView\";\nexport const SEARCH_FROM_CHAT = \"searchFromChat\";\nexport const SHOW_CARD_BORDER = \"showCardBorder\";\nexport const DISABLE_HREF = \"disableHref\";\nexport const REMOVE_BOTTOM_BORDER = \"removeBottomBorder\";\nexport const SHOW_RESULT_CARD_BORDER_SYS_PROP =\n\t\"glide.search.show_result_card_border\";\nexport const INTEGRATED_CHAT_ENABLED = \"integratedChatEnabled\";\n\nexport const SHOW_RESULT_CARD_BORDER_SYS_PROP_QUERY = `{\n\tGlideRecord_Query {\n\t\tsys_properties(\n\t\t\tqueryConditions: \"name=${SHOW_RESULT_CARD_BORDER_SYS_PROP}\"\n\t\t) {\n\t\t\t_results {\n\t\t\t\tvalue {\n\t\t\t\t\tvalue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}`;\n\nexport const SYS_PROP_QUERY_PATH =\n\t\"data.GlideRecord_Query.sys_properties._results\";\n\nexport const SYS_ATTACHMENT = \"sys_attachment\";\nexport const NAVIGATE_TO_LIST_VIEW = \"NAVIGATE_TO_LIST_VIEW\";\n\nexport const RESULT_COUNT_DISCLAIMER = t(\n\t\"Search results displayed and the total search count may vary due to security permissions.\"\n);\n\nexport const RESULT_COUNT_INFO_LABEL = t(\"Search results disclaimer\");\n\nexport const HIGHLIGHT_REGEX = /<\\/?highlight>/g;\n\nexport const DELEGATED_ACTION_TYPES = {\n\tFEEDBACK: \"feedback\",\n\tDECLARATIVE_ACTION: \"declarative_action\",\n\tNLQ_TABLE_SWITCHED: \"nlq_table_switched\",\n\tNLQ_TABLE_CLICKED: \"nlq_table_clicked\",\n\tASK_A_FOLLOW_UP: \"ask_a_follow_up\",\n\tSHOW_FULL_ANSWER: \"show_full_answer\"\n};\n\nexport const VIEW_ALL_LINK = t(\"View All\");\n\n// export const DISPLAY_TYPE_RAW = 'raw';\nexport const DISPLAY_TYPE_RESULT_DETAILS = \"results-details\";\nexport const RAW_RESPONSE_PROP = \"rawResponse\";\n\n// export const CODE_EDITOR_LANGUAGE = 'json';\n\nexport const VIEW_ALL_LINK_ICON = \"open-link-right-outline\";\n\nexport const RAW_DETAILS_FIELDS = [\n\t\"score\",\n\t\"primaryLanguage\",\n\t\"table\",\n\t\"sysId\"\n];\nexport const DISPLAY_FIELD_LANG = {\n\tRAW: \"primaryLanguage\",\n\tDISPLAY: \"language\"\n};\nexport const ITEM_FIELDS_DISPLAY_MAP = {\n\tpredicateId: t(\"EVAM View Config\")\n};\n\nexport const TRANSLATION_QUERY = `query($values: [String!]!)\n{\n\tGlideDomain_Query {\n\t\tgetMessages(key: $values) {\n\t\t\tkey\n\t\t\tmessage\n\t\t}\n\t}\n}`;\n// export const CODE_EDITOR_LANGUAGE = 'json';\n\nexport const CHAT_INTENTION = \"execute\";\nexport const REGULAR_SEARCH = \"regular\";\n\nexport const RELEVANCY_SORT_ID = \"relevancy\";\nexport const RELEVANCY_SORT_ID_NUMERIC = 0;\nexport const RELEVANCY_SORT_FILTER = {\n\tid: RELEVANCY_SORT_ID,\n\tlabel: t(\"Most relevant\")\n};\n\nexport const SORT_FILTER_DESCRIPTION = t(\"Sort search results\");\n\nexport const DEBUG_VIEW_OPTION_RESULTS = \"results\";\nexport const DEBUG_VIEW_OPTION_RAW = \"raw\";\nexport const DEBUG_VIEW_OPTION_RESULTS_DETAILS = \"results-details\";\n\nexport const DEBUG_VIEW_OPTIONS = [\n\t{\n\t\tid: DEBUG_VIEW_OPTION_RESULTS,\n\t\tlabel: t(\"Result cards\")\n\t},\n\t{\n\t\tid: DEBUG_VIEW_OPTION_RAW,\n\t\tlabel: t(\"Raw output\")\n\t},\n\t{\n\t\tid: DEBUG_VIEW_OPTION_RESULTS_DETAILS,\n\t\tlabel: t(\"Result cards with details\")\n\t}\n];\nexport const DEBUG_VIEW_LABEL = t(\"View\");\nexport const DEBUG_VIEW_DESCRIPTION = t(\"Select a debug view\");\nexport const SEARCH_RESULTS_REGION_LABEL = t(\"Search results\");\nexport const SEARCH_RESULTS_LIST_LABEL = t(\"Search results list\");\nexport const OPEN_LIST_VIEW_LABEL = t(\"Open list view\");\n","import { t } from \"sn-translate\";\n\nexport const getLabelWithCount = count =>\n\tt(\n\t\t{\n\t\t\tcode: \"sn-search-results-container\",\n\t\t\tmessage: \"Showing {count} results for\",\n\t\t\tcomment: \"spell check search count message\"\n\t\t},\n\t\t{ count: count }\n\t);\n\nexport const getTranslationsLabelWithCount = (count, searchTerm) =>\n\tt(\n\t\t{\n\t\t\tcode: \"sn-search-results-container\",\n\t\t\tmessage: \"{count} results for {searchTerm}\",\n\t\t\tcomment: \"count returns the number of results for the searchTerm searched\"\n\t\t},\n\t\t{ count: count, searchTerm: searchTerm }\n\t);\n","import \"@servicenow/now-icon\";\nimport \"@servicenow/now-popover\";\nimport \"@servicenow/now-button\";\nimport \"@servicenow/now-card\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\n\nimport { RESULT_COUNT_DISCLAIMER, RESULT_COUNT_INFO_LABEL } from \"../constants\";\n\nconst resultCountDisclaimer = () => {\n\treturn (\n\t\t<Fragment>\n\t\t\t<now-popover interactionType=\"none\" focusPanel>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tclassName=\"header-message-disclaimer\"\n\t\t\t\t\ticon=\"circle-info-outline\"\n\t\t\t\t\tbare\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\thidePadding\n\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\"aria-label\": RESULT_COUNT_INFO_LABEL,\n\t\t\t\t\t\t\t\"aria-haspopup\": \"dialog\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<now-card\n\t\t\t\t\tslot=\"content\"\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\tinteraction=\"none\"\n\t\t\t\t\thideShadow\n\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\trole=\"status\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"result-count-disclaimer-content\">\n\t\t\t\t\t\t{RESULT_COUNT_DISCLAIMER}\n\t\t\t\t\t</div>\n\t\t\t\t</now-card>\n\t\t\t</now-popover>\n\t\t</Fragment>\n\t);\n};\n\nexport default resultCountDisclaimer;\n","/* eslint-disable no-script-url */\nimport isEmpty from \"lodash/isEmpty\";\nimport \"@servicenow/now-text-link\";\nimport { t } from \"sn-translate\";\nimport \"@servicenow/now-button\";\n\nimport { TERM_SEARCHED } from \"../actions\";\nimport { SPELLCHECK_LABEL } from \"../constants\";\nimport { getLabelWithCount } from \"../utils/headerUtils\";\nimport ResultCountDisclaimer from \"./ResultCountDisclaimer\";\n\nconst _textLink = (term, phrase) => (\n\t<now-text-link\n\t\tlabel={term}\n\t\thref=\"javascript:void(0)\"\n\t\tvariant=\"primary\"\n\t\tappend-to-payload={{\n\t\t\taction: TERM_SEARCHED,\n\t\t\tterm\n\t\t}}\n\t\tconfigAria={{ \"aria-label\": `${phrase}${term}` }}\n\t/>\n);\n\nconst view = ({\n\tsearchTerm,\n\tcorrectedSearchTerm,\n\tresultCountFontSize,\n\tspellCheckFontSize,\n\tisGlobal,\n\tresultCount,\n\tsearchFromChat\n}) => {\n\tif (isEmpty(searchTerm) || isEmpty(correctedSearchTerm)) return null;\n\n\tconst searchTermMessage = `${\n\t\tresultCount != null\n\t\t\t? getLabelWithCount(resultCount)\n\t\t\t: SPELLCHECK_LABEL.SHOWING_RESULTS\n\t} `;\n\n\tconst disclaimer = (\n\t\t<span>\n\t\t\t{\" \"}\n\t\t\t<ResultCountDisclaimer />\n\t\t</span>\n\t);\n\n\tif (isGlobal) {\n\t\treturn (\n\t\t\t<span>\n\t\t\t\t<span className=\"header-message-primary\">\n\t\t\t\t\t{searchTermMessage}\n\t\t\t\t\t<em>{correctedSearchTerm}</em>\n\t\t\t\t\t{disclaimer}\n\t\t\t\t</span>\n\t\t\t\t<br />\n\t\t\t\t<span className=\"header-message-secondary\">\n\t\t\t\t\t{SPELLCHECK_LABEL.SEARCH_INSTEAD}{\" \"}\n\t\t\t\t\t{_textLink(searchTerm, SPELLCHECK_LABEL.SEARCH_INSTEAD)}\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t);\n\t}\n\n\tif (searchFromChat) {\n\t\treturn (\n\t\t\t<span className={\"header-message-na-self-service\"}>\n\t\t\t\t{searchTermMessage}\n\t\t\t\t<em>{correctedSearchTerm}</em>\n\t\t\t\t{disclaimer}\n\n\t\t\t\t<div className=\"header-spellcheck-nass\">\n\t\t\t\t\t{SPELLCHECK_LABEL.SEARCH_INSTEAD}{\" \"}\n\t\t\t\t\t{_textLink(searchTerm, SPELLCHECK_LABEL.SEARCH_INSTEAD)}\n\t\t\t\t</div>\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<span\n\t\t\t\tclassName={`message header-message-font-size-${resultCountFontSize}`}\n\t\t\t>\n\t\t\t\t{searchTermMessage}\n\t\t\t\t{_textLink(t(correctedSearchTerm), searchTermMessage)}\n\t\t\t\t{disclaimer}\n\t\t\t</span>\n\t\t\t<br />\n\t\t\t<span\n\t\t\t\tclassName={`message header-message-font-size-${spellCheckFontSize}`}\n\t\t\t>\n\t\t\t\t{SPELLCHECK_LABEL.SEARCH_INSTEAD}{\" \"}\n\t\t\t\t{_textLink(searchTerm, SPELLCHECK_LABEL.SEARCH_INSTEAD)}\n\t\t\t</span>\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import { getTranslationsLabelWithCount } from \"../utils/headerUtils\";\nimport ResultCountDisclaimer from \"./ResultCountDisclaimer\";\n\nconst getSearchTermMessage = (count, searchTerm) =>\n\t`${getTranslationsLabelWithCount(count, searchTerm)}`;\n\nconst resultCountMessage = ({\n\tisGlobal,\n\tresultCount,\n\tsearchTerm,\n\tresultCountFontSize,\n\tsearchFromChat\n}) => {\n\tconst searchTermMessage = getSearchTermMessage(\n\t\tresultCount,\n\t\t!searchFromChat ? searchTerm : \"\"\n\t);\n\n\tconst disclaimer = (\n\t\t<span>\n\t\t\t{\" \"}\n\t\t\t<ResultCountDisclaimer />\n\t\t</span>\n\t);\n\n\tif (isGlobal) {\n\t\treturn (\n\t\t\t<span>\n\t\t\t\t<span className=\"header-message-primary\">\n\t\t\t\t\t{searchTermMessage}\n\t\t\t\t\t{disclaimer}\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t);\n\t}\n\n\tif (searchFromChat) {\n\t\treturn (\n\t\t\t<span className=\"header-message-na-self-service\">\n\t\t\t\t{searchTermMessage}\n\t\t\t\t<em>{searchTerm}</em>\n\t\t\t\t{disclaimer}\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<span className={`message header-message-font-size-${resultCountFontSize}`}>\n\t\t\t{searchTermMessage}\n\t\t\t{disclaimer}\n\t\t</span>\n\t);\n};\nexport default resultCountMessage;\n","/**\n * creates an array of {id, label} objects from 'filters'\n * and adds the 'defaultFilter' as first element in the array\n */\nexport const getFilters = (filters, defaultFilter) => {\n\tconst sortOptions = [];\n\tconst defaultSort = Object.assign({}, defaultFilter);\n\tif (Array.isArray(filters) && filters.length > 0) {\n\t\tfilters.forEach(({ sysId, label }) => {\n\t\t\tconst data = {\n\t\t\t\tid: sysId,\n\t\t\t\tlabel: label\n\t\t\t};\n\t\t\tsortOptions.push(data);\n\t\t});\n\t}\n\n\treturn [defaultSort, ...sortOptions];\n};\n\nexport const _getSelectedFilter = (filters, defaultFilterId, allFilters) => {\n\tif (filters && filters.length > 0) {\n\t\t// if there's a list of all the available filters,\n\t\tif (allFilters && allFilters.length > 0) {\n\t\t\t// if all the available filters does NOT include the filter we would otherwise select\n\t\t\tif (\n\t\t\t\t!allFilters.find(item => {\n\t\t\t\t\treturn item.id === filters[0];\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\t// return the default filter\n\t\t\t\treturn defaultFilterId;\n\t\t\t}\n\t\t}\n\t\treturn filters[0];\n\t}\n\n\treturn defaultFilterId;\n};\n","import \"@servicenow/now-dropdown\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport { getFilters, _getSelectedFilter } from \"../utils/sortDropdownUtils\";\nimport {\n\tRELEVANCY_SORT_FILTER,\n\tSORT_FILTER_DESCRIPTION,\n\tRELEVANCY_SORT_ID\n} from \"../constants\";\n\nconst sortDropdownView = ({\n\tsortFilters,\n\tselectedSortFilters,\n\tselectedSortFilterLabel\n}) => {\n\tconst sortDropdownFilters = getFilters(sortFilters, RELEVANCY_SORT_FILTER);\n\tconst selectedSortFilter = _getSelectedFilter(\n\t\tselectedSortFilters,\n\t\tRELEVANCY_SORT_ID,\n\t\tsortDropdownFilters\n\t);\n\n\tconst _showSortDropdown = sortFilters => {\n\t\treturn (\n\t\t\tsortFilters !== null && !isEmpty(sortFilters) && sortFilters.length > 0\n\t\t);\n\t};\n\n\treturn (\n\t\t<div>\n\t\t\t{_showSortDropdown(sortFilters) ? (\n\t\t\t\t<div className=\"filter__dropdown__views\">\n\t\t\t\t\t<now-dropdown\n\t\t\t\t\t\titems={sortDropdownFilters}\n\t\t\t\t\t\tselectedItems={[selectedSortFilter]}\n\t\t\t\t\t\tselect=\"single\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\tbare\n\t\t\t\t\t\ttooltipContent={SORT_FILTER_DESCRIPTION}\n\t\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\t\ttrigger: {\n\t\t\t\t\t\t\t\t\"aria-label\": selectedSortFilterLabel\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\tisSort: true\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<Fragment />\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default sortDropdownView;\n","/* eslint-disable no-script-url */\nimport isEmpty from \"lodash/isEmpty\";\nimport \"@servicenow/now-text-link\";\nimport \"@servicenow/now-button\";\nimport \"@servicenow/now-dropdown\";\n\nimport { BARE_BUTTON_CLICKED } from \"../actions\";\nimport { NAVIGATE_TO_LIST_VIEW, OPEN_LIST_VIEW_LABEL } from \"../constants\";\n\nimport SpellCheckMessage from \"./SpellCheckMessage\";\nimport ResultCountMessage from \"./ResultCountMessage\";\nimport SortDropdown from \"./SortDropdown\";\n\nconst view = ({\n\tsearchTerm,\n\tcorrectedSearchTerm,\n\tresultCountFontSize,\n\tspellCheckFontSize,\n\tisGlobal,\n\tfacetsButtonShown,\n\tviewAllLink,\n\tresultCount,\n\tshowResultCount,\n\tsearchFromChat,\n\tsortFilters,\n\tselectedSortFilters,\n\tselectedSortFilterLabel\n}) => {\n\tconst showGoTo = (\n\t\t<span\n\t\t\tclass={{\n\t\t\t\t\"global-list\": true,\n\t\t\t\t\"spell-check-default-facet-view\":\n\t\t\t\t\tfacetsButtonShown && !isEmpty(correctedSearchTerm),\n\t\t\t\t\"spell-check-default-show-filters\":\n\t\t\t\t\t!facetsButtonShown && !isEmpty(correctedSearchTerm)\n\t\t\t}}\n\t\t>\n\t\t\t<now-button-bare\n\t\t\t\tclassName={\"global-list-view-icon\"}\n\t\t\t\tsize=\"sm\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\ticon-end=\"open-link-right-outline\"\n\t\t\t\tlabel={OPEN_LIST_VIEW_LABEL}\n\t\t\t\tappend-to-payload={{\n\t\t\t\t\taction: BARE_BUTTON_CLICKED,\n\t\t\t\t\ttype: NAVIGATE_TO_LIST_VIEW\n\t\t\t\t}}\n\t\t\t/>\n\t\t</span>\n\t);\n\n\tconst sortDropdown = (\n\t\t<SortDropdown\n\t\t\tsortFilters={sortFilters}\n\t\t\tselectedSortFilters={selectedSortFilters}\n\t\t\tselectedSortFilterLabel={selectedSortFilterLabel}\n\t\t/>\n\t);\n\n\tconst dropdownContainers = (\n\t\t<div className=\"dropdown-containers\">{sortDropdown}</div>\n\t);\n\n\tconst spellCheckMessage = correctedSearchTerm ? (\n\t\t<SpellCheckMessage\n\t\t\tsearchTerm={searchTerm}\n\t\t\tcorrectedSearchTerm={correctedSearchTerm}\n\t\t\tresultCountFontSize={resultCountFontSize}\n\t\t\tspellCheckFontSize={spellCheckFontSize}\n\t\t\tisGlobal={isGlobal}\n\t\t\tresultCount={resultCount}\n\t\t\tshowResultCount={showResultCount}\n\t\t\tsearchFromChat={searchFromChat}\n\t\t/>\n\t) : null;\n\n\tconst resultCountMessage = correctedSearchTerm ? null : (\n\t\t<ResultCountMessage\n\t\t\tisGlobal={isGlobal}\n\t\t\tresultCount={resultCount}\n\t\t\tsearchTerm={searchTerm}\n\t\t\tresultCountFontSize={resultCountFontSize}\n\t\t\tspellCheckFontSize={spellCheckFontSize}\n\t\t\tsearchFromChat={searchFromChat}\n\t\t/>\n\t);\n\n\tif (!isEmpty(searchTerm) && !isEmpty(correctedSearchTerm)) {\n\t\tif (isGlobal) {\n\t\t\treturn (\n\t\t\t\t<span\n\t\t\t\t\trole=\"heading\"\n\t\t\t\t\taria-level=\"2\"\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"header-message-container\": true,\n\t\t\t\t\t\tglobal: isGlobal\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\"header-message-view-all-flex-wrapper\": true\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{spellCheckMessage}\n\t\t\t\t\t\t{isGlobal && !isEmpty(viewAllLink) && showGoTo}\n\t\t\t\t\t</span>\n\t\t\t\t\t{dropdownContainers}\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\trole=\"heading\"\n\t\t\t\taria-level=\"2\"\n\t\t\t\tclass={{\n\t\t\t\t\t\"header-message-container\": true,\n\t\t\t\t\t\"na-self-service\": searchFromChat\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{spellCheckMessage}\n\t\t\t\t{dropdownContainers}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn isGlobal && !isEmpty(viewAllLink) ? (\n\t\t<div\n\t\t\tclassName=\"header-message-container global\"\n\t\t\trole=\"heading\"\n\t\t\taria-level=\"2\"\n\t\t>\n\t\t\t<span\n\t\t\t\tclass={{\n\t\t\t\t\t\"show-filters-button-view\": facetsButtonShown,\n\t\t\t\t\t\"default-facet-view\": !facetsButtonShown,\n\t\t\t\t\t\"header-message-view-all-flex-wrapper\": true\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{resultCountMessage}\n\t\t\t\t{showGoTo}\n\t\t\t</span>\n\t\t\t{dropdownContainers}\n\t\t</div>\n\t) : (\n\t\t<div\n\t\t\trole=\"heading\"\n\t\t\taria-level=\"2\"\n\t\t\tclass={{\n\t\t\t\t\"header-message-container\": true,\n\t\t\t\tglobal: isGlobal,\n\t\t\t\t\"na-self-service\": searchFromChat\n\t\t\t}}\n\t\t>\n\t\t\t<span\n\t\t\t\tclass={{\n\t\t\t\t\t\"header-message-view-all-flex-wrapper\": isGlobal\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{resultCountMessage}\n\t\t\t</span>\n\t\t\t{dropdownContainers}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import \"@servicenow/now-template-message\";\nimport { t } from \"sn-translate\";\nimport isEmpty from \"lodash/isEmpty\";\n\nconst NoResultsView = ({ searchTerm, isGlobal, debugView }) => {\n\tif (isGlobal) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"no-results-message__empty-state-container\"\n\t\t\t\trole=\"region\"\n\t\t\t\taria-live=\"polite\"\n\t\t\t>\n\t\t\t\t<now-template-message-empty-state\n\t\t\t\t\talignment=\"vertical-centered\"\n\t\t\t\t\theading={{\n\t\t\t\t\t\tlabel: t(\n\t\t\t\t\t\t\tdebugView\n\t\t\t\t\t\t\t\t? \"Welcome to the AI search preview tool\"\n\t\t\t\t\t\t\t\t: \"No results found\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tlevel: \"3\"\n\t\t\t\t\t}}\n\t\t\t\t\tcontent={t(\n\t\t\t\t\t\tdebugView\n\t\t\t\t\t\t\t? \"Select a search application or search profile and enter a search query to see matching results. To see all results, use the wildcard: ***\"\n\t\t\t\t\t\t\t: \"Try updating your search.\"\n\t\t\t\t\t)}\n\t\t\t\t\tillustration=\"no-search-results\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"no-results-message-container\">\n\t\t\t<span className=\"message\">\n\t\t\t\t{t(\"Your search\")}\n\t\t\t\t<span className=\"no-results-message__term\">\n\t\t\t\t\t{!isEmpty(searchTerm) ? ` - ${searchTerm} -` : \"\"}\n\t\t\t\t</span>\n\t\t\t\t&nbsp;{t(\"has no matches\")}\n\t\t\t</span>\n\t\t\t<div className=\"no-results-message__description\">\n\t\t\t\t<span className=\"no-results-message__description--hint\">\n\t\t\t\t\t{t(\"Keep on searching\")}\n\t\t\t\t</span>\n\t\t\t\t<div className=\"no-results-message__empty-state-container\">\n\t\t\t\t\t<now-template-message-empty-state\n\t\t\t\t\t\talignment=\"vertical-centered\"\n\t\t\t\t\t\theading={{\n\t\t\t\t\t\t\tlabel: t('No results for \"{0}\"', searchTerm),\n\t\t\t\t\t\t\tlevel: \"3\"\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tcontent={t(\n\t\t\t\t\t\t\t'Try entering shorter phrases, or using different words in your query. For example, try \"vacation days\" instead of \"how many days vacation\".'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tillustration=\"no-search-results\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default NoResultsView;\n","import { t } from \"sn-translate\";\nimport \"@servicenow/now-button\";\nimport \"@servicenow/now-illustration\";\nimport { PAGINATION_BUTTON_CLICKED } from \"../actions\";\n\nconst EmptyPageView = ({ currentPage, dispatch }) => {\n\tconst header = t(\n\t\t\"No more results because one or more results were removed due to security constraints\"\n\t);\n\treturn (\n\t\t<div\n\t\t\tclassName=\"empty-page-message__empty-page-container\"\n\t\t\trole=\"region\"\n\t\t\taria-live=\"polite\"\n\t\t>\n\t\t\t<h3>{header}</h3>\n\t\t\t<now-button\n\t\t\t\tlabel={t(\"Go back\")}\n\t\t\t\tsize=\"md\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\ton-click={() => {\n\t\t\t\t\tdispatch(PAGINATION_BUTTON_CLICKED, { value: currentPage - 1 });\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<now-illustration\n\t\t\t\talt={header}\n\t\t\t\tillustration=\"no-search-results\"\n\t\t\t\tsize=\"lg\"\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default EmptyPageView;\n","const replaceTranslatedValues = (searchItem, translatedValues) => {\n\tif (!searchItem?.propValues) return searchItem;\n\n\tconst forceTranslate = searchItem.propValues.forceTranslate\n\t\t? searchItem.propValues.forceTranslate.split(\",\")\n\t\t: [];\n\tforceTranslate.forEach(field => {\n\t\tconst translatedValue = translatedValues[searchItem.propValues[field]];\n\t\tif (translatedValue) searchItem.propValues[field] = translatedValue;\n\t});\n\treturn searchItem;\n};\n\nexport default replaceTranslatedValues;\n","import {\n\tRAW_DETAILS_FIELDS,\n\tDISPLAY_FIELD_LANG,\n\tITEM_FIELDS_DISPLAY_MAP\n} from \"../constants\";\n\nconst getRawDisplayFields = (rawResponseObj, itemObj = {}) => {\n\tconst filtered = Object.keys(rawResponseObj)\n\t\t.filter(key => RAW_DETAILS_FIELDS.includes(key))\n\t\t.sort((a, b) => {\n\t\t\tif (!RAW_DETAILS_FIELDS.includes(a)) return 1;\n\t\t\tif (!RAW_DETAILS_FIELDS.includes(b)) return -1;\n\t\t\treturn RAW_DETAILS_FIELDS.indexOf(a) - RAW_DETAILS_FIELDS.indexOf(b);\n\t\t})\n\t\t.reduce((obj, key) => {\n\t\t\tif (key === DISPLAY_FIELD_LANG.RAW) {\n\t\t\t\tobj[DISPLAY_FIELD_LANG.DISPLAY] = rawResponseObj[key];\n\t\t\t} else {\n\t\t\t\tobj[key] = rawResponseObj[key];\n\t\t\t}\n\t\t\treturn obj;\n\t\t}, {});\n\n\tObject.entries(ITEM_FIELDS_DISPLAY_MAP).forEach(([field, displayKey]) => {\n\t\tif (itemObj[field] !== undefined) {\n\t\t\tfiltered[displayKey] = itemObj[field];\n\t\t}\n\t});\n\n\treturn filtered;\n};\n\nexport default getRawDisplayFields;\n","import \"@servicenow/now-data-set\";\nimport \"@servicenow/now-pagination-control\";\n\nimport { isEmpty, cloneDeep } from \"lodash\";\n\nimport NoResultsView from \"./NoResultsView\";\nimport EmptyPageView from \"./EmptyPageView\";\nimport {\n\tIS_GLOBAL,\n\tIS_PANEL_VIEW,\n\tVIEW_ALL_LINK,\n\tVIEW_ALL_LINK_ICON,\n\tRAW_RESPONSE_PROP,\n\tSEARCH_FROM_CHAT,\n\tDEBUG_VIEW_OPTION_RAW,\n\tREMOVE_BOTTOM_BORDER,\n\tSHOW_CARD_BORDER,\n\tDISABLE_HREF,\n\tINTEGRATED_CHAT_ENABLED,\n\tSEARCH_RESULTS_REGION_LABEL,\n\tSEARCH_RESULTS_LIST_LABEL\n} from \"../constants\";\nimport { NAVIGATE_TO_FULL_PAGE } from \"../actions\";\nimport replaceTranslatedValues from \"../utils/translationUtils\";\nimport getRawDisplayFields from \"../utils/rawResponseUtils\";\n\nconst view = ({\n\tsearchTerm,\n\tcorrectedSearchTerm,\n\tdata,\n\tcurrentPage,\n\tpreviousPageToken,\n\tnextPageToken,\n\tisGlobal,\n\tdispatch,\n\tisPanelView,\n\tsearchFromChat,\n\tdebugView,\n\trawSearchResultDetails,\n\tenableLabelValueTranslation,\n\ttranslatedValues,\n\tshowCardBorder,\n\tdisableHref,\n\tintegratedChatEnabled,\n\tresultsPerPage,\n\tcount\n}) => {\n\tconst hideGoToNext = isEmpty(nextPageToken);\n\tconst hideGoToPrevious = isEmpty(previousPageToken);\n\tconst updatedData = cloneDeep(data);\n\tconst lastResultIndex =\n\t\tcount == resultsPerPage ? resultsPerPage - 1 : count - 1;\n\n\tif (!isEmpty(updatedData.items)) {\n\t\tupdatedData.items.forEach(\n\t\t\t(item, index) => (\n\t\t\t\t(item.propValues[IS_GLOBAL] = isGlobal),\n\t\t\t\t(item.propValues[IS_PANEL_VIEW] = isPanelView),\n\t\t\t\t(item.propValues[SEARCH_FROM_CHAT] = searchFromChat),\n\t\t\t\t(item.propValues[SHOW_CARD_BORDER] = showCardBorder),\n\t\t\t\t(item.propValues[DISABLE_HREF] = disableHref),\n\t\t\t\t(item.propValues[INTEGRATED_CHAT_ENABLED] = integratedChatEnabled),\n\t\t\t\t!isEmpty(rawSearchResultDetails) &&\n\t\t\t\t\trawSearchResultDetails?.[index] &&\n\t\t\t\t\t(item.propValues[RAW_RESPONSE_PROP] = getRawDisplayFields(\n\t\t\t\t\t\trawSearchResultDetails[index],\n\t\t\t\t\t\titem\n\t\t\t\t\t)),\n\t\t\t\tindex === lastResultIndex &&\n\t\t\t\t\t(item.propValues[REMOVE_BOTTOM_BORDER] = showCardBorder)\n\t\t\t)\n\t\t);\n\n\t\tif (\n\t\t\tenableLabelValueTranslation &&\n\t\t\ttranslatedValues &&\n\t\t\tObject.keys(translatedValues)\n\t\t) {\n\t\t\tupdatedData.items.forEach((item, index, arr) => {\n\t\t\t\tarr[index] = replaceTranslatedValues(item, translatedValues);\n\t\t\t});\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t\"search-results-container--no-header\": true,\n\t\t\t\t\tglobal: isGlobal,\n\t\t\t\t\t\"panel-view\": searchFromChat\n\t\t\t\t}}\n\t\t\t\trole=\"region\"\n\t\t\t\taria-label={SEARCH_RESULTS_REGION_LABEL}\n\t\t\t>\n\t\t\t\t{debugView === DEBUG_VIEW_OPTION_RAW ? (\n\t\t\t\t\t<div id=\"debug-view\" />\n\t\t\t\t) : (\n\t\t\t\t\t<now-data-set\n\t\t\t\t\t\tdata={updatedData}\n\t\t\t\t\t\ttoggleView={false}\n\t\t\t\t\t\thidePaginationControls\n\t\t\t\t\t\thideFilter\n\t\t\t\t\t\tdefaultView=\"list\"\n\t\t\t\t\t\tdataBrokerIsLoading={false}\n\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\"aria-label\": SEARCH_RESULTS_LIST_LABEL\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"search-results-container--panel-footer\": isPanelView\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{isPanelView ? (\n\t\t\t\t\t\t<now-text-link\n\t\t\t\t\t\t\tlabel={VIEW_ALL_LINK}\n\t\t\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\taction: NAVIGATE_TO_FULL_PAGE,\n\t\t\t\t\t\t\t\tterm: isEmpty(correctedSearchTerm)\n\t\t\t\t\t\t\t\t\t? searchTerm\n\t\t\t\t\t\t\t\t\t: correctedSearchTerm\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ticonEnd={VIEW_ALL_LINK_ICON}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"search-results-container--pagination\": true\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<now-pagination-control\n\t\t\t\t\t\t\t\thideGoToFirst\n\t\t\t\t\t\t\t\thideGoToLast\n\t\t\t\t\t\t\t\thidePageNumbers\n\t\t\t\t\t\t\t\thidePageSizeControl\n\t\t\t\t\t\t\t\thideRange\n\t\t\t\t\t\t\t\thideGoToPrevious={hideGoToPrevious}\n\t\t\t\t\t\t\t\thideGoToNext={hideGoToNext}\n\t\t\t\t\t\t\t\tselectedPage={currentPage}\n\t\t\t\t\t\t\t\tmanageSelectedPage\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (previousPageToken) {\n\t\treturn <EmptyPageView currentPage={currentPage} dispatch={dispatch} />;\n\t}\n\n\treturn (\n\t\t<NoResultsView\n\t\t\tsearchTerm={\n\t\t\t\tisEmpty(correctedSearchTerm) ? searchTerm : correctedSearchTerm\n\t\t\t}\n\t\t\tisGlobal={isGlobal}\n\t\t\tdebugView={debugView}\n\t\t/>\n\t);\n};\n\nexport default view;\n","import \"@servicenow/now-data-set\";\nimport \"@servicenow/now-loader\";\nimport isEmpty from \"lodash/isEmpty\";\nimport \"@servicenow/now-alert\";\nimport \"@servicenow/now-text-link\";\nimport LoadingView from \"./view/LoadingView\";\nimport Header from \"./view/Header\";\nimport SearchResults from \"./view/SearchResults\";\nimport {\n\tLOADING_VIEW_RESULT_COUNT_PANEL,\n\tDISPLAY_TYPE_RESULT_DETAILS\n} from \"./constants\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\n\nconst _isEmpty = data => isEmpty(data) || isEmpty(data.items);\n\nconst view = (state, { dispatch }) => {\n\tconst {\n\t\tproperties: {\n\t\t\tisLoading,\n\t\t\tsearchResultMetadata,\n\t\t\tgeniusResults,\n\t\t\tsearchResults,\n\t\t\tcurrentPage,\n\t\t\tresultCountFontSize,\n\t\t\tspellCheckFontSize,\n\t\t\tisGlobal,\n\t\t\tfacetsButtonShown,\n\t\t\tviewAllLink,\n\t\t\tisPanelView,\n\t\t\tsearchFromChat,\n\t\t\tdebugView,\n\t\t\tenableLabelValueTranslation,\n\t\t\tsortFilters,\n\t\t\tselectedSortFilters,\n\t\t\tintegratedChatEnabled,\n\t\t\tdisableHref\n\t\t},\n\t\tisLoadingInternal,\n\t\ttranslatedValues,\n\t\tselectedSortFilterLabel,\n\t\tshowCardBorder\n\t} = state;\n\n\t// No need to pass down all_actions since we already build daClientActionContract\n\tif (!_isEmpty(searchResults)) delete searchResults.all_actions;\n\tif (!_isEmpty(geniusResults)) delete geniusResults.all_actions;\n\n\tconst {\n\t\tsearchTerm,\n\t\tcorrectedSearchTerm,\n\t\tpreviousPageToken,\n\t\tnextPageToken,\n\t\tshowResultCount,\n\t\ttotalHits,\n\t\tresultsPerPage,\n\t\tcount\n\t} = searchResultMetadata;\n\n\tconst geniusResultsExist =\n\t\t!_isEmpty(geniusResults) || searchResultMetadata.awaitingResults;\n\n\tlet rawSearchResultDetails = [];\n\tif (debugView === DISPLAY_TYPE_RESULT_DETAILS) {\n\t\trawSearchResultDetails =\n\t\t\tsearchResultMetadata?.searchResponse?.search?.searchResults;\n\t}\n\n\tconst loader = (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t\"container-loader\": true,\n\t\t\t\t\"-is-global\": isGlobal\n\t\t\t}}\n\t\t>\n\t\t\t<now-loader size=\"md\" />\n\t\t</div>\n\t);\n\n\tif (isPanelView) {\n\t\tconst panelView = (\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t\"search-results-container\": true,\n\t\t\t\t\t\"panel-view\": isPanelView\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{isLoading || isLoadingInternal ? (\n\t\t\t\t\t<LoadingView\n\t\t\t\t\t\tresultCount={LOADING_VIEW_RESULT_COUNT_PANEL}\n\t\t\t\t\t\tisPanelView={isPanelView}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<SearchResults\n\t\t\t\t\t\tsearchTerm={searchTerm}\n\t\t\t\t\t\tcorrectedSearchTerm={correctedSearchTerm}\n\t\t\t\t\t\tdata={searchResults}\n\t\t\t\t\t\tcurrentPage={currentPage}\n\t\t\t\t\t\tpreviousPageToken={previousPageToken}\n\t\t\t\t\t\tnextPageToken={nextPageToken}\n\t\t\t\t\t\tgeniusResultsExist={geniusResultsExist}\n\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\tisPanelView={isPanelView}\n\t\t\t\t\t\tdebugView={debugView}\n\t\t\t\t\t\trawSearchResultDetails={rawSearchResultDetails}\n\t\t\t\t\t\tenableLabelValueTranslation={enableLabelValueTranslation}\n\t\t\t\t\t\ttranslatedValues={translatedValues}\n\t\t\t\t\t\tsearchResultsMetadata={searchResultMetadata}\n\t\t\t\t\t\tsearchResults={searchResults}\n\t\t\t\t\t\tgeniusResults={geniusResults}\n\t\t\t\t\t\tshowCardBorder={showCardBorder}\n\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\tintegratedChatEnabled={integratedChatEnabled}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t\treturn panelView;\n\t}\n\n\tconst globalSearchResults = (\n\t\t<SearchResults\n\t\t\tsearchTerm={searchTerm}\n\t\t\tcorrectedSearchTerm={correctedSearchTerm}\n\t\t\tdata={searchResults}\n\t\t\tcurrentPage={currentPage}\n\t\t\tpreviousPageToken={previousPageToken}\n\t\t\tnextPageToken={nextPageToken}\n\t\t\tgeniusResultsExist={geniusResultsExist}\n\t\t\tisGlobal={isGlobal}\n\t\t\tdispatch={dispatch}\n\t\t\tisPanelView={isPanelView}\n\t\t\tdebugView={debugView}\n\t\t\trawSearchResultDetails={rawSearchResultDetails}\n\t\t\tenableLabelValueTranslation={enableLabelValueTranslation}\n\t\t\ttranslatedValues={translatedValues}\n\t\t\tsearchResultsMetadata={searchResultMetadata}\n\t\t\tsearchResults={searchResults}\n\t\t\tgeniusResults={geniusResults}\n\t\t\tshowCardBorder={showCardBorder}\n\t\t\tdisableHref={disableHref}\n\t\t\tintegratedChatEnabled={integratedChatEnabled}\n\t\t\tresultsPerPage={resultsPerPage}\n\t\t\tcount={count}\n\t\t/>\n\t);\n\n\t/**\n\t * showGeniusResults - see if genius results are linked or explictly set for custom case\n\t * searchFromChat - navigating to search from chat for NASS where GRs are not needed\n\t */\n\tconst globalSearchDisplay = (\n\t\t<Fragment>\n\t\t\t{isLoading ? (\n\t\t\t\tloader\n\t\t\t) : (\n\t\t\t\t<div className=\"search-results-container\">\n\t\t\t\t\t<div className=\"search-results-container-global\">\n\t\t\t\t\t\t<div className=\"wrapper-results\">\n\t\t\t\t\t\t\t{!isEmpty(searchResults.items) ? (\n\t\t\t\t\t\t\t\t<Header\n\t\t\t\t\t\t\t\t\tsearchTerm={searchTerm}\n\t\t\t\t\t\t\t\t\tcorrectedSearchTerm={correctedSearchTerm}\n\t\t\t\t\t\t\t\t\tresultCountFontSize={resultCountFontSize}\n\t\t\t\t\t\t\t\t\tspellCheckFontSize={spellCheckFontSize}\n\t\t\t\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\t\t\t\tfacetsButtonShown={facetsButtonShown}\n\t\t\t\t\t\t\t\t\tviewAllLink={viewAllLink}\n\t\t\t\t\t\t\t\t\tgeniusResults={geniusResults}\n\t\t\t\t\t\t\t\t\tresultCount={totalHits}\n\t\t\t\t\t\t\t\t\tshowResultCount={showResultCount}\n\t\t\t\t\t\t\t\t\tsortFilters={sortFilters}\n\t\t\t\t\t\t\t\t\tselectedSortFilters={selectedSortFilters}\n\t\t\t\t\t\t\t\t\tselectedSortFilterLabel={selectedSortFilterLabel}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\t\"global-results-layout\":\n\t\t\t\t\t\t\t\t\t\tisGlobal && !isEmpty(correctedSearchTerm),\n\t\t\t\t\t\t\t\t\t\"global-search\": isGlobal && isEmpty(correctedSearchTerm)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{globalSearchResults}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Fragment>\n\t);\n\n\tconst searchResultDisplay = (\n\t\t<div className=\"search-results-container\">\n\t\t\t{isLoading ? (\n\t\t\t\tloader\n\t\t\t) : (\n\t\t\t\t<div>\n\t\t\t\t\t{!isEmpty(searchResults.items) ? (\n\t\t\t\t\t\t<Header\n\t\t\t\t\t\t\tsearchTerm={searchTerm}\n\t\t\t\t\t\t\tcorrectedSearchTerm={correctedSearchTerm}\n\t\t\t\t\t\t\tresultCountFontSize={resultCountFontSize}\n\t\t\t\t\t\t\tspellCheckFontSize={spellCheckFontSize}\n\t\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\t\tresultCount={totalHits}\n\t\t\t\t\t\t\tshowResultCount={showResultCount}\n\t\t\t\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\t\t\t\tsortFilters={sortFilters}\n\t\t\t\t\t\t\tselectedSortFilters={selectedSortFilters}\n\t\t\t\t\t\t\tselectedSortFilterLabel={selectedSortFilterLabel}\n\t\t\t\t\t\t\tdebugView={debugView}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null}\n\t\t\t\t\t<SearchResults\n\t\t\t\t\t\tsearchTerm={searchTerm}\n\t\t\t\t\t\tcorrectedSearchTerm={correctedSearchTerm}\n\t\t\t\t\t\tdata={searchResults}\n\t\t\t\t\t\tcurrentPage={currentPage}\n\t\t\t\t\t\tpreviousPageToken={previousPageToken}\n\t\t\t\t\t\tnextPageToken={nextPageToken}\n\t\t\t\t\t\tgeniusResultsExist={geniusResultsExist}\n\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\tisPanelView={isPanelView}\n\t\t\t\t\t\tsearchFromChat={searchFromChat}\n\t\t\t\t\t\tdebugView={debugView}\n\t\t\t\t\t\trawSearchResultDetails={rawSearchResultDetails}\n\t\t\t\t\t\tenableLabelValueTranslation={enableLabelValueTranslation}\n\t\t\t\t\t\ttranslatedValues={translatedValues}\n\t\t\t\t\t\tsearchResultsMetadata={searchResultMetadata}\n\t\t\t\t\t\tsearchResults={searchResults}\n\t\t\t\t\t\tgeniusResults={geniusResults}\n\t\t\t\t\t\tshowCardBorder={showCardBorder}\n\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\tintegratedChatEnabled={integratedChatEnabled}\n\t\t\t\t\t\tresultsPerPage={resultsPerPage}\n\t\t\t\t\t\tcount={count}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n\n\treturn isGlobal ? globalSearchDisplay : searchResultDisplay;\n};\n\nexport default view;\n","import isEmpty from \"lodash/isEmpty\";\nimport {\n\tcontractGenerator,\n\ttransformer,\n\tEVAM\n} from \"@devsnc/sn-declarative-actions\";\n\nconst transformDAClientActionToUXEvents = declarativeActions => {\n\tif (isEmpty(declarativeActions)) return {};\n\n\treturn (\n\t\tcontractGenerator(transformer(declarativeActions), {\n\t\t\tmodelType: EVAM\n\t\t}) || {}\n\t);\n};\n\nexport default transformDAClientActionToUXEvents;\n","import GlideSignals from \"sn-signals\";\n\nconst signalTracker = {\n\ttrackEvent(eventAction, eventPriority, eventModel, config) {\n\t\tGlideSignals.trackEvent(eventAction, eventPriority, eventModel, config);\n\t}\n};\n\nexport default signalTracker;\n","import isEmpty from \"lodash/isEmpty\";\nimport { ANALYTICS_EVENTS, ANALYTICS_EVENT_INTENTS } from \"../constants\";\n\nconst _getChildEvents = model => {\n\tconst childEvents = [];\n\tconst queryIntents = isEmpty(model.matchedQueryIntents)\n\t\t? []\n\t\t: model.matchedQueryIntents.split(\",\");\n\tconst geniusResultIntents = isEmpty(model.matchedGeniusResultIntents)\n\t\t? []\n\t\t: model.matchedGeniusResultIntents.split(\",\");\n\n\tgeniusResultIntents.forEach(intent =>\n\t\tchildEvents.push({\n\t\t\tEventName: ANALYTICS_EVENT_INTENTS.GENIUS_RESULT_TRIGGERED,\n\t\t\tEventPayload: {\n\t\t\t\t\"Search Query\": model.searchTerm,\n\t\t\t\t\"Triggered Intent\": intent\n\t\t\t}\n\t\t})\n\t);\n\n\tqueryIntents.forEach(intent =>\n\t\tchildEvents.push({\n\t\t\tEventName: ANALYTICS_EVENT_INTENTS.QUERY_INTENT_TRIGGERED,\n\t\t\tEventPayload: {\n\t\t\t\t\"Search Query\": model.searchTerm,\n\t\t\t\t\"Triggered Intent\": intent\n\t\t\t}\n\t\t})\n\t);\n\n\treturn childEvents;\n};\n\nexport const getSearchAnalyticsModel = model => {\n\tconst analyticsPayload = {\n\t\tparentEvent: {\n\t\t\tEventName: ANALYTICS_EVENTS.SEARCH_START,\n\t\t\tEventPayload: {\n\t\t\t\t\"Search Query\": model.searchTerm,\n\t\t\t\t\"Response Time\": model.responseTimeInMs,\n\t\t\t\t\"Query Language\": model.queryLanguage,\n\t\t\t\t\"Triggered Genius Results\": JSON.stringify(model.triggeredGeniusResults)\n\t\t\t}\n\t\t},\n\t\tchildEvents: _getChildEvents(model)\n\t};\n\n\treturn analyticsPayload;\n};\n\nexport const getSearchResultAnalyticsModel = model => {\n\tconst analyticsPayload = {\n\t\tparentEvent: {\n\t\t\tEventName: ANALYTICS_EVENTS.SEARCH_RESULT_CLICK,\n\t\t\tEventPayload: {\n\t\t\t\t\"Search Query\": model.searchTerm,\n\t\t\t\t\"Click Position\": parseInt(model.selectedResultIndex, 10),\n\t\t\t\t\"Doc Id\": model.aisDocId,\n\t\t\t\t\"Document Title\": model.label,\n\t\t\t\t\"Data Source Name\": model.sourceTable\n\t\t\t}\n\t\t},\n\t\tchildEvents: _getChildEvents(model)\n\t};\n\n\treturn analyticsPayload;\n};\n\nexport const getGeniusResultAnalyticsModel = model => {\n\tconst analyticsPayload = {\n\t\tparentEvent: {\n\t\t\tEventName: ANALYTICS_EVENTS.GENIUS_RESULT_CLICK,\n\t\t\tEventPayload: {\n\t\t\t\t\"Search Query\": model.searchTerm,\n\t\t\t\t\"Genius Type\": model.cardType,\n\t\t\t\t\"Genius Result Doc Id\": model.aisDocId,\n\t\t\t\t\"Genius Result Title\": model.labelDescription,\n\t\t\t\t\"Clicked Action Label\": model.actionName,\n\t\t\t\t\"Clicked Action Label Id\": model.actionId\n\t\t\t}\n\t\t},\n\t\tchildEvents: _getChildEvents(model)\n\t};\n\n\treturn analyticsPayload;\n};\n\nexport const getGeniusResultFeedbackModel = model => {\n\tconst analyticsPayload = {\n\t\tparentEvent: {\n\t\t\tEventName: ANALYTICS_EVENTS.GENIUS_RESULT_FEEDBACK_CLICK,\n\t\t\tEventPayload: {\n\t\t\t\t\"Search Query\": model.searchTerm,\n\t\t\t\t\"Genius Type\": model.cardType,\n\t\t\t\t\"Genius Result Doc Id\": model.aisDocId,\n\t\t\t\t\"Genius Result Title\": model.labelDescription,\n\t\t\t\t\"Clicked Action Label\": model.actionName,\n\t\t\t\t\"Clicked Action Label Id\": model.actionId\n\t\t\t}\n\t\t},\n\t\tchildEvents: []\n\t};\n\n\treturn analyticsPayload;\n};\n","import isEmpty from \"lodash/isEmpty\";\nimport isEqual from \"lodash/isEqual\";\nimport { createGraphQLEffect } from \"@servicenow/ui-effect-graphql\";\nimport { get } from \"lodash\";\n\nimport {\n\tSEARCH_RESULTS_PAGINATION_BUTTON_CLICKED,\n\tTERM_SEARCHED,\n\tSEARCH_EXECUTED,\n\tSEARCH_RESULTS_DECLARATIVE_ACTION,\n\tSEARCH_RESULTS_SEARCH_START,\n\tSEARCH_RESULTS_FEEDBACK_CLICKED,\n\tSEARCH_RESULTS_COLLAPSED_ATTCHMENT_CLICKED,\n\tEXTERNAL_URL_NAVIGATION,\n\tNAVIGATE_TO_FULL_PAGE,\n\tSEARCH_RESULTS_NAVIGATE_TO_FULL_PAGE,\n\tLABEL_VALUE_TRANSLATION_STARTED,\n\tTRANSLATION_FETCH_STARTED,\n\tTRANSLATION_FETCH_SUCCEEDED,\n\tTRANSLATION_FETCH_FAILED,\n\tREQUEST_TRANSLATED_LABEL_VALUES,\n\tCHAT_TRIGGERED,\n\tSORT_FILTER_ITEM_SELECTED,\n\tDEBUG_VIEW_ITEM_SELECTED,\n\tFETCH_SYS_PROP_STARTED,\n\tFETCH_SYS_PROP_SUCCEEDED,\n\tFETCH_SYS_PROP_FAILED\n} from \"./actions\";\n\nimport signalTracker from \"./utils/signalTracker\";\nimport {\n\tSEARCH_EVENT,\n\tSEARCH_RESULT_EVENT,\n\tGENIUS_RESULT_EVENT,\n\tSEARCH_FACET_EVENT,\n\tSEARCH_PAGINATION_EVENT,\n\tSEARCH_SORT_EVENT,\n\tINFO_EVENT,\n\tCLICK_ACTION,\n\tRIGHT_CLICK_ACTION,\n\tGENIUS_RESULT_VIRTUAL_TABLE,\n\tDECLARATIVE_ACTION_CLICK,\n\tOPEN_IN_NEW_TAB,\n\tCATALOG_SOURCE_TABLE,\n\tSHAREPOINT_EXTERNAL_TABLE,\n\tUSER_SOURCE_TABLE,\n\tKNOWLEDGE_SOURCE_TABLE,\n\tPOSITIVE_FEEDBACK_TYPE,\n\tNEGATIVE_FEEDBACK_TYPE,\n\tFEEDBACK_ACTION_TYPE,\n\tCATALOG_INTENT,\n\tUSER_INTENT,\n\tKNOWLEDGE_GENIUS_CARD,\n\tPEOPLE_GENIUS_CARD,\n\tCATALOG_GENIUS_CARD,\n\tSYS_ATTACHMENT,\n\tNAVIGATE_TO_LIST_VIEW,\n\tRESULT_TYPES,\n\tHIGHLIGHT_REGEX,\n\tNLQ_ACTION_TYPE,\n\tNLQ_VIEW_FULL_TABLE_TYPE,\n\tDELEGATED_ACTION_TYPES,\n\tTRANSLATION_QUERY,\n\tCHAT_INTENTION,\n\tREGULAR_SEARCH,\n\tRELEVANCY_SORT_ID_NUMERIC,\n\tSHOW_RESULT_CARD_BORDER_SYS_PROP_QUERY,\n\tSYS_PROP_QUERY_PATH,\n\tSHOW_RESULT_CARD_BORDER_SYS_PROP,\n\tRIGHT_CLICK\n} from \"./constants\";\n\nimport {\n\tgetSearchAnalyticsModel,\n\tgetSearchResultAnalyticsModel,\n\tgetGeniusResultAnalyticsModel,\n\tgetGeniusResultFeedbackModel\n} from \"./utils/analyticsModel\";\n\nconst _getPaginationToken = (\n\tcurrentPage,\n\tupdatedPage,\n\tpreviousToken,\n\tnextToken\n) => {\n\tif (currentPage > updatedPage) return previousToken;\n\treturn nextToken;\n};\n\nexport const handlePaginationButtonClick = ({\n\taction,\n\tdispatch,\n\tproperties,\n\tupdateState\n}) => {\n\tconst {\n\t\tsearchResultMetadata: { previousPageToken, nextPageToken },\n\t\tcurrentPage\n\t} = properties;\n\n\tconst {\n\t\tpayload: { value }\n\t} = action;\n\n\t// if pagination button is clicked and value is 0 - that means the target page is first\n\tupdateState({ isFirstPage: value === 0, isLoadingInternal: true });\n\n\tdispatch(SEARCH_RESULTS_PAGINATION_BUTTON_CLICKED, {\n\t\tpaginationToken: _getPaginationToken(\n\t\t\tcurrentPage,\n\t\t\tvalue,\n\t\t\tpreviousPageToken,\n\t\t\tnextPageToken\n\t\t)\n\t});\n};\n\nconst _getLabelDescription = model => {\n\tconst defaultToModelNameTableSourceCondition =\n\t\tisEqual(model.table, CATALOG_SOURCE_TABLE) ||\n\t\tisEqual(model.table, SHAREPOINT_EXTERNAL_TABLE);\n\n\tlet label = defaultToModelNameTableSourceCondition\n\t\t? model.name\n\t\t: model.short_description ||\n\t\t  model.description ||\n\t\t  model.name ||\n\t\t  model.file_name ||\n\t\t  \"\";\n\n\tif (label && HIGHLIGHT_REGEX.test(label)) {\n\t\tlabel = label.replace(HIGHLIGHT_REGEX, \"\");\n\t}\n\n\t// When the teaser is used, it can have HTML encoded special characters for &, <, and >\n\tif (model.ai_search_teaser_title && !defaultToModelNameTableSourceCondition) {\n\t\tlabel = model.ai_search_teaser_title\n\t\t\t.replace(HIGHLIGHT_REGEX, \"\")\n\t\t\t.replace(/&amp;/g, \"&\")\n\t\t\t.replace(/&lt;/g, \"<\")\n\t\t\t.replace(/&gt;/g, \">\");\n\t}\n\n\treturn label;\n};\n\nconst _getGeniusResultSourceTable = model =>\n\tmodel[\"columns.table\"] != null ? model[\"columns.table\"] : model.table;\n\nconst _getGeniusResultLabel = model =>\n\tmodel[\"columns.ai_search_teaser_title\"] ||\n\tmodel[\"columns.name\"] ||\n\tmodel[\"columns.label\"];\n\nconst _getGeniusResultIndex = (model, properties) => {\n\tconst { geniusResults } = properties;\n\tconst grIndex = geniusResults.items.findIndex(geniusResult => {\n\t\tvar sysId = model.sysId != undefined ? model.sysId : model.sys_id;\n\t\treturn geniusResult.propValues.model.sys_id == sysId;\n\t});\n\treturn grIndex + 1;\n};\n\nconst _getDocumentIndex = (model, properties) => {\n\tif (!isEmpty(model.document_index)) return Number(model.document_index);\n\n\tconst { searchResultMetadata, searchResults } = properties;\n\tconst { resultsPerPage, currentPage } = searchResultMetadata;\n\tconst resultIndexOnPage = searchResults.items.findIndex(searchResult => {\n\t\treturn searchResult.propValues.model.sys_id == model.sys_id;\n\t});\n\tconst previousPageResultCount = resultsPerPage * currentPage;\n\treturn previousPageResultCount + resultIndexOnPage + 1; // +1 b/c resultIndexOnPage is a 0-based index\n};\n\n// Returns the index of the model in the searchResults array, irrespective of pagination\nconst _getResultIndexOnPage = (model, properties) => {\n\tconst { searchResults } = properties;\n\treturn searchResults.items.findIndex(searchResult => {\n\t\treturn searchResult.propValues.model.sys_id == model.sys_id;\n\t});\n};\n\n// Returns all vaEvamItems from the searchResults object to be sent on click of chat\nconst _getVAEvamItems = properties => {\n\tconst { searchResults } = properties;\n\tlet items = [];\n\tif (!isEmpty(searchResults?.items)) {\n\t\titems = searchResults.items.map(result => {\n\t\t\treturn result.vaEvamItem;\n\t\t});\n\t\treturn items;\n\t}\n};\n\nconst _generateCoreEventMetadata = (action, properties) => {\n\tconst { searchResultMetadata, searchContextConfigId } = properties;\n\tconst {\n\t\tpayload: { model, type }\n\t} = action;\n\n\tconst typeOfAction = type ? type : model.type;\n\n\tconst {\n\t\tsearchTerm,\n\t\tcorrectedSearchTerm,\n\t\tmatchedQueryIntents,\n\t\tmatchedGeniusResultIntents\n\t} = searchResultMetadata;\n\n\tconst useLegacySignalTracking = isEmpty(\n\t\tsearchResultMetadata.searchAnalyticsPayload\n\t);\n\n\tconst searchAnalyticsPayload = !useLegacySignalTracking\n\t\t? searchResultMetadata.searchAnalyticsPayload\n\t\t: {};\n\n\tconst fromSearchResultsContainer = true;\n\tconst resultSysId = model.sysId || \"\";\n\tconst number = model.number || \"\";\n\tconst queryTerm = !isEmpty(correctedSearchTerm)\n\t\t? correctedSearchTerm\n\t\t: searchTerm;\n\n\tlet sourceTable = \"\";\n\tlet labelDescription = \"\";\n\tlet aisDocId = \"\";\n\tlet cardType = \"\";\n\n\tif (model) {\n\t\tsourceTable = _getGeniusResultSourceTable(model);\n\t\tlabelDescription = _getGeniusResultLabel(model);\n\t\taisDocId = model.aisDocId || sourceTable.concat(\"_\", model.sysId);\n\n\t\tcardType = model.model || \"\"; // Model is the type of the Genius Card Template\n\t}\n\treturn {\n\t\tsearchResultMetadata,\n\t\tsearchContextConfigId,\n\t\tmodel,\n\t\ttype: typeOfAction,\n\t\tsearchTerm,\n\t\tqueryTerm,\n\t\tappliedFacetFilters: useLegacySignalTracking\n\t\t\t? []\n\t\t\t: searchAnalyticsPayload.appliedFacetFilters,\n\t\tappliedFilterIds: useLegacySignalTracking\n\t\t\t? []\n\t\t\t: searchAnalyticsPayload.appliedFilterIds,\n\t\tappliedSortOptionId: useLegacySignalTracking\n\t\t\t? []\n\t\t\t: searchAnalyticsPayload.appliedSortOptionId,\n\t\tmatchedQueryIntents,\n\t\tmatchedGeniusResultIntents,\n\t\tfromSearchResultsContainer,\n\t\tresultSysId,\n\t\tnumber,\n\t\tsourceTable,\n\t\tlabelDescription,\n\t\taisDocId,\n\t\tcardType,\n\t\tuserId: useLegacySignalTracking ? \"\" : searchAnalyticsPayload.userId,\n\t\tsessionId: useLegacySignalTracking ? \"\" : searchAnalyticsPayload.sessionId,\n\t\tuseLegacySignalTracking,\n\t\tsearchAnalyticsPayload\n\t};\n};\n\nconst _getResultsModel = (searchResults, geniusResults) => {\n\tlet searchResultsModel = [];\n\tlet geniusResultsModel = [];\n\tconst _resultsModel = (results, resultType) =>\n\t\tresults.map(({ propValues: { model } }) => ({\n\t\t\trecordId: model.sysId,\n\t\t\ttableName: model[\"columns.table\"] || model.table,\n\t\t\tresultType,\n\t\t\t...(resultType === RESULT_TYPES.GENIUS_RESULT && {\n\t\t\t\tcardType: model.model\n\t\t\t})\n\t\t}));\n\tif (!isEmpty(geniusResults)) {\n\t\tgeniusResultsModel = _resultsModel(\n\t\t\tgeniusResults,\n\t\t\tRESULT_TYPES.GENIUS_RESULT\n\t\t);\n\t}\n\tif (!isEmpty(searchResults)) {\n\t\tsearchResultsModel = _resultsModel(\n\t\t\tsearchResults,\n\t\t\tRESULT_TYPES.REGULAR_RESULT\n\t\t);\n\t}\n\treturn [...geniusResultsModel, ...searchResultsModel];\n};\n\nconst _getSourceOccurrences = searchResults => {\n\tconst results = {};\n\tif (!isEmpty(searchResults)) {\n\t\tsearchResults.forEach(item => {\n\t\t\tconst {\n\t\t\t\tpropValues: { model }\n\t\t\t} = item;\n\t\t\tconst { table } = model;\n\t\t\tresults[table] = (results[table] || 0) + 1;\n\t\t});\n\t}\n\treturn results;\n};\n\nconst _getSearchResultsPerSource = searchResults => {\n\tlet resultsPerSource = [];\n\tif (!isEmpty(searchResults)) {\n\t\tconst sources = _getSourceOccurrences(searchResults);\n\t\tresultsPerSource = Object.keys(sources).map(key => ({\n\t\t\tsourceId: key,\n\t\t\tnumberOfResults: sources[key]\n\t\t}));\n\t}\n\treturn resultsPerSource;\n};\n\nconst _getIntentsBySource = (sourceTable, matchedGeniusResultIntents) => {\n\tconst intents = !isEmpty(matchedGeniusResultIntents)\n\t\t? matchedGeniusResultIntents.split(\",\")\n\t\t: [];\n\n\tlet matchedIntentsPerSource = \"\";\n\tintents.forEach(intent => {\n\t\tif (sourceTable === CATALOG_SOURCE_TABLE && intent.includes(\"catalog\")) {\n\t\t\tmatchedIntentsPerSource = CATALOG_INTENT;\n\t\t} else if (sourceTable === USER_SOURCE_TABLE && intent.includes(\"person\")) {\n\t\t\tmatchedIntentsPerSource = USER_INTENT;\n\t\t}\n\t});\n\n\treturn matchedIntentsPerSource;\n};\n\nconst _getCardCount = (results, source, type) => {\n\tlet cardCount = 0;\n\tif (!isEmpty(results)) {\n\t\tcardCount = results\n\t\t\t.map(({ propValues: { model } }) => ({\n\t\t\t\ttableName: model[\"columns.table\"],\n\t\t\t\tcardType: model.model\n\t\t\t}))\n\t\t\t.filter(\n\t\t\t\tresult => result.tableName === source && result.cardType.includes(type)\n\t\t\t).length;\n\t}\n\n\treturn cardCount;\n};\n\nconst getExternalURLFromModel = geniusResults => {\n\tlet url = \"\";\n\n\tgeniusResults.items.forEach(item => {\n\t\tconst {\n\t\t\tpropValues: { model }\n\t\t} = item;\n\t\tif (isEqual(get(model, \"columns.source_type\", \"\"), \"external\")) {\n\t\t\turl = model[\"columns.url\"];\n\t\t}\n\t});\n\treturn url;\n};\n\nconst _trackGeniusResultEvent = (\n\taction,\n\tdispatch,\n\tmodel,\n\tproperties,\n\tfromSearchResultsContainer,\n\tisFeedback = false,\n\tcustomValues = {}\n) => {\n\tconst eventMetadata = _generateCoreEventMetadata(action, properties);\n\tconst {\n\t\tsearchContextConfigId,\n\t\tqueryTerm,\n\t\tappliedFacetFilters,\n\t\tappliedFilterIds,\n\t\tappliedSortOptionId,\n\t\tresultSysId,\n\t\ttableType,\n\t\tnumber,\n\t\tlabelDescription,\n\t\tsourceTable,\n\t\taisDocId,\n\t\tcardType,\n\t\tuserId,\n\t\tsessionId,\n\t\tuseLegacySignalTracking\n\t} = eventMetadata;\n\n\tconst {\n\t\tsearchResultMetadata: { matchedQueryIntents, matchedGeniusResultIntents }\n\t} = properties;\n\n\tconst actionPayload = action.payload.action;\n\tconst actionValues =\n\t\tactionPayload && actionPayload.actionType\n\t\t\t? {\n\t\t\t\t\tactionType: actionPayload.actionType,\n\t\t\t\t\tactionId: actionPayload.assignmentId,\n\t\t\t\t\tactionValue: actionPayload.label\n\t\t\t  }\n\t\t\t: {};\n\n\tconst matchedIntentsPerSource = _getIntentsBySource(\n\t\tsourceTable,\n\t\tmatchedGeniusResultIntents\n\t);\n\n\tconst geniusResultClickRank = action.payload.geniusResultClickRank\n\t\t? action.payload.geniusResultClickRank\n\t\t: _getGeniusResultIndex(model, properties);\n\tconst geniusResultConfigId = model.ais_genius_config_id;\n\tlet signalsPayload = {\n\t\tsearchContextConfigId,\n\t\tqueryTerm,\n\t\tresultSysId,\n\t\ttableType,\n\t\tnumber,\n\t\tlabelDescription,\n\t\tsourceTable,\n\t\taisDocId,\n\t\tcardType,\n\t\tmatchedIntentsPerSource,\n\t\tgeniusResultClickRank,\n\t\tgeniusResultConfigId,\n\t\t...actionValues,\n\t\t...customValues\n\t};\n\n\tif (!useLegacySignalTracking) {\n\t\tsignalsPayload = {\n\t\t\t...signalsPayload,\n\t\t\tappliedFacetFilters,\n\t\t\tappliedFilterIds,\n\t\t\tappliedSortOptionId,\n\t\t\tuserId,\n\t\t\tsessionId\n\t\t};\n\t}\n\n\tconst baseAnalyticsPayload = {\n\t\t...signalsPayload,\n\t\tsearchTerm: queryTerm\n\t};\n\n\tif (matchedQueryIntents) {\n\t\tbaseAnalyticsPayload.matchedQueryIntents = matchedQueryIntents;\n\t}\n\n\tif (baseAnalyticsPayload.actionValue) {\n\t\tbaseAnalyticsPayload.actionName = baseAnalyticsPayload.actionValue;\n\t}\n\n\tconst analyticsPayload = isFeedback\n\t\t? getGeniusResultFeedbackModel(baseAnalyticsPayload)\n\t\t: getGeniusResultAnalyticsModel(baseAnalyticsPayload);\n\n\tconst finalPayload = {\n\t\t...action.payload,\n\t\tanalyticsPayload,\n\t\tfromSearchResultsContainer\n\t};\n\n\tsignalTracker.trackEvent(GENIUS_RESULT_EVENT, INFO_EVENT, signalsPayload, {\n\t\tdelay: 0,\n\t\trequirePreceedingEventCompletion: true,\n\t\tcallback: () => dispatch(SEARCH_RESULTS_DECLARATIVE_ACTION, finalPayload),\n\t\ttrackAsync: true\n\t});\n};\n\nconst _trackSearchEventForRelevancy = model => {\n\tconst {\n\t\tsearchContextConfigId,\n\t\tqueryTerm,\n\t\tgeniusResults,\n\t\tsearchResults,\n\t\tmatchedQueryIntents,\n\t\tresponseTimeInMs,\n\t\tqueryLanguage,\n\t\tnumberOfQAGeniusResults,\n\t\tnumberOfPeopleGeniusResults,\n\t\tnumberOfCatalogGeniusResults,\n\t\tsearchAnalyticsPayload\n\t} = model;\n\n\tif (isEmpty(searchAnalyticsPayload)) {\n\t\tconst hasSearchResults = !isEmpty(searchResults);\n\t\tconst hasGeniusResults = !isEmpty(geniusResults);\n\n\t\tconst payload = {\n\t\t\tsearchContextConfigId,\n\t\t\tqueryTerm,\n\t\t\tsearchResults: _getResultsModel(\n\t\t\t\tsearchResults ? searchResults.items : [],\n\t\t\t\tgeniusResults ? geniusResults.items : []\n\t\t\t),\n\t\t\tsearchResultsPerSource: _getSearchResultsPerSource(\n\t\t\t\tsearchResults ? searchResults.items : []\n\t\t\t),\n\t\t\tmatchedQueryIntents: matchedQueryIntents || \"\",\n\t\t\tresponseTimeInMs,\n\t\t\thasSearchResults,\n\t\t\thasGeniusResults,\n\t\t\tqueryLanguage: queryLanguage || \"en\",\n\t\t\tnumberOfQAGeniusResults,\n\t\t\tnumberOfPeopleGeniusResults,\n\t\t\tnumberOfCatalogGeniusResults\n\t\t};\n\n\t\tsignalTracker.trackEvent(SEARCH_EVENT, INFO_EVENT, payload);\n\t} else if (\n\t\tsearchAnalyticsPayload.logSignals ||\n\t\t!(\"logSignals\" in searchAnalyticsPayload)\n\t) {\n\t\tsignalTracker.trackEvent(SEARCH_EVENT, INFO_EVENT, searchAnalyticsPayload);\n\t}\n};\n\nconst _trackSearchEventForAppsee = (dispatch, model) => {\n\tconst {\n\t\tqueryTerm,\n\t\tmatchedQueryIntents,\n\t\tmatchedGeniusResultIntents,\n\t\tresponseTimeInMs,\n\t\tqueryLanguage,\n\t\tnumberOfQAGeniusResults,\n\t\tnumberOfPeopleGeniusResults,\n\t\tnumberOfCatalogGeniusResults\n\t} = model;\n\n\tconst triggeredGeniusResults = {\n\t\tQA: numberOfQAGeniusResults,\n\t\tPeople: numberOfPeopleGeniusResults,\n\t\tCatalog: numberOfCatalogGeniusResults\n\t};\n\n\tconst analyticsPayload = getSearchAnalyticsModel({\n\t\tsearchTerm: queryTerm,\n\t\tmatchedQueryIntents,\n\t\tmatchedGeniusResultIntents,\n\t\tresponseTimeInMs,\n\t\tqueryLanguage,\n\t\ttriggeredGeniusResults\n\t});\n\n\tdispatch(SEARCH_RESULTS_SEARCH_START, { analyticsPayload });\n};\nexport const generateModelDataAndTrackSearchEvent = ({\n\tproperties,\n\tdispatch\n}) => {\n\tconst {\n\t\tsearchResultMetadata: {\n\t\t\tsearchTerm,\n\t\t\tcorrectedSearchTerm,\n\t\t\tmatchedQueryIntents,\n\t\t\tmatchedGeniusResultIntents,\n\t\t\tresponseTimeInMs,\n\t\t\tqueryLanguage,\n\t\t\tsearchAnalyticsPayload\n\t\t},\n\t\tsearchContextConfigId,\n\t\tgeniusResults,\n\t\tsearchResults\n\t} = properties;\n\n\tconst queryTerm = !isEmpty(correctedSearchTerm)\n\t\t? correctedSearchTerm\n\t\t: searchTerm;\n\n\tconst numberOfQAGeniusResults = geniusResults\n\t\t? _getCardCount(\n\t\t\t\tgeniusResults.items,\n\t\t\t\tKNOWLEDGE_SOURCE_TABLE,\n\t\t\t\tKNOWLEDGE_GENIUS_CARD\n\t\t  )\n\t\t: 0;\n\tconst numberOfPeopleGeniusResults = geniusResults\n\t\t? _getCardCount(geniusResults.items, USER_SOURCE_TABLE, PEOPLE_GENIUS_CARD)\n\t\t: 0;\n\tconst numberOfCatalogGeniusResults = geniusResults\n\t\t? _getCardCount(\n\t\t\t\tgeniusResults.items,\n\t\t\t\tCATALOG_SOURCE_TABLE,\n\t\t\t\tCATALOG_GENIUS_CARD\n\t\t  )\n\t\t: 0;\n\n\t_trackSearchEventForRelevancy({\n\t\tqueryTerm,\n\t\tsearchContextConfigId,\n\t\tsearchResults,\n\t\tgeniusResults,\n\t\tmatchedQueryIntents,\n\t\tresponseTimeInMs,\n\t\tqueryLanguage,\n\t\tnumberOfQAGeniusResults,\n\t\tnumberOfPeopleGeniusResults,\n\t\tnumberOfCatalogGeniusResults,\n\t\tsearchAnalyticsPayload\n\t});\n\n\t_trackSearchEventForAppsee(dispatch, {\n\t\tqueryTerm,\n\t\tmatchedQueryIntents,\n\t\tmatchedGeniusResultIntents,\n\t\tresponseTimeInMs,\n\t\tqueryLanguage,\n\t\tnumberOfQAGeniusResults,\n\t\tnumberOfPeopleGeniusResults,\n\t\tnumberOfCatalogGeniusResults\n\t});\n};\n\nexport const handleResultActionClick = ({ action, dispatch, properties }) => {\n\tconst eventMetadata = _generateCoreEventMetadata(action, properties);\n\tconst {\n\t\ttype,\n\t\tmodel,\n\t\tsearchContextConfigId,\n\t\tqueryTerm,\n\t\tresultSysId,\n\t\ttableType = \"\",\n\t\tnumber,\n\t\tmatchedQueryIntents,\n\t\tmatchedGeniusResultIntents,\n\t\tfromSearchResultsContainer,\n\t\tappliedFacetFilters,\n\t\tappliedFilterIds,\n\t\tappliedSortOptionId,\n\t\taisDocId,\n\t\tsourceTable,\n\t\tuserId,\n\t\tsessionId,\n\t\tuseLegacySignalTracking\n\t} = eventMetadata;\n\n\tif (!action.payload.fromSearchResultsContainer) {\n\t\tif (isEqual(model.table, GENIUS_RESULT_VIRTUAL_TABLE)) {\n\t\t\t_trackGeniusResultEvent(\n\t\t\t\taction,\n\t\t\t\tdispatch,\n\t\t\t\tmodel,\n\t\t\t\tproperties,\n\t\t\t\tfromSearchResultsContainer\n\t\t\t);\n\t\t} else if (\n\t\t\tisEqual(type, DECLARATIVE_ACTION_CLICK) ||\n\t\t\tisEqual(type, OPEN_IN_NEW_TAB) ||\n\t\t\tisEqual(type, RIGHT_CLICK)\n\t\t) {\n\t\t\tconst sourceUrl = model.url || \"\";\n\t\t\tconst label = _getLabelDescription(model);\n\n\t\t\tconst selectedResultIndex = useLegacySignalTracking\n\t\t\t\t? Number(model.document_index || 0)\n\t\t\t\t: _getDocumentIndex(model, properties);\n\n\t\t\tconst { payload } = action;\n\t\t\tlet {\n\t\t\t\taction: { name, actionDispatch, actionPayload, assignmentId }\n\t\t\t} = payload;\n\n\t\t\tlet parentTable = \"\";\n\t\t\tlet parentSysId = \"\";\n\n\t\t\t// update result click payload for attachment table\n\t\t\tif (sourceTable === SYS_ATTACHMENT) {\n\t\t\t\tparentSysId = model.parent_sys_id;\n\t\t\t\tparentTable = model.parent_table;\n\t\t\t\tactionPayload = {\n\t\t\t\t\t...actionPayload,\n\t\t\t\t\tparentTable,\n\t\t\t\t\tparentSysId\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst actionData = {\n\t\t\t\tactionName: name,\n\t\t\t\tactionDispatched: actionDispatch,\n\t\t\t\tactionAssignmentId: assignmentId,\n\t\t\t\tactionPayload,\n\t\t\t\thref: payload?.action?.href\n\t\t\t};\n\n\t\t\t// To Track Analytics through Service Portal\n\t\t\tconst analyticsPayload = getSearchResultAnalyticsModel({\n\t\t\t\tsearchTerm: queryTerm,\n\t\t\t\tsearchContextConfigId,\n\t\t\t\taisDocId,\n\t\t\t\tlabel,\n\t\t\t\tsourceTable,\n\t\t\t\tselectedResultIndex,\n\t\t\t\tmatchedQueryIntents,\n\t\t\t\tmatchedGeniusResultIntents\n\t\t\t});\n\n\t\t\tconst searchResultActionPayload = {\n\t\t\t\t...action.payload,\n\t\t\t\tanalyticsPayload,\n\t\t\t\tfromSearchResultsContainer,\n\t\t\t\topenInNewTab: isEqual(type, OPEN_IN_NEW_TAB),\n\t\t\t\ttitle: label\n\t\t\t};\n\n\t\t\tsignalTracker.trackEvent(\n\t\t\t\tSEARCH_RESULT_EVENT,\n\t\t\t\tINFO_EVENT,\n\t\t\t\t{\n\t\t\t\t\tsearchContextConfigId,\n\t\t\t\t\tqueryTerm,\n\t\t\t\t\tappliedFacetFilters,\n\t\t\t\t\tappliedFilterIds,\n\t\t\t\t\tappliedSortOptionId,\n\t\t\t\t\tresultSysId,\n\t\t\t\t\ttableType,\n\t\t\t\t\tnumber,\n\t\t\t\t\tlabelDescription: label,\n\t\t\t\t\tsourceTable,\n\t\t\t\t\tsourceUrl,\n\t\t\t\t\tsignalType: isEqual(type, RIGHT_CLICK)\n\t\t\t\t\t\t? RIGHT_CLICK_ACTION\n\t\t\t\t\t\t: CLICK_ACTION,\n\t\t\t\t\tsignalValue: selectedResultIndex,\n\t\t\t\t\taisDocId,\n\t\t\t\t\tactionData,\n\t\t\t\t\tuserId,\n\t\t\t\t\tsessionId\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdelay: 0,\n\t\t\t\t\trequirePreceedingEventCompletion: true,\n\t\t\t\t\tcallback: () =>\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tSEARCH_RESULTS_DECLARATIVE_ACTION,\n\t\t\t\t\t\t\tsearchResultActionPayload\n\t\t\t\t\t\t),\n\t\t\t\t\ttrackAsync: true\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tdispatch(SEARCH_RESULTS_DECLARATIVE_ACTION, action.payload);\n\t\t}\n\t}\n};\n\nexport const handleTextLinkClicked = ({ action, dispatch }) => {\n\tconst { payload } = action;\n\n\tif (payload.action === TERM_SEARCHED) {\n\t\tdispatch(SEARCH_EXECUTED, { searchTerm: payload.term });\n\t} else if (payload.action === EXTERNAL_URL_NAVIGATION) {\n\t\tdispatch(EXTERNAL_URL_NAVIGATION, payload);\n\t} else if (payload.action === NAVIGATE_TO_FULL_PAGE) {\n\t\tdispatch(SEARCH_RESULTS_NAVIGATE_TO_FULL_PAGE, {\n\t\t\tsearchTerm: payload.term\n\t\t});\n\t} else {\n\t\tconsole.warn(\"Unknown event type for NOW_TEXT_LINK_CLICKED\");\n\t}\n};\n\nexport const handleDropdownItemClick = ({ action, dispatch }) => {\n\tconst { payload } = action;\n\tdispatch(SEARCH_RESULTS_FEEDBACK_CLICKED, payload);\n};\n\nexport const handlePropertyChanged = ({\n\taction,\n\tdispatch,\n\tproperties,\n\tupdateState\n}) => {\n\tconst {\n\t\tpayload: { name, value, previousValue }\n\t} = action;\n\n\tswitch (name) {\n\t\tcase \"searchResultMetadata\": {\n\t\t\tconst {\n\t\t\t\tsearchResultMetadata: {\n\t\t\t\t\tsearchTerm,\n\t\t\t\t\tnextPageToken,\n\t\t\t\t\tpreviousPageToken,\n\t\t\t\t\tcurrentPage,\n\t\t\t\t\tsearchAnalyticsPayload\n\t\t\t\t}\n\t\t\t} = properties;\n\n\t\t\tif (isEmpty(searchTerm)) return;\n\n\t\t\t/*\n\t\t\t * Tracks Auto-corrected Search Event when the user types a misspelled word (or)\n\t\t\t * Tracks the Search Event for the Search term entered by the user\n\t\t\t */\n\t\t\tif (\n\t\t\t\t!isEqual(value.searchTerm, previousValue.searchTerm) ||\n\t\t\t\t(isEqual(value.searchTerm, previousValue.searchTerm) &&\n\t\t\t\t\t!isEqual(\n\t\t\t\t\t\tvalue.correctedSearchTerm,\n\t\t\t\t\t\tpreviousValue.correctedSearchTerm\n\t\t\t\t\t))\n\t\t\t) {\n\t\t\t\tgenerateModelDataAndTrackSearchEvent({ properties, dispatch });\n\t\t\t} else if (\n\t\t\t\t!isEqual(\n\t\t\t\t\tsearchAnalyticsPayload?.appliedFacetFilters,\n\t\t\t\t\tpreviousValue.searchAnalyticsPayload?.appliedFacetFilters\n\t\t\t\t) ||\n\t\t\t\t!isEqual(\n\t\t\t\t\tsearchAnalyticsPayload?.appliedFilterIds,\n\t\t\t\t\tpreviousValue.searchAnalyticsPayload?.appliedFilterIds\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\ttrackFacetEvent({ properties });\n\t\t\t} else if (\n\t\t\t\t!isEqual(\n\t\t\t\t\tsearchAnalyticsPayload?.appliedSortOptionId,\n\t\t\t\t\tpreviousValue.searchAnalyticsPayload?.appliedSortOptionId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\ttrackSortEvent({ properties });\n\t\t\t} else if (\n\t\t\t\t!isEqual(nextPageToken, previousValue.nextPageToken) &&\n\t\t\t\t!isEmpty(previousPageToken) &&\n\t\t\t\t!isEqual(currentPage, previousValue.currentPage)\n\t\t\t) {\n\t\t\t\ttrackPaginationEvent({ properties });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"isLoading\": {\n\t\t\tupdateState({ isLoadingInternal: value });\n\t\t\tbreak;\n\t\t}\n\t\tcase \"searchResults\": {\n\t\t\tconst { enableLabelValueTranslation } = properties;\n\t\t\tif (enableLabelValueTranslation) {\n\t\t\t\tdispatch(LABEL_VALUE_TRANSLATION_STARTED);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport const handleBareButtonClick = ({ action, properties }) => {\n\tconst { viewAllLink } = properties;\n\tconst {\n\t\tpayload: { type }\n\t} = action;\n\tif (type === NAVIGATE_TO_LIST_VIEW) {\n\t\twindow.open(viewAllLink, \"_blank\");\n\t}\n};\n\nexport const handleFeedback = ({ action, dispatch, properties }) => {\n\tconst {\n\t\tpayload: {\n\t\t\taction: { value, reason },\n\t\t\tmodel\n\t\t}\n\t} = action;\n\n\tconst cardType = model.model || \"Custom\"; // Model is the type of the Genius Card Template\n\n\tconst feedbackType =\n\t\tvalue > 0 ? POSITIVE_FEEDBACK_TYPE : NEGATIVE_FEEDBACK_TYPE;\n\tconst customPayloadValues = {\n\t\tactionType: FEEDBACK_ACTION_TYPE,\n\t\tactionId: `${cardType}_${feedbackType}_feedback`,\n\t\tactionValue: reason,\n\t\tgeniusResultConfigId: model.ais_genius_config_id\n\t};\n\n\t_trackGeniusResultEvent(\n\t\taction,\n\t\tdispatch,\n\t\tmodel,\n\t\tproperties,\n\t\ttrue,\n\t\ttrue,\n\t\tcustomPayloadValues\n\t);\n};\n\nexport const trackNlqTableSwitch = ({ action, dispatch, properties }) => {\n\tconst {\n\t\tpayload: { selectedTable, model }\n\t} = action;\n\n\tconst customPayloadValues = {\n\t\tactionType: NLQ_ACTION_TYPE,\n\t\tactionId: \"NLQ_table_switched\",\n\t\tactionValue: selectedTable.name\n\t};\n\n\t_trackGeniusResultEvent(\n\t\taction,\n\t\tdispatch,\n\t\tmodel,\n\t\tproperties,\n\t\ttrue,\n\t\tfalse,\n\t\tcustomPayloadValues\n\t);\n};\n\nexport const trackNlqViewFullTable = ({ action, dispatch, properties }) => {\n\tconst {\n\t\tpayload: { model, activeTable }\n\t} = action;\n\n\tconst customPayloadValues = {\n\t\tactionType: NLQ_VIEW_FULL_TABLE_TYPE,\n\t\tactionId: \"NLQ_view_full_table_clicked\",\n\t\tactionValue: activeTable.name\n\t};\n\n\t_trackGeniusResultEvent(\n\t\taction,\n\t\tdispatch,\n\t\tmodel,\n\t\tproperties,\n\t\ttrue,\n\t\tfalse,\n\t\tcustomPayloadValues\n\t);\n};\n\nconst trackFacetEvent = ({ properties }) => {\n\tconst {\n\t\tsearchResultMetadata: { searchAnalyticsPayload }\n\t} = properties;\n\tif (\n\t\t!isEmpty(searchAnalyticsPayload) &&\n\t\t(searchAnalyticsPayload.logSignals ||\n\t\t\t!(\"logSignals\" in searchAnalyticsPayload))\n\t) {\n\t\tsignalTracker.trackEvent(\n\t\t\tSEARCH_FACET_EVENT,\n\t\t\tINFO_EVENT,\n\t\t\tsearchAnalyticsPayload,\n\t\t\t{ requirePreceedingEventCompletion: true }\n\t\t);\n\t}\n};\n\nconst trackPaginationEvent = ({ properties }) => {\n\tconst {\n\t\tsearchResultMetadata: { searchAnalyticsPayload }\n\t} = properties;\n\tif (\n\t\t!isEmpty(searchAnalyticsPayload) &&\n\t\t(searchAnalyticsPayload.logSignals ||\n\t\t\t!(\"logSignals\" in searchAnalyticsPayload))\n\t) {\n\t\tsignalTracker.trackEvent(\n\t\t\tSEARCH_PAGINATION_EVENT,\n\t\t\tINFO_EVENT,\n\t\t\tsearchAnalyticsPayload,\n\t\t\t{ requirePreceedingEventCompletion: true }\n\t\t);\n\t}\n};\n\nconst trackSortEvent = ({ properties }) => {\n\tconst {\n\t\tsearchResultMetadata: { searchAnalyticsPayload }\n\t} = properties;\n\tif (\n\t\t!isEmpty(searchAnalyticsPayload) &&\n\t\t(searchAnalyticsPayload.logSignals ||\n\t\t\t!(\"logSignals\" in searchAnalyticsPayload))\n\t) {\n\t\tsignalTracker.trackEvent(\n\t\t\tSEARCH_SORT_EVENT,\n\t\t\tINFO_EVENT,\n\t\t\tsearchAnalyticsPayload,\n\t\t\t{ requirePreceedingEventCompletion: true }\n\t\t);\n\t}\n};\n\nexport const trackCollapsedAttachmentClick = ({\n\taction,\n\tdispatch,\n\tproperties\n}) => {\n\tconst eventMetadata = _generateCoreEventMetadata(action, properties);\n\tconst {\n\t\tmodel,\n\t\tsearchContextConfigId,\n\t\tqueryTerm,\n\t\tresultSysId,\n\t\ttableType = \"\",\n\t\tnumber,\n\t\tmatchedQueryIntents,\n\t\tmatchedGeniusResultIntents,\n\t\tfromSearchResultsContainer,\n\t\tappliedFacetFilters,\n\t\tappliedFilterIds,\n\t\tappliedSortOptionId,\n\t\taisDocId,\n\t\tsourceTable,\n\t\tuserId,\n\t\tsessionId,\n\t\tuseLegacySignalTracking\n\t} = eventMetadata;\n\n\tconst sourceUrl = model.url || \"\";\n\tconst label = _getLabelDescription(model);\n\n\tconst selectedResultIndex = useLegacySignalTracking\n\t\t? Number(model.document_index || 0)\n\t\t: _getDocumentIndex(model, properties);\n\n\tlet {\n\t\tpayload: { actionPayload }\n\t} = action;\n\n\tconst actionData = {\n\t\tactionPayload: {\n\t\t\t...actionPayload,\n\t\t\tparentTable: model.parent_table,\n\t\t\tparentSysId: model.parent_sys_id\n\t\t}\n\t};\n\n\t// To Track Analytics through Service Portal\n\tconst analyticsPayload = getSearchResultAnalyticsModel({\n\t\tsearchTerm: queryTerm,\n\t\tsearchContextConfigId,\n\t\taisDocId,\n\t\tlabel,\n\t\tsourceTable,\n\t\tselectedResultIndex,\n\t\tmatchedQueryIntents,\n\t\tmatchedGeniusResultIntents\n\t});\n\n\tconst searchResultActionPayload = {\n\t\t...action.payload,\n\t\tanalyticsPayload,\n\t\tfromSearchResultsContainer,\n\t\topenInNewTab: false\n\t};\n\n\tsignalTracker.trackEvent(\n\t\tSEARCH_RESULT_EVENT,\n\t\tINFO_EVENT,\n\t\t{\n\t\t\tsearchContextConfigId,\n\t\t\tqueryTerm,\n\t\t\tappliedFacetFilters,\n\t\t\tappliedFilterIds,\n\t\t\tappliedSortOptionId,\n\t\t\tresultSysId,\n\t\t\ttableType,\n\t\t\tnumber,\n\t\t\tlabelDescription: label,\n\t\t\tsourceTable,\n\t\t\tsourceUrl,\n\t\t\tsignalType: CLICK_ACTION,\n\t\t\tsignalValue: selectedResultIndex,\n\t\t\taisDocId,\n\t\t\tactionData,\n\t\t\tuserId,\n\t\t\tsessionId\n\t\t},\n\t\t{\n\t\t\tdelay: 0,\n\t\t\trequirePreceedingEventCompletion: true,\n\t\t\tcallback: () =>\n\t\t\t\tdispatch(\n\t\t\t\t\tSEARCH_RESULTS_COLLAPSED_ATTCHMENT_CLICKED,\n\t\t\t\t\tsearchResultActionPayload\n\t\t\t\t),\n\t\t\ttrackAsync: true\n\t\t}\n\t);\n};\n\nexport const trackAskAFollowUpSignalEvent = coeffects => {\n\tconst { action, dispatch, properties } = coeffects;\n\n\tconst {\n\t\tpayload: { model }\n\t} = action;\n\n\tconst cardType = model.model || \"Custom\"; // Model is the type of the Genius Card Template\n\n\tconst customPayloadValues = {\n\t\tactionType: \"Ask a Follow Up\",\n\t\tactionId: `${cardType}_ask_a_follow_up`,\n\t\tgeniusResultConfigId: model.ais_genius_config_id\n\t};\n\n\t_trackGeniusResultEvent(\n\t\taction,\n\t\tdispatch,\n\t\tmodel,\n\t\tproperties,\n\t\ttrue,\n\t\ttrue,\n\t\tcustomPayloadValues\n\t);\n};\n\nexport const trackShowFullAnswerSignalEvent = coeffects => {\n\tconst { action, dispatch, properties } = coeffects;\n\n\tconst {\n\t\tpayload: { model }\n\t} = action;\n\n\tconst cardType = model.model || \"Custom\"; // Model is the type of the Genius Card Template\n\n\tconst customPayloadValues = {\n\t\tactionType: \"Show Full Answer\",\n\t\tactionId: `${cardType}_show_full_answer`,\n\t\tgeniusResultConfigId: model.ais_genius_config_id\n\t};\n\n\t_trackGeniusResultEvent(\n\t\taction,\n\t\tdispatch,\n\t\tmodel,\n\t\tproperties,\n\t\ttrue,\n\t\ttrue,\n\t\tcustomPayloadValues\n\t);\n};\n\nexport const handleDelegatedActionsFromTopResults = coeffects => {\n\tconst { action } = coeffects;\n\tconst {\n\t\tpayload: { delegatedActionType }\n\t} = action;\n\tif (delegatedActionType === DELEGATED_ACTION_TYPES.FEEDBACK) {\n\t\thandleFeedback(coeffects);\n\t} else if (\n\t\tdelegatedActionType === DELEGATED_ACTION_TYPES.DECLARATIVE_ACTION\n\t) {\n\t\thandleResultActionClick(coeffects);\n\t} else if (delegatedActionType === DELEGATED_ACTION_TYPES.NLQ_TABLE_CLICKED) {\n\t\ttrackNlqViewFullTable(coeffects);\n\t} else if (\n\t\tdelegatedActionType === DELEGATED_ACTION_TYPES.NLQ_TABLE_SWITCHED\n\t) {\n\t\ttrackNlqTableSwitch(coeffects);\n\t} else if (delegatedActionType === DELEGATED_ACTION_TYPES.ASK_A_FOLLOW_UP) {\n\t\ttrackAskAFollowUpSignalEvent(coeffects);\n\t} else if (delegatedActionType === DELEGATED_ACTION_TYPES.SHOW_FULL_ANSWER) {\n\t\ttrackShowFullAnswerSignalEvent(coeffects);\n\t}\n};\n\nconst _buildPayloadForNavigation = properties => {\n\tconst { geniusResults } = properties;\n\tconst url = getExternalURLFromModel(geniusResults);\n\tconst actionPayload = {\n\t\tactionPayload: {\n\t\t\turl: url\n\t\t}\n\t};\n\treturn actionPayload;\n};\n\nexport const handleExternalUrlNavigation = ({ dispatch, properties }) => {\n\tconst action = _buildPayloadForNavigation(properties);\n\tdispatch(SEARCH_RESULTS_DECLARATIVE_ACTION, {\n\t\taction,\n\t\topenInNewTab: true\n\t});\n};\n\nexport const componentBootstrappedEffect = ({ properties, dispatch }) => {\n\tconst { enableLabelValueTranslation } = properties;\n\tif (enableLabelValueTranslation) dispatch(LABEL_VALUE_TRANSLATION_STARTED);\n\tdispatch(FETCH_SYS_PROP_STARTED);\n};\n\nexport const labelTranslationStartedEffect = ({ dispatch, properties }) => {\n\tconst { searchResults } = properties;\n\tlet values = [];\n\tif (!isEmpty(searchResults?.items)) {\n\t\tvalues = searchResults.items.map(result => {\n\t\t\tconst forceTranslate = result.propValues.forceTranslate\n\t\t\t\t? result.propValues.forceTranslate.split(\",\")\n\t\t\t\t: [];\n\t\t\tconst labelValues = [];\n\t\t\tforceTranslate.forEach(field =>\n\t\t\t\tlabelValues.push(result.propValues[field])\n\t\t\t);\n\t\t\treturn labelValues;\n\t\t});\n\t\tvalues = values.flat();\n\t\tvalues = values.filter((e, i) => e && values.indexOf(e) === i);\n\t\tif (values.length > 0) {\n\t\t\tdispatch(REQUEST_TRANSLATED_LABEL_VALUES, { values });\n\t\t}\n\t}\n};\n\nexport const fetchTranslationsEffect = createGraphQLEffect(TRANSLATION_QUERY, {\n\tvariableList: [\"values\"],\n\tstartActionType: TRANSLATION_FETCH_STARTED,\n\tsuccessActionType: TRANSLATION_FETCH_SUCCEEDED,\n\terrorActionType: TRANSLATION_FETCH_FAILED\n});\n\nexport const translationFetchSucceededEffect = ({\n\taction: { payload },\n\tupdateState\n}) => {\n\tconst { errors = [] } = payload;\n\n\tif (errors.length) {\n\t\tconsole.error(\"GlideDomain_Query.getMessages returned errors: \", errors);\n\t\treturn;\n\t}\n\n\tconst { getMessages } = payload.data.GlideDomain_Query;\n\tconst translatedValues = getMessages.reduce(\n\t\t(map, obj) => ((map[obj.key] = obj.message), map),\n\t\t{}\n\t);\n\tupdateState({ translatedValues });\n};\n\nexport const translationFetchFailedEffect = ({ action }) => {\n\tconsole.error(\"Translation fetch failed: \", action.payload);\n};\n\nexport const handleChatButtonClick = ({ action, properties, dispatch }) => {\n\tconst {\n\t\tpayload: { model }\n\t} = action;\n\tconst { searchResultMetadata } = properties;\n\tconst utterance = searchResultMetadata?.searchTerm;\n\tconst index = _getResultIndexOnPage(model?.action?.model, properties);\n\tconst vaEvamItems = _getVAEvamItems(properties);\n\n\tdispatch(CHAT_TRIGGERED, {\n\t\tintention: CHAT_INTENTION,\n\t\tutterance: utterance,\n\t\trawResult: {\n\t\t\texecutionResult: {\n\t\t\t\tsearchMetadata: {\n\t\t\t\t\tsearchResultMetadata\n\t\t\t\t},\n\t\t\t\tsearchResultsTemplates: {\n\t\t\t\t\titems: vaEvamItems\n\t\t\t\t},\n\t\t\t\tgeniusResultsTemplates: {\n\t\t\t\t\titems: []\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tselectedItem: {\n\t\t\ttype: REGULAR_SEARCH,\n\t\t\tindex: index\n\t\t}\n\t});\n};\n\nexport const dropDownSelectedEffect = ({ action, updateState, dispatch }) => {\n\tconst payload = action.payload;\n\tif (payload?.isDebugView) {\n\t\tdebugDropdownSelectedEffect({\n\t\t\taction,\n\t\t\tupdateState,\n\t\t\tdispatch\n\t\t});\n\t} else if (payload?.isSort) {\n\t\tsortDropdownSelectedEffect({\n\t\t\taction,\n\t\t\tupdateState,\n\t\t\tdispatch\n\t\t});\n\t}\n};\n\nexport const debugDropdownSelectedEffect = ({\n\taction,\n\tupdateState,\n\tdispatch\n}) => {\n\tconst {\n\t\tpayload: {\n\t\t\titem: { id }\n\t\t}\n\t} = action;\n\tupdateState({\n\t\tselectedDebugView: id\n\t});\n\tdispatch(DEBUG_VIEW_ITEM_SELECTED, {\n\t\tselectedView: id\n\t});\n};\n\nexport const sortDropdownSelectedEffect = ({\n\taction,\n\tupdateState,\n\tdispatch\n}) => {\n\tconst {\n\t\tpayload: {\n\t\t\titem: { id, label },\n\t\t\tisSort\n\t\t}\n\t} = action;\n\n\tif (!isSort) return;\n\n\t// Search GQL API expects JSON stringified array of filter ids.\n\tconst sortByFilters = JSON.stringify(\n\t\tid === RELEVANCY_SORT_ID_NUMERIC ? [] : [id]\n\t);\n\n\tupdateState({\n\t\tselectedSortFilterLabel: label\n\t});\n\n\tdispatch(SORT_FILTER_ITEM_SELECTED, {\n\t\tselectedFilter: sortByFilters\n\t});\n};\n\nexport const fetchShowCardBorderEffect = createGraphQLEffect(\n\tSHOW_RESULT_CARD_BORDER_SYS_PROP_QUERY,\n\t{\n\t\tsuccessActionType: FETCH_SYS_PROP_SUCCEEDED,\n\t\terrorActionType: FETCH_SYS_PROP_FAILED\n\t}\n);\n\nexport const fetchSysPropSucceededEffect = ({ action, updateState }) => {\n\tconst data = action.payload;\n\tconst results = get(data, SYS_PROP_QUERY_PATH, []);\n\tconst propertyValue = get(results, \"[0].value.value\", \"false\");\n\tupdateState({\n\t\tshowCardBorder: propertyValue === \"true\" || propertyValue === true\n\t});\n};\n\nexport const fetchSysPropFailedEffect = ({ action }) => {\n\tconsole.error(\n\t\t`Failed to fetch system property '${SHOW_RESULT_CARD_BORDER_SYS_PROP}':`,\n\t\taction.payload\n\t);\n};\n","import { actionTypes, createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport rtlBehavior from \"@servicenow/behavior-rtl\";\nimport isEmpty from \"lodash/isEmpty\";\nimport uniqBy from \"lodash/uniqBy\";\nimport view from \"./view\";\nimport styles from \"./scss/index.scss\";\nimport transformDAClientActionToUXEvents from \"./utils/declarativeAction\";\nimport {\n\tPAGINATION_BUTTON_CLICKED,\n\tDECLARATIVE_ACTION_UPDATE_RENDER,\n\tFEEDBACK_PROVIDED,\n\tBARE_BUTTON_CLICKED,\n\tCOLLAPSED_ATTACHMENT_CLICKED,\n\tNLQ_TABLE_SWITCHED,\n\tNLQ_VIEW_FULL_TABLE_CLICKED,\n\tTOP_RESULTS_ACTION_DELEGATED,\n\tEXTERNAL_URL_NAVIGATION,\n\tNOW_TEXT_LINK_CLICKED,\n\tLABEL_VALUE_TRANSLATION_STARTED,\n\tREQUEST_TRANSLATED_LABEL_VALUES,\n\tTRANSLATION_FETCH_SUCCEEDED,\n\tTRANSLATION_FETCH_FAILED,\n\tCHAT_CLICKED,\n\tNOW_DROPDOWN_ITEM_SELECTED,\n\tFETCH_SYS_PROP_STARTED,\n\tFETCH_SYS_PROP_SUCCEEDED,\n\tFETCH_SYS_PROP_FAILED\n} from \"./actions\";\nimport {\n\tINITIAL_PAGE,\n\tFIRST_PAGE,\n\tRELEVANCY_SORT_ID,\n\tRELEVANCY_SORT_FILTER\n} from \"./constants\";\nimport {\n\thandlePaginationButtonClick,\n\thandleResultActionClick,\n\thandlePropertyChanged,\n\thandleFeedback,\n\tgenerateModelDataAndTrackSearchEvent,\n\thandleBareButtonClick,\n\ttrackCollapsedAttachmentClick,\n\ttrackNlqTableSwitch,\n\ttrackNlqViewFullTable,\n\thandleDelegatedActionsFromTopResults,\n\thandleExternalUrlNavigation,\n\thandleTextLinkClicked,\n\tcomponentBootstrappedEffect,\n\tlabelTranslationStartedEffect,\n\tfetchTranslationsEffect,\n\ttranslationFetchSucceededEffect,\n\ttranslationFetchFailedEffect,\n\thandleChatButtonClick,\n\tdropDownSelectedEffect,\n\tfetchShowCardBorderEffect,\n\tfetchSysPropSucceededEffect,\n\tfetchSysPropFailedEffect\n} from \"./effects\";\n\nconst {\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_CONNECTED\n} = actionTypes;\n\n/**\n * Seismic component wrapper for genius results and search results.\n *\n * ```jsx\n * <sn-search-results-container\n *      searchResultMetadata={\n *          searchTerm:'ipone',\n *          correctedSearchTerm: 'iPhone',\n *          previousPageToken:\"YWRtaW4gYWRtaW4=\",\n *          nextPageToken:\"YWRtaW4gYWRtaW4=\",\n *          matchedQueryIntents:\"personFind\",\n *          matchedGeniusResultIntents:\"personFind, catalogFind\",\n *          responseTimeInMs:918\n *      }\n *      geniusResults={\n *          all_actions: [\n *              {\n *                  name: 'navigation',\n *                  actionType: 'uxf_client_action',\n *                  actionDispatch: 'NAVIGATION',\n *                  actionPayload:\n *                      '{\\r\\n        \"table\": \"{{table}}\",\\r\\n        \"sysId\": \"{{sys_id}}\",\\r\\n        \"url\": \"{{url}}\"\\r\\n}',\n *                  assignmentId: 'd46f400473211010c342d5fdbdf6a7cf',\n *              }\n *          ],\n *          items: [\n *              {\n *                  template: 'sn-search-genius-user-card',\n *                  propValues: {\n *                      identifier: 'San Diego, USA',\n *                      avatar:\n *                       'https://i.pinimg.com/736x/f5/1d/e5/f51de5a7734a755b1d20009bd3441d92.jpg',\n *                      header: 'System Administrator',\n *                      identifierCriticalText: '4:30 pm',\n *                      primaryDescription: 'Software Engineer, Dev - Search UX',\n *                      secondaryDescription: 'Web Interfaces',\n *                      actions: [\n *                          {\n *                              assignmentId: '2477664313aw13455',\n *                              label: 'Email',\n *                          },\n *                          {\n *                              assignmentId: '876543wne23r5654',\n *                              label: 'Call',\n *                          },\n *                      ],\n *                      model: {\n *                          name: 'System Administrator',\n *                          email: 'admin@example.com',\n *                          company: 'ACME Germany',\n *                          home_phone: '8581234567',\n *                          avatar: '',\n *                          time_zone: null,\n *                          photo: '',\n *                          user_name: 'admin',\n *                          mobile_phone: '',\n *                          location: 'Bockenheimer Landstraße 123, Frankfurt',\n *                          department: 'Web Interfaces',\n *                          sysId: 'fd826bf03710200044e0bfc8bcbe5d30',\n *                          sys_id: 'fd826bf03710200044e0bfc8bcbe5d30',\n *                          table: 'sys_user',\n *                      },\n *                  },\n *              }\n *          ];\n *      }\n *      searchResults={\n *          all_actions: [\n *              {\n *                  name: 'navigation',\n *                  actionType: 'uxf_client_action',\n *                  actionDispatch: 'NAVIGATION',\n *                  actionPayload:\n *                      '{\\r\\n        \"table\": \"{{table}}\",\\r\\n        \"sysId\": \"{{sys_id}}\",\\r\\n        \"url\": \"{{url}}\"\\r\\n}',\n *                  assignmentId: 'd46f400473211010c342d5fdbdf6a7cf',\n *              }\n *          ],\n *          items: [\n *              {\n *                  template: 'sn-search-result-evam-card',\n *                  propValues: {\n *                      textHeaderLabelOne: 'OneDrive',\n *                      textHeaderLabelTwo: 'Microsoft Word Document',\n *                      title: '<highlight>Conference</highlight> Possibilities 2020',\n *                      summary:\n *                          'Business travel is liskely to be restricted for the remainder of the year 2020 ... There are two different avenues we can explore for <highlight>conference</highlight> attendance: virtual <highlight>conference</highlight> (domestic and interational); and domestic short travel to in-state, limited attendance <highlight>conference</highlight>s ... Approval for travel in these circumstances requires the extra step ...',\n *                      detailLabelSeparator: '|',\n *                      detailLabelOne:\n *                          'https://taco.acmeco/eeportal/eedocs/hr/policy/conf_policy_emea21.doc',\n *                      detailLabelType: 'inline',\n *                      clickAction: {\n *                          name: 'action_name',\n *                      },\n *                      model: {\n *                          sys_id: 'abc',\n *                      },\n *                  },\n *              }\n *          ];\n *      }\n *  *sortFilters={[\n *{\n *\tsysId: \"947110427310101052c7d5fdbdf6a73e\",\n *\tlabel: \"Most Recent\"\n *},\n *      {\n *\tsysId: \"fca0ed907320101052c7d5fdbdf6a799\",\n *\tlabel: \"Last Updated\"\n *}\n *]}\n * >\n * ```\n *\n * @seismicElement sn-search-results-container\n * @summary Seismic component wrapper for genius results and search results.\n */\ncreateCustomElement(\"sn-search-results-container\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tstyles,\n\tbehaviors: [{ behavior: rtlBehavior }],\n\tinitialState: {\n\t\ttoolTipRef: null,\n\t\tshowAlert: \"\",\n\t\turl: \"\",\n\t\tisFirstPage: true,\n\t\tisLoadingInternal: false,\n\t\ttranslatedValues: {},\n\t\tselectedSortFilterLabel: RELEVANCY_SORT_FILTER.label,\n\t\tshowCardBorder: false\n\t},\n\tproperties: {\n\t\t/**\n\t\t * This property specifies the metadata related to search results such as search term, pagination tokens and analytics metadata.\n\t\t * @type {object}\n\t\t */\n\t\tsearchResultMetadata: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tsearchTerm: { default: \"\", type: \"string\" },\n\t\t\t\t\tcorrectedSearchTerm: { default: \"\", type: \"string\" },\n\t\t\t\t\tpreviousPageToken: { default: \"\", type: \"string\" },\n\t\t\t\t\tnextPageToken: { default: \"\", type: \"string\" },\n\t\t\t\t\tcurrentPage: { default: \"\", type: \"number\" },\n\t\t\t\t\tmatchedQueryIntents: { default: \"\", type: \"string\" },\n\t\t\t\t\tmatchedGeniusResultIntents: { default: \"\", type: \"string\" },\n\t\t\t\t\tresponseTimeInMs: { default: \"\", type: \"string\" },\n\t\t\t\t\tsearchAnalyticsPayload: { default: {}, type: \"object\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Used to indicate that the search results are being fetched, if set to true - the component will show a loading state.\n\t\t * @type {boolean}\n\t\t */\n\t\tisLoading: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The data for genius results can be passed in using this property.\n\t\t * @type {object}\n\t\t */\n\t\tgeniusResults: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The data for search results can be passed in using this property.\n\t\t * @type {object}\n\t\t */\n\t\tsearchResults: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The sortFilters response from the Search Filter GraphQL API, it contains the data for sort by filter items with sysId and label.\n\t\t * @type {Array.<{sysId: string, label:string}>}\n\t\t * @uib.description Specifies the items for sort by filters\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tsortFilters: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the ID of the selected sort filter. If this property is not passed in, Relevancy filter is selected in the sort by filter dropdown by default.\n\t\t * @type {Array.<String>}\n\t\t * @uib.description Specifies the selected sort by filter\n\t\t * @uib.defaultValue []\n\t\t */\n\t\tselectedSortFilters: {\n\t\t\tdefault: [RELEVANCY_SORT_ID],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * currentPage is used to identify if the previous or next pagination button was clicked;\n\t\t * it manages the currentPage property for now-pagination-control component, which\n\t\t * also disables/enables the previous/next page buttons.\n\t\t * @type {number}\n\t\t */\n\t\tcurrentPage: {\n\t\t\tcomputed({ properties: { searchResultMetadata } }) {\n\t\t\t\tconst {\n\t\t\t\t\tpreviousPageToken,\n\t\t\t\t\tnextPageToken,\n\t\t\t\t\tcurrentPage\n\t\t\t\t} = searchResultMetadata;\n\t\t\t\tif (currentPage != null) {\n\t\t\t\t\treturn currentPage;\n\t\t\t\t}\n\n\t\t\t\tif (previousPageToken == null && nextPageToken != null) {\n\t\t\t\t\treturn INITIAL_PAGE;\n\t\t\t\t}\n\n\t\t\t\treturn FIRST_PAGE;\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * sys_id of the search context configuration.\n\t\t * @type {string}\n\t\t */\n\t\tsearchContextConfigId: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * daClientActionContract is an object which contains the metadata needed for dynamic\n\t\t * declarative action event mapping in UI Builder.\n\t\t * @type {object}\n\t\t */\n\t\tdaClientActionContract: {\n\t\t\tcomputed({ properties: { searchResults, geniusResults } }) {\n\t\t\t\tconst declarativeActionsOfSearchResults =\n\t\t\t\t\t!isEmpty(searchResults) && Array.isArray(searchResults.all_actions)\n\t\t\t\t\t\t? searchResults.all_actions\n\t\t\t\t\t\t: [];\n\n\t\t\t\tconst declarativeActionsOfGeniusResults =\n\t\t\t\t\t!isEmpty(geniusResults) && Array.isArray(geniusResults.all_actions)\n\t\t\t\t\t\t? geniusResults.all_actions\n\t\t\t\t\t\t: [];\n\n\t\t\t\tconst allDAs = uniqBy(\n\t\t\t\t\t[\n\t\t\t\t\t\t...declarativeActionsOfSearchResults,\n\t\t\t\t\t\t...declarativeActionsOfGeniusResults\n\t\t\t\t\t],\n\t\t\t\t\t\"assignmentId\"\n\t\t\t\t);\n\n\t\t\t\treturn transformDAClientActionToUXEvents(allDAs);\n\t\t\t},\n\t\t\tselectable: true\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the result count message text.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t */\n\t\tresultCountFontSize: {\n\t\t\tdefault: \"md\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the font size applied to the spell checker message text.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t */\n\t\tspellCheckFontSize: {\n\t\t\tdefault: \"sm\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\", \"xl\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the search context for which the results are being shown;\n\t\t * This property is only application in case of global search with multiple contexts.\n\t\t * @type {string}\n\t\t */\n\t\tselectedSearchContext: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the see detailed list view link navigation url;\n\t\t * This property is only application in case of global search with viewAllData present in Search Composite data resource.\n\t\t * @type {string}\n\t\t */\n\t\tviewAllLink: {\n\t\t\tdefault: \"\"\n\t\t},\n\t\t/**\n\t\t * Manages which search results are selected (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tselectedSearchResults: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if component is being rendered in platform global search.\n\t\t * The component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables the selection checkbox for the results (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingSelection: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables the feedback dropdown for the results (specific to Data Labeling Tool).\n\t\t * @type {boolean}\n\t\t */\n\t\tenableDataLabelingFeedback: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property tracks the show filter button display. This property is only application in case of global search\n\t\t * @type {boolean}\n\t\t */\n\t\tfacetsButtonShown: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the component is being rendered in right panel (eg. in case of NASS)\n\t\t * @type {boolean}\n\t\t */\n\t\tisPanelView: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the full-page view that is displayed when the \"View All\" link\n\t\t * in the right panel of the NASS VA component is clicked.\n\t\t */\n\t\tsearchFromChat: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies the debug view to be displayed, the value can be one of the following:\n\t\t *\n\t\t * results: regular view\n\t\t * raw: shows a code editor with the raw query response and templates\n\t\t * results-detail: shows result cards with additional debugging information\n\t\t */\n\t\tdebugView: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if component should attempt to translate label values from sys_ui_message table.\n\t\t * @type {boolean}\n\t\t */\n\t\tenableLabelValueTranslation: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if integrated chat is enabled, hides chat icon on regular search results\n\t\t * @type {boolean}\n\t\t */\n\t\tintegratedChatEnabled: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the new href functionality for search result navigation should be disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t}\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: componentBootstrappedEffect,\n\t\t[PAGINATION_BUTTON_CLICKED]: {\n\t\t\teffect: handlePaginationButtonClick,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[DECLARATIVE_ACTION_UPDATE_RENDER]: {\n\t\t\teffect: handleResultActionClick,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[NOW_TEXT_LINK_CLICKED]: {\n\t\t\teffect: handleTextLinkClicked,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[COMPONENT_CONNECTED]({ properties, dispatch }) {\n\t\t\tconst { searchResultMetadata } = properties;\n\t\t\tif (!isEmpty(searchResultMetadata)) {\n\t\t\t\tgenerateModelDataAndTrackSearchEvent({ properties, dispatch });\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: handlePropertyChanged,\n\t\t[FEEDBACK_PROVIDED]: {\n\t\t\teffect: handleFeedback,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[BARE_BUTTON_CLICKED]: {\n\t\t\teffect: handleBareButtonClick,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[COLLAPSED_ATTACHMENT_CLICKED]: {\n\t\t\teffect: trackCollapsedAttachmentClick,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[NLQ_TABLE_SWITCHED]: {\n\t\t\teffect: trackNlqTableSwitch,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[NLQ_VIEW_FULL_TABLE_CLICKED]: {\n\t\t\teffect: trackNlqViewFullTable,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[TOP_RESULTS_ACTION_DELEGATED]: {\n\t\t\teffect: handleDelegatedActionsFromTopResults,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[EXTERNAL_URL_NAVIGATION]: {\n\t\t\teffect: handleExternalUrlNavigation,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[LABEL_VALUE_TRANSLATION_STARTED]: {\n\t\t\teffect: labelTranslationStartedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[REQUEST_TRANSLATED_LABEL_VALUES]: fetchTranslationsEffect,\n\t\t[TRANSLATION_FETCH_SUCCEEDED]: {\n\t\t\teffect: translationFetchSucceededEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[TRANSLATION_FETCH_FAILED]: {\n\t\t\teffect: translationFetchFailedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[CHAT_CLICKED]: {\n\t\t\teffect: handleChatButtonClick,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[NOW_DROPDOWN_ITEM_SELECTED]: {\n\t\t\teffect: dropDownSelectedEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[FETCH_SYS_PROP_STARTED]: fetchShowCardBorderEffect,\n\t\t[FETCH_SYS_PROP_SUCCEEDED]: {\n\t\t\teffect: fetchSysPropSucceededEffect,\n\t\t\tstopPropagation: true\n\t\t},\n\t\t[FETCH_SYS_PROP_FAILED]: {\n\t\t\teffect: fetchSysPropFailedEffect,\n\t\t\tstopPropagation: true\n\t\t}\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the pagination buttons are clicked. The payload contains the previous/next pagination token based on what page the user navigates to.\n\t\t * @type {object}\n\t\t */\n\t\tSEARCH_RESULTS_PAGINATION_BUTTON_CLICKED: {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when the incorrectly spelled term in the spellcheck message is clicked.\n\t\t * @type {object}\n\t\t */\n\t\tSEARCH_EXECUTED: {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when a regular search result or an action on a genius card is clicked.\n\t\t * @type {object}\n\t\t */\n\t\tSEARCH_RESULTS_DECLARATIVE_ACTION: {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when feedback dropdown of a regular search result is clicked.\n\t\t * @type {object}\n\t\t */\n\t\tSEARCH_RESULTS_FEEDBACK_CLICKED: {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when view all link from right panel view is clicked.\n\t\t * @type {object}\n\t\t */\n\t\tSEARCH_RESULTS_NAVIGATE_TO_FULL_PAGE: {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatched when a collapsed attachment link is clicked.\n\t\t * @type {object}\n\t\t */\n\t\t\"SN_SEARCH_RESULTS_CONTAINER#COLLAPSED_ATTACHMENT_CLICKED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatched when chat button is clicked.\n\t\t * @type {object}\n\t\t */\n\t\t\"SN_SEARCH_RESULTS_CONTAINER#CHAT_TRIGGERED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tintention: { type: \"string\" },\n\t\t\t\t\tutterance: { type: \"string\" },\n\t\t\t\t\trawResult: { type: \"object\" },\n\t\t\t\t\tselectedItem: { type: \"object\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Action dispatched when a sort filter is selected.\n\t\t * The payload key `selectedFilter` contains the JSON stringified array containing the `sys_id` of the sort filter selected by the user.\n\t\t * @type {{selectedFilter: string}}\n\t\t * @uib.description Dispatched when user selects any of the sort filters\n\t\t */\n\t\t\"SN_SEARCH_RESULTS_CONTAINER#SORT_FILTER_SELECTED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tselectedFilter: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n","// import '@devsnc/sn-search-genius-cards';\nimport \"@devsnc/sn-search-result-evam-card\";\n\nexport const DynamicTag = ({ tagName, ...props }) => {\n\tconst TagName = tagName;\n\t// renders component dynamically based on TagName Ex: sn-search-genius-qa-card\n\treturn <TagName {...props}></TagName>;\n};\n\nconst view = state => {\n\tconst {\n\t\tproperties: { resultProps, component }\n\t} = state;\n\n\tconst props = {\n\t\t...resultProps\n\t};\n\n\treturn (\n\t\t<div>\n\t\t\t<DynamicTag tagName={component} {...props} />\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport view from \"./view\";\nimport styles from \"../sn-search-results-container/scss/index.scss\";\n\ncreateCustomElement(\"sn-search-results-container-admin-console\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tstyles,\n\tproperties: {\n\t\t/**\n\t\t * genius or standard results props for preview\n\t\t * @type {object}\n\t\t */\n\t\tresultProps: {\n\t\t\tdefault: {}\n\t\t},\n\t\t/**\n\t\t * component to render for given props\n\t\t * @type {string}\n\t\t */\n\t\tcomponent: {\n\t\t\tdefault: \"\"\n\t\t}\n\t}\n});\n","import { t } from \"sn-translate\";\n\nexport const MOBILE_MEDIA_WIDTH = \"576px\";\n\nexport const RESULT_DISCLAIMER_TEXT = t(\n\t\"Genius Results are highly relevant, dynamic cards that appear above the standard search results\"\n);\n\nexport const RESULT_DISCLAIMER = t(\"Result Disclaimer\");\n\nexport const AI_ASSIST = \"AI\";\nexport const TOP_RESULTS_GENERATED_BY = t(`Results generated by`);\nexport const PUTTING_TOGETHER_BEST_ANSWERS = t(\n\t`${AI_ASSIST} is putting together the best answers`\n);\nexport const EMPTY_STATE_MESSAGE_HEADING = t(`No results generated`);\nexport const EMPTY_STATE_MESSAGE = t(\n\t`Try rephrasing your search. Make sure your question is clear and detailed.`\n);\n\nexport const DELEGATED_ACTION_TYPES = {\n\tFEEDBACK: \"feedback\",\n\tDECLARATIVE_ACTION: \"declarative_action\",\n\tNLQ_TABLE_SWITCHED: \"nlq_table_switched\",\n\tNLQ_TABLE_CLICKED: \"nlq_table_clicked\",\n\tASK_A_FOLLOW_UP: \"ask_a_follow_up\",\n\tSHOW_FULL_ANSWER: \"show_full_answer\"\n};\n\nexport const SYNTHESIZED_GENIUS_RESULT_LOADING_STEPS = {\n\tSTEP_1: t(\"Looking into next steps\"),\n\tSTEP_2: t(\"Analyzing your request\"),\n\tSTEP_3: t(\"Analyzed your request\"),\n\tSTEP_4: t(\"Finding relevant sources\"),\n\tSTEP_5: t(\"Generating the response\"),\n\tSTEP_6: t(\"Generated the response\")\n};\n\nexport const SR_ONLY_MESSAGES = {\n\tGENIUS_RESULTS_LOADING: t(`loading genius results`)\n};\n\nexport const EXTERNAL_CONTENT_TYPE = \"external\";\n\nexport const GENIUS_RESULT_CLICK_RANK = \"geniusResultClickRank\";\n\nexport const CITATION_TYPES = {\n\tKB: \"kb\",\n\tCATALOG: \"catalog\",\n\tPEOPLE: \"people\",\n\tSKILL: \"skill\",\n\tKG: \"kg\",\n\tAGENT: \"ai_agent\",\n\tADDITIONAL_SOURCES: \"additional_sources\"\n};\n\nconst WRONG_GR_TYPE = \"Wrong Intent\";\nconst WRONG_RESULT = \"Wrong Result\";\nconst MISSING_INFORMATION = \"Insufficient Information\";\n\nexport const POSITIVE_FEEDBACK_TYPE = \"positive\";\nexport const NEGATIVE_FEEDBACK_TYPE = \"negative\";\nexport const FEEDBACK_ACTION_TYPE = \"Feedback\";\n\nexport const DEFAULT_QA_FEEDBACK_OPTIONS = [\n\t{ id: WRONG_GR_TYPE, label: t(\"I am not looking for an article\") },\n\t{ id: WRONG_RESULT, label: t(\"It doesn't answer my question\") },\n\t{ id: MISSING_INFORMATION, label: t(\"It's missing information I want\") }\n];\n\nexport const ICON_TYPE = \"circle-info-outline\";\nexport const ALERT_CONTENT = t(\n\t\"AI detected and hid some content that might be harmful or offensive. If you do not see what you are looking for, you can rephrase or search for something new.\"\n);\nexport const ALERT_TYPE = \"info\";\nexport const ACTION_TYPE = \"dismiss\";\n","import \"@servicenow/now-icon\";\nimport \"@servicenow/now-tooltip\";\nimport \"@servicenow/now-button\";\n\nimport {\n\tRESULT_DISCLAIMER_TEXT,\n\tTOP_RESULTS_GENERATED_BY,\n\tPUTTING_TOGETHER_BEST_ANSWERS,\n\tRESULT_DISCLAIMER,\n\tNOW_ASSIST\n} from \"../constants\";\nimport { t } from \"sn-translate\";\n\nconst resultInfo = ({ isLoading = false }) => {\n\treturn (\n\t\t<div className=\"result-info-container\">\n\t\t\t<now-icon icon=\"ai-sparkle-outline\" size=\"md\" ariaHidden=\"true\" />\n\t\t\t&nbsp;\n\t\t\t{isLoading ? (\n\t\t\t\t<span>\n\t\t\t\t\t<strong>{t(NOW_ASSIST)}&nbsp;</strong>\n\t\t\t\t\t{PUTTING_TOGETHER_BEST_ANSWERS}\n\t\t\t\t</span>\n\t\t\t) : (\n\t\t\t\t<span>\n\t\t\t\t\t{TOP_RESULTS_GENERATED_BY}&nbsp;<strong>{t(NOW_ASSIST)}</strong>\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t&nbsp;\n\t\t\t<now-button-iconic\n\t\t\t\ticon=\"circle-info-outline\"\n\t\t\t\ttooltipContent={RESULT_DISCLAIMER_TEXT}\n\t\t\t\tbare\n\t\t\t\tsize=\"sm\"\n\t\t\t\thidePadding\n\t\t\t\tconfigAria={{\n\t\t\t\t\tbutton: { \"aria-label\": RESULT_DISCLAIMER }\n\t\t\t\t}}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default resultInfo;\n","const skeletonLoader = () => {\n\treturn (\n\t\t<div className=\"loading-container\">\n\t\t\t<div className=\"skeleton-loading-container\">\n\t\t\t\t<div className=\"animated-background\">\n\t\t\t\t\t<div className=\"background-masker\"></div>\n\t\t\t\t</div>\n\t\t\t\t<br />\n\t\t\t\t<div className=\"animated-background\">\n\t\t\t\t\t<div className=\"background-masker\"></div>\n\t\t\t\t</div>\n\t\t\t\t<br />\n\t\t\t\t<div className=\"animated-background\">\n\t\t\t\t\t<div className=\"background-masker\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default skeletonLoader;\n","import { t } from \"sn-translate\";\n\nexport const OTTO = \"ServiceNow Otto\";\nexport const TOPICS_CARD_HEADER = t(\"Start a chat\");\nexport const CHAT_TOIPCS_MESSAGE = t(`Chat with ${OTTO} about...`);\n","import \"@servicenow/now-button\";\nimport \"@servicenow/now-icon\";\nimport SkeletonLoader from \"../../contents/loading-state/skeleton-loader/skeletonLoader\";\n\nimport { TOPICS_CARD_HEADER, CHAT_TOIPCS_MESSAGE } from \"./constants\";\n\nconst renderTopicButton = ({\n\tskill_name: name,\n\tsysId,\n\tskill_table: skillTable,\n\tskill_description: description,\n\tskill_document: documentId,\n\tenable_followup: followUp\n}) => (\n\t<now-button\n\t\tclassName=\"topic-button\"\n\t\tlabel={name}\n\t\tvariant=\"secondary\"\n\t\tsize=\"sm\"\n\t\ttooltipContent={description}\n\t\tappend-to-payload={{\n\t\t\tname,\n\t\t\tsysId,\n\t\t\ttable: skillTable,\n\t\t\tdocumentId,\n\t\t\tfollowUp: followUp === \"true\"\n\t\t}}\n\t/>\n);\n\nconst view = state => {\n\tconst {\n\t\tproperties: { topics, showAsCard, isLoading }\n\t} = state;\n\n\tconst topicsContainer = (\n\t\t<div class={{ \"topics-container\": true, \"no-card\": !showAsCard }}>\n\t\t\t{showAsCard ? (\n\t\t\t\t<span className=\"topics-header-text\">{TOPICS_CARD_HEADER}</span>\n\t\t\t) : (\n\t\t\t\t<span>\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\ticon=\"chat-ai-sparkle-outline\"\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\tariaHidden=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t\t&nbsp;{CHAT_TOIPCS_MESSAGE}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<div className=\"topics-content\">{topics.map(renderTopicButton)}</div>\n\t\t</div>\n\t);\n\n\treturn isLoading ? (\n\t\t<div class={{ \"topics-card\": true, \"-loading\": isLoading }}>\n\t\t\t<SkeletonLoader />\n\t\t</div>\n\t) : showAsCard ? (\n\t\t<div class={{ \"topics-card\": true }}>{topicsContainer}</div>\n\t) : (\n\t\ttopicsContainer\n\t);\n};\n\nexport default view;\n","export const NOW_BUTTON_CLICKED = \"NOW_BUTTON#CLICKED\";\nexport const TOPIC_CLICKED = \"SN_SEARCH_TOP_RESULTS#CHAT_TRIGGERED\";\n","import { NOW_BUTTON_CLICKED, TOPIC_CLICKED } from \"./actions\";\n\nexport default {\n\t[NOW_BUTTON_CLICKED]: {\n\t\teffect: ({ action, dispatch }) => {\n\t\t\tconst { payload } = action;\n\t\t\tdispatch(TOPIC_CLICKED, payload);\n\t\t},\n\t\tstopPropagation: true\n\t}\n};\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport styles from \"./sn-search-topics.scss\";\nimport view from \"./view\";\nimport actionHandlers from \"./actionHandlers\";\n\ncreateCustomElement(\"sn-search-topics\", {\n\tview,\n\tproperties: {\n\t\t/**\n\t\t * This property specifies the topics to be displayed\n\t\t * @type {array}\n\t\t */\n\t\ttopics: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if genius results are still loading so we can show loading state\n\t\t * @type {boolean}\n\t\t */\n\t\tisLoading: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the topics to render in now-card\n\t\t * true when GRs are present\n\t\t * @type {array}\n\t\t */\n\t\tshowAsCard: {\n\t\t\tdefault: false\n\t\t}\n\t},\n\tactionHandlers,\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when a topic is clicked to trigger virtual agent.\n\t\t * @type {{name: string, sysId: string, table: string, documentId: string, followUp: boolean}}\n\t\t */\n\t\t\"SN_SEARCH_TOP_RESULTS#CHAT_TRIGGERED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tname: { type: \"string\" },\n\t\t\t\t\tsysId: { type: \"string\" },\n\t\t\t\t\ttable: { type: \"string\" },\n\t\t\t\t\tdocumentId: { type: \"string\" },\n\t\t\t\t\tfollowUp: { type: \"boolean\" }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n","import { t } from \"sn-translate\";\n\nexport const MOBILE_MEDIA_WIDTH = \"576px\";\nexport const HORIZONTAL = \"horizontal\";\nexport const VERTICAL = \"vertical\";\nexport const VIEW_ALL = t(\"View All\");\nexport const CARD_GAP = 12;\nexport const BORDER_WIDTH_TWICE = 4;\nexport const ACTION_TYPE_SERVER_SCRIPT = \"server_script\";\nexport const DEFAULT_ARIA_LABEL = t(\"Data Row\");\n\nexport const DEF_EMPTY_MSG = t(\"No content to display.\");\nexport const LOADING_STATE_LABEL = t(\"Loading\");\nexport const DEF_MAX_VISIBLE_CARDS = 4;\nexport const DEF_MIN_CARD_WIDTH = 254;\nexport const DEF_CARD_HEIGHT = \"sm\";\nexport const DEF_CARD_WIDTH = 150;\nexport const DEF_TITLE_HEADING_LEVEL = \"1\";\nexport const DEF_TITLE_STYLE_VARIANT = \"header-secondary\";\n\n//actions\nexport const NOW_BUTTON_BARE_CLICKED = \"NOW_BUTTON_BARE#CLICKED\";\nexport const NOW_DATA_ROW_VIEW_ALL_CLICKED = \"NOW_DATA_ROW#VIEW_ALL_CLICKED\";\n\nexport const DA_WRAPPED_CLICKED = \"DA_WRAPPED_CLICKED\";\n\nexport const DECLARATIVE_ACTION_SCRIPT_SUCCESS =\n\t\"DECLARATIVE_ACTION#SCRIPT_SUCCESS\";\nexport const DECLARATIVE_ACTION_SCRIPT_FAILED =\n\t\"DECLARATIVE_ACTION#SCRIPT_FAILED\";\nexport const NOW_DATA_ROW_ACTION_SUCCEEDED = \"NOW_DATA_ROW#ACTION_SUCCEEDED\";\nexport const NOW_DATA_ROW_ACTION_FAILED = \"NOW_DATA_ROW#ACTION_FAILED\";\n","import { t } from \"sn-translate\";\nimport { resolve } from \"@devsnc/sn-evam-resolver\";\nimport truncate from \"lodash/truncate\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport lowerCase from \"lodash/lowerCase\";\nimport { DEF_MIN_CARD_WIDTH, DEF_MAX_VISIBLE_CARDS } from \"./constants\";\nimport {\n\tcontractGenerator,\n\ttransformer,\n\tEVAM\n} from \"@devsnc/sn-declarative-actions\";\n\nexport const transformState = state => {\n\tconst {\n\t\tlayout,\n\t\ttitle,\n\t\tnoDataMessage,\n\t\tdata,\n\t\tminCardPixelWidth\n\t} = state.properties;\n\n\tconst items = !isEmpty(data) && Array.isArray(data.items) ? data.items : [];\n\tconst properties = {\n\t\t...state.properties,\n\t\tlayout: lowerCase(layout),\n\t\ttitle: t(truncate(title, { length: 63 })),\n\t\tnoDataMessage: truncate(noDataMessage, { length: 203 }),\n\t\thtmlFragments: !isEmpty(items) ? resolve(items) : [],\n\t\tminCardPixelWidth: Math.max(minCardPixelWidth, DEF_MIN_CARD_WIDTH)\n\t};\n\treturn { ...state, properties };\n};\n\nexport const transformDAClientActionToUXEvents = declarativeActions => {\n\tif (isEmpty(declarativeActions)) return {};\n\n\tconst daAction = transformer(declarativeActions);\n\treturn contractGenerator(daAction, { modelType: EVAM }) || {};\n};\n\n/**\n * Determines if the number of fragments (data items) is less than\n * then max number of visible cards in a horizontal data row\n *\n * @param {object} properties state.properties object\n * @returns {boolean}\n */\nexport const getShouldHideOverflow = (properties = {}) => {\n\tconst maxVisibleCardsHorizontal = parseFloat(\n\t\tget(properties, \"maxVisibleCardsHorizontal\", DEF_MAX_VISIBLE_CARDS)\n\t);\n\tconst htmlFragments = get(properties, \"htmlFragments\", []);\n\tconst htmlFragmentsLength = htmlFragments && htmlFragments.length;\n\tconst isCarousel = !isEmpty(get(properties, \"carouselProps\", {}));\n\treturn htmlFragmentsLength <= maxVisibleCardsHorizontal || isCarousel;\n};\n","import {t} from 'sn-translate';\n\nexport default {\n\tBUTTON: 'button',\n\tCAROUSEL_TRACK_ELM: 'carouselTrackElm',\n\tCAROUSEL_WIDTH: 'carouselWidth',\n\tCURRENT_INDEX: 'currentIndex',\n\tDISABLE_LOOPING: 'disableLooping',\n\tHAS_STARTED: 'hasStarted',\n\tHORIZONTAL: 'adaptive',\n\tINDICATOR: 'indicator',\n\tINDICATOR_CLICKED_IDX: 'indicatorClickedIdx',\n\tINDICATORS: 'indicators',\n\tIS_TRANSITION_PENDING: 'isTransitionPending',\n\tLARGE: 'lg',\n\tMEDIUM: 'md',\n\tNAME: 'name',\n\tNONE: 'none',\n\tSET: 'set',\n\tSCROLL_DIRECTION: 'scrollDirection',\n\tCONTENT: 'content',\n\tSN_CAROUSEL: 'sn-carousel',\n\tSTARTING_INDEX: 'startingIndex',\n\tCONTENT_CONTAINER_ELM: 'contentContainerElm',\n\tRTL: 'rtl',\n\tTITLE: 'carousel-title',\n\tENABLE_AUTOSCROLL: 'enableAutoScroll',\n\tPAUSE_AUTOSCROLL: 'pauseAutoScroll',\n\tCONTENT_REFRESH_TIMESTAMP: 'contentRefreshTimestamp',\n\n\t//Actions\n\tACTION_INDICATOR_CLICKED: 'SN_CAROUSEL#INDICATOR_CLICKED',\n\tACTION_LINK_CLICKED: 'SN_CAROUSEL#LINK_CLICKED',\n\tACTION_INDICATOR_INDEX_UPDATED: 'SN_CAROUSEL#INDICATOR_INDEX_UPDATED',\n\tACTION_RECALCULATE_INDICATORS: 'SN_CAROUSEL#ACTION_RECALCULATE_INDICATORS',\n\tACTION_SLOT_CHANGE: 'SN_CAROUSEL#SLOT_CHANGE',\n\tACTION_SCROLL: 'SN_CAROUSEL#SCROLL',\n\tACTION_TOUCH_END: 'SN_CAROUSEL#TOUCH_END',\n\tACTION_TRANSITION_END: 'SN_CAROUSEL#TRANSITION_END',\n\tACTION_UPDATE_INDICATORS: 'SN_CAROUSEL#UPDATE_INDICATORS',\n\tACTION_FOCUS_IN_ITEM: 'SN_CAROUSEL#FOCUS_IN_ITEM',\n\tNOW_BUTTON_BARE_CLICKED: 'NOW_BUTTON_BARE#CLICKED',\n\tNOW_BUTTON_ICONIC_CLICKED: 'NOW_BUTTON_ICONIC#CLICKED',\n\tMETRIC_TRACKED: 'SN_CAROUSEL#METRIC_TRACKED',\n\tACTION_ARROW_KEY_PRESSED: 'SN_CAROUSEL#ACTION_ARROW_KEY_PRESSED',\n\tACTION_AUTO_SCROLL_START: 'SN_CAROUSEL#AUTO_SCROLL_START',\n\tACTION_AUTO_SCROLL_STOP: 'SN_CAROUSEL#AUTO_SCROLL_STOP',\n\tACTION_AUTO_SCROLL_PAUSED: 'SN_CAROUSEL#AUTO_SCROLL_PAUSED',\n\n\t//Metric Names\n\tCAROUSEL_INITIAL_LOAD:'Initial Carousel View',\n\tNAVIGATION_INTERACTION:'Navigate Carousel Items',\n\n\t//CSS Classes/Values\n\tARROW: 'arrow',\n\tARROWS: 'arrows',\n\tCAROUSEL_LABEL : t('Carousel'),\n\tCAROUSEL_FOOTER: 'carousel-footer',\n\tCAROUSEL_HEADER: 'carousel-header',\n\tCAROUSEL_HEADER_ABSENT: 'carousel-header-absent',\n\tCAROUSEL_TRACK: 'carousel-track',\n\tCAROUSEL_WRAPPER: 'carousel-wrapper',\n\tDISABLED: 'disabled',\n\tEMPTY_STATE: 'empty-state',\n\tGRADIENT: 'gradient',\n\tHEADER_LINK: 'header-link',\n\tHIDE: 'hide',\n\tICON: 'icon',\n\tMARGIN_LEFT: 'margin-left',\n\tMARGIN_RIGHT: 'margin-right',\n\tSCROLLING: 'scrolling',\n\tSELECTED: 'selected',\n\tSHOW: 'show',\n\tSHOW_ARROWS: 'show-arrows',\n\tTITLE_WRAPPER: 'title-wrapper',\n\tBADGE: 'title-badge',\n\tTRANSITION_TIME: 'all 0.3s',\n\n\t//Empty State Illustrations\n\tADD_ATTACHMENT: 'add-attachment',\n\tADD_DATA: 'add-data',\n\tCOMPLETED_TASKS: 'completed-tasks',\n\tERROR: 'error',\n\tFIRST_TIME_USER: 'first-time-user',\n\tINTERRUPTED: 'interrupted',\n\tNO_ACTIVITIES: 'no-activities',\n\tNO_DATA: 'no-data',\n\tNO_SEARCH_RESULTS: 'no-search-results',\n\tOFFLINE: 'offline',\n\tPERMISSIONS: 'permissions',\n\tUNCONFIGURED: 'unconfigured',\n\n\t//Empty State Label\n\tEMPTY_STATE_LABEL: t('No content to display'),\n\n\t//Empty State Message\n\tEMPTY_STATE_MESSAGE: t('Please add components into the carousel'),\n\n\t//Gradient Styles\n\tDARK: 'dark',\n\tPRIMARY: 'primary',\n\tSECONDARY: 'secondary',\n\tTERTIARY: 'tertiary',\n\n\t//Margin/Padding constants\n\tGRADIENT_WIDTH: 56,\n\tLEFT_MOST_PADDING: 76,\n\tRIGHT_MARGIN_WIDTH: 12,\n\n\t//Navigation\n\tLEFT_ARROW_ICON: 'circle-chevron-start',\n\tNEXT: t('Next'),\n\tFORWARD: t('Move carousel forward'),\n\tPREVIOUS: t('Previous'),\n\tBACKWARD: t('Move carousel backward'),\n\tRIGHT_ARROW_ICON: 'circle-chevron-end',\n\tPAUSE_LABEL: t('Pause autoscroll'),\n\tPLAY_LABEL: t('Play autoscroll'),\n\tPAUSE_ICON : 'circle-pause',\n\tPLAY_ICON: 'circle-play',\n\n\t//Action constants\n\tPAUSE : 'pause',\n\tPLAY: 'play',\n\n\t//Navigation Position\n\tBOTTOM_LEFT: 'bottom-left',\n\tBOTTOM_RIGHT: 'bottom-right',\n\tBOTTOM_SPLIT: 'bottom-split',\n\tCENTER: 'center',\n\n\t//Navigation Styles\n\tFILL: 'fill',\n\tOUTLINE: 'outline',\n\n\t//Number of Items in View\n\tITEMS_IN_VIEW: 'itemsInView',\n\tMULTIPLE_ITEMS_IN_VIEW: 'multiple-content-items',\n\tSINGLE_ITEM_IN_VIEW: 'single-content-item',\n\n\t//Single Items in View When Zoomed In\n\tSINGLE_ITEM_ON_ZOOM: 'singleItemOnZoom',\n\n\t//Property Types\n\tBOOLEAN: 'boolean',\n\tJSON: 'json',\n\tINTEGER: 'integer',\n\tSTRING: 'string',\n\n\t//Sliding Type\n\tNEXT_SET_OF_ITEMS: 'next-set-of-items',\n\tSINGLE_ITEM: 'single-item',\n\tSLIDING_TYPE: 'slidingType',\n\n\t//Title Levels\n\tTITLE_LEVEL_1: '1',\n\tTITLE_LEVEL_2: '2',\n\tTITLE_LEVEL_3: '3',\n\tTITLE_LEVEL_4: '4',\n\tTITLE_LEVEL_5: '5',\n\tTITLE_LEVEL_6: '6',\n\n\t//Title Styles\n\tHEADER_PRIMARY: 'header-primary',\n\tHEADER_SECONDARY: 'header-secondary',\n\tHEADER_TERTIARY: 'header-tertiary',\n\tTITLE_PRIMARY: 'title-primary',\n\tTITLE_SECONDARY: 'title-secondary',\n\tTITLE_TERTIARY: 'title-tertiary',\n\n\t//Title Position\n\tLEFT: 'left',\n\tRIGHT: 'right',\n\n\t// Keyboard Key Name\n\tENTER_KEY: 'Enter',\n\tARROW_LEFT: 'ArrowLeft',\n\tARROW_RIGHT: 'ArrowRight',\n\n\t//Auto scroll interval ID\n\tAUTO_SCROLL_INTERVAL_ID_DEFAULT: -1,\n\n\t// Visibility\n\tVISIBILITY_OBSERVER: 'visibilityObserver',\n\tIS_HOST_VISIBLE: 'isHostVisible',\n\tIS_CONTENT_RESOLVED: 'isContentResolved'\n};\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"get\"]: () => {\n\t\t\t\t\tconst cjsModule = __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__.default && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__.__esModule\n\t\t\t\t\tif (cjsModule && 'get' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"];\n\t\t\t\t\t} else if (cjsModule)  {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"].get;\n\t\t\t\t\t} else if ('get' === 'default') {\n\t\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"] ? (__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"][\"default\"] ? __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"][\"default\"] : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"]) : __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__;\n\t\t\t\t\t}\n\t\t\t\t\treturn __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__.get || __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"] && __WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__[\"default\"].get;\n\t\t\t\t} });","import c from './sn-carousel-constants';\n\n/**\n *  All methods in this file involve the duplication of components required to\n *  make smooth translation if looping is enabled\n */\n\n/**\n * duplicateComponent\n *\n * duplicates a component for use in looping\n */\nconst duplicateComponent = component => {\n\tconst duplicateNode = node => {\n\t\tlet clone = node.cloneNode();\n\n\t\t//if node is a service now component, it will have properties\n\t\tif (node.getProperties !== undefined) {\n\t\t\tconst props = node.getProperties();\n\t\t\tif (props) {\n\t\t\t\tObject.keys(props).forEach(key => {\n\t\t\t\t\tif (node[key])\n\t\t\t\t\t\tclone[key] = node[key];\n\t\t\t\t});\n\t\t\t}\n\n\t\t//otherwise it is pure HTML\n\t\t} else \n\t\t\tclone = node.cloneNode(false);\n\t\t\n\n\t\t//clone any children nodes\n\t\tif (node.children.length > 0) {\n\t\t\tfor (const child of node.children)\n\t\t\t\tclone.appendChild(duplicateNode(child));\n\t\t}\n\t\treturn clone;\n\t};\n\n\treturn duplicateNode(component);\n};\n\n/**\n * setDuplicateAttribute\n *\n * sets attributes on the duplicated node\n */\nconst setDuplicateAttribute = (component, attribute, suffix) => {\n\tif (component.getAttribute(attribute))\n\t\tcomponent.setAttribute(attribute, component.getAttribute(attribute) + suffix);\n};\n\n/**\n * setupDuplicate\n *\n * sets all the attributes on the duplicated node\n */\nconst setupDuplicate = (duplicate, suffix) => {\n\tsetDuplicateAttribute(duplicate, 'id', suffix);\n\tsetDuplicateAttribute(duplicate, 'now-id', suffix);\n\tsetDuplicateAttribute(duplicate, 'component-id', suffix);\n\tduplicate.setAttribute('is-clone', 'true');\n\tduplicate.setAttribute('tabindex', '-1');\n};\n\n/*\n * resetPositions\n *\n * puts components back into original position if they have been swapped\n */\nexport const resetPositions = (hostNode, contentContainerElm) => {\n\tlet swap = false;\n\tcontentContainerElm.assignedNodes().forEach((node, index, array) => {\n\t\tif (node.getAttribute('is-clone') === 'true') {\n\t\t\tconst prePosition = node.getAttribute('id')?.includes('-pre') || node.getAttribute('component-id')?.includes('-pre');\n\t\t\tconst originalIndex = array.findIndex(original =>\n\t\t\t\t(`${original.getAttribute('id') }-pre`) === node.getAttribute('id') ||\n\t\t\t\t(`${original.getAttribute('id') }-post`) === node.getAttribute('id') ||\n\t\t\t\t(`${original.getAttribute('component-id') }-pre`) === node.getAttribute('component-id') ||\n\t\t\t\t(`${original.getAttribute('component-id') }-post`) === node.getAttribute('component-id'));\n\t\t\t//swap original back to position if required\n\t\t\tif ((prePosition && originalIndex < index) || (!prePosition && originalIndex > index)) {\n\t\t\t\tswap = true;\n\t\t\t\tconst sibling = array[originalIndex].nextElementSibling;\n\t\t\t\thostNode.insertBefore(array[originalIndex], node);\n\t\t\t\thostNode.insertBefore(node, sibling);\n\t\t\t\tarray[originalIndex].removeAttribute('tabindex');\n\t\t\t\tarray[originalIndex].removeAttribute('is-swap');\n\t\t\t}\n\t\t}\n\t});\n\treturn swap;\n};\n\n/**\n * deleteDuplicates\n *\n * deletes any duplicated nodes that were created\n * returns true if anything was deleted, false if not\n */\nexport const deleteDuplicates = (hostNode, contentContainerElm) => {\n\t/*\n\t * put any components that have been swapped back into original position before deleting\n\t *  if -pre is after original, or -post is before\n\t */\n\n\tresetPositions(hostNode, contentContainerElm);\n\n\tlet deleted = false;\n\tcontentContainerElm.assignedNodes().forEach(node => {\n\t\tif (node.getAttribute('is-clone') === 'true') {\n\t\t\tdeleted = true;\n\t\t\thostNode.removeChild(node);\n\t\t}\n\t});\n\treturn deleted;\n};\n\n/**\n * findDuplicates\n *\n * returns any duplicated components from components that were created from the original component\n */\nexport const findDuplicates = (components, original, suffix) => {\n\tconst isDuplicate = (component, original, suffix) => {\n\t\tif (suffix === '-pre' || suffix === '-post') {\n\t\t\treturn (component.getAttribute('id') === `${original.getAttribute('id')}${suffix}`) ||\n\t\t\t\t(component.getAttribute('component-id') === `${original.getAttribute('component-id')}${suffix}`);\n\t\t}\n\n\t\treturn (component.getAttribute('id') === `${original.getAttribute('id') }-pre`) ||\n\t\t\t(component.getAttribute('id') === `${original.getAttribute('id') }-post`) ||\n\t\t\t(component.getAttribute('component-id') === `${original.getAttribute('component-id') }-pre`) ||\n\t\t\t(component.getAttribute('component-id') === `${original.getAttribute('component-id') }-post`);\n\t};\n\treturn components.filter( component => isDuplicate(component, original, suffix));\n};\n\n/**\n * createDuplicates\n *\n * creates duplicate nodes for looping\n */\nexport const createDuplicates = (contentContainerElm, contentElms, itemsInView, slidingType, carouselWidth, onResize = false) => {\n\tconst hostNode = contentContainerElm.getRootNode().host;\n\tconst allComponents = contentContainerElm.assignedNodes().filter(node => node.style?.display !== 'none');\n\tlet componentsAdded = false;\n\n\t//If only showing one item at a time, just one duplicate is needed at the front and end\n\tif (itemsInView === c.SINGLE_ITEM_IN_VIEW) {\n\n\t\t//No need to create duplicates on resizing since it's already been create on setup\n\t\tif (onResize) \n\t\t\treturn componentsAdded;\n\n\t\t//Add a duplicate of the last item to the front\n\t\tconst duplicateLastItem = duplicateComponent(contentElms[contentElms.length - 1]);\n\t\tsetupDuplicate(duplicateLastItem, '-pre');\n\t\thostNode.prepend(duplicateLastItem);\n\n\t\t//Add a duplicate of the first item to the end\n\t\tconst duplicateFirstItem = duplicateComponent(contentElms[0]);\n\t\tsetupDuplicate(duplicateFirstItem, '-post');\n\t\thostNode.appendChild(duplicateFirstItem);\n\n\t\tcomponentsAdded = true;\n\n\t} else {\n\n\t\tif (slidingType === c.NEXT_SET_OF_ITEMS) {\n\t\t\t/*\n\t\t\t * For sliding by sets, we need to add the components of the last set and the component before\n\t\t\t * it to the front.  we need the components of the first set and the next component after to add\n\t\t\t *  to the end\n\t\t\t */\n\t\t\tlet firstSet = [];\n\t\t\tlet lastSet = [];\n\t\t\tlet currentSetWidth = 0;\n\t\t\tlet currentSet = [];\n\t\t\tconst remainingLength = carouselWidth - c.LEFT_MOST_PADDING - c.GRADIENT_WIDTH;\n\t\t\tfor (let idx = 0; idx < contentElms.length; idx++) {\n\t\t\t\tcurrentSetWidth += contentElms[idx].offsetWidth;\n\t\t\t\t//far right component could be covered by gradient\n\t\t\t\tif (currentSetWidth > remainingLength) {\n\t\t\t\t\tif (firstSet.length == 0)\n\t\t\t\t\t\tfirstSet = [...currentSet];\n\t\t\t\t\t//since the width is larger, we want to move to the next set\n\t\t\t\t\tcurrentSetWidth = contentElms[idx].offsetWidth;\n\t\t\t\t\tcurrentSet = [];\n\t\t\t\t}\n\t\t\t\tcurrentSetWidth += c.RIGHT_MARGIN_WIDTH;\n\t\t\t\tcurrentSet.push(idx);\n\t\t\t}\n\t\t\tlastSet = [...currentSet];\n\n\t\t\t//The sets may change drastically, so delete all duplicates and recreate if resizing\n\t\t\tif (onResize)\n\t\t\t\tdeleteDuplicates(hostNode, contentContainerElm);\n\n\t\t\tfor (let idx = lastSet[lastSet.length - 1]; idx >= lastSet[0] - 1; idx--) {\n\t\t\t\tconst duplicate = duplicateComponent(contentElms[idx]);\n\t\t\t\tsetupDuplicate(duplicate, '-pre');\n\t\t\t\thostNode.prepend(duplicate);\n\t\t\t}\n\n\t\t\tfor (let idx = firstSet[0]; idx <= firstSet[firstSet.length - 1] + 1; idx++) {\n\t\t\t\tconst duplicate = duplicateComponent(contentElms[idx]);\n\t\t\t\tsetupDuplicate(duplicate, '-post');\n\t\t\t\thostNode.appendChild(duplicate);\n\t\t\t}\n\n\t\t\tcomponentsAdded = true;\n\t\t} else {\n\t\t\t/*\n\t\t\t * For sliding by one item at a time, we need to add the last two items to the front\n\t\t\t * and we need to add the number of items in view based on the position\n\t\t\t * of where the last item ends and the remaining width of the carousel\n\t\t\t */\n\n\t\t\t//Create duplicates components before start of window\n\t\t\tif (!onResize) {\n\t\t\t\tfor (let idx = contentElms.length - 1; idx >= contentElms.length - 2; idx--) {\n\t\t\t\t\tconst duplicate = duplicateComponent(contentElms[idx]);\n\t\t\t\t\tsetupDuplicate(duplicate, '-pre');\n\t\t\t\t\thostNode.prepend(duplicate);\n\t\t\t\t}\n\t\t\t\tcomponentsAdded = true;\n\t\t\t}\n\n\t\t\tlet remainingLength = carouselWidth - c.LEFT_MOST_PADDING;\n\t\t\tfor (const contentElm of contentElms) {\n\t\t\t\tif (!onResize || findDuplicates(allComponents, contentElm, '-post').length === 0) {\n\t\t\t\t\tconst duplicate = duplicateComponent(contentElm);\n\t\t\t\t\tsetupDuplicate(duplicate, '-post');\n\t\t\t\t\thostNode.appendChild(duplicate);\n\t\t\t\t\tcomponentsAdded = true;\n\t\t\t\t}\n\n\t\t\t\tremainingLength -= (contentElm.offsetWidth + c.RIGHT_MARGIN_WIDTH);\n\t\t\t\tif (remainingLength < 0)\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn componentsAdded;\n};\n\nexport const findStartingDuplicates = components => components.filter(component => (component.getAttribute('id')?.includes('-pre') || component.getAttribute('component-id')?.includes('-pre')));\nexport const findEndingDuplicates = components => components.filter(component => (component.getAttribute('id')?.includes('-post') || component.getAttribute('component-id')?.includes('-post')));\n\nexport const findOriginals = (duplicates, components) => duplicates.map(duplicate => components.find(component => (duplicate.getAttribute('id') === `${component.getAttribute('id') }-pre`) ||\n\t\t\t(duplicate.getAttribute('id') === `${component.getAttribute('id') }-post`) ||\n\t\t\t(duplicate.getAttribute('component-id') === `${component.getAttribute('component-id') }-pre`) ||\n\t\t\t(duplicate.getAttribute('component-id') === `${component.getAttribute('component-id') }-post`)));\n\nexport const swapDuplicates = (components, contentContainerElm, updateState) => {\n\tconst swapRequired = components.some(component => component.getAttribute('is-clone') === 'true');\n\n\tif (swapRequired) {\n\t\tconst hostNode = contentContainerElm.getRootNode().host;\n\t\tupdateState({path: 'isSwapping', value: true, operation: c.SET, shouldRender: false});\n\n\t\t//See if any duplicates exist in the components\n\t\tfor (const component of components) {\n\t\t\tif (component.getAttribute('is-clone')) {\n\t\t\t\t//Find the original\n\t\t\t\tconst originalComponent = contentContainerElm.assignedNodes().find(node => (`${node.getAttribute('id') }-pre`) === component.getAttribute('id') ||\n\t\t\t\t\t\t(`${node.getAttribute('id') }-post`) === component.getAttribute('id') ||\n\t\t\t\t\t\t(`${node.getAttribute('component-id') }-pre`) === component.getAttribute('component-id') ||\n\t\t\t\t\t\t(`${node.getAttribute('component-id') }-post`) === component.getAttribute('component-id'));\n\t\t\t\tconst sibling = originalComponent.nextElementSibling;\n\t\t\t\thostNode.insertBefore(originalComponent, component);\n\t\t\t\thostNode.insertBefore(component, sibling);\n\n\t\t\t\t// swapped items should be excluded from tab order, so tab focus doesn't loop\n\t\t\t\tif (originalComponent.getAttribute('is-swap')) {\n\t\t\t\t\toriginalComponent.removeAttribute('is-swap');\n\t\t\t\t\toriginalComponent.removeAttribute('tabindex');\n\t\t\t\t} else {\n\t\t\t\t\toriginalComponent.setAttribute('is-swap', 'true');\n\t\t\t\t\toriginalComponent.setAttribute('tabindex', '-1');\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t}\n};","import {findOriginals, findStartingDuplicates, swapDuplicates} from './sn-carousel-duplicates';\nimport c from './sn-carousel-constants';\n\n/**\n * isElementVisible\n *\n * checks if the element is actually rendered on the page (not display: none, visibility: hidden, etc.)\n */\nexport const isElementVisible = el => !!(el && el.offsetParent !== null);\n\n/**\n * getContentWidth\n *\n * returns the width of all the components with spacing inside the carousel\n */\nexport const getContentWidth = (contentElms, itemsInView, disableLooping, carouselWidth) => {\n\tlet width = 0;\n\tfor (const elm of contentElms) {\n\t\tif (itemsInView === c.SINGLE_ITEM_IN_VIEW)\n\t\t\twidth += carouselWidth;\n\t\telse\n\t\t\twidth += elm.offsetWidth + c.RIGHT_MARGIN_WIDTH;\n\t}\n\tif (itemsInView === c.MULTIPLE_ITEMS_IN_VIEW && disableLooping)\n\t\twidth -= c.RIGHT_MARGIN_WIDTH;\n\n\treturn width;\n};\n\n/**\n * getComponentsInView\n *\n * This returns the components that will be in view when transform happens according to transformValue.\n *\n * includePartials=true would include components that are partially visible, false, would ignore partially visible components\n *\n */\nexport const getComponentsInView = (state, transformValue, includePartials = true) => {\n\tconst {\n\t\tcarouselTrackElm,\n\t\tcontentContainerElm\n\t} = state;\n\n\tconst inViewComponents = [];\n\tif (contentContainerElm === null)\n\t\treturn inViewComponents;\n\n\t//Get content of slot\n\tconst allComponents = contentContainerElm.assignedNodes().filter(node => node.style?.display !== 'none');\n\tif (allComponents.length === 0)\n\t\treturn inViewComponents;\n\n\tlet componentIdx = 0;\n\tlet hiddenWidth = 0;\n\tfor (; componentIdx < allComponents.length; componentIdx++) {\n\t\tconst component = allComponents[componentIdx];\n\t\tconst componentWidth = component.offsetWidth + parseFloat(component.style.marginRight || 0) + parseFloat(component.style.marginLeft || 0);\n\t\tconst prevHiddenWidth = hiddenWidth;\n\t\thiddenWidth += componentWidth;\n\t\tif (hiddenWidth\t> transformValue) {\n\t\t\tif (includePartials || prevHiddenWidth >= transformValue)\n\t\t\t\tinViewComponents.push(component);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlet accumalatedWidth = hiddenWidth - transformValue;\n\tconst totalWidth = carouselTrackElm.offsetWidth;\n\n\tcomponentIdx++;\n\tfor (; componentIdx < allComponents.length; componentIdx++) {\n\t\tconst component = allComponents[componentIdx];\n\t\tconst componentWidth = component.offsetWidth + parseFloat(component.style.marginRight || 0) + parseFloat(component.style.marginLeft || 0);\n\t\tif (accumalatedWidth + componentWidth > totalWidth) {\n\t\t\tif (includePartials)\n\t\t\t\tinViewComponents.push(component);\n\t\t\tbreak;\n\t\t}\n\t\taccumalatedWidth += componentWidth;\n\t\tinViewComponents.push(component);\n\t}\n\n\treturn inViewComponents;\n};\n\n/**\n * getContentWidth\n *\n * returns false if the width of a component is 0\n */\nexport const areComponentsInitialized = contentElms => !contentElms.some(component => component.offsetWidth === 0);\n\n/**\n * transformComponents\n *\n * moves the carousel to the given position\n */\nexport const transformComponents = (state, updateState, length, transition = c.TRANSITION_TIME, performSwap = true) => {\n\tconst {contentContainerElm, itemsInView, properties: {dir, disableLooping}} = state;\n\n\t//If duplicate entries will be in view, swap them before translating\n\tif (!disableLooping && itemsInView === c.MULTIPLE_ITEMS_IN_VIEW && performSwap) {\n\t\tconst inViewComponents = getComponentsInView(state, length);\n\t\tswapDuplicates(inViewComponents, contentContainerElm, updateState);\n\t}\n\n\tconst direction = (dir === c.RTL) ? '' : '-';\n\tcontentContainerElm.style.transition = transition;\n\tcontentContainerElm.style.transform = `translate(${direction}${length}px)`;\n};\n\nexport const getTranslation = contentContainerElm => {\n\tlet transformValue = 0;\n\tconst matchValue = contentContainerElm.style.transform.match(/-+\\d+/);\n\tif (matchValue !== null)\n\t\ttransformValue = Math.abs(parseInt(matchValue[0]));\n\n\treturn transformValue;\n};\n\n/**\n * calculateIndicators\n *\n * This determines how many indicators are required and how to move the carousel\n *\n * For Hard Stop\n * --------------\n *\n * If itemsInView is single-content-item, we show one component at a time.  The margins are calculated when\n * added into the slot.  On each click, the content is moved the width of the carousel\n *\n * If itemsInView is multi-content-items, we show multiple components at a time.  The width of each component can\n * be varied.\n * - If moving one component at a time, we move the frame by adding the previous components width and subtracting LEFT_MOST_PADDING\n * so that part of the component is still on screen\n * - If moving more than one component at a time, we add the next set of components width until they are greater than the\n * width of the carousel.  We then add the width of those components to the translation and subtract LEFT_MOST_PADDING\n * so that part of the component is still on screen\n *\n * For Looping\n * -----------\n *\n * We do the same calculations for looping as we do for hardstop.\n * However, since we have added a duplicate component for each component to the front and end of the list,\n * we add the content width to the translation and subtract the LEFT_MOST_PADDING for each position\n *\n * When we move from the start to the end (clicking left on first position), we move to the first indicator's\n * starting position plus the width of all the components.\n * When we move from the end to start (clicking right at last position), we move to the last indicator's position\n * and subtract the width of all the components\n * After the transition is complete, we move back to the indicator's position without animation\n *\n *\n * TBD\n */\nexport const calculateIndicators = state => {\n\tconst {\n\t\tcarouselTrackElm,\n\t\tcontentContainerElm,\n\t\tcontentCount,\n\t\tcontentElms,\n\t\titemsInView,\n\t\tproperties: {\n\t\t\tslidingType,\n\t\t\tdisableLooping\n\t\t}\n\t} = state;\n\tconst indicators = [];\n\tconst carouselWidth = carouselTrackElm.offsetWidth;\n\tconst contentWidth = getContentWidth(contentElms, itemsInView, disableLooping, carouselWidth);\n\n\tlet translate = 0;\n\tif (!disableLooping) {\n\t\tif (itemsInView === c.SINGLE_ITEM_IN_VIEW) \n\t\t\ttranslate = carouselWidth;\n\t\telse {\n\t\t\tconst startingDuplicates = findStartingDuplicates(contentContainerElm.assignedNodes());\n\t\t\tfindOriginals(startingDuplicates, contentContainerElm.assignedNodes()).forEach(component => {\n\t\t\t\ttranslate += component.offsetWidth + c.RIGHT_MARGIN_WIDTH;\n\t\t\t});\n\t\t}\n\t}\n\n\t//If contentWidth <= carouselWidth, return one indicator at starting position\n\tif (contentWidth <= carouselWidth) {\n\t\treturn [{\n\t\t\ttranslate: 0,\n\t\t\tcontent: 0\n\t\t}];\n\t}\n\n\t//if only showing one item at a time, then we need one indicator per item\n\tif (itemsInView === c.SINGLE_ITEM_IN_VIEW) {\n\t\tfor (let idx = 0; idx < contentCount; idx++) {\n\t\t\tconst indicator = {\n\t\t\t\ttranslate,\n\t\t\t\tcontent: idx\n\t\t\t};\n\t\t\tindicators.push(indicator);\n\n\t\t\t//Update translate for next component starting point\n\t\t\ttranslate += carouselWidth;\n\t\t}\n\t} else {\n\t\tlet currentComponentIdx = 0;\n\t\tfor (let idx = 0; idx < contentCount; idx++) {\n\t\t\t//If looped through all the components, then break\n\t\t\tif (currentComponentIdx >= contentCount)\n\t\t\t\tbreak;\n\n\t\t\tconst indicator = {\n\t\t\t\ttranslate,\n\t\t\t\tcontent: currentComponentIdx\n\t\t\t};\n\t\t\tindicators.push(indicator);\n\n\t\t\t//Update the translate to account for padding\n\t\t\tif (disableLooping) {\n\t\t\t\tif (idx !== 0) {\n\t\t\t\t\tif (translate - c.LEFT_MOST_PADDING < contentWidth - carouselWidth) \n\t\t\t\t\t\tindicators[idx].translate = translate - c.LEFT_MOST_PADDING;\n\t\t\t\t\telse {\n\t\t\t\t\t\t//We've reached the farthest right position\n\t\t\t\t\t\tindicators[idx].translate = contentWidth - carouselWidth;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else \n\t\t\t\tindicators[idx].translate = translate - c.LEFT_MOST_PADDING;\n\t\t\t\n\n\t\t\t//If sliding a single item, just add its width and margin to the translation\n\t\t\tif (slidingType === c.SINGLE_ITEM) {\n\t\t\t\ttranslate += contentElms[idx].offsetWidth + c.RIGHT_MARGIN_WIDTH;\n\t\t\t\tcurrentComponentIdx++;\n\t\t\t//otherwise, need to add the width of the set of items to translate\n\t\t\t} else {\n\t\t\t\tlet currentSetWidth = 0;\n\t\t\t\tfor (currentComponentIdx; currentComponentIdx < contentCount; currentComponentIdx++) {\n\t\t\t\t\tcurrentSetWidth += contentElms[currentComponentIdx].offsetWidth;\n\t\t\t\t\tlet checkWidth = currentSetWidth;\n\t\t\t\t\tif (idx !== 0 || !disableLooping)\n\t\t\t\t\t\tcheckWidth += c.LEFT_MOST_PADDING;\n\n\t\t\t\t\t//far right component could be covered by gradient\n\t\t\t\t\tif (checkWidth >= carouselWidth - c.GRADIENT_WIDTH) {\n\t\t\t\t\t\t//since the width is larger, we want to move to the next set\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\ttranslate += contentElms[currentComponentIdx].offsetWidth + c.RIGHT_MARGIN_WIDTH;\n\t\t\t\t\tcurrentSetWidth += c.RIGHT_MARGIN_WIDTH;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//Add looping parameters to first and last indicators to handle scrolling\n\tif (!disableLooping && indicators.length > 1) {\n\t\tconst firstIndicator = indicators[0];\n\t\tconst lastIndicator = indicators[indicators.length - 1];\n\n\t\tif (itemsInView === c.SINGLE_ITEM_IN_VIEW) {\n\t\t\tfirstIndicator.loopTranslate = lastIndicator.translate + carouselWidth;\n\t\t\tlastIndicator.loopTranslate = 0;\n\t\t} else {\n\t\t\tfirstIndicator.loopTranslate = firstIndicator.translate + contentWidth;\n\t\t\tlastIndicator.loopTranslate = lastIndicator.translate - contentWidth;\n\t\t}\n\n\t}\n\n\treturn indicators;\n};\n\nexport function autoScrollStart(state, updateState, dispatch) {\n\tconst {\n\t\tproperties: {enableAutoScroll, autoScrollSpeed, pauseAutoScroll}\n\t} = state;\n\n\tlet {\n\t\tautoScrollIntervalId\n\t} = state;\n\n\tif (!enableAutoScroll || pauseAutoScroll || autoScrollIntervalId !== c.AUTO_SCROLL_INTERVAL_ID_DEFAULT)\n\t\treturn;\n\n\tautoScrollIntervalId = setInterval(() => {\n\t\tdispatch(c.ACTION_SCROLL, {scrollDirection: c.RIGHT});\n\t}, autoScrollSpeed);\n\n\tupdateState({\n\t\tpath: 'autoScrollIntervalId',\n\t\tvalue: autoScrollIntervalId,\n\t\toperation: c.SET,\n\t\tshouldRender: false\n\t});\n}\n\nexport function autoScrollStop(state, updateState) {\n\tconst {autoScrollIntervalId} = state;\n\tif (autoScrollIntervalId === c.AUTO_SCROLL_INTERVAL_ID_DEFAULT)\n\t\treturn;\n\tclearInterval(autoScrollIntervalId);\n\t// Now that we have cleared the interval, reset the value to default.\n\tupdateState({\n\t\tpath: 'autoScrollIntervalId', value: c.AUTO_SCROLL_INTERVAL_ID_DEFAULT, operation: c.SET, shouldRender: false\n\t});\n}\n\nexport function getActionType(scrollDirection) {\n\tlet actionType = null;\n\tswitch (scrollDirection) {\n\t\tcase c.RIGHT:\n\t\t\tactionType = 'right_arrow_selected';\n\t\t\tbreak;\n\t\tcase c.LEFT:\n\t\t\tactionType = 'left_arrow_selected';\n\t\t\tbreak;\n\t\tcase c.INDICATOR:\n\t\t\tactionType = 'indicator_selected';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\treturn actionType;\n}","import {\n\tareComponentsInitialized,\n\tcalculateIndicators,\n\tgetContentWidth,\n\ttransformComponents\n} from './sn-carousel-common';\nimport {\n\tcreateDuplicates,\n\tdeleteDuplicates,\n\tfindDuplicates\n} from './sn-carousel-duplicates';\nimport c from './sn-carousel-constants';\n\n/**\n * updateComponentStyle\n *\n * configures the style for margin, max width and min width on the component\n */\nconst updateComponentStyle = (component, margin, maxWidth) => {\n\tcomponent.style.margin = margin;\n\n\t//Set max width if width is larger\n\tif (component.offsetWidth > maxWidth) {\n\t\tcomponent.style.maxWidth = `${maxWidth}px`;\n\n\t\t//If there is a min width make sure it is less than max width\n\t\tif (component.style.minWidth && component.offsetWidth > maxWidth)\n\t\t\tcomponent.style.minWidth = `${maxWidth}px`;\n\n\t} else {\n\t\t//Otherwise, update maxWidth if it has been set in case the set width is larger\n\t\tif (component.style.maxWidth)\n\t\t\tcomponent.style.maxWidth = `${maxWidth}px`;\n\t}\n};\n\n/**\n * copyStyle\n *\n * copies the set style of the component for its duplicate\n */\nconst copyStyle = (duplicate, component) => {\n\tduplicate.style.margin = component.style.margin;\n\tif (component.style.maxWidth)\n\t\tduplicate.style.maxWidth = component.style.maxWidth;\n\tif (component.style.minWidth)\n\t\tduplicate.style.minWidth = component.style.minWidth;\n};\n\n/**\n * setComponentMargins\n *\n * sets the margins on the components so that the spacing between them is correct\n */\nexport const setComponentMargins = state => {\n\tconst {contentContainerElm, carouselTrackElm, contentElms, itemsInView, properties: {disableLooping, dir}} = state;\n\tconst components = contentContainerElm.assignedNodes().filter(node => node.style?.display !== 'none');\n\n\tfor (let idx = 0; idx < contentElms.length; idx++) {\n\t\tif (contentElms[idx].offsetWidth === 0)\n\t\t\treturn false;\n\n\t\tlet margin = '0';\n\t\tlet maxWidth = carouselTrackElm.offsetWidth - (2 * c.LEFT_MOST_PADDING);\n\n\t\tif (itemsInView === c.SINGLE_ITEM_IN_VIEW) {\n\t\t\tmaxWidth = carouselTrackElm.offsetWidth;\n\t\t\t//Need to set the max width before getting the offsetWidth in case width is %\n\t\t\tcontentElms[idx].style.maxWidth = `${maxWidth}px`;\n\t\t\t//keep margin 0 if width is 100%\n\t\t\tif (contentElms[idx].style.width !== '100%') {\n\t\t\t\tconst marginWidth = (carouselTrackElm.offsetWidth - contentElms[idx].offsetWidth) / 2;\n\t\t\t\tif (marginWidth > 0)\n\t\t\t\t\tmargin = `0 ${marginWidth}px`;\n\t\t\t}\n\n\t\t} else if (!disableLooping || idx !== contentElms.length - 1) {\n\t\t\tif (dir === c.RTL)\n\t\t\t\tmargin = `0 0 0 ${c.RIGHT_MARGIN_WIDTH}px`;\n\t\t\telse\n\t\t\t\tmargin = `0 ${c.RIGHT_MARGIN_WIDTH}px 0 0 `;\n\t\t}\n\n\t\tupdateComponentStyle(contentElms[idx], margin, maxWidth);\n\n\t\t/*\n\t\t * Need to update the margins and widths of the duplicates\n\t\t * Using the style of the original components, as the duplicate components\n\t\t * might not be fully loaded yet\n\t\t *\n\t\t * Make sure duplicates exist before changing the style\n\t\t */\n\t\tif (!disableLooping) {\n\t\t\tfindDuplicates(components, contentElms[idx]).forEach(duplicate => {\n\t\t\t\tcopyStyle(duplicate, contentElms[idx]);\n\t\t\t});\n\t\t}\n\t}\n\n\treturn true;\n};\n\n/**\n * setupComponents\n *\n * Called in initialization or if there was a on slot change event\n * Stores references of the components\n * Checks to see if there was a change to the components\n * If so, update duplicates if need be\n * If no duplicating required, then setup indicators\n */\nexport const setupComponents = (state, updateState, dispatch, loopingChanged = false) => {\n\tconst {\n\t\taddDuplicatesOnResize,\n\t\tcarouselTrackElm,\n\t\tcontentContainerElm,\n\t\tcontentElms,\n\t\tcontentCount,\n\t\tisSwapping,\n\t\titemsInView,\n\t\tisHostVisible,\n\t\tproperties: {\n\t\t\tdisableLooping,\n\t\t\tslidingType\n\t\t}\n\t} = state;\n\n\tif (contentContainerElm === null || !isHostVisible)\n\t\treturn;\n\n\tif (isSwapping) {\n\t\tupdateState({path: 'isSwapping', value: false, operation: c.SET, shouldRender: false});\n\t\treturn;\n\t}\n\n\tif (addDuplicatesOnResize) {\n\t\tupdateState({path: 'addDuplicatesOnResize', value: false, operation: c.SET, shouldRender: false});\n\t\tdispatch(c.ACTION_RECALCULATE_INDICATORS);\n\t\treturn;\n\t}\n\n\t//Get the new contents of the slot\n\tconst newContentElms = [];\n\tlet newContentCount = 0;\n\tif (contentContainerElm.assignedNodes().length !== 0) {\n\t\tcontentContainerElm.style.transition = c.TRANSITION_TIME;\n\t\tcontentContainerElm.assignedNodes().forEach(node => {\n\t\t\tif (!node.getAttribute('is-clone') && node.style?.display !== 'none')\n\t\t\t\tnewContentElms.push(node);\n\n\t\t});\n\t\tnewContentCount = newContentElms.length;\n\t}\n\n\tnewContentElms.forEach((node, idx) => {\n\t\tconst focusinEventHandler = () => {\n\t\t\tdispatch(c.ACTION_FOCUS_IN_ITEM, {node, idx});\n\t\t};\n\n\t\tif (node.carouselItemFocusinHandler)\n\t\t\tnode.removeEventListener('focusin', node.carouselItemFocusinHandler);\n\n\t\tnode.addEventListener('focusin', focusinEventHandler);\n\t\tnode.carouselItemFocusinHandler = focusinEventHandler;\n\t});\n\n\t//Check to see if there was any change\n\tlet contentChanged = false;\n\tif (contentCount !== newContentCount) \n\t\tcontentChanged = true;\n\telse {\n\t\tfor (let i = 0; i < contentElms.length; i++) {\n\t\t\tif (!contentElms[i].isSameNode(newContentElms[i])) {\n\t\t\t\tcontentChanged = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!areComponentsInitialized(newContentElms)) {\n\t\tsetTimeout(() => {\n\t\t\tdispatch(c.ACTION_SLOT_CHANGE);\n\t\t}, 100);\n\n\t\treturn;\n\t}\n\n\t//Check to see if content fits the carousel\n\tconst contentWidth = getContentWidth(newContentElms, itemsInView, disableLooping, carouselTrackElm.offsetWidth);\n\tconst fitsContainer = (contentWidth <= carouselTrackElm.offsetWidth);\n\n\tupdateState([\n\t\t{path: 'contentCount', value: newContentCount, operation: c.SET, shouldRender: false},\n\t\t{path: 'contentElms', value: newContentElms, operation: c.SET, shouldRender: false},\n\t\t{path: c.IS_CONTENT_RESOLVED, value: true, operation: c.SET, shouldRender: false}\n\t]);\n\n\tif (loopingChanged || contentChanged) {\n\t\tlet slotChangeEvent = false;\n\t\t//remove any duplicate components\n\t\tconst hostNode = contentContainerElm.getRootNode().host;\n\t\tslotChangeEvent = deleteDuplicates(hostNode, contentContainerElm);\n\n\t\t//If looping, add duplicate components if content changed\n\t\tif (!disableLooping && !fitsContainer) {\n\t\t\t//Create duplicates components before start of window\n\t\t\tcreateDuplicates(contentContainerElm, newContentElms, itemsInView, slidingType, carouselTrackElm.offsetWidth);\n\t\t\tslotChangeEvent = true;\n\t\t}\n\n\t\t/*\n\t\t * Deleting or creating duplicates will fire another on slot change event,\n\t\t * so we don't want to update the indicators\n\t\t * If no duplicates were deleted or created, then update the indicators\n\t\t */\n\t\tif (!slotChangeEvent)\n\t\t\tdispatch(c.ACTION_UPDATE_INDICATORS);\n\t} else {\n\t\t//update the indicators now that the components have been setup\n\t\tdispatch(c.ACTION_UPDATE_INDICATORS);\n\t}\n\tdispatch(c.ACTION_TRANSITION_END);\n};\n\n/**\n * setupIndicators\n *\n * sets the margins on the components, then calculates the indicators and moves the carousel to\n * the starting position\n */\nexport const setupIndicators = (state, updateProperties, updateState, dispatch) => {\n\tconst {contentContainerElm, currentIndex, hasStarted, properties: {startingIndex}} = state;\n\n\t//If settings the margins failed, stop setting up the indicators and try again after waiting 100ms\n\tif (!setComponentMargins(state)) {\n\t\tsetTimeout(() => {\n\t\t\tdispatch(c.ACTION_UPDATE_INDICATORS);\n\t\t}, 100);\n\n\t\treturn;\n\t}\n\n\t//calculate indicators and add to state\n\tconst indicators = calculateIndicators(state);\n\n\t//Update index\n\tlet selectedIndex = 0;\n\tif (indicators.length > 1) {\n\t\tconst position = hasStarted ? currentIndex : startingIndex;\n\t\tselectedIndex = position;\n\t\tif (position >= indicators.length)\n\t\t\tselectedIndex = indicators.length - 1;\n\t\telse if (position < 0)\n\t\t\tselectedIndex=0;\n\t}\n\n\tupdateState([\n\t\t{path: c.INDICATORS, value: indicators, operation: c.SET, shouldRender: true},\n\t\t{path: c.CURRENT_INDEX, value: selectedIndex, operation: c.SET, shouldRender: false},\n\t\t{path: c.HAS_STARTED, value: ( indicators.length > 1 ), operation: c.SET, shouldRender: false}\n\t]);\n\n\t//Move components to starting position\n\tif (contentContainerElm !== null && indicators.length !== 0)\n\t\ttransformComponents(state, updateState, `${indicators[selectedIndex].translate}`, c.NONE);\n\n\tdispatch(c.ACTION_INDICATOR_INDEX_UPDATED, {indicator: selectedIndex, numIndicators: indicators.length});\n\n\t//Metric Event for Initial Load\n\tif (state.didRender === false && (state.indicators.length > 0 || state.contentCount === 0)) {\n\t\tconst metadata = {\n\t\t\ttitle: !!state.properties.carouselTitle,\n\t\t\ttitleVariant: state.properties.titleVariant,\n\t\t\ttitlePosition: state.properties.titlePosition,\n\t\t\thideLink: state.properties.hideLink,\n\t\t\tlinkIcon: !!state.properties.linkIcon,\n\t\t\titemsInView: state.properties.itemsInView,\n\t\t\tslidingType: state.properties.slidingType,\n\t\t\tdisableLooping: state.properties.disableLooping,\n\t\t\tnavStyle: state.properties.navStyle,\n\t\t\tenableAdvancedNavConfig: state.properties.enableAdvancedNavConfig,\n\t\t\tnavButtonConfig: state.properties.navButtonConfig,\n\t\t\tleftNavButtonIcon: state.properties.leftNavButtonIcon,\n\t\t\trightNavButtonIcon: state.properties.rightNavButtonIcon,\n\t\t\tnavPosition: state.properties.navPosition,\n\t\t\tgradientStyle: state.properties.gradientStyle,\n\t\t\thideDotIndicator: state.properties.hideDotIndicator,\n\t\t\tstartingIndex: state.properties.startingIndex,\n\t\t\tcontentCount: state.contentCount,\n\t\t\tnumberOfIndicators: state.indicators.length,\n\t\t\tcurrentIndex: state.currentIndex\n\t\t};\n\t\tdispatch(c.METRIC_TRACKED, {eventName: c.CAROUSEL_INITIAL_LOAD, metadata});\n\t\tupdateState([\n\t\t\t{path: 'didRender', value: true, operation: c.SET, shouldRender: false}\n\t\t]);\n\t}\n};\n","import {\n\tcalculateIndicators,\n\tgetContentWidth,\n\tgetTranslation,\n\ttransformComponents\n} from './sn-carousel-common';\nimport {\n\tcreateDuplicates,\n\tdeleteDuplicates\n} from './sn-carousel-duplicates';\nimport {setComponentMargins} from './sn-carousel-setup';\nimport c from './sn-carousel-constants';\n\n/**\n * recalculateIndicators\n *\n * when the carousel is resized, we need to update the indicators to reflect the new size\n * may need to adjust the carousel's components position\n */\nexport const recalculateIndicators = (state, updateState, dispatch) => {\n\tconst {\n\t\tcarouselTrackElm,\n\t\tcontentContainerElm,\n\t\tcontentElms,\n\t\tcurrentIndex: originalIndex,\n\t\tindicators: originalIndicators,\n\t\titemsInView,\n\t\tproperties: {\n\t\t\tdisableLooping,\n\t\t\tslidingType\n\t\t}\n\t} = state;\n\n\tconst prevContentWidth = getContentWidth(contentElms, itemsInView, disableLooping, carouselTrackElm.offsetWidth);\n\n\t//The max width might need to be updated\n\tsetComponentMargins(state);\n\n\tconst currentContentWidth = getContentWidth(contentElms, itemsInView, disableLooping, carouselTrackElm.offsetWidth);\n\tconst widthChanged = (prevContentWidth !== currentContentWidth);\n\n\tconst indicators = calculateIndicators(state);\n\tlet newIndex = originalIndex;\n\tif (newIndex >= indicators.length)\n\t\tnewIndex = indicators.length - 1;\n\n\tif (indicators.length > 1) {\n\n\t\t//If only one item is in view, move it to its proper position after updating spacing\n\t\tif (itemsInView === c.SINGLE_ITEM_IN_VIEW) \n\t\t\ttransformComponents(state, updateState, `${indicators[newIndex].translate}`, c.NONE);\n\n\t\t//If at the right most index, keep it in that position\n\t\telse if ((originalIndex !== 0 && originalIndex === originalIndicators.length - 1) || newIndex >= indicators.length - 1) {\n\t\t\tnewIndex = indicators.length - 1;\n\t\t\ttransformComponents(state, updateState, `${indicators[newIndex].translate}`, c.NONE);\n\n\t\t//If the width was changed, move the component to its new position (NOTE: May change which component is in view)\n\t\t} else if (widthChanged) \n\t\t\ttransformComponents(state, updateState, `${indicators[newIndex].translate}`, c.NONE);\n\n\t\t//if sliding type is next set of items and translations are not the same\n\t\telse if (slidingType === c.NEXT_SET_OF_ITEMS && getTranslation(contentContainerElm) !== indicators[newIndex].translate) \n\t\t\ttransformComponents(state, updateState, `${indicators[newIndex].translate}`, c.NONE);\n\t\t\n\n\t\t//Otherwise, don't change the positioning of the components\n\n\t} else {\n\t\t//Moving components back to starting position\n\t\tnewIndex = 0;\n\t\ttransformComponents(state, updateState, 0, c.NONE);\n\t}\n\n\tupdateState([\n\t\t{path: c.INDICATORS, value: indicators, operation: c.SET, shouldRender: true},\n\t\t{path: c.CURRENT_INDEX, value: newIndex, operation: c.SET, shouldRender: false}\n\t]);\n\n\tdispatch(c.ACTION_INDICATOR_INDEX_UPDATED, {indicator: newIndex, numIndicators: indicators.length});\n};\n\n/**\n * handleResize\n *\n * determine if we need to remove/add duplicates while looping which\n * will move the carousel back to the starting position if required\n * otherwise, update the indicators\n */\nexport const handleResize = (state, updateState, dispatch, prevWidth, currentWidth) => {\n\tconst {\n\t\tcontentContainerElm,\n\t\tcontentElms,\n\t\titemsInView,\n\t\tproperties: {\n\t\t\tdisableLooping,\n\t\t\tslidingType\n\t\t}\n\t} = state;\n\n\tconst contentWidth = getContentWidth(contentElms, itemsInView, disableLooping, currentWidth);\n\n\t//Carousel size was made larger\n\tif (currentWidth > prevWidth) {\n\t\t//Check if content now fits the carousel\n\t\tif (contentWidth < currentWidth && contentWidth > prevWidth) {\n\t\t\t//remove duplicates if looping\n\t\t\tif (!disableLooping) {\n\t\t\t\tconst hostNode = contentContainerElm.getRootNode().host;\n\t\t\t\tdeleteDuplicates(hostNode, contentContainerElm);\n\n\t\t\t\t//Deleting duplicates will cause slot change event\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t//if duplicates were added due to the width change, there will be a slot change event\n\t\tif (!disableLooping && createDuplicates(contentContainerElm, contentElms, itemsInView, slidingType, currentWidth, true)) {\n\t\t\tupdateState({path: 'addDuplicatesOnResize', value: true, operation: c.SET, shouldRender: false});\n\t\t\treturn;\n\t\t}\n\n\t//Carousel size was made smaller\n\t} else if (contentWidth > currentWidth && contentWidth < prevWidth) {\n\t\t//Check if content now fits the carousel\n\t\t\n\t\t\t//Add duplicates for looping\n\t\t\tif (!disableLooping) {\n\t\t\t\tcreateDuplicates(contentContainerElm, contentElms, itemsInView, slidingType, currentWidth, true);\n\n\t\t\t\t//adding duplicates will cause slot change event\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t}\n\n\trecalculateIndicators(state, updateState, dispatch);\n\t\n\t//DEF0595372 - update `IS_TRANSITION_PENDING` state to false\n\t//To make sure transition state doesn't end up in weird state, while autoscroll & resize happens at the same time\n\tupdateState({path: c.IS_TRANSITION_PENDING, value: false, operation: c.SET, shouldRender: false});\n};\n","import {transformComponents, getActionType} from './sn-carousel-common';\nimport c from './sn-carousel-constants';\n\n/**\n * updateNavigationFocus\n *\n * if the focus is on one of the arrows, but that arrow disappears after clicking it, set\n * the focus on the other arrow\n */\nconst updateNavigationFocus = (host, scrollDirection, disableLooping, index, indicators) => {\n\tif (disableLooping) {\n\t\tif (host.shadowRoot.activeElement === host.shadowRoot.querySelector(`.${c.ARROW}.${scrollDirection} now-button-iconic`)) {\n\t\t\tif (scrollDirection === c.LEFT) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\t//using setTimeout in case the right arrow is not visible yet (only two indicators)\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\thost.shadowRoot.querySelector(`.${c.ARROW}.${c.RIGHT} now-button-iconic`).focus();\n\t\t\t\t\t}, 100);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (index === indicators.length - 1) {\n\t\t\t\t\t//using setTimeout in case the left arrow is not visible yet (only two indicators)\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\thost.shadowRoot.querySelector(`.${c.ARROW}.${c.LEFT} now-button-iconic`).focus();\n\t\t\t\t\t}, 100);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * scrollEffect\n *\n * move the carousel to the proper position based on which arrow was clicked\n */\nexport const scrollEffect = (scrollDirection, host, state, updateState, dispatch, actionType) => {\n\n\tconst {\n\t\tindicators, isTransitionPending,\n\t\tcurrentIndex: originalIndex,\n\t\tproperties: {disableLooping, enableAutoScroll}\n\t} = state;\n\tconst metadata = {\n\t\ttype: scrollDirection === 'left' ? 'previous' : 'next',\n\t\tlooped: state.properties.disableLooping ? 'not configured' : false\n\t};\n\n\t// Avoid additional scrolls until the transitionEnd has executed for the previous scroll\n\tif (isTransitionPending)\n\t\treturn;\n\n\tlet newIndex = originalIndex;\n\tlet useLoopTranslate = false;\n\n\tif (scrollDirection === c.RIGHT) {\n\t\tnewIndex++;\n\t\tif (newIndex >= indicators.length) {\n\t\t\tif (enableAutoScroll || !disableLooping) {\n\t\t\t\tnewIndex = 0;\n\t\t\t\tuseLoopTranslate = true;\n\t\t\t\tmetadata.looped = true;\n\t\t\t} else \n\t\t\t\tnewIndex = indicators.length - 1;\n\t\t\t\n\t\t}\n\t} else {\n\t\tnewIndex--;\n\t\tif (newIndex < 0) {\n\t\t\tif (disableLooping) \n\t\t\t\tnewIndex = 0;\n\t\t\telse {\n\t\t\t\tnewIndex = indicators.length - 1;\n\t\t\t\tuseLoopTranslate = true;\n\t\t\t\tmetadata.looped = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (useLoopTranslate)\n\t\ttransformComponents(state, updateState, `${indicators[newIndex].loopTranslate}`, c.TRANSITION_TIME, false);\n\telse\n\t\ttransformComponents(state, updateState, `${indicators[newIndex].translate}`);\n\n\tupdateState([\n\t\t{path: c.CURRENT_INDEX, value: newIndex, operation: c.SET, shouldRender: true},\n\t\t{path: c.IS_TRANSITION_PENDING, value: true, operation: c.SET, shouldRender: false}\n\t]);\n\n\tdispatch(c.ACTION_INDICATOR_INDEX_UPDATED, {indicator: newIndex, numIndicators: indicators.length, actionType});\n\tdispatch(c.METRIC_TRACKED, {eventName: c.NAVIGATION_INTERACTION, metadata});\n\n\tupdateNavigationFocus(host, scrollDirection, disableLooping, newIndex, indicators);\n};\n\n/**\n * indicatorClickedEffect\n *\n * move the carousel to the proper position based on which indicator was clicked\n */\nexport const indicatorClickedEffect = (action, state, updateState, dispatch, actionType) => {\n\tconst {payload: {indicatorClickedIdx, nextIndicator}} = action;\n\tconst {\n\t\tindicators, isTransitionPending\n\t} = state;\n\tconst metadata = {\n\t\ttype: 'dot indicator'\n\t};\n\n\t// Avoid additional scrolls until the transitionEnd has executed for the previous scroll\n\tif (isTransitionPending)\n\t\treturn;\n\n\ttransformComponents(state, updateState, `${indicators[indicatorClickedIdx].translate}`);\n\n\tupdateState([\n\t\t{path: c.CURRENT_INDEX, value: indicatorClickedIdx, operation: c.SET, shouldRender: true},\n\t\t{path: c.IS_TRANSITION_PENDING, value: true, operation: c.SET, shouldRender: false}\n\t]);\n\n\tdispatch(c.ACTION_INDICATOR_INDEX_UPDATED, {indicator: indicatorClickedIdx, numIndicators: indicators.length, actionType});\n\n\tdispatch(c.METRIC_TRACKED, {eventName: c.NAVIGATION_INTERACTION, metadata});\n\n\tif (nextIndicator)\n\t\tdispatch(c.ACTION_ARROW_KEY_PRESSED, {nextIndicator});\n};\n\n/**\n * transitionEndEffect\n *\n * removes the scrolling class added to the carousel track\n * If looping and moving from start to end (or vice versa), update the position to original indicator position\n */\nexport const transitionEndEffect = (dispatch, state, updateState) => {\n\tconst {\n\t\tcarouselTrackElm,\n\t\tindicators, currentIndex, properties: {disableLooping}\n\t} = state;\n\n\tif (indicators.length === 0)\n\t\treturn;\n\n\n\t/*\n\t * When Javascript interprets the code, i.e. especially with transitions, it messes up with order as it executes\n\t * super-fast. To make sure the following effect happens, we are doing the setTimeout way.\n\t *\n\t * 100ms wait is executed to avoid jerky movements of the components\n\t */\n\tsetTimeout(() => {\n\n\t\t//If looping, we want to reset the translations if scrolling before the beginning or after the end\n\n\t\tif (!disableLooping && (currentIndex === 0 || currentIndex === indicators.length - 1))\n\t\t\ttransformComponents(state, updateState, `${indicators[currentIndex].translate}`, c.NONE);\n\n\n\t\t/*\n\t\t * We would like to update isTransitionPending only when we enable transition i.e. by setting the value\n\t\t * of contentContainerElm.style.transition. If not there are issues with scroll\n\t\t */\n\t\tupdateState({path: c.IS_TRANSITION_PENDING, value: false, operation: c.SET, shouldRender: false});\n\n\t\t/*\n\t\t * The scrolling class has been added in arrow or indicator click\n\t\t * It needs to be removed once the transition has completed so the user can scroll\n\t\t * the carousel again\n\t\t */\n\t\tcarouselTrackElm.classList.remove(c.SCROLLING);\n\t}, 100);\n};\n\n/**\n * swipeEffect\n *\n * determines which way to scroll when swiping and then calls scrollEffect\n */\nexport const swipeEffect = (touchStart, touchEnd, touchMove, host, state, updateState, dispatch) => {\n\tconst {\n\t\tcarouselTrackElm, currentIndex, indicators,\n\t\tproperties: {disableLooping}\n\t} = state;\n\n\tif (touchEnd === touchStart || !touchMove) \n\t\treturn;\n\n\tlet scrollDirection = c.RIGHT;\n\t//if swipe right, scroll left\n\tif (touchEnd > touchStart)\n\t\tscrollDirection = c.LEFT;\n\n\t//do not want to scroll past end positions\n\tif (disableLooping && ((currentIndex === 0 && scrollDirection === c.LEFT) ||\n\t\t(currentIndex === indicators.length - 1 && scrollDirection === c.RIGHT)))\n\t\treturn;\n\n\t//c.SCROLLING class is added before transition and is removed on-transitionend\n\tcarouselTrackElm.classList.add(c.SCROLLING);\n\n\tconst actionType = getActionType(scrollDirection);\n\tscrollEffect(scrollDirection, host, state, updateState, dispatch, actionType);\n};\n","import c from './sn-carousel-constants';\n\n/**\n * Sets up an IntersectionObserver to detect when the carousel becomes visible.\n *\n */\nexport const setupVisibilityObserver = (host, dispatch, updateState) => {\n\tif (!host)\n\t\treturn null;\n\n\tconst handleIntersection = (entries) => {\n\t\tif (entries.some(entry => entry.isIntersecting)) {\n\t\t\tupdateState(() => ({\n\t\t\t\tpath: c.IS_HOST_VISIBLE,\n\t\t\t\tvalue: true,\n\t\t\t\toperation: c.SET,\n\t\t\t\tshouldRender: true\n\t\t\t}));\n\t\t\tdispatch(() => ({\n\t\t\t\ttype: c.ACTION_SLOT_CHANGE\n\t\t\t}));\n\t\t}\n\t};\n\n\tconst observer = new IntersectionObserver(handleIntersection);\n\tobserver.observe(host);\n\n\treturn observer;\n};\n\n/**\n * Cleans up observers by disconnecting them\n */\nexport const disconnectObserver = (observer) => {\n\tif (observer)\n\t\tobserver.disconnect();\n};\n","import {t} from 'sn-translate';\nimport c from './sn-carousel-constants';\n// noinspection ES6CheckImport\nimport {actionTypes} from '@servicenow/ui-core';\nimport {get} from '@servicenow/ui-utils';\nimport {\n\tgetComponentsInView,\n\tgetTranslation,\n\ttransformComponents,\n\tautoScrollStart,\n\tautoScrollStop,\n\tgetActionType,\n\tisElementVisible\n} from './sn-carousel-common';\nimport {handleResize, recalculateIndicators} from './sn-carousel-resize';\nimport {\n\tindicatorClickedEffect,\n\tscrollEffect,\n\tswipeEffect,\n\ttransitionEndEffect\n} from './sn-carousel-scroll';\nimport {\n\tresetPositions,\n\tcreateDuplicates,\n\tdeleteDuplicates,\n} from './sn-carousel-duplicates';\nimport {setupComponents, setupIndicators} from './sn-carousel-setup';\nimport { setupVisibilityObserver, disconnectObserver } from './sn-carousel-observers';\nimport track from '@devsnc/ux-metrics';\n\nconst {\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_TREE_RENDERED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_DISCONNECTED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED\n} = actionTypes;\n\nconst isZoomedIn = () => window.devicePixelRatio >= 4;\n\nconst updateItemsInView = (updateState, itemsInView) => {\n\tif (isZoomedIn()) {\n\t\tupdateState([\n\t\t\t{path: c.ITEMS_IN_VIEW, value: c.SINGLE_ITEM_IN_VIEW, operation: c.SET, shouldRender: false}\n\t\t]);\n\t\treturn c.SINGLE_ITEM_IN_VIEW;\n\t}\n\tupdateState([\n\t\t{path: c.ITEMS_IN_VIEW, value: itemsInView, operation: c.SET, shouldRender: false}\n\t]);\n\treturn itemsInView;\n\n};\n\nexport const actionHandlers = {\n\t[COMPONENT_DOM_READY]: {\n\t\teffect({host, state, dispatch, updateProperties, updateState}) {\n\t\t\tconst {enableAutoScroll, pauseAutoScroll} = state.properties;\n\t\t\tif (enableAutoScroll) {\n\t\t\t\tupdateProperties({\n\t\t\t\t\tdisableLooping: false\n\t\t\t\t});\n\t\t\t\tif (!pauseAutoScroll)\n\t\t\t\t\tdispatch(c.ACTION_AUTO_SCROLL_START);\n\t\t\t}\n\n\t\t\t// Set up visibility observer to detect when carousel enters viewport\n\t\t\tconst visibilityObserver = setupVisibilityObserver(host, dispatch, updateState);\n\n\t\t\t// Check if the host is already visible. If so, we don't need to wait for the observer\n\t\t\t// to trigger and can set up components on the first render\n\t\t\tconst isHostVisible = isElementVisible(host);\n\n\t\t\tupdateState([\n\t\t\t\t{path: c.VISIBILITY_OBSERVER, value: visibilityObserver, operation: c.SET, shouldRender: isHostVisible},\n\t\t\t\t{path: c.IS_HOST_VISIBLE, value: isHostVisible, operation: c.SET, shouldRender: isHostVisible}\n\t\t\t]);\n\t\t}\n\t},\n\t[COMPONENT_TREE_RENDERED]: {\n\t\teffect({state, updateState, dispatch}) {\n\t\t\tconst {carouselTrackElm, carouselWidth, properties: {singleItemOnZoom, itemsInView}} = state;\n\t\t\t//For UIB, set up components once the width is non zero\n\t\t\tif (carouselTrackElm && carouselWidth === 0 && carouselWidth !== carouselTrackElm.offsetWidth) {\n\t\t\t\tupdateState({path: c.CAROUSEL_WIDTH, value: carouselTrackElm.offsetWidth, operation: c.SET, shouldRender: false});\n\t\t\t\tif (singleItemOnZoom)\n\t\t\t\t\tstate.itemsInView = updateItemsInView(updateState, itemsInView);\n\n\t\t\t\tsetupComponents(state, updateState, dispatch);\n\t\t\t}\n\n\t\t\t//When the carousel width changes, handle resize\n\t\t\tif (carouselWidth !== 0 && carouselWidth !== carouselTrackElm.offsetWidth && carouselTrackElm.offsetWidth !== 0) {\n\t\t\t\tif (singleItemOnZoom)\n\t\t\t\t\tstate.itemsInView = updateItemsInView(updateState, itemsInView);\n\n\t\t\t\tupdateState({path: c.CAROUSEL_WIDTH, value: carouselTrackElm.offsetWidth, operation: c.SET, shouldRender: false});\n\t\t\t\thandleResize(state, updateState, dispatch, carouselWidth, carouselTrackElm.offsetWidth);\n\t\t\t}\n\n\t\t}\n\t},\n\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\teffect({action, state, updateState, dispatch, updateProperties}) {\n\t\t\tconst propertyChanged = get(action.payload, c.NAME);\n\t\t\tconst {\n\t\t\t\tcarouselTrackElm, contentContainerElm, contentElms,\n\t\t\t\tproperties: {enableViewIndexUpdates, disableLooping, slidingType, singleItemOnZoom, itemsInView: propItemsInView, pauseAutoScroll}\n\t\t\t} = state;\n\n\t\t\tif (propertyChanged === c.CONTENT_REFRESH_TIMESTAMP) {\n\t\t\t\t//remove any duplicate components\n\t\t\t\tconst hostNode = contentContainerElm.getRootNode().host;\n\t\t\t\tdeleteDuplicates(hostNode, contentContainerElm);\n\n\t\t\t\t//Create duplicates components before start of window\n\t\t\t\tcreateDuplicates(contentContainerElm, contentElms, propItemsInView, slidingType, carouselTrackElm.offsetWidth);\n\t\t\t}\n\n\t\t\t//If property changes scrolling logic, reset everything\n\t\t\tif (propertyChanged === c.DISABLE_LOOPING || propertyChanged === c.ITEMS_IN_VIEW\n\t\t\t\t|| propertyChanged === c.SLIDING_TYPE || propertyChanged === c.SINGLE_ITEM_ON_ZOOM) {\n\n\t\t\t\tif (carouselTrackElm !== null)\n\t\t\t\t\tcarouselTrackElm.classList.remove(c.SCROLLING);\n\n\t\t\t\tif (propertyChanged === c.DISABLE_LOOPING || propertyChanged === c.SLIDING_TYPE ) {\n\t\t\t\t\tif (contentContainerElm && getTranslation(contentContainerElm) !== 0) {\n\t\t\t\t\t\tcontentContainerElm.style.transition = c.NONE;\n\t\t\t\t\t\tcontentContainerElm.style.transform = 'translate(0px)';\n\t\t\t\t\t}\n\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tcurrentIndex: 0,\n\t\t\t\t\t\tisTransitionPending: false\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (singleItemOnZoom)\n\t\t\t\t\t\tupdateItemsInView(updateState, propItemsInView);\n\t\t\t\t\telse {\n\t\t\t\t\t\tupdateState([\n\t\t\t\t\t\t\t{path: 'itemsInView', value: propItemsInView, operation: c.SET, shouldRender: false}\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tisTransitionPending: false\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (propertyChanged !== c.DISABLE_LOOPING && !disableLooping)\n\t\t\t\t\tresetPositions(contentContainerElm.getRootNode().host, contentContainerElm);\n\n\t\t\t\tsetupComponents(state, updateState, dispatch, (propertyChanged === c.DISABLE_LOOPING || !disableLooping));\n\t\t\t}\n\n\t\t\tif (propertyChanged === c.ENABLE_AUTOSCROLL) {\n\t\t\t\tif (action.payload.value) {\n\t\t\t\t\tupdateProperties({\n\t\t\t\t\t\tdisableLooping: false\n\t\t\t\t\t});\n\t\t\t\t\tif (!pauseAutoScroll)\n\t\t\t\t\t\tdispatch(c.ACTION_AUTO_SCROLL_START);\n\t\t\t\t\telse\n\t\t\t\t\t\tdispatch(c.ACTION_AUTO_SCROLL_STOP);\n\t\t\t\t} else {\n\t\t\t\t\tupdateProperties({\n\t\t\t\t\t\tdisableLooping: true\n\t\t\t\t\t});\n\t\t\t\t\tdispatch(c.ACTION_AUTO_SCROLL_STOP);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif (propertyChanged === c.PAUSE_AUTOSCROLL) {\n\t\t\t\tif (!action.payload.value)\n\t\t\t\t\tdispatch(c.ACTION_AUTO_SCROLL_START);\n\t\t\t\telse\n\t\t\t\t\tdispatch(c.ACTION_AUTO_SCROLL_STOP);\n\n\t\t\t}\n\n\t\t\tif (propertyChanged === c.STARTING_INDEX && enableViewIndexUpdates) {\n\t\t\t\tconst newIndex = action.payload.value;\n\t\t\t\tconst {indicators, isTransitionPending} = state;\n\t\t\t\tif (!isTransitionPending && indicators.length > 0 && newIndex >= 0 && newIndex < indicators.length) {\n\t\t\t\t\ttransformComponents(state, updateState, `${indicators[newIndex].translate}`, c.NONE);\n\t\t\t\t\tupdateState([\n\t\t\t\t\t\t{path: c.CURRENT_INDEX, value: newIndex, operation: c.SET, shouldRender: true},\n\t\t\t\t\t\t{path: c.IS_TRANSITION_PENDING, value: false, operation: c.SET, shouldRender: false}\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t[c.ACTION_SCROLL]: {\n\t\tstopPropagation: true,\n\t\teffect({action, state, host, updateState, dispatch}) {\n\t\t\tconst {payload: {scrollDirection}} = action;\n\t\t\tscrollEffect(scrollDirection, host, state, updateState, dispatch);\n\t\t}\n\t},\n\t[c.NOW_BUTTON_ICONIC_CLICKED]: {\n\t\teffect({action, state, host, updateState, dispatch, updateProperties}) {\n\t\t\tconst {currentIndex, indicators} = state;\n\t\t\tconst {pauseAutoScroll} = state.properties;\n\t\t\tconst {payload: {carouselTrackElm, scrollDirection, autoScrollAction}} = action;\n\n\t\t\tif (autoScrollAction === c.PAUSE || autoScrollAction === c.PLAY) {\n\t\t\t\tupdateProperties({\n\t\t\t\t\tpauseAutoScroll: !pauseAutoScroll\n\t\t\t\t});\n\t\t\t\tdispatch(c.ACTION_AUTO_SCROLL_PAUSED, {isPaused: !pauseAutoScroll, indicator: currentIndex, numIndicators: indicators.length});\n\t\t\t\taction.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst actionType = getActionType(scrollDirection);\n\n\t\t\t// stop event propagation for now-button-iconic, only if click is from navigation buttons\n\t\t\tif (carouselTrackElm && scrollDirection) {\n\t\t\t\t//c.SCROLLING class is added before transition and is removed on-transitionend\n\t\t\t\tcarouselTrackElm.classList.add(c.SCROLLING);\n\t\t\t\tscrollEffect(scrollDirection, host, state, updateState, dispatch, actionType);\n\t\t\t\taction.stopPropagation();\n\t\t\t}\n\t\t}\n\t},\n\t[c.ACTION_INDICATOR_CLICKED]: {\n\t\tstopPropagation: true,\n\t\teffect({action, state, updateState, dispatch}) {\n\t\t\tconst actionType = getActionType(c.INDICATOR);\n\t\t\tindicatorClickedEffect(action, state, updateState, dispatch, actionType);\n\t\t}\n\t},\n\t[c.ACTION_TRANSITION_END]: {\n\t\tstopPropagation: true,\n\t\teffect({dispatch, state, updateState}) {\n\t\t\ttransitionEndEffect(dispatch, state, updateState);\n\t\t}\n\t},\n\t[c.ACTION_RECALCULATE_INDICATORS]: {\n\t\tstopPropagation: true,\n\t\teffect({dispatch, state, updateState}) {\n\t\t\trecalculateIndicators(state, updateState, dispatch);\n\t\t}\n\t},\n\t[c.ACTION_SLOT_CHANGE]: {\n\t\tstopPropagation: true,\n\t\teffect({dispatch, state, updateState}) {\n\t\t\tsetupComponents(state, updateState, dispatch);\n\t\t}\n\t},\n\t[c.ACTION_TOUCH_END]: {\n\t\tstopPropagation: true,\n\t\teffect({action, state, host, updateState, dispatch}) {\n\t\t\tconst {touchStart, touchMove} = state;\n\t\t\tconst {payload: {touchEnd}} = action;\n\t\t\tswipeEffect(touchStart, touchEnd, touchMove, host, state, updateState, dispatch);\n\t\t\tupdateState({path: 'touchMove', value: false, operation: c.SET, shouldRender: false});\n\t\t}\n\t},\n\t[c.ACTION_UPDATE_INDICATORS]: {\n\t\tstopPropagation: true,\n\t\teffect ({state, updateProperties, updateState, dispatch}) {\n\t\t\tsetupIndicators(state, updateProperties, updateState, dispatch);\n\t\t}\n\t},\n\t[c.NOW_BUTTON_BARE_CLICKED]: {\n\t\teffect({action, dispatch}) {\n\t\t\tconst metadata = {\n\t\t\t\ttype: 'viewAllLink'\n\t\t\t};\n\t\t\t//Only dispatch ACTION_LINK_CLICKED if the 'view all' link was clicked\n\t\t\tif (action.meta.appended) {\n\t\t\t\tconst {component} = action.meta.appended;\n\t\t\t\tif (component === c.SN_CAROUSEL) {\n\t\t\t\t\taction.stopPropagation();\n\t\t\t\t\tdispatch(c.ACTION_LINK_CLICKED);\n\t\t\t\t\tdispatch(c.METRIC_TRACKED, {eventName: c.NAVIGATION_INTERACTION, metadata});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t[c.METRIC_TRACKED]:{\n\t\tstopPropagation: true,\n\t\teffect(coeffects) {\n\t\t\tconst {\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {metadata, eventName}\n\t\t\t\t}\n\t\t\t} = coeffects;\n\t\t\ttrack(coeffects, eventName, metadata);\n\t\t}\n\t},\n\t[c.ACTION_ARROW_KEY_PRESSED]:{\n\t\tstopPropagation: true,\n\t\teffect(coeffects) {\n\t\t\tconst {\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {nextIndicator}\n\t\t\t\t}\n\t\t\t} = coeffects;\n\t\t\tnextIndicator.focus();\n\t\t}\n\t},\n\t[c.ACTION_FOCUS_IN_ITEM]:{\n\t\tstopPropagation: true,\n\t\teffect(coeffects) {\n\t\t\tconst {\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {node, idx}\n\t\t\t\t},\n\t\t\t\tstate, updateState, dispatch\n\t\t\t} = coeffects;\n\t\t\tconst {indicators, carouselTrackElm, currentIndex\n\t\t\t} = state;\n\t\t\tconst inViewComponents = getComponentsInView(state, indicators[currentIndex].translate, false);\n\t\t\tlet indicatorIdx = 0;\n\t\t\twhile (indicatorIdx < indicators.length - 1 && indicators[indicatorIdx + 1].content <= idx)\n\t\t\t\tindicatorIdx += 1;\n\n\t\t\tif (!inViewComponents.includes(node)) {\n\t\t\t\tcarouselTrackElm.classList.add(c.SCROLLING);\n\n\t\t\t\ttransformComponents(state, updateState, `${indicators[indicatorIdx].translate}`);\n\n\t\t\t\tupdateState([\n\t\t\t\t\t{path: c.CURRENT_INDEX, value: indicatorIdx, operation: c.SET, shouldRender: true},\n\t\t\t\t\t{path: c.IS_TRANSITION_PENDING, value: true, operation: c.SET, shouldRender: false}\n\t\t\t\t]);\n\t\t\t\tdispatch(c.ACTION_INDICATOR_INDEX_UPDATED, {indicator: indicatorIdx, numIndicators: indicators.length});\n\t\t\t\tdispatch(c.METRIC_TRACKED, {eventName: c.NAVIGATION_INTERACTION, metadata: {type: 'tab focus'}});\n\t\t\t}\n\t\t}\n\t},\n\t[c.ACTION_AUTO_SCROLL_START]: {\n\t\tstopPropagation: true,\n\t\teffect({dispatch, state, updateState}) {\n\t\t\tautoScrollStart(state, updateState, dispatch);\n\t\t}\n\t},\n\t[c.ACTION_INDICATOR_INDEX_UPDATED]: {\n\t\teffect({dispatch, state, action}) {\n\t\t\t// This event is fired when the screen size is changed, but the indicator position won't move, so we don't need to send an aria message\n\t\t\tif (action.payload.actionType) {\n\t\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\t\tmessage: state.itemsInView === c.SINGLE_ITEM_IN_VIEW ?\n\t\t\t\t\tt('Carousel navigation, On {0} of {1}', action.payload.indicator + 1, action.payload.numIndicators) :\n\t\t\t\t\tt('Carousel navigation, Moved to screen {0} of {1}', action.payload.indicator + 1, action.payload.numIndicators),\n\t\t\t\t\ttype: 'polite'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\n\t[c.ACTION_AUTO_SCROLL_STOP]: {\n\t\tstopPropagation: true,\n\t\teffect({state, updateState}) {\n\t\t\tautoScrollStop(state, updateState);\n\t\t}\n\t},\n\t[COMPONENT_DISCONNECTED]: {\n\t\teffect({state}) {\n\t\t\tconst {visibilityObserver} = state;\n\t\t\tdisconnectObserver(visibilityObserver);\n\t\t}\n\t},\n};\n","import c from './sn-carousel-constants';\n\nexport const initialState = {\n\taddDuplicatesOnResize: false,\n\tcarouselTrackElm: null,\n\tcarouselWidth: 0,\n\tcontentContainerElm: null,\n\tcontentCount: 0,\n\tcontentElms: [],\n\tcurrentIndex: 0,\n\tdidRender: false,\n\terrorMessage: null,\n\tindicators: [],\n\tisSwapping: false,\n\tisTransitionPending: false,\n\thasStarted: false,\n\ttouchStart: 0,\n\tautoScrollIntervalId: c.AUTO_SCROLL_INTERVAL_ID_DEFAULT,\n\tisHostVisible: false,\n\tisContentResolved: false,\n\tvisibilityObserver: null\n};\n","import {t} from 'sn-translate';\nimport c from './sn-carousel-constants';\n\nexport const getIndicators = (state, dispatch) => {\n\tconst {\n\t\tindicators, currentIndex, carouselTrackElm, itemsInView,\n\t\tproperties: {hideDotIndicator}\n\t} = state;\n\n\tconst indicatorSelected = (idx, currentIndex, nextIndicator) => {\n\t\tif (idx !== currentIndex) {\n\t\t\t//c.SCROLLING class is added before transition and is removed on-transitionend\n\t\t\tcarouselTrackElm.classList.add(c.SCROLLING);\n\t\t\tdispatch(c.ACTION_INDICATOR_CLICKED, {indicatorClickedIdx: idx, nextIndicator});\n\t\t}\n\t};\n\n\t//hide if true\n\tif (hideDotIndicator)\n\t\treturn '';\n\n\t// We hide indicators if the number of indicators is greater than 10.\n\tif (indicators.length <= 1 || indicators.length > 10)\n\t\treturn '';\n\n\tconst items = [];\n\tfor (let idx = 0; idx < indicators.length; ++idx) {\n\t\tconst indicatorId = `${c.INDICATOR}${idx + 1}`;\n\t\tconst label = itemsInView === c.SINGLE_ITEM_IN_VIEW ?\n\t\t\tt('Carousel navigation, {0} of {1}', idx + 1, indicators.length) :\n\t\t\tt('Carousel navigation, Go to screen {0} of {1}', idx + 1, indicators.length);\n\t\titems.push(\n\t\t\t<div key={indicatorId} id={indicatorId}>\n\t\t\t\t<button\n\t\t\t\t\tclassName={idx === currentIndex ? c.SELECTED : ''}\n\t\t\t\t\taria-label={label}\n\t\t\t\t\taria-current={idx === currentIndex ? 'true' : 'false'}\n\t\t\t\t\ttitle={label}\n\t\t\t\t\ton-click={() => {\n\t\t\t\t\t\tindicatorSelected(idx, currentIndex);\n\t\t\t\t\t}}\n\t\t\t\t\ton-keydown={event => {\n\t\t\t\t\t\tif (event.key === c.ENTER_KEY) \n\t\t\t\t\t\t\tindicatorSelected(idx, currentIndex);\n\t\t\t\t\t\telse if (event.key === c.ARROW_LEFT || event.key === c.ARROW_RIGHT) {\n\t\t\t\t\t\t\tconst ulElem = event.target.parentElement.parentElement;\n\t\t\t\t\t\t\tconst nextIdx = (currentIndex + (event.key === c.ARROW_RIGHT ? 1 : -1) + indicators.length) % indicators.length;\n\t\t\t\t\t\t\tconst nextIndicator = ulElem.querySelector(`#${c.INDICATOR}${nextIdx + 1} > button`);\n\t\t\t\t\t\t\tindicatorSelected(nextIdx, currentIndex, nextIndicator);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn <nav aria-label={t('Carousel Slider')}>{items}</nav>;\n};\n","import c from './sn-carousel-constants';\n\nconst getDisplayArrowClass = (state, arrowType) => {\n\tconst {currentIndex, indicators, properties: {disableLooping, navPosition}} = state;\n\n\t//if looping, we always show the arrows\n\tif (!disableLooping)\n\t\treturn c.SHOW;\n\n\tlet hideArrow = false;\n\tif (arrowType === c.LEFT)\n\t\thideArrow = (currentIndex === 0);\n\telse\n\t\thideArrow = (currentIndex === indicators.length - 1);\n\n\tif (!hideArrow)\n\t\treturn c.SHOW;\n\n\tif (navPosition === c.CENTER)\n\t\treturn c.HIDE;\n\n\treturn c.DISABLED;\n};\n\nexport const getNavigationControls = state => {\n\tconst {contentCount, indicators, carouselTrackElm, properties: {navPosition, showCompactView, navStyle, navButtonConfig, enableAdvancedNavConfig, leftNavButtonIcon, rightNavButtonIcon}} = state;\n\n\t//If there are no components or if all of the components fit the width of the carousel, don't show arrows\n\tif (contentCount === 0 || indicators.length <= 1)\n\t\treturn '';\n\n\tconst displayLeftArrow = getDisplayArrowClass(state, c.LEFT);\n\tconst displayRightArrow = getDisplayArrowClass(state, c.RIGHT);\n\n\tlet navButtonProps = {\n\t\tsize: 'lg',\n\t\tbare: 'true',\n\t\tvariant: 'primary',\n\t\thidePadding: 'true',\n\t\tclassName:'nav-button',\n\t};\n\n\tif (enableAdvancedNavConfig) {\n\t\tnavButtonProps = {...navButtonProps, ...navButtonConfig};\n\t\t// solution for large button being clipped - a fix for this is in a new stry\n\t\tif (navPosition.includes('bottom')) \n\t\t\tnavButtonProps.hidePadding = 'true';\n\t\t\n\t\n\t}\n\n\treturn (\n\t\t<div className={`${c.ARROWS} ${navPosition}`}>\n\t\t\t<span className={`${c.ARROW} ${c.LEFT} ${navPosition} ${showCompactView ? 'compact' : 'not-compact'} ${displayLeftArrow}`}>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\t{...navButtonProps}\n\t\t\t\t\ticon={enableAdvancedNavConfig ? leftNavButtonIcon : `${c.LEFT_ARROW_ICON}-${navStyle}`}\n\t\t\t\t\ttooltipContent={c.BACKWARD}\n\t\t\t\t\tdisabled={displayLeftArrow === c.DISABLED}\n\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t'aria-label': c.BACKWARD,\n\t\t\t\t\t\t\t...(displayLeftArrow === c.DISABLED && {'aria-disabled': 'true'})\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\tscrollDirection: c.LEFT,\n\t\t\t\t\t\tcarouselTrackElm\n\t\t\t\t\t}}\n\t\t\t\t></now-button-iconic>\n\t\t\t</span>\n\t\t\t<span className={`${c.ARROW} ${c.RIGHT} ${navPosition} ${displayRightArrow}`}>\n\t\t\t\t<now-button-iconic\n\t\t\t\t\t{...navButtonProps}\n\t\t\t\t\ticon={enableAdvancedNavConfig ? rightNavButtonIcon : `${c.RIGHT_ARROW_ICON}-${navStyle}`}\n\t\t\t\t\ttooltipContent={c.FORWARD}\n\t\t\t\t\tdisabled={displayRightArrow === c.DISABLED}\n\t\t\t\t\tconfigAria={{\n\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t'aria-label': c.FORWARD,\n\t\t\t\t\t\t\t...(displayRightArrow === c.DISABLED && {'aria-disabled': 'true'})\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\tscrollDirection: c.RIGHT,\n\t\t\t\t\t\tcarouselTrackElm\n\t\t\t\t\t}}\n\t\t\t\t></now-button-iconic>\n\t\t\t</span>\n\t\t</div>\n\t);\n};\n","import '@servicenow/now-button';\nimport '@servicenow/now-heading';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-template-message';\nimport '@servicenow/now-highlighted-value';\n\nimport {t} from 'sn-translate';\n\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport {getIndicators} from './sn-carousel-indicators';\nimport {getNavigationControls} from './sn-carousel-nav';\nimport {findStartingDuplicates, findEndingDuplicates} from './sn-carousel-duplicates';\nimport c from './sn-carousel-constants';\n\nconst showTitle = state => {\n\tconst {properties: {hideTitle, carouselTitle}} = state;\n\treturn !(hideTitle || carouselTitle.trim().length === 0);\n};\n\nconst displayTitle = state => {\n\tconst {properties: {carouselTitle, disableTextWrapping, titleLevel, titlePosition, titleVariant, badgeConfig}} = state;\n\n\tif (!showTitle(state))\n\t\treturn (<div id={c.TITLE_WRAPPER} className={c.TITLE_WRAPPER}/>);\n\n\tconst badge = badgeConfig.label ? <now-highlighted-value id={c.BADGE} className={c.BADGE} label={badgeConfig.label} color={badgeConfig.color} variant={badgeConfig.variant}/> : null;\n\n\treturn (\n\t\t<div id={c.TITLE_WRAPPER} className={`${c.TITLE_WRAPPER} ${titlePosition}`}>\n\t\t\t<now-heading className={c.TITLE} label={carouselTitle} level={titleLevel} variant={titleVariant} wontWrap={disableTextWrapping} hasNoMargin={true}/> \n\t\t\t{badge}\n\t\t</div>\n\t);\n};\n\nconst showHeaderLink = state => {\n\tconst {properties: {hideLink, linkText, linkIcon}} = state;\n\treturn !(hideLink || (!linkText && !linkIcon));\n};\n\nconst displayHeaderLink = state => {\n\tconst {properties: {linkText, linkIcon}} = state;\n\n\tif (!showHeaderLink(state))\n\t\treturn '';\n\n\treturn (\n\t\t<span className={`${c.HEADER_LINK}`}>\n\t\t\t<now-button-bare\n\t\t\t\tlabel={linkText ? t(linkText) : ''}\n\t\t\t\ticon-end={linkIcon || ''}\n\t\t\t\tvariant={c.SECONDARY}\n\t\t\t\tsize={c.MEDIUM}\n\t\t\t\tclassName={c.BUTTON}\n\t\t\t\thidePadding={true}\n\t\t\t\tconfigAria={{button: {'aria-roledescription': 'link'}}}\n\t\t\t\tappend-to-meta={{component: c.SN_CAROUSEL}}>\n\t\t\t</now-button-bare>\n\t\t</span>\n\t);\n};\n\nconst displayHeader = state => {\n\tconst {properties: {titlePosition}} = state;\n\tif (!showTitle(state) && !showHeaderLink(state))\n\t\treturn <div className={c.CAROUSEL_HEADER_ABSENT}/>;\n\n\treturn (\n\t\t<div className={`${c.CAROUSEL_HEADER} carousel-${titlePosition}`}>\n\t\t\t{displayTitle(state)}\n\t\t\t{displayHeaderLink(state)}\n\t\t</div>\n\t);\n};\n\nconst displayFooter = (state, dispatch) => {\n\tconst {contentCount, indicators, properties: {navPosition}} = state;\n\tlet indicatorClasses = `${c.INDICATORS} ${navPosition}`;\n\tif (navPosition !== c.CENTER && (contentCount > 0 && indicators.length > 1))\n\t\tindicatorClasses += ` ${c.SHOW_ARROWS}`;\n\n\treturn (\n\t\t<div className={c.CAROUSEL_FOOTER}>\n\t\t\t<div className={indicatorClasses}>{getIndicators(state, dispatch)}</div>\n\t\t</div>\n\t);\n};\n\nconst displayEmptyState = state => {\n\tconst {\n\t\temptyStateLabel,\n\t\temptyStateContent,\n\t\temptyStateIllustration,\n\t\ttitleLevel\n\t} = state.properties;\n\n\t//The empty state heading level should be lower than the title heading level\n\tconst headingLevel = (titleLevel === c.TITLE_LEVEL_6 ? parseInt(titleLevel) : parseInt(titleLevel) + 1);\n\treturn (\n\t\t<now-template-message-empty-state\n\t\t\tclassName={c.EMPTY_STATE}\n\t\t\theading={{label: emptyStateLabel, level: headingLevel}}\n\t\t\tcontent={emptyStateContent}\n\t\t\talignment={c.HORIZONTAL}\n\t\t\tillustration={emptyStateIllustration}\n\t\t/>\n\t);\n};\n\nconst view = (state, {\n\tdispatch,\n\tupdateState\n}) => {\n\tconst {\n\t\tcontentContainerElm,\n\t\tcontentCount,\n\t\tcurrentIndex,\n\t\tindicators,\n\t\tisContentResolved,\n\t\tproperties: {\n\t\t\tdisableLooping,\n\t\t\tgradientStyle,\n\t\t\tnavStyle,\n\t\t\tenableAdvancedNavConfig,\n\t\t\tenableAutoScroll,\n\t\t\tshowCompactView,\n\t\t\tpauseAutoScroll\n\t\t}\n\t} = state;\n\n\tlet isLooping = !disableLooping;\n\tif (contentContainerElm !== null && contentCount > 0) {\n\t\tisLooping = (contentContainerElm.assignedNodes().filter(node => node.style?.display !== 'none').length > contentCount);\n\t\tconst startingDuplicates = findStartingDuplicates(contentContainerElm.assignedNodes());\n\t\tconst endingDuplicates = findEndingDuplicates(contentContainerElm.assignedNodes());\n\t\tconst contentContainerLength = contentContainerElm.assignedNodes().length;\n\n\t\tcontentContainerElm.assignedNodes().forEach((node,index) => {\n\t\t\t//If node is a div and does not have a role attribute, skip it\n\t\t\tif (node.tagName === 'DIV' && node.getAttribute('role') === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!startingDuplicates.some(duplicate => duplicate.getAttribute('id') === node.getAttribute('id'))\n\t\t\t\t&& !endingDuplicates.some(duplicate => duplicate.getAttribute('id') === node.getAttribute('id'))) {\n\t\t\t\t//If the node is not a duplicate, set the aria-label to the appended node aria label\n\t\t\t\tlet currentComponentIdx;\n\t\t\t\tif (node.getAttribute('is-swap') === 'true') \n\t\t\t\t\tcurrentComponentIdx = contentContainerLength - endingDuplicates.length - startingDuplicates.length;\n\t\t\t\telse \n\t\t\t\t\tcurrentComponentIdx = index + 1 - startingDuplicates.length;\n\t\t\t\t\n\t\t\t\tconst originalNodeAriaLabel = node.getAttribute('aria-label');\n\t\t\t\tconst appendedNodeAriaLabel = t(`Carousel item ${currentComponentIdx} of ${contentCount}`);\n\n\t\t\t\t//If the node does not have an aria-label, set it to the appended node aria label\n\t\t\t\tif (originalNodeAriaLabel === null) \n\t\t\t\t\tnode.setAttribute('aria-label', appendedNodeAriaLabel);\n\t\t\t\t//If the node already has an aria-label, append the appended node aria label to it\n\t\t\t\telse if (!originalNodeAriaLabel.includes(appendedNodeAriaLabel)) \n\t\t\t\t\tnode.setAttribute('aria-label', `${originalNodeAriaLabel}, ${appendedNodeAriaLabel}`);\n\t\t\t}\t\t\n\t\t});\n\t}\n\n\tconst leftGradientStyle = (isLooping || (currentIndex > 0)) ? gradientStyle : c.NONE;\n\tconst rightGradientStyle = (isLooping || (currentIndex < indicators.length - 1)) ? gradientStyle : c.NONE;\n\tconst roleDesc = t('Carousel of {0} items', contentCount);\n\n\tconst ariaLabelledBy = showTitle(state) ? c.TITLE_WRAPPER : '';\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<section className={c.CAROUSEL_WRAPPER} aria-label={c.CAROUSEL_LABEL}\n\t\t\t\taria-roledescription={roleDesc} aria-labelledby={ariaLabelledBy}> \n\t\t\t\t{displayHeader(state)} \n\t\t\t\t{(isContentResolved && contentCount === 0) ? displayEmptyState(state) : ''}\n\t\t\t\t<div className={c.CAROUSEL_TRACK}\n\t\t\t\t\tref={carouselTrackElm => {\n\t\t\t\t\t\tupdateState(\n\t\t\t\t\t\t\t{path: c.CAROUSEL_TRACK_ELM, value: carouselTrackElm, operation: c.SET, shouldRender: true});\n\n\t\t\t\t\t}}\n\t\t\t\t\ton-touchstart={e => {\n\t\t\t\t\t\tupdateState(\n\t\t\t\t\t\t\t{path: 'touchStart', value: e.changedTouches[0].clientX, operation: c.SET, shouldRender: false});\n\t\t\t\t\t}}\n\t\t\t\t\ton-touchend={e => {\n\t\t\t\t\t\tdispatch(c.ACTION_TOUCH_END, {touchEnd: e.changedTouches[0].clientX});\n\t\t\t\t\t}}\n\t\t\t\t\ton-touchmove={() => {\n\t\t\t\t\t\tupdateState(\n\t\t\t\t\t\t\t{path: 'touchMove', value: true, operation: c.SET, shouldRender: false});\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div className={`${c.GRADIENT} ${c.LEFT} ${leftGradientStyle}`}/>\n\t\t\t\t\t<div className={`${c.GRADIENT} ${c.RIGHT} ${rightGradientStyle}`}/>\n\t\t\t\t\t{enableAutoScroll ? <div className={`pause-play-button ${showCompactView ? 'compact' : 'not-compact'}`}>\n\t\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\t\ticon={`${!pauseAutoScroll ? c.PAUSE_ICON : c.PLAY_ICON}-${enableAdvancedNavConfig ? 'fill' : navStyle}`}\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tbare={true}\n\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\thide-padding={true}\n\t\t\t\t\t\t\tconfig-aria={{button: {'aria-label': !pauseAutoScroll ? c.PAUSE_LABEL : c.PLAY_LABEL}}}\n\t\t\t\t\t\t\ttooltip-content={!pauseAutoScroll ? c.PAUSE_LABEL : c.PLAY_LABEL}\n\t\t\t\t\t\t\tappend-to-payload={{\n\t\t\t\t\t\t\t\tautoScrollAction: !pauseAutoScroll ? c.PAUSE : c.PLAY\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t</now-button-iconic>\n\t\t\t\t\t</div> : ''}\n\t\t\t\t\t{getNavigationControls(state, dispatch)}\n\t\t\t\t\t<slot name={c.CONTENT} className='content-container'\n\t\t\t\t\t\tref={contentContainerElm => {\n\t\t\t\t\t\t\tupdateState(\n\t\t\t\t\t\t\t\t{path: c.CONTENT_CONTAINER_ELM, value: contentContainerElm, operation: c.SET, shouldRender: true});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-slotchange={() => {\n\t\t\t\t\t\t\tdispatch(c.ACTION_SLOT_CHANGE);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton-transitionend={() => {\n\t\t\t\t\t\t\tdispatch(c.ACTION_TRANSITION_END);\n\t\t\t\t\t\t}}>\n\n\t\t\t\t\t</slot>\n\n\t\t\t\t</div>\n\t\t\t\t{displayFooter(state, dispatch)}\n\t\t\t</section>\n\t\t</Fragment>\n\t);\n};\n\nexport default view;","import {actionHandlers} from './sn-carousel-action-handlers';\nimport {createCustomElement} from '@servicenow/ui-core';\nimport {initialState} from './sn-initial-state';\nimport c from './sn-carousel-constants';\nimport resizeBehavior from '@servicenow/behavior-resize';\nimport rtlBehavior from '@servicenow/behavior-rtl';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport styles from './carousel.scss';\nimport view from './sn-carousel-view';\n\n/**\n * Carousel is a component that allows the user to cycle through a list of components.\n *\n * The carousel component shows a subset of components on the page.\n * The user can click on the arrows or indicators to move some of the\n * components out of view and other components into view.\n *\n * Note: In the example below, it does not need to be a now-card component.\n * It can be any type of component as long as it is in the slot.\n *\n * ```jsx\n *\t<sn-carousel>\n * \t\t<now-card slot=\"content\" size=\"lg\">\n *\t\t\t<now-card-header\n *\t\t\t\theading={{label: 'Content 1'}}\n *\t\t/>\n *\t\t</now-card>\n *\t\t<now-card slot=\"content\" size=\"lg\">\n *\t\t\t<now-card-header\n *\t\t\t\theading={{label: 'Content 2'}}\n *\t\t\t/>\n *\t\t</now-card>\n *\t</sn-carousel>\n * ```\n *\n * @seismicElement sn-carousel\n * @summary a container that allows some of the content to display if it is larger\n * than the page\n */\nexport default createCustomElement('sn-carousel', {\n\tproperties: {\n\t\t/**\n\t\t * When true, the title is hidden.\n\t\t *\n\t\t * If hideTitle and hideLink are true, the header will be hidden.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\thideTitle: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The content for the title.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tcarouselTitle: {\n\t\t\tdefault: 'Title',\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Customizable badge, primarily used to display number of items in the Carousel.\n\t\t *\n\t\t * @type {label: string, color: string, variant: string}\n\t\t */\n\t\tbadgeConfig: {\n\t\t\tdefault: {label: '', color: 'low', variant: 'tertiary'},\n\t\t\tschema: {\n\t\t\t\ttype: c.JSON\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Disables title text from wrapping and truncates the title instead.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableTextWrapping: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sets the HTML <hx> heading element used to render the title.\n\t\t * The property is based on the Heading component.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\ttitleLevel: {\n\t\t\tdefault: c.TITLE_LEVEL_2,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING,\n\t\t\t\tenum: [c.TITLE_LEVEL_1,\n\t\t\t\t\tc.TITLE_LEVEL_2,\n\t\t\t\t\tc.TITLE_LEVEL_3,\n\t\t\t\t\tc.TITLE_LEVEL_4,\n\t\t\t\t\tc.TITLE_LEVEL_5,\n\t\t\t\t\tc.TITLE_LEVEL_6\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sets the style variant that is applied to the title.\n\t\t * The property is based on the Heading component.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\ttitleVariant: {\n\t\t\tdefault: c.HEADER_TERTIARY,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING,\n\t\t\t\tenum: [c.HEADER_PRIMARY,\n\t\t\t\t\tc.HEADER_SECONDARY,\n\t\t\t\t\tc.HEADER_TERTIARY,\n\t\t\t\t\tc.TITLE_PRIMARY,\n\t\t\t\t\tc.TITLE_SECONDARY,\n\t\t\t\t\tc.TITLE_TERTIARY\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sets the position of the title. The title can be left-aligned or right-aligned.\n\t\t *\n\t\t * If the space available for the title is not sufficient, the title will be truncated\n\t\t * to the space and 3 ellipses will be shown at the end.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\ttitlePosition: {\n\t\t\tdefault: c.LEFT,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING,\n\t\t\t\tenum: [c.LEFT, c.RIGHT]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * When true, the link is hidden.\n\t\t *\n\t\t * If hideTitle and hideLink are true, the header will be hidden.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\thideLink: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The icon to display at the end of the link text.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tlinkIcon: {\n\t\t\tdefault: '',\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The content for the link.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tlinkText: {\n\t\t\tdefault: '',\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The heading to display if there is no content.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\temptyStateLabel: {\n\t\t\tdefault: c.EMPTY_STATE_LABEL,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The message to display if there is no content.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\temptyStateContent: {\n\t\t\tdefault: c.EMPTY_STATE_MESSAGE,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The illustration to display if there is no content.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\temptyStateIllustration: {\n\t\t\tdefault:c.COMPLETED_TASKS,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING,\n\t\t\t\tenum: [\n\t\t\t\t\tc.ADD_ATTACHMENT,\n\t\t\t\t\tc.ADD_DATA,\n\t\t\t\t\tc.COMPLETED_TASKS,\n\t\t\t\t\tc.ERROR,\n\t\t\t\t\tc.FIRST_TIME_USER,\n\t\t\t\t\tc.INTERRUPTED,\n\t\t\t\t\tc.NO_ACTIVITIES,\n\t\t\t\t\tc.NO_DATA,\n\t\t\t\t\tc.NO_SEARCH_RESULTS,\n\t\t\t\t\tc.OFFLINE,\n\t\t\t\t\tc.PERMISSIONS,\n\t\t\t\t\tc.UNCONFIGURED\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Indicates how to display the items in a carousel: one at a time or multiple times.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\titemsInView: {\n\t\t\tdefault: c.MULTIPLE_ITEMS_IN_VIEW,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING,\n\t\t\t\tenum: [c.MULTIPLE_ITEMS_IN_VIEW, c.SINGLE_ITEM_IN_VIEW]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Indicates how many items move when you click next: a single item or a set of items.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tslidingType: {\n\t\t\tdefault: c.SINGLE_ITEM,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING,\n\t\t\t\tenum: [c.NEXT_SET_OF_ITEMS, c.SINGLE_ITEM]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t * When true, the left arrow on the first component and the right arrow on the last component\n\t\t * are not visible.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableLooping: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The navigation controls can be positioned as follows:\n\t\t *  - center: Vertically centered and displayed on either end\n\t\t *  - bottom-right: Bottom-right aligned\n\t\t *  - bottom-left: Bottom-left aligned\n\t\t *  - bottom-split: Bottom aligned and displayed on either end\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tnavPosition: {\n\t\t\tdefault: c.CENTER,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING,\n\t\t\t\tenum: [c.CENTER, c.BOTTOM_LEFT, c.BOTTOM_RIGHT, c.BOTTOM_SPLIT]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The color of the gradient surrounding the sides of the carousel.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tgradientStyle: {\n\t\t\tdefault: c.PRIMARY,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING,\n\t\t\t\tenum: [c.PRIMARY, c.SECONDARY, c.TERTIARY, c.DARK, c.NONE]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines how the navigation controls look.\n\t\t *  - fill: The icon is filled in.\n\t\t *  - outline: The icon is outlined and the background is filled in.\n\t\t * @type {string}\n\t\t */\n\t\tnavStyle: {\n\t\t\tdefault: c.FILL,\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING,\n\t\t\t\tenum: [c.FILL, c.OUTLINE]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables advanced configuration of the navigation control buttons.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tenableAdvancedNavConfig: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the config for navigation buttons.\n\t\t *\n\t\t * @type {JSON}\n\t\t */\n\t\tnavButtonConfig: {\n\t\t\tdefault: {\n\t\t\t\tbare: true,\n\t\t\t\thidePadding: false,\n\t\t\t\tsize: 'lg'\n\t\t\t},\n\t\t\tschema: {type: 'object'}\n\t\t},\n\t\t/**\n\t\t * Defines the left navigation button icon.\n\t\t * \n\t\t * @type {string}\n\t\t */\n\t\tleftNavButtonIcon: {\n\t\t\tdefault: 'circle-chevron-start-fill',\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the right navigation button icon.\n\t\t * \n\t\t * @type {string}\n\t\t */\n\t\trightNavButtonIcon: {\n\t\t\tdefault: 'circle-chevron-end-fill',\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * When true, the dot indicators will be hidden.\n\t\t *\n\t\t * The dots will also be hidden if there are more than 10.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\thideDotIndicator: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Index of the indicators to move the carousel to when initially loaded/refreshed.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tstartingIndex: {\n\t\t\tdefault: 0,\n\t\t\tschema: {\n\t\t\t\ttype: c.INTEGER\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enables updating the view index after the component has rendered\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tenableViewIndexUpdates: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * When true, the content view will change to single item when zoomed-in to 400%\n\t\t *\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tsingleItemOnZoom: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t * When true, carousel content is scrolled automatically at default interval(1000ms)\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tenableAutoScroll: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t * Enabling compact view, the 'Autoplay' button is shown before the left arrow button.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tshowCompactView: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * \n\t\t * Use this timestamp to signal a refresh of Carousel content so the Carousel can adjust its view accordingly. Only needed when elements flicker during looping.\n\t\t * \n\t\t * @type {string}\n\t\t */\n\t\tcontentRefreshTimestamp: {\n\t\t\tdefault: '',\n\t\t\tschema: {\n\t\t\t\ttype: c.STRING\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Carousel content auto scroll speed interval\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tautoScrollSpeed: {\n\t\t\tdefault: 3000,\n\t\t\tschema: {\n\t\t\t\ttype: c.INTEGER\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t * When true, carousel content autoscroll will be paused\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tpauseAutoScroll: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: c.BOOLEAN\n\t\t\t}\n\t\t}\n\t},\n\tsetInitialState({properties}) {\n\t\treturn {\n\t\t\t...initialState,\n\t\t\titemsInView: properties.itemsInView\n\t\t};\n\t},\n\tactionHandlers,\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview\n\t},\n\tstyles,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: resizeBehavior\n\t\t},\n\t\t{\n\t\t\tbehavior: rtlBehavior\n\t\t}\n\t],\n\tslots: {\n\t\t/**\n\t\t * The content for the slots.\n\t\t */\n\t\tcontent: {}\n\t}\n});\n","import '@servicenow/now-tooltip';\nimport tooltipBehavior from '@servicenow/behavior-tooltip';\nimport truncationBehavior from '@servicenow/behavior-truncation';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {isEqual} from 'lodash';\nimport styles from './_now-carousel-text.scss';\n\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_RENDERED,\n\tARIA_LIVE_REGION_UPDATE_REQUESTED,\n} = actionTypes;\n\nconst timeoutIds = {};\n\nconst announceMessage = (message, dispatch) => {\n\tsetTimeout(() =>\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage,\n\t\t\ttype: 'polite',\n\t\t\treplaceContent: true,\n\t\t}),\n\t);\n};\n\nconst getLabels = (items) => {\n\treturn items.map(({label}) => label);\n};\n\nconst canAnimate = () => {\n\tif (document.hidden) {\n\t\treturn false;\n\t}\n\tif (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nconst view = (state) => {\n\tconst {currentLabel, previousLabel} = state;\n\tconst {css} = state.properties;\n\n\treturn (\n\t\t<div className=\"now-carousel-text\">\n\t\t\t<style>{`.now-carousel-text-label ${css}`}</style>\n\t\t\t<div className=\"now-carousel-text-labels\">\n\t\t\t\t{previousLabel && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey=\"previous\"\n\t\t\t\t\t\tclassName=\"now-carousel-text-label -previous\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"now-carousel-text-label-text\">{previousLabel}</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div key=\"current\" className=\"now-carousel-text-label -current\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"now-carousel-text-label-text\"\n\t\t\t\t\t\tdata-truncation\n\t\t\t\t\t\ton-blur={(e) => {\n\t\t\t\t\t\t\tif (e.target.getAttribute('tabindex') === '-1') {\n\t\t\t\t\t\t\t\te.target.removeAttribute('tabindex');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{currentLabel}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * An animated text label that uses a vertical translation effect to transition\n * between text values. This component can be used to loop continuously and\n * automatically through a list of text values, and/or to transition between\n * specific text values manually without looping.\n *\n * ```jsx\n * const carouselTextItems = [{label: 'Gathering insights…'}, {label: 'Analyzing data…'}];\n *\n * <now-carousel-text items={carouselTextItems} />\n * ```\n *\n * @seismicElement now-carousel-text\n * @summary A text label with animated transitions\n * @uib.label Carousel text\n * @uib.tileIcon now-carousel-text.svg\n * @uib.description A text label with animated transitions\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties items, css, announceLabel\n */\ncreateEnhancedElement('now-carousel-text', {\n\tproperties: {\n\t\t/**\n\t\t * An array of items to display in the carousel. Each item should have\n\t\t * a `label` property that contains the text to display. The carousel\n\t\t * will automatically loop through these items if there are more than one.\n\t\t * @type {Array.<{label: string}>}\n\t\t * @uib.required\n\t\t * @uib.description List of labels to display, in sorted order\n\t\t * @uib.defaultValue [{\"label\": \"Gathering insights…\"}, {\"label\": \"Analyzing data…\"}]\n\t\t * @uib.typeMetadata.emptyStateBehavior EMPTY_ARRAY\n\t\t * @uib.fieldType collection\n\t\t * @uib.typeMetadata.collection.cardProperties.heading { \"heading\": \"label\" }\n\t\t */\n\t\titems: {\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: {type: 'string', translatable: true},\n\t\t\t\t\t},\n\t\t\t\t\trequired: ['label'],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * The CSS to apply to text labels.\n\t\t * @type {string}\n\t\t * @uib.label CSS\n\t\t * @uib.description CSS that is inserted directly before the text and wrapped in a <style> tag. This is not inline CSS, but rather a block of style information that applies to subsequent HTML inside this carousel text component.\n\t\t * @uib.fieldType css\n\t\t * @uib.defaultValue * { }\n\t\t */\n\t\tcss: {\n\t\t\tdefault: '',\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/**\n\t\t * Determines which labels are announced to screen readers. When set to\n\t\t * `none`, no announcements are made. When set to `first`, the first label\n\t\t * is announced, only once. When set to `all`, each label is announced as it\n\t\t * is displayed while auto-looping.\n\t\t * To announce a label, `ARIA_LIVE_REGION_UPDATE_REQUESTED` action is\n\t\t * dispatched with the current label value.\n\t\t * @type {('first'|'all'|'none')}\n\t\t * @uib.description Use this property to announce the label when the current label is updated.\n\t\t */\n\t\tannounceLabel: {\n\t\t\tdefault: 'first',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['first', 'all', 'none'],\n\t\t\t},\n\t\t},\n\t},\n\tsetInitialState({properties}) {\n\t\treturn {labels: getLabels(properties.items)};\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY]: {\n\t\t\teffect({properties, dispatch}) {\n\t\t\t\tconst {announceLabel, items} = properties;\n\t\t\t\tconst shouldAnnounce = ['first', 'all'].includes(announceLabel);\n\t\t\t\tconst firstItemLabel = getLabels(items)[0];\n\t\t\t\tif (shouldAnnounce && firstItemLabel) {\n\t\t\t\t\tannounceMessage(firstItemLabel, dispatch);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\t\teffect({action, dispatch, properties, updateState}) {\n\t\t\t\tconst {announceLabel, items} = properties;\n\t\t\t\tconst {name} = action.payload;\n\t\t\t\tif (name === 'items') {\n\t\t\t\t\tconst nextLabels = getLabels(items);\n\t\t\t\t\tconst firstItemLabel = nextLabels[0];\n\t\t\t\t\tconst shouldAnnounce = ['first', 'all'].includes(announceLabel);\n\t\t\t\t\tupdateState({labels: nextLabels});\n\t\t\t\t\tif (shouldAnnounce && firstItemLabel) {\n\t\t\t\t\t\tannounceMessage(firstItemLabel, dispatch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[COMPONENT_RENDERED]: {\n\t\t\teffect({action, dispatch, properties, state}) {\n\t\t\t\tconst {previousRenderState: prevState} = action.payload;\n\t\t\t\tconst {labels, previousLabel, currentLabel} = state;\n\n\t\t\t\tconst labelsChanged = !isEqual(labels, prevState.labels);\n\t\t\t\tconst previousLabelChanged = previousLabel !== prevState.previousLabel;\n\t\t\t\tconst currentLabelChanged = currentLabel !== prevState.currentLabel;\n\t\t\t\tconst shouldAnimate = canAnimate();\n\n\t\t\t\tconst shouldAnimateLabels =\n\t\t\t\t\tpreviousLabel && previousLabelChanged && shouldAnimate;\n\n\t\t\t\tconst shouldEvaluateTruncation =\n\t\t\t\t\t(currentLabelChanged && !shouldAnimate) ||\n\t\t\t\t\t(previousLabelChanged && !previousLabel && shouldAnimate);\n\n\t\t\t\tif (labelsChanged) {\n\t\t\t\t\tdispatch('PRIVATE#REFRESH_PREVIOUS_CURRENT_IF_NEEDED');\n\t\t\t\t\tclearTimeout(timeoutIds[properties.nowId]);\n\t\t\t\t\tif (labels.length > 1) {\n\t\t\t\t\t\ttimeoutIds[properties.nowId] = setTimeout(() => {\n\t\t\t\t\t\t\tdispatch('PRIVATE#ROTATE_LABELS');\n\t\t\t\t\t\t}, 3000);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (shouldAnimateLabels) {\n\t\t\t\t\tdispatch('PRIVATE#ANIMATE');\n\t\t\t\t}\n\n\t\t\t\tif (shouldEvaluateTruncation) {\n\t\t\t\t\tdispatch('BEHAVIOR_TRUNCATION#EVALUATE');\n\t\t\t\t\tdispatch('PRIVATE#RECONCILE_TOOLTIP');\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#RECONCILE_TOOLTIP': {\n\t\t\teffect({dispatch, host, state}) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tconst {truncationEnabled} = state.behaviors.truncation;\n\t\t\t\t\tconst elem = host.shadowRoot.querySelector('[data-truncation]');\n\t\t\t\t\tconst tooltip = host.shadowRoot.querySelector('now-tooltip');\n\t\t\t\t\tconst hasFocus = elem.matches(':focus');\n\t\t\t\t\tconst hasHover = elem.matches(':hover');\n\n\t\t\t\t\t// Update truncation\n\t\t\t\t\telem.dispatchEvent(new MouseEvent('mouseover'));\n\n\t\t\t\t\t// Update tooltip\n\t\t\t\t\tif (elem.getAttribute('data-tooltip') && (hasFocus || hasHover)) {\n\t\t\t\t\t\telem.setAttribute('data-tooltip', state.currentLabel);\n\t\t\t\t\t\tdispatch('BEHAVIOR_TOOLTIP#SHOW', {target: elem, delay: 0});\n\t\t\t\t\t} else if (tooltip?.opened) {\n\t\t\t\t\t\ttooltip.opened = false;\n\t\t\t\t\t\telem.setAttribute('data-tooltip', ' ');\n\t\t\t\t\t\tdispatch('BEHAVIOR_TOOLTIP#HIDE', {target: elem, delay: 0});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update focusability\n\t\t\t\t\tif (truncationEnabled) {\n\t\t\t\t\t\tconst {offsetWidth, scrollWidth} = elem;\n\t\t\t\t\t\tconst isOverflowing = offsetWidth - scrollWidth < 0;\n\t\t\t\t\t\tif (isOverflowing) {\n\t\t\t\t\t\t\telem.setAttribute('data-truncationignoretabindex', 'true');\n\t\t\t\t\t\t\telem.setAttribute('tabindex', '0');\n\t\t\t\t\t\t} else if (hasFocus) {\n\t\t\t\t\t\t\telem.setAttribute('data-truncationignoretabindex', 'true');\n\t\t\t\t\t\t\telem.setAttribute('tabindex', '-1');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem.removeAttribute('data-truncationignoretabindex');\n\t\t\t\t\t\t\telem.removeAttribute('tabindex');\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.removeAttribute('data-truncationignoretabindex');\n\t\t\t\t\t\telem.removeAttribute('tabindex');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#REFRESH_PREVIOUS_CURRENT_IF_NEEDED': {\n\t\t\teffect({host, state, updateState}) {\n\t\t\t\tconst labelsSelector = '.now-carousel-text-labels';\n\t\t\t\tconst labelsElm = host.shadowRoot.querySelector(labelsSelector);\n\t\t\t\tconst animating = labelsElm?.getAnimations().length > 0;\n\t\t\t\tif (animating) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst currentLabelShouldUpdate = state.currentLabel !== state.labels[0];\n\t\t\t\tif (currentLabelShouldUpdate) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpreviousLabel: canAnimate() ? state.currentLabel : undefined,\n\t\t\t\t\t\tcurrentLabel: state.labels[0],\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst previousLabelShouldReset = state.previousLabel !== undefined;\n\t\t\t\tif (previousLabelShouldReset) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpreviousLabel: undefined,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#ANIMATE': {\n\t\t\teffect({dispatch, host}) {\n\t\t\t\tconst from = {transform: 'translateY(100%)'};\n\t\t\t\tconst to = {transform: 'none'};\n\t\t\t\tconst duration = 500;\n\t\t\t\tconst easing = 'cubic-bezier(0.2, 0, 0.1, 1)';\n\t\t\t\tconst labelsSelector = '.now-carousel-text-labels';\n\t\t\t\tconst labelsElm = host.shadowRoot.querySelector(labelsSelector);\n\t\t\t\tconst anim = labelsElm.animate([from, to], {duration, easing});\n\t\t\t\tanim.addEventListener('finish', () => {\n\t\t\t\t\tanim.cancel();\n\t\t\t\t\tdispatch('PRIVATE#REFRESH_PREVIOUS_CURRENT_IF_NEEDED');\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#ROTATE_LABELS': {\n\t\t\teffect({dispatch, properties, state, updateState}) {\n\t\t\t\tconst labels = [...state.labels];\n\t\t\t\tlabels.push(labels.shift());\n\t\t\t\tupdateState({labels});\n\n\t\t\t\tconst shouldAnnounce = properties.announceLabel === 'all';\n\t\t\t\tconst firstLabel = labels[0];\n\t\t\t\tif (shouldAnnounce && firstLabel) {\n\t\t\t\t\tannounceMessage(firstLabel, dispatch);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [{behavior: truncationBehavior}, {behavior: tooltipBehavior}],\n});\n","import './now-carousel-text';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import { SYNTHESIZED_GENIUS_RESULT_LOADING_STEPS } from \"../../constants\";\nimport \"@servicenow/now-carousel-text\";\nimport \"@servicenow/now-animation\";\n\nconst GeniusResultLoadingState = () => {\n\treturn (\n\t\t<div className=\"synthesized-genius-results-loading-container\">\n\t\t\t<div className=\"header\">\n\t\t\t\t<now-animation\n\t\t\t\t\tloop\n\t\t\t\t\tautoplay\n\t\t\t\t\tsrc=\"/images/@servicenow/now-animation/custom-genai-loader-x-sm-24x24/index.json\"\n\t\t\t\t/>\n\t\t\t\t<now-carousel-text\n\t\t\t\t\titems={[\n\t\t\t\t\t\t{ label: SYNTHESIZED_GENIUS_RESULT_LOADING_STEPS.STEP_1 },\n\t\t\t\t\t\t{ label: SYNTHESIZED_GENIUS_RESULT_LOADING_STEPS.STEP_2 },\n\t\t\t\t\t\t{ label: SYNTHESIZED_GENIUS_RESULT_LOADING_STEPS.STEP_3 },\n\t\t\t\t\t\t{ label: SYNTHESIZED_GENIUS_RESULT_LOADING_STEPS.STEP_4 },\n\t\t\t\t\t\t{ label: SYNTHESIZED_GENIUS_RESULT_LOADING_STEPS.STEP_5 },\n\t\t\t\t\t\t{ label: SYNTHESIZED_GENIUS_RESULT_LOADING_STEPS.STEP_6 }\n\t\t\t\t\t]}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"skeleton-loader\">\n\t\t\t\t<div className=\"skeleton-bone\" />\n\t\t\t\t<div className=\"skeleton-bone\" />\n\t\t\t\t<div className=\"skeleton-bone\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default GeniusResultLoadingState;\n","import {\n\tVERTICAL,\n\tLOADING_STATE_LABEL,\n\tDEFAULT_ARIA_LABEL\n} from \"./constants.js\";\nimport \"@servicenow/now-button\";\nimport \"@servicenow/now-heading\";\nimport \"@servicenow/now-loader\";\nimport isEmpty from \"lodash/isEmpty\";\nimport \"@devsnc/sn-declarative-actions\";\nimport { t } from \"sn-translate\";\nimport { getShouldHideOverflow } from \"./utils\";\nimport \"@servicenow/now-template-message\";\nimport \"@devsnc/sn-carousel\";\nimport \"@devsnc/sn-search-genius-card-assist\";\nimport GeniusResultLoadingState from \"../../contents/loading-state/geniusResultsLoadingState\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport { get } from \"lodash\";\n\nconst LoaderView = () => {\n\treturn (\n\t\t<div className=\"now-data-set-loader-root\">\n\t\t\t<now-loader label={t(LOADING_STATE_LABEL)} />\n\t\t</div>\n\t);\n};\n\nconst EmptyDataRow = ({ noDataMessage }) => (\n\t<now-template-message-empty-state\n\t\theading={{}}\n\t\tcontent={noDataMessage}\n\t\tillustration=\"no-data\"\n\t/>\n);\n\nconst ContentHtml = ({\n\thtmlFragments,\n\tnoDataMessage,\n\tisLayoutVertical,\n\tcardHeightHorizontal,\n\tdataFetchInProgress,\n\tcarouselProps,\n\tactiveThumbnailIndex\n}) => {\n\tif (dataFetchInProgress) return <LoaderView />;\n\n\tif (isEmpty(htmlFragments)) {\n\t\treturn <EmptyDataRow noDataMessage={noDataMessage} />;\n\t}\n\n\tconst className = !isLayoutVertical\n\t\t? `now-content-card-size-${cardHeightHorizontal}`\n\t\t: \"\";\n\tif (!isEmpty(carouselProps)) {\n\t\thtmlFragments.forEach((card, index) => {\n\t\t\t// set active/inactive state to thumbnail based on prop\n\t\t\tcard.data.props.isActive = activeThumbnailIndex === index;\n\t\t\tcard.data.props.slot = \"content\";\n\t\t});\n\t\treturn <sn-carousel {...carouselProps}>{htmlFragments}</sn-carousel>;\n\t}\n\treturn htmlFragments.map(card => <div className={className}>{card}</div>);\n};\n\nconst mediatorWrapper = view => (\n\t<sn-declarative-mediator should-wrap-action>{view}</sn-declarative-mediator>\n);\n\nexport default state => {\n\tconst {\n\t\ttitle,\n\t\tlayout,\n\t\tnoDataMessage,\n\t\thtmlFragments,\n\t\tcardHeightHorizontal,\n\t\tnoBox,\n\t\tdataFetchInProgress,\n\t\tcarouselProps,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tactiveThumbnailIndex,\n\t\tmainCardConfig,\n\t\tisLoading,\n\t\tmessages,\n\t\tcanAskFollowUp\n\t} = state.properties;\n\tconst {\n\t\tbehaviors: { mediaQuery }\n\t} = state;\n\tconst isMobile = mediaQuery.mobileQuery;\n\tconst isLayoutVertical = layout === VERTICAL;\n\tconst box = noBox ? \"\" : \"-box\";\n\tconst isEmpty = htmlFragments && htmlFragments.length > 0 ? \"\" : \"-is-empty\";\n\tconst overflowClip = getShouldHideOverflow(state.properties)\n\t\t? \"-overflow-clip\"\n\t\t: \"\";\n\tconst containerClassName = [\"now-data-row-container\", isEmpty, overflowClip]\n\t\t.filter(Boolean)\n\t\t.join(\" \");\n\tconst ariaLabel = title || DEFAULT_ARIA_LABEL;\n\tconst isSynthesized = get(mainCardConfig, \"grType\", \"\") === \"SYNTHESIZED\";\n\n\treturn mediatorWrapper(\n\t\t// nds-scanner-disable-start inline-styles\n\t\t<div\n\t\t\tclassName=\"gr-carousel-container\"\n\t\t\tclass={{\n\t\t\t\t\"-loading\": isLoading,\n\t\t\t\t\"-mobile\": isMobile,\n\t\t\t\t\"-is-global\": isGlobal\n\t\t\t}}\n\t\t>\n\t\t\t{isLoading ? (\n\t\t\t\t<GeniusResultLoadingState />\n\t\t\t) : (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{isSynthesized && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"main-card-container\": true\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<sn-search-genius-card-assist\n\t\t\t\t\t\t\t\t{...mainCardConfig}\n\t\t\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t\t\tmessages={messages}\n\t\t\t\t\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{!isMobile && !isSynthesized && htmlFragments.length > 0 && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"main-card-container\": true\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<sn-search-genius-card-assist\n\t\t\t\t\t\t\t\t{...mainCardConfig}\n\t\t\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t\t\tmessages={messages}\n\t\t\t\t\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{isMobile && !isSynthesized && htmlFragments.length === 1 && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"main-card-container\": true\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<sn-search-genius-card-assist\n\t\t\t\t\t\t\t\t{...mainCardConfig}\n\t\t\t\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\t\t\t\tmessages={messages}\n\t\t\t\t\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{htmlFragments.length > 1 && !isSynthesized && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`now-data-row-root-element -${layout} ${box} ${\n\t\t\t\t\t\t\t\tisGlobal ? \"-is-global\" : null\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={containerClassName}>\n\t\t\t\t\t\t\t\t<ContentHtml\n\t\t\t\t\t\t\t\t\thtmlFragments={htmlFragments}\n\t\t\t\t\t\t\t\t\tnoDataMessage={noDataMessage}\n\t\t\t\t\t\t\t\t\tisLayoutVertical={isLayoutVertical}\n\t\t\t\t\t\t\t\t\tcardHeightHorizontal={cardHeightHorizontal}\n\t\t\t\t\t\t\t\t\tdataFetchInProgress={dataFetchInProgress}\n\t\t\t\t\t\t\t\t\tcarouselProps={carouselProps}\n\t\t\t\t\t\t\t\t\tactiveThumbnailIndex={activeThumbnailIndex}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t)}\n\t\t</div>\n\t\t// nds-scanner-disable-end\n\t);\n};\n","export const GR_MINI_SELECETED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#GR_MINI_SELECETED\";\n\nexport const CREATE_GR_SUBSCRIPTION =\n\t\"SEARCH_RESULTS_CONTAINER#CREATE_GR_SUBSCRIPTION\";\n\nexport const AMB_SUBSCRIPTION_ACTIONS = {\n\tSUBSCRIPTION_STARTED: \"SUBSCRIPTION_STARTED\",\n\tSUBSCRIPTION_SUCCEEDED: \"SUBSCRIPTION_SUCCEEDED\",\n\tSUBSCRIPTION_FAILED: \"SUBSCRIPTION_FAILED\",\n\tMESSAGE_RECEIVED: \"MESSAGE_RECEIVED\",\n\tSUBSCRIPTION_UNSUBSCRIBED: \"SUBSCRIPTION_UNSUBSCRIBED\"\n};\n\nexport const SN_SEARCH_STREAMING_DEBUGGER_COMPONENT_TREE_RENDERED =\n\t\"SN_SEARCH_STREAMING_DEBUGGER_COMPONENT_TREE_RENDERED\";\nexport const PUBLISH_AMB_MESSAGE = \"PUBLISH_AMB_MESSAGE\";\n\nexport const ASYNC_RESULT_LOADING_TIMEOUT =\n\t\"SN_SEARCH_GENIUS_CARDS#ASYNC_RESULT_LOADING_TIMEOUT\";\n\nexport const GENIUS_CHAT_TRIGGERED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#CHAT_TRIGGERED\";\n\nexport const FEEDBACK_PROVIDED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#FEEDBACK_PROVIDED\";\n\nexport const TOP_RESULTS_CHAT_TRIGGERED =\n\t\"SN_SEARCH_TOP_RESULTS#CHAT_TRIGGERED\";\nexport const TOP_RESULTS_ACTION_DELEGATED =\n\t\"SN_SEARCH_TOP_RESULTS#TOP_RESULTS_ACTION_DELEGATED\";\nexport const DECLARATIVE_ACTION_UPDATE_RENDER =\n\t\"DECLARATIVE_ACTION#UPDATE_RENDER\";\nexport const TOP_RESULTS_DECLARATIVE_ACTION =\n\t\"SN_SEARCH_TOP_RESULTS#DECLARATIVE_ACTION\";\nexport const NLQ_TABLE_SWITCHED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#NLQ_TABLE_SWITCHED\";\nexport const NLQ_TABLE_CLICKED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#NLQ_VIEW_FULL_TABLE_CLICKED\";\nexport const SEARCH_RESULTS_DECLARATIVE_ACTION =\n\t\"SN_SEARCH_RESULTS_CONTAINER#DECLARATIVE_ACTION\";\nexport const NOW_ALERT_ACTION_CLICKED = \"NOW_ALERT#ACTION_CLICKED\";\nexport const ASK_A_FOLLOW_UP_CLIKED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#ASK_A_FOLLOW_UP_CLIKED\";\nexport const SHOW_FULL_ANSWER_CLICKED =\n\t\"SN_SEARCH_GENIUS_CARD_ASSIST#SHOW_FULL_ANSWER_CLICKED\";\n\nexport const TOP_RESULTS_SUBSCRIPTION_SUCCEEDED =\n\t\"SN_SEARCH_TOP_RESULTS#SUBSCRIPTION_SUCCEEDED\";\n","import {\n\ttransformUserCardProps,\n\ttransformQACardProps,\n\ttransformCatalogCardProps,\n\ttransformNLQCardProps,\n\ttransformSynthesizedCardProps\n} from \"@devsnc/sn-search-genius-cards\";\n\nexport const transformProps = (props, type, isMobile = false) => {\n\tswitch (type) {\n\t\tcase \"sn-search-genius-user-card\":\n\t\t\treturn transformUserCardProps(props, isMobile);\n\t\tcase \"sn-search-genius-qa-card\":\n\t\t\treturn transformQACardProps(props);\n\t\tcase \"sn-search-genius-catalog-card\":\n\t\t\treturn transformCatalogCardProps(props);\n\t\tcase \"sn-search-genius-nlq-card\":\n\t\t\treturn transformNLQCardProps(props);\n\t\tcase \"sn-search-genius-synthesized-card\":\n\t\t\treturn transformSynthesizedCardProps(props);\n\t}\n};\n","import GlideSignals from \"sn-signals\";\n\nexport const CATALOG_INTENT = \"catalogFind\";\nexport const USER_INTENT = \"personFind\";\n\nexport const CATALOG_SOURCE_TABLE = \"sc_cat_item\";\nexport const USER_SOURCE_TABLE = \"sys_user\";\n\nexport const ANALYTICS_EVENTS = {\n\tGENIUS_RESULT_CLICK: \"Search Genius Result Action Click\",\n\tGENIUS_RESULT_FEEDBACK_CLICK: \"Search Genius Feedback Action Click\"\n};\n\nexport const ANALYTICS_EVENT_INTENTS = {\n\tQUERY_INTENT_TRIGGERED: \"Triggered NLU Query Intent\",\n\tGENIUS_RESULT_TRIGGERED: \"Triggered NLU Genius Result Intent\"\n};\n\nexport const INFO_EVENT = GlideSignals.priority.INFO;\nexport const GENIUS_RESULT_EVENT = \"GENIUS_RESULT_EVENT\";\nexport const GENIUS_RESULT_TRIGGERED = \"GENIUS_RESULT_TRIGGERED\";\n","import GlideSignals from \"sn-signals\";\n\nconst signalTracker = {\n\ttrackEvent(eventAction, eventPriority, eventModel, config) {\n\t\tGlideSignals.trackEvent(eventAction, eventPriority, eventModel, config);\n\t}\n};\n\nexport default signalTracker;\n","import {\n\tGENIUS_RESULT_TRIGGERED,\n\tINFO_EVENT,\n\tCATALOG_SOURCE_TABLE,\n\tCATALOG_INTENT,\n\tUSER_INTENT,\n\tUSER_SOURCE_TABLE,\n\tANALYTICS_EVENTS,\n\tGENIUS_RESULT_EVENT,\n\tANALYTICS_EVENT_INTENTS\n} from \"./constants\";\n\nimport { GENIUS_RESULT_CLICK_RANK } from \"../constants\";\n\nimport isEmpty from \"lodash/isEmpty\";\nimport { SEARCH_RESULTS_DECLARATIVE_ACTION } from \"../actions\";\nimport signalTracker from \"./signalTracker\";\n\nexport const trackGeniusResultTriggeredEvent = searchAnalyticsPayload => {\n\tsignalTracker.trackEvent(\n\t\tGENIUS_RESULT_TRIGGERED,\n\t\tINFO_EVENT,\n\t\tsearchAnalyticsPayload,\n\t\t{ trackAsync: true }\n\t);\n};\n\nexport const getGeniusResultIndex = (model, state) => {\n\tconst { geniusResultsReceived } = state;\n\tconst sysId = model.sysId ? model.sysId : model.sys_id;\n\tvar grIndex = geniusResultsReceived.items.findIndex(geniusResult => {\n\t\tconst targetId = geniusResult.propValues.model.sysId\n\t\t\t? geniusResult.propValues.model.sysId\n\t\t\t: geniusResult.propValues.model.sys_id;\n\t\treturn targetId == sysId;\n\t});\n\treturn grIndex + 1;\n};\n\nexport const trackGeniusResultEvent = (\n\taction,\n\tdispatch,\n\tstate,\n\tproperties,\n\tisFeedback = false,\n\tcustomValues = {}\n) => {\n\tconst eventMetadata = _generateCoreEventMetadata(action, properties, state);\n\tconst {\n\t\tsearchContextConfigId,\n\t\tqueryTerm,\n\t\tappliedFacetFilters,\n\t\tappliedFilterIds,\n\t\tappliedSortOptionId,\n\t\tresultSysId,\n\t\ttableType,\n\t\tnumber,\n\t\tlabelDescription,\n\t\tsourceTable,\n\t\taisDocId,\n\t\tcardType,\n\t\tuserId,\n\t\tsessionId,\n\t\tuseLegacySignalTracking,\n\t\tmodel\n\t} = eventMetadata;\n\n\tconst {\n\t\tsearchResultMetadata: { matchedQueryIntents, matchedGeniusResultIntents }\n\t} = properties;\n\n\tconst actionPayload = action.payload.action;\n\tconst actionValues =\n\t\tactionPayload && actionPayload.actionType\n\t\t\t? {\n\t\t\t\t\tactionType: actionPayload.actionType,\n\t\t\t\t\tactionId: actionPayload.assignmentId,\n\t\t\t\t\tactionValue: actionPayload.label\n\t\t\t  }\n\t\t\t: {};\n\n\tconst matchedIntentsPerSource = _getIntentsBySource(\n\t\tsourceTable,\n\t\tmatchedGeniusResultIntents\n\t);\n\n\tconst geniusResultConfigId = model.ais_genius_config_id;\n\tlet signalsPayload = {\n\t\tsearchContextConfigId,\n\t\tqueryTerm,\n\t\tresultSysId,\n\t\ttableType,\n\t\tnumber,\n\t\tlabelDescription,\n\t\tsourceTable,\n\t\taisDocId,\n\t\tcardType,\n\t\tmatchedIntentsPerSource,\n\t\tgeniusResultConfigId,\n\t\t...actionValues,\n\t\t...customValues\n\t};\n\n\tif (!useLegacySignalTracking) {\n\t\tsignalsPayload = {\n\t\t\t...signalsPayload,\n\t\t\tappliedFacetFilters,\n\t\t\tappliedFilterIds,\n\t\t\tappliedSortOptionId,\n\t\t\tuserId,\n\t\t\tsessionId\n\t\t};\n\t}\n\n\tif (!isFeedback) {\n\t\tsignalsPayload[GENIUS_RESULT_CLICK_RANK] = getGeniusResultIndex(\n\t\t\tmodel,\n\t\t\tstate\n\t\t);\n\t}\n\n\tconst baseAnalyticsPayload = {\n\t\t...signalsPayload,\n\t\tsearchTerm: queryTerm\n\t};\n\n\tif (matchedQueryIntents) {\n\t\tbaseAnalyticsPayload.matchedQueryIntents = matchedQueryIntents;\n\t}\n\n\tif (baseAnalyticsPayload.actionValue) {\n\t\tbaseAnalyticsPayload.actionName = baseAnalyticsPayload.actionValue;\n\t}\n\n\tconst analyticsPayload = isFeedback\n\t\t? _getGeniusResultFeedbackModel(baseAnalyticsPayload)\n\t\t: _getGeniusResultAnalyticsModel(baseAnalyticsPayload);\n\n\tconst finalPayload = {\n\t\t...action.payload,\n\t\tanalyticsPayload\n\t};\n\n\tsignalTracker.trackEvent(GENIUS_RESULT_EVENT, INFO_EVENT, signalsPayload, {\n\t\tdelay: 0,\n\t\trequirePreceedingEventCompletion: true,\n\t\tcallback: () => dispatch(SEARCH_RESULTS_DECLARATIVE_ACTION, finalPayload),\n\t\ttrackAsync: true\n\t});\n};\n\nconst _getGeniusResultSourceTable = (actionPayload, model) => {\n\tif (actionPayload && actionPayload.table) {\n\t\treturn actionPayload.table;\n\t}\n\treturn model[\"columns.table\"] != null ? model[\"columns.table\"] : model.table;\n};\n\nconst _getGeniusResultLabel = (model, actionPayload, state) => {\n\t// Legacy (non-NA) GRs and NA Actions\n\tlet label =\n\t\tmodel[\"columns.ai_search_teaser_title\"] ||\n\t\tmodel[\"columns.name\"] ||\n\t\tmodel[\"columns.label\"];\n\tif (!isEmpty(label)) return label;\n\n\t// Now Assist Q&A citation clicks\n\tif (\n\t\t!isEmpty(actionPayload) &&\n\t\t\"sys_id\" in actionPayload &&\n\t\t!isEmpty(model) &&\n\t\t\"columns.citations\" in model\n\t) {\n\t\tconst { sys_id } = actionPayload;\n\t\tconst citationsList = JSON.parse(model[\"columns.citations\"]);\n\t\tconst citation = citationsList.find(citation => citation.sys_id === sys_id);\n\t\tif (citation) {\n\t\t\treturn citation.short_description;\n\t\t}\n\t}\n\n\t// Synthesized response citations:\n\tif (\n\t\tstate.rawGeniusResultsReceived &&\n\t\t!isEmpty(state.rawGeniusResultsReceived.items)\n\t) {\n\t\tconst matchingItem = state.rawGeniusResultsReceived.items.find(\n\t\t\titem =>\n\t\t\t\titem.propValues.model[\"columns.result_type\"] === \"citation\" &&\n\t\t\t\titem.propValues.model[\"columns.table\"] === actionPayload.table &&\n\t\t\t\titem.propValues.model[\"columns.sys_id\"] === actionPayload.sysId\n\t\t);\n\t\tif (matchingItem) {\n\t\t\treturn matchingItem.propValues.model[\"columns.name\"];\n\t\t}\n\n\t\tconst knowledgeCitationsGr = state.rawGeniusResultsReceived.items.find(\n\t\t\titem =>\n\t\t\t\titem.propValues.model[\"columns.result_type\"] === \"citation\" &&\n\t\t\t\t!(\"columns.table\" in item.propValues.model)\n\t\t);\n\t\tif (knowledgeCitationsGr) {\n\t\t\tconst citationsList = JSON.parse(\n\t\t\t\tknowledgeCitationsGr.propValues.model[\"columns.citations\"]\n\t\t\t);\n\t\t\tconst citation = citationsList.find(\n\t\t\t\tcitation => citation.sys_id === actionPayload.sys_id\n\t\t\t);\n\t\t\tif (citation) {\n\t\t\t\treturn citation.short_description;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\";\n};\n\nconst _getIntentsBySource = (sourceTable, matchedGeniusResultIntents) => {\n\tconst intents = !isEmpty(matchedGeniusResultIntents)\n\t\t? matchedGeniusResultIntents.split(\",\")\n\t\t: [];\n\n\tlet matchedIntentsPerSource = \"\";\n\tintents.forEach(intent => {\n\t\tif (sourceTable === CATALOG_SOURCE_TABLE && intent.includes(\"catalog\")) {\n\t\t\tmatchedIntentsPerSource = CATALOG_INTENT;\n\t\t} else if (sourceTable === USER_SOURCE_TABLE && intent.includes(\"person\")) {\n\t\t\tmatchedIntentsPerSource = USER_INTENT;\n\t\t}\n\t});\n\n\treturn matchedIntentsPerSource;\n};\n\nconst _generateCoreEventMetadata = (action, properties, state) => {\n\tconst { searchResultMetadata, searchContextConfigId } = properties;\n\tconst {\n\t\tpayload: {\n\t\t\tmodel,\n\t\t\ttype,\n\t\t\taction: { actionPayload }\n\t\t}\n\t} = action;\n\n\tconst typeOfAction = type ? type : model.type;\n\n\tconst {\n\t\tsearchTerm,\n\t\tcorrectedSearchTerm,\n\t\tmatchedGeniusResultIntents\n\t} = searchResultMetadata;\n\n\tconst useLegacySignalTracking = isEmpty(\n\t\tsearchResultMetadata.searchAnalyticsPayload\n\t);\n\n\tconst searchAnalyticsPayload = !useLegacySignalTracking\n\t\t? searchResultMetadata.searchAnalyticsPayload\n\t\t: {};\n\n\tconst resultSysId =\n\t\tactionPayload?.sys_id || actionPayload?.sysId || model.sysId || \"\";\n\tconst number = model.number || \"\";\n\tconst queryTerm = !isEmpty(correctedSearchTerm)\n\t\t? correctedSearchTerm\n\t\t: searchTerm;\n\n\tlet sourceTable = \"\";\n\tlet labelDescription = \"\";\n\tlet aisDocId = \"\";\n\tlet cardType = \"\";\n\tif (model) {\n\t\tsourceTable = _getGeniusResultSourceTable(actionPayload, model);\n\t\tlabelDescription = _getGeniusResultLabel(model, actionPayload, state);\n\t\taisDocId = model.aisDocId || sourceTable.concat(\"_\", model.sysId);\n\n\t\tcardType = model.model || \"\"; // Model is the type of the Genius Card Template\n\t}\n\treturn {\n\t\tsearchResultMetadata,\n\t\tsearchContextConfigId,\n\t\tmodel,\n\t\ttype: typeOfAction,\n\t\tsearchTerm,\n\t\tqueryTerm,\n\t\tappliedFacetFilters: useLegacySignalTracking\n\t\t\t? []\n\t\t\t: searchAnalyticsPayload.appliedFacetFilters,\n\t\tappliedFilterIds: useLegacySignalTracking\n\t\t\t? []\n\t\t\t: searchAnalyticsPayload.appliedFilterIds,\n\t\tappliedSortOptionId: useLegacySignalTracking\n\t\t\t? []\n\t\t\t: searchAnalyticsPayload.appliedSortOptionId,\n\t\tmatchedGeniusResultIntents,\n\t\tresultSysId,\n\t\tnumber,\n\t\tsourceTable,\n\t\tlabelDescription,\n\t\taisDocId,\n\t\tcardType,\n\t\tuserId: useLegacySignalTracking ? \"\" : searchAnalyticsPayload.userId,\n\t\tsessionId: useLegacySignalTracking ? \"\" : searchAnalyticsPayload.sessionId,\n\t\tuseLegacySignalTracking,\n\t\tsearchAnalyticsPayload\n\t};\n};\n\nconst _getGeniusResultFeedbackModel = model => {\n\tconst analyticsPayload = {\n\t\tparentEvent: {\n\t\t\tEventName: ANALYTICS_EVENTS.GENIUS_RESULT_FEEDBACK_CLICK,\n\t\t\tEventPayload: {\n\t\t\t\t\"Search Query\": model.searchTerm,\n\t\t\t\t\"Genius Type\": model.cardType,\n\t\t\t\t\"Genius Result Doc Id\": model.aisDocId,\n\t\t\t\t\"Genius Result Title\": model.labelDescription,\n\t\t\t\t\"Clicked Action Label\": model.actionName,\n\t\t\t\t\"Clicked Action Label Id\": model.actionId\n\t\t\t}\n\t\t},\n\t\tchildEvents: []\n\t};\n\n\treturn analyticsPayload;\n};\n\nconst _getChildEvents = model => {\n\tconst childEvents = [];\n\tconst geniusResultIntents = isEmpty(model.matchedGeniusResultIntents)\n\t\t? []\n\t\t: model.matchedGeniusResultIntents.split(\",\");\n\n\tgeniusResultIntents.forEach(intent =>\n\t\tchildEvents.push({\n\t\t\tEventName: ANALYTICS_EVENT_INTENTS.GENIUS_RESULT_TRIGGERED,\n\t\t\tEventPayload: {\n\t\t\t\t\"Search Query\": model.searchTerm,\n\t\t\t\t\"Triggered Intent\": intent\n\t\t\t}\n\t\t})\n\t);\n\n\treturn childEvents;\n};\n\nconst _getGeniusResultAnalyticsModel = model => {\n\tconst analyticsPayload = {\n\t\tparentEvent: {\n\t\t\tEventName: ANALYTICS_EVENTS.GENIUS_RESULT_CLICK,\n\t\t\tEventPayload: {\n\t\t\t\t\"Search Query\": model.searchTerm,\n\t\t\t\t\"Genius Type\": model.cardType,\n\t\t\t\t\"Genius Result Doc Id\": model.aisDocId,\n\t\t\t\t\"Genius Result Title\": model.labelDescription,\n\t\t\t\t\"Clicked Action Label\": model.actionName,\n\t\t\t\t\"Clicked Action Label Id\": model.actionId\n\t\t\t}\n\t\t},\n\t\tchildEvents: _getChildEvents(model)\n\t};\n\n\treturn analyticsPayload;\n};\n","import { isEmpty, get } from \"lodash\";\nexport const generateVAPayload = (data, payload, properties) => {\n\tlet intention = \"\";\n\tlet newPayload = {};\n\tlet type = \"\";\n\tlet index = \"\";\n\tlet sysIdOfRecord = \"\";\n\tif (isEmpty(data)) {\n\t\treturn newPayload;\n\t}\n\tconst { searchResultMetadata } = properties;\n\tif (payload.type === \"ASK_A_FOLLOW_UP\") {\n\t\tintention = \"followup\";\n\t\ttype = \"followup\";\n\t}\n\n\tif (payload.type === \"catalog_click\") {\n\t\tintention = \"execute\";\n\t\ttype = \"genius\";\n\t\tsysIdOfRecord = get(payload, \"clickedItemSysId\", \"\");\n\t}\n\n\tconst geniusResultsVA = {\n\t\titems: []\n\t};\n\n\tdata.items.forEach((element, i) => {\n\t\tvar vaItem = Object.assign({}, get(element, \"vaEvamItem\", {}));\n\t\tvar vaItemSysId = get(vaItem.propValues.model, \"sys_id\", \"\");\n\n\t\tif (\n\t\t\t!isEmpty(sysIdOfRecord) &&\n\t\t\t!isEmpty(vaItemSysId) &&\n\t\t\tvaItemSysId === sysIdOfRecord\n\t\t) {\n\t\t\tindex = i - 1;\n\t\t}\n\t\tgeniusResultsVA.items.push(vaItem);\n\t});\n\n\tnewPayload = {\n\t\tintention: intention,\n\t\tutterance: searchResultMetadata.searchTerm,\n\t\trawResult: {\n\t\t\texecutionResult: {\n\t\t\t\tsearchMetadata: {\n\t\t\t\t\tsearchResultMetadata\n\t\t\t\t},\n\t\t\t\tsearchResultsTemplates: {\n\t\t\t\t\titems: []\n\t\t\t\t},\n\t\t\t\tgeniusResultsTemplates: {\n\t\t\t\t\t...geniusResultsVA\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tselectedItem: {\n\t\t\tindex: index,\n\t\t\ttype: type\n\t\t}\n\t};\n\treturn newPayload;\n};\n","import { isEmpty, get, isEqual } from \"lodash\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport {\n\tcreateAmbSubscriptionEffect,\n\tcreateAmbPublishEffect\n} from \"@servicenow/ui-effect-amb\";\nimport { actionTypes } from \"@servicenow/ui-core\";\nimport { t } from \"sn-translate\";\nimport { SYNTHESIZED_ANSWER_LABEL } from \"@devsnc/sn-search-genius-cards\";\n\nimport { transformProps } from \"./utils/transformProps\";\nimport {\n\tAMB_SUBSCRIPTION_ACTIONS,\n\tASYNC_RESULT_LOADING_TIMEOUT,\n\tCREATE_GR_SUBSCRIPTION,\n\tTOP_RESULTS_CHAT_TRIGGERED,\n\tTOP_RESULTS_ACTION_DELEGATED\n} from \"./actions\";\nimport {\n\ttrackGeniusResultTriggeredEvent,\n\ttrackGeniusResultEvent,\n\tgetGeniusResultIndex\n} from \"./signals/utils\";\n\nimport { generateVAPayload } from \"./utils/utils\";\n\nimport {\n\tDELEGATED_ACTION_TYPES,\n\tSR_ONLY_MESSAGES,\n\tEXTERNAL_CONTENT_TYPE,\n\tGENIUS_RESULT_CLICK_RANK,\n\tCITATION_TYPES,\n\tPOSITIVE_FEEDBACK_TYPE,\n\tNEGATIVE_FEEDBACK_TYPE,\n\tFEEDBACK_ACTION_TYPE,\n\tDEFAULT_QA_FEEDBACK_OPTIONS,\n\tACTION_TYPE\n} from \"./constants\";\nconst { ARIA_LIVE_REGION_UPDATE_REQUESTED } = actionTypes;\n\nconst filterExternalGRs = items => {\n\tconst geniusResultItems = items.filter(item => {\n\t\t//Filter isSourceTypeNotExternal -> For any GR apart from external GRs which might not have source_type field present or source_type as internal\n\t\tconst isSourceTypeNotExternal = !get(\n\t\t\titem.propValues.model,\n\t\t\t\"columns.source_type\",\n\t\t\t\"\"\n\t\t).includes(EXTERNAL_CONTENT_TYPE);\n\t\t//Filter condition -> To identify that the not expired token_present condition is only executed for external GRs\n\t\tconst isSourceTypeExternalAndTokenTrue =\n\t\t\tisEqual(\n\t\t\t\tget(item.propValues.model, \"columns.source_type\", \"\"),\n\t\t\t\tEXTERNAL_CONTENT_TYPE\n\t\t\t) &&\n\t\t\tisEqual(get(item.propValues.model, \"columns.token_present\", \"\"), \"true\");\n\t\treturn isSourceTypeNotExternal || isSourceTypeExternalAndTokenTrue;\n\t});\n\n\treturn geniusResultItems;\n};\n\nexport const handleGRMiniSelected = ({ state, action, updateState }) => {\n\tconst { payload: props } = action;\n\n\tupdateState({\n\t\tactiveThumbnailIndex: state.geniusResultsReceived.items.findIndex(\n\t\t\titem => item.propValues.model.sysId === props.model.sysId\n\t\t)\n\t});\n\n\tupdateState({ mainCardConfig: props });\n};\n\nexport const handleComponentConnected = coeffects => {\n\tconst { dispatch, properties, state, updateState } = coeffects;\n\tconst { searchResultMetadata, debugMode } = properties;\n\n\tif (!isEmpty(searchResultMetadata)) {\n\t\tsetSearchRequestIdToStateAndResetMessages(\n\t\t\tsearchResultMetadata,\n\t\t\tupdateState\n\t\t);\n\t\tresetAsyncGeniusResultLoadingTimeout(coeffects);\n\t\tif (!debugMode) {\n\t\t\tinitializeSubscriptionForGeniusResults({\n\t\t\t\tproperties,\n\t\t\t\tdispatch,\n\t\t\t\tstate,\n\t\t\t\tupdateState\n\t\t\t});\n\t\t}\n\t} else {\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage: SR_ONLY_MESSAGES.GENIUS_RESULTS_LOADING,\n\t\t\ttype: \"polite\",\n\t\t\treplaceContent: true\n\t\t});\n\t}\n};\n\nconst isSynthesized = geniusResultsTemplates => {\n\treturn geniusResultsTemplates.items.some(\n\t\titem => item.template === \"sn-search-genius-synthesized-card\"\n\t);\n};\n\nconst setSearchRequestIdToStateAndResetMessages = (\n\tsearchResultMetadata,\n\tupdateState\n) => {\n\t// Clear accumulated AMB messages for new search\n\tif (window.__AIS_ACCUMULATED_AMB_STREAMING_MESSAGES__) {\n\t\twindow.__AIS_ACCUMULATED_AMB_STREAMING_MESSAGES__ = [];\n\t}\n\n\tupdateState({\n\t\tsearchRequestId: searchResultMetadata?.primarySearchRequestId,\n\t\tmessages: {},\n\t\talertDismissed: false\n\t});\n};\n\nconst prepareNewGrData = (carouselData, isGlobal, disableHref) => {\n\tif (!isEmpty(carouselData) && !isEmpty(carouselData.items)) {\n\t\tconst newCarouselData = cloneDeep(carouselData);\n\t\tnewCarouselData.items.forEach(item => {\n\t\t\titem.propValues.isGlobal = isGlobal;\n\t\t\titem.propValues.disableHref = disableHref;\n\t\t});\n\t\tnewCarouselData.items = filterExternalGRs(newCarouselData.items);\n\t\treturn newCarouselData;\n\t}\n\treturn carouselData;\n};\n\nexport const handleComponentPropertyChanged = coeffects => {\n\tconst {\n\t\taction,\n\t\tproperties,\n\t\tdispatch,\n\t\tstate,\n\t\tupdateState,\n\t\tupdateProperties\n\t} = coeffects;\n\tconst {\n\t\tpayload: { name, value }\n\t} = action;\n\tconst { currentAMBSubcsriptionChannel } = state;\n\tconst {\n\t\tsearchResultMetadata: { asyncGeniusResultChannelName, awaitingResults }\n\t} = properties;\n\tif (name === \"searchResultMetadata\") {\n\t\tsetSearchRequestIdToStateAndResetMessages(value, updateState);\n\t\tresetAsyncGeniusResultLoadingTimeout(coeffects);\n\t\tif (asyncGeniusResultChannelName != currentAMBSubcsriptionChannel) {\n\t\t\tinitializeSubscriptionForGeniusResults({\n\t\t\t\tproperties,\n\t\t\t\tdispatch,\n\t\t\t\tstate,\n\t\t\t\tupdateState\n\t\t\t});\n\t\t} else {\n\t\t\t// same channel -> update loading flag and populate from current props\n\t\t\tupdateState({ asyncGeniusResultsLoading: awaitingResults });\n\n\t\t\tif (awaitingResults) {\n\t\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\t\tmessage: SR_ONLY_MESSAGES.GENIUS_RESULTS_LOADING,\n\t\t\t\t\ttype: \"polite\",\n\t\t\t\t\treplaceContent: true\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tpopulateGeniusResultsFromProps({ properties, dispatch, updateState });\n\t\t\t}\n\t\t}\n\t} else if (name === \"syncGeniusResultsLoading\" && value) {\n\t\t/**\n\t\t * if loading value changes to true, that means a new search is triggered\n\t\t * we're preparing the component by erasing old data for new\n\t\t */\n\t\tupdateState({\n\t\t\tgeniusResultsReceived: null,\n\t\t\tmainCardConfig: null,\n\t\t\tactiveThumbnailIndex: 0,\n\t\t\tasyncGeniusResultsLoading: true,\n\t\t\tasyncGeniusResultTimerExpired: false,\n\t\t\tstreamingStarted: false,\n\t\t\talertDismissed: false\n\t\t});\n\t\tupdateProperties({\n\t\t\tsensitivityFilterMatched: false\n\t\t});\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage: SR_ONLY_MESSAGES.GENIUS_RESULTS_LOADING,\n\t\t\ttype: \"polite\",\n\t\t\treplaceContent: true\n\t\t});\n\t}\n};\n\nexport const createGRSubscription = coeffects => {\n\tconst { action } = coeffects;\n\tconst { payload } = action;\n\tconst { channelName } = payload;\n\tconst effect = createAmbSubscriptionEffect(channelName, {\n\t\tsubscribeStartedActionType: AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_STARTED,\n\t\tsubscribeSucceededActionType:\n\t\t\tAMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_SUCCEEDED,\n\t\tsubscribeFailedActionType: AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_FAILED,\n\t\tmessageReceivedActionType: AMB_SUBSCRIPTION_ACTIONS.MESSAGE_RECEIVED,\n\t\tunsubscribeSucceededActionType:\n\t\t\tAMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_UNSUBSCRIBED\n\t});\n\teffect.effect(...effect.args, coeffects);\n};\n\nexport const sortGeniusResults = geniusResultList => {\n\tgeniusResultList.sort((gr1, gr2) => {\n\t\treturn (\n\t\t\tparseInt(gr1.propValues.model.order) -\n\t\t\tparseInt(gr2.propValues.model.order)\n\t\t);\n\t});\n};\n\nexport const populateGeniusResultsFromProps = ({\n\tproperties,\n\tdispatch,\n\tupdateState\n}) => {\n\tconst {\n\t\tsearchResultMetadata: { awaitingResults, searchTerm, correctedSearchTerm },\n\t\tcarouselData,\n\t\tisGlobal,\n\t\tdisableHref\n\t} = properties;\n\n\t// Only populate when we already have results to show\n\tif (awaitingResults) return;\n\n\tlet newCarouselData = prepareNewGrData(carouselData, isGlobal, disableHref);\n\tif (!newCarouselData || isEmpty(newCarouselData.items)) return;\n\n\tconst stateUpdate = {};\n\tif (isSynthesized(newCarouselData)) {\n\t\tconst grsReceived = cloneDeep(newCarouselData);\n\t\tstateUpdate.rawGeniusResultsReceived = grsReceived;\n\t\tstateUpdate.geniusResultsReceived = {\n\t\t\t...newCarouselData,\n\t\t\titems: consolidateActionsAndCitationsToFirst(\n\t\t\t\tnewCarouselData.items\n\t\t\t).splice(1)\n\t\t};\n\t\t// leave only the synthesized item in the cloned array as the main\n\t\tnewCarouselData.items.splice(1);\n\t} else {\n\t\tsortGeniusResults(newCarouselData.items);\n\t\tstateUpdate.geniusResultsReceived = newCarouselData;\n\t}\n\n\ttry {\n\t\tstateUpdate.mainCardConfig = transformProps(\n\t\t\tnewCarouselData.items[0].propValues,\n\t\t\tnewCarouselData.items[0].template\n\t\t);\n\t} catch (e) {\n\t\tconsole.warn(\"Error transforming props for GR/main card: \", e);\n\t}\n\n\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: t(\n\t\t\t`showing ${newCarouselData.items.length} genius results for {0}`,\n\t\t\tcorrectedSearchTerm ? correctedSearchTerm : searchTerm\n\t\t),\n\t\ttype: \"polite\",\n\t\treplaceContent: true\n\t});\n\n\tupdateState(stateUpdate);\n};\n\nexport const initializeSubscriptionForGeniusResults = ({\n\tproperties,\n\tdispatch,\n\tstate,\n\tupdateState\n}) => {\n\tconst {\n\t\tsearchResultMetadata: { asyncGeniusResultChannelName, awaitingResults }\n\t} = properties;\n\tconst { currentAMBSubcsriptionChannel } = state;\n\t// Unsubscribe from any existing channel\n\tif (\n\t\t!isEmpty(currentAMBSubcsriptionChannel) &&\n\t\tcurrentAMBSubcsriptionChannel != asyncGeniusResultChannelName\n\t) {\n\t\tdispatch(CREATE_GR_SUBSCRIPTION, {\n\t\t\tchannelName: currentAMBSubcsriptionChannel,\n\t\t\tsubscribe: false\n\t\t});\n\t}\n\n\tconst stateUpdates = {\n\t\tcurrentAMBSubcsriptionChannel: asyncGeniusResultChannelName,\n\t\tactiveThumbnailIndex: 0,\n\t\tasyncGeniusResultsLoading: awaitingResults\n\t};\n\n\t// Always apply current props to state if we already have results\n\tpopulateGeniusResultsFromProps({ properties, dispatch, updateState });\n\n\tupdateState(stateUpdates);\n\tif (\n\t\tasyncGeniusResultChannelName != currentAMBSubcsriptionChannel &&\n\t\t!isEmpty(asyncGeniusResultChannelName)\n\t) {\n\t\tdispatch(CREATE_GR_SUBSCRIPTION, {\n\t\t\tchannelName: asyncGeniusResultChannelName,\n\t\t\tsubscribe: true\n\t\t});\n\t}\n};\n\nconst setPropsForStreaming = coeffects => {\n\tconst { updateState, properties } = coeffects;\n\tconst { isGlobal, disableHref } = properties;\n\tconst geniusResultsTemplates = {\n\t\titems: [\n\t\t\t{\n\t\t\t\ttemplate: \"sn-search-genius-synthesized-card\",\n\t\t\t\tpropValues: {\n\t\t\t\t\tdocumentationUrl:\n\t\t\t\t\t\t\"https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB1298697\",\n\t\t\t\t\tcitations: \"[]\",\n\t\t\t\t\tshowHeaderTooltip: \"true\",\n\t\t\t\t\tisGlobal: isGlobal,\n\t\t\t\t\tdisableHref: disableHref,\n\t\t\t\t\tdescriptionFontSize: \"md\",\n\t\t\t\t\tshowAboutInfo: \"true\",\n\t\t\t\t\tfeedbackOpions: DEFAULT_QA_FEEDBACK_OPTIONS,\n\t\t\t\t\tallowFeedback: \"true\",\n\t\t\t\t\tisOneBox: \"true\",\n\t\t\t\t\tsparkleText: SYNTHESIZED_ANSWER_LABEL,\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tsys_id: \"60c9729248d71210fb8bc1117ad4a16b\",\n\t\t\t\t\t\t\"columns.sys_id\": \"60c9729248d71210fb8bc1117ad4a16b\",\n\t\t\t\t\t\tsysId: \"60c9729248d71210fb8bc1117ad4a16b\",\n\t\t\t\t\t\tais_genius_config_id: \"088c73a5430302104eaff03a5ab8f22f\",\n\t\t\t\t\t\tmodel: \"Now Assist Multi-Content Response\",\n\t\t\t\t\t\ttable: \"v_search_genius_result\"\n\t\t\t\t\t},\n\t\t\t\t\tactions: []\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t};\n\n\tconst newMainCardConfig = transformProps(\n\t\tgeniusResultsTemplates.items[0].propValues,\n\t\tgeniusResultsTemplates.items[0].template\n\t);\n\n\tupdateState(() => {\n\t\treturn {\n\t\t\tgeniusResultsReceived: geniusResultsTemplates,\n\t\t\tmainCardConfig: newMainCardConfig,\n\t\t\tasyncGeniusResultsLoading: false,\n\t\t\tstreamingStarted: true\n\t\t};\n\t});\n};\n\nconst consolidateActionsAndCitationsToFirst = items => {\n\tif (items && items.length <= 1) return items;\n\tlet first = items[0];\n\tconst mergedCitations = {\n\t\t[CITATION_TYPES.KB]: {\n\t\t\tcitations: []\n\t\t},\n\t\t[CITATION_TYPES.CATALOG]: {\n\t\t\tcitations: []\n\t\t},\n\t\t[CITATION_TYPES.PEOPLE]: {\n\t\t\tcitations: []\n\t\t},\n\t\t[CITATION_TYPES.SKILL]: {\n\t\t\tcitations: []\n\t\t},\n\t\t[CITATION_TYPES.KG]: {\n\t\t\tcitations: []\n\t\t},\n\t\t[CITATION_TYPES.AGENT]: {\n\t\t\tcitations: []\n\t\t},\n\t\t[CITATION_TYPES.ADDITIONAL_SOURCES]: {\n\t\t\tcitations: []\n\t\t}\n\t};\n\tlet firstActions = first.propValues.actions || [];\n\tfor (let i = 1; i < items.length; i++) {\n\t\tvar resultType = get(items[i].propValues.model, \"columns.result_type\", \"\");\n\t\tvar table = get(items[i].propValues.model, \"columns.table\", \"\");\n\t\tvar sourceType = get(items[i].propValues.model, \"columns.source_type\", \"\");\n\t\tif (isEqual(resultType, \"citation\")) {\n\t\t\tvar newItem = cloneDeep(items[i]);\n\t\t\tvar citationExistsInProps = get(\n\t\t\t\titems[i].propValues,\n\t\t\t\t\"model['columns.citations']\"\n\t\t\t);\n\t\t\tif (!isEmpty(citationExistsInProps)) {\n\t\t\t\tmergedCitations[CITATION_TYPES.KB].citations.push(\n\t\t\t\t\t...JSON.parse(items[i].propValues.citations || \"[]\")\n\t\t\t\t);\n\t\t\t} else if (isEqual(sourceType, CITATION_TYPES.ADDITIONAL_SOURCES)) {\n\t\t\t\tmergedCitations[CITATION_TYPES.ADDITIONAL_SOURCES].citations.push(\n\t\t\t\t\tnewItem\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tif (table === \"sc_cat_item\") {\n\t\t\t\t\tmergedCitations[CITATION_TYPES.CATALOG].citations.push(newItem);\n\t\t\t\t} else if (table === \"sys_user\") {\n\t\t\t\t\tmergedCitations[CITATION_TYPES.PEOPLE].citations.push(newItem);\n\t\t\t\t} else if (table === \"sys_gen_ai_skill\") {\n\t\t\t\t\tmergedCitations[CITATION_TYPES.SKILL].citations.push(newItem);\n\t\t\t\t} else if (\n\t\t\t\t\ttable === \"sn_aia_agent\" ||\n\t\t\t\t\ttable === \"sn_aia_agent_usecase\"\n\t\t\t\t) {\n\t\t\t\t\tmergedCitations[CITATION_TYPES.AGENT].citations.push(newItem);\n\t\t\t\t} else {\n\t\t\t\t\tmergedCitations[CITATION_TYPES.KG].citations.push(newItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// spread consolidated citations and actions\n\t}\n\n\tfirst.propValues.citations = mergedCitations;\n\tfirst.propValues.actions = firstActions;\n\n\treturn items;\n};\n\nconst handleStreamingData = coeffects => {\n\tconst { updateState, action, state } = coeffects;\n\tconst { searchRequestId } = state;\n\tconst { payload } = action;\n\t// relay messages that belong to latest search request only\n\tif (payload.data.searchRequestId === searchRequestId) {\n\t\tupdateState(({ state }) => {\n\t\t\tconst clone = cloneDeep(state);\n\t\t\tclone.messages[payload.data.sequenceNumber] = payload;\n\t\t\treturn {\n\t\t\t\toperation: \"merge\",\n\t\t\t\tpath: \"messages\",\n\t\t\t\tvalue: clone.messages\n\t\t\t};\n\t\t});\n\t}\n};\n\nexport const accumulateAMBMessagesToWindow = payload => {\n\tconst currentSearchRequestId = payload.data?.searchRequestId;\n\tconst sequenceNumber = payload.data?.sequenceNumber;\n\n\tif (!window.__AIS_ACCUMULATED_AMB_STREAMING_MESSAGES__) {\n\t\twindow.__AIS_ACCUMULATED_AMB_STREAMING_MESSAGES__ = [];\n\t}\n\n\tconst existingMessages = window.__AIS_ACCUMULATED_AMB_STREAMING_MESSAGES__;\n\n\tconst hasDifferentRequestId =\n\t\texistingMessages.length > 0 &&\n\t\texistingMessages[0]?.data?.searchRequestId !== currentSearchRequestId;\n\n\t// Clear array only when starting a NEW search request\n\tif (hasDifferentRequestId) {\n\t\twindow.__AIS_ACCUMULATED_AMB_STREAMING_MESSAGES__ = [];\n\t}\n\n\twindow.__AIS_ACCUMULATED_AMB_STREAMING_MESSAGES__.push({\n\t\t...payload,\n\t\ttimestamp: Date.now(),\n\t\tsequenceNumber\n\t});\n};\n\nexport const handleAmbMessageReceived = coeffects => {\n\tconst { action, state, properties } = coeffects;\n\tconst { payload } = action;\n\tconst {\n\t\tasyncGeniusResultsMaxWaitTime = 15,\n\t\tsearchResultMetadata\n\t} = properties;\n\tconst { primarySearchRequestId } = searchResultMetadata;\n\taccumulateAMBMessagesToWindow(payload);\n\t// bail out if timeout expired\n\tif (state.asyncGeniusResultTimerExpired) {\n\t\tconsole.debug(\n\t\t\t`Received payload on AMB, but ignoring due to timeout having already occurred after ${asyncGeniusResultsMaxWaitTime} seconds`\n\t\t);\n\t\treturn;\n\t} else {\n\t\t// no timer required if AMB received a message already\n\t\tcancelTimer(coeffects);\n\t}\n\n\t// only update streaming message/final response if request IDs match\n\tif (\n\t\tprimarySearchRequestId ===\n\t\t\tpayload.data?.searchMetadata?.searchResultMetadata\n\t\t\t\t?.primarySearchRequestId ||\n\t\tprimarySearchRequestId === payload.data?.searchRequestId\n\t) {\n\t\tif (payload.data?.messageType === \"STREAMING\") {\n\t\t\tsetPropsForStreaming(coeffects);\n\t\t\thandleStreamingData(coeffects);\n\t\t} else {\n\t\t\tasyncGeniusResultReceived(coeffects);\n\t\t}\n\t}\n};\n\nexport const asyncGeniusResultReceived = coeffects => {\n\tconst {\n\t\taction,\n\t\tproperties,\n\t\tdispatch,\n\t\tstate,\n\t\tupdateState,\n\t\tupdateProperties\n\t} = coeffects;\n\t// This is where we will update the GRs data and actually display to users\n\tconst { payload } = action;\n\tconst primarySearchRequestId =\n\t\tpayload?.data?.searchMetadata.searchResultMetadata.primarySearchRequestId;\n\tlet geniusResultsTemplates = payload?.data?.geniusResultsTemplates || {};\n\tlet hasSensitivityFilterMatched =\n\t\tpayload?.data?.searchMetadata.searchResultMetadata.sensitivityFilter\n\t\t\t?.hasMatch;\n\tconst {\n\t\tasyncGeniusResultsMaxWaitTime,\n\t\tisGlobal,\n\t\tdisableHref,\n\t\tsearchResultMetadata\n\t} = properties;\n\tconst {\n\t\tasyncGeniusResultsLoading,\n\t\tstreamingStarted,\n\t\tsearchRequestId\n\t} = state;\n\tconst {\n\t\tawaitingResults,\n\t\tcorrectedSearchTerm,\n\t\tsearchTerm\n\t} = searchResultMetadata;\n\n\tcancelTimer(coeffects);\n\n\tif (\n\t\thasSensitivityFilterMatched === true ||\n\t\thasSensitivityFilterMatched === \"true\"\n\t) {\n\t\tupdateProperties({ sensitivityFilterMatched: true });\n\t\treturn;\n\t}\n\n\tif (streamingStarted && primarySearchRequestId === searchRequestId) {\n\t\tupdateState(({ state }) => {\n\t\t\tconst stateUpdates = [\n\t\t\t\t{\n\t\t\t\t\toperation: \"set\",\n\t\t\t\t\tpath: \"asyncGeniusResultsLoading\",\n\t\t\t\t\tvalue: false\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst clone = cloneDeep(state);\n\t\t\tif (!isEmpty(geniusResultsTemplates)) {\n\t\t\t\tconst grsReceived = cloneDeep(geniusResultsTemplates);\n\t\t\t\tclone.rawGeniusResultsReceived = grsReceived;\n\t\t\t\tif (!isEmpty(geniusResultsTemplates.items)) {\n\t\t\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\t\t\tmessage: t(\n\t\t\t\t\t\t\t`showing a synthesized genius result for {0}`,\n\t\t\t\t\t\t\tcorrectedSearchTerm ? correctedSearchTerm : searchTerm\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttype: \"polite\",\n\t\t\t\t\t\treplaceContent: true\n\t\t\t\t\t});\n\n\t\t\t\t\tconst finalPropValues = consolidateActionsAndCitationsToFirst(\n\t\t\t\t\t\tgeniusResultsTemplates.items\n\t\t\t\t\t)[0].propValues;\n\t\t\t\t\tclone.messages[\"finalResponse\"] = finalPropValues;\n\t\t\t\t\tstateUpdates.push({\n\t\t\t\t\t\toperation: \"merge\",\n\t\t\t\t\t\tpath: \"messages\",\n\t\t\t\t\t\tvalue: clone.messages\n\t\t\t\t\t});\n\t\t\t\t\tstateUpdates.push({\n\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\tpath: \"rawGeniusResultsReceived\",\n\t\t\t\t\t\tvalue: clone.rawGeniusResultsReceived\n\t\t\t\t\t});\n\t\t\t\t\tif (finalPropValues.documentationUrl) {\n\t\t\t\t\t\tstateUpdates.push({\n\t\t\t\t\t\t\toperation: \"set\",\n\t\t\t\t\t\t\tpath: \"mainCardConfig\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t...clone.mainCardConfig,\n\t\t\t\t\t\t\t\tdocumentationUrl: finalPropValues.documentationUrl\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn stateUpdates;\n\t\t});\n\t\tconst searchAnalyticsPayload =\n\t\t\tpayload?.data?.searchMetadata?.searchResultMetadata\n\t\t\t\t?.searchAnalyticsPayload;\n\t\ttrackGeniusResultTriggeredEvent(searchAnalyticsPayload);\n\t} else {\n\t\tconst stateUpdates = {\n\t\t\tasyncGeniusResultsLoading: false\n\t\t};\n\t\tif (\n\t\t\t!awaitingResults ||\n\t\t\tprimarySearchRequestId != searchResultMetadata.primarySearchRequestId\n\t\t) {\n\t\t\tconsole.debug(\n\t\t\t\t`Received genius results for search request: ${primarySearchRequestId}, but ${\n\t\t\t\t\tawaitingResults\n\t\t\t\t\t\t? `looking for genius results for search request ${searchResultMetadata.primarySearchRequestId}`\n\t\t\t\t\t\t: \"not awaiting any additional results (awaitingResults = false)\"\n\t\t\t\t}. Ignoring payload.`\n\t\t\t);\n\t\t\treturn; // Ignore GRs for other queries within the same session\n\t\t}\n\n\t\tif (!asyncGeniusResultsLoading) {\n\t\t\tconst grCount = get(geniusResultsTemplates, \"items\", []).length;\n\t\t\tconsole.debug(\n\t\t\t\t`Received ${grCount || \"empty\"} genius result${\n\t\t\t\t\tgrCount == 1 ? \"\" : \"s\"\n\t\t\t\t} on async payload, but ignoring due to timeout having already occurred after ${asyncGeniusResultsMaxWaitTime} seconds`\n\t\t\t);\n\t\t\treturn; // Ignore GRs once we've hit a loading timeout\n\t\t}\n\n\t\tif (isEmpty(geniusResultsTemplates)) {\n\t\t\t// If an error occurs when sending the aync GRs through EVAM, geniusResultsTemplates. In this case,\n\t\t\t// log a warning, update state to stop waiting, and return\n\t\t\tconsole.warn(\n\t\t\t\t\"Received an empty or null value for geniusResultsTemplates on AMB payload - check logs for potential errors processing the Genius Results\"\n\t\t\t);\n\t\t\tupdateState(stateUpdates);\n\t\t\treturn;\n\t\t}\n\n\t\tgeniusResultsTemplates.items.forEach(item => {\n\t\t\titem.propValues[\"isOneBox\"] = true;\n\t\t});\n\t\tconst grsReceived = cloneDeep(geniusResultsTemplates);\n\t\tstateUpdates.rawGeniusResultsReceived = grsReceived;\n\t\tconst isSynthesizedResponse = isSynthesized(geniusResultsTemplates);\n\n\t\tif (isSynthesizedResponse && !isEmpty(geniusResultsTemplates.items)) {\n\t\t\tstateUpdates.geniusResultsReceived = {\n\t\t\t\t...geniusResultsTemplates,\n\t\t\t\titems: consolidateActionsAndCitationsToFirst(\n\t\t\t\t\tgeniusResultsTemplates.items\n\t\t\t\t).slice(1)\n\t\t\t};\n\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\tmessage: t(\n\t\t\t\t\t`showing a synthesized genius result for {0}`,\n\t\t\t\t\tcorrectedSearchTerm ? correctedSearchTerm : searchTerm\n\t\t\t\t),\n\t\t\t\ttype: \"polite\",\n\t\t\t\treplaceContent: true\n\t\t\t});\n\t\t} else {\n\t\t\tstateUpdates.geniusResultsReceived = geniusResultsTemplates;\n\t\t\tif (!isEmpty(geniusResultsTemplates.items)) {\n\t\t\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\t\t\tmessage: t(\n\t\t\t\t\t\t`showing {0} genius results for {1}`,\n\t\t\t\t\t\tgeniusResultsTemplates.items?.length,\n\t\t\t\t\t\tcorrectedSearchTerm ? correctedSearchTerm : searchTerm\n\t\t\t\t\t),\n\t\t\t\t\ttype: \"polite\",\n\t\t\t\t\treplaceContent: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (!isEmpty(geniusResultsTemplates.items)) {\n\t\t\tgeniusResultsTemplates.items.forEach(item => {\n\t\t\t\titem.propValues.isGlobal = isGlobal;\n\t\t\t\titem.propValues.disableHref = disableHref;\n\t\t\t});\n\t\t\tgeniusResultsTemplates.items = filterExternalGRs(\n\t\t\t\tgeniusResultsTemplates.items\n\t\t\t);\n\t\t\tif (geniusResultsTemplates.items.length > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tconst newMainCardConfig = transformProps(\n\t\t\t\t\t\tgeniusResultsTemplates.items[0].propValues,\n\t\t\t\t\t\tgeniusResultsTemplates.items[0].template\n\t\t\t\t\t);\n\t\t\t\t\tstateUpdates.mainCardConfig = newMainCardConfig;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\"Error generating main card config for top genius result.\",\n\t\t\t\t\t\te\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// This if condition is to prevent logging to signals for synthesized responses that don't have\n\t\t\t// citations (e.g. disambiguation response/NAF response, which we shouldn't receive in Web)\n\t\t\tif (!isSynthesizedResponse || geniusResultsTemplates.items.length > 1) {\n\t\t\t\tconst searchAnalyticsPayload =\n\t\t\t\t\tpayload?.data?.searchMetadata?.searchResultMetadata\n\t\t\t\t\t\t?.searchAnalyticsPayload;\n\t\t\t\ttrackGeniusResultTriggeredEvent(searchAnalyticsPayload);\n\t\t\t}\n\t\t}\n\t\tupdateState(stateUpdates);\n\t}\n};\n\nexport const handleGeniusChatTriggered = ({ action, dispatch, properties }) => {\n\tconst { payload } = action;\n\tconst { rawGeniusResultsReceived } = properties;\n\n\tconst vaPayload = generateVAPayload(\n\t\trawGeniusResultsReceived,\n\t\tpayload,\n\t\tproperties\n\t);\n\tif (!isEmpty(rawGeniusResultsReceived)) {\n\t\tdispatch(TOP_RESULTS_CHAT_TRIGGERED, vaPayload);\n\t} else {\n\t\tconsole.warn(\n\t\t\t`Failure to trigger chat: Unable to find selected Genius Result in state.geniusResultsReceived`\n\t\t);\n\t}\n};\n\nexport const handleAskAFollowUpSignalEventInternally = coeffects => {\n\tconst { action, dispatch, properties, state } = coeffects;\n\n\tconst {\n\t\tpayload: { model }\n\t} = action;\n\n\tconst cardType = model.model || \"Custom\"; // Model is the type of the Genius Card Template\n\n\tconst customPayloadValues = {\n\t\tactionType: \"Ask a Follow Up\",\n\t\tactionId: `${cardType}_ask_a_follow_up`,\n\t\tgeniusResultConfigId: model.ais_genius_config_id\n\t};\n\n\ttrackGeniusResultEvent(\n\t\taction,\n\t\tdispatch,\n\t\tstate,\n\t\tproperties,\n\t\ttrue,\n\t\tcustomPayloadValues\n\t);\n};\n\nconst handleShowFullAnswerSignalEventInternally = coeffects => {\n\tconst { action, dispatch, properties, state } = coeffects;\n\n\tconst {\n\t\tpayload: { model }\n\t} = action;\n\n\tconst cardType = model.model || \"Custom\"; // Model is the type of the Genius Card Template\n\n\tconst customPayloadValues = {\n\t\tactionType: \"Show Full Answer\",\n\t\tactionId: `${cardType}_show_full_answer`,\n\t\tgeniusResultConfigId: model.ais_genius_config_id\n\t};\n\n\ttrackGeniusResultEvent(\n\t\taction,\n\t\tdispatch,\n\t\tstate,\n\t\tproperties,\n\t\ttrue,\n\t\tcustomPayloadValues\n\t);\n};\n\nexport const handleAskAFollowUpClickedForSignals = coeffects => {\n\tconst { action, dispatch, state, properties } = coeffects;\n\tconst { delegateActions } = properties;\n\tif (delegateActions) {\n\t\thandleDelegatedAction(\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tDELEGATED_ACTION_TYPES.ASK_A_FOLLOW_UP\n\t\t);\n\t} else {\n\t\thandleAskAFollowUpSignalEventInternally(coeffects);\n\t}\n};\n\nexport const handleShowFullAnswerClickedForSignals = coeffects => {\n\tconst { action, dispatch, state, properties } = coeffects;\n\tconst { delegateActions } = properties;\n\tif (delegateActions) {\n\t\thandleDelegatedAction(\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tDELEGATED_ACTION_TYPES.SHOW_FULL_ANSWER\n\t\t);\n\t} else {\n\t\thandleShowFullAnswerSignalEventInternally(coeffects);\n\t}\n};\n\nconst handleDelegatedAction = (action, dispatch, state, type) => {\n\tconst { payload } = action;\n\tpayload[GENIUS_RESULT_CLICK_RANK] = getGeniusResultIndex(\n\t\tpayload.model,\n\t\tstate\n\t);\n\tdispatch(TOP_RESULTS_ACTION_DELEGATED, {\n\t\tdelegatedActionType: type,\n\t\t...payload\n\t});\n};\n\nexport const handleResultActionClick = ({\n\taction,\n\tdispatch,\n\tstate,\n\tproperties\n}) => {\n\tconst { delegateActions } = properties;\n\tif (delegateActions) {\n\t\thandleDelegatedAction(\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tDELEGATED_ACTION_TYPES.DECLARATIVE_ACTION\n\t\t);\n\t} else {\n\t\ttrackGeniusResultEvent(action, dispatch, state, properties);\n\t}\n};\n\nexport const handleFeedback = coeffects => {\n\tconst { action, dispatch, state, properties } = coeffects;\n\tconst { delegateActions } = properties;\n\tif (delegateActions) {\n\t\thandleDelegatedAction(\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tDELEGATED_ACTION_TYPES.FEEDBACK\n\t\t);\n\t} else {\n\t\thandleFeedbackInternally(coeffects);\n\t}\n};\n\nconst handleFeedbackInternally = coeffects => {\n\tconst { action, dispatch, properties, state } = coeffects;\n\n\tconst {\n\t\tpayload: {\n\t\t\taction: { value, reason },\n\t\t\tmodel\n\t\t}\n\t} = action;\n\n\tconst cardType = model.model || \"Custom\"; // Model is the type of the Genius Card Template\n\n\tconst feedbackType =\n\t\tvalue > 0 ? POSITIVE_FEEDBACK_TYPE : NEGATIVE_FEEDBACK_TYPE;\n\tconst customPayloadValues = {\n\t\tactionType: FEEDBACK_ACTION_TYPE,\n\t\tactionId: `${cardType}_${feedbackType}_feedback`,\n\t\tactionValue: reason,\n\t\tgeniusResultConfigId: model.ais_genius_config_id\n\t};\n\n\ttrackGeniusResultEvent(\n\t\taction,\n\t\tdispatch,\n\t\tstate,\n\t\tproperties,\n\t\ttrue,\n\t\tcustomPayloadValues\n\t);\n};\n\nexport const handleNLQTableSwitched = ({ action, dispatch, state }) => {\n\thandleDelegatedAction(\n\t\taction,\n\t\tdispatch,\n\t\tstate,\n\t\tDELEGATED_ACTION_TYPES.NLQ_TABLE_SWITCHED\n\t);\n};\n\nexport const handleNLQTableClicked = ({ action, dispatch, state }) => {\n\thandleDelegatedAction(\n\t\taction,\n\t\tdispatch,\n\t\tstate,\n\t\tDELEGATED_ACTION_TYPES.NLQ_TABLE_CLICKED\n\t);\n};\n\n/**\n * Cancel existing timer and set a new one for the number of seconds\n * specified on the asyncGeniusResultsMaxWaitTime prop, to prevent showing\n * \"infinite\" loading if GRs break\n */\nexport const resetAsyncGeniusResultLoadingTimeout = coeffects => {\n\tconst { dispatch, properties, updateState } = coeffects;\n\tconst { asyncGeniusResultsMaxWaitTime } = properties;\n\n\tcancelTimer(coeffects);\n\n\tif (asyncGeniusResultsMaxWaitTime > 0) {\n\t\tconst timerID = setTimeout(\n\t\t\tdispatch => {\n\t\t\t\tdispatch(ASYNC_RESULT_LOADING_TIMEOUT);\n\t\t\t},\n\t\t\tasyncGeniusResultsMaxWaitTime * 1000,\n\t\t\tdispatch\n\t\t);\n\t\tupdateState({ asyncGeniusResultTimerID: timerID });\n\t}\n};\n\nexport const cancelTimer = coeffects => {\n\tconst { state, updateState } = coeffects;\n\tconst { asyncGeniusResultTimerID } = state;\n\tif (asyncGeniusResultTimerID) {\n\t\tclearTimeout(asyncGeniusResultTimerID);\n\t\tupdateState({\n\t\t\tasyncGeniusResultTimerID: null,\n\t\t\tasyncGeniusResultTimerExpired: false\n\t\t});\n\t}\n};\n\nexport const handleAsyncGRTimerExpiration = ({ state, updateState }) => {\n\tconst { asyncGeniusResultsLoading } = state;\n\tif (asyncGeniusResultsLoading) {\n\t\tconsole.debug(\n\t\t\t\"Async Genius Result timer has expired! The Genius Result payload was not received in the expected time frame. Clearing timer and discontinuing loading state.\"\n\t\t);\n\t\tupdateState({\n\t\t\tasyncGeniusResultsLoading: false,\n\t\t\tasyncGeniusResultTimerID: null,\n\t\t\tasyncGeniusResultTimerExpired: true\n\t\t});\n\t}\n};\n\nexport const dismissAlert = ({ action, updateState }) => {\n\tconst {\n\t\tpayload: {\n\t\t\taction: { type }\n\t\t}\n\t} = action;\n\n\tif (type === ACTION_TYPE) {\n\t\tupdateState({ alertDismissed: true });\n\t}\n};\n\nexport const publishAmbMessage = coeffects => {\n\tconst { action } = coeffects;\n\n\tconst channel = action.payload.channel;\n\tconst effect = createAmbPublishEffect(channel);\n\teffect.effect(...effect.args, coeffects);\n};\n","import { createCustomElement, actionTypes } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport isEmpty from \"lodash/isEmpty\";\nimport styles from \"./sn-search-gr-carousel.scss\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\nimport { MOBILE_MEDIA_WIDTH } from \"./constants\";\nimport {\n\tHORIZONTAL,\n\tNOW_BUTTON_BARE_CLICKED,\n\tNOW_DATA_ROW_VIEW_ALL_CLICKED,\n\tDEF_MAX_VISIBLE_CARDS,\n\tDEF_MIN_CARD_WIDTH,\n\tDEF_CARD_HEIGHT,\n\tDEF_EMPTY_MSG,\n\tDA_WRAPPED_CLICKED,\n\tDECLARATIVE_ACTION_SCRIPT_SUCCESS,\n\tDECLARATIVE_ACTION_SCRIPT_FAILED,\n\tNOW_DATA_ROW_ACTION_SUCCEEDED,\n\tNOW_DATA_ROW_ACTION_FAILED\n} from \"./constants\";\nimport view from \"./view\";\nimport { transformState, transformDAClientActionToUXEvents } from \"./utils\";\nimport { GENIUS_CHAT_TRIGGERED } from \"../../actions\";\nimport { handleGeniusChatTriggered } from \"../../effects\";\n\n/**\n * A data set displayed as a horizontal or vertical row of cards,\n * with options to provide access to the larger data set, or to individual records.\n *\n * ## now-data-row\n *\n * @summary A single, scrollable row of cards containing actions that provide access to\n * either a larger data set or to individual records.\n * @seismicElement now-data-row\n */\ncreateCustomElement(\"sn-search-gr-carousel\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tproperties: {\n\t\t/**\n\t\t * Header message to display.\n\t\t * @type {string}\n\t\t */\n\t\ttitle: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Display view of the data row.\n\t\t * Default: horizontal.\n\t\t * @type {string}\n\t\t */\n\t\tlayout: {\n\t\t\tdefault: HORIZONTAL,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Message to display when no content is present.\n\t\t * @type {string}\n\t\t */\n\t\tnoDataMessage: {\n\t\t\tdefault: DEF_EMPTY_MSG,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Component state that tracks the state of data being fetched\n\t\t * @type {string}\n\t\t */\n\t\tdataFetchInProgress: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The data input from the data resource.\n\t\t * @type {object}\n\t\t */\n\t\tdata: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * The maximum number of cards visible per row in the horizontal view.\n\t\t * Must be between one and six cards.\n\t\t * @type {enum}\n\t\t */\n\t\tmaxVisibleCardsHorizontal: {\n\t\t\tdefault: DEF_MAX_VISIBLE_CARDS,\n\t\t\tschema: {\n\t\t\t\ttype: \"number\",\n\t\t\t\tenum: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * While in grid view, the minimum width of each card in pixels.\n\t\t * @type {number}\n\t\t */\n\t\tminCardPixelWidth: {\n\t\t\tdefault: DEF_MIN_CARD_WIDTH,\n\t\t\tschema: {\n\t\t\t\ttype: \"number\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sets card height in the horizontal view.\n\t\t * ('sm'|'md'|'lg') default is 'sm'\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t */\n\t\tcardHeightHorizontal: {\n\t\t\tdefault: DEF_CARD_HEIGHT,\n\t\t\tschema: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\"sm\", \"md\", \"lg\"]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * When true, displays the data row without a box.\n\t\t * @type {boolean}\n\t\t * @uib.label No-Box state\n\t\t * @uib.description Select to remove the box from the data row.\n\t\t */\n\t\tnoBox: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Object containing the data needed for dynamic declarative action event mapping in UI Builder.\n\t\t * @type {DaClientActionContract}\n\t\t */\n\t\tdaClientActionContract: {\n\t\t\tdefault: {},\n\t\t\tcomputed({ properties: { data } }) {\n\t\t\t\tconst declarativeActions =\n\t\t\t\t\t!isEmpty(data) && Array.isArray(data.all_actions)\n\t\t\t\t\t\t? data.all_actions\n\t\t\t\t\t\t: [];\n\t\t\t\treturn transformDAClientActionToUXEvents(declarativeActions);\n\t\t\t},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t},\n\t\t\tselectable: true\n\t\t},\n\t\t/**\n\t\t * Object containing the properties of sn-carousel\n\t\t * @type {object}\n\t\t */\n\t\tcarouselProps: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if component is being rendered in platform global search.\n\t\t * The component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the new href functionality for genius result navigation should be disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if genius results are still loading so we can show loading state\n\t\t * @type {boolean}\n\t\t */\n\t\tisLoading: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate active thumnail in carousel for one box\n\t\t * @type {boolean}\n\t\t */\n\t\tactiveThumbnailIndex: {\n\t\t\tdefault: 0\n\t\t},\n\t\t/**\n\t\t * This is an object that contains main card config\n\t\t * @type {object}\n\t\t */\n\t\tmainCardConfig: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tdefault: {}\n\t\t},\n\t\tsearchResultMetadata: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tsearchTerm: { default: \"\", type: \"string\" },\n\t\t\t\t\tcorrectedSearchTerm: { default: \"\", type: \"string\" },\n\t\t\t\t\tpreviousPageToken: { default: \"\", type: \"string\" },\n\t\t\t\t\tnextPageToken: { default: \"\", type: \"string\" },\n\t\t\t\t\tcurrentPage: { default: \"\", type: \"number\" },\n\t\t\t\t\tmatchedQueryIntents: { default: \"\", type: \"string\" },\n\t\t\t\t\tmatchedGeniusResultIntents: { default: \"\", type: \"string\" },\n\t\t\t\t\tresponseTimeInMs: { default: \"\", type: \"string\" },\n\t\t\t\t\tsearchAnalyticsPayload: { default: {}, type: \"object\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trawGeniusResultsReceived: {\n\t\t\tdefault: {}\n\t\t},\n\t\tcanAskFollowUp: {\n\t\t\tdefault: false\n\t\t}\n\t},\n\tstyles,\n\ttransformState,\n\tinitialState: {\n\t\tparentWidth: null\n\t},\n\tactionHandlers: {\n\t\t[NOW_BUTTON_BARE_CLICKED]: ({ dispatch }) => {\n\t\t\tdispatch(NOW_DATA_ROW_VIEW_ALL_CLICKED);\n\t\t},\n\t\t[actionTypes.COMPONENT_RENDERED]: ({\n\t\t\taction: {\n\t\t\t\tpayload: { host }\n\t\t\t},\n\t\t\tupdateState\n\t\t}) => {\n\t\t\tconst parentWidth = host.getBoundingClientRect().width;\n\t\t\tupdateState({ parentWidth });\n\t\t},\n\t\t[actionTypes.COMPONENT_TREE_RENDERED]: ({\n\t\t\taction: {\n\t\t\t\tpayload: { host }\n\t\t\t},\n\t\t\tupdateState\n\t\t}) => {\n\t\t\tconst parentWidth = host.getBoundingClientRect().width;\n\t\t\tupdateState({ parentWidth });\n\t\t},\n\t\t[DA_WRAPPED_CLICKED]: ({ dispatch, action: { payload } }) => {\n\t\t\tdispatch(payload.wrapped_action_name, payload.wrapped_payload);\n\t\t},\n\t\t[DECLARATIVE_ACTION_SCRIPT_SUCCESS]: ({\n\t\t\tdispatch,\n\t\t\taction: { payload }\n\t\t}) => {\n\t\t\tdispatch(NOW_DATA_ROW_ACTION_SUCCEEDED, payload);\n\t\t},\n\t\t[DECLARATIVE_ACTION_SCRIPT_FAILED]: ({ dispatch, action: { payload } }) => {\n\t\t\tdispatch(NOW_DATA_ROW_ACTION_FAILED, payload);\n\t\t},\n\t\t[GENIUS_CHAT_TRIGGERED]: {\n\t\t\teffect: handleGeniusChatTriggered,\n\t\t\tstopPropagation: true\n\t\t}\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the View All link is clicked.\n\t\t *\n\t\t * @type {{}}\n\t\t */\n\t\tNOW_DATA_ROW_VIEW_ALL_CLICKED: {},\n\t\t/**\n\t\t * Dispatched with information of the component level action when a server-side action is successful.\n\t\t *\n\t\t * @type {{}}\n\t\t */\n\t\tNOW_DATA_ROW_ACTION_SUCCEEDED: {},\n\t\t/**\n\t\t * Dispatched with information of the component level action when a server-side action fails.\n\t\t *\n\t\t * @type {{}}\n\t\t */\n\t\tNOW_DATA_ROW_ACTION_FAILED: {}\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tmobileQuery: `(max-width: ${MOBILE_MEDIA_WIDTH})`\n\t\t\t}\n\t\t}\n\t]\n});\n","import \"@servicenow/now-alert\";\nimport { Fragment } from \"@servicenow/ui-renderer-snabbdom\";\nimport ResultInfo from \"./contents/resultInfo\";\nimport \"../sn-search-top-results/components/sn-search-topics\";\nimport \"../sn-search-top-results/components/sn-search-gr-carousel\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport { ICON_TYPE, ALERT_CONTENT, ALERT_TYPE, ACTION_TYPE } from \"./constants\";\n\nconst view = state => {\n\tconst {\n\t\tproperties: {\n\t\t\tisGlobal,\n\t\t\tdisableHref,\n\t\t\ttopics,\n\t\t\ttopicsAvailable,\n\t\t\tsyncGeniusResultsLoading,\n\t\t\tshowTopics,\n\t\t\tshowResultInfo,\n\t\t\tsearchResultMetadata,\n\t\t\tcanAskFollowUp,\n\t\t\tsensitivityFilterMatched,\n\t\t\tdebugMode,\n\t\t\tshowGeniusResults\n\t\t},\n\t\tbehaviors: { mediaQuery },\n\t\tmainCardConfig,\n\t\tactiveThumbnailIndex,\n\t\tgeniusResultsReceived,\n\t\tasyncGeniusResultsLoading,\n\t\tmessages,\n\t\trawGeniusResultsReceived,\n\t\talertDismissed\n\t} = state;\n\n\tconst geniusResultsLoading =\n\t\tsyncGeniusResultsLoading || asyncGeniusResultsLoading;\n\tconst topicsLoading = syncGeniusResultsLoading;\n\tconst geniusResultsAvailable = !isEmpty(\n\t\tget(geniusResultsReceived, \"items\", [])\n\t);\n\n\tconst isMobile = mediaQuery.mobileQuery;\n\n\tconst carouselProps = {\n\t\tenableAutoPlay: false,\n\t\thideDotIndicator: isMobile,\n\t\thideLink: true,\n\t\thideTitle: true,\n\t\tdisableLooping: true\n\t};\n\n\t//showGeniusResults is to indicate if GRs are linked to SAC\n\t//if showGeniusResults is false, it means GRs are not linked to SAC and thus no loader should be shown\n\tconst renderGeniusResults = showGeniusResults &&\n\t\t(geniusResultsAvailable || geniusResultsLoading) && (\n\t\t\t<div\n\t\t\t\tclassName=\"carousel-wrapper\"\n\t\t\t\tclass={{\n\t\t\t\t\t\"margin-right\": showTopics && (topicsAvailable || topicsLoading)\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<sn-search-gr-carousel\n\t\t\t\t\tviewAllLinkLabel=\"\"\n\t\t\t\t\tdata={geniusResultsReceived}\n\t\t\t\t\tcardHeightHorizontal=\"lg\"\n\t\t\t\t\tdataFetchInProgress={false}\n\t\t\t\t\tcarouselProps={carouselProps}\n\t\t\t\t\tmainCardConfig={mainCardConfig}\n\t\t\t\t\tisGlobal={isGlobal}\n\t\t\t\t\tdisableHref={disableHref}\n\t\t\t\t\tisLoading={geniusResultsLoading}\n\t\t\t\t\tactiveThumbnailIndex={activeThumbnailIndex}\n\t\t\t\t\tmessages={messages}\n\t\t\t\t\tsearchResultMetadata={searchResultMetadata}\n\t\t\t\t\trawGeniusResultsReceived={rawGeniusResultsReceived}\n\t\t\t\t\tcanAskFollowUp={canAskFollowUp}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\n\tconst renderTopics = showTopics && (topicsAvailable || topicsLoading) && (\n\t\t<sn-search-topics\n\t\t\ttopics={topics}\n\t\t\tshowAsCard={geniusResultsAvailable}\n\t\t\tisLoading={topicsLoading}\n\t\t/>\n\t);\n\n\tconst renderResults = (\n\t\t<Fragment>\n\t\t\t{showResultInfo && (geniusResultsAvailable || geniusResultsLoading) && (\n\t\t\t\t<ResultInfo isLoading={geniusResultsLoading} />\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tclassName=\"top-results-container\"\n\t\t\t\t// -center class to keep the topics/GRs in the center in case one of them is not available\n\t\t\t\t// or topics is set to not load/show (showTopics)\n\t\t\t\t// NOTE: Topics and Synchronous GRs are expected to be recieved together via the data broker\n\t\t\t\tclass={{\n\t\t\t\t\t\"-center\":\n\t\t\t\t\t\t(!topicsAvailable && !syncGeniusResultsLoading) ||\n\t\t\t\t\t\t!geniusResultsAvailable ||\n\t\t\t\t\t\t!showTopics\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{renderGeniusResults}\n\t\t\t\t{renderTopics}\n\t\t\t</div>\n\t\t</Fragment>\n\t);\n\n\tconst renderGaurdianInfo = (\n\t\t<now-alert\n\t\t\tstatus={ALERT_TYPE}\n\t\t\ticon={ICON_TYPE}\n\t\t\tcontent={ALERT_CONTENT}\n\t\t\taction={{ type: ACTION_TYPE }}\n\t\t\tenable-focus\n\t\t/>\n\t);\n\n\tconst shouldShowData =\n\t\ttopicsLoading ||\n\t\tgeniusResultsLoading ||\n\t\ttopicsAvailable ||\n\t\tgeniusResultsAvailable;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"top-results-wrapper\"\n\t\t\tclass={{\n\t\t\t\t\"-center\": !topicsAvailable && (!topicsLoading || !geniusResultsLoading)\n\t\t\t}}\n\t\t>\n\t\t\t{debugMode && <sn-search-streaming-debugger />}\n\t\t\t{sensitivityFilterMatched\n\t\t\t\t? !alertDismissed && renderGaurdianInfo\n\t\t\t\t: shouldShowData && renderResults}\n\t\t</div>\n\t);\n};\n\nexport default view;\n","import { CREATE_GR_SUBSCRIPTION, AMB_SUBSCRIPTION_ACTIONS } from \"./actions\";\n\nexport const subscriptionTimingInterceptor = eventName => context => {\n\tconst { coeffects } = context;\n\tconst { state, updateState, action } = coeffects;\n\tconst { subscriptionEventTimestamps } = state;\n\n\tif (eventName === CREATE_GR_SUBSCRIPTION) {\n\t\tconst { payload } = action;\n\t\tif (!payload.subscribe) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tconst timestamp = Date.now();\n\n\tupdateState({\n\t\tsubscriptionEventTimestamps: {\n\t\t\t...subscriptionEventTimestamps,\n\t\t\t[eventName]: timestamp\n\t\t}\n\t});\n\n\t//Print duration between events when subscription succeeds or fails\n\tif (\n\t\teventName === AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_SUCCEEDED ||\n\t\teventName === AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_FAILED\n\t) {\n\t\tconst updatedTimestamps = {\n\t\t\t...subscriptionEventTimestamps,\n\t\t\t[eventName]: timestamp\n\t\t};\n\n\t\tconst createTime = updatedTimestamps[CREATE_GR_SUBSCRIPTION];\n\t\tconst startedTime =\n\t\t\tupdatedTimestamps[AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_STARTED];\n\t\tconst succeededTime =\n\t\t\tupdatedTimestamps[AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_SUCCEEDED];\n\t\tconst failedTime =\n\t\t\tupdatedTimestamps[AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_FAILED];\n\n\t\tif (createTime && startedTime && (succeededTime || failedTime)) {\n\t\t\tconst createToStartDuration = startedTime - createTime;\n\t\t\tconst completionTime = succeededTime || failedTime;\n\t\t\tconst status = succeededTime\n\t\t\t\t? \"SUBSCRIPTION_SUCCEEDED\"\n\t\t\t\t: \"SUBSCRIPTION_FAILED\";\n\t\t\tconst startToCompleteDuration = completionTime - startedTime;\n\n\t\t\tconsole.debug(\n\t\t\t\t`CREATE_GR_SUBSCRIPTION to SUBSCRIPTION_STARTED=${createToStartDuration}ms, SUBSCRIPTION_STARTED to ${status}=${startToCompleteDuration}ms`\n\t\t\t);\n\n\t\t\tupdateState({\n\t\t\t\tsubscriptionEventTimestamps: {}\n\t\t\t});\n\t\t}\n\t}\n\n\treturn context;\n};\n","import { actionTypes } from \"@servicenow/ui-core\";\nimport { subscriptionTimingInterceptor } from \"./interceptors\";\n\nimport {\n\tAMB_SUBSCRIPTION_ACTIONS,\n\tASYNC_RESULT_LOADING_TIMEOUT,\n\tCREATE_GR_SUBSCRIPTION,\n\tGENIUS_CHAT_TRIGGERED,\n\tGR_MINI_SELECETED,\n\tDECLARATIVE_ACTION_UPDATE_RENDER,\n\tFEEDBACK_PROVIDED,\n\tNLQ_TABLE_SWITCHED,\n\tNLQ_TABLE_CLICKED,\n\tNOW_ALERT_ACTION_CLICKED,\n\tASK_A_FOLLOW_UP_CLIKED,\n\tSHOW_FULL_ANSWER_CLICKED,\n\tSN_SEARCH_STREAMING_DEBUGGER_COMPONENT_TREE_RENDERED,\n\tPUBLISH_AMB_MESSAGE,\n\tTOP_RESULTS_SUBSCRIPTION_SUCCEEDED\n} from \"./actions\";\nimport {\n\thandleGRMiniSelected,\n\thandleComponentConnected,\n\thandleGeniusChatTriggered,\n\thandleAskAFollowUpClickedForSignals,\n\thandleShowFullAnswerClickedForSignals,\n\thandleComponentPropertyChanged,\n\tcreateGRSubscription,\n\thandleAmbMessageReceived,\n\thandleAsyncGRTimerExpiration,\n\thandleResultActionClick,\n\thandleNLQTableSwitched,\n\thandleNLQTableClicked,\n\thandleFeedback,\n\tdismissAlert,\n\tpublishAmbMessage\n} from \"./effects\";\n\nconst { COMPONENT_CONNECTED, COMPONENT_PROPERTY_CHANGED } = actionTypes;\n\nexport default {\n\t[COMPONENT_CONNECTED]: {\n\t\teffect: handleComponentConnected,\n\t\tstopPropagation: true\n\t},\n\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\teffect: handleComponentPropertyChanged,\n\t\tstopPropagation: true\n\t},\n\t[FEEDBACK_PROVIDED]: {\n\t\teffect: handleFeedback,\n\t\tstopPropagation: true\n\t},\n\t[DECLARATIVE_ACTION_UPDATE_RENDER]: {\n\t\teffect: handleResultActionClick,\n\t\tstopPropagation: true\n\t},\n\t[NLQ_TABLE_SWITCHED]: {\n\t\teffect: handleNLQTableSwitched,\n\t\tstopPropagation: true\n\t},\n\t[NLQ_TABLE_CLICKED]: {\n\t\teffect: handleNLQTableClicked,\n\t\tstopPropagation: true\n\t},\n\t[GR_MINI_SELECETED]: {\n\t\teffect: handleGRMiniSelected,\n\t\tstopPropagation: false\n\t},\n\t[GENIUS_CHAT_TRIGGERED]: {\n\t\teffect: handleGeniusChatTriggered,\n\t\tstopPropagation: true\n\t},\n\t[ASK_A_FOLLOW_UP_CLIKED]: {\n\t\teffect: handleAskAFollowUpClickedForSignals,\n\t\tstopPropagation: true\n\t},\n\t[SHOW_FULL_ANSWER_CLICKED]: {\n\t\teffect: handleShowFullAnswerClickedForSignals,\n\t\tstopPropagation: true\n\t},\n\t[CREATE_GR_SUBSCRIPTION]: {\n\t\teffect: createGRSubscription,\n\t\tinterceptors: [subscriptionTimingInterceptor(CREATE_GR_SUBSCRIPTION)],\n\t\tstopPropagation: true\n\t},\n\t[NOW_ALERT_ACTION_CLICKED]: {\n\t\teffect: dismissAlert,\n\t\tstopPropagation: true\n\t},\n\t[AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_STARTED]: {\n\t\teffect: coeffects => {\n\t\t\tconst { action } = coeffects;\n\t\t\tconst { payload } = action;\n\t\t\tconsole.debug(\"Genius Result Subscription Started\", payload);\n\t\t},\n\t\tinterceptors: [\n\t\t\tsubscriptionTimingInterceptor(\n\t\t\t\tAMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_STARTED\n\t\t\t)\n\t\t],\n\t\tstopPropagation: true\n\t},\n\t[AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_SUCCEEDED]: {\n\t\teffect: ({ action, dispatch, properties }) => {\n\t\t\tconsole.debug(\"Genius Result Subscription Succeeded\", action);\n\t\t\tdispatch(PUBLISH_AMB_MESSAGE, {\n\t\t\t\tprimarySearchRequestId:\n\t\t\t\t\tproperties.searchResultMetadata.primarySearchRequestId,\n\t\t\t\tchannel: properties.searchResultMetadata.asyncGeniusResultChannelName\n\t\t\t});\n\t\t\tdispatch(TOP_RESULTS_SUBSCRIPTION_SUCCEEDED);\n\t\t},\n\t\tinterceptors: [\n\t\t\tsubscriptionTimingInterceptor(\n\t\t\t\tAMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_SUCCEEDED\n\t\t\t)\n\t\t],\n\t\tstopPropagation: true\n\t},\n\t[AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_FAILED]: {\n\t\teffect: coeffects => {\n\t\t\tconst { updateState, action } = coeffects;\n\t\t\tconst { payload } = action;\n\t\t\tconsole.error(\"Genius Result Subscription Failed\", payload);\n\t\t\tupdateState({\n\t\t\t\tcurrentAMBSubcsriptionChannel: \"\",\n\t\t\t\tasyncGeniusResultsLoading: false,\n\t\t\t\tstreamingStarted: false\n\t\t\t});\n\t\t},\n\t\tinterceptors: [\n\t\t\tsubscriptionTimingInterceptor(\n\t\t\t\tAMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_FAILED\n\t\t\t)\n\t\t],\n\t\tstopPropagation: true\n\t},\n\t[AMB_SUBSCRIPTION_ACTIONS.MESSAGE_RECEIVED]: {\n\t\teffect: handleAmbMessageReceived,\n\t\tstopPropagation: true\n\t},\n\t[AMB_SUBSCRIPTION_ACTIONS.SUBSCRIPTION_UNSUBSCRIBED]: {\n\t\teffect: coeffects => {\n\t\t\tconsole.debug(\"Genius Result Subscription Unsubscribed\", coeffects);\n\t\t}\n\t},\n\t[ASYNC_RESULT_LOADING_TIMEOUT]: {\n\t\teffect: handleAsyncGRTimerExpiration,\n\t\tstopPropagation: true\n\t},\n\t[SN_SEARCH_STREAMING_DEBUGGER_COMPONENT_TREE_RENDERED]: {\n\t\teffect: handleAmbMessageReceived,\n\t\tstopPropagation: true\n\t},\n\t[PUBLISH_AMB_MESSAGE]: {\n\t\teffect: publishAmbMessage,\n\t\tstopPropagation: true\n\t}\n};\n","import { createCustomElement } from \"@servicenow/ui-core\";\nimport snabbdom from \"@servicenow/ui-renderer-snabbdom\";\nimport view from \"./view\";\nimport styles from \"./sn-search-top-results.scss\";\nimport actionHandlers from \"./actionHandlers\";\nimport mediaQueryBehavior from \"@servicenow/behavior-media-query\";\nimport { MOBILE_MEDIA_WIDTH } from \"./constants\";\nimport isEmpty from \"lodash/isEmpty\";\n\ncreateCustomElement(\"sn-search-top-results\", {\n\trenderer: { type: snabbdom },\n\tview,\n\tinitialState: {\n\t\tactiveThumbnailIndex: 0,\n\t\tcurrentAMBSubcsriptionChannel: \"\",\n\t\tgeniusResultsReceived: {},\n\t\tmainCardConfig: {},\n\t\tasyncGeniusResultsLoading: true,\n\t\tasyncGeniusResultTimerID: null,\n\t\tmessages: {},\n\t\tstreamingStarted: false,\n\t\trawGeniusResultsReceived: {},\n\t\tsearchRequestId: null,\n\t\talertDismissed: false,\n\t\tasyncGeniusResultTimerExpired: false,\n\t\tsubscriptionEventTimestamps: {}\n\t},\n\tstyles,\n\tactionHandlers,\n\tproperties: {\n\t\t/**\n\t\t * This is an object that contains data for the carousel\n\t\t * @type {object}\n\t\t */\n\t\tcarouselData: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if component is being rendered in platform global search.\n\t\t * The component will have different styling in case of global search.\n\t\t * @type {boolean}\n\t\t */\n\t\tisGlobal: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Specifies if the new href functionality for genius result navigation should be disabled\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableHref: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if component should show loading state\n\t\t * @type {boolean}\n\t\t */\n\t\tsyncGeniusResultsLoading: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if OneBox is enabled or not\n\t\t * @type {boolean}\n\t\t */\n\t\tisOneBox: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the topics to be displayed\n\t\t * @type {array}\n\t\t */\n\t\ttopics: {\n\t\t\tdefault: [],\n\t\t\tschema: {\n\t\t\t\ttype: \"array\"\n\t\t\t}\n\t\t},\n\t\t// computed properties\n\t\t/**\n\t\t * This property specifies if any topics are available for the component so we can present/style the component accordingly\n\t\t */\n\t\ttopicsAvailable: {\n\t\t\tcomputed({ properties: { topics } }) {\n\t\t\t\treturn !isEmpty(topics);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property modifies each Carousel item with isOneBox property so component could load thumbnail version for assist component\n\t\t */\n\t\tcarouselDataComputed: {\n\t\t\tcomputed({ properties: { carouselData } }) {\n\t\t\t\treturn carouselData?.items?.forEach(\n\t\t\t\t\titem => (item.propValues[\"isOneBox\"] = true)\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies if any GRs are available for the Carousel\n\t\t */\n\t\tgeniusResultsAvailable: {\n\t\t\tcomputed({ properties: { carouselData } }) {\n\t\t\t\treturn !isEmpty(carouselData.items);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies the metadata related to search results such as search term, pagination tokens and analytics metadata.\n\t\t * @type {object}\n\t\t */\n\t\tsearchResultMetadata: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tsearchTerm: { default: \"\", type: \"string\" },\n\t\t\t\t\tcorrectedSearchTerm: { default: \"\", type: \"string\" },\n\t\t\t\t\tpreviousPageToken: { default: \"\", type: \"string\" },\n\t\t\t\t\tnextPageToken: { default: \"\", type: \"string\" },\n\t\t\t\t\tcurrentPage: { default: \"\", type: \"number\" },\n\t\t\t\t\tmatchedQueryIntents: { default: \"\", type: \"string\" },\n\t\t\t\t\tmatchedGeniusResultIntents: { default: \"\", type: \"string\" },\n\t\t\t\t\tresponseTimeInMs: { default: \"\", type: \"string\" },\n\t\t\t\t\tsearchAnalyticsPayload: { default: {}, type: \"object\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * sys_id of the search context configuration.\n\t\t * @type {string}\n\t\t */\n\t\tsearchContextConfigId: {\n\t\t\tdefault: \"\",\n\t\t\tschema: {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies if VA topics should render\n\t\t */\n\t\tshowTopics: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies if info messages should show on top of results\n\t\t */\n\t\tshowResultInfo: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies how long, in seconds, the component should wait for the async GR payload before exiting the loading state\n\t\t */\n\t\tasyncGeniusResultsMaxWaitTime: {\n\t\t\tdefault: -1,\n\t\t\tschema: {\n\t\t\t\ttype: \"number\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * This property specifies if we should show Ask follow up button for sythesized response\n\t\t */\n\t\tcanAskFollowUp: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if component has to delegate Declarative and Feedback actions up the chain\n\t\t * possible actions to delegate: GR declarative actions, Feedback\n\t\t * if actions are delegated - it is expected that they are handled by the host and can be\n\t\t * received via TOP_RESULTS_ACTION_DELEGATED\n\t\t * @type {boolean}\n\t\t */\n\t\tdelegateActions: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if gaurdian\n\t\t * sensitivity filter matched\n\t\t */\n\t\tsensitivityFilterMatched: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Property to indicate if debug mode is enabled for streaming debugger\n\t\t * @type {boolean}\n\t\t */\n\t\tdebugMode: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Toggle option when false, when GRs are not linked to SAC, it will hide the loader\n\t\t */\n\t\tshowGeniusResults: {\n\t\t\tdefault: true,\n\t\t\tschema: {\n\t\t\t\ttype: \"boolean\"\n\t\t\t}\n\t\t}\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: mediaQueryBehavior,\n\t\t\toptions: {\n\t\t\t\tmobileQuery: `(max-width: ${MOBILE_MEDIA_WIDTH})`\n\t\t\t}\n\t\t}\n\t],\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the follow up button on a genius result is clicked to trigger virtual agent.\n\t\t * @type {{sysId: string, table: string, vaEVAM: object}}\n\t\t */\n\t\t\"SN_SEARCH_TOP_RESULTS#CHAT_TRIGGERED\": {\n\t\t\tschema: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\tsysId: { type: \"string\" },\n\t\t\t\t\ttable: { type: \"string\" },\n\t\t\t\t\tvaEVAM: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttemplate: { type: \"string\" },\n\t\t\t\t\t\t\tpropValues: {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\ttitle: { type: \"string\" },\n\t\t\t\t\t\t\t\t\tidentifier: { type: \"string\" },\n\t\t\t\t\t\t\t\t\timage: { type: \"string\" },\n\t\t\t\t\t\t\t\t\theader: { type: \"string\" },\n\t\t\t\t\t\t\t\t\tdescription: { type: \"string\" },\n\t\t\t\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\t\t\"columns.category\": { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\t\"columns.name\": { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\t\"columns.picture\": { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\t\"columns.price\": { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\t\"columns.short_description\": { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\t\"columns.sys_id\": { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\t\"columns.table\": { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\tmodel: { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\tsysId: { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\tsys_id: { type: \"string\" },\n\t\t\t\t\t\t\t\t\t\t\ttable: { type: \"string\" }\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n","import * as exports from '../index.js';\nwindow.__TECTONIC__ais_ux_bundle=exports;\nexport * from '../index.js';\n\n"],"names":["parts","properties","Blob","e","name","console","error","BASE_CHARS","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER","TYPE_ARRAYBUFFER","TYPE_BLOB","TYPE_INT8ARRAY","TYPE_UINT8ARRAY","TYPE_UINT8CLAMPEDARRAY","TYPE_INT16ARRAY","TYPE_INT32ARRAY","TYPE_UINT16ARRAY","TYPE_UINT32ARRAY","TYPE_FLOAT32ARRAY","TYPE_FLOAT64ARRAY","toString","Object","prototype","stringToBuffer","serializedString","bufferLength","length","len","encoded1","encoded2","encoded3","encoded4","p","buffer","ArrayBuffer","bytes","Uint8Array","i","indexOf","bufferToString","base64String","substring","serializer","serialize","value","callback","valueType","call","marker","Error","fileReader","FileReader","onload","str","type","this","result","readAsArrayBuffer","JSON","stringify","deserialize","parse","SERIALIZED_MARKER_LENGTH","blobType","test","matcher","match","createBlob","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","normalizeKey","key","warn","String","storage","window","setItem","promise","then","getCallback","arguments","STORAGE","LOCALSTORAGE","localStorage","SESSIONSTORAGE","sessionStorage","CACHE_API","caches","INDEXEDDB","indexedDB","DEFAULT_TTL","ttl","KEY_DELIMITER","NXUI_UNIFIED_CACHE","STORAGE_KEYPREFIX","VERSION_KEY","getTTL","TTL_EXPIRED_ITEM_KEYWORD","getItem","adapter","lastUsedTime","Date","now","isLRUItem","hasOwnProperty","removeItemsByInstance","instancePrefix","keys","itemKey","startsWith","push","removeItem","keyPrefix","data","instanceAccessMap","Map","has","set","get","createInstanceAccessMap","size","instanceAccessArray","sorted","sort","a","b","originalResult","expiry","undefined","getKeysWithTTL","evictionPolicies","config","evictionPolicy","lru","options","defaultConfig","storeName","_isLocalStorageUsable","localStorageTestKey","checkIfWebStorageThrows","_adapter","_initStorage","dbInfo","getKeyPrefix","_defaultConfig","_dbInfo","Promise","resolve","reject","_support","isWebStorageValid","_clearAllInstances","debug","iterate","iterator","self","ready","keyPrefixLength","iterationNumber","runCallback","_config","originalValue","clear","_clear","n","dropInstance","apply","currentConfig","READ_ONLY","READ_WRITE","initStorage","_connectToDB","db","database","openRequest","open","onupgradeneeded","createObjectStore","onsuccess","event","target","onerror","indexedDBError","getObjectStore","indexedDBCache","mode","transaction","objectStore","processError","indexedDBRequestError","retryable","indexedDBErrorName","indexedDBErrorMessage","message","makeRequest","request","indexedDBRequest","catch","put","delete","count","getAllKeys","index","iteratorCallback","cursorRequest","openCursor","cursor","continue","_clearDB","clearRequest","IndexedDBCache","jest","testing","makeDBCall","unifiedCache","callFunction","_ref","_objectWithoutPropertiesLoose","_excluded","_extends","databases","clearPromises","all","_isSessionStorageUsable","sessionStorageTestKey","async","_runOnReady","fn","cacheAPI","_cacheStorage","cacheStorage","promises","map","requests","response","add","clone","isDeleted","cache","keyIndex","entry","entries","makeInMemoryCall","inMemoryCache","inMemory","cacheInstance","prop","originalMethod","Proxy","targetMethod","cacheInstanceProxy","args","_stats","stale","hit","miss","start","performance","end","buildTime","Array","isArray","arg","slice","sameValue","x","y","isNaN","includes","array","searchElement","errorCallback","getServerCacheVersion","NOW","unifiedCacheVersion","isCacheVersionOld","cacheVersion","serverCacheVersion","getAggregateCacheStats","getAllCacheStats","cacheStats","freeze","buildGlobalCacheStats","ux_globals","__uc__cacheStats","_len","objects","_key","reduce","obj1","obj2","DefinedAdapters","AdapterSupport","DefaultAdapters","localStorageAdapter","sessionStorageAdapter","indexedDBAdapter","cacheAPIAdapter","IN_MEMORY","inMemoryAdapter","dropAllInstancesPromises","clearStorageInstances","cacheVersionCheck","version","LocalStorage","SessionStorage","DefaultConfig","description","DefaultStats","EvictionPolicies","OptionalAdapterMethods","LibraryMethods","concat","callWhenReady","unifiedCacheInstance","libraryMethod","_args","validateEvictionPolicy","UnifiedCache","_classCallCheck","adapterTypeKey","adapterName","defineAdapter","extend","_adapterSet","_initAdapter","_ready","_wrapLibraryMethodsWithReady","setAdapter","unifiedCacheProxy","cacheStatsProxyHandler","cacheInstances","_createClass","adapters","supportedAdapters","_getSupportedAdapters","setAdapterToConfig","extendSelfWithAdapter","_extend","oldAdapterSetDone","getAdapter","currentAdapterIndex","adapterPromiseLoop","initAdapter","runTwoCallbacks","getAdapterPromise","serializerPromise","adapterObject","complianceError","adapterMethods","adapterMethodName","configureMissingMethods","methodNotImplementedFactory","methodName","optionalAdapterMethod","setAdapterSupport","support","info","supports","libraryMethodsAndProperties","stats","aggregateStats","accumulator","attribute","currentValue","hitRate","allCacheStats","sumObjectsByKey","_defineProperty","setGlobalCacheStats","COMPONENT_PROPERTY_CHANGED","COMPONENT_TREE_RENDERED","COMPONENT_CONNECTED","COMPONENT_DISCONNECTED","COMPONENT_RENDER_REQUESTED","actionTypes","BEHAVIOR_NAME","shouldUndeferDefault","state","disabled","opened","deferFn","host","updateState","meta","shouldUndefer","updatedTargets","undeferred","behaviors","targets","forEach","el","shadowRoot","querySelector","removeAttribute","path","operation","shouldRender","deferEffect","_ref2","action","payload","initialState","listeners","actionHandlers","_ref3","events","_ref4","k","listenerEl","listener","removeEventListener","_ref5","_ref6","trigger","addEventListener","handleFocusFirstNode","focusableNodes","findTabbableNodes","focus","handleFocusTrap","composedPath","firstFocusableElement","lastFocusableElement","tabbableNodes","getFocusableNodes","shiftKey","HTMLInputElement","select","COMPONENT_DOM_TREE_READY","handleClosed","triggerEl","eventHandlers","effect","trap","preventDefault","dispatch","focusOptions","isFunction","previousRenderProperties","handleOpened","getActiveElement","AncestorMap","ActionTypes","ARIA_HIDDEN_ATTR","INVISIBLE_TAGNAMES","LANDMARK_TAGNAMES","LANDMARK_ROLES","hideElement","element","getAttribute","dataset","behaviorModalIgnore","hasAttribute","setAttribute","showElement","isValidSibling","node","siblingNode","nodeType","Node","ELEMENT_NODE","tagName","unsetAncestorLandmark","role","isLandmark","currentRole","behaviorModalAncestorRole","updateElements","prevNode","id","domLimit","isTreeOrigin","slottedNodes","parentNode","limitReached","isDomLimit","matches","elementSiblings","getElementSiblings","from","childNodes","filter","updateShadowRootElements","parent","slot","assignedSlot","scid","restoreAncestorLandmark","removeArtifacts","treeOriginRef","nowId","removeTreeOriginNode","isConnected","removeChild","COMPONENT_DOM_READY","WATCH_PROPERTY_NAME_DEFAULT","setSlotId","compId","uid","Math","round","random","setNodes","slots","Set","nodes","assignedNodes","flatten","children","nodeName","hidePageContent","hostEl","limit","addTreeOriginNode","document","createElement","insertBefore","cid","hoistHost","watchPropertyName","querySelectorAll","initSlots","nearestConnectedAncestor","ancestors","getNearestConnectedAncestor","FLOW_NORMAL_EDGES","FLOW_NORMAL_EDGES_RTL","update","_resizeTarget$style","_resizeTarget$style2","_resizeTarget$style3","_resizeTarget$style4","source","sourceWidth","sourceHeight","sourceTop","sourceLeft","resizeTarget","resizableMaxWidth","resizableMinWidth","resizableMaxHeight","resizableMinHeight","context","deltaX","deltaY","dir","width","height","top","left","scale","currentLeft","parseInt","style","currentTop","currentWidth","currentHeight","maxWidth","documentElement","clientWidth","maxHeight","Number","MAX_SAFE_INTEGER","clientHeight","max","min","elm","resize","emitEnd","_resizeTarget$getBoun","tooltip","getBoundingClientRect","startResize","_resizeTarget$getBoun2","_e$composedPath$find","_args$resizeTarget$da","_args$resizeTarget","modifier","parseFloat","repeat","find","_e$classList","classList","contains","mouseResize","clientX","startX","clientY","startY","raf","last","handleMouseMove","cancelAnimationFrame","requestAnimationFrame","unregisterMouseMove","once","TOOLTIP","t","ACTIVE_TOOLTIP","createCustomElement","renderer","snabbdom","default","reflect","schema","enum","setInitialState","active","view","class","TOOLTIP_ADD_TARGET","TOOLTIP_REMOVE_TARGET","fill","xmlns","styles","tooltipBehavior","DEFAULT_ENBALED","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","DEFAULT_MIN_HEIGHT","DEFAULT_MAX_HEIGHT","DEFAULT_CONTEXT","RESIZABLE_TARGET_NODES","coeffects","_host$shadowRoot$quer","_host$shadowRoot","getResizableConfig","enableResizable","latestTargetNode","assign","appendChild","_host$shadowRoot$quer2","_host$shadowRoot2","_resizeTarget$classLi","_properties$resizable","_properties$resizable2","isFullscreen","resizeTargetNode","shouldResize","resizableConfig","lastChild","stopPropagation","dispatches","globalResizeBehaviorTimer","_window","nds","sysprops","resize_timer","CALLBACK","Symbol","TARGET","ResizeObserver","contentRect","scrollHeight","offsetWidth","observe","nowRootNode","_options$timer","unobserve","timer","componentTimerSysProp","componentName","_window2","getTimerSysProps","toLowerCase","waitOption","wait","resizeBehaviorTimer","timerFn","throttle","debounce","getTimerFn","dispatchSize","shouldDispatch","leadTrailOptions","trailing","leading","preventRenderUntilSizeAvailable","componentManaged","_ref7","isRenderAllowed","oldWidth","oldHeight","prevent","preventRender","viewportActions","UXF_VIEWPORT_RENDER","UXF_VIEWPORT_RENDER_BY_ID","UXF_VIEWPORT_DISMISS","UXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED","UXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED","UXF_VIEWPORT_CALCULATE_ROUTES","UXF_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED","UXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED","UXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED","UXF_THEME_UPDATED","SCRIPT_EXEC_REQUESTED","MACROPONENT_STATE_UPDATED","WRAPPED_EVENT_REDISPATCH","CONTROLLER_PROP_RESOLVED","CONTROLLER_PROP_CHANGED","CONTROLLER_NODE_INSERTED","INFO_DENSITY","stashedProcessedValues","themeData","subscribers","cachedValues","getCSSVariableNamesFromBase","base","setGlobalThemeData","theme","allThemeData","tokensToRemove","obj","keySet","extractKeys","systemTokens","parsedFromStyleSheets","getComputedStyle","body","varNames","overrides","headacheVals","troublesomeDefs","root","styleSheets","sheet","href","acc","cssRules","def","rule","selectorText","vars","v","getPropertyValue","trim","getCSSVariablesFromStyleSheet","_overrides$name","logFailure","resolveDerivedHooks","hookName","hook","resolved","unresolved","paths","derivedPath","hasBeenResolved","failure","nextPath","joined","join","checkNextPath","setVariable","fbValue","resolveRemainingHooks","processValue","split","some","isValidRgbString","isValidPixelString","isValidPercentString","isPxSize","isValidRemString","isRemSize","c","rs","gs","bs","r","g","delta","h","s","l","hsl","hslValues","rgb","rgbValues","createColorObj","px","rootFontSize","fontSize","rem","createPxSizeObj","createRemSizeObj","resolveCSSVariable","initial","isCSSVariable","handler","values","getValues","localName","safeJsonParse","jsonString","fallback","parsedValue","__donotuse_temporary_isInUIBStage","dispatchEvent","uniqueEventName","isUIBStage","CustomEvent","composed","bubbles","cancelable","evt","_element$tagName","themeId","themeOptions","items","memoryCached","localCached","parsed","requestedItems","hooks","item","endsWith","processItems","baseHooks","resolvedHooks","_hooks$item","_window3","_window4","__donotuse_temporary_uib_stage_theme","resolveHooks","cacheObject","cssVariableName","circular","subscribe","wrapper","TOOLTIP_ID","TOOLTIP_SHOW","TOOLTIP_HIDE","handleMouseEnter","unschedule","handleMouseLeave","schedule","hideTooltip","getExistingTooltip","getTooltip","getTooltipOffset","offset","tooltipoffset","offsetValue","shouldHideTooltip","content","targetRef","showTooltip","position","tooltipposition","scheduleTooltipOpen","delay","currentTarget","ariadescribedby","getShadowRootHost","tooltipEvent","detail","scheduleTooltipClose","hoistedTooltip","tooltipSpan","EventTargetMap","WeakMap","targetRegistered","observer","MutationObserver","records","record","attributeName","attributes","attributeFilter","registerTarget","unregisterTarget","MIN_THRESHOLD_FOR_PAGE_LOAD_SCREEN_MACROPONENT_IDLE_MAX_WAIT_MS","defaultValue","_window$ux_globals$li","libuxf","getUxfSysProp","QUEUED_PROMISE_RESOLVERS","SCREEN_MACROPONENT_IDLE","whenScreenMacroponentIdleDuringPageLoad","maxWait","timedOut","timeoutId","setTimeout","clearTimeout","promiseResolver","COMPONENT_RENDERED","ACTION_EVALUATE","ACTION_REEVALUATE","dataAttributes","a11yTx","defaultPosition","extractBehaviorState","_state$behaviors$BEHA","_state$behaviors","isOverflowing","elem","offsetHeight","scrollWidth","forceTooltip","applyTruncation","truncationEnabled","innerText","updateTooltipText","removeTruncation","evaluate","truncatedElements","findAllTruncationElements","mouseoverListener","getUserPrefContext","userPrefVal","__enableTruncation__","IntersectionObserver","isIntersecting","blockRenderEval","_previousRenderState$","_state$behaviors2","_previousRenderState$2","previousRenderState","truncation","castJSON","castFunctions","object","number","castNumber","objectOrString","castJSONorString","__webpack_require__","d","cjsModule","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_update_state_index_jsdbx_4756d6c4__","__esModule","createUpdateStateEffect","localsSetEffectHandler","locals","extendWithDefaultBehaviors","baseConfig","behavior","rtlBehavior","toManagedPropName","propName","toUpperCase","omitManagedKey","descriptor","omit","extendWithManageableProperties","getComponentProperties","propNamesToManage","manageable","managedActions","actionName","replace","makeScopedActionName","casedValue","constantCase","managedPropName","updateProperties","isPropertySelector","isManaged","isActionForCurrentHost","managedProperties","mapValues","extendWithOnRender","onRenderFns","fns","onRender","getOnRenderFns","presentational","mergedConfig","createPresentationalCustomElement","baseTransformProps","transforms","transform","cast","transformProps","extendWithCast","localsConfig","LOCALS_SET","extendWithLocals","isDirectionalKey","isNextKey","supportDown","isPreviousKey","supportUp","extensionSplit","isString","filterAriaAttributes","pickBy","_","attr","toArray","maybeArray","isFocusable","hasInertAncestor","checked","allEnabledRadiosInSet","getRootNode","isFirstInSet","noneChecked","radio","getNormalizedChildren","normalizedTabIndex","tabIndex","isVisible","visibility","display","sortByTabIndex","tabbables","pivot","ceil","right","mergeSortByTabIndex","hasLowerTabOrder","shift","ati","bti","needsSort","queue","parentElement","activeElement","contentDocument","ShadowRoot","makeRedispatchEffect","newActionType","textTransform","UPPERCASE","LOWERCASE","CAPITALIZE","capitalize","arr","arr2","word","w","c2","measureText","fontWeight","fontStyle","fontFamily","txtTransform","ctx","getContext","font","matchSearchTerm","searchTerm","string","className","location","caseSensitive","tag","Tag","searchWithCase","stringWithCase","highlightLength","lastIndex","nextIndex","highlight","___NDS_LAYER_EVENTS___","propertyConfig","enumerable","configurable","writable","LSValue","defineProperty","getStack","handleEvent","stack","topLayer","isValidLayer","layer","registryReducer","eventType","registry","remove","pop","splice","isTopLayer","_stack","domPurifyConfig","FORCE_BODY","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","ADD_ATTR","FORBID_ATTR","canScroll","overflow","cacheDimensions","dim","getDimensions","HTMLElement","bottom","existing","scroll","block","scrollY","inline","scrollX","box","scrollTop","scrollLeft","overflowX","overflowY","getAxisInfo","axis","topOrLeft","bottomOrRight","widthOrHeight","calculateContentAreaLength","targetDimensions","contentDimensions","containerDimensions","targetPosition","contentPosition","floor","calculateContentAreaOffset","contentAreaDimensions","calcOffset","calculateContentOffset","calculateContentStyles","constrain","contentStyles","getConstrainStyles","isBottomAligned","isEndAligned","pointerEvents","addCSSProperties","restrictToBoundingBox","boundingDimensions","ratio","dimensions","visibleDimensions","getDimensionForConstrainKey","normalizeConstrain","constraint","contentValue","targetValue","constrainValue","toSizeValue","calculateFit","viewportDimensions","normOffset","normalizeOffset","backwardCompatibleOffset","makeOffsetBackwardsCompatible","normConstrain","constrainedContentDimensions","normalizedConstrain","newDimensions","applyConstrain","paddedTargetDimensions","addOffsetPaddingToDimensions","nextContentAreaDimensions","targetPositionBlock","targetPositionInline","contentPositionBlock","contentPositionInline","calculateContentAreaDimensions","nextContentDimensions","calculateContentDimensions","visibleContentDimensions","overlapRatios","contentInContainer","contentInViewport","container","viewport","calculateOverlap","contentAreaStyles","calculateContentAreaStyles","contentArea","sortCandidates","viewportOverlapDifference","getFitInfo","normalizeOrigin","origin","group","isStart","RE_POSITION_LONG","RE_POSITION_SHORT","positionToFitShorthand","resolvePosition","hideTail","positions","isEmpty","targetOrigin","contentOrigin","vertical","horizontal","toMatchingOrigin","normalizePosition","resolveOffset","isNumber","resolveConstrain","ariaLivePoliteness","POLITE","ASSERTIVE","isDesktopSafari","navigator","userAgent","getColumnStyles","columns","_columns$map$join","_columns$map","customColumn","toEmbeddableUrl","url","baseUrl","getEmbeddableBaseUrl","lastIndexOf","isBrowser","getCaretCoordinates","prevCaretPos","div","computed","currentStyle","isInput","whiteSpace","wordWrap","boxSizing","outerHeight","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","targetHeight","lineHeight","textContent","span","coordinates","offsetTop","offsetLeft","charAt","mouseX","updatedCoords","inlineDiff","abs","updateDiff","caretEl","innerHTML","charCodeAt","offsetParent","log","backgroundColor","sanitizeHref","normalizedHref","protocol","fit","getBestFitInfo","candidates","pos","resolveFitProperties","configAriaSchema","translatable","patternProperties","additionalProperties","ariaTemplate","configAriaLabelSchema","configAriaLabelRoleSchema","configAriaLabelRoleHasPopUpSchema","contentIsOverset","contentEl","getComputedOversetHeight","isParentFlex","getComputedOversetTextHeight","MIN_DISMISS_DURATION_TIME","DEFAULT_DISMISS_DURATION_TIME","localizeStatus","status","critical","comment","high","moderate","warning","positive","low","getProgress","normalizeContent","renderIcon","icon","renderActionButton","configAria","onClick","code","variant","label","button","OK","bare","renderExpandButton","isOverset","contentIsReady","expanded","renderContent","sanitizedHtml","DOMPurify","sanitize","dangerouslyCreateElementFromString","focusInSet","mouseEnterSet","secondsLabel","reduceMotion","matchMedia","createEnhancedElement","iconName","header","oneOf","enableFocus","textLinkProps","iconStart","iconEnd","underlined","opensWindow","download","deepCompare","alert","manageExpanded","showShadow","minimum","pauseAutoDismiss","alertFocus","savedDuration","autoDismissConfig","enableAutoDismiss","duration","showTimer","hideProgressBar","prevWidth","prevHeight","oversetHeight","isButtonWrapped","countdownDuration","timerId","standalone","progressBarRef","createRef","timerLabelRef","expandedFirstRender","hasTextLink","alertContentText","alertTextLink","nextState","alertContentTextHeight","alertButton","alertButtonHeight","DIMENSION_CHANGE_TOLERANCE","computedOversetHeight","oversetHeightRangeMax","oversetHeightRangeMin","contentSpanContainsTextLink","checkTextLinkPosition","contentSpan","alertRect","contentOverset","updateOverset","current","setProperty","borderBottomRightRadius","_autoDismissConfig$du","totalDuration","progress","appended","alertTextContainer","clearInterval","_ref8","_ref9","_autoDismissConfig$du2","dismissTimer","interval","setInterval","_ref0","resizeBehavior","focusBehavior","themeBehavior","renderAlert","rawContent","shouldExpand","Fragment","onTextLinkClick","renderAutoDismissAlert","on-mouseenter","on-mouseleave","on-focusin","on-focusout","ref","COMPONENT_BOOTSTRAPPED","ARIA_LIVE_REGION_UPDATE_REQUESTED","ANNOUNCEMENT_MESSAGE","getIndividualAlerts","updateExpandedAlerts","getToggleButton","alertDismissedHandler","sourceItems","focusReferenceElement","previousAlert","reverse","toggleButton","nextFocused","moveFocus","ariaLabel","collapsed","required","configAriaLive","list","stackThreshold","alertListMaxHeight","expandedAlerts","userInteractedWithController","autoDismissTimersPaused","alertTimers","registeredComponentId","hasFocusIn","hasMouseEnter","reversedAlerts","maxHeightStyle","controller","_renderController","onToggleController","onDismissAll","alerts","alert1","tabindex","zIndex","inlineSize","outline","alert2","_renderCollapsedAlertList","_renderExpandedAlertList","on-focus","on-blur","alertId","previousValue","nextLength","lastLength","registerComponent","actionMap","focusableAlert","nextFocusAlert","DISMISS_ALL_ALERTS","_ref1","deregisterComponent","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","updatedTimers","_ref16","_ref17","_ref18","collate","collated","dismissedItems","updatedTimerMap","filteredItems","_ref19","_ref20","_ref21","___NOW_DESIGN_SYSTEM_PACKAGES___","clr","c1","c3","modify","modifiers","svg","mod","space","maxc","minc","rc","gc","bc","rgbToHsv","newH","hue","sat","val","hue2","val1","val2","val3","green","blue","hsvToRgb","NOW_ANIMATION_CUSTOM_PREFIX","tokenId","src","loop","autoplay","animation","method","destroy","animationPath","themedPath","getAnimationPathFromTokenId","FETCH_ANIMATION","proxyFn","createHttpEffect","fetchAnimation","batch","successActionType","errorActionType","getCanvas","lottie","animationData","setSpeed","handleAnimationLoad","_data$theme","configAriaToUse","injectAria","themeAnimation","prepend","css","selector","rules","deleteNode","createTextNode","on-click","packageInfo","_renderUserNameWithPresence","userName","presence","_getLabel","localizedPresence","localizePresence","sizeMap","xxs","xs","sm","md","lg","xl","_renderContent","imageSrc","failedImageSrc","alt","on-error","_getInitials","firstInitial","lastInitial","nameParts","interaction","showPresencePattern","avatar","tooltipContent","landmark","setTargetRef","avatarContent","hook-destroy","rel","_renderPresence","_renderTooltip","animatedIconHoverBehavior","iconAnimations","animatedIcon","animatedIconStart","animatedIconEnd","isLeaveEvent","direction","speed","animatedIconHover","iconAnimation","reducedMotion","setDirection","play","declarativeOperations","PUSH","handleTooltipShow","handleTooltipHide","_filterAriaAttributes","dataAriaDescribedBy","_renderIcon","_renderAnimatedIcon","buttonEl","defaultSlot","logicalProperty","labelSpan","highContrast","iconNameStart","iconNameEnd","hidePadding","hideBlockPadding","showInlinePadding","_filterAriaAttributes2","roleBasedSelection","tab","configRole","selected","manageSelected","highlighted","_configAria","_configAria2","selectedState","iconFilledOrOutline","hasShadow","handleClick","setIndeterminate","nativeInput","shouldBeIndeterminate","indeterminate","handleChecked","interactive","renderLabelInline","renderLabelStart","const","manageChecked","checkbox","invalid","manageInvalid","readonly","labelPosition","fullWidth","truncationBehavior","iconId","labelId","mixed","for","handleBlur","ariaHidden","controls","collapse","CSS","escape","getTriggerEl","prefix","componentId","getElementById","togglePath","hasPath","findIndex","isEqual","removePath","addPath","flattenItems","flatMap","filterSelectedItems","selectedItems","flatList","listItem","_listItem$children","getSearchMatches","search","matchesLabel","sublabel","lowerValue","setActiveItem","flattenedItems","defaultActiveItem","activeItem","getDropdownListConstrain","calcAriaPattern","ariaLiveNoResults","ariaLiveNumResults","ariaLiveSectionResults","announcement","updateActiveDescendant","input","activeDescendant","getRelativeItem","shouldLoop","lastActiveIndex","getItemForKeypress","iconSchema","itemSchema","supplementalIcon","avatarProps","image","dependencies","itemsSchema","anyOf","constrainSchema","minWidth","minHeight","getDynamicallyCreatedTarget","rootNode","containerId","existingNode","newNode","unmount","created","screenReaderInjectInto","screenReaderId","screenReaderView","parentRoot","getRenderTarget","prevState","updateViewForScreenReader","helpers","mutateNode","unset","idSuffix","newId","child","isScreenReaderBehaviorRender","debounceDispatch","ARROW_KEYS","handleNextItem","nextActiveItem","getActiveDescendant","getListId","suffix","fixListboxForVoiceOver","menuOrListbox","listbox","renderLabels","highlightedLabel","highlightedSublabel","highlightLabels","renderLabel","rawLabel","renderDivider","canRenderDivider","nextItem","renderDropdownListItem","hideCheckmark","setSize","itemElement","lastCursorPos","fromMouseWheel","ListItem","currentCursorPos","cursorMoved","renderCheckmark","renderIdentifier","iconVal","iconLabel","isObject","avatarSize","renderSectionsOrItems","announceResults","renderChild","handleItemClick","filteredItemIds","ariaAnnouncements","announcements","uncategorizedCount","hasChildren","childCount","totalItems","announcementMessage","getSectionHeader","sectionHeader","headerId","renderHeader","disableRole","activeDescendantId","renderSearch","searchPlaceholder","actionSource","searchHasFocus","placeholder","autocomplete","onwheel","innerWidth","innerHeight","margin","marginTop","marginRight","marginBottom","marginLeft","panel","prevEnteredKey","ctrlKey","altKey","metaKey","itemEl","click","jumpToMatchingLetter","moveActive","doesKeyChangeActive","_hostEl$shadowRoot","itemToFocus","scrollIntoView","_hoistHost$parentElem","dropdownScrollHeight","fitContentHeight","refit","screenReaderBehavior","CONTENT_DIMENSION_DEFAULTS","Infinity","calculateSingleOffset","overlayDimensions","targetOriginBlock","targetOriginInline","contentOriginBlock","contentOriginInline","overset","toff","boff","loff","roff","actual","largest","constrainOffset","fromWindow","fromContainer","canScrollVertical","canScrollHorizontal","constraints","wval","hval","vScroll","hScroll","getContentDimensions","createProperties","descriptors","internalName","alias","isNil","publicDescriptors","public","defaults","createFitBehavior","renderDropdown","triggerId","hideCaret","panelFitProps","hideLabel","showPadding","getSelected","selectedItemId","triggerLabel","getTriggerLabel","hasTriggerLabel","triggerIcon","getTriggerIcon","_selected$icon","_selected$icon2","listId","pick","renderCaret","defer","manageSelectedItems","manageOpened","labelSize","focused","getFocusedEl","flattened","_action$meta","matchKeywordWithItem","itemIndex","_flattened$itemIndex","deferBehavior","labelSizeToUse","htmlFor","hostToScrollData","addOutsideScrollListener","uuid","eventName","findListener","findAncestors","handled","removeOutsideScrollListener","nowUIType","createIdSelector","getPanelEl","getContentEl","getListboxEl","getItemEls","getFocusedItemEl","getFocusedItemIndex","DocumentFragment","isPanelList","focusFirstItem","nextFocusItem","renderDropdownPanelItem","unfocusItem","renderPresenceOrIcon","title","fitStyle","restoreFocus","lastFocusItem","lastFocusIndex","focusNextItem","focusPreviousItem","focusLastItem","firstOpen","firstFocusItem","getSelectedItemEls","focusOnOpen","Boolean","renderItem","onItemClick","renderSectionOrItem","divider","disableListeners","Element","level","hasNoMargin","wontWrap","align","HeadingLevel","NOW_ICON_CACHE_NAME","cacheString","localStorageCache","iconResult","isPathFragment","pixelSize","isLoading","isLoaded","initCache","assetLoadQueue","importIconSet","importIconSetAsESM","VARIANTS","Fill","Outline","ICON_SIZES","indexInSet","getIconDataFromCamel","logicalName","convertLogicalDir","isRTL","baseName","realName","aliases","icons","iconSet","getIconSet","variantIndex","getIconNode","camelCase","_assetLoadQueue$key","emptyAssetLoadQueue","SUPPORT_RTL_MAP","LOGICAL_NAME_MAP","getIconName","supportRtl","spin","queueAssetLoad","hasLabel","busy","away","available","offline","backgroundPaths","accessibilityMode","showPattern","windowsHighContrast","iconRems","presenceLabel","blockSize","NOW_ICON_ANIMATED_ASSETS_PATH","getCacheKey","fetchIconAnimation","pathParams","fetchFromCache","fileName","updatedUrl","orderedSizeMap","pixelSizeMap","aMap","interrupted","permissions","unconfigured","sizes","loaded","assetMap","ThemeableIllustration","LINEAR_GRADIENT","LINEAR_FIX","RADIAL_GRADIENT","RADIAL_FIX","delayHash","svgClean","replaceAll","attrs","hasChildNodes","cloneNode","createElementNS","replaceWith","isBrokenGradient","fix","findAndFixGradients","illustration","constructor","AUTO","hasThemeImageUrl","SM","MD","LG","getHookName","requestId","intervalFn","startDelay","cleanCSS","isCleaned","getResults","updated","cleanCSSImport","hasRemoteUrl","results","exec","groups","LOCAL_STORAGE_KEY","sharedFetchSucceeded","resolveAssetLoadQueue","themeHookUrl","ti","inlineSVG","hasBadGradient","SET","sharedFetchFailed","coralNoData","polarisNoData","THEME_IDS","ALLOWED_THEMES","NO_DATA_INLINE_SVG","init","hasThemeChanged","updateResizeObserver","forceHostMeasure","processSize","getUrlFromHook","processRequestedSize","getCorrectAsset","toUse","_toUse$asset","asset","currentSize","fetchAsset","streaming","parsePartsAsJson","emitCompletedResponse","fetchCustomUrlAsset","encodeURIComponent","res","loadAsset","svgString","illustrationName","directory","file","getNextSize","availableSizes","ordered","pixelSizeChanged","smallerSide","newSize","forceRemove","rect","_window$ux_globals$th","cancelDelay","_window$ux_globals$th2","_state$asset","requestedSize","fig","klass","cleanData","vnode","createElementFromNode","renderImage","loadImage","svgPath","Request","resp","fetch","ok","text","clearXLink","illustrationPath","getImagePathFromTokenId","parser","DOMParser","parseFromString","getFormFieldMessageIds","messages","renderFormFieldMessages","startIndex","messagesMode","isAriaHidden","isA11yLabel","thisArg","_args$","getAriaDescribedByList","helperContent","optional","layout","describedBy","formFieldMessageIds","renderFormFieldHelperRequiredorOptional","hideRequiredIndicator","renderFormFieldRequiredOrOptional","requiredMessage","renderFormFieldHelper","focusPanel","renderLabelEnd","renderFormFieldLabel","renderAsElement","wrapLabel","handleFocus","focusTarget","hidePlaceholderTooltip","handlePlaceholderTooltipVisibility","placeholderTooltipDisplay","showPlaceholderTooltip","messagesSchema","v4","v6frag","isIPAddress","address","RegExp","isIPV4Address","isIPV6Address","fieldLayoutSchema","timeoutIds","removeFakeHighlighting","_input$previousElemen","timeout","previousElementSibling","renderInput","maxlength","minlength","multiple","pattern","step","enableCaretSlot","caretSlotContainer","selection","hasCaretSlot","debounceCaret","debounceCaretWhileTyping","debounceInput","placeholderOverflow","fieldLayout","hasHover","hasFocus","handleCaretMoved","handleInput","handleKeydown","_e$target$previousEle","repositionCaretSlotContainer","coords","selectionEnd","pauseFakeHighlighting","_input$previousElemen2","selectionStart","addFakeHighlighting","beforeSelection","selectedText","afterSelection","fieldValue","fieldElement","insetInlineStart","announceMessage","stripIPZeros","newVal","shouldUpdate","valid","forceValueChange","oldVal","validity","fromHandleBlur","oldScrollLeft","autofocus","manageValue","debounceCaretLength","caret","inputField","tempValue","fromInputPropertyChanged","messagesLength","previousMessagesLength","_timeoutIds$nowId","_timeoutIds$nowId2","compact","disableUnmask","requirements","masked","customHelperContent","validations","messagesAndValidations","req","getMessagesAndValidations","allMessages","runPasswordValidation","requirementsNotMet","renderMaskButton","handleMaskButtonClick","renderValidations","getNumberValue","selectedCountryCode","countryCodes","fullNumber","callLabel","renderCountryCodeDropdown","handleCallButtonClick","link","editing","textLink","editLabel","blur","handleInputBlur","_renderTextLink","describedByItems","handleEditButtonClick","USE_SHADE_ALTERNATE_ROWS_USER_PREFERENCE","SHADE_ALTERNATE_ROWS_ON","SHADE_ALTERNATE_ROWS_OFF","SHADE_ALTERNATE_ROWS_ENUMS","USE_LINE_BREAKS_USER_PREFERENCE","WRAP_ON","WRAP_OFF","WRAP_CELL_CONTENT_ENUMS","SMALL","MEDIUM","LARGE","ICON_NAMES","TRIANGLE_EXCLAMATION_OUTLINE","DRAG_DOTS_FILL","CHEVRON_END_FILL","ELLIPSIS_V_FILL","NEW_OUTLINE","MAGIC_OUTLINE","OPEN_LINK_OUTLINE","PENCIL_OUTLINE","CIRCLE_CHECK_OUTLINE","CIRCLE_CLOSE_OUTLINE","SORT_DESCENDING_FILL","SORT_ASCENDING_FILL","LIST_ICON_SET","module","exports","SCROLL_CONTAINER_CLASS","ROW_DEFINITIONS_PROP","SHADE_ALTERNATE_ROWS_USER_PREFERENCE_KEY","COLUMN_FILTERING_USER_PREFERENCE_KEY","WRAP_CELL_CONTENT_USER_PREFERENCE_KEY","LIST_ICON_CACHE","USER_PREF_UPDATED","LAYOUT_OPTIONS","LIST","GALLERY","TABLE_DEFAULT_ICON_SIZE","require","ACTIONABLE_MESSAGE_ICON_SIZE","ACTIONABLE_MESSAGE_STATUS_CRITICAL","ACTIONABLE_MESSAGE_STATUS_HIGH","ACTIONABLE_MESSAGE_STATUS_MODERATE","ACTIONABLE_MESSAGE_STATUS_WARNING","ACTIONABLE_MESSAGE_STATUS_INFO","ACTIONABLE_MESSAGE_STATUS_POSITIVE","ACTIONABLE_MESSAGE_STATUS_LOW","ACTIONABLE_MESSAGE_BUTTON_CLASS","ACTIONABLE_MESSAGE_STATUS_DEFAULT","ACTIONABLE_MESSAGE_STATUS_ENUMS","ACTIONABLE_MESSAGE_ICONS_DICT","CURRENCY_DEFAULT","CURRENCY_LOCALE_DEFAULT","CURRENCY_VALUE_DEFAULT","DATE_TIME_FORMAT_DEFAULT","DEFAULT_DATE_FORMAT","DATE_EDITOR_VARIANT_SHORT","DATE_EDITOR_VARIANT_LONG","TIME_AGO_DISPLAY_NONE","TIME_AGO_DISPLAY_UNDER_MAIN_VALUE","TIME_AGO_DISPLAY_AS_MAIN_VALUE","TIME_AGO_DISPLAY_ENUMS","SECONDS_FORMAT","SECONDS_FORMAT_WITH_DOTS","DATE_TIME_AGO_FORMAT","SHORT_DATE_TIME_FORMAT","ICON_CELL_ICON_SIZE","ICON_CELL_COLOR_DEFAULT","ICON_CELL_COLOR_CRITICAL","ICON_CELL_COLOR_HIGH","ICON_CELL_COLOR_MODERATE","ICON_CELL_COLOR_WARNING","ICON_CELL_COLOR_INFO","ICON_CELL_COLOR_POSITIVE","ICON_CELL_COLOR_LOW","ICON_CELL_COLORS_ENUMS","NUMBER_DEFAULT_VALUE","NUMBER_FORMAT_INTEGER","NUMBER_FORMAT_PERCENT","NUMBER_FORMAT_DECIMAL","NUMBER_FORMAT_LONG_INT","NUMBER_DEFAULT_LOCALE","NUMBER_FORMAT_ENUMS","DECIMAL_PLACES_DEFAULT","URL_ICON_SIZE","URL_ICON","OPENS_IN_NEW_DEFAULT","OPENS_IN_CURRENT_TAB_TOOLTIP","OPENS_IN_NEW_TOOLTIP","WRAP_CELL_CONTENT_USER_PREFERENCE","ICON_SIZE_SMALL","ICON_SIZE_MEDIUM","PERSON_CELL_ICON_SIZE","NOW_LIST_CELL_PERSON_CLICKED","PERSON_DISPLAY_TYPE_AVATAR","PERSON_DISPLAY_TYPE_NAME","PERSON_DISPLAY_TYPE_BOTH","PERSON_DISPLAY_TYPE_ENUMS","PERSON_DISPLAY_TYPE_DEFAULT","DEFAULT_PILL_SIZE","MAX_PILL_LIMIT_DEFAULT","MAX_MAX_PILL_LIMIT","EMPTY_CELL_VALUE","MAX_CHARACTERS_DEFAULT","HIGHLIGHTED_VALUE","PRESERVE_WHITESPACE_SYS_PROP","SPECIAL_COLUMN_CELL","SPECIAL_COLUMN_CELL_CONTENT","DATA_COLUMN_CLASS","ROW_CELL_CLASS","CELL_CONTENT_CLASS","RECENTLY_UPDATED_ROWS_ICON_NAME","RECENTLY_UPDATED_ROWS_ICON_SIZE","TEXT_ALIGNMENT_DEFAULT","TEXT_ALIGNMENT_CENTER","TEXT_ALIGNMENT_INVERSE","TEXT_ALIGNMENT_ENUMS","ALIGNMENT_CLASS_PREFIX","RELATIVE_TO_TEXT_ALIGNMENT_START","RELATIVE_TO_TEXT_ALIGNMENT_END","RELATIVE_TO_TEXT_ALIGNMENT_ENUMS","COLUMN_TYPES_ENUMS","SPECIAL_TYPE_ACTIONS","SPECIAL_TYPE_SELECTION","TYPE_STRING","SPECIAL_TYPE_ROW_DRAG_HANDLE","SPECIAL_TYPE_GROUP_TOGGLE","SPECIAL_TYPE_GROUP_BADGE","SPECIAL_TYPE_PARENT_TOGGLE","SPECIAL_TYPE_PARENT_BADGE","numberTypeProperties","percentCompleteTypeProperties","dateTimeTypeProperties","urlTypeProperties","pillsTypeProperties","personTypeProperties","currencyTypeProperties","customTypeProperties","headerIconProperties","choiceTypeProperties","galleryConfigSchema","SORT_ENUMS","SORT_NONE","columnDefinitionsSchema","columnHeaderTextTooltip","columnFilteringInfo","columnFilterCustomValueEditorEmittedActions","alignment","headerCellAlignment","headerTextDisabled","renderAsLink","cellEditingDisabled","maxCharacters","sortDirection","firstDayOfWeek","startIcons","maxItems","endIcons","columnFilterConfig","customTopText","operators","requiresValue","selectedOperator","valueEditorCustomComponentTag","valueEditorCustomComponentDefaultProps","columnHeaderActions","cellActions","metadata","galleryConfig","TYPE_BOOLEAN","TYPE_CHOICE","TYPE_CURRENCY","TYPE_CUSTOM","TYPE_DATE_TIME","TYPE_ICON","TYPE_LINK","TYPE_NUMBER","TYPE_PERCENT_COMPLETE","TYPE_PERSON","TYPE_PILLS","TYPE_URL","TYPE_HTML","TYPE_IMAGE","numberFormat","decimalPlaces","locale","thresholdColors","dateTimeFormat","timeZone","timeAgoDisplay","actionableLinkTypeProperties","opensInNew","maxPillLimit","maximum","pillsChoices","canEdit","choices","defaultChoiceKey","currency","componentTag","placeholderDimensions","cellContentDimensions","defaultComponentProps","color","fields","heading","column","tagline","bodyText","supplementaryFields","showLabel","enableOnlySingleSelection","galleryItemTooltip","SORT_ASCENDING","SORT_DESCENDING","OVERLAY_TYPE_MESSAGE","OVERLAY_DEFAULT_HEADING_LEVEL","OVERLAY_NO_ROWS_CONFIG","showColumnHeaders","messageConfig","OVERLAY_DUPLICATE_ROW_KEYS_CONFIG","OVERLAY_NO_COLS_CONFIG","OVERLAY_TYPE_LOADER","OVERLAY_TYPE_SKELETON_LOADER","OVERLAY_TYPE_CUSTOM","OVERLAY_TYPE_ENUMS","OVERLAY_TYPE_DEFAULT","OVERLAY_ILLUSTRATION_ENUMS","OVERLAY_LOADER_SIZES_ENUMS","OVERLAY_SHOW_COLUMN_HEADERS_DEFAULT","OVERLAY_SKELETON_LOADER_DEFAULT_NUM_COLUMNS","OVERLAY_SKELETON_LOADER_NUM_ROWS","commonProperties","overlayDefinitionSchema","actions","clickActionType","loaderConfig","skeletonLoaderConfig","numColumns","customConfig","customOverlayEmittedActions","DROPDOWN_ITEM_SCHEMA","DROPDOWN_SECTION_SCHEMA","popoverDefinitionSchema","columnRowIndex","columnCellIndex","rowIndex","cellIndex","dismissOnScroll","disableScroll","dismissable","popoverType","buttons","highlightedMessage","showIcon","buttonsConfig","showRetry","disableApply","hideAll","ROW_ALIGNMENT_DEFAULT","ROW_ALIGNMENT_CENTER","ROW_ALIGNMENT_INVERSE","ROW_ALIGNMENT_ENUMS","POSITION_TABLE_START","POSITION_TABLE_END","POSITION_ENUMS","DEFAULT_ROW_ACTION_NUM_ICONS","DEFAULT_ROW_ACTION_ICON","ROW_TYPE_ENUMS","DEFAULT_ROW_SCHEMA","excludedActions","disableActions","selectionDisabled","isSelected","cells","editingDisabled","highlightedValue","CUSTOM_ROW_SCHEMA","componentProps","contentAlignment","rowContentDimensions","ACTIONABLE_MESSAGE_SCHEMA","enums","rowDefinitionsSchema","numActionIcons","actionsItems","rows","groupedRowLabel","groupActions","groupRowHref","isGroupExpanded","groupedRowCount","visualTreatment","isHighlighted","showUpdatedIcon","isGrayedOut","customCellEmittedActions","topActionableMessage","bottomActionableMessage","highlightedContent","ROW_TYPE_DEFAULT","ROW_TYPE_GROUPED","ROW_TYPE_CUSTOM","shouldRenderAriaLabel","announceLabel","labelEl","configAnimation","progressBarProps","pathType","customLoader","animationWidth","renderAnimation","animationObject","renderProgressBar","progressBarObj","progressBarSize","progressbar","percentage","TAIL_LENGTH","setTailPosition","minYOffset","getMinOffset","middleOfTarget","minXOffset","getTailPosition","tailDirection","POPOVER_PANEL_TAG","getContent","getFirstTrigger","getNextPanel","nowPopover","directParent","closest","isInPanel","nextPanel","idx","ancestor","createBatchedListener","callbacks","runCallbacks","forEachRight","needsToAttach","createObserver","Observer","observed","observerArgs","observersArr","onWindowResize","createGlobalListener","clickListener","keydownListener","scrollListener","attached","createScrollListener","intersectionObserver","resizeObserver","closePopover","layerEvents","nowHoist","nowHoistAppendTo","unhoist","openPopover","interactionType","onReady","append","hoist","finishedOpening","trapFocus","handleTabPress","_findTabbableNodes","isTabInPanel","isChildPopverContentFocusable","handleSlotClick","clickedTrigger","findTriggerFromEvent","positioningToTrigger","positionTarget","shouldRenderWhenSet","isTop","_properties$constrain","_constrain$maxWidth","_action$payload","fitContentArea","fitContent","threshold","fitProps","updateFit","fitInfo","isWindowResizing","handleKeyDown","findFocusableNodes","noop","targetVisible","intersectionRatio","_focusableNodes$lengt","nodesLength","handlePopoverOpened","isSafari","isIndeterminate","toNumber","isFinite","renderRadioButtons","orientation","option","selectedOption","media","renderActions","renderAction","renderIllustration","renderHeading","TagName","iconSize","marginSide","removeJavaScriptProtocol","calculateHeightBasedOnRows","textarea","computedStyles","paddingBlockStart","paddingBlockEnd","borderBlockEndWidth","borderBlockStartWidth","updateScrollTop","toggleScrollbar","getResizeHelperElement","adjustHeight","helper","replicatedValue","setMaxHeight","addManuallyResizedClassIfNeeded","cols","resizeWrapper","runMicroTasks","calls","callIndex","getCharsRemaining","currentLength","charsRemaining","setMinHeight","setHelperWidth","ta","calculateWidthBasedOnCols","setHelperHeight","autoresizeRowsLimit","disableMaxHeight","createAriaDescribedByList","showCounter","characterCounterId","getCharacterCounterId","autoresize","disableMinHeight","showBorders","debounceLength","hasSlottedContent","microTasks","on-slotchange","newResizeObserver","validateAndUpdate","handleReportManualResize","_e$target$previousEle2","renderCharacterCounter","ariaLive","listenerMap","hoistMap","FIT_CONSTRAIN","fitTooltip","slottedElements","haveTooltipContent","_target$parentNode","maybeHoistHost","sourceElement","getProperties","targetObserver","addTargetListeners","isTooltipVisible","show","hide","removeTargetListeners","_targetObserver","disconnect","tooltipHost","childList","subtree","characterData","boundHandler","ms","TimeoutStore","newTimeout","createTooltipActionHandler","hideTooltipCB","bind","DUPLICATE_SHORTCUT_TAB_SET_EXCEPTIONS","MODIFIER_KEYS","ALT","CONTROL","META","SUPPORTED_SPECIAL_CHARACTERS","SEMICOLON","BRACKET_LEFT","BRACKET_RIGHT","QUOTE","COMMA","PERIOD","SLASH","DASH","EQUAL","KEY_PREFIXES","KEY","DIGIT","SN_POLARIS_LAYOUT","APP_SHELL_COMPONENTS","KEY_SHORTCUTS","KEY_SHORTCUT_CB_HASH","LANDMARK_FOCUS_ATTR","LANDMARK_ACTIVE_ELEMENT_ATTR","landmarkConstants","LANDMARK_FOCUS_FORWARD","LANDMARK_FOCUS_BACKWARD","LANDMARK_LAST_CLICKED_ATTR","LANDMARK_SELECTOR","USER_OVERRIDE_SHORTCUT_CACHE","USER_OVERRIDE_SHORTCUT_CACHE_CB_HASH","CACHE_CONFIGS","other","valueTag","valueKeys","otherKeys","part","curr","LOGGING_ENABLED","PRODUCTION_CONSOLE_METHODS","shortcutLogger","property","isMac","isWindows","instance","getCacheInstance","createInstance","getReturnValue","shortcuts","actionKey","actionPayload","shortcut","componentTagName","dedupeShortcuts","componentTagNames","findNearestParentElement","findFirstChildElement","checkVisibility","ContextManager","getInstance","_window$uxfTriggerLib","uxfTriggerLibrary","contextManager","shadowQuerySelectorAll","maxDepth","currentDepth","expandedNodes","nodesThatMatchedOriginalSelector","validateElement","getComponentFromRegistry","queryDeepBySelector","nestedElements","nestedElement","getActiveScreen","activeExperience","getActiveExperience","appShellLayout","experiences","experiencesData","isActive","experience","experienceData","experiencePath","screen","screenData","_element$getRootNode","shouldValidateElement","rootElement","isModalOpen","getRootElement","activeEl","ComponentRegistry","componentRegistry","transformActionMap","transformedActionMap","transformAction","setComponentInRegistry","registryValue","registeredComponent","mergeActionMaps","originalActionMap","registryValueActionMap","mergedMap","registeredElement","parentComponentTagName","shortcutState","initialized","filterActiveComponents","component","modalCase","modalContext","childElement","isChildOf","isChildOfRootElement","ApplicableComponentAdapter","_setActiveComponents","activeComponents","availableActions","ActionStateQueue","_Array","_callSuper","_inherits","__queue","_wrapNativeSuper","previousLandmark","isLandmarkAction","IntersectedShortcutRegistry","getAllShortcuts","getContextualizedShortcuts","applicableComponentAdapter","activeComponentTagNames","getActiveComponents","_c$registeredElement","applicableComponents","getApplicableComponents","hasLandmarksOnPage","landmarks","_component$actionMap$","EVENT_METRIC","markKeyboardShortcut","shortcutName","getMetricTypes","nowUiFramework","uxfKeyboardShortcutInteractionId","createInteractionId","defineMetric","interactionId","markOptions","timestamp","pageId","pageName","workspaceName","mark","filterShortcuts","contextualizedShortcuts","shortcutMetadata","mac","windows","platformShortcut","getResolvedShortcut","getTargetElement","handleShortcutKeyDown","_event$detail","KeyboardEvent","resolveKeyboardEvent","forPlatform","getModifierState","isAlphanumericKey","isSpecialCharacterKey","isModifierKeyPressedWithKey","_landmarks$incremente","focusIncrement","currentActiveElement","processedActiveElement","lastClickedElement","landmarkIndex","incrementedIndex","landmarkAction","triggerAction","errorMessage","_component$registered","actionFn","_component$registered2","_component$registered3","$apply","$call","$reflectApply","Function","$TypeError","$actualApply","Reflect","GetIntrinsic","callBindBasic","$indexOf","allowMissing","intrinsic","hasOwn","classNames","classes","argType","inner","cssWithMappingToString","needLayer","modules","dedupe","alreadyImportedModules","_k","targetLength","sign","output","dirtyObject","TypeError","_index","_interopRequireDefault","_index2","_index3","_index4","_index5","_index6","_index7","dayPeriodEnum","formatters","G","date","token","localize","era","getUTCFullYear","signedYear","year","ordinalNumber","unit","Y","signedWeekYear","weekYear","twoDigitYear","R","isoWeekYear","u","Q","quarter","getUTCMonth","q","M","month","L","week","I","isoWeek","getUTCDate","D","dayOfYear","E","dayOfWeek","getUTCDay","day","localDayOfWeek","weekStartsOn","isoDayOfWeek","dayPeriodEnumValue","getUTCHours","dayPeriod","hours","B","H","K","m","getUTCMinutes","getUTCSeconds","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","originalDate","getTime","T","dirtyDelimiter","absOffset","minutes","delimiter","_default","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","pow","dateLongFormatter","formatLong","timeLongFormatter","time","longFormatters","P","matchResult","datePattern","timePattern","dateTime","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","dirtyDate","setUTCMonth","setUTCHours","startOfYearTimestamp","difference","MILLISECONDS_IN_DAY","diff","MILLISECONDS_IN_WEEK","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","dirtyOptions","localeFirstWeekContainsDate","firstWeekContainsDate","defaultFirstWeekContainsDate","RangeError","firstWeekOfNextYear","firstWeekOfThisYear","isProtectedDayOfYearToken","protectedDayOfYearTokens","isProtectedWeekYearToken","protectedWeekYearTokens","throwProtectedError","format","setUTCDate","fourthOfJanuary","localeWeekStartsOn","defaultWeekStartsOn","firstWeek","dirtyNumber","NaN","dirtyAmount","amount","dirtyFormatStr","_index10","formatStr","_index9","formatterOptions","longFormattingTokensRegExp","firstCharacter","longFormatter","formattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","cleanEscapedString","formatter","useAdditionalWeekYearTokens","_index8","useAdditionalDayOfYearTokens","unescapedLatinCharacterRegExp","defaultWidth","formats","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","predicate","findKey","valueCallback","rest","parseResult","parsePattern","formatDistanceLocale","one","addSuffix","comparison","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","full","long","medium","short","_date","_baseDate","_options","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_dirtyOptions","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","any","formatDistance","formatRelative","argument","argStr","getDefaultOptions","defaultOptions","setDefaultOptions","newOptions","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","_options$weekStartsOn","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","_index11","matched","_typeof2","tokenValue","hasProtoAccessor","callBind","gOPD","__proto__","desc","$Object","$getPrototypeOf","getPrototypeOf","$defineProperty","EvalError","ReferenceError","SyntaxError","URIError","toStr","concatty","j","that","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","implementation","$Error","$EvalError","$RangeError","$ReferenceError","$SyntaxError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","decodeURI","decodeURIComponent","encodeURI","eval","Float16Array","FinalizationRegistry","SharedArrayBuffer","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","intrinsicName","first","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","reflectGetProto","originalGetProto","getDunderProto","getOwnPropertyDescriptor","origSymbol","hasSymbolSham","getOwnPropertySymbols","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","$hasOwn","createModuleFactory","_$Interactable_20","_interopRequireWildcard","_$arr_64","_browser","_$browser_65","_clone","_$clone_66","_events","_$events_70","_$extend_72","is","_$is_76","_normalizeListeners","_$normalizeListeners_78","_Eventable","_$Eventable_17","_scope","_$scope_28","Interactable","defaultContext","_actions","_context","_win","_$window_83","getWindow","_$domUtils_69","trySelector","_doc","perAction","phases","func","onstart","on","onmove","onend","oninertiastart","prev","cur","off","_defaults","optionName_","optionName","actionOptions","optionValue","updatePerActionListeners","plainObject","enabled","bool","getElementRect","checker","getRect","newValue","_backCompatOption","deltaSource","ownerDocument","nodeContains","targetNode","eventTarget","testIgnore","ignoreFrom","testAllow","allowFrom","matchesUpTo","iEvent","fire","typeArg","listenerArg","addRemove","wheelEvent","_i","isNonNativeEvent","types","_onOff","actionName_","methodDict","setPerAction","setting","delegatedEvents","delegated","selectors","contexts","delegateListener","delegateUseCapture","_domObjects","_$domObjects_68","utils","_$index_75","_InteractEvent","_$InteractEvent_18","_InteractStatic","_$InteractStatic_19","_Interactable","_InteractableSet","_$InteractableSet_21","_defaultOptions","_$defaultOptions_24","_interactions","_$interactions_27","win","browser","Scope","_this","move","phaselessTypes","removeDocument","scope","_InteractableBase","_class","_possibleConstructorReturn","_getPrototypeOf","_get","interactable","interactables","listenerMaps","isInitialized","initScope","plugin","_plugins","pluginIsInstalled","install","before","doc","getDocIndex","documents","onWindowUnload","docIndex","substr","usePlugin","pointerUtils","_$pointerUtils_80","_Interaction","_$Interaction_22","_interactablePreventDefault","_$interactablePreventDefault_25","_interactionFinder","_$interactionFinder_26","methodNames","doOnInteractions","docEvents","pEventTypes","releasePointersOnRemovedEls","_i3","interactions","pointerIsDown","pointerType","_interacting","_loop","pointer","pointers","_i4","downTarget","removePointer","PointerEvent","down","pointerDown","pointerMove","up","pointerUp","cancel","_i2","documentBlur","prevTouchTime","Interaction","_InteractionBase","pointerMoveTolerance","scopeFire","getPointerType","_pointerUtils$getEven2","_slicedToArray","getEventTargets","curEventTarget","_i5","changedTouches","searchDetails","pointerId","getPointerId","getInteraction","invalidPointer","supportsPointerEvent","timeStamp","_searchDetails","_interaction","_i6","_matches$_i","_pointer","_eventTarget","_curEventTarget","signalArg","onDocSignal","eventMethodName","eventMethod","isIOS","passive","eventOptions","_i7","stop","InteractStatic","pointerAverage","touchBBox","touchDistance","touchAngle","dom","getElementClientRect","matchesSelector","interact","global","globalEvents","supportsTouch","addDocument","thing","Window","_isWindow","_$isWindow_77","realWindow","wrap","defaultView","___isWindow_76","___interopRequireDefault_76","__window_76","docFrag","_typeof","draggable","drag","beforeMove","prepared","page","client","velocity","opposite","setOnEvents","lockAxis","startAxis","dragOptions","mouseButtons","getCursor","merge","domObjects","__init_68","SVGElement","SVGSVGElement","SVGElementInstance","Event","Touch","blank","MSPointerEvent","___interopRequireDefault_65","__is_65","___interopRequireWildcard_65","__init_65","isIOS7","isIe9","isOperaMobile","prefixedMatchesSelector","DocumentTouch","pointerEnabled","platform","appVersion","appName","over","out","___interopRequireWildcard_66","__is_66","dest","___interopRequireDefault_69","___domObjects_69","__is_69","___interopRequireWildcard_69","___window_69","getParent","indexOfDeepestElement","elements","deepestZoneParents","deepestZone","dropzone","_parent","parentParent","unshift","ownerSVGElement","dropzoneParents","parents","previousSibling","deepestZIndex","getActualElement","correspondingUseElement","getScrollXY","relevantWindow","clientRect","getClientRects","getPath","pointerExtend","prefixedPropREs","deprecated","vendor","webkit","moz","sqrt","___browser_80","___interopRequireDefault_80","___domObjects_80","domUtils","___interopRequireWildcard_80","_hypot","_$hypot_74","__is_80","_pointerExtend","_$pointerExtend_79","copyCoords","setCoordDeltas","targetObj","setCoordVelocity","dt","setZeroCoords","isNativePointer","getXY","xy","getPageXY","getClientXY","identifier","setCoords","tmpXY","getTouchPair","touches","average","pageX","pageY","screenX","screenY","_prop","minX","minY","maxX","maxY","sourceX","sourceY","dx","dy","atan2","PI","newCoords","coordsToEvent","__domUtils_70","___interopRequireWildcard_70","__is_70","___pointerExtend_70","___interopRequireDefault_70","optionalArg","getOptions","elementIndex","typeCount","supportsOptions","capture","__remove_70","addDelegate","removeDelegate","matchFound","_listeners$i","fakeEvent","FakeEvent","param","originalEvent","stopImmediatePropagation","supportsPassive","_elements","_targets","___interopRequireDefault_78","__is_78","___interopRequireWildcard_78","normalize","__arr_17","___interopRequireWildcard_17","___extend_17","___interopRequireDefault_17","fireUntilImmediateStopped","immediatePropagationStopped","Eventable","___classCallCheck_17","___defineProperty_17","propagationStopped","eventList","subListener","_element","___extend_82","___interopRequireDefault_82","__is_82","___interopRequireWildcard_82","getStringOptionResult","resolveRectLike","functionArgs","returnValue","_toConsumableArray","rectToXY","xywhToTlbr","tlbrToXywh","addEdges","edges","___default_73","originRect","_$rect_82","_request","_cancel","lastTime","__init_81","vendors","currTime","timeToCall","__arr_75","___interopRequireWildcard_75","__is_75","___window_75","___interopRequireDefault_75","___browser_75","___extend_75","_getOriginXY","_$getOriginXY_73","___hypot_75","___normalizeListeners_75","_raf","_$raf_81","warnOnce","warned","copyAction","BaseEvent","___classCallCheck_16","___defineProperty_16","_proxy","___extend_18","___interopRequireDefault_18","___getOriginXY_18","___hypot_18","_BaseEvent2","_$BaseEvent_16","InteractEvent","_BaseEvent","phase","preEnd","___classCallCheck_18","___defineProperty_18","_assertThisInitialized","starting","ending","prevEvent","t0","downTime","x0","y0","clientX0","clientY0","swipe","getSwipe","angle","velocityY","velocityX","overlap","__arr_21","___interopRequireWildcard_21","__domUtils_21","___extend_21","___interopRequireDefault_21","__is_21","InteractableSet","___classCallCheck_21","___defineProperty_21","addListeners","targetMappings","selectorMap","targetIndex","mappingInfo","isSelector","found","inContext","_interactable","ret","PointerInfo","___classCallCheck_23","_ProxyValues","_ProxyMethods","__utils_22","___interopRequireWildcard_22","___interopRequireDefault_22","_PointerInfo","_$PointerInfo_23","idCounter","___classCallCheck_22","___defineProperty_22","_scopeFire","_loop2","pointerIndex","updatePointer","pointerInfo","interacting","_stopped","_doPhase","downEvent","simulation","modification","endResult","duplicateMove","pointerWasMoved","hypot","getPointerIndex","duplicate","_latestPointer","endPhaseResult","_ending","curPointer","_now","downPointer","_updateLatestPointer","_createPreparedEvent","_fireEvent","___events_25","___interopRequireDefault_25","__is_25","___interopRequireWildcard_25","checkAndPreventDefault","docOptions","getDocOptions","onInteractionEvent","__install_25","__dom_26","___interopRequireWildcard_26","finder","methodOrder","details","simulationResume","allowResume","mouseOrPen","firstNonActive","hasPointerId","hasPointer","idle","gesture","___BaseEvent2_2","___interopRequireDefault_2","__arr_2","___interopRequireWildcard_2","DropEvent","dropState","dragEvent","___classCallCheck_2","___defineProperty_2","___assertThisInitialized_2","___possibleConstructorReturn_2","___getPrototypeOf_2","relatedTarget","_this2","rejected","enter","activeDrops","deactivateEvent","___interopRequireDefault_3","__utils_3","___interopRequireWildcard_3","_drag","_$drag_1","_DropEvent","_$DropEvent_2","__install_3","interactStatic","dropzoneMethod","dropCheck","draggableElement","dropElement","dropCheckMethod","dynamicDrop","dragenter","dragleave","dropactivate","dropdeactivate","dropmove","drop","collectDrops","drops","accept","dropElements","dropzoneElement","fireActivationEvents","getActiveDrops","dragElement","activeDrop","getDrop","pointerEvent","validDrops","_rect","dropIndex","getDropEvents","_pointerEvent","dropEvents","leave","activate","deactivate","dragLeave","prevDropzone","dragEnter","dragmove","fireDropEvents","onEventCreated","dropResult","normalized","normalizeListeners","corrected","ondrop","ondropactivate","ondropdeactivate","ondragenter","ondragleave","ondropmove","dropped","dropOverlap","getOriginXY","dragRect","cx","cy","__utils_4","___interopRequireWildcard_4","__install_4","gesturable","updateGestureProps","distance","ds","da","startDistance","startAngle","gestureOptions","__dom_6","___interopRequireWildcard_6","___extend_6","___interopRequireDefault_6","__is_6","__install_6","cursors","initCursors","defaultMargin","resizable","resizeChecker","resizeOptions","resizeEdges","edge","checkResizeEdge","axes","preserveAspectRatio","square","interactableElement","topleft","bottomright","topright","bottomleft","resizeEvent","_rects","previous","deltaRect","__move_6","invert","invertible","_interaction$_rects","startRect","swap","_swap","updateEventAxes","resizeAxes","cursorKey","_arr","___drag_5","___interopRequireDefault_5","_$index_3","_gesture","_$gesture_4","_resize","_$resize_6","__domUtils_8","___interopRequireWildcard_8","__is_8","___raf_8","___interopRequireDefault_8","__install_8","autoScroll","autoscroll","isScrolling","prevTime","getContainer","scrollBy","prevScroll","getScroll","curScroll","check","onInteractionMove","getScrollSize","getScrollSizeDelta","scrollOptions","scrollContainer","prevSize","curSize","__is_9","___interopRequireWildcard_9","__install_9","getAction","defaultActionChecker","actionChecker","styleCursor","__utils_10","___interopRequireWildcard_10","_InteractableMethods","___interopRequireDefault_10","_$InteractableMethods_9","__install_10","manualStart","maxPerElement","maxInteractions","autoStart","withinInteractionLimit","cursorElement","prepareOnDown","prepare","getActionInfo","prepareOnMove","startOnMove","setInteractionCursor","clearCursorOnStop","setCursor","validateAction","testIgnoreAllow","validateMatches","matchElements","matchElement","matchAction","pushMatches","forEachMatch","actionInfo","maxActions","autoStartMax","activeInteractions","interactableCount","elementCount","otherAction","prevCursorElement","cursorChecker","__is_11","___interopRequireWildcard_11","_base","___interopRequireDefault_11","_$base_10","beforeStart","absX","absY","targetOptions","currentAxis","getDraggable","checkStartAxis","thisAxis","___base_12","___interopRequireDefault_12","__install_12","hold","getHoldDuration","autoStartHoldTimer","___base_13","___interopRequireDefault_13","_dragAxis","_$dragAxis_11","_hold","_$hold_12","CheckName","___domObjects_29","___interopRequireDefault_29","___extend_29","__is_29","___interopRequireWildcard_29","___window_29","links","touchAction","isProduction","__install_29","logger","devTools","ignore","checks","perform","parentHasStyle","getInfo","hasStyle","noListeners","styleRe","defaultExport","_scope$logger","___toConsumableArray_29","___clone_34","___interopRequireDefault_34","___extend_34","rectUtils","___interopRequireWildcard_34","Modification","___classCallCheck_34","___defineProperty_34","createResult","pageCoords","modifierList","getModifierList","prepareStates","startOffset","getRectOffset","startDelta","startAll","setAll","fillArg","states","methods","skipModifiers","unmodifiedRect","newResult","lastModifierCoords","shouldDo","eventProps","rectDelta","prevCoords","prevRect","rectChanged","changed","curCoords","startCoords","curDelta","___slicedToArray_34","coordsSet","modifiedCoords","adjustment","applyToInteraction","doPreend","endPosition","beforeEnd","modifierArg","_modifierList$index","_ref9$interaction","_modification$result","coordsAndDeltas","requireEndOnly","endOnly","setStart","actionModifiers","_methods","_Modification","___interopRequireDefault_38","_$Modification_34","makeModifier","addEventModifiers","setAndApply","restoreInteractionCoords","__rectUtils_51","___interopRequireWildcard_51","addTotal","addToCoords","total","pending","beforeAction","applyPending","__end_51","hasPending","offsetBy","___Modification_31","___interopRequireDefault_31","___interopRequireWildcard_31","_$base_38","___index_31","_$index_51","__dom_31","___hypot_31","__is_31","___raf_31","__install_31","inertiastart","resume","inertia","resistance","minSpeed","endSpeed","smoothEndDuration","InertiaState","___classCallCheck_31","___defineProperty_31","__getOptions_31","velocityClient","pointerSpeed","copyFrom","v0","currentOffset","startInertia","startSmoothEnd","targetOffset","startVelocity","lambda","inertiaDur","te","lambda_v0","one_ve_v0","isModified","modifiedOffset","inertiaTick","smoothEnd","smoothEndTick","_this3","newOffset","exp","getQuadraticCurvePoint","_this4","easeOutQuad","modifierCount","__start_31","_getQBezierValue","p1","p2","p3","iT","cpX","cpY","endX","endY","___interopRequireDefault_32","__init_32","___typeof_32","grid","coordFields","___slicedToArray_61","xField","yField","gridFunc","range","_grid$limits","limits","_grid$offset","gridx","gridy","_edgeTarget","___interopRequireDefault_58","_$edgeTarget_59","_$elements_60","_grid","_$grid_61","___extend_62","___interopRequireDefault_62","allSnappers","___interopRequireWildcard_62","_$all_58","snappers","createSnapGrid","___extend_36","___interopRequireDefault_36","___Modification_36","aspectRatio","originalEdges","_state$options","equalDelta","linkedEdges","xIsPrimaryAxis","edgeSign","negativeSecondaryEdge","subModification","_objectSpread","initialCoords","aspectMethod","setEqualDelta","setRatio","correctedRect","newHeight","newWidth","avoid","___extend_41","___interopRequireDefault_41","__is_41","___interopRequireWildcard_41","__rectUtils_41","__start_41","elementRect","restriction","getRestrictionRect","widthDiff","heightDiff","restrict","___extend_40","___interopRequireDefault_40","__rectUtils_40","___interopRequireWildcard_40","noInner","noOuter","__start_40","offsetRect","_$pointer_41","__set_40","outer","fixRect","restrictEdges","__defaults_42","___interopRequireDefault_42","restrictRect","___extend_43","___interopRequireDefault_43","__rectUtils_43","___interopRequireWildcard_43","noMin","noMax","__start_43","_$edges_40","__set_43","minSize","maxSize","restrictSize","rubberband","__utils_46","___interopRequireWildcard_46","__start_46","snapOffset","offsetWithOrigin","getOrigin","relativePoints","offsets","relativePoint","__set_46","_offset","relativeX","relativeY","snapTarget","inRange","_target","snap","___extend_47","___interopRequireDefault_47","__is_47","___interopRequireWildcard_47","__start_47","targetFields","_$pointer_46","__set_47","relative","___slicedToArray_47","snapSize","___clone_45","___interopRequireDefault_45","___extend_45","__start_45","_$size_47","snapEdges","spring","_aspectRatio","___interopRequireDefault_35","_$aspectRatio_36","_avoid","_$avoid_37","___edges_35","___pointer_35","___rect_35","_$rect_42","___size_35","_$size_43","_rubberband","_$rubberband_44","_edges2","_$edges_45","_pointer2","_size2","_spring","_$spring_48","_transform","_$transform_49","___index_39","___interopRequireDefault_39","_$index_62","_all2","_$all_35","___base_39","__modifiers_39","_all","___BaseEvent2_52","___interopRequireDefault_52","__pointerUtils_52","___interopRequireWildcard_52","___classCallCheck_52","___defineProperty_52","___assertThisInitialized_52","___possibleConstructorReturn_52","___getPrototypeOf_52","tapTime","prevTap","originX","originY","___interopRequireDefault_53","__utils_53","___interopRequireWildcard_53","_PointerEvent","_$PointerEvent_52","__defaults_53","holdDuration","__install_53","addInteractionProps","addHoldInfo","moveAndClearHold","downAndStartHold","clearHold","tapAfterUp","collectEventTargets","tap","doubletap","_arg$targets","props","eventable","_subtractOrigin","_addOrigin","minDuration","___interopRequireDefault_54","___base_54","_$base_53","__install_54","holdRepeatInterval","holdrepeat","onNew","onFired","holdIntervalHandle","endHoldRepeat","enderTypes","___extend_56","___interopRequireDefault_56","__install_56","pointerEventsMethod","__backCompatOption","__pointerEvents_55","___interopRequireWildcard_55","_holdRepeat","___interopRequireDefault_55","_$holdRepeat_54","_interactableTargets","_$interactableTargets_56","__install_57","reflow","runningInteraction","reflowPromise","_reflowPromise","_reflowResolve","xywh","startReflow","___interopRequireDefault_57","exchange","___interopRequireDefault_33","_$index_5","_arrange","_$index_7","_autoScroll","_$index_8","_autoStart","_$index_13","___clone_33","_$index_14","_components","_$index_15","___interactablePreventDefault_33","feedback","_$index_29","___interopRequireWildcard_33","_$index_30","_inertia","_$index_31","_interact","_$index_32","___index_33","_$index_39","_multiTarget","_$index_50","_pointerEvents","_$index_55","_reflow","_$index_57","displace","_$displace_67","__pointerUtils_33","vueComponents","_$index_84","use","vue","components","__utils","_$exchange_71","___index_85","___interopRequireDefault_85","_$index_33","___typeof_85","_$index_85","_unused","f","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","getNative","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","iteratee","baseAssignValue","eq","objValue","arrayPush","isFlattenable","baseFlatten","depth","isStrict","castPath","toKey","getRawTag","objectToString","symToStringTag","toStringTag","baseGetTag","isObjectLike","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","basePickBy","hasIn","baseGet","baseSet","assignValue","isIndex","customizer","nested","constant","identity","baseSetToString","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","isKey","coreJsData","overRest","setToString","freeGlobal","isKeyable","__data__","baseIsNative","getValue","nativeObjectToString","unmasked","isArguments","isLength","hasFunc","nativeCreate","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","maskSrcKey","IE_PROTO","assocIndexOf","getMapData","memoize","nativeMax","otherArgs","freeSelf","shortOut","nativeNow","lastCalled","stamp","remaining","memoizeCapped","mapping","fallbackHolder","baseAry","cloneArray","wrapImmutable","cloner","baseConvert","util","isLib","isObj","cap","curry","fixed","immutable","rearg","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","runInContext","ary","isError","isWeakMap","toInteger","toPath","each","aryMethodKeys","aryMethod","wrappers","castArray","arity","mixin","pairs","pair","nthArg","indexes","castCap","iterateeRearg","overArg","baseArity","iterateeAry","castFixed","skipFixed","methodSpread","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","createConverter","aliasToReal","remap","oldOptions","newUtil","newFunc","wrapped","mutate","createCloner","aryKey","otherName","afterRearg","castCurry","convert","realToAlias","baseHasIn","baseIsArguments","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsOctal","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","arrayAggregator","setter","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","arrayProto","objectCtorString","oldDash","Buffer","allocUnsafe","getPrototype","objectCreate","create","symIterator","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMin","nativeParseInt","nativeRandom","nativeReverse","metaMap","realNames","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolValueOf","valueOf","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","SetCache","Stack","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAggregator","baseEach","baseAssign","copyObject","baseAt","skip","lower","upper","baseClone","bitmask","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","valuesIndex","templateSettings","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFor","createBaseFor","baseForRight","baseFunctions","baseGetAllKeys","keysFunc","symbolsFunc","baseGt","baseHas","baseIntersection","arrays","othLength","othIndex","maxLength","seen","baseInvoke","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isStrictComparable","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","baseSample","baseSampleSize","baseSetData","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","createOver","arrayFunc","createPadding","chars","charsLength","createRange","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","otherFunc","stubArray","ctorString","isMaskable","stubFalse","reference","insertWrapDetails","updateWrapDetails","getWrapDetails","rand","differenceBy","differenceWith","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","groupBy","invokeMap","keyBy","partition","sortBy","bindKey","WRAP_BIND_FLAG","lastArgs","lastThis","lastCallTime","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","flush","resolver","memoized","Cache","negate","overArgs","funcsLength","partial","partialRight","gt","gte","isInteger","lt","lte","next","done","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","invoke","CLONE_DEEP_FLAG","basePick","toPairs","toPairsIn","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","flow","flowRight","methodOf","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","after","chunk","cond","conforms","baseConforms","curryRight","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","mapKeys","matchesProperty","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","spread","tail","take","takeRight","takeRightWhile","takeWhile","isArrLike","unary","uniq","uniqBy","uniqWith","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","every","findLastKey","forIn","forInRight","forOwn","forOwnRight","baseInRange","isBoolean","isElement","isEqualWith","isMatch","isMatchWith","isNative","isNull","isSafeInteger","isUndefined","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduceRight","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sum","sumBy","template","settings","imports","importsKeys","importsValues","isEscaping","isEvaluating","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","unescape","uniqueId","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","toJSON","define","o","Dt","Z","Un","Ct","W","U","Yr","Pr","$","qr","F","N","an","V","Fr","J","_e","Ut","Nr","en","bn","wn","mn","xn","jn","Wn","Ln","Bn","Tn","$n","Dn","Mn","Fn","Pn","qn","Kn","Vn","Gn","Hn","Jn","Qn","Xn","tt","rt","et","ut","ot","ct","st","ht","pt","_t","vt","yt","bt","wt","mt","xt","jt","At","kt","It","Ot","Rt","zt","Et","St","Wt","Lt","Bt","Tt","$t","Mt","Ft","Nt","Pt","qt","Zt","Kt","Vt","Gt","Ht","Jt","Yt","Qt","rr","Xt","er","ur","ar","lr","sr","ir","hr","pr","_r","vr","gr","yr","dr","br","wr","xr","jr","Ar","kr","Ir","Or","Rr","zr","Er","Sr","Wr","Br","Tr","$r","Dr","Mr","Zr","Kr","Vr","Qr","Xr","ne","re","ee","ue","ie","oe","fe","ce","ae","le","se","he","pe","ve","ge","ye","be","cc","bh","bl","eo","nr","or","mr","dh","mh","Ih","hl","Ci","tu","Xi","Tu","Gf","Lr","Cr","ys","Ur","$u","Pc","Tl","il","Mc","fc","zi","zs","Ou","Ei","Rs","Mu","qc","Os","Du","Ru","zu","Wu","Eu","_s","ll","Su","Si","kh","jh","di","yi","Gr","pl","Ws","Hr","Jr","Li","ws","uc","ku","no","de","we","Bl","ki","Ki","me","xe","je","ke","Hl","Oe","Gi","jo","Re","Se","pi","Rl","vi","We","Ce","pn","Ue","ml","Di","kl","to","De","La","Ze","qe","Fa","Me","Mi","Vl","Fe","Zi","Ne","Pe","Hf","ji","Ni","Bi","Fi","Nc","Ke","Ji","Jf","Rc","Ve","Ge","He","mi","A","Lu","Cu","Ye","fu","Xe","Ll","nu","yu","Nl","Ql","eu","uu","Ls","Vi","iu","ra","ou","cu","au","lu","su","hu","pu","_u","vu","vs","gu","ks","du","bu","wu","mu","xu","ju","Au","Cs","Ec","Iu","zl","Uu","Gl","Bu","Fu","Nu","Ui","Pu","qu","Ku","Vu","Ra","ca","Gu","Hu","wi","oi","Qu","Ju","Yu","gi","bi","Is","$i","C","Hi","Xu","Ie","ni","ri","Fl","ei","ui","Ac","ru","ii","Oc","Ss","Yi","fi","al","kc","Zl","ci","ai","qi","Zu","li","gl","si","hi","_o","fs","Ca","xi","Ti","Ai","Ri","oc","El","Cl","Wi","ro","Oi","Qi","Jl","dl","ho","po","bo","Io","Eo","Xl","Go","Ho","Qo","nf","_f","vf","yf","Rf","zf","Wf","fh","As","Cf","Uf","ic","vc","jl","dc","jc","Ul","Ic","Gc","fa","Qh","Sa","Ta","Da","Qe","Pa","qa","ol","fl","cl","sl","_l","vl","yl","wl","Al","Il","Ol","Sl","Wl","$l","Dl","Ml","Pl","ql","Kl","Yl","ns","ts","es","us","os","cs","as","ls","ss","hs","ps","hash","tn","js","Es","Pi","Us","Bs","Ts","$s","Ds","Ms","Fs","Ns","Ps","qs","Zs","Ks","Vs","Gs","Hs","Js","Ys","Qs","Xs","nh","th","rh","eh","uh","ih","oh","ch","ah","vn","lh","sh","hh","ph","_h","vh","gh","yh","wh","xh","Ah","Oh","Rh","zh","Eh","Sh","Wh","Lh","Ch","Uh","Mh","Bh","Th","$h","Dh","Fh","ln","Nh","Je","Ph","qh","Zh","Kh","Vh","Gh","Hh","Jh","Yh","Xh","np","tp","rp","ep","ip","op","fp","cp","ap","lp","sp","hp","pp","_p","vp","gp","Ef","Sf","Ae","Ii","factory","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","destination","sourcePrototype","getDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","_shouldRoundValues","bmPow","bmSqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","absArr","defaultCurveSegments","degToRads","roundCorner","roundValues","bmRnd","styleDiv","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","RGBtoHSV","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","_workerSelf","setupWorker","Worker","blob","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","jLen","kLen","completed","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","comp","findComp","__used","it","checkVersion","animVersionString","animVersion","minimumVersion","checkText","updateTextLayer","textLayer","documentData","iterateLayers","assets","checkChars","charData","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","responseText","load","fullPath","XMLHttpRequest","err","onreadystatechange","readyState","send","completeData","onComplete","onError","createProcess","loadAnimation","processId","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","img","intervalId","getBBox","_imageLoaded","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","setCacheType","elementHelper","triggerEvent","_cbs","markerParser","parsePayloadLines","line","lines","keysCount","_markers","markers","_marker","markerData","tm","cm","__","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","goToAndStop","isFrame","numValue","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getAssetData","getDuration","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","addPlayingCount","nowTime","elapsedTime","searchAnimations","animElements","getElementsByClassName","lenAnims","getElementsByTagName","unfreeze","getRegisteredAnimations","animations","BezierFactory","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","points","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","BezierData","segmentLength","PointData","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","mathAbs","frameNum","caching","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","attitude","asin","bank","cos","s1","s2","s3","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","convertToPath","convertStarToPath","convertPolygonToPath","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v1","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","sz","setTransform","translate","tx","tz","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","setLocation","setSubframeRendering","setPrefix","setQuality","inBrowser","installPlugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","queryString","useWebWorker","setIDPrefix","__getFactory","scripts","myScript","ShapeModifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","totalShapeLength","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","polynomialCoefficients","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","boundingBox","splitData","boxIntersect","intersectsImpl","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","polarOffset","pointDistance","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","prevIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","flex","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","fStyle","fWeight","weight","tr","so","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_groups","resetElements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","itemsTransform","cont","hasReloaded","copies","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","newPosPerc","derivative","denom","tcusp","p10","p11","p20","p21","bounds","shapeSegmentInverted","pointsType","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","combinedCharacters","BLACK_FLAG_CODE_POINT","surrogateModifiers","setUpNode","family","fontVariant","letterSpacing","familyArray","enabledFamilies","trimFontOptions","createHelper","engine","fontProps","tHelper","fFamily","fClass","tCanvasHelper","OffscreenCanvas","getComputedTextLength","getCodePoint","codePoint","second","isRegionalCode","Font","typekitLoaded","_warned","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","monoCase","sansCase","fPath","fOrigin","sc","getCharData","_char","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","SlotManager","slotFactory","RenderableElement","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","prepareProperties","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","expansor","feMorph","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","createFilter","filters","Effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","hd","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ost","buildShapeString","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lineWidths","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","render","currentTransform","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","fb","rn","totalChars","newInd","currentInd","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","getMult","textProperty","easer","tot","smoothness","newCharsFlag","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","titleElement","titleId","descElement","descId","contentVisibility","viewBoxOnly","viewBoxSize","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","matteMask","nextElement","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","loadLuma","_svg","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","HCameraElement","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","addTransformToStyleList","removeTransformFromStyleList","closeStyles","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","fillType","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","rngname","startdenom","significance","ARC4","keylen","typ","mixkey","seed","smear","stringseed","tostring","shortseed","entropy","crypto","msCrypto","getRandomValues","plugins","autoseed","arc4","prng","int32","quick","pass","is_math_call","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","frames","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","numKeys","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","defineProperties","anchor_point","startTime","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","_propertyGroup","createValueInterface","numProperties","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","initialize","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","sigma","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","$isNaN","moment","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","isLower","longDateFormat","LT","LTS","LL","LLL","LLLL","calendar","sameDay","nextDay","lastDay","sameElse","relativeTime","future","past","dd","MM","yy","dayOfMonthOrdinalParse","ordinal","dow","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","plural","forms","relativeTimeWithPlural","isFormat","period","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsParse","monthsRegex","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","weekdaysParse","longMonthsParse","shortMonthsParse","processRelativeTime","lll","llll","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","$0","$1","$2","isUpper","ezafeNumSuffix","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","translateSeconds","translateSingular","special","relativeTimeWithSingular","relativeSeconds","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","days","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","hm","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","hookCallback","setHookCallback","hasOwnProp","isObjectEmpty","createUTC","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_tzm","_isUTC","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","dates","weekday","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","millisecond","quarters","seconds","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","isoweeks","isoweek","years","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","getPrioritizedUnits","unitsObj","priority","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","getParseRegexForToken","unescapeFormat","regexEscape","absFloor","toInt","argumentForCoercion","coercedNumber","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getDay","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setHours","setDate","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","daysInMonth","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","firstWeekOffset","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","locales","localeFamilies","commonPrefix","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","prototypeMin","prototypeMax","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","tmp","isAdding","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","toISOString","keepOffset","toDate","inspect","datetime","zone","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","toFixed","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","quotes","single","quoteREs","wrapQuotes","defaultStyle","opts","quoteStyle","quoteChar","canTrustToString","inspect_","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","baseIndent","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","singleLineValues","indentedJoin","cause","mapParts","collectionOf","setParts","weakCollectionOf","isWeakRef","isBigInt","globalThis","protoTag","trailer","quoteRE","lowbyte","lineJoiner","symMap","pathToRegexp","compile","tokensToFunction","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","defaultDelimiter","whitelist","pathEscaped","escaped","escapeGroup","escapeString","encode","sensitive","route","endToken","isEndDelimited","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","isRequired","ReactPropTypes","arrayOf","elementType","instanceOf","objectOf","oneOfType","exact","checkPropTypes","PropTypes","percentTwenties","Format","RFC1738","RFC3986","allowDots","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decoder","decode","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","leaf","cleanRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","combine","parseValues","newObj","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","addQueryPrefix","encoder","encodeValuesOnly","serializeDate","skipNulls","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","findFlag","valuesJoined","objKeys","adjustedPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","hexTable","arrayToObject","refs","compacted","compactQueue","strWithoutPlus","defaultEncoder","kind","mergeTarget","targetItem","aa","ba","ea","ha","ia","ja","la","ma","na","oa","ka","pa","extractEvents","eventTypes","phasedRegistrationNames","ua","registrationName","va","wa","xa","ya","za","Aa","Ba","stateNode","Ea","Ga","Ha","Ia","Ja","Ka","Ma","Na","Oa","Qa","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","Ua","Va","xlinkHref","Wa","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","Xa","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","Ya","Za","$a","ab","bb","eb","gb","hb","ib","jb","kb","lb","mb","nb","pb","displayName","$$typeof","_status","_result","qb","_debugOwner","_debugSource","return","rb","sb","xb","_valueTracker","setValue","stopTracking","tb","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","Gb","Children","Fb","Hb","defaultSelected","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","namespaceURI","firstChild","MSApp","execUnsafeLocalFunction","Rb","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","transition","Xb","Yb","Zb","$b","ac","alternate","effectTag","ec","memoizedState","dehydrated","hc","sibling","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","mc","nc","srcElement","pc","topLevelType","nativeEvent","targetInst","eventSystemFlags","containerInfo","tc","wc","xc","yc","zc","Bc","Cc","Dc","Fc","Hc","Kc","blockedOn","Lc","unstable_runWithPriority","hydrate","Qc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","order","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","kd","ld","nd","menuitem","area","embed","keygen","track","wbr","od","pd","qd","sd","ud","vd","nextSibling","wd","compareDocumentPosition","xd","HTMLIFrameElement","contentWindow","yd","contentEditable","zd","Ad","Bd","Cd","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","Interface","isDefaultPrevented","defaultPrevented","eventPool","destructor","getPooled","cancelBubble","persist","eventPhase","isTrusted","documentMode","beforeInput","compositionEnd","compositionStart","compositionUpdate","keyCode","which","char","email","password","tel","change","ze","Be","Ee","detachEvent","attachEvent","Le","_isInputEventSupported","Alt","Control","Meta","Shift","Te","fromElement","toElement","movementX","movementY","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","mouseEnter","mouseLeave","pointerEnter","pointerLeave","parentWindow","$e","af","bf","cf","df","ff","hf","jf","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","onSelect","lf","animationName","pseudoElement","mf","clipboardData","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","rf","sf","dataTransfer","tf","targetTouches","uf","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","Af","Bf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Df","Ff","getChildContext","__reactInternalMemoizedMergedChildContext","If","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","unstable_LowPriority","unstable_IdlePriority","Tf","unstable_shouldYield","Vf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","defaultProps","jg","kg","mg","ng","og","_currentValue","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","observedBits","responders","ug","updateQueue","baseState","baseQueue","shared","vg","wg","suspenseConfig","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Component","Fg","Jg","isMounted","_reactInternalFiber","enqueueSetState","Gg","Hg","Ig","enqueueReplaceState","enqueueForceUpdate","Kg","shouldComponentUpdate","isPureReactComponent","Lg","contextType","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","_owner","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","memoizedProps","revealOrder","responder","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","deps","readContext","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useResponder","useDeferredValue","useTransition","pendingProps","ReactCurrentOwner","compare","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","getDerivedStateFromError","pendingContext","retryTime","unstable_avoidThisFallback","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","wasMultiple","onclick","__reactInternalSnapshotBeforeUpdate","componentWillUnmount","_reactRootContainer","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","removeAllRanges","addRange","setEnd","vb","Uj","Vj","Wj","_ctor","Xj","_calculateChangedBits","unstable_observedBits","Zj","isReactComponent","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hk","kk","jk","form","Lj","lk","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","setState","forceUpdate","__self","__source","IsSomeRendererActing","only","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","forwardRef","isValidElement","lazy","memo","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","_b","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","MessageChannel","unstable_forceFrameRate","port2","port1","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","listGetNode","isDelete","$o","channel","assert","deletedNode","listDelete","listGet","listHas","listSet","callBound","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","isPrototypeOf","_len2","_key2","_len3","_key3","none","singletonNone","fail","isSome","major","minor","patch","tinymce","explode","getOr","getOption","fromHtml","fromTag","fromText","fromDom","fromPoint","elementFromPoint","_len4","_key4","detect","unknown","versionRegexes","brand","browsers","oses","nt","isEdge","isChromium","isIE","isOpera","isFirefox","isiOS","isAndroid","isMacOS","isLinux","isSolaris","isFreeBSD","isChromeOS","ft","brands","orThunk","fold","isiPad","isiPhone","isTablet","isPhone","isTouch","isWebView","isDesktop","deviceType","userAgentData","isSupported","cleanDocument","loadScript","cleanFilteredInlineElements","unbind","_len5","_key5","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","childElementCount","setStartBefore","setStartAfter","setEndBefore","setEndAfter","_len6","_key6","_len7","_key7","constructors","ltr","rtl","startContainer","endContainer","endOffset","soffset","finish","foffset","attachShadow","cata","getStart","domRange","exactFromRange","getWin","nn","sn","getRangeAt","cn","un","hn","dn","gn","yn","kn","Sn","Cn","In","An","On","En","Nn","_n","Rn","exists","removeProperty","zn","Yn","Zn","cr","getOrThunk","setBaseAndExtent","cleanup","toOn","toOff","contenteditable","attach","contents","html","offscreen","detach","run","cacheSuffix","pasteBinAttrs","keepSrc","sanitizer","sanitizeHtml","sanitizeText","tabSpaces","indentUseMargin","defaultProtocol","isReady","pure","toPromise","anonBind","toLazy","toCached","isValue","mapError","forall","getOrDie","toOptional","fromOption","kill","raw","ephemeral","permanent","unregister","getOrSetIndexed","waitForLoad","preload","addStylesheet","addScript","paste","incomplete","bundle","steps","starts","not","caseInsensitive","condition","oo","io","lo","uo","mo","fo","go","scopeName","getNode","vo","yo","ko","tags","wo","So","Co","createDocumentFragment","receive","xo","hasNext","To","emit","emitTokens","Ao","trace","nextFilter","Oo","No","emblems","originalToken","Lo","getCurrentListType","getCurrentLevel","listType","emitter","openItem","inside","pred","Do","Po","Ro","Mo","Fo","Uo","Bo","zo","Wo","Vo","qo","Ko","Jo","Yo","closeAllLists","Xo","outside","Zo","nextNode","currentNode","createTreeWalker","NodeFilter","SHOW_COMMENT","acceptNode","FILTER_ACCEPT","FILTER_REJECT","createHTMLDocument","Word","GoogleDocs","Html","attrName","styleName","isNone","mapValue","red","alpha","getImageData","matchTag","newTag","removeExtra","border","fake","toRemove","toPreserve","face","ga","commonAncestorContainer","getOrUndefined","bothErrors","firstError","secondError","bothValues","naturalWidth","naturalHeight","atob","HTMLCanvasElement","toBlob","toDataURL","complete","onloadend","readAsDataURL","revokeObjectURL","toBase64","toAdjustedBlob","toAdjustedDataURL","toAdjustedBase64","toCanvas","isPx","cropWidth","cropHeight","include","excludeWith","excludeWithout","boundary","nonEditable","isBoundary","toText","getText","isText","isEmptyTag","isNonEditable","setText","insert","afterAll","getRaw","copyTo","appendAll","unwrap","query","comparePosition","prevSibling","isComment","isSpecial","getLanguage","term","discriminator","fromClipboard","rtf","tl","nl","flavor","rl","setPrototypeOf","construct","sham","ul","seal","removed","HTMLTemplateElement","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","trustedTypes","createPolicy","currentScript","createHTML","createScriptURL","createNodeIterator","importNode","allowCustomizedBuiltInElements","PARSER_MEDIA_TYPE","ALLOWED_TAGS","ALLOWED_ATTR","ALLOWED_NAMESPACES","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","FORBID_CONTENTS","FORBID_TAGS","USE_PROFILES","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","ALLOWED_URI_REGEXP","NAMESPACE","svgFilters","mathMl","ADD_TAGS","tbody","outerHTML","getAttributeNode","createDocument","SHOW_ELEMENT","SHOW_TEXT","allowedTags","firstElementChild","attrValue","keepAttr","allowedAttributes","forceKeepAttr","getAttributeType","toStaticHTML","shadowroot","shadowrootmod","doctype","setConfig","clearConfig","isValidAttribute","addHook","removeHook","removeHooks","removeAllHooks","native","msoffice","googledocs","plaintext","discard","getLabelForApi","getAvailable","isInternal","officeStyles","getWordData","getGoogleDocsData","getImage","getHtml","getOnlyText","getVoid","pasteCustom","isBlocked","_c","asyncAsset","allowLocalImages","errors","credentials","headers","readAsText","queryKey","strictMode","htmlStyles","isWord","isGoogleDocs","translations","gdocsStyles","setTitle","setContent","setButtons","close","getArg","scheme","auth","port","urlParse","urlGenerate","isAbsolute","toSetString","fromSetString","compareByOriginalPositions","originalLine","originalColumn","generatedColumn","generatedLine","compareByOriginalPositionsNoSource","compareByGeneratedPositionsDeflated","compareByGeneratedPositionsDeflatedNoLine","compareByGeneratedPositionsInflated","parseSourceMapInput","computeSourceURL","_array","_set","fromArray","ArraySet","_sorted","_last","unsortedForEach","MappingList","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","sourceRoot","eachMapping","generated","original","addMapping","sourceContentFor","setSourceContent","_validateMapping","applySourceMap","originalPositionFor","_serializeMappings","_generateSourcesContent","mappings","sourcesContent","SourceMapGenerator","fromCodePoint","startLine","startColumn","safe","spec","AnPlusB","Atrule","AtrulePrelude","AttributeSelector","Block","Brackets","CDC","CDO","ClassSelector","Combinator","Comment","Declaration","DeclarationList","Dimension","IdSelector","Identifier","MediaFeature","MediaQuery","MediaQueryList","NestingSelector","Nth","Operator","Parentheses","Percentage","PseudoClassSelector","PseudoElementSelector","Ratio","Raw","Rule","Selector","SelectorList","StyleSheet","TypeSelector","UnicodeRange","Url","Value","em","WhiteSpace","tokenStart","tokenEnd","cmpChar","tokenType","lookupType","isDelim","consume","skipSC","substrToCursor","loc","getLocation","tokenize","prelude","eof","eat","eatDelim","eatIdent","important","lookupValue","consumeNumber","consumeFunctionName","pseudo","createList","tokenIndex","getTokenStart","firstCharOffset","skipUntilBalanced","consumeUntilBalanceEnd","readSequence","getFirstListNode","getLocationFromList","generate","tokenBefore","decorator","sourceMap","rm","om","allocateCursor","releaseCursor","appendData","updateCursors","insertList","im","lm","sourceFragment","formattedMessage","um","recognizer","onWhiteSpace","dm","createSingleNodeList","fm","gm","vm","ym","where","slotted","xm","_class2","setSource","offsetAndType","balance","tokenCount","lookupOffset","forEachToken","atrule","parseContext","parseAtrulePrelude","parseRulePrelude","parseValue","parseCustomProperty","consumeUntilLeftCurlyBracket","consumeUntilLeftCurlyBracketOrSemicolon","consumeUntilExclamationMarkOrSemicolon","consumeUntilSemicolonIncluded","getLastListNode","parseWithFallback","lookupNonWSType","cmpStr","getLocationRange","filename","onParseError","onComment","selectorList","km","wm","Sm","Cm","Tm","Im","_len8","_key8","Am","_len9","_key9","Om","Em","Lm","Nm","selectorString","asObject","asArray","asString","Dm","Pm","Rm","CSSRule","IMPORT_RULE","styleSheet","STYLE_RULE","Mm","Fm","calculate","_m","jm","Um","zm","convertToPx","Hm","write","mergeInline","Bm","Vm","Gm","qm","preprocessor","annotate","Jm","Ym","Xm","pcIsSpace","Zm","Qm","Km","handle","proxyBin","findClipboardTags","Wm","intraFlag","isMarked","unsupported","supported","bower","idRef","isEquation","dp","mp","yp","bp","xp","kp","blobs","filteredImages","imageAttrs","failedImage","Sp","Cp","processRtf","wp","cropl","cropt","cropw","croph","Tp","Ip","Ap","Op","Ep","Lp","Np","Dp","Pp","Rp","Mp","jp","Fp","correlated","Bp","getAsFile","zp","Hp","Wp","Resource","$p","Vp","Gp","qp","Kp","Jp","Yp","Xp","Zp","Qp","undoManager","isCollapsed","execCommand","insertContent","hasEventListeners","internal","cancelled","getBody","DomParser","forced_root_block","isRootContent","Serializer","validate","PluginManager","requireLangPack","majorVersion","minorVersion","register","processor","isRegistered","VK","metaKeyPressed","editorUpload","blobCache","base64","blobUri","uri","importImages","uploadImages","getLocalURL","jsUrl","transact","moveToBookmark","createDialog","primary","getButtons","initialData","onCancel","onAction","windowManager","notificationManager","setProgressState","pasteHtml","pasteText","pasteEvent","getBookmark","addCommand","getDoc","RangeUtils","getCaretRangeFromPoint","setRng","files","jpg","jpe","jfi","jif","jfif","pjpeg","pjp","_T_","aU","i3","d7","jH","c0","i0","jG","b5","fI","cZ","iZ","cK","f7","cY","cX","iW","f6","f5","f4","cW","f3","aC","bI","fH","cV","jD","a$","cH","cI","cJ","fG","jC","cU","f0","fF","a7","fE","jB","jA","fY","d6","iR","aV","d5","iP","d4","d3","jz","cG","cT","bq","bC","iM","jy","cS","iL","b4","jw","fX","jv","b3","bH","bG","bB","bA","fC","d0","aS","dZ","fB","fA","b$","cR","bF","iG","fz","jq","b0","fy","aR","aK","aE","fx","iF","dY","fw","iE","fv","fU","iD","iA","iz","b_","iy","fS","d$","cQ","dX","dW","iw","d_","cF","a_","cP","b9","a9","dV","dU","cE","d9","cO","fQ","dT","cN","dS","fq","a8","cD","fP","fO","cC","dR","i9","i_","i8","cM","cB","fN","bE","i6","cL","dQ","fL","aD","b8","bD","b7","b6","cA","dP","fK","d8","dO","fJ","zC","c_","bM","jS","aW","jT","toUtf16","Ax","aG","Invalid_argument","jQ","bL","bK","aL","aF","AA","log2","jZ","j9","Division_by_zero","Az","c6","jP","dims","caml_custom","jN","c5","f9","hi32","lo32","ucompare","neg","isZero","isNeg","and","shift_left","shift_right_unsigned","shift_right","lsl1","lsr1","udivmod","quotient","modulus","zE","bv","jL","av","Failure","jM","read32s","read16u","read32u","zD","read8s","read8u","read16s","jK","imul","zQ","jO","zV","c4","fixed_length","jU","c8","jV","j0","jR","c9","f$","bN","signstyle","filler","signedconv","uppercase","prec","conv","toExponential","j7","gq","AB","zF","Ay","AE","j5","bP","f_","Sys_error","j_","c$","bJ","lookupFun","jY","read","err_closed","create_dir_if_needed","slash","lookup","mkdir","is_dir","rmdir","readdir","opendir","readSync","closeSync","unlink","rdonly","wronly","binary","excl","orig","device","zI","zR","zN","zO","zM","zP","zS","zZ","zW","zY","j8","c7","z6","z7","z8","z9","bO","aM","b32","zz","subarray","zA","zy","buffer_curr","j3","buffered","j4","z$","Ak","lex_default","lex_base","lex_backtrk","lex_check","lex_trans","lex_default_code","lex_base_code","lex_backtrk_code","lex_check_code","lex_trans_code","lex_code","bQ","j6","aH","toplevelReloc","env","jsoo_static_env","Not_found","Av","randomBytes","bR","joo_tramp","joo_args","InternalError","Stack_overflow","Aw","altname","isCharacterDevice","AC","undo","txt","AD","jW","z5","zK","aJ","cz","zw","exit","Aq","caml_fs_tmp","jsoo_create_file","zL","gv","gL","eK","a3","g9","hL","zv","hP","hQ","kq","kv","kz","kA","ky","kE","kD","kC","kJ","kH","kG","kF","kM","kL","kR","kS","kT","kU","kN","kO","kP","kQ","kZ","k0","kV","kW","kX","kY","k3","k7","k6","k5","lq","lG","ly","lH","lz","lI","lA","lJ","lB","lK","lC","lE","lw","lF","lx","lD","mN","mL","mM","mO","mP","mQ","mR","mS","mT","mU","mV","mJ","mH","mI","mG","mB","mq","mv","mw","mx","my","mz","mA","mk","l4","l5","l6","l7","l8","l9","l_","l$","l0","l3","lO","lP","lR","lS","lT","lU","lV","lW","lX","lY","lN","lQ","lZ","k8","k9","k_","k$","lL","mZ","m0","nk","m_","m$","m5","m6","m7","m8","m9","m3","m4","mY","mW","mX","nq","nH","nG","nE","nM","nN","pB","pC","p6","p7","p8","p9","p_","p$","pZ","pP","pQ","pR","pS","pT","pU","pV","pW","pX","pL","pM","pN","pO","pK","pJ","pG","pH","pI","pF","pA","nO","nP","nQ","nR","nS","nT","nU","nV","nW","nX","nY","nZ","n0","n3","n4","n5","n6","n7","n8","n9","n_","n$","oq","ov","oz","oA","oB","oC","oD","oE","oF","oG","oH","oI","oJ","oK","oL","oM","oN","oO","oP","oQ","oR","oS","oT","oU","oV","oW","oZ","o0","o3","o4","o5","o7","o8","o9","o_","o$","pk","pq","qA","qD","qE","qB","qI","qM","qL","qK","qJ","qS","qQ","qR","qN","qO","qP","q0","qZ","q3","qT","qU","qV","qW","q1","q$","q9","q5","q6","q7","q8","rQ","rP","rM","rK","rD","rE","rF","rG","rH","rI","rJ","rL","rN","rO","rB","rA","rw","rv","rk","rq","r4","r5","r3","r2","r1","r0","rZ","rY","rV","rX","rW","rT","rU","rS","rR","r9","r_","sq","sv","sA","sB","sC","sD","sE","sF","sG","sH","sI","sJ","sK","sL","sM","sN","sO","sP","sQ","sR","sS","sT","sU","sV","sW","sX","sY","sZ","s4","s5","s6","s8","s9","s_","s$","tk","tq","tv","tw","tA","tB","tC","tD","tE","tF","tH","tI","tJ","tL","tM","tN","tP","tQ","tR","tS","tT","tU","tV","tW","tX","tY","tZ","t3","t4","t5","t6","t7","t8","t9","t_","t$","uk","uq","u8","u9","u_","u$","u6","uV","uW","uX","uY","uZ","uT","uO","uP","uN","uQ","uJ","uH","uI","uF","uC","uD","uz","uv","uw","ux","uy","uA","uB","uE","uM","uR","uS","u2","u4","u5","vk","vZ","vV","vW","vT","vU","vQ","vR","vS","vN","vO","vP","vK","vL","vC","vw","vx","vy","vz","vA","vB","vD","vE","vF","vG","vH","vI","vv","vq","v7","v_","v$","v8","v9","v5","v6","wK","wL","wM","wI","wE","wF","wA","wB","wC","wz","wD","wx","wq","wk","xB","xz","xx","xv","xw","xf","w$","w8","w7","w3","w4","w0","w1","wZ","wU","wV","wW","wX","wS","wQ","wR","xq","xP","xN","xO","xL","xJ","xK","xH","xD","xE","xF","xG","x8","x9","xV","xW","xX","xY","xZ","x4","x5","x7","x6","xR","xT","x$","yv","yq","yk","yC","yD","yz","yA","yx","yE","yF","y4","y5","y6","yY","yZ","yU","yV","yJ","yL","yK","yM","yO","yP","yR","yS","yW","y7","y$","buffer_max","refill","aY","bS","gw","ew","ex","gx","gy","kw","kx","ey","bT","gz","gA","gB","aN","zJ","kB","ez","eA","gC","aZ","gD","eB","gE","aq","gF","gG","eC","gH","kI","gI","kK","gJ","zB","gK","a0","z_","gM","eD","gN","eE","eF","k4","gP","gQ","gR","bU","eG","gS","gT","bV","gU","gV","eH","aI","aO","aP","cq","aQ","bW","lM","gW","mC","mD","mE","mF","zG","eI","mK","gX","eJ","eL","gY","eM","eN","gZ","g0","eO","nD","nI","g7","nL","nK","g8","nJ","ow","o6","eR","g_","g$","pD","pw","eS","pE","pY","qk","a4","eT","eU","eW","eX","eY","cw","qC","dv","qG","dw","dz","eZ","e0","dA","a5","e3","dB","qF","qH","hq","bX","qX","qY","e4","e5","q2","e6","dC","q4","q_","hv","dD","hw","e7","rC","hx","hy","hz","hA","e8","e9","e_","bY","hB","dN","bZ","dM","dL","dK","a6","dJ","dE","r7","hC","r8","r6","r$","hD","hE","hF","e$","hG","hH","hI","hJ","hK","s7","tG","tK","tO","hM","hN","hO","hR","uG","uK","uL","hS","hT","uU","u3","u7","hU","hV","dF","dG","hW","hX","vJ","vM","hY","hZ","h0","wv","wy","wG","wH","wJ","wN","wO","wP","wT","wY","w2","w6","w_","xk","h3","h4","xC","xI","xM","xQ","xS","h5","xU","x_","h6","h7","h8","h9","yw","h_","yB","cv","dH","yG","h$","yH","yN","yQ","yT","yX","y8","y9","y_","zk","typeOf$1","eq$2","tripleEq","eqString","eqArray","eqa","eqSortedArray","compareFn","contramap","sort$1","eqRecord","eqAny","isEquatableType","getPrototypeOf$2","hasProto","isType$1","typeOf","isSimpleType","eq$1","is$4","isArray$1","isNullable","isNonNullable","isArrayOf","compose","compose1","fbc","fab","tripleEquals","initialArgs","restArgs","die","apply$1","never","always","Optional","onNone","onSome","mapper","binder","replacement","thunk","worker","nativeSlice","nativeIndexOf","nativePush","rawIndexOf","contains$2","map$3","each$e","eachr","partition$2","filter$5","foldr","foldl","findUntil$1","find$2","findIndex$2","bind$3","mapToObject","get$b","last$3","findMap","hasOwnProperty$1","each$d","map$2","tupleMap","tuple","objAcc","internalFilter","onTrue","onFalse","filter$4","get$a","has$2","hasNonNullableKey","stringArray","each$c","map$1","filter$3","findIndex$1","last$2","cached","called","unknown$2","nu$3","Version","detect$5","agent","cleanedAgent","find$1","firstMatch","detect$4","candidate","checkRange","removeLeading","removeFromStart","numChars","contains$1","trim$4","lTrim","rTrim","isNotEmpty","isEmpty$3","normalVersionRegex","checkContains","uastring","PlatformInfo","chromium","opera","firefox","safari","nu$2","Browser","unknown$1","android","linux","macos","solaris","freebsd","chromeos","nu$1","isOS","OperatingSystem","ios","PlatformDetection","detect$3","userAgentDataOpt","mediaMatch","detectBrowser$1","uaBrand","lcBrand","detectBrowser","detectOs","DeviceType","isMobile","iOSwebview","platform$4","detect$2","platform$3","browser$3","os$1","windowsPhone","Env","transparentSrc","canHaveCSP","whiteSpaceRegExp$1","trim$3","walk$4","Tools","is$3","makeMap","delim","resolvedItems","grep","inArray","ext","walk","explode$3","_addCacheSuffix","is$2","lhs","rhs","lift2","someIf","Global","resolve$2","unsafe","getPrototypeOf$1","sandHTMLElement","type$1","isHTMLElement$1","isElement$7","isText$b","isDocument$2","isDocumentFragment$1","isTag","rawSet","set$3","setAll$1","get$9","getOpt","has$1","remove$a","clone$4","read$4","get$8","add$3","clazz","add$4","remove$8","remove$9","add$2","cleanClass","remove$7","toggle$1","toggle","toggle$2","fromDom$2","SugarElement","fromHtml$1","fromPoint$2","docElm","recurse","is$1","bypassSelector","owner$1","documentOrOwner","dos","parents$1","isRoot","rawParent","prevSiblings","nextSiblings","children$1","child$1","childNodesCount","isShadowRoot","isSupported$1","getStyleContainer","getHead","getShadowHost","getOriginalEventTarget","isOpenShadowHost","inBody","getShadowRoot","ClosestOrAncestor","ancestor$4","closest$4","descendant$2","descend","ancestor$3","descendant$1","closest$3","isEditable$2","assumeEditable","isContentEditable","editable","getRaw$1","internalSet","set$2","get$7","getUnsafeProperty","getAllRaw","ruleName","remove$6","internalRemove","before$3","after$4","append$1","wrap$2","rogue","remove$5","after$3","fromDom$1","get$6","docDom","fragment","contentElements","handle$1","rawEvent","mkEvent","fromRawEvent","bind$2","useCapture","SugarPosition","firstDefinedOrZero","boxPosition","get$5","_DOC","scrollTo","intoView","alignToTop","scrollIntoViewIfNeeded","getBounds","visualViewport","get$4","pageLeft","pageTop","descendants$1","descendants","ancestor$2","DomTreeWalker","startNode","prev2","shallow","findSibling","findPreviousNode","startName","siblingName","isNodeType","isRestrictedNode","isElement$6","isHTMLElement","matchNodeName","lowerCasedName","matchNodeNames","lowerCasedNames","matchStyleValues","isBogus$2","isTable$2","hasContentEditableState","isTextareaOrInput","isText$a","isCData","isPi","isDocument$1","isDocumentFragment","isBr$6","isImg","isContentEditableTrue$3","isContentEditableFalse$b","isTableCell$3","isTableCellOrCaption","isMedia$2","isListItem$2","isDetails","isSummary$1","zeroWidth","nbsp","isZwsp$2","api$1","NodeValue","get$3","lazyLookup","isBr$5","isTextBlock$2","isList","isListItem$1","isTableSection","isTableCell$2","isWsPreserveElement","removeTrailingBr","allBrs","brs","rawNode","getLastChildren$1","createPaddingBr","fillWithPaddingBr","ZWSP$1","isZwsp$1","trim$2","isElement$5","isText$9","isCaretContainerBlock$1","isCaretContainerInline","isCaretContainer$2","hasContent","isBeforeInline","isAtStart","isAfterInline","isAtEnd","startsWithCaretContainer$1","endsWithCaretContainer$1","showCaretContainerBlock","caretContainer","lastBr","trimBogusBr","isRangeInCaretContainerBlock","isContentEditableTrue$2","isContentEditableFalse$a","isBr$4","isText$8","isInvalidTextElement","isAtomicInline","isTable","isCaretContainer$1","isCaretCandidate$3","isNonUiContentEditableFalse","isUnselectable","isEditableCaretCandidate$1","isInEditable","tempNode","whiteSpaceRegExp","isWhitespaceText","isZwsp","isNewLineChar","normalize$4","isStartOfContent","isEndOfContent","tabSpace","normalizedText","isCollapsibleWhitespace$1","isNewline","isWhitespace$1","hasWhitespacePreserveParent","isContent$1","isNamedAnchor","isBookmark","isBogus$1","isBogusAll","hasAttributeValue","hasNonEditableParent","isEmpty$2","skipBogus","isEmptyNode","brCount","walker","isNonHtmlElementRootName","isNonHtmlElementRoot","toScopeType","namespaceElements","transparentBlockAttr","makeSelectorFromSchemaMap","elementNames","updateTransparent","blocksSelector","transparent","updateBlockStateOnChildren","transparentSelector","getTransparentElements","getBlockElements","trimEdge","leftSide","childPropertyName","splitInvalidChildren","transparentBlocks","blocksElements","isBlock","transparentBlock","parentBlock","invalidChildren","isValidChild","stateScope","split$2","parentElm","splitElm","beforeFragment","extractContents","afterFragment","updateChildren","unwrapInvalidChildren","isTransparentBlock","isTransparentInline","updateElement","isTransparentElement","hasBlockAttr","isTransparentElementName","isTransparentAstBlock","browser$2","firstElement","hasChild","getPos","rootElm","clientLeft","clientTop","castOffsetParent","caption","bodyTop","captionTop","captionHeight","getTableCaptionDeltaY","StyleSheetLoader","documentOrShadowRoot","idCount","loadedStates","edos","addStyle","removeStyle","styleContainer","getOrCreateState","passed","failed","success","urlWithSuffix","linkElem","contentCssCors","referrerPolicy","unload","loadRawCss","loadAll","urls","allSettled","reason","unloadRawCss","unloadAll","_setReferrerPolicy","_setContentCssCors","create$d","forElement","referenceElement","rootDom","isInlineContent","isInline","isBookmarkNode$2","isSpan","isKeepTextNode","surroundedByInlineContent","prevIsInline","nextIsInline","trimNode","currentChildren","isDocument","isKeepElement","makeMap$3","attrsCharsRegExp","textCharsRegExp","rawCharsRegExp","entityRegExp","asciiMap","baseEntities","reverseEntities","buildEntitiesLookup","itemList","entity","namedEntities","encodeRaw","encodeNumeric","encodeNamed","entities","resolveEntities","Entities","encodeAllRaw","getEncodeFunc","entitiesMap","encodeNamedAndNumeric","encodeCustomNamed","nameMap","named","numeric","nativeDecode","split$1","patternToRegExp","parseValidElementsRules","globalElement","validElements","elementRuleRegExp","elementName","outputName","attrsPrefix","attrData","attributesOrder","cloneAttributesInto","paddEmpty","removeEmpty","removeEmptyAttrs","parseValidElementsAttrDataIntoElement","targetElement","attrRuleRegExp","hasPatternsRegExp","attrType","attrPrefix","attributesRequired","attributesDefault","attributesForced","forcedValue","validValues","attrPattern","attributePatterns","aliasName","mapCache","makeMap$2","each$b","extend$2","explode$2","createMap","getTextRootBlockElements","getTextBlockElements","compileElementMap","Schema","patternElements","customElementsMap","specialElements","createLookupTable","schemaType","schemaItems","globalAttributes","phrasingContent","flowContent","blockContent","getElementSetsAsStrings","addElement","childNames","allAttributes","addAttrs","schemaItem","video","script","makeSchema","verify_html","valid_elements","validStyles","valid_styles","invalidStyles","invalid_styles","validClasses","valid_classes","whitespaceElementsMap","selfClosingElementsMap","voidElementsMap","boolAttrMap","nonEmptyOrMoveCaretBeforeOnEnter","nonEmptyElementsMap","moveCaretBeforeOnEnterElementsMap","headings","textBlockElementsMap","blockElementsMap","textInlineElementsMap","transparentElementsMap","wrapBlockElementsMap","addValidElements","patternElement","setValidElements","addCustomElements","customElements","text_block_elements","block_elements","customElementRegExp","cloneName","parseCustomElementsRules","customRule","elmName","addValidChildren","validChildren","childRuleRegExp","prefixToOperation","parseValidChildrenRules","getElementRule","_val","padd_empty_block_inline_children","paddInEmptyBlock","custom_elements","valid_children","extended_valid_elements","thead","tfoot","legend","parentsRequired","invalid_elements","getValidStyles","getInvalidStyles","getValidClasses","getBoolAttrs","getTextInlineElements","getVoidElements","getSelfClosingElements","getNonEmptyElements","getMoveCaretBeforeOnEnterElements","getWhitespaceElements","getWrapBlockElements","getSpecialElements","attrPatterns","getCustomElements","isWrapper","normalizeHex","toHex","fromRgba","rgbaColour","hexColour","rgbRegex","rgbaRegex","fromStringValues","fromString","rgbaString","rgbMatch","rgbaMatch","rgba","rgbaToHexString","Styles","urlOrStrRegExp","styleRegExp","trimRightRegExp","encodingLookup","invisibleChar","encodingItems","isEncoded","urlConverter","url_converter","urlConverterScope","url_converter_scope","compress","noJoin","canCompress","keepSlashes","decodeSingleHexSequence","escSeq","decodeHexSequences","processUrl","url2","url3","str2","allow_script_urls","scriptUrl","allow_svg_data_urls","force_hex_color","compress2","serializeStyles","elemName","validStyleList","styleList","styleMap","keyLocation","layerX","layerY","webkitMovementX","webkitMovementY","keyIdentifier","mozPressure","needsNormalizing","initEvent","isNativeEvent","clone$3","keyArg","getTargetRanges","normalize$3","fallbackTarget","isImmediatePropagationStopped","hasIsDefaultPrevented","mouseEventRe","addEvent","removeEvent","isMouseEvent","eventDoc","mouseEvent","bindOnReady","eventUtils","domLoaded","readyHandler","EventUtils","expando","callbackList","defaultNativeHandler","executeHandlers","namesList","nativeHandler","fakeName","eventMap","newCallbackList","each$a","internalStyleName","numericalCssMap","legacySetAttribute","camelCaseToHyphens","findNodeIndex","lastNodeType","updateInternalStyleAttr","rawValue","applyStyle$1","$elm","cssName","normalizedName","convertStyleToString","DOMUtils","addedStyles","counter","styleSheetLoader","boundEvents","ownEvents","getAttrib","defaultVal","attrHooks","getAttribs","setAttrib","onSetAttrib","attrElm","getRoot","root_element","getPos$1","getStyle","getSize","elms","getParents","collect","resolvedRoot","selectorVal","_findSib","setAttribs","setHTML","newElm","keepChildren","$node","toggleClass","cls","oldElm","replacee","replaceChild","isNonEmptyElement","createRng","boundTarget","boundName","boundFunc","getContentEditable","stdMode","boxModel","deep","getViewPort","argWin","getNext","getPrev","outHtml","createFragment","frag","setStyle","update_styles","setStyles","stylesArg","removeAllAttribs","removeAttributeNode","parseStyle","cssText","serializeStyle","DOM","styleElm","loadCSS","addClass","removeClass","hasClass","isHidden","getOuterHTML","getOuter","setOuterHTML","insertAfter","referenceNode","rename","attrNode","findCommonAncestor","whitespaceElements","nonEmptyElements","bogusVal","includeZwsp","nodeIndex","replacementElm","getContentEditableParent","isEditable","dumpRng","setupAttrHooks","keepValues","keep_values","keepUrlHook","sugarElm","DOM$b","ScriptLoader","scriptLoadedCallbacks","queueLoadedCallbacks","loading","loadScripts","execCallbacks","processResults","failures","processQueue","nextQueuedItem","uniqueScripts","Cell","currentCode","getLanguageData","I18n","getData$1","setCode","newCode","getCode","lcNames","lcName","isDuplicated","firstIndex","getLangData","textStr","removeContext","isTokenised","isRtl","isRtl$1","hasCode","AddOnManager","_listeners","runListeners","matchedListeners","loadLanguagePack","languages","language","waitFor","isAdded","languageLoad","addOn","createUrl","dep","resource","addOnUrl","urlString","baseURL","ThemeManager","ModelManager","repeatable","revoke","functionToRepeat","value$2","subject","doRevoke","singleton","first$1","last$1","annotation","dataAnnotation","dataAnnotationId","dataAnnotationActive","dataAnnotationClasses","dataAnnotationAttributes","isRoot$1","identify","editor","annotationName","rng","getRng","newStart","findMarkers","isBogusElement","descendant","findAll","nodesAlready","setup$y","changeCallbacks","initData","withCallbacks","updateCallbacks","callbackMap","outputData","toggleActiveAttr","onNodeChange","annotations","getNames","fireNoAnnotation","fireCallbacks","addListener","unique","generate$1","clone$2","shallow$1","deep$1","shallowAs","TextWalker","TextSeeker","isBlockBoundary","backwards","getOrNull","forwards","round$2","toStart","isValidOverflow","rect1","rect2","isAbove$1","halfHeight","isBelow$1","distanceToRectEdgeFromXY","getSelectedNode","getNode$1","safeOffset","clamp$2","extendingChars","isExtendingChar","isElement$4","isCaretCandidate$2","isBlock$2","isFloated","isValidElementCaretCandidate","_len0","_key0","isNotPre","isText$7","isBr$3","nodeIndex$1","resolveIndex$1","getNodeUnsafe","createRange$1","isWhiteSpace$1","isRange","isHiddenWhiteSpaceRange","isZeroRect","getBoundingClientRect$1","clientRects","brNode","nbsp$1","getBrClientRect","newRng","cloneRange","getBoundingClientRectWebKitText","collapseAndInflateWidth","newClientRect","getCaretPositionClientRects","caretPosition","addUniqueAndValidRect","addCharacterOffset","beforeNode","CaretPosition","toRange","fromRangeStart","fromRangeEnd","isAbove","isBelow","isTextPosition","isElementPosition","trimEmptyTextNode$1","rangeInsertNode","insertFragment","insertNode","isText$6","isBogus","normalizedParent","getChildNodes","equal","createPathItem","numTextFragments","normalizedNodeIndex","create$b","outputOffset","normalizedTextOffset","parentsUntil$1","resolve$1","resolvePathItem","nodeOffset","findTextPosition","dataLen","isContentEditableFalse$9","getPoint","getNormalizedTextOffset$1","trimmedOffset","moveEndPoint$1","normalizeTableCellSelection","getOffsetBookmark","findAdjacentContentEditableFalseElm","forward","isForward","fakeCaret","isFakeCaret","createBookmarkSpan","filled","getPersistentBookmark","rng2","endBookmarkNode","startBookmarkNode","keep","getBookmark$2","getCaretBookmark","getRangeBookmark","getUndoBookmark","value$1","applyHelper","constHelper","outputHelper","_onError","onValue","Result","_onValue","Adt","cases","adt","acase","keys$1","_len1","_key1","argLength","_len10","foldArgs","_key10","branches","branchKeys","reqKey","isInlinePattern","isBlockPattern","normalizePattern","formatOrCmd","onFormat","onCommand","cmd","command","commandValue","getBlockPatterns","patterns","getInlinePatterns","fromRawPatterns","partition$1","deviceDetection$1","DOM$a","stringOrObjectProcessor","bodyOptionProcessor","bodyObj","getHash","getIframeAttrs","getDocType","getDocumentBaseUrl","getBodyId","getBodyClass","getContentSecurityPolicy","shouldPutBrInPre$1","getForcedRootBlock","getForcedRootBlockAttrs","getNewlineBehavior","getBrNewLineSelector","getNoNewLineSelector","shouldKeepStyles","shouldEndContainerOnEmptyBlock","isAutomaticUploadsEnabled","shouldReuseFileName","shouldReplaceBlobUris","getIconPackName","getIconsUrl","getImageUploadUrl","getImageUploadBasePath","getImagesUploadCredentials","getImagesUploadHandler","shouldUseContentCssCors","getReferrerPolicy","getLanguageCode","getLanguageUrl","shouldIndentUseMargin","getIndentation","getContentCss","getContentStyle","getFontCss","getDirectionality","getInlineBoundarySelector","getObjectResizing","getResizeImgProportional","getPlaceholder","getEventRoot","getServiceMessage","getTheme","getThemeUrl","getModel","getModelUrl","isInlineBoundariesEnabled","getFormats","getPreviewStyles","canFormatEmptyLines","getFormatNoneditableSelector","getCustomUiSelector","isInline$1","hasHiddenInput","shouldPatchSubmit","shouldAddFormSubmitTrigger","shouldAddUnloadTrigger","getCustomUndoRedoLevels","shouldDisableNodeChange","isReadOnly$1","hasEditableRoot$1","hasContentCssCors","getPlugins","getExternalPlugins$1","shouldBlockUnsupportedDrop","isVisualAidsEnabled","getVisualAidsTableClass","getVisualAidsAnchorClass","getIframeAriaText","getSetupCallback","getInitInstanceCallback","getUrlConverterCallback","getAutoFocus","shouldBrowserSpellcheck","getProtect","shouldPasteBlockDrop","shouldPasteDataImages","getPastePreProcess","getPastePostProcess","getNewDocumentContent","getPasteWebkitStyles","shouldPasteRemoveWebKitStyles","shouldPasteMergeFormats","isSmartPasteEnabled","isPasteAsTextEnabled","getPasteTabSpaces","shouldAllowHtmlDataUrls","getTextPatterns","getTextPatternsLookup","getNonEditableClass","getEditableClass","getNonEditableRegExps","shouldPreserveCData","shouldHighlightOnFocus","shouldSanitizeXss","shouldUseDocumentWrite","getAllowedImageFileTypes","hasTableTabNavigation","getDetailsInitialState","getDetailsSerializedState","shouldForceHexColor","shouldSandboxIframes","shouldConvertBlobstoBase64","isElement$3","isText$5","removeNode$1","trimCount","trimmedText","deleteZwspChars","deleteData","removeUnchanged","remove$3","removeElementAndReposition","newPosition","indexOf$1","removeTextCaretContainer","removeTextAndReposition","removeAndReposition","removeElementCaretContainer","caretContainerNode","isContentEditableFalse$8","isMedia$1","isTableCell$1","getAbsoluteClientRect","rootRect","FakeCaret","lastVisualCaret","cursorInterval","caretBlock","fakeCaretTargetNodes","trimInlineCaretContainers","caretState","startBlink","insertInline$1","textNode","splitText","isInlineFakeCaretTarget","insertBlock","blockName","blockNode","getCss","reposition","isFakeCaretTableBrowser","isFakeCaretTarget","isContentEditableTrue$1","isContentEditableFalse$7","isMedia","isBlockLike","isCaretContainer","isCaretContainerBlock","isElement$2","isText$4","isCaretCandidate$1","isForwards","skipCaretContainers","findNode","predicateFn","isCefOrCaretContainer","getParentBlock$3","isInSameBlock","caretPosition1","caretPosition2","getChildNodeAtRelativeOffset","relativeOffset","beforeAfter","isNodesInSameBlock","node1","node2","lean","before$2","after$2","normalizeRange","leanLeft","leanRight","getRelativeCefElm","getNormalizedRangeEndPoint","normalizedRange","getElementFromPosition","getVisualCaretPosition","walkFn","isMoveInsideSameBlock","inSameBlock","HDirection","isContentEditableFalse$6","isText$3","isElement$1","isBr$2","isCaretCandidate","isAtomic","isAtomicContentEditableFalse","isEditableCaretCandidate","nodeAtIndex","getCaretCandidatePosition","findCaretPosition$1","innerNode","moveForwardFromBr","Forwards","rootContentEditableFalseElm","getParents$3","CaretWalker","Backwards","isBeforeOrStart","isAfterOrEnd","isBeforeAfterSameElement","shouldSkipPosition","fromPosition","navigate","navigateIgnore","ignoreFilter","positionIn","walkToPositionIn","nextPosition","prevPosition","firstPositionIn","lastPositionIn","CARET_ID","isCaretNode","getParentCaretContainer","isIndexBookmark","bookmark","isPathBookmark","isForwardBookmark","addBogus","tryFindRangePosition","padEmptyCaretContainer","isEmpty$1","insertZwsp","setEndPoint","isValidTextNode","restoreEndPoint","markerParent","otherMarker","resolvePaths","isStringPathBookmark","resolveCaretPositionBookmark","isIdBookmark","resolveId","spos","epos","resolveIndex","selectNode","isRangeBookmark","getBookmark$1","isBookmarkNode$1","isNbsp","expected","isWhiteSpace","isContent","getRanges$1","ranges","getCellsFromRanges","getSelectedNodes","getCellsFromElementOrRanges","selectedCells","getCellsFromEditor","getSel","getClosestTable","cell","getFirstChildren","getLastChildren","hasAllContentsSelected","getStartNode","getEndNode","endNode","moveEndPoint","hasAnyRanges","sel","runOnRanges","executor","fakeSelectionNodes","fakeNodeRng","preserve","fillBookmark","isNode","isElementNode$1","preserveSelection","shouldMoveStart","selectedNodeBeforeAction","isSelectedBeforeNodeNoneditable","moveStartToNearestText","isElementDirectlySelected","selectedAttr","isWhiteSpaceNode$1","getNonWhiteSpaceSibling","inc","nextName","isTextBlock$1","allowSpaces","isWrappableNoneditable","isWrapNoneditableTarget","baseDataSelector","formatNoneditableSelector","replaceVars","isEq$5","str1","normalizeStyleValue","strValue","getTextDecoration","decoration","getParents$2","isFormatPredicate","formatName","areSimilarFormats","otherFormatName","validKeys","filterObj","validKey","fmt1","filteredFmt1","fmt2","filteredFmt2","equal$1","isBlockFormat","isSelectorFormat","isInlineFormat","shouldExpandToSelector","expand","isCaretContainerEmpty","getEmptyCaretContainers","isEmptyCaretFormatElement","isBookmarkNode","getParents$1","isWhiteSpaceNode","isTextBlock","isBogusBr","findParentContentEditable","walkText","findSpace","findContent","findWordEndPoint","includeTrailingSpaces","lastTextNode","textSeeker","textOffset","findSelectorEndPoint","formatList","curFormat","findBlockEndPoint","scopeRoot","isAtBlockBoundary$1","findParentContainer","block_expand","isSelfOrParentBookmark","expandRng","includeTrailingSpace","walk$3","exclude","firstNode","lastNode","collectSiblings","siblings","findEndPoint","walkBoundary","validBlocks","wrapName","isZeroWidth","isAnnotation","applyAnnotation","masterUId","decorate","directAnnotation","otherData","attributeNames","removeDirectAnnotation","customAttrNames","customClasses","remove$4","makeAnnotation","eDoc","master","newWrappers","finishWrapper","processElements","processElement","processNodes","annotateWithBookmark","initialRng","hasFakeSelection","masterUid","applyWordGrab","selectionRng","Annotator","create$c","setup$x","dataAnnotation$1","identifyParserNode","newClassList","addTempAttr","addAttributeFilter","persistent","changes","removeAnnotations","annotationChanged","removeAll","getAll","BookmarkManager","isXYWithinRange","containsXY","fireError","errorType","fireFormatApply","fireFormatRemove","fireSetContent","fireGetContent","firePastePlainTextToggle","BACKSPACE","DELETE","DOWN","ENTER","ESC","LEFT","RIGHT","SPACEBAR","TAB","UP","PAGE_UP","PAGE_DOWN","END","HOME","modifierPressed","elementSelectionAttr","round$1","resizeHandles","nw","ControlSelection","editableDoc","rootDocument","selectedElm","selectedElmGhost","resizeHelper","selectedHandle","resizeBackdrop","startW","startH","resizeStarted","startScrollWidth","startScrollHeight","isImage","contextMenuSelectImage","isEventOnImageOutsideRange","isTouchEvent","touch","getResizeTargets","isResizable","setSizeProp","setGhostElmSize","ghostElm","resizeGhostElement","proportional","resizeHelperX","resizeHelperY","selectedElmX","selectedElmY","fireObjectResizeStart","endGhostResize","wasResizeStarted","showResizeRect","fireObjectResized","nodeChanged","targetElm","unbindResizeHandleEvents","targetWidth","hideResizeRect","startDrag","handleElm","throttledShowResizeRect","removeSelected","isChildOrEqual","updateResizeRect","composing","controlElm","selectedValue","disableGeckoResize","startElm","getEnd","relativeToNative","startSitu","finishSitu","setFinish","situ","exactToNative","adt$3","fromRange","diagnose","getRanges","doDiagnose","rev","SimRange","create$a","caretPositionFromPoint","offsetNode","caretRangeFromPoint","availableSearch","adt$2","Situ","onBefore","onOn","onAfter","adt$1","SimSelection","simRange","_finishSitu","_soffset","_finish","_foffset","getStart$1","beforeSpecial","name$1","preprocessRelative","preprocessExact","fromElements","toNative","getDomRange","filtered","preprocess","getAtPoint","fromPoint$1","isEq$4","rng1","hasParent$1","findParent","hasParentWithName","isCeFalseCaretContainer","hasBrBeforeAfter","findTextNodeRelative","isAfterNode","lastInlineElement","parentBlockContainer","normalizeEndPoint","directionLeft","hasContentEditableFalseParent","isPrevNode","normalize$2","normRng","newContainer","rangeLike","newRange","normalizedRng","compareRanges","api","getOffset","aggregate","cumulativeInclusions","getDocument","walkUp","navigation","owner","Navigation","frameElement","pathTo","excludeFromDescend","markerInfo","cleanupFun","pageYOffset","pageXOffset","absolute","createMarker$1","withMarker","preserveWith","applyWithMarker","withScrollEvents","fireScrollIntoViewEvent","fireAfterScrollIntoViewEvent","withElement","elementMarker","startElement","endElement","scrollToMarker","viewHeight","intoWindowIfNeeded","viewportBottom","markerTop","markerBottom","largerThanViewport","intoWindow","intoFrame","frameViewHeight","viewportBounds","rangeIntoWindow","elementIntoWindow","rangeIntoFrame","elementIntoFrame","scrollRangeIntoView","focus$1","preventScroll","hasFocus$1","active$1","clamp$1","normalizeRng","isOrContains","isRngInRoot","nativeRangeToSelectionRange","readRange","bookmarkToNativeRng","store","newBookmark","shouldStore","FocusManager","isEditorUIElement","Delay","setEditorTimeout","wrappedSetTimeout","setEditorInterval","wrappedSetInterval","register$6","throttledStore","registerPageMouseUp","mouseUpPage","registerEditorEvents","registerMouseUp","selectionChange","isManualNodeChange","documentFocusInHandler","DOM$9","isEditorContentAreaElement","isUIElement","customSelector","getElement","registerEvents$1","editorManager","toggleContentAreaOnFocus","focusedEditor","setActive","blurredEditor","activeEditor","unregisterDocumentEvents","getFocusInElement","getCollapsedNode","normalizeSelection","caretPos","focusBody","hasElementFocus","rawBody","hasInlineFocus","iframeElement","hasIframeFocus","hasEditorOrUiFocus","hasUiFocus","activateEditor","skipFocus","quirks","refreshContentEditable","bookmarkRng","contentEditableHost","getContentEditableHost","focusEditor","isEditableRange","getEndpointElement","real","getEnd$1","skipEmptyTextNodes","processRanges","elementsWithCursorPosition","isCursorPosition","hasCursorPosition","isContentEditableFalse$5","descendantRtl","autocompleteSelector","create$9","findIn","setCursorLocation","typeLookup","walk$2","isEmptyTextNode","AstNode","selfAttrs","cloneAttrs","selfAttr","refNode","whitespace","unescapedTextParents","containsZwsp","getTemporaryNodeSelector","tempAttrs","createZwspCommentWalker","FILTER_SKIP","createUnescapedZwspTextWalker","hasZwspComment","hasUnescapedZwspText","hasTemporaryNode","trimTemporaryNodes","getTemporaryNodes","emptyAllNodeValuesInWalker","emptyZwspComments","emptyUnescapedZwspTexts","trim$1","conditionalTrims","trimmed","cleanupBogusElements","bogusElements","cleanupInputNames","inputs","getPlainTextContent","offscreenDiv","getContentContainer","getContentFromBody","getTempAttrs","trimEmptyContents","emptyRegExp","makeMap$1","Writer","indentBefore","indent_before","indentAfter","indent_after","entity_encoding","htmlOutput","element_format","cdata","HtmlSerializer","writer","handlers","sortedAttrs","elementRule","nonInheritableStyles","shorthandStyleProps","getStyleProps","hasInheritableStyles","isNonInheritableStyle","hasStyleConflict","nodeStyleProps","parentNodeStyleProps","valueMismatch","parentValue","nodeStyleProp","propExists","longhandProps","getLonghandStyleProps","isChar","isBeforeSpace","isAfterSpace","isEmptyText","matchesElementPosition","isImageBlock","isCefNode","isBogusAll$1","isBeforeImageBlock","isAfterImageBlock","isBeforeMedia","isAfterMedia","isBeforeTable","isAfterTable","isBeforeContentEditableFalse","isAfterContentEditableFalse","parentsUntil","parentsAndSelf","navigateIgnoreEmptyTextNodes","getClosestBlock$1","isBlock$1","isAtBeforeAfterBlockBoundary","newPos","fromBlock","isAtBlockBoundary","isAtStartOfBlock","isAtEndOfBlock","isBeforeBlock","isAfterBlock","isBr$1","findBr","parentBlocks","isBeforeBr$1","isAfterBr","getElementFromPrevPosition","findPreviousBr","findNextBr","isInMiddleOfText","getClosestBlock","hasSpaceBefore","hasSpaceAfter","isInPre","isPreValue","isAtLineBoundary","isAtBeginningOfBody","isAtEndOfBody","isSiblingCefBlock","needsToHaveNbsp","needsToBeNbspLeft","isAfterCefBlock","prevPos","isPrevCefBlock","needsToBeNbspRight","isBeforeCefBlock","nextPos","isNextCefBlock","needsToBeNbsp","isNbspAt","isWhiteSpaceAt","normalizeNbspAtStart","makeNbsp","firstPos","normalizeNbspInMiddleOfTextNode","newText","normalizeNbspMiddle","normalizeNbspAtEnd","lastPos","normalizeNbsps","hasNbsp","normalize$1","replaceData","normalizeWhitespaceAfter","whitespaceCount","normalizeWhitespaceBefore","mergeTextNodes","normalizeWhitespace","mergeToPrev","whitespaceOffset","removeNode","insertData","needsReposition","getPreviousSiblingCaretPosition","getNextSiblingCaretPosition","findCaretPositionBackwards","findCaretPositionBackwardsFromElm","findCaretPositionForward","findCaretPositionForwardsFromElm","findCaretPosOutsideElmAfterDelete","findCaretPosition","setSelection$1","deleteNormalized","afterDeletePosOpt","prevTextOpt","nextTextOpt","lift3","deleteElement$2","moveCaret","preserveEmptyCaret","afterDeletePos","normalizedAfterDeletePos","isInlineElement","paddEmptyBlock","paddPos","strongRtl","isInlineTarget","hasStrongRtl","findRootInline","findInlineParents","normalizeForwards","normalizeBackwards","execCommandIgnoreInputEvents","inputBlocker","execNativeDeleteCommand","isTextBlockOrListItem","getParentBlock$2","isBeforeRoot","paddEmptyBody","moveSelection","no_selection","willDeleteLastPositionInElement","fromPos","normalizedFirstPos","normalizedLastPos","normalizedFromPos","freefallRtl","deleteRangeContents","deleteContents","lastBlock","additionalCleanupNodes","sibling$1","getTableCells","getTable$1","adjustQuirksInDetails","startTable","endTable","isStartTableParentOfEndTable","isEndTableParentOfStartTable","isSameTable","isMultiTable","selectionInTableWithNestedTable","tableCellRng","deleteAction","singleCellTable","fullTable","partialTable","multiTable","getClosestCell$1","isExpandedCellRng","cellRng","getTableFromCellRng","startParentTable","endParentTable","getTableSelectionFromCellRng","tableSelection","getTableSelections","selectionDetails","sameTableSelection","startCell","endCell","startTableSelection","getCellRangeFromStartTable","endTableSelection","getCellRangeFromEndTable","getCellIndex","getSelectedCells","isSingleCellTableContentSelected","optCellRng","isSingleCellTable","unselectCells","otherContentRng","getActionFromRange","isRootFromElement","getCellRng","getTableDetailsFromRange","isStartInTable","isEndInTable","handleMultiTable","startTableSelectedCells","endTableSelectedCells","handleSingleTable","cleanCells","deleteContentInsideCell","isFirstCellInSelection","insideTableRng","deleteCellContents","collapseAndRestoreCellSelection","selectedNode","emptySingleTableCells","outsideDetails","editorRng","cellsToClean","outsideBlock","getOutsideBlock","handleEmptyBlock","startInTable","emptyBlock","endPointCell","emptyMultiTableCells","startTableCells","endTableCells","betweenRng","startTableCellsToClean","endTableCellsToClean","deleteTableElement","deleteTableRange","getParentCaption","deleteCellRange","deleteCaptionRange","emptyElement","getParentCell","deleteCaretInsideCaption","fromCaption","isDeleteOfLastCharPos","emptyCaretCaption","validateCaretCaption","toCaption","deleteCaretCells","fromCell","deleteBetweenCells","toCell","isNearTable","deleteCaret$3","isBeforeOrAfterTable","deleteCaretCaption","backspaceDelete$a","deleteRange$3","getContentEditableRoot$1","internalAttributesPrefixes","each$9","ElementUtils","internalAttributes","isAttributeInternal","attribs","compareObjects","isHeading","matchNode$1","nodeFilters","attributeFilters","runFilters","matchRecord","filteringAttributes","filter$2","findMatchingNodes","traverse","childNode","paddEmptyNode","pad_empty_with_br","astNode","hasOnlyChild","isPadded","findClosestEditingHost","editableNode","removeOrUnwrapInvalidNode","originalNodeParent","cleanInvalidNodes","onCreate","textBlockElements","nonSplittableElements","isSplittableElement","newParent","isInvalid","hasClosest","isSummary","normalizeBlockSelectionRange","newEndPos","isPaddedEmptyBlock","hasOnlyOneChild$1","isPaddingNode","isListFragment","isEmptyFragmentElement","isListItemPadded","isPadding","trimListItems","getParentLi","findLastOf","newCaretPos","insertBefore$2","findFirstIn","insertAtCaret$1","domFragment","toDomFragment","cleanupDomFragment","liTarget","liElms","isAt","caretWalker","newPosNode","insertAfter$2","insertMiddle","getSplit","beforeRng","afterRng","cloneContents","mergeableWrappedElements","isTableCell","trimBrsFromTableCell","trimBlockTrailingBr","lastChildPrevSibling","moveSelectionToMarker","nextRng","parentEditableElm","isCell","isPartOfFragment","findNextCaretRng","deleteSelectedContent","isTableCellContentSelected","insertHtmlAtCaret","bookmarkHtml","preserve_zwsp","caretElement","canHaveChildren","parserArgs","isParentBlockLi","shouldPasteContentOnly","isPastingSingleElement","isWrappedElement","isPastingInTheSameBlockTag","isPastingInContentEditable","markFragmentElements","_selectionOverrides","showBlockCaretContainer","notHeadingsInSummary","markerNode","findMarkerNode","editingHost","toExtract","getNodeFilters","getAttributeFilters","validInsertion","no_events","reduceInlineTextElements","textInlineElements","elementUtils","updateCaret","caretParent","isTreeNode","setEditorHtml","noSelection","setContentInternal","setContentTree","trimmedHtml","setContentString","padd","forcedRootBlockName","ensureIsRoot","closest$1","transformed","isEq$3","matchesUnInheritedFormatSelector","inherit","matchParents","similar","matchedNode","matchNode","matchName","matchItems","itemName","matchAttributes","onmatch","expectedValue","isEmptyValue","match$2","rawElm","matchAllOnNode","formatNames","matchSimilar","isVariableFormatName","isVariableValue","fieldValues","ZWSP","findFirstTextNode","createCaretContainer","removeCaretContainerNode","trimZwspFromCaretContainer","removeCaretContainer","appendNode","insertFormatNodesIntoCaretContainer","formatNodes","innerMostFormatNode","formatNode","removeCaretFormat","hasContentAfter","expandedRng","parentsAfter","newCaretContainer","insertCaretContainerNode","cleanedFormatNode","cleanFormatNode","validFormats","matchedFormats","fmtName","clonedFormatNode","caretTextNode","setup$v","disableCaretContainer","createCaretFormat","innerMost","replaceWithCaretFormat","isFormatElement","inlineElements","postProcessHooks","isPre","addPostProcessHook","blocks","getSelectedBlocks","preBlocks","hasPreSibling","joinPre","pre1","pre2","sPre2","listItemStyles","findExpandedListItemFormat","fmt","hasListStyles","getExpandedListItemFormat","isRngStartAtStartOfElement","isRngEndAtEndOfElement","isEditableListItem","getFullySelectedListItems","middle","getFullySelectedBlocks","getPartiallySelectedListItems","each$8","isElementNode","findElementSibling","mergeSiblingsNodes","isPrevEditable","isNextEditable","tmpSibling","mergeSiblings","merge_siblings","processChildElements","applyStyle","unwrapEmptySpan","removeResult","MCE_ATTR_RE","each$7","isEq$2","isChildOfInlineParent","lastIdx","normalizeTableSelection","isTableCellOrRow","wrap$1","wrapWithSiblings","rootBlockElm","forcedRootBlock","list_block","isMixedFormat","processFormatAttrOrStyle","removeEmptyStyleAttributeIfNeeded","removeStyles","compareNode","stylesModified","styleValue","normalizedStyleValue","remove_similar","removeNodeFormatInternal","ceFalseOverride","isColorFormatAndAnchor","preserveAttributes","preserve_attributes","attrsToPreserve","valueOut","removeNodeFormatFromClone","newName","removeFormatInternal","splitToFormatRoot","formatRoot","findFormatRoot","wrapAndSplit","lastClone","firstClone","formatRootParent","removeFormatOnNode","removeNodeFormat","currentNodeMatches","textDecoration","isRemoveBookmarkNode","removeRngStyle","removeListStyleFormats","liFmt","removeFormat$1","each$6","mergeWithChildren","clearChildStyles","clear_child_styles","each$5","applyStyles","styleVal","applyFormatAction","setElementFormat","onformat","applyNodeStyle","createWrapElement","wrapElm","applyRngStyle","nodeSpecific","isMatchingWrappingBlock","isWrappingBlockFormat","canRenameBlock","isEditableDescendant","isValidBlockFormatForNode","isNonWrappingBlockFormat","currentWrapElm","lastContentEditable","isWrappableNoneditableElm","contentEditableValue","canFormatBR","validBRParentElements","hasCaretNodeSibling","canWrapNode","isValidWrapNode","isCaret","isCorrectFormatForNode","isEmptyTextNode$1","getChildCount","mergeStyles","mergeWithParents","merge_with_parents","mergeBackgroundColorAndFontSize","hasFontSize","mergeTextDecorationsAndColor","processTextDecorationsAndColor","parentTextDecoration","mergeSubSup","inverseTagDescendants","applyCaretFormat","wordcharRegex","postProcess$1","applyFormat$1","hasVars","fallbackElement","matchingNode","matchingFormat","updateAndFireChangeCallbacks","registeredCallbacks","runIfChanged","withSimilar","withoutSimilar","withVars","formatChangedInternal","registeredFormatListeners","formatChangeItems","getCurrent","toAppendTo","removeListeners","explode$1","create$8","addFilter","getFilters","removeFilter","newCallbacks","addFontToSpansFilter","domParser","fontSizes","addNodeFilter","removeAttrs","addFilters","convert_fonts_to_spans","font_size_legacy_values","addStrikeFilter","convertToSTag","htmlParser","blockElements","prevName","lastParent","parseDataUri","base64Encoded","extractedData","extractBase64Data","buildBlob","uriToBlob","uriType","blobUriToBlob","blobToDataUri","reader","count$1","processDataUri","dataUri","base64Only","generateBlobInfo","btoa","createBlobInfo$1","blobInfo","dataUriToBlobInfo","getByData","registerBase64ImageFilter","blob_cache","processImage","inputSrc","isInternalImageSource","isBogusImage","isMimeType","mime","register$4","remove_trailing_brs","addNoOpener","newRel","appendRel","allow_unsafe_link_target","allow_html_in_named_anchor","fix_list_elements","classValue","validClassesMap","convert_unsafe_embeds","createSafeEmbed","sandboxIframes","sandbox_iframes","create$7","thisValue","Func","arrayForEach","unapply","arrayPop","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","addToSet","transformCaseFunc","_transformCaseFunc","lcElement","newObject","lookupGetter","html$1","svg$1","svgDisallowed","mathMl$1","mathMlDisallowed","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","EXPRESSIONS","getGlobal","purify","createDOMPurify","originalDocument","ElementPrototype","getNextSibling","getParentNode","trustedTypesPolicy","emptyHTML","IS_ALLOWED_URI$1","DEFAULT_ALLOWED_TAGS","DEFAULT_ALLOWED_ATTR","SET_CONFIG","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","IS_EMPTY_INPUT","DEFAULT_ALLOWED_NAMESPACES","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","TRUSTED_TYPES_POLICY","purifyHostElement","ATTR_NAME","policyName","_createTrustedTypesPolicy","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","_removeAttribute","_initDocument","dirty","leadingWhitespace","dirtyPayload","_createIterator","_isNode","_executeHook","entryPoint","_sanitizeElements","_basicCustomElementTest","parentTagName","_checkValidNamespace","_isValidAttribute","lcTag","_sanitizeAttributes","hookEvent","initValue","_sanitizeShadowDOM","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","shadowrootmode","serializedHTML","hookFunction","each$4","queryParts","DEFAULT_PORTS","ftp","http","https","mailto","safeSvgDataUrlElements","isInvalidUri","decodedUri","encodedUri","decodeUri","allow_html_data_urls","blockSvgDataUris","allowSvgDataUrls","URI","baseUri","base_uri","isProtocolRelative","toAbsPath","urlMatch","userInfo","pathMatch","getURI","relativeUri","toRelPath","noHost","absoluteUri","isSameOrigin","defaultPort","breakPoint","normalizedBase","normalizedPath","baseParts","pathParts","outPath","noProtoHost","uriComponents","filteredUrlAttrs","internalElementAttr","processNode","allow_conditional_comments","lcTagName","isInternalElement","bogus","hasNone","shouldKeepAttribute","isRequiredAttributeOfInternalElement","ele","isBooleanAttribute","filterAttributes","setupPurify","namespaceTracker","purify$1","processAttr","sanitizeNamespaceElement","xlinkAttrs","getSanitizer","createNamespaceTracker","scopes","peek","currentScope","sanitizeHtmlElement","mimeType","getPurifyConfig","_mimeType","extend$1","transferChildren","nativeParent","nsSanitizer","nativeChild","whitespaceCleaner","textRootBlockElements","allWhiteSpaceRegExp","startWhiteSpaceRegExp","endWhiteSpaceRegExp","hasWhitespaceParent","isAtEdgeOfBlock","neighbour","isLineBreakNode","isNodeEmpty","isTextRootBlockEmpty","isPaddedWithNbsp","nodeFilterRegistry","attributeFilterRegistry","defaultedSettings","root_name","removeNodeFilter","removeAttributeFilter","isWrappableNode","rootName","isSpecialRoot","wrappedHtml","parseAndSanitizeWithContext","whitespacePre","whitespacePost","invalidFinder","findInvalidChildren","matchFinder","walkTree","preprocessors","postprocessors","traverseOrder","postprocess","topLevelChildren","otherChildren","rootBlockName","getRootBlockName","addRootBlocks","rootBlockNode","rootBlock","forced_root_block_attrs","register$5","inline_styles","withSerializedContent","fireEvent","parserSettings","serializedContent","serializeContent","eventArgs","preProcessGetContent","fireBeforeGetContent","postProcessGetContent","processedEventArgs","preProcessSetContent","fireBeforeSetContent","postProcessSetContent","tableModel","tableRow","cellPosition","getSpan","cellExists","getWidth","row","findElementPos","extractRows","newRows","tableElm","fillout","rowspan","colspan","skipCellsX","toDom","createDomTable","tableElement","tableBody","modelRowsToDomRows","subsection","subTable","getFullySelectedListWrappers","_li","findParentListContainer","listCont","listElm","listStyles","_style","getWrapElements","commonAnchorContainer","wrapElements","listWrappers","allWrappers","directListWrappers","emptyFragment","getFragmentFromRange","innerElm","getTableFragment","selectedTableCells","getParentTable","firstCell","lastCell","fullTableModel","sectionedTableModel","read$3","getSelectionFragment","isCollapsibleWhitespace","getInnerText","bin","extractSelectedContent","parentBlockOpt","contextNodeName","getContextNodeName","rangeContentClone","nonRenderedText","parentBlockText","getTextContent","getSerializedContent","tmpElm","contextual","getSelectedContentInternal","defaultedArgs","setupArgs$3","getInner","updatedArgs","getOuterHtml","insertAt","fragments","applyDiff","removeAt","vDown","vUp","buildScript","getMiddleSnake","diag","buildSnake","snake","lazyTempDocument","createFromEditor","hasIframes","beforeBookmark","createFragmentedLevel","read$2","trimZwsp","applyToEditor","getLevelContent","getCleanLevelContent","isEq$1","level1","level2","hasEqualContent","hasEqualCleanedContent","isUnlocked","locks","setTyping","typing","endTyping","makePlainAdaptor","bindEvents","beforeChange","beforeChange$1","addUndoLevel$1","currentLevel","newLevel","lastLevel","customUndoRedoLevels","setDirty","undo$1","redo","redo$1","clear$1","reset$1","hasUndo","hasUndo$1","hasRedo","hasRedo$1","transact$1","ignore$1","callback1","callback2","extra$1","matchAll","matchedFormatNames","checkedMap","canApply","formatChanged","getContentInternal","addVisual","addVisualInternal","matchedElm","hasVisual","autocompleter","addDecoration","removeDecoration","remove$2","isRtc","setup$t","editorCast","rtcPlugin","getRtcSetup","rtcInstance","makeNoopAdaptor","nul","rtcEditor","defaultVars","_undoManager","_locks","_node","_similar","_rfl","_details","_format","getRawModel","makeRtcAdaptor","rtc","isRemote","getRtcInstanceWithFallback","getRtcInstanceWithError","getContent$1","getSelectedContent","mergeAndNormalizeText","outerNode","merge$1","outerElm","oldLength","innerTextNode","walkPastBookmark","normalizeTextIfRequired","setContent$1","setupArgs$2","cleanedContent","cleanContent","contextBlock","contextArgs","rngSetContent","prevText","nextText","createContextualFragment","deleteFromCallbackMap","SelectorChanged","selectorChangedData","currentSelectors","findMatchingNode","selectorChangedWithUnbind","matchedSelectors","isAttachedToDom","EditorSelection","selectedRange","explicitRange","getRng$1","tryCompareBoundaryPoints","how","sourceRange","destinationRange","compareBoundaryPoints","START_TO_START","END_TO_END","isValidRange","anchorRange","focusRange","bookmarkManager","select$1","compareEndPoints","fakeSelectedElements","setNode","getSelectedBlocks$1","endElm","selectedBlocks","selectorChanged","getScrollContainer","scrollElementIntoView","placeCaretAt","controlSelection","process$1","shouldFireEvent","preProcess$1","oldDoc","clonedNode","impl","firePreProcess","toHtml","serializeNode","postProcess","outArgs","firePostProcess","DomSerializerImpl","register$3","preserve_cdata","getHtmlFromNode","parseHtml","isBr","brNode1","brNode2","trimTrailingBr","addRules","setRules","DomSerializer","domSerializer","setupArgs$1","getContent$2","setupArgs","setContent$2","removedOptions","deprecatedOptions","removedPlugins","deprecatedPlugins","replacedWith","getMatchingOptions","searchingFor","settingNames","getRemovedOptions","getDeprecatedOptions","getMatchingPlugins","pluginNames","getRemovedPlugins","getDeprecatedPlugins","getPluginDescription","logWarnings","rawOptions","normalizedOptions","logRemovedWarnings","hasRemovedPlugins","hasRemovedOptions","isLegacyMobileTheme","listJoiner","themesMessage","pluginsMessage","optionsMessage","logDeprecatedWarnings","hasDeprecatedPlugins","hasDeprecatedOptions","DOM$8","safeDestroy","remove$1","is_removing","unbindAllNativeEvents","fireRemove","orgDisplay","restoreOriginalStyles","fireDetach","automatic","_beforeUnload","_mceOldSubmit","submit","formEventDelegate","restoreForm","contentAreaContainer","editorContainer","bodyElement","clearDomReferences","IconManager","CreateIconManager","iconPack","getComputedSizeProp","getClientWidth","getClientHeight","getMarginTop","getMarginLeft","isXYInContentArea","bodyElm","transposedPoint","transpose","isInsideElementContentArea","isEditorAttachedToDom","rawContainer","getContentAreaContainer","NotificationManager","notifications","getImplementation","getNotificationManagerImpl","NotificationManagerImpl","unimplemented","getArgs","getTopNotification","notification","closeNotification","otherNotification","progressBar","getEl","addNotification","getNotifications","serviceMessage","registerEvents","WindowManager","dialogs","getWindowManagerImpl","WindowManagerImpl","openUrl","confirm","funcBind","_len11","_key11","addDialog","dialog","fireOpenEvent","closeDialog","fireCloseEvent","otherDialog","storeSelectionAndOpenDialog","openDialog","windowManagerImpl","displayNotification","displayError","_skinLoaded","logError","createLoadError","initError","_len12","_key12","toContentSkinResourceName","transformToUrls","cssLinks","skinUrl","contentCssFile","isBundledCssSkinName","isContentCssSkinName","documentBaseURI","toAbsolute","appendContentCssFromSettings","contentCSS","getContentCssUrls","getFontCssUrls","ImageScanner","uploadStatus","cachedPromises","getAllImages","isUploaded","imageInfo","newPromise","imageToBlobInfo","invalidDataUri","getByUri","UploadStatus","blobUriStatuses","createStatus","resultUri","hasBlobUri","getResultUri","isPending","markPending","markUploaded","removeFailed","Uploader","pendingPromises","defaultHandler","withCredentials","upload","onprogress","json","pathJoin","path1","path2","basePath","formData","FormData","uploadHandler","handlerSuccess","handlerFailure","uploadBlobs","blobInfos","openNotification","pendingUploadBlobInfo","uploadBlobInfo","createUploader","addPaddingToEmpty","isEmptyForPadding","EditorUpload","BlobCache","toBlobInfo","library","findFirst","cachedBlobInfo","removeByUri","uploader","imageScanner","urlFilters","aliveGuard","replaceString","replaceImageUrl","targetUrl","replacementUrl","replacementString","replaceUrlInUndoStack","scanForImages","imageInfos","imagesToRemove","shouldDispatchChange","filteredResult","uploadInfo","replaceImageUriInView","convertURL","uploadError","uploadUri","sugarElement","parentOpt","dispatchChange","uploadImagesAuto","isValidDataUriImage","imgElm","resultItem","replaceBlobUris","source_view","genericBase","cellBase","cellFormats","tablecellbackgroundcolor","tablecellverticalalign","tablecellbordercolor","borderColor","tablecellclass","tableclass","tablecellborderstyle","borderStyle","tablecellborderwidth","borderWidth","FormatRegistry","valigntop","verticalAlign","valignmiddle","valignbottom","alignleft","preview","textAlign","float","aligncenter","alignright","alignjustify","bold","italic","underline","strikethrough","strike","forecolor","hilitecolor","fontname","fontsize","lineheight","fontsize_class","blockquote","subscript","superscript","_fmt","_itemName","customValue","removeformat","each$3","isPreviewItem","parsedSelectorToHtml","ancestry","sItem","wrapInHtml","parentCandidate","ancestorName","parentRequired","getRequiredParent","elmRule","siblingElm","parentSiblings","parseSelectorItem","$3","$4","getCssText","previewCss","previewStyles","removeVars","previewFrag","parseSelector","previewElm","rawParentFontSize","parentFontSize","Formatter","formatChangeState","addShortcut","setup$s","setup$u","nodeOrRange","applyFormat","removeFormat","toggleFormat","matchFormat","closestFormat","matchAllFormats","matchNodeFormat","canApplyFormat","shouldIgnoreCommand","UndoManager","addUndoLevel","isFirstTypedCharacter","addNonTypingUndoLevel","isMeta","isDirty","modKey","inputType","isInsertFromPasteOrDrop","addKeyboardShortcuts","nonTypingKeycodes","placeholderAttr","isKeyboardEvent","isDeleteEvent","setup$r","updatePlaceholder","isNonTypingKeyboardEvent","showPlaceholder","isTypingKeyboardEvent","isVisuallyEmpty","firePlaceholderToggle","blockBoundary","getBlockPosition","containerElm","blockPosition","getClosestHost","readFromRange","fromBlockPos","toBlockPos","blockPos","skipLastBr","lastPositionInBlock","isDifferentBlocks","hasSameHost","isEditable$1","isValidBlock","hasValidBlocks","extractChildren","getChildrenUntilBlockBoundary","removeEmptyRoot","nestedBlockMerge","toBlock","insertionPoint","sidelongBlockMerge","getInlineToBlockDescendants","newFromBlockDescendants","getInsertionPoint","findInsertionPoint","parentsAndSelf$1","trimBr","mergeBlockInto","mergeBlocks","block1","block2","backspaceDelete$9","read$1","isRawNodeInTable","isEverythingSelected","noPrevious","noNext","isSelectionInTable","deleteRange$2","emptyEditor","deleteRangeMergeBlocks","backspaceDelete$8","_forward","showCaret","getNodeRange","renderRangeCaret","renderCaretAtRange","caretPositionNode","caretPositionBeforeNode","ceRoot","isBeforeBoundary","isAfterBoundary","deleteContentAndShowCaret","peekCaretPosition","caretRange","deleteRange","trimEmptyTextNode","backspaceDelete$7","deleteBoundaryText","getNextPosFn","isBeforeFn","nextCaretPosition","normalizedNextCaretPosition","getEdgeCefPosition","atStart","isCefAtEdgeSelected","DeleteAction","moveToElement","moveToPosition","deleteEmptyBlockOrMoveToCef","toCefElm","blockElm","findCefPosition","isDeleteFromCefDifferentBlocks","getContentEditableAction","isAtContentEditableBlockCaret","caretLocation","getContentEditableBlockAction","skipMoveToActionFromInlineCefToContent","getAncestorCe","backspaceDeleteCaret","deleteElement$1","hideFakeCaret","backspaceDeleteRange","paddEmptyElement","backspaceDelete$6","backspaceDelete$5","deleteCaret$2","isText$2","startsWithCaretContainer","endsWithCaretContainer","createZwsp","insertInline","insertBefore$1","insertAfter$1","insertInlineBefore","insertInlineAfter","insertInlinePos","isPosCaretContainer","caretNode","evaluateUntil","Location","rescope$1","nPos","isNotInsideFormatCaretContainer","findInsideRootInline","start$1","isValidLocation","readLocation","getName","betweenInlines","fromInline","toInline","hasSameParentBlock","skipNoMovement","fromLocation","toLocation","location2","location1","isEq","findLocationSimple","findLocation$1","findLocationTraverse","moveRel","moveByWord","hasSelectionModifyApi","BreakType","walk$1","getBreakType","Wrap","getPositionsUntil","breakType","breakAt","Eol","getAdjacentLinePositions","getPositionsUntilBreak","findClosestHorizontalPositionFromPoint","lastRect","newRect","lastDist","findClosestHorizontalPosition","targetRect","getPositionsUntilPreviousLine","getPositionsUntilNextLine","getPositionsAbove","getPositionsBelow","isAtFirstLine","isAtLastLine","getClosestPositionAbove","getClosestPositionBelow","isContentEditableFalse$4","distanceToRectLeft$1","distanceToRectRight$1","findClosestClientRect","oldClientRect","oldDistance","newDistance","getNodeClientRects","toArrayWithNode","VDirection","walkUntil","isAboveFn","isBeflowFn","targetClientRect","findUntil","upUntil","downUntil","getLastClientRect","isAboveLine","aboveLineNumber","isLine","isLineNumber","moveToRange","renderRangeCaretOpt","moveHorizontally","rangeIsInContainerBlock","moveVertically","caretClientRect","linePositions","nextLinePositions","nextLineRect","caretPositions","positionsUntil","isBelowFn","closestNextLineRect","getLineEndPoint","getEditingHost","lineInfo","moveToLineEndPoint$3","setCaretPosition","setSelected","renderCaretLocation","findLocation","getPositionFromRange","isInlineTarget$1","safeRemoveCaretContainer","caretValue","isAtZwsp","move$3","moveWord","_caret","setupSelectedState","toggleInlines","inlineBoundaries","selectedInlines","targetInlines","renderInsideInlineCaret","inlines","_inline","moveNextWord","movePrevWord","moveToLineEndPoint$2","linePoint","outsideLoc","setCaretLocation","deleteFromTo","rangeFromPositions","backspaceDeleteCollapsed","rescope","toPosition","hasOnlyTwoOrLessPositionsLeft","backspaceDelete$4","getParentsUntil","hasOnlyOneChild","getParentInlinesUntilMultichildInline","hasMultipleChildren","getFormatNodes","parentInlines","isFormatElement$1","getFormatNodesAtStart","getParentInlines","deleteCaret$1","deleteLastPosition","createCaretFormatAtStart","isBrInEmptyElement","createCaretFormatAtStart$1","rangeStartsAtTextContainer","rangeEndsAtEndOfStartContainer","startParent","endParent","isEqualNode","rangeStartAndEndHaveSameParent","rangeEndsAtEndOfEndContainer","requiresDeleteRangeOverride","rangeStartsAtStartOfTextContainer","rangeStartParentIsFormatElement","rangeEndsAfterEndOfStartContainer","rangeEndsAtOrAfterEndOfStartContainer","deleteRange$1","updateCaretFormat","updateFormats","missingFormats","backspaceDelete$3","hasAncestorInlineCaret","ancestor$1","requiresRefreshCaretOverride","hasAncestorInlineCaretAtStart","refreshCaret","deleteElement","backspaceDelete$2","deleteCaret","isNearMedia","parseIndentValue","getIndentStyleName","useMargin","canOutdent","getBlocksToIndent","isReadOnly","validateBlocks","indentStyleName","intentValue","isListComponent","parentIsListComponent","indentation","indentUnit","indentValue","indentElement","outdent","backspaceDelete$1","findAction","forwardDeleteCommand","execNativeForwardDeleteCommand","setup$q","deleteCommand","getTouch","setup$p","startData","longpressFired","debounceLongpress","isFarEnough","distX","distY","isBlockElement","isValidTarget","shouldRemoveTextNode","createRootBlock","rootNodeName","hasBlockParent","restoreSelection","insertEmptyLine","checkClassName","replaceMatchWithSpan","prevChar","findStartTagIndex","isValidContent","nonEditableRegExps","setup$n","contentEditableAttrName","editClass","nonEditClass","hasEditClass","hasNonEditClass","convertRegExpsToNonEditable","blockCaretContainer","handleBlockContainer","findBlockCaretContainer","isContentEditableFalse$3","exitPreBlock","getVisualCaretPosition$1","newBlock","textBlock","createTextBlock","getHorizontalRange","moveToCeFalseHorizontally","getVerticalRange","moveToCeFalseVertically","moveH$2","flipDirection","moveV$4","moveToLineEndPoint$1","selectToEndPoint","curRng","isTarget","moveCaretToNewEmptyLine","getClosestTargetBlock","isAtFirstOrLastLine","moveV$3","move$2","moveDown","summary","moveUp","moveV$2","baseKeyPattern","matchesEvent","match$1","defaultPatterns","matchDelayed","defaultDelayedPatterns","_len13","_key13","execute","executeWithDelayedAction","moveH$1","moveV$1","moveToLineEndPoint","CellLocation","filterFirstLayer","lookup$1","firstLayer","isEligible","newIndex","getClosestCell","getYAxisValue","isTargetCorner","corners","getCorners","tds","deflate","corner","findClosestCorner","newCorner","oldCorner","oldDist","newDist","getClosestCellAbove","getClosestCellBelow","findClosestPositionInAboveCell","findClosestPositionInBelowCell","isAtTableCellLine","startsWithWrapBreak","startsWithBrBreak","hasNextBreak","breakPos","isAtFirstTableCellLine","isAtLastTableCellLine","navigateHorizontally","_td","isCaretAtStartOrEndOfTable","getTable","renderBlock","insertFn","navigateVertically","getClosestAbovePosition","getClosestBelowPosition","move$1","mover","moveH","moveV","tabGo","_current","getCellFirstCursorPosition","tabForward","tabBackward","handleTab","rootElements","clearSelectedCells","setup$l","executeKeydownOverride$4","DOM$7","alwaysNext","textBefore","scanLeft","scanRight","repeatLeft","isWhitespace","stripTrigger","findStart","initRange","minChars","findTriggerIndex","findTrigger","firstChar","spot","toLast","isText$1","toLeaf","isStartOfWord","isPreviousCharContent","getDatabase","getTriggerContext","triggers","lookupWithContext","fetchOptions","startText","autocompleters","lookupByTrigger","lookupData","maxResults","matchText","highlightOn","SimpleResultType","fold$1","stype","serror","svalue","SimpleResult","bindError","formatObj","getErrorInfo","chooseFrom","missingBranch","branch","extract","choose$1","missingKey","chosen","merger","curObject","deepMerge","old","defaulted$1","mergeErrors","ResultCombine","partitions","ifField","ifCustom","newKey","instantiator","validator","anyValue$1","requiredAccess","missingRequired","fallbackAccess","extractField","bundleAsOption","optValue","optionAccess","optionDefaultedAccess","objOf","extractFields","fieldStrings","_okey","_presence","_instantiator","arrOf","asRaw","extractValue","errs","formatError","errInfo","formatErrors","choose","anyValue","typedValue","expectedType","actualType","boolean","functionProcessor","field$1","customField","customField$1","validateEnum","requiredOf","requiredString","requiredFunction","optionOf","optionString","defaultedOf","defaultedNumber","defaultedStringEnum","defaultedBoolean","defaultedFunction","fetch$1","onSetup","optionalText","optionalIcon","optionalTooltip","optionalLabel","defaultedType","defaultedString","autocompleterSchema","defaulted","defaultedArrayOf","baseToolbarButtonFields","baseToolbarToggleButtonFields","contextBarFields","contextButtonFields","contextToggleButtonFields","launchButtonFields","launchToggleButtonFields","toggleOrNormal","contextformbutton","contextformtogglebutton","requiredArrayOf","register$2","popups","popup","createAutocompleter","datasetValues","setup$k","activeAutocompleter","uiActive","cancelIfNecessary","removeAutocompleterDecoration","fireAutocompleterEnd","commenceIfNecessary","addAutocompleterDecoration","matchLength","getAutocompleters","newContext","doLookup","lookupInfo","fireAutocompleterUpdate","fireAutocompleterStart","_ui","setupEditorInput","emptyNodeContents","isEntireNodeSelected","getParentDetailsElementAtPos","isInDetailsElement","isCaretAtStartOfSummary","detailsElements","startSummary","isCaretInTheBeginningOf","isCaretAtEndOfSummary","isCaretInTheEndOf","setCaretToPosition","moveCaretToDetailsPos","shouldPreventDeleteIntoDetails","granularity","parentDetailsAtCaret","inEmptyParentBlock","isFirstBlock","isLastBlock","parentDetailsAtNewPos","shouldPreventDeleteSummaryAction","detailElements","isPartialDelete","startInSummary","endInSummary","isPartiallySelectedDetailsElements","startDetails","endDetails","isCaretInLastPositionInBody","isCaretInFirstPositionInBody","shouldPreventDeleteAction","getDetailsElements","handleDeleteActionSafari","applySelection","appendAllChildNodes","backspaceDelete","createAndFireInputEvent","specifics","isComposing","AT_TARGET","originalTarget","explicitOriginalTarget","InputEvent","fireInputEvent","fireBeforeInputEvent","platform$2","isMacOSOriOS","setup$j","isBackspaceKeydown","executeKeydownOverride$3","unmodifiedGranularity","getModifiedGranularity","applyAction","executeKeyupOverride","moveToCaretPosition","firstNonWhiteSpaceNodeSibling","getEditableRoot","editableRoot","getParentBlock$1","setForcedBlockAttrs","applyAttributes","forcedRootBlockAttrs","attrStyles","currentStyles","newStyles","attrClassesOpt","attrClasses","currentClassesOpt","currentClasses","filteredClasses","newClasses","appliedAttrs","remainingAttrs","createNewBlock","keepStyles","newBlockName","parentBlockName","isLastEmptyBlockInDetails","isAtDetailsEdge","insertNewLine","getDetailsRoot","isListBlock","isListItem","getContainerBlock","containerBlock","containerBlockParent","isFirstOrLastLi","getStyles","insert$4","containerParent","parentBlockStyles","isFirstChild","tmpRng","hasFirstChild","previousChildren","isEmptyAnchor","containerAndSiblingName","canSplitBlock","normalizeZwspOffset","blockbreak","insert$3","isAfterLastNodeInContainer","isCef","collapsedAndCef","createNewBlock$1","isCaretAtStartOrEndOfBlock","normalizedOffset","insertNewBlockAfter","containerBlockName","shouldEndContainer","isWithinNonEditableList","parentList","wrapSelfAndSiblingsInDefaultBlock","startNodeName","startNodeParent","parentBlockParent","isNearChildren","includeZwspInRange","trimLeadingLineBreaks","trimInlineElementsOnLeftSideOfBlock","firstChilds","addBrToBlockIfNeeded","fakeEventName","moveSelectionToBr","brElm","extraBr","insertBrAtCaret","isControlKey","hasRightSideContent","insertBrBefore","insertBrAfter","hasBrAfter","isAnchorLink","isInsideAnchor","insertBrOutsideAnchor","linebreak","insert$2","anchorLocation","readInlineAnchorLocation","newLineAction","shouldBlockNewLine","_shiftKey","shouldBlockNewLine$1","inListBlock","requiredState","isListItemParentBlock","inBlock","getParentBlockName","inCefBlock","inPreBlock","shouldPutBrInPre","inBrContext","shouldInsertBr","hasShiftKey","_editor","canInsertIntoEditableRoot","rootEditable","isInRootWithEmptyOrCEF","isCefOpt","predicates","insertBreak","execEditorDeleteCommand","insert$1","logicalAction","platform$1","isIOSSafari","handleEnterKeyEvent","setup$i","iOSSafariKeydownBookmark","koreanCharRegex","isCaretAfterKoreanCharacter","iOSSafariKeydownOverride","iOSSafariKeyupOverride","setup$h","executeKeydownOverride$2","setup$g","normalizeNbspsInEditor","isPageUpDown","setNodeChangeBlocker","blocked","setup$f","executeKeyupAction","insertTextAtPosition","insertNbspAtPosition","insertSpaceAtPosition","setSelection","insertSpaceOrNbspAtSelection","locationToCaretPosition","checkPos","insertInlineBoundarySpaceOrNbsp","insertSpaceInSummaryAtSelectionOnFirefox","insertSpaceThunk","insertSpaceOrNbspAtPosition","isInsideSummary","setup$d","executeKeydownOverride$1","tableTabNavigation","setup$c","executeKeydownOverride","setup$b","setup$e","setup$m","NodeChange","lastRng","nativeRng","fakeRng","isSameElementPath","currentPath","imageId","eventId","mkSetEventFn","transfer","setDragstartEvent","setDropEvent","setDragendEvent","isInDragStartEvent","modeId","mkSetModeFn","setMode$1","setReadWriteMode","setReadOnlyMode","setProtectedMode","checkMode","expectedMode","isInReadWriteMode","isInProtectedMode","validDropEffects","validEffectAlloweds","createDataTransfer","dataTransferImpl","DataTransfer","dropEffect","effectAllowed","allowed","normalizeItems","itemsImpl","setDragImage","imageData","clearData","cloneDataTransfer","originalMode","getMode","getDragImage","getEvent","setEvent","setHtmlData","internalMimeType","internalHtmlMime","internalMark","toBlockElements","rootTag","rootAttrs","tagOpen","openContainer","tagClose","paragraphs","pasteBinDefaultContent","isPasteBin","isDefaultPasteBinContent","PasteBin","create$6","lastRngCell","pasteBinElm","pasteBinClone","copyAndRemove","toElm","fromElm","pasteBinClones","dirtyWrappers","cleanWrapper","getLastRng","filter$1","trimHtml","trimSpaces","processResult","filterContent","preProcessArgs","firePastePreProcess","filteredContent","preProcess","postProcessFilter","tempBody","postProcessArgs","firePastePostProcess","pasteHtml$1","isAbsoluteUrl","linkSelection","pasteHtmlFn","createLink","insertImage","isImageUrl","pasteAsText","smartInsertContent","createIdGenerator","createPasteDataTransfer","doPaste","shouldSimulateInputEvent","doPasteAction","internalFlag","unmark","encodedText","getDataTransferItems","contentType","hasContentType","clipboardContent","hasHtmlOrText","createBlobInfo","useFileName","extractFilename","allowedExtensions","extension","lowerExt","mimeOverrides","getImageMimeType","pasteImageData","getImagesFromDataTransfer","fileResults","pasteImage","imageItem","existingBlobInfo","insertClipboardContent","plainTextMode","isPlainTextHtml","isPlainText","isAbsoluteUrl$1","voidElements","ignoreElements","registerEventHandlers","pasteBin","pasteFormat","keyboardPastePlainTextState","isKeyboardPasteEvent","isBrokenAndroidClipboardEvent","registerEventsAndFilters","isWebKitFakeUrl","isDataUri","isPasteInsert","registerDataImageFilter","register$1","togglePlainTextPaste","setClipboardData","setHtml5Clipboard","offscreenRange","selectNodeContents","hasSelectedContent","isTableSelection","cut","getCaretRangeFromEvent","setFocusedRange","setup$a","draggingInternallyState","hasImage","dropContent","plainTextContent","isPlainTextFileUrl","internalContent","needsInternalDrop","needsCustomInternalDrop","parentTransparent","isInternalDrop","trimmedContent","hasNoSummary","brokenDetailElements","setupSummaryDeleteByDragFix","rgbRegExp","removeWebKitStyles","webKitStylesOption","webKitStyles","inputStyles","outputStyles","inputValue","compareInput","outputStyle","setup$7","addPreProcessFilter","filterFunc","setup$8","processEvent","setup$9","setup$6","preventSummaryToggle","initialStateOption","serializedStateOption","filterDetails","isContentEditableFalse$2","getClosestScope","isContentEditableTrue","getClosestCef","findEdgeCaretCandidate","onTripleClickSelect","findClosestBlockRange","startRng","clickNode","cef","FakeCaretPosition","distanceToRectLeft","distanceToRectRight","isOverlapping","overlapY","collidesY","splitRectsPerAxis","rects","boundingClientRectFromRects","isInsideY","boundingRect","horizontalDistance","_y","closestChildCaretCandidateNodeRect","findCloserTextNode","caretCandidateRect","findClosestCaretCandidateNodeRect","sortedRects","tryFindSecondBestTextNode","sndClosest","horizontalRects","verticalRects","above","below","closestCaretCandidateNodeRect","ownerDoc","traverseUp","prevScope","childNodesWithoutGhost","uncheckedChildren","newScope","closestFakeCaretCandidate","clientInfo","Before","After","getAbsolutePosition","docElem","calc","calculatePosition","bodyPosition","getBodyPosition","scrollPosition","getScrollPosition","mousePosition","getMousePosition","iframePosition","inlineScroll","iframeScroll","getBodyScroll","getTargetProps","makeDragEvent","dataTransferForDispatch","makeDataTransferCopyForDragEvent","makeDndEvent","BUBBLING_PHASE","CAPTURING_PHASE","NONE","offsetX","offsetY","initUIEvent","initMouseEvent","makeDndEventFromMouseEvent","isContentEditableFalse$1","createGhost","clonedElm","padding","scrollEditor","scrollRight","scrollUp","scrollDown","isLeftMouseButtonPressed","ceElm","isDraggable","elmPos","dragging","relX","relY","ghost","dispatchDragEvent","throttledPlaceCaretAt","caretInfo","state_","movement","mouseEventOriginatedFromWithinTheEditor","targetPos","applyRelPos","moveGhost","mouseY","outerMouseY","outerMouseX","appendGhostToBody","isValidDropTarget","getRawTarget","dropTarget","removeElementWithPadding","getHtmlData","removeDragState","stopDragging","bindFakeDragEvents","pageDom","dragStartHandler","dragHandler","dropHandler","dragEndHandler","init$2","preventFileDrop","preventFileDropIfUIElement","editorRoot","eventNames","blockUnsupportedFileDrop","isContentEditableFalse","getContentEditableRoot","SelectionOverrides","realSelectionId","selectedElement","isFakeSelectionTargetElement","removeElementSelection","contentEditableRoot","setElementSelection","closestContentEditable","setRange","normalizeVoidElementSelection","isRangeInCaretContainer","isFakeSelectionElement","renderFocusCaret","setup$4","setup$3","isWithinCaretContainer","selectElement","targetClone","setupOffscreenSelection","realSelectionContainer","nodeElm","afterNode","getNormalizedTextOffset","generatePath","generatePathRange","resolvePath","nodePath","optNode","resolvePathRange","cleanEmptyNodes","deleteRng","clean","getParentBlock","resolveFromDynamicPatterns","patternSet","beforeText","dynamicPatterns","dynamicPatternsLookup","blockPatterns","inlinePatterns","getBeforeText","stripPattern","firstTextNode","textAfter","applyPattern$1","isBlockFormatName","formatSet","findPattern$1","sortedPatterns","sortPatterns$1","nuText","newMarker","rangeFromMarker","createMarker","markerPrefix","pathRange","textEnd","textStart","startParentNode","removeMarker","isReplacementPattern","findPatternStartFromSpot","startPattern","patternContent","searchText","startEndIndex","startPatternIndex","nextSpot","findPattern","normalizedMatches","endPathRng","endRng","resultsOpt","findPatternsRec","remainingPatterns","requireGap","startRange","findPatternStart","startPathRng","generatePathRangeFromRange","endSpot","patternsWithoutCurrent","applyPattern","patternRange","findPatterns","matchesWithSortedPatterns","sortPatterns","getBestMatches","hasSameMatches","sortedMatch","applyMatches","matchesWithMarkers","addMarkers","matchesWithEnds","endMarker","startMarker","applyReplacementPattern","markerRange","applyPatternWithContent","markerEndRange","markerStartRange","patternMarker","handleEnter","dynamicPatternSet","inlineMatches","blockMatches","findPatterns$1","blockText","insert$5","applyMatches$1","checkKeyEvent","codes","setup$2","charCodes","keyCodes","getPatternSet","createPatternSet","hasDynamicPatterns","hasTextPatternsLookup","handleInlineTrigger","handleInlineKey","Quirks","isGecko","isWebKit","setEditorCommandState","emptyEditorWhenDeleting","serializeRng","allRng","allContentsSelected","selectAll","documentElementEditingFocus","Range","selectControlElements","visualAidsAnchorClass","disableBackspaceIntoATable","setGeckoEditingOptions","setOpts","addBrAfterLastLinks","showBrokenImageIcon","restoreFocusOnKeyDown","bodyHeight","blockCmdArrowNavigation","tapLinksAndImages","blockFormSubmitInsideEditor","isAllContentSelected","removeStylesWhenDeletingAcrossBlockElements","getAttributeApplyFunction","setAttributeNode","isSelectionAcrossElements","DragEvent","DOM$6","getRootName","removeUndefined","mkParserSettings","mkSchemaSettings","initEditor","bindPendingEventDelegates","fireInit","moveSelectionToFirstCaretPosition","initInstanceCallback","getStyleSheetLoader$1","loadContentCss","fontCss","removeCss","contentCssText","allStylesheets","makeStylesheetLoadingPromises","framedFonts","bundledCss","normalCss","bundledPromises","contentStyle","appendStyle","initEditorWithInitialContent","startContent","loadInitialContent","contentBodyLoaded","_editableRoot","hasEditableRoot","createParser","mkSerializerSettings","annotator","_nodeChangeDispatcher","setup$5","setup$1","setup$o","setupRtcThunk","firePreInit","spellcheck","firePostRender","directionality","protect","preInit","cancelProgress","canceled","progressTimeout","startProgress","setupRtc","_rtcMode","DOM$5","createIframe","boxInfo","iframeTitle","ifr","createIframeElement","customAttrs","iframe","frameBorder","allowTransparency","iframeContainer","iframeHTML","documentBaseUrl","bodyId","bodyClass","translatedAriaText","getIframeHtml","setupIframeBody","srcdoc","DOM$4","initPlugin","initializedPlugins","Plugin","pluginUrl","pluginInstance","pluginInitError","createThemeFalseResult","renderThemeFalse","renderThemeFalseIframe","renderThemeUi","renderUI","renderFromLoadedTheme","iframeHeight","renderFromThemeFunc","iconPackName","currentIcons","loadIcons","svgData","addIcon","initIcons","Theme","initTheme","Model","initModel","trimLegacyPrefix","initPlugins","renderInfo","augmentEditorUiApi","uiApiFacade","isEnabled","setEnabled","init$1","orgVisibility","DOM$3","hasSkipLoadPrefix","loadLanguage","scriptLoader","languageCode","languageUrl","languageLoadError","loadTheme","themeUrl","themeLoadError","loadModel","modelUrl","modelLoadError","getIconsUrlMetaFromName","defaultIconsUrl","customIconsUrl","getIconsUrlMetaFromUrl","cat","urlMeta","iconsLoadError","loadPlugins","loadPlugin","pluginLoadError","isThemeLoaded","isModelLoaded","loadQueue","snapshot","getStyleSheetLoader","resetContent","triggerSave","isEncodingXml","set_dirty","deviceDetection","normalizePlugins","trimmedPlugins","extractSections","bifilter","sections","sectionResult","hasSection","getMobileOverrideOptions","mobileOptions","defaultMobileOptions","table_grid","object_resizing","toolbar_mode","toolbar_sticky","menubar","getExternalPlugins","overrideOptions","userDefinedExternalPlugins","external_plugins","processPlugins","isMobileDevice","defaultOverrideOptions","forcedPlugins","forced_plugins","desktopPlugins","mobileConfig","getSectionConfig","platformPlugins","getPlatformPlugins","mobilePlugins","combinedPlugins","combinePlugins","combineOptions","deviceOverrideOptions","mobile","extendedOptions","isOnMobile","sectionOptions","getSection","addVisual$1","registerExecCommands$3","toggleAlign","editorCommands","addCommands","JustifyLeft","JustifyCenter","JustifyRight","JustifyFull","JustifyNone","registerCommands$b","alignStates","registerQueryStateCommands$1","trimOrPad","trimOrPadLeftRight","insertAtCaret","processValue$1","insertedContent","insertContent$1","legacyPropNames","isFont","getSpecifiedFontProp","legacyPropName","getProperty","getFontProp","getComputedFontProp","getFontSize","getFontFamily","findFirstCaretElement","bindRange","getCaretElement","mapRange","fromFontSizeNumber","fontSizeNumber","getFontStyleValues","fontClasses","getFontSizeClasses","normalizeFontNames","registerExecCommands$2","ForeColor,HiliteColor","BackColor","_command","FontName","fontNameAction","FontSize","fontSizeAction","LineHeight","lineHeightAction","Lang","customCode","mceBlockQuote","FormatBlock","mceToggleFormat","registerQueryValueCommands","isFormatMatch","addQueryValueHandler","fontNameQuery","fontSizeQuery","specifiedStyle","computedStyle","lineHeightQuery","registerCommands$6","Indent","Outdent","getTopParentBlock","topParentBlock","registerCommands$3","InsertNewBlockBefore","InsertNewBlockAfter","registerCommands","queryCommandEnabled","queryCommandSupported","registerCommands$a","mceAddUndoLevel","mceEndUndoLevel","Undo","Redo","registerCommands$7","mceSelectNodeDepth","mceSelectNode","registerCommands$1","mceCleanup","insertHorizontalRule","insertText","insertHTML","mceInsertContent","mceSetContent","mceReplaceContent","mceNewDocument","registerCommands$9","applyLinkToSelection","linkDetails","mceInsertLink","registerCommands$5","insertParagraph","mceInsertNewLine","InsertLineBreak","registerCommands$2","listParent","registerExecCommands$1","registerQueryStateCommands","registerCommands$4","registerCommands$8","mceRemoveNode","mcePrint","print","mceFocus","mceToggleVisualAid","registerExecCommands","selectionSafeCommands","isSelectionSafeCommand","EditorCommands","lowerCaseCommand","skip_focus","commandList","internalContentEditableAttr","setContentEditable","toggleReadOnly","removeFakeSelection","switchOnContentEditableTrue","restoreFakeSelection","registerFilters","allowedEvents","processReadonlyEvents","isClickEvent","getAnchorHrefOpt","targetEl","isReadOnlyAllowedEvent","nativeEvents","EventDispatcher","bindings","toggleEvent","beforeFire","wrappedCallback","currentName","bindingName","filteredHandlers","getEventDispatcher","_eventDispatcher","toggleNativeEvent","Observable","dispatcherArgs","DOM$2","customEventRootDelegates","getEventTarget","eventRoot","isListening","bindEventDelegate","delegates","eventRootElm","delegate","editors","EditorObservable","_pendingNativeEvents","stringListProcessor","getErrorMessage","isValidResult","create$5","initialOptions","isBuiltInSpec","getBuiltInProcessor","processDefaultValue","registered","defaultModes","switchToMode","activeMode","availableModes","oldMode","newMode","editorReadOnly","fireSwitchMode","create$4","design","registerReadOnlyContentFilters","registerReadOnlySelectionBlockers","setMode","registerMode","each$2","keyCodeLookup","f8","f10","f11","f12","modifierNames","parseShortcut","access","ctrl","Shortcuts","pendingPatterns","hasModifier","isFunctionKey","matchShortcut","subpatterns","executeShortcutAction","cmdFunc","normalizeCommandFunc","createShortcut","bridge","create$3","menuItems","contextMenus","contextToolbars","sidebars","views","addButton","addGroupToolbarButton","addToggleButton","addMenuButton","addSplitButton","addMenuItem","addNestedMenuItem","addToggleMenuItem","addAutocompleter","addContextMenu","addContextToolbar","addContextForm","addSidebar","addView","DOM$1","each$1","Editor","loadedCSS","isNotDirty","documentBaseURL","normalizeOptions","registerOption","hasPlugin","lookupFn","rawPatterns","_ctx","register$7","_setBaseUrl","baseURI","setupCallback","addQueryStateHandler","queryCommandState","queryCommandValue","loadArgs","saveArgs","initialContent","oldState","urlConverterCallback","urlObject","toRelative","setEditableRoot","fireEditableRootStateChange","beforeUnloadDelegate","boundGlobalEvents","globalEventDelegate","EditorManager","toggleGlobalEvents","removeEditorFromList","targetEditor","oldEditors","isQuirksMode","compatMode","releaseDate","i18n","tinyMCEPreInit","srcScript","overrideDefaults","base_url","pluginBaseUrls","plugin_base_urls","pluginBaseUrl","pluginName","invalidInlineTargets","provideResults","initEditors","initCount","execCallback","unique$1","findTargets","isInvalidInlineTarget","createEditor","createId","existingEditor","editorId","editorOptions","addI18n","FakeClipboard","dataValue","FakeClipboardItem","relativePosition","targetW","targetH","relChars","create$2","Rect","inflate","findBestRelativePosition","constrainRect","rels","cropRect","clampRect","fixedSize","cx2","cy2","underflowX1","underflowY1","overflowX2","overflowY2","fromClientRect","create$1","tasks","resultFns","resources","loadErrMsg","runErrMsg","task","waiter","resolveCb","rejectCb","completer","_len14","_key14","_len15","_key15","awaiter","publicApi","geom","ImageUploader","showNotification","TreeWalker","Selection","tinymce$1","tinyMCE","exportToWindowGlobal","exportToModuleLoaders","global$4","after$1","TagBoundaries","scan","universe","toEnd","freefallRtl$2","freefallRtl$1","copyAttributesTo","accordionTag","accordionDetailsClass","accordionSummaryClass","accordionBodyWrapperClass","accordionBodyWrapperTag","global$3","isOpen","isInSummary","isInsertAllowed","getSelectedDetails","insertBogus","createParagraph","normalizeSummary","accordion","createSummary","normalizeAccordion","paragraph","insertAccordion","editorBody","summaryText","accordionSummaryHtml","accordionBodyHtml","detailsElm","summaryElm","des","toggleDetailsElement","shouldOpen","removeAccordion","insertAndSelectParagraphAfter","insertAdjacentElement","toggleAccordion","fireToggleAccordionEvent","toggleAllAccordions","accordions","fireToggleAllAccordionsEvent","global$2","getClassList","addClasses","classListSet","removeClasses","isAccordionDetailsNode","isAccordionBodyWrapperNode","getAccordionChildren","accordionNode","summaryNode","wrapperNode","otherNodes","padInputNode","setupEnterKeyInSummary","isAtDetailsStart","isDetailsSelected","normalizeDetails","buttonApi","hasSummaryNode","newSummaryNode","hasWrapperNode","newWrapperNode","otherNode","pNode","summaryClassRemoveSet","applyListFormat","listName","getNumberStyles","getBulletStyles","isListNode","isTableCellNode","inList","isCustomList","isChildOfBody","makeSetupHandler","setNodeChangeHandler","nodeChangeHandler","initialNode","updateButtonState","isWithinNonEditable","presets","iconStyle","itemValue","displayText","styleValueToText","onItemAction","_splitButtonApi","listStyleType","getSelectedStyleType","listStyle","addControl","addListStylePosition","allowHtmlInNamedAnchor","namedAnchorSelector","isEmptyString","getIdFromAnchor","isAnchor","removeEmptyNamedAnchorsInSelection","getNamedAnchor","updateAnchor","anchorElement","createAnchor","currentId","getId","onSubmit","insertAnchor","isEmptyNamedAnchorNode","isNamedAnchorNode","onSetupEditable","unbindSelectorChanged","unbindEditableChanged","registerFormats","getAutoLinkPattern","getDefaultLinkTarget","getDefaultLinkProtocol","allowUnsafeLinkTarget","isTextNode","isBracketOrSpace","findChar","parseCurrentLine","autoLinkPattern","tempOffset","startSpot","hasProtocol","convertToLink","defaultLinkTarget","handleSpacebar","handleBracket","insertChar","evtChr","fireInsertCustomChar","getCharMap$1","getCharMapAppend","UserDefined","getCharsFromOption","charmap","getCharMap","extendCharMap","userCharMap","characters","userCharMapAppend","userDefinedGroup","lowerCasePattern","charMatches","patternName","charMap","makeGroupItems","currentTab","updateFilter","_len16","_key16","dialogApi","scanAndSet","bridgeSpec","tabs","charGroup","onTabChange","newTabName","onChange","changeData","charMapProcessor","_maxResults","_reject","autocompleteApi","CM_SETTINGS","lineWrapping","lineNumbers","foldGutter","gutter","matchBrackets","styleActiveLine","CURSOR_MARKER_CODE","CUSTOM_EDITOR_ID","setupCodemirror","codeMirror","autoComplete","getAutocompleteConfig","completeAfter","showHint","completionActive","completeSingle","Pass","completeIfAfterLt","getRange","Pos","completeIfInTag","getTokenAt","isStringEdge","innerMode","matchTags","bothTags","keyMap","gutters","extraKeys","cmi","foldCode","screenReaderLabel","addAccessKeyInfoPanel","td1","td2","setupResource","CodeMirror","setupSourceEscape","focusableElements","escKeyMap","addKeyMap","tabKeyMap","removeKeyMap","focusableElement","getInputField","markCursorPosition","somethingSelected","moveCursorIfInEntity","moveCursorIfInTag","getViewport","findMatchingTag","moveCursorIfInIframe","findEnclosingTag","openingTagCursorLocation","curLine","getLine","addCursorMarker","checkLineBoundary","charPos","getModeAt","tinyCursor","replaceSelection","CustomEditor","isDarkTheme","addCursorMarkers","bookmarkNode","isBody","createCursorPosition","contentProcessor","markedContent","cursorMarker","getContentWithMarkers","lineIdx","cursorIndex","getCursorPosition","submitHandler","firstChildIsStyleTag","Dialog","processContent","collectSettings","codeview","cmSettings","scriptId","makeDialog","prismjs","oldprism","Prism","manual","_self","plainTextGrammar","disableWorkerMessageHandler","Token","objId","deepClone","visited","setLanguage","defaultActivation","plain","redef","grammar","newToken","DFS","propertyType","highlightAll","highlightAllUnder","highlightElement","insertHighlightedCode","highlightedCode","immediateClose","tokenList","LinkedList","addAfter","matchGrammar","matchedStr","lookbehind","lookbehindLength","rematch","patternObj","greedy","reach","removeCount","matchStr","removeFrom","removeRange","nestedRematch","highlightAutomaticallyCallback","WorkerGlobalScope","clike","buildPlaceholders","placeholderPattern","replaceFilter","tokenStack","markup","tokenizePlaceholders","walkTokens","keyword","modName","cpp","replacements","depthLog2","keywordKinds","keywordsToPattern","typeDeclarationKeywords","keywords","nonTypeKeywords","nonContextualKeywords","generic","nestedRound","genericName","typeExpressionWithoutTuple","tupleElement","typeExpression","typeInside","character","regularString","verbatimString","csharp","regularStringOrCharacter","regularStringCharacterOrComment","roundExpression","attrTarget","formatString","mInterpolationRound","mInterpolation","sInterpolationRound","sInterpolation","createInterpolationInside","interpolation","interpolationRound","dotnet","addInlined","addAttribute","classNamePrefix","java","function","namespace","javascript","includedCdataInside","mathml","ssml","atom","rss","punctuation","php","string_interpolation","python","ruby","percentExpression","symbolName","getLanguages$1","useGlobalPrismJS","isCodeSample","getSelectedCodeSample","customLanguages","getLanguages","defaultLanguage","currentLanguage","getCurrentLanguage","getCurrentCode","insertCodeSample","newPre","onChanged","pres","unprocessedCodeSamples","isCodeSampleSelection","children$2","getDirection","getParentElement","setDirOnElements","blockElement","isBlockElementListItem","normalizedBlock","getNormalizedBlock","listItems","setDir","getNodeChangeHandler","getEmojiDatabase","getEmojiDatabaseUrl","getEmojiDatabaseId","getAppendedEmoji","getEmojiImageUrl","ALL_CATEGORY","categoryNameMap","people","animals_and_nature","food_and_drink","activity","travel_and_places","user","translateCategory","categories","getUserDefinedEmoji","userDefinedEmoticons","category","initDatabase","databaseUrl","databaseId","emojiImagesUrl","getEmoji","lib","emojis","userEmojis","cats","everything","processEmojis","listAll","hasLoaded","listCategories","numRetries","listCategory","emojiMatches","emoji","emojisFrom","reachedLimit","_len17","_key17","dialogData","searchField","resultsField","getInitialState","actionData","insertEmoticon","redial","unblock","_err","fitzpatrick_scale","grinning","grimacing","grin","joy","rofl","partying","smiley","smile","sweat_smile","laughing","innocent","wink","blush","slightly_smiling_face","upside_down_face","relaxed","yum","relieved","heart_eyes","smiling_face_with_three_hearts","kissing_heart","kissing","kissing_smiling_eyes","kissing_closed_eyes","stuck_out_tongue_winking_eye","zany","raised_eyebrow","monocle","stuck_out_tongue_closed_eyes","stuck_out_tongue","money_mouth_face","nerd_face","sunglasses","star_struck","clown_face","cowboy_hat_face","hugs","smirk","no_mouth","neutral_face","expressionless","unamused","roll_eyes","thinking","lying_face","hand_over_mouth","shushing","symbols_over_mouth","exploding_head","flushed","disappointed","worried","angry","rage","pensive","confused","slightly_frowning_face","frowning_face","persevere","confounded","tired_face","weary","pleading","triumph","open_mouth","scream","fearful","cold_sweat","hushed","frowning","anguished","cry","disappointed_relieved","drooling_face","sleepy","sweat","hot","cold","sob","dizzy_face","astonished","zipper_mouth_face","nauseated_face","sneezing_face","vomiting","face_with_thermometer","face_with_head_bandage","woozy","sleeping","zzz","poop","smiling_imp","imp","japanese_ogre","japanese_goblin","skull","alien","robot","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","palms_up","raised_hands","clap","wave","call_me_hand","facepunch","fist","fist_left","fist_right","ok_hand","raised_hand","raised_back_of_hand","open_hands","muscle","pray","foot","leg","handshake","point_up","point_up_2","point_down","point_left","point_right","raised_hand_with_fingers_splayed","love_you","metal","crossed_fingers","vulcan_salute","writing_hand","selfie","nail_care","lips","tooth","tongue","ear","nose","eye","eyes","brain","bust_in_silhouette","busts_in_silhouette","speaking_head","baby","boy","girl","adult","man","woman","blonde_woman","blonde_man","bearded_person","older_adult","older_man","older_woman","man_with_gua_pi_mao","woman_with_headscarf","woman_with_turban","man_with_turban","policewoman","policeman","construction_worker_woman","construction_worker_man","guardswoman","guardsman","female_detective","male_detective","woman_health_worker","man_health_worker","woman_farmer","man_farmer","woman_cook","man_cook","woman_student","man_student","woman_singer","man_singer","woman_teacher","man_teacher","woman_factory_worker","man_factory_worker","woman_technologist","man_technologist","woman_office_worker","man_office_worker","woman_mechanic","man_mechanic","woman_scientist","man_scientist","woman_artist","man_artist","woman_firefighter","man_firefighter","woman_pilot","man_pilot","woman_astronaut","man_astronaut","woman_judge","man_judge","woman_superhero","man_superhero","woman_supervillain","man_supervillain","mrs_claus","santa","sorceress","wizard","woman_elf","man_elf","woman_vampire","man_vampire","woman_zombie","man_zombie","woman_genie","man_genie","mermaid","merman","woman_fairy","man_fairy","angel","pregnant_woman","breastfeeding","princess","prince","bride_with_veil","man_in_tuxedo","running_woman","running_man","walking_woman","walking_man","dancer","man_dancing","dancing_women","dancing_men","couple","two_men_holding_hands","two_women_holding_hands","bowing_woman","bowing_man","man_facepalming","woman_facepalming","woman_shrugging","man_shrugging","tipping_hand_woman","tipping_hand_man","no_good_woman","no_good_man","ok_woman","ok_man","raising_hand_woman","raising_hand_man","pouting_woman","pouting_man","frowning_woman","frowning_man","haircut_woman","haircut_man","massage_woman","massage_man","woman_in_steamy_room","man_in_steamy_room","couple_with_heart_woman_man","couple_with_heart_woman_woman","couple_with_heart_man_man","couplekiss_man_woman","couplekiss_woman_woman","couplekiss_man_man","family_man_woman_boy","family_man_woman_girl","family_man_woman_girl_boy","family_man_woman_boy_boy","family_man_woman_girl_girl","family_woman_woman_boy","family_woman_woman_girl","family_woman_woman_girl_boy","family_woman_woman_boy_boy","family_woman_woman_girl_girl","family_man_man_boy","family_man_man_girl","family_man_man_girl_boy","family_man_man_boy_boy","family_man_man_girl_girl","family_woman_boy","family_woman_girl","family_woman_girl_boy","family_woman_boy_boy","family_woman_girl_girl","family_man_boy","family_man_girl","family_man_girl_boy","family_man_boy_boy","family_man_girl_girl","yarn","thread","coat","labcoat","womans_clothes","tshirt","jeans","necktie","dress","bikini","kimono","lipstick","kiss","footprints","flat_shoe","high_heel","sandal","boot","mans_shoe","athletic_shoe","hiking_boot","socks","gloves","scarf","womans_hat","tophat","billed_hat","rescue_worker_helmet","mortar_board","crown","school_satchel","luggage","pouch","purse","handbag","briefcase","eyeglasses","dark_sunglasses","goggles","ring","closed_umbrella","dog","mouse","hamster","rabbit","fox_face","bear","panda_face","koala","tiger","lion","cow","pig","pig_nose","frog","squid","octopus","shrimp","monkey_face","gorilla","see_no_evil","hear_no_evil","speak_no_evil","monkey","chicken","penguin","bird","baby_chick","hatching_chick","hatched_chick","duck","eagle","owl","bat","wolf","boar","horse","unicorn","honeybee","bug","butterfly","snail","beetle","ant","grasshopper","spider","scorpion","crab","lizard","sauropod","turtle","tropical_fish","fish","blowfish","dolphin","shark","whale","whale2","crocodile","leopard","zebra","tiger2","water_buffalo","cow2","deer","dromedary_camel","camel","giraffe","elephant","rhinoceros","goat","ram","sheep","racehorse","pig2","rat","mouse2","rooster","turkey","dove","dog2","poodle","cat2","rabbit2","chipmunk","hedgehog","raccoon","llama","hippopotamus","kangaroo","badger","swan","peacock","parrot","lobster","mosquito","paw_prints","dragon","dragon_face","cactus","christmas_tree","evergreen_tree","deciduous_tree","palm_tree","seedling","herb","shamrock","four_leaf_clover","bamboo","tanabata_tree","leaves","fallen_leaf","maple_leaf","ear_of_rice","hibiscus","sunflower","rose","wilted_flower","tulip","blossom","cherry_blossom","bouquet","mushroom","chestnut","jack_o_lantern","shell","spider_web","earth_americas","earth_africa","earth_asia","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","new_moon","waxing_crescent_moon","first_quarter_moon","waxing_gibbous_moon","new_moon_with_face","full_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","sun_with_face","crescent_moon","star","star2","dizzy","sparkles","comet","sunny","sun_behind_small_cloud","partly_sunny","sun_behind_large_cloud","sun_behind_rain_cloud","cloud","cloud_with_rain","cloud_with_lightning_and_rain","cloud_with_lightning","zap","boom","snowflake","cloud_with_snow","snowman","snowman_with_snow","wind_face","tornado","fog","open_umbrella","umbrella","droplet","sweat_drops","ocean","green_apple","apple","pear","tangerine","lemon","banana","watermelon","grapes","strawberry","melon","cherries","peach","pineapple","coconut","kiwi_fruit","mango","avocado","broccoli","tomato","eggplant","cucumber","carrot","hot_pepper","potato","corn","leafy_greens","sweet_potato","peanuts","honey_pot","croissant","bread","baguette_bread","bagel","pretzel","cheese","egg","bacon","steak","pancakes","poultry_leg","meat_on_bone","bone","fried_shrimp","fried_egg","hamburger","fries","stuffed_flatbread","hotdog","pizza","sandwich","canned_food","spaghetti","taco","burrito","green_salad","shallow_pan_of_food","ramen","stew","fish_cake","fortune_cookie","sushi","bento","rice_ball","rice","rice_cracker","oden","dango","shaved_ice","ice_cream","icecream","pie","cake","cupcake","moon_cake","birthday","custard","candy","lollipop","chocolate_bar","popcorn","dumpling","doughnut","cookie","milk_glass","beer","beers","clinking_glasses","wine_glass","tumbler_glass","cocktail","tropical_drink","champagne","sake","tea","cup_with_straw","coffee","baby_bottle","salt","spoon","fork_and_knife","plate_with_cutlery","bowl_with_spoon","takeout_box","chopsticks","soccer","basketball","football","baseball","softball","tennis","volleyball","rugby_football","flying_disc","golf","golfing_woman","golfing_man","ping_pong","badminton","goal_net","ice_hockey","field_hockey","lacrosse","cricket","ski","skier","snowboarder","person_fencing","women_wrestling","men_wrestling","woman_cartwheeling","man_cartwheeling","woman_playing_handball","man_playing_handball","ice_skate","curling_stone","skateboard","sled","bow_and_arrow","fishing_pole_and_fish","boxing_glove","martial_arts_uniform","rowing_woman","rowing_man","climbing_woman","climbing_man","swimming_woman","swimming_man","woman_playing_water_polo","man_playing_water_polo","woman_in_lotus_position","man_in_lotus_position","surfing_woman","surfing_man","bath","basketball_woman","basketball_man","weight_lifting_woman","weight_lifting_man","biking_woman","biking_man","mountain_biking_woman","mountain_biking_man","horse_racing","business_suit_levitating","trophy","running_shirt_with_sash","medal_sports","medal_military","reminder_ribbon","rosette","ticket","tickets","performing_arts","art","circus_tent","woman_juggling","man_juggling","microphone","headphones","musical_score","musical_keyboard","drum","saxophone","trumpet","guitar","violin","clapper","video_game","space_invader","dart","game_die","chess_pawn","slot_machine","jigsaw","bowling","red_car","taxi","blue_car","bus","trolleybus","racing_car","police_car","ambulance","fire_engine","minibus","truck","articulated_lorry","tractor","kick_scooter","motorcycle","bike","motor_scooter","rotating_light","oncoming_police_car","oncoming_bus","oncoming_automobile","oncoming_taxi","aerial_tramway","mountain_cableway","suspension_railway","railway_car","train","monorail","bullettrain_side","bullettrain_front","light_rail","mountain_railway","steam_locomotive","train2","metro","tram","station","flying_saucer","helicopter","small_airplane","airplane","flight_departure","flight_arrival","sailboat","motor_boat","speedboat","ferry","passenger_ship","rocket","artificial_satellite","seat","canoe","construction","fuelpump","busstop","vertical_traffic_light","traffic_light","checkered_flag","ship","ferris_wheel","roller_coaster","carousel_horse","building_construction","foggy","tokyo_tower","fountain","rice_scene","mountain","mountain_snow","mount_fuji","volcano","japan","camping","tent","national_park","motorway","railway_track","sunrise","sunrise_over_mountains","desert","beach_umbrella","desert_island","city_sunrise","city_sunset","cityscape","night_with_stars","bridge_at_night","milky_way","stars","sparkler","fireworks","rainbow","houses","european_castle","japanese_castle","stadium","statue_of_liberty","house","house_with_garden","derelict_house","office","department_store","post_office","european_post_office","hospital","hotel","convenience_store","school","love_hotel","wedding","classical_building","church","mosque","synagogue","kaaba","shinto_shrine","watch","iphone","calling","computer","keyboard","desktop_computer","printer","computer_mouse","trackball","joystick","minidisc","floppy_disk","dvd","vhs","camera_flash","video_camera","movie_camera","film_projector","film_strip","telephone_receiver","phone","pager","fax","studio_microphone","level_slider","control_knobs","compass","stopwatch","timer_clock","alarm_clock","mantelpiece_clock","hourglass_flowing_sand","hourglass","satellite","battery","electric_plug","bulb","flashlight","candle","fire_extinguisher","wastebasket","oil_drum","money_with_wings","dollar","yen","euro","pound","moneybag","credit_card","gem","balance_scale","toolbox","wrench","hammer","hammer_and_pick","hammer_and_wrench","nut_and_bolt","gear","brick","chains","magnet","gun","bomb","firecracker","hocho","dagger","crossed_swords","shield","smoking","skull_and_crossbones","coffin","funeral_urn","amphora","crystal_ball","prayer_beads","nazar_amulet","barber","alembic","telescope","microscope","hole","pill","syringe","dna","microbe","petri_dish","test_tube","thermometer","broom","basket","toilet_paper","toilet","shower","bathtub","soap","sponge","lotion_bottle","old_key","couch_and_lamp","sleeping_bed","bed","door","bellhop_bell","teddy_bear","framed_picture","world_map","parasol_on_ground","moyai","shopping","shopping_cart","balloon","ribbon","gift","confetti_ball","tada","dolls","wind_chime","crossed_flags","izakaya_lantern","red_envelope","envelope_with_arrow","incoming_envelope","love_letter","postbox","mailbox_closed","mailbox","mailbox_with_mail","mailbox_with_no_mail","package","postal_horn","inbox_tray","outbox_tray","page_with_curl","bookmark_tabs","receipt","bar_chart","chart_with_upwards_trend","chart_with_downwards_trend","page_facing_up","spiral_calendar","card_index","card_file_box","ballot_box","file_cabinet","clipboard","spiral_notepad","file_folder","open_file_folder","card_index_dividers","newspaper_roll","newspaper","notebook","closed_book","green_book","blue_book","orange_book","notebook_with_decorative_cover","ledger","books","open_book","safety_pin","paperclip","paperclips","scissors","triangular_ruler","straight_ruler","abacus","pushpin","round_pushpin","triangular_flag_on_post","white_flag","black_flag","rainbow_flag","closed_lock_with_key","unlock","lock_with_ink_pen","pen","fountain_pen","black_nib","pencil2","crayon","paintbrush","mag_right","heart","orange_heart","yellow_heart","green_heart","blue_heart","purple_heart","black_heart","broken_heart","heavy_heart_exclamation","two_hearts","revolving_hearts","heartbeat","heartpulse","sparkling_heart","cupid","gift_heart","heart_decoration","peace_symbol","latin_cross","star_and_crescent","wheel_of_dharma","star_of_david","six_pointed_star","menorah","yin_yang","orthodox_cross","place_of_worship","ophiuchus","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","atom_symbol","u7a7a","u5272","radioactive","biohazard","mobile_phone_off","vibration_mode","u6709","u7121","u7533","u55b6","u6708","eight_pointed_black_star","white_flower","ideograph_advantage","congratulations","u5408","u6e80","u7981","sos","no_entry","name_badge","no_entry_sign","stop_sign","anger","hotsprings","no_pedestrians","do_not_litter","no_bicycles","underage","no_mobile_phones","exclamation","grey_exclamation","question","grey_question","bangbang","interrobang","low_brightness","high_brightness","trident","fleur_de_lis","part_alternation_mark","children_crossing","beginner","recycle","u6307","chart","sparkle","eight_spoked_asterisk","negative_squared_cross_mark","white_check_mark","diamond_shape_with_a_dot_inside","cyclone","globe_with_meridians","atm","passport_control","customs","baggage_claim","left_luggage","wheelchair","no_smoking","parking","potable_water","mens","womens","baby_symbol","restroom","put_litter_in_its_place","cinema","signal_strength","koko","cool","new","free","zero","two","three","four","five","six","seven","eight","nine","keycap_ten","asterisk","eject_button","arrow_forward","pause_button","next_track_button","stop_button","record_button","play_or_pause_button","previous_track_button","fast_forward","rewind","twisted_rightwards_arrows","repeat_one","arrow_backward","arrow_up_small","arrow_down_small","arrow_double_up","arrow_double_down","arrow_right","arrow_left","arrow_up","arrow_down","arrow_upper_right","arrow_lower_right","arrow_lower_left","arrow_upper_left","arrow_up_down","left_right_arrow","arrows_counterclockwise","arrow_right_hook","leftwards_arrow_with_hook","arrow_heading_up","arrow_heading_down","information_source","abc","abcd","capital_abcd","musical_note","notes","wavy_dash","curly_loop","heavy_check_mark","arrows_clockwise","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","heavy_multiplication_x","infinity","heavy_dollar_sign","currency_exchange","copyright","back","soon","ballot_box_with_check","radio_button","white_circle","black_circle","red_circle","large_blue_circle","small_orange_diamond","small_blue_diamond","large_orange_diamond","large_blue_diamond","small_red_triangle","black_small_square","white_small_square","black_large_square","white_large_square","small_red_triangle_down","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_square_button","white_square_button","speaker","sound","loud_sound","mega","loudspeaker","bell","no_bell","black_joker","mahjong","spades","clubs","hearts","diamonds","flower_playing_cards","thought_balloon","right_anger_bubble","speech_balloon","left_speech_bubble","clock1","clock2","clock3","clock4","clock5","clock6","clock7","clock8","clock9","clock10","clock11","clock12","clock130","clock230","clock330","clock430","clock530","clock630","clock730","clock830","clock930","clock1030","clock1130","clock1230","afghanistan","aland_islands","albania","algeria","american_samoa","andorra","angola","anguilla","antarctica","antigua_barbuda","argentina","armenia","aruba","australia","austria","azerbaijan","bahamas","bahrain","bangladesh","barbados","belarus","belgium","belize","benin","bermuda","bhutan","bolivia","caribbean_netherlands","bosnia_herzegovina","botswana","brazil","british_indian_ocean_territory","british_virgin_islands","brunei","bulgaria","burkina_faso","burundi","cape_verde","cambodia","cameroon","canada","canary_islands","cayman_islands","central_african_republic","chad","chile","christmas_island","cocos_islands","colombia","comoros","congo_brazzaville","congo_kinshasa","cook_islands","costa_rica","croatia","cuba","curacao","cyprus","czech_republic","denmark","djibouti","dominica","dominican_republic","ecuador","egypt","el_salvador","equatorial_guinea","eritrea","estonia","ethiopia","falkland_islands","faroe_islands","fiji","finland","french_guiana","french_polynesia","french_southern_territories","gabon","gambia","georgia","ghana","gibraltar","greece","greenland","grenada","guadeloupe","guam","guatemala","guernsey","guinea","guinea_bissau","guyana","haiti","honduras","hong_kong","hungary","iceland","india","indonesia","iran","iraq","ireland","isle_of_man","israel","cote_divoire","jamaica","jersey","jordan","kazakhstan","kenya","kiribati","kosovo","kuwait","kyrgyzstan","laos","latvia","lebanon","lesotho","liberia","libya","liechtenstein","lithuania","luxembourg","macau","macedonia","madagascar","malawi","malaysia","maldives","mali","malta","marshall_islands","martinique","mauritania","mauritius","mayotte","mexico","micronesia","moldova","monaco","mongolia","montenegro","montserrat","morocco","mozambique","myanmar","namibia","nauru","nepal","netherlands","new_caledonia","new_zealand","nicaragua","niger","nigeria","niue","norfolk_island","northern_mariana_islands","north_korea","norway","oman","pakistan","palau","palestinian_territories","panama","papua_new_guinea","paraguay","peru","philippines","pitcairn_islands","poland","portugal","puerto_rico","qatar","reunion","romania","rwanda","st_barthelemy","st_helena","st_kitts_nevis","st_lucia","st_pierre_miquelon","st_vincent_grenadines","samoa","san_marino","sao_tome_principe","saudi_arabia","senegal","serbia","seychelles","sierra_leone","singapore","sint_maarten","slovakia","slovenia","solomon_islands","somalia","south_africa","south_georgia_south_sandwich_islands","south_sudan","sri_lanka","sudan","suriname","swaziland","sweden","switzerland","syria","taiwan","tajikistan","tanzania","thailand","timor_leste","togo","tokelau","tonga","trinidad_tobago","tunisia","turkmenistan","turks_caicos_islands","tuvalu","uganda","ukraine","united_arab_emirates","england","scotland","wales","us_virgin_islands","uruguay","uzbekistan","vanuatu","vatican_city","venezuela","vietnam","wallis_futuna","western_sahara","yemen","zambia","zimbabwe","united_nations","pirate_flag","fullscreenState","_len19","_key19","_len20","_key20","unbindable","siblings$2","_len18","_key18","bind$1","detect$1","_len22","_key22","fireFullscreenStateChanged","getFullscreenNative","getFullscreenRoot","isFullscreenElement","fullscreenElement","msFullscreenElement","webkitFullscreenElement","ancestors$1","all$1","siblings$1","ancestorPosition","ancestorStyles","clobberStyles","clobber","clobberStyle","backup","bgColor","matchColor","viewportUpdate","resizeBinder","scrollBinder","_len21","_key21","toggleFullscreen","editorContainerS","sinkContainerS","fullscreenRoot","fullscreenInfo","editorContainerStyle","iframeStyle","handleClasses","clobberedEls","restoreStyles","fullscreenChangeHandler","sugarDoc","exitFullscreen","msExitFullscreen","webkitCancelFullScreen","iframeWidth","containerWidth","containerHeight","containerTop","containerLeft","sinkCssPosition","scrollPos","_evt","newFullScreenInfo","sugarElem","requestFullscreen","msRequestFullscreen","webkitRequestFullScreen","editorEventCallback","hasDimensions","hasAdvTab","hasUploadTab","getPrependUrl","hasDescription","hasImageTitle","hasImageCaption","getImageList","showAccessibilityOptions","parseIntAndGetMax","removePixelSuffix","addPixelSuffix","isPlaceholderImage","isSafeImageUrl","isDomSafe","getHspace","getVspace","getBorder","hasCaption","updateAttrib","toggleCaption","figureElm","removeFigure","wrapInFigure","normalizeStyle","normalizeCss","setHspace","pxValue","setVspace","setBorder","setBorderStyle","getBorderStyle","isFigure","getIsDecorative","getAlt","getStyleValue","hspace","vspace","isDecorative","updateProp","oldData","setAlt","sugarImage","updateAlt","normalizeCss$1","mergedCss","splitMargin","mergeMargins","compressed","getSelectedImage","splitTextBlock","figure","insertImageAtCaret","insertedElm","fromLibrary","writeImageDataToSelection","syncSrcAttr","waitLoadImage","selectImage","insertOrUpdateImage","partialData","selectedImageData","sanitizedData","sanitizeImageData","deleteImage","sanitizeList","menu","extractor","findEntryDelegate","isGroup","ListUtils","findEntry","optList","AdvTab","_info","inputMode","urlListSanitizer","futureImageList","createImageList","imageList","hasAdvTab$1","hasUploadTab$1","hasUploadUrl$1","hasUploadUrl","hasUploadHandler$1","hasUploadHandler","readImageDataFromSelection","hasDescription$1","hasImageTitle$1","hasDimensions$1","hasImageCaption$1","hasAccessibilityOptions","automaticUploads","prependURL","preUrl","libraryTab","allowLibraryUploads","showLibraryTab","libraryFilePicker","labels","tabName","getSnImageSettings","LibraryTab","dropZone","makeItems","imageDescription","filetype","picker_text","useColumns","MainTab","UploadTab","fromImageData","borderstyle","fileinput","libraryfile","toImageData","removeEmptyAlt","addPrependUrl","addPrependUrl2","srcURL","prependUrl","formFillFromMeta","formFillFromMeta2","changeSrc","calculateImageSize","imageSize","updateImagesDropdown","prevImage","changeLibraryFileHandler","dataUrl","createBlobCache","addToBlobCache","showTab","changeHandler","changeImages","prevAlt","changeFileInput","finalize","updateSrcAndSwitchTab","uploadImage","alertErr","actionHandler","successCallback","getEditor","closeHandler","makeDialogBody","finalData","getImageSize","createState","onClose","hasImageClass","toggleContentEditableState","toggleContentEditable","unbindEditable","getDateFormat","getTimeFormat","shouldInsertTimeElement","daysShort","daysLong","monthsLong","addZeros","getDateTime","getYear","insertDateTime","userTime","computerTime","timeElm","newTimeElm","getDefaultDateTime","_api","makeMenuItemHandler","getSubmenuItems","global$5","assumeExternalTargets","hasContextToolbar","getLinkList","getTargetList","getRelList","getLinkClassList","shouldShowLinkTitle","useQuickLink","sanitizeWith","extracter","ListOptions","createUi","isLink","getHref","collectNodesInRange","applyRelTargetRules","isUnsafe","removeTargetRules","newRels","addTargetRules","getAnchorElement","getLinksInSelection","isImageFigure","isInAnchor","getAnchorText","anchorElm","trimCaretContainers","getLinks$1","hasLinks","isOnlyTextSelected","inlineTextElements","applyLinkOverrides","linkAttrs","newLinkAttrs","handleExternalTargets","linkDomMutation","attachState","getLinkAttrs","linkImageFigure","updateLink","unwrapOptions","sanitizeData","uriOptions","unlinkImageFigure","startAnchorElm","endAnchorElm","unlinkSelection","unlinkDomMutation","isListGroup","findTextByValue","catalog","getDelta","persistentText","fieldName","hasPersistentText","DialogChanges","linkCatalog","persistentData","onUrlChange","getTitleFromUrlChange","onCatalogChange","catalogs","findCatalog","tryEmailTransform","tryProtocolTransform","defaultLinkProtocol","DialogConfirms","delayedConfirm","AnchorListOptions","anchorNodes","anchors","ClassListOptions","parseJson","LinkListOptions","linkList","optItems","RelOptions","getRels","initialTarget","isTargetBlank","safeRelExtractor","fallbacks","TargetOptions","nonEmptyAttr","DialogInfo","linkNode","extractFromAnchor","linkClass","titleEnabled","open$1","collectData","handleSubmit","getChangedValue","changedData","pData","titleText","getInitialData","defaultTarget","dialogDelta","createEvent","appendClickRemove","getLink","getSelectedLink","gotoLink","gotoSelectedLink","toggleState","toggler","toggleLinkState","toggleLinkMenuState","toggleGotoLinkState","hasExactlyOneLinkInSelection","toggleUnlinkState","hasLinks$1","updateEnabled","setupContextToolbars","onSetupLink","launch","formApi","onlyText","getLinkText","collapseSelectionToEnd","setupButtons","setupMenuItems","setupContextMenu","hasOnlyAltModifier","setupGotoLinks","toolbarKey","zwCharsRegex","strIsEqual","toPt","wrapContent","liRange","beforeContent","wrapperElement","surroundContents","ExecCommandHandler","_ref24","FontSizeHandler","_ref22","resizeItems","selectedLiBlocks","highlightedStart","firstListItem","selRange","firstLiRange","oldFont","highlightedEnd","lastListItem","lastLiRange","_ref23","newFormatListSpan","lastElementChild","InsertListHandler","liNode","PastePostProssesHandler","global$7","closest$2","before$1","global$6","isTextNode$1","isOlUlNode","isOlNode","isListItemNode","isDlItemNode","isVoid","keepBookmarks","shouldIndentOnTab","contentNode","blockAttrs","hasContentNode","splitList","bookmarks","removeAndKeepBookmarks","isDescriptionDetail","isDescriptionTerm","outdentDlItem","indentDlItem","getNormalizedPoint","outRng","rangeStart","rangeEnd","listNames","listSelector","getParentList","getClosestListHost","getSelectedSubLists","isParentListSelected","findSubLists","getSelectedListItems","findParentListItemsNodes","listItemsElms","getClosestEditingHost","parentTableCell","isListHost","findLastParentListNode","parentLists","getSelectedListRoots","selectedLists","firstList","subsequentLists","getSelectedLists","getParentLists","isListInsideAnLiWithFirstAndLastNotListElement","getUniqueListRoots","lists","listRoots","fireListEvent","hasFirstChildList","isEntryList","isEntryComment","isIndented","cloneItemContent","joinSegment","createSegment","writeShallow","newCast","itemAttributes","appendItem","normalizeSegment","listAttributes","isEntryFragment","writeDeep","createSegments","parentListType","appendSegments","joinSegments","populateSegments","composeList","firstCommentEntryOpt","firstCommentEntry","fistCast","normalizeEntries","closestSiblingEntry","cleanListProperties","matchingEntry","cloneListProperties","parseSingleItem","itemSelection","selectionState","currentItemEntry","createEntry","isInPreviousLi","childListEntries","parseList","parseItem","parsedSiblings","liChild","isFragment","composeEntries","wasType","indentedComposer","normalizedEntries","outdentedComposer","listIndentation","entrySets","parseLists","sourceList","selectedListItems","getItemSelection","entrySet","indentSelectedEntries","indentEntry","composedLists","composedList","selectionIndentation","dlItems","getSelectedDlItems","isHandled","dlIndentation","handleIndentation","selectionIsWithinNonEditableList","indentListSelection","outdentListSelection","flattenListSelection","_len23","_key23","_len24","_key24","createBookmark","setupEndPoint","resolveBookmark","listToggleActionFromListName","updateListWithDetails","updateListStyle","updateListAttrs","getEndPointNode","findBetterContainer","findBlockAncestor","applyList","listItemName","getRootSearchStart","selectedTextBlocks","getSelectedTextBlocks","textBlocks","listBlock","hasCompatibleStyle","sib","sibStyle","detailStyle","mergeWithAdjacentLists","shouldMerge","list1","list2","isValidLists","hasSameListStyle","elm2","hasSameClasses","liSibling","updateList$1","newList","updateCustomList","hasListStyleDetail","toggleList","_detail","selectedSubLists","toggleMultipleLists","parentIsList","allLists","updateFunction","toggleSingleList","normalizeLists","normalizeList","findNextCaretContainer","nonEmptyBlocks","hasOnlyOneBlockChild","isUnwrappable","moveChildren","unwrapSingleBlockChild","mergeLiElements","listNode","nestedLists","mergeForward","fromLi","toLi","mergeIntoEmptyLi","backspaceDeleteFromListToListCaret","selectionStartElm","otherLi","willMergeParentIntoChild","mergeBackward","resolvedBookmark","oldParentElRef","backspaceDeleteIntoListCaret","findValidElement","findRoot","removeBlock","hasListSelection","parseAlphabeticBase26","charValue","composeAlphabeticBase26","parseDetail","currentList","isLowercase","deduceListType","parseStartValue","queryListCommandState","registerDialog","updateList","nodeBuffer","wrapInvalidChildren","insertListItem","restBuffer","reducer","setupTabKey","setupToggleButtonHandler","setupMenuButtonHandler","listProperties","getAudioTemplateCallback","getVideoTemplateCallback","getIframeTemplateCallback","hasLiveEmbeds","shouldFilterHtml","getUrlResolver","hasAltSource","hasPoster","getSnMediaSettings","snSettings","allowLibrarySearch","attachmentList","showLocalsTab","mediaUploadHandler","typeAttachment","typeLibrary","waitOpen","trimPx","getEphoxEmbedData","altsource","poster","htmlToData","guess","fileEnd","mp3","m4a","wav","mp4","webm","ogg","swf","Parser","addPx","updateEphoxEmbed","updateHtml","updateAll","numSources","sourceCount","urlPatterns","allowFullscreen","getUrl","protocolMatches","getProtocol","newUrl","dataToHtml","dataIn","sourcemime","altsourcemime","allowfullscreen","audioTemplateCallback","videoTemplateCallback","iframeTemplateCallback","getFlashHtml","getAudioHtml","getVideoHtml","isMediaElement","loadedData","getEmbedHtml","embedHandler","embedPromise","rej","wrappedResolve","defaultPromise","_ref26","makeTab","_ref27","onListLoaded","localsTabSourceType","callLoaded","attachConfig","attachmentItems","LocalsTab","handleSourceUpdate","_ref25","handleBrowseLibrary","sourceInput","metaData","extractMeta","mainData","getFromData","getFromMetaData","getNonEmptyValue","handleError","addEmbedHtml","snippetData","nuData","handleInsert","beforeObjects","selectPlaceholder","afterObjects","isEmbedIframe","mediaDataType","shouldInsertAsNewIframe","prevData","hasDimensionsChanged","submitForm","showDialog","editorData","snippet","getDimensionsOfElement","getEditorData","handleSource","serviceData","sizeInput","generalTab","embedTab","advancedFormItems","advancedTab","snMediaSettings","attachmentsLoaded","dataFromEmbed","handleEmbed","handleUpdate","attachments","firstItem","getSrc","setSrc","sourceEl","VideoScanner","videos","getAllVideos","videoSrc","videoInfo","videoToBlobInfo","Rtc","videoScanner","replaceVideoUrl","replaceVideoUriInView","uploadVideos","scanForVideos","videosToRemove","grandParentOpt","vid","isLiveEmbedNode","getDimension","dimension","setDimensions","previewNode","useDefaults","fallbackHeight","defaultHeight","createPlaceholderNode","placeHolder","retainAttributesAndInnerHtml","createPreviewNode","previewWrapper","frameborder","sandbox","appendNodeContent","shimNode","sourceNode","innerHtml","isPageEmbedWrapper","nodeClass","isWithinEmbedWrapper","parseAndSanitize","getEditorOption","boolAttrs","placeHolderConverter","realElmName","realElm","showDialog$1","getKeyboardSpaces","wrapNbsps","stringRepeat","insertNbsp","visualchars","isVisualCharsEnabled","spaces","getSeparatorHtml","shouldSplitBlock","pageBreakClass","getPlaceholderHtml","separatorHtml","shouldSplitBlock$1","pageBreakSeparatorRegExp","headHtml","cors","preventClicksOnLinksScript","dirAttr","getPreviewHtml","sandboxed","showBottomBorder","getHeight","setHeight","toggleClasses","handleOnClick","min_height","max_height","addClickEventListener","setDimmensions","removeClickEventListener","_ref28","punctuation$1","parent$1","isSimpleBoundary","walkerFn","collectTextToBoundary","section","isContentEditableTrueInCef","fOffset","sOffset","skipStart","finishSection","collectRangeSections","ceTrueNode","documentPositionPreceding","DOCUMENT_POSITION_PRECEDING","fromRng","fromNode","nodePositions","matchIdx","matchId","matchedText","matchIndex","matchStart","matchFinish","replacementNode","findAndMarkInSelection","textSections","fromNodes","getElmIndex","markAllMatches","currentSearchState","inSelection","findAndMark","findSpansByIndex","spans","searchState","testIndex","matchCase","wholeWord","escapedText","escapeSearchText","wordRegex","isForwardSelection","isMatchSpan","currentMatchIndex","keepEditorSelection","updateButtonStates","hasPrev","disableAll","disable","toggleNotFoundAlert","getDialogSpec","focusButtonIfRequired","doFind","findtext","matchcase","wholewords","inselection","replacetext","getPanelItems","maximized","borderless","showNoMatchesAlertBanner","updateSearchState","currentState","next$1","prev$1","replace$1","attachedToDom","prefixName","dispatchWith","getSystem","_len25","_key25","_len26","_key26","fireAttaching","attachSystemWith","guiSystem","inserter","getByDom","hoistEl","skinLoaded","createHoistElement","loadSkin","getParam","stylesheetUrl","skin","skinName","getSkinUrl","isSkinDisabled","moveSink","uiRoot","uiMothership","getRootComponent","hoistSink","restoreSink","dismissPopups$1","hostMap","editorMap","dismissPopups","broadcastOn","scrollHandler","stopped","_len27","_key27","later","getPopupButtons","addPopupButtonClickListeners","getHostsFromAncestors","hosts","editorSet","setupHoist","addPopupButtonClickListenersOnNodeChange","oldOpen","_len28","_key28","addWindowHandlers","_ref29","areNotificationsOpen","fullscreen","isFullScreen","hoistNotificationsOnFullScreen","removeHoist","_len29","_key29","_len30","_key30","flatten$1","children$3","child$3","child$2","getIsRoot","addPxSuffix","getSelectionStart","isInEditableContext","getAttrValue","validSectionList","rowdetail","columnGroups","fromRowsOrColGroups","columnGroup","cells$1","getParentSection","isValidSection","getLockedColumnsFromTable","lockedColStr","lockedCols","filterItems","warehouse","lockedColumns","rowData","maxRows","maxColumns","rowCount","colgroupRows","currentRow","rowCell","isLocked","extended","occupiedColumnPosition","occupiedRowPosition","columnPosition","newpos","colgroups","columnsGroup","columnIndex","colIndex","columnext","generateColumns","colgroup$1","colgroup","grid$1","Warehouse","rows$1","fromTable$1","getAt","findItem","getColumnAt","getTDTHOverallStyle","firstChildStyle","setAlign","fireTableModified","getCalculatedWidth","calcContentBoxSize","defaultCellBorderWidths","defaultCellBorderStyles","getPixelForcedWidth","getTableSizingMode","getTableBorderWidths","getTableBorderStyles","hasAdvancedCellTab","hasAdvancedRowTab","hasAdvancedTableTab","hasAppearanceOptions","hasTableGrid","shouldStyleWithCss","getCellClassList","getRowClassList","getTableClassList","getToolbar","getTableBackgroundColorMap","getTableBorderColorMap","isPixelsForced","isResponsiveForced","getDefaultStyles","defaultStyles","determineDefaultStyles","getDefaultAttributes","defaultAttributes","determineDefaultAttributes","isWithin","startCol","finishCol","startRow","finishRow","getAnyBox","finishCell","finishCoords","detailA","detailB","getBox$1","isRectangular","isRect","detailIsWithin","getWarehouse","unsafeOne","look","commonElement","sharedOne$1","oneAll","lookupTable","getEdges","firstSelectedSelector","lastSelectedSelector","_universe","sharedOne","retrieve","retrieve$1","sels","retrieveBox","sectionSelector","firstAncestor","lastAncestor","getBox","strSelected","strFirstSelected","strLastSelected","ephemera","selectedSelector","firstSelected","lastSelected","getSelectionFromSelector","initCell","cellName","getSelectionCellOrCaption","getSelectionCell","getCellsFromSelection","getRowsFromSelection","cellOpt","rowsOpt","verticalAlignValues","shorthandRegex","longformRegex","fromString$1","isHexString","onSetupToggle","formatValue","boundCallback","checkNode","buildListItems","buildMenuItems","applyTableCellStyle","filterNoneItem","generateMenuItemsCallback","buildColorMenu","colorList","fancytype","colors","allowCustomColors","changeRowHeader","newType","changeColumnHeader","getItems$2","getClassList$1","getAdvancedTab","dialogName","advTabItems","DomModifier","normal","setFormat","isHeaderCell","getRowHeaderType","isHeaderRow","isHeaderCells","findCommonCellType","headerCells","findCommonRowType","rowTypes","subType","getRowType$1","hasHeader","hasFooter","hasBody","findInWarehouse","extractCells","cell$1","onCells","allUnlocked","isUnlockedTableCell","onUnlockedMergable","onMergable","_warehouse","mergable","mergeable","onUnlockedUnmergable","onUnmergable","unmergable","_len32","_key32","_len33","_key33","getRowsType","opGetRowsType","lastSelectedCell","minRowRange","maxRowRange","selectedRows","extractAdvancedStyles","borderwidth","bordercolor","backgroundcolor","getSharedValues","baseData","comparisonData","comparisonValue","getAlignment","getHAlignment","getVAlignment","getRowType","allCells","cellA","cellB","applyStyleData$1","wasChanged","isSingleCell","cellElm","shouldOverrideCurrentValue","updateSimpleProps$1","colModifier","updateAdvancedProps$1","halign","setVAlign","valign","onSubmitCellForm","applyCellData","modifiedData","styleModified","structureModified","applyStructureData$1","celltype","structure","cellsData","extractDataFromCellElement","colElm","open$2","dialogTabPanel","dialogPanel","formChildren","getItems$1","applyStyleData","rowElm","updateSimpleProps","updateAdvancedProps","onSubmitRowForm","applyRowData","typeModified","applyStructureData","rowsData","extractDataFromRowElement","getItems","insertNewTable","rowColCountItems","appearanceItems","classListItem","styleTDTH","applyDataToElement","shouldApplyOnCell","shouldStyleWithCss$1","hasAdvancedTableTab$1","removePxSuffix","cellspacing","cellpadding","cellStyles","advData","onSubmitTableForm","applicableCellProperties","captionElm","captionModified","extractDataFromSettings","hasAdvTableTab","advStyle","getCellPaddingCellSpacing","spacing","extractDataFromTableElement","optBorderWidth","generalPanel","dialogBody","mceTableProps","mceTableRowProps","mceTableCellProps","mceInsertTableDialog","runAction","hasSpan","getSelectionTargets","changeHandlers","isCaption","isDisabledForSelection","getSelectionEnd","startCellOrCaption","oot","noMenu","forMenu","getExtractedDetails","locked","onAny","onFirst","onLast","unmergeable","resetTargets","_len31","_key31","setupHandler","onSetupWithToggle","isDisabledFromLocked","lockedDisable","onSetupTableHeaders","headerType","onSetupTableRowHeaders","onSetupTableColumnHeaders","onSetupTable","onSetupCellOrRow","onSetupColumn","onSetupPasteable","getClipboardData","onSetupPasteableColumn","onSetupMergeable","onSetupUnmergeable","onSetupTableWithCaption","tableTypeBase","tableTypeRow","tableTypeColumn","getRows","getColumns","onSetupEditable$1","selectionTargets","addMenuItems","addMenuIfRegistered","addToggleMenuIfRegistered","insertTableAction","numRows","hasRowMenuItems","hasColumnMenuItems","hasCellMenuItems","tableClassList","tableCellClassList","addButtons","addButtonIfRegistered","addToggleButtonIfRegistered","isEditableTable","toolbar","addToolbars","toggleVisualBlocks","enabledState","fireVisualBlocks","isEnabledByDefault","toggleActiveState","charMapToRegExp","regExp","regExpGlobal","charMapToSelector","nbspClass","wrapCharWithSpan","isWrappedNbsp","filterEditableDescendants","isChildEditable","nodeList","withSpans","findParentElm","applyVisualChars","fireVisualChars","toggleVisualChars","debouncedToggle","_len34","_key34","enabledStated","regExps","characterIndices","SETS$1","PUNCTUATION$1","SETS","OTHER","setsLength","isWordBoundary","nextType","nextNextType","prevType","WHITESPACE","PUNCTUATION","isProtocol","findUrlEnd","findWordEnd","getWordsWithIndices","includeWhitespace","includePunctuation","extractedChars","findWordsWithIndices","sChars","characterMap","startOfWord","endOfWord","endOfUrl","classify","getWords","getWords$1","removeZwsp$1","treeWalker","strLen","countWords","removeZwsp","countCharacters","countCharactersWithoutSpaces","createBodyCounter","createSelectionCounter","createBodyWordCounter","getWordCount","getCharacterCountWithoutSpaces","getCharacterCount","updateCount","fireWordCountUpdate","wordCount","charactersWithoutSpaces","debouncedUpdate","_len35","_key35","getCount","_len37","_key37","_len38","_key38","range$1","get$d","after$5","firstChild$1","elementnew","rowcells","getBody$1","ancestors$3","ancestors$4","getRaw$2","hasColspan","cellOrCol","hasRowspan","getCssValue","columns$1","_len39","_key39","api$2","getOuter$2","getRuntime$1","addCells","existingCells","newCells","setCells","addCell","mutateCell","getCell","getCellElement","cellLength","extractGridDetails","cloneRow","cloneCell","LOCKED_COL_ATTR","getLockedColumnsFromGrid","lockedArr","fromTable","justCells","justColumns","hasColumns","isValidCell","rowsArr","decide","getBlock","getFallback","deduce","extras","onDirection","isLtr","getOuter$1","getRuntime","rowInfo","colInfo","rtlEdge","ltrEdge","getLeftEdge","getRightEdge","getTop$1","getTopEdge","getBottomEdge","findPositions","getInnerEdge","getOuterEdge","cellOption","lastLine","optElements","unsupportedLength","decimalDigits","exponentPart","opt","unsignedDecimalLiteral","accepted","unitRaw","isUnit","rPercentageBasedSizeRegex","rPixelBasedSizeRegex","isCol$2","getPercentSize","outerGetter","innerGetter","relativeParent","setPixelWidth","setPercentageWidth","normalizePixelSize","getTotalHeight","getHeightValue","getRawWidth$1","getPercentageWidth","getPixelWidth$1","setGenericWidth","getPercentTableWidth","percentageBasedSizeRegex","isCol$1","getRawW","getRawH","backups","getWidthFrom","columnCells","justCols","colFilter","supportsColWidths","isValidColumn","bindFrom","getDeduced","deduced","getPixelWidths","tableSize","minCellWidth","getHeightFrom","widthLookup","noneSize","pixelWidth","getWidths","getCellDelta","singleColumnWidth","setElementWidth","adjustTableWidth","isRelative","percentageSize","getFloatWidth","getPercentageWidths","cellWidth","_delta","TableSize","chooseSize","makeCell","seenSelected","extract$1","replica","replicaHouse","replicaStats","findSelectedStats","totalColumns","minRow","minCol","maxRow","maxCol","endRow","endCol","statsStruct","unselectedCells","fillInGaps","totalRows","widthDelta","getTableWidthDelta","colWidths","allColsWidth","selectedColsWidth","emptyRows","transferableAttributes","createCell","createCol","createColgroup","createRow$1","copy$2","cloneChildren","pasteReplace","cellOperations","formatsToClone","cloneCss","copy$1","sourceDom","targetDom","cloneFormats","oldCell","newCell","firstText","formatSelector","clonedFormat","cloneAppropriateAttributes","validAttributes","colGap","gap","paste$1","getTableCloneElements","getTableHeaderType","getTableColumnResizingBehaviour","isPreserveTableColumnResizing","isResizeTableColumnResizing","isTablePercentagesForced","isTablePixelsForced","isTableResponsiveForced","hasTableResizeBars","shouldMergeContentOnPaste","getTableDefaultAttributes","determineDefaultTableAttributes","getTableDefaultStyles","determineDefaultTableStyles","tableUseColumnGroup","removeDataStyle","removeStyleAttribute","getPixelWidth","getPixelHeight","isInEditableContext$1","leftEdge","rightEdge","topEdge","bottomEdge","intercepts$1","parentCell","innerCell","isContainedBy","moveBy","deltaRow","deltaColumn","moveBy$1","intercepts","nestedIntercepts","firstTable","lastTable","optStartCell","optLastCell","DomUniverse","ps1","ps2","prune","pruned1","pruned2","firstpath","secondpath","universe$3","rootTable","boxes","finishTable","ancestorCells","lca","lcaTable","finishAncestorCells","startAncestorCells","shiftSelection","getLast","expandTo","identified","strSelectedSelector","strAttributeSelector","strFirstSelectedSelector","strLastSelectedSelector","attributeSelector","multiCellContext","extractSelected","serializeElements","getCellsFromFakeSelection","generators","pasteCells","scan$1","universe$2","halve","main","getGenericWidth","surround","clampDeltaHelper","minCellSize","clampNegativeDelta","clampDelta","resizeTable","calcRelativeDeltas","newThis","calcLeftEdgeDeltas","calcFixedDeltas","clampedDelta","resizer","clampTableDelta","calcMiddleDeltas","_prev","calcRightEdgeDeltas","calcRedestributedWidths","totalWidth","pixelDelta","newSizes","preserveTable","isLastColumn","maxDelta","_minCellSize","_totalWidth","_pixelDelta","_isRelative","getGridSize","transformCell","substitution","transformRow","fixedCell","mutate$1","sectionCells","TableSection","getTableSectionType","rowType","findTableRowHeaderType","setIfNot","render$1","syncRows","gridSection","syncColGroup","colGroup","renderSection","sectionName","generateSection","newSection","sectionElems","renderOrRemoveSection","removeSection","headSection","bodySection","footSection","columnGroupsSection","findDiff","subgrid","getRow","isColRow","getColumn","toDetails","updateSeen","detailnew","rowdetailnew","toGrid","colgroupCols","rowCells","rowDetail","toDetailList","postAction","genWrappers","behaviours","tableSection","fromWarehouse","tableSizing","sizing","resizing","onPasteByEditor","onUnlockedCells","unmerge","currentCell","isToReplace","splitRows","uniqueCells","measureWidth","gridA","gridB","rowDelta","colDelta","measureHeight","generateElements","generator","rowFill","exampleRow","colFill","newChildren","tailor","fillCols","fillRows","gridWidth","isLastColLocked","modifiedCols","newLockedColumns","isSpanning","matching","getLockedColumnsWithinBounds","startAddress","colNum","validStartAddress","getValidStartAddress","currentStartAddress","gridColLength","adjustedRowAddress","possibleColAddresses","validColAddress","gridBRows","lockedColumnsWithinBounds","measure","rowRemainder","colRemainder","colRequired","rowRequired","fittedGrid","newLockedColumnsWithinBounds","mergeTables","lockedColumnObj","skippedCol","gridBColIndex","newCellElm","insertCols","splitCols","prevCell","substitute","fittedNewGrid","secondDelta","fittedOldGrid","insertRows","oldCols","oldRows","newLocked","secondDiff","fittedGridB","lockedColFill","newChild","insertRowAt","example","newRow","insertColumnAt","withinSpan","getElementFor","isDuplicatedCell","notInStartRow","notInStartColumn","determineScope","applyScope","isInHeader","getScope","replaceIn","replacer","genScope","shouldReplace","mapCells","setOptions","getColumnCells","replaceColumns","rowHeaders","shouldReplaceCell","columnReplacePredicate","targetColumn","_colIndex","scopeGenerator","columnScopeGenerator","replaceRows","targetRow","getRowCells","columnHeaders","_cell","newGrid","rowReplacerPredicate","_rowIndex","rowScopeGenerator","replaceCells","targetCells","_len40","_key40","_len41","_key41","adt$6","ColumnContext","determine","neighbours","onLeft","onMiddle","onRight","measures","recalculateHeightForCells","heights","widths","recalculateWidthForColumns","recalculateWidthForCells","recalculateAndApply","adjustWidth","clampedStep","deltas","newWidths","getPixelHeights","newHeights","newCellSizes","newRowSizes","matchRowHeight","uniqueColumns","uniqueCheck","currentDetail","isCol","isColgroup","isRow$1","elementToData","getScopeAttribute","Generators","toData","nuCell","recent","getOrInit","makeNew","replaceOrInit","getScopeProperty","stringAttributes","baseScope","blockList","universe$1","isList$1","isEmptyTag$1","markCell","rightSiblingIsBlock","rightSibling","markContent","advancedBr","outcome","elementFromGrid","findEditableCursorPosition","uniqueRows","rowCompilation","makeRowsSection","initialGrid","rowIndexes","opMakeRowsHeader","opMakeRowsBody","opMakeRowsFooter","gridifyRows","pasteDetails","fromPastedRows","adjustWidthTo","_table","adjustAndRedistributeWidths","adjustAndRedistributeWidths$1","resizeBehaviour","tablePixelWidth","firstColumnIsLocked","lastColumnIsLocked","getColumnsWidth","uniqueCols","insertColumnsExtractor","pasteColumnsExtractor","headerCellGenerator","bodyCellGenerator","insertRowsBefore","opInsertRowsBefore","insertRowsAfter","opInsertRowsAfter","newG","insertColumnsBefore","opInsertColumnsBefore","extractDetail","insertColumnsAfter","opInsertColumnsAfter","eraseColumns","opEraseColumns","_comparator","_genWrappers","deleteColumnsAt","maxColIndex","eraseColumnsExtractor","eraseRows","opEraseRows","deleteRowsAt","maxRowIndex","makeColumnsHeader","opMakeColumnsHeader","columnIndexes","unmakeColumnsHeader","opUnmakeColumnsHeader","makeRowsHeader","makeRowsBody","makeRowsFooter","makeCellsHeader","opMakeCellsHeader","unmakeCellsHeader","opUnmakeCellsHeader","mergeCells","opMergeCells","merge$2","unmergeCells","opUnmergeCells","unmerge$1","opPasteCells","gridify","onPaste","pasteColsBefore","opPasteColsBefore","mergedGrid","pasteColsAfter","opPasteColsAfter","pasteRowsBefore","opPasteRowsBefore","pasteRowsAfter","opPasteRowsAfter","getColumnsType","opGetColumnsType","minColRange","maxColRange","selectedColumnCells","getCellsType","opGetCellsType","fireNewRow","fireNewCell","styleAndStructureModified","TableActions","resizeHandler","cellSelectionHandler","isTableBody","colMutationOp","setSelectionFromAction","noEvents","deleteRow","deleteColumn","getTableRowType","getTableCellType","getTableColType","constrainSpan","currentColspan","isColInRange","copyCols","fakeColGroups","generateColGroup","colsToCopy","copiedCols","clonedCol","fakeColgroup","fakeRows","generateRows","cellsToCopy","copiedCells","clonedCell","fakeTR","copyRows","slicedGrid","filteredGrid","slicedDetails","adt$5","pixels","validateFor","rawAmount","Size","redistributeValues","newWidthType","redistributeToPx","newTotalWidth","_pc","redistributeToPercent","redistribute$1","floats","redistributeEmpty","roundDown","floored","getUnit","redistribute","optWidth","optHeight","widthUnit","oldWidths","getRawWidths","nuWidths","redistributeToColumns","redistributeToW","hUnit","totalHeight","oldHeights","getRawHeights","redistributeToH","isPercentSizing","isPixelSizing","isNoneSizing","cleanupLegacyAttributes","convertToPercentSize","convertToPixelSize","getPixelTableWidth","convertToNoneSize","rowElements","DefaultRenderOptions","colGroups","tableHeaderCell","tableCell","createGroupRow","createRows","createRow","placeCaretInCell","colHeaders","renderOpts","rowHeadersGoInThead","actualRowHeaders","theadRows","tbodyRows","isPercentage","fireEvents","selectFirstCellInTable","fakeClipboardItem","setRows","clearRows","setColumns","columnsOpt","clearColumns","getSelectionStartCellOrCaption","getTableFromCell","performActionOnSelection","getSelectionStartCell","postExecute","actOnSelection","copyRowSelection","copyColSelection","pasteOnSelection","clonedRows","pasteRows","actOnType","get$c","mceTableSplitCells","mceTableMergeCells","mceTableInsertRowBefore","mceTableInsertRowAfter","mceTableInsertColBefore","mceTableInsertColAfter","mceTableDeleteCol","mceTableDeleteRow","mceTableCutCol","mceTableCutRow","mceTableCopyCol","mceTableCopyRow","mceTablePasteColBefore","mceTablePasteColAfter","mceTablePasteRowBefore","mceTablePasteRowAfter","mceTableDelete","eraseTable","cellOrCaption","mceTableCellToggleClass","toggleTableCellClass","allHaveClass","formatterAction","mceTableToggleClass","toggleTableClass","mceTableToggleCaption","appendAt","mceTableSizingMode","setSizingMode","mceTableCellType","mceTableColType","mceTableRowType","checkInput","headerRows","headerColumns","insertTable","getFormatName","validArgs","adt$4","cata$1","Response","selectNodeContentsUsing","toRect","asLtrRange","Situs","convertToRange","makeSitus","selectRange","cellSel","backtrack","_direction","sidestep","advance","successors","succ","Walkers","left$1","right$1","hone","isLeaf","seekLeft$1","seekRight$1","failedUp","failedDown","isRow","BeforeAfter","verify","beforeOffset","afterOffset","afterCell","beforeCell","beforeBounds","afterBounds","_sharedRow","onSuccess","onFailedUp","onFailedDown","gatherer","cand","gather","handleParent","adjacent","inParent","indexInParent","tryBr","handleBr","tgt","xDelta","yDelta","toCaret","getElemBox","getBoxAt","getPartialBox","getRangedRect","getEntireBox","retry","inOutsideBlock","isOutside","downMovement","adjuster","adjustDown","guessBox","lowerCaret","adjustTil","isAtTable","adjustForTable","situsFromPoint","newCaret","moved","adjusted","checkScroll","getInnerHeight","Retries","tryUp","adjustUp","higherCaret","tryDown","getJumpSize","findSpot","brNeighbour","fromSitus","analysis","_message","tryCursor","situs","tryAgain","tryAt","inSameTable","simulate","precheck","firstUpCheck","seekLeft","lastOffset","lastDownCheck","seekRight","findCell","keycode","isUp","isDown","isNavigation","isBackward","makeRange","same","getNativeSelection","doSetNativeRange","doSetRange","setRangeFromRelative","setLegacyRtlRange","setExact","setRelative","firstRng","doGetExact","setToElement","getExact","getFirstRect","getFirstRect$1","WindowBridge","exactAdt","clearSelection","collapseSelection","setRelativeSelection","selectContents","getScrollY","MouseSelection","clearstate","clearBeforeUpdate","singleCell","isNonEditableCell","isCellClosestContentEditable","mousedown","mouseover","mouseup","isEditableNode","isEditableSelection","clearToNavigate","keydown","realEvent","update$1","attempts","newSels","keyup","sync","SelectionAnnotation","byAttr","onSelection","onClear","removeSelectionAttributes","addSelectionAttribute","getOtherCells","upOrLeftCells","getUpOrLeftCells","upGrid","upDetails","slicedCells","downOrRightCells","getDownOrRightCells","downGrid","downDetails","fromRawEvent$1","_len36","_key36","hasInternalTarget","TableCellSelectionHandler","cellSelection","Selections","lazyRoot","otherCells","fireTableSelectionChange","fireTableSelectionClear","mouseHandlers","keyHandlers","external$1","external","handleResponse","isLeftMouse","doubleTap","getDoubleTap","lastTarget","lastTimeStamp","touchEnd","lTS","wrappedEvent","syncSelection","onMultiple","onSingle","_len42","_key42","typeDefs","baseWith","handleUnsupported","validateStrArr","checkDupes","reqMessage","invalidKeys","invalidTypeMessage","incorrect","handleExact","unsuppMessage","exactly","DragMode","DragSink","DragApi","InDrag","onEvent","Movement","noDragState","NoDrag","inDragState","dragState","isOn","sink","throttledDrop","_len43","_key43","runIfActive","_len44","_key44","forceDrop","delayDrop","dashNamespace","MouseDrag","dragApi","blocker","layerClass","Blocker","mdown","mup","mmove","mout","BarMutation","Mutation","resizeBar","resizeRowBar","resizeColBar","wire","drawBar","cpOption","bar","refreshCol","colPositions","tableHeight","colBar","refreshRow","rowPositions","tableWidth","rowBar","refreshGrid","warhouse","resizableRowBars","resizableRows","resizableRowPositions","_pos","barIndex","resizableColBars","resizableColumns","resizableCols","colElmOpt","resizableColPositions","bars","resizeBarDragging","BarManager","hoverTable","getResizer","_dataRow","_dataCol","currentCol","startAdjust","isColBar","destroy$1","tbl","hideBars","showBars","TableResize","lazySizing","hdirection","vdirection","manager","beforeResize","afterResize","_event","refreshBars","ResizeWire","chrome","createContainer","barResizerPrefix","TableResizeHandler","tableResize","resizeWire","startRawW","lazyResizingBehaviour","afterCornerResize","isRightEdgeResize","getNumColumns","isPercentage$1","percentW","isPixel","computedWidth","syncPixels","rawWire","objectResizing","hasTableObjectResizing","rawTable","getRawWidth","setupTable","registerQueryCommands","lookupOnSelection","DomModel","SN_TRANSLATE","TRANSLATIONS","TRANSLATIONS_PREFIX","TRANSLATIONS_STORE","STATIC_TRANSLATIONS","DEFAULT_TRANSLATIONS","__TRANSLATIONS_PREFIX_ENABLED__","__TRANSLATIONS_PREFIX__","getPrefix","codeKey","appendTranslations","USER_PREFS","USER_PREF_CONTEXTS_MAP","userPrefName","SYS_PROPS","SYS_PROPS_CONTEXTS_MAP","getSysPropContext","sysPropsName","sysPropsContext","a11yPreferences","GLIDE_POLARIS_ACCESSIBILITY_PRESENCE_ICON","GLIDE_POLARIS_ACCESSIBILITY_TRUNCATION_TAB_STOP","GLIDE_UI_ACCESSIBILITY","GLIDE_UI_REPORT_ACCESSIBILITY_SCREEN_READER_TABLE","GLIDE_POLARIS_ANIMATION_DISABLED","GLIDE_UI_KEYBOARD_SHORTCUTS_ENABLED","GLIDE_UI_ACCESSIBILITY_ACCESSIBLE_DATEFORMAT","GLIDE_UI_REPORT_ACCESSIBILITY_PATTERSN","GLIDE_UI_ACCESSIBILITY_SHOW_TRUNCATED_TEXT","GLIDE_UI_ACCESSIBILITY_SHOW_HIDDEN_CONTROLS","GLIDE_UI_ACCESSIBILITY_ACCESSIBLE_TOOLTIPS","GLIDE_UI_ACCESSIBILITY_FOCUS_FIRST_FIELD","GLIDE_UI_ACCESSIBILITY_SLUSHBUCKET_RECORD_PREVIEW_TOOLTIPS","uxGlobalsClientCacheBuster","createPreSourceBehavior","dsName","storeSeed","getBehaviorProp","defVal","preUserData","preWsConfigSysId","preUserPrefs","preferences","nargs","byteToHex","buf","bth","rnds8","rnds","bytesToUuid","___CSS_LOADER_EXPORT___","webpackContext","webpackContextResolve","importRes","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_devsnc_library_uxf_index_jsdbx_d40e2bbc__","__DO_NOT_USE_THIS_WILL_BE_REMOVED__createComponentLoaderEffect","__DO_NOT_USE_THIS_WILL_BE_REMOVED__createUxfContractBehavior","getComponentsByTagNames","uxfViewportBehavior","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_config_index_jsdbx_b8da8320__","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_core_index_jsdbx_65e0859f__","modifierTypes","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_amb_index_jsdbx_c4604411__","createAmbPublishEffect","createAmbSubscriptionEffect","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_graphql_index_jsdbx_6f4bbecb__","createGraphQLEffect","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_effect_http_index_jsdbx_efdee9e7__","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_metrics_index_jsdbx_a3ad35c5__","getInteractionId","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_snabbdom_index_jsdbx_9af105b3__","createSlot","isNativeReflectConstruct","toPropertyKey","_defineProperties","_isNativeReflectConstruct","assertThisInitialized","_setPrototypeOf","toPrimitive","isNativeFunction","Wrapper","DEFAULT_LEVEL","markTypes","usage","nowUiFrameworkMetrics","arrayLastIndexOf","arraySplice","objectHasOwnProperty","cleanArray","CUSTOM_ELEMENT","NODE_TYPE","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","SAFE_FOR_XML","_createNodeIterator","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","_executeHooks","_isBasicCustomElement","childClone","__removalCount","expr","__webpack_module_cache__","leafPrototypes","inProgress","dataWebpackPrefix","moduleId","cachedModule","__webpack_modules__","amdO","definition","chunkId","needAttach","onScriptComplete","doneFns","nmd","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","elementListeners","keyBindings","ROOT_VALUE","SHOW_LESS","SELECTOR_TYPE","SINGLE","MULTIPLE_AND","MULTIPLE_OR","SINGLE_SELECT","MULTIPLE_SELECT","SELECTOR_STATE","SELECTED","PARTIAL","UNSELECTED","TOGGLE_ACTION","DEFAULT_OPTION_LIMIT","SPACE_KEY","ENTER_KEY","DEFAULT_OVERFLOW_LIMIT","SECTION_FOLD_TOGGLED","SELECTION_TOGGLED","SINGLE_SELECT_TOGGLED","LINK_CLICKED","SHOW_MORE_CLICKED","NOW_CHECKBOX_CHECKED_SET","SELECTIONS_UPDATED","TOGGLE_FOCUS_ON_SELECTED_ITEM","_foundDescendantWithSelectionState","selectMetadata","selectorState","originalItem","childId","_unselectSiblings","parentId","_refreshSelectedLeaves","itemId","noChildren","selectedLeaves","currentSelectedLeaves","_refreshSelectedLeavesInRoot","updateSingleSelectState","toggledItemMetadata","rootMetadata","_updateDescendantSelectState","_refreshAncestors","hasUnselectedChildren","hasSelectedChildren","updateSelectStates","toggleExpand","_getItemType","_getRefToChildren","_getChildrenValues","refToChildren","_getIsExpanded","isInitial","build","_mergeMetadata","builtData","selectedItem","builtItem","_getSelectedFacetFilters","leafId","_applySelections","expectedSelectedItems","onLoad","updatedSelectMetadata","itemIds","remainingIds","_buildDefaultRootItem","_buildResolvedSelectMetadata","rootItem","mergedMetadata","_buildTransformedState","optionLimit","itemsWithOptionLimit","resolvedSelectMetadata","componentBootstrappedEffect","componentPropertyChangedEffect","transformedState","showFacetsOverflow","nowCheckboxCheckedEffect","viaKeyboard","linkClickedEffect","appendedPayload","selectionToggledEffect","clonedSelectMetadata","selectionUpdatePayload","selectedFacetFilters","toggledValue","singleSelectToggledEffect","sectionFoldToggledEffect","showMoreClickedEffect","COLLAPSE_TITLE","EXPAND_TITLE","TreeExpandButton","ariaTitle","Link","clickHandler","_getCheckedState","Checkbox","showCount","wasKeyboardTriggered","checkboxLabel","TreeItem","ariaExpanded","multiSelect","singleSelect","Item","MAX_LEVEL","MAX_CHILDREN_LENGTH","_getTreeClassName","isTopLevel","Tree","childrenClassName","childKey","_root$children","facetsOverflow","showOverflowButton","facetsOverflowLabel","showMoreButton","optionsToShow","ONE_MINUTE","getUserInfo","userSessionId","getUserSessionId","userLanguage","getUserLanguage","browserInfo","getUserBrowserInfo","latitude","longitude","session_id","fetchUserLocationAsync","geolocation","getCurrentPosition","enableHighAccuracy","API_URL","queueLimit","defaultTimeout","eventQueue","pendingCalls","eventsRequiringPrecedingCallCompletion","postAllEvents","postEvent","processCallCompletion","queuedEvent","stillWaiting","precedingCalls","precedingCall","isRetry","eventAction","eventBody","requirePrecedingEventCompletion","trackAsync","xmlhttp","queryParams","setRequestHeader","g_ck","DONE","pushEvent","GlideSignals","_location","INFO","WARN","ERROR","postContextProperty","propertyVal","sys_context_property_name","sys_context_property_value","trackEvent","eventModel","MODE","DRILL","TREE","MULTIPLE_SELECT_HYPHEN","SINGLE_SELECT_HYPHEN","DEFAULT_LABEL","SIZE","APPLIED_FACETS_TRUNCATION","APPLIED_FACET_LIST","EXPAND","COLLAPSE","USER_FACET_CONFIG_SYS_ID","CAT_ITEM_CONFIG_SYS_ID","CLEAR_ALL_LABEL","CLEAR_ALL_WCAG_LABEL","CLEAR_LABEL","SHOW_FEWER_LABEL","COLLAPSE_LABEL","EXPAND_LABEL","FACET_IDENTIFIER","HIDE_FILTERS_LABEL","INFO_EVENT","SEISMIC_OR_MOBILE_APPLICATION","SEARCH_REFINED_EVENT","UP_ARROW_KEY","DOWN_ARROW_KEY","FOCUS_TARGET","PILL","ACCORDION","TRANSLATION_QUERY","RANGE_FACET_REGEX","SINGLE_SELECT_ALL","LABEL","ID","ACCORDION_SUBLABEL_AND_FACET","ACCORDION_SUBLABEL_OR_FACET","STACKED_PILL_OR_FACET_LABEL","STACKED_PILL_AND_FACET_LABEL","STACKED_TYPE","FACET_TYPE","OR","AND","SOURCE_FACET_TYPE","SOURCE_FACET_LABEL","SOURCE_FACET_CONFIG_ID","SOURCE_FACET_OPTION_LIMIT","_getValues","_getSelectedFilters","selectedOptions","appliedFacetFilters","facetFilter","_buildFacetMetadata","facets","facetsMetadata","updatedFacetsMetadata","firstExpandableId","facet","_facet$data","facetConfigSysId","isSortBy","storedFacet","_getStorageKey","_mergeFacets","facetType","_buildState","_anyItemsSelected","selectionsFromMetadata","_facetsMetadata$categ","appliedFilter","appliedFiltersReturned","_selectedItemsLength","_facetsMetadata$categ2","_getLabelsFromFilters","facetFilters","applied","sourceFacet","sourceOption","_getLabelFromRangeFilter","rangeFilterLabel","storageKey","_getRangeFacetStorageKey","cachedLabel","_facet$data2","facetOptions","_getAppliedFacetLabelsByType","_getFacetFiltersBasedOnType","_getFacetFilterIndex","appliedFilters","pillLabel","facetValue","_getRangeFacetFilterIndex","rangeFilter","_getTruncatedLabels","filterLabelsApplied","truncateAppliedAndFacets","truncateAppliedOrFacets","filterObjects","_getAccordionFocusTarget","keyPress","moveFocusTo","accordionHeaders","focusedElement","_replaceFacetLabels","translatedLabels","_checkForRangeFacets","_facet$data3","_markRangeFacets","_facet$data4","isRangeFacet","_combineSelectedSourcesAndFacets","searchSources","selectedSearchSources","availableSourceIds","sysId","combinedSelectedOptions","selectedFilters","sourceId","_focusWithRetry","getFocusElement","onFocusComplete","tryFocus","savedFacet","newFacet","newOption","savedOption","_addSourceFacet","facetsToDisplay","existingIndex","Facet","facetMetadata","hadSelection","facetForRender","_facet","_savedFacet$data","currentOptions","savedOptions","savedValues","isSourceFacet","Divider","CLEAR_FOCUS_TARGET","_getIcon","focusExpandButton","ExpandButton","shouldFocus","subLabel","ALL_CLEARED","ACCORDION_CLEARED","FACET_SELECTIONS_UPDATED_INTERNAL","APPLIED_FACETS_EXPANDED_COLLAPSED","PILL_DISMISSED","SORT_FILTER_SELECTED_INTERNAL","HIDE_DESKTOP_FACET_PANEL","LABEL_TRANSLATION_STARTED","REQUEST_TRANSLATED_LABELS","TRANSLATION_FETCH_STARTED","TRANSLATION_FETCH_SUCCEEDED","TRANSLATION_FETCH_FAILED","FACET_SELECTIONS_UPDATED","SORT_FILTER_SELECTED","DONE_BUTTON_CLICKED","TOGGLE_FACET_PANEL_VISIBILITY","Accordion","numSelectedItems","clearedViaKeyboard","Panel","showEndingDivider","isGlobal","_avatarProps$userName","a11yLabel","renderDismissButton","canDismiss","defaultTooltipText","tooltipText","updatedAvatarProps","showIdentifier","currentTooltip","reversed","truncated","toExtension","normalizeValues","willWrap","statusOrColor","_renderValueDelimiter","valueCount","_renderValueWithPrevious","oldValue","_renderJSXValueWithPrevious","VALUE_TOKEN","PREVIOUS_TOKEN","TRANSLATION_TEMPLATE","indexOfValueToken","indexOfPreviousToken","secondIndex","firstToken","secondToken","renderString","renderTextLink","renderHighlightedValue","renderJSX","renderHTML","renderValue","valueSchema","itemMinWidth","alignClasses","sizeClasses","customColumnRepeat","labelWidth","focusFirstPill","_elm$shadowRoot","_dismissButton$shadow","dismissButton","AppliedFacets","enableLabelTranslation","shouldFocusPill","applicableSingleSelectLabels","applicableMultiSelectLabels","truncateANDLabels","applicableORLabels","orPills","appendPayload","dismissedViaKeyboard","isFirstPill","focusHook","paddingRight","andPills","stackedORPills","stackedANDPills","andLength","showORLength","andORShowLength","showMoreAndLabel","showMoreORLabel","showMoreLabel","truncateAppliedFacets","stackedPills","showFewerOrMore","Loader","PanelList","_facetsMetadata$facet","_facetsMetadata$facet2","isExpanded","isFirstAccordion","Header","facetPanelIsHidden","focusHideFacetsButton","showHideFiltersButton","anyItemsSelected","hideButton","_elm$shadowRoot$query","focusShowFacetsButton","clearButton","_isEmptyFacet","facetObject","searchFromChat","clearFocusTargetEffect","moveAccordionFocus","INITIAL_DRILL_HEADER","DONE_LABEL","BACK_LABEL","RELEVANCY_SORT_ID","SORT_BY_LABEL","RELEVANCY_SORT_LABEL","RELEVANCY_SORT_FACET","_filteredFacets","includeSources","_sourceFacet$data","sourceIds","_allSelectedFilters","sourceFilters","pendingFocusTarget","newState","selectionsUpdatedEffect","updatedFacet","selectedFilterValues","unselected","currentFacetSelection","isSource","updatedSelections","selectedFilter","toggleFocusOnSelectedItemEffect","allFacetsClearedEffect","accordionClearedEffect","optionsToBeRetained","appliedPillDismissedEffect","rangeFacetPresentNotDismissed","regularIndex","rangeFacetFilters","expandCollapseAppliedFacetsEffect","baseActionHandlers","hideFacetPanel","keyBindingBehavior","NAVIGATED_TO_CHILD_PANEL","NAVIGATED_TO_PARENT_PANEL","DONE_BUTTON_CLICKED_INTERNAL","Filters","navigateToChildPanel","drillHeader","drillField","RootHeader","_facetsMetadata$SORT_","CategoryHeader","_showSortByFacet","sortFacets","_sortFacets$data","selectedSortFacet","facetsMetadataWithSortBy","displayFacets","_sortFacets$data2","navigatedToParentPanelEffect","navigatedToChildPanelEffect","sortFilters","sortByFacet","sortFacetOptions","selectedSortFilters","signalTracker","applicationType","facetSelectionsUpdatedEffect","searchContextConfigId","queryTerm","sortFilterSelectedEffect","mobileDoneButtonClickedEffect","labelTranslationStartedEffect","flat","fetchTranslationsEffect","variableList","startActionType","translationFetchSucceededEffect","getMessages","GlideDomain_Query","translationFetchFailedEffect","hostToMatchers","removeMatchListeners","matchers","removeListener","createMatchListeners","queries","updateMatchResults","matchResults","getOnboardingContent","assistantName","getOnboardingLabel","SEARCH_EXECUTED","NAVIGATION_EXECUTED","CONTEXT_CHANGED","UTTERANCE_CLICKED","SUGGESTIONS_RECEIVED","SUGGESTIONS_FAILED","SEARCH_CLEARED","SEARCH_EXECUTED_INTERNAL","NAVIGATION_EXECUTED_INTERNAL","CONTEXT_CHANGED_INTERNAL","MOBILE_CANCEL_BUTTON_CLICKED","NOW_BUTTON_BARE_CLICKED","NOW_BUTTON_ICONIC_CLICKED","NOW_TEXT_LINK_CLICKED","HANDLE_TOOLTIP_ON_TRUNCATED_TEXT","SEARCH_CLEARED_INTERNAL","INPUT_CHANGED","INPUT_FOCUSED_IN","INPUT_FOCUSED_OUT","SHOW_POPOVER","HIDE_POPOVER","CONTEXT_DROPDOWN_FOCUSED","CLEAR_SEARCH_TERM","ARROW_UP_PRESSED","ARROW_DOWN_PRESSED","ARROW_LEFT_PRESSED","ARROW_RIGHT_PRESSED","MOUSE_OVERED","CLEAR_SEARCH_SELECTED","CLEAR_SEARCH_MUTATION","CLEAR_SEARCH_MUTATION_SUCCEEDED","CLEAR_SEARCH_MUTATION_FAILED","ITEM_SELECTED","DEBOUNCED_SUGGESTION_FETCH","SUGGESTION_FETCH","SUGGESTION_FETCH_STARTED","SUGGESTION_FETCH_SUCCEEDED","SUGGESTION_FETCH_FAILED","EXACT_MATCH_FETCH","EXACT_MATCH_STARTED","EXACT_MATCH_SUCCEEDED","EXACT_MATCH_FAILED","QUEUE_EXACT_MATCH_FETCH","FIT_RESIZE","CONTEXT_DROPDOWN_CLICKED","CONTEXT_ITEM_SELECTED","SHOW_SEARCH_PANEL","HIDE_SEARCH_PANEL","SET_REF","SET_INPUT_REF","FETCH_EXACT_MATCH_CONFIG","SET_ENABLE_EXACT_MATCH_PROPERTY","SWITCH_TO_DEFAULT_ENABLE_EXACT_MATCH_PROPERTY","DISMISS_ONBOARDING_POPOVER","SHOW_HIDE_ONBOARDING_POPOVER","USER_PREFERENCES_SET","USER_PREFERENCES_SET_STARTED","USER_PREFERENCES_SET_SUCCEEDED","USER_PREFERENCES_SET_FAILED","USER_PREFERENCES_FETCH","USER_PREFERENCES_FETCH_STARTED","USER_PREFERENCES_FETCH_SUCCEEDED","USER_PREFERENCES_FETCH_FAILED","BEHAVIOR_TRUNCATION_EVALUATE","POPOVER_ITEM_TYPE","QUERY_CONTENT","USER_HISTORY_AND_CLICK","EXACT_MATCH","USER_HISTORY","PERSONAL_CLICK","AUTOCOMPLETE","POPULAR_QUERY","NAVIGATION","SECTION_HEADER","USER_SEARCH_TERM","FOOTER","NOW_ASSIST_SUGGESTED_UTTERANCE","RAG_POPULAR_QUERY","EVENT_TYPE","SEARCH_FROM_INPUT","SEARCH_FROM_POPOVER","UPDATE_ARIA_LIVE_TEXT_SOURCES","CLEAR_RECENT_SEARCH_ITEM","RESULT_COUNT","MAX_QUERY_LENGTH","PLACEMENT","BODY","HEADER","FULLPAGE_HEADER","FULLPAGE_BODY","DYNAMIC_LANDING","DYNAMIC_LANDING_HEADER","AUTOCOMPLETE_QUERY_EVENT","INPUT_DEBOUNCE_DELAY","DEBOUNCE_MODIFIER","SUGGESTION_QUERY","CLEAR_SEARCH_FROM_HISTORY_MUTATION_QUERY","X_IS_LOGGED_IN_HEADER","PERSONAL_CLICK_FIELDS","TABLE","SYSID","ACTION_DATA","EXACT_MATCH_FIELDS","RECORD_URL","QUERY_CONTENT_FIELDS","PARENT_TABLE","PARENT_RECORD_SYSID","RECORD_CLASS_NAME","SR_LABELS","CLEARED_RECENT_SEARCH_ITEM","EXACT_MATCH_FOUND","NAVIGATION_INSTRUCTIONS","LABELS","CLEAR_SEARCH","SUBMIT_SEARCH","CLEAR_RECENT_SEARCH","CANCEL_SEARCH","LOADING_LABEL","START_CHAT","DISMISS_POPOVER","LEARN_MORE","KEYCODE","SPACE","KEYBOARD_NAVIGATION","RECENT_SEARCH_SECTION_HEADER","SEARCH_CONTEXT_TRIGGER_LABEL","PANEL_DROPDOWN","DROPDOWN_POSITION","CONTEXT_SWITCH_TOP_OFFSET","WINDOW_SIZE","EXPANDED","COLLAPSED","MOBILE","GLOBAL_SEARCH_MOBILE_CONTEXT_CONSTRAIN_WIDTH","GLOBAL_SEARCH_DROPDOWN_WIDTH","GLOBAL_RECENT_SEARCH_SECTION_HEADER","GLOBAL_SEARCH_WIDTH","DEFAULT_PLACEHODLER","GLOBAL_SEARCH_MOBILE_WIDTH","SEARCH_CONTEXTS","experienceName","searchDataConfigId","searchViewConfigId","SELECTED_SEARCH_CONTEXT","DEFAULT_EXACT_MATCH_REGEX","ICON_TYPE","EXACT_MATCH_REGEX_SYS_PROPERTY","EXACT_MATCH_SECTION_HEADER","SYS_ATTACHMENT","ATTACHMENT_LABEL","EXACT_MATCH_CONFIG_QUERY","DATABROKER_URI_QUERY","EXACT_MATCH_QUERY_PATH","AI_ASSISTANT","USER_PREF_DISMISSED_PROPERTY","NASS_INPUT_PLACEHOLDER","NASS_GLOBAL_INPUT_PLACEHOLDER","AI_SPARKLE_ICON","VA_HANDOFF_CLICK","ASK_OTTO","AI_SPARKLE_ICON_PATHS","ACTIVE_INPUT_PLACEHOLDER_MAX_LENGTH","aiAssistant","mediaQueryBehavior","getColumnByFieldName","getAttachmentTableDetails","navItem","actionDataCol","parentTableData","parentTable","parentSysId","navData","splitHighlighting","highlightFragments","rawText","parseNavItem","newTitle","tableValue","recordUrl","recordClassName","_recentSearchSection","displayValue","getRowColIndex","activeRowIndex","activeColumnIndex","recentSearchSection","isExactMatchPresent","exactMatch","hasExactMatch","canTermMatchExactly","criterionRegex","exactMatchEnabled","hasExactMatchReadingFinished","termCriterionRegex","isFetching","generateExactMatchPayload","definitionSysId","inputValues","generateSaveUserPreferencePayload","handleUserPrefSetEffect","dataParam","handleUserPrefSetStartedEffect","settingOnboardingPref","handleUserPrefSetSucceededEffect","handleUserPrefSetFailedEffect","errorFetchingOnboardingPref","replaceWhiteSpace","upperFirstHighlighting","containsHighlightTags","stripHighlightTags","highlightMatch","matchStartIndex","matchEndIndex","regularLeftText","regularRightText","leftTextVNode","middleTextVNode","rightTextVNode","_getRelativeClickIndex","itemType","_getValue","_setInputFocus","_setInputBlur","_enterKeyPressedInInput","_isViewAllLinkClicked","_isPopoverTermEvent","_isUtterance","_isDestinationSearchPopoverItem","_ev$relatedTarget","_isViewAllLinkEvent","_isDropDownEvent","_isClearButtonEvent","nowButtonClickedEffect","clearSearchSelectedEffect","updateAriaLiveTextSource","ariaLiveBusy","ariaLiveText","inputFocusedInEffect","suggestionSearchTermQuery","fetchExactMatchConfigMetdata","disableAutocomplete","searchContexts","additionalContext","inputHasFocus","isInputActive","enableExactMatch","fetching","inputFocusedOutEffect","windowSize","isEnterKeyPressedInInput","exactMatchData","relatedTargetClassName","_navigationItemClicked","selectedSearchContext","updatedActionPayloadData","selectedQuery","queryType","clickIndex","showPopover","itemSelectedEffect","exactMatchFound","exactMatchFetching","isViewAllClicked","isInputEvent","_item$columns$","utteranceSelectEffect","navigating","queueExactMatchEvent","_setPopoverSuggestionFocus","suggestions","domIndex","sectionHeaderCount","focusedOption","viewAllFocus","selectorQuery","focusedColumn","arrowDownEffect","arrowUpEffect","arrowLeftEffect","arrowRightEffect","mouseOverEffect","showPopoverEffect","hidePopoverEffect","contextDropdownFocusedEffect","inputChangeEffect","exactMatchRegex","exactMatchSysProperty","exactMatchCriterionRegex","_isPopoverButtonEvent","enterKeyHandler","isPopoverTermEvent","_getAllFocusablePopoverItems","_findCurrentFocusableIndex","allFocusable","tabKeyHandler","isPopoverButtonEvent","isViewAllLinkEvent","isDropDownEvent","isClearButtonEvent","isUtteranceEvent","isPopoverItemFocused","isSearchButtonEvent","hasPopoverItems","searchButton","showSearchPanelInMobileViewEffect","searchPanelOpened","hideSearchPanelInMobileViewEffect","handleTooltipOnTruncatedTextEffect","showToolTip","primaryTextElement","breadCrumbElement","dismissOnboardingPopoverEffect","showOnboardingPopover","utterance","uppercasedUtterance","shouldFocusInput","setFocus","isMobileView","isCollapsedView","removeFocus","truncateWithEllipsis","getInputPlaceholderText","globalDesktopHeader","contextDropdownOpened","isNowAssistEnabled","nowAssistPlaceholder","isFullPageEnabled","placeholderText","getInputAriaLabel","placement","hasSuggestions","animationsEnabled","enableMultiLineInput","inputRef","isFullPage","inputContainerClassName","rawPlaceholderText","searchInputPlaceholderText","isPlaceholderTruncated","searchInputAriaLabel","showCancel","buttonSize","cancelIconName","searchIconName","globalSearchIcon","submitSearchAriaLabel","selectedContext","contextDropdownElement","cancelElement","textareaElement","inputElement","_ev$relatedTarget2","sparkleIcon","leadingIcon","inputTooltip","truncatedPlaceholderTooltip","addTrigger","searchIcon","_renderButtons","_renderSlotContent","addIds","getAriaLabel","renderDropdowns","dropdowns","openDropdowns","dropdown","dropdownId","actionsOverflowLabel","actionDropdownOpen","actionDropdown","renderCardInteraction","renderTagLine","renderCaption","renderHeadingContainer","topAlign","_action$meta2","actionType","_action$meta3","_action$meta4","blockSpacing","elementIsFocusable","sidebar","hideShadow","pressed","slotOnRelease","nowCardContainer","article","createActions","breadCrumbText","primaryText","suggestionLabel","showActions","itemActions","notRecentSearch","titleRef","userHistoryAndClick","findSearchPopoverListItem","_target$classList","isUserHistoryAndClickSearchTerm","on-mouseover","totalSectionsToDisplay","utteranceCount","labelName","getLabelName","adjustedIndex","ariaBusyState","ariaLiveTextContainer","AriaLiveContainer","getIcon","imageType","getHrefFromActionDataCol","getHrefFromExactMatch","getPopoverItem","disableHref","itemText","tableName","numberField","tableNameField","documentType","sourceTable","iconFromSuggestionData","iconType","getTooltipContent","breadCrumbTextContent","SearchTerm","SectionHeader","InstanceHistory","UserHistory","PopoverFooter","getGroupedItems","sectionHeaderIndex","itemsClone","_itemsClone$sectionHe","suggestionType","_itemsClone$sectionHe2","getUtterances","utterances","utteranceStart","utteranceEnd","prunedItems","getResultsCount","getGroupCount","constructAriaLiveText","groupCount","resultCount","groupDetails","currentGroup","currentGroupCount","_item$columns","resultLabel","utterancePlacement","utteranceDisplayValues","_utterance$columns","processedValue","placementClass","showEmptyState","loadingState","displayOnboardingPopover","fetchingOnboardingPref","isTyping","groupedItems","utterancesComponent","Utterances","onboardingPopoverContent","utterancePopover","actualListItems","nowButtonIconicSearch","nowIconSearch","suggestionTypeFooter","canAnimate","onboardingDismissed","showUtterances","collapsedView","enablePopover","MobileStartViewInHeader","Input","Popover","transformSuggestionResponse","dataResponse","debouncedSuggestionFetchEffect","suggestionFetchEffect","suggestionFetchStartedEffect","suggestionFetchSucceededEffect","dataItems","_dataItems","_dataItems2","_dataItems3","lastUtteranceIndex","firstUtteranceIndex","suggestionFetchFailedEffect","responseHeaders","transformedAction","mutationPath","clearSearchEffect","clearSearchSucceededEffect","clearSearchFailedEffect","createQuerySelector","getPopoverEl","getInputContainerEl","isMobileCombobox","fitResizeEffect","contentElem","targetElem","createAfterInterceptor","actionNames","contextItemSelectedEffect","contextDropdownClickedEffect","transformString","transformExactMatchResponse","displayFields","record_url","displayValueForTableWhenAvailable","handleExactMatchFetchEffect","queueExactMatchFetchEffect","queuedExactMatchFetchData","handleExactMatchStartedEffect","handleExactMatchSucceededEffect","handleExactMatchFailedEffect","exactMatchConfigFetchEffect","setEnableExactMatchPropertyVariable","exactMatchConfigFromSAC","switchToDefaultExactMatchPropertyVariable","getUserPreferenceQuery","handleUserPrefFetchEffect","handleUserPrefFetchStartedEffect","handleUserPrefFetchSucceededEffect","hasUserDismissedPopover","handleUserPrefFetchFailedEffect","setTermToState","syncInputDOMValue","resetSuggestionTerm","handleAriaLiveText","throttleTimeout","isAIELEnabled","effectProxy","interceptors","shadowRootOptions","delegatesFocus","isEnterEvent","isShiftKeyPressed","isTextAreaEvent","pressArrowUp","pressArrowDown","pressArrowLeft","pressArrowRight","pressEscape","pressTab","inputAriaLabel","MobileInput","MobileStartViewInPage","handleMobileCancel","mobileActionHandlers","pressEnter","searchExecutedEffect","navigationExecutedEffect","contextChangedEffect","searchClearedEffect","_this$shadowRoot","_sub$shadowRoot","measureTxt","measureTxtSelected","PADDING","HIDE_PADDING","ICON_WIDTH","getPadding","measureTabItems","fixedWidth","ICON_SIZE","selectedId","measureTabs","widthAvailable","visibleItems","overflowItems","tabWidths","widthRequired","overflowMenuWidth","selectedItemIndex","selectedItemWidth","selectTab","newSelectedItem","updateFocusedItem","nextFocusNotInTabs","getNewItemIndex","isNext","_state$focusedItem","currentItem","focusedItem","handleFocusManagement","getDropdownOpenedOrFocused","renderTabIcon","renderTab","disabledTabIsFocused","ariaCount","renderCount","hideDivider","relatedTargetHost","focusSelected","tablist","dynamic","enabledItems","_state$properties","TAB_HEIGHT","heightAvailable","spaceBetweenItems","TAB_MARGIN","heightRequired","heightAvailableAfterPaddingRemoved","overflowMenuHeight","enableIconOverride","enableDeselect","previousItem","renderOverflow","assignedElements","tabMaxWidth","selectionPosition","panelPosition","minInlineSize","maxInlineSize","_action$payload2","clickedItemId","clickedItem","focusedIndex","ALL_FILTER_ID","ALL_FILTER","RELEVANCY_SORT_FILTER","SORT_FILTER_DESCRIPTION","THOUSAND_PLUS_COUNT_LABEL","ZERO_COUNT_LABEL","DEBUG_VIEW_LABEL","DEBUG_VIEW_OPTIONS","DEBUG_VIEW_DESCRIPTION","getLabelForCount","defaultFilter","tabFilters","allTabCount","allTab","tabData","_getSelectedFilter","defaultFilterId","allFilters","_showSortDropdown","_showDebugViewsDropdown","debugView","searchFilters","selectedSortFilterLabel","searchTabfilters","sortDropdownFilters","selectedSortFilter","isSort","isView","NOW_TABS_ITEM_SELECTED","NOW_DROPDOWN_ITEM_SELECTED","TAB_FILTER_ITEM_SELECTED","SORT_FILTER_ITEM_SELECTED","DEBUG_VIEW_ITEM_SELECTED","nowTabsSelectedEffect","nowDropdownSelectedEffect","sortByFilters","selectedView","WRONG_GR_TYPE","WRONG_RESULT","MISSING_INFORMATION","WRONG_NLQ_FILTER","OTHER_FEEDBACK","baseOptions","DEFAULT_QA_FEEDBACK_OPTIONS","DEFAULT_USER_CARD_FEEDBACK_OPTIONS","DEFAULT_CATALOG_FEEDBACK_OPTIONS","DEFAULT_NLQ_FEEDBACK_OPTIONS","SECONDARY_FEEDBACK_ENABLED_MODELS","nlq","POWERED_BY_TEXT","AI_SUGGESTION","NLQ_HIGHLIGHTED_TEXT","HIGHLIGHTED_TEXT_ICON","SYNTHESIZED_ANSWER_LABEL","QA","GR_TYPES","AI_SEARCH","NLQ","SYNTHESIZED","MOBILE_MEDIA_WIDTH","CATALOG_ITEM","NA_CATALOG_ITEM_SPARKLE_TEXT","NLQ_CARD_HEADER","QA_CARD_HEADER","HORIZONTAL","VERTICAL","HORIZONTAL_EQUAL","MAX_DESKTOP_ACTIONS","DEFAULT","GLOBAL","FOOTER_MORE_ACTION_LABEL","BUTTON_SLOT_STYLE","FEEDBACK_PROMPT_LABEL","HELPFUL_FEEDBACK_LABEL","UNHELPFUL_FEEDBACK_LABEL","POST_FEEDBACK_LABEL","FEEDBACK_DIALOG_HEADER","FEEDBACK_DIALOG_INSTRUCTIONS","FEEDBACK_DIALOG_SEND_BUTTON_LABEL","FEEDBACK_DIALOG_SEND_BUTTON_TOOLTIP","CLOSE_FEEDBACK_FORM","POSITIVE_FEEDBACK_VALUE","NEGATIVE_FEEDBACK_VALUE","FEEDBACK_DROPDOWN_PLACEHOLDER","FEEDBACK_DROPDOWN_TOOLTIP","FEEDBACK_DROPDOWN_OPTIONS","FEEDBACK_INTENT_LABEL","FEEDBACK_INTENT_OPTIONS","HEADING","MARKER_IMAGE","HEIGHT_GLOBAL","WIDTH_GLOBAL","WIDTH_DEFAULT","WIDTH_THUMBNAIL","HEADER_TOOLTIP_TEXT","HEADER_TOOLTIP_TEXT_NLQ","ABOUT","ABOUT_POPOVER","DESCRIPTION_COLLAPSED_STATE_TOGGLED","SYNTHESIZED_GENIUS_RESULT_EXPANDED","VIEW_RECORDS_CLICKED","DESCRIPTION_STATES","TRUNCATION_LIMIT","CHOOSE_A_TABLE","PREVIEW_TABLE_LABEL","SOURCE_LABEL","VIEW_ARTICLE","PORTAL","ABOUT_BUTTON_LABEL","NLQ_MULTITABLE_DROPDOWN","VIEW_TABLE_TRANSLATION","NLQ_MULTITABLE_HEADER","NLQ_MULTITABLE_DESCRIPTION","FOLLOW_UP","FOLLOW_UP_LABEL","ASK_A_FOLLOW_UP","ASK_A_FOLLOW_UP_LABEL","FONT_SIZES","XL","ATTACHMENT_ICON","DEFAULT_DOC","DOWNLOAD","CITATION_ACTION","NLQ_ERROR_TITLE","NLQ_ERROR_DETAIL","NLQ_MULTI_TABLE_MINI_TITLE","CLICK","KG_GENERIC_VIEW_RECORD_ACTION_CLICK","CATALOG_CLICK","CATALOG_OPEN","REQUEST_IN_CHAT_LABEL","REQUEST_WITH_FORM","CITATION_CLICK","CITATION_TYPES","KB","EXTERNAL_DOCUMENT","ATTACHMENT","CATALOG","PEOPLE","KG","SKILL","AGENT","ADDITIONAL_SOURCES","CITATION_POPOVER_CLICKED","SHARED_FILES_LOGIN_MESSAGE","SHOW_LESS_LABEL","SHOW_MORE_LABEL","SHOW_FULL_ANSWER_LABEL","KB_ARTICLE_LABEL","UNTITLED_DOCUMENT_LABEL","OTHER_SOURCES_LABEL","EXTERNAL_DOCUMENT_LABEL","UNKNOWN_TABLE_LABEL","UNKNOWN_RECORD_LABEL","UNKNOWN_LABEL","LOG_IN_LABEL","MANAGER_LABEL","LOCATION_LABEL","EMAIL_LABEL","PHONE_LABEL","SHARED_FILES_LABEL","CAT_REGEX","CAT_PREFIX","ACTION_REGEX","ACTION_PREFIX","replaceKBReferences","citations","docId","citationData","source_type","citationNumber","sys_id","replaceAdditionalSourcesReferences","replaceCatalogReferences","regexToUse","citationPrefix","catId","catName","replaceSkillReferences","skillName","replaceKgReferences","source_sys_id","display_value","replaceCitationsWithTemporaryPlaceHolders","textToUpdate","updatedText","isSynthesized","grType","looksLikeListStart","stripListMarker","countLeadingSpaces","escapeHtml","normalizeFullWidthParensAroundUrls","parseInlineReferences","refRegex","foundCitations","fullMatch","jsonInside","highlightedText","highlightedTextIcon","showHeaderTooltip","toolTipRef","showAboutInfo","documentationUrl","tooltipProps","isSynthesizedGR","aboutSection","actionId","_getDefaults","breaks","extensions","gfm","pedantic","silent","tokenizer","changeDefaults","newDefaults","noopTest","edit","valSource","getRegex","codeRemoveIndent","outputLinkReplace","indentCodeCompensation","beginningSpace","endingHash","startingSpaceChar","endingSpaceChar","nonSpaceChar","newLineCharGlobal","tabCharGlobal","multipleSpaceGlobal","blankLine","doubleBlankLine","blockquoteStart","blockquoteSetextReplace","blockquoteSetextReplace2","listReplaceTabs","listReplaceNesting","listIsTask","listReplaceTask","anyLine","hrefBrackets","tableDelimiter","tableAlignChars","tableRowBlankLine","tableAlignRight","tableAlignCenter","tableAlignLeft","startATag","endATag","startPreScriptTag","endPreScriptTag","startAngleBracket","endAngleBracket","pedanticHrefTitle","unicodeAlphaNumeric","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","unescapeTest","percentDecode","findPipe","splitPipe","slashPipe","carriageReturn","spaceLine","notSpaceStart","endingNewline","listItemRegex","bull","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","newline","blockCode","fences","bullet","lheadingCore","lheading","lheadingGfm","_paragraph","_blockLabel","_tag","_comment","blockNormal","gfmTable","blockGfm","blockPedantic","escape$1","inlineCode","inlineText","_punctuation","_punctuationOrSpace","_notPunctuationOrSpace","_punctuationGfmStrongEm","_punctuationOrSpaceGfmStrongEm","_notPunctuationOrSpaceGfmStrongEm","blockSkip","emStrongLDelimCore","emStrongLDelim","emStrongLDelimGfm","emStrongRDelimAstCore","emStrongRDelimAst","emStrongRDelimAstGfm","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","_inlineLabel","reflink","nolink","reflinkSearch","inlineNormal","_backpedal","del","inlinePedantic","inlineGfm","inlineBreaks","escapeReplacements","getEscapeReplacement","cleanUrl","splitCells","_cells$at","rtrim","suffLen","findClosingBracket","outputLink","lexer","inLink","inlineTokens","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","_Tokenizer","codeBlockStyle","inBlockquote","currentLines","currentRaw","currentText","blockTokens","lastToken","oldToken","isordered","loose","itemRegex","endsWithBlankLine","endEarly","itemContents","nextLine","rawLine","nextLineWithoutTabs","ischecked","istask","lastItem","spacers","hasMultipleLineBreaks","_cap$","aligns","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","maskedSrc","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","_this$rules$inline$_b","_this$rules$inline$_b2","_Lexer","inlineQueue","lastParagraphClipped","_this$options$extensi","_this$options$extensi2","extTokenizer","cutSrc","startBlock","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_this$options$extensi3","_this$options$extensi4","emStrong","codespan","startInline","lex","_Renderer","_match","langString","parseInline","listitem","itemBody","_item$tokens$","tablecell","tablerow","cleanHref","_TextRenderer","_Parser","textRenderer","_this$options$extensi5","anyToken","genericToken","textToken","_this$options$extensi6","strong","_Hooks","markdown","lexInline","Marked","parseMarkdown","tableToken","listToken","_this$defaults$extens","childTokens","pack","prevRenderer","extLevel","rendererProp","rendererFunc","tokenizerProp","tokenizerFunc","prevTokenizer","hooksProp","hooksFunc","prevHook","passThroughHooks","packWalktokens","blockType","origOpt","throwError","provideLexer","provideParser","processAllTokens","markedInstance","marked","getDefaults","Renderer","TextRenderer","Lexer","Tokenizer","Hooks","renderItems","table_display_value","table_name","encoded_query","viewRecordsPopoverContentConfig","kgListCitations","viewRecordsPopoverConfig","DESCRIPTION_MULTI_TYPES","STACKED","HTML","getDescriptionStringElem","isMini","getDescriptionStackedElem","getDescriptionHtmlElem","shouldTruncate","descriptionCollapsed","isSynthesizedAndNotStreaming","sanitizedSnippet","textRef","getDescriptionElem","elementsDict","resolvedType","citationsFromSynthesizedResponse","synthesizedMarkdownText","synthesizedGeniusResultCanExpand","synthesizedGeniusResultExpanded","canAskFollowUp","forceNewTab","descriptionElem","basicHtml","headerIds","purifyConfig","parsedHtml","WebkitBoxOrient","WebkitBoxPack","WebkitBoxAlign","textOverflow","WebkitLineClamp","toValidPixelsOrUndefined","renderImageTag","imageTag","objectFit","objectPosition","srcset","MARKER_TYPES","ICON","IMAGE","AVATAR","getMarkerElem","markerElem","headingFontSize","isOneBox","identifierCriticalText","identifierFontSize","identifierAtBottom","labelValuesInfo","labelValues","showActionAsLink","isExternalSourceType","Marker","Description","LabelValues","MINUTES","SnDateTimeWordService","timeZoneOffset","isSystemTime","timestampLong","dateParsed","_parse","isValidDate","safariTimestamp","safariParsed","numericDate","verbose","_toWords","diffMills","WORDS","getWordLiterals","isPast","AGO","ago","justNow","snDateTimeWordService","toWords","DAY","daysBetween","baseDate","actualDate","normalizedBaseDate","normalizedActualDate","almostNow","numbers","INTERVAL","SnTimerService","_fnArray","_interval","_fireEvents","_remove","snTimerService","UNKNOWN","NOP","DATE_FORMAT_KEY","SnTimeAgo","_incoming","timeAvailable","dateFormatObj","_DEFAULT_OPTIONS","_window$ux_globals","uxGlobalsDateFormat","userPrefs","presourceDateFormat","dateFormatString","_parseDateFormatPref","updateFn","_removeFn","getTickTime","systemTime","timeAgo","dateBoth","prefValue","unused","dateOnly","errorLevelEnum","FATAL","WARNING","LoggerBase","fatalMsg","optionalParams","severity","fatal","NOW_LIST_ACTIONABLE_MESSAGE_ACTION_CLICKED","actionableMessageKey","actionableMessageLinkClickedHandler","actionableMessageBehavior","politenessSetting","relevant","ARIA_LIVE_BEHAVIOR_NAME","ARIA_MESSAGE_MAX","ARIA_LIVE_MESSAGE","ARIA_LIVE_CLEAR_MESSAGES","STATIC_ARIA_REGISTRY","onConnect","getComponentId","maxMessages","ariaLiveReference","onDisconnect","liveMessageEffect","compDetails","currentMessages","clearMessagesEffect","ariaLiveBehavior","hasInvalidUibProps","uibProps","checkForInvalidUibProps","configurableUibProps","hasUibConfigError","onBootstrap","workspaceConfigId","onPropertyChanged","UIB_BEHAVIOR_NAME","uibBehavior","getConfigurableUibProps","readOnly","USER_PREF_APP_SHELL_STATE_CHANGE","transformUserPreferencesArray","deepSearchElement","topShadow","allSearched","getSelectableProp","snCanvasAppshellRoot","onComponentConnected","canvasSession","userPreferencesAppShell","userRolesAppShell","userRoles","roles","userPreferencesArray","stateUpdates","sessionUserPreferencesBehavior","LOG_STATUS_KEY","LOG_LEVEL","LOG_LEVEL_ALL","LOG_LEVEL_DEBUG","LOG_LEVEL_LOG","LOG_LEVEL_INFO","LOG_LEVEL_WARN","LOG_LEVEL_ERROR","Logger","enable","logLevel","createLog","_log","INTERSECTION_OBSERVER_NAME","OBSERVE_ELEMENT","UNOBSERVE_ELEMENT","REGISTER_INTERSECTION_OBSERVER","UNREGISTER_INTERSECTION_OBSERVER","HOOK_INSERT","HOOK_DESTROY","HOOK_INIT","PAYLOAD_OPTIONS_PATH","INTERSECTION_OBSERVER_STATE_PATH","NOW_MODE_ACTIVE","NOW_MODE_SUSPEND","NOW_MODE_DETACH","DEFAULT_ROOT_SELECTOR","DEFAULT_ROOT_MARGIN","DEFAULT_THRESHOLD","DEFAULT_DEBOUNCE_DELAY","getIntersectionObserver","fpGet","getRootElementSelector","getRootMargin","getThreshold","getDebounceDelay","getUseDefer","getElementConfig","getShouldSuspend","getShouldUnobserveElement","LOG","createElementObservationProps","useDefer","nowMode","createRootElementHooks","intersectionCallBack","shouldSuspend","shouldUnobserveElement","unDefer","intersectClass","initialClass","setupIntersectionObserverEffect","rootElementSelector","rootMargin","unregisterIntersectionObserverEffect","observeElementEffect","collatedItem","elementConfig","unobserveElementEffect","createIntersectionObserverBehaviorActionHandlers","createIntersectionObserver","findFirstTabbableElement","findTabbableElement","findLastTabbableElement","tabbies","tabby","possibleResult","isTabbable","getTabIndex","findAllTabbableElements","expandedTabbies","findActiveElement","elementHasActiveElement","focusWithinClassManager","focusIsWithin","elementRetainer","addRetainedElement","removeRetainedElement","updateRetainedElement","getAndClearRetainedFocus","focusThis","getAndResetRetainedScroll","scrollToBottom","resetScroll","focusTrap","clickOutsideDeactivates","moveFocusInsideTrap","lastElement","activateFocusTrap","deactivateFocusTrap","firstTabby","lastTabby","firstKeydown","lastKeydown","tabbyTrapEntry","updateFocusTrap","GROUP_ACTION_CLICKED","NOW_LIST_ALL_GROUPS_TOGGLED","NOW_LIST_GROUP_TOGGLED","EXPAND_GROUP","EXPAND_ALL_GROUPS","KEYBOARD_NAV_BEHAVIOR_NAME","ALLOW_TABLE_FOCUS","ENTER_CELL_TRAP","EXIT_CELL_TRAP","REFRESH_CELL_TRAP","MOVE_FOCUS","POPOVER_CLOSED","RESET_BEHAVIOR","UPDATE_KEYBOARD_NAV","UPDATE_TABLE_REF","FOCUS_LIST","SEISMIC_HOIST","KEY_ENTER","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ARROW_LEFT","ESCAPE","KEY_CODE_ENTER","KEY_MAP","ROW_DEFINITIONS","COLUMN_DEFINITIONS","GROUPED_SUFFIX","NOW_GRID_BULK_FOCUSED_IDS","BULK_FOCUS_STATE_PATH","EMPTY_BULK_FOCUS","focusedIndicies","focusedKeys","previousKeys","initialIndex","isDeepSelector","getComponentPath","componentPath","hasSeismicHoist","getRelativeDirection","xA","yDiff","xDiff","getBulkFocusInfo","focusedRow","focusedCell","rowClassList","cellClassList","isRowGroupedHeader","isGroupToggleCell","isSpecialColumn","updateBulkStyles","newIndices","newCellIndex","nearestTable","removeBulkStyles","groupNumsSequentially","gridIndex","lastSubArray","resetBulkFocus","focusedNode","keepLastFocus","bulkFocusValue","rowKey","navRow","navCol","setBehaviorState","bulkFocus","getBehaviorState","getBehaviorOptions","getRowFromTableRef","tableRef","getCellFromTableRef","setNewCellFocus","_newFocus$node","selectedActiveElement","prevFocus","newFocus","directFocusSelectors","virtualizedScrollEnabled","isSameNode","tabbableSelectors","newFocusNode","isFocusSelector","setNewRowFocus","handlePointerCell","pointerCellHandled","pointerDir","maxCellIndex","rtlData","moveOne","moveAll","newRowFocus","rowSpan","newCellFocus","colSpan","getNextRowFromTableRef","_focusedRow$rowIndex","focusCellNode","trappedCell","focusPopoverTarget","popoverTargetNode","handleCellMove","cellEditingEnabled","hasGroupedRows","focusedRowKey","bulkRows","bulkRowIndices","scrollContainerSelector","newFocusedCell","ptrRowIndex","ptrCellIndex","indexIncDir","ensureCellIntersection","toggleGroupedRow","handleRowMove","_row$node$parentEleme","newFocusedRow","newRowIndex","cellRect","colHeaderNode","colHeaderRect","scrollAmount","shouldTriggerRerenderDefaultFn","rerenderProperties","shouldTriggerRerender","currentPage","objKey","originalKeys","getKeys","newKeys","hasChildrenOriginal","hasChildrenNew","handleBulkFocusClick","prevFocusedIndicies","prevColIndex","isSameColumn","stateUpdate","minIndex","maxIndex","NOW_LIST_OPEN_POPOVER_INTERNAL","NOW_LIST_CLOSE_POPOVER_INTERNAL","NOW_LIST_POPOVER_OPENED","NOW_LIST_POPOVER_CLOSED","NOW_POPOVER_OPENED_SET","BEHAVIOR_STATE_PATH","CHOICE_COLUMN_FILTER","ROW_DEFINITIONS_PATH","CELL_EDIT_POPOVER_TYPE","CELL_EDIT_APPLY_BUTTON_ID","CELL_EDIT_CANCEL_BUTTON_ID","CELL_EDIT_RETRY_BUTTON_ID","CELL_EDIT_POPOVER_STRING","CELL_EDIT_POPOVER_BOOLEAN","CELL_EDIT_POPOVER_NUMBER","CELL_EDIT_POPOVER_CURRENCY","CELL_EDIT_POPOVER_DATE_TIME","CELL_EDIT_POPOVER_PILLS","CELL_EDIT_POPOVER_CHOICE","CELL_EDIT_POPOVER_URL","CELL_EDIT_POPOVER_LINK","CELL_EDIT_POPOVER_ICON","CELL_EDIT_POPOVER_PERSON","CELL_EDIT_POPOVER_HTML","NOW_INPUT_VALUE_SET","NOW_BUTTON_CLICKED","NOW_RADIO_BUTTONS_VALUE_SET","NOW_DATE_TIME_VALUE_SET","NOW_TYPEAHEAD_MULTI_SELECTED_ITEMS_SET","NOW_SELECT_SELECTED_ITEM_SET","NOW_INPUT_URL_VALUE_SET","NOW_HTML_VALUE_SET","CELL_EDIT_INTERNAL","NOW_LIST_CELL_EDITOR_CONTENT_VALUE_UPDATED","NOW_LIST_POPOVER_BUTTON_CLICKED","NOW_LIST_CELL_EDIT_REQUESTED","NOW_LIST_CELL_EDIT_SUBMITTED","popoverConfig","openCellEditPopoverWithMessage","cellRef","popoverTarget","popoverDefinition","actionsContext","getClonedRows","getRowsToUpdate","rowsToUpdate","getComponentTag","cellType","cellEditRequestedEffect","cellEditingManaged","_row$cells$context$co","selectedKeys","cellEditingPopoverButtonClickedEffect","personKey","managed","cellEditingBehavior","COLUMN_FILTERING_ROW_CLASS","COLUMN_FILTERING_ROW_ID","COLUMN_FILTERING_VALUE_INPUT_CLASS","COLUMN_FILTERING_VALUE_PLACEHOLDER","COLUMN_FILTERING_VALUE_ARIA_LABEL","COLUMN_FILTERING_VALUE_INPUT_NAME","COLUMN_FILTERING_CHOICE_TYPE_TRIGGER_BUTTON_NAME","COLUMN_FILTERING_SELECT_ALL_BUTTON_NAME","COLUMN_FILTERING_SELECT_NONE_BUTTON_NAME","SHOW_HIDE_COLUMN_FILTERING_ROW_ACTION","REMOVE_COLUMN_FILTER_BUTTON","REMOVE_COLUMN_FILTER_ARIA_LABEL","SHOW_HIDE_COLUMN_FILTERING_ROW_ICON","DATE_TIME_APPLY_LABEL","DATE_TIME_APPLY_BUTTON_NAME","DATE_TIME_CANCEL_LABEL","DATE_TIME_CANCEL_BUTTON_NAME","IS_OPERATOR_ID","IS_OPERATOR_LABEL","IS_OPERATOR_ITEM","IS_NOT_OPERATOR_ID","IS_NOT_OPERATOR_LABEL","IS_NOT_OPERATOR_ITEM","STARTS_WITH_OPERATOR_ID","STARTS_WITH_OPERATOR_LABEL","STARTS_WITH_OPERATOR_ITEM","ENDS_WITH_OPERATOR_ID","ENDS_WITH_OPERATOR_LABEL","ENDS_WITH_OPERATOR_ITEM","CONTAINS_OPERATOR_ID","CONTAINS_OPERATOR_LABEL","CONTAINS_OPERATOR_ITEM","DOES_NOT_CONTAIN_OPERATOR_ID","DOES_NOT_CONTAIN_OPERATOR_LABEL","DOES_NOT_CONTAIN_OPERATOR_ITEM","IS_EMPTY_OPERATOR_ID","IS_EMPTY_OPERATOR_LABEL","IS_EMPTY_OPERATOR_ITEM","IS_NOT_EMPTY_OPERATOR_ID","IS_NOT_EMPTY_OPERATOR_LABEL","IS_NOT_EMPTY_OPERATOR_ITEM","IS_ANYTHING_OPERATOR_ID","IS_ANYTHING_OPERATOR_LABEL","IS_ANYTHING_OPERATOR_ITEM","LESS_THAN_OPERATOR_ID","LESS_THAN_OPERATOR_LABEL","LESS_THAN_OPERATOR_ITEM","GREATER_THAN_OPERATOR_ID","GREATER_THAN_OPERATOR_LABEL","GREATER_THAN_OPERATOR_ITEM","LESS_THAN_OR_EQUAL_OPERATOR_ID","LESS_THAN_OR_EQUAL_OPERATOR_LABEL","LESS_THAN_OR_EQUAL_OPERATOR_ITEM","GREATER_THAN_OR_EQUAL_OPERATOR_ID","GREATER_THAN_OR_EQUAL_OPERATOR_LABEL","GREATER_THAN_OR_EQUAL_OPERATOR_ITEM","DATE_TIME_LESS_THAN_OPERATOR_ID","DATE_TIME_LESS_THAN_OPERATOR_LABEL","DATE_TIME_LESS_THAN_OPERATOR_ITEM","DATE_TIME_GREATER_THAN_OPERATOR_ID","DATE_TIME_GREATER_THAN_OPERATOR_LABEL","DATE_TIME_GREATER_THAN_OPERATOR_ITEM","DATE_TIME_LESS_THAN_OR_EQUAL_OPERATOR_ID","DATE_TIME_LESS_THAN_OR_EQUAL_OPERATOR_LABEL","DATE_TIME_LESS_THAN_OR_EQUAL_OPERATOR_ITEM","DATE_TIME_GREATER_THAN_OR_EQUAL_OPERATOR_ID","DATE_TIME_GREATER_THAN_OR_EQUAL_OPERATOR_LABEL","DATE_TIME_GREATER_THAN_OR_EQUAL_OPERATOR_ITEM","IS_ONE_OF_OPERATOR_ID","IS_ONE_OF_OPERATOR_LABEL","IS_ONE_OF_OPERATOR_ITEM","IS_NOT_ONE_OF_OPERATOR_ID","IS_NOT_ONE_OF_OPERATOR_LABEL","IS_NOT_ONE_OF_OPERATOR_ITEM","ON_OPERATOR_ID","ON_OPERATOR_LABEL","ON_OPERATOR_ITEM","NOT_ON_OPERATOR_ID","NOT_ON_OPERATOR_LABEL","NOT_ON_OPERATOR_ITEM","GENERIC_FILTER_OPERATORS","GENERIC_FILTER_DEFAULT_OPERATOR","NUMBER_FILTER_OPERATORS","NUMBER_FILTER_DEFAULT_OPERATOR","BOOLEAN_FILTER_OPERATORS","BOOLEAN_FILTER_DEFAULT_OPERATOR","DATE_TIME_FILTER_OPERATORS","DATE_TIME_FILTER_DEFAULT_OPERATOR","featureFlagSelectors","getColumnResizingEnabled","featureFlags","getColumnDragDropEnabled","getColumnFilteringEnabled","getRowDragDropEnabled","getSelectionEnabled","getExpandAllGroups","getMaxCharacters","rowSelectors","rowDefinitions","getAllRowKeys","allRowKeys","_row$children","childRowKeys","childRow","getAllHighlightedRowKeys","allHighlightedRowKeys","_row$children2","isRowHighlighted","childHighlightedKeys","hasRows","getTopActionableMessage","getBottomActionableMessage","hasTopActionableMessage","hasBottomActionableMessage","getActionableMessageStatus","actionableMessage","getActionableMessageIcon","getSelectionDisabledForParticularRow","getHighlightedContentPatterns","hasRowActionsWithItems","getRowActions","getAreActionsDisabled","getRowActionsItems","getRowActionsItemsFromActions","rowActions","getRowActionsNumIcons","getRowActionsNumIconsFromActions","getCustomCellEmittedActions","hasCustomCellEmittedActions","getRowActionsPosition","columnFilteringEnabled","_getInitialSelectedRowsReducer","_currentRow$children","_currentRow$children2","_currentRow$children3","isSelectionDisabled","_currentRow$children4","getInitialSelectedRows","getRowKey","isRowChecked","isRecentlyAddedOrUpdatedRow","isRowGrayedOut","getCells","getExcludedActions","rowExcludedActions","getExcludedActionsForRow","colKey","hasGroupedOrDefaultRowsWithChildren","hasDefaultRowsWithChildren","hasGroupedRowCount","getGroupedOrDefaultRowsWithChildren","grouped","isGroupedRowOrDefaultRowWithChildren","getAllGroupKeys","getDefaultRowKeysRecursively","getAllGroupKeysRecursively","getKeysOfChildren","getAllKeysInOrder","getChildren","isDefaultRowWithChildren","isGroupedRow","isCustomRow","getGroupedRowLabel","getGroupedRowCount","getGroupActions","getGroupRowHref","_groupActions$","getCustomRowComponentTag","getCustomRowComponentProps","getCustomRowContentDimensions","getCustomRowContentAlignment","getCustomRowPlaceholderDimensions","getShowRowControlsForCustomRow","getRowsOfCustomType","customRows","createStateOnBootstrapForExpandedChildren","rowGroupingState","parentKey","isGroupExpandedForParent","expandedChildrenObject","dateTimeFormatPrefKey","columnSelectors","columnDefinitions","willHaveSpecialColumns","getSpecialColumnsCount","processedColumnDefinitions","getColumnFromProcessedCols","columnKey","columnMap","getColumnFilteringInfo","getHeaderTextTooltip","hasColumnFilterCustomValueEditorEmittedActions","getColumnFilterCustomValueEditorEmittedActions","getColumnHeaderActionsFromProcessedCols","getColumnKey","processedColumn","isReorderingPossibleOnColumn","getColumnLevel","isSpecialColumnKey","fpGetOr","getTotalColumnsAtLevel","_level","getDataColumnsOffsetPosition","allColumns","getCellActionsFromProcessedCols","getIcons","getColumnSortDirection","getFormattedColumnKey","getColumnLabel","columnLabel","getColumnType","getColumnAlignment","hasMaxCharacters","getHeaderCellAlignment","fpHas","hasColumnHeaderActions","hasCellActions","getHeaderTextDisabled","getCellEditingDisabled","getColumnFilterCustomTopText","getOperators","operatorsFromProps","getSelectedOperator","getSelectedOperatorValue","operatorValue","getColumnFilterValue","getColumnFilterValueEditorCustomComponentTag","getColumnFilterValueEditorCustomComponentDefaultProps","getNumberFormat","getDecimalPlaces","getNumberLocale","isValidLocale","Intl","NumberFormat","supportedLocalesOf","getNumberFormatter","maximumFractionDigits","getOperatorFromColumnFilterConfig","getDateTimeFormat","getTimeZone","DateTimeFormat","resolvedOptions","getTimeAgoDisplay","contextApi","dateTimeFormatPrefValue","dateFormatUserPrefValues","showTimeAgo","showDateAndTimeAgo","setShortDateFormat","dateObject","presentYear","getFirstDayOfWeek","getOpensInNew","getDisabled","getDisplay","personDisplay","getMaxPillLimit","getPillsChoices","getChoices","choiceList","getDefaultChoiceKey","defaultFallBackKey","getChoiceLabelFromKey","choice","getCurrency","getCurrencyLocale","defaultLocale","getThresholdColors","getColumnColSpan","getColumnRowSpan","getColumnParentKey","isColumnActive","getColumnEdges","getFirstColumnEdge","columnEdges","columnEdge","getColumnComponentTag","hasColumnComponentTag","getColumnPlaceholderDimensions","getCellContentDimensions","getColumnDefaultComponentProperties","pathConstants","processedColumnDefinitionsPath","columnsPath","getNewChildPath","getColumnDepth","childrenDepth","getColumnHeaderIndexes","columnPath","columnIdxRegex","headerRowIndex","headerColumnIndex","pruneColumnDefinitions","columnKeys","pruneColumnDefinitionsHelper","columnsInCurrentLevel","nextLevelChildren","updateColumns","isNestedRows","addOrUpdateSpecialColumns","clonedColumnDefinitions","parentToggleColumn","parentBadgeColumn","selectionColumn","rowActionsColumn","rowGroupBadgeColumn","groupedToggleColumn","rowDragDropColumn","createEmptyColumnLeafArray","getColumnInfo","columnLeafs","getColumnInfoHelper","addSpanFields","childrenColSpan","_rowspan","_colspan","_parentKey","processColumnDefinitions","clonedColumns","propertyChangedActionHandler","expandAllGroups","rowDragDropEnabled","selectionEnabled","processedColumns","columnFeatureFlags","handleRenderRequested","columnDefinitionsBehavior","SORT_START","SORT_END","SORT_CANCELLED","DROP_AREA_CHANGE","UPDATE_BEHAVIOR","NS_DEST_PLACEHOLDER","NS_DEST_PLACEHOLDER_WRAPPER","NS_ACTIVE_SORT_ITEM","NS_SOURCE_PLACEHOLDER","NS_DRAGGING_SOURCE","NS_DRAGGING_SOURCE_OVERLAY","NS_SORT_TRANSITIONED","NS_SORT_CLONE","NS_DATA_TRANSFER_KEY","NS_DEFAULT_PLACEHOLDER","COMPONENT_ID","SET_ATTRIBUTE","GET_ATTRIBUTE","REMOVE_ATTRIBUTE","GET_RESOLVED_PROPERTIES","_cloneShadow","cNode","querySelectorDeep","rootEl","querySelectorAllDeep","nestedMatches","rootEleMatches","childMatches","shadowChildren","closestDeep","seismicClone","elClone","seismicElems","isSeismicComponent","sElem","originalElem","elProperties","uuidv4","elemIndex","getDOMRect","getRelativePosition","relativeToElem","elemRect","relativeRect","getDOMRects","els","directions","RIGHT_UP","RIGHT_DOWN","LEFT_DOWN","LEFT_UP","itemsFilter","getDropPosition","getSourcePosition","getValidRange","setValidYPosition","sortable","targetYPos","maxYPosition","maxYScroll","OFFSET_X","OFFSET_Y","SCROLL_ROUNDING","MIN_SCROLL_CHANGE","hasHorizontalScroll","hasVerticalScroll","scrollWithinXBounds","dScroll","__auto_scroll_x_bounds__","scrollBounds","newScroll","scrollWithinYBounds","__auto_scroll_y_bounds__","canScrollLeft","dScrollLeft","canScrollTop","dScrollTop","handleAutoScroll","movingElem","xScrollParent","yScrollParent","followMouseForAutoScroll","xScrollParentRect","yScrollParentRect","distanceRight","distanceLeft","distanceBottom","distanceTop","horizontalScroll","verticalScroll","scrollRequired","Sortable","sourceIndex","destinationIndex","sourceParent","destinationParent","transitions","listOrder","placeholders","MIN_CHANGE","xElem","yElem","dropPosition","extendedDropzone","maxPositionableIndex","minPostionableIndex","cssFromStr","cssStr","createAndInsertClone","customClone","cloneParent","cloneAppendTo","cloningElemRect","cloneStyles","setClonePosition","cloneEl","transformClonePosition","removeClone","rectA","rectB","getOverlapRect","toRectangle","domRect","rectCenter","edgeDistance","minXRect1","minYRect1","minXRect2","minYRect2","maxXRect1","maxYRect1","maxXRect2","maxYRect2","xDistance","yDistance","getOverlapArea","domRectA","domRectB","getRectOverlapArea","overlapRect","rectArea","isClientRectIntersecting","QUADRANTS","TL","TR","BR","BL","getQuadrantRect","quadrant","cloneDOMRect","getIntersectingItems","draggingEl","sortableEls","dragElRect","intersectingItems","intersectingArea","quadrants","quad","overlapArea","overlapping","removeSrcPlaceholders","removeDestPlaceholders","removeTransitions","createPlaceholder","addSortableDestPlaceholderClass","addSortableSrcPlaceholderClass","insertPlaceholder","insertPlaceholderAtIndex","itemsContainer","itemsSelector","sortableItems","canPutPlaceholder","isPositionBefore","elRect","refElRect","predictDestPlaceholder","extDropzone","srcPlaceholder","destPlaceholder","srcElIntersect","destElIntersect","dzIntersect","firstItemInDropzone","lastItemInDropzone","mostOverlappingItem","totalArea","topOverlap","bottomOverlap","leftOverlap","rightOverlap","LIST_ORDER","DIRECTIONS","sortInteraction","setMoveDirection","setDirectionStylesOnClone","horizontalCls","verticalCls","horizontalDragDirection","verticalDragDirection","getSortableItemsSelector","updateScrollParents","getItemRect","render_PixelChange","elemsInCurrentDropzone","isValidIndex","onStart","getTargetElem","customSourcePlaceholder","tagSourcePlaceholder","customDestPlaceholder","tagDestPlaceholder","destPlaceholderText","shouldNotHideTargetElement","_oldDisplay","onSrcPlaceholderInsert","actionPrefix","onMove","onPositionChange","onEnd","resetTargetElemStyles","destRect","clonePosition","render_PositionChange","newDropPosition","newDropIndex","oldPosition","onDestPlaceholderInsert","updatedDragData","placeholderParent","updateConfig","newConfig","setActiveDropzone","activeDropzone","setActiveIndex","getDataTransfer","setDataTransfer","tempMoveIndex","nextVisualDropzone","activeConnectedList","relativeElement","relativeElRect","connectedLists","cListWithRects","nextList","DEFAULT_KEYBOARD_CONFIG","KEYS","SPACE_CODE","isSortStartTrigger","customTrigger","isSortCompleteTrigger","isSortCancelTrigger","isSortableUpdateKey","keyboardSortHandler","addGlobalKeyHandlers","removeGlobalKeyHandlers","handleVerticalSort","handleHorizontalSort","moveToNextSortableList","nextSortableList","nextDropzone","handleElem","initSortable","withCancellation","escapeKeyListener","registerDropzone","__dropzone_subscribers__","createDropzone","unregisterDropzone","removeDropzone","subs","dragEnterFn","DEFAULT_IJS_CONFIG","DROPZONE_INIT_DELAY","toggleUserSelector","userSelect","clearUserSelection","isDraggableInitialized","draggables","elInteractable","isDroppableInitialized","droppables","__seen__","__sortable__","sortableLists","dzSelector","sortableListEl","droppableElem","droppable","onDragEnter","draggedSortable","ijsSortable","isUpdate","restrictTo","DEFAULT_SORTABLE_CONFIG","dragSupport","keyboardSupport","ijsAdapter","keyAdapter","interactJsAdapter","keyboardAdapter","dynamicConfig","_sortable","RESIZE_STARTED","RESIZE_COMPLETED","SIZE_UPDATED","DATA_HAS_RESIZE_INTERACTION","KEYBOARD_RESIZE_DELTA","ACTIVE_CLASS","domEvent","updateSize","onbeforeupdate","onResizeComplete","addMouseSupport","throttledOnMove","HANDLE_DIRECTIONS","TOP","keyboardResizeHandler","keyboardResizeDelta","activeClass","keyboardOptions","resizeHandleElement","addKeyboardSupport","handles","handleSelector","DEFAULT_EDGES","DEFAULT_OPTIONS","mouseSupport","addResizeSupport","COLUMN_DRAG_HANDLE_CLASS","NOW_LIST_COLUMN_REORDER_ACTION_PREFIX","NOW_LIST_COLUMN_REORDER_START","NOW_LIST_COLUMN_REORDER_END","NOW_LIST_COLUMN_REORDER_CANCELLED","NOW_LIST_COLUMN_REORDER_DROP_AREA_CHANGED","NOW_LIST_COLUMNS_REORDERED","NOW_SORTABLE_UPDATE_BEHAVIOR","COLUMN_ACTIVE_CLASS","SOURCE_PLACEHOLDER_CLASS","DROP_AREA_DIVIDER_CLASS","ACTIVE_DRAGGING_ITEM_CLASS","ELLIPSIS_ICON","GROUP_TOGGLE_ICON","ROW_HIGHLIGHTED_CLASS","ROW_GRAYED_OUT_CLASS","ROW_RECENT_UPDATED_CLASS","DRAG_HANDLE_ICON","WHITESPACE_STRING_CLASS","INCLUDE_LARGE_PADDING_CLASS","INCLUDE_SMALL_PADDING_CLASS","COL_SPAN_MAX","cacheIcon","iconKey","getIconPixelSize","iconService","__TECTONIC__$servicenow_now_icon","parsedCache","getFakeNowIcon","iconCacheString","iconIsCached","iconCacheParsed","sizeObj","getIconHeightWidth","dragHandle","ariaDescribedBy","testId","COLUMN_HEADER_CLONE_TAG_NAME","dropAreaDivider","createDropAreaDivider","srcEl","isSpecialColumnElement","colEl","isInDroppableZone","destEl","nextColumn","isNextSpecialColumn","previousColumn","isPreviousSpecialColumn","attachDropAreaDivider","removeDropAreaDivider","adjustClonePosition","dividerRect","headerClone","COLUMN_DEFINITIONS_PATH","COLUMNS_PATH","columnsDataPath","ARIA_LIVE_REGION_TYPE","updateAriaLiveRegion","getClonedColumns","getClonedColumnDefs","setColumnActive","resetActiveColumns","_active","getValidColumnKeys","colDefs","resetActiveColumnsEffect","clonedColumnDefs","getColumnReadablePosition","getTotalTopLevelColumns","columnDropEffect","domDestinationIndex","oldColumns","sourceColumn","newColumns","reorderedColumns","updatedColumnInfo","isRendered","cellToFocus","enterCellTrap","columnDragStartEffect","columnDropCancelledEffect","columnDropAreaChangeEffect","DRAGGABLE_ITEMS","DROPZONE","getBoundingClientRectActual","headerLabel","headerContentEl","headerHeight","sortableRef","isKeyboardActive","isDragEnabled","columnDragDropEnabled","filterDraggableHeaderCells","SCROLL_CONTAINER","keyboardCustomTriggers","keyboardTriggers","refreshSortableHandler","columnDragDropBehavior","nowSortable","nowSortableOptions","requiredArgs","getUnixTime","tzTokenizeDate","dtf","formatToParts","partsOffset","hackyOffset","typeToPos","formatted","dtfCache","testDateFormatted","hour12","hourCycleSupported","hourCycle","newDateUTC","fullYear","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","timezone","timezoneZ","timezoneHH","timezoneHHMM","tzParseTimezone","timezoneString","isUtcDate","absoluteOffset","validateTimezone","isValidTimezoneIANAString","toUtcDate","fixOffset","asUTC","asTS","utcGuess","validIANATimezoneCache","timeZoneString","tzPattern","DEFAULT_ADDITIONAL_DIGITS","dateTimePattern","plainTime","YY","YYY","YYYY","YYYYY","MMDD","Www","WwwD","HH","HHMM","HHMMSS","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTime","getTimezoneOffsetInMilliseconds","dateString","timeString","patternYYY","patternYYYYY","yearString","centuryString","validateDate","validateDayOfYearDate","validateWeekDate","dayOfISOWeekYear","validateTime","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","zonedTimeToUtc","cloneObject","offsetMilliseconds","COLUMN_FILTERING_CHOICE_TYPE_APPLY_BUTTON_NAME","COLUMN_FILTERING_CHOICE_TYPE_CANCEL_BUTTON_NAME","MIN_CHOICES_FOR_CHOICE_FILTERING","NOW_INPUT_INPUT","COLUMN_FILTERING_CHOICE_FILTER_CLEAR_TERM","COLUMN_FILTERING_CHOICE_FILTER_CLEAR_TERM_NAME","fromUnixTime","dirtyUnixTime","tzIntlTimeZoneName","getDTF","partsTimeZone","hackyTimeZone","tzNameMatch","timeZoneName","getTimeZoneOffset","addLeadingZeros","dirtyDelimeter","delimeter","tzFormattingTokensRegExp","precededByQuotedSection","replaced","dateFnsFormat","utcToZonedTime","resultDate","formatInTimeZone","DateTypes","DATE_TIME","WEEK_MONTH_YEAR","WEEK_YEAR","QUARTER","DateFormatTypes","TimeFormatTypes","STANDARD","STANDARD_24","EXTENDED","EXTENDED_24","DateTimeFormatTypes","PresetKeywords","NEXT","LAST","CURRENT","TO_DATE","PresetTypes","START","YEARS","QUARTERS","MONTHS","WEEKS","DAYS","HOURS","SECONDS","BUSINESS","formatISO","representation","tzOffset","dateDelimiter","timeDelimiter","hourOffset","minuteOffset","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","buildLocalizeFn","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","buildMatchPatternFn","buildMatchFn","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","addMilliseconds","subMilliseconds","dateTimeLongFormatter","startOfUTCWeek","getUTCWeekYear","setUTCDay","dirtyDay","setUTCISODay","startOfUTCISOWeek","getUTCISOWeekYear","startOfUTCISOWeekYear","getUTCISOWeek","setUTCISOWeek","dirtyISOWeek","startOfUTCWeekYear","getUTCWeek","setUTCWeek","dirtyWeek","MILLISECONDS_IN_SECOND","numericPatterns","hour23h","hour24h","hour11h","hour12h","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","parsers","incompatibleTokens","isTwoDigitYear","normalizedTwoDigitYear","_flags","firstWeekOfYear","subPriority","wholeWeekDays","timestampIsSet","_token","TIMEZONE_UNIT_PRIORITY","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","subFnOptions","setters","dateToSystemTimezone","usedTokens","incompatibleToken","usedToken","fullToken","uniquePrioritySetters","setterArray","convertedDate","getUTCDayOfYear","lightFormatters","removeEscapedCharacters","isWeekFormat","isDateOnlyFormat","isTimeOnlyFormat","isDateTimeValueValid","isoDate","isMatchTZ","parseTZ","isTimeZoneFormat","getFormatWithoutTimeZone","getValueWithoutTimeZone","valueToUse","formatToUse","referenceDate","formatTZ","enUS","TypeToToken","Formats","isValidTypeToFormat","isTypeToFormatValid","localeContext","timezoneContext","DISABLED_ITEMS_FORMAT_ERROR_ID","DISABLED_ITEMS_START_GREATER_THAN_END_ERROR_ID","FORMAT_MATCH_ERROR_ID","FORMAT_START_MATCH_ERROR_ID","FORMAT_END_MATCH_ERROR_ID","TYPE_FORMAT_ERROR_ID","UNAVAILABLE_END_ERROR_ID","UNAVAILABLE_ERROR_ID","UNAVAILABLE_START_ERROR_ID","INVALID_START_GREATER_THAN_END_ERROR_ID","INVALID_INITIAL_TIME_ERROR_ID","INVALID_INITIAL_TIME_START_ERROR_ID","INVALID_INITIAL_TIME_END_ERROR_ID","ErrorMessages","panelEditableErrorIds","removeErrorMessage","errorId","errorIndex","deleteCount","prependErrorMessage","messageData","CALENDAR_LABEL_FORMAT","CALENDAR_DATE_LONG_FORMAT","CALENDAR_QUARTER_LONG_FORMAT","CALENDAR_TIME_INPUT_ID","POPOVER_ID","STANDALONE_MONTH_FORMAT","STANDALONE_MONTH_LONG_FORMAT","STANDALONE_YEAR_FORMAT","STANDALONE_QUARTER_FORMAT","STANDALONE_QUARTER_LONG_FORMAT","STANDALONE_WEEK_YEAR_FORMAT","TRIGGER_ID","PaginationActionTypes","PREVIOUS","ItemStateTypes","DISABLED","TWEEN","ADJACENT","RANGE","DateActionTypes","TO_NEXT_MONTH","TO_PREVIOUS_MONTH","TO_MONTH","TO_QUARTER","TO_YEAR","TO_NEXT_YEAR","TO_PREVIOUS_YEAR","TO_WEEK","PaginationTypes","CUSTOM_PRESET_OPTION","groupLabel","UNGROUPED_GROUP_LABEL","StartTimeData","EndTimeData","Keys","MonthLabels","DateHeadingLabels","WeekHeadingLabel","presetTranslations","Year","Quarter","Month","Week","Day","Hour","Minute","Second","addDays","addMonths","dayOfMonth","endOfDesiredMonth","dateWithMonths","dateWithDays","msToAdd","subDays","subMonths","dateWithoutDays","mstoSub","monthIndex","lastDayOfMonth","dirtyMonth","dateWithDesiredMonth","DateActions","monthIdx","quarterIdx","weekIdx","createDateItem","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","getQuarter","startOfWeek","getWeekYear","startOfWeekYear","getWeek","dirtyDateToCompare","dateToCompare","startOfISOWeek","getISOWeekYear","startOfISOWeekYear","getISOWeek","addWeeks","eachWeekOfInterval","dirtyInterval","startDate","endDate","startDateWeek","endDateWeek","currentWeek","differenceInCalendarWeeks","startOfWeekLeft","startOfWeekRight","timestampLeft","timestampRight","startOfMonth","getWeeksInMonth","lastDayOfWeek","eachDayOfInterval","isWithinInterval","dirtyLeftDate","dirtyRightDate","getOverlappingDaysInIntervals","dirtyIntervalLeft","dirtyIntervalRight","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","differenceInMs","getIntervalDays","setStateToItems","firstDateIdx","fullInterval","fullIntervalList","overlapItems","stateKey","allowDuplicates","overlapDates","valuesToDates","overlapLength","overlapStart","overlapEnd","overlapDate","dateFnsSet","getIndexOfDate","setStates","disabledItems","itemsWithState","getOverlapItemsPerType","SUNDAY_IDX","NUM_DAYS_IN_WEEK","reorderItems","startIdx","getHeadings","weekdayHeadings","getDateOptions","isInInterval","getAllDaysInWeekIntervals","dateRef","activeInterval","hideAdjacentDates","weekendDays","weeksInMonth","weeksLength","fullWeekendList","weekStart","lastWeekIdx","inclusiveDays","getOverlapValues","getOverlapDaysOfInterval","inputDateInterval","intervalEnd","isDateTimeFormat","beforeDateRef","subtractFromDate","afterDateRef","addToDate","startDateRef","endDateRef","getDisabledDaysOfInterval","disableWeekends","disabledItemsList","getDateItems","$firstDayOfWeek","fullDisabledList","dateItems","eachMonthOfInterval","getMonthItems","baseInterval","intervalList","monthItems","eachYearOfInterval","getYearItems","yearRange","yearItems","createWeekColumn","disableEntireWeek","dateItem","tween","getWeekItems","groupItemsByWeek","_group$week","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","parseISO","parseTimezone","captures","century","isWeekDate","parseDateUnit","parseTimeUnit","daysInMonths","_year","_hours","addQuarters","startOfQuarter","currentMonth","eachQuarterOfInterval","startDateQuarter","currentQuarter","getQuarterItems","quarterItems","sortDates","getDateFromRange","rangeInitiator","itemsReducer","actionArgs","focusDate","applyTime","timeRef","handleZeroSelectedItems","selectedDate","ariaMessageType","timeRefStart","timeRefEnd","updatedStart","updatedEnd","getDateAnnouncementFormat","updatedSelectedItems","ariaLiveMessage","handleOneSelectedItems","handleManySelectedItems","handleRangeSelection","dateAnnounceFormat","announceSelectedDate","dateLongFormat","weekLongFormat","handleDateClick","updatedDate","handleYearClick","dismissOnSelect","activeType","activeDateRef","getDateRef","handleMonthClick","handleQuarterClick","handleWeekClick","getItemCoords","itemIdx","rowIdx","midRowIdx","focusItemNode","itemNode","paginateMonth","prevItem","paginateYear","nextYear","_targetItem2","isDateViewType","COL_IDX_START","ROW_IDX_START","maxRowIdx","maxColIdx","isPrev","shouldGoToPrevMonth","shouldGoToNextMonth","targetRowIdx","sliceArgs","_items$targetRowIdx","_targetItem","handleFocusAfterTransition","focusInfo","END_ROW_IDX","_items$rowIdx","cellIsEmptyOrAdjacent","_items","START_ROW_IDX","_items2","handleItemFocus","directionalKey","activeItems","isArrowKey","isPageKey","isHomeKey","isEndKey","keyToUse","ItemClickHandlers","subQuarters","dirtyDatesArray","datesArray","renderDateControls","yearLabel","monthLabel","monthLongName","monthIsActive","yearIsActive","monthCaret","yearCaret","renderMonthControls","renderControls","overRideTabIndexForPresets","referenceDateValue","referenceDateObject","renderCell","lastFocusedItemId","selectionPreviewInterval","weekPreviewInterval","rangeValueEnd","isDateItem","isSelectable","isWeekItem","isWeekType","isWeekActiveType","isInterval","weekPreview","weekRange","isoWeekStartOn","getDateFromWeek","keyIsDirectional","renderRow","renderHeadingRow","renderGrid","footerActionsSchema","closeCalendar","intervalSchema","beforeSchema","afterSchema","disabledItemsSchema","selectedItemsSchema","typesSchema","presetSchema","presetType","presetsSchema","TIME_FORMAT_PATTERN","MIN_TIME_INPUT_SIZE","INPUT_SIZE_OFFSET","presetTypes","getItemById","setRangeValues","rangeValueStart","validStart","validEnd","getSelectedItems","getContainerAriaLabel","itemsChanged","prevValue","getDefaultFocusableItem","selectedDates","getCurrentOrFocusableDate","firstFocusableSelector","setTimeInputValue","initialTime","initialTimeStart","initialTimeEnd","fallbackTime","valueKey","getDefaultTime","getDefault","dateStart","dateEnd","setDateItems","parseSubString","getTimeValue","getInputSize","measureFn","valueLength","formatLength","renderPaginationButton","gridHeading","renderDateGrid","renderTimeInput","_refs$0$ref3","_refs$4","_refs$1$ref","_refs$5","_refs$0$ref4","_refs$6","_refs$1$ref2","_refs$7","_refs$0$time2","_refs$8","_refs$1$time","_refs$9","isDateTimeType","_refs$0$ref","_refs$","_refs$0$ref2","_refs$2","_refs$0$time","_refs$3","defaultInitialTime","defaultRef","defaultTime","inputSize","inputLabel","dateFnsIsEqual","defaultInitialTimeStart","defaultInitialTimeEnd","defaultRefStart","defaultTimeStart","defaultRefEnd","defaultTimeEnd","valueStart","valueEnd","startTimeLabel","endTimeLabel","renderCustomFooterActions","footerActions","actionProps","renderDefaultFooterActions","defaultFooterActionLabels","fallbackValues","cancelLabel","applyLabel","initiator","isDefault","appendToPayload","renderFooterActions","showDefaultFooterActions","getTodayButtonLabel","nowLabel","renderFooter","hideFooter","isToday","enablePresets","selectingSecondDate","typeIsPreset","isHoisted","hasRendered","currentType","prevPropertyType","hasPreviousRendered","prevActiveType","stateTypeChanged","propTypeChanged","activeOrSelected","DEBOUNCE","_getItemById$date","_getItemById","_getItemById2","dateFnsAdd","dateFnsMin","dateFnsSub","dateFnsMax","itemsToSelect","panelEditableErrorSet","minRows","date1","date2","compDate","isItemsValid","isDisabledDate","focusCalendar","focusFromPresetsToCalendar","shouldFocusCalendar","focusEl","focusComponent","focusInput","_state$activeInput","activeInput","_event$composedPath$f","isPathInDateTimePanel","_path$","_activeInput$getRootN","shadowRootNode","activeInputRootNode","isPanelEditable","hideCalendarPanel","fieldInPath","_e$classList2","_e$classList3","inputIsFocused","isWeekYearToken","invalidIds","checkForErrors","typeFormatMatch","checkTimeValid","initialTimeStartValid","initialTimeEndValid","dateTimeValueValidResp","initialTimeValid","checkForDisabledDates","rangeItems","startItem","endItem","getCalendarIcon","getGroupsCount","getHoistedPreset","_nodes$","popover","popoverSR","checkIfConfigurationIsValid","redispatchWithFormat","inputName","isDateManuallySet","noFooterActionsPresent","_activeInput$dataset","prevActivePreset","revertPresetSelection","prevValueStart","prevValueEnd","autoClose","_selectedItems$","_selectedItems","isoDateStart","isoDateEnd","hasRange","presetValueStart","presetValueEnd","activePreset","updatePrevValue","runValidation","redispatchWithType","dispatchType","regular","few","many","pluralResult","suffixExist","accusativeWeekdays","formattingMonthValues","withPreposition","formatRelativeLocalePlural","usageGroup","futureSeconds","futureMinutes","futureHours","futureDays","futureWeeks","futureMonths","futureYears","futureTense","_text","formattingDayValues","ordinalName","about","almost","lessthan","withoutSuffixes","xseconds","halfaminute","xminutes","xhours","xdays","xweeks","xmonths","xyears","withSuffixes","adverb","translated","adv","formattingQuarterValues","isSameUTCWeek","dateLeftStartOfWeek","dateRightStartOfWeek","_lastWeek","thisWeek","_nextWeek","oneWithSuffix","otherWithSuffix","wordMapping","onlyNumeric","twoFour","declensionGroup","rem10","declension","adjectivesLastWeek","masculine","feminine","adjectivesThisWeek","adjectivesNextWeek","dayGrammaticalGender","dayAndTimeWithAdjective","adjectives","adjective","monthFormattingValues","dayFormattingValues","dayPeriodFormattingValues","singularNominative","singularGenitive","pluralGenitive","buildLocalizeTokenFn","checkWeek","baseFormat","hasLocale","enIN","enIE","enGB","frCA","ptBR","zhCN","zhTW","public_api","updateContext","session","firstRenderOnConnect","_activeInput$shadowRo","_activeInput$shadowRo2","totalErrorMessages","inputFieldName","isValueChanged","presetValue","clickedOnActiveInput","hasFooterActions","shouldRevertValue","_activeInput$name","fromPC","startUnchanged","endUnchanged","_activeInput$dataset2","fromPopoverClose","lifecycle","isValueDisabled","configErrorID","configValid","startOfDay","startOfYear","cleanDate","startOfHour","startOfMinute","startOfSecond","endOfWeek","endOfMonth","endOfQuarter","endOfYear","endOfHour","endOfMinute","endOfSecond","dateFnsLookUp","addSeconds","addMinutes","addHours","endOfDay","Presets","customLabelPositionIsBottom","presetItems","showGroups","otherGroups","byOrderSort","noGroup","_state$properties$pre","_state$properties2","_state$lastFocusItemI","tempPresets","customPresets","DEFAULT_PRESETS","customPresetPositionBottom","selectedIndex","selectedPresetIndex","lastFocusItemIndex","selectedGroupLabel","setGroups","sortPresets","presetListFromGroups","matchingGroupLabel","groupStartIndex","presetItemIndex","getPresetItemIndex","presetItem","preset","formatPreset","isCustomKeyword","isBusinessType","activePresetIndex","activePresetGroup","_this$presetItems","_this$presetItems2","groupPresets","focusItemIndex","getCustomLabelIndex","selectedPreset","getStartDate","getEndDate","groupItems","getGroupItems","initialCap","dateFnsFunction","getDateFnsFnName","getSingular","convertSingularTypeToPlural","presetClickedPayload","selectedItemSetPayload","metaType","presetStartDate","presetEndDate","isPlural","timePeriod","PRESET_DEFAULT_HEIGHT","getCalendarHeight","setPresetHeight","getFocusableItem","getActivePresetElement","getAllPresetElements","focusPreset","presetElement","getPresetElementByIndex","elIndex","allPresetElements","presetsObject","setDispatch","selectedGroup","clearPresetSelection","enablePreset","getActivePreset","matchHeights","activePresetElement","presetElements","firstPresetElement","lastPresetElement","isArrowDown","isArrowUp","nextPresetToFocus","nextPresetIndex","focusIndex","addClassToFirstElementInSlot","slotName","_nodes$0$assignedNode","constructErrors","errorID","validateInput","enableSameDay","isStartDisabled","isEndDisabled","helperContentEnd","helperContentStart","labelEnd","labelStart","placeholderStart","placeholderEnd","aria","adaptive","showPresetGroups","REFLOW","renderCalendar","manageValueStart","manageValueEnd","valStart","valEnd","isStartInvalid","isEndInvalid","startValue","valueId","focusTrigger","itemsListConstrain","selectedLabel","configAriaDropdownList","decoratorsStart","isListbox","decoratorsEnd","manageSelectedItem","activeItemIndex","nextFocus","decorators","numDecorators","numIcons","NOW_LIST_COMPONENT_LOAD_REQUESTED","NOW_LIST_COMPONENT_LOAD_COMPLETED","NOW_LIST_COMPONENT_LOAD_FAILED","MAX_COMPONENT_LOAD_COUNT","COMPONENT_LOADED_STATUS","SUCCESS","LOADING","customComponentType","CELL","OVERLAY","POPOVER","ROW","GALLERY_VIRTUALIZED_STATUS_ROW","COLUMN_FILTER_VALUE_INPUT","renderLoadingState","renderCustomComponent","ComponentTag","componentDefaultProps","customRowAlignment","fromCustomSource","renderErrorState","renderCustomComponentDisplay","tableMetadata","_loadedComponentInfo$","cellStyle","placeholderStyle","fetchedComponents","loadedComponentInfo","isShortDateFormat","isShortDate","getDateEditorVariant","forceShortDateFormat","BOOLEAN_TRUE_STRING","BOOLEAN_FALSE_STRING","BOOLEAN_TRUE_ICON","BOOLEAN_FALSE_ICON","BOOLEAN_TRUE_ID","BOOLEAN_FALSE_ID","BOOLEAN_CHOICES","BOOLEAN_ICON_SIZE","shouldUseChoiceFilter","getColumnFilteringStateForColumn","columnFilteringState","columnFiltersMap","genericValueInput","shouldDisableValue","columnType","_getDecimalPlaces","dateTimeValueInput","dateTimeState","shouldDisableApply","getOverridenDateFormat","formattedDateValue","booleanValueInput","choiceValueInput","buttonLabel","choiceValueInputButtonRef","customValueInput","styleWidth100","valueInput","operatorDropdownOrChoiceText","operatorLabel","_getColumnFilterValue","_getColumnFilterValue2","MAX_VALUE_COUNT_TO_DISPLAY","valueCountToDisplay","COLUMN_FILTERING_EMPTY_CHOICE_FILTER_TEXT","pluralizer","COLUMN_FILTERING_NONEMPTY_CHOICE_FILTER_TEXT","columnFilterLabelCell","filterLabelCellColSpan","filterLabel","columnFilteringLabel","tdClasses","cellContentClasses","columnFilterCell","valueFromProps","shouldShowValueEditor","valueRequired","getColumnRequiresValueFromOperator","removeTooltip","hasStateInitialized","filterValue","NOW_BUTTON_STATEFUL_CLICKED","NOW_DATE_TIME_ENTER_KEYDOWN","NOW_DATE_TIME_FOOTER_ACTION_CLICKED","NOW_DATE_TIME_OPENED_SET","NOW_DATE_TIME_INPUT","NOW_DROPDOWN_ITEM_CLICKED","NOW_INPUT_ENTER_KEYDOWN","REFRESH_TIMEOUT","NOW_LIST_COLUMN_FILTER_APPLIED","mapPath","dateTimeManageOpenedPath","getColumnFilteringUserPreference","getColumnFilteringUserPreferenceKey","setColumnFilteringUserPreference","isColumnValueEmpty","columnValue","findFullOperator","_find","getDefaultOperatorForType","getBackupOperator","defaultOperator","getUpdatedStateForOneCol","newOperator","newDateTimeState","selectedOperatorObject","getColumnOperatorFromState","columnStateValue","columnFilteringBehavior","getColumnValueFromState","getDateTimeState","getDefaultDateTimeState","resetColumnState","structuredClone","handleFilteringIconicButtonClicked","updateShowColumnFilteringRowState","emitApplyAction","columnFilterRemoved","handleDateTimeActionsClicked","handleOpeningDateTimeCalendar","showColumnFilteringRow","handleButtonClicked","openChoiceColumnFilterPopover","selectAllOrNone","handleInputValueUpdate","dateFormatFromColumn","selectedOperatorConfig","dateFormatOverride","handleDateTimeValueUpdate","newValueInUnix","handleCheckboxCheckedSet","_state$behaviors$colu","choiceKey","isChecked","shouldCheck","_state$behaviors$colu2","handleOperatorUpdate","handleInputAndDateTimeKeyDownApply","handleSelectApply","oldOperator","isColumnEmpty","shouldOperatorEmit","focusedCellActions","exitCellTrap","handlePropertyChanged","NOW_LIST_HEADER_CELL_TEXT_CLICKED","HEADER_CELL_TEXT_CLICKED","headerTextClicked","handlePopoverClosed","activeColumnKey","SET_COLUMN_WIDTHS","INIT_COLUMN_WIDTHS","SET_FINAL_AUTO_WIDTHS","ADD_RESIZE_OBSERVER","COL_MIN_WIDTH","TABLE_LAYOUT_AUTO","TABLE_LAYOUT_FIXED","COLUMN_WIDTHS_UPDATED","COLUMN_RESIZE_STARTED","COLUMN_SIZE_UPDATED","COLUMN_RESIZE_COMPLETED","COL_RESIZE_MIN_WIDTH","RESIZE_SLIDER_CLASS","onResizeStart","tableLayout","resizeGuide","getHeaderAndSliderElements","headerElement","sliderContainer","scrollToIfNotInView","containerRight","onSizeUpdated","getColGroup","onResizeCompleted","_target$dataset","columnResizeBehavior","nowResizeBehavior","updateWidth","columnWidth","_columnSelectors$getC","columnWidthsState","autoWidths","getFinalCalculatedAutoWidths","finalAutoWidths","widthsChanged","thElements","thElementsMap","autoWidth","columnResizingEnabled","saveColumnAutoWidth","initColumnAutoWidth","autoWidthsCount","addResizeObserver","setFinalWidths","disconnectResizeObserver","saveResizedColumnWidth","columnHeaderNode","currentAutoWidth","updatedWidth","columnsWidths","getSavedWidth","getTableLayout","checkIfWidthsChanged","updatedColumns","_updatedColumns$some","columnWidthBehavior","COMPONENT_ERROR_THROWN","overlayCustomEmittedActions","overlayCustomConfigPath","overlayDefaultComponentProps","overlayComponentTag","overlaySelectors","getOverlayShowColumnHeaders","overlayDefinition","getOverlayType","getOverlayMessageConfig","hasErrorMessage","getOverlayLoaderConfig","getOverlaySkeletonLoaderConfig","getOverlaySkeletonLoaderNumColumns","getCustomOverlayDefaultComponentProps","getCustomOverlayComponentTag","hasCustomOverlayEmittedActions","getCustomOverlayEmittedActions","popoverPositionPath","columnRowIndexPath","columnCellIndexPath","rowIndexPath","cellIndexPath","popoverConfigPath","configPositionsPath","configDismissOnScrollPath","configDisableScrollPath","configHideTailPath","dismissablePath","popoverContentPath","popoverContentText","popoverContentButtons","ariaLabelPath","variantPath","sizePath","labelPath","iconPath","tooltipContentPath","metaPath","idPath","popoverContentActions","childrenPath","sublabelPath","countPath","disabledPath","presencePath","popoverContentComponentTag","popoverContentDefaultProps","popoverCustomCellEmittedActions","popoverInteractionTypes","DIALOG","LISTBOX","defaultHeaderPopoverPositions","defaultRowPopoverPositions","defaultPositions","popoverContentTypes","TEXT_CONTENT","CUSTOM_CONTENT","RENDER_CONTENT","INVALID_CONTENT","ACTION_CONTENT","popoverSelectors","isHeaderTargetPosition","hasHeaderRowIndex","hasHeaderCellIndex","getHeaderTargetRowIndex","getHeaderTargetCellIndex","isRowTargetPosition","hasRowIndex","hasCellIndex","getTargetRowIndex","getTargetCellIndex","hasPopoverText","getPopoverText","hasPopoverButtons","getPopoverButtons","getPopoverButtonAriaLabel","getPopoverButtonVariant","getPopoverButtonSize","getPopoverButtonLabel","getPopoverButtonIcon","getPopoverButtonMeta","getPopoverButtonId","getPositions","getPopoverType","getActions","getActionsLabel","getLabel","getSublabel","getPresence","hasPopoverAction","hasPopoverCustom","getHighlightedMessage","getButtonsConfig","getIsLoading","getPopoverComponentTag","getPopoverComponentDefaultProps","hasCustomPopoverEmittedActions","getCustomPopoverEmittedActions","getDismissOnScroll","getDisableScroll","getHideTail","getDismissable","isTextContent","isCustomContent","isActionListContent","_popoverDefinition$co","getInteractionType","getPopoverContentType","getActiveActionItem","_actions$","flattenColumns","flattenedColumns","hasCustomColumnTag","hasComponentLoaded","isComponentLoaded","hasCustomColumnFilterTag","addComponentTagIfNotLoaded","componentTags","processColumns","processCustomRows","customRow","processPopover","processOverlay","getComponentTagsToLoad","componentBootstrappedHandler","fetchingComponents","isDefined","fetchCount","propertyChangedHandler","componentLoadCompletedHandler","componentLoadFailedHandler","fetchAndCacheIcons","componentLoaderBehavior","createComponentLoaderEffect","cellSelectors","getEditingDisabled","getColor","getImageSrc","getPersonKey","getLinkLabel","getUrlLabel","hostname","hasHighlightedValue","getHighlightedValue","NOW_DROPDOWN_LIST_ITEM_CLICKED","POPOVER_DROPDOWN_ITEM_CLICKED","ROW_HIGHLIGHT_ACTIVATED","ROW_HIGHLIGHT_DEACTIVATED","ROW_FOCUSED_INTERNAL","NOW_LIST_ROW_FOCUSED","ROW_BLUR_INTERNAL","NOW_LIST_CONTEXT_ACTION_CLICKED","NOW_LIST_COLUMN_HEADER_ACTION_BUTTON_CLICKED","CELL_ACTION_KEBAB_BUTTON_CLICKED","COLUMN_HEADER_ACTION","CELL_ACTION","ROW_ACTION","ACTION_POPOVER_TYPE_COLUMN_HEADER","ACTION_POPOVER_TYPE_ROW_AND_CELL","NOW_LIST_ACTIONS_POPOVER_DISMISS_ON_SCROLL","NOW_LIST_ACTIONS_POPOVER_HIDETAIL","GROUP_ACTION","COLUMN_HEADER_ACTION_LABEL","CELL_ACTION_LABEL","ROW_ACTION_LABEL","getActionLabel","typeOfAction","contextActionsBehaviorHelpers","rowSelectionState","_event$path","cellElement","isValidTableBodyCell","isValidTableHeaderCell","getContextObject","rowPath","getContextRows","cellKey","groupIndex","fullRowPath","getColumnContextObject","headerCellElement","getActionPopoverType","_event$path2","isThead","hasActionsForRowCellPopover","getCellActions","updateFloatingElementPosition","getFloatingTargetElement","getRowAndCellDropdownItems","dropdownItems","groomedCellActions","hasRowActions","cellActionsSection","rowActionExcludes","rowActionsDropdownItems","rowAction","rowActionsSection","actionButtonClickedHandler","columnHeaderIndexes","eventPayload","actionItem","_payload$actionItem","listActionClickedHandler","contextMenuEventHandler","actionPopoverType","popoverItems","getCellActionAriaLabel","cellActionMenuClickedHandler","contextActionsBehavior","NOW_LIST_CUSTOM_COMPONENT_ACTION_DISPATCHED","NOW_LIST_CUSTOM_COMPONENT_ACTION_DISPATCHED_INTERNAL","CUSTOM_ROW_ACTION_DISPATCH","CUSTOM_CELL_ACTION_DISPATCH","CUSTOM_COLUMN_FILTER_ACTION_DISPATCH","ROW_ELEMENT_PATH","getCustomRowContextObject","rowElement","ADDED_EVENT_LISTENERS","callbackListener","customComponentActionDispatchEffect","cellContext","columnFilteringPayload","contextObject","customRowContextObject","getEmittedActions","customEmittedActions","updateEventListeners","shouldAddListener","nodeElement","eventListeners","uniqueActionNames","listenersUpdated","customCellEmittedActionsNew","customCellEmittedActionsOld","customCellEmittedActionsToRemove","customCellEmittedActionsToAdd","componentDisconnectedHandler","combinedCustomCellEmittedActions","customCellDynamicActionBehavior","tableRenderedEffect","incomingRender","tableSelector","isTableEmpty","overlayWithHeaders","tableNode","isTableRendered","tableHeadNode","tableBodyNode","hasGroupRowButton","shouldFocusFirst","resetBehaviorEffect","updateTableRefEffect","tableHost","newTable","rowSpanMap","rowSpanObj","pointerCell","remainingLength","rowSpanItem","allowTableFocusEffect","behaviorState","domQuery","firstCellRef","moveFocusEffect","enterCellTrapEffect","scrollableContent","nodeToFocus","exitCellTrapEffect","refreshCellTrapEffect","keydownHandlerEffect","_nextRow$node","popoverTriggerClasses","isPopoverFocused","isInputFocused","isHTMLScrollCell","nextRow","scrollableCell","innerClickHandlerEffect","_state$popoverState","popoverState","popoverOpen","outerClickHandlerEffect","hoistedElements","clickFromTable","clickFromHoist","propChangeEffect","shouldTriggerRerenderFn","popoverClosedEffect","updateKeyboardNavEffect","focusListEffect","keyboardNavBehavior","NOW_LIST_CELL_LINK_CLICKED","NOW_LIST_GALLERY_CARD_CLICKED","cellLinkClickedHandler","linkBehavior","SORTABLE_ACTION_PREFIX","NOW_LIST_ROW_SORT_END","NOW_LIST_ROW_SORT_START","NOW_LIST_ROW_DROP_AREA_CHANGE","NOW_LIST_ROW_SORT_CANCELLED","ROWS_REORDERED","DRAG_CANCELLED","ROW_DRAG_HANDLE_CLASS","ROW_CHECKBOX_INTERNAL_SET","NOW_LIST_ROW_SELECT_TOGGLED","NOW_LIST_SELECT_ALL_TOGGLED","SORT_COLUMN_EVENT","COLUMN_REORDER_EVENT","ROWS_REORDER_EVENT","ROW_CHECKED","ASCENDING","DESCENDING","METRIC_TRACKED","metricsBehavior","movedRows","rank","NOW_TEMPLATE_MESSAGE_EMPTY_STATE_ACTION_CLICKED","MESSAGE_OVERLAY_ACTION_CLICKED","NOW_LOADER_ACTION_CLICKED","LOADER_OVERLAY_ACTION_CLICKED","messageActionClickedHandler","loaderActionClickedHandler","overlayBehavior","NOW_LIST_SCROLLED","nowListScrollHandler","targetTypes","HEADER_TARGET","ROW_TARGET","MATCHER_TARGET","INVALID_TARGET","popoverBehaviorHelpers","getPopoverTargetType","getRowTarget","getHeaderTarget","headerRow","headerCellIndex","headerCell","getPopoverTarget","targetType","setPopoverState","componentTreeRenderedActionHandler","popoverTargetType","popoverOpenedSetEffect","popoverTableScrollEffect","popoverButtonClickedEffect","internalPopoverHandler","_popoverTarget$curren","closeInternalPopoverHandler","popoverDefinitionBehavior","rowDefinitionsPath","hasDuplicateRowKeys","rowIndexesMap","rowKeyAlreadyExists","getRowIndexesMap","rowHighlightActivatedHandler","activeRowKey","rowHighlightDeactivatedHandler","rowBlurHandler","rowFocusHandler","rowDefinitionsBehavior","rowDragSourcePlaceholder","rowDragDestPlaceholder","rowDragClone","dragHandleCell","displayLabelCell","dragCellClone","displayLabelCellClone","sortableOptions","rowsPath","handleRowDragStart","handleRowDragDropAreaChange","handleRowDragDropCancel","handleRowDrop","rowsBeforeUpdate","movedItem","rowsAfterUpdate","hasNewRows","currentRowDefinitions","previousRowDefinitions","previousRows","currentRows","currentRowsKeys","previousRowsKeys","refreshDragDrop","rowDragDropBehavior","SN_LIST_GALLERY_GROUP_EXPANDED","SN_LIST_GALLERY_GROUPS_EXPANDED","SN_LIST_GALLERY_VIRTUALIZED_SCROLL_BOTTOM_REACHED","NOW_LIST_VIRTUALIZED_SCROLL_BOTTOM_REACHED","NOW_LIST_ROW_CLICKED","componentBootstrappedActionHandler","groupedRows","groupKeys","expandedGroupsArray","groupIdsException","newExpandedGroupsArray","allExpandedChildrenValues","expandedGroupKey","handleSingleGroupToggle","exceptions","groupRowKeys","remainingExpandedGroupKeys","groupContext","handleAllGroupsToggle","handleGroupToggle","rowGroupingBehavior","ROW_HIGHLIGHTED_STATE_PATH","TABLE_SELECTOR","SCROLL_CONTAINER_SELECTOR","rowHighlightedHelpers","getRowSelectorByKey","getScrollBehavior","scrollDownToRow","scrollBehavior","initialDistance","previousScrollDistance","visibleCheckLoop","rowRectInner","scrollRect","newScrollDistance","previousScrollHasStopped","scrollRowIntoView","rowKeyToScroll","rowToScroll","rowRect","scrollContainerRect","isRowAboveColumnHeader","isRowBelowScrollContainer","scrollDistance","scrollWaitTime","checkIfNewHighlightedRows","previousHighlighted","highlightedRowKeys","componentDomTreeReadyEffect","componentRenderedEffect","componentPropertyChanged","rowHighlightedBehavior","rowHighlightedState","rowSelectionHelpers","_areAllRowsSelectedReducer","enabledRows","isRowTypeDefault","areAllRowsSelected","getAllSelectedRows","selectedRowKeys","setInitialRowSelectionState","toggledSelectionRowIndex","selectAllRows","rowSelectionEffect","updatedSelectedRows","allRowsSelectionEffect","isSelectAllCheckbox","selectedRowsNew","selectAllRowsNew","selectedRowsOld","selectAllRowsOld","rowSelectionBehavior","ROWS_ENTERED_VIEW","TOP_LOADER_ENTERED_VIEW","BOTTOM_LOADER_ENTERED_VIEW","TOP_BOUND_ENTERED_VIEW","BOTTOM_BOUND_ENTERED_VIEW","LONG_SCROLL_TRIGGERED","SCROLL_TO_TOP_TRIGGERED","SHOW_SCROLL_TO_TOP_BUTTON","HIDE_SCROLL_TO_TOP_BUTTON","HANDLE_SCROLL_BOTTOM_REACHED","RETRY_PREPARE_VIRTUALIZED_OBSERVER","VIRTUALIZED_SCROLL_BOTTOM_REACHED","VIRTUALIZED_LIST_BEHAVIOR","TABLE_BODY","DEFAULT_ROW_HEIGHT","SCROLL_TO_TOP_START_ROW","SCROLL_BOTTOM_REACHED","RETRY","processEvents","intersectionEvents","intersectEvent","scrollToTopRef","topLoaderRef","bottomLoaderRef","topBoundRef","bottomBoundRef","endOfScrollReachedRef","ghostRowObservedElements","ghostRowIdsToIndex","handleIntersectionEvents","VirtualizedObserver","isTopLoaderVisible","isBottomLoaderVisible","isTopBoundVisible","isBottomBoundVisible","observedItems","itemRefs","observedEvents","observerCallback","itemRef","unobserveItem","observerByNowId","LOADER_REF_POSITION_PERCENTAGE","getObserver","getVirtualizedBehaviorState","destroyObserver","executeAfterBrowserStyleAndLayout","getRowRefs","renderedRows","topBound","bottomBound","allRowsFromProp","initializeVirtualizedObserver","topGhostRows","bottomGhostRows","slicedRows","virtualizedObserver","observeItem","BLOCK_LOAD_SIZE","newBlockLoading","isRenderingSecondPhase","showScrollToTopButton","prepareVirtualizedObserver","cleanupMemory","handleBottomReached","updatePrevBlock","updateNextBlock","updateAfterLoading","handlePrevBlock","newTopBound","newBottomBound","handleNextBlock","isBottom","topBlockOffset","newBottomIndex","handleLongScroll","resetKeyBoardNavBehavior","scrollToTop","firstRow","displayScrollToTopButton","hideScrollToTopButton","_value$metadata","scrollToTopContainer","handleRowsEnteredView","handleComponentTreeRendered","prevBottomBound","prevTopBound","handleRetryPrepareVirtualizedObserver","handleComponentDomReady","tableBodyYPos","scrollContainerYPos","viewPortInnerHeight","handleGroupToggled","virtualizedListBehavior","SN_LIST_GALLERY_CELL_LINK_CLICKED","SN_LIST_GALLERY_PERSON_CLICKED","SN_LIST_GALLERY_EXPAND_ALL_GROUPS","SN_LIST_GALLERY_CONTEXT_ACTION_CLICKED","SN_LIST_GALLERY_CARD_SELECTED_SET","SN_LIST_GALLERY_SELECT_ALL_CLICKED","SN_LIST_GALLERY_CARD_SELECTED","SN_LIST_GALLERY_CARD_CLICKED","SN_LIST_GALLERY_HEADER_ACTION_CLICKED","NOW_CARD_HEADER_ACTION_CLICKED","NOW_LIST_CARD_PERSON_CLICKED","PERSON_FIELD_ICON_SIZE","BridgeEventMapping","nowListBridgeBehavior","fromEntries","actionToDispatch","isTrue","isHiddenControlsEnabled","hiddenControlsPreference","floatingTarget","_props$rowContextPosi","_props$rowContextPosi2","_props$rowContextPosi3","_props$rowContextPosi4","rowContextPosition","overlayContentClassName","loadingLabel","renderMessageOverlay","renderLoaderOverlay","renderSkeletonLoaderOverlay","skeletonCols","skeletonRow","skeletonBodyRows","renderCustomOverlay","overlayProps","bodyRows","isHeader","skeletonCell","cellClasses","overlay","showHeaders","overlayContent","overlayClassNames","componentTreeRenderedEffect","popoverIsFocused","nowCellEditButtonClickedEffect","updatedValue","nowCellEditorContentValueUpdatedEffect","updatedState","updateInputTypeValueEffect","updateProperty","updateUrlValueEffect","updateBooleanValueEffect","cellEditValue","updateDateTimeValueEffect","updatePillsValueEffect","updateChoiceValueEffect","isIconTypeCellEditor","updateHTMLValueEffect","dateEditorVariant","CONSTRAIN_DEFAULTS","CANCEL_DISPATCH","CANCEL_UPDATE","toggleSelectedItem","undeferList","hasBeenUndeferred","listRef","autoSelectMatch","selectedIds","exactMatches","dispatchSafariLiveMsg","moveActiveItem","optionPrefix","activeItemId","togglePanel","disableAutoClose","replaceContent","placeholderTooltipVisible","itemSelectable","fromTypeahead","pills","focusLastPill","focusNextPill","activePill","focusedPillIndex","focusPreviousPill","autoSelected","toggleItems","placeholderOverflowOverride","placeholderOverflowChecked","handleClickTrigger","handleKeydownInput","handleKeydownPill","renderIconIdentifier","renderAvatarIdentifier","renderDismissIcon","removeLabel","renderPills","_item$avatarProps","_item$avatarProps2","_item$label","_item$avatarProps3","avatarImage","avatarIcon","pillSize","renderNativeInput","removedPill","removedPillIndex","selectedPillItems","pillItems","ColumnSelectors","choiceItems","internalValue","cellEditLabel","COLOR_LIST","cellEditColor","_properties$actionsCo","cellEditPersonKey","cellEditPersonUrl","shouldDisplayAvatar","seismicComponentprops","channels","decorationsSchema","seismicProps","recordSysId","onValueChange","onStagedValueChange","fieldType","SeismicControlledFieldProps","onMouseEnter","onMouseLeave","onFocus","onBlur","onKeyDown","onKeyUp","onKeyPress","SeismicComponentProps","SeismicComponentFieldPropDefaults","SeismicComponentBase","escapeSeismicSpecialSymbols","getFieldDisplayValue","isAttrTrue","isAttrFalse","castIfBoolean","getSerializedChanges","dependentField","dependentValue","serializedChanges","getEncodedRecord","isNewRecord","encodedRecord","isClassicForm","classicForm","generateSubComponentIds","baseId","additionalFields","hasProp","getAriaAttr","camelCased","accessibilityAttributes","ids","defaultDescribedby","resolveAriaAttr","propAriaLabel","propAriaLabelledby","propAriaDescribedby","propAriaDisabled","propAriaHidden","propAriaRequired","propAriaInvalid","restOfAriaProps","isFieldEditableAndDependentFieldValueSet","dependentFieldValue","dependentFieldLabel","getBaseURL","getAriaLabelFromConfig","labelTemplate","additionalTemplateValues","getDeclarativeActionsProps","daProps","_controlProps$formDat","controlProps","canWrite","declarativeUiActions","dependentTable","dictionary","displayValueList","fetchDeclarativeActions","referenceKey","referenceSysId","referenceTable","referringRecordId","referringTable","visible","referenceQualifier","ignoreDepAsRefQual","ignoreReferenceQualifier","findAncestor","isNodeInEventPath","nodeContainsFocus","isSlotEmpty","hasNoDirectChildren","getScrollParent","fitDropdownToViewport","parentHeight","MAX_DROPDOWN_HEIGHT","targetTop","targetBottom","targetLeft","fitDropdownToViewportOld","scrollParent","fieldFocusHandler","nativeInputNode","shallowEqual","objA","objB","keysA","keysB","FIELD_MESSAGE_TYPES","CALLBACK_AND_DISPATCH","CALLBACK_AND_DISPATCH_WITH_STATE","NOW_INPUT","VALUE_SET","INVALID_SET","INPUT","TRACK_RECOMMENDATION_CLICK","FIELD_RECOMMENDATION_INFORMATION","NO_PREDICTIONS_AVAILABLE","SUGGESTION_PREFIX","getLiveUpdateMessage","liveUpdate","isUserModified","parsedFieldMessages","getMessage","transformMessages","messageMap","pushInfoMessageForDependentFields","transformDescriptionAndMessages","momentLocale","isoWeekdays","isTimeZoneEnabledField","transformState","sysPropValue","presourceGetProperty","getPageProperty","siteName","sysPagePropValue","experienceConfigs","pageProperties","checkIfFieldIsSelected","stagedPath","pathItem","updatedPath","getParentTableName","parentPathArray","dataModel","parentTableName","tableData","fieldData","referenceDataKey","transformFieldNameData","fieldNameData","referenceTypes","allowDotWalking","enabledTables","isFieldReferenceType","isReference","reducedValue","transformPathData","tableNameCurrent","firstField","transformFieldNameMetadata","constructDataModel","leafPathSource","transformedMetadata","transformedPath","getFieldNameValue","getFieldNameDisplayValue","getDataModelWithToggledFields","fieldToBeDeleted","updatedIdArray","dataModelToUpdate","popoverDescription","customLabel","customHighlightedLabel","highlightedValueLabel","variantName","colorName","normalizeHighlightedValues","highlightedValues","defaultHighlightedValue","customHighlightedValues","renderDecorations","decorations","fromControlWrapper","marginInlineStart","digits","_isInteger","_getInt","getDateFromFormat","i_val","i_format","ampm","MONTH_NAMES","DAY_NAMES","month_name","day_name","weekNum","setWeek","temp2","toPills","displayValues","convertToValueArray","toValues","getMatchesCount","itemDisplayValue","ComponentBase","_React$Component","React","ControlledField","onLeave","handleOutsideScroll","singleNode","keyboardHandler","mouseHandler","FocusWatcher","globalListener","onNodeBlur","setupGlobalListener","onGlobalBlur","persistant","nextProps","setFocusTarget","ShadyDOMEventFixer","_React$PureComponent","ReactDOM","ShadyDOM","ATTRIBUTES","MAPPED_TO_PROPS","guid","callAsync","shadowRootToSharedAccessibilityTargets","shadowRootToAccessibilityTargetsItemsQueue","shadowRootToAriaRefs","shadowRootToAriaRefsQueue","ariaRefHelpers","handleAriaAccessibility","ariaSetVnode","requiresRef","accessibilityTargets","ariaAttribute","ariaRef","setCurrent","ariaRefShadowRoot","ariaRefAssignments","ariaRefsQueue","assignments","ariaRefToAssignment","ariaRefAssignment","possibleParentAriaRef","setChildQuerySelector","buildQuerySelector","setParentAriaRef","getParentAriaRef","createAriaRefHierarchy","currentClone","setId","sourceShadowRoot","sharedAccessibilityTargets","targetShadowRoot","targetItemsWithSharedShadow","targetItemsSharedShadowQueue","handleAccessibilityTargets","unsubscribe","targetItemsShadowQueue","targetRefToTreeNode","targetItemRoots","targetItems","treeNode","parentTargetRef","parentAriaRef","targetRefToQuerySelector","rootTargetItem","firstItemWithTargetRef","childItem","selections","currentParent","currentChild","partialSelector","getChildQuerySelector","isAttribute","isMappedToProps","existingRef","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_renderer_react_index_jsdbx_b196f449__","renderHighlightedValueReact","ForwardProperties","allLowerCase","undefinedToNull","adaptCallbackForLegacyAPI","additionalInfo","createHOC","_OnValueChangeProvider","initialValueProp","initialDisplayValueProp","stopBubbling","OnValueChangeProvider","componentNameWithHash","createValueChangeCallbacks","dispatchCache","newProps","ignoreCache","callbackAndDispatch","doesPayloadMatchCache","propValue","disableTracking","configOrControl","fieldPropTypes","controlledFieldPropTypes","createCallbacks","createdCallback","dispatchPayload","withValueChangeCallbacksView","_state$helpers","createdCallbacks","componentConnectedEffect","behaviorName","parentBehaviors","propertyChangedEffect","updateKey","callbackAndDispatchEffect","_state$behaviors$beha","payloadMatchesCache","additionalOptions","parentHandling","valueChangeAction","isStageChangedAction","clearValueChangedCacheUpdate","allowFieldChangesAfterEveryStageChange","createWithValueChangeCallbackBehavior","callbackWithStateBehavior","passthrough","oldObj","updateAdditionalInfoState","setInitialStateWithValue","initialDisplayValue","derivedInitialDisplayValue","_omit","isSuggestionsOpened","stagedValue","withState","onValueChangeCallback","onStagedValueChangeCallback","encodedValue","handleInitialValue","isBlur","sAdditionalInfo","sError","formattedValue","_excluded2","mergedAdditionalInfo","createWithStateBehavior","trackInputChange","eventBased","fieldChangeHandlers","forceRenderOnBlur","parseAndFormat","inputChangeIsTracked","inputChanged","fieldRegex","errorMessages","isFieldValid","fromEvent","newAdditionalInfo","isRender","inlineValidationError","_validateInput","validationResult","pInitialValue","pInitialDisplayValue","_format2","_excluded3","isHandlingInitialValue","nextInitialValue","oldInitialValue","originalCallback","callbackPayload","isOnValueChange","checkAutofocus","wrapHelperContent","setInitialValue","hasValue","hasDisplayValue","newControlProps","isEncrypted","FIELD_TYPE","PASSWORD","eventTitle","trackBehavior","isRecommendation","DYNAMIC_TRANSLATION_TEXT_TRANSLATED","DYNAMIC_TRANSLATION_TEXT_TRANSLATION_REQUESTED","DYNAMIC_TRANSLATION_DETECTED_LANGUAGE","DYNAMIC_TRANSLATION_DETECT_LANGUAGE_REQUESTED","DYNAMIC_TRANSLATION_IS_ENABLED","DYNAMIC_TRANSLATION_IS_ENABLED_REQUESTED","translationActionTypes","detectionActionTypes","isEnabledActionTypes","GET_TRANSLATION_URL","GET_DETECTED_LANGUAGE_URL","IS_ENABLED_URL","IS_INSTALLED_URL","DYNAMIC_TRANSLATION_DETECTION_BEHAVIOR","DYNAMIC_TRANSLATION_TRANSLATION_BEHAVIOR","DYNAMIC_TRANSLATION_ISENABLED_BEHAVIOR","getMetaData","_pick","_pick2","CALL_IS_ENABLED","IS_ENABLED_SUCCESS","IS_ENABLED_ERROR","CHECK_IS_INSTALLED","CHECK_IS_INSTALLED_SUCESS","getInputValues","isEnabledRequestedPayload","isEnabledRequest","parms","isEnabledActions","pluginId","Accept","isInstalled","detection","isEnabledBehavior","CALL_DETECTED_LANGUAGE","DETECTED_LANGUAGE_SUCCESS","DETECTED_LANGUAGE_ERROR","dispatchSuccess","detectedLanguage","alternatives","dispatchError","handleSuccess","isValidInput","getDetectedLanguage","detectionRequest","detectionActions","detectionBehavior","CALL_TEXT_TRANSLATED","TRANSLATED_TEXT_SUCCESS","TRANSLATED_TEXT_ERROR","additionalParameters","sourceLanguage","targetLanguages","getTranslatedText","translationRequest","textToTranslate","translationActions","translationBehavior","TRANSLATED_BY","credit","TRANSLATING","UNABLE_TO_TRANSLATE","MISSING_CREDENTIALS","MAX_LENGTH_ERROR_MSG","LANG_NOT_SUPPORTED","NO_TEXT","FIELD_VALUE_CHANGED","RETRANSLATE","TRY_AGAIN","CLOSE","PREFERRED_LANGUAGE","TRANSLATE","FORM_CLICK_WORKSPACE","METRICS_TRANSLATE_BUTTON_CLICKED","METRICS_CLOSE_TRANSLATED_TEXT_PANEL","METRICS_TRYING_TRANSLATION_AGAIN","METRICS_RETRANSLATE_TEXT_REQUESTED","htmlStr","trackDynamicTranslationEvents","translatedInputEffect","translatedState","translatedResponse","_translatedResponse$d","translationsObj","detectedLang","targetLanguage","translatedText","handleDynamicTranslationClick","isHTML","dtsRequestBody","parameterName","parameterValue","dynamicTranslationBehaviour","_payload$response","_payload$response2","isTranslationEnabled","dictionaryAttributes","_state$translatedText","recordMetics","isRetranslate","handleDynamicTranslationBlur","previousTranslatedText","previousText","currentStatus","renderTranslatedText","renderTranslateIcon","DEFAULT_BUTTON_PROPS","hideButtonOnDialog","strictlyUseDefaultPresetAction","isCaretForDropdown","DEFAULT_RECOMMENDATION_DIALOG_PROPS","insertButtonLabel","refineButtonLabel","WWNA_INSERT_RECOMMENDATION_CLICKED","WWNA_RECOMMENDATION_DIALOG_CLOSED","WWNA_PRESET_ACTION_CLICKED","NOW_TEXTAREA_INPUT","NOW_TEXTAREA_SELECTION_CHANGED","NOW_RECORD_NOWASSIST_SHOW_HIDE_NOWASSIST","RESOLUTION_TRIGGER_ACTION_ID","sanitizeNACMValue","removeAllWhitespace","textHasMinWordCount","minWords","replaceSelectedText","nacmValue","getCursorPositionAfterInsertion","textWithInsertion","insertedText","insertionIndex","getNowTextarea","hostElement","_hostElement$shadowRo","_textareaParent$shado","updateTextareaElementSelection","setSelectionRange","getNACMConfigDetails","inputFocused","wwnaDialogOpened","isUserTriggered","draftedText","minWordCount","isComponentVisible","componentSelectedText","renderNowAssistContextMenu","nacmConfig","contextMenu","documentTableName","documentSysId","wwnaComponentId","buttonProps","recommendationDialogProps","nowAssistActionsBehavior","_Object$keys","nowAssistConfig","_variableSets$some","variable_sets","variableSets","componentLoaded","_v$props","config_type","user_triggered","sanitizedNacm","nextCursorPosition","_getNowTextarea","wwnaOffsets","WIDTH","MIN_HEIGHT","MAX_HEIGHT","COMPONENT_NAME","recommendationsHelper","CHARACTER_COUNTER_WARNING","CharacterCounter","charCount","makeClass","normalizePlaceholder","setInnerRef","innerRef","onFocusEvent","onBlurEvent","onMouseOverEvent","onMouseOver","onMouseOutEvent","onMouseOut","onChangeEvent","onNDSChange","changeEvent","getMaxlengthLabel","ignoreMaxlength","renderTextarea","isTrigger","_fieldRegex$","fitToParent","textValue","maxlengthLabel","resolvedPlaceholder","onMouseDown","autoresizeLineLimit","_suggestions$items","_fieldRegex$2","propAriaLabelledBy","ignoremaxlength","showRecommendationIcon","mobileKeypadType","renderInputWithDropdown","_transformedOptions$h","showDropdownWithoutFocus","highlightedIndex","transformedOptions","renderInputWithSuggestions","suggestedItems","sectionLabel","emptyMessage","transformedSuggestions","renderTextareaElement","renderInputElement","SNInput","NOW_TEXTAREA_VALUE_SET","handleChange","callParentOnChange","ControlWrapper","wrapperRef","fieldset","alignCenter","snFormFieldClassName","wrapperClass","getLabels","getMessageMap","hasMessages","FieldMessages","messageMapResult","POPOVER_CONTENT_TAG","react","renderFieldHelper","Label","SNInputGroup","trackBootstrap","SysId","Table","FieldType","FieldLabel","withValueChangeCallbackBehavior","trackBootstrapBehavior","handleOutsideScrollFocus","fallbackDropdownBehavior","oldIconToEDSIcon","iconProp","iconic","reverseIconPlacement","ButtonComponent","handleButtonClick","POST_ATTACHMENT_QUERY","POST_DATA_START","POST_DATA_PROGRESS","POST_DATA_SUCCESS","POST_DATA_FAILURE","GET_ATTACHMENTS_DATA","GET_ATTACHMENTS_SUCCESS","GET_ATTACHMENTS_FAILURE","EDITOR_ON_CHANGE","EDITOR_ON_KEYDOWN","EDITOR_ON_FOCUS_OUT","EDITOR_ON_FOCUS_IN","EDITOR_ON_BLUR","EDITOR_ON_FOCUS","EDITOR_ON_CLICK","EDITOR_SET_CONTENT","EDITOR_SET_FOCUS","EDITOR_ON_RESIZE","EDITOR_ON_ITEM_SELECT_TRACK","INSERT_PILL","CODE_BLOCK_PATTERN","PLUGIN_BLOCKLIST","OBSOLETE_PLUGINS","REQUIRED_PLUGINS","EDITOR_VERTICAL_RESIZE_TYPE","EDITOR_CONTENT_MARGIN","EDITOR_LINE_MARGIN","EDITOR_FONT_HEIGHT","EDITOR_TOOLBAR_HEIGHT","EDITOR_STATUSBAR_HEIGHT","SETUP_TINYMCE_EDITOR","REMOVE_TINYMCE_EDITOR","DEFAULT_FONT_FAMILY","DEFAULT_FONT","DEFAULT_FONT_SIZE","DEFAULT_FONT_FORMAT","DEFAULT_HEIGHT","OVERRIDE_OVERFLOW_SELECTOR","OVERRIDE_OVERFLOW_STYLE","VALID_LINK_TARGETS","MAXIMUM_DOM_PARSING_DEPTH","TEXT_AREA_ID_PREFIX","DEFAULT_ARIA_LABEL","TOOLBAR_INSTRUCTION_TEXT","FIT_TO_PARENT_OPTION","removeTinymceEditor","_tinymce$settings","TinyMCEEditor","isDark","BACKGROUND_PRIMARY","NEUTRAL_0","NEUTRAL_20","calcLum","applyDarkSettings","_do_not_use_is_dark_theme","THEME_SASS_VARS","variantMappings","neutral","yellow","magenta","pink","orange","brown","NDSCssVarMap","getThemeVars","reduceToCssVars","themeVars","customVar","getMappedThemeDefinitions","cssVars","applyTheme","nodeFound","NDS_INTERNAL_THEME_UPDATE_ACTION","tinyMceThemeBehavior","TINYMCE_THEME_BEHAVIORS","getAssetPath","REPLACE_REGEX","overrideAddCacheSuffix","__sn_addCacheSuffixOverwritten","oldAddCacheSuffix","RENAMED_PLUGINS","imagetools","toc","RENAMED_TOOLBAR_ITEMS","formatselect","fontselect","fontsizeselect","styleselect","tocupdate","uMap","renameMap","filterOut","splitPlugins","splitToolbars","renameToolbar","replacementMap","transformPlugins","transformValidButtons","validButtons","transformToolbar","renameToolbarGroup","toolbarItem","TinyMCEV5CompatibleMode","validPlugins","modifiedValidPluigins","modifiedPlugins","modifiedValidButtons","modifiedToolbar","PLUGIN_NAME","PLUGIN_PATH_URL","getFieldNowAssistContextMenuSettings","now_assist_context_menu","fieldMeta","skillConfig","getFieldNowAssistContextMenuExternalPlugin","checkIfPluginIsActive","isParagraphOrList","isUlOrOl","elementHasNonTextContent","getSmallestLineHeight","lineHeights","iterateAllValidNodes","getElementDetails","lineCount","smallestLineHeight","numOfLines","getEditorDynamicInfo","currentLineCount","contentHeight","listElements","listElement","elementDetails","applyAutoresizeLineLimit","minLineCount","toolBarHeight","statusBarEle","statusBarHeight","contentMarginTop","contentMarginBottom","calculatedHeight","childElements","lineElement","editorInfo","currentMaxHeight","getDimensionInfo","linesBasedHeight","getMappedLanguage","getAutoresizeOptions","autoresizeBottomMargin","autoresize_bottom_margin","insertContentAndScroll","iframeBounds","iframeShouldScrollDown","iframeShouldScrollUp","minPortionToView","pageShouldScrollDown","pageShouldScrollUp","collapseToolbar","validItems","stripCodeBlocks","swapDivsWithSpans","htmlString","tempDiv","divTag","spanTag","getResponseTemplateConfig","responseTemplates","enableResponseTemplates","defaultSuggestions","suggestionsHeader","defaultSuggestionsFetcher","noMatches","resourceTable","recordTable","resourceSysId","setEditorStyle","tinymceIframe","customStyleTag","_fonts$split$","DEFAULT_BODY_STYLES","getAttachmentExtensions","isValidFileExtension","getAttachmentListHandler","mapAttachments","attachment","file_name","table_sys_id","getNameCb","selectedFile","filePickerHandler","onchange","getA11yCheckerOptions","resetUndoStack","setupTinymce","_config2","_config3","_config4","browserSpellcheck","enableMentions","isJournal","powerPasteHtmlImport","powerPasteWordImport","powerPasteFilterInlineElements","convertBlobsToBase64","preloadMentions","mentions","TOOLBAR_BLOCKLIST","toolbarItems","showBarsOnFocus","responseTemplateConfig","pluginItems","heightSettings","autoresizeSettings","configProp","htmlEditorConfigs","menuConfigs","sn_mentions","cannotSeeRecordMsg","help_tabs","advlist_bullet_styles","auto_focus","branding","sn_convert_blobs_to_base64","browser_spellcheck","convert_urls","convertUrls","link_default_target","dialog_type","document_base_url","elementpath","extendedValidElements","file_picker_types","font_family_formats","font_size_formats","highlight_on_focus","image_title","image_advtab","tools","help","pagebreak_separator","powerpaste_html_import","powerpaste_word_import","powerpaste_clean_filtered_inline_elements","promotion","relative_urls","relativeUrls","remove_script_host","removeHost","statusbar","style_formats","style_formats_merge","text_patterns","link_target_list","iframe_aria_text","file_picker_callback","images_upload_handler","blobname","link_list","video_template_callback","embedCode","media_alt_source","media_poster","sn_settings","hotkeys","readonlyBottomBorder","contextmenu","editorNotificationsManager","postAttachmentEffect","progressActionType","postAttachmentStartEffect","postAttachmentProgressEffect","progressEvent","postAttachmentSuccessEffect","postAttachmentFailureEffect","getAttachmentsEffect","getAttachmentsSuccessEffect","getAttachmentsFailureEffect","editorOnItemSelectTrackEffect","telemetry","insertPillEffect","tooltipValue","pillContent","moveCursorToEnd","isValuePropertyChanged","allowBlockBasedAnchors","setupTinymceEditorEffect","oldHeightProps","newHeightProps","_editor$theme","resizeBy","domReadyEffect","insertPill","pillInfo","getEditorContent","useCodeBlocks","isOnChangeEventFromFocus","isOnChangeEventFromContentUpdate","editorOnChangeEffect","editorOnBlurEffect","editorOnKeyDownEffect","editorSetFocusEffect","editorOnFocusEffect","editorOnClickEffect","editorSetContentEffect","editorOnResizeEffect","onResize","onResizeEvent","onStagedValueChangeEvent","onValueChangeEvent","NowHtmlEditor","enableCodeBlocks","childProps","_properties$autoresiz","configMentions","ignoreInlineAttachmentPrefix","defaultButtonsConfig","renderPopoverCellEditContentActions","popoverButtons","_componentDefaultProp","_componentDefaultProp2","_popoverSelectors$get","NOW_BUTTON_CLICKED_POPOVER_CONTAINER","buttonClickedHandler","buttonIndex","renderTextContent","contentText","renderContentActions","dropdownItemClickedHandler","filterChoicesByTerm","handleChoiceFilterInputClear","choiceFilterInputRef","choiceFilterTerm","handleChoiceFilterInputInput","selectAllOrNoneLabel","allLabel","noneLabel","choiceFilterInputLabel","choiceFilterClearButtonLabel","_getChoices","_choices$","_getPillsChoices","filteredChoices","emptyChoiceItem","shouldDisableApplyButton","getPopoverContentView","popoverContent","hook-insert","handleCardClicked","cardItem","handleCardSelection","allCardKeys","handleHeaderActionClicked","_cards$groupIndex$chi","_cards$groupIndex","_cards$cardIndex","cardIndex","cards","groupingState","isGroupedData","targetCard","galleryCardInteractionBehavior","SN_LIST_GALLERY_VIEW","CLASSNAMES","SN_LIST_GALLERY","SN_LIST_GALLERY_CONTAINER","SN_LIST_GALLERY_GROUPED","SN_LIST_GALLERY_BODY","SN_LIST_GALLERY_BODY_TEXT","SN_LIST_GALLERY_BODY_FIELDS","SN_LIST_GALLERY_FIELD","SN_LIST_GALLERY_FIELD_VALUE","SN_LIST_GALLERY_FIELD_LABEL","SN_LIST_GALLERY_HEADER_FIELD","SN_LIST_GALLERY_GROUPED_VIEW","SN_LIST_GALLERY_CARD_METADATA","SN_LIST_GALLERY_CARD_HIGHLIGHTED_VALUE","SN_LIST_GALLERY_CARD_DEFAULT_ACTIONS","SN_LIST_GALLERY_CARD_EXPAND_ALL_BUTTON","SN_LIST_GALLERY_NOW_ACCORDION","CARD_ACTION_ICON_VARIANT","CARD_ACTION_ICON_SIZE_SMALL","CARD_ACTION_ICON_SIZE_MEDIUM","NOW_BARE_BUTTON_TERTIARY","CARD_DROPDOWN_ID","CARD_DROPDOWN_ICON","CARD_METADATA_SLOT","CARD_SIDEBAR_VARIANT","CARD_SIDEBAR_COLOR","NUM_ROW_ACTIONS_THRESHOLD","GROUPED_EXPAND_ALL_GROUPS","GROUPED_COLLAPSE_ALL_GROUPS","SCROLL_TO_TOP_LABEL","SN_LIST_GALLERY_CARD_INTERACTIONS","SELECT","splitActions","defaultActions","dropdownActions","actionsItemsWithPayload","getCardFieldValue","columnMapping","cardProperties","clickableTextEnabled","commonProps","overrideLabel","fieldKey","columnData","getGalleryColumnCount","_container$children$","cardWidth","shouldUseDefaultView","getGalleryConfig","headingColumn","supplementaryColumns","processGalleryData","sharedContext","restGalleryProperties","restRowDefinitionProps","fieldMappings","fieldDefinitions","galleryDataBehavior","NOW_DROPDOWN_CUSTOM_TARGET_CLICKED","NOW_ACCORDION_ITEM_EXPANDED_SET","handleExpandAllGroups","handleGroupActionClicked","galleryGroupedBehavior","HANDLED_KEYS","GALLERY_KEYBOARD_NAV_BEHAVIOR_NAME","ENTER_GALLERY_ITEM_TRAP","EXIT_GALLERY_ITEM_TRAP","NOW_CARD","getFocusedCardIndex","navIndex","getGalleryCardContainer","getKeyboardNavBehaviourState","setTabIndexForTabbables","indexValue","getTabbableElements","galleryCardContainer","getFocusedCardElement","trappedCard","currentFocusedCardIndex","totalCards","moveLeft","moveRight","disableTabbingInGalleryContainer","galleryKeyboardNavigator","dispatchExitCardTrap","focusCardByIndex","handleFocusInEffect","cardToFocus","enterCardTrapEffect","exitCardTrapEffect","galleryKeyboardNavBehavior","VIRTUAL_PAGE_SIZE","INITIAL_VIRTUAL_PAGES","VIRTUALIZED_GALLERY_BEHAVIOR","LOAD_NEXT_VIRTUAL_PAGE","LOAD_VIRTUAL_PAGE","LOAD_CURRENT_VIRTUAL_PAGE","OBSERVE_VIRTUAL_PAGE","VIRTUAL_PAGE_RESIZED","OBSERVE_VIRTUAL_PAGE_FOR_RESIZE","INITIALIZE_BOTTOM_OBSERVER","INITIALIZE_FIRST_PAGE_OBSERVER","SCROLL_TO_TOP","VIRTUAL_PAGE_ID_ATTRIBUTE","CARD_SELECTOR","GALLERY_VIRTUALIZED_SCROLL_ELEMENT_SELECTOR","SET_SCROLL_TO_TOP_BUTTON_VISIBILITY","INITIAL_VIRTUALIZED_GALLERY_BEHAVIOR_STATE","virtualPageStore","visibleVirtualPages","virtualPageDimensions","cardDimensions","isLoadingNextPages","observedVirtualPageIdForResize","currentViewedPageId","VirtualizedGalleryObserver","bottomObserverRef","virtualPagesObserverRef","observedPages","observedVirtualPageForResize","resizeObserverRef","virtualPageEntries","entry1","entry2","observedBottomElm","firstPageElm","firstPageObserverRef","pageIndex","pageRef","_this$virtualPagesObs","unobserveVirtualPage","_this$virtualPagesObs2","_this$virtualPagesObs4","_this$bottomObserverR","_this$firstPageObserv","_this$resizeObserverR","_this$virtualPagesObs3","observerMap","prepareVirtualPageStore","rowStartIndex","rowEndIndex","prepareNewVisiblePages","pagesCount","newVisiblePages","handleLoadVirtualPage","pageCount","isVirtualPageVisible","isLastRetrievedPage","handleLoadNextVirtualPage","handleLoadCurrentVirtualPage","handleComponentBootstrapped","initialVisiblePages","initializeVirtualPagesIntersectionObserver","initializeResizeObserver","handleComponentPropertyChanged","handleComponentDisconnected","handleVirtualPageResized","virtualPageHeight","virtualPageWidth","card","cardHeight","pageHeight","pageWidth","handleObserveVirtualPage","pageElm","observeVirtualPage","handleObserveVirtualPageForResize","observeVirtualPageForResize","handleInitializeBottomObserver","initializeBottomIntersectionObserver","handleInitializeFirstPageObserver","initializeFirstPageIntersectionObserver","handleScrollToTop","scrollElement","handleScrollToTopButtonVisibility","virtualizedGalleryBehavior","galleryViewPropsDefinition","renderActionableMessage","getCellContentElement","isCellElement","isFakeIcon","_target$parentElement","handleShowTooltip","_target$parentElement2","_target$parentElement3","cellContentElement","handleShowTooltipOnFocus","_target2","handleRemoveTooltip","_target3","_target$parentElement4","_target$parentElement5","getTooltipProps","FIELDS_WITH_ELLIPSIS","isGalleryFieldWithEllipsis","renderLiveListEyelashIcon","EMPTY_DISPLAY_LABEL","DEFAULT_VARIANT","DEFAULT_COLOR","getCellDisabled","getColumnDisabled","isNonEmpty","getHiddenPillsTooltip","getTooltipDataProps","isTruncated","getHighlightedText","highlightedContentPatterns","markedDisplayContent","highlightedElement","escapedPatternWords","highlightRegex","highlightedValueCell","shouldRenderHighlightedValue","isHighlightedValue","getFormatedNumberLabel","truncatedLabel","getLinkCell","shouldRenderRecentlyUpdatedIcon","labelProps","displayLabel","toolTipLabel","contentClassNames","clickEventName","getLabelContent","booleanView","stringBool","cellLabel","numberView","isValuePresent","isWhitespaceEnabledInSysProp","preserveWhitespaceSysPropKey","stringView","stringCellContentClassNames","timeAgoOptions","highlightedValueData","spanClassName","shortDateFormatPrefKey","getDateLabelDetails","timeAgoClassNames","dateTimeView","getDisplayValue","toLocaleString","currencyView","iconView","linkView","isRenderAsLink","urlView","renderedLabel","choiceView","choiceLabel","tooltipLabel","htmlView","plainTextValueExtraSpaces","plainTextValue","parseThresholdColors","targetFieldValue","parsedColors","percentOfTarget","targetFieldValueNumber","getPercentBarWidth","numberValue","renderPercentComplete","targetBarWidth","actualBarWidth","isNegativeValue","isNegativeTargetValue","valueColor","percentCompleteBarTargetClassNames","percentCompleteBarActualClassNames","valueLabel","targetFieldValueLabel","showCurrent","showTarget","percentCompleteView","renderPersonText","textClassNames","buttonClassNames","personView","isNameEmpty","shouldDisplayName","targetClassList","hiddenPillsMessage","hiddenPillsCount","hiddenPillsTooltip","hiddenPillsDescription","descriptionElementId","pillRef","renderedPills","pillKey","pillsView","newMaxPillLimit","newPills","pillList","pillsCellClassNames","pillsAriaLabel","pillValue","customComponent","cellHeight","cellContentStyle","placeholderContentStyle","galleryCardField","fieldProps","showMoreWhenTruncated","fieldContentClasses","galleryCardFieldValue","dataFieldProps","customComponentProps","MAX_PILL_COUNT_FOR_GALLERY","XS_PILL_SIZE","SN_TRUNCATED_TEXT_SHOW_MORE","SN_TRUNCATED_TEXT_SHOW_TOOLTIP","MORE_BUTTON_LABEL","showMore","tooltipOpen","textElement","galleryCardBody","cardFieldData","fieldItem","galleryCardHeader","actionIconSize","renderField","renderDefaultActions","defaultActionButtons","galleryCardItem","_cardFieldData$headin","ariaSelectedState","updatedgalleryItemTooltip","renderGroupedActions","actionCount","actionClickHandler","defaultItemHeaderProps","badgeProps","galleryCardViewGrouped","galleryGroupedItem","galleryDataDefinitions","transitionDuration","transitionProperty","galleryCardViewDefault","enabledSlot","galleryContainerClassName","renderCustomRow","renderScrollToTopButton","renderVirtualizedPageContent","virtualPage","galleryDataDefinition","renderVirtualizedPage","virtualPagesCount","visibleIndex","isLastVisiblePage","isObservedPageForResize","shouldSetHeight","getVirtualPageHeight","renderVirtualizedPages","virtualizedCardsDefinition","pageStoreKeys","hasVirtualPages","galleryCardViewVirtualized","renderGroupedViewToggleButton","controlledGroupState","galleryView","mediaQuery","showVirtualizedGalleryView","shouldWrapCellContent","wrapCellContent","wrapCellContextPrefKey","setWrapClass","shouldWrap","wrapClass","defaultClass","renderCols","headerColClassNames","_round","suffixNumber","shouldShadeAlternateRows","shadeAlternateRows","shadeAlternateRowsContextPrefKey","groupBadgeCellContent","nestedLevel","badgeCellContent","parentBadgeCellContent","groupBadgeCellContentClassnames","groupToggleCellContent","toggleCellContent","parentToggleCellContent","isAllGroupsToggle","actionPayloadType","areAllGroupExpanded","groupToggleCellContentClassnames","groupToggleClassNames","groupButtonClassNames","groupHTMLButtonClassNames","expandCollapseTooltip","renderGroupActionKebabButton","groupActionsRef","renderSingleGroupActionButton","renderGroupActions","imageCell","truncatedName","personCell","hiddenPillsAriaLabel","pillsCell","pillsValues","renderActionsIconButtons","contextRows","areAllActionsDisabled","_actionItem$icon","actionIcon","rowActionCellClasses","_actionItem$icon2","renderKebabDropdown","preparedActions","kebabTooltip","actionsKebabButtonRef","rowActionsCell","actionsForButtons","actionsForDropdown","buttonsProps","dropdownProps","cellContentClassNames","rowDragCellContent","showDragHandle","rowDragHandleCellContentClassNames","rowDragHandleClassNames","rowSelectionCell","rowSelectionCellContentClassnames","rowSelectionCheckboxClassNames","tooltipDataProps","renderTypedCellContent","isRecentUpdate","dataCellProps","rowActionsCellProps","rowSelectionCellProps","groupToggleCellProps","renderCellActionsButton","cellActionsRef","isRowHighlightedMemoized","isSpecialColumnMemoized","isRecentAddedOrUpdatedRowMemoized","hasCellActionsMemoized","getColumnAlignmentMemoized","handleMouseOver","handleMouseOut","handleDoubleClick","handleKeyPress","addChildRowMargin","firstDataColumnKey","firstColumnKey","parentGroupClassNames","shouldRenderActionsButton","alignmentClassName","shouldHaveIndent","cellClassNames","cellEditingLabel","a11yLabelId","on-mouseout","on-dblclick","renderChildRowCells","isDefaultRowWithChildrenType","renderRowCells","colProps","cellMap","columnsMap","cellActionsMap","cellProps","renderChildrenRows","_getGroupedRowCount","groupKey","isGroupedRowType","rowProps","isLastChildRow","tableHasGroupedRows","renderGroupedRowAndChildren","isRecentlyAddedOrUpdated","toggleProps","trClassNames","specialCellClassNames","dragDropHandleCellClassNames","groupToggleCellClassNames","groupedInfoClassName","groupToggleCellContentClassNames","groupBadgeCellContentClassNames","mainCellColSpan","placeHolderDimensions","customRowContainer","specialColumnsCount","customContent","renderSpecialCellsForCustomRow","specialColumns","renderGhostRow","isChild","_colProps$columnEdges","relativeIndex","colLength","renderVirtualizedRowCells","rowCellProps","rowDefIndex","modifiedIndex","rowClassNames","rowAria","cellsByColumnKey","ariaDescription","renderBodyRows","tableFooters","columnFilteringToggleButton","buttonIconicClassNames","COLUMN_HEADER_ICON_SIZE","COLUMN_GRAB_INSTRUCTIONS","COLUMN_GRAB_INSTRUCTIONS_PREFIX","renderColumnHeaderCellIcons","iconColor","cellIconClassNames","renderHeaderCellText","renderColumnHeaderActionsButton","columnHeaderActionsRef","renderColumnReorderHandle","isReorderingEnabled","renderColumnResizeHandle","renderHeaderSelectionCellContent","selectAllEnabled","rowSelectionCheckboxClasses","renderActionCellContent","renderDefaultHeaderCellContent","hasResizeSupport","isFirstColumn","allColumnsHaveWidth","toggleAllGroupsEnabled","columnKeyClassName","isSelectionColumn","isGroupToggleColumn","isActionColumn","headerCellClassNames","headerCellContentClassNames","headerCellAriaLabel","hookInsertColumnWidthHelper","renderHeaderCells","columnLevel","columnCountAtLevel","validColumnIndex","lastColumn","renderColumnFilteringRow","columnFilteringRowClassNames","columnEdgeKey","renderHeaderRows","tableHeaders","columnFilteringProps","tableProps","overlayType","SKELETON_TABLE_CLASS_NAME","tableClassNames","scrollToTopCaption","timeAgoBehaviors","getBehaviors","renderBodyOverlay","emptyStateEnabled","_columnDefinitions$co","popoverProps","scrollToTopLabel","galleryLayoutProps","onScroll","columnHeaderClickBehavior","elementIdentifier","createUxfContractBehavior","interactiveActionName","activeTable","nlqTableDefinitionsLoading","tableDefinitions","tableMatches","tableSelected","ListResult","NOW_SELECT_ITEM_SET","DECLARATIVE_ACTION","NOW_POPOVER_OPEN_SET","NOW_PILL_SELECTED","NOW_RADIO_BUTTON_VALUE_SET","FEEDBACK_PROVIDED","NLQ_TABLE_SWITCHED","NLQ_VIEW_FULL_TABLE_CLICKED","KG_VIEW_RECORDS","HELPFUL_FEEDBACK_START","UNHELPFUL_FEEDBACK_START","FETCH_NLQ_NAVIGATION_CONFIG","FETCH_NLQ_NAVIGATION_CONFIG_SUCCEEDED","FETCH_LIST_DATA","RECORD_LIST_DATA_FETCH_STARTED","RECORD_LIST_DATA_FETCH_COMPLETED","RECORD_LIST_DATA_FETCH_FAILED","MULTITABLE_NLQ_REQUEST","MULTITABLE_NLQ_REQUEST_STARTED","MULTITABLE_NLQ_REQUEST_SUCCESS","MULTITABLE_NLQ_REQUEST_ERROR","QUERY_BUILDER_REQUEST","QUERY_BUILDER_REQUEST_STARTED","QUERY_BUILDER_REQUEST_SUCCESS","QUERY_BUILDER_REQUEST_ERROR","QUERY_BUILDER_POLL","QUERY_BUILDER_POLL_STARTED","QUERY_BUILDER_POLL_SUCCESS","QUERY_BUILDER_POLL_ERROR","GENIUS_RESULT_CHAT_TRIGGERED","ASK_A_FOLLOW_UP_CLIKED","SHOW_FULL_ANSWER_CLICKED","ATTACHMENT_CLICKED","FEEDBACK_ACTION_CLICKED","NOW_CARD_CLICKED","GR_MINI_SELECETED","getNLQMiniThumbnailSubtitle","getNLQMultiTableDropdownOptions","selectedTables","selectedTablesCount","formatSelectedTables","suggestion","display_name","formatUtterance","formattedTables","connectingWord","updatedUtterance","removeExtraWhitespaces","tableTokens","_currentValue$suggest","compareToken","translateTokenReplacement","getNavigationConfig","configs","profile","action_payload","handleFeedback","feedbackValue","partialState","openFeedbackDialog","feedbackReason","feedbackMessageElement","transformJSONToTableDefinitions","jsonData","GlideListLayout_Query","getListLayout","fullLabel","layoutQuery","queryRows","columnName","dropDowns","descriptionFontSize","AiSearchBody","NlqMultiTableBody","NlqBody","feedbackOptions","feedbackOther","helpfulButton","unhelpfulButton","otherFeedbackInput","feedbackDialogCard","isFeedback","unhelpfulButtonWithReasonDialog","transformToSplitButtonItems","assignmentId","patchNowButtonActivation","__clickListenerAdded","innerButton","overflowLimit","allowDropdown","isOverflow","displayActions","actionButtons","allowFeedback","enableDataLabelingFeedback","followUpAction","isSynthesizedAndStreaming","allChunksProcessed","renderForDemo","feedbackButtons","FeedbackButtonSet","intentFeedbackButtons","isIntentFeedback","relevanceFeedbackButtons","isRelevanceFeedback","splitButtonItems","splitActionButtons","followUpActionButton","viewArticleCitationFooter","sourceLabel","sourceType","showCitations","renderCitationAsCard","getLabelForCitations","labelForCitation","sharepoint","internalSources","imageIcon","citationAction","short_description","renderCatalogCardBody","conversational","_action$actionPayload","imageSrcToRender","price","itemSysId","showHandOver","clickedData","clickedItemSysId","renderKgCardBody","tableLabel","renderPeopleCardBody","propValues","sharedFiles","sharedFilesHtml","_file$icon","_file$icon2","png","authEndPoint","renderKbCardBody","_citationAction$actio","shortdesc","externalDocumentIcon","externalDocumentType","renderAdditionalSourcesCardBody","getDetails","citationPopoverContentConfig","descDetails","citationPopoverConfig","popoverOpened","catalogLabel","skillLabel","_JSON$parse$name","_JSON$parse","agentInfoJSON","agentName","streamingData","streamingText","streamingProcessor","didExceedLineLimit","citationsFromStreaming","actionsFromFinalResponse","updateElm","lastNewLineIndex","ghostText","globalAskForFollowUpButton","mobileQuery","CardHeader","Streaming","CardBody","CardFooter","getElementHeight","originalParent","hiddenDivContainer","styleElement","wordSpacing","elementCopy","handleTruncation","heightLimit","debounceAndWait","debouncedHandleTruncation","handleResizeForTruncation","queueUpdateTruncationVisibility","originalArgs","handleSynthesizedResponse","handleComponentConnected","setNLQTableMatches","queueUpdateShouldTruncate","handleComponentDOMTreeReady","handleIconicButtonClick","geniusCardFeedbackClicked","closeFeedbackDialog","_meta$appended","buttonOrLinkClicked","relevance","geniusCardActionClicked","handleViewAll","dropDownItemClicked","nlqDropDownClicked","geniusCardAction","setMultiTableAndFetchData","handleDescriptionCollapsed","newFeedbackValue","nowButtonBareClicked","handleFeedbackOtherInput","handleReasonSelection","intent","fetchListCompleteEffect","user_question","force_table_grammar","setActiveTableAndFetchData","selectedTableData","logID","fixedQuery","listTitle","runQuery","runHighlightedValuesQuery","isDeclarativeActionsRequired","parsedResponse","initialSelection","handlePillSelected","selectedTable","savedQueryId","queryId","searchProfile","requestStarted","requestFailed","applyMultiTableSuccess","nlqMultiTableLogId","dataConfig","source_id","source_id_label","filter_query","queryBuilderRequestSuccess","qbTable","queryBuilderPollSuccess","fetchListEffect","handleAttachmentClicked","applyMultiTableEffect","queryBuilderEffect","queryBuilderPollEffect","STREAMING_ACTIONS","STREAMING_START","STREAMING_END","STREAMING_READ_MORE","STREAMING_SHOW_LESS","STREAMING_SHOW_MORE","CHAR_LIMIT_REACHED","StreamingProcessor","STREAMING_BEHAVIOR_NAME","typingSpeedInMillisecondsPerUnit","allTokens","currentTokenIndex","expectedSeqId","isProcessing","receivedAllChunks","finalContent","finalTokens","hasFinalResponse","TYPING_SPEED","newMessages","seqId","processChunksInOrder","finalResponse","contentObj","mergeCitationsState","splitTextIntoUnits","_finalResponse$model","finalReplaceAll","messageType","streamResponse","finalizeStreaming","maybeStartProcessing","typeWriter","fastForwardTyping","maybeCheckIfOverflow","finalSnippet","newCitations","_this$state$behaviors","merged","getSearchRequestId","_val$data","searchRequestId","createAndUpdateStreamingProcessor","unitLimitEnabled","updateMessageMap","newSearchRequestId","oldsearchRequestId","handleFinalResponse","commonQuery","groupedRow","singleRow","listLayoutQueryFragment","betterListModel","fetchListInterceptor","backfillActionPayloadUrl","inlineUrl","_citationData$propVal","_behaviors$STREAMING_","_behaviors$STREAMING_2","citationsForDisplay","inlineCitations","_inlineCitations$k","_inlineCitations$k2","citation","popoverEle","_citationsForDisplay$","_citationsForDisplay$2","_c$propValues","_citationsForDisplay$3","_c$propValues2","_citationsForDisplay$4","_c$propValues3","_citationsForDisplay$5","_c$propValues4","_citationsForDisplay$6","_c$propValues5","_citationsForDisplay$7","_c$propValues6","_c$propValues7","openSplitButtonDropdown","showAlert","showMoreClicked","streamingBehavior","thumbnailHeader","Footer","Thumbnail","nlqNavigationConfig","MAX_COMPACT_PERSON_INFO","transformUserCardProps","avatarName","primaryDescription","secondaryDescription","additionalInfoLabelOne","additionalInfoValueOne","additionalInfoLabelTwo","additionalInfoValueTwo","additionalInfoLabelThree","additionalInfoValueThree","additionalInfoLabelFour","additionalInfoValueFour","descriptionValues","userConfig","formatIdentifier","decodeHtml","transformQACardProps","_model$model","poweredBy","sparkleText","formattedIdentifier","highlightedTextLabel","answerConfig","transformCatalogCardProps","markerType","imageAlt","catalogConfig","transformNLQCardProps","GAI","nlqConfig","transformSynthesizedCardProps","DEFAULT_ICON","SMALL_CARD","MEDIUM_CARD","LARGE_CARD","TOGGLE_BREAKPOINT","CUSTOM_ICON_DEFAULT_SIZE","REGULAR_RESULT_TYPE","OPEN_IN_NEW_TAB","RIGHT_CLICK","MARK_START","MARK_END","MAX_ATTACHMENTS","ATTACHMENT_COLUMN","DOC_TYPE","DOC_ICON","DOC_IMAGE_TYPE","PARENT_SYS_ID","PARENT_TITLE","DETAILS_POSITIONS","ABOVE","BELOW","DETAIL_PROP_NAMES","DETAIL_LABEL_TYPES","INLINE","XS","ATTACHMENT_POPOVER_VIEW","ATTACHMENT_SHOW_MORE_CLICKED","ICON_TYPE_PANEL_VIEW","REQUEST_CHAT","CHAT_CLICKED","OPEN_IN_NEW_TAB_TOOLTIP","CHAT_LABEL","CHAT","TRUE","SYS_ID","COPY","EVAM_VIEW_CONFIG","CONVERSATIONAL_AGENTIC","getLabelElement","getSeparatorLabelElement","getIconElement","textHeaderLabelOne","textHeaderLabelTwo","textHeaderLabelThree","feedbackPayload","hasMarginForMarker","hideIcon","identifierClass","identifiers","separatedIdentifiers","iconInHeader","getImageElement","imageURL","imageOnError","customIcon","customIconSize","getAvatarElement","avatarURL","isPanelView","getDisplayElement","markerElement","replaceHighlightWithMark","htmlText","removeHighlightTags","stripOffTags","_getColumnsMap","_generateAttachmentModel","docType","parentTitle","resultType","ai_search_teaser_title","ai_search_teaser_text","parent_title","parent_table","parent_sys_id","doctype_image_type","doctype_image","navigation_url","document_index","SHOW_ATTACHMENT_POPOVER","CHAT_TRIGGERED","SEARCH_RESULTS_FEEDBACK_CLICKED","ATTACHMENT_VIEW_CLICKED","ATTACHMENT_DOWNLOAD_ICON_CLICKED","CHAT_ICON_CLICKED","TITLE_LINK_CLICKED","titleLabel","titleFontSize","openInNewTab","titleFontSizeClass","openInNewTabLabel","isConversational","mainContent","handleAuxClick","MIDDLE_CLICK","summaryFontSize","rawResponsePresent","summaryElement","propsHaveNthDetail","propNameSet","requireLabelAndValue","getSecondaryInformation","detailValues","propSet","getStackedLabelElement","secondaryInfo","alignSelf","stackedLabels","getInlineLabelElement","detailLabelSeparator","indx","labelValue","detailLabelType","labelType","labelElement","footerLinkAction","footerLinkPayload","sanitizeUrl","sanitizedUrl","showAttachmentOverflow","useAttachmentViewer","useAttachmentViewerParameters","attachmentsOverflow","attachmentOverflowLabel","attachmentsToShow","titleWithoutHighlight","attachmentUrl","downloadUrl","attachmentView","attachment_viewer","getRawResponseItem","writeText","rawResponse","SearchResult","_model$cc_render_type","detailPosition","clickAction","parsedAttachments","hideDescription","showImageOnRight","removeHitHighlighting","showCardBorder","removeBottomBorder","integratedChatEnabled","showAttachmentPopOver","isActionsValid","hrefValue","computedTitle","markedSummary","markedTitle","textHeaderPresent","labelComp","LabelValue","cc_render_type","isDebugView","Button","Attachment","Debug","detailLabelOne","detailValueOne","detailLabelTwo","detailValueTwo","detailLabelThree","detailValueThree","detailLabelFour","detailValueFour","detailLabelFive","detailValueFive","detailLabelSix","detailValueSix","detailLabelSeven","detailValueSeven","detailLabelEight","detailValueEight","detailLabelNine","detailValueNine","detailLabelTen","detailValueTen","RIGHT_CLICK_TYPE","GRID_VIEW","LIST_VIEW","FALSE","SORT_LABEL","FILTER_LABEL","TOGGLE_LABEL","PREV","GRID_GAP","DEFAULT_MAX_CARDS","DEF_CARDS_PER_ROW","DEF_ITEMS_PER_PAGE","DEF_CARD_WIDTH","RESIZE_DEBOUNCE_DELAY","DEF_NO_DATA_MSG","EMPTY_MESSAGE_BODY","DEF_TITLE_HEADING_LEVEL","DEF_EMPTY_STATE_HEADING_LEVEL","DEF_TITLE_STYLE_VARIANT","LOADING_STATE_LABEL","INIT_PAGINATON_PROPS","hideGoToFirst","hideGoToLast","hidePageNumbers","hidePageSizeControl","hideRange","hidePages","hideGoToNext","hideGoToPrevious","selectedPage","selectedPageSize","VIEWTOGGLE_CLICKED","TOGGLE_BUTTON_CLICKED","SN_DATA_SET_PAGINATION_BUTTON_CLICKED","NOW_DATA_SET_PAGINATION_BUTTON_CLICKED","NOW_PAGINATION_CONTROL_SELECTED_PAGE_SET","NOW_DATA_SET_FILTER_ITEM_CLICKED","DA_WRAPPED_CLICKED","DECLARATIVE_ACTION_SCRIPT_SUCCESS","DECLARATIVE_ACTION_SCRIPT_FAILED","NOW_DATA_SET_ACTION_SUCCEEDED","NOW_DATA_SET_ACTION_FAILED","NOW_DATA_SET_RESIZED","GRID_LABEL","LIST_LABEL","getConfigAria","validateOptions","getTranslations","DataSetItem","toggleConfig","filterConfig","sortConfig","hideFilter","filterToggleConfig","minCardWidth","groupClassName","itemClassName","parentWidth","gridstyle","PAGE_NUM","validateSelectedPage","totalPages","getInputAriaLiveMessage","inputPageValue","resolvedPageNumber","validPageNumber","inputPageNumber","renderPage","buttonRef","renderRange","rangeLabel","getPaginationInputWidth","pageSizes","pageControlType","hideInlinePadding","visiblePages","pagesOverride","pageSizeLabel","adjustedSelectedPage","isFirst","isLast","halfVisiblePages","firstVisiblePageIndex","lastVisiblePageIndex","showButtons","showInput","renderGoToPrevious","prevPage","renderPageButtons","pageNumbers","renderPageInput","totalPageTextId","totalPageText","renderGoToNext","nextPage","renderPageSizeControl","pageSizeOptions","manageSelectedPage","manageSelectedPageSize","minPageSize","paginationInputWidth","UXF_INTERNAL_EVENT_META","DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS","DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_COMPLETED","DECLARATIVE_ACTION_RUN_DYNAMIC_CONDITIONS_FAILED","relayDAUpdates","daRelayPropName","getDynamicEvaluatedDAs","declarativeActions","dynamicEvaluationEnabled","modelData","dynamicConditionsState","getDynamicConditionsState","daSysIds","evaluateDynamicConditions","dynamicConditionResults","parentRecordSysId","conditions","recordSysIdsToReEvaluate","runDynamicCondition","recordSysIds","affectedRecordSysIds","selectedRecords","updateDeclarativeActions","listRefresh","cellUpdatedOn","editedRecords","getRecordsToEvaluate","daSysId","isDAEnabled","recSysId","daToUpdate","mapDynamicConditionResults","conditionResult","recData","recordResults","rec","dynamicConditionCompletedEffect","newConditionResults","stateConditionResultsArr","stateConditionResults","selectAllRecords","selectedRecordsToEffect","dynamicConditionQuery","runDynamicConditionsEffect","loadComponent","DEFAULT_MARK_LEVEL","DEFAULT_MARK_TYPE","TYPE","EVENT_NAME","FORM","FIELD","RELATED_LIST","EVENT_ORIGIN_EVENT_NAME_MAP","trackUxMetrics","markLevel","markType","actionDispatch","getEventName","dispatchedAction","fieldTable","eventOriginNode","DECLARATIVE_ACTION_UPDATE_RENDER","DECLARATIVE_ACTION_EXECUTE_ACTION","DECLARATIVE_ACTION_CANCEL_ACTION","DECLARATIVE_ACTION_CLOSE_MODAL","DECLARATIVE_ACTION_SCRIPT_START","PUBLIC_DECLARATIVE_ACTION_SCRIPT_SUCCESS","PUBLIC_DECLARATIVE_ACTION_SCRIPT_FAILED","PUBLIC_DECLARATIVE_ACTION_UPDATE_RENDER","PUBLIC_DECLARATIVE_ACTION_REDIRECT_REQUESTED","DECLARATIVE_ACTION_OPEN_LINK","DECLARATIVE_ACTION_CLIENT_SCRIPT_EXECUTION_REQUESTED","HTTP_ERROR_OCCURRED","VALUE_CHANGED","ACTION_COMPONENT","DISPATCH_ACTION","CLIENT_SCRIPT","SERVER_SCRIPT","UXF_CLIENT_ACTION","SERVER_SCRIPT_API","SERVER_SCRIPT_API_PATH_PARAMS","SERVER_SCRIPT_API_QUERY_PARAMS","SERVER_SCRIPT_API_BODY_PARAMS","consolidateModel","fieldsParams","createHttpData","sysparm_table","dispatchActionByType","shouldWrapAction","wrapped_action_name","wrapped_payload","wrapped_action_type","sourceCorrelationId","clientScript","getDispatcher","shouldAppendActionEvent","createActionEvent","actionEvent","addToPayload","mediator","confirmationRequired","displayConfirmation","dispatchNotifications","sessionNotifications","allNotifications","updateFormFieldValue","payloadAction","actionComponent","updatingState","loadedComponents","stateAction","redirect","type_metadata","shouldEvaluateDynamicConditions","itemSelectedAction","treePickerItemSelectedAction","treePickerModalCloseAction","treePickerModalAddAction","FETCH_TREE_PICKER","FETCH_TREE_PICKER_SUCCESS","FETCH_TREE_PICKER_FAILURE","TREE_PICKER_CONFIG_DATA_PATH","DOMAIN_SEPARATION_DATA_PATH","COMPONENT_LOAD_REQUESTED","COMPONENT_LOAD_SUCCEEDED","COMPONENT_LOAD_FAILED","itemSelectedTransform","newPayload","treePickerItemSelectedTransform","addSelectedItemsEffect","display_value_list","closeModalEffect","treePickerQuery","attributeValue","serialized_changes","encoded_record","fetchingTreePicker","isTreePicker","domainSeparation","treePickerConfig","domainId","componentLoading","handleFocusTrapIframe","_lastFocusableElement","_properties$footerAct","addModalToStack","disableClose","renderCloseButton","checkForScrollableContent","modalBody","headerLabelEl","footerAction","customSize","headingLevel","contentFullWidth","legacyMode","hideOverlay","customStyle","dialogSize","_node$classList","_host$shadowRoot3","_findTabbableNodes$","modalBehavior","resizableBehavior","getScrollOffset","freezeBody","freezeStyle","unfreezeBody","handleEscape","SN_RECORD_CONTENT_TREE_CONNECTED_MODAL_CLOSE_CLICKED_ACTION","SN_RECORD_CONTENT_TREE_CONNECTED_MODAL_ADD_CLICKED_ACTION","renderModalContent","containerClass","isGlideList","refTableName","displayFooter","getContainerClass","baseClass","Modal","SNDeclarativeReferenceSearchElement","uxfMeta","permitCorrelationIdMismatch","daWrappedClickedBehavior","opers","ANYTHING","BETWEEN","evalBetween","ISEMPTY","evalIsEmpty","EMPTYSTRING","evalEmptyString","ENDSWITH","evalEndsWith","evalEquals","evalGreaterThan","evalGreaterThanOrEquals","IN","evalIn","evalNotIn","LIKE","evalLike","evalLessThan","evalLessThanOrEquals","ISNOTEMPTY","evalIsNotEmpty","evalNotEquals","evalNotLike","SAMEAS","evalSameAs","NSAMEAS","evalNotSameAs","STARTSWITH","evalStartsWith","GT_FIELD","evalGreaterThanField","LT_FIELD","evalLessThanField","GT_OR_EQUALS_FIELD","evalGreaterThanOrEqualsField","LT_OR_EQUALS_FIELD","evalLessThanOrEqualsField","evaluateConditions","modelConditions","groupByNewQuery","groupByAnd","terms","evalScriptedClientConditions","scriptedClientCond","scopeVariableNames","scopeVariableValues","scopingFunction","newQuery","vals","interpolationRegex","arrayIndexRegex","ZERO_COUNT_REGEX","modelEvaluator","parsedString","modelField","isInterpolation","recursiveEvaluation","evaluator","objectValue","resolvePayloadPath","evaluateAction","actionAttributes","payloadMap","scriptedClientCondition","mergedPayload","constructPayload","payloadTemplate","jsonParse","parseStringProperties","unparsedPayload","unparsedAttributes","parsedPayload","parsedAttributes","formatZeroCountString","transformActions","metricsData","recordSelectionRequired","newAction","parsedAction","evaluatedAction","action1","action2","evaluateAndKeep","transformer","evaluateOnly","ACTION_CONFIG","ACTION_CONFIG_ID","ASSIGNMENT_ID","ACTION_DISPATCH","ARRAY","BOOLEAN","CONTEXT_VARS","ERROR_PREFIX","ERROR_ACTION_PAYLOAD","ERROR_TYPE_INVALID","EVAM","BOARD","EVENT","MODEL","META_DATA","NAME","NUMBER","OBJECT","PAYLOAD","PROPERTIES","SCHEMA","STRING","VALUE","CATALOG_WIZARD","SUPPORTED_MODELS_TYPES","MODELS","getTypeFromValue","evaluateRequired","evaluateModelType","modelType","getNameAndLabel","getEventStructure","getPropMetadata","buildObject","isEventProps","typeMetadata","buildList","buildEventDefinitions","buildApplicability","contractGenerator","daApplicability","dispatchedEventDefs","createButtons","confirmationMessage","SNDeclarativeConfirmationModal","isUIComponent","ActionComponent","SNDeclarativeMediator","ADD_NOTIFICATIONS","REFRESH_REQUESTED","OPEN_FRAME","openFrameDataPath","OPEN_FRAME_KEY","openFrameBehavior","getActionsByKey","HACKY_GLOBAL_DEPENDENCY_MAP","CTI","openFrameConfig","canRenderAction","requiresExistingRecord","requiresWritable","dependency","DECLARATIVE_ACTION_FETCH_FIELD_GRAPHQL","DECLARATIVE_ACTION_FETCH_FIELD_SUCCESS","DECLARATIVE_ACTION_FETCH_FIELD_ERROR","DECLARATIVE_ACTION_FETCH_FIELD_PRESOURCE","globalActionsDataPath","declarativeFieldActionQuery","fetchActionsEffect","actionsFromDatasource","Action","oldIconToNDSIcon","resolvedActions","cappedActions","evaluatedActions","createData","wsConfigSysId","SNDeclarativeFieldActionRenderer","SNDeclarativeFieldAction","maxCardsPerRow","getAdjustedColumns","reEvaluatePageSize","dataLength","transformDAClientActionToUXEvents","daAction","componentIsLoadingView","mediatorWrapper","DataSetTemplate","View","LoaderView","paginationProps","disabledPaginationProps","componentIsEmptyView","emptyMessageBody","emptyStateHeadingLevel","loadComponents","uniqComponentTags","resolveStatic","titleHeadingLevel","titleStyleVariant","toggleView","hidePaginationControls","DataSetHeader","DataSetToolbar","PaginationView","dataBrokerIsLoading","isSelectedFilterValid","available_filters","selected_filter","pageSize","page_size","pageNumber","page_number","is_last_page","revaluatedPageSize","pageCursors","pageCursor","page_cursor","viewElement","daClientActionContract","all_actions","selectable","maxItemsPerPage","searchResultItem","searchResultsPlaceholder","TERM_SEARCHED","PAGINATION_BUTTON_CLICKED","TOP_RESULTS_ACTION_DELEGATED","NAVIGATE_TO_FULL_PAGE","EXTERNAL_URL_NAVIGATION","SEARCH_RESULTS_PAGINATION_BUTTON_CLICKED","SEARCH_RESULTS_DECLARATIVE_ACTION","SEARCH_RESULTS_SEARCH_START","SEARCH_RESULTS_NAVIGATE_TO_FULL_PAGE","DROPDOWN_CLICKED","BARE_BUTTON_CLICKED","COLLAPSED_ATTACHMENT_CLICKED","SEARCH_RESULTS_COLLAPSED_ATTCHMENT_CLICKED","LABEL_VALUE_TRANSLATION_STARTED","REQUEST_TRANSLATED_LABEL_VALUES","FETCH_SYS_PROP_STARTED","FETCH_SYS_PROP_SUCCEEDED","FETCH_SYS_PROP_FAILED","INITIAL_PAGE","FIRST_PAGE","LOADING_VIEW_RESULT_COUNT","LOADING_VIEW_RESULT_COUNT_PANEL","RESULT_COUNT_LABEL","SPELLCHECK_LABEL","SHOWING_RESULTS","SHOWING_RESULTS_WITH_COUNT","SEARCH_INSTEAD","SIGN_IN_MESSAGE","CLICK_ACTION","RIGHT_CLICK_ACTION","SEARCH_EVENT","SEARCH_RESULT_EVENT","GENIUS_RESULT_EVENT","SEARCH_FACET_EVENT","SEARCH_PAGINATION_EVENT","SEARCH_SORT_EVENT","GENIUS_RESULT_VIRTUAL_TABLE","DECLARATIVE_ACTION_CLICK","CATALOG_SOURCE_TABLE","USER_SOURCE_TABLE","SHAREPOINT_EXTERNAL_TABLE","KNOWLEDGE_SOURCE_TABLE","CATALOG_INTENT","USER_INTENT","KNOWLEDGE_GENIUS_CARD","PEOPLE_GENIUS_CARD","CATALOG_GENIUS_CARD","RESULT_TYPES","REGULAR_RESULT","GENIUS_RESULT","ANALYTICS_EVENTS","SEARCH_START","SEARCH_RESULT_CLICK","GENIUS_RESULT_CLICK","GENIUS_RESULT_FEEDBACK_CLICK","ANALYTICS_EVENT_INTENTS","QUERY_INTENT_TRIGGERED","GENIUS_RESULT_TRIGGERED","POSITIVE_FEEDBACK_TYPE","NEGATIVE_FEEDBACK_TYPE","FEEDBACK_ACTION_TYPE","NLQ_ACTION_TYPE","NLQ_VIEW_FULL_TABLE_TYPE","IS_GLOBAL","IS_PANEL_VIEW","SEARCH_FROM_CHAT","SHOW_CARD_BORDER","DISABLE_HREF","REMOVE_BOTTOM_BORDER","SHOW_RESULT_CARD_BORDER_SYS_PROP","INTEGRATED_CHAT_ENABLED","SHOW_RESULT_CARD_BORDER_SYS_PROP_QUERY","SYS_PROP_QUERY_PATH","NAVIGATE_TO_LIST_VIEW","RESULT_COUNT_DISCLAIMER","RESULT_COUNT_INFO_LABEL","HIGHLIGHT_REGEX","DELEGATED_ACTION_TYPES","FEEDBACK","NLQ_TABLE_CLICKED","SHOW_FULL_ANSWER","VIEW_ALL_LINK","DISPLAY_TYPE_RESULT_DETAILS","RAW_RESPONSE_PROP","VIEW_ALL_LINK_ICON","RAW_DETAILS_FIELDS","DISPLAY_FIELD_LANG","RAW","DISPLAY","ITEM_FIELDS_DISPLAY_MAP","predicateId","CHAT_INTENTION","REGULAR_SEARCH","RELEVANCY_SORT_ID_NUMERIC","DEBUG_VIEW_OPTION_RESULTS","DEBUG_VIEW_OPTION_RAW","DEBUG_VIEW_OPTION_RESULTS_DETAILS","SEARCH_RESULTS_REGION_LABEL","SEARCH_RESULTS_LIST_LABEL","OPEN_LIST_VIEW_LABEL","getLabelWithCount","getTranslationsLabelWithCount","resultCountDisclaimer","_textLink","phrase","correctedSearchTerm","resultCountFontSize","spellCheckFontSize","searchTermMessage","disclaimer","ResultCountDisclaimer","getSearchTermMessage","resultCountMessage","sortOptions","defaultSort","sortDropdownView","facetsButtonShown","viewAllLink","showResultCount","showGoTo","sortDropdown","SortDropdown","dropdownContainers","spellCheckMessage","SpellCheckMessage","ResultCountMessage","NoResultsView","EmptyPageView","replaceTranslatedValues","searchItem","translatedValues","forceTranslate","translatedValue","getRawDisplayFields","rawResponseObj","itemObj","displayKey","previousPageToken","nextPageToken","rawSearchResultDetails","enableLabelValueTranslation","resultsPerPage","updatedData","lastResultIndex","_isEmpty","searchResultMetadata","geniusResults","searchResults","isLoadingInternal","totalHits","geniusResultsExist","awaitingResults","_searchResultMetadata","searchResponse","loader","LoadingView","SearchResults","searchResultsMetadata","globalSearchResults","globalSearchDisplay","searchResultDisplay","_getChildEvents","childEvents","queryIntents","matchedQueryIntents","matchedGeniusResultIntents","EventName","EventPayload","getSearchAnalyticsModel","parentEvent","responseTimeInMs","queryLanguage","triggeredGeniusResults","getSearchResultAnalyticsModel","selectedResultIndex","aisDocId","getGeniusResultAnalyticsModel","cardType","labelDescription","getGeniusResultFeedbackModel","_getPaginationToken","updatedPage","previousToken","nextToken","handlePaginationButtonClick","isFirstPage","paginationToken","_getLabelDescription","defaultToModelNameTableSourceCondition","_getGeniusResultSourceTable","_getGeniusResultLabel","_getGeniusResultIndex","geniusResult","_getDocumentIndex","searchResult","_getResultIndexOnPage","_getVAEvamItems","vaEvamItem","_generateCoreEventMetadata","useLegacySignalTracking","searchAnalyticsPayload","resultSysId","appliedFilterIds","appliedSortOptionId","fromSearchResultsContainer","userId","sessionId","_getResultsModel","searchResultsModel","geniusResultsModel","_resultsModel","recordId","_getSourceOccurrences","_getSearchResultsPerSource","resultsPerSource","numberOfResults","_getIntentsBySource","intents","matchedIntentsPerSource","_getCardCount","cardCount","getExternalURLFromModel","_trackGeniusResultEvent","customValues","eventMetadata","tableType","actionValues","actionValue","geniusResultClickRank","geniusResultConfigId","ais_genius_config_id","signalsPayload","baseAnalyticsPayload","analyticsPayload","finalPayload","requirePreceedingEventCompletion","_trackSearchEventForRelevancy","numberOfQAGeniusResults","numberOfPeopleGeniusResults","numberOfCatalogGeniusResults","hasSearchResults","hasGeniusResults","searchResultsPerSource","logSignals","_trackSearchEventForAppsee","People","Catalog","generateModelDataAndTrackSearchEvent","handleResultActionClick","_payload$action","sourceUrl","actionDispatched","actionAssignmentId","searchResultActionPayload","signalType","signalValue","handleTextLinkClicked","handleDropdownItemClick","_previousValue$search","_previousValue$search2","_previousValue$search3","trackPaginationEvent","trackSortEvent","trackFacetEvent","handleBareButtonClick","customPayloadValues","trackNlqTableSwitch","trackNlqViewFullTable","trackCollapsedAttachmentClick","trackAskAFollowUpSignalEvent","trackShowFullAnswerSignalEvent","handleDelegatedActionsFromTopResults","delegatedActionType","_buildPayloadForNavigation","handleExternalUrlNavigation","handleChatButtonClick","_model$action","vaEvamItems","intention","rawResult","executionResult","searchMetadata","searchResultsTemplates","geniusResultsTemplates","dropDownSelectedEffect","debugDropdownSelectedEffect","sortDropdownSelectedEffect","selectedDebugView","fetchShowCardBorderEffect","fetchSysPropSucceededEffect","propertyValue","fetchSysPropFailedEffect","declarativeActionsOfSearchResults","declarativeActionsOfGeniusResults","allDAs","selectedSearchResults","enableDataLabelingSelection","DynamicTag","resultProps","RESULT_DISCLAIMER_TEXT","RESULT_DISCLAIMER","AI_ASSIST","TOP_RESULTS_GENERATED_BY","PUTTING_TOGETHER_BEST_ANSWERS","EMPTY_STATE_MESSAGE_HEADING","EMPTY_STATE_MESSAGE","SYNTHESIZED_GENIUS_RESULT_LOADING_STEPS","STEP_1","STEP_2","STEP_3","STEP_4","STEP_5","STEP_6","SR_ONLY_MESSAGES","GENIUS_RESULTS_LOADING","EXTERNAL_CONTENT_TYPE","GENIUS_RESULT_CLICK_RANK","ALERT_CONTENT","ALERT_TYPE","ACTION_TYPE","resultInfo","NOW_ASSIST","skeletonLoader","OTTO","TOPICS_CARD_HEADER","CHAT_TOIPCS_MESSAGE","renderTopicButton","skill_name","skill_table","skillTable","skill_description","skill_document","documentId","enable_followup","followUp","topics","showAsCard","topicsContainer","SkeletonLoader","TOPIC_CLICKED","VIEW_ALL","CARD_GAP","BORDER_WIDTH_TWICE","ACTION_TYPE_SERVER_SCRIPT","DEF_EMPTY_MSG","DEF_MAX_VISIBLE_CARDS","DEF_MIN_CARD_WIDTH","DEF_CARD_HEIGHT","NOW_DATA_ROW_VIEW_ALL_CLICKED","NOW_DATA_ROW_ACTION_SUCCEEDED","NOW_DATA_ROW_ACTION_FAILED","noDataMessage","minCardPixelWidth","htmlFragments","getShouldHideOverflow","maxVisibleCardsHorizontal","htmlFragmentsLength","isCarousel","BUTTON","CAROUSEL_TRACK_ELM","CAROUSEL_WIDTH","CURRENT_INDEX","DISABLE_LOOPING","HAS_STARTED","INDICATOR","INDICATOR_CLICKED_IDX","INDICATORS","IS_TRANSITION_PENDING","SCROLL_DIRECTION","CONTENT","SN_CAROUSEL","STARTING_INDEX","CONTENT_CONTAINER_ELM","RTL","TITLE","ENABLE_AUTOSCROLL","PAUSE_AUTOSCROLL","CONTENT_REFRESH_TIMESTAMP","ACTION_INDICATOR_CLICKED","ACTION_LINK_CLICKED","ACTION_INDICATOR_INDEX_UPDATED","ACTION_RECALCULATE_INDICATORS","ACTION_SLOT_CHANGE","ACTION_SCROLL","ACTION_TOUCH_END","ACTION_TRANSITION_END","ACTION_UPDATE_INDICATORS","ACTION_FOCUS_IN_ITEM","ACTION_ARROW_KEY_PRESSED","ACTION_AUTO_SCROLL_START","ACTION_AUTO_SCROLL_STOP","ACTION_AUTO_SCROLL_PAUSED","CAROUSEL_INITIAL_LOAD","NAVIGATION_INTERACTION","ARROW","ARROWS","CAROUSEL_LABEL","CAROUSEL_FOOTER","CAROUSEL_HEADER","CAROUSEL_HEADER_ABSENT","CAROUSEL_TRACK","CAROUSEL_WRAPPER","EMPTY_STATE","GRADIENT","HEADER_LINK","HIDE","MARGIN_LEFT","MARGIN_RIGHT","SCROLLING","SHOW","SHOW_ARROWS","TITLE_WRAPPER","BADGE","TRANSITION_TIME","ADD_ATTACHMENT","ADD_DATA","COMPLETED_TASKS","FIRST_TIME_USER","INTERRUPTED","NO_ACTIVITIES","NO_DATA","NO_SEARCH_RESULTS","OFFLINE","PERMISSIONS","UNCONFIGURED","EMPTY_STATE_LABEL","DARK","PRIMARY","SECONDARY","TERTIARY","GRADIENT_WIDTH","LEFT_MOST_PADDING","RIGHT_MARGIN_WIDTH","LEFT_ARROW_ICON","FORWARD","BACKWARD","RIGHT_ARROW_ICON","PAUSE_LABEL","PLAY_LABEL","PAUSE_ICON","PLAY_ICON","PAUSE","PLAY","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_SPLIT","CENTER","FILL","OUTLINE","ITEMS_IN_VIEW","MULTIPLE_ITEMS_IN_VIEW","SINGLE_ITEM_IN_VIEW","SINGLE_ITEM_ON_ZOOM","INTEGER","NEXT_SET_OF_ITEMS","SINGLE_ITEM","SLIDING_TYPE","TITLE_LEVEL_1","TITLE_LEVEL_2","TITLE_LEVEL_3","TITLE_LEVEL_4","TITLE_LEVEL_5","TITLE_LEVEL_6","HEADER_PRIMARY","HEADER_SECONDARY","HEADER_TERTIARY","TITLE_PRIMARY","TITLE_SECONDARY","TITLE_TERTIARY","AUTO_SCROLL_INTERVAL_ID_DEFAULT","VISIBILITY_OBSERVER","IS_HOST_VISIBLE","IS_CONTENT_RESOLVED","__WEBPACK_EXTERNAL_MODULE__uxasset_externals_servicenow_ui_utils_index_jsdbx_9b965695__","duplicateComponent","duplicateNode","setDuplicateAttribute","setupDuplicate","resetPositions","hostNode","contentContainerElm","_node$getAttribute","_node$getAttribute2","prePosition","originalIndex","nextElementSibling","deleteDuplicates","deleted","findDuplicates","isDuplicate","createDuplicates","contentElms","itemsInView","slidingType","carouselWidth","allComponents","_node$style","componentsAdded","duplicateLastItem","duplicateFirstItem","firstSet","lastSet","currentSetWidth","currentSet","contentElm","findStartingDuplicates","_component$getAttribu","_component$getAttribu2","findEndingDuplicates","_component$getAttribu3","_component$getAttribu4","findOriginals","duplicates","swapDuplicates","originalComponent","isElementVisible","getContentWidth","disableLooping","getComponentsInView","transformValue","includePartials","carouselTrackElm","inViewComponents","componentIdx","hiddenWidth","prevHiddenWidth","accumalatedWidth","componentWidth","areComponentsInitialized","transformComponents","performSwap","getTranslation","matchValue","calculateIndicators","contentCount","indicators","contentWidth","startingDuplicates","indicator","currentComponentIdx","checkWidth","firstIndicator","lastIndicator","loopTranslate","autoScrollStart","enableAutoScroll","autoScrollSpeed","pauseAutoScroll","autoScrollIntervalId","scrollDirection","autoScrollStop","getActionType","updateComponentStyle","copyStyle","setComponentMargins","marginWidth","setupComponents","loopingChanged","addDuplicatesOnResize","isSwapping","isHostVisible","newContentElms","newContentCount","_node$style2","focusinEventHandler","carouselItemFocusinHandler","contentChanged","fitsContainer","slotChangeEvent","setupIndicators","hasStarted","startingIndex","numIndicators","didRender","carouselTitle","titleVariant","titlePosition","hideLink","linkIcon","navStyle","enableAdvancedNavConfig","navButtonConfig","leftNavButtonIcon","rightNavButtonIcon","navPosition","gradientStyle","hideDotIndicator","numberOfIndicators","recalculateIndicators","originalIndicators","prevContentWidth","widthChanged","handleResize","updateNavigationFocus","scrollEffect","isTransitionPending","looped","useLoopTranslate","indicatorClickedEffect","indicatorClickedIdx","nextIndicator","transitionEndEffect","swipeEffect","touchStart","touchMove","setupVisibilityObserver","disconnectObserver","isZoomedIn","updateItemsInView","visibilityObserver","singleItemOnZoom","propertyChanged","enableViewIndexUpdates","propItemsInView","autoScrollAction","indicatorIdx","isContentResolved","getIndicators","indicatorSelected","indicatorId","ulElem","nextIdx","getDisplayArrowClass","arrowType","hideArrow","getNavigationControls","showCompactView","displayLeftArrow","displayRightArrow","navButtonProps","showTitle","hideTitle","displayTitle","disableTextWrapping","titleLevel","badgeConfig","badge","showHeaderLink","linkText","displayHeaderLink","displayHeader","indicatorClasses","displayEmptyState","emptyStateLabel","emptyStateContent","emptyStateIllustration","endingDuplicates","contentContainerLength","originalNodeAriaLabel","appendedNodeAriaLabel","leftGradientStyle","rightGradientStyle","roleDesc","ariaLabelledBy","on-touchmove","on-transitionend","contentRefreshTimestamp","currentLabel","previousLabel","shouldAnnounce","firstItemLabel","nextLabels","labelsChanged","previousLabelChanged","currentLabelChanged","shouldAnimate","shouldAnimateLabels","shouldEvaluateTruncation","MouseEvent","labelsElm","getAnimations","animate","easing","firstLabel","GeniusResultLoadingState","EmptyDataRow","ContentHtml","isLayoutVertical","cardHeightHorizontal","dataFetchInProgress","carouselProps","activeThumbnailIndex","noBox","mainCardConfig","containerClassName","CREATE_GR_SUBSCRIPTION","AMB_SUBSCRIPTION_ACTIONS","SUBSCRIPTION_STARTED","SUBSCRIPTION_SUCCEEDED","SUBSCRIPTION_FAILED","MESSAGE_RECEIVED","SUBSCRIPTION_UNSUBSCRIBED","SN_SEARCH_STREAMING_DEBUGGER_COMPONENT_TREE_RENDERED","PUBLISH_AMB_MESSAGE","ASYNC_RESULT_LOADING_TIMEOUT","GENIUS_CHAT_TRIGGERED","TOP_RESULTS_CHAT_TRIGGERED","TOP_RESULTS_DECLARATIVE_ACTION","NOW_ALERT_ACTION_CLICKED","TOP_RESULTS_SUBSCRIPTION_SUCCEEDED","trackGeniusResultTriggeredEvent","getGeniusResultIndex","geniusResultsReceived","trackGeniusResultEvent","_getGeniusResultFeedbackModel","_getGeniusResultAnalyticsModel","rawGeniusResultsReceived","matchingItem","knowledgeCitationsGr","generateVAPayload","sysIdOfRecord","geniusResultsVA","vaItem","vaItemSysId","filterExternalGRs","isSourceTypeNotExternal","isSourceTypeExternalAndTokenTrue","handleGRMiniSelected","debugMode","setSearchRequestIdToStateAndResetMessages","resetAsyncGeniusResultLoadingTimeout","initializeSubscriptionForGeniusResults","__AIS_ACCUMULATED_AMB_STREAMING_MESSAGES__","primarySearchRequestId","alertDismissed","prepareNewGrData","carouselData","newCarouselData","currentAMBSubcsriptionChannel","asyncGeniusResultChannelName","asyncGeniusResultsLoading","populateGeniusResultsFromProps","asyncGeniusResultTimerExpired","streamingStarted","sensitivityFilterMatched","createGRSubscription","channelName","subscribeStartedActionType","subscribeSucceededActionType","subscribeFailedActionType","messageReceivedActionType","unsubscribeSucceededActionType","sortGeniusResults","geniusResultList","gr1","gr2","grsReceived","consolidateActionsAndCitationsToFirst","setPropsForStreaming","feedbackOpions","newMainCardConfig","mergedCitations","firstActions","newItem","citationExistsInProps","handleStreamingData","sequenceNumber","accumulateAMBMessagesToWindow","_payload$data","_payload$data2","_existingMessages$","currentSearchRequestId","existingMessages","handleAmbMessageReceived","_payload$data3","_payload$data4","asyncGeniusResultsMaxWaitTime","_payload$data5","cancelTimer","asyncGeniusResultReceived","_payload$data6","_payload$data7","_payload$data8","hasSensitivityFilterMatched","sensitivityFilter","hasMatch","_payload$data9","finalPropValues","grCount","isSynthesizedResponse","_geniusResultsTemplat","_payload$data0","handleGeniusChatTriggered","vaPayload","handleAskAFollowUpSignalEventInternally","handleShowFullAnswerSignalEventInternally","handleAskAFollowUpClickedForSignals","delegateActions","handleDelegatedAction","handleShowFullAnswerClickedForSignals","handleFeedbackInternally","handleNLQTableSwitched","handleNLQTableClicked","timerID","asyncGeniusResultTimerID","handleAsyncGRTimerExpiration","dismissAlert","publishAmbMessage","topicsAvailable","syncGeniusResultsLoading","showTopics","showResultInfo","showGeniusResults","geniusResultsLoading","topicsLoading","geniusResultsAvailable","enableAutoPlay","renderGeniusResults","viewAllLinkLabel","renderTopics","renderResults","ResultInfo","renderGaurdianInfo","shouldShowData","subscriptionTimingInterceptor","subscriptionEventTimestamps","updatedTimestamps","createTime","startedTime","succeededTime","failedTime","createToStartDuration","startToCompleteDuration","carouselDataComputed","_carouselData$items","vaEVAM","__TECTONIC__ais_ux_bundle"]}